%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/geotechnics/portal/
Upload File :
Create Path :
Current File : /var/www/html/geotechnics/portal/app.js

/******/ (function(modules) { // webpackBootstrap
/******/ 	// install a JSONP callback for chunk loading
/******/ 	function webpackJsonpCallback(data) {
/******/ 		var chunkIds = data[0];
/******/ 		var moreModules = data[1];
/******/
/******/
/******/ 		// add "moreModules" to the modules object,
/******/ 		// then flag all "chunkIds" as loaded and fire callback
/******/ 		var moduleId, chunkId, i = 0, resolves = [];
/******/ 		for(;i < chunkIds.length; i++) {
/******/ 			chunkId = chunkIds[i];
/******/ 			if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ 				resolves.push(installedChunks[chunkId][0]);
/******/ 			}
/******/ 			installedChunks[chunkId] = 0;
/******/ 		}
/******/ 		for(moduleId in moreModules) {
/******/ 			if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ 				modules[moduleId] = moreModules[moduleId];
/******/ 			}
/******/ 		}
/******/ 		if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ 		while(resolves.length) {
/******/ 			resolves.shift()();
/******/ 		}
/******/
/******/ 	};
/******/
/******/ 	function hotDisposeChunk(chunkId) {
/******/ 		delete installedChunks[chunkId];
/******/ 	}
/******/ 	var parentHotUpdateCallback = (typeof self !== 'undefined' ? self : this)["webpackHotUpdate"];
/******/ 	(typeof self !== 'undefined' ? self : this)["webpackHotUpdate"] = // eslint-disable-next-line no-unused-vars
/******/ 	function webpackHotUpdateCallback(chunkId, moreModules) {
/******/ 		hotAddUpdateChunk(chunkId, moreModules);
/******/ 		if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);
/******/ 	} ;
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotDownloadUpdateChunk(chunkId) {
/******/ 		var script = document.createElement("script");
/******/ 		script.charset = "utf-8";
/******/ 		script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js";
/******/ 		if (null) script.crossOrigin = null;
/******/ 		document.head.appendChild(script);
/******/ 	}
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotDownloadManifest(requestTimeout) {
/******/ 		requestTimeout = requestTimeout || 10000;
/******/ 		return new Promise(function(resolve, reject) {
/******/ 			if (typeof XMLHttpRequest === "undefined") {
/******/ 				return reject(new Error("No browser support"));
/******/ 			}
/******/ 			try {
/******/ 				var request = new XMLHttpRequest();
/******/ 				var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json";
/******/ 				request.open("GET", requestPath, true);
/******/ 				request.timeout = requestTimeout;
/******/ 				request.send(null);
/******/ 			} catch (err) {
/******/ 				return reject(err);
/******/ 			}
/******/ 			request.onreadystatechange = function() {
/******/ 				if (request.readyState !== 4) return;
/******/ 				if (request.status === 0) {
/******/ 					// timeout
/******/ 					reject(
/******/ 						new Error("Manifest request to " + requestPath + " timed out.")
/******/ 					);
/******/ 				} else if (request.status === 404) {
/******/ 					// no update available
/******/ 					resolve();
/******/ 				} else if (request.status !== 200 && request.status !== 304) {
/******/ 					// other failure
/******/ 					reject(new Error("Manifest request to " + requestPath + " failed."));
/******/ 				} else {
/******/ 					// success
/******/ 					try {
/******/ 						var update = JSON.parse(request.responseText);
/******/ 					} catch (e) {
/******/ 						reject(e);
/******/ 						return;
/******/ 					}
/******/ 					resolve(update);
/******/ 				}
/******/ 			};
/******/ 		});
/******/ 	}
/******/
/******/ 	var hotApplyOnUpdate = true;
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	var hotCurrentHash = "0457e67859ce5028de33";
/******/ 	var hotRequestTimeout = 10000;
/******/ 	var hotCurrentModuleData = {};
/******/ 	var hotCurrentChildModule;
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	var hotCurrentParents = [];
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	var hotCurrentParentsTemp = [];
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotCreateRequire(moduleId) {
/******/ 		var me = installedModules[moduleId];
/******/ 		if (!me) return __webpack_require__;
/******/ 		var fn = function(request) {
/******/ 			if (me.hot.active) {
/******/ 				if (installedModules[request]) {
/******/ 					if (installedModules[request].parents.indexOf(moduleId) === -1) {
/******/ 						installedModules[request].parents.push(moduleId);
/******/ 					}
/******/ 				} else {
/******/ 					hotCurrentParents = [moduleId];
/******/ 					hotCurrentChildModule = request;
/******/ 				}
/******/ 				if (me.children.indexOf(request) === -1) {
/******/ 					me.children.push(request);
/******/ 				}
/******/ 			} else {
/******/ 				console.warn(
/******/ 					"[HMR] unexpected require(" +
/******/ 						request +
/******/ 						") from disposed module " +
/******/ 						moduleId
/******/ 				);
/******/ 				hotCurrentParents = [];
/******/ 			}
/******/ 			return __webpack_require__(request);
/******/ 		};
/******/ 		var ObjectFactory = function ObjectFactory(name) {
/******/ 			return {
/******/ 				configurable: true,
/******/ 				enumerable: true,
/******/ 				get: function() {
/******/ 					return __webpack_require__[name];
/******/ 				},
/******/ 				set: function(value) {
/******/ 					__webpack_require__[name] = value;
/******/ 				}
/******/ 			};
/******/ 		};
/******/ 		for (var name in __webpack_require__) {
/******/ 			if (
/******/ 				Object.prototype.hasOwnProperty.call(__webpack_require__, name) &&
/******/ 				name !== "e" &&
/******/ 				name !== "t"
/******/ 			) {
/******/ 				Object.defineProperty(fn, name, ObjectFactory(name));
/******/ 			}
/******/ 		}
/******/ 		fn.e = function(chunkId) {
/******/ 			if (hotStatus === "ready") hotSetStatus("prepare");
/******/ 			hotChunksLoading++;
/******/ 			return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {
/******/ 				finishChunkLoading();
/******/ 				throw err;
/******/ 			});
/******/
/******/ 			function finishChunkLoading() {
/******/ 				hotChunksLoading--;
/******/ 				if (hotStatus === "prepare") {
/******/ 					if (!hotWaitingFilesMap[chunkId]) {
/******/ 						hotEnsureUpdateChunk(chunkId);
/******/ 					}
/******/ 					if (hotChunksLoading === 0 && hotWaitingFiles === 0) {
/******/ 						hotUpdateDownloaded();
/******/ 					}
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 		fn.t = function(value, mode) {
/******/ 			if (mode & 1) value = fn(value);
/******/ 			return __webpack_require__.t(value, mode & ~1);
/******/ 		};
/******/ 		return fn;
/******/ 	}
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotCreateModule(moduleId) {
/******/ 		var hot = {
/******/ 			// private stuff
/******/ 			_acceptedDependencies: {},
/******/ 			_declinedDependencies: {},
/******/ 			_selfAccepted: false,
/******/ 			_selfDeclined: false,
/******/ 			_disposeHandlers: [],
/******/ 			_main: hotCurrentChildModule !== moduleId,
/******/
/******/ 			// Module API
/******/ 			active: true,
/******/ 			accept: function(dep, callback) {
/******/ 				if (dep === undefined) hot._selfAccepted = true;
/******/ 				else if (typeof dep === "function") hot._selfAccepted = dep;
/******/ 				else if (typeof dep === "object")
/******/ 					for (var i = 0; i < dep.length; i++)
/******/ 						hot._acceptedDependencies[dep[i]] = callback || function() {};
/******/ 				else hot._acceptedDependencies[dep] = callback || function() {};
/******/ 			},
/******/ 			decline: function(dep) {
/******/ 				if (dep === undefined) hot._selfDeclined = true;
/******/ 				else if (typeof dep === "object")
/******/ 					for (var i = 0; i < dep.length; i++)
/******/ 						hot._declinedDependencies[dep[i]] = true;
/******/ 				else hot._declinedDependencies[dep] = true;
/******/ 			},
/******/ 			dispose: function(callback) {
/******/ 				hot._disposeHandlers.push(callback);
/******/ 			},
/******/ 			addDisposeHandler: function(callback) {
/******/ 				hot._disposeHandlers.push(callback);
/******/ 			},
/******/ 			removeDisposeHandler: function(callback) {
/******/ 				var idx = hot._disposeHandlers.indexOf(callback);
/******/ 				if (idx >= 0) hot._disposeHandlers.splice(idx, 1);
/******/ 			},
/******/
/******/ 			// Management API
/******/ 			check: hotCheck,
/******/ 			apply: hotApply,
/******/ 			status: function(l) {
/******/ 				if (!l) return hotStatus;
/******/ 				hotStatusHandlers.push(l);
/******/ 			},
/******/ 			addStatusHandler: function(l) {
/******/ 				hotStatusHandlers.push(l);
/******/ 			},
/******/ 			removeStatusHandler: function(l) {
/******/ 				var idx = hotStatusHandlers.indexOf(l);
/******/ 				if (idx >= 0) hotStatusHandlers.splice(idx, 1);
/******/ 			},
/******/
/******/ 			//inherit from previous dispose call
/******/ 			data: hotCurrentModuleData[moduleId]
/******/ 		};
/******/ 		hotCurrentChildModule = undefined;
/******/ 		return hot;
/******/ 	}
/******/
/******/ 	var hotStatusHandlers = [];
/******/ 	var hotStatus = "idle";
/******/
/******/ 	function hotSetStatus(newStatus) {
/******/ 		hotStatus = newStatus;
/******/ 		for (var i = 0; i < hotStatusHandlers.length; i++)
/******/ 			hotStatusHandlers[i].call(null, newStatus);
/******/ 	}
/******/
/******/ 	// while downloading
/******/ 	var hotWaitingFiles = 0;
/******/ 	var hotChunksLoading = 0;
/******/ 	var hotWaitingFilesMap = {};
/******/ 	var hotRequestedFilesMap = {};
/******/ 	var hotAvailableFilesMap = {};
/******/ 	var hotDeferred;
/******/
/******/ 	// The update info
/******/ 	var hotUpdate, hotUpdateNewHash;
/******/
/******/ 	function toModuleId(id) {
/******/ 		var isNumber = +id + "" === id;
/******/ 		return isNumber ? +id : id;
/******/ 	}
/******/
/******/ 	function hotCheck(apply) {
/******/ 		if (hotStatus !== "idle") {
/******/ 			throw new Error("check() is only allowed in idle status");
/******/ 		}
/******/ 		hotApplyOnUpdate = apply;
/******/ 		hotSetStatus("check");
/******/ 		return hotDownloadManifest(hotRequestTimeout).then(function(update) {
/******/ 			if (!update) {
/******/ 				hotSetStatus("idle");
/******/ 				return null;
/******/ 			}
/******/ 			hotRequestedFilesMap = {};
/******/ 			hotWaitingFilesMap = {};
/******/ 			hotAvailableFilesMap = update.c;
/******/ 			hotUpdateNewHash = update.h;
/******/
/******/ 			hotSetStatus("prepare");
/******/ 			var promise = new Promise(function(resolve, reject) {
/******/ 				hotDeferred = {
/******/ 					resolve: resolve,
/******/ 					reject: reject
/******/ 				};
/******/ 			});
/******/ 			hotUpdate = {};
/******/ 			for(var chunkId in installedChunks)
/******/ 			// eslint-disable-next-line no-lone-blocks
/******/ 			{
/******/ 				/*globals chunkId */
/******/ 				hotEnsureUpdateChunk(chunkId);
/******/ 			}
/******/ 			if (
/******/ 				hotStatus === "prepare" &&
/******/ 				hotChunksLoading === 0 &&
/******/ 				hotWaitingFiles === 0
/******/ 			) {
/******/ 				hotUpdateDownloaded();
/******/ 			}
/******/ 			return promise;
/******/ 		});
/******/ 	}
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotAddUpdateChunk(chunkId, moreModules) {
/******/ 		if (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])
/******/ 			return;
/******/ 		hotRequestedFilesMap[chunkId] = false;
/******/ 		for (var moduleId in moreModules) {
/******/ 			if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ 				hotUpdate[moduleId] = moreModules[moduleId];
/******/ 			}
/******/ 		}
/******/ 		if (--hotWaitingFiles === 0 && hotChunksLoading === 0) {
/******/ 			hotUpdateDownloaded();
/******/ 		}
/******/ 	}
/******/
/******/ 	function hotEnsureUpdateChunk(chunkId) {
/******/ 		if (!hotAvailableFilesMap[chunkId]) {
/******/ 			hotWaitingFilesMap[chunkId] = true;
/******/ 		} else {
/******/ 			hotRequestedFilesMap[chunkId] = true;
/******/ 			hotWaitingFiles++;
/******/ 			hotDownloadUpdateChunk(chunkId);
/******/ 		}
/******/ 	}
/******/
/******/ 	function hotUpdateDownloaded() {
/******/ 		hotSetStatus("ready");
/******/ 		var deferred = hotDeferred;
/******/ 		hotDeferred = null;
/******/ 		if (!deferred) return;
/******/ 		if (hotApplyOnUpdate) {
/******/ 			// Wrap deferred object in Promise to mark it as a well-handled Promise to
/******/ 			// avoid triggering uncaught exception warning in Chrome.
/******/ 			// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666
/******/ 			Promise.resolve()
/******/ 				.then(function() {
/******/ 					return hotApply(hotApplyOnUpdate);
/******/ 				})
/******/ 				.then(
/******/ 					function(result) {
/******/ 						deferred.resolve(result);
/******/ 					},
/******/ 					function(err) {
/******/ 						deferred.reject(err);
/******/ 					}
/******/ 				);
/******/ 		} else {
/******/ 			var outdatedModules = [];
/******/ 			for (var id in hotUpdate) {
/******/ 				if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
/******/ 					outdatedModules.push(toModuleId(id));
/******/ 				}
/******/ 			}
/******/ 			deferred.resolve(outdatedModules);
/******/ 		}
/******/ 	}
/******/
/******/ 	function hotApply(options) {
/******/ 		if (hotStatus !== "ready")
/******/ 			throw new Error("apply() is only allowed in ready status");
/******/ 		options = options || {};
/******/
/******/ 		var cb;
/******/ 		var i;
/******/ 		var j;
/******/ 		var module;
/******/ 		var moduleId;
/******/
/******/ 		function getAffectedStuff(updateModuleId) {
/******/ 			var outdatedModules = [updateModuleId];
/******/ 			var outdatedDependencies = {};
/******/
/******/ 			var queue = outdatedModules.map(function(id) {
/******/ 				return {
/******/ 					chain: [id],
/******/ 					id: id
/******/ 				};
/******/ 			});
/******/ 			while (queue.length > 0) {
/******/ 				var queueItem = queue.pop();
/******/ 				var moduleId = queueItem.id;
/******/ 				var chain = queueItem.chain;
/******/ 				module = installedModules[moduleId];
/******/ 				if (!module || module.hot._selfAccepted) continue;
/******/ 				if (module.hot._selfDeclined) {
/******/ 					return {
/******/ 						type: "self-declined",
/******/ 						chain: chain,
/******/ 						moduleId: moduleId
/******/ 					};
/******/ 				}
/******/ 				if (module.hot._main) {
/******/ 					return {
/******/ 						type: "unaccepted",
/******/ 						chain: chain,
/******/ 						moduleId: moduleId
/******/ 					};
/******/ 				}
/******/ 				for (var i = 0; i < module.parents.length; i++) {
/******/ 					var parentId = module.parents[i];
/******/ 					var parent = installedModules[parentId];
/******/ 					if (!parent) continue;
/******/ 					if (parent.hot._declinedDependencies[moduleId]) {
/******/ 						return {
/******/ 							type: "declined",
/******/ 							chain: chain.concat([parentId]),
/******/ 							moduleId: moduleId,
/******/ 							parentId: parentId
/******/ 						};
/******/ 					}
/******/ 					if (outdatedModules.indexOf(parentId) !== -1) continue;
/******/ 					if (parent.hot._acceptedDependencies[moduleId]) {
/******/ 						if (!outdatedDependencies[parentId])
/******/ 							outdatedDependencies[parentId] = [];
/******/ 						addAllToSet(outdatedDependencies[parentId], [moduleId]);
/******/ 						continue;
/******/ 					}
/******/ 					delete outdatedDependencies[parentId];
/******/ 					outdatedModules.push(parentId);
/******/ 					queue.push({
/******/ 						chain: chain.concat([parentId]),
/******/ 						id: parentId
/******/ 					});
/******/ 				}
/******/ 			}
/******/
/******/ 			return {
/******/ 				type: "accepted",
/******/ 				moduleId: updateModuleId,
/******/ 				outdatedModules: outdatedModules,
/******/ 				outdatedDependencies: outdatedDependencies
/******/ 			};
/******/ 		}
/******/
/******/ 		function addAllToSet(a, b) {
/******/ 			for (var i = 0; i < b.length; i++) {
/******/ 				var item = b[i];
/******/ 				if (a.indexOf(item) === -1) a.push(item);
/******/ 			}
/******/ 		}
/******/
/******/ 		// at begin all updates modules are outdated
/******/ 		// the "outdated" status can propagate to parents if they don't accept the children
/******/ 		var outdatedDependencies = {};
/******/ 		var outdatedModules = [];
/******/ 		var appliedUpdate = {};
/******/
/******/ 		var warnUnexpectedRequire = function warnUnexpectedRequire() {
/******/ 			console.warn(
/******/ 				"[HMR] unexpected require(" + result.moduleId + ") to disposed module"
/******/ 			);
/******/ 		};
/******/
/******/ 		for (var id in hotUpdate) {
/******/ 			if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
/******/ 				moduleId = toModuleId(id);
/******/ 				/** @type {TODO} */
/******/ 				var result;
/******/ 				if (hotUpdate[id]) {
/******/ 					result = getAffectedStuff(moduleId);
/******/ 				} else {
/******/ 					result = {
/******/ 						type: "disposed",
/******/ 						moduleId: id
/******/ 					};
/******/ 				}
/******/ 				/** @type {Error|false} */
/******/ 				var abortError = false;
/******/ 				var doApply = false;
/******/ 				var doDispose = false;
/******/ 				var chainInfo = "";
/******/ 				if (result.chain) {
/******/ 					chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
/******/ 				}
/******/ 				switch (result.type) {
/******/ 					case "self-declined":
/******/ 						if (options.onDeclined) options.onDeclined(result);
/******/ 						if (!options.ignoreDeclined)
/******/ 							abortError = new Error(
/******/ 								"Aborted because of self decline: " +
/******/ 									result.moduleId +
/******/ 									chainInfo
/******/ 							);
/******/ 						break;
/******/ 					case "declined":
/******/ 						if (options.onDeclined) options.onDeclined(result);
/******/ 						if (!options.ignoreDeclined)
/******/ 							abortError = new Error(
/******/ 								"Aborted because of declined dependency: " +
/******/ 									result.moduleId +
/******/ 									" in " +
/******/ 									result.parentId +
/******/ 									chainInfo
/******/ 							);
/******/ 						break;
/******/ 					case "unaccepted":
/******/ 						if (options.onUnaccepted) options.onUnaccepted(result);
/******/ 						if (!options.ignoreUnaccepted)
/******/ 							abortError = new Error(
/******/ 								"Aborted because " + moduleId + " is not accepted" + chainInfo
/******/ 							);
/******/ 						break;
/******/ 					case "accepted":
/******/ 						if (options.onAccepted) options.onAccepted(result);
/******/ 						doApply = true;
/******/ 						break;
/******/ 					case "disposed":
/******/ 						if (options.onDisposed) options.onDisposed(result);
/******/ 						doDispose = true;
/******/ 						break;
/******/ 					default:
/******/ 						throw new Error("Unexception type " + result.type);
/******/ 				}
/******/ 				if (abortError) {
/******/ 					hotSetStatus("abort");
/******/ 					return Promise.reject(abortError);
/******/ 				}
/******/ 				if (doApply) {
/******/ 					appliedUpdate[moduleId] = hotUpdate[moduleId];
/******/ 					addAllToSet(outdatedModules, result.outdatedModules);
/******/ 					for (moduleId in result.outdatedDependencies) {
/******/ 						if (
/******/ 							Object.prototype.hasOwnProperty.call(
/******/ 								result.outdatedDependencies,
/******/ 								moduleId
/******/ 							)
/******/ 						) {
/******/ 							if (!outdatedDependencies[moduleId])
/******/ 								outdatedDependencies[moduleId] = [];
/******/ 							addAllToSet(
/******/ 								outdatedDependencies[moduleId],
/******/ 								result.outdatedDependencies[moduleId]
/******/ 							);
/******/ 						}
/******/ 					}
/******/ 				}
/******/ 				if (doDispose) {
/******/ 					addAllToSet(outdatedModules, [result.moduleId]);
/******/ 					appliedUpdate[moduleId] = warnUnexpectedRequire;
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// Store self accepted outdated modules to require them later by the module system
/******/ 		var outdatedSelfAcceptedModules = [];
/******/ 		for (i = 0; i < outdatedModules.length; i++) {
/******/ 			moduleId = outdatedModules[i];
/******/ 			if (
/******/ 				installedModules[moduleId] &&
/******/ 				installedModules[moduleId].hot._selfAccepted &&
/******/ 				// removed self-accepted modules should not be required
/******/ 				appliedUpdate[moduleId] !== warnUnexpectedRequire
/******/ 			) {
/******/ 				outdatedSelfAcceptedModules.push({
/******/ 					module: moduleId,
/******/ 					errorHandler: installedModules[moduleId].hot._selfAccepted
/******/ 				});
/******/ 			}
/******/ 		}
/******/
/******/ 		// Now in "dispose" phase
/******/ 		hotSetStatus("dispose");
/******/ 		Object.keys(hotAvailableFilesMap).forEach(function(chunkId) {
/******/ 			if (hotAvailableFilesMap[chunkId] === false) {
/******/ 				hotDisposeChunk(chunkId);
/******/ 			}
/******/ 		});
/******/
/******/ 		var idx;
/******/ 		var queue = outdatedModules.slice();
/******/ 		while (queue.length > 0) {
/******/ 			moduleId = queue.pop();
/******/ 			module = installedModules[moduleId];
/******/ 			if (!module) continue;
/******/
/******/ 			var data = {};
/******/
/******/ 			// Call dispose handlers
/******/ 			var disposeHandlers = module.hot._disposeHandlers;
/******/ 			for (j = 0; j < disposeHandlers.length; j++) {
/******/ 				cb = disposeHandlers[j];
/******/ 				cb(data);
/******/ 			}
/******/ 			hotCurrentModuleData[moduleId] = data;
/******/
/******/ 			// disable module (this disables requires from this module)
/******/ 			module.hot.active = false;
/******/
/******/ 			// remove module from cache
/******/ 			delete installedModules[moduleId];
/******/
/******/ 			// when disposing there is no need to call dispose handler
/******/ 			delete outdatedDependencies[moduleId];
/******/
/******/ 			// remove "parents" references from all children
/******/ 			for (j = 0; j < module.children.length; j++) {
/******/ 				var child = installedModules[module.children[j]];
/******/ 				if (!child) continue;
/******/ 				idx = child.parents.indexOf(moduleId);
/******/ 				if (idx >= 0) {
/******/ 					child.parents.splice(idx, 1);
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// remove outdated dependency from module children
/******/ 		var dependency;
/******/ 		var moduleOutdatedDependencies;
/******/ 		for (moduleId in outdatedDependencies) {
/******/ 			if (
/******/ 				Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
/******/ 			) {
/******/ 				module = installedModules[moduleId];
/******/ 				if (module) {
/******/ 					moduleOutdatedDependencies = outdatedDependencies[moduleId];
/******/ 					for (j = 0; j < moduleOutdatedDependencies.length; j++) {
/******/ 						dependency = moduleOutdatedDependencies[j];
/******/ 						idx = module.children.indexOf(dependency);
/******/ 						if (idx >= 0) module.children.splice(idx, 1);
/******/ 					}
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// Now in "apply" phase
/******/ 		hotSetStatus("apply");
/******/
/******/ 		hotCurrentHash = hotUpdateNewHash;
/******/
/******/ 		// insert new code
/******/ 		for (moduleId in appliedUpdate) {
/******/ 			if (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {
/******/ 				modules[moduleId] = appliedUpdate[moduleId];
/******/ 			}
/******/ 		}
/******/
/******/ 		// call accept handlers
/******/ 		var error = null;
/******/ 		for (moduleId in outdatedDependencies) {
/******/ 			if (
/******/ 				Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
/******/ 			) {
/******/ 				module = installedModules[moduleId];
/******/ 				if (module) {
/******/ 					moduleOutdatedDependencies = outdatedDependencies[moduleId];
/******/ 					var callbacks = [];
/******/ 					for (i = 0; i < moduleOutdatedDependencies.length; i++) {
/******/ 						dependency = moduleOutdatedDependencies[i];
/******/ 						cb = module.hot._acceptedDependencies[dependency];
/******/ 						if (cb) {
/******/ 							if (callbacks.indexOf(cb) !== -1) continue;
/******/ 							callbacks.push(cb);
/******/ 						}
/******/ 					}
/******/ 					for (i = 0; i < callbacks.length; i++) {
/******/ 						cb = callbacks[i];
/******/ 						try {
/******/ 							cb(moduleOutdatedDependencies);
/******/ 						} catch (err) {
/******/ 							if (options.onErrored) {
/******/ 								options.onErrored({
/******/ 									type: "accept-errored",
/******/ 									moduleId: moduleId,
/******/ 									dependencyId: moduleOutdatedDependencies[i],
/******/ 									error: err
/******/ 								});
/******/ 							}
/******/ 							if (!options.ignoreErrored) {
/******/ 								if (!error) error = err;
/******/ 							}
/******/ 						}
/******/ 					}
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// Load self accepted modules
/******/ 		for (i = 0; i < outdatedSelfAcceptedModules.length; i++) {
/******/ 			var item = outdatedSelfAcceptedModules[i];
/******/ 			moduleId = item.module;
/******/ 			hotCurrentParents = [moduleId];
/******/ 			try {
/******/ 				__webpack_require__(moduleId);
/******/ 			} catch (err) {
/******/ 				if (typeof item.errorHandler === "function") {
/******/ 					try {
/******/ 						item.errorHandler(err);
/******/ 					} catch (err2) {
/******/ 						if (options.onErrored) {
/******/ 							options.onErrored({
/******/ 								type: "self-accept-error-handler-errored",
/******/ 								moduleId: moduleId,
/******/ 								error: err2,
/******/ 								originalError: err
/******/ 							});
/******/ 						}
/******/ 						if (!options.ignoreErrored) {
/******/ 							if (!error) error = err2;
/******/ 						}
/******/ 						if (!error) error = err;
/******/ 					}
/******/ 				} else {
/******/ 					if (options.onErrored) {
/******/ 						options.onErrored({
/******/ 							type: "self-accept-errored",
/******/ 							moduleId: moduleId,
/******/ 							error: err
/******/ 						});
/******/ 					}
/******/ 					if (!options.ignoreErrored) {
/******/ 						if (!error) error = err;
/******/ 					}
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// handle errors in accept handlers and self accepted module load
/******/ 		if (error) {
/******/ 			hotSetStatus("fail");
/******/ 			return Promise.reject(error);
/******/ 		}
/******/
/******/ 		hotSetStatus("idle");
/******/ 		return new Promise(function(resolve) {
/******/ 			resolve(outdatedModules);
/******/ 		});
/******/ 	}
/******/
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// object to store loaded and loading chunks
/******/ 	// undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ 	// Promise = chunk loading, 0 = chunk loaded
/******/ 	var installedChunks = {
/******/ 		"app": 0
/******/ 	};
/******/
/******/
/******/
/******/ 	// script path function
/******/ 	function jsonpScriptSrc(chunkId) {
/******/ 		return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + ".js"
/******/ 	}
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {},
/******/ 			hot: hotCreateModule(moduleId),
/******/ 			parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),
/******/ 			children: []
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/ 	// This file contains only the entry chunk.
/******/ 	// The chunk loading function for additional chunks
/******/ 	__webpack_require__.e = function requireEnsure(chunkId) {
/******/ 		var promises = [];
/******/
/******/
/******/ 		// JSONP chunk loading for javascript
/******/
/******/ 		var installedChunkData = installedChunks[chunkId];
/******/ 		if(installedChunkData !== 0) { // 0 means "already installed".
/******/
/******/ 			// a Promise means "currently loading".
/******/ 			if(installedChunkData) {
/******/ 				promises.push(installedChunkData[2]);
/******/ 			} else {
/******/ 				// setup Promise in chunk cache
/******/ 				var promise = new Promise(function(resolve, reject) {
/******/ 					installedChunkData = installedChunks[chunkId] = [resolve, reject];
/******/ 				});
/******/ 				promises.push(installedChunkData[2] = promise);
/******/
/******/ 				// start chunk loading
/******/ 				var script = document.createElement('script');
/******/ 				var onScriptComplete;
/******/
/******/ 				script.charset = 'utf-8';
/******/ 				script.timeout = 120;
/******/ 				if (__webpack_require__.nc) {
/******/ 					script.setAttribute("nonce", __webpack_require__.nc);
/******/ 				}
/******/ 				script.src = jsonpScriptSrc(chunkId);
/******/
/******/ 				// create error before stack unwound to get useful stacktrace later
/******/ 				var error = new Error();
/******/ 				onScriptComplete = function (event) {
/******/ 					// avoid mem leaks in IE.
/******/ 					script.onerror = script.onload = null;
/******/ 					clearTimeout(timeout);
/******/ 					var chunk = installedChunks[chunkId];
/******/ 					if(chunk !== 0) {
/******/ 						if(chunk) {
/******/ 							var errorType = event && (event.type === 'load' ? 'missing' : event.type);
/******/ 							var realSrc = event && event.target && event.target.src;
/******/ 							error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
/******/ 							error.name = 'ChunkLoadError';
/******/ 							error.type = errorType;
/******/ 							error.request = realSrc;
/******/ 							chunk[1](error);
/******/ 						}
/******/ 						installedChunks[chunkId] = undefined;
/******/ 					}
/******/ 				};
/******/ 				var timeout = setTimeout(function(){
/******/ 					onScriptComplete({ type: 'timeout', target: script });
/******/ 				}, 120000);
/******/ 				script.onerror = script.onload = onScriptComplete;
/******/ 				document.head.appendChild(script);
/******/ 			}
/******/ 		}
/******/ 		return Promise.all(promises);
/******/ 	};
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "/";
/******/
/******/ 	// on error function for async loading
/******/ 	__webpack_require__.oe = function(err) { console.error(err); throw err; };
/******/
/******/ 	// __webpack_hash__
/******/ 	__webpack_require__.h = function() { return hotCurrentHash; };
/******/
/******/ 	var jsonpArray = (typeof self !== 'undefined' ? self : this)["webpackJsonp"] = (typeof self !== 'undefined' ? self : this)["webpackJsonp"] || [];
/******/ 	var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ 	jsonpArray.push = webpackJsonpCallback;
/******/ 	jsonpArray = jsonpArray.slice();
/******/ 	for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ 	var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return hotCreateRequire(0)(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ({

/***/ "./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js ***!
  \*******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js/library/fn/object/define-property */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/define-property.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ODVmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKTsiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/core-js/promise.js":
/*!****************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/core-js/promise.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js/library/fn/promise */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/promise.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL3Byb21pc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL3Byb21pc2UuanM/Nzk1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZVwiKTsiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/core-js/promise.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _asyncToGenerator; });\n/* harmony import */ var _core_js_promise__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../core-js/promise */ \"./node_modules/@babel/runtime-corejs2/core-js/promise.js\");\n/* harmony import */ var _core_js_promise__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_core_js_promise__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    _core_js_promise__WEBPACK_IMPORTED_MODULE_0___default.a.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new _core_js_promise__WEBPACK_IMPORTED_MODULE_0___default.a(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcz8zYjhkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfUHJvbWlzZSBmcm9tIFwiLi4vLi4vY29yZS1qcy9wcm9taXNlXCI7XG5cbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZWplY3QoZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpbmZvLmRvbmUpIHtcbiAgICByZXNvbHZlKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBfUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgX1Byb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuXG4gICAgICBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICB9XG5cbiAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH07XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _defineProperty; });\n/* harmony import */ var _core_js_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../core-js/object/define-property */ \"./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js\");\n/* harmony import */ var _core_js_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_core_js_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    _core_js_object_define_property__WEBPACK_IMPORTED_MODULE_0___default()(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzP2JkODYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9PYmplY3QkZGVmaW5lUHJvcGVydHkgZnJvbSBcIi4uLy4uL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIF9PYmplY3QkZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty.js ***!
  \*************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _objectDestructuringEmpty; });\nfunction _objectDestructuringEmpty(obj) {\n  if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9oZWxwZXJzL2VzbS9vYmplY3REZXN0cnVjdHVyaW5nRW1wdHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9oZWxwZXJzL2VzbS9vYmplY3REZXN0cnVjdHVyaW5nRW1wdHkuanM/NmVlNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0RGVzdHJ1Y3R1cmluZ0VtcHR5KG9iaikge1xuICBpZiAob2JqID09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgZGVzdHJ1Y3R1cmUgdW5kZWZpbmVkXCIpO1xufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/define-property.js":
/*!*******************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/define-property.js ***!
  \*******************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es6.object.define-property */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.define-property.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function defineProperty(it, key, desc) {\n  return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZWM1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/define-property.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/promise.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/promise.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("__webpack_require__(/*! ../modules/es6.object.to-string */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.to-string.js\");\n__webpack_require__(/*! ../modules/es6.string.iterator */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../modules/web.dom.iterable */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/web.dom.iterable.js\");\n__webpack_require__(/*! ../modules/es6.promise */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.promise.js\");\n__webpack_require__(/*! ../modules/es7.promise.finally */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.finally.js\");\n__webpack_require__(/*! ../modules/es7.promise.try */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.try.js\");\nmodule.exports = __webpack_require__(/*! ../modules/_core */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\").Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanM/ZGQwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/promise.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/ZjJmZSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_add-to-unscopables.js":
/*!*********************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_add-to-unscopables.js ***!
  \*********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYWRkLXRvLXVuc2NvcGFibGVzLmpzP2IzZTciXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG4iXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_add-to-unscopables.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-instance.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-instance.js ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1pbnN0YW5jZS5qcz9iMGJjIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHtcbiAgaWYgKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikgfHwgKGZvcmJpZGRlbkZpZWxkICE9PSB1bmRlZmluZWQgJiYgZm9yYmlkZGVuRmllbGQgaW4gaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-instance.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzPzBmODkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_array-includes.js":
/*!*****************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_array-includes.js ***!
  \*****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcz8yNDE4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_array-includes.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_classof.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_classof.js ***!
  \**********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/N2Q4YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_classof.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js ***!
  \******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzPzZlMWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanM/YTdkMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjknIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js ***!
  \******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzP2JjMjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_defined.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_defined.js ***!
  \**********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTVmYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_defined.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_fails.js\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcz83ZDk1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_dom-create.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_dom-create.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js\");\nvar document = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MTJmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_dom-create.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_enum-bug-keys.js ***!
  \****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/MDAyOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_enum-bug-keys.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js ***!
  \*********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzP2QxM2YiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_fails.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_fails.js ***!
  \********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcz9kNzgyIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_fails.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_for-of.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_for-of.js ***!
  \*********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js\");\nvar call = __webpack_require__(/*! ./_iter-call */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-call.js\");\nvar isArrayIter = __webpack_require__(/*! ./_is-array-iter */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-array-iter.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-length.js\");\nvar getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.get-iterator-method.js\");\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzPzU2MGIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBCUkVBSyA9IHt9O1xudmFyIFJFVFVSTiA9IHt9O1xudmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgZW50cmllcywgZm4sIHRoYXQsIElURVJBVE9SKSB7XG4gIHZhciBpdGVyRm4gPSBJVEVSQVRPUiA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXJhYmxlOyB9IDogZ2V0SXRlckZuKGl0ZXJhYmxlKTtcbiAgdmFyIGYgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSk7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsZW5ndGgsIHN0ZXAsIGl0ZXJhdG9yLCByZXN1bHQ7XG4gIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuICAvLyBmYXN0IGNhc2UgZm9yIGFycmF5cyB3aXRoIGRlZmF1bHQgaXRlcmF0b3JcbiAgaWYgKGlzQXJyYXlJdGVyKGl0ZXJGbikpIGZvciAobGVuZ3RoID0gdG9MZW5ndGgoaXRlcmFibGUubGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICByZXN1bHQgPSBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7KSB7XG4gICAgcmVzdWx0ID0gY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5leHBvcnRzLkJSRUFLID0gQlJFQUs7XG5leHBvcnRzLlJFVFVSTiA9IFJFVFVSTjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_for-of.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js ***!
  \*********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2RhM2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js ***!
  \******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzQzYzgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanM/OGNlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_html.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_html.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var document = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\").document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/MTAzYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_html.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!*****************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ie8-dom-define.js ***!
  \*****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_fails.js\")(function () {\n  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcz9hNDdmIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ie8-dom-define.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_invoke.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_invoke.js ***!
  \*********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW52b2tlLmpzPzE5NmMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgYXJncywgdGhhdCkge1xuICB2YXIgdW4gPSB0aGF0ID09PSB1bmRlZmluZWQ7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCk7XG4gICAgY2FzZSAxOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgY2FzZSA0OiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgfSByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJncyk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_invoke.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iobject.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iobject.js ***!
  \**********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/OGJhYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iobject.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-array-iter.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-array-iter.js ***!
  \****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// check on default Array iterator\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/YzIyNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-array-iter.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzZmOGEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-call.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-call.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js\");\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jYWxsLmpzPzljOTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVudHJpZXMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSBhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-call.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-create.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-create.js ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar create = __webpack_require__(/*! ./_object-create */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-create.js\");\nvar descriptor = __webpack_require__(/*! ./_property-desc */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_property-desc.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(/*! ./_hide */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js\")(IteratorPrototype, __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcz81Y2U3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-create.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-define.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-define.js ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_library.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js\");\nvar $iterCreate = __webpack_require__(/*! ./_iter-create */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-create.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gpo.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qcz9lNGE5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciAkaXRlckNyZWF0ZSA9IHJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbnZhciBGRl9JVEVSQVRPUiA9ICdAQGl0ZXJhdG9yJztcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkge1xuICAgIGlmICghQlVHR1kgJiYga2luZCBpbiBwcm90bykgcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVM7XG4gIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7XG4gIHZhciBwcm90byA9IEJhc2UucHJvdG90eXBlO1xuICB2YXIgJG5hdGl2ZSA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXTtcbiAgdmFyICRkZWZhdWx0ID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVCk7XG4gIHZhciAkZW50cmllcyA9IERFRkFVTFQgPyAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJykgOiB1bmRlZmluZWQ7XG4gIHZhciAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZTtcbiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYgKCRhbnlOYXRpdmUpIHtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZiAoIUxJQlJBUlkgJiYgdHlwZW9mIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgfVxuICB9XG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykge1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gJG5hdGl2ZS5jYWxsKHRoaXMpOyB9O1xuICB9XG4gIC8vIERlZmluZSBpdGVyYXRvclxuICBpZiAoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpIHtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddID0gcmV0dXJuVGhpcztcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoa2V5IGluIG1ldGhvZHMpIHtcbiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-define.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-detect.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-detect.js ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qcz80MzZjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-detect.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-step.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-step.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzPzI0NWIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-step.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzP2IyMmEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_library.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_library.js ***!
  \**********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/YjQ1NyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG4iXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_library.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_microtask.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_microtask.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\");\nvar macrotask = __webpack_require__(/*! ./_task */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_task.js\").set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(/*! ./_cof */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js\")(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    var promise = Promise.resolve(undefined);\n    notify = function () {\n      promise.then(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n\n  return function (fn) {\n    var task = { fn: fn, next: undefined };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    } last = task;\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWljcm90YXNrLmpzPzM2ZGMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG1hY3JvdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoZWFkLCBsYXN0LCBub3RpZnk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChpc05vZGUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoaGVhZCkge1xuICAgICAgZm4gPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChoZWFkKSBub3RpZnkoKTtcbiAgICAgICAgZWxzZSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmIChpc05vZGUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgU2FmYXJpIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICB9IGVsc2UgaWYgKE9ic2VydmVyICYmICEoZ2xvYmFsLm5hdmlnYXRvciAmJiBnbG9iYWwubmF2aWdhdG9yLnN0YW5kYWxvbmUpKSB7XG4gICAgdmFyIHRvZ2dsZSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICAvLyBQcm9taXNlLnJlc29sdmUgd2l0aG91dCBhbiBhcmd1bWVudCB0aHJvd3MgYW4gZXJyb3IgaW4gTEcgV2ViT1MgMlxuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxuICAgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgdGFzayA9IHsgZm46IGZuLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgICBpZiAobGFzdCkgbGFzdC5uZXh0ID0gdGFzaztcbiAgICBpZiAoIWhlYWQpIHtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_microtask.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_new-promise-capability.js":
/*!*************************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_new-promise-capability.js ***!
  \*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js\");\n\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/MDNjYSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_new-promise-capability.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-create.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-create.js ***!
  \****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js\");\nvar dPs = __webpack_require__(/*! ./_object-dps */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dps.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_enum-bug-keys.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(/*! ./_dom-create */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_dom-create.js\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(/*! ./_html */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_html.js\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NzEwOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-create.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzNhZGMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dps.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dps.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys.js\");\n\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/ZjU2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dps.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gpo.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gpo.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-object.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/ZmYwYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gpo.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys-internal.js":
/*!***********************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys-internal.js ***!
  \***********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var has = __webpack_require__(/*! ./_has */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcz8yNjk1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys-internal.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys.js ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcz83NjMzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_perform.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_perform.js ***!
  \**********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanM/NzVjOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_perform.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_promise-resolve.js":
/*!******************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_promise-resolve.js ***!
  \******************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js\");\nvar newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_new-promise-capability.js\");\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzP2RlY2YiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_promise-resolve.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_property-desc.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_property-desc.js ***!
  \****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/Zjg0NSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_property-desc.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine-all.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine-all.js ***!
  \***************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var hide = __webpack_require__(/*! ./_hide */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js\");\nmodule.exports = function (target, src, safe) {\n  for (var key in src) {\n    if (safe && target[key]) target[key] = src[key];\n    else hide(target, key, src[key]);\n  } return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUtYWxsLmpzPzM5MDQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNyYywgc2FmZSkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgaWYgKHNhZmUgJiYgdGFyZ2V0W2tleV0pIHRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgZWxzZSBoaWRlKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH0gcmV0dXJuIHRhcmdldDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine-all.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine.js ***!
  \***********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ./_hide */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qcz8yMzEyIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faGlkZScpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-species.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-species.js ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\");\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('species');\n\nmodule.exports = function (KEY) {\n  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtc3BlY2llcy5qcz8xYmU0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIEMgPSB0eXBlb2YgY29yZVtLRVldID09ICdmdW5jdGlvbicgPyBjb3JlW0tFWV0gOiBnbG9iYWxbS0VZXTtcbiAgaWYgKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pIGRQLmYoQywgU1BFQ0lFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-species.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-to-string-tag.js":
/*!********************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-to-string-tag.js ***!
  \********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var def = __webpack_require__(/*! ./_object-dp */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js\").f;\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcz9jMGQ4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-to-string-tag.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared-key.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared-key.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var shared = __webpack_require__(/*! ./_shared */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_uid.js\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NWQ4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared-key.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared.js ***!
  \*********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var core = __webpack_require__(/*! ./_core */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(/*! ./_library */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_library.js\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLmpzPzc3NzIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_species-constructor.js":
/*!**********************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_species-constructor.js ***!
  \**********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js\");\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/MzAyZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIEQpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_species-constructor.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-at.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-at.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-integer.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_defined.js\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzPzJhNGUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-at.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_task.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_task.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js\");\nvar invoke = __webpack_require__(/*! ./_invoke */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_invoke.js\");\nvar html = __webpack_require__(/*! ./_html */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_html.js\");\nvar cel = __webpack_require__(/*! ./_dom-create */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_dom-create.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\");\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (__webpack_require__(/*! ./_cof */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js\")(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanM/ZGYwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_task.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-absolute-index.js":
/*!********************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-absolute-index.js ***!
  \********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcz8xYjhmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-absolute-index.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-integer.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-integer.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/YTgxMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-integer.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-iobject.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-iobject.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NmE5YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-iobject.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-length.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-length.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzP2E1YWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-length.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-object.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-object.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzPzAxODUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-object.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-primitive.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-primitive.js ***!
  \***************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzPzJlYTEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-primitive.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_uid.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_uid.js ***!
  \******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzPzdiMDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_uid.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_user-agent.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_user-agent.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\");\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VzZXItYWdlbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VzZXItYWdlbnQuanM/OGExMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_user-agent.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js ***!
  \******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var store = __webpack_require__(/*! ./_shared */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared.js\")('wks');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_uid.js\");\nvar Symbol = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzPzFiNTUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.get-iterator-method.js":
/*!**************************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.get-iterator-method.js ***!
  \**************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var classof = __webpack_require__(/*! ./_classof */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_classof.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js\");\nmodule.exports = __webpack_require__(/*! ./_core */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\").getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcz9mMTU5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.get-iterator-method.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.iterator.js":
/*!********************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.iterator.js ***!
  \********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_add-to-unscopables.js\");\nvar step = __webpack_require__(/*! ./_iter-step */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-step.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-iobject.js\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(/*! ./_iter-define */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-define.js\")(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcz9mYTU0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcblxuLy8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcbi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcbi8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGtpbmQgPSB0aGlzLl9rO1xuICB2YXIgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmICghTyB8fCBpbmRleCA+PSBPLmxlbmd0aCkge1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.iterator.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.define-property.js":
/*!****************************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.define-property.js ***!
  \****************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js\");\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js\"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js\").f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/ZTM0MSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.define-property.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.to-string.js":
/*!**********************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.to-string.js ***!
  \**********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcuanMuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.to-string.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.promise.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.promise.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_library.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js\");\nvar classof = __webpack_require__(/*! ./_classof */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_classof.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js\");\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js\");\nvar anInstance = __webpack_require__(/*! ./_an-instance */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-instance.js\");\nvar forOf = __webpack_require__(/*! ./_for-of */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_for-of.js\");\nvar speciesConstructor = __webpack_require__(/*! ./_species-constructor */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_species-constructor.js\");\nvar task = __webpack_require__(/*! ./_task */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_task.js\").set;\nvar microtask = __webpack_require__(/*! ./_microtask */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_microtask.js\")();\nvar newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ./_perform */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_perform.js\");\nvar userAgent = __webpack_require__(/*! ./_user-agent */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_user-agent.js\");\nvar promiseResolve = __webpack_require__(/*! ./_promise-resolve */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_promise-resolve.js\");\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function')\n      && promise.then(empty) instanceof FakePromise\n      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n      // we can't detect it synchronously, so just check versions\n      && v8.indexOf('6.6') !== 0\n      && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // may throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = __webpack_require__(/*! ./_redefine-all */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine-all.js\")($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-to-string-tag.js\")($Promise, PROMISE);\n__webpack_require__(/*! ./_set-species */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-species.js\")(PROMISE);\nWrapper = __webpack_require__(/*! ./_core */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\")[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-detect.js\")(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanM/NWI1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4IHx8ICcnO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICYmIHByb21pc2UudGhlbihlbXB0eSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZVxuICAgICAgLy8gdjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gICAgICAvLyB3ZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICAgICAgJiYgdjguaW5kZXhPZignNi42JykgIT09IDBcbiAgICAgICYmIHVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUvNjYnKSA9PT0gLTE7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gbWF5IHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.promise.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.string.iterator.js":
/*!*********************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.string.iterator.js ***!
  \*********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar $at = __webpack_require__(/*! ./_string-at */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-at.js\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(/*! ./_iter-define */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-define.js\")(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzPzkzYzQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKHRydWUpO1xuXG4vLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4vLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGluZGV4ID0gdGhpcy5faTtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.string.iterator.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.finally.js":
/*!*********************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.finally.js ***!
  \*********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\");\nvar speciesConstructor = __webpack_require__(/*! ./_species-constructor */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_species-constructor.js\");\nvar promiseResolve = __webpack_require__(/*! ./_promise-resolve */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_promise-resolve.js\");\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n  var C = speciesConstructor(this, core.Promise || global.Promise);\n  var isFunction = typeof onFinally == 'function';\n  return this.then(\n    isFunction ? function (x) {\n      return promiseResolve(C, onFinally()).then(function () { return x; });\n    } : onFinally,\n    isFunction ? function (e) {\n      return promiseResolve(C, onFinally()).then(function () { throw e; });\n    } : onFinally\n  );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzP2I2MDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS1maW5hbGx5XG4ndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnUHJvbWlzZScsIHsgJ2ZpbmFsbHknOiBmdW5jdGlvbiAob25GaW5hbGx5KSB7XG4gIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGNvcmUuUHJvbWlzZSB8fCBnbG9iYWwuUHJvbWlzZSk7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIG9uRmluYWxseSA9PSAnZnVuY3Rpb24nO1xuICByZXR1cm4gdGhpcy50aGVuKFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHksXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyB0aHJvdyBlOyB9KTtcbiAgICB9IDogb25GaW5hbGx5XG4gICk7XG59IH0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.finally.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.try.js":
/*!*****************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.try.js ***!
  \*****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js\");\nvar newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ./_perform */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_perform.js\");\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n  var promiseCapability = newPromiseCapability.f(this);\n  var result = perform(callbackfn);\n  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n  return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeS5qcz9jNjA5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtdHJ5XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUHJvbWlzZScsIHsgJ3RyeSc6IGZ1bmN0aW9uIChjYWxsYmFja2ZuKSB7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYodGhpcyk7XG4gIHZhciByZXN1bHQgPSBwZXJmb3JtKGNhbGxiYWNrZm4pO1xuICAocmVzdWx0LmUgPyBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3QgOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlKShyZXN1bHQudik7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufSB9KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.try.js\n");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/web.dom.iterable.js":
/*!******************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/web.dom.iterable.js ***!
  \******************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("__webpack_require__(/*! ./es6.array.iterator */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.iterator.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js\");\nvar TO_STRING_TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzP2I0MmMiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9lczYuYXJyYXkuaXRlcmF0b3InKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIFRPX1NUUklOR19UQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxudmFyIERPTUl0ZXJhYmxlcyA9ICgnQ1NTUnVsZUxpc3QsQ1NTU3R5bGVEZWNsYXJhdGlvbixDU1NWYWx1ZUxpc3QsQ2xpZW50UmVjdExpc3QsRE9NUmVjdExpc3QsRE9NU3RyaW5nTGlzdCwnICtcbiAgJ0RPTVRva2VuTGlzdCxEYXRhVHJhbnNmZXJJdGVtTGlzdCxGaWxlTGlzdCxIVE1MQWxsQ29sbGVjdGlvbixIVE1MQ29sbGVjdGlvbixIVE1MRm9ybUVsZW1lbnQsSFRNTFNlbGVjdEVsZW1lbnQsJyArXG4gICdNZWRpYUxpc3QsTWltZVR5cGVBcnJheSxOYW1lZE5vZGVNYXAsTm9kZUxpc3QsUGFpbnRSZXF1ZXN0TGlzdCxQbHVnaW4sUGx1Z2luQXJyYXksU1ZHTGVuZ3RoTGlzdCxTVkdOdW1iZXJMaXN0LCcgK1xuICAnU1ZHUGF0aFNlZ0xpc3QsU1ZHUG9pbnRMaXN0LFNWR1N0cmluZ0xpc3QsU1ZHVHJhbnNmb3JtTGlzdCxTb3VyY2VCdWZmZXJMaXN0LFN0eWxlU2hlZXRMaXN0LFRleHRUcmFja0N1ZUxpc3QsJyArXG4gICdUZXh0VHJhY2tMaXN0LFRvdWNoTGlzdCcpLnNwbGl0KCcsJyk7XG5cbmZvciAodmFyIGkgPSAwOyBpIDwgRE9NSXRlcmFibGVzLmxlbmd0aDsgaSsrKSB7XG4gIHZhciBOQU1FID0gRE9NSXRlcmFibGVzW2ldO1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIHByb3RvID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgaWYgKHByb3RvICYmICFwcm90b1tUT19TVFJJTkdfVEFHXSkgaGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IEl0ZXJhdG9ycy5BcnJheTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/web.dom.iterable.js\n");

/***/ }),

/***/ "./node_modules/@flowjs/flow.js/src/flow.js":
/*!**************************************************!*\
  !*** ./node_modules/@flowjs/flow.js/src/flow.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * @license MIT\n */\n(function(window, document, undefined) {'use strict';\n  if (!window || !document) {\n    console.warn('Flowjs needs window and document objects to work');\n    return;\n  }\n  // ie10+\n  var ie10plus = window.navigator.msPointerEnabled;\n  /**\n   * Flow.js is a library providing multiple simultaneous, stable and\n   * resumable uploads via the HTML5 File API.\n   * @param [opts]\n   * @param {number} [opts.chunkSize]\n   * @param {bool} [opts.forceChunkSize]\n   * @param {number} [opts.simultaneousUploads]\n   * @param {bool} [opts.singleFile]\n   * @param {string} [opts.fileParameterName]\n   * @param {number} [opts.progressCallbacksInterval]\n   * @param {number} [opts.speedSmoothingFactor]\n   * @param {Object|Function} [opts.query]\n   * @param {Object|Function} [opts.headers]\n   * @param {bool} [opts.withCredentials]\n   * @param {Function} [opts.preprocess]\n   * @param {string} [opts.method]\n   * @param {string|Function} [opts.testMethod]\n   * @param {string|Function} [opts.uploadMethod]\n   * @param {bool} [opts.prioritizeFirstAndLastChunk]\n   * @param {bool} [opts.allowDuplicateUploads]\n   * @param {string|Function} [opts.target]\n   * @param {number} [opts.maxChunkRetries]\n   * @param {number} [opts.chunkRetryInterval]\n   * @param {Array.<number>} [opts.permanentErrors]\n   * @param {Array.<number>} [opts.successStatuses]\n   * @param {Function} [opts.initFileFn]\n   * @param {Function} [opts.readFileFn]\n   * @param {Function} [opts.generateUniqueIdentifier]\n   * @constructor\n   */\n  function Flow(opts) {\n    /**\n     * Supported by browser?\n     * @type {boolean}\n     */\n    this.support = (\n        typeof File !== 'undefined' &&\n        typeof Blob !== 'undefined' &&\n        typeof FileList !== 'undefined' &&\n        (\n          !!Blob.prototype.slice || !!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice ||\n          false\n        ) // slicing files support\n    );\n\n    if (!this.support) {\n      return ;\n    }\n\n    /**\n     * Check if directory upload is supported\n     * @type {boolean}\n     */\n    this.supportDirectory = (\n        /Chrome/.test(window.navigator.userAgent) ||\n        /Firefox/.test(window.navigator.userAgent) ||\n        /Edge/.test(window.navigator.userAgent)\n    );\n\n    /**\n     * List of FlowFile objects\n     * @type {Array.<FlowFile>}\n     */\n    this.files = [];\n\n    /**\n     * Default options for flow.js\n     * @type {Object}\n     */\n    this.defaults = {\n      chunkSize: 1024 * 1024,\n      forceChunkSize: false,\n      simultaneousUploads: 3,\n      singleFile: false,\n      fileParameterName: 'file',\n      progressCallbacksInterval: 500,\n      speedSmoothingFactor: 0.1,\n      query: {},\n      headers: {},\n      withCredentials: false,\n      preprocess: null,\n      method: 'multipart',\n      testMethod: 'GET',\n      uploadMethod: 'POST',\n      prioritizeFirstAndLastChunk: false,\n      allowDuplicateUploads: false,\n      target: '/',\n      testChunks: true,\n      generateUniqueIdentifier: null,\n      maxChunkRetries: 0,\n      chunkRetryInterval: null,\n      permanentErrors: [404, 413, 415, 500, 501],\n      successStatuses: [200, 201, 202],\n      onDropStopPropagation: false,\n      initFileFn: null,\n      readFileFn: webAPIFileRead\n    };\n\n    /**\n     * Current options\n     * @type {Object}\n     */\n    this.opts = {};\n\n    /**\n     * List of events:\n     *  key stands for event name\n     *  value array list of callbacks\n     * @type {}\n     */\n    this.events = {};\n\n    var $ = this;\n\n    /**\n     * On drop event\n     * @function\n     * @param {MouseEvent} event\n     */\n    this.onDrop = function (event) {\n      if ($.opts.onDropStopPropagation) {\n        event.stopPropagation();\n      }\n      event.preventDefault();\n      var dataTransfer = event.dataTransfer;\n      if (dataTransfer.items && dataTransfer.items[0] &&\n        dataTransfer.items[0].webkitGetAsEntry) {\n        $.webkitReadDataTransfer(event);\n      } else {\n        $.addFiles(dataTransfer.files, event);\n      }\n    };\n\n    /**\n     * Prevent default\n     * @function\n     * @param {MouseEvent} event\n     */\n    this.preventEvent = function (event) {\n      event.preventDefault();\n    };\n\n\n    /**\n     * Current options\n     * @type {Object}\n     */\n    this.opts = Flow.extend({}, this.defaults, opts || {});\n\n  }\n\n  Flow.prototype = {\n    /**\n     * Set a callback for an event, possible events:\n     * fileSuccess(file), fileProgress(file), fileAdded(file, event),\n     * fileRemoved(file), fileRetry(file), fileError(file, message),\n     * complete(), progress(), error(message, file), pause()\n     * @function\n     * @param {string} event\n     * @param {Function} callback\n     */\n    on: function (event, callback) {\n      event = event.toLowerCase();\n      if (!this.events.hasOwnProperty(event)) {\n        this.events[event] = [];\n      }\n      this.events[event].push(callback);\n    },\n\n    /**\n     * Remove event callback\n     * @function\n     * @param {string} [event] removes all events if not specified\n     * @param {Function} [fn] removes all callbacks of event if not specified\n     */\n    off: function (event, fn) {\n      if (event !== undefined) {\n        event = event.toLowerCase();\n        if (fn !== undefined) {\n          if (this.events.hasOwnProperty(event)) {\n            arrayRemove(this.events[event], fn);\n          }\n        } else {\n          delete this.events[event];\n        }\n      } else {\n        this.events = {};\n      }\n    },\n\n    /**\n     * Fire an event\n     * @function\n     * @param {string} event event name\n     * @param {...} args arguments of a callback\n     * @return {bool} value is false if at least one of the event handlers which handled this event\n     * returned false. Otherwise it returns true.\n     */\n    fire: function (event, args) {\n      // `arguments` is an object, not array, in FF, so:\n      args = Array.prototype.slice.call(arguments);\n      event = event.toLowerCase();\n      var preventDefault = false;\n      if (this.events.hasOwnProperty(event)) {\n        each(this.events[event], function (callback) {\n          preventDefault = callback.apply(this, args.slice(1)) === false || preventDefault;\n        }, this);\n      }\n      if (event != 'catchall') {\n        args.unshift('catchAll');\n        preventDefault = this.fire.apply(this, args) === false || preventDefault;\n      }\n      return !preventDefault;\n    },\n\n    /**\n     * Read webkit dataTransfer object\n     * @param event\n     */\n    webkitReadDataTransfer: function (event) {\n      var $ = this;\n      var queue = event.dataTransfer.items.length;\n      var files = [];\n      each(event.dataTransfer.items, function (item) {\n        var entry = item.webkitGetAsEntry();\n        if (!entry) {\n          decrement();\n          return ;\n        }\n        if (entry.isFile) {\n          // due to a bug in Chrome's File System API impl - #149735\n          fileReadSuccess(item.getAsFile(), entry.fullPath);\n        } else {\n          readDirectory(entry.createReader());\n        }\n      });\n      function readDirectory(reader) {\n        reader.readEntries(function (entries) {\n          if (entries.length) {\n            queue += entries.length;\n            each(entries, function(entry) {\n              if (entry.isFile) {\n                var fullPath = entry.fullPath;\n                entry.file(function (file) {\n                  fileReadSuccess(file, fullPath);\n                }, readError);\n              } else if (entry.isDirectory) {\n                readDirectory(entry.createReader());\n              }\n            });\n            readDirectory(reader);\n          } else {\n            decrement();\n          }\n        }, readError);\n      }\n      function fileReadSuccess(file, fullPath) {\n        // relative path should not start with \"/\"\n        file.relativePath = fullPath.substring(1);\n        files.push(file);\n        decrement();\n      }\n      function readError(fileError) {\n        throw fileError;\n      }\n      function decrement() {\n        if (--queue == 0) {\n          $.addFiles(files, event);\n        }\n      }\n    },\n\n    /**\n     * Generate unique identifier for a file\n     * @function\n     * @param {FlowFile} file\n     * @returns {string}\n     */\n    generateUniqueIdentifier: function (file) {\n      var custom = this.opts.generateUniqueIdentifier;\n      if (typeof custom === 'function') {\n        return custom(file);\n      }\n      // Some confusion in different versions of Firefox\n      var relativePath = file.relativePath || file.webkitRelativePath || file.fileName || file.name;\n      return file.size + '-' + relativePath.replace(/[^0-9a-zA-Z_-]/img, '');\n    },\n\n    /**\n     * Upload next chunk from the queue\n     * @function\n     * @returns {boolean}\n     * @private\n     */\n    uploadNextChunk: function (preventEvents) {\n      // In some cases (such as videos) it's really handy to upload the first\n      // and last chunk of a file quickly; this let's the server check the file's\n      // metadata and determine if there's even a point in continuing.\n      var found = false;\n      if (this.opts.prioritizeFirstAndLastChunk) {\n        each(this.files, function (file) {\n          if (!file.paused && file.chunks.length &&\n            file.chunks[0].status() === 'pending') {\n            file.chunks[0].send();\n            found = true;\n            return false;\n          }\n          if (!file.paused && file.chunks.length > 1 &&\n            file.chunks[file.chunks.length - 1].status() === 'pending') {\n            file.chunks[file.chunks.length - 1].send();\n            found = true;\n            return false;\n          }\n        });\n        if (found) {\n          return found;\n        }\n      }\n\n      // Now, simply look for the next, best thing to upload\n      each(this.files, function (file) {\n        if (!file.paused) {\n          each(file.chunks, function (chunk) {\n            if (chunk.status() === 'pending') {\n              chunk.send();\n              found = true;\n              return false;\n            }\n          });\n        }\n        if (found) {\n          return false;\n        }\n      });\n      if (found) {\n        return true;\n      }\n\n      // The are no more outstanding chunks to upload, check is everything is done\n      var outstanding = false;\n      each(this.files, function (file) {\n        if (!file.isComplete()) {\n          outstanding = true;\n          return false;\n        }\n      });\n      if (!outstanding && !preventEvents) {\n        // All chunks have been uploaded, complete\n        async(function () {\n          this.fire('complete');\n        }, this);\n      }\n      return false;\n    },\n\n\n    /**\n     * Assign a browse action to one or more DOM nodes.\n     * @function\n     * @param {Element|Array.<Element>} domNodes\n     * @param {boolean} isDirectory Pass in true to allow directories to\n     * @param {boolean} singleFile prevent multi file upload\n     * @param {Object} attributes set custom attributes:\n     *  http://www.w3.org/TR/html-markup/input.file.html#input.file-attributes\n     *  eg: accept: 'image/*'\n     * be selected (Chrome only).\n     */\n    assignBrowse: function (domNodes, isDirectory, singleFile, attributes) {\n      if (domNodes instanceof Element) {\n        domNodes = [domNodes];\n      }\n\n      each(domNodes, function (domNode) {\n        var input;\n        if (domNode.tagName === 'INPUT' && domNode.type === 'file') {\n          input = domNode;\n        } else {\n          input = document.createElement('input');\n          input.setAttribute('type', 'file');\n          // display:none - not working in opera 12\n          extend(input.style, {\n            visibility: 'hidden',\n            position: 'absolute',\n            width: '1px',\n            height: '1px'\n          });\n          // for opera 12 browser, input must be assigned to a document\n          domNode.appendChild(input);\n          // https://developer.mozilla.org/en/using_files_from_web_applications)\n          // event listener is executed two times\n          // first one - original mouse click event\n          // second - input.click(), input is inside domNode\n          domNode.addEventListener('click', function() {\n            input.click();\n          }, false);\n        }\n        if (!this.opts.singleFile && !singleFile) {\n          input.setAttribute('multiple', 'multiple');\n        }\n        if (isDirectory) {\n          input.setAttribute('webkitdirectory', 'webkitdirectory');\n        }\n        each(attributes, function (value, key) {\n          input.setAttribute(key, value);\n        });\n        // When new files are added, simply append them to the overall list\n        var $ = this;\n        input.addEventListener('change', function (e) {\n       \t  if (e.target.value) {\n            $.addFiles(e.target.files, e);\n            e.target.value = '';\n       \t  }\n        }, false);\n      }, this);\n    },\n\n    /**\n     * Assign one or more DOM nodes as a drop target.\n     * @function\n     * @param {Element|Array.<Element>} domNodes\n     */\n    assignDrop: function (domNodes) {\n      if (typeof domNodes.length === 'undefined') {\n        domNodes = [domNodes];\n      }\n      each(domNodes, function (domNode) {\n        domNode.addEventListener('dragover', this.preventEvent, false);\n        domNode.addEventListener('dragenter', this.preventEvent, false);\n        domNode.addEventListener('drop', this.onDrop, false);\n      }, this);\n    },\n\n    /**\n     * Un-assign drop event from DOM nodes\n     * @function\n     * @param domNodes\n     */\n    unAssignDrop: function (domNodes) {\n      if (typeof domNodes.length === 'undefined') {\n        domNodes = [domNodes];\n      }\n      each(domNodes, function (domNode) {\n        domNode.removeEventListener('dragover', this.preventEvent);\n        domNode.removeEventListener('dragenter', this.preventEvent);\n        domNode.removeEventListener('drop', this.onDrop);\n      }, this);\n    },\n\n    /**\n     * Returns a boolean indicating whether or not the instance is currently\n     * uploading anything.\n     * @function\n     * @returns {boolean}\n     */\n    isUploading: function () {\n      var uploading = false;\n      each(this.files, function (file) {\n        if (file.isUploading()) {\n          uploading = true;\n          return false;\n        }\n      });\n      return uploading;\n    },\n\n    /**\n     * should upload next chunk\n     * @function\n     * @returns {boolean|number}\n     */\n    _shouldUploadNext: function () {\n      var num = 0;\n      var should = true;\n      var simultaneousUploads = this.opts.simultaneousUploads;\n      each(this.files, function (file) {\n        each(file.chunks, function(chunk) {\n          if (chunk.status() === 'uploading') {\n            num++;\n            if (num >= simultaneousUploads) {\n              should = false;\n              return false;\n            }\n          }\n        });\n      });\n      // if should is true then return uploading chunks's length\n      return should && num;\n    },\n\n    /**\n     * Start or resume uploading.\n     * @function\n     */\n    upload: function () {\n      // Make sure we don't start too many uploads at once\n      var ret = this._shouldUploadNext();\n      if (ret === false) {\n        return;\n      }\n      // Kick off the queue\n      this.fire('uploadStart');\n      var started = false;\n      for (var num = 1; num <= this.opts.simultaneousUploads - ret; num++) {\n        started = this.uploadNextChunk(true) || started;\n      }\n      if (!started) {\n        async(function () {\n          this.fire('complete');\n        }, this);\n      }\n    },\n\n    /**\n     * Resume uploading.\n     * @function\n     */\n    resume: function () {\n      each(this.files, function (file) {\n        if (!file.isComplete()) {\n          file.resume();\n        }\n      });\n    },\n\n    /**\n     * Pause uploading.\n     * @function\n     */\n    pause: function () {\n      each(this.files, function (file) {\n        file.pause();\n      });\n    },\n\n    /**\n     * Cancel upload of all FlowFile objects and remove them from the list.\n     * @function\n     */\n    cancel: function () {\n      for (var i = this.files.length - 1; i >= 0; i--) {\n        this.files[i].cancel();\n      }\n    },\n\n    /**\n     * Returns a number between 0 and 1 indicating the current upload progress\n     * of all files.\n     * @function\n     * @returns {number}\n     */\n    progress: function () {\n      var totalDone = 0;\n      var totalSize = 0;\n      // Resume all chunks currently being uploaded\n      each(this.files, function (file) {\n        totalDone += file.progress() * file.size;\n        totalSize += file.size;\n      });\n      return totalSize > 0 ? totalDone / totalSize : 0;\n    },\n\n    /**\n     * Add a HTML5 File object to the list of files.\n     * @function\n     * @param {File} file\n     * @param {Event} [event] event is optional\n     */\n    addFile: function (file, event) {\n      this.addFiles([file], event);\n    },\n\n    /**\n     * Add a HTML5 File object to the list of files.\n     * @function\n     * @param {FileList|Array} fileList\n     * @param {Event} [event] event is optional\n     */\n    addFiles: function (fileList, event) {\n      var files = [];\n      each(fileList, function (file) {\n        // https://github.com/flowjs/flow.js/issues/55\n        if ((!ie10plus || ie10plus && file.size > 0) && !(file.size % 4096 === 0 && (file.name === '.' || file.fileName === '.'))) {\n          var uniqueIdentifier = this.generateUniqueIdentifier(file);\n          if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(uniqueIdentifier)) {\n            var f = new FlowFile(this, file, uniqueIdentifier);\n            if (this.fire('fileAdded', f, event)) {\n              files.push(f);\n            }\n          }\n        }\n      }, this);\n      if (this.fire('filesAdded', files, event)) {\n        each(files, function (file) {\n          if (this.opts.singleFile && this.files.length > 0) {\n            this.removeFile(this.files[0]);\n          }\n          this.files.push(file);\n        }, this);\n        this.fire('filesSubmitted', files, event);\n      }\n    },\n\n\n    /**\n     * Cancel upload of a specific FlowFile object from the list.\n     * @function\n     * @param {FlowFile} file\n     */\n    removeFile: function (file) {\n      for (var i = this.files.length - 1; i >= 0; i--) {\n        if (this.files[i] === file) {\n          this.files.splice(i, 1);\n          file.abort();\n          this.fire('fileRemoved', file);\n        }\n      }\n    },\n\n    /**\n     * Look up a FlowFile object by its unique identifier.\n     * @function\n     * @param {string} uniqueIdentifier\n     * @returns {boolean|FlowFile} false if file was not found\n     */\n    getFromUniqueIdentifier: function (uniqueIdentifier) {\n      var ret = false;\n      each(this.files, function (file) {\n        if (file.uniqueIdentifier === uniqueIdentifier) {\n          ret = file;\n        }\n      });\n      return ret;\n    },\n\n    /**\n     * Returns the total size of all files in bytes.\n     * @function\n     * @returns {number}\n     */\n    getSize: function () {\n      var totalSize = 0;\n      each(this.files, function (file) {\n        totalSize += file.size;\n      });\n      return totalSize;\n    },\n\n    /**\n     * Returns the total size uploaded of all files in bytes.\n     * @function\n     * @returns {number}\n     */\n    sizeUploaded: function () {\n      var size = 0;\n      each(this.files, function (file) {\n        size += file.sizeUploaded();\n      });\n      return size;\n    },\n\n    /**\n     * Returns remaining time to upload all files in seconds. Accuracy is based on average speed.\n     * If speed is zero, time remaining will be equal to positive infinity `Number.POSITIVE_INFINITY`\n     * @function\n     * @returns {number}\n     */\n    timeRemaining: function () {\n      var sizeDelta = 0;\n      var averageSpeed = 0;\n      each(this.files, function (file) {\n        if (!file.paused && !file.error) {\n          sizeDelta += file.size - file.sizeUploaded();\n          averageSpeed += file.averageSpeed;\n        }\n      });\n      if (sizeDelta && !averageSpeed) {\n        return Number.POSITIVE_INFINITY;\n      }\n      if (!sizeDelta && !averageSpeed) {\n        return 0;\n      }\n      return Math.floor(sizeDelta / averageSpeed);\n    }\n  };\n\n\n\n\n\n\n  /**\n   * FlowFile class\n   * @name FlowFile\n   * @param {Flow} flowObj\n   * @param {File} file\n   * @param {string} uniqueIdentifier\n   * @constructor\n   */\n  function FlowFile(flowObj, file, uniqueIdentifier) {\n\n    /**\n     * Reference to parent Flow instance\n     * @type {Flow}\n     */\n    this.flowObj = flowObj;\n\n    /**\n     * Used to store the bytes read\n     * @type {Blob|string}\n     */\n    this.bytes = null;\n\n    /**\n     * Reference to file\n     * @type {File}\n     */\n    this.file = file;\n\n    /**\n     * File name. Some confusion in different versions of Firefox\n     * @type {string}\n     */\n    this.name = file.fileName || file.name;\n\n    /**\n     * File size\n     * @type {number}\n     */\n    this.size = file.size;\n\n    /**\n     * Relative file path\n     * @type {string}\n     */\n    this.relativePath = file.relativePath || file.webkitRelativePath || this.name;\n\n    /**\n     * File unique identifier\n     * @type {string}\n     */\n    this.uniqueIdentifier = (uniqueIdentifier === undefined ? flowObj.generateUniqueIdentifier(file) : uniqueIdentifier);\n\n    /**\n     * List of chunks\n     * @type {Array.<FlowChunk>}\n     */\n    this.chunks = [];\n\n    /**\n     * Indicated if file is paused\n     * @type {boolean}\n     */\n    this.paused = false;\n\n    /**\n     * Indicated if file has encountered an error\n     * @type {boolean}\n     */\n    this.error = false;\n\n    /**\n     * Average upload speed\n     * @type {number}\n     */\n    this.averageSpeed = 0;\n\n    /**\n     * Current upload speed\n     * @type {number}\n     */\n    this.currentSpeed = 0;\n\n    /**\n     * Date then progress was called last time\n     * @type {number}\n     * @private\n     */\n    this._lastProgressCallback = Date.now();\n\n    /**\n     * Previously uploaded file size\n     * @type {number}\n     * @private\n     */\n    this._prevUploadedSize = 0;\n\n    /**\n     * Holds previous progress\n     * @type {number}\n     * @private\n     */\n    this._prevProgress = 0;\n\n    this.bootstrap();\n  }\n\n  FlowFile.prototype = {\n    /**\n     * Update speed parameters\n     * @link http://stackoverflow.com/questions/2779600/how-to-estimate-download-time-remaining-accurately\n     * @function\n     */\n    measureSpeed: function () {\n      var timeSpan = Date.now() - this._lastProgressCallback;\n      if (!timeSpan) {\n        return ;\n      }\n      var smoothingFactor = this.flowObj.opts.speedSmoothingFactor;\n      var uploaded = this.sizeUploaded();\n      // Prevent negative upload speed after file upload resume\n      this.currentSpeed = Math.max((uploaded - this._prevUploadedSize) / timeSpan * 1000, 0);\n      this.averageSpeed = smoothingFactor * this.currentSpeed + (1 - smoothingFactor) * this.averageSpeed;\n      this._prevUploadedSize = uploaded;\n    },\n\n    /**\n     * For internal usage only.\n     * Callback when something happens within the chunk.\n     * @function\n     * @param {FlowChunk} chunk\n     * @param {string} event can be 'progress', 'success', 'error' or 'retry'\n     * @param {string} [message]\n     */\n    chunkEvent: function (chunk, event, message) {\n      switch (event) {\n        case 'progress':\n          if (Date.now() - this._lastProgressCallback <\n            this.flowObj.opts.progressCallbacksInterval) {\n            break;\n          }\n          this.measureSpeed();\n          this.flowObj.fire('fileProgress', this, chunk);\n          this.flowObj.fire('progress');\n          this._lastProgressCallback = Date.now();\n          break;\n        case 'error':\n          this.error = true;\n          this.abort(true);\n          this.flowObj.fire('fileError', this, message, chunk);\n          this.flowObj.fire('error', message, this, chunk);\n          break;\n        case 'success':\n          if (this.error) {\n            return;\n          }\n          this.measureSpeed();\n          this.flowObj.fire('fileProgress', this, chunk);\n          this.flowObj.fire('progress');\n          this._lastProgressCallback = Date.now();\n          if (this.isComplete()) {\n            this.currentSpeed = 0;\n            this.averageSpeed = 0;\n            this.flowObj.fire('fileSuccess', this, message, chunk);\n          }\n          break;\n        case 'retry':\n          this.flowObj.fire('fileRetry', this, chunk);\n          break;\n      }\n    },\n\n    /**\n     * Pause file upload\n     * @function\n     */\n    pause: function() {\n      this.paused = true;\n      this.abort();\n    },\n\n    /**\n     * Resume file upload\n     * @function\n     */\n    resume: function() {\n      this.paused = false;\n      this.flowObj.upload();\n    },\n\n    /**\n     * Abort current upload\n     * @function\n     */\n    abort: function (reset) {\n      this.currentSpeed = 0;\n      this.averageSpeed = 0;\n      var chunks = this.chunks;\n      if (reset) {\n        this.chunks = [];\n      }\n      each(chunks, function (c) {\n        if (c.status() === 'uploading') {\n          c.abort();\n          this.flowObj.uploadNextChunk();\n        }\n      }, this);\n    },\n\n    /**\n     * Cancel current upload and remove from a list\n     * @function\n     */\n    cancel: function () {\n      this.flowObj.removeFile(this);\n    },\n\n    /**\n     * Retry aborted file upload\n     * @function\n     */\n    retry: function () {\n      this.bootstrap();\n      this.flowObj.upload();\n    },\n\n    /**\n     * Clear current chunks and slice file again\n     * @function\n     */\n    bootstrap: function () {\n      if (typeof this.flowObj.opts.initFileFn === \"function\") {\n        this.flowObj.opts.initFileFn(this);\n      }\n\n      this.abort(true);\n      this.error = false;\n      // Rebuild stack of chunks from file\n      this._prevProgress = 0;\n      var round = this.flowObj.opts.forceChunkSize ? Math.ceil : Math.floor;\n      var chunks = Math.max(\n        round(this.size / this.flowObj.opts.chunkSize), 1\n      );\n      for (var offset = 0; offset < chunks; offset++) {\n        this.chunks.push(\n          new FlowChunk(this.flowObj, this, offset)\n        );\n      }\n    },\n\n    /**\n     * Get current upload progress status\n     * @function\n     * @returns {number} from 0 to 1\n     */\n    progress: function () {\n      if (this.error) {\n        return 1;\n      }\n      if (this.chunks.length === 1) {\n        this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress());\n        return this._prevProgress;\n      }\n      // Sum up progress across everything\n      var bytesLoaded = 0;\n      each(this.chunks, function (c) {\n        // get chunk progress relative to entire file\n        bytesLoaded += c.progress() * (c.endByte - c.startByte);\n      });\n      var percent = bytesLoaded / this.size;\n      // We don't want to lose percentages when an upload is paused\n      this._prevProgress = Math.max(this._prevProgress, percent > 0.9999 ? 1 : percent);\n      return this._prevProgress;\n    },\n\n    /**\n     * Indicates if file is being uploaded at the moment\n     * @function\n     * @returns {boolean}\n     */\n    isUploading: function () {\n      var uploading = false;\n      each(this.chunks, function (chunk) {\n        if (chunk.status() === 'uploading') {\n          uploading = true;\n          return false;\n        }\n      });\n      return uploading;\n    },\n\n    /**\n     * Indicates if file is has finished uploading and received a response\n     * @function\n     * @returns {boolean}\n     */\n    isComplete: function () {\n      var outstanding = false;\n      each(this.chunks, function (chunk) {\n        var status = chunk.status();\n        if (status === 'pending' || status === 'uploading' || status === 'reading' || chunk.preprocessState === 1 || chunk.readState === 1) {\n          outstanding = true;\n          return false;\n        }\n      });\n      return !outstanding;\n    },\n\n    /**\n     * Count total size uploaded\n     * @function\n     * @returns {number}\n     */\n    sizeUploaded: function () {\n      var size = 0;\n      each(this.chunks, function (chunk) {\n        size += chunk.sizeUploaded();\n      });\n      return size;\n    },\n\n    /**\n     * Returns remaining time to finish upload file in seconds. Accuracy is based on average speed.\n     * If speed is zero, time remaining will be equal to positive infinity `Number.POSITIVE_INFINITY`\n     * @function\n     * @returns {number}\n     */\n    timeRemaining: function () {\n      if (this.paused || this.error) {\n        return 0;\n      }\n      var delta = this.size - this.sizeUploaded();\n      if (delta && !this.averageSpeed) {\n        return Number.POSITIVE_INFINITY;\n      }\n      if (!delta && !this.averageSpeed) {\n        return 0;\n      }\n      return Math.floor(delta / this.averageSpeed);\n    },\n\n    /**\n     * Get file type\n     * @function\n     * @returns {string}\n     */\n    getType: function () {\n      return this.file.type && this.file.type.split('/')[1];\n    },\n\n    /**\n     * Get file extension\n     * @function\n     * @returns {string}\n     */\n    getExtension: function () {\n      return this.name.substr((~-this.name.lastIndexOf(\".\") >>> 0) + 2).toLowerCase();\n    }\n  };\n\n  /**\n   * Default read function using the webAPI\n   *\n   * @function webAPIFileRead(fileObj, startByte, endByte, fileType, chunk)\n   *\n   */\n  function webAPIFileRead(fileObj, startByte, endByte, fileType, chunk) {\n    var function_name = 'slice';\n\n    if (fileObj.file.slice)\n      function_name =  'slice';\n    else if (fileObj.file.mozSlice)\n      function_name = 'mozSlice';\n    else if (fileObj.file.webkitSlice)\n      function_name = 'webkitSlice';\n\n    chunk.readFinished(fileObj.file[function_name](startByte, endByte, fileType));\n  }\n\n\n  /**\n   * Class for storing a single chunk\n   * @name FlowChunk\n   * @param {Flow} flowObj\n   * @param {FlowFile} fileObj\n   * @param {number} offset\n   * @constructor\n   */\n  function FlowChunk(flowObj, fileObj, offset) {\n\n    /**\n     * Reference to parent flow object\n     * @type {Flow}\n     */\n    this.flowObj = flowObj;\n\n    /**\n     * Reference to parent FlowFile object\n     * @type {FlowFile}\n     */\n    this.fileObj = fileObj;\n\n    /**\n     * File offset\n     * @type {number}\n     */\n    this.offset = offset;\n\n    /**\n     * Indicates if chunk existence was checked on the server\n     * @type {boolean}\n     */\n    this.tested = false;\n\n    /**\n     * Number of retries performed\n     * @type {number}\n     */\n    this.retries = 0;\n\n    /**\n     * Pending retry\n     * @type {boolean}\n     */\n    this.pendingRetry = false;\n\n    /**\n     * Preprocess state\n     * @type {number} 0 = unprocessed, 1 = processing, 2 = finished\n     */\n    this.preprocessState = 0;\n\n    /**\n     * Read state\n     * @type {number} 0 = not read, 1 = reading, 2 = finished\n     */\n    this.readState = 0;\n\n\n    /**\n     * Bytes transferred from total request size\n     * @type {number}\n     */\n    this.loaded = 0;\n\n    /**\n     * Total request size\n     * @type {number}\n     */\n    this.total = 0;\n\n    /**\n     * Size of a chunk\n     * @type {number}\n     */\n    this.chunkSize = this.flowObj.opts.chunkSize;\n\n    /**\n     * Chunk start byte in a file\n     * @type {number}\n     */\n    this.startByte = this.offset * this.chunkSize;\n\n    /**\n      * Compute the endbyte in a file\n      *\n      */\n    this.computeEndByte = function() {\n      var endByte = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);\n      if (this.fileObj.size - endByte < this.chunkSize && !this.flowObj.opts.forceChunkSize) {\n        // The last chunk will be bigger than the chunk size,\n        // but less than 2 * this.chunkSize\n        endByte = this.fileObj.size;\n      }\n      return endByte;\n    }\n\n    /**\n     * Chunk end byte in a file\n     * @type {number}\n     */\n    this.endByte = this.computeEndByte();\n\n    /**\n     * XMLHttpRequest\n     * @type {XMLHttpRequest}\n     */\n    this.xhr = null;\n\n    var $ = this;\n\n    /**\n     * Send chunk event\n     * @param event\n     * @param {...} args arguments of a callback\n     */\n    this.event = function (event, args) {\n      args = Array.prototype.slice.call(arguments);\n      args.unshift($);\n      $.fileObj.chunkEvent.apply($.fileObj, args);\n    };\n    /**\n     * Catch progress event\n     * @param {ProgressEvent} event\n     */\n    this.progressHandler = function(event) {\n      if (event.lengthComputable) {\n        $.loaded = event.loaded ;\n        $.total = event.total;\n      }\n      $.event('progress', event);\n    };\n\n    /**\n     * Catch test event\n     * @param {Event} event\n     */\n    this.testHandler = function(event) {\n      var status = $.status(true);\n      if (status === 'error') {\n        $.event(status, $.message());\n        $.flowObj.uploadNextChunk();\n      } else if (status === 'success') {\n        $.tested = true;\n        $.event(status, $.message());\n        $.flowObj.uploadNextChunk();\n      } else if (!$.fileObj.paused) {\n        // Error might be caused by file pause method\n        // Chunks does not exist on the server side\n        $.tested = true;\n        $.send();\n      }\n    };\n\n    /**\n     * Upload has stopped\n     * @param {Event} event\n     */\n    this.doneHandler = function(event) {\n      var status = $.status();\n      if (status === 'success' || status === 'error') {\n        delete this.data;\n        $.event(status, $.message());\n        $.flowObj.uploadNextChunk();\n      } else {\n        $.event('retry', $.message());\n        $.pendingRetry = true;\n        $.abort();\n        $.retries++;\n        var retryInterval = $.flowObj.opts.chunkRetryInterval;\n        if (retryInterval !== null) {\n          setTimeout(function () {\n            $.send();\n          }, retryInterval);\n        } else {\n          $.send();\n        }\n      }\n    };\n  }\n\n  FlowChunk.prototype = {\n    /**\n     * Get params for a request\n     * @function\n     */\n    getParams: function () {\n      return {\n        flowChunkNumber: this.offset + 1,\n        flowChunkSize: this.flowObj.opts.chunkSize,\n        flowCurrentChunkSize: this.endByte - this.startByte,\n        flowTotalSize: this.fileObj.size,\n        flowIdentifier: this.fileObj.uniqueIdentifier,\n        flowFilename: this.fileObj.name,\n        flowRelativePath: this.fileObj.relativePath,\n        flowTotalChunks: this.fileObj.chunks.length\n      };\n    },\n\n    /**\n     * Get target option with query params\n     * @function\n     * @param params\n     * @returns {string}\n     */\n    getTarget: function(target, params){\n      if (params.length == 0) {\n\treturn target;\n      }\n\n      if(target.indexOf('?') < 0) {\n        target += '?';\n      } else {\n        target += '&';\n      }\n      return target + params.join('&');\n    },\n\n    /**\n     * Makes a GET request without any data to see if the chunk has already\n     * been uploaded in a previous session\n     * @function\n     */\n    test: function () {\n      // Set up request and listen for event\n      this.xhr = new XMLHttpRequest();\n      this.xhr.addEventListener(\"load\", this.testHandler, false);\n      this.xhr.addEventListener(\"error\", this.testHandler, false);\n      var testMethod = evalOpts(this.flowObj.opts.testMethod, this.fileObj, this);\n      var data = this.prepareXhrRequest(testMethod, true);\n      this.xhr.send(data);\n    },\n\n    /**\n     * Finish preprocess state\n     * @function\n     */\n    preprocessFinished: function () {\n      // Re-compute the endByte after the preprocess function to allow an\n      // implementer of preprocess to set the fileObj size\n      this.endByte = this.computeEndByte();\n\n      this.preprocessState = 2;\n      this.send();\n    },\n\n    /**\n     * Finish read state\n     * @function\n     */\n    readFinished: function (bytes) {\n      this.readState = 2;\n      this.bytes = bytes;\n      this.send();\n    },\n\n\n    /**\n     * Uploads the actual data in a POST call\n     * @function\n     */\n    send: function () {\n      var preprocess = this.flowObj.opts.preprocess;\n      var read = this.flowObj.opts.readFileFn;\n      if (typeof preprocess === 'function') {\n        switch (this.preprocessState) {\n          case 0:\n            this.preprocessState = 1;\n            preprocess(this);\n            return;\n          case 1:\n            return;\n        }\n      }\n      switch (this.readState) {\n        case 0:\n          this.readState = 1;\n          read(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);\n          return;\n        case 1:\n          return;\n      }\n      if (this.flowObj.opts.testChunks && !this.tested) {\n        this.test();\n        return;\n      }\n\n      this.loaded = 0;\n      this.total = 0;\n      this.pendingRetry = false;\n\n      // Set up request and listen for event\n      this.xhr = new XMLHttpRequest();\n      this.xhr.upload.addEventListener('progress', this.progressHandler, false);\n      this.xhr.addEventListener(\"load\", this.doneHandler, false);\n      this.xhr.addEventListener(\"error\", this.doneHandler, false);\n\n      var uploadMethod = evalOpts(this.flowObj.opts.uploadMethod, this.fileObj, this);\n      var data = this.prepareXhrRequest(uploadMethod, false, this.flowObj.opts.method, this.bytes);\n      this.xhr.send(data);\n    },\n\n    /**\n     * Abort current xhr request\n     * @function\n     */\n    abort: function () {\n      // Abort and reset\n      var xhr = this.xhr;\n      this.xhr = null;\n      if (xhr) {\n        xhr.abort();\n      }\n    },\n\n    /**\n     * Retrieve current chunk upload status\n     * @function\n     * @returns {string} 'pending', 'uploading', 'success', 'error'\n     */\n    status: function (isTest) {\n      if (this.readState === 1) {\n        return 'reading';\n      } else if (this.pendingRetry || this.preprocessState === 1) {\n        // if pending retry then that's effectively the same as actively uploading,\n        // there might just be a slight delay before the retry starts\n        return 'uploading';\n      } else if (!this.xhr) {\n        return 'pending';\n      } else if (this.xhr.readyState < 4) {\n        // Status is really 'OPENED', 'HEADERS_RECEIVED'\n        // or 'LOADING' - meaning that stuff is happening\n        return 'uploading';\n      } else {\n        if (this.flowObj.opts.successStatuses.indexOf(this.xhr.status) > -1) {\n          // HTTP 200, perfect\n\t\t      // HTTP 202 Accepted - The request has been accepted for processing, but the processing has not been completed.\n          return 'success';\n        } else if (this.flowObj.opts.permanentErrors.indexOf(this.xhr.status) > -1 ||\n            !isTest && this.retries >= this.flowObj.opts.maxChunkRetries) {\n          // HTTP 413/415/500/501, permanent error\n          return 'error';\n        } else {\n          // this should never happen, but we'll reset and queue a retry\n          // a likely case for this would be 503 service unavailable\n          this.abort();\n          return 'pending';\n        }\n      }\n    },\n\n    /**\n     * Get response from xhr request\n     * @function\n     * @returns {String}\n     */\n    message: function () {\n      return this.xhr ? this.xhr.responseText : '';\n    },\n\n    /**\n     * Get upload progress\n     * @function\n     * @returns {number}\n     */\n    progress: function () {\n      if (this.pendingRetry) {\n        return 0;\n      }\n      var s = this.status();\n      if (s === 'success' || s === 'error') {\n        return 1;\n      } else if (s === 'pending') {\n        return 0;\n      } else {\n        return this.total > 0 ? this.loaded / this.total : 0;\n      }\n    },\n\n    /**\n     * Count total size uploaded\n     * @function\n     * @returns {number}\n     */\n    sizeUploaded: function () {\n      var size = this.endByte - this.startByte;\n      // can't return only chunk.loaded value, because it is bigger than chunk size\n      if (this.status() !== 'success') {\n        size = this.progress() * size;\n      }\n      return size;\n    },\n\n    /**\n     * Prepare Xhr request. Set query, headers and data\n     * @param {string} method GET or POST\n     * @param {bool} isTest is this a test request\n     * @param {string} [paramsMethod] octet or form\n     * @param {Blob} [blob] to send\n     * @returns {FormData|Blob|Null} data to send\n     */\n    prepareXhrRequest: function(method, isTest, paramsMethod, blob) {\n      // Add data from the query options\n      var query = evalOpts(this.flowObj.opts.query, this.fileObj, this, isTest);\n      query = extend(query || {}, this.getParams());\n\n      var target = evalOpts(this.flowObj.opts.target, this.fileObj, this, isTest);\n      var data = null;\n      if (method === 'GET' || paramsMethod === 'octet') {\n        // Add data from the query options\n        var params = [];\n        each(query, function (v, k) {\n          params.push([encodeURIComponent(k), encodeURIComponent(v)].join('='));\n        });\n        target = this.getTarget(target, params);\n        data = blob || null;\n      } else {\n        // Add data from the query options\n        data = new FormData();\n        each(query, function (v, k) {\n          data.append(k, v);\n        });\n        if (typeof blob !== \"undefined\") data.append(this.flowObj.opts.fileParameterName, blob, this.fileObj.file.name);\n      }\n\n      this.xhr.open(method, target, true);\n      this.xhr.withCredentials = this.flowObj.opts.withCredentials;\n\n      // Add data from header options\n      each(evalOpts(this.flowObj.opts.headers, this.fileObj, this, isTest), function (v, k) {\n        this.xhr.setRequestHeader(k, v);\n      }, this);\n\n      return data;\n    }\n  };\n\n  /**\n   * Remove value from array\n   * @param array\n   * @param value\n   */\n  function arrayRemove(array, value) {\n    var index = array.indexOf(value);\n    if (index > -1) {\n      array.splice(index, 1);\n    }\n  }\n\n  /**\n   * If option is a function, evaluate it with given params\n   * @param {*} data\n   * @param {...} args arguments of a callback\n   * @returns {*}\n   */\n  function evalOpts(data, args) {\n    if (typeof data === \"function\") {\n      // `arguments` is an object, not array, in FF, so:\n      args = Array.prototype.slice.call(arguments);\n      data = data.apply(null, args.slice(1));\n    }\n    return data;\n  }\n  Flow.evalOpts = evalOpts;\n\n  /**\n   * Execute function asynchronously\n   * @param fn\n   * @param context\n   */\n  function async(fn, context) {\n    setTimeout(fn.bind(context), 0);\n  }\n\n  /**\n   * Extends the destination object `dst` by copying all of the properties from\n   * the `src` object(s) to `dst`. You can specify multiple `src` objects.\n   * @function\n   * @param {Object} dst Destination object.\n   * @param {...Object} src Source object(s).\n   * @returns {Object} Reference to `dst`.\n   */\n  function extend(dst, src) {\n    each(arguments, function(obj) {\n      if (obj !== dst) {\n        each(obj, function(value, key){\n          dst[key] = value;\n        });\n      }\n    });\n    return dst;\n  }\n  Flow.extend = extend;\n\n  /**\n   * Iterate each element of an object\n   * @function\n   * @param {Array|Object} obj object or an array to iterate\n   * @param {Function} callback first argument is a value and second is a key.\n   * @param {Object=} context Object to become context (`this`) for the iterator function.\n   */\n  function each(obj, callback, context) {\n    if (!obj) {\n      return ;\n    }\n    var key;\n    // Is Array?\n    // Array.isArray won't work, not only arrays can be iterated by index https://github.com/flowjs/ng-flow/issues/236#\n    if (typeof(obj.length) !== 'undefined') {\n      for (key = 0; key < obj.length; key++) {\n        if (callback.call(context, obj[key], key) === false) {\n          return ;\n        }\n      }\n    } else {\n      for (key in obj) {\n        if (obj.hasOwnProperty(key) && callback.call(context, obj[key], key) === false) {\n          return ;\n        }\n      }\n    }\n  }\n  Flow.each = each;\n\n  /**\n   * FlowFile constructor\n   * @type {FlowFile}\n   */\n  Flow.FlowFile = FlowFile;\n\n  /**\n   * FlowFile constructor\n   * @type {FlowChunk}\n   */\n  Flow.FlowChunk = FlowChunk;\n\n  /**\n   * Library version\n   * @type {string}\n   */\n  Flow.version = '<%= version %>';\n\n  if (  true && module && typeof module.exports === \"object\" ) {\n    // Expose Flow as module.exports in loaders that implement the Node\n    // module pattern (including browserify). Do not create the global, since\n    // the user will be storing it themselves locally, and globals are frowned\n    // upon in the Node module world.\n    module.exports = Flow;\n  } else {\n    // Otherwise expose Flow to the global object as usual\n    window.Flow = Flow;\n\n    // Register as a named AMD module, since Flow can be concatenated with other\n    // files that may use define, but not via a proper concatenation script that\n    // understands anonymous AMD modules. A named AMD is safest and most robust\n    // way to register. Lowercase flow is used because AMD module names are\n    // derived from file names, and Flow is normally delivered in a lowercase\n    // file name. Do this after creating the global so that if an AMD module wants\n    // to call noConflict to hide this version of Flow, it will work.\n    if ( true ) {\n      !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { return Flow; }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n    }\n  }\n})(typeof window !== 'undefined' && window, typeof document !== 'undefined' && document);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGZsb3dqcy9mbG93LmpzL3NyYy9mbG93LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmbG93anMvZmxvdy5qcy9zcmMvZmxvdy5qcz9lYmM3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgTUlUXG4gKi9cbihmdW5jdGlvbih3aW5kb3csIGRvY3VtZW50LCB1bmRlZmluZWQpIHsndXNlIHN0cmljdCc7XG4gIGlmICghd2luZG93IHx8ICFkb2N1bWVudCkge1xuICAgIGNvbnNvbGUud2FybignRmxvd2pzIG5lZWRzIHdpbmRvdyBhbmQgZG9jdW1lbnQgb2JqZWN0cyB0byB3b3JrJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIGllMTArXG4gIHZhciBpZTEwcGx1cyA9IHdpbmRvdy5uYXZpZ2F0b3IubXNQb2ludGVyRW5hYmxlZDtcbiAgLyoqXG4gICAqIEZsb3cuanMgaXMgYSBsaWJyYXJ5IHByb3ZpZGluZyBtdWx0aXBsZSBzaW11bHRhbmVvdXMsIHN0YWJsZSBhbmRcbiAgICogcmVzdW1hYmxlIHVwbG9hZHMgdmlhIHRoZSBIVE1MNSBGaWxlIEFQSS5cbiAgICogQHBhcmFtIFtvcHRzXVxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdHMuY2h1bmtTaXplXVxuICAgKiBAcGFyYW0ge2Jvb2x9IFtvcHRzLmZvcmNlQ2h1bmtTaXplXVxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdHMuc2ltdWx0YW5lb3VzVXBsb2Fkc11cbiAgICogQHBhcmFtIHtib29sfSBbb3B0cy5zaW5nbGVGaWxlXVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZmlsZVBhcmFtZXRlck5hbWVdXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0cy5wcm9ncmVzc0NhbGxiYWNrc0ludGVydmFsXVxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdHMuc3BlZWRTbW9vdGhpbmdGYWN0b3JdXG4gICAqIEBwYXJhbSB7T2JqZWN0fEZ1bmN0aW9ufSBbb3B0cy5xdWVyeV1cbiAgICogQHBhcmFtIHtPYmplY3R8RnVuY3Rpb259IFtvcHRzLmhlYWRlcnNdXG4gICAqIEBwYXJhbSB7Ym9vbH0gW29wdHMud2l0aENyZWRlbnRpYWxzXVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy5wcmVwcm9jZXNzXVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubWV0aG9kXVxuICAgKiBAcGFyYW0ge3N0cmluZ3xGdW5jdGlvbn0gW29wdHMudGVzdE1ldGhvZF1cbiAgICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IFtvcHRzLnVwbG9hZE1ldGhvZF1cbiAgICogQHBhcmFtIHtib29sfSBbb3B0cy5wcmlvcml0aXplRmlyc3RBbmRMYXN0Q2h1bmtdXG4gICAqIEBwYXJhbSB7Ym9vbH0gW29wdHMuYWxsb3dEdXBsaWNhdGVVcGxvYWRzXVxuICAgKiBAcGFyYW0ge3N0cmluZ3xGdW5jdGlvbn0gW29wdHMudGFyZ2V0XVxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdHMubWF4Q2h1bmtSZXRyaWVzXVxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdHMuY2h1bmtSZXRyeUludGVydmFsXVxuICAgKiBAcGFyYW0ge0FycmF5LjxudW1iZXI+fSBbb3B0cy5wZXJtYW5lbnRFcnJvcnNdXG4gICAqIEBwYXJhbSB7QXJyYXkuPG51bWJlcj59IFtvcHRzLnN1Y2Nlc3NTdGF0dXNlc11cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMuaW5pdEZpbGVGbl1cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMucmVhZEZpbGVGbl1cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMuZ2VuZXJhdGVVbmlxdWVJZGVudGlmaWVyXVxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGZ1bmN0aW9uIEZsb3cob3B0cykge1xuICAgIC8qKlxuICAgICAqIFN1cHBvcnRlZCBieSBicm93c2VyP1xuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuc3VwcG9ydCA9IChcbiAgICAgICAgdHlwZW9mIEZpbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICB0eXBlb2YgRmlsZUxpc3QgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIChcbiAgICAgICAgICAhIUJsb2IucHJvdG90eXBlLnNsaWNlIHx8ICEhQmxvYi5wcm90b3R5cGUud2Via2l0U2xpY2UgfHwgISFCbG9iLnByb3RvdHlwZS5tb3pTbGljZSB8fFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICkgLy8gc2xpY2luZyBmaWxlcyBzdXBwb3J0XG4gICAgKTtcblxuICAgIGlmICghdGhpcy5zdXBwb3J0KSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGRpcmVjdG9yeSB1cGxvYWQgaXMgc3VwcG9ydGVkXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5zdXBwb3J0RGlyZWN0b3J5ID0gKFxuICAgICAgICAvQ2hyb21lLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSB8fFxuICAgICAgICAvRmlyZWZveC8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkgfHxcbiAgICAgICAgL0VkZ2UvLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgRmxvd0ZpbGUgb2JqZWN0c1xuICAgICAqIEB0eXBlIHtBcnJheS48Rmxvd0ZpbGU+fVxuICAgICAqL1xuICAgIHRoaXMuZmlsZXMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgb3B0aW9ucyBmb3IgZmxvdy5qc1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgdGhpcy5kZWZhdWx0cyA9IHtcbiAgICAgIGNodW5rU2l6ZTogMTAyNCAqIDEwMjQsXG4gICAgICBmb3JjZUNodW5rU2l6ZTogZmFsc2UsXG4gICAgICBzaW11bHRhbmVvdXNVcGxvYWRzOiAzLFxuICAgICAgc2luZ2xlRmlsZTogZmFsc2UsXG4gICAgICBmaWxlUGFyYW1ldGVyTmFtZTogJ2ZpbGUnLFxuICAgICAgcHJvZ3Jlc3NDYWxsYmFja3NJbnRlcnZhbDogNTAwLFxuICAgICAgc3BlZWRTbW9vdGhpbmdGYWN0b3I6IDAuMSxcbiAgICAgIHF1ZXJ5OiB7fSxcbiAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcbiAgICAgIHByZXByb2Nlc3M6IG51bGwsXG4gICAgICBtZXRob2Q6ICdtdWx0aXBhcnQnLFxuICAgICAgdGVzdE1ldGhvZDogJ0dFVCcsXG4gICAgICB1cGxvYWRNZXRob2Q6ICdQT1NUJyxcbiAgICAgIHByaW9yaXRpemVGaXJzdEFuZExhc3RDaHVuazogZmFsc2UsXG4gICAgICBhbGxvd0R1cGxpY2F0ZVVwbG9hZHM6IGZhbHNlLFxuICAgICAgdGFyZ2V0OiAnLycsXG4gICAgICB0ZXN0Q2h1bmtzOiB0cnVlLFxuICAgICAgZ2VuZXJhdGVVbmlxdWVJZGVudGlmaWVyOiBudWxsLFxuICAgICAgbWF4Q2h1bmtSZXRyaWVzOiAwLFxuICAgICAgY2h1bmtSZXRyeUludGVydmFsOiBudWxsLFxuICAgICAgcGVybWFuZW50RXJyb3JzOiBbNDA0LCA0MTMsIDQxNSwgNTAwLCA1MDFdLFxuICAgICAgc3VjY2Vzc1N0YXR1c2VzOiBbMjAwLCAyMDEsIDIwMl0sXG4gICAgICBvbkRyb3BTdG9wUHJvcGFnYXRpb246IGZhbHNlLFxuICAgICAgaW5pdEZpbGVGbjogbnVsbCxcbiAgICAgIHJlYWRGaWxlRm46IHdlYkFQSUZpbGVSZWFkXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgb3B0aW9uc1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgdGhpcy5vcHRzID0ge307XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGV2ZW50czpcbiAgICAgKiAga2V5IHN0YW5kcyBmb3IgZXZlbnQgbmFtZVxuICAgICAqICB2YWx1ZSBhcnJheSBsaXN0IG9mIGNhbGxiYWNrc1xuICAgICAqIEB0eXBlIHt9XG4gICAgICovXG4gICAgdGhpcy5ldmVudHMgPSB7fTtcblxuICAgIHZhciAkID0gdGhpcztcblxuICAgIC8qKlxuICAgICAqIE9uIGRyb3AgZXZlbnRcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge01vdXNlRXZlbnR9IGV2ZW50XG4gICAgICovXG4gICAgdGhpcy5vbkRyb3AgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmICgkLm9wdHMub25Ecm9wU3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHZhciBkYXRhVHJhbnNmZXIgPSBldmVudC5kYXRhVHJhbnNmZXI7XG4gICAgICBpZiAoZGF0YVRyYW5zZmVyLml0ZW1zICYmIGRhdGFUcmFuc2Zlci5pdGVtc1swXSAmJlxuICAgICAgICBkYXRhVHJhbnNmZXIuaXRlbXNbMF0ud2Via2l0R2V0QXNFbnRyeSkge1xuICAgICAgICAkLndlYmtpdFJlYWREYXRhVHJhbnNmZXIoZXZlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJC5hZGRGaWxlcyhkYXRhVHJhbnNmZXIuZmlsZXMsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUHJldmVudCBkZWZhdWx0XG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtNb3VzZUV2ZW50fSBldmVudFxuICAgICAqL1xuICAgIHRoaXMucHJldmVudEV2ZW50ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07XG5cblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgb3B0aW9uc1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgdGhpcy5vcHRzID0gRmxvdy5leHRlbmQoe30sIHRoaXMuZGVmYXVsdHMsIG9wdHMgfHwge30pO1xuXG4gIH1cblxuICBGbG93LnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBTZXQgYSBjYWxsYmFjayBmb3IgYW4gZXZlbnQsIHBvc3NpYmxlIGV2ZW50czpcbiAgICAgKiBmaWxlU3VjY2VzcyhmaWxlKSwgZmlsZVByb2dyZXNzKGZpbGUpLCBmaWxlQWRkZWQoZmlsZSwgZXZlbnQpLFxuICAgICAqIGZpbGVSZW1vdmVkKGZpbGUpLCBmaWxlUmV0cnkoZmlsZSksIGZpbGVFcnJvcihmaWxlLCBtZXNzYWdlKSxcbiAgICAgKiBjb21wbGV0ZSgpLCBwcm9ncmVzcygpLCBlcnJvcihtZXNzYWdlLCBmaWxlKSwgcGF1c2UoKVxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gICAgICovXG4gICAgb246IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHtcbiAgICAgIGV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICghdGhpcy5ldmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAgIHRoaXMuZXZlbnRzW2V2ZW50XSA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy5ldmVudHNbZXZlbnRdLnB1c2goY2FsbGJhY2spO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgZXZlbnQgY2FsbGJhY2tcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V2ZW50XSByZW1vdmVzIGFsbCBldmVudHMgaWYgbm90IHNwZWNpZmllZFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl0gcmVtb3ZlcyBhbGwgY2FsbGJhY2tzIG9mIGV2ZW50IGlmIG5vdCBzcGVjaWZpZWRcbiAgICAgKi9cbiAgICBvZmY6IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICAgIGlmIChldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGZuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5ldmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAgICAgICBhcnJheVJlbW92ZSh0aGlzLmV2ZW50c1tldmVudF0sIGZuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRzW2V2ZW50XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ldmVudHMgPSB7fTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmlyZSBhbiBldmVudFxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudCBldmVudCBuYW1lXG4gICAgICogQHBhcmFtIHsuLi59IGFyZ3MgYXJndW1lbnRzIG9mIGEgY2FsbGJhY2tcbiAgICAgKiBAcmV0dXJuIHtib29sfSB2YWx1ZSBpcyBmYWxzZSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGV2ZW50IGhhbmRsZXJzIHdoaWNoIGhhbmRsZWQgdGhpcyBldmVudFxuICAgICAqIHJldHVybmVkIGZhbHNlLiBPdGhlcndpc2UgaXQgcmV0dXJucyB0cnVlLlxuICAgICAqL1xuICAgIGZpcmU6IGZ1bmN0aW9uIChldmVudCwgYXJncykge1xuICAgICAgLy8gYGFyZ3VtZW50c2AgaXMgYW4gb2JqZWN0LCBub3QgYXJyYXksIGluIEZGLCBzbzpcbiAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgZXZlbnQgPSBldmVudC50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFyIHByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5ldmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAgIGVhY2godGhpcy5ldmVudHNbZXZlbnRdLCBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBwcmV2ZW50RGVmYXVsdCA9IGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3Muc2xpY2UoMSkpID09PSBmYWxzZSB8fCBwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgfSwgdGhpcyk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgIT0gJ2NhdGNoYWxsJykge1xuICAgICAgICBhcmdzLnVuc2hpZnQoJ2NhdGNoQWxsJyk7XG4gICAgICAgIHByZXZlbnREZWZhdWx0ID0gdGhpcy5maXJlLmFwcGx5KHRoaXMsIGFyZ3MpID09PSBmYWxzZSB8fCBwcmV2ZW50RGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhcHJldmVudERlZmF1bHQ7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlYWQgd2Via2l0IGRhdGFUcmFuc2ZlciBvYmplY3RcbiAgICAgKiBAcGFyYW0gZXZlbnRcbiAgICAgKi9cbiAgICB3ZWJraXRSZWFkRGF0YVRyYW5zZmVyOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciAkID0gdGhpcztcbiAgICAgIHZhciBxdWV1ZSA9IGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGg7XG4gICAgICB2YXIgZmlsZXMgPSBbXTtcbiAgICAgIGVhY2goZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICB2YXIgZW50cnkgPSBpdGVtLndlYmtpdEdldEFzRW50cnkoKTtcbiAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgIGRlY3JlbWVudCgpO1xuICAgICAgICAgIHJldHVybiA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgIC8vIGR1ZSB0byBhIGJ1ZyBpbiBDaHJvbWUncyBGaWxlIFN5c3RlbSBBUEkgaW1wbCAtICMxNDk3MzVcbiAgICAgICAgICBmaWxlUmVhZFN1Y2Nlc3MoaXRlbS5nZXRBc0ZpbGUoKSwgZW50cnkuZnVsbFBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlYWREaXJlY3RvcnkoZW50cnkuY3JlYXRlUmVhZGVyKCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGZ1bmN0aW9uIHJlYWREaXJlY3RvcnkocmVhZGVyKSB7XG4gICAgICAgIHJlYWRlci5yZWFkRW50cmllcyhmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcXVldWUgKz0gZW50cmllcy5sZW5ndGg7XG4gICAgICAgICAgICBlYWNoKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgICAgICAgIGlmIChlbnRyeS5pc0ZpbGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZnVsbFBhdGggPSBlbnRyeS5mdWxsUGF0aDtcbiAgICAgICAgICAgICAgICBlbnRyeS5maWxlKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgICAgICAgICAgICBmaWxlUmVhZFN1Y2Nlc3MoZmlsZSwgZnVsbFBhdGgpO1xuICAgICAgICAgICAgICAgIH0sIHJlYWRFcnJvcik7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgICAgICAgICByZWFkRGlyZWN0b3J5KGVudHJ5LmNyZWF0ZVJlYWRlcigpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWFkRGlyZWN0b3J5KHJlYWRlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlY3JlbWVudCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgcmVhZEVycm9yKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGZpbGVSZWFkU3VjY2VzcyhmaWxlLCBmdWxsUGF0aCkge1xuICAgICAgICAvLyByZWxhdGl2ZSBwYXRoIHNob3VsZCBub3Qgc3RhcnQgd2l0aCBcIi9cIlxuICAgICAgICBmaWxlLnJlbGF0aXZlUGF0aCA9IGZ1bGxQYXRoLnN1YnN0cmluZygxKTtcbiAgICAgICAgZmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgZGVjcmVtZW50KCk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiByZWFkRXJyb3IoZmlsZUVycm9yKSB7XG4gICAgICAgIHRocm93IGZpbGVFcnJvcjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGRlY3JlbWVudCgpIHtcbiAgICAgICAgaWYgKC0tcXVldWUgPT0gMCkge1xuICAgICAgICAgICQuYWRkRmlsZXMoZmlsZXMsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBmaWxlXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGbG93RmlsZX0gZmlsZVxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgZ2VuZXJhdGVVbmlxdWVJZGVudGlmaWVyOiBmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgdmFyIGN1c3RvbSA9IHRoaXMub3B0cy5nZW5lcmF0ZVVuaXF1ZUlkZW50aWZpZXI7XG4gICAgICBpZiAodHlwZW9mIGN1c3RvbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gY3VzdG9tKGZpbGUpO1xuICAgICAgfVxuICAgICAgLy8gU29tZSBjb25mdXNpb24gaW4gZGlmZmVyZW50IHZlcnNpb25zIG9mIEZpcmVmb3hcbiAgICAgIHZhciByZWxhdGl2ZVBhdGggPSBmaWxlLnJlbGF0aXZlUGF0aCB8fCBmaWxlLndlYmtpdFJlbGF0aXZlUGF0aCB8fCBmaWxlLmZpbGVOYW1lIHx8IGZpbGUubmFtZTtcbiAgICAgIHJldHVybiBmaWxlLnNpemUgKyAnLScgKyByZWxhdGl2ZVBhdGgucmVwbGFjZSgvW14wLTlhLXpBLVpfLV0vaW1nLCAnJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBuZXh0IGNodW5rIGZyb20gdGhlIHF1ZXVlXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICB1cGxvYWROZXh0Q2h1bms6IGZ1bmN0aW9uIChwcmV2ZW50RXZlbnRzKSB7XG4gICAgICAvLyBJbiBzb21lIGNhc2VzIChzdWNoIGFzIHZpZGVvcykgaXQncyByZWFsbHkgaGFuZHkgdG8gdXBsb2FkIHRoZSBmaXJzdFxuICAgICAgLy8gYW5kIGxhc3QgY2h1bmsgb2YgYSBmaWxlIHF1aWNrbHk7IHRoaXMgbGV0J3MgdGhlIHNlcnZlciBjaGVjayB0aGUgZmlsZSdzXG4gICAgICAvLyBtZXRhZGF0YSBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgZXZlbiBhIHBvaW50IGluIGNvbnRpbnVpbmcuXG4gICAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLm9wdHMucHJpb3JpdGl6ZUZpcnN0QW5kTGFzdENodW5rKSB7XG4gICAgICAgIGVhY2godGhpcy5maWxlcywgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgICBpZiAoIWZpbGUucGF1c2VkICYmIGZpbGUuY2h1bmtzLmxlbmd0aCAmJlxuICAgICAgICAgICAgZmlsZS5jaHVua3NbMF0uc3RhdHVzKCkgPT09ICdwZW5kaW5nJykge1xuICAgICAgICAgICAgZmlsZS5jaHVua3NbMF0uc2VuZCgpO1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWZpbGUucGF1c2VkICYmIGZpbGUuY2h1bmtzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgIGZpbGUuY2h1bmtzW2ZpbGUuY2h1bmtzLmxlbmd0aCAtIDFdLnN0YXR1cygpID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgIGZpbGUuY2h1bmtzW2ZpbGUuY2h1bmtzLmxlbmd0aCAtIDFdLnNlbmQoKTtcbiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTm93LCBzaW1wbHkgbG9vayBmb3IgdGhlIG5leHQsIGJlc3QgdGhpbmcgdG8gdXBsb2FkXG4gICAgICBlYWNoKHRoaXMuZmlsZXMsIGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgIGlmICghZmlsZS5wYXVzZWQpIHtcbiAgICAgICAgICBlYWNoKGZpbGUuY2h1bmtzLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgICAgICAgIGlmIChjaHVuay5zdGF0dXMoKSA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICAgIGNodW5rLnNlbmQoKTtcbiAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGFyZSBubyBtb3JlIG91dHN0YW5kaW5nIGNodW5rcyB0byB1cGxvYWQsIGNoZWNrIGlzIGV2ZXJ5dGhpbmcgaXMgZG9uZVxuICAgICAgdmFyIG91dHN0YW5kaW5nID0gZmFsc2U7XG4gICAgICBlYWNoKHRoaXMuZmlsZXMsIGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgIGlmICghZmlsZS5pc0NvbXBsZXRlKCkpIHtcbiAgICAgICAgICBvdXRzdGFuZGluZyA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghb3V0c3RhbmRpbmcgJiYgIXByZXZlbnRFdmVudHMpIHtcbiAgICAgICAgLy8gQWxsIGNodW5rcyBoYXZlIGJlZW4gdXBsb2FkZWQsIGNvbXBsZXRlXG4gICAgICAgIGFzeW5jKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzLmZpcmUoJ2NvbXBsZXRlJyk7XG4gICAgICAgIH0sIHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbiBhIGJyb3dzZSBhY3Rpb24gdG8gb25lIG9yIG1vcmUgRE9NIG5vZGVzLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RWxlbWVudHxBcnJheS48RWxlbWVudD59IGRvbU5vZGVzXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpc0RpcmVjdG9yeSBQYXNzIGluIHRydWUgdG8gYWxsb3cgZGlyZWN0b3JpZXMgdG9cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNpbmdsZUZpbGUgcHJldmVudCBtdWx0aSBmaWxlIHVwbG9hZFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhdHRyaWJ1dGVzIHNldCBjdXN0b20gYXR0cmlidXRlczpcbiAgICAgKiAgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1tYXJrdXAvaW5wdXQuZmlsZS5odG1sI2lucHV0LmZpbGUtYXR0cmlidXRlc1xuICAgICAqICBlZzogYWNjZXB0OiAnaW1hZ2UvKidcbiAgICAgKiBiZSBzZWxlY3RlZCAoQ2hyb21lIG9ubHkpLlxuICAgICAqL1xuICAgIGFzc2lnbkJyb3dzZTogZnVuY3Rpb24gKGRvbU5vZGVzLCBpc0RpcmVjdG9yeSwgc2luZ2xlRmlsZSwgYXR0cmlidXRlcykge1xuICAgICAgaWYgKGRvbU5vZGVzIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICBkb21Ob2RlcyA9IFtkb21Ob2Rlc107XG4gICAgICB9XG5cbiAgICAgIGVhY2goZG9tTm9kZXMsIGZ1bmN0aW9uIChkb21Ob2RlKSB7XG4gICAgICAgIHZhciBpbnB1dDtcbiAgICAgICAgaWYgKGRvbU5vZGUudGFnTmFtZSA9PT0gJ0lOUFVUJyAmJiBkb21Ob2RlLnR5cGUgPT09ICdmaWxlJykge1xuICAgICAgICAgIGlucHV0ID0gZG9tTm9kZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZpbGUnKTtcbiAgICAgICAgICAvLyBkaXNwbGF5Om5vbmUgLSBub3Qgd29ya2luZyBpbiBvcGVyYSAxMlxuICAgICAgICAgIGV4dGVuZChpbnB1dC5zdHlsZSwge1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMXB4JyxcbiAgICAgICAgICAgIGhlaWdodDogJzFweCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBmb3Igb3BlcmEgMTIgYnJvd3NlciwgaW5wdXQgbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRvY3VtZW50XG4gICAgICAgICAgZG9tTm9kZS5hcHBlbmRDaGlsZChpbnB1dCk7XG4gICAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vdXNpbmdfZmlsZXNfZnJvbV93ZWJfYXBwbGljYXRpb25zKVxuICAgICAgICAgIC8vIGV2ZW50IGxpc3RlbmVyIGlzIGV4ZWN1dGVkIHR3byB0aW1lc1xuICAgICAgICAgIC8vIGZpcnN0IG9uZSAtIG9yaWdpbmFsIG1vdXNlIGNsaWNrIGV2ZW50XG4gICAgICAgICAgLy8gc2Vjb25kIC0gaW5wdXQuY2xpY2soKSwgaW5wdXQgaXMgaW5zaWRlIGRvbU5vZGVcbiAgICAgICAgICBkb21Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpbnB1dC5jbGljaygpO1xuICAgICAgICAgIH0sIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMub3B0cy5zaW5nbGVGaWxlICYmICFzaW5nbGVGaWxlKSB7XG4gICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0RpcmVjdG9yeSkge1xuICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnd2Via2l0ZGlyZWN0b3J5JywgJ3dlYmtpdGRpcmVjdG9yeScpO1xuICAgICAgICB9XG4gICAgICAgIGVhY2goYXR0cmlidXRlcywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBXaGVuIG5ldyBmaWxlcyBhcmUgYWRkZWQsIHNpbXBseSBhcHBlbmQgdGhlbSB0byB0aGUgb3ZlcmFsbCBsaXN0XG4gICAgICAgIHZhciAkID0gdGhpcztcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICBcdCAgaWYgKGUudGFyZ2V0LnZhbHVlKSB7XG4gICAgICAgICAgICAkLmFkZEZpbGVzKGUudGFyZ2V0LmZpbGVzLCBlKTtcbiAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gJyc7XG4gICAgICAgXHQgIH1cbiAgICAgICAgfSwgZmFsc2UpO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFzc2lnbiBvbmUgb3IgbW9yZSBET00gbm9kZXMgYXMgYSBkcm9wIHRhcmdldC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR8QXJyYXkuPEVsZW1lbnQ+fSBkb21Ob2Rlc1xuICAgICAqL1xuICAgIGFzc2lnbkRyb3A6IGZ1bmN0aW9uIChkb21Ob2Rlcykge1xuICAgICAgaWYgKHR5cGVvZiBkb21Ob2Rlcy5sZW5ndGggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGRvbU5vZGVzID0gW2RvbU5vZGVzXTtcbiAgICAgIH1cbiAgICAgIGVhY2goZG9tTm9kZXMsIGZ1bmN0aW9uIChkb21Ob2RlKSB7XG4gICAgICAgIGRvbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLnByZXZlbnRFdmVudCwgZmFsc2UpO1xuICAgICAgICBkb21Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMucHJldmVudEV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGRvbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIHRoaXMub25Ecm9wLCBmYWxzZSk7XG4gICAgICB9LCB0aGlzKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVW4tYXNzaWduIGRyb3AgZXZlbnQgZnJvbSBET00gbm9kZXNcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0gZG9tTm9kZXNcbiAgICAgKi9cbiAgICB1bkFzc2lnbkRyb3A6IGZ1bmN0aW9uIChkb21Ob2Rlcykge1xuICAgICAgaWYgKHR5cGVvZiBkb21Ob2Rlcy5sZW5ndGggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGRvbU5vZGVzID0gW2RvbU5vZGVzXTtcbiAgICAgIH1cbiAgICAgIGVhY2goZG9tTm9kZXMsIGZ1bmN0aW9uIChkb21Ob2RlKSB7XG4gICAgICAgIGRvbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLnByZXZlbnRFdmVudCk7XG4gICAgICAgIGRvbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgdGhpcy5wcmV2ZW50RXZlbnQpO1xuICAgICAgICBkb21Ob2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLm9uRHJvcCk7XG4gICAgICB9LCB0aGlzKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgaW5zdGFuY2UgaXMgY3VycmVudGx5XG4gICAgICogdXBsb2FkaW5nIGFueXRoaW5nLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGlzVXBsb2FkaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICBlYWNoKHRoaXMuZmlsZXMsIGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgIGlmIChmaWxlLmlzVXBsb2FkaW5nKCkpIHtcbiAgICAgICAgICB1cGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdXBsb2FkaW5nO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBzaG91bGQgdXBsb2FkIG5leHQgY2h1bmtcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbnxudW1iZXJ9XG4gICAgICovXG4gICAgX3Nob3VsZFVwbG9hZE5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBudW0gPSAwO1xuICAgICAgdmFyIHNob3VsZCA9IHRydWU7XG4gICAgICB2YXIgc2ltdWx0YW5lb3VzVXBsb2FkcyA9IHRoaXMub3B0cy5zaW11bHRhbmVvdXNVcGxvYWRzO1xuICAgICAgZWFjaCh0aGlzLmZpbGVzLCBmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICBlYWNoKGZpbGUuY2h1bmtzLCBmdW5jdGlvbihjaHVuaykge1xuICAgICAgICAgIGlmIChjaHVuay5zdGF0dXMoKSA9PT0gJ3VwbG9hZGluZycpIHtcbiAgICAgICAgICAgIG51bSsrO1xuICAgICAgICAgICAgaWYgKG51bSA+PSBzaW11bHRhbmVvdXNVcGxvYWRzKSB7XG4gICAgICAgICAgICAgIHNob3VsZCA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgLy8gaWYgc2hvdWxkIGlzIHRydWUgdGhlbiByZXR1cm4gdXBsb2FkaW5nIGNodW5rcydzIGxlbmd0aFxuICAgICAgcmV0dXJuIHNob3VsZCAmJiBudW07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFN0YXJ0IG9yIHJlc3VtZSB1cGxvYWRpbmcuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgdXBsb2FkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qgc3RhcnQgdG9vIG1hbnkgdXBsb2FkcyBhdCBvbmNlXG4gICAgICB2YXIgcmV0ID0gdGhpcy5fc2hvdWxkVXBsb2FkTmV4dCgpO1xuICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gS2ljayBvZmYgdGhlIHF1ZXVlXG4gICAgICB0aGlzLmZpcmUoJ3VwbG9hZFN0YXJ0Jyk7XG4gICAgICB2YXIgc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgZm9yICh2YXIgbnVtID0gMTsgbnVtIDw9IHRoaXMub3B0cy5zaW11bHRhbmVvdXNVcGxvYWRzIC0gcmV0OyBudW0rKykge1xuICAgICAgICBzdGFydGVkID0gdGhpcy51cGxvYWROZXh0Q2h1bmsodHJ1ZSkgfHwgc3RhcnRlZDtcbiAgICAgIH1cbiAgICAgIGlmICghc3RhcnRlZCkge1xuICAgICAgICBhc3luYyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdGhpcy5maXJlKCdjb21wbGV0ZScpO1xuICAgICAgICB9LCB0aGlzKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVzdW1lIHVwbG9hZGluZy5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICByZXN1bWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGVhY2godGhpcy5maWxlcywgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgaWYgKCFmaWxlLmlzQ29tcGxldGUoKSkge1xuICAgICAgICAgIGZpbGUucmVzdW1lKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBQYXVzZSB1cGxvYWRpbmcuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgcGF1c2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGVhY2godGhpcy5maWxlcywgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgZmlsZS5wYXVzZSgpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENhbmNlbCB1cGxvYWQgb2YgYWxsIEZsb3dGaWxlIG9iamVjdHMgYW5kIHJlbW92ZSB0aGVtIGZyb20gdGhlIGxpc3QuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgY2FuY2VsOiBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy5maWxlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLmZpbGVzW2ldLmNhbmNlbCgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSBpbmRpY2F0aW5nIHRoZSBjdXJyZW50IHVwbG9hZCBwcm9ncmVzc1xuICAgICAqIG9mIGFsbCBmaWxlcy5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByb2dyZXNzOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdG90YWxEb25lID0gMDtcbiAgICAgIHZhciB0b3RhbFNpemUgPSAwO1xuICAgICAgLy8gUmVzdW1lIGFsbCBjaHVua3MgY3VycmVudGx5IGJlaW5nIHVwbG9hZGVkXG4gICAgICBlYWNoKHRoaXMuZmlsZXMsIGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgIHRvdGFsRG9uZSArPSBmaWxlLnByb2dyZXNzKCkgKiBmaWxlLnNpemU7XG4gICAgICAgIHRvdGFsU2l6ZSArPSBmaWxlLnNpemU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0b3RhbFNpemUgPiAwID8gdG90YWxEb25lIC8gdG90YWxTaXplIDogMDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQWRkIGEgSFRNTDUgRmlsZSBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGaWxlfSBmaWxlXG4gICAgICogQHBhcmFtIHtFdmVudH0gW2V2ZW50XSBldmVudCBpcyBvcHRpb25hbFxuICAgICAqL1xuICAgIGFkZEZpbGU6IGZ1bmN0aW9uIChmaWxlLCBldmVudCkge1xuICAgICAgdGhpcy5hZGRGaWxlcyhbZmlsZV0sIGV2ZW50KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQWRkIGEgSFRNTDUgRmlsZSBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGaWxlTGlzdHxBcnJheX0gZmlsZUxpc3RcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBbZXZlbnRdIGV2ZW50IGlzIG9wdGlvbmFsXG4gICAgICovXG4gICAgYWRkRmlsZXM6IGZ1bmN0aW9uIChmaWxlTGlzdCwgZXZlbnQpIHtcbiAgICAgIHZhciBmaWxlcyA9IFtdO1xuICAgICAgZWFjaChmaWxlTGlzdCwgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb3dqcy9mbG93LmpzL2lzc3Vlcy81NVxuICAgICAgICBpZiAoKCFpZTEwcGx1cyB8fCBpZTEwcGx1cyAmJiBmaWxlLnNpemUgPiAwKSAmJiAhKGZpbGUuc2l6ZSAlIDQwOTYgPT09IDAgJiYgKGZpbGUubmFtZSA9PT0gJy4nIHx8IGZpbGUuZmlsZU5hbWUgPT09ICcuJykpKSB7XG4gICAgICAgICAgdmFyIHVuaXF1ZUlkZW50aWZpZXIgPSB0aGlzLmdlbmVyYXRlVW5pcXVlSWRlbnRpZmllcihmaWxlKTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRzLmFsbG93RHVwbGljYXRlVXBsb2FkcyB8fCAhdGhpcy5nZXRGcm9tVW5pcXVlSWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKSkge1xuICAgICAgICAgICAgdmFyIGYgPSBuZXcgRmxvd0ZpbGUodGhpcywgZmlsZSwgdW5pcXVlSWRlbnRpZmllcik7XG4gICAgICAgICAgICBpZiAodGhpcy5maXJlKCdmaWxlQWRkZWQnLCBmLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgZmlsZXMucHVzaChmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMpO1xuICAgICAgaWYgKHRoaXMuZmlyZSgnZmlsZXNBZGRlZCcsIGZpbGVzLCBldmVudCkpIHtcbiAgICAgICAgZWFjaChmaWxlcywgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgICBpZiAodGhpcy5vcHRzLnNpbmdsZUZpbGUgJiYgdGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUodGhpcy5maWxlc1swXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgfSwgdGhpcyk7XG4gICAgICAgIHRoaXMuZmlyZSgnZmlsZXNTdWJtaXR0ZWQnLCBmaWxlcywgZXZlbnQpO1xuICAgICAgfVxuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqIENhbmNlbCB1cGxvYWQgb2YgYSBzcGVjaWZpYyBGbG93RmlsZSBvYmplY3QgZnJvbSB0aGUgbGlzdC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Zsb3dGaWxlfSBmaWxlXG4gICAgICovXG4gICAgcmVtb3ZlRmlsZTogZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLmZpbGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbGVzW2ldID09PSBmaWxlKSB7XG4gICAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgZmlsZS5hYm9ydCgpO1xuICAgICAgICAgIHRoaXMuZmlyZSgnZmlsZVJlbW92ZWQnLCBmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBMb29rIHVwIGEgRmxvd0ZpbGUgb2JqZWN0IGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllci5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pcXVlSWRlbnRpZmllclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufEZsb3dGaWxlfSBmYWxzZSBpZiBmaWxlIHdhcyBub3QgZm91bmRcbiAgICAgKi9cbiAgICBnZXRGcm9tVW5pcXVlSWRlbnRpZmllcjogZnVuY3Rpb24gKHVuaXF1ZUlkZW50aWZpZXIpIHtcbiAgICAgIHZhciByZXQgPSBmYWxzZTtcbiAgICAgIGVhY2godGhpcy5maWxlcywgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgaWYgKGZpbGUudW5pcXVlSWRlbnRpZmllciA9PT0gdW5pcXVlSWRlbnRpZmllcikge1xuICAgICAgICAgIHJldCA9IGZpbGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdG90YWwgc2l6ZSBvZiBhbGwgZmlsZXMgaW4gYnl0ZXMuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBnZXRTaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdG90YWxTaXplID0gMDtcbiAgICAgIGVhY2godGhpcy5maWxlcywgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgdG90YWxTaXplICs9IGZpbGUuc2l6ZTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRvdGFsU2l6ZTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdG90YWwgc2l6ZSB1cGxvYWRlZCBvZiBhbGwgZmlsZXMgaW4gYnl0ZXMuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBzaXplVXBsb2FkZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzaXplID0gMDtcbiAgICAgIGVhY2godGhpcy5maWxlcywgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgc2l6ZSArPSBmaWxlLnNpemVVcGxvYWRlZCgpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gc2l6ZTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyByZW1haW5pbmcgdGltZSB0byB1cGxvYWQgYWxsIGZpbGVzIGluIHNlY29uZHMuIEFjY3VyYWN5IGlzIGJhc2VkIG9uIGF2ZXJhZ2Ugc3BlZWQuXG4gICAgICogSWYgc3BlZWQgaXMgemVybywgdGltZSByZW1haW5pbmcgd2lsbCBiZSBlcXVhbCB0byBwb3NpdGl2ZSBpbmZpbml0eSBgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZYFxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGltZVJlbWFpbmluZzogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNpemVEZWx0YSA9IDA7XG4gICAgICB2YXIgYXZlcmFnZVNwZWVkID0gMDtcbiAgICAgIGVhY2godGhpcy5maWxlcywgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgaWYgKCFmaWxlLnBhdXNlZCAmJiAhZmlsZS5lcnJvcikge1xuICAgICAgICAgIHNpemVEZWx0YSArPSBmaWxlLnNpemUgLSBmaWxlLnNpemVVcGxvYWRlZCgpO1xuICAgICAgICAgIGF2ZXJhZ2VTcGVlZCArPSBmaWxlLmF2ZXJhZ2VTcGVlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoc2l6ZURlbHRhICYmICFhdmVyYWdlU3BlZWQpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICAgIH1cbiAgICAgIGlmICghc2l6ZURlbHRhICYmICFhdmVyYWdlU3BlZWQpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihzaXplRGVsdGEgLyBhdmVyYWdlU3BlZWQpO1xuICAgIH1cbiAgfTtcblxuXG5cblxuXG5cbiAgLyoqXG4gICAqIEZsb3dGaWxlIGNsYXNzXG4gICAqIEBuYW1lIEZsb3dGaWxlXG4gICAqIEBwYXJhbSB7Rmxvd30gZmxvd09ialxuICAgKiBAcGFyYW0ge0ZpbGV9IGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXF1ZUlkZW50aWZpZXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBmdW5jdGlvbiBGbG93RmlsZShmbG93T2JqLCBmaWxlLCB1bmlxdWVJZGVudGlmaWVyKSB7XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gcGFyZW50IEZsb3cgaW5zdGFuY2VcbiAgICAgKiBAdHlwZSB7Rmxvd31cbiAgICAgKi9cbiAgICB0aGlzLmZsb3dPYmogPSBmbG93T2JqO1xuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBzdG9yZSB0aGUgYnl0ZXMgcmVhZFxuICAgICAqIEB0eXBlIHtCbG9ifHN0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLmJ5dGVzID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byBmaWxlXG4gICAgICogQHR5cGUge0ZpbGV9XG4gICAgICovXG4gICAgdGhpcy5maWxlID0gZmlsZTtcblxuICAgIC8qKlxuICAgICAqIEZpbGUgbmFtZS4gU29tZSBjb25mdXNpb24gaW4gZGlmZmVyZW50IHZlcnNpb25zIG9mIEZpcmVmb3hcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMubmFtZSA9IGZpbGUuZmlsZU5hbWUgfHwgZmlsZS5uYW1lO1xuXG4gICAgLyoqXG4gICAgICogRmlsZSBzaXplXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnNpemUgPSBmaWxlLnNpemU7XG5cbiAgICAvKipcbiAgICAgKiBSZWxhdGl2ZSBmaWxlIHBhdGhcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMucmVsYXRpdmVQYXRoID0gZmlsZS5yZWxhdGl2ZVBhdGggfHwgZmlsZS53ZWJraXRSZWxhdGl2ZVBhdGggfHwgdGhpcy5uYW1lO1xuXG4gICAgLyoqXG4gICAgICogRmlsZSB1bmlxdWUgaWRlbnRpZmllclxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy51bmlxdWVJZGVudGlmaWVyID0gKHVuaXF1ZUlkZW50aWZpZXIgPT09IHVuZGVmaW5lZCA/IGZsb3dPYmouZ2VuZXJhdGVVbmlxdWVJZGVudGlmaWVyKGZpbGUpIDogdW5pcXVlSWRlbnRpZmllcik7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGNodW5rc1xuICAgICAqIEB0eXBlIHtBcnJheS48Rmxvd0NodW5rPn1cbiAgICAgKi9cbiAgICB0aGlzLmNodW5rcyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVkIGlmIGZpbGUgaXMgcGF1c2VkXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlZCBpZiBmaWxlIGhhcyBlbmNvdW50ZXJlZCBhbiBlcnJvclxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEF2ZXJhZ2UgdXBsb2FkIHNwZWVkXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmF2ZXJhZ2VTcGVlZCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHVwbG9hZCBzcGVlZFxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5jdXJyZW50U3BlZWQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSB0aGVuIHByb2dyZXNzIHdhcyBjYWxsZWQgbGFzdCB0aW1lXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuX2xhc3RQcm9ncmVzc0NhbGxiYWNrID0gRGF0ZS5ub3coKTtcblxuICAgIC8qKlxuICAgICAqIFByZXZpb3VzbHkgdXBsb2FkZWQgZmlsZSBzaXplXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuX3ByZXZVcGxvYWRlZFNpemUgPSAwO1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgcHJldmlvdXMgcHJvZ3Jlc3NcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5fcHJldlByb2dyZXNzID0gMDtcblxuICAgIHRoaXMuYm9vdHN0cmFwKCk7XG4gIH1cblxuICBGbG93RmlsZS5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogVXBkYXRlIHNwZWVkIHBhcmFtZXRlcnNcbiAgICAgKiBAbGluayBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI3Nzk2MDAvaG93LXRvLWVzdGltYXRlLWRvd25sb2FkLXRpbWUtcmVtYWluaW5nLWFjY3VyYXRlbHlcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBtZWFzdXJlU3BlZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0aW1lU3BhbiA9IERhdGUubm93KCkgLSB0aGlzLl9sYXN0UHJvZ3Jlc3NDYWxsYmFjaztcbiAgICAgIGlmICghdGltZVNwYW4pIHtcbiAgICAgICAgcmV0dXJuIDtcbiAgICAgIH1cbiAgICAgIHZhciBzbW9vdGhpbmdGYWN0b3IgPSB0aGlzLmZsb3dPYmoub3B0cy5zcGVlZFNtb290aGluZ0ZhY3RvcjtcbiAgICAgIHZhciB1cGxvYWRlZCA9IHRoaXMuc2l6ZVVwbG9hZGVkKCk7XG4gICAgICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHVwbG9hZCBzcGVlZCBhZnRlciBmaWxlIHVwbG9hZCByZXN1bWVcbiAgICAgIHRoaXMuY3VycmVudFNwZWVkID0gTWF0aC5tYXgoKHVwbG9hZGVkIC0gdGhpcy5fcHJldlVwbG9hZGVkU2l6ZSkgLyB0aW1lU3BhbiAqIDEwMDAsIDApO1xuICAgICAgdGhpcy5hdmVyYWdlU3BlZWQgPSBzbW9vdGhpbmdGYWN0b3IgKiB0aGlzLmN1cnJlbnRTcGVlZCArICgxIC0gc21vb3RoaW5nRmFjdG9yKSAqIHRoaXMuYXZlcmFnZVNwZWVkO1xuICAgICAgdGhpcy5fcHJldlVwbG9hZGVkU2l6ZSA9IHVwbG9hZGVkO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBGb3IgaW50ZXJuYWwgdXNhZ2Ugb25seS5cbiAgICAgKiBDYWxsYmFjayB3aGVuIHNvbWV0aGluZyBoYXBwZW5zIHdpdGhpbiB0aGUgY2h1bmsuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGbG93Q2h1bmt9IGNodW5rXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IGNhbiBiZSAncHJvZ3Jlc3MnLCAnc3VjY2VzcycsICdlcnJvcicgb3IgJ3JldHJ5J1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV1cbiAgICAgKi9cbiAgICBjaHVua0V2ZW50OiBmdW5jdGlvbiAoY2h1bmssIGV2ZW50LCBtZXNzYWdlKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICAgIGNhc2UgJ3Byb2dyZXNzJzpcbiAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHRoaXMuX2xhc3RQcm9ncmVzc0NhbGxiYWNrIDxcbiAgICAgICAgICAgIHRoaXMuZmxvd09iai5vcHRzLnByb2dyZXNzQ2FsbGJhY2tzSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm1lYXN1cmVTcGVlZCgpO1xuICAgICAgICAgIHRoaXMuZmxvd09iai5maXJlKCdmaWxlUHJvZ3Jlc3MnLCB0aGlzLCBjaHVuayk7XG4gICAgICAgICAgdGhpcy5mbG93T2JqLmZpcmUoJ3Byb2dyZXNzJyk7XG4gICAgICAgICAgdGhpcy5fbGFzdFByb2dyZXNzQ2FsbGJhY2sgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgdGhpcy5hYm9ydCh0cnVlKTtcbiAgICAgICAgICB0aGlzLmZsb3dPYmouZmlyZSgnZmlsZUVycm9yJywgdGhpcywgbWVzc2FnZSwgY2h1bmspO1xuICAgICAgICAgIHRoaXMuZmxvd09iai5maXJlKCdlcnJvcicsIG1lc3NhZ2UsIHRoaXMsIGNodW5rKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5tZWFzdXJlU3BlZWQoKTtcbiAgICAgICAgICB0aGlzLmZsb3dPYmouZmlyZSgnZmlsZVByb2dyZXNzJywgdGhpcywgY2h1bmspO1xuICAgICAgICAgIHRoaXMuZmxvd09iai5maXJlKCdwcm9ncmVzcycpO1xuICAgICAgICAgIHRoaXMuX2xhc3RQcm9ncmVzc0NhbGxiYWNrID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICBpZiAodGhpcy5pc0NvbXBsZXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwZWVkID0gMDtcbiAgICAgICAgICAgIHRoaXMuYXZlcmFnZVNwZWVkID0gMDtcbiAgICAgICAgICAgIHRoaXMuZmxvd09iai5maXJlKCdmaWxlU3VjY2VzcycsIHRoaXMsIG1lc3NhZ2UsIGNodW5rKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JldHJ5JzpcbiAgICAgICAgICB0aGlzLmZsb3dPYmouZmlyZSgnZmlsZVJldHJ5JywgdGhpcywgY2h1bmspO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBQYXVzZSBmaWxlIHVwbG9hZFxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIHBhdXNlOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWJvcnQoKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVzdW1lIGZpbGUgdXBsb2FkXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgcmVzdW1lOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLmZsb3dPYmoudXBsb2FkKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFib3J0IGN1cnJlbnQgdXBsb2FkXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgYWJvcnQ6IGZ1bmN0aW9uIChyZXNldCkge1xuICAgICAgdGhpcy5jdXJyZW50U3BlZWQgPSAwO1xuICAgICAgdGhpcy5hdmVyYWdlU3BlZWQgPSAwO1xuICAgICAgdmFyIGNodW5rcyA9IHRoaXMuY2h1bmtzO1xuICAgICAgaWYgKHJlc2V0KSB7XG4gICAgICAgIHRoaXMuY2h1bmtzID0gW107XG4gICAgICB9XG4gICAgICBlYWNoKGNodW5rcywgZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgaWYgKGMuc3RhdHVzKCkgPT09ICd1cGxvYWRpbmcnKSB7XG4gICAgICAgICAgYy5hYm9ydCgpO1xuICAgICAgICAgIHRoaXMuZmxvd09iai51cGxvYWROZXh0Q2h1bmsoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBjdXJyZW50IHVwbG9hZCBhbmQgcmVtb3ZlIGZyb20gYSBsaXN0XG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgY2FuY2VsOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmZsb3dPYmoucmVtb3ZlRmlsZSh0aGlzKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0cnkgYWJvcnRlZCBmaWxlIHVwbG9hZFxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIHJldHJ5OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJvb3RzdHJhcCgpO1xuICAgICAgdGhpcy5mbG93T2JqLnVwbG9hZCgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBjdXJyZW50IGNodW5rcyBhbmQgc2xpY2UgZmlsZSBhZ2FpblxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIGJvb3RzdHJhcDogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmZsb3dPYmoub3B0cy5pbml0RmlsZUZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhpcy5mbG93T2JqLm9wdHMuaW5pdEZpbGVGbih0aGlzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hYm9ydCh0cnVlKTtcbiAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICAgIC8vIFJlYnVpbGQgc3RhY2sgb2YgY2h1bmtzIGZyb20gZmlsZVxuICAgICAgdGhpcy5fcHJldlByb2dyZXNzID0gMDtcbiAgICAgIHZhciByb3VuZCA9IHRoaXMuZmxvd09iai5vcHRzLmZvcmNlQ2h1bmtTaXplID8gTWF0aC5jZWlsIDogTWF0aC5mbG9vcjtcbiAgICAgIHZhciBjaHVua3MgPSBNYXRoLm1heChcbiAgICAgICAgcm91bmQodGhpcy5zaXplIC8gdGhpcy5mbG93T2JqLm9wdHMuY2h1bmtTaXplKSwgMVxuICAgICAgKTtcbiAgICAgIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IGNodW5rczsgb2Zmc2V0KyspIHtcbiAgICAgICAgdGhpcy5jaHVua3MucHVzaChcbiAgICAgICAgICBuZXcgRmxvd0NodW5rKHRoaXMuZmxvd09iaiwgdGhpcywgb2Zmc2V0KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCB1cGxvYWQgcHJvZ3Jlc3Mgc3RhdHVzXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge251bWJlcn0gZnJvbSAwIHRvIDFcbiAgICAgKi9cbiAgICBwcm9ncmVzczogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jaHVua3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHRoaXMuX3ByZXZQcm9ncmVzcyA9IE1hdGgubWF4KHRoaXMuX3ByZXZQcm9ncmVzcywgdGhpcy5jaHVua3NbMF0ucHJvZ3Jlc3MoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmV2UHJvZ3Jlc3M7XG4gICAgICB9XG4gICAgICAvLyBTdW0gdXAgcHJvZ3Jlc3MgYWNyb3NzIGV2ZXJ5dGhpbmdcbiAgICAgIHZhciBieXRlc0xvYWRlZCA9IDA7XG4gICAgICBlYWNoKHRoaXMuY2h1bmtzLCBmdW5jdGlvbiAoYykge1xuICAgICAgICAvLyBnZXQgY2h1bmsgcHJvZ3Jlc3MgcmVsYXRpdmUgdG8gZW50aXJlIGZpbGVcbiAgICAgICAgYnl0ZXNMb2FkZWQgKz0gYy5wcm9ncmVzcygpICogKGMuZW5kQnl0ZSAtIGMuc3RhcnRCeXRlKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHBlcmNlbnQgPSBieXRlc0xvYWRlZCAvIHRoaXMuc2l6ZTtcbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbG9zZSBwZXJjZW50YWdlcyB3aGVuIGFuIHVwbG9hZCBpcyBwYXVzZWRcbiAgICAgIHRoaXMuX3ByZXZQcm9ncmVzcyA9IE1hdGgubWF4KHRoaXMuX3ByZXZQcm9ncmVzcywgcGVyY2VudCA+IDAuOTk5OSA/IDEgOiBwZXJjZW50KTtcbiAgICAgIHJldHVybiB0aGlzLl9wcmV2UHJvZ3Jlc3M7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBpZiBmaWxlIGlzIGJlaW5nIHVwbG9hZGVkIGF0IHRoZSBtb21lbnRcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBpc1VwbG9hZGluZzogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgZWFjaCh0aGlzLmNodW5rcywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICAgIGlmIChjaHVuay5zdGF0dXMoKSA9PT0gJ3VwbG9hZGluZycpIHtcbiAgICAgICAgICB1cGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdXBsb2FkaW5nO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgaWYgZmlsZSBpcyBoYXMgZmluaXNoZWQgdXBsb2FkaW5nIGFuZCByZWNlaXZlZCBhIHJlc3BvbnNlXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNDb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG91dHN0YW5kaW5nID0gZmFsc2U7XG4gICAgICBlYWNoKHRoaXMuY2h1bmtzLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgICAgdmFyIHN0YXR1cyA9IGNodW5rLnN0YXR1cygpO1xuICAgICAgICBpZiAoc3RhdHVzID09PSAncGVuZGluZycgfHwgc3RhdHVzID09PSAndXBsb2FkaW5nJyB8fCBzdGF0dXMgPT09ICdyZWFkaW5nJyB8fCBjaHVuay5wcmVwcm9jZXNzU3RhdGUgPT09IDEgfHwgY2h1bmsucmVhZFN0YXRlID09PSAxKSB7XG4gICAgICAgICAgb3V0c3RhbmRpbmcgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gIW91dHN0YW5kaW5nO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb3VudCB0b3RhbCBzaXplIHVwbG9hZGVkXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBzaXplVXBsb2FkZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzaXplID0gMDtcbiAgICAgIGVhY2godGhpcy5jaHVua3MsIGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgICBzaXplICs9IGNodW5rLnNpemVVcGxvYWRlZCgpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gc2l6ZTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyByZW1haW5pbmcgdGltZSB0byBmaW5pc2ggdXBsb2FkIGZpbGUgaW4gc2Vjb25kcy4gQWNjdXJhY3kgaXMgYmFzZWQgb24gYXZlcmFnZSBzcGVlZC5cbiAgICAgKiBJZiBzcGVlZCBpcyB6ZXJvLCB0aW1lIHJlbWFpbmluZyB3aWxsIGJlIGVxdWFsIHRvIHBvc2l0aXZlIGluZmluaXR5IGBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlgXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICB0aW1lUmVtYWluaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcy5wYXVzZWQgfHwgdGhpcy5lcnJvcikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHZhciBkZWx0YSA9IHRoaXMuc2l6ZSAtIHRoaXMuc2l6ZVVwbG9hZGVkKCk7XG4gICAgICBpZiAoZGVsdGEgJiYgIXRoaXMuYXZlcmFnZVNwZWVkKSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgICB9XG4gICAgICBpZiAoIWRlbHRhICYmICF0aGlzLmF2ZXJhZ2VTcGVlZCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGRlbHRhIC8gdGhpcy5hdmVyYWdlU3BlZWQpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgZmlsZSB0eXBlXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cbiAgICBnZXRUeXBlOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWxlLnR5cGUgJiYgdGhpcy5maWxlLnR5cGUuc3BsaXQoJy8nKVsxXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogR2V0IGZpbGUgZXh0ZW5zaW9uXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cbiAgICBnZXRFeHRlbnNpb246IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzLm5hbWUuc3Vic3RyKCh+LXRoaXMubmFtZS5sYXN0SW5kZXhPZihcIi5cIikgPj4+IDApICsgMikudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcmVhZCBmdW5jdGlvbiB1c2luZyB0aGUgd2ViQVBJXG4gICAqXG4gICAqIEBmdW5jdGlvbiB3ZWJBUElGaWxlUmVhZChmaWxlT2JqLCBzdGFydEJ5dGUsIGVuZEJ5dGUsIGZpbGVUeXBlLCBjaHVuaylcbiAgICpcbiAgICovXG4gIGZ1bmN0aW9uIHdlYkFQSUZpbGVSZWFkKGZpbGVPYmosIHN0YXJ0Qnl0ZSwgZW5kQnl0ZSwgZmlsZVR5cGUsIGNodW5rKSB7XG4gICAgdmFyIGZ1bmN0aW9uX25hbWUgPSAnc2xpY2UnO1xuXG4gICAgaWYgKGZpbGVPYmouZmlsZS5zbGljZSlcbiAgICAgIGZ1bmN0aW9uX25hbWUgPSAgJ3NsaWNlJztcbiAgICBlbHNlIGlmIChmaWxlT2JqLmZpbGUubW96U2xpY2UpXG4gICAgICBmdW5jdGlvbl9uYW1lID0gJ21velNsaWNlJztcbiAgICBlbHNlIGlmIChmaWxlT2JqLmZpbGUud2Via2l0U2xpY2UpXG4gICAgICBmdW5jdGlvbl9uYW1lID0gJ3dlYmtpdFNsaWNlJztcblxuICAgIGNodW5rLnJlYWRGaW5pc2hlZChmaWxlT2JqLmZpbGVbZnVuY3Rpb25fbmFtZV0oc3RhcnRCeXRlLCBlbmRCeXRlLCBmaWxlVHlwZSkpO1xuICB9XG5cblxuICAvKipcbiAgICogQ2xhc3MgZm9yIHN0b3JpbmcgYSBzaW5nbGUgY2h1bmtcbiAgICogQG5hbWUgRmxvd0NodW5rXG4gICAqIEBwYXJhbSB7Rmxvd30gZmxvd09ialxuICAgKiBAcGFyYW0ge0Zsb3dGaWxlfSBmaWxlT2JqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBmdW5jdGlvbiBGbG93Q2h1bmsoZmxvd09iaiwgZmlsZU9iaiwgb2Zmc2V0KSB7XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gcGFyZW50IGZsb3cgb2JqZWN0XG4gICAgICogQHR5cGUge0Zsb3d9XG4gICAgICovXG4gICAgdGhpcy5mbG93T2JqID0gZmxvd09iajtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byBwYXJlbnQgRmxvd0ZpbGUgb2JqZWN0XG4gICAgICogQHR5cGUge0Zsb3dGaWxlfVxuICAgICAqL1xuICAgIHRoaXMuZmlsZU9iaiA9IGZpbGVPYmo7XG5cbiAgICAvKipcbiAgICAgKiBGaWxlIG9mZnNldFxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgaWYgY2h1bmsgZXhpc3RlbmNlIHdhcyBjaGVja2VkIG9uIHRoZSBzZXJ2ZXJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLnRlc3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHJldHJpZXMgcGVyZm9ybWVkXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnJldHJpZXMgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUGVuZGluZyByZXRyeVxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMucGVuZGluZ1JldHJ5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBQcmVwcm9jZXNzIHN0YXRlXG4gICAgICogQHR5cGUge251bWJlcn0gMCA9IHVucHJvY2Vzc2VkLCAxID0gcHJvY2Vzc2luZywgMiA9IGZpbmlzaGVkXG4gICAgICovXG4gICAgdGhpcy5wcmVwcm9jZXNzU3RhdGUgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUmVhZCBzdGF0ZVxuICAgICAqIEB0eXBlIHtudW1iZXJ9IDAgPSBub3QgcmVhZCwgMSA9IHJlYWRpbmcsIDIgPSBmaW5pc2hlZFxuICAgICAqL1xuICAgIHRoaXMucmVhZFN0YXRlID0gMDtcblxuXG4gICAgLyoqXG4gICAgICogQnl0ZXMgdHJhbnNmZXJyZWQgZnJvbSB0b3RhbCByZXF1ZXN0IHNpemVcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMubG9hZGVkID0gMDtcblxuICAgIC8qKlxuICAgICAqIFRvdGFsIHJlcXVlc3Qgc2l6ZVxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy50b3RhbCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBTaXplIG9mIGEgY2h1bmtcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuY2h1bmtTaXplID0gdGhpcy5mbG93T2JqLm9wdHMuY2h1bmtTaXplO1xuXG4gICAgLyoqXG4gICAgICogQ2h1bmsgc3RhcnQgYnl0ZSBpbiBhIGZpbGVcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuc3RhcnRCeXRlID0gdGhpcy5vZmZzZXQgKiB0aGlzLmNodW5rU2l6ZTtcblxuICAgIC8qKlxuICAgICAgKiBDb21wdXRlIHRoZSBlbmRieXRlIGluIGEgZmlsZVxuICAgICAgKlxuICAgICAgKi9cbiAgICB0aGlzLmNvbXB1dGVFbmRCeXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZW5kQnl0ZSA9IE1hdGgubWluKHRoaXMuZmlsZU9iai5zaXplLCAodGhpcy5vZmZzZXQgKyAxKSAqIHRoaXMuY2h1bmtTaXplKTtcbiAgICAgIGlmICh0aGlzLmZpbGVPYmouc2l6ZSAtIGVuZEJ5dGUgPCB0aGlzLmNodW5rU2l6ZSAmJiAhdGhpcy5mbG93T2JqLm9wdHMuZm9yY2VDaHVua1NpemUpIHtcbiAgICAgICAgLy8gVGhlIGxhc3QgY2h1bmsgd2lsbCBiZSBiaWdnZXIgdGhhbiB0aGUgY2h1bmsgc2l6ZSxcbiAgICAgICAgLy8gYnV0IGxlc3MgdGhhbiAyICogdGhpcy5jaHVua1NpemVcbiAgICAgICAgZW5kQnl0ZSA9IHRoaXMuZmlsZU9iai5zaXplO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVuZEJ5dGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2h1bmsgZW5kIGJ5dGUgaW4gYSBmaWxlXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmVuZEJ5dGUgPSB0aGlzLmNvbXB1dGVFbmRCeXRlKCk7XG5cbiAgICAvKipcbiAgICAgKiBYTUxIdHRwUmVxdWVzdFxuICAgICAqIEB0eXBlIHtYTUxIdHRwUmVxdWVzdH1cbiAgICAgKi9cbiAgICB0aGlzLnhociA9IG51bGw7XG5cbiAgICB2YXIgJCA9IHRoaXM7XG5cbiAgICAvKipcbiAgICAgKiBTZW5kIGNodW5rIGV2ZW50XG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICogQHBhcmFtIHsuLi59IGFyZ3MgYXJndW1lbnRzIG9mIGEgY2FsbGJhY2tcbiAgICAgKi9cbiAgICB0aGlzLmV2ZW50ID0gZnVuY3Rpb24gKGV2ZW50LCBhcmdzKSB7XG4gICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgIGFyZ3MudW5zaGlmdCgkKTtcbiAgICAgICQuZmlsZU9iai5jaHVua0V2ZW50LmFwcGx5KCQuZmlsZU9iaiwgYXJncyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDYXRjaCBwcm9ncmVzcyBldmVudFxuICAgICAqIEBwYXJhbSB7UHJvZ3Jlc3NFdmVudH0gZXZlbnRcbiAgICAgKi9cbiAgICB0aGlzLnByb2dyZXNzSGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQubGVuZ3RoQ29tcHV0YWJsZSkge1xuICAgICAgICAkLmxvYWRlZCA9IGV2ZW50LmxvYWRlZCA7XG4gICAgICAgICQudG90YWwgPSBldmVudC50b3RhbDtcbiAgICAgIH1cbiAgICAgICQuZXZlbnQoJ3Byb2dyZXNzJywgZXZlbnQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDYXRjaCB0ZXN0IGV2ZW50XG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICAgKi9cbiAgICB0aGlzLnRlc3RIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIHZhciBzdGF0dXMgPSAkLnN0YXR1cyh0cnVlKTtcbiAgICAgIGlmIChzdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICAgICAgJC5ldmVudChzdGF0dXMsICQubWVzc2FnZSgpKTtcbiAgICAgICAgJC5mbG93T2JqLnVwbG9hZE5leHRDaHVuaygpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAkLnRlc3RlZCA9IHRydWU7XG4gICAgICAgICQuZXZlbnQoc3RhdHVzLCAkLm1lc3NhZ2UoKSk7XG4gICAgICAgICQuZmxvd09iai51cGxvYWROZXh0Q2h1bmsoKTtcbiAgICAgIH0gZWxzZSBpZiAoISQuZmlsZU9iai5wYXVzZWQpIHtcbiAgICAgICAgLy8gRXJyb3IgbWlnaHQgYmUgY2F1c2VkIGJ5IGZpbGUgcGF1c2UgbWV0aG9kXG4gICAgICAgIC8vIENodW5rcyBkb2VzIG5vdCBleGlzdCBvbiB0aGUgc2VydmVyIHNpZGVcbiAgICAgICAgJC50ZXN0ZWQgPSB0cnVlO1xuICAgICAgICAkLnNlbmQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIGhhcyBzdG9wcGVkXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICAgKi9cbiAgICB0aGlzLmRvbmVIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIHZhciBzdGF0dXMgPSAkLnN0YXR1cygpO1xuICAgICAgaWYgKHN0YXR1cyA9PT0gJ3N1Y2Nlc3MnIHx8IHN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgICAgICBkZWxldGUgdGhpcy5kYXRhO1xuICAgICAgICAkLmV2ZW50KHN0YXR1cywgJC5tZXNzYWdlKCkpO1xuICAgICAgICAkLmZsb3dPYmoudXBsb2FkTmV4dENodW5rKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkLmV2ZW50KCdyZXRyeScsICQubWVzc2FnZSgpKTtcbiAgICAgICAgJC5wZW5kaW5nUmV0cnkgPSB0cnVlO1xuICAgICAgICAkLmFib3J0KCk7XG4gICAgICAgICQucmV0cmllcysrO1xuICAgICAgICB2YXIgcmV0cnlJbnRlcnZhbCA9ICQuZmxvd09iai5vcHRzLmNodW5rUmV0cnlJbnRlcnZhbDtcbiAgICAgICAgaWYgKHJldHJ5SW50ZXJ2YWwgIT09IG51bGwpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICQuc2VuZCgpO1xuICAgICAgICAgIH0sIHJldHJ5SW50ZXJ2YWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICQuc2VuZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIEZsb3dDaHVuay5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogR2V0IHBhcmFtcyBmb3IgYSByZXF1ZXN0XG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgZ2V0UGFyYW1zOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmbG93Q2h1bmtOdW1iZXI6IHRoaXMub2Zmc2V0ICsgMSxcbiAgICAgICAgZmxvd0NodW5rU2l6ZTogdGhpcy5mbG93T2JqLm9wdHMuY2h1bmtTaXplLFxuICAgICAgICBmbG93Q3VycmVudENodW5rU2l6ZTogdGhpcy5lbmRCeXRlIC0gdGhpcy5zdGFydEJ5dGUsXG4gICAgICAgIGZsb3dUb3RhbFNpemU6IHRoaXMuZmlsZU9iai5zaXplLFxuICAgICAgICBmbG93SWRlbnRpZmllcjogdGhpcy5maWxlT2JqLnVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgIGZsb3dGaWxlbmFtZTogdGhpcy5maWxlT2JqLm5hbWUsXG4gICAgICAgIGZsb3dSZWxhdGl2ZVBhdGg6IHRoaXMuZmlsZU9iai5yZWxhdGl2ZVBhdGgsXG4gICAgICAgIGZsb3dUb3RhbENodW5rczogdGhpcy5maWxlT2JqLmNodW5rcy5sZW5ndGhcbiAgICAgIH07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldCB0YXJnZXQgb3B0aW9uIHdpdGggcXVlcnkgcGFyYW1zXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHBhcmFtc1xuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgZ2V0VGFyZ2V0OiBmdW5jdGlvbih0YXJnZXQsIHBhcmFtcyl7XG4gICAgICBpZiAocGFyYW1zLmxlbmd0aCA9PSAwKSB7XG5cdHJldHVybiB0YXJnZXQ7XG4gICAgICB9XG5cbiAgICAgIGlmKHRhcmdldC5pbmRleE9mKCc/JykgPCAwKSB7XG4gICAgICAgIHRhcmdldCArPSAnPyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXQgKz0gJyYnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldCArIHBhcmFtcy5qb2luKCcmJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE1ha2VzIGEgR0VUIHJlcXVlc3Qgd2l0aG91dCBhbnkgZGF0YSB0byBzZWUgaWYgdGhlIGNodW5rIGhhcyBhbHJlYWR5XG4gICAgICogYmVlbiB1cGxvYWRlZCBpbiBhIHByZXZpb3VzIHNlc3Npb25cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICB0ZXN0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTZXQgdXAgcmVxdWVzdCBhbmQgbGlzdGVuIGZvciBldmVudFxuICAgICAgdGhpcy54aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgIHRoaXMueGhyLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHRoaXMudGVzdEhhbmRsZXIsIGZhbHNlKTtcbiAgICAgIHRoaXMueGhyLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCB0aGlzLnRlc3RIYW5kbGVyLCBmYWxzZSk7XG4gICAgICB2YXIgdGVzdE1ldGhvZCA9IGV2YWxPcHRzKHRoaXMuZmxvd09iai5vcHRzLnRlc3RNZXRob2QsIHRoaXMuZmlsZU9iaiwgdGhpcyk7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMucHJlcGFyZVhoclJlcXVlc3QodGVzdE1ldGhvZCwgdHJ1ZSk7XG4gICAgICB0aGlzLnhoci5zZW5kKGRhdGEpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBGaW5pc2ggcHJlcHJvY2VzcyBzdGF0ZVxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIHByZXByb2Nlc3NGaW5pc2hlZDogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUmUtY29tcHV0ZSB0aGUgZW5kQnl0ZSBhZnRlciB0aGUgcHJlcHJvY2VzcyBmdW5jdGlvbiB0byBhbGxvdyBhblxuICAgICAgLy8gaW1wbGVtZW50ZXIgb2YgcHJlcHJvY2VzcyB0byBzZXQgdGhlIGZpbGVPYmogc2l6ZVxuICAgICAgdGhpcy5lbmRCeXRlID0gdGhpcy5jb21wdXRlRW5kQnl0ZSgpO1xuXG4gICAgICB0aGlzLnByZXByb2Nlc3NTdGF0ZSA9IDI7XG4gICAgICB0aGlzLnNlbmQoKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmluaXNoIHJlYWQgc3RhdGVcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICByZWFkRmluaXNoZWQ6IGZ1bmN0aW9uIChieXRlcykge1xuICAgICAgdGhpcy5yZWFkU3RhdGUgPSAyO1xuICAgICAgdGhpcy5ieXRlcyA9IGJ5dGVzO1xuICAgICAgdGhpcy5zZW5kKCk7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkcyB0aGUgYWN0dWFsIGRhdGEgaW4gYSBQT1NUIGNhbGxcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBzZW5kOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcHJlcHJvY2VzcyA9IHRoaXMuZmxvd09iai5vcHRzLnByZXByb2Nlc3M7XG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZmxvd09iai5vcHRzLnJlYWRGaWxlRm47XG4gICAgICBpZiAodHlwZW9mIHByZXByb2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnByZXByb2Nlc3NTdGF0ZSkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc1N0YXRlID0gMTtcbiAgICAgICAgICAgIHByZXByb2Nlc3ModGhpcyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHRoaXMucmVhZFN0YXRlKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICB0aGlzLnJlYWRTdGF0ZSA9IDE7XG4gICAgICAgICAgcmVhZCh0aGlzLmZpbGVPYmosIHRoaXMuc3RhcnRCeXRlLCB0aGlzLmVuZEJ5dGUsIHRoaXMuZmlsZU9iai5maWxlLnR5cGUsIHRoaXMpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZsb3dPYmoub3B0cy50ZXN0Q2h1bmtzICYmICF0aGlzLnRlc3RlZCkge1xuICAgICAgICB0aGlzLnRlc3QoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxvYWRlZCA9IDA7XG4gICAgICB0aGlzLnRvdGFsID0gMDtcbiAgICAgIHRoaXMucGVuZGluZ1JldHJ5ID0gZmFsc2U7XG5cbiAgICAgIC8vIFNldCB1cCByZXF1ZXN0IGFuZCBsaXN0ZW4gZm9yIGV2ZW50XG4gICAgICB0aGlzLnhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgdGhpcy54aHIudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdGhpcy5wcm9ncmVzc0hhbmRsZXIsIGZhbHNlKTtcbiAgICAgIHRoaXMueGhyLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHRoaXMuZG9uZUhhbmRsZXIsIGZhbHNlKTtcbiAgICAgIHRoaXMueGhyLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCB0aGlzLmRvbmVIYW5kbGVyLCBmYWxzZSk7XG5cbiAgICAgIHZhciB1cGxvYWRNZXRob2QgPSBldmFsT3B0cyh0aGlzLmZsb3dPYmoub3B0cy51cGxvYWRNZXRob2QsIHRoaXMuZmlsZU9iaiwgdGhpcyk7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMucHJlcGFyZVhoclJlcXVlc3QodXBsb2FkTWV0aG9kLCBmYWxzZSwgdGhpcy5mbG93T2JqLm9wdHMubWV0aG9kLCB0aGlzLmJ5dGVzKTtcbiAgICAgIHRoaXMueGhyLnNlbmQoZGF0YSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFib3J0IGN1cnJlbnQgeGhyIHJlcXVlc3RcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBhYm9ydDogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQWJvcnQgYW5kIHJlc2V0XG4gICAgICB2YXIgeGhyID0gdGhpcy54aHI7XG4gICAgICB0aGlzLnhociA9IG51bGw7XG4gICAgICBpZiAoeGhyKSB7XG4gICAgICAgIHhoci5hYm9ydCgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZSBjdXJyZW50IGNodW5rIHVwbG9hZCBzdGF0dXNcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSAncGVuZGluZycsICd1cGxvYWRpbmcnLCAnc3VjY2VzcycsICdlcnJvcidcbiAgICAgKi9cbiAgICBzdGF0dXM6IGZ1bmN0aW9uIChpc1Rlc3QpIHtcbiAgICAgIGlmICh0aGlzLnJlYWRTdGF0ZSA9PT0gMSkge1xuICAgICAgICByZXR1cm4gJ3JlYWRpbmcnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlbmRpbmdSZXRyeSB8fCB0aGlzLnByZXByb2Nlc3NTdGF0ZSA9PT0gMSkge1xuICAgICAgICAvLyBpZiBwZW5kaW5nIHJldHJ5IHRoZW4gdGhhdCdzIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIGFjdGl2ZWx5IHVwbG9hZGluZyxcbiAgICAgICAgLy8gdGhlcmUgbWlnaHQganVzdCBiZSBhIHNsaWdodCBkZWxheSBiZWZvcmUgdGhlIHJldHJ5IHN0YXJ0c1xuICAgICAgICByZXR1cm4gJ3VwbG9hZGluZyc7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnhocikge1xuICAgICAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnhoci5yZWFkeVN0YXRlIDwgNCkge1xuICAgICAgICAvLyBTdGF0dXMgaXMgcmVhbGx5ICdPUEVORUQnLCAnSEVBREVSU19SRUNFSVZFRCdcbiAgICAgICAgLy8gb3IgJ0xPQURJTkcnIC0gbWVhbmluZyB0aGF0IHN0dWZmIGlzIGhhcHBlbmluZ1xuICAgICAgICByZXR1cm4gJ3VwbG9hZGluZyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5mbG93T2JqLm9wdHMuc3VjY2Vzc1N0YXR1c2VzLmluZGV4T2YodGhpcy54aHIuc3RhdHVzKSA+IC0xKSB7XG4gICAgICAgICAgLy8gSFRUUCAyMDAsIHBlcmZlY3Rcblx0XHQgICAgICAvLyBIVFRQIDIwMiBBY2NlcHRlZCAtIFRoZSByZXF1ZXN0IGhhcyBiZWVuIGFjY2VwdGVkIGZvciBwcm9jZXNzaW5nLCBidXQgdGhlIHByb2Nlc3NpbmcgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZC5cbiAgICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmxvd09iai5vcHRzLnBlcm1hbmVudEVycm9ycy5pbmRleE9mKHRoaXMueGhyLnN0YXR1cykgPiAtMSB8fFxuICAgICAgICAgICAgIWlzVGVzdCAmJiB0aGlzLnJldHJpZXMgPj0gdGhpcy5mbG93T2JqLm9wdHMubWF4Q2h1bmtSZXRyaWVzKSB7XG4gICAgICAgICAgLy8gSFRUUCA0MTMvNDE1LzUwMC81MDEsIHBlcm1hbmVudCBlcnJvclxuICAgICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgYnV0IHdlJ2xsIHJlc2V0IGFuZCBxdWV1ZSBhIHJldHJ5XG4gICAgICAgICAgLy8gYSBsaWtlbHkgY2FzZSBmb3IgdGhpcyB3b3VsZCBiZSA1MDMgc2VydmljZSB1bmF2YWlsYWJsZVxuICAgICAgICAgIHRoaXMuYWJvcnQoKTtcbiAgICAgICAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldCByZXNwb25zZSBmcm9tIHhociByZXF1ZXN0XG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge1N0cmluZ31cbiAgICAgKi9cbiAgICBtZXNzYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy54aHIgPyB0aGlzLnhoci5yZXNwb25zZVRleHQgOiAnJztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogR2V0IHVwbG9hZCBwcm9ncmVzc1xuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgcHJvZ3Jlc3M6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdSZXRyeSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHZhciBzID0gdGhpcy5zdGF0dXMoKTtcbiAgICAgIGlmIChzID09PSAnc3VjY2VzcycgfHwgcyA9PT0gJ2Vycm9yJykge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSBpZiAocyA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWwgPiAwID8gdGhpcy5sb2FkZWQgLyB0aGlzLnRvdGFsIDogMDtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ291bnQgdG90YWwgc2l6ZSB1cGxvYWRlZFxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgc2l6ZVVwbG9hZGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc2l6ZSA9IHRoaXMuZW5kQnl0ZSAtIHRoaXMuc3RhcnRCeXRlO1xuICAgICAgLy8gY2FuJ3QgcmV0dXJuIG9ubHkgY2h1bmsubG9hZGVkIHZhbHVlLCBiZWNhdXNlIGl0IGlzIGJpZ2dlciB0aGFuIGNodW5rIHNpemVcbiAgICAgIGlmICh0aGlzLnN0YXR1cygpICE9PSAnc3VjY2VzcycpIHtcbiAgICAgICAgc2l6ZSA9IHRoaXMucHJvZ3Jlc3MoKSAqIHNpemU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2l6ZTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUHJlcGFyZSBYaHIgcmVxdWVzdC4gU2V0IHF1ZXJ5LCBoZWFkZXJzIGFuZCBkYXRhXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCBHRVQgb3IgUE9TVFxuICAgICAqIEBwYXJhbSB7Ym9vbH0gaXNUZXN0IGlzIHRoaXMgYSB0ZXN0IHJlcXVlc3RcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3BhcmFtc01ldGhvZF0gb2N0ZXQgb3IgZm9ybVxuICAgICAqIEBwYXJhbSB7QmxvYn0gW2Jsb2JdIHRvIHNlbmRcbiAgICAgKiBAcmV0dXJucyB7Rm9ybURhdGF8QmxvYnxOdWxsfSBkYXRhIHRvIHNlbmRcbiAgICAgKi9cbiAgICBwcmVwYXJlWGhyUmVxdWVzdDogZnVuY3Rpb24obWV0aG9kLCBpc1Rlc3QsIHBhcmFtc01ldGhvZCwgYmxvYikge1xuICAgICAgLy8gQWRkIGRhdGEgZnJvbSB0aGUgcXVlcnkgb3B0aW9uc1xuICAgICAgdmFyIHF1ZXJ5ID0gZXZhbE9wdHModGhpcy5mbG93T2JqLm9wdHMucXVlcnksIHRoaXMuZmlsZU9iaiwgdGhpcywgaXNUZXN0KTtcbiAgICAgIHF1ZXJ5ID0gZXh0ZW5kKHF1ZXJ5IHx8IHt9LCB0aGlzLmdldFBhcmFtcygpKTtcblxuICAgICAgdmFyIHRhcmdldCA9IGV2YWxPcHRzKHRoaXMuZmxvd09iai5vcHRzLnRhcmdldCwgdGhpcy5maWxlT2JqLCB0aGlzLCBpc1Rlc3QpO1xuICAgICAgdmFyIGRhdGEgPSBudWxsO1xuICAgICAgaWYgKG1ldGhvZCA9PT0gJ0dFVCcgfHwgcGFyYW1zTWV0aG9kID09PSAnb2N0ZXQnKSB7XG4gICAgICAgIC8vIEFkZCBkYXRhIGZyb20gdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICAgICAgdmFyIHBhcmFtcyA9IFtdO1xuICAgICAgICBlYWNoKHF1ZXJ5LCBmdW5jdGlvbiAodiwgaykge1xuICAgICAgICAgIHBhcmFtcy5wdXNoKFtlbmNvZGVVUklDb21wb25lbnQoayksIGVuY29kZVVSSUNvbXBvbmVudCh2KV0uam9pbignPScpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRhcmdldCA9IHRoaXMuZ2V0VGFyZ2V0KHRhcmdldCwgcGFyYW1zKTtcbiAgICAgICAgZGF0YSA9IGJsb2IgfHwgbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCBkYXRhIGZyb20gdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICAgICAgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBlYWNoKHF1ZXJ5LCBmdW5jdGlvbiAodiwgaykge1xuICAgICAgICAgIGRhdGEuYXBwZW5kKGssIHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHR5cGVvZiBibG9iICE9PSBcInVuZGVmaW5lZFwiKSBkYXRhLmFwcGVuZCh0aGlzLmZsb3dPYmoub3B0cy5maWxlUGFyYW1ldGVyTmFtZSwgYmxvYiwgdGhpcy5maWxlT2JqLmZpbGUubmFtZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMueGhyLm9wZW4obWV0aG9kLCB0YXJnZXQsIHRydWUpO1xuICAgICAgdGhpcy54aHIud2l0aENyZWRlbnRpYWxzID0gdGhpcy5mbG93T2JqLm9wdHMud2l0aENyZWRlbnRpYWxzO1xuXG4gICAgICAvLyBBZGQgZGF0YSBmcm9tIGhlYWRlciBvcHRpb25zXG4gICAgICBlYWNoKGV2YWxPcHRzKHRoaXMuZmxvd09iai5vcHRzLmhlYWRlcnMsIHRoaXMuZmlsZU9iaiwgdGhpcywgaXNUZXN0KSwgZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgICAgdGhpcy54aHIuc2V0UmVxdWVzdEhlYWRlcihrLCB2KTtcbiAgICAgIH0sIHRoaXMpO1xuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB2YWx1ZSBmcm9tIGFycmF5XG4gICAqIEBwYXJhbSBhcnJheVxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVtb3ZlKGFycmF5LCB2YWx1ZSkge1xuICAgIHZhciBpbmRleCA9IGFycmF5LmluZGV4T2YodmFsdWUpO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBvcHRpb24gaXMgYSBmdW5jdGlvbiwgZXZhbHVhdGUgaXQgd2l0aCBnaXZlbiBwYXJhbXNcbiAgICogQHBhcmFtIHsqfSBkYXRhXG4gICAqIEBwYXJhbSB7Li4ufSBhcmdzIGFyZ3VtZW50cyBvZiBhIGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHsqfVxuICAgKi9cbiAgZnVuY3Rpb24gZXZhbE9wdHMoZGF0YSwgYXJncykge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAvLyBgYXJndW1lbnRzYCBpcyBhbiBvYmplY3QsIG5vdCBhcnJheSwgaW4gRkYsIHNvOlxuICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICBkYXRhID0gZGF0YS5hcHBseShudWxsLCBhcmdzLnNsaWNlKDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgRmxvdy5ldmFsT3B0cyA9IGV2YWxPcHRzO1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGZ1bmN0aW9uIGFzeW5jaHJvbm91c2x5XG4gICAqIEBwYXJhbSBmblxuICAgKiBAcGFyYW0gY29udGV4dFxuICAgKi9cbiAgZnVuY3Rpb24gYXN5bmMoZm4sIGNvbnRleHQpIHtcbiAgICBzZXRUaW1lb3V0KGZuLmJpbmQoY29udGV4dCksIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZHMgdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBgZHN0YCBieSBjb3B5aW5nIGFsbCBvZiB0aGUgcHJvcGVydGllcyBmcm9tXG4gICAqIHRoZSBgc3JjYCBvYmplY3QocykgdG8gYGRzdGAuIFlvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSBgc3JjYCBvYmplY3RzLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHBhcmFtIHtPYmplY3R9IGRzdCBEZXN0aW5hdGlvbiBvYmplY3QuXG4gICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzcmMgU291cmNlIG9iamVjdChzKS5cbiAgICogQHJldHVybnMge09iamVjdH0gUmVmZXJlbmNlIHRvIGBkc3RgLlxuICAgKi9cbiAgZnVuY3Rpb24gZXh0ZW5kKGRzdCwgc3JjKSB7XG4gICAgZWFjaChhcmd1bWVudHMsIGZ1bmN0aW9uKG9iaikge1xuICAgICAgaWYgKG9iaiAhPT0gZHN0KSB7XG4gICAgICAgIGVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwga2V5KXtcbiAgICAgICAgICBkc3Rba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZHN0O1xuICB9XG4gIEZsb3cuZXh0ZW5kID0gZXh0ZW5kO1xuXG4gIC8qKlxuICAgKiBJdGVyYXRlIGVhY2ggZWxlbWVudCBvZiBhbiBvYmplY3RcbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBvYmogb2JqZWN0IG9yIGFuIGFycmF5IHRvIGl0ZXJhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgZmlyc3QgYXJndW1lbnQgaXMgYSB2YWx1ZSBhbmQgc2Vjb25kIGlzIGEga2V5LlxuICAgKiBAcGFyYW0ge09iamVjdD19IGNvbnRleHQgT2JqZWN0IHRvIGJlY29tZSBjb250ZXh0IChgdGhpc2ApIGZvciB0aGUgaXRlcmF0b3IgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBlYWNoKG9iaiwgY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAgICBpZiAoIW9iaikge1xuICAgICAgcmV0dXJuIDtcbiAgICB9XG4gICAgdmFyIGtleTtcbiAgICAvLyBJcyBBcnJheT9cbiAgICAvLyBBcnJheS5pc0FycmF5IHdvbid0IHdvcmssIG5vdCBvbmx5IGFycmF5cyBjYW4gYmUgaXRlcmF0ZWQgYnkgaW5kZXggaHR0cHM6Ly9naXRodWIuY29tL2Zsb3dqcy9uZy1mbG93L2lzc3Vlcy8yMzYjXG4gICAgaWYgKHR5cGVvZihvYmoubGVuZ3RoKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGZvciAoa2V5ID0gMDsga2V5IDwgb2JqLmxlbmd0aDsga2V5KyspIHtcbiAgICAgICAgaWYgKGNhbGxiYWNrLmNhbGwoY29udGV4dCwgb2JqW2tleV0sIGtleSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGNhbGxiYWNrLmNhbGwoY29udGV4dCwgb2JqW2tleV0sIGtleSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBGbG93LmVhY2ggPSBlYWNoO1xuXG4gIC8qKlxuICAgKiBGbG93RmlsZSBjb25zdHJ1Y3RvclxuICAgKiBAdHlwZSB7Rmxvd0ZpbGV9XG4gICAqL1xuICBGbG93LkZsb3dGaWxlID0gRmxvd0ZpbGU7XG5cbiAgLyoqXG4gICAqIEZsb3dGaWxlIGNvbnN0cnVjdG9yXG4gICAqIEB0eXBlIHtGbG93Q2h1bmt9XG4gICAqL1xuICBGbG93LkZsb3dDaHVuayA9IEZsb3dDaHVuaztcblxuICAvKipcbiAgICogTGlicmFyeSB2ZXJzaW9uXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBGbG93LnZlcnNpb24gPSAnPCU9IHZlcnNpb24gJT4nO1xuXG4gIGlmICggdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiAmJiBtb2R1bGUgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiICkge1xuICAgIC8vIEV4cG9zZSBGbG93IGFzIG1vZHVsZS5leHBvcnRzIGluIGxvYWRlcnMgdGhhdCBpbXBsZW1lbnQgdGhlIE5vZGVcbiAgICAvLyBtb2R1bGUgcGF0dGVybiAoaW5jbHVkaW5nIGJyb3dzZXJpZnkpLiBEbyBub3QgY3JlYXRlIHRoZSBnbG9iYWwsIHNpbmNlXG4gICAgLy8gdGhlIHVzZXIgd2lsbCBiZSBzdG9yaW5nIGl0IHRoZW1zZWx2ZXMgbG9jYWxseSwgYW5kIGdsb2JhbHMgYXJlIGZyb3duZWRcbiAgICAvLyB1cG9uIGluIHRoZSBOb2RlIG1vZHVsZSB3b3JsZC5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IEZsb3c7XG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlIGV4cG9zZSBGbG93IHRvIHRoZSBnbG9iYWwgb2JqZWN0IGFzIHVzdWFsXG4gICAgd2luZG93LkZsb3cgPSBGbG93O1xuXG4gICAgLy8gUmVnaXN0ZXIgYXMgYSBuYW1lZCBBTUQgbW9kdWxlLCBzaW5jZSBGbG93IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuICAgIC8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3QgdmlhIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXRcbiAgICAvLyB1bmRlcnN0YW5kcyBhbm9ueW1vdXMgQU1EIG1vZHVsZXMuIEEgbmFtZWQgQU1EIGlzIHNhZmVzdCBhbmQgbW9zdCByb2J1c3RcbiAgICAvLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBmbG93IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZVxuICAgIC8vIGRlcml2ZWQgZnJvbSBmaWxlIG5hbWVzLCBhbmQgRmxvdyBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2VcbiAgICAvLyBmaWxlIG5hbWUuIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHNcbiAgICAvLyB0byBjYWxsIG5vQ29uZmxpY3QgdG8gaGlkZSB0aGlzIHZlcnNpb24gb2YgRmxvdywgaXQgd2lsbCB3b3JrLlxuICAgIGlmICggdHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQgKSB7XG4gICAgICBkZWZpbmUoIFwiZmxvd1wiLCBbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gRmxvdzsgfSApO1xuICAgIH1cbiAgfVxufSkodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LCB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@flowjs/flow.js/src/flow.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_a-function.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_a-function.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2EtZnVuY3Rpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTE4NCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_a-function.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_add-to-unscopables.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_add-to-unscopables.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_hide.js\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYWRkLXRvLXVuc2NvcGFibGVzLmpzPzNiYjEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjIuMS4zLjMxIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxudmFyIFVOU0NPUEFCTEVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbmlmIChBcnJheVByb3RvW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHJlcXVpcmUoJy4vX2hpZGUnKShBcnJheVByb3RvLCBVTlNDT1BBQkxFUywge30pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_add-to-unscopables.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-instance.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-instance.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLWluc3RhbmNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1pbnN0YW5jZS5qcz84MTE1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHtcbiAgaWYgKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikgfHwgKGZvcmJpZGRlbkZpZWxkICE9PSB1bmRlZmluZWQgJiYgZm9yYmlkZGVuRmllbGQgaW4gaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-instance.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-object.js\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLW9iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYW4tb2JqZWN0LmpzPzI3YjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_array-includes.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_array-includes.js ***!
  \********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcz9jYzFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_array-includes.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_classof.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_classof.js ***!
  \*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_cof.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NsYXNzb2YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NsYXNzb2YuanM/YTI3NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_classof.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_cof.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_cof.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29mLmpzPzcxZmEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_cof.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_core.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_core.js ***!
  \**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvcmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvcmUuanM/Y2EzOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjknIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_core.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ctx.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ctx.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2N0eC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY3R4LmpzP2E5ZjIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ctx.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_defined.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_defined.js ***!
  \*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RlZmluZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RlZmluZWQuanM/MDI0NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_defined.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_descriptors.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_descriptors.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_fails.js\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcz80NWUyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_descriptors.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_dom-create.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_dom-create.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-object.js\");\nvar document = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RvbS1jcmVhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RvbS1jcmVhdGUuanM/NzgxZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_dom-create.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_enum-bug-keys.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_enum-bug-keys.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/NDljMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_enum-bug-keys.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_export.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_export.js ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_core.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_hide.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ctx.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2V4cG9ydC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZXhwb3J0LmpzPzU2OWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gfHwgKGdsb2JhbFtuYW1lXSA9IHt9KSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV07XG4gIHZhciBleHBvcnRzID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSk7XG4gIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXSB8fCAoZXhwb3J0c1tQUk9UT1RZUEVdID0ge30pO1xuICB2YXIga2V5LCBvd24sIG91dCwgZXhwO1xuICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lO1xuICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gKG93biA/IHRhcmdldCA6IHNvdXJjZSlba2V5XTtcbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIGV4cCA9IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4dGVuZCBnbG9iYWxcbiAgICBpZiAodGFyZ2V0KSByZWRlZmluZSh0YXJnZXQsIGtleSwgb3V0LCB0eXBlICYgJGV4cG9ydC5VKTtcbiAgICAvLyBleHBvcnRcbiAgICBpZiAoZXhwb3J0c1trZXldICE9IG91dCkgaGlkZShleHBvcnRzLCBrZXksIGV4cCk7XG4gICAgaWYgKElTX1BST1RPICYmIGV4cFByb3RvW2tleV0gIT0gb3V0KSBleHBQcm90b1trZXldID0gb3V0O1xuICB9XG59O1xuZ2xvYmFsLmNvcmUgPSBjb3JlO1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_export.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_fails.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_fails.js ***!
  \***********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qcz9iNjI5Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_fails.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_for-of.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_for-of.js ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ctx.js\");\nvar call = __webpack_require__(/*! ./_iter-call */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-call.js\");\nvar isArrayIter = __webpack_require__(/*! ./_is-array-iter */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-array-iter.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-length.js\");\nvar getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/core.get-iterator-method.js\");\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Zvci1vZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZm9yLW9mLmpzPzg4YjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBCUkVBSyA9IHt9O1xudmFyIFJFVFVSTiA9IHt9O1xudmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgZW50cmllcywgZm4sIHRoYXQsIElURVJBVE9SKSB7XG4gIHZhciBpdGVyRm4gPSBJVEVSQVRPUiA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXJhYmxlOyB9IDogZ2V0SXRlckZuKGl0ZXJhYmxlKTtcbiAgdmFyIGYgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSk7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsZW5ndGgsIHN0ZXAsIGl0ZXJhdG9yLCByZXN1bHQ7XG4gIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuICAvLyBmYXN0IGNhc2UgZm9yIGFycmF5cyB3aXRoIGRlZmF1bHQgaXRlcmF0b3JcbiAgaWYgKGlzQXJyYXlJdGVyKGl0ZXJGbikpIGZvciAobGVuZ3RoID0gdG9MZW5ndGgoaXRlcmFibGUubGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICByZXN1bHQgPSBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7KSB7XG4gICAgcmVzdWx0ID0gY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5leHBvcnRzLkJSRUFLID0gQlJFQUs7XG5leHBvcnRzLlJFVFVSTiA9IFJFVFVSTjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_for-of.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_function-to-string.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_function-to-string.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ./_shared */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared.js\")('native-function-to-string', Function.toString);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Z1bmN0aW9uLXRvLXN0cmluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZnVuY3Rpb24tdG8tc3RyaW5nLmpzPzFkNzMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnbmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZycsIEZ1bmN0aW9uLnRvU3RyaW5nKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_function-to-string.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2dsb2JhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZ2xvYmFsLmpzP2I4MDgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_has.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_has.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2hhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faGFzLmpzPzBmNGEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_has.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_hide.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_hide.js ***!
  \**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_descriptors.js\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2hpZGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2hpZGUuanM/YTBhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_hide.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_html.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_html.js ***!
  \**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var document = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\").document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2h0bWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2h0bWwuanM/ZDhkYiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_html.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ie8-dom-define.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ie8-dom-define.js ***!
  \********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_fails.js\")(function () {\n  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcz9lODMwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ie8-dom-define.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_invoke.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_invoke.js ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ludm9rZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW52b2tlLmpzP2VmMjYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgYXJncywgdGhhdCkge1xuICB2YXIgdW4gPSB0aGF0ID09PSB1bmRlZmluZWQ7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCk7XG4gICAgY2FzZSAxOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgY2FzZSA0OiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgfSByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJncyk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_invoke.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iobject.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iobject.js ***!
  \*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lvYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lvYmplY3QuanM/ZDQzZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iobject.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-array-iter.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-array-iter.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// check on default Array iterator\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iterators.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/ZjI2ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-array-iter.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-object.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-object.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLW9iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtb2JqZWN0LmpzP2FiNGMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-object.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-call.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-call.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js\");\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY2FsbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1jYWxsLmpzPzFkMjciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVudHJpZXMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSBhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-call.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-create.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-create.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar create = __webpack_require__(/*! ./_object-create */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-create.js\");\nvar descriptor = __webpack_require__(/*! ./_property-desc */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_property-desc.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-to-string-tag.js\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(/*! ./_hide */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_hide.js\")(IteratorPrototype, __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcz9lZWM3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-create.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-define.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-define.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_library.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iterators.js\");\nvar $iterCreate = __webpack_require__(/*! ./_iter-create */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-create.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-to-string-tag.js\");\nvar getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-gpo.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRlZmluZS5qcz9mYTJkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciAkaXRlckNyZWF0ZSA9IHJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbnZhciBGRl9JVEVSQVRPUiA9ICdAQGl0ZXJhdG9yJztcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkge1xuICAgIGlmICghQlVHR1kgJiYga2luZCBpbiBwcm90bykgcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVM7XG4gIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7XG4gIHZhciBwcm90byA9IEJhc2UucHJvdG90eXBlO1xuICB2YXIgJG5hdGl2ZSA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXTtcbiAgdmFyICRkZWZhdWx0ID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVCk7XG4gIHZhciAkZW50cmllcyA9IERFRkFVTFQgPyAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJykgOiB1bmRlZmluZWQ7XG4gIHZhciAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZTtcbiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYgKCRhbnlOYXRpdmUpIHtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZiAoIUxJQlJBUlkgJiYgdHlwZW9mIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgfVxuICB9XG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykge1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gJG5hdGl2ZS5jYWxsKHRoaXMpOyB9O1xuICB9XG4gIC8vIERlZmluZSBpdGVyYXRvclxuICBpZiAoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpIHtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddID0gcmV0dXJuVGhpcztcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoa2V5IGluIG1ldGhvZHMpIHtcbiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-define.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-detect.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-detect.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRldGVjdC5qcz8yMjk5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-detect.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-step.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-step.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItc3RlcC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1zdGVwLmpzP2I1Y2IiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-step.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iterators.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iterators.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXJhdG9ycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlcmF0b3JzLmpzP2E2MzgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iterators.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_library.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_library.js ***!
  \*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = false;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2xpYnJhcnkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2xpYnJhcnkuanM/ZTZhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_library.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_microtask.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_microtask.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\");\nvar macrotask = __webpack_require__(/*! ./_task */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_task.js\").set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(/*! ./_cof */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_cof.js\")(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    var promise = Promise.resolve(undefined);\n    notify = function () {\n      promise.then(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n\n  return function (fn) {\n    var task = { fn: fn, next: undefined };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    } last = task;\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21pY3JvdGFzay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWljcm90YXNrLmpzP2EyNGMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG1hY3JvdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoZWFkLCBsYXN0LCBub3RpZnk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChpc05vZGUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoaGVhZCkge1xuICAgICAgZm4gPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChoZWFkKSBub3RpZnkoKTtcbiAgICAgICAgZWxzZSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmIChpc05vZGUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgU2FmYXJpIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICB9IGVsc2UgaWYgKE9ic2VydmVyICYmICEoZ2xvYmFsLm5hdmlnYXRvciAmJiBnbG9iYWwubmF2aWdhdG9yLnN0YW5kYWxvbmUpKSB7XG4gICAgdmFyIHRvZ2dsZSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICAvLyBQcm9taXNlLnJlc29sdmUgd2l0aG91dCBhbiBhcmd1bWVudCB0aHJvd3MgYW4gZXJyb3IgaW4gTEcgV2ViT1MgMlxuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxuICAgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgdGFzayA9IHsgZm46IGZuLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgICBpZiAobGFzdCkgbGFzdC5uZXh0ID0gdGFzaztcbiAgICBpZiAoIWhlYWQpIHtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_microtask.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_new-promise-capability.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_new-promise-capability.js ***!
  \****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_a-function.js\");\n\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/Y2MyMCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_new-promise-capability.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-assign.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-assign.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_descriptors.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-pie.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-object.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iobject.js\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(/*! ./_fails */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_fails.js\")(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1hc3NpZ24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1hc3NpZ24uanM/YTQwMiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAxOS4xLjIuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlLCAuLi4pXG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgdmFyIEEgPSB7fTtcbiAgdmFyIEIgPSB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBTID0gU3ltYm9sKCk7XG4gIHZhciBLID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtTXSA9IDc7XG4gIEsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgQltrXSA9IGs7IH0pO1xuICByZXR1cm4gJGFzc2lnbih7fSwgQSlbU10gIT0gNyB8fCBPYmplY3Qua2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT0gSztcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDE7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICB2YXIgaXNFbnVtID0gcElFLmY7XG4gIHdoaWxlIChhTGVuID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldFN5bWJvbHMgPyBnZXRLZXlzKFMpLmNvbmNhdChnZXRTeW1ib2xzKFMpKSA6IGdldEtleXMoUyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBqKSB7XG4gICAgICBrZXkgPSBrZXlzW2orK107XG4gICAgICBpZiAoIURFU0NSSVBUT1JTIHx8IGlzRW51bS5jYWxsKFMsIGtleSkpIFRba2V5XSA9IFNba2V5XTtcbiAgICB9XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-assign.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-create.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-create.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js\");\nvar dPs = __webpack_require__(/*! ./_object-dps */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dps.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_enum-bug-keys.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared-key.js\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(/*! ./_dom-create */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_dom-create.js\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(/*! ./_html */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_html.js\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1jcmVhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/ZWQwZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-create.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dp.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dp.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1kcC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWRwLmpzP2U0ZTEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dp.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dps.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dps.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dp.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-keys.js\");\n\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_descriptors.js\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1kcHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1kcHMuanM/ZTUyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dps.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-gops.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-gops.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wcy5qcz82OTZiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-gops.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-gpo.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-gpo.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_has.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-object.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared-key.js\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1ncG8uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1ncG8uanM/YzMzOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-gpo.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-keys-internal.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-keys-internal.js ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var has = __webpack_require__(/*! ./_has */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcz9mNmQ3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-keys-internal.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-keys.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-keys.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1rZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy5qcz85ZWQxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-keys.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-pie.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-pie.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1waWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1waWUuanM/YmY0MSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-pie.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_perform.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_perform.js ***!
  \*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BlcmZvcm0uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BlcmZvcm0uanM/NzNjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_perform.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_promise-resolve.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_promise-resolve.js ***!
  \*********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-object.js\");\nvar newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_new-promise-capability.js\");\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzPzFjMDgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_promise-resolve.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_property-desc.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_property-desc.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/ZGNjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_property-desc.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine-all.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine-all.js ***!
  \******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine.js\");\nmodule.exports = function (target, src, safe) {\n  for (var key in src) redefine(target, key, src[key], safe);\n  return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVkZWZpbmUtYWxsLmpzPzlmYWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc3JjLCBzYWZlKSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzcmNba2V5XSwgc2FmZSk7XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine-all.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine.js ***!
  \**************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_has.js\");\nvar SRC = __webpack_require__(/*! ./_uid */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_uid.js\")('src');\nvar $toString = __webpack_require__(/*! ./_function-to-string */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_function-to-string.js\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(/*! ./_core */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_core.js\").inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWRlZmluZS5qcz8xZjUxIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFNSQyA9IHJlcXVpcmUoJy4vX3VpZCcpKCdzcmMnKTtcbnZhciAkdG9TdHJpbmcgPSByZXF1aXJlKCcuL19mdW5jdGlvbi10by1zdHJpbmcnKTtcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyIFRQTCA9ICgnJyArICR0b1N0cmluZykuc3BsaXQoVE9fU1RSSU5HKTtcblxucmVxdWlyZSgnLi9fY29yZScpLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuICR0b1N0cmluZy5jYWxsKGl0KTtcbn07XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbCwgc2FmZSkge1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiB2YWwgPT0gJ2Z1bmN0aW9uJztcbiAgaWYgKGlzRnVuY3Rpb24pIGhhcyh2YWwsICduYW1lJykgfHwgaGlkZSh2YWwsICduYW1lJywga2V5KTtcbiAgaWYgKE9ba2V5XSA9PT0gdmFsKSByZXR1cm47XG4gIGlmIChpc0Z1bmN0aW9uKSBoYXModmFsLCBTUkMpIHx8IGhpZGUodmFsLCBTUkMsIE9ba2V5XSA/ICcnICsgT1trZXldIDogVFBMLmpvaW4oU3RyaW5nKGtleSkpKTtcbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIE9ba2V5XSA9IHZhbDtcbiAgfSBlbHNlIGlmICghc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gICAgaGlkZShPLCBrZXksIHZhbCk7XG4gIH0gZWxzZSBpZiAoT1trZXldKSB7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2Uge1xuICAgIGhpZGUoTywga2V5LCB2YWwpO1xuICB9XG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbn0pKEZ1bmN0aW9uLnByb3RvdHlwZSwgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgJiYgdGhpc1tTUkNdIHx8ICR0b1N0cmluZy5jYWxsKHRoaXMpO1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-species.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-species.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\");\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dp.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_descriptors.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('species');\n\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1zcGVjaWVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtc3BlY2llcy5qcz8wZWMwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZKSB7XG4gIHZhciBDID0gZ2xvYmFsW0tFWV07XG4gIGlmIChERVNDUklQVE9SUyAmJiBDICYmICFDW1NQRUNJRVNdKSBkUC5mKEMsIFNQRUNJRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-species.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-to-string-tag.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-to-string-tag.js ***!
  \***********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var def = __webpack_require__(/*! ./_object-dp */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-dp.js\").f;\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_has.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcz9hYWI2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-to-string-tag.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared-key.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared-key.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var shared = __webpack_require__(/*! ./_shared */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_uid.js\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NoYXJlZC1rZXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NoYXJlZC1rZXkuanM/YmU1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared-key.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared.js ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var core = __webpack_require__(/*! ./_core */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(/*! ./_library */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_library.js\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NoYXJlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2hhcmVkLmpzPzMxMmEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_species-constructor.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_species-constructor.js ***!
  \*************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-object.js\");\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_a-function.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/MWFhNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIEQpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_species-constructor.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_task.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_task.js ***!
  \**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ctx.js\");\nvar invoke = __webpack_require__(/*! ./_invoke */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_invoke.js\");\nvar html = __webpack_require__(/*! ./_html */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_html.js\");\nvar cel = __webpack_require__(/*! ./_dom-create */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_dom-create.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\");\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (__webpack_require__(/*! ./_cof */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_cof.js\")(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Rhc2suanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Rhc2suanM/MWFkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_task.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-absolute-index.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-absolute-index.js ***!
  \***********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcz80MDUyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-absolute-index.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-integer.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-integer.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWludGVnZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWludGVnZXIuanM/NGE4OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-integer.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-iobject.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-iobject.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_defined.js\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWlvYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWlvYmplY3QuanM/NThiOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-iobject.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-length.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-length.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWxlbmd0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzPzA0Y2YiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-length.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-object.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-object.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_defined.js\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLW9iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tb2JqZWN0LmpzPzRjZjQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-object.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-primitive.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-primitive.js ***!
  \******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzP2I5MzgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-primitive.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_uid.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_uid.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VpZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdWlkLmpzP2MwZjQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_uid.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_user-agent.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_user-agent.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\");\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VzZXItYWdlbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VzZXItYWdlbnQuanM/NGI5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_user-agent.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var store = __webpack_require__(/*! ./_shared */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_shared.js\")('wks');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_uid.js\");\nvar Symbol = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLmpzP2I2N2YiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/core.get-iterator-method.js":
/*!*****************************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/core.get-iterator-method.js ***!
  \*****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var classof = __webpack_require__(/*! ./_classof */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_classof.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('iterator');\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iterators.js\");\nmodule.exports = __webpack_require__(/*! ./_core */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_core.js\").getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcz9iMzZmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/core.get-iterator-method.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.array.iterator.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.array.iterator.js ***!
  \***********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_add-to-unscopables.js\");\nvar step = __webpack_require__(/*! ./_iter-step */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-step.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iterators.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_to-iobject.js\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(/*! ./_iter-define */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-define.js\")(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcz8xNGM2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcblxuLy8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcbi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcbi8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGtpbmQgPSB0aGlzLl9rO1xuICB2YXIgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmICghTyB8fCBpbmRleCA+PSBPLmxlbmd0aCkge1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.array.iterator.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.object.assign.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.object.assign.js ***!
  \**********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_export.js\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_object-assign.js\") });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanM/NDg0MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjMuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYsICdPYmplY3QnLCB7IGFzc2lnbjogcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpIH0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.object.assign.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.promise.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.promise.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_library.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_ctx.js\");\nvar classof = __webpack_require__(/*! ./_classof */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_classof.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_export.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_is-object.js\");\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_a-function.js\");\nvar anInstance = __webpack_require__(/*! ./_an-instance */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_an-instance.js\");\nvar forOf = __webpack_require__(/*! ./_for-of */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_for-of.js\");\nvar speciesConstructor = __webpack_require__(/*! ./_species-constructor */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_species-constructor.js\");\nvar task = __webpack_require__(/*! ./_task */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_task.js\").set;\nvar microtask = __webpack_require__(/*! ./_microtask */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_microtask.js\")();\nvar newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ./_perform */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_perform.js\");\nvar userAgent = __webpack_require__(/*! ./_user-agent */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_user-agent.js\");\nvar promiseResolve = __webpack_require__(/*! ./_promise-resolve */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_promise-resolve.js\");\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_wks.js\")('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function')\n      && promise.then(empty) instanceof FakePromise\n      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n      // we can't detect it synchronously, so just check versions\n      && v8.indexOf('6.6') !== 0\n      && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // may throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = __webpack_require__(/*! ./_redefine-all */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_redefine-all.js\")($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-to-string-tag.js\")($Promise, PROMISE);\n__webpack_require__(/*! ./_set-species */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_set-species.js\")(PROMISE);\nWrapper = __webpack_require__(/*! ./_core */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_core.js\")[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_iter-detect.js\")(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnByb21pc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnByb21pc2UuanM/MDhjMSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4IHx8ICcnO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICYmIHByb21pc2UudGhlbihlbXB0eSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZVxuICAgICAgLy8gdjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gICAgICAvLyB3ZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICAgICAgJiYgdjguaW5kZXhPZignNi42JykgIT09IDBcbiAgICAgICYmIHVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUvNjYnKSA9PT0gLTE7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gbWF5IHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.promise.js\n");

/***/ }),

/***/ "./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es7.promise.finally.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es7.promise.finally.js ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_export.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_global.js\");\nvar speciesConstructor = __webpack_require__(/*! ./_species-constructor */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_species-constructor.js\");\nvar promiseResolve = __webpack_require__(/*! ./_promise-resolve */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/_promise-resolve.js\");\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n  var C = speciesConstructor(this, core.Promise || global.Promise);\n  var isFunction = typeof onFinally == 'function';\n  return this.then(\n    isFunction ? function (x) {\n      return promiseResolve(C, onFinally()).then(function () { return x; });\n    } : onFinally,\n    isFunction ? function (e) {\n      return promiseResolve(C, onFinally()).then(function () { throw e; });\n    } : onFinally\n  );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzP2Q5ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS1maW5hbGx5XG4ndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnUHJvbWlzZScsIHsgJ2ZpbmFsbHknOiBmdW5jdGlvbiAob25GaW5hbGx5KSB7XG4gIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGNvcmUuUHJvbWlzZSB8fCBnbG9iYWwuUHJvbWlzZSk7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIG9uRmluYWxseSA9PSAnZnVuY3Rpb24nO1xuICByZXR1cm4gdGhpcy50aGVuKFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHksXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyB0aHJvdyBlOyB9KTtcbiAgICB9IDogb25GaW5hbGx5XG4gICk7XG59IH0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es7.promise.finally.js\n");

/***/ }),

/***/ "./node_modules/apexcharts/dist/apexcharts.esm.js":
/*!********************************************************!*\
  !*** ./node_modules/apexcharts/dist/apexcharts.esm.js ***!
  \********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(module) {/*!\n * ApexCharts v3.8.5\n * (c) 2018-2019 Juned Chhipa\n * Released under the MIT License.\n */\nfunction _typeof(t){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(t,e){for(var i=0;i<e.length;i++){var s=e[i];s.enumerable=s.enumerable||!1,s.configurable=!0,\"value\"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}function _createClass(t,e,i){return e&&_defineProperties(t.prototype,e),i&&_defineProperties(t,i),t}function _defineProperty(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{},s=Object.keys(i);\"function\"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(i).filter(function(t){return Object.getOwnPropertyDescriptor(i,t).enumerable}))),s.forEach(function(e){_defineProperty(t,e,i[e])})}return t}function _inherits(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}function _getPrototypeOf(t){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function _setPrototypeOf(t,e){return(_setPrototypeOf=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function _possibleConstructorReturn(t,e){return!e||\"object\"!=typeof e&&\"function\"!=typeof e?_assertThisInitialized(t):e}function _toConsumableArray(t){return _arrayWithoutHoles(t)||_iterableToArray(t)||_nonIterableSpread()}function _arrayWithoutHoles(t){if(Array.isArray(t)){for(var e=0,i=new Array(t.length);e<t.length;e++)i[e]=t[e];return i}}function _iterableToArray(t){if(Symbol.iterator in Object(t)||\"[object Arguments]\"===Object.prototype.toString.call(t))return Array.from(t)}function _nonIterableSpread(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}var Utils=function(){function t(){_classCallCheck(this,t)}return _createClass(t,[{key:\"shadeRGBColor\",value:function(t,e){var i=e.split(\",\"),s=t<0?0:255,a=t<0?-1*t:t,r=parseInt(i[0].slice(4)),n=parseInt(i[1]),o=parseInt(i[2]);return\"rgb(\"+(Math.round((s-r)*a)+r)+\",\"+(Math.round((s-n)*a)+n)+\",\"+(Math.round((s-o)*a)+o)+\")\"}},{key:\"shadeHexColor\",value:function(t,e){var i=parseInt(e.slice(1),16),s=t<0?0:255,a=t<0?-1*t:t,r=i>>16,n=i>>8&255,o=255&i;return\"#\"+(16777216+65536*(Math.round((s-r)*a)+r)+256*(Math.round((s-n)*a)+n)+(Math.round((s-o)*a)+o)).toString(16).slice(1)}},{key:\"shadeColor\",value:function(t,e){return e.length>7?this.shadeRGBColor(t,e):this.shadeHexColor(t,e)}}],[{key:\"bind\",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:\"isObject\",value:function(t){return t&&\"object\"===_typeof(t)&&!Array.isArray(t)&&null!=t}},{key:\"listToArray\",value:function(t){var e,i=[];for(e=0;e<t.length;e++)i[e]=t[e];return i}},{key:\"extend\",value:function(t,e){var i=this;\"function\"!=typeof Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;i<arguments.length;i++){var s=arguments[i];if(null!=s)for(var a in s)s.hasOwnProperty(a)&&(e[a]=s[a])}return e});var s=Object.assign({},t);return this.isObject(t)&&this.isObject(e)&&Object.keys(e).forEach(function(a){i.isObject(e[a])&&a in t?s[a]=i.extend(t[a],e[a]):Object.assign(s,_defineProperty({},a,e[a]))}),s}},{key:\"extendArray\",value:function(e,i){var s=[];return e.map(function(e){s.push(t.extend(i,e))}),e=s}},{key:\"monthMod\",value:function(t){return t%12}},{key:\"addProps\",value:function(t,e,i){\"string\"==typeof e&&(e=e.split(\".\")),t[e[0]]=t[e[0]]||{};var s=t[e[0]];return e.length>1?(e.shift(),this.addProps(s,e,i)):t[e[0]]=i,t}},{key:\"clone\",value:function(t){if(\"[object Array]\"===Object.prototype.toString.call(t)){for(var e=[],i=0;i<t.length;i++)e[i]=this.clone(t[i]);return e}if(\"object\"===_typeof(t)){var s={};for(var a in t)t.hasOwnProperty(a)&&(s[a]=this.clone(t[a]));return s}return t}},{key:\"log10\",value:function(t){return Math.log(t)/Math.LN10}},{key:\"roundToBase10\",value:function(t){return Math.pow(10,Math.floor(Math.log10(t)))}},{key:\"roundToBase\",value:function(t,e){return Math.pow(e,Math.floor(Math.log(t)/Math.log(e)))}},{key:\"parseNumber\",value:function(t){return null===t?t:parseFloat(t)}},{key:\"noExponents\",value:function(t){var e=String(t).split(/[eE]/);if(1==e.length)return e[0];var i=\"\",s=t<0?\"-\":\"\",a=e[0].replace(\".\",\"\"),r=Number(e[1])+1;if(r<0){for(i=s+\"0.\";r++;)i+=\"0\";return i+a.replace(/^\\-/,\"\")}for(r-=a.length;r--;)i+=\"0\";return a+i}},{key:\"getDimensions\",value:function(t){var e=getComputedStyle(t),i=[],s=t.clientHeight,a=t.clientWidth;return s-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),a-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),i.push(a),i.push(s),i}},{key:\"getBoundingClientRect\",value:function(t){var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:e.width,height:e.height,x:e.x,y:e.y}}},{key:\"hexToRgba\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"#999999\",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;\"#\"!==t.substring(0,1)&&(t=\"#999999\");var i=t.replace(\"#\",\"\");i=i.match(new RegExp(\"(.{\"+i.length/3+\"})\",\"g\"));for(var s=0;s<i.length;s++)i[s]=parseInt(1===i[s].length?i[s]+i[s]:i[s],16);return void 0!==e&&i.push(e),\"rgba(\"+i.join(\",\")+\")\"}},{key:\"getOpacityFromRGBA\",value:function(t){return(t=t.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i))[3]}},{key:\"rgb2hex\",value:function(t){return(t=t.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i))&&4===t.length?\"#\"+(\"0\"+parseInt(t[1],10).toString(16)).slice(-2)+(\"0\"+parseInt(t[2],10).toString(16)).slice(-2)+(\"0\"+parseInt(t[3],10).toString(16)).slice(-2):\"\"}},{key:\"isColorHex\",value:function(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t)}},{key:\"polarToCartesian\",value:function(t,e,i,s){var a=(s-90)*Math.PI/180;return{x:t+i*Math.cos(a),y:e+i*Math.sin(a)}}},{key:\"escapeString\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"x\",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()_|+\\-=?;:'\",.<>\\{\\}\\[\\]\\\\\\/]/gi,e)}},{key:\"negToZero\",value:function(t){return t<0?0:t}},{key:\"moveIndexInArray\",value:function(t,e,i){if(i>=t.length)for(var s=i-t.length+1;s--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:\"extractNumber\",value:function(t){return parseFloat(t.replace(/[^\\d\\.]*/g,\"\"))}},{key:\"randomString\",value:function(t){for(var e=\"\",i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",s=0;s<t;s++)e+=i.charAt(Math.floor(Math.random()*i.length));return e}},{key:\"findAncestor\",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:\"setELstyles\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:\"isNumber\",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:\"isFloat\",value:function(t){return Number(t)===t&&t%1!=0}},{key:\"isSafari\",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:\"isFirefox\",value:function(){return navigator.userAgent.toLowerCase().indexOf(\"firefox\")>-1}},{key:\"isIE11\",value:function(){if(-1!==window.navigator.userAgent.indexOf(\"MSIE\")||window.navigator.appVersion.indexOf(\"Trident/\")>-1)return!0}},{key:\"isIE\",value:function(){var t=window.navigator.userAgent,e=t.indexOf(\"MSIE \");if(e>0)return parseInt(t.substring(e+5,t.indexOf(\".\",e)),10);if(t.indexOf(\"Trident/\")>0){var i=t.indexOf(\"rv:\");return parseInt(t.substring(i+3,t.indexOf(\".\",i)),10)}var s=t.indexOf(\"Edge/\");return s>0&&parseInt(t.substring(s+5,t.indexOf(\".\",s)),10)}}]),t}(),Filters=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"getDefaultFilter\",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size(\"120%\",\"180%\",\"-5%\",\"-40%\"),\"none\"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:\"addNormalFilter\",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:\"addLightenFilter\",value:function(t,e,i){var s=this,a=this.w,r=i.intensity;if(!Utils.isFirefox()){t.unfilter(!0);var n=new window.SVG.Filter;n.size(\"120%\",\"180%\",\"-5%\",\"-40%\"),t.filter(function(t){var i=a.config.chart.dropShadow;(n=i.enabled?s.addShadow(t,e,i):t).componentTransfer({rgb:{type:\"linear\",slope:1.5,intercept:r}})}),t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\")}}},{key:\"addDarkenFilter\",value:function(t,e,i){var s=this,a=this.w,r=i.intensity;if(!Utils.isFirefox()){t.unfilter(!0);var n=new window.SVG.Filter;n.size(\"120%\",\"180%\",\"-5%\",\"-40%\"),t.filter(function(t){var i=a.config.chart.dropShadow;(n=i.enabled?s.addShadow(t,e,i):t).componentTransfer({rgb:{type:\"linear\",slope:r}})}),t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\")}}},{key:\"applyFilter\",value:function(t,e,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case\"none\":this.addNormalFilter(t,e);break;case\"lighten\":this.addLightenFilter(t,e,{intensity:s});break;case\"darken\":this.addDarkenFilter(t,e,{intensity:s})}}},{key:\"addShadow\",value:function(t,e,i){var s=i.blur,a=i.top,r=i.left,n=i.color,o=i.opacity,l=t.flood(Array.isArray(n)?n[e]:n,o).composite(t.sourceAlpha,\"in\").offset(r,a).gaussianBlur(s).merge(t.source);return t.blend(t.source,l)}},{key:\"dropShadow\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=e.top,a=e.left,r=e.blur,n=e.color,o=e.opacity,l=e.noUserSpaceOnUse,h=this.w;return t.unfilter(!0),Utils.isIE()&&\"radialBar\"===h.config.chart.type?t:(n=Array.isArray(n)?n[i]:n,(new window.SVG.Filter).size(\"120%\",\"180%\",\"-5%\",\"-40%\"),t.filter(function(t){var e=null;e=Utils.isSafari()||Utils.isFirefox()||Utils.isIE()?t.flood(n,o).composite(t.sourceAlpha,\"in\").offset(a,s).gaussianBlur(r):t.flood(n,o).composite(t.sourceAlpha,\"in\").offset(a,s).gaussianBlur(r).merge(t.source),t.blend(t.source,e)}),l||t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),t)}},{key:\"setSelectionFilter\",value:function(t,e,i){var s=this.w;if(void 0!==s.globals.selectedDataPoints[e]&&s.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute(\"selected\",!0);var a=s.config.states.active.filter;\"none\"!==a&&this.applyFilter(t,e,a.type,a.value)}}}]),t}(),Animations=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return _createClass(t,[{key:\"setEasingFunctions\",value:function(){var t;switch(this.w.config.chart.animations.easing){case\"linear\":t=\"-\";break;case\"easein\":t=\"<\";break;case\"easeout\":t=\">\";break;case\"easeinout\":t=\"<>\";break;case\"swing\":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case\"bounce\":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case\"elastic\":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1};break;default:t=\"<>\"}this.w.globals.easing=t}},{key:\"animateLine\",value:function(t,e,i,s){t.attr(e).animate(s).attr(i)}},{key:\"animateCircleRadius\",value:function(t,e,i,s,a){e||(e=0),t.attr({r:e}).animate(s,a).attr({r:i})}},{key:\"animateCircle\",value:function(t,e,i,s,a){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(s,a).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:\"animateRect\",value:function(t,e,i,s,a){t.attr(e).animate(s).attr(i).afterAll(function(){a()})}},{key:\"animatePathsGradually\",value:function(t){var e=t.el,i=t.j,s=t.pathFrom,a=t.pathTo,r=t.speed,n=t.delay,o=t.strokeWidth,l=this.w,h=0;l.config.chart.animations.animateGradually.enabled&&(h=l.config.chart.animations.animateGradually.delay),l.config.chart.animations.dynamicAnimation.enabled&&l.globals.dataChanged&&(h=0),this.morphSVG(e,i,s,a,r,o,n*h)}},{key:\"showDelayedElements\",value:function(){this.w.globals.delayedElements.forEach(function(t){t.el.classList.remove(\"hidden\")})}},{key:\"animationCompleted\",value:function(){var t=this.w;t.globals.animationEnded=!0,\"function\"==typeof t.config.chart.events.animationEnd&&t.config.chart.events.animationEnd(this.ctx,t)}},{key:\"morphSVG\",value:function(t,e,i,s,a,r,n){var o=this,l=this.w;i||(i=t.attr(\"pathFrom\")),s||(s=t.attr(\"pathTo\")),(!i||i.indexOf(\"undefined\")>-1||i.indexOf(\"NaN\")>-1)&&(i=\"M 0 \".concat(l.globals.gridHeight),a=1),(s.indexOf(\"undefined\")>-1||s.indexOf(\"NaN\")>-1)&&(s=\"M 0 \".concat(l.globals.gridHeight),a=1),l.globals.shouldAnimate||(a=1),t.plot(i).animate(1,l.globals.easing,n).plot(i).animate(a,l.globals.easing,n).plot(s).afterAll(function(){Utils.isNumber(e)?e===l.globals.series[l.globals.maxValsInArrayIndex].length-2&&l.globals.shouldAnimate&&o.animationCompleted():l.globals.shouldAnimate&&o.animationCompleted(),o.showDelayedElements()})}}]),t}(),Graphics=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"drawLine\",value:function(t,e,i,s){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"#a8a8a8\",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null;return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:s,stroke:a,\"stroke-dasharray\":r,\"stroke-width\":n})}},{key:\"drawRect\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"#fefefe\",n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:s>0?s:0,rx:a,ry:a,fill:r,opacity:n,\"stroke-width\":null!==o?o:0,stroke:null!==l?l:\"none\",\"stroke-dasharray\":h}),c}},{key:\"drawPolygon\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#e1e1e1\",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"none\";return this.w.globals.dom.Paper.polygon(t).attr({fill:i,stroke:e})}},{key:\"drawCircle\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:\"drawPath\",value:function(t){var e=t.d,i=void 0===e?\"\":e,s=t.stroke,a=void 0===s?\"#a8a8a8\":s,r=t.strokeWidth,n=void 0===r?1:r,o=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,u=t.classes,g=t.strokeLinecap,f=void 0===g?null:g,p=t.strokeDashArray,x=void 0===p?0:p,m=this.w;return null===f&&(f=m.config.stroke.lineCap),(i.indexOf(\"undefined\")>-1||i.indexOf(\"NaN\")>-1)&&(i=\"M 0 \".concat(m.globals.gridHeight)),m.globals.dom.Paper.path(i).attr({fill:o,\"fill-opacity\":h,stroke:a,\"stroke-opacity\":d,\"stroke-linecap\":f,\"stroke-width\":n,\"stroke-dasharray\":x,class:u})}},{key:\"group\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:\"move\",value:function(t,e){var i=[\"M\",t,e].join(\" \");return i}},{key:\"line\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=null;return null===i?s=[\"L\",t,e].join(\" \"):\"H\"===i?s=[\"H\",t].join(\" \"):\"V\"===i&&(s=[\"V\",e].join(\" \")),s}},{key:\"curve\",value:function(t,e,i,s,a,r){var n=[\"C\",t,e,i,s,a,r].join(\" \");return n}},{key:\"quadraticCurve\",value:function(t,e,i,s){return[\"Q\",t,e,i,s].join(\" \")}},{key:\"arc\",value:function(t,e,i,s,a,r,n){var o=\"A\";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(o=\"a\");var l=[o,t,e,i,s,a,r,n].join(\" \");return l}},{key:\"renderPaths\",value:function(t){var e,i=t.j,s=t.realIndex,a=t.pathFrom,r=t.pathTo,n=t.stroke,o=t.strokeWidth,l=t.strokeLinecap,h=t.fill,c=t.animationDelay,d=t.initialSpeed,u=t.dataChangeSpeed,g=t.className,f=t.shouldClipToGrid,p=void 0===f||f,x=t.bindEventsOnPaths,m=void 0===x||x,b=t.drawShadow,v=void 0===b||b,y=this.w,w=new Filters(this.ctx),k=new Animations(this.ctx),A=this.w.config.chart.animations.enabled,S=A&&this.w.config.chart.animations.dynamicAnimation.enabled,C=!!(A&&!y.globals.resized||S&&y.globals.dataChanged&&y.globals.shouldAnimate);C?e=a:(e=r,k.animationCompleted());var L=y.config.stroke.dashArray,P=0;P=Array.isArray(L)?L[s]:y.config.stroke.dashArray;var z=this.drawPath({d:e,stroke:n,strokeWidth:o,fill:h,fillOpacity:1,classes:g,strokeLinecap:l,strokeDashArray:P});if(z.attr(\"index\",s),p&&z.attr({\"clip-path\":\"url(#gridRectMask\".concat(y.globals.cuid,\")\")}),\"none\"!==y.config.states.normal.filter.type)w.getDefaultFilter(z,s);else if(y.config.chart.dropShadow.enabled&&v&&(!y.config.chart.dropShadow.enabledSeries||y.config.chart.dropShadow.enabledSeries&&-1!==y.config.chart.dropShadow.enabledSeries.indexOf(s))){var T=y.config.chart.dropShadow;w.dropShadow(z,T,s)}m&&(z.node.addEventListener(\"mouseenter\",this.pathMouseEnter.bind(this,z)),z.node.addEventListener(\"mouseleave\",this.pathMouseLeave.bind(this,z)),z.node.addEventListener(\"mousedown\",this.pathMouseDown.bind(this,z))),z.attr({pathTo:r,pathFrom:a});var M={el:z,j:i,pathFrom:a,pathTo:r,strokeWidth:o};return!A||y.globals.resized||y.globals.dataChanged?!y.globals.resized&&y.globals.dataChanged||k.showDelayedElements():k.animatePathsGradually(_objectSpread({},M,{speed:d,delay:c})),y.globals.dataChanged&&S&&C&&k.animatePathsGradually(_objectSpread({},M,{speed:u})),z}},{key:\"drawPattern\",value:function(t,e,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"#a8a8a8\",a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,function(r){\"horizontalLines\"===t?r.line(0,0,i,0).stroke({color:s,width:a+1}):\"verticalLines\"===t?r.line(0,0,0,e).stroke({color:s,width:a+1}):\"slantedLines\"===t?r.line(0,0,e,i).stroke({color:s,width:a}):\"squares\"===t?r.rect(e,i).fill(\"none\").stroke({color:s,width:a}):\"circles\"===t&&r.circle(e).fill(\"none\").stroke({color:s,width:a})})}},{key:\"drawGradient\",value:function(t,e,i,s,a){var r,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e=Utils.hexToRgba(e,s),i=Utils.hexToRgba(i,a);var d=0,u=1,g=1,f=null;null!==o&&(d=void 0!==o[0]?o[0]/100:0,u=void 0!==o[1]?o[1]/100:1,g=void 0!==o[2]?o[2]/100:1,f=void 0!==o[3]?o[3]/100:null);var p=!(\"donut\"!==c.config.chart.type&&\"pie\"!==c.config.chart.type&&\"bubble\"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(p?\"radial\":\"linear\",function(t){t.at(d,e,s),t.at(u,i,a),t.at(g,i,a),null!==f&&t.at(f,e,s)}):c.globals.dom.Paper.gradient(p?\"radial\":\"linear\",function(t){(Array.isArray(l[h])?l[h]:l).forEach(function(e){t.at(e.offset/100,e.color,e.opacity)})}),p){var x=c.globals.gridWidth/2,m=c.globals.gridHeight/2;\"bubble\"!==c.config.chart.type?r.attr({gradientUnits:\"userSpaceOnUse\",cx:x,cy:m,r:n}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else\"vertical\"===t?r.from(0,0).to(0,1):\"diagonal\"===t?r.from(0,0).to(1,1):\"horizontal\"===t?r.from(0,1).to(1,1):\"diagonal2\"===t&&r.from(0,1).to(2,2);return r}},{key:\"drawText\",value:function(t){var e,i=this.w,s=t.x,a=t.y,r=t.text,n=t.textAnchor,o=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.foreColor,d=t.opacity;return void 0===r&&(r=\"\"),n||(n=\"start\"),c||(c=i.config.chart.foreColor),l=l||i.config.chart.fontFamily,h=h||\"regular\",(e=Array.isArray(r)?i.globals.dom.Paper.text(function(t){for(var e=0;e<r.length;e++)t.tspan(r[e])}):i.globals.dom.Paper.plain(r)).attr({x:s,y:a,\"text-anchor\":n,\"dominant-baseline\":\"auto\",\"font-size\":o,\"font-family\":l,\"font-weight\":h,fill:c,class:(t.cssClass,t.cssClass)}),e.node.style.fontFamily=l,e.node.style.opacity=d,e}},{key:\"addTspan\",value:function(t,e,i){var s=t.tspan(e);i||(i=this.w.config.chart.fontFamily),s.node.style.fontFamily=i}},{key:\"drawMarker\",value:function(t,e,i){t=t||0;var s=i.pSize||0,a=null;if(\"square\"===i.shape){var r=void 0===i.pRadius?s/2:i.pRadius;null===e&&(s=0,r=0);var n=1.2*s+r,o=this.drawRect(n,n,n,n,r);o.attr({x:t-n/2,y:e-n/2,cx:t,cy:e,class:i.class?i.class:\"\",fill:i.pointFillColor,\"fill-opacity\":i.pointFillOpacity?i.pointFillOpacity:1,stroke:i.pointStrokeColor,\"stroke-width\":i.pWidth?i.pWidth:0,\"stroke-opacity\":i.pointStrokeOpacity?i.pointStrokeOpacity:1}),a=o}else\"circle\"===i.shape&&(Utils.isNumber(e)||(s=0,e=0),a=this.drawCircle(s,{cx:t,cy:e,class:i.class?i.class:\"\",stroke:i.pointStrokeColor,fill:i.pointFillColor,\"fill-opacity\":i.pointFillOpacity?i.pointFillOpacity:1,\"stroke-width\":i.pWidth?i.pWidth:0,\"stroke-opacity\":i.pointStrokeOpacity?i.pointStrokeOpacity:1}));return a}},{key:\"pathMouseEnter\",value:function(t,e){var i=this.w,s=new Filters(this.ctx),a=parseInt(t.node.getAttribute(\"index\")),r=parseInt(t.node.getAttribute(\"j\"));if(\"function\"==typeof i.config.chart.events.dataPointMouseEnter&&i.config.chart.events.dataPointMouseEnter(e,this.ctx,{seriesIndex:a,dataPointIndex:r,w:i}),this.ctx.fireEvent(\"dataPointMouseEnter\",[e,this.ctx,{seriesIndex:a,dataPointIndex:r,w:i}]),(\"none\"===i.config.states.active.filter.type||\"true\"!==t.node.getAttribute(\"selected\"))&&\"none\"!==i.config.states.hover.filter.type&&\"none\"!==i.config.states.active.filter.type&&!i.globals.isTouchDevice){var n=i.config.states.hover.filter;s.applyFilter(t,a,n.type,n.value)}}},{key:\"pathMouseLeave\",value:function(t,e){var i=this.w,s=new Filters(this.ctx),a=parseInt(t.node.getAttribute(\"index\")),r=parseInt(t.node.getAttribute(\"j\"));\"function\"==typeof i.config.chart.events.dataPointMouseLeave&&i.config.chart.events.dataPointMouseLeave(e,this.ctx,{seriesIndex:a,dataPointIndex:r,w:i}),this.ctx.fireEvent(\"dataPointMouseLeave\",[e,this.ctx,{seriesIndex:a,dataPointIndex:r,w:i}]),\"none\"!==i.config.states.active.filter.type&&\"true\"===t.node.getAttribute(\"selected\")||\"none\"!==i.config.states.hover.filter.type&&s.getDefaultFilter(t,a)}},{key:\"pathMouseDown\",value:function(t,e){var i=this.w,s=new Filters(this.ctx),a=parseInt(t.node.getAttribute(\"index\")),r=parseInt(t.node.getAttribute(\"j\")),n=\"false\";if(\"true\"===t.node.getAttribute(\"selected\")){if(t.node.setAttribute(\"selected\",\"false\"),i.globals.selectedDataPoints[a].indexOf(r)>-1){var o=i.globals.selectedDataPoints[a].indexOf(r);i.globals.selectedDataPoints[a].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(\".apexcharts-series path\").members,h=i.globals.dom.Paper.select(\".apexcharts-series circle, .apexcharts-series rect\").members;l.forEach(function(t){t.node.setAttribute(\"selected\",\"false\"),s.getDefaultFilter(t,a)}),h.forEach(function(t){t.node.setAttribute(\"selected\",\"false\"),s.getDefaultFilter(t,a)})}t.node.setAttribute(\"selected\",\"true\"),n=\"true\",void 0===i.globals.selectedDataPoints[a]&&(i.globals.selectedDataPoints[a]=[]),i.globals.selectedDataPoints[a].push(r)}if(\"true\"===n){var c=i.config.states.active.filter;\"none\"!==c&&s.applyFilter(t,a,c.type,c.value)}else\"none\"!==i.config.states.active.filter.type&&s.getDefaultFilter(t,a);\"function\"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:a,dataPointIndex:r,w:i}),e&&this.ctx.fireEvent(\"dataPointSelection\",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:a,dataPointIndex:r,w:i}])}},{key:\"rotateAroundCenter\",value:function(t){var e=t.getBBox();return{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:\"getTextRects\",value:function(t,e,i,s){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,n=this.drawText({x:-200,y:-200,text:t,textAnchor:\"start\",fontSize:e,fontFamily:i,foreColor:\"#fff\",opacity:0});s&&n.attr(\"transform\",s),r.globals.dom.Paper.add(n);var o=n.bbox();return a||(o=n.node.getBoundingClientRect()),n.remove(),{width:o.width,height:o.height}}},{key:\"placeTextWithEllipsis\",value:function(t,e,i){if(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i){for(var s=e.length-3;s>0;s-=3)if(t.getSubStringLength(0,s)<=i)return void(t.textContent=e.substring(0,s)+\"...\");t.textContent=\"...\"}}}],[{key:\"setAttrs\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}();const name=\"en\",options={months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],toolbar:{exportToSVG:\"Download SVG\",exportToPNG:\"Download PNG\",menu:\"Menu\",selection:\"Selection\",selectionZoom:\"Selection Zoom\",zoomIn:\"Zoom In\",zoomOut:\"Zoom Out\",pan:\"Panning\",reset:\"Reset Zoom\"}};var en={name:\"en\",options:options},Options=function(){function t(){_classCallCheck(this,t),this.yAxis={show:!0,showAlways:!1,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:\"11px\",fontFamily:void 0,cssClass:\"\"},formatter:void 0},axisBorder:{show:!1,color:\"#78909C\",offsetX:0,offsetY:0},axisTicks:{show:!1,color:\"#78909C\",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:\"11px\",fontFamily:void 0,cssClass:\"\"}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:\"front\",stroke:{color:\"#b6b6b6\",width:1,dashArray:0}}},this.xAxisAnnotation={x:0,x2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",opacity:.3,offsetX:0,offsetY:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,text:void 0,textAnchor:\"middle\",orientation:\"vertical\",position:\"top\",offsetX:0,offsetY:0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}}},this.yAxisAnnotation={y:0,y2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",opacity:.3,offsetX:0,offsetY:0,yAxisIndex:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,text:void 0,textAnchor:\"end\",position:\"right\",offsetX:0,offsetY:-3,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,cssClass:\"\",padding:{left:5,right:5,top:0,bottom:2}}}},this.pointAnnotation={x:0,y:null,yAxisIndex:0,seriesIndex:0,marker:{size:4,fillColor:\"#fff\",strokeWidth:2,strokeColor:\"#333\",shape:\"circle\",offsetX:0,offsetY:0,radius:2,cssClass:\"\"},label:{borderColor:\"#c2c2c2\",borderWidth:1,text:void 0,textAnchor:\"middle\",offsetX:0,offsetY:-15,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,cssClass:\"\",padding:{left:5,right:5,top:0,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0}}}return _createClass(t,[{key:\"init\",value:function(){return{annotations:{position:\"front\",yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation]},chart:{animations:{enabled:!0,easing:\"easeinout\",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:\"transparent\",locales:[en],defaultLocale:\"en\",dropShadow:{enabled:!1,enabledSeries:void 0,top:2,left:2,blur:4,color:\"#000\",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,zoomed:void 0,scrolled:void 0},foreColor:\"#373d3f\",fontFamily:\"Helvetica, Arial, sans-serif\",height:\"auto\",parentHeightOffset:15,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:\"x\",fill:{color:\"#24292e\",opacity:.1},stroke:{width:1,color:\"#24292e\",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0},stacked:!1,stackType:\"normal\",toolbar:{show:!0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},autoSelected:\"zoom\"},type:\"line\",width:\"100%\",zoom:{enabled:!0,type:\"x\",autoScaleYaxis:!1,zoomedArea:{fill:{color:\"#90CAF9\",opacity:.4},stroke:{color:\"#0D47A1\",opacity:.4,width:1}}}},plotOptions:{bar:{horizontal:!1,columnWidth:\"70%\",barHeight:\"70%\",distributed:!1,endingShape:\"flat\",colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1},dataLabels:{maxItems:100,hideOverflowingLabels:!0,position:\"top\"}},candlestick:{colors:{upward:\"#00B746\",downward:\"#EF403C\"},wick:{useFillColor:!0}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!0,distributed:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{size:void 0,inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:\"50%\",background:\"transparent\",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:\"front\",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:\"#f2f2f2\",strokeWidth:\"97%\",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,color:void 0,offsetY:0},value:{show:!0,fontSize:\"14px\",fontFamily:void 0,color:void 0,offsetY:16,formatter:function(t){return t+\"%\"}},total:{show:!1,label:\"Total\",color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce(function(t,e){return t+e},0)/t.globals.series.length+\"%\"}}}},rangeBar:{},pie:{size:void 0,customScale:1,offsetX:0,offsetY:0,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:\"65%\",background:\"transparent\",labels:{show:!1,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,color:void 0,offsetY:-10},value:{show:!0,fontSize:\"20px\",fontFamily:void 0,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,label:\"Total\",color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce(function(t,e){return t+e},0)}}}}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeColors:\"#e8e8e8\",connectorColors:\"#e8e8e8\",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:\"\"},textAnchor:\"middle\",offsetX:0,offsetY:0,style:{fontSize:\"12px\",fontFamily:void 0,colors:void 0},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:\"#000\",opacity:.45}},fill:{type:\"solid\",colors:void 0,opacity:.85,gradient:{shade:\"dark\",type:\"horizontal\",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:\"sqaures\",width:6,height:6,strokeWidth:2}},grid:{show:!0,borderColor:\"#e0e0e0\",strokeDashArray:0,position:\"back\",xaxis:{lines:{show:!1,animate:!1}},yaxis:{lines:{show:!0,animate:!1}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:\"bottom\",horizontalAlign:\"center\",inverseOrder:!1,fontSize:\"12px\",fontFamily:void 0,width:void 0,height:void 0,formatter:void 0,offsetX:-20,offsetY:0,labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,strokeColor:\"#fff\",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:0,vertical:5},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:\"#fff\",strokeWidth:2,strokeOpacity:.9,fillOpacity:1,shape:\"circle\",radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:\"center\",verticalAlign:\"middle\",offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"14px\",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:\"none\",value:0}},hover:{filter:{type:\"lighten\",value:.15}},active:{allowMultipleDataPointsSelection:!1,filter:{type:\"darken\",value:.65}}},title:{text:void 0,align:\"left\",margin:10,offsetX:0,offsetY:0,floating:!1,style:{fontSize:\"14px\",fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:\"left\",margin:10,offsetX:0,offsetY:30,floating:!1,style:{fontSize:\"12px\",fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:\"smooth\",lineCap:\"butt\",width:2,colors:void 0,dashArray:0},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:\"light\",style:{fontSize:\"12px\",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:\"dd MMM\",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t}}},z:{formatter:void 0,title:\"Size: \"},marker:{show:!0},items:{display:\"flex\"},fixed:{enabled:!1,position:\"topRight\",offsetX:0,offsetY:0}},xaxis:{type:\"category\",categories:[],offsetX:0,offsetY:0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!0,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:\"12px\",fontFamily:void 0,cssClass:\"\"},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeFormatter:{year:\"yyyy\",month:\"MMM 'yy\",day:\"dd MMM\",hour:\"HH:mm\",minute:\"HH:mm:ss\"}},axisBorder:{show:!0,color:\"#78909C\",width:\"100%\",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:\"#78909C\",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:\"on\",min:void 0,max:void 0,range:void 0,floating:!1,position:\"bottom\",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"12px\",fontFamily:void 0,cssClass:\"\"}},crosshairs:{show:!0,width:1,position:\"back\",opacity:.9,stroke:{color:\"#b6b6b6\",width:1,dashArray:3},fill:{type:\"solid\",color:\"#B1B9C4\",gradient:{colorFrom:\"#D8E3F0\",colorTo:\"#BED1E6\",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:\"12px\",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:\"light\",palette:\"palette1\",monochrome:{enabled:!1,color:\"#008FFB\",shadeTo:\"light\",shadeIntensity:.65}}}}}]),t}(),Annotations=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.graphics=new Graphics(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return _createClass(t,[{key:\"drawAnnotations\",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.drawYAxisAnnotations(),i=this.drawXAxisAnnotations(),s=this.drawPointAnnotations(),a=t.config.chart.animations.enabled,r=[e,i,s],n=[i.node,e.node,s.node],o=0;o<3;o++)t.globals.dom.elGraphical.add(r[o]),!a||t.globals.resized||t.globals.dataChanged||\"scatter\"!==t.config.chart.type&&\"bubble\"!==t.config.chart.type&&n[o].classList.add(\"hidden\"),t.globals.delayedElements.push({el:n[o],index:0});this.annotationsBackground()}}},{key:\"getStringX\",value:function(t){var e=this.w,i=t,s=e.globals.labels.indexOf(t),a=e.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-texts-g text:nth-child(\"+(s+1)+\")\");return a&&(i=parseFloat(a.getAttribute(\"x\"))),i}},{key:\"addXaxisAnnotation\",value:function(t,e,i){var s=this.w,a=this.invertAxis?s.globals.minY:s.globals.minX,r=this.invertAxis?s.globals.yRange[0]:s.globals.xRange,n=(t.x-a)/(r/s.globals.gridWidth),o=t.label.text;\"category\"!==s.config.xaxis.type&&!s.config.xaxis.convertedCatToNumeric||this.invertAxis||s.globals.isXNumeric||(n=this.getStringX(t.x));var l=t.strokeDashArray;if(!(n<0||n>s.globals.gridWidth)){if(null===t.x2){var h=this.graphics.drawLine(n+t.offsetX,0+t.offsetY,n+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,l);e.appendChild(h.node)}else{var c=(t.x2-a)/(r/s.globals.gridWidth);if(\"category\"!==s.config.xaxis.type&&!s.config.xaxis.convertedCatToNumeric||this.invertAxis||s.globals.isXNumeric||(c=this.getStringX(t.x2)),c<n){var d=n;n=c,c=d}if(o){var u=this.graphics.drawRect(n+t.offsetX,0+t.offsetY,c-n,s.globals.gridHeight+t.offsetY,0,t.fillColor,t.opacity,1,t.borderColor,l);e.appendChild(u.node)}}var g=\"top\"===t.label.position?-3:s.globals.gridHeight,f=this.graphics.drawText({x:n+t.label.offsetX,y:g+t.label.offsetY,text:o,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,foreColor:t.label.style.color,cssClass:\"apexcharts-xaxis-annotation-label \"+t.label.style.cssClass});f.attr({rel:i}),e.appendChild(f.node),this.setOrientations(t,i)}}},{key:\"drawXAxisAnnotations\",value:function(){var t=this,e=this.w,i=this.graphics.group({class:\"apexcharts-xaxis-annotations\"});return e.config.annotations.xaxis.map(function(e,s){t.addXaxisAnnotation(e,i.node,s)}),i}},{key:\"addYaxisAnnotation\",value:function(t,e,i){var s,a,r=this.w,n=t.strokeDashArray;if(this.invertAxis){var o=r.globals.labels.indexOf(t.y),l=r.globals.dom.baseEl.querySelector(\".apexcharts-yaxis-texts-g text:nth-child(\"+(o+1)+\")\");l&&(s=parseFloat(l.getAttribute(\"y\")))}else s=r.globals.gridHeight-(t.y-r.globals.minYArr[t.yAxisIndex])/(r.globals.yRange[t.yAxisIndex]/r.globals.gridHeight),r.config.yaxis[t.yAxisIndex]&&r.config.yaxis[t.yAxisIndex].reversed&&(s=(t.y-r.globals.minYArr[t.yAxisIndex])/(r.globals.yRange[t.yAxisIndex]/r.globals.gridHeight));var h=t.label.text;if(null===t.y2){var c=this.graphics.drawLine(0+t.offsetX,s+t.offsetY,r.globals.gridWidth+t.offsetX,s+t.offsetY,t.borderColor,n);e.appendChild(c.node)}else{if(this.invertAxis){var d=r.globals.labels.indexOf(t.y2),u=r.globals.dom.baseEl.querySelector(\".apexcharts-yaxis-texts-g text:nth-child(\"+(d+1)+\")\");u&&(a=parseFloat(u.getAttribute(\"y\")))}else a=r.globals.gridHeight-(t.y2-r.globals.minYArr[t.yAxisIndex])/(r.globals.yRange[t.yAxisIndex]/r.globals.gridHeight),r.config.yaxis[t.yAxisIndex]&&r.config.yaxis[t.yAxisIndex].reversed&&(a=(t.y2-r.globals.minYArr[t.yAxisIndex])/(r.globals.yRange[t.yAxisIndex]/r.globals.gridHeight));if(a>s){var g=s;s=a,a=g}if(h){var f=this.graphics.drawRect(0+t.offsetX,a+t.offsetY,r.globals.gridWidth+t.offsetX,s-a,0,t.fillColor,t.opacity,1,t.borderColor,n);e.appendChild(f.node)}}var p=\"right\"===t.label.position?r.globals.gridWidth:0,x=this.graphics.drawText({x:p+t.label.offsetX,y:(a||s)+t.label.offsetY-3,text:h,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,foreColor:t.label.style.color,cssClass:\"apexcharts-yaxis-annotation-label \"+t.label.style.cssClass});x.attr({rel:i}),e.appendChild(x.node)}},{key:\"drawYAxisAnnotations\",value:function(){var t=this,e=this.w,i=this.graphics.group({class:\"apexcharts-yaxis-annotations\"});return e.config.annotations.yaxis.map(function(e,s){t.addYaxisAnnotation(e,i.node,s)}),i}},{key:\"clearAnnotations\",value:function(t){var e=t.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations\");(e=Utils.listToArray(e)).forEach(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)})}},{key:\"addPointAnnotation\",value:function(t,e,i){var s=this.w,a=0,r=0,n=0;if(this.invertAxis&&console.warn(\"Point annotation is not supported in horizontal bar charts.\"),\"string\"==typeof t.x){var o=s.globals.labels.indexOf(t.x),l=s.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-texts-g text:nth-child(\"+(o+1)+\")\");a=parseFloat(l.getAttribute(\"x\"));var h=t.y;null===t.y&&(h=s.globals.series[t.seriesIndex][o]),r=s.globals.gridHeight-(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)-parseInt(t.label.style.fontSize)-t.marker.size,n=s.globals.gridHeight-(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(r=(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)+parseInt(t.label.style.fontSize)+t.marker.size,n=(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight))}else a=(t.x-s.globals.minX)/(s.globals.xRange/s.globals.gridWidth),r=s.globals.gridHeight-(parseFloat(t.y)-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)-parseInt(t.label.style.fontSize)-t.marker.size,n=s.globals.gridHeight-(t.y-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(r=(parseFloat(t.y)-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)-parseInt(t.label.style.fontSize)-t.marker.size,n=(t.y-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight));if(!(a<0||a>s.globals.gridWidth)){var c={pSize:t.marker.size,pWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,radius:t.marker.radius,class:\"apexcharts-point-annotation-marker \"+t.marker.cssClass},d=this.graphics.drawMarker(a+t.marker.offsetX,n+t.marker.offsetY,c);e.appendChild(d.node);var u=t.label.text?t.label.text:\"\",g=this.graphics.drawText({x:a+t.label.offsetX,y:r+t.label.offsetY,text:u,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,foreColor:t.label.style.color,cssClass:\"apexcharts-point-annotation-label \"+t.label.style.cssClass});if(g.attr({rel:i}),e.appendChild(g.node),t.customSVG.SVG){var f=this.graphics.group({class:\"apexcharts-point-annotations-custom-svg \"+t.customSVG.cssClass});f.attr({transform:\"translate(\".concat(a+t.customSVG.offsetX,\", \").concat(r+t.customSVG.offsetY,\")\")}),f.node.innerHTML=t.customSVG.SVG,e.appendChild(f.node)}}}},{key:\"drawPointAnnotations\",value:function(){var t=this,e=this.w,i=this.graphics.group({class:\"apexcharts-point-annotations\"});return e.config.annotations.points.map(function(e,s){t.addPointAnnotation(e,i.node,s)}),i}},{key:\"setOrientations\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if(\"vertical\"===t.label.orientation){var s=null!==e?e:0,a=i.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='\".concat(s,\"']\"));if(null!==a){var r=a.getBoundingClientRect();a.setAttribute(\"x\",parseFloat(a.getAttribute(\"x\"))-r.height+4),\"top\"===t.label.position?a.setAttribute(\"y\",parseFloat(a.getAttribute(\"y\"))+r.width):a.setAttribute(\"y\",parseFloat(a.getAttribute(\"y\"))-r.width);var n=this.graphics.rotateAroundCenter(a),o=n.x,l=n.y;a.setAttribute(\"transform\",\"rotate(-90 \".concat(o,\" \").concat(l,\")\"))}}}},{key:\"addBackgroundToAnno\",value:function(t,e){var i=this.w;if(!e.label.text||e.label.text&&!e.label.text.trim())return null;var s=i.globals.dom.baseEl.querySelector(\".apexcharts-grid\").getBoundingClientRect(),a=t.getBoundingClientRect(),r=e.label.style.padding.left,n=e.label.style.padding.right,o=e.label.style.padding.top,l=e.label.style.padding.bottom;\"vertical\"===e.label.orientation&&(o=e.label.style.padding.left,l=e.label.style.padding.right,r=e.label.style.padding.top,n=e.label.style.padding.bottom);var h=a.left-s.left-r,c=a.top-s.top-o;return this.graphics.drawRect(h,c,a.width+r+n,a.height+o+l,0,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0)}},{key:\"annotationsBackground\",value:function(){var t=this,e=this.w,i=function(i,s,a){var r=e.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(a,\"-annotations .apexcharts-\").concat(a,\"-annotation-label[rel='\").concat(s,\"']\"));if(r){var n=r.parentNode,o=t.addBackgroundToAnno(r,i);o&&n.insertBefore(o.node,r)}};e.config.annotations.xaxis.map(function(t,e){i(t,e,\"xaxis\")}),e.config.annotations.yaxis.map(function(t,e){i(t,e,\"yaxis\")}),e.config.annotations.points.map(function(t,e){i(t,e,\"point\")})}},{key:\"addText\",value:function(t,e,i){var s=t.x,a=t.y,r=t.text,n=t.textAnchor,o=t.appendTo,l=void 0===o?\".apexcharts-inner\":o,h=t.foreColor,c=t.fontSize,d=t.fontFamily,u=t.cssClass,g=t.backgroundColor,f=t.borderWidth,p=t.strokeDashArray,x=t.radius,m=t.borderColor,b=t.paddingLeft,v=void 0===b?4:b,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=i,P=L.w,z=P.globals.dom.baseEl.querySelector(l),T=this.graphics.drawText({x:s,y:a,text:r,textAnchor:n||\"start\",fontSize:c||\"12px\",fontFamily:d||P.config.chart.fontFamily,foreColor:h||P.config.chart.foreColor,cssClass:u});z.appendChild(T.node);var M=T.bbox();if(r){var E=this.graphics.drawRect(M.x-v,M.y-C,M.width+v+w,M.height+A+C,x,g,1,f,m,p);T.before(E)}return e&&P.globals.memory.methodsToExec.push({context:L,method:L.addText,params:{x:s,y:a,text:r,textAnchor:n,appendTo:l,foreColor:h,fontSize:c,cssClass:u,backgroundColor:g,borderWidth:f,strokeDashArray:p,radius:x,borderColor:m,paddingLeft:v,paddingRight:w,paddingBottom:A,paddingTop:C}}),i}},{key:\"addPointAnnotationExternal\",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"point\",contextMethod:i.addPointAnnotation}),i}},{key:\"addYaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"yaxis\",contextMethod:i.addYaxisAnnotation}),i}},{key:\"addXaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"xaxis\",contextMethod:i.addXaxisAnnotation}),i}},{key:\"addAnnotationExternal\",value:function(t){var e=t.params,i=t.pushToMemory,s=t.context,a=t.type,r=t.contextMethod,n=s,o=n.w,l=o.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(a,\"-annotations\")),h=l.childNodes.length+1,c=new Options,d=Object.assign({},\"xaxis\"===a?c.xAxisAnnotation:\"yaxis\"===a?c.yAxisAnnotation:c.pointAnnotation),u=Utils.extend(d,e);switch(a){case\"xaxis\":this.addXaxisAnnotation(u,l,h);break;case\"yaxis\":this.addYaxisAnnotation(u,l,h);break;case\"point\":this.addPointAnnotation(u,l,h)}var g=o.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(a,\"-annotations .apexcharts-\").concat(a,\"-annotation-label[rel='\").concat(h,\"']\")),f=this.addBackgroundToAnno(g,u);return f&&l.insertBefore(f.node,g),i&&o.globals.memory.methodsToExec.push({context:n,method:r,params:e}),s}}]),t}(),DateTime=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return _createClass(t,[{key:\"isValidDate\",value:function(t){return!isNaN(this.parseDate(t))}},{key:\"getUTCTimeStamp\",value:function(t){return Date.parse(t)?new Date(new Date(t).toISOString().substr(0,25)).getTime():t}},{key:\"parseDate\",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getUTCTimeStamp(t);var i=Date.parse(t.replace(/-/g,\"/\").replace(/[a-z]+/gi,\" \"));return i=this.getUTCTimeStamp(i)}},{key:\"treatAsUtc\",value:function(t){var e=new Date(t);return e.setMinutes(e.getMinutes()-e.getTimezoneOffset()),e}},{key:\"formatDate\",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=this.w.globals.locale,r=[\"\\0\"].concat(_toConsumableArray(a.months)),n=[\"\\x01\"].concat(_toConsumableArray(a.shortMonths)),o=[\"\\x02\"].concat(_toConsumableArray(a.days)),l=[\"\\x03\"].concat(_toConsumableArray(a.shortDays));function h(t,e){var i=t+\"\";for(e=e||2;i.length<e;)i=\"0\"+i;return i}s&&(t=this.treatAsUtc(t));var c=i?t.getUTCFullYear():t.getFullYear();e=(e=(e=e.replace(/(^|[^\\\\])yyyy+/g,\"$1\"+c)).replace(/(^|[^\\\\])yy/g,\"$1\"+c.toString().substr(2,2))).replace(/(^|[^\\\\])y/g,\"$1\"+c);var d=(i?t.getUTCMonth():t.getMonth())+1;e=(e=(e=(e=e.replace(/(^|[^\\\\])MMMM+/g,\"$1\"+r[0])).replace(/(^|[^\\\\])MMM/g,\"$1\"+n[0])).replace(/(^|[^\\\\])MM/g,\"$1\"+h(d))).replace(/(^|[^\\\\])M/g,\"$1\"+d);var u=i?t.getUTCDate():t.getDate();e=(e=(e=(e=e.replace(/(^|[^\\\\])dddd+/g,\"$1\"+o[0])).replace(/(^|[^\\\\])ddd/g,\"$1\"+l[0])).replace(/(^|[^\\\\])dd/g,\"$1\"+h(u))).replace(/(^|[^\\\\])d/g,\"$1\"+u);var g=i?t.getUTCHours():t.getHours(),f=g>12?g-12:0===g?12:g;e=(e=(e=(e=e.replace(/(^|[^\\\\])HH+/g,\"$1\"+h(g))).replace(/(^|[^\\\\])H/g,\"$1\"+g)).replace(/(^|[^\\\\])hh+/g,\"$1\"+h(f))).replace(/(^|[^\\\\])h/g,\"$1\"+f);var p=i?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\\\])mm+/g,\"$1\"+h(p))).replace(/(^|[^\\\\])m/g,\"$1\"+p);var x=i?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\\\])ss+/g,\"$1\"+h(x))).replace(/(^|[^\\\\])s/g,\"$1\"+x);var m=i?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\\\])fff+/g,\"$1\"+h(m,3)),m=Math.round(m/10),e=e.replace(/(^|[^\\\\])ff/g,\"$1\"+h(m)),m=Math.round(m/10);var b=g<12?\"AM\":\"PM\";e=(e=(e=e.replace(/(^|[^\\\\])f/g,\"$1\"+m)).replace(/(^|[^\\\\])TT+/g,\"$1\"+b)).replace(/(^|[^\\\\])T/g,\"$1\"+b.charAt(0));var v=b.toLowerCase();e=(e=e.replace(/(^|[^\\\\])tt+/g,\"$1\"+v)).replace(/(^|[^\\\\])t/g,\"$1\"+v.charAt(0));var y=-t.getTimezoneOffset(),w=i||!y?\"Z\":y>0?\"+\":\"-\";if(!i){var k=(y=Math.abs(y))%60;w+=h(Math.floor(y/60))+\":\"+h(k)}e=e.replace(/(^|[^\\\\])K/g,\"$1\"+w);var A=(i?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],\"g\"),o[A])).replace(new RegExp(l[0],\"g\"),l[A])).replace(new RegExp(r[0],\"g\"),r[d])).replace(new RegExp(n[0],\"g\"),n[d])).replace(/\\\\(.)/g,\"$1\")}},{key:\"getTimeUnitsfromTimestamp\",value:function(t,e){var i=this.w;void 0!==i.config.xaxis.min&&(t=i.config.xaxis.min),void 0!==i.config.xaxis.max&&(e=i.config.xaxis.max);var s=new Date(t).getFullYear(),a=new Date(e).getFullYear(),r=new Date(t).getMonth(),n=new Date(e).getMonth(),o=new Date(t).getDate(),l=new Date(e).getDate(),h=new Date(t).getHours(),c=new Date(e).getHours();return{minMinute:new Date(t).getMinutes(),maxMinute:new Date(e).getMinutes(),minHour:h,maxHour:c,minDate:o,maxDate:l,minMonth:r,maxMonth:n,minYear:s,maxYear:a}}},{key:\"isLeapYear\",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:\"calculcateLastDaysOfMonth\",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:\"determineDaysOfYear\",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:\"determineRemainingDaysOfYear\",value:function(t,e,i){var s=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&s++,s}},{key:\"determineDaysOfMonths\",value:function(t,e){var i=30;switch(t=Utils.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),Defaults=function(){function t(e){_classCallCheck(this,t),this.opts=e}return _createClass(t,[{key:\"line\",value:function(){return{chart:{animations:{easing:\"swing\"}},dataLabels:{enabled:!1},stroke:{width:5,curve:\"straight\"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:\"sparkline\",value:function(t){this.opts.yaxis[0].labels.show=!1,this.opts.yaxis[0].floating=!0;return Utils.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:\"bar\",value:function(){return{chart:{stacked:!1,animations:{easing:\"swing\"}},plotOptions:{bar:{dataLabels:{position:\"center\"}}},dataLabels:{style:{colors:[\"#fff\"]}},stroke:{width:0},fill:{opacity:.85},legend:{markers:{shape:\"square\",radius:2,size:8}},tooltip:{shared:!1},xaxis:{tooltip:{enabled:!1},crosshairs:{width:\"barWidth\",position:\"back\",fill:{type:\"gradient\"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:\"candlestick\",value:function(){return{stroke:{width:1,colors:[\"#333\"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var e=t.seriesIndex,i=t.dataPointIndex,s=t.w;return'<div class=\"apexcharts-tooltip-candlestick\"><div>Open: <span class=\"value\">'+s.globals.seriesCandleO[e][i]+'</span></div><div>High: <span class=\"value\">'+s.globals.seriesCandleH[e][i]+'</span></div><div>Low: <span class=\"value\">'+s.globals.seriesCandleL[e][i]+'</span></div><div>Close: <span class=\"value\">'+s.globals.seriesCandleC[e][i]+\"</span></div></div>\"}},states:{active:{filter:{type:\"none\"}}},xaxis:{crosshairs:{width:1}}}}},{key:\"rangeBar\",value:function(){return{stroke:{width:0},plotOptions:{bar:{dataLabels:{position:\"center\"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,s=e.dataPointIndex,a=e.w,r=a.globals.seriesRangeStart[i][s];return a.globals.seriesRangeEnd[i][s]-r},style:{colors:[\"#fff\"]}},tooltip:{shared:!1,followCursor:!0,custom:function(t){var e=t.ctx,i=t.seriesIndex,s=t.dataPointIndex,a=t.w,r=a.globals.seriesRangeStart[i][s],n=a.globals.seriesRangeEnd[i][s],o=\"\",l=\"\",h=a.globals.colors[i];if(void 0===a.config.tooltip.x.formatter)if(\"datetime\"===a.config.xaxis.type){var c=new DateTime(e);o=c.formatDate(new Date(r),a.config.tooltip.x.format,!0,!0),l=c.formatDate(new Date(n),a.config.tooltip.x.format,!0,!0)}else o=r,l=n;else o=a.config.tooltip.x.formatter(r),l=a.config.tooltip.x.formatter(n);var d=a.globals.labels[s];return'<div class=\"apexcharts-tooltip-rangebar\"><div> <span class=\"series-name\" style=\"color: '+h+'\">'+(a.config.series[i].name?a.config.series[i].name:\"\")+'</span></div><div> <span class=\"category\">'+d+': </span> <span class=\"value start-value\">'+o+'</span> <span class=\"separator\">-</span> <span class=\"value end-value\">'+l+\"</span></div></div>\"}},xaxis:{tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:\"area\",value:function(){return{stroke:{width:4},fill:{type:\"gradient\",gradient:{inverseColors:!1,shade:\"light\",type:\"vertical\",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:\"brush\",value:function(t){return Utils.extend(t,{chart:{toolbar:{autoSelected:\"selection\",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:\"stacked100\",value:function(){var t=this;this.opts.dataLabels=this.opts.dataLabels||{},this.opts.dataLabels.formatter=this.opts.dataLabels.formatter||void 0;var e=this.opts.dataLabels.formatter;this.opts.yaxis.forEach(function(e,i){t.opts.yaxis[i].min=0,t.opts.yaxis[i].max=100}),\"bar\"===this.opts.chart.type&&(this.opts.dataLabels.formatter=e||function(t){return\"number\"==typeof t&&t?t.toFixed(0)+\"%\":t})}},{key:\"bubble\",value:function(){return{dataLabels:{style:{colors:[\"#fff\"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:\"solid\",gradient:{shade:\"light\",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:\"scatter\",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:2,hover:{sizeOffset:2}}}}},{key:\"heatmap\",value:function(){return{chart:{stacked:!1,zoom:{enabled:!1}},fill:{opacity:1},dataLabels:{style:{colors:[\"#fff\"]}},stroke:{colors:[\"#fff\"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:\"top\",markers:{shape:\"square\",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:\"pie\",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"dark\",shadeIntensity:.35,inverseColors:!1,stops:[0,100,100]}},padding:{right:0,left:0},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"}}}},{key:\"donut\",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"dark\",shadeIntensity:.4,inverseColors:!1,type:\"vertical\",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},padding:{right:0,left:0},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"}}}},{key:\"radar\",value:function(){return this.opts.yaxis[0].labels.style.fontSize=\"13px\",this.opts.yaxis[0].labels.offsetY=6,{dataLabels:{enabled:!0,style:{colors:[\"#a8a8a8\"],fontSize:\"11px\"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:\"radialBar\",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:\"dark\",shadeIntensity:.4,inverseColors:!1,type:\"diagonal2\",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},padding:{right:0,left:0},legend:{show:!1,position:\"right\"},tooltip:{enabled:!1,fillSeriesColor:!0}}}}],[{key:\"convertCatToNumeric\",value:function(t){t.xaxis.type=\"numeric\",t.xaxis.convertedCatToNumeric=!0,t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return t},t.chart=t.chart||{},t.chart.zoom=t.chart.zoom||window.Apex.chart&&window.Apex.chart.zoom||{};var e=t.xaxis.labels.formatter,i=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(t.xaxis.labels.formatter=function(t){return e(i[t-1])}),t.xaxis.categories=[],t.labels=[],t.chart.zoom.enabled=t.chart.zoom.enabled||!1,t}}]),t}(),CoreUtils=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"getStackedSeriesTotals\",value:function(){var t=this.w,e=[];if(0===t.globals.series.length)return e;for(var i=0;i<t.globals.series[t.globals.maxValsInArrayIndex].length;i++){for(var s=0,a=0;a<t.globals.series.length;a++)s+=t.globals.series[a][i];e.push(s)}return t.globals.stackedSeriesTotals=e,e}},{key:\"getSeriesTotalByIndex\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce(function(t,e){return t+e},0):this.w.globals.series[t].reduce(function(t,e){return t+e},0)}},{key:\"isSeriesNull\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter(function(t){return null!==t}):this.w.globals.series[t].filter(function(t){return null!==t})).length}},{key:\"seriesHaveSameValues\",value:function(t){return this.w.globals.series[t].every(function(t,e,i){return t===i[0]})}},{key:\"getLargestSeries\",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map(function(t){return t.length}).indexOf(Math.max.apply(Math,t.globals.series.map(function(t){return t.length})))}},{key:\"getLargestMarkerSize\",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach(function(t){e=Math.max(e,t)}),t.globals.markers.largestSize=e,e}},{key:\"getSeriesTotals\",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map(function(t,e){var i=0;if(Array.isArray(t))for(var s=0;s<t.length;s++)i+=t[s];else i+=t;return i})}},{key:\"getSeriesTotalsXRange\",value:function(t,e){var i=this.w;return i.globals.series.map(function(s,a){for(var r=0,n=0;n<s.length;n++)i.globals.seriesX[a][n]>t&&i.globals.seriesX[a][n]<e&&(r+=s[n]);return r})}},{key:\"getPercentSeries\",value:function(){var t=this.w;t.globals.seriesPercent=t.globals.series.map(function(e,i){var s=[];if(Array.isArray(e))for(var a=0;a<e.length;a++){var r=t.globals.stackedSeriesTotals[a],n=0;r&&(n=100*e[a]/r),s.push(n)}else{var o=100*e/t.globals.seriesTotals.reduce(function(t,e){return t+e},0);s.push(o)}return s})}},{key:\"getCalculatedRatios\",value:function(){var t,e,i,s,a,r=this.w.globals,n=[],o=[],l=.1,h=0;if(r.yRange=[],r.isMultipleYAxis)for(var c=0;c<r.minYArr.length;c++)r.yRange.push(Math.abs(r.minYArr[c]-r.maxYArr[c])),o.push(0);else r.yRange.push(Math.abs(r.minY-r.maxY));r.xRange=Math.abs(r.maxX-r.minX),r.zRange=Math.abs(r.maxZ-r.minZ);for(var d=0;d<r.yRange.length;d++)n.push(r.yRange[d]/r.gridHeight);if(e=r.xRange/r.gridWidth,i=Math.abs(r.initialmaxX-r.initialminX)/r.gridWidth,t=r.yRange/r.gridWidth,s=r.xRange/r.gridHeight,a=r.zRange/r.gridHeight*16,r.minY!==Number.MIN_VALUE&&0!==Math.abs(r.minY)&&(r.hasNegs=!0),r.isMultipleYAxis){o=[];for(var u=0;u<n.length;u++)o.push(-r.minYArr[u]/n[u])}else o.push(-r.minY/n[0]),r.minY!==Number.MIN_VALUE&&0!==Math.abs(r.minY)&&(l=-r.minY/t,h=r.minX/e);return{yRatio:n,invertedYRatio:t,zRatio:a,xRatio:e,initialXRatio:i,invertedXRatio:s,baseLineInvertedY:l,baseLineY:o,baseLineX:h}}},{key:\"getLogSeries\",value:function(t){var e=this.w;return e.globals.seriesLog=t.map(function(t,i){return e.config.yaxis[i]&&e.config.yaxis[i].logarithmic?t.map(function(t){return null===t?null:(Math.log(t)-Math.log(e.globals.minYArr[i]))/(Math.log(e.globals.maxYArr[i])-Math.log(e.globals.minYArr[i]))}):t}),e.globals.seriesLog}},{key:\"getLogYRatios\",value:function(t){var e=this,i=this.w,s=this.w.globals;return s.yLogRatio=t.slice(),s.logYRange=s.yRange.map(function(t,a){if(i.config.yaxis[a]&&e.w.config.yaxis[a].logarithmic){var r,n=-Number.MAX_VALUE,o=Number.MIN_VALUE;return s.seriesLog.forEach(function(t,e){t.forEach(function(t){i.config.yaxis[e]&&i.config.yaxis[e].logarithmic&&(n=Math.max(t,n),o=Math.min(t,o))})}),r=Math.pow(s.yRange[a],Math.abs(o-n)/s.yRange[a]),s.yLogRatio[a]=r/s.gridHeight,r}}),s.yLogRatio}}],[{key:\"checkComboSeries\",value:function(t){var e=!1,i=!1;return t.length&&void 0!==t[0].type&&(e=!0,t.forEach(function(t){\"bar\"!==t.type&&\"column\"!==t.type||(i=!0)})),{comboCharts:e,comboChartsHasBars:i}}},{key:\"extendArrayProps\",value:function(t,e){return e.yaxis&&(e=t.extendYAxis(e)),e.annotations&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),e.annotations.xaxis&&(e=t.extendXAxisAnnotations(e)),e.annotations.points&&(e=t.extendPointAnnotations(e))),e}}]),t}(),Config=function(){function t(e){_classCallCheck(this,t),this.opts=e}return _createClass(t,[{key:\"init\",value:function(){var t=this.opts,e=new Options,i=new Defaults(t);this.chartType=t.chart.type,\"histogram\"===this.chartType&&(t.chart.type=\"bar\",t=Utils.extend({plotOptions:{bar:{columnWidth:\"99.99%\"}}},t)),t=this.extendYAxis(t),t=this.extendAnnotations(t);var s=e.init(),a={};if(t&&\"object\"===_typeof(t)){var r={};switch(this.chartType){case\"line\":r=i.line();break;case\"area\":r=i.area();break;case\"bar\":r=i.bar();break;case\"candlestick\":r=i.candlestick();break;case\"rangeBar\":r=i.rangeBar();break;case\"histogram\":r=i.bar();break;case\"bubble\":r=i.bubble();break;case\"scatter\":r=i.scatter();break;case\"heatmap\":r=i.heatmap();break;case\"pie\":r=i.pie();break;case\"donut\":r=i.donut();break;case\"radar\":r=i.radar();break;case\"radialBar\":r=i.radialBar();break;default:r=i.line()}t.chart.brush&&t.chart.brush.enabled&&(r=i.brush(r)),t.chart.stacked&&\"100%\"===t.chart.stackType&&i.stacked100(),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(t),t.xaxis=t.xaxis||window.Apex.xaxis||{};var n=CoreUtils.checkComboSeries(t.series);\"line\"!==t.chart.type&&\"area\"!==t.chart.type&&\"scatter\"!==t.chart.type||n.comboChartsHasBars||\"datetime\"===t.xaxis.type||\"numeric\"===t.xaxis.type||\"between\"===t.xaxis.tickPlacement||(t=Defaults.convertCatToNumeric(t)),(t.chart.sparkline&&t.chart.sparkline.enabled||window.Apex.chart&&window.Apex.chart.sparkline&&window.Apex.chart.sparkline.enabled)&&(r=i.sparkline(r)),a=Utils.extend(s,r)}var o=Utils.extend(a,window.Apex);return s=Utils.extend(o,t),s=this.handleUserInputErrors(s)}},{key:\"extendYAxis\",value:function(t){var e=new Options;return void 0===t.yaxis&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=Utils.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[Utils.extend(e.yAxis,t.yaxis)]:t.yaxis=Utils.extendArray(t.yaxis,e.yAxis),t}},{key:\"extendAnnotations\",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:\"extendYAxisAnnotations\",value:function(t){var e=new Options;return t.annotations.yaxis=Utils.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:\"extendXAxisAnnotations\",value:function(t){var e=new Options;return t.annotations.xaxis=Utils.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:\"extendPointAnnotations\",value:function(t){var e=new Options;return t.annotations.points=Utils.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:\"checkForDarkTheme\",value:function(t){t.theme&&\"dark\"===t.theme.mode&&(t.tooltip||(t.tooltip={}),\"light\"!==t.tooltip.theme&&(t.tooltip.theme=\"dark\"),t.chart.foreColor||(t.chart.foreColor=\"#f6f7f8\"),t.theme.palette||(t.theme.palette=\"palette4\"))}},{key:\"handleUserInputErrors\",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error(\"tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.\");if(e.chart.scroller&&console.warn(\"Scroller has been deprecated since v2.0.0. Please remove the configuration for chart.scroller\"),(\"bar\"===e.chart.type||\"rangeBar\"===e.chart.type)&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error(\"Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false\");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return\"bar\"!==e.chart.type&&\"rangeBar\"!==e.chart.type||e.tooltip.shared&&(\"barWidth\"===e.xaxis.crosshairs.width&&e.series.length>1&&(console.warn('crosshairs.width = \"barWidth\" is only supported in single series, not in a multi-series barChart.'),e.xaxis.crosshairs.width=\"tickWidth\"),e.plotOptions.bar.horizontal&&(e.states.hover.type=\"none\",e.tooltip.shared=!1),e.tooltip.followCursor||(console.warn(\"followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true\",\"color: blue;\"),e.tooltip.followCursor=!0)),\"candlestick\"===e.chart.type&&e.yaxis[0].reversed&&(console.warn(\"Reversed y-axis in candlestick chart is not supported.\"),e.yaxis[0].reversed=!1),e.chart.group&&0===e.yaxis[0].labels.minWidth&&console.warn(\"It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour.\"),Array.isArray(e.stroke.width)&&\"line\"!==e.chart.type&&\"area\"!==e.chart.type&&(console.warn(\"stroke.width option accepts array only for line and area charts. Reverted back to Number\"),e.stroke.width=e.stroke.width[0]),e}}]),t}(),Globals=function(){function t(){_classCallCheck(this,t)}return _createClass(t,[{key:\"globalVars\",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:\"ontouchstart\"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,lastXAxis:[],lastYAxis:[],series:[],seriesRangeStart:[],seriesRangeEnd:[],seriesPercent:[],seriesTotals:[],stackedSeriesTotals:[],seriesX:[],seriesZ:[],labels:[],timelineLabels:[],invertedTimelineLabels:[],seriesNames:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,selectedDataPoints:[],ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],padHorizontal:0,maxValsInArrayIndex:0,radialSize:0,zoomEnabled:\"zoom\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:\"pan\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:\"selection\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,minY:Number.MIN_VALUE,maxY:-Number.MAX_VALUE,minYArr:[],maxYArr:[],maxX:-Number.MAX_VALUE,initialmaxX:-Number.MAX_VALUE,minX:Number.MIN_VALUE,initialminX:Number.MIN_VALUE,minZ:Number.MIN_VALUE,maxZ:-Number.MAX_VALUE,minXDiff:Number.MAX_VALUE,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yRange:[],zRange:0,xRange:0,yValueDecimal:0,total:0,SVGNS:\"http://www.w3.org/2000/svg\",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,delayedElements:[],axisCharts:!0,isXNumeric:!1,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,comboChartsHasBars:!1,dataChanged:!1,previousPaths:[],seriesXvalues:[],seriesYvalues:[],seriesCandleO:[],seriesCandleH:[],seriesCandleL:[],seriesCandleC:[],allSeriesHasEqualX:!0,dataPoints:0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,yAxisScale:[],xAxisScale:null,xAxisTicksPositions:[],timescaleTicks:[],rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yLabelsCoords:[],yTitleCoords:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,tooltipOpts:null}}},{key:\"init\",value:function(t){var e=this.globalVars(t);return e.initialConfig=Utils.extend({},t),e.initialSeries=JSON.parse(JSON.stringify(e.initialConfig.series)),e.lastXAxis=JSON.parse(JSON.stringify(e.initialConfig.xaxis)),e.lastYAxis=JSON.parse(JSON.stringify(e.initialConfig.yaxis)),e}}]),t}(),Base=function(){function t(e){_classCallCheck(this,t),this.opts=e}return _createClass(t,[{key:\"init\",value:function(){var t=new Config(this.opts).init();return{config:t,globals:(new Globals).init(t)}}}]),t}(),Fill=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return _createClass(t,[{key:\"clippedImgArea\",value:function(t){var e=this.w,i=e.config,s=parseInt(e.globals.gridWidth),a=parseInt(e.globals.gridHeight),r=s>a?s:a,n=t.image,o=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(o=i.fill.image.width+1,l=i.fill.image.height):(o=r+1,l=r):(o=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,\"pattern\");Graphics.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:\"userSpaceOnUse\",width:o+\"px\",height:l+\"px\"});var c=document.createElementNS(e.globals.SVGNS,\"image\");h.appendChild(c),c.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",n),Graphics.setAttrs(c,{x:0,y:0,preserveAspectRatio:\"none\",width:o+\"px\",height:l+\"px\"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:\"getSeriesIndex\",value:function(t){var e=this.w;return\"bar\"===e.config.chart.type&&e.config.plotOptions.bar.distributed||\"heatmap\"===e.config.chart.type?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:\"fillPath\",value:function(t){var e=this.w;this.opts=t;var i,s,a,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var n=this.getFillColors()[this.seriesIndex];\"function\"==typeof n&&(n=n({seriesIndex:this.seriesIndex,value:t.value,w:e}));var o=this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity,h=n;return t.color&&(n=t.color),-1===n.indexOf(\"rgb\")?h=Utils.hexToRgba(n,l):n.indexOf(\"rgba\")>-1&&(l=\"0.\"+Utils.getOpacityFromRGBA(n)),\"pattern\"===o&&(s=this.handlePatternFill(s,n,l,h)),\"gradient\"===o&&(a=this.handleGradientFill(a,n,l,this.seriesIndex)),r.fill.image.src.length>0&&\"image\"===o?t.seriesNumber<r.fill.image.src.length?(this.clippedImgArea({opacity:l,image:r.fill.image.src[t.seriesNumber],patternUnits:t.patternUnits,patternID:\"pattern\".concat(e.globals.cuid).concat(t.seriesNumber+1)}),i=\"url(#pattern\".concat(e.globals.cuid).concat(t.seriesNumber+1,\")\")):i=h:i=\"gradient\"===o?a:\"pattern\"===o?s:h,t.solid&&(i=h),i}},{key:\"getFillType\",value:function(t){var e=this.w;return Array.isArray(e.config.fill.type)?e.config.fill.type[t]:e.config.fill.type}},{key:\"getFillColors\",value:function(){var t=this.w,e=t.config,i=this.opts,s=[];return t.globals.comboCharts?\"line\"===t.config.series[this.seriesIndex].type?t.globals.stroke.colors instanceof Array?s=t.globals.stroke.colors:s.push(t.globals.stroke.colors):t.globals.fill.colors instanceof Array?s=t.globals.fill.colors:s.push(t.globals.fill.colors):\"line\"===e.chart.type?t.globals.stroke.colors instanceof Array?s=t.globals.stroke.colors:s.push(t.globals.stroke.colors):t.globals.fill.colors instanceof Array?s=t.globals.fill.colors:s.push(t.globals.fill.colors),void 0!==i.fillColors&&(s=[],i.fillColors instanceof Array?s=i.fillColors.slice():s.push(i.fillColors)),s}},{key:\"handlePatternFill\",value:function(t,e,i,s){var a=this.w.config,r=this.opts,n=new Graphics(this.ctx),o=void 0===a.fill.pattern.strokeWidth?Array.isArray(a.stroke.width)?a.stroke.width[this.seriesIndex]:a.stroke.width:Array.isArray(a.fill.pattern.strokeWidth)?a.fill.pattern.strokeWidth[this.seriesIndex]:a.fill.pattern.strokeWidth,l=e;a.fill.pattern.style instanceof Array?t=void 0!==a.fill.pattern.style[r.seriesNumber]?n.drawPattern(a.fill.pattern.style[r.seriesNumber],a.fill.pattern.width,a.fill.pattern.height,l,o,i):s:t=n.drawPattern(a.fill.pattern.style,a.fill.pattern.width,a.fill.pattern.height,l,o,i);return t}},{key:\"handleGradientFill\",value:function(t,e,i,s){var a,r,n=this.w.config,o=this.opts,l=new Graphics(this.ctx),h=new Utils,c=n.fill.gradient.type,d=void 0===n.fill.gradient.opacityFrom?i:Array.isArray(n.fill.gradient.opacityFrom)?n.fill.gradient.opacityFrom[s]:n.fill.gradient.opacityFrom,u=void 0===n.fill.gradient.opacityTo?i:Array.isArray(n.fill.gradient.opacityTo)?n.fill.gradient.opacityTo[s]:n.fill.gradient.opacityTo;if(a=e,r=void 0===n.fill.gradient.gradientToColors||0===n.fill.gradient.gradientToColors.length?\"dark\"===n.fill.gradient.shade?h.shadeColor(-1*parseFloat(n.fill.gradient.shadeIntensity),e):h.shadeColor(parseFloat(n.fill.gradient.shadeIntensity),e):n.fill.gradient.gradientToColors[o.seriesNumber],n.fill.gradient.inverseColors){var g=a;a=r,r=g}return l.drawGradient(c,a,r,d,u,o.size,n.fill.gradient.stops,n.fill.gradient.colorStops,s)}}]),t}(),Markers=function(){function t(e,i){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"setGlobalMarkerSize\",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length<t.globals.series.length+1)for(var e=0;e<=t.globals.series.length;e++)void 0===t.globals.markers.size[e]&&t.globals.markers.size.push(t.globals.markers.size[0])}else t.globals.markers.size=t.config.series.map(function(e){return t.config.markers.size})}},{key:\"plotChartMarkers\",value:function(t,e,i){var s,a=this.w,r=e,n=t,o=null,l=new Graphics(this.ctx);if(a.globals.markers.size[e]>0&&(o=l.group({class:\"apexcharts-series-markers\"})).attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(a.globals.cuid,\")\")),n.x instanceof Array)for(var h=0;h<n.x.length;h++){var c=i;1===i&&0===h&&(c=0),1===i&&1===h&&(c=1);var d=\"apexcharts-marker\";if(\"line\"!==a.config.chart.type&&\"area\"!==a.config.chart.type||a.globals.comboCharts||a.config.tooltip.intersect||(d+=\" no-pointer-events\"),Array.isArray(a.config.markers.size)?a.globals.markers.size[e]>0:a.config.markers.size>0){Utils.isNumber(n.y[h])?d+=\" w\".concat((Math.random()+1).toString(36).substring(4)):d=\"apexcharts-nullpoint\";var u=this.getMarkerConfig(d,e,c);a.config.series[r].data[i]&&(a.config.series[r].data[i].fillColor&&(u.pointFillColor=a.config.series[r].data[i].fillColor),a.config.series[r].data[i].strokeColor&&(u.pointStrokeColor=a.config.series[r].data[i].strokeColor)),(s=l.drawMarker(n.x[h],n.y[h],u)).attr(\"rel\",c),s.attr(\"j\",c),s.attr(\"index\",e),s.node.setAttribute(\"default-marker-size\",u.pSize),new Filters(this.ctx).setSelectionFilter(s,e,c),this.addEvents(s),o&&o.add(s)}else void 0===a.globals.pointsArray[e]&&(a.globals.pointsArray[e]=[]),a.globals.pointsArray[e].push([n.x[h],n.y[h]])}return o}},{key:\"getMarkerConfig\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=this.w,a=this.getMarkerStyle(e),r=s.globals.markers.size[e];return null!==i&&s.config.markers.discrete.length&&s.config.markers.discrete.map(function(t){t.seriesIndex===e&&t.dataPointIndex===i&&(a.pointStrokeColor=t.strokeColor,a.pointFillColor=t.fillColor,r=t.size)}),{pSize:r,pRadius:s.config.markers.radius,pWidth:s.config.markers.strokeWidth,pointStrokeColor:a.pointStrokeColor,pointFillColor:a.pointFillColor,shape:s.config.markers.shape instanceof Array?s.config.markers.shape[e]:s.config.markers.shape,class:t,pointStrokeOpacity:s.config.markers.strokeOpacity,pointFillOpacity:s.config.markers.fillOpacity,seriesIndex:e}}},{key:\"addEvents\",value:function(t){var e=this.w,i=new Graphics(this.ctx);t.node.addEventListener(\"mouseenter\",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener(\"mouseleave\",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener(\"mousedown\",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener(\"click\",e.config.markers.onClick),t.node.addEventListener(\"dblclick\",e.config.markers.onDblClick),t.node.addEventListener(\"touchstart\",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:\"getMarkerStyle\",value:function(t){var e=this.w,i=e.globals.markers.colors,s=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:s instanceof Array?s[t]:s,pointFillColor:i instanceof Array?i[t]:i}}}]),t}(),Scatter=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.radiusSizes=[]}return _createClass(t,[{key:\"draw\",value:function(t,e,i){var s=this.w,a=new Graphics(this.ctx),r=i.realIndex,n=i.pointsPos,o=i.zRatio,l=i.elParent,h=a.group({class:\"apexcharts-series-markers apexcharts-series-\".concat(s.config.chart.type)});if(h.attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(s.globals.cuid,\")\")),n.x instanceof Array)for(var c=0;c<n.x.length;c++){var d=e+1,u=!0;0===e&&0===c&&(d=0),0===e&&1===c&&(d=1);var g=0,f=s.globals.markers.size[r];o!==1/0&&(f=s.globals.seriesZ[r][d]/o,void 0===this.radiusSizes[r]&&this.radiusSizes.push([]),this.radiusSizes[r].push(f)),s.config.chart.animations.enabled||(g=f);var p=n.x[c],x=n.y[c];if(g=g||0,(0===p&&0===x||null===x||void 0===s.globals.series[r][d])&&(u=!1),u){var m=this.drawPoint(p,x,g,f,r,d,e);h.add(m)}l.add(h)}}},{key:\"drawPoint\",value:function(t,e,i,s,a,r,n){var o=this.w,l=a,h=new Animations(this.ctx),c=new Filters(this.ctx),d=new Fill(this.ctx),u=new Markers(this.ctx),g=new Graphics(this.ctx),f=u.getMarkerConfig(\"apexcharts-marker\",l),p=d.fillPath({seriesNumber:a,patternUnits:\"objectBoundingBox\",value:o.globals.series[a][n]}),x=g.drawCircle(i);if(o.config.series[l].data[r]&&o.config.series[l].data[r].fillColor&&(p=o.config.series[l].data[r].fillColor),x.attr({cx:t,cy:e,fill:p,stroke:f.pointStrokeColor,strokeWidth:f.pWidth}),o.config.chart.dropShadow.enabled){var m=o.config.chart.dropShadow;c.dropShadow(x,m,a)}if(this.initialAnim&&!o.globals.dataChanged){var b=1;o.globals.resized||(b=o.config.chart.animations.speed),h.animateCircleRadius(x,0,s,b,o.globals.easing)}if(o.globals.dataChanged)if(this.dynamicAnim){var v,y,w,k,A=o.config.chart.animations.dynamicAnimation.speed;null!=(k=o.globals.previousPaths[a]&&o.globals.previousPaths[a][n])&&(v=k.x,y=k.y,w=void 0!==k.r?k.r:s);for(var S=0;S<o.globals.collapsedSeries.length;S++)o.globals.collapsedSeries[S].index===a&&(A=1,s=0);0===t&&0===e&&(s=0),h.animateCircle(x,{cx:v,cy:y,r:w},{cx:t,cy:e,r:s},A,o.globals.easing)}else x.attr({r:s});return x.attr({rel:r,j:r,index:a,\"default-marker-size\":s}),c.setSelectionFilter(x,a,r),u.addEvents(x),x.node.classList.add(\"apexcharts-marker\"),x}},{key:\"centerTextInBubble\",value:function(t){var e=this.w;return{y:t+=parseInt(e.config.dataLabels.style.fontSize)/4}}}]),t}(),DataLabels=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"dataLabelsCorrection\",value:function(t,e,i,s,a,r,n){var o=this.w,l=!1,h=new Graphics(this.ctx).getTextRects(i,n),c=h.width,d=h.height;void 0===o.globals.dataLabelsRects[s]&&(o.globals.dataLabelsRects[s]=[]),o.globals.dataLabelsRects[s].push({x:t,y:e,width:c,height:d});var u=o.globals.dataLabelsRects[s].length-2,g=void 0!==o.globals.lastDrawnDataLabelsIndexes[s]?o.globals.lastDrawnDataLabelsIndexes[s][o.globals.lastDrawnDataLabelsIndexes[s].length-1]:0;if(void 0!==o.globals.dataLabelsRects[s][u]){var f=o.globals.dataLabelsRects[s][g];(t>f.x+f.width+2||e>f.y+f.height+2||t+c<f.x)&&(l=!0)}return(0===a||r)&&(l=!0),{x:t,y:e,textRects:h,drawnextLabel:l}}},{key:\"drawDataLabel\",value:function(t,e,i){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"top\",a=this.w,r=new Graphics(this.ctx),n=a.config.dataLabels,o=0,l=0,h=i,c=null;if(!n.enabled||t.x instanceof Array!=!0)return c;c=r.group({class:\"apexcharts-data-labels\"});for(var d=0;d<t.x.length;d++)if(o=t.x[d]+n.offsetX,l=t.y[d]+n.offsetY-a.globals.markers.size[e]-5,\"bottom\"===s&&(l=l+2*a.globals.markers.size[e]+1.4*parseInt(n.style.fontSize)),!isNaN(o)){1===i&&0===d&&(h=0),1===i&&1===d&&(h=1);var u=a.globals.series[e][h],g=\"\";if(\"bubble\"===a.config.chart.type)g=a.globals.seriesZ[e][h],l=t.y[d]+a.config.dataLabels.offsetY,l=new Scatter(this.ctx).centerTextInBubble(l,e,h).y;else void 0!==u&&(g=a.config.dataLabels.formatter(u,{ctx:this.ctx,seriesIndex:e,dataPointIndex:h,w:a}));this.plotDataLabelsText({x:o,y:l,text:g,i:e,j:h,parent:c,offsetCorrection:!0,dataLabelsConfig:a.config.dataLabels})}return c}},{key:\"plotDataLabelsText\",value:function(t){var e=this.w,i=new Graphics(this.ctx),s=t.x,a=t.y,r=t.i,n=t.j,o=t.text,l=t.textAnchor,h=t.parent,c=t.dataLabelsConfig,d=t.alwaysDrawDataLabel,u=t.offsetCorrection;if(!(Array.isArray(e.config.dataLabels.enabledOnSeries)&&e.config.dataLabels.enabledOnSeries.indexOf(r)<0)){var g={x:s,y:a,drawnextLabel:!0};if(u&&(g=this.dataLabelsCorrection(s,a,o,r,n,d,parseInt(c.style.fontSize))),e.globals.zoomed||(s=g.x,a=g.y),g.textRects&&(s+g.textRects.width<10||s>e.globals.gridWidth+10)&&(o=\"\"),g.drawnextLabel){var f=i.drawText({width:100,height:parseInt(c.style.fontSize),x:s,y:a,foreColor:e.globals.dataLabels.style.colors[r],textAnchor:l||c.textAnchor,text:o,fontSize:c.style.fontSize,fontFamily:c.style.fontFamily});if(f.attr({class:\"apexcharts-datalabel\",cx:s,cy:a}),c.dropShadow.enabled){var p=c.dropShadow;new Filters(this.ctx).dropShadow(f,p)}h.add(f),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(n)}}}}]),t}(),Bar=function(){function t(e,i){_classCallCheck(this,t),this.ctx=e,this.w=e.w;var s=this.w;this.barOptions=s.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=s.config.stroke.width,this.isNullValue=!1,this.xyRatios=i,null!==this.xyRatios&&(this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.invertedXRatio=i.invertedXRatio,this.invertedYRatio=i.invertedYRatio,this.baseLineY=i.baseLineY,this.baseLineInvertedY=i.baseLineInvertedY),this.yaxisIndex=0,this.seriesLen=0}return _createClass(t,[{key:\"draw\",value:function(t,e){var i=this.w,s=new Graphics(this.ctx),a=new CoreUtils(this.ctx,i);t=a.getLogSeries(t),this.series=t,this.yRatio=a.getLogYRatios(this.yRatio),this.initVariables(t);var r=s.group({class:\"apexcharts-bar-series apexcharts-plot-series\"});i.config.dataLabels.enabled&&this.totalItems>i.config.plotOptions.bar.dataLabels.maxItems&&console.warn(\"WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.\");for(var n=0,o=0;n<t.length;n++,o++){var l,h,c,d,u=void 0,g=void 0,f=void 0,p=void 0,x=[],m=[],b=i.globals.comboCharts?e[n]:n,v=s.group({class:\"apexcharts-series\",rel:n+1,seriesName:Utils.escapeString(i.globals.seriesNames[b]),\"data:realIndex\":b});this.ctx.series.addCollapsedClassToSeries(v,b),t[n].length>0&&(this.visibleI=this.visibleI+1);var y=0,w=0,k=0;this.yRatio.length>1&&(this.yaxisIndex=b),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var A=this.initialPositions();p=A.y,w=A.barHeight,h=A.yDivision,d=A.zeroW,f=A.x,k=A.barWidth,l=A.xDivision,c=A.zeroH,this.horizontal||m.push(f+k/2);for(var S=s.group({class:\"apexcharts-datalabels\"}),C=0,L=i.globals.dataPoints;C<i.globals.dataPoints;C++,L--){void 0===this.series[n][C]||null===t[n][C]?this.isNullValue=!0:this.isNullValue=!1,i.config.stroke.show&&(y=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[b]:this.strokeWidth);var P=null;this.isHorizontal?(P=this.drawBarPaths({indexes:{i:n,j:C,realIndex:b,bc:o},barHeight:w,strokeWidth:y,pathTo:u,pathFrom:g,zeroW:d,x:f,y:p,yDivision:h,elSeries:v}),k=this.series[n][C]/this.invertedYRatio):(P=this.drawColumnPaths({indexes:{i:n,j:C,realIndex:b,bc:o},x:f,y:p,xDivision:l,pathTo:u,pathFrom:g,barWidth:k,zeroH:c,strokeWidth:y,elSeries:v}),w=this.series[n][C]/this.yRatio[this.yaxisIndex]),u=P.pathTo,g=P.pathFrom,p=P.y,f=P.x,C>0&&m.push(f+k/2),x.push(p);var z=this.getPathFillColor(t,n,C,b);v=this.renderSeries({realIndex:b,pathFill:z,j:C,i:n,pathFrom:g,pathTo:u,strokeWidth:y,elSeries:v,x:f,y:p,series:t,barHeight:w,barWidth:k,elDataLabelsWrap:S,visibleSeries:this.visibleI,type:\"bar\"})}i.globals.seriesXvalues[b]=m,i.globals.seriesYvalues[b]=x,r.add(v)}return r}},{key:\"getPathFillColor\",value:function(t,e,i,s){var a=this.w,r=new Fill(this.ctx),n=null,o=this.barOptions.distributed?i:e;this.barOptions.colors.ranges.length>0&&this.barOptions.colors.ranges.map(function(s){t[e][i]>=s.from&&t[e][i]<=s.to&&(n=s.color)});return a.config.series[e].data[i]&&a.config.series[e].data[i].fillColor&&(n=a.config.series[e].data[i].fillColor),r.fillPath({seriesNumber:this.barOptions.distributed?o:s,color:n,value:t[e][i]})}},{key:\"renderSeries\",value:function(t){var e=t.realIndex,i=t.pathFill,s=t.lineFill,a=t.j,r=t.i,n=t.pathFrom,o=t.pathTo,l=t.strokeWidth,h=t.elSeries,c=t.x,d=t.y,u=t.series,g=t.barHeight,f=t.barWidth,p=t.elDataLabelsWrap,x=t.visibleSeries,m=t.type,b=this.w,v=new Graphics(this.ctx);s||(s=this.barOptions.distributed?b.globals.stroke.colors[a]:b.globals.stroke.colors[e]),b.config.series[r].data[a]&&b.config.series[r].data[a].strokeColor&&(s=b.config.series[r].data[a].strokeColor),this.isNullValue&&(i=\"none\");var y=a/b.config.chart.animations.animateGradually.delay*(b.config.chart.animations.speed/b.globals.dataPoints)/2.4,w=v.renderPaths({i:r,j:a,realIndex:e,pathFrom:n,pathTo:o,stroke:s,strokeWidth:l,strokeLineCap:b.config.stroke.lineCap,fill:i,animationDelay:y,initialSpeed:b.config.chart.animations.speed,dataChangeSpeed:b.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(m,\"-area\")});w.attr(\"clip-path\",\"url(#gridRectMask\".concat(b.globals.cuid,\")\")),new Filters(this.ctx).setSelectionFilter(w,e,a),h.add(w);var k=this.calculateDataLabelsPos({x:c,y:d,i:r,j:a,series:u,realIndex:e,barHeight:g,barWidth:f,renderedPath:w,visibleSeries:x});return null!==k&&p.add(k),h.add(p),h}},{key:\"initVariables\",value:function(t){var e=this.w;this.series=t,this.totalItems=0,this.seriesLen=0,this.visibleI=-1,this.visibleItems=1;for(var i=0;i<t.length;i++)if(t[i].length>0&&(this.seriesLen=this.seriesLen+1,this.totalItems+=t[i].length),e.globals.isXNumeric)for(var s=0;s<t[i].length;s++)e.globals.seriesX[i][s]>e.globals.minX&&e.globals.seriesX[i][s]<e.globals.maxX&&this.visibleItems++;else this.visibleItems=e.globals.dataPoints;0===this.seriesLen&&(this.seriesLen=1)}},{key:\"initialPositions\",value:function(){var t,e,i,s,a,r,n,o,l=this.w;return this.isHorizontal?(a=(i=l.globals.gridHeight/l.globals.dataPoints)/this.seriesLen,l.globals.isXNumeric&&(a=(i=l.globals.gridHeight/this.totalItems)/this.seriesLen),a=a*parseInt(this.barOptions.barHeight)/100,o=this.baseLineInvertedY+l.globals.padHorizontal+(this.isReversed?l.globals.gridWidth:0)-(this.isReversed?2*this.baseLineInvertedY:0),e=(i-a*this.seriesLen)/2):(r=(s=l.globals.gridWidth/this.visibleItems)/this.seriesLen*parseInt(this.barOptions.columnWidth)/100,l.globals.isXNumeric&&(l.globals.minXDiff&&(s=l.globals.minXDiff/this.xRatio),r=s/this.seriesLen*parseInt(this.barOptions.columnWidth)/100),n=l.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?l.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(s-r*this.seriesLen)/2),{x:t,y:e,yDivision:i,xDivision:s,barHeight:a,barWidth:r,zeroH:n,zeroW:o}}},{key:\"drawBarPaths\",value:function(t){var e=t.indexes,i=t.barHeight,s=t.strokeWidth,a=t.pathTo,r=t.pathFrom,n=t.zeroW,o=t.x,l=t.y,h=t.yDivision,c=t.elSeries,d=this.w,u=new Graphics(this.ctx),g=e.i,f=e.j,p=e.realIndex,x=e.bc;d.globals.isXNumeric&&(l=(d.globals.seriesX[g][f]-d.globals.minX)/this.invertedXRatio-i);var m=l+i*this.visibleI;a=u.move(n,m),r=u.move(n,m),d.globals.previousPaths.length>0&&(r=this.getPathFrom(p,f));var b={barHeight:i,strokeWidth:s,barYPosition:m,x:o=void 0===this.series[g][f]||null===this.series[g][f]?n:n+this.series[g][f]/this.invertedYRatio-2*(this.isReversed?this.series[g][f]/this.invertedYRatio:0),zeroW:n},v=this.barEndingShape(d,b,this.series,g,f);if(a=a+u.line(v.newX,m)+v.path+u.line(n,m+i-s)+u.line(n,m),r=r+u.line(n,m)+v.ending_p_from+u.line(n,m+i-s)+u.line(n,m+i-s)+u.line(n,m),d.globals.isXNumeric||(l+=h),this.barOptions.colors.backgroundBarColors.length>0&&0===g){x>=this.barOptions.colors.backgroundBarColors.length&&(x=0);var y=this.barOptions.colors.backgroundBarColors[x],w=u.drawRect(0,m-i*this.visibleI,d.globals.gridWidth,i*this.seriesLen,0,y,this.barOptions.colors.backgroundBarOpacity);c.add(w),w.node.classList.add(\"apexcharts-backgroundBar\")}return{pathTo:a,pathFrom:r,x:o,y:l,barYPosition:m}}},{key:\"drawColumnPaths\",value:function(t){var e=t.indexes,i=t.x,s=t.y,a=t.xDivision,r=t.pathTo,n=t.pathFrom,o=t.barWidth,l=t.zeroH,h=t.strokeWidth,c=t.elSeries,d=this.w,u=new Graphics(this.ctx),g=e.i,f=e.j,p=e.realIndex,x=e.bc;d.globals.isXNumeric&&(i=(d.globals.seriesX[g][f]-d.globals.minX)/this.xRatio-o/2);var m=i+o*this.visibleI;r=u.move(m,l),n=u.move(m,l),d.globals.previousPaths.length>0&&(n=this.getPathFrom(p,f));var b={barWidth:o,strokeWidth:h,barXPosition:m,y:s=void 0===this.series[g][f]||null===this.series[g][f]?l:l-this.series[g][f]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[g][f]/this.yRatio[this.yaxisIndex]:0),zeroH:l},v=this.barEndingShape(d,b,this.series,g,f);if(r=r+u.line(m,v.newY)+v.path+u.line(m+o-h,l)+u.line(m-h/2,l),n=n+u.line(m,l)+v.ending_p_from+u.line(m+o-h,l)+u.line(m+o-h,l)+u.line(m-h/2,l),d.globals.isXNumeric||(i+=a),this.barOptions.colors.backgroundBarColors.length>0&&0===g){x>=this.barOptions.colors.backgroundBarColors.length&&(x=0);var y=this.barOptions.colors.backgroundBarColors[x],w=u.drawRect(m-o*this.visibleI,0,o*this.seriesLen,d.globals.gridHeight,0,y,this.barOptions.colors.backgroundBarOpacity);c.add(w),w.node.classList.add(\"apexcharts-backgroundBar\")}return{pathTo:r,pathFrom:n,x:i,y:s,barXPosition:m}}},{key:\"getPathFrom\",value:function(t,e){for(var i,s=this.w,a=0;a<s.globals.previousPaths.length;a++){var r=s.globals.previousPaths[a];r.paths.length>0&&parseInt(r.realIndex)===parseInt(t)&&void 0!==s.globals.previousPaths[a].paths[e]&&(i=s.globals.previousPaths[a].paths[e].d)}return i}},{key:\"calculateDataLabelsPos\",value:function(t){var e=t.x,i=t.y,s=t.i,a=t.j,r=t.realIndex,n=t.series,o=t.barHeight,l=t.barWidth,h=t.visibleSeries,c=t.renderedPath,d=this.w,u=new Graphics(this.ctx),g=Array.isArray(this.strokeWidth)?this.strokeWidth[r]:this.strokeWidth,f=e+parseFloat(l*h),p=i+parseFloat(o*h);d.globals.isXNumeric&&!d.globals.isBarHorizontal&&(f=e+parseFloat(l*(h+1))-g,p=i+parseFloat(o*(h+1))-g);var x=e,m=i,b={},v=d.config.dataLabels,y=this.barOptions.dataLabels,w=v.offsetX,k=v.offsetY,A={width:0,height:0};return d.config.dataLabels.enabled&&(A=u.getTextRects(d.globals.yLabelFormatters[0](d.globals.maxY),parseInt(v.style.fontSize))),b=this.isHorizontal?this.calculateBarsDataLabelsPosition({x:e,y:i,i:s,j:a,renderedPath:c,bcy:p,barHeight:o,barWidth:l,textRects:A,strokeWidth:g,dataLabelsX:x,dataLabelsY:m,barDataLabelsConfig:y,offX:w,offY:k}):this.calculateColumnsDataLabelsPosition({x:e,y:i,i:s,j:a,renderedPath:c,realIndex:r,bcx:f,bcy:p,barHeight:o,barWidth:l,textRects:A,strokeWidth:g,dataLabelsY:m,barDataLabelsConfig:y,offX:w,offY:k}),c.attr({cy:b.bcy,cx:b.bcx,j:a,val:n[s][a],barHeight:o,barWidth:l}),this.drawCalculatedDataLabels({x:b.dataLabelsX,y:b.dataLabelsY,val:n[s][a],i:r,j:a,barWidth:l,barHeight:o,textRects:A,dataLabelsConfig:v})}},{key:\"calculateColumnsDataLabelsPosition\",value:function(t){var e,i=this.w,s=t.i,a=t.j,r=t.y,n=t.bcx,o=t.barWidth,l=t.barHeight,h=t.textRects,c=t.dataLabelsY,d=t.barDataLabelsConfig,u=t.strokeWidth,g=t.offX,f=t.offY,p=i.globals.gridWidth/i.globals.dataPoints;n-=u/2,e=i.globals.isXNumeric?n-o/2+g:n-p+o/2+g;var x=this.series[s][a]<=0;switch(this.isReversed&&(r-=l),d.position){case\"center\":c=x?r+l/2+h.height/2+f:r+l/2+h.height/2-f;break;case\"bottom\":c=x?r+l+h.height+u+f:r+l-h.height/2+u-f;break;case\"top\":c=x?r-h.height/2-f:r+h.height+f}return i.config.chart.stacked||(c<0?c=0+u:c+h.height/3>i.globals.gridHeight&&(c=i.globals.gridHeight-u)),{bcx:n,bcy:r,dataLabelsX:e,dataLabelsY:c}}},{key:\"calculateBarsDataLabelsPosition\",value:function(t){var e=this.w,i=t.x,s=t.i,a=t.j,r=t.bcy,n=t.barHeight,o=t.barWidth,l=t.textRects,h=t.dataLabelsX,c=t.strokeWidth,d=t.barDataLabelsConfig,u=t.offX,g=t.offY,f=r-e.globals.gridHeight/e.globals.dataPoints+n/2+l.height/2+g-3,p=this.series[s][a]<=0;switch(this.isReversed&&(i+=o),d.position){case\"center\":h=p?i-o/2-u:i-o/2+u;break;case\"bottom\":h=p?i-o-c-Math.round(l.width/2)-u:i-o+c+Math.round(l.width/2)+u;break;case\"top\":h=p?i-c+Math.round(l.width/2)-u:i-c-Math.round(l.width/2)+u}return e.config.chart.stacked||(h<0?h=h+l.width+c:h+l.width/2>e.globals.gridWidth&&(h=e.globals.gridWidth-l.width-c)),{bcx:i,bcy:r,dataLabelsX:h,dataLabelsY:f}}},{key:\"drawCalculatedDataLabels\",value:function(t){var e=t.x,i=t.y,s=t.val,a=t.i,r=t.j,n=t.textRects,o=t.barHeight,l=t.barWidth,h=t.dataLabelsConfig,c=this.w,d=new DataLabels(this.ctx),u=new Graphics(this.ctx),g=h.formatter,f=null,p=c.globals.collapsedSeriesIndices.indexOf(a)>-1;if(h.enabled&&!p){f=u.group({class:\"apexcharts-data-labels\"});var x=\"\";void 0!==s&&(x=g(s,{seriesIndex:a,dataPointIndex:r,w:c})),0===s&&c.config.chart.stacked&&(x=\"\"),c.config.chart.stacked&&this.barOptions.dataLabels.hideOverflowingLabels&&(this.isHorizontal?((l=this.series[a][r]/this.yRatio[this.yaxisIndex])>0&&n.width/1.6>l||l<0&&n.width/1.6<l)&&(x=\"\"):(o=this.series[a][r]/this.yRatio[this.yaxisIndex],n.height/1.6>o&&(x=\"\")));var m=_objectSpread({},h);this.isHorizontal&&s<0&&(\"start\"===h.textAnchor?m.textAnchor=\"end\":\"end\"===h.textAnchor&&(m.textAnchor=\"start\")),d.plotDataLabelsText({x:e,y:i,text:x,i:a,j:r,parent:f,dataLabelsConfig:m,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return f}},{key:\"barEndingShape\",value:function(t,e,i,s,a){var r=new Graphics(this.ctx);if(this.isHorizontal){var n=null,o=e.x;if(void 0!==i[s][a]||null!==i[s][a]){var l=i[s][a]<0,h=e.barHeight/2-e.strokeWidth;switch(l&&(h=-e.barHeight/2-e.strokeWidth),t.config.chart.stacked||\"rounded\"===this.barOptions.endingShape&&(o=e.x-h/2),this.barOptions.endingShape){case\"flat\":n=r.line(o,e.barYPosition+e.barHeight-e.strokeWidth);break;case\"rounded\":n=r.quadraticCurve(o+h,e.barYPosition+(e.barHeight-e.strokeWidth)/2,o,e.barYPosition+e.barHeight-e.strokeWidth)}}return{path:n,ending_p_from:\"\",newX:o}}var c=null,d=e.y;if(void 0!==i[s][a]||null!==i[s][a]){var u=i[s][a]<0,g=e.barWidth/2-e.strokeWidth;switch(u&&(g=-e.barWidth/2-e.strokeWidth),t.config.chart.stacked||\"rounded\"===this.barOptions.endingShape&&(d+=g/2),this.barOptions.endingShape){case\"flat\":c=r.line(e.barXPosition+e.barWidth-e.strokeWidth,d);break;case\"rounded\":c=r.quadraticCurve(e.barXPosition+(e.barWidth-e.strokeWidth)/2,d-g,e.barXPosition+e.barWidth-e.strokeWidth,d)}}return{path:c,ending_p_from:\"\",newY:d}}}]),t}(),BarStacked=function(t){function e(){return _classCallCheck(this,e),_possibleConstructorReturn(this,_getPrototypeOf(e).apply(this,arguments))}return _inherits(e,Bar),_createClass(e,[{key:\"draw\",value:function(t,e){var i=this.w;this.graphics=new Graphics(this.ctx),this.fill=new Fill(this.ctx),this.bar=new Bar(this.ctx,this.xyRatios);var s=new CoreUtils(this.ctx,i);t=s.getLogSeries(t),this.yRatio=s.getLogYRatios(this.yRatio),this.initVariables(t),\"100%\"===i.config.chart.stackType&&(t=i.globals.seriesPercent.slice()),this.series=t,this.totalItems=0,this.prevY=[],this.prevX=[],this.prevYF=[],this.prevXF=[],this.prevYVal=[],this.prevXVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[],this.yArrj=[],this.yArrjF=[],this.yArrjVal=[];for(var a=0;a<t.length;a++)t[a].length>0&&(this.totalItems+=t[a].length);for(var r=this.graphics.group({class:\"apexcharts-bar-series apexcharts-plot-series\"}),n=0,o=0,l=0,h=0;l<t.length;l++,h++){var c=void 0,d=void 0,u=void 0,g=void 0,f=void 0,p=void 0,x=[],m=[],b=i.globals.comboCharts?e[l]:l;this.yRatio.length>1&&(this.yaxisIndex=b),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var v=this.graphics.group({class:\"apexcharts-series\",seriesName:Utils.escapeString(i.globals.seriesNames[b]),rel:l+1,\"data:realIndex\":b}),y=this.graphics.group({class:\"apexcharts-datalabels\"}),w=0,k=0,A=0,S=this.initialPositions(n,o,u,g,f,p);o=S.y,k=S.barHeight,g=S.yDivision,p=S.zeroW,n=S.x,A=S.barWidth,u=S.xDivision,f=S.zeroH,this.yArrj=[],this.yArrjF=[],this.yArrjVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[];for(var C=0;C<i.globals.dataPoints;C++){i.config.stroke.show&&(w=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[b]:this.strokeWidth);var L=null;this.isHorizontal?(L=this.drawBarPaths({indexes:{i:l,j:C,realIndex:b,bc:h},barHeight:k,strokeWidth:w,pathTo:c,pathFrom:d,zeroW:p,x:n,y:o,yDivision:g,elSeries:v}),A=this.series[l][C]/this.invertedYRatio):(L=this.drawColumnPaths({indexes:{i:l,j:C,realIndex:b,bc:h},x:n,y:o,xDivision:u,pathTo:c,pathFrom:d,barWidth:A,zeroH:f,strokeWidth:w,elSeries:v}),k=this.series[l][C]/this.yRatio[this.yaxisIndex]),c=L.pathTo,d=L.pathFrom,o=L.y,n=L.x,x.push(n),m.push(o);var P=this.bar.getPathFillColor(t,l,C,b);v=this.renderSeries({realIndex:b,pathFill:P,j:C,i:l,pathFrom:d,pathTo:c,strokeWidth:w,elSeries:v,x:n,y:o,series:t,barHeight:k,barWidth:A,elDataLabelsWrap:y,type:\"bar\",visibleSeries:0})}i.globals.seriesXvalues[b]=x,i.globals.seriesYvalues[b]=m,this.prevY.push(this.yArrj),this.prevYF.push(this.yArrjF),this.prevYVal.push(this.yArrjVal),this.prevX.push(this.xArrj),this.prevXF.push(this.xArrjF),this.prevXVal.push(this.xArrjVal),r.add(v)}return r}},{key:\"initialPositions\",value:function(t,e,i,s,a,r){var n,o,l=this.w;return this.isHorizontal?(n=(n=s=l.globals.gridHeight/l.globals.dataPoints)*parseInt(l.config.plotOptions.bar.barHeight)/100,r=this.baseLineInvertedY+l.globals.padHorizontal+(this.isReversed?l.globals.gridWidth:0)-(this.isReversed?2*this.baseLineInvertedY:0),e=(s-n)/2):(o=i=l.globals.gridWidth/l.globals.dataPoints,o=l.globals.isXNumeric?(i=l.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth)/100:o*parseInt(l.config.plotOptions.bar.columnWidth)/100,a=this.baseLineY[this.yaxisIndex]+(this.isReversed?l.globals.gridHeight:0)-(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(i-o)/2),{x:t,y:e,yDivision:s,xDivision:i,barHeight:n,barWidth:o,zeroH:a,zeroW:r}}},{key:\"drawBarPaths\",value:function(t){for(var e,i=t.indexes,s=t.barHeight,a=t.strokeWidth,r=t.pathTo,n=t.pathFrom,o=t.zeroW,l=t.x,h=t.y,c=t.yDivision,d=t.elSeries,u=this.w,g=h,f=i.i,p=i.j,x=i.realIndex,m=i.bc,b=0,v=0;v<this.prevXF.length;v++)b+=this.prevXF[v][p];if(f>0){var y=o;this.prevXVal[f-1][p]<0?y=this.series[f][p]>=0?this.prevX[f-1][p]+b-2*(this.isReversed?b:0):this.prevX[f-1][p]:this.prevXVal[f-1][p]>=0&&(y=this.series[f][p]>=0?this.prevX[f-1][p]:this.prevX[f-1][p]-b+2*(this.isReversed?b:0)),e=y}else e=o;l=null===this.series[f][p]?e:e+this.series[f][p]/this.invertedYRatio-2*(this.isReversed?this.series[f][p]/this.invertedYRatio:0);var w={barHeight:s,strokeWidth:a,invertedYRatio:this.invertedYRatio,barYPosition:g,x:l},k=this.bar.barEndingShape(u,w,this.series,f,p);if(this.series.length>1&&f!==this.endingShapeOnSeriesNumber&&(k.path=this.graphics.line(k.newX,g+s-a)),this.xArrj.push(k.newX),this.xArrjF.push(Math.abs(e-k.newX)),this.xArrjVal.push(this.series[f][p]),r=this.graphics.move(e,g),n=this.graphics.move(e,g),u.globals.previousPaths.length>0&&(n=this.bar.getPathFrom(x,p,!1)),r=r+this.graphics.line(k.newX,g)+k.path+this.graphics.line(e,g+s-a)+this.graphics.line(e,g),n=n+this.graphics.line(e,g)+this.graphics.line(e,g+s-a)+this.graphics.line(e,g+s-a)+this.graphics.line(e,g+s-a)+this.graphics.line(e,g),u.config.plotOptions.bar.colors.backgroundBarColors.length>0&&0===f){m>=u.config.plotOptions.bar.colors.backgroundBarColors.length&&(m=0);var A=u.config.plotOptions.bar.colors.backgroundBarColors[m],S=this.graphics.drawRect(0,g,u.globals.gridWidth,s,0,A,u.config.plotOptions.bar.colors.backgroundBarOpacity);d.add(S),S.node.classList.add(\"apexcharts-backgroundBar\")}return{pathTo:r,pathFrom:n,x:l,y:h+=c}}},{key:\"drawColumnPaths\",value:function(t){var e=t.indexes,i=t.x,s=t.y,a=t.xDivision,r=t.pathTo,n=t.pathFrom,o=t.barWidth,l=t.zeroH,h=t.strokeWidth,c=t.elSeries,d=this.w,u=e.i,g=e.j,f=e.realIndex,p=e.bc;if(d.globals.isXNumeric){var x=d.globals.seriesX[u][g];x||(x=0),i=(x-d.globals.minX)/this.xRatio-o/2}for(var m,b=i,v=0,y=0;y<this.prevYF.length;y++)v+=this.prevYF[y][g];if(u>0&&!d.globals.isXNumeric||u>0&&d.globals.isXNumeric&&d.globals.seriesX[u-1][g]===d.globals.seriesX[u][g]){var w=this.prevY[u-1][g];m=this.prevYVal[u-1][g]<0?this.series[u][g]>=0?w-v+2*(this.isReversed?v:0):w:this.series[u][g]>=0?w:w+v-2*(this.isReversed?v:0)}else m=d.globals.gridHeight-l;s=m-this.series[u][g]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[u][g]/this.yRatio[this.yaxisIndex]:0);var k={barWidth:o,strokeWidth:h,yRatio:this.yRatio[this.yaxisIndex],barXPosition:b,y:s},A=this.bar.barEndingShape(d,k,this.series,u,g);if(this.yArrj.push(A.newY),this.yArrjF.push(Math.abs(m-A.newY)),this.yArrjVal.push(this.series[u][g]),r=this.graphics.move(b,m),n=this.graphics.move(b,m),d.globals.previousPaths.length>0&&(n=this.bar.getPathFrom(f,g,!1)),r=r+this.graphics.line(b,A.newY)+A.path+this.graphics.line(b+o-h,m)+this.graphics.line(b-h/2,m),n=n+this.graphics.line(b,m)+this.graphics.line(b+o-h,m)+this.graphics.line(b+o-h,m)+this.graphics.line(b+o-h,m)+this.graphics.line(b-h/2,m),d.config.plotOptions.bar.colors.backgroundBarColors.length>0&&0===u){p>=d.config.plotOptions.bar.colors.backgroundBarColors.length&&(p=0);var S=d.config.plotOptions.bar.colors.backgroundBarColors[p],C=this.graphics.drawRect(b,0,o,d.globals.gridHeight,0,S,d.config.plotOptions.bar.colors.backgroundBarOpacity);c.add(C),C.node.classList.add(\"apexcharts-backgroundBar\")}return i+=a,{pathTo:r,pathFrom:n,x:d.globals.isXNumeric?i-a:i,y:s}}},{key:\"checkZeroSeries\",value:function(t){for(var e=t.series,i=this.w,s=0;s<e.length;s++){for(var a=0,r=0;r<e[i.globals.maxValsInArrayIndex].length;r++)a+=e[s][r];0===a&&this.zeroSerieses.push(s)}for(var n=e.length-1;n>=0;n--)this.zeroSerieses.indexOf(n)>-1&&n===this.endingShapeOnSeriesNumber&&(this.endingShapeOnSeriesNumber-=1)}}]),e}(),CandleStick=function(t){function e(){return _classCallCheck(this,e),_possibleConstructorReturn(this,_getPrototypeOf(e).apply(this,arguments))}return _inherits(e,Bar),_createClass(e,[{key:\"draw\",value:function(t,e){var i=this.w,s=new Graphics(this.ctx),a=new Fill(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick;var r=new CoreUtils(this.ctx,i);t=r.getLogSeries(t),this.series=t,this.yRatio=r.getLogYRatios(this.yRatio),this.initVariables(t);for(var n=s.group({class:\"apexcharts-candlestick-series apexcharts-plot-series\"}),o=0,l=0;o<t.length;o++,l++){var h,c,d=void 0,u=void 0,g=void 0,f=void 0,p=[],x=[],m=i.globals.comboCharts?e[o]:o,b=s.group({class:\"apexcharts-series\",seriesName:Utils.escapeString(i.globals.seriesNames[m]),rel:o+1,\"data:realIndex\":m});t[o].length>0&&(this.visibleI=this.visibleI+1);var v,y,w=0;this.yRatio.length>1&&(this.yaxisIndex=m);var k=this.initialPositions();f=k.y,v=k.barHeight,g=k.x,y=k.barWidth,h=k.xDivision,c=k.zeroH,x.push(g+y/2);for(var A=s.group({class:\"apexcharts-datalabels\"}),S=0,C=i.globals.dataPoints;S<i.globals.dataPoints;S++,C--){void 0===this.series[o][S]||null===t[o][S]?this.isNullValue=!0:this.isNullValue=!1,i.config.stroke.show&&(w=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[m]:this.strokeWidth);var L,P=this.drawCandleStickPaths({indexes:{i:o,j:S,realIndex:m,bc:l},x:g,y:f,xDivision:h,pathTo:d,pathFrom:u,barWidth:y,zeroH:c,strokeWidth:w,elSeries:b});d=P.pathTo,u=P.pathFrom,f=P.y,g=P.x,L=P.color,S>0&&x.push(g+y/2),p.push(f);var z=a.fillPath({seriesNumber:m,color:L,value:t[o][S]}),T=this.candlestickOptions.wick.useFillColor?L:void 0;b=this.renderSeries({realIndex:m,pathFill:z,lineFill:T,j:S,i:o,pathFrom:u,pathTo:d,strokeWidth:w,elSeries:b,x:g,y:f,series:t,barHeight:v,barWidth:y,elDataLabelsWrap:A,visibleSeries:this.visibleI,type:\"candlestick\"})}i.globals.seriesXvalues[m]=x,i.globals.seriesYvalues[m]=p,n.add(b)}return n}},{key:\"drawCandleStickPaths\",value:function(t){var e=t.indexes,i=t.x,s=(t.y,t.xDivision),a=t.pathTo,r=t.pathFrom,n=t.barWidth,o=t.zeroH,l=t.strokeWidth,h=this.w,c=new Graphics(this.ctx),d=e.i,u=e.j,g=!0,f=h.config.plotOptions.candlestick.colors.upward,p=h.config.plotOptions.candlestick.colors.downward,x=this.yRatio[this.yaxisIndex],m=e.realIndex,b=this.getOHLCValue(m,u),v=o,y=o;b.o>b.c&&(g=!1);var w=Math.min(b.o,b.c),k=Math.max(b.o,b.c);h.globals.isXNumeric&&(i=(h.globals.seriesX[d][u]-h.globals.minX)/this.xRatio-n/2);var A=i+n*this.visibleI;return void 0===this.series[d][u]||null===this.series[d][u]?w=o:(w=o-w/x,k=o-k/x,v=o-b.h/x,y=o-b.l/x),c.move(A,o),r=c.move(A,w),h.globals.previousPaths.length>0&&(r=this.getPathFrom(m,u,!0)),a=c.move(A,k)+c.line(A+n/2,k)+c.line(A+n/2,v)+c.line(A+n/2,k)+c.line(A+n,k)+c.line(A+n,w)+c.line(A+n/2,w)+c.line(A+n/2,y)+c.line(A+n/2,w)+c.line(A,w)+c.line(A,k-l/2),r+=c.move(A,w),h.globals.isXNumeric||(i+=s),{pathTo:a,pathFrom:r,x:i,y:k,barXPosition:A,color:g?f:p}}},{key:\"getOHLCValue\",value:function(t,e){var i=this.w;return{o:i.globals.seriesCandleO[t][e],h:i.globals.seriesCandleH[t][e],l:i.globals.seriesCandleL[t][e],c:i.globals.seriesCandleC[t][e]}}}]),e}(),Crosshairs=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"drawXCrosshairs\",value:function(){var t=this.w,e=new Graphics(this.ctx),i=new Filters(this.ctx),s=t.config.xaxis.crosshairs.fill.gradient,a=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,n=s.colorFrom,o=s.colorTo,l=s.opacityFrom,h=s.opacityTo,c=s.stops,d=a.enabled,u=a.left,g=a.top,f=a.blur,p=a.color,x=a.opacity,m=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){\"gradient\"===r&&(m=e.drawGradient(\"vertical\",n,o,l,h,null,c,null));var b=e.drawRect();1===t.config.xaxis.crosshairs.width&&(b=e.drawLine()),b.attr({class:\"apexcharts-xcrosshairs\",x:0,y:0,y2:t.globals.gridHeight,width:Utils.isNumber(t.config.xaxis.crosshairs.width)?t.config.xaxis.crosshairs.width:0,height:t.globals.gridHeight,fill:m,filter:\"none\",\"fill-opacity\":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,\"stroke-width\":t.config.xaxis.crosshairs.stroke.width,\"stroke-dasharray\":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(b=i.dropShadow(b,{left:u,top:g,blur:f,color:p,opacity:x})),t.globals.dom.elGraphical.add(b)}}},{key:\"drawYCrosshairs\",value:function(){var t=this.w,e=new Graphics(this.ctx),i=t.config.yaxis[0].crosshairs;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(0,0,t.globals.gridWidth,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:\"apexcharts-ycrosshairs\"}),t.globals.dom.elGraphical.add(s)}var a=e.drawLine(0,0,t.globals.gridWidth,0,i.stroke.color,0,0);a.attr({class:\"apexcharts-ycrosshairs-hidden\"}),t.globals.dom.elGraphical.add(a)}}]),t}(),HeatMap=function(){function t(e,i){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.negRange=!1,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.width}return _createClass(t,[{key:\"draw\",value:function(t){var e=this.w,i=new Graphics(this.ctx),s=i.group({class:\"apexcharts-heatmap\"});s.attr(\"clip-path\",\"url(#gridRectMask\".concat(e.globals.cuid,\")\"));var a=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,n=0,o=!1;this.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(o=!0,l.reverse());for(var h=o?0:l.length-1;o?h<l.length:h>=0;o?h++:h--){var c=i.group({class:\"apexcharts-series apexcharts-heatmap-series\",seriesName:Utils.escapeString(e.globals.seriesNames[h]),rel:h+1,\"data:realIndex\":h});if(e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new Filters(this.ctx).dropShadow(c,d,h)}for(var u=0,g=0;g<l[h].length;g++){var f=1,p=this.determineHeatColor(h,g);if(e.globals.hasNegs||this.negRange){var x=e.config.plotOptions.heatmap.shadeIntensity;f=e.config.plotOptions.heatmap.reverseNegativeShade?p.percent<0?p.percent/100*(1.25*x):(1-p.percent/100)*(1.25*x):p.percent<0?1-(1+p.percent/100)*x:(1-p.percent/100)*x}else f=1-p.percent/100;var m=p.color;if(e.config.plotOptions.heatmap.enableShades){var b=new Utils;m=Utils.hexToRgba(b.shadeColor(f,p.color),e.config.fill.opacity)}var v=this.rectRadius,y=i.drawRect(u,n,a,r,v);if(y.attr({cx:u,cy:n}),y.node.classList.add(\"apexcharts-heatmap-rect\"),c.add(y),y.attr({fill:m,i:h,index:h,j:g,val:l[h][g],\"stroke-width\":this.strokeWidth,stroke:e.globals.stroke.colors[0],color:m}),y.node.addEventListener(\"mouseenter\",i.pathMouseEnter.bind(this,y)),y.node.addEventListener(\"mouseleave\",i.pathMouseLeave.bind(this,y)),y.node.addEventListener(\"mousedown\",i.pathMouseDown.bind(this,y)),e.config.chart.animations.enabled&&!e.globals.dataChanged){var w=1;e.globals.resized||(w=e.config.chart.animations.speed),this.animateHeatMap(y,u,n,a,r,w)}if(e.globals.dataChanged){var k=1;if(this.dynamicAnim.enabled&&e.globals.shouldAnimate){k=this.dynamicAnim.speed;var A=e.globals.previousPaths[h]&&e.globals.previousPaths[h][g]&&e.globals.previousPaths[h][g].color;A||(A=\"rgba(255, 255, 255, 0)\"),this.animateHeatColor(y,Utils.isColorHex(A)?A:Utils.rgb2hex(A),Utils.isColorHex(m)?m:Utils.rgb2hex(m),k)}}var S=this.calculateHeatmapDataLabels({x:u,y:n,i:h,j:g,series:l,rectHeight:r,rectWidth:a});null!==S&&c.add(S),u+=a}n+=r,s.add(c)}var C=e.globals.yAxisScale[0].result.slice();e.config.yaxis[0].reversed?C.unshift(\"\"):C.push(\"\"),e.globals.yAxisScale[0].result=C;var L=e.globals.gridHeight/e.globals.series.length;return e.config.yaxis[0].labels.offsetY=-L/2,s}},{key:\"checkColorRange\",value:function(){var t=this,e=this.w.config.plotOptions.heatmap;e.colorScale.ranges.length>0&&e.colorScale.ranges.map(function(e,i){e.from<0&&(t.negRange=!0)})}},{key:\"determineHeatColor\",value:function(t,e){var i=this.w,s=i.globals.series[t][e],a=i.config.plotOptions.heatmap,r=a.colorScale.inverse?e:t,n=i.globals.colors[r],o=Math.min.apply(Math,_toConsumableArray(i.globals.series[t])),l=Math.max.apply(Math,_toConsumableArray(i.globals.series[t]));a.distributed||(o=i.globals.minY,l=i.globals.maxY),void 0!==a.colorScale.min&&(o=a.colorScale.min<i.globals.minY?a.colorScale.min:i.globals.minY,l=a.colorScale.max>i.globals.maxY?a.colorScale.max:i.globals.maxY);var h=Math.abs(l)+Math.abs(o),c=100*s/(0===h?h-1e-6:h);a.colorScale.ranges.length>0&&a.colorScale.ranges.map(function(t,e){if(s>=t.from&&s<=t.to){n=t.color,o=t.from,l=t.to;var i=Math.abs(l)+Math.abs(o);c=100*s/(0===i?i-1e-6:i)}});return{color:n,percent:c}}},{key:\"calculateHeatmapDataLabels\",value:function(t){var e=t.x,i=t.y,s=t.i,a=t.j,r=(t.series,t.rectHeight),n=t.rectWidth,o=this.w,l=o.config.dataLabels,h=new Graphics(this.ctx),c=new DataLabels(this.ctx),d=l.formatter,u=null;if(l.enabled){u=h.group({class:\"apexcharts-data-labels\"});var g=l.offsetX,f=l.offsetY,p=e+n/2+g,x=i+r/2+parseInt(l.style.fontSize)/3+f,m=d(o.globals.series[s][a],{seriesIndex:s,dataPointIndex:a,w:o});c.plotDataLabelsText({x:p,y:x,text:m,i:s,j:a,parent:u,dataLabelsConfig:l})}return u}},{key:\"animateHeatMap\",value:function(t,e,i,s,a,r){var n=new Animations(this.ctx);n.animateRect(t,{x:e+s/2,y:i+a/2,width:0,height:0},{x:e,y:i,width:s,height:a},r,function(){n.animationCompleted()})}},{key:\"animateHeatColor\",value:function(t,e,i,s){t.attr({fill:e}).animate(s).attr({fill:i})}}]),t}(),Pie=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels;var i=this.w;this.lineColorArr=void 0!==i.globals.stroke.colors?i.globals.stroke.colors:i.globals.colors,this.defaultSize=i.globals.svgHeight<i.globals.svgWidth?i.globals.svgHeight-35:i.globals.gridWidth,this.centerY=this.defaultSize/2,this.centerX=i.globals.gridWidth/2,this.fullAngle=360,i.globals.radialSize=this.defaultSize/2.05-i.config.stroke.width-i.config.chart.dropShadow.blur,void 0!==i.config.plotOptions.pie.size&&(i.globals.radialSize=i.config.plotOptions.pie.size),this.donutSize=i.globals.radialSize*parseInt(i.config.plotOptions.pie.donut.size)/100,this.sliceLabels=[],this.prevSectorAngleArr=[]}return _createClass(t,[{key:\"draw\",value:function(t){var e=this.w,i=new Graphics(this.ctx),s=i.group({class:\"apexcharts-pie\"});if(e.globals.noData)return s;for(var a=0,r=0;r<t.length;r++)a+=Utils.negToZero(t[r]);var n=[],o=i.group();0===a&&(a=1e-5);for(var l=0;l<t.length;l++){var h=this.fullAngle*Utils.negToZero(t[l])/a;n.push(h)}if(e.globals.dataChanged){for(var c,d=0,u=0;u<e.globals.previousPaths.length;u++)d+=Utils.negToZero(e.globals.previousPaths[u]);for(var g=0;g<e.globals.previousPaths.length;g++)c=this.fullAngle*Utils.negToZero(e.globals.previousPaths[g])/d,this.prevSectorAngleArr.push(c)}this.donutSize<0&&(this.donutSize=0);var f=e.config.plotOptions.pie.customScale,p=e.globals.gridWidth/2,x=e.globals.gridHeight/2,m=p-e.globals.gridWidth/2*f,b=x-e.globals.gridHeight/2*f;if(\"donut\"===e.config.chart.type){var v=i.drawCircle(this.donutSize);v.attr({cx:this.centerX,cy:this.centerY,fill:e.config.plotOptions.pie.donut.background}),o.add(v)}var y=this.drawArcs(n,t);if(this.sliceLabels.forEach(function(t){y.add(t)}),o.attr({transform:\"translate(\".concat(m,\", \").concat(b-5,\") scale(\").concat(f,\")\")}),s.attr({\"data:innerTranslateX\":m,\"data:innerTranslateY\":b-25}),o.add(y),s.add(o),this.donutDataLabels.show){var w=this.renderInnerDataLabels(this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show,translateX:m,translateY:b});s.add(w)}return s}},{key:\"drawArcs\",value:function(t,e){var i=this.w,s=new Filters(this.ctx),a=new Graphics(this.ctx),r=new Fill(this.ctx),n=a.group({class:\"apexcharts-slices\"}),o=0,l=0,h=0,c=0;this.strokeWidth=i.config.stroke.show?i.config.stroke.width:0;for(var d=0;d<t.length;d++){var u=a.group({class:\"apexcharts-series apexcharts-pie-series\",seriesName:Utils.escapeString(i.globals.seriesNames[d]),rel:d+1,\"data:realIndex\":d});n.add(u),l=c,h=(o=h)+t[d],c=l+this.prevSectorAngleArr[d];var g=h-o,f=r.fillPath({seriesNumber:d,size:i.globals.radialSize,value:e[d]}),p=this.getChangedPath(l,c),x=a.drawPath({d:p,stroke:this.lineColorArr instanceof Array?this.lineColorArr[d]:this.lineColorArr,strokeWidth:this.strokeWidth,fill:f,fillOpacity:i.config.fill.opacity,classes:\"apexcharts-pie-area apexcharts-\".concat(i.config.chart.type,\"-slice-\").concat(d)});if(x.attr({index:0,j:d}),i.config.chart.dropShadow.enabled){var m=i.config.chart.dropShadow;s.dropShadow(x,m,d)}this.addListeners(x,this.donutDataLabels),Graphics.setAttrs(x.node,{\"data:angle\":g,\"data:startAngle\":o,\"data:strokeWidth\":this.strokeWidth,\"data:value\":e[d]});var b={x:0,y:0};\"pie\"===i.config.chart.type?b=Utils.polarToCartesian(this.centerX,this.centerY,i.globals.radialSize/1.25+i.config.plotOptions.pie.dataLabels.offset,o+(h-o)/2):\"donut\"===i.config.chart.type&&(b=Utils.polarToCartesian(this.centerX,this.centerY,(i.globals.radialSize+this.donutSize)/2+i.config.plotOptions.pie.dataLabels.offset,o+(h-o)/2)),u.add(x);var v=0;if(!this.initialAnim||i.globals.resized||i.globals.dataChanged?this.animBeginArr.push(0):(v=(h-o)/this.fullAngle*i.config.chart.animations.speed,this.animDur=v+this.animDur,this.animBeginArr.push(this.animDur)),this.dynamicAnim&&i.globals.dataChanged?this.animatePaths(x,{size:i.globals.radialSize,endAngle:h,startAngle:o,prevStartAngle:l,prevEndAngle:c,animateStartingPos:!0,i:d,animBeginArr:this.animBeginArr,dur:i.config.chart.animations.dynamicAnimation.speed}):this.animatePaths(x,{size:i.globals.radialSize,endAngle:h,startAngle:o,i:d,totalItems:t.length-1,animBeginArr:this.animBeginArr,dur:v}),i.config.plotOptions.pie.expandOnClick&&x.click(this.pieClicked.bind(this,d)),i.config.dataLabels.enabled){var y=b.x,w=b.y,k=100*(h-o)/360+\"%\";if(0!==g&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabel<t[d]){var A=i.config.dataLabels.formatter;void 0!==A&&(k=A(i.globals.seriesPercent[d][0],{seriesIndex:d,w:i}));var S=i.globals.dataLabels.style.colors[d],C=a.drawText({x:y,y:w,text:k,textAnchor:\"middle\",fontSize:i.config.dataLabels.style.fontSize,fontFamily:i.config.dataLabels.style.fontFamily,foreColor:S});if(i.config.dataLabels.dropShadow.enabled){var L=i.config.dataLabels.dropShadow;new Filters(this.ctx).dropShadow(C,L)}C.node.classList.add(\"apexcharts-pie-label\"),i.config.chart.animations.animate&&!1===i.globals.resized&&(C.node.classList.add(\"apexcharts-pie-label-delay\"),C.node.style.animationDelay=i.config.chart.animations.speed/940+\"s\"),this.sliceLabels.push(C)}}}return n}},{key:\"addListeners\",value:function(t,e){var i=new Graphics(this.ctx);t.node.addEventListener(\"mouseenter\",i.pathMouseEnter.bind(this,t)),t.node.addEventListener(\"mouseenter\",this.printDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener(\"mouseleave\",i.pathMouseLeave.bind(this,t)),t.node.addEventListener(\"mouseleave\",this.revertDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener(\"mousedown\",i.pathMouseDown.bind(this,t)),t.node.addEventListener(\"mousedown\",this.printDataLabelsInner.bind(this,t.node,e))}},{key:\"animatePaths\",value:function(t,e){var i=this.w,s=e.endAngle-e.startAngle,a=s,r=e.startAngle,n=e.startAngle;void 0!==e.prevStartAngle&&void 0!==e.prevEndAngle&&(r=e.prevEndAngle,a=e.prevEndAngle-e.prevStartAngle),e.i===i.config.series.length-1&&(s+n>this.fullAngle?e.endAngle=e.endAngle-(s+n):s+n<this.fullAngle&&(e.endAngle=e.endAngle+(this.fullAngle-(s+n)))),s===this.fullAngle&&(s=this.fullAngle-.01),this.animateArc(t,r,n,s,a,e)}},{key:\"animateArc\",value:function(t,e,i,s,a,r){var n,o=this,l=this.w,h=new Animations(this.ctx),c=r.size;(isNaN(e)||isNaN(a))&&(e=i,a=s,r.dur=0);var d=s,u=i,g=e-i;l.globals.dataChanged&&r.shouldSetPrevPaths&&(n=o.getPiePath({me:o,startAngle:u,angle:a,size:c}),t.attr({d:n})),0!==r.dur?t.animate(r.dur,l.globals.easing,r.animBeginArr[r.i]).afterAll(function(){\"pie\"!==l.config.chart.type&&\"donut\"!==l.config.chart.type||this.animate(300).attr({\"stroke-width\":l.config.stroke.width}),r.i===l.config.series.length-1&&h.animationCompleted()}).during(function(l){d=g+(s-g)*l,r.animateStartingPos&&(d=a+(s-a)*l,u=e-a+(i-(e-a))*l),n=o.getPiePath({me:o,startAngle:u,angle:d,size:c}),t.node.setAttribute(\"data:pathOrig\",n),t.attr({d:n})}):(n=o.getPiePath({me:o,startAngle:u,angle:s,size:c}),r.isTrack||(l.globals.animationEnded=!0),t.node.setAttribute(\"data:pathOrig\",n),t.attr({d:n}))}},{key:\"pieClicked\",value:function(t){var e,i=this.w,s=this.w.globals.radialSize+4,a=i.globals.dom.Paper.select(\".apexcharts-\".concat(i.config.chart.type.toLowerCase(),\"-slice-\").concat(t)).members[0],r=a.attr(\"d\");if(\"true\"!==a.attr(\"data:pieClicked\")){var n=i.globals.dom.baseEl.querySelectorAll(\".apexcharts-pie-area\");Array.prototype.forEach.call(n,function(t){t.setAttribute(\"data:pieClicked\",\"false\");var e=t.getAttribute(\"data:pathOrig\");t.setAttribute(\"d\",e)}),a.attr(\"data:pieClicked\",\"true\");var o=parseInt(a.attr(\"data:startAngle\")),l=parseInt(a.attr(\"data:angle\"));e=this.getPiePath({me:this,startAngle:o,angle:l,size:s}),360!==l&&a.plot(e).animate(1).plot(r).animate(100).plot(e)}else{a.attr({\"data:pieClicked\":\"false\"}),this.revertDataLabelsInner(a.node,this.donutDataLabels);var h=a.attr(\"data:pathOrig\");a.attr({d:h})}}},{key:\"getChangedPath\",value:function(t,e){var i=\"\";return this.dynamicAnim&&this.w.globals.dataChanged&&(i=this.getPiePath({me:this,startAngle:t,angle:e-t,size:this.size})),i}},{key:\"getPiePath\",value:function(t){var e=t.me,i=t.startAngle,s=t.angle,a=t.size,r=this.w,n=i,o=Math.PI*(n-90)/180,l=s+i;Math.ceil(l)>=360&&(l=359.99);var h=Math.PI*(l-90)/180,c=e.centerX+a*Math.cos(o),d=e.centerY+a*Math.sin(o),u=e.centerX+a*Math.cos(h),g=e.centerY+a*Math.sin(h),f=Utils.polarToCartesian(e.centerX,e.centerY,e.donutSize,l),p=Utils.polarToCartesian(e.centerX,e.centerY,e.donutSize,n),x=s>180?1:0;return\"donut\"===r.config.chart.type?[\"M\",c,d,\"A\",a,a,0,x,1,u,g,\"L\",f.x,f.y,\"A\",e.donutSize,e.donutSize,0,x,0,p.x,p.y,\"L\",c,d,\"z\"].join(\" \"):\"pie\"===r.config.chart.type?[\"M\",c,d,\"A\",a,a,0,x,1,u,g,\"L\",e.centerX,e.centerY,\"L\",c,d].join(\" \"):[\"M\",c,d,\"A\",a,a,0,x,1,u,g].join(\" \")}},{key:\"renderInnerDataLabels\",value:function(t,e){var i=this.w,s=new Graphics(this.ctx),a=s.group({class:\"apexcharts-datalabels-group\",transform:\"translate(\".concat(e.translateX?e.translateX:0,\", \").concat(e.translateY?e.translateY:0,\")\")}),r=t.total.show;a.node.style.opacity=e.opacity;var n,o,l=e.centerX,h=e.centerY;n=void 0===t.name.color?i.globals.colors[0]:t.name.color,o=void 0===t.value.color?i.config.chart.foreColor:t.value.color;var c=t.value.formatter,d=\"\",u=\"\";if(r?(n=t.total.color,u=t.total.label,d=t.total.formatter(i)):1===i.globals.series.length&&(d=c(i.globals.series[0],i),u=i.globals.seriesNames[0]),t.name.show){var g=s.drawText({x:l,y:h+parseInt(t.name.offsetY),text:u,textAnchor:\"middle\",foreColor:n,fontSize:t.name.fontSize,fontFamily:t.name.fontFamily});g.node.classList.add(\"apexcharts-datalabel-label\"),a.add(g)}if(t.value.show){var f=t.name.show?parseInt(t.value.offsetY)+16:t.value.offsetY,p=s.drawText({x:l,y:h+f,text:d,textAnchor:\"middle\",foreColor:o,fontSize:t.value.fontSize,fontFamily:t.value.fontFamily});p.node.classList.add(\"apexcharts-datalabel-value\"),a.add(p)}return a}},{key:\"printInnerLabels\",value:function(t,e,i,s){var a,r=this.w;s?a=void 0===t.name.color?r.globals.colors[parseInt(s.parentNode.getAttribute(\"rel\"))-1]:t.name.color:r.globals.series.length>1&&t.total.show&&(a=t.total.color);var n=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-label\"),o=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-value\");i=(0,t.value.formatter)(i,r),s||\"function\"!=typeof t.total.formatter||(i=t.total.formatter(r)),null!==n&&(n.textContent=e),null!==o&&(o.textContent=i),null!==n&&(n.style.fill=a)}},{key:\"printDataLabelsInner\",value:function(t,e){var i=this.w,s=t.getAttribute(\"data:value\"),a=i.globals.seriesNames[parseInt(t.parentNode.getAttribute(\"rel\"))-1];i.globals.series.length>1&&this.printInnerLabels(e,a,s,t);var r=i.globals.dom.baseEl.querySelector(\".apexcharts-datalabels-group\");null!==r&&(r.style.opacity=1)}},{key:\"revertDataLabelsInner\",value:function(e,i,s){var a=this,r=this.w,n=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabels-group\");if(i.total.show&&r.globals.series.length>1){new t(this.ctx).printInnerLabels(i,i.total.label,i.total.formatter(r))}else{var o=document.querySelectorAll(\".apexcharts-pie-area\"),l=!1;if(Array.prototype.forEach.call(o,function(t){\"true\"===t.getAttribute(\"data:pieClicked\")&&(l=!0,a.printDataLabelsInner(t,i))}),!l)if(r.globals.selectedDataPoints.length&&r.globals.series.length>1)if(r.globals.selectedDataPoints[0].length>0){var h=r.globals.selectedDataPoints[0],c=r.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(r.config.chart.type.toLowerCase(),\"-slice-\").concat(h));this.printDataLabelsInner(c,i)}else n&&r.globals.selectedDataPoints.length&&0===r.globals.selectedDataPoints[0].length&&(n.style.opacity=0);else n&&r.globals.series.length>1&&(n.style.opacity=0)}}}]),t}(),Radar=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var i=this.w;this.graphics=new Graphics(this.ctx),this.lineColorArr=void 0!==i.globals.stroke.colors?i.globals.stroke.colors:i.globals.colors,this.defaultSize=i.globals.svgHeight<i.globals.svgWidth?i.globals.svgHeight-35:i.globals.gridWidth,this.maxValue=this.w.globals.maxY,this.polygons=i.config.plotOptions.radar.polygons,this.maxLabelWidth=20;var s=i.globals.labels.slice().sort(function(t,e){return e.length-t.length})[0],a=this.graphics.getTextRects(s,i.config.dataLabels.style.fontSize);this.size=this.defaultSize/2.1-i.config.stroke.width-i.config.chart.dropShadow.blur-a.width/1.75,void 0!==i.config.plotOptions.radar.size&&(this.size=i.config.plotOptions.radar.size),this.dataRadiusOfPercent=[],this.dataRadius=[],this.angleArr=[],this.yaxisLabelsTextsPos=[]}return _createClass(t,[{key:\"draw\",value:function(t){var e=this,i=this.w,s=new Fill(this.ctx),a=[];t.length&&(this.dataPointsLen=t[i.globals.maxValsInArrayIndex].length),this.disAngle=2*Math.PI/this.dataPointsLen;var r=i.globals.gridWidth/2,n=i.globals.gridHeight/2,o=this.graphics.group({class:\"apexcharts-radar-series\",\"data:innerTranslateX\":r,\"data:innerTranslateY\":n-25,transform:\"translate(\".concat(r||0,\", \").concat(n||0,\")\")}),l=[],h=null;if(this.yaxisLabels=this.graphics.group({class:\"apexcharts-yaxis\"}),t.forEach(function(t,r){var n=e.graphics.group().attr({class:\"apexcharts-series\",seriesName:Utils.escapeString(i.globals.seriesNames[r]),rel:r+1,\"data:realIndex\":r});e.dataRadiusOfPercent[r]=[],e.dataRadius[r]=[],e.angleArr[r]=[],t.forEach(function(t,i){e.dataRadiusOfPercent[r][i]=t/e.maxValue,e.dataRadius[r][i]=e.dataRadiusOfPercent[r][i]*e.size,e.angleArr[r][i]=i*e.disAngle}),l=e.getDataPointsPos(e.dataRadius[r],e.angleArr[r]);var o=e.createPaths(l,{x:0,y:0});h=e.graphics.group({class:\"apexcharts-series-markers-wrap hidden\"}),i.globals.delayedElements.push({el:h.node,index:r});var c={i:r,realIndex:r,animationDelay:r,initialSpeed:i.config.chart.animations.speed,dataChangeSpeed:i.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-radar\",shouldClipToGrid:!1,bindEventsOnPaths:!1,stroke:i.globals.stroke.colors[r],strokeLineCap:i.config.stroke.lineCap},d=null;i.globals.previousPaths.length>0&&(d=e.getPathFrom(r));for(var u=0;u<o.linePathsTo.length;u++){var g=e.graphics.renderPaths(_objectSpread({},c,{pathFrom:null===d?o.linePathsFrom[u]:d,pathTo:o.linePathsTo[u],strokeWidth:Array.isArray(i.config.stroke.width)?i.config.stroke.width[r]:i.config.stroke.width,fill:\"none\",drawShadow:!1}));n.add(g);var f=s.fillPath({seriesNumber:r}),p=e.graphics.renderPaths(_objectSpread({},c,{pathFrom:null===d?o.areaPathsFrom[u]:d,pathTo:o.areaPathsTo[u],strokeWidth:0,fill:f,drawShadow:!1}));if(i.config.chart.dropShadow.enabled){var x=new Filters(e.ctx),m=i.config.chart.dropShadow;x.dropShadow(p,Object.assign({},m,{noUserSpaceOnUse:!0}),r)}n.add(p)}t.forEach(function(t,i){var s=new Markers(e.ctx).getMarkerConfig(\"apexcharts-marker\",r,i),a=e.graphics.drawMarker(l[i].x,l[i].y,s);a.attr(\"rel\",i),a.attr(\"j\",i),a.attr(\"index\",r),a.node.setAttribute(\"default-marker-size\",s.pSize);var o=e.graphics.group({class:\"apexcharts-series-markers\"});o&&o.add(a),h.add(o),n.add(h)}),a.push(n)}),this.drawPolygons({parent:o}),i.config.dataLabels.enabled){var c=this.drawLabels();o.add(c)}return o.add(this.yaxisLabels),a.forEach(function(t){o.add(t)}),o}},{key:\"drawPolygons\",value:function(t){for(var e=this,i=this.w,s=t.parent,a=i.globals.yAxisScale[0].result.reverse(),r=a.length,n=[],o=this.size/(r-1),l=0;l<r;l++)n[l]=o*l;n.reverse();var h=[],c=[];n.forEach(function(t,i){var s=e.getPolygonPos(t),a=\"\";s.forEach(function(t,s){if(0===i){var r=e.graphics.drawLine(t.x,t.y,0,0,Array.isArray(e.polygons.connectorColors)?e.polygons.connectorColors[s]:e.polygons.connectorColors);c.push(r)}0===s&&e.yaxisLabelsTextsPos.push({x:t.x,y:t.y}),a+=t.x+\",\"+t.y+\" \"}),h.push(a)}),h.forEach(function(t,a){var r=e.polygons.strokeColors,n=e.graphics.drawPolygon(t,Array.isArray(r)?r[a]:r,i.globals.radarPolygons.fill.colors[a]);s.add(n)}),c.forEach(function(t){s.add(t)}),i.config.yaxis[0].show&&this.yaxisLabelsTextsPos.forEach(function(t,i){var s=e.drawYAxisText(t.x,t.y,i,a[i]);e.yaxisLabels.add(s)})}},{key:\"drawYAxisText\",value:function(t,e,i,s){var a=this.w,r=a.config.yaxis[0],n=a.globals.yLabelFormatters[0];return this.graphics.drawText({x:t+r.labels.offsetX,y:e+r.labels.offsetY,text:n(s,i),textAnchor:\"middle\",fontSize:r.labels.style.fontSize,fontFamily:r.labels.style.fontFamily,foreColor:r.labels.style.color})}},{key:\"drawLabels\",value:function(){var t=this,e=this.w,i=\"middle\",s=e.config.dataLabels,a=this.graphics.group({class:\"apexcharts-datalabels\"}),r=this.getPolygonPos(this.size),n=0,o=0;return e.globals.labels.forEach(function(l,h){var c=s.formatter,d=new DataLabels(t.ctx);if(r[h]){n=r[h].x,o=r[h].y,Math.abs(r[h].x)>=10?r[h].x>0?(i=\"start\",n+=10):r[h].x<0&&(i=\"end\",n-=10):i=\"middle\",Math.abs(r[h].y)>=t.size-10&&(r[h].y<0?o-=10:r[h].y>0&&(o+=10));var u=c(l,{seriesIndex:-1,dataPointIndex:h,w:e});d.plotDataLabelsText({x:n,y:o,text:u,textAnchor:i,i:h,j:h,parent:a,dataLabelsConfig:s,offsetCorrection:!1})}}),a}},{key:\"createPaths\",value:function(t,e){var i=this,s=[],a=[],r=[],n=[];if(t.length){a=[this.graphics.move(e.x,e.y)],n=[this.graphics.move(e.x,e.y)];var o=this.graphics.move(t[0].x,t[0].y),l=this.graphics.move(t[0].x,t[0].y);t.forEach(function(e,s){o+=i.graphics.line(e.x,e.y),l+=i.graphics.line(e.x,e.y),s===t.length-1&&(o+=\"Z\",l+=\"Z\")}),s.push(o),r.push(l)}return{linePathsFrom:a,linePathsTo:s,areaPathsFrom:n,areaPathsTo:r}}},{key:\"getPathFrom\",value:function(t){for(var e=this.w,i=null,s=0;s<e.globals.previousPaths.length;s++){var a=e.globals.previousPaths[s];a.paths.length>0&&parseInt(a.realIndex)===parseInt(t)&&void 0!==e.globals.previousPaths[s].paths[0]&&(i=e.globals.previousPaths[s].paths[0].d)}return i}},{key:\"getDataPointsPos\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var s=[],a=0;a<i;a++){var r={};r.x=t[a]*Math.sin(e[a]),r.y=-t[a]*Math.cos(e[a]),s.push(r)}return s}},{key:\"getPolygonPos\",value:function(t){for(var e=[],i=2*Math.PI/this.dataPointsLen,s=0;s<this.dataPointsLen;s++){var a={};a.x=t*Math.sin(s*i),a.y=-t*Math.cos(s*i),e.push(a)}return e}}]),t}(),Radial=function(t){function e(t){var i;_classCallCheck(this,e),(i=_possibleConstructorReturn(this,_getPrototypeOf(e).call(this,t))).ctx=t,i.w=t.w,i.animBeginArr=[0],i.animDur=0;var s=i.w;return i.startAngle=s.config.plotOptions.radialBar.startAngle,i.endAngle=s.config.plotOptions.radialBar.endAngle,i.trackStartAngle=s.config.plotOptions.radialBar.track.startAngle,i.trackEndAngle=s.config.plotOptions.radialBar.track.endAngle,i.radialDataLabels=s.config.plotOptions.radialBar.dataLabels,i.trackStartAngle||(i.trackStartAngle=i.startAngle),i.trackEndAngle||(i.trackEndAngle=i.endAngle),360===i.endAngle&&(i.endAngle=359.99),i.fullAngle=360-s.config.plotOptions.radialBar.endAngle-s.config.plotOptions.radialBar.startAngle,i.margin=parseInt(s.config.plotOptions.radialBar.track.margin),i}return _inherits(e,Pie),_createClass(e,[{key:\"draw\",value:function(t){var e=this.w,i=new Graphics(this.ctx),s=i.group({class:\"apexcharts-radialbar\"});if(e.globals.noData)return s;var a=i.group(),r=this.defaultSize/2,n=e.globals.gridWidth/2,o=this.defaultSize/2.05-e.config.stroke.width-e.config.chart.dropShadow.blur;void 0!==e.config.plotOptions.radialBar.size&&(o=e.config.plotOptions.radialBar.size);var l=e.globals.fill.colors;if(e.config.plotOptions.radialBar.track.show){var h=this.drawTracks({size:o,centerX:n,centerY:r,colorArr:l,series:t});a.add(h)}var c=this.drawArcs({size:o,centerX:n,centerY:r,colorArr:l,series:t}),d=360;return e.config.plotOptions.radialBar.startAngle<0&&(d=Math.abs(e.config.plotOptions.radialBar.endAngle-e.config.plotOptions.radialBar.startAngle)),e.globals.radialSize=o-o/(360/(360-d))+10,a.add(c.g),\"front\"===e.config.plotOptions.radialBar.hollow.position&&(c.g.add(c.elHollow),c.dataLabels&&c.g.add(c.dataLabels)),s.add(a),s}},{key:\"drawTracks\",value:function(t){var e=this.w,i=new Graphics(this.ctx),s=i.group({class:\"apexcharts-tracks\"}),a=new Filters(this.ctx),r=new Fill(this.ctx),n=this.getStrokeWidth(t);t.size=t.size-n/2;for(var o=0;o<t.series.length;o++){var l=i.group({class:\"apexcharts-radialbar-track apexcharts-track\"});s.add(l),l.attr({rel:o+1}),t.size=t.size-n-this.margin;var h=e.config.plotOptions.radialBar.track,c=r.fillPath({seriesNumber:0,size:t.size,fillColors:Array.isArray(h.background)?h.background[o]:h.background,solid:!0}),d=this.trackStartAngle,u=this.trackEndAngle;Math.abs(u)+Math.abs(d)>=360&&(u=360-Math.abs(this.startAngle)-.1);var g=i.drawPath({d:\"\",stroke:c,strokeWidth:n*parseInt(h.strokeWidth)/100,fill:\"none\",strokeOpacity:h.opacity,classes:\"apexcharts-radialbar-area\"});if(h.dropShadow.enabled){var f=h.dropShadow;a.dropShadow(g,f)}l.add(g),g.attr(\"id\",\"apexcharts-radialbarTrack-\"+o),this.animatePaths(g,{centerX:t.centerX,centerY:t.centerY,endAngle:u,startAngle:d,size:t.size,i:o,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return s}},{key:\"drawArcs\",value:function(t){var e=this.w,i=new Graphics(this.ctx),s=new Fill(this.ctx),a=new Filters(this.ctx),r=i.group(),n=this.getStrokeWidth(t);t.size=t.size-n/2;var o=e.config.plotOptions.radialBar.hollow.background,l=t.size-n*t.series.length-this.margin*t.series.length-n*parseInt(e.config.plotOptions.radialBar.track.strokeWidth)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(o=this.drawHollowImage(t,r,l,o));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:o});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;a.dropShadow(c,d)}var u=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(u=0);var g=null;this.radialDataLabels.show&&(g=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:u})),\"back\"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),g&&r.add(g));var f=!1;e.config.plotOptions.radialBar.inverseOrder&&(f=!0);for(var p=f?t.series.length-1:0;f?p>=0:p<t.series.length;f?p--:p++){var x=i.group({class:\"apexcharts-series apexcharts-radial-series\",seriesName:Utils.escapeString(e.globals.seriesNames[p])});r.add(x),x.attr({rel:p+1,\"data:realIndex\":p}),this.ctx.series.addCollapsedClassToSeries(x,p),t.size=t.size-n-this.margin;var m=s.fillPath({seriesNumber:p,size:t.size,value:t.series[p]}),b=this.startAngle,v=void 0,y=Math.abs(e.config.plotOptions.radialBar.endAngle-e.config.plotOptions.radialBar.startAngle),w=Utils.negToZero(t.series[p]>100?100:t.series[p])/100,k=Math.round(y*w)+this.startAngle,A=void 0;e.globals.dataChanged&&(v=this.startAngle,A=Math.round(y*Utils.negToZero(e.globals.previousPaths[p])/100)+v),Math.abs(k)+Math.abs(b)>=360&&(k-=.01),Math.abs(A)+Math.abs(v)>=360&&(A-=.01);var S=k-b,C=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[p]:e.config.stroke.dashArray,L=i.drawPath({d:\"\",stroke:m,strokeWidth:n,fill:\"none\",fillOpacity:e.config.fill.opacity,classes:\"apexcharts-radialbar-area apexcharts-radialbar-slice-\"+p,strokeDashArray:C});if(Graphics.setAttrs(L.node,{\"data:angle\":S,\"data:value\":t.series[p]}),e.config.chart.dropShadow.enabled){var P=e.config.chart.dropShadow;a.dropShadow(L,P,p)}this.addListeners(L,this.radialDataLabels),x.add(L),L.attr({index:0,j:p});var z=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(z=(k-b)/360*e.config.chart.animations.speed,this.animDur=z/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur)),e.globals.dataChanged&&(z=(k-b)/360*e.config.chart.animations.dynamicAnimation.speed,this.animDur=z/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur)),this.animatePaths(L,{centerX:t.centerX,centerY:t.centerY,endAngle:k,startAngle:b,prevEndAngle:A,prevStartAngle:v,size:t.size,i:p,totalItems:2,animBeginArr:this.animBeginArr,dur:z,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:g}}},{key:\"drawHollow\",value:function(t){var e=new Graphics(this.ctx).drawCircle(2*t.size);return e.attr({class:\"apexcharts-radialbar-hollow\",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:\"drawHollowImage\",value:function(t,e,i,s){var a=this.w,r=new Fill(this.ctx),n=(Math.random()+1).toString(36).substring(4),o=a.config.plotOptions.radialBar.hollow.image;if(a.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:o,patternID:\"pattern\".concat(a.globals.cuid).concat(n)}),s=\"url(#pattern\".concat(a.globals.cuid).concat(n,\")\");else{var l=a.config.plotOptions.radialBar.hollow.imageWidth,h=a.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=a.globals.dom.Paper.image(o).loaded(function(e){this.move(t.centerX-e.width/2+a.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+a.config.plotOptions.radialBar.hollow.imageOffsetY)});e.add(c)}else{var d=a.globals.dom.Paper.image(o).loaded(function(e){this.move(t.centerX-l/2+a.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+a.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)});e.add(d)}}return s}},{key:\"getStrokeWidth\",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size))/100/(t.series.length+1)-this.margin}}]),e}(),RangeBar=function(t){function e(){return _classCallCheck(this,e),_possibleConstructorReturn(this,_getPrototypeOf(e).apply(this,arguments))}return _inherits(e,Bar),_createClass(e,[{key:\"draw\",value:function(t,e){var i=this.w,s=new Graphics(this.ctx),a=new Fill(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=i.globals.seriesRangeStart,this.seriesRangeEnd=i.globals.seriesRangeEnd,this.initVariables(t);for(var r=s.group({class:\"apexcharts-rangebar-series apexcharts-plot-series\"}),n=0,o=0;n<t.length;n++,o++){var l,h,c,d,u=void 0,g=void 0,f=void 0,p=void 0,x=[],m=[],b=i.globals.comboCharts?e[n]:n,v=s.group({class:\"apexcharts-series\",seriesName:Utils.escapeString(i.globals.seriesNames[b]),rel:n+1,\"data:realIndex\":b});t[n].length>0&&(this.visibleI=this.visibleI+1);var y=0,w=0,k=0;this.yRatio.length>1&&(this.yaxisIndex=b);var A=this.initialPositions();p=A.y,h=A.yDivision,w=A.barHeight,d=A.zeroW,f=A.x,k=A.barWidth,l=A.xDivision,c=A.zeroH,m.push(f+k/2);for(var S=s.group({class:\"apexcharts-datalabels\"}),C=0,L=i.globals.dataPoints;C<i.globals.dataPoints;C++,L--){void 0===this.series[n][C]||null===t[n][C]?this.isNullValue=!0:this.isNullValue=!1,i.config.stroke.show&&(y=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[b]:this.strokeWidth);var P=null;this.isHorizontal?k=(P=this.drawRangeBarPaths({indexes:{i:n,j:C,realIndex:b,bc:o},barHeight:w,strokeWidth:y,pathTo:u,pathFrom:g,zeroW:d,x:f,y:p,yDivision:h,elSeries:v})).barWidth:w=(P=this.drawRangeColumnPaths({indexes:{i:n,j:C,realIndex:b,bc:o},x:f,y:p,xDivision:l,pathTo:u,pathFrom:g,barWidth:k,zeroH:c,strokeWidth:y,elSeries:v})).barHeight,u=P.pathTo,g=P.pathFrom,p=P.y,f=P.x,C>0&&m.push(f+k/2),x.push(p);var z=a.fillPath({seriesNumber:b}),T=i.globals.stroke.colors[b];v=this.renderSeries({realIndex:b,pathFill:z,lineFill:T,j:C,i:n,pathFrom:g,pathTo:u,strokeWidth:y,elSeries:v,x:f,y:p,series:t,barHeight:w,barWidth:k,elDataLabelsWrap:S,visibleSeries:this.visibleI,type:\"rangebar\"})}i.globals.seriesXvalues[b]=m,i.globals.seriesYvalues[b]=x,r.add(v)}return r}},{key:\"drawRangeColumnPaths\",value:function(t){var e=t.indexes,i=t.x,s=(t.y,t.strokeWidth),a=t.xDivision,r=t.pathTo,n=t.pathFrom,o=t.barWidth,l=t.zeroH,h=this.w,c=new Graphics(this.ctx),d=e.i,u=e.j,g=this.yRatio[this.yaxisIndex],f=e.realIndex,p=this.getRangeValue(f,u),x=Math.min(p.start,p.end),m=Math.max(p.start,p.end);h.globals.isXNumeric&&(i=(h.globals.seriesX[d][u]-h.globals.minX)/this.xRatio-o/2);var b=i+o*this.visibleI;void 0===this.series[d][u]||null===this.series[d][u]?x=l:(x=l-x/g,m=l-m/g);var v=Math.abs(m-x);return c.move(b,l),n=c.move(b,x),h.globals.previousPaths.length>0&&(n=this.getPathFrom(f,u,!0)),r=c.move(b,m)+c.line(b+o,m)+c.line(b+o,x)+c.line(b,x)+c.line(b,m-s/2),n=n+c.move(b,x)+c.line(b+o,x)+c.line(b+o,x)+c.line(b,x),h.globals.isXNumeric||(i+=a),{pathTo:r,pathFrom:n,barHeight:v,x:i,y:m,barXPosition:b}}},{key:\"drawRangeBarPaths\",value:function(t){var e=t.indexes,i=(t.x,t.y),s=t.yDivision,a=t.pathTo,r=t.pathFrom,n=t.barHeight,o=t.zeroW,l=this.w,h=new Graphics(this.ctx),c=e.i,d=e.j,u=e.realIndex,g=o,f=o;l.globals.isXNumeric&&(i=(l.globals.seriesX[c][d]-l.globals.minX)/this.invertedXRatio-n);var p=i+n*this.visibleI;void 0!==this.series[c][d]&&null!==this.series[c][d]&&(g=o+this.seriesRangeStart[c][d]/this.invertedYRatio,f=o+this.seriesRangeEnd[c][d]/this.invertedYRatio),h.move(o,p),r=h.move(o,p),l.globals.previousPaths.length>0&&(r=this.getPathFrom(u,d));var x=Math.abs(f-g);return a=h.move(g,p)+h.line(f,p)+h.line(f,p+n)+h.line(g,p+n)+h.line(g,p),r=r+h.line(g,p)+h.line(g,p+n)+h.line(g,p+n)+h.line(g,p),l.globals.isXNumeric||(i+=s),{pathTo:a,pathFrom:r,barWidth:x,x:f,y:i,barYPosition:p}}},{key:\"getRangeValue\",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),e}(),Formatters=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.tooltipKeyFormat=\"dd MMM\"}return _createClass(t,[{key:\"xLabelFormat\",value:function(t,e,i){var s=this.w;if(\"datetime\"===s.config.xaxis.type&&(void 0===s.config.xaxis.labels.formatter&&void 0===s.config.tooltip.x.formatter))return new DateTime(this.ctx).formatDate(new Date(e),s.config.tooltip.x.format,!0,!0);return t(e,i)}},{key:\"setLabelFormatters\",value:function(){var t=this.w;return t.globals.xLabelFormatter=function(t){return t},t.globals.xaxisTooltipFormatter=function(t){return t},t.globals.ttKeyFormatter=function(t){return t},t.globals.ttZFormatter=function(t){return t},t.globals.legendFormatter=function(t){return t},void 0!==t.config.xaxis.labels.formatter?t.globals.xLabelFormatter=t.config.xaxis.labels.formatter:t.globals.xLabelFormatter=function(e){if(Utils.isNumber(e)){if(\"numeric\"===t.config.xaxis.type&&t.globals.dataPoints<50)return e.toFixed(1);if(t.globals.isBarHorizontal)if(t.globals.maxY-t.globals.minYArr<4)return e.toFixed(1);return e.toFixed(0)}return e},\"function\"==typeof t.config.tooltip.x.formatter?t.globals.ttKeyFormatter=t.config.tooltip.x.formatter:t.globals.ttKeyFormatter=t.globals.xLabelFormatter,\"function\"==typeof t.config.xaxis.tooltip.formatter&&(t.globals.xaxisTooltipFormatter=t.config.xaxis.tooltip.formatter),Array.isArray(t.config.tooltip.y)?t.globals.ttVal=t.config.tooltip.y:void 0!==t.config.tooltip.y.formatter&&(t.globals.ttVal=t.config.tooltip.y),void 0!==t.config.tooltip.z.formatter&&(t.globals.ttZFormatter=t.config.tooltip.z.formatter),void 0!==t.config.legend.formatter&&(t.globals.legendFormatter=t.config.legend.formatter),t.config.yaxis.forEach(function(e,i){void 0!==e.labels.formatter?t.globals.yLabelFormatters[i]=e.labels.formatter:t.globals.yLabelFormatters[i]=function(s){return t.globals.xyCharts&&Utils.isNumber(s)?0!==t.globals.yValueDecimal?s.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:t.globals.yValueDecimal):t.globals.maxYArr[i]-t.globals.minYArr[i]<10?s.toFixed(1):s.toFixed(0):s}}),t.globals}},{key:\"heatmapLabelFormatters\",value:function(){var t=this.w;if(\"heatmap\"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce(function(t,e){return t.length>e.length?t:e},0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),AxesUtils=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"getLabel\",value:function(t,e,i,s){var a,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],n=this.w,o=void 0===t[s]?\"\":t[s],l=n.globals.xLabelFormatter,h=n.config.xaxis.labels.formatter,c=!1,d=o;a=new Formatters(this.ctx).xLabelFormat(l,o,d),void 0!==h&&(a=h(o,t[s],s));var u,g;return e.length>0?(u=e[s].unit,g=null,e.forEach(function(t){\"month\"===t.unit?g=\"year\":\"day\"===t.unit?g=\"month\":\"hour\"===t.unit?g=\"day\":\"minute\"===t.unit&&(g=\"hour\")}),c=g===u,i=e[s].position,a=e[s].value):\"datetime\"===n.config.xaxis.type&&void 0===h&&(a=\"\"),void 0===a&&(a=\"\"),(0===(a=a.toString()).indexOf(\"NaN\")||0===a.toLowerCase().indexOf(\"invalid\")||a.toLowerCase().indexOf(\"infinity\")>=0||r.indexOf(a)>=0&&!n.config.xaxis.labels.showDuplicates)&&(a=\"\"),{x:i,text:a,isBold:c}}},{key:\"drawYAxisTicks\",value:function(t,e,i,s,a,r,n){var o=this.w,l=new Graphics(this.ctx),h=o.globals.translateY;if(s.show){!0===o.config.yaxis[a].opposite&&(t+=s.width);for(var c=e;c>=0;c--){var d=h+e/10+o.config.yaxis[a].labels.offsetY-1;o.globals.isBarHorizontal&&(d=r*c);var u=l.drawLine(t+i.offsetX-s.width+s.offsetX,d+s.offsetY,t+i.offsetX+s.offsetX,d+s.offsetY,i.color);n.add(u),h+=r}}}}]),t}(),YAxis=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.xaxisFontSize=i.config.xaxis.labels.style.fontSize,this.axisFontFamily=i.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=i.config.xaxis.labels.style.colors,this.xAxisoffX=0,\"bottom\"===i.config.xaxis.position&&(this.xAxisoffX=i.globals.gridHeight),this.drawnLabels=[],this.axesUtils=new AxesUtils(e)}return _createClass(t,[{key:\"drawYaxis\",value:function(t){var e=this.w,i=new Graphics(this.ctx),s=e.config.yaxis[t].labels.style.fontSize,a=e.config.yaxis[t].labels.style.fontFamily,r=i.group({class:\"apexcharts-yaxis\",rel:t,transform:\"translate(\"+e.globals.translateYAxisX[t]+\", 0)\"});if(!e.config.yaxis[t].show)return r;var n=i.group({class:\"apexcharts-yaxis-texts-g\"});r.add(n);var o=e.globals.yAxisScale[t].result.length-1,l=e.globals.gridHeight/o+.1,h=e.globals.translateY,c=e.globals.yLabelFormatters[t],d=e.globals.yAxisScale[t].result.slice();if(e.config.yaxis[t]&&e.config.yaxis[t].reversed&&d.reverse(),e.config.yaxis[t].labels.show)for(var u=o;u>=0;u--){var g=d[u];g=c(g,u);var f=e.config.yaxis[t].labels.padding;e.config.yaxis[t].opposite&&0!==e.config.yaxis.length&&(f*=-1);var p=i.drawText({x:f,y:h+o/10+e.config.yaxis[t].labels.offsetY+1,text:g,textAnchor:e.config.yaxis[t].opposite?\"start\":\"end\",fontSize:s,fontFamily:a,foreColor:e.config.yaxis[t].labels.style.color,cssClass:\"apexcharts-yaxis-label \"+e.config.yaxis[t].labels.style.cssClass});n.add(p);var x=i.rotateAroundCenter(p.node);0!==e.config.yaxis[t].labels.rotate&&p.node.setAttribute(\"transform\",\"rotate(\".concat(e.config.yaxis[t].labels.rotate,\" \").concat(x.x,\" \").concat(x.y,\")\")),h+=l}if(void 0!==e.config.yaxis[t].title.text){var m=i.group({class:\"apexcharts-yaxis-title\"}),b=0;e.config.yaxis[t].opposite&&(b=e.globals.translateYAxisX[t]);var v=i.drawText({x:b,y:e.globals.gridHeight/2+e.globals.translateY,text:e.config.yaxis[t].title.text,textAnchor:\"end\",foreColor:e.config.yaxis[t].title.style.color,fontSize:e.config.yaxis[t].title.style.fontSize,fontFamily:e.config.yaxis[t].title.style.fontFamily,cssClass:\"apexcharts-yaxis-title-text \"+e.config.yaxis[t].title.style.cssClass});m.add(v),r.add(m)}var y=e.config.yaxis[t].axisBorder;if(y.show){var w=31+y.offsetX;e.config.yaxis[t].opposite&&(w=-31-y.offsetX);var k=i.drawLine(w,e.globals.translateY+y.offsetY-2,w,e.globals.gridHeight+e.globals.translateY+y.offsetY+2,y.color);r.add(k),this.axesUtils.drawYAxisTicks(w,o,y,e.config.yaxis[t].axisTicks,t,l,r)}return r}},{key:\"drawYaxisInversed\",value:function(t){var e=this.w,i=new Graphics(this.ctx),s=i.group({class:\"apexcharts-xaxis apexcharts-yaxis-inversed\"}),a=i.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(e.globals.translateXAxisX,\", \").concat(e.globals.translateXAxisY,\")\")});s.add(a);var r=e.globals.yAxisScale[t].result.length-1,n=e.globals.gridWidth/r+.1,o=n+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.invertedTimelineLabels;c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),e.config.yaxis[t]&&e.config.yaxis[t].reversed&&h.reverse();var d=c.length;if(e.config.xaxis.labels.show)for(var u=d?0:r;d?u<d-1:u>=0;d?u++:u--){var g=h[u];g=l(g,u);var f=e.globals.gridWidth+e.globals.padHorizontal-(o-n+e.config.xaxis.labels.offsetX);if(c.length){var p=this.axesUtils.getLabel(h,c,f,u,this.drawnLabels);f=p.x,g=p.text,this.drawnLabels.push(p.text)}var x=i.drawText({x:f,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30,text:\"\",textAnchor:\"middle\",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,cssClass:\"apexcharts-xaxis-label \"+e.config.xaxis.labels.style.cssClass});a.add(x),x.tspan(g);var m=document.createElementNS(e.globals.SVGNS,\"title\");m.textContent=g,x.node.appendChild(m),o+=n}if(void 0!==e.config.xaxis.title.text){var b=i.group({class:\"apexcharts-xaxis-title apexcharts-yaxis-title-inversed\"}),v=i.drawText({x:e.globals.gridWidth/2,y:this.xAxisoffX+parseInt(this.xaxisFontSize)+parseInt(e.config.xaxis.title.style.fontSize)+20,text:e.config.xaxis.title.text,textAnchor:\"middle\",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,cssClass:\"apexcharts-xaxis-title-text \"+e.config.xaxis.title.style.cssClass});b.add(v),s.add(b)}var y=e.config.yaxis[t].axisBorder;if(y.show){var w=i.drawLine(e.globals.padHorizontal+y.offsetX,1+y.offsetY,e.globals.padHorizontal+y.offsetX,e.globals.gridHeight+y.offsetY,y.color);s.add(w)}return s}},{key:\"yAxisTitleRotate\",value:function(t,e){var i=this.w,s=new Graphics(this.ctx),a={width:0,height:0},r={width:0,height:0},n=i.globals.dom.baseEl.querySelector(\" .apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-texts-g\"));null!==n&&(a=n.getBoundingClientRect());var o=i.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-title text\"));if(null!==o&&(r=o.getBoundingClientRect()),null!==o){var l=this.xPaddingForYAxisTitle(t,a,r,e);o.setAttribute(\"x\",l.xPos-(e?10:0))}if(null!==o){var h=s.rotateAroundCenter(o);e?o.setAttribute(\"transform\",\"rotate(\".concat(i.config.yaxis[t].title.rotate,\" \").concat(h.x,\" \").concat(h.y,\")\")):o.setAttribute(\"transform\",\"rotate(-\".concat(i.config.yaxis[t].title.rotate,\" \").concat(h.x,\" \").concat(h.y,\")\"))}}},{key:\"xPaddingForYAxisTitle\",value:function(t,e,i,s){var a=this.w,r=0,n=0,o=10;return void 0===a.config.yaxis[t].title.text||t<0?{xPos:n,padd:0}:(s?(n=e.width+a.config.yaxis[t].title.offsetX+i.width/2+o/2,0===(r+=1)&&(n-=o/2)):(n=-1*e.width+a.config.yaxis[t].title.offsetX+o/2+i.width/2,a.globals.isBarHorizontal&&(o=25,n=-1*e.width-a.config.yaxis[t].title.offsetX-o)),{xPos:n,padd:o})}},{key:\"setYAxisXPosition\",value:function(t,e){var i=this.w,s=0,a=0,r=21,n=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map(function(o,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!o.show||o.floating||0===t[l].width,c=t[l].width+e[l].width;o.opposite?i.globals.isBarHorizontal?(a=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=a-o.labels.offsetX):(a=i.globals.gridWidth+i.globals.translateX+n,h||(n=n+c+20),i.globals.translateYAxisX[l]=a-o.labels.offsetX+20):(s=i.globals.translateX-r,h||(r=r+c+20),i.globals.translateYAxisX[l]=s+o.labels.offsetX)})}},{key:\"setYAxisTextAlignments\",value:function(){var t=this.w,e=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis\");(e=Utils.listToArray(e)).forEach(function(e,i){var s=t.config.yaxis[i];if(void 0!==s.labels.align){var a=t.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-texts-g\")),r=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-label\"));r=Utils.listToArray(r);var n=a.getBoundingClientRect();\"left\"===s.labels.align?(r.forEach(function(t,e){t.setAttribute(\"text-anchor\",\"start\")}),s.opposite||a.setAttribute(\"transform\",\"translate(-\".concat(n.width,\", 0)\"))):\"center\"===s.labels.align?(r.forEach(function(t,e){t.setAttribute(\"text-anchor\",\"middle\")}),a.setAttribute(\"transform\",\"translate(\".concat(n.width/2*(s.opposite?1:-1),\", 0)\"))):\"right\"===s.labels.align&&(r.forEach(function(t,e){t.setAttribute(\"text-anchor\",\"end\")}),s.opposite&&a.setAttribute(\"transform\",\"translate(\".concat(n.width,\", 0)\")))}})}}]),t}(),Dimensions=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.xPadRight=0,this.xPadLeft=0}return _createClass(t,[{key:\"plotCoords\",value:function(){var t=this.w,e=t.globals,i=this.getLegendsRect();e.axisCharts?this.setGridCoordsForAxisCharts(i):this.setGridCoordsForNonAxisCharts(i),this.titleSubtitleOffset(),e.gridHeight=e.gridHeight-t.config.grid.padding.top-t.config.grid.padding.bottom,e.gridWidth=e.gridWidth-t.config.grid.padding.left-t.config.grid.padding.right-this.xPadRight-this.xPadLeft,e.translateX=e.translateX+t.config.grid.padding.left+this.xPadLeft,e.translateY=e.translateY+t.config.grid.padding.top}},{key:\"conditionalChecksForAxisCoords\",value:function(t,e){var i=this.w;this.xAxisHeight=(t.height+e.height)*i.globals.LINE_HEIGHT_RATIO+15,this.xAxisWidth=t.width,this.xAxisHeight-e.height>i.config.xaxis.labels.maxHeight&&(this.xAxisHeight=i.config.xaxis.labels.maxHeight),i.config.xaxis.labels.minHeight&&this.xAxisHeight<i.config.xaxis.labels.minHeight&&(this.xAxisHeight=i.config.xaxis.labels.minHeight),i.config.xaxis.floating&&(this.xAxisHeight=0),i.globals.isBarHorizontal?this.yAxisWidth=i.globals.yLabelsCoords[0].width+i.globals.yTitleCoords[0].width+15:this.yAxisWidth=this.getTotalYAxisWidth();var s=0,a=0;i.config.yaxis.forEach(function(t){s+=t.labels.minWidth,a+=t.labels.maxWidth}),this.yAxisWidth<s&&(this.yAxisWidth=s),this.yAxisWidth>a&&(this.yAxisWidth=a)}},{key:\"setGridCoordsForAxisCharts\",value:function(t){var e=this.w,i=e.globals,s=this.getyAxisLabelsCoords(),a=this.getxAxisLabelsCoords(),r=this.getyAxisTitleCoords(),n=this.getxAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map(function(t,i){e.globals.yLabelsCoords.push({width:s[i].width,index:i}),e.globals.yTitleCoords.push({width:r[i].width,index:i})}),this.conditionalChecksForAxisCoords(a,n),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var o=this.yAxisWidth,l=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight,i.xAxisHeight=this.xAxisHeight;var h=10;switch(e.config.grid.show&&\"radar\"!==e.config.chart.type||(o=0,l=35),this.isSparkline&&(t={height:0,width:0},l=0,o=0,h=0),this.additionalPaddingXLabels(a),e.config.legend.position){case\"bottom\":i.translateY=h,i.translateX=o,i.gridHeight=i.svgHeight-t.height-l-(this.isSparkline?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-o;break;case\"top\":i.translateY=t.height+h,i.translateX=o,i.gridHeight=i.svgHeight-t.height-l-(this.isSparkline?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-o;break;case\"left\":i.translateY=h,i.translateX=t.width+o,i.gridHeight=i.svgHeight-l-12,i.gridWidth=i.svgWidth-t.width-o;break;case\"right\":i.translateY=h,i.translateX=o,i.gridHeight=i.svgHeight-l-12,i.gridWidth=i.svgWidth-t.width-o-5;break;default:throw new Error(\"Legend position not supported\")}this.setGridXPosForDualYAxis(r,s),new YAxis(this.ctx).setYAxisXPosition(s,r)}},{key:\"setGridCoordsForNonAxisCharts\",value:function(t){var e=this.w,i=e.globals,s=0;e.config.legend.show&&!e.config.legend.floating&&(s=20);var a=10,r=0;if(\"pie\"===e.config.chart.type||\"donut\"===e.config.chart.type?(a+=e.config.plotOptions.pie.offsetY,r+=e.config.plotOptions.pie.offsetX):\"radialBar\"===e.config.chart.type&&(a+=e.config.plotOptions.radialBar.offsetY,r+=e.config.plotOptions.radialBar.offsetX),!e.config.legend.show)return i.gridHeight=i.svgHeight-35,i.gridWidth=i.gridHeight,i.translateY=a-10,void(i.translateX=r+(i.svgWidth-i.gridWidth)/2);switch(e.config.legend.position){case\"bottom\":i.gridHeight=i.svgHeight-t.height-35,i.gridWidth=i.gridHeight,i.translateY=a-20,i.translateX=r+(i.svgWidth-i.gridWidth)/2;break;case\"top\":i.gridHeight=i.svgHeight-t.height-35,i.gridWidth=i.gridHeight,i.translateY=t.height+a+10,i.translateX=r+(i.svgWidth-i.gridWidth)/2;break;case\"left\":i.gridWidth=i.svgWidth-t.width-s,i.gridHeight=i.gridWidth,i.translateY=a,i.translateX=r+t.width+s;break;case\"right\":i.gridWidth=i.svgWidth-t.width-s-5,i.gridHeight=i.gridWidth,i.translateY=a,i.translateX=r+10;break;default:throw new Error(\"Legend position not supported\")}}},{key:\"setGridXPosForDualYAxis\",value:function(t,e){var i=this.w;i.config.yaxis.map(function(s,a){-1===i.globals.ignoreYAxisIndexes.indexOf(a)&&!i.config.yaxis[a].floating&&i.config.yaxis[a].show&&s.opposite&&(i.globals.translateX=i.globals.translateX-(e[a].width+t[a].width)-parseInt(i.config.yaxis[a].labels.style.fontSize)/1.2-12)})}},{key:\"additionalPaddingXLabels\",value:function(t){var e=this,i=this.w;if(\"category\"===i.config.xaxis.type&&i.globals.isBarHorizontal||\"numeric\"===i.config.xaxis.type||\"datetime\"===i.config.xaxis.type){var s=i.globals.isXNumeric;i.config.yaxis.forEach(function(a,r){var n;(!a.show||a.floating||-1!==i.globals.collapsedSeriesIndices.indexOf(r)||s||a.opposite&&i.globals.isBarHorizontal)&&((s&&i.globals.isMultipleYAxis&&-1!==i.globals.collapsedSeriesIndices.indexOf(r)||i.globals.isBarHorizontal&&a.opposite)&&(n=t,i.config.grid.padding.left<n.width&&(e.xPadLeft=n.width/2+1)),(!i.globals.isBarHorizontal&&a.opposite&&-1!==i.globals.collapsedSeriesIndices.indexOf(r)||s&&!i.globals.isMultipleYAxis)&&function(t){e.timescaleLabels?e.timescaleLabels[e.timescaleLabels.length-1].position+t.width>i.globals.gridWidth?i.globals.skipLastTimelinelabel=!0:i.globals.skipLastTimelinelabel=!1:\"datetime\"===i.config.xaxis.type?i.config.grid.padding.right<t.width&&(i.globals.skipLastTimelinelabel=!0):\"datetime\"!==i.config.xaxis.type&&i.config.grid.padding.right<t.width&&(e.xPadRight=t.width/2+1)}(t))})}}},{key:\"titleSubtitleOffset\",value:function(){var t=this.w,e=t.globals,i=this.isSparkline||!t.globals.axisCharts?0:10;void 0!==t.config.title.text?i+=t.config.title.margin:i+=this.isSparkline||!t.globals.axisCharts?0:5,void 0!==t.config.subtitle.text?i+=t.config.subtitle.margin:i+=this.isSparkline||!t.globals.axisCharts?0:5,t.config.legend.show&&\"bottom\"===t.config.legend.position&&!t.config.legend.floating&&(t.config.series.length>1||!t.globals.axisCharts||t.config.legend.showForSingleSeries)&&(i+=10);var s=this.getTitleSubtitleCoords(\"title\"),a=this.getTitleSubtitleCoords(\"subtitle\");e.gridHeight=e.gridHeight-s.height-a.height-i,e.translateY=e.translateY+s.height+a.height+i}},{key:\"getTotalYAxisWidth\",value:function(){var t=this.w,e=0,i=10,s=function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1};return t.globals.yLabelsCoords.map(function(a,r){var n=t.config.yaxis[r].floating;a.width>0&&!n?(e=e+a.width+i,s(r)&&(e=e-a.width-i)):e+=n||!t.config.yaxis[r].show?0:5}),t.globals.yTitleCoords.map(function(a,r){var n=t.config.yaxis[r].floating;i=parseInt(t.config.yaxis[r].title.style.fontSize),a.width>0&&!n?(e=e+a.width+i,s(r)&&(e=e-a.width-i)):e+=n||!t.config.yaxis[r].show?0:5}),e}},{key:\"getxAxisTimeScaleLabelsCoords\",value:function(){var t,e=this.w;this.timescaleLabels=e.globals.timelineLabels.slice(),e.globals.isBarHorizontal&&\"datetime\"===e.config.xaxis.type&&(this.timescaleLabels=e.globals.invertedTimelineLabels.slice());var i=this.timescaleLabels.map(function(t){return t.value}),s=i.reduce(function(t,e){return void 0===t?(console.error(\"You have possibly supplied invalid Date format. Please supply a valid JavaScript Date\"),0):t.length>e.length?t:e},0);return 1.05*(t=new Graphics(this.ctx).getTextRects(s,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:\"getxAxisLabelsCoords\",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.globals.timelineLabels.length>0){var s=this.getxAxisTimeScaleLabelsCoords();t={width:s.width,height:s.height}}else{var a=\"left\"!==e.config.legend.position||\"right\"!==e.config.legend.position||e.config.legend.floating?0:this.lgRect.width,r=e.globals.xLabelFormatter,n=i.reduce(function(t,e){return t.length>e.length?t:e},0);e.globals.isBarHorizontal&&(n=e.globals.yAxisScale[0].result.reduce(function(t,e){return t.length>e.length?t:e},0));var o=n;n=new Formatters(this.ctx).xLabelFormat(r,n,o);var l=new Graphics(this.ctx),h=l.getTextRects(n,e.config.xaxis.labels.style.fontSize);(t={width:h.width,height:h.height}).width*i.length>e.globals.svgWidth-a-this.yAxisWidth&&0!==e.config.xaxis.labels.rotate?e.globals.isBarHorizontal||(e.globals.rotateXLabels=!0,h=l.getTextRects(n,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,\"rotate(\".concat(e.config.xaxis.labels.rotate,\" 0 0)\"),!1),t.height=h.height/1.66):e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:\"getyAxisLabelsCoords\",value:function(){var t=this,e=this.w,i=[],s=10;return e.config.yaxis.map(function(a,r){if(a.show&&a.labels.show&&e.globals.yAxisScale[r].result.length){var n=e.globals.yLabelFormatters[r],o=n(e.globals.yAxisScale[r].niceMax,-1);if(void 0!==o&&0!==o.length||(o=e.globals.yAxisScale[r].niceMax),e.globals.isBarHorizontal)s=0,o=n(o=e.globals.labels.slice().reduce(function(t,e){return t.length>e.length?t:e},0),-1);var l=new Graphics(t.ctx).getTextRects(o,a.labels.style.fontSize);i.push({width:l.width+s,height:l.height})}else i.push({width:0,height:0})}),i}},{key:\"getxAxisTitleCoords\",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var s=new Graphics(this.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=s.width,i=s.height}return{width:e,height:i}}},{key:\"getyAxisTitleCoords\",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map(function(e,s){if(e.show&&void 0!==e.title.text){var a=new Graphics(t.ctx).getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,\"rotate(-90 0 0)\",!1);i.push({width:a.width,height:a.height})}else i.push({width:0,height:0})}),i}},{key:\"getTitleSubtitleCoords\",value:function(t){var e=this.w,i=0,s=0,a=\"title\"===t?e.config.title.floating:e.config.subtitle.floating,r=e.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(t,\"-text\"));if(null!==r&&!a){var n=r.getBoundingClientRect();i=n.width,s=e.globals.axisCharts?n.height+5:n.height}return{width:i,height:s}}},{key:\"getLegendsRect\",value:function(){var t=this.w,e=t.globals.dom.baseEl.querySelector(\".apexcharts-legend\"),i=Object.assign({},Utils.getBoundingClientRect(e));return null!==e&&!t.config.legend.floating&&t.config.legend.show?this.lgRect={x:i.x,y:i.y,height:i.height,width:0===i.height?0:i.width}:this.lgRect={x:0,y:0,height:0,width:0},this.lgRect}}]),t}(),Series=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"getAllSeriesEls\",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\")}},{key:\"getSeriesByName\",value:function(t){return this.w.globals.dom.baseEl.querySelector(\"[seriesName='\".concat(Utils.escapeString(t),\"']\"))}},{key:\"addCollapsedClassToSeries\",value:function(t,e){var i=this.w;function s(i){for(var s=0;s<i.length;s++)i[s].index===e&&t.node.classList.add(\"apexcharts-series-collapsed\")}s(i.globals.collapsedSeries),s(i.globals.ancillaryCollapsedSeries)}},{key:\"resetSeries\",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=this.w,i=e.globals.initialSeries.slice();e.config.series=i,e.globals.collapsedSeries=[],e.globals.ancillaryCollapsedSeries=[],e.globals.collapsedSeriesIndices=[],e.globals.ancillaryCollapsedSeriesIndices=[],e.globals.previousPaths=[],t&&this.ctx._updateSeries(i,e.config.chart.animations.dynamicAnimation.enabled)}},{key:\"toggleSeriesOnHover\",value:function(t,e){var i=this.w,s=i.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\");if(\"mousemove\"===t.type){var a=parseInt(e.getAttribute(\"rel\"))-1,r=null;r=i.globals.axisCharts||\"radialBar\"===i.config.chart.type?i.globals.axisCharts?i.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(a,\"']\")):i.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(a+1,\"']\")):i.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(a+1,\"'] path\"));for(var n=0;n<s.length;n++)s[n].classList.add(\"legend-mouseover-inactive\");null!==r&&(i.globals.axisCharts||r.parentNode.classList.remove(\"legend-mouseover-inactive\"),r.classList.remove(\"legend-mouseover-inactive\"))}else if(\"mouseout\"===t.type)for(var o=0;o<s.length;o++)s[o].classList.remove(\"legend-mouseover-inactive\")}},{key:\"highlightRangeInSeries\",value:function(t,e){var i=this.w,s=i.globals.dom.baseEl.querySelectorAll(\".apexcharts-heatmap-rect\"),a=function(){for(var t=0;t<s.length;t++)s[t].classList.remove(\"legend-mouseover-inactive\")};if(\"mousemove\"===t.type){var r=parseInt(e.getAttribute(\"rel\"))-1;a(),function(){for(var t=0;t<s.length;t++)s[t].classList.add(\"legend-mouseover-inactive\")}(),function(t){for(var e=0;e<s.length;e++){var i=parseInt(s[e].getAttribute(\"val\"));i>=t.from&&i<=t.to&&s[e].classList.remove(\"legend-mouseover-inactive\")}}(i.config.plotOptions.heatmap.colorScale.ranges[r])}else\"mouseout\"===t.type&&a()}},{key:\"getActiveSeriesIndex\",value:function(){var t=this.w,e=0;if(t.globals.series.length>1)for(var i=t.globals.series.map(function(e,i){return e.length>0&&\"bar\"!==t.config.series[i].type&&\"column\"!==t.config.series[i].type?i:-1}),s=0;s<i.length;s++)if(-1!==i[s]){e=i[s];break}return e}},{key:\"getActiveConfigSeriesIndex\",value:function(){var t=this.w,e=0;if(t.config.series.length>1)for(var i=t.config.series.map(function(t,e){return t.data&&t.data.length>0?e:-1}),s=0;s<i.length;s++)if(-1!==i[s]){e=i[s];break}return e}},{key:\"getPreviousPaths\",value:function(){var t=this.w;function e(e,i,s){for(var a=e[i].childNodes,r={type:s,paths:[],realIndex:e[i].getAttribute(\"data:realIndex\")},n=0;n<a.length;n++)if(a[n].hasAttribute(\"pathTo\")){var o=a[n].getAttribute(\"pathTo\");r.paths.push({d:o})}t.globals.previousPaths.push(r)}t.globals.previousPaths=[];var i=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-line-series .apexcharts-series\");if(i.length>0)for(var s=i.length-1;s>=0;s--)e(i,s,\"line\");var a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-area-series .apexcharts-series\");if(a.length>0)for(var r=a.length-1;r>=0;r--)e(a,r,\"area\");var n=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-bar-series .apexcharts-series\");if(n.length>0)for(var o=0;o<n.length;o++)e(n,o,\"bar\");var l=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-candlestick-series .apexcharts-series\");if(l.length>0)for(var h=0;h<l.length;h++)e(l,h,\"candlestick\");var c=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-radar-series .apexcharts-series\");if(c.length>0)for(var d=0;d<c.length;d++)e(c,d,\"radar\");var u=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-bubble-series .apexcharts-series\");if(u.length>0)for(var g=0;g<u.length;g++){for(var f=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-bubble-series .apexcharts-series[data\\\\:realIndex='\".concat(g,\"'] circle\")),p=[],x=0;x<f.length;x++)p.push({x:f[x].getAttribute(\"cx\"),y:f[x].getAttribute(\"cy\"),r:f[x].getAttribute(\"r\")});t.globals.previousPaths.push(p)}var m=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-scatter-series .apexcharts-series\");if(m.length>0)for(var b=0;b<m.length;b++){for(var v=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-scatter-series .apexcharts-series[data\\\\:realIndex='\".concat(b,\"'] circle\")),y=[],w=0;w<v.length;w++)y.push({x:v[w].getAttribute(\"cx\"),y:v[w].getAttribute(\"cy\"),r:v[w].getAttribute(\"r\")});t.globals.previousPaths.push(y)}var k=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-heatmap .apexcharts-series\");if(k.length>0)for(var A=0;A<k.length;A++){for(var S=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-heatmap .apexcharts-series[data\\\\:realIndex='\".concat(A,\"'] rect\")),C=[],L=0;L<S.length;L++)C.push({color:S[L].getAttribute(\"color\")});t.globals.previousPaths.push(C)}t.globals.axisCharts||(t.globals.previousPaths=t.globals.series)}},{key:\"handleNoData\",value:function(){var t=this.w,e=t.config.noData,i=new Graphics(this.ctx),s=t.globals.svgWidth/2,a=t.globals.svgHeight/2,r=\"middle\";if(t.globals.noData=!0,t.globals.animationEnded=!0,\"left\"===e.align?(s=10,r=\"start\"):\"right\"===e.align&&(s=t.globals.svgWidth-10,r=\"end\"),\"top\"===e.verticalAlign?a=50:\"bottom\"===e.verticalAlign&&(a=t.globals.svgHeight-50),s+=e.offsetX,a=a+parseInt(e.style.fontSize)+2,void 0!==e.text&&\"\"!==e.text){var n=i.drawText({x:s,y:a,text:e.text,textAnchor:r,fontSize:e.style.fontSize,fontFamily:e.style.fontFamily,foreColor:e.style.color,opacity:1,class:\"apexcharts-text-nodata\"});n.node.setAttribute(\"class\",\"apexcharts-title-text\"),t.globals.dom.Paper.add(n)}}},{key:\"setNullSeriesToZeroValues\",value:function(t){for(var e=this.w,i=0;i<t.length;i++)if(0===t[i].length)for(var s=0;s<t[e.globals.maxValsInArrayIndex].length;s++)t[i].push(0);return t}},{key:\"hasAllSeriesEqualX\",value:function(){for(var t=!0,e=this.w,i=this.filteredSeriesX(),s=0;s<i.length-1;s++)if(i[s][0]!==i[s+1][0]){t=!1;break}return e.globals.allSeriesHasEqualX=t,t}},{key:\"filteredSeriesX\",value:function(){var t=this.w.globals.seriesX.map(function(t,e){return t.length>0?t:[]});return t}}]),t}(),Legend=function(){function t(e,i){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this)}return _createClass(t,[{key:\"init\",value:function(){var t=this.w,e=t.globals,i=t.config;if((i.legend.showForSingleSeries&&1===e.series.length||e.series.length>1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),Utils.isIE11()?document.getElementsByTagName(\"head\")[0].appendChild(this.getLegendStyles()):this.appendToForeignObject(),\"bottom\"===i.legend.position||\"top\"===i.legend.position?this.legendAlignHorizontal():\"right\"!==i.legend.position&&\"left\"!==i.legend.position||this.legendAlignVertical()}}},{key:\"appendToForeignObject\",value:function(){var t=this.w.globals;t.dom.elLegendForeign=document.createElementNS(t.SVGNS,\"foreignObject\");var e=t.dom.elLegendForeign;e.setAttribute(\"x\",0),e.setAttribute(\"y\",0),e.setAttribute(\"width\",t.svgWidth),e.setAttribute(\"height\",t.svgHeight),t.dom.elLegendWrap.setAttribute(\"xmlns\",\"http://www.w3.org/1999/xhtml\"),e.appendChild(t.dom.elLegendWrap),e.appendChild(this.getLegendStyles()),t.dom.Paper.node.insertBefore(e,t.dom.elGraphical.node)}},{key:\"drawLegends\",value:function(){var t=this.w,e=t.config.legend.fontFamily,i=t.globals.seriesNames,s=t.globals.colors.slice();if(\"heatmap\"===t.config.chart.type){var a=t.config.plotOptions.heatmap.colorScale.ranges;i=a.map(function(t){return t.name?t.name:t.from+\" - \"+t.to}),s=a.map(function(t){return t.color})}for(var r=t.globals.legendFormatter,n=t.config.legend.inverseOrder,o=n?i.length-1:0;n?o>=0:o<=i.length-1;n?o--:o++){var l=r(i[o],{seriesIndex:o,w:t}),h=!1,c=!1;if(t.globals.collapsedSeries.length>0)for(var d=0;d<t.globals.collapsedSeries.length;d++)t.globals.collapsedSeries[d].index===o&&(h=!0);if(t.globals.ancillaryCollapsedSeriesIndices.length>0)for(var u=0;u<t.globals.ancillaryCollapsedSeriesIndices.length;u++)t.globals.ancillaryCollapsedSeriesIndices[u]===o&&(c=!0);var g=document.createElement(\"span\");g.classList.add(\"apexcharts-legend-marker\");var f=t.config.legend.markers.offsetX,p=t.config.legend.markers.offsetY,x=t.config.legend.markers.height,m=t.config.legend.markers.width,b=t.config.legend.markers.strokeWidth,v=t.config.legend.markers.strokeColor,y=t.config.legend.markers.radius,w=g.style;w.background=s[o],w.color=s[o],w.height=Array.isArray(x)?parseFloat(x[o])+\"px\":parseFloat(x)+\"px\",w.width=Array.isArray(m)?parseFloat(m[o])+\"px\":parseFloat(m)+\"px\",w.left=Array.isArray(f)?f[o]:f,w.top=Array.isArray(p)?p[o]:p,w.borderWidth=Array.isArray(b)?b[o]:b,w.borderColor=Array.isArray(v)?v[o]:v,w.borderRadius=Array.isArray(y)?parseFloat(y[o])+\"px\":parseFloat(y)+\"px\",t.config.legend.markers.customHTML&&(Array.isArray(t.config.legend.markers.customHTML)?g.innerHTML=t.config.legend.markers.customHTML[o]():g.innerHTML=t.config.legend.markers.customHTML()),Graphics.setAttrs(g,{rel:o+1,\"data:collapsed\":h||c}),(h||c)&&g.classList.add(\"inactive-legend\");var k=document.createElement(\"div\"),A=document.createElement(\"span\");A.classList.add(\"apexcharts-legend-text\"),A.innerHTML=l;var S=t.config.legend.labels.useSeriesColors?t.globals.colors[o]:t.config.legend.labels.colors;S||(S=t.config.chart.foreColor),A.style.color=S,A.style.fontSize=parseFloat(t.config.legend.fontSize)+\"px\",A.style.fontFamily=e||t.config.chart.fontFamily,Graphics.setAttrs(A,{rel:o+1,\"data:collapsed\":h||c}),k.appendChild(g),k.appendChild(A);var C=new CoreUtils(this.ctx);if(!t.config.legend.showForZeroSeries)0===C.getSeriesTotalByIndex(o)&&C.seriesHaveSameValues(o)&&!C.isSeriesNull(o)&&-1===t.globals.collapsedSeriesIndices.indexOf(o)&&-1===t.globals.ancillaryCollapsedSeriesIndices.indexOf(o)&&k.classList.add(\"apexcharts-hidden-zero-series\");t.config.legend.showForNullSeries||C.isSeriesNull(o)&&-1===t.globals.collapsedSeriesIndices.indexOf(o)&&-1===t.globals.ancillaryCollapsedSeriesIndices.indexOf(o)&&k.classList.add(\"apexcharts-hidden-null-series\"),t.globals.dom.elLegendWrap.appendChild(k),t.globals.dom.elLegendWrap.classList.add(t.config.legend.horizontalAlign),t.globals.dom.elLegendWrap.classList.add(\"position-\"+t.config.legend.position),k.classList.add(\"apexcharts-legend-series\"),k.style.margin=\"\".concat(t.config.legend.itemMargin.horizontal,\"px \").concat(t.config.legend.itemMargin.vertical,\"px\"),t.globals.dom.elLegendWrap.style.width=t.config.legend.width?t.config.legend.width+\"px\":\"\",t.globals.dom.elLegendWrap.style.height=t.config.legend.height?t.config.legend.height+\"px\":\"\",Graphics.setAttrs(k,{rel:o+1,\"data:collapsed\":h||c}),(h||c)&&k.classList.add(\"inactive-legend\"),t.config.legend.onItemClick.toggleDataSeries||k.classList.add(\"no-click\")}\"heatmap\"!==t.config.chart.type&&t.config.legend.onItemClick.toggleDataSeries&&t.globals.dom.elWrap.addEventListener(\"click\",this.onLegendClick,!0),t.config.legend.onItemHover.highlightDataSeries&&(t.globals.dom.elWrap.addEventListener(\"mousemove\",this.onLegendHovered,!0),t.globals.dom.elWrap.addEventListener(\"mouseout\",this.onLegendHovered,!0))}},{key:\"getLegendBBox\",value:function(){var t=this.w.globals.dom.baseEl.querySelector(\".apexcharts-legend\").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:\"setLegendWrapXY\",value:function(t,e){var i=this.w,s=i.globals.dom.baseEl.querySelector(\".apexcharts-legend\"),a=s.getBoundingClientRect(),r=0,n=0;if(\"bottom\"===i.config.legend.position)n+=i.globals.svgHeight-a.height/2;else if(\"top\"===i.config.legend.position){var o=new Dimensions(this.ctx),l=o.getTitleSubtitleCoords(\"title\").height,h=o.getTitleSubtitleCoords(\"subtitle\").height;n=n+(l>0?l-10:0)+(h>0?h-10:0)}s.style.position=\"absolute\",r=r+t+i.config.legend.offsetX,n=n+e+i.config.legend.offsetY,s.style.left=r+\"px\",s.style.top=n+\"px\",\"bottom\"===i.config.legend.position?(s.style.top=\"auto\",s.style.bottom=10+i.config.legend.offsetY+\"px\"):\"right\"===i.config.legend.position&&(s.style.left=\"auto\",s.style.right=25+i.config.legend.offsetX+\"px\"),s.style.width&&(s.style.width=parseInt(i.config.legend.width)+\"px\"),s.style.height&&(s.style.height=parseInt(i.config.legend.height)+\"px\")}},{key:\"legendAlignHorizontal\",value:function(){var t=this.w;t.globals.dom.baseEl.querySelector(\".apexcharts-legend\").style.right=0;var e=this.getLegendBBox(),i=new Dimensions(this.ctx),s=i.getTitleSubtitleCoords(\"title\"),a=i.getTitleSubtitleCoords(\"subtitle\"),r=0;\"bottom\"===t.config.legend.position?r=-e.clwh/1.8:\"top\"===t.config.legend.position&&(r=s.height+a.height+t.config.title.margin+t.config.subtitle.margin-15),this.setLegendWrapXY(20,r)}},{key:\"legendAlignVertical\",value:function(){var t=this.w,e=this.getLegendBBox(),i=0;\"left\"===t.config.legend.position&&(i=20),\"right\"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:\"onLegendHovered\",value:function(t){var e=this.w,i=t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\");if(\"heatmap\"!==e.config.chart.type)!t.target.classList.contains(\"inactive-legend\")&&i&&new Series(this.ctx).toggleSeriesOnHover(t,t.target);else if(i){var s=parseInt(t.target.getAttribute(\"rel\"))-1;this.ctx.fireEvent(\"legendHover\",[this.ctx,s,this.w]),new Series(this.ctx).highlightRangeInSeries(t,t.target)}}},{key:\"onLegendClick\",value:function(t){if(t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\")){var e=parseInt(t.target.getAttribute(\"rel\"))-1,i=\"true\"===t.target.getAttribute(\"data:collapsed\"),s=this.w.config.chart.events.legendClick;\"function\"==typeof s&&s(this.ctx,e,this.w),this.ctx.fireEvent(\"legendClick\",[this.ctx,e,this.w]);var a=this.w.config.legend.markers.onClick;\"function\"==typeof a&&t.target.classList.contains(\"apexcharts-legend-marker\")&&(a(this.ctx,e,this.w),this.ctx.fireEvent(\"legendMarkerClick\",[this.ctx,e,this.w])),this.toggleDataSeries(e,i)}}},{key:\"getLegendStyles\",value:function(){var t=document.createElement(\"style\");t.setAttribute(\"type\",\"text/css\");var e=document.createTextNode(\"\\n    \\n      .apexcharts-legend {\\n        display: flex;\\n        overflow: auto;\\n        padding: 0 10px;\\n      }\\n\\n      .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\\n        flex-wrap: wrap\\n      }\\n      .apexcharts-legend.position-right, .apexcharts-legend.position-left {\\n        flex-direction: column;\\n        bottom: 0;\\n      }\\n\\n      .apexcharts-legend.position-bottom.left, .apexcharts-legend.position-top.left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\\n        justify-content: flex-start;\\n      }\\n\\n      .apexcharts-legend.position-bottom.center, .apexcharts-legend.position-top.center {\\n        justify-content: center;  \\n      }\\n\\n      .apexcharts-legend.position-bottom.right, .apexcharts-legend.position-top.right {\\n        justify-content: flex-end;\\n      }\\n\\n      .apexcharts-legend-series {\\n        cursor: pointer;\\n        line-height: normal;\\n      }\\n\\n      .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\\n        display: flex;\\n        align-items: center;\\n      }\\n\\n      .apexcharts-legend-text {\\n        position: relative;\\n        font-size: 14px;\\n      }\\n\\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\\n        pointer-events: none;\\n      }\\n\\n      .apexcharts-legend-marker {\\n        position: relative;\\n        display: inline-block;\\n        cursor: pointer;\\n        margin-right: 3px;\\n      }\\n      \\n      .apexcharts-legend.right .apexcharts-legend-series, .apexcharts-legend.left .apexcharts-legend-series{\\n        display: inline-block;\\n      }\\n\\n      .apexcharts-legend-series.no-click {\\n        cursor: auto;\\n      }\\n\\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\\n        display: none !important;\\n      }\\n\\n      .inactive-legend {\\n        opacity: 0.45;\\n      }\");return t.appendChild(e),t}},{key:\"toggleDataSeries\",value:function(t,e){var i=this.w;if(i.globals.axisCharts||\"radialBar\"===i.config.chart.type){i.globals.resized=!0;var s=null,a=null;if(i.globals.risingSeries=[],i.globals.axisCharts?(s=i.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\")),a=parseInt(s.getAttribute(\"data:realIndex\"))):(s=i.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(t+1,\"']\")),a=parseInt(s.getAttribute(\"rel\"))-1),e)this.riseCollapsedSeries(i.globals.collapsedSeries,i.globals.collapsedSeriesIndices,a),this.riseCollapsedSeries(i.globals.ancillaryCollapsedSeries,i.globals.ancillaryCollapsedSeriesIndices,a);else{if(i.globals.axisCharts){var r=!1;if(i.config.yaxis[a]&&i.config.yaxis[a].show&&i.config.yaxis[a].showAlways&&(r=!0,i.globals.ancillaryCollapsedSeriesIndices.indexOf(a)<0&&(i.globals.ancillaryCollapsedSeries.push({index:a,data:i.config.series[a].data.slice(),type:s.parentNode.className.baseVal.split(\"-\")[1]}),i.globals.ancillaryCollapsedSeriesIndices.push(a))),!r){i.globals.collapsedSeries.push({index:a,data:i.config.series[a].data.slice(),type:s.parentNode.className.baseVal.split(\"-\")[1]}),i.globals.collapsedSeriesIndices.push(a);var n=i.globals.risingSeries.indexOf(a);i.globals.risingSeries.splice(n,1)}i.config.series[a].data=[]}else i.globals.collapsedSeries.push({index:a,data:i.config.series[a]}),i.globals.collapsedSeriesIndices.push(a),i.config.series[a]=0;for(var o=s.childNodes,l=0;l<o.length;l++)o[l].classList.contains(\"apexcharts-series-markers-wrap\")&&(o[l].classList.contains(\"apexcharts-hide\")?o[l].classList.remove(\"apexcharts-hide\"):o[l].classList.add(\"apexcharts-hide\"));i.globals.allSeriesCollapsed=i.globals.collapsedSeries.length===i.globals.series.length,this.ctx._updateSeries(i.config.series,i.config.chart.animations.dynamicAnimation.enabled)}}else{var h=i.globals.dom.Paper.select(\" .apexcharts-series[rel='\".concat(t+1,\"'] path\")),c=i.config.chart.type;if(\"pie\"===c||\"donut\"===c){var d=i.config.plotOptions.pie.donut.labels,u=new Graphics(this.ctx),g=new Pie(this.ctx);u.pathMouseDown(h.members[0],null),g.printDataLabelsInner(h.members[0].node,d)}h.fire(\"click\")}}},{key:\"riseCollapsedSeries\",value:function(t,e,i){var s=this.w;if(t.length>0)for(var a=0;a<t.length;a++)t[a].index===i&&(s.globals.axisCharts?(s.config.series[i].data=t[a].data.slice(),t.splice(a,1),e.splice(a,1),s.globals.risingSeries.push(i)):(s.config.series[i]=t[a].data,t.splice(a,1),e.splice(a,1),s.globals.risingSeries.push(i)),this.ctx._updateSeries(s.config.series,s.config.chart.animations.dynamicAnimation.enabled))}}]),t}(),Line=function(){function t(e,i,s){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.xyRatios=i,this.pointsChart=!(\"bubble\"!==this.w.config.chart.type&&\"scatter\"!==this.w.config.chart.type)||s,this.scatter=new Scatter(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.yaxisIndex=0}return _createClass(t,[{key:\"draw\",value:function(t,e,i){var s=this.w,a=new Graphics(this.ctx),r=new Fill(this.ctx),n=s.globals.comboCharts?e:s.config.chart.type,o=a.group({class:\"apexcharts-\".concat(n,\"-series apexcharts-plot-series\")}),l=new CoreUtils(this.ctx,s);t=l.getLogSeries(t);var h=this.xyRatios.yRatio;h=l.getLogYRatios(h);for(var c=this.xyRatios.zRatio,d=this.xyRatios.xRatio,u=this.xyRatios.baseLineY,g=[],f=[],p=0,x=0;x<t.length;x++){if(\"line\"===n&&(\"gradient\"===s.config.fill.type||\"gradient\"===s.config.fill.type[x])&&l.seriesHaveSameValues(x)){var m=t[x].slice();m[m.length-1]=m[m.length-1]+1e-6,t[x]=m}var b=s.globals.gridWidth/s.globals.dataPoints,v=s.globals.comboCharts?i[x]:x;h.length>1&&(this.yaxisIndex=v),this.isReversed=s.config.yaxis[this.yaxisIndex]&&s.config.yaxis[this.yaxisIndex].reversed;var y=[],w=[],k=s.globals.gridHeight-u[this.yaxisIndex]-(this.isReversed?s.globals.gridHeight:0)+(this.isReversed?2*u[this.yaxisIndex]:0),A=k;k>s.globals.gridHeight&&(A=s.globals.gridHeight),p=b/2;var S=s.globals.padHorizontal+p,C=1;s.globals.isXNumeric&&s.globals.seriesX.length>0&&(S=(s.globals.seriesX[v][0]-s.globals.minX)/d),w.push(S);var L=void 0,P=void 0,z=void 0,T=void 0,M=[],E=[],X=a.group({class:\"apexcharts-series\",seriesName:Utils.escapeString(s.globals.seriesNames[v])}),I=a.group({class:\"apexcharts-series-markers-wrap\"}),Y=a.group({class:\"apexcharts-datalabels\"});this.ctx.series.addCollapsedClassToSeries(X,v);var F=t[x].length===s.globals.dataPoints;X.attr({\"data:longestSeries\":F,rel:x+1,\"data:realIndex\":v}),this.appendPathFrom=!0;var R=S,D=void 0,N=R,O=k,_=0;if(O=this.determineFirstPrevY({i:x,series:t,yRatio:h[this.yaxisIndex],zeroY:k,prevY:O,prevSeriesY:f,lineYPosition:_}).prevY,y.push(O),D=O,null===t[x][0]){for(var H=0;H<t[x].length;H++)if(null!==t[x][H]){N=b*H,O=k-t[x][H]/h[this.yaxisIndex],L=a.move(N,O),P=a.move(N,A);break}}else L=a.move(N,O),P=a.move(N,A)+a.line(N,O);if(z=a.move(-1,k)+a.line(-1,k),T=a.move(-1,k)+a.line(-1,k),s.globals.previousPaths.length>0){var W=this.checkPreviousPaths({pathFromLine:z,pathFromArea:T,realIndex:v});z=W.pathFromLine,T=W.pathFromArea}for(var G=s.globals.dataPoints>1?s.globals.dataPoints-1:s.globals.dataPoints,B=0;B<G;B++){if(s.globals.isXNumeric){var V=s.globals.seriesX[v][B+1];void 0===s.globals.seriesX[v][B+1]&&(V=s.globals.seriesX[v][G-1]),S=(V-s.globals.minX)/d}else S+=b;var U=Utils.isNumber(s.globals.minYArr[v])?s.globals.minYArr[v]:s.globals.minY;s.config.chart.stacked?(_=x>0&&s.globals.collapsedSeries.length<s.config.series.length-1?f[x-1][B+1]:k,C=void 0===t[x][B+1]||null===t[x][B+1]?_-U/h[this.yaxisIndex]+2*(this.isReversed?U/h[this.yaxisIndex]:0):_-t[x][B+1]/h[this.yaxisIndex]+2*(this.isReversed?t[x][B+1]/h[this.yaxisIndex]:0)):C=void 0===t[x][B+1]||null===t[x][B+1]?k-U/h[this.yaxisIndex]+2*(this.isReversed?U/h[this.yaxisIndex]:0):k-t[x][B+1]/h[this.yaxisIndex]+2*(this.isReversed?t[x][B+1]/h[this.yaxisIndex]:0),w.push(S),y.push(C);var j=this.createPaths({series:t,i:x,j:B,x:S,y:C,xDivision:b,pX:R,pY:D,areaBottomY:A,linePath:L,areaPath:P,linePaths:M,areaPaths:E,seriesIndex:i});E=j.areaPaths,M=j.linePaths,R=j.pX,D=j.pY,P=j.areaPath,L=j.linePath,this.appendPathFrom&&(z+=a.line(S,k),T+=a.line(S,k));var q=this.calculatePoints({series:t,x:S,y:C,realIndex:v,i:x,j:B,prevY:O,categoryAxisCorrection:p,xRatio:d});if(this.pointsChart)this.scatter.draw(X,B,{realIndex:v,pointsPos:q,zRatio:c,elParent:I});else{var Z=new Markers(this.ctx);s.globals.dataPoints>1&&I.node.classList.add(\"hidden\");var $=Z.plotChartMarkers(q,v,B+1);null!==$&&I.add($)}var J=!t[x][B+1]||t[x][B+1]>t[x][B]?\"top\":\"bottom\",Q=new DataLabels(this.ctx).drawDataLabel(q,v,B+1,null,J);null!==Q&&Y.add(Q)}f.push(y),s.globals.seriesXvalues[v]=w,s.globals.seriesYvalues[v]=y,this.pointsChart||s.globals.delayedElements.push({el:I.node,index:v});var K={i:x,realIndex:v,animationDelay:x,initialSpeed:s.config.chart.animations.speed,dataChangeSpeed:s.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(n)};if(\"area\"===n)for(var tt=r.fillPath({seriesNumber:v}),et=0;et<E.length;et++){var it=a.renderPaths(_objectSpread({},K,{pathFrom:T,pathTo:E[et],stroke:\"none\",strokeWidth:0,strokeLineCap:null,fill:tt}));X.add(it)}if(s.config.stroke.show&&!this.pointsChart){var st=null;st=\"line\"===n?r.fillPath({seriesNumber:v,i:x}):s.globals.stroke.colors[v];for(var at=0;at<M.length;at++){var rt=a.renderPaths(_objectSpread({},K,{pathFrom:z,pathTo:M[at],stroke:st,strokeWidth:Array.isArray(s.config.stroke.width)?s.config.stroke.width[v]:s.config.stroke.width,strokeLineCap:s.config.stroke.lineCap,fill:\"none\"}));X.add(rt)}}X.add(I),X.add(Y),g.push(X)}for(var nt=g.length;nt>0;nt--)o.add(g[nt-1]);return o}},{key:\"createPaths\",value:function(t){var e=t.series,i=t.i,s=t.j,a=t.x,r=t.y,n=t.pX,o=t.pY,l=t.xDivision,h=t.areaBottomY,c=t.linePath,d=t.areaPath,u=t.linePaths,g=t.areaPaths,f=t.seriesIndex,p=this.w,x=new Graphics(this.ctx),m=p.config.stroke.curve;if(Array.isArray(p.config.stroke.curve)&&(m=Array.isArray(f)?p.config.stroke.curve[f[i]]:p.config.stroke.curve[i]),\"smooth\"===m){var b=.35*(a-n);p.globals.hasNullValues?(null!==e[i][s]&&(null!==e[i][s+1]?(c=x.move(n,o)+x.curve(n+b,o,a-b,r,a+1,r),d=x.move(n+1,o)+x.curve(n+b,o,a-b,r,a+1,r)+x.line(a,h)+x.line(n,h)+\"z\"):(c=x.move(n,o),d=x.move(n,o)+\"z\")),u.push(c),g.push(d)):(c+=x.curve(n+b,o,a-b,r,a,r),d+=x.curve(n+b,o,a-b,r,a,r)),n=a,o=r,s===e[i].length-2&&(d=d+x.curve(n,o,a,r,a,h)+x.move(a,r)+\"z\",p.globals.hasNullValues||(u.push(c),g.push(d)))}else null===e[i][s+1]&&(c+=x.move(a,r),d=d+x.line(a-l,h)+x.move(a,r)),null===e[i][s]&&(c+=x.move(a,r),d+=x.move(a,h)),\"stepline\"===m?(c=c+x.line(a,null,\"H\")+x.line(null,r,\"V\"),d=d+x.line(a,null,\"H\")+x.line(null,r,\"V\")):\"straight\"===m&&(c+=x.line(a,r),d+=x.line(a,r)),s===e[i].length-2&&(d=d+x.line(a,h)+x.move(a,r)+\"z\",u.push(c),g.push(d));return{linePaths:u,areaPaths:g,pX:n,pY:o,linePath:c,areaPath:d}}},{key:\"calculatePoints\",value:function(t){var e=t.series,i=t.realIndex,s=t.x,a=t.y,r=t.i,n=t.j,o=t.prevY,l=t.categoryAxisCorrection,h=t.xRatio,c=this.w,d=[],u=[];if(0===n){var g=l+c.config.markers.offsetX;c.globals.isXNumeric&&(g=(c.globals.seriesX[i][0]-c.globals.minX)/h+c.config.markers.offsetX),d.push(g),u.push(Utils.isNumber(e[r][0])?o+c.config.markers.offsetY:null),d.push(s+c.config.markers.offsetX),u.push(Utils.isNumber(e[r][n+1])?a+c.config.markers.offsetY:null)}else d.push(s+c.config.markers.offsetX),u.push(Utils.isNumber(e[r][n+1])?a+c.config.markers.offsetY:null);return{x:d,y:u}}},{key:\"checkPreviousPaths\",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,s=t.realIndex,a=this.w,r=0;r<a.globals.previousPaths.length;r++){var n=a.globals.previousPaths[r];(\"line\"===n.type||\"area\"===n.type)&&n.paths.length>0&&parseInt(n.realIndex)===parseInt(s)&&(\"line\"===n.type?(this.appendPathFrom=!1,e=a.globals.previousPaths[r].paths[0].d):\"area\"===n.type&&(this.appendPathFrom=!1,i=a.globals.previousPaths[r].paths[0].d,a.config.stroke.show&&(e=a.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:\"determineFirstPrevY\",value:function(t){var e=t.i,i=t.series,s=t.yRatio,a=t.zeroY,r=t.prevY,n=t.prevSeriesY,o=t.lineYPosition,l=this.w;if(void 0!==i[e][0])r=l.config.chart.stacked?(o=e>0?n[e-1][0]:a)-i[e][0]/s+2*(this.isReversed?i[e][0]/s:0):a-i[e][0]/s+2*(this.isReversed?i[e][0]/s:0);else if(l.config.chart.stacked&&e>0&&void 0===i[e][0])for(var h=e-1;h>=0;h--)if(null!==i[h][0]&&void 0!==i[h][0]){r=o=n[h][0];break}return{prevY:r,lineYPosition:o}}}]),t}(),XAxis=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.xaxisLabels=i.globals.labels.slice(),i.globals.timelineLabels.length>0&&(this.xaxisLabels=i.globals.timelineLabels.slice()),this.drawnLabels=[],\"top\"===i.config.xaxis.position?this.offY=0:this.offY=i.globals.gridHeight+1,this.offY=this.offY+i.config.xaxis.axisBorder.offsetY,this.xaxisFontSize=i.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=i.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=i.config.xaxis.labels.style.colors,this.xaxisBorderWidth=i.config.xaxis.axisBorder.width,this.xaxisBorderWidth.indexOf(\"%\")>-1?this.xaxisBorderWidth=i.globals.gridWidth*parseInt(this.xaxisBorderWidth)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth),this.xaxisBorderHeight=i.config.xaxis.axisBorder.height,this.yaxis=i.config.yaxis[0],this.axesUtils=new AxesUtils(e)}return _createClass(t,[{key:\"drawXaxis\",value:function(){var t,e=this.w,i=new Graphics(this.ctx),s=i.group({class:\"apexcharts-xaxis\",transform:\"translate(\".concat(e.config.xaxis.offsetX,\", \").concat(e.config.xaxis.offsetY,\")\")}),a=i.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(e.globals.translateXAxisX,\", \").concat(e.globals.translateXAxisY,\")\")});s.add(a);for(var r=e.globals.padHorizontal,n=[],o=0;o<this.xaxisLabels.length;o++)n.push(this.xaxisLabels[o]);r=e.globals.isXNumeric?r+(t=e.globals.gridWidth/(n.length-1))/2+e.config.xaxis.labels.offsetX:r+(t=e.globals.gridWidth/n.length)+e.config.xaxis.labels.offsetX;var l=n.length;if(e.config.xaxis.labels.show)for(var h=0;h<=l-1;h++){var c=r-t/2+e.config.xaxis.labels.offsetX,d=this.axesUtils.getLabel(n,e.globals.timelineLabels,c,h,this.drawnLabels);this.drawnLabels.push(d.text);var u=28;e.globals.rotateXLabels&&(u=22);var g=i.drawText({x:d.x,y:this.offY+e.config.xaxis.labels.offsetY+u,text:\"\",textAnchor:\"middle\",fontWeight:d.isBold?600:400,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[h]:this.xaxisForeColors,cssClass:\"apexcharts-xaxis-label \"+e.config.xaxis.labels.style.cssClass});h===l-1&&e.globals.skipLastTimelinelabel&&(d.text=\"\"),a.add(g),i.addTspan(g,d.text,this.xaxisFontFamily);var f=document.createElementNS(e.globals.SVGNS,\"title\");f.textContent=d.text,g.node.appendChild(f),r+=t}if(void 0!==e.config.xaxis.title.text){var p=i.group({class:\"apexcharts-xaxis-title\"}),x=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.offY-parseInt(this.xaxisFontSize)+e.globals.xAxisLabelsHeight+e.config.xaxis.title.offsetY,text:e.config.xaxis.title.text,textAnchor:\"middle\",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,foreColor:e.config.xaxis.title.style.color,cssClass:\"apexcharts-xaxis-title-text \"+e.config.xaxis.title.style.cssClass});p.add(x),s.add(p)}if(e.config.xaxis.axisBorder.show){var m=0;\"bar\"===e.config.chart.type&&e.globals.isXNumeric&&(m-=15);var b=i.drawLine(e.globals.padHorizontal+m+e.config.xaxis.axisBorder.offsetX,this.offY,this.xaxisBorderWidth,this.offY,e.config.xaxis.axisBorder.color,0,this.xaxisBorderHeight);s.add(b)}return s}},{key:\"drawXaxisInversed\",value:function(t){var e,i,s=this.w,a=new Graphics(this.ctx),r=s.config.yaxis[0].opposite?s.globals.translateYAxisX[t]:0,n=a.group({class:\"apexcharts-yaxis apexcharts-xaxis-inversed\",rel:t}),o=a.group({class:\"apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g\",transform:\"translate(\"+r+\", 0)\"});n.add(o);for(var l=[],h=0;h<this.xaxisLabels.length;h++)l.push(this.xaxisLabels[h]);i=-(e=s.globals.gridHeight/l.length)/2.2;var c=s.globals.yLabelFormatters[0],d=s.config.yaxis[0].labels;if(d.show)for(var u=0;u<=l.length-1;u++){var g=void 0===l[u]?\"\":l[u];g=c(g);var f=a.drawText({x:d.offsetX-15,y:i+e+d.offsetY,text:g,textAnchor:this.yaxis.opposite?\"start\":\"end\",foreColor:d.style.color?d.style.color:d.style.colors[u],fontSize:d.style.fontSize,fontFamily:d.style.fontFamily,cssClass:\"apexcharts-yaxis-label \"+d.style.cssClass});if(o.add(f),0!==s.config.yaxis[t].labels.rotate){var p=a.rotateAroundCenter(f.node);f.node.setAttribute(\"transform\",\"rotate(\".concat(s.config.yaxis[t].labels.rotate,\" \").concat(p.x,\" \").concat(p.y,\")\"))}i+=e}if(void 0!==s.config.yaxis[0].title.text){var x=a.group({class:\"apexcharts-yaxis-title apexcharts-xaxis-title-inversed\",transform:\"translate(\"+r+\", 0)\"}),m=a.drawText({x:0,y:s.globals.gridHeight/2,text:s.config.yaxis[0].title.text,textAnchor:\"middle\",foreColor:s.config.yaxis[0].title.style.color,fontSize:s.config.yaxis[0].title.style.fontSize,fontFamily:s.config.yaxis[0].title.style.fontFamily,cssClass:\"apexcharts-yaxis-title-text \"+s.config.yaxis[0].title.style.cssClass});x.add(m),n.add(x)}if(s.config.xaxis.axisBorder.show){var b=a.drawLine(s.globals.padHorizontal+s.config.xaxis.axisBorder.offsetX,this.offY,this.xaxisBorderWidth,this.offY,this.yaxis.axisBorder.color,0,this.xaxisBorderHeight);n.add(b),this.axesUtils.drawYAxisTicks(0,l.length,s.config.yaxis[0].axisBorder,s.config.yaxis[0].axisTicks,0,e,n)}return n}},{key:\"drawXaxisTicks\",value:function(t,e){var i=this.w,s=t;if(!(t<0||t>i.globals.gridWidth)){var a=this.offY+i.config.xaxis.axisTicks.offsetY,r=a+i.config.xaxis.axisTicks.height;if(i.config.xaxis.axisTicks.show){var n=new Graphics(this.ctx).drawLine(t+i.config.xaxis.axisTicks.offsetX,a+i.config.xaxis.offsetY,s+i.config.xaxis.axisTicks.offsetX,r+i.config.xaxis.offsetY,i.config.xaxis.axisTicks.color);e.add(n),n.node.classList.add(\"apexcharts-xaxis-tick\")}}}},{key:\"getXAxisTicksPositions\",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,s=t.globals.padHorizontal;if(t.globals.timelineLabels.length>0)for(var a=0;a<i;a++)s=this.xaxisLabels[a].position,e.push(s);else for(var r=i,n=0;n<r;n++){var o=r;t.globals.isXNumeric&&\"bar\"!==t.config.chart.type&&(o-=1),s+=t.globals.gridWidth/o,e.push(s)}return e}},{key:\"xAxisLabelCorrections\",value:function(){var t=this.w,e=new Graphics(this.ctx),i=t.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-texts-g\"),s=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-xaxis-texts-g text\"),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis-inversed text\"),r=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-xaxis-inversed-texts-g text\");if(t.globals.rotateXLabels||t.config.xaxis.labels.rotateAlways)for(var n=0;n<s.length;n++){var o=e.rotateAroundCenter(s[n]);o.y=o.y-1,o.x=o.x+1,s[n].setAttribute(\"transform\",\"rotate(\".concat(t.config.xaxis.labels.rotate,\" \").concat(o.x,\" \").concat(o.y,\")\")),s[n].setAttribute(\"text-anchor\",\"end\");i.setAttribute(\"transform\",\"translate(0, \".concat(-10,\")\"));var l=s[n].childNodes;t.config.xaxis.labels.trim&&e.placeTextWithEllipsis(l[0],l[0].textContent,t.config.xaxis.labels.maxHeight-40)}else for(var h=t.globals.gridWidth/t.globals.labels.length,c=0;c<s.length;c++){var d=s[c].childNodes;t.config.xaxis.labels.trim&&\"datetime\"!==t.config.xaxis.type&&e.placeTextWithEllipsis(d[0],d[0].textContent,h)}if(a.length>0){var u=a[a.length-1].getBBox(),g=a[0].getBBox();u.x<-20&&a[a.length-1].parentNode.removeChild(a[a.length-1]),g.x+g.width>t.globals.gridWidth&&a[0].parentNode.removeChild(a[0]);for(var f=0;f<r.length;f++)e.placeTextWithEllipsis(r[f],r[f].textContent,t.config.yaxis[0].labels.maxWidth-2*parseInt(t.config.yaxis[0].title.style.fontSize)-20)}}}]),t}(),Range=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"niceScale\",value:function(t,e,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:10,r=this.w,n=void 0===this.w.config.yaxis[s].max&&void 0===this.w.config.yaxis[s].min||this.w.config.yaxis[s].forceNiceScale;if(t===Number.MIN_VALUE&&0===e||!Utils.isNumber(t)&&!Utils.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)return t=0,e=a,this.linearScale(t,e,a);t>e?(console.warn(\"yaxis.min cannot be greater than yaxis.max\"),e=t+.1):t===e&&(t=0===t?0:t-.5,e=0===e?2:e+.5);var o=[],l=Math.abs(e-t);l<1&&n&&(\"candlestick\"===r.config.chart.type||\"candlestick\"===r.config.series[s].type||r.globals.isRangeData)&&(e*=1.01);var h=a+1;h<2?h=2:h>2&&(h-=2);var c=l/h,d=Math.floor(Utils.log10(c)),u=Math.pow(10,d),g=Math.round(c/u);g<1&&(g=1);var f=g*u,p=f*Math.floor(t/f),x=f*Math.ceil(e/f),m=p;if(n&&l>2){for(;o.push(m),!((m+=f)>x););return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}var b=t;(o=[]).push(b);for(var v=Math.abs(e-t)/a,y=0;y<=a;y++)b+=v,o.push(b);return o[o.length-2]>=e&&o.pop(),{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:\"linearScale\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,s=Math.abs(e-t)/i;i===Number.MAX_VALUE&&(i=10,s=1);for(var a=[],r=t;i>=0;)a.push(r),r+=s,i-=1;return{result:a,niceMin:a[0],niceMax:a[a.length-1]}}},{key:\"logarithmicScale\",value:function(t,e,i,s){(e<0||e===Number.MIN_VALUE)&&(e=.01);for(var a=Math.log(e)/Math.log(10),r=Math.log(i)/Math.log(10),n=Math.abs(i-e)/s,o=[],l=e;s>=0;)o.push(l),l+=n,s-=1;var h=o.map(function(t,s){t<=0&&(t=.01);var n=(r-a)/(i-e),o=Math.pow(10,a+n*(t-a));return Math.round(o/Utils.roundToBase(o,10))*Utils.roundToBase(o,10)});return 0===h[0]&&(h[0]=1),{result:h,niceMin:h[0],niceMax:h[h.length-1]}}},{key:\"setYScaleForIndex\",value:function(t,e,i){var s=this.w.globals,a=this.w.config,r=s.isBarHorizontal?a.xaxis:a.yaxis[t];if(void 0===s.yAxisScale[t]&&(s.yAxisScale[t]=[]),r.logarithmic)s.allSeriesCollapsed=!1,s.yAxisScale[t]=this.logarithmicScale(t,e,i,r.tickAmount?r.tickAmount:Math.floor(Math.log10(i)));else if(i!==-Number.MAX_VALUE&&Utils.isNumber(i))if(s.allSeriesCollapsed=!1,void 0===r.min&&void 0===r.max||r.forceNiceScale){var n=Math.abs(i-e);s.yAxisScale[t]=this.niceScale(e,i,n,t,r.tickAmount?r.tickAmount:n<5&&n>1?n+1:5)}else s.yAxisScale[t]=this.linearScale(e,i,r.tickAmount);else s.yAxisScale[t]=this.linearScale(0,5,5)}},{key:\"setMultipleYScales\",value:function(){var t=this,e=this.w.globals,i=this.w.config,s=e.minYArr.concat([]),a=e.maxYArr.concat([]),r=[];i.yaxis.forEach(function(n,o){var l=o;i.series.forEach(function(t,i){t.name===n.seriesName&&-1===e.collapsedSeriesIndices.indexOf(i)&&(l=i,o!==i?r.push({index:i,similarIndex:o,alreadyExists:!0}):r.push({index:i}))});var h=s[l],c=a[l];t.setYScaleForIndex(o,h,c)}),this.sameScaleInMultipleAxes(s,a,r)}},{key:\"sameScaleInMultipleAxes\",value:function(t,e,i){var s=this,a=this.w.config,r=this.w.globals,n=[];i.forEach(function(t){t.alreadyExists&&(void 0===n[t.index]&&(n[t.index]=[]),n[t.index].push(t.index),n[t.index].push(t.similarIndex))}),r.yAxisSameScaleIndices=n,n.forEach(function(t,e){n.forEach(function(i,s){var a,r;e!==s&&(a=t,r=i,a.filter(function(t){return-1!==r.indexOf(t)})).length>0&&(n[e]=n[e].concat(n[s]))})});var o=n.map(function(t){return t.filter(function(e,i){return t.indexOf(e)===i})}).map(function(t){return t.sort()});n=n.filter(function(t){return!!t});var l=o.slice(),h=l.map(function(t){return JSON.stringify(t)});l=l.filter(function(t,e){return h.indexOf(JSON.stringify(t))===e});var c=[],d=[];t.forEach(function(t,i){l.forEach(function(s,a){s.indexOf(i)>-1&&(void 0===c[a]&&(c[a]=[],d[a]=[]),c[a].push({key:i,value:t}),d[a].push({key:i,value:e[i]}))})});var u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);c.forEach(function(t,e){t.forEach(function(t,i){u[e]=Math.min(t.value,u[e])})}),d.forEach(function(t,e){t.forEach(function(t,i){g[e]=Math.max(t.value,g[e])})}),t.forEach(function(t,e){d.forEach(function(t,i){var n=u[i],o=g[i];a.chart.stacked&&(o=0,t.forEach(function(t,e){o+=t.value,n!==Number.MIN_VALUE&&(n+=c[i][e].value)})),t.forEach(function(i,l){t[l].key===e&&(void 0!==a.yaxis[e].min&&(n=\"function\"==typeof a.yaxis[e].min?a.yaxis[e].min(r.minY):a.yaxis[e].min),void 0!==a.yaxis[e].max&&(o=\"function\"==typeof a.yaxis[e].max?a.yaxis[e].max(r.maxY):a.yaxis[e].max),s.setYScaleForIndex(e,n,o))})})})}},{key:\"autoScaleY\",value:function(t,e,i){t||(t=this);var s=t.w;if(s.globals.isMultipleYAxis||s.globals.collapsedSeries.length)return e;var a=s.globals.seriesX[0],r=s.config.chart.stacked;return e.forEach(function(t,n){for(var o=0,l=0;l<a.length;l++)if(a[l]>=i.xaxis.min){o=l;break}var h,c,d=s.globals.minYArr[n],u=s.globals.maxYArr[n],g=s.globals.stackedSeriesTotals;s.globals.series.forEach(function(n,l){var f=n[o];r?(f=g[o],h=c=f,g.forEach(function(t,e){a[e]<=i.xaxis.max&&a[e]>=i.xaxis.min&&(t>c&&null!==t&&(c=t),n[e]<h&&null!==n[e]&&(h=n[e]))})):(h=c=f,n.forEach(function(t,e){if(a[e]<=i.xaxis.max&&a[e]>=i.xaxis.min){var r=t,n=t;s.globals.series.forEach(function(i,s){null!==t&&(r=Math.min(i[e],r),n=Math.max(i[e],n))}),n>c&&null!==n&&(c=n),r<h&&null!==r&&(h=r)}})),void 0===h&&void 0===c&&(h=d,c=u),(c*=c<0?.9:1.1)<0&&c<u&&(c=u),(h*=h<0?1.1:.9)<0&&h>d&&(h=d),e.length>1?(e[l].min=void 0===t.min?h:t.min,e[l].max=void 0===t.max?c:t.max):(e[0].min=void 0===t.min?h:t.min,e[0].max=void 0===t.max?c:t.max)})}),e}}]),t}(),Range$1=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.scales=new Range(e)}return _createClass(t,[{key:\"init\",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:\"getMinYMaxY\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=this.w.globals,r=-Number.MAX_VALUE,n=Number.MIN_VALUE;null===s&&(s=t+1);var o=a.series,l=o,h=o;\"candlestick\"===this.w.config.chart.type?(l=a.seriesCandleL,h=a.seriesCandleH):a.isRangeData&&(l=a.seriesRangeStart,h=a.seriesRangeEnd);for(var c=t;c<s;c++){a.dataPoints=Math.max(a.dataPoints,o[c].length);for(var d=0;d<a.series[c].length;d++){var u=o[c][d];null!==u&&Utils.isNumber(u)?(r=Math.max(r,h[c][d]),e=Math.min(e,l[c][d]),i=Math.max(i,l[c][d]),\"candlestick\"===this.w.config.chart.type&&(r=Math.max(r,a.seriesCandleO[c][d]),r=Math.max(r,a.seriesCandleH[c][d]),r=Math.max(r,a.seriesCandleL[c][d]),i=r=Math.max(r,a.seriesCandleC[c][d])),Utils.isFloat(u)&&(u=Utils.noExponents(u),a.yValueDecimal=Math.max(a.yValueDecimal,u.toString().split(\".\")[1].length)),n>l[c][d]&&l[c][d]<0&&(n=l[c][d])):a.hasNullValues=!0}}return{minY:n,maxY:r,lowestY:e,highestY:i}}},{key:\"setYRange\",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis)for(var s=0;s<t.series.length;s++){var a=this.getMinYMaxY(s,i,null,s+1);t.minYArr.push(a.minY),t.maxYArr.push(a.maxY),i=a.lowestY}var r=this.getMinYMaxY(0,i,null,t.series.length);if(t.minY=r.minY,t.maxY=r.maxY,i=r.lowestY,e.chart.stacked){var n=[],o=[];if(t.series.length)for(var l=0;l<t.series[t.maxValsInArrayIndex].length;l++)for(var h=0,c=0,d=0;d<t.series.length;d++)null!==t.series[d][l]&&Utils.isNumber(t.series[d][l])&&(t.series[d][l]>0?h=h+parseFloat(t.series[d][l])+1e-4:c+=parseFloat(t.series[d][l])),d===t.series.length-1&&(n.push(h),o.push(c));for(var u=0;u<n.length;u++)t.maxY=Math.max(t.maxY,n[u]),t.minY=Math.min(t.minY,o[u])}if((\"line\"===e.chart.type||\"area\"===e.chart.type||\"candlestick\"===e.chart.type)&&t.minY===Number.MIN_VALUE&&i!==-Number.MAX_VALUE&&i!==t.maxY){var g=t.maxY-i;i>=0&&i<=10&&(g=0),t.minY=i-5*g/100,t.maxY=t.maxY+5*g/100}return e.yaxis.map(function(e,i){void 0!==e.max&&(\"number\"==typeof e.max?t.maxYArr[i]=e.max:\"function\"==typeof e.max&&(t.maxYArr[i]=e.max(t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&(\"number\"==typeof e.min?t.minYArr[i]=e.min:\"function\"==typeof e.min&&(t.minYArr[i]=e.min(t.minY)),t.minY=t.minYArr[i])}),t.isBarHorizontal&&(void 0!==e.xaxis.min&&\"number\"==typeof e.xaxis.min&&(t.minY=e.xaxis.min),void 0!==e.xaxis.max&&\"number\"==typeof e.xaxis.max&&(t.maxY=e.xaxis.max)),t.isMultipleYAxis?(this.scales.setMultipleYScales(),t.minY=i,t.yAxisScale.forEach(function(e,i){t.minYArr[i]=e.niceMin,t.maxYArr[i]=e.niceMax})):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.yAxisScale[0].niceMin,t.maxYArr[0]=t.yAxisScale[0].niceMax),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr}}},{key:\"setXRange\",value:function(){var t,e=this.w.globals,i=this.w.config,s=\"numeric\"===i.xaxis.type||\"datetime\"===i.xaxis.type||\"category\"===i.xaxis.type&&!e.noLabelsProvided||e.noLabelsProvided||e.isXNumeric;if(e.isXNumeric)for(var a=0;a<e.series.length;a++)if(e.labels[a])for(var r=0;r<e.labels[a].length;r++)null!==e.labels[a][r]&&Utils.isNumber(e.labels[a][r])&&(e.maxX=Math.max(e.maxX,e.labels[a][r]),e.initialmaxX=Math.max(e.maxX,e.labels[a][r]),e.minX=Math.min(e.minX,e.labels[a][r]),e.initialminX=Math.min(e.minX,e.labels[a][r]));if(e.noLabelsProvided&&0===i.xaxis.categories.length&&(e.maxX=e.labels[e.labels.length-1],e.initialmaxX=e.labels[e.labels.length-1],e.minX=1,e.initialminX=1),(e.comboChartsHasBars||\"candlestick\"===i.chart.type||\"bar\"===i.chart.type&&e.isXNumeric)&&(\"category\"!==i.xaxis.type||e.isXNumeric)){var n=e.svgWidth/e.dataPoints*(Math.abs(e.maxX-e.minX)/e.svgWidth),o=e.minX-n/2;e.minX=o,e.initialminX=o;var l=e.maxX+n/((e.series.length+1)/e.series.length);e.maxX=l,e.initialmaxX=l}!e.isXNumeric&&!e.noLabelsProvided||i.xaxis.convertedCatToNumeric&&!e.dataFormatXNumeric||(void 0===i.xaxis.tickAmount?(t=Math.round(e.svgWidth/150),\"numeric\"===i.xaxis.type&&e.dataPoints<20&&(t=e.dataPoints-1),t>e.dataPoints&&0!==e.dataPoints&&(t=e.dataPoints-1)):t=\"dataPoints\"===i.xaxis.tickAmount?e.series[e.maxValsInArrayIndex].length-1:i.xaxis.tickAmount,void 0!==i.xaxis.max&&\"number\"==typeof i.xaxis.max&&(e.maxX=i.xaxis.max),void 0!==i.xaxis.min&&\"number\"==typeof i.xaxis.min&&(e.minX=i.xaxis.min),void 0!==i.xaxis.range&&(e.minX=e.maxX-i.xaxis.range),e.minX!==Number.MAX_VALUE&&e.maxX!==-Number.MAX_VALUE?e.xAxisScale=this.scales.linearScale(e.minX,e.maxX,t):(e.xAxisScale=this.scales.linearScale(1,t,t),e.noLabelsProvided&&e.labels.length>0&&(e.xAxisScale=this.scales.linearScale(1,e.labels.length,t-1),e.seriesX=e.labels.slice())),s&&(e.labels=e.xAxisScale.result.slice()));if(e.minX===e.maxX)if(\"datetime\"===i.xaxis.type){var h=new Date(e.minX);h.setDate(h.getDate()-2),e.minX=new Date(h).getTime();var c=new Date(e.maxX);c.setDate(c.getDate()+2),e.maxX=new Date(c).getTime()}else(\"numeric\"===i.xaxis.type||\"category\"===i.xaxis.type&&!e.noLabelsProvided)&&(e.minX=e.minX-2,e.maxX=e.maxX+2);return e.isXNumeric&&(e.seriesX.forEach(function(t,i){1===t.length&&t.push(e.seriesX[e.maxValsInArrayIndex][e.seriesX[e.maxValsInArrayIndex].length-1]),t.forEach(function(t,s){if(s>0){var a=t-e.seriesX[i][s-1];e.minXDiff=Math.min(a,e.minXDiff)}})}),this.calcMinXDiffForTinySeries()),{minX:e.minX,maxX:e.maxX}}},{key:\"calcMinXDiffForTinySeries\",value:function(){var t=this.w,e=t.globals.labels.length;return 1===t.globals.labels.length?t.globals.minXDiff=(t.globals.maxX-t.globals.minX)/e/3:t.globals.minXDiff===Number.MAX_VALUE&&(t.globals.timelineLabels.length>0&&(e=t.globals.timelineLabels.length),e<3&&(e=3),t.globals.minXDiff=(t.globals.maxX-t.globals.minX)/e),t.globals.minXDiff}},{key:\"setZRange\",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e<t.series.length;e++)if(void 0!==t.seriesZ[e])for(var i=0;i<t.seriesZ[e].length;i++)null!==t.seriesZ[e][i]&&Utils.isNumber(t.seriesZ[e][i])&&(t.maxZ=Math.max(t.maxZ,t.seriesZ[e][i]),t.minZ=Math.min(t.minZ,t.seriesZ[e][i]))}}]),t}(),TimeScale=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[]}return _createClass(t,[{key:\"calculateTimeScaleTicks\",value:function(t,e){var i=this,s=this.w;if(s.globals.allSeriesCollapsed)return s.globals.labels=[],s.globals.timelineLabels=[],[];var a=new DateTime(this.ctx),r=(e-t)/864e5;this.determineInterval(r),s.globals.disableZoomIn=!1,s.globals.disableZoomOut=!1,r<.005?s.globals.disableZoomIn=!0:r>5e4&&(s.globals.disableZoomOut=!0);var n=a.getTimeUnitsfromTimestamp(t,e),o=s.globals.gridWidth/r,l=o/24,h=l/60,c=Math.floor(24*r),d=Math.floor(24*r*60),u=Math.floor(r),g=Math.floor(r/30),f=Math.floor(r/365),p={minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},x={firstVal:p,currentMinute:p.minMinute,currentHour:p.minHour,currentMonthDate:p.minDate,currentDate:p.minDate,currentMonth:p.minMonth,currentYear:p.minYear,daysWidthOnXAxis:o,hoursWidthOnXAxis:l,minutesWidthOnXAxis:h,numberOfMinutes:d,numberOfHours:c,numberOfDays:u,numberOfMonths:g,numberOfYears:f};switch(this.tickInterval){case\"years\":this.generateYearScale(x);break;case\"months\":case\"half_year\":this.generateMonthScale(x);break;case\"months_days\":case\"months_fortnight\":case\"days\":case\"week_days\":this.generateDayScale(x);break;case\"hours\":this.generateHourScale(x);break;case\"minutes\":this.generateMinuteScale(x)}var m=this.timeScaleArray.map(function(t){var e={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return\"month\"===t.unit?_objectSpread({},e,{day:1,value:t.value+1}):\"day\"===t.unit||\"hour\"===t.unit?_objectSpread({},e,{value:t.value}):\"minute\"===t.unit?_objectSpread({},e,{value:t.value,minute:t.value}):t});return m.filter(function(t){var e=1,a=Math.ceil(s.globals.gridWidth/120),r=t.value;void 0!==s.config.xaxis.tickAmount&&(a=s.config.xaxis.tickAmount),m.length>a&&(e=Math.floor(m.length/a));var n=!1,o=!1;switch(i.tickInterval){case\"half_year\":e=7,\"year\"===t.unit&&(n=!0);break;case\"months\":e=1,\"year\"===t.unit&&(n=!0);break;case\"months_fortnight\":e=15,\"year\"!==t.unit&&\"month\"!==t.unit||(n=!0),30===r&&(o=!0);break;case\"months_days\":e=10,\"month\"===t.unit&&(n=!0),30===r&&(o=!0);break;case\"week_days\":e=8,\"month\"===t.unit&&(n=!0);break;case\"days\":e=1,\"month\"===t.unit&&(n=!0);break;case\"hours\":\"day\"===t.unit&&(n=!0);break;case\"minutes\":r%5!=0&&(o=!0)}if(\"minutes\"===i.tickInterval||\"hours\"===i.tickInterval){if(!o)return!0}else if((r%e==0||n)&&!o)return!0})}},{key:\"recalcDimensionsBasedOnFormat\",value:function(t,e){var i=this.w,s=this.formatDates(t),a=this.removeOverlappingTS(s);e?i.globals.invertedTimelineLabels=a.slice():i.globals.timelineLabels=a.slice(),new Dimensions(this.ctx).plotCoords()}},{key:\"determineInterval\",value:function(t){switch(!0){case t>1825:this.tickInterval=\"years\";break;case t>800&&t<=1825:this.tickInterval=\"half_year\";break;case t>180&&t<=800:this.tickInterval=\"months\";break;case t>90&&t<=180:this.tickInterval=\"months_fortnight\";break;case t>60&&t<=90:this.tickInterval=\"months_days\";break;case t>30&&t<=60:this.tickInterval=\"week_days\";break;case t>2&&t<=30:this.tickInterval=\"days\";break;case t>.1&&t<=2:this.tickInterval=\"hours\";break;case t<.1:this.tickInterval=\"minutes\";break;default:this.tickInterval=\"days\"}}},{key:\"generateYearScale\",value:function(t){var e=t.firstVal,i=t.currentMonth,s=t.currentYear,a=t.daysWidthOnXAxis,r=t.numberOfYears,n=e.minYear,o=0,l=new DateTime(this.ctx);if(e.minDate>1&&e.minMonth>0){var h=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);o=(l.determineDaysOfYear(e.minYear)-h+1)*a,n=e.minYear+1,this.timeScaleArray.push({position:o,value:n,unit:\"year\",year:n,month:Utils.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:o,value:n,unit:\"year\",year:s,month:Utils.monthMod(i+1)});for(var c=n,d=o,u=0;u<r;u++)c++,d=l.determineDaysOfYear(c-1)*a+d,this.timeScaleArray.push({position:d,value:c,unit:\"year\",year:c,month:1})}},{key:\"generateMonthScale\",value:function(t){var e=t.firstVal,i=t.currentMonthDate,s=t.currentMonth,a=t.currentYear,r=t.daysWidthOnXAxis,n=t.numberOfMonths,o=s,l=0,h=new DateTime(this.ctx),c=\"month\",d=0;if(e.minDate>1){l=(h.determineDaysOfMonths(s+1,e.minYear)-i+1)*r,o=Utils.monthMod(s+1);var u=a+d,g=Utils.monthMod(o),f=o;0===o&&(c=\"year\",f=u,g=1,u+=d+=1),this.timeScaleArray.push({position:l,value:f,unit:c,year:u,month:g})}else this.timeScaleArray.push({position:l,value:o,unit:c,year:a,month:Utils.monthMod(s)});for(var p=o+1,x=l,m=0,b=1;m<n;m++,b++){0===(p=Utils.monthMod(p))?(c=\"year\",d+=1):c=\"month\";var v=a+Math.floor(p/12)+d;x=h.determineDaysOfMonths(p,v)*r+x;var y=0===p?v:p;this.timeScaleArray.push({position:x,value:y,unit:c,year:v,month:0===p?1:p}),p++}}},{key:\"generateDayScale\",value:function(t){var e=t.firstVal,i=t.currentMonth,s=t.currentYear,a=t.hoursWidthOnXAxis,r=t.numberOfDays,n=new DateTime(this.ctx),o=\"day\",l=(24-e.minHour)*a,h=e.minDate+1,c=h,d=function(t,e,i){return t>n.determineDaysOfMonths(e+1,i)?(u=1,o=\"month\",c=e+=1,e):e},u=h,g=d(u,i,s);this.timeScaleArray.push({position:l,value:c,unit:o,year:s,month:Utils.monthMod(g),day:u});for(var f=l,p=0;p<r;p++){o=\"day\",g=d(u+=1,g,s+Math.floor(g/12)+0);var x=s+Math.floor(g/12)+0;f=24*a+f;var m=1===u?Utils.monthMod(g):u;this.timeScaleArray.push({position:f,value:m,unit:o,year:x,month:Utils.monthMod(g),day:m})}}},{key:\"generateHourScale\",value:function(t){var e=t.firstVal,i=t.currentDate,s=t.currentMonth,a=t.currentYear,r=t.minutesWidthOnXAxis,n=t.numberOfHours,o=new DateTime(this.ctx),l=\"hour\",h=function(t,e){return t>o.determineDaysOfMonths(e+1,a)&&(p=1,e+=1),{month:e,date:p}},c=function(t,e){return t>o.determineDaysOfMonths(e+1,a)?e+=1:e},d=60-e.minMinute,u=d*r,g=e.minHour+1,f=g+1;60===d&&(u=0,f=(g=e.minHour)+1);var p=i,x=c(p,s);this.timeScaleArray.push({position:u,value:g,unit:l,day:p,hour:f,year:a,month:Utils.monthMod(x)});for(var m=u,b=0;b<n;b++){if(l=\"hour\",f>=24)f=0,l=\"day\",x=h(p+=1,x).month,x=c(p,x);var v=a+Math.floor(x/12)+0;m=0===f&&0===b?d*r:60*r+m;var y=0===f?p:f;this.timeScaleArray.push({position:m,value:y,unit:l,hour:f,day:p,year:v,month:Utils.monthMod(x)}),f++}}},{key:\"generateMinuteScale\",value:function(t){var e=t.firstVal,i=t.currentMinute,s=t.currentHour,a=t.currentDate,r=t.currentMonth,n=t.currentYear,o=t.minutesWidthOnXAxis,l=t.numberOfMinutes,h=o-(i-e.minMinute),c=e.minMinute+1,d=c+1,u=a,g=r,f=n,p=s;this.timeScaleArray.push({position:h,value:c,unit:\"minute\",day:u,hour:p,minute:d,year:f,month:Utils.monthMod(g)});for(var x=h,m=0;m<l;m++){d>=60&&(d=0,24===(p+=1)&&(p=0));var b=n+Math.floor(g/12)+0;x=o+x;var v=d;this.timeScaleArray.push({position:x,value:v,unit:\"minute\",hour:p,minute:d,day:u,year:b,month:Utils.monthMod(g)}),d++}}},{key:\"createRawDateString\",value:function(t,e){var i=t.year;return i+=\"-\"+(\"0\"+t.month.toString()).slice(-2),\"day\"===t.unit?i+=\"day\"===t.unit?\"-\"+(\"0\"+e).slice(-2):\"-01\":i+=\"-\"+(\"0\"+(t.day?t.day:\"1\")).slice(-2),\"hour\"===t.unit?i+=\"hour\"===t.unit?\"T\"+(\"0\"+e).slice(-2):\"T00\":i+=\"T\"+(\"0\"+(t.hour?t.hour:\"0\")).slice(-2),i+=\"minute\"===t.unit?\":\"+(\"0\"+e).slice(-2)+\":00.000Z\":\":00:00.000Z\"}},{key:\"formatDates\",value:function(t){var e=this,i=this.w;return t.map(function(t){var s=t.value.toString(),a=new DateTime(e.ctx),r=e.createRawDateString(t,s),n=new Date(Date.parse(r));if(void 0===i.config.xaxis.labels.format){var o=\"dd MMM\",l=i.config.xaxis.labels.datetimeFormatter;\"year\"===t.unit&&(o=l.year),\"month\"===t.unit&&(o=l.month),\"day\"===t.unit&&(o=l.day),\"hour\"===t.unit&&(o=l.hour),\"minute\"===t.unit&&(o=l.minute),s=a.formatDate(n,o,!0,!1)}else s=a.formatDate(n,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:s,unit:t.unit,year:t.year,month:t.month}})}},{key:\"removeOverlappingTS\",value:function(t){var e=this,i=new Graphics(this.ctx),s=0,a=t.map(function(a,r){if(r>0&&e.w.config.xaxis.labels.hideOverlappingLabels){var n=i.getTextRects(t[s].value).width,o=t[s].position;return a.position>o+n+10?(s=r,a):null}return a});return a=a.filter(function(t){return null!==t})}}]),t}(),Core=function(){function t(e,i){_classCallCheck(this,t),this.ctx=i,this.w=i.w,this.el=e,this.coreUtils=new CoreUtils(this.ctx),this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[]}return _createClass(t,[{key:\"setupElements\",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"candlestick\",\"radar\",\"scatter\",\"bubble\",\"heatmap\"].indexOf(i)>-1,t.xyCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"candlestick\",\"scatter\",\"bubble\"].indexOf(i)>-1,t.isBarHorizontal=(\"bar\"===e.chart.type||\"rangeBar\"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=\".apexcharts\"+t.cuid,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement(\"div\"),Graphics.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:\"apexcharts-canvas \"+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:\"apexcharts-svg\",\"xmlns:data\":\"ApexChartsNS\",transform:\"translate(\".concat(e.chart.offsetX,\", \").concat(e.chart.offsetY,\")\")}),t.dom.Paper.node.style.background=e.chart.background,this.setSVGDimensions(),t.dom.elGraphical=t.dom.Paper.group().attr({class:\"apexcharts-inner apexcharts-graphical\"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.elLegendWrap=document.createElement(\"div\"),t.dom.elLegendWrap.classList.add(\"apexcharts-legend\"),t.dom.elWrap.appendChild(t.dom.elLegendWrap),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:\"plotChartType\",value:function(t,e){var i=this.w,s=i.config,a=i.globals,r={series:[],i:[]},n={series:[],i:[]},o={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]};a.series.map(function(e,s){void 0!==t[s].type?(\"column\"===t[s].type||\"bar\"===t[s].type?(i.config.plotOptions.bar.horizontal=!1,l.series.push(e),l.i.push(s)):\"area\"===t[s].type?(n.series.push(e),n.i.push(s)):\"line\"===t[s].type?(r.series.push(e),r.i.push(s)):\"scatter\"===t[s].type?(o.series.push(e),o.i.push(s)):\"bubble\"===t[s].type||(\"candlestick\"===t[s].type?(h.series.push(e),h.i.push(s)):console.warn(\"You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble\")),a.comboCharts=!0):(r.series.push(e),r.i.push(s))});var c=new Line(this.ctx,e),d=new CandleStick(this.ctx,e),u=new Pie(this.ctx),g=new Radial(this.ctx),f=new RangeBar(this.ctx,e),p=new Radar(this.ctx),x=[];if(a.comboCharts){if(n.series.length>0&&x.push(c.draw(n.series,\"area\",n.i)),l.series.length>0)if(i.config.chart.stacked){var m=new BarStacked(this.ctx,e);x.push(m.draw(l.series,l.i))}else{var b=new Bar(this.ctx,e);x.push(b.draw(l.series,l.i))}if(r.series.length>0&&x.push(c.draw(r.series,\"line\",r.i)),h.series.length>0&&x.push(d.draw(h.series,h.i)),o.series.length>0){var v=new Line(this.ctx,e,!0);x.push(v.draw(o.series,\"scatter\",o.i))}}else switch(s.chart.type){case\"line\":x=c.draw(a.series,\"line\");break;case\"area\":x=c.draw(a.series,\"area\");break;case\"bar\":if(s.chart.stacked)x=new BarStacked(this.ctx,e).draw(a.series);else x=new Bar(this.ctx,e).draw(a.series);break;case\"candlestick\":x=new CandleStick(this.ctx,e).draw(a.series);break;case\"rangeBar\":x=f.draw(a.series);break;case\"heatmap\":x=new HeatMap(this.ctx,e).draw(a.series);break;case\"pie\":case\"donut\":x=u.draw(a.series);break;case\"radialBar\":x=g.draw(a.series);break;case\"radar\":x=p.draw(a.series);break;default:x=c.draw(a.series)}return x}},{key:\"setSVGDimensions\",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=Utils.getDimensions(this.el),s=e.chart.width.toString().split(/[0-9]+/g).pop();if(\"%\"===s?Utils.isNumber(i[0])&&(0===i[0].width&&(i=Utils.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width)/100):\"px\"!==s&&\"\"!==s||(t.svgWidth=parseInt(e.chart.width)),\"auto\"!==t.svgHeight&&\"\"!==t.svgHeight)if(\"%\"===e.chart.height.toString().split(/[0-9]+/g).pop()){var a=Utils.getDimensions(this.el.parentNode);t.svgHeight=a[1]*parseInt(e.chart.height)/100}else t.svgHeight=parseInt(e.chart.height);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth;t.svgWidth<0&&(t.svgWidth=0),t.svgHeight<0&&(t.svgHeight=0),Graphics.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight});var r=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+r+\"px\",t.dom.elWrap.style.width=t.svgWidth+\"px\",t.dom.elWrap.style.height=t.svgHeight+\"px\"}},{key:\"shiftGraphPosition\",value:function(){var t=this.w.globals,e=t.translateY,i={transform:\"translate(\"+t.translateX+\", \"+e+\")\"};Graphics.setAttrs(t.dom.elGraphical.node,i)}},{key:\"resizeNonAxisCharts\",value:function(){var t=this.w,e=t.globals,i=0;\"top\"!==t.config.legend.position&&\"bottom\"!==t.config.legend.position||(i=new Legend(this.ctx).getLegendBBox().clwh+10);var s=t.globals.dom.baseEl.querySelector(\".apexcharts-radialbar\"),a=2*t.globals.radialSize;s&&-90!==t.config.plotOptions.radialBar.startAngle&&(a=Utils.getBoundingClientRect(s).height);var r=Math.max(a,2*t.globals.radialSize)+e.translateY+i+20;e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute(\"height\",r),e.dom.elWrap.style.height=r+\"px\",Graphics.setAttrs(e.dom.Paper.node,{height:r}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=r+\"px\"}},{key:\"coreCalculations\",value:function(){new Range$1(this.ctx).init()}},{key:\"resetGlobals\",value:function(){var t=this,e=this.w.globals;e.series=[],e.seriesCandleO=[],e.seriesCandleH=[],e.seriesCandleL=[],e.seriesCandleC=[],e.seriesRangeStart=[],e.seriesRangeEnd=[],e.seriesPercent=[],e.seriesX=[],e.seriesZ=[],e.seriesNames=[],e.seriesTotals=[],e.stackedSeriesTotals=[],e.labels=[],e.timelineLabels=[],e.noLabelsProvided=!1,e.timescaleTicks=[],e.resizeTimer=null,e.selectionResizeTimer=null,e.seriesXvalues=t.w.config.series.map(function(t){return[]}),e.seriesYvalues=t.w.config.series.map(function(t){return[]}),e.delayedElements=[],e.pointsArray=[],e.dataLabelsRects=[],e.isXNumeric=!1,e.isDataXYZ=!1,e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE,e.minYArr=[],e.maxYArr=[],e.maxX=-Number.MAX_VALUE,e.minX=Number.MAX_VALUE,e.initialmaxX=-Number.MAX_VALUE,e.initialminX=Number.MAX_VALUE,e.maxDate=0,e.minDate=Number.MAX_VALUE,e.minZ=Number.MAX_VALUE,e.maxZ=-Number.MAX_VALUE,e.minXDiff=Number.MAX_VALUE,e.yAxisScale=[],e.xAxisScale=null,e.xAxisTicksPositions=[],e.yLabelsCoords=[],e.yTitleCoords=[],e.xRange=0,e.yRange=[],e.zRange=0,e.dataPoints=0}},{key:\"isMultipleY\",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:\"excludeCollapsedSeriesInYAxis\",value:function(){var t=this,e=this.w;e.globals.ignoreYAxisIndexes=e.globals.collapsedSeries.map(function(e,i){if(t.w.globals.isMultipleYAxis)return e.index})}},{key:\"isMultiFormat\",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:\"isFormatXY\",value:function(){var t=this.w.config.series.slice(),e=new Series(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:\"isFormat2DArray\",value:function(){var t=this.w.config.series.slice(),e=new Series(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:\"handleFormat2DArray\",value:function(t,e){for(var i=this.w.config,s=this.w.globals,a=0;a<t[e].data.length;a++)if(void 0!==t[e].data[a][1]&&(Array.isArray(t[e].data[a][1])&&4===t[e].data[a][1].length?this.twoDSeries.push(Utils.parseNumber(t[e].data[a][1][3])):this.twoDSeries.push(Utils.parseNumber(t[e].data[a][1])),s.dataFormatXNumeric=!0),\"datetime\"===i.xaxis.type){var r=new Date(t[e].data[a][0]);r=new Date(r).getTime(),this.twoDSeriesX.push(r)}else this.twoDSeriesX.push(t[e].data[a][0]);for(var n=0;n<t[e].data.length;n++)void 0!==t[e].data[n][2]&&(this.threeDSeries.push(t[e].data[n][2]),s.isDataXYZ=!0)}},{key:\"handleFormatXY\",value:function(t,e){var i=this.w.config,s=this.w.globals,a=new DateTime(this.ctx),r=e;s.collapsedSeriesIndices.indexOf(e)>-1&&(r=this.activeSeriesIndex);for(var n=0;n<t[e].data.length;n++)void 0!==t[e].data[n].y&&(Array.isArray(t[e].data[n].y)?this.twoDSeries.push(Utils.parseNumber(t[e].data[n].y[t[e].data[n].y.length-1])):this.twoDSeries.push(Utils.parseNumber(t[e].data[n].y)));for(var o=0;o<t[r].data.length;o++){var l=\"string\"==typeof t[r].data[o].x,h=!!a.isValidDate(t[r].data[o].x.toString());l||h?l?\"datetime\"!==i.xaxis.type||s.isRangeData?(this.fallbackToCategory=!0,this.twoDSeriesX.push(t[r].data[o].x)):this.twoDSeriesX.push(a.parseDate(t[r].data[o].x)):\"datetime\"===i.xaxis.type?this.twoDSeriesX.push(a.parseDate(t[r].data[o].x.toString())):(s.dataFormatXNumeric=!0,s.isXNumeric=!0,this.twoDSeriesX.push(parseFloat(t[r].data[o].x))):(s.isXNumeric=!0,s.dataFormatXNumeric=!0,this.twoDSeriesX.push(t[r].data[o].x))}if(t[e].data[0]&&void 0!==t[e].data[0].z){for(var c=0;c<t[e].data.length;c++)this.threeDSeries.push(t[e].data[c].z);s.isDataXYZ=!0}}},{key:\"handleRangeData\",value:function(t,e){var i=this.w.globals,s={};return this.isFormat2DArray()?s=this.handleRangeDataFormat(\"array\",t,e):this.isFormatXY()&&(s=this.handleRangeDataFormat(\"xy\",t,e)),i.seriesRangeStart.push(s.start),i.seriesRangeEnd.push(s.end),s}},{key:\"handleCandleStickData\",value:function(t,e){var i=this.w.globals,s={};return this.isFormat2DArray()?s=this.handleCandleStickDataFormat(\"array\",t,e):this.isFormatXY()&&(s=this.handleCandleStickDataFormat(\"xy\",t,e)),i.seriesCandleO.push(s.o),i.seriesCandleH.push(s.h),i.seriesCandleL.push(s.l),i.seriesCandleC.push(s.c),s}},{key:\"handleRangeDataFormat\",value:function(t,e,i){var s=[],a=[],r=\"Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts\",n=new Series(this.ctx).getActiveConfigSeriesIndex();if(\"array\"===t){if(2!==e[n].data[0][1].length)throw new Error(r);for(var o=0;o<e[i].data.length;o++)s.push(e[i].data[o][1][0]),a.push(e[i].data[o][1][1])}else if(\"xy\"===t){if(2!==e[n].data[0].y.length)throw new Error(r);for(var l=0;l<e[i].data.length;l++)s.push(e[i].data[l].y[0]),a.push(e[i].data[l].y[1])}return{start:s,end:a}}},{key:\"handleCandleStickDataFormat\",value:function(t,e,i){var s=[],a=[],r=[],n=[],o=\"Please provide [Open, High, Low and Close] values in valid format. Read more https://apexcharts.com/docs/series/#candlestick\";if(\"array\"===t){if(4!==e[i].data[0][1].length)throw new Error(o);for(var l=0;l<e[i].data.length;l++)s.push(e[i].data[l][1][0]),a.push(e[i].data[l][1][1]),r.push(e[i].data[l][1][2]),n.push(e[i].data[l][1][3])}else if(\"xy\"===t){if(4!==e[i].data[0].y.length)throw new Error(o);for(var h=0;h<e[i].data.length;h++)s.push(e[i].data[h].y[0]),a.push(e[i].data[h].y[1]),r.push(e[i].data[h].y[2]),n.push(e[i].data[h].y[3])}return{o:s,h:a,l:r,c:n}}},{key:\"parseDataAxisCharts\",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.ctx,i=this.w.config,s=this.w.globals,a=new DateTime(e),r=0;r<t.length;r++){if(this.twoDSeries=[],this.twoDSeriesX=[],this.threeDSeries=[],void 0===t[r].data)return void console.error(\"It is a possibility that you may have not included 'data' property in series.\");if(\"rangeBar\"!==i.chart.type&&\"rangeArea\"!==i.chart.type&&\"rangeBar\"!==t[r].type&&\"rangeArea\"!==t[r].type||(s.isRangeData=!0,this.handleRangeData(t,r)),this.isMultiFormat())this.isFormat2DArray()?this.handleFormat2DArray(t,r):this.isFormatXY()&&this.handleFormatXY(t,r),\"candlestick\"!==i.chart.type&&\"candlestick\"!==t[r].type||this.handleCandleStickData(t,r),s.series.push(this.twoDSeries),s.labels.push(this.twoDSeriesX),s.seriesX.push(this.twoDSeriesX),this.fallbackToCategory||(s.isXNumeric=!0);else{if(\"datetime\"===i.xaxis.type){s.isXNumeric=!0;for(var n=i.labels.length>0?i.labels.slice():i.xaxis.categories.slice(),o=0;o<n.length;o++)if(\"string\"==typeof n[o]){if(!a.isValidDate(n[o]))throw new Error(\"You have provided invalid Date format. Please provide a valid JavaScript Date\");this.twoDSeriesX.push(a.parseDate(n[o]))}else{if(13!==String(n[o]).length)throw new Error(\"Please provide a valid JavaScript timestamp\");this.twoDSeriesX.push(n[o])}s.seriesX.push(this.twoDSeriesX)}else if(\"numeric\"===i.xaxis.type){s.isXNumeric=!0;var l=i.labels.length>0?i.labels.slice():i.xaxis.categories.slice();l.length>0&&(this.twoDSeriesX=l,s.seriesX.push(this.twoDSeriesX))}s.labels.push(this.twoDSeriesX);var h=t[r].data.map(function(t){return Utils.parseNumber(t)});s.series.push(h)}s.seriesZ.push(this.threeDSeries),void 0!==t[r].name?s.seriesNames.push(t[r].name):s.seriesNames.push(\"series-\"+parseInt(r+1))}return this.w}},{key:\"parseDataNonAxisCharts\",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var s=0;s<e.series.length;s++)void 0===e.seriesNames[s]&&e.seriesNames.push(\"series-\"+(s+1));return this.w}},{key:\"handleExternalLabelsData\",value:function(t){var e=this.w.config,i=this.w.globals;if(e.xaxis.categories.length>0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory)i.labels=i.labels[0];else{var s=[];if(i.axisCharts){if(i.series.length>0)for(var a=0;a<i.series[i.maxValsInArrayIndex].length;a++)s.push(a+1);for(var r=0;r<t.length;r++)i.seriesX.push(s);i.isXNumeric=!0}if(0===s.length){s=[0,10];for(var n=0;n<t.length;n++)i.seriesX.push(s)}i.labels=s,i.noLabelsProvided=!0}}},{key:\"parseData\",value:function(t){var e=this.w,i=e.config,s=e.globals;if(this.excludeCollapsedSeriesInYAxis(),this.fallbackToCategory=!1,this.resetGlobals(),this.isMultipleY(),s.axisCharts?this.parseDataAxisCharts(t):this.parseDataNonAxisCharts(t),this.coreUtils.getLargestSeries(),\"bar\"===i.chart.type&&i.chart.stacked){var a=new Series(this.ctx);s.series=a.setNullSeriesToZeroValues(s.series)}this.coreUtils.getSeriesTotals(),s.axisCharts&&this.coreUtils.getStackedSeriesTotals(),this.coreUtils.getPercentSeries(),s.dataFormatXNumeric||s.isXNumeric&&(\"numeric\"!==i.xaxis.type||0!==i.labels.length||0!==i.xaxis.categories.length)||this.handleExternalLabelsData(t)}},{key:\"xySettings\",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if(\"back\"===e.config.xaxis.crosshairs.position)new Crosshairs(this.ctx).drawXCrosshairs();if(\"back\"===e.config.yaxis[0].crosshairs.position)new Crosshairs(this.ctx).drawYCrosshairs();if(t=this.coreUtils.getCalculatedRatios(),\"datetime\"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){var i,s=new TimeScale(this.ctx);isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?(i=s.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX),s.recalcDimensionsBasedOnFormat(i,!1)):e.globals.isBarHorizontal&&(i=s.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY),s.recalcDimensionsBasedOnFormat(i,!0))}}return t}},{key:\"drawAxis\",value:function(t,e){var i,s,a=this.w.globals,r=this.w.config,n=new XAxis(this.ctx),o=new YAxis(this.ctx);a.axisCharts&&\"radar\"!==t&&(a.isBarHorizontal?(s=o.drawYaxisInversed(0),i=n.drawXaxisInversed(0),a.dom.elGraphical.add(i),a.dom.elGraphical.add(s)):(i=n.drawXaxis(),a.dom.elGraphical.add(i),r.yaxis.map(function(t,e){-1===a.ignoreYAxisIndexes.indexOf(e)&&(s=o.drawYaxis(e),a.dom.Paper.add(s))})));r.yaxis.map(function(t,e){-1===a.ignoreYAxisIndexes.indexOf(e)&&o.yAxisTitleRotate(e,t.opposite)})}},{key:\"setupBrushHandler\",value:function(){var t=this,e=this.w;if(e.config.chart.brush.enabled&&\"function\"!=typeof e.config.chart.events.selection){var i=e.config.chart.brush.targets||[e.config.chart.brush.target];i.forEach(function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx;var s=function(){t.ctx._updateOptions({chart:{selection:{xaxis:{min:i.w.globals.minX,max:i.w.globals.maxX}}}},!1,!1)};\"function\"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){s()}),\"function\"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){s()})}),e.config.chart.events.selection=function(t,s){i.forEach(function(t){var i=ApexCharts.getChartByID(t),a=Utils.clone(e.config.yaxis);e.config.chart.brush.autoScaleYaxis&&(a=new Range(i).autoScaleY(i,a,s));i._updateOptions({xaxis:{min:s.xaxis.min,max:s.xaxis.max},yaxis:a},!1,!1,!1,!1)})}}}}]),t}();function finallyConstructor(t){var e=this.constructor;return this.then(function(i){return e.resolve(t()).then(function(){return i})},function(i){return e.resolve(t()).then(function(){return e.reject(i)})})}var setTimeoutFunc=setTimeout;function noop(){}function bind(t,e){return function(){t.apply(e,arguments)}}function Promise$1(t){if(!(this instanceof Promise$1))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof t)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],doResolve(t,this)}function handle(t,e){for(;3===t._state;)t=t._value;0!==t._state?(t._handled=!0,Promise$1._immediateFn(function(){var i=1===t._state?e.onFulfilled:e.onRejected;if(null!==i){var s;try{s=i(t._value)}catch(t){return void reject(e.promise,t)}resolve(e.promise,s)}else(1===t._state?resolve:reject)(e.promise,t._value)})):t._deferreds.push(e)}function resolve(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var i=e.then;if(e instanceof Promise$1)return t._state=3,t._value=e,void finale(t);if(\"function\"==typeof i)return void doResolve(bind(i,e),t)}t._state=1,t._value=e,finale(t)}catch(e){reject(t,e)}}function reject(t,e){t._state=2,t._value=e,finale(t)}function finale(t){2===t._state&&0===t._deferreds.length&&Promise$1._immediateFn(function(){t._handled||Promise$1._unhandledRejectionFn(t._value)});for(var e=0,i=t._deferreds.length;e<i;e++)handle(t,t._deferreds[e]);t._deferreds=null}function Handler(t,e,i){this.onFulfilled=\"function\"==typeof t?t:null,this.onRejected=\"function\"==typeof e?e:null,this.promise=i}function doResolve(t,e){var i=!1;try{t(function(t){i||(i=!0,resolve(e,t))},function(t){i||(i=!0,reject(e,t))})}catch(t){if(i)return;i=!0,reject(e,t)}}Promise$1.prototype.catch=function(t){return this.then(null,t)},Promise$1.prototype.then=function(t,e){var i=new this.constructor(noop);return handle(this,new Handler(t,e,i)),i},Promise$1.prototype.finally=finallyConstructor,Promise$1.all=function(t){return new Promise$1(function(e,i){if(!t||void 0===t.length)throw new TypeError(\"Promise.all accepts an array\");var s=Array.prototype.slice.call(t);if(0===s.length)return e([]);var a=s.length;function r(t,n){try{if(n&&(\"object\"==typeof n||\"function\"==typeof n)){var o=n.then;if(\"function\"==typeof o)return void o.call(n,function(e){r(t,e)},i)}s[t]=n,0==--a&&e(s)}catch(t){i(t)}}for(var n=0;n<s.length;n++)r(n,s[n])})},Promise$1.resolve=function(t){return t&&\"object\"==typeof t&&t.constructor===Promise$1?t:new Promise$1(function(e){e(t)})},Promise$1.reject=function(t){return new Promise$1(function(e,i){i(t)})},Promise$1.race=function(t){return new Promise$1(function(e,i){for(var s=0,a=t.length;s<a;s++)t[s].then(e,i)})},Promise$1._immediateFn=\"function\"==typeof setImmediate&&function(t){setImmediate(t)}||function(t){setTimeoutFunc(t,0)},Promise$1._unhandledRejectionFn=function(t){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",t)};var Exports=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"getSvgString\",value:function(){return this.w.globals.dom.Paper.svg()}},{key:\"cleanup\",value:function(){var t=this.w,e=t.globals.dom.baseEl.querySelector(\".apexcharts-xcrosshairs\"),i=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs\");e&&e.setAttribute(\"x\",-500),i&&(i.setAttribute(\"y1\",-100),i.setAttribute(\"y2\",-100))}},{key:\"svgUrl\",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:\"image/svg+xml;charset=utf-8\"});return URL.createObjectURL(e)}},{key:\"dataURI\",value:function(){var t=this;return new Promise$1(function(e){var i=t.w;t.cleanup();var s=document.createElement(\"canvas\");s.width=i.globals.svgWidth,s.height=i.globals.svgHeight;var a=\"transparent\"===i.config.chart.background?\"#fff\":i.config.chart.background,r=s.getContext(\"2d\");r.fillStyle=a,r.fillRect(0,0,s.width,s.height);var n=window.URL||window.webkitURL||window,o=new Image;o.crossOrigin=\"anonymous\";var l=t.getSvgString(),h=\"data:image/svg+xml,\"+encodeURIComponent(l);o.onload=function(){r.drawImage(o,0,0),n.revokeObjectURL(h);var t=s.toDataURL(\"image/png\");e(t)},o.src=h})}},{key:\"exportToSVG\",value:function(){this.triggerDownload(this.svgUrl(),\".svg\")}},{key:\"exportToPng\",value:function(){var t=this;this.dataURI().then(function(e){t.triggerDownload(e,\".png\")})}},{key:\"triggerDownload\",value:function(t,e){var i=document.createElement(\"a\");i.href=t,i.download=this.w.globals.chartID+e,document.body.appendChild(i),i.click(),document.body.removeChild(i)}}]),t}(),Grid=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.anim=new Animations(this.ctx),this.xaxisLabels=i.globals.labels.slice(),this.animX=i.config.grid.xaxis.lines.animate&&i.config.chart.animations.enabled,this.animY=i.config.grid.yaxis.lines.animate&&i.config.chart.animations.enabled,i.globals.timelineLabels.length>0&&(this.xaxisLabels=i.globals.timelineLabels.slice())}return _createClass(t,[{key:\"drawGridArea\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new Graphics(this.ctx);null===t&&(t=i.group({class:\"apexcharts-grid\"}));var s=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,\"transparent\"),a=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,\"transparent\");return t.add(a),t.add(s),t}},{key:\"drawGrid\",value:function(){var t=this.w,e=new XAxis(this.ctx),i=new YAxis(this.ctx),s=this.w.globals,a=null;if(s.axisCharts){if(t.config.grid.show)a=this.renderGrid(),s.dom.elGraphical.add(a.el),this.drawGridArea(a.el);else{var r=this.drawGridArea();s.dom.elGraphical.add(r)}null!==a&&e.xAxisLabelCorrections(a.xAxisTickWidth),i.setYAxisTextAlignments()}}},{key:\"createGridMask\",value:function(){var t=this.w,e=t.globals,i=new Graphics(this.ctx),s=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var a=0;t.config.stroke.width.forEach(function(t){a=Math.max(a,t)}),s=a}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,\"clipPath\"),e.dom.elGridRectMask.setAttribute(\"id\",\"gridRectMask\".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,\"clipPath\"),e.dom.elGridRectMarkerMask.setAttribute(\"id\",\"gridRectMarkerMask\".concat(e.cuid)),e.dom.elGridRect=i.drawRect(-s/2,-s/2,e.gridWidth+s,e.gridHeight+s,0,\"#fff\"),new CoreUtils(this).getLargestMarkerSize();var r=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(-r,-r,e.gridWidth+2*r,e.gridHeight+2*r,0,\"#fff\"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var n=e.dom.baseEl.querySelector(\"defs\");n.appendChild(e.dom.elGridRectMask),n.appendChild(e.dom.elGridRectMarkerMask)}},{key:\"renderGrid\",value:function(){var t=this.w,e=new Graphics(this.ctx),i=t.config.grid.strokeDashArray,s=e.group({class:\"apexcharts-grid\"}),a=e.group({class:\"apexcharts-gridlines-horizontal\"}),r=e.group({class:\"apexcharts-gridlines-vertical\"});s.add(a),s.add(r);for(var n,o=8,l=0;l<t.globals.series.length&&(void 0!==t.globals.yAxisScale[l]&&(o=t.globals.yAxisScale[l].result.length-1),!(o>2));l++);if(t.globals.isBarHorizontal){if(n=o,t.config.grid.xaxis.lines.show||t.config.xaxis.axisTicks.show)for(var h,c=t.globals.padHorizontal,d=t.globals.gridHeight,u=0;u<n+1&&(h=c=c+t.globals.gridWidth/n+.3,u!==n-1);u++){if(t.config.grid.xaxis.lines.show){var g=e.drawLine(c,0,h,d,t.config.grid.borderColor,i);g.node.classList.add(\"apexcharts-gridline\"),r.add(g),this.animX&&this.animateLine(g,{x1:0,x2:0},{x1:c,x2:h})}new XAxis(this.ctx).drawXaxisTicks(c,s)}if(t.config.grid.yaxis.lines.show)for(var f=0,p=0,x=t.globals.gridWidth,m=0;m<t.globals.dataPoints+1;m++){var b=e.drawLine(0,f,x,p,t.config.grid.borderColor,i);a.add(b),b.node.classList.add(\"apexcharts-gridline\"),this.animY&&this.animateLine(b,{y1:f+20,y2:p+20},{y1:f,y2:p}),p=f+=t.globals.gridHeight/t.globals.dataPoints}}else{if(n=this.xaxisLabels.length,t.config.grid.xaxis.lines.show||t.config.xaxis.axisTicks.show){var v,y=t.globals.padHorizontal,w=t.globals.gridHeight;if(t.globals.timelineLabels.length>0)for(var k=0;k<n;k++){if(y=this.xaxisLabels[k].position,v=this.xaxisLabels[k].position,t.config.grid.xaxis.lines.show&&y>0&&y<t.globals.gridWidth){var A=e.drawLine(y,0,v,w,t.config.grid.borderColor,i);A.node.classList.add(\"apexcharts-gridline\"),r.add(A),this.animX&&this.animateLine(A,{x1:0,x2:0},{x1:y,x2:v})}var S=new XAxis(this.ctx);k===n-1&&t.globals.skipLastTimelinelabel||S.drawXaxisTicks(y,s)}else for(var C=n,L=0;L<C;L++){var P=C;if(t.globals.isXNumeric&&\"bar\"!==t.config.chart.type&&(P-=1),v=y+=t.globals.gridWidth/P,L===P-1)break;if(t.config.grid.xaxis.lines.show){var z=e.drawLine(y,0,v,w,t.config.grid.borderColor,i);z.node.classList.add(\"apexcharts-gridline\"),r.add(z),this.animX&&this.animateLine(z,{x1:0,x2:0},{x1:y,x2:v})}new XAxis(this.ctx).drawXaxisTicks(y,s)}}if(t.config.grid.yaxis.lines.show)for(var T=0,M=0,E=t.globals.gridWidth,X=0;X<o+1;X++){var I=e.drawLine(0,T,E,M,t.config.grid.borderColor,i);a.add(I),I.node.classList.add(\"apexcharts-gridline\"),this.animY&&this.animateLine(I,{y1:T+20,y2:M+20},{y1:T,y2:M}),M=T+=t.globals.gridHeight/o}}return this.drawGridBands(s,n,o),{el:s,xAxisTickWidth:t.globals.gridWidth/n}}},{key:\"drawGridBands\",value:function(t,e,i){var s=this.w,a=new Graphics(this.ctx);if(void 0!==s.config.grid.row.colors&&s.config.grid.row.colors.length>0)for(var r=0,n=s.globals.gridHeight/i,o=s.globals.gridWidth,l=0,h=0;l<i;l++,h++){h>=s.config.grid.row.colors.length&&(h=0);var c=s.config.grid.row.colors[h],d=a.drawRect(0,r,o,n,0,c,s.config.grid.row.opacity);t.add(d),d.node.classList.add(\"apexcharts-gridRow\"),r+=s.globals.gridHeight/i}if(void 0!==s.config.grid.column.colors&&s.config.grid.column.colors.length>0)for(var u=s.globals.padHorizontal,g=s.globals.padHorizontal+s.globals.gridWidth/e,f=s.globals.gridHeight,p=0,x=0;p<e;p++,x++){x>=s.config.grid.column.colors.length&&(x=0);var m=s.config.grid.column.colors[x],b=a.drawRect(u,0,g,f,0,m,s.config.grid.column.opacity);b.node.classList.add(\"apexcharts-gridColumn\"),t.add(b),u+=s.globals.gridWidth/e}}},{key:\"animateLine\",value:function(t,e,i){var s=this.w,a=s.config.chart.animations;if(a&&!s.globals.resized&&!s.globals.dataChanged){var r=a.speed;this.anim.animateLine(t,e,i,r)}}}]),t}(),Responsive=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"checkResponsiveConfig\",value:function(t){var e=this,i=this.w,s=i.config;if(0!==s.responsive.length){var a=s.responsive.slice();a.sort(function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0}).reverse();var r=new Config({}),n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=a[0].breakpoint,n=window.innerWidth>0?window.innerWidth:screen.width;if(n>s){var o=CoreUtils.extendArrayProps(r,i.globals.initialConfig);t=Utils.extend(o,t),t=Utils.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l<a.length;l++)n<a[l].breakpoint&&(t=CoreUtils.extendArrayProps(r,a[l].options),t=Utils.extend(i.config,t),e.overrideResponsiveOptions(t))};if(t){var o=CoreUtils.extendArrayProps(r,t);o=Utils.extend(i.config,o),n(o=Utils.extend(o,t))}else n({})}}},{key:\"overrideResponsiveOptions\",value:function(t){var e=new Config(t).init();this.w.config=e}}]),t}(),Theme=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.colors=[]}return _createClass(t,[{key:\"init\",value:function(){this.setDefaultColors()}},{key:\"setDefaultColors\",value:function(){var t=this.w,e=new Utils;if(t.globals.dom.elWrap.classList.add(t.config.theme.mode),void 0===t.config.colors?t.globals.colors=this.predefined():t.globals.colors=t.config.colors,t.config.theme.monochrome.enabled){var i=[],s=t.globals.series.length;t.config.plotOptions.bar.distributed&&\"bar\"===t.config.chart.type&&(s=t.globals.series[0].length*t.globals.series.length);for(var a=t.config.theme.monochrome.color,r=1/(s/t.config.theme.monochrome.shadeIntensity),n=t.config.theme.monochrome.shadeTo,o=0,l=0;l<s;l++){var h=void 0;\"dark\"===n?(h=e.shadeColor(-1*o,a),o+=r):(h=e.shadeColor(o,a),o+=r),i.push(h)}t.globals.colors=i.slice()}var c=t.globals.colors.slice();this.pushExtraColors(t.globals.colors),void 0===t.config.stroke.colors?t.globals.stroke.colors=c:t.globals.stroke.colors=t.config.stroke.colors,this.pushExtraColors(t.globals.stroke.colors),void 0===t.config.fill.colors?t.globals.fill.colors=c:t.globals.fill.colors=t.config.fill.colors,this.pushExtraColors(t.globals.fill.colors),void 0===t.config.dataLabels.style.colors?t.globals.dataLabels.style.colors=c:t.globals.dataLabels.style.colors=t.config.dataLabels.style.colors,this.pushExtraColors(t.globals.dataLabels.style.colors,50),void 0===t.config.plotOptions.radar.polygons.fill.colors?t.globals.radarPolygons.fill.colors=[\"dark\"===t.config.theme.mode?\"#202D48\":\"#fff\"]:t.globals.radarPolygons.fill.colors=t.config.plotOptions.radar.polygons.fill.colors,this.pushExtraColors(t.globals.radarPolygons.fill.colors,20),void 0===t.config.markers.colors?t.globals.markers.colors=c:t.globals.markers.colors=t.config.markers.colors,this.pushExtraColors(t.globals.markers.colors)}},{key:\"pushExtraColors\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=this.w,a=e||s.globals.series.length;if(null===i&&(i=\"bar\"===s.config.chart.type&&s.config.plotOptions.bar.distributed||\"heatmap\"===s.config.chart.type&&s.config.plotOptions.heatmap.colorScale.inverse),i&&(a=s.globals.series[0].length*s.globals.series.length),t.length<a)for(var r=a-t.length,n=0;n<r;n++)t.push(t[n])}},{key:\"updateThemeOptions\",value:function(t){t.chart=t.chart||{},t.tooltip=t.tooltip||{};var e=t.theme.mode||\"light\",i=t.theme.palette?t.theme.palette:\"dark\"===e?\"palette4\":\"palette1\",s=t.chart.foreColor?t.chart.foreColor:\"dark\"===e?\"#f6f7f8\":\"#373d3f\";return t.tooltip.theme=e,t.chart.foreColor=s,t.theme.palette=i,t}},{key:\"predefined\",value:function(){switch(this.w.config.theme.palette){case\"palette1\":this.colors=[\"#008FFB\",\"#00E396\",\"#FEB019\",\"#FF4560\",\"#775DD0\"];break;case\"palette2\":this.colors=[\"#3f51b5\",\"#03a9f4\",\"#4caf50\",\"#f9ce1d\",\"#FF9800\"];break;case\"palette3\":this.colors=[\"#33b2df\",\"#546E7A\",\"#d4526e\",\"#13d8aa\",\"#A5978B\"];break;case\"palette4\":this.colors=[\"#4ecdc4\",\"#c7f464\",\"#81D4FA\",\"#fd6a6a\",\"#546E7A\"];break;case\"palette5\":this.colors=[\"#2b908f\",\"#f9a3a4\",\"#90ee7e\",\"#fa4443\",\"#69d2e7\"];break;case\"palette6\":this.colors=[\"#449DD1\",\"#F86624\",\"#EA3546\",\"#662E9B\",\"#C5D86D\"];break;case\"palette7\":this.colors=[\"#D7263D\",\"#1B998B\",\"#2E294E\",\"#F46036\",\"#E2C044\"];break;case\"palette8\":this.colors=[\"#662E9B\",\"#F86624\",\"#F9C80E\",\"#EA3546\",\"#43BCCD\"];break;case\"palette9\":this.colors=[\"#5C4742\",\"#A5978B\",\"#8D5B4C\",\"#5A2A27\",\"#C4BBAF\"];break;case\"palette10\":this.colors=[\"#A300D6\",\"#7D02EB\",\"#5653FE\",\"#2983FF\",\"#00B1F2\"];break;default:this.colors=[\"#008FFB\",\"#00E396\",\"#FEB019\",\"#FF4560\",\"#775DD0\"]}return this.colors}}]),t}(),Utils$1=function(){function t(e){_classCallCheck(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return _createClass(t,[{key:\"getNearestValues\",value:function(t){var e=t.hoverArea,i=t.elGrid,s=t.clientX,a=t.clientY,r=t.hasBars,n=this.w,o=n.globals.gridWidth,l=o/(n.globals.dataPoints-1),h=i.getBoundingClientRect();(r&&n.globals.comboCharts||r)&&(l=o/n.globals.dataPoints);var c=s-h.left,d=a-h.top;c<0||d<0||c>n.globals.gridWidth||d>n.globals.gridHeight?(e.classList.remove(\"hovering-zoom\"),e.classList.remove(\"hovering-pan\")):n.globals.zoomEnabled?(e.classList.remove(\"hovering-pan\"),e.classList.add(\"hovering-zoom\")):n.globals.panEnabled&&(e.classList.remove(\"hovering-zoom\"),e.classList.add(\"hovering-pan\"));var u=Math.round(c/l);r&&(u=Math.ceil(c/l),u-=1);for(var g,f=null,p=null,x=[],m=0;m<n.globals.seriesXvalues.length;m++)x.push([n.globals.seriesXvalues[m][0]-1e-6].concat(n.globals.seriesXvalues[m]));return x=x.map(function(t){return t.filter(function(t){return t})}),g=n.globals.seriesYvalues.map(function(t){return t.filter(function(t){return t})}),n.globals.isXNumeric&&(f=(p=this.closestInMultiArray(c,d,x,g)).index,u=p.j,null!==f&&(x=n.globals.seriesXvalues[f],u=(p=this.closestInArray(c,x)).index)),(!u||u<1)&&(u=0),{capturedSeries:f,j:u,hoverX:c,hoverY:d}}},{key:\"closestInMultiArray\",value:function(t,e,i,s){var a=this.w,r=0,n=null,o=-1;a.globals.series.length>1?r=this.getFirstActiveXArray(i):n=0;var l=s[r][0],h=i[r][0],c=Math.abs(t-h),d=Math.abs(e-l),u=d+c;return s.map(function(a,r){a.map(function(a,l){var h=Math.abs(e-s[r][l]),g=Math.abs(t-i[r][l]),f=g+h;f<u&&(u=f,c=g,d=h,n=r,o=l)})}),{index:n,j:o}}},{key:\"getFirstActiveXArray\",value:function(t){for(var e=0,i=new CoreUtils(this.ctx),s=t.map(function(t,e){return t.length>0?e:-1}),a=0;a<s.length;a++){var r=i.getSeriesTotalByIndex(a);if(-1!==s[a]&&0!==r&&!i.seriesHaveSameValues(a)){e=s[a];break}}return e}},{key:\"closestInArray\",value:function(t,e){for(var i=e[0],s=null,a=Math.abs(t-i),r=0;r<e.length;r++){var n=Math.abs(t-e[r]);n<a&&(a=n,i=e[r],s=r)}return{index:s}}},{key:\"isXoverlap\",value:function(t){var e=[],i=this.w.globals.seriesX.filter(function(t){return void 0!==t[0]});if(i.length>0)for(var s=0;s<i.length-1;s++)void 0!==i[s][t]&&void 0!==i[s+1][t]&&i[s][t]!==i[s+1][t]&&e.push(\"unEqual\");return 0===e.length}},{key:\"isinitialSeriesSameLen\",value:function(){for(var t=!0,e=this.w.globals.initialSeries,i=0;i<e.length-1;i++)if(e[i].data.length!==e[i+1].data.length){t=!1;break}return t}},{key:\"getBarsHeight\",value:function(t){return _toConsumableArray(t).reduce(function(t,e){return t+e.getBBox().height},0)}},{key:\"toggleAllTooltipSeriesGroups\",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-tooltip-series-group\"));for(var s=i.allTooltipSeriesGroups,a=0;a<s.length;a++)\"enable\"===t?(s[a].classList.add(\"active\"),s[a].style.display=e.config.tooltip.items.display):(s[a].classList.remove(\"active\"),s[a].style.display=\"none\")}}]),t}(),Labels=function(){function t(e){_classCallCheck(this,t),this.w=e.w,this.ctx=e.ctx,this.ttCtx=e,this.tooltipUtil=new Utils$1(e)}return _createClass(t,[{key:\"drawSeriesTexts\",value:function(t){var e=t.shared,i=void 0===e||e,s=t.ttItems,a=t.i,r=void 0===a?0:a,n=t.j,o=void 0===n?null:n;void 0!==this.w.config.tooltip.custom?this.handleCustomTooltip({i:r,j:o}):this.toggleActiveInactiveSeries(i);var l=this.getValuesToPrint({i:r,j:o});this.printLabels({i:r,j:o,values:l,ttItems:s,shared:i});var h=this.ttCtx.getElTooltip();this.ttCtx.tooltipRect.ttWidth=h.getBoundingClientRect().width,this.ttCtx.tooltipRect.ttHeight=h.getBoundingClientRect().height}},{key:\"printLabels\",value:function(t){var e,i=t.i,s=t.j,a=t.values,r=t.ttItems,n=t.shared,o=this.w,l=a.xVal,h=a.zVal,c=a.xAxisTTVal,d=\"\",u=o.globals.colors[i];null!==s&&o.config.plotOptions.bar.distributed&&(u=o.globals.colors[s]);for(var g=0,f=o.globals.series.length-1;g<o.globals.series.length;g++,f--){var p=this.getFormatters(i);if(d=this.getSeriesName({fn:p.yLbTitleFormatter,index:i,seriesIndex:i,j:s}),n){var x=o.config.tooltip.inverseOrder?f:g;p=this.getFormatters(x),d=this.getSeriesName({fn:p.yLbTitleFormatter,index:x,seriesIndex:i,j:s}),u=o.globals.colors[x],e=p.yLbFormatter(o.globals.series[x][s],{series:o.globals.series,seriesIndex:x,dataPointIndex:s,w:o}),(this.ttCtx.hasBars()&&o.config.chart.stacked&&0===o.globals.series[x][s]||void 0===o.globals.series[x][s])&&(e=void 0)}else e=p.yLbFormatter(o.globals.series[i][s],{series:o.globals.series,seriesIndex:i,dataPointIndex:s,w:o});null===s&&(e=p.yLbFormatter(o.globals.series[i],o)),this.DOMHandling({t:g,ttItems:r,values:{val:e,xVal:l,xAxisTTVal:c,zVal:h},seriesName:d,shared:n,pColor:u})}}},{key:\"getFormatters\",value:function(t){var e,i=this.w,s=i.globals.yLabelFormatters[t];return void 0!==i.globals.ttVal?Array.isArray(i.globals.ttVal)?(s=i.globals.ttVal[t]&&i.globals.ttVal[t].formatter,e=i.globals.ttVal[t]&&i.globals.ttVal[t].title&&i.globals.ttVal[t].title.formatter):(s=i.globals.ttVal.formatter,\"function\"==typeof i.globals.ttVal.title.formatter&&(e=i.globals.ttVal.title.formatter)):e=i.config.tooltip.y.title.formatter,\"function\"!=typeof s&&(s=i.globals.yLabelFormatters[0]?i.globals.yLabelFormatters[0]:function(t){return t}),\"function\"!=typeof e&&(e=function(t){return t}),{yLbFormatter:s,yLbTitleFormatter:e}}},{key:\"getSeriesName\",value:function(t){var e=t.fn,i=t.index,s=t.seriesIndex,a=t.j,r=this.w;return e(String(r.globals.seriesNames[i]),{series:r.globals.series,seriesIndex:s,dataPointIndex:a,w:r})}},{key:\"DOMHandling\",value:function(t){var e=t.t,i=t.ttItems,s=t.values,a=t.seriesName,r=t.shared,n=t.pColor,o=this.w,l=this.ttCtx,h=s.val,c=s.xVal,d=s.xAxisTTVal,u=s.zVal,g=null;g=i[e].children,o.config.tooltip.fillSeriesColor&&(i[e].style.backgroundColor=n,g[0].style.display=\"none\"),l.showTooltipTitle&&(null===l.tooltipTitle&&(l.tooltipTitle=o.globals.dom.baseEl.querySelector(\".apexcharts-tooltip-title\")),l.tooltipTitle.innerHTML=c),l.blxaxisTooltip&&(l.xaxisTooltipText.innerHTML=\"\"!==d?d:c);var f=i[e].querySelector(\".apexcharts-tooltip-text-label\");f&&(f.innerHTML=a?a+\": \":\"\");var p=i[e].querySelector(\".apexcharts-tooltip-text-value\");(p&&(p.innerHTML=h),g[0]&&g[0].classList.contains(\"apexcharts-tooltip-marker\")&&(g[0].style.backgroundColor=n),o.config.tooltip.marker.show||(g[0].style.display=\"none\"),null!==u)&&(i[e].querySelector(\".apexcharts-tooltip-text-z-label\").innerHTML=o.config.tooltip.z.title,i[e].querySelector(\".apexcharts-tooltip-text-z-value\").innerHTML=u);r&&g[0]&&(null==h||o.globals.collapsedSeriesIndices.indexOf(e)>-1?g[0].parentNode.style.display=\"none\":g[0].parentNode.style.display=o.config.tooltip.items.display)}},{key:\"toggleActiveInactiveSeries\",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups(\"enable\");else{this.tooltipUtil.toggleAllTooltipSeriesGroups(\"disable\");var i=e.globals.dom.baseEl.querySelector(\".apexcharts-tooltip-series-group\");i&&(i.classList.add(\"active\"),i.style.display=e.config.tooltip.items.display)}}},{key:\"getValuesToPrint\",value:function(t){var e=t.i,i=t.j,s=this.w,a=this.ctx.series.filteredSeriesX(),r=\"\",n=null,o=null,l={series:s.globals.series,seriesIndex:e,dataPointIndex:i,w:s},h=s.globals.ttZFormatter;null===i?o=s.globals.series[e]:s.globals.isXNumeric?(r=a[e][i],0===a[e].length&&(r=a[this.tooltipUtil.getFirstActiveXArray(a)][i])):r=void 0!==s.globals.labels[i]?s.globals.labels[i]:\"\";var c=r;s.globals.isXNumeric&&\"datetime\"===s.config.xaxis.type?r=new Formatters(this.ctx).xLabelFormat(s.globals.ttKeyFormatter,c,c):s.globals.isBarHorizontal||(r=s.globals.xLabelFormatter(c,l));return void 0!==s.config.tooltip.x.formatter&&(r=s.globals.ttKeyFormatter(c,l)),s.globals.seriesZ.length>0&&s.globals.seriesZ[0].length>0&&(n=h(s.globals.seriesZ[e][i],s)),{val:o,xVal:r,xAxisTTVal:\"function\"==typeof s.config.xaxis.tooltip.formatter?s.globals.xaxisTooltipFormatter(c,l):r,zVal:n}}},{key:\"handleCustomTooltip\",value:function(t){var e=t.i,i=t.j,s=this.w;this.ttCtx.getElTooltip().innerHTML=s.config.tooltip.custom({ctx:this.ctx,series:s.globals.series,seriesIndex:e,dataPointIndex:i,w:s})}}]),t}(),Position=function(){function t(e){_classCallCheck(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return _createClass(t,[{key:\"moveXCrosshairs\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,s=this.w,a=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,n=s.globals.labels.slice().length;if(null!==e&&(r=s.globals.gridWidth/n*e),\"tickWidth\"===s.config.xaxis.crosshairs.width||\"barWidth\"===s.config.xaxis.crosshairs.width?r+i.xcrosshairsWidth>s.globals.gridWidth&&(r=s.globals.gridWidth-i.xcrosshairsWidth):null!==e&&(r+=s.globals.gridWidth/n/2),r<0&&(r=0),r>s.globals.gridWidth&&(r=s.globals.gridWidth),null!==a&&(a.setAttribute(\"x\",r),a.setAttribute(\"x1\",r),a.setAttribute(\"x2\",r),a.setAttribute(\"y2\",s.globals.gridHeight),a.classList.add(\"active\")),i.blxaxisTooltip){var o=r;\"tickWidth\"!==s.config.xaxis.crosshairs.width&&\"barWidth\"!==s.config.xaxis.crosshairs.width||(o=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:\"moveYCrosshairs\",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&(Graphics.setAttrs(e.ycrosshairs,{y1:t,y2:t}),Graphics.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t}))}},{key:\"moveXAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip){i.xaxisTooltip.classList.add(\"active\");var s=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var a;a=new Graphics(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=a.width+\"px\",i.xaxisTooltip.style.left=t+\"px\",i.xaxisTooltip.style.top=s+\"px\"}}}},{key:\"moveYAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxistooltip\"));var s=parseInt(i.ycrosshairsHidden.getAttribute(\"y1\")),a=e.globals.translateY+s,r=i.yaxisTTEls[t].getBoundingClientRect().height,n=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(n-=26),a-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add(\"active\"),i.yaxisTTEls[t].style.top=a+\"px\",i.yaxisTTEls[t].style.left=n+e.config.yaxis[t].tooltip.offsetX+\"px\"):i.yaxisTTEls[t].classList.remove(\"active\")}},{key:\"moveTooltip\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=this.w,a=this.ttCtx,r=a.getElTooltip(),n=a.tooltipRect,o=null!==i?parseInt(i):1,l=parseInt(t)+o+5,h=parseInt(e)+o/2;if(l>s.globals.gridWidth/2&&(l=l-n.ttWidth-o-15),l>s.globals.gridWidth-n.ttWidth-10&&(l=s.globals.gridWidth-n.ttWidth),l<-20&&(l=-20),s.config.tooltip.followCursor){var c=a.getElGrid().getBoundingClientRect();h=a.e.clientY+s.globals.translateY-c.top-n.ttHeight/2}var d=this.positionChecks(n,l,h);l=d.x,h=d.y,isNaN(l)||(l+=s.globals.translateX,r.style.left=l+\"px\",r.style.top=h+\"px\")}},{key:\"positionChecks\",value:function(t,e,i){var s=this.w;return t.ttHeight+i>s.globals.gridHeight&&(i=s.globals.gridHeight-t.ttHeight+s.globals.translateY),i<0&&(i=0),{x:e,y:i}}},{key:\"moveMarkers\",value:function(t,e){var i=this.w,s=this.ttCtx;if(i.globals.markers.size[t]>0)for(var a=i.globals.dom.baseEl.querySelectorAll(\" .apexcharts-series[data\\\\:realIndex='\".concat(t,\"'] .apexcharts-marker\")),r=0;r<a.length;r++)parseInt(a[r].getAttribute(\"rel\"))===e&&(s.marker.resetPointsSize(),s.marker.enlargeCurrentPoint(e,a[r]));else s.marker.resetPointsSize(),this.moveDynamicPointOnHover(e,t)}},{key:\"moveDynamicPointOnHover\",value:function(t,e){var i,s,a=this.w,r=this.ttCtx,n=a.globals.pointsArray,o=a.config.markers.hover.size;if(void 0===o&&(o=a.globals.markers.size[e]+a.config.markers.hover.sizeOffset),!a.config.series[e].type||\"column\"!==a.config.series[e].type){i=n[e][t][0],s=n[e][t][1]?n[e][t][1]:0;var l=a.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(e,\"'] .apexcharts-series-markers circle\"));l&&(l.setAttribute(\"r\",o),l.setAttribute(\"cx\",i),l.setAttribute(\"cy\",s)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,s,o)}}},{key:\"moveDynamicPointsOnHover\",value:function(t){var e,i=this.ttCtx,s=i.w,a=0,r=0,n=s.globals.pointsArray;e=new Series(this.ctx).getActiveSeriesIndex();var o=s.config.markers.hover.size;void 0===o&&(o=s.globals.markers.size[e]+s.config.markers.hover.sizeOffset),n[e]&&(a=n[e][t][0],r=n[e][t][1]);var l=null,h=i.getAllMarkers();if(null!==(l=null!==h?h:s.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers circle\")))for(var c=0;c<l.length;c++){var d=n[c];if(d&&d.length){var u=n[c][t][1];l[c].setAttribute(\"cx\",a);var g=parseInt(l[c].parentNode.parentNode.parentNode.getAttribute(\"data:realIndex\"));null!==u?(l[g]&&l[g].setAttribute(\"r\",o),l[g]&&l[g].setAttribute(\"cy\",u)):l[g]&&l[g].setAttribute(\"r\",0)}}if(this.moveXCrosshairs(a),!i.fixedTooltip){var f=r||s.globals.gridHeight;this.moveTooltip(a,f,o)}}},{key:\"moveStickyTooltipOverBars\",value:function(t){var e,i=this.w,s=this.ttCtx,a=i.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[rel='1'] path[j='\".concat(t,\"'], .apexcharts-candlestick-series .apexcharts-series[rel='1'] path[j='\").concat(t,\"'], .apexcharts-rangebar-series .apexcharts-series[rel='1'] path[j='\").concat(t,\"']\")),r=a?parseFloat(a.getAttribute(\"cx\")):0,n=a?parseFloat(a.getAttribute(\"barWidth\")):0;i.globals.isXNumeric?r-=n/2:(r=s.xAxisTicksPositions[t-1]+s.dataPointsDividedWidth/2,isNaN(r)&&(r=s.xAxisTicksPositions[t]-s.dataPointsDividedWidth/2));var o=s.getElGrid().getBoundingClientRect();if(e=s.e.clientY-o.top-s.tooltipRect.ttHeight/2,this.moveXCrosshairs(r),!s.fixedTooltip){var l=e||i.globals.gridHeight;this.moveTooltip(r,l)}}}]),t}(),Marker=function(){function t(e){_classCallCheck(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new Position(e)}return _createClass(t,[{key:\"drawDynamicPoints\",value:function(){for(var t=this.w,e=new Graphics(this.ctx),i=new Markers(this.ctx),s=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\"),a=0;a<s.length;a++){var r=parseInt(s[a].getAttribute(\"data:realIndex\")),n=t.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(r,\"'] .apexcharts-series-markers-wrap\"));if(null!==n){var o=void 0,l=\"apexcharts-marker w\".concat((Math.random()+1).toString(36).substring(4));\"line\"!==t.config.chart.type&&\"area\"!==t.config.chart.type||t.globals.comboCharts||t.config.tooltip.intersect||(l+=\" no-pointer-events\");var h=i.getMarkerConfig(l,r);(o=e.drawMarker(0,0,h)).node.setAttribute(\"default-marker-size\",0);var c=document.createElementNS(t.globals.SVGNS,\"g\");c.classList.add(\"apexcharts-series-markers\"),c.appendChild(o.node),n.appendChild(c)}}}},{key:\"enlargeCurrentPoint\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=this.w;\"bubble\"!==a.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute(\"cx\"),n=e.getAttribute(\"cy\");if(null!==i&&null!==s&&(r=i,n=s),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if(\"radar\"===a.config.chart.type){var o=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-o.left}this.tooltipPosition.moveTooltip(r,n,a.config.markers.hover.size)}}},{key:\"enlargePoints\",value:function(t){for(var e=this.w,i=this.ttCtx,s=t,a=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker\"),r=e.config.markers.hover.size,n=0;n<a.length;n++){var o=a[n].getAttribute(\"rel\"),l=a[n].getAttribute(\"index\");if(void 0===r&&(r=e.globals.markers.size[l]+e.config.markers.hover.sizeOffset),s===parseInt(o)){this.newPointSize(s,a[n]);var h=a[n].getAttribute(\"cx\"),c=a[n].getAttribute(\"cy\");this.tooltipPosition.moveXCrosshairs(h),i.fixedTooltip||this.tooltipPosition.moveTooltip(h,c,r)}else this.oldPointSize(a[n])}}},{key:\"newPointSize\",value:function(t,e){var i=this.w,s=i.config.markers.hover.size,a=null;a=0===t?e.parentNode.firstChild:e.parentNode.lastChild;var r=parseInt(a.getAttribute(\"index\"));void 0===s&&(s=i.globals.markers.size[r]+i.config.markers.hover.sizeOffset),a.setAttribute(\"r\",s)}},{key:\"oldPointSize\",value:function(t){var e=parseInt(t.getAttribute(\"default-marker-size\"));t.setAttribute(\"r\",e)}},{key:\"resetPointsSize\",value:function(){for(var t=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker\"),e=0;e<t.length;e++){var i=parseInt(t[e].getAttribute(\"default-marker-size\"));Utils.isNumber(i)?t[e].setAttribute(\"r\",i):t[e].setAttribute(\"r\",0)}}}]),t}(),Intersect=function(){function t(e){_classCallCheck(this,t),this.w=e.w,this.ttCtx=e}return _createClass(t,[{key:\"getAttr\",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:\"handleHeatTooltip\",value:function(t){var e=t.e,i=t.opt,s=t.x,a=t.y,r=this.ttCtx,n=this.w;if(e.target.classList.contains(\"apexcharts-heatmap-rect\")){var o=this.getAttr(e,\"i\"),l=this.getAttr(e,\"j\"),h=this.getAttr(e,\"cx\"),c=this.getAttr(e,\"cy\"),d=this.getAttr(e,\"width\"),u=this.getAttr(e,\"height\");if(r.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:o,j:l,shared:!1}),s=h+r.tooltipRect.ttWidth/2+d,a=c+r.tooltipRect.ttHeight/2-u/2,r.tooltipPosition.moveXCrosshairs(h+d/2),s>n.globals.gridWidth/2&&(s=h-r.tooltipRect.ttWidth/2+d),r.w.config.tooltip.followCursor){var g=r.getElGrid().getBoundingClientRect();a=r.e.clientY-g.top+n.globals.translateY/2-10}}return{x:s,y:a}}},{key:\"handleMarkerTooltip\",value:function(t){var e,i,s=t.e,a=t.opt,r=t.x,n=t.y,o=this.w,l=this.ttCtx;if(s.target.classList.contains(\"apexcharts-marker\")){var h=parseInt(a.paths.getAttribute(\"cx\")),c=parseInt(a.paths.getAttribute(\"cy\")),d=parseFloat(a.paths.getAttribute(\"val\"));if(i=parseInt(a.paths.getAttribute(\"rel\")),e=parseInt(a.paths.parentNode.parentNode.parentNode.getAttribute(\"rel\"))-1,l.intersect){var u=Utils.findAncestor(a.paths,\"apexcharts-series\");u&&(e=parseInt(u.getAttribute(\"data:realIndex\")))}if(l.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:e,j:i,shared:!l.showOnIntersect&&o.config.tooltip.shared}),\"mouseup\"===s.type&&l.markerClick(s,e,i),r=h,n=c+o.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var g=l.getElGrid().getBoundingClientRect();n=l.e.clientY+o.globals.translateY-g.top}d<0&&(n=c),l.marker.enlargeCurrentPoint(i,a.paths,r,n)}return{x:r,y:n}}},{key:\"handleBarTooltip\",value:function(t){var e,i,s=t.e,a=t.opt,r=this.w,n=this.ttCtx,o=n.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:s,opt:a});e=d.i;var u=d.barHeight,g=d.j;if(r.globals.isBarHorizontal&&n.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)&&(c=r.globals.svgHeight-n.tooltipRect.ttHeight),h+n.tooltipRect.ttWidth>r.globals.gridWidth?h-=n.tooltipRect.ttWidth:h<0&&(h+=n.tooltipRect.ttWidth),n.w.config.tooltip.followCursor){var f=n.getElGrid().getBoundingClientRect();c=n.e.clientY-f.top}if(null===n.tooltip&&(n.tooltip=r.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\")),r.config.tooltip.shared||(r.globals.comboChartsHasBars?n.tooltipPosition.moveXCrosshairs(l+i/2):n.tooltipPosition.moveXCrosshairs(l)),!n.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&n.hasBars())){x&&(h=r.globals.gridWidth-h),o.style.left=h+r.globals.translateX+\"px\";var p=parseInt(a.paths.parentNode.getAttribute(\"data:realIndex\")),x=r.globals.isMultipleYAxis?r.config.yaxis[p]&&r.config.yaxis[p].reversed:r.config.yaxis[0].reversed;!x||r.globals.isBarHorizontal&&n.hasBars()||(c=c+u-2*(r.globals.series[e][g]<0?u:0)),n.tooltipRect.ttHeight+c>r.globals.gridHeight?(c=r.globals.gridHeight-n.tooltipRect.ttHeight+r.globals.translateY,o.style.top=c+\"px\"):o.style.top=c+r.globals.translateY-n.tooltipRect.ttHeight/2+\"px\"}}},{key:\"getBarTooltipXY\",value:function(t){var e=t.e,i=t.opt,s=this.w,a=null,r=this.ttCtx,n=0,o=0,l=0,h=0,c=0,d=e.target.classList;if(d.contains(\"apexcharts-bar-area\")||d.contains(\"apexcharts-candlestick-area\")||d.contains(\"apexcharts-rangebar-area\")){var u=e.target,g=u.getBoundingClientRect(),f=i.elGrid.getBoundingClientRect(),p=g.height;c=g.height;var x=g.width,m=parseInt(u.getAttribute(\"cx\")),b=parseInt(u.getAttribute(\"cy\"));h=parseFloat(u.getAttribute(\"barWidth\"));var v=\"touchmove\"===e.type?e.touches[0].clientX:e.clientX;a=parseInt(u.getAttribute(\"j\")),n=parseInt(u.parentNode.getAttribute(\"rel\"))-1,s.globals.comboCharts&&(n=parseInt(u.parentNode.getAttribute(\"data:realIndex\"))),r.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:n,j:a,shared:!r.showOnIntersect&&s.config.tooltip.shared}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(o=v-f.left+15,l=b-r.dataPointsDividedHeight+p/2-r.tooltipRect.ttHeight/2):(o=s.globals.isXNumeric?m-x/2:m-r.dataPointsDividedWidth+x/2,l=e.clientY-f.top-r.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((o=m)<r.xyRatios.baseLineInvertedY&&(o=m-r.tooltipRect.ttWidth),l=b-r.dataPointsDividedHeight+p/2-r.tooltipRect.ttHeight/2):(o=s.globals.isXNumeric?m-x/2:m-r.dataPointsDividedWidth+x/2,l=b)}return{x:o,y:l,barHeight:c,barWidth:h,i:n,j:a}}}]),t}(),AxesTooltip=function(){function t(e){_classCallCheck(this,t),this.w=e.w,this.ttCtx=e}return _createClass(t,[{key:\"drawXaxisTooltip\",value:function(){var t=this.w,e=this.ttCtx,i=\"bottom\"===t.config.xaxis.position;e.xaxisOffY=i?t.globals.gridHeight+1:1;var s=i?\"apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom\":\"apexcharts-xaxistooltip apexcharts-xaxistooltip-top\",a=t.globals.dom.elWrap;e.blxaxisTooltip&&(null===t.globals.dom.baseEl.querySelector(\".apexcharts-xaxistooltip\")&&(e.xaxisTooltip=document.createElement(\"div\"),e.xaxisTooltip.setAttribute(\"class\",s+\" \"+t.config.tooltip.theme),a.appendChild(e.xaxisTooltip),e.xaxisTooltipText=document.createElement(\"div\"),e.xaxisTooltipText.classList.add(\"apexcharts-xaxistooltip-text\"),e.xaxisTooltipText.style.fontFamily=t.config.xaxis.tooltip.style.fontFamily||t.config.chart.fontFamily,e.xaxisTooltipText.style.fontSize=t.config.xaxis.tooltip.style.fontSize,e.xaxisTooltip.appendChild(e.xaxisTooltipText)))}},{key:\"drawYaxisTooltip\",value:function(){for(var t=this.w,e=this.ttCtx,i=function(i){var s=t.config.yaxis[i].opposite||t.config.yaxis[i].crosshairs.opposite;e.yaxisOffX=s?t.globals.gridWidth+1:1;var a=\"apexcharts-yaxistooltip apexcharts-yaxistooltip-\".concat(i,s?\" apexcharts-yaxistooltip-right\":\" apexcharts-yaxistooltip-left\");t.globals.yAxisSameScaleIndices.map(function(e,s){e.map(function(e,s){s===i&&(a+=t.config.yaxis[s].show?\" \":\" apexcharts-yaxistooltip-hidden\")})});var r=t.globals.dom.elWrap;e.blyaxisTooltip&&(null===t.globals.dom.baseEl.querySelector(\".apexcharts-yaxistooltip apexcharts-yaxistooltip-\".concat(i))&&(e.yaxisTooltip=document.createElement(\"div\"),e.yaxisTooltip.setAttribute(\"class\",a+\" \"+t.config.tooltip.theme),r.appendChild(e.yaxisTooltip),0===i&&(e.yaxisTooltipText=[]),e.yaxisTooltipText.push(document.createElement(\"div\")),e.yaxisTooltipText[i].classList.add(\"apexcharts-yaxistooltip-text\"),e.yaxisTooltip.appendChild(e.yaxisTooltipText[i])))},s=0;s<t.config.yaxis.length;s++)i(s)}},{key:\"setXCrosshairWidth\",value:function(){var t=this.w,e=this.ttCtx,i=e.getElXCrosshairs();if(e.xcrosshairsWidth=parseInt(t.config.xaxis.crosshairs.width),t.globals.comboCharts){var s=t.globals.dom.baseEl.querySelector(\".apexcharts-bar-area\");if(null!==s&&\"barWidth\"===t.config.xaxis.crosshairs.width){var a=parseFloat(s.getAttribute(\"barWidth\"));e.xcrosshairsWidth=a}else if(\"tickWidth\"===t.config.xaxis.crosshairs.width){var r=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/r}}else if(\"tickWidth\"===t.config.xaxis.crosshairs.width){var n=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/n}else if(\"barWidth\"===t.config.xaxis.crosshairs.width){var o=t.globals.dom.baseEl.querySelector(\".apexcharts-bar-area\");if(null!==o){var l=parseFloat(o.getAttribute(\"barWidth\"));e.xcrosshairsWidth=l}else e.xcrosshairsWidth=1}t.globals.isBarHorizontal&&(e.xcrosshairsWidth=0),null!==i&&e.xcrosshairsWidth>0&&i.setAttribute(\"width\",e.xcrosshairsWidth)}},{key:\"handleYCrosshair\",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs\"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs-hidden\")}},{key:\"drawYaxisTooltipText\",value:function(t,e,i){var s=this.ttCtx,a=this.w,r=a.globals.yLabelFormatters[t];if(s.blyaxisTooltip){var n=s.getElGrid().getBoundingClientRect(),o=(e-n.top)*i.yRatio[t],l=a.globals.maxYArr[t]-a.globals.minYArr[t],h=a.globals.minYArr[t]+(l-o);s.tooltipPosition.moveYCrosshairs(e-n.top),s.yaxisTooltipText[t].innerHTML=r(h),s.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),Tooltip=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.tConfig=i.config.tooltip,this.tooltipUtil=new Utils$1(this),this.tooltipLabels=new Labels(this),this.tooltipPosition=new Position(this),this.marker=new Marker(this),this.intersect=new Intersect(this),this.axesTooltip=new AxesTooltip(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!i.globals.isBarHorizontal&&this.tConfig.shared}return _createClass(t,[{key:\"getElTooltip\",value:function(t){return t||(t=this),t.w.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\")}},{key:\"getElXCrosshairs\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-xcrosshairs\")}},{key:\"getElGrid\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-grid\")}},{key:\"drawTooltip\",value:function(t){var e=this.w;this.xyRatios=t,this.blxaxisTooltip=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.blyaxisTooltip=e.config.yaxis[0].tooltip.enabled&&e.globals.axisCharts,this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement(\"div\");if(i.classList.add(\"apexcharts-tooltip\"),i.classList.add(this.tConfig.theme),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var s=new XAxis(this.ctx);this.xAxisTicksPositions=s.getXAxisTicksPositions()}if((e.globals.comboCharts&&!this.tConfig.shared||this.tConfig.intersect&&!this.tConfig.shared||(\"bar\"===e.config.chart.type||\"rangeBar\"===e.config.chart.type)&&!this.tConfig.shared)&&(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement(\"div\"),this.tooltipTitle.classList.add(\"apexcharts-tooltip-title\"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var a=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(a=this.showOnIntersect?1:e.globals.series.length),this.ttItems=this.createTTElements(a),this.addSVGEvents()}}},{key:\"createTTElements\",value:function(t){for(var e=this.w,i=[],s=this.getElTooltip(),a=0;a<t;a++){var r=document.createElement(\"div\");r.classList.add(\"apexcharts-tooltip-series-group\"),this.tConfig.shared&&this.tConfig.enabledOnSeries&&Array.isArray(this.tConfig.enabledOnSeries)&&this.tConfig.enabledOnSeries.indexOf(a)<0&&r.classList.add(\"apexcharts-tooltip-series-group-hidden\");var n=document.createElement(\"span\");n.classList.add(\"apexcharts-tooltip-marker\"),n.style.backgroundColor=e.globals.colors[a],r.appendChild(n);var o=document.createElement(\"div\");o.classList.add(\"apexcharts-tooltip-text\"),o.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,o.style.fontSize=this.tConfig.style.fontSize;var l=document.createElement(\"div\");l.classList.add(\"apexcharts-tooltip-y-group\");var h=document.createElement(\"span\");h.classList.add(\"apexcharts-tooltip-text-label\"),l.appendChild(h);var c=document.createElement(\"span\");c.classList.add(\"apexcharts-tooltip-text-value\"),l.appendChild(c);var d=document.createElement(\"div\");d.classList.add(\"apexcharts-tooltip-z-group\");var u=document.createElement(\"span\");u.classList.add(\"apexcharts-tooltip-text-z-label\"),d.appendChild(u);var g=document.createElement(\"span\");g.classList.add(\"apexcharts-tooltip-text-z-value\"),d.appendChild(g),o.appendChild(l),o.appendChild(d),r.appendChild(o),s.appendChild(r),i.push(r)}return i}},{key:\"addSVGEvents\",value:function(){var t=this.w,e=t.config.chart.type,i=this.getElTooltip(),s=!(\"bar\"!==e&&\"candlestick\"!==e&&\"rangeBar\"!==e),a=t.globals.dom.Paper.node,r=this.getElGrid();r&&(this.seriesBound=r.getBoundingClientRect());var n,o=[],l=[],h={hoverArea:a,elGrid:r,tooltipEl:i,tooltipY:o,tooltipX:l,ttItems:this.ttItems};if(t.globals.axisCharts&&(\"area\"===e||\"line\"===e||\"scatter\"===e||\"bubble\"===e?n=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series[data\\\\:longestSeries='true'] .apexcharts-marker\"):s?n=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-rangebar-area\"):\"heatmap\"===e?n=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series .apexcharts-heatmap\"):\"radar\"===e&&(n=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series .apexcharts-marker\")),n&&n.length))for(var c=0;c<n.length;c++)o.push(n[c].getAttribute(\"cy\")),l.push(n[c].getAttribute(\"cx\"));if(t.globals.xyCharts&&!this.showOnIntersect||t.globals.comboCharts&&!this.showOnIntersect||s&&this.hasBars()&&this.tConfig.shared)this.addPathsEventListeners([a],h);else if(s&&!t.globals.comboCharts)this.addBarsEventListeners(h);else if(\"bubble\"===e||\"scatter\"===e||\"radar\"===e||this.showOnIntersect&&(\"area\"===e||\"line\"===e))this.addPointsEventsListeners(h);else if(!t.globals.axisCharts||\"heatmap\"===e){var d=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\");this.addPathsEventListeners(d,h)}if(this.showOnIntersect){var u=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-line-series .apexcharts-marker\");u.length>0&&this.addPathsEventListeners(u,h);var g=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-area-series .apexcharts-marker\");g.length>0&&this.addPathsEventListeners(g,h),this.hasBars()&&!this.tConfig.shared&&this.addBarsEventListeners(h)}}},{key:\"drawFixedTooltipRect\",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),s=i.width+10,a=i.height+10,r=this.tConfig.fixed.offsetX,n=this.tConfig.fixed.offsetY;return this.tConfig.fixed.position.toLowerCase().indexOf(\"right\")>-1&&(r=r+t.globals.svgWidth-s+10),this.tConfig.fixed.position.toLowerCase().indexOf(\"bottom\")>-1&&(n=n+t.globals.svgHeight-a-10),e.style.left=r+\"px\",e.style.top=n+\"px\",{x:r,y:n,ttWidth:s,ttHeight:a}}},{key:\"addPointsEventsListeners\",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers .apexcharts-marker\");this.addPathsEventListeners(e,t)}},{key:\"addBarsEventListeners\",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area\");this.addPathsEventListeners(e,t)}},{key:\"addPathsEventListeners\",value:function(t,e){for(var i=this,s=this,a=function(a){var r={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};i.w.globals.tooltipOpts=r;[\"mousemove\",\"mouseup\",\"touchmove\",\"mouseout\",\"touchend\"].map(function(e){return t[a].addEventListener(e,s.seriesHover.bind(s,r),{capture:!1,passive:!0})})},r=0;r<t.length;r++)a(r)}},{key:\"seriesHover\",value:function(t,e){var i=this,s=[],a=this.w;a.config.chart.group&&(s=this.ctx.getGroupedCharts()),a.globals.axisCharts&&(a.globals.minX===-1/0&&a.globals.maxX===1/0||0===a.globals.dataPoints)||(s.length?s.forEach(function(s){var a=i.getElTooltip(s),r={paths:t.paths,tooltipEl:a,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:s.w.globals.tooltip.ttItems};s.w.globals.minX===i.w.globals.minX&&s.w.globals.maxX===i.w.globals.maxX&&s.w.globals.tooltip.seriesHoverByContext({chartCtx:s,ttCtx:s.w.globals.tooltip,opt:r,e:e})}):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:\"seriesHoverByContext\",value:function(t){var e=t.chartCtx,i=t.ttCtx,s=t.opt,a=t.e,r=e.w,n=this.getElTooltip();(i.tooltipRect={x:0,y:0,ttWidth:n.getBoundingClientRect().width,ttHeight:n.getBoundingClientRect().height},i.e=a,!i.hasBars()||r.globals.comboCharts||i.isBarShared)||this.tConfig.onDatasetHover.highlightDataSeries&&new Series(e).toggleSeriesOnHover(a,a.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:a,opt:s,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:a,opt:s,tooltipRect:i.tooltipRect})}},{key:\"axisChartsTooltips\",value:function(t){var e,i,s,a=t.e,r=t.opt,n=this.w,o=null,l=r.elGrid.getBoundingClientRect(),h=\"touchmove\"===a.type?a.touches[0].clientX:a.clientX,c=\"touchmove\"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=c,this.clientX=h,c<l.top||c>l.top+l.height)this.handleMouseOut(r);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!n.config.tooltip.shared){var d=parseInt(r.paths.getAttribute(\"index\"));if(this.tConfig.enabledOnSeries.indexOf(d)<0)return void this.handleMouseOut(r)}var u=this.getElTooltip(),g=this.getElXCrosshairs(),f=n.globals.xyCharts||\"bar\"===n.config.chart.type&&!n.globals.isBarHorizontal&&this.hasBars()&&this.tConfig.shared||n.globals.comboCharts&&this.hasBars;if(n.globals.isBarHorizontal&&this.hasBars()&&(f=!1),\"mousemove\"===a.type||\"touchmove\"===a.type||\"mouseup\"===a.type){if(null!==g&&g.classList.add(\"active\"),null!==this.ycrosshairs&&this.blyaxisTooltip&&this.ycrosshairs.classList.add(\"active\"),f&&!this.showOnIntersect){e=(o=this.tooltipUtil.getNearestValues({context:this,hoverArea:r.hoverArea,elGrid:r.elGrid,clientX:h,clientY:c,hasBars:this.hasBars})).j;var p=o.capturedSeries;if(o.hoverX<0||o.hoverX>n.globals.gridWidth)return void this.handleMouseOut(r);if(null!==p){if(null===n.globals.series[p][e])return void r.tooltipEl.classList.remove(\"active\");void 0!==n.globals.series[p][e]?this.tConfig.shared&&this.tooltipUtil.isXoverlap(e)&&this.tooltipUtil.isinitialSeriesSameLen()?this.create(a,this,p,e,r.ttItems):this.create(a,this,p,e,r.ttItems,!1):this.tooltipUtil.isXoverlap(e)&&this.create(a,this,0,e,r.ttItems)}else this.tooltipUtil.isXoverlap(e)&&this.create(a,this,0,e,r.ttItems)}else if(\"heatmap\"===n.config.chart.type){var x=this.intersect.handleHeatTooltip({e:a,opt:r,x:i,y:s});i=x.x,s=x.y,u.style.left=i+\"px\",u.style.top=s+\"px\"}else this.hasBars&&this.intersect.handleBarTooltip({e:a,opt:r}),this.hasMarkers&&this.intersect.handleMarkerTooltip({e:a,opt:r,x:i,y:s});if(this.blyaxisTooltip)for(var m=0;m<n.config.yaxis.length;m++)this.axesTooltip.drawYaxisTooltipText(m,c,this.xyRatios);r.tooltipEl.classList.add(\"active\")}else\"mouseout\"!==a.type&&\"touchend\"!==a.type||this.handleMouseOut(r)}}},{key:\"nonAxisChartsTooltips\",value:function(t){var e=t.e,i=t.opt,s=t.tooltipRect,a=this.w,r=i.paths.getAttribute(\"rel\"),n=this.getElTooltip(),o=a.globals.dom.elWrap.getBoundingClientRect();if(\"mousemove\"===e.type||\"touchmove\"===e.type){n.classList.add(\"active\"),this.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:parseInt(r)-1,shared:!1});var l=a.globals.clientX-o.left-s.ttWidth/2,h=a.globals.clientY-o.top-s.ttHeight-10;n.style.left=l+\"px\",n.style.top=h+\"px\"}else\"mouseout\"!==e.type&&\"touchend\"!==e.type||n.classList.remove(\"active\")}},{key:\"deactivateHoverFilter\",value:function(){for(var t=this.w,e=new Graphics(this.ctx),i=t.globals.dom.Paper.select(\".apexcharts-bar-area\"),s=0;s<i.length;s++)e.pathMouseLeave(i[s])}},{key:\"handleMouseOut\",value:function(t){var e=this.w,i=this.getElXCrosshairs();if(t.tooltipEl.classList.remove(\"active\"),this.deactivateHoverFilter(),\"bubble\"!==e.config.chart.type&&this.marker.resetPointsSize(),null!==i&&i.classList.remove(\"active\"),null!==this.ycrosshairs&&this.ycrosshairs.classList.remove(\"active\"),this.blxaxisTooltip&&this.xaxisTooltip.classList.remove(\"active\"),this.blyaxisTooltip){null===this.yaxisTTEls&&(this.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxistooltip\"));for(var s=0;s<this.yaxisTTEls.length;s++)this.yaxisTTEls[s].classList.remove(\"active\")}}},{key:\"getElMarkers\",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(\" .apexcharts-series-markers\")}},{key:\"getAllMarkers\",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers .apexcharts-marker\")}},{key:\"hasMarkers\",value:function(){return this.getElMarkers().length>0}},{key:\"getElBars\",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-rangebar-series\")}},{key:\"hasBars\",value:function(){return this.getElBars().length>0}},{key:\"markerClick\",value:function(t,e,i){var s=this.w;\"function\"==typeof s.config.chart.events.markerClick&&s.config.chart.events.markerClick(t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:s}),this.ctx.fireEvent(\"markerClick\",[t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:s}])}},{key:\"create\",value:function(t,e,i,s,a){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=this.w,o=e;\"mouseup\"===t.type&&this.markerClick(t,i,s),null===r&&(r=this.tConfig.shared);var l=this.hasMarkers(),h=this.getElBars();if(r){if(o.tooltipLabels.drawSeriesTexts({ttItems:a,i:i,j:s,shared:!this.showOnIntersect&&this.tConfig.shared}),l&&(n.globals.markers.largestSize>0?o.marker.enlargePoints(s):o.tooltipPosition.moveDynamicPointsOnHover(s)),this.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(h),this.barSeriesHeight>0)){var c=new Graphics(this.ctx),d=n.globals.dom.Paper.select(\".apexcharts-bar-area[j='\".concat(s,\"']\"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(s);for(var u=0;u<d.length;u++)c.pathMouseEnter(d[u])}}else o.tooltipLabels.drawSeriesTexts({shared:!1,ttItems:a,i:i,j:s}),this.hasBars()&&o.tooltipPosition.moveStickyTooltipOverBars(s),l&&o.tooltipPosition.moveMarkers(i,s)}}]),t}(),icoPan='<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\\n    <defs>\\n        <path d=\"M0 0h24v24H0z\" id=\"a\"/>\\n    </defs>\\n    <clipPath id=\"b\">\\n        <use overflow=\"visible\" xlink:href=\"#a\"/>\\n    </clipPath>\\n    <path clip-path=\"url(#b)\" d=\"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\"/>\\n</svg>',icoZoom='<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\\n    <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\\n    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\\n    <path d=\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"/>\\n</svg>',icoReset='<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\\n    <path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/>\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n</svg>',icoZoomIn='<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n    <path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\\n</svg>\\n',icoZoomOut='<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n    <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\\n</svg>\\n',icoSelect='<svg fill=\"#6E8192\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n    <path d=\"M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z\"/>\\n</svg>',icoMenu='<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"/></svg>',Toolbar=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w,this.ev=this.w.config.chart.events,this.localeValues=this.w.globals.locale.toolbar}return _createClass(t,[{key:\"createToolbar\",value:function(){var t=this.w,e=document.createElement(\"div\");if(e.setAttribute(\"class\",\"apexcharts-toolbar\"),t.globals.dom.elWrap.appendChild(e),this.elZoom=document.createElement(\"div\"),this.elZoomIn=document.createElement(\"div\"),this.elZoomOut=document.createElement(\"div\"),this.elPan=document.createElement(\"div\"),this.elSelection=document.createElement(\"div\"),this.elZoomReset=document.createElement(\"div\"),this.elMenuIcon=document.createElement(\"div\"),this.elMenu=document.createElement(\"div\"),this.elCustomIcons=[],this.t=t.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var i=0;i<this.t.customIcons.length;i++)this.elCustomIcons.push(document.createElement(\"div\"));this.elMenuItems=[];var s=[];this.t.zoomin&&t.config.chart.zoom.enabled&&s.push({el:this.elZoomIn,icon:\"string\"==typeof this.t.zoomin?this.t.zoomin:icoZoomIn,title:this.localeValues.zoomIn,class:\"apexcharts-zoom-in-icon\"}),this.t.zoomout&&t.config.chart.zoom.enabled&&s.push({el:this.elZoomOut,icon:\"string\"==typeof this.t.zoomout?this.t.zoomout:icoZoomOut,title:this.localeValues.zoomOut,class:\"apexcharts-zoom-out-icon\"}),this.t.zoom&&t.config.chart.zoom.enabled&&s.push({el:this.elZoom,icon:\"string\"==typeof this.t.zoom?this.t.zoom:icoZoom,title:this.localeValues.selectionZoom,class:t.globals.isTouchDevice?\"hidden\":\"apexcharts-zoom-icon\"}),this.t.selection&&t.config.chart.selection.enabled&&s.push({el:this.elSelection,icon:\"string\"==typeof this.t.selection?this.t.selection:icoSelect,title:this.localeValues.selection,class:t.globals.isTouchDevice?\"hidden\":\"apexcharts-selection-icon\"}),this.t.pan&&t.config.chart.zoom.enabled&&s.push({el:this.elPan,icon:\"string\"==typeof this.t.pan?this.t.pan:icoPan,title:this.localeValues.pan,class:t.globals.isTouchDevice?\"hidden\":\"apexcharts-pan-icon\"}),this.t.reset&&t.config.chart.zoom.enabled&&s.push({el:this.elZoomReset,icon:\"string\"==typeof this.t.reset?this.t.reset:icoReset,title:this.localeValues.reset,class:\"apexcharts-reset-zoom-icon\"}),this.t.download&&s.push({el:this.elMenuIcon,icon:\"string\"==typeof this.t.download?this.t.download:icoMenu,title:this.localeValues.menu,class:\"apexcharts-menu-icon\"});for(var a=0;a<this.elCustomIcons.length;a++)s.push({el:this.elCustomIcons[a],icon:this.t.customIcons[a].icon,title:this.t.customIcons[a].title,index:this.t.customIcons[a].index,class:\"apexcharts-toolbar-custom-icon \"+this.t.customIcons[a].class});s.forEach(function(t,e){t.index&&Utils.moveIndexInArray(s,e,t.index)});for(var r=0;r<s.length;r++)Graphics.setAttrs(s[r].el,{class:s[r].class,title:s[r].title}),s[r].el.innerHTML=s[r].icon,e.appendChild(s[r].el);e.appendChild(this.elMenu),Graphics.setAttrs(this.elMenu,{class:\"apexcharts-menu\"});for(var n=[{name:\"exportSVG\",title:this.localeValues.exportToSVG},{name:\"exportPNG\",title:this.localeValues.exportToPNG}],o=0;o<n.length;o++)this.elMenuItems.push(document.createElement(\"div\")),this.elMenuItems[o].innerHTML=n[o].title,Graphics.setAttrs(this.elMenuItems[o],{class:\"apexcharts-menu-item \".concat(n[o].name),title:n[o].title}),this.elMenu.appendChild(this.elMenuItems[o]);t.globals.zoomEnabled?this.elZoom.classList.add(\"selected\"):t.globals.panEnabled?this.elPan.classList.add(\"selected\"):t.globals.selectionEnabled&&this.elSelection.classList.add(\"selected\"),this.addToolbarEventListeners()}},{key:\"addToolbarEventListeners\",value:function(){var t=this;this.elZoomReset.addEventListener(\"click\",this.handleZoomReset.bind(this)),this.elSelection.addEventListener(\"click\",this.toggleSelection.bind(this)),this.elZoom.addEventListener(\"click\",this.toggleZooming.bind(this)),this.elZoomIn.addEventListener(\"click\",this.handleZoomIn.bind(this)),this.elZoomOut.addEventListener(\"click\",this.handleZoomOut.bind(this)),this.elPan.addEventListener(\"click\",this.togglePanning.bind(this)),this.elMenuIcon.addEventListener(\"click\",this.toggleMenu.bind(this)),this.elMenuItems.forEach(function(e){e.classList.contains(\"exportSVG\")?e.addEventListener(\"click\",t.downloadSVG.bind(t)):e.classList.contains(\"exportPNG\")&&e.addEventListener(\"click\",t.downloadPNG.bind(t))});for(var e=0;e<this.t.customIcons.length;e++)this.elCustomIcons[e].addEventListener(\"click\",this.t.customIcons[e].click.bind(this,this.ctx,this.ctx.w))}},{key:\"toggleSelection\",value:function(){this.toggleOtherControls(),this.w.globals.selectionEnabled=!this.w.globals.selectionEnabled,this.elSelection.classList.contains(\"selected\")?this.elSelection.classList.remove(\"selected\"):this.elSelection.classList.add(\"selected\")}},{key:\"toggleZooming\",value:function(){this.toggleOtherControls(),this.w.globals.zoomEnabled=!this.w.globals.zoomEnabled,this.elZoom.classList.contains(\"selected\")?this.elZoom.classList.remove(\"selected\"):this.elZoom.classList.add(\"selected\")}},{key:\"getToolbarIconsReference\",value:function(){var t=this.w;this.elZoom||(this.elZoom=t.globals.dom.baseEl.querySelector(\".apexcharts-zoom-icon\")),this.elPan||(this.elPan=t.globals.dom.baseEl.querySelector(\".apexcharts-pan-icon\")),this.elSelection||(this.elSelection=t.globals.dom.baseEl.querySelector(\".apexcharts-selection-icon\"))}},{key:\"enableZooming\",value:function(){this.toggleOtherControls(),this.w.globals.zoomEnabled=!0,this.elZoom&&this.elZoom.classList.add(\"selected\"),this.elPan&&this.elPan.classList.remove(\"selected\")}},{key:\"enablePanning\",value:function(){this.toggleOtherControls(),this.w.globals.panEnabled=!0,this.elPan&&this.elPan.classList.add(\"selected\"),this.elZoom&&this.elZoom.classList.remove(\"selected\")}},{key:\"togglePanning\",value:function(){this.toggleOtherControls(),this.w.globals.panEnabled=!this.w.globals.panEnabled,this.elPan.classList.contains(\"selected\")?this.elPan.classList.remove(\"selected\"):this.elPan.classList.add(\"selected\")}},{key:\"toggleOtherControls\",value:function(){var t=this.w;t.globals.panEnabled=!1,t.globals.zoomEnabled=!1,t.globals.selectionEnabled=!1,this.getToolbarIconsReference(),this.elPan&&this.elPan.classList.remove(\"selected\"),this.elSelection&&this.elSelection.classList.remove(\"selected\"),this.elZoom&&this.elZoom.classList.remove(\"selected\")}},{key:\"handleZoomIn\",value:function(){var t=this.w,e=(t.globals.minX+t.globals.maxX)/2,i=(t.globals.minX+e)/2,s=(t.globals.maxX+e)/2;t.globals.disableZoomIn||this.zoomUpdateOptions(i,s)}},{key:\"handleZoomOut\",value:function(){var t=this.w;if(!(\"datetime\"===t.config.xaxis.type&&new Date(t.globals.minX).getUTCFullYear()<1e3)){var e=(t.globals.minX+t.globals.maxX)/2,i=t.globals.minX-(e-t.globals.minX),s=t.globals.maxX-(e-t.globals.maxX);t.globals.disableZoomOut||this.zoomUpdateOptions(i,s)}}},{key:\"zoomUpdateOptions\",value:function(t,e){var i={min:t,max:e},s=this.getBeforeZoomRange(i);s&&(i=s.xaxis),this.w.globals.zoomed=!0,this.ctx._updateOptions({xaxis:i},!1,this.w.config.chart.animations.dynamicAnimation.enabled),this.zoomCallback(i)}},{key:\"zoomCallback\",value:function(t,e){\"function\"==typeof this.ev.zoomed&&this.ev.zoomed(this.ctx,{xaxis:t,yaxis:e})}},{key:\"getBeforeZoomRange\",value:function(t,e){var i=null;return\"function\"==typeof this.ev.beforeZoom&&(i=this.ev.beforeZoom(this,{xaxis:t,yaxis:e})),i}},{key:\"toggleMenu\",value:function(){this.elMenu.classList.contains(\"open\")?this.elMenu.classList.remove(\"open\"):this.elMenu.classList.add(\"open\")}},{key:\"downloadPNG\",value:function(){var t=new Exports(this.ctx);t.exportToPng(this.ctx),this.toggleMenu()}},{key:\"downloadSVG\",value:function(){var t=new Exports(this.ctx);t.exportToSVG(),this.toggleMenu()}},{key:\"handleZoomReset\",value:function(t){var e=this;this.ctx.getSyncedCharts().forEach(function(t){var i=t.w;i.globals.minX!==i.globals.initialminX&&i.globals.maxX!==i.globals.initialmaxX&&(t.revertDefaultAxisMinMax(),\"function\"==typeof i.config.chart.events.zoomed&&e.zoomCallback({min:i.config.xaxis.min,max:i.config.xaxis.max}),i.globals.zoomed=!1,t._updateSeries(i.globals.initialSeries,i.config.chart.animations.dynamicAnimation.enabled))})}},{key:\"destroy\",value:function(){this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elZoomReset=null,this.elMenuIcon=null}}]),t}(),ZoomPanSelection=function(t){function e(t){var i;return _classCallCheck(this,e),(i=_possibleConstructorReturn(this,_getPrototypeOf(e).call(this,t))).ctx=t,i.w=t.w,i.dragged=!1,i.graphics=new Graphics(i.ctx),i.eventList=[\"mousedown\",\"mouseleave\",\"mousemove\",\"touchstart\",\"touchmove\",\"mouseup\",\"touchend\"],i.clientX=0,i.clientY=0,i.startX=0,i.endX=0,i.dragX=0,i.startY=0,i.endY=0,i.dragY=0,i}return _inherits(e,Toolbar),_createClass(e,[{key:\"init\",value:function(t){var e=this,i=t.xyRatios,s=this.w,a=this;this.xyRatios=i,this.zoomRect=this.graphics.drawRect(0,0,0,0),this.selectionRect=this.graphics.drawRect(0,0,0,0),this.gridRect=s.globals.dom.baseEl.querySelector(\".apexcharts-grid\"),this.zoomRect.node.classList.add(\"apexcharts-zoom-rect\"),this.selectionRect.node.classList.add(\"apexcharts-selection-rect\"),s.globals.dom.elGraphical.add(this.zoomRect),s.globals.dom.elGraphical.add(this.selectionRect),\"x\"===s.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,minY:0,maxX:s.globals.gridWidth,maxY:s.globals.gridHeight}).on(\"dragmove\",this.selectionDragging.bind(this,\"dragging\")):\"y\"===s.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,maxX:s.globals.gridWidth}).on(\"dragmove\",this.selectionDragging.bind(this,\"dragging\")):this.slDraggableRect=this.selectionRect.draggable().on(\"dragmove\",this.selectionDragging.bind(this,\"dragging\")),this.preselectedSelection(),this.hoverArea=s.globals.dom.baseEl.querySelector(s.globals.chartClass),this.hoverArea.classList.add(\"zoomable\"),this.eventList.forEach(function(t){e.hoverArea.addEventListener(t,a.svgMouseEvents.bind(a,i),{capture:!1,passive:!0})})}},{key:\"destroy\",value:function(){this.slDraggableRect&&(this.slDraggableRect.draggable(!1),this.slDraggableRect.off(),this.selectionRect.off()),this.selectionRect=null,this.zoomRect=null,this.gridRect=null}},{key:\"svgMouseEvents\",value:function(t,e){var i=this.w,s=this,a=this.ctx.toolbar,r=i.globals.zoomEnabled?i.config.chart.zoom.type:i.config.chart.selection.type;if(e.shiftKey?(this.shiftWasPressed=!0,a.enablePanning()):this.shiftWasPressed&&(a.enableZooming(),this.shiftWasPressed=!1),!(e.target.classList.contains(\"apexcharts-selection-rect\")||e.target.parentNode.classList.contains(\"apexcharts-toolbar\"))){if(s.clientX=\"touchmove\"===e.type||\"touchstart\"===e.type?e.touches[0].clientX:\"touchend\"===e.type?e.changedTouches[0].clientX:e.clientX,s.clientY=\"touchmove\"===e.type||\"touchstart\"===e.type?e.touches[0].clientY:\"touchend\"===e.type?e.changedTouches[0].clientY:e.clientY,\"mousedown\"===e.type&&1===e.which){var n=s.gridRect.getBoundingClientRect();s.startX=s.clientX-n.left,s.startY=s.clientY-n.top,s.dragged=!1,s.w.globals.mousedown=!0}if((\"mousemove\"===e.type&&1===e.which||\"touchmove\"===e.type)&&(s.dragged=!0,i.globals.panEnabled?(i.globals.selection=null,s.w.globals.mousedown&&s.panDragging({context:s,zoomtype:r,xyRatios:t})):(s.w.globals.mousedown&&i.globals.zoomEnabled||s.w.globals.mousedown&&i.globals.selectionEnabled)&&(s.selection=s.selectionDrawing({context:s,zoomtype:r}))),\"mouseup\"===e.type||\"touchend\"===e.type||\"mouseleave\"===e.type){var o=s.gridRect.getBoundingClientRect();s.w.globals.mousedown&&(s.endX=s.clientX-o.left,s.endY=s.clientY-o.top,s.dragX=Math.abs(s.endX-s.startX),s.dragY=Math.abs(s.endY-s.startY),(i.globals.zoomEnabled||i.globals.selectionEnabled)&&s.selectionDrawn({context:s,zoomtype:r})),i.globals.zoomEnabled&&s.hideSelectionRect(this.selectionRect),s.dragged=!1,s.w.globals.mousedown=!1}this.makeSelectionRectDraggable()}}},{key:\"makeSelectionRectDraggable\",value:function(){var t=this.w;if(this.selectionRect){var e=this.selectionRect.node.getBoundingClientRect();e.width>0&&e.height>0&&this.slDraggableRect.selectize().resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on(\"resizing\",this.selectionDragging.bind(this,\"resizing\"))}}},{key:\"preselectedSelection\",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,s={x:i,y:0,width:t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),\"function\"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:\"drawSelectionRect\",value:function(t){var e=t.x,i=t.y,s=t.width,a=t.height,r=t.translateX,n=t.translateY,o=this.w,l=this.zoomRect,h=this.selectionRect;if(this.dragged||null!==o.globals.selection){var c={transform:\"translate(\"+r+\", \"+n+\")\"};o.globals.zoomEnabled&&this.dragged&&(l.attr({x:e,y:i,width:s,height:a,fill:o.config.chart.zoom.zoomedArea.fill.color,\"fill-opacity\":o.config.chart.zoom.zoomedArea.fill.opacity,stroke:o.config.chart.zoom.zoomedArea.stroke.color,\"stroke-width\":o.config.chart.zoom.zoomedArea.stroke.width,\"stroke-opacity\":o.config.chart.zoom.zoomedArea.stroke.opacity}),Graphics.setAttrs(l.node,c)),o.globals.selectionEnabled&&(h.attr({x:e,y:i,width:s>0?s:0,height:a>0?a:0,fill:o.config.chart.selection.fill.color,\"fill-opacity\":o.config.chart.selection.fill.opacity,stroke:o.config.chart.selection.stroke.color,\"stroke-width\":o.config.chart.selection.stroke.width,\"stroke-dasharray\":o.config.chart.selection.stroke.dashArray,\"stroke-opacity\":o.config.chart.selection.stroke.opacity}),Graphics.setAttrs(h.node,c))}}},{key:\"hideSelectionRect\",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:\"selectionDrawing\",value:function(t){var e=t.context,i=t.zoomtype,s=this.w,a=e,r=this.gridRect.getBoundingClientRect(),n=a.startX-1,o=a.startY,l=a.clientX-r.left-n,h=a.clientY-r.top-o,c=0,d=0,u={};return Math.abs(l+n)>s.globals.gridWidth?l=s.globals.gridWidth-n:a.clientX-r.left<0&&(l=n),n>a.clientX-r.left&&(c=-(l=Math.abs(l))),o>a.clientY-r.top&&(d=-(h=Math.abs(h))),u=\"x\"===i?{x:n,y:0,width:l,height:s.globals.gridHeight,translateX:c,translateY:0}:\"y\"===i?{x:0,y:o,width:s.globals.gridWidth,height:h,translateX:0,translateY:d}:{x:n,y:o,width:l,height:h,translateX:c,translateY:d},a.drawSelectionRect(u),a.selectionDragging(\"resizing\"),u}},{key:\"selectionDragging\",value:function(t,e){var i=this,s=this.w,a=this.xyRatios,r=this.selectionRect,n=0;\"resizing\"===t&&(n=30),\"function\"==typeof s.config.chart.events.selection&&s.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout(function(){var t=i.gridRect.getBoundingClientRect(),e=r.node.getBoundingClientRect(),n=s.globals.xAxisScale.niceMin+(e.left-t.left)*a.xRatio,o=s.globals.xAxisScale.niceMin+(e.right-t.left)*a.xRatio,l=s.globals.yAxisScale[0].niceMin+(t.bottom-e.bottom)*a.yRatio[0],h=s.globals.yAxisScale[0].niceMax-(e.top-t.top)*a.yRatio[0];s.config.chart.events.selection(i.ctx,{xaxis:{min:n,max:o},yaxis:{min:l,max:h}})},n))}},{key:\"selectionDrawn\",value:function(t){var e=t.context,i=t.zoomtype,s=this.w,a=e,r=this.xyRatios,n=this.ctx.toolbar;if(a.startX>a.endX){var o=a.startX;a.startX=a.endX,a.endX=o}if(a.startY>a.endY){var l=a.startY;a.startY=a.endY,a.endY=l}var h=s.globals.xAxisScale.niceMin+a.startX*r.xRatio,c=s.globals.xAxisScale.niceMin+a.endX*r.xRatio,d=[],u=[];if(s.config.yaxis.forEach(function(t,e){d.push(Math.floor(s.globals.yAxisScale[e].niceMax-r.yRatio[e]*a.startY)),u.push(Math.floor(s.globals.yAxisScale[e].niceMax-r.yRatio[e]*a.endY))}),a.dragged&&(a.dragX>10||a.dragY>10)&&h!==c)if(s.globals.zoomEnabled){var g=Utils.clone(s.globals.initialConfig.yaxis);s.globals.zoomed||(s.globals.lastXAxis=Utils.clone(s.config.xaxis),s.globals.lastYAxis=Utils.clone(s.config.yaxis));var f={min:h,max:c};if(\"xy\"!==i&&\"y\"!==i||g.forEach(function(t,e){g[e].min=u[e],g[e].max=d[e]}),s.config.chart.zoom.autoScaleYaxis){var p=new Range(a.ctx);g=p.autoScaleY(a.ctx,g,{xaxis:f})}if(n){var x=n.getBeforeZoomRange(f,g);x&&(f=x.xaxis?x.xaxis:f,g=x.yaxis?x.yaxe:g)}var m={xaxis:f};s.config.chart.group||(m.yaxis=g),a.ctx._updateOptions(m,!1,a.w.config.chart.animations.dynamicAnimation.enabled),\"function\"==typeof s.config.chart.events.zoomed&&n.zoomCallback(f,g),s.globals.zoomed=!0}else if(s.globals.selectionEnabled){var b,v=null;b={min:h,max:c},\"xy\"!==i&&\"y\"!==i||(v=Utils.clone(s.config.yaxis)).forEach(function(t,e){v[e].min=u[e],v[e].max=d[e]}),s.globals.selection=a.selection,\"function\"==typeof s.config.chart.events.selection&&s.config.chart.events.selection(a.ctx,{xaxis:b,yaxis:v})}}},{key:\"panDragging\",value:function(t){var e,i=t.context,s=this.w,a=i;if(void 0!==s.globals.lastClientPosition.x){var r=s.globals.lastClientPosition.x-a.clientX,n=s.globals.lastClientPosition.y-a.clientY;Math.abs(r)>Math.abs(n)&&r>0?e=\"left\":Math.abs(r)>Math.abs(n)&&r<0?e=\"right\":Math.abs(n)>Math.abs(r)&&n>0?e=\"up\":Math.abs(n)>Math.abs(r)&&n<0&&(e=\"down\")}s.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=s.globals.minX,l=s.globals.maxX;a.panScrolled(e,o,l)}},{key:\"panScrolled\",value:function(t,e,i){var s=this.w,a=this.xyRatios,r=Utils.clone(s.globals.initialConfig.yaxis);\"left\"===t?(e=s.globals.minX+s.globals.gridWidth/15*a.xRatio,i=s.globals.maxX+s.globals.gridWidth/15*a.xRatio):\"right\"===t&&(e=s.globals.minX-s.globals.gridWidth/15*a.xRatio,i=s.globals.maxX-s.globals.gridWidth/15*a.xRatio),(e<s.globals.initialminX||i>s.globals.initialmaxX)&&(e=s.globals.minX,i=s.globals.maxX);var n={min:e,max:i};s.config.chart.zoom.autoScaleYaxis&&(r=new Range(this.ctx).autoScaleY(this.ctx,r,{xaxis:n}));var o={xaxis:{min:e,max:i}};s.config.chart.group||(o.yaxis=r),this.ctx._updateOptions(o,!1,!1),\"function\"==typeof s.config.chart.events.scrolled&&s.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),e}(),TitleSubtitle=function(){function t(e){_classCallCheck(this,t),this.ctx=e,this.w=e.w}return _createClass(t,[{key:\"draw\",value:function(){this.drawTitleSubtitle(\"title\"),this.drawTitleSubtitle(\"subtitle\")}},{key:\"drawTitleSubtitle\",value:function(t){var e=this.w,i=\"title\"===t?e.config.title:e.config.subtitle,s=e.globals.svgWidth/2,a=i.offsetY,r=\"middle\";if(\"left\"===i.align?(s=10,r=\"start\"):\"right\"===i.align&&(s=e.globals.svgWidth-10,r=\"end\"),s+=i.offsetX,a=a+parseInt(i.style.fontSize)+2,void 0!==i.text){var n=new Graphics(this.ctx).drawText({x:s,y:a,text:i.text,textAnchor:r,fontSize:i.style.fontSize,fontFamily:i.style.fontFamily,foreColor:i.style.color,opacity:1});n.node.setAttribute(\"class\",\"apexcharts-\".concat(t,\"-text\")),e.globals.dom.Paper.add(n)}}}]),t}();function styleInject(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&\"undefined\"!=typeof document){var s=document.head||document.getElementsByTagName(\"head\")[0],a=document.createElement(\"style\");a.type=\"text/css\",\"top\"===i&&s.firstChild?s.insertBefore(a,s.firstChild):s.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}!function(t,e){\"function\"==typeof define&&__webpack_require__(/*! !webpack amd options */ \"./node_modules/webpack/buildin/amd-options.js\")?define(function(){return e(t,t.document)}):\"object\"===(\"undefined\"==typeof exports?\"undefined\":_typeof(exports))&&\"undefined\"!=typeof module?module.exports=t.document?e(t,t.document):function(t){return e(t,t.document)}:t.SVG=e(t,t.document)}(\"undefined\"!=typeof window?window:void 0,function(t,e){var i=(void 0!==this?this:t).SVG=function(t){if(i.supported)return t=new i.Doc(t),i.parser.draw||i.prepare(),t};if(i.ns=\"http://www.w3.org/2000/svg\",i.xmlns=\"http://www.w3.org/2000/xmlns/\",i.xlink=\"http://www.w3.org/1999/xlink\",i.svgjs=\"http://svgjs.com/svgjs\",i.supported=!0,!i.supported)return!1;i.did=1e3,i.eid=function(t){return\"Svgjs\"+c(t)+i.did++},i.create=function(t){var i=e.createElementNS(this.ns,t);return i.setAttribute(\"id\",this.eid(t)),i},i.extend=function(){var t,e,s,a;for(e=(t=[].slice.call(arguments)).pop(),a=t.length-1;a>=0;a--)if(t[a])for(s in e)t[a].prototype[s]=e[s];i.Set&&i.Set.inherit&&i.Set.inherit()},i.invent=function(t){var e=\"function\"==typeof t.create?t.create:function(){this.constructor.call(this,i.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&i.extend(e,t.extend),t.construct&&i.extend(t.parent||i.Container,t.construct),e},i.adopt=function(e){return e?e.instance?e.instance:((s=\"svg\"==e.nodeName?e.parentNode instanceof t.SVGElement?new i.Nested:new i.Doc:\"linearGradient\"==e.nodeName?new i.Gradient(\"linear\"):\"radialGradient\"==e.nodeName?new i.Gradient(\"radial\"):i[c(e.nodeName)]?new(i[c(e.nodeName)]):new i.Element(e)).type=e.nodeName,s.node=e,e.instance=s,s instanceof i.Doc&&s.namespace().defs(),s.setData(JSON.parse(e.getAttribute(\"svgjs:data\"))||{}),s):null;var s},i.prepare=function(){var t=e.getElementsByTagName(\"body\")[0],s=(t?new i.Doc(t):i.adopt(e.documentElement).nested()).size(2,0);i.parser={body:t||e.documentElement,draw:s.style(\"opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden\").node,poly:s.polyline().node,path:s.path().node,native:i.create(\"svg\")}},i.parser={native:i.create(\"svg\")},e.addEventListener(\"DOMContentLoaded\",function(){i.parser.draw||i.prepare()},!1),i.regex={numberAndUnit:/^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,rgb:/rgb\\((\\d+),(\\d+),(\\d+)\\)/,reference:/#([a-z0-9\\-_]+)/i,transforms:/\\)\\s*,?\\s*/,whitespace:/\\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\\s+)?$/,isNumber:/^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,isPercent:/^-?[\\d\\.]+%$/,isImage:/\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i,delimiter:/[\\s,]+/,hyphen:/([^e])\\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi,dots:/\\./g},i.utils={map:function(t,e){var i,s=t.length,a=[];for(i=0;i<s;i++)a.push(e(t[i]));return a},filter:function(t,e){var i,s=t.length,a=[];for(i=0;i<s;i++)e(t[i])&&a.push(t[i]);return a},radians:function(t){return t%360*Math.PI/180},degrees:function(t){return 180*t/Math.PI%360},filterSVGElements:function(e){return this.filter(e,function(e){return e instanceof t.SVGElement})}},i.defaults={attrs:{\"fill-opacity\":1,\"stroke-opacity\":1,\"stroke-width\":0,\"stroke-linejoin\":\"miter\",\"stroke-linecap\":\"butt\",fill:\"#000000\",stroke:\"#000000\",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,\"stop-opacity\":1,\"stop-color\":\"#000000\",\"font-size\":16,\"font-family\":\"Helvetica, Arial, sans-serif\",\"text-anchor\":\"start\"}},i.Color=function(t){var e,s;(this.r=0,this.g=0,this.b=0,t)&&(\"string\"==typeof t?i.regex.isRgb.test(t)?(e=i.regex.rgb.exec(t.replace(i.regex.whitespace,\"\")),this.r=parseInt(e[1]),this.g=parseInt(e[2]),this.b=parseInt(e[3])):i.regex.isHex.test(t)&&(e=i.regex.hex.exec(4==(s=t).length?[\"#\",s.substring(1,2),s.substring(1,2),s.substring(2,3),s.substring(2,3),s.substring(3,4),s.substring(3,4)].join(\"\"):s),this.r=parseInt(e[1],16),this.g=parseInt(e[2],16),this.b=parseInt(e[3],16)):\"object\"===_typeof(t)&&(this.r=t.r,this.g=t.g,this.b=t.b))},i.extend(i.Color,{toString:function(){return this.toHex()},toHex:function(){return\"#\"+d(this.r)+d(this.g)+d(this.b)},toRgb:function(){return\"rgb(\"+[this.r,this.g,this.b].join()+\")\"},brightness:function(){return this.r/255*.3+this.g/255*.59+this.b/255*.11},morph:function(t){return this.destination=new i.Color(t),this},at:function(t){return this.destination?(t=t<0?0:t>1?1:t,new i.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),i.Color.test=function(t){return t+=\"\",i.regex.isHex.test(t)||i.regex.isRgb.test(t)},i.Color.isRgb=function(t){return t&&\"number\"==typeof t.r&&\"number\"==typeof t.g&&\"number\"==typeof t.b},i.Color.isColor=function(t){return i.Color.isRgb(t)||i.Color.test(t)},i.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},i.extend(i.Array,{morph:function(t){if(this.destination=this.parse(t),this.value.length!=this.destination.length){for(var e=this.value[this.value.length-1],i=this.destination[this.destination.length-1];this.value.length>this.destination.length;)this.destination.push(i);for(;this.value.length<this.destination.length;)this.value.push(e)}return this},settle:function(){for(var t=0,e=this.value.length,i=[];t<e;t++)-1==i.indexOf(this.value[t])&&i.push(this.value[t]);return this.value=i},at:function(t){if(!this.destination)return this;for(var e=0,s=this.value.length,a=[];e<s;e++)a.push(this.value[e]+(this.destination[e]-this.value[e])*t);return new i.Array(a)},toString:function(){return this.value.join(\" \")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)},split:function(t){return t.trim().split(i.regex.delimiter).map(parseFloat)},reverse:function(){return this.value.reverse(),this},clone:function(){var t=new this.constructor;return t.value=function t(e){var i=e.slice(0);for(var s=i.length;s--;)Array.isArray(i[s])&&(i[s]=t(i[s]));return i}(this.value),t}}),i.PointArray=function(t,e){i.Array.call(this,t,e||[[0,0]])},i.PointArray.prototype=new i.Array,i.PointArray.prototype.constructor=i.PointArray,i.extend(i.PointArray,{toString:function(){for(var t=0,e=this.value.length,i=[];t<e;t++)i.push(this.value[t].join(\",\"));return i.join(\" \")},toLine:function(){return{x1:this.value[0][0],y1:this.value[0][1],x2:this.value[1][0],y2:this.value[1][1]}},at:function(t){if(!this.destination)return this;for(var e=0,s=this.value.length,a=[];e<s;e++)a.push([this.value[e][0]+(this.destination[e][0]-this.value[e][0])*t,this.value[e][1]+(this.destination[e][1]-this.value[e][1])*t]);return new i.PointArray(a)},parse:function(t){var e=[];if(t=t.valueOf(),Array.isArray(t)){if(Array.isArray(t[0]))return t.map(function(t){return t.slice()});if(null!=t[0].x)return t.map(function(t){return[t.x,t.y]})}else t=t.trim().split(i.regex.delimiter).map(parseFloat);t.length%2!=0&&t.pop();for(var s=0,a=t.length;s<a;s+=2)e.push([t[s],t[s+1]]);return e},move:function(t,e){var i=this.bbox();if(t-=i.x,e-=i.y,!isNaN(t)&&!isNaN(e))for(var s=this.value.length-1;s>=0;s--)this.value[s]=[this.value[s][0]+t,this.value[s][1]+e];return this},size:function(t,e){var i,s=this.bbox();for(i=this.value.length-1;i>=0;i--)s.width&&(this.value[i][0]=(this.value[i][0]-s.x)*t/s.width+s.x),s.height&&(this.value[i][1]=(this.value[i][1]-s.y)*e/s.height+s.y);return this},bbox:function(){return i.parser.draw||i.prepare(),i.parser.poly.setAttribute(\"points\",this.toString()),i.parser.poly.getBBox()}});for(var s={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],[\"M\",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],[\"L\",t[0],t[1]]},H:function(t,e){return e.x=t[0],[\"H\",t[0]]},V:function(t,e){return e.y=t[0],[\"V\",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],[\"C\",t[0],t[1],t[2],t[3],t[4],t[5]]},S:function(t,e){return e.x=t[2],e.y=t[3],[\"S\",t[0],t[1],t[2],t[3]]},Q:function(t,e){return e.x=t[2],e.y=t[3],[\"Q\",t[0],t[1],t[2],t[3]]},T:function(t,e){return e.x=t[0],e.y=t[1],[\"T\",t[0],t[1]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,[\"Z\"]},A:function(t,e){return e.x=t[5],e.y=t[6],[\"A\",t[0],t[1],t[2],t[3],t[4],t[5],t[6]]}},a=\"mlhvqtcsaz\".split(\"\"),r=0,n=a.length;r<n;++r)s[a[r]]=function(t){return function(e,i,a){if(\"H\"==t)e[0]=e[0]+i.x;else if(\"V\"==t)e[0]=e[0]+i.y;else if(\"A\"==t)e[5]=e[5]+i.x,e[6]=e[6]+i.y;else for(var r=0,n=e.length;r<n;++r)e[r]=e[r]+(r%2?i.y:i.x);return s[t](e,i,a)}}(a[r].toUpperCase());i.PathArray=function(t,e){i.Array.call(this,t,e||[[\"M\",0,0]])},i.PathArray.prototype=new i.Array,i.PathArray.prototype.constructor=i.PathArray,i.extend(i.PathArray,{toString:function(){return function(t){for(var e=0,i=t.length,s=\"\";e<i;e++)s+=t[e][0],null!=t[e][1]&&(s+=t[e][1],null!=t[e][2]&&(s+=\" \",s+=t[e][2],null!=t[e][3]&&(s+=\" \",s+=t[e][3],s+=\" \",s+=t[e][4],null!=t[e][5]&&(s+=\" \",s+=t[e][5],s+=\" \",s+=t[e][6],null!=t[e][7]&&(s+=\" \",s+=t[e][7])))));return s+\" \"}(this.value)},move:function(t,e){var i=this.bbox();if(t-=i.x,e-=i.y,!isNaN(t)&&!isNaN(e))for(var s,a=this.value.length-1;a>=0;a--)\"M\"==(s=this.value[a][0])||\"L\"==s||\"T\"==s?(this.value[a][1]+=t,this.value[a][2]+=e):\"H\"==s?this.value[a][1]+=t:\"V\"==s?this.value[a][1]+=e:\"C\"==s||\"S\"==s||\"Q\"==s?(this.value[a][1]+=t,this.value[a][2]+=e,this.value[a][3]+=t,this.value[a][4]+=e,\"C\"==s&&(this.value[a][5]+=t,this.value[a][6]+=e)):\"A\"==s&&(this.value[a][6]+=t,this.value[a][7]+=e);return this},size:function(t,e){var i,s,a=this.bbox();for(i=this.value.length-1;i>=0;i--)\"M\"==(s=this.value[i][0])||\"L\"==s||\"T\"==s?(this.value[i][1]=(this.value[i][1]-a.x)*t/a.width+a.x,this.value[i][2]=(this.value[i][2]-a.y)*e/a.height+a.y):\"H\"==s?this.value[i][1]=(this.value[i][1]-a.x)*t/a.width+a.x:\"V\"==s?this.value[i][1]=(this.value[i][1]-a.y)*e/a.height+a.y:\"C\"==s||\"S\"==s||\"Q\"==s?(this.value[i][1]=(this.value[i][1]-a.x)*t/a.width+a.x,this.value[i][2]=(this.value[i][2]-a.y)*e/a.height+a.y,this.value[i][3]=(this.value[i][3]-a.x)*t/a.width+a.x,this.value[i][4]=(this.value[i][4]-a.y)*e/a.height+a.y,\"C\"==s&&(this.value[i][5]=(this.value[i][5]-a.x)*t/a.width+a.x,this.value[i][6]=(this.value[i][6]-a.y)*e/a.height+a.y)):\"A\"==s&&(this.value[i][1]=this.value[i][1]*t/a.width,this.value[i][2]=this.value[i][2]*e/a.height,this.value[i][6]=(this.value[i][6]-a.x)*t/a.width+a.x,this.value[i][7]=(this.value[i][7]-a.y)*e/a.height+a.y);return this},equalCommands:function(t){var e,s,a;for(t=new i.PathArray(t),a=this.value.length===t.value.length,e=0,s=this.value.length;a&&e<s;e++)a=this.value[e][0]===t.value[e][0];return a},morph:function(t){return t=new i.PathArray(t),this.equalCommands(t)?this.destination=t:this.destination=null,this},at:function(t){if(!this.destination)return this;var e,s,a,r,n=this.value,o=this.destination.value,l=[],h=new i.PathArray;for(e=0,s=n.length;e<s;e++){for(l[e]=[n[e][0]],a=1,r=n[e].length;a<r;a++)l[e][a]=n[e][a]+(o[e][a]-n[e][a])*t;\"A\"===l[e][0]&&(l[e][4]=+(0!=l[e][4]),l[e][5]=+(0!=l[e][5]))}return h.value=l,h},parse:function(t){if(t instanceof i.PathArray)return t.valueOf();var e,a={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};t=\"string\"==typeof t?t.replace(i.regex.numbersWithDots,l).replace(i.regex.pathLetters,\" $& \").replace(i.regex.hyphen,\"$1 -\").trim().split(i.regex.delimiter):t.reduce(function(t,e){return[].concat.call(t,e)},[]);var r=[],n=new i.Point,o=new i.Point,h=0,c=t.length;do{i.regex.isPathLetter.test(t[h])?(e=t[h],++h):\"M\"==e?e=\"L\":\"m\"==e&&(e=\"l\"),r.push(s[e].call(null,t.slice(h,h+=a[e.toUpperCase()]).map(parseFloat),n,o))}while(c>h);return r},bbox:function(){return i.parser.draw||i.prepare(),i.parser.path.setAttribute(\"d\",this.toString()),i.parser.path.getBBox()}}),i.Number=i.invent({create:function(t,e){this.value=0,this.unit=e||\"\",\"number\"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-3.4e38:3.4e38:\"string\"==typeof t?(e=t.match(i.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),\"%\"==e[5]?this.value/=100:\"s\"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof i.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return(\"%\"==this.unit?~~(1e8*this.value)/1e6:\"s\"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new i.Number(t),new i.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new i.Number(t),new i.Number(this-t,this.unit||t.unit)},times:function(t){return t=new i.Number(t),new i.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new i.Number(t),new i.Number(this/t,this.unit||t.unit)},to:function(t){var e=new i.Number(this);return\"string\"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new i.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new i.Number(this.destination).minus(this).times(t).plus(this):this}}}),i.Element=i.invent({create:function(t){this._stroke=i.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute(\"stroke\")||this._stroke)},extend:{x:function(t){return this.attr(\"x\",t)},y:function(t){return this.attr(\"y\",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr(\"width\",t)},height:function(t){return this.attr(\"height\",t)},size:function(t,e){var s=u(this,t,e);return this.width(new i.Number(s.width)).height(new i.Number(s.height))},clone:function(t){this.writeDataToDom();var e=x(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr(\"id\",t)},inside:function(t,e){var i=this.bbox();return t>i.x&&e>i.y&&t<i.x+i.width&&e<i.y+i.height},show:function(){return this.style(\"display\",\"\")},hide:function(){return this.style(\"display\",\"none\")},visible:function(){return\"none\"!=this.style(\"display\")},toString:function(){return this.attr(\"id\")},classes:function(){var t=this.attr(\"class\");return null==t?[]:t.trim().split(i.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr(\"class\",e.join(\" \"))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr(\"class\",this.classes().filter(function(e){return e!=t}).join(\" \")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return i.get(this.attr(t))},parent:function(e){var s=this;if(!s.node.parentNode)return null;if(s=i.adopt(s.node.parentNode),!e)return s;for(;s&&s.node instanceof t.SVGElement;){if(\"string\"==typeof e?s.matches(e):s instanceof e)return s;if(!s.node.parentNode||\"#document\"==s.node.parentNode.nodeName)return null;s=i.adopt(s.node.parentNode)}},doc:function(){return this instanceof i.Doc?this:this.parent(i.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var s=e.createElement(\"svg\");if(!(t&&this instanceof i.Parent))return s.appendChild(t=e.createElement(\"svg\")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),s.innerHTML.replace(/^<svg>/,\"\").replace(/<\\/svg>$/,\"\");s.innerHTML=\"<svg>\"+t.replace(/\\n/,\"\").replace(/<([\\w:-]+)([^<]+?)\\/>/g,\"<$1$2></$1>\")+\"</svg>\";for(var a=0,r=s.firstChild.childNodes.length;a<r;a++)this.node.appendChild(s.firstChild.firstChild);return this},writeDataToDom:function(){(this.each||this.lines)&&(this.each?this:this.lines()).each(function(){this.writeDataToDom()});return this.node.removeAttribute(\"svgjs:data\"),Object.keys(this.dom).length&&this.node.setAttribute(\"svgjs:data\",JSON.stringify(this.dom)),this},setData:function(t){return this.dom=t,this},is:function(t){return function(t,e){return t instanceof e}(this,t)}}}),i.easing={\"-\":function(t){return t},\"<>\":function(t){return-Math.cos(t*Math.PI)/2+.5},\">\":function(t){return Math.sin(t*Math.PI/2)},\"<\":function(t){return 1-Math.cos(t*Math.PI/2)}},i.morph=function(t){return function(e,s){return new i.MorphObj(e,s).at(t)}},i.Situation=i.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new i.Number(t.duration).valueOf(),this.delay=new i.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),i.FX=i.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,s){\"object\"===_typeof(t)&&(e=t.ease,s=t.delay,t=t.duration);var a=new i.Situation({duration:t||1e3,delay:s||0,ease:i.easing[e||\"-\"]||e});return this.queue(a),this},delay:function(t){var e=new i.Situation({duration:t,delay:0,ease:i.easing[\"-\"]});return this.queue(e)},target:function(t){return t&&t instanceof i.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return(\"function\"==typeof t||t instanceof i.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof i.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e,s,a=this.situation;if(a.init)return this;for(t in a.animations)for(s=this.target()[t](),Array.isArray(s)||(s=[s]),Array.isArray(a.animations[t])||(a.animations[t]=[a.animations[t]]),e=s.length;e--;)a.animations[t][e]instanceof i.Number&&(s[e]=new i.Number(s[e])),a.animations[t][e]=s[e].morph(a.animations[t][e]);for(t in a.attrs)a.attrs[t]=new i.MorphObj(this.target().attr(t),a.attrs[t]);for(t in a.styles)a.styles[t]=new i.MorphObj(this.target().style(t),a.styles[t]);return a.initialTransformation=this.target().matrixify(),a.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},reset:function(){if(this.situation){var t=this.situation;this.stop(),this.situation=t,this.atStart()}return this},finish:function(){for(this.stop(!0,!1);this.dequeue().situation&&this.stop(!0,!1););return this.clearQueue().clearCurrent(),this},atStart:function(){return this.at(0,!0)},atEnd:function(){return!0===this.situation.loops&&(this.situation.loops=this.situation.loop+1),\"number\"==typeof this.situation.loops?this.at(this.situation.loops,!0):this.at(1,!0)},at:function(t,e){var i=this.situation.duration/this._speed;return this.absPos=t,e||(this.situation.reversed&&(this.absPos=1-this.absPos),this.absPos+=this.situation.loop),this.situation.start=+new Date-this.absPos*i,this.situation.finish=this.situation.start+i,this.step(!0)},speed:function(t){return 0===t?this.pause():t?(this._speed=t,this.at(this.absPos,!0)):this._speed},loop:function(t,e){var i=this.last();return i.loops=null==t||t,i.loop=0,e&&(i.reversing=!0),this},pause:function(){return this.paused=!0,this.stopAnimFrame(),this},play:function(){return this.paused?(this.paused=!1,this.at(this.absPos,!0)):this},reverse:function(t){var e=this.last();return e.reversed=void 0===t?!e.reversed:t,this},progress:function(t){return t?this.situation.ease(this.pos):this.pos},after:function(t){var e=this.last();return this.target().on(\"finished.fx\",function i(s){s.detail.situation==e&&(t.call(this,e),this.off(\"finished.fx\",i))}),this._callStart()},during:function(t){var e=this.last(),s=function(s){s.detail.situation==e&&t.call(this,s.detail.pos,i.morph(s.detail.pos),s.detail.eased,e)};return this.target().off(\"during.fx\",s).on(\"during.fx\",s),this.after(function(){this.off(\"during.fx\",s)}),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off(\"allfinished.fx\",e)};return this.target().off(\"allfinished.fx\",e).on(\"allfinished.fx\",e),this._callStart()},duringAll:function(t){var e=function(e){t.call(this,e.detail.pos,i.morph(e.detail.pos),e.detail.eased,e.detail.situation)};return this.target().off(\"during.fx\",e).on(\"during.fx\",e),this.afterAll(function(){this.off(\"during.fx\",e)}),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||\"animations\"][t]=e,this._callStart()},step:function(t){var e,i,s;(t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops)?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||i<this.situation.loops?(this.pos=e-i,s=this.situation.loop,this.situation.loop=i):(this.absPos=this.situation.loops,this.pos=1,s=this.situation.loop-1,this.situation.loop=this.situation.loops),this.situation.reversing&&(this.situation.reversed=this.situation.reversed!=Boolean((this.situation.loop-s)%2))):(this.absPos=Math.min(this.absPos,1),this.pos=this.absPos);this.pos<0&&(this.pos=0),this.situation.reversed&&(this.pos=1-this.pos);var a=this.situation.ease(this.pos);for(var r in this.situation.once)r>this.lastPos&&r<=a&&(this.situation.once[r].call(this.target(),this.pos,a),delete this.situation.once[r]);return this.active&&this.target().fire(\"during\",{pos:this.pos,eased:a,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire(\"finished\",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire(\"allfinished\"),this.situations.length||(this.target().off(\".fx\"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=a,this):this},eachAt:function(){var t,e,s,a=this,r=this.target(),n=this.situation;for(t in n.animations)s=[].concat(n.animations[t]).map(function(t){return\"string\"!=typeof t&&t.at?t.at(n.ease(a.pos),a.pos):t}),r[t].apply(r,s);for(t in n.attrs)s=[t].concat(n.attrs[t]).map(function(t){return\"string\"!=typeof t&&t.at?t.at(n.ease(a.pos),a.pos):t}),r.attr.apply(r,s);for(t in n.styles)s=[t].concat(n.styles[t]).map(function(t){return\"string\"!=typeof t&&t.at?t.at(n.ease(a.pos),a.pos):t}),r.style.apply(r,s);if(n.transforms.length){for(s=n.initialTransformation,t=0,e=n.transforms.length;t<e;t++){var o=n.transforms[t];o instanceof i.Matrix?s=o.relative?s.multiply((new i.Matrix).morph(o).at(n.ease(this.pos))):s.morph(o).at(n.ease(this.pos)):(o.relative||o.undo(s.extract()),s=s.multiply(o.at(n.ease(this.pos))))}r.matrix(s)}return this},once:function(t,e,i){var s=this.last();return i||(t=s.ease(t)),s.once[t]=e,this},_callStart:function(){return setTimeout(function(){this.start()}.bind(this),0),this}},parent:i.Element,construct:{animate:function(t,e,s){return(this.fx||(this.fx=new i.FX(this))).animate(t,e,s)},delay:function(t){return(this.fx||(this.fx=new i.FX(this))).delay(t)},stop:function(t,e){return this.fx&&this.fx.stop(t,e),this},finish:function(){return this.fx&&this.fx.finish(),this},pause:function(){return this.fx&&this.fx.pause(),this},play:function(){return this.fx&&this.fx.play(),this},speed:function(t){if(this.fx){if(null==t)return this.fx.speed();this.fx.speed(t)}return this}}}),i.MorphObj=i.invent({create:function(t,e){return i.Color.isColor(e)?new i.Color(t).morph(e):i.regex.delimiter.test(t)?i.regex.pathLetters.test(t)?new i.PathArray(t).morph(e):new i.Array(t).morph(e):i.regex.numberAndUnit.test(e)?new i.Number(t).morph(e):(this.value=t,void(this.destination=e))},extend:{at:function(t,e){return e<1?this.value:this.destination},valueOf:function(){return this.value}}}),i.extend(i.FX,{attr:function(t,e,i){if(\"object\"===_typeof(t))for(var s in t)this.attr(s,t[s]);else this.add(t,e,\"attrs\");return this},style:function(t,e){if(\"object\"===_typeof(t))for(var i in t)this.style(i,t[i]);else this.add(t,e,\"styles\");return this},x:function(t,e){if(this.target()instanceof i.G)return this.transform({x:t},e),this;var s=new i.Number(t);return s.relative=e,this.add(\"x\",s)},y:function(t,e){if(this.target()instanceof i.G)return this.transform({y:t},e),this;var s=new i.Number(t);return s.relative=e,this.add(\"y\",s)},cx:function(t){return this.add(\"cx\",new i.Number(t))},cy:function(t){return this.add(\"cy\",new i.Number(t))},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},size:function(t,e){var s;this.target()instanceof i.Text?this.attr(\"font-size\",t):(t&&e||(s=this.target().bbox()),t||(t=s.width/s.height*e),e||(e=s.height/s.width*t),this.add(\"width\",new i.Number(t)).add(\"height\",new i.Number(e)));return this},width:function(t){return this.add(\"width\",new i.Number(t))},height:function(t){return this.add(\"height\",new i.Number(t))},plot:function(t,e,i,s){return 4==arguments.length?this.plot([t,e,i,s]):this.add(\"plot\",new(this.target().morphArray)(t))},leading:function(t){return this.target().leading?this.add(\"leading\",new i.Number(t)):this},viewbox:function(t,e,s,a){return this.target()instanceof i.Container&&this.add(\"viewbox\",new i.ViewBox(t,e,s,a)),this},update:function(t){if(this.target()instanceof i.Stop){if(\"number\"==typeof t||t instanceof i.Number)return this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]});null!=t.opacity&&this.attr(\"stop-opacity\",t.opacity),null!=t.color&&this.attr(\"stop-color\",t.color),null!=t.offset&&this.attr(\"offset\",t.offset)}return this}}),i.Box=i.invent({create:function(t,e,s,a){if(!(\"object\"!==_typeof(t)||t instanceof i.Element))return i.Box.call(this,null!=t.left?t.left:t.x,null!=t.top?t.top:t.y,t.width,t.height);4==arguments.length&&(this.x=t,this.y=e,this.width=s,this.height=a),m(this)},extend:{merge:function(t){var e=new this.constructor;return e.x=Math.min(this.x,t.x),e.y=Math.min(this.y,t.y),e.width=Math.max(this.x+this.width,t.x+t.width)-e.x,e.height=Math.max(this.y+this.height,t.y+t.height)-e.y,m(e)},transform:function(t){var e,s=1/0,a=-1/0,r=1/0,n=-1/0;return[new i.Point(this.x,this.y),new i.Point(this.x2,this.y),new i.Point(this.x,this.y2),new i.Point(this.x2,this.y2)].forEach(function(e){e=e.transform(t),s=Math.min(s,e.x),a=Math.max(a,e.x),r=Math.min(r,e.y),n=Math.max(n,e.y)}),(e=new this.constructor).x=s,e.width=a-s,e.y=r,e.height=n-r,m(e),e}}}),i.BBox=i.invent({create:function(t){if(i.Box.apply(this,[].slice.call(arguments)),t instanceof i.Element){var s;try{if(!e.documentElement.contains){for(var a=t.node;a.parentNode;)a=a.parentNode;if(a!=e)throw new Error(\"Element not in the dom\")}s=t.node.getBBox()}catch(e){if(t instanceof i.Shape){i.parser.draw||i.prepare();var r=t.clone(i.parser.draw.instance).show();s=r.node.getBBox(),r.remove()}else s={x:t.node.clientLeft,y:t.node.clientTop,width:t.node.clientWidth,height:t.node.clientHeight}}i.Box.call(this,s)}},inherit:i.Box,parent:i.Element,construct:{bbox:function(){return new i.BBox(this)}}}),i.BBox.prototype.constructor=i.BBox,i.extend(i.Element,{tbox:function(){return console.warn(\"Use of TBox is deprecated and mapped to RBox. Use .rbox() instead.\"),this.rbox(this.doc())}}),i.RBox=i.invent({create:function(t){i.Box.apply(this,[].slice.call(arguments)),t instanceof i.Element&&i.Box.call(this,t.node.getBoundingClientRect())},inherit:i.Box,parent:i.Element,extend:{addOffset:function(){return this.x+=t.pageXOffset,this.y+=t.pageYOffset,this}},construct:{rbox:function(t){return t?new i.RBox(this).transform(t.screenCTM().inverse()):new i.RBox(this).addOffset()}}}),i.RBox.prototype.constructor=i.RBox,i.Matrix=i.invent({create:function(t){var e,s=f([1,0,0,1,0,0]);for(t=t instanceof i.Element?t.matrixify():\"string\"==typeof t?f(t.split(i.regex.delimiter).map(parseFloat)):6==arguments.length?f([].slice.call(arguments)):Array.isArray(t)?f(t):\"object\"===_typeof(t)?t:s,e=v.length-1;e>=0;--e)this[v[e]]=null!=t[v[e]]?t[v[e]]:s[v[e]]},extend:{extract:function(){var t=g(this,0,1),e=g(this,1,0),s=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(s*Math.PI/180)+this.f*Math.sin(s*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(s*Math.PI/180)+this.e*Math.sin(-s*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),skewX:-s,skewY:180/Math.PI*Math.atan2(e.y,e.x),scaleX:Math.sqrt(this.a*this.a+this.b*this.b),scaleY:Math.sqrt(this.c*this.c+this.d*this.d),rotation:s,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new i.Matrix(this)}},clone:function(){return new i.Matrix(this)},morph:function(t){return this.destination=new i.Matrix(t),this},at:function(t){return this.destination?new i.Matrix({a:this.a+(this.destination.a-this.a)*t,b:this.b+(this.destination.b-this.b)*t,c:this.c+(this.destination.c-this.c)*t,d:this.d+(this.destination.d-this.d)*t,e:this.e+(this.destination.e-this.e)*t,f:this.f+(this.destination.f-this.f)*t}):this},multiply:function(t){return new i.Matrix(this.native().multiply(function(t){t instanceof i.Matrix||(t=new i.Matrix(t));return t}(t).native()))},inverse:function(){return new i.Matrix(this.native().inverse())},translate:function(t,e){return new i.Matrix(this.native().translate(t||0,e||0))},scale:function(t,e,s,a){return 1==arguments.length?e=t:3==arguments.length&&(a=s,s=e,e=t),this.around(s,a,new i.Matrix(t,0,0,e,0,0))},rotate:function(t,e,s){return t=i.utils.radians(t),this.around(e,s,new i.Matrix(Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0))},flip:function(t,e){return\"x\"==t?this.scale(-1,1,e,0):\"y\"==t?this.scale(1,-1,0,e):this.scale(-1,-1,t,null!=e?e:t)},skew:function(t,e,s,a){return 1==arguments.length?e=t:3==arguments.length&&(a=s,s=e,e=t),t=i.utils.radians(t),e=i.utils.radians(e),this.around(s,a,new i.Matrix(1,Math.tan(e),Math.tan(t),1,0,0))},skewX:function(t,e,i){return this.skew(t,0,e,i)},skewY:function(t,e,i){return this.skew(0,t,e,i)},around:function(t,e,s){return this.multiply(new i.Matrix(1,0,0,1,t||0,e||0)).multiply(s).multiply(new i.Matrix(1,0,0,1,-t||0,-e||0))},native:function(){for(var t=i.parser.native.createSVGMatrix(),e=v.length-1;e>=0;e--)t[v[e]]=this[v[e]];return t},toString:function(){return\"matrix(\"+b(this.a)+\",\"+b(this.b)+\",\"+b(this.c)+\",\"+b(this.d)+\",\"+b(this.e)+\",\"+b(this.f)+\")\"}},parent:i.Element,construct:{ctm:function(){return new i.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof i.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new i.Matrix(e)}return new i.Matrix(this.node.getScreenCTM())}}}),i.Point=i.invent({create:function(t,e){var i;i=Array.isArray(t)?{x:t[0],y:t[1]}:\"object\"===_typeof(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=i.x,this.y=i.y},extend:{clone:function(){return new i.Point(this)},morph:function(t,e){return this.destination=new i.Point(t,e),this},at:function(t){return this.destination?new i.Point({x:this.x+(this.destination.x-this.x)*t,y:this.y+(this.destination.y-this.y)*t}):this},native:function(){var t=i.parser.native.createSVGPoint();return t.x=this.x,t.y=this.y,t},transform:function(t){return new i.Point(this.native().matrixTransform(t.native()))}}}),i.extend(i.Element,{point:function(t,e){return new i.Point(t,e).transform(this.screenCTM().inverse())}}),i.extend(i.Element,{attr:function(t,e,s){if(null==t){for(t={},s=(e=this.node.attributes).length-1;s>=0;s--)t[e[s].nodeName]=i.regex.isNumber.test(e[s].nodeValue)?parseFloat(e[s].nodeValue):e[s].nodeValue;return t}if(\"object\"===_typeof(t))for(e in t)this.attr(e,t[e]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?i.defaults.attrs[t]:i.regex.isNumber.test(e)?parseFloat(e):e;\"stroke-width\"==t?this.attr(\"stroke\",parseFloat(e)>0?this._stroke:null):\"stroke\"==t&&(this._stroke=e),\"fill\"!=t&&\"stroke\"!=t||(i.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof i.Image&&(e=this.doc().defs().pattern(0,0,function(){this.add(e)}))),\"number\"==typeof e?e=new i.Number(e):i.Color.isColor(e)?e=new i.Color(e):Array.isArray(e)&&(e=new i.Array(e)),\"leading\"==t?this.leading&&this.leading(e):\"string\"==typeof s?this.node.setAttributeNS(s,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||\"font-size\"!=t&&\"x\"!=t||this.rebuild(t,e)}return this}}),i.extend(i.Element,{transform:function(t,e){var s,a;if(\"object\"!==_typeof(t))return s=new i.Matrix(this).extract(),\"string\"==typeof t?s[t]:s;if(s=new i.Matrix(this),e=!!e||!!t.relative,null!=t.a)s=e?s.multiply(new i.Matrix(t)):new i.Matrix(t);else if(null!=t.rotation)p(t,this),s=e?s.rotate(t.rotation,t.cx,t.cy):s.rotate(t.rotation-s.extract().rotation,t.cx,t.cy);else if(null!=t.scale||null!=t.scaleX||null!=t.scaleY){if(p(t,this),t.scaleX=null!=t.scale?t.scale:null!=t.scaleX?t.scaleX:1,t.scaleY=null!=t.scale?t.scale:null!=t.scaleY?t.scaleY:1,!e){var r=s.extract();t.scaleX=1*t.scaleX/r.scaleX,t.scaleY=1*t.scaleY/r.scaleY}s=s.scale(t.scaleX,t.scaleY,t.cx,t.cy)}else if(null!=t.skew||null!=t.skewX||null!=t.skewY){if(p(t,this),t.skewX=null!=t.skew?t.skew:null!=t.skewX?t.skewX:0,t.skewY=null!=t.skew?t.skew:null!=t.skewY?t.skewY:0,!e){r=s.extract();s=s.multiply((new i.Matrix).skew(r.skewX,r.skewY,t.cx,t.cy).inverse())}s=s.skew(t.skewX,t.skewY,t.cx,t.cy)}else t.flip?(\"x\"==t.flip||\"y\"==t.flip?t.offset=null==t.offset?this.bbox()[\"c\"+t.flip]:t.offset:null==t.offset?(a=this.bbox(),t.flip=a.cx,t.offset=a.cy):t.flip=t.offset,s=(new i.Matrix).flip(t.flip,t.offset)):null==t.x&&null==t.y||(e?s=s.translate(t.x,t.y):(null!=t.x&&(s.e=t.x),null!=t.y&&(s.f=t.y)));return this.attr(\"transform\",s)}}),i.extend(i.FX,{transform:function(t,e){var s,a,r=this.target();return\"object\"!==_typeof(t)?(s=new i.Matrix(r).extract(),\"string\"==typeof t?s[t]:s):(e=!!e||!!t.relative,null!=t.a?s=new i.Matrix(t):null!=t.rotation?(p(t,r),s=new i.Rotate(t.rotation,t.cx,t.cy)):null!=t.scale||null!=t.scaleX||null!=t.scaleY?(p(t,r),t.scaleX=null!=t.scale?t.scale:null!=t.scaleX?t.scaleX:1,t.scaleY=null!=t.scale?t.scale:null!=t.scaleY?t.scaleY:1,s=new i.Scale(t.scaleX,t.scaleY,t.cx,t.cy)):null!=t.skewX||null!=t.skewY?(p(t,r),t.skewX=null!=t.skewX?t.skewX:0,t.skewY=null!=t.skewY?t.skewY:0,s=new i.Skew(t.skewX,t.skewY,t.cx,t.cy)):t.flip?(\"x\"==t.flip||\"y\"==t.flip?t.offset=null==t.offset?r.bbox()[\"c\"+t.flip]:t.offset:null==t.offset?(a=r.bbox(),t.flip=a.cx,t.offset=a.cy):t.flip=t.offset,s=(new i.Matrix).flip(t.flip,t.offset)):null==t.x&&null==t.y||(s=new i.Translate(t.x,t.y)),s?(s.relative=e,this.last().transforms.push(s),this._callStart()):this)}}),i.extend(i.Element,{untransform:function(){return this.attr(\"transform\",null)},matrixify:function(){return(this.attr(\"transform\")||\"\").split(i.regex.transforms).slice(0,-1).map(function(t){var e=t.trim().split(\"(\");return[e[0],e[1].split(i.regex.delimiter).map(function(t){return parseFloat(t)})]}).reduce(function(t,e){return\"matrix\"==e[0]?t.multiply(f(e[1])):t[e[0]].apply(t,e[1])},new i.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),i.Transformation=i.invent({create:function(t,e){if(arguments.length>1&&\"boolean\"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var i=0,s=this.arguments.length;i<s;++i)this[this.arguments[i]]=t[i];else if(\"object\"===_typeof(t))for(i=0,s=this.arguments.length;i<s;++i)this[this.arguments[i]]=t[this.arguments[i]];this.inversed=!1,!0===e&&(this.inversed=!0)},extend:{arguments:[],method:\"\",at:function(t){for(var e=[],s=0,a=this.arguments.length;s<a;++s)e.push(this[this.arguments[s]]);var r=this._undo||new i.Matrix;return r=(new i.Matrix).morph(i.Matrix.prototype[this.method].apply(r,e)).at(t),this.inversed?r.inverse():r},undo:function(t){for(var e=0,s=this.arguments.length;e<s;++e)t[this.arguments[e]]=void 0===this[this.arguments[e]]?0:t[this.arguments[e]];return t.cx=this.cx,t.cy=this.cy,this._undo=new(i[c(this.method)])(t,!0).at(1),this}}}),i.Translate=i.invent({parent:i.Matrix,inherit:i.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:[\"transformedX\",\"transformedY\"],method:\"translate\"}}),i.Rotate=i.invent({parent:i.Matrix,inherit:i.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:[\"rotation\",\"cx\",\"cy\"],method:\"rotate\",at:function(t){var e=(new i.Matrix).rotate((new i.Number).morph(this.rotation-(this._undo?this._undo.rotation:0)).at(t),this.cx,this.cy);return this.inversed?e.inverse():e},undo:function(t){return this._undo=t,this}}}),i.Scale=i.invent({parent:i.Matrix,inherit:i.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:[\"scaleX\",\"scaleY\",\"cx\",\"cy\"],method:\"scale\"}}),i.Skew=i.invent({parent:i.Matrix,inherit:i.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:[\"skewX\",\"skewY\",\"cx\",\"cy\"],method:\"skew\"}}),i.extend(i.Element,{style:function(t,e){if(0==arguments.length)return this.node.style.cssText||\"\";if(arguments.length<2)if(\"object\"===_typeof(t))for(e in t)this.style(e,t[e]);else{if(!i.regex.isCss.test(t))return this.node.style[h(t)];for(t=t.split(/\\s*;\\s*/).filter(function(t){return!!t}).map(function(t){return t.split(/\\s*:\\s*/)});e=t.pop();)this.style(e[0],e[1])}else this.node.style[h(t)]=null===e||i.regex.isBlank.test(e)?\"\":e;return this}}),i.Parent=i.invent({create:function(t){this.constructor.call(this,t)},inherit:i.Element,extend:{children:function(){return i.utils.map(i.utils.filterSVGElements(this.node.childNodes),function(t){return i.adopt(t)})},add:function(t,e){return null==e?this.node.appendChild(t.node):t.node!=this.node.childNodes[e]&&this.node.insertBefore(t.node,this.node.childNodes[e]),this},put:function(t,e){return this.add(t,e),t},has:function(t){return this.index(t)>=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return i.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){var s,a,r=this.children();for(s=0,a=r.length;s<a;s++)r[s]instanceof i.Element&&t.apply(r[s],[s,r]),e&&r[s]instanceof i.Container&&r[s].each(t,e);return this},removeElement:function(t){return this.node.removeChild(t.node),this},clear:function(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return delete this._defs,this},defs:function(){return this.doc().defs()}}}),i.extend(i.Parent,{ungroup:function(t,e){return 0===e||this instanceof i.Defs||this.node==i.parser.draw?this:(t=t||(this instanceof i.Doc?this:this.parent(i.Parent)),e=e||1/0,this.each(function(){return this instanceof i.Defs?this:this instanceof i.Parent?this.ungroup(t,e-1):this.toParent(t)}),this.node.firstChild||this.remove(),this)},flatten:function(t,e){return this.ungroup(t,e)}}),i.Container=i.invent({create:function(t){this.constructor.call(this,t)},inherit:i.Parent}),i.ViewBox=i.invent({create:function(t){var e,s,a,r,n,o,l,h=1,c=1,d=/[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?/gi;if(t instanceof i.Element){for(o=t,l=t,n=(t.attr(\"viewBox\")||\"\").match(d),t.bbox,a=new i.Number(t.width()),r=new i.Number(t.height());\"%\"==a.unit;)h*=a.value,a=new i.Number(o instanceof i.Doc?o.parent().offsetWidth:o.parent().width()),o=o.parent();for(;\"%\"==r.unit;)c*=r.value,r=new i.Number(l instanceof i.Doc?l.parent().offsetHeight:l.parent().height()),l=l.parent();this.x=0,this.y=0,this.width=a*h,this.height=r*c,this.zoom=1,n&&(e=parseFloat(n[0]),s=parseFloat(n[1]),a=parseFloat(n[2]),r=parseFloat(n[3]),this.zoom=this.width/this.height>a/r?this.height/r:this.width/a,this.x=e,this.y=s,this.width=a,this.height=r)}else t=\"string\"==typeof t?t.match(d).map(function(t){return parseFloat(t)}):Array.isArray(t)?t:\"object\"===_typeof(t)?[t.x,t.y,t.width,t.height]:4==arguments.length?[].slice.call(arguments):[0,0,0,0],this.x=t[0],this.y=t[1],this.width=t[2],this.height=t[3]},extend:{toString:function(){return this.x+\" \"+this.y+\" \"+this.width+\" \"+this.height},morph:function(t,e,s,a){return this.destination=new i.ViewBox(t,e,s,a),this},at:function(t){return this.destination?new i.ViewBox([this.x+(this.destination.x-this.x)*t,this.y+(this.destination.y-this.y)*t,this.width+(this.destination.width-this.width)*t,this.height+(this.destination.height-this.height)*t]):this}},parent:i.Container,construct:{viewbox:function(t,e,s,a){return 0==arguments.length?new i.ViewBox(this):this.attr(\"viewBox\",new i.ViewBox(t,e,s,a))}}}),[\"click\",\"dblclick\",\"mousedown\",\"mouseup\",\"mouseover\",\"mouseout\",\"mousemove\",\"touchstart\",\"touchmove\",\"touchleave\",\"touchend\",\"touchcancel\"].forEach(function(t){i.Element.prototype[t]=function(e){return i.on(this.node,t,e),this}}),i.listeners=[],i.handlerMap=[],i.listenerId=0,i.on=function(t,e,s,a,r){var n=s.bind(a||t.instance||t),o=(i.handlerMap.indexOf(t)+1||i.handlerMap.push(t))-1,l=e.split(\".\")[0],h=e.split(\".\")[1]||\"*\";i.listeners[o]=i.listeners[o]||{},i.listeners[o][l]=i.listeners[o][l]||{},i.listeners[o][l][h]=i.listeners[o][l][h]||{},s._svgjsListenerId||(s._svgjsListenerId=++i.listenerId),i.listeners[o][l][h][s._svgjsListenerId]=n,t.addEventListener(l,n,r||!1)},i.off=function(t,e,s){var a=i.handlerMap.indexOf(t),r=e&&e.split(\".\")[0],n=e&&e.split(\".\")[1],o=\"\";if(-1!=a)if(s){if(\"function\"==typeof s&&(s=s._svgjsListenerId),!s)return;i.listeners[a][r]&&i.listeners[a][r][n||\"*\"]&&(t.removeEventListener(r,i.listeners[a][r][n||\"*\"][s],!1),delete i.listeners[a][r][n||\"*\"][s])}else if(n&&r){if(i.listeners[a][r]&&i.listeners[a][r][n]){for(s in i.listeners[a][r][n])i.off(t,[r,n].join(\".\"),s);delete i.listeners[a][r][n]}}else if(n)for(e in i.listeners[a])for(o in i.listeners[a][e])n===o&&i.off(t,[e,n].join(\".\"));else if(r){if(i.listeners[a][r]){for(o in i.listeners[a][r])i.off(t,[r,o].join(\".\"));delete i.listeners[a][r]}}else{for(e in i.listeners[a])i.off(t,e);delete i.listeners[a],delete i.handlerMap[a]}},i.extend(i.Element,{on:function(t,e,s,a){return i.on(this.node,t,e,s,a),this},off:function(t,e){return i.off(this.node,t,e),this},fire:function(e,s){return e instanceof t.Event?this.node.dispatchEvent(e):this.node.dispatchEvent(e=new i.CustomEvent(e,{detail:s,cancelable:!0})),this._event=e,this},event:function(){return this._event}}),i.Defs=i.invent({create:\"defs\",inherit:i.Container}),i.G=i.invent({create:\"g\",inherit:i.Container,extend:{x:function(t){return null==t?this.transform(\"x\"):this.transform({x:t-this.x()},!0)},y:function(t){return null==t?this.transform(\"y\"):this.transform({y:t-this.y()},!0)},cx:function(t){return null==t?this.gbox().cx:this.x(t-this.gbox().width/2)},cy:function(t){return null==t?this.gbox().cy:this.y(t-this.gbox().height/2)},gbox:function(){var t=this.bbox(),e=this.transform();return t.x+=e.x,t.x2+=e.x,t.cx+=e.x,t.y+=e.y,t.y2+=e.y,t.cy+=e.y,t}},construct:{group:function(){return this.put(new i.G)}}}),i.Doc=i.invent({create:function(t){t&&(\"svg\"==(t=\"string\"==typeof t?e.getElementById(t):t).nodeName?this.constructor.call(this,t):(this.constructor.call(this,i.create(\"svg\")),t.appendChild(this.node),this.size(\"100%\",\"100%\")),this.namespace().defs())},inherit:i.Container,extend:{namespace:function(){return this.attr({xmlns:i.ns,version:\"1.1\"}).attr(\"xmlns:xlink\",i.xlink,i.xmlns).attr(\"xmlns:svgjs\",i.svgjs,i.xmlns)},defs:function(){var t;this._defs||((t=this.node.getElementsByTagName(\"defs\")[0])?this._defs=i.adopt(t):this._defs=new i.Defs,this.node.appendChild(this._defs.node));return this._defs},parent:function(){return this.node.parentNode&&\"#document\"!=this.node.parentNode.nodeName?this.node.parentNode:null},spof:function(){var t=this.node.getScreenCTM();return t&&this.style(\"left\",-t.e%1+\"px\").style(\"top\",-t.f%1+\"px\"),this},remove:function(){return this.parent()&&this.parent().removeChild(this.node),this},clear:function(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return delete this._defs,i.parser.draw&&!i.parser.draw.parentNode&&this.node.appendChild(i.parser.draw),this},clone:function(t){this.writeDataToDom();var e=this.node,i=x(e.cloneNode(!0));return t?(t.node||t).appendChild(i.node):e.parentNode.insertBefore(i.node,e.nextSibling),i}}}),i.extend(i.Element,{siblings:function(){return this.parent().children()},position:function(){return this.parent().index(this)},next:function(){return this.siblings()[this.position()+1]},previous:function(){return this.siblings()[this.position()-1]},forward:function(){var t=this.position()+1,e=this.parent();return e.removeElement(this).add(this,t),e instanceof i.Doc&&e.node.appendChild(e.defs().node),this},backward:function(){var t=this.position();return t>0&&this.parent().removeElement(this).add(this,t-1),this},front:function(){var t=this.parent();return t.node.appendChild(this.node),t instanceof i.Doc&&t.node.appendChild(t.defs().node),this},back:function(){return this.position()>0&&this.parent().removeElement(this).add(this,0),this},before:function(t){t.remove();var e=this.position();return this.parent().add(t,e),this},after:function(t){t.remove();var e=this.position();return this.parent().add(t,e+1),this}}),i.Mask=i.invent({create:function(){this.constructor.call(this,i.create(\"mask\")),this.targets=[]},inherit:i.Container,extend:{remove:function(){for(var t=this.targets.length-1;t>=0;t--)this.targets[t]&&this.targets[t].unmask();return this.targets=[],i.Element.prototype.remove.call(this),this}},construct:{mask:function(){return this.defs().put(new i.Mask)}}}),i.extend(i.Element,{maskWith:function(t){return this.masker=t instanceof i.Mask?t:this.parent().mask().add(t),this.masker.targets.push(this),this.attr(\"mask\",'url(\"#'+this.masker.attr(\"id\")+'\")')},unmask:function(){return delete this.masker,this.attr(\"mask\",null)}}),i.ClipPath=i.invent({create:function(){this.constructor.call(this,i.create(\"clipPath\")),this.targets=[]},inherit:i.Container,extend:{remove:function(){for(var t=this.targets.length-1;t>=0;t--)this.targets[t]&&this.targets[t].unclip();return this.targets=[],this.parent().removeElement(this),this}},construct:{clip:function(){return this.defs().put(new i.ClipPath)}}}),i.extend(i.Element,{clipWith:function(t){return this.clipper=t instanceof i.ClipPath?t:this.parent().clip().add(t),this.clipper.targets.push(this),this.attr(\"clip-path\",'url(\"#'+this.clipper.attr(\"id\")+'\")')},unclip:function(){return delete this.clipper,this.attr(\"clip-path\",null)}}),i.Gradient=i.invent({create:function(t){this.constructor.call(this,i.create(t+\"Gradient\")),this.type=t},inherit:i.Container,extend:{at:function(t,e,s){return this.put(new i.Stop).update(t,e,s)},update:function(t){return this.clear(),\"function\"==typeof t&&t.call(this,this),this},fill:function(){return\"url(#\"+this.id()+\")\"},toString:function(){return this.fill()},attr:function(t,e,s){return\"transform\"==t&&(t=\"gradientTransform\"),i.Container.prototype.attr.call(this,t,e,s)}},construct:{gradient:function(t,e){return this.defs().gradient(t,e)}}}),i.extend(i.Gradient,i.FX,{from:function(t,e){return\"radial\"==(this._target||this).type?this.attr({fx:new i.Number(t),fy:new i.Number(e)}):this.attr({x1:new i.Number(t),y1:new i.Number(e)})},to:function(t,e){return\"radial\"==(this._target||this).type?this.attr({cx:new i.Number(t),cy:new i.Number(e)}):this.attr({x2:new i.Number(t),y2:new i.Number(e)})}}),i.extend(i.Defs,{gradient:function(t,e){return this.put(new i.Gradient(t)).update(e)}}),i.Stop=i.invent({create:\"stop\",inherit:i.Element,extend:{update:function(t){return(\"number\"==typeof t||t instanceof i.Number)&&(t={offset:arguments[0],color:arguments[1],opacity:arguments[2]}),null!=t.opacity&&this.attr(\"stop-opacity\",t.opacity),null!=t.color&&this.attr(\"stop-color\",t.color),null!=t.offset&&this.attr(\"offset\",new i.Number(t.offset)),this}}}),i.Pattern=i.invent({create:\"pattern\",inherit:i.Container,extend:{fill:function(){return\"url(#\"+this.id()+\")\"},update:function(t){return this.clear(),\"function\"==typeof t&&t.call(this,this),this},toString:function(){return this.fill()},attr:function(t,e,s){return\"transform\"==t&&(t=\"patternTransform\"),i.Container.prototype.attr.call(this,t,e,s)}},construct:{pattern:function(t,e,i){return this.defs().pattern(t,e,i)}}}),i.extend(i.Defs,{pattern:function(t,e,s){return this.put(new i.Pattern).update(s).attr({x:0,y:0,width:t,height:e,patternUnits:\"userSpaceOnUse\"})}}),i.Shape=i.invent({create:function(t){this.constructor.call(this,t)},inherit:i.Element}),i.Bare=i.invent({create:function(t,e){if(this.constructor.call(this,i.create(t)),e)for(var s in e.prototype)\"function\"==typeof e.prototype[s]&&(this[s]=e.prototype[s])},inherit:i.Element,extend:{words:function(t){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return this.node.appendChild(e.createTextNode(t)),this}}}),i.extend(i.Parent,{element:function(t,e){return this.put(new i.Bare(t,e))}}),i.Symbol=i.invent({create:\"symbol\",inherit:i.Container,construct:{symbol:function(){return this.put(new i.Symbol)}}}),i.Use=i.invent({create:\"use\",inherit:i.Shape,extend:{element:function(t,e){return this.attr(\"href\",(e||\"\")+\"#\"+t,i.xlink)}},construct:{use:function(t,e){return this.put(new i.Use).element(t,e)}}}),i.Rect=i.invent({create:\"rect\",inherit:i.Shape,construct:{rect:function(t,e){return this.put(new i.Rect).size(t,e)}}}),i.Circle=i.invent({create:\"circle\",inherit:i.Shape,construct:{circle:function(t){return this.put(new i.Circle).rx(new i.Number(t).divide(2)).move(0,0)}}}),i.extend(i.Circle,i.FX,{rx:function(t){return this.attr(\"r\",t)},ry:function(t){return this.rx(t)}}),i.Ellipse=i.invent({create:\"ellipse\",inherit:i.Shape,construct:{ellipse:function(t,e){return this.put(new i.Ellipse).size(t,e).move(0,0)}}}),i.extend(i.Ellipse,i.Rect,i.FX,{rx:function(t){return this.attr(\"rx\",t)},ry:function(t){return this.attr(\"ry\",t)}}),i.extend(i.Circle,i.Ellipse,{x:function(t){return null==t?this.cx()-this.rx():this.cx(t+this.rx())},y:function(t){return null==t?this.cy()-this.ry():this.cy(t+this.ry())},cx:function(t){return null==t?this.attr(\"cx\"):this.attr(\"cx\",t)},cy:function(t){return null==t?this.attr(\"cy\"):this.attr(\"cy\",t)},width:function(t){return null==t?2*this.rx():this.rx(new i.Number(t).divide(2))},height:function(t){return null==t?2*this.ry():this.ry(new i.Number(t).divide(2))},size:function(t,e){var s=u(this,t,e);return this.rx(new i.Number(s.width).divide(2)).ry(new i.Number(s.height).divide(2))}}),i.Line=i.invent({create:\"line\",inherit:i.Shape,extend:{array:function(){return new i.PointArray([[this.attr(\"x1\"),this.attr(\"y1\")],[this.attr(\"x2\"),this.attr(\"y2\")]])},plot:function(t,e,s,a){return null==t?this.array():(t=void 0!==e?{x1:t,y1:e,x2:s,y2:a}:new i.PointArray(t).toLine(),this.attr(t))},move:function(t,e){return this.attr(this.array().move(t,e).toLine())},size:function(t,e){var i=u(this,t,e);return this.attr(this.array().size(i.width,i.height).toLine())}},construct:{line:function(t,e,s,a){return i.Line.prototype.plot.apply(this.put(new i.Line),null!=t?[t,e,s,a]:[0,0,0,0])}}}),i.Polyline=i.invent({create:\"polyline\",inherit:i.Shape,construct:{polyline:function(t){return this.put(new i.Polyline).plot(t||new i.PointArray)}}}),i.Polygon=i.invent({create:\"polygon\",inherit:i.Shape,construct:{polygon:function(t){return this.put(new i.Polygon).plot(t||new i.PointArray)}}}),i.extend(i.Polyline,i.Polygon,{array:function(){return this._array||(this._array=new i.PointArray(this.attr(\"points\")))},plot:function(t){return null==t?this.array():this.clear().attr(\"points\",\"string\"==typeof t?t:this._array=new i.PointArray(t))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr(\"points\",this.array().move(t,e))},size:function(t,e){var i=u(this,t,e);return this.attr(\"points\",this.array().size(i.width,i.height))}}),i.extend(i.Line,i.Polyline,i.Polygon,{morphArray:i.PointArray,x:function(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)},y:function(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)},width:function(t){var e=this.bbox();return null==t?e.width:this.size(t,e.height)},height:function(t){var e=this.bbox();return null==t?e.height:this.size(e.width,t)}}),i.Path=i.invent({create:\"path\",inherit:i.Shape,extend:{morphArray:i.PathArray,array:function(){return this._array||(this._array=new i.PathArray(this.attr(\"d\")))},plot:function(t){return null==t?this.array():this.clear().attr(\"d\",\"string\"==typeof t?t:this._array=new i.PathArray(t))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr(\"d\",this.array().move(t,e))},x:function(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)},y:function(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)},size:function(t,e){var i=u(this,t,e);return this.attr(\"d\",this.array().size(i.width,i.height))},width:function(t){return null==t?this.bbox().width:this.size(t,this.bbox().height)},height:function(t){return null==t?this.bbox().height:this.size(this.bbox().width,t)}},construct:{path:function(t){return this.put(new i.Path).plot(t||new i.PathArray)}}}),i.Image=i.invent({create:\"image\",inherit:i.Shape,extend:{load:function(e){if(!e)return this;var s=this,a=new t.Image;return i.on(a,\"load\",function(){i.off(a);var t=s.parent(i.Pattern);null!==t&&(0==s.width()&&0==s.height()&&s.size(a.width,a.height),t&&0==t.width()&&0==t.height()&&t.size(s.width(),s.height()),\"function\"==typeof s._loaded&&s._loaded.call(s,{width:a.width,height:a.height,ratio:a.width/a.height,url:e}))}),i.on(a,\"error\",function(t){i.off(a),\"function\"==typeof s._error&&s._error.call(s,t)}),this.attr(\"href\",a.src=this.src=e,i.xlink)},loaded:function(t){return this._loaded=t,this},error:function(t){return this._error=t,this}},construct:{image:function(t,e,s){return this.put(new i.Image).load(t).size(e||0,s||e||0)}}}),i.Text=i.invent({create:function(){this.constructor.call(this,i.create(\"text\")),this.dom.leading=new i.Number(1.3),this._rebuild=!0,this._build=!1,this.attr(\"font-family\",i.defaults.attrs[\"font-family\"])},inherit:i.Shape,extend:{x:function(t){return null==t?this.attr(\"x\"):this.attr(\"x\",t)},y:function(t){var e=this.attr(\"y\"),i=\"number\"==typeof e?e-this.bbox().y:0;return null==t?\"number\"==typeof e?e-i:e:this.attr(\"y\",\"number\"==typeof t.valueOf()?t+i:t)},cx:function(t){return null==t?this.bbox().cx:this.x(t-this.bbox().width/2)},cy:function(t){return null==t?this.bbox().cy:this.y(t-this.bbox().height/2)},text:function(t){if(void 0===t){t=\"\";for(var e=this.node.childNodes,s=0,a=e.length;s<a;++s)0!=s&&3!=e[s].nodeType&&1==i.adopt(e[s]).dom.newLined&&(t+=\"\\n\"),t+=e[s].textContent;return t}if(this.clear().build(!0),\"function\"==typeof t)t.call(this,this);else{s=0;for(var r=(t=t.split(\"\\n\")).length;s<r;s++)this.tspan(t[s]).newLine()}return this.build(!1).rebuild()},size:function(t){return this.attr(\"font-size\",t).rebuild()},leading:function(t){return null==t?this.dom.leading:(this.dom.leading=new i.Number(t),this.rebuild())},lines:function(){var t=(this.textPath&&this.textPath()||this).node,e=i.utils.map(i.utils.filterSVGElements(t.childNodes),function(t){return i.adopt(t)});return new i.Set(e)},rebuild:function(t){if(\"boolean\"==typeof t&&(this._rebuild=t),this._rebuild){var e=this,s=0,a=this.dom.leading*new i.Number(this.attr(\"font-size\"));this.lines().each(function(){this.dom.newLined&&(e.textPath()||this.attr(\"x\",e.attr(\"x\")),\"\\n\"==this.text()?s+=a:(this.attr(\"dy\",a+s),s=0))}),this.fire(\"rebuild\")}return this},build:function(t){return this._build=!!t,this},setData:function(t){return this.dom=t,this.dom.leading=new i.Number(t.leading||1.3),this}},construct:{text:function(t){return this.put(new i.Text).text(t)},plain:function(t){return this.put(new i.Text).plain(t)}}}),i.Tspan=i.invent({create:\"tspan\",inherit:i.Shape,extend:{text:function(t){return null==t?this.node.textContent+(this.dom.newLined?\"\\n\":\"\"):(\"function\"==typeof t?t.call(this,this):this.plain(t),this)},dx:function(t){return this.attr(\"dx\",t)},dy:function(t){return this.attr(\"dy\",t)},newLine:function(){var t=this.parent(i.Text);return this.dom.newLined=!0,this.dy(t.dom.leading*t.attr(\"font-size\")).attr(\"x\",t.x())}}}),i.extend(i.Text,i.Tspan,{plain:function(t){return!1===this._build&&this.clear(),this.node.appendChild(e.createTextNode(t)),this},tspan:function(t){var e=(this.textPath&&this.textPath()||this).node,s=new i.Tspan;return!1===this._build&&this.clear(),e.appendChild(s.node),s.text(t)},clear:function(){for(var t=(this.textPath&&this.textPath()||this).node;t.hasChildNodes();)t.removeChild(t.lastChild);return this},length:function(){return this.node.getComputedTextLength()}}),i.TextPath=i.invent({create:\"textPath\",inherit:i.Parent,parent:i.Text,construct:{morphArray:i.PathArray,path:function(t){for(var e=new i.TextPath,s=this.doc().defs().path(t);this.node.hasChildNodes();)e.node.appendChild(this.node.firstChild);return this.node.appendChild(e.node),e.attr(\"href\",\"#\"+s,i.xlink),this},array:function(){var t=this.track();return t?t.array():null},plot:function(t){var e=this.track(),i=null;return e&&(i=e.plot(t)),null==t?i:this},track:function(){var t=this.textPath();if(t)return t.reference(\"href\")},textPath:function(){if(this.node.firstChild&&\"textPath\"==this.node.firstChild.nodeName)return i.adopt(this.node.firstChild)}}}),i.Nested=i.invent({create:function(){this.constructor.call(this,i.create(\"svg\")),this.style(\"overflow\",\"visible\")},inherit:i.Container,construct:{nested:function(){return this.put(new i.Nested)}}}),i.A=i.invent({create:\"a\",inherit:i.Container,extend:{to:function(t){return this.attr(\"href\",t,i.xlink)},show:function(t){return this.attr(\"show\",t,i.xlink)},target:function(t){return this.attr(\"target\",t)}},construct:{link:function(t){return this.put(new i.A).to(t)}}}),i.extend(i.Element,{linkTo:function(t){var e=new i.A;return\"function\"==typeof t?t.call(e,e):e.to(t),this.parent().put(e).put(this)}}),i.Marker=i.invent({create:\"marker\",inherit:i.Container,extend:{width:function(t){return this.attr(\"markerWidth\",t)},height:function(t){return this.attr(\"markerHeight\",t)},ref:function(t,e){return this.attr(\"refX\",t).attr(\"refY\",e)},update:function(t){return this.clear(),\"function\"==typeof t&&t.call(this,this),this},toString:function(){return\"url(#\"+this.id()+\")\"}},construct:{marker:function(t,e,i){return this.defs().marker(t,e,i)}}}),i.extend(i.Defs,{marker:function(t,e,s){return this.put(new i.Marker).size(t,e).ref(t/2,e/2).viewbox(0,0,t,e).attr(\"orient\",\"auto\").update(s)}}),i.extend(i.Line,i.Polyline,i.Polygon,i.Path,{marker:function(t,e,s,a){var r=[\"marker\"];return\"all\"!=t&&r.push(t),r=r.join(\"-\"),t=arguments[1]instanceof i.Marker?arguments[1]:this.doc().marker(e,s,a),this.attr(r,t)}});var o={stroke:[\"color\",\"width\",\"opacity\",\"linecap\",\"linejoin\",\"miterlimit\",\"dasharray\",\"dashoffset\"],fill:[\"color\",\"opacity\",\"rule\"],prefix:function(t,e){return\"color\"==e?t:t+\"-\"+e}};function l(t,e,s,a){return s+a.replace(i.regex.dots,\" .\")}function h(t){return t.toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()})}function c(t){return t.charAt(0).toUpperCase()+t.slice(1)}function d(t){var e=t.toString(16);return 1==e.length?\"0\"+e:e}function u(t,e,i){if(null==e||null==i){var s=t.bbox();null==e?e=s.width/s.height*i:null==i&&(i=s.height/s.width*e)}return{width:e,height:i}}function g(t,e,i){return{x:e*t.a+i*t.c+0,y:e*t.b+i*t.d+0}}function f(t){return{a:t[0],b:t[1],c:t[2],d:t[3],e:t[4],f:t[5]}}function p(t,e){t.cx=null==t.cx?e.bbox().cx:t.cx,t.cy=null==t.cy?e.bbox().cy:t.cy}function x(e){for(var s=e.childNodes.length-1;s>=0;s--)e.childNodes[s]instanceof t.SVGElement&&x(e.childNodes[s]);return i.adopt(e).id(i.eid(e.nodeName))}function m(t){return null==t.x&&(t.x=0,t.y=0,t.width=0,t.height=0),t.w=t.width,t.h=t.height,t.x2=t.x+t.width,t.y2=t.y+t.height,t.cx=t.x+t.width/2,t.cy=t.y+t.height/2,t}function b(t){return Math.abs(t)>1e-37?t:0}[\"fill\",\"stroke\"].forEach(function(t){var e,s={};s[t]=function(s){if(void 0===s)return this;if(\"string\"==typeof s||i.Color.isRgb(s)||s&&\"function\"==typeof s.fill)this.attr(t,s);else for(e=o[t].length-1;e>=0;e--)null!=s[o[t][e]]&&this.attr(o.prefix(t,o[t][e]),s[o[t][e]]);return this},i.extend(i.Element,i.FX,s)}),i.extend(i.Element,i.FX,{rotate:function(t,e,i){return this.transform({rotation:t,cx:e,cy:i})},skew:function(t,e,i,s){return 1==arguments.length||3==arguments.length?this.transform({skew:t,cx:e,cy:i}):this.transform({skewX:t,skewY:e,cx:i,cy:s})},scale:function(t,e,i,s){return 1==arguments.length||3==arguments.length?this.transform({scale:t,cx:e,cy:i}):this.transform({scaleX:t,scaleY:e,cx:i,cy:s})},translate:function(t,e){return this.transform({x:t,y:e})},flip:function(t,e){return e=\"number\"==typeof t?t:e,this.transform({flip:t||\"both\",offset:e})},matrix:function(t){return this.attr(\"transform\",new i.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr(\"opacity\",t)},dx:function(t){return this.x(new i.Number(t).plus(this instanceof i.FX?0:this.x()),!0)},dy:function(t){return this.y(new i.Number(t).plus(this instanceof i.FX?0:this.y()),!0)},dmove:function(t,e){return this.dx(t).dy(e)}}),i.extend(i.Rect,i.Ellipse,i.Circle,i.Gradient,i.FX,{radius:function(t,e){var s=(this._target||this).type;return\"radial\"==s||\"circle\"==s?this.attr(\"r\",new i.Number(t)):this.rx(t).ry(null==e?t:e)}}),i.extend(i.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),i.extend(i.Parent,i.Text,i.Tspan,i.FX,{font:function(t,e){if(\"object\"===_typeof(t))for(e in t)this.font(e,t[e]);return\"leading\"==t?this.leading(e):\"anchor\"==t?this.attr(\"text-anchor\",e):\"size\"==t||\"family\"==t||\"weight\"==t||\"stretch\"==t||\"variant\"==t||\"style\"==t?this.attr(\"font-\"+t,e):this.attr(t,e)}}),i.Set=i.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){var t,e,i=[].slice.call(arguments);for(t=0,e=i.length;t<e;t++)this.members.push(i[t]);return this},remove:function(t){var e=this.index(t);return e>-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e<i;e++)t.apply(this.members[e],[e,this.members]);return this},clear:function(){return this.members=[],this},length:function(){return this.members.length},has:function(t){return this.index(t)>=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members},bbox:function(){if(0==this.members.length)return new i.RBox;var t=this.members[0].rbox(this.members[0].doc());return this.each(function(){t=t.merge(this.rbox(this.doc()))}),t}},construct:{set:function(t){return new i.Set(t)}}}),i.FX.Set=i.invent({create:function(t){this.set=t}}),i.Set.inherit=function(){var t=[];for(var e in i.Shape.prototype)\"function\"==typeof i.Shape.prototype[e]&&\"function\"!=typeof i.Set.prototype[e]&&t.push(e);for(var e in t.forEach(function(t){i.Set.prototype[t]=function(){for(var e=0,s=this.members.length;e<s;e++)this.members[e]&&\"function\"==typeof this.members[e][t]&&this.members[e][t].apply(this.members[e],arguments);return\"animate\"==t?this.fx||(this.fx=new i.FX.Set(this)):this}}),t=[],i.FX.prototype)\"function\"==typeof i.FX.prototype[e]&&\"function\"!=typeof i.FX.Set.prototype[e]&&t.push(e);t.forEach(function(t){i.FX.Set.prototype[t]=function(){for(var e=0,i=this.set.members.length;e<i;e++)this.set.members[e].fx[t].apply(this.set.members[e].fx,arguments);return this}})},i.extend(i.Element,{data:function(t,e,i){if(\"object\"===_typeof(t))for(e in t)this.data(e,t[e]);else if(arguments.length<2)try{return JSON.parse(this.attr(\"data-\"+t))}catch(e){return this.attr(\"data-\"+t)}else this.attr(\"data-\"+t,null===e?null:!0===i||\"string\"==typeof e||\"number\"==typeof e?e:JSON.stringify(e));return this}}),i.extend(i.Element,{remember:function(t,e){if(\"object\"===_typeof(arguments[0]))for(var e in t)this.remember(e,t[e]);else{if(1==arguments.length)return this.memory()[t];this.memory()[t]=e}return this},forget:function(){if(0==arguments.length)this._memory={};else for(var t=arguments.length-1;t>=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),i.get=function(t){var s=e.getElementById(function(t){var e=(t||\"\").toString().match(i.regex.reference);if(e)return e[1]}(t)||t);return i.adopt(s)},i.select=function(t,s){return new i.Set(i.utils.map((s||e).querySelectorAll(t),function(t){return i.adopt(t)}))},i.extend(i.Parent,{select:function(t){return i.select(t,this.node)}});var v=\"abcdef\".split(\"\");if(\"function\"!=typeof t.CustomEvent){var y=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var s=e.createEvent(\"CustomEvent\");return s.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),s};y.prototype=t.Event.prototype,i.CustomEvent=y}else i.CustomEvent=t.CustomEvent;return function(e){for(var i=0,s=[\"moz\",\"webkit\"],a=0;a<s.length&&!t.requestAnimationFrame;++a)e.requestAnimationFrame=e[s[a]+\"RequestAnimationFrame\"],e.cancelAnimationFrame=e[s[a]+\"CancelAnimationFrame\"]||e[s[a]+\"CancelRequestAnimationFrame\"];e.requestAnimationFrame=e.requestAnimationFrame||function(t){var s=(new Date).getTime(),a=Math.max(0,16-(s-i)),r=e.setTimeout(function(){t(s+a)},a);return i=s+a,r},e.cancelAnimationFrame=e.cancelAnimationFrame||e.clearTimeout}(t),i}),function(){SVG.Filter=SVG.invent({create:\"filter\",inherit:SVG.Parent,extend:{source:\"SourceGraphic\",sourceAlpha:\"SourceAlpha\",background:\"BackgroundImage\",backgroundAlpha:\"BackgroundAlpha\",fill:\"FillPaint\",stroke:\"StrokePaint\",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr(\"in\")&&this.autoSetIn&&t.attr(\"in\",this.source),t.attr(\"result\")||t.attr(\"result\",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,s,a){return this.put(new SVG.DisplacementMapEffect(t,e,i,s,a))},specularLighting:function(t,e,i,s){return this.put(new SVG.SpecularLightingEffect(t,e,i,s))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,s,a){return this.put(new SVG.TurbulenceEffect(t,e,i,s,a))},toString:function(){return\"url(#\"+this.attr(\"id\")+\")\"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return\"function\"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr(\"filter\",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr(\"filter\",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in\")+'\"]').get(0)||this.attr(\"in\"):this.attr(\"in\",t)},result:function(t){return null==t?this.attr(\"result\"):this.attr(\"result\",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in\")+'\"]').get(0)||this.attr(\"in\"):this.attr(\"in\",t)},result:function(t){return null==t?this.attr(\"result\"):this.attr(\"result\",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,s){return this.parent()&&this.parent().displacementMap(this,t,e,i,s)},specularLighting:function(t,e,i,s){return this.parent()&&this.parent().specularLighting(t,e,i,s).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,s,a){return this.parent()&&this.parent().turbulence(t,e,i,s,a).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr(\"in\",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||\"normal\"})},colorMatrix:function(t,e){\"matrix\"==t&&(e=a(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=a(t),this.attr({order:Math.sqrt(t.split(\" \").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr(\"flood-color\",t),null!=e&&this.attr(\"flood-opacity\",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr(\"href\",t,SVG.xlink)},displacementMap:function(t,e,i,s,a){this.attr({in:t,in2:e,scale:i,xChannelSelector:s,yChannelSelector:a})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr(\"stdDeviation\",function(t){if(!Array.isArray(t))return t;for(var e=0,i=t.length,s=[];e<i;e++)s.push(t[e]);return s.join(\" \")}(Array.prototype.slice.call(arguments))):this.attr(\"stdDeviation\",\"0 0\")},morphology:function(t,e){this.attr({operator:t,radius:e})},tile:function(){},turbulence:function(t,e,i,s,a){this.attr({numOctaves:e,seed:i,stitchTiles:s,baseFrequency:t,type:a})}},i={merge:function(){var t;if(arguments[0]instanceof SVG.Set){var e=this;arguments[0].each(function(t){this instanceof SVG.MergeNode?e.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&e.put(new SVG.MergeNode(this))})}else{t=Array.isArray(arguments[0])?arguments[0]:arguments;for(var i=0;i<t.length;i++)t[i]instanceof SVG.MergeNode?this.put(t[i]):this.put(new SVG.MergeNode(t[i]))}},componentTransfer:function(t){if(this.rgb=new SVG.Set,[\"r\",\"g\",\"b\",\"a\"].forEach(function(t){this[t]=new(SVG[\"Func\"+t.toUpperCase()])(\"identity\"),this.rgb.add(this[t]),this.node.appendChild(this[t].node)}.bind(this)),t)for(var e in t.rgb&&([\"r\",\"g\",\"b\"].forEach(function(e){this[e].attr(t.rgb)}.bind(this)),delete t.rgb),t)this[e].attr(t[e])},diffuseLighting:function(t,e,i){this.attr({surfaceScale:t,diffuseConstant:e,kernelUnitLength:i})},specularLighting:function(t,e,i,s){this.attr({surfaceScale:t,diffuseConstant:e,specularExponent:i,kernelUnitLength:s})}},s={distantLight:function(t,e){this.attr({azimuth:t,elevation:e})},pointLight:function(t,e,i){this.attr({x:t,y:e,z:i})},spotLight:function(t,e,i,s,a,r){this.attr({x:t,y:e,z:i,pointsAtX:s,pointsAtY:a,pointsAtZ:r})},mergeNode:function(t){this.attr(\"in\",t)}};function a(t){return Array.isArray(t)&&(t=new SVG.Array(t)),t.toString().replace(/^\\s+/,\"\").replace(/\\s+$/,\"\").replace(/\\s+/g,\" \")}function r(){var t=function(){};for(var e in\"function\"==typeof arguments[arguments.length-1]&&(t=arguments[arguments.length-1],Array.prototype.splice.call(arguments,arguments.length-1,1)),arguments)for(var i in arguments[e])t(arguments[e][i],i,arguments[e])}[\"r\",\"g\",\"b\",\"a\"].forEach(function(t){s[\"Func\"+t.toUpperCase()]=function(t){switch(this.attr(\"type\",t),t){case\"table\":this.attr(\"tableValues\",arguments[1]);break;case\"linear\":this.attr(\"slope\",arguments[1]),this.attr(\"intercept\",arguments[2]);break;case\"gamma\":this.attr(\"amplitude\",arguments[1]),this.attr(\"exponent\",arguments[2]),this.attr(\"offset\",arguments[2])}}}),r(e,function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i+\"Effect\"]=SVG.invent({create:function(){this.constructor.call(this,SVG.create(\"fe\"+i)),t.apply(this,arguments),this.result(this.attr(\"id\")+\"Out\")},inherit:SVG.Effect,extend:{}})}),r(i,function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i+\"Effect\"]=SVG.invent({create:function(){this.constructor.call(this,SVG.create(\"fe\"+i)),t.apply(this,arguments),this.result(this.attr(\"id\")+\"Out\")},inherit:SVG.ParentEffect,extend:{}})}),r(s,function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i]=SVG.invent({create:function(){this.constructor.call(this,SVG.create(\"fe\"+i)),t.apply(this,arguments)},inherit:SVG.ChildEffect,extend:{}})}),SVG.extend(SVG.MergeEffect,{in:function(t){return t instanceof SVG.MergeNode?this.add(t,0):this.add(new SVG.MergeNode(t),0),this}}),SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{in2:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in2\")+'\"]').get(0)||this.attr(\"in2\"):this.attr(\"in2\",t)}}),SVG.filter={sepiatone:[.343,.669,.119,0,0,.249,.626,.13,0,0,.172,.334,.111,0,0,0,0,0,1,0]}}.call(void 0),function(){function t(t,a,r,n,o,l,h){for(var c=t.slice(a,r||h),d=n.slice(o,l||h),u=0,g={pos:[0,0],start:[0,0]},f={pos:[0,0],start:[0,0]};;){if(c[u]=e.call(g,c[u]),d[u]=e.call(f,d[u]),c[u][0]!=d[u][0]||\"M\"==c[u][0]||\"A\"==c[u][0]&&(c[u][4]!=d[u][4]||c[u][5]!=d[u][5])?(Array.prototype.splice.apply(c,[u,1].concat(s.call(g,c[u]))),Array.prototype.splice.apply(d,[u,1].concat(s.call(f,d[u])))):(c[u]=i.call(g,c[u]),d[u]=i.call(f,d[u])),++u==c.length&&u==d.length)break;u==c.length&&c.push([\"C\",g.pos[0],g.pos[1],g.pos[0],g.pos[1],g.pos[0],g.pos[1]]),u==d.length&&d.push([\"C\",f.pos[0],f.pos[1],f.pos[0],f.pos[1],f.pos[0],f.pos[1]])}return{start:c,dest:d}}function e(t){switch(t[0]){case\"z\":case\"Z\":t[0]=\"L\",t[1]=this.start[0],t[2]=this.start[1];break;case\"H\":t[0]=\"L\",t[2]=this.pos[1];break;case\"V\":t[0]=\"L\",t[2]=t[1],t[1]=this.pos[0];break;case\"T\":t[0]=\"Q\",t[3]=t[1],t[4]=t[2],t[1]=this.reflection[1],t[2]=this.reflection[0];break;case\"S\":t[0]=\"C\",t[6]=t[4],t[5]=t[3],t[4]=t[2],t[3]=t[1],t[2]=this.reflection[1],t[1]=this.reflection[0]}return t}function i(t){var e=t.length;return this.pos=[t[e-2],t[e-1]],-1!=\"SCQT\".indexOf(t[0])&&(this.reflection=[2*this.pos[0]-t[e-4],2*this.pos[1]-t[e-3]]),t}function s(t){var e=[t];switch(t[0]){case\"M\":return this.pos=this.start=[t[1],t[2]],e;case\"L\":t[5]=t[3]=t[1],t[6]=t[4]=t[2],t[1]=this.pos[0],t[2]=this.pos[1];break;case\"Q\":t[6]=t[4],t[5]=t[3],t[4]=1*t[4]/3+2*t[2]/3,t[3]=1*t[3]/3+2*t[1]/3,t[2]=1*this.pos[1]/3+2*t[2]/3,t[1]=1*this.pos[0]/3+2*t[1]/3;break;case\"A\":t=(e=function(t,e){var i,s,a,r,n,o,l,h,c,d,u,g,f,p,x,m,b,v,y,w,k,A,S,C,L,P,z=Math.abs(e[1]),T=Math.abs(e[2]),M=e[3]%360,E=e[4],X=e[5],I=e[6],Y=e[7],F=new SVG.Point(t),R=new SVG.Point(I,Y),D=[];if(0===z||0===T||F.x===R.x&&F.y===R.y)return[[\"C\",F.x,F.y,R.x,R.y,R.x,R.y]];i=new SVG.Point((F.x-R.x)/2,(F.y-R.y)/2).transform((new SVG.Matrix).rotate(M)),(s=i.x*i.x/(z*z)+i.y*i.y/(T*T))>1&&(s=Math.sqrt(s),z*=s,T*=s);a=(new SVG.Matrix).rotate(M).scale(1/z,1/T).rotate(-M),F=F.transform(a),R=R.transform(a),r=[R.x-F.x,R.y-F.y],o=r[0]*r[0]+r[1]*r[1],n=Math.sqrt(o),r[0]/=n,r[1]/=n,l=o<4?Math.sqrt(1-o/4):0,E===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-r[1],(R.y+F.y)/2+l*r[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),u=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(u*=-1);g=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(g*=-1);X&&u>g&&(g+=2*Math.PI);!X&&u<g&&(g-=2*Math.PI);for(p=Math.ceil(2*Math.abs(u-g)/Math.PI),m=[],b=u,f=(g-u)/p,x=4*Math.tan(f/4)/3,k=0;k<=p;k++)y=Math.cos(b),v=Math.sin(b),w=new SVG.Point(h.x+y,h.y+v),m[k]=[new SVG.Point(w.x+x*v,w.y-x*y),w,new SVG.Point(w.x-x*v,w.y+x*y)],b+=f;for(m[0][0]=m[0][1].clone(),m[m.length-1][2]=m[m.length-1][1].clone(),a=(new SVG.Matrix).rotate(M).scale(z,T).rotate(-M),k=0,A=m.length;k<A;k++)m[k][0]=m[k][0].transform(a),m[k][1]=m[k][1].transform(a),m[k][2]=m[k][2].transform(a);for(k=1,A=m.length;k<A;k++)w=m[k-1][2],S=w.x,C=w.y,w=m[k][0],L=w.x,P=w.y,w=m[k][1],I=w.x,Y=w.y,D.push([\"C\",S,C,L,P,I,Y]);return D}(this.pos,t))[0]}return t[0]=\"C\",this.pos=[t[5],t[6]],this.reflection=[2*t[5]-t[3],2*t[6]-t[4]],e}function a(t,e){if(!1===e)return!1;for(var i=e,s=t.length;i<s;++i)if(\"M\"==t[i][0])return i;return!1}SVG.extend(SVG.PathArray,{morph:function(e){for(var i=this.value,s=this.parse(e),r=0,n=0,o=!1,l=!1;!1!==r||!1!==n;){var h;o=a(i,!1!==r&&r+1),l=a(s,!1!==n&&n+1),!1===r&&(r=0==(h=new SVG.PathArray(c.start).bbox()).height||0==h.width?i.push(i[0])-1:i.push([\"M\",h.x+h.width/2,h.y+h.height/2])-1),!1===n&&(n=0==(h=new SVG.PathArray(c.dest).bbox()).height||0==h.width?s.push(s[0])-1:s.push([\"M\",h.x+h.width/2,h.y+h.height/2])-1);var c=t(i,r,o,s,n,l);i=i.slice(0,r).concat(c.start,!1===o?[]:i.slice(o)),s=s.slice(0,n).concat(c.dest,!1===l?[]:s.slice(l)),r=!1!==o&&r+c.start.length,n=!1!==l&&n+c.dest.length}return this.value=i,this.destination=new SVG.PathArray,this.destination.value=s,this}})}(),function(){function t(t){t.remember(\"_draggable\",this),this.el=t}t.prototype.init=function(t,e){var i=this;this.constraint=t,this.value=e,this.el.on(\"mousedown.drag\",function(t){i.start(t)}),this.el.on(\"touchstart.drag\",function(t){i.start(t)})},t.prototype.transformPoint=function(t,e){var i=(t=t||window.event).changedTouches&&t.changedTouches[0]||t;return this.p.x=i.clientX-(e||0),this.p.y=i.clientY,this.p.matrixTransform(this.m)},t.prototype.getBBox=function(){var t=this.el.bbox();return this.el instanceof SVG.Nested&&(t=this.el.rbox()),(this.el instanceof SVG.G||this.el instanceof SVG.Use||this.el instanceof SVG.Nested)&&(t.x=this.el.x(),t.y=this.el.y()),t},t.prototype.start=function(t){if(\"click\"!=t.type&&\"mousedown\"!=t.type&&\"mousemove\"!=t.type||1==(t.which||t.buttons)){var e=this;if(this.el.fire(\"beforedrag\",{event:t,handler:this}),!this.el.event().defaultPrevented){t.preventDefault(),t.stopPropagation(),this.parent=this.parent||this.el.parent(SVG.Nested)||this.el.parent(SVG.Doc),this.p=this.parent.node.createSVGPoint(),this.m=this.el.node.getScreenCTM().inverse();var i,s=this.getBBox();if(this.el instanceof SVG.Text)switch(i=this.el.node.getComputedTextLength(),this.el.attr(\"text-anchor\")){case\"middle\":i/=2;break;case\"start\":i=0}this.startPoints={point:this.transformPoint(t,i),box:s,transform:this.el.transform()},SVG.on(window,\"mousemove.drag\",function(t){e.drag(t)}),SVG.on(window,\"touchmove.drag\",function(t){e.drag(t)}),SVG.on(window,\"mouseup.drag\",function(t){e.end(t)}),SVG.on(window,\"touchend.drag\",function(t){e.end(t)}),this.el.fire(\"dragstart\",{event:t,p:this.startPoints.point,m:this.m,handler:this})}}},t.prototype.drag=function(t){var e=this.getBBox(),i=this.transformPoint(t),s=this.startPoints.box.x+i.x-this.startPoints.point.x,a=this.startPoints.box.y+i.y-this.startPoints.point.y,r=this.constraint,n=i.x-this.startPoints.point.x,o=i.y-this.startPoints.point.y;if(this.el.fire(\"dragmove\",{event:t,p:i,m:this.m,handler:this}),this.el.event().defaultPrevented)return i;if(\"function\"==typeof r){var l=r.call(this.el,s,a,this.m);\"boolean\"==typeof l&&(l={x:l,y:l}),!0===l.x?this.el.x(s):!1!==l.x&&this.el.x(l.x),!0===l.y?this.el.y(a):!1!==l.y&&this.el.y(l.y)}else\"object\"==typeof r&&(null!=r.minX&&s<r.minX?n=(s=r.minX)-this.startPoints.box.x:null!=r.maxX&&s>r.maxX-e.width&&(n=(s=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&a<r.minY?o=(a=r.minY)-this.startPoints.box.y:null!=r.maxY&&a>r.maxY-e.height&&(o=(a=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(s-=s%r.snapToGrid,a-=a%r.snapToGrid,n-=n%r.snapToGrid,o-=o%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:n,y:o},!0):this.el.move(s,a));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire(\"dragend\",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,\"mousemove.drag\"),SVG.off(window,\"touchmove.drag\"),SVG.off(window,\"mouseup.drag\"),SVG.off(window,\"touchend.drag\")},SVG.extend(SVG.Element,{draggable:function(e,i){\"function\"!=typeof e&&\"object\"!=typeof e||(i=e,e=!0);var s=this.remember(\"_draggable\")||new t(this);return(e=void 0===e||e)?s.init(i||{},e):(this.off(\"mousedown.drag\"),this.off(\"touchstart.drag\")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember(\"_selectHandler\",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1}}t.prototype.init=function(t,e){var i=this.el.bbox();for(var s in this.options={},this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==[\"line\",\"polyline\",\"polygon\"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set?this:(this.pointSelection.set=this.parent.set(),this.drawCircles(),this)},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map(function(e){return[e[0]-t.x,e[1]-t.y]})},t.prototype.drawCircles=function(){for(var t=this,e=this.getPointArray(),i=0,s=e.length;i<s;++i){var a=function(e){return function(i){(i=i||window.event).preventDefault?i.preventDefault():i.returnValue=!1,i.stopPropagation();var s=i.pageX||i.touches[0].pageX,a=i.pageY||i.touches[0].pageY;t.el.fire(\"point\",{x:s,y:a,i:e,event:i})}}(i);this.pointSelection.set.add(this.nested.circle(this.options.radius).center(e[i][0],e[i][1]).addClass(this.options.classPoints).addClass(this.options.classPoints+\"_point\").on(\"touchstart\",a).on(\"mousedown\",a))}},t.prototype.updatePointSelection=function(){var t=this.getPointArray();this.pointSelection.set.each(function(e){this.cx()===t[e][0]&&this.cy()===t[e][1]||this.center(t[e][0],t[e][1])})},t.prototype.updateRectSelection=function(){var t=this.el.bbox();this.rectSelection.set.get(0).attr({width:t.width,height:t.height}),this.options.points&&(this.rectSelection.set.get(2).center(t.width,0),this.rectSelection.set.get(3).center(t.width,t.height),this.rectSelection.set.get(4).center(0,t.height),this.rectSelection.set.get(5).center(t.width/2,0),this.rectSelection.set.get(6).center(t.width,t.height/2),this.rectSelection.set.get(7).center(t.width/2,t.height),this.rectSelection.set.get(8).center(0,t.height/2)),this.options.rotationPoint&&(this.options.points?this.rectSelection.set.get(9).center(t.width/2,20):this.rectSelection.set.get(1).center(t.width/2,20))},t.prototype.selectRect=function(t){var e=this,i=this.el.bbox();function s(t){return function(i){(i=i||window.event).preventDefault?i.preventDefault():i.returnValue=!1,i.stopPropagation();var s=i.pageX||i.touches[0].pageX,a=i.pageY||i.touches[0].pageY;e.el.fire(t,{x:s,y:a,event:i})}}if(this.rectSelection.isSelected=t,this.rectSelection.set=this.rectSelection.set||this.parent.set(),this.rectSelection.set.get(0)||this.rectSelection.set.add(this.nested.rect(i.width,i.height).addClass(this.options.classRect)),this.options.points&&!this.rectSelection.set.get(1)){var a=\"touchstart\",r=\"mousedown\";this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0,0).attr(\"class\",this.options.classPoints+\"_lt\").on(r,s(\"lt\")).on(a,s(\"lt\"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width,0).attr(\"class\",this.options.classPoints+\"_rt\").on(r,s(\"rt\")).on(a,s(\"rt\"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width,i.height).attr(\"class\",this.options.classPoints+\"_rb\").on(r,s(\"rb\")).on(a,s(\"rb\"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0,i.height).attr(\"class\",this.options.classPoints+\"_lb\").on(r,s(\"lb\")).on(a,s(\"lb\"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width/2,0).attr(\"class\",this.options.classPoints+\"_t\").on(r,s(\"t\")).on(a,s(\"t\"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width,i.height/2).attr(\"class\",this.options.classPoints+\"_r\").on(r,s(\"r\")).on(a,s(\"r\"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width/2,i.height).attr(\"class\",this.options.classPoints+\"_b\").on(r,s(\"b\")).on(a,s(\"b\"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0,i.height/2).attr(\"class\",this.options.classPoints+\"_l\").on(r,s(\"l\")).on(a,s(\"l\"))),this.rectSelection.set.each(function(){this.addClass(e.options.classPoints)})}if(this.options.rotationPoint&&(this.options.points&&!this.rectSelection.set.get(9)||!this.options.points&&!this.rectSelection.set.get(1))){var n=function(t){(t=t||window.event).preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation();var i=t.pageX||t.touches[0].pageX,s=t.pageY||t.touches[0].pageY;e.el.fire(\"rot\",{x:i,y:s,event:t})};this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width/2,20).attr(\"class\",this.options.classPoints+\"_rot\").on(\"touchstart\",n).on(\"mousedown\",n))}},t.prototype.handler=function(){var t=this.el.bbox();this.nested.matrix(new SVG.Matrix(this.el).translate(t.x,t.y)),this.rectSelection.isSelected&&this.updateRectSelection(),this.pointSelection.isSelected&&this.updatePointSelection()},t.prototype.observe=function(){var t=this;if(MutationObserver)if(this.rectSelection.isSelected||this.pointSelection.isSelected)this.observerInst=this.observerInst||new MutationObserver(function(){t.handler()}),this.observerInst.observe(this.el.node,{attributes:!0});else try{this.observerInst.disconnect(),delete this.observerInst}catch(t){}else this.el.off(\"DOMAttrModified.select\"),(this.rectSelection.isSelected||this.pointSelection.isSelected)&&this.el.on(\"DOMAttrModified.select\",function(){t.handler()})},t.prototype.cleanup=function(){!this.rectSelection.isSelected&&this.rectSelection.set&&(this.rectSelection.set.each(function(){this.remove()}),this.rectSelection.set.clear(),delete this.rectSelection.set),!this.pointSelection.isSelected&&this.pointSelection.set&&(this.pointSelection.set.each(function(){this.remove()}),this.pointSelection.set.clear(),delete this.pointSelection.set),this.pointSelection.isSelected||this.rectSelection.isSelected||(this.nested.remove(),delete this.nested)},SVG.extend(SVG.Element,{selectize:function(e,i){return\"object\"==typeof e&&(i=e,e=!0),(this.remember(\"_selectHandler\")||new t(this)).init(void 0===e||e,i||{}),this}}),SVG.Element.prototype.selectize.defaults={points:!0,classRect:\"svg_select_boundingRect\",classPoints:\"svg_select_points\",radius:7,rotationPoint:!0,deepSelect:!1}}(),function(){(function(){function t(t){t.remember(\"_resizeHandler\",this),this.el=t,this.parameters={},this.lastUpdateCall=null,this.p=t.doc().node.createSVGPoint()}t.prototype.transformPoint=function(t,e,i){return this.p.x=t-(this.offset.x-window.pageXOffset),this.p.y=e-(this.offset.y-window.pageYOffset),this.p.matrixTransform(i||this.m)},t.prototype._extractPosition=function(t){return{x:null!=t.clientX?t.clientX:t.touches[0].clientX,y:null!=t.clientY?t.clientY:t.touches[0].clientY}},t.prototype.init=function(t){var e=this;if(this.stop(),\"stop\"!==t){for(var i in this.options={},this.el.resize.defaults)this.options[i]=this.el.resize.defaults[i],void 0!==t[i]&&(this.options[i]=t[i]);this.el.on(\"lt.resize\",function(t){e.resize(t||window.event)}),this.el.on(\"rt.resize\",function(t){e.resize(t||window.event)}),this.el.on(\"rb.resize\",function(t){e.resize(t||window.event)}),this.el.on(\"lb.resize\",function(t){e.resize(t||window.event)}),this.el.on(\"t.resize\",function(t){e.resize(t||window.event)}),this.el.on(\"r.resize\",function(t){e.resize(t||window.event)}),this.el.on(\"b.resize\",function(t){e.resize(t||window.event)}),this.el.on(\"l.resize\",function(t){e.resize(t||window.event)}),this.el.on(\"rot.resize\",function(t){e.resize(t||window.event)}),this.el.on(\"point.resize\",function(t){e.resize(t||window.event)}),this.update()}},t.prototype.stop=function(){return this.el.off(\"lt.resize\"),this.el.off(\"rt.resize\"),this.el.off(\"rb.resize\"),this.el.off(\"lb.resize\"),this.el.off(\"t.resize\"),this.el.off(\"r.resize\"),this.el.off(\"b.resize\"),this.el.off(\"l.resize\"),this.el.off(\"rot.resize\"),this.el.off(\"point.resize\"),this},t.prototype.resize=function(t){var e=this;this.m=this.el.node.getScreenCTM().inverse(),this.offset={x:window.pageXOffset,y:window.pageYOffset};var i=this._extractPosition(t.detail.event);if(this.parameters={type:this.el.type,p:this.transformPoint(i.x,i.y),x:t.detail.x,y:t.detail.y,box:this.el.bbox(),rotation:this.el.transform().rotation},\"text\"===this.el.type&&(this.parameters.fontSize=this.el.attr()[\"font-size\"]),void 0!==t.detail.i){var s=this.el.array().valueOf();this.parameters.i=t.detail.i,this.parameters.pointCoords=[s[t.detail.i][0],s[t.detail.i][1]]}switch(t.type){case\"lt\":this.calc=function(t,e){var i=this.snapToGrid(t,e);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case\"rt\":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case\"rb\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case\"lb\":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case\"t\":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case\"r\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case\"b\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case\"l\":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case\"rot\":this.calc=function(t,e){var i=t+this.parameters.p.x,s=e+this.parameters.p.y,a=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(s-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),n=this.parameters.rotation+180*(r-a)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(n-n%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case\"point\":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),s=this.el.array().valueOf();s[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],s[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(s)}}this.el.fire(\"resizestart\",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,\"touchmove.resize\",function(t){e.update(t||window.event)}),SVG.on(window,\"touchend.resize\",function(){e.done()}),SVG.on(window,\"mousemove.resize\",function(t){e.update(t||window.event)}),SVG.on(window,\"mouseup.resize\",function(){e.done()})},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),s=i.x-this.parameters.p.x,a=i.y-this.parameters.p.y;this.lastUpdateCall=[s,a],this.calc(s,a),this.el.fire(\"resizing\",{dx:s,dy:a,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,\"mousemove.resize\"),SVG.off(window,\"mouseup.resize\"),SVG.off(window,\"touchmove.resize\"),SVG.off(window,\"touchend.resize\"),this.el.fire(\"resizedone\")},t.prototype.snapToGrid=function(t,e,i,s){var a;return void 0!==s?a=[(i+t)%this.options.snapToGrid,(s+e)%this.options.snapToGrid]:(i=null==i?3:i,a=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(a[0]-=this.options.snapToGrid),e<0&&(a[1]-=this.options.snapToGrid),t-=Math.abs(a[0])<this.options.snapToGrid/2?a[0]:a[0]-(t<0?-this.options.snapToGrid:this.options.snapToGrid),e-=Math.abs(a[1])<this.options.snapToGrid/2?a[1]:a[1]-(e<0?-this.options.snapToGrid:this.options.snapToGrid),this.constraintToBox(t,e,i,s)},t.prototype.constraintToBox=function(t,e,i,s){var a,r,n=this.options.constraint||{};return void 0!==s?(a=i,r=s):(a=this.parameters.box.x+(1&i?0:this.parameters.box.width),r=this.parameters.box.y+(2&i?0:this.parameters.box.height)),void 0!==n.minX&&a+t<n.minX&&(t=n.minX-a),void 0!==n.maxX&&a+t>n.maxX&&(t=n.maxX-a),void 0!==n.minY&&r+e<n.minY&&(e=n.minY-r),void 0!==n.maxY&&r+e>n.maxY&&(e=n.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),s=this.parameters.box.width/this.parameters.box.height,a=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],n=a/r;return n<s?(i[1]=a/s-this.parameters.box.height,e&&(i[1]=-i[1])):n>s&&(i[0]=this.parameters.box.width-r*s,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember(\"_resizeHandler\")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}();var css='.apexcharts-canvas {\\n  position: relative;\\n  user-select: none;\\n  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\\n}\\n\\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\\n.apexcharts-canvas ::-webkit-scrollbar {\\n  -webkit-appearance: none;\\n  width: 6px;\\n}\\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\\n  border-radius: 4px;\\n  background-color: rgba(0,0,0,.5);\\n  box-shadow: 0 0 1px rgba(255,255,255,.5);\\n  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);\\n}\\n.apexcharts-canvas.dark {\\n  background: #343F57;\\n}\\n\\n.apexcharts-inner {\\n  position: relative;\\n}\\n\\n.legend-mouseover-inactive {\\n  transition: 0.15s ease all;\\n  opacity: 0.20;\\n}\\n\\n.apexcharts-series-collapsed {\\n  opacity: 0;\\n}\\n\\n.apexcharts-gridline, .apexcharts-text {\\n  pointer-events: none;\\n}\\n\\n.apexcharts-tooltip {\\n  border-radius: 5px;\\n  box-shadow: 2px 2px 6px -4px #999;\\n  cursor: default;\\n  font-size: 14px;\\n  left: 62px;\\n  opacity: 0;\\n  pointer-events: none;\\n  position: absolute;\\n  top: 20px;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  z-index: 12;\\n  transition: 0.15s ease all;\\n}\\n.apexcharts-tooltip.light {\\n  border: 1px solid #e3e3e3;\\n  background: rgba(255, 255, 255, 0.96);\\n}\\n.apexcharts-tooltip.dark {\\n  color: #fff;\\n  background: rgba(30,30,30, 0.8);\\n}\\n.apexcharts-tooltip * {\\n  font-family: inherit;\\n}\\n\\n.apexcharts-tooltip .apexcharts-marker,\\n.apexcharts-area-series .apexcharts-area,\\n.apexcharts-line {\\n  pointer-events: none;\\n}\\n\\n.apexcharts-tooltip.active {\\n  opacity: 1;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-tooltip-title {\\n  padding: 6px;\\n  font-size: 15px;\\n  margin-bottom: 4px;\\n}\\n.apexcharts-tooltip.light .apexcharts-tooltip-title {\\n  background: #ECEFF1;\\n  border-bottom: 1px solid #ddd;\\n}\\n.apexcharts-tooltip.dark .apexcharts-tooltip-title {\\n  background: rgba(0, 0, 0, 0.7);\\n  border-bottom: 1px solid #333;\\n}\\n\\n.apexcharts-tooltip-text-value,\\n.apexcharts-tooltip-text-z-value {\\n  display: inline-block;\\n  font-weight: 600;\\n  margin-left: 5px;\\n}\\n\\n.apexcharts-tooltip-text-z-label:empty,\\n.apexcharts-tooltip-text-z-value:empty {\\n  display: none;\\n}\\n\\n.apexcharts-tooltip-text-value, \\n.apexcharts-tooltip-text-z-value {\\n  font-weight: 600;\\n}\\n\\n.apexcharts-tooltip-marker {\\n  width: 12px;\\n  height: 12px;\\n  position: relative;\\n  top: 0px;\\n  margin-right: 10px;\\n  border-radius: 50%;\\n}\\n\\n.apexcharts-tooltip-series-group {\\n  padding: 0 10px;\\n  display: none;\\n  text-align: left;\\n  justify-content: left;\\n  align-items: center;\\n}\\n\\n.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker {\\n  opacity: 1;\\n}\\n.apexcharts-tooltip-series-group.active, .apexcharts-tooltip-series-group:last-child {\\n  padding-bottom: 4px;\\n}\\n.apexcharts-tooltip-series-group-hidden {\\n  opacity: 0;\\n  height: 0;\\n  line-height: 0;\\n  padding: 0 !important;\\n}\\n.apexcharts-tooltip-y-group {\\n  padding: 6px 0 5px;\\n}\\n.apexcharts-tooltip-candlestick {\\n  padding: 4px 8px;\\n}\\n.apexcharts-tooltip-candlestick > div {\\n  margin: 4px 0;\\n}\\n.apexcharts-tooltip-candlestick span.value {\\n  font-weight: bold;\\n}\\n\\n.apexcharts-tooltip-rangebar {\\n  padding: 5px 8px;\\n}\\n\\n.apexcharts-tooltip-rangebar .category {\\n  font-weight: 600;\\n  color: #777;\\n}\\n\\n.apexcharts-tooltip-rangebar .series-name {\\n  font-weight: bold;\\n  display: block;\\n  margin-bottom: 5px;\\n}\\n\\n.apexcharts-xaxistooltip {\\n  opacity: 0;\\n  padding: 9px 10px;\\n  pointer-events: none;\\n  color: #373d3f;\\n  font-size: 13px;\\n  text-align: center;\\n  border-radius: 2px;\\n  position: absolute;\\n  z-index: 10;\\n\\tbackground: #ECEFF1;\\n  border: 1px solid #90A4AE;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-xaxistooltip.dark {\\n  background: rgba(0, 0, 0, 0.7);\\n  border: 1px solid rgba(0, 0, 0, 0.5);\\n  color: #fff;\\n}\\n\\n.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before {\\n\\tleft: 50%;\\n\\tborder: solid transparent;\\n\\tcontent: \" \";\\n\\theight: 0;\\n\\twidth: 0;\\n\\tposition: absolute;\\n\\tpointer-events: none;\\n}\\n\\n.apexcharts-xaxistooltip:after {\\n\\tborder-color: rgba(236, 239, 241, 0);\\n\\tborder-width: 6px;\\n\\tmargin-left: -6px;\\n}\\n.apexcharts-xaxistooltip:before {\\n\\tborder-color: rgba(144, 164, 174, 0);\\n\\tborder-width: 7px;\\n\\tmargin-left: -7px;\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before {\\n  bottom: 100%;\\n}\\n\\n.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before {\\n  top: 100%;\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after {\\n  border-bottom-color: #ECEFF1;\\n}\\n.apexcharts-xaxistooltip-bottom:before {\\n  border-bottom-color: #90A4AE;\\n}\\n\\n.apexcharts-xaxistooltip-bottom.dark:after {\\n  border-bottom-color: rgba(0, 0, 0, 0.5);\\n}\\n.apexcharts-xaxistooltip-bottom.dark:before {\\n  border-bottom-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-xaxistooltip-top:after {\\n  border-top-color:#ECEFF1\\n}\\n.apexcharts-xaxistooltip-top:before {\\n  border-top-color: #90A4AE;\\n}\\n.apexcharts-xaxistooltip-top.dark:after {\\n  border-top-color:rgba(0, 0, 0, 0.5);\\n}\\n.apexcharts-xaxistooltip-top.dark:before {\\n  border-top-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n\\n.apexcharts-xaxistooltip.active {\\n  opacity: 1;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-yaxistooltip {\\n  opacity: 0;\\n  padding: 4px 10px;\\n  pointer-events: none;\\n  color: #373d3f;\\n  font-size: 13px;\\n  text-align: center;\\n  border-radius: 2px;\\n  position: absolute;\\n  z-index: 10;\\n\\tbackground: #ECEFF1;\\n  border: 1px solid #90A4AE;\\n}\\n\\n.apexcharts-yaxistooltip.dark {\\n  background: rgba(0, 0, 0, 0.7);\\n  border: 1px solid rgba(0, 0, 0, 0.5);\\n  color: #fff;\\n}\\n\\n.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before {\\n\\ttop: 50%;\\n\\tborder: solid transparent;\\n\\tcontent: \" \";\\n\\theight: 0;\\n\\twidth: 0;\\n\\tposition: absolute;\\n\\tpointer-events: none;\\n}\\n.apexcharts-yaxistooltip:after {\\n\\tborder-color: rgba(236, 239, 241, 0);\\n\\tborder-width: 6px;\\n\\tmargin-top: -6px;\\n}\\n.apexcharts-yaxistooltip:before {\\n\\tborder-color: rgba(144, 164, 174, 0);\\n\\tborder-width: 7px;\\n\\tmargin-top: -7px;\\n}\\n\\n.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before {\\n  left: 100%;\\n}\\n\\n.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before {\\n  right: 100%;\\n}\\n\\n.apexcharts-yaxistooltip-left:after {\\n  border-left-color: #ECEFF1;\\n}\\n.apexcharts-yaxistooltip-left:before {\\n  border-left-color: #90A4AE;\\n}\\n.apexcharts-yaxistooltip-left.dark:after {\\n  border-left-color: rgba(0, 0, 0, 0.5);\\n}\\n.apexcharts-yaxistooltip-left.dark:before {\\n  border-left-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-yaxistooltip-right:after {\\n  border-right-color: #ECEFF1;\\n}\\n.apexcharts-yaxistooltip-right:before {\\n  border-right-color: #90A4AE;\\n}\\n.apexcharts-yaxistooltip-right.dark:after {\\n  border-right-color: rgba(0, 0, 0, 0.5);\\n}\\n.apexcharts-yaxistooltip-right.dark:before {\\n  border-right-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-yaxistooltip.active {\\n  opacity: 1;\\n}\\n.apexcharts-yaxistooltip-hidden {\\n  display: none;\\n}\\n\\n.apexcharts-xcrosshairs, .apexcharts-ycrosshairs {\\n  pointer-events: none;\\n  opacity: 0;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-xcrosshairs.active, .apexcharts-ycrosshairs.active {\\n  opacity: 1;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-ycrosshairs-hidden {\\n  opacity: 0;\\n}\\n\\n.apexcharts-zoom-rect {\\n  pointer-events: none;\\n}\\n.apexcharts-selection-rect {\\n  cursor: move;\\n}\\n\\n.svg_select_points, .svg_select_points_rot {\\n  opacity: 0;\\n  visibility: hidden;\\n}\\n.svg_select_points_l, .svg_select_points_r {\\n  cursor: ew-resize;\\n  opacity: 1;\\n  visibility: visible;\\n  fill: #888;\\n}\\n.apexcharts-canvas.zoomable .hovering-zoom {\\n  cursor: crosshair\\n}\\n.apexcharts-canvas.zoomable .hovering-pan {\\n  cursor: move\\n}\\n\\n.apexcharts-xaxis,\\n.apexcharts-yaxis {\\n  pointer-events: none;\\n}\\n\\n.apexcharts-zoom-icon, \\n.apexcharts-zoom-in-icon,\\n.apexcharts-zoom-out-icon,\\n.apexcharts-reset-zoom-icon, \\n.apexcharts-pan-icon, \\n.apexcharts-selection-icon,\\n.apexcharts-menu-icon, \\n.apexcharts-toolbar-custom-icon {\\n  cursor: pointer;\\n  width: 20px;\\n  height: 20px;\\n  line-height: 24px;\\n  color: #6E8192;\\n  text-align: center;\\n}\\n\\n\\n.apexcharts-zoom-icon svg, \\n.apexcharts-zoom-in-icon svg,\\n.apexcharts-zoom-out-icon svg,\\n.apexcharts-reset-zoom-icon svg,\\n.apexcharts-menu-icon svg {\\n  fill: #6E8192;\\n}\\n.apexcharts-selection-icon svg {\\n  fill: #444;\\n  transform: scale(0.76)\\n}\\n\\n.dark .apexcharts-zoom-icon svg, \\n.dark .apexcharts-zoom-in-icon svg,\\n.dark .apexcharts-zoom-out-icon svg,\\n.dark .apexcharts-reset-zoom-icon svg, \\n.dark .apexcharts-pan-icon svg, \\n.dark .apexcharts-selection-icon svg,\\n.dark .apexcharts-menu-icon svg, \\n.dark .apexcharts-toolbar-custom-icon svg{\\n  fill: #f3f4f5;\\n}\\n\\n.apexcharts-canvas .apexcharts-zoom-icon.selected svg, \\n.apexcharts-canvas .apexcharts-selection-icon.selected svg, \\n.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg {\\n  fill: #008FFB;\\n}\\n.light .apexcharts-selection-icon:not(.selected):hover svg,\\n.light .apexcharts-zoom-icon:not(.selected):hover svg, \\n.light .apexcharts-zoom-in-icon:hover svg, \\n.light .apexcharts-zoom-out-icon:hover svg, \\n.light .apexcharts-reset-zoom-icon:hover svg, \\n.light .apexcharts-menu-icon:hover svg {\\n  fill: #333;\\n}\\n\\n.apexcharts-selection-icon, .apexcharts-menu-icon {\\n  position: relative;\\n}\\n.apexcharts-reset-zoom-icon {\\n  margin-left: 5px;\\n}\\n.apexcharts-zoom-icon, .apexcharts-reset-zoom-icon, .apexcharts-menu-icon {\\n  transform: scale(0.85);\\n}\\n\\n.apexcharts-zoom-in-icon, .apexcharts-zoom-out-icon {\\n  transform: scale(0.7)\\n}\\n\\n.apexcharts-zoom-out-icon {\\n  margin-right: 3px;\\n}\\n\\n.apexcharts-pan-icon {\\n  transform: scale(0.62);\\n  position: relative;\\n  left: 1px;\\n  top: 0px;\\n}\\n.apexcharts-pan-icon svg {\\n  fill: #fff;\\n  stroke: #6E8192;\\n  stroke-width: 2;\\n}\\n.apexcharts-pan-icon.selected svg {\\n  stroke: #008FFB;\\n}\\n.apexcharts-pan-icon:not(.selected):hover svg {\\n  stroke: #333;\\n}\\n\\n.apexcharts-toolbar {\\n  position: absolute;\\n  z-index: 11;\\n  top: 0px;\\n  right: 3px;\\n  max-width: 176px;\\n  text-align: right;\\n  border-radius: 3px;\\n  padding: 0px 6px 2px 6px;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center; \\n}\\n\\n.apexcharts-toolbar svg {\\n  pointer-events: none;\\n}\\n\\n.apexcharts-menu {\\n  background: #fff;\\n  position: absolute;\\n  top: 100%;\\n  border: 1px solid #ddd;\\n  border-radius: 3px;\\n  padding: 3px;\\n  right: 10px;\\n  opacity: 0;\\n  min-width: 110px;\\n  transition: 0.15s ease all;\\n  pointer-events: none;\\n}\\n\\n.apexcharts-menu.open {\\n  opacity: 1;\\n  pointer-events: all;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-menu-item {\\n  padding: 6px 7px;\\n  font-size: 12px;\\n  cursor: pointer;\\n}\\n.light .apexcharts-menu-item:hover {\\n  background: #eee;\\n}\\n.dark .apexcharts-menu {\\n  background: rgba(0, 0, 0, 0.7);\\n  color: #fff;\\n}\\n\\n@media screen and (min-width: 768px) {\\n  .apexcharts-toolbar {\\n    /*opacity: 0;*/\\n  }\\n\\n  .apexcharts-canvas:hover .apexcharts-toolbar {\\n    opacity: 1;\\n  } \\n}\\n\\n.apexcharts-datalabel.hidden {\\n  opacity: 0;\\n}\\n\\n.apexcharts-pie-label,\\n.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value {\\n  cursor: default;\\n  pointer-events: none;\\n}\\n\\n.apexcharts-pie-label-delay {\\n  opacity: 0;\\n  animation-name: opaque;\\n  animation-duration: 0.3s;\\n  animation-fill-mode: forwards;\\n  animation-timing-function: ease;\\n}\\n\\n.apexcharts-canvas .hidden {\\n  opacity: 0;\\n}\\n\\n.apexcharts-hide .apexcharts-series-points {\\n  opacity: 0;\\n}\\n\\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-radar-series path, .apexcharts-radar-series polygon {\\n  pointer-events: none;\\n}\\n\\n/* markers */\\n\\n.apexcharts-marker {\\n  transition: 0.15s ease all;\\n}\\n\\n@keyframes opaque {\\n  0% {\\n    opacity: 0;\\n  }\\n  100% {\\n    opacity: 1;\\n  }\\n}';styleInject(css),\"document\"in self&&(\"classList\"in document.createElement(\"_\")&&(!document.createElementNS||\"classList\"in document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\"))||function(t){if(\"Element\"in t){var e=t.Element.prototype,i=Object,s=String.prototype.trim||function(){return this.replace(/^\\s+|\\s+$/g,\"\")},a=Array.prototype.indexOf||function(t){for(var e=0,i=this.length;e<i;e++)if(e in this&&this[e]===t)return e;return-1},r=function(t,e){this.name=t,this.code=DOMException[t],this.message=e},n=function(t,e){if(\"\"===e)throw new r(\"SYNTAX_ERR\",\"The token must not be empty.\");if(/\\s/.test(e))throw new r(\"INVALID_CHARACTER_ERR\",\"The token must not contain space characters.\");return a.call(t,e)},o=function(t){for(var e=s.call(t.getAttribute(\"class\")||\"\"),i=e?e.split(/\\s+/):[],a=0,r=i.length;a<r;a++)this.push(i[a]);this._updateClassName=function(){t.setAttribute(\"class\",this.toString())}},l=o.prototype=[],h=function(){return new o(this)};if(r.prototype=Error.prototype,l.item=function(t){return this[t]||null},l.contains=function(t){return~n(this,t+\"\")},l.add=function(){var t,e=arguments,i=0,s=e.length,a=!1;do{t=e[i]+\"\",~n(this,t)||(this.push(t),a=!0)}while(++i<s);a&&this._updateClassName()},l.remove=function(){var t,e,i=arguments,s=0,a=i.length,r=!1;do{for(t=i[s]+\"\",e=n(this,t);~e;)this.splice(e,1),r=!0,e=n(this,t)}while(++s<a);r&&this._updateClassName()},l.toggle=function(t,e){var i=this.contains(t),s=i?!0!==e&&\"remove\":!1!==e&&\"add\";return s&&this[s](t),!0===e||!1===e?e:!i},l.replace=function(t,e){var i=n(t+\"\");~i&&(this.splice(i,1,e),this._updateClassName())},l.toString=function(){return this.join(\" \")},i.defineProperty){var c={get:h,enumerable:!0,configurable:!0};try{i.defineProperty(e,\"classList\",c)}catch(t){void 0!==t.number&&-2146823252!==t.number||(c.enumerable=!1,i.defineProperty(e,\"classList\",c))}}else i.prototype.__defineGetter__&&e.__defineGetter__(\"classList\",h)}}(self),function(){var t=document.createElement(\"_\");if(t.classList.add(\"c1\",\"c2\"),!t.classList.contains(\"c2\")){var e=function(t){var e=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){var i,s=arguments.length;for(i=0;i<s;i++)t=arguments[i],e.call(this,t)}};e(\"add\"),e(\"remove\")}if(t.classList.toggle(\"c3\",!1),t.classList.contains(\"c3\")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return 1 in arguments&&!this.contains(t)==!e?e:i.call(this,t)}}\"replace\"in document.createElement(\"_\").classList||(DOMTokenList.prototype.replace=function(t,e){var i=this.toString().split(\" \"),s=i.indexOf(t+\"\");~s&&(i=i.slice(s),this.remove.apply(this,i),this.add(e),this.add.apply(this,i.slice(1)))}),t=null}()),function(){var t=!1;function e(t){var e=t.__resizeTriggers__,i=e.firstElementChild,s=e.lastElementChild,a=i.firstElementChild;s.scrollLeft=s.scrollWidth,s.scrollTop=s.scrollHeight,a.style.width=i.offsetWidth+1+\"px\",a.style.height=i.offsetHeight+1+\"px\",i.scrollLeft=i.scrollWidth,i.scrollTop=i.scrollHeight}function i(t){var i=this;e(this),this.__resizeRAF__&&n(this.__resizeRAF__),this.__resizeRAF__=r(function(){(function(t){return t.offsetWidth!=t.__resizeLast__.width||t.offsetHeight!=t.__resizeLast__.height})(i)&&(i.__resizeLast__.width=i.offsetWidth,i.__resizeLast__.height=i.offsetHeight,i.__resizeListeners__.forEach(function(e){e.call(t)}))})}var s,a,r=(s=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){return window.setTimeout(t,20)},function(t){return s(t)}),n=(a=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.clearTimeout,function(t){return a(t)}),o=!1,l=\"\",h=\"animationstart\",c=\"Webkit Moz O ms\".split(\" \"),d=\"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \"),u=document.createElement(\"fakeelement\");if(void 0!==u.style.animationName&&(o=!0),!1===o)for(var g=0;g<c.length;g++)if(void 0!==u.style[c[g]+\"AnimationName\"]){l=\"-\"+c[g].toLowerCase()+\"-\",h=d[g];break}var f=\"@\"+l+\"keyframes resizeanim { from { opacity: 0; } to { opacity: 0; } } \",p=l+\"animation: 1ms resizeanim; \";window.addResizeListener=function(s,a){s.__resizeTriggers__||(\"static\"==getComputedStyle(s).position&&(s.style.position=\"relative\"),function(){if(!t){var e=(f||\"\")+\".resize-triggers { \"+(p||\"\")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',i=document.head||document.getElementsByTagName(\"head\")[0],s=document.createElement(\"style\");s.type=\"text/css\",s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e)),i.appendChild(s),t=!0}}(),s.__resizeLast__={},s.__resizeListeners__=[],(s.__resizeTriggers__=document.createElement(\"div\")).className=\"resize-triggers\",s.__resizeTriggers__.innerHTML='<div class=\"expand-trigger\"><div></div></div><div class=\"contract-trigger\"></div>',s.appendChild(s.__resizeTriggers__),e(s),s.addEventListener(\"scroll\",i,!0),h&&s.__resizeTriggers__.addEventListener(h,function(t){\"resizeanim\"==t.animationName&&e(s)})),s.__resizeListeners__.push(a)},window.removeResizeListener=function(t,e){t&&(t.__resizeListeners__.splice(t.__resizeListeners__.indexOf(e),1),t.__resizeListeners__.length||(t.removeEventListener(\"scroll\",i),t.__resizeTriggers__=!t.removeChild(t.__resizeTriggers__)))}}(),window.Apex={};var ApexCharts$1=function(){function t(e,i){_classCallCheck(this,t),this.opts=i,this.ctx=this,this.w=new Base(i).init(),this.el=e,this.w.globals.cuid=(Math.random()+1).toString(36).substring(4),this.w.globals.chartID=this.w.config.chart.id?this.w.config.chart.id:this.w.globals.cuid,this.eventList=[\"mousedown\",\"mousemove\",\"touchstart\",\"touchmove\",\"mouseup\",\"touchend\"],this.initModules(),this.create=Utils.bind(this.create,this),this.documentEvent=Utils.bind(this.documentEvent,this),this.windowResizeHandler=this.windowResize.bind(this)}return _createClass(t,[{key:\"render\",value:function(){var t=this;return new Promise$1(function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var s=t.w.config.chart.events.beforeMount;\"function\"==typeof s&&s(t,t.w),t.fireEvent(\"beforeMount\",[t,t.w]),window.addEventListener(\"resize\",t.windowResizeHandler),window.addResizeListener(t.el.parentNode,t.parentResizeCallback.bind(t));var a=t.create(t.w.config.series,{});if(!a)return e(t);t.mount(a).then(function(){e(a),\"function\"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.fireEvent(\"mounted\",[t,t.w])}).catch(function(t){i(t)})}else i(new Error(\"Element not found\"))})}},{key:\"initModules\",value:function(){this.animations=new Animations(this),this.core=new Core(this.el,this),this.grid=new Grid(this),this.coreUtils=new CoreUtils(this),this.config=new Config({}),this.crosshairs=new Crosshairs(this),this.options=new Options,this.responsive=new Responsive(this),this.series=new Series(this),this.theme=new Theme(this),this.formatters=new Formatters(this),this.titleSubtitle=new TitleSubtitle(this),this.legend=new Legend(this),this.toolbar=new Toolbar(this),this.dimensions=new Dimensions(this),this.zoomPanSelection=new ZoomPanSelection(this),this.w.globals.tooltip=new Tooltip(this)}},{key:\"addEventListener\",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:\"removeEventListener\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var s=i.globals.events[t].indexOf(e);-1!==s&&i.globals.events[t].splice(s,1)}}},{key:\"fireEvent\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var s=i.globals.events[t],a=s.length,r=0;r<a;r++)s[r].apply(null,e)}}},{key:\"create\",value:function(t,e){var i=this.w;this.initModules();var s=this.w.globals;if(s.noData=!1,s.animationEnded=!1,this.responsive.checkResponsiveConfig(e),null===this.el)return s.animationEnded=!0,null;if(this.core.setupElements(),0===s.svgWidth)return s.animationEnded=!0,null;var a=CoreUtils.checkComboSeries(t);s.comboCharts=a.comboCharts,s.comboChartsHasBars=a.comboChartsHasBars,(0===t.length||1===t.length&&t[0].data&&0===t[0].data.length)&&this.series.handleNoData(),this.setupEventHandlers(),this.core.parseData(t),this.theme.init(),new Markers(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),i.globals.noData||this.legend.init(),this.series.hasAllSeriesEqualX(),s.axisCharts&&(this.core.coreCalculations(),\"category\"!==i.config.xaxis.type&&this.formatters.setLabelFormatters()),this.formatters.heatmapLabelFormatters(),this.dimensions.plotCoords();var r=this.core.xySettings();this.grid.createGridMask();var n=this.core.plotChartType(t,r);this.core.shiftGraphPosition();var o={plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}};return{elGraph:n,xyRatios:r,elInner:i.globals.dom.elGraphical,dimensions:o}}},{key:\"mount\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this,i=e.w;return new Promise$1(function(s,a){if(null===e.el)return a(new Error(\"Not enough data to display or target element not found\"));if((null===t||i.globals.allSeriesCollapsed)&&e.series.handleNoData(),e.annotations=new Annotations(e),e.core.drawAxis(i.config.chart.type,t.xyRatios),e.grid=new Grid(e),\"back\"===i.config.grid.position&&e.grid.drawGrid(),\"back\"===i.config.annotations.position&&e.annotations.drawAnnotations(),t.elGraph instanceof Array)for(var r=0;r<t.elGraph.length;r++)i.globals.dom.elGraphical.add(t.elGraph[r]);else i.globals.dom.elGraphical.add(t.elGraph);if(\"front\"===i.config.grid.position&&e.grid.drawGrid(),\"front\"===i.config.xaxis.crosshairs.position&&e.crosshairs.drawXCrosshairs(),\"front\"===i.config.yaxis[0].crosshairs.position&&e.crosshairs.drawYCrosshairs(),\"front\"===i.config.annotations.position&&e.annotations.drawAnnotations(),!i.globals.noData){if(i.config.tooltip.enabled&&!i.globals.noData&&e.w.globals.tooltip.drawTooltip(t.xyRatios),i.globals.axisCharts&&i.globals.isXNumeric)(i.config.chart.zoom.enabled||i.config.chart.selection&&i.config.chart.selection.enabled||i.config.chart.pan&&i.config.chart.pan.enabled)&&e.zoomPanSelection.init({xyRatios:t.xyRatios});else{var n=i.config.chart.toolbar.tools;n.zoom=!1,n.zoomin=!1,n.zoomout=!1,n.selection=!1,n.pan=!1,n.reset=!1}i.config.chart.toolbar.show&&!i.globals.allSeriesCollapsed&&e.toolbar.createToolbar()}i.globals.memory.methodsToExec.length>0&&i.globals.memory.methodsToExec.forEach(function(t){t.method(t.params,!1,t.context)}),i.globals.axisCharts||i.globals.noData||e.core.resizeNonAxisCharts(),s(e)})}},{key:\"clearPreviousPaths\",value:function(){var t=this.w;t.globals.previousPaths=[],t.globals.allSeriesCollapsed=!1,t.globals.collapsedSeries=[],t.globals.collapsedSeriesIndices=[]}},{key:\"updateOptions\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w;return t.series&&(this.resetSeries(!1),t.series.length&&t.series[0].data&&(t.series=t.series.map(function(t,e){return _objectSpread({},r.config.series[e],{name:t.name?t.name:r.config.series[e]&&r.config.series[e].name,type:t.type?t.type:r.config.series[e]&&r.config.series[e].type,data:t.data?t.data:r.config.series[e]&&r.config.series[e].data})})),this.revertDefaultAxisMinMax()),t.xaxis&&((t.xaxis.min||t.xaxis.max)&&this.forceXAxisUpdate(t),t.xaxis.categories&&t.xaxis.categories.length&&r.config.xaxis.convertedCatToNumeric&&(t=Defaults.convertCatToNumeric(t))),r.globals.collapsedSeriesIndices.length>0&&this.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this._updateOptions(t,e,i,s,a)}},{key:\"_updateOptions\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r=[this];s&&(r=this.getSyncedCharts()),this.w.globals.isExecCalled&&(r=[this],this.w.globals.isExecCalled=!1),r.forEach(function(s){var r=s.w;return r.globals.shouldAnimate=i,e||(r.globals.resized=!0,r.globals.dataChanged=!0,i&&s.series.getPreviousPaths()),t&&\"object\"===_typeof(t)&&(s.config=new Config(t),t=CoreUtils.extendArrayProps(s.config,t),r.config=Utils.extend(r.config,t),a&&(r.globals.lastXAxis=[],r.globals.lastYAxis=[],r.globals.initialConfig=Utils.extend({},r.config),r.globals.initialSeries=JSON.parse(JSON.stringify(r.config.series)))),s.update(t)})}},{key:\"updateSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.resetSeries(!1),this.revertDefaultAxisMinMax(),this._updateSeries(t,e,i)}},{key:\"appendSeries\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=this.w.config.series.slice();return s.push(t),this.resetSeries(!1),this.revertDefaultAxisMinMax(),this._updateSeries(s,e,i)}},{key:\"_updateSeries\",value:function(t,e){var i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=this.w;return this.w.globals.shouldAnimate=e,a.globals.dataChanged=!0,a.globals.allSeriesCollapsed&&(a.globals.allSeriesCollapsed=!1),e&&this.series.getPreviousPaths(),a.globals.axisCharts?(0===(i=t.map(function(t,e){return _objectSpread({},a.config.series[e],{name:t.name?t.name:a.config.series[e]&&a.config.series[e].name,type:t.type?t.type:a.config.series[e]&&a.config.series[e].type,data:t.data?t.data:a.config.series[e]&&a.config.series[e].data})})).length&&(i=[{data:[]}]),a.config.series=i):a.config.series=t.slice(),s&&(a.globals.initialConfig.series=JSON.parse(JSON.stringify(a.config.series)),a.globals.initialSeries=JSON.parse(JSON.stringify(a.config.series))),this.update()}},{key:\"getSyncedCharts\",value:function(){var t=this.getGroupedCharts(),e=[this];return t.length&&(e=[],t.forEach(function(t){e.push(t)})),e}},{key:\"getGroupedCharts\",value:function(){var t=this;return Apex._chartInstances.filter(function(t){if(t.group)return!0}).map(function(e){return t.w.config.chart.group===e.group?e.chart:t})}},{key:\"appendData\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var s=i.w.config.series.slice(),a=0;a<s.length;a++)if(void 0!==t[a])for(var r=0;r<t[a].data.length;r++)s[a].data.push(t[a].data[r]);return i.w.config.series=s,e&&(i.w.globals.initialSeries=JSON.parse(JSON.stringify(i.w.config.series))),this.update()}},{key:\"update\",value:function(t){var e=this;return new Promise$1(function(i,s){e.clear();var a=e.create(e.w.config.series,t);if(!a)return i(e);e.mount(a).then(function(){\"function\"==typeof e.w.config.chart.events.updated&&e.w.config.chart.events.updated(e,e.w),e.fireEvent(\"updated\",[e,e.w]),e.w.globals.isDirty=!0,i(e)}).catch(function(t){s(t)})})}},{key:\"forceXAxisUpdate\",value:function(t){var e=this.w;void 0!==t.xaxis.min&&(e.config.xaxis.min=t.xaxis.min,e.globals.lastXAxis.min=t.xaxis.min),void 0!==t.xaxis.max&&(e.config.xaxis.max=t.xaxis.max,e.globals.lastXAxis.max=t.xaxis.max)}},{key:\"revertDefaultAxisMinMax\",value:function(){var t=this.w;t.config.xaxis.min=t.globals.lastXAxis.min,t.config.xaxis.max=t.globals.lastXAxis.max,t.config.yaxis.map(function(e,i){t.globals.zoomed&&void 0!==t.globals.lastYAxis[i]&&(e.min=t.globals.lastYAxis[i].min,e.max=t.globals.lastYAxis[i].max)})}},{key:\"clear\",value:function(){this.zoomPanSelection&&this.zoomPanSelection.destroy(),this.toolbar&&this.toolbar.destroy(),this.animations=null,this.annotations=null,this.core=null,this.grid=null,this.series=null,this.responsive=null,this.theme=null,this.formatters=null,this.titleSubtitle=null,this.legend=null,this.dimensions=null,this.options=null,this.crosshairs=null,this.zoomPanSelection=null,this.toolbar=null,this.w.globals.tooltip=null,this.clearDomElements()}},{key:\"killSVG\",value:function(t){return new Promise$1(function(e,i){t.each(function(t,e){this.removeClass(\"*\"),this.off(),this.stop()},!0),t.ungroup(),t.clear(),e(\"done\")})}},{key:\"clearDomElements\",value:function(){var t=this;this.eventList.forEach(function(e){document.removeEventListener(e,t.documentEvent)});var e=this.w.globals.dom;if(null!==this.el)for(;this.el.firstChild;)this.el.removeChild(this.el.firstChild);this.killSVG(e.Paper),e.Paper.remove(),e.elWrap=null,e.elGraphical=null,e.elLegendWrap=null,e.baseEl=null,e.elGridRect=null,e.elGridRectMask=null,e.elGridRectMarkerMask=null,e.elDefs=null}},{key:\"destroy\",value:function(){this.clear();var t=this.w.config.chart.id;t&&Apex._chartInstances.forEach(function(e,i){e.id===t&&Apex._chartInstances.splice(i,1)}),window.removeEventListener(\"resize\",this.windowResizeHandler),window.removeResizeListener(this.el.parentNode,this.parentResizeCallback.bind(this))}},{key:\"toggleSeries\",value:function(t){var e=this.series.getSeriesByName(t),i=parseInt(e.getAttribute(\"data:realIndex\")),s=e.classList.contains(\"apexcharts-series-collapsed\");this.legend.toggleDataSeries(i,s)}},{key:\"resetSeries\",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.series.resetSeries(t)}},{key:\"setupEventHandlers\",value:function(){var t=this,e=this.w,i=this,s=e.globals.dom.baseEl.querySelector(e.globals.chartClass);this.eventListHandlers=[],this.eventList.forEach(function(t){s.addEventListener(t,function(t){\"mousedown\"===t.type&&1===t.which||(\"mouseup\"===t.type&&1===t.which||\"touchend\"===t.type)&&(\"function\"==typeof e.config.chart.events.click&&e.config.chart.events.click(t,i,e),i.fireEvent(\"click\",[t,i,e]))},{capture:!1,passive:!0})}),this.eventList.forEach(function(e){document.addEventListener(e,t.documentEvent)}),this.core.setupBrushHandler()}},{key:\"documentEvent\",value:function(t){var e=this.w;e.globals.clientX=\"touchmove\"===t.type?t.touches[0].clientX:t.clientX,e.globals.clientY=\"touchmove\"===t.type?t.touches[0].clientY:t.clientY}},{key:\"addXaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addXaxisAnnotationExternal(t,e,s)}},{key:\"addYaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addYaxisAnnotationExternal(t,e,s)}},{key:\"addPointAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addPointAnnotationExternal(t,e,s)}},{key:\"clearAnnotations\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:\"addText\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addText(t,e,s)}},{key:\"getChartArea\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-inner\")}},{key:\"getSeriesTotalXRange\",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:\"getHighestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Range$1(this.ctx).getMinYMaxY(t).highestY}},{key:\"getLowestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Range$1(this.ctx).getMinYMaxY(t).lowestY}},{key:\"getSeriesTotal\",value:function(){return this.w.globals.seriesTotals}},{key:\"setLocale\",value:function(t){this.setCurrentLocaleValues(t)}},{key:\"toggleDataPointSelection\",value:function(t,e){var i=this.w,s=null;i.globals.axisCharts?s=i.globals.dom.Paper.select(\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"'] path[j='\").concat(e,\"'], .apexcharts-series[data\\\\:realIndex='\").concat(t,\"'] circle[j='\").concat(e,\"'], .apexcharts-series[data\\\\:realIndex='\").concat(t,\"'] rect[j='\").concat(e,\"']\")).members[0]:(s=i.globals.dom.Paper.select(\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\")).members[0],(\"pie\"===i.config.chart.type||\"donut\"===i.config.chart.type)&&new Pie(this.ctx).pieClicked(t));s?new Graphics(this.ctx).pathMouseDown(s,null):console.warn(\"toggleDataPointSelection: Element not found\");return s.node?s.node:null}},{key:\"setCurrentLocaleValues\",value:function(t){var e=this.w.config.chart.locales;window.Apex.chart&&window.Apex.chart.locales&&window.Apex.chart.locales.length>0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter(function(e){return e.name===t})[0];if(!i)throw new Error(\"Wrong locale name provided. Please make sure you set the correct locale name in options\");var s=Utils.extend(en,i);this.w.globals.locale=s.options}},{key:\"dataURI\",value:function(){return new Exports(this.ctx).dataURI()}},{key:\"paper\",value:function(){return this.w.globals.dom.Paper}},{key:\"parentResizeCallback\",value:function(){this.w.globals.animationEnded&&this.windowResize()}},{key:\"windowResize\",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout(function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.update()},150)}}],[{key:\"initOnLoad\",value:function(){for(var e=document.querySelectorAll(\"[data-apexcharts]\"),i=0;i<e.length;i++){new t(e[i],JSON.parse(e[i].getAttribute(\"data-options\"))).render()}}},{key:\"exec\",value:function(t,e){var i=this.getChartByID(t);if(i){i.w.globals.isExecCalled=!0;for(var s=arguments.length,a=new Array(s>2?s-2:0),r=2;r<s;r++)a[r-2]=arguments[r];switch(e){case\"updateOptions\":return i.updateOptions.apply(i,a);case\"updateSeries\":return i.updateSeries.apply(i,a);case\"appendData\":return i.appendData.apply(i,a);case\"appendSeries\":return i.appendSeries.apply(i,a);case\"toggleSeries\":return i.toggleSeries.apply(i,a);case\"resetSeries\":return i.resetSeries.apply(i,a);case\"toggleDataPointSelection\":return i.toggleDataPointSelection.apply(i,a);case\"dataURI\":return i.dataURI.apply(i,a);case\"addXaxisAnnotation\":return i.addXaxisAnnotation.apply(i,a);case\"addYaxisAnnotation\":return i.addYaxisAnnotation.apply(i,a);case\"addPointAnnotation\":return i.addPointAnnotation.apply(i,a);case\"addText\":return i.addText.apply(i,a);case\"clearAnnotations\":return i.clearAnnotations.apply(i,a);case\"paper\":return i.paper.apply(i,a);case\"destroy\":return i.destroy()}}}},{key:\"merge\",value:function(t,e){return Utils.extend(t,e)}},{key:\"getChartByID\",value:function(t){return Apex._chartInstances.filter(function(e){return e.id===t})[0].chart}}]),t}();/* harmony default export */ __webpack_exports__[\"default\"] = (ApexCharts$1);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/harmony-module.js */ \"./node_modules/webpack/buildin/harmony-module.js\")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXBleGNoYXJ0cy9kaXN0L2FwZXhjaGFydHMuZXNtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FwZXhjaGFydHMvZGlzdC9hcGV4Y2hhcnRzLmVzbS5qcz9lMTIyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQXBleENoYXJ0cyB2My44LjVcbiAqIChjKSAyMDE4LTIwMTkgSnVuZWQgQ2hoaXBhXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cbmZ1bmN0aW9uIF90eXBlb2YodCl7cmV0dXJuKF90eXBlb2Y9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0pKHQpfWZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModCxlKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHM9ZVtpXTtzLmVudW1lcmFibGU9cy5lbnVtZXJhYmxlfHwhMSxzLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBzJiYocy53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscy5rZXkscyl9fWZ1bmN0aW9uIF9jcmVhdGVDbGFzcyh0LGUsaSl7cmV0dXJuIGUmJl9kZWZpbmVQcm9wZXJ0aWVzKHQucHJvdG90eXBlLGUpLGkmJl9kZWZpbmVQcm9wZXJ0aWVzKHQsaSksdH1mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkodCxlLGkpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09aSx0fWZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIGk9bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fSxzPU9iamVjdC5rZXlzKGkpO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihzPXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksdCkuZW51bWVyYWJsZX0pKSkscy5mb3JFYWNoKGZ1bmN0aW9uKGUpe19kZWZpbmVQcm9wZXJ0eSh0LGUsaVtlXSl9KX1yZXR1cm4gdH1mdW5jdGlvbiBfaW5oZXJpdHModCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJl9zZXRQcm90b3R5cGVPZih0LGUpfWZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KXtyZXR1cm4oX2dldFByb3RvdHlwZU9mPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9KSh0KX1mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCxlKXtyZXR1cm4oX3NldFByb3RvdHlwZU9mPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSkodCxlKX1mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiB0fWZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsZSl7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP19hc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk6ZX1mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkodCl7cmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyh0KXx8X2l0ZXJhYmxlVG9BcnJheSh0KXx8X25vbkl0ZXJhYmxlU3ByZWFkKCl9ZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgZT0wLGk9bmV3IEFycmF5KHQubGVuZ3RoKTtlPHQubGVuZ3RoO2UrKylpW2VdPXRbZV07cmV0dXJuIGl9fWZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkodCl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KXx8XCJbb2JqZWN0IEFyZ3VtZW50c11cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSlyZXR1cm4gQXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIil9dmFyIFV0aWxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcInNoYWRlUkdCQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWUuc3BsaXQoXCIsXCIpLHM9dDwwPzA6MjU1LGE9dDwwPy0xKnQ6dCxyPXBhcnNlSW50KGlbMF0uc2xpY2UoNCkpLG49cGFyc2VJbnQoaVsxXSksbz1wYXJzZUludChpWzJdKTtyZXR1cm5cInJnYihcIisoTWF0aC5yb3VuZCgocy1yKSphKStyKStcIixcIisoTWF0aC5yb3VuZCgocy1uKSphKStuKStcIixcIisoTWF0aC5yb3VuZCgocy1vKSphKStvKStcIilcIn19LHtrZXk6XCJzaGFkZUhleENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1wYXJzZUludChlLnNsaWNlKDEpLDE2KSxzPXQ8MD8wOjI1NSxhPXQ8MD8tMSp0OnQscj1pPj4xNixuPWk+PjgmMjU1LG89MjU1Jmk7cmV0dXJuXCIjXCIrKDE2Nzc3MjE2KzY1NTM2KihNYXRoLnJvdW5kKChzLXIpKmEpK3IpKzI1NiooTWF0aC5yb3VuZCgocy1uKSphKStuKSsoTWF0aC5yb3VuZCgocy1vKSphKStvKSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpfX0se2tleTpcInNoYWRlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBlLmxlbmd0aD43P3RoaXMuc2hhZGVSR0JDb2xvcih0LGUpOnRoaXMuc2hhZGVIZXhDb2xvcih0LGUpfX1dLFt7a2V5OlwiYmluZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LHtrZXk6XCJpc09iamVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcIm9iamVjdFwiPT09X3R5cGVvZih0KSYmIUFycmF5LmlzQXJyYXkodCkmJm51bGwhPXR9fSx7a2V5OlwibGlzdFRvQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaVtlXT10W2VdO3JldHVybiBpfX0se2tleTpcImV4dGVuZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcztcImZ1bmN0aW9uXCIhPXR5cGVvZiBPYmplY3QuYXNzaWduJiYoT2JqZWN0LmFzc2lnbj1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3RcIik7Zm9yKHZhciBlPU9iamVjdCh0KSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIHM9YXJndW1lbnRzW2ldO2lmKG51bGwhPXMpZm9yKHZhciBhIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShhKSYmKGVbYV09c1thXSl9cmV0dXJuIGV9KTt2YXIgcz1PYmplY3QuYXNzaWduKHt9LHQpO3JldHVybiB0aGlzLmlzT2JqZWN0KHQpJiZ0aGlzLmlzT2JqZWN0KGUpJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2kuaXNPYmplY3QoZVthXSkmJmEgaW4gdD9zW2FdPWkuZXh0ZW5kKHRbYV0sZVthXSk6T2JqZWN0LmFzc2lnbihzLF9kZWZpbmVQcm9wZXJ0eSh7fSxhLGVbYV0pKX0pLHN9fSx7a2V5OlwiZXh0ZW5kQXJyYXlcIix2YWx1ZTpmdW5jdGlvbihlLGkpe3ZhciBzPVtdO3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtzLnB1c2godC5leHRlbmQoaSxlKSl9KSxlPXN9fSx7a2V5OlwibW9udGhNb2RcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCUxMn19LHtrZXk6XCJhZGRQcm9wc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9ZS5zcGxpdChcIi5cIikpLHRbZVswXV09dFtlWzBdXXx8e307dmFyIHM9dFtlWzBdXTtyZXR1cm4gZS5sZW5ndGg+MT8oZS5zaGlmdCgpLHRoaXMuYWRkUHJvcHMocyxlLGkpKTp0W2VbMF1dPWksdH19LHtrZXk6XCJjbG9uZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKFwiW29iamVjdCBBcnJheV1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSl7Zm9yKHZhciBlPVtdLGk9MDtpPHQubGVuZ3RoO2krKyllW2ldPXRoaXMuY2xvbmUodFtpXSk7cmV0dXJuIGV9aWYoXCJvYmplY3RcIj09PV90eXBlb2YodCkpe3ZhciBzPXt9O2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihzW2FdPXRoaXMuY2xvbmUodFthXSkpO3JldHVybiBzfXJldHVybiB0fX0se2tleTpcImxvZzEwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4xMH19LHtrZXk6XCJyb3VuZFRvQmFzZTEwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cxMCh0KSkpfX0se2tleTpcInJvdW5kVG9CYXNlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5wb3coZSxNYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKGUpKSl9fSx7a2V5OlwicGFyc2VOdW1iZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/dDpwYXJzZUZsb2F0KHQpfX0se2tleTpcIm5vRXhwb25lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9U3RyaW5nKHQpLnNwbGl0KC9bZUVdLyk7aWYoMT09ZS5sZW5ndGgpcmV0dXJuIGVbMF07dmFyIGk9XCJcIixzPXQ8MD9cIi1cIjpcIlwiLGE9ZVswXS5yZXBsYWNlKFwiLlwiLFwiXCIpLHI9TnVtYmVyKGVbMV0pKzE7aWYocjwwKXtmb3IoaT1zK1wiMC5cIjtyKys7KWkrPVwiMFwiO3JldHVybiBpK2EucmVwbGFjZSgvXlxcLS8sXCJcIil9Zm9yKHItPWEubGVuZ3RoO3ItLTspaSs9XCIwXCI7cmV0dXJuIGEraX19LHtrZXk6XCJnZXREaW1lbnNpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9Z2V0Q29tcHV0ZWRTdHlsZSh0KSxpPVtdLHM9dC5jbGllbnRIZWlnaHQsYT10LmNsaWVudFdpZHRoO3JldHVybiBzLT1wYXJzZUZsb2F0KGUucGFkZGluZ1RvcCkrcGFyc2VGbG9hdChlLnBhZGRpbmdCb3R0b20pLGEtPXBhcnNlRmxvYXQoZS5wYWRkaW5nTGVmdCkrcGFyc2VGbG9hdChlLnBhZGRpbmdSaWdodCksaS5wdXNoKGEpLGkucHVzaChzKSxpfX0se2tleTpcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3RvcDplLnRvcCxyaWdodDplLnJpZ2h0LGJvdHRvbTplLmJvdHRvbSxsZWZ0OmUubGVmdCx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodCx4OmUueCx5OmUueX19fSx7a2V5OlwiaGV4VG9SZ2JhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCIjOTk5OTk5XCIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LjY7XCIjXCIhPT10LnN1YnN0cmluZygwLDEpJiYodD1cIiM5OTk5OTlcIik7dmFyIGk9dC5yZXBsYWNlKFwiI1wiLFwiXCIpO2k9aS5tYXRjaChuZXcgUmVnRXhwKFwiKC57XCIraS5sZW5ndGgvMytcIn0pXCIsXCJnXCIpKTtmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKylpW3NdPXBhcnNlSW50KDE9PT1pW3NdLmxlbmd0aD9pW3NdK2lbc106aVtzXSwxNik7cmV0dXJuIHZvaWQgMCE9PWUmJmkucHVzaChlKSxcInJnYmEoXCIraS5qb2luKFwiLFwiKStcIilcIn19LHtrZXk6XCJnZXRPcGFjaXR5RnJvbVJHQkFcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4odD10Lm1hdGNoKC9ecmdiYT9bXFxzK10/XFwoW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8vaSkpWzNdfX0se2tleTpcInJnYjJoZXhcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4odD10Lm1hdGNoKC9ecmdiYT9bXFxzK10/XFwoW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8vaSkpJiY0PT09dC5sZW5ndGg/XCIjXCIrKFwiMFwiK3BhcnNlSW50KHRbMV0sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKyhcIjBcIitwYXJzZUludCh0WzJdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSsoXCIwXCIrcGFyc2VJbnQodFszXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik6XCJcIn19LHtrZXk6XCJpc0NvbG9ySGV4XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuLyheI1swLTlBLUZdezZ9JCl8KF4jWzAtOUEtRl17M30kKS9pLnRlc3QodCl9fSx7a2V5OlwicG9sYXJUb0NhcnRlc2lhblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhPShzLTkwKSpNYXRoLlBJLzE4MDtyZXR1cm57eDp0K2kqTWF0aC5jb3MoYSkseTplK2kqTWF0aC5zaW4oYSl9fX0se2tleTpcImVzY2FwZVN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcInhcIixpPXQudG9TdHJpbmcoKS5zbGljZSgpO3JldHVybiBpPWkucmVwbGFjZSgvW2AgfiFAIyQlXiYqKClffCtcXC09Pzs6J1wiLC48Plxce1xcfVxcW1xcXVxcXFxcXC9dL2dpLGUpfX0se2tleTpcIm5lZ1RvWmVyb1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0PDA/MDp0fX0se2tleTpcIm1vdmVJbmRleEluQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoaT49dC5sZW5ndGgpZm9yKHZhciBzPWktdC5sZW5ndGgrMTtzLS07KXQucHVzaCh2b2lkIDApO3JldHVybiB0LnNwbGljZShpLDAsdC5zcGxpY2UoZSwxKVswXSksdH19LHtrZXk6XCJleHRyYWN0TnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodC5yZXBsYWNlKC9bXlxcZFxcLl0qL2csXCJcIikpfX0se2tleTpcInJhbmRvbVN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1cIlwiLGk9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCIscz0wO3M8dDtzKyspZSs9aS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmkubGVuZ3RoKSk7cmV0dXJuIGV9fSx7a2V5OlwiZmluZEFuY2VzdG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IoOyh0PXQucGFyZW50RWxlbWVudCkmJiF0LmNsYXNzTGlzdC5jb250YWlucyhlKTspO3JldHVybiB0fX0se2tleTpcInNldEVMc3R5bGVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiYodC5zdHlsZS5rZXk9ZVtpXSl9fSx7a2V5OlwiaXNOdW1iZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4haXNOYU4odCkmJnBhcnNlRmxvYXQoTnVtYmVyKHQpKT09PXQmJiFpc05hTihwYXJzZUludCh0LDEwKSl9fSx7a2V5OlwiaXNGbG9hdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBOdW1iZXIodCk9PT10JiZ0JTEhPTB9fSx7a2V5OlwiaXNTYWZhcmlcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybi9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl9fSx7a2V5OlwiaXNGaXJlZm94XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJmaXJlZm94XCIpPi0xfX0se2tleTpcImlzSUUxMVwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoLTEhPT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRVwiKXx8d2luZG93Lm5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoXCJUcmlkZW50L1wiKT4tMSlyZXR1cm4hMH19LHtrZXk6XCJpc0lFXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCxlPXQuaW5kZXhPZihcIk1TSUUgXCIpO2lmKGU+MClyZXR1cm4gcGFyc2VJbnQodC5zdWJzdHJpbmcoZSs1LHQuaW5kZXhPZihcIi5cIixlKSksMTApO2lmKHQuaW5kZXhPZihcIlRyaWRlbnQvXCIpPjApe3ZhciBpPXQuaW5kZXhPZihcInJ2OlwiKTtyZXR1cm4gcGFyc2VJbnQodC5zdWJzdHJpbmcoaSszLHQuaW5kZXhPZihcIi5cIixpKSksMTApfXZhciBzPXQuaW5kZXhPZihcIkVkZ2UvXCIpO3JldHVybiBzPjAmJnBhcnNlSW50KHQuc3Vic3RyaW5nKHMrNSx0LmluZGV4T2YoXCIuXCIscykpLDEwKX19XSksdH0oKSxGaWx0ZXJzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiZ2V0RGVmYXVsdEZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3QudW5maWx0ZXIoITApLChuZXcgd2luZG93LlNWRy5GaWx0ZXIpLnNpemUoXCIxMjAlXCIsXCIxODAlXCIsXCItNSVcIixcIi00MCVcIiksXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlcj90aGlzLmFwcGx5RmlsdGVyKHQsZSxpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci50eXBlLGkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnZhbHVlKTppLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQmJnRoaXMuZHJvcFNoYWRvdyh0LGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3csZSl9fSx7a2V5OlwiYWRkTm9ybWFsRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZ0aGlzLmRyb3BTaGFkb3codCxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LGUpfX0se2tleTpcImFkZExpZ2h0ZW5GaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcyxhPXRoaXMudyxyPWkuaW50ZW5zaXR5O2lmKCFVdGlscy5pc0ZpcmVmb3goKSl7dC51bmZpbHRlcighMCk7dmFyIG49bmV3IHdpbmRvdy5TVkcuRmlsdGVyO24uc2l6ZShcIjEyMCVcIixcIjE4MCVcIixcIi01JVwiLFwiLTQwJVwiKSx0LmZpbHRlcihmdW5jdGlvbih0KXt2YXIgaT1hLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OyhuPWkuZW5hYmxlZD9zLmFkZFNoYWRvdyh0LGUsaSk6dCkuY29tcG9uZW50VHJhbnNmZXIoe3JnYjp7dHlwZTpcImxpbmVhclwiLHNsb3BlOjEuNSxpbnRlcmNlcHQ6cn19KX0pLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIil9fX0se2tleTpcImFkZERhcmtlbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLGE9dGhpcy53LHI9aS5pbnRlbnNpdHk7aWYoIVV0aWxzLmlzRmlyZWZveCgpKXt0LnVuZmlsdGVyKCEwKTt2YXIgbj1uZXcgd2luZG93LlNWRy5GaWx0ZXI7bi5zaXplKFwiMTIwJVwiLFwiMTgwJVwiLFwiLTUlXCIsXCItNDAlXCIpLHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3ZhciBpPWEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7KG49aS5lbmFibGVkP3MuYWRkU2hhZG93KHQsZSxpKTp0KS5jb21wb25lbnRUcmFuc2Zlcih7cmdiOnt0eXBlOlwibGluZWFyXCIsc2xvcGU6cn19KX0pLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIil9fX0se2tleTpcImFwcGx5RmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTouNTtzd2l0Y2goaSl7Y2FzZVwibm9uZVwiOnRoaXMuYWRkTm9ybWFsRmlsdGVyKHQsZSk7YnJlYWs7Y2FzZVwibGlnaHRlblwiOnRoaXMuYWRkTGlnaHRlbkZpbHRlcih0LGUse2ludGVuc2l0eTpzfSk7YnJlYWs7Y2FzZVwiZGFya2VuXCI6dGhpcy5hZGREYXJrZW5GaWx0ZXIodCxlLHtpbnRlbnNpdHk6c30pfX19LHtrZXk6XCJhZGRTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9aS5ibHVyLGE9aS50b3Ascj1pLmxlZnQsbj1pLmNvbG9yLG89aS5vcGFjaXR5LGw9dC5mbG9vZChBcnJheS5pc0FycmF5KG4pP25bZV06bixvKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSxcImluXCIpLm9mZnNldChyLGEpLmdhdXNzaWFuQmx1cihzKS5tZXJnZSh0LnNvdXJjZSk7cmV0dXJuIHQuYmxlbmQodC5zb3VyY2UsbCl9fSx7a2V5OlwiZHJvcFNoYWRvd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjAscz1lLnRvcCxhPWUubGVmdCxyPWUuYmx1cixuPWUuY29sb3Isbz1lLm9wYWNpdHksbD1lLm5vVXNlclNwYWNlT25Vc2UsaD10aGlzLnc7cmV0dXJuIHQudW5maWx0ZXIoITApLFV0aWxzLmlzSUUoKSYmXCJyYWRpYWxCYXJcIj09PWguY29uZmlnLmNoYXJ0LnR5cGU/dDoobj1BcnJheS5pc0FycmF5KG4pP25baV06biwobmV3IHdpbmRvdy5TVkcuRmlsdGVyKS5zaXplKFwiMTIwJVwiLFwiMTgwJVwiLFwiLTUlXCIsXCItNDAlXCIpLHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3ZhciBlPW51bGw7ZT1VdGlscy5pc1NhZmFyaSgpfHxVdGlscy5pc0ZpcmVmb3goKXx8VXRpbHMuaXNJRSgpP3QuZmxvb2QobixvKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSxcImluXCIpLm9mZnNldChhLHMpLmdhdXNzaWFuQmx1cihyKTp0LmZsb29kKG4sbykuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQoYSxzKS5nYXVzc2lhbkJsdXIocikubWVyZ2UodC5zb3VyY2UpLHQuYmxlbmQodC5zb3VyY2UsZSl9KSxsfHx0LmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsdGVyVW5pdHNcIixcInVzZXJTcGFjZU9uVXNlXCIpLHQpfX0se2tleTpcInNldFNlbGVjdGlvbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLnc7aWYodm9pZCAwIT09cy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tlXSYmcy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tlXS5pbmRleE9mKGkpPi0xKXt0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIiwhMCk7dmFyIGE9cy5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXI7XCJub25lXCIhPT1hJiZ0aGlzLmFwcGx5RmlsdGVyKHQsZSxhLnR5cGUsYS52YWx1ZSl9fX1dKSx0fSgpLEFuaW1hdGlvbnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnNldEVhc2luZ0Z1bmN0aW9ucygpfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcInNldEVhc2luZ0Z1bmN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7c3dpdGNoKHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lYXNpbmcpe2Nhc2VcImxpbmVhclwiOnQ9XCItXCI7YnJlYWs7Y2FzZVwiZWFzZWluXCI6dD1cIjxcIjticmVhaztjYXNlXCJlYXNlb3V0XCI6dD1cIj5cIjticmVhaztjYXNlXCJlYXNlaW5vdXRcIjp0PVwiPD5cIjticmVhaztjYXNlXCJzd2luZ1wiOnQ9ZnVuY3Rpb24odCl7dmFyIGU9MS43MDE1ODtyZXR1cm4odC09MSkqdCooKGUrMSkqdCtlKSsxfTticmVhaztjYXNlXCJib3VuY2VcIjp0PWZ1bmN0aW9uKHQpe3JldHVybiB0PDEvMi43NT83LjU2MjUqdCp0OnQ8Mi8yLjc1PzcuNTYyNSoodC09MS41LzIuNzUpKnQrLjc1OnQ8Mi41LzIuNzU/Ny41NjI1Kih0LT0yLjI1LzIuNzUpKnQrLjkzNzU6Ny41NjI1Kih0LT0yLjYyNS8yLjc1KSp0Ky45ODQzNzV9O2JyZWFrO2Nhc2VcImVsYXN0aWNcIjp0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ISF0P3Q6TWF0aC5wb3coMiwtMTAqdCkqTWF0aC5zaW4oKHQtLjA3NSkqKDIqTWF0aC5QSSkvLjMpKzF9O2JyZWFrO2RlZmF1bHQ6dD1cIjw+XCJ9dGhpcy53Lmdsb2JhbHMuZWFzaW5nPXR9fSx7a2V5OlwiYW5pbWF0ZUxpbmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt0LmF0dHIoZSkuYW5pbWF0ZShzKS5hdHRyKGkpfX0se2tleTpcImFuaW1hdGVDaXJjbGVSYWRpdXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEpe2V8fChlPTApLHQuYXR0cih7cjplfSkuYW5pbWF0ZShzLGEpLmF0dHIoe3I6aX0pfX0se2tleTpcImFuaW1hdGVDaXJjbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEpe3QuYXR0cih7cjplLnIsY3g6ZS5jeCxjeTplLmN5fSkuYW5pbWF0ZShzLGEpLmF0dHIoe3I6aS5yLGN4OmkuY3gsY3k6aS5jeX0pfX0se2tleTpcImFuaW1hdGVSZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhKXt0LmF0dHIoZSkuYW5pbWF0ZShzKS5hdHRyKGkpLmFmdGVyQWxsKGZ1bmN0aW9uKCl7YSgpfSl9fSx7a2V5OlwiYW5pbWF0ZVBhdGhzR3JhZHVhbGx5XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lbCxpPXQuaixzPXQucGF0aEZyb20sYT10LnBhdGhUbyxyPXQuc3BlZWQsbj10LmRlbGF5LG89dC5zdHJva2VXaWR0aCxsPXRoaXMudyxoPTA7bC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmVuYWJsZWQmJihoPWwuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSksbC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQmJmwuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKGg9MCksdGhpcy5tb3JwaFNWRyhlLGkscyxhLHIsbyxuKmgpfX0se2tleTpcInNob3dEZWxheWVkRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZWwuY2xhc3NMaXN0LnJlbW92ZShcImhpZGRlblwiKX0pfX0se2tleTpcImFuaW1hdGlvbkNvbXBsZXRlZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kJiZ0LmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kKHRoaXMuY3R4LHQpfX0se2tleTpcIm1vcnBoU1ZHXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhLHIsbil7dmFyIG89dGhpcyxsPXRoaXMudztpfHwoaT10LmF0dHIoXCJwYXRoRnJvbVwiKSksc3x8KHM9dC5hdHRyKFwicGF0aFRvXCIpKSwoIWl8fGkuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8aS5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKGk9XCJNIDAgXCIuY29uY2F0KGwuZ2xvYmFscy5ncmlkSGVpZ2h0KSxhPTEpLChzLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fHMuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihzPVwiTSAwIFwiLmNvbmNhdChsLmdsb2JhbHMuZ3JpZEhlaWdodCksYT0xKSxsLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZXx8KGE9MSksdC5wbG90KGkpLmFuaW1hdGUoMSxsLmdsb2JhbHMuZWFzaW5nLG4pLnBsb3QoaSkuYW5pbWF0ZShhLGwuZ2xvYmFscy5lYXNpbmcsbikucGxvdChzKS5hZnRlckFsbChmdW5jdGlvbigpe1V0aWxzLmlzTnVtYmVyKGUpP2U9PT1sLmdsb2JhbHMuc2VyaWVzW2wuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMiYmbC5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJm8uYW5pbWF0aW9uQ29tcGxldGVkKCk6bC5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJm8uYW5pbWF0aW9uQ29tcGxldGVkKCksby5zaG93RGVsYXllZEVsZW1lbnRzKCl9KX19XSksdH0oKSxHcmFwaGljcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImRyYXdMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOlwiI2E4YThhOFwiLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOjAsbj1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbDtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmxpbmUoKS5hdHRyKHt4MTp0LHkxOmUseDI6aSx5MjpzLHN0cm9rZTphLFwic3Ryb2tlLWRhc2hhcnJheVwiOnIsXCJzdHJva2Utd2lkdGhcIjpufSl9fSx7a2V5OlwiZHJhd1JlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLGE9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjAscj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06XCIjZmVmZWZlXCIsbj1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06MSxvPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsLGw9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOm51bGwsaD1hcmd1bWVudHMubGVuZ3RoPjkmJnZvaWQgMCE9PWFyZ3VtZW50c1s5XT9hcmd1bWVudHNbOV06MCxjPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5yZWN0KCk7cmV0dXJuIGMuYXR0cih7eDp0LHk6ZSx3aWR0aDppPjA/aTowLGhlaWdodDpzPjA/czowLHJ4OmEscnk6YSxmaWxsOnIsb3BhY2l0eTpuLFwic3Ryb2tlLXdpZHRoXCI6bnVsbCE9PW8/bzowLHN0cm9rZTpudWxsIT09bD9sOlwibm9uZVwiLFwic3Ryb2tlLWRhc2hhcnJheVwiOmh9KSxjfX0se2tleTpcImRyYXdQb2x5Z29uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlwiI2UxZTFlMVwiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOlwibm9uZVwiO3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucG9seWdvbih0KS5hdHRyKHtmaWxsOmksc3Ryb2tlOmV9KX19LHtrZXk6XCJkcmF3Q2lyY2xlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsaT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuY2lyY2xlKDIqdCk7cmV0dXJuIG51bGwhPT1lJiZpLmF0dHIoZSksaX19LHtrZXk6XCJkcmF3UGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZCxpPXZvaWQgMD09PWU/XCJcIjplLHM9dC5zdHJva2UsYT12b2lkIDA9PT1zP1wiI2E4YThhOFwiOnMscj10LnN0cm9rZVdpZHRoLG49dm9pZCAwPT09cj8xOnIsbz10LmZpbGwsbD10LmZpbGxPcGFjaXR5LGg9dm9pZCAwPT09bD8xOmwsYz10LnN0cm9rZU9wYWNpdHksZD12b2lkIDA9PT1jPzE6Yyx1PXQuY2xhc3NlcyxnPXQuc3Ryb2tlTGluZWNhcCxmPXZvaWQgMD09PWc/bnVsbDpnLHA9dC5zdHJva2VEYXNoQXJyYXkseD12b2lkIDA9PT1wPzA6cCxtPXRoaXMudztyZXR1cm4gbnVsbD09PWYmJihmPW0uY29uZmlnLnN0cm9rZS5saW5lQ2FwKSwoaS5pbmRleE9mKFwidW5kZWZpbmVkXCIpPi0xfHxpLmluZGV4T2YoXCJOYU5cIik+LTEpJiYoaT1cIk0gMCBcIi5jb25jYXQobS5nbG9iYWxzLmdyaWRIZWlnaHQpKSxtLmdsb2JhbHMuZG9tLlBhcGVyLnBhdGgoaSkuYXR0cih7ZmlsbDpvLFwiZmlsbC1vcGFjaXR5XCI6aCxzdHJva2U6YSxcInN0cm9rZS1vcGFjaXR5XCI6ZCxcInN0cm9rZS1saW5lY2FwXCI6ZixcInN0cm9rZS13aWR0aFwiOm4sXCJzdHJva2UtZGFzaGFycmF5XCI6eCxjbGFzczp1fSl9fSx7a2V5OlwiZ3JvdXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGU9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmdyb3VwKCk7cmV0dXJuIG51bGwhPT10JiZlLmF0dHIodCksZX19LHtrZXk6XCJtb3ZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1bXCJNXCIsdCxlXS5qb2luKFwiIFwiKTtyZXR1cm4gaX19LHtrZXk6XCJsaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxzPW51bGw7cmV0dXJuIG51bGw9PT1pP3M9W1wiTFwiLHQsZV0uam9pbihcIiBcIik6XCJIXCI9PT1pP3M9W1wiSFwiLHRdLmpvaW4oXCIgXCIpOlwiVlwiPT09aSYmKHM9W1wiVlwiLGVdLmpvaW4oXCIgXCIpKSxzfX0se2tleTpcImN1cnZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhLHIpe3ZhciBuPVtcIkNcIix0LGUsaSxzLGEscl0uam9pbihcIiBcIik7cmV0dXJuIG59fSx7a2V5OlwicXVhZHJhdGljQ3VydmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm5bXCJRXCIsdCxlLGksc10uam9pbihcIiBcIil9fSx7a2V5OlwiYXJjXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhLHIsbil7dmFyIG89XCJBXCI7YXJndW1lbnRzLmxlbmd0aD43JiZ2b2lkIDAhPT1hcmd1bWVudHNbN10mJmFyZ3VtZW50c1s3XSYmKG89XCJhXCIpO3ZhciBsPVtvLHQsZSxpLHMsYSxyLG5dLmpvaW4oXCIgXCIpO3JldHVybiBsfX0se2tleTpcInJlbmRlclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10Lmoscz10LnJlYWxJbmRleCxhPXQucGF0aEZyb20scj10LnBhdGhUbyxuPXQuc3Ryb2tlLG89dC5zdHJva2VXaWR0aCxsPXQuc3Ryb2tlTGluZWNhcCxoPXQuZmlsbCxjPXQuYW5pbWF0aW9uRGVsYXksZD10LmluaXRpYWxTcGVlZCx1PXQuZGF0YUNoYW5nZVNwZWVkLGc9dC5jbGFzc05hbWUsZj10LnNob3VsZENsaXBUb0dyaWQscD12b2lkIDA9PT1mfHxmLHg9dC5iaW5kRXZlbnRzT25QYXRocyxtPXZvaWQgMD09PXh8fHgsYj10LmRyYXdTaGFkb3csdj12b2lkIDA9PT1ifHxiLHk9dGhpcy53LHc9bmV3IEZpbHRlcnModGhpcy5jdHgpLGs9bmV3IEFuaW1hdGlvbnModGhpcy5jdHgpLEE9dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsUz1BJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkLEM9ISEoQSYmIXkuZ2xvYmFscy5yZXNpemVkfHxTJiZ5Lmdsb2JhbHMuZGF0YUNoYW5nZWQmJnkuZ2xvYmFscy5zaG91bGRBbmltYXRlKTtDP2U9YTooZT1yLGsuYW5pbWF0aW9uQ29tcGxldGVkKCkpO3ZhciBMPXkuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXksUD0wO1A9QXJyYXkuaXNBcnJheShMKT9MW3NdOnkuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXk7dmFyIHo9dGhpcy5kcmF3UGF0aCh7ZDplLHN0cm9rZTpuLHN0cm9rZVdpZHRoOm8sZmlsbDpoLGZpbGxPcGFjaXR5OjEsY2xhc3NlczpnLHN0cm9rZUxpbmVjYXA6bCxzdHJva2VEYXNoQXJyYXk6UH0pO2lmKHouYXR0cihcImluZGV4XCIscykscCYmei5hdHRyKHtcImNsaXAtcGF0aFwiOlwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoeS5nbG9iYWxzLmN1aWQsXCIpXCIpfSksXCJub25lXCIhPT15LmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci50eXBlKXcuZ2V0RGVmYXVsdEZpbHRlcih6LHMpO2Vsc2UgaWYoeS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZ2JiYoIXkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZFNlcmllc3x8eS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkU2VyaWVzJiYtMSE9PXkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZFNlcmllcy5pbmRleE9mKHMpKSl7dmFyIFQ9eS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzt3LmRyb3BTaGFkb3coeixULHMpfW0mJih6Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0aGlzLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx6KSksei5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdGhpcy5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMseikpLHoubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx6KSkpLHouYXR0cih7cGF0aFRvOnIscGF0aEZyb206YX0pO3ZhciBNPXtlbDp6LGo6aSxwYXRoRnJvbTphLHBhdGhUbzpyLHN0cm9rZVdpZHRoOm99O3JldHVybiFBfHx5Lmdsb2JhbHMucmVzaXplZHx8eS5nbG9iYWxzLmRhdGFDaGFuZ2VkPyF5Lmdsb2JhbHMucmVzaXplZCYmeS5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxrLnNob3dEZWxheWVkRWxlbWVudHMoKTprLmFuaW1hdGVQYXRoc0dyYWR1YWxseShfb2JqZWN0U3ByZWFkKHt9LE0se3NwZWVkOmQsZGVsYXk6Y30pKSx5Lmdsb2JhbHMuZGF0YUNoYW5nZWQmJlMmJkMmJmsuYW5pbWF0ZVBhdGhzR3JhZHVhbGx5KF9vYmplY3RTcHJlYWQoe30sTSx7c3BlZWQ6dX0pKSx6fX0se2tleTpcImRyYXdQYXR0ZXJuXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpcIiNhOGE4YThcIixhPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowO3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucGF0dGVybihlLGksZnVuY3Rpb24ocil7XCJob3Jpem9udGFsTGluZXNcIj09PXQ/ci5saW5lKDAsMCxpLDApLnN0cm9rZSh7Y29sb3I6cyx3aWR0aDphKzF9KTpcInZlcnRpY2FsTGluZXNcIj09PXQ/ci5saW5lKDAsMCwwLGUpLnN0cm9rZSh7Y29sb3I6cyx3aWR0aDphKzF9KTpcInNsYW50ZWRMaW5lc1wiPT09dD9yLmxpbmUoMCwwLGUsaSkuc3Ryb2tlKHtjb2xvcjpzLHdpZHRoOmF9KTpcInNxdWFyZXNcIj09PXQ/ci5yZWN0KGUsaSkuZmlsbChcIm5vbmVcIikuc3Ryb2tlKHtjb2xvcjpzLHdpZHRoOmF9KTpcImNpcmNsZXNcIj09PXQmJnIuY2lyY2xlKGUpLmZpbGwoXCJub25lXCIpLnN0cm9rZSh7Y29sb3I6cyx3aWR0aDphfSl9KX19LHtrZXk6XCJkcmF3R3JhZGllbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwsbz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbCxsPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsLGg9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOjAsYz10aGlzLnc7ZT1VdGlscy5oZXhUb1JnYmEoZSxzKSxpPVV0aWxzLmhleFRvUmdiYShpLGEpO3ZhciBkPTAsdT0xLGc9MSxmPW51bGw7bnVsbCE9PW8mJihkPXZvaWQgMCE9PW9bMF0/b1swXS8xMDA6MCx1PXZvaWQgMCE9PW9bMV0/b1sxXS8xMDA6MSxnPXZvaWQgMCE9PW9bMl0/b1syXS8xMDA6MSxmPXZvaWQgMCE9PW9bM10/b1szXS8xMDA6bnVsbCk7dmFyIHA9IShcImRvbnV0XCIhPT1jLmNvbmZpZy5jaGFydC50eXBlJiZcInBpZVwiIT09Yy5jb25maWcuY2hhcnQudHlwZSYmXCJidWJibGVcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUpO2lmKHI9bnVsbD09PWx8fDA9PT1sLmxlbmd0aD9jLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KHA/XCJyYWRpYWxcIjpcImxpbmVhclwiLGZ1bmN0aW9uKHQpe3QuYXQoZCxlLHMpLHQuYXQodSxpLGEpLHQuYXQoZyxpLGEpLG51bGwhPT1mJiZ0LmF0KGYsZSxzKX0pOmMuZ2xvYmFscy5kb20uUGFwZXIuZ3JhZGllbnQocD9cInJhZGlhbFwiOlwibGluZWFyXCIsZnVuY3Rpb24odCl7KEFycmF5LmlzQXJyYXkobFtoXSk/bFtoXTpsKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QuYXQoZS5vZmZzZXQvMTAwLGUuY29sb3IsZS5vcGFjaXR5KX0pfSkscCl7dmFyIHg9Yy5nbG9iYWxzLmdyaWRXaWR0aC8yLG09Yy5nbG9iYWxzLmdyaWRIZWlnaHQvMjtcImJ1YmJsZVwiIT09Yy5jb25maWcuY2hhcnQudHlwZT9yLmF0dHIoe2dyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGN4OngsY3k6bSxyOm59KTpyLmF0dHIoe2N4Oi41LGN5Oi41LHI6LjgsZng6LjIsZnk6LjJ9KX1lbHNlXCJ2ZXJ0aWNhbFwiPT09dD9yLmZyb20oMCwwKS50bygwLDEpOlwiZGlhZ29uYWxcIj09PXQ/ci5mcm9tKDAsMCkudG8oMSwxKTpcImhvcml6b250YWxcIj09PXQ/ci5mcm9tKDAsMSkudG8oMSwxKTpcImRpYWdvbmFsMlwiPT09dCYmci5mcm9tKDAsMSkudG8oMiwyKTtyZXR1cm4gcn19LHtrZXk6XCJkcmF3VGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LHM9dC54LGE9dC55LHI9dC50ZXh0LG49dC50ZXh0QW5jaG9yLG89dC5mb250U2l6ZSxsPXQuZm9udEZhbWlseSxoPXQuZm9udFdlaWdodCxjPXQuZm9yZUNvbG9yLGQ9dC5vcGFjaXR5O3JldHVybiB2b2lkIDA9PT1yJiYocj1cIlwiKSxufHwobj1cInN0YXJ0XCIpLGN8fChjPWkuY29uZmlnLmNoYXJ0LmZvcmVDb2xvciksbD1sfHxpLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGg9aHx8XCJyZWd1bGFyXCIsKGU9QXJyYXkuaXNBcnJheShyKT9pLmdsb2JhbHMuZG9tLlBhcGVyLnRleHQoZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxyLmxlbmd0aDtlKyspdC50c3BhbihyW2VdKX0pOmkuZ2xvYmFscy5kb20uUGFwZXIucGxhaW4ocikpLmF0dHIoe3g6cyx5OmEsXCJ0ZXh0LWFuY2hvclwiOm4sXCJkb21pbmFudC1iYXNlbGluZVwiOlwiYXV0b1wiLFwiZm9udC1zaXplXCI6byxcImZvbnQtZmFtaWx5XCI6bCxcImZvbnQtd2VpZ2h0XCI6aCxmaWxsOmMsY2xhc3M6KHQuY3NzQ2xhc3MsdC5jc3NDbGFzcyl9KSxlLm5vZGUuc3R5bGUuZm9udEZhbWlseT1sLGUubm9kZS5zdHlsZS5vcGFjaXR5PWQsZX19LHtrZXk6XCJhZGRUc3BhblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10LnRzcGFuKGUpO2l8fChpPXRoaXMudy5jb25maWcuY2hhcnQuZm9udEZhbWlseSkscy5ub2RlLnN0eWxlLmZvbnRGYW1pbHk9aX19LHtrZXk6XCJkcmF3TWFya2VyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3Q9dHx8MDt2YXIgcz1pLnBTaXplfHwwLGE9bnVsbDtpZihcInNxdWFyZVwiPT09aS5zaGFwZSl7dmFyIHI9dm9pZCAwPT09aS5wUmFkaXVzP3MvMjppLnBSYWRpdXM7bnVsbD09PWUmJihzPTAscj0wKTt2YXIgbj0xLjIqcytyLG89dGhpcy5kcmF3UmVjdChuLG4sbixuLHIpO28uYXR0cih7eDp0LW4vMix5OmUtbi8yLGN4OnQsY3k6ZSxjbGFzczppLmNsYXNzP2kuY2xhc3M6XCJcIixmaWxsOmkucG9pbnRGaWxsQ29sb3IsXCJmaWxsLW9wYWNpdHlcIjppLnBvaW50RmlsbE9wYWNpdHk/aS5wb2ludEZpbGxPcGFjaXR5OjEsc3Ryb2tlOmkucG9pbnRTdHJva2VDb2xvcixcInN0cm9rZS13aWR0aFwiOmkucFdpZHRoP2kucFdpZHRoOjAsXCJzdHJva2Utb3BhY2l0eVwiOmkucG9pbnRTdHJva2VPcGFjaXR5P2kucG9pbnRTdHJva2VPcGFjaXR5OjF9KSxhPW99ZWxzZVwiY2lyY2xlXCI9PT1pLnNoYXBlJiYoVXRpbHMuaXNOdW1iZXIoZSl8fChzPTAsZT0wKSxhPXRoaXMuZHJhd0NpcmNsZShzLHtjeDp0LGN5OmUsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOlwiXCIsc3Ryb2tlOmkucG9pbnRTdHJva2VDb2xvcixmaWxsOmkucG9pbnRGaWxsQ29sb3IsXCJmaWxsLW9wYWNpdHlcIjppLnBvaW50RmlsbE9wYWNpdHk/aS5wb2ludEZpbGxPcGFjaXR5OjEsXCJzdHJva2Utd2lkdGhcIjppLnBXaWR0aD9pLnBXaWR0aDowLFwic3Ryb2tlLW9wYWNpdHlcIjppLnBvaW50U3Ryb2tlT3BhY2l0eT9pLnBvaW50U3Ryb2tlT3BhY2l0eToxfSkpO3JldHVybiBhfX0se2tleTpcInBhdGhNb3VzZUVudGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1uZXcgRmlsdGVycyh0aGlzLmN0eCksYT1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIikpLHI9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImpcIikpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUVudGVyJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VFbnRlcihlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OnIsdzppfSksdGhpcy5jdHguZmlyZUV2ZW50KFwiZGF0YVBvaW50TW91c2VFbnRlclwiLFtlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OnIsdzppfV0pLChcIm5vbmVcIj09PWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGV8fFwidHJ1ZVwiIT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpKSYmXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGUmJlwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSYmIWkuZ2xvYmFscy5pc1RvdWNoRGV2aWNlKXt2YXIgbj1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyO3MuYXBwbHlGaWx0ZXIodCxhLG4udHlwZSxuLnZhbHVlKX19fSx7a2V5OlwicGF0aE1vdXNlTGVhdmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPW5ldyBGaWx0ZXJzKHRoaXMuY3R4KSxhPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSkscj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSk7XCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlTGVhdmUmJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUxlYXZlKGUsdGhpcy5jdHgse3Nlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cix3Oml9KSx0aGlzLmN0eC5maXJlRXZlbnQoXCJkYXRhUG9pbnRNb3VzZUxlYXZlXCIsW2UsdGhpcy5jdHgse3Nlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cix3Oml9XSksXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlJiZcInRydWVcIj09PXQubm9kZS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKXx8XCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGUmJnMuZ2V0RGVmYXVsdEZpbHRlcih0LGEpfX0se2tleTpcInBhdGhNb3VzZURvd25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPW5ldyBGaWx0ZXJzKHRoaXMuY3R4KSxhPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSkscj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSksbj1cImZhbHNlXCI7aWYoXCJ0cnVlXCI9PT10Lm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIikpe2lmKHQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLFwiZmFsc2VcIiksaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1thXS5pbmRleE9mKHIpPi0xKXt2YXIgbz1pLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2FdLmluZGV4T2Yocik7aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1thXS5zcGxpY2UobywxKX19ZWxzZXtpZighaS5jb25maWcuc3RhdGVzLmFjdGl2ZS5hbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbiYmaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGg+MCl7aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cz1bXTt2YXIgbD1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLXNlcmllcyBwYXRoXCIpLm1lbWJlcnMsaD1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLXNlcmllcyBjaXJjbGUsIC5hcGV4Y2hhcnRzLXNlcmllcyByZWN0XCIpLm1lbWJlcnM7bC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Qubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLFwiZmFsc2VcIikscy5nZXREZWZhdWx0RmlsdGVyKHQsYSl9KSxoLmZvckVhY2goZnVuY3Rpb24odCl7dC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJmYWxzZVwiKSxzLmdldERlZmF1bHRGaWx0ZXIodCxhKX0pfXQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLFwidHJ1ZVwiKSxuPVwidHJ1ZVwiLHZvaWQgMD09PWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbYV0mJihpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2FdPVtdKSxpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2FdLnB1c2gocil9aWYoXCJ0cnVlXCI9PT1uKXt2YXIgYz1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlcjtcIm5vbmVcIiE9PWMmJnMuYXBwbHlGaWx0ZXIodCxhLGMudHlwZSxjLnZhbHVlKX1lbHNlXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlJiZzLmdldERlZmF1bHRGaWx0ZXIodCxhKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50U2VsZWN0aW9uJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50U2VsZWN0aW9uKGUsdGhpcy5jdHgse3NlbGVjdGVkRGF0YVBvaW50czppLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cix3Oml9KSxlJiZ0aGlzLmN0eC5maXJlRXZlbnQoXCJkYXRhUG9pbnRTZWxlY3Rpb25cIixbZSx0aGlzLmN0eCx7c2VsZWN0ZWREYXRhUG9pbnRzOmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMsc2VyaWVzSW5kZXg6YSxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKX19LHtrZXk6XCJyb3RhdGVBcm91bmRDZW50ZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmdldEJCb3goKTtyZXR1cm57eDplLngrZS53aWR0aC8yLHk6ZS55K2UuaGVpZ2h0LzJ9fX0se2tleTpcImdldFRleHRSZWN0c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0scj10aGlzLncsbj10aGlzLmRyYXdUZXh0KHt4Oi0yMDAseTotMjAwLHRleHQ6dCx0ZXh0QW5jaG9yOlwic3RhcnRcIixmb250U2l6ZTplLGZvbnRGYW1pbHk6aSxmb3JlQ29sb3I6XCIjZmZmXCIsb3BhY2l0eTowfSk7cyYmbi5hdHRyKFwidHJhbnNmb3JtXCIscyksci5nbG9iYWxzLmRvbS5QYXBlci5hZGQobik7dmFyIG89bi5iYm94KCk7cmV0dXJuIGF8fChvPW4ubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksbi5yZW1vdmUoKSx7d2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHR9fX0se2tleTpcInBsYWNlVGV4dFdpdGhFbGxpcHNpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZih0LnRleHRDb250ZW50PWUsZS5sZW5ndGg+MCYmdC5nZXRDb21wdXRlZFRleHRMZW5ndGgoKT49aSl7Zm9yKHZhciBzPWUubGVuZ3RoLTM7cz4wO3MtPTMpaWYodC5nZXRTdWJTdHJpbmdMZW5ndGgoMCxzKTw9aSlyZXR1cm4gdm9pZCh0LnRleHRDb250ZW50PWUuc3Vic3RyaW5nKDAscykrXCIuLi5cIik7dC50ZXh0Q29udGVudD1cIi4uLlwifX19XSxbe2tleTpcInNldEF0dHJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZ0LnNldEF0dHJpYnV0ZShpLGVbaV0pfX1dKSx0fSgpO2NvbnN0IG5hbWU9XCJlblwiLG9wdGlvbnM9e21vbnRoczpbXCJKYW51YXJ5XCIsXCJGZWJydWFyeVwiLFwiTWFyY2hcIixcIkFwcmlsXCIsXCJNYXlcIixcIkp1bmVcIixcIkp1bHlcIixcIkF1Z3VzdFwiLFwiU2VwdGVtYmVyXCIsXCJPY3RvYmVyXCIsXCJOb3ZlbWJlclwiLFwiRGVjZW1iZXJcIl0sc2hvcnRNb250aHM6W1wiSmFuXCIsXCJGZWJcIixcIk1hclwiLFwiQXByXCIsXCJNYXlcIixcIkp1blwiLFwiSnVsXCIsXCJBdWdcIixcIlNlcFwiLFwiT2N0XCIsXCJOb3ZcIixcIkRlY1wiXSxkYXlzOltcIlN1bmRheVwiLFwiTW9uZGF5XCIsXCJUdWVzZGF5XCIsXCJXZWRuZXNkYXlcIixcIlRodXJzZGF5XCIsXCJGcmlkYXlcIixcIlNhdHVyZGF5XCJdLHNob3J0RGF5czpbXCJTdW5cIixcIk1vblwiLFwiVHVlXCIsXCJXZWRcIixcIlRodVwiLFwiRnJpXCIsXCJTYXRcIl0sdG9vbGJhcjp7ZXhwb3J0VG9TVkc6XCJEb3dubG9hZCBTVkdcIixleHBvcnRUb1BORzpcIkRvd25sb2FkIFBOR1wiLG1lbnU6XCJNZW51XCIsc2VsZWN0aW9uOlwiU2VsZWN0aW9uXCIsc2VsZWN0aW9uWm9vbTpcIlNlbGVjdGlvbiBab29tXCIsem9vbUluOlwiWm9vbSBJblwiLHpvb21PdXQ6XCJab29tIE91dFwiLHBhbjpcIlBhbm5pbmdcIixyZXNldDpcIlJlc2V0IFpvb21cIn19O3ZhciBlbj17bmFtZTpcImVuXCIsb3B0aW9uczpvcHRpb25zfSxPcHRpb25zPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMueUF4aXM9e3Nob3c6ITAsc2hvd0Fsd2F5czohMSxzZXJpZXNOYW1lOnZvaWQgMCxvcHBvc2l0ZTohMSxyZXZlcnNlZDohMSxsb2dhcml0aG1pYzohMSx0aWNrQW1vdW50OnZvaWQgMCxmb3JjZU5pY2VTY2FsZTohMSxtYXg6dm9pZCAwLG1pbjp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAsbWluV2lkdGg6MCxtYXhXaWR0aDoxNjAsb2Zmc2V0WDowLG9mZnNldFk6MCxhbGlnbjp2b2lkIDAscm90YXRlOjAscGFkZGluZzoyMCxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTFweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9LGZvcm1hdHRlcjp2b2lkIDB9LGF4aXNCb3JkZXI6e3Nob3c6ITEsY29sb3I6XCIjNzg5MDlDXCIsb2Zmc2V0WDowLG9mZnNldFk6MH0sYXhpc1RpY2tzOntzaG93OiExLGNvbG9yOlwiIzc4OTA5Q1wiLHdpZHRoOjYsb2Zmc2V0WDowLG9mZnNldFk6MH0sdGl0bGU6e3RleHQ6dm9pZCAwLHJvdGF0ZTo5MCxvZmZzZXRZOjAsb2Zmc2V0WDowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LHRvb2x0aXA6e2VuYWJsZWQ6ITEsb2Zmc2V0WDowfSxjcm9zc2hhaXJzOntzaG93OiEwLHBvc2l0aW9uOlwiZnJvbnRcIixzdHJva2U6e2NvbG9yOlwiI2I2YjZiNlwiLHdpZHRoOjEsZGFzaEFycmF5OjB9fX0sdGhpcy54QXhpc0Fubm90YXRpb249e3g6MCx4MjpudWxsLHN0cm9rZURhc2hBcnJheToxLGZpbGxDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9yaWVudGF0aW9uOlwidmVydGljYWxcIixwb3NpdGlvbjpcInRvcFwiLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2JhY2tncm91bmQ6XCIjZmZmXCIsY29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCIscGFkZGluZzp7bGVmdDo1LHJpZ2h0OjUsdG9wOjIsYm90dG9tOjJ9fX19LHRoaXMueUF4aXNBbm5vdGF0aW9uPXt5OjAseTI6bnVsbCxzdHJva2VEYXNoQXJyYXk6MSxmaWxsQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsb3BhY2l0eTouMyxvZmZzZXRYOjAsb2Zmc2V0WTowLHlBeGlzSW5kZXg6MCxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSx0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwiZW5kXCIscG9zaXRpb246XCJyaWdodFwiLG9mZnNldFg6MCxvZmZzZXRZOi0zLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDowLGJvdHRvbToyfX19fSx0aGlzLnBvaW50QW5ub3RhdGlvbj17eDowLHk6bnVsbCx5QXhpc0luZGV4OjAsc2VyaWVzSW5kZXg6MCxtYXJrZXI6e3NpemU6NCxmaWxsQ29sb3I6XCIjZmZmXCIsc3Ryb2tlV2lkdGg6MixzdHJva2VDb2xvcjpcIiMzMzNcIixzaGFwZTpcImNpcmNsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAscmFkaXVzOjIsY3NzQ2xhc3M6XCJcIn0sbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9mZnNldFg6MCxvZmZzZXRZOi0xNSxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6MCxib3R0b206Mn19fSxjdXN0b21TVkc6e1NWRzp2b2lkIDAsY3NzQ2xhc3M6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjB9fX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57YW5ub3RhdGlvbnM6e3Bvc2l0aW9uOlwiZnJvbnRcIix5YXhpczpbdGhpcy55QXhpc0Fubm90YXRpb25dLHhheGlzOlt0aGlzLnhBeGlzQW5ub3RhdGlvbl0scG9pbnRzOlt0aGlzLnBvaW50QW5ub3RhdGlvbl19LGNoYXJ0OnthbmltYXRpb25zOntlbmFibGVkOiEwLGVhc2luZzpcImVhc2Vpbm91dFwiLHNwZWVkOjgwMCxhbmltYXRlR3JhZHVhbGx5OntkZWxheToxNTAsZW5hYmxlZDohMH0sZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMCxzcGVlZDozNTB9fSxiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsb2NhbGVzOltlbl0sZGVmYXVsdExvY2FsZTpcImVuXCIsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxlbmFibGVkU2VyaWVzOnZvaWQgMCx0b3A6MixsZWZ0OjIsYmx1cjo0LGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjM1fSxldmVudHM6e2FuaW1hdGlvbkVuZDp2b2lkIDAsYmVmb3JlTW91bnQ6dm9pZCAwLG1vdW50ZWQ6dm9pZCAwLHVwZGF0ZWQ6dm9pZCAwLGNsaWNrOnZvaWQgMCxsZWdlbmRDbGljazp2b2lkIDAsbWFya2VyQ2xpY2s6dm9pZCAwLHNlbGVjdGlvbjp2b2lkIDAsZGF0YVBvaW50U2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUVudGVyOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUxlYXZlOnZvaWQgMCxiZWZvcmVab29tOnZvaWQgMCx6b29tZWQ6dm9pZCAwLHNjcm9sbGVkOnZvaWQgMH0sZm9yZUNvbG9yOlwiIzM3M2QzZlwiLGZvbnRGYW1pbHk6XCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsaGVpZ2h0OlwiYXV0b1wiLHBhcmVudEhlaWdodE9mZnNldDoxNSxpZDp2b2lkIDAsZ3JvdXA6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc2VsZWN0aW9uOntlbmFibGVkOiExLHR5cGU6XCJ4XCIsZmlsbDp7Y29sb3I6XCIjMjQyOTJlXCIsb3BhY2l0eTouMX0sc3Ryb2tlOnt3aWR0aDoxLGNvbG9yOlwiIzI0MjkyZVwiLG9wYWNpdHk6LjQsZGFzaEFycmF5OjN9LHhheGlzOnttaW46dm9pZCAwLG1heDp2b2lkIDB9LHlheGlzOnttaW46dm9pZCAwLG1heDp2b2lkIDB9fSxzcGFya2xpbmU6e2VuYWJsZWQ6ITF9LGJydXNoOntlbmFibGVkOiExLGF1dG9TY2FsZVlheGlzOiEwLHRhcmdldDp2b2lkIDB9LHN0YWNrZWQ6ITEsc3RhY2tUeXBlOlwibm9ybWFsXCIsdG9vbGJhcjp7c2hvdzohMCx0b29sczp7ZG93bmxvYWQ6ITAsc2VsZWN0aW9uOiEwLHpvb206ITAsem9vbWluOiEwLHpvb21vdXQ6ITAscGFuOiEwLHJlc2V0OiEwLGN1c3RvbUljb25zOltdfSxhdXRvU2VsZWN0ZWQ6XCJ6b29tXCJ9LHR5cGU6XCJsaW5lXCIsd2lkdGg6XCIxMDAlXCIsem9vbTp7ZW5hYmxlZDohMCx0eXBlOlwieFwiLGF1dG9TY2FsZVlheGlzOiExLHpvb21lZEFyZWE6e2ZpbGw6e2NvbG9yOlwiIzkwQ0FGOVwiLG9wYWNpdHk6LjR9LHN0cm9rZTp7Y29sb3I6XCIjMEQ0N0ExXCIsb3BhY2l0eTouNCx3aWR0aDoxfX19fSxwbG90T3B0aW9uczp7YmFyOntob3Jpem9udGFsOiExLGNvbHVtbldpZHRoOlwiNzAlXCIsYmFySGVpZ2h0OlwiNzAlXCIsZGlzdHJpYnV0ZWQ6ITEsZW5kaW5nU2hhcGU6XCJmbGF0XCIsY29sb3JzOntyYW5nZXM6W10sYmFja2dyb3VuZEJhckNvbG9yczpbXSxiYWNrZ3JvdW5kQmFyT3BhY2l0eToxfSxkYXRhTGFiZWxzOnttYXhJdGVtczoxMDAsaGlkZU92ZXJmbG93aW5nTGFiZWxzOiEwLHBvc2l0aW9uOlwidG9wXCJ9fSxjYW5kbGVzdGljazp7Y29sb3JzOnt1cHdhcmQ6XCIjMDBCNzQ2XCIsZG93bndhcmQ6XCIjRUY0MDNDXCJ9LHdpY2s6e3VzZUZpbGxDb2xvcjohMH19LGhlYXRtYXA6e3JhZGl1czoyLGVuYWJsZVNoYWRlczohMCxzaGFkZUludGVuc2l0eTouNSxyZXZlcnNlTmVnYXRpdmVTaGFkZTohMCxkaXN0cmlidXRlZDohMSxjb2xvclNjYWxlOntpbnZlcnNlOiExLHJhbmdlczpbXSxtaW46dm9pZCAwLG1heDp2b2lkIDB9fSxyYWRpYWxCYXI6e3NpemU6dm9pZCAwLGludmVyc2VPcmRlcjohMSxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLG9mZnNldFg6MCxvZmZzZXRZOjAsaG9sbG93OnttYXJnaW46NSxzaXplOlwiNTAlXCIsYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsaW1hZ2U6dm9pZCAwLGltYWdlV2lkdGg6MTUwLGltYWdlSGVpZ2h0OjE1MCxpbWFnZU9mZnNldFg6MCxpbWFnZU9mZnNldFk6MCxpbWFnZUNsaXBwZWQ6ITAscG9zaXRpb246XCJmcm9udFwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjAsbGVmdDowLGJsdXI6Myxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi41fX0sdHJhY2s6e3Nob3c6ITAsc3RhcnRBbmdsZTp2b2lkIDAsZW5kQW5nbGU6dm9pZCAwLGJhY2tncm91bmQ6XCIjZjJmMmYyXCIsc3Ryb2tlV2lkdGg6XCI5NyVcIixvcGFjaXR5OjEsbWFyZ2luOjUsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MCxsZWZ0OjAsYmx1cjozLGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjV9fSxkYXRhTGFiZWxzOntzaG93OiEwLG5hbWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNnB4XCIsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MH0sdmFsdWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNHB4XCIsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MTYsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0K1wiJVwifX0sdG90YWw6e3Nob3c6ITEsbGFiZWw6XCJUb3RhbFwiLGNvbG9yOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5zZXJpZXNUb3RhbHMucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0sMCkvdC5nbG9iYWxzLnNlcmllcy5sZW5ndGgrXCIlXCJ9fX19LHJhbmdlQmFyOnt9LHBpZTp7c2l6ZTp2b2lkIDAsY3VzdG9tU2NhbGU6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLGV4cGFuZE9uQ2xpY2s6ITAsZGF0YUxhYmVsczp7b2Zmc2V0OjAsbWluQW5nbGVUb1Nob3dMYWJlbDoxMH0sZG9udXQ6e3NpemU6XCI2NSVcIixiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsYWJlbHM6e3Nob3c6ITEsbmFtZTp7c2hvdzohMCxmb250U2l6ZTpcIjE2cHhcIixmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WTotMTB9LHZhbHVlOntzaG93OiEwLGZvbnRTaXplOlwiMjBweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOjEwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHRvdGFsOntzaG93OiExLGxhYmVsOlwiVG90YWxcIixjb2xvcjp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9LDApfX19fX0scmFkYXI6e3NpemU6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAscG9seWdvbnM6e3N0cm9rZUNvbG9yczpcIiNlOGU4ZThcIixjb25uZWN0b3JDb2xvcnM6XCIjZThlOGU4XCIsZmlsbDp7Y29sb3JzOnZvaWQgMH19fX0sY29sb3JzOnZvaWQgMCxkYXRhTGFiZWxzOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dD90OlwiXCJ9LHRleHRBbmNob3I6XCJtaWRkbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxjb2xvcnM6dm9pZCAwfSxkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNDV9fSxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZTpcImRhcmtcIix0eXBlOlwiaG9yaXpvbnRhbFwiLHNoYWRlSW50ZW5zaXR5Oi41LGdyYWRpZW50VG9Db2xvcnM6dm9pZCAwLGludmVyc2VDb2xvcnM6ITAsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbMCw1MCwxMDBdLGNvbG9yU3RvcHM6W119LGltYWdlOntzcmM6W10sd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDB9LHBhdHRlcm46e3N0eWxlOlwic3FhdXJlc1wiLHdpZHRoOjYsaGVpZ2h0OjYsc3Ryb2tlV2lkdGg6Mn19LGdyaWQ6e3Nob3c6ITAsYm9yZGVyQ29sb3I6XCIjZTBlMGUwXCIsc3Ryb2tlRGFzaEFycmF5OjAscG9zaXRpb246XCJiYWNrXCIseGF4aXM6e2xpbmVzOntzaG93OiExLGFuaW1hdGU6ITF9fSx5YXhpczp7bGluZXM6e3Nob3c6ITAsYW5pbWF0ZTohMX19LHJvdzp7Y29sb3JzOnZvaWQgMCxvcGFjaXR5Oi41fSxjb2x1bW46e2NvbG9yczp2b2lkIDAsb3BhY2l0eTouNX0scGFkZGluZzp7dG9wOjAscmlnaHQ6MTAsYm90dG9tOjAsbGVmdDoxMn19LGxhYmVsczpbXSxsZWdlbmQ6e3Nob3c6ITAsc2hvd0ZvclNpbmdsZVNlcmllczohMSxzaG93Rm9yTnVsbFNlcmllczohMCxzaG93Rm9yWmVyb1NlcmllczohMCxmbG9hdGluZzohMSxwb3NpdGlvbjpcImJvdHRvbVwiLGhvcml6b250YWxBbGlnbjpcImNlbnRlclwiLGludmVyc2VPcmRlcjohMSxmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCx3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxmb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6LTIwLG9mZnNldFk6MCxsYWJlbHM6e2NvbG9yczp2b2lkIDAsdXNlU2VyaWVzQ29sb3JzOiExfSxtYXJrZXJzOnt3aWR0aDoxMixoZWlnaHQ6MTIsc3Ryb2tlV2lkdGg6MCxzdHJva2VDb2xvcjpcIiNmZmZcIixyYWRpdXM6MTIsY3VzdG9tSFRNTDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMH0saXRlbU1hcmdpbjp7aG9yaXpvbnRhbDowLHZlcnRpY2FsOjV9LG9uSXRlbUNsaWNrOnt0b2dnbGVEYXRhU2VyaWVzOiEwfSxvbkl0ZW1Ib3Zlcjp7aGlnaGxpZ2h0RGF0YVNlcmllczohMH19LG1hcmtlcnM6e2Rpc2NyZXRlOltdLHNpemU6MCxjb2xvcnM6dm9pZCAwLHN0cm9rZUNvbG9yczpcIiNmZmZcIixzdHJva2VXaWR0aDoyLHN0cm9rZU9wYWNpdHk6LjksZmlsbE9wYWNpdHk6MSxzaGFwZTpcImNpcmNsZVwiLHJhZGl1czoyLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDAsb25EYmxDbGljazp2b2lkIDAsaG92ZXI6e3NpemU6dm9pZCAwLHNpemVPZmZzZXQ6M319LG5vRGF0YTp7dGV4dDp2b2lkIDAsYWxpZ246XCJjZW50ZXJcIix2ZXJ0aWNhbEFsaWduOlwibWlkZGxlXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTRweFwiLGZvbnRGYW1pbHk6dm9pZCAwfX0scmVzcG9uc2l2ZTpbXSxzZXJpZXM6dm9pZCAwLHN0YXRlczp7bm9ybWFsOntmaWx0ZXI6e3R5cGU6XCJub25lXCIsdmFsdWU6MH19LGhvdmVyOntmaWx0ZXI6e3R5cGU6XCJsaWdodGVuXCIsdmFsdWU6LjE1fX0sYWN0aXZlOnthbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbjohMSxmaWx0ZXI6e3R5cGU6XCJkYXJrZW5cIix2YWx1ZTouNjV9fX0sdGl0bGU6e3RleHQ6dm9pZCAwLGFsaWduOlwibGVmdFwiLG1hcmdpbjoxMCxvZmZzZXRYOjAsb2Zmc2V0WTowLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjE0cHhcIixmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdWJ0aXRsZTp7dGV4dDp2b2lkIDAsYWxpZ246XCJsZWZ0XCIsbWFyZ2luOjEwLG9mZnNldFg6MCxvZmZzZXRZOjMwLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdHJva2U6e3Nob3c6ITAsY3VydmU6XCJzbW9vdGhcIixsaW5lQ2FwOlwiYnV0dFwiLHdpZHRoOjIsY29sb3JzOnZvaWQgMCxkYXNoQXJyYXk6MH0sdG9vbHRpcDp7ZW5hYmxlZDohMCxlbmFibGVkT25TZXJpZXM6dm9pZCAwLHNoYXJlZDohMCxmb2xsb3dDdXJzb3I6ITEsaW50ZXJzZWN0OiExLGludmVyc2VPcmRlcjohMSxjdXN0b206dm9pZCAwLGZpbGxTZXJpZXNDb2xvcjohMSx0aGVtZTpcImxpZ2h0XCIsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwfSxvbkRhdGFzZXRIb3Zlcjp7aGlnaGxpZ2h0RGF0YVNlcmllczohMX0seDp7c2hvdzohMCxmb3JtYXQ6XCJkZCBNTU1cIixmb3JtYXR0ZXI6dm9pZCAwfSx5Ontmb3JtYXR0ZXI6dm9pZCAwLHRpdGxlOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fX0sejp7Zm9ybWF0dGVyOnZvaWQgMCx0aXRsZTpcIlNpemU6IFwifSxtYXJrZXI6e3Nob3c6ITB9LGl0ZW1zOntkaXNwbGF5OlwiZmxleFwifSxmaXhlZDp7ZW5hYmxlZDohMSxwb3NpdGlvbjpcInRvcFJpZ2h0XCIsb2Zmc2V0WDowLG9mZnNldFk6MH19LHhheGlzOnt0eXBlOlwiY2F0ZWdvcnlcIixjYXRlZ29yaWVzOltdLG9mZnNldFg6MCxvZmZzZXRZOjAsbGFiZWxzOntzaG93OiEwLHJvdGF0ZTotNDUscm90YXRlQWx3YXlzOiExLGhpZGVPdmVybGFwcGluZ0xhYmVsczohMCx0cmltOiEwLG1pbkhlaWdodDp2b2lkIDAsbWF4SGVpZ2h0OjEyMCxzaG93RHVwbGljYXRlczohMCxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9LG9mZnNldFg6MCxvZmZzZXRZOjAsZm9ybWF0OnZvaWQgMCxmb3JtYXR0ZXI6dm9pZCAwLGRhdGV0aW1lRm9ybWF0dGVyOnt5ZWFyOlwieXl5eVwiLG1vbnRoOlwiTU1NICd5eVwiLGRheTpcImRkIE1NTVwiLGhvdXI6XCJISDptbVwiLG1pbnV0ZTpcIkhIOm1tOnNzXCJ9fSxheGlzQm9yZGVyOntzaG93OiEwLGNvbG9yOlwiIzc4OTA5Q1wiLHdpZHRoOlwiMTAwJVwiLGhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjB9LGF4aXNUaWNrczp7c2hvdzohMCxjb2xvcjpcIiM3ODkwOUNcIixoZWlnaHQ6NixvZmZzZXRYOjAsb2Zmc2V0WTowfSx0aWNrQW1vdW50OnZvaWQgMCx0aWNrUGxhY2VtZW50Olwib25cIixtaW46dm9pZCAwLG1heDp2b2lkIDAscmFuZ2U6dm9pZCAwLGZsb2F0aW5nOiExLHBvc2l0aW9uOlwiYm90dG9tXCIsdGl0bGU6e3RleHQ6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifX0sY3Jvc3NoYWlyczp7c2hvdzohMCx3aWR0aDoxLHBvc2l0aW9uOlwiYmFja1wiLG9wYWNpdHk6Ljksc3Ryb2tlOntjb2xvcjpcIiNiNmI2YjZcIix3aWR0aDoxLGRhc2hBcnJheTozfSxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcjpcIiNCMUI5QzRcIixncmFkaWVudDp7Y29sb3JGcm9tOlwiI0Q4RTNGMFwiLGNvbG9yVG86XCIjQkVEMUU2XCIsc3RvcHM6WzAsMTAwXSxvcGFjaXR5RnJvbTouNCxvcGFjaXR5VG86LjV9fSxkcm9wU2hhZG93OntlbmFibGVkOiExLGxlZnQ6MCx0b3A6MCxibHVyOjEsb3BhY2l0eTouNH19LHRvb2x0aXA6e2VuYWJsZWQ6ITAsb2Zmc2V0WTowLGZvcm1hdHRlcjp2b2lkIDAsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwfX19LHlheGlzOnRoaXMueUF4aXMsdGhlbWU6e21vZGU6XCJsaWdodFwiLHBhbGV0dGU6XCJwYWxldHRlMVwiLG1vbm9jaHJvbWU6e2VuYWJsZWQ6ITEsY29sb3I6XCIjMDA4RkZCXCIsc2hhZGVUbzpcImxpZ2h0XCIsc2hhZGVJbnRlbnNpdHk6LjY1fX19fX1dKSx0fSgpLEFubm90YXRpb25zPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5ncmFwaGljcz1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLHRoaXMudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHRoaXMuaW52ZXJ0QXhpcz0hMCksdGhpcy54RGl2aXNpb249dGhpcy53Lmdsb2JhbHMuZ3JpZFdpZHRoL3RoaXMudy5nbG9iYWxzLmRhdGFQb2ludHN9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiZHJhd0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLmF4aXNDaGFydHMpe2Zvcih2YXIgZT10aGlzLmRyYXdZQXhpc0Fubm90YXRpb25zKCksaT10aGlzLmRyYXdYQXhpc0Fubm90YXRpb25zKCkscz10aGlzLmRyYXdQb2ludEFubm90YXRpb25zKCksYT10LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQscj1bZSxpLHNdLG49W2kubm9kZSxlLm5vZGUscy5ub2RlXSxvPTA7bzwzO28rKyl0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyW29dKSwhYXx8dC5nbG9iYWxzLnJlc2l6ZWR8fHQuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8XCJzY2F0dGVyXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiZcImJ1YmJsZVwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmbltvXS5jbGFzc0xpc3QuYWRkKFwiaGlkZGVuXCIpLHQuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6bltvXSxpbmRleDowfSk7dGhpcy5hbm5vdGF0aW9uc0JhY2tncm91bmQoKX19fSx7a2V5OlwiZ2V0U3RyaW5nWFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQscz1lLmdsb2JhbHMubGFiZWxzLmluZGV4T2YodCksYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZChcIisocysxKStcIilcIik7cmV0dXJuIGEmJihpPXBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoXCJ4XCIpKSksaX19LHtrZXk6XCJhZGRYYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9dGhpcy5pbnZlcnRBeGlzP3MuZ2xvYmFscy5taW5ZOnMuZ2xvYmFscy5taW5YLHI9dGhpcy5pbnZlcnRBeGlzP3MuZ2xvYmFscy55UmFuZ2VbMF06cy5nbG9iYWxzLnhSYW5nZSxuPSh0LngtYSkvKHIvcy5nbG9iYWxzLmdyaWRXaWR0aCksbz10LmxhYmVsLnRleHQ7XCJjYXRlZ29yeVwiIT09cy5jb25maWcueGF4aXMudHlwZSYmIXMuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8dGhpcy5pbnZlcnRBeGlzfHxzLmdsb2JhbHMuaXNYTnVtZXJpY3x8KG49dGhpcy5nZXRTdHJpbmdYKHQueCkpO3ZhciBsPXQuc3Ryb2tlRGFzaEFycmF5O2lmKCEobjwwfHxuPnMuZ2xvYmFscy5ncmlkV2lkdGgpKXtpZihudWxsPT09dC54Mil7dmFyIGg9dGhpcy5ncmFwaGljcy5kcmF3TGluZShuK3Qub2Zmc2V0WCwwK3Qub2Zmc2V0WSxuK3Qub2Zmc2V0WCxzLmdsb2JhbHMuZ3JpZEhlaWdodCt0Lm9mZnNldFksdC5ib3JkZXJDb2xvcixsKTtlLmFwcGVuZENoaWxkKGgubm9kZSl9ZWxzZXt2YXIgYz0odC54Mi1hKS8oci9zLmdsb2JhbHMuZ3JpZFdpZHRoKTtpZihcImNhdGVnb3J5XCIhPT1zLmNvbmZpZy54YXhpcy50eXBlJiYhcy5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmludmVydEF4aXN8fHMuZ2xvYmFscy5pc1hOdW1lcmljfHwoYz10aGlzLmdldFN0cmluZ1godC54MikpLGM8bil7dmFyIGQ9bjtuPWMsYz1kfWlmKG8pe3ZhciB1PXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3Qobit0Lm9mZnNldFgsMCt0Lm9mZnNldFksYy1uLHMuZ2xvYmFscy5ncmlkSGVpZ2h0K3Qub2Zmc2V0WSwwLHQuZmlsbENvbG9yLHQub3BhY2l0eSwxLHQuYm9yZGVyQ29sb3IsbCk7ZS5hcHBlbmRDaGlsZCh1Lm5vZGUpfX12YXIgZz1cInRvcFwiPT09dC5sYWJlbC5wb3NpdGlvbj8tMzpzLmdsb2JhbHMuZ3JpZEhlaWdodCxmPXRoaXMuZ3JhcGhpY3MuZHJhd1RleHQoe3g6bit0LmxhYmVsLm9mZnNldFgseTpnK3QubGFiZWwub2Zmc2V0WSx0ZXh0Om8sdGV4dEFuY2hvcjp0LmxhYmVsLnRleHRBbmNob3IsZm9udFNpemU6dC5sYWJlbC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQubGFiZWwuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6dC5sYWJlbC5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbCBcIit0LmxhYmVsLnN0eWxlLmNzc0NsYXNzfSk7Zi5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQoZi5ub2RlKSx0aGlzLnNldE9yaWVudGF0aW9ucyh0LGkpfX19LHtrZXk6XCJkcmF3WEF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIGUuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcChmdW5jdGlvbihlLHMpe3QuYWRkWGF4aXNBbm5vdGF0aW9uKGUsaS5ub2RlLHMpfSksaX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHMsYSxyPXRoaXMudyxuPXQuc3Ryb2tlRGFzaEFycmF5O2lmKHRoaXMuaW52ZXJ0QXhpcyl7dmFyIG89ci5nbG9iYWxzLmxhYmVscy5pbmRleE9mKHQueSksbD1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZChcIisobysxKStcIilcIik7bCYmKHM9cGFyc2VGbG9hdChsLmdldEF0dHJpYnV0ZShcInlcIikpKX1lbHNlIHM9ci5nbG9iYWxzLmdyaWRIZWlnaHQtKHQueS1yLmdsb2JhbHMubWluWUFyclt0LnlBeGlzSW5kZXhdKS8oci5nbG9iYWxzLnlSYW5nZVt0LnlBeGlzSW5kZXhdL3IuZ2xvYmFscy5ncmlkSGVpZ2h0KSxyLmNvbmZpZy55YXhpc1t0LnlBeGlzSW5kZXhdJiZyLmNvbmZpZy55YXhpc1t0LnlBeGlzSW5kZXhdLnJldmVyc2VkJiYocz0odC55LXIuZ2xvYmFscy5taW5ZQXJyW3QueUF4aXNJbmRleF0pLyhyLmdsb2JhbHMueVJhbmdlW3QueUF4aXNJbmRleF0vci5nbG9iYWxzLmdyaWRIZWlnaHQpKTt2YXIgaD10LmxhYmVsLnRleHQ7aWYobnVsbD09PXQueTIpe3ZhciBjPXRoaXMuZ3JhcGhpY3MuZHJhd0xpbmUoMCt0Lm9mZnNldFgscyt0Lm9mZnNldFksci5nbG9iYWxzLmdyaWRXaWR0aCt0Lm9mZnNldFgscyt0Lm9mZnNldFksdC5ib3JkZXJDb2xvcixuKTtlLmFwcGVuZENoaWxkKGMubm9kZSl9ZWxzZXtpZih0aGlzLmludmVydEF4aXMpe3ZhciBkPXIuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZih0LnkyKSx1PXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKFwiKyhkKzEpK1wiKVwiKTt1JiYoYT1wYXJzZUZsb2F0KHUuZ2V0QXR0cmlidXRlKFwieVwiKSkpfWVsc2UgYT1yLmdsb2JhbHMuZ3JpZEhlaWdodC0odC55Mi1yLmdsb2JhbHMubWluWUFyclt0LnlBeGlzSW5kZXhdKS8oci5nbG9iYWxzLnlSYW5nZVt0LnlBeGlzSW5kZXhdL3IuZ2xvYmFscy5ncmlkSGVpZ2h0KSxyLmNvbmZpZy55YXhpc1t0LnlBeGlzSW5kZXhdJiZyLmNvbmZpZy55YXhpc1t0LnlBeGlzSW5kZXhdLnJldmVyc2VkJiYoYT0odC55Mi1yLmdsb2JhbHMubWluWUFyclt0LnlBeGlzSW5kZXhdKS8oci5nbG9iYWxzLnlSYW5nZVt0LnlBeGlzSW5kZXhdL3IuZ2xvYmFscy5ncmlkSGVpZ2h0KSk7aWYoYT5zKXt2YXIgZz1zO3M9YSxhPWd9aWYoaCl7dmFyIGY9dGhpcy5ncmFwaGljcy5kcmF3UmVjdCgwK3Qub2Zmc2V0WCxhK3Qub2Zmc2V0WSxyLmdsb2JhbHMuZ3JpZFdpZHRoK3Qub2Zmc2V0WCxzLWEsMCx0LmZpbGxDb2xvcix0Lm9wYWNpdHksMSx0LmJvcmRlckNvbG9yLG4pO2UuYXBwZW5kQ2hpbGQoZi5ub2RlKX19dmFyIHA9XCJyaWdodFwiPT09dC5sYWJlbC5wb3NpdGlvbj9yLmdsb2JhbHMuZ3JpZFdpZHRoOjAseD10aGlzLmdyYXBoaWNzLmRyYXdUZXh0KHt4OnArdC5sYWJlbC5vZmZzZXRYLHk6KGF8fHMpK3QubGFiZWwub2Zmc2V0WS0zLHRleHQ6aCx0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9uLWxhYmVsIFwiK3QubGFiZWwuc3R5bGUuY3NzQ2xhc3N9KTt4LmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZCh4Lm5vZGUpfX0se2tleTpcImRyYXdZQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKGZ1bmN0aW9uKGUscyl7dC5hZGRZYXhpc0Fubm90YXRpb24oZSxpLm5vZGUscyl9KSxpfX0se2tleTpcImNsZWFyQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9ucywgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMsIC5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCIpOyhlPVV0aWxzLmxpc3RUb0FycmF5KGUpKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9KX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9MCxyPTAsbj0wO2lmKHRoaXMuaW52ZXJ0QXhpcyYmY29uc29sZS53YXJuKFwiUG9pbnQgYW5ub3RhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGhvcml6b250YWwgYmFyIGNoYXJ0cy5cIiksXCJzdHJpbmdcIj09dHlwZW9mIHQueCl7dmFyIG89cy5nbG9iYWxzLmxhYmVscy5pbmRleE9mKHQueCksbD1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZChcIisobysxKStcIilcIik7YT1wYXJzZUZsb2F0KGwuZ2V0QXR0cmlidXRlKFwieFwiKSk7dmFyIGg9dC55O251bGw9PT10LnkmJihoPXMuZ2xvYmFscy5zZXJpZXNbdC5zZXJpZXNJbmRleF1bb10pLHI9cy5nbG9iYWxzLmdyaWRIZWlnaHQtKGgtcy5nbG9iYWxzLm1pbllBcnJbdC55QXhpc0luZGV4XSkvKHMuZ2xvYmFscy55UmFuZ2VbdC55QXhpc0luZGV4XS9zLmdsb2JhbHMuZ3JpZEhlaWdodCktcGFyc2VJbnQodC5sYWJlbC5zdHlsZS5mb250U2l6ZSktdC5tYXJrZXIuc2l6ZSxuPXMuZ2xvYmFscy5ncmlkSGVpZ2h0LShoLXMuZ2xvYmFscy5taW5ZQXJyW3QueUF4aXNJbmRleF0pLyhzLmdsb2JhbHMueVJhbmdlW3QueUF4aXNJbmRleF0vcy5nbG9iYWxzLmdyaWRIZWlnaHQpLHMuY29uZmlnLnlheGlzW3QueUF4aXNJbmRleF0mJnMuY29uZmlnLnlheGlzW3QueUF4aXNJbmRleF0ucmV2ZXJzZWQmJihyPShoLXMuZ2xvYmFscy5taW5ZQXJyW3QueUF4aXNJbmRleF0pLyhzLmdsb2JhbHMueVJhbmdlW3QueUF4aXNJbmRleF0vcy5nbG9iYWxzLmdyaWRIZWlnaHQpK3BhcnNlSW50KHQubGFiZWwuc3R5bGUuZm9udFNpemUpK3QubWFya2VyLnNpemUsbj0oaC1zLmdsb2JhbHMubWluWUFyclt0LnlBeGlzSW5kZXhdKS8ocy5nbG9iYWxzLnlSYW5nZVt0LnlBeGlzSW5kZXhdL3MuZ2xvYmFscy5ncmlkSGVpZ2h0KSl9ZWxzZSBhPSh0Lngtcy5nbG9iYWxzLm1pblgpLyhzLmdsb2JhbHMueFJhbmdlL3MuZ2xvYmFscy5ncmlkV2lkdGgpLHI9cy5nbG9iYWxzLmdyaWRIZWlnaHQtKHBhcnNlRmxvYXQodC55KS1zLmdsb2JhbHMubWluWUFyclt0LnlBeGlzSW5kZXhdKS8ocy5nbG9iYWxzLnlSYW5nZVt0LnlBeGlzSW5kZXhdL3MuZ2xvYmFscy5ncmlkSGVpZ2h0KS1wYXJzZUludCh0LmxhYmVsLnN0eWxlLmZvbnRTaXplKS10Lm1hcmtlci5zaXplLG49cy5nbG9iYWxzLmdyaWRIZWlnaHQtKHQueS1zLmdsb2JhbHMubWluWUFyclt0LnlBeGlzSW5kZXhdKS8ocy5nbG9iYWxzLnlSYW5nZVt0LnlBeGlzSW5kZXhdL3MuZ2xvYmFscy5ncmlkSGVpZ2h0KSxzLmNvbmZpZy55YXhpc1t0LnlBeGlzSW5kZXhdJiZzLmNvbmZpZy55YXhpc1t0LnlBeGlzSW5kZXhdLnJldmVyc2VkJiYocj0ocGFyc2VGbG9hdCh0LnkpLXMuZ2xvYmFscy5taW5ZQXJyW3QueUF4aXNJbmRleF0pLyhzLmdsb2JhbHMueVJhbmdlW3QueUF4aXNJbmRleF0vcy5nbG9iYWxzLmdyaWRIZWlnaHQpLXBhcnNlSW50KHQubGFiZWwuc3R5bGUuZm9udFNpemUpLXQubWFya2VyLnNpemUsbj0odC55LXMuZ2xvYmFscy5taW5ZQXJyW3QueUF4aXNJbmRleF0pLyhzLmdsb2JhbHMueVJhbmdlW3QueUF4aXNJbmRleF0vcy5nbG9iYWxzLmdyaWRIZWlnaHQpKTtpZighKGE8MHx8YT5zLmdsb2JhbHMuZ3JpZFdpZHRoKSl7dmFyIGM9e3BTaXplOnQubWFya2VyLnNpemUscFdpZHRoOnQubWFya2VyLnN0cm9rZVdpZHRoLHBvaW50RmlsbENvbG9yOnQubWFya2VyLmZpbGxDb2xvcixwb2ludFN0cm9rZUNvbG9yOnQubWFya2VyLnN0cm9rZUNvbG9yLHNoYXBlOnQubWFya2VyLnNoYXBlLHJhZGl1czp0Lm1hcmtlci5yYWRpdXMsY2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbWFya2VyIFwiK3QubWFya2VyLmNzc0NsYXNzfSxkPXRoaXMuZ3JhcGhpY3MuZHJhd01hcmtlcihhK3QubWFya2VyLm9mZnNldFgsbit0Lm1hcmtlci5vZmZzZXRZLGMpO2UuYXBwZW5kQ2hpbGQoZC5ub2RlKTt2YXIgdT10LmxhYmVsLnRleHQ/dC5sYWJlbC50ZXh0OlwiXCIsZz10aGlzLmdyYXBoaWNzLmRyYXdUZXh0KHt4OmErdC5sYWJlbC5vZmZzZXRYLHk6cit0LmxhYmVsLm9mZnNldFksdGV4dDp1LHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbGFiZWwgXCIrdC5sYWJlbC5zdHlsZS5jc3NDbGFzc30pO2lmKGcuYXR0cih7cmVsOml9KSxlLmFwcGVuZENoaWxkKGcubm9kZSksdC5jdXN0b21TVkcuU1ZHKXt2YXIgZj10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnMtY3VzdG9tLXN2ZyBcIit0LmN1c3RvbVNWRy5jc3NDbGFzc30pO2YuYXR0cih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChhK3QuY3VzdG9tU1ZHLm9mZnNldFgsXCIsIFwiKS5jb25jYXQocit0LmN1c3RvbVNWRy5vZmZzZXRZLFwiKVwiKX0pLGYubm9kZS5pbm5lckhUTUw9dC5jdXN0b21TVkcuU1ZHLGUuYXBwZW5kQ2hpbGQoZi5ub2RlKX19fX0se2tleTpcImRyYXdQb2ludEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcChmdW5jdGlvbihlLHMpe3QuYWRkUG9pbnRBbm5vdGF0aW9uKGUsaS5ub2RlLHMpfSksaX19LHtrZXk6XCJzZXRPcmllbnRhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudztpZihcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uKXt2YXIgcz1udWxsIT09ZT9lOjAsYT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiLmNvbmNhdChzLFwiJ11cIikpO2lmKG51bGwhPT1hKXt2YXIgcj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Euc2V0QXR0cmlidXRlKFwieFwiLHBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoXCJ4XCIpKS1yLmhlaWdodCs0KSxcInRvcFwiPT09dC5sYWJlbC5wb3NpdGlvbj9hLnNldEF0dHJpYnV0ZShcInlcIixwYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKFwieVwiKSkrci53aWR0aCk6YS5zZXRBdHRyaWJ1dGUoXCJ5XCIscGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZShcInlcIikpLXIud2lkdGgpO3ZhciBuPXRoaXMuZ3JhcGhpY3Mucm90YXRlQXJvdW5kQ2VudGVyKGEpLG89bi54LGw9bi55O2Euc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoLTkwIFwiLmNvbmNhdChvLFwiIFwiKS5jb25jYXQobCxcIilcIikpfX19fSx7a2V5OlwiYWRkQmFja2dyb3VuZFRvQW5ub1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKCFlLmxhYmVsLnRleHR8fGUubGFiZWwudGV4dCYmIWUubGFiZWwudGV4dC50cmltKCkpcmV0dXJuIG51bGw7dmFyIHM9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmxlZnQsbj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcucmlnaHQsbz1lLmxhYmVsLnN0eWxlLnBhZGRpbmcudG9wLGw9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmJvdHRvbTtcInZlcnRpY2FsXCI9PT1lLmxhYmVsLm9yaWVudGF0aW9uJiYobz1lLmxhYmVsLnN0eWxlLnBhZGRpbmcubGVmdCxsPWUubGFiZWwuc3R5bGUucGFkZGluZy5yaWdodCxyPWUubGFiZWwuc3R5bGUucGFkZGluZy50b3Asbj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcuYm90dG9tKTt2YXIgaD1hLmxlZnQtcy5sZWZ0LXIsYz1hLnRvcC1zLnRvcC1vO3JldHVybiB0aGlzLmdyYXBoaWNzLmRyYXdSZWN0KGgsYyxhLndpZHRoK3IrbixhLmhlaWdodCtvK2wsMCxlLmxhYmVsLnN0eWxlLmJhY2tncm91bmQsMSxlLmxhYmVsLmJvcmRlcldpZHRoLGUubGFiZWwuYm9yZGVyQ29sb3IsMCl9fSx7a2V5OlwiYW5ub3RhdGlvbnNCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZnVuY3Rpb24oaSxzLGEpe3ZhciByPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoYSxcIi1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy1cIikuY29uY2F0KGEsXCItYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiKS5jb25jYXQocyxcIiddXCIpKTtpZihyKXt2YXIgbj1yLnBhcmVudE5vZGUsbz10LmFkZEJhY2tncm91bmRUb0Fubm8ocixpKTtvJiZuLmluc2VydEJlZm9yZShvLm5vZGUscil9fTtlLmNvbmZpZy5hbm5vdGF0aW9ucy54YXhpcy5tYXAoZnVuY3Rpb24odCxlKXtpKHQsZSxcInhheGlzXCIpfSksZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKGZ1bmN0aW9uKHQsZSl7aSh0LGUsXCJ5YXhpc1wiKX0pLGUuY29uZmlnLmFubm90YXRpb25zLnBvaW50cy5tYXAoZnVuY3Rpb24odCxlKXtpKHQsZSxcInBvaW50XCIpfSl9fSx7a2V5OlwiYWRkVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10LngsYT10Lnkscj10LnRleHQsbj10LnRleHRBbmNob3Isbz10LmFwcGVuZFRvLGw9dm9pZCAwPT09bz9cIi5hcGV4Y2hhcnRzLWlubmVyXCI6byxoPXQuZm9yZUNvbG9yLGM9dC5mb250U2l6ZSxkPXQuZm9udEZhbWlseSx1PXQuY3NzQ2xhc3MsZz10LmJhY2tncm91bmRDb2xvcixmPXQuYm9yZGVyV2lkdGgscD10LnN0cm9rZURhc2hBcnJheSx4PXQucmFkaXVzLG09dC5ib3JkZXJDb2xvcixiPXQucGFkZGluZ0xlZnQsdj12b2lkIDA9PT1iPzQ6Yix5PXQucGFkZGluZ1JpZ2h0LHc9dm9pZCAwPT09eT80Onksaz10LnBhZGRpbmdCb3R0b20sQT12b2lkIDA9PT1rPzI6ayxTPXQucGFkZGluZ1RvcCxDPXZvaWQgMD09PVM/MjpTLEw9aSxQPUwudyx6PVAuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IobCksVD10aGlzLmdyYXBoaWNzLmRyYXdUZXh0KHt4OnMseTphLHRleHQ6cix0ZXh0QW5jaG9yOm58fFwic3RhcnRcIixmb250U2l6ZTpjfHxcIjEycHhcIixmb250RmFtaWx5OmR8fFAuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksZm9yZUNvbG9yOmh8fFAuY29uZmlnLmNoYXJ0LmZvcmVDb2xvcixjc3NDbGFzczp1fSk7ei5hcHBlbmRDaGlsZChULm5vZGUpO3ZhciBNPVQuYmJveCgpO2lmKHIpe3ZhciBFPXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoTS54LXYsTS55LUMsTS53aWR0aCt2K3csTS5oZWlnaHQrQStDLHgsZywxLGYsbSxwKTtULmJlZm9yZShFKX1yZXR1cm4gZSYmUC5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnB1c2goe2NvbnRleHQ6TCxtZXRob2Q6TC5hZGRUZXh0LHBhcmFtczp7eDpzLHk6YSx0ZXh0OnIsdGV4dEFuY2hvcjpuLGFwcGVuZFRvOmwsZm9yZUNvbG9yOmgsZm9udFNpemU6Yyxjc3NDbGFzczp1LGJhY2tncm91bmRDb2xvcjpnLGJvcmRlcldpZHRoOmYsc3Ryb2tlRGFzaEFycmF5OnAscmFkaXVzOngsYm9yZGVyQ29sb3I6bSxwYWRkaW5nTGVmdDp2LHBhZGRpbmdSaWdodDp3LHBhZGRpbmdCb3R0b206QSxwYWRkaW5nVG9wOkN9fSksaX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5pbnZlcnRBeGlzJiYodGhpcy5pbnZlcnRBeGlzPWkudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCksdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczp0LHB1c2hUb01lbW9yeTplLGNvbnRleHQ6aSx0eXBlOlwicG9pbnRcIixjb250ZXh0TWV0aG9kOmkuYWRkUG9pbnRBbm5vdGF0aW9ufSksaX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczp0LHB1c2hUb01lbW9yeTplLGNvbnRleHQ6aSx0eXBlOlwieWF4aXNcIixjb250ZXh0TWV0aG9kOmkuYWRkWWF4aXNBbm5vdGF0aW9ufSksaX19LHtrZXk6XCJhZGRYYXhpc0Fubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczp0LHB1c2hUb01lbW9yeTplLGNvbnRleHQ6aSx0eXBlOlwieGF4aXNcIixjb250ZXh0TWV0aG9kOmkuYWRkWGF4aXNBbm5vdGF0aW9ufSksaX19LHtrZXk6XCJhZGRBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnBhcmFtcyxpPXQucHVzaFRvTWVtb3J5LHM9dC5jb250ZXh0LGE9dC50eXBlLHI9dC5jb250ZXh0TWV0aG9kLG49cyxvPW4udyxsPW8uZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoYSxcIi1hbm5vdGF0aW9uc1wiKSksaD1sLmNoaWxkTm9kZXMubGVuZ3RoKzEsYz1uZXcgT3B0aW9ucyxkPU9iamVjdC5hc3NpZ24oe30sXCJ4YXhpc1wiPT09YT9jLnhBeGlzQW5ub3RhdGlvbjpcInlheGlzXCI9PT1hP2MueUF4aXNBbm5vdGF0aW9uOmMucG9pbnRBbm5vdGF0aW9uKSx1PVV0aWxzLmV4dGVuZChkLGUpO3N3aXRjaChhKXtjYXNlXCJ4YXhpc1wiOnRoaXMuYWRkWGF4aXNBbm5vdGF0aW9uKHUsbCxoKTticmVhaztjYXNlXCJ5YXhpc1wiOnRoaXMuYWRkWWF4aXNBbm5vdGF0aW9uKHUsbCxoKTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuYWRkUG9pbnRBbm5vdGF0aW9uKHUsbCxoKX12YXIgZz1vLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGEsXCItYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMtXCIpLmNvbmNhdChhLFwiLWFubm90YXRpb24tbGFiZWxbcmVsPSdcIikuY29uY2F0KGgsXCInXVwiKSksZj10aGlzLmFkZEJhY2tncm91bmRUb0Fubm8oZyx1KTtyZXR1cm4gZiYmbC5pbnNlcnRCZWZvcmUoZi5ub2RlLGcpLGkmJm8uZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5wdXNoKHtjb250ZXh0Om4sbWV0aG9kOnIscGFyYW1zOmV9KSxzfX1dKSx0fSgpLERhdGVUaW1lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5tb250aHMzMT1bMSwzLDUsNyw4LDEwLDEyXSx0aGlzLm1vbnRoczMwPVsyLDQsNiw5LDExXSx0aGlzLmRheXNDbnRPZlllYXI9WzAsMzEsNTksOTAsMTIwLDE1MSwxODEsMjEyLDI0MywyNzMsMzA0LDMzNF19cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiaXNWYWxpZERhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4haXNOYU4odGhpcy5wYXJzZURhdGUodCkpfX0se2tleTpcImdldFVUQ1RpbWVTdGFtcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBEYXRlLnBhcnNlKHQpP25ldyBEYXRlKG5ldyBEYXRlKHQpLnRvSVNPU3RyaW5nKCkuc3Vic3RyKDAsMjUpKS5nZXRUaW1lKCk6dH19LHtrZXk6XCJwYXJzZURhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1EYXRlLnBhcnNlKHQpO2lmKCFpc05hTihlKSlyZXR1cm4gdGhpcy5nZXRVVENUaW1lU3RhbXAodCk7dmFyIGk9RGF0ZS5wYXJzZSh0LnJlcGxhY2UoLy0vZyxcIi9cIikucmVwbGFjZSgvW2Etel0rL2dpLFwiIFwiKSk7cmV0dXJuIGk9dGhpcy5nZXRVVENUaW1lU3RhbXAoaSl9fSx7a2V5OlwidHJlYXRBc1V0Y1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBEYXRlKHQpO3JldHVybiBlLnNldE1pbnV0ZXMoZS5nZXRNaW51dGVzKCktZS5nZXRUaW1lem9uZU9mZnNldCgpKSxlfX0se2tleTpcImZvcm1hdERhdGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scz0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLGE9dGhpcy53Lmdsb2JhbHMubG9jYWxlLHI9W1wiXFwwXCJdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoYS5tb250aHMpKSxuPVtcIlxceDAxXCJdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoYS5zaG9ydE1vbnRocykpLG89W1wiXFx4MDJcIl0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShhLmRheXMpKSxsPVtcIlxceDAzXCJdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoYS5zaG9ydERheXMpKTtmdW5jdGlvbiBoKHQsZSl7dmFyIGk9dCtcIlwiO2ZvcihlPWV8fDI7aS5sZW5ndGg8ZTspaT1cIjBcIitpO3JldHVybiBpfXMmJih0PXRoaXMudHJlYXRBc1V0Yyh0KSk7dmFyIGM9aT90LmdldFVUQ0Z1bGxZZWFyKCk6dC5nZXRGdWxsWWVhcigpO2U9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5eXkrL2csXCIkMVwiK2MpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5L2csXCIkMVwiK2MudG9TdHJpbmcoKS5zdWJzdHIoMiwyKSkpLnJlcGxhY2UoLyhefFteXFxcXF0peS9nLFwiJDFcIitjKTt2YXIgZD0oaT90LmdldFVUQ01vbnRoKCk6dC5nZXRNb250aCgpKSsxO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTU0rL2csXCIkMVwiK3JbMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTS9nLFwiJDFcIituWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlNTS9nLFwiJDFcIitoKGQpKSkucmVwbGFjZSgvKF58W15cXFxcXSlNL2csXCIkMVwiK2QpO3ZhciB1PWk/dC5nZXRVVENEYXRlKCk6dC5nZXREYXRlKCk7ZT0oZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZGRkZCsvZyxcIiQxXCIrb1swXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pZGRkL2csXCIkMVwiK2xbMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkL2csXCIkMVwiK2godSkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWQvZyxcIiQxXCIrdSk7dmFyIGc9aT90LmdldFVUQ0hvdXJzKCk6dC5nZXRIb3VycygpLGY9Zz4xMj9nLTEyOjA9PT1nPzEyOmc7ZT0oZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pSEgrL2csXCIkMVwiK2goZykpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKUgvZyxcIiQxXCIrZykpLnJlcGxhY2UoLyhefFteXFxcXF0paGgrL2csXCIkMVwiK2goZikpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWgvZyxcIiQxXCIrZik7dmFyIHA9aT90LmdldFVUQ01pbnV0ZXMoKTp0LmdldE1pbnV0ZXMoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSltbSsvZyxcIiQxXCIraChwKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pbS9nLFwiJDFcIitwKTt2YXIgeD1pP3QuZ2V0VVRDU2Vjb25kcygpOnQuZ2V0U2Vjb25kcygpO2U9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXNzKy9nLFwiJDFcIitoKHgpKSkucmVwbGFjZSgvKF58W15cXFxcXSlzL2csXCIkMVwiK3gpO3ZhciBtPWk/dC5nZXRVVENNaWxsaXNlY29uZHMoKTp0LmdldE1pbGxpc2Vjb25kcygpO2U9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWZmZisvZyxcIiQxXCIraChtLDMpKSxtPU1hdGgucm91bmQobS8xMCksZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZmYvZyxcIiQxXCIraChtKSksbT1NYXRoLnJvdW5kKG0vMTApO3ZhciBiPWc8MTI/XCJBTVwiOlwiUE1cIjtlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlmL2csXCIkMVwiK20pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKVRUKy9nLFwiJDFcIitiKSkucmVwbGFjZSgvKF58W15cXFxcXSlUL2csXCIkMVwiK2IuY2hhckF0KDApKTt2YXIgdj1iLnRvTG93ZXJDYXNlKCk7ZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pdHQrL2csXCIkMVwiK3YpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXQvZyxcIiQxXCIrdi5jaGFyQXQoMCkpO3ZhciB5PS10LmdldFRpbWV6b25lT2Zmc2V0KCksdz1pfHwheT9cIlpcIjp5PjA/XCIrXCI6XCItXCI7aWYoIWkpe3ZhciBrPSh5PU1hdGguYWJzKHkpKSU2MDt3Kz1oKE1hdGguZmxvb3IoeS82MCkpK1wiOlwiK2goayl9ZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pSy9nLFwiJDFcIit3KTt2YXIgQT0oaT90LmdldFVUQ0RheSgpOnQuZ2V0RGF5KCkpKzE7cmV0dXJuIGU9KGU9KGU9KGU9KGU9ZS5yZXBsYWNlKG5ldyBSZWdFeHAob1swXSxcImdcIiksb1tBXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChsWzBdLFwiZ1wiKSxsW0FdKSkucmVwbGFjZShuZXcgUmVnRXhwKHJbMF0sXCJnXCIpLHJbZF0pKS5yZXBsYWNlKG5ldyBSZWdFeHAoblswXSxcImdcIiksbltkXSkpLnJlcGxhY2UoL1xcXFwoLikvZyxcIiQxXCIpfX0se2tleTpcImdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXBcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudzt2b2lkIDAhPT1pLmNvbmZpZy54YXhpcy5taW4mJih0PWkuY29uZmlnLnhheGlzLm1pbiksdm9pZCAwIT09aS5jb25maWcueGF4aXMubWF4JiYoZT1pLmNvbmZpZy54YXhpcy5tYXgpO3ZhciBzPW5ldyBEYXRlKHQpLmdldEZ1bGxZZWFyKCksYT1uZXcgRGF0ZShlKS5nZXRGdWxsWWVhcigpLHI9bmV3IERhdGUodCkuZ2V0TW9udGgoKSxuPW5ldyBEYXRlKGUpLmdldE1vbnRoKCksbz1uZXcgRGF0ZSh0KS5nZXREYXRlKCksbD1uZXcgRGF0ZShlKS5nZXREYXRlKCksaD1uZXcgRGF0ZSh0KS5nZXRIb3VycygpLGM9bmV3IERhdGUoZSkuZ2V0SG91cnMoKTtyZXR1cm57bWluTWludXRlOm5ldyBEYXRlKHQpLmdldE1pbnV0ZXMoKSxtYXhNaW51dGU6bmV3IERhdGUoZSkuZ2V0TWludXRlcygpLG1pbkhvdXI6aCxtYXhIb3VyOmMsbWluRGF0ZTpvLG1heERhdGU6bCxtaW5Nb250aDpyLG1heE1vbnRoOm4sbWluWWVhcjpzLG1heFllYXI6YX19fSx7a2V5OlwiaXNMZWFwWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JTQ9PTAmJnQlMTAwIT0wfHx0JTQwMD09MH19LHtrZXk6XCJjYWxjdWxjYXRlTGFzdERheXNPZk1vbnRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmRldGVybWluZURheXNPZk1vbnRocyh0LGUpLWl9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTM2NTtyZXR1cm4gdGhpcy5pc0xlYXBZZWFyKHQpJiYoZT0zNjYpLGV9fSx7a2V5OlwiZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLmRheXNDbnRPZlllYXJbZV0raTtyZXR1cm4gZT4xJiZ0aGlzLmlzTGVhcFllYXIoKSYmcysrLHN9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mTW9udGhzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0zMDtzd2l0Y2godD1VdGlscy5tb250aE1vZCh0KSwhMCl7Y2FzZSB0aGlzLm1vbnRoczMwLmluZGV4T2YodCk+LTE6Mj09PXQmJihpPXRoaXMuaXNMZWFwWWVhcihlKT8yOToyOCk7YnJlYWs7Y2FzZSB0aGlzLm1vbnRoczMxLmluZGV4T2YodCk+LTE6ZGVmYXVsdDppPTMxfXJldHVybiBpfX1dKSx0fSgpLERlZmF1bHRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLm9wdHM9ZX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJsaW5lXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2Vhc2luZzpcInN3aW5nXCJ9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSxzdHJva2U6e3dpZHRoOjUsY3VydmU6XCJzdHJhaWdodFwifSxtYXJrZXJzOntzaXplOjAsaG92ZXI6e3NpemVPZmZzZXQ6Nn19LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcInNwYXJrbGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMub3B0cy55YXhpc1swXS5sYWJlbHMuc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uZmxvYXRpbmc9ITA7cmV0dXJuIFV0aWxzLmV4dGVuZCh0LHtncmlkOntzaG93OiExLHBhZGRpbmc6e2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTowfX0sbGVnZW5kOntzaG93OiExfSx4YXhpczp7bGFiZWxzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfSxheGlzQm9yZGVyOntzaG93OiExfX0sY2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfX0pfX0se2tleTpcImJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OntzdGFja2VkOiExLGFuaW1hdGlvbnM6e2Vhc2luZzpcInN3aW5nXCJ9fSxwbG90T3B0aW9uczp7YmFyOntkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX19LHN0cm9rZTp7d2lkdGg6MH0sZmlsbDp7b3BhY2l0eTouODV9LGxlZ2VuZDp7bWFya2Vyczp7c2hhcGU6XCJzcXVhcmVcIixyYWRpdXM6MixzaXplOjh9fSx0b29sdGlwOntzaGFyZWQ6ITF9LHhheGlzOnt0b29sdGlwOntlbmFibGVkOiExfSxjcm9zc2hhaXJzOnt3aWR0aDpcImJhcldpZHRoXCIscG9zaXRpb246XCJiYWNrXCIsZmlsbDp7dHlwZTpcImdyYWRpZW50XCJ9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MH19fX19fSx7a2V5OlwiY2FuZGxlc3RpY2tcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntzdHJva2U6e3dpZHRoOjEsY29sb3JzOltcIiMzMzNcIl19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHRvb2x0aXA6e3NoYXJlZDohMCxjdXN0b206ZnVuY3Rpb24odCl7dmFyIGU9dC5zZXJpZXNJbmRleCxpPXQuZGF0YVBvaW50SW5kZXgscz10Lnc7cmV0dXJuJzxkaXYgY2xhc3M9XCJhcGV4Y2hhcnRzLXRvb2x0aXAtY2FuZGxlc3RpY2tcIj48ZGl2Pk9wZW46IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nK3MuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2VdW2ldKyc8L3NwYW4+PC9kaXY+PGRpdj5IaWdoOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JytzLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVtpXSsnPC9zcGFuPjwvZGl2PjxkaXY+TG93OiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JytzLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtlXVtpXSsnPC9zcGFuPjwvZGl2PjxkaXY+Q2xvc2U6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nK3MuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW2VdW2ldK1wiPC9zcGFuPjwvZGl2PjwvZGl2PlwifX0sc3RhdGVzOnthY3RpdmU6e2ZpbHRlcjp7dHlwZTpcIm5vbmVcIn19fSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MX19fX19LHtrZXk6XCJyYW5nZUJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7d2lkdGg6MH0scGxvdE9wdGlvbnM6e2Jhcjp7ZGF0YUxhYmVsczp7cG9zaXRpb246XCJjZW50ZXJcIn19fSxkYXRhTGFiZWxzOntlbmFibGVkOiExLGZvcm1hdHRlcjpmdW5jdGlvbih0LGUpe2UuY3R4O3ZhciBpPWUuc2VyaWVzSW5kZXgscz1lLmRhdGFQb2ludEluZGV4LGE9ZS53LHI9YS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbaV1bc107cmV0dXJuIGEuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtpXVtzXS1yfSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSx0b29sdGlwOntzaGFyZWQ6ITEsZm9sbG93Q3Vyc29yOiEwLGN1c3RvbTpmdW5jdGlvbih0KXt2YXIgZT10LmN0eCxpPXQuc2VyaWVzSW5kZXgscz10LmRhdGFQb2ludEluZGV4LGE9dC53LHI9YS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbaV1bc10sbj1hLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbaV1bc10sbz1cIlwiLGw9XCJcIixoPWEuZ2xvYmFscy5jb2xvcnNbaV07aWYodm9pZCAwPT09YS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcilpZihcImRhdGV0aW1lXCI9PT1hLmNvbmZpZy54YXhpcy50eXBlKXt2YXIgYz1uZXcgRGF0ZVRpbWUoZSk7bz1jLmZvcm1hdERhdGUobmV3IERhdGUociksYS5jb25maWcudG9vbHRpcC54LmZvcm1hdCwhMCwhMCksbD1jLmZvcm1hdERhdGUobmV3IERhdGUobiksYS5jb25maWcudG9vbHRpcC54LmZvcm1hdCwhMCwhMCl9ZWxzZSBvPXIsbD1uO2Vsc2Ugbz1hLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKHIpLGw9YS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcihuKTt2YXIgZD1hLmdsb2JhbHMubGFiZWxzW3NdO3JldHVybic8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyXCI+PGRpdj4gPHNwYW4gY2xhc3M9XCJzZXJpZXMtbmFtZVwiIHN0eWxlPVwiY29sb3I6ICcraCsnXCI+JysoYS5jb25maWcuc2VyaWVzW2ldLm5hbWU/YS5jb25maWcuc2VyaWVzW2ldLm5hbWU6XCJcIikrJzwvc3Bhbj48L2Rpdj48ZGl2PiA8c3BhbiBjbGFzcz1cImNhdGVnb3J5XCI+JytkKyc6IDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ2YWx1ZSBzdGFydC12YWx1ZVwiPicrbysnPC9zcGFuPiA8c3BhbiBjbGFzcz1cInNlcGFyYXRvclwiPi08L3NwYW4+IDxzcGFuIGNsYXNzPVwidmFsdWUgZW5kLXZhbHVlXCI+JytsK1wiPC9zcGFuPjwvZGl2PjwvZGl2PlwifX0seGF4aXM6e3Rvb2x0aXA6e2VuYWJsZWQ6ITF9LGNyb3NzaGFpcnM6e3N0cm9rZTp7d2lkdGg6MH19fX19fSx7a2V5OlwiYXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7d2lkdGg6NH0sZmlsbDp7dHlwZTpcImdyYWRpZW50XCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6XCJsaWdodFwiLHR5cGU6XCJ2ZXJ0aWNhbFwiLG9wYWNpdHlGcm9tOi42NSxvcGFjaXR5VG86LjUsc3RvcHM6WzAsMTAwLDEwMF19fSxtYXJrZXJzOntzaXplOjAsaG92ZXI6e3NpemVPZmZzZXQ6Nn19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMX19fX0se2tleTpcImJydXNoXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIFV0aWxzLmV4dGVuZCh0LHtjaGFydDp7dG9vbGJhcjp7YXV0b1NlbGVjdGVkOlwic2VsZWN0aW9uXCIsc2hvdzohMX0sem9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0seGF4aXM6e3Rvb2x0aXA6e2VuYWJsZWQ6ITF9fX0pfX0se2tleTpcInN0YWNrZWQxMDBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5vcHRzLmRhdGFMYWJlbHM9dGhpcy5vcHRzLmRhdGFMYWJlbHN8fHt9LHRoaXMub3B0cy5kYXRhTGFiZWxzLmZvcm1hdHRlcj10aGlzLm9wdHMuZGF0YUxhYmVscy5mb3JtYXR0ZXJ8fHZvaWQgMDt2YXIgZT10aGlzLm9wdHMuZGF0YUxhYmVscy5mb3JtYXR0ZXI7dGhpcy5vcHRzLnlheGlzLmZvckVhY2goZnVuY3Rpb24oZSxpKXt0Lm9wdHMueWF4aXNbaV0ubWluPTAsdC5vcHRzLnlheGlzW2ldLm1heD0xMDB9KSxcImJhclwiPT09dGhpcy5vcHRzLmNoYXJ0LnR5cGUmJih0aGlzLm9wdHMuZGF0YUxhYmVscy5mb3JtYXR0ZXI9ZXx8ZnVuY3Rpb24odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ/dC50b0ZpeGVkKDApK1wiJVwiOnR9KX19LHtrZXk6XCJidWJibGVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MH19LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsaW52ZXJzZTohMCxzaGFkZUludGVuc2l0eTouNTUsb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi44fX19fX0se2tleTpcInNjYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSxtYXJrZXJzOntzaXplOjYsc3Ryb2tlV2lkdGg6Mixob3Zlcjp7c2l6ZU9mZnNldDoyfX19fX0se2tleTpcImhlYXRtYXBcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7c3RhY2tlZDohMSx6b29tOntlbmFibGVkOiExfX0sZmlsbDp7b3BhY2l0eToxfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITAsbWFya2VyOntzaG93OiExfSx4OntzaG93OiExfX0sbGVnZW5kOntwb3NpdGlvbjpcInRvcFwiLG1hcmtlcnM6e3NoYXBlOlwic3F1YXJlXCIsc2l6ZToxMCxvZmZzZXRZOjJ9fSxncmlkOntwYWRkaW5nOntyaWdodDoyMH19fX19LHtrZXk6XCJwaWVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LHBsb3RPcHRpb25zOntwaWU6e2RvbnV0OntsYWJlbHM6e3Nob3c6ITF9fX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKDEpK1wiJVwifSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITB9fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSxmaWxsOntvcGFjaXR5OjEsZ3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHNoYWRlSW50ZW5zaXR5Oi4zNSxpbnZlcnNlQ29sb3JzOiExLHN0b3BzOlswLDEwMCwxMDBdfX0scGFkZGluZzp7cmlnaHQ6MCxsZWZ0OjB9LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJkb251dFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoMSkrXCIlXCJ9LHN0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMH19LHN0cm9rZTp7Y29sb3JzOltcIiNmZmZcIl19LGZpbGw6e29wYWNpdHk6MSxncmFkaWVudDp7c2hhZGU6XCJkYXJrXCIsc2hhZGVJbnRlbnNpdHk6LjQsaW52ZXJzZUNvbG9yczohMSx0eXBlOlwidmVydGljYWxcIixvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOls3MCw5OCwxMDBdfX0scGFkZGluZzp7cmlnaHQ6MCxsZWZ0OjB9LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJyYWRhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS5sYWJlbHMuc3R5bGUuZm9udFNpemU9XCIxM3B4XCIsdGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZPTYse2RhdGFMYWJlbHM6e2VuYWJsZWQ6ITAsc3R5bGU6e2NvbG9yczpbXCIjYThhOGE4XCJdLGZvbnRTaXplOlwiMTFweFwifX0sc3Ryb2tlOnt3aWR0aDoyfSxtYXJrZXJzOntzaXplOjMsc3Ryb2tlV2lkdGg6MSxzdHJva2VPcGFjaXR5OjF9LGZpbGw6e29wYWNpdHk6LjJ9LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITAsZm9sbG93Q3Vyc29yOiEwfSxncmlkOntzaG93OiExfSx4YXhpczp7dG9vbHRpcDp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyczp7c2hvdzohMX19fX19LHtrZXk6XCJyYWRpYWxCYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7ZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMCxzcGVlZDo4MDB9fSx0b29sYmFyOntzaG93OiExfX0sZmlsbDp7Z3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHNoYWRlSW50ZW5zaXR5Oi40LGludmVyc2VDb2xvcnM6ITEsdHlwZTpcImRpYWdvbmFsMlwiLG9wYWNpdHlGcm9tOjEsb3BhY2l0eVRvOjEsc3RvcHM6WzcwLDk4LDEwMF19fSxwYWRkaW5nOntyaWdodDowLGxlZnQ6MH0sbGVnZW5kOntzaG93OiExLHBvc2l0aW9uOlwicmlnaHRcIn0sdG9vbHRpcDp7ZW5hYmxlZDohMSxmaWxsU2VyaWVzQ29sb3I6ITB9fX19XSxbe2tleTpcImNvbnZlcnRDYXRUb051bWVyaWNcIix2YWx1ZTpmdW5jdGlvbih0KXt0LnhheGlzLnR5cGU9XCJudW1lcmljXCIsdC54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM9ITAsdC54YXhpcy5sYWJlbHM9dC54YXhpcy5sYWJlbHN8fHt9LHQueGF4aXMubGFiZWxzLmZvcm1hdHRlcj10LnhheGlzLmxhYmVscy5mb3JtYXR0ZXJ8fGZ1bmN0aW9uKHQpe3JldHVybiB0fSx0LmNoYXJ0PXQuY2hhcnR8fHt9LHQuY2hhcnQuem9vbT10LmNoYXJ0Lnpvb218fHdpbmRvdy5BcGV4LmNoYXJ0JiZ3aW5kb3cuQXBleC5jaGFydC56b29tfHx7fTt2YXIgZT10LnhheGlzLmxhYmVscy5mb3JtYXR0ZXIsaT10LnhheGlzLmNhdGVnb3JpZXMmJnQueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg/dC54YXhpcy5jYXRlZ29yaWVzOnQubGFiZWxzO3JldHVybiBpJiZpLmxlbmd0aCYmKHQueGF4aXMubGFiZWxzLmZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gZShpW3QtMV0pfSksdC54YXhpcy5jYXRlZ29yaWVzPVtdLHQubGFiZWxzPVtdLHQuY2hhcnQuem9vbS5lbmFibGVkPXQuY2hhcnQuem9vbS5lbmFibGVkfHwhMSx0fX1dKSx0fSgpLENvcmVVdGlscz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImdldFN0YWNrZWRTZXJpZXNUb3RhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPVtdO2lmKDA9PT10Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aClyZXR1cm4gZTtmb3IodmFyIGk9MDtpPHQuZ2xvYmFscy5zZXJpZXNbdC5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtpKyspe2Zvcih2YXIgcz0wLGE9MDthPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2ErKylzKz10Lmdsb2JhbHMuc2VyaWVzW2FdW2ldO2UucHVzaChzKX1yZXR1cm4gdC5nbG9iYWxzLnN0YWNrZWRTZXJpZXNUb3RhbHM9ZSxlfX0se2tleTpcImdldFNlcmllc1RvdGFsQnlJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7cmV0dXJuIG51bGw9PT10P3RoaXMudy5jb25maWcuc2VyaWVzLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9LDApOnRoaXMudy5nbG9iYWxzLnNlcmllc1t0XS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSwwKX19LHtrZXk6XCJpc1Nlcmllc051bGxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiAwPT09KG51bGw9PT10P3RoaXMudy5jb25maWcuc2VyaWVzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KTp0aGlzLncuZ2xvYmFscy5zZXJpZXNbdF0uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKS5sZW5ndGh9fSx7a2V5Olwic2VyaWVzSGF2ZVNhbWVWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuc2VyaWVzW3RdLmV2ZXJ5KGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD09PWlbMF19KX19LHtrZXk6XCJnZXRMYXJnZXN0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXg9dC5nbG9iYWxzLnNlcmllcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkuaW5kZXhPZihNYXRoLm1heC5hcHBseShNYXRoLHQuZ2xvYmFscy5zZXJpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKSl9fSx7a2V5OlwiZ2V0TGFyZ2VzdE1hcmtlclNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTA7cmV0dXJuIHQuZ2xvYmFscy5tYXJrZXJzLnNpemUuZm9yRWFjaChmdW5jdGlvbih0KXtlPU1hdGgubWF4KGUsdCl9KSx0Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZT1lLGV9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnNlcmllc1RvdGFscz10Lmdsb2JhbHMuc2VyaWVzLm1hcChmdW5jdGlvbih0LGUpe3ZhciBpPTA7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKylpKz10W3NdO2Vsc2UgaSs9dDtyZXR1cm4gaX0pfX0se2tleTpcImdldFNlcmllc1RvdGFsc1hSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybiBpLmdsb2JhbHMuc2VyaWVzLm1hcChmdW5jdGlvbihzLGEpe2Zvcih2YXIgcj0wLG49MDtuPHMubGVuZ3RoO24rKylpLmdsb2JhbHMuc2VyaWVzWFthXVtuXT50JiZpLmdsb2JhbHMuc2VyaWVzWFthXVtuXTxlJiYocis9c1tuXSk7cmV0dXJuIHJ9KX19LHtrZXk6XCJnZXRQZXJjZW50U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnNlcmllc1BlcmNlbnQ9dC5nbG9iYWxzLnNlcmllcy5tYXAoZnVuY3Rpb24oZSxpKXt2YXIgcz1bXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgcj10Lmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsc1thXSxuPTA7ciYmKG49MTAwKmVbYV0vcikscy5wdXNoKG4pfWVsc2V7dmFyIG89MTAwKmUvdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSwwKTtzLnB1c2gobyl9cmV0dXJuIHN9KX19LHtrZXk6XCJnZXRDYWxjdWxhdGVkUmF0aW9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlLGkscyxhLHI9dGhpcy53Lmdsb2JhbHMsbj1bXSxvPVtdLGw9LjEsaD0wO2lmKHIueVJhbmdlPVtdLHIuaXNNdWx0aXBsZVlBeGlzKWZvcih2YXIgYz0wO2M8ci5taW5ZQXJyLmxlbmd0aDtjKyspci55UmFuZ2UucHVzaChNYXRoLmFicyhyLm1pbllBcnJbY10tci5tYXhZQXJyW2NdKSksby5wdXNoKDApO2Vsc2Ugci55UmFuZ2UucHVzaChNYXRoLmFicyhyLm1pblktci5tYXhZKSk7ci54UmFuZ2U9TWF0aC5hYnMoci5tYXhYLXIubWluWCksci56UmFuZ2U9TWF0aC5hYnMoci5tYXhaLXIubWluWik7Zm9yKHZhciBkPTA7ZDxyLnlSYW5nZS5sZW5ndGg7ZCsrKW4ucHVzaChyLnlSYW5nZVtkXS9yLmdyaWRIZWlnaHQpO2lmKGU9ci54UmFuZ2Uvci5ncmlkV2lkdGgsaT1NYXRoLmFicyhyLmluaXRpYWxtYXhYLXIuaW5pdGlhbG1pblgpL3IuZ3JpZFdpZHRoLHQ9ci55UmFuZ2Uvci5ncmlkV2lkdGgscz1yLnhSYW5nZS9yLmdyaWRIZWlnaHQsYT1yLnpSYW5nZS9yLmdyaWRIZWlnaHQqMTYsci5taW5ZIT09TnVtYmVyLk1JTl9WQUxVRSYmMCE9PU1hdGguYWJzKHIubWluWSkmJihyLmhhc05lZ3M9ITApLHIuaXNNdWx0aXBsZVlBeGlzKXtvPVtdO2Zvcih2YXIgdT0wO3U8bi5sZW5ndGg7dSsrKW8ucHVzaCgtci5taW5ZQXJyW3VdL25bdV0pfWVsc2Ugby5wdXNoKC1yLm1pblkvblswXSksci5taW5ZIT09TnVtYmVyLk1JTl9WQUxVRSYmMCE9PU1hdGguYWJzKHIubWluWSkmJihsPS1yLm1pblkvdCxoPXIubWluWC9lKTtyZXR1cm57eVJhdGlvOm4saW52ZXJ0ZWRZUmF0aW86dCx6UmF0aW86YSx4UmF0aW86ZSxpbml0aWFsWFJhdGlvOmksaW52ZXJ0ZWRYUmF0aW86cyxiYXNlTGluZUludmVydGVkWTpsLGJhc2VMaW5lWTpvLGJhc2VMaW5lWDpofX19LHtrZXk6XCJnZXRMb2dTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIGUuZ2xvYmFscy5zZXJpZXNMb2c9dC5tYXAoZnVuY3Rpb24odCxpKXtyZXR1cm4gZS5jb25maWcueWF4aXNbaV0mJmUuY29uZmlnLnlheGlzW2ldLmxvZ2FyaXRobWljP3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dD9udWxsOihNYXRoLmxvZyh0KS1NYXRoLmxvZyhlLmdsb2JhbHMubWluWUFycltpXSkpLyhNYXRoLmxvZyhlLmdsb2JhbHMubWF4WUFycltpXSktTWF0aC5sb2coZS5nbG9iYWxzLm1pbllBcnJbaV0pKX0pOnR9KSxlLmdsb2JhbHMuc2VyaWVzTG9nfX0se2tleTpcImdldExvZ1lSYXRpb3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LHM9dGhpcy53Lmdsb2JhbHM7cmV0dXJuIHMueUxvZ1JhdGlvPXQuc2xpY2UoKSxzLmxvZ1lSYW5nZT1zLnlSYW5nZS5tYXAoZnVuY3Rpb24odCxhKXtpZihpLmNvbmZpZy55YXhpc1thXSYmZS53LmNvbmZpZy55YXhpc1thXS5sb2dhcml0aG1pYyl7dmFyIHIsbj0tTnVtYmVyLk1BWF9WQUxVRSxvPU51bWJlci5NSU5fVkFMVUU7cmV0dXJuIHMuc2VyaWVzTG9nLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmZvckVhY2goZnVuY3Rpb24odCl7aS5jb25maWcueWF4aXNbZV0mJmkuY29uZmlnLnlheGlzW2VdLmxvZ2FyaXRobWljJiYobj1NYXRoLm1heCh0LG4pLG89TWF0aC5taW4odCxvKSl9KX0pLHI9TWF0aC5wb3cocy55UmFuZ2VbYV0sTWF0aC5hYnMoby1uKS9zLnlSYW5nZVthXSkscy55TG9nUmF0aW9bYV09ci9zLmdyaWRIZWlnaHQscn19KSxzLnlMb2dSYXRpb319XSxbe2tleTpcImNoZWNrQ29tYm9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hMSxpPSExO3JldHVybiB0Lmxlbmd0aCYmdm9pZCAwIT09dFswXS50eXBlJiYoZT0hMCx0LmZvckVhY2goZnVuY3Rpb24odCl7XCJiYXJcIiE9PXQudHlwZSYmXCJjb2x1bW5cIiE9PXQudHlwZXx8KGk9ITApfSkpLHtjb21ib0NoYXJ0czplLGNvbWJvQ2hhcnRzSGFzQmFyczppfX19LHtrZXk6XCJleHRlbmRBcnJheVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS55YXhpcyYmKGU9dC5leHRlbmRZQXhpcyhlKSksZS5hbm5vdGF0aW9ucyYmKGUuYW5ub3RhdGlvbnMueWF4aXMmJihlPXQuZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyhlKSksZS5hbm5vdGF0aW9ucy54YXhpcyYmKGU9dC5leHRlbmRYQXhpc0Fubm90YXRpb25zKGUpKSxlLmFubm90YXRpb25zLnBvaW50cyYmKGU9dC5leHRlbmRQb2ludEFubm90YXRpb25zKGUpKSksZX19XSksdH0oKSxDb25maWc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMub3B0cz1lfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0cyxlPW5ldyBPcHRpb25zLGk9bmV3IERlZmF1bHRzKHQpO3RoaXMuY2hhcnRUeXBlPXQuY2hhcnQudHlwZSxcImhpc3RvZ3JhbVwiPT09dGhpcy5jaGFydFR5cGUmJih0LmNoYXJ0LnR5cGU9XCJiYXJcIix0PVV0aWxzLmV4dGVuZCh7cGxvdE9wdGlvbnM6e2Jhcjp7Y29sdW1uV2lkdGg6XCI5OS45OSVcIn19fSx0KSksdD10aGlzLmV4dGVuZFlBeGlzKHQpLHQ9dGhpcy5leHRlbmRBbm5vdGF0aW9ucyh0KTt2YXIgcz1lLmluaXQoKSxhPXt9O2lmKHQmJlwib2JqZWN0XCI9PT1fdHlwZW9mKHQpKXt2YXIgcj17fTtzd2l0Y2godGhpcy5jaGFydFR5cGUpe2Nhc2VcImxpbmVcIjpyPWkubGluZSgpO2JyZWFrO2Nhc2VcImFyZWFcIjpyPWkuYXJlYSgpO2JyZWFrO2Nhc2VcImJhclwiOnI9aS5iYXIoKTticmVhaztjYXNlXCJjYW5kbGVzdGlja1wiOnI9aS5jYW5kbGVzdGljaygpO2JyZWFrO2Nhc2VcInJhbmdlQmFyXCI6cj1pLnJhbmdlQmFyKCk7YnJlYWs7Y2FzZVwiaGlzdG9ncmFtXCI6cj1pLmJhcigpO2JyZWFrO2Nhc2VcImJ1YmJsZVwiOnI9aS5idWJibGUoKTticmVhaztjYXNlXCJzY2F0dGVyXCI6cj1pLnNjYXR0ZXIoKTticmVhaztjYXNlXCJoZWF0bWFwXCI6cj1pLmhlYXRtYXAoKTticmVhaztjYXNlXCJwaWVcIjpyPWkucGllKCk7YnJlYWs7Y2FzZVwiZG9udXRcIjpyPWkuZG9udXQoKTticmVhaztjYXNlXCJyYWRhclwiOnI9aS5yYWRhcigpO2JyZWFrO2Nhc2VcInJhZGlhbEJhclwiOnI9aS5yYWRpYWxCYXIoKTticmVhaztkZWZhdWx0OnI9aS5saW5lKCl9dC5jaGFydC5icnVzaCYmdC5jaGFydC5icnVzaC5lbmFibGVkJiYocj1pLmJydXNoKHIpKSx0LmNoYXJ0LnN0YWNrZWQmJlwiMTAwJVwiPT09dC5jaGFydC5zdGFja1R5cGUmJmkuc3RhY2tlZDEwMCgpLHRoaXMuY2hlY2tGb3JEYXJrVGhlbWUod2luZG93LkFwZXgpLHRoaXMuY2hlY2tGb3JEYXJrVGhlbWUodCksdC54YXhpcz10LnhheGlzfHx3aW5kb3cuQXBleC54YXhpc3x8e307dmFyIG49Q29yZVV0aWxzLmNoZWNrQ29tYm9TZXJpZXModC5zZXJpZXMpO1wibGluZVwiIT09dC5jaGFydC50eXBlJiZcImFyZWFcIiE9PXQuY2hhcnQudHlwZSYmXCJzY2F0dGVyXCIhPT10LmNoYXJ0LnR5cGV8fG4uY29tYm9DaGFydHNIYXNCYXJzfHxcImRhdGV0aW1lXCI9PT10LnhheGlzLnR5cGV8fFwibnVtZXJpY1wiPT09dC54YXhpcy50eXBlfHxcImJldHdlZW5cIj09PXQueGF4aXMudGlja1BsYWNlbWVudHx8KHQ9RGVmYXVsdHMuY29udmVydENhdFRvTnVtZXJpYyh0KSksKHQuY2hhcnQuc3BhcmtsaW5lJiZ0LmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkfHx3aW5kb3cuQXBleC5jaGFydCYmd2luZG93LkFwZXguY2hhcnQuc3BhcmtsaW5lJiZ3aW5kb3cuQXBleC5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCkmJihyPWkuc3BhcmtsaW5lKHIpKSxhPVV0aWxzLmV4dGVuZChzLHIpfXZhciBvPVV0aWxzLmV4dGVuZChhLHdpbmRvdy5BcGV4KTtyZXR1cm4gcz1VdGlscy5leHRlbmQobyx0KSxzPXRoaXMuaGFuZGxlVXNlcklucHV0RXJyb3JzKHMpfX0se2tleTpcImV4dGVuZFlBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IE9wdGlvbnM7cmV0dXJuIHZvaWQgMD09PXQueWF4aXMmJih0LnlheGlzPXt9KSx0LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXkmJndpbmRvdy5BcGV4LnlheGlzJiZ3aW5kb3cuQXBleC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5JiYodC55YXhpcz1VdGlscy5leHRlbmQodC55YXhpcyx3aW5kb3cuQXBleC55YXhpcykpLHQueWF4aXMuY29uc3RydWN0b3IhPT1BcnJheT90LnlheGlzPVtVdGlscy5leHRlbmQoZS55QXhpcyx0LnlheGlzKV06dC55YXhpcz1VdGlscy5leHRlbmRBcnJheSh0LnlheGlzLGUueUF4aXMpLHR9fSx7a2V5OlwiZXh0ZW5kQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dC5hbm5vdGF0aW9ucyYmKHQuYW5ub3RhdGlvbnM9e30sdC5hbm5vdGF0aW9ucy55YXhpcz1bXSx0LmFubm90YXRpb25zLnhheGlzPVtdLHQuYW5ub3RhdGlvbnMucG9pbnRzPVtdKSx0PXRoaXMuZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyh0KSx0PXRoaXMuZXh0ZW5kWEF4aXNBbm5vdGF0aW9ucyh0KSx0PXRoaXMuZXh0ZW5kUG9pbnRBbm5vdGF0aW9ucyh0KX19LHtrZXk6XCJleHRlbmRZQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IE9wdGlvbnM7cmV0dXJuIHQuYW5ub3RhdGlvbnMueWF4aXM9VXRpbHMuZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy55YXhpcz90LmFubm90YXRpb25zLnlheGlzOltdLGUueUF4aXNBbm5vdGF0aW9uKSx0fX0se2tleTpcImV4dGVuZFhBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgT3B0aW9ucztyZXR1cm4gdC5hbm5vdGF0aW9ucy54YXhpcz1VdGlscy5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnhheGlzP3QuYW5ub3RhdGlvbnMueGF4aXM6W10sZS54QXhpc0Fubm90YXRpb24pLHR9fSx7a2V5OlwiZXh0ZW5kUG9pbnRBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBPcHRpb25zO3JldHVybiB0LmFubm90YXRpb25zLnBvaW50cz1VdGlscy5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnBvaW50cz90LmFubm90YXRpb25zLnBvaW50czpbXSxlLnBvaW50QW5ub3RhdGlvbiksdH19LHtrZXk6XCJjaGVja0ZvckRhcmtUaGVtZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3QudGhlbWUmJlwiZGFya1wiPT09dC50aGVtZS5tb2RlJiYodC50b29sdGlwfHwodC50b29sdGlwPXt9KSxcImxpZ2h0XCIhPT10LnRvb2x0aXAudGhlbWUmJih0LnRvb2x0aXAudGhlbWU9XCJkYXJrXCIpLHQuY2hhcnQuZm9yZUNvbG9yfHwodC5jaGFydC5mb3JlQ29sb3I9XCIjZjZmN2Y4XCIpLHQudGhlbWUucGFsZXR0ZXx8KHQudGhlbWUucGFsZXR0ZT1cInBhbGV0dGU0XCIpKX19LHtrZXk6XCJoYW5kbGVVc2VySW5wdXRFcnJvcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10O2lmKGUudG9vbHRpcC5zaGFyZWQmJmUudG9vbHRpcC5pbnRlcnNlY3QpdGhyb3cgbmV3IEVycm9yKFwidG9vbHRpcC5zaGFyZWQgY2Fubm90IGJlIGVuYWJsZWQgd2hlbiB0b29sdGlwLmludGVyc2VjdCBpcyB0cnVlLiBUdXJuIG9mZiBhbnkgb3RoZXIgb3B0aW9uIGJ5IHNldHRpbmcgaXQgdG8gZmFsc2UuXCIpO2lmKGUuY2hhcnQuc2Nyb2xsZXImJmNvbnNvbGUud2FybihcIlNjcm9sbGVyIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdjIuMC4wLiBQbGVhc2UgcmVtb3ZlIHRoZSBjb25maWd1cmF0aW9uIGZvciBjaGFydC5zY3JvbGxlclwiKSwoXCJiYXJcIj09PWUuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09ZS5jaGFydC50eXBlKSYmZS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCl7aWYoZS55YXhpcy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoXCJNdWx0aXBsZSBZIEF4aXMgZm9yIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIFN3aXRjaCB0byBjb2x1bW4gY2hhcnQgYnkgc2V0dGluZyBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbD1mYWxzZVwiKTtlLnlheGlzWzBdLnJldmVyc2VkJiYoZS55YXhpc1swXS5vcHBvc2l0ZT0hMCksZS54YXhpcy50b29sdGlwLmVuYWJsZWQ9ITEsZS55YXhpc1swXS50b29sdGlwLmVuYWJsZWQ9ITEsZS5jaGFydC56b29tLmVuYWJsZWQ9ITF9cmV0dXJuXCJiYXJcIiE9PWUuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09ZS5jaGFydC50eXBlfHxlLnRvb2x0aXAuc2hhcmVkJiYoXCJiYXJXaWR0aFwiPT09ZS54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiZlLnNlcmllcy5sZW5ndGg+MSYmKGNvbnNvbGUud2FybignY3Jvc3NoYWlycy53aWR0aCA9IFwiYmFyV2lkdGhcIiBpcyBvbmx5IHN1cHBvcnRlZCBpbiBzaW5nbGUgc2VyaWVzLCBub3QgaW4gYSBtdWx0aS1zZXJpZXMgYmFyQ2hhcnQuJyksZS54YXhpcy5jcm9zc2hhaXJzLndpZHRoPVwidGlja1dpZHRoXCIpLGUucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwmJihlLnN0YXRlcy5ob3Zlci50eXBlPVwibm9uZVwiLGUudG9vbHRpcC5zaGFyZWQ9ITEpLGUudG9vbHRpcC5mb2xsb3dDdXJzb3J8fChjb25zb2xlLndhcm4oXCJmb2xsb3dDdXJzb3Igb3B0aW9uIGluIHNoYXJlZCBjb2x1bW5zIGNhbm5vdCBiZSB0dXJuZWQgb2ZmLiBQbGVhc2Ugc2V0ICVjdG9vbHRpcC5mb2xsb3dDdXJzb3I6IHRydWVcIixcImNvbG9yOiBibHVlO1wiKSxlLnRvb2x0aXAuZm9sbG93Q3Vyc29yPSEwKSksXCJjYW5kbGVzdGlja1wiPT09ZS5jaGFydC50eXBlJiZlLnlheGlzWzBdLnJldmVyc2VkJiYoY29uc29sZS53YXJuKFwiUmV2ZXJzZWQgeS1heGlzIGluIGNhbmRsZXN0aWNrIGNoYXJ0IGlzIG5vdCBzdXBwb3J0ZWQuXCIpLGUueWF4aXNbMF0ucmV2ZXJzZWQ9ITEpLGUuY2hhcnQuZ3JvdXAmJjA9PT1lLnlheGlzWzBdLmxhYmVscy5taW5XaWR0aCYmY29uc29sZS53YXJuKFwiSXQgbG9va3MgbGlrZSB5b3UgaGF2ZSBtdWx0aXBsZSBjaGFydHMgaW4gc3luY2hyb25pemF0aW9uLiBZb3UgbXVzdCBwcm92aWRlIHlheGlzLmxhYmVscy5taW5XaWR0aCB3aGljaCBtdXN0IGJlIEVRVUFMIGZvciBhbGwgZ3JvdXBlZCBjaGFydHMgdG8gcHJldmVudCBpbmNvcnJlY3QgYmVoYXZpb3VyLlwiKSxBcnJheS5pc0FycmF5KGUuc3Ryb2tlLndpZHRoKSYmXCJsaW5lXCIhPT1lLmNoYXJ0LnR5cGUmJlwiYXJlYVwiIT09ZS5jaGFydC50eXBlJiYoY29uc29sZS53YXJuKFwic3Ryb2tlLndpZHRoIG9wdGlvbiBhY2NlcHRzIGFycmF5IG9ubHkgZm9yIGxpbmUgYW5kIGFyZWEgY2hhcnRzLiBSZXZlcnRlZCBiYWNrIHRvIE51bWJlclwiKSxlLnN0cm9rZS53aWR0aD1lLnN0cm9rZS53aWR0aFswXSksZX19XSksdH0oKSxHbG9iYWxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImdsb2JhbFZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm57Y2hhcnRJRDpudWxsLGN1aWQ6bnVsbCxldmVudHM6e2JlZm9yZU1vdW50OltdLG1vdW50ZWQ6W10sdXBkYXRlZDpbXSxjbGlja2VkOltdLHNlbGVjdGlvbjpbXSxkYXRhUG9pbnRTZWxlY3Rpb246W10sem9vbWVkOltdLHNjcm9sbGVkOltdfSxjb2xvcnM6W10sY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxmaWxsOntjb2xvcnM6W119LHN0cm9rZTp7Y29sb3JzOltdfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltdfX0scmFkYXJQb2x5Z29uczp7ZmlsbDp7Y29sb3JzOltdfX0sbWFya2Vyczp7Y29sb3JzOltdLHNpemU6dC5tYXJrZXJzLnNpemUsbGFyZ2VzdFNpemU6MH0sYW5pbWF0aW9uRW5kZWQ6ITEsaXNUb3VjaERldmljZTpcIm9udG91Y2hzdGFydFwiaW4gd2luZG93fHxuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyxpc0RpcnR5OiExLGlzRXhlY0NhbGxlZDohMSxpbml0aWFsQ29uZmlnOm51bGwsbGFzdFhBeGlzOltdLGxhc3RZQXhpczpbXSxzZXJpZXM6W10sc2VyaWVzUmFuZ2VTdGFydDpbXSxzZXJpZXNSYW5nZUVuZDpbXSxzZXJpZXNQZXJjZW50OltdLHNlcmllc1RvdGFsczpbXSxzdGFja2VkU2VyaWVzVG90YWxzOltdLHNlcmllc1g6W10sc2VyaWVzWjpbXSxsYWJlbHM6W10sdGltZWxpbmVMYWJlbHM6W10saW52ZXJ0ZWRUaW1lbGluZUxhYmVsczpbXSxzZXJpZXNOYW1lczpbXSxub0xhYmVsc1Byb3ZpZGVkOiExLGFsbFNlcmllc0NvbGxhcHNlZDohMSxjb2xsYXBzZWRTZXJpZXM6W10sY29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxhbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxyaXNpbmdTZXJpZXM6W10sZGF0YUZvcm1hdFhOdW1lcmljOiExLHNlbGVjdGVkRGF0YVBvaW50czpbXSxpZ25vcmVZQXhpc0luZGV4ZXM6W10seUF4aXNTYW1lU2NhbGVJbmRpY2VzOltdLHBhZEhvcml6b250YWw6MCxtYXhWYWxzSW5BcnJheUluZGV4OjAscmFkaWFsU2l6ZTowLHpvb21FbmFibGVkOlwiem9vbVwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnpvb20mJnQuY2hhcnQuem9vbS5lbmFibGVkLHBhbkVuYWJsZWQ6XCJwYW5cIj09PXQuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQmJnQuY2hhcnQudG9vbGJhci50b29scy5wYW4sc2VsZWN0aW9uRW5hYmxlZDpcInNlbGVjdGlvblwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnNlbGVjdGlvbix5YXhpczpudWxsLG1pblk6TnVtYmVyLk1JTl9WQUxVRSxtYXhZOi1OdW1iZXIuTUFYX1ZBTFVFLG1pbllBcnI6W10sbWF4WUFycjpbXSxtYXhYOi1OdW1iZXIuTUFYX1ZBTFVFLGluaXRpYWxtYXhYOi1OdW1iZXIuTUFYX1ZBTFVFLG1pblg6TnVtYmVyLk1JTl9WQUxVRSxpbml0aWFsbWluWDpOdW1iZXIuTUlOX1ZBTFVFLG1pblo6TnVtYmVyLk1JTl9WQUxVRSxtYXhaOi1OdW1iZXIuTUFYX1ZBTFVFLG1pblhEaWZmOk51bWJlci5NQVhfVkFMVUUsbW91c2Vkb3duOiExLGxhc3RDbGllbnRQb3NpdGlvbjp7fSx2aXNpYmxlWFJhbmdlOnZvaWQgMCx5UmFuZ2U6W10selJhbmdlOjAseFJhbmdlOjAseVZhbHVlRGVjaW1hbDowLHRvdGFsOjAsU1ZHTlM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHN2Z1dpZHRoOjAsc3ZnSGVpZ2h0OjAsbm9EYXRhOiExLGxvY2FsZTp7fSxkb206e30sbWVtb3J5OnttZXRob2RzVG9FeGVjOltdfSxzaG91bGRBbmltYXRlOiEwLHNraXBMYXN0VGltZWxpbmVsYWJlbDohMSxkZWxheWVkRWxlbWVudHM6W10sYXhpc0NoYXJ0czohMCxpc1hOdW1lcmljOiExLGlzRGF0YVhZWjohMSxyZXNpemVkOiExLHJlc2l6ZVRpbWVyOm51bGwsY29tYm9DaGFydHM6ITEsY29tYm9DaGFydHNIYXNCYXJzOiExLGRhdGFDaGFuZ2VkOiExLHByZXZpb3VzUGF0aHM6W10sc2VyaWVzWHZhbHVlczpbXSxzZXJpZXNZdmFsdWVzOltdLHNlcmllc0NhbmRsZU86W10sc2VyaWVzQ2FuZGxlSDpbXSxzZXJpZXNDYW5kbGVMOltdLHNlcmllc0NhbmRsZUM6W10sYWxsU2VyaWVzSGFzRXF1YWxYOiEwLGRhdGFQb2ludHM6MCxwb2ludHNBcnJheTpbXSxkYXRhTGFiZWxzUmVjdHM6W10sbGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXM6W10saGFzTnVsbFZhbHVlczohMSxlYXNpbmc6bnVsbCx6b29tZWQ6ITEsZ3JpZFdpZHRoOjAsZ3JpZEhlaWdodDowLHlBeGlzU2NhbGU6W10seEF4aXNTY2FsZTpudWxsLHhBeGlzVGlja3NQb3NpdGlvbnM6W10sdGltZXNjYWxlVGlja3M6W10scm90YXRlWExhYmVsczohMSxkZWZhdWx0TGFiZWxzOiExLHhMYWJlbEZvcm1hdHRlcjp2b2lkIDAseUxhYmVsRm9ybWF0dGVyczpbXSx4YXhpc1Rvb2x0aXBGb3JtYXR0ZXI6dm9pZCAwLHR0S2V5Rm9ybWF0dGVyOnZvaWQgMCx0dFZhbDp2b2lkIDAsdHRaRm9ybWF0dGVyOnZvaWQgMCxMSU5FX0hFSUdIVF9SQVRJTzoxLjYxOCx4QXhpc0xhYmVsc0hlaWdodDowLHlBeGlzTGFiZWxzV2lkdGg6MCxzY2FsZVg6MSxzY2FsZVk6MSx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHRyYW5zbGF0ZVlBeGlzWDpbXSx5TGFiZWxzQ29vcmRzOltdLHlUaXRsZUNvb3JkczpbXSx5QXhpc1dpZHRoczpbXSx0cmFuc2xhdGVYQXhpc1k6MCx0cmFuc2xhdGVYQXhpc1g6MCx0b29sdGlwOm51bGwsdG9vbHRpcE9wdHM6bnVsbH19fSx7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2xvYmFsVmFycyh0KTtyZXR1cm4gZS5pbml0aWFsQ29uZmlnPVV0aWxzLmV4dGVuZCh7fSx0KSxlLmluaXRpYWxTZXJpZXM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmluaXRpYWxDb25maWcuc2VyaWVzKSksZS5sYXN0WEF4aXM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmluaXRpYWxDb25maWcueGF4aXMpKSxlLmxhc3RZQXhpcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUuaW5pdGlhbENvbmZpZy55YXhpcykpLGV9fV0pLHR9KCksQmFzZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5vcHRzPWV9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IENvbmZpZyh0aGlzLm9wdHMpLmluaXQoKTtyZXR1cm57Y29uZmlnOnQsZ2xvYmFsczoobmV3IEdsb2JhbHMpLmluaXQodCl9fX1dKSx0fSgpLEZpbGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLm9wdHM9bnVsbCx0aGlzLnNlcmllc0luZGV4PTB9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiY2xpcHBlZEltZ0FyZWFcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmNvbmZpZyxzPXBhcnNlSW50KGUuZ2xvYmFscy5ncmlkV2lkdGgpLGE9cGFyc2VJbnQoZS5nbG9iYWxzLmdyaWRIZWlnaHQpLHI9cz5hP3M6YSxuPXQuaW1hZ2Usbz0wLGw9MDt2b2lkIDA9PT10LndpZHRoJiZ2b2lkIDA9PT10LmhlaWdodD92b2lkIDAhPT1pLmZpbGwuaW1hZ2Uud2lkdGgmJnZvaWQgMCE9PWkuZmlsbC5pbWFnZS5oZWlnaHQ/KG89aS5maWxsLmltYWdlLndpZHRoKzEsbD1pLmZpbGwuaW1hZ2UuaGVpZ2h0KToobz1yKzEsbD1yKToobz10LndpZHRoLGw9dC5oZWlnaHQpO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsXCJwYXR0ZXJuXCIpO0dyYXBoaWNzLnNldEF0dHJzKGgse2lkOnQucGF0dGVybklELHBhdHRlcm5Vbml0czp0LnBhdHRlcm5Vbml0cz90LnBhdHRlcm5Vbml0czpcInVzZXJTcGFjZU9uVXNlXCIsd2lkdGg6bytcInB4XCIsaGVpZ2h0OmwrXCJweFwifSk7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcImltYWdlXCIpO2guYXBwZW5kQ2hpbGQoYyksYy5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcImhyZWZcIixuKSxHcmFwaGljcy5zZXRBdHRycyhjLHt4OjAseTowLHByZXNlcnZlQXNwZWN0UmF0aW86XCJub25lXCIsd2lkdGg6bytcInB4XCIsaGVpZ2h0OmwrXCJweFwifSksYy5zdHlsZS5vcGFjaXR5PXQub3BhY2l0eSxlLmdsb2JhbHMuZG9tLmVsRGVmcy5ub2RlLmFwcGVuZENoaWxkKGgpfX0se2tleTpcImdldFNlcmllc0luZGV4XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVyblwiYmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlJiZlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWR8fFwiaGVhdG1hcFwiPT09ZS5jb25maWcuY2hhcnQudHlwZT90aGlzLnNlcmllc0luZGV4PXQuc2VyaWVzTnVtYmVyOnRoaXMuc2VyaWVzSW5kZXg9dC5zZXJpZXNOdW1iZXIlZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsdGhpcy5zZXJpZXNJbmRleH19LHtrZXk6XCJmaWxsUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLm9wdHM9dDt2YXIgaSxzLGEscj10aGlzLncuY29uZmlnO3RoaXMuc2VyaWVzSW5kZXg9dGhpcy5nZXRTZXJpZXNJbmRleCh0KTt2YXIgbj10aGlzLmdldEZpbGxDb2xvcnMoKVt0aGlzLnNlcmllc0luZGV4XTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiYobj1uKHtzZXJpZXNJbmRleDp0aGlzLnNlcmllc0luZGV4LHZhbHVlOnQudmFsdWUsdzplfSkpO3ZhciBvPXRoaXMuZ2V0RmlsbFR5cGUodGhpcy5zZXJpZXNJbmRleCksbD1BcnJheS5pc0FycmF5KHIuZmlsbC5vcGFjaXR5KT9yLmZpbGwub3BhY2l0eVt0aGlzLnNlcmllc0luZGV4XTpyLmZpbGwub3BhY2l0eSxoPW47cmV0dXJuIHQuY29sb3ImJihuPXQuY29sb3IpLC0xPT09bi5pbmRleE9mKFwicmdiXCIpP2g9VXRpbHMuaGV4VG9SZ2JhKG4sbCk6bi5pbmRleE9mKFwicmdiYVwiKT4tMSYmKGw9XCIwLlwiK1V0aWxzLmdldE9wYWNpdHlGcm9tUkdCQShuKSksXCJwYXR0ZXJuXCI9PT1vJiYocz10aGlzLmhhbmRsZVBhdHRlcm5GaWxsKHMsbixsLGgpKSxcImdyYWRpZW50XCI9PT1vJiYoYT10aGlzLmhhbmRsZUdyYWRpZW50RmlsbChhLG4sbCx0aGlzLnNlcmllc0luZGV4KSksci5maWxsLmltYWdlLnNyYy5sZW5ndGg+MCYmXCJpbWFnZVwiPT09bz90LnNlcmllc051bWJlcjxyLmZpbGwuaW1hZ2Uuc3JjLmxlbmd0aD8odGhpcy5jbGlwcGVkSW1nQXJlYSh7b3BhY2l0eTpsLGltYWdlOnIuZmlsbC5pbWFnZS5zcmNbdC5zZXJpZXNOdW1iZXJdLHBhdHRlcm5Vbml0czp0LnBhdHRlcm5Vbml0cyxwYXR0ZXJuSUQ6XCJwYXR0ZXJuXCIuY29uY2F0KGUuZ2xvYmFscy5jdWlkKS5jb25jYXQodC5zZXJpZXNOdW1iZXIrMSl9KSxpPVwidXJsKCNwYXR0ZXJuXCIuY29uY2F0KGUuZ2xvYmFscy5jdWlkKS5jb25jYXQodC5zZXJpZXNOdW1iZXIrMSxcIilcIikpOmk9aDppPVwiZ3JhZGllbnRcIj09PW8/YTpcInBhdHRlcm5cIj09PW8/czpoLHQuc29saWQmJihpPWgpLGl9fSx7a2V5OlwiZ2V0RmlsbFR5cGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkoZS5jb25maWcuZmlsbC50eXBlKT9lLmNvbmZpZy5maWxsLnR5cGVbdF06ZS5jb25maWcuZmlsbC50eXBlfX0se2tleTpcImdldEZpbGxDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLGk9dGhpcy5vcHRzLHM9W107cmV0dXJuIHQuZ2xvYmFscy5jb21ib0NoYXJ0cz9cImxpbmVcIj09PXQuY29uZmlnLnNlcmllc1t0aGlzLnNlcmllc0luZGV4XS50eXBlP3QuZ2xvYmFscy5zdHJva2UuY29sb3JzIGluc3RhbmNlb2YgQXJyYXk/cz10Lmdsb2JhbHMuc3Ryb2tlLmNvbG9yczpzLnB1c2godC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpOnQuZ2xvYmFscy5maWxsLmNvbG9ycyBpbnN0YW5jZW9mIEFycmF5P3M9dC5nbG9iYWxzLmZpbGwuY29sb3JzOnMucHVzaCh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpOlwibGluZVwiPT09ZS5jaGFydC50eXBlP3QuZ2xvYmFscy5zdHJva2UuY29sb3JzIGluc3RhbmNlb2YgQXJyYXk/cz10Lmdsb2JhbHMuc3Ryb2tlLmNvbG9yczpzLnB1c2godC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpOnQuZ2xvYmFscy5maWxsLmNvbG9ycyBpbnN0YW5jZW9mIEFycmF5P3M9dC5nbG9iYWxzLmZpbGwuY29sb3JzOnMucHVzaCh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpLHZvaWQgMCE9PWkuZmlsbENvbG9ycyYmKHM9W10saS5maWxsQ29sb3JzIGluc3RhbmNlb2YgQXJyYXk/cz1pLmZpbGxDb2xvcnMuc2xpY2UoKTpzLnB1c2goaS5maWxsQ29sb3JzKSksc319LHtrZXk6XCJoYW5kbGVQYXR0ZXJuRmlsbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhPXRoaXMudy5jb25maWcscj10aGlzLm9wdHMsbj1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLG89dm9pZCAwPT09YS5maWxsLnBhdHRlcm4uc3Ryb2tlV2lkdGg/QXJyYXkuaXNBcnJheShhLnN0cm9rZS53aWR0aCk/YS5zdHJva2Uud2lkdGhbdGhpcy5zZXJpZXNJbmRleF06YS5zdHJva2Uud2lkdGg6QXJyYXkuaXNBcnJheShhLmZpbGwucGF0dGVybi5zdHJva2VXaWR0aCk/YS5maWxsLnBhdHRlcm4uc3Ryb2tlV2lkdGhbdGhpcy5zZXJpZXNJbmRleF06YS5maWxsLnBhdHRlcm4uc3Ryb2tlV2lkdGgsbD1lO2EuZmlsbC5wYXR0ZXJuLnN0eWxlIGluc3RhbmNlb2YgQXJyYXk/dD12b2lkIDAhPT1hLmZpbGwucGF0dGVybi5zdHlsZVtyLnNlcmllc051bWJlcl0/bi5kcmF3UGF0dGVybihhLmZpbGwucGF0dGVybi5zdHlsZVtyLnNlcmllc051bWJlcl0sYS5maWxsLnBhdHRlcm4ud2lkdGgsYS5maWxsLnBhdHRlcm4uaGVpZ2h0LGwsbyxpKTpzOnQ9bi5kcmF3UGF0dGVybihhLmZpbGwucGF0dGVybi5zdHlsZSxhLmZpbGwucGF0dGVybi53aWR0aCxhLmZpbGwucGF0dGVybi5oZWlnaHQsbCxvLGkpO3JldHVybiB0fX0se2tleTpcImhhbmRsZUdyYWRpZW50RmlsbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhLHIsbj10aGlzLncuY29uZmlnLG89dGhpcy5vcHRzLGw9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxoPW5ldyBVdGlscyxjPW4uZmlsbC5ncmFkaWVudC50eXBlLGQ9dm9pZCAwPT09bi5maWxsLmdyYWRpZW50Lm9wYWNpdHlGcm9tP2k6QXJyYXkuaXNBcnJheShuLmZpbGwuZ3JhZGllbnQub3BhY2l0eUZyb20pP24uZmlsbC5ncmFkaWVudC5vcGFjaXR5RnJvbVtzXTpuLmZpbGwuZ3JhZGllbnQub3BhY2l0eUZyb20sdT12b2lkIDA9PT1uLmZpbGwuZ3JhZGllbnQub3BhY2l0eVRvP2k6QXJyYXkuaXNBcnJheShuLmZpbGwuZ3JhZGllbnQub3BhY2l0eVRvKT9uLmZpbGwuZ3JhZGllbnQub3BhY2l0eVRvW3NdOm4uZmlsbC5ncmFkaWVudC5vcGFjaXR5VG87aWYoYT1lLHI9dm9pZCAwPT09bi5maWxsLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnN8fDA9PT1uLmZpbGwuZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9ycy5sZW5ndGg/XCJkYXJrXCI9PT1uLmZpbGwuZ3JhZGllbnQuc2hhZGU/aC5zaGFkZUNvbG9yKC0xKnBhcnNlRmxvYXQobi5maWxsLmdyYWRpZW50LnNoYWRlSW50ZW5zaXR5KSxlKTpoLnNoYWRlQ29sb3IocGFyc2VGbG9hdChuLmZpbGwuZ3JhZGllbnQuc2hhZGVJbnRlbnNpdHkpLGUpOm4uZmlsbC5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzW28uc2VyaWVzTnVtYmVyXSxuLmZpbGwuZ3JhZGllbnQuaW52ZXJzZUNvbG9ycyl7dmFyIGc9YTthPXIscj1nfXJldHVybiBsLmRyYXdHcmFkaWVudChjLGEscixkLHUsby5zaXplLG4uZmlsbC5ncmFkaWVudC5zdG9wcyxuLmZpbGwuZ3JhZGllbnQuY29sb3JTdG9wcyxzKX19XSksdH0oKSxNYXJrZXJzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJzZXRHbG9iYWxNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLm1hcmtlcnMuc2l6ZT1BcnJheS5pc0FycmF5KHQuY29uZmlnLm1hcmtlcnMuc2l6ZSk/dC5jb25maWcubWFya2Vycy5zaXplOlt0LmNvbmZpZy5tYXJrZXJzLnNpemVdLHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPjApe2lmKHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKzEpZm9yKHZhciBlPTA7ZTw9dC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7ZSsrKXZvaWQgMD09PXQuZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0mJnQuZ2xvYmFscy5tYXJrZXJzLnNpemUucHVzaCh0Lmdsb2JhbHMubWFya2Vycy5zaXplWzBdKX1lbHNlIHQuZ2xvYmFscy5tYXJrZXJzLnNpemU9dC5jb25maWcuc2VyaWVzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25maWcubWFya2Vycy5zaXplfSl9fSx7a2V5OlwicGxvdENoYXJ0TWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcyxhPXRoaXMudyxyPWUsbj10LG89bnVsbCxsPW5ldyBHcmFwaGljcyh0aGlzLmN0eCk7aWYoYS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtlXT4wJiYobz1sLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pKS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChhLmdsb2JhbHMuY3VpZCxcIilcIikpLG4ueCBpbnN0YW5jZW9mIEFycmF5KWZvcih2YXIgaD0wO2g8bi54Lmxlbmd0aDtoKyspe3ZhciBjPWk7MT09PWkmJjA9PT1oJiYoYz0wKSwxPT09aSYmMT09PWgmJihjPTEpO3ZhciBkPVwiYXBleGNoYXJ0cy1tYXJrZXJcIjtpZihcImxpbmVcIiE9PWEuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYXJlYVwiIT09YS5jb25maWcuY2hhcnQudHlwZXx8YS5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxhLmNvbmZpZy50b29sdGlwLmludGVyc2VjdHx8KGQrPVwiIG5vLXBvaW50ZXItZXZlbnRzXCIpLEFycmF5LmlzQXJyYXkoYS5jb25maWcubWFya2Vycy5zaXplKT9hLmdsb2JhbHMubWFya2Vycy5zaXplW2VdPjA6YS5jb25maWcubWFya2Vycy5zaXplPjApe1V0aWxzLmlzTnVtYmVyKG4ueVtoXSk/ZCs9XCIgd1wiLmNvbmNhdCgoTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpKTpkPVwiYXBleGNoYXJ0cy1udWxscG9pbnRcIjt2YXIgdT10aGlzLmdldE1hcmtlckNvbmZpZyhkLGUsYyk7YS5jb25maWcuc2VyaWVzW3JdLmRhdGFbaV0mJihhLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtpXS5maWxsQ29sb3ImJih1LnBvaW50RmlsbENvbG9yPWEuY29uZmlnLnNlcmllc1tyXS5kYXRhW2ldLmZpbGxDb2xvciksYS5jb25maWcuc2VyaWVzW3JdLmRhdGFbaV0uc3Ryb2tlQ29sb3ImJih1LnBvaW50U3Ryb2tlQ29sb3I9YS5jb25maWcuc2VyaWVzW3JdLmRhdGFbaV0uc3Ryb2tlQ29sb3IpKSwocz1sLmRyYXdNYXJrZXIobi54W2hdLG4ueVtoXSx1KSkuYXR0cihcInJlbFwiLGMpLHMuYXR0cihcImpcIixjKSxzLmF0dHIoXCJpbmRleFwiLGUpLHMubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsdS5wU2l6ZSksbmV3IEZpbHRlcnModGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcihzLGUsYyksdGhpcy5hZGRFdmVudHMocyksbyYmby5hZGQocyl9ZWxzZSB2b2lkIDA9PT1hLmdsb2JhbHMucG9pbnRzQXJyYXlbZV0mJihhLmdsb2JhbHMucG9pbnRzQXJyYXlbZV09W10pLGEuZ2xvYmFscy5wb2ludHNBcnJheVtlXS5wdXNoKFtuLnhbaF0sbi55W2hdXSl9cmV0dXJuIG99fSx7a2V5OlwiZ2V0TWFya2VyQ29uZmlnXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxzPXRoaXMudyxhPXRoaXMuZ2V0TWFya2VyU3R5bGUoZSkscj1zLmdsb2JhbHMubWFya2Vycy5zaXplW2VdO3JldHVybiBudWxsIT09aSYmcy5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGgmJnMuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubWFwKGZ1bmN0aW9uKHQpe3Quc2VyaWVzSW5kZXg9PT1lJiZ0LmRhdGFQb2ludEluZGV4PT09aSYmKGEucG9pbnRTdHJva2VDb2xvcj10LnN0cm9rZUNvbG9yLGEucG9pbnRGaWxsQ29sb3I9dC5maWxsQ29sb3Iscj10LnNpemUpfSkse3BTaXplOnIscFJhZGl1czpzLmNvbmZpZy5tYXJrZXJzLnJhZGl1cyxwV2lkdGg6cy5jb25maWcubWFya2Vycy5zdHJva2VXaWR0aCxwb2ludFN0cm9rZUNvbG9yOmEucG9pbnRTdHJva2VDb2xvcixwb2ludEZpbGxDb2xvcjphLnBvaW50RmlsbENvbG9yLHNoYXBlOnMuY29uZmlnLm1hcmtlcnMuc2hhcGUgaW5zdGFuY2VvZiBBcnJheT9zLmNvbmZpZy5tYXJrZXJzLnNoYXBlW2VdOnMuY29uZmlnLm1hcmtlcnMuc2hhcGUsY2xhc3M6dCxwb2ludFN0cm9rZU9wYWNpdHk6cy5jb25maWcubWFya2Vycy5zdHJva2VPcGFjaXR5LHBvaW50RmlsbE9wYWNpdHk6cy5jb25maWcubWFya2Vycy5maWxsT3BhY2l0eSxzZXJpZXNJbmRleDplfX19LHtrZXk6XCJhZGRFdmVudHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLmN0eCx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5jb25maWcubWFya2Vycy5vbkNsaWNrKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImRibGNsaWNrXCIsZS5jb25maWcubWFya2Vycy5vbkRibENsaWNrKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLmN0eCx0KSx7cGFzc2l2ZTohMH0pfX0se2tleTpcImdldE1hcmtlclN0eWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzLHM9ZS5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnx8ZS5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnM7cmV0dXJue3BvaW50U3Ryb2tlQ29sb3I6cyBpbnN0YW5jZW9mIEFycmF5P3NbdF06cyxwb2ludEZpbGxDb2xvcjppIGluc3RhbmNlb2YgQXJyYXk/aVt0XTppfX19XSksdH0oKSxTY2F0dGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsdGhpcy5yYWRpdXNTaXplcz1bXX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMudyxhPW5ldyBHcmFwaGljcyh0aGlzLmN0eCkscj1pLnJlYWxJbmRleCxuPWkucG9pbnRzUG9zLG89aS56UmF0aW8sbD1pLmVsUGFyZW50LGg9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIGFwZXhjaGFydHMtc2VyaWVzLVwiLmNvbmNhdChzLmNvbmZpZy5jaGFydC50eXBlKX0pO2lmKGguYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsXCIpXCIpKSxuLnggaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIGM9MDtjPG4ueC5sZW5ndGg7YysrKXt2YXIgZD1lKzEsdT0hMDswPT09ZSYmMD09PWMmJihkPTApLDA9PT1lJiYxPT09YyYmKGQ9MSk7dmFyIGc9MCxmPXMuZ2xvYmFscy5tYXJrZXJzLnNpemVbcl07byE9PTEvMCYmKGY9cy5nbG9iYWxzLnNlcmllc1pbcl1bZF0vbyx2b2lkIDA9PT10aGlzLnJhZGl1c1NpemVzW3JdJiZ0aGlzLnJhZGl1c1NpemVzLnB1c2goW10pLHRoaXMucmFkaXVzU2l6ZXNbcl0ucHVzaChmKSkscy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkfHwoZz1mKTt2YXIgcD1uLnhbY10seD1uLnlbY107aWYoZz1nfHwwLCgwPT09cCYmMD09PXh8fG51bGw9PT14fHx2b2lkIDA9PT1zLmdsb2JhbHMuc2VyaWVzW3JdW2RdKSYmKHU9ITEpLHUpe3ZhciBtPXRoaXMuZHJhd1BvaW50KHAseCxnLGYscixkLGUpO2guYWRkKG0pfWwuYWRkKGgpfX19LHtrZXk6XCJkcmF3UG9pbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEscixuKXt2YXIgbz10aGlzLncsbD1hLGg9bmV3IEFuaW1hdGlvbnModGhpcy5jdHgpLGM9bmV3IEZpbHRlcnModGhpcy5jdHgpLGQ9bmV3IEZpbGwodGhpcy5jdHgpLHU9bmV3IE1hcmtlcnModGhpcy5jdHgpLGc9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxmPXUuZ2V0TWFya2VyQ29uZmlnKFwiYXBleGNoYXJ0cy1tYXJrZXJcIixsKSxwPWQuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphLHBhdHRlcm5Vbml0czpcIm9iamVjdEJvdW5kaW5nQm94XCIsdmFsdWU6by5nbG9iYWxzLnNlcmllc1thXVtuXX0pLHg9Zy5kcmF3Q2lyY2xlKGkpO2lmKG8uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdJiZvLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtyXS5maWxsQ29sb3ImJihwPW8uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdLmZpbGxDb2xvcikseC5hdHRyKHtjeDp0LGN5OmUsZmlsbDpwLHN0cm9rZTpmLnBvaW50U3Ryb2tlQ29sb3Isc3Ryb2tlV2lkdGg6Zi5wV2lkdGh9KSxvLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBtPW8uY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7Yy5kcm9wU2hhZG93KHgsbSxhKX1pZih0aGlzLmluaXRpYWxBbmltJiYhby5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgYj0xO28uZ2xvYmFscy5yZXNpemVkfHwoYj1vLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSxoLmFuaW1hdGVDaXJjbGVSYWRpdXMoeCwwLHMsYixvLmdsb2JhbHMuZWFzaW5nKX1pZihvLmdsb2JhbHMuZGF0YUNoYW5nZWQpaWYodGhpcy5keW5hbWljQW5pbSl7dmFyIHYseSx3LGssQT1vLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQ7bnVsbCE9KGs9by5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV0mJm8uZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdW25dKSYmKHY9ay54LHk9ay55LHc9dm9pZCAwIT09ay5yP2sucjpzKTtmb3IodmFyIFM9MDtTPG8uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoO1MrKylvLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW1NdLmluZGV4PT09YSYmKEE9MSxzPTApOzA9PT10JiYwPT09ZSYmKHM9MCksaC5hbmltYXRlQ2lyY2xlKHgse2N4OnYsY3k6eSxyOnd9LHtjeDp0LGN5OmUscjpzfSxBLG8uZ2xvYmFscy5lYXNpbmcpfWVsc2UgeC5hdHRyKHtyOnN9KTtyZXR1cm4geC5hdHRyKHtyZWw6cixqOnIsaW5kZXg6YSxcImRlZmF1bHQtbWFya2VyLXNpemVcIjpzfSksYy5zZXRTZWxlY3Rpb25GaWx0ZXIoeCxhLHIpLHUuYWRkRXZlbnRzKHgpLHgubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1tYXJrZXJcIikseH19LHtrZXk6XCJjZW50ZXJUZXh0SW5CdWJibGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJue3k6dCs9cGFyc2VJbnQoZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSkvNH19fV0pLHR9KCksRGF0YUxhYmVscz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImRhdGFMYWJlbHNDb3JyZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhLHIsbil7dmFyIG89dGhpcy53LGw9ITEsaD1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLmdldFRleHRSZWN0cyhpLG4pLGM9aC53aWR0aCxkPWguaGVpZ2h0O3ZvaWQgMD09PW8uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbc10mJihvLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW3NdPVtdKSxvLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW3NdLnB1c2goe3g6dCx5OmUsd2lkdGg6YyxoZWlnaHQ6ZH0pO3ZhciB1PW8uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbc10ubGVuZ3RoLTIsZz12b2lkIDAhPT1vLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbc10/by5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3NdW28uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tzXS5sZW5ndGgtMV06MDtpZih2b2lkIDAhPT1vLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW3NdW3VdKXt2YXIgZj1vLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW3NdW2ddOyh0PmYueCtmLndpZHRoKzJ8fGU+Zi55K2YuaGVpZ2h0KzJ8fHQrYzxmLngpJiYobD0hMCl9cmV0dXJuKDA9PT1hfHxyKSYmKGw9ITApLHt4OnQseTplLHRleHRSZWN0czpoLGRyYXduZXh0TGFiZWw6bH19fSx7a2V5OlwiZHJhd0RhdGFMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06XCJ0b3BcIixhPXRoaXMudyxyPW5ldyBHcmFwaGljcyh0aGlzLmN0eCksbj1hLmNvbmZpZy5kYXRhTGFiZWxzLG89MCxsPTAsaD1pLGM9bnVsbDtpZighbi5lbmFibGVkfHx0LnggaW5zdGFuY2VvZiBBcnJheSE9ITApcmV0dXJuIGM7Yz1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO2Zvcih2YXIgZD0wO2Q8dC54Lmxlbmd0aDtkKyspaWYobz10LnhbZF0rbi5vZmZzZXRYLGw9dC55W2RdK24ub2Zmc2V0WS1hLmdsb2JhbHMubWFya2Vycy5zaXplW2VdLTUsXCJib3R0b21cIj09PXMmJihsPWwrMiphLmdsb2JhbHMubWFya2Vycy5zaXplW2VdKzEuNCpwYXJzZUludChuLnN0eWxlLmZvbnRTaXplKSksIWlzTmFOKG8pKXsxPT09aSYmMD09PWQmJihoPTApLDE9PT1pJiYxPT09ZCYmKGg9MSk7dmFyIHU9YS5nbG9iYWxzLnNlcmllc1tlXVtoXSxnPVwiXCI7aWYoXCJidWJibGVcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUpZz1hLmdsb2JhbHMuc2VyaWVzWltlXVtoXSxsPXQueVtkXSthLmNvbmZpZy5kYXRhTGFiZWxzLm9mZnNldFksbD1uZXcgU2NhdHRlcih0aGlzLmN0eCkuY2VudGVyVGV4dEluQnViYmxlKGwsZSxoKS55O2Vsc2Ugdm9pZCAwIT09dSYmKGc9YS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXIodSx7Y3R4OnRoaXMuY3R4LHNlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aCx3OmF9KSk7dGhpcy5wbG90RGF0YUxhYmVsc1RleHQoe3g6byx5OmwsdGV4dDpnLGk6ZSxqOmgscGFyZW50OmMsb2Zmc2V0Q29ycmVjdGlvbjohMCxkYXRhTGFiZWxzQ29uZmlnOmEuY29uZmlnLmRhdGFMYWJlbHN9KX1yZXR1cm4gY319LHtrZXk6XCJwbG90RGF0YUxhYmVsc1RleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLHM9dC54LGE9dC55LHI9dC5pLG49dC5qLG89dC50ZXh0LGw9dC50ZXh0QW5jaG9yLGg9dC5wYXJlbnQsYz10LmRhdGFMYWJlbHNDb25maWcsZD10LmFsd2F5c0RyYXdEYXRhTGFiZWwsdT10Lm9mZnNldENvcnJlY3Rpb247aWYoIShBcnJheS5pc0FycmF5KGUuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzKSYmZS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihyKTwwKSl7dmFyIGc9e3g6cyx5OmEsZHJhd25leHRMYWJlbDohMH07aWYodSYmKGc9dGhpcy5kYXRhTGFiZWxzQ29ycmVjdGlvbihzLGEsbyxyLG4sZCxwYXJzZUludChjLnN0eWxlLmZvbnRTaXplKSkpLGUuZ2xvYmFscy56b29tZWR8fChzPWcueCxhPWcueSksZy50ZXh0UmVjdHMmJihzK2cudGV4dFJlY3RzLndpZHRoPDEwfHxzPmUuZ2xvYmFscy5ncmlkV2lkdGgrMTApJiYobz1cIlwiKSxnLmRyYXduZXh0TGFiZWwpe3ZhciBmPWkuZHJhd1RleHQoe3dpZHRoOjEwMCxoZWlnaHQ6cGFyc2VJbnQoYy5zdHlsZS5mb250U2l6ZSkseDpzLHk6YSxmb3JlQ29sb3I6ZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW3JdLHRleHRBbmNob3I6bHx8Yy50ZXh0QW5jaG9yLHRleHQ6byxmb250U2l6ZTpjLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6Yy5zdHlsZS5mb250RmFtaWx5fSk7aWYoZi5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsXCIsY3g6cyxjeTphfSksYy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBwPWMuZHJvcFNoYWRvdztuZXcgRmlsdGVycyh0aGlzLmN0eCkuZHJvcFNoYWRvdyhmLHApfWguYWRkKGYpLHZvaWQgMD09PWUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXSYmKGUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXT1bXSksZS5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3JdLnB1c2gobil9fX19XSksdH0oKSxCYXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLmJhck9wdGlvbnM9cy5jb25maWcucGxvdE9wdGlvbnMuYmFyLHRoaXMuaXNIb3Jpem9udGFsPXRoaXMuYmFyT3B0aW9ucy5ob3Jpem9udGFsLHRoaXMuc3Ryb2tlV2lkdGg9cy5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMuaXNOdWxsVmFsdWU9ITEsdGhpcy54eVJhdGlvcz1pLG51bGwhPT10aGlzLnh5UmF0aW9zJiYodGhpcy54UmF0aW89aS54UmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5pbnZlcnRlZFhSYXRpbz1pLmludmVydGVkWFJhdGlvLHRoaXMuaW52ZXJ0ZWRZUmF0aW89aS5pbnZlcnRlZFlSYXRpbyx0aGlzLmJhc2VMaW5lWT1pLmJhc2VMaW5lWSx0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZPWkuYmFzZUxpbmVJbnZlcnRlZFkpLHRoaXMueWF4aXNJbmRleD0wLHRoaXMuc2VyaWVzTGVuPTB9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxhPW5ldyBDb3JlVXRpbHModGhpcy5jdHgsaSk7dD1hLmdldExvZ1Nlcmllcyh0KSx0aGlzLnNlcmllcz10LHRoaXMueVJhdGlvPWEuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5pbml0VmFyaWFibGVzKHQpO3ZhciByPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pO2kuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCYmdGhpcy50b3RhbEl0ZW1zPmkuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm1heEl0ZW1zJiZjb25zb2xlLndhcm4oXCJXQVJOSU5HOiBEYXRhTGFiZWxzIGFyZSBlbmFibGVkIGJ1dCB0aGVyZSBhcmUgdG9vIG1hbnkgdG8gZGlzcGxheS4gVGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWUgd2hlbiByZW5kZXJpbmcuXCIpO2Zvcih2YXIgbj0wLG89MDtuPHQubGVuZ3RoO24rKyxvKyspe3ZhciBsLGgsYyxkLHU9dm9pZCAwLGc9dm9pZCAwLGY9dm9pZCAwLHA9dm9pZCAwLHg9W10sbT1bXSxiPWkuZ2xvYmFscy5jb21ib0NoYXJ0cz9lW25dOm4sdj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIscmVsOm4rMSxzZXJpZXNOYW1lOlV0aWxzLmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbYl0pLFwiZGF0YTpyZWFsSW5kZXhcIjpifSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModixiKSx0W25dLmxlbmd0aD4wJiYodGhpcy52aXNpYmxlST10aGlzLnZpc2libGVJKzEpO3ZhciB5PTAsdz0wLGs9MDt0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD1iKSx0aGlzLmlzUmV2ZXJzZWQ9aS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XSYmaS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XS5yZXZlcnNlZDt2YXIgQT10aGlzLmluaXRpYWxQb3NpdGlvbnMoKTtwPUEueSx3PUEuYmFySGVpZ2h0LGg9QS55RGl2aXNpb24sZD1BLnplcm9XLGY9QS54LGs9QS5iYXJXaWR0aCxsPUEueERpdmlzaW9uLGM9QS56ZXJvSCx0aGlzLmhvcml6b250YWx8fG0ucHVzaChmK2svMik7Zm9yKHZhciBTPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCJ9KSxDPTAsTD1pLmdsb2JhbHMuZGF0YVBvaW50cztDPGkuZ2xvYmFscy5kYXRhUG9pbnRzO0MrKyxMLS0pe3ZvaWQgMD09PXRoaXMuc2VyaWVzW25dW0NdfHxudWxsPT09dFtuXVtDXT90aGlzLmlzTnVsbFZhbHVlPSEwOnRoaXMuaXNOdWxsVmFsdWU9ITEsaS5jb25maWcuc3Ryb2tlLnNob3cmJih5PXRoaXMuaXNOdWxsVmFsdWU/MDpBcnJheS5pc0FycmF5KHRoaXMuc3Ryb2tlV2lkdGgpP3RoaXMuc3Ryb2tlV2lkdGhbYl06dGhpcy5zdHJva2VXaWR0aCk7dmFyIFA9bnVsbDt0aGlzLmlzSG9yaXpvbnRhbD8oUD10aGlzLmRyYXdCYXJQYXRocyh7aW5kZXhlczp7aTpuLGo6QyxyZWFsSW5kZXg6YixiYzpvfSxiYXJIZWlnaHQ6dyxzdHJva2VXaWR0aDp5LHBhdGhUbzp1LHBhdGhGcm9tOmcsemVyb1c6ZCx4OmYseTpwLHlEaXZpc2lvbjpoLGVsU2VyaWVzOnZ9KSxrPXRoaXMuc2VyaWVzW25dW0NdL3RoaXMuaW52ZXJ0ZWRZUmF0aW8pOihQPXRoaXMuZHJhd0NvbHVtblBhdGhzKHtpbmRleGVzOntpOm4sajpDLHJlYWxJbmRleDpiLGJjOm99LHg6Zix5OnAseERpdmlzaW9uOmwscGF0aFRvOnUscGF0aEZyb206ZyxiYXJXaWR0aDprLHplcm9IOmMsc3Ryb2tlV2lkdGg6eSxlbFNlcmllczp2fSksdz10aGlzLnNlcmllc1tuXVtDXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdKSx1PVAucGF0aFRvLGc9UC5wYXRoRnJvbSxwPVAueSxmPVAueCxDPjAmJm0ucHVzaChmK2svMikseC5wdXNoKHApO3ZhciB6PXRoaXMuZ2V0UGF0aEZpbGxDb2xvcih0LG4sQyxiKTt2PXRoaXMucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6YixwYXRoRmlsbDp6LGo6QyxpOm4scGF0aEZyb206ZyxwYXRoVG86dSxzdHJva2VXaWR0aDp5LGVsU2VyaWVzOnYseDpmLHk6cCxzZXJpZXM6dCxiYXJIZWlnaHQ6dyxiYXJXaWR0aDprLGVsRGF0YUxhYmVsc1dyYXA6Uyx2aXNpYmxlU2VyaWVzOnRoaXMudmlzaWJsZUksdHlwZTpcImJhclwifSl9aS5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYl09bSxpLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1tiXT14LHIuYWRkKHYpfXJldHVybiByfX0se2tleTpcImdldFBhdGhGaWxsQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt2YXIgYT10aGlzLncscj1uZXcgRmlsbCh0aGlzLmN0eCksbj1udWxsLG89dGhpcy5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP2k6ZTt0aGlzLmJhck9wdGlvbnMuY29sb3JzLnJhbmdlcy5sZW5ndGg+MCYmdGhpcy5iYXJPcHRpb25zLmNvbG9ycy5yYW5nZXMubWFwKGZ1bmN0aW9uKHMpe3RbZV1baV0+PXMuZnJvbSYmdFtlXVtpXTw9cy50byYmKG49cy5jb2xvcil9KTtyZXR1cm4gYS5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0mJmEuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLmZpbGxDb2xvciYmKG49YS5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0uZmlsbENvbG9yKSxyLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6dGhpcy5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP286cyxjb2xvcjpuLHZhbHVlOnRbZV1baV19KX19LHtrZXk6XCJyZW5kZXJTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnJlYWxJbmRleCxpPXQucGF0aEZpbGwscz10LmxpbmVGaWxsLGE9dC5qLHI9dC5pLG49dC5wYXRoRnJvbSxvPXQucGF0aFRvLGw9dC5zdHJva2VXaWR0aCxoPXQuZWxTZXJpZXMsYz10LngsZD10LnksdT10LnNlcmllcyxnPXQuYmFySGVpZ2h0LGY9dC5iYXJXaWR0aCxwPXQuZWxEYXRhTGFiZWxzV3JhcCx4PXQudmlzaWJsZVNlcmllcyxtPXQudHlwZSxiPXRoaXMudyx2PW5ldyBHcmFwaGljcyh0aGlzLmN0eCk7c3x8KHM9dGhpcy5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP2IuZ2xvYmFscy5zdHJva2UuY29sb3JzW2FdOmIuZ2xvYmFscy5zdHJva2UuY29sb3JzW2VdKSxiLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVthXSYmYi5jb25maWcuc2VyaWVzW3JdLmRhdGFbYV0uc3Ryb2tlQ29sb3ImJihzPWIuY29uZmlnLnNlcmllc1tyXS5kYXRhW2FdLnN0cm9rZUNvbG9yKSx0aGlzLmlzTnVsbFZhbHVlJiYoaT1cIm5vbmVcIik7dmFyIHk9YS9iLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZGVsYXkqKGIuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvYi5nbG9iYWxzLmRhdGFQb2ludHMpLzIuNCx3PXYucmVuZGVyUGF0aHMoe2k6cixqOmEscmVhbEluZGV4OmUscGF0aEZyb206bixwYXRoVG86byxzdHJva2U6cyxzdHJva2VXaWR0aDpsLHN0cm9rZUxpbmVDYXA6Yi5jb25maWcuc3Ryb2tlLmxpbmVDYXAsZmlsbDppLGFuaW1hdGlvbkRlbGF5OnksaW5pdGlhbFNwZWVkOmIuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOmIuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChtLFwiLWFyZWFcIil9KTt3LmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KGIuZ2xvYmFscy5jdWlkLFwiKVwiKSksbmV3IEZpbHRlcnModGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcih3LGUsYSksaC5hZGQodyk7dmFyIGs9dGhpcy5jYWxjdWxhdGVEYXRhTGFiZWxzUG9zKHt4OmMseTpkLGk6cixqOmEsc2VyaWVzOnUscmVhbEluZGV4OmUsYmFySGVpZ2h0OmcsYmFyV2lkdGg6ZixyZW5kZXJlZFBhdGg6dyx2aXNpYmxlU2VyaWVzOnh9KTtyZXR1cm4gbnVsbCE9PWsmJnAuYWRkKGspLGguYWRkKHApLGh9fSx7a2V5OlwiaW5pdFZhcmlhYmxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLnNlcmllcz10LHRoaXMudG90YWxJdGVtcz0wLHRoaXMuc2VyaWVzTGVuPTAsdGhpcy52aXNpYmxlST0tMSx0aGlzLnZpc2libGVJdGVtcz0xO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKWlmKHRbaV0ubGVuZ3RoPjAmJih0aGlzLnNlcmllc0xlbj10aGlzLnNlcmllc0xlbisxLHRoaXMudG90YWxJdGVtcys9dFtpXS5sZW5ndGgpLGUuZ2xvYmFscy5pc1hOdW1lcmljKWZvcih2YXIgcz0wO3M8dFtpXS5sZW5ndGg7cysrKWUuZ2xvYmFscy5zZXJpZXNYW2ldW3NdPmUuZ2xvYmFscy5taW5YJiZlLmdsb2JhbHMuc2VyaWVzWFtpXVtzXTxlLmdsb2JhbHMubWF4WCYmdGhpcy52aXNpYmxlSXRlbXMrKztlbHNlIHRoaXMudmlzaWJsZUl0ZW1zPWUuZ2xvYmFscy5kYXRhUG9pbnRzOzA9PT10aGlzLnNlcmllc0xlbiYmKHRoaXMuc2VyaWVzTGVuPTEpfX0se2tleTpcImluaXRpYWxQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxzLGEscixuLG8sbD10aGlzLnc7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsPyhhPShpPWwuZ2xvYmFscy5ncmlkSGVpZ2h0L2wuZ2xvYmFscy5kYXRhUG9pbnRzKS90aGlzLnNlcmllc0xlbixsLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGE9KGk9bC5nbG9iYWxzLmdyaWRIZWlnaHQvdGhpcy50b3RhbEl0ZW1zKS90aGlzLnNlcmllc0xlbiksYT1hKnBhcnNlSW50KHRoaXMuYmFyT3B0aW9ucy5iYXJIZWlnaHQpLzEwMCxvPXRoaXMuYmFzZUxpbmVJbnZlcnRlZFkrbC5nbG9iYWxzLnBhZEhvcml6b250YWwrKHRoaXMuaXNSZXZlcnNlZD9sLmdsb2JhbHMuZ3JpZFdpZHRoOjApLSh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZOjApLGU9KGktYSp0aGlzLnNlcmllc0xlbikvMik6KHI9KHM9bC5nbG9iYWxzLmdyaWRXaWR0aC90aGlzLnZpc2libGVJdGVtcykvdGhpcy5zZXJpZXNMZW4qcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmNvbHVtbldpZHRoKS8xMDAsbC5nbG9iYWxzLmlzWE51bWVyaWMmJihsLmdsb2JhbHMubWluWERpZmYmJihzPWwuZ2xvYmFscy5taW5YRGlmZi90aGlzLnhSYXRpbykscj1zL3RoaXMuc2VyaWVzTGVuKnBhcnNlSW50KHRoaXMuYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCkvMTAwKSxuPWwuZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0tKHRoaXMuaXNSZXZlcnNlZD9sLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XTowKSx0PWwuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyhzLXIqdGhpcy5zZXJpZXNMZW4pLzIpLHt4OnQseTplLHlEaXZpc2lvbjppLHhEaXZpc2lvbjpzLGJhckhlaWdodDphLGJhcldpZHRoOnIsemVyb0g6bix6ZXJvVzpvfX19LHtrZXk6XCJkcmF3QmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10LmJhckhlaWdodCxzPXQuc3Ryb2tlV2lkdGgsYT10LnBhdGhUbyxyPXQucGF0aEZyb20sbj10Lnplcm9XLG89dC54LGw9dC55LGg9dC55RGl2aXNpb24sYz10LmVsU2VyaWVzLGQ9dGhpcy53LHU9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxnPWUuaSxmPWUuaixwPWUucmVhbEluZGV4LHg9ZS5iYztkLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGw9KGQuZ2xvYmFscy5zZXJpZXNYW2ddW2ZdLWQuZ2xvYmFscy5taW5YKS90aGlzLmludmVydGVkWFJhdGlvLWkpO3ZhciBtPWwraSp0aGlzLnZpc2libGVJO2E9dS5tb3ZlKG4sbSkscj11Lm1vdmUobixtKSxkLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKHI9dGhpcy5nZXRQYXRoRnJvbShwLGYpKTt2YXIgYj17YmFySGVpZ2h0Omksc3Ryb2tlV2lkdGg6cyxiYXJZUG9zaXRpb246bSx4Om89dm9pZCAwPT09dGhpcy5zZXJpZXNbZ11bZl18fG51bGw9PT10aGlzLnNlcmllc1tnXVtmXT9uOm4rdGhpcy5zZXJpZXNbZ11bZl0vdGhpcy5pbnZlcnRlZFlSYXRpby0yKih0aGlzLmlzUmV2ZXJzZWQ/dGhpcy5zZXJpZXNbZ11bZl0vdGhpcy5pbnZlcnRlZFlSYXRpbzowKSx6ZXJvVzpufSx2PXRoaXMuYmFyRW5kaW5nU2hhcGUoZCxiLHRoaXMuc2VyaWVzLGcsZik7aWYoYT1hK3UubGluZSh2Lm5ld1gsbSkrdi5wYXRoK3UubGluZShuLG0raS1zKSt1LmxpbmUobixtKSxyPXIrdS5saW5lKG4sbSkrdi5lbmRpbmdfcF9mcm9tK3UubGluZShuLG0raS1zKSt1LmxpbmUobixtK2ktcykrdS5saW5lKG4sbSksZC5nbG9iYWxzLmlzWE51bWVyaWN8fChsKz1oKSx0aGlzLmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoPjAmJjA9PT1nKXt4Pj10aGlzLmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoJiYoeD0wKTt2YXIgeT10aGlzLmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnNbeF0sdz11LmRyYXdSZWN0KDAsbS1pKnRoaXMudmlzaWJsZUksZC5nbG9iYWxzLmdyaWRXaWR0aCxpKnRoaXMuc2VyaWVzTGVuLDAseSx0aGlzLmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJPcGFjaXR5KTtjLmFkZCh3KSx3Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYmFja2dyb3VuZEJhclwiKX1yZXR1cm57cGF0aFRvOmEscGF0aEZyb206cix4Om8seTpsLGJhcllQb3NpdGlvbjptfX19LHtrZXk6XCJkcmF3Q29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10Lngscz10LnksYT10LnhEaXZpc2lvbixyPXQucGF0aFRvLG49dC5wYXRoRnJvbSxvPXQuYmFyV2lkdGgsbD10Lnplcm9ILGg9dC5zdHJva2VXaWR0aCxjPXQuZWxTZXJpZXMsZD10aGlzLncsdT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLGc9ZS5pLGY9ZS5qLHA9ZS5yZWFsSW5kZXgseD1lLmJjO2QuZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0oZC5nbG9iYWxzLnNlcmllc1hbZ11bZl0tZC5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLW8vMik7dmFyIG09aStvKnRoaXMudmlzaWJsZUk7cj11Lm1vdmUobSxsKSxuPXUubW92ZShtLGwpLGQuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYobj10aGlzLmdldFBhdGhGcm9tKHAsZikpO3ZhciBiPXtiYXJXaWR0aDpvLHN0cm9rZVdpZHRoOmgsYmFyWFBvc2l0aW9uOm0seTpzPXZvaWQgMD09PXRoaXMuc2VyaWVzW2ddW2ZdfHxudWxsPT09dGhpcy5zZXJpZXNbZ11bZl0/bDpsLXRoaXMuc2VyaWVzW2ddW2ZdL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP3RoaXMuc2VyaWVzW2ddW2ZdL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF06MCksemVyb0g6bH0sdj10aGlzLmJhckVuZGluZ1NoYXBlKGQsYix0aGlzLnNlcmllcyxnLGYpO2lmKHI9cit1LmxpbmUobSx2Lm5ld1kpK3YucGF0aCt1LmxpbmUobStvLWgsbCkrdS5saW5lKG0taC8yLGwpLG49bit1LmxpbmUobSxsKSt2LmVuZGluZ19wX2Zyb20rdS5saW5lKG0rby1oLGwpK3UubGluZShtK28taCxsKSt1LmxpbmUobS1oLzIsbCksZC5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1hKSx0aGlzLmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoPjAmJjA9PT1nKXt4Pj10aGlzLmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoJiYoeD0wKTt2YXIgeT10aGlzLmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnNbeF0sdz11LmRyYXdSZWN0KG0tbyp0aGlzLnZpc2libGVJLDAsbyp0aGlzLnNlcmllc0xlbixkLmdsb2JhbHMuZ3JpZEhlaWdodCwwLHksdGhpcy5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyT3BhY2l0eSk7Yy5hZGQodyksdy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWJhY2tncm91bmRCYXJcIil9cmV0dXJue3BhdGhUbzpyLHBhdGhGcm9tOm4seDppLHk6cyxiYXJYUG9zaXRpb246bX19fSx7a2V5OlwiZ2V0UGF0aEZyb21cIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSxzPXRoaXMudyxhPTA7YTxzLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7YSsrKXt2YXIgcj1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXTtyLnBhdGhzLmxlbmd0aD4wJiZwYXJzZUludChyLnJlYWxJbmRleCk9PT1wYXJzZUludCh0KSYmdm9pZCAwIT09cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV0ucGF0aHNbZV0mJihpPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzW2VdLmQpfXJldHVybiBpfX0se2tleTpcImNhbGN1bGF0ZURhdGFMYWJlbHNQb3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10Lnkscz10LmksYT10Lmoscj10LnJlYWxJbmRleCxuPXQuc2VyaWVzLG89dC5iYXJIZWlnaHQsbD10LmJhcldpZHRoLGg9dC52aXNpYmxlU2VyaWVzLGM9dC5yZW5kZXJlZFBhdGgsZD10aGlzLncsdT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLGc9QXJyYXkuaXNBcnJheSh0aGlzLnN0cm9rZVdpZHRoKT90aGlzLnN0cm9rZVdpZHRoW3JdOnRoaXMuc3Ryb2tlV2lkdGgsZj1lK3BhcnNlRmxvYXQobCpoKSxwPWkrcGFyc2VGbG9hdChvKmgpO2QuZ2xvYmFscy5pc1hOdW1lcmljJiYhZC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGY9ZStwYXJzZUZsb2F0KGwqKGgrMSkpLWcscD1pK3BhcnNlRmxvYXQobyooaCsxKSktZyk7dmFyIHg9ZSxtPWksYj17fSx2PWQuY29uZmlnLmRhdGFMYWJlbHMseT10aGlzLmJhck9wdGlvbnMuZGF0YUxhYmVscyx3PXYub2Zmc2V0WCxrPXYub2Zmc2V0WSxBPXt3aWR0aDowLGhlaWdodDowfTtyZXR1cm4gZC5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkJiYoQT11LmdldFRleHRSZWN0cyhkLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXShkLmdsb2JhbHMubWF4WSkscGFyc2VJbnQodi5zdHlsZS5mb250U2l6ZSkpKSxiPXRoaXMuaXNIb3Jpem9udGFsP3RoaXMuY2FsY3VsYXRlQmFyc0RhdGFMYWJlbHNQb3NpdGlvbih7eDplLHk6aSxpOnMsajphLHJlbmRlcmVkUGF0aDpjLGJjeTpwLGJhckhlaWdodDpvLGJhcldpZHRoOmwsdGV4dFJlY3RzOkEsc3Ryb2tlV2lkdGg6ZyxkYXRhTGFiZWxzWDp4LGRhdGFMYWJlbHNZOm0sYmFyRGF0YUxhYmVsc0NvbmZpZzp5LG9mZlg6dyxvZmZZOmt9KTp0aGlzLmNhbGN1bGF0ZUNvbHVtbnNEYXRhTGFiZWxzUG9zaXRpb24oe3g6ZSx5OmksaTpzLGo6YSxyZW5kZXJlZFBhdGg6YyxyZWFsSW5kZXg6cixiY3g6ZixiY3k6cCxiYXJIZWlnaHQ6byxiYXJXaWR0aDpsLHRleHRSZWN0czpBLHN0cm9rZVdpZHRoOmcsZGF0YUxhYmVsc1k6bSxiYXJEYXRhTGFiZWxzQ29uZmlnOnksb2ZmWDp3LG9mZlk6a30pLGMuYXR0cih7Y3k6Yi5iY3ksY3g6Yi5iY3gsajphLHZhbDpuW3NdW2FdLGJhckhlaWdodDpvLGJhcldpZHRoOmx9KSx0aGlzLmRyYXdDYWxjdWxhdGVkRGF0YUxhYmVscyh7eDpiLmRhdGFMYWJlbHNYLHk6Yi5kYXRhTGFiZWxzWSx2YWw6bltzXVthXSxpOnIsajphLGJhcldpZHRoOmwsYmFySGVpZ2h0Om8sdGV4dFJlY3RzOkEsZGF0YUxhYmVsc0NvbmZpZzp2fSl9fSx7a2V5OlwiY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LHM9dC5pLGE9dC5qLHI9dC55LG49dC5iY3gsbz10LmJhcldpZHRoLGw9dC5iYXJIZWlnaHQsaD10LnRleHRSZWN0cyxjPXQuZGF0YUxhYmVsc1ksZD10LmJhckRhdGFMYWJlbHNDb25maWcsdT10LnN0cm9rZVdpZHRoLGc9dC5vZmZYLGY9dC5vZmZZLHA9aS5nbG9iYWxzLmdyaWRXaWR0aC9pLmdsb2JhbHMuZGF0YVBvaW50cztuLT11LzIsZT1pLmdsb2JhbHMuaXNYTnVtZXJpYz9uLW8vMitnOm4tcCtvLzIrZzt2YXIgeD10aGlzLnNlcmllc1tzXVthXTw9MDtzd2l0Y2godGhpcy5pc1JldmVyc2VkJiYoci09bCksZC5wb3NpdGlvbil7Y2FzZVwiY2VudGVyXCI6Yz14P3IrbC8yK2guaGVpZ2h0LzIrZjpyK2wvMitoLmhlaWdodC8yLWY7YnJlYWs7Y2FzZVwiYm90dG9tXCI6Yz14P3IrbCtoLmhlaWdodCt1K2Y6citsLWguaGVpZ2h0LzIrdS1mO2JyZWFrO2Nhc2VcInRvcFwiOmM9eD9yLWguaGVpZ2h0LzItZjpyK2guaGVpZ2h0K2Z9cmV0dXJuIGkuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChjPDA/Yz0wK3U6YytoLmhlaWdodC8zPmkuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoYz1pLmdsb2JhbHMuZ3JpZEhlaWdodC11KSkse2JjeDpuLGJjeTpyLGRhdGFMYWJlbHNYOmUsZGF0YUxhYmVsc1k6Y319fSx7a2V5OlwiY2FsY3VsYXRlQmFyc0RhdGFMYWJlbHNQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQueCxzPXQuaSxhPXQuaixyPXQuYmN5LG49dC5iYXJIZWlnaHQsbz10LmJhcldpZHRoLGw9dC50ZXh0UmVjdHMsaD10LmRhdGFMYWJlbHNYLGM9dC5zdHJva2VXaWR0aCxkPXQuYmFyRGF0YUxhYmVsc0NvbmZpZyx1PXQub2ZmWCxnPXQub2ZmWSxmPXItZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLmRhdGFQb2ludHMrbi8yK2wuaGVpZ2h0LzIrZy0zLHA9dGhpcy5zZXJpZXNbc11bYV08PTA7c3dpdGNoKHRoaXMuaXNSZXZlcnNlZCYmKGkrPW8pLGQucG9zaXRpb24pe2Nhc2VcImNlbnRlclwiOmg9cD9pLW8vMi11Omktby8yK3U7YnJlYWs7Y2FzZVwiYm90dG9tXCI6aD1wP2ktby1jLU1hdGgucm91bmQobC53aWR0aC8yKS11OmktbytjK01hdGgucm91bmQobC53aWR0aC8yKSt1O2JyZWFrO2Nhc2VcInRvcFwiOmg9cD9pLWMrTWF0aC5yb3VuZChsLndpZHRoLzIpLXU6aS1jLU1hdGgucm91bmQobC53aWR0aC8yKSt1fXJldHVybiBlLmNvbmZpZy5jaGFydC5zdGFja2VkfHwoaDwwP2g9aCtsLndpZHRoK2M6aCtsLndpZHRoLzI+ZS5nbG9iYWxzLmdyaWRXaWR0aCYmKGg9ZS5nbG9iYWxzLmdyaWRXaWR0aC1sLndpZHRoLWMpKSx7YmN4OmksYmN5OnIsZGF0YUxhYmVsc1g6aCxkYXRhTGFiZWxzWTpmfX19LHtrZXk6XCJkcmF3Q2FsY3VsYXRlZERhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10Lnkscz10LnZhbCxhPXQuaSxyPXQuaixuPXQudGV4dFJlY3RzLG89dC5iYXJIZWlnaHQsbD10LmJhcldpZHRoLGg9dC5kYXRhTGFiZWxzQ29uZmlnLGM9dGhpcy53LGQ9bmV3IERhdGFMYWJlbHModGhpcy5jdHgpLHU9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxnPWguZm9ybWF0dGVyLGY9bnVsbCxwPWMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSk+LTE7aWYoaC5lbmFibGVkJiYhcCl7Zj11Lmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO3ZhciB4PVwiXCI7dm9pZCAwIT09cyYmKHg9ZyhzLHtzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OnIsdzpjfSkpLDA9PT1zJiZjLmNvbmZpZy5jaGFydC5zdGFja2VkJiYoeD1cIlwiKSxjLmNvbmZpZy5jaGFydC5zdGFja2VkJiZ0aGlzLmJhck9wdGlvbnMuZGF0YUxhYmVscy5oaWRlT3ZlcmZsb3dpbmdMYWJlbHMmJih0aGlzLmlzSG9yaXpvbnRhbD8oKGw9dGhpcy5zZXJpZXNbYV1bcl0vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSk+MCYmbi53aWR0aC8xLjY+bHx8bDwwJiZuLndpZHRoLzEuNjxsKSYmKHg9XCJcIik6KG89dGhpcy5zZXJpZXNbYV1bcl0vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxuLmhlaWdodC8xLjY+byYmKHg9XCJcIikpKTt2YXIgbT1fb2JqZWN0U3ByZWFkKHt9LGgpO3RoaXMuaXNIb3Jpem9udGFsJiZzPDAmJihcInN0YXJ0XCI9PT1oLnRleHRBbmNob3I/bS50ZXh0QW5jaG9yPVwiZW5kXCI6XCJlbmRcIj09PWgudGV4dEFuY2hvciYmKG0udGV4dEFuY2hvcj1cInN0YXJ0XCIpKSxkLnBsb3REYXRhTGFiZWxzVGV4dCh7eDplLHk6aSx0ZXh0OngsaTphLGo6cixwYXJlbnQ6ZixkYXRhTGFiZWxzQ29uZmlnOm0sYWx3YXlzRHJhd0RhdGFMYWJlbDohMCxvZmZzZXRDb3JyZWN0aW9uOiEwfSl9cmV0dXJuIGZ9fSx7a2V5OlwiYmFyRW5kaW5nU2hhcGVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEpe3ZhciByPW5ldyBHcmFwaGljcyh0aGlzLmN0eCk7aWYodGhpcy5pc0hvcml6b250YWwpe3ZhciBuPW51bGwsbz1lLng7aWYodm9pZCAwIT09aVtzXVthXXx8bnVsbCE9PWlbc11bYV0pe3ZhciBsPWlbc11bYV08MCxoPWUuYmFySGVpZ2h0LzItZS5zdHJva2VXaWR0aDtzd2l0Y2gobCYmKGg9LWUuYmFySGVpZ2h0LzItZS5zdHJva2VXaWR0aCksdC5jb25maWcuY2hhcnQuc3RhY2tlZHx8XCJyb3VuZGVkXCI9PT10aGlzLmJhck9wdGlvbnMuZW5kaW5nU2hhcGUmJihvPWUueC1oLzIpLHRoaXMuYmFyT3B0aW9ucy5lbmRpbmdTaGFwZSl7Y2FzZVwiZmxhdFwiOm49ci5saW5lKG8sZS5iYXJZUG9zaXRpb24rZS5iYXJIZWlnaHQtZS5zdHJva2VXaWR0aCk7YnJlYWs7Y2FzZVwicm91bmRlZFwiOm49ci5xdWFkcmF0aWNDdXJ2ZShvK2gsZS5iYXJZUG9zaXRpb24rKGUuYmFySGVpZ2h0LWUuc3Ryb2tlV2lkdGgpLzIsbyxlLmJhcllQb3NpdGlvbitlLmJhckhlaWdodC1lLnN0cm9rZVdpZHRoKX19cmV0dXJue3BhdGg6bixlbmRpbmdfcF9mcm9tOlwiXCIsbmV3WDpvfX12YXIgYz1udWxsLGQ9ZS55O2lmKHZvaWQgMCE9PWlbc11bYV18fG51bGwhPT1pW3NdW2FdKXt2YXIgdT1pW3NdW2FdPDAsZz1lLmJhcldpZHRoLzItZS5zdHJva2VXaWR0aDtzd2l0Y2godSYmKGc9LWUuYmFyV2lkdGgvMi1lLnN0cm9rZVdpZHRoKSx0LmNvbmZpZy5jaGFydC5zdGFja2VkfHxcInJvdW5kZWRcIj09PXRoaXMuYmFyT3B0aW9ucy5lbmRpbmdTaGFwZSYmKGQrPWcvMiksdGhpcy5iYXJPcHRpb25zLmVuZGluZ1NoYXBlKXtjYXNlXCJmbGF0XCI6Yz1yLmxpbmUoZS5iYXJYUG9zaXRpb24rZS5iYXJXaWR0aC1lLnN0cm9rZVdpZHRoLGQpO2JyZWFrO2Nhc2VcInJvdW5kZWRcIjpjPXIucXVhZHJhdGljQ3VydmUoZS5iYXJYUG9zaXRpb24rKGUuYmFyV2lkdGgtZS5zdHJva2VXaWR0aCkvMixkLWcsZS5iYXJYUG9zaXRpb24rZS5iYXJXaWR0aC1lLnN0cm9rZVdpZHRoLGQpfX1yZXR1cm57cGF0aDpjLGVuZGluZ19wX2Zyb206XCJcIixuZXdZOmR9fX1dKSx0fSgpLEJhclN0YWNrZWQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBfY2xhc3NDYWxsQ2hlY2sodGhpcyxlKSxfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLF9nZXRQcm90b3R5cGVPZihlKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBfaW5oZXJpdHMoZSxCYXIpLF9jcmVhdGVDbGFzcyhlLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3RoaXMuZ3JhcGhpY3M9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSx0aGlzLmZpbGw9bmV3IEZpbGwodGhpcy5jdHgpLHRoaXMuYmFyPW5ldyBCYXIodGhpcy5jdHgsdGhpcy54eVJhdGlvcyk7dmFyIHM9bmV3IENvcmVVdGlscyh0aGlzLmN0eCxpKTt0PXMuZ2V0TG9nU2VyaWVzKHQpLHRoaXMueVJhdGlvPXMuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5pbml0VmFyaWFibGVzKHQpLFwiMTAwJVwiPT09aS5jb25maWcuY2hhcnQuc3RhY2tUeXBlJiYodD1pLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5zbGljZSgpKSx0aGlzLnNlcmllcz10LHRoaXMudG90YWxJdGVtcz0wLHRoaXMucHJldlk9W10sdGhpcy5wcmV2WD1bXSx0aGlzLnByZXZZRj1bXSx0aGlzLnByZXZYRj1bXSx0aGlzLnByZXZZVmFsPVtdLHRoaXMucHJldlhWYWw9W10sdGhpcy54QXJyaj1bXSx0aGlzLnhBcnJqRj1bXSx0aGlzLnhBcnJqVmFsPVtdLHRoaXMueUFycmo9W10sdGhpcy55QXJyakY9W10sdGhpcy55QXJyalZhbD1bXTtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKyl0W2FdLmxlbmd0aD4wJiYodGhpcy50b3RhbEl0ZW1zKz10W2FdLmxlbmd0aCk7Zm9yKHZhciByPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG49MCxvPTAsbD0wLGg9MDtsPHQubGVuZ3RoO2wrKyxoKyspe3ZhciBjPXZvaWQgMCxkPXZvaWQgMCx1PXZvaWQgMCxnPXZvaWQgMCxmPXZvaWQgMCxwPXZvaWQgMCx4PVtdLG09W10sYj1pLmdsb2JhbHMuY29tYm9DaGFydHM/ZVtsXTpsO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PWIpLHRoaXMuaXNSZXZlcnNlZD1pLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdJiZpLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdLnJldmVyc2VkO3ZhciB2PXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOlV0aWxzLmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbYl0pLHJlbDpsKzEsXCJkYXRhOnJlYWxJbmRleFwiOmJ9KSx5PXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCJ9KSx3PTAsaz0wLEE9MCxTPXRoaXMuaW5pdGlhbFBvc2l0aW9ucyhuLG8sdSxnLGYscCk7bz1TLnksaz1TLmJhckhlaWdodCxnPVMueURpdmlzaW9uLHA9Uy56ZXJvVyxuPVMueCxBPVMuYmFyV2lkdGgsdT1TLnhEaXZpc2lvbixmPVMuemVyb0gsdGhpcy55QXJyaj1bXSx0aGlzLnlBcnJqRj1bXSx0aGlzLnlBcnJqVmFsPVtdLHRoaXMueEFycmo9W10sdGhpcy54QXJyakY9W10sdGhpcy54QXJyalZhbD1bXTtmb3IodmFyIEM9MDtDPGkuZ2xvYmFscy5kYXRhUG9pbnRzO0MrKyl7aS5jb25maWcuc3Ryb2tlLnNob3cmJih3PXRoaXMuaXNOdWxsVmFsdWU/MDpBcnJheS5pc0FycmF5KHRoaXMuc3Ryb2tlV2lkdGgpP3RoaXMuc3Ryb2tlV2lkdGhbYl06dGhpcy5zdHJva2VXaWR0aCk7dmFyIEw9bnVsbDt0aGlzLmlzSG9yaXpvbnRhbD8oTD10aGlzLmRyYXdCYXJQYXRocyh7aW5kZXhlczp7aTpsLGo6QyxyZWFsSW5kZXg6YixiYzpofSxiYXJIZWlnaHQ6ayxzdHJva2VXaWR0aDp3LHBhdGhUbzpjLHBhdGhGcm9tOmQsemVyb1c6cCx4Om4seTpvLHlEaXZpc2lvbjpnLGVsU2VyaWVzOnZ9KSxBPXRoaXMuc2VyaWVzW2xdW0NdL3RoaXMuaW52ZXJ0ZWRZUmF0aW8pOihMPXRoaXMuZHJhd0NvbHVtblBhdGhzKHtpbmRleGVzOntpOmwsajpDLHJlYWxJbmRleDpiLGJjOmh9LHg6bix5Om8seERpdmlzaW9uOnUscGF0aFRvOmMscGF0aEZyb206ZCxiYXJXaWR0aDpBLHplcm9IOmYsc3Ryb2tlV2lkdGg6dyxlbFNlcmllczp2fSksaz10aGlzLnNlcmllc1tsXVtDXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdKSxjPUwucGF0aFRvLGQ9TC5wYXRoRnJvbSxvPUwueSxuPUwueCx4LnB1c2gobiksbS5wdXNoKG8pO3ZhciBQPXRoaXMuYmFyLmdldFBhdGhGaWxsQ29sb3IodCxsLEMsYik7dj10aGlzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OmIscGF0aEZpbGw6UCxqOkMsaTpsLHBhdGhGcm9tOmQscGF0aFRvOmMsc3Ryb2tlV2lkdGg6dyxlbFNlcmllczp2LHg6bix5Om8sc2VyaWVzOnQsYmFySGVpZ2h0OmssYmFyV2lkdGg6QSxlbERhdGFMYWJlbHNXcmFwOnksdHlwZTpcImJhclwiLHZpc2libGVTZXJpZXM6MH0pfWkuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2JdPXgsaS5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbYl09bSx0aGlzLnByZXZZLnB1c2godGhpcy55QXJyaiksdGhpcy5wcmV2WUYucHVzaCh0aGlzLnlBcnJqRiksdGhpcy5wcmV2WVZhbC5wdXNoKHRoaXMueUFycmpWYWwpLHRoaXMucHJldlgucHVzaCh0aGlzLnhBcnJqKSx0aGlzLnByZXZYRi5wdXNoKHRoaXMueEFycmpGKSx0aGlzLnByZXZYVmFsLnB1c2godGhpcy54QXJyalZhbCksci5hZGQodil9cmV0dXJuIHJ9fSx7a2V5OlwiaW5pdGlhbFBvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSxyKXt2YXIgbixvLGw9dGhpcy53O3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbD8obj0obj1zPWwuZ2xvYmFscy5ncmlkSGVpZ2h0L2wuZ2xvYmFscy5kYXRhUG9pbnRzKSpwYXJzZUludChsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0KS8xMDAscj10aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZK2wuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyh0aGlzLmlzUmV2ZXJzZWQ/bC5nbG9iYWxzLmdyaWRXaWR0aDowKS0odGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZUludmVydGVkWTowKSxlPShzLW4pLzIpOihvPWk9bC5nbG9iYWxzLmdyaWRXaWR0aC9sLmdsb2JhbHMuZGF0YVBvaW50cyxvPWwuZ2xvYmFscy5pc1hOdW1lcmljPyhpPWwuZ2xvYmFscy5taW5YRGlmZi90aGlzLnhSYXRpbykqcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmNvbHVtbldpZHRoKS8xMDA6bypwYXJzZUludChsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgpLzEwMCxhPXRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0rKHRoaXMuaXNSZXZlcnNlZD9sLmdsb2JhbHMuZ3JpZEhlaWdodDowKS0odGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XTowKSx0PWwuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyhpLW8pLzIpLHt4OnQseTplLHlEaXZpc2lvbjpzLHhEaXZpc2lvbjppLGJhckhlaWdodDpuLGJhcldpZHRoOm8semVyb0g6YSx6ZXJvVzpyfX19LHtrZXk6XCJkcmF3QmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT10LmluZGV4ZXMscz10LmJhckhlaWdodCxhPXQuc3Ryb2tlV2lkdGgscj10LnBhdGhUbyxuPXQucGF0aEZyb20sbz10Lnplcm9XLGw9dC54LGg9dC55LGM9dC55RGl2aXNpb24sZD10LmVsU2VyaWVzLHU9dGhpcy53LGc9aCxmPWkuaSxwPWkuaix4PWkucmVhbEluZGV4LG09aS5iYyxiPTAsdj0wO3Y8dGhpcy5wcmV2WEYubGVuZ3RoO3YrKyliKz10aGlzLnByZXZYRlt2XVtwXTtpZihmPjApe3ZhciB5PW87dGhpcy5wcmV2WFZhbFtmLTFdW3BdPDA/eT10aGlzLnNlcmllc1tmXVtwXT49MD90aGlzLnByZXZYW2YtMV1bcF0rYi0yKih0aGlzLmlzUmV2ZXJzZWQ/YjowKTp0aGlzLnByZXZYW2YtMV1bcF06dGhpcy5wcmV2WFZhbFtmLTFdW3BdPj0wJiYoeT10aGlzLnNlcmllc1tmXVtwXT49MD90aGlzLnByZXZYW2YtMV1bcF06dGhpcy5wcmV2WFtmLTFdW3BdLWIrMioodGhpcy5pc1JldmVyc2VkP2I6MCkpLGU9eX1lbHNlIGU9bztsPW51bGw9PT10aGlzLnNlcmllc1tmXVtwXT9lOmUrdGhpcy5zZXJpZXNbZl1bcF0vdGhpcy5pbnZlcnRlZFlSYXRpby0yKih0aGlzLmlzUmV2ZXJzZWQ/dGhpcy5zZXJpZXNbZl1bcF0vdGhpcy5pbnZlcnRlZFlSYXRpbzowKTt2YXIgdz17YmFySGVpZ2h0OnMsc3Ryb2tlV2lkdGg6YSxpbnZlcnRlZFlSYXRpbzp0aGlzLmludmVydGVkWVJhdGlvLGJhcllQb3NpdGlvbjpnLHg6bH0saz10aGlzLmJhci5iYXJFbmRpbmdTaGFwZSh1LHcsdGhpcy5zZXJpZXMsZixwKTtpZih0aGlzLnNlcmllcy5sZW5ndGg+MSYmZiE9PXRoaXMuZW5kaW5nU2hhcGVPblNlcmllc051bWJlciYmKGsucGF0aD10aGlzLmdyYXBoaWNzLmxpbmUoay5uZXdYLGcrcy1hKSksdGhpcy54QXJyai5wdXNoKGsubmV3WCksdGhpcy54QXJyakYucHVzaChNYXRoLmFicyhlLWsubmV3WCkpLHRoaXMueEFycmpWYWwucHVzaCh0aGlzLnNlcmllc1tmXVtwXSkscj10aGlzLmdyYXBoaWNzLm1vdmUoZSxnKSxuPXRoaXMuZ3JhcGhpY3MubW92ZShlLGcpLHUuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYobj10aGlzLmJhci5nZXRQYXRoRnJvbSh4LHAsITEpKSxyPXIrdGhpcy5ncmFwaGljcy5saW5lKGsubmV3WCxnKStrLnBhdGgrdGhpcy5ncmFwaGljcy5saW5lKGUsZytzLWEpK3RoaXMuZ3JhcGhpY3MubGluZShlLGcpLG49bit0aGlzLmdyYXBoaWNzLmxpbmUoZSxnKSt0aGlzLmdyYXBoaWNzLmxpbmUoZSxnK3MtYSkrdGhpcy5ncmFwaGljcy5saW5lKGUsZytzLWEpK3RoaXMuZ3JhcGhpY3MubGluZShlLGcrcy1hKSt0aGlzLmdyYXBoaWNzLmxpbmUoZSxnKSx1LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoPjAmJjA9PT1mKXttPj11LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoJiYobT0wKTt2YXIgQT11LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnNbbV0sUz10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsZyx1Lmdsb2JhbHMuZ3JpZFdpZHRoLHMsMCxBLHUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2xvcnMuYmFja2dyb3VuZEJhck9wYWNpdHkpO2QuYWRkKFMpLFMubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1iYWNrZ3JvdW5kQmFyXCIpfXJldHVybntwYXRoVG86cixwYXRoRnJvbTpuLHg6bCx5OmgrPWN9fX0se2tleTpcImRyYXdDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueCxzPXQueSxhPXQueERpdmlzaW9uLHI9dC5wYXRoVG8sbj10LnBhdGhGcm9tLG89dC5iYXJXaWR0aCxsPXQuemVyb0gsaD10LnN0cm9rZVdpZHRoLGM9dC5lbFNlcmllcyxkPXRoaXMudyx1PWUuaSxnPWUuaixmPWUucmVhbEluZGV4LHA9ZS5iYztpZihkLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHg9ZC5nbG9iYWxzLnNlcmllc1hbdV1bZ107eHx8KHg9MCksaT0oeC1kLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tby8yfWZvcih2YXIgbSxiPWksdj0wLHk9MDt5PHRoaXMucHJldllGLmxlbmd0aDt5Kyspdis9dGhpcy5wcmV2WUZbeV1bZ107aWYodT4wJiYhZC5nbG9iYWxzLmlzWE51bWVyaWN8fHU+MCYmZC5nbG9iYWxzLmlzWE51bWVyaWMmJmQuZ2xvYmFscy5zZXJpZXNYW3UtMV1bZ109PT1kLmdsb2JhbHMuc2VyaWVzWFt1XVtnXSl7dmFyIHc9dGhpcy5wcmV2WVt1LTFdW2ddO209dGhpcy5wcmV2WVZhbFt1LTFdW2ddPDA/dGhpcy5zZXJpZXNbdV1bZ10+PTA/dy12KzIqKHRoaXMuaXNSZXZlcnNlZD92OjApOnc6dGhpcy5zZXJpZXNbdV1bZ10+PTA/dzp3K3YtMioodGhpcy5pc1JldmVyc2VkP3Y6MCl9ZWxzZSBtPWQuZ2xvYmFscy5ncmlkSGVpZ2h0LWw7cz1tLXRoaXMuc2VyaWVzW3VdW2ddL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP3RoaXMuc2VyaWVzW3VdW2ddL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF06MCk7dmFyIGs9e2JhcldpZHRoOm8sc3Ryb2tlV2lkdGg6aCx5UmF0aW86dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxiYXJYUG9zaXRpb246Yix5OnN9LEE9dGhpcy5iYXIuYmFyRW5kaW5nU2hhcGUoZCxrLHRoaXMuc2VyaWVzLHUsZyk7aWYodGhpcy55QXJyai5wdXNoKEEubmV3WSksdGhpcy55QXJyakYucHVzaChNYXRoLmFicyhtLUEubmV3WSkpLHRoaXMueUFycmpWYWwucHVzaCh0aGlzLnNlcmllc1t1XVtnXSkscj10aGlzLmdyYXBoaWNzLm1vdmUoYixtKSxuPXRoaXMuZ3JhcGhpY3MubW92ZShiLG0pLGQuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYobj10aGlzLmJhci5nZXRQYXRoRnJvbShmLGcsITEpKSxyPXIrdGhpcy5ncmFwaGljcy5saW5lKGIsQS5uZXdZKStBLnBhdGgrdGhpcy5ncmFwaGljcy5saW5lKGIrby1oLG0pK3RoaXMuZ3JhcGhpY3MubGluZShiLWgvMixtKSxuPW4rdGhpcy5ncmFwaGljcy5saW5lKGIsbSkrdGhpcy5ncmFwaGljcy5saW5lKGIrby1oLG0pK3RoaXMuZ3JhcGhpY3MubGluZShiK28taCxtKSt0aGlzLmdyYXBoaWNzLmxpbmUoYitvLWgsbSkrdGhpcy5ncmFwaGljcy5saW5lKGItaC8yLG0pLGQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGg+MCYmMD09PXUpe3A+PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGgmJihwPTApO3ZhciBTPWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9yc1twXSxDPXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoYiwwLG8sZC5nbG9iYWxzLmdyaWRIZWlnaHQsMCxTLGQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2xvcnMuYmFja2dyb3VuZEJhck9wYWNpdHkpO2MuYWRkKEMpLEMubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1iYWNrZ3JvdW5kQmFyXCIpfXJldHVybiBpKz1hLHtwYXRoVG86cixwYXRoRnJvbTpuLHg6ZC5nbG9iYWxzLmlzWE51bWVyaWM/aS1hOmkseTpzfX19LHtrZXk6XCJjaGVja1plcm9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5zZXJpZXMsaT10aGlzLncscz0wO3M8ZS5sZW5ndGg7cysrKXtmb3IodmFyIGE9MCxyPTA7cjxlW2kuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7cisrKWErPWVbc11bcl07MD09PWEmJnRoaXMuemVyb1Nlcmllc2VzLnB1c2gocyl9Zm9yKHZhciBuPWUubGVuZ3RoLTE7bj49MDtuLS0pdGhpcy56ZXJvU2VyaWVzZXMuaW5kZXhPZihuKT4tMSYmbj09PXRoaXMuZW5kaW5nU2hhcGVPblNlcmllc051bWJlciYmKHRoaXMuZW5kaW5nU2hhcGVPblNlcmllc051bWJlci09MSl9fV0pLGV9KCksQ2FuZGxlU3RpY2s9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBfY2xhc3NDYWxsQ2hlY2sodGhpcyxlKSxfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLF9nZXRQcm90b3R5cGVPZihlKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBfaW5oZXJpdHMoZSxCYXIpLF9jcmVhdGVDbGFzcyhlLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxhPW5ldyBGaWxsKHRoaXMuY3R4KTt0aGlzLmNhbmRsZXN0aWNrT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrO3ZhciByPW5ldyBDb3JlVXRpbHModGhpcy5jdHgsaSk7dD1yLmdldExvZ1Nlcmllcyh0KSx0aGlzLnNlcmllcz10LHRoaXMueVJhdGlvPXIuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5pbml0VmFyaWFibGVzKHQpO2Zvcih2YXIgbj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG89MCxsPTA7bzx0Lmxlbmd0aDtvKyssbCsrKXt2YXIgaCxjLGQ9dm9pZCAwLHU9dm9pZCAwLGc9dm9pZCAwLGY9dm9pZCAwLHA9W10seD1bXSxtPWkuZ2xvYmFscy5jb21ib0NoYXJ0cz9lW29dOm8sYj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTpVdGlscy5lc2NhcGVTdHJpbmcoaS5nbG9iYWxzLnNlcmllc05hbWVzW21dKSxyZWw6bysxLFwiZGF0YTpyZWFsSW5kZXhcIjptfSk7dFtvXS5sZW5ndGg+MCYmKHRoaXMudmlzaWJsZUk9dGhpcy52aXNpYmxlSSsxKTt2YXIgdix5LHc9MDt0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD1tKTt2YXIgaz10aGlzLmluaXRpYWxQb3NpdGlvbnMoKTtmPWsueSx2PWsuYmFySGVpZ2h0LGc9ay54LHk9ay5iYXJXaWR0aCxoPWsueERpdmlzaW9uLGM9ay56ZXJvSCx4LnB1c2goZyt5LzIpO2Zvcih2YXIgQT1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wifSksUz0wLEM9aS5nbG9iYWxzLmRhdGFQb2ludHM7UzxpLmdsb2JhbHMuZGF0YVBvaW50cztTKyssQy0tKXt2b2lkIDA9PT10aGlzLnNlcmllc1tvXVtTXXx8bnVsbD09PXRbb11bU10/dGhpcy5pc051bGxWYWx1ZT0hMDp0aGlzLmlzTnVsbFZhbHVlPSExLGkuY29uZmlnLnN0cm9rZS5zaG93JiYodz10aGlzLmlzTnVsbFZhbHVlPzA6QXJyYXkuaXNBcnJheSh0aGlzLnN0cm9rZVdpZHRoKT90aGlzLnN0cm9rZVdpZHRoW21dOnRoaXMuc3Ryb2tlV2lkdGgpO3ZhciBMLFA9dGhpcy5kcmF3Q2FuZGxlU3RpY2tQYXRocyh7aW5kZXhlczp7aTpvLGo6UyxyZWFsSW5kZXg6bSxiYzpsfSx4OmcseTpmLHhEaXZpc2lvbjpoLHBhdGhUbzpkLHBhdGhGcm9tOnUsYmFyV2lkdGg6eSx6ZXJvSDpjLHN0cm9rZVdpZHRoOncsZWxTZXJpZXM6Yn0pO2Q9UC5wYXRoVG8sdT1QLnBhdGhGcm9tLGY9UC55LGc9UC54LEw9UC5jb2xvcixTPjAmJngucHVzaChnK3kvMikscC5wdXNoKGYpO3ZhciB6PWEuZmlsbFBhdGgoe3Nlcmllc051bWJlcjptLGNvbG9yOkwsdmFsdWU6dFtvXVtTXX0pLFQ9dGhpcy5jYW5kbGVzdGlja09wdGlvbnMud2ljay51c2VGaWxsQ29sb3I/TDp2b2lkIDA7Yj10aGlzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4Om0scGF0aEZpbGw6eixsaW5lRmlsbDpULGo6UyxpOm8scGF0aEZyb206dSxwYXRoVG86ZCxzdHJva2VXaWR0aDp3LGVsU2VyaWVzOmIseDpnLHk6ZixzZXJpZXM6dCxiYXJIZWlnaHQ6dixiYXJXaWR0aDp5LGVsRGF0YUxhYmVsc1dyYXA6QSx2aXNpYmxlU2VyaWVzOnRoaXMudmlzaWJsZUksdHlwZTpcImNhbmRsZXN0aWNrXCJ9KX1pLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1ttXT14LGkuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW21dPXAsbi5hZGQoYil9cmV0dXJuIG59fSx7a2V5OlwiZHJhd0NhbmRsZVN0aWNrUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10Lngscz0odC55LHQueERpdmlzaW9uKSxhPXQucGF0aFRvLHI9dC5wYXRoRnJvbSxuPXQuYmFyV2lkdGgsbz10Lnplcm9ILGw9dC5zdHJva2VXaWR0aCxoPXRoaXMudyxjPW5ldyBHcmFwaGljcyh0aGlzLmN0eCksZD1lLmksdT1lLmosZz0hMCxmPWguY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLmNvbG9ycy51cHdhcmQscD1oLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMuZG93bndhcmQseD10aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLG09ZS5yZWFsSW5kZXgsYj10aGlzLmdldE9ITENWYWx1ZShtLHUpLHY9byx5PW87Yi5vPmIuYyYmKGc9ITEpO3ZhciB3PU1hdGgubWluKGIubyxiLmMpLGs9TWF0aC5tYXgoYi5vLGIuYyk7aC5nbG9iYWxzLmlzWE51bWVyaWMmJihpPShoLmdsb2JhbHMuc2VyaWVzWFtkXVt1XS1oLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tbi8yKTt2YXIgQT1pK24qdGhpcy52aXNpYmxlSTtyZXR1cm4gdm9pZCAwPT09dGhpcy5zZXJpZXNbZF1bdV18fG51bGw9PT10aGlzLnNlcmllc1tkXVt1XT93PW86KHc9by13L3gsaz1vLWsveCx2PW8tYi5oL3gseT1vLWIubC94KSxjLm1vdmUoQSxvKSxyPWMubW92ZShBLHcpLGguZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYocj10aGlzLmdldFBhdGhGcm9tKG0sdSwhMCkpLGE9Yy5tb3ZlKEEsaykrYy5saW5lKEErbi8yLGspK2MubGluZShBK24vMix2KStjLmxpbmUoQStuLzIsaykrYy5saW5lKEErbixrKStjLmxpbmUoQStuLHcpK2MubGluZShBK24vMix3KStjLmxpbmUoQStuLzIseSkrYy5saW5lKEErbi8yLHcpK2MubGluZShBLHcpK2MubGluZShBLGstbC8yKSxyKz1jLm1vdmUoQSx3KSxoLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGkrPXMpLHtwYXRoVG86YSxwYXRoRnJvbTpyLHg6aSx5OmssYmFyWFBvc2l0aW9uOkEsY29sb3I6Zz9mOnB9fX0se2tleTpcImdldE9ITENWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybntvOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW3RdW2VdLGg6aS5nbG9iYWxzLnNlcmllc0NhbmRsZUhbdF1bZV0sbDppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFt0XVtlXSxjOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW3RdW2VdfX19XSksZX0oKSxDcm9zc2hhaXJzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiZHJhd1hDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLGk9bmV3IEZpbHRlcnModGhpcy5jdHgpLHM9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLmdyYWRpZW50LGE9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5kcm9wU2hhZG93LHI9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLnR5cGUsbj1zLmNvbG9yRnJvbSxvPXMuY29sb3JUbyxsPXMub3BhY2l0eUZyb20saD1zLm9wYWNpdHlUbyxjPXMuc3RvcHMsZD1hLmVuYWJsZWQsdT1hLmxlZnQsZz1hLnRvcCxmPWEuYmx1cixwPWEuY29sb3IseD1hLm9wYWNpdHksbT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwuY29sb3I7aWYodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zaG93KXtcImdyYWRpZW50XCI9PT1yJiYobT1lLmRyYXdHcmFkaWVudChcInZlcnRpY2FsXCIsbixvLGwsaCxudWxsLGMsbnVsbCkpO3ZhciBiPWUuZHJhd1JlY3QoKTsxPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCYmKGI9ZS5kcmF3TGluZSgpKSxiLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy14Y3Jvc3NoYWlyc1wiLHg6MCx5OjAseTI6dC5nbG9iYWxzLmdyaWRIZWlnaHQsd2lkdGg6VXRpbHMuaXNOdW1iZXIodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCk/dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aDowLGhlaWdodDp0Lmdsb2JhbHMuZ3JpZEhlaWdodCxmaWxsOm0sZmlsdGVyOlwibm9uZVwiLFwiZmlsbC1vcGFjaXR5XCI6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5vcGFjaXR5LHN0cm9rZTp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS5jb2xvcixcInN0cm9rZS13aWR0aFwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLndpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLmRhc2hBcnJheX0pLGQmJihiPWkuZHJvcFNoYWRvdyhiLHtsZWZ0OnUsdG9wOmcsYmx1cjpmLGNvbG9yOnAsb3BhY2l0eTp4fSkpLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGIpfX19LHtrZXk6XCJkcmF3WUNyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBHcmFwaGljcyh0aGlzLmN0eCksaT10LmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzO2lmKHQuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMuc2hvdyl7dmFyIHM9ZS5kcmF3TGluZSgwLDAsdC5nbG9iYWxzLmdyaWRXaWR0aCwwLGkuc3Ryb2tlLmNvbG9yLGkuc3Ryb2tlLmRhc2hBcnJheSxpLnN0cm9rZS53aWR0aCk7cy5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteWNyb3NzaGFpcnNcIn0pLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHMpfXZhciBhPWUuZHJhd0xpbmUoMCwwLHQuZ2xvYmFscy5ncmlkV2lkdGgsMCxpLnN0cm9rZS5jb2xvciwwLDApO2EuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwifSksdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoYSl9fV0pLHR9KCksSGVhdE1hcD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54UmF0aW89aS54UmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5uZWdSYW5nZT0hMSx0aGlzLmR5bmFtaWNBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLHRoaXMucmVjdFJhZGl1cz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAucmFkaXVzLHRoaXMuc3Ryb2tlV2lkdGg9dGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGh9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBHcmFwaGljcyh0aGlzLmN0eCkscz1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtaGVhdG1hcFwifSk7cy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChlLmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBhPWUuZ2xvYmFscy5ncmlkV2lkdGgvZS5nbG9iYWxzLmRhdGFQb2ludHMscj1lLmdsb2JhbHMuZ3JpZEhlaWdodC9lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxuPTAsbz0hMTt0aGlzLmNoZWNrQ29sb3JSYW5nZSgpO3ZhciBsPXQuc2xpY2UoKTtlLmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZCYmKG89ITAsbC5yZXZlcnNlKCkpO2Zvcih2YXIgaD1vPzA6bC5sZW5ndGgtMTtvP2g8bC5sZW5ndGg6aD49MDtvP2grKzpoLS0pe3ZhciBjPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1oZWF0bWFwLXNlcmllc1wiLHNlcmllc05hbWU6VXRpbHMuZXNjYXBlU3RyaW5nKGUuZ2xvYmFscy5zZXJpZXNOYW1lc1toXSkscmVsOmgrMSxcImRhdGE6cmVhbEluZGV4XCI6aH0pO2lmKGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGQ9ZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztuZXcgRmlsdGVycyh0aGlzLmN0eCkuZHJvcFNoYWRvdyhjLGQsaCl9Zm9yKHZhciB1PTAsZz0wO2c8bFtoXS5sZW5ndGg7ZysrKXt2YXIgZj0xLHA9dGhpcy5kZXRlcm1pbmVIZWF0Q29sb3IoaCxnKTtpZihlLmdsb2JhbHMuaGFzTmVnc3x8dGhpcy5uZWdSYW5nZSl7dmFyIHg9ZS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5zaGFkZUludGVuc2l0eTtmPWUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAucmV2ZXJzZU5lZ2F0aXZlU2hhZGU/cC5wZXJjZW50PDA/cC5wZXJjZW50LzEwMCooMS4yNSp4KTooMS1wLnBlcmNlbnQvMTAwKSooMS4yNSp4KTpwLnBlcmNlbnQ8MD8xLSgxK3AucGVyY2VudC8xMDApKng6KDEtcC5wZXJjZW50LzEwMCkqeH1lbHNlIGY9MS1wLnBlcmNlbnQvMTAwO3ZhciBtPXAuY29sb3I7aWYoZS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5lbmFibGVTaGFkZXMpe3ZhciBiPW5ldyBVdGlsczttPVV0aWxzLmhleFRvUmdiYShiLnNoYWRlQ29sb3IoZixwLmNvbG9yKSxlLmNvbmZpZy5maWxsLm9wYWNpdHkpfXZhciB2PXRoaXMucmVjdFJhZGl1cyx5PWkuZHJhd1JlY3QodSxuLGEscix2KTtpZih5LmF0dHIoe2N4OnUsY3k6bn0pLHkubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oZWF0bWFwLXJlY3RcIiksYy5hZGQoeSkseS5hdHRyKHtmaWxsOm0saTpoLGluZGV4OmgsajpnLHZhbDpsW2hdW2ddLFwic3Ryb2tlLXdpZHRoXCI6dGhpcy5zdHJva2VXaWR0aCxzdHJva2U6ZS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbMF0sY29sb3I6bX0pLHkubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLHkpKSx5Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcyx5KSkseS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLHkpKSxlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQmJiFlLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciB3PTE7ZS5nbG9iYWxzLnJlc2l6ZWR8fCh3PWUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLHRoaXMuYW5pbWF0ZUhlYXRNYXAoeSx1LG4sYSxyLHcpfWlmKGUuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIGs9MTtpZih0aGlzLmR5bmFtaWNBbmltLmVuYWJsZWQmJmUuZ2xvYmFscy5zaG91bGRBbmltYXRlKXtrPXRoaXMuZHluYW1pY0FuaW0uc3BlZWQ7dmFyIEE9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF0mJmUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdW2ddJiZlLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXVtnXS5jb2xvcjtBfHwoQT1cInJnYmEoMjU1LCAyNTUsIDI1NSwgMClcIiksdGhpcy5hbmltYXRlSGVhdENvbG9yKHksVXRpbHMuaXNDb2xvckhleChBKT9BOlV0aWxzLnJnYjJoZXgoQSksVXRpbHMuaXNDb2xvckhleChtKT9tOlV0aWxzLnJnYjJoZXgobSksayl9fXZhciBTPXRoaXMuY2FsY3VsYXRlSGVhdG1hcERhdGFMYWJlbHMoe3g6dSx5Om4saTpoLGo6ZyxzZXJpZXM6bCxyZWN0SGVpZ2h0OnIscmVjdFdpZHRoOmF9KTtudWxsIT09UyYmYy5hZGQoUyksdSs9YX1uKz1yLHMuYWRkKGMpfXZhciBDPWUuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5zbGljZSgpO2UuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkP0MudW5zaGlmdChcIlwiKTpDLnB1c2goXCJcIiksZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0PUM7dmFyIEw9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7cmV0dXJuIGUuY29uZmlnLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZPS1MLzIsc319LHtrZXk6XCJjaGVja0NvbG9yUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXA7ZS5jb2xvclNjYWxlLnJhbmdlcy5sZW5ndGg+MCYmZS5jb2xvclNjYWxlLnJhbmdlcy5tYXAoZnVuY3Rpb24oZSxpKXtlLmZyb208MCYmKHQubmVnUmFuZ2U9ITApfSl9fSx7a2V5OlwiZGV0ZXJtaW5lSGVhdENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1pLmdsb2JhbHMuc2VyaWVzW3RdW2VdLGE9aS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcCxyPWEuY29sb3JTY2FsZS5pbnZlcnNlP2U6dCxuPWkuZ2xvYmFscy5jb2xvcnNbcl0sbz1NYXRoLm1pbi5hcHBseShNYXRoLF90b0NvbnN1bWFibGVBcnJheShpLmdsb2JhbHMuc2VyaWVzW3RdKSksbD1NYXRoLm1heC5hcHBseShNYXRoLF90b0NvbnN1bWFibGVBcnJheShpLmdsb2JhbHMuc2VyaWVzW3RdKSk7YS5kaXN0cmlidXRlZHx8KG89aS5nbG9iYWxzLm1pblksbD1pLmdsb2JhbHMubWF4WSksdm9pZCAwIT09YS5jb2xvclNjYWxlLm1pbiYmKG89YS5jb2xvclNjYWxlLm1pbjxpLmdsb2JhbHMubWluWT9hLmNvbG9yU2NhbGUubWluOmkuZ2xvYmFscy5taW5ZLGw9YS5jb2xvclNjYWxlLm1heD5pLmdsb2JhbHMubWF4WT9hLmNvbG9yU2NhbGUubWF4OmkuZ2xvYmFscy5tYXhZKTt2YXIgaD1NYXRoLmFicyhsKStNYXRoLmFicyhvKSxjPTEwMCpzLygwPT09aD9oLTFlLTY6aCk7YS5jb2xvclNjYWxlLnJhbmdlcy5sZW5ndGg+MCYmYS5jb2xvclNjYWxlLnJhbmdlcy5tYXAoZnVuY3Rpb24odCxlKXtpZihzPj10LmZyb20mJnM8PXQudG8pe249dC5jb2xvcixvPXQuZnJvbSxsPXQudG87dmFyIGk9TWF0aC5hYnMobCkrTWF0aC5hYnMobyk7Yz0xMDAqcy8oMD09PWk/aS0xZS02OmkpfX0pO3JldHVybntjb2xvcjpuLHBlcmNlbnQ6Y319fSx7a2V5OlwiY2FsY3VsYXRlSGVhdG1hcERhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10Lnkscz10LmksYT10Lmoscj0odC5zZXJpZXMsdC5yZWN0SGVpZ2h0KSxuPXQucmVjdFdpZHRoLG89dGhpcy53LGw9by5jb25maWcuZGF0YUxhYmVscyxoPW5ldyBHcmFwaGljcyh0aGlzLmN0eCksYz1uZXcgRGF0YUxhYmVscyh0aGlzLmN0eCksZD1sLmZvcm1hdHRlcix1PW51bGw7aWYobC5lbmFibGVkKXt1PWguZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7dmFyIGc9bC5vZmZzZXRYLGY9bC5vZmZzZXRZLHA9ZStuLzIrZyx4PWkrci8yK3BhcnNlSW50KGwuc3R5bGUuZm9udFNpemUpLzMrZixtPWQoby5nbG9iYWxzLnNlcmllc1tzXVthXSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDphLHc6b30pO2MucGxvdERhdGFMYWJlbHNUZXh0KHt4OnAseTp4LHRleHQ6bSxpOnMsajphLHBhcmVudDp1LGRhdGFMYWJlbHNDb25maWc6bH0pfXJldHVybiB1fX0se2tleTpcImFuaW1hdGVIZWF0TWFwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhLHIpe3ZhciBuPW5ldyBBbmltYXRpb25zKHRoaXMuY3R4KTtuLmFuaW1hdGVSZWN0KHQse3g6ZStzLzIseTppK2EvMix3aWR0aDowLGhlaWdodDowfSx7eDplLHk6aSx3aWR0aDpzLGhlaWdodDphfSxyLGZ1bmN0aW9uKCl7bi5hbmltYXRpb25Db21wbGV0ZWQoKX0pfX0se2tleTpcImFuaW1hdGVIZWF0Q29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt0LmF0dHIoe2ZpbGw6ZX0pLmFuaW1hdGUocykuYXR0cih7ZmlsbDppfSl9fV0pLHR9KCksUGllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5jaGFydFR5cGU9dGhpcy53LmNvbmZpZy5jaGFydC50eXBlLHRoaXMuaW5pdGlhbEFuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsdGhpcy5keW5hbWljQW5pbT10aGlzLmluaXRpYWxBbmltJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkLHRoaXMuYW5pbUJlZ2luQXJyPVswXSx0aGlzLmFuaW1EdXI9MCx0aGlzLmRvbnV0RGF0YUxhYmVscz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5sYWJlbHM7dmFyIGk9dGhpcy53O3RoaXMubGluZUNvbG9yQXJyPXZvaWQgMCE9PWkuZ2xvYmFscy5zdHJva2UuY29sb3JzP2kuZ2xvYmFscy5zdHJva2UuY29sb3JzOmkuZ2xvYmFscy5jb2xvcnMsdGhpcy5kZWZhdWx0U2l6ZT1pLmdsb2JhbHMuc3ZnSGVpZ2h0PGkuZ2xvYmFscy5zdmdXaWR0aD9pLmdsb2JhbHMuc3ZnSGVpZ2h0LTM1OmkuZ2xvYmFscy5ncmlkV2lkdGgsdGhpcy5jZW50ZXJZPXRoaXMuZGVmYXVsdFNpemUvMix0aGlzLmNlbnRlclg9aS5nbG9iYWxzLmdyaWRXaWR0aC8yLHRoaXMuZnVsbEFuZ2xlPTM2MCxpLmdsb2JhbHMucmFkaWFsU2l6ZT10aGlzLmRlZmF1bHRTaXplLzIuMDUtaS5jb25maWcuc3Ryb2tlLndpZHRoLWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1cix2b2lkIDAhPT1pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc2l6ZSYmKGkuZ2xvYmFscy5yYWRpYWxTaXplPWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zaXplKSx0aGlzLmRvbnV0U2l6ZT1pLmdsb2JhbHMucmFkaWFsU2l6ZSpwYXJzZUludChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuc2l6ZSkvMTAwLHRoaXMuc2xpY2VMYWJlbHM9W10sdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnI9W119cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBHcmFwaGljcyh0aGlzLmN0eCkscz1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcGllXCJ9KTtpZihlLmdsb2JhbHMubm9EYXRhKXJldHVybiBzO2Zvcih2YXIgYT0wLHI9MDtyPHQubGVuZ3RoO3IrKylhKz1VdGlscy5uZWdUb1plcm8odFtyXSk7dmFyIG49W10sbz1pLmdyb3VwKCk7MD09PWEmJihhPTFlLTUpO2Zvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgaD10aGlzLmZ1bGxBbmdsZSpVdGlscy5uZWdUb1plcm8odFtsXSkvYTtuLnB1c2goaCl9aWYoZS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXtmb3IodmFyIGMsZD0wLHU9MDt1PGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDt1KyspZCs9VXRpbHMubmVnVG9aZXJvKGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3VdKTtmb3IodmFyIGc9MDtnPGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtnKyspYz10aGlzLmZ1bGxBbmdsZSpVdGlscy5uZWdUb1plcm8oZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbZ10pL2QsdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnIucHVzaChjKX10aGlzLmRvbnV0U2l6ZTwwJiYodGhpcy5kb251dFNpemU9MCk7dmFyIGY9ZS5jb25maWcucGxvdE9wdGlvbnMucGllLmN1c3RvbVNjYWxlLHA9ZS5nbG9iYWxzLmdyaWRXaWR0aC8yLHg9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvMixtPXAtZS5nbG9iYWxzLmdyaWRXaWR0aC8yKmYsYj14LWUuZ2xvYmFscy5ncmlkSGVpZ2h0LzIqZjtpZihcImRvbnV0XCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKXt2YXIgdj1pLmRyYXdDaXJjbGUodGhpcy5kb251dFNpemUpO3YuYXR0cih7Y3g6dGhpcy5jZW50ZXJYLGN5OnRoaXMuY2VudGVyWSxmaWxsOmUuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5iYWNrZ3JvdW5kfSksby5hZGQodil9dmFyIHk9dGhpcy5kcmF3QXJjcyhuLHQpO2lmKHRoaXMuc2xpY2VMYWJlbHMuZm9yRWFjaChmdW5jdGlvbih0KXt5LmFkZCh0KX0pLG8uYXR0cih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChtLFwiLCBcIikuY29uY2F0KGItNSxcIikgc2NhbGUoXCIpLmNvbmNhdChmLFwiKVwiKX0pLHMuYXR0cih7XCJkYXRhOmlubmVyVHJhbnNsYXRlWFwiOm0sXCJkYXRhOmlubmVyVHJhbnNsYXRlWVwiOmItMjV9KSxvLmFkZCh5KSxzLmFkZChvKSx0aGlzLmRvbnV0RGF0YUxhYmVscy5zaG93KXt2YXIgdz10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLmRvbnV0RGF0YUxhYmVscyx7aG9sbG93U2l6ZTp0aGlzLmRvbnV0U2l6ZSxjZW50ZXJYOnRoaXMuY2VudGVyWCxjZW50ZXJZOnRoaXMuY2VudGVyWSxvcGFjaXR5OnRoaXMuZG9udXREYXRhTGFiZWxzLnNob3csdHJhbnNsYXRlWDptLHRyYW5zbGF0ZVk6Yn0pO3MuYWRkKHcpfXJldHVybiBzfX0se2tleTpcImRyYXdBcmNzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1uZXcgRmlsdGVycyh0aGlzLmN0eCksYT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLHI9bmV3IEZpbGwodGhpcy5jdHgpLG49YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNsaWNlc1wifSksbz0wLGw9MCxoPTAsYz0wO3RoaXMuc3Ryb2tlV2lkdGg9aS5jb25maWcuc3Ryb2tlLnNob3c/aS5jb25maWcuc3Ryb2tlLndpZHRoOjA7Zm9yKHZhciBkPTA7ZDx0Lmxlbmd0aDtkKyspe3ZhciB1PWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1waWUtc2VyaWVzXCIsc2VyaWVzTmFtZTpVdGlscy5lc2NhcGVTdHJpbmcoaS5nbG9iYWxzLnNlcmllc05hbWVzW2RdKSxyZWw6ZCsxLFwiZGF0YTpyZWFsSW5kZXhcIjpkfSk7bi5hZGQodSksbD1jLGg9KG89aCkrdFtkXSxjPWwrdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnJbZF07dmFyIGc9aC1vLGY9ci5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmQsc2l6ZTppLmdsb2JhbHMucmFkaWFsU2l6ZSx2YWx1ZTplW2RdfSkscD10aGlzLmdldENoYW5nZWRQYXRoKGwsYykseD1hLmRyYXdQYXRoKHtkOnAsc3Ryb2tlOnRoaXMubGluZUNvbG9yQXJyIGluc3RhbmNlb2YgQXJyYXk/dGhpcy5saW5lQ29sb3JBcnJbZF06dGhpcy5saW5lQ29sb3JBcnIsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxmaWxsOmYsZmlsbE9wYWNpdHk6aS5jb25maWcuZmlsbC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXBpZS1hcmVhIGFwZXhjaGFydHMtXCIuY29uY2F0KGkuY29uZmlnLmNoYXJ0LnR5cGUsXCItc2xpY2UtXCIpLmNvbmNhdChkKX0pO2lmKHguYXR0cih7aW5kZXg6MCxqOmR9KSxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBtPWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7cy5kcm9wU2hhZG93KHgsbSxkKX10aGlzLmFkZExpc3RlbmVycyh4LHRoaXMuZG9udXREYXRhTGFiZWxzKSxHcmFwaGljcy5zZXRBdHRycyh4Lm5vZGUse1wiZGF0YTphbmdsZVwiOmcsXCJkYXRhOnN0YXJ0QW5nbGVcIjpvLFwiZGF0YTpzdHJva2VXaWR0aFwiOnRoaXMuc3Ryb2tlV2lkdGgsXCJkYXRhOnZhbHVlXCI6ZVtkXX0pO3ZhciBiPXt4OjAseTowfTtcInBpZVwiPT09aS5jb25maWcuY2hhcnQudHlwZT9iPVV0aWxzLnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSxpLmdsb2JhbHMucmFkaWFsU2l6ZS8xLjI1K2kuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm9mZnNldCxvKyhoLW8pLzIpOlwiZG9udXRcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUmJihiPVV0aWxzLnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSwoaS5nbG9iYWxzLnJhZGlhbFNpemUrdGhpcy5kb251dFNpemUpLzIraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LG8rKGgtbykvMikpLHUuYWRkKHgpO3ZhciB2PTA7aWYoIXRoaXMuaW5pdGlhbEFuaW18fGkuZ2xvYmFscy5yZXNpemVkfHxpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltQmVnaW5BcnIucHVzaCgwKToodj0oaC1vKS90aGlzLmZ1bGxBbmdsZSppLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLHRoaXMuYW5pbUR1cj12K3RoaXMuYW5pbUR1cix0aGlzLmFuaW1CZWdpbkFyci5wdXNoKHRoaXMuYW5pbUR1cikpLHRoaXMuZHluYW1pY0FuaW0mJmkuZ2xvYmFscy5kYXRhQ2hhbmdlZD90aGlzLmFuaW1hdGVQYXRocyh4LHtzaXplOmkuZ2xvYmFscy5yYWRpYWxTaXplLGVuZEFuZ2xlOmgsc3RhcnRBbmdsZTpvLHByZXZTdGFydEFuZ2xlOmwscHJldkVuZEFuZ2xlOmMsYW5pbWF0ZVN0YXJ0aW5nUG9zOiEwLGk6ZCxhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZH0pOnRoaXMuYW5pbWF0ZVBhdGhzKHgse3NpemU6aS5nbG9iYWxzLnJhZGlhbFNpemUsZW5kQW5nbGU6aCxzdGFydEFuZ2xlOm8saTpkLHRvdGFsSXRlbXM6dC5sZW5ndGgtMSxhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOnZ9KSxpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZXhwYW5kT25DbGljayYmeC5jbGljayh0aGlzLnBpZUNsaWNrZWQuYmluZCh0aGlzLGQpKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQpe3ZhciB5PWIueCx3PWIueSxrPTEwMCooaC1vKS8zNjArXCIlXCI7aWYoMCE9PWcmJmkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm1pbkFuZ2xlVG9TaG93TGFiZWw8dFtkXSl7dmFyIEE9aS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXI7dm9pZCAwIT09QSYmKGs9QShpLmdsb2JhbHMuc2VyaWVzUGVyY2VudFtkXVswXSx7c2VyaWVzSW5kZXg6ZCx3Oml9KSk7dmFyIFM9aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW2RdLEM9YS5kcmF3VGV4dCh7eDp5LHk6dyx0ZXh0OmssdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksZm9yZUNvbG9yOlN9KTtpZihpLmNvbmZpZy5kYXRhTGFiZWxzLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIEw9aS5jb25maWcuZGF0YUxhYmVscy5kcm9wU2hhZG93O25ldyBGaWx0ZXJzKHRoaXMuY3R4KS5kcm9wU2hhZG93KEMsTCl9Qy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXBpZS1sYWJlbFwiKSxpLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGUmJiExPT09aS5nbG9iYWxzLnJlc2l6ZWQmJihDLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtcGllLWxhYmVsLWRlbGF5XCIpLEMubm9kZS5zdHlsZS5hbmltYXRpb25EZWxheT1pLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLzk0MCtcInNcIiksdGhpcy5zbGljZUxhYmVscy5wdXNoKEMpfX19cmV0dXJuIG59fSx7a2V5OlwiYWRkTGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyx0Lm5vZGUsZSkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGkucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0aGlzLnJldmVydERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsdC5ub2RlLGUpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5wcmludERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsdC5ub2RlLGUpKX19LHtrZXk6XCJhbmltYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPWUuZW5kQW5nbGUtZS5zdGFydEFuZ2xlLGE9cyxyPWUuc3RhcnRBbmdsZSxuPWUuc3RhcnRBbmdsZTt2b2lkIDAhPT1lLnByZXZTdGFydEFuZ2xlJiZ2b2lkIDAhPT1lLnByZXZFbmRBbmdsZSYmKHI9ZS5wcmV2RW5kQW5nbGUsYT1lLnByZXZFbmRBbmdsZS1lLnByZXZTdGFydEFuZ2xlKSxlLmk9PT1pLmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEmJihzK24+dGhpcy5mdWxsQW5nbGU/ZS5lbmRBbmdsZT1lLmVuZEFuZ2xlLShzK24pOnMrbjx0aGlzLmZ1bGxBbmdsZSYmKGUuZW5kQW5nbGU9ZS5lbmRBbmdsZSsodGhpcy5mdWxsQW5nbGUtKHMrbikpKSkscz09PXRoaXMuZnVsbEFuZ2xlJiYocz10aGlzLmZ1bGxBbmdsZS0uMDEpLHRoaXMuYW5pbWF0ZUFyYyh0LHIsbixzLGEsZSl9fSx7a2V5OlwiYW5pbWF0ZUFyY1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSxyKXt2YXIgbixvPXRoaXMsbD10aGlzLncsaD1uZXcgQW5pbWF0aW9ucyh0aGlzLmN0eCksYz1yLnNpemU7KGlzTmFOKGUpfHxpc05hTihhKSkmJihlPWksYT1zLHIuZHVyPTApO3ZhciBkPXMsdT1pLGc9ZS1pO2wuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmci5zaG91bGRTZXRQcmV2UGF0aHMmJihuPW8uZ2V0UGllUGF0aCh7bWU6byxzdGFydEFuZ2xlOnUsYW5nbGU6YSxzaXplOmN9KSx0LmF0dHIoe2Q6bn0pKSwwIT09ci5kdXI/dC5hbmltYXRlKHIuZHVyLGwuZ2xvYmFscy5lYXNpbmcsci5hbmltQmVnaW5BcnJbci5pXSkuYWZ0ZXJBbGwoZnVuY3Rpb24oKXtcInBpZVwiIT09bC5jb25maWcuY2hhcnQudHlwZSYmXCJkb251dFwiIT09bC5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5hbmltYXRlKDMwMCkuYXR0cih7XCJzdHJva2Utd2lkdGhcIjpsLmNvbmZpZy5zdHJva2Uud2lkdGh9KSxyLmk9PT1sLmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEmJmguYW5pbWF0aW9uQ29tcGxldGVkKCl9KS5kdXJpbmcoZnVuY3Rpb24obCl7ZD1nKyhzLWcpKmwsci5hbmltYXRlU3RhcnRpbmdQb3MmJihkPWErKHMtYSkqbCx1PWUtYSsoaS0oZS1hKSkqbCksbj1vLmdldFBpZVBhdGgoe21lOm8sc3RhcnRBbmdsZTp1LGFuZ2xlOmQsc2l6ZTpjfSksdC5ub2RlLnNldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIixuKSx0LmF0dHIoe2Q6bn0pfSk6KG49by5nZXRQaWVQYXRoKHttZTpvLHN0YXJ0QW5nbGU6dSxhbmdsZTpzLHNpemU6Y30pLHIuaXNUcmFja3x8KGwuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCksdC5ub2RlLnNldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIixuKSx0LmF0dHIoe2Q6bn0pKX19LHtrZXk6XCJwaWVDbGlja2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLncscz10aGlzLncuZ2xvYmFscy5yYWRpYWxTaXplKzQsYT1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChpLmNvbmZpZy5jaGFydC50eXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdCh0KSkubWVtYmVyc1swXSxyPWEuYXR0cihcImRcIik7aWYoXCJ0cnVlXCIhPT1hLmF0dHIoXCJkYXRhOnBpZUNsaWNrZWRcIikpe3ZhciBuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1waWUtYXJlYVwiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG4sZnVuY3Rpb24odCl7dC5zZXRBdHRyaWJ1dGUoXCJkYXRhOnBpZUNsaWNrZWRcIixcImZhbHNlXCIpO3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpwYXRoT3JpZ1wiKTt0LnNldEF0dHJpYnV0ZShcImRcIixlKX0pLGEuYXR0cihcImRhdGE6cGllQ2xpY2tlZFwiLFwidHJ1ZVwiKTt2YXIgbz1wYXJzZUludChhLmF0dHIoXCJkYXRhOnN0YXJ0QW5nbGVcIikpLGw9cGFyc2VJbnQoYS5hdHRyKFwiZGF0YTphbmdsZVwiKSk7ZT10aGlzLmdldFBpZVBhdGgoe21lOnRoaXMsc3RhcnRBbmdsZTpvLGFuZ2xlOmwsc2l6ZTpzfSksMzYwIT09bCYmYS5wbG90KGUpLmFuaW1hdGUoMSkucGxvdChyKS5hbmltYXRlKDEwMCkucGxvdChlKX1lbHNle2EuYXR0cih7XCJkYXRhOnBpZUNsaWNrZWRcIjpcImZhbHNlXCJ9KSx0aGlzLnJldmVydERhdGFMYWJlbHNJbm5lcihhLm5vZGUsdGhpcy5kb251dERhdGFMYWJlbHMpO3ZhciBoPWEuYXR0cihcImRhdGE6cGF0aE9yaWdcIik7YS5hdHRyKHtkOmh9KX19fSx7a2V5OlwiZ2V0Q2hhbmdlZFBhdGhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPVwiXCI7cmV0dXJuIHRoaXMuZHluYW1pY0FuaW0mJnRoaXMudy5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoaT10aGlzLmdldFBpZVBhdGgoe21lOnRoaXMsc3RhcnRBbmdsZTp0LGFuZ2xlOmUtdCxzaXplOnRoaXMuc2l6ZX0pKSxpfX0se2tleTpcImdldFBpZVBhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lm1lLGk9dC5zdGFydEFuZ2xlLHM9dC5hbmdsZSxhPXQuc2l6ZSxyPXRoaXMudyxuPWksbz1NYXRoLlBJKihuLTkwKS8xODAsbD1zK2k7TWF0aC5jZWlsKGwpPj0zNjAmJihsPTM1OS45OSk7dmFyIGg9TWF0aC5QSSoobC05MCkvMTgwLGM9ZS5jZW50ZXJYK2EqTWF0aC5jb3MobyksZD1lLmNlbnRlclkrYSpNYXRoLnNpbihvKSx1PWUuY2VudGVyWCthKk1hdGguY29zKGgpLGc9ZS5jZW50ZXJZK2EqTWF0aC5zaW4oaCksZj1VdGlscy5wb2xhclRvQ2FydGVzaWFuKGUuY2VudGVyWCxlLmNlbnRlclksZS5kb251dFNpemUsbCkscD1VdGlscy5wb2xhclRvQ2FydGVzaWFuKGUuY2VudGVyWCxlLmNlbnRlclksZS5kb251dFNpemUsbikseD1zPjE4MD8xOjA7cmV0dXJuXCJkb251dFwiPT09ci5jb25maWcuY2hhcnQudHlwZT9bXCJNXCIsYyxkLFwiQVwiLGEsYSwwLHgsMSx1LGcsXCJMXCIsZi54LGYueSxcIkFcIixlLmRvbnV0U2l6ZSxlLmRvbnV0U2l6ZSwwLHgsMCxwLngscC55LFwiTFwiLGMsZCxcInpcIl0uam9pbihcIiBcIik6XCJwaWVcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGU/W1wiTVwiLGMsZCxcIkFcIixhLGEsMCx4LDEsdSxnLFwiTFwiLGUuY2VudGVyWCxlLmNlbnRlclksXCJMXCIsYyxkXS5qb2luKFwiIFwiKTpbXCJNXCIsYyxkLFwiQVwiLGEsYSwwLHgsMSx1LGddLmpvaW4oXCIgXCIpfX0se2tleTpcInJlbmRlcklubmVyRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxhPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLnRyYW5zbGF0ZVg/ZS50cmFuc2xhdGVYOjAsXCIsIFwiKS5jb25jYXQoZS50cmFuc2xhdGVZP2UudHJhbnNsYXRlWTowLFwiKVwiKX0pLHI9dC50b3RhbC5zaG93O2Eubm9kZS5zdHlsZS5vcGFjaXR5PWUub3BhY2l0eTt2YXIgbixvLGw9ZS5jZW50ZXJYLGg9ZS5jZW50ZXJZO249dm9pZCAwPT09dC5uYW1lLmNvbG9yP2kuZ2xvYmFscy5jb2xvcnNbMF06dC5uYW1lLmNvbG9yLG89dm9pZCAwPT09dC52YWx1ZS5jb2xvcj9pLmNvbmZpZy5jaGFydC5mb3JlQ29sb3I6dC52YWx1ZS5jb2xvcjt2YXIgYz10LnZhbHVlLmZvcm1hdHRlcixkPVwiXCIsdT1cIlwiO2lmKHI/KG49dC50b3RhbC5jb2xvcix1PXQudG90YWwubGFiZWwsZD10LnRvdGFsLmZvcm1hdHRlcihpKSk6MT09PWkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYoZD1jKGkuZ2xvYmFscy5zZXJpZXNbMF0saSksdT1pLmdsb2JhbHMuc2VyaWVzTmFtZXNbMF0pLHQubmFtZS5zaG93KXt2YXIgZz1zLmRyYXdUZXh0KHt4OmwseTpoK3BhcnNlSW50KHQubmFtZS5vZmZzZXRZKSx0ZXh0OnUsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpuLGZvbnRTaXplOnQubmFtZS5mb250U2l6ZSxmb250RmFtaWx5OnQubmFtZS5mb250RmFtaWx5fSk7Zy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbFwiKSxhLmFkZChnKX1pZih0LnZhbHVlLnNob3cpe3ZhciBmPXQubmFtZS5zaG93P3BhcnNlSW50KHQudmFsdWUub2Zmc2V0WSkrMTY6dC52YWx1ZS5vZmZzZXRZLHA9cy5kcmF3VGV4dCh7eDpsLHk6aCtmLHRleHQ6ZCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOm8sZm9udFNpemU6dC52YWx1ZS5mb250U2l6ZSxmb250RmFtaWx5OnQudmFsdWUuZm9udEZhbWlseX0pO3Aubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWVcIiksYS5hZGQocCl9cmV0dXJuIGF9fSx7a2V5OlwicHJpbnRJbm5lckxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhLHI9dGhpcy53O3M/YT12b2lkIDA9PT10Lm5hbWUuY29sb3I/ci5nbG9iYWxzLmNvbG9yc1twYXJzZUludChzLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpKS0xXTp0Lm5hbWUuY29sb3I6ci5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmdC50b3RhbC5zaG93JiYoYT10LnRvdGFsLmNvbG9yKTt2YXIgbj1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsXCIpLG89ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZVwiKTtpPSgwLHQudmFsdWUuZm9ybWF0dGVyKShpLHIpLHN8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQudG90YWwuZm9ybWF0dGVyfHwoaT10LnRvdGFsLmZvcm1hdHRlcihyKSksbnVsbCE9PW4mJihuLnRleHRDb250ZW50PWUpLG51bGwhPT1vJiYoby50ZXh0Q29udGVudD1pKSxudWxsIT09biYmKG4uc3R5bGUuZmlsbD1hKX19LHtrZXk6XCJwcmludERhdGFMYWJlbHNJbm5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnZhbHVlXCIpLGE9aS5nbG9iYWxzLnNlcmllc05hbWVzW3BhcnNlSW50KHQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIikpLTFdO2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJnRoaXMucHJpbnRJbm5lckxhYmVscyhlLGEscyx0KTt2YXIgcj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiKTtudWxsIT09ciYmKHIuc3R5bGUub3BhY2l0eT0xKX19LHtrZXk6XCJyZXZlcnREYXRhTGFiZWxzSW5uZXJcIix2YWx1ZTpmdW5jdGlvbihlLGkscyl7dmFyIGE9dGhpcyxyPXRoaXMudyxuPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIpO2lmKGkudG90YWwuc2hvdyYmci5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSl7bmV3IHQodGhpcy5jdHgpLnByaW50SW5uZXJMYWJlbHMoaSxpLnRvdGFsLmxhYmVsLGkudG90YWwuZm9ybWF0dGVyKHIpKX1lbHNle3ZhciBvPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1waWUtYXJlYVwiKSxsPSExO2lmKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobyxmdW5jdGlvbih0KXtcInRydWVcIj09PXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpwaWVDbGlja2VkXCIpJiYobD0hMCxhLnByaW50RGF0YUxhYmVsc0lubmVyKHQsaSkpfSksIWwpaWYoci5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGgmJnIuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpaWYoci5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGg+MCl7dmFyIGg9ci5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXSxjPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoci5jb25maWcuY2hhcnQudHlwZS50b0xvd2VyQ2FzZSgpLFwiLXNsaWNlLVwiKS5jb25jYXQoaCkpO3RoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIoYyxpKX1lbHNlIG4mJnIuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoJiYwPT09ci5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGgmJihuLnN0eWxlLm9wYWNpdHk9MCk7ZWxzZSBuJiZyLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYobi5zdHlsZS5vcGFjaXR5PTApfX19XSksdH0oKSxSYWRhcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuY2hhcnRUeXBlPXRoaXMudy5jb25maWcuY2hhcnQudHlwZSx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCx0aGlzLmFuaW1EdXI9MDt2YXIgaT10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLHRoaXMubGluZUNvbG9yQXJyPXZvaWQgMCE9PWkuZ2xvYmFscy5zdHJva2UuY29sb3JzP2kuZ2xvYmFscy5zdHJva2UuY29sb3JzOmkuZ2xvYmFscy5jb2xvcnMsdGhpcy5kZWZhdWx0U2l6ZT1pLmdsb2JhbHMuc3ZnSGVpZ2h0PGkuZ2xvYmFscy5zdmdXaWR0aD9pLmdsb2JhbHMuc3ZnSGVpZ2h0LTM1OmkuZ2xvYmFscy5ncmlkV2lkdGgsdGhpcy5tYXhWYWx1ZT10aGlzLncuZ2xvYmFscy5tYXhZLHRoaXMucG9seWdvbnM9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMsdGhpcy5tYXhMYWJlbFdpZHRoPTIwO3ZhciBzPWkuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUubGVuZ3RoLXQubGVuZ3RofSlbMF0sYT10aGlzLmdyYXBoaWNzLmdldFRleHRSZWN0cyhzLGkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUpO3RoaXMuc2l6ZT10aGlzLmRlZmF1bHRTaXplLzIuMS1pLmNvbmZpZy5zdHJva2Uud2lkdGgtaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyLWEud2lkdGgvMS43NSx2b2lkIDAhPT1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5zaXplJiYodGhpcy5zaXplPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUpLHRoaXMuZGF0YVJhZGl1c09mUGVyY2VudD1bXSx0aGlzLmRhdGFSYWRpdXM9W10sdGhpcy5hbmdsZUFycj1bXSx0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3M9W119cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncscz1uZXcgRmlsbCh0aGlzLmN0eCksYT1bXTt0Lmxlbmd0aCYmKHRoaXMuZGF0YVBvaW50c0xlbj10W2kuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgpLHRoaXMuZGlzQW5nbGU9MipNYXRoLlBJL3RoaXMuZGF0YVBvaW50c0xlbjt2YXIgcj1pLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbj1pLmdsb2JhbHMuZ3JpZEhlaWdodC8yLG89dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGFyLXNlcmllc1wiLFwiZGF0YTppbm5lclRyYW5zbGF0ZVhcIjpyLFwiZGF0YTppbm5lclRyYW5zbGF0ZVlcIjpuLTI1LHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQocnx8MCxcIiwgXCIpLmNvbmNhdChufHwwLFwiKVwiKX0pLGw9W10saD1udWxsO2lmKHRoaXMueWF4aXNMYWJlbHM9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzXCJ9KSx0LmZvckVhY2goZnVuY3Rpb24odCxyKXt2YXIgbj1lLmdyYXBoaWNzLmdyb3VwKCkuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6VXRpbHMuZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1tyXSkscmVsOnIrMSxcImRhdGE6cmVhbEluZGV4XCI6cn0pO2UuZGF0YVJhZGl1c09mUGVyY2VudFtyXT1bXSxlLmRhdGFSYWRpdXNbcl09W10sZS5hbmdsZUFycltyXT1bXSx0LmZvckVhY2goZnVuY3Rpb24odCxpKXtlLmRhdGFSYWRpdXNPZlBlcmNlbnRbcl1baV09dC9lLm1heFZhbHVlLGUuZGF0YVJhZGl1c1tyXVtpXT1lLmRhdGFSYWRpdXNPZlBlcmNlbnRbcl1baV0qZS5zaXplLGUuYW5nbGVBcnJbcl1baV09aSplLmRpc0FuZ2xlfSksbD1lLmdldERhdGFQb2ludHNQb3MoZS5kYXRhUmFkaXVzW3JdLGUuYW5nbGVBcnJbcl0pO3ZhciBvPWUuY3JlYXRlUGF0aHMobCx7eDowLHk6MH0pO2g9ZS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgaGlkZGVuXCJ9KSxpLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOmgubm9kZSxpbmRleDpyfSk7dmFyIGM9e2k6cixyZWFsSW5kZXg6cixhbmltYXRpb25EZWxheTpyLGluaXRpYWxTcGVlZDppLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDppLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1yYWRhclwiLHNob3VsZENsaXBUb0dyaWQ6ITEsYmluZEV2ZW50c09uUGF0aHM6ITEsc3Ryb2tlOmkuZ2xvYmFscy5zdHJva2UuY29sb3JzW3JdLHN0cm9rZUxpbmVDYXA6aS5jb25maWcuc3Ryb2tlLmxpbmVDYXB9LGQ9bnVsbDtpLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKGQ9ZS5nZXRQYXRoRnJvbShyKSk7Zm9yKHZhciB1PTA7dTxvLmxpbmVQYXRoc1RvLmxlbmd0aDt1Kyspe3ZhciBnPWUuZ3JhcGhpY3MucmVuZGVyUGF0aHMoX29iamVjdFNwcmVhZCh7fSxjLHtwYXRoRnJvbTpudWxsPT09ZD9vLmxpbmVQYXRoc0Zyb21bdV06ZCxwYXRoVG86by5saW5lUGF0aHNUb1t1XSxzdHJva2VXaWR0aDpBcnJheS5pc0FycmF5KGkuY29uZmlnLnN0cm9rZS53aWR0aCk/aS5jb25maWcuc3Ryb2tlLndpZHRoW3JdOmkuY29uZmlnLnN0cm9rZS53aWR0aCxmaWxsOlwibm9uZVwiLGRyYXdTaGFkb3c6ITF9KSk7bi5hZGQoZyk7dmFyIGY9cy5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnJ9KSxwPWUuZ3JhcGhpY3MucmVuZGVyUGF0aHMoX29iamVjdFNwcmVhZCh7fSxjLHtwYXRoRnJvbTpudWxsPT09ZD9vLmFyZWFQYXRoc0Zyb21bdV06ZCxwYXRoVG86by5hcmVhUGF0aHNUb1t1XSxzdHJva2VXaWR0aDowLGZpbGw6ZixkcmF3U2hhZG93OiExfSkpO2lmKGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHg9bmV3IEZpbHRlcnMoZS5jdHgpLG09aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzt4LmRyb3BTaGFkb3cocCxPYmplY3QuYXNzaWduKHt9LG0se25vVXNlclNwYWNlT25Vc2U6ITB9KSxyKX1uLmFkZChwKX10LmZvckVhY2goZnVuY3Rpb24odCxpKXt2YXIgcz1uZXcgTWFya2VycyhlLmN0eCkuZ2V0TWFya2VyQ29uZmlnKFwiYXBleGNoYXJ0cy1tYXJrZXJcIixyLGkpLGE9ZS5ncmFwaGljcy5kcmF3TWFya2VyKGxbaV0ueCxsW2ldLnkscyk7YS5hdHRyKFwicmVsXCIsaSksYS5hdHRyKFwialwiLGkpLGEuYXR0cihcImluZGV4XCIsciksYS5ub2RlLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIixzLnBTaXplKTt2YXIgbz1lLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pO28mJm8uYWRkKGEpLGguYWRkKG8pLG4uYWRkKGgpfSksYS5wdXNoKG4pfSksdGhpcy5kcmF3UG9seWdvbnMoe3BhcmVudDpvfSksaS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkKXt2YXIgYz10aGlzLmRyYXdMYWJlbHMoKTtvLmFkZChjKX1yZXR1cm4gby5hZGQodGhpcy55YXhpc0xhYmVscyksYS5mb3JFYWNoKGZ1bmN0aW9uKHQpe28uYWRkKHQpfSksb319LHtrZXk6XCJkcmF3UG9seWdvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcyxpPXRoaXMudyxzPXQucGFyZW50LGE9aS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJldmVyc2UoKSxyPWEubGVuZ3RoLG49W10sbz10aGlzLnNpemUvKHItMSksbD0wO2w8cjtsKyspbltsXT1vKmw7bi5yZXZlcnNlKCk7dmFyIGg9W10sYz1bXTtuLmZvckVhY2goZnVuY3Rpb24odCxpKXt2YXIgcz1lLmdldFBvbHlnb25Qb3ModCksYT1cIlwiO3MuZm9yRWFjaChmdW5jdGlvbih0LHMpe2lmKDA9PT1pKXt2YXIgcj1lLmdyYXBoaWNzLmRyYXdMaW5lKHQueCx0LnksMCwwLEFycmF5LmlzQXJyYXkoZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnMpP2UucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzW3NdOmUucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzKTtjLnB1c2gocil9MD09PXMmJmUueWF4aXNMYWJlbHNUZXh0c1Bvcy5wdXNoKHt4OnQueCx5OnQueX0pLGErPXQueCtcIixcIit0LnkrXCIgXCJ9KSxoLnB1c2goYSl9KSxoLmZvckVhY2goZnVuY3Rpb24odCxhKXt2YXIgcj1lLnBvbHlnb25zLnN0cm9rZUNvbG9ycyxuPWUuZ3JhcGhpY3MuZHJhd1BvbHlnb24odCxBcnJheS5pc0FycmF5KHIpP3JbYV06cixpLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9yc1thXSk7cy5hZGQobil9KSxjLmZvckVhY2goZnVuY3Rpb24odCl7cy5hZGQodCl9KSxpLmNvbmZpZy55YXhpc1swXS5zaG93JiZ0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3MuZm9yRWFjaChmdW5jdGlvbih0LGkpe3ZhciBzPWUuZHJhd1lBeGlzVGV4dCh0LngsdC55LGksYVtpXSk7ZS55YXhpc0xhYmVscy5hZGQocyl9KX19LHtrZXk6XCJkcmF3WUF4aXNUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7dmFyIGE9dGhpcy53LHI9YS5jb25maWcueWF4aXNbMF0sbj1hLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTtyZXR1cm4gdGhpcy5ncmFwaGljcy5kcmF3VGV4dCh7eDp0K3IubGFiZWxzLm9mZnNldFgseTplK3IubGFiZWxzLm9mZnNldFksdGV4dDpuKHMsaSksdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOnIubGFiZWxzLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6ci5sYWJlbHMuc3R5bGUuY29sb3J9KX19LHtrZXk6XCJkcmF3TGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9XCJtaWRkbGVcIixzPWUuY29uZmlnLmRhdGFMYWJlbHMsYT10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wifSkscj10aGlzLmdldFBvbHlnb25Qb3ModGhpcy5zaXplKSxuPTAsbz0wO3JldHVybiBlLmdsb2JhbHMubGFiZWxzLmZvckVhY2goZnVuY3Rpb24obCxoKXt2YXIgYz1zLmZvcm1hdHRlcixkPW5ldyBEYXRhTGFiZWxzKHQuY3R4KTtpZihyW2hdKXtuPXJbaF0ueCxvPXJbaF0ueSxNYXRoLmFicyhyW2hdLngpPj0xMD9yW2hdLng+MD8oaT1cInN0YXJ0XCIsbis9MTApOnJbaF0ueDwwJiYoaT1cImVuZFwiLG4tPTEwKTppPVwibWlkZGxlXCIsTWF0aC5hYnMocltoXS55KT49dC5zaXplLTEwJiYocltoXS55PDA/by09MTA6cltoXS55PjAmJihvKz0xMCkpO3ZhciB1PWMobCx7c2VyaWVzSW5kZXg6LTEsZGF0YVBvaW50SW5kZXg6aCx3OmV9KTtkLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpuLHk6byx0ZXh0OnUsdGV4dEFuY2hvcjppLGk6aCxqOmgscGFyZW50OmEsZGF0YUxhYmVsc0NvbmZpZzpzLG9mZnNldENvcnJlY3Rpb246ITF9KX19KSxhfX0se2tleTpcImNyZWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLHM9W10sYT1bXSxyPVtdLG49W107aWYodC5sZW5ndGgpe2E9W3RoaXMuZ3JhcGhpY3MubW92ZShlLngsZS55KV0sbj1bdGhpcy5ncmFwaGljcy5tb3ZlKGUueCxlLnkpXTt2YXIgbz10aGlzLmdyYXBoaWNzLm1vdmUodFswXS54LHRbMF0ueSksbD10aGlzLmdyYXBoaWNzLm1vdmUodFswXS54LHRbMF0ueSk7dC5mb3JFYWNoKGZ1bmN0aW9uKGUscyl7bys9aS5ncmFwaGljcy5saW5lKGUueCxlLnkpLGwrPWkuZ3JhcGhpY3MubGluZShlLngsZS55KSxzPT09dC5sZW5ndGgtMSYmKG8rPVwiWlwiLGwrPVwiWlwiKX0pLHMucHVzaChvKSxyLnB1c2gobCl9cmV0dXJue2xpbmVQYXRoc0Zyb206YSxsaW5lUGF0aHNUbzpzLGFyZWFQYXRoc0Zyb206bixhcmVhUGF0aHNUbzpyfX19LHtrZXk6XCJnZXRQYXRoRnJvbVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT1udWxsLHM9MDtzPGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtzKyspe3ZhciBhPWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdO2EucGF0aHMubGVuZ3RoPjAmJnBhcnNlSW50KGEucmVhbEluZGV4KT09PXBhcnNlSW50KHQpJiZ2b2lkIDAhPT1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1swXSYmKGk9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc10ucGF0aHNbMF0uZCl9cmV0dXJuIGl9fSx7a2V5OlwiZ2V0RGF0YVBvaW50c1Bvc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnRoaXMuZGF0YVBvaW50c0xlbjt0PXR8fFtdLGU9ZXx8W107Zm9yKHZhciBzPVtdLGE9MDthPGk7YSsrKXt2YXIgcj17fTtyLng9dFthXSpNYXRoLnNpbihlW2FdKSxyLnk9LXRbYV0qTWF0aC5jb3MoZVthXSkscy5wdXNoKHIpfXJldHVybiBzfX0se2tleTpcImdldFBvbHlnb25Qb3NcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT0yKk1hdGguUEkvdGhpcy5kYXRhUG9pbnRzTGVuLHM9MDtzPHRoaXMuZGF0YVBvaW50c0xlbjtzKyspe3ZhciBhPXt9O2EueD10Kk1hdGguc2luKHMqaSksYS55PS10Kk1hdGguY29zKHMqaSksZS5wdXNoKGEpfXJldHVybiBlfX1dKSx0fSgpLFJhZGlhbD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3ZhciBpO19jbGFzc0NhbGxDaGVjayh0aGlzLGUpLChpPV9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsX2dldFByb3RvdHlwZU9mKGUpLmNhbGwodGhpcyx0KSkpLmN0eD10LGkudz10LncsaS5hbmltQmVnaW5BcnI9WzBdLGkuYW5pbUR1cj0wO3ZhciBzPWkudztyZXR1cm4gaS5zdGFydEFuZ2xlPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlLGkuZW5kQW5nbGU9cy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLGkudHJhY2tTdGFydEFuZ2xlPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdGFydEFuZ2xlLGkudHJhY2tFbmRBbmdsZT1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suZW5kQW5nbGUsaS5yYWRpYWxEYXRhTGFiZWxzPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5kYXRhTGFiZWxzLGkudHJhY2tTdGFydEFuZ2xlfHwoaS50cmFja1N0YXJ0QW5nbGU9aS5zdGFydEFuZ2xlKSxpLnRyYWNrRW5kQW5nbGV8fChpLnRyYWNrRW5kQW5nbGU9aS5lbmRBbmdsZSksMzYwPT09aS5lbmRBbmdsZSYmKGkuZW5kQW5nbGU9MzU5Ljk5KSxpLmZ1bGxBbmdsZT0zNjAtcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlLGkubWFyZ2luPXBhcnNlSW50KHMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5tYXJnaW4pLGl9cmV0dXJuIF9pbmhlcml0cyhlLFBpZSksX2NyZWF0ZUNsYXNzKGUsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxzPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXJcIn0pO2lmKGUuZ2xvYmFscy5ub0RhdGEpcmV0dXJuIHM7dmFyIGE9aS5ncm91cCgpLHI9dGhpcy5kZWZhdWx0U2l6ZS8yLG49ZS5nbG9iYWxzLmdyaWRXaWR0aC8yLG89dGhpcy5kZWZhdWx0U2l6ZS8yLjA1LWUuY29uZmlnLnN0cm9rZS53aWR0aC1lLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmJsdXI7dm9pZCAwIT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnNpemUmJihvPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zaXplKTt2YXIgbD1lLmdsb2JhbHMuZmlsbC5jb2xvcnM7aWYoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnNob3cpe3ZhciBoPXRoaXMuZHJhd1RyYWNrcyh7c2l6ZTpvLGNlbnRlclg6bixjZW50ZXJZOnIsY29sb3JBcnI6bCxzZXJpZXM6dH0pO2EuYWRkKGgpfXZhciBjPXRoaXMuZHJhd0FyY3Moe3NpemU6byxjZW50ZXJYOm4sY2VudGVyWTpyLGNvbG9yQXJyOmwsc2VyaWVzOnR9KSxkPTM2MDtyZXR1cm4gZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGU8MCYmKGQ9TWF0aC5hYnMoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlKSksZS5nbG9iYWxzLnJhZGlhbFNpemU9by1vLygzNjAvKDM2MC1kKSkrMTAsYS5hZGQoYy5nKSxcImZyb250XCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnBvc2l0aW9uJiYoYy5nLmFkZChjLmVsSG9sbG93KSxjLmRhdGFMYWJlbHMmJmMuZy5hZGQoYy5kYXRhTGFiZWxzKSkscy5hZGQoYSksc319LHtrZXk6XCJkcmF3VHJhY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxzPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy10cmFja3NcIn0pLGE9bmV3IEZpbHRlcnModGhpcy5jdHgpLHI9bmV3IEZpbGwodGhpcy5jdHgpLG49dGhpcy5nZXRTdHJva2VXaWR0aCh0KTt0LnNpemU9dC5zaXplLW4vMjtmb3IodmFyIG89MDtvPHQuc2VyaWVzLmxlbmd0aDtvKyspe3ZhciBsPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXItdHJhY2sgYXBleGNoYXJ0cy10cmFja1wifSk7cy5hZGQobCksbC5hdHRyKHtyZWw6bysxfSksdC5zaXplPXQuc2l6ZS1uLXRoaXMubWFyZ2luO3ZhciBoPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjayxjPXIuZmlsbFBhdGgoe3Nlcmllc051bWJlcjowLHNpemU6dC5zaXplLGZpbGxDb2xvcnM6QXJyYXkuaXNBcnJheShoLmJhY2tncm91bmQpP2guYmFja2dyb3VuZFtvXTpoLmJhY2tncm91bmQsc29saWQ6ITB9KSxkPXRoaXMudHJhY2tTdGFydEFuZ2xlLHU9dGhpcy50cmFja0VuZEFuZ2xlO01hdGguYWJzKHUpK01hdGguYWJzKGQpPj0zNjAmJih1PTM2MC1NYXRoLmFicyh0aGlzLnN0YXJ0QW5nbGUpLS4xKTt2YXIgZz1pLmRyYXdQYXRoKHtkOlwiXCIsc3Ryb2tlOmMsc3Ryb2tlV2lkdGg6bipwYXJzZUludChoLnN0cm9rZVdpZHRoKS8xMDAsZmlsbDpcIm5vbmVcIixzdHJva2VPcGFjaXR5Omgub3BhY2l0eSxjbGFzc2VzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXItYXJlYVwifSk7aWYoaC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBmPWguZHJvcFNoYWRvdzthLmRyb3BTaGFkb3coZyxmKX1sLmFkZChnKSxnLmF0dHIoXCJpZFwiLFwiYXBleGNoYXJ0cy1yYWRpYWxiYXJUcmFjay1cIitvKSx0aGlzLmFuaW1hdGVQYXRocyhnLHtjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxlbmRBbmdsZTp1LHN0YXJ0QW5nbGU6ZCxzaXplOnQuc2l6ZSxpOm8sdG90YWxJdGVtczoyLGFuaW1CZWdpbkFycjowLGR1cjowLGlzVHJhY2s6ITAsZWFzaW5nOmUuZ2xvYmFscy5lYXNpbmd9KX1yZXR1cm4gc319LHtrZXk6XCJkcmF3QXJjc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBHcmFwaGljcyh0aGlzLmN0eCkscz1uZXcgRmlsbCh0aGlzLmN0eCksYT1uZXcgRmlsdGVycyh0aGlzLmN0eCkscj1pLmdyb3VwKCksbj10aGlzLmdldFN0cm9rZVdpZHRoKHQpO3Quc2l6ZT10LnNpemUtbi8yO3ZhciBvPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuYmFja2dyb3VuZCxsPXQuc2l6ZS1uKnQuc2VyaWVzLmxlbmd0aC10aGlzLm1hcmdpbip0LnNlcmllcy5sZW5ndGgtbipwYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suc3Ryb2tlV2lkdGgpLzEwMC8yLGg9bC1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93Lm1hcmdpbjt2b2lkIDAhPT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlJiYobz10aGlzLmRyYXdIb2xsb3dJbWFnZSh0LHIsbCxvKSk7dmFyIGM9dGhpcy5kcmF3SG9sbG93KHtzaXplOmgsY2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksZmlsbDpvfSk7aWYoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBkPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuZHJvcFNoYWRvdzthLmRyb3BTaGFkb3coYyxkKX12YXIgdT0xOyF0aGlzLnJhZGlhbERhdGFMYWJlbHMudG90YWwuc2hvdyYmZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmKHU9MCk7dmFyIGc9bnVsbDt0aGlzLnJhZGlhbERhdGFMYWJlbHMuc2hvdyYmKGc9dGhpcy5yZW5kZXJJbm5lckRhdGFMYWJlbHModGhpcy5yYWRpYWxEYXRhTGFiZWxzLHtob2xsb3dTaXplOmwsY2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksb3BhY2l0eTp1fSkpLFwiYmFja1wiPT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbiYmKHIuYWRkKGMpLGcmJnIuYWRkKGcpKTt2YXIgZj0hMTtlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaW52ZXJzZU9yZGVyJiYoZj0hMCk7Zm9yKHZhciBwPWY/dC5zZXJpZXMubGVuZ3RoLTE6MDtmP3A+PTA6cDx0LnNlcmllcy5sZW5ndGg7Zj9wLS06cCsrKXt2YXIgeD1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtcmFkaWFsLXNlcmllc1wiLHNlcmllc05hbWU6VXRpbHMuZXNjYXBlU3RyaW5nKGUuZ2xvYmFscy5zZXJpZXNOYW1lc1twXSl9KTtyLmFkZCh4KSx4LmF0dHIoe3JlbDpwKzEsXCJkYXRhOnJlYWxJbmRleFwiOnB9KSx0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1Nlcmllcyh4LHApLHQuc2l6ZT10LnNpemUtbi10aGlzLm1hcmdpbjt2YXIgbT1zLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6cCxzaXplOnQuc2l6ZSx2YWx1ZTp0LnNlcmllc1twXX0pLGI9dGhpcy5zdGFydEFuZ2xlLHY9dm9pZCAwLHk9TWF0aC5hYnMoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlKSx3PVV0aWxzLm5lZ1RvWmVybyh0LnNlcmllc1twXT4xMDA/MTAwOnQuc2VyaWVzW3BdKS8xMDAsaz1NYXRoLnJvdW5kKHkqdykrdGhpcy5zdGFydEFuZ2xlLEE9dm9pZCAwO2UuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKHY9dGhpcy5zdGFydEFuZ2xlLEE9TWF0aC5yb3VuZCh5KlV0aWxzLm5lZ1RvWmVybyhlLmdsb2JhbHMucHJldmlvdXNQYXRoc1twXSkvMTAwKSt2KSxNYXRoLmFicyhrKStNYXRoLmFicyhiKT49MzYwJiYoay09LjAxKSxNYXRoLmFicyhBKStNYXRoLmFicyh2KT49MzYwJiYoQS09LjAxKTt2YXIgUz1rLWIsQz1BcnJheS5pc0FycmF5KGUuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXkpP2UuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXlbcF06ZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSxMPWkuZHJhd1BhdGgoe2Q6XCJcIixzdHJva2U6bSxzdHJva2VXaWR0aDpuLGZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6ZS5jb25maWcuZmlsbC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhIGFwZXhjaGFydHMtcmFkaWFsYmFyLXNsaWNlLVwiK3Asc3Ryb2tlRGFzaEFycmF5OkN9KTtpZihHcmFwaGljcy5zZXRBdHRycyhMLm5vZGUse1wiZGF0YTphbmdsZVwiOlMsXCJkYXRhOnZhbHVlXCI6dC5zZXJpZXNbcF19KSxlLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBQPWUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7YS5kcm9wU2hhZG93KEwsUCxwKX10aGlzLmFkZExpc3RlbmVycyhMLHRoaXMucmFkaWFsRGF0YUxhYmVscykseC5hZGQoTCksTC5hdHRyKHtpbmRleDowLGo6cH0pO3ZhciB6PTA7IXRoaXMuaW5pdGlhbEFuaW18fGUuZ2xvYmFscy5yZXNpemVkfHxlLmdsb2JhbHMuZGF0YUNoYW5nZWR8fCh6PShrLWIpLzM2MCplLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLHRoaXMuYW5pbUR1cj16LygxLjIqdC5zZXJpZXMubGVuZ3RoKSt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpKSxlLmdsb2JhbHMuZGF0YUNoYW5nZWQmJih6PShrLWIpLzM2MCplLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsdGhpcy5hbmltRHVyPXovKDEuMip0LnNlcmllcy5sZW5ndGgpK3RoaXMuYW5pbUR1cix0aGlzLmFuaW1CZWdpbkFyci5wdXNoKHRoaXMuYW5pbUR1cikpLHRoaXMuYW5pbWF0ZVBhdGhzKEwse2NlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGVuZEFuZ2xlOmssc3RhcnRBbmdsZTpiLHByZXZFbmRBbmdsZTpBLHByZXZTdGFydEFuZ2xlOnYsc2l6ZTp0LnNpemUsaTpwLHRvdGFsSXRlbXM6MixhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOnosc2hvdWxkU2V0UHJldlBhdGhzOiEwLGVhc2luZzplLmdsb2JhbHMuZWFzaW5nfSl9cmV0dXJue2c6cixlbEhvbGxvdzpjLGRhdGFMYWJlbHM6Z319fSx7a2V5OlwiZHJhd0hvbGxvd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBHcmFwaGljcyh0aGlzLmN0eCkuZHJhd0NpcmNsZSgyKnQuc2l6ZSk7cmV0dXJuIGUuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1ob2xsb3dcIixjeDp0LmNlbnRlclgsY3k6dC5jZW50ZXJZLHI6dC5zaXplLGZpbGw6dC5maWxsfSksZX19LHtrZXk6XCJkcmF3SG9sbG93SW1hZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt2YXIgYT10aGlzLncscj1uZXcgRmlsbCh0aGlzLmN0eCksbj0oTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpLG89YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZTtpZihhLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlQ2xpcHBlZClyLmNsaXBwZWRJbWdBcmVhKHt3aWR0aDppLGhlaWdodDppLGltYWdlOm8scGF0dGVybklEOlwicGF0dGVyblwiLmNvbmNhdChhLmdsb2JhbHMuY3VpZCkuY29uY2F0KG4pfSkscz1cInVybCgjcGF0dGVyblwiLmNvbmNhdChhLmdsb2JhbHMuY3VpZCkuY29uY2F0KG4sXCIpXCIpO2Vsc2V7dmFyIGw9YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZVdpZHRoLGg9YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZUhlaWdodDtpZih2b2lkIDA9PT1sJiZ2b2lkIDA9PT1oKXt2YXIgYz1hLmdsb2JhbHMuZG9tLlBhcGVyLmltYWdlKG8pLmxvYWRlZChmdW5jdGlvbihlKXt0aGlzLm1vdmUodC5jZW50ZXJYLWUud2lkdGgvMithLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WCx0LmNlbnRlclktZS5oZWlnaHQvMithLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSl9KTtlLmFkZChjKX1lbHNle3ZhciBkPWEuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UobykubG9hZGVkKGZ1bmN0aW9uKGUpe3RoaXMubW92ZSh0LmNlbnRlclgtbC8yK2EuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRYLHQuY2VudGVyWS1oLzIrYS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFkpLHRoaXMuc2l6ZShsLGgpfSk7ZS5hZGQoZCl9fXJldHVybiBzfX0se2tleTpcImdldFN0cm9rZVdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybiB0LnNpemUqKDEwMC1wYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnNpemUpKS8xMDAvKHQuc2VyaWVzLmxlbmd0aCsxKS10aGlzLm1hcmdpbn19XSksZX0oKSxSYW5nZUJhcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIF9jbGFzc0NhbGxDaGVjayh0aGlzLGUpLF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsX2dldFByb3RvdHlwZU9mKGUpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIF9pbmhlcml0cyhlLEJhciksX2NyZWF0ZUNsYXNzKGUsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLGE9bmV3IEZpbGwodGhpcy5jdHgpO3RoaXMucmFuZ2VCYXJPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMucmFuZ2VCYXIsdGhpcy5zZXJpZXM9dCx0aGlzLnNlcmllc1JhbmdlU3RhcnQ9aS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQsdGhpcy5zZXJpZXNSYW5nZUVuZD1pLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQsdGhpcy5pbml0VmFyaWFibGVzKHQpO2Zvcih2YXIgcj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG49MCxvPTA7bjx0Lmxlbmd0aDtuKyssbysrKXt2YXIgbCxoLGMsZCx1PXZvaWQgMCxnPXZvaWQgMCxmPXZvaWQgMCxwPXZvaWQgMCx4PVtdLG09W10sYj1pLmdsb2JhbHMuY29tYm9DaGFydHM/ZVtuXTpuLHY9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6VXRpbHMuZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1tiXSkscmVsOm4rMSxcImRhdGE6cmVhbEluZGV4XCI6Yn0pO3Rbbl0ubGVuZ3RoPjAmJih0aGlzLnZpc2libGVJPXRoaXMudmlzaWJsZUkrMSk7dmFyIHk9MCx3PTAsaz0wO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PWIpO3ZhciBBPXRoaXMuaW5pdGlhbFBvc2l0aW9ucygpO3A9QS55LGg9QS55RGl2aXNpb24sdz1BLmJhckhlaWdodCxkPUEuemVyb1csZj1BLngsaz1BLmJhcldpZHRoLGw9QS54RGl2aXNpb24sYz1BLnplcm9ILG0ucHVzaChmK2svMik7Zm9yKHZhciBTPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCJ9KSxDPTAsTD1pLmdsb2JhbHMuZGF0YVBvaW50cztDPGkuZ2xvYmFscy5kYXRhUG9pbnRzO0MrKyxMLS0pe3ZvaWQgMD09PXRoaXMuc2VyaWVzW25dW0NdfHxudWxsPT09dFtuXVtDXT90aGlzLmlzTnVsbFZhbHVlPSEwOnRoaXMuaXNOdWxsVmFsdWU9ITEsaS5jb25maWcuc3Ryb2tlLnNob3cmJih5PXRoaXMuaXNOdWxsVmFsdWU/MDpBcnJheS5pc0FycmF5KHRoaXMuc3Ryb2tlV2lkdGgpP3RoaXMuc3Ryb2tlV2lkdGhbYl06dGhpcy5zdHJva2VXaWR0aCk7dmFyIFA9bnVsbDt0aGlzLmlzSG9yaXpvbnRhbD9rPShQPXRoaXMuZHJhd1JhbmdlQmFyUGF0aHMoe2luZGV4ZXM6e2k6bixqOkMscmVhbEluZGV4OmIsYmM6b30sYmFySGVpZ2h0Oncsc3Ryb2tlV2lkdGg6eSxwYXRoVG86dSxwYXRoRnJvbTpnLHplcm9XOmQseDpmLHk6cCx5RGl2aXNpb246aCxlbFNlcmllczp2fSkpLmJhcldpZHRoOnc9KFA9dGhpcy5kcmF3UmFuZ2VDb2x1bW5QYXRocyh7aW5kZXhlczp7aTpuLGo6QyxyZWFsSW5kZXg6YixiYzpvfSx4OmYseTpwLHhEaXZpc2lvbjpsLHBhdGhUbzp1LHBhdGhGcm9tOmcsYmFyV2lkdGg6ayx6ZXJvSDpjLHN0cm9rZVdpZHRoOnksZWxTZXJpZXM6dn0pKS5iYXJIZWlnaHQsdT1QLnBhdGhUbyxnPVAucGF0aEZyb20scD1QLnksZj1QLngsQz4wJiZtLnB1c2goZitrLzIpLHgucHVzaChwKTt2YXIgej1hLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6Yn0pLFQ9aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbYl07dj10aGlzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OmIscGF0aEZpbGw6eixsaW5lRmlsbDpULGo6QyxpOm4scGF0aEZyb206ZyxwYXRoVG86dSxzdHJva2VXaWR0aDp5LGVsU2VyaWVzOnYseDpmLHk6cCxzZXJpZXM6dCxiYXJIZWlnaHQ6dyxiYXJXaWR0aDprLGVsRGF0YUxhYmVsc1dyYXA6Uyx2aXNpYmxlU2VyaWVzOnRoaXMudmlzaWJsZUksdHlwZTpcInJhbmdlYmFyXCJ9KX1pLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tiXT1tLGkuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW2JdPXgsci5hZGQodil9cmV0dXJuIHJ9fSx7a2V5OlwiZHJhd1JhbmdlQ29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10Lngscz0odC55LHQuc3Ryb2tlV2lkdGgpLGE9dC54RGl2aXNpb24scj10LnBhdGhUbyxuPXQucGF0aEZyb20sbz10LmJhcldpZHRoLGw9dC56ZXJvSCxoPXRoaXMudyxjPW5ldyBHcmFwaGljcyh0aGlzLmN0eCksZD1lLmksdT1lLmosZz10aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLGY9ZS5yZWFsSW5kZXgscD10aGlzLmdldFJhbmdlVmFsdWUoZix1KSx4PU1hdGgubWluKHAuc3RhcnQscC5lbmQpLG09TWF0aC5tYXgocC5zdGFydCxwLmVuZCk7aC5nbG9iYWxzLmlzWE51bWVyaWMmJihpPShoLmdsb2JhbHMuc2VyaWVzWFtkXVt1XS1oLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tby8yKTt2YXIgYj1pK28qdGhpcy52aXNpYmxlSTt2b2lkIDA9PT10aGlzLnNlcmllc1tkXVt1XXx8bnVsbD09PXRoaXMuc2VyaWVzW2RdW3VdP3g9bDooeD1sLXgvZyxtPWwtbS9nKTt2YXIgdj1NYXRoLmFicyhtLXgpO3JldHVybiBjLm1vdmUoYixsKSxuPWMubW92ZShiLHgpLGguZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYobj10aGlzLmdldFBhdGhGcm9tKGYsdSwhMCkpLHI9Yy5tb3ZlKGIsbSkrYy5saW5lKGIrbyxtKStjLmxpbmUoYitvLHgpK2MubGluZShiLHgpK2MubGluZShiLG0tcy8yKSxuPW4rYy5tb3ZlKGIseCkrYy5saW5lKGIrbyx4KStjLmxpbmUoYitvLHgpK2MubGluZShiLHgpLGguZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9YSkse3BhdGhUbzpyLHBhdGhGcm9tOm4sYmFySGVpZ2h0OnYseDppLHk6bSxiYXJYUG9zaXRpb246Yn19fSx7a2V5OlwiZHJhd1JhbmdlQmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT0odC54LHQueSkscz10LnlEaXZpc2lvbixhPXQucGF0aFRvLHI9dC5wYXRoRnJvbSxuPXQuYmFySGVpZ2h0LG89dC56ZXJvVyxsPXRoaXMudyxoPW5ldyBHcmFwaGljcyh0aGlzLmN0eCksYz1lLmksZD1lLmosdT1lLnJlYWxJbmRleCxnPW8sZj1vO2wuZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0obC5nbG9iYWxzLnNlcmllc1hbY11bZF0tbC5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tbik7dmFyIHA9aStuKnRoaXMudmlzaWJsZUk7dm9pZCAwIT09dGhpcy5zZXJpZXNbY11bZF0mJm51bGwhPT10aGlzLnNlcmllc1tjXVtkXSYmKGc9byt0aGlzLnNlcmllc1JhbmdlU3RhcnRbY11bZF0vdGhpcy5pbnZlcnRlZFlSYXRpbyxmPW8rdGhpcy5zZXJpZXNSYW5nZUVuZFtjXVtkXS90aGlzLmludmVydGVkWVJhdGlvKSxoLm1vdmUobyxwKSxyPWgubW92ZShvLHApLGwuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYocj10aGlzLmdldFBhdGhGcm9tKHUsZCkpO3ZhciB4PU1hdGguYWJzKGYtZyk7cmV0dXJuIGE9aC5tb3ZlKGcscCkraC5saW5lKGYscCkraC5saW5lKGYscCtuKStoLmxpbmUoZyxwK24pK2gubGluZShnLHApLHI9citoLmxpbmUoZyxwKStoLmxpbmUoZyxwK24pK2gubGluZShnLHArbikraC5saW5lKGcscCksbC5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1zKSx7cGF0aFRvOmEscGF0aEZyb206cixiYXJXaWR0aDp4LHg6Zix5OmksYmFyWVBvc2l0aW9uOnB9fX0se2tleTpcImdldFJhbmdlVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm57c3RhcnQ6aS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbdF1bZV0sZW5kOmkuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFt0XVtlXX19fV0pLGV9KCksRm9ybWF0dGVycz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMudG9vbHRpcEtleUZvcm1hdD1cImRkIE1NTVwifXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcInhMYWJlbEZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLnc7aWYoXCJkYXRldGltZVwiPT09cy5jb25maWcueGF4aXMudHlwZSYmKHZvaWQgMD09PXMuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXImJnZvaWQgMD09PXMuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIpKXJldHVybiBuZXcgRGF0ZVRpbWUodGhpcy5jdHgpLmZvcm1hdERhdGUobmV3IERhdGUoZSkscy5jb25maWcudG9vbHRpcC54LmZvcm1hdCwhMCwhMCk7cmV0dXJuIHQoZSxpKX19LHtrZXk6XCJzZXRMYWJlbEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztyZXR1cm4gdC5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdC5nbG9iYWxzLnhheGlzVG9vbHRpcEZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdC5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0fSx0Lmdsb2JhbHMudHRaRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0fSx0Lmdsb2JhbHMubGVnZW5kRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0fSx2b2lkIDAhPT10LmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyP3QuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXI9dC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcjp0Lmdsb2JhbHMueExhYmVsRm9ybWF0dGVyPWZ1bmN0aW9uKGUpe2lmKFV0aWxzLmlzTnVtYmVyKGUpKXtpZihcIm51bWVyaWNcIj09PXQuY29uZmlnLnhheGlzLnR5cGUmJnQuZ2xvYmFscy5kYXRhUG9pbnRzPDUwKXJldHVybiBlLnRvRml4ZWQoMSk7aWYodC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbClpZih0Lmdsb2JhbHMubWF4WS10Lmdsb2JhbHMubWluWUFycjw0KXJldHVybiBlLnRvRml4ZWQoMSk7cmV0dXJuIGUudG9GaXhlZCgwKX1yZXR1cm4gZX0sXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcj90Lmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9dC5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcjp0Lmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9dC5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlciYmKHQuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXI9dC5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXIpLEFycmF5LmlzQXJyYXkodC5jb25maWcudG9vbHRpcC55KT90Lmdsb2JhbHMudHRWYWw9dC5jb25maWcudG9vbHRpcC55OnZvaWQgMCE9PXQuY29uZmlnLnRvb2x0aXAueS5mb3JtYXR0ZXImJih0Lmdsb2JhbHMudHRWYWw9dC5jb25maWcudG9vbHRpcC55KSx2b2lkIDAhPT10LmNvbmZpZy50b29sdGlwLnouZm9ybWF0dGVyJiYodC5nbG9iYWxzLnR0WkZvcm1hdHRlcj10LmNvbmZpZy50b29sdGlwLnouZm9ybWF0dGVyKSx2b2lkIDAhPT10LmNvbmZpZy5sZWdlbmQuZm9ybWF0dGVyJiYodC5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcj10LmNvbmZpZy5sZWdlbmQuZm9ybWF0dGVyKSx0LmNvbmZpZy55YXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGUsaSl7dm9pZCAwIT09ZS5sYWJlbHMuZm9ybWF0dGVyP3QuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW2ldPWUubGFiZWxzLmZvcm1hdHRlcjp0Lmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1tpXT1mdW5jdGlvbihzKXtyZXR1cm4gdC5nbG9iYWxzLnh5Q2hhcnRzJiZVdGlscy5pc051bWJlcihzKT8wIT09dC5nbG9iYWxzLnlWYWx1ZURlY2ltYWw/cy50b0ZpeGVkKHZvaWQgMCE9PWUuZGVjaW1hbHNJbkZsb2F0P2UuZGVjaW1hbHNJbkZsb2F0OnQuZ2xvYmFscy55VmFsdWVEZWNpbWFsKTp0Lmdsb2JhbHMubWF4WUFycltpXS10Lmdsb2JhbHMubWluWUFycltpXTwxMD9zLnRvRml4ZWQoMSk6cy50b0ZpeGVkKDApOnN9fSksdC5nbG9iYWxzfX0se2tleTpcImhlYXRtYXBMYWJlbEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZihcImhlYXRtYXBcIj09PXQuY29uZmlnLmNoYXJ0LnR5cGUpe3QuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdD10Lmdsb2JhbHMuc2VyaWVzTmFtZXMuc2xpY2UoKTt2YXIgZT10Lmdsb2JhbHMuc2VyaWVzTmFtZXMucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0sMCk7dC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1heD1lLHQuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW49ZX19fV0pLHR9KCksQXhlc1V0aWxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiZ2V0TGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt2YXIgYSxyPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTpbXSxuPXRoaXMudyxvPXZvaWQgMD09PXRbc10/XCJcIjp0W3NdLGw9bi5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixoPW4uY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIsYz0hMSxkPW87YT1uZXcgRm9ybWF0dGVycyh0aGlzLmN0eCkueExhYmVsRm9ybWF0KGwsbyxkKSx2b2lkIDAhPT1oJiYoYT1oKG8sdFtzXSxzKSk7dmFyIHUsZztyZXR1cm4gZS5sZW5ndGg+MD8odT1lW3NdLnVuaXQsZz1udWxsLGUuZm9yRWFjaChmdW5jdGlvbih0KXtcIm1vbnRoXCI9PT10LnVuaXQ/Zz1cInllYXJcIjpcImRheVwiPT09dC51bml0P2c9XCJtb250aFwiOlwiaG91clwiPT09dC51bml0P2c9XCJkYXlcIjpcIm1pbnV0ZVwiPT09dC51bml0JiYoZz1cImhvdXJcIil9KSxjPWc9PT11LGk9ZVtzXS5wb3NpdGlvbixhPWVbc10udmFsdWUpOlwiZGF0ZXRpbWVcIj09PW4uY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PWgmJihhPVwiXCIpLHZvaWQgMD09PWEmJihhPVwiXCIpLCgwPT09KGE9YS50b1N0cmluZygpKS5pbmRleE9mKFwiTmFOXCIpfHwwPT09YS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJpbnZhbGlkXCIpfHxhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImluZmluaXR5XCIpPj0wfHxyLmluZGV4T2YoYSk+PTAmJiFuLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd0R1cGxpY2F0ZXMpJiYoYT1cIlwiKSx7eDppLHRleHQ6YSxpc0JvbGQ6Y319fSx7a2V5OlwiZHJhd1lBeGlzVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEscixuKXt2YXIgbz10aGlzLncsbD1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLGg9by5nbG9iYWxzLnRyYW5zbGF0ZVk7aWYocy5zaG93KXshMD09PW8uY29uZmlnLnlheGlzW2FdLm9wcG9zaXRlJiYodCs9cy53aWR0aCk7Zm9yKHZhciBjPWU7Yz49MDtjLS0pe3ZhciBkPWgrZS8xMCtvLmNvbmZpZy55YXhpc1thXS5sYWJlbHMub2Zmc2V0WS0xO28uZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihkPXIqYyk7dmFyIHU9bC5kcmF3TGluZSh0K2kub2Zmc2V0WC1zLndpZHRoK3Mub2Zmc2V0WCxkK3Mub2Zmc2V0WSx0K2kub2Zmc2V0WCtzLm9mZnNldFgsZCtzLm9mZnNldFksaS5jb2xvcik7bi5hZGQodSksaCs9cn19fX1dKSx0fSgpLFlBeGlzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMueGF4aXNGb250U2l6ZT1pLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsdGhpcy5heGlzRm9udEZhbWlseT1pLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSx0aGlzLnhheGlzRm9yZUNvbG9ycz1pLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY29sb3JzLHRoaXMueEF4aXNvZmZYPTAsXCJib3R0b21cIj09PWkuY29uZmlnLnhheGlzLnBvc2l0aW9uJiYodGhpcy54QXhpc29mZlg9aS5nbG9iYWxzLmdyaWRIZWlnaHQpLHRoaXMuZHJhd25MYWJlbHM9W10sdGhpcy5heGVzVXRpbHM9bmV3IEF4ZXNVdGlscyhlKX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJkcmF3WWF4aXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLHM9ZS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLGE9ZS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHkscj1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXNcIixyZWw6dCx0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrZS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XStcIiwgMClcIn0pO2lmKCFlLmNvbmZpZy55YXhpc1t0XS5zaG93KXJldHVybiByO3ZhciBuPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCJ9KTtyLmFkZChuKTt2YXIgbz1lLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQubGVuZ3RoLTEsbD1lLmdsb2JhbHMuZ3JpZEhlaWdodC9vKy4xLGg9ZS5nbG9iYWxzLnRyYW5zbGF0ZVksYz1lLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1t0XSxkPWUuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5zbGljZSgpO2lmKGUuY29uZmlnLnlheGlzW3RdJiZlLmNvbmZpZy55YXhpc1t0XS5yZXZlcnNlZCYmZC5yZXZlcnNlKCksZS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnNob3cpZm9yKHZhciB1PW87dT49MDt1LS0pe3ZhciBnPWRbdV07Zz1jKGcsdSk7dmFyIGY9ZS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnBhZGRpbmc7ZS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJjAhPT1lLmNvbmZpZy55YXhpcy5sZW5ndGgmJihmKj0tMSk7dmFyIHA9aS5kcmF3VGV4dCh7eDpmLHk6aCtvLzEwK2UuY29uZmlnLnlheGlzW3RdLmxhYmVscy5vZmZzZXRZKzEsdGV4dDpnLHRleHRBbmNob3I6ZS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGU/XCJzdGFydFwiOlwiZW5kXCIsZm9udFNpemU6cyxmb250RmFtaWx5OmEsZm9yZUNvbG9yOmUuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtbGFiZWwgXCIrZS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnN0eWxlLmNzc0NsYXNzfSk7bi5hZGQocCk7dmFyIHg9aS5yb3RhdGVBcm91bmRDZW50ZXIocC5ub2RlKTswIT09ZS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSYmcC5ub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChlLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlLFwiIFwiKS5jb25jYXQoeC54LFwiIFwiKS5jb25jYXQoeC55LFwiKVwiKSksaCs9bH1pZih2b2lkIDAhPT1lLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0KXt2YXIgbT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGVcIn0pLGI9MDtlLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKGI9ZS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XSk7dmFyIHY9aS5kcmF3VGV4dCh7eDpiLHk6ZS5nbG9iYWxzLmdyaWRIZWlnaHQvMitlLmdsb2JhbHMudHJhbnNsYXRlWSx0ZXh0OmUuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcImVuZFwiLGZvcmVDb2xvcjplLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5jb2xvcixmb250U2l6ZTplLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmUuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgXCIrZS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTttLmFkZCh2KSxyLmFkZChtKX12YXIgeT1lLmNvbmZpZy55YXhpc1t0XS5heGlzQm9yZGVyO2lmKHkuc2hvdyl7dmFyIHc9MzEreS5vZmZzZXRYO2UuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYodz0tMzEteS5vZmZzZXRYKTt2YXIgaz1pLmRyYXdMaW5lKHcsZS5nbG9iYWxzLnRyYW5zbGF0ZVkreS5vZmZzZXRZLTIsdyxlLmdsb2JhbHMuZ3JpZEhlaWdodCtlLmdsb2JhbHMudHJhbnNsYXRlWSt5Lm9mZnNldFkrMix5LmNvbG9yKTtyLmFkZChrKSx0aGlzLmF4ZXNVdGlscy5kcmF3WUF4aXNUaWNrcyh3LG8seSxlLmNvbmZpZy55YXhpc1t0XS5heGlzVGlja3MsdCxsLHIpfXJldHVybiByfX0se2tleTpcImRyYXdZYXhpc0ludmVyc2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxzPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcyBhcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkXCJ9KSxhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLFwiLCBcIikuY29uY2F0KGUuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksXCIpXCIpfSk7cy5hZGQoYSk7dmFyIHI9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0Lmxlbmd0aC0xLG49ZS5nbG9iYWxzLmdyaWRXaWR0aC9yKy4xLG89bitlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCxsPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsaD1lLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQuc2xpY2UoKSxjPWUuZ2xvYmFscy5pbnZlcnRlZFRpbWVsaW5lTGFiZWxzO2MubGVuZ3RoPjAmJih0aGlzLnhheGlzTGFiZWxzPWMuc2xpY2UoKSxyPShoPWMuc2xpY2UoKSkubGVuZ3RoKSxlLmNvbmZpZy55YXhpc1t0XSYmZS5jb25maWcueWF4aXNbdF0ucmV2ZXJzZWQmJmgucmV2ZXJzZSgpO3ZhciBkPWMubGVuZ3RoO2lmKGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KWZvcih2YXIgdT1kPzA6cjtkP3U8ZC0xOnU+PTA7ZD91Kys6dS0tKXt2YXIgZz1oW3VdO2c9bChnLHUpO3ZhciBmPWUuZ2xvYmFscy5ncmlkV2lkdGgrZS5nbG9iYWxzLnBhZEhvcml6b250YWwtKG8tbitlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCk7aWYoYy5sZW5ndGgpe3ZhciBwPXRoaXMuYXhlc1V0aWxzLmdldExhYmVsKGgsYyxmLHUsdGhpcy5kcmF3bkxhYmVscyk7Zj1wLngsZz1wLnRleHQsdGhpcy5kcmF3bkxhYmVscy5wdXNoKHAudGV4dCl9dmFyIHg9aS5kcmF3VGV4dCh7eDpmLHk6dGhpcy54QXhpc29mZlgrZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrMzAsdGV4dDpcIlwiLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6QXJyYXkuaXNBcnJheSh0aGlzLnhheGlzRm9yZUNvbG9ycyk/dGhpcy54YXhpc0ZvcmVDb2xvcnNbdF06dGhpcy54YXhpc0ZvcmVDb2xvcnMsZm9udFNpemU6dGhpcy54YXhpc0ZvbnRTaXplLGZvbnRGYW1pbHk6dGhpcy54YXhpc0ZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsIFwiK2UuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzc30pO2EuYWRkKHgpLHgudHNwYW4oZyk7dmFyIG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO20udGV4dENvbnRlbnQ9Zyx4Lm5vZGUuYXBwZW5kQ2hpbGQobSksbys9bn1pZih2b2lkIDAhPT1lLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgYj1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUgYXBleGNoYXJ0cy15YXhpcy10aXRsZS1pbnZlcnNlZFwifSksdj1pLmRyYXdUZXh0KHt4OmUuZ2xvYmFscy5ncmlkV2lkdGgvMix5OnRoaXMueEF4aXNvZmZYK3BhcnNlSW50KHRoaXMueGF4aXNGb250U2l6ZSkrcGFyc2VJbnQoZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpKzIwLHRleHQ6ZS5jb25maWcueGF4aXMudGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250RmFtaWx5LGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10aXRsZS10ZXh0IFwiK2UuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7Yi5hZGQodikscy5hZGQoYil9dmFyIHk9ZS5jb25maWcueWF4aXNbdF0uYXhpc0JvcmRlcjtpZih5LnNob3cpe3ZhciB3PWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwreS5vZmZzZXRYLDEreS5vZmZzZXRZLGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3kub2Zmc2V0WCxlLmdsb2JhbHMuZ3JpZEhlaWdodCt5Lm9mZnNldFkseS5jb2xvcik7cy5hZGQodyl9cmV0dXJuIHN9fSx7a2V5OlwieUF4aXNUaXRsZVJvdGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxhPXt3aWR0aDowLGhlaWdodDowfSxyPXt3aWR0aDowLGhlaWdodDowfSxuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIgLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQodCxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIikpO251bGwhPT1uJiYoYT1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTt2YXIgbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQodCxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRpdGxlIHRleHRcIikpO2lmKG51bGwhPT1vJiYocj1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxudWxsIT09byl7dmFyIGw9dGhpcy54UGFkZGluZ0ZvcllBeGlzVGl0bGUodCxhLHIsZSk7by5zZXRBdHRyaWJ1dGUoXCJ4XCIsbC54UG9zLShlPzEwOjApKX1pZihudWxsIT09byl7dmFyIGg9cy5yb3RhdGVBcm91bmRDZW50ZXIobyk7ZT9vLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5yb3RhdGUsXCIgXCIpLmNvbmNhdChoLngsXCIgXCIpLmNvbmNhdChoLnksXCIpXCIpKTpvLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKC1cIi5jb25jYXQoaS5jb25maWcueWF4aXNbdF0udGl0bGUucm90YXRlLFwiIFwiKS5jb25jYXQoaC54LFwiIFwiKS5jb25jYXQoaC55LFwiKVwiKSl9fX0se2tleTpcInhQYWRkaW5nRm9yWUF4aXNUaXRsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhPXRoaXMudyxyPTAsbj0wLG89MTA7cmV0dXJuIHZvaWQgMD09PWEuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHR8fHQ8MD97eFBvczpuLHBhZGQ6MH06KHM/KG49ZS53aWR0aCthLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYK2kud2lkdGgvMitvLzIsMD09PShyKz0xKSYmKG4tPW8vMikpOihuPS0xKmUud2lkdGgrYS5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WCtvLzIraS53aWR0aC8yLGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihvPTI1LG49LTEqZS53aWR0aC1hLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYLW8pKSx7eFBvczpuLHBhZGQ6b30pfX0se2tleTpcInNldFlBeGlzWFBvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz0wLGE9MCxyPTIxLG49MTtpLmNvbmZpZy55YXhpcy5sZW5ndGg+MSYmKHRoaXMubXVsdGlwbGVZcz0hMCksaS5jb25maWcueWF4aXMubWFwKGZ1bmN0aW9uKG8sbCl7dmFyIGg9aS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGwpPi0xfHwhby5zaG93fHxvLmZsb2F0aW5nfHwwPT09dFtsXS53aWR0aCxjPXRbbF0ud2lkdGgrZVtsXS53aWR0aDtvLm9wcG9zaXRlP2kuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KGE9aS5nbG9iYWxzLmdyaWRXaWR0aCtpLmdsb2JhbHMudHJhbnNsYXRlWC0xLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09YS1vLmxhYmVscy5vZmZzZXRYKTooYT1pLmdsb2JhbHMuZ3JpZFdpZHRoK2kuZ2xvYmFscy50cmFuc2xhdGVYK24saHx8KG49bitjKzIwKSxpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2xdPWEtby5sYWJlbHMub2Zmc2V0WCsyMCk6KHM9aS5nbG9iYWxzLnRyYW5zbGF0ZVgtcixofHwocj1yK2MrMjApLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09cytvLmxhYmVscy5vZmZzZXRYKX0pfX0se2tleTpcInNldFlBeGlzVGV4dEFsaWdubWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc1wiKTsoZT1VdGlscy5saXN0VG9BcnJheShlKSkuZm9yRWFjaChmdW5jdGlvbihlLGkpe3ZhciBzPXQuY29uZmlnLnlheGlzW2ldO2lmKHZvaWQgMCE9PXMubGFiZWxzLmFsaWduKXt2YXIgYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQoaSxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIikpLHI9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGksXCInXSAuYXBleGNoYXJ0cy15YXhpcy1sYWJlbFwiKSk7cj1VdGlscy5saXN0VG9BcnJheShyKTt2YXIgbj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1wibGVmdFwiPT09cy5sYWJlbHMuYWxpZ24/KHIuZm9yRWFjaChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcInN0YXJ0XCIpfSkscy5vcHBvc2l0ZXx8YS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZSgtXCIuY29uY2F0KG4ud2lkdGgsXCIsIDApXCIpKSk6XCJjZW50ZXJcIj09PXMubGFiZWxzLmFsaWduPyhyLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJtaWRkbGVcIil9KSxhLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChuLndpZHRoLzIqKHMub3Bwb3NpdGU/MTotMSksXCIsIDApXCIpKSk6XCJyaWdodFwiPT09cy5sYWJlbHMuYWxpZ24mJihyLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJlbmRcIil9KSxzLm9wcG9zaXRlJiZhLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChuLndpZHRoLFwiLCAwKVwiKSkpfX0pfX1dKSx0fSgpLERpbWVuc2lvbnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmxnUmVjdD17fSx0aGlzLnlBeGlzV2lkdGg9MCx0aGlzLnhBeGlzSGVpZ2h0PTAsdGhpcy5pc1NwYXJrbGluZT10aGlzLncuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkLHRoaXMueFBhZFJpZ2h0PTAsdGhpcy54UGFkTGVmdD0wfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcInBsb3RDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPXRoaXMuZ2V0TGVnZW5kc1JlY3QoKTtlLmF4aXNDaGFydHM/dGhpcy5zZXRHcmlkQ29vcmRzRm9yQXhpc0NoYXJ0cyhpKTp0aGlzLnNldEdyaWRDb29yZHNGb3JOb25BeGlzQ2hhcnRzKGkpLHRoaXMudGl0bGVTdWJ0aXRsZU9mZnNldCgpLGUuZ3JpZEhlaWdodD1lLmdyaWRIZWlnaHQtdC5jb25maWcuZ3JpZC5wYWRkaW5nLnRvcC10LmNvbmZpZy5ncmlkLnBhZGRpbmcuYm90dG9tLGUuZ3JpZFdpZHRoPWUuZ3JpZFdpZHRoLXQuY29uZmlnLmdyaWQucGFkZGluZy5sZWZ0LXQuY29uZmlnLmdyaWQucGFkZGluZy5yaWdodC10aGlzLnhQYWRSaWdodC10aGlzLnhQYWRMZWZ0LGUudHJhbnNsYXRlWD1lLnRyYW5zbGF0ZVgrdC5jb25maWcuZ3JpZC5wYWRkaW5nLmxlZnQrdGhpcy54UGFkTGVmdCxlLnRyYW5zbGF0ZVk9ZS50cmFuc2xhdGVZK3QuY29uZmlnLmdyaWQucGFkZGluZy50b3B9fSx7a2V5OlwiY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7dGhpcy54QXhpc0hlaWdodD0odC5oZWlnaHQrZS5oZWlnaHQpKmkuZ2xvYmFscy5MSU5FX0hFSUdIVF9SQVRJTysxNSx0aGlzLnhBeGlzV2lkdGg9dC53aWR0aCx0aGlzLnhBeGlzSGVpZ2h0LWUuaGVpZ2h0PmkuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PWkuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQpLGkuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJnRoaXMueEF4aXNIZWlnaHQ8aS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCYmKHRoaXMueEF4aXNIZWlnaHQ9aS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCksaS5jb25maWcueGF4aXMuZmxvYXRpbmcmJih0aGlzLnhBeGlzSGVpZ2h0PTApLGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/dGhpcy55QXhpc1dpZHRoPWkuZ2xvYmFscy55TGFiZWxzQ29vcmRzWzBdLndpZHRoK2kuZ2xvYmFscy55VGl0bGVDb29yZHNbMF0ud2lkdGgrMTU6dGhpcy55QXhpc1dpZHRoPXRoaXMuZ2V0VG90YWxZQXhpc1dpZHRoKCk7dmFyIHM9MCxhPTA7aS5jb25maWcueWF4aXMuZm9yRWFjaChmdW5jdGlvbih0KXtzKz10LmxhYmVscy5taW5XaWR0aCxhKz10LmxhYmVscy5tYXhXaWR0aH0pLHRoaXMueUF4aXNXaWR0aDxzJiYodGhpcy55QXhpc1dpZHRoPXMpLHRoaXMueUF4aXNXaWR0aD5hJiYodGhpcy55QXhpc1dpZHRoPWEpfX0se2tleTpcInNldEdyaWRDb29yZHNGb3JBeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5nbG9iYWxzLHM9dGhpcy5nZXR5QXhpc0xhYmVsc0Nvb3JkcygpLGE9dGhpcy5nZXR4QXhpc0xhYmVsc0Nvb3JkcygpLHI9dGhpcy5nZXR5QXhpc1RpdGxlQ29vcmRzKCksbj10aGlzLmdldHhBeGlzVGl0bGVDb29yZHMoKTtlLmdsb2JhbHMueUxhYmVsc0Nvb3Jkcz1bXSxlLmdsb2JhbHMueVRpdGxlQ29vcmRzPVtdLGUuY29uZmlnLnlheGlzLm1hcChmdW5jdGlvbih0LGkpe2UuZ2xvYmFscy55TGFiZWxzQ29vcmRzLnB1c2goe3dpZHRoOnNbaV0ud2lkdGgsaW5kZXg6aX0pLGUuZ2xvYmFscy55VGl0bGVDb29yZHMucHVzaCh7d2lkdGg6cltpXS53aWR0aCxpbmRleDppfSl9KSx0aGlzLmNvbmRpdGlvbmFsQ2hlY2tzRm9yQXhpc0Nvb3JkcyhhLG4pLGkudHJhbnNsYXRlWEF4aXNZPWUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzP3RoaXMueEF4aXNIZWlnaHQvODotNCxpLnRyYW5zbGF0ZVhBeGlzWD1lLmdsb2JhbHMucm90YXRlWExhYmVscyYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJmUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGU8PS00NT8tdGhpcy54QXhpc1dpZHRoLzQ6MCxlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoaS5yb3RhdGVYTGFiZWxzPSExLGkudHJhbnNsYXRlWEF4aXNZPXBhcnNlSW50KGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSkvMS41Ki0xKSxpLnRyYW5zbGF0ZVhBeGlzWT1pLnRyYW5zbGF0ZVhBeGlzWStlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSxpLnRyYW5zbGF0ZVhBeGlzWD1pLnRyYW5zbGF0ZVhBeGlzWCtlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDt2YXIgbz10aGlzLnlBeGlzV2lkdGgsbD10aGlzLnhBeGlzSGVpZ2h0O2kueEF4aXNMYWJlbHNIZWlnaHQ9dGhpcy54QXhpc0hlaWdodCxpLnhBeGlzSGVpZ2h0PXRoaXMueEF4aXNIZWlnaHQ7dmFyIGg9MTA7c3dpdGNoKGUuY29uZmlnLmdyaWQuc2hvdyYmXCJyYWRhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZXx8KG89MCxsPTM1KSx0aGlzLmlzU3BhcmtsaW5lJiYodD17aGVpZ2h0OjAsd2lkdGg6MH0sbD0wLG89MCxoPTApLHRoaXMuYWRkaXRpb25hbFBhZGRpbmdYTGFiZWxzKGEpLGUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbil7Y2FzZVwiYm90dG9tXCI6aS50cmFuc2xhdGVZPWgsaS50cmFuc2xhdGVYPW8saS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LXQuaGVpZ2h0LWwtKHRoaXMuaXNTcGFya2xpbmU/MDplLmdsb2JhbHMucm90YXRlWExhYmVscz8xMDoxNSksaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC1vO2JyZWFrO2Nhc2VcInRvcFwiOmkudHJhbnNsYXRlWT10LmhlaWdodCtoLGkudHJhbnNsYXRlWD1vLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC10LmhlaWdodC1sLSh0aGlzLmlzU3BhcmtsaW5lPzA6ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MTA6MTUpLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtbzticmVhaztjYXNlXCJsZWZ0XCI6aS50cmFuc2xhdGVZPWgsaS50cmFuc2xhdGVYPXQud2lkdGgrbyxpLmdyaWRIZWlnaHQ9aS5zdmdIZWlnaHQtbC0xMixpLmdyaWRXaWR0aD1pLnN2Z1dpZHRoLXQud2lkdGgtbzticmVhaztjYXNlXCJyaWdodFwiOmkudHJhbnNsYXRlWT1oLGkudHJhbnNsYXRlWD1vLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC1sLTEyLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtdC53aWR0aC1vLTU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZFwiKX10aGlzLnNldEdyaWRYUG9zRm9yRHVhbFlBeGlzKHIscyksbmV3IFlBeGlzKHRoaXMuY3R4KS5zZXRZQXhpc1hQb3NpdGlvbihzLHIpfX0se2tleTpcInNldEdyaWRDb29yZHNGb3JOb25BeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5nbG9iYWxzLHM9MDtlLmNvbmZpZy5sZWdlbmQuc2hvdyYmIWUuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyYmKHM9MjApO3ZhciBhPTEwLHI9MDtpZihcInBpZVwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8XCJkb251dFwiPT09ZS5jb25maWcuY2hhcnQudHlwZT8oYSs9ZS5jb25maWcucGxvdE9wdGlvbnMucGllLm9mZnNldFkscis9ZS5jb25maWcucGxvdE9wdGlvbnMucGllLm9mZnNldFgpOlwicmFkaWFsQmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlJiYoYSs9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLm9mZnNldFkscis9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLm9mZnNldFgpLCFlLmNvbmZpZy5sZWdlbmQuc2hvdylyZXR1cm4gaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LTM1LGkuZ3JpZFdpZHRoPWkuZ3JpZEhlaWdodCxpLnRyYW5zbGF0ZVk9YS0xMCx2b2lkKGkudHJhbnNsYXRlWD1yKyhpLnN2Z1dpZHRoLWkuZ3JpZFdpZHRoKS8yKTtzd2l0Y2goZS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXtjYXNlXCJib3R0b21cIjppLmdyaWRIZWlnaHQ9aS5zdmdIZWlnaHQtdC5oZWlnaHQtMzUsaS5ncmlkV2lkdGg9aS5ncmlkSGVpZ2h0LGkudHJhbnNsYXRlWT1hLTIwLGkudHJhbnNsYXRlWD1yKyhpLnN2Z1dpZHRoLWkuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2VcInRvcFwiOmkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC10LmhlaWdodC0zNSxpLmdyaWRXaWR0aD1pLmdyaWRIZWlnaHQsaS50cmFuc2xhdGVZPXQuaGVpZ2h0K2ErMTAsaS50cmFuc2xhdGVYPXIrKGkuc3ZnV2lkdGgtaS5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZVwibGVmdFwiOmkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtdC53aWR0aC1zLGkuZ3JpZEhlaWdodD1pLmdyaWRXaWR0aCxpLnRyYW5zbGF0ZVk9YSxpLnRyYW5zbGF0ZVg9cit0LndpZHRoK3M7YnJlYWs7Y2FzZVwicmlnaHRcIjppLmdyaWRXaWR0aD1pLnN2Z1dpZHRoLXQud2lkdGgtcy01LGkuZ3JpZEhlaWdodD1pLmdyaWRXaWR0aCxpLnRyYW5zbGF0ZVk9YSxpLnRyYW5zbGF0ZVg9cisxMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkxlZ2VuZCBwb3NpdGlvbiBub3Qgc3VwcG9ydGVkXCIpfX19LHtrZXk6XCJzZXRHcmlkWFBvc0ZvckR1YWxZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2kuY29uZmlnLnlheGlzLm1hcChmdW5jdGlvbihzLGEpey0xPT09aS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGEpJiYhaS5jb25maWcueWF4aXNbYV0uZmxvYXRpbmcmJmkuY29uZmlnLnlheGlzW2FdLnNob3cmJnMub3Bwb3NpdGUmJihpLmdsb2JhbHMudHJhbnNsYXRlWD1pLmdsb2JhbHMudHJhbnNsYXRlWC0oZVthXS53aWR0aCt0W2FdLndpZHRoKS1wYXJzZUludChpLmNvbmZpZy55YXhpc1thXS5sYWJlbHMuc3R5bGUuZm9udFNpemUpLzEuMi0xMil9KX19LHtrZXk6XCJhZGRpdGlvbmFsUGFkZGluZ1hMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53O2lmKFwiY2F0ZWdvcnlcIj09PWkuY29uZmlnLnhheGlzLnR5cGUmJmkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fFwibnVtZXJpY1wiPT09aS5jb25maWcueGF4aXMudHlwZXx8XCJkYXRldGltZVwiPT09aS5jb25maWcueGF4aXMudHlwZSl7dmFyIHM9aS5nbG9iYWxzLmlzWE51bWVyaWM7aS5jb25maWcueWF4aXMuZm9yRWFjaChmdW5jdGlvbihhLHIpe3ZhciBuOyghYS5zaG93fHxhLmZsb2F0aW5nfHwtMSE9PWkuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yocil8fHN8fGEub3Bwb3NpdGUmJmkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpJiYoKHMmJmkuZ2xvYmFscy5pc011bHRpcGxlWUF4aXMmJi0xIT09aS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihyKXx8aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmYS5vcHBvc2l0ZSkmJihuPXQsaS5jb25maWcuZ3JpZC5wYWRkaW5nLmxlZnQ8bi53aWR0aCYmKGUueFBhZExlZnQ9bi53aWR0aC8yKzEpKSwoIWkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJmEub3Bwb3NpdGUmJi0xIT09aS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihyKXx8cyYmIWkuZ2xvYmFscy5pc011bHRpcGxlWUF4aXMpJiZmdW5jdGlvbih0KXtlLnRpbWVzY2FsZUxhYmVscz9lLnRpbWVzY2FsZUxhYmVsc1tlLnRpbWVzY2FsZUxhYmVscy5sZW5ndGgtMV0ucG9zaXRpb24rdC53aWR0aD5pLmdsb2JhbHMuZ3JpZFdpZHRoP2kuZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITA6aS5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMTpcImRhdGV0aW1lXCI9PT1pLmNvbmZpZy54YXhpcy50eXBlP2kuY29uZmlnLmdyaWQucGFkZGluZy5yaWdodDx0LndpZHRoJiYoaS5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMCk6XCJkYXRldGltZVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmaS5jb25maWcuZ3JpZC5wYWRkaW5nLnJpZ2h0PHQud2lkdGgmJihlLnhQYWRSaWdodD10LndpZHRoLzIrMSl9KHQpKX0pfX19LHtrZXk6XCJ0aXRsZVN1YnRpdGxlT2Zmc2V0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT10aGlzLmlzU3BhcmtsaW5lfHwhdC5nbG9iYWxzLmF4aXNDaGFydHM/MDoxMDt2b2lkIDAhPT10LmNvbmZpZy50aXRsZS50ZXh0P2krPXQuY29uZmlnLnRpdGxlLm1hcmdpbjppKz10aGlzLmlzU3BhcmtsaW5lfHwhdC5nbG9iYWxzLmF4aXNDaGFydHM/MDo1LHZvaWQgMCE9PXQuY29uZmlnLnN1YnRpdGxlLnRleHQ/aSs9dC5jb25maWcuc3VidGl0bGUubWFyZ2luOmkrPXRoaXMuaXNTcGFya2xpbmV8fCF0Lmdsb2JhbHMuYXhpc0NoYXJ0cz8wOjUsdC5jb25maWcubGVnZW5kLnNob3cmJlwiYm90dG9tXCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJiF0LmNvbmZpZy5sZWdlbmQuZmxvYXRpbmcmJih0LmNvbmZpZy5zZXJpZXMubGVuZ3RoPjF8fCF0Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8dC5jb25maWcubGVnZW5kLnNob3dGb3JTaW5nbGVTZXJpZXMpJiYoaSs9MTApO3ZhciBzPXRoaXMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLGE9dGhpcy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwic3VidGl0bGVcIik7ZS5ncmlkSGVpZ2h0PWUuZ3JpZEhlaWdodC1zLmhlaWdodC1hLmhlaWdodC1pLGUudHJhbnNsYXRlWT1lLnRyYW5zbGF0ZVkrcy5oZWlnaHQrYS5oZWlnaHQraX19LHtrZXk6XCJnZXRUb3RhbFlBeGlzV2lkdGhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTAsaT0xMCxzPWZ1bmN0aW9uKGUpe3JldHVybiB0Lmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSk+LTF9O3JldHVybiB0Lmdsb2JhbHMueUxhYmVsc0Nvb3Jkcy5tYXAoZnVuY3Rpb24oYSxyKXt2YXIgbj10LmNvbmZpZy55YXhpc1tyXS5mbG9hdGluZzthLndpZHRoPjAmJiFuPyhlPWUrYS53aWR0aCtpLHMocikmJihlPWUtYS53aWR0aC1pKSk6ZSs9bnx8IXQuY29uZmlnLnlheGlzW3JdLnNob3c/MDo1fSksdC5nbG9iYWxzLnlUaXRsZUNvb3Jkcy5tYXAoZnVuY3Rpb24oYSxyKXt2YXIgbj10LmNvbmZpZy55YXhpc1tyXS5mbG9hdGluZztpPXBhcnNlSW50KHQuY29uZmlnLnlheGlzW3JdLnRpdGxlLnN0eWxlLmZvbnRTaXplKSxhLndpZHRoPjAmJiFuPyhlPWUrYS53aWR0aCtpLHMocikmJihlPWUtYS53aWR0aC1pKSk6ZSs9bnx8IXQuY29uZmlnLnlheGlzW3JdLnNob3c/MDo1fSksZX19LHtrZXk6XCJnZXR4QXhpc1RpbWVTY2FsZUxhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnc7dGhpcy50aW1lc2NhbGVMYWJlbHM9ZS5nbG9iYWxzLnRpbWVsaW5lTGFiZWxzLnNsaWNlKCksZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmXCJkYXRldGltZVwiPT09ZS5jb25maWcueGF4aXMudHlwZSYmKHRoaXMudGltZXNjYWxlTGFiZWxzPWUuZ2xvYmFscy5pbnZlcnRlZFRpbWVsaW5lTGFiZWxzLnNsaWNlKCkpO3ZhciBpPXRoaXMudGltZXNjYWxlTGFiZWxzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pLHM9aS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dD8oY29uc29sZS5lcnJvcihcIllvdSBoYXZlIHBvc3NpYmx5IHN1cHBsaWVkIGludmFsaWQgRGF0ZSBmb3JtYXQuIFBsZWFzZSBzdXBwbHkgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIiksMCk6dC5sZW5ndGg+ZS5sZW5ndGg/dDplfSwwKTtyZXR1cm4gMS4wNSoodD1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLmdldFRleHRSZWN0cyhzLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSkpLndpZHRoKmkubGVuZ3RoPmUuZ2xvYmFscy5ncmlkV2lkdGgmJjAhPT1lLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlJiYoZS5nbG9iYWxzLm92ZXJsYXBwaW5nWExhYmVscz0hMCksdH19LHtrZXk6XCJnZXR4QXhpc0xhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLncsaT1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCk7aWYoZS5nbG9iYWxzLnRpbWVsaW5lTGFiZWxzLmxlbmd0aD4wKXt2YXIgcz10aGlzLmdldHhBeGlzVGltZVNjYWxlTGFiZWxzQ29vcmRzKCk7dD17d2lkdGg6cy53aWR0aCxoZWlnaHQ6cy5oZWlnaHR9fWVsc2V7dmFyIGE9XCJsZWZ0XCIhPT1lLmNvbmZpZy5sZWdlbmQucG9zaXRpb258fFwicmlnaHRcIiE9PWUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8ZS5jb25maWcubGVnZW5kLmZsb2F0aW5nPzA6dGhpcy5sZ1JlY3Qud2lkdGgscj1lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLG49aS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSwwKTtlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYobj1lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0sMCkpO3ZhciBvPW47bj1uZXcgRm9ybWF0dGVycyh0aGlzLmN0eCkueExhYmVsRm9ybWF0KHIsbixvKTt2YXIgbD1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLGg9bC5nZXRUZXh0UmVjdHMobixlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUpOyh0PXt3aWR0aDpoLndpZHRoLGhlaWdodDpoLmhlaWdodH0pLndpZHRoKmkubGVuZ3RoPmUuZ2xvYmFscy5zdmdXaWR0aC1hLXRoaXMueUF4aXNXaWR0aCYmMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGU/ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8KGUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSEwLGg9bC5nZXRUZXh0UmVjdHMobixlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksXCJyb3RhdGUoXCIuY29uY2F0KGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSwhMSksdC5oZWlnaHQ9aC5oZWlnaHQvMS42Nik6ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITF9cmV0dXJuIGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwodD17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19fSx7a2V5OlwiZ2V0eUF4aXNMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1bXSxzPTEwO3JldHVybiBlLmNvbmZpZy55YXhpcy5tYXAoZnVuY3Rpb24oYSxyKXtpZihhLnNob3cmJmEubGFiZWxzLnNob3cmJmUuZ2xvYmFscy55QXhpc1NjYWxlW3JdLnJlc3VsdC5sZW5ndGgpe3ZhciBuPWUuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3JdLG89bihlLmdsb2JhbHMueUF4aXNTY2FsZVtyXS5uaWNlTWF4LC0xKTtpZih2b2lkIDAhPT1vJiYwIT09by5sZW5ndGh8fChvPWUuZ2xvYmFscy55QXhpc1NjYWxlW3JdLm5pY2VNYXgpLGUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpcz0wLG89bihvPWUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSwwKSwtMSk7dmFyIGw9bmV3IEdyYXBoaWNzKHQuY3R4KS5nZXRUZXh0UmVjdHMobyxhLmxhYmVscy5zdHlsZS5mb250U2l6ZSk7aS5wdXNoKHt3aWR0aDpsLndpZHRoK3MsaGVpZ2h0OmwuaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pLGl9fSx7a2V5OlwiZ2V0eEF4aXNUaXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9MCxpPTA7aWYodm9pZCAwIT09dC5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIHM9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KS5nZXRUZXh0UmVjdHModC5jb25maWcueGF4aXMudGl0bGUudGV4dCx0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSk7ZT1zLndpZHRoLGk9cy5oZWlnaHR9cmV0dXJue3dpZHRoOmUsaGVpZ2h0Oml9fX0se2tleTpcImdldHlBeGlzVGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1bXTtyZXR1cm4gZS5jb25maWcueWF4aXMubWFwKGZ1bmN0aW9uKGUscyl7aWYoZS5zaG93JiZ2b2lkIDAhPT1lLnRpdGxlLnRleHQpe3ZhciBhPW5ldyBHcmFwaGljcyh0LmN0eCkuZ2V0VGV4dFJlY3RzKGUudGl0bGUudGV4dCxlLnRpdGxlLnN0eWxlLmZvbnRTaXplLGUudGl0bGUuc3R5bGUuZm9udEZhbWlseSxcInJvdGF0ZSgtOTAgMCAwKVwiLCExKTtpLnB1c2goe3dpZHRoOmEud2lkdGgsaGVpZ2h0OmEuaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pLGl9fSx7a2V5OlwiZ2V0VGl0bGVTdWJ0aXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPTAscz0wLGE9XCJ0aXRsZVwiPT09dD9lLmNvbmZpZy50aXRsZS5mbG9hdGluZzplLmNvbmZpZy5zdWJ0aXRsZS5mbG9hdGluZyxyPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodCxcIi10ZXh0XCIpKTtpZihudWxsIT09ciYmIWEpe3ZhciBuPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aT1uLndpZHRoLHM9ZS5nbG9iYWxzLmF4aXNDaGFydHM/bi5oZWlnaHQrNTpuLmhlaWdodH1yZXR1cm57d2lkdGg6aSxoZWlnaHQ6c319fSx7a2V5OlwiZ2V0TGVnZW5kc1JlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1sZWdlbmRcIiksaT1PYmplY3QuYXNzaWduKHt9LFV0aWxzLmdldEJvdW5kaW5nQ2xpZW50UmVjdChlKSk7cmV0dXJuIG51bGwhPT1lJiYhdC5jb25maWcubGVnZW5kLmZsb2F0aW5nJiZ0LmNvbmZpZy5sZWdlbmQuc2hvdz90aGlzLmxnUmVjdD17eDppLngseTppLnksaGVpZ2h0OmkuaGVpZ2h0LHdpZHRoOjA9PT1pLmhlaWdodD8wOmkud2lkdGh9OnRoaXMubGdSZWN0PXt4OjAseTowLGhlaWdodDowLHdpZHRoOjB9LHRoaXMubGdSZWN0fX1dKSx0fSgpLFNlcmllcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImdldEFsbFNlcmllc0Vsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1wiKX19LHtrZXk6XCJnZXRTZXJpZXNCeU5hbWVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiW3Nlcmllc05hbWU9J1wiLmNvbmNhdChVdGlscy5lc2NhcGVTdHJpbmcodCksXCInXVwiKSl9fSx7a2V5OlwiYWRkQ29sbGFwc2VkQ2xhc3NUb1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2Z1bmN0aW9uIHMoaSl7Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspaVtzXS5pbmRleD09PWUmJnQubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkXCIpfXMoaS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcykscyhpLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzKX19LHtrZXk6XCJyZXNldFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSxlPXRoaXMudyxpPWUuZ2xvYmFscy5pbml0aWFsU2VyaWVzLnNsaWNlKCk7ZS5jb25maWcuc2VyaWVzPWksZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcz1bXSxlLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzPVtdLGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdLGUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdLGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzPVtdLHQmJnRoaXMuY3R4Ll91cGRhdGVTZXJpZXMoaSxlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9fSx7a2V5OlwidG9nZ2xlU2VyaWVzT25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1wiKTtpZihcIm1vdXNlbW92ZVwiPT09dC50eXBlKXt2YXIgYT1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInJlbFwiKSktMSxyPW51bGw7cj1pLmdsb2JhbHMuYXhpc0NoYXJ0c3x8XCJyYWRpYWxCYXJcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGU/aS5nbG9iYWxzLmF4aXNDaGFydHM/aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChhLFwiJ11cIikpOmkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQoYSsxLFwiJ11cIikpOmkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQoYSsxLFwiJ10gcGF0aFwiKSk7Zm9yKHZhciBuPTA7bjxzLmxlbmd0aDtuKyspc1tuXS5jbGFzc0xpc3QuYWRkKFwibGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZVwiKTtudWxsIT09ciYmKGkuZ2xvYmFscy5heGlzQ2hhcnRzfHxyLnBhcmVudE5vZGUuY2xhc3NMaXN0LnJlbW92ZShcImxlZ2VuZC1tb3VzZW92ZXItaW5hY3RpdmVcIiksci5jbGFzc0xpc3QucmVtb3ZlKFwibGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZVwiKSl9ZWxzZSBpZihcIm1vdXNlb3V0XCI9PT10LnR5cGUpZm9yKHZhciBvPTA7bzxzLmxlbmd0aDtvKyspc1tvXS5jbGFzc0xpc3QucmVtb3ZlKFwibGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZVwiKX19LHtrZXk6XCJoaWdobGlnaHRSYW5nZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtaGVhdG1hcC1yZWN0XCIpLGE9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHMubGVuZ3RoO3QrKylzW3RdLmNsYXNzTGlzdC5yZW1vdmUoXCJsZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlXCIpfTtpZihcIm1vdXNlbW92ZVwiPT09dC50eXBlKXt2YXIgcj1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInJlbFwiKSktMTthKCksZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHMubGVuZ3RoO3QrKylzW3RdLmNsYXNzTGlzdC5hZGQoXCJsZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlXCIpfSgpLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8cy5sZW5ndGg7ZSsrKXt2YXIgaT1wYXJzZUludChzW2VdLmdldEF0dHJpYnV0ZShcInZhbFwiKSk7aT49dC5mcm9tJiZpPD10LnRvJiZzW2VdLmNsYXNzTGlzdC5yZW1vdmUoXCJsZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlXCIpfX0oaS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLnJhbmdlc1tyXSl9ZWxzZVwibW91c2VvdXRcIj09PXQudHlwZSYmYSgpfX0se2tleTpcImdldEFjdGl2ZVNlcmllc0luZGV4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wO2lmKHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpZm9yKHZhciBpPXQuZ2xvYmFscy5zZXJpZXMubWFwKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGUubGVuZ3RoPjAmJlwiYmFyXCIhPT10LmNvbmZpZy5zZXJpZXNbaV0udHlwZSYmXCJjb2x1bW5cIiE9PXQuY29uZmlnLnNlcmllc1tpXS50eXBlP2k6LTF9KSxzPTA7czxpLmxlbmd0aDtzKyspaWYoLTEhPT1pW3NdKXtlPWlbc107YnJlYWt9cmV0dXJuIGV9fSx7a2V5OlwiZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTA7aWYodC5jb25maWcuc2VyaWVzLmxlbmd0aD4xKWZvcih2YXIgaT10LmNvbmZpZy5zZXJpZXMubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGF0YSYmdC5kYXRhLmxlbmd0aD4wP2U6LTF9KSxzPTA7czxpLmxlbmd0aDtzKyspaWYoLTEhPT1pW3NdKXtlPWlbc107YnJlYWt9cmV0dXJuIGV9fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2Z1bmN0aW9uIGUoZSxpLHMpe2Zvcih2YXIgYT1lW2ldLmNoaWxkTm9kZXMscj17dHlwZTpzLHBhdGhzOltdLHJlYWxJbmRleDplW2ldLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpfSxuPTA7bjxhLmxlbmd0aDtuKyspaWYoYVtuXS5oYXNBdHRyaWJ1dGUoXCJwYXRoVG9cIikpe3ZhciBvPWFbbl0uZ2V0QXR0cmlidXRlKFwicGF0aFRvXCIpO3IucGF0aHMucHVzaCh7ZDpvfSl9dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChyKX10Lmdsb2JhbHMucHJldmlvdXNQYXRocz1bXTt2YXIgaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtbGluZS1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzXCIpO2lmKGkubGVuZ3RoPjApZm9yKHZhciBzPWkubGVuZ3RoLTE7cz49MDtzLS0pZShpLHMsXCJsaW5lXCIpO3ZhciBhPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNcIik7aWYoYS5sZW5ndGg+MClmb3IodmFyIHI9YS5sZW5ndGgtMTtyPj0wO3ItLSllKGEscixcImFyZWFcIik7dmFyIG49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzXCIpO2lmKG4ubGVuZ3RoPjApZm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspZShuLG8sXCJiYXJcIik7dmFyIGw9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNcIik7aWYobC5sZW5ndGg+MClmb3IodmFyIGg9MDtoPGwubGVuZ3RoO2grKyllKGwsaCxcImNhbmRsZXN0aWNrXCIpO3ZhciBjPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzXCIpO2lmKGMubGVuZ3RoPjApZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspZShjLGQsXCJyYWRhclwiKTt2YXIgdT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtYnViYmxlLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNcIik7aWYodS5sZW5ndGg+MClmb3IodmFyIGc9MDtnPHUubGVuZ3RoO2crKyl7Zm9yKHZhciBmPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1idWJibGUtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChnLFwiJ10gY2lyY2xlXCIpKSxwPVtdLHg9MDt4PGYubGVuZ3RoO3grKylwLnB1c2goe3g6Zlt4XS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSx5OmZbeF0uZ2V0QXR0cmlidXRlKFwiY3lcIikscjpmW3hdLmdldEF0dHJpYnV0ZShcInJcIil9KTt0Lmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKHApfXZhciBtPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zY2F0dGVyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNcIik7aWYobS5sZW5ndGg+MClmb3IodmFyIGI9MDtiPG0ubGVuZ3RoO2IrKyl7Zm9yKHZhciB2PXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zY2F0dGVyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQoYixcIiddIGNpcmNsZVwiKSkseT1bXSx3PTA7dzx2Lmxlbmd0aDt3KyspeS5wdXNoKHt4OnZbd10uZ2V0QXR0cmlidXRlKFwiY3hcIikseTp2W3ddLmdldEF0dHJpYnV0ZShcImN5XCIpLHI6dlt3XS5nZXRBdHRyaWJ1dGUoXCJyXCIpfSk7dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaCh5KX12YXIgaz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtaGVhdG1hcCAuYXBleGNoYXJ0cy1zZXJpZXNcIik7aWYoay5sZW5ndGg+MClmb3IodmFyIEE9MDtBPGsubGVuZ3RoO0ErKyl7Zm9yKHZhciBTPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1oZWF0bWFwIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChBLFwiJ10gcmVjdFwiKSksQz1bXSxMPTA7TDxTLmxlbmd0aDtMKyspQy5wdXNoKHtjb2xvcjpTW0xdLmdldEF0dHJpYnV0ZShcImNvbG9yXCIpfSk7dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChDKX10Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8KHQuZ2xvYmFscy5wcmV2aW91c1BhdGhzPXQuZ2xvYmFscy5zZXJpZXMpfX0se2tleTpcImhhbmRsZU5vRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcubm9EYXRhLGk9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxzPXQuZ2xvYmFscy5zdmdXaWR0aC8yLGE9dC5nbG9iYWxzLnN2Z0hlaWdodC8yLHI9XCJtaWRkbGVcIjtpZih0Lmdsb2JhbHMubm9EYXRhPSEwLHQuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCxcImxlZnRcIj09PWUuYWxpZ24/KHM9MTAscj1cInN0YXJ0XCIpOlwicmlnaHRcIj09PWUuYWxpZ24mJihzPXQuZ2xvYmFscy5zdmdXaWR0aC0xMCxyPVwiZW5kXCIpLFwidG9wXCI9PT1lLnZlcnRpY2FsQWxpZ24/YT01MDpcImJvdHRvbVwiPT09ZS52ZXJ0aWNhbEFsaWduJiYoYT10Lmdsb2JhbHMuc3ZnSGVpZ2h0LTUwKSxzKz1lLm9mZnNldFgsYT1hK3BhcnNlSW50KGUuc3R5bGUuZm9udFNpemUpKzIsdm9pZCAwIT09ZS50ZXh0JiZcIlwiIT09ZS50ZXh0KXt2YXIgbj1pLmRyYXdUZXh0KHt4OnMseTphLHRleHQ6ZS50ZXh0LHRleHRBbmNob3I6cixmb250U2l6ZTplLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjplLnN0eWxlLmNvbG9yLG9wYWNpdHk6MSxjbGFzczpcImFwZXhjaGFydHMtdGV4dC1ub2RhdGFcIn0pO24ubm9kZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLFwiYXBleGNoYXJ0cy10aXRsZS10ZXh0XCIpLHQuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG4pfX19LHtrZXk6XCJzZXROdWxsU2VyaWVzVG9aZXJvVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTA7aTx0Lmxlbmd0aDtpKyspaWYoMD09PXRbaV0ubGVuZ3RoKWZvcih2YXIgcz0wO3M8dFtlLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO3MrKyl0W2ldLnB1c2goMCk7cmV0dXJuIHR9fSx7a2V5OlwiaGFzQWxsU2VyaWVzRXF1YWxYXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ITAsZT10aGlzLncsaT10aGlzLmZpbHRlcmVkU2VyaWVzWCgpLHM9MDtzPGkubGVuZ3RoLTE7cysrKWlmKGlbc11bMF0hPT1pW3MrMV1bMF0pe3Q9ITE7YnJlYWt9cmV0dXJuIGUuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFg9dCx0fX0se2tleTpcImZpbHRlcmVkU2VyaWVzWFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuc2VyaWVzWC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+MD90OltdfSk7cmV0dXJuIHR9fV0pLHR9KCksTGVnZW5kPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLm9uTGVnZW5kQ2xpY2s9dGhpcy5vbkxlZ2VuZENsaWNrLmJpbmQodGhpcyksdGhpcy5vbkxlZ2VuZEhvdmVyZWQ9dGhpcy5vbkxlZ2VuZEhvdmVyZWQuYmluZCh0aGlzKX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT10LmNvbmZpZztpZigoaS5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllcyYmMT09PWUuc2VyaWVzLmxlbmd0aHx8ZS5zZXJpZXMubGVuZ3RoPjF8fCFlLmF4aXNDaGFydHMpJiZpLmxlZ2VuZC5zaG93KXtmb3IoO2UuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkOyllLmRvbS5lbExlZ2VuZFdyYXAucmVtb3ZlQ2hpbGQoZS5kb20uZWxMZWdlbmRXcmFwLmZpcnN0Q2hpbGQpO3RoaXMuZHJhd0xlZ2VuZHMoKSxVdGlscy5pc0lFMTEoKT9kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQodGhpcy5nZXRMZWdlbmRTdHlsZXMoKSk6dGhpcy5hcHBlbmRUb0ZvcmVpZ25PYmplY3QoKSxcImJvdHRvbVwiPT09aS5sZWdlbmQucG9zaXRpb258fFwidG9wXCI9PT1pLmxlZ2VuZC5wb3NpdGlvbj90aGlzLmxlZ2VuZEFsaWduSG9yaXpvbnRhbCgpOlwicmlnaHRcIiE9PWkubGVnZW5kLnBvc2l0aW9uJiZcImxlZnRcIiE9PWkubGVnZW5kLnBvc2l0aW9ufHx0aGlzLmxlZ2VuZEFsaWduVmVydGljYWwoKX19fSx7a2V5OlwiYXBwZW5kVG9Gb3JlaWduT2JqZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFsczt0LmRvbS5lbExlZ2VuZEZvcmVpZ249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuU1ZHTlMsXCJmb3JlaWduT2JqZWN0XCIpO3ZhciBlPXQuZG9tLmVsTGVnZW5kRm9yZWlnbjtlLnNldEF0dHJpYnV0ZShcInhcIiwwKSxlLnNldEF0dHJpYnV0ZShcInlcIiwwKSxlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsdC5zdmdXaWR0aCksZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIix0LnN2Z0hlaWdodCksdC5kb20uZWxMZWdlbmRXcmFwLnNldEF0dHJpYnV0ZShcInhtbG5zXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpLGUuYXBwZW5kQ2hpbGQodC5kb20uZWxMZWdlbmRXcmFwKSxlLmFwcGVuZENoaWxkKHRoaXMuZ2V0TGVnZW5kU3R5bGVzKCkpLHQuZG9tLlBhcGVyLm5vZGUuaW5zZXJ0QmVmb3JlKGUsdC5kb20uZWxHcmFwaGljYWwubm9kZSl9fSx7a2V5OlwiZHJhd0xlZ2VuZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLmxlZ2VuZC5mb250RmFtaWx5LGk9dC5nbG9iYWxzLnNlcmllc05hbWVzLHM9dC5nbG9iYWxzLmNvbG9ycy5zbGljZSgpO2lmKFwiaGVhdG1hcFwiPT09dC5jb25maWcuY2hhcnQudHlwZSl7dmFyIGE9dC5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLnJhbmdlcztpPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU/dC5uYW1lOnQuZnJvbStcIiAtIFwiK3QudG99KSxzPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9yfSl9Zm9yKHZhciByPXQuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXIsbj10LmNvbmZpZy5sZWdlbmQuaW52ZXJzZU9yZGVyLG89bj9pLmxlbmd0aC0xOjA7bj9vPj0wOm88PWkubGVuZ3RoLTE7bj9vLS06bysrKXt2YXIgbD1yKGlbb10se3Nlcmllc0luZGV4Om8sdzp0fSksaD0hMSxjPSExO2lmKHQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoPjApZm9yKHZhciBkPTA7ZDx0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDtkKyspdC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc1tkXS5pbmRleD09PW8mJihoPSEwKTtpZih0Lmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg+MClmb3IodmFyIHU9MDt1PHQuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aDt1KyspdC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXNbdV09PT1vJiYoYz0hMCk7dmFyIGc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7Zy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpO3ZhciBmPXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9mZnNldFgscD10LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vZmZzZXRZLHg9dC5jb25maWcubGVnZW5kLm1hcmtlcnMuaGVpZ2h0LG09dC5jb25maWcubGVnZW5kLm1hcmtlcnMud2lkdGgsYj10LmNvbmZpZy5sZWdlbmQubWFya2Vycy5zdHJva2VXaWR0aCx2PXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnN0cm9rZUNvbG9yLHk9dC5jb25maWcubGVnZW5kLm1hcmtlcnMucmFkaXVzLHc9Zy5zdHlsZTt3LmJhY2tncm91bmQ9c1tvXSx3LmNvbG9yPXNbb10sdy5oZWlnaHQ9QXJyYXkuaXNBcnJheSh4KT9wYXJzZUZsb2F0KHhbb10pK1wicHhcIjpwYXJzZUZsb2F0KHgpK1wicHhcIix3LndpZHRoPUFycmF5LmlzQXJyYXkobSk/cGFyc2VGbG9hdChtW29dKStcInB4XCI6cGFyc2VGbG9hdChtKStcInB4XCIsdy5sZWZ0PUFycmF5LmlzQXJyYXkoZik/ZltvXTpmLHcudG9wPUFycmF5LmlzQXJyYXkocCk/cFtvXTpwLHcuYm9yZGVyV2lkdGg9QXJyYXkuaXNBcnJheShiKT9iW29dOmIsdy5ib3JkZXJDb2xvcj1BcnJheS5pc0FycmF5KHYpP3Zbb106dix3LmJvcmRlclJhZGl1cz1BcnJheS5pc0FycmF5KHkpP3BhcnNlRmxvYXQoeVtvXSkrXCJweFwiOnBhcnNlRmxvYXQoeSkrXCJweFwiLHQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwmJihBcnJheS5pc0FycmF5KHQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwpP2cuaW5uZXJIVE1MPXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUxbb10oKTpnLmlubmVySFRNTD10LmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKCkpLEdyYXBoaWNzLnNldEF0dHJzKGcse3JlbDpvKzEsXCJkYXRhOmNvbGxhcHNlZFwiOmh8fGN9KSwoaHx8YykmJmcuY2xhc3NMaXN0LmFkZChcImluYWN0aXZlLWxlZ2VuZFwiKTt2YXIgaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLEE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7QS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKSxBLmlubmVySFRNTD1sO3ZhciBTPXQuY29uZmlnLmxlZ2VuZC5sYWJlbHMudXNlU2VyaWVzQ29sb3JzP3QuZ2xvYmFscy5jb2xvcnNbb106dC5jb25maWcubGVnZW5kLmxhYmVscy5jb2xvcnM7U3x8KFM9dC5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSxBLnN0eWxlLmNvbG9yPVMsQS5zdHlsZS5mb250U2l6ZT1wYXJzZUZsb2F0KHQuY29uZmlnLmxlZ2VuZC5mb250U2l6ZSkrXCJweFwiLEEuc3R5bGUuZm9udEZhbWlseT1lfHx0LmNvbmZpZy5jaGFydC5mb250RmFtaWx5LEdyYXBoaWNzLnNldEF0dHJzKEEse3JlbDpvKzEsXCJkYXRhOmNvbGxhcHNlZFwiOmh8fGN9KSxrLmFwcGVuZENoaWxkKGcpLGsuYXBwZW5kQ2hpbGQoQSk7dmFyIEM9bmV3IENvcmVVdGlscyh0aGlzLmN0eCk7aWYoIXQuY29uZmlnLmxlZ2VuZC5zaG93Rm9yWmVyb1NlcmllcykwPT09Qy5nZXRTZXJpZXNUb3RhbEJ5SW5kZXgobykmJkMuc2VyaWVzSGF2ZVNhbWVWYWx1ZXMobykmJiFDLmlzU2VyaWVzTnVsbChvKSYmLTE9PT10Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKG8pJiYtMT09PXQuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobykmJmsuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLXplcm8tc2VyaWVzXCIpO3QuY29uZmlnLmxlZ2VuZC5zaG93Rm9yTnVsbFNlcmllc3x8Qy5pc1Nlcmllc051bGwobykmJi0xPT09dC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihvKSYmLTE9PT10Lmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKG8pJiZrLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGRlbi1udWxsLXNlcmllc1wiKSx0Lmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5hcHBlbmRDaGlsZChrKSx0Lmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKHQuY29uZmlnLmxlZ2VuZC5ob3Jpem9udGFsQWxpZ24pLHQuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoXCJwb3NpdGlvbi1cIit0LmNvbmZpZy5sZWdlbmQucG9zaXRpb24pLGsuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLXNlcmllc1wiKSxrLnN0eWxlLm1hcmdpbj1cIlwiLmNvbmNhdCh0LmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi5ob3Jpem9udGFsLFwicHggXCIpLmNvbmNhdCh0LmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi52ZXJ0aWNhbCxcInB4XCIpLHQuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLndpZHRoPXQuY29uZmlnLmxlZ2VuZC53aWR0aD90LmNvbmZpZy5sZWdlbmQud2lkdGgrXCJweFwiOlwiXCIsdC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUuaGVpZ2h0PXQuY29uZmlnLmxlZ2VuZC5oZWlnaHQ/dC5jb25maWcubGVnZW5kLmhlaWdodCtcInB4XCI6XCJcIixHcmFwaGljcy5zZXRBdHRycyhrLHtyZWw6bysxLFwiZGF0YTpjb2xsYXBzZWRcIjpofHxjfSksKGh8fGMpJiZrLmNsYXNzTGlzdC5hZGQoXCJpbmFjdGl2ZS1sZWdlbmRcIiksdC5jb25maWcubGVnZW5kLm9uSXRlbUNsaWNrLnRvZ2dsZURhdGFTZXJpZXN8fGsuY2xhc3NMaXN0LmFkZChcIm5vLWNsaWNrXCIpfVwiaGVhdG1hcFwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmdC5jb25maWcubGVnZW5kLm9uSXRlbUNsaWNrLnRvZ2dsZURhdGFTZXJpZXMmJnQuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMub25MZWdlbmRDbGljaywhMCksdC5jb25maWcubGVnZW5kLm9uSXRlbUhvdmVyLmhpZ2hsaWdodERhdGFTZXJpZXMmJih0Lmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdGhpcy5vbkxlZ2VuZEhvdmVyZWQsITApLHQuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW91dFwiLHRoaXMub25MZWdlbmRIb3ZlcmVkLCEwKSl9fSx7a2V5OlwiZ2V0TGVnZW5kQkJveFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtbGVnZW5kXCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dC53aWR0aDtyZXR1cm57Y2x3aDp0LmhlaWdodCxjbHd3OmV9fX0se2tleTpcInNldExlZ2VuZFdyYXBYWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWxlZ2VuZFwiKSxhPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj0wLG49MDtpZihcImJvdHRvbVwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uKW4rPWkuZ2xvYmFscy5zdmdIZWlnaHQtYS5oZWlnaHQvMjtlbHNlIGlmKFwidG9wXCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pe3ZhciBvPW5ldyBEaW1lbnNpb25zKHRoaXMuY3R4KSxsPW8uZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLmhlaWdodCxoPW8uZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpLmhlaWdodDtuPW4rKGw+MD9sLTEwOjApKyhoPjA/aC0xMDowKX1zLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixyPXIrdCtpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCxuPW4rZStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WSxzLnN0eWxlLmxlZnQ9citcInB4XCIscy5zdHlsZS50b3A9bitcInB4XCIsXCJib3R0b21cIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8ocy5zdHlsZS50b3A9XCJhdXRvXCIscy5zdHlsZS5ib3R0b209MTAraS5jb25maWcubGVnZW5kLm9mZnNldFkrXCJweFwiKTpcInJpZ2h0XCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihzLnN0eWxlLmxlZnQ9XCJhdXRvXCIscy5zdHlsZS5yaWdodD0yNStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCtcInB4XCIpLHMuc3R5bGUud2lkdGgmJihzLnN0eWxlLndpZHRoPXBhcnNlSW50KGkuY29uZmlnLmxlZ2VuZC53aWR0aCkrXCJweFwiKSxzLnN0eWxlLmhlaWdodCYmKHMuc3R5bGUuaGVpZ2h0PXBhcnNlSW50KGkuY29uZmlnLmxlZ2VuZC5oZWlnaHQpK1wicHhcIil9fSx7a2V5OlwibGVnZW5kQWxpZ25Ib3Jpem9udGFsXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWxlZ2VuZFwiKS5zdHlsZS5yaWdodD0wO3ZhciBlPXRoaXMuZ2V0TGVnZW5kQkJveCgpLGk9bmV3IERpbWVuc2lvbnModGhpcy5jdHgpLHM9aS5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIiksYT1pLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJzdWJ0aXRsZVwiKSxyPTA7XCJib3R0b21cIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj9yPS1lLmNsd2gvMS44OlwidG9wXCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihyPXMuaGVpZ2h0K2EuaGVpZ2h0K3QuY29uZmlnLnRpdGxlLm1hcmdpbit0LmNvbmZpZy5zdWJ0aXRsZS5tYXJnaW4tMTUpLHRoaXMuc2V0TGVnZW5kV3JhcFhZKDIwLHIpfX0se2tleTpcImxlZ2VuZEFsaWduVmVydGljYWxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMuZ2V0TGVnZW5kQkJveCgpLGk9MDtcImxlZnRcIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKGk9MjApLFwicmlnaHRcIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKGk9dC5nbG9iYWxzLnN2Z1dpZHRoLWUuY2x3dy0xMCksdGhpcy5zZXRMZWdlbmRXcmFwWFkoaSwyMCl9fSx7a2V5Olwib25MZWdlbmRIb3ZlcmVkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpO2lmKFwiaGVhdG1hcFwiIT09ZS5jb25maWcuY2hhcnQudHlwZSkhdC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiaW5hY3RpdmUtbGVnZW5kXCIpJiZpJiZuZXcgU2VyaWVzKHRoaXMuY3R4KS50b2dnbGVTZXJpZXNPbkhvdmVyKHQsdC50YXJnZXQpO2Vsc2UgaWYoaSl7dmFyIHM9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKFwicmVsXCIpKS0xO3RoaXMuY3R4LmZpcmVFdmVudChcImxlZ2VuZEhvdmVyXCIsW3RoaXMuY3R4LHMsdGhpcy53XSksbmV3IFNlcmllcyh0aGlzLmN0eCkuaGlnaGxpZ2h0UmFuZ2VJblNlcmllcyh0LHQudGFyZ2V0KX19fSx7a2V5Olwib25MZWdlbmRDbGlja1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKSl7dmFyIGU9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKFwicmVsXCIpKS0xLGk9XCJ0cnVlXCI9PT10LnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmNvbGxhcHNlZFwiKSxzPXRoaXMudy5jb25maWcuY2hhcnQuZXZlbnRzLmxlZ2VuZENsaWNrO1wiZnVuY3Rpb25cIj09dHlwZW9mIHMmJnModGhpcy5jdHgsZSx0aGlzLncpLHRoaXMuY3R4LmZpcmVFdmVudChcImxlZ2VuZENsaWNrXCIsW3RoaXMuY3R4LGUsdGhpcy53XSk7dmFyIGE9dGhpcy53LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vbkNsaWNrO1wiZnVuY3Rpb25cIj09dHlwZW9mIGEmJnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKSYmKGEodGhpcy5jdHgsZSx0aGlzLncpLHRoaXMuY3R4LmZpcmVFdmVudChcImxlZ2VuZE1hcmtlckNsaWNrXCIsW3RoaXMuY3R4LGUsdGhpcy53XSkpLHRoaXMudG9nZ2xlRGF0YVNlcmllcyhlLGkpfX19LHtrZXk6XCJnZXRMZWdlbmRTdHlsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTt0LnNldEF0dHJpYnV0ZShcInR5cGVcIixcInRleHQvY3NzXCIpO3ZhciBlPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXFxuICAgIFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XFxuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5wb3NpdGlvbi1ib3R0b20sIC5hcGV4Y2hhcnRzLWxlZ2VuZC5wb3NpdGlvbi10b3Age1xcbiAgICAgICAgZmxleC13cmFwOiB3cmFwXFxuICAgICAgfVxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLnBvc2l0aW9uLWxlZnQge1xcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgIGJvdHRvbTogMDtcXG4gICAgICB9XFxuXFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLnBvc2l0aW9uLWJvdHRvbS5sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQucG9zaXRpb24tdG9wLmxlZnQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLnBvc2l0aW9uLWxlZnQge1xcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcbiAgICAgIH1cXG5cXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQucG9zaXRpb24tYm90dG9tLmNlbnRlciwgLmFwZXhjaGFydHMtbGVnZW5kLnBvc2l0aW9uLXRvcC5jZW50ZXIge1xcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7ICBcXG4gICAgICB9XFxuXFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLnBvc2l0aW9uLWJvdHRvbS5yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLnBvc2l0aW9uLXRvcC5yaWdodCB7XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgICAgIH1cXG5cXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzIHtcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XFxuICAgICAgfVxcblxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5wb3NpdGlvbi1ib3R0b20gLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kLnBvc2l0aW9uLXRvcCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgfVxcblxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXRleHQgKiwgLmFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciAqIHtcXG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICAgIH1cXG5cXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyIHtcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xcbiAgICAgIH1cXG4gICAgICBcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQucmlnaHQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kLmxlZnQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllc3tcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgICB9XFxuXFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcy5uby1jbGljayB7XFxuICAgICAgICBjdXJzb3I6IGF1dG87XFxuICAgICAgfVxcblxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCAuYXBleGNoYXJ0cy1oaWRkZW4temVyby1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZCAuYXBleGNoYXJ0cy1oaWRkZW4tbnVsbC1zZXJpZXMge1xcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgIH1cXG5cXG4gICAgICAuaW5hY3RpdmUtbGVnZW5kIHtcXG4gICAgICAgIG9wYWNpdHk6IDAuNDU7XFxuICAgICAgfVwiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlKSx0fX0se2tleTpcInRvZ2dsZURhdGFTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZihpLmdsb2JhbHMuYXhpc0NoYXJ0c3x8XCJyYWRpYWxCYXJcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUpe2kuZ2xvYmFscy5yZXNpemVkPSEwO3ZhciBzPW51bGwsYT1udWxsO2lmKGkuZ2xvYmFscy5yaXNpbmdTZXJpZXM9W10saS5nbG9iYWxzLmF4aXNDaGFydHM/KHM9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ11cIikpLGE9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSkpOihzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQodCsxLFwiJ11cIikpLGE9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIikpLTEpLGUpdGhpcy5yaXNlQ29sbGFwc2VkU2VyaWVzKGkuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMsaS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMsYSksdGhpcy5yaXNlQ29sbGFwc2VkU2VyaWVzKGkuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMsaS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMsYSk7ZWxzZXtpZihpLmdsb2JhbHMuYXhpc0NoYXJ0cyl7dmFyIHI9ITE7aWYoaS5jb25maWcueWF4aXNbYV0mJmkuY29uZmlnLnlheGlzW2FdLnNob3cmJmkuY29uZmlnLnlheGlzW2FdLnNob3dBbHdheXMmJihyPSEwLGkuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSk8MCYmKGkuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6YSxkYXRhOmkuY29uZmlnLnNlcmllc1thXS5kYXRhLnNsaWNlKCksdHlwZTpzLnBhcmVudE5vZGUuY2xhc3NOYW1lLmJhc2VWYWwuc3BsaXQoXCItXCIpWzFdfSksaS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChhKSkpLCFyKXtpLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmEsZGF0YTppLmNvbmZpZy5zZXJpZXNbYV0uZGF0YS5zbGljZSgpLHR5cGU6cy5wYXJlbnROb2RlLmNsYXNzTmFtZS5iYXNlVmFsLnNwbGl0KFwiLVwiKVsxXX0pLGkuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLnB1c2goYSk7dmFyIG49aS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5pbmRleE9mKGEpO2kuZ2xvYmFscy5yaXNpbmdTZXJpZXMuc3BsaWNlKG4sMSl9aS5jb25maWcuc2VyaWVzW2FdLmRhdGE9W119ZWxzZSBpLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmEsZGF0YTppLmNvbmZpZy5zZXJpZXNbYV19KSxpLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGEpLGkuY29uZmlnLnNlcmllc1thXT0wO2Zvcih2YXIgbz1zLmNoaWxkTm9kZXMsbD0wO2w8by5sZW5ndGg7bCsrKW9bbF0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpJiYob1tsXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWhpZGVcIik/b1tsXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1oaWRlXCIpOm9bbF0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZVwiKSk7aS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZD1pLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aD09PWkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLHRoaXMuY3R4Ll91cGRhdGVTZXJpZXMoaS5jb25maWcuc2VyaWVzLGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX19ZWxzZXt2YXIgaD1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIiAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQodCsxLFwiJ10gcGF0aFwiKSksYz1pLmNvbmZpZy5jaGFydC50eXBlO2lmKFwicGllXCI9PT1jfHxcImRvbnV0XCI9PT1jKXt2YXIgZD1pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQubGFiZWxzLHU9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxnPW5ldyBQaWUodGhpcy5jdHgpO3UucGF0aE1vdXNlRG93bihoLm1lbWJlcnNbMF0sbnVsbCksZy5wcmludERhdGFMYWJlbHNJbm5lcihoLm1lbWJlcnNbMF0ubm9kZSxkKX1oLmZpcmUoXCJjbGlja1wiKX19fSx7a2V5OlwicmlzZUNvbGxhcHNlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLnc7aWYodC5sZW5ndGg+MClmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKyl0W2FdLmluZGV4PT09aSYmKHMuZ2xvYmFscy5heGlzQ2hhcnRzPyhzLmNvbmZpZy5zZXJpZXNbaV0uZGF0YT10W2FdLmRhdGEuc2xpY2UoKSx0LnNwbGljZShhLDEpLGUuc3BsaWNlKGEsMSkscy5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKToocy5jb25maWcuc2VyaWVzW2ldPXRbYV0uZGF0YSx0LnNwbGljZShhLDEpLGUuc3BsaWNlKGEsMSkscy5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKSx0aGlzLmN0eC5fdXBkYXRlU2VyaWVzKHMuY29uZmlnLnNlcmllcyxzLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCkpfX1dKSx0fSgpLExpbmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSxzKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54eVJhdGlvcz1pLHRoaXMucG9pbnRzQ2hhcnQ9IShcImJ1YmJsZVwiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcInNjYXR0ZXJcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSl8fHMsdGhpcy5zY2F0dGVyPW5ldyBTY2F0dGVyKHRoaXMuY3R4KSx0aGlzLm5vTmVnYXRpdmVzPXRoaXMudy5nbG9iYWxzLm1pblg9PT1OdW1iZXIuTUFYX1ZBTFVFLHRoaXMueWF4aXNJbmRleD0wfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxyPW5ldyBGaWxsKHRoaXMuY3R4KSxuPXMuZ2xvYmFscy5jb21ib0NoYXJ0cz9lOnMuY29uZmlnLmNoYXJ0LnR5cGUsbz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtXCIuY29uY2F0KG4sXCItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIil9KSxsPW5ldyBDb3JlVXRpbHModGhpcy5jdHgscyk7dD1sLmdldExvZ1Nlcmllcyh0KTt2YXIgaD10aGlzLnh5UmF0aW9zLnlSYXRpbztoPWwuZ2V0TG9nWVJhdGlvcyhoKTtmb3IodmFyIGM9dGhpcy54eVJhdGlvcy56UmF0aW8sZD10aGlzLnh5UmF0aW9zLnhSYXRpbyx1PXRoaXMueHlSYXRpb3MuYmFzZUxpbmVZLGc9W10sZj1bXSxwPTAseD0wO3g8dC5sZW5ndGg7eCsrKXtpZihcImxpbmVcIj09PW4mJihcImdyYWRpZW50XCI9PT1zLmNvbmZpZy5maWxsLnR5cGV8fFwiZ3JhZGllbnRcIj09PXMuY29uZmlnLmZpbGwudHlwZVt4XSkmJmwuc2VyaWVzSGF2ZVNhbWVWYWx1ZXMoeCkpe3ZhciBtPXRbeF0uc2xpY2UoKTttW20ubGVuZ3RoLTFdPW1bbS5sZW5ndGgtMV0rMWUtNix0W3hdPW19dmFyIGI9cy5nbG9iYWxzLmdyaWRXaWR0aC9zLmdsb2JhbHMuZGF0YVBvaW50cyx2PXMuZ2xvYmFscy5jb21ib0NoYXJ0cz9pW3hdOng7aC5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD12KSx0aGlzLmlzUmV2ZXJzZWQ9cy5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XSYmcy5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XS5yZXZlcnNlZDt2YXIgeT1bXSx3PVtdLGs9cy5nbG9iYWxzLmdyaWRIZWlnaHQtdVt0aGlzLnlheGlzSW5kZXhdLSh0aGlzLmlzUmV2ZXJzZWQ/cy5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuaXNSZXZlcnNlZD8yKnVbdGhpcy55YXhpc0luZGV4XTowKSxBPWs7az5zLmdsb2JhbHMuZ3JpZEhlaWdodCYmKEE9cy5nbG9iYWxzLmdyaWRIZWlnaHQpLHA9Yi8yO3ZhciBTPXMuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3AsQz0xO3MuZ2xvYmFscy5pc1hOdW1lcmljJiZzLmdsb2JhbHMuc2VyaWVzWC5sZW5ndGg+MCYmKFM9KHMuZ2xvYmFscy5zZXJpZXNYW3ZdWzBdLXMuZ2xvYmFscy5taW5YKS9kKSx3LnB1c2goUyk7dmFyIEw9dm9pZCAwLFA9dm9pZCAwLHo9dm9pZCAwLFQ9dm9pZCAwLE09W10sRT1bXSxYPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOlV0aWxzLmVzY2FwZVN0cmluZyhzLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pfSksST1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwifSksWT1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wifSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoWCx2KTt2YXIgRj10W3hdLmxlbmd0aD09PXMuZ2xvYmFscy5kYXRhUG9pbnRzO1guYXR0cih7XCJkYXRhOmxvbmdlc3RTZXJpZXNcIjpGLHJlbDp4KzEsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KSx0aGlzLmFwcGVuZFBhdGhGcm9tPSEwO3ZhciBSPVMsRD12b2lkIDAsTj1SLE89ayxfPTA7aWYoTz10aGlzLmRldGVybWluZUZpcnN0UHJldlkoe2k6eCxzZXJpZXM6dCx5UmF0aW86aFt0aGlzLnlheGlzSW5kZXhdLHplcm9ZOmsscHJldlk6TyxwcmV2U2VyaWVzWTpmLGxpbmVZUG9zaXRpb246X30pLnByZXZZLHkucHVzaChPKSxEPU8sbnVsbD09PXRbeF1bMF0pe2Zvcih2YXIgSD0wO0g8dFt4XS5sZW5ndGg7SCsrKWlmKG51bGwhPT10W3hdW0hdKXtOPWIqSCxPPWstdFt4XVtIXS9oW3RoaXMueWF4aXNJbmRleF0sTD1hLm1vdmUoTixPKSxQPWEubW92ZShOLEEpO2JyZWFrfX1lbHNlIEw9YS5tb3ZlKE4sTyksUD1hLm1vdmUoTixBKSthLmxpbmUoTixPKTtpZih6PWEubW92ZSgtMSxrKSthLmxpbmUoLTEsayksVD1hLm1vdmUoLTEsaykrYS5saW5lKC0xLGspLHMuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wKXt2YXIgVz10aGlzLmNoZWNrUHJldmlvdXNQYXRocyh7cGF0aEZyb21MaW5lOnoscGF0aEZyb21BcmVhOlQscmVhbEluZGV4OnZ9KTt6PVcucGF0aEZyb21MaW5lLFQ9Vy5wYXRoRnJvbUFyZWF9Zm9yKHZhciBHPXMuZ2xvYmFscy5kYXRhUG9pbnRzPjE/cy5nbG9iYWxzLmRhdGFQb2ludHMtMTpzLmdsb2JhbHMuZGF0YVBvaW50cyxCPTA7QjxHO0IrKyl7aWYocy5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBWPXMuZ2xvYmFscy5zZXJpZXNYW3ZdW0IrMV07dm9pZCAwPT09cy5nbG9iYWxzLnNlcmllc1hbdl1bQisxXSYmKFY9cy5nbG9iYWxzLnNlcmllc1hbdl1bRy0xXSksUz0oVi1zLmdsb2JhbHMubWluWCkvZH1lbHNlIFMrPWI7dmFyIFU9VXRpbHMuaXNOdW1iZXIocy5nbG9iYWxzLm1pbllBcnJbdl0pP3MuZ2xvYmFscy5taW5ZQXJyW3ZdOnMuZ2xvYmFscy5taW5ZO3MuY29uZmlnLmNoYXJ0LnN0YWNrZWQ/KF89eD4wJiZzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDxzLmNvbmZpZy5zZXJpZXMubGVuZ3RoLTE/Zlt4LTFdW0IrMV06ayxDPXZvaWQgMD09PXRbeF1bQisxXXx8bnVsbD09PXRbeF1bQisxXT9fLVUvaFt0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD9VL2hbdGhpcy55YXhpc0luZGV4XTowKTpfLXRbeF1bQisxXS9oW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP3RbeF1bQisxXS9oW3RoaXMueWF4aXNJbmRleF06MCkpOkM9dm9pZCAwPT09dFt4XVtCKzFdfHxudWxsPT09dFt4XVtCKzFdP2stVS9oW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP1UvaFt0aGlzLnlheGlzSW5kZXhdOjApOmstdFt4XVtCKzFdL2hbdGhpcy55YXhpc0luZGV4XSsyKih0aGlzLmlzUmV2ZXJzZWQ/dFt4XVtCKzFdL2hbdGhpcy55YXhpc0luZGV4XTowKSx3LnB1c2goUykseS5wdXNoKEMpO3ZhciBqPXRoaXMuY3JlYXRlUGF0aHMoe3Nlcmllczp0LGk6eCxqOkIseDpTLHk6Qyx4RGl2aXNpb246YixwWDpSLHBZOkQsYXJlYUJvdHRvbVk6QSxsaW5lUGF0aDpMLGFyZWFQYXRoOlAsbGluZVBhdGhzOk0sYXJlYVBhdGhzOkUsc2VyaWVzSW5kZXg6aX0pO0U9ai5hcmVhUGF0aHMsTT1qLmxpbmVQYXRocyxSPWoucFgsRD1qLnBZLFA9ai5hcmVhUGF0aCxMPWoubGluZVBhdGgsdGhpcy5hcHBlbmRQYXRoRnJvbSYmKHorPWEubGluZShTLGspLFQrPWEubGluZShTLGspKTt2YXIgcT10aGlzLmNhbGN1bGF0ZVBvaW50cyh7c2VyaWVzOnQseDpTLHk6QyxyZWFsSW5kZXg6dixpOngsajpCLHByZXZZOk8sY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbjpwLHhSYXRpbzpkfSk7aWYodGhpcy5wb2ludHNDaGFydCl0aGlzLnNjYXR0ZXIuZHJhdyhYLEIse3JlYWxJbmRleDp2LHBvaW50c1BvczpxLHpSYXRpbzpjLGVsUGFyZW50Okl9KTtlbHNle3ZhciBaPW5ldyBNYXJrZXJzKHRoaXMuY3R4KTtzLmdsb2JhbHMuZGF0YVBvaW50cz4xJiZJLm5vZGUuY2xhc3NMaXN0LmFkZChcImhpZGRlblwiKTt2YXIgJD1aLnBsb3RDaGFydE1hcmtlcnMocSx2LEIrMSk7bnVsbCE9PSQmJkkuYWRkKCQpfXZhciBKPSF0W3hdW0IrMV18fHRbeF1bQisxXT50W3hdW0JdP1widG9wXCI6XCJib3R0b21cIixRPW5ldyBEYXRhTGFiZWxzKHRoaXMuY3R4KS5kcmF3RGF0YUxhYmVsKHEsdixCKzEsbnVsbCxKKTtudWxsIT09USYmWS5hZGQoUSl9Zi5wdXNoKHkpLHMuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPXcscy5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09eSx0aGlzLnBvaW50c0NoYXJ0fHxzLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOkkubm9kZSxpbmRleDp2fSk7dmFyIEs9e2k6eCxyZWFsSW5kZXg6dixhbmltYXRpb25EZWxheTp4LGluaXRpYWxTcGVlZDpzLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDpzLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobil9O2lmKFwiYXJlYVwiPT09bilmb3IodmFyIHR0PXIuZmlsbFBhdGgoe3Nlcmllc051bWJlcjp2fSksZXQ9MDtldDxFLmxlbmd0aDtldCsrKXt2YXIgaXQ9YS5yZW5kZXJQYXRocyhfb2JqZWN0U3ByZWFkKHt9LEsse3BhdGhGcm9tOlQscGF0aFRvOkVbZXRdLHN0cm9rZTpcIm5vbmVcIixzdHJva2VXaWR0aDowLHN0cm9rZUxpbmVDYXA6bnVsbCxmaWxsOnR0fSkpO1guYWRkKGl0KX1pZihzLmNvbmZpZy5zdHJva2Uuc2hvdyYmIXRoaXMucG9pbnRzQ2hhcnQpe3ZhciBzdD1udWxsO3N0PVwibGluZVwiPT09bj9yLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6dixpOnh9KTpzLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1t2XTtmb3IodmFyIGF0PTA7YXQ8TS5sZW5ndGg7YXQrKyl7dmFyIHJ0PWEucmVuZGVyUGF0aHMoX29iamVjdFNwcmVhZCh7fSxLLHtwYXRoRnJvbTp6LHBhdGhUbzpNW2F0XSxzdHJva2U6c3Qsc3Ryb2tlV2lkdGg6QXJyYXkuaXNBcnJheShzLmNvbmZpZy5zdHJva2Uud2lkdGgpP3MuY29uZmlnLnN0cm9rZS53aWR0aFt2XTpzLmNvbmZpZy5zdHJva2Uud2lkdGgsc3Ryb2tlTGluZUNhcDpzLmNvbmZpZy5zdHJva2UubGluZUNhcCxmaWxsOlwibm9uZVwifSkpO1guYWRkKHJ0KX19WC5hZGQoSSksWC5hZGQoWSksZy5wdXNoKFgpfWZvcih2YXIgbnQ9Zy5sZW5ndGg7bnQ+MDtudC0tKW8uYWRkKGdbbnQtMV0pO3JldHVybiBvfX0se2tleTpcImNyZWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zZXJpZXMsaT10Lmkscz10LmosYT10Lngscj10Lnksbj10LnBYLG89dC5wWSxsPXQueERpdmlzaW9uLGg9dC5hcmVhQm90dG9tWSxjPXQubGluZVBhdGgsZD10LmFyZWFQYXRoLHU9dC5saW5lUGF0aHMsZz10LmFyZWFQYXRocyxmPXQuc2VyaWVzSW5kZXgscD10aGlzLncseD1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLG09cC5jb25maWcuc3Ryb2tlLmN1cnZlO2lmKEFycmF5LmlzQXJyYXkocC5jb25maWcuc3Ryb2tlLmN1cnZlKSYmKG09QXJyYXkuaXNBcnJheShmKT9wLmNvbmZpZy5zdHJva2UuY3VydmVbZltpXV06cC5jb25maWcuc3Ryb2tlLmN1cnZlW2ldKSxcInNtb290aFwiPT09bSl7dmFyIGI9LjM1KihhLW4pO3AuZ2xvYmFscy5oYXNOdWxsVmFsdWVzPyhudWxsIT09ZVtpXVtzXSYmKG51bGwhPT1lW2ldW3MrMV0/KGM9eC5tb3ZlKG4sbykreC5jdXJ2ZShuK2IsbyxhLWIscixhKzEsciksZD14Lm1vdmUobisxLG8pK3guY3VydmUobitiLG8sYS1iLHIsYSsxLHIpK3gubGluZShhLGgpK3gubGluZShuLGgpK1wielwiKTooYz14Lm1vdmUobixvKSxkPXgubW92ZShuLG8pK1wielwiKSksdS5wdXNoKGMpLGcucHVzaChkKSk6KGMrPXguY3VydmUobitiLG8sYS1iLHIsYSxyKSxkKz14LmN1cnZlKG4rYixvLGEtYixyLGEscikpLG49YSxvPXIscz09PWVbaV0ubGVuZ3RoLTImJihkPWQreC5jdXJ2ZShuLG8sYSxyLGEsaCkreC5tb3ZlKGEscikrXCJ6XCIscC5nbG9iYWxzLmhhc051bGxWYWx1ZXN8fCh1LnB1c2goYyksZy5wdXNoKGQpKSl9ZWxzZSBudWxsPT09ZVtpXVtzKzFdJiYoYys9eC5tb3ZlKGEsciksZD1kK3gubGluZShhLWwsaCkreC5tb3ZlKGEscikpLG51bGw9PT1lW2ldW3NdJiYoYys9eC5tb3ZlKGEsciksZCs9eC5tb3ZlKGEsaCkpLFwic3RlcGxpbmVcIj09PW0/KGM9Yyt4LmxpbmUoYSxudWxsLFwiSFwiKSt4LmxpbmUobnVsbCxyLFwiVlwiKSxkPWQreC5saW5lKGEsbnVsbCxcIkhcIikreC5saW5lKG51bGwscixcIlZcIikpOlwic3RyYWlnaHRcIj09PW0mJihjKz14LmxpbmUoYSxyKSxkKz14LmxpbmUoYSxyKSkscz09PWVbaV0ubGVuZ3RoLTImJihkPWQreC5saW5lKGEsaCkreC5tb3ZlKGEscikrXCJ6XCIsdS5wdXNoKGMpLGcucHVzaChkKSk7cmV0dXJue2xpbmVQYXRoczp1LGFyZWFQYXRoczpnLHBYOm4scFk6byxsaW5lUGF0aDpjLGFyZWFQYXRoOmR9fX0se2tleTpcImNhbGN1bGF0ZVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc2VyaWVzLGk9dC5yZWFsSW5kZXgscz10LngsYT10Lnkscj10Lmksbj10Lmosbz10LnByZXZZLGw9dC5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uLGg9dC54UmF0aW8sYz10aGlzLncsZD1bXSx1PVtdO2lmKDA9PT1uKXt2YXIgZz1sK2MuY29uZmlnLm1hcmtlcnMub2Zmc2V0WDtjLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGc9KGMuZ2xvYmFscy5zZXJpZXNYW2ldWzBdLWMuZ2xvYmFscy5taW5YKS9oK2MuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksZC5wdXNoKGcpLHUucHVzaChVdGlscy5pc051bWJlcihlW3JdWzBdKT9vK2MuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKSxkLnB1c2gocytjLmNvbmZpZy5tYXJrZXJzLm9mZnNldFgpLHUucHVzaChVdGlscy5pc051bWJlcihlW3JdW24rMV0pP2ErYy5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpfWVsc2UgZC5wdXNoKHMrYy5jb25maWcubWFya2Vycy5vZmZzZXRYKSx1LnB1c2goVXRpbHMuaXNOdW1iZXIoZVtyXVtuKzFdKT9hK2MuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKTtyZXR1cm57eDpkLHk6dX19fSx7a2V5OlwiY2hlY2tQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQucGF0aEZyb21MaW5lLGk9dC5wYXRoRnJvbUFyZWEscz10LnJlYWxJbmRleCxhPXRoaXMudyxyPTA7cjxhLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7cisrKXt2YXIgbj1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXTsoXCJsaW5lXCI9PT1uLnR5cGV8fFwiYXJlYVwiPT09bi50eXBlKSYmbi5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQobi5yZWFsSW5kZXgpPT09cGFyc2VJbnQocykmJihcImxpbmVcIj09PW4udHlwZT8odGhpcy5hcHBlbmRQYXRoRnJvbT0hMSxlPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzBdLmQpOlwiYXJlYVwiPT09bi50eXBlJiYodGhpcy5hcHBlbmRQYXRoRnJvbT0hMSxpPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzBdLmQsYS5jb25maWcuc3Ryb2tlLnNob3cmJihlPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzFdLmQpKSl9cmV0dXJue3BhdGhGcm9tTGluZTplLHBhdGhGcm9tQXJlYTppfX19LHtrZXk6XCJkZXRlcm1pbmVGaXJzdFByZXZZXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5zZXJpZXMscz10LnlSYXRpbyxhPXQuemVyb1kscj10LnByZXZZLG49dC5wcmV2U2VyaWVzWSxvPXQubGluZVlQb3NpdGlvbixsPXRoaXMudztpZih2b2lkIDAhPT1pW2VdWzBdKXI9bC5jb25maWcuY2hhcnQuc3RhY2tlZD8obz1lPjA/bltlLTFdWzBdOmEpLWlbZV1bMF0vcysyKih0aGlzLmlzUmV2ZXJzZWQ/aVtlXVswXS9zOjApOmEtaVtlXVswXS9zKzIqKHRoaXMuaXNSZXZlcnNlZD9pW2VdWzBdL3M6MCk7ZWxzZSBpZihsLmNvbmZpZy5jaGFydC5zdGFja2VkJiZlPjAmJnZvaWQgMD09PWlbZV1bMF0pZm9yKHZhciBoPWUtMTtoPj0wO2gtLSlpZihudWxsIT09aVtoXVswXSYmdm9pZCAwIT09aVtoXVswXSl7cj1vPW5baF1bMF07YnJlYWt9cmV0dXJue3ByZXZZOnIsbGluZVlQb3NpdGlvbjpvfX19XSksdH0oKSxYQXhpcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSxpLmdsb2JhbHMudGltZWxpbmVMYWJlbHMubGVuZ3RoPjAmJih0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy50aW1lbGluZUxhYmVscy5zbGljZSgpKSx0aGlzLmRyYXduTGFiZWxzPVtdLFwidG9wXCI9PT1pLmNvbmZpZy54YXhpcy5wb3NpdGlvbj90aGlzLm9mZlk9MDp0aGlzLm9mZlk9aS5nbG9iYWxzLmdyaWRIZWlnaHQrMSx0aGlzLm9mZlk9dGhpcy5vZmZZK2kuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIub2Zmc2V0WSx0aGlzLnhheGlzRm9udFNpemU9aS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHRoaXMueGF4aXNGb250RmFtaWx5PWkuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LHRoaXMueGF4aXNGb3JlQ29sb3JzPWkuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jb2xvcnMsdGhpcy54YXhpc0JvcmRlcldpZHRoPWkuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIud2lkdGgsdGhpcy54YXhpc0JvcmRlcldpZHRoLmluZGV4T2YoXCIlXCIpPi0xP3RoaXMueGF4aXNCb3JkZXJXaWR0aD1pLmdsb2JhbHMuZ3JpZFdpZHRoKnBhcnNlSW50KHRoaXMueGF4aXNCb3JkZXJXaWR0aCkvMTAwOnRoaXMueGF4aXNCb3JkZXJXaWR0aD1wYXJzZUludCh0aGlzLnhheGlzQm9yZGVyV2lkdGgpLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQ9aS5jb25maWcueGF4aXMuYXhpc0JvcmRlci5oZWlnaHQsdGhpcy55YXhpcz1pLmNvbmZpZy55YXhpc1swXSx0aGlzLmF4ZXNVdGlscz1uZXcgQXhlc1V0aWxzKGUpfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImRyYXdYYXhpc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLncsaT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLHM9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmNvbmZpZy54YXhpcy5vZmZzZXRYLFwiLCBcIikuY29uY2F0KGUuY29uZmlnLnhheGlzLm9mZnNldFksXCIpXCIpfSksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGV4dHMtZ1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoZS5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWCxcIiwgXCIpLmNvbmNhdChlLmdsb2JhbHMudHJhbnNsYXRlWEF4aXNZLFwiKVwiKX0pO3MuYWRkKGEpO2Zvcih2YXIgcj1lLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxuPVtdLG89MDtvPHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoO28rKyluLnB1c2godGhpcy54YXhpc0xhYmVsc1tvXSk7cj1lLmdsb2JhbHMuaXNYTnVtZXJpYz9yKyh0PWUuZ2xvYmFscy5ncmlkV2lkdGgvKG4ubGVuZ3RoLTEpKS8yK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYOnIrKHQ9ZS5nbG9iYWxzLmdyaWRXaWR0aC9uLmxlbmd0aCkrZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFg7dmFyIGw9bi5sZW5ndGg7aWYoZS5jb25maWcueGF4aXMubGFiZWxzLnNob3cpZm9yKHZhciBoPTA7aDw9bC0xO2grKyl7dmFyIGM9ci10LzIrZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFgsZD10aGlzLmF4ZXNVdGlscy5nZXRMYWJlbChuLGUuZ2xvYmFscy50aW1lbGluZUxhYmVscyxjLGgsdGhpcy5kcmF3bkxhYmVscyk7dGhpcy5kcmF3bkxhYmVscy5wdXNoKGQudGV4dCk7dmFyIHU9Mjg7ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJih1PTIyKTt2YXIgZz1pLmRyYXdUZXh0KHt4OmQueCx5OnRoaXMub2ZmWStlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSt1LHRleHQ6XCJcIix0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFdlaWdodDpkLmlzQm9sZD82MDA6NDAwLGZvbnRTaXplOnRoaXMueGF4aXNGb250U2l6ZSxmb250RmFtaWx5OnRoaXMueGF4aXNGb250RmFtaWx5LGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHRoaXMueGF4aXNGb3JlQ29sb3JzKT90aGlzLnhheGlzRm9yZUNvbG9yc1toXTp0aGlzLnhheGlzRm9yZUNvbG9ycyxjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtbGFiZWwgXCIrZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNzc0NsYXNzfSk7aD09PWwtMSYmZS5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmKGQudGV4dD1cIlwiKSxhLmFkZChnKSxpLmFkZFRzcGFuKGcsZC50ZXh0LHRoaXMueGF4aXNGb250RmFtaWx5KTt2YXIgZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7Zi50ZXh0Q29udGVudD1kLnRleHQsZy5ub2RlLmFwcGVuZENoaWxkKGYpLHIrPXR9aWYodm9pZCAwIT09ZS5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIHA9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlXCJ9KSx4PWkuZHJhd1RleHQoe3g6ZS5nbG9iYWxzLmdyaWRXaWR0aC8yK2UuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFgseTp0aGlzLm9mZlktcGFyc2VJbnQodGhpcy54YXhpc0ZvbnRTaXplKStlLmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQrZS5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WSx0ZXh0OmUuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLXRleHQgXCIrZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTtwLmFkZCh4KSxzLmFkZChwKX1pZihlLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLnNob3cpe3ZhciBtPTA7XCJiYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiYobS09MTUpO3ZhciBiPWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwrbStlLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFgsdGhpcy5vZmZZLHRoaXMueGF4aXNCb3JkZXJXaWR0aCx0aGlzLm9mZlksZS5jb25maWcueGF4aXMuYXhpc0JvcmRlci5jb2xvciwwLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQpO3MuYWRkKGIpfXJldHVybiBzfX0se2tleTpcImRyYXdYYXhpc0ludmVyc2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxzPXRoaXMudyxhPW5ldyBHcmFwaGljcyh0aGlzLmN0eCkscj1zLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZT9zLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdOjAsbj1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZFwiLHJlbDp0fSksbz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyBhcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrcitcIiwgMClcIn0pO24uYWRkKG8pO2Zvcih2YXIgbD1bXSxoPTA7aDx0aGlzLnhheGlzTGFiZWxzLmxlbmd0aDtoKyspbC5wdXNoKHRoaXMueGF4aXNMYWJlbHNbaF0pO2k9LShlPXMuZ2xvYmFscy5ncmlkSGVpZ2h0L2wubGVuZ3RoKS8yLjI7dmFyIGM9cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0sZD1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHM7aWYoZC5zaG93KWZvcih2YXIgdT0wO3U8PWwubGVuZ3RoLTE7dSsrKXt2YXIgZz12b2lkIDA9PT1sW3VdP1wiXCI6bFt1XTtnPWMoZyk7dmFyIGY9YS5kcmF3VGV4dCh7eDpkLm9mZnNldFgtMTUseTppK2UrZC5vZmZzZXRZLHRleHQ6Zyx0ZXh0QW5jaG9yOnRoaXMueWF4aXMub3Bwb3NpdGU/XCJzdGFydFwiOlwiZW5kXCIsZm9yZUNvbG9yOmQuc3R5bGUuY29sb3I/ZC5zdHlsZS5jb2xvcjpkLnN0eWxlLmNvbG9yc1t1XSxmb250U2l6ZTpkLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZC5zdHlsZS5mb250RmFtaWx5LGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1sYWJlbCBcIitkLnN0eWxlLmNzc0NsYXNzfSk7aWYoby5hZGQoZiksMCE9PXMuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUpe3ZhciBwPWEucm90YXRlQXJvdW5kQ2VudGVyKGYubm9kZSk7Zi5ub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChzLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlLFwiIFwiKS5jb25jYXQocC54LFwiIFwiKS5jb25jYXQocC55LFwiKVwiKSl9aSs9ZX1pZih2b2lkIDAhPT1zLmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0KXt2YXIgeD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUgYXBleGNoYXJ0cy14YXhpcy10aXRsZS1pbnZlcnNlZFwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIityK1wiLCAwKVwifSksbT1hLmRyYXdUZXh0KHt4OjAseTpzLmdsb2JhbHMuZ3JpZEhlaWdodC8yLHRleHQ6cy5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmNvbG9yLGZvbnRTaXplOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udEZhbWlseSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUtdGV4dCBcIitzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5jc3NDbGFzc30pO3guYWRkKG0pLG4uYWRkKHgpfWlmKHMuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuc2hvdyl7dmFyIGI9YS5kcmF3TGluZShzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtzLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFgsdGhpcy5vZmZZLHRoaXMueGF4aXNCb3JkZXJXaWR0aCx0aGlzLm9mZlksdGhpcy55YXhpcy5heGlzQm9yZGVyLmNvbG9yLDAsdGhpcy54YXhpc0JvcmRlckhlaWdodCk7bi5hZGQoYiksdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3MoMCxsLmxlbmd0aCxzLmNvbmZpZy55YXhpc1swXS5heGlzQm9yZGVyLHMuY29uZmlnLnlheGlzWzBdLmF4aXNUaWNrcywwLGUsbil9cmV0dXJuIG59fSx7a2V5OlwiZHJhd1hheGlzVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPXQ7aWYoISh0PDB8fHQ+aS5nbG9iYWxzLmdyaWRXaWR0aCkpe3ZhciBhPXRoaXMub2ZmWStpLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WSxyPWEraS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodDtpZihpLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIG49bmV3IEdyYXBoaWNzKHRoaXMuY3R4KS5kcmF3TGluZSh0K2kuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRYLGEraS5jb25maWcueGF4aXMub2Zmc2V0WSxzK2kuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRYLHIraS5jb25maWcueGF4aXMub2Zmc2V0WSxpLmNvbmZpZy54YXhpcy5heGlzVGlja3MuY29sb3IpO2UuYWRkKG4pLG4ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy14YXhpcy10aWNrXCIpfX19fSx7a2V5OlwiZ2V0WEF4aXNUaWNrc1Bvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9W10saT10aGlzLnhheGlzTGFiZWxzLmxlbmd0aCxzPXQuZ2xvYmFscy5wYWRIb3Jpem9udGFsO2lmKHQuZ2xvYmFscy50aW1lbGluZUxhYmVscy5sZW5ndGg+MClmb3IodmFyIGE9MDthPGk7YSsrKXM9dGhpcy54YXhpc0xhYmVsc1thXS5wb3NpdGlvbixlLnB1c2gocyk7ZWxzZSBmb3IodmFyIHI9aSxuPTA7bjxyO24rKyl7dmFyIG89cjt0Lmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJiYXJcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJihvLT0xKSxzKz10Lmdsb2JhbHMuZ3JpZFdpZHRoL28sZS5wdXNoKHMpfXJldHVybiBlfX0se2tleTpcInhBeGlzTGFiZWxDb3JyZWN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIpLHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWcgdGV4dFwiKSxhPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpcy1pbnZlcnNlZCB0ZXh0XCIpLHI9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkLXRleHRzLWcgdGV4dFwiKTtpZih0Lmdsb2JhbHMucm90YXRlWExhYmVsc3x8dC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZUFsd2F5cylmb3IodmFyIG49MDtuPHMubGVuZ3RoO24rKyl7dmFyIG89ZS5yb3RhdGVBcm91bmRDZW50ZXIoc1tuXSk7by55PW8ueS0xLG8ueD1vLngrMSxzW25dLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLFwiIFwiKS5jb25jYXQoby54LFwiIFwiKS5jb25jYXQoby55LFwiKVwiKSksc1tuXS5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLFwiZW5kXCIpO2kuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoMCwgXCIuY29uY2F0KC0xMCxcIilcIikpO3ZhciBsPXNbbl0uY2hpbGROb2Rlczt0LmNvbmZpZy54YXhpcy5sYWJlbHMudHJpbSYmZS5wbGFjZVRleHRXaXRoRWxsaXBzaXMobFswXSxsWzBdLnRleHRDb250ZW50LHQuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQtNDApfWVsc2UgZm9yKHZhciBoPXQuZ2xvYmFscy5ncmlkV2lkdGgvdC5nbG9iYWxzLmxhYmVscy5sZW5ndGgsYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgZD1zW2NdLmNoaWxkTm9kZXM7dC5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJlwiZGF0ZXRpbWVcIiE9PXQuY29uZmlnLnhheGlzLnR5cGUmJmUucGxhY2VUZXh0V2l0aEVsbGlwc2lzKGRbMF0sZFswXS50ZXh0Q29udGVudCxoKX1pZihhLmxlbmd0aD4wKXt2YXIgdT1hW2EubGVuZ3RoLTFdLmdldEJCb3goKSxnPWFbMF0uZ2V0QkJveCgpO3UueDwtMjAmJmFbYS5sZW5ndGgtMV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhW2EubGVuZ3RoLTFdKSxnLngrZy53aWR0aD50Lmdsb2JhbHMuZ3JpZFdpZHRoJiZhWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYVswXSk7Zm9yKHZhciBmPTA7ZjxyLmxlbmd0aDtmKyspZS5wbGFjZVRleHRXaXRoRWxsaXBzaXMocltmXSxyW2ZdLnRleHRDb250ZW50LHQuY29uZmlnLnlheGlzWzBdLmxhYmVscy5tYXhXaWR0aC0yKnBhcnNlSW50KHQuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplKS0yMCl9fX1dKSx0fSgpLFJhbmdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwibmljZVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLGE9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjEwLHI9dGhpcy53LG49dm9pZCAwPT09dGhpcy53LmNvbmZpZy55YXhpc1tzXS5tYXgmJnZvaWQgMD09PXRoaXMudy5jb25maWcueWF4aXNbc10ubWlufHx0aGlzLncuY29uZmlnLnlheGlzW3NdLmZvcmNlTmljZVNjYWxlO2lmKHQ9PT1OdW1iZXIuTUlOX1ZBTFVFJiYwPT09ZXx8IVV0aWxzLmlzTnVtYmVyKHQpJiYhVXRpbHMuaXNOdW1iZXIoZSl8fHQ9PT1OdW1iZXIuTUlOX1ZBTFVFJiZlPT09LU51bWJlci5NQVhfVkFMVUUpcmV0dXJuIHQ9MCxlPWEsdGhpcy5saW5lYXJTY2FsZSh0LGUsYSk7dD5lPyhjb25zb2xlLndhcm4oXCJ5YXhpcy5taW4gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB5YXhpcy5tYXhcIiksZT10Ky4xKTp0PT09ZSYmKHQ9MD09PXQ/MDp0LS41LGU9MD09PWU/MjplKy41KTt2YXIgbz1bXSxsPU1hdGguYWJzKGUtdCk7bDwxJiZuJiYoXCJjYW5kbGVzdGlja1wiPT09ci5jb25maWcuY2hhcnQudHlwZXx8XCJjYW5kbGVzdGlja1wiPT09ci5jb25maWcuc2VyaWVzW3NdLnR5cGV8fHIuZ2xvYmFscy5pc1JhbmdlRGF0YSkmJihlKj0xLjAxKTt2YXIgaD1hKzE7aDwyP2g9MjpoPjImJihoLT0yKTt2YXIgYz1sL2gsZD1NYXRoLmZsb29yKFV0aWxzLmxvZzEwKGMpKSx1PU1hdGgucG93KDEwLGQpLGc9TWF0aC5yb3VuZChjL3UpO2c8MSYmKGc9MSk7dmFyIGY9Zyp1LHA9ZipNYXRoLmZsb29yKHQvZikseD1mKk1hdGguY2VpbChlL2YpLG09cDtpZihuJiZsPjIpe2Zvcig7by5wdXNoKG0pLCEoKG0rPWYpPngpOyk7cmV0dXJue3Jlc3VsdDpvLG5pY2VNaW46b1swXSxuaWNlTWF4Om9bby5sZW5ndGgtMV19fXZhciBiPXQ7KG89W10pLnB1c2goYik7Zm9yKHZhciB2PU1hdGguYWJzKGUtdCkvYSx5PTA7eTw9YTt5KyspYis9dixvLnB1c2goYik7cmV0dXJuIG9bby5sZW5ndGgtMl0+PWUmJm8ucG9wKCkse3Jlc3VsdDpvLG5pY2VNaW46b1swXSxuaWNlTWF4Om9bby5sZW5ndGgtMV19fX0se2tleTpcImxpbmVhclNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAscz1NYXRoLmFicyhlLXQpL2k7aT09PU51bWJlci5NQVhfVkFMVUUmJihpPTEwLHM9MSk7Zm9yKHZhciBhPVtdLHI9dDtpPj0wOylhLnB1c2gocikscis9cyxpLT0xO3JldHVybntyZXN1bHQ6YSxuaWNlTWluOmFbMF0sbmljZU1heDphW2EubGVuZ3RoLTFdfX19LHtrZXk6XCJsb2dhcml0aG1pY1NjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7KGU8MHx8ZT09PU51bWJlci5NSU5fVkFMVUUpJiYoZT0uMDEpO2Zvcih2YXIgYT1NYXRoLmxvZyhlKS9NYXRoLmxvZygxMCkscj1NYXRoLmxvZyhpKS9NYXRoLmxvZygxMCksbj1NYXRoLmFicyhpLWUpL3Msbz1bXSxsPWU7cz49MDspby5wdXNoKGwpLGwrPW4scy09MTt2YXIgaD1vLm1hcChmdW5jdGlvbih0LHMpe3Q8PTAmJih0PS4wMSk7dmFyIG49KHItYSkvKGktZSksbz1NYXRoLnBvdygxMCxhK24qKHQtYSkpO3JldHVybiBNYXRoLnJvdW5kKG8vVXRpbHMucm91bmRUb0Jhc2UobywxMCkpKlV0aWxzLnJvdW5kVG9CYXNlKG8sMTApfSk7cmV0dXJuIDA9PT1oWzBdJiYoaFswXT0xKSx7cmVzdWx0OmgsbmljZU1pbjpoWzBdLG5pY2VNYXg6aFtoLmxlbmd0aC0xXX19fSx7a2V5Olwic2V0WVNjYWxlRm9ySW5kZXhcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53Lmdsb2JhbHMsYT10aGlzLncuY29uZmlnLHI9cy5pc0Jhckhvcml6b250YWw/YS54YXhpczphLnlheGlzW3RdO2lmKHZvaWQgMD09PXMueUF4aXNTY2FsZVt0XSYmKHMueUF4aXNTY2FsZVt0XT1bXSksci5sb2dhcml0aG1pYylzLmFsbFNlcmllc0NvbGxhcHNlZD0hMSxzLnlBeGlzU2NhbGVbdF09dGhpcy5sb2dhcml0aG1pY1NjYWxlKHQsZSxpLHIudGlja0Ftb3VudD9yLnRpY2tBbW91bnQ6TWF0aC5mbG9vcihNYXRoLmxvZzEwKGkpKSk7ZWxzZSBpZihpIT09LU51bWJlci5NQVhfVkFMVUUmJlV0aWxzLmlzTnVtYmVyKGkpKWlmKHMuYWxsU2VyaWVzQ29sbGFwc2VkPSExLHZvaWQgMD09PXIubWluJiZ2b2lkIDA9PT1yLm1heHx8ci5mb3JjZU5pY2VTY2FsZSl7dmFyIG49TWF0aC5hYnMoaS1lKTtzLnlBeGlzU2NhbGVbdF09dGhpcy5uaWNlU2NhbGUoZSxpLG4sdCxyLnRpY2tBbW91bnQ/ci50aWNrQW1vdW50Om48NSYmbj4xP24rMTo1KX1lbHNlIHMueUF4aXNTY2FsZVt0XT10aGlzLmxpbmVhclNjYWxlKGUsaSxyLnRpY2tBbW91bnQpO2Vsc2Ugcy55QXhpc1NjYWxlW3RdPXRoaXMubGluZWFyU2NhbGUoMCw1LDUpfX0se2tleTpcInNldE11bHRpcGxlWVNjYWxlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZyxzPWUubWluWUFyci5jb25jYXQoW10pLGE9ZS5tYXhZQXJyLmNvbmNhdChbXSkscj1bXTtpLnlheGlzLmZvckVhY2goZnVuY3Rpb24obixvKXt2YXIgbD1vO2kuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24odCxpKXt0Lm5hbWU9PT1uLnNlcmllc05hbWUmJi0xPT09ZS5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaSkmJihsPWksbyE9PWk/ci5wdXNoKHtpbmRleDppLHNpbWlsYXJJbmRleDpvLGFscmVhZHlFeGlzdHM6ITB9KTpyLnB1c2goe2luZGV4Oml9KSl9KTt2YXIgaD1zW2xdLGM9YVtsXTt0LnNldFlTY2FsZUZvckluZGV4KG8saCxjKX0pLHRoaXMuc2FtZVNjYWxlSW5NdWx0aXBsZUF4ZXMocyxhLHIpfX0se2tleTpcInNhbWVTY2FsZUluTXVsdGlwbGVBeGVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMsYT10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbj1bXTtpLmZvckVhY2goZnVuY3Rpb24odCl7dC5hbHJlYWR5RXhpc3RzJiYodm9pZCAwPT09blt0LmluZGV4XSYmKG5bdC5pbmRleF09W10pLG5bdC5pbmRleF0ucHVzaCh0LmluZGV4KSxuW3QuaW5kZXhdLnB1c2godC5zaW1pbGFySW5kZXgpKX0pLHIueUF4aXNTYW1lU2NhbGVJbmRpY2VzPW4sbi5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7bi5mb3JFYWNoKGZ1bmN0aW9uKGkscyl7dmFyIGEscjtlIT09cyYmKGE9dCxyPWksYS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1yLmluZGV4T2YodCl9KSkubGVuZ3RoPjAmJihuW2VdPW5bZV0uY29uY2F0KG5bc10pKX0pfSk7dmFyIG89bi5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQuaW5kZXhPZihlKT09PWl9KX0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5zb3J0KCl9KTtuPW4uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pO3ZhciBsPW8uc2xpY2UoKSxoPWwubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX0pO2w9bC5maWx0ZXIoZnVuY3Rpb24odCxlKXtyZXR1cm4gaC5pbmRleE9mKEpTT04uc3RyaW5naWZ5KHQpKT09PWV9KTt2YXIgYz1bXSxkPVtdO3QuZm9yRWFjaChmdW5jdGlvbih0LGkpe2wuZm9yRWFjaChmdW5jdGlvbihzLGEpe3MuaW5kZXhPZihpKT4tMSYmKHZvaWQgMD09PWNbYV0mJihjW2FdPVtdLGRbYV09W10pLGNbYV0ucHVzaCh7a2V5OmksdmFsdWU6dH0pLGRbYV0ucHVzaCh7a2V5OmksdmFsdWU6ZVtpXX0pKX0pfSk7dmFyIHU9QXJyYXkuYXBwbHkobnVsbCxBcnJheShsLmxlbmd0aCkpLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsTnVtYmVyLk1JTl9WQUxVRSksZz1BcnJheS5hcHBseShudWxsLEFycmF5KGwubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwtTnVtYmVyLk1BWF9WQUxVRSk7Yy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQsaSl7dVtlXT1NYXRoLm1pbih0LnZhbHVlLHVbZV0pfSl9KSxkLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmZvckVhY2goZnVuY3Rpb24odCxpKXtnW2VdPU1hdGgubWF4KHQudmFsdWUsZ1tlXSl9KX0pLHQuZm9yRWFjaChmdW5jdGlvbih0LGUpe2QuZm9yRWFjaChmdW5jdGlvbih0LGkpe3ZhciBuPXVbaV0sbz1nW2ldO2EuY2hhcnQuc3RhY2tlZCYmKG89MCx0LmZvckVhY2goZnVuY3Rpb24odCxlKXtvKz10LnZhbHVlLG4hPT1OdW1iZXIuTUlOX1ZBTFVFJiYobis9Y1tpXVtlXS52YWx1ZSl9KSksdC5mb3JFYWNoKGZ1bmN0aW9uKGksbCl7dFtsXS5rZXk9PT1lJiYodm9pZCAwIT09YS55YXhpc1tlXS5taW4mJihuPVwiZnVuY3Rpb25cIj09dHlwZW9mIGEueWF4aXNbZV0ubWluP2EueWF4aXNbZV0ubWluKHIubWluWSk6YS55YXhpc1tlXS5taW4pLHZvaWQgMCE9PWEueWF4aXNbZV0ubWF4JiYobz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBhLnlheGlzW2VdLm1heD9hLnlheGlzW2VdLm1heChyLm1heFkpOmEueWF4aXNbZV0ubWF4KSxzLnNldFlTY2FsZUZvckluZGV4KGUsbixvKSl9KX0pfSl9fSx7a2V5OlwiYXV0b1NjYWxlWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0fHwodD10aGlzKTt2YXIgcz10Lnc7aWYocy5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpc3x8cy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGgpcmV0dXJuIGU7dmFyIGE9cy5nbG9iYWxzLnNlcmllc1hbMF0scj1zLmNvbmZpZy5jaGFydC5zdGFja2VkO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24odCxuKXtmb3IodmFyIG89MCxsPTA7bDxhLmxlbmd0aDtsKyspaWYoYVtsXT49aS54YXhpcy5taW4pe289bDticmVha312YXIgaCxjLGQ9cy5nbG9iYWxzLm1pbllBcnJbbl0sdT1zLmdsb2JhbHMubWF4WUFycltuXSxnPXMuZ2xvYmFscy5zdGFja2VkU2VyaWVzVG90YWxzO3MuZ2xvYmFscy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihuLGwpe3ZhciBmPW5bb107cj8oZj1nW29dLGg9Yz1mLGcuZm9yRWFjaChmdW5jdGlvbih0LGUpe2FbZV08PWkueGF4aXMubWF4JiZhW2VdPj1pLnhheGlzLm1pbiYmKHQ+YyYmbnVsbCE9PXQmJihjPXQpLG5bZV08aCYmbnVsbCE9PW5bZV0mJihoPW5bZV0pKX0pKTooaD1jPWYsbi5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7aWYoYVtlXTw9aS54YXhpcy5tYXgmJmFbZV0+PWkueGF4aXMubWluKXt2YXIgcj10LG49dDtzLmdsb2JhbHMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oaSxzKXtudWxsIT09dCYmKHI9TWF0aC5taW4oaVtlXSxyKSxuPU1hdGgubWF4KGlbZV0sbikpfSksbj5jJiZudWxsIT09biYmKGM9bikscjxoJiZudWxsIT09ciYmKGg9cil9fSkpLHZvaWQgMD09PWgmJnZvaWQgMD09PWMmJihoPWQsYz11KSwoYyo9YzwwPy45OjEuMSk8MCYmYzx1JiYoYz11KSwoaCo9aDwwPzEuMTouOSk8MCYmaD5kJiYoaD1kKSxlLmxlbmd0aD4xPyhlW2xdLm1pbj12b2lkIDA9PT10Lm1pbj9oOnQubWluLGVbbF0ubWF4PXZvaWQgMD09PXQubWF4P2M6dC5tYXgpOihlWzBdLm1pbj12b2lkIDA9PT10Lm1pbj9oOnQubWluLGVbMF0ubWF4PXZvaWQgMD09PXQubWF4P2M6dC5tYXgpfSl9KSxlfX1dKSx0fSgpLFJhbmdlJDE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnNjYWxlcz1uZXcgUmFuZ2UoZSl9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRZUmFuZ2UoKSx0aGlzLnNldFhSYW5nZSgpLHRoaXMuc2V0WlJhbmdlKCl9fSx7a2V5OlwiZ2V0TWluWU1heFlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06TnVtYmVyLk1BWF9WQUxVRSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTotTnVtYmVyLk1BWF9WQUxVRSxzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLGE9dGhpcy53Lmdsb2JhbHMscj0tTnVtYmVyLk1BWF9WQUxVRSxuPU51bWJlci5NSU5fVkFMVUU7bnVsbD09PXMmJihzPXQrMSk7dmFyIG89YS5zZXJpZXMsbD1vLGg9bztcImNhbmRsZXN0aWNrXCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGU/KGw9YS5zZXJpZXNDYW5kbGVMLGg9YS5zZXJpZXNDYW5kbGVIKTphLmlzUmFuZ2VEYXRhJiYobD1hLnNlcmllc1JhbmdlU3RhcnQsaD1hLnNlcmllc1JhbmdlRW5kKTtmb3IodmFyIGM9dDtjPHM7YysrKXthLmRhdGFQb2ludHM9TWF0aC5tYXgoYS5kYXRhUG9pbnRzLG9bY10ubGVuZ3RoKTtmb3IodmFyIGQ9MDtkPGEuc2VyaWVzW2NdLmxlbmd0aDtkKyspe3ZhciB1PW9bY11bZF07bnVsbCE9PXUmJlV0aWxzLmlzTnVtYmVyKHUpPyhyPU1hdGgubWF4KHIsaFtjXVtkXSksZT1NYXRoLm1pbihlLGxbY11bZF0pLGk9TWF0aC5tYXgoaSxsW2NdW2RdKSxcImNhbmRsZXN0aWNrXCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJihyPU1hdGgubWF4KHIsYS5zZXJpZXNDYW5kbGVPW2NdW2RdKSxyPU1hdGgubWF4KHIsYS5zZXJpZXNDYW5kbGVIW2NdW2RdKSxyPU1hdGgubWF4KHIsYS5zZXJpZXNDYW5kbGVMW2NdW2RdKSxpPXI9TWF0aC5tYXgocixhLnNlcmllc0NhbmRsZUNbY11bZF0pKSxVdGlscy5pc0Zsb2F0KHUpJiYodT1VdGlscy5ub0V4cG9uZW50cyh1KSxhLnlWYWx1ZURlY2ltYWw9TWF0aC5tYXgoYS55VmFsdWVEZWNpbWFsLHUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0ubGVuZ3RoKSksbj5sW2NdW2RdJiZsW2NdW2RdPDAmJihuPWxbY11bZF0pKTphLmhhc051bGxWYWx1ZXM9ITB9fXJldHVybnttaW5ZOm4sbWF4WTpyLGxvd2VzdFk6ZSxoaWdoZXN0WTppfX19LHtrZXk6XCJzZXRZUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZzt0Lm1heFk9LU51bWJlci5NQVhfVkFMVUUsdC5taW5ZPU51bWJlci5NSU5fVkFMVUU7dmFyIGk9TnVtYmVyLk1BWF9WQUxVRTtpZih0LmlzTXVsdGlwbGVZQXhpcylmb3IodmFyIHM9MDtzPHQuc2VyaWVzLmxlbmd0aDtzKyspe3ZhciBhPXRoaXMuZ2V0TWluWU1heFkocyxpLG51bGwscysxKTt0Lm1pbllBcnIucHVzaChhLm1pblkpLHQubWF4WUFyci5wdXNoKGEubWF4WSksaT1hLmxvd2VzdFl9dmFyIHI9dGhpcy5nZXRNaW5ZTWF4WSgwLGksbnVsbCx0LnNlcmllcy5sZW5ndGgpO2lmKHQubWluWT1yLm1pblksdC5tYXhZPXIubWF4WSxpPXIubG93ZXN0WSxlLmNoYXJ0LnN0YWNrZWQpe3ZhciBuPVtdLG89W107aWYodC5zZXJpZXMubGVuZ3RoKWZvcih2YXIgbD0wO2w8dC5zZXJpZXNbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7bCsrKWZvcih2YXIgaD0wLGM9MCxkPTA7ZDx0LnNlcmllcy5sZW5ndGg7ZCsrKW51bGwhPT10LnNlcmllc1tkXVtsXSYmVXRpbHMuaXNOdW1iZXIodC5zZXJpZXNbZF1bbF0pJiYodC5zZXJpZXNbZF1bbF0+MD9oPWgrcGFyc2VGbG9hdCh0LnNlcmllc1tkXVtsXSkrMWUtNDpjKz1wYXJzZUZsb2F0KHQuc2VyaWVzW2RdW2xdKSksZD09PXQuc2VyaWVzLmxlbmd0aC0xJiYobi5wdXNoKGgpLG8ucHVzaChjKSk7Zm9yKHZhciB1PTA7dTxuLmxlbmd0aDt1KyspdC5tYXhZPU1hdGgubWF4KHQubWF4WSxuW3VdKSx0Lm1pblk9TWF0aC5taW4odC5taW5ZLG9bdV0pfWlmKChcImxpbmVcIj09PWUuY2hhcnQudHlwZXx8XCJhcmVhXCI9PT1lLmNoYXJ0LnR5cGV8fFwiY2FuZGxlc3RpY2tcIj09PWUuY2hhcnQudHlwZSkmJnQubWluWT09PU51bWJlci5NSU5fVkFMVUUmJmkhPT0tTnVtYmVyLk1BWF9WQUxVRSYmaSE9PXQubWF4WSl7dmFyIGc9dC5tYXhZLWk7aT49MCYmaTw9MTAmJihnPTApLHQubWluWT1pLTUqZy8xMDAsdC5tYXhZPXQubWF4WSs1KmcvMTAwfXJldHVybiBlLnlheGlzLm1hcChmdW5jdGlvbihlLGkpe3ZvaWQgMCE9PWUubWF4JiYoXCJudW1iZXJcIj09dHlwZW9mIGUubWF4P3QubWF4WUFycltpXT1lLm1heDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm1heCYmKHQubWF4WUFycltpXT1lLm1heCh0Lm1heFkpKSx0Lm1heFk9dC5tYXhZQXJyW2ldKSx2b2lkIDAhPT1lLm1pbiYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLm1pbj90Lm1pbllBcnJbaV09ZS5taW46XCJmdW5jdGlvblwiPT10eXBlb2YgZS5taW4mJih0Lm1pbllBcnJbaV09ZS5taW4odC5taW5ZKSksdC5taW5ZPXQubWluWUFycltpXSl9KSx0LmlzQmFySG9yaXpvbnRhbCYmKHZvaWQgMCE9PWUueGF4aXMubWluJiZcIm51bWJlclwiPT10eXBlb2YgZS54YXhpcy5taW4mJih0Lm1pblk9ZS54YXhpcy5taW4pLHZvaWQgMCE9PWUueGF4aXMubWF4JiZcIm51bWJlclwiPT10eXBlb2YgZS54YXhpcy5tYXgmJih0Lm1heFk9ZS54YXhpcy5tYXgpKSx0LmlzTXVsdGlwbGVZQXhpcz8odGhpcy5zY2FsZXMuc2V0TXVsdGlwbGVZU2NhbGVzKCksdC5taW5ZPWksdC55QXhpc1NjYWxlLmZvckVhY2goZnVuY3Rpb24oZSxpKXt0Lm1pbllBcnJbaV09ZS5uaWNlTWluLHQubWF4WUFycltpXT1lLm5pY2VNYXh9KSk6KHRoaXMuc2NhbGVzLnNldFlTY2FsZUZvckluZGV4KDAsdC5taW5ZLHQubWF4WSksdC5taW5ZPXQueUF4aXNTY2FsZVswXS5uaWNlTWluLHQubWF4WT10LnlBeGlzU2NhbGVbMF0ubmljZU1heCx0Lm1pbllBcnJbMF09dC55QXhpc1NjYWxlWzBdLm5pY2VNaW4sdC5tYXhZQXJyWzBdPXQueUF4aXNTY2FsZVswXS5uaWNlTWF4KSx7bWluWTp0Lm1pblksbWF4WTp0Lm1heFksbWluWUFycjp0Lm1pbllBcnIsbWF4WUFycjp0Lm1heFlBcnJ9fX0se2tleTpcInNldFhSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcscz1cIm51bWVyaWNcIj09PWkueGF4aXMudHlwZXx8XCJkYXRldGltZVwiPT09aS54YXhpcy50eXBlfHxcImNhdGVnb3J5XCI9PT1pLnhheGlzLnR5cGUmJiFlLm5vTGFiZWxzUHJvdmlkZWR8fGUubm9MYWJlbHNQcm92aWRlZHx8ZS5pc1hOdW1lcmljO2lmKGUuaXNYTnVtZXJpYylmb3IodmFyIGE9MDthPGUuc2VyaWVzLmxlbmd0aDthKyspaWYoZS5sYWJlbHNbYV0pZm9yKHZhciByPTA7cjxlLmxhYmVsc1thXS5sZW5ndGg7cisrKW51bGwhPT1lLmxhYmVsc1thXVtyXSYmVXRpbHMuaXNOdW1iZXIoZS5sYWJlbHNbYV1bcl0pJiYoZS5tYXhYPU1hdGgubWF4KGUubWF4WCxlLmxhYmVsc1thXVtyXSksZS5pbml0aWFsbWF4WD1NYXRoLm1heChlLm1heFgsZS5sYWJlbHNbYV1bcl0pLGUubWluWD1NYXRoLm1pbihlLm1pblgsZS5sYWJlbHNbYV1bcl0pLGUuaW5pdGlhbG1pblg9TWF0aC5taW4oZS5taW5YLGUubGFiZWxzW2FdW3JdKSk7aWYoZS5ub0xhYmVsc1Byb3ZpZGVkJiYwPT09aS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCYmKGUubWF4WD1lLmxhYmVsc1tlLmxhYmVscy5sZW5ndGgtMV0sZS5pbml0aWFsbWF4WD1lLmxhYmVsc1tlLmxhYmVscy5sZW5ndGgtMV0sZS5taW5YPTEsZS5pbml0aWFsbWluWD0xKSwoZS5jb21ib0NoYXJ0c0hhc0JhcnN8fFwiY2FuZGxlc3RpY2tcIj09PWkuY2hhcnQudHlwZXx8XCJiYXJcIj09PWkuY2hhcnQudHlwZSYmZS5pc1hOdW1lcmljKSYmKFwiY2F0ZWdvcnlcIiE9PWkueGF4aXMudHlwZXx8ZS5pc1hOdW1lcmljKSl7dmFyIG49ZS5zdmdXaWR0aC9lLmRhdGFQb2ludHMqKE1hdGguYWJzKGUubWF4WC1lLm1pblgpL2Uuc3ZnV2lkdGgpLG89ZS5taW5YLW4vMjtlLm1pblg9byxlLmluaXRpYWxtaW5YPW87dmFyIGw9ZS5tYXhYK24vKChlLnNlcmllcy5sZW5ndGgrMSkvZS5zZXJpZXMubGVuZ3RoKTtlLm1heFg9bCxlLmluaXRpYWxtYXhYPWx9IWUuaXNYTnVtZXJpYyYmIWUubm9MYWJlbHNQcm92aWRlZHx8aS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJiFlLmRhdGFGb3JtYXRYTnVtZXJpY3x8KHZvaWQgMD09PWkueGF4aXMudGlja0Ftb3VudD8odD1NYXRoLnJvdW5kKGUuc3ZnV2lkdGgvMTUwKSxcIm51bWVyaWNcIj09PWkueGF4aXMudHlwZSYmZS5kYXRhUG9pbnRzPDIwJiYodD1lLmRhdGFQb2ludHMtMSksdD5lLmRhdGFQb2ludHMmJjAhPT1lLmRhdGFQb2ludHMmJih0PWUuZGF0YVBvaW50cy0xKSk6dD1cImRhdGFQb2ludHNcIj09PWkueGF4aXMudGlja0Ftb3VudD9lLnNlcmllc1tlLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aC0xOmkueGF4aXMudGlja0Ftb3VudCx2b2lkIDAhPT1pLnhheGlzLm1heCYmXCJudW1iZXJcIj09dHlwZW9mIGkueGF4aXMubWF4JiYoZS5tYXhYPWkueGF4aXMubWF4KSx2b2lkIDAhPT1pLnhheGlzLm1pbiYmXCJudW1iZXJcIj09dHlwZW9mIGkueGF4aXMubWluJiYoZS5taW5YPWkueGF4aXMubWluKSx2b2lkIDAhPT1pLnhheGlzLnJhbmdlJiYoZS5taW5YPWUubWF4WC1pLnhheGlzLnJhbmdlKSxlLm1pblghPT1OdW1iZXIuTUFYX1ZBTFVFJiZlLm1heFghPT0tTnVtYmVyLk1BWF9WQUxVRT9lLnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMubGluZWFyU2NhbGUoZS5taW5YLGUubWF4WCx0KTooZS54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDEsdCx0KSxlLm5vTGFiZWxzUHJvdmlkZWQmJmUubGFiZWxzLmxlbmd0aD4wJiYoZS54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDEsZS5sYWJlbHMubGVuZ3RoLHQtMSksZS5zZXJpZXNYPWUubGFiZWxzLnNsaWNlKCkpKSxzJiYoZS5sYWJlbHM9ZS54QXhpc1NjYWxlLnJlc3VsdC5zbGljZSgpKSk7aWYoZS5taW5YPT09ZS5tYXhYKWlmKFwiZGF0ZXRpbWVcIj09PWkueGF4aXMudHlwZSl7dmFyIGg9bmV3IERhdGUoZS5taW5YKTtoLnNldERhdGUoaC5nZXREYXRlKCktMiksZS5taW5YPW5ldyBEYXRlKGgpLmdldFRpbWUoKTt2YXIgYz1uZXcgRGF0ZShlLm1heFgpO2Muc2V0RGF0ZShjLmdldERhdGUoKSsyKSxlLm1heFg9bmV3IERhdGUoYykuZ2V0VGltZSgpfWVsc2UoXCJudW1lcmljXCI9PT1pLnhheGlzLnR5cGV8fFwiY2F0ZWdvcnlcIj09PWkueGF4aXMudHlwZSYmIWUubm9MYWJlbHNQcm92aWRlZCkmJihlLm1pblg9ZS5taW5YLTIsZS5tYXhYPWUubWF4WCsyKTtyZXR1cm4gZS5pc1hOdW1lcmljJiYoZS5zZXJpZXNYLmZvckVhY2goZnVuY3Rpb24odCxpKXsxPT09dC5sZW5ndGgmJnQucHVzaChlLnNlcmllc1hbZS5tYXhWYWxzSW5BcnJheUluZGV4XVtlLnNlcmllc1hbZS5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMV0pLHQuZm9yRWFjaChmdW5jdGlvbih0LHMpe2lmKHM+MCl7dmFyIGE9dC1lLnNlcmllc1hbaV1bcy0xXTtlLm1pblhEaWZmPU1hdGgubWluKGEsZS5taW5YRGlmZil9fSl9KSx0aGlzLmNhbGNNaW5YRGlmZkZvclRpbnlTZXJpZXMoKSkse21pblg6ZS5taW5YLG1heFg6ZS5tYXhYfX19LHtrZXk6XCJjYWxjTWluWERpZmZGb3JUaW55U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMubGFiZWxzLmxlbmd0aDtyZXR1cm4gMT09PXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoP3QuZ2xvYmFscy5taW5YRGlmZj0odC5nbG9iYWxzLm1heFgtdC5nbG9iYWxzLm1pblgpL2UvMzp0Lmdsb2JhbHMubWluWERpZmY9PT1OdW1iZXIuTUFYX1ZBTFVFJiYodC5nbG9iYWxzLnRpbWVsaW5lTGFiZWxzLmxlbmd0aD4wJiYoZT10Lmdsb2JhbHMudGltZWxpbmVMYWJlbHMubGVuZ3RoKSxlPDMmJihlPTMpLHQuZ2xvYmFscy5taW5YRGlmZj0odC5nbG9iYWxzLm1heFgtdC5nbG9iYWxzLm1pblgpL2UpLHQuZ2xvYmFscy5taW5YRGlmZn19LHtrZXk6XCJzZXRaUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzO2lmKHQuaXNEYXRhWFlaKWZvcih2YXIgZT0wO2U8dC5zZXJpZXMubGVuZ3RoO2UrKylpZih2b2lkIDAhPT10LnNlcmllc1pbZV0pZm9yKHZhciBpPTA7aTx0LnNlcmllc1pbZV0ubGVuZ3RoO2krKyludWxsIT09dC5zZXJpZXNaW2VdW2ldJiZVdGlscy5pc051bWJlcih0LnNlcmllc1pbZV1baV0pJiYodC5tYXhaPU1hdGgubWF4KHQubWF4Wix0LnNlcmllc1pbZV1baV0pLHQubWluWj1NYXRoLm1pbih0Lm1pblosdC5zZXJpZXNaW2VdW2ldKSl9fV0pLHR9KCksVGltZVNjYWxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50aW1lU2NhbGVBcnJheT1bXX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJjYWxjdWxhdGVUaW1lU2NhbGVUaWNrc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxzPXRoaXMudztpZihzLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKXJldHVybiBzLmdsb2JhbHMubGFiZWxzPVtdLHMuZ2xvYmFscy50aW1lbGluZUxhYmVscz1bXSxbXTt2YXIgYT1uZXcgRGF0ZVRpbWUodGhpcy5jdHgpLHI9KGUtdCkvODY0ZTU7dGhpcy5kZXRlcm1pbmVJbnRlcnZhbChyKSxzLmdsb2JhbHMuZGlzYWJsZVpvb21Jbj0hMSxzLmdsb2JhbHMuZGlzYWJsZVpvb21PdXQ9ITEscjwuMDA1P3MuZ2xvYmFscy5kaXNhYmxlWm9vbUluPSEwOnI+NWU0JiYocy5nbG9iYWxzLmRpc2FibGVab29tT3V0PSEwKTt2YXIgbj1hLmdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXAodCxlKSxvPXMuZ2xvYmFscy5ncmlkV2lkdGgvcixsPW8vMjQsaD1sLzYwLGM9TWF0aC5mbG9vcigyNCpyKSxkPU1hdGguZmxvb3IoMjQqcio2MCksdT1NYXRoLmZsb29yKHIpLGc9TWF0aC5mbG9vcihyLzMwKSxmPU1hdGguZmxvb3Ioci8zNjUpLHA9e21pbk1pbnV0ZTpuLm1pbk1pbnV0ZSxtaW5Ib3VyOm4ubWluSG91cixtaW5EYXRlOm4ubWluRGF0ZSxtaW5Nb250aDpuLm1pbk1vbnRoLG1pblllYXI6bi5taW5ZZWFyfSx4PXtmaXJzdFZhbDpwLGN1cnJlbnRNaW51dGU6cC5taW5NaW51dGUsY3VycmVudEhvdXI6cC5taW5Ib3VyLGN1cnJlbnRNb250aERhdGU6cC5taW5EYXRlLGN1cnJlbnREYXRlOnAubWluRGF0ZSxjdXJyZW50TW9udGg6cC5taW5Nb250aCxjdXJyZW50WWVhcjpwLm1pblllYXIsZGF5c1dpZHRoT25YQXhpczpvLGhvdXJzV2lkdGhPblhBeGlzOmwsbWludXRlc1dpZHRoT25YQXhpczpoLG51bWJlck9mTWludXRlczpkLG51bWJlck9mSG91cnM6YyxudW1iZXJPZkRheXM6dSxudW1iZXJPZk1vbnRoczpnLG51bWJlck9mWWVhcnM6Zn07c3dpdGNoKHRoaXMudGlja0ludGVydmFsKXtjYXNlXCJ5ZWFyc1wiOnRoaXMuZ2VuZXJhdGVZZWFyU2NhbGUoeCk7YnJlYWs7Y2FzZVwibW9udGhzXCI6Y2FzZVwiaGFsZl95ZWFyXCI6dGhpcy5nZW5lcmF0ZU1vbnRoU2NhbGUoeCk7YnJlYWs7Y2FzZVwibW9udGhzX2RheXNcIjpjYXNlXCJtb250aHNfZm9ydG5pZ2h0XCI6Y2FzZVwiZGF5c1wiOmNhc2VcIndlZWtfZGF5c1wiOnRoaXMuZ2VuZXJhdGVEYXlTY2FsZSh4KTticmVhaztjYXNlXCJob3Vyc1wiOnRoaXMuZ2VuZXJhdGVIb3VyU2NhbGUoeCk7YnJlYWs7Y2FzZVwibWludXRlc1wiOnRoaXMuZ2VuZXJhdGVNaW51dGVTY2FsZSh4KX12YXIgbT10aGlzLnRpbWVTY2FsZUFycmF5Lm1hcChmdW5jdGlvbih0KXt2YXIgZT17cG9zaXRpb246dC5wb3NpdGlvbix1bml0OnQudW5pdCx5ZWFyOnQueWVhcixkYXk6dC5kYXk/dC5kYXk6MSxob3VyOnQuaG91cj90LmhvdXI6MCxtb250aDp0Lm1vbnRoKzF9O3JldHVyblwibW9udGhcIj09PXQudW5pdD9fb2JqZWN0U3ByZWFkKHt9LGUse2RheToxLHZhbHVlOnQudmFsdWUrMX0pOlwiZGF5XCI9PT10LnVuaXR8fFwiaG91clwiPT09dC51bml0P19vYmplY3RTcHJlYWQoe30sZSx7dmFsdWU6dC52YWx1ZX0pOlwibWludXRlXCI9PT10LnVuaXQ/X29iamVjdFNwcmVhZCh7fSxlLHt2YWx1ZTp0LnZhbHVlLG1pbnV0ZTp0LnZhbHVlfSk6dH0pO3JldHVybiBtLmZpbHRlcihmdW5jdGlvbih0KXt2YXIgZT0xLGE9TWF0aC5jZWlsKHMuZ2xvYmFscy5ncmlkV2lkdGgvMTIwKSxyPXQudmFsdWU7dm9pZCAwIT09cy5jb25maWcueGF4aXMudGlja0Ftb3VudCYmKGE9cy5jb25maWcueGF4aXMudGlja0Ftb3VudCksbS5sZW5ndGg+YSYmKGU9TWF0aC5mbG9vcihtLmxlbmd0aC9hKSk7dmFyIG49ITEsbz0hMTtzd2l0Y2goaS50aWNrSW50ZXJ2YWwpe2Nhc2VcImhhbGZfeWVhclwiOmU9NyxcInllYXJcIj09PXQudW5pdCYmKG49ITApO2JyZWFrO2Nhc2VcIm1vbnRoc1wiOmU9MSxcInllYXJcIj09PXQudW5pdCYmKG49ITApO2JyZWFrO2Nhc2VcIm1vbnRoc19mb3J0bmlnaHRcIjplPTE1LFwieWVhclwiIT09dC51bml0JiZcIm1vbnRoXCIhPT10LnVuaXR8fChuPSEwKSwzMD09PXImJihvPSEwKTticmVhaztjYXNlXCJtb250aHNfZGF5c1wiOmU9MTAsXCJtb250aFwiPT09dC51bml0JiYobj0hMCksMzA9PT1yJiYobz0hMCk7YnJlYWs7Y2FzZVwid2Vla19kYXlzXCI6ZT04LFwibW9udGhcIj09PXQudW5pdCYmKG49ITApO2JyZWFrO2Nhc2VcImRheXNcIjplPTEsXCJtb250aFwiPT09dC51bml0JiYobj0hMCk7YnJlYWs7Y2FzZVwiaG91cnNcIjpcImRheVwiPT09dC51bml0JiYobj0hMCk7YnJlYWs7Y2FzZVwibWludXRlc1wiOnIlNSE9MCYmKG89ITApfWlmKFwibWludXRlc1wiPT09aS50aWNrSW50ZXJ2YWx8fFwiaG91cnNcIj09PWkudGlja0ludGVydmFsKXtpZighbylyZXR1cm4hMH1lbHNlIGlmKChyJWU9PTB8fG4pJiYhbylyZXR1cm4hMH0pfX0se2tleTpcInJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz10aGlzLmZvcm1hdERhdGVzKHQpLGE9dGhpcy5yZW1vdmVPdmVybGFwcGluZ1RTKHMpO2U/aS5nbG9iYWxzLmludmVydGVkVGltZWxpbmVMYWJlbHM9YS5zbGljZSgpOmkuZ2xvYmFscy50aW1lbGluZUxhYmVscz1hLnNsaWNlKCksbmV3IERpbWVuc2lvbnModGhpcy5jdHgpLnBsb3RDb29yZHMoKX19LHtrZXk6XCJkZXRlcm1pbmVJbnRlcnZhbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3N3aXRjaCghMCl7Y2FzZSB0PjE4MjU6dGhpcy50aWNrSW50ZXJ2YWw9XCJ5ZWFyc1wiO2JyZWFrO2Nhc2UgdD44MDAmJnQ8PTE4MjU6dGhpcy50aWNrSW50ZXJ2YWw9XCJoYWxmX3llYXJcIjticmVhaztjYXNlIHQ+MTgwJiZ0PD04MDA6dGhpcy50aWNrSW50ZXJ2YWw9XCJtb250aHNcIjticmVhaztjYXNlIHQ+OTAmJnQ8PTE4MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc19mb3J0bmlnaHRcIjticmVhaztjYXNlIHQ+NjAmJnQ8PTkwOnRoaXMudGlja0ludGVydmFsPVwibW9udGhzX2RheXNcIjticmVhaztjYXNlIHQ+MzAmJnQ8PTYwOnRoaXMudGlja0ludGVydmFsPVwid2Vla19kYXlzXCI7YnJlYWs7Y2FzZSB0PjImJnQ8PTMwOnRoaXMudGlja0ludGVydmFsPVwiZGF5c1wiO2JyZWFrO2Nhc2UgdD4uMSYmdDw9Mjp0aGlzLnRpY2tJbnRlcnZhbD1cImhvdXJzXCI7YnJlYWs7Y2FzZSB0PC4xOnRoaXMudGlja0ludGVydmFsPVwibWludXRlc1wiO2JyZWFrO2RlZmF1bHQ6dGhpcy50aWNrSW50ZXJ2YWw9XCJkYXlzXCJ9fX0se2tleTpcImdlbmVyYXRlWWVhclNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoLHM9dC5jdXJyZW50WWVhcixhPXQuZGF5c1dpZHRoT25YQXhpcyxyPXQubnVtYmVyT2ZZZWFycyxuPWUubWluWWVhcixvPTAsbD1uZXcgRGF0ZVRpbWUodGhpcy5jdHgpO2lmKGUubWluRGF0ZT4xJiZlLm1pbk1vbnRoPjApe3ZhciBoPWwuZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhcihlLm1pblllYXIsZS5taW5Nb250aCxlLm1pbkRhdGUpO289KGwuZGV0ZXJtaW5lRGF5c09mWWVhcihlLm1pblllYXIpLWgrMSkqYSxuPWUubWluWWVhcisxLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246byx2YWx1ZTpuLHVuaXQ6XCJ5ZWFyXCIseWVhcjpuLG1vbnRoOlV0aWxzLm1vbnRoTW9kKGkrMSl9KX1lbHNlIDE9PT1lLm1pbkRhdGUmJjA9PT1lLm1pbk1vbnRoJiZ0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm8sdmFsdWU6bix1bml0OlwieWVhclwiLHllYXI6cyxtb250aDpVdGlscy5tb250aE1vZChpKzEpfSk7Zm9yKHZhciBjPW4sZD1vLHU9MDt1PHI7dSsrKWMrKyxkPWwuZGV0ZXJtaW5lRGF5c09mWWVhcihjLTEpKmErZCx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmQsdmFsdWU6Yyx1bml0OlwieWVhclwiLHllYXI6Yyxtb250aDoxfSl9fSx7a2V5OlwiZ2VuZXJhdGVNb250aFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoRGF0ZSxzPXQuY3VycmVudE1vbnRoLGE9dC5jdXJyZW50WWVhcixyPXQuZGF5c1dpZHRoT25YQXhpcyxuPXQubnVtYmVyT2ZNb250aHMsbz1zLGw9MCxoPW5ldyBEYXRlVGltZSh0aGlzLmN0eCksYz1cIm1vbnRoXCIsZD0wO2lmKGUubWluRGF0ZT4xKXtsPShoLmRldGVybWluZURheXNPZk1vbnRocyhzKzEsZS5taW5ZZWFyKS1pKzEpKnIsbz1VdGlscy5tb250aE1vZChzKzEpO3ZhciB1PWErZCxnPVV0aWxzLm1vbnRoTW9kKG8pLGY9bzswPT09byYmKGM9XCJ5ZWFyXCIsZj11LGc9MSx1Kz1kKz0xKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmwsdmFsdWU6Zix1bml0OmMseWVhcjp1LG1vbnRoOmd9KX1lbHNlIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bCx2YWx1ZTpvLHVuaXQ6Yyx5ZWFyOmEsbW9udGg6VXRpbHMubW9udGhNb2Qocyl9KTtmb3IodmFyIHA9bysxLHg9bCxtPTAsYj0xO208bjttKyssYisrKXswPT09KHA9VXRpbHMubW9udGhNb2QocCkpPyhjPVwieWVhclwiLGQrPTEpOmM9XCJtb250aFwiO3ZhciB2PWErTWF0aC5mbG9vcihwLzEyKStkO3g9aC5kZXRlcm1pbmVEYXlzT2ZNb250aHMocCx2KSpyK3g7dmFyIHk9MD09PXA/djpwO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246eCx2YWx1ZTp5LHVuaXQ6Yyx5ZWFyOnYsbW9udGg6MD09PXA/MTpwfSkscCsrfX19LHtrZXk6XCJnZW5lcmF0ZURheVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoLHM9dC5jdXJyZW50WWVhcixhPXQuaG91cnNXaWR0aE9uWEF4aXMscj10Lm51bWJlck9mRGF5cyxuPW5ldyBEYXRlVGltZSh0aGlzLmN0eCksbz1cImRheVwiLGw9KDI0LWUubWluSG91cikqYSxoPWUubWluRGF0ZSsxLGM9aCxkPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD5uLmRldGVybWluZURheXNPZk1vbnRocyhlKzEsaSk/KHU9MSxvPVwibW9udGhcIixjPWUrPTEsZSk6ZX0sdT1oLGc9ZCh1LGkscyk7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpsLHZhbHVlOmMsdW5pdDpvLHllYXI6cyxtb250aDpVdGlscy5tb250aE1vZChnKSxkYXk6dX0pO2Zvcih2YXIgZj1sLHA9MDtwPHI7cCsrKXtvPVwiZGF5XCIsZz1kKHUrPTEsZyxzK01hdGguZmxvb3IoZy8xMikrMCk7dmFyIHg9cytNYXRoLmZsb29yKGcvMTIpKzA7Zj0yNCphK2Y7dmFyIG09MT09PXU/VXRpbHMubW9udGhNb2QoZyk6dTt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmYsdmFsdWU6bSx1bml0Om8seWVhcjp4LG1vbnRoOlV0aWxzLm1vbnRoTW9kKGcpLGRheTptfSl9fX0se2tleTpcImdlbmVyYXRlSG91clNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudERhdGUscz10LmN1cnJlbnRNb250aCxhPXQuY3VycmVudFllYXIscj10Lm1pbnV0ZXNXaWR0aE9uWEF4aXMsbj10Lm51bWJlck9mSG91cnMsbz1uZXcgRGF0ZVRpbWUodGhpcy5jdHgpLGw9XCJob3VyXCIsaD1mdW5jdGlvbih0LGUpe3JldHVybiB0Pm8uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxhKSYmKHA9MSxlKz0xKSx7bW9udGg6ZSxkYXRlOnB9fSxjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+by5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZSsxLGEpP2UrPTE6ZX0sZD02MC1lLm1pbk1pbnV0ZSx1PWQqcixnPWUubWluSG91cisxLGY9ZysxOzYwPT09ZCYmKHU9MCxmPShnPWUubWluSG91cikrMSk7dmFyIHA9aSx4PWMocCxzKTt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOnUsdmFsdWU6Zyx1bml0OmwsZGF5OnAsaG91cjpmLHllYXI6YSxtb250aDpVdGlscy5tb250aE1vZCh4KX0pO2Zvcih2YXIgbT11LGI9MDtiPG47YisrKXtpZihsPVwiaG91clwiLGY+PTI0KWY9MCxsPVwiZGF5XCIseD1oKHArPTEseCkubW9udGgseD1jKHAseCk7dmFyIHY9YStNYXRoLmZsb29yKHgvMTIpKzA7bT0wPT09ZiYmMD09PWI/ZCpyOjYwKnIrbTt2YXIgeT0wPT09Zj9wOmY7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjptLHZhbHVlOnksdW5pdDpsLGhvdXI6ZixkYXk6cCx5ZWFyOnYsbW9udGg6VXRpbHMubW9udGhNb2QoeCl9KSxmKyt9fX0se2tleTpcImdlbmVyYXRlTWludXRlU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50TWludXRlLHM9dC5jdXJyZW50SG91cixhPXQuY3VycmVudERhdGUscj10LmN1cnJlbnRNb250aCxuPXQuY3VycmVudFllYXIsbz10Lm1pbnV0ZXNXaWR0aE9uWEF4aXMsbD10Lm51bWJlck9mTWludXRlcyxoPW8tKGktZS5taW5NaW51dGUpLGM9ZS5taW5NaW51dGUrMSxkPWMrMSx1PWEsZz1yLGY9bixwPXM7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpoLHZhbHVlOmMsdW5pdDpcIm1pbnV0ZVwiLGRheTp1LGhvdXI6cCxtaW51dGU6ZCx5ZWFyOmYsbW9udGg6VXRpbHMubW9udGhNb2QoZyl9KTtmb3IodmFyIHg9aCxtPTA7bTxsO20rKyl7ZD49NjAmJihkPTAsMjQ9PT0ocCs9MSkmJihwPTApKTt2YXIgYj1uK01hdGguZmxvb3IoZy8xMikrMDt4PW8reDt2YXIgdj1kO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246eCx2YWx1ZTp2LHVuaXQ6XCJtaW51dGVcIixob3VyOnAsbWludXRlOmQsZGF5OnUseWVhcjpiLG1vbnRoOlV0aWxzLm1vbnRoTW9kKGcpfSksZCsrfX19LHtrZXk6XCJjcmVhdGVSYXdEYXRlU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10LnllYXI7cmV0dXJuIGkrPVwiLVwiKyhcIjBcIit0Lm1vbnRoLnRvU3RyaW5nKCkpLnNsaWNlKC0yKSxcImRheVwiPT09dC51bml0P2krPVwiZGF5XCI9PT10LnVuaXQ/XCItXCIrKFwiMFwiK2UpLnNsaWNlKC0yKTpcIi0wMVwiOmkrPVwiLVwiKyhcIjBcIisodC5kYXk/dC5kYXk6XCIxXCIpKS5zbGljZSgtMiksXCJob3VyXCI9PT10LnVuaXQ/aSs9XCJob3VyXCI9PT10LnVuaXQ/XCJUXCIrKFwiMFwiK2UpLnNsaWNlKC0yKTpcIlQwMFwiOmkrPVwiVFwiKyhcIjBcIisodC5ob3VyP3QuaG91cjpcIjBcIikpLnNsaWNlKC0yKSxpKz1cIm1pbnV0ZVwiPT09dC51bml0P1wiOlwiKyhcIjBcIitlKS5zbGljZSgtMikrXCI6MDAuMDAwWlwiOlwiOjAwOjAwLjAwMFpcIn19LHtrZXk6XCJmb3JtYXREYXRlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLnc7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3ZhciBzPXQudmFsdWUudG9TdHJpbmcoKSxhPW5ldyBEYXRlVGltZShlLmN0eCkscj1lLmNyZWF0ZVJhd0RhdGVTdHJpbmcodCxzKSxuPW5ldyBEYXRlKERhdGUucGFyc2UocikpO2lmKHZvaWQgMD09PWkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQpe3ZhciBvPVwiZGQgTU1NXCIsbD1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVGb3JtYXR0ZXI7XCJ5ZWFyXCI9PT10LnVuaXQmJihvPWwueWVhciksXCJtb250aFwiPT09dC51bml0JiYobz1sLm1vbnRoKSxcImRheVwiPT09dC51bml0JiYobz1sLmRheSksXCJob3VyXCI9PT10LnVuaXQmJihvPWwuaG91ciksXCJtaW51dGVcIj09PXQudW5pdCYmKG89bC5taW51dGUpLHM9YS5mb3JtYXREYXRlKG4sbywhMCwhMSl9ZWxzZSBzPWEuZm9ybWF0RGF0ZShuLGkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQpO3JldHVybntkYXRlU3RyaW5nOnIscG9zaXRpb246dC5wb3NpdGlvbix2YWx1ZTpzLHVuaXQ6dC51bml0LHllYXI6dC55ZWFyLG1vbnRoOnQubW9udGh9fSl9fSx7a2V5OlwicmVtb3ZlT3ZlcmxhcHBpbmdUU1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLHM9MCxhPXQubWFwKGZ1bmN0aW9uKGEscil7aWYocj4wJiZlLncuY29uZmlnLnhheGlzLmxhYmVscy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMpe3ZhciBuPWkuZ2V0VGV4dFJlY3RzKHRbc10udmFsdWUpLndpZHRoLG89dFtzXS5wb3NpdGlvbjtyZXR1cm4gYS5wb3NpdGlvbj5vK24rMTA/KHM9cixhKTpudWxsfXJldHVybiBhfSk7cmV0dXJuIGE9YS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSl9fV0pLHR9KCksQ29yZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1pLHRoaXMudz1pLncsdGhpcy5lbD1lLHRoaXMuY29yZVV0aWxzPW5ldyBDb3JlVXRpbHModGhpcy5jdHgpLHRoaXMudHdvRFNlcmllcz1bXSx0aGlzLnRocmVlRFNlcmllcz1bXSx0aGlzLnR3b0RTZXJpZXNYPVtdfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcInNldHVwRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZyxpPWUuY2hhcnQudHlwZTt0LmF4aXNDaGFydHM9W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZUJhclwiLFwiY2FuZGxlc3RpY2tcIixcInJhZGFyXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIixcImhlYXRtYXBcIl0uaW5kZXhPZihpKT4tMSx0Lnh5Q2hhcnRzPVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2VCYXJcIixcImNhbmRsZXN0aWNrXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIl0uaW5kZXhPZihpKT4tMSx0LmlzQmFySG9yaXpvbnRhbD0oXCJiYXJcIj09PWUuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09ZS5jaGFydC50eXBlKSYmZS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0LmNoYXJ0Q2xhc3M9XCIuYXBleGNoYXJ0c1wiK3QuY3VpZCx0LmRvbS5iYXNlRWw9dGhpcy5lbCx0LmRvbS5lbFdyYXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxHcmFwaGljcy5zZXRBdHRycyh0LmRvbS5lbFdyYXAse2lkOnQuY2hhcnRDbGFzcy5zdWJzdHJpbmcoMSksY2xhc3M6XCJhcGV4Y2hhcnRzLWNhbnZhcyBcIit0LmNoYXJ0Q2xhc3Muc3Vic3RyaW5nKDEpfSksdGhpcy5lbC5hcHBlbmRDaGlsZCh0LmRvbS5lbFdyYXApLHQuZG9tLlBhcGVyPW5ldyB3aW5kb3cuU1ZHLkRvYyh0LmRvbS5lbFdyYXApLHQuZG9tLlBhcGVyLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1zdmdcIixcInhtbG5zOmRhdGFcIjpcIkFwZXhDaGFydHNOU1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoZS5jaGFydC5vZmZzZXRYLFwiLCBcIikuY29uY2F0KGUuY2hhcnQub2Zmc2V0WSxcIilcIil9KSx0LmRvbS5QYXBlci5ub2RlLnN0eWxlLmJhY2tncm91bmQ9ZS5jaGFydC5iYWNrZ3JvdW5kLHRoaXMuc2V0U1ZHRGltZW5zaW9ucygpLHQuZG9tLmVsR3JhcGhpY2FsPXQuZG9tLlBhcGVyLmdyb3VwKCkuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLWlubmVyIGFwZXhjaGFydHMtZ3JhcGhpY2FsXCJ9KSx0LmRvbS5lbERlZnM9dC5kb20uUGFwZXIuZGVmcygpLHQuZG9tLmVsTGVnZW5kV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmRcIiksdC5kb20uZWxXcmFwLmFwcGVuZENoaWxkKHQuZG9tLmVsTGVnZW5kV3JhcCksdC5kb20uUGFwZXIuYWRkKHQuZG9tLmVsR3JhcGhpY2FsKSx0LmRvbS5lbEdyYXBoaWNhbC5hZGQodC5kb20uZWxEZWZzKX19LHtrZXk6XCJwbG90Q2hhcnRUeXBlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1pLmNvbmZpZyxhPWkuZ2xvYmFscyxyPXtzZXJpZXM6W10saTpbXX0sbj17c2VyaWVzOltdLGk6W119LG89e3NlcmllczpbXSxpOltdfSxsPXtzZXJpZXM6W10saTpbXX0saD17c2VyaWVzOltdLGk6W119O2Euc2VyaWVzLm1hcChmdW5jdGlvbihlLHMpe3ZvaWQgMCE9PXRbc10udHlwZT8oXCJjb2x1bW5cIj09PXRbc10udHlwZXx8XCJiYXJcIj09PXRbc10udHlwZT8oaS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw9ITEsbC5zZXJpZXMucHVzaChlKSxsLmkucHVzaChzKSk6XCJhcmVhXCI9PT10W3NdLnR5cGU/KG4uc2VyaWVzLnB1c2goZSksbi5pLnB1c2gocykpOlwibGluZVwiPT09dFtzXS50eXBlPyhyLnNlcmllcy5wdXNoKGUpLHIuaS5wdXNoKHMpKTpcInNjYXR0ZXJcIj09PXRbc10udHlwZT8oby5zZXJpZXMucHVzaChlKSxvLmkucHVzaChzKSk6XCJidWJibGVcIj09PXRbc10udHlwZXx8KFwiY2FuZGxlc3RpY2tcIj09PXRbc10udHlwZT8oaC5zZXJpZXMucHVzaChlKSxoLmkucHVzaChzKSk6Y29uc29sZS53YXJuKFwiWW91IGhhdmUgc3BlY2lmaWVkIGFuIHVucmVjb2duaXplZCBjaGFydCB0eXBlLiBBdmFpbGFibGUgdHlwZXMgZm9yIHRoaXMgcHJvcGVyeSBhcmUgbGluZS9hcmVhL2NvbHVtbi9iYXIvc2NhdHRlci9idWJibGVcIikpLGEuY29tYm9DaGFydHM9ITApOihyLnNlcmllcy5wdXNoKGUpLHIuaS5wdXNoKHMpKX0pO3ZhciBjPW5ldyBMaW5lKHRoaXMuY3R4LGUpLGQ9bmV3IENhbmRsZVN0aWNrKHRoaXMuY3R4LGUpLHU9bmV3IFBpZSh0aGlzLmN0eCksZz1uZXcgUmFkaWFsKHRoaXMuY3R4KSxmPW5ldyBSYW5nZUJhcih0aGlzLmN0eCxlKSxwPW5ldyBSYWRhcih0aGlzLmN0eCkseD1bXTtpZihhLmNvbWJvQ2hhcnRzKXtpZihuLnNlcmllcy5sZW5ndGg+MCYmeC5wdXNoKGMuZHJhdyhuLnNlcmllcyxcImFyZWFcIixuLmkpKSxsLnNlcmllcy5sZW5ndGg+MClpZihpLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgbT1uZXcgQmFyU3RhY2tlZCh0aGlzLmN0eCxlKTt4LnB1c2gobS5kcmF3KGwuc2VyaWVzLGwuaSkpfWVsc2V7dmFyIGI9bmV3IEJhcih0aGlzLmN0eCxlKTt4LnB1c2goYi5kcmF3KGwuc2VyaWVzLGwuaSkpfWlmKHIuc2VyaWVzLmxlbmd0aD4wJiZ4LnB1c2goYy5kcmF3KHIuc2VyaWVzLFwibGluZVwiLHIuaSkpLGguc2VyaWVzLmxlbmd0aD4wJiZ4LnB1c2goZC5kcmF3KGguc2VyaWVzLGguaSkpLG8uc2VyaWVzLmxlbmd0aD4wKXt2YXIgdj1uZXcgTGluZSh0aGlzLmN0eCxlLCEwKTt4LnB1c2godi5kcmF3KG8uc2VyaWVzLFwic2NhdHRlclwiLG8uaSkpfX1lbHNlIHN3aXRjaChzLmNoYXJ0LnR5cGUpe2Nhc2VcImxpbmVcIjp4PWMuZHJhdyhhLnNlcmllcyxcImxpbmVcIik7YnJlYWs7Y2FzZVwiYXJlYVwiOng9Yy5kcmF3KGEuc2VyaWVzLFwiYXJlYVwiKTticmVhaztjYXNlXCJiYXJcIjppZihzLmNoYXJ0LnN0YWNrZWQpeD1uZXcgQmFyU3RhY2tlZCh0aGlzLmN0eCxlKS5kcmF3KGEuc2VyaWVzKTtlbHNlIHg9bmV3IEJhcih0aGlzLmN0eCxlKS5kcmF3KGEuc2VyaWVzKTticmVhaztjYXNlXCJjYW5kbGVzdGlja1wiOng9bmV3IENhbmRsZVN0aWNrKHRoaXMuY3R4LGUpLmRyYXcoYS5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhbmdlQmFyXCI6eD1mLmRyYXcoYS5zZXJpZXMpO2JyZWFrO2Nhc2VcImhlYXRtYXBcIjp4PW5ldyBIZWF0TWFwKHRoaXMuY3R4LGUpLmRyYXcoYS5zZXJpZXMpO2JyZWFrO2Nhc2VcInBpZVwiOmNhc2VcImRvbnV0XCI6eD11LmRyYXcoYS5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhZGlhbEJhclwiOng9Zy5kcmF3KGEuc2VyaWVzKTticmVhaztjYXNlXCJyYWRhclwiOng9cC5kcmF3KGEuc2VyaWVzKTticmVhaztkZWZhdWx0Ong9Yy5kcmF3KGEuc2VyaWVzKX1yZXR1cm4geH19LHtrZXk6XCJzZXRTVkdEaW1lbnNpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7dC5zdmdXaWR0aD1lLmNoYXJ0LndpZHRoLHQuc3ZnSGVpZ2h0PWUuY2hhcnQuaGVpZ2h0O3ZhciBpPVV0aWxzLmdldERpbWVuc2lvbnModGhpcy5lbCkscz1lLmNoYXJ0LndpZHRoLnRvU3RyaW5nKCkuc3BsaXQoL1swLTldKy9nKS5wb3AoKTtpZihcIiVcIj09PXM/VXRpbHMuaXNOdW1iZXIoaVswXSkmJigwPT09aVswXS53aWR0aCYmKGk9VXRpbHMuZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpKSx0LnN2Z1dpZHRoPWlbMF0qcGFyc2VJbnQoZS5jaGFydC53aWR0aCkvMTAwKTpcInB4XCIhPT1zJiZcIlwiIT09c3x8KHQuc3ZnV2lkdGg9cGFyc2VJbnQoZS5jaGFydC53aWR0aCkpLFwiYXV0b1wiIT09dC5zdmdIZWlnaHQmJlwiXCIhPT10LnN2Z0hlaWdodClpZihcIiVcIj09PWUuY2hhcnQuaGVpZ2h0LnRvU3RyaW5nKCkuc3BsaXQoL1swLTldKy9nKS5wb3AoKSl7dmFyIGE9VXRpbHMuZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpO3Quc3ZnSGVpZ2h0PWFbMV0qcGFyc2VJbnQoZS5jaGFydC5oZWlnaHQpLzEwMH1lbHNlIHQuc3ZnSGVpZ2h0PXBhcnNlSW50KGUuY2hhcnQuaGVpZ2h0KTtlbHNlIHQuYXhpc0NoYXJ0cz90LnN2Z0hlaWdodD10LnN2Z1dpZHRoLzEuNjE6dC5zdmdIZWlnaHQ9dC5zdmdXaWR0aDt0LnN2Z1dpZHRoPDAmJih0LnN2Z1dpZHRoPTApLHQuc3ZnSGVpZ2h0PDAmJih0LnN2Z0hlaWdodD0wKSxHcmFwaGljcy5zZXRBdHRycyh0LmRvbS5QYXBlci5ub2RlLHt3aWR0aDp0LnN2Z1dpZHRoLGhlaWdodDp0LnN2Z0hlaWdodH0pO3ZhciByPWUuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MDp0LmF4aXNDaGFydHM/ZS5jaGFydC5wYXJlbnRIZWlnaHRPZmZzZXQ6MDt0LmRvbS5QYXBlci5ub2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9dC5zdmdIZWlnaHQrcitcInB4XCIsdC5kb20uZWxXcmFwLnN0eWxlLndpZHRoPXQuc3ZnV2lkdGgrXCJweFwiLHQuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9dC5zdmdIZWlnaHQrXCJweFwifX0se2tleTpcInNoaWZ0R3JhcGhQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10LnRyYW5zbGF0ZVksaT17dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK3QudHJhbnNsYXRlWCtcIiwgXCIrZStcIilcIn07R3JhcGhpY3Muc2V0QXR0cnModC5kb20uZWxHcmFwaGljYWwubm9kZSxpKX19LHtrZXk6XCJyZXNpemVOb25BeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT0wO1widG9wXCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJlwiYm90dG9tXCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb258fChpPW5ldyBMZWdlbmQodGhpcy5jdHgpLmdldExlZ2VuZEJCb3goKS5jbHdoKzEwKTt2YXIgcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtcmFkaWFsYmFyXCIpLGE9Mip0Lmdsb2JhbHMucmFkaWFsU2l6ZTtzJiYtOTAhPT10LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSYmKGE9VXRpbHMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHMpLmhlaWdodCk7dmFyIHI9TWF0aC5tYXgoYSwyKnQuZ2xvYmFscy5yYWRpYWxTaXplKStlLnRyYW5zbGF0ZVkraSsyMDtlLmRvbS5lbExlZ2VuZEZvcmVpZ24mJmUuZG9tLmVsTGVnZW5kRm9yZWlnbi5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixyKSxlLmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0PXIrXCJweFwiLEdyYXBoaWNzLnNldEF0dHJzKGUuZG9tLlBhcGVyLm5vZGUse2hlaWdodDpyfSksZS5kb20uUGFwZXIubm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PXIrXCJweFwifX0se2tleTpcImNvcmVDYWxjdWxhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe25ldyBSYW5nZSQxKHRoaXMuY3R4KS5pbml0KCl9fSx7a2V5OlwicmVzZXRHbG9iYWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53Lmdsb2JhbHM7ZS5zZXJpZXM9W10sZS5zZXJpZXNDYW5kbGVPPVtdLGUuc2VyaWVzQ2FuZGxlSD1bXSxlLnNlcmllc0NhbmRsZUw9W10sZS5zZXJpZXNDYW5kbGVDPVtdLGUuc2VyaWVzUmFuZ2VTdGFydD1bXSxlLnNlcmllc1JhbmdlRW5kPVtdLGUuc2VyaWVzUGVyY2VudD1bXSxlLnNlcmllc1g9W10sZS5zZXJpZXNaPVtdLGUuc2VyaWVzTmFtZXM9W10sZS5zZXJpZXNUb3RhbHM9W10sZS5zdGFja2VkU2VyaWVzVG90YWxzPVtdLGUubGFiZWxzPVtdLGUudGltZWxpbmVMYWJlbHM9W10sZS5ub0xhYmVsc1Byb3ZpZGVkPSExLGUudGltZXNjYWxlVGlja3M9W10sZS5yZXNpemVUaW1lcj1udWxsLGUuc2VsZWN0aW9uUmVzaXplVGltZXI9bnVsbCxlLnNlcmllc1h2YWx1ZXM9dC53LmNvbmZpZy5zZXJpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybltdfSksZS5zZXJpZXNZdmFsdWVzPXQudy5jb25maWcuc2VyaWVzLm1hcChmdW5jdGlvbih0KXtyZXR1cm5bXX0pLGUuZGVsYXllZEVsZW1lbnRzPVtdLGUucG9pbnRzQXJyYXk9W10sZS5kYXRhTGFiZWxzUmVjdHM9W10sZS5pc1hOdW1lcmljPSExLGUuaXNEYXRhWFlaPSExLGUubWF4WT0tTnVtYmVyLk1BWF9WQUxVRSxlLm1pblk9TnVtYmVyLk1JTl9WQUxVRSxlLm1pbllBcnI9W10sZS5tYXhZQXJyPVtdLGUubWF4WD0tTnVtYmVyLk1BWF9WQUxVRSxlLm1pblg9TnVtYmVyLk1BWF9WQUxVRSxlLmluaXRpYWxtYXhYPS1OdW1iZXIuTUFYX1ZBTFVFLGUuaW5pdGlhbG1pblg9TnVtYmVyLk1BWF9WQUxVRSxlLm1heERhdGU9MCxlLm1pbkRhdGU9TnVtYmVyLk1BWF9WQUxVRSxlLm1pblo9TnVtYmVyLk1BWF9WQUxVRSxlLm1heFo9LU51bWJlci5NQVhfVkFMVUUsZS5taW5YRGlmZj1OdW1iZXIuTUFYX1ZBTFVFLGUueUF4aXNTY2FsZT1bXSxlLnhBeGlzU2NhbGU9bnVsbCxlLnhBeGlzVGlja3NQb3NpdGlvbnM9W10sZS55TGFiZWxzQ29vcmRzPVtdLGUueVRpdGxlQ29vcmRzPVtdLGUueFJhbmdlPTAsZS55UmFuZ2U9W10sZS56UmFuZ2U9MCxlLmRhdGFQb2ludHM9MH19LHtrZXk6XCJpc011bHRpcGxlWVwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy53LmNvbmZpZy55YXhpcy5jb25zdHJ1Y3Rvcj09PUFycmF5JiZ0aGlzLncuY29uZmlnLnlheGlzLmxlbmd0aD4xKXJldHVybiB0aGlzLncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXM9ITAsITB9fSx7a2V5OlwiZXhjbHVkZUNvbGxhcHNlZFNlcmllc0luWUF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7ZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcz1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLm1hcChmdW5jdGlvbihlLGkpe2lmKHQudy5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcylyZXR1cm4gZS5pbmRleH0pfX0se2tleTpcImlzTXVsdGlGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRm9ybWF0WFkoKXx8dGhpcy5pc0Zvcm1hdDJEQXJyYXkoKX19LHtrZXk6XCJpc0Zvcm1hdFhZXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpLGU9bmV3IFNlcmllcyh0aGlzLmN0eCk7aWYodGhpcy5hY3RpdmVTZXJpZXNJbmRleD1lLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCksdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoPjAmJm51bGwhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0mJnZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXS54JiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdKXJldHVybiEwfX0se2tleTpcImlzRm9ybWF0MkRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxlPW5ldyBTZXJpZXModGhpcy5jdHgpO2lmKHRoaXMuYWN0aXZlU2VyaWVzSW5kZXg9ZS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpLHZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YSYmdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhLmxlbmd0aD4wJiZ2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0mJm51bGwhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0mJnRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXS5jb25zdHJ1Y3Rvcj09PUFycmF5KXJldHVybiEwfX0se2tleTpcImhhbmRsZUZvcm1hdDJEQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10aGlzLncuY29uZmlnLHM9dGhpcy53Lmdsb2JhbHMsYT0wO2E8dFtlXS5kYXRhLmxlbmd0aDthKyspaWYodm9pZCAwIT09dFtlXS5kYXRhW2FdWzFdJiYoQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbYV1bMV0pJiY0PT09dFtlXS5kYXRhW2FdWzFdLmxlbmd0aD90aGlzLnR3b0RTZXJpZXMucHVzaChVdGlscy5wYXJzZU51bWJlcih0W2VdLmRhdGFbYV1bMV1bM10pKTp0aGlzLnR3b0RTZXJpZXMucHVzaChVdGlscy5wYXJzZU51bWJlcih0W2VdLmRhdGFbYV1bMV0pKSxzLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCksXCJkYXRldGltZVwiPT09aS54YXhpcy50eXBlKXt2YXIgcj1uZXcgRGF0ZSh0W2VdLmRhdGFbYV1bMF0pO3I9bmV3IERhdGUocikuZ2V0VGltZSgpLHRoaXMudHdvRFNlcmllc1gucHVzaChyKX1lbHNlIHRoaXMudHdvRFNlcmllc1gucHVzaCh0W2VdLmRhdGFbYV1bMF0pO2Zvcih2YXIgbj0wO248dFtlXS5kYXRhLmxlbmd0aDtuKyspdm9pZCAwIT09dFtlXS5kYXRhW25dWzJdJiYodGhpcy50aHJlZURTZXJpZXMucHVzaCh0W2VdLmRhdGFbbl1bMl0pLHMuaXNEYXRhWFlaPSEwKX19LHtrZXk6XCJoYW5kbGVGb3JtYXRYWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LmNvbmZpZyxzPXRoaXMudy5nbG9iYWxzLGE9bmV3IERhdGVUaW1lKHRoaXMuY3R4KSxyPWU7cy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk+LTEmJihyPXRoaXMuYWN0aXZlU2VyaWVzSW5kZXgpO2Zvcih2YXIgbj0wO248dFtlXS5kYXRhLmxlbmd0aDtuKyspdm9pZCAwIT09dFtlXS5kYXRhW25dLnkmJihBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtuXS55KT90aGlzLnR3b0RTZXJpZXMucHVzaChVdGlscy5wYXJzZU51bWJlcih0W2VdLmRhdGFbbl0ueVt0W2VdLmRhdGFbbl0ueS5sZW5ndGgtMV0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaChVdGlscy5wYXJzZU51bWJlcih0W2VdLmRhdGFbbl0ueSkpKTtmb3IodmFyIG89MDtvPHRbcl0uZGF0YS5sZW5ndGg7bysrKXt2YXIgbD1cInN0cmluZ1wiPT10eXBlb2YgdFtyXS5kYXRhW29dLngsaD0hIWEuaXNWYWxpZERhdGUodFtyXS5kYXRhW29dLngudG9TdHJpbmcoKSk7bHx8aD9sP1wiZGF0ZXRpbWVcIiE9PWkueGF4aXMudHlwZXx8cy5pc1JhbmdlRGF0YT8odGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbcl0uZGF0YVtvXS54KSk6dGhpcy50d29EU2VyaWVzWC5wdXNoKGEucGFyc2VEYXRlKHRbcl0uZGF0YVtvXS54KSk6XCJkYXRldGltZVwiPT09aS54YXhpcy50eXBlP3RoaXMudHdvRFNlcmllc1gucHVzaChhLnBhcnNlRGF0ZSh0W3JdLmRhdGFbb10ueC50b1N0cmluZygpKSk6KHMuZGF0YUZvcm1hdFhOdW1lcmljPSEwLHMuaXNYTnVtZXJpYz0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2gocGFyc2VGbG9hdCh0W3JdLmRhdGFbb10ueCkpKToocy5pc1hOdW1lcmljPSEwLHMuZGF0YUZvcm1hdFhOdW1lcmljPSEwLHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbb10ueCkpfWlmKHRbZV0uZGF0YVswXSYmdm9pZCAwIT09dFtlXS5kYXRhWzBdLnope2Zvcih2YXIgYz0wO2M8dFtlXS5kYXRhLmxlbmd0aDtjKyspdGhpcy50aHJlZURTZXJpZXMucHVzaCh0W2VdLmRhdGFbY10ueik7cy5pc0RhdGFYWVo9ITB9fX0se2tleTpcImhhbmRsZVJhbmdlRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMscz17fTtyZXR1cm4gdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT9zPXRoaXMuaGFuZGxlUmFuZ2VEYXRhRm9ybWF0KFwiYXJyYXlcIix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYocz10aGlzLmhhbmRsZVJhbmdlRGF0YUZvcm1hdChcInh5XCIsdCxlKSksaS5zZXJpZXNSYW5nZVN0YXJ0LnB1c2gocy5zdGFydCksaS5zZXJpZXNSYW5nZUVuZC5wdXNoKHMuZW5kKSxzfX0se2tleTpcImhhbmRsZUNhbmRsZVN0aWNrRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMscz17fTtyZXR1cm4gdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT9zPXRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tEYXRhRm9ybWF0KFwiYXJyYXlcIix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYocz10aGlzLmhhbmRsZUNhbmRsZVN0aWNrRGF0YUZvcm1hdChcInh5XCIsdCxlKSksaS5zZXJpZXNDYW5kbGVPLnB1c2gocy5vKSxpLnNlcmllc0NhbmRsZUgucHVzaChzLmgpLGkuc2VyaWVzQ2FuZGxlTC5wdXNoKHMubCksaS5zZXJpZXNDYW5kbGVDLnB1c2gocy5jKSxzfX0se2tleTpcImhhbmRsZVJhbmdlRGF0YUZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz1bXSxhPVtdLHI9XCJQbGVhc2UgcHJvdmlkZSBbU3RhcnQsIEVuZF0gdmFsdWVzIGluIHZhbGlkIGZvcm1hdC4gUmVhZCBtb3JlIGh0dHBzOi8vYXBleGNoYXJ0cy5jb20vZG9jcy9zZXJpZXMvI3JhbmdlY2hhcnRzXCIsbj1uZXcgU2VyaWVzKHRoaXMuY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpO2lmKFwiYXJyYXlcIj09PXQpe2lmKDIhPT1lW25dLmRhdGFbMF1bMV0ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihyKTtmb3IodmFyIG89MDtvPGVbaV0uZGF0YS5sZW5ndGg7bysrKXMucHVzaChlW2ldLmRhdGFbb11bMV1bMF0pLGEucHVzaChlW2ldLmRhdGFbb11bMV1bMV0pfWVsc2UgaWYoXCJ4eVwiPT09dCl7aWYoMiE9PWVbbl0uZGF0YVswXS55Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3Iocik7Zm9yKHZhciBsPTA7bDxlW2ldLmRhdGEubGVuZ3RoO2wrKylzLnB1c2goZVtpXS5kYXRhW2xdLnlbMF0pLGEucHVzaChlW2ldLmRhdGFbbF0ueVsxXSl9cmV0dXJue3N0YXJ0OnMsZW5kOmF9fX0se2tleTpcImhhbmRsZUNhbmRsZVN0aWNrRGF0YUZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz1bXSxhPVtdLHI9W10sbj1bXSxvPVwiUGxlYXNlIHByb3ZpZGUgW09wZW4sIEhpZ2gsIExvdyBhbmQgQ2xvc2VdIHZhbHVlcyBpbiB2YWxpZCBmb3JtYXQuIFJlYWQgbW9yZSBodHRwczovL2FwZXhjaGFydHMuY29tL2RvY3Mvc2VyaWVzLyNjYW5kbGVzdGlja1wiO2lmKFwiYXJyYXlcIj09PXQpe2lmKDQhPT1lW2ldLmRhdGFbMF1bMV0ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihvKTtmb3IodmFyIGw9MDtsPGVbaV0uZGF0YS5sZW5ndGg7bCsrKXMucHVzaChlW2ldLmRhdGFbbF1bMV1bMF0pLGEucHVzaChlW2ldLmRhdGFbbF1bMV1bMV0pLHIucHVzaChlW2ldLmRhdGFbbF1bMV1bMl0pLG4ucHVzaChlW2ldLmRhdGFbbF1bMV1bM10pfWVsc2UgaWYoXCJ4eVwiPT09dCl7aWYoNCE9PWVbaV0uZGF0YVswXS55Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3Iobyk7Zm9yKHZhciBoPTA7aDxlW2ldLmRhdGEubGVuZ3RoO2grKylzLnB1c2goZVtpXS5kYXRhW2hdLnlbMF0pLGEucHVzaChlW2ldLmRhdGFbaF0ueVsxXSksci5wdXNoKGVbaV0uZGF0YVtoXS55WzJdKSxuLnB1c2goZVtpXS5kYXRhW2hdLnlbM10pfXJldHVybntvOnMsaDphLGw6cixjOm59fX0se2tleTpcInBhcnNlRGF0YUF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuY3R4LGk9dGhpcy53LmNvbmZpZyxzPXRoaXMudy5nbG9iYWxzLGE9bmV3IERhdGVUaW1lKGUpLHI9MDtyPHQubGVuZ3RoO3IrKyl7aWYodGhpcy50d29EU2VyaWVzPVtdLHRoaXMudHdvRFNlcmllc1g9W10sdGhpcy50aHJlZURTZXJpZXM9W10sdm9pZCAwPT09dFtyXS5kYXRhKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoXCJJdCBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgeW91IG1heSBoYXZlIG5vdCBpbmNsdWRlZCAnZGF0YScgcHJvcGVydHkgaW4gc2VyaWVzLlwiKTtpZihcInJhbmdlQmFyXCIhPT1pLmNoYXJ0LnR5cGUmJlwicmFuZ2VBcmVhXCIhPT1pLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIiE9PXRbcl0udHlwZSYmXCJyYW5nZUFyZWFcIiE9PXRbcl0udHlwZXx8KHMuaXNSYW5nZURhdGE9ITAsdGhpcy5oYW5kbGVSYW5nZURhdGEodCxyKSksdGhpcy5pc011bHRpRm9ybWF0KCkpdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT90aGlzLmhhbmRsZUZvcm1hdDJEQXJyYXkodCxyKTp0aGlzLmlzRm9ybWF0WFkoKSYmdGhpcy5oYW5kbGVGb3JtYXRYWSh0LHIpLFwiY2FuZGxlc3RpY2tcIiE9PWkuY2hhcnQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09dFtyXS50eXBlfHx0aGlzLmhhbmRsZUNhbmRsZVN0aWNrRGF0YSh0LHIpLHMuc2VyaWVzLnB1c2godGhpcy50d29EU2VyaWVzKSxzLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpLHMuc2VyaWVzWC5wdXNoKHRoaXMudHdvRFNlcmllc1gpLHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5fHwocy5pc1hOdW1lcmljPSEwKTtlbHNle2lmKFwiZGF0ZXRpbWVcIj09PWkueGF4aXMudHlwZSl7cy5pc1hOdW1lcmljPSEwO2Zvcih2YXIgbj1pLmxhYmVscy5sZW5ndGg+MD9pLmxhYmVscy5zbGljZSgpOmkueGF4aXMuY2F0ZWdvcmllcy5zbGljZSgpLG89MDtvPG4ubGVuZ3RoO28rKylpZihcInN0cmluZ1wiPT10eXBlb2YgbltvXSl7aWYoIWEuaXNWYWxpZERhdGUobltvXSkpdGhyb3cgbmV3IEVycm9yKFwiWW91IGhhdmUgcHJvdmlkZWQgaW52YWxpZCBEYXRlIGZvcm1hdC4gUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIik7dGhpcy50d29EU2VyaWVzWC5wdXNoKGEucGFyc2VEYXRlKG5bb10pKX1lbHNle2lmKDEzIT09U3RyaW5nKG5bb10pLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIEphdmFTY3JpcHQgdGltZXN0YW1wXCIpO3RoaXMudHdvRFNlcmllc1gucHVzaChuW29dKX1zLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKX1lbHNlIGlmKFwibnVtZXJpY1wiPT09aS54YXhpcy50eXBlKXtzLmlzWE51bWVyaWM9ITA7dmFyIGw9aS5sYWJlbHMubGVuZ3RoPjA/aS5sYWJlbHMuc2xpY2UoKTppLnhheGlzLmNhdGVnb3JpZXMuc2xpY2UoKTtsLmxlbmd0aD4wJiYodGhpcy50d29EU2VyaWVzWD1sLHMuc2VyaWVzWC5wdXNoKHRoaXMudHdvRFNlcmllc1gpKX1zLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpO3ZhciBoPXRbcl0uZGF0YS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIFV0aWxzLnBhcnNlTnVtYmVyKHQpfSk7cy5zZXJpZXMucHVzaChoKX1zLnNlcmllc1oucHVzaCh0aGlzLnRocmVlRFNlcmllcyksdm9pZCAwIT09dFtyXS5uYW1lP3Muc2VyaWVzTmFtZXMucHVzaCh0W3JdLm5hbWUpOnMuc2VyaWVzTmFtZXMucHVzaChcInNlcmllcy1cIitwYXJzZUludChyKzEpKX1yZXR1cm4gdGhpcy53fX0se2tleTpcInBhcnNlRGF0YU5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWc7ZS5zZXJpZXM9dC5zbGljZSgpLGUuc2VyaWVzTmFtZXM9aS5sYWJlbHMuc2xpY2UoKTtmb3IodmFyIHM9MDtzPGUuc2VyaWVzLmxlbmd0aDtzKyspdm9pZCAwPT09ZS5zZXJpZXNOYW1lc1tzXSYmZS5zZXJpZXNOYW1lcy5wdXNoKFwic2VyaWVzLVwiKyhzKzEpKTtyZXR1cm4gdGhpcy53fX0se2tleTpcImhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5jb25maWcsaT10aGlzLncuZ2xvYmFscztpZihlLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoPjApaS5sYWJlbHM9ZS54YXhpcy5jYXRlZ29yaWVzO2Vsc2UgaWYoZS5sYWJlbHMubGVuZ3RoPjApaS5sYWJlbHM9ZS5sYWJlbHMuc2xpY2UoKTtlbHNlIGlmKHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5KWkubGFiZWxzPWkubGFiZWxzWzBdO2Vsc2V7dmFyIHM9W107aWYoaS5heGlzQ2hhcnRzKXtpZihpLnNlcmllcy5sZW5ndGg+MClmb3IodmFyIGE9MDthPGkuc2VyaWVzW2kubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO2ErKylzLnB1c2goYSsxKTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKylpLnNlcmllc1gucHVzaChzKTtpLmlzWE51bWVyaWM9ITB9aWYoMD09PXMubGVuZ3RoKXtzPVswLDEwXTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpLnNlcmllc1gucHVzaChzKX1pLmxhYmVscz1zLGkubm9MYWJlbHNQcm92aWRlZD0hMH19fSx7a2V5OlwicGFyc2VEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcscz1lLmdsb2JhbHM7aWYodGhpcy5leGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpcygpLHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSExLHRoaXMucmVzZXRHbG9iYWxzKCksdGhpcy5pc011bHRpcGxlWSgpLHMuYXhpc0NoYXJ0cz90aGlzLnBhcnNlRGF0YUF4aXNDaGFydHModCk6dGhpcy5wYXJzZURhdGFOb25BeGlzQ2hhcnRzKHQpLHRoaXMuY29yZVV0aWxzLmdldExhcmdlc3RTZXJpZXMoKSxcImJhclwiPT09aS5jaGFydC50eXBlJiZpLmNoYXJ0LnN0YWNrZWQpe3ZhciBhPW5ldyBTZXJpZXModGhpcy5jdHgpO3Muc2VyaWVzPWEuc2V0TnVsbFNlcmllc1RvWmVyb1ZhbHVlcyhzLnNlcmllcyl9dGhpcy5jb3JlVXRpbHMuZ2V0U2VyaWVzVG90YWxzKCkscy5heGlzQ2hhcnRzJiZ0aGlzLmNvcmVVdGlscy5nZXRTdGFja2VkU2VyaWVzVG90YWxzKCksdGhpcy5jb3JlVXRpbHMuZ2V0UGVyY2VudFNlcmllcygpLHMuZGF0YUZvcm1hdFhOdW1lcmljfHxzLmlzWE51bWVyaWMmJihcIm51bWVyaWNcIiE9PWkueGF4aXMudHlwZXx8MCE9PWkubGFiZWxzLmxlbmd0aHx8MCE9PWkueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgpfHx0aGlzLmhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YSh0KX19LHtrZXk6XCJ4eVNldHRpbmdzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1udWxsLGU9dGhpcy53O2lmKGUuZ2xvYmFscy5heGlzQ2hhcnRzKXtpZihcImJhY2tcIj09PWUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMucG9zaXRpb24pbmV3IENyb3NzaGFpcnModGhpcy5jdHgpLmRyYXdYQ3Jvc3NoYWlycygpO2lmKFwiYmFja1wiPT09ZS5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5wb3NpdGlvbiluZXcgQ3Jvc3NoYWlycyh0aGlzLmN0eCkuZHJhd1lDcm9zc2hhaXJzKCk7aWYodD10aGlzLmNvcmVVdGlscy5nZXRDYWxjdWxhdGVkUmF0aW9zKCksXCJkYXRldGltZVwiPT09ZS5jb25maWcueGF4aXMudHlwZSYmdm9pZCAwPT09ZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcil7dmFyIGkscz1uZXcgVGltZVNjYWxlKHRoaXMuY3R4KTtpc0Zpbml0ZShlLmdsb2JhbHMubWluWCkmJmlzRmluaXRlKGUuZ2xvYmFscy5tYXhYKSYmIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KGk9cy5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWCxlLmdsb2JhbHMubWF4WCkscy5yZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdChpLCExKSk6ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGk9cy5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWSxlLmdsb2JhbHMubWF4WSkscy5yZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdChpLCEwKSl9fXJldHVybiB0fX0se2tleTpcImRyYXdBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaSxzLGE9dGhpcy53Lmdsb2JhbHMscj10aGlzLncuY29uZmlnLG49bmV3IFhBeGlzKHRoaXMuY3R4KSxvPW5ldyBZQXhpcyh0aGlzLmN0eCk7YS5heGlzQ2hhcnRzJiZcInJhZGFyXCIhPT10JiYoYS5pc0Jhckhvcml6b250YWw/KHM9by5kcmF3WWF4aXNJbnZlcnNlZCgwKSxpPW4uZHJhd1hheGlzSW52ZXJzZWQoMCksYS5kb20uZWxHcmFwaGljYWwuYWRkKGkpLGEuZG9tLmVsR3JhcGhpY2FsLmFkZChzKSk6KGk9bi5kcmF3WGF4aXMoKSxhLmRvbS5lbEdyYXBoaWNhbC5hZGQoaSksci55YXhpcy5tYXAoZnVuY3Rpb24odCxlKXstMT09PWEuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkmJihzPW8uZHJhd1lheGlzKGUpLGEuZG9tLlBhcGVyLmFkZChzKSl9KSkpO3IueWF4aXMubWFwKGZ1bmN0aW9uKHQsZSl7LTE9PT1hLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGUpJiZvLnlBeGlzVGl0bGVSb3RhdGUoZSx0Lm9wcG9zaXRlKX0pfX0se2tleTpcInNldHVwQnJ1c2hIYW5kbGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53O2lmKGUuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24pe3ZhciBpPWUuY29uZmlnLmNoYXJ0LmJydXNoLnRhcmdldHN8fFtlLmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRdO2kuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgaT1BcGV4Q2hhcnRzLmdldENoYXJ0QnlJRChlKTtpLncuZ2xvYmFscy5icnVzaFNvdXJjZT10LmN0eDt2YXIgcz1mdW5jdGlvbigpe3QuY3R4Ll91cGRhdGVPcHRpb25zKHtjaGFydDp7c2VsZWN0aW9uOnt4YXhpczp7bWluOmkudy5nbG9iYWxzLm1pblgsbWF4Omkudy5nbG9iYWxzLm1heFh9fX19LCExLCExKX07XCJmdW5jdGlvblwiIT10eXBlb2YgaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkJiYoaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkPWZ1bmN0aW9uKCl7cygpfSksXCJmdW5jdGlvblwiIT10eXBlb2YgaS53LmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQmJihpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZD1mdW5jdGlvbigpe3MoKX0pfSksZS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbj1mdW5jdGlvbih0LHMpe2kuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaT1BcGV4Q2hhcnRzLmdldENoYXJ0QnlJRCh0KSxhPVV0aWxzLmNsb25lKGUuY29uZmlnLnlheGlzKTtlLmNvbmZpZy5jaGFydC5icnVzaC5hdXRvU2NhbGVZYXhpcyYmKGE9bmV3IFJhbmdlKGkpLmF1dG9TY2FsZVkoaSxhLHMpKTtpLl91cGRhdGVPcHRpb25zKHt4YXhpczp7bWluOnMueGF4aXMubWluLG1heDpzLnhheGlzLm1heH0seWF4aXM6YX0sITEsITEsITEsITEpfSl9fX19XSksdH0oKTtmdW5jdGlvbiBmaW5hbGx5Q29uc3RydWN0b3IodCl7dmFyIGU9dGhpcy5jb25zdHJ1Y3RvcjtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKGkpe3JldHVybiBlLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KX0sZnVuY3Rpb24oaSl7cmV0dXJuIGUucmVzb2x2ZSh0KCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWplY3QoaSl9KX0pfXZhciBzZXRUaW1lb3V0RnVuYz1zZXRUaW1lb3V0O2Z1bmN0aW9uIG5vb3AoKXt9ZnVuY3Rpb24gYmluZCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3QuYXBwbHkoZSxhcmd1bWVudHMpfX1mdW5jdGlvbiBQcm9taXNlJDEodCl7aWYoISh0aGlzIGluc3RhbmNlb2YgUHJvbWlzZSQxKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3XCIpO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIm5vdCBhIGZ1bmN0aW9uXCIpO3RoaXMuX3N0YXRlPTAsdGhpcy5faGFuZGxlZD0hMSx0aGlzLl92YWx1ZT12b2lkIDAsdGhpcy5fZGVmZXJyZWRzPVtdLGRvUmVzb2x2ZSh0LHRoaXMpfWZ1bmN0aW9uIGhhbmRsZSh0LGUpe2Zvcig7Mz09PXQuX3N0YXRlOyl0PXQuX3ZhbHVlOzAhPT10Ll9zdGF0ZT8odC5faGFuZGxlZD0hMCxQcm9taXNlJDEuX2ltbWVkaWF0ZUZuKGZ1bmN0aW9uKCl7dmFyIGk9MT09PXQuX3N0YXRlP2Uub25GdWxmaWxsZWQ6ZS5vblJlamVjdGVkO2lmKG51bGwhPT1pKXt2YXIgczt0cnl7cz1pKHQuX3ZhbHVlKX1jYXRjaCh0KXtyZXR1cm4gdm9pZCByZWplY3QoZS5wcm9taXNlLHQpfXJlc29sdmUoZS5wcm9taXNlLHMpfWVsc2UoMT09PXQuX3N0YXRlP3Jlc29sdmU6cmVqZWN0KShlLnByb21pc2UsdC5fdmFsdWUpfSkpOnQuX2RlZmVycmVkcy5wdXNoKGUpfWZ1bmN0aW9uIHJlc29sdmUodCxlKXt0cnl7aWYoZT09PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuXCIpO2lmKGUmJihcIm9iamVjdFwiPT10eXBlb2YgZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZSkpe3ZhciBpPWUudGhlbjtpZihlIGluc3RhbmNlb2YgUHJvbWlzZSQxKXJldHVybiB0Ll9zdGF0ZT0zLHQuX3ZhbHVlPWUsdm9pZCBmaW5hbGUodCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaSlyZXR1cm4gdm9pZCBkb1Jlc29sdmUoYmluZChpLGUpLHQpfXQuX3N0YXRlPTEsdC5fdmFsdWU9ZSxmaW5hbGUodCl9Y2F0Y2goZSl7cmVqZWN0KHQsZSl9fWZ1bmN0aW9uIHJlamVjdCh0LGUpe3QuX3N0YXRlPTIsdC5fdmFsdWU9ZSxmaW5hbGUodCl9ZnVuY3Rpb24gZmluYWxlKHQpezI9PT10Ll9zdGF0ZSYmMD09PXQuX2RlZmVycmVkcy5sZW5ndGgmJlByb21pc2UkMS5faW1tZWRpYXRlRm4oZnVuY3Rpb24oKXt0Ll9oYW5kbGVkfHxQcm9taXNlJDEuX3VuaGFuZGxlZFJlamVjdGlvbkZuKHQuX3ZhbHVlKX0pO2Zvcih2YXIgZT0wLGk9dC5fZGVmZXJyZWRzLmxlbmd0aDtlPGk7ZSsrKWhhbmRsZSh0LHQuX2RlZmVycmVkc1tlXSk7dC5fZGVmZXJyZWRzPW51bGx9ZnVuY3Rpb24gSGFuZGxlcih0LGUsaSl7dGhpcy5vbkZ1bGZpbGxlZD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6bnVsbCx0aGlzLm9uUmVqZWN0ZWQ9XCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOm51bGwsdGhpcy5wcm9taXNlPWl9ZnVuY3Rpb24gZG9SZXNvbHZlKHQsZSl7dmFyIGk9ITE7dHJ5e3QoZnVuY3Rpb24odCl7aXx8KGk9ITAscmVzb2x2ZShlLHQpKX0sZnVuY3Rpb24odCl7aXx8KGk9ITAscmVqZWN0KGUsdCkpfSl9Y2F0Y2godCl7aWYoaSlyZXR1cm47aT0hMCxyZWplY3QoZSx0KX19UHJvbWlzZSQxLnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LFByb21pc2UkMS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LGUpe3ZhciBpPW5ldyB0aGlzLmNvbnN0cnVjdG9yKG5vb3ApO3JldHVybiBoYW5kbGUodGhpcyxuZXcgSGFuZGxlcih0LGUsaSkpLGl9LFByb21pc2UkMS5wcm90b3R5cGUuZmluYWxseT1maW5hbGx5Q29uc3RydWN0b3IsUHJvbWlzZSQxLmFsbD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbihlLGkpe2lmKCF0fHx2b2lkIDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJvbWlzZS5hbGwgYWNjZXB0cyBhbiBhcnJheVwiKTt2YXIgcz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KTtpZigwPT09cy5sZW5ndGgpcmV0dXJuIGUoW10pO3ZhciBhPXMubGVuZ3RoO2Z1bmN0aW9uIHIodCxuKXt0cnl7aWYobiYmKFwib2JqZWN0XCI9PXR5cGVvZiBufHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKSl7dmFyIG89bi50aGVuO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG8pcmV0dXJuIHZvaWQgby5jYWxsKG4sZnVuY3Rpb24oZSl7cih0LGUpfSxpKX1zW3RdPW4sMD09LS1hJiZlKHMpfWNhdGNoKHQpe2kodCl9fWZvcih2YXIgbj0wO248cy5sZW5ndGg7bisrKXIobixzW25dKX0pfSxQcm9taXNlJDEucmVzb2x2ZT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJvYmplY3RcIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I9PT1Qcm9taXNlJDE/dDpuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uKGUpe2UodCl9KX0sUHJvbWlzZSQxLnJlamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbihlLGkpe2kodCl9KX0sUHJvbWlzZSQxLnJhY2U9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24oZSxpKXtmb3IodmFyIHM9MCxhPXQubGVuZ3RoO3M8YTtzKyspdFtzXS50aGVuKGUsaSl9KX0sUHJvbWlzZSQxLl9pbW1lZGlhdGVGbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZXRJbW1lZGlhdGUmJmZ1bmN0aW9uKHQpe3NldEltbWVkaWF0ZSh0KX18fGZ1bmN0aW9uKHQpe3NldFRpbWVvdXRGdW5jKHQsMCl9LFByb21pc2UkMS5fdW5oYW5kbGVkUmVqZWN0aW9uRm49ZnVuY3Rpb24odCl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUmJmNvbnNvbGUud2FybihcIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjpcIix0KX07dmFyIEV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJnZXRTdmdTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuc3ZnKCl9fSx7a2V5OlwiY2xlYW51cFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCIpO2UmJmUuc2V0QXR0cmlidXRlKFwieFwiLC01MDApLGkmJihpLnNldEF0dHJpYnV0ZShcInkxXCIsLTEwMCksaS5zZXRBdHRyaWJ1dGUoXCJ5MlwiLC0xMDApKX19LHtrZXk6XCJzdmdVcmxcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xlYW51cCgpO3ZhciB0PXRoaXMuZ2V0U3ZnU3RyaW5nKCksZT1uZXcgQmxvYihbdF0se3R5cGU6XCJpbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLThcIn0pO3JldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGUpfX0se2tleTpcImRhdGFVUklcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24oZSl7dmFyIGk9dC53O3QuY2xlYW51cCgpO3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7cy53aWR0aD1pLmdsb2JhbHMuc3ZnV2lkdGgscy5oZWlnaHQ9aS5nbG9iYWxzLnN2Z0hlaWdodDt2YXIgYT1cInRyYW5zcGFyZW50XCI9PT1pLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kP1wiI2ZmZlwiOmkuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQscj1zLmdldENvbnRleHQoXCIyZFwiKTtyLmZpbGxTdHlsZT1hLHIuZmlsbFJlY3QoMCwwLHMud2lkdGgscy5oZWlnaHQpO3ZhciBuPXdpbmRvdy5VUkx8fHdpbmRvdy53ZWJraXRVUkx8fHdpbmRvdyxvPW5ldyBJbWFnZTtvLmNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCI7dmFyIGw9dC5nZXRTdmdTdHJpbmcoKSxoPVwiZGF0YTppbWFnZS9zdmcreG1sLFwiK2VuY29kZVVSSUNvbXBvbmVudChsKTtvLm9ubG9hZD1mdW5jdGlvbigpe3IuZHJhd0ltYWdlKG8sMCwwKSxuLnJldm9rZU9iamVjdFVSTChoKTt2YXIgdD1zLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtlKHQpfSxvLnNyYz1ofSl9fSx7a2V5OlwiZXhwb3J0VG9TVkdcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlckRvd25sb2FkKHRoaXMuc3ZnVXJsKCksXCIuc3ZnXCIpfX0se2tleTpcImV4cG9ydFRvUG5nXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZGF0YVVSSSgpLnRoZW4oZnVuY3Rpb24oZSl7dC50cmlnZ2VyRG93bmxvYWQoZSxcIi5wbmdcIil9KX19LHtrZXk6XCJ0cmlnZ2VyRG93bmxvYWRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2kuaHJlZj10LGkuZG93bmxvYWQ9dGhpcy53Lmdsb2JhbHMuY2hhcnRJRCtlLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSksaS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaSl9fV0pLHR9KCksR3JpZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmFuaW09bmV3IEFuaW1hdGlvbnModGhpcy5jdHgpLHRoaXMueGF4aXNMYWJlbHM9aS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLHRoaXMuYW5pbVg9aS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5hbmltYXRlJiZpLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsdGhpcy5hbmltWT1pLmNvbmZpZy5ncmlkLnlheGlzLmxpbmVzLmFuaW1hdGUmJmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCxpLmdsb2JhbHMudGltZWxpbmVMYWJlbHMubGVuZ3RoPjAmJih0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy50aW1lbGluZUxhYmVscy5zbGljZSgpKX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJkcmF3R3JpZEFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGU9dGhpcy53LGk9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KTtudWxsPT09dCYmKHQ9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRcIn0pKTt2YXIgcz1pLmRyYXdMaW5lKGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLDEsZS5nbG9iYWxzLnBhZEhvcml6b250YWwsZS5nbG9iYWxzLmdyaWRIZWlnaHQsXCJ0cmFuc3BhcmVudFwiKSxhPWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwsZS5nbG9iYWxzLmdyaWRIZWlnaHQsZS5nbG9iYWxzLmdyaWRXaWR0aCxlLmdsb2JhbHMuZ3JpZEhlaWdodCxcInRyYW5zcGFyZW50XCIpO3JldHVybiB0LmFkZChhKSx0LmFkZChzKSx0fX0se2tleTpcImRyYXdHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgWEF4aXModGhpcy5jdHgpLGk9bmV3IFlBeGlzKHRoaXMuY3R4KSxzPXRoaXMudy5nbG9iYWxzLGE9bnVsbDtpZihzLmF4aXNDaGFydHMpe2lmKHQuY29uZmlnLmdyaWQuc2hvdylhPXRoaXMucmVuZGVyR3JpZCgpLHMuZG9tLmVsR3JhcGhpY2FsLmFkZChhLmVsKSx0aGlzLmRyYXdHcmlkQXJlYShhLmVsKTtlbHNle3ZhciByPXRoaXMuZHJhd0dyaWRBcmVhKCk7cy5kb20uZWxHcmFwaGljYWwuYWRkKHIpfW51bGwhPT1hJiZlLnhBeGlzTGFiZWxDb3JyZWN0aW9ucyhhLnhBeGlzVGlja1dpZHRoKSxpLnNldFlBeGlzVGV4dEFsaWdubWVudHMoKX19fSx7a2V5OlwiY3JlYXRlR3JpZE1hc2tcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPW5ldyBHcmFwaGljcyh0aGlzLmN0eCkscz1BcnJheS5pc0FycmF5KHQuY29uZmlnLnN0cm9rZS53aWR0aCk/MDp0LmNvbmZpZy5zdHJva2Uud2lkdGg7aWYoQXJyYXkuaXNBcnJheSh0LmNvbmZpZy5zdHJva2Uud2lkdGgpKXt2YXIgYT0wO3QuY29uZmlnLnN0cm9rZS53aWR0aC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2E9TWF0aC5tYXgoYSx0KX0pLHM9YX1lLmRvbS5lbEdyaWRSZWN0TWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImNsaXBQYXRoXCIpLGUuZG9tLmVsR3JpZFJlY3RNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJncmlkUmVjdE1hc2tcIi5jb25jYXQoZS5jdWlkKSksZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZ3JpZFJlY3RNYXJrZXJNYXNrXCIuY29uY2F0KGUuY3VpZCkpLGUuZG9tLmVsR3JpZFJlY3Q9aS5kcmF3UmVjdCgtcy8yLC1zLzIsZS5ncmlkV2lkdGgrcyxlLmdyaWRIZWlnaHQrcywwLFwiI2ZmZlwiKSxuZXcgQ29yZVV0aWxzKHRoaXMpLmdldExhcmdlc3RNYXJrZXJTaXplKCk7dmFyIHI9dC5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUrMTtlLmRvbS5lbEdyaWRSZWN0TWFya2VyPWkuZHJhd1JlY3QoLXIsLXIsZS5ncmlkV2lkdGgrMipyLGUuZ3JpZEhlaWdodCsyKnIsMCxcIiNmZmZcIiksZS5kb20uZWxHcmlkUmVjdE1hc2suYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdC5ub2RlKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzay5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0TWFya2VyLm5vZGUpO3ZhciBuPWUuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiZGVmc1wiKTtuLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXNrKSxuLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrKX19LHtrZXk6XCJyZW5kZXJHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLGk9dC5jb25maWcuZ3JpZC5zdHJva2VEYXNoQXJyYXkscz1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZFwifSksYT1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZGxpbmVzLWhvcml6b250YWxcIn0pLHI9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy12ZXJ0aWNhbFwifSk7cy5hZGQoYSkscy5hZGQocik7Zm9yKHZhciBuLG89OCxsPTA7bDx0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHZvaWQgMCE9PXQuZ2xvYmFscy55QXhpc1NjYWxlW2xdJiYobz10Lmdsb2JhbHMueUF4aXNTY2FsZVtsXS5yZXN1bHQubGVuZ3RoLTEpLCEobz4yKSk7bCsrKTtpZih0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXtpZihuPW8sdC5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHx0LmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdylmb3IodmFyIGgsYz10Lmdsb2JhbHMucGFkSG9yaXpvbnRhbCxkPXQuZ2xvYmFscy5ncmlkSGVpZ2h0LHU9MDt1PG4rMSYmKGg9Yz1jK3QuZ2xvYmFscy5ncmlkV2lkdGgvbisuMyx1IT09bi0xKTt1Kyspe2lmKHQuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyl7dmFyIGc9ZS5kcmF3TGluZShjLDAsaCxkLHQuY29uZmlnLmdyaWQuYm9yZGVyQ29sb3IsaSk7Zy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWdyaWRsaW5lXCIpLHIuYWRkKGcpLHRoaXMuYW5pbVgmJnRoaXMuYW5pbWF0ZUxpbmUoZyx7eDE6MCx4MjowfSx7eDE6Yyx4MjpofSl9bmV3IFhBeGlzKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhjLHMpfWlmKHQuY29uZmlnLmdyaWQueWF4aXMubGluZXMuc2hvdylmb3IodmFyIGY9MCxwPTAseD10Lmdsb2JhbHMuZ3JpZFdpZHRoLG09MDttPHQuZ2xvYmFscy5kYXRhUG9pbnRzKzE7bSsrKXt2YXIgYj1lLmRyYXdMaW5lKDAsZix4LHAsdC5jb25maWcuZ3JpZC5ib3JkZXJDb2xvcixpKTthLmFkZChiKSxiLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZ3JpZGxpbmVcIiksdGhpcy5hbmltWSYmdGhpcy5hbmltYXRlTGluZShiLHt5MTpmKzIwLHkyOnArMjB9LHt5MTpmLHkyOnB9KSxwPWYrPXQuZ2xvYmFscy5ncmlkSGVpZ2h0L3QuZ2xvYmFscy5kYXRhUG9pbnRzfX1lbHNle2lmKG49dGhpcy54YXhpc0xhYmVscy5sZW5ndGgsdC5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHx0LmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIHYseT10Lmdsb2JhbHMucGFkSG9yaXpvbnRhbCx3PXQuZ2xvYmFscy5ncmlkSGVpZ2h0O2lmKHQuZ2xvYmFscy50aW1lbGluZUxhYmVscy5sZW5ndGg+MClmb3IodmFyIGs9MDtrPG47aysrKXtpZih5PXRoaXMueGF4aXNMYWJlbHNba10ucG9zaXRpb24sdj10aGlzLnhheGlzTGFiZWxzW2tdLnBvc2l0aW9uLHQuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyYmeT4wJiZ5PHQuZ2xvYmFscy5ncmlkV2lkdGgpe3ZhciBBPWUuZHJhd0xpbmUoeSwwLHYsdyx0LmNvbmZpZy5ncmlkLmJvcmRlckNvbG9yLGkpO0Eubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1ncmlkbGluZVwiKSxyLmFkZChBKSx0aGlzLmFuaW1YJiZ0aGlzLmFuaW1hdGVMaW5lKEEse3gxOjAseDI6MH0se3gxOnkseDI6dn0pfXZhciBTPW5ldyBYQXhpcyh0aGlzLmN0eCk7az09PW4tMSYmdC5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbHx8Uy5kcmF3WGF4aXNUaWNrcyh5LHMpfWVsc2UgZm9yKHZhciBDPW4sTD0wO0w8QztMKyspe3ZhciBQPUM7aWYodC5nbG9iYWxzLmlzWE51bWVyaWMmJlwiYmFyXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiYoUC09MSksdj15Kz10Lmdsb2JhbHMuZ3JpZFdpZHRoL1AsTD09PVAtMSlicmVhaztpZih0LmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3cpe3ZhciB6PWUuZHJhd0xpbmUoeSwwLHYsdyx0LmNvbmZpZy5ncmlkLmJvcmRlckNvbG9yLGkpO3oubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1ncmlkbGluZVwiKSxyLmFkZCh6KSx0aGlzLmFuaW1YJiZ0aGlzLmFuaW1hdGVMaW5lKHose3gxOjAseDI6MH0se3gxOnkseDI6dn0pfW5ldyBYQXhpcyh0aGlzLmN0eCkuZHJhd1hheGlzVGlja3MoeSxzKX19aWYodC5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KWZvcih2YXIgVD0wLE09MCxFPXQuZ2xvYmFscy5ncmlkV2lkdGgsWD0wO1g8bysxO1grKyl7dmFyIEk9ZS5kcmF3TGluZSgwLFQsRSxNLHQuY29uZmlnLmdyaWQuYm9yZGVyQ29sb3IsaSk7YS5hZGQoSSksSS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWdyaWRsaW5lXCIpLHRoaXMuYW5pbVkmJnRoaXMuYW5pbWF0ZUxpbmUoSSx7eTE6VCsyMCx5MjpNKzIwfSx7eTE6VCx5MjpNfSksTT1UKz10Lmdsb2JhbHMuZ3JpZEhlaWdodC9vfX1yZXR1cm4gdGhpcy5kcmF3R3JpZEJhbmRzKHMsbixvKSx7ZWw6cyx4QXhpc1RpY2tXaWR0aDp0Lmdsb2JhbHMuZ3JpZFdpZHRoL259fX0se2tleTpcImRyYXdHcmlkQmFuZHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KTtpZih2b2lkIDAhPT1zLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMmJnMuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIHI9MCxuPXMuZ2xvYmFscy5ncmlkSGVpZ2h0L2ksbz1zLmdsb2JhbHMuZ3JpZFdpZHRoLGw9MCxoPTA7bDxpO2wrKyxoKyspe2g+PXMuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGgmJihoPTApO3ZhciBjPXMuY29uZmlnLmdyaWQucm93LmNvbG9yc1toXSxkPWEuZHJhd1JlY3QoMCxyLG8sbiwwLGMscy5jb25maWcuZ3JpZC5yb3cub3BhY2l0eSk7dC5hZGQoZCksZC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWdyaWRSb3dcIikscis9cy5nbG9iYWxzLmdyaWRIZWlnaHQvaX1pZih2b2lkIDAhPT1zLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMmJnMuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIHU9cy5nbG9iYWxzLnBhZEhvcml6b250YWwsZz1zLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtzLmdsb2JhbHMuZ3JpZFdpZHRoL2UsZj1zLmdsb2JhbHMuZ3JpZEhlaWdodCxwPTAseD0wO3A8ZTtwKysseCsrKXt4Pj1zLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMubGVuZ3RoJiYoeD0wKTt2YXIgbT1zLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnNbeF0sYj1hLmRyYXdSZWN0KHUsMCxnLGYsMCxtLHMuY29uZmlnLmdyaWQuY29sdW1uLm9wYWNpdHkpO2Iubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1ncmlkQ29sdW1uXCIpLHQuYWRkKGIpLHUrPXMuZ2xvYmFscy5ncmlkV2lkdGgvZX19fSx7a2V5OlwiYW5pbWF0ZUxpbmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9cy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucztpZihhJiYhcy5nbG9iYWxzLnJlc2l6ZWQmJiFzLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciByPWEuc3BlZWQ7dGhpcy5hbmltLmFuaW1hdGVMaW5lKHQsZSxpLHIpfX19XSksdH0oKSxSZXNwb25zaXZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiY2hlY2tSZXNwb25zaXZlQ29uZmlnXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxzPWkuY29uZmlnO2lmKDAhPT1zLnJlc3BvbnNpdmUubGVuZ3RoKXt2YXIgYT1zLnJlc3BvbnNpdmUuc2xpY2UoKTthLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5icmVha3BvaW50PmUuYnJlYWtwb2ludD8xOmUuYnJlYWtwb2ludD50LmJyZWFrcG9pbnQ/LTE6MH0pLnJldmVyc2UoKTt2YXIgcj1uZXcgQ29uZmlnKHt9KSxuPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHM9YVswXS5icmVha3BvaW50LG49d2luZG93LmlubmVyV2lkdGg+MD93aW5kb3cuaW5uZXJXaWR0aDpzY3JlZW4ud2lkdGg7aWYobj5zKXt2YXIgbz1Db3JlVXRpbHMuZXh0ZW5kQXJyYXlQcm9wcyhyLGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnKTt0PVV0aWxzLmV4dGVuZChvLHQpLHQ9VXRpbHMuZXh0ZW5kKGkuY29uZmlnLHQpLGUub3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9ucyh0KX1lbHNlIGZvcih2YXIgbD0wO2w8YS5sZW5ndGg7bCsrKW48YVtsXS5icmVha3BvaW50JiYodD1Db3JlVXRpbHMuZXh0ZW5kQXJyYXlQcm9wcyhyLGFbbF0ub3B0aW9ucyksdD1VdGlscy5leHRlbmQoaS5jb25maWcsdCksZS5vdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zKHQpKX07aWYodCl7dmFyIG89Q29yZVV0aWxzLmV4dGVuZEFycmF5UHJvcHMocix0KTtvPVV0aWxzLmV4dGVuZChpLmNvbmZpZyxvKSxuKG89VXRpbHMuZXh0ZW5kKG8sdCkpfWVsc2Ugbih7fSl9fX0se2tleTpcIm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgQ29uZmlnKHQpLmluaXQoKTt0aGlzLncuY29uZmlnPWV9fV0pLHR9KCksVGhlbWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmNvbG9ycz1bXX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldERlZmF1bHRDb2xvcnMoKX19LHtrZXk6XCJzZXREZWZhdWx0Q29sb3JzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgVXRpbHM7aWYodC5nbG9iYWxzLmRvbS5lbFdyYXAuY2xhc3NMaXN0LmFkZCh0LmNvbmZpZy50aGVtZS5tb2RlKSx2b2lkIDA9PT10LmNvbmZpZy5jb2xvcnM/dC5nbG9iYWxzLmNvbG9ycz10aGlzLnByZWRlZmluZWQoKTp0Lmdsb2JhbHMuY29sb3JzPXQuY29uZmlnLmNvbG9ycyx0LmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmVuYWJsZWQpe3ZhciBpPVtdLHM9dC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7dC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkJiZcImJhclwiPT09dC5jb25maWcuY2hhcnQudHlwZSYmKHM9dC5nbG9iYWxzLnNlcmllc1swXS5sZW5ndGgqdC5nbG9iYWxzLnNlcmllcy5sZW5ndGgpO2Zvcih2YXIgYT10LmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmNvbG9yLHI9MS8ocy90LmNvbmZpZy50aGVtZS5tb25vY2hyb21lLnNoYWRlSW50ZW5zaXR5KSxuPXQuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuc2hhZGVUbyxvPTAsbD0wO2w8cztsKyspe3ZhciBoPXZvaWQgMDtcImRhcmtcIj09PW4/KGg9ZS5zaGFkZUNvbG9yKC0xKm8sYSksbys9cik6KGg9ZS5zaGFkZUNvbG9yKG8sYSksbys9ciksaS5wdXNoKGgpfXQuZ2xvYmFscy5jb2xvcnM9aS5zbGljZSgpfXZhciBjPXQuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTt0aGlzLnB1c2hFeHRyYUNvbG9ycyh0Lmdsb2JhbHMuY29sb3JzKSx2b2lkIDA9PT10LmNvbmZpZy5zdHJva2UuY29sb3JzP3QuZ2xvYmFscy5zdHJva2UuY29sb3JzPWM6dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnM9dC5jb25maWcuc3Ryb2tlLmNvbG9ycyx0aGlzLnB1c2hFeHRyYUNvbG9ycyh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyksdm9pZCAwPT09dC5jb25maWcuZmlsbC5jb2xvcnM/dC5nbG9iYWxzLmZpbGwuY29sb3JzPWM6dC5nbG9iYWxzLmZpbGwuY29sb3JzPXQuY29uZmlnLmZpbGwuY29sb3JzLHRoaXMucHVzaEV4dHJhQ29sb3JzKHQuZ2xvYmFscy5maWxsLmNvbG9ycyksdm9pZCAwPT09dC5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM/dC5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzPWM6dC5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzPXQuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzLHRoaXMucHVzaEV4dHJhQ29sb3JzKHQuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycyw1MCksdm9pZCAwPT09dC5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMuZmlsbC5jb2xvcnM/dC5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnM9W1wiZGFya1wiPT09dC5jb25maWcudGhlbWUubW9kZT9cIiMyMDJENDhcIjpcIiNmZmZcIl06dC5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnM9dC5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMuZmlsbC5jb2xvcnMsdGhpcy5wdXNoRXh0cmFDb2xvcnModC5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnMsMjApLHZvaWQgMD09PXQuY29uZmlnLm1hcmtlcnMuY29sb3JzP3QuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz1jOnQuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz10LmNvbmZpZy5tYXJrZXJzLmNvbG9ycyx0aGlzLnB1c2hFeHRyYUNvbG9ycyh0Lmdsb2JhbHMubWFya2Vycy5jb2xvcnMpfX0se2tleTpcInB1c2hFeHRyYUNvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwscz10aGlzLncsYT1lfHxzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtpZihudWxsPT09aSYmKGk9XCJiYXJcIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCI9PT1zLmNvbmZpZy5jaGFydC50eXBlJiZzLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUuaW52ZXJzZSksaSYmKGE9cy5nbG9iYWxzLnNlcmllc1swXS5sZW5ndGgqcy5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLHQubGVuZ3RoPGEpZm9yKHZhciByPWEtdC5sZW5ndGgsbj0wO248cjtuKyspdC5wdXNoKHRbbl0pfX0se2tleTpcInVwZGF0ZVRoZW1lT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuY2hhcnQ9dC5jaGFydHx8e30sdC50b29sdGlwPXQudG9vbHRpcHx8e307dmFyIGU9dC50aGVtZS5tb2RlfHxcImxpZ2h0XCIsaT10LnRoZW1lLnBhbGV0dGU/dC50aGVtZS5wYWxldHRlOlwiZGFya1wiPT09ZT9cInBhbGV0dGU0XCI6XCJwYWxldHRlMVwiLHM9dC5jaGFydC5mb3JlQ29sb3I/dC5jaGFydC5mb3JlQ29sb3I6XCJkYXJrXCI9PT1lP1wiI2Y2ZjdmOFwiOlwiIzM3M2QzZlwiO3JldHVybiB0LnRvb2x0aXAudGhlbWU9ZSx0LmNoYXJ0LmZvcmVDb2xvcj1zLHQudGhlbWUucGFsZXR0ZT1pLHR9fSx7a2V5OlwicHJlZGVmaW5lZFwiLHZhbHVlOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMudy5jb25maWcudGhlbWUucGFsZXR0ZSl7Y2FzZVwicGFsZXR0ZTFcIjp0aGlzLmNvbG9ycz1bXCIjMDA4RkZCXCIsXCIjMDBFMzk2XCIsXCIjRkVCMDE5XCIsXCIjRkY0NTYwXCIsXCIjNzc1REQwXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUyXCI6dGhpcy5jb2xvcnM9W1wiIzNmNTFiNVwiLFwiIzAzYTlmNFwiLFwiIzRjYWY1MFwiLFwiI2Y5Y2UxZFwiLFwiI0ZGOTgwMFwiXTticmVhaztjYXNlXCJwYWxldHRlM1wiOnRoaXMuY29sb3JzPVtcIiMzM2IyZGZcIixcIiM1NDZFN0FcIixcIiNkNDUyNmVcIixcIiMxM2Q4YWFcIixcIiNBNTk3OEJcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTRcIjp0aGlzLmNvbG9ycz1bXCIjNGVjZGM0XCIsXCIjYzdmNDY0XCIsXCIjODFENEZBXCIsXCIjZmQ2YTZhXCIsXCIjNTQ2RTdBXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU1XCI6dGhpcy5jb2xvcnM9W1wiIzJiOTA4ZlwiLFwiI2Y5YTNhNFwiLFwiIzkwZWU3ZVwiLFwiI2ZhNDQ0M1wiLFwiIzY5ZDJlN1wiXTticmVhaztjYXNlXCJwYWxldHRlNlwiOnRoaXMuY29sb3JzPVtcIiM0NDlERDFcIixcIiNGODY2MjRcIixcIiNFQTM1NDZcIixcIiM2NjJFOUJcIixcIiNDNUQ4NkRcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTdcIjp0aGlzLmNvbG9ycz1bXCIjRDcyNjNEXCIsXCIjMUI5OThCXCIsXCIjMkUyOTRFXCIsXCIjRjQ2MDM2XCIsXCIjRTJDMDQ0XCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU4XCI6dGhpcy5jb2xvcnM9W1wiIzY2MkU5QlwiLFwiI0Y4NjYyNFwiLFwiI0Y5QzgwRVwiLFwiI0VBMzU0NlwiLFwiIzQzQkNDRFwiXTticmVhaztjYXNlXCJwYWxldHRlOVwiOnRoaXMuY29sb3JzPVtcIiM1QzQ3NDJcIixcIiNBNTk3OEJcIixcIiM4RDVCNENcIixcIiM1QTJBMjdcIixcIiNDNEJCQUZcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTEwXCI6dGhpcy5jb2xvcnM9W1wiI0EzMDBENlwiLFwiIzdEMDJFQlwiLFwiIzU2NTNGRVwiLFwiIzI5ODNGRlwiLFwiIzAwQjFGMlwiXTticmVhaztkZWZhdWx0OnRoaXMuY29sb3JzPVtcIiMwMDhGRkJcIixcIiMwMEUzOTZcIixcIiNGRUIwMTlcIixcIiNGRjQ1NjBcIixcIiM3NzVERDBcIl19cmV0dXJuIHRoaXMuY29sb3JzfX1dKSx0fSgpLFV0aWxzJDE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4fXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImdldE5lYXJlc3RWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmhvdmVyQXJlYSxpPXQuZWxHcmlkLHM9dC5jbGllbnRYLGE9dC5jbGllbnRZLHI9dC5oYXNCYXJzLG49dGhpcy53LG89bi5nbG9iYWxzLmdyaWRXaWR0aCxsPW8vKG4uZ2xvYmFscy5kYXRhUG9pbnRzLTEpLGg9aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsociYmbi5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxyKSYmKGw9by9uLmdsb2JhbHMuZGF0YVBvaW50cyk7dmFyIGM9cy1oLmxlZnQsZD1hLWgudG9wO2M8MHx8ZDwwfHxjPm4uZ2xvYmFscy5ncmlkV2lkdGh8fGQ+bi5nbG9iYWxzLmdyaWRIZWlnaHQ/KGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXpvb21cIiksZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctcGFuXCIpKTpuLmdsb2JhbHMuem9vbUVuYWJsZWQ/KGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXBhblwiKSxlLmNsYXNzTGlzdC5hZGQoXCJob3ZlcmluZy16b29tXCIpKTpuLmdsb2JhbHMucGFuRW5hYmxlZCYmKGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXpvb21cIiksZS5jbGFzc0xpc3QuYWRkKFwiaG92ZXJpbmctcGFuXCIpKTt2YXIgdT1NYXRoLnJvdW5kKGMvbCk7ciYmKHU9TWF0aC5jZWlsKGMvbCksdS09MSk7Zm9yKHZhciBnLGY9bnVsbCxwPW51bGwseD1bXSxtPTA7bTxuLmdsb2JhbHMuc2VyaWVzWHZhbHVlcy5sZW5ndGg7bSsrKXgucHVzaChbbi5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbbV1bMF0tMWUtNl0uY29uY2F0KG4uZ2xvYmFscy5zZXJpZXNYdmFsdWVzW21dKSk7cmV0dXJuIHg9eC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0fSl9KSxnPW4uZ2xvYmFscy5zZXJpZXNZdmFsdWVzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHR9KX0pLG4uZ2xvYmFscy5pc1hOdW1lcmljJiYoZj0ocD10aGlzLmNsb3Nlc3RJbk11bHRpQXJyYXkoYyxkLHgsZykpLmluZGV4LHU9cC5qLG51bGwhPT1mJiYoeD1uLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tmXSx1PShwPXRoaXMuY2xvc2VzdEluQXJyYXkoYyx4KSkuaW5kZXgpKSwoIXV8fHU8MSkmJih1PTApLHtjYXB0dXJlZFNlcmllczpmLGo6dSxob3Zlclg6Yyxob3Zlclk6ZH19fSx7a2V5OlwiY2xvc2VzdEluTXVsdGlBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhPXRoaXMudyxyPTAsbj1udWxsLG89LTE7YS5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MT9yPXRoaXMuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkoaSk6bj0wO3ZhciBsPXNbcl1bMF0saD1pW3JdWzBdLGM9TWF0aC5hYnModC1oKSxkPU1hdGguYWJzKGUtbCksdT1kK2M7cmV0dXJuIHMubWFwKGZ1bmN0aW9uKGEscil7YS5tYXAoZnVuY3Rpb24oYSxsKXt2YXIgaD1NYXRoLmFicyhlLXNbcl1bbF0pLGc9TWF0aC5hYnModC1pW3JdW2xdKSxmPWcraDtmPHUmJih1PWYsYz1nLGQ9aCxuPXIsbz1sKX0pfSkse2luZGV4Om4sajpvfX19LHtrZXk6XCJnZXRGaXJzdEFjdGl2ZVhBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9bmV3IENvcmVVdGlscyh0aGlzLmN0eCkscz10Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD4wP2U6LTF9KSxhPTA7YTxzLmxlbmd0aDthKyspe3ZhciByPWkuZ2V0U2VyaWVzVG90YWxCeUluZGV4KGEpO2lmKC0xIT09c1thXSYmMCE9PXImJiFpLnNlcmllc0hhdmVTYW1lVmFsdWVzKGEpKXtlPXNbYV07YnJlYWt9fXJldHVybiBlfX0se2tleTpcImNsb3Nlc3RJbkFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9ZVswXSxzPW51bGwsYT1NYXRoLmFicyh0LWkpLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49TWF0aC5hYnModC1lW3JdKTtuPGEmJihhPW4saT1lW3JdLHM9cil9cmV0dXJue2luZGV4OnN9fX0se2tleTpcImlzWG92ZXJsYXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1bXSxpPXRoaXMudy5nbG9iYWxzLnNlcmllc1guZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10WzBdfSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIHM9MDtzPGkubGVuZ3RoLTE7cysrKXZvaWQgMCE9PWlbc11bdF0mJnZvaWQgMCE9PWlbcysxXVt0XSYmaVtzXVt0XSE9PWlbcysxXVt0XSYmZS5wdXNoKFwidW5FcXVhbFwiKTtyZXR1cm4gMD09PWUubGVuZ3RofX0se2tleTpcImlzaW5pdGlhbFNlcmllc1NhbWVMZW5cIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD0hMCxlPXRoaXMudy5nbG9iYWxzLmluaXRpYWxTZXJpZXMsaT0wO2k8ZS5sZW5ndGgtMTtpKyspaWYoZVtpXS5kYXRhLmxlbmd0aCE9PWVbaSsxXS5kYXRhLmxlbmd0aCl7dD0hMTticmVha31yZXR1cm4gdH19LHtrZXk6XCJnZXRCYXJzSGVpZ2h0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIF90b0NvbnN1bWFibGVBcnJheSh0KS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmdldEJCb3goKS5oZWlnaHR9LDApfX0se2tleTpcInRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4OzA9PT1pLmFsbFRvb2x0aXBTZXJpZXNHcm91cHMubGVuZ3RoJiYoaS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cFwiKSk7Zm9yKHZhciBzPWkuYWxsVG9vbHRpcFNlcmllc0dyb3VwcyxhPTA7YTxzLmxlbmd0aDthKyspXCJlbmFibGVcIj09PXQ/KHNbYV0uY2xhc3NMaXN0LmFkZChcImFjdGl2ZVwiKSxzW2FdLnN0eWxlLmRpc3BsYXk9ZS5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KTooc1thXS5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlXCIpLHNbYV0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIil9fV0pLHR9KCksTGFiZWxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuY3R4PWUuY3R4LHRoaXMudHRDdHg9ZSx0aGlzLnRvb2x0aXBVdGlsPW5ldyBVdGlscyQxKGUpfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImRyYXdTZXJpZXNUZXh0c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc2hhcmVkLGk9dm9pZCAwPT09ZXx8ZSxzPXQudHRJdGVtcyxhPXQuaSxyPXZvaWQgMD09PWE/MDphLG49dC5qLG89dm9pZCAwPT09bj9udWxsOm47dm9pZCAwIT09dGhpcy53LmNvbmZpZy50b29sdGlwLmN1c3RvbT90aGlzLmhhbmRsZUN1c3RvbVRvb2x0aXAoe2k6cixqOm99KTp0aGlzLnRvZ2dsZUFjdGl2ZUluYWN0aXZlU2VyaWVzKGkpO3ZhciBsPXRoaXMuZ2V0VmFsdWVzVG9QcmludCh7aTpyLGo6b30pO3RoaXMucHJpbnRMYWJlbHMoe2k6cixqOm8sdmFsdWVzOmwsdHRJdGVtczpzLHNoYXJlZDppfSk7dmFyIGg9dGhpcy50dEN0eC5nZXRFbFRvb2x0aXAoKTt0aGlzLnR0Q3R4LnRvb2x0aXBSZWN0LnR0V2lkdGg9aC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx0aGlzLnR0Q3R4LnRvb2x0aXBSZWN0LnR0SGVpZ2h0PWguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fX0se2tleTpcInByaW50TGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10Lmkscz10LmosYT10LnZhbHVlcyxyPXQudHRJdGVtcyxuPXQuc2hhcmVkLG89dGhpcy53LGw9YS54VmFsLGg9YS56VmFsLGM9YS54QXhpc1RUVmFsLGQ9XCJcIix1PW8uZ2xvYmFscy5jb2xvcnNbaV07bnVsbCE9PXMmJm8uY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmKHU9by5nbG9iYWxzLmNvbG9yc1tzXSk7Zm9yKHZhciBnPTAsZj1vLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xO2c8by5nbG9iYWxzLnNlcmllcy5sZW5ndGg7ZysrLGYtLSl7dmFyIHA9dGhpcy5nZXRGb3JtYXR0ZXJzKGkpO2lmKGQ9dGhpcy5nZXRTZXJpZXNOYW1lKHtmbjpwLnlMYlRpdGxlRm9ybWF0dGVyLGluZGV4Omksc2VyaWVzSW5kZXg6aSxqOnN9KSxuKXt2YXIgeD1vLmNvbmZpZy50b29sdGlwLmludmVyc2VPcmRlcj9mOmc7cD10aGlzLmdldEZvcm1hdHRlcnMoeCksZD10aGlzLmdldFNlcmllc05hbWUoe2ZuOnAueUxiVGl0bGVGb3JtYXR0ZXIsaW5kZXg6eCxzZXJpZXNJbmRleDppLGo6c30pLHU9by5nbG9iYWxzLmNvbG9yc1t4XSxlPXAueUxiRm9ybWF0dGVyKG8uZ2xvYmFscy5zZXJpZXNbeF1bc10se3NlcmllczpvLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OngsZGF0YVBvaW50SW5kZXg6cyx3Om99KSwodGhpcy50dEN0eC5oYXNCYXJzKCkmJm8uY29uZmlnLmNoYXJ0LnN0YWNrZWQmJjA9PT1vLmdsb2JhbHMuc2VyaWVzW3hdW3NdfHx2b2lkIDA9PT1vLmdsb2JhbHMuc2VyaWVzW3hdW3NdKSYmKGU9dm9pZCAwKX1lbHNlIGU9cC55TGJGb3JtYXR0ZXIoby5nbG9iYWxzLnNlcmllc1tpXVtzXSx7c2VyaWVzOm8uZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6aSxkYXRhUG9pbnRJbmRleDpzLHc6b30pO251bGw9PT1zJiYoZT1wLnlMYkZvcm1hdHRlcihvLmdsb2JhbHMuc2VyaWVzW2ldLG8pKSx0aGlzLkRPTUhhbmRsaW5nKHt0OmcsdHRJdGVtczpyLHZhbHVlczp7dmFsOmUseFZhbDpsLHhBeGlzVFRWYWw6Yyx6VmFsOmh9LHNlcmllc05hbWU6ZCxzaGFyZWQ6bixwQ29sb3I6dX0pfX19LHtrZXk6XCJnZXRGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLncscz1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1t0XTtyZXR1cm4gdm9pZCAwIT09aS5nbG9iYWxzLnR0VmFsP0FycmF5LmlzQXJyYXkoaS5nbG9iYWxzLnR0VmFsKT8ocz1pLmdsb2JhbHMudHRWYWxbdF0mJmkuZ2xvYmFscy50dFZhbFt0XS5mb3JtYXR0ZXIsZT1pLmdsb2JhbHMudHRWYWxbdF0mJmkuZ2xvYmFscy50dFZhbFt0XS50aXRsZSYmaS5nbG9iYWxzLnR0VmFsW3RdLnRpdGxlLmZvcm1hdHRlcik6KHM9aS5nbG9iYWxzLnR0VmFsLmZvcm1hdHRlcixcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmdsb2JhbHMudHRWYWwudGl0bGUuZm9ybWF0dGVyJiYoZT1pLmdsb2JhbHMudHRWYWwudGl0bGUuZm9ybWF0dGVyKSk6ZT1pLmNvbmZpZy50b29sdGlwLnkudGl0bGUuZm9ybWF0dGVyLFwiZnVuY3Rpb25cIiE9dHlwZW9mIHMmJihzPWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdP2kuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdOmZ1bmN0aW9uKHQpe3JldHVybiB0fSksXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmKGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSx7eUxiRm9ybWF0dGVyOnMseUxiVGl0bGVGb3JtYXR0ZXI6ZX19fSx7a2V5OlwiZ2V0U2VyaWVzTmFtZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZm4saT10LmluZGV4LHM9dC5zZXJpZXNJbmRleCxhPXQuaixyPXRoaXMudztyZXR1cm4gZShTdHJpbmcoci5nbG9iYWxzLnNlcmllc05hbWVzW2ldKSx7c2VyaWVzOnIuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDphLHc6cn0pfX0se2tleTpcIkRPTUhhbmRsaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50LGk9dC50dEl0ZW1zLHM9dC52YWx1ZXMsYT10LnNlcmllc05hbWUscj10LnNoYXJlZCxuPXQucENvbG9yLG89dGhpcy53LGw9dGhpcy50dEN0eCxoPXMudmFsLGM9cy54VmFsLGQ9cy54QXhpc1RUVmFsLHU9cy56VmFsLGc9bnVsbDtnPWlbZV0uY2hpbGRyZW4sby5jb25maWcudG9vbHRpcC5maWxsU2VyaWVzQ29sb3ImJihpW2VdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uLGdbMF0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIiksbC5zaG93VG9vbHRpcFRpdGxlJiYobnVsbD09PWwudG9vbHRpcFRpdGxlJiYobC50b29sdGlwVGl0bGU9by5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGVcIikpLGwudG9vbHRpcFRpdGxlLmlubmVySFRNTD1jKSxsLmJseGF4aXNUb29sdGlwJiYobC54YXhpc1Rvb2x0aXBUZXh0LmlubmVySFRNTD1cIlwiIT09ZD9kOmMpO3ZhciBmPWlbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1sYWJlbFwiKTtmJiYoZi5pbm5lckhUTUw9YT9hK1wiOiBcIjpcIlwiKTt2YXIgcD1pW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtdmFsdWVcIik7KHAmJihwLmlubmVySFRNTD1oKSxnWzBdJiZnWzBdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXJcIikmJihnWzBdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uKSxvLmNvbmZpZy50b29sdGlwLm1hcmtlci5zaG93fHwoZ1swXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKSxudWxsIT09dSkmJihpW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei1sYWJlbFwiKS5pbm5lckhUTUw9by5jb25maWcudG9vbHRpcC56LnRpdGxlLGlbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlXCIpLmlubmVySFRNTD11KTtyJiZnWzBdJiYobnVsbD09aHx8by5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT4tMT9nWzBdLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjpnWzBdLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT1vLmNvbmZpZy50b29sdGlwLml0ZW1zLmRpc3BsYXkpfX0se2tleTpcInRvZ2dsZUFjdGl2ZUluYWN0aXZlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2lmKHQpdGhpcy50b29sdGlwVXRpbC50b2dnbGVBbGxUb29sdGlwU2VyaWVzR3JvdXBzKFwiZW5hYmxlXCIpO2Vsc2V7dGhpcy50b29sdGlwVXRpbC50b2dnbGVBbGxUb29sdGlwU2VyaWVzR3JvdXBzKFwiZGlzYWJsZVwiKTt2YXIgaT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXBcIik7aSYmKGkuY2xhc3NMaXN0LmFkZChcImFjdGl2ZVwiKSxpLnN0eWxlLmRpc3BsYXk9ZS5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KX19fSx7a2V5OlwiZ2V0VmFsdWVzVG9QcmludFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixzPXRoaXMudyxhPXRoaXMuY3R4LnNlcmllcy5maWx0ZXJlZFNlcmllc1goKSxyPVwiXCIsbj1udWxsLG89bnVsbCxsPXtzZXJpZXM6cy5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmksdzpzfSxoPXMuZ2xvYmFscy50dFpGb3JtYXR0ZXI7bnVsbD09PWk/bz1zLmdsb2JhbHMuc2VyaWVzW2VdOnMuZ2xvYmFscy5pc1hOdW1lcmljPyhyPWFbZV1baV0sMD09PWFbZV0ubGVuZ3RoJiYocj1hW3RoaXMudG9vbHRpcFV0aWwuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkoYSldW2ldKSk6cj12b2lkIDAhPT1zLmdsb2JhbHMubGFiZWxzW2ldP3MuZ2xvYmFscy5sYWJlbHNbaV06XCJcIjt2YXIgYz1yO3MuZ2xvYmFscy5pc1hOdW1lcmljJiZcImRhdGV0aW1lXCI9PT1zLmNvbmZpZy54YXhpcy50eXBlP3I9bmV3IEZvcm1hdHRlcnModGhpcy5jdHgpLnhMYWJlbEZvcm1hdChzLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIsYyxjKTpzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwocj1zLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyKGMsbCkpO3JldHVybiB2b2lkIDAhPT1zLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyJiYocj1zLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIoYyxsKSkscy5nbG9iYWxzLnNlcmllc1oubGVuZ3RoPjAmJnMuZ2xvYmFscy5zZXJpZXNaWzBdLmxlbmd0aD4wJiYobj1oKHMuZ2xvYmFscy5zZXJpZXNaW2VdW2ldLHMpKSx7dmFsOm8seFZhbDpyLHhBeGlzVFRWYWw6XCJmdW5jdGlvblwiPT10eXBlb2Ygcy5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXI/cy5nbG9iYWxzLnhheGlzVG9vbHRpcEZvcm1hdHRlcihjLGwpOnIselZhbDpufX19LHtrZXk6XCJoYW5kbGVDdXN0b21Ub29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5qLHM9dGhpcy53O3RoaXMudHRDdHguZ2V0RWxUb29sdGlwKCkuaW5uZXJIVE1MPXMuY29uZmlnLnRvb2x0aXAuY3VzdG9tKHtjdHg6dGhpcy5jdHgsc2VyaWVzOnMuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHc6c30pfX1dKSx0fSgpLFBvc2l0aW9uPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHgsdGhpcy53PWUud31yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJtb3ZlWENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudHRDdHgscz10aGlzLncsYT1pLmdldEVsWENyb3NzaGFpcnMoKSxyPXQtaS54Y3Jvc3NoYWlyc1dpZHRoLzIsbj1zLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkubGVuZ3RoO2lmKG51bGwhPT1lJiYocj1zLmdsb2JhbHMuZ3JpZFdpZHRoL24qZSksXCJ0aWNrV2lkdGhcIj09PXMuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGh8fFwiYmFyV2lkdGhcIj09PXMuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGg/citpLnhjcm9zc2hhaXJzV2lkdGg+cy5nbG9iYWxzLmdyaWRXaWR0aCYmKHI9cy5nbG9iYWxzLmdyaWRXaWR0aC1pLnhjcm9zc2hhaXJzV2lkdGgpOm51bGwhPT1lJiYocis9cy5nbG9iYWxzLmdyaWRXaWR0aC9uLzIpLHI8MCYmKHI9MCkscj5zLmdsb2JhbHMuZ3JpZFdpZHRoJiYocj1zLmdsb2JhbHMuZ3JpZFdpZHRoKSxudWxsIT09YSYmKGEuc2V0QXR0cmlidXRlKFwieFwiLHIpLGEuc2V0QXR0cmlidXRlKFwieDFcIixyKSxhLnNldEF0dHJpYnV0ZShcIngyXCIsciksYS5zZXRBdHRyaWJ1dGUoXCJ5MlwiLHMuZ2xvYmFscy5ncmlkSGVpZ2h0KSxhLmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIikpLGkuYmx4YXhpc1Rvb2x0aXApe3ZhciBvPXI7XCJ0aWNrV2lkdGhcIiE9PXMuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgmJlwiYmFyV2lkdGhcIiE9PXMuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGh8fChvPXIraS54Y3Jvc3NoYWlyc1dpZHRoLzIpLHRoaXMubW92ZVhBeGlzVG9vbHRpcChvKX19fSx7a2V5OlwibW92ZVlDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50dEN0eDtudWxsIT09ZS55Y3Jvc3NoYWlycyYmKEdyYXBoaWNzLnNldEF0dHJzKGUueWNyb3NzaGFpcnMse3kxOnQseTI6dH0pLEdyYXBoaWNzLnNldEF0dHJzKGUueWNyb3NzaGFpcnNIaWRkZW4se3kxOnQseTI6dH0pKX19LHtrZXk6XCJtb3ZlWEF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDtpZihudWxsIT09aS54YXhpc1Rvb2x0aXApe2kueGF4aXNUb29sdGlwLmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIik7dmFyIHM9aS54YXhpc09mZlkrZS5jb25maWcueGF4aXMudG9vbHRpcC5vZmZzZXRZK2UuZ2xvYmFscy50cmFuc2xhdGVZKzErZS5jb25maWcueGF4aXMub2Zmc2V0WTtpZih0LT1pLnhheGlzVG9vbHRpcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aC8yLCFpc05hTih0KSl7dCs9ZS5nbG9iYWxzLnRyYW5zbGF0ZVg7dmFyIGE7YT1uZXcgR3JhcGhpY3ModGhpcy5jdHgpLmdldFRleHRSZWN0cyhpLnhheGlzVG9vbHRpcFRleHQuaW5uZXJIVE1MKSxpLnhheGlzVG9vbHRpcFRleHQuc3R5bGUubWluV2lkdGg9YS53aWR0aCtcInB4XCIsaS54YXhpc1Rvb2x0aXAuc3R5bGUubGVmdD10K1wicHhcIixpLnhheGlzVG9vbHRpcC5zdHlsZS50b3A9cytcInB4XCJ9fX19LHtrZXk6XCJtb3ZlWUF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDtudWxsPT09aS55YXhpc1RURWxzJiYoaS55YXhpc1RURWxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXBcIikpO3ZhciBzPXBhcnNlSW50KGkueWNyb3NzaGFpcnNIaWRkZW4uZ2V0QXR0cmlidXRlKFwieTFcIikpLGE9ZS5nbG9iYWxzLnRyYW5zbGF0ZVkrcyxyPWkueWF4aXNUVEVsc1t0XS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsbj1lLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdLTI7ZS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJihuLT0yNiksYS09ci8yLC0xPT09ZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKHQpPyhpLnlheGlzVFRFbHNbdF0uY2xhc3NMaXN0LmFkZChcImFjdGl2ZVwiKSxpLnlheGlzVFRFbHNbdF0uc3R5bGUudG9wPWErXCJweFwiLGkueWF4aXNUVEVsc1t0XS5zdHlsZS5sZWZ0PW4rZS5jb25maWcueWF4aXNbdF0udG9vbHRpcC5vZmZzZXRYK1wicHhcIik6aS55YXhpc1RURWxzW3RdLmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIil9fSx7a2V5OlwibW92ZVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLHM9dGhpcy53LGE9dGhpcy50dEN0eCxyPWEuZ2V0RWxUb29sdGlwKCksbj1hLnRvb2x0aXBSZWN0LG89bnVsbCE9PWk/cGFyc2VJbnQoaSk6MSxsPXBhcnNlSW50KHQpK28rNSxoPXBhcnNlSW50KGUpK28vMjtpZihsPnMuZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGw9bC1uLnR0V2lkdGgtby0xNSksbD5zLmdsb2JhbHMuZ3JpZFdpZHRoLW4udHRXaWR0aC0xMCYmKGw9cy5nbG9iYWxzLmdyaWRXaWR0aC1uLnR0V2lkdGgpLGw8LTIwJiYobD0tMjApLHMuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgYz1hLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2g9YS5lLmNsaWVudFkrcy5nbG9iYWxzLnRyYW5zbGF0ZVktYy50b3Atbi50dEhlaWdodC8yfXZhciBkPXRoaXMucG9zaXRpb25DaGVja3MobixsLGgpO2w9ZC54LGg9ZC55LGlzTmFOKGwpfHwobCs9cy5nbG9iYWxzLnRyYW5zbGF0ZVgsci5zdHlsZS5sZWZ0PWwrXCJweFwiLHIuc3R5bGUudG9wPWgrXCJweFwiKX19LHtrZXk6XCJwb3NpdGlvbkNoZWNrc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLnc7cmV0dXJuIHQudHRIZWlnaHQraT5zLmdsb2JhbHMuZ3JpZEhlaWdodCYmKGk9cy5nbG9iYWxzLmdyaWRIZWlnaHQtdC50dEhlaWdodCtzLmdsb2JhbHMudHJhbnNsYXRlWSksaTwwJiYoaT0wKSx7eDplLHk6aX19fSx7a2V5OlwibW92ZU1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPXRoaXMudHRDdHg7aWYoaS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVt0XT4wKWZvcih2YXIgYT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMtbWFya2VyXCIpKSxyPTA7cjxhLmxlbmd0aDtyKyspcGFyc2VJbnQoYVtyXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIikpPT09ZSYmKHMubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLHMubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQoZSxhW3JdKSk7ZWxzZSBzLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSx0aGlzLm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyKGUsdCl9fSx7a2V5OlwibW92ZUR5bmFtaWNQb2ludE9uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLHMsYT10aGlzLncscj10aGlzLnR0Q3R4LG49YS5nbG9iYWxzLnBvaW50c0FycmF5LG89YS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplO2lmKHZvaWQgMD09PW8mJihvPWEuZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0rYS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSwhYS5jb25maWcuc2VyaWVzW2VdLnR5cGV8fFwiY29sdW1uXCIhPT1hLmNvbmZpZy5zZXJpZXNbZV0udHlwZSl7aT1uW2VdW3RdWzBdLHM9bltlXVt0XVsxXT9uW2VdW3RdWzFdOjA7dmFyIGw9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ10gLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgY2lyY2xlXCIpKTtsJiYobC5zZXRBdHRyaWJ1dGUoXCJyXCIsbyksbC5zZXRBdHRyaWJ1dGUoXCJjeFwiLGkpLGwuc2V0QXR0cmlidXRlKFwiY3lcIixzKSksdGhpcy5tb3ZlWENyb3NzaGFpcnMoaSksci5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAoaSxzLG8pfX19LHtrZXk6XCJtb3ZlRHluYW1pY1BvaW50c09uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMudHRDdHgscz1pLncsYT0wLHI9MCxuPXMuZ2xvYmFscy5wb2ludHNBcnJheTtlPW5ldyBTZXJpZXModGhpcy5jdHgpLmdldEFjdGl2ZVNlcmllc0luZGV4KCk7dmFyIG89cy5jb25maWcubWFya2Vycy5ob3Zlci5zaXplO3ZvaWQgMD09PW8mJihvPXMuZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0rcy5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxuW2VdJiYoYT1uW2VdW3RdWzBdLHI9bltlXVt0XVsxXSk7dmFyIGw9bnVsbCxoPWkuZ2V0QWxsTWFya2VycygpO2lmKG51bGwhPT0obD1udWxsIT09aD9oOnMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyBjaXJjbGVcIikpKWZvcih2YXIgYz0wO2M8bC5sZW5ndGg7YysrKXt2YXIgZD1uW2NdO2lmKGQmJmQubGVuZ3RoKXt2YXIgdT1uW2NdW3RdWzFdO2xbY10uc2V0QXR0cmlidXRlKFwiY3hcIixhKTt2YXIgZz1wYXJzZUludChsW2NdLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKTtudWxsIT09dT8obFtnXSYmbFtnXS5zZXRBdHRyaWJ1dGUoXCJyXCIsbyksbFtnXSYmbFtnXS5zZXRBdHRyaWJ1dGUoXCJjeVwiLHUpKTpsW2ddJiZsW2ddLnNldEF0dHJpYnV0ZShcInJcIiwwKX19aWYodGhpcy5tb3ZlWENyb3NzaGFpcnMoYSksIWkuZml4ZWRUb29sdGlwKXt2YXIgZj1yfHxzLmdsb2JhbHMuZ3JpZEhlaWdodDt0aGlzLm1vdmVUb29sdGlwKGEsZixvKX19fSx7a2V5OlwibW92ZVN0aWNreVRvb2x0aXBPdmVyQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LHM9dGhpcy50dEN0eCxhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9JzEnXSBwYXRoW2o9J1wiLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPScxJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSwgLmFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9JzEnXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddXCIpKSxyPWE/cGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZShcImN4XCIpKTowLG49YT9wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpOjA7aS5nbG9iYWxzLmlzWE51bWVyaWM/ci09bi8yOihyPXMueEF4aXNUaWNrc1Bvc2l0aW9uc1t0LTFdK3MuZGF0YVBvaW50c0RpdmlkZWRXaWR0aC8yLGlzTmFOKHIpJiYocj1zLnhBeGlzVGlja3NQb3NpdGlvbnNbdF0tcy5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoLzIpKTt2YXIgbz1zLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKGU9cy5lLmNsaWVudFktby50b3Atcy50b29sdGlwUmVjdC50dEhlaWdodC8yLHRoaXMubW92ZVhDcm9zc2hhaXJzKHIpLCFzLmZpeGVkVG9vbHRpcCl7dmFyIGw9ZXx8aS5nbG9iYWxzLmdyaWRIZWlnaHQ7dGhpcy5tb3ZlVG9vbHRpcChyLGwpfX19XSksdH0oKSxNYXJrZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4LHRoaXMudG9vbHRpcFBvc2l0aW9uPW5ldyBQb3NpdGlvbihlKX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJkcmF3RHluYW1pY1BvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPW5ldyBHcmFwaGljcyh0aGlzLmN0eCksaT1uZXcgTWFya2Vycyh0aGlzLmN0eCkscz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzXCIpLGE9MDthPHMubGVuZ3RoO2ErKyl7dmFyIHI9cGFyc2VJbnQoc1thXS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSksbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHIsXCInXSAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpKTtpZihudWxsIT09bil7dmFyIG89dm9pZCAwLGw9XCJhcGV4Y2hhcnRzLW1hcmtlciB3XCIuY29uY2F0KChNYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCkpO1wibGluZVwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmXCJhcmVhXCIhPT10LmNvbmZpZy5jaGFydC50eXBlfHx0Lmdsb2JhbHMuY29tYm9DaGFydHN8fHQuY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0fHwobCs9XCIgbm8tcG9pbnRlci1ldmVudHNcIik7dmFyIGg9aS5nZXRNYXJrZXJDb25maWcobCxyKTsobz1lLmRyYXdNYXJrZXIoMCwwLGgpKS5ub2RlLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIiwwKTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5nbG9iYWxzLlNWR05TLFwiZ1wiKTtjLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCIpLGMuYXBwZW5kQ2hpbGQoby5ub2RlKSxuLmFwcGVuZENoaWxkKGMpfX19fSx7a2V5OlwiZW5sYXJnZUN1cnJlbnRQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwscz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbCxhPXRoaXMudztcImJ1YmJsZVwiIT09YS5jb25maWcuY2hhcnQudHlwZSYmdGhpcy5uZXdQb2ludFNpemUodCxlKTt2YXIgcj1lLmdldEF0dHJpYnV0ZShcImN4XCIpLG49ZS5nZXRBdHRyaWJ1dGUoXCJjeVwiKTtpZihudWxsIT09aSYmbnVsbCE9PXMmJihyPWksbj1zKSx0aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMociksIXRoaXMuZml4ZWRUb29sdGlwKXtpZihcInJhZGFyXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlKXt2YXIgbz10aGlzLnR0Q3R4LmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3I9dGhpcy50dEN0eC5lLmNsaWVudFgtby5sZWZ0fXRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVUb29sdGlwKHIsbixhLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUpfX19LHtrZXk6XCJlbmxhcmdlUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPXRoaXMudHRDdHgscz10LGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllczpub3QoLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCkgLmFwZXhjaGFydHMtbWFya2VyXCIpLHI9ZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplLG49MDtuPGEubGVuZ3RoO24rKyl7dmFyIG89YVtuXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksbD1hW25dLmdldEF0dHJpYnV0ZShcImluZGV4XCIpO2lmKHZvaWQgMD09PXImJihyPWUuZ2xvYmFscy5tYXJrZXJzLnNpemVbbF0rZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxzPT09cGFyc2VJbnQobykpe3RoaXMubmV3UG9pbnRTaXplKHMsYVtuXSk7dmFyIGg9YVtuXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSxjPWFbbl0uZ2V0QXR0cmlidXRlKFwiY3lcIik7dGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGgpLGkuZml4ZWRUb29sdGlwfHx0aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlVG9vbHRpcChoLGMscil9ZWxzZSB0aGlzLm9sZFBvaW50U2l6ZShhW25dKX19fSx7a2V5OlwibmV3UG9pbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1pLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUsYT1udWxsO2E9MD09PXQ/ZS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQ6ZS5wYXJlbnROb2RlLmxhc3RDaGlsZDt2YXIgcj1wYXJzZUludChhLmdldEF0dHJpYnV0ZShcImluZGV4XCIpKTt2b2lkIDA9PT1zJiYocz1pLmdsb2JhbHMubWFya2Vycy5zaXplW3JdK2kuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksYS5zZXRBdHRyaWJ1dGUoXCJyXCIscyl9fSx7a2V5Olwib2xkUG9pbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VJbnQodC5nZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIpKTt0LnNldEF0dHJpYnV0ZShcInJcIixlKX19LHtrZXk6XCJyZXNldFBvaW50c1NpemVcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXM6bm90KC5hcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWQpIC5hcGV4Y2hhcnRzLW1hcmtlclwiKSxlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBpPXBhcnNlSW50KHRbZV0uZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSk7VXRpbHMuaXNOdW1iZXIoaSk/dFtlXS5zZXRBdHRyaWJ1dGUoXCJyXCIsaSk6dFtlXS5zZXRBdHRyaWJ1dGUoXCJyXCIsMCl9fX1dKSx0fSgpLEludGVyc2VjdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWV9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwiZ2V0QXR0clwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQodC50YXJnZXQuZ2V0QXR0cmlidXRlKGUpKX19LHtrZXk6XCJoYW5kbGVIZWF0VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZSxpPXQub3B0LHM9dC54LGE9dC55LHI9dGhpcy50dEN0eCxuPXRoaXMudztpZihlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWhlYXRtYXAtcmVjdFwiKSl7dmFyIG89dGhpcy5nZXRBdHRyKGUsXCJpXCIpLGw9dGhpcy5nZXRBdHRyKGUsXCJqXCIpLGg9dGhpcy5nZXRBdHRyKGUsXCJjeFwiKSxjPXRoaXMuZ2V0QXR0cihlLFwiY3lcIiksZD10aGlzLmdldEF0dHIoZSxcIndpZHRoXCIpLHU9dGhpcy5nZXRBdHRyKGUsXCJoZWlnaHRcIik7aWYoci50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpvLGo6bCxzaGFyZWQ6ITF9KSxzPWgrci50b29sdGlwUmVjdC50dFdpZHRoLzIrZCxhPWMrci50b29sdGlwUmVjdC50dEhlaWdodC8yLXUvMixyLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoaCtkLzIpLHM+bi5nbG9iYWxzLmdyaWRXaWR0aC8yJiYocz1oLXIudG9vbHRpcFJlY3QudHRXaWR0aC8yK2QpLHIudy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciBnPXIuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YT1yLmUuY2xpZW50WS1nLnRvcCtuLmdsb2JhbHMudHJhbnNsYXRlWS8yLTEwfX1yZXR1cm57eDpzLHk6YX19fSx7a2V5OlwiaGFuZGxlTWFya2VyVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGkscz10LmUsYT10Lm9wdCxyPXQueCxuPXQueSxvPXRoaXMudyxsPXRoaXMudHRDdHg7aWYocy50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tYXJrZXJcIikpe3ZhciBoPXBhcnNlSW50KGEucGF0aHMuZ2V0QXR0cmlidXRlKFwiY3hcIikpLGM9cGFyc2VJbnQoYS5wYXRocy5nZXRBdHRyaWJ1dGUoXCJjeVwiKSksZD1wYXJzZUZsb2F0KGEucGF0aHMuZ2V0QXR0cmlidXRlKFwidmFsXCIpKTtpZihpPXBhcnNlSW50KGEucGF0aHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpKSxlPXBhcnNlSW50KGEucGF0aHMucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpKS0xLGwuaW50ZXJzZWN0KXt2YXIgdT1VdGlscy5maW5kQW5jZXN0b3IoYS5wYXRocyxcImFwZXhjaGFydHMtc2VyaWVzXCIpO3UmJihlPXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpKX1pZihsLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmEudHRJdGVtcyxpOmUsajppLHNoYXJlZDohbC5zaG93T25JbnRlcnNlY3QmJm8uY29uZmlnLnRvb2x0aXAuc2hhcmVkfSksXCJtb3VzZXVwXCI9PT1zLnR5cGUmJmwubWFya2VyQ2xpY2socyxlLGkpLHI9aCxuPWMrby5nbG9iYWxzLnRyYW5zbGF0ZVktMS40KmwudG9vbHRpcFJlY3QudHRIZWlnaHQsbC53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIGc9bC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtuPWwuZS5jbGllbnRZK28uZ2xvYmFscy50cmFuc2xhdGVZLWcudG9wfWQ8MCYmKG49YyksbC5tYXJrZXIuZW5sYXJnZUN1cnJlbnRQb2ludChpLGEucGF0aHMscixuKX1yZXR1cm57eDpyLHk6bn19fSx7a2V5OlwiaGFuZGxlQmFyVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGkscz10LmUsYT10Lm9wdCxyPXRoaXMudyxuPXRoaXMudHRDdHgsbz1uLmdldEVsVG9vbHRpcCgpLGw9MCxoPTAsYz0wLGQ9dGhpcy5nZXRCYXJUb29sdGlwWFkoe2U6cyxvcHQ6YX0pO2U9ZC5pO3ZhciB1PWQuYmFySGVpZ2h0LGc9ZC5qO2lmKHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm4uaGFzQmFycygpfHwhci5jb25maWcudG9vbHRpcC5zaGFyZWQ/KGg9ZC54LGM9ZC55LGk9QXJyYXkuaXNBcnJheShyLmNvbmZpZy5zdHJva2Uud2lkdGgpP3IuY29uZmlnLnN0cm9rZS53aWR0aFtlXTpyLmNvbmZpZy5zdHJva2Uud2lkdGgsbD1oKTpyLmdsb2JhbHMuY29tYm9DaGFydHN8fHIuY29uZmlnLnRvb2x0aXAuc2hhcmVkfHwobC89MiksaXNOYU4oYykmJihjPXIuZ2xvYmFscy5zdmdIZWlnaHQtbi50b29sdGlwUmVjdC50dEhlaWdodCksaCtuLnRvb2x0aXBSZWN0LnR0V2lkdGg+ci5nbG9iYWxzLmdyaWRXaWR0aD9oLT1uLnRvb2x0aXBSZWN0LnR0V2lkdGg6aDwwJiYoaCs9bi50b29sdGlwUmVjdC50dFdpZHRoKSxuLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgZj1uLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2M9bi5lLmNsaWVudFktZi50b3B9aWYobnVsbD09PW4udG9vbHRpcCYmKG4udG9vbHRpcD1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcFwiKSksci5jb25maWcudG9vbHRpcC5zaGFyZWR8fChyLmdsb2JhbHMuY29tYm9DaGFydHNIYXNCYXJzP24udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhsK2kvMik6bi50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGwpKSwhbi5maXhlZFRvb2x0aXAmJighci5jb25maWcudG9vbHRpcC5zaGFyZWR8fHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm4uaGFzQmFycygpKSl7eCYmKGg9ci5nbG9iYWxzLmdyaWRXaWR0aC1oKSxvLnN0eWxlLmxlZnQ9aCtyLmdsb2JhbHMudHJhbnNsYXRlWCtcInB4XCI7dmFyIHA9cGFyc2VJbnQoYS5wYXRocy5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKSx4PXIuZ2xvYmFscy5pc011bHRpcGxlWUF4aXM/ci5jb25maWcueWF4aXNbcF0mJnIuY29uZmlnLnlheGlzW3BdLnJldmVyc2VkOnIuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkOyF4fHxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZuLmhhc0JhcnMoKXx8KGM9Yyt1LTIqKHIuZ2xvYmFscy5zZXJpZXNbZV1bZ108MD91OjApKSxuLnRvb2x0aXBSZWN0LnR0SGVpZ2h0K2M+ci5nbG9iYWxzLmdyaWRIZWlnaHQ/KGM9ci5nbG9iYWxzLmdyaWRIZWlnaHQtbi50b29sdGlwUmVjdC50dEhlaWdodCtyLmdsb2JhbHMudHJhbnNsYXRlWSxvLnN0eWxlLnRvcD1jK1wicHhcIik6by5zdHlsZS50b3A9YytyLmdsb2JhbHMudHJhbnNsYXRlWS1uLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzIrXCJweFwifX19LHtrZXk6XCJnZXRCYXJUb29sdGlwWFlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmUsaT10Lm9wdCxzPXRoaXMudyxhPW51bGwscj10aGlzLnR0Q3R4LG49MCxvPTAsbD0wLGg9MCxjPTAsZD1lLnRhcmdldC5jbGFzc0xpc3Q7aWYoZC5jb250YWlucyhcImFwZXhjaGFydHMtYmFyLWFyZWFcIil8fGQuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWFcIil8fGQuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXJhbmdlYmFyLWFyZWFcIikpe3ZhciB1PWUudGFyZ2V0LGc9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmPWkuZWxHcmlkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHA9Zy5oZWlnaHQ7Yz1nLmhlaWdodDt2YXIgeD1nLndpZHRoLG09cGFyc2VJbnQodS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSksYj1wYXJzZUludCh1LmdldEF0dHJpYnV0ZShcImN5XCIpKTtoPXBhcnNlRmxvYXQodS5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7dmFyIHY9XCJ0b3VjaG1vdmVcIj09PWUudHlwZT9lLnRvdWNoZXNbMF0uY2xpZW50WDplLmNsaWVudFg7YT1wYXJzZUludCh1LmdldEF0dHJpYnV0ZShcImpcIikpLG49cGFyc2VJbnQodS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSktMSxzLmdsb2JhbHMuY29tYm9DaGFydHMmJihuPXBhcnNlSW50KHUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSkpLHIudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6bixqOmEsc2hhcmVkOiFyLnNob3dPbkludGVyc2VjdCYmcy5jb25maWcudG9vbHRpcC5zaGFyZWR9KSxzLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcj9zLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPyhvPXYtZi5sZWZ0KzE1LGw9Yi1yLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0K3AvMi1yLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzIpOihvPXMuZ2xvYmFscy5pc1hOdW1lcmljP20teC8yOm0tci5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoK3gvMixsPWUuY2xpZW50WS1mLnRvcC1yLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzItMTUpOnMuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KChvPW0pPHIueHlSYXRpb3MuYmFzZUxpbmVJbnZlcnRlZFkmJihvPW0tci50b29sdGlwUmVjdC50dFdpZHRoKSxsPWItci5kYXRhUG9pbnRzRGl2aWRlZEhlaWdodCtwLzItci50b29sdGlwUmVjdC50dEhlaWdodC8yKToobz1zLmdsb2JhbHMuaXNYTnVtZXJpYz9tLXgvMjptLXIuZGF0YVBvaW50c0RpdmlkZWRXaWR0aCt4LzIsbD1iKX1yZXR1cm57eDpvLHk6bCxiYXJIZWlnaHQ6YyxiYXJXaWR0aDpoLGk6bixqOmF9fX1dKSx0fSgpLEF4ZXNUb29sdGlwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJkcmF3WGF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4LGk9XCJib3R0b21cIj09PXQuY29uZmlnLnhheGlzLnBvc2l0aW9uO2UueGF4aXNPZmZZPWk/dC5nbG9iYWxzLmdyaWRIZWlnaHQrMToxO3ZhciBzPWk/XCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b21cIjpcImFwZXhjaGFydHMteGF4aXN0b29sdGlwIGFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcFwiLGE9dC5nbG9iYWxzLmRvbS5lbFdyYXA7ZS5ibHhheGlzVG9vbHRpcCYmKG51bGw9PT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXN0b29sdGlwXCIpJiYoZS54YXhpc1Rvb2x0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnhheGlzVG9vbHRpcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLHMrXCIgXCIrdC5jb25maWcudG9vbHRpcC50aGVtZSksYS5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcCksZS54YXhpc1Rvb2x0aXBUZXh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS54YXhpc1Rvb2x0aXBUZXh0LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10ZXh0XCIpLGUueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5mb250RmFtaWx5PXQuY29uZmlnLnhheGlzLnRvb2x0aXAuc3R5bGUuZm9udEZhbWlseXx8dC5jb25maWcuY2hhcnQuZm9udEZhbWlseSxlLnhheGlzVG9vbHRpcFRleHQuc3R5bGUuZm9udFNpemU9dC5jb25maWcueGF4aXMudG9vbHRpcC5zdHlsZS5mb250U2l6ZSxlLnhheGlzVG9vbHRpcC5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcFRleHQpKSl9fSx7a2V5OlwiZHJhd1lheGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1mdW5jdGlvbihpKXt2YXIgcz10LmNvbmZpZy55YXhpc1tpXS5vcHBvc2l0ZXx8dC5jb25maWcueWF4aXNbaV0uY3Jvc3NoYWlycy5vcHBvc2l0ZTtlLnlheGlzT2ZmWD1zP3QuZ2xvYmFscy5ncmlkV2lkdGgrMToxO3ZhciBhPVwiYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtXCIuY29uY2F0KGkscz9cIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodFwiOlwiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnRcIik7dC5nbG9iYWxzLnlBeGlzU2FtZVNjYWxlSW5kaWNlcy5tYXAoZnVuY3Rpb24oZSxzKXtlLm1hcChmdW5jdGlvbihlLHMpe3M9PT1pJiYoYSs9dC5jb25maWcueWF4aXNbc10uc2hvdz9cIiBcIjpcIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW5cIil9KX0pO3ZhciByPXQuZ2xvYmFscy5kb20uZWxXcmFwO2UuYmx5YXhpc1Rvb2x0aXAmJihudWxsPT09dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1cIi5jb25jYXQoaSkpJiYoZS55YXhpc1Rvb2x0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnlheGlzVG9vbHRpcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLGErXCIgXCIrdC5jb25maWcudG9vbHRpcC50aGVtZSksci5hcHBlbmRDaGlsZChlLnlheGlzVG9vbHRpcCksMD09PWkmJihlLnlheGlzVG9vbHRpcFRleHQ9W10pLGUueWF4aXNUb29sdGlwVGV4dC5wdXNoKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLGUueWF4aXNUb29sdGlwVGV4dFtpXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtdGV4dFwiKSxlLnlheGlzVG9vbHRpcC5hcHBlbmRDaGlsZChlLnlheGlzVG9vbHRpcFRleHRbaV0pKSl9LHM9MDtzPHQuY29uZmlnLnlheGlzLmxlbmd0aDtzKyspaShzKX19LHtrZXk6XCJzZXRYQ3Jvc3NoYWlyV2lkdGhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1lLmdldEVsWENyb3NzaGFpcnMoKTtpZihlLnhjcm9zc2hhaXJzV2lkdGg9cGFyc2VJbnQodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCksdC5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIik7aWYobnVsbCE9PXMmJlwiYmFyV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBhPXBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7ZS54Y3Jvc3NoYWlyc1dpZHRoPWF9ZWxzZSBpZihcInRpY2tXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIHI9dC5nbG9iYWxzLmxhYmVscy5sZW5ndGg7ZS54Y3Jvc3NoYWlyc1dpZHRoPXQuZ2xvYmFscy5ncmlkV2lkdGgvcn19ZWxzZSBpZihcInRpY2tXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIG49dC5nbG9iYWxzLmxhYmVscy5sZW5ndGg7ZS54Y3Jvc3NoYWlyc1dpZHRoPXQuZ2xvYmFscy5ncmlkV2lkdGgvbn1lbHNlIGlmKFwiYmFyV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBvPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKTtpZihudWxsIT09byl7dmFyIGw9cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTtlLnhjcm9zc2hhaXJzV2lkdGg9bH1lbHNlIGUueGNyb3NzaGFpcnNXaWR0aD0xfXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihlLnhjcm9zc2hhaXJzV2lkdGg9MCksbnVsbCE9PWkmJmUueGNyb3NzaGFpcnNXaWR0aD4wJiZpLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsZS54Y3Jvc3NoYWlyc1dpZHRoKX19LHtrZXk6XCJoYW5kbGVZQ3Jvc3NoYWlyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4O2UueWNyb3NzaGFpcnM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCIpLGUueWNyb3NzaGFpcnNIaWRkZW49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwiKX19LHtrZXk6XCJkcmF3WWF4aXNUb29sdGlwVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLnR0Q3R4LGE9dGhpcy53LHI9YS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF07aWYocy5ibHlheGlzVG9vbHRpcCl7dmFyIG49cy5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPShlLW4udG9wKSppLnlSYXRpb1t0XSxsPWEuZ2xvYmFscy5tYXhZQXJyW3RdLWEuZ2xvYmFscy5taW5ZQXJyW3RdLGg9YS5nbG9iYWxzLm1pbllBcnJbdF0rKGwtbyk7cy50b29sdGlwUG9zaXRpb24ubW92ZVlDcm9zc2hhaXJzKGUtbi50b3ApLHMueWF4aXNUb29sdGlwVGV4dFt0XS5pbm5lckhUTUw9cihoKSxzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUF4aXNUb29sdGlwKHQpfX19XSksdH0oKSxUb29sdGlwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMudENvbmZpZz1pLmNvbmZpZy50b29sdGlwLHRoaXMudG9vbHRpcFV0aWw9bmV3IFV0aWxzJDEodGhpcyksdGhpcy50b29sdGlwTGFiZWxzPW5ldyBMYWJlbHModGhpcyksdGhpcy50b29sdGlwUG9zaXRpb249bmV3IFBvc2l0aW9uKHRoaXMpLHRoaXMubWFya2VyPW5ldyBNYXJrZXIodGhpcyksdGhpcy5pbnRlcnNlY3Q9bmV3IEludGVyc2VjdCh0aGlzKSx0aGlzLmF4ZXNUb29sdGlwPW5ldyBBeGVzVG9vbHRpcCh0aGlzKSx0aGlzLnNob3dPbkludGVyc2VjdD10aGlzLnRDb25maWcuaW50ZXJzZWN0LHRoaXMuc2hvd1Rvb2x0aXBUaXRsZT10aGlzLnRDb25maWcueC5zaG93LHRoaXMuZml4ZWRUb29sdGlwPXRoaXMudENvbmZpZy5maXhlZC5lbmFibGVkLHRoaXMueGF4aXNUb29sdGlwPW51bGwsdGhpcy55YXhpc1RURWxzPW51bGwsdGhpcy5pc0JhclNoYXJlZD0haS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy50Q29uZmlnLnNoYXJlZH1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6XCJnZXRFbFRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdHx8KHQ9dGhpcyksdC53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcFwiKX19LHtrZXk6XCJnZXRFbFhDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGNyb3NzaGFpcnNcIil9fSx7a2V5OlwiZ2V0RWxHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZ3JpZFwiKX19LHtrZXk6XCJkcmF3VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLnh5UmF0aW9zPXQsdGhpcy5ibHhheGlzVG9vbHRpcD1lLmNvbmZpZy54YXhpcy50b29sdGlwLmVuYWJsZWQmJmUuZ2xvYmFscy5heGlzQ2hhcnRzLHRoaXMuYmx5YXhpc1Rvb2x0aXA9ZS5jb25maWcueWF4aXNbMF0udG9vbHRpcC5lbmFibGVkJiZlLmdsb2JhbHMuYXhpc0NoYXJ0cyx0aGlzLmFsbFRvb2x0aXBTZXJpZXNHcm91cHM9W10sZS5nbG9iYWxzLmF4aXNDaGFydHN8fCh0aGlzLnNob3dUb29sdGlwVGl0bGU9ITEpO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7aWYoaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwXCIpLGkuY2xhc3NMaXN0LmFkZCh0aGlzLnRDb25maWcudGhlbWUpLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGkpLGUuZ2xvYmFscy5heGlzQ2hhcnRzKXt0aGlzLmF4ZXNUb29sdGlwLmRyYXdYYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLmRyYXdZYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLnNldFhDcm9zc2hhaXJXaWR0aCgpLHRoaXMuYXhlc1Rvb2x0aXAuaGFuZGxlWUNyb3NzaGFpcigpO3ZhciBzPW5ldyBYQXhpcyh0aGlzLmN0eCk7dGhpcy54QXhpc1RpY2tzUG9zaXRpb25zPXMuZ2V0WEF4aXNUaWNrc1Bvc2l0aW9ucygpfWlmKChlLmdsb2JhbHMuY29tYm9DaGFydHMmJiF0aGlzLnRDb25maWcuc2hhcmVkfHx0aGlzLnRDb25maWcuaW50ZXJzZWN0JiYhdGhpcy50Q29uZmlnLnNoYXJlZHx8KFwiYmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKSYmIXRoaXMudENvbmZpZy5zaGFyZWQpJiYodGhpcy5zaG93T25JbnRlcnNlY3Q9ITApLDAhPT1lLmNvbmZpZy5tYXJrZXJzLnNpemUmJjAhPT1lLmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZXx8dGhpcy5tYXJrZXIuZHJhd0R5bmFtaWNQb2ludHModGhpcyksZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGghPT1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCl7dGhpcy5kYXRhUG9pbnRzRGl2aWRlZEhlaWdodD1lLmdsb2JhbHMuZ3JpZEhlaWdodC9lLmdsb2JhbHMuZGF0YVBvaW50cyx0aGlzLmRhdGFQb2ludHNEaXZpZGVkV2lkdGg9ZS5nbG9iYWxzLmdyaWRXaWR0aC9lLmdsb2JhbHMuZGF0YVBvaW50cyx0aGlzLnNob3dUb29sdGlwVGl0bGUmJih0aGlzLnRvb2x0aXBUaXRsZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMudG9vbHRpcFRpdGxlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGVcIiksdGhpcy50b29sdGlwVGl0bGUuc3R5bGUuZm9udEZhbWlseT10aGlzLnRDb25maWcuc3R5bGUuZm9udEZhbWlseXx8ZS5jb25maWcuY2hhcnQuZm9udEZhbWlseSx0aGlzLnRvb2x0aXBUaXRsZS5zdHlsZS5mb250U2l6ZT10aGlzLnRDb25maWcuc3R5bGUuZm9udFNpemUsaS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBUaXRsZSkpO3ZhciBhPWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyhlLmdsb2JhbHMueHlDaGFydHN8fGUuZ2xvYmFscy5jb21ib0NoYXJ0cykmJnRoaXMudENvbmZpZy5zaGFyZWQmJihhPXRoaXMuc2hvd09uSW50ZXJzZWN0PzE6ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLHRoaXMudHRJdGVtcz10aGlzLmNyZWF0ZVRURWxlbWVudHMoYSksdGhpcy5hZGRTVkdFdmVudHMoKX19fSx7a2V5OlwiY3JlYXRlVFRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT1bXSxzPXRoaXMuZ2V0RWxUb29sdGlwKCksYT0wO2E8dDthKyspe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7ci5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cFwiKSx0aGlzLnRDb25maWcuc2hhcmVkJiZ0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzJiZBcnJheS5pc0FycmF5KHRoaXMudENvbmZpZy5lbmFibGVkT25TZXJpZXMpJiZ0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YoYSk8MCYmci5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW5cIik7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7bi5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiKSxuLnN0eWxlLmJhY2tncm91bmRDb2xvcj1lLmdsb2JhbHMuY29sb3JzW2FdLHIuYXBwZW5kQ2hpbGQobik7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtvLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dFwiKSxvLnN0eWxlLmZvbnRGYW1pbHk9dGhpcy50Q29uZmlnLnN0eWxlLmZvbnRGYW1pbHl8fGUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksby5zdHlsZS5mb250U2l6ZT10aGlzLnRDb25maWcuc3R5bGUuZm9udFNpemU7dmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtsLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAteS1ncm91cFwiKTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtoLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1sYWJlbFwiKSxsLmFwcGVuZENoaWxkKGgpO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2MuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXZhbHVlXCIpLGwuYXBwZW5kQ2hpbGQoYyk7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtkLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtei1ncm91cFwiKTt2YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTt1LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LWxhYmVsXCIpLGQuYXBwZW5kQ2hpbGQodSk7dmFyIGc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7Zy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZVwiKSxkLmFwcGVuZENoaWxkKGcpLG8uYXBwZW5kQ2hpbGQobCksby5hcHBlbmRDaGlsZChkKSxyLmFwcGVuZENoaWxkKG8pLHMuYXBwZW5kQ2hpbGQociksaS5wdXNoKHIpfXJldHVybiBpfX0se2tleTpcImFkZFNWR0V2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcuY2hhcnQudHlwZSxpPXRoaXMuZ2V0RWxUb29sdGlwKCkscz0hKFwiYmFyXCIhPT1lJiZcImNhbmRsZXN0aWNrXCIhPT1lJiZcInJhbmdlQmFyXCIhPT1lKSxhPXQuZ2xvYmFscy5kb20uUGFwZXIubm9kZSxyPXRoaXMuZ2V0RWxHcmlkKCk7ciYmKHRoaXMuc2VyaWVzQm91bmQ9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7dmFyIG4sbz1bXSxsPVtdLGg9e2hvdmVyQXJlYTphLGVsR3JpZDpyLHRvb2x0aXBFbDppLHRvb2x0aXBZOm8sdG9vbHRpcFg6bCx0dEl0ZW1zOnRoaXMudHRJdGVtc307aWYodC5nbG9iYWxzLmF4aXNDaGFydHMmJihcImFyZWFcIj09PWV8fFwibGluZVwiPT09ZXx8XCJzY2F0dGVyXCI9PT1lfHxcImJ1YmJsZVwiPT09ZT9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6bG9uZ2VzdFNlcmllcz0ndHJ1ZSddIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTpzP249dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpOlwiaGVhdG1hcFwiPT09ZT9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtaGVhdG1hcFwiKTpcInJhZGFyXCI9PT1lJiYobj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLW1hcmtlclwiKSksbiYmbi5sZW5ndGgpKWZvcih2YXIgYz0wO2M8bi5sZW5ndGg7YysrKW8ucHVzaChuW2NdLmdldEF0dHJpYnV0ZShcImN5XCIpKSxsLnB1c2gobltjXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSk7aWYodC5nbG9iYWxzLnh5Q2hhcnRzJiYhdGhpcy5zaG93T25JbnRlcnNlY3R8fHQuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIXRoaXMuc2hvd09uSW50ZXJzZWN0fHxzJiZ0aGlzLmhhc0JhcnMoKSYmdGhpcy50Q29uZmlnLnNoYXJlZCl0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoW2FdLGgpO2Vsc2UgaWYocyYmIXQuZ2xvYmFscy5jb21ib0NoYXJ0cyl0aGlzLmFkZEJhcnNFdmVudExpc3RlbmVycyhoKTtlbHNlIGlmKFwiYnViYmxlXCI9PT1lfHxcInNjYXR0ZXJcIj09PWV8fFwicmFkYXJcIj09PWV8fHRoaXMuc2hvd09uSW50ZXJzZWN0JiYoXCJhcmVhXCI9PT1lfHxcImxpbmVcIj09PWUpKXRoaXMuYWRkUG9pbnRzRXZlbnRzTGlzdGVuZXJzKGgpO2Vsc2UgaWYoIXQuZ2xvYmFscy5heGlzQ2hhcnRzfHxcImhlYXRtYXBcIj09PWUpe3ZhciBkPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNcIik7dGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKGQsaCl9aWYodGhpcy5zaG93T25JbnRlcnNlY3Qpe3ZhciB1PXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1saW5lLXNlcmllcyAuYXBleGNoYXJ0cy1tYXJrZXJcIik7dS5sZW5ndGg+MCYmdGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKHUsaCk7dmFyIGc9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTtnLmxlbmd0aD4wJiZ0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoZyxoKSx0aGlzLmhhc0JhcnMoKSYmIXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMuYWRkQmFyc0V2ZW50TGlzdGVuZXJzKGgpfX19LHtrZXk6XCJkcmF3Rml4ZWRUb29sdGlwUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy5nZXRFbFRvb2x0aXAoKSxpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1pLndpZHRoKzEwLGE9aS5oZWlnaHQrMTAscj10aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WCxuPXRoaXMudENvbmZpZy5maXhlZC5vZmZzZXRZO3JldHVybiB0aGlzLnRDb25maWcuZml4ZWQucG9zaXRpb24udG9Mb3dlckNhc2UoKS5pbmRleE9mKFwicmlnaHRcIik+LTEmJihyPXIrdC5nbG9iYWxzLnN2Z1dpZHRoLXMrMTApLHRoaXMudENvbmZpZy5maXhlZC5wb3NpdGlvbi50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJib3R0b21cIik+LTEmJihuPW4rdC5nbG9iYWxzLnN2Z0hlaWdodC1hLTEwKSxlLnN0eWxlLmxlZnQ9citcInB4XCIsZS5zdHlsZS50b3A9bitcInB4XCIse3g6cix5Om4sdHRXaWR0aDpzLHR0SGVpZ2h0OmF9fX0se2tleTpcImFkZFBvaW50c0V2ZW50c0xpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTt0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoZSx0KX19LHtrZXk6XCJhZGRCYXJzRXZlbnRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYSwgLmFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKTt0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoZSx0KX19LHtrZXk6XCJhZGRQYXRoc0V2ZW50TGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcyxzPXRoaXMsYT1mdW5jdGlvbihhKXt2YXIgcj17cGF0aHM6dFthXSx0b29sdGlwRWw6ZS50b29sdGlwRWwsdG9vbHRpcFk6ZS50b29sdGlwWSx0b29sdGlwWDplLnRvb2x0aXBYLGVsR3JpZDplLmVsR3JpZCxob3ZlckFyZWE6ZS5ob3ZlckFyZWEsdHRJdGVtczplLnR0SXRlbXN9O2kudy5nbG9iYWxzLnRvb2x0aXBPcHRzPXI7W1wibW91c2Vtb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaG1vdmVcIixcIm1vdXNlb3V0XCIsXCJ0b3VjaGVuZFwiXS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbYV0uYWRkRXZlbnRMaXN0ZW5lcihlLHMuc2VyaWVzSG92ZXIuYmluZChzLHIpLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pfSxyPTA7cjx0Lmxlbmd0aDtyKyspYShyKX19LHtrZXk6XCJzZXJpZXNIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxzPVtdLGE9dGhpcy53O2EuY29uZmlnLmNoYXJ0Lmdyb3VwJiYocz10aGlzLmN0eC5nZXRHcm91cGVkQ2hhcnRzKCkpLGEuZ2xvYmFscy5heGlzQ2hhcnRzJiYoYS5nbG9iYWxzLm1pblg9PT0tMS8wJiZhLmdsb2JhbHMubWF4WD09PTEvMHx8MD09PWEuZ2xvYmFscy5kYXRhUG9pbnRzKXx8KHMubGVuZ3RoP3MuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgYT1pLmdldEVsVG9vbHRpcChzKSxyPXtwYXRoczp0LnBhdGhzLHRvb2x0aXBFbDphLHRvb2x0aXBZOnQudG9vbHRpcFksdG9vbHRpcFg6dC50b29sdGlwWCxlbEdyaWQ6dC5lbEdyaWQsaG92ZXJBcmVhOnQuaG92ZXJBcmVhLHR0SXRlbXM6cy53Lmdsb2JhbHMudG9vbHRpcC50dEl0ZW1zfTtzLncuZ2xvYmFscy5taW5YPT09aS53Lmdsb2JhbHMubWluWCYmcy53Lmdsb2JhbHMubWF4WD09PWkudy5nbG9iYWxzLm1heFgmJnMudy5nbG9iYWxzLnRvb2x0aXAuc2VyaWVzSG92ZXJCeUNvbnRleHQoe2NoYXJ0Q3R4OnMsdHRDdHg6cy53Lmdsb2JhbHMudG9vbHRpcCxvcHQ6cixlOmV9KX0pOnRoaXMuc2VyaWVzSG92ZXJCeUNvbnRleHQoe2NoYXJ0Q3R4OnRoaXMuY3R4LHR0Q3R4OnRoaXMudy5nbG9iYWxzLnRvb2x0aXAsb3B0OnQsZTplfSkpfX0se2tleTpcInNlcmllc0hvdmVyQnlDb250ZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jaGFydEN0eCxpPXQudHRDdHgscz10Lm9wdCxhPXQuZSxyPWUudyxuPXRoaXMuZ2V0RWxUb29sdGlwKCk7KGkudG9vbHRpcFJlY3Q9e3g6MCx5OjAsdHRXaWR0aDpuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHR0SGVpZ2h0Om4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fSxpLmU9YSwhaS5oYXNCYXJzKCl8fHIuZ2xvYmFscy5jb21ib0NoYXJ0c3x8aS5pc0JhclNoYXJlZCl8fHRoaXMudENvbmZpZy5vbkRhdGFzZXRIb3Zlci5oaWdobGlnaHREYXRhU2VyaWVzJiZuZXcgU2VyaWVzKGUpLnRvZ2dsZVNlcmllc09uSG92ZXIoYSxhLnRhcmdldC5wYXJlbnROb2RlKTtpLmZpeGVkVG9vbHRpcCYmaS5kcmF3Rml4ZWRUb29sdGlwUmVjdCgpLHIuZ2xvYmFscy5heGlzQ2hhcnRzP2kuYXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOmEsb3B0OnMsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pOmkubm9uQXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOmEsb3B0OnMsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pfX0se2tleTpcImF4aXNDaGFydHNUb29sdGlwc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGkscyxhPXQuZSxyPXQub3B0LG49dGhpcy53LG89bnVsbCxsPXIuZWxHcmlkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGg9XCJ0b3VjaG1vdmVcIj09PWEudHlwZT9hLnRvdWNoZXNbMF0uY2xpZW50WDphLmNsaWVudFgsYz1cInRvdWNobW92ZVwiPT09YS50eXBlP2EudG91Y2hlc1swXS5jbGllbnRZOmEuY2xpZW50WTtpZih0aGlzLmNsaWVudFk9Yyx0aGlzLmNsaWVudFg9aCxjPGwudG9wfHxjPmwudG9wK2wuaGVpZ2h0KXRoaXMuaGFuZGxlTW91c2VPdXQocik7ZWxzZXtpZihBcnJheS5pc0FycmF5KHRoaXMudENvbmZpZy5lbmFibGVkT25TZXJpZXMpJiYhbi5jb25maWcudG9vbHRpcC5zaGFyZWQpe3ZhciBkPXBhcnNlSW50KHIucGF0aHMuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIikpO2lmKHRoaXMudENvbmZpZy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihkKTwwKXJldHVybiB2b2lkIHRoaXMuaGFuZGxlTW91c2VPdXQocil9dmFyIHU9dGhpcy5nZXRFbFRvb2x0aXAoKSxnPXRoaXMuZ2V0RWxYQ3Jvc3NoYWlycygpLGY9bi5nbG9iYWxzLnh5Q2hhcnRzfHxcImJhclwiPT09bi5jb25maWcuY2hhcnQudHlwZSYmIW4uZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnRoaXMuaGFzQmFycygpJiZ0aGlzLnRDb25maWcuc2hhcmVkfHxuLmdsb2JhbHMuY29tYm9DaGFydHMmJnRoaXMuaGFzQmFycztpZihuLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLmhhc0JhcnMoKSYmKGY9ITEpLFwibW91c2Vtb3ZlXCI9PT1hLnR5cGV8fFwidG91Y2htb3ZlXCI9PT1hLnR5cGV8fFwibW91c2V1cFwiPT09YS50eXBlKXtpZihudWxsIT09ZyYmZy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlXCIpLG51bGwhPT10aGlzLnljcm9zc2hhaXJzJiZ0aGlzLmJseWF4aXNUb29sdGlwJiZ0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIiksZiYmIXRoaXMuc2hvd09uSW50ZXJzZWN0KXtlPShvPXRoaXMudG9vbHRpcFV0aWwuZ2V0TmVhcmVzdFZhbHVlcyh7Y29udGV4dDp0aGlzLGhvdmVyQXJlYTpyLmhvdmVyQXJlYSxlbEdyaWQ6ci5lbEdyaWQsY2xpZW50WDpoLGNsaWVudFk6YyxoYXNCYXJzOnRoaXMuaGFzQmFyc30pKS5qO3ZhciBwPW8uY2FwdHVyZWRTZXJpZXM7aWYoby5ob3Zlclg8MHx8by5ob3Zlclg+bi5nbG9iYWxzLmdyaWRXaWR0aClyZXR1cm4gdm9pZCB0aGlzLmhhbmRsZU1vdXNlT3V0KHIpO2lmKG51bGwhPT1wKXtpZihudWxsPT09bi5nbG9iYWxzLnNlcmllc1twXVtlXSlyZXR1cm4gdm9pZCByLnRvb2x0aXBFbC5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlXCIpO3ZvaWQgMCE9PW4uZ2xvYmFscy5zZXJpZXNbcF1bZV0/dGhpcy50Q29uZmlnLnNoYXJlZCYmdGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKGUpJiZ0aGlzLnRvb2x0aXBVdGlsLmlzaW5pdGlhbFNlcmllc1NhbWVMZW4oKT90aGlzLmNyZWF0ZShhLHRoaXMscCxlLHIudHRJdGVtcyk6dGhpcy5jcmVhdGUoYSx0aGlzLHAsZSxyLnR0SXRlbXMsITEpOnRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChlKSYmdGhpcy5jcmVhdGUoYSx0aGlzLDAsZSxyLnR0SXRlbXMpfWVsc2UgdGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKGUpJiZ0aGlzLmNyZWF0ZShhLHRoaXMsMCxlLHIudHRJdGVtcyl9ZWxzZSBpZihcImhlYXRtYXBcIj09PW4uY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciB4PXRoaXMuaW50ZXJzZWN0LmhhbmRsZUhlYXRUb29sdGlwKHtlOmEsb3B0OnIseDppLHk6c30pO2k9eC54LHM9eC55LHUuc3R5bGUubGVmdD1pK1wicHhcIix1LnN0eWxlLnRvcD1zK1wicHhcIn1lbHNlIHRoaXMuaGFzQmFycyYmdGhpcy5pbnRlcnNlY3QuaGFuZGxlQmFyVG9vbHRpcCh7ZTphLG9wdDpyfSksdGhpcy5oYXNNYXJrZXJzJiZ0aGlzLmludGVyc2VjdC5oYW5kbGVNYXJrZXJUb29sdGlwKHtlOmEsb3B0OnIseDppLHk6c30pO2lmKHRoaXMuYmx5YXhpc1Rvb2x0aXApZm9yKHZhciBtPTA7bTxuLmNvbmZpZy55YXhpcy5sZW5ndGg7bSsrKXRoaXMuYXhlc1Rvb2x0aXAuZHJhd1lheGlzVG9vbHRpcFRleHQobSxjLHRoaXMueHlSYXRpb3MpO3IudG9vbHRpcEVsLmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIil9ZWxzZVwibW91c2VvdXRcIiE9PWEudHlwZSYmXCJ0b3VjaGVuZFwiIT09YS50eXBlfHx0aGlzLmhhbmRsZU1vdXNlT3V0KHIpfX19LHtrZXk6XCJub25BeGlzQ2hhcnRzVG9vbHRpcHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmUsaT10Lm9wdCxzPXQudG9vbHRpcFJlY3QsYT10aGlzLncscj1pLnBhdGhzLmdldEF0dHJpYnV0ZShcInJlbFwiKSxuPXRoaXMuZ2V0RWxUb29sdGlwKCksbz1hLmdsb2JhbHMuZG9tLmVsV3JhcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihcIm1vdXNlbW92ZVwiPT09ZS50eXBlfHxcInRvdWNobW92ZVwiPT09ZS50eXBlKXtuLmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIiksdGhpcy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpwYXJzZUludChyKS0xLHNoYXJlZDohMX0pO3ZhciBsPWEuZ2xvYmFscy5jbGllbnRYLW8ubGVmdC1zLnR0V2lkdGgvMixoPWEuZ2xvYmFscy5jbGllbnRZLW8udG9wLXMudHRIZWlnaHQtMTA7bi5zdHlsZS5sZWZ0PWwrXCJweFwiLG4uc3R5bGUudG9wPWgrXCJweFwifWVsc2VcIm1vdXNlb3V0XCIhPT1lLnR5cGUmJlwidG91Y2hlbmRcIiE9PWUudHlwZXx8bi5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlXCIpfX0se2tleTpcImRlYWN0aXZhdGVIb3ZlckZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPW5ldyBHcmFwaGljcyh0aGlzLmN0eCksaT10Lmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLWJhci1hcmVhXCIpLHM9MDtzPGkubGVuZ3RoO3MrKyllLnBhdGhNb3VzZUxlYXZlKGlbc10pfX0se2tleTpcImhhbmRsZU1vdXNlT3V0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy5nZXRFbFhDcm9zc2hhaXJzKCk7aWYodC50b29sdGlwRWwuY2xhc3NMaXN0LnJlbW92ZShcImFjdGl2ZVwiKSx0aGlzLmRlYWN0aXZhdGVIb3ZlckZpbHRlcigpLFwiYnViYmxlXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSxudWxsIT09aSYmaS5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlXCIpLG51bGwhPT10aGlzLnljcm9zc2hhaXJzJiZ0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIiksdGhpcy5ibHhheGlzVG9vbHRpcCYmdGhpcy54YXhpc1Rvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZShcImFjdGl2ZVwiKSx0aGlzLmJseWF4aXNUb29sdGlwKXtudWxsPT09dGhpcy55YXhpc1RURWxzJiYodGhpcy55YXhpc1RURWxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXBcIikpO2Zvcih2YXIgcz0wO3M8dGhpcy55YXhpc1RURWxzLmxlbmd0aDtzKyspdGhpcy55YXhpc1RURWxzW3NdLmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIil9fX0se2tleTpcImdldEVsTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIiAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vyc1wiKX19LHtrZXk6XCJnZXRBbGxNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyXCIpfX0se2tleTpcImhhc01hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEVsTWFya2VycygpLmxlbmd0aD4wfX0se2tleTpcImdldEVsQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMsICAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1zZXJpZXMsIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllc1wiKX19LHtrZXk6XCJoYXNCYXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRFbEJhcnMoKS5sZW5ndGg+MH19LHtrZXk6XCJtYXJrZXJDbGlja1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLnc7XCJmdW5jdGlvblwiPT10eXBlb2Ygcy5jb25maWcuY2hhcnQuZXZlbnRzLm1hcmtlckNsaWNrJiZzLmNvbmZpZy5jaGFydC5ldmVudHMubWFya2VyQ2xpY2sodCx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHc6c30pLHRoaXMuY3R4LmZpcmVFdmVudChcIm1hcmtlckNsaWNrXCIsW3QsdGhpcy5jdHgse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OnN9XSl9fSx7a2V5OlwiY3JlYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06bnVsbCxuPXRoaXMudyxvPWU7XCJtb3VzZXVwXCI9PT10LnR5cGUmJnRoaXMubWFya2VyQ2xpY2sodCxpLHMpLG51bGw9PT1yJiYocj10aGlzLnRDb25maWcuc2hhcmVkKTt2YXIgbD10aGlzLmhhc01hcmtlcnMoKSxoPXRoaXMuZ2V0RWxCYXJzKCk7aWYocil7aWYoby50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczphLGk6aSxqOnMsc2hhcmVkOiF0aGlzLnNob3dPbkludGVyc2VjdCYmdGhpcy50Q29uZmlnLnNoYXJlZH0pLGwmJihuLmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZT4wP28ubWFya2VyLmVubGFyZ2VQb2ludHMocyk6by50b29sdGlwUG9zaXRpb24ubW92ZUR5bmFtaWNQb2ludHNPbkhvdmVyKHMpKSx0aGlzLmhhc0JhcnMoKSYmKHRoaXMuYmFyU2VyaWVzSGVpZ2h0PXRoaXMudG9vbHRpcFV0aWwuZ2V0QmFyc0hlaWdodChoKSx0aGlzLmJhclNlcmllc0hlaWdodD4wKSl7dmFyIGM9bmV3IEdyYXBoaWNzKHRoaXMuY3R4KSxkPW4uZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtYmFyLWFyZWFbaj0nXCIuY29uY2F0KHMsXCInXVwiKSk7dGhpcy5kZWFjdGl2YXRlSG92ZXJGaWx0ZXIoKSx0aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlU3RpY2t5VG9vbHRpcE92ZXJCYXJzKHMpO2Zvcih2YXIgdT0wO3U8ZC5sZW5ndGg7dSsrKWMucGF0aE1vdXNlRW50ZXIoZFt1XSl9fWVsc2Ugby50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7c2hhcmVkOiExLHR0SXRlbXM6YSxpOmksajpzfSksdGhpcy5oYXNCYXJzKCkmJm8udG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMocyksbCYmby50b29sdGlwUG9zaXRpb24ubW92ZU1hcmtlcnMoaSxzKX19XSksdH0oKSxpY29QYW49JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIGZpbGw9XCIjMDAwMDAwXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiPlxcbiAgICA8ZGVmcz5cXG4gICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgaWQ9XCJhXCIvPlxcbiAgICA8L2RlZnM+XFxuICAgIDxjbGlwUGF0aCBpZD1cImJcIj5cXG4gICAgICAgIDx1c2Ugb3ZlcmZsb3c9XCJ2aXNpYmxlXCIgeGxpbms6aHJlZj1cIiNhXCIvPlxcbiAgICA8L2NsaXBQYXRoPlxcbiAgICA8cGF0aCBjbGlwLXBhdGg9XCJ1cmwoI2IpXCIgZD1cIk0yMyA1LjVWMjBjMCAyLjItMS44IDQtNCA0aC03LjNjLTEuMDggMC0yLjEtLjQzLTIuODUtMS4xOUwxIDE0LjgzczEuMjYtMS4yMyAxLjMtMS4yNWMuMjItLjE5LjQ5LS4yOS43OS0uMjkuMjIgMCAuNDIuMDYuNi4xNi4wNC4wMSA0LjMxIDIuNDYgNC4zMSAyLjQ2VjRjMC0uODMuNjctMS41IDEuNS0xLjVTMTEgMy4xNyAxMSA0djdoMVYxLjVjMC0uODMuNjctMS41IDEuNS0xLjVTMTUgLjY3IDE1IDEuNVYxMWgxVjIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxMWgxVjUuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXpcIi8+XFxuPC9zdmc+JyxpY29ab29tPSc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIj5cXG4gICAgPHBhdGggZD1cIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwiLz5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMFYwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTEyIDEwaC0ydjJIOXYtMkg3VjloMlY3aDF2MmgydjF6XCIvPlxcbjwvc3ZnPicsaWNvUmVzZXQ9JzxzdmcgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxcbiAgICA8cGF0aCBkPVwiTTEwIDIwdi02aDR2Nmg1di04aDNMMTIgMyAyIDEyaDN2OHpcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuPC9zdmc+JyxpY29ab29tSW49JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cXG4gICAgPHBhdGggZD1cIk0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCIvPlxcbjwvc3ZnPlxcbicsaWNvWm9vbU91dD0nPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwiLz5cXG48L3N2Zz5cXG4nLGljb1NlbGVjdD0nPHN2ZyBmaWxsPVwiIzZFODE5MlwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMyA1aDJWM2MtMS4xIDAtMiAuOS0yIDJ6bTAgOGgydi0ySDN2MnptNCA4aDJ2LTJIN3Yyek0zIDloMlY3SDN2MnptMTAtNmgtMnYyaDJWM3ptNiAwdjJoMmMwLTEuMS0uOS0yLTItMnpNNSAyMXYtMkgzYzAgMS4xLjkgMiAyIDJ6bS0yLTRoMnYtMkgzdjJ6TTkgM0g3djJoMlYzem0yIDE4aDJ2LTJoLTJ2MnptOC04aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtMTJoMlY3aC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS00IDRoMnYtMmgtMnYyem0wLTE2aDJWM2gtMnYyelwiLz5cXG48L3N2Zz4nLGljb01lbnU9JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIi8+PHBhdGggZD1cIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwiLz48L3N2Zz4nLFRvb2xiYXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmV2PXRoaXMudy5jb25maWcuY2hhcnQuZXZlbnRzLHRoaXMubG9jYWxlVmFsdWVzPXRoaXMudy5nbG9iYWxzLmxvY2FsZS50b29sYmFyfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImNyZWF0ZVRvb2xiYXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7aWYoZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLFwiYXBleGNoYXJ0cy10b29sYmFyXCIpLHQuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGUpLHRoaXMuZWxab29tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5lbFpvb21Jbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuZWxab29tT3V0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5lbFBhbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuZWxTZWxlY3Rpb249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLmVsWm9vbVJlc2V0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5lbE1lbnVJY29uPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5lbE1lbnU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLmVsQ3VzdG9tSWNvbnM9W10sdGhpcy50PXQuY29uZmlnLmNoYXJ0LnRvb2xiYXIudG9vbHMsQXJyYXkuaXNBcnJheSh0aGlzLnQuY3VzdG9tSWNvbnMpKWZvcih2YXIgaT0wO2k8dGhpcy50LmN1c3RvbUljb25zLmxlbmd0aDtpKyspdGhpcy5lbEN1c3RvbUljb25zLnB1c2goZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSk7dGhpcy5lbE1lbnVJdGVtcz1bXTt2YXIgcz1bXTt0aGlzLnQuem9vbWluJiZ0LmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWQmJnMucHVzaCh7ZWw6dGhpcy5lbFpvb21JbixpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnQuem9vbWluP3RoaXMudC56b29taW46aWNvWm9vbUluLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLnpvb21JbixjbGFzczpcImFwZXhjaGFydHMtem9vbS1pbi1pY29uXCJ9KSx0aGlzLnQuem9vbW91dCYmdC5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZzLnB1c2goe2VsOnRoaXMuZWxab29tT3V0LGljb246XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMudC56b29tb3V0P3RoaXMudC56b29tb3V0Omljb1pvb21PdXQsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuem9vbU91dCxjbGFzczpcImFwZXhjaGFydHMtem9vbS1vdXQtaWNvblwifSksdGhpcy50Lnpvb20mJnQuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZCYmcy5wdXNoKHtlbDp0aGlzLmVsWm9vbSxpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnQuem9vbT90aGlzLnQuem9vbTppY29ab29tLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLnNlbGVjdGlvblpvb20sY2xhc3M6dC5nbG9iYWxzLmlzVG91Y2hEZXZpY2U/XCJoaWRkZW5cIjpcImFwZXhjaGFydHMtem9vbS1pY29uXCJ9KSx0aGlzLnQuc2VsZWN0aW9uJiZ0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZW5hYmxlZCYmcy5wdXNoKHtlbDp0aGlzLmVsU2VsZWN0aW9uLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMudC5zZWxlY3Rpb24/dGhpcy50LnNlbGVjdGlvbjppY29TZWxlY3QsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuc2VsZWN0aW9uLGNsYXNzOnQuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP1wiaGlkZGVuXCI6XCJhcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uXCJ9KSx0aGlzLnQucGFuJiZ0LmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWQmJnMucHVzaCh7ZWw6dGhpcy5lbFBhbixpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnQucGFuP3RoaXMudC5wYW46aWNvUGFuLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLnBhbixjbGFzczp0Lmdsb2JhbHMuaXNUb3VjaERldmljZT9cImhpZGRlblwiOlwiYXBleGNoYXJ0cy1wYW4taWNvblwifSksdGhpcy50LnJlc2V0JiZ0LmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWQmJnMucHVzaCh7ZWw6dGhpcy5lbFpvb21SZXNldCxpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnQucmVzZXQ/dGhpcy50LnJlc2V0Omljb1Jlc2V0LHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLnJlc2V0LGNsYXNzOlwiYXBleGNoYXJ0cy1yZXNldC16b29tLWljb25cIn0pLHRoaXMudC5kb3dubG9hZCYmcy5wdXNoKHtlbDp0aGlzLmVsTWVudUljb24saWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdGhpcy50LmRvd25sb2FkP3RoaXMudC5kb3dubG9hZDppY29NZW51LHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLm1lbnUsY2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnUtaWNvblwifSk7Zm9yKHZhciBhPTA7YTx0aGlzLmVsQ3VzdG9tSWNvbnMubGVuZ3RoO2ErKylzLnB1c2goe2VsOnRoaXMuZWxDdXN0b21JY29uc1thXSxpY29uOnRoaXMudC5jdXN0b21JY29uc1thXS5pY29uLHRpdGxlOnRoaXMudC5jdXN0b21JY29uc1thXS50aXRsZSxpbmRleDp0aGlzLnQuY3VzdG9tSWNvbnNbYV0uaW5kZXgsY2xhc3M6XCJhcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gXCIrdGhpcy50LmN1c3RvbUljb25zW2FdLmNsYXNzfSk7cy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dC5pbmRleCYmVXRpbHMubW92ZUluZGV4SW5BcnJheShzLGUsdC5pbmRleCl9KTtmb3IodmFyIHI9MDtyPHMubGVuZ3RoO3IrKylHcmFwaGljcy5zZXRBdHRycyhzW3JdLmVsLHtjbGFzczpzW3JdLmNsYXNzLHRpdGxlOnNbcl0udGl0bGV9KSxzW3JdLmVsLmlubmVySFRNTD1zW3JdLmljb24sZS5hcHBlbmRDaGlsZChzW3JdLmVsKTtlLmFwcGVuZENoaWxkKHRoaXMuZWxNZW51KSxHcmFwaGljcy5zZXRBdHRycyh0aGlzLmVsTWVudSx7Y2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnVcIn0pO2Zvcih2YXIgbj1be25hbWU6XCJleHBvcnRTVkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1NWR30se25hbWU6XCJleHBvcnRQTkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1BOR31dLG89MDtvPG4ubGVuZ3RoO28rKyl0aGlzLmVsTWVudUl0ZW1zLnB1c2goZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSksdGhpcy5lbE1lbnVJdGVtc1tvXS5pbm5lckhUTUw9bltvXS50aXRsZSxHcmFwaGljcy5zZXRBdHRycyh0aGlzLmVsTWVudUl0ZW1zW29dLHtjbGFzczpcImFwZXhjaGFydHMtbWVudS1pdGVtIFwiLmNvbmNhdChuW29dLm5hbWUpLHRpdGxlOm5bb10udGl0bGV9KSx0aGlzLmVsTWVudS5hcHBlbmRDaGlsZCh0aGlzLmVsTWVudUl0ZW1zW29dKTt0Lmdsb2JhbHMuem9vbUVuYWJsZWQ/dGhpcy5lbFpvb20uY2xhc3NMaXN0LmFkZChcInNlbGVjdGVkXCIpOnQuZ2xvYmFscy5wYW5FbmFibGVkP3RoaXMuZWxQYW4uY2xhc3NMaXN0LmFkZChcInNlbGVjdGVkXCIpOnQuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiZ0aGlzLmVsU2VsZWN0aW9uLmNsYXNzTGlzdC5hZGQoXCJzZWxlY3RlZFwiKSx0aGlzLmFkZFRvb2xiYXJFdmVudExpc3RlbmVycygpfX0se2tleTpcImFkZFRvb2xiYXJFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmVsWm9vbVJlc2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbVJlc2V0LmJpbmQodGhpcykpLHRoaXMuZWxTZWxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVTZWxlY3Rpb24uYmluZCh0aGlzKSksdGhpcy5lbFpvb20uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVab29taW5nLmJpbmQodGhpcykpLHRoaXMuZWxab29tSW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tSW4uYmluZCh0aGlzKSksdGhpcy5lbFpvb21PdXQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tT3V0LmJpbmQodGhpcykpLHRoaXMuZWxQYW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVQYW5uaW5nLmJpbmQodGhpcykpLHRoaXMuZWxNZW51SWNvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZU1lbnUuYmluZCh0aGlzKSksdGhpcy5lbE1lbnVJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZXhwb3J0U1ZHXCIpP2UuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5kb3dubG9hZFNWRy5iaW5kKHQpKTplLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydFBOR1wiKSYmZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmRvd25sb2FkUE5HLmJpbmQodCkpfSk7Zm9yKHZhciBlPTA7ZTx0aGlzLnQuY3VzdG9tSWNvbnMubGVuZ3RoO2UrKyl0aGlzLmVsQ3VzdG9tSWNvbnNbZV0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50LmN1c3RvbUljb25zW2VdLmNsaWNrLmJpbmQodGhpcyx0aGlzLmN0eCx0aGlzLmN0eC53KSl9fSx7a2V5OlwidG9nZ2xlU2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZU90aGVyQ29udHJvbHMoKSx0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkPSF0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkLHRoaXMuZWxTZWxlY3Rpb24uY2xhc3NMaXN0LmNvbnRhaW5zKFwic2VsZWN0ZWRcIik/dGhpcy5lbFNlbGVjdGlvbi5jbGFzc0xpc3QucmVtb3ZlKFwic2VsZWN0ZWRcIik6dGhpcy5lbFNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRcIil9fSx7a2V5OlwidG9nZ2xlWm9vbWluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVPdGhlckNvbnRyb2xzKCksdGhpcy53Lmdsb2JhbHMuem9vbUVuYWJsZWQ9IXRoaXMudy5nbG9iYWxzLnpvb21FbmFibGVkLHRoaXMuZWxab29tLmNsYXNzTGlzdC5jb250YWlucyhcInNlbGVjdGVkXCIpP3RoaXMuZWxab29tLmNsYXNzTGlzdC5yZW1vdmUoXCJzZWxlY3RlZFwiKTp0aGlzLmVsWm9vbS5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRcIil9fSx7a2V5OlwiZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dGhpcy5lbFpvb218fCh0aGlzLmVsWm9vbT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtem9vbS1pY29uXCIpKSx0aGlzLmVsUGFufHwodGhpcy5lbFBhbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtcGFuLWljb25cIikpLHRoaXMuZWxTZWxlY3Rpb258fCh0aGlzLmVsU2VsZWN0aW9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvblwiKSl9fSx7a2V5OlwiZW5hYmxlWm9vbWluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVPdGhlckNvbnRyb2xzKCksdGhpcy53Lmdsb2JhbHMuem9vbUVuYWJsZWQ9ITAsdGhpcy5lbFpvb20mJnRoaXMuZWxab29tLmNsYXNzTGlzdC5hZGQoXCJzZWxlY3RlZFwiKSx0aGlzLmVsUGFuJiZ0aGlzLmVsUGFuLmNsYXNzTGlzdC5yZW1vdmUoXCJzZWxlY3RlZFwiKX19LHtrZXk6XCJlbmFibGVQYW5uaW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZU90aGVyQ29udHJvbHMoKSx0aGlzLncuZ2xvYmFscy5wYW5FbmFibGVkPSEwLHRoaXMuZWxQYW4mJnRoaXMuZWxQYW4uY2xhc3NMaXN0LmFkZChcInNlbGVjdGVkXCIpLHRoaXMuZWxab29tJiZ0aGlzLmVsWm9vbS5jbGFzc0xpc3QucmVtb3ZlKFwic2VsZWN0ZWRcIil9fSx7a2V5OlwidG9nZ2xlUGFubmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVPdGhlckNvbnRyb2xzKCksdGhpcy53Lmdsb2JhbHMucGFuRW5hYmxlZD0hdGhpcy53Lmdsb2JhbHMucGFuRW5hYmxlZCx0aGlzLmVsUGFuLmNsYXNzTGlzdC5jb250YWlucyhcInNlbGVjdGVkXCIpP3RoaXMuZWxQYW4uY2xhc3NMaXN0LnJlbW92ZShcInNlbGVjdGVkXCIpOnRoaXMuZWxQYW4uY2xhc3NMaXN0LmFkZChcInNlbGVjdGVkXCIpfX0se2tleTpcInRvZ2dsZU90aGVyQ29udHJvbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMucGFuRW5hYmxlZD0hMSx0Lmdsb2JhbHMuem9vbUVuYWJsZWQ9ITEsdC5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQ9ITEsdGhpcy5nZXRUb29sYmFySWNvbnNSZWZlcmVuY2UoKSx0aGlzLmVsUGFuJiZ0aGlzLmVsUGFuLmNsYXNzTGlzdC5yZW1vdmUoXCJzZWxlY3RlZFwiKSx0aGlzLmVsU2VsZWN0aW9uJiZ0aGlzLmVsU2VsZWN0aW9uLmNsYXNzTGlzdC5yZW1vdmUoXCJzZWxlY3RlZFwiKSx0aGlzLmVsWm9vbSYmdGhpcy5lbFpvb20uY2xhc3NMaXN0LnJlbW92ZShcInNlbGVjdGVkXCIpfX0se2tleTpcImhhbmRsZVpvb21JblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9KHQuZ2xvYmFscy5taW5YK3QuZ2xvYmFscy5tYXhYKS8yLGk9KHQuZ2xvYmFscy5taW5YK2UpLzIscz0odC5nbG9iYWxzLm1heFgrZSkvMjt0Lmdsb2JhbHMuZGlzYWJsZVpvb21Jbnx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhpLHMpfX0se2tleTpcImhhbmRsZVpvb21PdXRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZighKFwiZGF0ZXRpbWVcIj09PXQuY29uZmlnLnhheGlzLnR5cGUmJm5ldyBEYXRlKHQuZ2xvYmFscy5taW5YKS5nZXRVVENGdWxsWWVhcigpPDFlMykpe3ZhciBlPSh0Lmdsb2JhbHMubWluWCt0Lmdsb2JhbHMubWF4WCkvMixpPXQuZ2xvYmFscy5taW5YLShlLXQuZ2xvYmFscy5taW5YKSxzPXQuZ2xvYmFscy5tYXhYLShlLXQuZ2xvYmFscy5tYXhYKTt0Lmdsb2JhbHMuZGlzYWJsZVpvb21PdXR8fHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMoaSxzKX19fSx7a2V5Olwiem9vbVVwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXttaW46dCxtYXg6ZX0scz10aGlzLmdldEJlZm9yZVpvb21SYW5nZShpKTtzJiYoaT1zLnhheGlzKSx0aGlzLncuZ2xvYmFscy56b29tZWQ9ITAsdGhpcy5jdHguX3VwZGF0ZU9wdGlvbnMoe3hheGlzOml9LCExLHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpLHRoaXMuem9vbUNhbGxiYWNrKGkpfX0se2tleTpcInpvb21DYWxsYmFja1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7XCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5ldi56b29tZWQmJnRoaXMuZXYuem9vbWVkKHRoaXMuY3R4LHt4YXhpczp0LHlheGlzOmV9KX19LHtrZXk6XCJnZXRCZWZvcmVab29tUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPW51bGw7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5ldi5iZWZvcmVab29tJiYoaT10aGlzLmV2LmJlZm9yZVpvb20odGhpcyx7eGF4aXM6dCx5YXhpczplfSkpLGl9fSx7a2V5OlwidG9nZ2xlTWVudVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbE1lbnUuY2xhc3NMaXN0LmNvbnRhaW5zKFwib3BlblwiKT90aGlzLmVsTWVudS5jbGFzc0xpc3QucmVtb3ZlKFwib3BlblwiKTp0aGlzLmVsTWVudS5jbGFzc0xpc3QuYWRkKFwib3BlblwiKX19LHtrZXk6XCJkb3dubG9hZFBOR1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEV4cG9ydHModGhpcy5jdHgpO3QuZXhwb3J0VG9QbmcodGhpcy5jdHgpLHRoaXMudG9nZ2xlTWVudSgpfX0se2tleTpcImRvd25sb2FkU1ZHXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRXhwb3J0cyh0aGlzLmN0eCk7dC5leHBvcnRUb1NWRygpLHRoaXMudG9nZ2xlTWVudSgpfX0se2tleTpcImhhbmRsZVpvb21SZXNldFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaT10Lnc7aS5nbG9iYWxzLm1pblghPT1pLmdsb2JhbHMuaW5pdGlhbG1pblgmJmkuZ2xvYmFscy5tYXhYIT09aS5nbG9iYWxzLmluaXRpYWxtYXhYJiYodC5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJmUuem9vbUNhbGxiYWNrKHttaW46aS5jb25maWcueGF4aXMubWluLG1heDppLmNvbmZpZy54YXhpcy5tYXh9KSxpLmdsb2JhbHMuem9vbWVkPSExLHQuX3VwZGF0ZVNlcmllcyhpLmdsb2JhbHMuaW5pdGlhbFNlcmllcyxpLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCkpfSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbFpvb209bnVsbCx0aGlzLmVsWm9vbUluPW51bGwsdGhpcy5lbFpvb21PdXQ9bnVsbCx0aGlzLmVsUGFuPW51bGwsdGhpcy5lbFNlbGVjdGlvbj1udWxsLHRoaXMuZWxab29tUmVzZXQ9bnVsbCx0aGlzLmVsTWVudUljb249bnVsbH19XSksdH0oKSxab29tUGFuU2VsZWN0aW9uPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dmFyIGk7cmV0dXJuIF9jbGFzc0NhbGxDaGVjayh0aGlzLGUpLChpPV9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsX2dldFByb3RvdHlwZU9mKGUpLmNhbGwodGhpcyx0KSkpLmN0eD10LGkudz10LncsaS5kcmFnZ2VkPSExLGkuZ3JhcGhpY3M9bmV3IEdyYXBoaWNzKGkuY3R4KSxpLmV2ZW50TGlzdD1bXCJtb3VzZWRvd25cIixcIm1vdXNlbGVhdmVcIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSxpLmNsaWVudFg9MCxpLmNsaWVudFk9MCxpLnN0YXJ0WD0wLGkuZW5kWD0wLGkuZHJhZ1g9MCxpLnN0YXJ0WT0wLGkuZW5kWT0wLGkuZHJhZ1k9MCxpfXJldHVybiBfaW5oZXJpdHMoZSxUb29sYmFyKSxfY3JlYXRlQ2xhc3MoZSxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC54eVJhdGlvcyxzPXRoaXMudyxhPXRoaXM7dGhpcy54eVJhdGlvcz1pLHRoaXMuem9vbVJlY3Q9dGhpcy5ncmFwaGljcy5kcmF3UmVjdCgwLDAsMCwwKSx0aGlzLnNlbGVjdGlvblJlY3Q9dGhpcy5ncmFwaGljcy5kcmF3UmVjdCgwLDAsMCwwKSx0aGlzLmdyaWRSZWN0PXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpLHRoaXMuem9vbVJlY3Qubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy16b29tLXJlY3RcIiksdGhpcy5zZWxlY3Rpb25SZWN0Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3RcIikscy5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodGhpcy56b29tUmVjdCkscy5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodGhpcy5zZWxlY3Rpb25SZWN0KSxcInhcIj09PXMuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi50eXBlP3RoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoe21pblg6MCxtaW5ZOjAsbWF4WDpzLmdsb2JhbHMuZ3JpZFdpZHRoLG1heFk6cy5nbG9iYWxzLmdyaWRIZWlnaHR9KS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSk6XCJ5XCI9PT1zLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZT90aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKHttaW5YOjAsbWF4WDpzLmdsb2JhbHMuZ3JpZFdpZHRofSkub24oXCJkcmFnbW92ZVwiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwiZHJhZ2dpbmdcIikpOnRoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoKS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSksdGhpcy5wcmVzZWxlY3RlZFNlbGVjdGlvbigpLHRoaXMuaG92ZXJBcmVhPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3Iocy5nbG9iYWxzLmNoYXJ0Q2xhc3MpLHRoaXMuaG92ZXJBcmVhLmNsYXNzTGlzdC5hZGQoXCJ6b29tYWJsZVwiKSx0aGlzLmV2ZW50TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UuaG92ZXJBcmVhLmFkZEV2ZW50TGlzdGVuZXIodCxhLnN2Z01vdXNlRXZlbnRzLmJpbmQoYSxpKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNsRHJhZ2dhYmxlUmVjdCYmKHRoaXMuc2xEcmFnZ2FibGVSZWN0LmRyYWdnYWJsZSghMSksdGhpcy5zbERyYWdnYWJsZVJlY3Qub2ZmKCksdGhpcy5zZWxlY3Rpb25SZWN0Lm9mZigpKSx0aGlzLnNlbGVjdGlvblJlY3Q9bnVsbCx0aGlzLnpvb21SZWN0PW51bGwsdGhpcy5ncmlkUmVjdD1udWxsfX0se2tleTpcInN2Z01vdXNlRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz10aGlzLGE9dGhpcy5jdHgudG9vbGJhcixyPWkuZ2xvYmFscy56b29tRW5hYmxlZD9pLmNvbmZpZy5jaGFydC56b29tLnR5cGU6aS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGU7aWYoZS5zaGlmdEtleT8odGhpcy5zaGlmdFdhc1ByZXNzZWQ9ITAsYS5lbmFibGVQYW5uaW5nKCkpOnRoaXMuc2hpZnRXYXNQcmVzc2VkJiYoYS5lbmFibGVab29taW5nKCksdGhpcy5zaGlmdFdhc1ByZXNzZWQ9ITEpLCEoZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKXx8ZS50YXJnZXQucGFyZW50Tm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXRvb2xiYXJcIikpKXtpZihzLmNsaWVudFg9XCJ0b3VjaG1vdmVcIj09PWUudHlwZXx8XCJ0b3VjaHN0YXJ0XCI9PT1lLnR5cGU/ZS50b3VjaGVzWzBdLmNsaWVudFg6XCJ0b3VjaGVuZFwiPT09ZS50eXBlP2UuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDplLmNsaWVudFgscy5jbGllbnRZPVwidG91Y2htb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2hzdGFydFwiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRZOlwidG91Y2hlbmRcIj09PWUudHlwZT9lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk6ZS5jbGllbnRZLFwibW91c2Vkb3duXCI9PT1lLnR5cGUmJjE9PT1lLndoaWNoKXt2YXIgbj1zLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Muc3RhcnRYPXMuY2xpZW50WC1uLmxlZnQscy5zdGFydFk9cy5jbGllbnRZLW4udG9wLHMuZHJhZ2dlZD0hMSxzLncuZ2xvYmFscy5tb3VzZWRvd249ITB9aWYoKFwibW91c2Vtb3ZlXCI9PT1lLnR5cGUmJjE9PT1lLndoaWNofHxcInRvdWNobW92ZVwiPT09ZS50eXBlKSYmKHMuZHJhZ2dlZD0hMCxpLmdsb2JhbHMucGFuRW5hYmxlZD8oaS5nbG9iYWxzLnNlbGVjdGlvbj1udWxsLHMudy5nbG9iYWxzLm1vdXNlZG93biYmcy5wYW5EcmFnZ2luZyh7Y29udGV4dDpzLHpvb210eXBlOnIseHlSYXRpb3M6dH0pKToocy53Lmdsb2JhbHMubW91c2Vkb3duJiZpLmdsb2JhbHMuem9vbUVuYWJsZWR8fHMudy5nbG9iYWxzLm1vdXNlZG93biYmaS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpJiYocy5zZWxlY3Rpb249cy5zZWxlY3Rpb25EcmF3aW5nKHtjb250ZXh0OnMsem9vbXR5cGU6cn0pKSksXCJtb3VzZXVwXCI9PT1lLnR5cGV8fFwidG91Y2hlbmRcIj09PWUudHlwZXx8XCJtb3VzZWxlYXZlXCI9PT1lLnR5cGUpe3ZhciBvPXMuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cy53Lmdsb2JhbHMubW91c2Vkb3duJiYocy5lbmRYPXMuY2xpZW50WC1vLmxlZnQscy5lbmRZPXMuY2xpZW50WS1vLnRvcCxzLmRyYWdYPU1hdGguYWJzKHMuZW5kWC1zLnN0YXJ0WCkscy5kcmFnWT1NYXRoLmFicyhzLmVuZFktcy5zdGFydFkpLChpLmdsb2JhbHMuem9vbUVuYWJsZWR8fGkuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSYmcy5zZWxlY3Rpb25EcmF3bih7Y29udGV4dDpzLHpvb210eXBlOnJ9KSksaS5nbG9iYWxzLnpvb21FbmFibGVkJiZzLmhpZGVTZWxlY3Rpb25SZWN0KHRoaXMuc2VsZWN0aW9uUmVjdCkscy5kcmFnZ2VkPSExLHMudy5nbG9iYWxzLm1vdXNlZG93bj0hMX10aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCl9fX0se2tleTpcIm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodGhpcy5zZWxlY3Rpb25SZWN0KXt2YXIgZT10aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlLndpZHRoPjAmJmUuaGVpZ2h0PjAmJnRoaXMuc2xEcmFnZ2FibGVSZWN0LnNlbGVjdGl6ZSgpLnJlc2l6ZSh7Y29uc3RyYWludDp7bWluWDowLG1pblk6MCxtYXhYOnQuZ2xvYmFscy5ncmlkV2lkdGgsbWF4WTp0Lmdsb2JhbHMuZ3JpZEhlaWdodH19KS5vbihcInJlc2l6aW5nXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJyZXNpemluZ1wiKSl9fX0se2tleTpcInByZXNlbGVjdGVkU2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnh5UmF0aW9zO2lmKCF0Lmdsb2JhbHMuem9vbUVuYWJsZWQpaWYodm9pZCAwIT09dC5nbG9iYWxzLnNlbGVjdGlvbiYmbnVsbCE9PXQuZ2xvYmFscy5zZWxlY3Rpb24pdGhpcy5kcmF3U2VsZWN0aW9uUmVjdCh0Lmdsb2JhbHMuc2VsZWN0aW9uKTtlbHNlIGlmKHZvaWQgMCE9PXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4mJnZvaWQgMCE9PXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpe3ZhciBpPSh0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLXQuZ2xvYmFscy5taW5YKS9lLnhSYXRpbyxzPXt4OmkseTowLHdpZHRoOnQuZ2xvYmFscy5ncmlkV2lkdGgtKHQuZ2xvYmFscy5tYXhYLXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpL2UueFJhdGlvLWksaGVpZ2h0OnQuZ2xvYmFscy5ncmlkSGVpZ2h0LHRyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAsc2VsZWN0aW9uRW5hYmxlZDohMH07dGhpcy5kcmF3U2VsZWN0aW9uUmVjdChzKSx0aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiYmdC5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbih0aGlzLmN0eCx7eGF4aXM6e21pbjp0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLG1heDp0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4fSx5YXhpczp7fX0pfX19LHtrZXk6XCJkcmF3U2VsZWN0aW9uUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxzPXQud2lkdGgsYT10LmhlaWdodCxyPXQudHJhbnNsYXRlWCxuPXQudHJhbnNsYXRlWSxvPXRoaXMudyxsPXRoaXMuem9vbVJlY3QsaD10aGlzLnNlbGVjdGlvblJlY3Q7aWYodGhpcy5kcmFnZ2VkfHxudWxsIT09by5nbG9iYWxzLnNlbGVjdGlvbil7dmFyIGM9e3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIityK1wiLCBcIituK1wiKVwifTtvLmdsb2JhbHMuem9vbUVuYWJsZWQmJnRoaXMuZHJhZ2dlZCYmKGwuYXR0cih7eDplLHk6aSx3aWR0aDpzLGhlaWdodDphLGZpbGw6by5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwuY29sb3IsXCJmaWxsLW9wYWNpdHlcIjpvLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuZmlsbC5vcGFjaXR5LHN0cm9rZTpvLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6by5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS53aWR0aCxcInN0cm9rZS1vcGFjaXR5XCI6by5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5vcGFjaXR5fSksR3JhcGhpY3Muc2V0QXR0cnMobC5ub2RlLGMpKSxvLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmKGguYXR0cih7eDplLHk6aSx3aWR0aDpzPjA/czowLGhlaWdodDphPjA/YTowLGZpbGw6by5jb25maWcuY2hhcnQuc2VsZWN0aW9uLmZpbGwuY29sb3IsXCJmaWxsLW9wYWNpdHlcIjpvLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5vcGFjaXR5LHN0cm9rZTpvLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6by5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS53aWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjpvLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLmRhc2hBcnJheSxcInN0cm9rZS1vcGFjaXR5XCI6by5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5vcGFjaXR5fSksR3JhcGhpY3Muc2V0QXR0cnMoaC5ub2RlLGMpKX19fSx7a2V5OlwiaGlkZVNlbGVjdGlvblJlY3RcIix2YWx1ZTpmdW5jdGlvbih0KXt0JiZ0LmF0dHIoe3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH0pfX0se2tleTpcInNlbGVjdGlvbkRyYXdpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNvbnRleHQsaT10Lnpvb210eXBlLHM9dGhpcy53LGE9ZSxyPXRoaXMuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1hLnN0YXJ0WC0xLG89YS5zdGFydFksbD1hLmNsaWVudFgtci5sZWZ0LW4saD1hLmNsaWVudFktci50b3AtbyxjPTAsZD0wLHU9e307cmV0dXJuIE1hdGguYWJzKGwrbik+cy5nbG9iYWxzLmdyaWRXaWR0aD9sPXMuZ2xvYmFscy5ncmlkV2lkdGgtbjphLmNsaWVudFgtci5sZWZ0PDAmJihsPW4pLG4+YS5jbGllbnRYLXIubGVmdCYmKGM9LShsPU1hdGguYWJzKGwpKSksbz5hLmNsaWVudFktci50b3AmJihkPS0oaD1NYXRoLmFicyhoKSkpLHU9XCJ4XCI9PT1pP3t4Om4seTowLHdpZHRoOmwsaGVpZ2h0OnMuZ2xvYmFscy5ncmlkSGVpZ2h0LHRyYW5zbGF0ZVg6Yyx0cmFuc2xhdGVZOjB9OlwieVwiPT09aT97eDowLHk6byx3aWR0aDpzLmdsb2JhbHMuZ3JpZFdpZHRoLGhlaWdodDpoLHRyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOmR9Ont4Om4seTpvLHdpZHRoOmwsaGVpZ2h0OmgsdHJhbnNsYXRlWDpjLHRyYW5zbGF0ZVk6ZH0sYS5kcmF3U2VsZWN0aW9uUmVjdCh1KSxhLnNlbGVjdGlvbkRyYWdnaW5nKFwicmVzaXppbmdcIiksdX19LHtrZXk6XCJzZWxlY3Rpb25EcmFnZ2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxzPXRoaXMudyxhPXRoaXMueHlSYXRpb3Mscj10aGlzLnNlbGVjdGlvblJlY3Qsbj0wO1wicmVzaXppbmdcIj09PXQmJihuPTMwKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBzLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uJiZzLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmKGNsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lciksdGhpcy53Lmdsb2JhbHMuc2VsZWN0aW9uUmVzaXplVGltZXI9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgdD1pLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9ci5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49cy5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbisoZS5sZWZ0LXQubGVmdCkqYS54UmF0aW8sbz1zLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluKyhlLnJpZ2h0LXQubGVmdCkqYS54UmF0aW8sbD1zLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluKyh0LmJvdHRvbS1lLmJvdHRvbSkqYS55UmF0aW9bMF0saD1zLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4LShlLnRvcC10LnRvcCkqYS55UmF0aW9bMF07cy5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbihpLmN0eCx7eGF4aXM6e21pbjpuLG1heDpvfSx5YXhpczp7bWluOmwsbWF4Omh9fSl9LG4pKX19LHtrZXk6XCJzZWxlY3Rpb25EcmF3blwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXQuem9vbXR5cGUscz10aGlzLncsYT1lLHI9dGhpcy54eVJhdGlvcyxuPXRoaXMuY3R4LnRvb2xiYXI7aWYoYS5zdGFydFg+YS5lbmRYKXt2YXIgbz1hLnN0YXJ0WDthLnN0YXJ0WD1hLmVuZFgsYS5lbmRYPW99aWYoYS5zdGFydFk+YS5lbmRZKXt2YXIgbD1hLnN0YXJ0WTthLnN0YXJ0WT1hLmVuZFksYS5lbmRZPWx9dmFyIGg9cy5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbithLnN0YXJ0WCpyLnhSYXRpbyxjPXMuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rYS5lbmRYKnIueFJhdGlvLGQ9W10sdT1bXTtpZihzLmNvbmZpZy55YXhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7ZC5wdXNoKE1hdGguZmxvb3Iocy5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ubmljZU1heC1yLnlSYXRpb1tlXSphLnN0YXJ0WSkpLHUucHVzaChNYXRoLmZsb29yKHMuZ2xvYmFscy55QXhpc1NjYWxlW2VdLm5pY2VNYXgtci55UmF0aW9bZV0qYS5lbmRZKSl9KSxhLmRyYWdnZWQmJihhLmRyYWdYPjEwfHxhLmRyYWdZPjEwKSYmaCE9PWMpaWYocy5nbG9iYWxzLnpvb21FbmFibGVkKXt2YXIgZz1VdGlscy5jbG9uZShzLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcyk7cy5nbG9iYWxzLnpvb21lZHx8KHMuZ2xvYmFscy5sYXN0WEF4aXM9VXRpbHMuY2xvbmUocy5jb25maWcueGF4aXMpLHMuZ2xvYmFscy5sYXN0WUF4aXM9VXRpbHMuY2xvbmUocy5jb25maWcueWF4aXMpKTt2YXIgZj17bWluOmgsbWF4OmN9O2lmKFwieHlcIiE9PWkmJlwieVwiIT09aXx8Zy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7Z1tlXS5taW49dVtlXSxnW2VdLm1heD1kW2VdfSkscy5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyl7dmFyIHA9bmV3IFJhbmdlKGEuY3R4KTtnPXAuYXV0b1NjYWxlWShhLmN0eCxnLHt4YXhpczpmfSl9aWYobil7dmFyIHg9bi5nZXRCZWZvcmVab29tUmFuZ2UoZixnKTt4JiYoZj14LnhheGlzP3gueGF4aXM6ZixnPXgueWF4aXM/eC55YXhlOmcpfXZhciBtPXt4YXhpczpmfTtzLmNvbmZpZy5jaGFydC5ncm91cHx8KG0ueWF4aXM9ZyksYS5jdHguX3VwZGF0ZU9wdGlvbnMobSwhMSxhLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBzLmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkJiZuLnpvb21DYWxsYmFjayhmLGcpLHMuZ2xvYmFscy56b29tZWQ9ITB9ZWxzZSBpZihzLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCl7dmFyIGIsdj1udWxsO2I9e21pbjpoLG1heDpjfSxcInh5XCIhPT1pJiZcInlcIiE9PWl8fCh2PVV0aWxzLmNsb25lKHMuY29uZmlnLnlheGlzKSkuZm9yRWFjaChmdW5jdGlvbih0LGUpe3ZbZV0ubWluPXVbZV0sdltlXS5tYXg9ZFtlXX0pLHMuZ2xvYmFscy5zZWxlY3Rpb249YS5zZWxlY3Rpb24sXCJmdW5jdGlvblwiPT10eXBlb2Ygcy5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiYmcy5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbihhLmN0eCx7eGF4aXM6Yix5YXhpczp2fSl9fX0se2tleTpcInBhbkRyYWdnaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmNvbnRleHQscz10aGlzLncsYT1pO2lmKHZvaWQgMCE9PXMuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueCl7dmFyIHI9cy5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi54LWEuY2xpZW50WCxuPXMuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueS1hLmNsaWVudFk7TWF0aC5hYnMocik+TWF0aC5hYnMobikmJnI+MD9lPVwibGVmdFwiOk1hdGguYWJzKHIpPk1hdGguYWJzKG4pJiZyPDA/ZT1cInJpZ2h0XCI6TWF0aC5hYnMobik+TWF0aC5hYnMocikmJm4+MD9lPVwidXBcIjpNYXRoLmFicyhuKT5NYXRoLmFicyhyKSYmbjwwJiYoZT1cImRvd25cIil9cy5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbj17eDphLmNsaWVudFgseTphLmNsaWVudFl9O3ZhciBvPXMuZ2xvYmFscy5taW5YLGw9cy5nbG9iYWxzLm1heFg7YS5wYW5TY3JvbGxlZChlLG8sbCl9fSx7a2V5OlwicGFuU2Nyb2xsZWRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9dGhpcy54eVJhdGlvcyxyPVV0aWxzLmNsb25lKHMuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKTtcImxlZnRcIj09PXQ/KGU9cy5nbG9iYWxzLm1pblgrcy5nbG9iYWxzLmdyaWRXaWR0aC8xNSphLnhSYXRpbyxpPXMuZ2xvYmFscy5tYXhYK3MuZ2xvYmFscy5ncmlkV2lkdGgvMTUqYS54UmF0aW8pOlwicmlnaHRcIj09PXQmJihlPXMuZ2xvYmFscy5taW5YLXMuZ2xvYmFscy5ncmlkV2lkdGgvMTUqYS54UmF0aW8saT1zLmdsb2JhbHMubWF4WC1zLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KmEueFJhdGlvKSwoZTxzLmdsb2JhbHMuaW5pdGlhbG1pblh8fGk+cy5nbG9iYWxzLmluaXRpYWxtYXhYKSYmKGU9cy5nbG9iYWxzLm1pblgsaT1zLmdsb2JhbHMubWF4WCk7dmFyIG49e21pbjplLG1heDppfTtzLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzJiYocj1uZXcgUmFuZ2UodGhpcy5jdHgpLmF1dG9TY2FsZVkodGhpcy5jdHgscix7eGF4aXM6bn0pKTt2YXIgbz17eGF4aXM6e21pbjplLG1heDppfX07cy5jb25maWcuY2hhcnQuZ3JvdXB8fChvLnlheGlzPXIpLHRoaXMuY3R4Ll91cGRhdGVPcHRpb25zKG8sITEsITEpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHMuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCYmcy5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkKHRoaXMuY3R4LHt4YXhpczp7bWluOmUsbWF4Oml9fSl9fV0pLGV9KCksVGl0bGVTdWJ0aXRsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZHJhd1RpdGxlU3VidGl0bGUoXCJ0aXRsZVwiKSx0aGlzLmRyYXdUaXRsZVN1YnRpdGxlKFwic3VidGl0bGVcIil9fSx7a2V5OlwiZHJhd1RpdGxlU3VidGl0bGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1cInRpdGxlXCI9PT10P2UuY29uZmlnLnRpdGxlOmUuY29uZmlnLnN1YnRpdGxlLHM9ZS5nbG9iYWxzLnN2Z1dpZHRoLzIsYT1pLm9mZnNldFkscj1cIm1pZGRsZVwiO2lmKFwibGVmdFwiPT09aS5hbGlnbj8ocz0xMCxyPVwic3RhcnRcIik6XCJyaWdodFwiPT09aS5hbGlnbiYmKHM9ZS5nbG9iYWxzLnN2Z1dpZHRoLTEwLHI9XCJlbmRcIikscys9aS5vZmZzZXRYLGE9YStwYXJzZUludChpLnN0eWxlLmZvbnRTaXplKSsyLHZvaWQgMCE9PWkudGV4dCl7dmFyIG49bmV3IEdyYXBoaWNzKHRoaXMuY3R4KS5kcmF3VGV4dCh7eDpzLHk6YSx0ZXh0OmkudGV4dCx0ZXh0QW5jaG9yOnIsZm9udFNpemU6aS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5Omkuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6aS5zdHlsZS5jb2xvcixvcGFjaXR5OjF9KTtuLm5vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcImFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItdGV4dFwiKSksZS5nbG9iYWxzLmRvbS5QYXBlci5hZGQobil9fX1dKSx0fSgpO2Z1bmN0aW9uIHN0eWxlSW5qZWN0KHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciBpPWUuaW5zZXJ0QXQ7aWYodCYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50KXt2YXIgcz1kb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0sYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7YS50eXBlPVwidGV4dC9jc3NcIixcInRvcFwiPT09aSYmcy5maXJzdENoaWxkP3MuaW5zZXJ0QmVmb3JlKGEscy5maXJzdENoaWxkKTpzLmFwcGVuZENoaWxkKGEpLGEuc3R5bGVTaGVldD9hLnN0eWxlU2hlZXQuY3NzVGV4dD10OmEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCkpfX0hZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIGUodCx0LmRvY3VtZW50KX0pOlwib2JqZWN0XCI9PT0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIGV4cG9ydHM/XCJ1bmRlZmluZWRcIjpfdHlwZW9mKGV4cG9ydHMpKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10LmRvY3VtZW50P2UodCx0LmRvY3VtZW50KTpmdW5jdGlvbih0KXtyZXR1cm4gZSh0LHQuZG9jdW1lbnQpfTp0LlNWRz1lKHQsdC5kb2N1bWVudCl9KFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCxmdW5jdGlvbih0LGUpe3ZhciBpPSh2b2lkIDAhPT10aGlzP3RoaXM6dCkuU1ZHPWZ1bmN0aW9uKHQpe2lmKGkuc3VwcG9ydGVkKXJldHVybiB0PW5ldyBpLkRvYyh0KSxpLnBhcnNlci5kcmF3fHxpLnByZXBhcmUoKSx0fTtpZihpLm5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixpLnhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIixpLnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLGkuc3ZnanM9XCJodHRwOi8vc3ZnanMuY29tL3N2Z2pzXCIsaS5zdXBwb3J0ZWQ9ITAsIWkuc3VwcG9ydGVkKXJldHVybiExO2kuZGlkPTFlMyxpLmVpZD1mdW5jdGlvbih0KXtyZXR1cm5cIlN2Z2pzXCIrYyh0KStpLmRpZCsrfSxpLmNyZWF0ZT1mdW5jdGlvbih0KXt2YXIgaT1lLmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5zLHQpO3JldHVybiBpLnNldEF0dHJpYnV0ZShcImlkXCIsdGhpcy5laWQodCkpLGl9LGkuZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIHQsZSxzLGE7Zm9yKGU9KHQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpKS5wb3AoKSxhPXQubGVuZ3RoLTE7YT49MDthLS0paWYodFthXSlmb3IocyBpbiBlKXRbYV0ucHJvdG90eXBlW3NdPWVbc107aS5TZXQmJmkuU2V0LmluaGVyaXQmJmkuU2V0LmluaGVyaXQoKX0saS5pbnZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jcmVhdGU/dC5jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxpLmNyZWF0ZSh0LmNyZWF0ZSkpfTtyZXR1cm4gdC5pbmhlcml0JiYoZS5wcm90b3R5cGU9bmV3IHQuaW5oZXJpdCksdC5leHRlbmQmJmkuZXh0ZW5kKGUsdC5leHRlbmQpLHQuY29uc3RydWN0JiZpLmV4dGVuZCh0LnBhcmVudHx8aS5Db250YWluZXIsdC5jb25zdHJ1Y3QpLGV9LGkuYWRvcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5pbnN0YW5jZT9lLmluc3RhbmNlOigocz1cInN2Z1wiPT1lLm5vZGVOYW1lP2UucGFyZW50Tm9kZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudD9uZXcgaS5OZXN0ZWQ6bmV3IGkuRG9jOlwibGluZWFyR3JhZGllbnRcIj09ZS5ub2RlTmFtZT9uZXcgaS5HcmFkaWVudChcImxpbmVhclwiKTpcInJhZGlhbEdyYWRpZW50XCI9PWUubm9kZU5hbWU/bmV3IGkuR3JhZGllbnQoXCJyYWRpYWxcIik6aVtjKGUubm9kZU5hbWUpXT9uZXcoaVtjKGUubm9kZU5hbWUpXSk6bmV3IGkuRWxlbWVudChlKSkudHlwZT1lLm5vZGVOYW1lLHMubm9kZT1lLGUuaW5zdGFuY2U9cyxzIGluc3RhbmNlb2YgaS5Eb2MmJnMubmFtZXNwYWNlKCkuZGVmcygpLHMuc2V0RGF0YShKU09OLnBhcnNlKGUuZ2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSl8fHt9KSxzKTpudWxsO3ZhciBzfSxpLnByZXBhcmU9ZnVuY3Rpb24oKXt2YXIgdD1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXSxzPSh0P25ldyBpLkRvYyh0KTppLmFkb3B0KGUuZG9jdW1lbnRFbGVtZW50KS5uZXN0ZWQoKSkuc2l6ZSgyLDApO2kucGFyc2VyPXtib2R5OnR8fGUuZG9jdW1lbnRFbGVtZW50LGRyYXc6cy5zdHlsZShcIm9wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMDAlO3RvcDotMTAwJTtvdmVyZmxvdzpoaWRkZW5cIikubm9kZSxwb2x5OnMucG9seWxpbmUoKS5ub2RlLHBhdGg6cy5wYXRoKCkubm9kZSxuYXRpdmU6aS5jcmVhdGUoXCJzdmdcIil9fSxpLnBhcnNlcj17bmF0aXZlOmkuY3JlYXRlKFwic3ZnXCIpfSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsZnVuY3Rpb24oKXtpLnBhcnNlci5kcmF3fHxpLnByZXBhcmUoKX0sITEpLGkucmVnZXg9e251bWJlckFuZFVuaXQ6L14oWystXT8oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/KShbYS16JV0qKSQvaSxoZXg6L14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaSxyZ2I6L3JnYlxcKChcXGQrKSwoXFxkKyksKFxcZCspXFwpLyxyZWZlcmVuY2U6LyMoW2EtejAtOVxcLV9dKykvaSx0cmFuc2Zvcm1zOi9cXClcXHMqLD9cXHMqLyx3aGl0ZXNwYWNlOi9cXHMvZyxpc0hleDovXiNbYS1mMC05XXszLDZ9JC9pLGlzUmdiOi9ecmdiXFwoLyxpc0NzczovW146XSs6W147XSs7Py8saXNCbGFuazovXihcXHMrKT8kLyxpc051bWJlcjovXlsrLV0/KFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKGVbKy1dP1xcZCspPyQvaSxpc1BlcmNlbnQ6L14tP1tcXGRcXC5dKyUkLyxpc0ltYWdlOi9cXC4oanBnfGpwZWd8cG5nfGdpZnxzdmcpKFxcP1tePV0rLiopPy9pLGRlbGltaXRlcjovW1xccyxdKy8saHlwaGVuOi8oW15lXSlcXC0vZ2kscGF0aExldHRlcnM6L1tNTEhWQ1NRVEFaXS9naSxpc1BhdGhMZXR0ZXI6L1tNTEhWQ1NRVEFaXS9pLG51bWJlcnNXaXRoRG90czovKChcXGQ/XFwuXFxkKyg/OmVbKy1dP1xcZCspPykoKD86XFwuXFxkKyg/OmVbKy1dP1xcZCspPykrKSkrL2dpLGRvdHM6L1xcLi9nfSxpLnV0aWxzPXttYXA6ZnVuY3Rpb24odCxlKXt2YXIgaSxzPXQubGVuZ3RoLGE9W107Zm9yKGk9MDtpPHM7aSsrKWEucHVzaChlKHRbaV0pKTtyZXR1cm4gYX0sZmlsdGVyOmZ1bmN0aW9uKHQsZSl7dmFyIGkscz10Lmxlbmd0aCxhPVtdO2ZvcihpPTA7aTxzO2krKyllKHRbaV0pJiZhLnB1c2godFtpXSk7cmV0dXJuIGF9LHJhZGlhbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHQlMzYwKk1hdGguUEkvMTgwfSxkZWdyZWVzOmZ1bmN0aW9uKHQpe3JldHVybiAxODAqdC9NYXRoLlBJJTM2MH0sZmlsdGVyU1ZHRWxlbWVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmlsdGVyKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnR9KX19LGkuZGVmYXVsdHM9e2F0dHJzOntcImZpbGwtb3BhY2l0eVwiOjEsXCJzdHJva2Utb3BhY2l0eVwiOjEsXCJzdHJva2Utd2lkdGhcIjowLFwic3Ryb2tlLWxpbmVqb2luXCI6XCJtaXRlclwiLFwic3Ryb2tlLWxpbmVjYXBcIjpcImJ1dHRcIixmaWxsOlwiIzAwMDAwMFwiLHN0cm9rZTpcIiMwMDAwMDBcIixvcGFjaXR5OjEseDowLHk6MCxjeDowLGN5OjAsd2lkdGg6MCxoZWlnaHQ6MCxyOjAscng6MCxyeTowLG9mZnNldDowLFwic3RvcC1vcGFjaXR5XCI6MSxcInN0b3AtY29sb3JcIjpcIiMwMDAwMDBcIixcImZvbnQtc2l6ZVwiOjE2LFwiZm9udC1mYW1pbHlcIjpcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIixcInRleHQtYW5jaG9yXCI6XCJzdGFydFwifX0saS5Db2xvcj1mdW5jdGlvbih0KXt2YXIgZSxzOyh0aGlzLnI9MCx0aGlzLmc9MCx0aGlzLmI9MCx0KSYmKFwic3RyaW5nXCI9PXR5cGVvZiB0P2kucmVnZXguaXNSZ2IudGVzdCh0KT8oZT1pLnJlZ2V4LnJnYi5leGVjKHQucmVwbGFjZShpLnJlZ2V4LndoaXRlc3BhY2UsXCJcIikpLHRoaXMucj1wYXJzZUludChlWzFdKSx0aGlzLmc9cGFyc2VJbnQoZVsyXSksdGhpcy5iPXBhcnNlSW50KGVbM10pKTppLnJlZ2V4LmlzSGV4LnRlc3QodCkmJihlPWkucmVnZXguaGV4LmV4ZWMoND09KHM9dCkubGVuZ3RoP1tcIiNcIixzLnN1YnN0cmluZygxLDIpLHMuc3Vic3RyaW5nKDEsMikscy5zdWJzdHJpbmcoMiwzKSxzLnN1YnN0cmluZygyLDMpLHMuc3Vic3RyaW5nKDMsNCkscy5zdWJzdHJpbmcoMyw0KV0uam9pbihcIlwiKTpzKSx0aGlzLnI9cGFyc2VJbnQoZVsxXSwxNiksdGhpcy5nPXBhcnNlSW50KGVbMl0sMTYpLHRoaXMuYj1wYXJzZUludChlWzNdLDE2KSk6XCJvYmplY3RcIj09PV90eXBlb2YodCkmJih0aGlzLnI9dC5yLHRoaXMuZz10LmcsdGhpcy5iPXQuYikpfSxpLmV4dGVuZChpLkNvbG9yLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvSGV4KCl9LHRvSGV4OmZ1bmN0aW9uKCl7cmV0dXJuXCIjXCIrZCh0aGlzLnIpK2QodGhpcy5nKStkKHRoaXMuYil9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJuXCJyZ2IoXCIrW3RoaXMucix0aGlzLmcsdGhpcy5iXS5qb2luKCkrXCIpXCJ9LGJyaWdodG5lc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yLzI1NSouMyt0aGlzLmcvMjU1Ki41OSt0aGlzLmIvMjU1Ki4xMX0sbW9ycGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IGkuQ29sb3IodCksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/KHQ9dDwwPzA6dD4xPzE6dCxuZXcgaS5Db2xvcih7cjp+fih0aGlzLnIrKHRoaXMuZGVzdGluYXRpb24uci10aGlzLnIpKnQpLGc6fn4odGhpcy5nKyh0aGlzLmRlc3RpbmF0aW9uLmctdGhpcy5nKSp0KSxiOn5+KHRoaXMuYisodGhpcy5kZXN0aW5hdGlvbi5iLXRoaXMuYikqdCl9KSk6dGhpc319KSxpLkNvbG9yLnRlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQrPVwiXCIsaS5yZWdleC5pc0hleC50ZXN0KHQpfHxpLnJlZ2V4LmlzUmdiLnRlc3QodCl9LGkuQ29sb3IuaXNSZ2I9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwibnVtYmVyXCI9PXR5cGVvZiB0LnImJlwibnVtYmVyXCI9PXR5cGVvZiB0LmcmJlwibnVtYmVyXCI9PXR5cGVvZiB0LmJ9LGkuQ29sb3IuaXNDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gaS5Db2xvci5pc1JnYih0KXx8aS5Db2xvci50ZXN0KHQpfSxpLkFycmF5PWZ1bmN0aW9uKHQsZSl7MD09KHQ9KHR8fFtdKS52YWx1ZU9mKCkpLmxlbmd0aCYmZSYmKHQ9ZS52YWx1ZU9mKCkpLHRoaXMudmFsdWU9dGhpcy5wYXJzZSh0KX0saS5leHRlbmQoaS5BcnJheSx7bW9ycGg6ZnVuY3Rpb24odCl7aWYodGhpcy5kZXN0aW5hdGlvbj10aGlzLnBhcnNlKHQpLHRoaXMudmFsdWUubGVuZ3RoIT10aGlzLmRlc3RpbmF0aW9uLmxlbmd0aCl7Zm9yKHZhciBlPXRoaXMudmFsdWVbdGhpcy52YWx1ZS5sZW5ndGgtMV0saT10aGlzLmRlc3RpbmF0aW9uW3RoaXMuZGVzdGluYXRpb24ubGVuZ3RoLTFdO3RoaXMudmFsdWUubGVuZ3RoPnRoaXMuZGVzdGluYXRpb24ubGVuZ3RoOyl0aGlzLmRlc3RpbmF0aW9uLnB1c2goaSk7Zm9yKDt0aGlzLnZhbHVlLmxlbmd0aDx0aGlzLmRlc3RpbmF0aW9uLmxlbmd0aDspdGhpcy52YWx1ZS5wdXNoKGUpfXJldHVybiB0aGlzfSxzZXR0bGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPXRoaXMudmFsdWUubGVuZ3RoLGk9W107dDxlO3QrKyktMT09aS5pbmRleE9mKHRoaXMudmFsdWVbdF0pJiZpLnB1c2godGhpcy52YWx1ZVt0XSk7cmV0dXJuIHRoaXMudmFsdWU9aX0sYXQ6ZnVuY3Rpb24odCl7aWYoIXRoaXMuZGVzdGluYXRpb24pcmV0dXJuIHRoaXM7Zm9yKHZhciBlPTAscz10aGlzLnZhbHVlLmxlbmd0aCxhPVtdO2U8cztlKyspYS5wdXNoKHRoaXMudmFsdWVbZV0rKHRoaXMuZGVzdGluYXRpb25bZV0tdGhpcy52YWx1ZVtlXSkqdCk7cmV0dXJuIG5ldyBpLkFycmF5KGEpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLmpvaW4oXCIgXCIpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiB0PXQudmFsdWVPZigpLEFycmF5LmlzQXJyYXkodCk/dDp0aGlzLnNwbGl0KHQpfSxzcGxpdDpmdW5jdGlvbih0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoaS5yZWdleC5kZWxpbWl0ZXIpLm1hcChwYXJzZUZsb2F0KX0scmV2ZXJzZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnJldmVyc2UoKSx0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW5ldyB0aGlzLmNvbnN0cnVjdG9yO3JldHVybiB0LnZhbHVlPWZ1bmN0aW9uIHQoZSl7dmFyIGk9ZS5zbGljZSgwKTtmb3IodmFyIHM9aS5sZW5ndGg7cy0tOylBcnJheS5pc0FycmF5KGlbc10pJiYoaVtzXT10KGlbc10pKTtyZXR1cm4gaX0odGhpcy52YWx1ZSksdH19KSxpLlBvaW50QXJyYXk9ZnVuY3Rpb24odCxlKXtpLkFycmF5LmNhbGwodGhpcyx0LGV8fFtbMCwwXV0pfSxpLlBvaW50QXJyYXkucHJvdG90eXBlPW5ldyBpLkFycmF5LGkuUG9pbnRBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3I9aS5Qb2ludEFycmF5LGkuZXh0ZW5kKGkuUG9pbnRBcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPXRoaXMudmFsdWUubGVuZ3RoLGk9W107dDxlO3QrKylpLnB1c2godGhpcy52YWx1ZVt0XS5qb2luKFwiLFwiKSk7cmV0dXJuIGkuam9pbihcIiBcIil9LHRvTGluZTpmdW5jdGlvbigpe3JldHVybnt4MTp0aGlzLnZhbHVlWzBdWzBdLHkxOnRoaXMudmFsdWVbMF1bMV0seDI6dGhpcy52YWx1ZVsxXVswXSx5Mjp0aGlzLnZhbHVlWzFdWzFdfX0sYXQ6ZnVuY3Rpb24odCl7aWYoIXRoaXMuZGVzdGluYXRpb24pcmV0dXJuIHRoaXM7Zm9yKHZhciBlPTAscz10aGlzLnZhbHVlLmxlbmd0aCxhPVtdO2U8cztlKyspYS5wdXNoKFt0aGlzLnZhbHVlW2VdWzBdKyh0aGlzLmRlc3RpbmF0aW9uW2VdWzBdLXRoaXMudmFsdWVbZV1bMF0pKnQsdGhpcy52YWx1ZVtlXVsxXSsodGhpcy5kZXN0aW5hdGlvbltlXVsxXS10aGlzLnZhbHVlW2VdWzFdKSp0XSk7cmV0dXJuIG5ldyBpLlBvaW50QXJyYXkoYSl9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVtdO2lmKHQ9dC52YWx1ZU9mKCksQXJyYXkuaXNBcnJheSh0KSl7aWYoQXJyYXkuaXNBcnJheSh0WzBdKSlyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoKX0pO2lmKG51bGwhPXRbMF0ueClyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3QueCx0LnldfSl9ZWxzZSB0PXQudHJpbSgpLnNwbGl0KGkucmVnZXguZGVsaW1pdGVyKS5tYXAocGFyc2VGbG9hdCk7dC5sZW5ndGglMiE9MCYmdC5wb3AoKTtmb3IodmFyIHM9MCxhPXQubGVuZ3RoO3M8YTtzKz0yKWUucHVzaChbdFtzXSx0W3MrMV1dKTtyZXR1cm4gZX0sbW92ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYmJveCgpO2lmKHQtPWkueCxlLT1pLnksIWlzTmFOKHQpJiYhaXNOYU4oZSkpZm9yKHZhciBzPXRoaXMudmFsdWUubGVuZ3RoLTE7cz49MDtzLS0pdGhpcy52YWx1ZVtzXT1bdGhpcy52YWx1ZVtzXVswXSt0LHRoaXMudmFsdWVbc11bMV0rZV07cmV0dXJuIHRoaXN9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaSxzPXRoaXMuYmJveCgpO2ZvcihpPXRoaXMudmFsdWUubGVuZ3RoLTE7aT49MDtpLS0pcy53aWR0aCYmKHRoaXMudmFsdWVbaV1bMF09KHRoaXMudmFsdWVbaV1bMF0tcy54KSp0L3Mud2lkdGgrcy54KSxzLmhlaWdodCYmKHRoaXMudmFsdWVbaV1bMV09KHRoaXMudmFsdWVbaV1bMV0tcy55KSplL3MuaGVpZ2h0K3MueSk7cmV0dXJuIHRoaXN9LGJib3g6ZnVuY3Rpb24oKXtyZXR1cm4gaS5wYXJzZXIuZHJhd3x8aS5wcmVwYXJlKCksaS5wYXJzZXIucG9seS5zZXRBdHRyaWJ1dGUoXCJwb2ludHNcIix0aGlzLnRvU3RyaW5nKCkpLGkucGFyc2VyLnBvbHkuZ2V0QkJveCgpfX0pO2Zvcih2YXIgcz17TTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUueD1pLng9dFswXSxlLnk9aS55PXRbMV0sW1wiTVwiLGUueCxlLnldfSxMOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLGUueT10WzFdLFtcIkxcIix0WzBdLHRbMV1dfSxIOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLFtcIkhcIix0WzBdXX0sVjpmdW5jdGlvbih0LGUpe3JldHVybiBlLnk9dFswXSxbXCJWXCIsdFswXV19LEM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbNF0sZS55PXRbNV0sW1wiQ1wiLHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdXX0sUzpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFsyXSxlLnk9dFszXSxbXCJTXCIsdFswXSx0WzFdLHRbMl0sdFszXV19LFE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMl0sZS55PXRbM10sW1wiUVwiLHRbMF0sdFsxXSx0WzJdLHRbM11dfSxUOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLGUueT10WzFdLFtcIlRcIix0WzBdLHRbMV1dfSxaOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS54PWkueCxlLnk9aS55LFtcIlpcIl19LEE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbNV0sZS55PXRbNl0sW1wiQVwiLHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdLHRbNl1dfX0sYT1cIm1saHZxdGNzYXpcIi5zcGxpdChcIlwiKSxyPTAsbj1hLmxlbmd0aDtyPG47KytyKXNbYVtyXV09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSxhKXtpZihcIkhcIj09dCllWzBdPWVbMF0raS54O2Vsc2UgaWYoXCJWXCI9PXQpZVswXT1lWzBdK2kueTtlbHNlIGlmKFwiQVwiPT10KWVbNV09ZVs1XStpLngsZVs2XT1lWzZdK2kueTtlbHNlIGZvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuOysrcillW3JdPWVbcl0rKHIlMj9pLnk6aS54KTtyZXR1cm4gc1t0XShlLGksYSl9fShhW3JdLnRvVXBwZXJDYXNlKCkpO2kuUGF0aEFycmF5PWZ1bmN0aW9uKHQsZSl7aS5BcnJheS5jYWxsKHRoaXMsdCxlfHxbW1wiTVwiLDAsMF1dKX0saS5QYXRoQXJyYXkucHJvdG90eXBlPW5ldyBpLkFycmF5LGkuUGF0aEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1pLlBhdGhBcnJheSxpLmV4dGVuZChpLlBhdGhBcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10Lmxlbmd0aCxzPVwiXCI7ZTxpO2UrKylzKz10W2VdWzBdLG51bGwhPXRbZV1bMV0mJihzKz10W2VdWzFdLG51bGwhPXRbZV1bMl0mJihzKz1cIiBcIixzKz10W2VdWzJdLG51bGwhPXRbZV1bM10mJihzKz1cIiBcIixzKz10W2VdWzNdLHMrPVwiIFwiLHMrPXRbZV1bNF0sbnVsbCE9dFtlXVs1XSYmKHMrPVwiIFwiLHMrPXRbZV1bNV0scys9XCIgXCIscys9dFtlXVs2XSxudWxsIT10W2VdWzddJiYocys9XCIgXCIscys9dFtlXVs3XSkpKSkpO3JldHVybiBzK1wiIFwifSh0aGlzLnZhbHVlKX0sbW92ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYmJveCgpO2lmKHQtPWkueCxlLT1pLnksIWlzTmFOKHQpJiYhaXNOYU4oZSkpZm9yKHZhciBzLGE9dGhpcy52YWx1ZS5sZW5ndGgtMTthPj0wO2EtLSlcIk1cIj09KHM9dGhpcy52YWx1ZVthXVswXSl8fFwiTFwiPT1zfHxcIlRcIj09cz8odGhpcy52YWx1ZVthXVsxXSs9dCx0aGlzLnZhbHVlW2FdWzJdKz1lKTpcIkhcIj09cz90aGlzLnZhbHVlW2FdWzFdKz10OlwiVlwiPT1zP3RoaXMudmFsdWVbYV1bMV0rPWU6XCJDXCI9PXN8fFwiU1wiPT1zfHxcIlFcIj09cz8odGhpcy52YWx1ZVthXVsxXSs9dCx0aGlzLnZhbHVlW2FdWzJdKz1lLHRoaXMudmFsdWVbYV1bM10rPXQsdGhpcy52YWx1ZVthXVs0XSs9ZSxcIkNcIj09cyYmKHRoaXMudmFsdWVbYV1bNV0rPXQsdGhpcy52YWx1ZVthXVs2XSs9ZSkpOlwiQVwiPT1zJiYodGhpcy52YWx1ZVthXVs2XSs9dCx0aGlzLnZhbHVlW2FdWzddKz1lKTtyZXR1cm4gdGhpc30sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpLHMsYT10aGlzLmJib3goKTtmb3IoaT10aGlzLnZhbHVlLmxlbmd0aC0xO2k+PTA7aS0tKVwiTVwiPT0ocz10aGlzLnZhbHVlW2ldWzBdKXx8XCJMXCI9PXN8fFwiVFwiPT1zPyh0aGlzLnZhbHVlW2ldWzFdPSh0aGlzLnZhbHVlW2ldWzFdLWEueCkqdC9hLndpZHRoK2EueCx0aGlzLnZhbHVlW2ldWzJdPSh0aGlzLnZhbHVlW2ldWzJdLWEueSkqZS9hLmhlaWdodCthLnkpOlwiSFwiPT1zP3RoaXMudmFsdWVbaV1bMV09KHRoaXMudmFsdWVbaV1bMV0tYS54KSp0L2Eud2lkdGgrYS54OlwiVlwiPT1zP3RoaXMudmFsdWVbaV1bMV09KHRoaXMudmFsdWVbaV1bMV0tYS55KSplL2EuaGVpZ2h0K2EueTpcIkNcIj09c3x8XCJTXCI9PXN8fFwiUVwiPT1zPyh0aGlzLnZhbHVlW2ldWzFdPSh0aGlzLnZhbHVlW2ldWzFdLWEueCkqdC9hLndpZHRoK2EueCx0aGlzLnZhbHVlW2ldWzJdPSh0aGlzLnZhbHVlW2ldWzJdLWEueSkqZS9hLmhlaWdodCthLnksdGhpcy52YWx1ZVtpXVszXT0odGhpcy52YWx1ZVtpXVszXS1hLngpKnQvYS53aWR0aCthLngsdGhpcy52YWx1ZVtpXVs0XT0odGhpcy52YWx1ZVtpXVs0XS1hLnkpKmUvYS5oZWlnaHQrYS55LFwiQ1wiPT1zJiYodGhpcy52YWx1ZVtpXVs1XT0odGhpcy52YWx1ZVtpXVs1XS1hLngpKnQvYS53aWR0aCthLngsdGhpcy52YWx1ZVtpXVs2XT0odGhpcy52YWx1ZVtpXVs2XS1hLnkpKmUvYS5oZWlnaHQrYS55KSk6XCJBXCI9PXMmJih0aGlzLnZhbHVlW2ldWzFdPXRoaXMudmFsdWVbaV1bMV0qdC9hLndpZHRoLHRoaXMudmFsdWVbaV1bMl09dGhpcy52YWx1ZVtpXVsyXSplL2EuaGVpZ2h0LHRoaXMudmFsdWVbaV1bNl09KHRoaXMudmFsdWVbaV1bNl0tYS54KSp0L2Eud2lkdGgrYS54LHRoaXMudmFsdWVbaV1bN109KHRoaXMudmFsdWVbaV1bN10tYS55KSplL2EuaGVpZ2h0K2EueSk7cmV0dXJuIHRoaXN9LGVxdWFsQ29tbWFuZHM6ZnVuY3Rpb24odCl7dmFyIGUscyxhO2Zvcih0PW5ldyBpLlBhdGhBcnJheSh0KSxhPXRoaXMudmFsdWUubGVuZ3RoPT09dC52YWx1ZS5sZW5ndGgsZT0wLHM9dGhpcy52YWx1ZS5sZW5ndGg7YSYmZTxzO2UrKylhPXRoaXMudmFsdWVbZV1bMF09PT10LnZhbHVlW2VdWzBdO3JldHVybiBhfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgaS5QYXRoQXJyYXkodCksdGhpcy5lcXVhbENvbW1hbmRzKHQpP3RoaXMuZGVzdGluYXRpb249dDp0aGlzLmRlc3RpbmF0aW9uPW51bGwsdGhpc30sYXQ6ZnVuY3Rpb24odCl7aWYoIXRoaXMuZGVzdGluYXRpb24pcmV0dXJuIHRoaXM7dmFyIGUscyxhLHIsbj10aGlzLnZhbHVlLG89dGhpcy5kZXN0aW5hdGlvbi52YWx1ZSxsPVtdLGg9bmV3IGkuUGF0aEFycmF5O2ZvcihlPTAscz1uLmxlbmd0aDtlPHM7ZSsrKXtmb3IobFtlXT1bbltlXVswXV0sYT0xLHI9bltlXS5sZW5ndGg7YTxyO2ErKylsW2VdW2FdPW5bZV1bYV0rKG9bZV1bYV0tbltlXVthXSkqdDtcIkFcIj09PWxbZV1bMF0mJihsW2VdWzRdPSsoMCE9bFtlXVs0XSksbFtlXVs1XT0rKDAhPWxbZV1bNV0pKX1yZXR1cm4gaC52YWx1ZT1sLGh9LHBhcnNlOmZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBpLlBhdGhBcnJheSlyZXR1cm4gdC52YWx1ZU9mKCk7dmFyIGUsYT17TToyLEw6MixIOjEsVjoxLEM6NixTOjQsUTo0LFQ6MixBOjcsWjowfTt0PVwic3RyaW5nXCI9PXR5cGVvZiB0P3QucmVwbGFjZShpLnJlZ2V4Lm51bWJlcnNXaXRoRG90cyxsKS5yZXBsYWNlKGkucmVnZXgucGF0aExldHRlcnMsXCIgJCYgXCIpLnJlcGxhY2UoaS5yZWdleC5oeXBoZW4sXCIkMSAtXCIpLnRyaW0oKS5zcGxpdChpLnJlZ2V4LmRlbGltaXRlcik6dC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm5bXS5jb25jYXQuY2FsbCh0LGUpfSxbXSk7dmFyIHI9W10sbj1uZXcgaS5Qb2ludCxvPW5ldyBpLlBvaW50LGg9MCxjPXQubGVuZ3RoO2Rve2kucmVnZXguaXNQYXRoTGV0dGVyLnRlc3QodFtoXSk/KGU9dFtoXSwrK2gpOlwiTVwiPT1lP2U9XCJMXCI6XCJtXCI9PWUmJihlPVwibFwiKSxyLnB1c2goc1tlXS5jYWxsKG51bGwsdC5zbGljZShoLGgrPWFbZS50b1VwcGVyQ2FzZSgpXSkubWFwKHBhcnNlRmxvYXQpLG4sbykpfXdoaWxlKGM+aCk7cmV0dXJuIHJ9LGJib3g6ZnVuY3Rpb24oKXtyZXR1cm4gaS5wYXJzZXIuZHJhd3x8aS5wcmVwYXJlKCksaS5wYXJzZXIucGF0aC5zZXRBdHRyaWJ1dGUoXCJkXCIsdGhpcy50b1N0cmluZygpKSxpLnBhcnNlci5wYXRoLmdldEJCb3goKX19KSxpLk51bWJlcj1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dGhpcy52YWx1ZT0wLHRoaXMudW5pdD1lfHxcIlwiLFwibnVtYmVyXCI9PXR5cGVvZiB0P3RoaXMudmFsdWU9aXNOYU4odCk/MDppc0Zpbml0ZSh0KT90OnQ8MD8tMy40ZTM4OjMuNGUzODpcInN0cmluZ1wiPT10eXBlb2YgdD8oZT10Lm1hdGNoKGkucmVnZXgubnVtYmVyQW5kVW5pdCkpJiYodGhpcy52YWx1ZT1wYXJzZUZsb2F0KGVbMV0pLFwiJVwiPT1lWzVdP3RoaXMudmFsdWUvPTEwMDpcInNcIj09ZVs1XSYmKHRoaXMudmFsdWUqPTFlMyksdGhpcy51bml0PWVbNV0pOnQgaW5zdGFuY2VvZiBpLk51bWJlciYmKHRoaXMudmFsdWU9dC52YWx1ZU9mKCksdGhpcy51bml0PXQudW5pdCl9LGV4dGVuZDp7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4oXCIlXCI9PXRoaXMudW5pdD9+figxZTgqdGhpcy52YWx1ZSkvMWU2Olwic1wiPT10aGlzLnVuaXQ/dGhpcy52YWx1ZS8xZTM6dGhpcy52YWx1ZSkrdGhpcy51bml0fSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBsdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGkuTnVtYmVyKHQpLG5ldyBpLk51bWJlcih0aGlzK3QsdGhpcy51bml0fHx0LnVuaXQpfSxtaW51czpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgaS5OdW1iZXIodCksbmV3IGkuTnVtYmVyKHRoaXMtdCx0aGlzLnVuaXR8fHQudW5pdCl9LHRpbWVzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBpLk51bWJlcih0KSxuZXcgaS5OdW1iZXIodGhpcyp0LHRoaXMudW5pdHx8dC51bml0KX0sZGl2aWRlOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBpLk51bWJlcih0KSxuZXcgaS5OdW1iZXIodGhpcy90LHRoaXMudW5pdHx8dC51bml0KX0sdG86ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGkuTnVtYmVyKHRoaXMpO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiYoZS51bml0PXQpLGV9LG1vcnBoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBpLk51bWJlcih0KSx0LnJlbGF0aXZlJiYodGhpcy5kZXN0aW5hdGlvbi52YWx1ZSs9dGhpcy52YWx1ZSksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/bmV3IGkuTnVtYmVyKHRoaXMuZGVzdGluYXRpb24pLm1pbnVzKHRoaXMpLnRpbWVzKHQpLnBsdXModGhpcyk6dGhpc319fSksaS5FbGVtZW50PWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5fc3Ryb2tlPWkuZGVmYXVsdHMuYXR0cnMuc3Ryb2tlLHRoaXMuX2V2ZW50PW51bGwsdGhpcy5kb209e30sKHRoaXMubm9kZT10KSYmKHRoaXMudHlwZT10Lm5vZGVOYW1lLHRoaXMubm9kZS5pbnN0YW5jZT10aGlzLHRoaXMuX3N0cm9rZT10LmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKXx8dGhpcy5fc3Ryb2tlKX0sZXh0ZW5kOnt4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ4XCIsdCl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInlcIix0KX0sY3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy54KCkrdGhpcy53aWR0aCgpLzI6dGhpcy54KHQtdGhpcy53aWR0aCgpLzIpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnkoKSt0aGlzLmhlaWdodCgpLzI6dGhpcy55KHQtdGhpcy5oZWlnaHQoKS8yKX0sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLngodCkueShlKX0sY2VudGVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3godCkuY3koZSl9LHdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ3aWR0aFwiLHQpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImhlaWdodFwiLHQpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIHM9dSh0aGlzLHQsZSk7cmV0dXJuIHRoaXMud2lkdGgobmV3IGkuTnVtYmVyKHMud2lkdGgpKS5oZWlnaHQobmV3IGkuTnVtYmVyKHMuaGVpZ2h0KSl9LGNsb25lOmZ1bmN0aW9uKHQpe3RoaXMud3JpdGVEYXRhVG9Eb20oKTt2YXIgZT14KHRoaXMubm9kZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gdD90LmFkZChlKTp0aGlzLmFmdGVyKGUpLGV9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUVsZW1lbnQodGhpcyksdGhpc30scmVwbGFjZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hZnRlcih0KS5yZW1vdmUoKSx0fSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gdC5wdXQodGhpcyl9LHB1dEluOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZCh0aGlzKX0saWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIsdCl9LGluc2lkZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYmJveCgpO3JldHVybiB0PmkueCYmZT5pLnkmJnQ8aS54K2kud2lkdGgmJmU8aS55K2kuaGVpZ2h0fSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGUoXCJkaXNwbGF5XCIsXCJcIil9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIixcIm5vbmVcIil9LHZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm5cIm5vbmVcIiE9dGhpcy5zdHlsZShcImRpc3BsYXlcIil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIpfSxjbGFzc2VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hdHRyKFwiY2xhc3NcIik7cmV0dXJuIG51bGw9PXQ/W106dC50cmltKCkuc3BsaXQoaS5yZWdleC5kZWxpbWl0ZXIpfSxoYXNDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4tMSE9dGhpcy5jbGFzc2VzKCkuaW5kZXhPZih0KX0sYWRkQ2xhc3M6ZnVuY3Rpb24odCl7aWYoIXRoaXMuaGFzQ2xhc3ModCkpe3ZhciBlPXRoaXMuY2xhc3NlcygpO2UucHVzaCh0KSx0aGlzLmF0dHIoXCJjbGFzc1wiLGUuam9pbihcIiBcIikpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNDbGFzcyh0KSYmdGhpcy5hdHRyKFwiY2xhc3NcIix0aGlzLmNsYXNzZXMoKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPXR9KS5qb2luKFwiIFwiKSksdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzQ2xhc3ModCk/dGhpcy5yZW1vdmVDbGFzcyh0KTp0aGlzLmFkZENsYXNzKHQpfSxyZWZlcmVuY2U6ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHRoaXMuYXR0cih0KSl9LHBhcmVudDpmdW5jdGlvbihlKXt2YXIgcz10aGlzO2lmKCFzLm5vZGUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtpZihzPWkuYWRvcHQocy5ub2RlLnBhcmVudE5vZGUpLCFlKXJldHVybiBzO2Zvcig7cyYmcy5ub2RlIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50Oyl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGU/cy5tYXRjaGVzKGUpOnMgaW5zdGFuY2VvZiBlKXJldHVybiBzO2lmKCFzLm5vZGUucGFyZW50Tm9kZXx8XCIjZG9jdW1lbnRcIj09cy5ub2RlLnBhcmVudE5vZGUubm9kZU5hbWUpcmV0dXJuIG51bGw7cz1pLmFkb3B0KHMubm9kZS5wYXJlbnROb2RlKX19LGRvYzpmdW5jdGlvbigpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaS5Eb2M/dGhpczp0aGlzLnBhcmVudChpLkRvYyl9LHBhcmVudHM6ZnVuY3Rpb24odCl7dmFyIGU9W10saT10aGlzO2Rve2lmKCEoaT1pLnBhcmVudCh0KSl8fCFpLm5vZGUpYnJlYWs7ZS5wdXNoKGkpfXdoaWxlKGkucGFyZW50KTtyZXR1cm4gZX0sbWF0Y2hlczpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4odC5tYXRjaGVzfHx0Lm1hdGNoZXNTZWxlY3Rvcnx8dC5tc01hdGNoZXNTZWxlY3Rvcnx8dC5tb3pNYXRjaGVzU2VsZWN0b3J8fHQud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHx0Lm9NYXRjaGVzU2VsZWN0b3IpLmNhbGwodCxlKX0odGhpcy5ub2RlLHQpfSxuYXRpdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlfSxzdmc6ZnVuY3Rpb24odCl7dmFyIHM9ZS5jcmVhdGVFbGVtZW50KFwic3ZnXCIpO2lmKCEodCYmdGhpcyBpbnN0YW5jZW9mIGkuUGFyZW50KSlyZXR1cm4gcy5hcHBlbmRDaGlsZCh0PWUuY3JlYXRlRWxlbWVudChcInN2Z1wiKSksdGhpcy53cml0ZURhdGFUb0RvbSgpLHQuYXBwZW5kQ2hpbGQodGhpcy5ub2RlLmNsb25lTm9kZSghMCkpLHMuaW5uZXJIVE1MLnJlcGxhY2UoL148c3ZnPi8sXCJcIikucmVwbGFjZSgvPFxcL3N2Zz4kLyxcIlwiKTtzLmlubmVySFRNTD1cIjxzdmc+XCIrdC5yZXBsYWNlKC9cXG4vLFwiXCIpLnJlcGxhY2UoLzwoW1xcdzotXSspKFtePF0rPylcXC8+L2csXCI8JDEkMj48LyQxPlwiKStcIjwvc3ZnPlwiO2Zvcih2YXIgYT0wLHI9cy5maXJzdENoaWxkLmNoaWxkTm9kZXMubGVuZ3RoO2E8cjthKyspdGhpcy5ub2RlLmFwcGVuZENoaWxkKHMuZmlyc3RDaGlsZC5maXJzdENoaWxkKTtyZXR1cm4gdGhpc30sd3JpdGVEYXRhVG9Eb206ZnVuY3Rpb24oKXsodGhpcy5lYWNofHx0aGlzLmxpbmVzKSYmKHRoaXMuZWFjaD90aGlzOnRoaXMubGluZXMoKSkuZWFjaChmdW5jdGlvbigpe3RoaXMud3JpdGVEYXRhVG9Eb20oKX0pO3JldHVybiB0aGlzLm5vZGUucmVtb3ZlQXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSxPYmplY3Qua2V5cyh0aGlzLmRvbSkubGVuZ3RoJiZ0aGlzLm5vZGUuc2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiLEpTT04uc3RyaW5naWZ5KHRoaXMuZG9tKSksdGhpc30sc2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb209dCx0aGlzfSxpczpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV9KHRoaXMsdCl9fX0pLGkuZWFzaW5nPXtcIi1cIjpmdW5jdGlvbih0KXtyZXR1cm4gdH0sXCI8PlwiOmZ1bmN0aW9uKHQpe3JldHVybi1NYXRoLmNvcyh0Kk1hdGguUEkpLzIrLjV9LFwiPlwiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpbih0Kk1hdGguUEkvMil9LFwiPFwiOmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGguY29zKHQqTWF0aC5QSS8yKX19LGkubW9ycGg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscyl7cmV0dXJuIG5ldyBpLk1vcnBoT2JqKGUscykuYXQodCl9fSxpLlNpdHVhdGlvbj1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuaW5pdD0hMSx0aGlzLnJldmVyc2VkPSExLHRoaXMucmV2ZXJzaW5nPSExLHRoaXMuZHVyYXRpb249bmV3IGkuTnVtYmVyKHQuZHVyYXRpb24pLnZhbHVlT2YoKSx0aGlzLmRlbGF5PW5ldyBpLk51bWJlcih0LmRlbGF5KS52YWx1ZU9mKCksdGhpcy5zdGFydD0rbmV3IERhdGUrdGhpcy5kZWxheSx0aGlzLmZpbmlzaD10aGlzLnN0YXJ0K3RoaXMuZHVyYXRpb24sdGhpcy5lYXNlPXQuZWFzZSx0aGlzLmxvb3A9MCx0aGlzLmxvb3BzPSExLHRoaXMuYW5pbWF0aW9ucz17fSx0aGlzLmF0dHJzPXt9LHRoaXMuc3R5bGVzPXt9LHRoaXMudHJhbnNmb3Jtcz1bXSx0aGlzLm9uY2U9e319fSksaS5GWD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3RhcmdldD10LHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzLmFjdGl2ZT0hMSx0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXMucGF1c2VkPSExLHRoaXMubGFzdFBvcz0wLHRoaXMucG9zPTAsdGhpcy5hYnNQb3M9MCx0aGlzLl9zcGVlZD0xfSxleHRlbmQ6e2FuaW1hdGU6ZnVuY3Rpb24odCxlLHMpe1wib2JqZWN0XCI9PT1fdHlwZW9mKHQpJiYoZT10LmVhc2Uscz10LmRlbGF5LHQ9dC5kdXJhdGlvbik7dmFyIGE9bmV3IGkuU2l0dWF0aW9uKHtkdXJhdGlvbjp0fHwxZTMsZGVsYXk6c3x8MCxlYXNlOmkuZWFzaW5nW2V8fFwiLVwiXXx8ZX0pO3JldHVybiB0aGlzLnF1ZXVlKGEpLHRoaXN9LGRlbGF5OmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBpLlNpdHVhdGlvbih7ZHVyYXRpb246dCxkZWxheTowLGVhc2U6aS5lYXNpbmdbXCItXCJdfSk7cmV0dXJuIHRoaXMucXVldWUoZSl9LHRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdCBpbnN0YW5jZW9mIGkuRWxlbWVudD8odGhpcy5fdGFyZ2V0PXQsdGhpcyk6dGhpcy5fdGFyZ2V0fSx0aW1lVG9BYnNQb3M6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy5zaXR1YXRpb24uc3RhcnQpLyh0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCl9LGFic1Bvc1RvVGltZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQqdCt0aGlzLnNpdHVhdGlvbi5zdGFydH0sc3RhcnRBbmltRnJhbWU6ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmFuaW1hdGlvbkZyYW1lPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dGhpcy5zdGVwKCl9LmJpbmQodGhpcykpfSxzdG9wQW5pbUZyYW1lOmZ1bmN0aW9uKCl7dC5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lKX0sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5hY3RpdmUmJnRoaXMuc2l0dWF0aW9uJiYodGhpcy5hY3RpdmU9ITAsdGhpcy5zdGFydEN1cnJlbnQoKSksdGhpc30sc3RhcnRDdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9uLnN0YXJ0PStuZXcgRGF0ZSt0aGlzLnNpdHVhdGlvbi5kZWxheS90aGlzLl9zcGVlZCx0aGlzLnNpdHVhdGlvbi5maW5pc2g9dGhpcy5zaXR1YXRpb24uc3RhcnQrdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQsdGhpcy5pbml0QW5pbWF0aW9ucygpLnN0ZXAoKX0scXVldWU6ZnVuY3Rpb24odCl7cmV0dXJuKFwiZnVuY3Rpb25cIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlNpdHVhdGlvbikmJnRoaXMuc2l0dWF0aW9ucy5wdXNoKHQpLHRoaXMuc2l0dWF0aW9ufHwodGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCkpLHRoaXN9LGRlcXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9wKCksdGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCksdGhpcy5zaXR1YXRpb24mJih0aGlzLnNpdHVhdGlvbiBpbnN0YW5jZW9mIGkuU2l0dWF0aW9uP3RoaXMuc3RhcnQoKTp0aGlzLnNpdHVhdGlvbi5jYWxsKHRoaXMpKSx0aGlzfSxpbml0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciB0LGUscyxhPXRoaXMuc2l0dWF0aW9uO2lmKGEuaW5pdClyZXR1cm4gdGhpcztmb3IodCBpbiBhLmFuaW1hdGlvbnMpZm9yKHM9dGhpcy50YXJnZXQoKVt0XSgpLEFycmF5LmlzQXJyYXkocyl8fChzPVtzXSksQXJyYXkuaXNBcnJheShhLmFuaW1hdGlvbnNbdF0pfHwoYS5hbmltYXRpb25zW3RdPVthLmFuaW1hdGlvbnNbdF1dKSxlPXMubGVuZ3RoO2UtLTspYS5hbmltYXRpb25zW3RdW2VdaW5zdGFuY2VvZiBpLk51bWJlciYmKHNbZV09bmV3IGkuTnVtYmVyKHNbZV0pKSxhLmFuaW1hdGlvbnNbdF1bZV09c1tlXS5tb3JwaChhLmFuaW1hdGlvbnNbdF1bZV0pO2Zvcih0IGluIGEuYXR0cnMpYS5hdHRyc1t0XT1uZXcgaS5Nb3JwaE9iaih0aGlzLnRhcmdldCgpLmF0dHIodCksYS5hdHRyc1t0XSk7Zm9yKHQgaW4gYS5zdHlsZXMpYS5zdHlsZXNbdF09bmV3IGkuTW9ycGhPYmoodGhpcy50YXJnZXQoKS5zdHlsZSh0KSxhLnN0eWxlc1t0XSk7cmV0dXJuIGEuaW5pdGlhbFRyYW5zZm9ybWF0aW9uPXRoaXMudGFyZ2V0KCkubWF0cml4aWZ5KCksYS5pbml0PSEwLHRoaXN9LGNsZWFyUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb25zPVtdLHRoaXN9LGNsZWFyQ3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXN9LHN0b3A6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmFjdGl2ZTtyZXR1cm4gdGhpcy5hY3RpdmU9ITEsZSYmdGhpcy5jbGVhclF1ZXVlKCksdCYmdGhpcy5zaXR1YXRpb24mJighaSYmdGhpcy5zdGFydEN1cnJlbnQoKSx0aGlzLmF0RW5kKCkpLHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMuY2xlYXJDdXJyZW50KCl9LHJlc2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5zaXR1YXRpb24pe3ZhciB0PXRoaXMuc2l0dWF0aW9uO3RoaXMuc3RvcCgpLHRoaXMuc2l0dWF0aW9uPXQsdGhpcy5hdFN0YXJ0KCl9cmV0dXJuIHRoaXN9LGZpbmlzaDpmdW5jdGlvbigpe2Zvcih0aGlzLnN0b3AoITAsITEpO3RoaXMuZGVxdWV1ZSgpLnNpdHVhdGlvbiYmdGhpcy5zdG9wKCEwLCExKTspO3JldHVybiB0aGlzLmNsZWFyUXVldWUoKS5jbGVhckN1cnJlbnQoKSx0aGlzfSxhdFN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXQoMCwhMCl9LGF0RW5kOmZ1bmN0aW9uKCl7cmV0dXJuITA9PT10aGlzLnNpdHVhdGlvbi5sb29wcyYmKHRoaXMuc2l0dWF0aW9uLmxvb3BzPXRoaXMuc2l0dWF0aW9uLmxvb3ArMSksXCJudW1iZXJcIj09dHlwZW9mIHRoaXMuc2l0dWF0aW9uLmxvb3BzP3RoaXMuYXQodGhpcy5zaXR1YXRpb24ubG9vcHMsITApOnRoaXMuYXQoMSwhMCl9LGF0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQ7cmV0dXJuIHRoaXMuYWJzUG9zPXQsZXx8KHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYodGhpcy5hYnNQb3M9MS10aGlzLmFic1BvcyksdGhpcy5hYnNQb3MrPXRoaXMuc2l0dWF0aW9uLmxvb3ApLHRoaXMuc2l0dWF0aW9uLnN0YXJ0PStuZXcgRGF0ZS10aGlzLmFic1BvcyppLHRoaXMuc2l0dWF0aW9uLmZpbmlzaD10aGlzLnNpdHVhdGlvbi5zdGFydCtpLHRoaXMuc3RlcCghMCl9LHNwZWVkOmZ1bmN0aW9uKHQpe3JldHVybiAwPT09dD90aGlzLnBhdXNlKCk6dD8odGhpcy5fc3BlZWQ9dCx0aGlzLmF0KHRoaXMuYWJzUG9zLCEwKSk6dGhpcy5fc3BlZWR9LGxvb3A6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmxhc3QoKTtyZXR1cm4gaS5sb29wcz1udWxsPT10fHx0LGkubG9vcD0wLGUmJihpLnJldmVyc2luZz0hMCksdGhpc30scGF1c2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXVzZWQ9ITAsdGhpcy5zdG9wQW5pbUZyYW1lKCksdGhpc30scGxheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhdXNlZD8odGhpcy5wYXVzZWQ9ITEsdGhpcy5hdCh0aGlzLmFic1BvcywhMCkpOnRoaXN9LHJldmVyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0KCk7cmV0dXJuIGUucmV2ZXJzZWQ9dm9pZCAwPT09dD8hZS5yZXZlcnNlZDp0LHRoaXN9LHByb2dyZXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0P3RoaXMuc2l0dWF0aW9uLmVhc2UodGhpcy5wb3MpOnRoaXMucG9zfSxhZnRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3QoKTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vbihcImZpbmlzaGVkLmZ4XCIsZnVuY3Rpb24gaShzKXtzLmRldGFpbC5zaXR1YXRpb249PWUmJih0LmNhbGwodGhpcyxlKSx0aGlzLm9mZihcImZpbmlzaGVkLmZ4XCIsaSkpfSksdGhpcy5fY2FsbFN0YXJ0KCl9LGR1cmluZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3QoKSxzPWZ1bmN0aW9uKHMpe3MuZGV0YWlsLnNpdHVhdGlvbj09ZSYmdC5jYWxsKHRoaXMscy5kZXRhaWwucG9zLGkubW9ycGgocy5kZXRhaWwucG9zKSxzLmRldGFpbC5lYXNlZCxlKX07cmV0dXJuIHRoaXMudGFyZ2V0KCkub2ZmKFwiZHVyaW5nLmZ4XCIscykub24oXCJkdXJpbmcuZnhcIixzKSx0aGlzLmFmdGVyKGZ1bmN0aW9uKCl7dGhpcy5vZmYoXCJkdXJpbmcuZnhcIixzKX0pLHRoaXMuX2NhbGxTdGFydCgpfSxhZnRlckFsbDpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbiBlKGkpe3QuY2FsbCh0aGlzKSx0aGlzLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIsZSl9O3JldHVybiB0aGlzLnRhcmdldCgpLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIsZSkub24oXCJhbGxmaW5pc2hlZC5meFwiLGUpLHRoaXMuX2NhbGxTdGFydCgpfSxkdXJpbmdBbGw6ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oZSl7dC5jYWxsKHRoaXMsZS5kZXRhaWwucG9zLGkubW9ycGgoZS5kZXRhaWwucG9zKSxlLmRldGFpbC5lYXNlZCxlLmRldGFpbC5zaXR1YXRpb24pfTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoXCJkdXJpbmcuZnhcIixlKS5vbihcImR1cmluZy5meFwiLGUpLHRoaXMuYWZ0ZXJBbGwoZnVuY3Rpb24oKXt0aGlzLm9mZihcImR1cmluZy5meFwiLGUpfSksdGhpcy5fY2FsbFN0YXJ0KCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb25zLmxlbmd0aD90aGlzLnNpdHVhdGlvbnNbdGhpcy5zaXR1YXRpb25zLmxlbmd0aC0xXTp0aGlzLnNpdHVhdGlvbn0sYWRkOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5sYXN0KClbaXx8XCJhbmltYXRpb25zXCJdW3RdPWUsdGhpcy5fY2FsbFN0YXJ0KCl9LHN0ZXA6ZnVuY3Rpb24odCl7dmFyIGUsaSxzOyh0fHwodGhpcy5hYnNQb3M9dGhpcy50aW1lVG9BYnNQb3MoK25ldyBEYXRlKSksITEhPT10aGlzLnNpdHVhdGlvbi5sb29wcyk/KGU9TWF0aC5tYXgodGhpcy5hYnNQb3MsMCksaT1NYXRoLmZsb29yKGUpLCEwPT09dGhpcy5zaXR1YXRpb24ubG9vcHN8fGk8dGhpcy5zaXR1YXRpb24ubG9vcHM/KHRoaXMucG9zPWUtaSxzPXRoaXMuc2l0dWF0aW9uLmxvb3AsdGhpcy5zaXR1YXRpb24ubG9vcD1pKToodGhpcy5hYnNQb3M9dGhpcy5zaXR1YXRpb24ubG9vcHMsdGhpcy5wb3M9MSxzPXRoaXMuc2l0dWF0aW9uLmxvb3AtMSx0aGlzLnNpdHVhdGlvbi5sb29wPXRoaXMuc2l0dWF0aW9uLmxvb3BzKSx0aGlzLnNpdHVhdGlvbi5yZXZlcnNpbmcmJih0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZD10aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCE9Qm9vbGVhbigodGhpcy5zaXR1YXRpb24ubG9vcC1zKSUyKSkpOih0aGlzLmFic1Bvcz1NYXRoLm1pbih0aGlzLmFic1BvcywxKSx0aGlzLnBvcz10aGlzLmFic1Bvcyk7dGhpcy5wb3M8MCYmKHRoaXMucG9zPTApLHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYodGhpcy5wb3M9MS10aGlzLnBvcyk7dmFyIGE9dGhpcy5zaXR1YXRpb24uZWFzZSh0aGlzLnBvcyk7Zm9yKHZhciByIGluIHRoaXMuc2l0dWF0aW9uLm9uY2Upcj50aGlzLmxhc3RQb3MmJnI8PWEmJih0aGlzLnNpdHVhdGlvbi5vbmNlW3JdLmNhbGwodGhpcy50YXJnZXQoKSx0aGlzLnBvcyxhKSxkZWxldGUgdGhpcy5zaXR1YXRpb24ub25jZVtyXSk7cmV0dXJuIHRoaXMuYWN0aXZlJiZ0aGlzLnRhcmdldCgpLmZpcmUoXCJkdXJpbmdcIix7cG9zOnRoaXMucG9zLGVhc2VkOmEsZng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbj8odGhpcy5lYWNoQXQoKSwxPT10aGlzLnBvcyYmIXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkfHx0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCYmMD09dGhpcy5wb3M/KHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMudGFyZ2V0KCkuZmlyZShcImZpbmlzaGVkXCIse2Z4OnRoaXMsc2l0dWF0aW9uOnRoaXMuc2l0dWF0aW9ufSksdGhpcy5zaXR1YXRpb25zLmxlbmd0aHx8KHRoaXMudGFyZ2V0KCkuZmlyZShcImFsbGZpbmlzaGVkXCIpLHRoaXMuc2l0dWF0aW9ucy5sZW5ndGh8fCh0aGlzLnRhcmdldCgpLm9mZihcIi5meFwiKSx0aGlzLmFjdGl2ZT0hMSkpLHRoaXMuYWN0aXZlP3RoaXMuZGVxdWV1ZSgpOnRoaXMuY2xlYXJDdXJyZW50KCkpOiF0aGlzLnBhdXNlZCYmdGhpcy5hY3RpdmUmJnRoaXMuc3RhcnRBbmltRnJhbWUoKSx0aGlzLmxhc3RQb3M9YSx0aGlzKTp0aGlzfSxlYWNoQXQ6ZnVuY3Rpb24oKXt2YXIgdCxlLHMsYT10aGlzLHI9dGhpcy50YXJnZXQoKSxuPXRoaXMuc2l0dWF0aW9uO2Zvcih0IGluIG4uYW5pbWF0aW9ucylzPVtdLmNvbmNhdChuLmFuaW1hdGlvbnNbdF0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KG4uZWFzZShhLnBvcyksYS5wb3MpOnR9KSxyW3RdLmFwcGx5KHIscyk7Zm9yKHQgaW4gbi5hdHRycylzPVt0XS5jb25jYXQobi5hdHRyc1t0XSkubWFwKGZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiZ0LmF0P3QuYXQobi5lYXNlKGEucG9zKSxhLnBvcyk6dH0pLHIuYXR0ci5hcHBseShyLHMpO2Zvcih0IGluIG4uc3R5bGVzKXM9W3RdLmNvbmNhdChuLnN0eWxlc1t0XSkubWFwKGZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiZ0LmF0P3QuYXQobi5lYXNlKGEucG9zKSxhLnBvcyk6dH0pLHIuc3R5bGUuYXBwbHkocixzKTtpZihuLnRyYW5zZm9ybXMubGVuZ3RoKXtmb3Iocz1uLmluaXRpYWxUcmFuc2Zvcm1hdGlvbix0PTAsZT1uLnRyYW5zZm9ybXMubGVuZ3RoO3Q8ZTt0Kyspe3ZhciBvPW4udHJhbnNmb3Jtc1t0XTtvIGluc3RhbmNlb2YgaS5NYXRyaXg/cz1vLnJlbGF0aXZlP3MubXVsdGlwbHkoKG5ldyBpLk1hdHJpeCkubW9ycGgobykuYXQobi5lYXNlKHRoaXMucG9zKSkpOnMubW9ycGgobykuYXQobi5lYXNlKHRoaXMucG9zKSk6KG8ucmVsYXRpdmV8fG8udW5kbyhzLmV4dHJhY3QoKSkscz1zLm11bHRpcGx5KG8uYXQobi5lYXNlKHRoaXMucG9zKSkpKX1yLm1hdHJpeChzKX1yZXR1cm4gdGhpc30sb25jZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy5sYXN0KCk7cmV0dXJuIGl8fCh0PXMuZWFzZSh0KSkscy5vbmNlW3RdPWUsdGhpc30sX2NhbGxTdGFydDpmdW5jdGlvbigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5zdGFydCgpfS5iaW5kKHRoaXMpLDApLHRoaXN9fSxwYXJlbnQ6aS5FbGVtZW50LGNvbnN0cnVjdDp7YW5pbWF0ZTpmdW5jdGlvbih0LGUscyl7cmV0dXJuKHRoaXMuZnh8fCh0aGlzLmZ4PW5ldyBpLkZYKHRoaXMpKSkuYW5pbWF0ZSh0LGUscyl9LGRlbGF5OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLmZ4fHwodGhpcy5meD1uZXcgaS5GWCh0aGlzKSkpLmRlbGF5KHQpfSxzdG9wOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZnguc3RvcCh0LGUpLHRoaXN9LGZpbmlzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZ4JiZ0aGlzLmZ4LmZpbmlzaCgpLHRoaXN9LHBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZngucGF1c2UoKSx0aGlzfSxwbGF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZngucGxheSgpLHRoaXN9LHNwZWVkOmZ1bmN0aW9uKHQpe2lmKHRoaXMuZngpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuZnguc3BlZWQoKTt0aGlzLmZ4LnNwZWVkKHQpfXJldHVybiB0aGlzfX19KSxpLk1vcnBoT2JqPWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5Db2xvci5pc0NvbG9yKGUpP25ldyBpLkNvbG9yKHQpLm1vcnBoKGUpOmkucmVnZXguZGVsaW1pdGVyLnRlc3QodCk/aS5yZWdleC5wYXRoTGV0dGVycy50ZXN0KHQpP25ldyBpLlBhdGhBcnJheSh0KS5tb3JwaChlKTpuZXcgaS5BcnJheSh0KS5tb3JwaChlKTppLnJlZ2V4Lm51bWJlckFuZFVuaXQudGVzdChlKT9uZXcgaS5OdW1iZXIodCkubW9ycGgoZSk6KHRoaXMudmFsdWU9dCx2b2lkKHRoaXMuZGVzdGluYXRpb249ZSkpfSxleHRlbmQ6e2F0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU8MT90aGlzLnZhbHVlOnRoaXMuZGVzdGluYXRpb259LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX19fSksaS5leHRlbmQoaS5GWCx7YXR0cjpmdW5jdGlvbih0LGUsaSl7aWYoXCJvYmplY3RcIj09PV90eXBlb2YodCkpZm9yKHZhciBzIGluIHQpdGhpcy5hdHRyKHMsdFtzXSk7ZWxzZSB0aGlzLmFkZCh0LGUsXCJhdHRyc1wiKTtyZXR1cm4gdGhpc30sc3R5bGU6ZnVuY3Rpb24odCxlKXtpZihcIm9iamVjdFwiPT09X3R5cGVvZih0KSlmb3IodmFyIGkgaW4gdCl0aGlzLnN0eWxlKGksdFtpXSk7ZWxzZSB0aGlzLmFkZCh0LGUsXCJzdHlsZXNcIik7cmV0dXJuIHRoaXN9LHg6ZnVuY3Rpb24odCxlKXtpZih0aGlzLnRhcmdldCgpaW5zdGFuY2VvZiBpLkcpcmV0dXJuIHRoaXMudHJhbnNmb3JtKHt4OnR9LGUpLHRoaXM7dmFyIHM9bmV3IGkuTnVtYmVyKHQpO3JldHVybiBzLnJlbGF0aXZlPWUsdGhpcy5hZGQoXCJ4XCIscyl9LHk6ZnVuY3Rpb24odCxlKXtpZih0aGlzLnRhcmdldCgpaW5zdGFuY2VvZiBpLkcpcmV0dXJuIHRoaXMudHJhbnNmb3JtKHt5OnR9LGUpLHRoaXM7dmFyIHM9bmV3IGkuTnVtYmVyKHQpO3JldHVybiBzLnJlbGF0aXZlPWUsdGhpcy5hZGQoXCJ5XCIscyl9LGN4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFkZChcImN4XCIsbmV3IGkuTnVtYmVyKHQpKX0sY3k6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRkKFwiY3lcIixuZXcgaS5OdW1iZXIodCkpfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueCh0KS55KGUpfSxjZW50ZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jeCh0KS5jeShlKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBzO3RoaXMudGFyZ2V0KClpbnN0YW5jZW9mIGkuVGV4dD90aGlzLmF0dHIoXCJmb250LXNpemVcIix0KToodCYmZXx8KHM9dGhpcy50YXJnZXQoKS5iYm94KCkpLHR8fCh0PXMud2lkdGgvcy5oZWlnaHQqZSksZXx8KGU9cy5oZWlnaHQvcy53aWR0aCp0KSx0aGlzLmFkZChcIndpZHRoXCIsbmV3IGkuTnVtYmVyKHQpKS5hZGQoXCJoZWlnaHRcIixuZXcgaS5OdW1iZXIoZSkpKTtyZXR1cm4gdGhpc30sd2lkdGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRkKFwid2lkdGhcIixuZXcgaS5OdW1iZXIodCkpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRkKFwiaGVpZ2h0XCIsbmV3IGkuTnVtYmVyKHQpKX0scGxvdDpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gND09YXJndW1lbnRzLmxlbmd0aD90aGlzLnBsb3QoW3QsZSxpLHNdKTp0aGlzLmFkZChcInBsb3RcIixuZXcodGhpcy50YXJnZXQoKS5tb3JwaEFycmF5KSh0KSl9LGxlYWRpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGFyZ2V0KCkubGVhZGluZz90aGlzLmFkZChcImxlYWRpbmdcIixuZXcgaS5OdW1iZXIodCkpOnRoaXN9LHZpZXdib3g6ZnVuY3Rpb24odCxlLHMsYSl7cmV0dXJuIHRoaXMudGFyZ2V0KClpbnN0YW5jZW9mIGkuQ29udGFpbmVyJiZ0aGlzLmFkZChcInZpZXdib3hcIixuZXcgaS5WaWV3Qm94KHQsZSxzLGEpKSx0aGlzfSx1cGRhdGU6ZnVuY3Rpb24odCl7aWYodGhpcy50YXJnZXQoKWluc3RhbmNlb2YgaS5TdG9wKXtpZihcIm51bWJlclwiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGkuTnVtYmVyKXJldHVybiB0aGlzLnVwZGF0ZSh7b2Zmc2V0OmFyZ3VtZW50c1swXSxjb2xvcjphcmd1bWVudHNbMV0sb3BhY2l0eTphcmd1bWVudHNbMl19KTtudWxsIT10Lm9wYWNpdHkmJnRoaXMuYXR0cihcInN0b3Atb3BhY2l0eVwiLHQub3BhY2l0eSksbnVsbCE9dC5jb2xvciYmdGhpcy5hdHRyKFwic3RvcC1jb2xvclwiLHQuY29sb3IpLG51bGwhPXQub2Zmc2V0JiZ0aGlzLmF0dHIoXCJvZmZzZXRcIix0Lm9mZnNldCl9cmV0dXJuIHRoaXN9fSksaS5Cb3g9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUscyxhKXtpZighKFwib2JqZWN0XCIhPT1fdHlwZW9mKHQpfHx0IGluc3RhbmNlb2YgaS5FbGVtZW50KSlyZXR1cm4gaS5Cb3guY2FsbCh0aGlzLG51bGwhPXQubGVmdD90LmxlZnQ6dC54LG51bGwhPXQudG9wP3QudG9wOnQueSx0LndpZHRoLHQuaGVpZ2h0KTs0PT1hcmd1bWVudHMubGVuZ3RoJiYodGhpcy54PXQsdGhpcy55PWUsdGhpcy53aWR0aD1zLHRoaXMuaGVpZ2h0PWEpLG0odGhpcyl9LGV4dGVuZDp7bWVyZ2U6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IHRoaXMuY29uc3RydWN0b3I7cmV0dXJuIGUueD1NYXRoLm1pbih0aGlzLngsdC54KSxlLnk9TWF0aC5taW4odGhpcy55LHQueSksZS53aWR0aD1NYXRoLm1heCh0aGlzLngrdGhpcy53aWR0aCx0LngrdC53aWR0aCktZS54LGUuaGVpZ2h0PU1hdGgubWF4KHRoaXMueSt0aGlzLmhlaWdodCx0LnkrdC5oZWlnaHQpLWUueSxtKGUpfSx0cmFuc2Zvcm06ZnVuY3Rpb24odCl7dmFyIGUscz0xLzAsYT0tMS8wLHI9MS8wLG49LTEvMDtyZXR1cm5bbmV3IGkuUG9pbnQodGhpcy54LHRoaXMueSksbmV3IGkuUG9pbnQodGhpcy54Mix0aGlzLnkpLG5ldyBpLlBvaW50KHRoaXMueCx0aGlzLnkyKSxuZXcgaS5Qb2ludCh0aGlzLngyLHRoaXMueTIpXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2U9ZS50cmFuc2Zvcm0odCkscz1NYXRoLm1pbihzLGUueCksYT1NYXRoLm1heChhLGUueCkscj1NYXRoLm1pbihyLGUueSksbj1NYXRoLm1heChuLGUueSl9KSwoZT1uZXcgdGhpcy5jb25zdHJ1Y3RvcikueD1zLGUud2lkdGg9YS1zLGUueT1yLGUuaGVpZ2h0PW4tcixtKGUpLGV9fX0pLGkuQkJveD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe2lmKGkuQm94LmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSx0IGluc3RhbmNlb2YgaS5FbGVtZW50KXt2YXIgczt0cnl7aWYoIWUuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKXtmb3IodmFyIGE9dC5ub2RlO2EucGFyZW50Tm9kZTspYT1hLnBhcmVudE5vZGU7aWYoYSE9ZSl0aHJvdyBuZXcgRXJyb3IoXCJFbGVtZW50IG5vdCBpbiB0aGUgZG9tXCIpfXM9dC5ub2RlLmdldEJCb3goKX1jYXRjaChlKXtpZih0IGluc3RhbmNlb2YgaS5TaGFwZSl7aS5wYXJzZXIuZHJhd3x8aS5wcmVwYXJlKCk7dmFyIHI9dC5jbG9uZShpLnBhcnNlci5kcmF3Lmluc3RhbmNlKS5zaG93KCk7cz1yLm5vZGUuZ2V0QkJveCgpLHIucmVtb3ZlKCl9ZWxzZSBzPXt4OnQubm9kZS5jbGllbnRMZWZ0LHk6dC5ub2RlLmNsaWVudFRvcCx3aWR0aDp0Lm5vZGUuY2xpZW50V2lkdGgsaGVpZ2h0OnQubm9kZS5jbGllbnRIZWlnaHR9fWkuQm94LmNhbGwodGhpcyxzKX19LGluaGVyaXQ6aS5Cb3gscGFyZW50OmkuRWxlbWVudCxjb25zdHJ1Y3Q6e2Jib3g6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkuQkJveCh0aGlzKX19fSksaS5CQm94LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1pLkJCb3gsaS5leHRlbmQoaS5FbGVtZW50LHt0Ym94OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybihcIlVzZSBvZiBUQm94IGlzIGRlcHJlY2F0ZWQgYW5kIG1hcHBlZCB0byBSQm94LiBVc2UgLnJib3goKSBpbnN0ZWFkLlwiKSx0aGlzLnJib3godGhpcy5kb2MoKSl9fSksaS5SQm94PWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7aS5Cb3guYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpLHQgaW5zdGFuY2VvZiBpLkVsZW1lbnQmJmkuQm94LmNhbGwodGhpcyx0Lm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfSxpbmhlcml0OmkuQm94LHBhcmVudDppLkVsZW1lbnQsZXh0ZW5kOnthZGRPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54Kz10LnBhZ2VYT2Zmc2V0LHRoaXMueSs9dC5wYWdlWU9mZnNldCx0aGlzfX0sY29uc3RydWN0OntyYm94OmZ1bmN0aW9uKHQpe3JldHVybiB0P25ldyBpLlJCb3godGhpcykudHJhbnNmb3JtKHQuc2NyZWVuQ1RNKCkuaW52ZXJzZSgpKTpuZXcgaS5SQm94KHRoaXMpLmFkZE9mZnNldCgpfX19KSxpLlJCb3gucHJvdG90eXBlLmNvbnN0cnVjdG9yPWkuUkJveCxpLk1hdHJpeD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3ZhciBlLHM9ZihbMSwwLDAsMSwwLDBdKTtmb3IodD10IGluc3RhbmNlb2YgaS5FbGVtZW50P3QubWF0cml4aWZ5KCk6XCJzdHJpbmdcIj09dHlwZW9mIHQ/Zih0LnNwbGl0KGkucmVnZXguZGVsaW1pdGVyKS5tYXAocGFyc2VGbG9hdCkpOjY9PWFyZ3VtZW50cy5sZW5ndGg/ZihbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOkFycmF5LmlzQXJyYXkodCk/Zih0KTpcIm9iamVjdFwiPT09X3R5cGVvZih0KT90OnMsZT12Lmxlbmd0aC0xO2U+PTA7LS1lKXRoaXNbdltlXV09bnVsbCE9dFt2W2VdXT90W3ZbZV1dOnNbdltlXV19LGV4dGVuZDp7ZXh0cmFjdDpmdW5jdGlvbigpe3ZhciB0PWcodGhpcywwLDEpLGU9Zyh0aGlzLDEsMCkscz0xODAvTWF0aC5QSSpNYXRoLmF0YW4yKHQueSx0LngpLTkwO3JldHVybnt4OnRoaXMuZSx5OnRoaXMuZix0cmFuc2Zvcm1lZFg6KHRoaXMuZSpNYXRoLmNvcyhzKk1hdGguUEkvMTgwKSt0aGlzLmYqTWF0aC5zaW4ocypNYXRoLlBJLzE4MCkpL01hdGguc3FydCh0aGlzLmEqdGhpcy5hK3RoaXMuYip0aGlzLmIpLHRyYW5zZm9ybWVkWToodGhpcy5mKk1hdGguY29zKHMqTWF0aC5QSS8xODApK3RoaXMuZSpNYXRoLnNpbigtcypNYXRoLlBJLzE4MCkpL01hdGguc3FydCh0aGlzLmMqdGhpcy5jK3RoaXMuZCp0aGlzLmQpLHNrZXdYOi1zLHNrZXdZOjE4MC9NYXRoLlBJKk1hdGguYXRhbjIoZS55LGUueCksc2NhbGVYOk1hdGguc3FydCh0aGlzLmEqdGhpcy5hK3RoaXMuYip0aGlzLmIpLHNjYWxlWTpNYXRoLnNxcnQodGhpcy5jKnRoaXMuYyt0aGlzLmQqdGhpcy5kKSxyb3RhdGlvbjpzLGE6dGhpcy5hLGI6dGhpcy5iLGM6dGhpcy5jLGQ6dGhpcy5kLGU6dGhpcy5lLGY6dGhpcy5mLG1hdHJpeDpuZXcgaS5NYXRyaXgodGhpcyl9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgaS5NYXRyaXgodGhpcyl9LG1vcnBoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBpLk1hdHJpeCh0KSx0aGlzfSxhdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj9uZXcgaS5NYXRyaXgoe2E6dGhpcy5hKyh0aGlzLmRlc3RpbmF0aW9uLmEtdGhpcy5hKSp0LGI6dGhpcy5iKyh0aGlzLmRlc3RpbmF0aW9uLmItdGhpcy5iKSp0LGM6dGhpcy5jKyh0aGlzLmRlc3RpbmF0aW9uLmMtdGhpcy5jKSp0LGQ6dGhpcy5kKyh0aGlzLmRlc3RpbmF0aW9uLmQtdGhpcy5kKSp0LGU6dGhpcy5lKyh0aGlzLmRlc3RpbmF0aW9uLmUtdGhpcy5lKSp0LGY6dGhpcy5mKyh0aGlzLmRlc3RpbmF0aW9uLmYtdGhpcy5mKSp0fSk6dGhpc30sbXVsdGlwbHk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBpLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLm11bHRpcGx5KGZ1bmN0aW9uKHQpe3QgaW5zdGFuY2VvZiBpLk1hdHJpeHx8KHQ9bmV3IGkuTWF0cml4KHQpKTtyZXR1cm4gdH0odCkubmF0aXZlKCkpKX0saW52ZXJzZTpmdW5jdGlvbigpe3JldHVybiBuZXcgaS5NYXRyaXgodGhpcy5uYXRpdmUoKS5pbnZlcnNlKCkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGkuTWF0cml4KHRoaXMubmF0aXZlKCkudHJhbnNsYXRlKHR8fDAsZXx8MCkpfSxzY2FsZTpmdW5jdGlvbih0LGUscyxhKXtyZXR1cm4gMT09YXJndW1lbnRzLmxlbmd0aD9lPXQ6Mz09YXJndW1lbnRzLmxlbmd0aCYmKGE9cyxzPWUsZT10KSx0aGlzLmFyb3VuZChzLGEsbmV3IGkuTWF0cml4KHQsMCwwLGUsMCwwKSl9LHJvdGF0ZTpmdW5jdGlvbih0LGUscyl7cmV0dXJuIHQ9aS51dGlscy5yYWRpYW5zKHQpLHRoaXMuYXJvdW5kKGUscyxuZXcgaS5NYXRyaXgoTWF0aC5jb3ModCksTWF0aC5zaW4odCksLU1hdGguc2luKHQpLE1hdGguY29zKHQpLDAsMCkpfSxmbGlwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJ4XCI9PXQ/dGhpcy5zY2FsZSgtMSwxLGUsMCk6XCJ5XCI9PXQ/dGhpcy5zY2FsZSgxLC0xLDAsZSk6dGhpcy5zY2FsZSgtMSwtMSx0LG51bGwhPWU/ZTp0KX0sc2tldzpmdW5jdGlvbih0LGUscyxhKXtyZXR1cm4gMT09YXJndW1lbnRzLmxlbmd0aD9lPXQ6Mz09YXJndW1lbnRzLmxlbmd0aCYmKGE9cyxzPWUsZT10KSx0PWkudXRpbHMucmFkaWFucyh0KSxlPWkudXRpbHMucmFkaWFucyhlKSx0aGlzLmFyb3VuZChzLGEsbmV3IGkuTWF0cml4KDEsTWF0aC50YW4oZSksTWF0aC50YW4odCksMSwwLDApKX0sc2tld1g6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnNrZXcodCwwLGUsaSl9LHNrZXdZOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5za2V3KDAsdCxlLGkpfSxhcm91bmQ6ZnVuY3Rpb24odCxlLHMpe3JldHVybiB0aGlzLm11bHRpcGx5KG5ldyBpLk1hdHJpeCgxLDAsMCwxLHR8fDAsZXx8MCkpLm11bHRpcGx5KHMpLm11bHRpcGx5KG5ldyBpLk1hdHJpeCgxLDAsMCwxLC10fHwwLC1lfHwwKSl9LG5hdGl2ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1pLnBhcnNlci5uYXRpdmUuY3JlYXRlU1ZHTWF0cml4KCksZT12Lmxlbmd0aC0xO2U+PTA7ZS0tKXRbdltlXV09dGhpc1t2W2VdXTtyZXR1cm4gdH0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm5cIm1hdHJpeChcIitiKHRoaXMuYSkrXCIsXCIrYih0aGlzLmIpK1wiLFwiK2IodGhpcy5jKStcIixcIitiKHRoaXMuZCkrXCIsXCIrYih0aGlzLmUpK1wiLFwiK2IodGhpcy5mKStcIilcIn19LHBhcmVudDppLkVsZW1lbnQsY29uc3RydWN0OntjdG06ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkuTWF0cml4KHRoaXMubm9kZS5nZXRDVE0oKSl9LHNjcmVlbkNUTTpmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBpLk5lc3RlZCl7dmFyIHQ9dGhpcy5yZWN0KDEsMSksZT10Lm5vZGUuZ2V0U2NyZWVuQ1RNKCk7cmV0dXJuIHQucmVtb3ZlKCksbmV3IGkuTWF0cml4KGUpfXJldHVybiBuZXcgaS5NYXRyaXgodGhpcy5ub2RlLmdldFNjcmVlbkNUTSgpKX19fSksaS5Qb2ludD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dmFyIGk7aT1BcnJheS5pc0FycmF5KHQpP3t4OnRbMF0seTp0WzFdfTpcIm9iamVjdFwiPT09X3R5cGVvZih0KT97eDp0LngseTp0Lnl9Om51bGwhPXQ/e3g6dCx5Om51bGwhPWU/ZTp0fTp7eDowLHk6MH0sdGhpcy54PWkueCx0aGlzLnk9aS55fSxleHRlbmQ6e2Nsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpLlBvaW50KHRoaXMpfSxtb3JwaDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBpLlBvaW50KHQsZSksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/bmV3IGkuUG9pbnQoe3g6dGhpcy54Kyh0aGlzLmRlc3RpbmF0aW9uLngtdGhpcy54KSp0LHk6dGhpcy55Kyh0aGlzLmRlc3RpbmF0aW9uLnktdGhpcy55KSp0fSk6dGhpc30sbmF0aXZlOmZ1bmN0aW9uKCl7dmFyIHQ9aS5wYXJzZXIubmF0aXZlLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIHQueD10aGlzLngsdC55PXRoaXMueSx0fSx0cmFuc2Zvcm06ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBpLlBvaW50KHRoaXMubmF0aXZlKCkubWF0cml4VHJhbnNmb3JtKHQubmF0aXZlKCkpKX19fSksaS5leHRlbmQoaS5FbGVtZW50LHtwb2ludDpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgaS5Qb2ludCh0LGUpLnRyYW5zZm9ybSh0aGlzLnNjcmVlbkNUTSgpLmludmVyc2UoKSl9fSksaS5leHRlbmQoaS5FbGVtZW50LHthdHRyOmZ1bmN0aW9uKHQsZSxzKXtpZihudWxsPT10KXtmb3IodD17fSxzPShlPXRoaXMubm9kZS5hdHRyaWJ1dGVzKS5sZW5ndGgtMTtzPj0wO3MtLSl0W2Vbc10ubm9kZU5hbWVdPWkucmVnZXguaXNOdW1iZXIudGVzdChlW3NdLm5vZGVWYWx1ZSk/cGFyc2VGbG9hdChlW3NdLm5vZGVWYWx1ZSk6ZVtzXS5ub2RlVmFsdWU7cmV0dXJuIHR9aWYoXCJvYmplY3RcIj09PV90eXBlb2YodCkpZm9yKGUgaW4gdCl0aGlzLmF0dHIoZSx0W2VdKTtlbHNlIGlmKG51bGw9PT1lKXRoaXMubm9kZS5yZW1vdmVBdHRyaWJ1dGUodCk7ZWxzZXtpZihudWxsPT1lKXJldHVybiBudWxsPT0oZT10aGlzLm5vZGUuZ2V0QXR0cmlidXRlKHQpKT9pLmRlZmF1bHRzLmF0dHJzW3RdOmkucmVnZXguaXNOdW1iZXIudGVzdChlKT9wYXJzZUZsb2F0KGUpOmU7XCJzdHJva2Utd2lkdGhcIj09dD90aGlzLmF0dHIoXCJzdHJva2VcIixwYXJzZUZsb2F0KGUpPjA/dGhpcy5fc3Ryb2tlOm51bGwpOlwic3Ryb2tlXCI9PXQmJih0aGlzLl9zdHJva2U9ZSksXCJmaWxsXCIhPXQmJlwic3Ryb2tlXCIhPXR8fChpLnJlZ2V4LmlzSW1hZ2UudGVzdChlKSYmKGU9dGhpcy5kb2MoKS5kZWZzKCkuaW1hZ2UoZSwwLDApKSxlIGluc3RhbmNlb2YgaS5JbWFnZSYmKGU9dGhpcy5kb2MoKS5kZWZzKCkucGF0dGVybigwLDAsZnVuY3Rpb24oKXt0aGlzLmFkZChlKX0pKSksXCJudW1iZXJcIj09dHlwZW9mIGU/ZT1uZXcgaS5OdW1iZXIoZSk6aS5Db2xvci5pc0NvbG9yKGUpP2U9bmV3IGkuQ29sb3IoZSk6QXJyYXkuaXNBcnJheShlKSYmKGU9bmV3IGkuQXJyYXkoZSkpLFwibGVhZGluZ1wiPT10P3RoaXMubGVhZGluZyYmdGhpcy5sZWFkaW5nKGUpOlwic3RyaW5nXCI9PXR5cGVvZiBzP3RoaXMubm9kZS5zZXRBdHRyaWJ1dGVOUyhzLHQsZS50b1N0cmluZygpKTp0aGlzLm5vZGUuc2V0QXR0cmlidXRlKHQsZS50b1N0cmluZygpKSwhdGhpcy5yZWJ1aWxkfHxcImZvbnQtc2l6ZVwiIT10JiZcInhcIiE9dHx8dGhpcy5yZWJ1aWxkKHQsZSl9cmV0dXJuIHRoaXN9fSksaS5leHRlbmQoaS5FbGVtZW50LHt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXt2YXIgcyxhO2lmKFwib2JqZWN0XCIhPT1fdHlwZW9mKHQpKXJldHVybiBzPW5ldyBpLk1hdHJpeCh0aGlzKS5leHRyYWN0KCksXCJzdHJpbmdcIj09dHlwZW9mIHQ/c1t0XTpzO2lmKHM9bmV3IGkuTWF0cml4KHRoaXMpLGU9ISFlfHwhIXQucmVsYXRpdmUsbnVsbCE9dC5hKXM9ZT9zLm11bHRpcGx5KG5ldyBpLk1hdHJpeCh0KSk6bmV3IGkuTWF0cml4KHQpO2Vsc2UgaWYobnVsbCE9dC5yb3RhdGlvbilwKHQsdGhpcykscz1lP3Mucm90YXRlKHQucm90YXRpb24sdC5jeCx0LmN5KTpzLnJvdGF0ZSh0LnJvdGF0aW9uLXMuZXh0cmFjdCgpLnJvdGF0aW9uLHQuY3gsdC5jeSk7ZWxzZSBpZihudWxsIT10LnNjYWxlfHxudWxsIT10LnNjYWxlWHx8bnVsbCE9dC5zY2FsZVkpe2lmKHAodCx0aGlzKSx0LnNjYWxlWD1udWxsIT10LnNjYWxlP3Quc2NhbGU6bnVsbCE9dC5zY2FsZVg/dC5zY2FsZVg6MSx0LnNjYWxlWT1udWxsIT10LnNjYWxlP3Quc2NhbGU6bnVsbCE9dC5zY2FsZVk/dC5zY2FsZVk6MSwhZSl7dmFyIHI9cy5leHRyYWN0KCk7dC5zY2FsZVg9MSp0LnNjYWxlWC9yLnNjYWxlWCx0LnNjYWxlWT0xKnQuc2NhbGVZL3Iuc2NhbGVZfXM9cy5zY2FsZSh0LnNjYWxlWCx0LnNjYWxlWSx0LmN4LHQuY3kpfWVsc2UgaWYobnVsbCE9dC5za2V3fHxudWxsIT10LnNrZXdYfHxudWxsIT10LnNrZXdZKXtpZihwKHQsdGhpcyksdC5za2V3WD1udWxsIT10LnNrZXc/dC5za2V3Om51bGwhPXQuc2tld1g/dC5za2V3WDowLHQuc2tld1k9bnVsbCE9dC5za2V3P3Quc2tldzpudWxsIT10LnNrZXdZP3Quc2tld1k6MCwhZSl7cj1zLmV4dHJhY3QoKTtzPXMubXVsdGlwbHkoKG5ldyBpLk1hdHJpeCkuc2tldyhyLnNrZXdYLHIuc2tld1ksdC5jeCx0LmN5KS5pbnZlcnNlKCkpfXM9cy5za2V3KHQuc2tld1gsdC5za2V3WSx0LmN4LHQuY3kpfWVsc2UgdC5mbGlwPyhcInhcIj09dC5mbGlwfHxcInlcIj09dC5mbGlwP3Qub2Zmc2V0PW51bGw9PXQub2Zmc2V0P3RoaXMuYmJveCgpW1wiY1wiK3QuZmxpcF06dC5vZmZzZXQ6bnVsbD09dC5vZmZzZXQ/KGE9dGhpcy5iYm94KCksdC5mbGlwPWEuY3gsdC5vZmZzZXQ9YS5jeSk6dC5mbGlwPXQub2Zmc2V0LHM9KG5ldyBpLk1hdHJpeCkuZmxpcCh0LmZsaXAsdC5vZmZzZXQpKTpudWxsPT10LngmJm51bGw9PXQueXx8KGU/cz1zLnRyYW5zbGF0ZSh0LngsdC55KToobnVsbCE9dC54JiYocy5lPXQueCksbnVsbCE9dC55JiYocy5mPXQueSkpKTtyZXR1cm4gdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIscyl9fSksaS5leHRlbmQoaS5GWCx7dHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7dmFyIHMsYSxyPXRoaXMudGFyZ2V0KCk7cmV0dXJuXCJvYmplY3RcIiE9PV90eXBlb2YodCk/KHM9bmV3IGkuTWF0cml4KHIpLmV4dHJhY3QoKSxcInN0cmluZ1wiPT10eXBlb2YgdD9zW3RdOnMpOihlPSEhZXx8ISF0LnJlbGF0aXZlLG51bGwhPXQuYT9zPW5ldyBpLk1hdHJpeCh0KTpudWxsIT10LnJvdGF0aW9uPyhwKHQscikscz1uZXcgaS5Sb3RhdGUodC5yb3RhdGlvbix0LmN4LHQuY3kpKTpudWxsIT10LnNjYWxlfHxudWxsIT10LnNjYWxlWHx8bnVsbCE9dC5zY2FsZVk/KHAodCxyKSx0LnNjYWxlWD1udWxsIT10LnNjYWxlP3Quc2NhbGU6bnVsbCE9dC5zY2FsZVg/dC5zY2FsZVg6MSx0LnNjYWxlWT1udWxsIT10LnNjYWxlP3Quc2NhbGU6bnVsbCE9dC5zY2FsZVk/dC5zY2FsZVk6MSxzPW5ldyBpLlNjYWxlKHQuc2NhbGVYLHQuc2NhbGVZLHQuY3gsdC5jeSkpOm51bGwhPXQuc2tld1h8fG51bGwhPXQuc2tld1k/KHAodCxyKSx0LnNrZXdYPW51bGwhPXQuc2tld1g/dC5za2V3WDowLHQuc2tld1k9bnVsbCE9dC5za2V3WT90LnNrZXdZOjAscz1uZXcgaS5Ta2V3KHQuc2tld1gsdC5za2V3WSx0LmN4LHQuY3kpKTp0LmZsaXA/KFwieFwiPT10LmZsaXB8fFwieVwiPT10LmZsaXA/dC5vZmZzZXQ9bnVsbD09dC5vZmZzZXQ/ci5iYm94KClbXCJjXCIrdC5mbGlwXTp0Lm9mZnNldDpudWxsPT10Lm9mZnNldD8oYT1yLmJib3goKSx0LmZsaXA9YS5jeCx0Lm9mZnNldD1hLmN5KTp0LmZsaXA9dC5vZmZzZXQscz0obmV3IGkuTWF0cml4KS5mbGlwKHQuZmxpcCx0Lm9mZnNldCkpOm51bGw9PXQueCYmbnVsbD09dC55fHwocz1uZXcgaS5UcmFuc2xhdGUodC54LHQueSkpLHM/KHMucmVsYXRpdmU9ZSx0aGlzLmxhc3QoKS50cmFuc2Zvcm1zLnB1c2gocyksdGhpcy5fY2FsbFN0YXJ0KCkpOnRoaXMpfX0pLGkuZXh0ZW5kKGkuRWxlbWVudCx7dW50cmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIsbnVsbCl9LG1hdHJpeGlmeTpmdW5jdGlvbigpe3JldHVybih0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIil8fFwiXCIpLnNwbGl0KGkucmVnZXgudHJhbnNmb3Jtcykuc2xpY2UoMCwtMSkubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPXQudHJpbSgpLnNwbGl0KFwiKFwiKTtyZXR1cm5bZVswXSxlWzFdLnNwbGl0KGkucmVnZXguZGVsaW1pdGVyKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KV19KS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm5cIm1hdHJpeFwiPT1lWzBdP3QubXVsdGlwbHkoZihlWzFdKSk6dFtlWzBdXS5hcHBseSh0LGVbMV0pfSxuZXcgaS5NYXRyaXgpfSx0b1BhcmVudDpmdW5jdGlvbih0KXtpZih0aGlzPT10KXJldHVybiB0aGlzO3ZhciBlPXRoaXMuc2NyZWVuQ1RNKCksaT10LnNjcmVlbkNUTSgpLmludmVyc2UoKTtyZXR1cm4gdGhpcy5hZGRUbyh0KS51bnRyYW5zZm9ybSgpLnRyYW5zZm9ybShpLm11bHRpcGx5KGUpKSx0aGlzfSx0b0RvYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvUGFyZW50KHRoaXMuZG9jKCkpfX0pLGkuVHJhbnNmb3JtYXRpb249aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmXCJib29sZWFuXCIhPXR5cGVvZiBlKXJldHVybiB0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBpPTAscz10aGlzLmFyZ3VtZW50cy5sZW5ndGg7aTxzOysraSl0aGlzW3RoaXMuYXJndW1lbnRzW2ldXT10W2ldO2Vsc2UgaWYoXCJvYmplY3RcIj09PV90eXBlb2YodCkpZm9yKGk9MCxzPXRoaXMuYXJndW1lbnRzLmxlbmd0aDtpPHM7KytpKXRoaXNbdGhpcy5hcmd1bWVudHNbaV1dPXRbdGhpcy5hcmd1bWVudHNbaV1dO3RoaXMuaW52ZXJzZWQ9ITEsITA9PT1lJiYodGhpcy5pbnZlcnNlZD0hMCl9LGV4dGVuZDp7YXJndW1lbnRzOltdLG1ldGhvZDpcIlwiLGF0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxzPTAsYT10aGlzLmFyZ3VtZW50cy5sZW5ndGg7czxhOysrcyllLnB1c2godGhpc1t0aGlzLmFyZ3VtZW50c1tzXV0pO3ZhciByPXRoaXMuX3VuZG98fG5ldyBpLk1hdHJpeDtyZXR1cm4gcj0obmV3IGkuTWF0cml4KS5tb3JwaChpLk1hdHJpeC5wcm90b3R5cGVbdGhpcy5tZXRob2RdLmFwcGx5KHIsZSkpLmF0KHQpLHRoaXMuaW52ZXJzZWQ/ci5pbnZlcnNlKCk6cn0sdW5kbzpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxzPXRoaXMuYXJndW1lbnRzLmxlbmd0aDtlPHM7KytlKXRbdGhpcy5hcmd1bWVudHNbZV1dPXZvaWQgMD09PXRoaXNbdGhpcy5hcmd1bWVudHNbZV1dPzA6dFt0aGlzLmFyZ3VtZW50c1tlXV07cmV0dXJuIHQuY3g9dGhpcy5jeCx0LmN5PXRoaXMuY3ksdGhpcy5fdW5kbz1uZXcoaVtjKHRoaXMubWV0aG9kKV0pKHQsITApLmF0KDEpLHRoaXN9fX0pLGkuVHJhbnNsYXRlPWkuaW52ZW50KHtwYXJlbnQ6aS5NYXRyaXgsaW5oZXJpdDppLlRyYW5zZm9ybWF0aW9uLGNyZWF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxleHRlbmQ6e2FyZ3VtZW50czpbXCJ0cmFuc2Zvcm1lZFhcIixcInRyYW5zZm9ybWVkWVwiXSxtZXRob2Q6XCJ0cmFuc2xhdGVcIn19KSxpLlJvdGF0ZT1pLmludmVudCh7cGFyZW50OmkuTWF0cml4LGluaGVyaXQ6aS5UcmFuc2Zvcm1hdGlvbixjcmVhdGU6ZnVuY3Rpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX0sZXh0ZW5kOnthcmd1bWVudHM6W1wicm90YXRpb25cIixcImN4XCIsXCJjeVwiXSxtZXRob2Q6XCJyb3RhdGVcIixhdDpmdW5jdGlvbih0KXt2YXIgZT0obmV3IGkuTWF0cml4KS5yb3RhdGUoKG5ldyBpLk51bWJlcikubW9ycGgodGhpcy5yb3RhdGlvbi0odGhpcy5fdW5kbz90aGlzLl91bmRvLnJvdGF0aW9uOjApKS5hdCh0KSx0aGlzLmN4LHRoaXMuY3kpO3JldHVybiB0aGlzLmludmVyc2VkP2UuaW52ZXJzZSgpOmV9LHVuZG86ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3VuZG89dCx0aGlzfX19KSxpLlNjYWxlPWkuaW52ZW50KHtwYXJlbnQ6aS5NYXRyaXgsaW5oZXJpdDppLlRyYW5zZm9ybWF0aW9uLGNyZWF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxleHRlbmQ6e2FyZ3VtZW50czpbXCJzY2FsZVhcIixcInNjYWxlWVwiLFwiY3hcIixcImN5XCJdLG1ldGhvZDpcInNjYWxlXCJ9fSksaS5Ta2V3PWkuaW52ZW50KHtwYXJlbnQ6aS5NYXRyaXgsaW5oZXJpdDppLlRyYW5zZm9ybWF0aW9uLGNyZWF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxleHRlbmQ6e2FyZ3VtZW50czpbXCJza2V3WFwiLFwic2tld1lcIixcImN4XCIsXCJjeVwiXSxtZXRob2Q6XCJza2V3XCJ9fSksaS5leHRlbmQoaS5FbGVtZW50LHtzdHlsZTpmdW5jdGlvbih0LGUpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMubm9kZS5zdHlsZS5jc3NUZXh0fHxcIlwiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilpZihcIm9iamVjdFwiPT09X3R5cGVvZih0KSlmb3IoZSBpbiB0KXRoaXMuc3R5bGUoZSx0W2VdKTtlbHNle2lmKCFpLnJlZ2V4LmlzQ3NzLnRlc3QodCkpcmV0dXJuIHRoaXMubm9kZS5zdHlsZVtoKHQpXTtmb3IodD10LnNwbGl0KC9cXHMqO1xccyovKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuISF0fSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KC9cXHMqOlxccyovKX0pO2U9dC5wb3AoKTspdGhpcy5zdHlsZShlWzBdLGVbMV0pfWVsc2UgdGhpcy5ub2RlLnN0eWxlW2godCldPW51bGw9PT1lfHxpLnJlZ2V4LmlzQmxhbmsudGVzdChlKT9cIlwiOmU7cmV0dXJuIHRoaXN9fSksaS5QYXJlbnQ9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0KX0saW5oZXJpdDppLkVsZW1lbnQsZXh0ZW5kOntjaGlsZHJlbjpmdW5jdGlvbigpe3JldHVybiBpLnV0aWxzLm1hcChpLnV0aWxzLmZpbHRlclNWR0VsZW1lbnRzKHRoaXMubm9kZS5jaGlsZE5vZGVzKSxmdW5jdGlvbih0KXtyZXR1cm4gaS5hZG9wdCh0KX0pfSxhZGQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZT90aGlzLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKTp0Lm5vZGUhPXRoaXMubm9kZS5jaGlsZE5vZGVzW2VdJiZ0aGlzLm5vZGUuaW5zZXJ0QmVmb3JlKHQubm9kZSx0aGlzLm5vZGUuY2hpbGROb2Rlc1tlXSksdGhpc30scHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsZSksdH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluZGV4KHQpPj0wfSxpbmRleDpmdW5jdGlvbih0KXtyZXR1cm5bXS5zbGljZS5jYWxsKHRoaXMubm9kZS5jaGlsZE5vZGVzKS5pbmRleE9mKHQubm9kZSl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gaS5hZG9wdCh0aGlzLm5vZGUuY2hpbGROb2Rlc1t0XSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMubm9kZS5jaGlsZE5vZGVzLmxlbmd0aC0xKX0sZWFjaDpmdW5jdGlvbih0LGUpe3ZhciBzLGEscj10aGlzLmNoaWxkcmVuKCk7Zm9yKHM9MCxhPXIubGVuZ3RoO3M8YTtzKyspcltzXWluc3RhbmNlb2YgaS5FbGVtZW50JiZ0LmFwcGx5KHJbc10sW3Mscl0pLGUmJnJbc11pbnN0YW5jZW9mIGkuQ29udGFpbmVyJiZyW3NdLmVhY2godCxlKTtyZXR1cm4gdGhpc30scmVtb3ZlRWxlbWVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHQubm9kZSksdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtmb3IoO3RoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMubm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUubGFzdENoaWxkKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2RlZnMsdGhpc30sZGVmczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvYygpLmRlZnMoKX19fSksaS5leHRlbmQoaS5QYXJlbnQse3VuZ3JvdXA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PWV8fHRoaXMgaW5zdGFuY2VvZiBpLkRlZnN8fHRoaXMubm9kZT09aS5wYXJzZXIuZHJhdz90aGlzOih0PXR8fCh0aGlzIGluc3RhbmNlb2YgaS5Eb2M/dGhpczp0aGlzLnBhcmVudChpLlBhcmVudCkpLGU9ZXx8MS8wLHRoaXMuZWFjaChmdW5jdGlvbigpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaS5EZWZzP3RoaXM6dGhpcyBpbnN0YW5jZW9mIGkuUGFyZW50P3RoaXMudW5ncm91cCh0LGUtMSk6dGhpcy50b1BhcmVudCh0KX0pLHRoaXMubm9kZS5maXJzdENoaWxkfHx0aGlzLnJlbW92ZSgpLHRoaXMpfSxmbGF0dGVuOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudW5ncm91cCh0LGUpfX0pLGkuQ29udGFpbmVyPWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6aS5QYXJlbnR9KSxpLlZpZXdCb3g9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt2YXIgZSxzLGEscixuLG8sbCxoPTEsYz0xLGQ9L1srLV0/KD86XFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSg/OmVbKy1dP1xcZCspPy9naTtpZih0IGluc3RhbmNlb2YgaS5FbGVtZW50KXtmb3Iobz10LGw9dCxuPSh0LmF0dHIoXCJ2aWV3Qm94XCIpfHxcIlwiKS5tYXRjaChkKSx0LmJib3gsYT1uZXcgaS5OdW1iZXIodC53aWR0aCgpKSxyPW5ldyBpLk51bWJlcih0LmhlaWdodCgpKTtcIiVcIj09YS51bml0OyloKj1hLnZhbHVlLGE9bmV3IGkuTnVtYmVyKG8gaW5zdGFuY2VvZiBpLkRvYz9vLnBhcmVudCgpLm9mZnNldFdpZHRoOm8ucGFyZW50KCkud2lkdGgoKSksbz1vLnBhcmVudCgpO2Zvcig7XCIlXCI9PXIudW5pdDspYyo9ci52YWx1ZSxyPW5ldyBpLk51bWJlcihsIGluc3RhbmNlb2YgaS5Eb2M/bC5wYXJlbnQoKS5vZmZzZXRIZWlnaHQ6bC5wYXJlbnQoKS5oZWlnaHQoKSksbD1sLnBhcmVudCgpO3RoaXMueD0wLHRoaXMueT0wLHRoaXMud2lkdGg9YSpoLHRoaXMuaGVpZ2h0PXIqYyx0aGlzLnpvb209MSxuJiYoZT1wYXJzZUZsb2F0KG5bMF0pLHM9cGFyc2VGbG9hdChuWzFdKSxhPXBhcnNlRmxvYXQoblsyXSkscj1wYXJzZUZsb2F0KG5bM10pLHRoaXMuem9vbT10aGlzLndpZHRoL3RoaXMuaGVpZ2h0PmEvcj90aGlzLmhlaWdodC9yOnRoaXMud2lkdGgvYSx0aGlzLng9ZSx0aGlzLnk9cyx0aGlzLndpZHRoPWEsdGhpcy5oZWlnaHQ9cil9ZWxzZSB0PVwic3RyaW5nXCI9PXR5cGVvZiB0P3QubWF0Y2goZCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfSk6QXJyYXkuaXNBcnJheSh0KT90Olwib2JqZWN0XCI9PT1fdHlwZW9mKHQpP1t0LngsdC55LHQud2lkdGgsdC5oZWlnaHRdOjQ9PWFyZ3VtZW50cy5sZW5ndGg/W10uc2xpY2UuY2FsbChhcmd1bWVudHMpOlswLDAsMCwwXSx0aGlzLng9dFswXSx0aGlzLnk9dFsxXSx0aGlzLndpZHRoPXRbMl0sdGhpcy5oZWlnaHQ9dFszXX0sZXh0ZW5kOnt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLngrXCIgXCIrdGhpcy55K1wiIFwiK3RoaXMud2lkdGgrXCIgXCIrdGhpcy5oZWlnaHR9LG1vcnBoOmZ1bmN0aW9uKHQsZSxzLGEpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBpLlZpZXdCb3godCxlLHMsYSksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/bmV3IGkuVmlld0JveChbdGhpcy54Kyh0aGlzLmRlc3RpbmF0aW9uLngtdGhpcy54KSp0LHRoaXMueSsodGhpcy5kZXN0aW5hdGlvbi55LXRoaXMueSkqdCx0aGlzLndpZHRoKyh0aGlzLmRlc3RpbmF0aW9uLndpZHRoLXRoaXMud2lkdGgpKnQsdGhpcy5oZWlnaHQrKHRoaXMuZGVzdGluYXRpb24uaGVpZ2h0LXRoaXMuaGVpZ2h0KSp0XSk6dGhpc319LHBhcmVudDppLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e3ZpZXdib3g6ZnVuY3Rpb24odCxlLHMsYSl7cmV0dXJuIDA9PWFyZ3VtZW50cy5sZW5ndGg/bmV3IGkuVmlld0JveCh0aGlzKTp0aGlzLmF0dHIoXCJ2aWV3Qm94XCIsbmV3IGkuVmlld0JveCh0LGUscyxhKSl9fX0pLFtcImNsaWNrXCIsXCJkYmxjbGlja1wiLFwibW91c2Vkb3duXCIsXCJtb3VzZXVwXCIsXCJtb3VzZW92ZXJcIixcIm1vdXNlb3V0XCIsXCJtb3VzZW1vdmVcIixcInRvdWNoc3RhcnRcIixcInRvdWNobW92ZVwiLFwidG91Y2hsZWF2ZVwiLFwidG91Y2hlbmRcIixcInRvdWNoY2FuY2VsXCJdLmZvckVhY2goZnVuY3Rpb24odCl7aS5FbGVtZW50LnByb3RvdHlwZVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gaS5vbih0aGlzLm5vZGUsdCxlKSx0aGlzfX0pLGkubGlzdGVuZXJzPVtdLGkuaGFuZGxlck1hcD1bXSxpLmxpc3RlbmVySWQ9MCxpLm9uPWZ1bmN0aW9uKHQsZSxzLGEscil7dmFyIG49cy5iaW5kKGF8fHQuaW5zdGFuY2V8fHQpLG89KGkuaGFuZGxlck1hcC5pbmRleE9mKHQpKzF8fGkuaGFuZGxlck1hcC5wdXNoKHQpKS0xLGw9ZS5zcGxpdChcIi5cIilbMF0saD1lLnNwbGl0KFwiLlwiKVsxXXx8XCIqXCI7aS5saXN0ZW5lcnNbb109aS5saXN0ZW5lcnNbb118fHt9LGkubGlzdGVuZXJzW29dW2xdPWkubGlzdGVuZXJzW29dW2xdfHx7fSxpLmxpc3RlbmVyc1tvXVtsXVtoXT1pLmxpc3RlbmVyc1tvXVtsXVtoXXx8e30scy5fc3ZnanNMaXN0ZW5lcklkfHwocy5fc3ZnanNMaXN0ZW5lcklkPSsraS5saXN0ZW5lcklkKSxpLmxpc3RlbmVyc1tvXVtsXVtoXVtzLl9zdmdqc0xpc3RlbmVySWRdPW4sdC5hZGRFdmVudExpc3RlbmVyKGwsbixyfHwhMSl9LGkub2ZmPWZ1bmN0aW9uKHQsZSxzKXt2YXIgYT1pLmhhbmRsZXJNYXAuaW5kZXhPZih0KSxyPWUmJmUuc3BsaXQoXCIuXCIpWzBdLG49ZSYmZS5zcGxpdChcIi5cIilbMV0sbz1cIlwiO2lmKC0xIT1hKWlmKHMpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHMmJihzPXMuX3N2Z2pzTGlzdGVuZXJJZCksIXMpcmV0dXJuO2kubGlzdGVuZXJzW2FdW3JdJiZpLmxpc3RlbmVyc1thXVtyXVtufHxcIipcIl0mJih0LnJlbW92ZUV2ZW50TGlzdGVuZXIocixpLmxpc3RlbmVyc1thXVtyXVtufHxcIipcIl1bc10sITEpLGRlbGV0ZSBpLmxpc3RlbmVyc1thXVtyXVtufHxcIipcIl1bc10pfWVsc2UgaWYobiYmcil7aWYoaS5saXN0ZW5lcnNbYV1bcl0mJmkubGlzdGVuZXJzW2FdW3JdW25dKXtmb3IocyBpbiBpLmxpc3RlbmVyc1thXVtyXVtuXSlpLm9mZih0LFtyLG5dLmpvaW4oXCIuXCIpLHMpO2RlbGV0ZSBpLmxpc3RlbmVyc1thXVtyXVtuXX19ZWxzZSBpZihuKWZvcihlIGluIGkubGlzdGVuZXJzW2FdKWZvcihvIGluIGkubGlzdGVuZXJzW2FdW2VdKW49PT1vJiZpLm9mZih0LFtlLG5dLmpvaW4oXCIuXCIpKTtlbHNlIGlmKHIpe2lmKGkubGlzdGVuZXJzW2FdW3JdKXtmb3IobyBpbiBpLmxpc3RlbmVyc1thXVtyXSlpLm9mZih0LFtyLG9dLmpvaW4oXCIuXCIpKTtkZWxldGUgaS5saXN0ZW5lcnNbYV1bcl19fWVsc2V7Zm9yKGUgaW4gaS5saXN0ZW5lcnNbYV0paS5vZmYodCxlKTtkZWxldGUgaS5saXN0ZW5lcnNbYV0sZGVsZXRlIGkuaGFuZGxlck1hcFthXX19LGkuZXh0ZW5kKGkuRWxlbWVudCx7b246ZnVuY3Rpb24odCxlLHMsYSl7cmV0dXJuIGkub24odGhpcy5ub2RlLHQsZSxzLGEpLHRoaXN9LG9mZjpmdW5jdGlvbih0LGUpe3JldHVybiBpLm9mZih0aGlzLm5vZGUsdCxlKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKGUscyl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0LkV2ZW50P3RoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGUpOnRoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGU9bmV3IGkuQ3VzdG9tRXZlbnQoZSx7ZGV0YWlsOnMsY2FuY2VsYWJsZTohMH0pKSx0aGlzLl9ldmVudD1lLHRoaXN9LGV2ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50fX0pLGkuRGVmcz1pLmludmVudCh7Y3JlYXRlOlwiZGVmc1wiLGluaGVyaXQ6aS5Db250YWluZXJ9KSxpLkc9aS5pbnZlbnQoe2NyZWF0ZTpcImdcIixpbmhlcml0OmkuQ29udGFpbmVyLGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnRyYW5zZm9ybShcInhcIik6dGhpcy50cmFuc2Zvcm0oe3g6dC10aGlzLngoKX0sITApfSx5OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMudHJhbnNmb3JtKFwieVwiKTp0aGlzLnRyYW5zZm9ybSh7eTp0LXRoaXMueSgpfSwhMCl9LGN4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZ2JveCgpLmN4OnRoaXMueCh0LXRoaXMuZ2JveCgpLndpZHRoLzIpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmdib3goKS5jeTp0aGlzLnkodC10aGlzLmdib3goKS5oZWlnaHQvMil9LGdib3g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJib3goKSxlPXRoaXMudHJhbnNmb3JtKCk7cmV0dXJuIHQueCs9ZS54LHQueDIrPWUueCx0LmN4Kz1lLngsdC55Kz1lLnksdC55Mis9ZS55LHQuY3krPWUueSx0fX0sY29uc3RydWN0Ontncm91cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgaS5HKX19fSksaS5Eb2M9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0JiYoXCJzdmdcIj09KHQ9XCJzdHJpbmdcIj09dHlwZW9mIHQ/ZS5nZXRFbGVtZW50QnlJZCh0KTp0KS5ub2RlTmFtZT90aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0KToodGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsaS5jcmVhdGUoXCJzdmdcIikpLHQuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKSx0aGlzLnNpemUoXCIxMDAlXCIsXCIxMDAlXCIpKSx0aGlzLm5hbWVzcGFjZSgpLmRlZnMoKSl9LGluaGVyaXQ6aS5Db250YWluZXIsZXh0ZW5kOntuYW1lc3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKHt4bWxuczppLm5zLHZlcnNpb246XCIxLjFcIn0pLmF0dHIoXCJ4bWxuczp4bGlua1wiLGkueGxpbmssaS54bWxucykuYXR0cihcInhtbG5zOnN2Z2pzXCIsaS5zdmdqcyxpLnhtbG5zKX0sZGVmczpmdW5jdGlvbigpe3ZhciB0O3RoaXMuX2RlZnN8fCgodD10aGlzLm5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJkZWZzXCIpWzBdKT90aGlzLl9kZWZzPWkuYWRvcHQodCk6dGhpcy5fZGVmcz1uZXcgaS5EZWZzLHRoaXMubm9kZS5hcHBlbmRDaGlsZCh0aGlzLl9kZWZzLm5vZGUpKTtyZXR1cm4gdGhpcy5fZGVmc30scGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5wYXJlbnROb2RlJiZcIiNkb2N1bWVudFwiIT10aGlzLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZT90aGlzLm5vZGUucGFyZW50Tm9kZTpudWxsfSxzcG9mOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ub2RlLmdldFNjcmVlbkNUTSgpO3JldHVybiB0JiZ0aGlzLnN0eWxlKFwibGVmdFwiLC10LmUlMStcInB4XCIpLnN0eWxlKFwidG9wXCIsLXQuZiUxK1wicHhcIiksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkucmVtb3ZlQ2hpbGQodGhpcy5ub2RlKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2Zvcig7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpO3JldHVybiBkZWxldGUgdGhpcy5fZGVmcyxpLnBhcnNlci5kcmF3JiYhaS5wYXJzZXIuZHJhdy5wYXJlbnROb2RlJiZ0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoaS5wYXJzZXIuZHJhdyksdGhpc30sY2xvbmU6ZnVuY3Rpb24odCl7dGhpcy53cml0ZURhdGFUb0RvbSgpO3ZhciBlPXRoaXMubm9kZSxpPXgoZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gdD8odC5ub2RlfHx0KS5hcHBlbmRDaGlsZChpLm5vZGUpOmUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaS5ub2RlLGUubmV4dFNpYmxpbmcpLGl9fX0pLGkuZXh0ZW5kKGkuRWxlbWVudCx7c2libGluZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5jaGlsZHJlbigpfSxwb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmluZGV4KHRoaXMpfSxuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2libGluZ3MoKVt0aGlzLnBvc2l0aW9uKCkrMV19LHByZXZpb3VzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2libGluZ3MoKVt0aGlzLnBvc2l0aW9uKCktMV19LGZvcndhcmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBvc2l0aW9uKCkrMSxlPXRoaXMucGFyZW50KCk7cmV0dXJuIGUucmVtb3ZlRWxlbWVudCh0aGlzKS5hZGQodGhpcyx0KSxlIGluc3RhbmNlb2YgaS5Eb2MmJmUubm9kZS5hcHBlbmRDaGlsZChlLmRlZnMoKS5ub2RlKSx0aGlzfSxiYWNrd2FyZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucG9zaXRpb24oKTtyZXR1cm4gdD4wJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUVsZW1lbnQodGhpcykuYWRkKHRoaXMsdC0xKSx0aGlzfSxmcm9udDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50KCk7cmV0dXJuIHQubm9kZS5hcHBlbmRDaGlsZCh0aGlzLm5vZGUpLHQgaW5zdGFuY2VvZiBpLkRvYyYmdC5ub2RlLmFwcGVuZENoaWxkKHQuZGVmcygpLm5vZGUpLHRoaXN9LGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NpdGlvbigpPjAmJnRoaXMucGFyZW50KCkucmVtb3ZlRWxlbWVudCh0aGlzKS5hZGQodGhpcywwKSx0aGlzfSxiZWZvcmU6ZnVuY3Rpb24odCl7dC5yZW1vdmUoKTt2YXIgZT10aGlzLnBvc2l0aW9uKCk7cmV0dXJuIHRoaXMucGFyZW50KCkuYWRkKHQsZSksdGhpc30sYWZ0ZXI6ZnVuY3Rpb24odCl7dC5yZW1vdmUoKTt2YXIgZT10aGlzLnBvc2l0aW9uKCk7cmV0dXJuIHRoaXMucGFyZW50KCkuYWRkKHQsZSsxKSx0aGlzfX0pLGkuTWFzaz1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsaS5jcmVhdGUoXCJtYXNrXCIpKSx0aGlzLnRhcmdldHM9W119LGluaGVyaXQ6aS5Db250YWluZXIsZXh0ZW5kOntyZW1vdmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy50YXJnZXRzLmxlbmd0aC0xO3Q+PTA7dC0tKXRoaXMudGFyZ2V0c1t0XSYmdGhpcy50YXJnZXRzW3RdLnVubWFzaygpO3JldHVybiB0aGlzLnRhcmdldHM9W10saS5FbGVtZW50LnByb3RvdHlwZS5yZW1vdmUuY2FsbCh0aGlzKSx0aGlzfX0sY29uc3RydWN0OnttYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmcygpLnB1dChuZXcgaS5NYXNrKX19fSksaS5leHRlbmQoaS5FbGVtZW50LHttYXNrV2l0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXNrZXI9dCBpbnN0YW5jZW9mIGkuTWFzaz90OnRoaXMucGFyZW50KCkubWFzaygpLmFkZCh0KSx0aGlzLm1hc2tlci50YXJnZXRzLnB1c2godGhpcyksdGhpcy5hdHRyKFwibWFza1wiLCd1cmwoXCIjJyt0aGlzLm1hc2tlci5hdHRyKFwiaWRcIikrJ1wiKScpfSx1bm1hc2s6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMubWFza2VyLHRoaXMuYXR0cihcIm1hc2tcIixudWxsKX19KSxpLkNsaXBQYXRoPWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxpLmNyZWF0ZShcImNsaXBQYXRoXCIpKSx0aGlzLnRhcmdldHM9W119LGluaGVyaXQ6aS5Db250YWluZXIsZXh0ZW5kOntyZW1vdmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy50YXJnZXRzLmxlbmd0aC0xO3Q+PTA7dC0tKXRoaXMudGFyZ2V0c1t0XSYmdGhpcy50YXJnZXRzW3RdLnVuY2xpcCgpO3JldHVybiB0aGlzLnRhcmdldHM9W10sdGhpcy5wYXJlbnQoKS5yZW1vdmVFbGVtZW50KHRoaXMpLHRoaXN9fSxjb25zdHJ1Y3Q6e2NsaXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZzKCkucHV0KG5ldyBpLkNsaXBQYXRoKX19fSksaS5leHRlbmQoaS5FbGVtZW50LHtjbGlwV2l0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbGlwcGVyPXQgaW5zdGFuY2VvZiBpLkNsaXBQYXRoP3Q6dGhpcy5wYXJlbnQoKS5jbGlwKCkuYWRkKHQpLHRoaXMuY2xpcHBlci50YXJnZXRzLnB1c2godGhpcyksdGhpcy5hdHRyKFwiY2xpcC1wYXRoXCIsJ3VybChcIiMnK3RoaXMuY2xpcHBlci5hdHRyKFwiaWRcIikrJ1wiKScpfSx1bmNsaXA6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuY2xpcHBlcix0aGlzLmF0dHIoXCJjbGlwLXBhdGhcIixudWxsKX19KSxpLkdyYWRpZW50PWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsaS5jcmVhdGUodCtcIkdyYWRpZW50XCIpKSx0aGlzLnR5cGU9dH0saW5oZXJpdDppLkNvbnRhaW5lcixleHRlbmQ6e2F0OmZ1bmN0aW9uKHQsZSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuU3RvcCkudXBkYXRlKHQsZSxzKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsZWFyKCksXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdC5jYWxsKHRoaXMsdGhpcyksdGhpc30sZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSxzKXtyZXR1cm5cInRyYW5zZm9ybVwiPT10JiYodD1cImdyYWRpZW50VHJhbnNmb3JtXCIpLGkuQ29udGFpbmVyLnByb3RvdHlwZS5hdHRyLmNhbGwodGhpcyx0LGUscyl9fSxjb25zdHJ1Y3Q6e2dyYWRpZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGVmcygpLmdyYWRpZW50KHQsZSl9fX0pLGkuZXh0ZW5kKGkuR3JhZGllbnQsaS5GWCx7ZnJvbTpmdW5jdGlvbih0LGUpe3JldHVyblwicmFkaWFsXCI9PSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU/dGhpcy5hdHRyKHtmeDpuZXcgaS5OdW1iZXIodCksZnk6bmV3IGkuTnVtYmVyKGUpfSk6dGhpcy5hdHRyKHt4MTpuZXcgaS5OdW1iZXIodCkseTE6bmV3IGkuTnVtYmVyKGUpfSl9LHRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJyYWRpYWxcIj09KHRoaXMuX3RhcmdldHx8dGhpcykudHlwZT90aGlzLmF0dHIoe2N4Om5ldyBpLk51bWJlcih0KSxjeTpuZXcgaS5OdW1iZXIoZSl9KTp0aGlzLmF0dHIoe3gyOm5ldyBpLk51bWJlcih0KSx5MjpuZXcgaS5OdW1iZXIoZSl9KX19KSxpLmV4dGVuZChpLkRlZnMse2dyYWRpZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLkdyYWRpZW50KHQpKS51cGRhdGUoZSl9fSksaS5TdG9wPWkuaW52ZW50KHtjcmVhdGU6XCJzdG9wXCIsaW5oZXJpdDppLkVsZW1lbnQsZXh0ZW5kOnt1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuKFwibnVtYmVyXCI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgaS5OdW1iZXIpJiYodD17b2Zmc2V0OmFyZ3VtZW50c1swXSxjb2xvcjphcmd1bWVudHNbMV0sb3BhY2l0eTphcmd1bWVudHNbMl19KSxudWxsIT10Lm9wYWNpdHkmJnRoaXMuYXR0cihcInN0b3Atb3BhY2l0eVwiLHQub3BhY2l0eSksbnVsbCE9dC5jb2xvciYmdGhpcy5hdHRyKFwic3RvcC1jb2xvclwiLHQuY29sb3IpLG51bGwhPXQub2Zmc2V0JiZ0aGlzLmF0dHIoXCJvZmZzZXRcIixuZXcgaS5OdW1iZXIodC5vZmZzZXQpKSx0aGlzfX19KSxpLlBhdHRlcm49aS5pbnZlbnQoe2NyZWF0ZTpcInBhdHRlcm5cIixpbmhlcml0OmkuQ29udGFpbmVyLGV4dGVuZDp7ZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbGVhcigpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbCh0aGlzLHRoaXMpLHRoaXN9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSxzKXtyZXR1cm5cInRyYW5zZm9ybVwiPT10JiYodD1cInBhdHRlcm5UcmFuc2Zvcm1cIiksaS5Db250YWluZXIucHJvdG90eXBlLmF0dHIuY2FsbCh0aGlzLHQsZSxzKX19LGNvbnN0cnVjdDp7cGF0dGVybjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuZGVmcygpLnBhdHRlcm4odCxlLGkpfX19KSxpLmV4dGVuZChpLkRlZnMse3BhdHRlcm46ZnVuY3Rpb24odCxlLHMpe3JldHVybiB0aGlzLnB1dChuZXcgaS5QYXR0ZXJuKS51cGRhdGUocykuYXR0cih7eDowLHk6MCx3aWR0aDp0LGhlaWdodDplLHBhdHRlcm5Vbml0czpcInVzZXJTcGFjZU9uVXNlXCJ9KX19KSxpLlNoYXBlPWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6aS5FbGVtZW50fSksaS5CYXJlPWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXtpZih0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxpLmNyZWF0ZSh0KSksZSlmb3IodmFyIHMgaW4gZS5wcm90b3R5cGUpXCJmdW5jdGlvblwiPT10eXBlb2YgZS5wcm90b3R5cGVbc10mJih0aGlzW3NdPWUucHJvdG90eXBlW3NdKX0saW5oZXJpdDppLkVsZW1lbnQsZXh0ZW5kOnt3b3JkczpmdW5jdGlvbih0KXtmb3IoO3RoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMubm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUubGFzdENoaWxkKTtyZXR1cm4gdGhpcy5ub2RlLmFwcGVuZENoaWxkKGUuY3JlYXRlVGV4dE5vZGUodCkpLHRoaXN9fX0pLGkuZXh0ZW5kKGkuUGFyZW50LHtlbGVtZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLkJhcmUodCxlKSl9fSksaS5TeW1ib2w9aS5pbnZlbnQoe2NyZWF0ZTpcInN5bWJvbFwiLGluaGVyaXQ6aS5Db250YWluZXIsY29uc3RydWN0OntzeW1ib2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuU3ltYm9sKX19fSksaS5Vc2U9aS5pbnZlbnQoe2NyZWF0ZTpcInVzZVwiLGluaGVyaXQ6aS5TaGFwZSxleHRlbmQ6e2VsZW1lbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKFwiaHJlZlwiLChlfHxcIlwiKStcIiNcIit0LGkueGxpbmspfX0sY29uc3RydWN0Ont1c2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuVXNlKS5lbGVtZW50KHQsZSl9fX0pLGkuUmVjdD1pLmludmVudCh7Y3JlYXRlOlwicmVjdFwiLGluaGVyaXQ6aS5TaGFwZSxjb25zdHJ1Y3Q6e3JlY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuUmVjdCkuc2l6ZSh0LGUpfX19KSxpLkNpcmNsZT1pLmludmVudCh7Y3JlYXRlOlwiY2lyY2xlXCIsaW5oZXJpdDppLlNoYXBlLGNvbnN0cnVjdDp7Y2lyY2xlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgaS5DaXJjbGUpLnJ4KG5ldyBpLk51bWJlcih0KS5kaXZpZGUoMikpLm1vdmUoMCwwKX19fSksaS5leHRlbmQoaS5DaXJjbGUsaS5GWCx7cng6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInJcIix0KX0scnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucngodCl9fSksaS5FbGxpcHNlPWkuaW52ZW50KHtjcmVhdGU6XCJlbGxpcHNlXCIsaW5oZXJpdDppLlNoYXBlLGNvbnN0cnVjdDp7ZWxsaXBzZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgaS5FbGxpcHNlKS5zaXplKHQsZSkubW92ZSgwLDApfX19KSxpLmV4dGVuZChpLkVsbGlwc2UsaS5SZWN0LGkuRlgse3J4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJyeFwiLHQpfSxyeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwicnlcIix0KX19KSxpLmV4dGVuZChpLkNpcmNsZSxpLkVsbGlwc2Use3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5jeCgpLXRoaXMucngoKTp0aGlzLmN4KHQrdGhpcy5yeCgpKX0seTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmN5KCktdGhpcy5yeSgpOnRoaXMuY3kodCt0aGlzLnJ5KCkpfSxjeDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJjeFwiKTp0aGlzLmF0dHIoXCJjeFwiLHQpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJjeVwiKTp0aGlzLmF0dHIoXCJjeVwiLHQpfSx3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8yKnRoaXMucngoKTp0aGlzLnJ4KG5ldyBpLk51bWJlcih0KS5kaXZpZGUoMikpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/Mip0aGlzLnJ5KCk6dGhpcy5yeShuZXcgaS5OdW1iZXIodCkuZGl2aWRlKDIpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBzPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLnJ4KG5ldyBpLk51bWJlcihzLndpZHRoKS5kaXZpZGUoMikpLnJ5KG5ldyBpLk51bWJlcihzLmhlaWdodCkuZGl2aWRlKDIpKX19KSxpLkxpbmU9aS5pbnZlbnQoe2NyZWF0ZTpcImxpbmVcIixpbmhlcml0OmkuU2hhcGUsZXh0ZW5kOnthcnJheTpmdW5jdGlvbigpe3JldHVybiBuZXcgaS5Qb2ludEFycmF5KFtbdGhpcy5hdHRyKFwieDFcIiksdGhpcy5hdHRyKFwieTFcIildLFt0aGlzLmF0dHIoXCJ4MlwiKSx0aGlzLmF0dHIoXCJ5MlwiKV1dKX0scGxvdDpmdW5jdGlvbih0LGUscyxhKXtyZXR1cm4gbnVsbD09dD90aGlzLmFycmF5KCk6KHQ9dm9pZCAwIT09ZT97eDE6dCx5MTplLHgyOnMseTI6YX06bmV3IGkuUG9pbnRBcnJheSh0KS50b0xpbmUoKSx0aGlzLmF0dHIodCkpfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cih0aGlzLmFycmF5KCkubW92ZSh0LGUpLnRvTGluZSgpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkudG9MaW5lKCkpfX0sY29uc3RydWN0OntsaW5lOmZ1bmN0aW9uKHQsZSxzLGEpe3JldHVybiBpLkxpbmUucHJvdG90eXBlLnBsb3QuYXBwbHkodGhpcy5wdXQobmV3IGkuTGluZSksbnVsbCE9dD9bdCxlLHMsYV06WzAsMCwwLDBdKX19fSksaS5Qb2x5bGluZT1pLmludmVudCh7Y3JlYXRlOlwicG9seWxpbmVcIixpbmhlcml0OmkuU2hhcGUsY29uc3RydWN0Ontwb2x5bGluZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuUG9seWxpbmUpLnBsb3QodHx8bmV3IGkuUG9pbnRBcnJheSl9fX0pLGkuUG9seWdvbj1pLmludmVudCh7Y3JlYXRlOlwicG9seWdvblwiLGluaGVyaXQ6aS5TaGFwZSxjb25zdHJ1Y3Q6e3BvbHlnb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLlBvbHlnb24pLnBsb3QodHx8bmV3IGkuUG9pbnRBcnJheSl9fX0pLGkuZXh0ZW5kKGkuUG9seWxpbmUsaS5Qb2x5Z29uLHthcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheXx8KHRoaXMuX2FycmF5PW5ldyBpLlBvaW50QXJyYXkodGhpcy5hdHRyKFwicG9pbnRzXCIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKFwicG9pbnRzXCIsXCJzdHJpbmdcIj09dHlwZW9mIHQ/dDp0aGlzLl9hcnJheT1uZXcgaS5Qb2ludEFycmF5KHQpKX0sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuX2FycmF5LHRoaXN9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKFwicG9pbnRzXCIsdGhpcy5hcnJheSgpLm1vdmUodCxlKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5hdHRyKFwicG9pbnRzXCIsdGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkpfX0pLGkuZXh0ZW5kKGkuTGluZSxpLlBvbHlsaW5lLGkuUG9seWdvbix7bW9ycGhBcnJheTppLlBvaW50QXJyYXkseDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS54OnRoaXMubW92ZSh0LHRoaXMuYmJveCgpLnkpfSx5OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYmJveCgpLnk6dGhpcy5tb3ZlKHRoaXMuYmJveCgpLngsdCl9LHdpZHRoOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYmJveCgpO3JldHVybiBudWxsPT10P2Uud2lkdGg6dGhpcy5zaXplKHQsZS5oZWlnaHQpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5iYm94KCk7cmV0dXJuIG51bGw9PXQ/ZS5oZWlnaHQ6dGhpcy5zaXplKGUud2lkdGgsdCl9fSksaS5QYXRoPWkuaW52ZW50KHtjcmVhdGU6XCJwYXRoXCIsaW5oZXJpdDppLlNoYXBlLGV4dGVuZDp7bW9ycGhBcnJheTppLlBhdGhBcnJheSxhcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheXx8KHRoaXMuX2FycmF5PW5ldyBpLlBhdGhBcnJheSh0aGlzLmF0dHIoXCJkXCIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKFwiZFwiLFwic3RyaW5nXCI9PXR5cGVvZiB0P3Q6dGhpcy5fYXJyYXk9bmV3IGkuUGF0aEFycmF5KHQpKX0sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuX2FycmF5LHRoaXN9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKFwiZFwiLHRoaXMuYXJyYXkoKS5tb3ZlKHQsZSkpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYmJveCgpLng6dGhpcy5tb3ZlKHQsdGhpcy5iYm94KCkueSl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5iYm94KCkueTp0aGlzLm1vdmUodGhpcy5iYm94KCkueCx0KX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLmF0dHIoXCJkXCIsdGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkpfSx3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS53aWR0aDp0aGlzLnNpemUodCx0aGlzLmJib3goKS5oZWlnaHQpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5iYm94KCkuaGVpZ2h0OnRoaXMuc2l6ZSh0aGlzLmJib3goKS53aWR0aCx0KX19LGNvbnN0cnVjdDp7cGF0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuUGF0aCkucGxvdCh0fHxuZXcgaS5QYXRoQXJyYXkpfX19KSxpLkltYWdlPWkuaW52ZW50KHtjcmVhdGU6XCJpbWFnZVwiLGluaGVyaXQ6aS5TaGFwZSxleHRlbmQ6e2xvYWQ6ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIHRoaXM7dmFyIHM9dGhpcyxhPW5ldyB0LkltYWdlO3JldHVybiBpLm9uKGEsXCJsb2FkXCIsZnVuY3Rpb24oKXtpLm9mZihhKTt2YXIgdD1zLnBhcmVudChpLlBhdHRlcm4pO251bGwhPT10JiYoMD09cy53aWR0aCgpJiYwPT1zLmhlaWdodCgpJiZzLnNpemUoYS53aWR0aCxhLmhlaWdodCksdCYmMD09dC53aWR0aCgpJiYwPT10LmhlaWdodCgpJiZ0LnNpemUocy53aWR0aCgpLHMuaGVpZ2h0KCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHMuX2xvYWRlZCYmcy5fbG9hZGVkLmNhbGwocyx7d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQscmF0aW86YS53aWR0aC9hLmhlaWdodCx1cmw6ZX0pKX0pLGkub24oYSxcImVycm9yXCIsZnVuY3Rpb24odCl7aS5vZmYoYSksXCJmdW5jdGlvblwiPT10eXBlb2Ygcy5fZXJyb3ImJnMuX2Vycm9yLmNhbGwocyx0KX0pLHRoaXMuYXR0cihcImhyZWZcIixhLnNyYz10aGlzLnNyYz1lLGkueGxpbmspfSxsb2FkZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xvYWRlZD10LHRoaXN9LGVycm9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lcnJvcj10LHRoaXN9fSxjb25zdHJ1Y3Q6e2ltYWdlOmZ1bmN0aW9uKHQsZSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuSW1hZ2UpLmxvYWQodCkuc2l6ZShlfHwwLHN8fGV8fDApfX19KSxpLlRleHQ9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGkuY3JlYXRlKFwidGV4dFwiKSksdGhpcy5kb20ubGVhZGluZz1uZXcgaS5OdW1iZXIoMS4zKSx0aGlzLl9yZWJ1aWxkPSEwLHRoaXMuX2J1aWxkPSExLHRoaXMuYXR0cihcImZvbnQtZmFtaWx5XCIsaS5kZWZhdWx0cy5hdHRyc1tcImZvbnQtZmFtaWx5XCJdKX0saW5oZXJpdDppLlNoYXBlLGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJ4XCIpOnRoaXMuYXR0cihcInhcIix0KX0seTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmF0dHIoXCJ5XCIpLGk9XCJudW1iZXJcIj09dHlwZW9mIGU/ZS10aGlzLmJib3goKS55OjA7cmV0dXJuIG51bGw9PXQ/XCJudW1iZXJcIj09dHlwZW9mIGU/ZS1pOmU6dGhpcy5hdHRyKFwieVwiLFwibnVtYmVyXCI9PXR5cGVvZiB0LnZhbHVlT2YoKT90K2k6dCl9LGN4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYmJveCgpLmN4OnRoaXMueCh0LXRoaXMuYmJveCgpLndpZHRoLzIpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS5jeTp0aGlzLnkodC10aGlzLmJib3goKS5oZWlnaHQvMil9LHRleHQ6ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCl7dD1cIlwiO2Zvcih2YXIgZT10aGlzLm5vZGUuY2hpbGROb2RlcyxzPTAsYT1lLmxlbmd0aDtzPGE7KytzKTAhPXMmJjMhPWVbc10ubm9kZVR5cGUmJjE9PWkuYWRvcHQoZVtzXSkuZG9tLm5ld0xpbmVkJiYodCs9XCJcXG5cIiksdCs9ZVtzXS50ZXh0Q29udGVudDtyZXR1cm4gdH1pZih0aGlzLmNsZWFyKCkuYnVpbGQoITApLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpdC5jYWxsKHRoaXMsdGhpcyk7ZWxzZXtzPTA7Zm9yKHZhciByPSh0PXQuc3BsaXQoXCJcXG5cIikpLmxlbmd0aDtzPHI7cysrKXRoaXMudHNwYW4odFtzXSkubmV3TGluZSgpfXJldHVybiB0aGlzLmJ1aWxkKCExKS5yZWJ1aWxkKCl9LHNpemU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImZvbnQtc2l6ZVwiLHQpLnJlYnVpbGQoKX0sbGVhZGluZzpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmRvbS5sZWFkaW5nOih0aGlzLmRvbS5sZWFkaW5nPW5ldyBpLk51bWJlcih0KSx0aGlzLnJlYnVpbGQoKSl9LGxpbmVzOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMudGV4dFBhdGgmJnRoaXMudGV4dFBhdGgoKXx8dGhpcykubm9kZSxlPWkudXRpbHMubWFwKGkudXRpbHMuZmlsdGVyU1ZHRWxlbWVudHModC5jaGlsZE5vZGVzKSxmdW5jdGlvbih0KXtyZXR1cm4gaS5hZG9wdCh0KX0pO3JldHVybiBuZXcgaS5TZXQoZSl9LHJlYnVpbGQ6ZnVuY3Rpb24odCl7aWYoXCJib29sZWFuXCI9PXR5cGVvZiB0JiYodGhpcy5fcmVidWlsZD10KSx0aGlzLl9yZWJ1aWxkKXt2YXIgZT10aGlzLHM9MCxhPXRoaXMuZG9tLmxlYWRpbmcqbmV3IGkuTnVtYmVyKHRoaXMuYXR0cihcImZvbnQtc2l6ZVwiKSk7dGhpcy5saW5lcygpLmVhY2goZnVuY3Rpb24oKXt0aGlzLmRvbS5uZXdMaW5lZCYmKGUudGV4dFBhdGgoKXx8dGhpcy5hdHRyKFwieFwiLGUuYXR0cihcInhcIikpLFwiXFxuXCI9PXRoaXMudGV4dCgpP3MrPWE6KHRoaXMuYXR0cihcImR5XCIsYStzKSxzPTApKX0pLHRoaXMuZmlyZShcInJlYnVpbGRcIil9cmV0dXJuIHRoaXN9LGJ1aWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9idWlsZD0hIXQsdGhpc30sc2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb209dCx0aGlzLmRvbS5sZWFkaW5nPW5ldyBpLk51bWJlcih0LmxlYWRpbmd8fDEuMyksdGhpc319LGNvbnN0cnVjdDp7dGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuVGV4dCkudGV4dCh0KX0scGxhaW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLlRleHQpLnBsYWluKHQpfX19KSxpLlRzcGFuPWkuaW52ZW50KHtjcmVhdGU6XCJ0c3BhblwiLGluaGVyaXQ6aS5TaGFwZSxleHRlbmQ6e3RleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5ub2RlLnRleHRDb250ZW50Kyh0aGlzLmRvbS5uZXdMaW5lZD9cIlxcblwiOlwiXCIpOihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnRoaXMucGxhaW4odCksdGhpcyl9LGR4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJkeFwiLHQpfSxkeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiZHlcIix0KX0sbmV3TGluZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50KGkuVGV4dCk7cmV0dXJuIHRoaXMuZG9tLm5ld0xpbmVkPSEwLHRoaXMuZHkodC5kb20ubGVhZGluZyp0LmF0dHIoXCJmb250LXNpemVcIikpLmF0dHIoXCJ4XCIsdC54KCkpfX19KSxpLmV4dGVuZChpLlRleHQsaS5Uc3Bhbix7cGxhaW46ZnVuY3Rpb24odCl7cmV0dXJuITE9PT10aGlzLl9idWlsZCYmdGhpcy5jbGVhcigpLHRoaXMubm9kZS5hcHBlbmRDaGlsZChlLmNyZWF0ZVRleHROb2RlKHQpKSx0aGlzfSx0c3BhbjpmdW5jdGlvbih0KXt2YXIgZT0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLHM9bmV3IGkuVHNwYW47cmV0dXJuITE9PT10aGlzLl9idWlsZCYmdGhpcy5jbGVhcigpLGUuYXBwZW5kQ2hpbGQocy5ub2RlKSxzLnRleHQodCl9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGU7dC5oYXNDaGlsZE5vZGVzKCk7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpO3JldHVybiB0aGlzfSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpfX0pLGkuVGV4dFBhdGg9aS5pbnZlbnQoe2NyZWF0ZTpcInRleHRQYXRoXCIsaW5oZXJpdDppLlBhcmVudCxwYXJlbnQ6aS5UZXh0LGNvbnN0cnVjdDp7bW9ycGhBcnJheTppLlBhdGhBcnJheSxwYXRoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgaS5UZXh0UGF0aCxzPXRoaXMuZG9jKCkuZGVmcygpLnBhdGgodCk7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspZS5ub2RlLmFwcGVuZENoaWxkKHRoaXMubm9kZS5maXJzdENoaWxkKTtyZXR1cm4gdGhpcy5ub2RlLmFwcGVuZENoaWxkKGUubm9kZSksZS5hdHRyKFwiaHJlZlwiLFwiI1wiK3MsaS54bGluayksdGhpc30sYXJyYXk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRyYWNrKCk7cmV0dXJuIHQ/dC5hcnJheSgpOm51bGx9LHBsb3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50cmFjaygpLGk9bnVsbDtyZXR1cm4gZSYmKGk9ZS5wbG90KHQpKSxudWxsPT10P2k6dGhpc30sdHJhY2s6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRleHRQYXRoKCk7aWYodClyZXR1cm4gdC5yZWZlcmVuY2UoXCJocmVmXCIpfSx0ZXh0UGF0aDpmdW5jdGlvbigpe2lmKHRoaXMubm9kZS5maXJzdENoaWxkJiZcInRleHRQYXRoXCI9PXRoaXMubm9kZS5maXJzdENoaWxkLm5vZGVOYW1lKXJldHVybiBpLmFkb3B0KHRoaXMubm9kZS5maXJzdENoaWxkKX19fSksaS5OZXN0ZWQ9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGkuY3JlYXRlKFwic3ZnXCIpKSx0aGlzLnN0eWxlKFwib3ZlcmZsb3dcIixcInZpc2libGVcIil9LGluaGVyaXQ6aS5Db250YWluZXIsY29uc3RydWN0OntuZXN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuTmVzdGVkKX19fSksaS5BPWkuaW52ZW50KHtjcmVhdGU6XCJhXCIsaW5oZXJpdDppLkNvbnRhaW5lcixleHRlbmQ6e3RvOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJocmVmXCIsdCxpLnhsaW5rKX0sc2hvdzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwic2hvd1wiLHQsaS54bGluayl9LHRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwidGFyZ2V0XCIsdCl9fSxjb25zdHJ1Y3Q6e2xpbms6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLkEpLnRvKHQpfX19KSxpLmV4dGVuZChpLkVsZW1lbnQse2xpbmtUbzpmdW5jdGlvbih0KXt2YXIgZT1uZXcgaS5BO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dC5jYWxsKGUsZSk6ZS50byh0KSx0aGlzLnBhcmVudCgpLnB1dChlKS5wdXQodGhpcyl9fSksaS5NYXJrZXI9aS5pbnZlbnQoe2NyZWF0ZTpcIm1hcmtlclwiLGluaGVyaXQ6aS5Db250YWluZXIsZXh0ZW5kOnt3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwibWFya2VyV2lkdGhcIix0KX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJtYXJrZXJIZWlnaHRcIix0KX0scmVmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cihcInJlZlhcIix0KS5hdHRyKFwicmVmWVwiLGUpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xlYXIoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LmNhbGwodGhpcyx0aGlzKSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9fSxjb25zdHJ1Y3Q6e21hcmtlcjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuZGVmcygpLm1hcmtlcih0LGUsaSl9fX0pLGkuZXh0ZW5kKGkuRGVmcyx7bWFya2VyOmZ1bmN0aW9uKHQsZSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuTWFya2VyKS5zaXplKHQsZSkucmVmKHQvMixlLzIpLnZpZXdib3goMCwwLHQsZSkuYXR0cihcIm9yaWVudFwiLFwiYXV0b1wiKS51cGRhdGUocyl9fSksaS5leHRlbmQoaS5MaW5lLGkuUG9seWxpbmUsaS5Qb2x5Z29uLGkuUGF0aCx7bWFya2VyOmZ1bmN0aW9uKHQsZSxzLGEpe3ZhciByPVtcIm1hcmtlclwiXTtyZXR1cm5cImFsbFwiIT10JiZyLnB1c2godCkscj1yLmpvaW4oXCItXCIpLHQ9YXJndW1lbnRzWzFdaW5zdGFuY2VvZiBpLk1hcmtlcj9hcmd1bWVudHNbMV06dGhpcy5kb2MoKS5tYXJrZXIoZSxzLGEpLHRoaXMuYXR0cihyLHQpfX0pO3ZhciBvPXtzdHJva2U6W1wiY29sb3JcIixcIndpZHRoXCIsXCJvcGFjaXR5XCIsXCJsaW5lY2FwXCIsXCJsaW5lam9pblwiLFwibWl0ZXJsaW1pdFwiLFwiZGFzaGFycmF5XCIsXCJkYXNob2Zmc2V0XCJdLGZpbGw6W1wiY29sb3JcIixcIm9wYWNpdHlcIixcInJ1bGVcIl0scHJlZml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJjb2xvclwiPT1lP3Q6dCtcIi1cIitlfX07ZnVuY3Rpb24gbCh0LGUscyxhKXtyZXR1cm4gcythLnJlcGxhY2UoaS5yZWdleC5kb3RzLFwiIC5cIil9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0oLikvZyxmdW5jdGlvbih0LGUpe3JldHVybiBlLnRvVXBwZXJDYXNlKCl9KX1mdW5jdGlvbiBjKHQpe3JldHVybiB0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9ZnVuY3Rpb24gZCh0KXt2YXIgZT10LnRvU3RyaW5nKDE2KTtyZXR1cm4gMT09ZS5sZW5ndGg/XCIwXCIrZTplfWZ1bmN0aW9uIHUodCxlLGkpe2lmKG51bGw9PWV8fG51bGw9PWkpe3ZhciBzPXQuYmJveCgpO251bGw9PWU/ZT1zLndpZHRoL3MuaGVpZ2h0Kmk6bnVsbD09aSYmKGk9cy5oZWlnaHQvcy53aWR0aCplKX1yZXR1cm57d2lkdGg6ZSxoZWlnaHQ6aX19ZnVuY3Rpb24gZyh0LGUsaSl7cmV0dXJue3g6ZSp0LmEraSp0LmMrMCx5OmUqdC5iK2kqdC5kKzB9fWZ1bmN0aW9uIGYodCl7cmV0dXJue2E6dFswXSxiOnRbMV0sYzp0WzJdLGQ6dFszXSxlOnRbNF0sZjp0WzVdfX1mdW5jdGlvbiBwKHQsZSl7dC5jeD1udWxsPT10LmN4P2UuYmJveCgpLmN4OnQuY3gsdC5jeT1udWxsPT10LmN5P2UuYmJveCgpLmN5OnQuY3l9ZnVuY3Rpb24geChlKXtmb3IodmFyIHM9ZS5jaGlsZE5vZGVzLmxlbmd0aC0xO3M+PTA7cy0tKWUuY2hpbGROb2Rlc1tzXWluc3RhbmNlb2YgdC5TVkdFbGVtZW50JiZ4KGUuY2hpbGROb2Rlc1tzXSk7cmV0dXJuIGkuYWRvcHQoZSkuaWQoaS5laWQoZS5ub2RlTmFtZSkpfWZ1bmN0aW9uIG0odCl7cmV0dXJuIG51bGw9PXQueCYmKHQueD0wLHQueT0wLHQud2lkdGg9MCx0LmhlaWdodD0wKSx0Lnc9dC53aWR0aCx0Lmg9dC5oZWlnaHQsdC54Mj10LngrdC53aWR0aCx0LnkyPXQueSt0LmhlaWdodCx0LmN4PXQueCt0LndpZHRoLzIsdC5jeT10LnkrdC5oZWlnaHQvMix0fWZ1bmN0aW9uIGIodCl7cmV0dXJuIE1hdGguYWJzKHQpPjFlLTM3P3Q6MH1bXCJmaWxsXCIsXCJzdHJva2VcIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZSxzPXt9O3NbdF09ZnVuY3Rpb24ocyl7aWYodm9pZCAwPT09cylyZXR1cm4gdGhpcztpZihcInN0cmluZ1wiPT10eXBlb2Ygc3x8aS5Db2xvci5pc1JnYihzKXx8cyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygcy5maWxsKXRoaXMuYXR0cih0LHMpO2Vsc2UgZm9yKGU9b1t0XS5sZW5ndGgtMTtlPj0wO2UtLSludWxsIT1zW29bdF1bZV1dJiZ0aGlzLmF0dHIoby5wcmVmaXgodCxvW3RdW2VdKSxzW29bdF1bZV1dKTtyZXR1cm4gdGhpc30saS5leHRlbmQoaS5FbGVtZW50LGkuRlgscyl9KSxpLmV4dGVuZChpLkVsZW1lbnQsaS5GWCx7cm90YXRlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0oe3JvdGF0aW9uOnQsY3g6ZSxjeTppfSl9LHNrZXc6ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIDE9PWFyZ3VtZW50cy5sZW5ndGh8fDM9PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy50cmFuc2Zvcm0oe3NrZXc6dCxjeDplLGN5Oml9KTp0aGlzLnRyYW5zZm9ybSh7c2tld1g6dCxza2V3WTplLGN4OmksY3k6c30pfSxzY2FsZTpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gMT09YXJndW1lbnRzLmxlbmd0aHx8Mz09YXJndW1lbnRzLmxlbmd0aD90aGlzLnRyYW5zZm9ybSh7c2NhbGU6dCxjeDplLGN5Oml9KTp0aGlzLnRyYW5zZm9ybSh7c2NhbGVYOnQsc2NhbGVZOmUsY3g6aSxjeTpzfSl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnRyYW5zZm9ybSh7eDp0LHk6ZX0pfSxmbGlwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9XCJudW1iZXJcIj09dHlwZW9mIHQ/dDplLHRoaXMudHJhbnNmb3JtKHtmbGlwOnR8fFwiYm90aFwiLG9mZnNldDplfSl9LG1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIsbmV3IGkuTWF0cml4KDY9PWFyZ3VtZW50cy5sZW5ndGg/W10uc2xpY2UuY2FsbChhcmd1bWVudHMpOnQpKX0sb3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwib3BhY2l0eVwiLHQpfSxkeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54KG5ldyBpLk51bWJlcih0KS5wbHVzKHRoaXMgaW5zdGFuY2VvZiBpLkZYPzA6dGhpcy54KCkpLCEwKX0sZHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueShuZXcgaS5OdW1iZXIodCkucGx1cyh0aGlzIGluc3RhbmNlb2YgaS5GWD8wOnRoaXMueSgpKSwhMCl9LGRtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZHgodCkuZHkoZSl9fSksaS5leHRlbmQoaS5SZWN0LGkuRWxsaXBzZSxpLkNpcmNsZSxpLkdyYWRpZW50LGkuRlgse3JhZGl1czpmdW5jdGlvbih0LGUpe3ZhciBzPSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU7cmV0dXJuXCJyYWRpYWxcIj09c3x8XCJjaXJjbGVcIj09cz90aGlzLmF0dHIoXCJyXCIsbmV3IGkuTnVtYmVyKHQpKTp0aGlzLnJ4KHQpLnJ5KG51bGw9PWU/dDplKX19KSxpLmV4dGVuZChpLlBhdGgse2xlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuZ2V0VG90YWxMZW5ndGgoKX0scG9pbnRBdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLmdldFBvaW50QXRMZW5ndGgodCl9fSksaS5leHRlbmQoaS5QYXJlbnQsaS5UZXh0LGkuVHNwYW4saS5GWCx7Zm9udDpmdW5jdGlvbih0LGUpe2lmKFwib2JqZWN0XCI9PT1fdHlwZW9mKHQpKWZvcihlIGluIHQpdGhpcy5mb250KGUsdFtlXSk7cmV0dXJuXCJsZWFkaW5nXCI9PXQ/dGhpcy5sZWFkaW5nKGUpOlwiYW5jaG9yXCI9PXQ/dGhpcy5hdHRyKFwidGV4dC1hbmNob3JcIixlKTpcInNpemVcIj09dHx8XCJmYW1pbHlcIj09dHx8XCJ3ZWlnaHRcIj09dHx8XCJzdHJldGNoXCI9PXR8fFwidmFyaWFudFwiPT10fHxcInN0eWxlXCI9PXQ/dGhpcy5hdHRyKFwiZm9udC1cIit0LGUpOnRoaXMuYXR0cih0LGUpfX0pLGkuU2V0PWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7QXJyYXkuaXNBcnJheSh0KT90aGlzLm1lbWJlcnM9dDp0aGlzLmNsZWFyKCl9LGV4dGVuZDp7YWRkOmZ1bmN0aW9uKCl7dmFyIHQsZSxpPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtmb3IodD0wLGU9aS5sZW5ndGg7dDxlO3QrKyl0aGlzLm1lbWJlcnMucHVzaChpW3RdKTtyZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW5kZXgodCk7cmV0dXJuIGU+LTEmJnRoaXMubWVtYmVycy5zcGxpY2UoZSwxKSx0aGlzfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9dGhpcy5tZW1iZXJzLmxlbmd0aDtlPGk7ZSsrKXQuYXBwbHkodGhpcy5tZW1iZXJzW2VdLFtlLHRoaXMubWVtYmVyc10pO3JldHVybiB0aGlzfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnM9W10sdGhpc30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVycy5sZW5ndGh9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbmRleCh0KT49MH0saW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWVtYmVycy5pbmRleE9mKHQpfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWVtYmVyc1t0XX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQodGhpcy5tZW1iZXJzLmxlbmd0aC0xKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnN9LGJib3g6ZnVuY3Rpb24oKXtpZigwPT10aGlzLm1lbWJlcnMubGVuZ3RoKXJldHVybiBuZXcgaS5SQm94O3ZhciB0PXRoaXMubWVtYmVyc1swXS5yYm94KHRoaXMubWVtYmVyc1swXS5kb2MoKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3Q9dC5tZXJnZSh0aGlzLnJib3godGhpcy5kb2MoKSkpfSksdH19LGNvbnN0cnVjdDp7c2V0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaS5TZXQodCl9fX0pLGkuRlguU2V0PWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5zZXQ9dH19KSxpLlNldC5pbmhlcml0PWZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIGkuU2hhcGUucHJvdG90eXBlKVwiZnVuY3Rpb25cIj09dHlwZW9mIGkuU2hhcGUucHJvdG90eXBlW2VdJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLlNldC5wcm90b3R5cGVbZV0mJnQucHVzaChlKTtmb3IodmFyIGUgaW4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2kuU2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHM9dGhpcy5tZW1iZXJzLmxlbmd0aDtlPHM7ZSsrKXRoaXMubWVtYmVyc1tlXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5tZW1iZXJzW2VdW3RdJiZ0aGlzLm1lbWJlcnNbZV1bdF0uYXBwbHkodGhpcy5tZW1iZXJzW2VdLGFyZ3VtZW50cyk7cmV0dXJuXCJhbmltYXRlXCI9PXQ/dGhpcy5meHx8KHRoaXMuZng9bmV3IGkuRlguU2V0KHRoaXMpKTp0aGlzfX0pLHQ9W10saS5GWC5wcm90b3R5cGUpXCJmdW5jdGlvblwiPT10eXBlb2YgaS5GWC5wcm90b3R5cGVbZV0mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuRlguU2V0LnByb3RvdHlwZVtlXSYmdC5wdXNoKGUpO3QuZm9yRWFjaChmdW5jdGlvbih0KXtpLkZYLlNldC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxpPXRoaXMuc2V0Lm1lbWJlcnMubGVuZ3RoO2U8aTtlKyspdGhpcy5zZXQubWVtYmVyc1tlXS5meFt0XS5hcHBseSh0aGlzLnNldC5tZW1iZXJzW2VdLmZ4LGFyZ3VtZW50cyk7cmV0dXJuIHRoaXN9fSl9LGkuZXh0ZW5kKGkuRWxlbWVudCx7ZGF0YTpmdW5jdGlvbih0LGUsaSl7aWYoXCJvYmplY3RcIj09PV90eXBlb2YodCkpZm9yKGUgaW4gdCl0aGlzLmRhdGEoZSx0W2VdKTtlbHNlIGlmKGFyZ3VtZW50cy5sZW5ndGg8Mil0cnl7cmV0dXJuIEpTT04ucGFyc2UodGhpcy5hdHRyKFwiZGF0YS1cIit0KSl9Y2F0Y2goZSl7cmV0dXJuIHRoaXMuYXR0cihcImRhdGEtXCIrdCl9ZWxzZSB0aGlzLmF0dHIoXCJkYXRhLVwiK3QsbnVsbD09PWU/bnVsbDohMD09PWl8fFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZT9lOkpTT04uc3RyaW5naWZ5KGUpKTtyZXR1cm4gdGhpc319KSxpLmV4dGVuZChpLkVsZW1lbnQse3JlbWVtYmVyOmZ1bmN0aW9uKHQsZSl7aWYoXCJvYmplY3RcIj09PV90eXBlb2YoYXJndW1lbnRzWzBdKSlmb3IodmFyIGUgaW4gdCl0aGlzLnJlbWVtYmVyKGUsdFtlXSk7ZWxzZXtpZigxPT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLm1lbW9yeSgpW3RdO3RoaXMubWVtb3J5KClbdF09ZX1yZXR1cm4gdGhpc30sZm9yZ2V0OmZ1bmN0aW9uKCl7aWYoMD09YXJndW1lbnRzLmxlbmd0aCl0aGlzLl9tZW1vcnk9e307ZWxzZSBmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aC0xO3Q+PTA7dC0tKWRlbGV0ZSB0aGlzLm1lbW9yeSgpW2FyZ3VtZW50c1t0XV07cmV0dXJuIHRoaXN9LG1lbW9yeTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZW1vcnl8fCh0aGlzLl9tZW1vcnk9e30pfX0pLGkuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBzPWUuZ2V0RWxlbWVudEJ5SWQoZnVuY3Rpb24odCl7dmFyIGU9KHR8fFwiXCIpLnRvU3RyaW5nKCkubWF0Y2goaS5yZWdleC5yZWZlcmVuY2UpO2lmKGUpcmV0dXJuIGVbMV19KHQpfHx0KTtyZXR1cm4gaS5hZG9wdChzKX0saS5zZWxlY3Q9ZnVuY3Rpb24odCxzKXtyZXR1cm4gbmV3IGkuU2V0KGkudXRpbHMubWFwKChzfHxlKS5xdWVyeVNlbGVjdG9yQWxsKHQpLGZ1bmN0aW9uKHQpe3JldHVybiBpLmFkb3B0KHQpfSkpfSxpLmV4dGVuZChpLlBhcmVudCx7c2VsZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBpLnNlbGVjdCh0LHRoaXMubm9kZSl9fSk7dmFyIHY9XCJhYmNkZWZcIi5zcGxpdChcIlwiKTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LkN1c3RvbUV2ZW50KXt2YXIgeT1mdW5jdGlvbih0LGkpe2k9aXx8e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMSxkZXRhaWw6dm9pZCAwfTt2YXIgcz1lLmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7cmV0dXJuIHMuaW5pdEN1c3RvbUV2ZW50KHQsaS5idWJibGVzLGkuY2FuY2VsYWJsZSxpLmRldGFpbCksc307eS5wcm90b3R5cGU9dC5FdmVudC5wcm90b3R5cGUsaS5DdXN0b21FdmVudD15fWVsc2UgaS5DdXN0b21FdmVudD10LkN1c3RvbUV2ZW50O3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIGk9MCxzPVtcIm1velwiLFwid2Via2l0XCJdLGE9MDthPHMubGVuZ3RoJiYhdC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7KythKWUucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWVbc1thXStcIlJlcXVlc3RBbmltYXRpb25GcmFtZVwiXSxlLmNhbmNlbEFuaW1hdGlvbkZyYW1lPWVbc1thXStcIkNhbmNlbEFuaW1hdGlvbkZyYW1lXCJdfHxlW3NbYV0rXCJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIl07ZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9ZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGZ1bmN0aW9uKHQpe3ZhciBzPShuZXcgRGF0ZSkuZ2V0VGltZSgpLGE9TWF0aC5tYXgoMCwxNi0ocy1pKSkscj1lLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0KHMrYSl9LGEpO3JldHVybiBpPXMrYSxyfSxlLmNhbmNlbEFuaW1hdGlvbkZyYW1lPWUuY2FuY2VsQW5pbWF0aW9uRnJhbWV8fGUuY2xlYXJUaW1lb3V0fSh0KSxpfSksZnVuY3Rpb24oKXtTVkcuRmlsdGVyPVNWRy5pbnZlbnQoe2NyZWF0ZTpcImZpbHRlclwiLGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e3NvdXJjZTpcIlNvdXJjZUdyYXBoaWNcIixzb3VyY2VBbHBoYTpcIlNvdXJjZUFscGhhXCIsYmFja2dyb3VuZDpcIkJhY2tncm91bmRJbWFnZVwiLGJhY2tncm91bmRBbHBoYTpcIkJhY2tncm91bmRBbHBoYVwiLGZpbGw6XCJGaWxsUGFpbnRcIixzdHJva2U6XCJTdHJva2VQYWludFwiLGF1dG9TZXRJbjohMCxwdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hZGQodCxlKSwhdC5hdHRyKFwiaW5cIikmJnRoaXMuYXV0b1NldEluJiZ0LmF0dHIoXCJpblwiLHRoaXMuc291cmNlKSx0LmF0dHIoXCJyZXN1bHRcIil8fHQuYXR0cihcInJlc3VsdFwiLHQpLHR9LGJsZW5kOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5CbGVuZEVmZmVjdCh0LGUsaSkpfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbG9yTWF0cml4RWZmZWN0KHQsZSkpfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db252b2x2ZU1hdHJpeEVmZmVjdCh0KSl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbXBvbmVudFRyYW5zZmVyRWZmZWN0KHQpKX0sY29tcG9zaXRlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db21wb3NpdGVFZmZlY3QodCxlLGkpKX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5GbG9vZEVmZmVjdCh0LGUpKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuT2Zmc2V0RWZmZWN0KHQsZSkpfSxpbWFnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5JbWFnZUVmZmVjdCh0KSl9LG1lcmdlOmZ1bmN0aW9uKCl7dmFyIHQ9W3ZvaWQgMF07Zm9yKHZhciBlIGluIGFyZ3VtZW50cyl0LnB1c2goYXJndW1lbnRzW2VdKTtyZXR1cm4gdGhpcy5wdXQobmV3KFNWRy5NZXJnZUVmZmVjdC5iaW5kLmFwcGx5KFNWRy5NZXJnZUVmZmVjdCx0KSkpfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5HYXVzc2lhbkJsdXJFZmZlY3QodCxlKSl9LG1vcnBob2xvZ3k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Nb3JwaG9sb2d5RWZmZWN0KHQsZSkpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkRpZmZ1c2VMaWdodGluZ0VmZmVjdCh0LGUsaSkpfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24odCxlLGkscyxhKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5EaXNwbGFjZW1lbnRNYXBFZmZlY3QodCxlLGkscyxhKSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuU3BlY3VsYXJMaWdodGluZ0VmZmVjdCh0LGUsaSxzKSl9LHRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UaWxlRWZmZWN0KX0sdHVyYnVsZW5jZTpmdW5jdGlvbih0LGUsaSxzLGEpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlR1cmJ1bGVuY2VFZmZlY3QodCxlLGkscyxhKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJ1cmwoI1wiK3RoaXMuYXR0cihcImlkXCIpK1wiKVwifX19KSxTVkcuZXh0ZW5kKFNWRy5EZWZzLHtmaWx0ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wdXQobmV3IFNWRy5GaWx0ZXIpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbChlLGUpLGV9fSksU1ZHLmV4dGVuZChTVkcuQ29udGFpbmVyLHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVmcygpLmZpbHRlcih0KX19KSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LFNWRy5HLFNWRy5OZXN0ZWQse2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXJlcj10IGluc3RhbmNlb2YgU1ZHLkVsZW1lbnQ/dDp0aGlzLmRvYygpLmZpbHRlcih0KSx0aGlzLmRvYygpJiZ0aGlzLmZpbHRlcmVyLmRvYygpIT09dGhpcy5kb2MoKSYmdGhpcy5kb2MoKS5kZWZzKCkuYWRkKHRoaXMuZmlsdGVyZXIpLHRoaXMuYXR0cihcImZpbHRlclwiLHRoaXMuZmlsdGVyZXIpLHRoaXMuZmlsdGVyZXJ9LHVuZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpbHRlcmVyJiYhMD09PXQmJnRoaXMuZmlsdGVyZXIucmVtb3ZlKCksZGVsZXRlIHRoaXMuZmlsdGVyZXIsdGhpcy5hdHRyKFwiZmlsdGVyXCIsbnVsbCl9fSksU1ZHLkVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLkVsZW1lbnQsZXh0ZW5kOntpbjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW5cIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW5cIik6dGhpcy5hdHRyKFwiaW5cIix0KX0scmVzdWx0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInJlc3VsdFwiKTp0aGlzLmF0dHIoXCJyZXN1bHRcIix0KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHQoKX19fSksU1ZHLlBhcmVudEVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpblwiKSsnXCJdJykuZ2V0KDApfHx0aGlzLmF0dHIoXCJpblwiKTp0aGlzLmF0dHIoXCJpblwiLHQpfSxyZXN1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwicmVzdWx0XCIpOnRoaXMuYXR0cihcInJlc3VsdFwiLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlc3VsdCgpfX19KTt2YXIgdD17YmxlbmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5ibGVuZCh0aGlzLHQsZSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29sb3JNYXRyaXgodCxlKS5pbih0aGlzKX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29udm9sdmVNYXRyaXgodCkuaW4odGhpcyl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbXBvbmVudFRyYW5zZmVyKHQpLmluKHRoaXMpfSxjb21wb3NpdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb21wb3NpdGUodGhpcyx0LGUpfSxmbG9vZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmZsb29kKHQsZSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm9mZnNldCh0LGUpLmluKHRoaXMpfSxpbWFnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5pbWFnZSh0KX0sbWVyZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5tZXJnZS5hcHBseSh0aGlzLnBhcmVudCgpLFt0aGlzXS5jb25jYXQoYXJndW1lbnRzKSl9LGdhdXNzaWFuQmx1cjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmdhdXNzaWFuQmx1cih0LGUpLmluKHRoaXMpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkubW9ycGhvbG9neSh0LGUpLmluKHRoaXMpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmRpZmZ1c2VMaWdodGluZyh0LGUsaSkuaW4odGhpcyl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5kaXNwbGFjZW1lbnRNYXAodGhpcyx0LGUsaSxzKX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zcGVjdWxhckxpZ2h0aW5nKHQsZSxpLHMpLmluKHRoaXMpfSx0aWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudGlsZSgpLmluKHRoaXMpfSx0dXJidWxlbmNlOmZ1bmN0aW9uKHQsZSxpLHMsYSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudHVyYnVsZW5jZSh0LGUsaSxzLGEpLmluKHRoaXMpfX07U1ZHLmV4dGVuZChTVkcuRWZmZWN0LHQpLFNWRy5leHRlbmQoU1ZHLlBhcmVudEVmZmVjdCx0KSxTVkcuQ2hpbGRFZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5FbGVtZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaW5cIix0KX19fSk7dmFyIGU9e2JsZW5kOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe2luOnQsaW4yOmUsbW9kZTppfHxcIm5vcm1hbFwifSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7XCJtYXRyaXhcIj09dCYmKGU9YShlKSksdGhpcy5hdHRyKHt0eXBlOnQsdmFsdWVzOnZvaWQgMD09PWU/bnVsbDplfSl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHQpe3Q9YSh0KSx0aGlzLmF0dHIoe29yZGVyOk1hdGguc3FydCh0LnNwbGl0KFwiIFwiKS5sZW5ndGgpLGtlcm5lbE1hdHJpeDp0fSl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLG9wZXJhdG9yOml9KX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoXCJmbG9vZC1jb2xvclwiLHQpLG51bGwhPWUmJnRoaXMuYXR0cihcImZsb29kLW9wYWNpdHlcIixlKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHtkeDp0LGR5OmV9KX0saW1hZ2U6ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaHJlZlwiLHQsU1ZHLnhsaW5rKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLHMsYSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLHNjYWxlOmkseENoYW5uZWxTZWxlY3RvcjpzLHlDaGFubmVsU2VsZWN0b3I6YX0pfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtudWxsIT10fHxudWxsIT1lP3RoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLGZ1bmN0aW9uKHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiB0O2Zvcih2YXIgZT0wLGk9dC5sZW5ndGgscz1bXTtlPGk7ZSsrKXMucHVzaCh0W2VdKTtyZXR1cm4gcy5qb2luKFwiIFwiKX0oQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpOnRoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLFwiMCAwXCIpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHtvcGVyYXRvcjp0LHJhZGl1czplfSl9LHRpbGU6ZnVuY3Rpb24oKXt9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGkscyxhKXt0aGlzLmF0dHIoe251bU9jdGF2ZXM6ZSxzZWVkOmksc3RpdGNoVGlsZXM6cyxiYXNlRnJlcXVlbmN5OnQsdHlwZTphfSl9fSxpPXttZXJnZTpmdW5jdGlvbigpe3ZhciB0O2lmKGFyZ3VtZW50c1swXWluc3RhbmNlb2YgU1ZHLlNldCl7dmFyIGU9dGhpczthcmd1bWVudHNbMF0uZWFjaChmdW5jdGlvbih0KXt0aGlzIGluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZT9lLnB1dCh0aGlzKToodGhpcyBpbnN0YW5jZW9mIFNWRy5FZmZlY3R8fHRoaXMgaW5zdGFuY2VvZiBTVkcuUGFyZW50RWZmZWN0KSYmZS5wdXQobmV3IFNWRy5NZXJnZU5vZGUodGhpcykpfSl9ZWxzZXt0PUFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV1pbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5wdXQodFtpXSk6dGhpcy5wdXQobmV3IFNWRy5NZXJnZU5vZGUodFtpXSkpfX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24odCl7aWYodGhpcy5yZ2I9bmV3IFNWRy5TZXQsW1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXNbdF09bmV3KFNWR1tcIkZ1bmNcIit0LnRvVXBwZXJDYXNlKCldKShcImlkZW50aXR5XCIpLHRoaXMucmdiLmFkZCh0aGlzW3RdKSx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpc1t0XS5ub2RlKX0uYmluZCh0aGlzKSksdClmb3IodmFyIGUgaW4gdC5yZ2ImJihbXCJyXCIsXCJnXCIsXCJiXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpc1tlXS5hdHRyKHQucmdiKX0uYmluZCh0aGlzKSksZGVsZXRlIHQucmdiKSx0KXRoaXNbZV0uYXR0cih0W2VdKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe3N1cmZhY2VTY2FsZTp0LGRpZmZ1c2VDb25zdGFudDplLGtlcm5lbFVuaXRMZW5ndGg6aX0pfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpLHMpe3RoaXMuYXR0cih7c3VyZmFjZVNjYWxlOnQsZGlmZnVzZUNvbnN0YW50OmUsc3BlY3VsYXJFeHBvbmVudDppLGtlcm5lbFVuaXRMZW5ndGg6c30pfX0scz17ZGlzdGFudExpZ2h0OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHthemltdXRoOnQsZWxldmF0aW9uOmV9KX0scG9pbnRMaWdodDpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHt4OnQseTplLHo6aX0pfSxzcG90TGlnaHQ6ZnVuY3Rpb24odCxlLGkscyxhLHIpe3RoaXMuYXR0cih7eDp0LHk6ZSx6OmkscG9pbnRzQXRYOnMscG9pbnRzQXRZOmEscG9pbnRzQXRaOnJ9KX0sbWVyZ2VOb2RlOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImluXCIsdCl9fTtmdW5jdGlvbiBhKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYodD1uZXcgU1ZHLkFycmF5KHQpKSx0LnRvU3RyaW5nKCkucmVwbGFjZSgvXlxccysvLFwiXCIpLnJlcGxhY2UoL1xccyskLyxcIlwiKS5yZXBsYWNlKC9cXHMrL2csXCIgXCIpfWZ1bmN0aW9uIHIoKXt2YXIgdD1mdW5jdGlvbigpe307Zm9yKHZhciBlIGluXCJmdW5jdGlvblwiPT10eXBlb2YgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0mJih0PWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhcmd1bWVudHMsYXJndW1lbnRzLmxlbmd0aC0xLDEpKSxhcmd1bWVudHMpZm9yKHZhciBpIGluIGFyZ3VtZW50c1tlXSl0KGFyZ3VtZW50c1tlXVtpXSxpLGFyZ3VtZW50c1tlXSl9W1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3NbXCJGdW5jXCIrdC50b1VwcGVyQ2FzZSgpXT1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5hdHRyKFwidHlwZVwiLHQpLHQpe2Nhc2VcInRhYmxlXCI6dGhpcy5hdHRyKFwidGFibGVWYWx1ZXNcIixhcmd1bWVudHNbMV0pO2JyZWFrO2Nhc2VcImxpbmVhclwiOnRoaXMuYXR0cihcInNsb3BlXCIsYXJndW1lbnRzWzFdKSx0aGlzLmF0dHIoXCJpbnRlcmNlcHRcIixhcmd1bWVudHNbMl0pO2JyZWFrO2Nhc2VcImdhbW1hXCI6dGhpcy5hdHRyKFwiYW1wbGl0dWRlXCIsYXJndW1lbnRzWzFdKSx0aGlzLmF0dHIoXCJleHBvbmVudFwiLGFyZ3VtZW50c1syXSksdGhpcy5hdHRyKFwib2Zmc2V0XCIsYXJndW1lbnRzWzJdKX19fSkscihlLGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpK1wiRWZmZWN0XCJdPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoXCJmZVwiK2kpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLnJlc3VsdCh0aGlzLmF0dHIoXCJpZFwiKStcIk91dFwiKX0saW5oZXJpdDpTVkcuRWZmZWN0LGV4dGVuZDp7fX0pfSkscihpLGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpK1wiRWZmZWN0XCJdPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoXCJmZVwiK2kpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLnJlc3VsdCh0aGlzLmF0dHIoXCJpZFwiKStcIk91dFwiKX0saW5oZXJpdDpTVkcuUGFyZW50RWZmZWN0LGV4dGVuZDp7fX0pfSkscihzLGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGluaGVyaXQ6U1ZHLkNoaWxkRWZmZWN0LGV4dGVuZDp7fX0pfSksU1ZHLmV4dGVuZChTVkcuTWVyZ2VFZmZlY3Qse2luOmZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZT90aGlzLmFkZCh0LDApOnRoaXMuYWRkKG5ldyBTVkcuTWVyZ2VOb2RlKHQpLDApLHRoaXN9fSksU1ZHLmV4dGVuZChTVkcuQ29tcG9zaXRlRWZmZWN0LFNWRy5CbGVuZEVmZmVjdCxTVkcuRGlzcGxhY2VtZW50TWFwRWZmZWN0LHtpbjI6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zZWxlY3QoJ1tyZXN1bHQ9XCInK3RoaXMuYXR0cihcImluMlwiKSsnXCJdJykuZ2V0KDApfHx0aGlzLmF0dHIoXCJpbjJcIik6dGhpcy5hdHRyKFwiaW4yXCIsdCl9fSksU1ZHLmZpbHRlcj17c2VwaWF0b25lOlsuMzQzLC42NjksLjExOSwwLDAsLjI0OSwuNjI2LC4xMywwLDAsLjE3MiwuMzM0LC4xMTEsMCwwLDAsMCwwLDEsMF19fS5jYWxsKHZvaWQgMCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsYSxyLG4sbyxsLGgpe2Zvcih2YXIgYz10LnNsaWNlKGEscnx8aCksZD1uLnNsaWNlKG8sbHx8aCksdT0wLGc9e3BvczpbMCwwXSxzdGFydDpbMCwwXX0sZj17cG9zOlswLDBdLHN0YXJ0OlswLDBdfTs7KXtpZihjW3VdPWUuY2FsbChnLGNbdV0pLGRbdV09ZS5jYWxsKGYsZFt1XSksY1t1XVswXSE9ZFt1XVswXXx8XCJNXCI9PWNbdV1bMF18fFwiQVwiPT1jW3VdWzBdJiYoY1t1XVs0XSE9ZFt1XVs0XXx8Y1t1XVs1XSE9ZFt1XVs1XSk/KEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoYyxbdSwxXS5jb25jYXQocy5jYWxsKGcsY1t1XSkpKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGQsW3UsMV0uY29uY2F0KHMuY2FsbChmLGRbdV0pKSkpOihjW3VdPWkuY2FsbChnLGNbdV0pLGRbdV09aS5jYWxsKGYsZFt1XSkpLCsrdT09Yy5sZW5ndGgmJnU9PWQubGVuZ3RoKWJyZWFrO3U9PWMubGVuZ3RoJiZjLnB1c2goW1wiQ1wiLGcucG9zWzBdLGcucG9zWzFdLGcucG9zWzBdLGcucG9zWzFdLGcucG9zWzBdLGcucG9zWzFdXSksdT09ZC5sZW5ndGgmJmQucHVzaChbXCJDXCIsZi5wb3NbMF0sZi5wb3NbMV0sZi5wb3NbMF0sZi5wb3NbMV0sZi5wb3NbMF0sZi5wb3NbMV1dKX1yZXR1cm57c3RhcnQ6YyxkZXN0OmR9fWZ1bmN0aW9uIGUodCl7c3dpdGNoKHRbMF0pe2Nhc2VcInpcIjpjYXNlXCJaXCI6dFswXT1cIkxcIix0WzFdPXRoaXMuc3RhcnRbMF0sdFsyXT10aGlzLnN0YXJ0WzFdO2JyZWFrO2Nhc2VcIkhcIjp0WzBdPVwiTFwiLHRbMl09dGhpcy5wb3NbMV07YnJlYWs7Y2FzZVwiVlwiOnRbMF09XCJMXCIsdFsyXT10WzFdLHRbMV09dGhpcy5wb3NbMF07YnJlYWs7Y2FzZVwiVFwiOnRbMF09XCJRXCIsdFszXT10WzFdLHRbNF09dFsyXSx0WzFdPXRoaXMucmVmbGVjdGlvblsxXSx0WzJdPXRoaXMucmVmbGVjdGlvblswXTticmVhaztjYXNlXCJTXCI6dFswXT1cIkNcIix0WzZdPXRbNF0sdFs1XT10WzNdLHRbNF09dFsyXSx0WzNdPXRbMV0sdFsyXT10aGlzLnJlZmxlY3Rpb25bMV0sdFsxXT10aGlzLnJlZmxlY3Rpb25bMF19cmV0dXJuIHR9ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gdGhpcy5wb3M9W3RbZS0yXSx0W2UtMV1dLC0xIT1cIlNDUVRcIi5pbmRleE9mKHRbMF0pJiYodGhpcy5yZWZsZWN0aW9uPVsyKnRoaXMucG9zWzBdLXRbZS00XSwyKnRoaXMucG9zWzFdLXRbZS0zXV0pLHR9ZnVuY3Rpb24gcyh0KXt2YXIgZT1bdF07c3dpdGNoKHRbMF0pe2Nhc2VcIk1cIjpyZXR1cm4gdGhpcy5wb3M9dGhpcy5zdGFydD1bdFsxXSx0WzJdXSxlO2Nhc2VcIkxcIjp0WzVdPXRbM109dFsxXSx0WzZdPXRbNF09dFsyXSx0WzFdPXRoaXMucG9zWzBdLHRbMl09dGhpcy5wb3NbMV07YnJlYWs7Y2FzZVwiUVwiOnRbNl09dFs0XSx0WzVdPXRbM10sdFs0XT0xKnRbNF0vMysyKnRbMl0vMyx0WzNdPTEqdFszXS8zKzIqdFsxXS8zLHRbMl09MSp0aGlzLnBvc1sxXS8zKzIqdFsyXS8zLHRbMV09MSp0aGlzLnBvc1swXS8zKzIqdFsxXS8zO2JyZWFrO2Nhc2VcIkFcIjp0PShlPWZ1bmN0aW9uKHQsZSl7dmFyIGkscyxhLHIsbixvLGwsaCxjLGQsdSxnLGYscCx4LG0sYix2LHksdyxrLEEsUyxDLEwsUCx6PU1hdGguYWJzKGVbMV0pLFQ9TWF0aC5hYnMoZVsyXSksTT1lWzNdJTM2MCxFPWVbNF0sWD1lWzVdLEk9ZVs2XSxZPWVbN10sRj1uZXcgU1ZHLlBvaW50KHQpLFI9bmV3IFNWRy5Qb2ludChJLFkpLEQ9W107aWYoMD09PXp8fDA9PT1UfHxGLng9PT1SLngmJkYueT09PVIueSlyZXR1cm5bW1wiQ1wiLEYueCxGLnksUi54LFIueSxSLngsUi55XV07aT1uZXcgU1ZHLlBvaW50KChGLngtUi54KS8yLChGLnktUi55KS8yKS50cmFuc2Zvcm0oKG5ldyBTVkcuTWF0cml4KS5yb3RhdGUoTSkpLChzPWkueCppLngvKHoqeikraS55KmkueS8oVCpUKSk+MSYmKHM9TWF0aC5zcXJ0KHMpLHoqPXMsVCo9cyk7YT0obmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShNKS5zY2FsZSgxL3osMS9UKS5yb3RhdGUoLU0pLEY9Ri50cmFuc2Zvcm0oYSksUj1SLnRyYW5zZm9ybShhKSxyPVtSLngtRi54LFIueS1GLnldLG89clswXSpyWzBdK3JbMV0qclsxXSxuPU1hdGguc3FydChvKSxyWzBdLz1uLHJbMV0vPW4sbD1vPDQ/TWF0aC5zcXJ0KDEtby80KTowLEU9PT1YJiYobCo9LTEpO2g9bmV3IFNWRy5Qb2ludCgoUi54K0YueCkvMitsKi1yWzFdLChSLnkrRi55KS8yK2wqclswXSksYz1uZXcgU1ZHLlBvaW50KEYueC1oLngsRi55LWgueSksZD1uZXcgU1ZHLlBvaW50KFIueC1oLngsUi55LWgueSksdT1NYXRoLmFjb3MoYy54L01hdGguc3FydChjLngqYy54K2MueSpjLnkpKSxjLnk8MCYmKHUqPS0xKTtnPU1hdGguYWNvcyhkLngvTWF0aC5zcXJ0KGQueCpkLngrZC55KmQueSkpLGQueTwwJiYoZyo9LTEpO1gmJnU+ZyYmKGcrPTIqTWF0aC5QSSk7IVgmJnU8ZyYmKGctPTIqTWF0aC5QSSk7Zm9yKHA9TWF0aC5jZWlsKDIqTWF0aC5hYnModS1nKS9NYXRoLlBJKSxtPVtdLGI9dSxmPShnLXUpL3AseD00Kk1hdGgudGFuKGYvNCkvMyxrPTA7azw9cDtrKyspeT1NYXRoLmNvcyhiKSx2PU1hdGguc2luKGIpLHc9bmV3IFNWRy5Qb2ludChoLngreSxoLnkrdiksbVtrXT1bbmV3IFNWRy5Qb2ludCh3LngreCp2LHcueS14KnkpLHcsbmV3IFNWRy5Qb2ludCh3LngteCp2LHcueSt4KnkpXSxiKz1mO2ZvcihtWzBdWzBdPW1bMF1bMV0uY2xvbmUoKSxtW20ubGVuZ3RoLTFdWzJdPW1bbS5sZW5ndGgtMV1bMV0uY2xvbmUoKSxhPShuZXcgU1ZHLk1hdHJpeCkucm90YXRlKE0pLnNjYWxlKHosVCkucm90YXRlKC1NKSxrPTAsQT1tLmxlbmd0aDtrPEE7aysrKW1ba11bMF09bVtrXVswXS50cmFuc2Zvcm0oYSksbVtrXVsxXT1tW2tdWzFdLnRyYW5zZm9ybShhKSxtW2tdWzJdPW1ba11bMl0udHJhbnNmb3JtKGEpO2ZvcihrPTEsQT1tLmxlbmd0aDtrPEE7aysrKXc9bVtrLTFdWzJdLFM9dy54LEM9dy55LHc9bVtrXVswXSxMPXcueCxQPXcueSx3PW1ba11bMV0sST13LngsWT13LnksRC5wdXNoKFtcIkNcIixTLEMsTCxQLEksWV0pO3JldHVybiBEfSh0aGlzLnBvcyx0KSlbMF19cmV0dXJuIHRbMF09XCJDXCIsdGhpcy5wb3M9W3RbNV0sdFs2XV0sdGhpcy5yZWZsZWN0aW9uPVsyKnRbNV0tdFszXSwyKnRbNl0tdFs0XV0sZX1mdW5jdGlvbiBhKHQsZSl7aWYoITE9PT1lKXJldHVybiExO2Zvcih2YXIgaT1lLHM9dC5sZW5ndGg7aTxzOysraSlpZihcIk1cIj09dFtpXVswXSlyZXR1cm4gaTtyZXR1cm4hMX1TVkcuZXh0ZW5kKFNWRy5QYXRoQXJyYXkse21vcnBoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgaT10aGlzLnZhbHVlLHM9dGhpcy5wYXJzZShlKSxyPTAsbj0wLG89ITEsbD0hMTshMSE9PXJ8fCExIT09bjspe3ZhciBoO289YShpLCExIT09ciYmcisxKSxsPWEocywhMSE9PW4mJm4rMSksITE9PT1yJiYocj0wPT0oaD1uZXcgU1ZHLlBhdGhBcnJheShjLnN0YXJ0KS5iYm94KCkpLmhlaWdodHx8MD09aC53aWR0aD9pLnB1c2goaVswXSktMTppLnB1c2goW1wiTVwiLGgueCtoLndpZHRoLzIsaC55K2guaGVpZ2h0LzJdKS0xKSwhMT09PW4mJihuPTA9PShoPW5ldyBTVkcuUGF0aEFycmF5KGMuZGVzdCkuYmJveCgpKS5oZWlnaHR8fDA9PWgud2lkdGg/cy5wdXNoKHNbMF0pLTE6cy5wdXNoKFtcIk1cIixoLngraC53aWR0aC8yLGgueStoLmhlaWdodC8yXSktMSk7dmFyIGM9dChpLHIsbyxzLG4sbCk7aT1pLnNsaWNlKDAscikuY29uY2F0KGMuc3RhcnQsITE9PT1vP1tdOmkuc2xpY2UobykpLHM9cy5zbGljZSgwLG4pLmNvbmNhdChjLmRlc3QsITE9PT1sP1tdOnMuc2xpY2UobCkpLHI9ITEhPT1vJiZyK2Muc3RhcnQubGVuZ3RoLG49ITEhPT1sJiZuK2MuZGVzdC5sZW5ndGh9cmV0dXJuIHRoaXMudmFsdWU9aSx0aGlzLmRlc3RpbmF0aW9uPW5ldyBTVkcuUGF0aEFycmF5LHRoaXMuZGVzdGluYXRpb24udmFsdWU9cyx0aGlzfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0LnJlbWVtYmVyKFwiX2RyYWdnYWJsZVwiLHRoaXMpLHRoaXMuZWw9dH10LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt0aGlzLmNvbnN0cmFpbnQ9dCx0aGlzLnZhbHVlPWUsdGhpcy5lbC5vbihcIm1vdXNlZG93bi5kcmFnXCIsZnVuY3Rpb24odCl7aS5zdGFydCh0KX0pLHRoaXMuZWwub24oXCJ0b3VjaHN0YXJ0LmRyYWdcIixmdW5jdGlvbih0KXtpLnN0YXJ0KHQpfSl9LHQucHJvdG90eXBlLnRyYW5zZm9ybVBvaW50PWZ1bmN0aW9uKHQsZSl7dmFyIGk9KHQ9dHx8d2luZG93LmV2ZW50KS5jaGFuZ2VkVG91Y2hlcyYmdC5jaGFuZ2VkVG91Y2hlc1swXXx8dDtyZXR1cm4gdGhpcy5wLng9aS5jbGllbnRYLShlfHwwKSx0aGlzLnAueT1pLmNsaWVudFksdGhpcy5wLm1hdHJpeFRyYW5zZm9ybSh0aGlzLm0pfSx0LnByb3RvdHlwZS5nZXRCQm94PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbC5iYm94KCk7cmV0dXJuIHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuTmVzdGVkJiYodD10aGlzLmVsLnJib3goKSksKHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuR3x8dGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5Vc2V8fHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuTmVzdGVkKSYmKHQueD10aGlzLmVsLngoKSx0Lnk9dGhpcy5lbC55KCkpLHR9LHQucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKHQpe2lmKFwiY2xpY2tcIiE9dC50eXBlJiZcIm1vdXNlZG93blwiIT10LnR5cGUmJlwibW91c2Vtb3ZlXCIhPXQudHlwZXx8MT09KHQud2hpY2h8fHQuYnV0dG9ucykpe3ZhciBlPXRoaXM7aWYodGhpcy5lbC5maXJlKFwiYmVmb3JlZHJhZ1wiLHtldmVudDp0LGhhbmRsZXI6dGhpc30pLCF0aGlzLmVsLmV2ZW50KCkuZGVmYXVsdFByZXZlbnRlZCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5wYXJlbnQ9dGhpcy5wYXJlbnR8fHRoaXMuZWwucGFyZW50KFNWRy5OZXN0ZWQpfHx0aGlzLmVsLnBhcmVudChTVkcuRG9jKSx0aGlzLnA9dGhpcy5wYXJlbnQubm9kZS5jcmVhdGVTVkdQb2ludCgpLHRoaXMubT10aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpO3ZhciBpLHM9dGhpcy5nZXRCQm94KCk7aWYodGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5UZXh0KXN3aXRjaChpPXRoaXMuZWwubm9kZS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSx0aGlzLmVsLmF0dHIoXCJ0ZXh0LWFuY2hvclwiKSl7Y2FzZVwibWlkZGxlXCI6aS89MjticmVhaztjYXNlXCJzdGFydFwiOmk9MH10aGlzLnN0YXJ0UG9pbnRzPXtwb2ludDp0aGlzLnRyYW5zZm9ybVBvaW50KHQsaSksYm94OnMsdHJhbnNmb3JtOnRoaXMuZWwudHJhbnNmb3JtKCl9LFNWRy5vbih3aW5kb3csXCJtb3VzZW1vdmUuZHJhZ1wiLGZ1bmN0aW9uKHQpe2UuZHJhZyh0KX0pLFNWRy5vbih3aW5kb3csXCJ0b3VjaG1vdmUuZHJhZ1wiLGZ1bmN0aW9uKHQpe2UuZHJhZyh0KX0pLFNWRy5vbih3aW5kb3csXCJtb3VzZXVwLmRyYWdcIixmdW5jdGlvbih0KXtlLmVuZCh0KX0pLFNWRy5vbih3aW5kb3csXCJ0b3VjaGVuZC5kcmFnXCIsZnVuY3Rpb24odCl7ZS5lbmQodCl9KSx0aGlzLmVsLmZpcmUoXCJkcmFnc3RhcnRcIix7ZXZlbnQ6dCxwOnRoaXMuc3RhcnRQb2ludHMucG9pbnQsbTp0aGlzLm0saGFuZGxlcjp0aGlzfSl9fX0sdC5wcm90b3R5cGUuZHJhZz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEJCb3goKSxpPXRoaXMudHJhbnNmb3JtUG9pbnQodCkscz10aGlzLnN0YXJ0UG9pbnRzLmJveC54K2kueC10aGlzLnN0YXJ0UG9pbnRzLnBvaW50LngsYT10aGlzLnN0YXJ0UG9pbnRzLmJveC55K2kueS10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lnkscj10aGlzLmNvbnN0cmFpbnQsbj1pLngtdGhpcy5zdGFydFBvaW50cy5wb2ludC54LG89aS55LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueTtpZih0aGlzLmVsLmZpcmUoXCJkcmFnbW92ZVwiLHtldmVudDp0LHA6aSxtOnRoaXMubSxoYW5kbGVyOnRoaXN9KSx0aGlzLmVsLmV2ZW50KCkuZGVmYXVsdFByZXZlbnRlZClyZXR1cm4gaTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByKXt2YXIgbD1yLmNhbGwodGhpcy5lbCxzLGEsdGhpcy5tKTtcImJvb2xlYW5cIj09dHlwZW9mIGwmJihsPXt4OmwseTpsfSksITA9PT1sLng/dGhpcy5lbC54KHMpOiExIT09bC54JiZ0aGlzLmVsLngobC54KSwhMD09PWwueT90aGlzLmVsLnkoYSk6ITEhPT1sLnkmJnRoaXMuZWwueShsLnkpfWVsc2VcIm9iamVjdFwiPT10eXBlb2YgciYmKG51bGwhPXIubWluWCYmczxyLm1pblg/bj0ocz1yLm1pblgpLXRoaXMuc3RhcnRQb2ludHMuYm94Lng6bnVsbCE9ci5tYXhYJiZzPnIubWF4WC1lLndpZHRoJiYobj0ocz1yLm1heFgtZS53aWR0aCktdGhpcy5zdGFydFBvaW50cy5ib3gueCksbnVsbCE9ci5taW5ZJiZhPHIubWluWT9vPShhPXIubWluWSktdGhpcy5zdGFydFBvaW50cy5ib3gueTpudWxsIT1yLm1heFkmJmE+ci5tYXhZLWUuaGVpZ2h0JiYobz0oYT1yLm1heFktZS5oZWlnaHQpLXRoaXMuc3RhcnRQb2ludHMuYm94LnkpLG51bGwhPXIuc25hcFRvR3JpZCYmKHMtPXMlci5zbmFwVG9HcmlkLGEtPWElci5zbmFwVG9HcmlkLG4tPW4lci5zbmFwVG9HcmlkLG8tPW8lci5zbmFwVG9HcmlkKSx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLkc/dGhpcy5lbC5tYXRyaXgodGhpcy5zdGFydFBvaW50cy50cmFuc2Zvcm0pLnRyYW5zZm9ybSh7eDpuLHk6b30sITApOnRoaXMuZWwubW92ZShzLGEpKTtyZXR1cm4gaX0sdC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZHJhZyh0KTt0aGlzLmVsLmZpcmUoXCJkcmFnZW5kXCIse2V2ZW50OnQscDplLG06dGhpcy5tLGhhbmRsZXI6dGhpc30pLFNWRy5vZmYod2luZG93LFwibW91c2Vtb3ZlLmRyYWdcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaG1vdmUuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNldXAuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNoZW5kLmRyYWdcIil9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse2RyYWdnYWJsZTpmdW5jdGlvbihlLGkpe1wiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJlwib2JqZWN0XCIhPXR5cGVvZiBlfHwoaT1lLGU9ITApO3ZhciBzPXRoaXMucmVtZW1iZXIoXCJfZHJhZ2dhYmxlXCIpfHxuZXcgdCh0aGlzKTtyZXR1cm4oZT12b2lkIDA9PT1lfHxlKT9zLmluaXQoaXx8e30sZSk6KHRoaXMub2ZmKFwibW91c2Vkb3duLmRyYWdcIiksdGhpcy5vZmYoXCJ0b3VjaHN0YXJ0LmRyYWdcIikpLHRoaXN9fSl9LmNhbGwodm9pZCAwKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5lbD10LHQucmVtZW1iZXIoXCJfc2VsZWN0SGFuZGxlclwiLHRoaXMpLHRoaXMucG9pbnRTZWxlY3Rpb249e2lzU2VsZWN0ZWQ6ITF9LHRoaXMucmVjdFNlbGVjdGlvbj17aXNTZWxlY3RlZDohMX19dC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZWwuYmJveCgpO2Zvcih2YXIgcyBpbiB0aGlzLm9wdGlvbnM9e30sdGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHMpdGhpcy5vcHRpb25zW3NdPXRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzW3NdLHZvaWQgMCE9PWVbc10mJih0aGlzLm9wdGlvbnNbc109ZVtzXSk7dGhpcy5wYXJlbnQ9dGhpcy5lbC5wYXJlbnQoKSx0aGlzLm5lc3RlZD10aGlzLm5lc3RlZHx8dGhpcy5wYXJlbnQuZ3JvdXAoKSx0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKGkueCxpLnkpKSx0aGlzLm9wdGlvbnMuZGVlcFNlbGVjdCYmLTEhPT1bXCJsaW5lXCIsXCJwb2x5bGluZVwiLFwicG9seWdvblwiXS5pbmRleE9mKHRoaXMuZWwudHlwZSk/dGhpcy5zZWxlY3RQb2ludHModCk6dGhpcy5zZWxlY3RSZWN0KHQpLHRoaXMub2JzZXJ2ZSgpLHRoaXMuY2xlYW51cCgpfSx0LnByb3RvdHlwZS5zZWxlY3RQb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZD10LHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0P3RoaXM6KHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0PXRoaXMucGFyZW50LnNldCgpLHRoaXMuZHJhd0NpcmNsZXMoKSx0aGlzKX0sdC5wcm90b3R5cGUuZ2V0UG9pbnRBcnJheT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWwuYmJveCgpO3JldHVybiB0aGlzLmVsLmFycmF5KCkudmFsdWVPZigpLm1hcChmdW5jdGlvbihlKXtyZXR1cm5bZVswXS10LngsZVsxXS10LnldfSl9LHQucHJvdG90eXBlLmRyYXdDaXJjbGVzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLmdldFBvaW50QXJyYXkoKSxpPTAscz1lLmxlbmd0aDtpPHM7KytpKXt2YXIgYT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSl7KGk9aXx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9pLnByZXZlbnREZWZhdWx0KCk6aS5yZXR1cm5WYWx1ZT0hMSxpLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBzPWkucGFnZVh8fGkudG91Y2hlc1swXS5wYWdlWCxhPWkucGFnZVl8fGkudG91Y2hlc1swXS5wYWdlWTt0LmVsLmZpcmUoXCJwb2ludFwiLHt4OnMseTphLGk6ZSxldmVudDppfSl9fShpKTt0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5hZGQodGhpcy5uZXN0ZWQuY2lyY2xlKHRoaXMub3B0aW9ucy5yYWRpdXMpLmNlbnRlcihlW2ldWzBdLGVbaV1bMV0pLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cykuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3BvaW50XCIpLm9uKFwidG91Y2hzdGFydFwiLGEpLm9uKFwibW91c2Vkb3duXCIsYSkpfX0sdC5wcm90b3R5cGUudXBkYXRlUG9pbnRTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldFBvaW50QXJyYXkoKTt0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5lYWNoKGZ1bmN0aW9uKGUpe3RoaXMuY3goKT09PXRbZV1bMF0mJnRoaXMuY3koKT09PXRbZV1bMV18fHRoaXMuY2VudGVyKHRbZV1bMF0sdFtlXVsxXSl9KX0sdC5wcm90b3R5cGUudXBkYXRlUmVjdFNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWwuYmJveCgpO3RoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDApLmF0dHIoe3dpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fSksdGhpcy5vcHRpb25zLnBvaW50cyYmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDIpLmNlbnRlcih0LndpZHRoLDApLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDMpLmNlbnRlcih0LndpZHRoLHQuaGVpZ2h0KSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCg0KS5jZW50ZXIoMCx0LmhlaWdodCksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoNSkuY2VudGVyKHQud2lkdGgvMiwwKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCg2KS5jZW50ZXIodC53aWR0aCx0LmhlaWdodC8yKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCg3KS5jZW50ZXIodC53aWR0aC8yLHQuaGVpZ2h0KSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCg4KS5jZW50ZXIoMCx0LmhlaWdodC8yKSksdGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQmJih0aGlzLm9wdGlvbnMucG9pbnRzP3RoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDkpLmNlbnRlcih0LndpZHRoLzIsMjApOnRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDEpLmNlbnRlcih0LndpZHRoLzIsMjApKX0sdC5wcm90b3R5cGUuc2VsZWN0UmVjdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy5lbC5iYm94KCk7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oaSl7KGk9aXx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9pLnByZXZlbnREZWZhdWx0KCk6aS5yZXR1cm5WYWx1ZT0hMSxpLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBzPWkucGFnZVh8fGkudG91Y2hlc1swXS5wYWdlWCxhPWkucGFnZVl8fGkudG91Y2hlc1swXS5wYWdlWTtlLmVsLmZpcmUodCx7eDpzLHk6YSxldmVudDppfSl9fWlmKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkPXQsdGhpcy5yZWN0U2VsZWN0aW9uLnNldD10aGlzLnJlY3RTZWxlY3Rpb24uc2V0fHx0aGlzLnBhcmVudC5zZXQoKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKXx8dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5hZGQodGhpcy5uZXN0ZWQucmVjdChpLndpZHRoLGkuaGVpZ2h0KS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NSZWN0KSksdGhpcy5vcHRpb25zLnBvaW50cyYmIXRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDEpKXt2YXIgYT1cInRvdWNoc3RhcnRcIixyPVwibW91c2Vkb3duXCI7dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5hZGQodGhpcy5uZXN0ZWQuY2lyY2xlKHRoaXMub3B0aW9ucy5yYWRpdXMpLmNlbnRlcigwLDApLmF0dHIoXCJjbGFzc1wiLHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl9sdFwiKS5vbihyLHMoXCJsdFwiKSkub24oYSxzKFwibHRcIikpKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZCh0aGlzLm5lc3RlZC5jaXJjbGUodGhpcy5vcHRpb25zLnJhZGl1cykuY2VudGVyKGkud2lkdGgsMCkuYXR0cihcImNsYXNzXCIsdGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3J0XCIpLm9uKHIscyhcInJ0XCIpKS5vbihhLHMoXCJydFwiKSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHRoaXMubmVzdGVkLmNpcmNsZSh0aGlzLm9wdGlvbnMucmFkaXVzKS5jZW50ZXIoaS53aWR0aCxpLmhlaWdodCkuYXR0cihcImNsYXNzXCIsdGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3JiXCIpLm9uKHIscyhcInJiXCIpKS5vbihhLHMoXCJyYlwiKSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHRoaXMubmVzdGVkLmNpcmNsZSh0aGlzLm9wdGlvbnMucmFkaXVzKS5jZW50ZXIoMCxpLmhlaWdodCkuYXR0cihcImNsYXNzXCIsdGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX2xiXCIpLm9uKHIscyhcImxiXCIpKS5vbihhLHMoXCJsYlwiKSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHRoaXMubmVzdGVkLmNpcmNsZSh0aGlzLm9wdGlvbnMucmFkaXVzKS5jZW50ZXIoaS53aWR0aC8yLDApLmF0dHIoXCJjbGFzc1wiLHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl90XCIpLm9uKHIscyhcInRcIikpLm9uKGEscyhcInRcIikpKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZCh0aGlzLm5lc3RlZC5jaXJjbGUodGhpcy5vcHRpb25zLnJhZGl1cykuY2VudGVyKGkud2lkdGgsaS5oZWlnaHQvMikuYXR0cihcImNsYXNzXCIsdGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3JcIikub24ocixzKFwiclwiKSkub24oYSxzKFwiclwiKSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHRoaXMubmVzdGVkLmNpcmNsZSh0aGlzLm9wdGlvbnMucmFkaXVzKS5jZW50ZXIoaS53aWR0aC8yLGkuaGVpZ2h0KS5hdHRyKFwiY2xhc3NcIix0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMrXCJfYlwiKS5vbihyLHMoXCJiXCIpKS5vbihhLHMoXCJiXCIpKSksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5hZGQodGhpcy5uZXN0ZWQuY2lyY2xlKHRoaXMub3B0aW9ucy5yYWRpdXMpLmNlbnRlcigwLGkuaGVpZ2h0LzIpLmF0dHIoXCJjbGFzc1wiLHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl9sXCIpLm9uKHIscyhcImxcIikpLm9uKGEscyhcImxcIikpKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmVhY2goZnVuY3Rpb24oKXt0aGlzLmFkZENsYXNzKGUub3B0aW9ucy5jbGFzc1BvaW50cyl9KX1pZih0aGlzLm9wdGlvbnMucm90YXRpb25Qb2ludCYmKHRoaXMub3B0aW9ucy5wb2ludHMmJiF0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCg5KXx8IXRoaXMub3B0aW9ucy5wb2ludHMmJiF0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgxKSkpe3ZhciBuPWZ1bmN0aW9uKHQpeyh0PXR8fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQucmV0dXJuVmFsdWU9ITEsdC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaT10LnBhZ2VYfHx0LnRvdWNoZXNbMF0ucGFnZVgscz10LnBhZ2VZfHx0LnRvdWNoZXNbMF0ucGFnZVk7ZS5lbC5maXJlKFwicm90XCIse3g6aSx5OnMsZXZlbnQ6dH0pfTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZCh0aGlzLm5lc3RlZC5jaXJjbGUodGhpcy5vcHRpb25zLnJhZGl1cykuY2VudGVyKGkud2lkdGgvMiwyMCkuYXR0cihcImNsYXNzXCIsdGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3JvdFwiKS5vbihcInRvdWNoc3RhcnRcIixuKS5vbihcIm1vdXNlZG93blwiLG4pKX19LHQucHJvdG90eXBlLmhhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTt0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKHQueCx0LnkpKSx0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy51cGRhdGVSZWN0U2VsZWN0aW9uKCksdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnVwZGF0ZVBvaW50U2VsZWN0aW9uKCl9LHQucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKE11dGF0aW9uT2JzZXJ2ZXIpaWYodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCl0aGlzLm9ic2VydmVySW5zdD10aGlzLm9ic2VydmVySW5zdHx8bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXt0LmhhbmRsZXIoKX0pLHRoaXMub2JzZXJ2ZXJJbnN0Lm9ic2VydmUodGhpcy5lbC5ub2RlLHthdHRyaWJ1dGVzOiEwfSk7ZWxzZSB0cnl7dGhpcy5vYnNlcnZlckluc3QuZGlzY29ubmVjdCgpLGRlbGV0ZSB0aGlzLm9ic2VydmVySW5zdH1jYXRjaCh0KXt9ZWxzZSB0aGlzLmVsLm9mZihcIkRPTUF0dHJNb2RpZmllZC5zZWxlY3RcIiksKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkfHx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQpJiZ0aGlzLmVsLm9uKFwiRE9NQXR0ck1vZGlmaWVkLnNlbGVjdFwiLGZ1bmN0aW9uKCl7dC5oYW5kbGVyKCl9KX0sdC5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbigpeyF0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5yZWN0U2VsZWN0aW9uLnNldCYmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaChmdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9KSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmNsZWFyKCksZGVsZXRlIHRoaXMucmVjdFNlbGVjdGlvbi5zZXQpLCF0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMucG9pbnRTZWxlY3Rpb24uc2V0JiYodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaChmdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9KSx0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5jbGVhcigpLGRlbGV0ZSB0aGlzLnBvaW50U2VsZWN0aW9uLnNldCksdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkfHx0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8KHRoaXMubmVzdGVkLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLm5lc3RlZCl9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse3NlbGVjdGl6ZTpmdW5jdGlvbihlLGkpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiYoaT1lLGU9ITApLCh0aGlzLnJlbWVtYmVyKFwiX3NlbGVjdEhhbmRsZXJcIil8fG5ldyB0KHRoaXMpKS5pbml0KHZvaWQgMD09PWV8fGUsaXx8e30pLHRoaXN9fSksU1ZHLkVsZW1lbnQucHJvdG90eXBlLnNlbGVjdGl6ZS5kZWZhdWx0cz17cG9pbnRzOiEwLGNsYXNzUmVjdDpcInN2Z19zZWxlY3RfYm91bmRpbmdSZWN0XCIsY2xhc3NQb2ludHM6XCJzdmdfc2VsZWN0X3BvaW50c1wiLHJhZGl1czo3LHJvdGF0aW9uUG9pbnQ6ITAsZGVlcFNlbGVjdDohMX19KCksZnVuY3Rpb24oKXsoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3QucmVtZW1iZXIoXCJfcmVzaXplSGFuZGxlclwiLHRoaXMpLHRoaXMuZWw9dCx0aGlzLnBhcmFtZXRlcnM9e30sdGhpcy5sYXN0VXBkYXRlQ2FsbD1udWxsLHRoaXMucD10LmRvYygpLm5vZGUuY3JlYXRlU1ZHUG9pbnQoKX10LnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucC54PXQtKHRoaXMub2Zmc2V0Lngtd2luZG93LnBhZ2VYT2Zmc2V0KSx0aGlzLnAueT1lLSh0aGlzLm9mZnNldC55LXdpbmRvdy5wYWdlWU9mZnNldCksdGhpcy5wLm1hdHJpeFRyYW5zZm9ybShpfHx0aGlzLm0pfSx0LnByb3RvdHlwZS5fZXh0cmFjdFBvc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybnt4Om51bGwhPXQuY2xpZW50WD90LmNsaWVudFg6dC50b3VjaGVzWzBdLmNsaWVudFgseTpudWxsIT10LmNsaWVudFk/dC5jbGllbnRZOnQudG91Y2hlc1swXS5jbGllbnRZfX0sdC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMuc3RvcCgpLFwic3RvcFwiIT09dCl7Zm9yKHZhciBpIGluIHRoaXMub3B0aW9ucz17fSx0aGlzLmVsLnJlc2l6ZS5kZWZhdWx0cyl0aGlzLm9wdGlvbnNbaV09dGhpcy5lbC5yZXNpemUuZGVmYXVsdHNbaV0sdm9pZCAwIT09dFtpXSYmKHRoaXMub3B0aW9uc1tpXT10W2ldKTt0aGlzLmVsLm9uKFwibHQucmVzaXplXCIsZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pLHRoaXMuZWwub24oXCJydC5yZXNpemVcIixmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSksdGhpcy5lbC5vbihcInJiLnJlc2l6ZVwiLGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwibGIucmVzaXplXCIsZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pLHRoaXMuZWwub24oXCJ0LnJlc2l6ZVwiLGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwici5yZXNpemVcIixmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSksdGhpcy5lbC5vbihcImIucmVzaXplXCIsZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pLHRoaXMuZWwub24oXCJsLnJlc2l6ZVwiLGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwicm90LnJlc2l6ZVwiLGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwicG9pbnQucmVzaXplXCIsZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pLHRoaXMudXBkYXRlKCl9fSx0LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWwub2ZmKFwibHQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicnQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicmIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibGIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwidC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcImIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyb3QucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicG9pbnQucmVzaXplXCIpLHRoaXN9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMubT10aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpLHRoaXMub2Zmc2V0PXt4OndpbmRvdy5wYWdlWE9mZnNldCx5OndpbmRvdy5wYWdlWU9mZnNldH07dmFyIGk9dGhpcy5fZXh0cmFjdFBvc2l0aW9uKHQuZGV0YWlsLmV2ZW50KTtpZih0aGlzLnBhcmFtZXRlcnM9e3R5cGU6dGhpcy5lbC50eXBlLHA6dGhpcy50cmFuc2Zvcm1Qb2ludChpLngsaS55KSx4OnQuZGV0YWlsLngseTp0LmRldGFpbC55LGJveDp0aGlzLmVsLmJib3goKSxyb3RhdGlvbjp0aGlzLmVsLnRyYW5zZm9ybSgpLnJvdGF0aW9ufSxcInRleHRcIj09PXRoaXMuZWwudHlwZSYmKHRoaXMucGFyYW1ldGVycy5mb250U2l6ZT10aGlzLmVsLmF0dHIoKVtcImZvbnQtc2l6ZVwiXSksdm9pZCAwIT09dC5kZXRhaWwuaSl7dmFyIHM9dGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTt0aGlzLnBhcmFtZXRlcnMuaT10LmRldGFpbC5pLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkcz1bc1t0LmRldGFpbC5pXVswXSxzW3QuZGV0YWlsLmldWzFdXX1zd2l0Y2godC50eXBlKXtjYXNlXCJsdFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGkpLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJydFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSwhMCksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJyYlwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMCk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZVwibGJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDEpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGksITApLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZVwidFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJyXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLndpZHRoKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXSl9fTticmVhaztjYXNlXCJiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJsXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwxKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSkud2lkdGgodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdKX19O2JyZWFrO2Nhc2VcInJvdFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXQrdGhpcy5wYXJhbWV0ZXJzLnAueCxzPWUrdGhpcy5wYXJhbWV0ZXJzLnAueSxhPU1hdGguYXRhbjIodGhpcy5wYXJhbWV0ZXJzLnAueS10aGlzLnBhcmFtZXRlcnMuYm94LnktdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQvMix0aGlzLnBhcmFtZXRlcnMucC54LXRoaXMucGFyYW1ldGVycy5ib3gueC10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLzIpLHI9TWF0aC5hdGFuMihzLXRoaXMucGFyYW1ldGVycy5ib3gueS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC8yLGktdGhpcy5wYXJhbWV0ZXJzLmJveC54LXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvMiksbj10aGlzLnBhcmFtZXRlcnMucm90YXRpb24rMTgwKihyLWEpL01hdGguUEkrdGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlLzI7dGhpcy5lbC5jZW50ZXIodGhpcy5wYXJhbWV0ZXJzLmJveC5jeCx0aGlzLnBhcmFtZXRlcnMuYm94LmN5KS5yb3RhdGUobi1uJXRoaXMub3B0aW9ucy5zbmFwVG9BbmdsZSx0aGlzLnBhcmFtZXRlcnMuYm94LmN4LHRoaXMucGFyYW1ldGVycy5ib3guY3kpfTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzBdLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXSkscz10aGlzLmVsLmFycmF5KCkudmFsdWVPZigpO3NbdGhpcy5wYXJhbWV0ZXJzLmldWzBdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1swXStpWzBdLHNbdGhpcy5wYXJhbWV0ZXJzLmldWzFdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXStpWzFdLHRoaXMuZWwucGxvdChzKX19dGhpcy5lbC5maXJlKFwicmVzaXplc3RhcnRcIix7ZHg6dGhpcy5wYXJhbWV0ZXJzLngsZHk6dGhpcy5wYXJhbWV0ZXJzLnksZXZlbnQ6dH0pLFNWRy5vbih3aW5kb3csXCJ0b3VjaG1vdmUucmVzaXplXCIsZnVuY3Rpb24odCl7ZS51cGRhdGUodHx8d2luZG93LmV2ZW50KX0pLFNWRy5vbih3aW5kb3csXCJ0b3VjaGVuZC5yZXNpemVcIixmdW5jdGlvbigpe2UuZG9uZSgpfSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNlbW92ZS5yZXNpemVcIixmdW5jdGlvbih0KXtlLnVwZGF0ZSh0fHx3aW5kb3cuZXZlbnQpfSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNldXAucmVzaXplXCIsZnVuY3Rpb24oKXtlLmRvbmUoKX0pfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9dGhpcy5fZXh0cmFjdFBvc2l0aW9uKHQpLGk9dGhpcy50cmFuc2Zvcm1Qb2ludChlLngsZS55KSxzPWkueC10aGlzLnBhcmFtZXRlcnMucC54LGE9aS55LXRoaXMucGFyYW1ldGVycy5wLnk7dGhpcy5sYXN0VXBkYXRlQ2FsbD1bcyxhXSx0aGlzLmNhbGMocyxhKSx0aGlzLmVsLmZpcmUoXCJyZXNpemluZ1wiLHtkeDpzLGR5OmEsZXZlbnQ6dH0pfWVsc2UgdGhpcy5sYXN0VXBkYXRlQ2FsbCYmdGhpcy5jYWxjKHRoaXMubGFzdFVwZGF0ZUNhbGxbMF0sdGhpcy5sYXN0VXBkYXRlQ2FsbFsxXSl9LHQucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24oKXt0aGlzLmxhc3RVcGRhdGVDYWxsPW51bGwsU1ZHLm9mZih3aW5kb3csXCJtb3VzZW1vdmUucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwibW91c2V1cC5yZXNpemVcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaG1vdmUucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2hlbmQucmVzaXplXCIpLHRoaXMuZWwuZmlyZShcInJlc2l6ZWRvbmVcIil9LHQucHJvdG90eXBlLnNuYXBUb0dyaWQ9ZnVuY3Rpb24odCxlLGkscyl7dmFyIGE7cmV0dXJuIHZvaWQgMCE9PXM/YT1bKGkrdCkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWQsKHMrZSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWRdOihpPW51bGw9PWk/MzppLGE9Wyh0aGlzLnBhcmFtZXRlcnMuYm94LngrdCsoMSZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCkpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLCh0aGlzLnBhcmFtZXRlcnMuYm94LnkrZSsoMiZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQpKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZF0pLHQ8MCYmKGFbMF0tPXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSxlPDAmJihhWzFdLT10aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksdC09TWF0aC5hYnMoYVswXSk8dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQvMj9hWzBdOmFbMF0tKHQ8MD8tdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQ6dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLGUtPU1hdGguYWJzKGFbMV0pPHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLzI/YVsxXTphWzFdLShlPDA/LXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkOnRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSx0aGlzLmNvbnN0cmFpbnRUb0JveCh0LGUsaSxzKX0sdC5wcm90b3R5cGUuY29uc3RyYWludFRvQm94PWZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhLHIsbj10aGlzLm9wdGlvbnMuY29uc3RyYWludHx8e307cmV0dXJuIHZvaWQgMCE9PXM/KGE9aSxyPXMpOihhPXRoaXMucGFyYW1ldGVycy5ib3gueCsoMSZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCkscj10aGlzLnBhcmFtZXRlcnMuYm94LnkrKDImaT8wOnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0KSksdm9pZCAwIT09bi5taW5YJiZhK3Q8bi5taW5YJiYodD1uLm1pblgtYSksdm9pZCAwIT09bi5tYXhYJiZhK3Q+bi5tYXhYJiYodD1uLm1heFgtYSksdm9pZCAwIT09bi5taW5ZJiZyK2U8bi5taW5ZJiYoZT1uLm1pblktciksdm9pZCAwIT09bi5tYXhZJiZyK2U+bi5tYXhZJiYoZT1uLm1heFktciksW3QsZV19LHQucHJvdG90eXBlLmNoZWNrQXNwZWN0UmF0aW89ZnVuY3Rpb24odCxlKXtpZighdGhpcy5vcHRpb25zLnNhdmVBc3BlY3RSYXRpbylyZXR1cm4gdDt2YXIgaT10LnNsaWNlKCkscz10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoL3RoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LGE9dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCt0WzBdLHI9dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtdFsxXSxuPWEvcjtyZXR1cm4gbjxzPyhpWzFdPWEvcy10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCxlJiYoaVsxXT0taVsxXSkpOm4+cyYmKGlbMF09dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1yKnMsZSYmKGlbMF09LWlbMF0pKSxpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtyZXNpemU6ZnVuY3Rpb24oZSl7cmV0dXJuKHRoaXMucmVtZW1iZXIoXCJfcmVzaXplSGFuZGxlclwiKXx8bmV3IHQodGhpcykpLmluaXQoZXx8e30pLHRoaXN9fSksU1ZHLkVsZW1lbnQucHJvdG90eXBlLnJlc2l6ZS5kZWZhdWx0cz17c25hcFRvQW5nbGU6LjEsc25hcFRvR3JpZDoxLGNvbnN0cmFpbnQ6e30sc2F2ZUFzcGVjdFJhdGlvOiExfX0pLmNhbGwodGhpcyl9KCk7dmFyIGNzcz0nLmFwZXhjaGFydHMtY2FudmFzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgLyogY2Fubm90IGdpdmUgb3ZlcmZsb3c6IGhpZGRlbiBhcyBpdCB3aWxsIGNyb3AgdG9vbHRpcHMgd2hpY2ggb3ZlcmZsb3cgb3V0c2lkZSBjaGFydCBhcmVhICovXFxufVxcblxcbi8qIHNjcm9sbGJhciBpcyBub3QgdmlzaWJsZSBieSBkZWZhdWx0IGZvciBsZWdlbmQsIGhlbmNlIGZvcmNpbmcgdGhlIHZpc2liaWxpdHkgKi9cXG4uYXBleGNoYXJ0cy1jYW52YXMgOjotd2Via2l0LXNjcm9sbGJhciB7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxuICB3aWR0aDogNnB4O1xcbn1cXG4uYXBleGNoYXJ0cy1jYW52YXMgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcXG4gIGJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7XFxufVxcbi5hcGV4Y2hhcnRzLWNhbnZhcy5kYXJrIHtcXG4gIGJhY2tncm91bmQ6ICMzNDNGNTc7XFxufVxcblxcbi5hcGV4Y2hhcnRzLWlubmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuXFxuLmxlZ2VuZC1tb3VzZW92ZXItaW5hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XFxuICBvcGFjaXR5OiAwLjIwO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblxcbi5hcGV4Y2hhcnRzLWdyaWRsaW5lLCAuYXBleGNoYXJ0cy10ZXh0IHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwIHtcXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gIGJveC1zaGFkb3c6IDJweCAycHggNnB4IC00cHggIzk5OTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGxlZnQ6IDYycHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDIwcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIHotaW5kZXg6IDEyO1xcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XFxufVxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAubGlnaHQge1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UzZTNlMztcXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Nik7XFxufVxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuZGFyayB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMzAsMzAsMzAsIDAuOCk7XFxufVxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAgKiB7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcCAuYXBleGNoYXJ0cy1tYXJrZXIsXFxuLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtYXJlYSxcXG4uYXBleGNoYXJ0cy1saW5lIHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xcbiAgcGFkZGluZzogNnB4O1xcbiAgZm9udC1zaXplOiAxNXB4O1xcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xcbn1cXG4uYXBleGNoYXJ0cy10b29sdGlwLmxpZ2h0IC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xcbiAgYmFja2dyb3VuZDogI0VDRUZGMTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xcbn1cXG4uYXBleGNoYXJ0cy10b29sdGlwLmRhcmsgLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNyk7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzMztcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXZhbHVlLFxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBtYXJnaW4tbGVmdDogNXB4O1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei1sYWJlbDplbXB0eSxcXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZTplbXB0eSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtdmFsdWUsIFxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlIHtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcXG4gIHdpZHRoOiAxMnB4O1xcbiAgaGVpZ2h0OiAxMnB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdG9wOiAwcHg7XFxuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwIHtcXG4gIHBhZGRpbmc6IDAgMTBweDtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAuYWN0aXZlIC5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcXG4gIG9wYWNpdHk6IDE7XFxufVxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFjdGl2ZSwgLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXA6bGFzdC1jaGlsZCB7XFxuICBwYWRkaW5nLWJvdHRvbTogNHB4O1xcbn1cXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW4ge1xcbiAgb3BhY2l0eTogMDtcXG4gIGhlaWdodDogMDtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbn1cXG4uYXBleGNoYXJ0cy10b29sdGlwLXktZ3JvdXAge1xcbiAgcGFkZGluZzogNnB4IDAgNXB4O1xcbn1cXG4uYXBleGNoYXJ0cy10b29sdGlwLWNhbmRsZXN0aWNrIHtcXG4gIHBhZGRpbmc6IDRweCA4cHg7XFxufVxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtY2FuZGxlc3RpY2sgPiBkaXYge1xcbiAgbWFyZ2luOiA0cHggMDtcXG59XFxuLmFwZXhjaGFydHMtdG9vbHRpcC1jYW5kbGVzdGljayBzcGFuLnZhbHVlIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIHtcXG4gIHBhZGRpbmc6IDVweCA4cHg7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIgLmNhdGVnb3J5IHtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBjb2xvcjogIzc3NztcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuc2VyaWVzLW5hbWUge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG1hcmdpbi1ib3R0b206IDVweDtcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwYWRkaW5nOiA5cHggMTBweDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgY29sb3I6ICMzNzNkM2Y7XFxuICBmb250LXNpemU6IDEzcHg7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMDtcXG5cXHRiYWNrZ3JvdW5kOiAjRUNFRkYxO1xcbiAgYm9yZGVyOiAxcHggc29saWQgIzkwQTRBRTtcXG4gIHRyYW5zaXRpb246IDAuMTVzIGVhc2UgYWxsO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAuZGFyayB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNyk7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNSk7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyLCAuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG5cXHRsZWZ0OiA1MCU7XFxuXFx0Ym9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcXG5cXHRjb250ZW50OiBcIiBcIjtcXG5cXHRoZWlnaHQ6IDA7XFxuXFx0d2lkdGg6IDA7XFxuXFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YWZ0ZXIge1xcblxcdGJvcmRlci1jb2xvcjogcmdiYSgyMzYsIDIzOSwgMjQxLCAwKTtcXG5cXHRib3JkZXItd2lkdGg6IDZweDtcXG5cXHRtYXJnaW4tbGVmdDogLTZweDtcXG59XFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmJlZm9yZSB7XFxuXFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDE0NCwgMTY0LCAxNzQsIDApO1xcblxcdGJvcmRlci13aWR0aDogN3B4O1xcblxcdG1hcmdpbi1sZWZ0OiAtN3B4O1xcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyLCAuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmJlZm9yZSB7XFxuICBib3R0b206IDEwMCU7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIsIC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcXG4gIHRvcDogMTAwJTtcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjRUNFRkYxO1xcbn1cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmJlZm9yZSB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjOTBBNEFFO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tLmRhcms6YWZ0ZXIge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xcbn1cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tLmRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiNFQ0VGRjFcXG59XFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDpiZWZvcmUge1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogIzkwQTRBRTtcXG59XFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcC5kYXJrOmFmdGVyIHtcXG4gIGJvcmRlci10b3AtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjUpO1xcbn1cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wLmRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcXG59XFxuXFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLmFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCB7XFxuICBvcGFjaXR5OiAwO1xcbiAgcGFkZGluZzogNHB4IDEwcHg7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGNvbG9yOiAjMzczZDNmO1xcbiAgZm9udC1zaXplOiAxM3B4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTA7XFxuXFx0YmFja2dyb3VuZDogI0VDRUZGMTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICM5MEE0QUU7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5kYXJrIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC41KTtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YWZ0ZXIsIC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xcblxcdHRvcDogNTAlO1xcblxcdGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XFxuXFx0Y29udGVudDogXCIgXCI7XFxuXFx0aGVpZ2h0OiAwO1xcblxcdHdpZHRoOiAwO1xcblxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXHRwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmFmdGVyIHtcXG5cXHRib3JkZXItY29sb3I6IHJnYmEoMjM2LCAyMzksIDI0MSwgMCk7XFxuXFx0Ym9yZGVyLXdpZHRoOiA2cHg7XFxuXFx0bWFyZ2luLXRvcDogLTZweDtcXG59XFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmJlZm9yZSB7XFxuXFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDE0NCwgMTY0LCAxNzQsIDApO1xcblxcdGJvcmRlci13aWR0aDogN3B4O1xcblxcdG1hcmdpbi10b3A6IC03cHg7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmFmdGVyLCAuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xcbiAgbGVmdDogMTAwJTtcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmFmdGVyLCAuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcXG4gIHJpZ2h0OiAxMDAlO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDphZnRlciB7XFxuICBib3JkZXItbGVmdC1jb2xvcjogI0VDRUZGMTtcXG59XFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YmVmb3JlIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjOTBBNEFFO1xcbn1cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdC5kYXJrOmFmdGVyIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XFxufVxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0LmRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDphZnRlciB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6ICNFQ0VGRjE7XFxufVxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDpiZWZvcmUge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTBBNEFFO1xcbn1cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQuZGFyazphZnRlciB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcXG59XFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0LmRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAuYWN0aXZlIHtcXG4gIG9wYWNpdHk6IDE7XFxufVxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW4ge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLmFwZXhjaGFydHMteGNyb3NzaGFpcnMsIC5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzIHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zaXRpb246IDAuMTVzIGVhc2UgYWxsO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycy5hY3RpdmUsIC5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLmFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlbiB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy16b29tLXJlY3Qge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0IHtcXG4gIGN1cnNvcjogbW92ZTtcXG59XFxuXFxuLnN2Z19zZWxlY3RfcG9pbnRzLCAuc3ZnX3NlbGVjdF9wb2ludHNfcm90IHtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxufVxcbi5zdmdfc2VsZWN0X3BvaW50c19sLCAuc3ZnX3NlbGVjdF9wb2ludHNfciB7XFxuICBjdXJzb3I6IGV3LXJlc2l6ZTtcXG4gIG9wYWNpdHk6IDE7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgZmlsbDogIzg4ODtcXG59XFxuLmFwZXhjaGFydHMtY2FudmFzLnpvb21hYmxlIC5ob3ZlcmluZy16b29tIHtcXG4gIGN1cnNvcjogY3Jvc3NoYWlyXFxufVxcbi5hcGV4Y2hhcnRzLWNhbnZhcy56b29tYWJsZSAuaG92ZXJpbmctcGFuIHtcXG4gIGN1cnNvcjogbW92ZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpcyxcXG4uYXBleGNoYXJ0cy15YXhpcyB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuXFxuLmFwZXhjaGFydHMtem9vbS1pY29uLCBcXG4uYXBleGNoYXJ0cy16b29tLWluLWljb24sXFxuLmFwZXhjaGFydHMtem9vbS1vdXQtaWNvbixcXG4uYXBleGNoYXJ0cy1yZXNldC16b29tLWljb24sIFxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uLCBcXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbixcXG4uYXBleGNoYXJ0cy1tZW51LWljb24sIFxcbi5hcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24ge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBsaW5lLWhlaWdodDogMjRweDtcXG4gIGNvbG9yOiAjNkU4MTkyO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG5cXG5cXG4uYXBleGNoYXJ0cy16b29tLWljb24gc3ZnLCBcXG4uYXBleGNoYXJ0cy16b29tLWluLWljb24gc3ZnLFxcbi5hcGV4Y2hhcnRzLXpvb20tb3V0LWljb24gc3ZnLFxcbi5hcGV4Y2hhcnRzLXJlc2V0LXpvb20taWNvbiBzdmcsXFxuLmFwZXhjaGFydHMtbWVudS1pY29uIHN2ZyB7XFxuICBmaWxsOiAjNkU4MTkyO1xcbn1cXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiBzdmcge1xcbiAgZmlsbDogIzQ0NDtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC43NilcXG59XFxuXFxuLmRhcmsgLmFwZXhjaGFydHMtem9vbS1pY29uIHN2ZywgXFxuLmRhcmsgLmFwZXhjaGFydHMtem9vbS1pbi1pY29uIHN2ZyxcXG4uZGFyayAuYXBleGNoYXJ0cy16b29tLW91dC1pY29uIHN2ZyxcXG4uZGFyayAuYXBleGNoYXJ0cy1yZXNldC16b29tLWljb24gc3ZnLCBcXG4uZGFyayAuYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcsIFxcbi5kYXJrIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHN2ZyxcXG4uZGFyayAuYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLCBcXG4uZGFyayAuYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIHN2Z3tcXG4gIGZpbGw6ICNmM2Y0ZjU7XFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy16b29tLWljb24uc2VsZWN0ZWQgc3ZnLCBcXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24uc2VsZWN0ZWQgc3ZnLCBcXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtcmVzZXQtem9vbS1pY29uLnNlbGVjdGVkIHN2ZyB7XFxuICBmaWxsOiAjMDA4RkZCO1xcbn1cXG4ubGlnaHQgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb246bm90KC5zZWxlY3RlZCk6aG92ZXIgc3ZnLFxcbi5saWdodCAuYXBleGNoYXJ0cy16b29tLWljb246bm90KC5zZWxlY3RlZCk6aG92ZXIgc3ZnLCBcXG4ubGlnaHQgLmFwZXhjaGFydHMtem9vbS1pbi1pY29uOmhvdmVyIHN2ZywgXFxuLmxpZ2h0IC5hcGV4Y2hhcnRzLXpvb20tb3V0LWljb246aG92ZXIgc3ZnLCBcXG4ubGlnaHQgLmFwZXhjaGFydHMtcmVzZXQtem9vbS1pY29uOmhvdmVyIHN2ZywgXFxuLmxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaWNvbjpob3ZlciBzdmcge1xcbiAgZmlsbDogIzMzMztcXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24sIC5hcGV4Y2hhcnRzLW1lbnUtaWNvbiB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5hcGV4Y2hhcnRzLXJlc2V0LXpvb20taWNvbiB7XFxuICBtYXJnaW4tbGVmdDogNXB4O1xcbn1cXG4uYXBleGNoYXJ0cy16b29tLWljb24sIC5hcGV4Y2hhcnRzLXJlc2V0LXpvb20taWNvbiwgLmFwZXhjaGFydHMtbWVudS1pY29uIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44NSk7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXpvb20taW4taWNvbiwgLmFwZXhjaGFydHMtem9vbS1vdXQtaWNvbiB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuNylcXG59XFxuXFxuLmFwZXhjaGFydHMtem9vbS1vdXQtaWNvbiB7XFxuICBtYXJnaW4tcmlnaHQ6IDNweDtcXG59XFxuXFxuLmFwZXhjaGFydHMtcGFuLWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjYyKTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGxlZnQ6IDFweDtcXG4gIHRvcDogMHB4O1xcbn1cXG4uYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcge1xcbiAgZmlsbDogI2ZmZjtcXG4gIHN0cm9rZTogIzZFODE5MjtcXG4gIHN0cm9rZS13aWR0aDogMjtcXG59XFxuLmFwZXhjaGFydHMtcGFuLWljb24uc2VsZWN0ZWQgc3ZnIHtcXG4gIHN0cm9rZTogIzAwOEZGQjtcXG59XFxuLmFwZXhjaGFydHMtcGFuLWljb246bm90KC5zZWxlY3RlZCk6aG92ZXIgc3ZnIHtcXG4gIHN0cm9rZTogIzMzMztcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbGJhciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMTtcXG4gIHRvcDogMHB4O1xcbiAgcmlnaHQ6IDNweDtcXG4gIG1heC13aWR0aDogMTc2cHg7XFxuICB0ZXh0LWFsaWduOiByaWdodDtcXG4gIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gIHBhZGRpbmc6IDBweCA2cHggMnB4IDZweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyOyBcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbGJhciBzdmcge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUge1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMTAwJTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBwYWRkaW5nOiAzcHg7XFxuICByaWdodDogMTBweDtcXG4gIG9wYWNpdHk6IDA7XFxuICBtaW4td2lkdGg6IDExMHB4O1xcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS5vcGVuIHtcXG4gIG9wYWNpdHk6IDE7XFxuICBwb2ludGVyLWV2ZW50czogYWxsO1xcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaXRlbSB7XFxuICBwYWRkaW5nOiA2cHggN3B4O1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4ubGlnaHQgLmFwZXhjaGFydHMtbWVudS1pdGVtOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6ICNlZWU7XFxufVxcbi5kYXJrIC5hcGV4Y2hhcnRzLW1lbnUge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjcpO1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XFxuICAuYXBleGNoYXJ0cy10b29sYmFyIHtcXG4gICAgLypvcGFjaXR5OiAwOyovXFxuICB9XFxuXFxuICAuYXBleGNoYXJ0cy1jYW52YXM6aG92ZXIgLmFwZXhjaGFydHMtdG9vbGJhciB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9IFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1kYXRhbGFiZWwuaGlkZGVuIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXBpZS1sYWJlbCxcXG4uYXBleGNoYXJ0cy1kYXRhbGFiZWwsIC5hcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbCwgLmFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXkge1xcbiAgb3BhY2l0eTogMDtcXG4gIGFuaW1hdGlvbi1uYW1lOiBvcGFxdWU7XFxuICBhbmltYXRpb24tZHVyYXRpb246IDAuM3M7XFxuICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcXG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7XFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyAuaGlkZGVuIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblxcbi5hcGV4Y2hhcnRzLWhpZGUgLmFwZXhjaGFydHMtc2VyaWVzLXBvaW50cyB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG5cXG4uYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIubm8tcG9pbnRlci1ldmVudHMsXFxuLmFwZXhjaGFydHMtbGluZS1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLm5vLXBvaW50ZXItZXZlbnRzLCAuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcGF0aCwgLmFwZXhjaGFydHMtcmFkYXItc2VyaWVzIHBvbHlnb24ge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcblxcbi8qIG1hcmtlcnMgKi9cXG5cXG4uYXBleGNoYXJ0cy1tYXJrZXIge1xcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XFxufVxcblxcbkBrZXlmcmFtZXMgb3BhcXVlIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbn0nO3N0eWxlSW5qZWN0KGNzcyksXCJkb2N1bWVudFwiaW4gc2VsZiYmKFwiY2xhc3NMaXN0XCJpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiX1wiKSYmKCFkb2N1bWVudC5jcmVhdGVFbGVtZW50TlN8fFwiY2xhc3NMaXN0XCJpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFwiZ1wiKSl8fGZ1bmN0aW9uKHQpe2lmKFwiRWxlbWVudFwiaW4gdCl7dmFyIGU9dC5FbGVtZW50LnByb3RvdHlwZSxpPU9iamVjdCxzPVN0cmluZy5wcm90b3R5cGUudHJpbXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpfSxhPUFycmF5LnByb3RvdHlwZS5pbmRleE9mfHxmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPXRoaXMubGVuZ3RoO2U8aTtlKyspaWYoZSBpbiB0aGlzJiZ0aGlzW2VdPT09dClyZXR1cm4gZTtyZXR1cm4tMX0scj1mdW5jdGlvbih0LGUpe3RoaXMubmFtZT10LHRoaXMuY29kZT1ET01FeGNlcHRpb25bdF0sdGhpcy5tZXNzYWdlPWV9LG49ZnVuY3Rpb24odCxlKXtpZihcIlwiPT09ZSl0aHJvdyBuZXcgcihcIlNZTlRBWF9FUlJcIixcIlRoZSB0b2tlbiBtdXN0IG5vdCBiZSBlbXB0eS5cIik7aWYoL1xccy8udGVzdChlKSl0aHJvdyBuZXcgcihcIklOVkFMSURfQ0hBUkFDVEVSX0VSUlwiLFwiVGhlIHRva2VuIG11c3Qgbm90IGNvbnRhaW4gc3BhY2UgY2hhcmFjdGVycy5cIik7cmV0dXJuIGEuY2FsbCh0LGUpfSxvPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1zLmNhbGwodC5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKXx8XCJcIiksaT1lP2Uuc3BsaXQoL1xccysvKTpbXSxhPTAscj1pLmxlbmd0aDthPHI7YSsrKXRoaXMucHVzaChpW2FdKTt0aGlzLl91cGRhdGVDbGFzc05hbWU9ZnVuY3Rpb24oKXt0LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsdGhpcy50b1N0cmluZygpKX19LGw9by5wcm90b3R5cGU9W10saD1mdW5jdGlvbigpe3JldHVybiBuZXcgbyh0aGlzKX07aWYoci5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlLGwuaXRlbT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpc1t0XXx8bnVsbH0sbC5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm5+bih0aGlzLHQrXCJcIil9LGwuYWRkPWZ1bmN0aW9uKCl7dmFyIHQsZT1hcmd1bWVudHMsaT0wLHM9ZS5sZW5ndGgsYT0hMTtkb3t0PWVbaV0rXCJcIix+bih0aGlzLHQpfHwodGhpcy5wdXNoKHQpLGE9ITApfXdoaWxlKCsraTxzKTthJiZ0aGlzLl91cGRhdGVDbGFzc05hbWUoKX0sbC5yZW1vdmU9ZnVuY3Rpb24oKXt2YXIgdCxlLGk9YXJndW1lbnRzLHM9MCxhPWkubGVuZ3RoLHI9ITE7ZG97Zm9yKHQ9aVtzXStcIlwiLGU9bih0aGlzLHQpO35lOyl0aGlzLnNwbGljZShlLDEpLHI9ITAsZT1uKHRoaXMsdCl9d2hpbGUoKytzPGEpO3ImJnRoaXMuX3VwZGF0ZUNsYXNzTmFtZSgpfSxsLnRvZ2dsZT1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuY29udGFpbnModCkscz1pPyEwIT09ZSYmXCJyZW1vdmVcIjohMSE9PWUmJlwiYWRkXCI7cmV0dXJuIHMmJnRoaXNbc10odCksITA9PT1lfHwhMT09PWU/ZTohaX0sbC5yZXBsYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIGk9bih0K1wiXCIpO35pJiYodGhpcy5zcGxpY2UoaSwxLGUpLHRoaXMuX3VwZGF0ZUNsYXNzTmFtZSgpKX0sbC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmpvaW4oXCIgXCIpfSxpLmRlZmluZVByb3BlcnR5KXt2YXIgYz17Z2V0OmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9O3RyeXtpLmRlZmluZVByb3BlcnR5KGUsXCJjbGFzc0xpc3RcIixjKX1jYXRjaCh0KXt2b2lkIDAhPT10Lm51bWJlciYmLTIxNDY4MjMyNTIhPT10Lm51bWJlcnx8KGMuZW51bWVyYWJsZT0hMSxpLmRlZmluZVByb3BlcnR5KGUsXCJjbGFzc0xpc3RcIixjKSl9fWVsc2UgaS5wcm90b3R5cGUuX19kZWZpbmVHZXR0ZXJfXyYmZS5fX2RlZmluZUdldHRlcl9fKFwiY2xhc3NMaXN0XCIsaCl9fShzZWxmKSxmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJfXCIpO2lmKHQuY2xhc3NMaXN0LmFkZChcImMxXCIsXCJjMlwiKSwhdC5jbGFzc0xpc3QuY29udGFpbnMoXCJjMlwiKSl7dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGU9RE9NVG9rZW5MaXN0LnByb3RvdHlwZVt0XTtET01Ub2tlbkxpc3QucHJvdG90eXBlW3RdPWZ1bmN0aW9uKHQpe3ZhciBpLHM9YXJndW1lbnRzLmxlbmd0aDtmb3IoaT0wO2k8cztpKyspdD1hcmd1bWVudHNbaV0sZS5jYWxsKHRoaXMsdCl9fTtlKFwiYWRkXCIpLGUoXCJyZW1vdmVcIil9aWYodC5jbGFzc0xpc3QudG9nZ2xlKFwiYzNcIiwhMSksdC5jbGFzc0xpc3QuY29udGFpbnMoXCJjM1wiKSl7dmFyIGk9RE9NVG9rZW5MaXN0LnByb3RvdHlwZS50b2dnbGU7RE9NVG9rZW5MaXN0LnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gMSBpbiBhcmd1bWVudHMmJiF0aGlzLmNvbnRhaW5zKHQpPT0hZT9lOmkuY2FsbCh0aGlzLHQpfX1cInJlcGxhY2VcImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJfXCIpLmNsYXNzTGlzdHx8KERPTVRva2VuTGlzdC5wcm90b3R5cGUucmVwbGFjZT1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudG9TdHJpbmcoKS5zcGxpdChcIiBcIikscz1pLmluZGV4T2YodCtcIlwiKTt+cyYmKGk9aS5zbGljZShzKSx0aGlzLnJlbW92ZS5hcHBseSh0aGlzLGkpLHRoaXMuYWRkKGUpLHRoaXMuYWRkLmFwcGx5KHRoaXMsaS5zbGljZSgxKSkpfSksdD1udWxsfSgpKSxmdW5jdGlvbigpe3ZhciB0PSExO2Z1bmN0aW9uIGUodCl7dmFyIGU9dC5fX3Jlc2l6ZVRyaWdnZXJzX18saT1lLmZpcnN0RWxlbWVudENoaWxkLHM9ZS5sYXN0RWxlbWVudENoaWxkLGE9aS5maXJzdEVsZW1lbnRDaGlsZDtzLnNjcm9sbExlZnQ9cy5zY3JvbGxXaWR0aCxzLnNjcm9sbFRvcD1zLnNjcm9sbEhlaWdodCxhLnN0eWxlLndpZHRoPWkub2Zmc2V0V2lkdGgrMStcInB4XCIsYS5zdHlsZS5oZWlnaHQ9aS5vZmZzZXRIZWlnaHQrMStcInB4XCIsaS5zY3JvbGxMZWZ0PWkuc2Nyb2xsV2lkdGgsaS5zY3JvbGxUb3A9aS5zY3JvbGxIZWlnaHR9ZnVuY3Rpb24gaSh0KXt2YXIgaT10aGlzO2UodGhpcyksdGhpcy5fX3Jlc2l6ZVJBRl9fJiZuKHRoaXMuX19yZXNpemVSQUZfXyksdGhpcy5fX3Jlc2l6ZVJBRl9fPXIoZnVuY3Rpb24oKXsoZnVuY3Rpb24odCl7cmV0dXJuIHQub2Zmc2V0V2lkdGghPXQuX19yZXNpemVMYXN0X18ud2lkdGh8fHQub2Zmc2V0SGVpZ2h0IT10Ll9fcmVzaXplTGFzdF9fLmhlaWdodH0pKGkpJiYoaS5fX3Jlc2l6ZUxhc3RfXy53aWR0aD1pLm9mZnNldFdpZHRoLGkuX19yZXNpemVMYXN0X18uaGVpZ2h0PWkub2Zmc2V0SGVpZ2h0LGkuX19yZXNpemVMaXN0ZW5lcnNfXy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2FsbCh0KX0pKX0pfXZhciBzLGEscj0ocz13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbih0KXtyZXR1cm4gd2luZG93LnNldFRpbWVvdXQodCwyMCl9LGZ1bmN0aW9uKHQpe3JldHVybiBzKHQpfSksbj0oYT13aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tb3pDYW5jZWxBbmltYXRpb25GcmFtZXx8d2luZG93LndlYmtpdENhbmNlbEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cuY2xlYXJUaW1lb3V0LGZ1bmN0aW9uKHQpe3JldHVybiBhKHQpfSksbz0hMSxsPVwiXCIsaD1cImFuaW1hdGlvbnN0YXJ0XCIsYz1cIldlYmtpdCBNb3ogTyBtc1wiLnNwbGl0KFwiIFwiKSxkPVwid2Via2l0QW5pbWF0aW9uU3RhcnQgYW5pbWF0aW9uc3RhcnQgb0FuaW1hdGlvblN0YXJ0IE1TQW5pbWF0aW9uU3RhcnRcIi5zcGxpdChcIiBcIiksdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmFrZWVsZW1lbnRcIik7aWYodm9pZCAwIT09dS5zdHlsZS5hbmltYXRpb25OYW1lJiYobz0hMCksITE9PT1vKWZvcih2YXIgZz0wO2c8Yy5sZW5ndGg7ZysrKWlmKHZvaWQgMCE9PXUuc3R5bGVbY1tnXStcIkFuaW1hdGlvbk5hbWVcIl0pe2w9XCItXCIrY1tnXS50b0xvd2VyQ2FzZSgpK1wiLVwiLGg9ZFtnXTticmVha312YXIgZj1cIkBcIitsK1wia2V5ZnJhbWVzIHJlc2l6ZWFuaW0geyBmcm9tIHsgb3BhY2l0eTogMDsgfSB0byB7IG9wYWNpdHk6IDA7IH0gfSBcIixwPWwrXCJhbmltYXRpb246IDFtcyByZXNpemVhbmltOyBcIjt3aW5kb3cuYWRkUmVzaXplTGlzdGVuZXI9ZnVuY3Rpb24ocyxhKXtzLl9fcmVzaXplVHJpZ2dlcnNfX3x8KFwic3RhdGljXCI9PWdldENvbXB1dGVkU3R5bGUocykucG9zaXRpb24mJihzLnN0eWxlLnBvc2l0aW9uPVwicmVsYXRpdmVcIiksZnVuY3Rpb24oKXtpZighdCl7dmFyIGU9KGZ8fFwiXCIpK1wiLnJlc2l6ZS10cmlnZ2VycyB7IFwiKyhwfHxcIlwiKSsndmlzaWJpbGl0eTogaGlkZGVuOyBvcGFjaXR5OiAwOyB9IC5yZXNpemUtdHJpZ2dlcnMsIC5yZXNpemUtdHJpZ2dlcnMgPiBkaXYsIC5jb250cmFjdC10cmlnZ2VyOmJlZm9yZSB7IGNvbnRlbnQ6IFwiIFwiOyBkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IG92ZXJmbG93OiBoaWRkZW47IH0gLnJlc2l6ZS10cmlnZ2VycyA+IGRpdiB7IGJhY2tncm91bmQ6ICNlZWU7IG92ZXJmbG93OiBhdXRvOyB9IC5jb250cmFjdC10cmlnZ2VyOmJlZm9yZSB7IHdpZHRoOiAyMDAlOyBoZWlnaHQ6IDIwMCU7IH0nLGk9ZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO3MudHlwZT1cInRleHQvY3NzXCIscy5zdHlsZVNoZWV0P3Muc3R5bGVTaGVldC5jc3NUZXh0PWU6cy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSksaS5hcHBlbmRDaGlsZChzKSx0PSEwfX0oKSxzLl9fcmVzaXplTGFzdF9fPXt9LHMuX19yZXNpemVMaXN0ZW5lcnNfXz1bXSwocy5fX3Jlc2l6ZVRyaWdnZXJzX189ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuY2xhc3NOYW1lPVwicmVzaXplLXRyaWdnZXJzXCIscy5fX3Jlc2l6ZVRyaWdnZXJzX18uaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPVwiZXhwYW5kLXRyaWdnZXJcIj48ZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb250cmFjdC10cmlnZ2VyXCI+PC9kaXY+JyxzLmFwcGVuZENoaWxkKHMuX19yZXNpemVUcmlnZ2Vyc19fKSxlKHMpLHMuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLGksITApLGgmJnMuX19yZXNpemVUcmlnZ2Vyc19fLmFkZEV2ZW50TGlzdGVuZXIoaCxmdW5jdGlvbih0KXtcInJlc2l6ZWFuaW1cIj09dC5hbmltYXRpb25OYW1lJiZlKHMpfSkpLHMuX19yZXNpemVMaXN0ZW5lcnNfXy5wdXNoKGEpfSx3aW5kb3cucmVtb3ZlUmVzaXplTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt0JiYodC5fX3Jlc2l6ZUxpc3RlbmVyc19fLnNwbGljZSh0Ll9fcmVzaXplTGlzdGVuZXJzX18uaW5kZXhPZihlKSwxKSx0Ll9fcmVzaXplTGlzdGVuZXJzX18ubGVuZ3RofHwodC5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsaSksdC5fX3Jlc2l6ZVRyaWdnZXJzX189IXQucmVtb3ZlQ2hpbGQodC5fX3Jlc2l6ZVRyaWdnZXJzX18pKSl9fSgpLHdpbmRvdy5BcGV4PXt9O3ZhciBBcGV4Q2hhcnRzJDE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5vcHRzPWksdGhpcy5jdHg9dGhpcyx0aGlzLnc9bmV3IEJhc2UoaSkuaW5pdCgpLHRoaXMuZWw9ZSx0aGlzLncuZ2xvYmFscy5jdWlkPShNYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCksdGhpcy53Lmdsb2JhbHMuY2hhcnRJRD10aGlzLncuY29uZmlnLmNoYXJ0LmlkP3RoaXMudy5jb25maWcuY2hhcnQuaWQ6dGhpcy53Lmdsb2JhbHMuY3VpZCx0aGlzLmV2ZW50TGlzdD1bXCJtb3VzZWRvd25cIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSx0aGlzLmluaXRNb2R1bGVzKCksdGhpcy5jcmVhdGU9VXRpbHMuYmluZCh0aGlzLmNyZWF0ZSx0aGlzKSx0aGlzLmRvY3VtZW50RXZlbnQ9VXRpbHMuYmluZCh0aGlzLmRvY3VtZW50RXZlbnQsdGhpcyksdGhpcy53aW5kb3dSZXNpemVIYW5kbGVyPXRoaXMud2luZG93UmVzaXplLmJpbmQodGhpcyl9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uKGUsaSl7aWYobnVsbCE9PXQuZWwpe3ZvaWQgMD09PUFwZXguX2NoYXJ0SW5zdGFuY2VzJiYoQXBleC5fY2hhcnRJbnN0YW5jZXM9W10pLHQudy5jb25maWcuY2hhcnQuaWQmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLnB1c2goe2lkOnQudy5nbG9iYWxzLmNoYXJ0SUQsZ3JvdXA6dC53LmNvbmZpZy5jaGFydC5ncm91cCxjaGFydDp0fSksdC5zZXRMb2NhbGUodC53LmNvbmZpZy5jaGFydC5kZWZhdWx0TG9jYWxlKTt2YXIgcz10LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVNb3VudDtcImZ1bmN0aW9uXCI9PXR5cGVvZiBzJiZzKHQsdC53KSx0LmZpcmVFdmVudChcImJlZm9yZU1vdW50XCIsW3QsdC53XSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix0LndpbmRvd1Jlc2l6ZUhhbmRsZXIpLHdpbmRvdy5hZGRSZXNpemVMaXN0ZW5lcih0LmVsLnBhcmVudE5vZGUsdC5wYXJlbnRSZXNpemVDYWxsYmFjay5iaW5kKHQpKTt2YXIgYT10LmNyZWF0ZSh0LncuY29uZmlnLnNlcmllcyx7fSk7aWYoIWEpcmV0dXJuIGUodCk7dC5tb3VudChhKS50aGVuKGZ1bmN0aW9uKCl7ZShhKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VudGVkJiZ0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VudGVkKHQsdC53KSx0LmZpcmVFdmVudChcIm1vdW50ZWRcIixbdCx0LnddKX0pLmNhdGNoKGZ1bmN0aW9uKHQpe2kodCl9KX1lbHNlIGkobmV3IEVycm9yKFwiRWxlbWVudCBub3QgZm91bmRcIikpfSl9fSx7a2V5OlwiaW5pdE1vZHVsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYW5pbWF0aW9ucz1uZXcgQW5pbWF0aW9ucyh0aGlzKSx0aGlzLmNvcmU9bmV3IENvcmUodGhpcy5lbCx0aGlzKSx0aGlzLmdyaWQ9bmV3IEdyaWQodGhpcyksdGhpcy5jb3JlVXRpbHM9bmV3IENvcmVVdGlscyh0aGlzKSx0aGlzLmNvbmZpZz1uZXcgQ29uZmlnKHt9KSx0aGlzLmNyb3NzaGFpcnM9bmV3IENyb3NzaGFpcnModGhpcyksdGhpcy5vcHRpb25zPW5ldyBPcHRpb25zLHRoaXMucmVzcG9uc2l2ZT1uZXcgUmVzcG9uc2l2ZSh0aGlzKSx0aGlzLnNlcmllcz1uZXcgU2VyaWVzKHRoaXMpLHRoaXMudGhlbWU9bmV3IFRoZW1lKHRoaXMpLHRoaXMuZm9ybWF0dGVycz1uZXcgRm9ybWF0dGVycyh0aGlzKSx0aGlzLnRpdGxlU3VidGl0bGU9bmV3IFRpdGxlU3VidGl0bGUodGhpcyksdGhpcy5sZWdlbmQ9bmV3IExlZ2VuZCh0aGlzKSx0aGlzLnRvb2xiYXI9bmV3IFRvb2xiYXIodGhpcyksdGhpcy5kaW1lbnNpb25zPW5ldyBEaW1lbnNpb25zKHRoaXMpLHRoaXMuem9vbVBhblNlbGVjdGlvbj1uZXcgWm9vbVBhblNlbGVjdGlvbih0aGlzKSx0aGlzLncuZ2xvYmFscy50b29sdGlwPW5ldyBUb29sdGlwKHRoaXMpfX0se2tleTpcImFkZEV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpP2kuZ2xvYmFscy5ldmVudHNbdF0ucHVzaChlKTppLmdsb2JhbHMuZXZlbnRzW3RdPVtlXX19LHtrZXk6XCJyZW1vdmVFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIHM9aS5nbG9iYWxzLmV2ZW50c1t0XS5pbmRleE9mKGUpOy0xIT09cyYmaS5nbG9iYWxzLmV2ZW50c1t0XS5zcGxpY2UocywxKX19fSx7a2V5OlwiZmlyZUV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KSl7ZSYmZS5sZW5ndGh8fChlPVtdKTtmb3IodmFyIHM9aS5nbG9iYWxzLmV2ZW50c1t0XSxhPXMubGVuZ3RoLHI9MDtyPGE7cisrKXNbcl0uYXBwbHkobnVsbCxlKX19fSx7a2V5OlwiY3JlYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7dGhpcy5pbml0TW9kdWxlcygpO3ZhciBzPXRoaXMudy5nbG9iYWxzO2lmKHMubm9EYXRhPSExLHMuYW5pbWF0aW9uRW5kZWQ9ITEsdGhpcy5yZXNwb25zaXZlLmNoZWNrUmVzcG9uc2l2ZUNvbmZpZyhlKSxudWxsPT09dGhpcy5lbClyZXR1cm4gcy5hbmltYXRpb25FbmRlZD0hMCxudWxsO2lmKHRoaXMuY29yZS5zZXR1cEVsZW1lbnRzKCksMD09PXMuc3ZnV2lkdGgpcmV0dXJuIHMuYW5pbWF0aW9uRW5kZWQ9ITAsbnVsbDt2YXIgYT1Db3JlVXRpbHMuY2hlY2tDb21ib1Nlcmllcyh0KTtzLmNvbWJvQ2hhcnRzPWEuY29tYm9DaGFydHMscy5jb21ib0NoYXJ0c0hhc0JhcnM9YS5jb21ib0NoYXJ0c0hhc0JhcnMsKDA9PT10Lmxlbmd0aHx8MT09PXQubGVuZ3RoJiZ0WzBdLmRhdGEmJjA9PT10WzBdLmRhdGEubGVuZ3RoKSYmdGhpcy5zZXJpZXMuaGFuZGxlTm9EYXRhKCksdGhpcy5zZXR1cEV2ZW50SGFuZGxlcnMoKSx0aGlzLmNvcmUucGFyc2VEYXRhKHQpLHRoaXMudGhlbWUuaW5pdCgpLG5ldyBNYXJrZXJzKHRoaXMpLnNldEdsb2JhbE1hcmtlclNpemUoKSx0aGlzLmZvcm1hdHRlcnMuc2V0TGFiZWxGb3JtYXR0ZXJzKCksdGhpcy50aXRsZVN1YnRpdGxlLmRyYXcoKSxpLmdsb2JhbHMubm9EYXRhfHx0aGlzLmxlZ2VuZC5pbml0KCksdGhpcy5zZXJpZXMuaGFzQWxsU2VyaWVzRXF1YWxYKCkscy5heGlzQ2hhcnRzJiYodGhpcy5jb3JlLmNvcmVDYWxjdWxhdGlvbnMoKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiZ0aGlzLmZvcm1hdHRlcnMuc2V0TGFiZWxGb3JtYXR0ZXJzKCkpLHRoaXMuZm9ybWF0dGVycy5oZWF0bWFwTGFiZWxGb3JtYXR0ZXJzKCksdGhpcy5kaW1lbnNpb25zLnBsb3RDb29yZHMoKTt2YXIgcj10aGlzLmNvcmUueHlTZXR0aW5ncygpO3RoaXMuZ3JpZC5jcmVhdGVHcmlkTWFzaygpO3ZhciBuPXRoaXMuY29yZS5wbG90Q2hhcnRUeXBlKHQscik7dGhpcy5jb3JlLnNoaWZ0R3JhcGhQb3NpdGlvbigpO3ZhciBvPXtwbG90OntsZWZ0OmkuZ2xvYmFscy50cmFuc2xhdGVYLHRvcDppLmdsb2JhbHMudHJhbnNsYXRlWSx3aWR0aDppLmdsb2JhbHMuZ3JpZFdpZHRoLGhlaWdodDppLmdsb2JhbHMuZ3JpZEhlaWdodH19O3JldHVybntlbEdyYXBoOm4seHlSYXRpb3M6cixlbElubmVyOmkuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwsZGltZW5zaW9uczpvfX19LHtrZXk6XCJtb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZT10aGlzLGk9ZS53O3JldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uKHMsYSl7aWYobnVsbD09PWUuZWwpcmV0dXJuIGEobmV3IEVycm9yKFwiTm90IGVub3VnaCBkYXRhIHRvIGRpc3BsYXkgb3IgdGFyZ2V0IGVsZW1lbnQgbm90IGZvdW5kXCIpKTtpZigobnVsbD09PXR8fGkuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpJiZlLnNlcmllcy5oYW5kbGVOb0RhdGEoKSxlLmFubm90YXRpb25zPW5ldyBBbm5vdGF0aW9ucyhlKSxlLmNvcmUuZHJhd0F4aXMoaS5jb25maWcuY2hhcnQudHlwZSx0Lnh5UmF0aW9zKSxlLmdyaWQ9bmV3IEdyaWQoZSksXCJiYWNrXCI9PT1pLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZlLmdyaWQuZHJhd0dyaWQoKSxcImJhY2tcIj09PWkuY29uZmlnLmFubm90YXRpb25zLnBvc2l0aW9uJiZlLmFubm90YXRpb25zLmRyYXdBbm5vdGF0aW9ucygpLHQuZWxHcmFwaCBpbnN0YW5jZW9mIEFycmF5KWZvcih2YXIgcj0wO3I8dC5lbEdyYXBoLmxlbmd0aDtyKyspaS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodC5lbEdyYXBoW3JdKTtlbHNlIGkuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHQuZWxHcmFwaCk7aWYoXCJmcm9udFwiPT09aS5jb25maWcuZ3JpZC5wb3NpdGlvbiYmZS5ncmlkLmRyYXdHcmlkKCksXCJmcm9udFwiPT09aS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5wb3NpdGlvbiYmZS5jcm9zc2hhaXJzLmRyYXdYQ3Jvc3NoYWlycygpLFwiZnJvbnRcIj09PWkuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMucG9zaXRpb24mJmUuY3Jvc3NoYWlycy5kcmF3WUNyb3NzaGFpcnMoKSxcImZyb250XCI9PT1pLmNvbmZpZy5hbm5vdGF0aW9ucy5wb3NpdGlvbiYmZS5hbm5vdGF0aW9ucy5kcmF3QW5ub3RhdGlvbnMoKSwhaS5nbG9iYWxzLm5vRGF0YSl7aWYoaS5jb25maWcudG9vbHRpcC5lbmFibGVkJiYhaS5nbG9iYWxzLm5vRGF0YSYmZS53Lmdsb2JhbHMudG9vbHRpcC5kcmF3VG9vbHRpcCh0Lnh5UmF0aW9zKSxpLmdsb2JhbHMuYXhpc0NoYXJ0cyYmaS5nbG9iYWxzLmlzWE51bWVyaWMpKGkuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZHx8aS5jb25maWcuY2hhcnQuc2VsZWN0aW9uJiZpLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZW5hYmxlZHx8aS5jb25maWcuY2hhcnQucGFuJiZpLmNvbmZpZy5jaGFydC5wYW4uZW5hYmxlZCkmJmUuem9vbVBhblNlbGVjdGlvbi5pbml0KHt4eVJhdGlvczp0Lnh5UmF0aW9zfSk7ZWxzZXt2YXIgbj1pLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzO24uem9vbT0hMSxuLnpvb21pbj0hMSxuLnpvb21vdXQ9ITEsbi5zZWxlY3Rpb249ITEsbi5wYW49ITEsbi5yZXNldD0hMX1pLmNvbmZpZy5jaGFydC50b29sYmFyLnNob3cmJiFpLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkJiZlLnRvb2xiYXIuY3JlYXRlVG9vbGJhcigpfWkuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5sZW5ndGg+MCYmaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLmZvckVhY2goZnVuY3Rpb24odCl7dC5tZXRob2QodC5wYXJhbXMsITEsdC5jb250ZXh0KX0pLGkuZ2xvYmFscy5heGlzQ2hhcnRzfHxpLmdsb2JhbHMubm9EYXRhfHxlLmNvcmUucmVzaXplTm9uQXhpc0NoYXJ0cygpLHMoZSl9KX19LHtrZXk6XCJjbGVhclByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMucHJldmlvdXNQYXRocz1bXSx0Lmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkPSExLHQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXM9W10sdC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXM9W119fSx7a2V5OlwidXBkYXRlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHM9IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXSxhPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0scj10aGlzLnc7cmV0dXJuIHQuc2VyaWVzJiYodGhpcy5yZXNldFNlcmllcyghMSksdC5zZXJpZXMubGVuZ3RoJiZ0LnNlcmllc1swXS5kYXRhJiYodC5zZXJpZXM9dC5zZXJpZXMubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIF9vYmplY3RTcHJlYWQoe30sci5jb25maWcuc2VyaWVzW2VdLHtuYW1lOnQubmFtZT90Lm5hbWU6ci5jb25maWcuc2VyaWVzW2VdJiZyLmNvbmZpZy5zZXJpZXNbZV0ubmFtZSx0eXBlOnQudHlwZT90LnR5cGU6ci5jb25maWcuc2VyaWVzW2VdJiZyLmNvbmZpZy5zZXJpZXNbZV0udHlwZSxkYXRhOnQuZGF0YT90LmRhdGE6ci5jb25maWcuc2VyaWVzW2VdJiZyLmNvbmZpZy5zZXJpZXNbZV0uZGF0YX0pfSkpLHRoaXMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksdC54YXhpcyYmKCh0LnhheGlzLm1pbnx8dC54YXhpcy5tYXgpJiZ0aGlzLmZvcmNlWEF4aXNVcGRhdGUodCksdC54YXhpcy5jYXRlZ29yaWVzJiZ0LnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoJiZyLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJih0PURlZmF1bHRzLmNvbnZlcnRDYXRUb051bWVyaWModCkpKSxyLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg+MCYmdGhpcy5jbGVhclByZXZpb3VzUGF0aHMoKSx0LnRoZW1lJiYodD10aGlzLnRoZW1lLnVwZGF0ZVRoZW1lT3B0aW9ucyh0KSksdGhpcy5fdXBkYXRlT3B0aW9ucyh0LGUsaSxzLGEpfX0se2tleTpcIl91cGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scz0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLGE9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XSxyPVt0aGlzXTtzJiYocj10aGlzLmdldFN5bmNlZENoYXJ0cygpKSx0aGlzLncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQmJihyPVt0aGlzXSx0aGlzLncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQ9ITEpLHIuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgcj1zLnc7cmV0dXJuIHIuZ2xvYmFscy5zaG91bGRBbmltYXRlPWksZXx8KHIuZ2xvYmFscy5yZXNpemVkPSEwLHIuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxpJiZzLnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCkpLHQmJlwib2JqZWN0XCI9PT1fdHlwZW9mKHQpJiYocy5jb25maWc9bmV3IENvbmZpZyh0KSx0PUNvcmVVdGlscy5leHRlbmRBcnJheVByb3BzKHMuY29uZmlnLHQpLHIuY29uZmlnPVV0aWxzLmV4dGVuZChyLmNvbmZpZyx0KSxhJiYoci5nbG9iYWxzLmxhc3RYQXhpcz1bXSxyLmdsb2JhbHMubGFzdFlBeGlzPVtdLHIuZ2xvYmFscy5pbml0aWFsQ29uZmlnPVV0aWxzLmV4dGVuZCh7fSxyLmNvbmZpZyksci5nbG9iYWxzLmluaXRpYWxTZXJpZXM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyLmNvbmZpZy5zZXJpZXMpKSkpLHMudXBkYXRlKHQpfSl9fSx7a2V5OlwidXBkYXRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W10sZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXTtyZXR1cm4gdGhpcy5yZXNldFNlcmllcyghMSksdGhpcy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLHRoaXMuX3VwZGF0ZVNlcmllcyh0LGUsaSl9fSx7a2V5OlwiYXBwZW5kU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scz10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpO3JldHVybiBzLnB1c2godCksdGhpcy5yZXNldFNlcmllcyghMSksdGhpcy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLHRoaXMuX3VwZGF0ZVNlcmllcyhzLGUsaSl9fSx7a2V5OlwiX3VwZGF0ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGkscz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGE9dGhpcy53O3JldHVybiB0aGlzLncuZ2xvYmFscy5zaG91bGRBbmltYXRlPWUsYS5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLGEuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQmJihhLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkPSExKSxlJiZ0aGlzLnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCksYS5nbG9iYWxzLmF4aXNDaGFydHM/KDA9PT0oaT10Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBfb2JqZWN0U3ByZWFkKHt9LGEuY29uZmlnLnNlcmllc1tlXSx7bmFtZTp0Lm5hbWU/dC5uYW1lOmEuY29uZmlnLnNlcmllc1tlXSYmYS5jb25maWcuc2VyaWVzW2VdLm5hbWUsdHlwZTp0LnR5cGU/dC50eXBlOmEuY29uZmlnLnNlcmllc1tlXSYmYS5jb25maWcuc2VyaWVzW2VdLnR5cGUsZGF0YTp0LmRhdGE/dC5kYXRhOmEuY29uZmlnLnNlcmllc1tlXSYmYS5jb25maWcuc2VyaWVzW2VdLmRhdGF9KX0pKS5sZW5ndGgmJihpPVt7ZGF0YTpbXX1dKSxhLmNvbmZpZy5zZXJpZXM9aSk6YS5jb25maWcuc2VyaWVzPXQuc2xpY2UoKSxzJiYoYS5nbG9iYWxzLmluaXRpYWxDb25maWcuc2VyaWVzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYS5jb25maWcuc2VyaWVzKSksYS5nbG9iYWxzLmluaXRpYWxTZXJpZXM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhLmNvbmZpZy5zZXJpZXMpKSksdGhpcy51cGRhdGUoKX19LHtrZXk6XCJnZXRTeW5jZWRDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0R3JvdXBlZENoYXJ0cygpLGU9W3RoaXNdO3JldHVybiB0Lmxlbmd0aCYmKGU9W10sdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pKSxlfX0se2tleTpcImdldEdyb3VwZWRDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIEFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcihmdW5jdGlvbih0KXtpZih0Lmdyb3VwKXJldHVybiEwfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0LncuY29uZmlnLmNoYXJ0Lmdyb3VwPT09ZS5ncm91cD9lLmNoYXJ0OnR9KX19LHtrZXk6XCJhcHBlbmREYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPXRoaXM7aS53Lmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAsaS5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpO2Zvcih2YXIgcz1pLncuY29uZmlnLnNlcmllcy5zbGljZSgpLGE9MDthPHMubGVuZ3RoO2ErKylpZih2b2lkIDAhPT10W2FdKWZvcih2YXIgcj0wO3I8dFthXS5kYXRhLmxlbmd0aDtyKyspc1thXS5kYXRhLnB1c2godFthXS5kYXRhW3JdKTtyZXR1cm4gaS53LmNvbmZpZy5zZXJpZXM9cyxlJiYoaS53Lmdsb2JhbHMuaW5pdGlhbFNlcmllcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGkudy5jb25maWcuc2VyaWVzKSkpLHRoaXMudXBkYXRlKCl9fSx7a2V5OlwidXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbihpLHMpe2UuY2xlYXIoKTt2YXIgYT1lLmNyZWF0ZShlLncuY29uZmlnLnNlcmllcyx0KTtpZighYSlyZXR1cm4gaShlKTtlLm1vdW50KGEpLnRoZW4oZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkJiZlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkKGUsZS53KSxlLmZpcmVFdmVudChcInVwZGF0ZWRcIixbZSxlLnddKSxlLncuZ2xvYmFscy5pc0RpcnR5PSEwLGkoZSl9KS5jYXRjaChmdW5jdGlvbih0KXtzKHQpfSl9KX19LHtrZXk6XCJmb3JjZVhBeGlzVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3ZvaWQgMCE9PXQueGF4aXMubWluJiYoZS5jb25maWcueGF4aXMubWluPXQueGF4aXMubWluLGUuZ2xvYmFscy5sYXN0WEF4aXMubWluPXQueGF4aXMubWluKSx2b2lkIDAhPT10LnhheGlzLm1heCYmKGUuY29uZmlnLnhheGlzLm1heD10LnhheGlzLm1heCxlLmdsb2JhbHMubGFzdFhBeGlzLm1heD10LnhheGlzLm1heCl9fSx7a2V5OlwicmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0LmNvbmZpZy54YXhpcy5taW49dC5nbG9iYWxzLmxhc3RYQXhpcy5taW4sdC5jb25maWcueGF4aXMubWF4PXQuZ2xvYmFscy5sYXN0WEF4aXMubWF4LHQuY29uZmlnLnlheGlzLm1hcChmdW5jdGlvbihlLGkpe3QuZ2xvYmFscy56b29tZWQmJnZvaWQgMCE9PXQuZ2xvYmFscy5sYXN0WUF4aXNbaV0mJihlLm1pbj10Lmdsb2JhbHMubGFzdFlBeGlzW2ldLm1pbixlLm1heD10Lmdsb2JhbHMubGFzdFlBeGlzW2ldLm1heCl9KX19LHtrZXk6XCJjbGVhclwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy56b29tUGFuU2VsZWN0aW9uJiZ0aGlzLnpvb21QYW5TZWxlY3Rpb24uZGVzdHJveSgpLHRoaXMudG9vbGJhciYmdGhpcy50b29sYmFyLmRlc3Ryb3koKSx0aGlzLmFuaW1hdGlvbnM9bnVsbCx0aGlzLmFubm90YXRpb25zPW51bGwsdGhpcy5jb3JlPW51bGwsdGhpcy5ncmlkPW51bGwsdGhpcy5zZXJpZXM9bnVsbCx0aGlzLnJlc3BvbnNpdmU9bnVsbCx0aGlzLnRoZW1lPW51bGwsdGhpcy5mb3JtYXR0ZXJzPW51bGwsdGhpcy50aXRsZVN1YnRpdGxlPW51bGwsdGhpcy5sZWdlbmQ9bnVsbCx0aGlzLmRpbWVuc2lvbnM9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLmNyb3NzaGFpcnM9bnVsbCx0aGlzLnpvb21QYW5TZWxlY3Rpb249bnVsbCx0aGlzLnRvb2xiYXI9bnVsbCx0aGlzLncuZ2xvYmFscy50b29sdGlwPW51bGwsdGhpcy5jbGVhckRvbUVsZW1lbnRzKCl9fSx7a2V5Olwia2lsbFNWR1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uKGUsaSl7dC5lYWNoKGZ1bmN0aW9uKHQsZSl7dGhpcy5yZW1vdmVDbGFzcyhcIipcIiksdGhpcy5vZmYoKSx0aGlzLnN0b3AoKX0sITApLHQudW5ncm91cCgpLHQuY2xlYXIoKSxlKFwiZG9uZVwiKX0pfX0se2tleTpcImNsZWFyRG9tRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5ldmVudExpc3QuZm9yRWFjaChmdW5jdGlvbihlKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5kb2N1bWVudEV2ZW50KX0pO3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbTtpZihudWxsIT09dGhpcy5lbClmb3IoO3RoaXMuZWwuZmlyc3RDaGlsZDspdGhpcy5lbC5yZW1vdmVDaGlsZCh0aGlzLmVsLmZpcnN0Q2hpbGQpO3RoaXMua2lsbFNWRyhlLlBhcGVyKSxlLlBhcGVyLnJlbW92ZSgpLGUuZWxXcmFwPW51bGwsZS5lbEdyYXBoaWNhbD1udWxsLGUuZWxMZWdlbmRXcmFwPW51bGwsZS5iYXNlRWw9bnVsbCxlLmVsR3JpZFJlY3Q9bnVsbCxlLmVsR3JpZFJlY3RNYXNrPW51bGwsZS5lbEdyaWRSZWN0TWFya2VyTWFzaz1udWxsLGUuZWxEZWZzPW51bGx9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhcigpO3ZhciB0PXRoaXMudy5jb25maWcuY2hhcnQuaWQ7dCYmQXBleC5fY2hhcnRJbnN0YW5jZXMuZm9yRWFjaChmdW5jdGlvbihlLGkpe2UuaWQ9PT10JiZBcGV4Ll9jaGFydEluc3RhbmNlcy5zcGxpY2UoaSwxKX0pLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdGhpcy53aW5kb3dSZXNpemVIYW5kbGVyKSx3aW5kb3cucmVtb3ZlUmVzaXplTGlzdGVuZXIodGhpcy5lbC5wYXJlbnROb2RlLHRoaXMucGFyZW50UmVzaXplQ2FsbGJhY2suYmluZCh0aGlzKSl9fSx7a2V5OlwidG9nZ2xlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zZXJpZXMuZ2V0U2VyaWVzQnlOYW1lKHQpLGk9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSkscz1lLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZFwiKTt0aGlzLmxlZ2VuZC50b2dnbGVEYXRhU2VyaWVzKGkscyl9fSx7a2V5OlwicmVzZXRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07dGhpcy5zZXJpZXMucmVzZXRTZXJpZXModCl9fSx7a2V5Olwic2V0dXBFdmVudEhhbmRsZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcyxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoZS5nbG9iYWxzLmNoYXJ0Q2xhc3MpO3RoaXMuZXZlbnRMaXN0SGFuZGxlcnM9W10sdGhpcy5ldmVudExpc3QuZm9yRWFjaChmdW5jdGlvbih0KXtzLmFkZEV2ZW50TGlzdGVuZXIodCxmdW5jdGlvbih0KXtcIm1vdXNlZG93blwiPT09dC50eXBlJiYxPT09dC53aGljaHx8KFwibW91c2V1cFwiPT09dC50eXBlJiYxPT09dC53aGljaHx8XCJ0b3VjaGVuZFwiPT09dC50eXBlKSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5jbGljayYmZS5jb25maWcuY2hhcnQuZXZlbnRzLmNsaWNrKHQsaSxlKSxpLmZpcmVFdmVudChcImNsaWNrXCIsW3QsaSxlXSkpfSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSx0aGlzLmV2ZW50TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZSx0LmRvY3VtZW50RXZlbnQpfSksdGhpcy5jb3JlLnNldHVwQnJ1c2hIYW5kbGVyKCl9fSx7a2V5OlwiZG9jdW1lbnRFdmVudFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztlLmdsb2JhbHMuY2xpZW50WD1cInRvdWNobW92ZVwiPT09dC50eXBlP3QudG91Y2hlc1swXS5jbGllbnRYOnQuY2xpZW50WCxlLmdsb2JhbHMuY2xpZW50WT1cInRvdWNobW92ZVwiPT09dC50eXBlP3QudG91Y2hlc1swXS5jbGllbnRZOnQuY2xpZW50WX19LHtrZXk6XCJhZGRYYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnZvaWQgMCxzPXRoaXM7aSYmKHM9aSkscy5hbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb25FeHRlcm5hbCh0LGUscyl9fSx7a2V5OlwiYWRkWWF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp2b2lkIDAscz10aGlzO2kmJihzPWkpLHMuYW5ub3RhdGlvbnMuYWRkWWF4aXNBbm5vdGF0aW9uRXh0ZXJuYWwodCxlLHMpfX0se2tleTpcImFkZFBvaW50QW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLHM9dGhpcztpJiYocz1pKSxzLmFubm90YXRpb25zLmFkZFBvaW50QW5ub3RhdGlvbkV4dGVybmFsKHQsZSxzKX19LHtrZXk6XCJjbGVhckFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dm9pZCAwLGU9dGhpczt0JiYoZT10KSxlLmFubm90YXRpb25zLmNsZWFyQW5ub3RhdGlvbnMoZSl9fSx7a2V5OlwiYWRkVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLHM9dGhpcztpJiYocz1pKSxzLmFubm90YXRpb25zLmFkZFRleHQodCxlLHMpfX0se2tleTpcImdldENoYXJ0QXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWlubmVyXCIpfX0se2tleTpcImdldFNlcmllc1RvdGFsWFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jb3JlVXRpbHMuZ2V0U2VyaWVzVG90YWxzWFJhbmdlKHQsZSl9fSx7a2V5OlwiZ2V0SGlnaGVzdFZhbHVlSW5TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiBuZXcgUmFuZ2UkMSh0aGlzLmN0eCkuZ2V0TWluWU1heFkodCkuaGlnaGVzdFl9fSx7a2V5OlwiZ2V0TG93ZXN0VmFsdWVJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjA7cmV0dXJuIG5ldyBSYW5nZSQxKHRoaXMuY3R4KS5nZXRNaW5ZTWF4WSh0KS5sb3dlc3RZfX0se2tleTpcImdldFNlcmllc1RvdGFsXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuc2VyaWVzVG90YWxzfX0se2tleTpcInNldExvY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2V0Q3VycmVudExvY2FsZVZhbHVlcyh0KX19LHtrZXk6XCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPW51bGw7aS5nbG9iYWxzLmF4aXNDaGFydHM/cz1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KGUsXCInXSwgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdCh0LFwiJ10gY2lyY2xlW2o9J1wiKS5jb25jYXQoZSxcIiddLCAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KHQsXCInXSByZWN0W2o9J1wiKS5jb25jYXQoZSxcIiddXCIpKS5tZW1iZXJzWzBdOihzPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXVwiKSkubWVtYmVyc1swXSwoXCJwaWVcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGV8fFwiZG9udXRcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUpJiZuZXcgUGllKHRoaXMuY3R4KS5waWVDbGlja2VkKHQpKTtzP25ldyBHcmFwaGljcyh0aGlzLmN0eCkucGF0aE1vdXNlRG93bihzLG51bGwpOmNvbnNvbGUud2FybihcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbjogRWxlbWVudCBub3QgZm91bmRcIik7cmV0dXJuIHMubm9kZT9zLm5vZGU6bnVsbH19LHtrZXk6XCJzZXRDdXJyZW50TG9jYWxlVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LmNvbmZpZy5jaGFydC5sb2NhbGVzO3dpbmRvdy5BcGV4LmNoYXJ0JiZ3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzJiZ3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzLmxlbmd0aD4wJiYoZT10aGlzLncuY29uZmlnLmNoYXJ0LmxvY2FsZXMuY29uY2F0KHdpbmRvdy5BcGV4LmNoYXJ0LmxvY2FsZXMpKTt2YXIgaT1lLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lPT09dH0pWzBdO2lmKCFpKXRocm93IG5ldyBFcnJvcihcIldyb25nIGxvY2FsZSBuYW1lIHByb3ZpZGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBzZXQgdGhlIGNvcnJlY3QgbG9jYWxlIG5hbWUgaW4gb3B0aW9uc1wiKTt2YXIgcz1VdGlscy5leHRlbmQoZW4saSk7dGhpcy53Lmdsb2JhbHMubG9jYWxlPXMub3B0aW9uc319LHtrZXk6XCJkYXRhVVJJXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEV4cG9ydHModGhpcy5jdHgpLmRhdGFVUkkoKX19LHtrZXk6XCJwYXBlclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlcn19LHtrZXk6XCJwYXJlbnRSZXNpemVDYWxsYmFja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQmJnRoaXMud2luZG93UmVzaXplKCl9fSx7a2V5Olwid2luZG93UmVzaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2NsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5yZXNpemVUaW1lciksdGhpcy53Lmdsb2JhbHMucmVzaXplVGltZXI9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LncuZ2xvYmFscy5yZXNpemVkPSEwLHQudy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSExLHQudXBkYXRlKCl9LDE1MCl9fV0sW3trZXk6XCJpbml0T25Mb2FkXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWFwZXhjaGFydHNdXCIpLGk9MDtpPGUubGVuZ3RoO2krKyl7bmV3IHQoZVtpXSxKU09OLnBhcnNlKGVbaV0uZ2V0QXR0cmlidXRlKFwiZGF0YS1vcHRpb25zXCIpKSkucmVuZGVyKCl9fX0se2tleTpcImV4ZWNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0Q2hhcnRCeUlEKHQpO2lmKGkpe2kudy5nbG9iYWxzLmlzRXhlY0NhbGxlZD0hMDtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShzPjI/cy0yOjApLHI9MjtyPHM7cisrKWFbci0yXT1hcmd1bWVudHNbcl07c3dpdGNoKGUpe2Nhc2VcInVwZGF0ZU9wdGlvbnNcIjpyZXR1cm4gaS51cGRhdGVPcHRpb25zLmFwcGx5KGksYSk7Y2FzZVwidXBkYXRlU2VyaWVzXCI6cmV0dXJuIGkudXBkYXRlU2VyaWVzLmFwcGx5KGksYSk7Y2FzZVwiYXBwZW5kRGF0YVwiOnJldHVybiBpLmFwcGVuZERhdGEuYXBwbHkoaSxhKTtjYXNlXCJhcHBlbmRTZXJpZXNcIjpyZXR1cm4gaS5hcHBlbmRTZXJpZXMuYXBwbHkoaSxhKTtjYXNlXCJ0b2dnbGVTZXJpZXNcIjpyZXR1cm4gaS50b2dnbGVTZXJpZXMuYXBwbHkoaSxhKTtjYXNlXCJyZXNldFNlcmllc1wiOnJldHVybiBpLnJlc2V0U2VyaWVzLmFwcGx5KGksYSk7Y2FzZVwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCI6cmV0dXJuIGkudG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uLmFwcGx5KGksYSk7Y2FzZVwiZGF0YVVSSVwiOnJldHVybiBpLmRhdGFVUkkuYXBwbHkoaSxhKTtjYXNlXCJhZGRYYXhpc0Fubm90YXRpb25cIjpyZXR1cm4gaS5hZGRYYXhpc0Fubm90YXRpb24uYXBwbHkoaSxhKTtjYXNlXCJhZGRZYXhpc0Fubm90YXRpb25cIjpyZXR1cm4gaS5hZGRZYXhpc0Fubm90YXRpb24uYXBwbHkoaSxhKTtjYXNlXCJhZGRQb2ludEFubm90YXRpb25cIjpyZXR1cm4gaS5hZGRQb2ludEFubm90YXRpb24uYXBwbHkoaSxhKTtjYXNlXCJhZGRUZXh0XCI6cmV0dXJuIGkuYWRkVGV4dC5hcHBseShpLGEpO2Nhc2VcImNsZWFyQW5ub3RhdGlvbnNcIjpyZXR1cm4gaS5jbGVhckFubm90YXRpb25zLmFwcGx5KGksYSk7Y2FzZVwicGFwZXJcIjpyZXR1cm4gaS5wYXBlci5hcHBseShpLGEpO2Nhc2VcImRlc3Ryb3lcIjpyZXR1cm4gaS5kZXN0cm95KCl9fX19LHtrZXk6XCJtZXJnZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFV0aWxzLmV4dGVuZCh0LGUpfX0se2tleTpcImdldENoYXJ0QnlJRFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBBcGV4Ll9jaGFydEluc3RhbmNlcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10fSlbMF0uY2hhcnR9fV0pLHR9KCk7ZXhwb3J0IGRlZmF1bHQgQXBleENoYXJ0cyQxOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/apexcharts/dist/apexcharts.esm.js\n");

/***/ }),

/***/ "./node_modules/axios/index.js":
/*!*************************************!*\
  !*** ./node_modules/axios/index.js ***!
  \*************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ./lib/axios */ \"./node_modules/axios/lib/axios.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanM/YmMzYSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2F4aW9zJyk7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/index.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/adapters/xhr.js":
/*!************************************************!*\
  !*** ./node_modules/axios/lib/adapters/xhr.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar settle = __webpack_require__(/*! ./../core/settle */ \"./node_modules/axios/lib/core/settle.js\");\nvar buildURL = __webpack_require__(/*! ./../helpers/buildURL */ \"./node_modules/axios/lib/helpers/buildURL.js\");\nvar parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ \"./node_modules/axios/lib/helpers/parseHeaders.js\");\nvar isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ \"./node_modules/axios/lib/helpers/isURLSameOrigin.js\");\nvar createError = __webpack_require__(/*! ../core/createError */ \"./node_modules/axios/lib/core/createError.js\");\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password || '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    // Listen for ready state\n    request.onreadystatechange = function handleLoad() {\n      if (!request || request.readyState !== 4) {\n        return;\n      }\n\n      // The request errored out and we didn't get a response, this will be\n      // handled by onerror instead\n      // With one exception: request that using file: protocol, most browsers\n      // will return status as 0 even though it's a successful request\n      if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n        return;\n      }\n\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      var cookies = __webpack_require__(/*! ./../helpers/cookies */ \"./node_modules/axios/lib/helpers/cookies.js\");\n\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n        cookies.read(config.xsrfCookieName) :\n        undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (config.withCredentials) {\n      request.withCredentials = true;\n    }\n\n    // Add responseType to request if needed\n    if (config.responseType) {\n      try {\n        request.responseType = config.responseType;\n      } catch (e) {\n        // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n        // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n        if (config.responseType !== 'json') {\n          throw e;\n        }\n      }\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (requestData === undefined) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL3hoci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzP2I1MGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgc2V0dGxlID0gcmVxdWlyZSgnLi8uLi9jb3JlL3NldHRsZScpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgcGFyc2VIZWFkZXJzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL3BhcnNlSGVhZGVycycpO1xudmFyIGlzVVJMU2FtZU9yaWdpbiA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9pc1VSTFNhbWVPcmlnaW4nKTtcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvY3JlYXRlRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4aHJBZGFwdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0RGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciByZXF1ZXN0SGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzO1xuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEocmVxdWVzdERhdGEpKSB7XG4gICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgfVxuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIC8vIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICBpZiAoY29uZmlnLmF1dGgpIHtcbiAgICAgIHZhciB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xuICAgICAgdmFyIHBhc3N3b3JkID0gY29uZmlnLmF1dGgucGFzc3dvcmQgfHwgJyc7XG4gICAgICByZXF1ZXN0SGVhZGVycy5BdXRob3JpemF0aW9uID0gJ0Jhc2ljICcgKyBidG9hKHVzZXJuYW1lICsgJzonICsgcGFzc3dvcmQpO1xuICAgIH1cblxuICAgIHJlcXVlc3Qub3Blbihjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksIGJ1aWxkVVJMKGNvbmZpZy51cmwsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKSwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xuICAgIHJlcXVlc3QudGltZW91dCA9IGNvbmZpZy50aW1lb3V0O1xuXG4gICAgLy8gTGlzdGVuIGZvciByZWFkeSBzdGF0ZVxuICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlTG9hZCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgcmVxdWVzdCBlcnJvcmVkIG91dCBhbmQgd2UgZGlkbid0IGdldCBhIHJlc3BvbnNlLCB0aGlzIHdpbGwgYmVcbiAgICAgIC8vIGhhbmRsZWQgYnkgb25lcnJvciBpbnN0ZWFkXG4gICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xuICAgICAgLy8gd2lsbCByZXR1cm4gc3RhdHVzIGFzIDAgZXZlbiB0aG91Z2ggaXQncyBhIHN1Y2Nlc3NmdWwgcmVxdWVzdFxuICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAwICYmICEocmVxdWVzdC5yZXNwb25zZVVSTCAmJiByZXF1ZXN0LnJlc3BvbnNlVVJMLmluZGV4T2YoJ2ZpbGU6JykgPT09IDApKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUHJlcGFyZSB0aGUgcmVzcG9uc2VcbiAgICAgIHZhciByZXNwb25zZUhlYWRlcnMgPSAnZ2V0QWxsUmVzcG9uc2VIZWFkZXJzJyBpbiByZXF1ZXN0ID8gcGFyc2VIZWFkZXJzKHJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpIDogbnVsbDtcbiAgICAgIHZhciByZXNwb25zZURhdGEgPSAhY29uZmlnLnJlc3BvbnNlVHlwZSB8fCBjb25maWcucmVzcG9uc2VUeXBlID09PSAndGV4dCcgPyByZXF1ZXN0LnJlc3BvbnNlVGV4dCA6IHJlcXVlc3QucmVzcG9uc2U7XG4gICAgICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgc3RhdHVzOiByZXF1ZXN0LnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgYnJvd3NlciByZXF1ZXN0IGNhbmNlbGxhdGlvbiAoYXMgb3Bwb3NlZCB0byBhIG1hbnVhbCBjYW5jZWxsYXRpb24pXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcsIGNvbmZpZywgJ0VDT05OQUJPUlRFRCcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBsb3cgbGV2ZWwgbmV0d29yayBlcnJvcnNcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gb25lcnJvciBzaG91bGQgb25seSBmaXJlIGlmIGl0J3MgYSBuZXR3b3JrIGVycm9yXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBjb25maWcsIG51bGwsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKCd0aW1lb3V0IG9mICcgKyBjb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCcsIGNvbmZpZywgJ0VDT05OQUJPUlRFRCcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIHZhciBjb29raWVzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2Nvb2tpZXMnKTtcblxuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICB2YXIgeHNyZlZhbHVlID0gKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMgfHwgaXNVUkxTYW1lT3JpZ2luKGNvbmZpZy51cmwpKSAmJiBjb25maWcueHNyZkNvb2tpZU5hbWUgP1xuICAgICAgICBjb29raWVzLnJlYWQoY29uZmlnLnhzcmZDb29raWVOYW1lKSA6XG4gICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHhzcmZWYWx1ZSkge1xuICAgICAgICByZXF1ZXN0SGVhZGVyc1tjb25maWcueHNyZkhlYWRlck5hbWVdID0geHNyZlZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSByZXF1ZXN0XG4gICAgaWYgKCdzZXRSZXF1ZXN0SGVhZGVyJyBpbiByZXF1ZXN0KSB7XG4gICAgICB1dGlscy5mb3JFYWNoKHJlcXVlc3RIZWFkZXJzLCBmdW5jdGlvbiBzZXRSZXF1ZXN0SGVhZGVyKHZhbCwga2V5KSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVxdWVzdERhdGEgPT09ICd1bmRlZmluZWQnICYmIGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC10eXBlJykge1xuICAgICAgICAgIC8vIFJlbW92ZSBDb250ZW50LVR5cGUgaWYgZGF0YSBpcyB1bmRlZmluZWRcbiAgICAgICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGhlYWRlciB0byB0aGUgcmVxdWVzdFxuICAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihrZXksIHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRoQ3JlZGVudGlhbHMgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoY29uZmlnLndpdGhDcmVkZW50aWFscykge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoY29uZmlnLnJlc3BvbnNlVHlwZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBFeHBlY3RlZCBET01FeGNlcHRpb24gdGhyb3duIGJ5IGJyb3dzZXJzIG5vdCBjb21wYXRpYmxlIFhNTEh0dHBSZXF1ZXN0IExldmVsIDIuXG4gICAgICAgIC8vIEJ1dCwgdGhpcyBjYW4gYmUgc3VwcHJlc3NlZCBmb3IgJ2pzb24nIHR5cGUgYXMgaXQgY2FuIGJlIHBhcnNlZCBieSBkZWZhdWx0ICd0cmFuc2Zvcm1SZXNwb25zZScgZnVuY3Rpb24uXG4gICAgICAgIGlmIChjb25maWcucmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkNhbmNlbGVkKGNhbmNlbCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjYW5jZWwpO1xuICAgICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3REYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlcXVlc3REYXRhID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhKTtcbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/adapters/xhr.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/axios.js":
/*!*****************************************!*\
  !*** ./node_modules/axios/lib/axios.js ***!
  \*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/axios/lib/utils.js\");\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/axios/lib/helpers/bind.js\");\nvar Axios = __webpack_require__(/*! ./core/Axios */ \"./node_modules/axios/lib/core/Axios.js\");\nvar mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ \"./node_modules/axios/lib/core/mergeConfig.js\");\nvar defaults = __webpack_require__(/*! ./defaults */ \"./node_modules/axios/lib/defaults.js\");\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ \"./node_modules/axios/lib/cancel/Cancel.js\");\naxios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ \"./node_modules/axios/lib/cancel/CancelToken.js\");\naxios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ \"./node_modules/axios/lib/cancel/isCancel.js\");\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = __webpack_require__(/*! ./helpers/spread */ \"./node_modules/axios/lib/helpers/spread.js\");\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2F4aW9zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9heGlvcy5qcz9jZWU0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xudmFyIEF4aW9zID0gcmVxdWlyZSgnLi9jb3JlL0F4aW9zJyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL2NvcmUvbWVyZ2VDb25maWcnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICogQHJldHVybiB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRDb25maWcpIHtcbiAgdmFyIGNvbnRleHQgPSBuZXcgQXhpb3MoZGVmYXVsdENvbmZpZyk7XG4gIHZhciBpbnN0YW5jZSA9IGJpbmQoQXhpb3MucHJvdG90eXBlLnJlcXVlc3QsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgQXhpb3MucHJvdG90eXBlLCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGNvbnRleHQgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBjb250ZXh0KTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbi8vIENyZWF0ZSB0aGUgZGVmYXVsdCBpbnN0YW5jZSB0byBiZSBleHBvcnRlZFxudmFyIGF4aW9zID0gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdHMpO1xuXG4vLyBFeHBvc2UgQXhpb3MgY2xhc3MgdG8gYWxsb3cgY2xhc3MgaW5oZXJpdGFuY2VcbmF4aW9zLkF4aW9zID0gQXhpb3M7XG5cbi8vIEZhY3RvcnkgZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXNcbmF4aW9zLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpbnN0YW5jZUNvbmZpZykge1xuICByZXR1cm4gY3JlYXRlSW5zdGFuY2UobWVyZ2VDb25maWcoYXhpb3MuZGVmYXVsdHMsIGluc3RhbmNlQ29uZmlnKSk7XG59O1xuXG4vLyBFeHBvc2UgQ2FuY2VsICYgQ2FuY2VsVG9rZW5cbmF4aW9zLkNhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbCcpO1xuYXhpb3MuQ2FuY2VsVG9rZW4gPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWxUb2tlbicpO1xuYXhpb3MuaXNDYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9pc0NhbmNlbCcpO1xuXG4vLyBFeHBvc2UgYWxsL3NwcmVhZFxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuYXhpb3Muc3ByZWFkID0gcmVxdWlyZSgnLi9oZWxwZXJzL3NwcmVhZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGF4aW9zO1xuXG4vLyBBbGxvdyB1c2Ugb2YgZGVmYXVsdCBpbXBvcnQgc3ludGF4IGluIFR5cGVTY3JpcHRcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBheGlvcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/axios.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/cancel/Cancel.js":
/*!*************************************************!*\
  !*** ./node_modules/axios/lib/cancel/Cancel.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWwuanM/N2E3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQSBgQ2FuY2VsYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbChtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG59XG5cbkNhbmNlbC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdDYW5jZWwnICsgKHRoaXMubWVzc2FnZSA/ICc6ICcgKyB0aGlzLm1lc3NhZ2UgOiAnJyk7XG59O1xuXG5DYW5jZWwucHJvdG90eXBlLl9fQ0FOQ0VMX18gPSB0cnVlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/Cancel.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/cancel/CancelToken.js":
/*!******************************************************!*\
  !*** ./node_modules/axios/lib/cancel/CancelToken.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar Cancel = __webpack_require__(/*! ./Cancel */ \"./node_modules/axios/lib/cancel/Cancel.js\");\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxUb2tlbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzPzhkZjQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi9DYW5jZWwnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xuICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIHJlc29sdmVQcm9taXNlO1xuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAqL1xuQ2FuY2VsVG9rZW4uc291cmNlID0gZnVuY3Rpb24gc291cmNlKCkge1xuICB2YXIgY2FuY2VsO1xuICB2YXIgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xuICAgIGNhbmNlbCA9IGM7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRva2VuOiB0b2tlbixcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxUb2tlbjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/CancelToken.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/cancel/isCancel.js":
/*!***************************************************!*\
  !*** ./node_modules/axios/lib/cancel/isCancel.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzPzJlNjciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/isCancel.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/core/Axios.js":
/*!**********************************************!*\
  !*** ./node_modules/axios/lib/core/Axios.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar buildURL = __webpack_require__(/*! ../helpers/buildURL */ \"./node_modules/axios/lib/helpers/buildURL.js\");\nvar InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ \"./node_modules/axios/lib/core/InterceptorManager.js\");\nvar dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ \"./node_modules/axios/lib/core/dispatchRequest.js\");\nvar mergeConfig = __webpack_require__(/*! ./mergeConfig */ \"./node_modules/axios/lib/core/mergeConfig.js\");\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = arguments[1] || {};\n    config.url = arguments[0];\n  } else {\n    config = config || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n  config.method = config.method ? config.method.toLowerCase() : 'get';\n\n  // Hook up interceptors middleware\n  var chain = [dispatchRequest, undefined];\n  var promise = Promise.resolve(config);\n\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    chain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    chain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  while (chain.length) {\n    promise = promise.then(chain.shift(), chain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanM/MGEwNiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL21lcmdlQ29uZmlnJyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIEF4aW9zKGluc3RhbmNlQ29uZmlnKSB7XG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAqL1xuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcgPSBhcmd1bWVudHNbMV0gfHwge307XG4gICAgY29uZmlnLnVybCA9IGFyZ3VtZW50c1swXTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gIH1cblxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICBjb25maWcubWV0aG9kID0gY29uZmlnLm1ldGhvZCA/IGNvbmZpZy5tZXRob2QudG9Mb3dlckNhc2UoKSA6ICdnZXQnO1xuXG4gIC8vIEhvb2sgdXAgaW50ZXJjZXB0b3JzIG1pZGRsZXdhcmVcbiAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcbiAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcblxuICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24gdW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICBjaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIGNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHdoaWxlIChjaGFpbi5sZW5ndGgpIHtcbiAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5BeGlvcy5wcm90b3R5cGUuZ2V0VXJpID0gZnVuY3Rpb24gZ2V0VXJpKGNvbmZpZykge1xuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICByZXR1cm4gYnVpbGRVUkwoY29uZmlnLnVybCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cXD8vLCAnJyk7XG59O1xuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1dGlscy5tZXJnZShjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmxcbiAgICB9KSk7XG4gIH07XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXRpbHMubWVyZ2UoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHVybDogdXJsLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF4aW9zO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/Axios.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/core/InterceptorManager.js":
/*!***********************************************************!*\
  !*** ./node_modules/axios/lib/core/InterceptorManager.js ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvSW50ZXJjZXB0b3JNYW5hZ2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcz9mNmI0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBJbnRlcmNlcHRvck1hbmFnZXIoKSB7XG4gIHRoaXMuaGFuZGxlcnMgPSBbXTtcbn1cblxuLyoqXG4gKiBBZGQgYSBuZXcgaW50ZXJjZXB0b3IgdG8gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVsZmlsbGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHRoZW5gIGZvciBhIGBQcm9taXNlYFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0ZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgcmVqZWN0YCBmb3IgYSBgUHJvbWlzZWBcbiAqXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IEFuIElEIHVzZWQgdG8gcmVtb3ZlIGludGVyY2VwdG9yIGxhdGVyXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpIHtcbiAgdGhpcy5oYW5kbGVycy5wdXNoKHtcbiAgICBmdWxmaWxsZWQ6IGZ1bGZpbGxlZCxcbiAgICByZWplY3RlZDogcmVqZWN0ZWRcbiAgfSk7XG4gIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpbnRlcmNlcHRvciBmcm9tIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5lamVjdCA9IGZ1bmN0aW9uIGVqZWN0KGlkKSB7XG4gIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xuICAgIHRoaXMuaGFuZGxlcnNbaWRdID0gbnVsbDtcbiAgfVxufTtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xuICpcbiAqIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNraXBwaW5nIG92ZXIgYW55XG4gKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpbnRlcmNlcHRvclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xuICAgIGlmIChoICE9PSBudWxsKSB7XG4gICAgICBmbihoKTtcbiAgICB9XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbnRlcmNlcHRvck1hbmFnZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/InterceptorManager.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/core/createError.js":
/*!****************************************************!*\
  !*** ./node_modules/axios/lib/core/createError.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar enhanceError = __webpack_require__(/*! ./enhanceError */ \"./node_modules/axios/lib/core/enhanceError.js\");\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanM/MmQ4MyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuL2VuaGFuY2VFcnJvcicpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFcnJvcihtZXNzYWdlLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/createError.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/core/dispatchRequest.js":
/*!********************************************************!*\
  !*** ./node_modules/axios/lib/core/dispatchRequest.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar transformData = __webpack_require__(/*! ./transformData */ \"./node_modules/axios/lib/core/transformData.js\");\nvar isCancel = __webpack_require__(/*! ../cancel/isCancel */ \"./node_modules/axios/lib/cancel/isCancel.js\");\nvar defaults = __webpack_require__(/*! ../defaults */ \"./node_modules/axios/lib/defaults.js\");\nvar isAbsoluteURL = __webpack_require__(/*! ./../helpers/isAbsoluteURL */ \"./node_modules/axios/lib/helpers/isAbsoluteURL.js\");\nvar combineURLs = __webpack_require__(/*! ./../helpers/combineURLs */ \"./node_modules/axios/lib/helpers/combineURLs.js\");\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Support baseURL config\n  if (config.baseURL && !isAbsoluteURL(config.url)) {\n    config.url = combineURLs(config.baseURL, config.url);\n  }\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData(\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers || {}\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData(\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData(\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcz81MjcwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHRyYW5zZm9ybURhdGEgPSByZXF1aXJlKCcuL3RyYW5zZm9ybURhdGEnKTtcbnZhciBpc0NhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9pc0NhbmNlbCcpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcbnZhciBpc0Fic29sdXRlVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwnKTtcbnZhciBjb21iaW5lVVJMcyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9jb21iaW5lVVJMcycpO1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYWRhcHRlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRpc3BhdGNoUmVxdWVzdChjb25maWcpIHtcbiAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gIC8vIFN1cHBvcnQgYmFzZVVSTCBjb25maWdcbiAgaWYgKGNvbmZpZy5iYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKGNvbmZpZy51cmwpKSB7XG4gICAgY29uZmlnLnVybCA9IGNvbWJpbmVVUkxzKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgfVxuXG4gIC8vIEVuc3VyZSBoZWFkZXJzIGV4aXN0XG4gIGNvbmZpZy5oZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgfHwge307XG5cbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxuICBjb25maWcuZGF0YSA9IHRyYW5zZm9ybURhdGEoXG4gICAgY29uZmlnLmRhdGEsXG4gICAgY29uZmlnLmhlYWRlcnMsXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcbiAgKTtcblxuICAvLyBGbGF0dGVuIGhlYWRlcnNcbiAgY29uZmlnLmhlYWRlcnMgPSB1dGlscy5tZXJnZShcbiAgICBjb25maWcuaGVhZGVycy5jb21tb24gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnNbY29uZmlnLm1ldGhvZF0gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnMgfHwge31cbiAgKTtcblxuICB1dGlscy5mb3JFYWNoKFxuICAgIFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJywgJ2NvbW1vbiddLFxuICAgIGZ1bmN0aW9uIGNsZWFuSGVhZGVyQ29uZmlnKG1ldGhvZCkge1xuICAgICAgZGVsZXRlIGNvbmZpZy5oZWFkZXJzW21ldGhvZF07XG4gICAgfVxuICApO1xuXG4gIHZhciBhZGFwdGVyID0gY29uZmlnLmFkYXB0ZXIgfHwgZGVmYXVsdHMuYWRhcHRlcjtcblxuICByZXR1cm4gYWRhcHRlcihjb25maWcpLnRoZW4oZnVuY3Rpb24gb25BZGFwdGVyUmVzb2x1dGlvbihyZXNwb25zZSkge1xuICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgcmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEoXG4gICAgICByZXNwb25zZS5kYXRhLFxuICAgICAgcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YShcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/dispatchRequest.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/core/enhanceError.js":
/*!*****************************************************!*\
  !*** ./node_modules/axios/lib/core/enhanceError.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n\n  error.request = request;\n  error.response = response;\n  error.isAxiosError = true;\n\n  error.toJSON = function() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code\n    };\n  };\n  return error;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZW5oYW5jZUVycm9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2VuaGFuY2VFcnJvci5qcz8zODdmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVcGRhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZywgZXJyb3IgY29kZSwgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIFRoZSBlcnJvciB0byB1cGRhdGUuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICBlcnJvci5jb25maWcgPSBjb25maWc7XG4gIGlmIChjb2RlKSB7XG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XG4gIH1cblxuICBlcnJvci5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgZXJyb3IucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgZXJyb3IuaXNBeGlvc0Vycm9yID0gdHJ1ZTtcblxuICBlcnJvci50b0pTT04gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gU3RhbmRhcmRcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIC8vIE1pY3Jvc29mdFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBudW1iZXI6IHRoaXMubnVtYmVyLFxuICAgICAgLy8gTW96aWxsYVxuICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXG4gICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG4gICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICAvLyBBeGlvc1xuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGNvZGU6IHRoaXMuY29kZVxuICAgIH07XG4gIH07XG4gIHJldHVybiBlcnJvcjtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/enhanceError.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/core/mergeConfig.js":
/*!****************************************************!*\
  !*** ./node_modules/axios/lib/core/mergeConfig.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/axios/lib/utils.js\");\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n    if (typeof config2[prop] !== 'undefined') {\n      config[prop] = config2[prop];\n    }\n  });\n\n  utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n    if (utils.isObject(config2[prop])) {\n      config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n    } else if (typeof config2[prop] !== 'undefined') {\n      config[prop] = config2[prop];\n    } else if (utils.isObject(config1[prop])) {\n      config[prop] = utils.deepMerge(config1[prop]);\n    } else if (typeof config1[prop] !== 'undefined') {\n      config[prop] = config1[prop];\n    }\n  });\n\n  utils.forEach([\n    'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n    'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n    'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n    'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n    'socketPath'\n  ], function defaultToConfig2(prop) {\n    if (typeof config2[prop] !== 'undefined') {\n      config[prop] = config2[prop];\n    } else if (typeof config1[prop] !== 'undefined') {\n      config[prop] = config1[prop];\n    }\n  });\n\n  return config;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvbWVyZ2VDb25maWcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvbWVyZ2VDb25maWcuanM/NGE3YiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbi8qKlxuICogQ29uZmlnLXNwZWNpZmljIG1lcmdlLWZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgYSBuZXcgY29uZmlnLW9iamVjdFxuICogYnkgbWVyZ2luZyB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcxXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMlxuICogQHJldHVybnMge09iamVjdH0gTmV3IG9iamVjdCByZXN1bHRpbmcgZnJvbSBtZXJnaW5nIGNvbmZpZzIgdG8gY29uZmlnMVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1lcmdlQ29uZmlnKGNvbmZpZzEsIGNvbmZpZzIpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGNvbmZpZzIgPSBjb25maWcyIHx8IHt9O1xuICB2YXIgY29uZmlnID0ge307XG5cbiAgdXRpbHMuZm9yRWFjaChbJ3VybCcsICdtZXRob2QnLCAncGFyYW1zJywgJ2RhdGEnXSwgZnVuY3Rpb24gdmFsdWVGcm9tQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBjb25maWcyW3Byb3BdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uZmlnW3Byb3BdID0gY29uZmlnMltwcm9wXTtcbiAgICB9XG4gIH0pO1xuXG4gIHV0aWxzLmZvckVhY2goWydoZWFkZXJzJywgJ2F1dGgnLCAncHJveHknXSwgZnVuY3Rpb24gbWVyZ2VEZWVwUHJvcGVydGllcyhwcm9wKSB7XG4gICAgaWYgKHV0aWxzLmlzT2JqZWN0KGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSB1dGlscy5kZWVwTWVyZ2UoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29uZmlnMltwcm9wXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGNvbmZpZzJbcHJvcF07XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdChjb25maWcxW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gdXRpbHMuZGVlcE1lcmdlKGNvbmZpZzFbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbmZpZzFbcHJvcF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBjb25maWcxW3Byb3BdO1xuICAgIH1cbiAgfSk7XG5cbiAgdXRpbHMuZm9yRWFjaChbXG4gICAgJ2Jhc2VVUkwnLCAndHJhbnNmb3JtUmVxdWVzdCcsICd0cmFuc2Zvcm1SZXNwb25zZScsICdwYXJhbXNTZXJpYWxpemVyJyxcbiAgICAndGltZW91dCcsICd3aXRoQ3JlZGVudGlhbHMnLCAnYWRhcHRlcicsICdyZXNwb25zZVR5cGUnLCAneHNyZkNvb2tpZU5hbWUnLFxuICAgICd4c3JmSGVhZGVyTmFtZScsICdvblVwbG9hZFByb2dyZXNzJywgJ29uRG93bmxvYWRQcm9ncmVzcycsICdtYXhDb250ZW50TGVuZ3RoJyxcbiAgICAndmFsaWRhdGVTdGF0dXMnLCAnbWF4UmVkaXJlY3RzJywgJ2h0dHBBZ2VudCcsICdodHRwc0FnZW50JywgJ2NhbmNlbFRva2VuJyxcbiAgICAnc29ja2V0UGF0aCdcbiAgXSwgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBjb25maWcyW3Byb3BdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uZmlnW3Byb3BdID0gY29uZmlnMltwcm9wXTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb25maWcxW3Byb3BdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uZmlnW3Byb3BdID0gY29uZmlnMVtwcm9wXTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/mergeConfig.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/core/settle.js":
/*!***********************************************!*\
  !*** ./node_modules/axios/lib/core/settle.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar createError = __webpack_require__(/*! ./createError */ \"./node_modules/axios/lib/core/createError.js\");\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcz80NjdmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnLi9jcmVhdGVFcnJvcicpO1xuXG4vKipcbiAqIFJlc29sdmUgb3IgcmVqZWN0IGEgUHJvbWlzZSBiYXNlZCBvbiByZXNwb25zZSBzdGF0dXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZSBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3QgQSBmdW5jdGlvbiB0aGF0IHJlamVjdHMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKSB7XG4gIHZhciB2YWxpZGF0ZVN0YXR1cyA9IHJlc3BvbnNlLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztcbiAgaWYgKCF2YWxpZGF0ZVN0YXR1cyB8fCB2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgcmVqZWN0KGNyZWF0ZUVycm9yKFxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcbiAgICAgIG51bGwsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/settle.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/core/transformData.js":
/*!******************************************************!*\
  !*** ./node_modules/axios/lib/core/transformData.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn(data, headers);\n  });\n\n  return data;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvdHJhbnNmb3JtRGF0YS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzP2M0MDEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBkYXRhIGZvciBhIHJlcXVlc3Qgb3IgYSByZXNwb25zZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ30gZGF0YSBUaGUgZGF0YSB0byBiZSB0cmFuc2Zvcm1lZFxuICogQHBhcmFtIHtBcnJheX0gaGVhZGVycyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3Qgb3IgcmVzcG9uc2VcbiAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb259IGZucyBBIHNpbmdsZSBmdW5jdGlvbiBvciBBcnJheSBvZiBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIHsqfSBUaGUgcmVzdWx0aW5nIHRyYW5zZm9ybWVkIGRhdGFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGRhdGEsIGhlYWRlcnMsIGZucykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgdXRpbHMuZm9yRWFjaChmbnMsIGZ1bmN0aW9uIHRyYW5zZm9ybShmbikge1xuICAgIGRhdGEgPSBmbihkYXRhLCBoZWFkZXJzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGE7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/transformData.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/defaults.js":
/*!********************************************!*\
  !*** ./node_modules/axios/lib/defaults.js ***!
  \********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/axios/lib/utils.js\");\nvar normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ \"./node_modules/axios/lib/helpers/normalizeHeaderName.js\");\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  // Only Node.JS has a process variable that is of [[Class]] process\n  if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = __webpack_require__(/*! ./adapters/http */ \"./node_modules/axios/lib/adapters/xhr.js\");\n  } else if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = __webpack_require__(/*! ./adapters/xhr */ \"./node_modules/axios/lib/adapters/xhr.js\");\n  }\n  return adapter;\n}\n\nvar defaults = {\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data)) {\n      setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n      return JSON.stringify(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    /*eslint no-param-reassign:0*/\n    if (typeof data === 'string') {\n      try {\n        data = JSON.parse(data);\n      } catch (e) { /* Ignore */ }\n    }\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy5qcz8yNDQ0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIG5vcm1hbGl6ZUhlYWRlck5hbWUgPSByZXF1aXJlKCcuL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZScpO1xuXG52YXIgREVGQVVMVF9DT05URU5UX1RZUEUgPSB7XG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xufTtcblxuZnVuY3Rpb24gc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsIHZhbHVlKSB7XG4gIGlmICghdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVycykgJiYgdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVyc1snQ29udGVudC1UeXBlJ10pKSB7XG4gICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSB2YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0QWRhcHRlcigpIHtcbiAgdmFyIGFkYXB0ZXI7XG4gIC8vIE9ubHkgTm9kZS5KUyBoYXMgYSBwcm9jZXNzIHZhcmlhYmxlIHRoYXQgaXMgb2YgW1tDbGFzc11dIHByb2Nlc3NcbiAgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJykge1xuICAgIC8vIEZvciBub2RlIHVzZSBIVFRQIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy9odHRwJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIEZvciBicm93c2VycyB1c2UgWEhSIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy94aHInKTtcbiAgfVxuICByZXR1cm4gYWRhcHRlcjtcbn1cblxudmFyIGRlZmF1bHRzID0ge1xuICBhZGFwdGVyOiBnZXREZWZhdWx0QWRhcHRlcigpLFxuXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdBY2NlcHQnKTtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdDb250ZW50LVR5cGUnKTtcbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnKTtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc09iamVjdChkYXRhKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgnKTtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIHRyYW5zZm9ybVJlc3BvbnNlOiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVzcG9uc2UoZGF0YSkge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgfSBjYXRjaCAoZSkgeyAvKiBJZ25vcmUgKi8gfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gYWJvcnQgYSByZXF1ZXN0LiBJZiBzZXQgdG8gMCAoZGVmYXVsdCkgYVxuICAgKiB0aW1lb3V0IGlzIG5vdCBjcmVhdGVkLlxuICAgKi9cbiAgdGltZW91dDogMCxcblxuICB4c3JmQ29va2llTmFtZTogJ1hTUkYtVE9LRU4nLFxuICB4c3JmSGVhZGVyTmFtZTogJ1gtWFNSRi1UT0tFTicsXG5cbiAgbWF4Q29udGVudExlbmd0aDogLTEsXG5cbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xuICAgIHJldHVybiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgfVxufTtcblxuZGVmYXVsdHMuaGVhZGVycyA9IHtcbiAgY29tbW9uOiB7XG4gICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonXG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0ge307XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0gdXRpbHMubWVyZ2UoREVGQVVMVF9DT05URU5UX1RZUEUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/defaults.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/helpers/bind.js":
/*!************************************************!*\
  !*** ./node_modules/axios/lib/helpers/bind.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzPzFkMmIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJncyk7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/bind.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/helpers/buildURL.js":
/*!****************************************************!*\
  !*** ./node_modules/axios/lib/helpers/buildURL.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%40/gi, '@').\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanM/MzBiNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTQwL2dpLCAnQCcpLlxuICAgIHJlcGxhY2UoLyUzQS9naSwgJzonKS5cbiAgICByZXBsYWNlKC8lMjQvZywgJyQnKS5cbiAgICByZXBsYWNlKC8lMkMvZ2ksICcsJykuXG4gICAgcmVwbGFjZSgvJTIwL2csICcrJykuXG4gICAgcmVwbGFjZSgvJTVCL2dpLCAnWycpLlxuICAgIHJlcGxhY2UoLyU1RC9naSwgJ10nKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIFVSTCBieSBhcHBlbmRpbmcgcGFyYW1zIHRvIHRoZSBlbmRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBiYXNlIG9mIHRoZSB1cmwgKGUuZy4sIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbSlcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBUaGUgcGFyYW1zIHRvIGJlIGFwcGVuZGVkXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHVybFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkVVJMKHVybCwgcGFyYW1zLCBwYXJhbXNTZXJpYWxpemVyKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICBpZiAoIXBhcmFtcykge1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICB2YXIgc2VyaWFsaXplZFBhcmFtcztcbiAgaWYgKHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFyYW1zU2VyaWFsaXplcihwYXJhbXMpO1xuICB9IGVsc2UgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykpIHtcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhcnRzID0gW107XG5cbiAgICB1dGlscy5mb3JFYWNoKHBhcmFtcywgZnVuY3Rpb24gc2VyaWFsaXplKHZhbCwga2V5KSB7XG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHV0aWxzLmlzQXJyYXkodmFsKSkge1xuICAgICAgICBrZXkgPSBrZXkgKyAnW10nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gW3ZhbF07XG4gICAgICB9XG5cbiAgICAgIHV0aWxzLmZvckVhY2godmFsLCBmdW5jdGlvbiBwYXJzZVZhbHVlKHYpIHtcbiAgICAgICAgaWYgKHV0aWxzLmlzRGF0ZSh2KSkge1xuICAgICAgICAgIHYgPSB2LnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodXRpbHMuaXNPYmplY3QodikpIHtcbiAgICAgICAgICB2ID0gSlNPTi5zdHJpbmdpZnkodik7XG4gICAgICAgIH1cbiAgICAgICAgcGFydHMucHVzaChlbmNvZGUoa2V5KSArICc9JyArIGVuY29kZSh2KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJ0cy5qb2luKCcmJyk7XG4gIH1cblxuICBpZiAoc2VyaWFsaXplZFBhcmFtcykge1xuICAgIHZhciBoYXNobWFya0luZGV4ID0gdXJsLmluZGV4T2YoJyMnKTtcbiAgICBpZiAoaGFzaG1hcmtJbmRleCAhPT0gLTEpIHtcbiAgICAgIHVybCA9IHVybC5zbGljZSgwLCBoYXNobWFya0luZGV4KTtcbiAgICB9XG5cbiAgICB1cmwgKz0gKHVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIH1cblxuICByZXR1cm4gdXJsO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/buildURL.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/helpers/combineURLs.js":
/*!*******************************************************!*\
  !*** ./node_modules/axios/lib/helpers/combineURLs.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tYmluZVVSTHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tYmluZVVSTHMuanM/ZTY4MyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/combineURLs.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/helpers/cookies.js":
/*!***************************************************!*\
  !*** ./node_modules/axios/lib/helpers/cookies.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n    (function standardBrowserEnv() {\n      return {\n        write: function write(name, value, expires, path, domain, secure) {\n          var cookie = [];\n          cookie.push(name + '=' + encodeURIComponent(value));\n\n          if (utils.isNumber(expires)) {\n            cookie.push('expires=' + new Date(expires).toGMTString());\n          }\n\n          if (utils.isString(path)) {\n            cookie.push('path=' + path);\n          }\n\n          if (utils.isString(domain)) {\n            cookie.push('domain=' + domain);\n          }\n\n          if (secure === true) {\n            cookie.push('secure');\n          }\n\n          document.cookie = cookie.join('; ');\n        },\n\n        read: function read(name) {\n          var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n          return (match ? decodeURIComponent(match[3]) : null);\n        },\n\n        remove: function remove(name) {\n          this.write(name, '', Date.now() - 86400000);\n        }\n      };\n    })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return {\n        write: function write() {},\n        read: function read() { return null; },\n        remove: function remove() {}\n      };\n    })()\n);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29va2llcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzPzdhYWMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgc3VwcG9ydCBkb2N1bWVudC5jb29raWVcbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkge1xuICAgICAgICAgIHZhciBjb29raWUgPSBbXTtcbiAgICAgICAgICBjb29raWUucHVzaChuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNOdW1iZXIoZXhwaXJlcykpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdwYXRoPScgKyBwYXRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcoZG9tYWluKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2RvbWFpbj0nICsgZG9tYWluKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnc2VjdXJlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XG4gICAgICAgICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcbiAgICAgICAgICByZXR1cm4gKG1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzNdKSA6IG51bGwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKG5hbWUpIHtcbiAgICAgICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudiAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKCkge30sXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQoKSB7IHJldHVybiBudWxsOyB9LFxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/cookies.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js":
/*!*********************************************************!*\
  !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzP2Q5MjUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxuICAvLyBSRkMgMzk4NiBkZWZpbmVzIHNjaGVtZSBuYW1lIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBhbmQgZm9sbG93ZWRcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXG4gIHJldHVybiAvXihbYS16XVthLXpcXGRcXCtcXC1cXC5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isAbsoluteURL.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js":
/*!***********************************************************!*\
  !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n    (function standardBrowserEnv() {\n      var msie = /(msie|trident)/i.test(navigator.userAgent);\n      var urlParsingNode = document.createElement('a');\n      var originURL;\n\n      /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n      function resolveURL(url) {\n        var href = url;\n\n        if (msie) {\n        // IE needs attribute set twice to normalize properties\n          urlParsingNode.setAttribute('href', href);\n          href = urlParsingNode.href;\n        }\n\n        urlParsingNode.setAttribute('href', href);\n\n        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n        return {\n          href: urlParsingNode.href,\n          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n          host: urlParsingNode.host,\n          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n          hostname: urlParsingNode.hostname,\n          port: urlParsingNode.port,\n          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n            urlParsingNode.pathname :\n            '/' + urlParsingNode.pathname\n        };\n      }\n\n      originURL = resolveURL(window.location.href);\n\n      /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n      return function isURLSameOrigin(requestURL) {\n        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n        return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n      };\n    })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return function isURLSameOrigin() {\n        return true;\n      };\n    })()\n);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcz8zOTM0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XG4gIC8vIHdoZXRoZXIgdGhlIHJlcXVlc3QgVVJMIGlzIG9mIHRoZSBzYW1lIG9yaWdpbiBhcyBjdXJyZW50IGxvY2F0aW9uLlxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICB2YXIgbXNpZSA9IC8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICB2YXIgdXJsUGFyc2luZ05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICB2YXIgb3JpZ2luVVJMO1xuXG4gICAgICAvKipcbiAgICAqIFBhcnNlIGEgVVJMIHRvIGRpc2NvdmVyIGl0J3MgY29tcG9uZW50c1xuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgVGhlIFVSTCB0byBiZSBwYXJzZWRcbiAgICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAgKi9cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVVUkwodXJsKSB7XG4gICAgICAgIHZhciBocmVmID0gdXJsO1xuXG4gICAgICAgIGlmIChtc2llKSB7XG4gICAgICAgIC8vIElFIG5lZWRzIGF0dHJpYnV0ZSBzZXQgdHdpY2UgdG8gbm9ybWFsaXplIHByb3BlcnRpZXNcbiAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcbiAgICAgICAgICBocmVmID0gdXJsUGFyc2luZ05vZGUuaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuXG4gICAgICAgIC8vIHVybFBhcnNpbmdOb2RlIHByb3ZpZGVzIHRoZSBVcmxVdGlscyBpbnRlcmZhY2UgLSBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsdXRpbHNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBocmVmOiB1cmxQYXJzaW5nTm9kZS5ocmVmLFxuICAgICAgICAgIHByb3RvY29sOiB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbCA/IHVybFBhcnNpbmdOb2RlLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdDogdXJsUGFyc2luZ05vZGUuaG9zdCxcbiAgICAgICAgICBzZWFyY2g6IHVybFBhcnNpbmdOb2RlLnNlYXJjaCA/IHVybFBhcnNpbmdOb2RlLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgJycpIDogJycsXG4gICAgICAgICAgaGFzaDogdXJsUGFyc2luZ05vZGUuaGFzaCA/IHVybFBhcnNpbmdOb2RlLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0bmFtZTogdXJsUGFyc2luZ05vZGUuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogdXJsUGFyc2luZ05vZGUucG9ydCxcbiAgICAgICAgICBwYXRobmFtZTogKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/XG4gICAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZSA6XG4gICAgICAgICAgICAnLycgKyB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5VUkwgPSByZXNvbHZlVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcblxuICAgICAgLyoqXG4gICAgKiBEZXRlcm1pbmUgaWYgYSBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgY3VycmVudCBsb2NhdGlvblxuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0VVJMIFRoZSBVUkwgdG8gdGVzdFxuICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4sIG90aGVyd2lzZSBmYWxzZVxuICAgICovXG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcbiAgICAgICAgdmFyIHBhcnNlZCA9ICh1dGlscy5pc1N0cmluZyhyZXF1ZXN0VVJMKSkgPyByZXNvbHZlVVJMKHJlcXVlc3RVUkwpIDogcmVxdWVzdFVSTDtcbiAgICAgICAgcmV0dXJuIChwYXJzZWQucHJvdG9jb2wgPT09IG9yaWdpblVSTC5wcm90b2NvbCAmJlxuICAgICAgICAgICAgcGFyc2VkLmhvc3QgPT09IG9yaWdpblVSTC5ob3N0KTtcbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52cyAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isURLSameOrigin.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js":
/*!***************************************************************!*\
  !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/axios/lib/utils.js\");\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lLmpzP2M4YWYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgbm9ybWFsaXplZE5hbWUpIHtcbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiBwcm9jZXNzSGVhZGVyKHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKG5hbWUgIT09IG5vcm1hbGl6ZWROYW1lICYmIG5hbWUudG9VcHBlckNhc2UoKSA9PT0gbm9ybWFsaXplZE5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW25hbWVdO1xuICAgIH1cbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/normalizeHeaderName.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/helpers/parseHeaders.js":
/*!********************************************************!*\
  !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlSGVhZGVycy5qcz9jMzQ1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG4vLyBIZWFkZXJzIHdob3NlIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgYnkgbm9kZVxuLy8gYy5mLiBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX21lc3NhZ2VfaGVhZGVyc1xudmFyIGlnbm9yZUR1cGxpY2F0ZU9mID0gW1xuICAnYWdlJywgJ2F1dGhvcml6YXRpb24nLCAnY29udGVudC1sZW5ndGgnLCAnY29udGVudC10eXBlJywgJ2V0YWcnLFxuICAnZXhwaXJlcycsICdmcm9tJywgJ2hvc3QnLCAnaWYtbW9kaWZpZWQtc2luY2UnLCAnaWYtdW5tb2RpZmllZC1zaW5jZScsXG4gICdsYXN0LW1vZGlmaWVkJywgJ2xvY2F0aW9uJywgJ21heC1mb3J3YXJkcycsICdwcm94eS1hdXRob3JpemF0aW9uJyxcbiAgJ3JlZmVyZXInLCAncmV0cnktYWZ0ZXInLCAndXNlci1hZ2VudCdcbl07XG5cbi8qKlxuICogUGFyc2UgaGVhZGVycyBpbnRvIGFuIG9iamVjdFxuICpcbiAqIGBgYFxuICogRGF0ZTogV2VkLCAyNyBBdWcgMjAxNCAwODo1ODo0OSBHTVRcbiAqIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblxuICogQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxuICogVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWFkZXJzIEhlYWRlcnMgbmVlZGluZyB0byBiZSBwYXJzZWRcbiAqIEByZXR1cm5zIHtPYmplY3R9IEhlYWRlcnMgcGFyc2VkIGludG8gYW4gb2JqZWN0XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGFyc2VIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdmFyIHBhcnNlZCA9IHt9O1xuICB2YXIga2V5O1xuICB2YXIgdmFsO1xuICB2YXIgaTtcblxuICBpZiAoIWhlYWRlcnMpIHsgcmV0dXJuIHBhcnNlZDsgfVxuXG4gIHV0aWxzLmZvckVhY2goaGVhZGVycy5zcGxpdCgnXFxuJyksIGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGtleSA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoMCwgaSkpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cihpICsgMSkpO1xuXG4gICAgaWYgKGtleSkge1xuICAgICAgaWYgKHBhcnNlZFtrZXldICYmIGlnbm9yZUR1cGxpY2F0ZU9mLmluZGV4T2Yoa2V5KSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xuICAgICAgICBwYXJzZWRba2V5XSA9IChwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldIDogW10pLmNvbmNhdChbdmFsXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/parseHeaders.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/helpers/spread.js":
/*!**************************************************!*\
  !*** ./node_modules/axios/lib/helpers/spread.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwcmVhZC5qcz8wZGY2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/spread.js\n");

/***/ }),

/***/ "./node_modules/axios/lib/utils.js":
/*!*****************************************!*\
  !*** ./node_modules/axios/lib/utils.js ***!
  \*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/axios/lib/helpers/bind.js\");\nvar isBuffer = __webpack_require__(/*! is-buffer */ \"./node_modules/axios/node_modules/is-buffer/index.js\");\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (typeof result[key] === 'object' && typeof val === 'object') {\n      result[key] = merge(result[key], val);\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (typeof result[key] === 'object' && typeof val === 'object') {\n      result[key] = deepMerge(result[key], val);\n    } else if (typeof val === 'object') {\n      result[key] = deepMerge({}, val);\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  deepMerge: deepMerge,\n  extend: extend,\n  trim: trim\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcz9jNTMyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xudmFyIGlzQnVmZmVyID0gcmVxdWlyZSgnaXMtYnVmZmVyJyk7XG5cbi8qZ2xvYmFsIHRvU3RyaW5nOnRydWUqL1xuXG4vLyB1dGlscyBpcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBoZWxwZXIgZnVuY3Rpb25zIG5vbi1zcGVjaWZpYyB0byBheGlvc1xuXG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5KHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBGb3JtRGF0YSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRm9ybURhdGEodmFsKSB7XG4gIHJldHVybiAodHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJykgJiYgKHZhbCBpbnN0YW5jZW9mIEZvcm1EYXRhKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVmlldyh2YWwpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSAmJiAoQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xuICAgIHJlc3VsdCA9IEFycmF5QnVmZmVyLmlzVmlldyh2YWwpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9ICh2YWwpICYmICh2YWwuYnVmZmVyKSAmJiAodmFsLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRGF0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRmlsZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRmlsZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQmxvYih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQmxvYl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJlYW0odmFsKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVVJMU2VhcmNoUGFyYW1zKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zO1xufVxuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyovLCAnJykucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XG4gKlxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cbiAqXG4gKiB3ZWIgd29ya2VyczpcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxuICogIHR5cGVvZiBkb2N1bWVudCAtPiB1bmRlZmluZWRcbiAqXG4gKiByZWFjdC1uYXRpdmU6XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ1JlYWN0TmF0aXZlJ1xuICogbmF0aXZlc2NyaXB0XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xuICovXG5mdW5jdGlvbiBpc1N0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIChuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTmF0aXZlU2NyaXB0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTlMnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuICApO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbikge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0eXBlb2YgcmVzdWx0W2tleV0gPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gZXF1YWwgdG8gbWVyZ2Ugd2l0aCB0aGUgZGlmZmVyZW5jZSBiZWluZyB0aGF0IG5vIHJlZmVyZW5jZVxuICogdG8gb3JpZ2luYWwgb2JqZWN0cyBpcyBrZXB0LlxuICpcbiAqIEBzZWUgbWVyZ2VcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoxIE9iamVjdCB0byBtZXJnZVxuICogQHJldHVybnMge09iamVjdH0gUmVzdWx0IG9mIGFsbCBtZXJnZSBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIGRlZXBNZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0eXBlb2YgcmVzdWx0W2tleV0gPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGRlZXBNZXJnZShyZXN1bHRba2V5XSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGRlZXBNZXJnZSh7fSwgdmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZm9yRWFjaChhcmd1bWVudHNbaV0sIGFzc2lnblZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgb2JqZWN0IGEgYnkgbXV0YWJseSBhZGRpbmcgdG8gaXQgdGhlIHByb3BlcnRpZXMgb2Ygb2JqZWN0IGIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGEgVGhlIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICogQHBhcmFtIHtPYmplY3R9IGIgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHBhcmFtIHtPYmplY3R9IHRoaXNBcmcgVGhlIG9iamVjdCB0byBiaW5kIGZ1bmN0aW9uIHRvXG4gKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXN1bHRpbmcgdmFsdWUgb2Ygb2JqZWN0IGFcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kKGEsIGIsIHRoaXNBcmcpIHtcbiAgZm9yRWFjaChiLCBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0aGlzQXJnICYmIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGFba2V5XSA9IGJpbmQodmFsLCB0aGlzQXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYVtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBhO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhOiBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldzogaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlOiBpc0RhdGUsXG4gIGlzRmlsZTogaXNGaWxlLFxuICBpc0Jsb2I6IGlzQmxvYixcbiAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgaXNTdHJlYW06IGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtczogaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzU3RhbmRhcmRCcm93c2VyRW52OiBpc1N0YW5kYXJkQnJvd3NlckVudixcbiAgZm9yRWFjaDogZm9yRWFjaCxcbiAgbWVyZ2U6IG1lcmdlLFxuICBkZWVwTWVyZ2U6IGRlZXBNZXJnZSxcbiAgZXh0ZW5kOiBleHRlbmQsXG4gIHRyaW06IHRyaW1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/utils.js\n");

/***/ }),

/***/ "./node_modules/axios/node_modules/is-buffer/index.js":
/*!************************************************************!*\
  !*** ./node_modules/axios/node_modules/is-buffer/index.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n  return obj != null && obj.constructor != null &&\n    typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3Mvbm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9ub2RlX21vZHVsZXMvaXMtYnVmZmVyL2luZGV4LmpzP2M3Y2UiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBEZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgQnVmZmVyXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQnVmZmVyIChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3RvciAhPSBudWxsICYmXG4gICAgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/node_modules/is-buffer/index.js\n");

/***/ }),

/***/ "./node_modules/babel-helper-vue-jsx-merge-props/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/babel-helper-vue-jsx-merge-props/index.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var nestRE = /^(attrs|props|on|nativeOn|class|style|hook)$/\n\nmodule.exports = function mergeJSXProps (objs) {\n  return objs.reduce(function (a, b) {\n    var aa, bb, key, nestedKey, temp\n    for (key in b) {\n      aa = a[key]\n      bb = b[key]\n      if (aa && nestRE.test(key)) {\n        // normalize class\n        if (key === 'class') {\n          if (typeof aa === 'string') {\n            temp = aa\n            a[key] = aa = {}\n            aa[temp] = true\n          }\n          if (typeof bb === 'string') {\n            temp = bb\n            b[key] = bb = {}\n            bb[temp] = true\n          }\n        }\n        if (key === 'on' || key === 'nativeOn' || key === 'hook') {\n          // merge functions\n          for (nestedKey in bb) {\n            aa[nestedKey] = mergeFn(aa[nestedKey], bb[nestedKey])\n          }\n        } else if (Array.isArray(aa)) {\n          a[key] = aa.concat(bb)\n        } else if (Array.isArray(bb)) {\n          a[key] = [aa].concat(bb)\n        } else {\n          for (nestedKey in bb) {\n            aa[nestedKey] = bb[nestedKey]\n          }\n        }\n      } else {\n        a[key] = b[key]\n      }\n    }\n    return a\n  }, {})\n}\n\nfunction mergeFn (a, b) {\n  return function () {\n    a && a.apply(this, arguments)\n    b && b.apply(this, arguments)\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtaGVscGVyLXZ1ZS1qc3gtbWVyZ2UtcHJvcHMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtaGVscGVyLXZ1ZS1qc3gtbWVyZ2UtcHJvcHMvaW5kZXguanM/OTJmYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbmVzdFJFID0gL14oYXR0cnN8cHJvcHN8b258bmF0aXZlT258Y2xhc3N8c3R5bGV8aG9vaykkL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1lcmdlSlNYUHJvcHMgKG9ianMpIHtcbiAgcmV0dXJuIG9ianMucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgdmFyIGFhLCBiYiwga2V5LCBuZXN0ZWRLZXksIHRlbXBcbiAgICBmb3IgKGtleSBpbiBiKSB7XG4gICAgICBhYSA9IGFba2V5XVxuICAgICAgYmIgPSBiW2tleV1cbiAgICAgIGlmIChhYSAmJiBuZXN0UkUudGVzdChrZXkpKSB7XG4gICAgICAgIC8vIG5vcm1hbGl6ZSBjbGFzc1xuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBhYSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRlbXAgPSBhYVxuICAgICAgICAgICAgYVtrZXldID0gYWEgPSB7fVxuICAgICAgICAgICAgYWFbdGVtcF0gPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgYmIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0ZW1wID0gYmJcbiAgICAgICAgICAgIGJba2V5XSA9IGJiID0ge31cbiAgICAgICAgICAgIGJiW3RlbXBdID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSAnb24nIHx8IGtleSA9PT0gJ25hdGl2ZU9uJyB8fCBrZXkgPT09ICdob29rJykge1xuICAgICAgICAgIC8vIG1lcmdlIGZ1bmN0aW9uc1xuICAgICAgICAgIGZvciAobmVzdGVkS2V5IGluIGJiKSB7XG4gICAgICAgICAgICBhYVtuZXN0ZWRLZXldID0gbWVyZ2VGbihhYVtuZXN0ZWRLZXldLCBiYltuZXN0ZWRLZXldKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFhKSkge1xuICAgICAgICAgIGFba2V5XSA9IGFhLmNvbmNhdChiYilcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGJiKSkge1xuICAgICAgICAgIGFba2V5XSA9IFthYV0uY29uY2F0KGJiKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAobmVzdGVkS2V5IGluIGJiKSB7XG4gICAgICAgICAgICBhYVtuZXN0ZWRLZXldID0gYmJbbmVzdGVkS2V5XVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYVtrZXldID0gYltrZXldXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhXG4gIH0sIHt9KVxufVxuXG5mdW5jdGlvbiBtZXJnZUZuIChhLCBiKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgYSAmJiBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICBiICYmIGIuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-helper-vue-jsx-merge-props/index.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/core-js/object/keys.js":
/*!***********************************************************!*\
  !*** ./node_modules/babel-runtime/core-js/object/keys.js ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/fn/object/keys.js\"), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qcz8xOTA3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/core-js/object/keys.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/fn/object/keys.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/fn/object/keys.js ***!
  \***********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es6.object.keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.keys.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\").Object.keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9rZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcz9kNDZiIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Qua2V5cztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/keys.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/MTYwOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzPzc3ZTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js ***!
  \********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcz8zOWFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzPzRkODgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js ***!
  \**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanM/NTUyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjknIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzPzljMGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js ***!
  \*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/YzkwMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcz8wYmFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\nvar document = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MDVmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/OTc0MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js":
/*!************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzUxMmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js ***!
  \***********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcz80YjhiIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js":
/*!************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VmMDgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzljMGUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js ***!
  \**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanM/MDUxYiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js ***!
  \********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\")(function () {\n  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcz9mYWY1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js ***!
  \*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/OWZiYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzdhNDEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js ***!
  \*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/ZTQ0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG4iXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzFhMTQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcz8wM2Q2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcz85ODc2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-sap.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-sap.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\");\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/NzMzNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-sap.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/MTBkYiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var shared = __webpack_require__(/*! ./_shared */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NWE5NCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js":
/*!************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var core = __webpack_require__(/*! ./_core */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(/*! ./_library */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLmpzP2IzNjciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js ***!
  \***********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcz85ZDExIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/ZmM1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js ***!
  \****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NmNhMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzP2QxNmEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js ***!
  \***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzPzA5ODMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js ***!
  \******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzPzMzOTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzPzhiMWEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\n");

/***/ }),

/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.keys.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.keys.js ***!
  \********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\");\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-sap.js\")('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcz9lNzBlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.keys.js\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=script&lang=js&":
/*!**********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=script&lang=js& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.number.constructor */ \"./node_modules/core-js/modules/es6.number.constructor.js\");\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'BackToTop',\n  props: {\n    text: {\n      type: String,\n      default: 'Voltar ao topo'\n    },\n    visibleoffset: {\n      type: [String, Number],\n      default: 600\n    },\n    visibleoffsetbottom: {\n      type: [String, Number],\n      default: 0\n    },\n    right: {\n      type: String,\n      default: '30px'\n    },\n    bottom: {\n      type: String,\n      default: '40px'\n    },\n    scrollFn: {\n      type: Function,\n      default: function _default(eventObject) {}\n    }\n  },\n  data: function data() {\n    return {\n      visible: false\n    };\n  },\n  mounted: function mounted() {\n    window.smoothscroll = function () {\n      var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;\n\n      if (currentScroll > 0) {\n        window.requestAnimationFrame(window.smoothscroll);\n        window.scrollTo(0, Math.floor(currentScroll - currentScroll / 5));\n      }\n    };\n\n    window.addEventListener('scroll', this.catchScroll);\n  },\n  destroyed: function destroyed() {\n    window.removeEventListener('scroll', this.catchScroll);\n  },\n  methods: {\n    /**\n     * Catch window scroll event \n     * @return {void}\n     */\n    catchScroll: function catchScroll() {\n      var pastTopOffset = window.pageYOffset > parseInt(this.visibleoffset);\n      var pastBottomOffset = window.innerHeight + window.pageYOffset >= document.body.offsetHeight - parseInt(this.visibleoffsetbottom);\n      this.visible = parseInt(this.visibleoffsetbottom) > 0 ? pastTopOffset && !pastBottomOffset : pastTopOffset;\n      this.scrollFn(this);\n    },\n\n    /**\n     * The function who make the magics\n     * @return {void}\n     */\n    backToTop: function backToTop() {\n      window.smoothscroll();\n      this.$emit('scrolled');\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1iYWNrdG90b3Avc3JjL0JhY2tUb1RvcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL0JhY2tUb1RvcC52dWU/NTRjYSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDx0cmFuc2l0aW9uIG5hbWU9XCJiYWNrLXRvLXRvcC1mYWRlXCI+XG4gICAgPGRpdiBcbiAgICAgIGNsYXNzPVwidnVlLWJhY2stdG8tdG9wXCIgXG4gICAgICA6c3R5bGU9XCJgYm90dG9tOiR7dGhpcy5ib3R0b219O3JpZ2h0OiR7dGhpcy5yaWdodH07YFwiIFxuICAgICAgdi1zaG93PVwidmlzaWJsZVwiIFxuICAgICAgQGNsaWNrPVwiYmFja1RvVG9wXCI+XG4gICAgICA8c2xvdD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHRcIj5cbiAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgIHt7IHRleHQgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zbG90PlxuICAgIDwvZGl2PlxuICA8L3RyYW5zaXRpb24+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdCYWNrVG9Ub3AnLFxuICBwcm9wczoge1xuICAgIHRleHQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdWb2x0YXIgYW8gdG9wbycsXG4gICAgfSxcbiAgICB2aXNpYmxlb2Zmc2V0OiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgZGVmYXVsdDogNjAwLFxuICAgIH0sXG4gICAgdmlzaWJsZW9mZnNldGJvdHRvbToge1xuICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgfSxcbiAgICByaWdodDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzMwcHgnLFxuICAgIH0sXG4gICAgYm90dG9tOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnNDBweCcsXG4gICAgfSxcbiAgICBzY3JvbGxGbjoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoZXZlbnRPYmplY3QpIHt9LFxuICAgIH1cbiAgfSxcbiAgZGF0YSAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZpc2libGU6IGZhbHNlXG4gICAgfVxuICB9LFxuICBtb3VudGVkICgpIHtcbiAgICB3aW5kb3cuc21vb3Roc2Nyb2xsID0gKCkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRTY3JvbGwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wXG4gICAgICBpZiAoY3VycmVudFNjcm9sbCA+IDApIHtcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh3aW5kb3cuc21vb3Roc2Nyb2xsKVxuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgTWF0aC5mbG9vcihjdXJyZW50U2Nyb2xsIC0gKGN1cnJlbnRTY3JvbGwgLyA1KSkpXG4gICAgICB9XG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmNhdGNoU2Nyb2xsKVxuICB9LFxuICBkZXN0cm95ZWQgKCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmNhdGNoU2Nyb2xsKVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgLyoqXG4gICAgICogQ2F0Y2ggd2luZG93IHNjcm9sbCBldmVudCBcbiAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAqL1xuICAgIGNhdGNoU2Nyb2xsICgpIHtcbiAgICAgIGNvbnN0IHBhc3RUb3BPZmZzZXQgPSB3aW5kb3cucGFnZVlPZmZzZXQgPiBwYXJzZUludCh0aGlzLnZpc2libGVvZmZzZXQpXG4gICAgICBjb25zdCBwYXN0Qm90dG9tT2Zmc2V0ID0gd2luZG93LmlubmVySGVpZ2h0ICsgd2luZG93LnBhZ2VZT2Zmc2V0ID49IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0IC0gcGFyc2VJbnQodGhpcy52aXNpYmxlb2Zmc2V0Ym90dG9tKVxuICAgICAgdGhpcy52aXNpYmxlID0gcGFyc2VJbnQodGhpcy52aXNpYmxlb2Zmc2V0Ym90dG9tKSA+IDAgPyBwYXN0VG9wT2Zmc2V0ICYmICFwYXN0Qm90dG9tT2Zmc2V0IDogcGFzdFRvcE9mZnNldFxuICAgICAgdGhpcy5zY3JvbGxGbih0aGlzKVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogVGhlIGZ1bmN0aW9uIHdobyBtYWtlIHRoZSBtYWdpY3NcbiAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAqL1xuICAgIGJhY2tUb1RvcCAoKSB7XG4gICAgICB3aW5kb3cuc21vb3Roc2Nyb2xsKClcbiAgICAgIHRoaXMuJGVtaXQoJ3Njcm9sbGVkJylcbiAgICB9XG4gIH0sXG59XG48L3NjcmlwdD5cbjxzdHlsZSBzcmM9XCIuL3N0eWxlcy5jc3NcIj48L3N0eWxlPlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQXJCQTtBQTBCQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQTtBQTlDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/App.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/App.vue?vue&type=script&lang=js& ***!
  \*************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_regexp_match__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.regexp.match */ \"./node_modules/core-js/modules/es6.regexp.match.js\");\n/* harmony import */ var core_js_modules_es6_regexp_match__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_match__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _themeConfig_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../themeConfig.js */ \"./themeConfig.js\");\n/* harmony import */ var _modules_common_services_EventBus__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/common/services/EventBus */ \"./src/modules/common/services/EventBus.js\");\n/* harmony import */ var _modules_common_services_NotificationService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      interval: null\n    };\n  },\n  watch: {\n    '$store.state.theme': function $storeStateTheme(val) {\n      this.toggleClassInBody(val);\n    }\n  },\n  methods: {\n    toggleClassInBody: function toggleClassInBody(className) {\n      if (className === 'dark') {\n        if (document.body.className.match('theme-semi-dark')) document.body.classList.remove('theme-semi-dark');\n        document.body.classList.add('theme-dark');\n      } else if (className === 'semi-dark') {\n        if (document.body.className.match('theme-dark')) document.body.classList.remove('theme-dark');\n        document.body.classList.add('theme-semi-dark');\n      } else {\n        if (document.body.className.match('theme-dark')) document.body.classList.remove('theme-dark');\n        if (document.body.className.match('theme-semi-dark')) document.body.classList.remove('theme-semi-dark');\n      }\n    },\n    handleWindowResize: function handleWindowResize(event) {\n      this.$store['dispatch']('updateWindowWidth', event.currentTarget.innerWidth);\n    },\n    getCounters: function getCounters() {\n      this.$store['dispatch']('getCounters');\n      this.$store['dispatch']('getUnreadMessages');\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    this.toggleClassInBody(_themeConfig_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].theme);\n    this.$nextTick(function () {\n      window.addEventListener('resize', _this.handleWindowResize);\n    });\n    this.$store['dispatch']('updateWindowWidth', window.innerWidth);\n    this.getCounters();\n    this.interval = setInterval(this.getCounters, 30000);\n    _modules_common_services_EventBus__WEBPACK_IMPORTED_MODULE_2__[\"default\"].$on('should-complete-profile-info', function () {\n      _modules_common_services_NotificationService__WEBPACK_IMPORTED_MODULE_3__[\"default\"].warning('OOPS!', 'Please complete your profile information in order to continue');\n    });\n    _modules_common_services_EventBus__WEBPACK_IMPORTED_MODULE_2__[\"default\"].$on('should-wait-for-account-activation', function () {\n      _modules_common_services_NotificationService__WEBPACK_IMPORTED_MODULE_3__[\"default\"].warning('OOPS!', 'Just a few more moments and your account will be ready.');\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    clearInterval(this.interval);\n    window.removeEventListener('resize', this.handleWindowResize);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL0FwcC52dWU/MjM0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cImFwcFwiPlxuICAgICAgICA8cm91dGVyLXZpZXcvPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQgdGhlbWVDb25maWcgZnJvbSAnLi4vdGhlbWVDb25maWcuanMnO1xuICAgIGltcG9ydCBFdmVudEJ1c2ggZnJvbSAnLi9tb2R1bGVzL2NvbW1vbi9zZXJ2aWNlcy9FdmVudEJ1cyc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvblNlcnZpY2UgZnJvbSAnLi9tb2R1bGVzL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlJztcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgZGF0YSAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGludGVydmFsOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoOiB7XG4gICAgICAgICAgICAnJHN0b3JlLnN0YXRlLnRoZW1lJyAodmFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVDbGFzc0luQm9keSh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICB0b2dnbGVDbGFzc0luQm9keSAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNsYXNzTmFtZSA9PT0gJ2RhcmsnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZS5tYXRjaCgndGhlbWUtc2VtaS1kYXJrJykpIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgndGhlbWUtc2VtaS1kYXJrJyk7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgndGhlbWUtZGFyaycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xhc3NOYW1lID09PSAnc2VtaS1kYXJrJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUubWF0Y2goJ3RoZW1lLWRhcmsnKSkgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCd0aGVtZS1kYXJrJyk7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgndGhlbWUtc2VtaS1kYXJrJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lLm1hdGNoKCd0aGVtZS1kYXJrJykpIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgndGhlbWUtZGFyaycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUubWF0Y2goJ3RoZW1lLXNlbWktZGFyaycpKSBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ3RoZW1lLXNlbWktZGFyaycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGVXaW5kb3dSZXNpemUgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmVbJ2Rpc3BhdGNoJ10oJ3VwZGF0ZVdpbmRvd1dpZHRoJywgZXZlbnQuY3VycmVudFRhcmdldC5pbm5lcldpZHRoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDb3VudGVycyAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmVbJ2Rpc3BhdGNoJ10oJ2dldENvdW50ZXJzJyk7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmVbJ2Rpc3BhdGNoJ10oJ2dldFVucmVhZE1lc3NhZ2VzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQgKCkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVDbGFzc0luQm9keSh0aGVtZUNvbmZpZy50aGVtZSk7XG4gICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy4kc3RvcmVbJ2Rpc3BhdGNoJ10oJ3VwZGF0ZVdpbmRvd1dpZHRoJywgd2luZG93LmlubmVyV2lkdGgpO1xuICAgICAgICAgICAgdGhpcy5nZXRDb3VudGVycygpO1xuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKHRoaXMuZ2V0Q291bnRlcnMsIDMwMDAwKTtcbiAgICAgICAgICAgIEV2ZW50QnVzaC4kb24oJ3Nob3VsZC1jb21wbGV0ZS1wcm9maWxlLWluZm8nLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS53YXJuaW5nKCdPT1BTIScsICdQbGVhc2UgY29tcGxldGUgeW91ciBwcm9maWxlIGluZm9ybWF0aW9uIGluIG9yZGVyIHRvIGNvbnRpbnVlJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIEV2ZW50QnVzaC4kb24oJ3Nob3VsZC13YWl0LWZvci1hY2NvdW50LWFjdGl2YXRpb24nLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS53YXJuaW5nKCdPT1BTIScsICdKdXN0IGEgZmV3IG1vcmUgbW9tZW50cyBhbmQgeW91ciBhY2NvdW50IHdpbGwgYmUgcmVhZHkuJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgYmVmb3JlRGVzdHJveSAoKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplKTtcbiAgICAgICAgfSxcbiAgICB9XG5cbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuQkE7QUFxQkE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbERBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/App.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/Edit.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/categories/Edit.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/Form */ \"./src/modules/categories/components/Form.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    reason: 'categories/selectedCategory'\n  })),\n  components: {\n    Category: _components_Form__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  data: function data() {\n    return {\n      updating: false\n    };\n  },\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapMutations\"])({\n    setSelectedCategory: 'categories/SELECTED_CATEGORY'\n  }), {\n    save: function save(category) {\n      var vm = this;\n      vm.updating = true;\n\n      var newCategory = _objectSpread({}, category);\n\n      vm.setSelectedCategory(newCategory);\n      this.$store.dispatch('categories/updateCategory', category).then(function () {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'Category updated successfully');\n        history.back();\n      }, function (error) {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n      });\n    }\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9FZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRWRpdC52dWU/NWU2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWNvbCBzbTp3LWZ1bGwgbWQ6dy1mdWxsIGxnOnctMS8xIGQtdGhlbWUtZGFyay1iZ1wiPlxuICAgICAgICA8Y2F0ZWdvcnkgOmlzTmV3PVwiZmFsc2VcIiA6bG9hZGluZz1cInVwZGF0aW5nXCIgOnJlYXNvbj1cInsuLi5yZWFzb259XCIgdi1vbjpzYXZlPVwic2F2ZVwiLz5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzLCBtYXBNdXRhdGlvbnN9IGZyb20gJ3Z1ZXgnO1xuICAgIGltcG9ydCBDYXRlZ29yeSBmcm9tICcuL2NvbXBvbmVudHMvRm9ybSc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvbkNhdGVnb3J5IGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZVwiO1xuICAgIGltcG9ydCB7ZXh0cmFjdEVycm9yTWVzc2FnZX0gZnJvbSBcIi4uL2NvbW1vbi9zZXJ2aWNlcy9VdGlsaXR5U2VydmljZVwiO1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgcmVhc29uOiAnY2F0ZWdvcmllcy9zZWxlY3RlZENhdGVnb3J5J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgQ2F0ZWdvcnlcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YSAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHVwZGF0aW5nOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgLi4ubWFwTXV0YXRpb25zKHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENhdGVnb3J5OiAnY2F0ZWdvcmllcy9TRUxFQ1RFRF9DQVRFR09SWSdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2F2ZSAoY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NhdGVnb3J5ID0gey4uLmNhdGVnb3J5fTtcbiAgICAgICAgICAgICAgICB2bS5zZXRTZWxlY3RlZENhdGVnb3J5KG5ld0NhdGVnb3J5KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2F0ZWdvcmllcy91cGRhdGVDYXRlZ29yeScsIGNhdGVnb3J5KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uQ2F0ZWdvcnkuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdDYXRlZ29yeSB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcbiAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uQ2F0ZWdvcnkuZXJyb3IoJ09PUFMhJywgZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBRUE7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBakJBO0FBZEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/List.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/categories/List.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! regenerator-runtime/runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      filters: {\n        perPage: 10,\n        page: 1,\n        search: null\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_10__[\"mapGetters\"])({\n    categories: 'categories/categories'\n  })),\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_10__[\"mapMutations\"])({\n    setSelectedCategory: 'categories/SELECTED_CATEGORY'\n  }), {\n    internalSearch: function internalSearch() {\n      this.$store.dispatch('categories/getCategories', this.filters);\n    },\n    handleSearch: Object(lodash__WEBPACK_IMPORTED_MODULE_11__[\"debounce\"])(function (search, vm) {\n      vm.filters.search = search;\n      vm.filters.page = 1;\n      vm.internalSearch();\n    }, 500),\n    handleChangePage: function handleChangePage(page) {\n      this.filters.page = page;\n      this.internalSearch();\n    },\n    editCategory: function editCategory(category) {\n      this.setSelectedCategory(category);\n      this.$router.push({\n        name: 'EditCategory',\n        params: {\n          id: category.id\n        }\n      });\n    },\n    disableCategory: function disableCategory(category) {\n      var _this = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_12__[\"default\"].confirmCancel('Operation confirmation', \"Are you sure you want to make \".concat(category.code, \" category unavailable?\"),\n      /*#__PURE__*/\n      Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return _this.$store.dispatch('categories/disable', category);\n\n              case 2:\n                _this.internalSearch();\n\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      })));\n    },\n    enableCategory: function enableCategory(category) {\n      var _this2 = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_12__[\"default\"].confirmEnable('Operation confirmation', \"Are you sure you want to make \".concat(category.code, \" category available?\"),\n      /*#__PURE__*/\n      Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee2() {\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return _this2.$store.dispatch('categories/enable', category);\n\n              case 2:\n                _this2.internalSearch();\n\n              case 3:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2);\n      })));\n    },\n    deleteCategory: function deleteCategory(category) {\n      var _this3 = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_12__[\"default\"].confirmCancel('Operation confirmation', \"Are you sure you want to delete \".concat(category.code, \"?\"),\n      /*#__PURE__*/\n      Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee3() {\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return _this3.$store.dispatch('categories/deleteCategory', category);\n\n              case 2:\n                _this3.internalSearch();\n\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3);\n      })));\n    }\n  }),\n  mounted: function mounted() {\n    this.internalSearch();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vTGlzdC52dWU/OTE4NSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cImNhbC1jYXRlZ29yaWVzXCI+XG4gICAgICAgIDx2eC1jYXJkPlxuICAgICAgICAgICAgPHZzLXRhYmxlIDpzc3Q9XCJ0cnVlXCIgOmRhdGE9XCJjYXRlZ29yaWVzLmRhdGFcIiBzZWFyY2ggQHNlYXJjaD1cIihlKSA9PiBoYW5kbGVTZWFyY2goZSwgdGhpcylcIj5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90PVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz5DYXRlZ29yaWVzPC9oMz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgdG89XCIvY2F0ZWdvcmllcy9jcmVhdGVcIiBzaXplPVwic21hbGxcIiBpY29uPVwiYWRkX2NpcmNsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90PVwidGhlYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRoPkNvZGU8L3ZzLXRoPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdGg+RGVzY3JpcHRpb248L3ZzLXRoPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdGggY2xhc3M9XCJmbG9hdC1yaWdodFwiPkFjdGlvbnM8L3ZzLXRoPlxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgc2xvdC1zY29wZT1cIntkYXRhfVwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdHIgOmtleT1cInRyLmlkXCIgdi1mb3I9XCJ0ciBpbiBkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQ+e3t0ci5jb2RlfX08L3ZzLXRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRkPnt7dHIuZGVzY3JpcHRpb259fTwvdnMtdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZCBjbGFzcz1cImZsb2F0LXJpZ2h0IGNlbnRlcnhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dngtdG9vbHRpcCB0ZXh0PVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNsYXNzPVwiaW5saW5lLWJsb2NrIG14LTFcIiBAY2xpY2s9XCJlZGl0Q2F0ZWdvcnkodHIpXCIgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWRpdFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Z4LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZ4LXRvb2x0aXAgdGV4dD1cIkVuYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiaW5saW5lLWJsb2NrIG14LTFcIiBAY2xpY2s9XCJlbmFibGVDYXRlZ29yeSh0cilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiIHYtaWY9XCIhdHIuaXNfZW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImNoZWNrXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdngtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dngtdG9vbHRpcCB0ZXh0PVwiRGlzYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbXgtMVwiIEBjbGljaz1cImRpc2FibGVDYXRlZ29yeSh0cilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiIHYtaWY9XCJ0ci5pc19lbmFibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdngtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dngtdG9vbHRpcCB0ZXh0PVwiRGVsZXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImlubGluZS1ibG9jayBteC0xXCIgQGNsaWNrPVwiZGVsZXRlQ2F0ZWdvcnkodHIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIiB2LWlmPVwidHIuY2FuX2RlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZV9mb3JldmVyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdngtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdnMtdHI+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdnMtdGFibGU+XG5cbiAgICAgICAgICAgIDx2cy1wYWdpbmF0aW9uIHYtaWY9XCJjYXRlZ29yaWVzLmRhdGEgJiYgY2F0ZWdvcmllcy5kYXRhLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm10LTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRvdGFsPVwiY2F0ZWdvcmllcy5tZXRhLnBhZ2luYXRpb25bJ3RvdGFsX3BhZ2VzJ11cIiB2LW1vZGVsPVwiZmlsdGVycy5wYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVDaGFuZ2VQYWdlXCIvPlxuICAgICAgICA8L3Z4LWNhcmQ+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVycywgbWFwTXV0YXRpb25zfSBmcm9tICd2dWV4JztcbiAgICBpbXBvcnQge2RlYm91bmNlfSBmcm9tICdsb2Rhc2gnO1xuICAgIGltcG9ydCBOb3RpZmljYXRpb25DYXRlZ29yeSBmcm9tIFwiLi4vY29tbW9uL3NlcnZpY2VzL05vdGlmaWNhdGlvblNlcnZpY2VcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgZGF0YSAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgcGVyUGFnZTogMTAsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaDogbnVsbCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllczogJ2NhdGVnb3JpZXMvY2F0ZWdvcmllcydcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIC4uLm1hcE11dGF0aW9ucyh7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDYXRlZ29yeTogJ2NhdGVnb3JpZXMvU0VMRUNURURfQ0FURUdPUlknLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnRlcm5hbFNlYXJjaCAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NhdGVnb3JpZXMvZ2V0Q2F0ZWdvcmllcycsIHRoaXMuZmlsdGVycyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFuZGxlU2VhcmNoOiBkZWJvdW5jZSgoc2VhcmNoLCB2bSkgPT4ge1xuICAgICAgICAgICAgICAgIHZtLmZpbHRlcnMuc2VhcmNoID0gc2VhcmNoO1xuICAgICAgICAgICAgICAgIHZtLmZpbHRlcnMucGFnZSA9IDE7XG4gICAgICAgICAgICAgICAgdm0uaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgIH0sIDUwMCksXG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2VQYWdlIChwYWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzLnBhZ2UgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlZGl0Q2F0ZWdvcnkgKGNhdGVnb3J5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENhdGVnb3J5KGNhdGVnb3J5KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7bmFtZTogJ0VkaXRDYXRlZ29yeScsIHBhcmFtczoge2lkOiBjYXRlZ29yeS5pZH19KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNhYmxlQ2F0ZWdvcnkgKGNhdGVnb3J5KSB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uQ2F0ZWdvcnkuY29uZmlybUNhbmNlbCgnT3BlcmF0aW9uIGNvbmZpcm1hdGlvbicsIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbWFrZSAke2NhdGVnb3J5LmNvZGV9IGNhdGVnb3J5IHVuYXZhaWxhYmxlP2AsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NhdGVnb3JpZXMvZGlzYWJsZScsIGNhdGVnb3J5KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuYWJsZUNhdGVnb3J5IChjYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNhdGVnb3J5LmNvbmZpcm1FbmFibGUoJ09wZXJhdGlvbiBjb25maXJtYXRpb24nLCBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIG1ha2UgJHtjYXRlZ29yeS5jb2RlfSBjYXRlZ29yeSBhdmFpbGFibGU/YCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2F0ZWdvcmllcy9lbmFibGUnLCBjYXRlZ29yeSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWxldGVDYXRlZ29yeSAoY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25DYXRlZ29yeS5jb25maXJtQ2FuY2VsKCdPcGVyYXRpb24gY29uZmlybWF0aW9uJywgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgJHtjYXRlZ29yeS5jb2RlfT9gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjYXRlZ29yaWVzL2RlbGV0ZUNhdGVnb3J5JywgY2F0ZWdvcnkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cblxuPC9zdHlsZT5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTREQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBREE7QUFPQTtBQUNBO0FBRUE7QUFEQTtBQUlBO0FBRUE7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQXJDQTtBQXVDQTtBQUNBO0FBQ0E7QUF4REEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/List.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/New.vue?vue&type=script&lang=js&":
/*!********************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/categories/New.vue?vue&type=script&lang=js& ***!
  \********************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/Form */ \"./src/modules/categories/components/Form.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    categories: 'categories/categories',\n    isLoading: 'categories/isLoading'\n  })),\n  components: {\n    Category: _components_Form__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  data: function data() {\n    return {\n      category: {},\n      saving: false\n    };\n  },\n  methods: {\n    save: function save(category) {\n      var vm = this;\n      vm.saving = true;\n      vm.$store.dispatch('categories/createCategory', category).then(function () {\n        vm.saving = false;\n        history.back();\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'Category created successfully');\n      }, function (error) {\n        vm.saving = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9OZXcudnVlPzczOWMiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgc206dy1mdWxsIG1kOnctZnVsbCBsZzp3LTEvMSBkLXRoZW1lLWRhcmstYmdcIj5cbiAgICAgICAgPGNhdGVnb3J5IDppc05ldz1cInRydWVcIiA6bG9hZGluZz1cInNhdmluZ1wiIDpyZWFzb249XCJjYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtb246c2F2ZT1cInNhdmVcIi8+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVyc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IENhdGVnb3J5IGZyb20gJy4vY29tcG9uZW50cy9Gb3JtJztcbiAgICBpbXBvcnQgTm90aWZpY2F0aW9uQ2F0ZWdvcnkgZnJvbSBcIi4uL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlXCI7XG4gICAgaW1wb3J0IHtleHRyYWN0RXJyb3JNZXNzYWdlfSBmcm9tIFwiLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzOiAnY2F0ZWdvcmllcy9jYXRlZ29yaWVzJyxcbiAgICAgICAgICAgICAgICBpc0xvYWRpbmc6ICdjYXRlZ29yaWVzL2lzTG9hZGluZydcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgIENhdGVnb3J5XG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeToge30sXG4gICAgICAgICAgICAgICAgc2F2aW5nOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgc2F2ZSAoY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdm0uc2F2aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2bS4kc3RvcmUuZGlzcGF0Y2goJ2NhdGVnb3JpZXMvY3JlYXRlQ2F0ZWdvcnknLCBjYXRlZ29yeSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uQ2F0ZWdvcnkuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdDYXRlZ29yeSBjcmVhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uQ2F0ZWdvcnkuZXJyb3IoJ09PUFMhJywgZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQWhCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/components/Form.vue?vue&type=script&lang=js&":
/*!********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/categories/components/Form.vue?vue&type=script&lang=js& ***!
  \********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    reason: {\n      required: true\n    },\n    isNew: {\n      required: true\n    },\n    loading: {\n      required: true\n    }\n  },\n  data: function data() {\n    return {};\n  },\n  methods: {\n    validateForm: function validateForm() {\n      return !this.errors.any();\n    },\n    back: function back() {\n      history.back();\n    },\n    save: function save() {\n      this.$emit('save', this.reason);\n    }\n  },\n  mounted: function mounted() {\n    var vm = this;\n\n    if (!vm.isNew && this.$route.params.id) {\n      vm.loadingReason = true;\n      vm.$store.dispatch('categories/getReason', vm.$route.params.id).then(function () {\n        vm.loadingReason = false;\n      }, function () {\n        vm.loadingReason = false;\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9jb21wb25lbnRzL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9Gb3JtLnZ1ZT9jMTNmIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8dngtY2FyZD5cbiAgICAgICAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgdi1vbjpzdWJtaXQucHJldmVudD1cInNhdmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLThcIj5cbiAgICAgICAgICAgICAgICA8dnMtcm93IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtaW5wdXQgdi12YWxpZGF0ZT1cIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi1oYXNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cInJlYXNvbi5jb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBuby1pY29uLWJvcmRlclwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgnY29kZScpIH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtaW5wdXQgdi12YWxpZGF0ZT1cIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJpY29uIGljb24taGFzaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uLXBhY2s9XCJmZWF0aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIkRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwicmVhc29uLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBuby1pY29uLWJvcmRlclwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgnZGVzY3JpcHRpb24nKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWJldHdlZW4gbXktNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJtci0yXCIgY29sb3I9XCJwcmltYXJ5XCIgOmRpc2FibGVkPVwiIXZhbGlkYXRlRm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b249XCJzdWJtaXRcIj5TYXZlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBjb2xvcj1cIndhcm5pbmdcIiBAY2xpY2s9XCJiYWNrXCI+QmFjazwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdnMtY29sPlxuICAgICAgICAgICAgICAgIDwvdnMtcm93PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L3Z4LWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgcmVhc29uOiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgICAgICAgICAgaXNOZXc6IHtyZXF1aXJlZDogdHJ1ZX0sXG4gICAgICAgICAgICBsb2FkaW5nOiB7cmVxdWlyZWQ6IHRydWV9XG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIHZhbGlkYXRlRm9ybSAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmVycm9ycy5hbnkoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiYWNrICgpIHtcbiAgICAgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYXZlICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdzYXZlJywgdGhpcy5yZWFzb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgIGlmICghdm0uaXNOZXcgJiYgdGhpcy4kcm91dGUucGFyYW1zLmlkKSB7XG4gICAgICAgICAgICAgICAgdm0ubG9hZGluZ1JlYXNvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdm0uJHN0b3JlLmRpc3BhdGNoKCdjYXRlZ29yaWVzL2dldFJlYXNvbicsIHZtLiRyb3V0ZS5wYXJhbXMuaWQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5sb2FkaW5nUmVhc29uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5sb2FkaW5nUmVhc29uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG48L3NjcmlwdD5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTlCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/components/Form.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/Chat.vue?vue&type=script&lang=js& ***!
  \***************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_regexp_search__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.regexp.search */ \"./node_modules/core-js/modules/es6.regexp.search.js\");\n/* harmony import */ var core_js_modules_es6_regexp_search__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_search__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es6.array.index-of */ \"./node_modules/core-js/modules/es6.array.index-of.js\");\n/* harmony import */ var core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es6_array_sort__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es6.array.sort */ \"./node_modules/core-js/modules/es6.array.sort.js\");\n/* harmony import */ var core_js_modules_es6_array_sort__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_sort__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vue-perfect-scrollbar */ \"./node_modules/vue-perfect-scrollbar/dist/index.js\");\n/* harmony import */ var vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _components_ChatContact_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/ChatContact.vue */ \"./src/modules/chat/components/ChatContact.vue\");\n/* harmony import */ var _components_UserProfile_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/UserProfile.vue */ \"./src/modules/chat/components/UserProfile.vue\");\n/* harmony import */ var _components_ChatNavbar_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/ChatNavbar.vue */ \"./src/modules/chat/components/ChatNavbar.vue\");\n/* harmony import */ var _components_ChatLog_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/ChatLog.vue */ \"./src/modules/chat/components/ChatLog.vue\");\n/* harmony import */ var _services_Chat__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./services/Chat */ \"./src/modules/chat/services/Chat.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_18__);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'vx-sidebar',\n  data: function data() {\n    return {\n      listInterval: null,\n      messagesInterval: null,\n      chats: [],\n      messages: [],\n      search: '',\n      activeChatUser: null,\n      activeChatId: null,\n      selectedChat: {},\n      typedMessage: '',\n      settings: {\n        maxScrollbarLength: 60,\n        wheelSpeed: 0.70\n      },\n      clickNotClose: true,\n      isChatSidebarActive: true,\n      windowWidth: window.innerWidth\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_11__[\"mapGetters\"])({\n    userData: 'userData'\n  }), {\n    sortedChats: function sortedChats() {\n      var _this = this;\n\n      // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n      return this.chats.filter(function (chat) {\n        return chat.title.indexOf(_this.search) > -1;\n      }).sort(function (a, b) {\n        return moment__WEBPACK_IMPORTED_MODULE_18___default()(b.last_message_at) - moment__WEBPACK_IMPORTED_MODULE_18___default()(a.last_message_at);\n      });\n    },\n    searchQuery: {\n      get: function get() {\n        return this.search;\n      },\n      set: function set(val) {\n        this.search = val;\n      }\n    }\n  }),\n  methods: {\n    getMessages: function getMessages(id, isUpdating) {\n      var _this2 = this;\n\n      if (!isUpdating) {\n        this.messages = [];\n      }\n\n      _services_Chat__WEBPACK_IMPORTED_MODULE_17__[\"default\"].getMessages(id).then(function (messages) {\n        if (!isUpdating) {\n          _this2.messages = messages;\n        } else {\n          if (messages.length > _this2.messages.length) {\n            for (var i = _this2.messages.length; i < messages.length; i++) {\n              _this2.messages.push(messages[i]);\n            }\n          }\n        }\n      });\n    },\n    updateActiveChatUser: function updateActiveChatUser(contact) {\n      this.getMessages(contact.id);\n      this.activeChatId = contact.id;\n      this.selectedChat = contact;\n      contact.unread = 0;\n      this.toggleChatSidebar(false);\n    },\n    sendMessage: function sendMessage() {\n      _services_Chat__WEBPACK_IMPORTED_MODULE_17__[\"default\"].sendMessage(this.activeChatId, this.typedMessage);\n      var now = moment__WEBPACK_IMPORTED_MODULE_18___default()().toDate();\n      this.selectedChat.last_message_at = now;\n      this.messages.push({\n        message: this.typedMessage,\n        sender_id: this.userData.id,\n        time: now,\n        user_avatar: this.userData.avatar\n      });\n      this.typedMessage = '';\n    },\n    handleWindowResize: function handleWindowResize(event) {\n      this.windowWidth = event.currentTarget.innerWidth;\n      this.setSidebarWidth();\n    },\n    setSidebarWidth: function setSidebarWidth() {\n      if (this.windowWidth < 1200) {\n        this.isChatSidebarActive = this.clickNotClose = false;\n      } else {\n        this.isChatSidebarActive = this.clickNotClose = true;\n      }\n    },\n    toggleChatSidebar: function toggleChatSidebar() {\n      var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      if (!value && this.clickNotClose) return;\n      this.isChatSidebarActive = value;\n    },\n    getChatList: function getChatList() {\n      var _this3 = this;\n\n      _services_Chat__WEBPACK_IMPORTED_MODULE_17__[\"default\"].get().then(function (chats) {\n        _this3.chats = chats;\n      });\n    }\n  },\n  components: {\n    VuePerfectScrollbar: vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_12___default.a,\n    ChatContact: _components_ChatContact_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n    UserProfile: _components_UserProfile_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n    ChatNavbar: _components_ChatNavbar_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n    ChatLog: _components_ChatLog_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n  },\n  created: function created() {\n    var _this4 = this;\n\n    this.$nextTick(function () {\n      window.addEventListener('resize', _this4.handleWindowResize);\n    });\n    this.setSidebarWidth();\n    this.getChatList();\n    this.listInterval = setInterval(function () {\n      _this4.getChatList();\n    }, 10000);\n    this.messagesInterval = setInterval(function () {\n      if (_this4.activeChatId) {\n        _this4.getMessages(_this4.activeChatId, true);\n      }\n    }, 10000);\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.removeEventListener('resize', this.handleWindowResize);\n    clearInterval(this.listInterval);\n    clearInterval(this.messagesInterval);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2hhdC9DaGF0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vQ2hhdC52dWU/NjJmMyJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItc29saWQgZC10aGVtZS1ib3JkZXItZ3JleS1saWdodCByb3VuZGVkIHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiIGlkPVwiY2hhdC1hcHBcIj5cbiAgICAgICAgPHZzLXNpZGViYXIgOmNsaWNrLW5vdC1jbG9zZT1cImNsaWNrTm90Q2xvc2VcIiA6aGlkZGVuLWJhY2tncm91bmQ9XCJjbGlja05vdENsb3NlXCIgY2xhc3M9XCJpdGVtcy1uby1wYWRkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGF0LWxpc3Qtc2lkZWJhclwiIHBhcmVudD1cIiNjaGF0LWFwcFwiIHYtbW9kZWw9XCJpc0NoYXRTaWRlYmFyQWN0aXZlXCI+XG5cbiAgICAgICAgICAgIDwhLS0gVVNFUiBQUk9GSUxFIFNJREVCQVIgLS0+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0X19wcm9maWxlLXNlYXJjaCBmbGV4IHAtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBpbmxpbmUtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtYXZhdGFyIDpzcmM9XCJ1c2VyRGF0YS5hdmF0YXJcIiBjbGFzcz1cIm0tMCBib3JkZXItMiBib3JkZXItc29saWQgYmctd2hpdGUgYm9yZGVyLXdoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiNDBweFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMyB3LTMgYm9yZGVyLXdoaXRlIGJvcmRlciBiZy1zdWNjZXNzIGJvcmRlci1zb2xpZCByb3VuZGVkLWZ1bGwgYWJzb2x1dGUgcmlnaHQtMCBib3R0b20tMFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx2cy1pbnB1dCBjbGFzcz1cInctZnVsbCBteC01IGlucHV0LXJvdW5kZWQtZnVsbCBuby1pY29uLWJvcmRlclwiIGljb249XCJpY29uLXNlYXJjaFwiIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzdGFydCBhIG5ldyBjaGF0XCIgdi1tb2RlbD1cInNlYXJjaFF1ZXJ5XCIvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDx2cy1kaXZpZGVyIGNsYXNzPVwiZC10aGVtZS1ib3JkZXItZ3JleS1saWdodCBtLTBcIi8+XG5cbiAgICAgICAgICAgIDxWdWVQZXJmZWN0U2Nyb2xsYmFyIDpzZXR0aW5ncz1cInNldHRpbmdzXCIgY2xhc3M9XCJjaGF0LXNjcm9sbC1hcmVhIHB0LTRcIj5cblxuICAgICAgICAgICAgICAgIDwhLS0gQUNUSVZFIENIQVRTIExJU1QgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXRfX2NoYXRzLWxpc3QgbWItOFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgbWItNSBweC00XCI+UHJvamVjdHM8L2gzPlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjaGF0X19hY3RpdmUtY2hhdHMgYm9yZGVyZWQtaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA6a2V5PVwiaW5kZXhcIiBAY2xpY2s9XCJ1cGRhdGVBY3RpdmVDaGF0VXNlcihjb250YWN0KVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtZm9yPVwiKGNvbnRhY3QsIGluZGV4KSBpbiBzb3J0ZWRDaGF0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGF0LWNvbnRhY3QgOmNvbnRhY3Q9XCJjb250YWN0XCIgOmlzQWN0aXZlQ2hhdFVzZXI9XCJhY3RpdmVDaGF0SWQgPT09IGNvbnRhY3QuaWRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9WdWVQZXJmZWN0U2Nyb2xsYmFyPlxuICAgICAgICA8L3ZzLXNpZGViYXI+XG5cbiAgICAgICAgPCEtLSBSSUdIVCBDT0xVTU4gLS0+XG4gICAgICAgIDxkaXYgOmNsYXNzPVwieydzaWRlYmFyLXNwYWNlci0td2lkZSc6IGNsaWNrTm90Q2xvc2UsICdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcic6ICFhY3RpdmVDaGF0SWR9XCJcbiAgICAgICAgICAgICBjbGFzcz1cImNoYXRfX2JnIGFwcC1maXhlZC1oZWlnaHQgY2hhdC1jb250ZW50LWFyZWEgYm9yZGVyIGJvcmRlci1zb2xpZCBkLXRoZW1lLWJvcmRlci1ncmV5LWxpZ2h0IGJvcmRlci10LTAgYm9yZGVyLXItMCBib3JkZXItYi0wXCI+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImFjdGl2ZUNoYXRJZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0X19uYXZiYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNoYXQtbmF2YmFyIDpjaGF0PVwic2VsZWN0ZWRDaGF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppc1NpZGViYXJDb2xsYXBzZWQ9XCIhY2xpY2tOb3RDbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dXNlci1pZD1cImFjdGl2ZUNoYXRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAb3BlbkNvbnRhY3RzU2lkZWJhcj1cInRvZ2dsZUNoYXRTaWRlYmFyKHRydWUpXCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxWdWVQZXJmZWN0U2Nyb2xsYmFyIDpzZXR0aW5ncz1cInNldHRpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoYXQtY29udGVudC1zY3JvbGwtYXJlYSBib3JkZXIgYm9yZGVyLXNvbGlkIGQtdGhlbWUtYm9yZGVyLWdyZXktbGlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj1cImNoYXRMb2dQU1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhdF9fbG9nXCIgcmVmPVwiY2hhdExvZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNoYXQtbG9nIDpjaGF0PVwic2VsZWN0ZWRDaGF0XCIgOnVzZXItZGF0YT1cInVzZXJEYXRhXCIgOm1lc3NhZ2VzPVwibWVzc2FnZXNcIiB2LWlmPVwiYWN0aXZlQ2hhdElkXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1Z1ZVBlcmZlY3RTY3JvbGxiYXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXRfX2lucHV0IGZsZXggcC00IGJnLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1pbnB1dCBAa2V5dXAuZW50ZXI9XCJzZW5kTWVzc2FnZVwiIGNsYXNzPVwiZmxleC0xXCIgcGxhY2Vob2xkZXI9XCJUeXBlIFlvdXIgTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwidHlwZWRNZXNzYWdlXCIvPlxuICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIEBjbGljaz1cInNlbmRNZXNzYWdlXCIgY2xhc3M9XCJiZy1wcmltYXJ5LWdyYWRpZW50IG1sLTRcIiB0eXBlPVwiZmlsbGVkXCI+U2VuZDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCIgQGNsaWNrLnN0b3A9XCJ0b2dnbGVDaGF0U2lkZWJhcih0cnVlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmVhdGhlci1pY29uIGNsYXNzPVwibWItNCBiZy13aGl0ZSBwLTggc2hhZG93LW1kIHJvdW5kZWQtZnVsbCBwb2ludGVyXCIgaWNvbj1cIk1lc3NhZ2VTcXVhcmVJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmdDbGFzc2VzPVwidy0xNiBoLTE2XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVyc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IFZ1ZVBlcmZlY3RTY3JvbGxiYXIgZnJvbSAndnVlLXBlcmZlY3Qtc2Nyb2xsYmFyJ1xuICAgIGltcG9ydCBDaGF0Q29udGFjdCBmcm9tIFwiLi9jb21wb25lbnRzL0NoYXRDb250YWN0LnZ1ZVwiXG4gICAgaW1wb3J0IFVzZXJQcm9maWxlIGZyb20gXCIuL2NvbXBvbmVudHMvVXNlclByb2ZpbGUudnVlXCJcbiAgICBpbXBvcnQgQ2hhdE5hdmJhciBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdE5hdmJhci52dWUnXG4gICAgaW1wb3J0IENoYXRMb2cgZnJvbSAnLi9jb21wb25lbnRzL0NoYXRMb2cudnVlJ1xuICAgIGltcG9ydCBDaGF0IGZyb20gXCIuL3NlcnZpY2VzL0NoYXRcIjtcbiAgICBpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgbmFtZTogJ3Z4LXNpZGViYXInLFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGlzdEludGVydmFsOiBudWxsLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VzSW50ZXJ2YWw6IG51bGwsXG4gICAgICAgICAgICAgICAgY2hhdHM6IFtdLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VzOiBbXSxcbiAgICAgICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgICAgICAgIGFjdGl2ZUNoYXRVc2VyOiBudWxsLFxuICAgICAgICAgICAgICAgIGFjdGl2ZUNoYXRJZDogbnVsbCxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENoYXQ6IHt9LFxuICAgICAgICAgICAgICAgIHR5cGVkTWVzc2FnZTogJycsXG4gICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4U2Nyb2xsYmFyTGVuZ3RoOiA2MCxcbiAgICAgICAgICAgICAgICAgICAgd2hlZWxTcGVlZDogMC43MCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNsaWNrTm90Q2xvc2U6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNDaGF0U2lkZWJhckFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aW5kb3dXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICB1c2VyRGF0YTogJ3VzZXJEYXRhJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc29ydGVkQ2hhdHMgKCkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWUvbm8tc2lkZS1lZmZlY3RzLWluLWNvbXB1dGVkLXByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGF0cy5maWx0ZXIoKGNoYXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYXQudGl0bGUuaW5kZXhPZih0aGlzLnNlYXJjaCkgPiAtMTtcbiAgICAgICAgICAgICAgICB9KS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb21lbnQoYi5sYXN0X21lc3NhZ2VfYXQpIC0gbW9tZW50KGEubGFzdF9tZXNzYWdlX2F0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hRdWVyeToge1xuICAgICAgICAgICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlYXJjaDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldCAodmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoID0gdmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGdldE1lc3NhZ2VzIChpZCwgaXNVcGRhdGluZykge1xuICAgICAgICAgICAgICAgIGlmICghaXNVcGRhdGluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIENoYXQuZ2V0TWVzc2FnZXMoaWQpLnRoZW4oKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNVcGRhdGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG1lc3NhZ2VzO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IHRoaXMubWVzc2FnZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubWVzc2FnZXMubGVuZ3RoOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKG1lc3NhZ2VzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGRhdGVBY3RpdmVDaGF0VXNlciAoY29udGFjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWVzc2FnZXMoY29udGFjdC5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVDaGF0SWQgPSBjb250YWN0LmlkO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGF0ID0gY29udGFjdDtcbiAgICAgICAgICAgICAgICBjb250YWN0LnVucmVhZCA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVDaGF0U2lkZWJhcihmYWxzZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VuZE1lc3NhZ2UgKCkge1xuICAgICAgICAgICAgICAgIENoYXQuc2VuZE1lc3NhZ2UodGhpcy5hY3RpdmVDaGF0SWQsIHRoaXMudHlwZWRNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBtb21lbnQoKS50b0RhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhdC5sYXN0X21lc3NhZ2VfYXQgPSBub3c7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50eXBlZE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHNlbmRlcl9pZDogdGhpcy51c2VyRGF0YS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGltZTogbm93LFxuICAgICAgICAgICAgICAgICAgICB1c2VyX2F2YXRhcjogdGhpcy51c2VyRGF0YS5hdmF0YXIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy50eXBlZE1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGVXaW5kb3dSZXNpemUgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5kb3dXaWR0aCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNpZGViYXJXaWR0aCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFNpZGViYXJXaWR0aCAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2luZG93V2lkdGggPCAxMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDaGF0U2lkZWJhckFjdGl2ZSA9IHRoaXMuY2xpY2tOb3RDbG9zZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDaGF0U2lkZWJhckFjdGl2ZSA9IHRoaXMuY2xpY2tOb3RDbG9zZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRvZ2dsZUNoYXRTaWRlYmFyICh2YWx1ZSA9IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSAmJiB0aGlzLmNsaWNrTm90Q2xvc2UpIHJldHVybjtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ2hhdFNpZGViYXJBY3RpdmUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGF0TGlzdCAoKSB7XG4gICAgICAgICAgICAgICAgQ2hhdC5nZXQoKS50aGVuKChjaGF0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYXRzID0gY2hhdHM7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBWdWVQZXJmZWN0U2Nyb2xsYmFyLFxuICAgICAgICAgICAgQ2hhdENvbnRhY3QsXG4gICAgICAgICAgICBVc2VyUHJvZmlsZSxcbiAgICAgICAgICAgIENoYXROYXZiYXIsXG4gICAgICAgICAgICBDaGF0TG9nLFxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVkICgpIHtcbiAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNldFNpZGViYXJXaWR0aCgpO1xuICAgICAgICAgICAgdGhpcy5nZXRDaGF0TGlzdCgpO1xuICAgICAgICAgICAgdGhpcy5saXN0SW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDaGF0TGlzdCgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUNoYXRJZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1lc3NhZ2VzKHRoaXMuYWN0aXZlQ2hhdElkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZSk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMubGlzdEludGVydmFsKTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5tZXNzYWdlc0ludGVydmFsKTtcbiAgICAgICAgfSxcbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG4gICAgQGltcG9ydCBcIi4uLy4uL2Fzc2V0cy9zY3NzL3Z1ZXNheC9hcHBzL2NoYXQuc2Nzc1wiO1xuPC9zdHlsZT5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQWhCQTtBQWtCQTtBQUNBO0FBRUE7QUFEQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVpBO0FBcUJBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF2REE7QUF5REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTlIQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatContact.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/components/ChatContact.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    contact: {\n      type: Object,\n      required: true\n    },\n    isActiveChatUser: {\n      type: Boolean\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL0NoYXRDb250YWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vQ2hhdENvbnRhY3QudnVlP2U1N2IiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJjaGF0X19jb250YWN0IGZsZXggaXRlbXMtY2VudGVyIHB4LTIgcHktM1wiXG4gICAgICAgICA6Y2xhc3M9XCJ7J2JnLXByaW1hcnktZ3JhZGllbnQgdGV4dC13aGl0ZSBzaGFkb3ctbGcnOiBpc0FjdGl2ZUNoYXRVc2VyfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdF9fYXZhdGFyIG1yLTNcIj5cbiAgICAgICAgICAgIDx2cy1hdmF0YXIgY2xhc3M9XCJib3JkZXItMiBib3JkZXItc29saWQgYm9yZGVyLXdoaXRlIGJnLXdoaXRlXCIgOnNyYz1cImNvbnRhY3QuaW1hZ2VcIiBzaXplPVwiNDJweFwiLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0X19jb250YWluZXIgdy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0X19pbmZvIGZsZXggZmxleC1jb2wgdHJ1bmNhdGUgdy01LzZcIj5cbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJmb250LXNlbWlib2xkXCIgOmNsYXNzPVwieyd0ZXh0LXdoaXRlJzogaXNBY3RpdmVDaGF0VXNlcn1cIj57eyBjb250YWN0LnRpdGxlIH19PC9oNT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhdF9fY29udGFjdF9fbWV0YSBmbGV4IHNlbGYtc3RhcnQgZmxleC1jb2wgaXRlbXMtZW5kIHctMS82XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vLXdyYXBcIj57eyBjb250YWN0Lmxhc3RfbWVzc2FnZV9hdCB8IGZyb21Ob3d9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dnMtY2hpcCBjbGFzcz1cIm51bWJlclwiIGNvbG9yPVwicHJpbWFyeVwiIHYtaWY9XCJjb250YWN0LnVucmVhZFwiPnt7IGNvbnRhY3QudW5yZWFkIH19PC92cy1jaGlwPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjb250YWN0OiB7XG4gICAgICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzQWN0aXZlQ2hhdFVzZXI6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9XG48L3NjcmlwdD5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQURBO0FBTEE7QUFEQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatContact.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatLog.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/components/ChatLog.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    chat: {\n      type: Object,\n      required: true\n    },\n    userData: {\n      type: Object,\n      required: true\n    },\n    messages: {\n      type: Array,\n      required: true\n    }\n  },\n  computed: {\n    hasSentPreviousMsg: function hasSentPreviousMsg() {\n      return function (last_sender, current_sender) {\n        return last_sender === current_sender;\n      };\n    }\n  },\n  methods: {\n    isSameDay: function isSameDay(toDate, fromDate) {\n      return moment__WEBPACK_IMPORTED_MODULE_0___default()(toDate).isSame(moment__WEBPACK_IMPORTED_MODULE_0___default()(fromDate), 'day');\n    },\n    scrollToBottom: function scrollToBottom() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        _this.$parent.$el.scrollTop = _this.$parent.$el.scrollHeight;\n      });\n    }\n  },\n  updated: function updated() {\n    this.scrollToBottom();\n  },\n  mounted: function mounted() {\n    this.scrollToBottom();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL0NoYXRMb2cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9DaGF0TG9nLnZ1ZT9jOWY4Il0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwibS04XCIgaWQ9XCJjb21wb25lbnQtY2hhdC1sb2dcIiB2LWlmPVwibWVzc2FnZXNcIj5cbiAgICAgICAgPGRpdiA6a2V5PVwiaW5kZXhcIiBjbGFzcz1cIm1zZy1ncnAtY29udGFpbmVyXCIgdi1mb3I9XCIobXNnLCBpbmRleCkgaW4gbWVzc2FnZXNcIj5cblxuICAgICAgICAgICAgPCEtLSBJZiBwcmV2aW91cyBtc2cgaXMgb2xkZXIgdGhhbiBjdXJyZW50IHRpbWUgLS0+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIm1lc3NhZ2VzW2luZGV4IC0gMV1cIj5cbiAgICAgICAgICAgICAgICA8dnMtZGl2aWRlciB2LWlmPVwiIWlzU2FtZURheShtc2cudGltZSwgbWVzc2FnZXNbaW5kZXgtMV0udGltZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgbXNnLnRpbWUgfCBkYXRlKCdERCBNTU1NIFlZWVknKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3ZzLWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlciBtdC04XCJcbiAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCIhaGFzU2VudFByZXZpb3VzTXNnKG1lc3NhZ2VzW2luZGV4LTFdLnNlbmRlcl9pZCA9PT0gdXNlckRhdGEuaWQsIG1zZy5zZW5kZXJfaWQgPT09IHVzZXJEYXRhLmlkKVwiPjwvZGl2PlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJbeydmbGV4LXJvdy1yZXZlcnNlJyA6IG1zZy5zZW5kZXJfaWQgPT09IHVzZXJEYXRhLmlkfV1cIiBjbGFzcz1cImZsZXggaXRlbXMtc3RhcnRcIj5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwibWVzc2FnZXNbaW5kZXgtMV1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIighaGFzU2VudFByZXZpb3VzTXNnKG1lc3NhZ2VzW2luZGV4LTFdLnNlbmRlcl9pZCA9PT0gdXNlckRhdGEuaWQsIG1zZy5zZW5kZXJfaWQgPT09IHVzZXJEYXRhLmlkKSB8fCAhaXNTYW1lRGF5KG1zZy50aW1lLCBtZXNzYWdlc1tpbmRleC0xXS50aW1lKSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1hdmF0YXIgOmNsYXNzPVwibXNnLnNlbmRlcl9pZCA9PT0gdXNlckRhdGEuaWQgPyAnc206bWwtNSBtbC0zJyA6ICdzbTptci01IG1yLTMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNyYz1cIm1zZy51c2VyX2F2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLTIgc2hhZG93IGJvcmRlci1zb2xpZCBib3JkZXItd2hpdGUgYmctd2hpdGUgbS0wIGZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiNDBweFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpbmRleCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtYXZhdGFyIDpjbGFzcz1cIm1zZy5zZW5kZXJfaWQgPT09IHVzZXJEYXRhLmlkID8gJ3NtOm1sLTUgbWwtMycgOiAnc206bXItNSBtci0zJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNyYz1cIm1zZy51c2VyX2F2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItMiBzaGFkb3cgYm9yZGVyLXNvbGlkIGJvcmRlci13aGl0ZSBiZy13aGl0ZSBtLTAgZmxleC1zaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjQwcHhcIi8+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwibWVzc2FnZXNbaW5kZXggLSAxXVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCIhKCFoYXNTZW50UHJldmlvdXNNc2cobWVzc2FnZXNbaW5kZXgtMV0uc2VuZGVyX2lkID09PSB1c2VyRGF0YS5pZCwgbXNnLnNlbmRlcl9pZCA9PT0gdXNlckRhdGEuaWQpIHx8ICFpc1NhbWVEYXkobXNnLnRpbWUsIG1lc3NhZ2VzW2luZGV4LTFdLnRpbWUpKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cInsnYmctcHJpbWFyeS1ncmFkaWVudCB0ZXh0LXdoaXRlJzogbXNnLnNlbmRlcl9pZCA9PT0gdXNlckRhdGEuaWQsICdib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1ncmV5LWxpZ2h0IGJnLXdoaXRlJzogbXNnLnNlbmRlcl9pZCAhPT0gdXNlckRhdGEuaWR9XCJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXNnIGJyZWFrLXdvcmRzIHJlbGF0aXZlIHNoYWRvdy1tZCByb3VuZGVkIHB5LTMgcHgtNCBtYi0yIHJvdW5kZWQtbGcgbWF4LXctc21cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgbXNnLm1lc3NhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEwcHg7IGZsb2F0OiByaWdodFwiPnt7IG1zZy50aW1lIHwgZGF0ZSgnREQvTU0vWVlZWSBISDptbScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNoYXQ6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXNlckRhdGE6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVzc2FnZXM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIGhhc1NlbnRQcmV2aW91c01zZyAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChsYXN0X3NlbmRlciwgY3VycmVudF9zZW5kZXIpID0+IGxhc3Rfc2VuZGVyID09PSBjdXJyZW50X3NlbmRlcjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGlzU2FtZURheSAodG9EYXRlLCBmcm9tRGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb21lbnQodG9EYXRlKS5pc1NhbWUobW9tZW50KGZyb21EYXRlKSwgJ2RheScpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjcm9sbFRvQm90dG9tICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBhcmVudC4kZWwuc2Nyb2xsVG9wID0gdGhpcy4kcGFyZW50LiRlbC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlZCgpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgfSxcbiAgICAgICAgbW91bnRlZCgpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBVEE7QUFjQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW5DQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatLog.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatNavbar.vue?vue&type=script&lang=js&":
/*!********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/components/ChatNavbar.vue?vue&type=script&lang=js& ***!
  \********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.number.constructor */ \"./node_modules/core-js/modules/es6.number.constructor.js\");\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    chat: {\n      type: Object,\n      required: true\n    },\n    userId: {\n      type: Number,\n      required: true\n    },\n    isSidebarCollapsed: {\n      type: Boolean,\n      required: true\n    }\n  },\n  methods: {\n    goToProjectDetails: function goToProjectDetails() {\n      this.$router.push({\n        name: 'EditProject',\n        params: {\n          id: this.chat.id\n        }\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL0NoYXROYXZiYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9DaGF0TmF2YmFyLnZ1ZT8wY2VlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IHYtaWY9XCJ1c2VySWQgIT0gbnVsbFwiIGNsYXNzPVwiY2hhdF9faGVhZGVyXCI+XG4gICAgICAgIDx2cy1uYXZiYXIgY2xhc3M9XCJwLTQgZmxleCBuYXZiYXItY3VzdG9tXCIgY29sb3I9XCJ3aGl0ZVwiIHR5cGU9XCJmbGF0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleCBtci00XCI+XG4gICAgICAgICAgICAgICAgPGZlYXRoZXItaWNvbiBpY29uPVwiTWVudUljb25cIiBjbGFzcz1cIm1yLTQgY3Vyc29yLXBvaW50ZXJcIiB2LWlmPVwiaXNTaWRlYmFyQ29sbGFwc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljay5zdG9wPVwiJGVtaXQoJ29wZW5Db250YWN0c1NpZGViYXInKVwiLz5cbiAgICAgICAgICAgICAgICA8dnMtYXZhdGFyIGNsYXNzPVwibS0wIGJvcmRlci0yIGJvcmRlci1zb2xpZCBib3JkZXItd2hpdGUgYmctd2hpdGVcIiBzaXplPVwiNDBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6c3JjPVwiY2hhdC5pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2suc3RvcD1cIiRlbWl0KCdzaG93UHJvZmlsZVNpZGViYXInLCB1c2VySWQpXCIvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTMgdy0zIGJvcmRlci13aGl0ZSBib3JkZXIgYm9yZGVyLXNvbGlkIHJvdW5kZWQtZnVsbCBhYnNvbHV0ZSByaWdodC0wIGJvdHRvbS0wIGJnLXN1Y2Nlc3NcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGg2Pnt7IGNoYXQudGl0bGUgfX08L2g2PlxuICAgICAgICAgICAgPHZ4LXRvb2x0aXAgdGV4dD1cIlByb2plY3QgZGV0YWlsc1wiIGNsYXNzPVwiZ2ctYWJzb2x1dGUgcG9zaXRpb24tcmlnaHQtMTVcIj5cbiAgICAgICAgICAgICAgICA8ZmVhdGhlci1pY29uIGljb249XCJBcnJvd1JpZ2h0Q2lyY2xlSWNvblwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN2Z0NsYXNzZXM9XCJbJ3ctNicsICdoLTYnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2suc3RvcD1cImdvVG9Qcm9qZWN0RGV0YWlsc1wiLz5cbiAgICAgICAgICAgIDwvdngtdG9vbHRpcD5cbiAgICAgICAgICAgIDx2cy1zcGFjZXIvPlxuICAgICAgICA8L3ZzLW5hdmJhcj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2hhdDoge1xuICAgICAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1c2VySWQ6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTaWRlYmFyQ29sbGFwc2VkOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgZ29Ub1Byb2plY3REZXRhaWxzICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7bmFtZTogJ0VkaXRQcm9qZWN0JywgcGFyYW1zOiB7aWQ6IHRoaXMuY2hhdC5pZH19KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfVxuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFUQTtBQWNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUhBO0FBZkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatNavbar.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/UserProfile.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/components/UserProfile.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.array.find-index */ \"./node_modules/core-js/modules/es6.array.find-index.js\");\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es6.number.constructor */ \"./node_modules/core-js/modules/es6.number.constructor.js\");\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-perfect-scrollbar */ \"./node_modules/vue-perfect-scrollbar/dist/index.js\");\n/* harmony import */ var vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _contacts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../contacts */ \"./src/modules/chat/contacts.js\");\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    userId: {\n      type: Number,\n      required: true\n    },\n    active: {\n      type: Boolean,\n      required: true\n    }\n  },\n  data: function data() {\n    return {\n      contacts: _contacts__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n      counterDanger: false,\n      settings: {\n        // perfectscrollbar settings\n        maxScrollbarLength: 60,\n        wheelSpeed: .60\n      }\n    };\n  },\n  computed: {\n    isActiveUser: function isActiveUser() {\n      return this.contactIndex === -1;\n    },\n    activeLocal: {\n      get: function get() {\n        return this.active;\n      },\n      set: function set(value) {\n        this.$emit('closeProfileSidebar', value);\n      }\n    },\n    about: {\n      get: function get() {\n        if (this.contactIndex === -1) {\n          return this.$store.state.AppActiveUser.about;\n        } else {\n          return this.contacts[this.contactIndex].about;\n        }\n      },\n      set: function set(value) {\n        if (value.length > 120) {\n          value = value.substring(0, 120);\n        }\n\n        this.$store.dispatch('chat/updateAboutChat', value);\n      }\n    },\n    contactIndex: function contactIndex() {\n      var _this = this;\n\n      return _contacts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].findIndex(function (contact) {\n        return contact.id == _this.userId;\n      });\n    },\n    status: {\n      get: function get() {\n        if (this.contactIndex === -1) {\n          return this.$store.state.AppActiveUser.status;\n        }\n      },\n      set: function set(value) {\n        if (this.contactIndex === -1) {\n          this.$store.dispatch('chat/updateStatusChat', value);\n        }\n      }\n    },\n    userImg: function userImg() {\n      if (this.contactIndex === -1) {\n        return this.$store.state.AppActiveUser.img;\n      } else {\n        return this.contacts[this.contactIndex].img;\n      }\n    },\n    userName: function userName() {\n      if (this.contactIndex === -1) {\n        return this.$store.state.AppActiveUser.name;\n      } else {\n        return this.contacts[this.contactIndex].name;\n      }\n    },\n    getStatusColor: function getStatusColor() {\n      var _this2 = this;\n\n      return function (isActiveUser) {\n        var userStatus = _this2.getUserStatus(isActiveUser);\n\n        if (userStatus == \"online\") {\n          return \"success\";\n        } else if (userStatus == \"do not disturb\") {\n          return \"danger\";\n        } else if (userStatus == \"away\") {\n          return \"warning\";\n        } else {\n          return \"grey\";\n        }\n      };\n    }\n  },\n  methods: {\n    getUserStatus: function getUserStatus(isActiveUser) {\n      return isActiveUser ? this.$store.state.AppActiveUser.status : this.contacts[this.contactIndex].status;\n    }\n  },\n  components: {\n    VuePerfectScrollbar: vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_3___default.a\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vVXNlclByb2ZpbGUudnVlP2ViYzMiXSwic291cmNlc0NvbnRlbnQiOlsiPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIEZpbGUgTmFtZTogVXNlclByb2ZpbGUudnVlXG4gICAgRGVzY3JpcHRpb246IHVzZXIgcHJvZmlsZSBzaWRlYmFyXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXG4gICAgICBBdXRob3I6IFBpeGludmVudFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+XG5cbjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGlkPVwicGFyZW50eC1kZW1vLTJcIj5cblxuICAgICAgICA8dnMtc2lkZWJhciBwYXJlbnQ9XCIjY2hhdC1hcHBcIiA6cG9zaXRpb24tcmlnaHQ9XCIhaXNBY3RpdmVVc2VyXCIgOmhpZGRlbi1iYWNrZ3JvdW5kPVwiZmFsc2VcIiB2LW1vZGVsPVwiYWN0aXZlTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImNoYXQtcHJvZmlsZS1zaWRlYmFyXCIgY2xhc3M9XCJpdGVtcy1uby1wYWRkaW5nXCI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItc2lkZWJhciByZWxhdGl2ZSBmbGV4IGZsZXgtY29sIHAtMFwiIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZmVhdGhlci1pY29uIGljb249XCJYSWNvblwiIHN2Z0NsYXNzZXM9XCJtLTIgY3Vyc29yLXBvaW50ZXIgYWJzb2x1dGUgdG9wLTAgcmlnaHQtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCIkZW1pdCgnY2xvc2VQcm9maWxlU2lkZWJhcicsIGZhbHNlKVwiPjwvZmVhdGhlci1pY29uPlxuXG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggbXgtYXV0byBtYi01IG10LTZcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLWF2YXRhciBjbGFzcz1cIm0tMCBib3JkZXItd2hpdGUgYm9yZGVyLTIgYm9yZGVyLXNvbGlkIHNoYWRvdy1tZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNyYz1cInJlcXVpcmUoYEAvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC8ke3VzZXJJbWd9YClcIiBzaXplPVwiNzBweFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNSB3LTUgYm9yZGVyLXdoaXRlIGJvcmRlci0yIGJvcmRlci1zb2xpZCByb3VuZGVkLWZ1bGwgYWJzb2x1dGUgcmlnaHQtMCBib3R0b20tMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJ2JnLScgKyBnZXRTdGF0dXNDb2xvcihpc0FjdGl2ZVVzZXIpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwibXItMiBzZWxmLWNlbnRlclwiPnt7IHVzZXJOYW1lIH19PC9oND5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8VnVlUGVyZmVjdFNjcm9sbGJhciBjbGFzcz1cInNjcm9sbC1hcmVhXCIgOnNldHRpbmdzPVwic2V0dGluZ3NcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC04XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMlwiIDpjbGFzcz1cInsnbWwtNCc6IGlzQWN0aXZlVXNlcn1cIj5BYm91dDwvaDY+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10ZXh0YXJlYSBjbGFzcz1cIm1iLTEwXCIgY291bnRlcj1cIjEyMFwiIG1heGxlbmd0aD1cIjEyMFwiIDpjb3VudGVyLWRhbmdlci5zeW5jPVwiY291bnRlckRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiYWJvdXRcIiByb3dzPVwiNVwiIHYtaWY9XCJpc0FjdGl2ZVVzZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxwIHYtZWxzZT57eyBhYm91dCB9fTwvcD5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlclByb2ZpbGVfX3N0YXR1c1wiIHYtaWY9XCJpc0FjdGl2ZVVzZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTRcIj5TdGF0dXM8L2g2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXJhZGlvIHYtbW9kZWw9XCJzdGF0dXNcIiB2cy12YWx1ZT1cIm9ubGluZVwiIGNvbG9yPVwic3VjY2Vzc1wiPkFjdGl2ZTwvdnMtcmFkaW8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1yYWRpbyB2LW1vZGVsPVwic3RhdHVzXCIgdnMtdmFsdWU9XCJkbyBub3QgZGlzdHVyYlwiIGNvbG9yPVwiZGFuZ2VyXCI+RG8gTm90IERpc3R1cmJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92cy1yYWRpbz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXJhZGlvIHYtbW9kZWw9XCJzdGF0dXNcIiB2cy12YWx1ZT1cImF3YXlcIiBjb2xvcj1cIndhcm5pbmdcIj5Bd2F5PC92cy1yYWRpbz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXJhZGlvIHYtbW9kZWw9XCJzdGF0dXNcIiB2cy12YWx1ZT1cIm9mZmxpbmVcIiBjb2xvcj1cImdyZXlcIj5PZmZsaW5lPC92cy1yYWRpbz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1Z1ZVBlcmZlY3RTY3JvbGxiYXI+XG4gICAgICAgIDwvdnMtc2lkZWJhcj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IFZ1ZVBlcmZlY3RTY3JvbGxiYXIgZnJvbSAndnVlLXBlcmZlY3Qtc2Nyb2xsYmFyJ1xuICAgIGltcG9ydCBjb250YWN0cyBmcm9tICcuLi9jb250YWN0cydcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHVzZXJJZDoge1xuICAgICAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmU6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29udGFjdHM6IGNvbnRhY3RzLFxuICAgICAgICAgICAgICAgIGNvdW50ZXJEYW5nZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7IC8vIHBlcmZlY3RzY3JvbGxiYXIgc2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgbWF4U2Nyb2xsYmFyTGVuZ3RoOiA2MCxcbiAgICAgICAgICAgICAgICAgICAgd2hlZWxTcGVlZDogLjYwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICBpc0FjdGl2ZVVzZXIgKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhY3RJbmRleCA9PT0gLTE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWN0aXZlTG9jYWw6IHtcbiAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldCAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2xvc2VQcm9maWxlU2lkZWJhcicsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWJvdXQ6IHtcbiAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWN0SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuQXBwQWN0aXZlVXNlci5hYm91dDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhY3RzW3RoaXMuY29udGFjdEluZGV4XS5hYm91dDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0ICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMTIwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCAxMjApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NoYXQvdXBkYXRlQWJvdXRDaGF0JywgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0SW5kZXggKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWN0cy5maW5kSW5kZXgoY29udGFjdCA9PiBjb250YWN0LmlkID09IHRoaXMudXNlcklkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWN0SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuQXBwQWN0aXZlVXNlci5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldCAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGFjdEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NoYXQvdXBkYXRlU3RhdHVzQ2hhdCcsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1c2VySW1nICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWN0SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5BcHBBY3RpdmVVc2VyLmltZztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWN0c1t0aGlzLmNvbnRhY3RJbmRleF0uaW1nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1c2VyTmFtZSAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGFjdEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuQXBwQWN0aXZlVXNlci5uYW1lO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhY3RzW3RoaXMuY29udGFjdEluZGV4XS5uYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTdGF0dXNDb2xvciAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChpc0FjdGl2ZVVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlclN0YXR1cyA9IHRoaXMuZ2V0VXNlclN0YXR1cyhpc0FjdGl2ZVVzZXIpXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJTdGF0dXMgPT0gXCJvbmxpbmVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXNlclN0YXR1cyA9PSBcImRvIG5vdCBkaXN0dXJiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXNlclN0YXR1cyA9PSBcImF3YXlcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwid2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJncmV5XCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGdldFVzZXJTdGF0dXMgKGlzQWN0aXZlVXNlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiAoaXNBY3RpdmVVc2VyKSA/IHRoaXMuJHN0b3JlLnN0YXRlLkFwcEFjdGl2ZVVzZXIuc3RhdHVzIDogdGhpcy5jb250YWN0c1t0aGlzLmNvbnRhY3RJbmRleF0uc3RhdHVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgVnVlUGVyZmVjdFNjcm9sbGJhcixcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThEQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFMQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUhBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFiQTtBQWVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0RUE7QUF3RUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFEQTtBQWxHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/UserProfile.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/Edit.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/clients/Edit.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _modules_users_components_CompanyProfile__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../../modules/users/components/CompanyProfile */ \"./src/modules/users/components/CompanyProfile.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    user: 'clients/selectedClient'\n  })),\n  components: {\n    Client: _modules_users_components_CompanyProfile__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  data: function data() {\n    return {\n      updating: false\n    };\n  },\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapMutations\"])({\n    setSelectedClient: 'clients/SELECTED_CLIENT'\n  }), {\n    save: function save(client) {\n      var vm = this;\n      vm.updating = true;\n\n      var newClient = _objectSpread({}, vm.user, {\n        profile: client\n      });\n\n      vm.setSelectedClient(newClient);\n      this.$store.dispatch('clients/updateClient', client).then(function () {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'Client updated successfully');\n        history.back();\n      }, function (error) {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n      });\n    }\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2xpZW50cy9FZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRWRpdC52dWU/NWU2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWNvbCBzbTp3LWZ1bGwgbWQ6dy1mdWxsIGxnOnctMS8xIGQtdGhlbWUtZGFyay1iZ1wiPlxuICAgICAgICA8Y2xpZW50IDppc05ldz1cImZhbHNlXCIgOmxvYWRpbmc9XCJ1cGRhdGluZ1wiIDpjb21wYW55PVwiey4uLnVzZXIucHJvZmlsZX1cIiB2LW9uOnNhdmU9XCJzYXZlXCIvPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQge21hcEdldHRlcnMsIG1hcE11dGF0aW9uc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IENsaWVudCBmcm9tICcuLy4uLy4uL21vZHVsZXMvdXNlcnMvY29tcG9uZW50cy9Db21wYW55UHJvZmlsZSc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvbkNsaWVudCBmcm9tIFwiLi4vY29tbW9uL3NlcnZpY2VzL05vdGlmaWNhdGlvblNlcnZpY2VcIjtcbiAgICBpbXBvcnQge2V4dHJhY3RFcnJvck1lc3NhZ2V9IGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvVXRpbGl0eVNlcnZpY2VcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgICAgIHVzZXI6ICdjbGllbnRzL3NlbGVjdGVkQ2xpZW50J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgQ2xpZW50XG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB1cGRhdGluZzogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIC4uLm1hcE11dGF0aW9ucyh7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDbGllbnQ6ICdjbGllbnRzL1NFTEVDVEVEX0NMSUVOVCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2F2ZSAoY2xpZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDbGllbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnZtLnVzZXIsXG4gICAgICAgICAgICAgICAgICAgIHByb2ZpbGU6IGNsaWVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdm0uc2V0U2VsZWN0ZWRDbGllbnQobmV3Q2xpZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xpZW50cy91cGRhdGVDbGllbnQnLCBjbGllbnQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS51cGRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25DbGllbnQuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdDbGllbnQgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5iYWNrKCk7XG4gICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNsaWVudC5lcnJvcignT09QUyEnLCBleHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBREE7QUFJQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFFQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcEJBO0FBZEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/List.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/clients/List.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! regenerator-runtime/runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      filters: {\n        perPage: 10,\n        page: 1,\n        search: null\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_11__[\"mapGetters\"])({\n    clients: 'clients/clients'\n  })),\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_11__[\"mapMutations\"])({\n    setSelectedClient: 'clients/SELECTED_CLIENT'\n  }), {\n    internalSearch: function internalSearch() {\n      this.$store.dispatch('clients/getClients', this.filters);\n    },\n    handleSearch: Object(lodash__WEBPACK_IMPORTED_MODULE_12__[\"debounce\"])(function (search, vm) {\n      vm.filters.search = search;\n      vm.filters.page = 1;\n      vm.internalSearch();\n    }, 500),\n    handleChangePage: function handleChangePage(page) {\n      this.filters.page = page;\n      this.internalSearch();\n    },\n    editClient: function editClient(client) {\n      this.setSelectedClient(client);\n      this.$router.push({\n        name: 'EditClient',\n        params: {\n          id: client.id\n        }\n      });\n    },\n    disableClient: function disableClient(client) {\n      var _this = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_13__[\"default\"].confirmCancel('Operation confirmation', \"Are you sure you want to make \".concat(client.name, \" client unavailable?\"),\n      /*#__PURE__*/\n      Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return _this.$store.dispatch('clients/disable', client);\n\n              case 2:\n                _this.internalSearch();\n\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      })));\n    }\n  }),\n  mounted: function mounted() {\n    this.internalSearch();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2xpZW50cy9MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vTGlzdC52dWU/OTE4NSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cImNhbC1jbGllbnRzXCI+XG4gICAgICAgIDx2eC1jYXJkPlxuICAgICAgICAgICAgPHZzLXRhYmxlIDpzc3Q9XCJ0cnVlXCIgOmRhdGE9XCJjbGllbnRzLmRhdGFcIiBzZWFyY2ggQHNlYXJjaD1cIihlKSA9PiBoYW5kbGVTZWFyY2goZSwgdGhpcylcIj5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90PVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz5DbGllbnRzPC9oMz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgdG89XCIvY2xpZW50cy9jcmVhdGVcIiBzaXplPVwic21hbGxcIiBpY29uPVwiYWRkX2NpcmNsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90PVwidGhlYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRoPk5hbWU8L3ZzLXRoPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdGg+RW1haWw8L3ZzLXRoPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdGg+Q29tcGFueTwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aCBjbGFzcz1cImZsb2F0LXJpZ2h0XCI+QWN0aW9uczwvdnMtdGg+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90LXNjb3BlPVwie2RhdGF9XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10ciA6a2V5PVwidHIuaWRcIiB2LWZvcj1cInRyIGluIGRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZD57e3RyWydmdWxsTmFtZSddfX08L3ZzLXRkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJgbWFpbHRvOiR7dHIuZW1haWx9fX1gXCI+e3t0ci5lbWFpbH19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZD57e3RyLnByb2ZpbGUuY29tcGFueX19PC92cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZCBjbGFzcz1cImZsb2F0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZ4LXRvb2x0aXAgdGV4dD1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBteC0xXCIgQGNsaWNrPVwiZWRpdENsaWVudCh0cilcIiBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJlZGl0XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdngtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dngtdG9vbHRpcCB0ZXh0PVwiRGlzYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbXgtMVwiIEBjbGljaz1cImRpc2FibGVDbGllbnQodHIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIiB2LWlmPVwidHIuaXNfZW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Z4LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRkPlxuICAgICAgICAgICAgICAgICAgICA8L3ZzLXRyPlxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3ZzLXRhYmxlPlxuXG4gICAgICAgICAgICA8dnMtcGFnaW5hdGlvbiB2LWlmPVwiY2xpZW50cy5kYXRhICYmIGNsaWVudHMuZGF0YS5sZW5ndGggPiAwXCIgY2xhc3M9XCJtdC02XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0b3RhbD1cImNsaWVudHMubWV0YS5wYWdpbmF0aW9uWyd0b3RhbF9wYWdlcyddXCIgdi1tb2RlbD1cImZpbHRlcnMucGFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlQ2hhbmdlUGFnZVwiLz5cbiAgICAgICAgPC92eC1jYXJkPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQge21hcEdldHRlcnMsIG1hcE11dGF0aW9uc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSAnbG9kYXNoJztcbiAgICBpbXBvcnQgTm90aWZpY2F0aW9uQ2xpZW50IGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZVwiO1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICAgICAgICBwZXJQYWdlOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiBudWxsLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICBjbGllbnRzOiAnY2xpZW50cy9jbGllbnRzJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgLi4ubWFwTXV0YXRpb25zKHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENsaWVudDogJ2NsaWVudHMvU0VMRUNURURfQ0xJRU5UJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW50ZXJuYWxTZWFyY2ggKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGllbnRzL2dldENsaWVudHMnLCB0aGlzLmZpbHRlcnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhbmRsZVNlYXJjaDogZGVib3VuY2UoKHNlYXJjaCwgdm0pID0+IHtcbiAgICAgICAgICAgICAgICB2bS5maWx0ZXJzLnNlYXJjaCA9IHNlYXJjaDtcbiAgICAgICAgICAgICAgICB2bS5maWx0ZXJzLnBhZ2UgPSAxO1xuICAgICAgICAgICAgICAgIHZtLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgICAgICB9LCA1MDApLFxuICAgICAgICAgICAgaGFuZGxlQ2hhbmdlUGFnZSAocGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycy5wYWdlID0gcGFnZTtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWRpdENsaWVudCAoY2xpZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENsaWVudChjbGllbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHtuYW1lOiAnRWRpdENsaWVudCcsIHBhcmFtczoge2lkOiBjbGllbnQuaWR9fSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzYWJsZUNsaWVudCAoY2xpZW50KSB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uQ2xpZW50LmNvbmZpcm1DYW5jZWwoJ09wZXJhdGlvbiBjb25maXJtYXRpb24nLCBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIG1ha2UgJHtjbGllbnQubmFtZX0gY2xpZW50IHVuYXZhaWxhYmxlP2AsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NsaWVudHMvZGlzYWJsZScsIGNsaWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQgKCkge1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuXG48L3N0eWxlPlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0RBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFEQTtBQU9BO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFFQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQXpCQTtBQTJCQTtBQUNBO0FBQ0E7QUE1Q0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/List.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/New.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/clients/New.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _modules_users_components_CompanyProfile__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../../modules/users/components/CompanyProfile */ \"./src/modules/users/components/CompanyProfile.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    clients: 'clients/clients',\n    isLoading: 'clients/isLoading'\n  })),\n  components: {\n    Client: _modules_users_components_CompanyProfile__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  data: function data() {\n    return {\n      client: {},\n      saving: false\n    };\n  },\n  methods: {\n    save: function save(client) {\n      var vm = this;\n      vm.saving = true;\n      vm.$store.dispatch('clients/createClient', client).then(function () {\n        vm.saving = false;\n        history.back();\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'Client created successfully');\n      }, function (error) {\n        vm.saving = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY2xpZW50cy9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9OZXcudnVlPzczOWMiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgc206dy1mdWxsIG1kOnctZnVsbCBsZzp3LTEvMSBkLXRoZW1lLWRhcmstYmdcIj5cbiAgICAgICAgPGNsaWVudCA6aXNOZXc9XCJ0cnVlXCIgOmxvYWRpbmc9XCJzYXZpbmdcIiA6Y29tcGFueT1cImNsaWVudFwiIHYtb246c2F2ZT1cInNhdmVcIi8+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVyc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IENsaWVudCBmcm9tICcuLy4uLy4uL21vZHVsZXMvdXNlcnMvY29tcG9uZW50cy9Db21wYW55UHJvZmlsZSc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvbkNsaWVudCBmcm9tIFwiLi4vY29tbW9uL3NlcnZpY2VzL05vdGlmaWNhdGlvblNlcnZpY2VcIjtcbiAgICBpbXBvcnQge2V4dHJhY3RFcnJvck1lc3NhZ2V9IGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvVXRpbGl0eVNlcnZpY2VcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgICAgIGNsaWVudHM6ICdjbGllbnRzL2NsaWVudHMnLFxuICAgICAgICAgICAgICAgIGlzTG9hZGluZzogJ2NsaWVudHMvaXNMb2FkaW5nJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgQ2xpZW50XG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjbGllbnQ6IHt9LFxuICAgICAgICAgICAgICAgIHNhdmluZzogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIHNhdmUgKGNsaWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgICAgICB2bS5zYXZpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZtLiRzdG9yZS5kaXNwYXRjaCgnY2xpZW50cy9jcmVhdGVDbGllbnQnLCBjbGllbnQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5iYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNsaWVudC5zdWNjZXNzKCdPcGVyYXRpb24gY29tcGxldGVkJywgJ0NsaWVudCBjcmVhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uQ2xpZW50LmVycm9yKCdPT1BTIScsIGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG48L3NjcmlwdD5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQWhCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=script&lang=js&":
/*!***********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/FeatherIcon.vue?vue&type=script&lang=js& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue_feather_icons__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-feather-icons */ \"./node_modules/vue-feather-icons/dist/vue-feather-icons.es.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  functional: true,\n  name: 'feather-icon',\n  props: {\n    icon: {\n      required: true\n    },\n    svgClasses: {\n      type: [String, Object, Array],\n      default: \"\"\n    },\n    badge: {}\n  },\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data;\n    // Add feather classes\n    data.staticClass ? data.staticClass = data.staticClass + ' feather-icon select-none' : data.staticClass = 'feather-icon select-none';\n    var svg = h(vue_feather_icons__WEBPACK_IMPORTED_MODULE_0__[props.icon], {\n      class: props.svgClasses\n    });\n    var badgeEl = h('span', {\n      class: 'feather-icon-badge bg-primary text-white h-5 w-5 absolute rounded-full text-xs flex items-center justify-center',\n      style: 'top: -7px; right: -5px'\n    }, [props.badge]);\n    var children = [svg];\n    if (props.badge) children.push(badgeEl);\n    return h('span', data, children);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvRmVhdGhlckljb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9GZWF0aGVySWNvbi52dWU/ZDU2NyJdLCJzb3VyY2VzQ29udGVudCI6WyI8c2NyaXB0PlxuICBpbXBvcnQgKiBhcyBpY29ucyBmcm9tICd2dWUtZmVhdGhlci1pY29ucydcblxuICBleHBvcnQgZGVmYXVsdCB7XG4gICAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgICBuYW1lOiAnZmVhdGhlci1pY29uJyxcbiAgICBwcm9wczoge1xuICAgICAgaWNvbjoge3JlcXVpcmVkOiB0cnVlfSxcbiAgICAgIHN2Z0NsYXNzZXM6IHt0eXBlOiBbU3RyaW5nLCBPYmplY3QsIEFycmF5XSwgZGVmYXVsdDogXCJcIn0sXG4gICAgICBiYWRnZToge31cbiAgICB9LFxuICAgIHJlbmRlciAoaCwge3Byb3BzLCBkYXRhfSkge1xuICAgICAgLy8gQWRkIGZlYXRoZXIgY2xhc3Nlc1xuICAgICAgZGF0YS5zdGF0aWNDbGFzcyA/IGRhdGEuc3RhdGljQ2xhc3MgPSBkYXRhLnN0YXRpY0NsYXNzICsgJyBmZWF0aGVyLWljb24gc2VsZWN0LW5vbmUnIDogZGF0YS5zdGF0aWNDbGFzcyA9ICdmZWF0aGVyLWljb24gc2VsZWN0LW5vbmUnXG5cbiAgICAgIGxldCBzdmcgPSBoKGljb25zW3Byb3BzLmljb25dLCB7Y2xhc3M6IHByb3BzLnN2Z0NsYXNzZXN9KVxuICAgICAgbGV0IGJhZGdlRWwgPSBoKCdzcGFuJywge1xuICAgICAgICBjbGFzczogJ2ZlYXRoZXItaWNvbi1iYWRnZSBiZy1wcmltYXJ5IHRleHQtd2hpdGUgaC01IHctNSBhYnNvbHV0ZSByb3VuZGVkLWZ1bGwgdGV4dC14cyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcicsXG4gICAgICAgIHN0eWxlOiAndG9wOiAtN3B4OyByaWdodDogLTVweCdcbiAgICAgIH0sIFtwcm9wcy5iYWRnZV0pXG4gICAgICBsZXQgY2hpbGRyZW4gPSBbc3ZnXVxuICAgICAgaWYgKHByb3BzLmJhZGdlKSBjaGlsZHJlbi5wdXNoKGJhZGdlRWwpXG4gICAgICByZXR1cm4gaCgnc3BhbicsIGRhdGEsIGNoaWxkcmVuKVxuICAgIH1cbiAgfVxuXG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG4gIEBpbXBvcnQgXCIuLy4uLy4uLy4uL2Fzc2V0cy9zY3NzL3Z1ZXNheC9jb21wb25lbnRzL2ZlYXRoZXJJY29uLnNjc3NcIjtcbjwvc3R5bGU+XG4iXSwibWFwcGluZ3MiOiJBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUhBO0FBS0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFwQkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FileUploader.vue?vue&type=script&lang=js&":
/*!************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/FileUploader.vue?vue&type=script&lang=js& ***!
  \************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _flowjs_flow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @flowjs/flow.js */ \"./node_modules/@flowjs/flow.js/src/flow.js\");\n/* harmony import */ var _flowjs_flow_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_flowjs_flow_js__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'FileUploader',\n  props: {\n    label: {\n      type: String,\n      required: false\n    },\n    options: {\n      type: Object,\n      required: true\n    }\n  },\n  data: function data() {\n    return {\n      isUploading: false,\n      flow: {}\n    };\n  },\n  mounted: function mounted() {\n    var vm = this;\n    vm.flow = new _flowjs_flow_js__WEBPACK_IMPORTED_MODULE_0___default.a(vm.options);\n    vm.flow.assignBrowse(vm.$refs.button, false, true, vm.options.attributes);\n    vm.flow.assignDrop(vm.$refs.button, false, true, vm.options.attributes);\n    vm.flow.on('fileAdded', function (file, event) {\n      vm.isUploading = false;\n      vm.$emit('fileAdded', {\n        file: file,\n        event: event\n      });\n    });\n    vm.flow.on('filesSubmitted', function () {\n      if (!vm.options.uploadOnClick) {\n        vm.isUploading = true;\n        vm.flow.upload();\n      }\n\n      vm.$emit('fileSubmitted', vm.flow);\n    });\n    vm.flow.on('fileSuccess', function (file, message) {\n      vm.isUploading = false;\n      vm.$emit('fileSuccess', {\n        file: file,\n        message: message\n      });\n    });\n    vm.flow.on('fileError', function (file, message) {\n      vm.isUploading = false;\n      vm.$emit('fileError', {\n        file: file,\n        message: message\n      });\n    });\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvRmlsZVVwbG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRmlsZVVwbG9hZGVyLnZ1ZT85NWU1Il0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IEBjbGljaz1cIiFpc1VwbG9hZGluZyAmJiAkZW1pdCgnY2xpY2snKVwiIGNsYXNzPVwiZmlsZS11cGxvYWRlci1jb250YWluZXJcIiByZWY9XCJidXR0b25cIj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIiB2LWlmPVwib3B0aW9ucy51cGxvYWRPbkNsaWNrICYmIGlzVXBsb2FkaW5nXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICBVUExPQURJTkdcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCBGbG93IGZyb20gJ0BmbG93anMvZmxvdy5qcyc7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIG5hbWU6ICdGaWxlVXBsb2FkZXInLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbGFiZWw6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaXNVcGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZsb3c6IHt9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgIHZtLmZsb3cgPSBuZXcgRmxvdyh2bS5vcHRpb25zKTtcbiAgICAgICAgICAgIHZtLmZsb3cuYXNzaWduQnJvd3NlKHZtLiRyZWZzLmJ1dHRvbiwgZmFsc2UsIHRydWUsIHZtLm9wdGlvbnMuYXR0cmlidXRlcyk7XG4gICAgICAgICAgICB2bS5mbG93LmFzc2lnbkRyb3Aodm0uJHJlZnMuYnV0dG9uLCBmYWxzZSwgdHJ1ZSwgdm0ub3B0aW9ucy5hdHRyaWJ1dGVzKTtcblxuICAgICAgICAgICAgdm0uZmxvdy5vbignZmlsZUFkZGVkJywgKGZpbGUsIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdm0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2bS4kZW1pdCgnZmlsZUFkZGVkJywge1xuICAgICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2bS5mbG93Lm9uKCdmaWxlc1N1Ym1pdHRlZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXZtLm9wdGlvbnMudXBsb2FkT25DbGljaykge1xuICAgICAgICAgICAgICAgICAgICB2bS5pc1VwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHZtLmZsb3cudXBsb2FkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZtLiRlbWl0KCdmaWxlU3VibWl0dGVkJywgdm0uZmxvdyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZtLmZsb3cub24oJ2ZpbGVTdWNjZXNzJywgKGZpbGUsIG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB2bS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHZtLiRlbWl0KCdmaWxlU3VjY2VzcycsIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2bS5mbG93Lm9uKCdmaWxlRXJyb3InLCAoZmlsZSwgbWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZtLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdm0uJGVtaXQoJ2ZpbGVFcnJvcicsIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBWUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBTEE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBcERBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FileUploader.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/MediaUpload.vue?vue&type=script&lang=js&":
/*!***********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/MediaUpload.vue?vue&type=script&lang=js& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _flowjs_flow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @flowjs/flow.js */ \"./node_modules/@flowjs/flow.js/src/flow.js\");\n/* harmony import */ var _flowjs_flow_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_flowjs_flow_js__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'MediaUpload',\n  props: {\n    resource: {\n      type: String,\n      required: false\n    },\n    options: {\n      type: Object,\n      required: false\n    },\n    loading: {\n      type: Boolean,\n      required: true\n    },\n    className: {\n      type: String\n    },\n    isEditable: {\n      type: Boolean,\n      default: true\n    }\n  },\n  data: function data() {\n    return {\n      defaultOptions: {\n        allowDuplicateUploads: true,\n        attributes: {\n          accept: 'image/*'\n        }\n      }\n    };\n  },\n  mounted: function mounted() {\n    var vm = this;\n    var attributes = {\n      accept: 'image/*'\n    };\n    var flow = new _flowjs_flow_js__WEBPACK_IMPORTED_MODULE_0___default.a(vm.defaultOptions);\n\n    if (this.isEditable) {\n      flow.assignBrowse(this.$refs.button, false, true, attributes);\n    }\n\n    flow.on('fileAdded', function (file, event) {\n      vm.$emit('fileAdded', {\n        file: file,\n        event: event\n      });\n    });\n    flow.on('fileSuccess', function (file, message) {\n      vm.$emit('fileSuccess', {\n        file: file,\n        message: message\n      });\n    });\n    flow.on('fileError', function (file, message) {\n      vm.$emit('fileError', {\n        file: file,\n        message: message\n      });\n    });\n  },\n  watch: {\n    resource: function resource() {\n      this.$forceUpdate();\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvTWVkaWFVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9NZWRpYVVwbG9hZC52dWU/NWIxZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiA6Y2xhc3M9XCJjbGFzc05hbWVcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwieyAnY2FsLWxvYWRpbmcnOiBsb2FkaW5nIH1cIiA6c3R5bGU9XCJ7IGJhY2tncm91bmRJbWFnZTogYHVybCgke3Jlc291cmNlfSlgIH1cIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lZGlhLXVwbG9hZCBtLWF1dG9cIlxuICAgICAgICAgICAgICAgICByZWY9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1pbWFnZS1ob3ZlclwiIHYtaWY9XCJpc0VkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPlVwbG9hZDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IEZsb3cgZnJvbSAnQGZsb3dqcy9mbG93LmpzJztcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgbmFtZTogJ01lZGlhVXBsb2FkJyxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9hZGluZzoge1xuICAgICAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc0VkaXRhYmxlOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBhbGxvd0R1cGxpY2F0ZVVwbG9hZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHthY2NlcHQ6ICdpbWFnZS8qJ31cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7YWNjZXB0OiAnaW1hZ2UvKid9O1xuICAgICAgICAgICAgY29uc3QgZmxvdyA9IG5ldyBGbG93KHZtLmRlZmF1bHRPcHRpb25zKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgICAgICBmbG93LmFzc2lnbkJyb3dzZSh0aGlzLiRyZWZzLmJ1dHRvbiwgZmFsc2UsIHRydWUsIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmbG93Lm9uKCdmaWxlQWRkZWQnLCAoZmlsZSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB2bS4kZW1pdCgnZmlsZUFkZGVkJywge1xuICAgICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmbG93Lm9uKCdmaWxlU3VjY2VzcycsIChmaWxlLCBtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdm0uJGVtaXQoJ2ZpbGVTdWNjZXNzJywge1xuICAgICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZsb3cub24oJ2ZpbGVFcnJvcicsIChmaWxlLCBtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdm0uJGVtaXQoJ2ZpbGVFcnJvcicsIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoOiB7XG4gICAgICAgICAgICByZXNvdXJjZSAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFGQTtBQWhCQTtBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBREE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUExREEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/MediaUpload.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/StatisticsCardLine.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/StatisticsCardLine.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_regexp_to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.regexp.to-string */ \"./node_modules/core-js/modules/es6.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es6_regexp_to_string__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_to_string__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_date_to_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.date.to-string */ \"./node_modules/core-js/modules/es6.date.to-string.js\");\n/* harmony import */ var core_js_modules_es6_date_to_string__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_date_to_string__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es6.regexp.split */ \"./node_modules/core-js/modules/es6.regexp.split.js\");\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.number.constructor */ \"./node_modules/core-js/modules/es6.number.constructor.js\");\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var vue_apexcharts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-apexcharts */ \"./node_modules/vue-apexcharts/dist/vue-apexcharts.js\");\n/* harmony import */ var vue_apexcharts__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_apexcharts__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    icon: {\n      type: String,\n      required: true\n    },\n    statistic: {\n      type: [Number, String],\n      required: true\n    },\n    statisticTitle: {\n      type: String\n    },\n    chartData: {\n      type: Object,\n      required: true\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    chartType: {\n      type: String,\n      default: 'line-chart'\n    },\n    type: {\n      type: String,\n      default: 'line'\n    },\n    iconRight: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      chartOptions: {\n        grid: {\n          show: false,\n          padding: {\n            left: 0,\n            right: 0\n          }\n        },\n        chart: {\n          toolbar: {\n            show: false\n          },\n          sparkline: {\n            enabled: true\n          }\n        },\n        dataLabels: {\n          enabled: false\n        },\n        stroke: {\n          curve: 'smooth',\n          width: 2.5\n        },\n        fill: {\n          type: 'gradient',\n          gradient: {\n            shadeIntensity: 0.9,\n            opacityFrom: 0.7,\n            opacityTo: 0.5,\n            stops: [0, 80, 100]\n          }\n        },\n        xaxis: {\n          type: 'numeric',\n          lines: {\n            show: false\n          },\n          axisBorder: {\n            show: false\n          },\n          labels: {\n            show: false\n          }\n        },\n        yaxis: [{\n          y: 0,\n          offsetX: 0,\n          offsetY: 0,\n          padding: {\n            left: 0,\n            right: 0\n          }\n        }],\n        tooltip: {\n          x: {\n            show: false\n          }\n        }\n      }\n    };\n  },\n  watch: {\n    themePrimaryColor: function themePrimaryColor() {\n      this.$refs.apexChart.updateOptions({\n        theme: {\n          monochrome: {\n            color: this.getHex()\n          }\n        }\n      });\n    }\n  },\n  computed: {\n    themePrimaryColor: function themePrimaryColor() {\n      return this.$store.state.themePrimaryColor;\n    }\n  },\n  methods: {\n    getHex: function getHex() {\n      var rgb = window.getComputedStyle(document.documentElement).getPropertyValue(\"--vs-\".concat(this.color)).split(\",\");\n      return \"#\" + ((1 << 24) + (Number(rgb[0]) << 16) + (Number(rgb[1]) << 8) + Number(rgb[2])).toString(16).slice(1);\n    }\n  },\n  components: {\n    VueApexCharts: vue_apexcharts__WEBPACK_IMPORTED_MODULE_4___default.a\n  },\n  created: function created() {\n    if (this.type === 'area') {\n      this.chartOptions['theme'] = {\n        monochrome: {\n          enabled: true,\n          color: this.getHex(this.color),\n          shadeTo: 'light',\n          shadeIntensity: 0.65\n        }\n      };\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvU3RhdGlzdGljc0NhcmRMaW5lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vU3RhdGlzdGljc0NhcmRMaW5lLnZ1ZT9mZDAzIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8dngtY2FyZCBjbGFzcz1cIm92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICA8ZGl2IHNsb3Q9XCJuby1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2IDpjbGFzcz1cInsnZmxleCBqdXN0aWZ5LWJldHdlZW4gZmxleC1yb3ctcmV2ZXJzZSBpdGVtcy1jZW50ZXInOiBpY29uUmlnaHR9XCIgY2xhc3M9XCJwLTYgcGItMFwiPlxuICAgICAgICAgICAgICAgIDxmZWF0aGVyLWljb24gOmNsYXNzPVwiW2B0ZXh0LSR7Y29sb3J9YCwgeydtYi00JzogIWljb25SaWdodH1dXCIgOmljb249XCJpY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdHlsZT1cIntiYWNrZ3JvdW5kOiBgcmdiYSh2YXIoLS12cy0ke2NvbG9yfSksLjE1KWB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0zIGlubGluZS1mbGV4IHJvdW5kZWQtZnVsbFwiPjwvZmVhdGhlci1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cIm1iLTEgZm9udC1ib2xkXCI+e3sgc3RhdGlzdGljIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgc3RhdGlzdGljVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiA6aWQ9XCJjaGFydERhdGEuaWRcIiBjbGFzcz1cImxpbmUtYXJlYS1jaGFydFwiPlxuICAgICAgICAgICAgICAgIDx2dWUtYXBleC1jaGFydHMgOm9wdGlvbnM9XCJjaGFydE9wdGlvbnNcIiA6c2VyaWVzPVwiY2hhcnREYXRhLnNlcmllc1wiIDp0eXBlPVwidHlwZVwiIGhlaWdodD0xMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj1cImFwZXhDaGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0nMTAwJSc+PC92dWUtYXBleC1jaGFydHM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC92eC1jYXJkPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQgVnVlQXBleENoYXJ0cyBmcm9tICd2dWUtYXBleGNoYXJ0cydcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGljb246IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGF0aXN0aWM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXRpc3RpY1RpdGxlOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoYXJ0RGF0YToge1xuICAgICAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGFydFR5cGU6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogJ2xpbmUtY2hhcnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogJ2xpbmUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWNvblJpZ2h0OiB7XG4gICAgICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY2hhcnRPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFya2xpbmU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VydmU6ICdzbW9vdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIuNVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZ3JhZGllbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZUludGVuc2l0eTogMC45LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHlGcm9tOiAwLjcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eVRvOiAwLjUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHM6IFswLCA4MCwgMTAwXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB4YXhpczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBheGlzQm9yZGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7c2hvdzogZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHlheGlzOiBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzoge2xlZnQ6IDAsIHJpZ2h0OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHtzaG93OiBmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoOiB7XG4gICAgICAgICAgICB0aGVtZVByaW1hcnlDb2xvciAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kcmVmcy5hcGV4Q2hhcnQudXBkYXRlT3B0aW9ucyh7dGhlbWU6IHttb25vY2hyb21lOiB7Y29sb3I6IHRoaXMuZ2V0SGV4KCl9fX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgdGhlbWVQcmltYXJ5Q29sb3IgKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS50aGVtZVByaW1hcnlDb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgZ2V0SGV4ICgpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmdiID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGAtLXZzLSR7dGhpcy5jb2xvcn1gKS5zcGxpdChcIixcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiI1wiICsgKCgxIDw8IDI0KSArIChOdW1iZXIocmdiWzBdKSA8PCAxNikgKyAoTnVtYmVyKHJnYlsxXSkgPDwgOCkgKyBOdW1iZXIocmdiWzJdKSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgVnVlQXBleENoYXJ0c1xuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVkICgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdhcmVhJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhcnRPcHRpb25zWyd0aGVtZSddID0ge1xuICAgICAgICAgICAgICAgICAgICBtb25vY2hyb21lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRoaXMuZ2V0SGV4KHRoaXMuY29sb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVUbzogJ2xpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlSW50ZW5zaXR5OiAwLjY1XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQTVCQTtBQWlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFGQTtBQU9BO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBSkE7QUFRQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFGQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFHQTtBQUFBO0FBQUE7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFKQTtBQU1BO0FBQ0E7QUFBQTtBQUFBO0FBREE7QUFoREE7QUFEQTtBQXNEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBREE7QUFRQTtBQUNBO0FBeEhBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/StatisticsCardLine.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/VxCard.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_string_trim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.string.trim */ \"./node_modules/core-js/modules/es6.string.trim.js\");\n/* harmony import */ var core_js_modules_es6_string_trim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_string_trim__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue_prism_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-prism-component */ \"./node_modules/vue-prism-component/dist/vue-prism-component.common.js\");\n/* harmony import */ var vue_prism_component__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue_prism_component__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/utils/color.js */ \"./src/assets/utils/color.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'vx-card',\n  props: {\n    title: String,\n    subtitle: String,\n    actionButtons: {\n      type: Boolean,\n      default: false\n    },\n    actionButtonsColor: {\n      type: String,\n      default: \"success\"\n    },\n    codeToggler: {\n      type: Boolean,\n      default: false\n    },\n    noShadow: {\n      default: false,\n      type: Boolean\n    },\n    noRadius: {\n      default: false,\n      type: Boolean\n    },\n    cardBorder: {\n      default: false,\n      type: Boolean\n    },\n    codeLanguage: {\n      default: \"markup\",\n      type: String\n    },\n    collapseAction: {\n      default: false,\n      type: Boolean\n    },\n    refreshContentAction: {\n      default: false,\n      type: Boolean\n    },\n    removeCardAction: {\n      default: false,\n      type: Boolean\n    },\n    headerBackground: {\n      default: '',\n      type: String\n    },\n    // bodyBackground: {\n    //   default: '',\n    //   type: String\n    // },\n    // headerbackground: {\n    //   default: '',\n    //   type: String\n    // },\n    cardBackground: {\n      default: '',\n      type: String\n    },\n    contentColor: {\n      default: '',\n      type: String\n    },\n    titleColor: {\n      default: '',\n      type: String\n    },\n    subtitleColor: {\n      default: '#b8c2cc',\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      isContentCollapsed: false,\n      showCode: false,\n      maxHeight: null,\n      cardMaxHeight: null,\n      codeContainerMaxHeight: '0px',\n      tempHidden: false\n    };\n  },\n  computed: {\n    hasAction: function hasAction() {\n      return this.$slots.actions || this.actionButtons || this.collapseAction || this.refreshContentAction || this.removeCardAction || this.codeToggler;\n    },\n    hasHeader: function hasHeader() {\n      return this.hasAction || this.title || this.subtitle;\n    },\n    StyleItems: function StyleItems() {\n      return {\n        maxHeight: this.maxHeight\n      };\n    },\n    cardStyles: function cardStyles() {\n      var obj = {\n        maxHeight: this.cardMaxHeight\n      };\n      if (!_assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isColor(this.cardBackground)) obj.background = _assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getColor(this.cardBackground);\n      if (!_assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isColor(this.contentColor)) obj.color = _assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getColor(this.contentColor);\n      return obj;\n    },\n    codeContainerStyles: function codeContainerStyles() {\n      return {\n        maxHeight: this.codeContainerMaxHeight\n      };\n    },\n    cardClasses: function cardClasses() {\n      var str = ''; // Add bg class\n\n      if (_assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isColor(this.cardBackground)) {\n        str += \" bg-\".concat(this.cardBackground);\n      } // add content color\n\n\n      if (_assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isColor(this.contentColor)) {\n        str += \" text-\".concat(this.contentColor);\n      }\n\n      return str.trim();\n    },\n    titleStyles: function titleStyles() {\n      return {\n        color: _assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getColor(this.titleColor)\n      };\n    },\n    titleClasses: function titleClasses() {\n      var str = ''; // add content color\n\n      if (_assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isColor(this.titleColor)) {\n        str += \" text-\".concat(this.titleColor);\n      }\n\n      return str.trim();\n    },\n    subtitleStyles: function subtitleStyles() {\n      var obj = {};\n      if (!_assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isColor(this.subtitleColor)) obj.color = _assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getColor(this.subtitleColor);\n      return obj;\n    },\n    subtitleClasses: function subtitleClasses() {\n      var str = ''; // add content color\n\n      if (_assets_utils_color_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isColor(this.subtitleColor)) {\n        str += \" text-\".concat(this.subtitleColor);\n      }\n\n      return str.trim();\n    }\n  },\n  methods: {\n    toggleContent: function toggleContent() {\n      var _this = this;\n\n      this.$refs.content.style.overflow = \"hidden\";\n      var scrollHeight = this.$refs.content.scrollHeight;\n\n      if (this.maxHeight == '1.5rem') {\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n        setTimeout(function () {\n          _this.maxHeight = 'none';\n          _this.$refs.content.style.overflow = \"hidden\";\n        }, 300);\n      } else {\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n        setTimeout(function () {\n          _this.maxHeight = \"1.5rem\";\n          _this.$refs.content.style.overflow = \"hidden\";\n        }, 50);\n      }\n\n      this.isContentCollapsed = !this.isContentCollapsed;\n      this.$emit(\"toggleCollapse\", this.isContentCollapsed);\n    },\n    refreshcard: function refreshcard() {\n      this.$vs.loading({\n        container: this.$refs.content,\n        scale: 0.5\n      });\n      this.tempHidden = true;\n      this.$emit(\"refresh\", this);\n    },\n    removeRefreshAnimation: function removeRefreshAnimation() {\n      var _this2 = this;\n\n      var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;\n      setTimeout(function () {\n        _this2.$vs.loading.close(_this2.$refs.content);\n\n        _this2.tempHidden = false;\n      }, time);\n    },\n    removeCard: function removeCard() {\n      var _this3 = this;\n\n      var scrollHeight = this.$refs.card.scrollHeight;\n      this.cardMaxHeight = \"\".concat(scrollHeight, \"px\");\n      this.$el.style.overflow = \"hidden\";\n      setTimeout(function () {\n        _this3.cardMaxHeight = \"0px\";\n      }, 50);\n      this.$emit(\"remove\");\n    },\n    toggleCode: function toggleCode() {\n      var _this4 = this;\n\n      this.tempHidden = true;\n      this.showCode = !this.showCode;\n      var scrollHeight = this.$refs.codeContainer.scrollHeight;\n\n      if (this.codeContainerMaxHeight == '0px') {\n        this.codeContainerMaxHeight = \"\".concat(scrollHeight, \"px\");\n        setTimeout(function () {\n          _this4.codeContainerMaxHeight = 'none';\n          _this4.tempHidden = false;\n        }, 300);\n      } else {\n        this.codeContainerMaxHeight = \"\".concat(scrollHeight, \"px\");\n        setTimeout(function () {\n          _this4.codeContainerMaxHeight = \"0px\";\n          _this4.tempHidden = false;\n        }, 150);\n      }\n    }\n  },\n  components: {\n    Prism: vue_prism_component__WEBPACK_IMPORTED_MODULE_1___default.a\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvVnhDYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vVnhDYXJkLnZ1ZT9kMTk1Il0sInNvdXJjZXNDb250ZW50IjpbIjwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBGaWxlIE5hbWU6IFZ4Q2FyZC52dWVcbiAgICBEZXNjcmlwdGlvbjogQ2FyZCBDb21wb25lbnRcbiAgICBDb21wb25lbnQgTmFtZTogVnhDYXJkXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXG4gICAgICBBdXRob3I6IFBpeGludmVudFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbXG4gICAgICAgIHsnb3ZlcmZsb3ctaGlkZGVuJzogdGVtcEhpZGRlbn0sXG4gICAgICAgIHsnbm8tc2hhZG93Jzogbm9TaGFkb3d9LFxuICAgICAgICB7J3JvdW5kZWQtbm9uZSc6IG5vUmFkaXVzfSxcbiAgICAgICAgeydjYXJkLWJvcmRlcic6IGNhcmRCb3JkZXJ9LFxuICAgICAgICBjYXJkQ2xhc3NlcyBdXCIgOnN0eWxlPVwiY2FyZFN0eWxlc1wiIGNsYXNzPVwidngtY2FyZFwiIHJlZj1cImNhcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwidngtY2FyZF9faGVhZGVyXCIgdi1pZj1cImhhc0hlYWRlclwiPlxuXG4gICAgICA8IS0tIGNhcmQgdGl0bGUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtY2FyZF9fdGl0bGVcIj5cbiAgICAgICAgPGg0IDpjbGFzcz1cInRpdGxlQ2xhc3Nlc1wiIDpzdHlsZT1cInRpdGxlU3R5bGVzXCIgdi1pZj1cInRoaXMuJHByb3BzLnRpdGxlXCI+e3sgdGl0bGUgfX08L2g0PlxuICAgICAgICA8aDYgOmNsYXNzPVwic3VidGl0bGVDbGFzc2VzXCIgOnN0eWxlPVwic3VidGl0bGVTdHlsZXNcIiB2LWlmPVwidGhpcy4kcHJvcHMuc3VidGl0bGVcIj57eyBzdWJ0aXRsZSB9fTwvaDY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBjYXJkIGFjdGlvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtY2FyZF9fYWN0aW9uc1wiIHYtaWY9XCJoYXNBY3Rpb25cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbnNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtY2FyZF9fYWN0aW9uLWJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgdi1pZj1cIihhY3Rpb25CdXR0b25zIHx8IGNvbGxhcHNlQWN0aW9uIHx8IHJlZnJlc2hDb250ZW50QWN0aW9uIHx8IHJlbW92ZUNhcmRBY3Rpb24pICYmICFjb2RlVG9nZ2xlclwiPlxuICAgICAgICAgICAgPGZlYXRoZXItaWNvbiA6Y2xhc3M9XCJ7cm90YXRlMTgwOiAhaXNDb250ZW50Q29sbGFwc2VkfVwiIEBjbGljaz1cInRvZ2dsZUNvbnRlbnRcIiBjbGFzcz1cIm1sLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiQ2hldnJvblVwSWNvblwiIHYtaWY9XCJhY3Rpb25CdXR0b25zIHx8IGNvbGxhcHNlQWN0aW9uXCIvPlxuICAgICAgICAgICAgPGZlYXRoZXItaWNvbiBAY2xpY2s9XCJyZWZyZXNoY2FyZFwiIGNsYXNzPVwibWwtNFwiIGljb249XCJSb3RhdGVDd0ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiYWN0aW9uQnV0dG9ucyB8fCByZWZyZXNoQ29udGVudEFjdGlvblwiLz5cbiAgICAgICAgICAgIDxmZWF0aGVyLWljb24gQGNsaWNrPVwicmVtb3ZlQ2FyZFwiIGNsYXNzPVwibWwtNFwiIGljb249XCJYSWNvblwiIHYtaWY9XCJhY3Rpb25CdXR0b25zIHx8IHJlbW92ZUNhcmRBY3Rpb25cIi8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWNhcmRfX2NvZGUtdG9nZ2xlciBzbTpibG9jayBoaWRkZW5cIiB2LWlmPVwiY29kZVRvZ2dsZXIgJiYgIWFjdGlvbkJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxmZWF0aGVyLWljb24gOmNsYXNzPVwieydib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1wcmltYXJ5IGJvcmRlci10LTAgYm9yZGVyLXItMCBib3JkZXItbC0wJzogc2hvd0NvZGV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJDb2RlSWNvblwiPjwvZmVhdGhlci1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiW3tjb2xsYXBzZWQ6IGlzQ29udGVudENvbGxhcHNlZH0sIHsnb3ZlcmZsb3ctaGlkZGVuJzogdGVtcEhpZGRlbn1dXCIgOnN0eWxlPVwiU3R5bGVJdGVtc1wiXG4gICAgICAgICBjbGFzcz1cInZ4LWNhcmRfX2NvbGxhcHNpYmxlLWNvbnRlbnQgdnMtY29uLWxvYWRpbmdfX2NvbnRhaW5lclwiIHJlZj1cImNvbnRlbnRcIj5cblxuICAgICAgPCEtLSBjb250ZW50IHdpdGggbm8gYm9keShubyBwYWRkaW5nKSAtLT5cbiAgICAgIDxzbG90IG5hbWU9XCJuby1ib2R5XCI+PC9zbG90PlxuXG4gICAgICA8IS0tIGNvbnRlbnQgaW5zaWRlIGJvZHkod2l0aCBwYWRkaW5nKSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1jYXJkX19ib2R5XCIgdi1pZj1cInRoaXMuJHNsb3RzLmRlZmF1bHRcIj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gY29udGVudCB3aXRoIG5vIGJvZHkobm8gcGFkZGluZykgLS0+XG4gICAgICA8c2xvdCBuYW1lPVwibm8tYm9keS1ib3R0b21cIj48L3Nsb3Q+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1jYXJkX19mb290ZXJcIiB2LWlmPVwidGhpcy4kc2xvdHMuZm9vdGVyXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwie2NvbGxhcHNlZDogIXNob3dDb2RlfVwiIDpzdHlsZT1cImNvZGVDb250YWluZXJTdHlsZXNcIiBjbGFzcz1cInZ4LWNhcmRfX2NvZGUtY29udGFpbmVyXCJcbiAgICAgICAgIHJlZj1cImNvZGVDb250YWluZXJcIiB2LXNob3c9XCJ0aGlzLiRzbG90cy5jb2RlQ29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29kZS1jb250ZW50XCI+XG4gICAgICAgIDxwcmlzbSA6bGFuZ3VhZ2U9XCJjb2RlTGFuZ3VhZ2VcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiY29kZUNvbnRhaW5lclwiPjwvc2xvdD5cbiAgICAgICAgPC9wcmlzbT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gIGltcG9ydCBQcmlzbSBmcm9tICd2dWUtcHJpc20tY29tcG9uZW50J1xuICBpbXBvcnQgX2NvbG9yIGZyb20gJ0AvYXNzZXRzL3V0aWxzL2NvbG9yLmpzJ1xuXG4gIGV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiAndngtY2FyZCcsXG4gICAgcHJvcHM6IHtcbiAgICAgIHRpdGxlOiBTdHJpbmcsXG4gICAgICBzdWJ0aXRsZTogU3RyaW5nLFxuICAgICAgYWN0aW9uQnV0dG9uczoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhY3Rpb25CdXR0b25zQ29sb3I6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBkZWZhdWx0OiBcInN1Y2Nlc3NcIixcbiAgICAgIH0sXG4gICAgICBjb2RlVG9nZ2xlcjoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBub1NoYWRvdzoge1xuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIH0sXG4gICAgICBub1JhZGl1czoge1xuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIH0sXG4gICAgICBjYXJkQm9yZGVyOiB7XG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgfSxcbiAgICAgIGNvZGVMYW5ndWFnZToge1xuICAgICAgICBkZWZhdWx0OiBcIm1hcmt1cFwiLFxuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICB9LFxuICAgICAgY29sbGFwc2VBY3Rpb246IHtcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICAgIH0sXG4gICAgICByZWZyZXNoQ29udGVudEFjdGlvbjoge1xuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgdHlwZTogQm9vbGVhblxuICAgICAgfSxcbiAgICAgIHJlbW92ZUNhcmRBY3Rpb246IHtcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICAgIH0sXG4gICAgICBoZWFkZXJCYWNrZ3JvdW5kOiB7XG4gICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB0eXBlOiBTdHJpbmdcbiAgICAgIH0sXG4gICAgICAvLyBib2R5QmFja2dyb3VuZDoge1xuICAgICAgLy8gICBkZWZhdWx0OiAnJyxcbiAgICAgIC8vICAgdHlwZTogU3RyaW5nXG4gICAgICAvLyB9LFxuICAgICAgLy8gaGVhZGVyYmFja2dyb3VuZDoge1xuICAgICAgLy8gICBkZWZhdWx0OiAnJyxcbiAgICAgIC8vICAgdHlwZTogU3RyaW5nXG4gICAgICAvLyB9LFxuICAgICAgY2FyZEJhY2tncm91bmQ6IHtcbiAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgfSxcbiAgICAgIGNvbnRlbnRDb2xvcjoge1xuICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgdHlwZTogU3RyaW5nXG4gICAgICB9LFxuICAgICAgdGl0bGVDb2xvcjoge1xuICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgdHlwZTogU3RyaW5nXG4gICAgICB9LFxuICAgICAgc3VidGl0bGVDb2xvcjoge1xuICAgICAgICBkZWZhdWx0OiAnI2I4YzJjYycsXG4gICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgfVxuICAgIH0sXG4gICAgZGF0YSAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0NvbnRlbnRDb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgICBzaG93Q29kZTogZmFsc2UsXG4gICAgICAgIG1heEhlaWdodDogbnVsbCxcbiAgICAgICAgY2FyZE1heEhlaWdodDogbnVsbCxcbiAgICAgICAgY29kZUNvbnRhaW5lck1heEhlaWdodDogJzBweCcsXG4gICAgICAgIHRlbXBIaWRkZW46IGZhbHNlLFxuICAgICAgfVxuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgIGhhc0FjdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzbG90cy5hY3Rpb25zIHx8ICh0aGlzLmFjdGlvbkJ1dHRvbnMgfHwgdGhpcy5jb2xsYXBzZUFjdGlvbiB8fCB0aGlzLnJlZnJlc2hDb250ZW50QWN0aW9uIHx8IHRoaXMucmVtb3ZlQ2FyZEFjdGlvbiB8fCB0aGlzLmNvZGVUb2dnbGVyKVxuICAgICAgfSxcbiAgICAgIGhhc0hlYWRlciAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0FjdGlvbiB8fCAodGhpcy50aXRsZSB8fCB0aGlzLnN1YnRpdGxlKVxuICAgICAgfSxcbiAgICAgIFN0eWxlSXRlbXMgKCkge1xuICAgICAgICByZXR1cm4ge21heEhlaWdodDogdGhpcy5tYXhIZWlnaHR9XG4gICAgICB9LFxuICAgICAgY2FyZFN0eWxlcyAoKSB7XG4gICAgICAgIGxldCBvYmogPSB7bWF4SGVpZ2h0OiB0aGlzLmNhcmRNYXhIZWlnaHR9XG4gICAgICAgIGlmICghX2NvbG9yLmlzQ29sb3IodGhpcy5jYXJkQmFja2dyb3VuZCkpIG9iai5iYWNrZ3JvdW5kID0gX2NvbG9yLmdldENvbG9yKHRoaXMuY2FyZEJhY2tncm91bmQpXG4gICAgICAgIGlmICghX2NvbG9yLmlzQ29sb3IodGhpcy5jb250ZW50Q29sb3IpKSBvYmouY29sb3IgPSBfY29sb3IuZ2V0Q29sb3IodGhpcy5jb250ZW50Q29sb3IpXG4gICAgICAgIHJldHVybiBvYmpcbiAgICAgIH0sXG4gICAgICBjb2RlQ29udGFpbmVyU3R5bGVzICgpIHtcbiAgICAgICAgcmV0dXJuIHttYXhIZWlnaHQ6IHRoaXMuY29kZUNvbnRhaW5lck1heEhlaWdodH1cbiAgICAgIH0sXG4gICAgICBjYXJkQ2xhc3NlcyAoKSB7XG4gICAgICAgIGxldCBzdHIgPSAnJztcblxuICAgICAgICAvLyBBZGQgYmcgY2xhc3NcbiAgICAgICAgaWYgKF9jb2xvci5pc0NvbG9yKHRoaXMuY2FyZEJhY2tncm91bmQpKSB7XG4gICAgICAgICAgc3RyICs9IGAgYmctJHt0aGlzLmNhcmRCYWNrZ3JvdW5kfWBcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFkZCBjb250ZW50IGNvbG9yXG4gICAgICAgIGlmIChfY29sb3IuaXNDb2xvcih0aGlzLmNvbnRlbnRDb2xvcikpIHtcbiAgICAgICAgICBzdHIgKz0gYCB0ZXh0LSR7dGhpcy5jb250ZW50Q29sb3J9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0ci50cmltKClcbiAgICAgIH0sXG4gICAgICB0aXRsZVN0eWxlcyAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29sb3I6IF9jb2xvci5nZXRDb2xvcih0aGlzLnRpdGxlQ29sb3IpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0aXRsZUNsYXNzZXMgKCkge1xuICAgICAgICBsZXQgc3RyID0gJyc7XG5cbiAgICAgICAgLy8gYWRkIGNvbnRlbnQgY29sb3JcbiAgICAgICAgaWYgKF9jb2xvci5pc0NvbG9yKHRoaXMudGl0bGVDb2xvcikpIHtcbiAgICAgICAgICBzdHIgKz0gYCB0ZXh0LSR7dGhpcy50aXRsZUNvbG9yfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHIudHJpbSgpXG4gICAgICB9LFxuICAgICAgc3VidGl0bGVTdHlsZXMgKCkge1xuICAgICAgICBsZXQgb2JqID0ge31cbiAgICAgICAgaWYgKCFfY29sb3IuaXNDb2xvcih0aGlzLnN1YnRpdGxlQ29sb3IpKSBvYmouY29sb3IgPSBfY29sb3IuZ2V0Q29sb3IodGhpcy5zdWJ0aXRsZUNvbG9yKVxuXG4gICAgICAgIHJldHVybiBvYmpcbiAgICAgIH0sXG4gICAgICBzdWJ0aXRsZUNsYXNzZXMgKCkge1xuICAgICAgICBsZXQgc3RyID0gJyc7XG5cbiAgICAgICAgLy8gYWRkIGNvbnRlbnQgY29sb3JcbiAgICAgICAgaWYgKF9jb2xvci5pc0NvbG9yKHRoaXMuc3VidGl0bGVDb2xvcikpIHtcbiAgICAgICAgICBzdHIgKz0gYCB0ZXh0LSR7dGhpcy5zdWJ0aXRsZUNvbG9yfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHIudHJpbSgpXG4gICAgICB9LFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgdG9nZ2xlQ29udGVudCAoKSB7XG4gICAgICAgIHRoaXMuJHJlZnMuY29udGVudC5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG4gICAgICAgIGxldCBzY3JvbGxIZWlnaHQgPSB0aGlzLiRyZWZzLmNvbnRlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgIGlmICh0aGlzLm1heEhlaWdodCA9PSAnMS41cmVtJykge1xuICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSAnbm9uZSc7XG4gICAgICAgICAgICB0aGlzLiRyZWZzLmNvbnRlbnQuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgICAgICAgIH0sIDMwMClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IGAke3Njcm9sbEhlaWdodH1weGBcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gYDEuNXJlbWA7XG4gICAgICAgICAgICB0aGlzLiRyZWZzLmNvbnRlbnQuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgICAgICAgIH0sIDUwKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNDb250ZW50Q29sbGFwc2VkID0gIXRoaXMuaXNDb250ZW50Q29sbGFwc2VkO1xuICAgICAgICB0aGlzLiRlbWl0KFwidG9nZ2xlQ29sbGFwc2VcIiwgdGhpcy5pc0NvbnRlbnRDb2xsYXBzZWQpO1xuICAgICAgfSxcbiAgICAgIHJlZnJlc2hjYXJkICgpIHtcbiAgICAgICAgdGhpcy4kdnMubG9hZGluZyh7XG4gICAgICAgICAgY29udGFpbmVyOiB0aGlzLiRyZWZzLmNvbnRlbnQsXG4gICAgICAgICAgc2NhbGU6IDAuNSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGVtcEhpZGRlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuJGVtaXQoXCJyZWZyZXNoXCIsIHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZVJlZnJlc2hBbmltYXRpb24gKHRpbWUgPSAxMDApIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4kdnMubG9hZGluZy5jbG9zZSh0aGlzLiRyZWZzLmNvbnRlbnQpXG4gICAgICAgICAgdGhpcy50ZW1wSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH0sIHRpbWUpXG4gICAgICB9LFxuICAgICAgcmVtb3ZlQ2FyZCAoKSB7XG4gICAgICAgIGxldCBzY3JvbGxIZWlnaHQgPSB0aGlzLiRyZWZzLmNhcmQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgIHRoaXMuY2FyZE1heEhlaWdodCA9IGAke3Njcm9sbEhlaWdodH1weGBcbiAgICAgICAgdGhpcy4kZWwuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNhcmRNYXhIZWlnaHQgPSBgMHB4YFxuICAgICAgICB9LCA1MClcbiAgICAgICAgdGhpcy4kZW1pdChcInJlbW92ZVwiKTtcbiAgICAgIH0sXG4gICAgICB0b2dnbGVDb2RlICgpIHtcbiAgICAgICAgdGhpcy50ZW1wSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93Q29kZSA9ICF0aGlzLnNob3dDb2RlO1xuICAgICAgICBsZXQgc2Nyb2xsSGVpZ2h0ID0gdGhpcy4kcmVmcy5jb2RlQ29udGFpbmVyLnNjcm9sbEhlaWdodFxuICAgICAgICBpZiAodGhpcy5jb2RlQ29udGFpbmVyTWF4SGVpZ2h0ID09ICcwcHgnKSB7XG4gICAgICAgICAgdGhpcy5jb2RlQ29udGFpbmVyTWF4SGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb2RlQ29udGFpbmVyTWF4SGVpZ2h0ID0gJ25vbmUnXG4gICAgICAgICAgICB0aGlzLnRlbXBIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICB9LCAzMDApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb2RlQ29udGFpbmVyTWF4SGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb2RlQ29udGFpbmVyTWF4SGVpZ2h0ID0gYDBweGBcbiAgICAgICAgICAgIHRoaXMudGVtcEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgIH0sIDE1MClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgIFByaXNtLFxuICAgIH1cbiAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuICBAaW1wb3J0IFwiQC9hc3NldHMvc2Nzcy92dWVzYXgvY29tcG9uZW50cy92eENhcmQuc2Nzc1wiO1xuPC9zdHlsZT5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFuRUE7QUF3RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhFQTtBQWtFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNURBO0FBOERBO0FBQ0E7QUFEQTtBQXBOQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheFooter.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/TheFooter.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: \"the-footer\",\n  data: function data() {\n    return {\n      websiteUrl: \"https://geotechnics.coding.al/#/\"\n    };\n  },\n  props: {\n    classes: {\n      type: String\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy9UaGVGb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9UaGVGb290ZXIudnVlPzYwNWQiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxmb290ZXIgOmNsYXNzPVwiY2xhc3Nlc1wiIGNsYXNzPVwidGhlLWZvb3RlciBmbGV4LXdyYXAganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgdy0xLzNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiXCI+Q09QWVJJR0hUICZjb3B5OyB7eyBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtY29sIHctMS8zIHRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiXCI+Rm9yIG1vcmUgaW5mbyBjaGVjayBvdXQgb3VyIDxhIDpocmVmPVwid2Vic2l0ZVVybFwiIHRhcmdldD1cIl9ibGFua1wiPndlYnNpdGU8L2E+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIG5hbWU6IFwidGhlLWZvb3RlclwiLFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgd2Vic2l0ZVVybDogcHJvY2Vzcy5lbnYuVlVFX0FQUF9XRUJfVVJMLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNsYXNzZXM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFEQTtBQVBBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheFooter.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheNavbar.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/TheNavbar.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-perfect-scrollbar */ \"./node_modules/vue-perfect-scrollbar/dist/index.js\");\n/* harmony import */ var vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var vuedraggable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuedraggable */ \"./node_modules/vuedraggable/dist/vuedraggable.common.js\");\n/* harmony import */ var vuedraggable__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(vuedraggable__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: \"the-navbar\",\n  props: {\n    navbarColor: {\n      type: String,\n      default: \"#fff\"\n    }\n  },\n  data: function data() {\n    return {\n      showFullSearch: false,\n      settings: {\n        maxScrollbarLength: 60,\n        wheelSpeed: .60\n      },\n      autoFocusSearch: false,\n      showBookmarkPagesDropdown: false\n    };\n  },\n  watch: {\n    '$route': function $route() {\n      if (this.showBookmarkPagesDropdown) this.showBookmarkPagesDropdown = false;\n    }\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_10__[\"mapGetters\"])({\n    userData: 'userData'\n  }), {\n    sidebarWidth: function sidebarWidth() {\n      return this.$store.state.sidebarWidth;\n    },\n    breakpoint: function breakpoint() {\n      return this.$store.state.breakpoint;\n    },\n    // NAVBAR STYLE\n    classObj: function classObj() {\n      if (this.sidebarWidth === \"default\") return \"navbar-default\";else if (this.sidebarWidth === \"reduced\") return \"navbar-reduced\";else if (this.sidebarWidth) return \"navbar-full\";\n    },\n    starredPages: function starredPages() {\n      return this.$store.state.starredPages;\n    },\n    starredPagesLimited: {\n      get: function get() {\n        return this.starredPages.slice(0, 10);\n      },\n      set: function set(list) {\n        this.$store.dispatch('arrangeStarredPagesLimited', list);\n      }\n    },\n    starredPagesMore: {\n      get: function get() {\n        return this.starredPages.slice(10);\n      },\n      set: function set(list) {\n        this.$store.dispatch('arrangeStarredPagesMore', list);\n      }\n    },\n    user_displayName: function user_displayName() {\n      return this.userData && this.userData.fullName;\n    },\n    activeUserImg: function activeUserImg() {\n      return this.userData && this.userData.avatar;\n    }\n  }),\n  methods: {\n    showSidebar: function showSidebar() {\n      this.$store.commit('TOGGLE_IS_SIDEBAR_ACTIVE', true);\n    },\n    actionClicked: function actionClicked(item) {\n      this.$store.dispatch('updateStarredPage', {\n        index: item.index,\n        val: !item.highlightAction\n      });\n    },\n    logout: function logout() {\n      var _this = this;\n\n      this.$store.dispatch('logout').then(function () {\n        _this.$router.push({\n          name: 'Login'\n        });\n      });\n    }\n  },\n  components: {\n    VuePerfectScrollbar: vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_8___default.a,\n    draggable: vuedraggable__WEBPACK_IMPORTED_MODULE_9___default.a\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy9UaGVOYXZiYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9UaGVOYXZiYXIudnVlPzQzYzciXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtbmF2YmFyLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDx2cy1uYXZiYXIgOmNsYXNzPVwiY2xhc3NPYmpcIiA6Y29sb3I9XCJuYXZiYXJDb2xvclwiIGNsYXNzPVwidngtbmF2YmFyIG5hdmJhci1jdXN0b21cIj5cblxuICAgICAgICAgICAgICAgIDwhLS0gU00gLSBPUEVOIFNJREVCQVIgQlVUVE9OIC0tPlxuICAgICAgICAgICAgICAgIDxmZWF0aGVyLWljb24gQGNsaWNrLnN0b3A9XCJzaG93U2lkZWJhclwiIGNsYXNzPVwic206aW5saW5lLWZsZXggeGw6aGlkZGVuIGN1cnNvci1wb2ludGVyIG1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cIk1lbnVJY29uXCI+PC9mZWF0aGVyLWljb24+XG4gICAgICAgICAgICAgICAgPHZzLXNwYWNlci8+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFVTRVIgTUVUQSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlLW5hdmJhcl9fdXNlci1tZXRhIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0IGxlYWRpbmctdGlnaHQgaGlkZGVuIHNtOmJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj57eyB1c2VyX2Rpc3BsYXlOYW1lIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLWRyb3Bkb3duIHZzLWN1c3RvbS1jb250ZW50IHZzLXRyaWdnZXItY2xpY2sgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbi1pbWcgbWwtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcga2V5PVwib25saW5lSW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzcmM9XCJhY3RpdmVVc2VySW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInVzZXItaW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWZ1bGwgc2hhZG93LW1kIGN1cnNvci1wb2ludGVyIGJsb2NrIGdnLWltYWdlLWNvdmVyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtZHJvcGRvd24tbWVudSBjbGFzcz1cInZ4LW5hdmJhci1kcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT1cIm1pbi13aWR0aDogMTVyZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZmxleCBweS0yIHB4LTQgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctcHJpbWFyeSBob3Zlcjp0ZXh0LXdoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cIiRyb3V0ZXIucHVzaCh7bmFtZTogJ1Byb2ZpbGUnfSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZWF0aGVyLWljb24gaWNvbj1cIlVzZXJJY29uXCIgc3ZnQ2xhc3Nlcz1cInctNCBoLTRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTIgdy1mdWxsIHRleHQtcmlnaHRcIj5Qcm9maWxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImZsZXggcHktMiBweC00IGN1cnNvci1wb2ludGVyIGhvdmVyOmJnLXByaW1hcnkgaG92ZXI6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCIkcm91dGVyLnB1c2goe25hbWU6ICdDaGFuZ2VQYXNzd29yZCd9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlYXRoZXItaWNvbiBpY29uPVwiTG9ja0ljb25cIiBzdmdDbGFzc2VzPVwidy00IGgtNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMiB3LWZ1bGwgdGV4dC1yaWdodFwiPkNoYW5nZSBwYXNzd29yZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtZGl2aWRlciBjbGFzcz1cIm0tMVwiPjwvdnMtZGl2aWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJmbGV4IHB5LTIgcHgtNCBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1wcmltYXJ5IGhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwibG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVhdGhlci1pY29uIGljb249XCJMb2dPdXRJY29uXCIgc3ZnQ2xhc3Nlcz1cInctNCBoLTRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTIgdy1mdWxsIHRleHQtcmlnaHRcIj5Mb2dvdXQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtZHJvcGRvd24tbWVudT5cbiAgICAgICAgICAgICAgICAgICAgPC92cy1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC92cy1uYXZiYXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQgVnVlUGVyZmVjdFNjcm9sbGJhciBmcm9tICd2dWUtcGVyZmVjdC1zY3JvbGxiYXInO1xuICAgIGltcG9ydCBkcmFnZ2FibGUgZnJvbSAndnVlZHJhZ2dhYmxlJztcbiAgICBpbXBvcnQge21hcEdldHRlcnN9IGZyb20gJ3Z1ZXgnO1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBuYW1lOiBcInRoZS1uYXZiYXJcIixcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIG5hdmJhckNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFwiI2ZmZlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YSAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3dGdWxsU2VhcmNoOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgICAgICAgICBtYXhTY3JvbGxiYXJMZW5ndGg6IDYwLFxuICAgICAgICAgICAgICAgICAgICB3aGVlbFNwZWVkOiAuNjAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXNTZWFyY2g6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNob3dCb29rbWFya1BhZ2VzRHJvcGRvd246IGZhbHNlLFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgJyRyb3V0ZScgKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dCb29rbWFya1BhZ2VzRHJvcGRvd24pIHRoaXMuc2hvd0Jvb2ttYXJrUGFnZXNEcm9wZG93biA9IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAvLyBIRUxQRVJcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgICAgIHVzZXJEYXRhOiAndXNlckRhdGEnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNpZGViYXJXaWR0aCAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLnNpZGViYXJXaWR0aDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBicmVha3BvaW50ICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuYnJlYWtwb2ludDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vIE5BVkJBUiBTVFlMRVxuICAgICAgICAgICAgY2xhc3NPYmogKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNpZGViYXJXaWR0aCA9PT0gXCJkZWZhdWx0XCIpIHJldHVybiBcIm5hdmJhci1kZWZhdWx0XCI7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zaWRlYmFyV2lkdGggPT09IFwicmVkdWNlZFwiKSByZXR1cm4gXCJuYXZiYXItcmVkdWNlZFwiO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2lkZWJhcldpZHRoKSByZXR1cm4gXCJuYXZiYXItZnVsbFwiO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RhcnJlZFBhZ2VzICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuc3RhcnJlZFBhZ2VzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXJyZWRQYWdlc0xpbWl0ZWQ6IHtcbiAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFycmVkUGFnZXMuc2xpY2UoMCwgMTApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0IChsaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhcnJhbmdlU3RhcnJlZFBhZ2VzTGltaXRlZCcsIGxpc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGFycmVkUGFnZXNNb3JlOiB7XG4gICAgICAgICAgICAgICAgZ2V0ICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnJlZFBhZ2VzLnNsaWNlKDEwKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldCAobGlzdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYXJyYW5nZVN0YXJyZWRQYWdlc01vcmUnLCBsaXN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1c2VyX2Rpc3BsYXlOYW1lICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyRGF0YSAmJiB0aGlzLnVzZXJEYXRhLmZ1bGxOYW1lO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZVVzZXJJbWcgKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVzZXJEYXRhICYmIHRoaXMudXNlckRhdGEuYXZhdGFyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICBzaG93U2lkZWJhciAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdUT0dHTEVfSVNfU0lERUJBUl9BQ1RJVkUnLCB0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3Rpb25DbGlja2VkIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJyZWRQYWdlJywge2luZGV4OiBpdGVtLmluZGV4LCB2YWw6ICFpdGVtLmhpZ2hsaWdodEFjdGlvbn0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvZ291dCAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2xvZ291dCcpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7bmFtZTogJ0xvZ2luJ30pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgIFZ1ZVBlcmZlY3RTY3JvbGxiYXIsXG4gICAgICAgICAgICBkcmFnZ2FibGVcbiAgICAgICAgfSxcbiAgICB9XG48L3NjcmlwdD5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3REE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFHQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVDQTtBQThDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQVhBO0FBYUE7QUFDQTtBQUNBO0FBRkE7QUFuRkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheNavbar.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=script&lang=js&":
/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=script&lang=js& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es6_array_reduce__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es6.array.reduce */ \"./node_modules/core-js/modules/es6.array.reduce.js\");\n/* harmony import */ var core_js_modules_es6_array_reduce__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_reduce__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vue-perfect-scrollbar */ \"./node_modules/vue-perfect-scrollbar/dist/index.js\");\n/* harmony import */ var vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _VxSidebarGroup_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./VxSidebarGroup.vue */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue\");\n/* harmony import */ var _VxSidebarItem_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./VxSidebarItem.vue */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue\");\n/* harmony import */ var _services_AuthService__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../services/AuthService */ \"./src/modules/common/services/AuthService.js\");\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'vx-sidebar',\n  props: {\n    sidebarItems: {\n      type: Array,\n      required: true\n    },\n    title: {\n      type: String\n    },\n    logo: {\n      type: String\n    },\n    parent: {\n      type: String\n    },\n    openGroupHover: {\n      type: Boolean,\n      default: false\n    },\n    reduceNotRebound: {\n      type: Boolean,\n      default: true\n    }\n  },\n  data: function data() {\n    return {\n      clickNotClose: false,\n      // disable close sidebar on outside click\n      reduce: false,\n      // determines if sidebar is reduce - component property\n      showCloseButton: false,\n      // show close button in smaller devices\n      isMouseEnter: false,\n      settings: {\n        // perfectscrollbar settings\n        maxScrollbarLength: 60,\n        wheelSpeed: 1,\n        swipeEasing: true\n      },\n      windowWidth: window.innerWidth,\n      //width of windows\n      showShadowBottom: false\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_9__[\"mapGetters\"])({\n    counters: 'counters'\n  }), {\n    isSidebarActive: {\n      get: function get() {\n        return this.$store.state.isSidebarActive;\n      },\n      set: function set(val) {\n        this.$store.commit('TOGGLE_IS_SIDEBAR_ACTIVE', val);\n      }\n    },\n    reduceSidebar: function reduceSidebar() {\n      return Boolean(this.reduce && this.reduceButton);\n    },\n    reduceButton: {\n      get: function get() {\n        return this.$store.state.reduceButton;\n      },\n      set: function set(val) {\n        this.$store.commit('TOGGLE_REDUCE_BUTTON', val);\n      }\n    },\n    sidebarItemsMin: function sidebarItemsMin() {\n      return this.$store.state.sidebarItemsMin;\n    },\n    isGroupActive: function isGroupActive() {\n      var _this = this;\n\n      return function (sidebarItem) {\n        var path = _this.$route.fullPath;\n        var open = false;\n\n        var func = function func(sidebarItem) {\n          if (sidebarItem.submenu) {\n            sidebarItem.submenu.forEach(function (item) {\n              if (path === item.url) {\n                open = true;\n              } else if (item.submenu) {\n                func(item);\n              }\n            });\n          }\n        };\n\n        func(sidebarItem);\n        return open;\n      };\n    }\n  }),\n  watch: {\n    reduce: function reduce(val) {\n      if (val) {\n        this.$store['dispatch']('updateSidebarWidth', 'reduced');\n      } else {\n        this.$store['dispatch']('updateSidebarWidth', 'default');\n      }\n\n      setTimeout(function () {\n        window.dispatchEvent(new Event('resize'));\n      }, 100);\n    },\n    reduceButton: function reduceButton() {\n      this.setSidebarWidth();\n    },\n    '$route': function $route() {\n      if (this.isSidebarActive && this.showCloseButton) this.$store.commit('TOGGLE_IS_SIDEBAR_ACTIVE', false);\n    }\n  },\n  methods: {\n    sidebarMouseEntered: function sidebarMouseEntered() {\n      if (this.reduce) this.$store.commit('UPDATE_SIDEBAR_ITEMS_MIN', false);\n      this.isMouseEnter = true;\n    },\n    sidebarMouseLeave: function sidebarMouseLeave() {\n      if (this.reduce) {\n        this.$store.commit('UPDATE_SIDEBAR_ITEMS_MIN', true);\n      }\n\n      this.isMouseEnter = false;\n    },\n    toggleReduce: function toggleReduce(val) {\n      this.reduceButton = val;\n      this.setSidebarWidth();\n    },\n    handleWindowResize: function handleWindowResize(event) {\n      this.windowWidth = event.currentTarget.innerWidth;\n      this.setSidebarWidth();\n    },\n    setSidebarWidth: function setSidebarWidth() {\n      if (this.windowWidth < 1200) {\n        if (this.windowWidth < 992) this.$store.commit('UPDATE_WINDOW_BREAKPOINT', 'md');else this.$store.commit('UPDATE_WINDOW_BREAKPOINT', 'lg');\n        this.$store.commit('TOGGLE_IS_SIDEBAR_ACTIVE', false);\n        if (this.reduceButton) this.reduce = false;\n        this.showCloseButton = true;\n        this.clickNotClose = false;\n        this.$store['dispatch']('updateSidebarWidth', 'no-sidebar');\n        this.$store.commit('UPDATE_SIDEBAR_ITEMS_MIN', false);\n      } else {\n        this.$store.commit('UPDATE_WINDOW_BREAKPOINT', 'xl');\n        this.reduce = !!this.reduceButton;\n        this.$store.commit('TOGGLE_IS_SIDEBAR_ACTIVE', true);\n        if (this.reduceButton && !this.isMouseEnter) this.$store.commit('UPDATE_SIDEBAR_ITEMS_MIN', true);else this.$store.commit('UPDATE_SIDEBAR_ITEMS_MIN', false);\n        this.clickNotClose = true;\n        this.showCloseButton = false;\n        if (this.reduceSidebar) this.$store['dispatch']('updateSidebarWidth', 'reduced');else this.$store['dispatch']('updateSidebarWidth', 'default');\n      }\n    },\n    psSectionScroll: function psSectionScroll() {\n      this.showShadowBottom = this.$refs.mainSidebarPs.$el.scrollTop > 0;\n    },\n    onSwipeLeft: function onSwipeLeft() {\n      if (this.isSidebarActive && this.showCloseButton) this.isSidebarActive = false;\n    },\n    onSwipeRightSidebarSwipeArea: function onSwipeRightSidebarSwipeArea() {\n      if (!this.isSidebarActive && this.showCloseButton) this.isSidebarActive = true;\n    },\n    hasRole: function hasRole(roles) {\n      if (!roles) {\n        return true;\n      }\n\n      var hasRole = false;\n      roles.forEach(function (role) {\n        if (_services_AuthService__WEBPACK_IMPORTED_MODULE_13__[\"default\"].hasRole(role)) {\n          hasRole = true;\n        }\n      });\n      return hasRole;\n    }\n  },\n  components: {\n    VxSidebarGroup: _VxSidebarGroup_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n    VxSidebarItem: _VxSidebarItem_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n    VuePerfectScrollbar: vue_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_10___default.a\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    this.$nextTick(function () {\n      window.addEventListener('resize', _this2.handleWindowResize);\n    });\n    this.setSidebarWidth();\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.removeEventListener('resize', this.handleWindowResize);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL1Z4U2lkZWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL1Z4U2lkZWJhci52dWU/MDQ0MCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cInBhcmVudHhcIj5cbiAgICAgICAgPHZzLXNpZGViYXIgOmNsaWNrLW5vdC1jbG9zZT1cImNsaWNrTm90Q2xvc2VcIiA6aGlkZGVuQmFja2dyb3VuZD1cImNsaWNrTm90Q2xvc2VcIiA6cGFyZW50PVwicGFyZW50XCIgOnJlZHVjZT1cInJlZHVjZVwiXG4gICAgICAgICAgICAgICAgICAgIDpyZWR1Y2Utbm90LXJlYm91bmQ9XCJyZWR1Y2VOb3RSZWJvdW5kXCIgY2xhc3M9XCJzaWRlYmFyeCBtYWluLW1lbnUtc2lkZWJhciBpdGVtcy1uby1wYWRkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdC1pbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgcmVmPVwibWFpblNpZGViYXJcIiB2LWhhbW1lcjpzd2lwZS5sZWZ0PVwib25Td2lwZUxlZnRcIiB2LW1vZGVsPVwiaXNTaWRlYmFyQWN0aXZlXCI+XG4gICAgICAgICAgICA8ZGl2IEBtb3VzZWVudGVyPVwic2lkZWJhck1vdXNlRW50ZXJlZFwiIEBtb3VzZWxlYXZlPVwic2lkZWJhck1vdXNlTGVhdmVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXNpZGViYXIgZmxleCBpdGVtcy1lbmQganVzdGlmeS1iZXR3ZWVuXCIgc2xvdD1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9nbyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyA6c3JjPVwibG9nb1wiIGFsdD1cImxvZ29cIiBjbGFzcz1cIm0tMCBwLTBcIiB2LWlmPVwibG9nb1wiIGhlaWdodD1cIjM1cHhcIj5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvZ28tdGV4dFwiIHYtaWY9XCJ0aXRsZVwiIHYtc2hvdz1cImlzTW91c2VFbnRlciB8fCAhcmVkdWNlXCI+e3sgdGl0bGUgfX08L3NwYW4+LS0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzaG93Q2xvc2VCdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVhdGhlci1pY29uIEBjbGljaz1cIiRzdG9yZS5jb21taXQoJ1RPR0dMRV9JU19TSURFQkFSX0FDVElWRScsIGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiWEljb25cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGFkb3ctYm90dG9tXCIgdi1zaG93PVwic2hvd1NoYWRvd0JvdHRvbVwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPFZ1ZVBlcmZlY3RTY3JvbGxiYXIgOnNldHRpbmdzPVwic2V0dGluZ3NcIiBAcHMtc2Nyb2xsLXk9XCJwc1NlY3Rpb25TY3JvbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciBwdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9XCJtYWluU2lkZWJhclBzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihzaWRlYmFySXRlbSwgaW5kZXgpIGluIHNpZGViYXJJdGVtc1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImhhc1JvbGUoc2lkZWJhckl0ZW0ucm9sZXMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBHUk9VUCBJVEVNIEhFQURFUiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA6a2V5PVwiYGhlYWRlci0ke2luZGV4fWBcIiBjbGFzcz1cIm5hdmlnYXRpb24taGVhZGVyIHRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwic2lkZWJhckl0ZW0uaGVhZGVyICYmICFzaWRlYmFySXRlbXNNaW5cIj57eyBzaWRlYmFySXRlbS5pMThuIHx8IHNpZGViYXJJdGVtLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwiIXNpZGViYXJJdGVtLmhlYWRlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSUYgSVQnUyBTSU5HTEUgSVRFTSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZ4LXNpZGViYXItaXRlbSA6aHJlZj1cInNpZGViYXJJdGVtLnNsdWcgPT09ICdleHRlcm5hbCcgPyBzaWRlYmFySXRlbS51cmwgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmljb249XCJzaWRlYmFySXRlbS5pY29uXCIgOmluZGV4PVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppc0Rpc2FibGVkPVwic2lkZWJhckl0ZW0uaXNEaXNhYmxlZFwiIDprZXk9XCJgc2lkZWJhckl0ZW0tJHtpbmRleH1gXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2x1Zz1cInNpZGViYXJJdGVtLnNsdWdcIiA6dGFyZ2V0PVwic2lkZWJhckl0ZW0udGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dG89XCJzaWRlYmFySXRlbS5zbHVnICE9PSAnZXh0ZXJuYWwnID8gc2lkZWJhckl0ZW0udXJsIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj1cInNpZGViYXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiIXNpZGViYXJJdGVtLnN1Ym1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIiB2LXNob3c9XCIhc2lkZWJhckl0ZW1zTWluXCI+e3sgc2lkZWJhckl0ZW0uaTE4biB8fCBzaWRlYmFySXRlbS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWNoaXAgOmNvbG9yPVwic2lkZWJhckl0ZW0udGFnQ29sb3JcIiBjbGFzcz1cIm1sLWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIihzaWRlYmFySXRlbS50YWcgfHwgKHNpZGViYXJJdGVtLnRhZ1ZhbHVlICYmIGNvdW50ZXJzW3NpZGViYXJJdGVtLnRhZ1ZhbHVlXSkpICYmIChpc01vdXNlRW50ZXIgfHwgIXJlZHVjZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwic2lkZWJhckl0ZW0udGFnVmFsdWVcIj57eyBjb3VudGVyc1tzaWRlYmFySXRlbS50YWdWYWx1ZV0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cInNpZGViYXJJdGVtLnRhZ1wiPnt7IHNpZGViYXJJdGVtLnRhZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92eC1zaWRlYmFyLWl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJRiBIQVZFIFNVQk1FTlUgLyBEUk9QRE9XTiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2eC1zaWRlYmFyLWdyb3VwIDpncm91cD1cInNpZGViYXJJdGVtXCIgOmdyb3VwSW5kZXg9XCJpbmRleFwiIDprZXk9XCJgZ3JvdXAtJHtpbmRleH1gXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpvcGVuPVwiaXNHcm91cEFjdGl2ZShzaWRlYmFySXRlbSlcIiA6b3BlbkhvdmVyPVwib3Blbkdyb3VwSG92ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPVwic2lkZWJhckdycFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L1Z1ZVBlcmZlY3RTY3JvbGxiYXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92cy1zaWRlYmFyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1zd2lwZS1hcmVhXCIgaWQ9XCJzaWRlYmFyLXN3aXBlLWFyZWFcIiB2LWhhbW1lcjpzd2lwZS5yaWdodD1cIm9uU3dpcGVSaWdodFNpZGViYXJTd2lwZUFyZWFcIlxuICAgICAgICAgICAgIHYtaWY9XCIhaXNTaWRlYmFyQWN0aXZlXCI+PC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVyc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IFZ1ZVBlcmZlY3RTY3JvbGxiYXIgZnJvbSAndnVlLXBlcmZlY3Qtc2Nyb2xsYmFyJ1xuICAgIGltcG9ydCBWeFNpZGViYXJHcm91cCBmcm9tICcuL1Z4U2lkZWJhckdyb3VwLnZ1ZSdcbiAgICBpbXBvcnQgVnhTaWRlYmFySXRlbSBmcm9tICcuL1Z4U2lkZWJhckl0ZW0udnVlJ1xuICAgIGltcG9ydCBBdXRoU2VydmljZSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvQXV0aFNlcnZpY2VcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgbmFtZTogJ3Z4LXNpZGViYXInLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgc2lkZWJhckl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nbzoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmVudDoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wZW5Hcm91cEhvdmVyOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZHVjZU5vdFJlYm91bmQ6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6ICgpID0+ICh7XG4gICAgICAgICAgICBjbGlja05vdENsb3NlOiBmYWxzZSwgLy8gZGlzYWJsZSBjbG9zZSBzaWRlYmFyIG9uIG91dHNpZGUgY2xpY2tcbiAgICAgICAgICAgIHJlZHVjZTogZmFsc2UsIC8vIGRldGVybWluZXMgaWYgc2lkZWJhciBpcyByZWR1Y2UgLSBjb21wb25lbnQgcHJvcGVydHlcbiAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogZmFsc2UsIC8vIHNob3cgY2xvc2UgYnV0dG9uIGluIHNtYWxsZXIgZGV2aWNlc1xuICAgICAgICAgICAgaXNNb3VzZUVudGVyOiBmYWxzZSxcbiAgICAgICAgICAgIHNldHRpbmdzOiB7IC8vIHBlcmZlY3RzY3JvbGxiYXIgc2V0dGluZ3NcbiAgICAgICAgICAgICAgICBtYXhTY3JvbGxiYXJMZW5ndGg6IDYwLFxuICAgICAgICAgICAgICAgIHdoZWVsU3BlZWQ6IDEsXG4gICAgICAgICAgICAgICAgc3dpcGVFYXNpbmc6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3aW5kb3dXaWR0aDogd2luZG93LmlubmVyV2lkdGgsIC8vd2lkdGggb2Ygd2luZG93c1xuICAgICAgICAgICAgc2hvd1NoYWRvd0JvdHRvbTogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgY291bnRlcnM6ICdjb3VudGVycydcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaXNTaWRlYmFyQWN0aXZlOiB7XG4gICAgICAgICAgICAgICAgZ2V0ICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLmlzU2lkZWJhckFjdGl2ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0ICh2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdUT0dHTEVfSVNfU0lERUJBUl9BQ1RJVkUnLCB2YWwpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZHVjZVNpZGViYXIgKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMucmVkdWNlICYmIHRoaXMucmVkdWNlQnV0dG9uKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZHVjZUJ1dHRvbjoge1xuICAgICAgICAgICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5yZWR1Y2VCdXR0b247XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXQgKHZhbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ1RPR0dMRV9SRURVQ0VfQlVUVE9OJywgdmFsKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaWRlYmFySXRlbXNNaW4gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5zaWRlYmFySXRlbXNNaW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNHcm91cEFjdGl2ZSAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChzaWRlYmFySXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gdGhpcy4kcm91dGUuZnVsbFBhdGg7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmdW5jID0gZnVuY3Rpb24gKHNpZGViYXJJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lkZWJhckl0ZW0uc3VibWVudSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGViYXJJdGVtLnN1Ym1lbnUuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0aCA9PT0gaXRlbS51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW4gPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5zdWJtZW51KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBmdW5jKHNpZGViYXJJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgcmVkdWNlICh2YWwpIHtcblxuICAgICAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmVbJ2Rpc3BhdGNoJ10oJ3VwZGF0ZVNpZGViYXJXaWR0aCcsICdyZWR1Y2VkJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmVbJ2Rpc3BhdGNoJ10oJ3VwZGF0ZVNpZGViYXJXaWR0aCcsICdkZWZhdWx0Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVkdWNlQnV0dG9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNpZGViYXJXaWR0aCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICckcm91dGUnICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NpZGViYXJBY3RpdmUgJiYgdGhpcy5zaG93Q2xvc2VCdXR0b24pIHRoaXMuJHN0b3JlLmNvbW1pdCgnVE9HR0xFX0lTX1NJREVCQVJfQUNUSVZFJywgZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgc2lkZWJhck1vdXNlRW50ZXJlZCAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVkdWNlKSB0aGlzLiRzdG9yZS5jb21taXQoJ1VQREFURV9TSURFQkFSX0lURU1TX01JTicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW91c2VFbnRlciA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2lkZWJhck1vdXNlTGVhdmUgKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZHVjZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ1VQREFURV9TSURFQkFSX0lURU1TX01JTicsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmlzTW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRvZ2dsZVJlZHVjZSAodmFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWR1Y2VCdXR0b24gPSB2YWw7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTaWRlYmFyV2lkdGgoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGVXaW5kb3dSZXNpemUgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5kb3dXaWR0aCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNpZGViYXJXaWR0aCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFNpZGViYXJXaWR0aCAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2luZG93V2lkdGggPCAxMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLndpbmRvd1dpZHRoIDwgOTkyKSB0aGlzLiRzdG9yZS5jb21taXQoJ1VQREFURV9XSU5ET1dfQlJFQUtQT0lOVCcsICdtZCcpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMuJHN0b3JlLmNvbW1pdCgnVVBEQVRFX1dJTkRPV19CUkVBS1BPSU5UJywgJ2xnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdUT0dHTEVfSVNfU0lERUJBUl9BQ1RJVkUnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZHVjZUJ1dHRvbikgdGhpcy5yZWR1Y2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Q2xvc2VCdXR0b24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaWNrTm90Q2xvc2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmVbJ2Rpc3BhdGNoJ10oJ3VwZGF0ZVNpZGViYXJXaWR0aCcsICduby1zaWRlYmFyJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnVVBEQVRFX1NJREVCQVJfSVRFTVNfTUlOJywgZmFsc2UpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdVUERBVEVfV0lORE9XX0JSRUFLUE9JTlQnLCAneGwnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWR1Y2UgPSAhIXRoaXMucmVkdWNlQnV0dG9uO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnVE9HR0xFX0lTX1NJREVCQVJfQUNUSVZFJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZHVjZUJ1dHRvbiAmJiAhdGhpcy5pc01vdXNlRW50ZXIpIHRoaXMuJHN0b3JlLmNvbW1pdCgnVVBEQVRFX1NJREVCQVJfSVRFTVNfTUlOJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy4kc3RvcmUuY29tbWl0KCdVUERBVEVfU0lERUJBUl9JVEVNU19NSU4nLCBmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGlja05vdENsb3NlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Q2xvc2VCdXR0b24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVkdWNlU2lkZWJhcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlWydkaXNwYXRjaCddKCd1cGRhdGVTaWRlYmFyV2lkdGgnLCAncmVkdWNlZCcpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZVsnZGlzcGF0Y2gnXSgndXBkYXRlU2lkZWJhcldpZHRoJywgJ2RlZmF1bHQnKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwc1NlY3Rpb25TY3JvbGwgKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NoYWRvd0JvdHRvbSA9IHRoaXMuJHJlZnMubWFpblNpZGViYXJQcy4kZWwuc2Nyb2xsVG9wID4gMDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblN3aXBlTGVmdCAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTaWRlYmFyQWN0aXZlICYmIHRoaXMuc2hvd0Nsb3NlQnV0dG9uKSB0aGlzLmlzU2lkZWJhckFjdGl2ZSA9IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Td2lwZVJpZ2h0U2lkZWJhclN3aXBlQXJlYSAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2lkZWJhckFjdGl2ZSAmJiB0aGlzLnNob3dDbG9zZUJ1dHRvbikgdGhpcy5pc1NpZGViYXJBY3RpdmUgPSB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzUm9sZSAocm9sZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgaGFzUm9sZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJvbGVzLmZvckVhY2gocm9sZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBdXRoU2VydmljZS5oYXNSb2xlKHJvbGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNSb2xlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBoYXNSb2xlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBWeFNpZGViYXJHcm91cCxcbiAgICAgICAgICAgIFZ4U2lkZWJhckl0ZW0sXG4gICAgICAgICAgICBWdWVQZXJmZWN0U2Nyb2xsYmFyLFxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNldFNpZGViYXJXaWR0aCgpO1xuICAgICAgICB9LFxuICAgICAgICBiZWZvcmVEZXN0cm95ICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZSk7XG4gICAgICAgIH0sXG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuICAgIEBpbXBvcnQgXCIuLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9zY3NzL3Z1ZXNheC9jb21wb25lbnRzL3Z4U2lkZWJhci5zY3NzXCI7XG48L3N0eWxlPlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQWxCQTtBQXVCQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUFBO0FBQ0E7QUFYQTtBQUFBO0FBYUE7QUFFQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBNUNBO0FBOENBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQTtBQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxFQTtBQW9FQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpMQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.array.map */ \"./node_modules/core-js/modules/es6.array.map.js\");\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_regexp_match__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.regexp.match */ \"./node_modules/core-js/modules/es6.regexp.match.js\");\n/* harmony import */ var core_js_modules_es6_regexp_match__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_match__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.number.constructor */ \"./node_modules/core-js/modules/es6.number.constructor.js\");\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _VxSidebarItem_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VxSidebarItem.vue */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue\");\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'vx-sidebar-group',\n  props: {\n    openHover: {\n      default: false,\n      type: Boolean\n    },\n    open: {\n      default: false,\n      type: Boolean\n    },\n    group: {\n      type: Object\n    },\n    groupIndex: {\n      type: Number\n    }\n  },\n  data: function data() {\n    return {\n      maxHeight: '0px',\n      openItems: false\n    };\n  },\n  computed: {\n    sidebarItemsMin: function sidebarItemsMin() {\n      return this.$store.state.sidebarItemsMin;\n    },\n    styleItems: function styleItems() {\n      return {\n        maxHeight: this.maxHeight\n      };\n    },\n    itemIcon: function itemIcon() {\n      return function (index) {\n        if (!((index.match(/\\./g) || []).length > 1)) return \"CircleIcon\";\n      };\n    },\n    isGroupActive: function isGroupActive() {\n      var _this = this;\n\n      return function (sidebarItem) {\n        var path = _this.$route.fullPath;\n        var open = false;\n\n        var func = function func(sidebarItem) {\n          if (sidebarItem.submenu) {\n            sidebarItem.submenu.forEach(function (item) {\n              if (path == item.url) {\n                open = true;\n              } else if (item.submenu) {\n                func(item);\n              }\n            });\n          }\n        };\n\n        func(sidebarItem);\n        return open;\n      };\n    }\n  },\n  watch: {\n    // OPEN & CLOSES DROPDOWN ON ROUTE CHANGE\n    '$route': function $route() {\n      var _this2 = this;\n\n      if (this.sidebarItemsMin) return;\n      var scrollHeight = this.scrollHeight;\n\n      if (this.openItems && !this.open) {\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n        setTimeout(function () {\n          _this2.maxHeight = \"\".concat(0, \"px\");\n        }, 50);\n      } else if (this.open) {\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n        setTimeout(function () {\n          _this2.maxHeight = 'none';\n        }, 300);\n      }\n    },\n    maxHeight: function maxHeight() {\n      this.openItems = this.maxHeight != '0px';\n    },\n    // OPEN AND CLOSES DROPDOWN MENU ON SIDEBAR COLLAPSE AND DEFAULT VIEW\n    '$store.state.sidebarItemsMin': function $storeStateSidebarItemsMin(val) {\n      var _this3 = this;\n\n      var scrollHeight = this.$refs.items.scrollHeight;\n\n      if (!val && this.open) {\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n        setTimeout(function () {\n          _this3.maxHeight = 'none';\n        }, 300);\n      } else {\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n        setTimeout(function () {\n          _this3.maxHeight = '0px';\n        }, 50);\n      }\n\n      if (val && this.open) {\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n        setTimeout(function () {\n          _this3.maxHeight = '0px';\n        }, 250);\n      }\n    }\n  },\n  methods: {\n    clickGroup: function clickGroup() {\n      var _this4 = this;\n\n      if (!this.openHover) {\n        var thisScrollHeight = this.$refs.items.scrollHeight;\n\n        if (this.maxHeight == '0px') {\n          this.maxHeight = \"\".concat(thisScrollHeight, \"px\");\n          setTimeout(function () {\n            _this4.maxHeight = 'none';\n          }, 300);\n        } else {\n          this.maxHeight = \"\".concat(thisScrollHeight, \"px\");\n          setTimeout(function () {\n            _this4.maxHeight = \"\".concat(0, \"px\");\n          }, 50);\n        }\n\n        this.$parent.$children.map(function (child) {\n          if (child.isGroupActive) {\n            if (child !== _this4 && !child.open && child.maxHeight != '0px') {\n              setTimeout(function () {\n                child.maxHeight = \"\".concat(0, \"px\");\n              }, 50);\n            }\n          }\n        });\n      }\n    },\n    mouseover: function mouseover() {\n      if (this.openHover) {\n        var scrollHeight = this.$refs.items.scrollHeight;\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n      }\n    },\n    mouseout: function mouseout() {\n      if (this.openHover) {\n        var scrollHeight = 0;\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n      }\n    }\n  },\n  components: {\n    VxSidebarItem: _VxSidebarItem_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n  },\n  mounted: function mounted() {\n    this.openItems = this.open;\n\n    if (this.open) {\n      this.maxHeight = 'none';\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL1Z4U2lkZWJhckdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vVnhTaWRlYmFyR3JvdXAudnVlP2FkOGMiXSwic291cmNlc0NvbnRlbnQiOlsiPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXHRGaWxlIE5hbWU6IFZ4U2lkZWJhckdyb3VwLnZ1ZVxuXHREZXNjcmlwdGlvbjogU2lkZWJhciBHcm91cCBDb21wb25lbnQuIEV4dGVuZHMgdnVlc2F4IGZyYW1ld29yaydzICd2cy1zaWRlYmFyLWdyb3VwJyBjb21wb25lbnRcblx0Q29tcG9uZW50IE5hbWU6IFZ4U2lkZWJhckdyb3VwXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0SXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcblx0QXV0aG9yOiBQaXhpbnZlbnRcblx0QXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT5cblxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbeyd2cy1zaWRlYmFyLWdyb3VwLW9wZW4nIDogb3Blbkl0ZW1zfSwgeyd2cy1zaWRlYmFyLWdyb3VwLWFjdGl2ZSc6IG9wZW59LCB7J2Rpc2FibGVkLWl0ZW0gcG9pbnRlci1ldmVudHMtbm9uZSc6IGdyb3VwLmlzRGlzYWJsZWR9XVwiXG4gICAgQG1vdXNlb3V0PVwibW91c2VvdXRcIlxuICAgIEBtb3VzZW92ZXI9XCJtb3VzZW92ZXJcIlxuICAgIGNsYXNzPVwidnMtc2lkZWJhci1ncm91cFwiPlxuICAgIDxkaXYgQGNsaWNrPVwiY2xpY2tHcm91cFwiIGNsYXNzPVwiZ3JvdXAtaGVhZGVyIHctZnVsbFwiPlxuXHRcdDxzcGFuIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsXCI+XG5cdFx0XHQ8ZmVhdGhlci1pY29uIDppY29uPVwiZ3JvdXAuaWNvbiB8fCAnQ2lyY2xlSWNvbidcIiA6c3ZnQ2xhc3Nlcz1cInsgJ3ctMyBoLTMnIDogdGhpcy5ncm91cEluZGV4ICUgMSAhPSAwIH1cIlxuICAgICAgICAgICAgICAgICAgICB2LWlmPVwiZ3JvdXAuaWNvbiB8fCAodGhpcy5ncm91cEluZGV4ID4gTWF0aC5mbG9vcih0aGlzLmdyb3VwSW5kZXgpKVwiLz5cblx0XHRcdDxzcGFuIGNsYXNzPVwidHJ1bmNhdGUgbXItMyBzZWxlY3Qtbm9uZVwiIHYtc2hvdz1cIiFzaWRlYmFySXRlbXNNaW5cIj57eyBncm91cC5pMThuIHx8IGdyb3VwLm5hbWUgfX08L3NwYW4+XG5cdFx0XHQ8dnMtY2hpcCA6Y29sb3I9XCJncm91cC50YWdDb2xvclwiIGNsYXNzPVwibWwtYXV0byBtci00XCJcbiAgICAgICAgICAgICAgIHYtaWY9XCJncm91cC50YWcgJiYgIXNpZGViYXJJdGVtc01pblwiPnt7IGdyb3VwLnRhZyB9fTwvdnMtY2hpcD5cblx0XHQ8L3NwYW4+XG4gICAgICA8ZmVhdGhlci1pY29uIDpjbGFzcz1cIlt7J3JvdGF0ZTkwJyA6IG9wZW5JdGVtc30sICdmZWF0aGVyLWdycC1oZWFkZXItYXJyb3cnXVwiIGljb249XCJDaGV2cm9uUmlnaHRJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgc3ZnLWNsYXNzZXM9XCJ3LTQgaC00XCIgdi1zaG93PVwiIXNpZGViYXJJdGVtc01pblwiLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwidnMtc2lkZWJhci0tdG9vbHRpcFwiPnt7IGdyb3VwLmkxOG4gfHwgZ3JvdXAubmFtZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8dWwgOnN0eWxlPVwic3R5bGVJdGVtc1wiIGNsYXNzPVwidnMtc2lkZWJhci1ncm91cC1pdGVtc1wiIHJlZj1cIml0ZW1zXCI+XG4gICAgICA8bGkgOmtleT1cImluZGV4XCIgdi1mb3I9XCIoZ3JvdXBJdGVtLCBpbmRleCkgaW4gZ3JvdXAuc3VibWVudVwiPlxuICAgICAgICA8dngtc2lkZWJhci1ncm91cCA6Z3JvdXA9XCJncm91cEl0ZW1cIiA6Z3JvdXBJbmRleD1cIk51bWJlcihgJHtncm91cEluZGV4fS4ke2luZGV4fWApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOm9wZW49XCJpc0dyb3VwQWN0aXZlKGdyb3VwSXRlbSlcIiA6b3BlbkhvdmVyPVwib3BlbkhvdmVyXCIgdi1pZj1cImdyb3VwSXRlbS5zdWJtZW51XCIvPlxuICAgICAgICA8dngtc2lkZWJhci1pdGVtIDppY29uPVwiaXRlbUljb24oZ3JvdXBJbmRleCArICcuJyArIGluZGV4KVwiIDppbmRleD1cImdyb3VwSW5kZXggKyAnLicgKyBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgOnNsdWc9XCJncm91cEl0ZW0uc2x1Z1wiIDp0YXJnZXQ9XCJncm91cEl0ZW0udGFyZ2V0XCIgOnRvPVwiZ3JvdXBJdGVtLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWNvbi1zbWFsbCB2LWVsc2U+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPnt7IGdyb3VwSXRlbS5pMThuIHx8IGdyb3VwSXRlbS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgIDx2cy1jaGlwIDpjb2xvcj1cImdyb3VwSXRlbS50YWdDb2xvclwiIGNsYXNzPVwibWwtYXV0b1wiIHYtaWY9XCJncm91cEl0ZW0udGFnXCI+e3sgZ3JvdXBJdGVtLnRhZyB9fTwvdnMtY2hpcD5cbiAgICAgICAgPC92eC1zaWRlYmFyLWl0ZW0+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgaW1wb3J0IFZ4U2lkZWJhckl0ZW0gZnJvbSAnLi9WeFNpZGViYXJJdGVtLnZ1ZSdcblxuICBleHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZTogJ3Z4LXNpZGViYXItZ3JvdXAnLFxuICAgIHByb3BzOiB7XG4gICAgICBvcGVuSG92ZXI6IHtcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICAgIH0sXG4gICAgICBvcGVuOiB7XG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBCb29sZWFuXG4gICAgICB9LFxuICAgICAgZ3JvdXA6IHtcbiAgICAgICAgdHlwZTogT2JqZWN0XG4gICAgICB9LFxuICAgICAgZ3JvdXBJbmRleDoge1xuICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGF0YTogKCkgPT4gKHtcbiAgICAgIG1heEhlaWdodDogJzBweCcsXG4gICAgICBvcGVuSXRlbXM6IGZhbHNlXG4gICAgfSksXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgIHNpZGViYXJJdGVtc01pbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5zaWRlYmFySXRlbXNNaW47XG4gICAgICB9LFxuICAgICAgc3R5bGVJdGVtcyAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWF4SGVpZ2h0OiB0aGlzLm1heEhlaWdodFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaXRlbUljb24gKCkge1xuICAgICAgICByZXR1cm4gKGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCEoKGluZGV4Lm1hdGNoKC9cXC4vZykgfHwgW10pLmxlbmd0aCA+IDEpKSByZXR1cm4gXCJDaXJjbGVJY29uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlzR3JvdXBBY3RpdmUgKCkge1xuICAgICAgICByZXR1cm4gKHNpZGViYXJJdGVtKSA9PiB7XG5cbiAgICAgICAgICBjb25zdCBwYXRoID0gdGhpcy4kcm91dGUuZnVsbFBhdGg7XG4gICAgICAgICAgbGV0IG9wZW4gPSBmYWxzZTtcbiAgICAgICAgICBsZXQgZnVuYyA9IGZ1bmN0aW9uIChzaWRlYmFySXRlbSkge1xuICAgICAgICAgICAgaWYgKHNpZGViYXJJdGVtLnN1Ym1lbnUpIHtcbiAgICAgICAgICAgICAgc2lkZWJhckl0ZW0uc3VibWVudS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBhdGggPT0gaXRlbS51cmwpIHtcbiAgICAgICAgICAgICAgICAgIG9wZW4gPSB0cnVlXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnN1Ym1lbnUpIHtcbiAgICAgICAgICAgICAgICAgIGZ1bmMoaXRlbSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZnVuYyhzaWRlYmFySXRlbSlcbiAgICAgICAgICByZXR1cm4gb3BlblxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgd2F0Y2g6IHtcbiAgICAgIC8vIE9QRU4gJiBDTE9TRVMgRFJPUERPV04gT04gUk9VVEUgQ0hBTkdFXG4gICAgICAnJHJvdXRlJyAoKSB7XG4gICAgICAgIGlmICh0aGlzLnNpZGViYXJJdGVtc01pbikgcmV0dXJuXG4gICAgICAgIGxldCBzY3JvbGxIZWlnaHQgPSB0aGlzLnNjcm9sbEhlaWdodFxuICAgICAgICBpZiAodGhpcy5vcGVuSXRlbXMgJiYgIXRoaXMub3Blbikge1xuICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBgJHswfXB4YFxuICAgICAgICAgIH0sIDUwKVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSAnbm9uZSdcbiAgICAgICAgICB9LCAzMDApXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBtYXhIZWlnaHQgKCkge1xuICAgICAgICB0aGlzLm9wZW5JdGVtcyA9IHRoaXMubWF4SGVpZ2h0ICE9ICcwcHgnXG4gICAgICB9LFxuICAgICAgLy8gT1BFTiBBTkQgQ0xPU0VTIERST1BET1dOIE1FTlUgT04gU0lERUJBUiBDT0xMQVBTRSBBTkQgREVGQVVMVCBWSUVXXG4gICAgICAnJHN0b3JlLnN0YXRlLnNpZGViYXJJdGVtc01pbicgKHZhbCkge1xuICAgICAgICBsZXQgc2Nyb2xsSGVpZ2h0ID0gdGhpcy4kcmVmcy5pdGVtcy5zY3JvbGxIZWlnaHRcbiAgICAgICAgaWYgKCF2YWwgJiYgdGhpcy5vcGVuKSB7XG4gICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBgJHtzY3JvbGxIZWlnaHR9cHhgXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9ICdub25lJ1xuICAgICAgICAgIH0sIDMwMClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IGAke3Njcm9sbEhlaWdodH1weGBcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gJzBweCdcbiAgICAgICAgICB9LCA1MClcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsICYmIHRoaXMub3Blbikge1xuICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSAnMHB4J1xuICAgICAgICAgIH0sIDI1MClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgY2xpY2tHcm91cCAoKSB7XG4gICAgICAgIGlmICghdGhpcy5vcGVuSG92ZXIpIHtcbiAgICAgICAgICBsZXQgdGhpc1Njcm9sbEhlaWdodCA9IHRoaXMuJHJlZnMuaXRlbXMuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgaWYgKHRoaXMubWF4SGVpZ2h0ID09ICcwcHgnKSB7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IGAke3RoaXNTY3JvbGxIZWlnaHR9cHhgXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSAnbm9uZSdcbiAgICAgICAgICAgIH0sIDMwMClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBgJHt0aGlzU2Nyb2xsSGVpZ2h0fXB4YFxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gYCR7MH1weGBcbiAgICAgICAgICAgIH0sIDUwKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuJHBhcmVudC4kY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXBBY3RpdmUpIHtcblxuICAgICAgICAgICAgICBpZiAoY2hpbGQgIT09IHRoaXMgJiYgKCFjaGlsZC5vcGVuKSAmJiBjaGlsZC5tYXhIZWlnaHQgIT0gJzBweCcpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNoaWxkLm1heEhlaWdodCA9IGAkezB9cHhgXG4gICAgICAgICAgICAgICAgfSwgNTApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbW91c2VvdmVyICgpIHtcbiAgICAgICAgaWYgKHRoaXMub3BlbkhvdmVyKSB7XG4gICAgICAgICAgbGV0IHNjcm9sbEhlaWdodCA9IHRoaXMuJHJlZnMuaXRlbXMuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBgJHtzY3JvbGxIZWlnaHR9cHhgXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBtb3VzZW91dCAoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5Ib3Zlcikge1xuICAgICAgICAgIGxldCBzY3JvbGxIZWlnaHQgPSAwXG4gICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBgJHtzY3JvbGxIZWlnaHR9cHhgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgIFZ4U2lkZWJhckl0ZW1cbiAgICB9LFxuICAgIG1vdW50ZWQgKCkge1xuICAgICAgdGhpcy5vcGVuSXRlbXMgPSB0aGlzLm9wZW5cbiAgICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSAnbm9uZSdcbiAgICAgIH1cbiAgICB9LFxuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG4gIEBpbXBvcnQgXCJAL2Fzc2V0cy9zY3NzL3Z1ZXNheC9jb21wb25lbnRzL3Z4U2lkZWJhckdyb3VwLnNjc3NcIlxuPC9zdHlsZT5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFaQTtBQWdCQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxDQTtBQW9DQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4Q0E7QUEwQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkNBO0FBeUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBckpBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=script&lang=js&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=script&lang=js& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.number.constructor */ \"./node_modules/core-js/modules/es6.number.constructor.js\");\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'VxSidebarItem',\n  props: {\n    icon: {\n      default: \"\",\n      type: String\n    },\n    iconSmall: {\n      default: false,\n      type: Boolean\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    href: {\n      default: '#',\n      type: String\n    },\n    to: {\n      default: null,\n      type: String\n    },\n    slug: {\n      default: null,\n      type: String\n    },\n    index: {\n      default: null,\n      type: [String, Number]\n    },\n    featherIcon: {\n      default: true,\n      type: Boolean\n    },\n    target: {\n      default: '_self',\n      type: String\n    },\n    isDisabled: {\n      default: false,\n      type: Boolean\n    }\n  },\n  data: function data() {\n    return {\n      activeLink: false\n    };\n  },\n  watch: {\n    '$route': function $route() {\n      this.CheckIsActive();\n    }\n  },\n  methods: {\n    CheckIsActive: function CheckIsActive() {\n      if (this.to) {\n        this.activeLink = !!(this.to === this.$router.path && this.to || this.$route.meta.parent === this.slug);\n      }\n    }\n  },\n  computed: {\n    canSee: function canSee() {\n      //TODO\n      return true;\n    }\n  },\n  updated: function updated() {\n    this.CheckIsActive();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL1Z4U2lkZWJhckl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9WeFNpZGViYXJJdGVtLnZ1ZT9iMzdhIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IDpjbGFzcz1cIlt7J3ZzLXNpZGViYXItaXRlbS1hY3RpdmUnOmFjdGl2ZUxpbmt9LCB7J2Rpc2FibGVkLWl0ZW0gcG9pbnRlci1ldmVudHMtbm9uZSc6IGlzRGlzYWJsZWR9XVwiXG4gICAgICAgICBjbGFzcz1cInZzLXNpZGViYXItLWl0ZW1cIiB2LWlmPVwiY2FuU2VlXCI+XG4gICAgICAgIDxyb3V0ZXItbGluayA6Y2xhc3M9XCJbeydyb3V0ZXItbGluay1hY3RpdmUnOiBhY3RpdmVMaW5rfV1cIiA6dGFyZ2V0PVwidGFyZ2V0XCIgOnRvPVwidG9cIiBleGFjdCB2LWlmPVwidG9cIj5cbiAgICAgICAgICAgIDx2cy1pY29uIDppY29uPVwiaWNvblwiIDppY29uLXBhY2s9XCJpY29uUGFja1wiIHYtaWY9XCIhZmVhdGhlckljb25cIj5cbiAgICAgICAgICAgIDwvdnMtaWNvbj5cbiAgICAgICAgICAgIDxmZWF0aGVyLWljb24gOmNsYXNzPVwieyd3LTMgaC0zJzogaWNvblNtYWxsfVwiIDppY29uPVwiaWNvblwiIHYtZWxzZT48L2ZlYXRoZXItaWNvbj5cbiAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9yb3V0ZXItbGluaz5cbiAgICAgICAgPGEgOmhyZWY9XCJocmVmXCIgOnRhcmdldD1cInRhcmdldFwiIHYtZWxzZT5cbiAgICAgICAgICAgIDx2cy1pY29uIDppY29uPVwiaWNvblwiIDppY29uLXBhY2s9XCJpY29uUGFja1wiIHYtaWY9XCIhZmVhdGhlckljb25cIj5cbiAgICAgICAgICAgIDwvdnMtaWNvbj5cbiAgICAgICAgICAgIDxmZWF0aGVyLWljb24gOmNsYXNzPVwieyd3LTMgaC0zJzogaWNvblNtYWxsfVwiIDppY29uPVwiaWNvblwiIHYtZWxzZT48L2ZlYXRoZXItaWNvbj5cbiAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9hPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIG5hbWU6ICdWeFNpZGViYXJJdGVtJyxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGljb246IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBcIlwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGljb25TbWFsbDoge1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWNvblBhY2s6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgICAgICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhyZWY6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiAnIycsXG4gICAgICAgICAgICAgICAgdHlwZTogU3RyaW5nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICAgICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNsdWc6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICAgICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmVhdGhlckljb246IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogJ19zZWxmJyxcbiAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNEaXNhYmxlZDoge1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVMaW5rOiBmYWxzZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2F0Y2g6IHtcbiAgICAgICAgICAgICckcm91dGUnICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLkNoZWNrSXNBY3RpdmUoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICBDaGVja0lzQWN0aXZlICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50bykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUxpbmsgPSAhISgodGhpcy50byA9PT0gdGhpcy4kcm91dGVyLnBhdGggJiYgdGhpcy50bykgfHwgKHRoaXMuJHJvdXRlLm1ldGEucGFyZW50ID09PSB0aGlzLnNsdWcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICBjYW5TZWUgKCkge1xuICAgICAgICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVkICgpIHtcbiAgICAgICAgICAgIHRoaXMuQ2hlY2tJc0FjdGl2ZSgpO1xuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFyQ0E7QUEwQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQXJFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=script&lang=js&":
/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=script&lang=js& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_math_sign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.math.sign */ \"./node_modules/core-js/modules/es6.math.sign.js\");\n/* harmony import */ var core_js_modules_es6_math_sign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_math_sign__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.number.constructor */ \"./node_modules/core-js/modules/es6.number.constructor.js\");\n/* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _assets_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/utils */ \"./src/assets/utils/index.js\");\n/* harmony import */ var _assets_utils_color_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/assets/utils/color.js */ \"./src/assets/utils/color.js\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'vx-tooltip',\n  props: {\n    title: {\n      default: null,\n      type: [String, Number]\n    },\n    text: {\n      default: null,\n      type: [String, Number]\n    },\n    color: {\n      default: null,\n      type: String\n    },\n    position: {\n      default: 'top',\n      type: String\n    },\n    delay: {\n      default: '0s',\n      type: [Number, String]\n    }\n  },\n  data: function data() {\n    return {\n      cords: {},\n      active: false,\n      widthx: 'auto',\n      positionx: null,\n      noneAfter: false\n    };\n  },\n  computed: {\n    style: function style() {\n      return {\n        left: this.cords.left,\n        top: this.cords.top,\n        transitionDelay: this.active ? this.delay : '0s',\n        background: _assets_utils_color_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getColor(this.color, 1),\n        width: this.widthx\n      };\n    }\n  },\n  methods: {\n    mouseenterx: function mouseenterx() {\n      var _this = this;\n\n      this.active = true;\n      this.$nextTick(function () {\n        _assets_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].insertBody(_this.$refs.vstooltip);\n\n        _this.changePosition(_this.$refs.convstooltip, _this.$refs.vstooltip);\n      });\n    },\n    mouseleavex: function mouseleavex() {\n      this.active = false;\n    },\n    changePosition: function changePosition(elxEvent, tooltip) {\n      this.noneAfter = false;\n      this.positionx = null;\n      var elx = elxEvent.closest('.con-vs-tooltip');\n      var scrollTopx = window.pageYOffset || document.documentElement.scrollTop;\n      var topx = elx.getBoundingClientRect().top + scrollTopx - tooltip.clientHeight - 4;\n      var leftx = elx.getBoundingClientRect().left - tooltip.clientWidth / 2 + elx.clientWidth / 2;\n      var widthx = elx.clientWidth;\n\n      if (this.position == 'bottom') {\n        topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight + 4;\n      } else if (this.position == 'left') {\n        leftx = elx.getBoundingClientRect().left - tooltip.clientWidth - 4;\n        topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight / 2 - tooltip.clientHeight / 2;\n\n        if (Math.sign(leftx) == -1) {\n          leftx = elx.getBoundingClientRect().left;\n          topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight + 4;\n          this.positionx = 'bottom';\n          this.noneAfter = true;\n        }\n      } else if (this.position == 'right') {\n        leftx = elx.getBoundingClientRect().left + elx.clientWidth + 4;\n        topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight / 2 - tooltip.clientHeight / 2;\n\n        if (window.innerWidth - (leftx + tooltip.clientWidth) <= 20) {\n          leftx = elx.getBoundingClientRect().left - tooltip.clientWidth / 2 - 10;\n          topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight + 4;\n          this.positionx = 'bottom';\n          this.noneAfter = true;\n        }\n      }\n\n      this.cords = {\n        left: \"\".concat(leftx, \"px\"),\n        top: \"\".concat(topx, \"px\"),\n        width: \"\".concat(widthx, \"px\")\n      };\n    },\n    destroy: function destroy() {\n      var _this2 = this;\n\n      this.active = false;\n      this.$nextTick(function () {\n        if (_this2.active) {\n          _assets_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].removeBody(_this2.$refs.vstooltip);\n        }\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC10b29sdGlwL1Z4VG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL1Z4VG9vbHRpcC52dWU/MjE4NCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXZcbiAgICBAbW91c2VlbnRlcj1cIm1vdXNlZW50ZXJ4XCJcbiAgICBAbW91c2VsZWF2ZT1cIm1vdXNlbGVhdmV4XCJcbiAgICBAbW91c2V1cD1cImRlc3Ryb3lcIlxuICAgIGNsYXNzPVwiY29uLXZzLXRvb2x0aXBcIlxuICAgIHJlZj1cImNvbnZzdG9vbHRpcFwiPlxuICAgIDx0cmFuc2l0aW9uIG5hbWU9XCJ0b29sdGlwLWZhZGVcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW2B2cy10b29sdGlwLSR7cG9zaXRpb254IHx8IHBvc2l0aW9ufWAsYHZzLXRvb2x0aXAtJHtjb2xvcn1gLCB7J2FmdGVyLW5vbmUnOiBub25lQWZ0ZXJ9XVwiXG4gICAgICAgIDpzdHlsZT1cInN0eWxlXCJcbiAgICAgICAgY2xhc3M9XCJ2cy10b29sdGlwXCJcbiAgICAgICAgcmVmPVwidnN0b29sdGlwXCJcbiAgICAgICAgdi1zaG93PVwiYWN0aXZlXCI+XG4gICAgICAgIDxoNCB2LWlmPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvaDQ+XG4gICAgICAgIHt7IHRleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvdHJhbnNpdGlvbj5cbiAgICA8c2xvdD48L3Nsb3Q+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG4gIGltcG9ydCB1dGlscyBmcm9tICdAL2Fzc2V0cy91dGlscydcbiAgaW1wb3J0IF9jb2xvciBmcm9tICdAL2Fzc2V0cy91dGlscy9jb2xvci5qcydcblxuICBleHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZTogJ3Z4LXRvb2x0aXAnLFxuICAgIHByb3BzOiB7XG4gICAgICB0aXRsZToge1xuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdXG4gICAgICB9LFxuICAgICAgdGV4dDoge1xuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdXG4gICAgICB9LFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgdHlwZTogU3RyaW5nXG4gICAgICB9LFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgZGVmYXVsdDogJ3RvcCcsXG4gICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgfSxcbiAgICAgIGRlbGF5OiB7XG4gICAgICAgIGRlZmF1bHQ6ICcwcycsXG4gICAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ11cbiAgICAgIH1cbiAgICB9LFxuICAgIGRhdGE6ICgpID0+ICh7XG4gICAgICBjb3Jkczoge30sXG4gICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgd2lkdGh4OiAnYXV0bycsXG4gICAgICBwb3NpdGlvbng6IG51bGwsXG4gICAgICBub25lQWZ0ZXI6IGZhbHNlXG4gICAgfSksXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgIHN0eWxlICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsZWZ0OiB0aGlzLmNvcmRzLmxlZnQsXG4gICAgICAgICAgdG9wOiB0aGlzLmNvcmRzLnRvcCxcbiAgICAgICAgICB0cmFuc2l0aW9uRGVsYXk6IHRoaXMuYWN0aXZlID8gdGhpcy5kZWxheSA6ICcwcycsXG4gICAgICAgICAgYmFja2dyb3VuZDogX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpLFxuICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoeFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICBtb3VzZWVudGVyeCAoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZVxuICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgdXRpbHMuaW5zZXJ0Qm9keSh0aGlzLiRyZWZzLnZzdG9vbHRpcClcbiAgICAgICAgICB0aGlzLmNoYW5nZVBvc2l0aW9uKHRoaXMuJHJlZnMuY29udnN0b29sdGlwLCB0aGlzLiRyZWZzLnZzdG9vbHRpcClcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICBtb3VzZWxlYXZleCAoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2VcbiAgICAgIH0sXG4gICAgICBjaGFuZ2VQb3NpdGlvbiAoZWx4RXZlbnQsIHRvb2x0aXApIHtcbiAgICAgICAgdGhpcy5ub25lQWZ0ZXIgPSBmYWxzZVxuICAgICAgICB0aGlzLnBvc2l0aW9ueCA9IG51bGxcbiAgICAgICAgbGV0IGVseCA9IGVseEV2ZW50LmNsb3Nlc3QoJy5jb24tdnMtdG9vbHRpcCcpXG4gICAgICAgIGxldCBzY3JvbGxUb3B4ID0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICAgIGxldCB0b3B4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHNjcm9sbFRvcHggLSB0b29sdGlwLmNsaWVudEhlaWdodCAtIDRcbiAgICAgICAgbGV0IGxlZnR4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSB0b29sdGlwLmNsaWVudFdpZHRoIC8gMiArIGVseC5jbGllbnRXaWR0aCAvIDJcbiAgICAgICAgbGV0IHdpZHRoeCA9IGVseC5jbGllbnRXaWR0aFxuXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09ICdib3R0b20nKSB7XG4gICAgICAgICAgdG9weCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxUb3B4ICsgZWx4LmNsaWVudEhlaWdodCArIDRcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBvc2l0aW9uID09ICdsZWZ0Jykge1xuICAgICAgICAgIGxlZnR4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSB0b29sdGlwLmNsaWVudFdpZHRoIC0gNFxuICAgICAgICAgIHRvcHggPSBlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgc2Nyb2xsVG9weCArIChlbHguY2xpZW50SGVpZ2h0IC8gMikgLSAodG9vbHRpcC5jbGllbnRIZWlnaHQgLyAyKVxuICAgICAgICAgIGlmIChNYXRoLnNpZ24obGVmdHgpID09IC0xKSB7XG4gICAgICAgICAgICBsZWZ0eCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0XG4gICAgICAgICAgICB0b3B4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHNjcm9sbFRvcHggKyBlbHguY2xpZW50SGVpZ2h0ICsgNFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnggPSAnYm90dG9tJ1xuICAgICAgICAgICAgdGhpcy5ub25lQWZ0ZXIgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucG9zaXRpb24gPT0gJ3JpZ2h0Jykge1xuICAgICAgICAgIGxlZnR4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgKyBlbHguY2xpZW50V2lkdGggKyA0XG4gICAgICAgICAgdG9weCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxUb3B4ICsgKGVseC5jbGllbnRIZWlnaHQgLyAyKSAtICh0b29sdGlwLmNsaWVudEhlaWdodCAvIDIpXG4gICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIC0gKGxlZnR4ICsgdG9vbHRpcC5jbGllbnRXaWR0aCkgPD0gMjApIHtcbiAgICAgICAgICAgIGxlZnR4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSB0b29sdGlwLmNsaWVudFdpZHRoIC8gMiAtIDEwXG4gICAgICAgICAgICB0b3B4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHNjcm9sbFRvcHggKyBlbHguY2xpZW50SGVpZ2h0ICsgNFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnggPSAnYm90dG9tJ1xuICAgICAgICAgICAgdGhpcy5ub25lQWZ0ZXIgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29yZHMgPSB7XG4gICAgICAgICAgbGVmdDogYCR7bGVmdHh9cHhgLFxuICAgICAgICAgIHRvcDogYCR7dG9weH1weGAsXG4gICAgICAgICAgd2lkdGg6IGAke3dpZHRoeH1weGBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlc3Ryb3kgKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlXG4gICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHV0aWxzLnJlbW92ZUJvZHkodGhpcy4kcmVmcy52c3Rvb2x0aXApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICB9XG4gIH1cbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFqQkE7QUFzQkE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFUQTtBQVdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXREQTtBQTFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/main/Main.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/main/Main.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es7_array_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es7.array.includes */ \"./node_modules/core-js/modules/es7.array.includes.js\");\n/* harmony import */ var core_js_modules_es7_array_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_array_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_string_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.string.includes */ \"./node_modules/core-js/modules/es6.string.includes.js\");\n/* harmony import */ var core_js_modules_es6_string_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_string_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _layouts_components_vx_sidebar_VxSidebar_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../../layouts/components/vx-sidebar/VxSidebar.vue */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue\");\n/* harmony import */ var _components_TheNavbar_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/TheNavbar.vue */ \"./src/modules/common/layouts/components/TheNavbar.vue\");\n/* harmony import */ var _components_TheFooter_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/TheFooter.vue */ \"./src/modules/common/layouts/components/TheFooter.vue\");\n/* harmony import */ var _themeConfig_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../../../../../themeConfig.js */ \"./themeConfig.js\");\n/* harmony import */ var _layouts_components_vx_sidebar_sidebarItems_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../../layouts/components/vx-sidebar/sidebarItems.js */ \"./src/modules/common/layouts/components/vx-sidebar/sidebarItems.js\");\n/* harmony import */ var vue_backtotop__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-backtotop */ \"./node_modules/vue-backtotop/src/main.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      navbarType: _themeConfig_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].navbarType || 'floating',\n      navbarColor: _themeConfig_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].navbarColor || '#fff',\n      footerType: _themeConfig_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].footerType || 'static',\n      routerTransition: _themeConfig_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].routerTransition || 'none',\n      isNavbarDark: false,\n      routeTitle: this.$route.meta.pageTitle,\n      sidebarItems: _layouts_components_vx_sidebar_sidebarItems_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n      disableCustomizer: _themeConfig_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disableCustomizer,\n      windowWidth: window.innerWidth,\n      //width of windows\n      hideScrollToTop: _themeConfig_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hideScrollToTop,\n      disableThemeTour: _themeConfig_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disableThemeTour,\n      steps: [{\n        target: '#btnSidebarToggler',\n        content: 'Toggle Collapse Sidebar.'\n      }, {\n        target: '.vx-navbar__starred-pages',\n        content: 'Create your own bookmarks. You can also re-arrange them using drag & drop.'\n      }, {\n        target: '.i18n-locale',\n        content: 'You can change language from here.'\n      }, {\n        target: '.navbar-fuzzy-search',\n        content: 'Try fuzzy search to visit pages in flash.'\n      }, {\n        target: '.customizer-btn',\n        content: 'Customize template based your preference',\n        params: {\n          placement: 'left'\n        }\n      }, {\n        target: '.vs-button.buy-now',\n        content: 'Buy this awesomeness at affordable price!',\n        params: {\n          placement: 'top'\n        }\n      }]\n    };\n  },\n  watch: {\n    '$route': function $route() {\n      this.routeTitle = this.$route.meta['pageTitle'];\n    },\n    isThemeDark: function isThemeDark(val) {\n      if (this.navbarColor === \"#fff\" && val) {\n        this.updateNavbarColor(\"#10163a\");\n      } else {\n        this.updateNavbarColor(\"#fff\");\n      }\n    }\n  },\n  computed: {\n    isAppPage: function isAppPage() {\n      return !!this.$route.path.includes('/apps/');\n    },\n    isThemeDark: function isThemeDark() {\n      return this.$store.state.theme === 'dark';\n    },\n    sidebarWidth: function sidebarWidth() {\n      return this.$store.state.sidebarWidth;\n    },\n    bodyOverlay: function bodyOverlay() {\n      return this.$store.state.bodyOverlay;\n    },\n    contentAreaClass: function contentAreaClass() {\n      if (this.sidebarWidth === \"default\") return \"content-area-default\";else if (this.sidebarWidth === \"reduced\") return \"content-area-reduced\";else if (this.sidebarWidth) return \"content-area-full\";\n    },\n    navbarClasses: function navbarClasses() {\n      return {\n        'navbar-hidden': this.navbarType === 'hidden',\n        'navbar-sticky': this.navbarType === 'sticky',\n        'navbar-static': this.navbarType === 'static',\n        'navbar-floating': this.navbarType === 'floating'\n      };\n    },\n    footerClasses: function footerClasses() {\n      return {\n        'footer-hidden': this.footerType === 'hidden',\n        'footer-sticky': this.footerType === 'sticky',\n        'footer-static': this.footerType === 'static'\n      };\n    }\n  },\n  methods: {\n    changeRouteTitle: function changeRouteTitle(title) {\n      this.routeTitle = title;\n    },\n    updateNavbarColor: function updateNavbarColor(val) {\n      this.navbarColor = val;\n      if (val === \"#fff\") this.isNavbarDark = false;else this.isNavbarDark = true;\n    },\n    handleWindowResize: function handleWindowResize(event) {\n      this.windowWidth = event.currentTarget.innerWidth;\n      this.setSidebarWidth();\n    },\n    setSidebarWidth: function setSidebarWidth() {\n      if (this.windowWidth < 1200) {\n        this.$store.commit('TOGGLE_IS_SIDEBAR_ACTIVE', false);\n        this.$store['dispatch']('updateSidebarWidth', 'no-sidebar');\n        this.disableThemeTour = true;\n      } else if (this.windowWidth < 1200) {\n        this.$store['dispatch']('updateSidebarWidth', 'reduced');\n      } else {\n        this.$store.commit('TOGGLE_IS_SIDEBAR_ACTIVE', true);\n      }\n    },\n    toggleHideScrollToTop: function toggleHideScrollToTop(val) {\n      this.hideScrollToTop = val;\n    }\n  },\n  components: {\n    VxSidebar: _layouts_components_vx_sidebar_VxSidebar_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    TheNavbar: _components_TheNavbar_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n    TheFooter: _components_TheFooter_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n    BackToTop: vue_backtotop__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n  },\n  created: function created() {\n    this.$store.dispatch('me');\n    this.setSidebarWidth();\n\n    if (this.navbarColor === \"#fff\" && this.isThemeDark) {\n      this.updateNavbarColor(\"#10163a\");\n    } else {\n      this.updateNavbarColor(this.navbarColor);\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvbWFpbi9NYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vTWFpbi52dWU/MmE1MiJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiA6Y2xhc3M9XCJbbmF2YmFyQ2xhc3NlcywgZm9vdGVyQ2xhc3NlcywgeydhcHAtcGFnZSc6IGlzQXBwUGFnZX1dXCIgY2xhc3M9XCJsYXlvdXQtLW1haW5cIj5cblxuICAgICAgICA8dngtc2lkZWJhciBsb2dvPVwibG9nby5zdmdcIiA6c2lkZWJhckl0ZW1zPVwic2lkZWJhckl0ZW1zXCIgcGFyZW50PVwiLmxheW91dC0tbWFpblwiIHRpdGxlPVwiXCIvPlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW2NvbnRlbnRBcmVhQ2xhc3MsIHsnc2hvdy1vdmVybGF5JzogYm9keU92ZXJsYXl9XVwiIGlkPVwiY29udGVudC1hcmVhXCI+XG5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJjb250ZW50LW92ZXJsYXlcIj48L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgPHRoZS1uYXZiYXIgOm5hdmJhckNvbG9yPVwibmF2YmFyQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIlt7J3RleHQtd2hpdGUnOiBpc05hdmJhckRhcmsgJiYgIWlzVGhlbWVEYXJrfSwgeyd0ZXh0LWJhc2UnOiAhaXNOYXZiYXJEYXJrICYmIGlzVGhlbWVEYXJrfV1cIi8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91dGVyLXZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJ7J210LTAnOiBuYXZiYXJUeXBlID09PSAnaGlkZGVuJ31cIiBjbGFzcz1cInJvdXRlci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNpdGlvbiA6bmFtZT1cInJvdXRlclRyYW5zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91dGVyLWhlYWRlciBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgbWItNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiJHJvdXRlLm1ldGEuYnJlYWRjcnVtYiB8fCAkcm91dGUubWV0YS5wYWdlVGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJ7J3ByLTQgYm9yZGVyLTAgbWQ6Ym9yZGVyLXIgYm9yZGVyLXQtMCBib3JkZXItYi0wIGJvcmRlci1sLTAgYm9yZGVyLXNvbGlkIGJvcmRlci1ncmV5LWxpZ2h0JyA6ICRyb3V0ZS5tZXRhLmJyZWFkY3J1bWJ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtYXJlYV9faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwibWItMVwiPnt7IHJvdXRlVGl0bGUgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERST1BET1dOIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtZHJvcGRvd24gY2xhc3M9XCJtbC1hdXRvIG1kOmJsb2NrIGhpZGRlbiBjdXJzb3ItcG9pbnRlclwiIHZzLXRyaWdnZXItY2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGljb249XCJpY29uLXNldHRpbmdzXCIgaWNvbi1wYWNrPVwiZmVhdGhlclwiIHJhZGl1cy8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1kcm9wZG93bi1tZW51IGNsYXNzPVwidy0zMlwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgQGNsaWNrPVwiJHJvdXRlci5wdXNoKCcvcGFnZXMvcHJvZmlsZScpXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlYXRoZXItaWNvbiBjbGFzcz1cImlubGluZS1ibG9jayBtci0yXCIgaWNvbj1cIlVzZXJJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZnQ2xhc3Nlcz1cInctNCBoLTRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Qcm9maWxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWRyb3Bkb3duLWl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtZHJvcGRvd24taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBAY2xpY2s9XCIkcm91dGVyLnB1c2goJy9hcHBzL3RvZG8nKVwiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZWF0aGVyLWljb24gY2xhc3M9XCJpbmxpbmUtYmxvY2sgbXItMlwiIGljb249XCJDaGVja1NxdWFyZUljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmdDbGFzc2VzPVwidy00IGgtNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlRhc2tzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWRyb3Bkb3duLWl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtZHJvcGRvd24taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBAY2xpY2s9XCIkcm91dGVyLnB1c2goJy9hcHBzL2VtYWlsJylcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVhdGhlci1pY29uIGNsYXNzPVwiaW5saW5lLWJsb2NrIG1yLTJcIiBpY29uPVwiTWFpbEljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmdDbGFzc2VzPVwidy00IGgtNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkluYm94PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyYW5zaXRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1hcmVhX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJhY2stdG8tdG9wIGJvdHRvbT1cIjUlXCIgdi1pZj1cIiFoaWRlU2Nyb2xsVG9Ub3BcIiB2aXNpYmxlb2Zmc2V0PVwiNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJzaGFkb3ctbGdcIiBpY29uPVwiaWNvbi1hcnJvdy11cFwiIGljb24tcGFjaz1cImZlYXRoZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9iYWNrLXRvLXRvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNpdGlvbiA6bmFtZT1cInJvdXRlclRyYW5zaXRpb25cIiBtb2RlPVwib3V0LWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyb3V0ZXItdmlldyBAY2hhbmdlUm91dGVUaXRsZT1cImNoYW5nZVJvdXRlVGl0bGVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cmFuc2l0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHRoZS1mb290ZXIvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IFZ4U2lkZWJhciBmcm9tICcuLy4uLy4uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL1Z4U2lkZWJhci52dWUnO1xuICAgIGltcG9ydCBUaGVOYXZiYXIgZnJvbSAnLi4vY29tcG9uZW50cy9UaGVOYXZiYXIudnVlJztcbiAgICBpbXBvcnQgVGhlRm9vdGVyIGZyb20gJy4uL2NvbXBvbmVudHMvVGhlRm9vdGVyLnZ1ZSc7XG4gICAgaW1wb3J0IHRoZW1lQ29uZmlnIGZyb20gJy4vLi4vLi4vLi4vLi4vLi4vdGhlbWVDb25maWcuanMnO1xuICAgIGltcG9ydCBzaWRlYmFySXRlbXMgZnJvbSBcIi4vLi4vLi4vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvc2lkZWJhckl0ZW1zLmpzXCI7XG4gICAgaW1wb3J0IEJhY2tUb1RvcCBmcm9tICd2dWUtYmFja3RvdG9wJ1xuICAgIGltcG9ydCAndnVleCc7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYXZiYXJUeXBlOiB0aGVtZUNvbmZpZy5uYXZiYXJUeXBlIHx8ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgbmF2YmFyQ29sb3I6IHRoZW1lQ29uZmlnLm5hdmJhckNvbG9yIHx8ICcjZmZmJyxcbiAgICAgICAgICAgICAgICBmb290ZXJUeXBlOiB0aGVtZUNvbmZpZy5mb290ZXJUeXBlIHx8ICdzdGF0aWMnLFxuICAgICAgICAgICAgICAgIHJvdXRlclRyYW5zaXRpb246IHRoZW1lQ29uZmlnLnJvdXRlclRyYW5zaXRpb24gfHwgJ25vbmUnLFxuICAgICAgICAgICAgICAgIGlzTmF2YmFyRGFyazogZmFsc2UsXG4gICAgICAgICAgICAgICAgcm91dGVUaXRsZTogdGhpcy4kcm91dGUubWV0YS5wYWdlVGl0bGUsXG4gICAgICAgICAgICAgICAgc2lkZWJhckl0ZW1zOiBzaWRlYmFySXRlbXMsXG4gICAgICAgICAgICAgICAgZGlzYWJsZUN1c3RvbWl6ZXI6IHRoZW1lQ29uZmlnLmRpc2FibGVDdXN0b21pemVyLFxuICAgICAgICAgICAgICAgIHdpbmRvd1dpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCwgLy93aWR0aCBvZiB3aW5kb3dzXG4gICAgICAgICAgICAgICAgaGlkZVNjcm9sbFRvVG9wOiB0aGVtZUNvbmZpZy5oaWRlU2Nyb2xsVG9Ub3AsXG4gICAgICAgICAgICAgICAgZGlzYWJsZVRoZW1lVG91cjogdGhlbWVDb25maWcuZGlzYWJsZVRoZW1lVG91cixcbiAgICAgICAgICAgICAgICBzdGVwczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6ICcjYnRuU2lkZWJhclRvZ2dsZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ1RvZ2dsZSBDb2xsYXBzZSBTaWRlYmFyLidcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiAnLnZ4LW5hdmJhcl9fc3RhcnJlZC1wYWdlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnQ3JlYXRlIHlvdXIgb3duIGJvb2ttYXJrcy4gWW91IGNhbiBhbHNvIHJlLWFycmFuZ2UgdGhlbSB1c2luZyBkcmFnICYgZHJvcC4nXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogJy5pMThuLWxvY2FsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnWW91IGNhbiBjaGFuZ2UgbGFuZ3VhZ2UgZnJvbSBoZXJlLidcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiAnLm5hdmJhci1mdXp6eS1zZWFyY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ1RyeSBmdXp6eSBzZWFyY2ggdG8gdmlzaXQgcGFnZXMgaW4gZmxhc2guJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6ICcuY3VzdG9taXplci1idG4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ0N1c3RvbWl6ZSB0ZW1wbGF0ZSBiYXNlZCB5b3VyIHByZWZlcmVuY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAnbGVmdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiAnLnZzLWJ1dHRvbi5idXktbm93JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdCdXkgdGhpcyBhd2Vzb21lbmVzcyBhdCBhZmZvcmRhYmxlIHByaWNlIScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgJyRyb3V0ZScgKCkge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVUaXRsZSA9IHRoaXMuJHJvdXRlLm1ldGFbJ3BhZ2VUaXRsZSddO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzVGhlbWVEYXJrICh2YWwpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5uYXZiYXJDb2xvciA9PT0gXCIjZmZmXCIgJiYgdmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTmF2YmFyQ29sb3IoXCIjMTAxNjNhXCIpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVOYXZiYXJDb2xvcihcIiNmZmZcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgaXNBcHBQYWdlICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISF0aGlzLiRyb3V0ZS5wYXRoLmluY2x1ZGVzKCcvYXBwcy8nKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1RoZW1lRGFyayAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLnRoZW1lID09PSAnZGFyaydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaWRlYmFyV2lkdGggKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5zaWRlYmFyV2lkdGg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm9keU92ZXJsYXkgKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5ib2R5T3ZlcmxheTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250ZW50QXJlYUNsYXNzICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaWRlYmFyV2lkdGggPT09IFwiZGVmYXVsdFwiKSByZXR1cm4gXCJjb250ZW50LWFyZWEtZGVmYXVsdFwiO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2lkZWJhcldpZHRoID09PSBcInJlZHVjZWRcIikgcmV0dXJuIFwiY29udGVudC1hcmVhLXJlZHVjZWRcIjtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNpZGViYXJXaWR0aCkgcmV0dXJuIFwiY29udGVudC1hcmVhLWZ1bGxcIjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYXZiYXJDbGFzc2VzICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAnbmF2YmFyLWhpZGRlbic6IHRoaXMubmF2YmFyVHlwZSA9PT0gJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICduYXZiYXItc3RpY2t5JzogdGhpcy5uYXZiYXJUeXBlID09PSAnc3RpY2t5JyxcbiAgICAgICAgICAgICAgICAgICAgJ25hdmJhci1zdGF0aWMnOiB0aGlzLm5hdmJhclR5cGUgPT09ICdzdGF0aWMnLFxuICAgICAgICAgICAgICAgICAgICAnbmF2YmFyLWZsb2F0aW5nJzogdGhpcy5uYXZiYXJUeXBlID09PSAnZmxvYXRpbmcnLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb290ZXJDbGFzc2VzICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAnZm9vdGVyLWhpZGRlbic6IHRoaXMuZm9vdGVyVHlwZSA9PT0gJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICdmb290ZXItc3RpY2t5JzogdGhpcy5mb290ZXJUeXBlID09PSAnc3RpY2t5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2Zvb3Rlci1zdGF0aWMnOiB0aGlzLmZvb3RlclR5cGUgPT09ICdzdGF0aWMnLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGNoYW5nZVJvdXRlVGl0bGUgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZVRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlTmF2YmFyQ29sb3IgKHZhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2YmFyQ29sb3IgPSB2YWw7XG4gICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gXCIjZmZmXCIpIHRoaXMuaXNOYXZiYXJEYXJrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLmlzTmF2YmFyRGFyayA9IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGVXaW5kb3dSZXNpemUgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5kb3dXaWR0aCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNpZGViYXJXaWR0aCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFNpZGViYXJXaWR0aCAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2luZG93V2lkdGggPCAxMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnVE9HR0xFX0lTX1NJREVCQVJfQUNUSVZFJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZVsnZGlzcGF0Y2gnXSgndXBkYXRlU2lkZWJhcldpZHRoJywgJ25vLXNpZGViYXInKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlVGhlbWVUb3VyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMud2luZG93V2lkdGggPCAxMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlWydkaXNwYXRjaCddKCd1cGRhdGVTaWRlYmFyV2lkdGgnLCAncmVkdWNlZCcpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdUT0dHTEVfSVNfU0lERUJBUl9BQ1RJVkUnLCB0cnVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0b2dnbGVIaWRlU2Nyb2xsVG9Ub3AgKHZhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZVNjcm9sbFRvVG9wID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBWeFNpZGViYXIsXG4gICAgICAgICAgICBUaGVOYXZiYXIsXG4gICAgICAgICAgICBUaGVGb290ZXIsXG4gICAgICAgICAgICBCYWNrVG9Ub3AsXG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZWQgKCkge1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ21lJyk7XG4gICAgICAgICAgICB0aGlzLnNldFNpZGViYXJXaWR0aCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMubmF2YmFyQ29sb3IgPT09IFwiI2ZmZlwiICYmIHRoaXMuaXNUaGVtZURhcmspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5hdmJhckNvbG9yKFwiIzEwMTYzYVwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5hdmJhckNvbG9yKHRoaXMubmF2YmFyQ29sb3IpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFIQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFIQTtBQXBDQTtBQTZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBaENBO0FBa0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExQkE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4SUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/main/Main.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/contacts/ContactRequests.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! regenerator-runtime/runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _services_ContactRequests__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./services/ContactRequests */ \"./src/modules/contacts/services/ContactRequests.js\");\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      filters: {\n        perPage: 10,\n        page: 1,\n        search: null\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_10__[\"mapGetters\"])({\n    newsLetter: 'contacts/contactRequests'\n  })),\n  methods: {\n    internalSearch: function internalSearch() {\n      this.$store.dispatch('contacts/getContactRequests', this.filters);\n    },\n    handleSearch: Object(lodash__WEBPACK_IMPORTED_MODULE_11__[\"debounce\"])(function (search, vm) {\n      vm.filters.search = search;\n      vm.filters.page = 1;\n      vm.internalSearch();\n    }, 500),\n    deleteRequest: function deleteRequest(req) {\n      var _this = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_12__[\"default\"].confirmCancel('Operation confirmation', \"Are you sure you want to delete this message\",\n      /*#__PURE__*/\n      Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return _services_ContactRequests__WEBPACK_IMPORTED_MODULE_13__[\"default\"].delete(req.id);\n\n              case 2:\n                _this.internalSearch();\n\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      })));\n    },\n    handleChangePage: function handleChangePage(page) {\n      this.filters.page = page;\n      this.internalSearch();\n    }\n  },\n  mounted: function mounted() {\n    this.internalSearch();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29udGFjdHMvQ29udGFjdFJlcXVlc3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vQ29udGFjdFJlcXVlc3RzLnZ1ZT8zYmQ2Il0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGlkPVwiY2FsLWNvbnRhY3QtcmVxdWVzdHNcIj5cbiAgICAgICAgPHZ4LWNhcmQ+XG4gICAgICAgICAgICA8dnMtdGFibGUgOnNzdD1cInRydWVcIiA6ZGF0YT1cIm5ld3NMZXR0ZXIuZGF0YVwiIHNlYXJjaCBAc2VhcmNoPVwiKGUpID0+IGhhbmRsZVNlYXJjaChlLCB0aGlzKVwiPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPkluYm94IG1lc3NhZ2VzPC9oMz5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Q9XCJ0aGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdGg+TmFtZTwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aD5FbWFpbDwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aD5FbnF1aXJ5PC92cy10aD5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRoIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj5BY3Rpb25zPC92cy10aD5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Qtc2NvcGU9XCJ7ZGF0YX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRyIDprZXk9XCJpbmRleHRyXCIgdi1mb3I9XCIodHIsIGluZGV4dHIpIGluIGRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZCA6ZGF0YT1cImRhdGFbaW5kZXh0cl0ubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YVtpbmRleHRyXS5uYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQgOmRhdGE9XCJkYXRhW2luZGV4dHJdLmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJgbWFpbHRvOiR7ZGF0YVtpbmRleHRyXS5lbWFpbH19fWBcIj57e2RhdGFbaW5kZXh0cl0uZW1haWx9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQgOmRhdGE9XCJkYXRhW2luZGV4dHJdLmVucXVpcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGFbaW5kZXh0cl0uZW5xdWlyeX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRkIGNsYXNzPVwiZmxvYXQtcmlnaHRcIiA6ZGF0YT1cImRhdGFbaW5kZXh0cl1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dngtdG9vbHRpcCB0ZXh0PVwiRGVsZXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImlubGluZS1ibG9jayBteC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJkZWxldGVSZXF1ZXN0KGRhdGFbaW5kZXh0cl0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkZWxldGVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92eC10b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgPC92cy10cj5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPC92cy10YWJsZT5cblxuICAgICAgICAgICAgPHZzLXBhZ2luYXRpb24gdi1pZj1cIm5ld3NMZXR0ZXIuZGF0YSAmJiBuZXdzTGV0dGVyLmRhdGEubGVuZ3RoID4gMFwiIGNsYXNzPVwibXQtNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6dG90YWw9XCJuZXdzTGV0dGVyLm1ldGEucGFnaW5hdGlvbi50b3RhbF9wYWdlc1wiIHYtbW9kZWw9XCJmaWx0ZXJzLnBhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZUNoYW5nZVBhZ2VcIi8+XG4gICAgICAgIDwvdngtY2FyZD5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzfSBmcm9tICd2dWV4JztcbiAgICBpbXBvcnQge2RlYm91bmNlfSBmcm9tICdsb2Rhc2gnO1xuICAgIGltcG9ydCBOb3RpZmljYXRpb25TZXJ2aWNlIGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZVwiO1xuICAgIGltcG9ydCBDb250YWN0UmVxdWVzdHMgZnJvbSBcIi4vc2VydmljZXMvQ29udGFjdFJlcXVlc3RzXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHBlclBhZ2U6IDEwLFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2g6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgbmV3c0xldHRlcjogJ2NvbnRhY3RzL2NvbnRhY3RSZXF1ZXN0cydcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGludGVybmFsU2VhcmNoICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY29udGFjdHMvZ2V0Q29udGFjdFJlcXVlc3RzJywgdGhpcy5maWx0ZXJzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGVTZWFyY2g6IGRlYm91bmNlKChzZWFyY2gsIHZtKSA9PiB7XG4gICAgICAgICAgICAgICAgdm0uZmlsdGVycy5zZWFyY2ggPSBzZWFyY2g7XG4gICAgICAgICAgICAgICAgdm0uZmlsdGVycy5wYWdlID0gMTtcbiAgICAgICAgICAgICAgICB2bS5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICAgICAgfSwgNTAwKSxcbiAgICAgICAgICAgIGRlbGV0ZVJlcXVlc3QgKHJlcSkge1xuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuY29uZmlybUNhbmNlbCgnT3BlcmF0aW9uIGNvbmZpcm1hdGlvbicsIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgbWVzc2FnZWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgQ29udGFjdFJlcXVlc3RzLmRlbGV0ZShyZXEuaWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFuZGxlQ2hhbmdlUGFnZSAocGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycy5wYWdlID0gcGFnZTtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQgKCkge1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICB9LFxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbiAgICBAaW1wb3J0IFwiLi8uLi8uLi9hc3NldHMvc2Nzcy92dWVzYXgvcGFnZXMvcHJvZmlsZS5zY3NzXCI7XG48L3N0eWxlPlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0NBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQURBO0FBT0E7QUFDQTtBQUVBO0FBREE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsQkE7QUFvQkE7QUFDQTtBQUNBO0FBckNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/contacts/NewsLetter.vue?vue&type=script&lang=js& ***!
  \*************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! regenerator-runtime/runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _services_NewsLetter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./services/NewsLetter */ \"./src/modules/contacts/services/NewsLetter.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_12__);\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      filters: {\n        perPage: 10,\n        page: 1\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_10__[\"mapGetters\"])({\n    newsLetter: 'contacts/newsLetter'\n  })),\n  methods: {\n    internalSearch: function internalSearch() {\n      this.$store.dispatch('contacts/getNewsLetter', this.filters);\n    },\n    handleSearch: Object(lodash__WEBPACK_IMPORTED_MODULE_12__[\"debounce\"])(function (search, vm) {\n      vm.filters.search = search;\n      vm.filters.page = 1;\n      vm.internalSearch();\n    }, 500),\n    handleChangePage: function handleChangePage(page) {\n      this.filters.page = page;\n      this.internalSearch();\n    },\n    exportExcel: function () {\n      var _exportExcel = Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                this.$vs.loading();\n                _context.next = 3;\n                return _services_NewsLetter__WEBPACK_IMPORTED_MODULE_11__[\"default\"].exportExcel();\n\n              case 3:\n                this.$vs.loading.close();\n\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function exportExcel() {\n        return _exportExcel.apply(this, arguments);\n      }\n\n      return exportExcel;\n    }()\n  },\n  mounted: function mounted() {\n    this.internalSearch();\n  },\n  beforeDestroy: function beforeDestroy() {}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvY29udGFjdHMvTmV3c0xldHRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL05ld3NMZXR0ZXIudnVlP2NhNGMiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJjYWwtbmV3cy1sZXR0ZXJcIj5cbiAgICAgICAgPHZ4LWNhcmQ+XG4gICAgICAgICAgICA8dnMtdGFibGUgOnNzdD1cInRydWVcIiA6ZGF0YT1cIm5ld3NMZXR0ZXIuZGF0YVwiIHNlYXJjaCBAc2VhcmNoPVwiKGUpID0+IGhhbmRsZVNlYXJjaChlLCB0aGlzKVwiPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPlN1YnNjcmliZXJzPC9oMz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtNFwiIHYtaWY9XCJuZXdzTGV0dGVyLmRhdGEgJiYgbmV3c0xldHRlci5kYXRhLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gQGNsaWNrPVwiZXhwb3J0RXhjZWxcIiBzaXplPVwic21hbGxcIiBpY29uPVwiY2xvdWRfZG93bmxvYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgc2xvdD1cInRoZWFkXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVtYWlsXG4gICAgICAgICAgICAgICAgICAgIDwvdnMtdGg+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90LXNjb3BlPVwie2RhdGF9XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10ciA6a2V5PVwiaW5kZXh0clwiIHYtZm9yPVwiKHRyLCBpbmRleHRyKSBpbiBkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQgOmRhdGE9XCJkYXRhW2luZGV4dHJdLmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJgbWFpbHRvOiR7ZGF0YVtpbmRleHRyXS5lbWFpbH19fWBcIj57e2RhdGFbaW5kZXh0cl0uZW1haWx9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdnMtdHI+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdnMtdGFibGU+XG5cbiAgICAgICAgICAgIDx2cy1wYWdpbmF0aW9uIHYtaWY9XCJuZXdzTGV0dGVyLmRhdGEgJiYgbmV3c0xldHRlci5kYXRhLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm10LTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRvdGFsPVwibmV3c0xldHRlci5tZXRhLnBhZ2luYXRpb24udG90YWxfcGFnZXNcIiB2LW1vZGVsPVwiZmlsdGVycy5wYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVDaGFuZ2VQYWdlXCIvPlxuICAgICAgICA8L3Z4LWNhcmQ+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVyc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IE5ld3NMZXR0ZXJTZXJ2aWNlIGZyb20gXCIuL3NlcnZpY2VzL05ld3NMZXR0ZXJcIjtcbiAgICBpbXBvcnQge2RlYm91bmNlfSBmcm9tICdsb2Rhc2gnO1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICAgICAgICBwZXJQYWdlOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgbmV3c0xldHRlcjogJ2NvbnRhY3RzL25ld3NMZXR0ZXInXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICBpbnRlcm5hbFNlYXJjaCAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NvbnRhY3RzL2dldE5ld3NMZXR0ZXInLCB0aGlzLmZpbHRlcnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhbmRsZVNlYXJjaDogZGVib3VuY2UoKHNlYXJjaCwgdm0pID0+IHtcbiAgICAgICAgICAgICAgICB2bS5maWx0ZXJzLnNlYXJjaCA9IHNlYXJjaDtcbiAgICAgICAgICAgICAgICB2bS5maWx0ZXJzLnBhZ2UgPSAxO1xuICAgICAgICAgICAgICAgIHZtLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgICAgICB9LCA1MDApLFxuICAgICAgICAgICAgaGFuZGxlQ2hhbmdlUGFnZSAocGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycy5wYWdlID0gcGFnZTtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXN5bmMgZXhwb3J0RXhjZWwgKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHZzLmxvYWRpbmcoKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBOZXdzTGV0dGVyU2VydmljZS5leHBvcnRFeGNlbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuJHZzLmxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW91bnRlZCAoKSB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZURlc3Ryb3kgKCkge1xuXG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG4gICAgQGltcG9ydCBcIi4vLi4vLi4vYXNzZXRzL3Njc3MvdnVlc2F4L3BhZ2VzL3Byb2ZpbGUuc2Nzc1wiO1xuPC9zdHlsZT5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQURBO0FBTUE7QUFDQTtBQUVBO0FBREE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQWRBO0FBQUE7QUFDQTtBQURBO0FBZ0JBO0FBQ0E7QUFqQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBcENBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/dashboard/Dashboard.vue?vue&type=script&lang=js& ***!
  \*************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _common_components_StatisticsCardLine__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../common/components/StatisticsCardLine */ \"./src/modules/common/components/StatisticsCardLine.vue\");\n/* harmony import */ var vue_simple_calendar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vue-simple-calendar */ \"./node_modules/vue-simple-calendar/dist/CalendarView.umd.js\");\n/* harmony import */ var vue_simple_calendar__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(vue_simple_calendar__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _common_services_AuthService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/services/AuthService */ \"./src/modules/common/services/AuthService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    calendar: 'dashboard/calendar'\n  }), {\n    calendarLabels: function calendarLabels() {\n      return [{\n        text: 'To start',\n        value: 'deadlines',\n        color: 'danger'\n      }, {\n        text: 'In progress',\n        value: 'progress',\n        color: 'warning'\n      }, {\n        text: 'Under review',\n        value: 'to_review',\n        color: 'secondary'\n      }, {\n        text: 'Completed',\n        value: 'finished',\n        color: 'success'\n      }];\n    },\n    windowWidth: function windowWidth() {\n      return this.$store.state.windowWidth;\n    }\n  }),\n  data: function data() {\n    return {\n      startDate: new Date(),\n      calendarView: 'month'\n    };\n  },\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapMutations\"])({\n    setSelectedProject: 'projects/SELECTED_PROJECT'\n  }), {\n    updateMonth: function updateMonth(val) {\n      this.startDate = this.$refs.calendar.getIncrementedPeriod(val);\n      this.searchCalendar();\n    },\n    goToProjectDetails: function goToProjectDetails(project) {\n      this.setSelectedProject(project);\n      this.$router.push({\n        name: 'EditProject',\n        params: {\n          id: project.id\n        }\n      });\n    },\n    searchCalendar: function searchCalendar() {\n      this.$store.dispatch('dashboard/getDeadlines', {\n        date: moment__WEBPACK_IMPORTED_MODULE_11___default()(this.startDate).format('YYYY-MM-DD')\n      });\n    },\n    isAdmin: function isAdmin() {\n      return _common_services_AuthService__WEBPACK_IMPORTED_MODULE_12__[\"default\"].isAdmin();\n    }\n  }),\n  components: {\n    StatisticsCardLine: _common_components_StatisticsCardLine__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n    CalendarView: vue_simple_calendar__WEBPACK_IMPORTED_MODULE_10__[\"CalendarView\"]\n  },\n  mounted: function mounted() {\n    this.searchCalendar();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvZGFzaGJvYXJkL0Rhc2hib2FyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL0Rhc2hib2FyZC52dWU/OThmYSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cImRhc2hib2FyZC1hbmFseXRpY3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWNvbCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwic2ltcGxlLWNhbGVuZGFyLWFwcFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtY2FyZCBhcHAtZml4ZWQtaGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2FsZW5kYXItdmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9XCJjYWxlbmRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaXNwbGF5UGVyaW9kVW9tPVwiY2FsZW5kYXJWaWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNob3ctZGF0ZT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpldmVudHM9XCJjYWxlbmRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpldmVudFRvcD1cIndpbmRvd1dpZHRoIDw9IDQwMCA/ICcycmVtJyA6ICczcmVtJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Qm9yZGVySGVpZ2h0PVwiMHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRDb250ZW50SGVpZ2h0PVwiMS42NXJlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhlbWUtZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljay1ldmVudD1cImdvVG9Qcm9qZWN0RGV0YWlsc1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzbG90PVwiaGVhZGVyXCIgY2xhc3M9XCJtYi0xMlwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1yb3cgbm8tZ3V0dGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEN1cnJlbnQgTW9udGggLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtY29sIHNtOnctMS8zIHctZnVsbCBzbTpteS0wIG15LTMgbXgtYXV0byBmbGV4XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtY29sIHNtOnctMS8zIHctZnVsbCBzbTpteS0wIG15LTMgbXgtYXV0byBmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG14LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlYXRoZXItaWNvbiBpY29uPVwiQ2hldnJvbkxlZnRJY29uXCIgQGNsaWNrPVwidXBkYXRlTW9udGgoLTEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmdDbGFzc2VzPVwidy01IGgtNSBtLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHJvdW5kZWQtZnVsbFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0zIHRleHQteGwgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1uby13cmFwXCI+e3sgc3RhcnREYXRlIHwgbW9udGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZWF0aGVyLWljb24gaWNvbj1cIkNoZXZyb25SaWdodEljb25cIiBAY2xpY2s9XCJ1cGRhdGVNb250aCgxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZnQ2xhc3Nlcz1cInctNSBoLTUgbS0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGJnLXByaW1hcnkgdGV4dC13aGl0ZSByb3VuZGVkLWZ1bGxcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgc206dy0xLzMgdy1mdWxsIHNtOm15LTAgbXktMyBmbGV4IGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGp1c3RpZnktc3RhcnQganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWZvcj1cIihsYWJlbCwgaW5kZXgpIGluIGNhbGVuZGFyTGFiZWxzXCIgOmtleT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG1yLTQgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMyB3LTMgaW5saW5lLWJsb2NrIHJvdW5kZWQtZnVsbCBtci0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJ2JnLScgKyBsYWJlbC5jb2xvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgbGFiZWwudGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2FsZW5kYXItdmlldz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzLCBtYXBNdXRhdGlvbnN9IGZyb20gJ3Z1ZXgnO1xuICAgIGltcG9ydCBTdGF0aXN0aWNzQ2FyZExpbmUgZnJvbSAnLi4vY29tbW9uL2NvbXBvbmVudHMvU3RhdGlzdGljc0NhcmRMaW5lJztcbiAgICBpbXBvcnQge0NhbGVuZGFyVmlld30gZnJvbSBcInZ1ZS1zaW1wbGUtY2FsZW5kYXJcIjtcbiAgICBpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG4gICAgaW1wb3J0IEF1dGhTZXJ2aWNlIGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvQXV0aFNlcnZpY2VcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgICAgIGNhbGVuZGFyOiAnZGFzaGJvYXJkL2NhbGVuZGFyJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2FsZW5kYXJMYWJlbHMgKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt0ZXh0OiAnVG8gc3RhcnQnLCB2YWx1ZTogJ2RlYWRsaW5lcycsIGNvbG9yOiAnZGFuZ2VyJ30sXG4gICAgICAgICAgICAgICAgICAgIHt0ZXh0OiAnSW4gcHJvZ3Jlc3MnLCB2YWx1ZTogJ3Byb2dyZXNzJywgY29sb3I6ICd3YXJuaW5nJ30sXG4gICAgICAgICAgICAgICAgICAgIHt0ZXh0OiAnVW5kZXIgcmV2aWV3JywgdmFsdWU6ICd0b19yZXZpZXcnLCBjb2xvcjogJ3NlY29uZGFyeSd9LFxuICAgICAgICAgICAgICAgICAgICB7dGV4dDogJ0NvbXBsZXRlZCcsIHZhbHVlOiAnZmluaXNoZWQnLCBjb2xvcjogJ3N1Y2Nlc3MnfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdpbmRvd1dpZHRoICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUud2luZG93V2lkdGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF0YSAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICBjYWxlbmRhclZpZXc6ICdtb250aCcsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIC4uLm1hcE11dGF0aW9ucyh7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRQcm9qZWN0OiAncHJvamVjdHMvU0VMRUNURURfUFJPSkVDVCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHVwZGF0ZU1vbnRoICh2YWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuJHJlZnMuY2FsZW5kYXIuZ2V0SW5jcmVtZW50ZWRQZXJpb2QodmFsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENhbGVuZGFyKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ29Ub1Byb2plY3REZXRhaWxzIChwcm9qZWN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFByb2plY3QocHJvamVjdCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goe25hbWU6ICdFZGl0UHJvamVjdCcsIHBhcmFtczoge2lkOiBwcm9qZWN0LmlkfX0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaENhbGVuZGFyICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZGFzaGJvYXJkL2dldERlYWRsaW5lcycsIHtkYXRlOiBtb21lbnQodGhpcy5zdGFydERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNBZG1pbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEF1dGhTZXJ2aWNlLmlzQWRtaW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgU3RhdGlzdGljc0NhcmRMaW5lLFxuICAgICAgICAgICAgQ2FsZW5kYXJWaWV3LFxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ2FsZW5kYXIoKTtcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbiAgICBAaW1wb3J0IFwiLi4vLi4vYXNzZXRzL3Njc3MvdnVlc2F4L2FwcHMvc2ltcGxlLWNhbGVuZGFyLnNjc3NcIjtcblxuICAgICNkYXNoYm9hcmQtYW5hbHl0aWNzIHtcbiAgICAgICAgLmdyZWV0LXVzZXIge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAuZGVjb3JlLWxlZnQge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmRlY29yZS1yaWdodCB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYShtYXgtd2lkdGg6IDU3NnB4KSB7XG4gICAgICAgICAgICAuZGVjb3JlLWxlZnQsIC5kZWNvcmUtcmlnaHQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbjwvc3R5bGU+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFkQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUVBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFtQkE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFoREEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/Edit.vue?vue&type=script&lang=js&":
/*!**********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/Edit.vue?vue&type=script&lang=js& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/Form */ \"./src/modules/projects/clientProjects/components/Form.vue\");\n/* harmony import */ var _components_Details__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/Details */ \"./src/modules/projects/clientProjects/components/Details.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    project: 'projects/selectedProject'\n  })),\n  components: {\n    Project: _components_Form__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n    ProjectDetails: _components_Details__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n  },\n  data: function data() {\n    return {\n      updating: false\n    };\n  },\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapMutations\"])({\n    setSelectedProject: 'projects/SELECTED_PROJECT'\n  }), {\n    save: function save(project) {\n      var vm = this;\n      vm.updating = true;\n\n      var newProject = _objectSpread({}, project);\n\n      vm.setSelectedProject(newProject);\n      this.$store.dispatch('projects/updateProject', project).then(function () {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].success('Operation completed', 'Project updated successfully');\n        history.back();\n      }, function (error) {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_12__[\"extractErrorMessage\"])(error));\n      });\n    },\n    fileAdded: function fileAdded(_ref) {\n      var project = _ref.project,\n          encodedImage = _ref.encodedImage;\n      var vm = this;\n      vm.updating = true;\n      this.$store.dispatch('projects/uploadLogo', {\n        project: project,\n        image: encodedImage\n      }).then(function () {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].success('Operation completed', 'Project logo updated successfully');\n        vm.updating = false;\n      }, function (error) {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_12__[\"extractErrorMessage\"])(error));\n        vm.updating = false;\n      });\n    }\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL0VkaXQudnVlPzVlNmUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgc206dy1mdWxsIG1kOnctZnVsbCBsZzp3LTEvMSBkLXRoZW1lLWRhcmstYmdcIj5cbiAgICAgICAgPHByb2plY3Qgdi1pZj1cInByb2plY3QuY2FuX2VkaXRcIiA6aXNOZXc9XCJmYWxzZVwiIDpsb2FkaW5nPVwidXBkYXRpbmdcIiA6cHJvamVjdD1cInsuLi5wcm9qZWN0fVwiIHYtb246c2F2ZT1cInNhdmVcIlxuICAgICAgICAgICAgICAgICBAZmlsZUFkZGVkPVwiZmlsZUFkZGVkXCIvPlxuICAgICAgICA8cHJvamVjdC1kZXRhaWxzIHYtaWY9XCIhcHJvamVjdC5jYW5fZWRpdFwiIDpwcm9qZWN0PVwiey4uLnByb2plY3R9XCIvPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQge21hcEdldHRlcnMsIG1hcE11dGF0aW9uc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IFByb2plY3QgZnJvbSAnLi9jb21wb25lbnRzL0Zvcm0nO1xuICAgIGltcG9ydCBQcm9qZWN0RGV0YWlscyBmcm9tICcuL2NvbXBvbmVudHMvRGV0YWlscyc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvblNlcnZpY2UgZnJvbSBcIi4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlXCI7XG4gICAgaW1wb3J0IHtleHRyYWN0RXJyb3JNZXNzYWdlfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0OiAncHJvamVjdHMvc2VsZWN0ZWRQcm9qZWN0J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgUHJvamVjdCxcbiAgICAgICAgICAgIFByb2plY3REZXRhaWxzLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdXBkYXRpbmc6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICAuLi5tYXBNdXRhdGlvbnMoe1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkUHJvamVjdDogJ3Byb2plY3RzL1NFTEVDVEVEX1BST0pFQ1QnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNhdmUgKHByb2plY3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Byb2plY3QgPSB7Li4ucHJvamVjdH07XG4gICAgICAgICAgICAgICAgdm0uc2V0U2VsZWN0ZWRQcm9qZWN0KG5ld1Byb2plY3QpO1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdwcm9qZWN0cy91cGRhdGVQcm9qZWN0JywgcHJvamVjdCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdQcm9qZWN0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xuICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS51cGRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKCdPT1BTIScsIGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWxlQWRkZWQgKHtwcm9qZWN0LCBlbmNvZGVkSW1hZ2V9KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncHJvamVjdHMvdXBsb2FkTG9nbycsIHtwcm9qZWN0LCBpbWFnZTogZW5jb2RlZEltYWdlfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdQcm9qZWN0IGxvZ28gdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5lcnJvcignT09QUyEnLCBleHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFEQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBRUE7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1QkE7QUFmQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/List.vue?vue&type=script&lang=js&":
/*!**********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/List.vue?vue&type=script&lang=js& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! regenerator-runtime/runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _users_services_User__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../users/services/User */ \"./src/modules/users/services/User.js\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      filters: {\n        perPage: 15,\n        page: 1,\n        search: null\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_11__[\"mapGetters\"])({\n    projects: 'projects/projects',\n    userData: 'userData'\n  })),\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_11__[\"mapMutations\"])({\n    setSelectedProject: 'projects/SELECTED_PROJECT'\n  }), {\n    internalSearch: function internalSearch() {\n      this.$store.dispatch('projects/getProjects', this.filters);\n    },\n    isAdmin: function isAdmin() {\n      return _users_services_User__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isAdmin(this.userData);\n    },\n    handleSearch: Object(lodash__WEBPACK_IMPORTED_MODULE_12__[\"debounce\"])(function (search, vm) {\n      vm.filters.search = search;\n      vm.filters.page = 1;\n      vm.internalSearch();\n    }, 500),\n    handleChangePage: function handleChangePage(page) {\n      this.filters.page = page;\n      this.internalSearch();\n    },\n    getCalendarClass: function getCalendarClass(project) {\n      return moment__WEBPACK_IMPORTED_MODULE_13___default()().isBefore(moment__WEBPACK_IMPORTED_MODULE_13___default()(project.due_date)) ? 'text-primary' : 'text-danger';\n    },\n    editProject: function editProject(project) {\n      this.setSelectedProject(project);\n      this.$router.push({\n        name: 'EditProject',\n        params: {\n          id: project.id\n        }\n      });\n    },\n    deleteProject: function deleteProject(project) {\n      var _this = this;\n\n      var vm = this;\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_15__[\"default\"].confirmCancel('Operation confirmation', \"Are you sure you want to delete \".concat(project.name, \" project?\"),\n      /*#__PURE__*/\n      Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _this.$store.dispatch('projects/deleteProject', project).then(function () {\n                  vm.internalSearch();\n                }, function (error) {\n                  _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_15__[\"default\"].error(Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_16__[\"extractErrorMessage\"])(error));\n                });\n\n              case 1:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      })));\n    },\n    getChipColor: function getChipColor(status) {\n      switch (status) {\n        case 'DONE':\n          return 'bg-primary-gradient';\n\n        case 'CANCELED':\n          return 'bg-danger-gradient';\n\n        case 'REJECTED':\n          return 'bg-danger-gradient';\n\n        case 'TODO':\n          return 'bg-primary-gradient';\n\n        case 'DOING':\n          return 'bg-warning-gradient';\n\n        case 'IN_REVIEW':\n          return 'bg-warning-gradient';\n\n        case 'DRAFT':\n          return 'bg-grey';\n      }\n\n      return 'bg-grey';\n    }\n  }),\n  mounted: function mounted() {\n    this.internalSearch();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL0xpc3QudnVlPzkxODUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJjYWwtcHJvamVjdHNcIj5cblxuICAgICAgICA8dngtY2FyZD5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10YWJsZSBjbGFzcz1cImdnLW5vLWJvZHlcIiA6c3N0PVwidHJ1ZVwiIDpkYXRhPVwicHJvamVjdHMuZGF0YVwiIHNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNlYXJjaD1cIihlKSA9PiBoYW5kbGVTZWFyY2goZSwgdGhpcylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90PVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlByb2plY3RzPC9oMz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJmbG9hdC1yaWdodCBkLWlubGluZS1ibG9ja1wiIHRvPVwiL3Byb2plY3RzL2NyZWF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCIgaWNvbj1cImFkZF9jaXJjbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdnMtdGFibGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1mb3I9XCJwcm9qZWN0IGluIHByb2plY3RzLmRhdGFcIiA6a2V5PVwicHJvamVjdC5pZFwiIGNsYXNzPVwidngtY29sIHctZnVsbCBsZzp3LTEvMyBzbTp3LTEvMiBtYi1iYXNlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2eC1jYXJkIGNsYXNzPVwicC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtYXZhdGFyIDpzcmM9XCJwcm9qZWN0LmxvZ29cIiBjbGFzcz1cIm14LWF1dG8gbWItNiBibG9jayB2cy1hdmF0YXItb2JqZWN0LWNvdmVyXCIgc2l6ZT1cIjgwcHhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3twcm9qZWN0Lm5hbWV9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC13aGl0ZSBweC00IHB5LTEgcm91bmRlZC1sZ1wiIDpjbGFzcz1cImdldENoaXBDb2xvcihwcm9qZWN0LnN0YXR1cylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Byb2plY3QucmVhZGFibGVfc3RhdHVzfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbC10b3AtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dngtdG9vbHRpcCB0ZXh0PVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNsYXNzPVwiaW5saW5lLWJsb2NrIG14LTFcIiBAY2xpY2s9XCJlZGl0UHJvamVjdChwcm9qZWN0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCIgaWNvbj1cImVkaXRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92eC10b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2eC10b29sdGlwIHRleHQ9XCJEZWxldGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiB2LWlmPVwiaXNBZG1pbigpXCIgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbXgtMVwiIEBjbGljaz1cImRlbGV0ZVByb2plY3QocHJvamVjdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCIgc2l6ZT1cInNtYWxsXCIgaWNvbj1cImRlbGV0ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Z4LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90PVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWRpdmlkZXIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlYXRoZXItaWNvbiBpY29uPVwiRmlsZUljb25cIiBzdmdDbGFzc2VzPVwiaC01IHctNSB0ZXh0LXByaW1hcnkgc3Ryb2tlLWN1cnJlbnRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPnt7cHJvamVjdC5maWxlc19jb3VudH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVhdGhlci1pY29uIGljb249XCJDYWxlbmRhckljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdmdDbGFzc2VzPVwiYGgtNSB3LTUgc3Ryb2tlLWN1cnJlbnQgJHtnZXRDYWxlbmRhckNsYXNzKHByb2plY3QpfWBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPnt7cHJvamVjdC5kdWVfZGF0ZSB8IGRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3Z4LWNhcmQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgdy1mdWxsIG1iLWJhc2UgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXBhZ2luYXRpb24gdi1pZj1cInByb2plY3RzLmRhdGEgJiYgcHJvamVjdHMuZGF0YS5sZW5ndGggPiAwXCIgY2xhc3M9XCJtdC02XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRvdGFsPVwicHJvamVjdHMubWV0YS5wYWdpbmF0aW9uLnRvdGFsX3BhZ2VzXCIgdi1tb2RlbD1cImZpbHRlcnMucGFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVDaGFuZ2VQYWdlXCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC92eC1jYXJkPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQge21hcEdldHRlcnMsIG1hcE11dGF0aW9uc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSAnbG9kYXNoJztcbiAgICBpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG4gICAgaW1wb3J0IFVzZXJTZXJ2aWNlIGZyb20gXCIuLi8uLi91c2Vycy9zZXJ2aWNlcy9Vc2VyXCI7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvblNlcnZpY2UgZnJvbSBcIi4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlXCI7XG4gICAgaW1wb3J0IHtleHRyYWN0RXJyb3JNZXNzYWdlfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHBlclBhZ2U6IDE1LFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2g6IG51bGwsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgICAgIHByb2plY3RzOiAncHJvamVjdHMvcHJvamVjdHMnLFxuICAgICAgICAgICAgICAgIHVzZXJEYXRhOiAndXNlckRhdGEnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgLi4ubWFwTXV0YXRpb25zKHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFByb2plY3Q6ICdwcm9qZWN0cy9TRUxFQ1RFRF9QUk9KRUNUJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW50ZXJuYWxTZWFyY2ggKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdwcm9qZWN0cy9nZXRQcm9qZWN0cycsIHRoaXMuZmlsdGVycyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNBZG1pbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJTZXJ2aWNlLmlzQWRtaW4odGhpcy51c2VyRGF0YSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFuZGxlU2VhcmNoOiBkZWJvdW5jZSgoc2VhcmNoLCB2bSkgPT4ge1xuICAgICAgICAgICAgICAgIHZtLmZpbHRlcnMuc2VhcmNoID0gc2VhcmNoO1xuICAgICAgICAgICAgICAgIHZtLmZpbHRlcnMucGFnZSA9IDE7XG4gICAgICAgICAgICAgICAgdm0uaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgIH0sIDUwMCksXG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2VQYWdlIChwYWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzLnBhZ2UgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDYWxlbmRhckNsYXNzIChwcm9qZWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbWVudCgpLmlzQmVmb3JlKG1vbWVudChwcm9qZWN0LmR1ZV9kYXRlKSkgPyAndGV4dC1wcmltYXJ5JyA6ICd0ZXh0LWRhbmdlcic7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWRpdFByb2plY3QgKHByb2plY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkUHJvamVjdChwcm9qZWN0KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7bmFtZTogJ0VkaXRQcm9qZWN0JywgcGFyYW1zOiB7aWQ6IHByb2plY3QuaWR9fSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlUHJvamVjdCAocHJvamVjdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmNvbmZpcm1DYW5jZWwoJ09wZXJhdGlvbiBjb25maXJtYXRpb24nLCBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAke3Byb2plY3QubmFtZX0gcHJvamVjdD9gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdwcm9qZWN0cy9kZWxldGVQcm9qZWN0JywgcHJvamVjdCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2bS5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlwQ29sb3IgKHN0YXR1cykge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0RPTkUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdiZy1wcmltYXJ5LWdyYWRpZW50JztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ0FOQ0VMRUQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdiZy1kYW5nZXItZ3JhZGllbnQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdSRUpFQ1RFRCc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2JnLWRhbmdlci1ncmFkaWVudCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RPRE8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdiZy1wcmltYXJ5LWdyYWRpZW50JztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnRE9JTkcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdiZy13YXJuaW5nLWdyYWRpZW50JztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnSU5fUkVWSUVXJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnYmctd2FybmluZy1ncmFkaWVudCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0RSQUZUJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnYmctZ3JleSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAnYmctZ3JleSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cblxuPC9zdHlsZT5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFEQTtBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUVBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQWRBO0FBQ0E7QUFlQTtBQUNBO0FBdERBO0FBd0RBO0FBQ0E7QUFDQTtBQTFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/List.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/New.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/New.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/Form */ \"./src/modules/projects/clientProjects/components/Form.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    projects: 'projects/projects',\n    isLoading: 'projects/isLoading'\n  })),\n  components: {\n    Project: _components_Form__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  data: function data() {\n    return {\n      project: {\n        can_edit: true,\n        logo: 'assets/project.png'\n      },\n      saving: false\n    };\n  },\n  methods: {\n    save: function save(project) {\n      var vm = this;\n      vm.saving = true;\n      vm.$store.dispatch('projects/createProject', project).then(function () {\n        vm.saving = false;\n        history.back();\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'Project created successfully');\n      }, function (error) {\n        vm.saving = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vTmV3LnZ1ZT83MzljIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwidngtY29sIHNtOnctZnVsbCBtZDp3LWZ1bGwgbGc6dy0xLzEgZC10aGVtZS1kYXJrLWJnXCI+XG4gICAgICAgIDxwcm9qZWN0IDppc05ldz1cInRydWVcIiA6bG9hZGluZz1cInNhdmluZ1wiIDpwcm9qZWN0PVwicHJvamVjdFwiIHYtb246c2F2ZT1cInNhdmVcIj48L3Byb2plY3Q+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVyc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IFByb2plY3QgZnJvbSAnLi9jb21wb25lbnRzL0Zvcm0nO1xuICAgIGltcG9ydCBOb3RpZmljYXRpb25TZXJ2aWNlIGZyb20gXCIuLi8uLi9jb21tb24vc2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZVwiO1xuICAgIGltcG9ydCB7ZXh0cmFjdEVycm9yTWVzc2FnZX0gZnJvbSBcIi4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9VdGlsaXR5U2VydmljZVwiO1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgcHJvamVjdHM6ICdwcm9qZWN0cy9wcm9qZWN0cycsXG4gICAgICAgICAgICAgICAgaXNMb2FkaW5nOiAncHJvamVjdHMvaXNMb2FkaW5nJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgUHJvamVjdFxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvamVjdDoge1xuICAgICAgICAgICAgICAgICAgICBjYW5fZWRpdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9nbzogJ2Fzc2V0cy9wcm9qZWN0LnBuZydcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNhdmluZzogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIHNhdmUgKHByb2plY3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdm0uc2F2aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2bS4kc3RvcmUuZGlzcGF0Y2goJ3Byb2plY3RzL2NyZWF0ZVByb2plY3QnLCBwcm9qZWN0KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdm0uc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoJ09wZXJhdGlvbiBjb21wbGV0ZWQnLCAnUHJvamVjdCBjcmVhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5lcnJvcignT09QUyEnLCBleHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWkE7QUFuQkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/ToQuote.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/ToQuote.vue?vue&type=script&lang=js& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_10__);\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      filters: {\n        perPage: 10,\n        page: 1,\n        search: null\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    projects: 'projects/projectsToQuote'\n  })),\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapMutations\"])({\n    setSelectedProject: 'projects/SELECTED_PROJECT'\n  }), {\n    internalSearch: function internalSearch() {\n      this.$store.dispatch('projects/getProjectsToQuote', this.filters);\n    },\n    handleSearch: Object(lodash__WEBPACK_IMPORTED_MODULE_9__[\"debounce\"])(function (search, vm) {\n      vm.filters.search = search;\n      vm.filters.page = 1;\n      vm.internalSearch();\n    }, 500),\n    handleChangePage: function handleChangePage(page) {\n      this.filters.page = page;\n      this.internalSearch();\n    },\n    getCalendarClass: function getCalendarClass(project) {\n      return moment__WEBPACK_IMPORTED_MODULE_10___default()().isBefore(moment__WEBPACK_IMPORTED_MODULE_10___default()(project.due_date)) ? 'text-primary' : 'text-danger';\n    },\n    editProject: function editProject(project) {\n      this.setSelectedProject(project);\n      this.$router.push({\n        name: 'EditProject',\n        params: {\n          id: project.id\n        }\n      });\n    },\n    getChipColor: function getChipColor(status) {\n      switch (status) {\n        case 'DONE':\n          return 'bg-primary-gradient';\n\n        case 'CANCELED':\n          return 'bg-danger-gradient';\n\n        case 'REJECTED':\n          return 'bg-danger-gradient';\n\n        case 'TODO':\n          return 'bg-primary-gradient';\n\n        case 'DOING':\n          return 'bg-warning-gradient';\n\n        case 'IN_REVIEW':\n          return 'bg-warning-gradient';\n\n        case 'DRAFT':\n          return 'bg-grey';\n      }\n\n      return 'bg-grey';\n    }\n  }),\n  mounted: function mounted() {\n    this.internalSearch();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvVG9RdW90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL1RvUXVvdGUudnVlPzIxODIiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJjYWwtcHJvamVjdHNcIj5cblxuICAgICAgICA8dngtY2FyZD5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10YWJsZSBjbGFzcz1cImdnLW5vLWJvZHlcIiA6c3N0PVwidHJ1ZVwiIDpkYXRhPVwicHJvamVjdHMuZGF0YVwiIHNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNlYXJjaD1cIihlKSA9PiBoYW5kbGVTZWFyY2goZSwgdGhpcylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90PVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlByb2plY3RzPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdnMtdGFibGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1mb3I9XCJwcm9qZWN0IGluIHByb2plY3RzLmRhdGFcIiA6a2V5PVwicHJvamVjdC5pZFwiIGNsYXNzPVwidngtY29sIHctZnVsbCBsZzp3LTEvMyBzbTp3LTEvMiBtYi1iYXNlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2eC1jYXJkIGNsYXNzPVwicC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtYXZhdGFyIDpzcmM9XCJwcm9qZWN0LmxvZ29cIiBjbGFzcz1cIm14LWF1dG8gbWItNiBibG9jayB2cy1hdmF0YXItb2JqZWN0LWNvdmVyXCIgc2l6ZT1cIjgwcHhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3twcm9qZWN0Lm5hbWV9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWwtdG9wLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZ4LXRvb2x0aXAgdGV4dD1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBteC0xXCIgQGNsaWNrPVwiZWRpdFByb2plY3QocHJvamVjdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiIGljb249XCJlZGl0XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdngtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Q9XCJmb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtZGl2aWRlci8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVhdGhlci1pY29uIGljb249XCJGaWxlSWNvblwiIHN2Z0NsYXNzZXM9XCJoLTUgdy01IHRleHQtcHJpbWFyeSBzdHJva2UtY3VycmVudFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+e3twcm9qZWN0LmZpbGVzX2NvdW50fX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZWF0aGVyLWljb24gaWNvbj1cIkNhbGVuZGFySWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN2Z0NsYXNzZXM9XCJgaC01IHctNSBzdHJva2UtY3VycmVudCAke2dldENhbGVuZGFyQ2xhc3MocHJvamVjdCl9YFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+e3twcm9qZWN0LmR1ZV9kYXRlIHwgZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdngtY2FyZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtcm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWNvbCB3LWZ1bGwgbWItYmFzZSB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtcGFnaW5hdGlvbiBjbGFzcz1cIm10LTZcIiA6dG90YWw9XCJwcm9qZWN0cy5tZXRhLnBhZ2luYXRpb24udG90YWxfcGFnZXNcIiB2LW1vZGVsPVwiZmlsdGVycy5wYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZUNoYW5nZVBhZ2VcIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L3Z4LWNhcmQ+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVycywgbWFwTXV0YXRpb25zfSBmcm9tICd2dWV4JztcbiAgICBpbXBvcnQge2RlYm91bmNlfSBmcm9tICdsb2Rhc2gnO1xuICAgIGltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgZGF0YSAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgcGVyUGFnZTogMTAsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaDogbnVsbCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgcHJvamVjdHM6ICdwcm9qZWN0cy9wcm9qZWN0c1RvUXVvdGUnXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICAuLi5tYXBNdXRhdGlvbnMoe1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkUHJvamVjdDogJ3Byb2plY3RzL1NFTEVDVEVEX1BST0pFQ1QnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnRlcm5hbFNlYXJjaCAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Byb2plY3RzL2dldFByb2plY3RzVG9RdW90ZScsIHRoaXMuZmlsdGVycyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFuZGxlU2VhcmNoOiBkZWJvdW5jZSgoc2VhcmNoLCB2bSkgPT4ge1xuICAgICAgICAgICAgICAgIHZtLmZpbHRlcnMuc2VhcmNoID0gc2VhcmNoO1xuICAgICAgICAgICAgICAgIHZtLmZpbHRlcnMucGFnZSA9IDE7XG4gICAgICAgICAgICAgICAgdm0uaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgIH0sIDUwMCksXG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2VQYWdlIChwYWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzLnBhZ2UgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDYWxlbmRhckNsYXNzIChwcm9qZWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbWVudCgpLmlzQmVmb3JlKG1vbWVudChwcm9qZWN0LmR1ZV9kYXRlKSkgPyAndGV4dC1wcmltYXJ5JyA6ICd0ZXh0LWRhbmdlcic7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWRpdFByb2plY3QgKHByb2plY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkUHJvamVjdChwcm9qZWN0KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7bmFtZTogJ0VkaXRQcm9qZWN0JywgcGFyYW1zOiB7aWQ6IHByb2plY3QuaWR9fSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0Q2hpcENvbG9yIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdET05FJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnYmctcHJpbWFyeS1ncmFkaWVudCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0NBTkNFTEVEJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnYmctZGFuZ2VyLWdyYWRpZW50JztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnUkVKRUNURUQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdiZy1kYW5nZXItZ3JhZGllbnQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdUT0RPJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnYmctcHJpbWFyeS1ncmFkaWVudCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0RPSU5HJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnYmctd2FybmluZy1ncmFkaWVudCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0lOX1JFVklFVyc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2JnLXdhcm5pbmctZ3JhZGllbnQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdEUkFGVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2JnLWdyZXknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JnLWdyZXknO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbW91bnRlZCAoKSB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG5cbjwvc3R5bGU+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkRBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFEQTtBQU9BO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFFQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFkQTtBQUNBO0FBZUE7QUFDQTtBQXpDQTtBQTJDQTtBQUNBO0FBQ0E7QUE1REEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/ToQuote.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Details.vue?vue&type=script&lang=js&":
/*!************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/components/Details.vue?vue&type=script&lang=js& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es6_array_find__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es6.array.find */ \"./node_modules/core-js/modules/es6.array.find.js\");\n/* harmony import */ var core_js_modules_es6_array_find__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_find__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es6.array.index-of */ \"./node_modules/core-js/modules/es6.array.index-of.js\");\n/* harmony import */ var core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es6.regexp.replace */ \"./node_modules/core-js/modules/es6.regexp.replace.js\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! regenerator-runtime/runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es6.array.map */ \"./node_modules/core-js/modules/es6.array.map.js\");\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es6_array_sort__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es6.array.sort */ \"./node_modules/core-js/modules/es6.array.sort.js\");\n/* harmony import */ var core_js_modules_es6_array_sort__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_sort__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuejs_datepicker__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! vuejs-datepicker */ \"./node_modules/vuejs-datepicker/dist/vuejs-datepicker.esm.js\");\n/* harmony import */ var _common_components_MediaUpload__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../common/components/MediaUpload */ \"./src/modules/common/components/MediaUpload.vue\");\n/* harmony import */ var _common_components_FileUploader__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../common/components/FileUploader */ \"./src/modules/common/components/FileUploader.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n/* harmony import */ var _services_Project__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../services/Project */ \"./src/modules/projects/clientProjects/services/Project.js\");\n/* harmony import */ var _users_services_User__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../users/services/User */ \"./src/modules/users/services/User.js\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../../store */ \"./src/store.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    project: {\n      required: true\n    }\n  },\n  data: function data() {\n    return {\n      mySelf: this,\n      statuses: [],\n      status: {},\n      flow: {},\n      flowConfig: {\n        singleFile: true,\n        uploadOnClick: true,\n        testChunks: false,\n        allowDuplicateUploads: true,\n        attributes: {\n          accept: '*/*'\n        },\n        target: \"\".concat(\"https://api.geotechnics.coding.al/api/\", \"v1/projects/\").concat(this.$route.params.id, \"/actions/uploadDocument\"),\n        headers: {\n          Authorization: \"Bearer \".concat(_store__WEBPACK_IMPORTED_MODULE_23__[\"default\"].getters['token'])\n        }\n      },\n      newMedia: {},\n      showRespondPopup: false,\n      showProgressPopup: false,\n      showAcceptancePopup: false,\n      showUploadPopup: false,\n      acceptData: {},\n      selected: {},\n      folderNames: [],\n      rejection: {},\n      progress: {\n        amount: 0\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_24__[\"mapGetters\"])({\n    userData: 'userData'\n  }), {\n    selectedStatus: {\n      get: function get() {\n        return this.status;\n      },\n      set: function set(val) {\n        this.status = val;\n        var value = this.status.value;\n        _services_Project__WEBPACK_IMPORTED_MODULE_21__[\"default\"].updateStatus(this.project.id, value).then(function () {\n          history.back();\n        });\n      }\n    },\n    groupedFiles: function groupedFiles() {\n      if (this.project && this.project.files && this.project.files.length) {\n        return Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_20__[\"groupArrayByKey\"])(this.project.files, 'folder_name').sort(function (a, b) {\n          var key1 = a.key.toLowerCase();\n          var key2 = b.key.toLowerCase();\n\n          if (key1 < key2) {\n            return -1;\n          }\n\n          if (key1 > key2) {\n            return 1;\n          }\n\n          return 0;\n        });\n      }\n\n      return [];\n    }\n  }),\n  components: {\n    Datepicker: vuejs_datepicker__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n    MediaUpload: _common_components_MediaUpload__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n    FileUploader: _common_components_FileUploader__WEBPACK_IMPORTED_MODULE_18__[\"default\"]\n  },\n  methods: {\n    selectedItem: function selectedItem() {\n      this.$forceUpdate();\n    },\n    addFolderName: function addFolderName(name) {\n      this.folderNames.push({\n        name: name\n      });\n      this.newMedia.folderName = [{\n        name: name\n      }];\n    },\n    isAdmin: function isAdmin() {\n      return _users_services_User__WEBPACK_IMPORTED_MODULE_22__[\"default\"].isAdmin(this.userData);\n    },\n    onFileSubmitted: function onFileSubmitted(flow) {\n      this.flow = flow;\n    },\n    upload: function upload() {\n      this.flow.opts.query.ggName = this.newMedia.name;\n      this.flow.opts.query.ggDescription = this.newMedia.description;\n      var folderName = this.newMedia.folderName && this.newMedia.folderName.length ? this.newMedia.folderName[0] : this.newMedia.folderName;\n\n      try {\n        this.flow.opts.query.ggFolderName = folderName.name;\n      } catch (e) {\n        console.log(e);\n      }\n\n      this.flow.upload();\n    },\n    onFileSuccess: function onFileSuccess(response) {\n      response = JSON.parse(response.message);\n\n      if (!this.project.files) {\n        this.project.files = [];\n      }\n\n      this.project.files.push(response.data);\n      this.prepareSelectedDocuments();\n      this.showUploadPopup = false;\n    },\n    showUploaderPopup: function showUploaderPopup() {\n      this.flow = {};\n      this.newMedia = {};\n      this.showUploadPopup = true;\n    },\n    validateForm: function validateForm() {\n      return !this.errors.any();\n    },\n    back: function back() {\n      history.back();\n    },\n    requestQuotation: function requestQuotation() {\n      var _this = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].confirmEnable('Operation confirmation', \"Are you sure you want to request quotation for project \".concat(this.project.name, \"?\"), function () {\n        _this.$store.dispatch('projects/requestQuotation', _this.project).then(function () {\n          _this.back();\n        }, function (error) {\n          _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].error(Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_20__[\"extractErrorMessage\"])(error));\n        });\n      });\n    },\n    accept: function accept() {\n      var _this2 = this;\n\n      if (!this.acceptData.manager_id) {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].error('OOPS!', 'You have to select the manager first');\n        return;\n      }\n\n      this.$store.dispatch('projects/accept', _objectSpread({}, this.project, {}, this.acceptData)).then(function () {\n        _this2.showAcceptancePopup = false;\n\n        _this2.back();\n      }, function (error) {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_20__[\"extractErrorMessage\"])(error));\n      });\n    },\n    respond: function respond() {\n      var _this3 = this;\n\n      this.$store.dispatch('projects/respond', {\n        project: this.project,\n        data: this.rejection\n      }).then(function () {\n        _this3.showRespondPopup = false;\n\n        _this3.back();\n      }, function (error) {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_20__[\"extractErrorMessage\"])(error));\n      });\n    },\n    markAsDone: function markAsDone() {\n      var _this4 = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].confirmEnable('Operation confirmation', \"Are you sure you want to mark project \".concat(this.project.name, \" as finished?\"), function () {\n        _this4.$store.dispatch('projects/markAsDone', _this4.project).then(function () {\n          _this4.back();\n        }, function (error) {\n          _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_20__[\"extractErrorMessage\"])(error));\n        });\n      });\n    },\n    updateProgress: function updateProgress() {\n      var _this5 = this;\n\n      this.$store.dispatch('projects/updateProgress', {\n        project: this.project,\n        data: this.progress\n      }).then(function () {\n        _this5.showProgressPopup = false;\n\n        _this5.back();\n      }, function (error) {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_20__[\"extractErrorMessage\"])(error));\n      });\n    },\n    downloadMedia: function downloadMedia() {\n      var vm = this;\n      var mediaIds = vm.getSelectedFiles().map(function (x) {\n        return x.id;\n      });\n      this.$store.dispatch('projects/downloadMedia', {\n        projectId: vm.project.id,\n        ids: mediaIds\n      }).then(function () {\n        vm.resetSelectedFiles();\n        vm.$forceUpdate();\n      }, function (error) {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].error(Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_20__[\"extractErrorMessage\"])(error));\n      });\n    },\n    deleteMedia: function deleteMedia() {\n      var _this6 = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].confirmCancel('Operation confirmation', \"Are you sure you want to delete selected files?\",\n      /*#__PURE__*/\n      Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee() {\n        var vm, mediaIds;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                vm = _this6;\n                mediaIds = vm.getSelectedFiles().map(function (x) {\n                  return x.id;\n                });\n\n                _this6.$store.dispatch('projects/deleteMedia', {\n                  projectId: vm.project.id,\n                  ids: mediaIds\n                }).then(function () {\n                  vm.resetSelectedFiles();\n                  vm.$forceUpdate();\n                }, function (error) {\n                  _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_19__[\"default\"].error(Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_20__[\"extractErrorMessage\"])(error));\n                });\n\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      })));\n    },\n    getFolderNames: function getFolderNames() {\n      var _this7 = this;\n\n      _services_Project__WEBPACK_IMPORTED_MODULE_21__[\"default\"].getFolderNames().then(function (folderNames) {\n        _this7.folderNames = folderNames;\n      });\n    },\n    prepareSelectedDocuments: function prepareSelectedDocuments() {\n      var _this8 = this;\n\n      if (this.project.files) {\n        this.project.files.map(function (file) {\n          if (file.folder_name && !_this8[file.folder_name.replace(/ /g, '')]) {\n            _this8[file.folder_name.replace(/ /g, '')] = [];\n          }\n        });\n      }\n    },\n    getSelectedFiles: function getSelectedFiles() {\n      var _this9 = this;\n\n      var selectionContainers = [];\n\n      if (this.project.files) {\n        this.project.files.map(function (file) {\n          if (file.folder_name) {\n            if (selectionContainers.indexOf(file.folder_name) === -1) {\n              selectionContainers.push(file.folder_name);\n            }\n          }\n        });\n      }\n\n      var selectedFiles = [];\n      selectionContainers.map(function (container) {\n        container = container.replace(/ /g, '');\n\n        if (container) {\n          if (_this9[container] && _this9[container].length > 0) {\n            selectedFiles = selectedFiles.concat(_this9[container]);\n          }\n        }\n      });\n      return selectedFiles;\n    },\n    hasSelectedFiles: function hasSelectedFiles() {\n      var files = this.getSelectedFiles();\n      return files && files.length > 0;\n    },\n    resetSelectedFiles: function resetSelectedFiles() {\n      var _this10 = this;\n\n      var selectionContainers = [];\n\n      if (this.project.files) {\n        this.project.files.map(function (file) {\n          if (file.folder_name) {\n            if (selectionContainers.indexOf(file.folder_name) === -1) {\n              selectionContainers.push(file.folder_name);\n            }\n          }\n        });\n      }\n\n      var selectedFiles = [];\n      selectionContainers.map(function (container) {\n        if (container) {\n          container = container.replace(/ /g, '');\n          _this10[container] = [];\n        }\n      });\n      return selectedFiles;\n    }\n  },\n  mounted: function () {\n    var _mounted = Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(\n    /*#__PURE__*/\n    regeneratorRuntime.mark(function _callee2() {\n      var _this11 = this;\n\n      var vm;\n      return regeneratorRuntime.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              vm = this;\n              _services_Project__WEBPACK_IMPORTED_MODULE_21__[\"default\"].getStatuses().then(function (statuses) {\n                _this11.statuses = statuses;\n                _this11.status = statuses.find(function (x) {\n                  return x.value === _this11.project.status;\n                });\n              });\n              _context2.next = 4;\n              return vm.$store.dispatch('projects/getProject', vm.$route.params.id);\n\n            case 4:\n              vm.prepareSelectedDocuments();\n              vm.getFolderNames();\n              vm.$forceUpdate();\n\n            case 7:\n            case \"end\":\n              return _context2.stop();\n          }\n        }\n      }, _callee2, this);\n    }));\n\n    function mounted() {\n      return _mounted.apply(this, arguments);\n    }\n\n    return mounted;\n  }()\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvY29tcG9uZW50cy9EZXRhaWxzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRGV0YWlscy52dWU/NmVlMyJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cbiAgICA8ZGl2PlxuICAgICAgICA8dngtY2FyZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLThcIj5cblxuICAgICAgICAgICAgICAgIDx2cy1yb3cgY2xhc3M9XCJ3LWZ1bGwgbXktNCBtYi0xNlwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtY29sIGNsYXNzPVwidy00LzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gdi1pZj1cInByb2plY3QuY2FuX3JlcXVlc3RfcXVvdGF0aW9uXCIgY2xhc3M9XCJtci0yXCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwicmVxdWVzdFF1b3RhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3QgUXVvdGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gdi1pZj1cInByb2plY3QuY2FuX2FjY2VwdF9xdW90YXRpb25cIiBjbGFzcz1cIm1yLTJcIiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzaG93UmVzcG9uZFBvcHVwID0gdHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbmRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwicHJvamVjdC5jYW5fdXBkYXRlX3N0YXR1cyAmJiBzdGF0dXNlcy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0IHYtbW9kZWw9XCJzZWxlY3RlZFN0YXR1c1wiIDpvcHRpb25zPVwic3RhdHVzZXNcIiA6c2VhcmNoYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ0ZXh0XCIgdHJhY2stYnk9XCJ2YWx1ZVwiIDptdWx0aXBsZT1cImZhbHNlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdnMtY29sPlxuICAgICAgICAgICAgICAgICAgICA8dnMtY29sIGNsYXNzPVwidy0xLzUgdGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjb2xvcj1cIndhcm5pbmdcIiBAY2xpY2s9XCJiYWNrXCI+QmFjazwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L3ZzLWNvbD5cbiAgICAgICAgICAgICAgICA8L3ZzLXJvdz5cblxuICAgICAgICAgICAgICAgIDx2cy1wb3B1cCA6YWN0aXZlLnN5bmM9XCJzaG93UmVzcG9uZFBvcHVwXCIgY2xhc3M9XCJob2xhbXVuZG9cIiB0aXRsZT1cIlJlc3BvbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZzLWNvbXBvbmVudCB2cy1jb24taW5wdXQtbGFiZWwgbm8tYm9yZGVyIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5IGlzLWxhYmVsLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGV4dGFyZWEgdi12YWxpZGF0ZT1cIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uLXBhY2s9XCJmZWF0aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIlJlc3BvbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJyZWplY3Rpb24ubWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cz1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIHZzLWlucHV0IHZzLWlucHV0LS1pbnB1dCBub3JtYWwgaGFzVmFsdWUgbm8tcGFkZGluZ1wiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWJldHdlZW4gbXktNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBjb2xvcj1cInByaW1hcnlcIiA6ZGlzYWJsZWQ9XCIhcmVqZWN0aW9uLm1lc3NhZ2VcIiBAY2xpY2s9XCJyZXNwb25kXCI+U2F2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNsYXNzPVwibXItMlwiIGNvbG9yPVwid2FybmluZ1wiIEBjbGljaz1cInNob3dSZXNwb25kUG9wdXAgPSBmYWxzZVwiPkNhbmNlbDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3ZzLXBvcHVwPlxuXG4gICAgICAgICAgICAgICAgPHZzLXJvdyBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtY29sIGNsYXNzPVwidy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cInByb2plY3QubG9nb1wiIGNsYXNzPVwidy00LzVcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgPC92cy1jb2w+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1jb2wgY2xhc3M9XCJ3LTMvNFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInYtdGV4dC10b3BcIj5DbGllbnQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3twcm9qZWN0LmNsaWVudH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidi10ZXh0LXRvcFwiPk5hbWU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3twcm9qZWN0Lm5hbWV9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInYtdGV4dC10b3BcIj5Mb2NhdGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3Byb2plY3QubG9jYXRpb24gfHwgJ24vZCd9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInYtdGV4dC10b3BcIj5QZXJzb24gUmVzcG9uc2libGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3twcm9qZWN0LnBlcnNvbl9yZXNwb25zaWJsZSB8fCAnbi9kJ319PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidi10ZXh0LXRvcFwiPlBlcnNvbiBSZXNwb25zaWJsZSBFbWFpbDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIDpocmVmPVwiYG1haWx0bzoke3Byb2plY3QucGVyc29uX3Jlc3BvbnNpYmxlX2VtYWlsfWBcIj57e3Byb2plY3QucGVyc29uX3Jlc3BvbnNpYmxlX2VtYWlsfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInYtdGV4dC10b3BcIj5QZXJzb24gUmVzcG9uc2libGUgUGhvbmU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3twcm9qZWN0LnBlcnNvbl9yZXNwb25zaWJsZV9waG9uZSB8fCAnbi9kJ319PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidi10ZXh0LXRvcFwiPkR1ZSBEYXRlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7cHJvamVjdC5kdWVfZGF0ZSB8IGRhdGUoJ0REIE1NTSBZWVlZJyl9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInYtdGV4dC10b3BcIj5TZXJ2aWNlczwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1jaGlwIGNvbG9yPVwicHJpbWFyeVwiIHYtZm9yPVwic2VydmljZSBpbiBwcm9qZWN0LnNlcnZpY2VzXCIgOmtleT1cInNlcnZpY2UuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzZXJ2aWNlLm5hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92cy1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvdnMtY29sPlxuICAgICAgICAgICAgICAgIDwvdnMtcm93PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92eC1jYXJkPlxuXG4gICAgICAgIDx2eC1jYXJkIGNsYXNzPVwibXktNFwiPlxuXG4gICAgICAgICAgICA8dnMtcm93IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPHZzLWNvbCBjbGFzcz1cInctMS8yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMj5Eb2N1bWVudCBtYW5hZ2VtZW50PC9oMj5cbiAgICAgICAgICAgICAgICA8L3ZzLWNvbD5cbiAgICAgICAgICAgICAgICA8dnMtY29sIGNsYXNzPVwidy0xLzJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImZsb2F0LXJpZ2h0IG1sLTJcIiBAY2xpY2s9XCJkb3dubG9hZE1lZGlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiaGFzU2VsZWN0ZWRGaWxlcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFxuICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiB2LWlmPVwicHJvamVjdC5jYW5fdXBsb2FkX2ZpbGVzXCIgY2xhc3M9XCJmbG9hdC1yaWdodCBtbC0yXCIgQGNsaWNrPVwic2hvd1VwbG9hZGVyUG9wdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZFxuICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImZsb2F0LXJpZ2h0IG1sLTJcIiBAY2xpY2s9XCJkZWxldGVNZWRpYVwiIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwicHJvamVjdC5jYW5fZGVsZXRlX2ZpbGVzICYmIGhhc1NlbGVjdGVkRmlsZXMoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgIDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdnMtY29sPlxuICAgICAgICAgICAgPC92cy1yb3c+XG5cbiAgICAgICAgICAgIDx2cy1yb3cgdi1pZj1cIiFwcm9qZWN0LmZpbGVzIHx8IHByb2plY3QuZmlsZXMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPHZzLWNvbCBjbGFzcz1cIm15LThcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC13YXJuaW5nXCI+Tm8gZmlsZXMgd2VyZSB1cGxvYWRlZCBmb3IgdGhpcyBwcm9qZWN0LjwvaDU+XG4gICAgICAgICAgICAgICAgPC92cy1jb2w+XG4gICAgICAgICAgICA8L3ZzLXJvdz5cblxuICAgICAgICAgICAgPHZzLXJvdyB2LWlmPVwicHJvamVjdC5maWxlcyAmJiBwcm9qZWN0LmZpbGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICA8dnMtY29sIGNsYXNzPVwibXktOFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZm9yPVwiZmlsZXMgaW4gZ3JvdXBlZEZpbGVzXCIgOmtleT1cImZpbGVzLmtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiB2LWlmPVwiZmlsZXMua2V5ICYmIG15U2VsZltmaWxlcy5rZXkucmVwbGFjZSgvIC9nLCAnJyldXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibWItMlwiPnt7ZmlsZXMua2V5fX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10YWJsZSByZWY9XCJnZ0RvY3VtZW50VGFibGVcIiBtdWx0aXBsZSB2LW1vZGVsPVwibXlTZWxmW2ZpbGVzLmtleS5yZXBsYWNlKC8gL2csICcnKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5wdXQ9XCJzZWxlY3RlZEl0ZW1cIiA6ZGF0YT1cImZpbGVzLmRhdGFcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgc2xvdD1cInRoZWFkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGggc3R5bGU9XCJtYXgtd2lkdGg6IDE1JTsgbWluLXdpZHRoOiAxNSU7IHdpZHRoOiAxNSU7XCI+TmFtZTwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGggc3R5bGU9XCJtYXgtd2lkdGg6IDMwJTsgbWluLXdpZHRoOiAzMCU7IHdpZHRoOiAzMCVcIj5EZXNjcmlwdGlvbjwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGggc3R5bGU9XCJtYXgtd2lkdGg6IDMwJTsgbWluLXdpZHRoOiAzMCU7IHdpZHRoOiAzMCU7XCI+RmlsZSBuYW1lPC92cy10aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10aCBzdHlsZT1cIm1heC13aWR0aDogMTAlOyBtaW4td2lkdGg6IDEwJTsgd2lkdGg6IDEwJTtcIj5GaWxlIHNpemU8L3ZzLXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRoIHN0eWxlPVwibWF4LXdpZHRoOiAxNSU7IG1pbi13aWR0aDogMTUlOyB3aWR0aDogMTUlO1wiPlVwbG9hZGVkIGF0PC92cy10aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgc2xvdC1zY29wZT1cIntkYXRhfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRyIDpkYXRhPVwidHJcIiA6a2V5PVwiaW5kZXh0clwiIHYtZm9yPVwiKHRyLCBpbmRleHRyKSBpbiBkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImdnLW1lZGlhLXRhYmxlLXRleHQgcHJvZHVjdC1uYW1lIGZvbnQtbWVkaXVtXCI+e3sgdHIubmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImdnLW1lZGlhLXRhYmxlLXRleHQgcHJvZHVjdC1jYXRlZ29yeVwiPnt7IHRyLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZ2ctbWVkaWEtdGFibGUtdGV4dCBwcm9kdWN0LXByaWNlXCI+e3sgdHIuZmlsZW5hbWUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92cy10ZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJnZy1tZWRpYS10YWJsZS10ZXh0IHByb2R1Y3QtcHJpY2VcIj57eyB0ci5zaXplIHwgcmVhZGFibGVCeXRlc319PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZ2ctbWVkaWEtdGFibGUtdGV4dCBwcm9kdWN0LXByaWNlXCI+e3sgdHIudXBsb2FkZWRfYXQgfCBkYXRlKCdERCBNTU1NIFlZWVknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRhYmxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdnMtY29sPlxuICAgICAgICAgICAgPC92cy1yb3c+XG5cbiAgICAgICAgPC92eC1jYXJkPlxuXG4gICAgICAgIDx2cy1wb3B1cCA6YWN0aXZlLnN5bmM9XCJzaG93VXBsb2FkUG9wdXBcIiBjbGFzcz1cImhvbGFtdW5kb1wiIHRpdGxlPVwiVXBsb2FkIGRvY3VtZW50XCI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5IGlzLWxhYmVsLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJtZWRpYV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cIm5ld01lZGlhLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCB2cy1pbnB1dHggdnMtaW5wdXQtLWlucHV0IG5vcm1hbCBoYXNWYWx1ZVwiLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LXNwYW4tcGxhY2Vob2xkZXIgdnMtaW5wdXQtLXBsYWNlaG9sZGVyIG5vcm1hbCBub3JtYWwgdnMtcGxhY2Vob2xkZXItbGFiZWxcIj5OYW1lPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIG5vLWJvcmRlciB2cy1pbnB1dCB3LWZ1bGwgbm8taWNvbi1ib3JkZXIgdnMtaW5wdXQtcHJpbWFyeSBpcy1sYWJlbC1wbGFjZWhvbGRlciBtdC04XCI+XG4gICAgICAgICAgICAgICAgPHZzLXRleHRhcmVhIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIkRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cIm5ld01lZGlhLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cz1cIjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBzZWxlY3QtbGFyZ2UgdnMtaW5wdXR4IHZzLWlucHV0LS1pbnB1dCBub3JtYWwgcmVkdWNlLXRleHQtYXJlYS1tYXJnaW4gaGFzVmFsdWUgbm8tcGFkZGluZ1wiLz5cblxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtc3Bhbi1wbGFjZWhvbGRlciB2cy1pbnB1dC0tcGxhY2Vob2xkZXIgbm9ybWFsIG5vcm1hbCB2cy1wbGFjZWhvbGRlci1sYWJlbFwiPkRlc2NyaXB0aW9uPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWRtaW4oKVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwidnMtY29tcG9uZW50IHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5IGlzLWxhYmVsLXBsYWNlaG9sZGVyIG1iLThcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtcGxhY2Vob2xkZXIgZ2ctZGVmYXVsdC1sYWJlbFwiPkZvbGRlcjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0IHYtbW9kZWw9XCJuZXdNZWRpYS5mb2xkZXJOYW1lXCIgOm9wdGlvbnM9XCJmb2xkZXJOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZy1wbGFjZWhvbGRlcj1cIlNlbGVjdCBvciB3cml0ZSBmb2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGFnZ2FibGU9XCJ0cnVlXCIgQHRhZz1cImFkZEZvbGRlck5hbWVcIiBsYWJlbD1cIm5hbWVcIiB0cmFjay1ieT1cIm5hbWVcIiA6bXVsdGlwbGU9XCJmYWxzZVwiLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZmlsZS11cGxvYWRlciA6b3B0aW9ucz1cImZsb3dDb25maWdcIiBjbGFzcz1cImgtMTAwXCIgdi1vbjpmaWxlU3VibWl0dGVkPVwib25GaWxlU3VibWl0dGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtb246ZmlsZVN1Y2Nlc3M9XCJvbkZpbGVTdWNjZXNzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtY2VudGVyIGZpbGUtdXBsb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgc3JjPVwiYXNzZXRzL2RyYWctZHJvcC5zdmdcIiB3aWR0aD1cIjQwJVwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIHYtaWY9XCJmbG93ICYmIGZsb3cuZmlsZXMgJiYgZmxvdy5maWxlcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57e2Zsb3cuZmlsZXNbMF0ubmFtZX19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZmlsZS11cGxvYWRlcj5cblxuICAgICAgICAgICAgPHZzLXByb2dyZXNzIHYtaWY9XCJmbG93LnByb2dyZXNzICYmIGZsb3cucHJvZ3Jlc3MoKSA+IDBcIiA6cGVyY2VudD1cImZsb3cucHJvZ3Jlc3MoKSAqIDEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIvPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVzdGlmeS1iZXR3ZWVuIG15LTVcIj5cbiAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNsYXNzPVwibXItMlwiIGNvbG9yPVwicHJpbWFyeVwiIEBjbGljaz1cInVwbG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhKGZsb3cgJiYgZmxvdy5maWxlcyAmJiBmbG93LmZpbGVzLmxlbmd0aCA+IDAgJiYgbmV3TWVkaWEubmFtZSAmJiBuZXdNZWRpYS5kZXNjcmlwdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgVXBsb2FkXG4gICAgICAgICAgICAgICAgPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBjb2xvcj1cIndhcm5pbmdcIiBAY2xpY2s9XCJzaG93VXBsb2FkUG9wdXAgPSBmYWxzZVwiPkNhbmNlbDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdnMtcG9wdXA+XG5cbiAgICA8L2Rpdj5cblxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQgRGF0ZXBpY2tlciBmcm9tICd2dWVqcy1kYXRlcGlja2VyJztcbiAgICBpbXBvcnQgTWVkaWFVcGxvYWQgZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbXBvbmVudHMvTWVkaWFVcGxvYWQnO1xuICAgIGltcG9ydCBGaWxlVXBsb2FkZXIgZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbXBvbmVudHMvRmlsZVVwbG9hZGVyJztcbiAgICBpbXBvcnQgTm90aWZpY2F0aW9uU2VydmljZSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL3NlcnZpY2VzL05vdGlmaWNhdGlvblNlcnZpY2VcIjtcbiAgICBpbXBvcnQge2V4dHJhY3RFcnJvck1lc3NhZ2UsIGdyb3VwQXJyYXlCeUtleX0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9VdGlsaXR5U2VydmljZVwiO1xuICAgIGltcG9ydCBQcm9qZWN0IGZyb20gJy4uL3NlcnZpY2VzL1Byb2plY3QnO1xuICAgIGltcG9ydCBVc2VyU2VydmljZSBmcm9tIFwiLi4vLi4vLi4vdXNlcnMvc2VydmljZXMvVXNlclwiO1xuICAgIGltcG9ydCBzdG9yZSBmcm9tIFwiLi4vLi4vLi4vLi4vc3RvcmVcIjtcbiAgICBpbXBvcnQge21hcEdldHRlcnN9IGZyb20gXCJ2dWV4XCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBwcm9qZWN0OiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbXlTZWxmOiB0aGlzLFxuICAgICAgICAgICAgICAgIHN0YXR1c2VzOiBbXSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHt9LFxuICAgICAgICAgICAgICAgIGZsb3c6IHt9LFxuICAgICAgICAgICAgICAgIGZsb3dDb25maWc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlRmlsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkT25DbGljazogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGVzdENodW5rczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGFsbG93RHVwbGljYXRlVXBsb2FkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge2FjY2VwdDogJyovKid9LFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGAke3Byb2Nlc3MuZW52LlZVRV9BUFBfQVBJX1VSTH12MS9wcm9qZWN0cy8ke3RoaXMuJHJvdXRlLnBhcmFtcy5pZH0vYWN0aW9ucy91cGxvYWREb2N1bWVudGAsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtzdG9yZS5nZXR0ZXJzWyd0b2tlbiddfWBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbmV3TWVkaWE6IHt9LFxuICAgICAgICAgICAgICAgIHNob3dSZXNwb25kUG9wdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNob3dQcm9ncmVzc1BvcHVwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzaG93QWNjZXB0YW5jZVBvcHVwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzaG93VXBsb2FkUG9wdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGFjY2VwdERhdGE6IHt9LFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB7fSxcbiAgICAgICAgICAgICAgICBmb2xkZXJOYW1lczogW10sXG4gICAgICAgICAgICAgICAgcmVqZWN0aW9uOiB7fSxcbiAgICAgICAgICAgICAgICBwcm9ncmVzczoge1xuICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IDBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgdXNlckRhdGE6ICd1c2VyRGF0YScsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNlbGVjdGVkU3RhdHVzOiB7XG4gICAgICAgICAgICAgICAgZ2V0ICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0ICh2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHt2YWx1ZX0gPSB0aGlzLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgUHJvamVjdC51cGRhdGVTdGF0dXModGhpcy5wcm9qZWN0LmlkLCB2YWx1ZSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdyb3VwZWRGaWxlcyAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvamVjdCAmJiB0aGlzLnByb2plY3QuZmlsZXMgJiYgdGhpcy5wcm9qZWN0LmZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXBBcnJheUJ5S2V5KHRoaXMucHJvamVjdC5maWxlcywgJ2ZvbGRlcl9uYW1lJykuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5MSA9IGEua2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkyID0gYi5rZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkxIDwga2V5Mikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkxID4ga2V5Mikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBEYXRlcGlja2VyLFxuICAgICAgICAgICAgTWVkaWFVcGxvYWQsXG4gICAgICAgICAgICBGaWxlVXBsb2FkZXIsXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbSAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZGRGb2xkZXJOYW1lIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2xkZXJOYW1lcy5wdXNoKHtuYW1lfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXdNZWRpYS5mb2xkZXJOYW1lID0gW3tuYW1lfV07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNBZG1pbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJTZXJ2aWNlLmlzQWRtaW4odGhpcy51c2VyRGF0YSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25GaWxlU3VibWl0dGVkIChmbG93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93ID0gZmxvdztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGxvYWQgKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxvdy5vcHRzLnF1ZXJ5LmdnTmFtZSA9IHRoaXMubmV3TWVkaWEubmFtZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3cub3B0cy5xdWVyeS5nZ0Rlc2NyaXB0aW9uID0gdGhpcy5uZXdNZWRpYS5kZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICBjb25zdCBmb2xkZXJOYW1lID0gdGhpcy5uZXdNZWRpYS5mb2xkZXJOYW1lICYmIHRoaXMubmV3TWVkaWEuZm9sZGVyTmFtZS5sZW5ndGggPyB0aGlzLm5ld01lZGlhLmZvbGRlck5hbWVbMF0gOiB0aGlzLm5ld01lZGlhLmZvbGRlck5hbWU7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mbG93Lm9wdHMucXVlcnkuZ2dGb2xkZXJOYW1lID0gZm9sZGVyTmFtZS5uYW1lO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZmxvdy51cGxvYWQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkZpbGVTdWNjZXNzIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gSlNPTi5wYXJzZShyZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucHJvamVjdC5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2plY3QuZmlsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmZpbGVzLnB1c2gocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlU2VsZWN0ZWREb2N1bWVudHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dVcGxvYWRQb3B1cCA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNob3dVcGxvYWRlclBvcHVwICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3cgPSB7fTtcbiAgICAgICAgICAgICAgICB0aGlzLm5ld01lZGlhID0ge307XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VXBsb2FkUG9wdXAgPSB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbGlkYXRlRm9ybSAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmVycm9ycy5hbnkoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiYWNrICgpIHtcbiAgICAgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1ZXN0UXVvdGF0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmNvbmZpcm1FbmFibGUoJ09wZXJhdGlvbiBjb25maXJtYXRpb24nLCBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlcXVlc3QgcXVvdGF0aW9uIGZvciBwcm9qZWN0ICR7dGhpcy5wcm9qZWN0Lm5hbWV9P2AsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Byb2plY3RzL3JlcXVlc3RRdW90YXRpb24nLCB0aGlzLnByb2plY3QpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihleHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY2VwdCAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFjY2VwdERhdGEubWFuYWdlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKCdPT1BTIScsICdZb3UgaGF2ZSB0byBzZWxlY3QgdGhlIG1hbmFnZXIgZmlyc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncHJvamVjdHMvYWNjZXB0Jywgey4uLnRoaXMucHJvamVjdCwgLi4udGhpcy5hY2NlcHREYXRhfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0FjY2VwdGFuY2VQb3B1cCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2soKTtcbiAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5lcnJvcignT09QUyEnLCBleHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzcG9uZCAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Byb2plY3RzL3Jlc3BvbmQnLCB7XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogdGhpcy5yZWplY3Rpb24sXG4gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Jlc3BvbmRQb3B1cCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2soKTtcbiAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5lcnJvcignT09QUyEnLCBleHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWFya0FzRG9uZSAoKSB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5jb25maXJtRW5hYmxlKCdPcGVyYXRpb24gY29uZmlybWF0aW9uJywgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBtYXJrIHByb2plY3QgJHt0aGlzLnByb2plY3QubmFtZX0gYXMgZmluaXNoZWQ/YCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncHJvamVjdHMvbWFya0FzRG9uZScsIHRoaXMucHJvamVjdCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKCdPT1BTIScsIGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlUHJvZ3Jlc3MgKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdwcm9qZWN0cy91cGRhdGVQcm9ncmVzcycsIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLnByb2dyZXNzLFxuICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc1BvcHVwID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFjaygpO1xuICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKCdPT1BTIScsIGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkb3dubG9hZE1lZGlhICgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVkaWFJZHMgPSB2bS5nZXRTZWxlY3RlZEZpbGVzKCkubWFwKHggPT4geC5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Byb2plY3RzL2Rvd25sb2FkTWVkaWEnLCB7XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RJZDogdm0ucHJvamVjdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgaWRzOiBtZWRpYUlkc1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5yZXNldFNlbGVjdGVkRmlsZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdm0uJGZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlbGV0ZU1lZGlhICgpIHtcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmNvbmZpcm1DYW5jZWwoJ09wZXJhdGlvbiBjb25maXJtYXRpb24nLCBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBzZWxlY3RlZCBmaWxlcz9gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVkaWFJZHMgPSB2bS5nZXRTZWxlY3RlZEZpbGVzKCkubWFwKHggPT4geC5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdwcm9qZWN0cy9kZWxldGVNZWRpYScsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RJZDogdm0ucHJvamVjdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkczogbWVkaWFJZHNcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2bS5yZXNldFNlbGVjdGVkRmlsZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRGb2xkZXJOYW1lcyAoKSB7XG4gICAgICAgICAgICAgICAgUHJvamVjdC5nZXRGb2xkZXJOYW1lcygpLnRoZW4oKGZvbGRlck5hbWVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sZGVyTmFtZXMgPSBmb2xkZXJOYW1lcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVwYXJlU2VsZWN0ZWREb2N1bWVudHMgKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb2plY3QuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmZpbGVzLm1hcChmaWxlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLmZvbGRlcl9uYW1lICYmICF0aGlzW2ZpbGUuZm9sZGVyX25hbWUucmVwbGFjZSgvIC9nLCAnJyldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tmaWxlLmZvbGRlcl9uYW1lLnJlcGxhY2UoLyAvZywgJycpXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U2VsZWN0ZWRGaWxlcyAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29udGFpbmVycyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb2plY3QuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmZpbGVzLm1hcChmaWxlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLmZvbGRlcl9uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkNvbnRhaW5lcnMuaW5kZXhPZihmaWxlLmZvbGRlcl9uYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ29udGFpbmVycy5wdXNoKGZpbGUuZm9sZGVyX25hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEZpbGVzID0gW107XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uQ29udGFpbmVycy5tYXAoY29udGFpbmVyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyID0gY29udGFpbmVyLnJlcGxhY2UoLyAvZywgJycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tjb250YWluZXJdICYmIHRoaXNbY29udGFpbmVyXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWxlcyA9IHNlbGVjdGVkRmlsZXMuY29uY2F0KHRoaXNbY29udGFpbmVyXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGaWxlcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNTZWxlY3RlZEZpbGVzICgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRGaWxlcygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0U2VsZWN0ZWRGaWxlcyAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29udGFpbmVycyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb2plY3QuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmZpbGVzLm1hcChmaWxlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLmZvbGRlcl9uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkNvbnRhaW5lcnMuaW5kZXhPZihmaWxlLmZvbGRlcl9uYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ29udGFpbmVycy5wdXNoKGZpbGUuZm9sZGVyX25hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEZpbGVzID0gW107XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uQ29udGFpbmVycy5tYXAoY29udGFpbmVyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyID0gY29udGFpbmVyLnJlcGxhY2UoLyAvZywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tjb250YWluZXJdID0gW107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGaWxlcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIG1vdW50ZWQgKCkge1xuICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgUHJvamVjdC5nZXRTdGF0dXNlcygpLnRoZW4oKHN0YXR1c2VzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXNlcyA9IHN0YXR1c2VzO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzZXMuZmluZCh4ID0+IHgudmFsdWUgPT09IHRoaXMucHJvamVjdC5zdGF0dXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCB2bS4kc3RvcmUuZGlzcGF0Y2goJ3Byb2plY3RzL2dldFByb2plY3QnLCB2bS4kcm91dGUucGFyYW1zLmlkKTtcbiAgICAgICAgICAgIHZtLnByZXBhcmVTZWxlY3RlZERvY3VtZW50cygpO1xuICAgICAgICAgICAgdm0uZ2V0Rm9sZGVyTmFtZXMoKTtcbiAgICAgICAgICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfTtcbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBUEE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUF6QkE7QUE2QkE7QUFDQTtBQUVBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBL0JBO0FBaUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4TEE7QUEwTEE7QUFuUUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUF4UUE7QUFBQTtBQUNBO0FBREE7QUEwUUE7QUFDQTtBQUNBO0FBQ0E7QUE3UUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Details.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Form.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/components/Form.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.array.index-of */ \"./node_modules/core-js/modules/es6.array.index-of.js\");\n/* harmony import */ var core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es6.array.map */ \"./node_modules/core-js/modules/es6.array.map.js\");\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es6_regexp_constructor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es6.regexp.constructor */ \"./node_modules/core-js/modules/es6.regexp.constructor.js\");\n/* harmony import */ var core_js_modules_es6_regexp_constructor__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_constructor__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es6.regexp.replace */ \"./node_modules/core-js/modules/es6.regexp.replace.js\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es6.regexp.split */ \"./node_modules/core-js/modules/es6.regexp.split.js\");\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vuejs_datepicker__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! vuejs-datepicker */ \"./node_modules/vuejs-datepicker/dist/vuejs-datepicker.esm.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _common_services_FileService__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../common/services/FileService */ \"./src/modules/common/services/FileService.js\");\n/* harmony import */ var _common_components_MediaUpload__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../common/components/MediaUpload */ \"./src/modules/common/components/MediaUpload.vue\");\n/* harmony import */ var _common_components_FileUploader__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../common/components/FileUploader */ \"./src/modules/common/components/FileUploader.vue\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./../../../../store */ \"./src/store.js\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n/* harmony import */ var _users_services_User__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../users/services/User */ \"./src/modules/users/services/User.js\");\n/* harmony import */ var _clients_services_Client__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../../clients/services/Client */ \"./src/modules/clients/services/Client.js\");\n/* harmony import */ var vue_simple_suggest__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! vue-simple-suggest */ \"./node_modules/vue-simple-suggest/dist/es6.js\");\n/* harmony import */ var vue_simple_suggest_dist_styles_css__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! vue-simple-suggest/dist/styles.css */ \"./node_modules/vue-simple-suggest/dist/styles.css\");\n/* harmony import */ var vue_simple_suggest_dist_styles_css__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(vue_simple_suggest_dist_styles_css__WEBPACK_IMPORTED_MODULE_26__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    project: {\n      required: true\n    },\n    isNew: {\n      required: true\n    },\n    loading: {\n      required: true\n    }\n  },\n  data: function data() {\n    return {\n      showRejectionPopup: false,\n      showProgressPopup: false,\n      showAcceptancePopup: false,\n      showUploadPopup: false,\n      isLoadingClients: false,\n      selected: [],\n      acceptData: {},\n      rejection: {},\n      newMedia: {},\n      flow: {},\n      flowConfig: {\n        singleFile: true,\n        uploadOnClick: true,\n        testChunks: false,\n        allowDuplicateUploads: true,\n        attributes: {\n          accept: '*/*'\n        },\n        target: \"\".concat(\"https://api.geotechnics.coding.al/api/\", \"v1/projects/\").concat(this.$route.params.id, \"/actions/uploadDocument\"),\n        headers: {\n          Authorization: \"Bearer \".concat(_store__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getters['token'])\n        }\n      },\n      progress: {\n        amount: 0\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_14__[\"mapGetters\"])({\n    userData: 'userData',\n    services: 'projects/services'\n  })),\n  components: {\n    Datepicker: vuejs_datepicker__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n    MediaUpload: _common_components_MediaUpload__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n    FileUploader: _common_components_FileUploader__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n    VueSimpleSuggest: vue_simple_suggest__WEBPACK_IMPORTED_MODULE_25__[\"default\"]\n  },\n  methods: {\n    boldenSuggestion: function boldenSuggestion(scope) {\n      if (!scope) return scope;\n      var suggestion = scope.suggestion,\n          query = scope.query;\n      var result = this.$refs.suggestComponent.displayProperty(suggestion);\n      if (!query) return result;\n      var texts = query.split(/[\\s-_/\\\\|.]/gm).filter(function (t) {\n        return !!t;\n      }) || [''];\n      return result.replace(new RegExp('(.*?)(' + texts.join('|') + ')(.*?)', 'gi'), '$1<b>$2</b>$3');\n    },\n    isAdmin: function isAdmin() {\n      return _users_services_User__WEBPACK_IMPORTED_MODULE_23__[\"default\"].isAdmin(this.userData);\n    },\n    setClientId: function setClientId(client) {\n      this.project.client = client;\n\n      if (client) {\n        this.project.client_id = client.id;\n      }\n\n      this.getServices();\n    },\n    validateForm: function validateForm() {\n      return !this.errors.any();\n    },\n    back: function back() {\n      history.back();\n    },\n    requestQuotation: function requestQuotation() {\n      var _this = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_21__[\"default\"].confirmEnable('Operation confirmation', \"Are you sure you want to request quotation for project \".concat(this.project.name, \"?\"), function () {\n        _this.$store.dispatch('projects/requestQuotation', _this.project).then(function () {\n          _this.back();\n        }, function (error) {\n          _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_21__[\"default\"].error(Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_22__[\"extractErrorMessage\"])(error));\n        });\n      });\n    },\n    getServices: function getServices() {\n      this.$store.dispatch('projects/getServices', this.project.client_id);\n    },\n    getClients: function getClients(search) {\n      var _this2 = this;\n\n      this.isLoadingClients = true;\n      return new Promise(function (resolve) {\n        _clients_services_Client__WEBPACK_IMPORTED_MODULE_24__[\"default\"].get({\n          perPage: 999,\n          search: search\n        }).then(function (_ref) {\n          var data = _ref.data;\n          _this2.isLoadingClients = false;\n          resolve(data);\n        });\n      });\n    },\n    save: function save() {\n      var data = _objectSpread({}, this.project);\n\n      data.due_date = moment__WEBPACK_IMPORTED_MODULE_16___default()(this.project.due_date).format('YYYY-MM-DD');\n      this.$emit('save', data);\n    },\n    imageSelected: function imageSelected(data) {\n      var vm = this;\n      _common_services_FileService__WEBPACK_IMPORTED_MODULE_17__[\"default\"].getBase64(data.file.file).then(function (encodedImage) {\n        vm.project.logo = encodedImage;\n        vm.$emit('fileAdded', {\n          project: vm.project,\n          encodedImage: encodedImage.split(',')[1]\n        });\n      });\n    },\n    onFileSubmitted: function onFileSubmitted(flow) {\n      this.flow = flow;\n    },\n    upload: function upload() {\n      this.flow.opts.query.ggName = this.newMedia.name;\n      this.flow.opts.query.ggDescription = this.newMedia.description;\n      this.flow.upload();\n    },\n    onFileSuccess: function onFileSuccess(response) {\n      response = JSON.parse(response.message);\n\n      if (!this.project.files) {\n        this.project.files = [];\n      }\n\n      this.project.files.push(response.data);\n      this.showUploadPopup = false;\n    },\n    showUploaderPopup: function showUploaderPopup() {\n      this.flow = {};\n      this.newMedia = {};\n      this.showUploadPopup = true;\n    },\n    deleteMedia: function deleteMedia() {\n      var _this3 = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_21__[\"default\"].confirmCancel('Operation confirmation', 'Are you sure you want to delete the selected documents?', function () {\n        var vm = _this3;\n        var mediaIds = vm.selected.map(function (x) {\n          return x.id;\n        });\n\n        _this3.$store.dispatch('projects/deleteMedia', {\n          projectId: vm.project.id,\n          ids: mediaIds\n        }).then(function () {\n          vm.project.files = vm.project.files.filter(function (file) {\n            return mediaIds.indexOf(file.id) === -1;\n          });\n          vm.selected = [];\n          vm.$forceUpdate();\n        });\n      });\n    },\n    downloadMedia: function downloadMedia() {\n      var vm = this;\n      var mediaIds = vm.selected.map(function (x) {\n        return x.id;\n      });\n      this.$store.dispatch('projects/downloadMedia', {\n        projectId: vm.project.id,\n        ids: mediaIds\n      }).then(function () {\n        vm.selected = [];\n        vm.$forceUpdate();\n      }, function (error) {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_21__[\"default\"].error(Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_22__[\"extractErrorMessage\"])(error));\n      });\n    }\n  },\n  mounted: function mounted() {\n    var vm = this;\n\n    if (!vm.isNew && this.$route.params.id) {\n      vm.loadingProject = true;\n      vm.$store.dispatch('projects/getProject', vm.$route.params.id).then(function () {\n        vm.loadingProject = false;\n        vm.getServices();\n      }, function () {\n        vm.loadingProject = false;\n      });\n    } else {\n      vm.getServices();\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvY29tcG9uZW50cy9Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRm9ybS52dWU/YzEzZiJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPHZ4LWNhcmQ+XG4gICAgICAgICAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwic2F2ZVwiPlxuXG4gICAgICAgICAgICAgICAgPHZzLXJvdyBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtY29sIGNsYXNzPVwidy0yLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5Qcm9qZWN0IGRhdGE8L2gyPlxuICAgICAgICAgICAgICAgICAgICA8L3ZzLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPHZzLWNvbCBjbGFzcz1cInctMS8zIHRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gdi1pZj1cInByb2plY3QuY2FuX3JlcXVlc3RfcXVvdGF0aW9uXCIgY2xhc3M9XCJtci0yXCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwicmVxdWVzdFF1b3RhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3QgUXVvdGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC92cy1jb2w+XG4gICAgICAgICAgICAgICAgPC92cy1yb3c+XG5cbiAgICAgICAgICAgICAgICA8dnMtcm93IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1jb2wgY2xhc3M9XCJ3LTEvNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibXktNCB0ZXh0LWNlbnRlclwiPiZuYnNwOzwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWVkaWEtdXBsb2FkIGNsYXNzTmFtZT1cInVzZXItYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnJlc291cmNlPVwicHJvamVjdC5sb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlzLWVkaXRhYmxlPVwicHJvamVjdC5jYW5fZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtb246ZmlsZUFkZGVkPVwiaW1hZ2VTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tZWRpYS11cGxvYWQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdnMtY29sPlxuICAgICAgICAgICAgICAgICAgICA8dnMtY29sIGNsYXNzPVwidy00LzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWRtaW4oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJsb2NrIGdnLWlucHV0LWxhYmVsXCI+Q2xpZW50PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnVlLXNpbXBsZS1zdWdnZXN0IDpkZWJvdW5jZT1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZmlsdGVyLWJ5LXF1ZXJ5PVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGlzdD1cImdldENsaWVudHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1heC1zdWdnZXN0aW9ucz1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptaW4tbGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZT1cIidzZWxlY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwcmV2ZW50LXN1Ym1pdD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNlbGVjdD1cInNldENsaWVudElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXktYXR0cmlidXRlPVwiZnVsbE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDbGllbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPVwic3VnZ2VzdENvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwicHJvamVjdC5jbGllbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUtYXR0cmlidXRlPVwiaWRcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgc2xvdD1cIm1pc2MtaXRlbS1hYm92ZVwiIHNsb3Qtc2NvcGU9XCJ7IHN1Z2dlc3Rpb25zIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaXNjLWl0ZW1cIiB2LWlmPVwic3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Tm8gcmVzdWx0czwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOnRpdGxlPVwic2NvcGUuc3VnZ2VzdGlvbi5kZXNjcmlwdGlvblwiIHNsb3Q9XCJzdWdnZXN0aW9uLWl0ZW1cIiBzbG90LXNjb3BlPVwic2NvcGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1odG1sPVwiYm9sZGVuU3VnZ2VzdGlvbihzY29wZSlcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pc2MtaXRlbVwiIHNsb3Q9XCJtaXNjLWl0ZW0tYmVsb3dcIiBzbG90LXNjb3BlPVwieyBzdWdnZXN0aW9ucyB9XCIgdi1pZj1cImlzTG9hZGluZ0NsaWVudHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkxvYWRpbmcuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdnVlLXNpbXBsZS1zdWdnZXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWlucHV0IHYtdmFsaWRhdGU9XCIncmVxdWlyZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXZ2LXZhbGlkYXRlLW9uPVwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJpY29uIGljb24taGFzaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uLXBhY2s9XCJmZWF0aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJwcm9qZWN0Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cIiFwcm9qZWN0LmNhbl9lZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBuby1pY29uLWJvcmRlclwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgnbmFtZScpIH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtaW5wdXQgdi12YWxpZGF0ZT1cIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibG9jYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJpY29uIGljb24tbWFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiTG9jYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJwcm9qZWN0LmxvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhcHJvamVjdC5jYW5fZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoJ2xvY2F0aW9uJykgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1pbnB1dCB2LXZhbGlkYXRlPVwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS12di12YWxpZGF0ZS1vbj1cImJsdXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJyZXNwb25zaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi1hbGlnbi1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiUGVyc29uIHJlc3BvbnNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwicHJvamVjdC5wZXJzb25fcmVzcG9uc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cIiFwcm9qZWN0LmNhbl9lZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBuby1pY29uLWJvcmRlclwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgncmVzcG9uc2libGUnKSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWlucHV0IHYtdmFsaWRhdGU9XCIncmVxdWlyZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXZ2LXZhbGlkYXRlLW9uPVwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlBlcnNvbiByZXNwb25zaWJsZSdzIGVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbiBpY29uLW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbi1wYWNrPVwiZmVhdGhlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJQZXJzb24gcmVzcG9uc2libGUncyBlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cInByb2plY3QucGVyc29uX3Jlc3BvbnNpYmxlX2VtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhcHJvamVjdC5jYW5fZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoXCJQZXJzb24gcmVzcG9uc2libGUncyBlbWFpbFwiKSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWlucHV0IHYtdmFsaWRhdGU9XCIncmVxdWlyZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXZ2LXZhbGlkYXRlLW9uPVwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlBlcnNvbiByZXNwb25zaWJsZSdzIHBob25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbiBpY29uLXBob25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiUGVyc29uIHJlc3BvbnNpYmxlJ3MgcGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJwcm9qZWN0LnBlcnNvbl9yZXNwb25zaWJsZV9waG9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRpc2FibGVkPVwiIXByb2plY3QuY2FuX2VkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCI+e3sgZXJyb3JzLmZpcnN0KFwiUGVyc29uIHJlc3BvbnNpYmxlJ3MgcGhvbmVcIikgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5IGlzLWxhYmVsLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRhdGVwaWNrZXIgY2xhc3M9XCJ2cy1pbnB1dHggdnMtaW5wdXQtLWlucHV0IG5vcm1hbCBoYXNWYWx1ZSBuby1wYWRkaW5nIGJvcmRlci1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBEYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhcHJvamVjdC5jYW5fZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cInByb2plY3QuZHVlX2RhdGVcIiBsYWJlbD1cIkR1ZSBkYXRlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtc3Bhbi1wbGFjZWhvbGRlciB2cy1pbnB1dC0tcGxhY2Vob2xkZXIgbm9ybWFsIG5vcm1hbCB2cy1wbGFjZWhvbGRlci1sYWJlbFwiPkR1ZSBEYXRlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC92cy1jb2w+XG4gICAgICAgICAgICAgICAgPC92cy1yb3c+XG5cbiAgICAgICAgICAgICAgICA8dnMtcm93IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1jb2wgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5IGlzLWxhYmVsLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyIGdnLWlucHV0LWxhYmVsXCI+U2VydmljZXM8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNdWx0aXNlbGVjdCB2LW1vZGVsPVwicHJvamVjdC5zZXJ2aWNlc1wiIDpvcHRpb25zPVwic2VydmljZXNcIiA6c2VhcmNoYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJuYW1lXCIgOm11bHRpcGxlPVwidHJ1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZzLWNvbXBvbmVudCBuby1ib3JkZXIgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5IGlzLWxhYmVsLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImlzTmV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRleHRhcmVhIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5vdGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJpY29uIGljb24tZG9sbGFyLXNpZ25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uLXBhY2s9XCJmZWF0aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJOb3Rlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJwcm9qZWN0Lm5vdGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cz1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhcHJvamVjdC5jYW5fZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIHNlbGVjdC1sYXJnZSB2cy1pbnB1dHggdnMtaW5wdXQtLWlucHV0IG5vcm1hbCBoYXNWYWx1ZSBuby1wYWRkaW5nXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtc3Bhbi1wbGFjZWhvbGRlciB2cy1pbnB1dC0tcGxhY2Vob2xkZXIgbm9ybWFsIG5vcm1hbCB2cy1wbGFjZWhvbGRlci1sYWJlbFwiPk5vdGVzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWJldHdlZW4gbXktNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gdi1pZj1cInByb2plY3QuY2FuX2VkaXRcIiBjbGFzcz1cIm1yLTJcIiBjb2xvcj1cInByaW1hcnlcIiA6ZGlzYWJsZWQ9XCIhdmFsaWRhdGVGb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbj1cInN1Ym1pdFwiPlNhdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNsYXNzPVwibXItMlwiIGNvbG9yPVwid2FybmluZ1wiIEBjbGljaz1cImJhY2tcIj5CYWNrPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC92cy1jb2w+XG4gICAgICAgICAgICAgICAgPC92cy1yb3c+XG5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC92eC1jYXJkPlxuXG4gICAgICAgIDx2eC1jYXJkIGNsYXNzPVwibXktNFwiIHYtaWY9XCJwcm9qZWN0LmNhbl91cGxvYWRfZmlsZXNcIj5cblxuICAgICAgICAgICAgPHZzLXJvdyBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDx2cy1jb2wgY2xhc3M9XCJ3LTEvMlwiPlxuICAgICAgICAgICAgICAgICAgICA8aDI+RG9jdW1lbnQgbWFuYWdlbWVudDwvaDI+XG4gICAgICAgICAgICAgICAgPC92cy1jb2w+XG4gICAgICAgICAgICAgICAgPHZzLWNvbCBjbGFzcz1cInctMS8yXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJmbG9hdC1yaWdodCBtbC0yXCIgQGNsaWNrPVwiZGVsZXRlTWVkaWFcIiBjb2xvcj1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cInNlbGVjdGVkLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImZsb2F0LXJpZ2h0IG1sLTJcIiBAY2xpY2s9XCJkb3dubG9hZE1lZGlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwic2VsZWN0ZWQubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRcbiAgICAgICAgICAgICAgICAgICAgPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJmbG9hdC1yaWdodFwiIEBjbGljaz1cInNob3dVcGxvYWRlclBvcHVwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBVcGxvYWRcbiAgICAgICAgICAgICAgICAgICAgPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgPC92cy1jb2w+XG4gICAgICAgICAgICA8L3ZzLXJvdz5cblxuICAgICAgICAgICAgPHZzLXJvdyB2LWlmPVwiIXByb2plY3QuZmlsZXMgfHwgcHJvamVjdC5maWxlcy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICA8dnMtY29sIGNsYXNzPVwibXktOFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIj5ObyBmaWxlcyB3ZXJlIHVwbG9hZGVkIGZvciB0aGlzIHByb2plY3QuPC9oNT5cbiAgICAgICAgICAgICAgICA8L3ZzLWNvbD5cbiAgICAgICAgICAgIDwvdnMtcm93PlxuXG4gICAgICAgICAgICA8dnMtcm93IHYtaWY9XCJwcm9qZWN0LmZpbGVzICYmIHByb2plY3QuZmlsZXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgIDx2cy1jb2wgY2xhc3M9XCJteS04XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRhYmxlIHJlZj1cImdnRG9jdW1lbnRUYWJsZVwiIG11bHRpcGxlIHYtbW9kZWw9XCJzZWxlY3RlZFwiIDpkYXRhPVwicHJvamVjdC5maWxlc1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgc2xvdD1cInRoZWFkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRoPk5hbWU8L3ZzLXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10aD5EZXNjcmlwdGlvbjwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRoPkZpbGUgbmFtZTwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgc2xvdC1zY29wZT1cIntkYXRhfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtdHIgOmRhdGE9XCJ0clwiIDprZXk9XCJpbmRleHRyXCIgdi1mb3I9XCIodHIsIGluZGV4dHIpIGluIGRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwcm9kdWN0LW5hbWUgZm9udC1tZWRpdW1cIj57eyB0ci5uYW1lIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicHJvZHVjdC1jYXRlZ29yeVwiPnt7IHRyLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicHJvZHVjdC1wcmljZVwiPnt7IHRyLmZpbGVuYW1lIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92cy10cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC92cy10YWJsZT5cblxuICAgICAgICAgICAgICAgIDwvdnMtY29sPlxuICAgICAgICAgICAgPC92cy1yb3c+XG5cbiAgICAgICAgICAgIDx2cy1wb3B1cCA6YWN0aXZlLnN5bmM9XCJzaG93VXBsb2FkUG9wdXBcIiBjbGFzcz1cImhvbGFtdW5kb1wiIHRpdGxlPVwiVXBsb2FkIGRvY3VtZW50XCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidnMtY29tcG9uZW50IHZzLWNvbi1pbnB1dC1sYWJlbCB2cy1pbnB1dCB3LWZ1bGwgbm8taWNvbi1ib3JkZXIgdnMtaW5wdXQtcHJpbWFyeSBpcy1sYWJlbC1wbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIm1lZGlhX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwibmV3TWVkaWEubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCB2cy1pbnB1dHggdnMtaW5wdXQtLWlucHV0IG5vcm1hbCBoYXNWYWx1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1zcGFuLXBsYWNlaG9sZGVyIHZzLWlucHV0LS1wbGFjZWhvbGRlciBub3JtYWwgbm9ybWFsIHZzLXBsYWNlaG9sZGVyLWxhYmVsXCI+TmFtZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciBuby1ib3JkZXIgdnMtaW5wdXQtcHJpbWFyeSBpcy1sYWJlbC1wbGFjZWhvbGRlciBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10ZXh0YXJlYSBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwibmV3TWVkaWEuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cz1cIjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgc2VsZWN0LWxhcmdlIHZzLWlucHV0eCB2cy1pbnB1dC0taW5wdXQgbm9ybWFsIGhhc1ZhbHVlIG5vLXBhZGRpbmdcIi8+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1zcGFuLXBsYWNlaG9sZGVyIHZzLWlucHV0LS1wbGFjZWhvbGRlciBub3JtYWwgbm9ybWFsIHZzLXBsYWNlaG9sZGVyLWxhYmVsXCI+RGVzY3JpcHRpb248L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZmlsZS11cGxvYWRlciA6b3B0aW9ucz1cImZsb3dDb25maWdcIiBjbGFzcz1cImgtMTAwXCIgdi1vbjpmaWxlU3VibWl0dGVkPVwib25GaWxlU3VibWl0dGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW9uOmZpbGVTdWNjZXNzPVwib25GaWxlU3VjY2Vzc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtY2VudGVyIGZpbGUtdXBsb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cImFzc2V0cy9kcmFnLWRyb3Auc3ZnXCIgd2lkdGg9XCI0MCVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIHYtaWY9XCJmbG93ICYmIGZsb3cuZmlsZXMgJiYgZmxvdy5maWxlcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3tmbG93LmZpbGVzWzBdLm5hbWV9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2ZpbGUtdXBsb2FkZXI+XG5cbiAgICAgICAgICAgICAgICA8dnMtcHJvZ3Jlc3Mgdi1pZj1cImZsb3cucHJvZ3Jlc3MgJiYgZmxvdy5wcm9ncmVzcygpID4gMFwiIDpwZXJjZW50PVwiZmxvdy5wcm9ncmVzcygpICogMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIvPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImp1c3RpZnktYmV0d2VlbiBteS01XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJtci0yXCIgY29sb3I9XCJwcmltYXJ5XCIgQGNsaWNrPVwidXBsb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhKGZsb3cgJiYgZmxvdy5maWxlcyAmJiBmbG93LmZpbGVzLmxlbmd0aCA+IDAgJiYgbmV3TWVkaWEubmFtZSAmJiBuZXdNZWRpYS5kZXNjcmlwdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZFxuICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBjb2xvcj1cIndhcm5pbmdcIiBAY2xpY2s9XCJzaG93VXBsb2FkUG9wdXAgPSBmYWxzZVwiPkNhbmNlbDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92cy1wb3B1cD5cblxuICAgICAgICA8L3Z4LWNhcmQ+XG4gICAgPC9kaXY+XG5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzfSBmcm9tICd2dWV4JztcbiAgICBpbXBvcnQgRGF0ZXBpY2tlciBmcm9tICd2dWVqcy1kYXRlcGlja2VyJztcbiAgICBpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG4gICAgaW1wb3J0IEZpbGVTZXJ2aWNlIGZyb20gXCIuLi8uLi8uLi9jb21tb24vc2VydmljZXMvRmlsZVNlcnZpY2VcIjtcbiAgICBpbXBvcnQgTWVkaWFVcGxvYWQgZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbXBvbmVudHMvTWVkaWFVcGxvYWQnO1xuICAgIGltcG9ydCBGaWxlVXBsb2FkZXIgZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbXBvbmVudHMvRmlsZVVwbG9hZGVyJztcbiAgICBpbXBvcnQgc3RvcmUgZnJvbSAnLi8uLi8uLi8uLi8uLi9zdG9yZSc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvblNlcnZpY2UgZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlXCI7XG4gICAgaW1wb3J0IHtleHRyYWN0RXJyb3JNZXNzYWdlfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG4gICAgaW1wb3J0IFVzZXJTZXJ2aWNlIGZyb20gXCIuLi8uLi8uLi91c2Vycy9zZXJ2aWNlcy9Vc2VyXCI7XG4gICAgaW1wb3J0IENsaWVudFNlcnZpY2UgZnJvbSBcIi4uLy4uLy4uL2NsaWVudHMvc2VydmljZXMvQ2xpZW50XCI7XG4gICAgaW1wb3J0IFZ1ZVNpbXBsZVN1Z2dlc3QgZnJvbSAndnVlLXNpbXBsZS1zdWdnZXN0JztcbiAgICBpbXBvcnQgJ3Z1ZS1zaW1wbGUtc3VnZ2VzdC9kaXN0L3N0eWxlcy5jc3MnXG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBwcm9qZWN0OiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgICAgICAgICAgaXNOZXc6IHtyZXF1aXJlZDogdHJ1ZX0sXG4gICAgICAgICAgICBsb2FkaW5nOiB7cmVxdWlyZWQ6IHRydWV9XG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaG93UmVqZWN0aW9uUG9wdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNob3dQcm9ncmVzc1BvcHVwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzaG93QWNjZXB0YW5jZVBvcHVwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzaG93VXBsb2FkUG9wdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzTG9hZGluZ0NsaWVudHM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBbXSxcbiAgICAgICAgICAgICAgICBhY2NlcHREYXRhOiB7fSxcbiAgICAgICAgICAgICAgICByZWplY3Rpb246IHt9LFxuICAgICAgICAgICAgICAgIG5ld01lZGlhOiB7fSxcbiAgICAgICAgICAgICAgICBmbG93OiB7fSxcbiAgICAgICAgICAgICAgICBmbG93Q29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZUZpbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZE9uQ2xpY2s6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHRlc3RDaHVua3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBhbGxvd0R1cGxpY2F0ZVVwbG9hZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHthY2NlcHQ6ICcqLyonfSxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBgJHtwcm9jZXNzLmVudi5WVUVfQVBQX0FQSV9VUkx9djEvcHJvamVjdHMvJHt0aGlzLiRyb3V0ZS5wYXJhbXMuaWR9L2FjdGlvbnMvdXBsb2FkRG9jdW1lbnRgLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7c3RvcmUuZ2V0dGVyc1sndG9rZW4nXX1gXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHByb2dyZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgIGFtb3VudDogMFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICB1c2VyRGF0YTogJ3VzZXJEYXRhJyxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlczogJ3Byb2plY3RzL3NlcnZpY2VzJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgIERhdGVwaWNrZXIsXG4gICAgICAgICAgICBNZWRpYVVwbG9hZCxcbiAgICAgICAgICAgIEZpbGVVcGxvYWRlcixcbiAgICAgICAgICAgIFZ1ZVNpbXBsZVN1Z2dlc3QsXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGJvbGRlblN1Z2dlc3Rpb24gKHNjb3BlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzY29wZSkgcmV0dXJuIHNjb3BlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtzdWdnZXN0aW9uLCBxdWVyeX0gPSBzY29wZTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy4kcmVmcy5zdWdnZXN0Q29tcG9uZW50LmRpc3BsYXlQcm9wZXJ0eShzdWdnZXN0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRzID0gcXVlcnkuc3BsaXQoL1tcXHMtXy9cXFxcfC5dL2dtKS5maWx0ZXIodCA9PiAhIXQpIHx8IFsnJ107XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXBsYWNlKG5ldyBSZWdFeHAoJyguKj8pKCcgKyB0ZXh0cy5qb2luKCd8JykgKyAnKSguKj8pJywgJ2dpJyksICckMTxiPiQyPC9iPiQzJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNBZG1pbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJTZXJ2aWNlLmlzQWRtaW4odGhpcy51c2VyRGF0YSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0Q2xpZW50SWQgKGNsaWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdC5jbGllbnQgPSBjbGllbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGNsaWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2plY3QuY2xpZW50X2lkID0gY2xpZW50LmlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmdldFNlcnZpY2VzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmFsaWRhdGVGb3JtICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZXJyb3JzLmFueSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJhY2sgKCkge1xuICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVlc3RRdW90YXRpb24gKCkge1xuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuY29uZmlybUVuYWJsZSgnT3BlcmF0aW9uIGNvbmZpcm1hdGlvbicsIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVxdWVzdCBxdW90YXRpb24gZm9yIHByb2plY3QgJHt0aGlzLnByb2plY3QubmFtZX0/YCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncHJvamVjdHMvcmVxdWVzdFF1b3RhdGlvbicsIHRoaXMucHJvamVjdCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U2VydmljZXMgKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdwcm9qZWN0cy9nZXRTZXJ2aWNlcycsIHRoaXMucHJvamVjdC5jbGllbnRfaWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENsaWVudHMgKHNlYXJjaCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ2xpZW50cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIENsaWVudFNlcnZpY2UuZ2V0KHtwZXJQYWdlOiA5OTksIHNlYXJjaDogc2VhcmNofSkudGhlbigoe2RhdGF9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0NsaWVudHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhdmUgKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7Li4udGhpcy5wcm9qZWN0fTtcbiAgICAgICAgICAgICAgICBkYXRhLmR1ZV9kYXRlID0gbW9tZW50KHRoaXMucHJvamVjdC5kdWVfZGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnc2F2ZScsIGRhdGEpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltYWdlU2VsZWN0ZWQgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgRmlsZVNlcnZpY2UuZ2V0QmFzZTY0KGRhdGEuZmlsZS5maWxlKS50aGVuKChlbmNvZGVkSW1hZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdm0ucHJvamVjdC5sb2dvID0gZW5jb2RlZEltYWdlO1xuICAgICAgICAgICAgICAgICAgICB2bS4kZW1pdCgnZmlsZUFkZGVkJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdDogdm0ucHJvamVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRJbWFnZTogZW5jb2RlZEltYWdlLnNwbGl0KCcsJylbMV1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25GaWxlU3VibWl0dGVkIChmbG93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93ID0gZmxvdztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGxvYWQgKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxvdy5vcHRzLnF1ZXJ5LmdnTmFtZSA9IHRoaXMubmV3TWVkaWEubmFtZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3cub3B0cy5xdWVyeS5nZ0Rlc2NyaXB0aW9uID0gdGhpcy5uZXdNZWRpYS5kZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3cudXBsb2FkKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25GaWxlU3VjY2VzcyAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb2plY3QuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmZpbGVzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdC5maWxlcy5wdXNoKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1VwbG9hZFBvcHVwID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2hvd1VwbG9hZGVyUG9wdXAgKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxvdyA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMubmV3TWVkaWEgPSB7fTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dVcGxvYWRQb3B1cCA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlTWVkaWEgKCkge1xuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuY29uZmlybUNhbmNlbCgnT3BlcmF0aW9uIGNvbmZpcm1hdGlvbicsICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBkb2N1bWVudHM/JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lZGlhSWRzID0gdm0uc2VsZWN0ZWQubWFwKHggPT4geC5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdwcm9qZWN0cy9kZWxldGVNZWRpYScsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RJZDogdm0ucHJvamVjdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkczogbWVkaWFJZHNcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2bS5wcm9qZWN0LmZpbGVzID0gdm0ucHJvamVjdC5maWxlcy5maWx0ZXIoZmlsZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lZGlhSWRzLmluZGV4T2YoZmlsZS5pZCkgPT09IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2bS5zZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdm0uJGZvcmNlVXBkYXRlKClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZG93bmxvYWRNZWRpYSAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lZGlhSWRzID0gdm0uc2VsZWN0ZWQubWFwKHggPT4geC5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Byb2plY3RzL2Rvd25sb2FkTWVkaWEnLCB7XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RJZDogdm0ucHJvamVjdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgaWRzOiBtZWRpYUlkc1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5zZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB2bS4kZm9yY2VVcGRhdGUoKVxuICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQgKCkge1xuICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgaWYgKCF2bS5pc05ldyAmJiB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQpIHtcbiAgICAgICAgICAgICAgICB2bS5sb2FkaW5nUHJvamVjdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdm0uJHN0b3JlLmRpc3BhdGNoKCdwcm9qZWN0cy9nZXRQcm9qZWN0Jywgdm0uJHJvdXRlLnBhcmFtcy5pZCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLmxvYWRpbmdQcm9qZWN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHZtLmdldFNlcnZpY2VzKCk7XG4gICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5sb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZtLmdldFNlcnZpY2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMlJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBUEE7QUFXQTtBQUNBO0FBREE7QUF0QkE7QUEwQkE7QUFDQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE5R0E7QUFnSEE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBM0tBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Form.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/Edit.vue?vue&type=script&lang=js&":
/*!****************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/services/Edit.vue?vue&type=script&lang=js& ***!
  \****************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/Form */ \"./src/modules/projects/services/components/Form.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    service: 'services/selectedService'\n  })),\n  components: {\n    Service: _components_Form__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  data: function data() {\n    return {\n      updating: false\n    };\n  },\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapMutations\"])({\n    setSelectedService: 'services/SELECTED_SERVICE'\n  }), {\n    fileUploaded: function fileUploaded() {\n      this.updating = false;\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'Service updated successfully');\n      history.back();\n    },\n    save: function save(_ref) {\n      var _this = this;\n\n      var service = _ref.service,\n          flow = _ref.flow;\n      var vm = this;\n      vm.updating = true;\n\n      var newService = _objectSpread({}, service);\n\n      vm.setSelectedService(newService);\n      this.$store.dispatch('services/updateService', service).then(function () {\n        if (flow && flow.upload) {\n          flow.upload();\n        } else {\n          _this.fileUploaded();\n        }\n      }, function (error) {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n      });\n    }\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL0VkaXQudnVlPzVlNmUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgc206dy1mdWxsIG1kOnctZnVsbCBsZzp3LTEvMSBkLXRoZW1lLWRhcmstYmdcIj5cbiAgICAgICAgPHNlcnZpY2UgOmlzTmV3PVwiZmFsc2VcIiA6bG9hZGluZz1cInVwZGF0aW5nXCIgOnNlcnZpY2U9XCJ7Li4uc2VydmljZX1cIiB2LW9uOnNhdmU9XCJzYXZlXCJcbiAgICAgICAgICAgICAgICAgdi1vbjpmaWxlVXBsb2FkZWQ9XCJmaWxlVXBsb2FkZWRcIi8+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVycywgbWFwTXV0YXRpb25zfSBmcm9tICd2dWV4JztcbiAgICBpbXBvcnQgU2VydmljZSBmcm9tICcuL2NvbXBvbmVudHMvRm9ybSc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvblNlcnZpY2UgZnJvbSBcIi4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlXCI7XG4gICAgaW1wb3J0IHtleHRyYWN0RXJyb3JNZXNzYWdlfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiAnc2VydmljZXMvc2VsZWN0ZWRTZXJ2aWNlJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgU2VydmljZVxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdXBkYXRpbmc6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICAuLi5tYXBNdXRhdGlvbnMoe1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkU2VydmljZTogJ3NlcnZpY2VzL1NFTEVDVEVEX1NFUlZJQ0UnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbGVVcGxvYWRlZCAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdTZXJ2aWNlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAgICAgaGlzdG9yeS5iYWNrKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2F2ZSAoe3NlcnZpY2UsIGZsb3d9KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTZXJ2aWNlID0gey4uLnNlcnZpY2V9O1xuICAgICAgICAgICAgICAgIHZtLnNldFNlbGVjdGVkU2VydmljZShuZXdTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2VydmljZXMvdXBkYXRlU2VydmljZScsIHNlcnZpY2UpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmxvdyAmJiBmbG93LnVwbG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxvdy51cGxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5lcnJvcignT09QUyEnLCBleHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBRUE7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXhCQTtBQWRBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/List.vue?vue&type=script&lang=js&":
/*!****************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/services/List.vue?vue&type=script&lang=js& ***!
  \****************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _services_Service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./services/Service */ \"./src/modules/projects/services/services/Service.js\");\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      filters: {\n        perPage: 10,\n        page: 1,\n        search: null\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_9__[\"mapGetters\"])({\n    services: 'services/services'\n  })),\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_9__[\"mapMutations\"])({\n    setSelectedService: 'services/SELECTED_SERVICE'\n  }), {\n    internalSearch: function internalSearch() {\n      this.$store.dispatch('services/getServices', this.filters);\n    },\n    handleSearch: Object(lodash__WEBPACK_IMPORTED_MODULE_10__[\"debounce\"])(function (search, vm) {\n      vm.filters.search = search;\n      vm.filters.page = 1;\n      vm.internalSearch();\n    }, 500),\n    handleChangePage: function handleChangePage(page) {\n      this.filters.page = page;\n      this.internalSearch();\n    },\n    editService: function editService(service) {\n      this.setSelectedService(service);\n      this.$router.push({\n        name: 'EditService',\n        params: {\n          id: service.id\n        }\n      });\n    },\n    disableService: function disableService(service) {\n      var _this = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].confirmCancel('Operation confirmation', \"Are you sure you want to make \".concat(service.name, \" service unavailable?\"), function () {\n        _this.$store.dispatch('services/disable', service);\n      });\n    },\n    enableService: function enableService(service) {\n      var _this2 = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].confirmEnable('Operation confirmation', \"Are you sure you want to make \".concat(service.name, \" service available?\"), function () {\n        _this2.$store.dispatch('services/enable', service);\n      });\n    },\n    downloadFile: function downloadFile(service) {\n      _services_Service__WEBPACK_IMPORTED_MODULE_12__[\"default\"].downloadMedia(service);\n    }\n  }),\n  mounted: function mounted() {\n    this.internalSearch();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL0xpc3QudnVlPzkxODUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJjYWwtc2VydmljZXNcIj5cbiAgICAgICAgPHZ4LWNhcmQ+XG4gICAgICAgICAgICA8dnMtdGFibGUgOnNzdD1cInRydWVcIiA6ZGF0YT1cInNlcnZpY2VzLmRhdGFcIiBzZWFyY2ggQHNlYXJjaD1cIihlKSA9PiBoYW5kbGVTZWFyY2goZSwgdGhpcylcIj5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90PVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz5TZXJ2aWNlczwvaDM+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiIHRvPVwiL3NlcnZpY2VzL2NyZWF0ZVwiIHNpemU9XCJzbWFsbFwiIGljb249XCJhZGRfY2lyY2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Q9XCJ0aGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdGg+TmFtZTwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aD5EZXNjcmlwdGlvbjwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aD5DcmVhdGVkIEJ5PC92cy10aD5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRoPlByaWNlPC92cy10aD5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRoIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj5BY3Rpb25zPC92cy10aD5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Qtc2NvcGU9XCJ7ZGF0YX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRyIDprZXk9XCJ0ci5pZFwiIHYtZm9yPVwidHIgaW4gZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRkPnt7dHIubmFtZX19PC92cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZD57e3RyLmRlc2NyaXB0aW9ufX08L3ZzLXRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLXRkPnt7dHIuY3JlYXRlZF9ieX19PC92cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZD57e3RyLnByaWNlfX08L3ZzLXRkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQgY2xhc3M9XCJmbG9hdC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2eC10b29sdGlwIHRleHQ9XCJEb3dubG9hZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIHYtaWY9XCJ0ci5oYXNfbWVkaWFcIiBjbGFzcz1cImlubGluZS1ibG9jayBteC0xXCIgQGNsaWNrPVwiZG93bmxvYWRGaWxlKHRyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvdWRfZG93bmxvYWRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92eC10b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2eC10b29sdGlwIDp0ZXh0PVwidHIuY2FuX2VkaXQgPyAnRWRpdCcgOiAnRGV0YWlscydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBteC0xXCIgQGNsaWNrPVwiZWRpdFNlcnZpY2UodHIpXCIgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aWNvbj1cInRyLmNhbl9lZGl0ID8gJ2VkaXQnIDogJ3JlbW92ZV9yZWRfZXllJ1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Z4LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZ4LXRvb2x0aXAgdGV4dD1cIkRpc2FibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwiaW5saW5lLWJsb2NrIG14LTFcIiBAY2xpY2s9XCJkaXNhYmxlU2VydmljZSh0cilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiIHYtaWY9XCJ0ci5jYW5fZGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Z4LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZ4LXRvb2x0aXAgdGV4dD1cIkVuYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNsYXNzPVwiaW5saW5lLWJsb2NrIG14LTFcIiBAY2xpY2s9XCJlbmFibGVTZXJ2aWNlKHRyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCIgdi1pZj1cInRyLmNhbl9lbmFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjaGVja1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Z4LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXRkPlxuICAgICAgICAgICAgICAgICAgICA8L3ZzLXRyPlxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3ZzLXRhYmxlPlxuXG4gICAgICAgICAgICA8dnMtcGFnaW5hdGlvbiB2LWlmPVwic2VydmljZXMuZGF0YSAmJiBzZXJ2aWNlcy5kYXRhLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm10LTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRvdGFsPVwic2VydmljZXMubWV0YS5wYWdpbmF0aW9uLnRvdGFsX3BhZ2VzXCIgdi1tb2RlbD1cImZpbHRlcnMucGFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlQ2hhbmdlUGFnZVwiLz5cbiAgICAgICAgPC92eC1jYXJkPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQge21hcEdldHRlcnMsIG1hcE11dGF0aW9uc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSAnbG9kYXNoJztcbiAgICBpbXBvcnQgTm90aWZpY2F0aW9uU2VydmljZSBmcm9tIFwiLi4vLi4vY29tbW9uL3NlcnZpY2VzL05vdGlmaWNhdGlvblNlcnZpY2VcIjtcbiAgICBpbXBvcnQgU2VydmljZSBmcm9tIFwiLi9zZXJ2aWNlcy9TZXJ2aWNlXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHBlclBhZ2U6IDEwLFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2g6IG51bGwsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgICAgIHNlcnZpY2VzOiAnc2VydmljZXMvc2VydmljZXMnXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICAuLi5tYXBNdXRhdGlvbnMoe1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkU2VydmljZTogJ3NlcnZpY2VzL1NFTEVDVEVEX1NFUlZJQ0UnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnRlcm5hbFNlYXJjaCAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3NlcnZpY2VzL2dldFNlcnZpY2VzJywgdGhpcy5maWx0ZXJzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGVTZWFyY2g6IGRlYm91bmNlKChzZWFyY2gsIHZtKSA9PiB7XG4gICAgICAgICAgICAgICAgdm0uZmlsdGVycy5zZWFyY2ggPSBzZWFyY2g7XG4gICAgICAgICAgICAgICAgdm0uZmlsdGVycy5wYWdlID0gMTtcbiAgICAgICAgICAgICAgICB2bS5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICAgICAgfSwgNTAwKSxcbiAgICAgICAgICAgIGhhbmRsZUNoYW5nZVBhZ2UgKHBhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnMucGFnZSA9IHBhZ2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVkaXRTZXJ2aWNlIChzZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFNlcnZpY2Uoc2VydmljZSk7XG4gICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goe25hbWU6ICdFZGl0U2VydmljZScsIHBhcmFtczoge2lkOiBzZXJ2aWNlLmlkfX0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2FibGVTZXJ2aWNlIChzZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5jb25maXJtQ2FuY2VsKCdPcGVyYXRpb24gY29uZmlybWF0aW9uJywgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBtYWtlICR7c2VydmljZS5uYW1lfSBzZXJ2aWNlIHVuYXZhaWxhYmxlP2AsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3NlcnZpY2VzL2Rpc2FibGUnLCBzZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmFibGVTZXJ2aWNlIChzZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5jb25maXJtRW5hYmxlKCdPcGVyYXRpb24gY29uZmlybWF0aW9uJywgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBtYWtlICR7c2VydmljZS5uYW1lfSBzZXJ2aWNlIGF2YWlsYWJsZT9gLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzZXJ2aWNlcy9lbmFibGUnLCBzZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkb3dubG9hZEZpbGUgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlLmRvd25sb2FkTWVkaWEoc2VydmljZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cblxuPC9zdHlsZT5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFEQTtBQU9BO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFFQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhDQTtBQWtDQTtBQUNBO0FBQ0E7QUFuREEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/List.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/New.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/services/New.vue?vue&type=script&lang=js& ***!
  \***************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/Form */ \"./src/modules/projects/services/components/Form.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    services: 'services/services',\n    isLoading: 'services/isLoading'\n  })),\n  components: {\n    Service: _components_Form__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  data: function data() {\n    return {\n      service: {\n        can_edit: true\n      },\n      saving: false\n    };\n  },\n  methods: {\n    fileUploaded: function fileUploaded() {\n      this.saving = false;\n      history.back();\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'Service created successfully');\n    },\n    save: function save(_ref) {\n      var _this = this;\n\n      var service = _ref.service,\n          flow = _ref.flow;\n      var vm = this;\n      vm.saving = true;\n      vm.$store.dispatch('services/createService', service).then(function (service) {\n        if (flow && flow.upload) {\n          flow.opts.target = \"\".concat(\"https://api.geotechnics.coding.al/api/\", \"v1/services/\").concat(service.id, \"/actions/uploadDocument\");\n          flow.upload();\n        } else {\n          _this.fileUploaded();\n        }\n      }, function (error) {\n        vm.saving = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vTmV3LnZ1ZT83MzljIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwidngtY29sIHNtOnctZnVsbCBtZDp3LWZ1bGwgbGc6dy0xLzEgZC10aGVtZS1kYXJrLWJnXCI+XG4gICAgICAgIDxzZXJ2aWNlIDppc05ldz1cInRydWVcIiA6bG9hZGluZz1cInNhdmluZ1wiIDpzZXJ2aWNlPVwic2VydmljZVwiIHYtb246c2F2ZT1cInNhdmVcIiB2LW9uOmZpbGVVcGxvYWRlZD1cImZpbGVVcGxvYWRlZFwiLz5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzfSBmcm9tICd2dWV4JztcbiAgICBpbXBvcnQgU2VydmljZSBmcm9tICcuL2NvbXBvbmVudHMvRm9ybSc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvblNlcnZpY2UgZnJvbSBcIi4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlXCI7XG4gICAgaW1wb3J0IHtleHRyYWN0RXJyb3JNZXNzYWdlfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlczogJ3NlcnZpY2VzL3NlcnZpY2VzJyxcbiAgICAgICAgICAgICAgICBpc0xvYWRpbmc6ICdzZXJ2aWNlcy9pc0xvYWRpbmcnXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBTZXJ2aWNlXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiB7XG4gICAgICAgICAgICAgICAgICAgIGNhbl9lZGl0OiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2F2aW5nOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgZmlsZVVwbG9hZGVkICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdTZXJ2aWNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2F2ZSAoe3NlcnZpY2UsIGZsb3d9KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZtLnNhdmluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdm0uJHN0b3JlLmRpc3BhdGNoKCdzZXJ2aWNlcy9jcmVhdGVTZXJ2aWNlJywgc2VydmljZSkudGhlbigoc2VydmljZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmxvdyAmJiBmbG93LnVwbG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxvdy5vcHRzLnRhcmdldCA9IGAke3Byb2Nlc3MuZW52LlZVRV9BUFBfQVBJX1VSTH12MS9zZXJ2aWNlcy8ke3NlcnZpY2UuaWR9L2FjdGlvbnMvdXBsb2FkRG9jdW1lbnRgO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxvdy51cGxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdm0uc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoJ09PUFMhJywgZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFwQkE7QUFsQkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/components/Form.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/services/components/Form.vue?vue&type=script&lang=js& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _categories_services_Category__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../categories/services/Category */ \"./src/modules/categories/services/Category.js\");\n/* harmony import */ var _users_services_User__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../users/services/User */ \"./src/modules/users/services/User.js\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../../store */ \"./src/store.js\");\n/* harmony import */ var _common_components_FileUploader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../common/components/FileUploader */ \"./src/modules/common/components/FileUploader.vue\");\n/* harmony import */ var _services_Service__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../services/Service */ \"./src/modules/projects/services/services/Service.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    service: {\n      required: true\n    },\n    isNew: {\n      required: true\n    },\n    loading: {\n      required: true\n    }\n  },\n  components: {\n    FileUploader: _common_components_FileUploader__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n  },\n  data: function data() {\n    return {\n      categories: [],\n      flow: {},\n      flowConfig: {\n        singleFile: true,\n        uploadOnClick: true,\n        testChunks: false,\n        allowDuplicateUploads: true,\n        attributes: {\n          accept: '*/*'\n        },\n        target: \"\".concat(\"https://api.geotechnics.coding.al/api/\", \"v1/services/\").concat(this.$route.params.id, \"/actions/uploadDocument\"),\n        headers: {\n          Authorization: \"Bearer \".concat(_store__WEBPACK_IMPORTED_MODULE_11__[\"default\"].getters['token'])\n        }\n      },\n      progress: {\n        amount: 0\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    userData: 'userData'\n  })),\n  methods: {\n    setCategoryId: function setCategoryId(category) {\n      this.service.category = category;\n      this.service.category_id = category.id;\n      this.$forceUpdate();\n    },\n    onFileSubmitted: function onFileSubmitted(flow) {\n      this.flow = flow;\n    },\n    onFileSuccess: function onFileSuccess() {\n      this.$emit('fileUploaded');\n    },\n    isAdmin: function isAdmin() {\n      return _users_services_User__WEBPACK_IMPORTED_MODULE_10__[\"default\"].isAdmin(this.userData);\n    },\n    validateForm: function validateForm() {\n      return !this.errors.any();\n    },\n    download: function download() {\n      _services_Service__WEBPACK_IMPORTED_MODULE_13__[\"default\"].downloadMedia(this.service);\n    },\n    back: function back() {\n      history.back();\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    var vm = this;\n\n    if (this.isAdmin()) {\n      _categories_services_Category__WEBPACK_IMPORTED_MODULE_9__[\"default\"].get({\n        perPage: 999,\n        is_enabled: true\n      }).then(function (_ref) {\n        var data = _ref.data;\n        _this.categories = data;\n      });\n    }\n\n    if (!vm.isNew && this.$route.params.id) {\n      vm.loadingService = true;\n      vm.$store.dispatch('services/getService', vm.$route.params.id).then(function () {\n        vm.loadingService = false;\n      }, function () {\n        vm.loadingService = false;\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvY29tcG9uZW50cy9Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRm9ybS52dWU/YzEzZiJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPHZ4LWNhcmQ+XG4gICAgICAgIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHYtb246c3VibWl0LnByZXZlbnQ9XCIkZW1pdCgnc2F2ZScsIHtzZXJ2aWNlLCBmbG93fSlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLThcIj5cblxuICAgICAgICAgICAgICAgIDx2cy1pbnB1dCB2LXZhbGlkYXRlPVwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbiBpY29uLWhhc2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uLXBhY2s9XCJmZWF0aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cInNlcnZpY2UubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cIiFzZXJ2aWNlLmNhbl9lZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCI+e3sgZXJyb3JzLmZpcnN0KCduYW1lJykgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJpc0FkbWluKClcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5IGlzLWxhYmVsLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1wbGFjZWhvbGRlciBnZy1kZWZhdWx0LWxhYmVsXCI+Q2F0ZWdvcnk8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8TXVsdGlzZWxlY3Qgdi1tb2RlbD1cInNlcnZpY2UuY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm9wdGlvbnM9XCJjYXRlZ29yaWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiY29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2VsZWN0PVwic2V0Q2F0ZWdvcnlJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjay1ieT1cImlkXCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHZzLWlucHV0IG5hbWU9XCJwcmljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCIhc2VydmljZS5jYW5fZWRpdCB8fCBpc0FkbWluKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhc2VydmljZS5jYW5fZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiUHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwic2VydmljZS5wcmljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgncHJpY2UnKSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDx2cy1pbnB1dCB2LXZhbGlkYXRlPVwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi1hbGlnbi1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbi1wYWNrPVwiZmVhdGhlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhc2VydmljZS5jYW5fZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJzZXJ2aWNlLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCI+e3sgZXJyb3JzLmZpcnN0KCdkZXNjcmlwdGlvbicpIH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZzLWNvbXBvbmVudCB2cy1jb24taW5wdXQtbGFiZWwgdnMtaW5wdXQgdy1mdWxsIG5vLWljb24tYm9yZGVyIHZzLWlucHV0LXByaW1hcnkgaXMtbGFiZWwtcGxhY2Vob2xkZXIgbm8tYm9yZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10ZXh0YXJlYSB2LXZhbGlkYXRlPVwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXZ2LXZhbGlkYXRlLW9uPVwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibG9uZ19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbi1wYWNrPVwiZmVhdGhlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhc2VydmljZS5jYW5fZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIk5vdGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJzZXJ2aWNlLmxvbmdfZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cz1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgdnMtaW5wdXQgdnMtaW5wdXQtLWlucHV0IG5vcm1hbCBoYXNWYWx1ZSBuby1wYWRkaW5nXCIvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LXNwYW4tcGxhY2Vob2xkZXIgdnMtaW5wdXQtLXBsYWNlaG9sZGVyIG5vcm1hbCBub3JtYWwgdnMtcGxhY2Vob2xkZXItbGFiZWxcIj5Mb25nIERlc2NyaXB0aW9uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWNvbCB3LTIvMyBteC1hdXRvIHRleHQtY2VudGVyXCIgdi1pZj1cInNlcnZpY2UuY2FuX2VkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIiB2LWlmPVwic2VydmljZS5oYXNfbWVkaWFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgc2VydmljZSB0aGVyZSBpcyBhbHJlYWR5IGEgZG9jdW1lbnQgZXhhbXBsZSBhdHRhY2hlZCwgdXBsb2FkaW5nIGFub3RoZXIgb25lIHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIGRvY3VtZW50IVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgdy0xLzYgbXgtYXV0byB0ZXh0LWNlbnRlclwiIHYtaWY9XCJzZXJ2aWNlLmNhbl9lZGl0ICYmIGlzQWRtaW4oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmlsZS11cGxvYWRlciA6b3B0aW9ucz1cImZsb3dDb25maWdcIiBjbGFzcz1cImgtMTAwXCIgdi1vbjpmaWxlU3VibWl0dGVkPVwib25GaWxlU3VibWl0dGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1vbjpmaWxlU3VjY2Vzcz1cIm9uRmlsZVN1Y2Nlc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtY2VudGVyIGZpbGUtdXBsb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCJhc3NldHMvZHJhZy1kcm9wLnN2Z1wiIHdpZHRoPVwiMTAwJVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiB2LWlmPVwiZmxvdyAmJiBmbG93LmZpbGVzICYmIGZsb3cuZmlsZXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57e2Zsb3cuZmlsZXNbMF0ubmFtZX19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZmlsZS11cGxvYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICA8dnMtcHJvZ3Jlc3Mgdi1pZj1cImZsb3cucHJvZ3Jlc3MgJiYgZmxvdy5wcm9ncmVzcygpID4gMFwiIDpwZXJjZW50PVwiZmxvdy5wcm9ncmVzcygpICogMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWJldHdlZW4gbXktNVwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNsYXNzPVwibXItMlwiIGNvbG9yPVwicHJpbWFyeVwiIDpkaXNhYmxlZD1cIiF2YWxpZGF0ZUZvcm1cIiBidXR0b249XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJzZXJ2aWNlLmNhbl9lZGl0XCI+U2F2ZVxuICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBjb2xvcj1cIndhcm5pbmdcIiBAY2xpY2s9XCJiYWNrXCI+Q2FuY2VsPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gdi1pZj1cInNlcnZpY2UuaGFzX21lZGlhXCIgY2xhc3M9XCJtci0yXCIgY29sb3I9XCJwcmltYXJ5XCIgQGNsaWNrPVwiZG93bmxvYWRcIj5Eb3dubG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZVxuICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L3Z4LWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVyc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IENhdGVnb3J5IGZyb20gXCIuLi8uLi8uLi9jYXRlZ29yaWVzL3NlcnZpY2VzL0NhdGVnb3J5XCI7XG4gICAgaW1wb3J0IFVzZXJTZXJ2aWNlIGZyb20gXCIuLi8uLi8uLi91c2Vycy9zZXJ2aWNlcy9Vc2VyXCI7XG4gICAgaW1wb3J0IHN0b3JlIGZyb20gXCIuLi8uLi8uLi8uLi9zdG9yZVwiO1xuICAgIGltcG9ydCBGaWxlVXBsb2FkZXIgZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9jb21wb25lbnRzL0ZpbGVVcGxvYWRlclwiO1xuICAgIGltcG9ydCBTZXJ2aWNlIGZyb20gXCIuLi9zZXJ2aWNlcy9TZXJ2aWNlXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgICAgICAgICAgaXNOZXc6IHtyZXF1aXJlZDogdHJ1ZX0sXG4gICAgICAgICAgICBsb2FkaW5nOiB7cmVxdWlyZWQ6IHRydWV9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgIEZpbGVVcGxvYWRlcixcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YSAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXM6IFtdLFxuICAgICAgICAgICAgICAgIGZsb3c6IHt9LFxuICAgICAgICAgICAgICAgIGZsb3dDb25maWc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlRmlsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkT25DbGljazogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGVzdENodW5rczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGFsbG93RHVwbGljYXRlVXBsb2FkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge2FjY2VwdDogJyovKid9LFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGAke3Byb2Nlc3MuZW52LlZVRV9BUFBfQVBJX1VSTH12MS9zZXJ2aWNlcy8ke3RoaXMuJHJvdXRlLnBhcmFtcy5pZH0vYWN0aW9ucy91cGxvYWREb2N1bWVudGAsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtzdG9yZS5nZXR0ZXJzWyd0b2tlbiddfWBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50OiAwXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgICAgIHVzZXJEYXRhOiAndXNlckRhdGEnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgc2V0Q2F0ZWdvcnlJZCAoY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuY2F0ZWdvcnlfaWQgPSBjYXRlZ29yeS5pZDtcbiAgICAgICAgICAgICAgICB0aGlzLiRmb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRmlsZVN1Ym1pdHRlZCAoZmxvdykge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxvdyA9IGZsb3c7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25GaWxlU3VjY2VzcyAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnZmlsZVVwbG9hZGVkJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNBZG1pbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJTZXJ2aWNlLmlzQWRtaW4odGhpcy51c2VyRGF0YSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmFsaWRhdGVGb3JtICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZXJyb3JzLmFueSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRvd25sb2FkICgpIHtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlLmRvd25sb2FkTWVkaWEodGhpcy5zZXJ2aWNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiYWNrICgpIHtcbiAgICAgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW91bnRlZCAoKSB7XG4gICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0FkbWluKCkpIHtcbiAgICAgICAgICAgICAgICBDYXRlZ29yeS5nZXQoe3BlclBhZ2U6IDk5OSwgaXNfZW5hYmxlZDogdHJ1ZX0pLnRoZW4oKHtkYXRhfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSBkYXRhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF2bS5pc05ldyAmJiB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQpIHtcbiAgICAgICAgICAgICAgICB2bS5sb2FkaW5nU2VydmljZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdm0uJHN0b3JlLmRpc3BhdGNoKCdzZXJ2aWNlcy9nZXRTZXJ2aWNlJywgdm0uJHJvdXRlLnBhcmFtcy5pZCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLmxvYWRpbmdTZXJ2aWNlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5sb2FkaW5nU2VydmljZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuPC9zY3JpcHQ+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBS0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFQQTtBQVdBO0FBQ0E7QUFEQTtBQWRBO0FBa0JBO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkJBO0FBeUJBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/components/Form.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/ChangePassword.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_UserForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/UserForm */ \"./src/modules/users/components/UserForm.vue\");\n/* harmony import */ var _components_CompanyProfile__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/CompanyProfile */ \"./src/modules/users/components/CompanyProfile.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      updating: false,\n      user: {}\n    };\n  },\n  components: {\n    User: _components_UserForm__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n    Company: _components_CompanyProfile__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    userData: 'userData'\n  })),\n  methods: {\n    validateForm: function validateForm() {\n      return !this.errors.any();\n    },\n    back: function back() {\n      history.back();\n    },\n    updatePassword: function updatePassword(userData) {\n      var vm = this;\n      vm.updating = true;\n      userData.id = this.userData.id;\n      this.$store.dispatch('users/updatePassword', userData).then(function () {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].success('Operation completed', 'Password updated successfully');\n      }, function (error) {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_12__[\"extractErrorMessage\"])(error));\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvdXNlcnMvQ2hhbmdlUGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9DaGFuZ2VQYXNzd29yZC52dWU/YTVjZiJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWNvbCBzbTp3LWZ1bGwgbWQ6dy1mdWxsIGxnOnctMS8xXCI+XG4gICAgICAgIDx2eC1jYXJkPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtOnctZnVsbCBtZDp3LTEvMiBsZzp3LTEvMiBteC1hdXRvXCI+XG5cbiAgICAgICAgICAgICAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBAc3VibWl0LnByZXZlbnQ9XCJ1cGRhdGVQYXNzd29yZCh1c2VyKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtaW5wdXQgdi12YWxpZGF0ZT1cIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbiBpY29uLWxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwidXNlci5wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBpbmxpbmUtYmxvY2sgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgncGFzc3dvcmQnKSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8dnMtaW5wdXQgdi12YWxpZGF0ZT1cIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZF9jb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi1sb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uLXBhY2s9XCJmZWF0aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiUGFzc3dvcmQgQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJ1c2VyLnBhc3N3b3JkX2NvbmZpcm1hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBpbmxpbmUtYmxvY2sgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgncGFzc3dvcmRfY29uZmlybWF0aW9uJykgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImp1c3RpZnktYmV0d2VlbiBteS01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNsYXNzPVwibXItMlwiIGNvbG9yPVwicHJpbWFyeVwiIDpkaXNhYmxlZD1cIiF2YWxpZGF0ZUZvcm1cIiBidXR0b249XCJzdWJtaXRcIj5TYXZlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJtci0yXCIgY29sb3I9XCJ3YXJuaW5nXCIgQGNsaWNrPVwiYmFja1wiPkNhbmNlbDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3Z4LWNhcmQ+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB7bWFwR2V0dGVyc30gZnJvbSAndnVleCc7XG4gICAgaW1wb3J0IFVzZXIgZnJvbSAnLi9jb21wb25lbnRzL1VzZXJGb3JtJztcbiAgICBpbXBvcnQgQ29tcGFueSBmcm9tICcuL2NvbXBvbmVudHMvQ29tcGFueVByb2ZpbGUnO1xuICAgIGltcG9ydCBOb3RpZmljYXRpb25TZXJ2aWNlIGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZVwiO1xuICAgIGltcG9ydCB7ZXh0cmFjdEVycm9yTWVzc2FnZX0gZnJvbSBcIi4uL2NvbW1vbi9zZXJ2aWNlcy9VdGlsaXR5U2VydmljZVwiO1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdXBkYXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHVzZXI6IHt9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBVc2VyLFxuICAgICAgICAgICAgQ29tcGFueSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgICAgIHVzZXJEYXRhOiAndXNlckRhdGEnXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICB2YWxpZGF0ZUZvcm0gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5lcnJvcnMuYW55KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYmFjaygpIHtcbiAgICAgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGRhdGVQYXNzd29yZCAodXNlckRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHVzZXJEYXRhLmlkID0gdGhpcy51c2VyRGF0YS5pZDtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgndXNlcnMvdXBkYXRlUGFzc3dvcmQnLCB1c2VyRGF0YSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdQYXNzd29yZCB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS51cGRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKCdPT1BTIScsIGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbiAgICBAaW1wb3J0IFwiLi4vLi4vYXNzZXRzL3Njc3MvdnVlc2F4L3BhZ2VzL3Byb2ZpbGVcIjtcbjwvc3R5bGU+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBREE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQTtBQWhCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ClientsConfirmations.vue?vue&type=script&lang=js&":
/*!********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/ClientsConfirmations.vue?vue&type=script&lang=js& ***!
  \********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! regenerator-runtime/runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      filters: {\n        perPage: 10,\n        page: 1,\n        search: null\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_10__[\"mapGetters\"])({\n    users: 'users/clientsConfirmations'\n  })),\n  methods: {\n    internalSearch: function internalSearch() {\n      this.$store.dispatch('users/getClientsConfirmations', this.filters);\n    },\n    handleSearch: Object(lodash__WEBPACK_IMPORTED_MODULE_11__[\"debounce\"])(function (search, vm) {\n      vm.filters.search = search;\n      vm.filters.page = 1;\n      vm.internalSearch();\n    }, 500),\n    handleChangePage: function handleChangePage(page) {\n      this.filters.page = page;\n      this.internalSearch();\n    },\n    enableUser: function enableUser(user) {\n      var _this = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_12__[\"default\"].confirmEnable('Operation confirmation', \"Are you sure you want to enable \".concat(user.fullName),\n      /*#__PURE__*/\n      Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return _this.$store.dispatch('users/enable', {\n                  user: user,\n                  collection: 'clientsConfirmations'\n                });\n\n              case 2:\n                _this.internalSearch();\n\n                _this.$store.dispatch('getCounters');\n\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      })));\n    },\n    deleteConfirmation: function deleteConfirmation(user) {\n      var _this2 = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_12__[\"default\"].confirmCancel('Operation confirmation', \"Are you sure you want to delete \".concat(user.fullName),\n      /*#__PURE__*/\n      Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee2() {\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return _this2.$store.dispatch('users/deleteConfirmation', user);\n\n              case 2:\n                _this2.internalSearch();\n\n              case 3:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2);\n      })));\n    }\n  },\n  mounted: function mounted() {\n    this.internalSearch();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvdXNlcnMvQ2xpZW50c0NvbmZpcm1hdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9DbGllbnRzQ29uZmlybWF0aW9ucy52dWU/YzUzYSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cImNhbC11c2Vyc1wiPlxuICAgICAgICA8dngtY2FyZD5cbiAgICAgICAgICAgIDx2cy10YWJsZSA6c3N0PVwidHJ1ZVwiIDpkYXRhPVwidXNlcnMuZGF0YVwiIHNlYXJjaCBAc2VhcmNoPVwiKGUpID0+IGhhbmRsZVNlYXJjaChlLCB0aGlzKVwiPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPkNsaWVudHMgQ29uZmlybWF0aW9uPC9oMz5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Q9XCJ0aGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdGg+TmFtZTwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aD5FbWFpbDwvdnMtdGg+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aCBjbGFzcz1cImZsb2F0LXJpZ2h0XCI+QWN0aW9uczwvdnMtdGg+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBzbG90LXNjb3BlPVwie2RhdGF9XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10ciA6a2V5PVwiaW5kZXh0clwiIHYtZm9yPVwiKHRyLCBpbmRleHRyKSBpbiBkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQgOmRhdGE9XCJkYXRhW2luZGV4dHJdLmZ1bGxOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhW2luZGV4dHJdLmZ1bGxOYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQgOmRhdGE9XCJkYXRhW2luZGV4dHJdLmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJgbWFpbHRvOiR7ZGF0YVtpbmRleHRyXS5lbWFpbH19fWBcIj57e2RhdGFbaW5kZXh0cl0uZW1haWx9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dnMtdGQgY2xhc3M9XCJmbG9hdC1yaWdodFwiIDpkYXRhPVwiZGF0YVtpbmRleHRyXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2eC10b29sdGlwIHRleHQ9XCJFbmFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBtci0xXCIgQGNsaWNrPVwiZW5hYmxlVXNlcihkYXRhW2luZGV4dHJdKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCIgdi1pZj1cIiFkYXRhW2luZGV4dHJdLmlzX2VuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjaGVja1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Z4LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZ4LXRvb2x0aXAgdGV4dD1cIkRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbXItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiZGVsZXRlQ29uZmlybWF0aW9uKGRhdGFbaW5kZXh0cl0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkZWxldGVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92eC10b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgPC92cy10cj5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPC92cy10YWJsZT5cblxuICAgICAgICAgICAgPHZzLXBhZ2luYXRpb24gdi1pZj1cInVzZXJzLmRhdGEgJiYgdXNlcnMuZGF0YS5sZW5ndGggPiAwXCIgY2xhc3M9XCJtdC02XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0b3RhbD1cInVzZXJzLm1ldGEucGFnaW5hdGlvbi50b3RhbF9wYWdlc1wiIHYtbW9kZWw9XCJmaWx0ZXJzLnBhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZUNoYW5nZVBhZ2VcIi8+XG4gICAgICAgIDwvdngtY2FyZD5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzfSBmcm9tICd2dWV4JztcbiAgICBpbXBvcnQge2RlYm91bmNlfSBmcm9tICdsb2Rhc2gnO1xuICAgIGltcG9ydCBOb3RpZmljYXRpb25TZXJ2aWNlIGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZVwiO1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICAgICAgICBwZXJQYWdlOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiBudWxsLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICB1c2VyczogJ3VzZXJzL2NsaWVudHNDb25maXJtYXRpb25zJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgaW50ZXJuYWxTZWFyY2ggKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCd1c2Vycy9nZXRDbGllbnRzQ29uZmlybWF0aW9ucycsIHRoaXMuZmlsdGVycyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFuZGxlU2VhcmNoOiBkZWJvdW5jZSgoc2VhcmNoLCB2bSkgPT4ge1xuICAgICAgICAgICAgICAgIHZtLmZpbHRlcnMuc2VhcmNoID0gc2VhcmNoO1xuICAgICAgICAgICAgICAgIHZtLmZpbHRlcnMucGFnZSA9IDE7XG4gICAgICAgICAgICAgICAgdm0uaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgIH0sIDUwMCksXG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2VQYWdlIChwYWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzLnBhZ2UgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmFibGVVc2VyICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5jb25maXJtRW5hYmxlKCdPcGVyYXRpb24gY29uZmlybWF0aW9uJywgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBlbmFibGUgJHt1c2VyLmZ1bGxOYW1lfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3VzZXJzL2VuYWJsZScsIHt1c2VyLCBjb2xsZWN0aW9uOiAnY2xpZW50c0NvbmZpcm1hdGlvbnMnfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2dldENvdW50ZXJzJyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlQ29uZmlybWF0aW9uICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5jb25maXJtQ2FuY2VsKCdPcGVyYXRpb24gY29uZmlybWF0aW9uJywgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgJHt1c2VyLmZ1bGxOYW1lfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3VzZXJzL2RlbGV0ZUNvbmZpcm1hdGlvbicsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQgKCkge1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuXG48L3N0eWxlPlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0RBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFEQTtBQU9BO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFGQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUF6QkE7QUEyQkE7QUFDQTtBQUNBO0FBNUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ClientsConfirmations.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Edit.vue?vue&type=script&lang=js&":
/*!****************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/Edit.vue?vue&type=script&lang=js& ***!
  \****************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_UserForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/UserForm */ \"./src/modules/users/components/UserForm.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    user: 'users/selectedUser'\n  })),\n  components: {\n    User: _components_UserForm__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  data: function data() {\n    return {\n      updating: false\n    };\n  },\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapMutations\"])({\n    setSelectedUser: 'users/SELECTED_USER'\n  }), {\n    save: function save(user) {\n      var vm = this;\n      vm.updating = true;\n\n      var newUser = _objectSpread({}, user);\n\n      vm.setSelectedUser(newUser);\n      this.$store.dispatch('users/updateUser', user).then(function () {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'User updated successfully');\n        history.back();\n      }, function (error) {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n      });\n    },\n    imageSelected: function imageSelected(_ref) {\n      var _this = this;\n\n      var user = _ref.user,\n          encodedImage = _ref.encodedImage;\n      var vm = this;\n      vm.updating = true;\n      this.$store.dispatch('users/uploadAvatar', {\n        user: user,\n        image: encodedImage\n      }).then(function () {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'Avatar updated successfully');\n        vm.updating = false;\n\n        _this.$store.dispatch('me');\n      }, function (error) {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n        vm.updating = false;\n      });\n    }\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvdXNlcnMvRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL0VkaXQudnVlPzVlNmUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgc206dy1mdWxsIG1kOnctZnVsbCBsZzp3LTEvMVwiPlxuICAgICAgICA8dngtY2FyZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbTp3LWZ1bGwgbWQ6dy0xLzIgbGc6dy0xLzIgbXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgIDx1c2VyIDppc05ldz1cImZhbHNlXCIgOmxvYWRpbmc9XCJ1cGRhdGluZ1wiIDp1c2VyPVwiey4uLnVzZXJ9XCIgdi1vbjpzYXZlPVwic2F2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdi1vbjpmaWxlQWRkZWQ9XCJpbWFnZVNlbGVjdGVkXCI+PC91c2VyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdngtY2FyZD5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzLCBtYXBNdXRhdGlvbnN9IGZyb20gJ3Z1ZXgnO1xuICAgIGltcG9ydCBVc2VyIGZyb20gJy4vY29tcG9uZW50cy9Vc2VyRm9ybSc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvblNlcnZpY2UgZnJvbSBcIi4uL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlXCI7XG4gICAgaW1wb3J0IHtleHRyYWN0RXJyb3JNZXNzYWdlfSBmcm9tIFwiLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICB1c2VyOiAndXNlcnMvc2VsZWN0ZWRVc2VyJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgVXNlclxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdXBkYXRpbmc6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICAuLi5tYXBNdXRhdGlvbnMoe1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkVXNlcjogJ3VzZXJzL1NFTEVDVEVEX1VTRVInXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNhdmUgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2bSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1VzZXIgPSB7Li4udXNlcn07XG4gICAgICAgICAgICAgICAgdm0uc2V0U2VsZWN0ZWRVc2VyKG5ld1VzZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCd1c2Vycy91cGRhdGVVc2VyJywgdXNlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdVc2VyIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xuICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS51cGRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKCdPT1BTIScsIGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWFnZVNlbGVjdGVkICh7dXNlciwgZW5jb2RlZEltYWdlfSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgICAgICB2bS51cGRhdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3VzZXJzL3VwbG9hZEF2YXRhcicsIHt1c2VyLCBpbWFnZTogZW5jb2RlZEltYWdlfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdBdmF0YXIgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ21lJyk7XG4gICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoJ09PUFMhJywgZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICB2bS51cGRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBREE7QUFJQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFFQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN0JBO0FBZEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/New.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/New.vue?vue&type=script&lang=js& ***!
  \***************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_UserForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/UserForm */ \"./src/modules/users/components/UserForm.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    users: 'users/users',\n    isLoading: 'users/isLoading'\n  })),\n  components: {\n    User: _components_UserForm__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  data: function data() {\n    return {\n      user: {\n        role_id: ''\n      },\n      saving: false\n    };\n  },\n  methods: {\n    save: function save(user) {\n      var vm = this;\n      vm.saving = true;\n      vm.$store.dispatch('users/createUser', user).then(function () {\n        vm.saving = false;\n        history.back();\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].success('Operation completed', 'User created successfully');\n      }, function (error) {\n        vm.saving = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_11__[\"extractErrorMessage\"])(error));\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvdXNlcnMvTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vTmV3LnZ1ZT83MzljIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwidngtY29sIHNtOnctZnVsbCBtZDp3LWZ1bGwgbGc6dy0xLzFcIj5cbiAgICAgICAgPHZ4LWNhcmQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic206dy1mdWxsIG1kOnctMS8yIGxnOnctMS8yIG14LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8dXNlciA6aXNOZXc9XCJ0cnVlXCIgOmxvYWRpbmc9XCJzYXZpbmdcIiA6dXNlcj1cInVzZXJcIiB2LW9uOnNhdmU9XCJzYXZlXCI+PC91c2VyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdngtY2FyZD5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzfSBmcm9tICd2dWV4JztcbiAgICBpbXBvcnQgVXNlciBmcm9tICcuL2NvbXBvbmVudHMvVXNlckZvcm0nO1xuICAgIGltcG9ydCBOb3RpZmljYXRpb25TZXJ2aWNlIGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZVwiO1xuICAgIGltcG9ydCB7ZXh0cmFjdEVycm9yTWVzc2FnZX0gZnJvbSBcIi4uL2NvbW1vbi9zZXJ2aWNlcy9VdGlsaXR5U2VydmljZVwiO1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgdXNlcnM6ICd1c2Vycy91c2VycycsXG4gICAgICAgICAgICAgICAgaXNMb2FkaW5nOiAndXNlcnMvaXNMb2FkaW5nJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgVXNlclxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgICAgICAgICByb2xlX2lkOiAnJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2F2aW5nOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgc2F2ZSAodXNlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgICAgICB2bS5zYXZpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZtLiRzdG9yZS5kaXNwYXRjaCgndXNlcnMvY3JlYXRlVXNlcicsIHVzZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5iYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdVc2VyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKCdPT1BTIScsIGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG48L3NjcmlwdD5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBbEJBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=script&lang=js&":
/*!*******************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/Profile.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _components_UserForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/UserForm */ \"./src/modules/users/components/UserForm.vue\");\n/* harmony import */ var _components_CompanyProfile__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/CompanyProfile */ \"./src/modules/users/components/CompanyProfile.vue\");\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n/* harmony import */ var _services_User__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./services/User */ \"./src/modules/users/services/User.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      updating: false\n    };\n  },\n  components: {\n    User: _components_UserForm__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n    Company: _components_CompanyProfile__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    userData: 'userData'\n  })),\n  methods: {\n    save: function save(user) {\n      var _this = this;\n\n      var vm = this;\n      vm.updating = true;\n      this.$store.dispatch('users/updateUser', user).then(function () {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].success('Operation completed', 'Profile information updated successfully');\n\n        _this.$store.dispatch('me');\n      }, function (error) {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_13__[\"extractErrorMessage\"])(error));\n      });\n    },\n    isAdmin: function isAdmin() {\n      return _services_User__WEBPACK_IMPORTED_MODULE_12__[\"default\"].isAdmin(this.userData);\n    },\n    updateCompanyProfile: function updateCompanyProfile(data) {\n      var _this2 = this;\n\n      var vm = this;\n      vm.updating = true;\n\n      if (data.country) {\n        data.country_id = data.country.id;\n      }\n\n      this.$store.dispatch('users/updateCompanyProfile', data).then(function () {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].success('Operation completed', 'Profile information updated successfully');\n\n        _this2.$store.dispatch('me');\n      }, function (error) {\n        vm.updating = false;\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_13__[\"extractErrorMessage\"])(error));\n      });\n    },\n    imageSelected: function imageSelected(_ref) {\n      var encodedImage = _ref.encodedImage;\n      var vm = this;\n      vm.updating = true;\n      this.$store.dispatch('uploadAvatar', {\n        user: this.userData,\n        image: encodedImage\n      }).then(function () {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].success('Operation completed', 'Avatar updated successfully');\n        vm.updating = false;\n      }, function (error) {\n        _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].error('OOPS!', Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_13__[\"extractErrorMessage\"])(error));\n        vm.updating = false;\n      });\n    }\n  },\n  mounted: function mounted() {},\n  beforeDestroy: function beforeDestroy() {}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvdXNlcnMvUHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL1Byb2ZpbGUudnVlPzVhODgiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1jb2wgc206dy1mdWxsIG1kOnctZnVsbCBsZzp3LTEvMVwiPlxuICAgICAgICA8dngtY2FyZCB2LWlmPVwiaXNBZG1pbigpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic206dy1mdWxsIG1kOnctMS8yIGxnOnctMS8yIG14LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8dXNlciA6aXNOZXc9XCJmYWxzZVwiIDpsb2FkaW5nPVwidXBkYXRpbmdcIiA6dXNlcj1cInsuLi51c2VyRGF0YX1cIiB2LW9uOnNhdmU9XCJzYXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICB2LW9uOmZpbGVBZGRlZD1cImltYWdlU2VsZWN0ZWRcIi8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92eC1jYXJkPlxuICAgICAgICA8dngtY2FyZCB2LWlmPVwiIWlzQWRtaW4oKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtOnctZnVsbCBtZDp3LTEvMSBsZzp3LTEvMSBteC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgPGNvbXBhbnkgOmlzTmV3PVwiZmFsc2VcIiA6Y29tcGFueT1cInsuLi51c2VyRGF0YS5wcm9maWxlfVwiIHYtb246ZmlsZUFkZGVkPVwiaW1hZ2VTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgdi1vbjpzYXZlPVwidXBkYXRlQ29tcGFueVByb2ZpbGVcIi8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92eC1jYXJkPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNiB0ZXh0LWNlbnRlciBiZy13YXJuaW5nIGdnLWJhbm5lci1mdWxsLXNjcmVlblwiIHYtaWY9XCIhdXNlckRhdGEuY2FuX3VzZV9hY2NvdW50XCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJweS00IHRleHQtd2hpdGVcIj5Zb3VyIGFjY291bnQgaGFzIGJlZW4gZGlzYWJsZWQuIFBsZWFzZSBjb250YWN0IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvci48L2gzPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzfSBmcm9tICd2dWV4JztcbiAgICBpbXBvcnQgVXNlciBmcm9tICcuL2NvbXBvbmVudHMvVXNlckZvcm0nO1xuICAgIGltcG9ydCBDb21wYW55IGZyb20gJy4vY29tcG9uZW50cy9Db21wYW55UHJvZmlsZSc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvblNlcnZpY2UgZnJvbSBcIi4uL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlXCI7XG4gICAgaW1wb3J0IFVzZXJTZXJ2aWNlIGZyb20gXCIuL3NlcnZpY2VzL1VzZXJcIjtcbiAgICBpbXBvcnQge2V4dHJhY3RFcnJvck1lc3NhZ2V9IGZyb20gXCIuLi9jb21tb24vc2VydmljZXMvVXRpbGl0eVNlcnZpY2VcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgZGF0YSAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHVwZGF0aW5nOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgVXNlcixcbiAgICAgICAgICAgIENvbXBhbnksXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgICAgICB1c2VyRGF0YTogJ3VzZXJEYXRhJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgc2F2ZSAodXNlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgICAgICB2bS51cGRhdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3VzZXJzL3VwZGF0ZVVzZXInLCB1c2VyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKCdPcGVyYXRpb24gY29tcGxldGVkJywgJ1Byb2ZpbGUgaW5mb3JtYXRpb24gdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ21lJyk7XG4gICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoJ09PUFMhJywgZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzQWRtaW4gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBVc2VyU2VydmljZS5pc0FkbWluKHRoaXMudXNlckRhdGEpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZUNvbXBhbnlQcm9maWxlIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5jb3VudHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEuY291bnRyeV9pZCA9IGRhdGEuY291bnRyeS5pZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3VzZXJzL3VwZGF0ZUNvbXBhbnlQcm9maWxlJywgZGF0YSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdQcm9maWxlIGluZm9ybWF0aW9uIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdtZScpO1xuICAgICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS51cGRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKCdPT1BTIScsIGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWFnZVNlbGVjdGVkICh7ZW5jb2RlZEltYWdlfSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgICAgICB2bS51cGRhdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3VwbG9hZEF2YXRhcicsIHt1c2VyOiB0aGlzLnVzZXJEYXRhLCBpbWFnZTogZW5jb2RlZEltYWdlfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcygnT3BlcmF0aW9uIGNvbXBsZXRlZCcsICdBdmF0YXIgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgICAgICAgICAgdm0udXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5lcnJvcignT09QUyEnLCBleHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgIHZtLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQgKCkge1xuXG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZURlc3Ryb3kgKCkge1xuXG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG4gICAgQGltcG9ydCBcIi4uLy4uL2Fzc2V0cy9zY3NzL3Z1ZXNheC9wYWdlcy9wcm9maWxlXCI7XG48L3N0eWxlPlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFFQTtBQURBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekNBO0FBMkNBO0FBR0E7QUE3REEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Users.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/Users.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/services/NotificationService */ \"./src/modules/common/services/NotificationService.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  data: function data() {\n    return {\n      filters: {\n        perPage: 10,\n        page: 1,\n        search: null\n      }\n    };\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapGetters\"])({\n    users: 'users/users'\n  })),\n  methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_8__[\"mapMutations\"])({\n    setSelectedUser: 'users/SELECTED_USER'\n  }), {\n    internalSearch: function internalSearch() {\n      this.$store.dispatch('users/getUsers', this.filters);\n    },\n    handleSearch: Object(lodash__WEBPACK_IMPORTED_MODULE_9__[\"debounce\"])(function (search, vm) {\n      vm.filters.search = search;\n      vm.filters.page = 1;\n      vm.internalSearch();\n    }, 500),\n    handleChangePage: function handleChangePage(page) {\n      this.filters.page = page;\n      this.internalSearch();\n    },\n    editUser: function editUser(user) {\n      this.setSelectedUser(user);\n      this.$router.push({\n        name: 'EditUser',\n        params: {\n          id: user.id\n        }\n      });\n    },\n    disableUser: function disableUser(user) {\n      var _this = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].confirmCancel('Operation confirmation', \"Are you sure you want to disable \".concat(user.fullName), function () {\n        _this.$store.dispatch('users/disable', user);\n      });\n    },\n    enableUser: function enableUser(user) {\n      var _this2 = this;\n\n      _common_services_NotificationService__WEBPACK_IMPORTED_MODULE_10__[\"default\"].confirmEnable('Operation confirmation', \"Are you sure you want to enable \".concat(user.fullName), function () {\n        _this2.$store.dispatch('users/enable', {\n          user: user,\n          collection: 'users'\n        });\n      });\n    }\n  }),\n  mounted: function mounted() {\n    this.internalSearch();\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvdXNlcnMvVXNlcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9Vc2Vycy52dWU/ZmFjZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cImNhbC11c2Vyc1wiPlxuICAgICAgICA8dngtY2FyZD5cbiAgICAgICAgICAgIDx2cy10YWJsZSA6c3N0PVwidHJ1ZVwiIDpkYXRhPVwidXNlcnMuZGF0YVwiIHNlYXJjaCBAc2VhcmNoPVwiKGUpID0+IGhhbmRsZVNlYXJjaChlLCB0aGlzKVwiPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPlVzZXJzPC9oMz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgdG89XCIvdXNlcnMvY3JlYXRlXCIgc2l6ZT1cInNtYWxsXCIgaWNvbj1cImFkZF9jaXJjbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgc2xvdD1cInRoZWFkXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aD5OYW1lPC92cy10aD5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRoPkVtYWlsPC92cy10aD5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRoIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj5BY3Rpb25zPC92cy10aD5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Qtc2NvcGU9XCJ7ZGF0YX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRyIDprZXk9XCJpbmRleHRyXCIgdi1mb3I9XCIodHIsIGluZGV4dHIpIGluIGRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZCA6ZGF0YT1cImRhdGFbaW5kZXh0cl0uZnVsbE5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGFbaW5kZXh0cl0uZnVsbE5hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC92cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZCA6ZGF0YT1cImRhdGFbaW5kZXh0cl0uZW1haWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cImBtYWlsdG86JHtkYXRhW2luZGV4dHJdLmVtYWlsfX19YFwiPnt7ZGF0YVtpbmRleHRyXS5lbWFpbH19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy10ZCBjbGFzcz1cImZsb2F0LXJpZ2h0XCIgOmRhdGE9XCJkYXRhW2luZGV4dHJdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZ4LXRvb2x0aXAgdGV4dD1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBteC0xXCIgQGNsaWNrPVwiZWRpdFVzZXIoZGF0YVtpbmRleHRyXSlcIiBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJlZGl0XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdngtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dngtdG9vbHRpcCB0ZXh0PVwiRGlzYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbXgtMVwiIEBjbGljaz1cImRpc2FibGVVc2VyKGRhdGFbaW5kZXh0cl0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIiB2LWlmPVwiZGF0YVtpbmRleHRyXS5pc19lbmFibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdngtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dngtdG9vbHRpcCB0ZXh0PVwiRW5hYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJpbmxpbmUtYmxvY2sgbXgtMVwiIEBjbGljaz1cImVuYWJsZVVzZXIoZGF0YVtpbmRleHRyXSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiIHYtaWY9XCIhZGF0YVtpbmRleHRyXS5pc19lbmFibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2hlY2tcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92eC10b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92cy10ZD5cbiAgICAgICAgICAgICAgICAgICAgPC92cy10cj5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPC92cy10YWJsZT5cblxuICAgICAgICAgICAgPHZzLXBhZ2luYXRpb24gdi1pZj1cInVzZXJzLmRhdGEgJiYgdXNlcnMuZGF0YS5sZW5ndGggPiAwXCIgY2xhc3M9XCJtdC02XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0b3RhbD1cInVzZXJzLm1ldGEucGFnaW5hdGlvbi50b3RhbF9wYWdlc1wiIHYtbW9kZWw9XCJmaWx0ZXJzLnBhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZUNoYW5nZVBhZ2VcIi8+XG4gICAgICAgIDwvdngtY2FyZD5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzLCBtYXBNdXRhdGlvbnN9IGZyb20gJ3Z1ZXgnO1xuICAgIGltcG9ydCB7ZGVib3VuY2V9IGZyb20gJ2xvZGFzaCc7XG4gICAgaW1wb3J0IE5vdGlmaWNhdGlvblNlcnZpY2UgZnJvbSBcIi4uL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlXCI7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHBlclBhZ2U6IDEwLFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2g6IG51bGwsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgICAgIHVzZXJzOiAndXNlcnMvdXNlcnMnXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICAuLi5tYXBNdXRhdGlvbnMoe1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkVXNlcjogJ3VzZXJzL1NFTEVDVEVEX1VTRVInLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnRlcm5hbFNlYXJjaCAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3VzZXJzL2dldFVzZXJzJywgdGhpcy5maWx0ZXJzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGVTZWFyY2g6IGRlYm91bmNlKChzZWFyY2gsIHZtKSA9PiB7XG4gICAgICAgICAgICAgICAgdm0uZmlsdGVycy5zZWFyY2ggPSBzZWFyY2g7XG4gICAgICAgICAgICAgICAgdm0uZmlsdGVycy5wYWdlID0gMTtcbiAgICAgICAgICAgICAgICB2bS5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICAgICAgfSwgNTAwKSxcbiAgICAgICAgICAgIGhhbmRsZUNoYW5nZVBhZ2UgKHBhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnMucGFnZSA9IHBhZ2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVkaXRVc2VyICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFVzZXIodXNlcik7XG4gICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goe25hbWU6ICdFZGl0VXNlcicsIHBhcmFtczoge2lkOiB1c2VyLmlkfX0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2FibGVVc2VyICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZS5jb25maXJtQ2FuY2VsKCdPcGVyYXRpb24gY29uZmlybWF0aW9uJywgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkaXNhYmxlICR7dXNlci5mdWxsTmFtZX1gLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCd1c2Vycy9kaXNhYmxlJywgdXNlcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5hYmxlVXNlciAodXNlcikge1xuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlcnZpY2UuY29uZmlybUVuYWJsZSgnT3BlcmF0aW9uIGNvbmZpcm1hdGlvbicsIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZW5hYmxlICR7dXNlci5mdWxsTmFtZX1gLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCd1c2Vycy9lbmFibGUnLCB7dXNlciwgY29sbGVjdGlvbjogJ3VzZXJzJ30pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cblxuPC9zdHlsZT5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMERBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFEQTtBQU9BO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFFQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQTdCQTtBQStCQTtBQUNBO0FBQ0E7QUFoREEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Users.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/components/CompanyProfile.vue?vue&type=script&lang=js& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var core_js_modules_es6_regexp_constructor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es6.regexp.constructor */ \"./node_modules/core-js/modules/es6.regexp.constructor.js\");\n/* harmony import */ var core_js_modules_es6_regexp_constructor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_constructor__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es6.regexp.replace */ \"./node_modules/core-js/modules/es6.regexp.replace.js\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es6.regexp.split */ \"./node_modules/core-js/modules/es6.regexp.split.js\");\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var vue_simple_suggest__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vue-simple-suggest */ \"./node_modules/vue-simple-suggest/dist/es6.js\");\n/* harmony import */ var vue_simple_suggest_dist_styles_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vue-simple-suggest/dist/styles.css */ \"./node_modules/vue-simple-suggest/dist/styles.css\");\n/* harmony import */ var vue_simple_suggest_dist_styles_css__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(vue_simple_suggest_dist_styles_css__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var vue_prism_component__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! vue-prism-component */ \"./node_modules/vue-prism-component/dist/vue-prism-component.common.js\");\n/* harmony import */ var vue_prism_component__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(vue_prism_component__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _common_services_AuthService__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../common/services/AuthService */ \"./src/modules/common/services/AuthService.js\");\n/* harmony import */ var _common_components_MediaUpload__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../common/components/MediaUpload */ \"./src/modules/common/components/MediaUpload.vue\");\n/* harmony import */ var _common_services_FileService__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../common/services/FileService */ \"./src/modules/common/services/FileService.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    company: {\n      required: true\n    },\n    isNew: {\n      required: true\n    }\n  },\n  data: function data() {\n    return {\n      updating: false,\n      loadingCountries: false,\n      mode: 'input'\n    };\n  },\n  mounted: function mounted() {\n    if (this.$route.params.id) {\n      this.$store.dispatch('clients/getClient', this.$route.params.id);\n    }\n  },\n  methods: {\n    validateForm: function validateForm() {\n      return !this.errors.any();\n    },\n    back: function back() {\n      history.back();\n    },\n    onSuggestSelect: function onSuggestSelect(country) {\n      this.company.country = country;\n\n      if (country) {\n        this.company.country_id = country.id;\n      } else {\n        this.company.country_id = null;\n      }\n    },\n    boldenSuggestion: function boldenSuggestion(scope) {\n      if (!scope) return scope;\n      var suggestion = scope.suggestion,\n          query = scope.query;\n      var result = this.$refs.suggestComponent.displayProperty(suggestion);\n      if (!query) return result;\n      var texts = query.split(/[\\s-_/\\\\|.]/gm).filter(function (t) {\n        return !!t;\n      }) || [''];\n      return result.replace(new RegExp('(.*?)(' + texts.join('|') + ')(.*?)', 'gi'), '$1<b>$2</b>$3');\n    },\n    getCountries: function getCountries(inputValue) {\n      var _this = this;\n\n      this.loadingCountries = true;\n      return new Promise(function (resolve) {\n        _common_services_AuthService__WEBPACK_IMPORTED_MODULE_14__[\"default\"].getCountries(inputValue).then(function (countries) {\n          _this.loadingCountries = false;\n          resolve(countries);\n        });\n      });\n    },\n    imageSelected: function imageSelected(data) {\n      var vm = this;\n      _common_services_FileService__WEBPACK_IMPORTED_MODULE_16__[\"default\"].getBase64(data.file.file).then(function (encodedImage) {\n        vm.company.avatar = encodedImage;\n        vm.$forceUpdate();\n        vm.$emit('fileAdded', {\n          user: _objectSpread({}, vm.user),\n          encodedImage: encodedImage.split(',')[1]\n        });\n      });\n    }\n  },\n  components: {\n    VueSimpleSuggest: vue_simple_suggest__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n    Prism: vue_prism_component__WEBPACK_IMPORTED_MODULE_13___default.a,\n    MediaUpload: _common_components_MediaUpload__WEBPACK_IMPORTED_MODULE_15__[\"default\"]\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvdXNlcnMvY29tcG9uZW50cy9Db21wYW55UHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL0NvbXBhbnlQcm9maWxlLnZ1ZT9jMTk3Il0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwiJGVtaXQoJ3NhdmUnLCBjb21wYW55KVwiPlxuXG4gICAgICAgIDx2cy1yb3c+XG5cbiAgICAgICAgICAgIDx2cy1jb2wgY2xhc3M9XCJ3LTEvNVwiIHYtaWY9XCIhaXNOZXdcIj5cbiAgICAgICAgICAgICAgICA8aDE+Jm5ic3A7PC9oMT5cbiAgICAgICAgICAgICAgICA8bWVkaWEtdXBsb2FkIGNsYXNzTmFtZT1cInVzZXItYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2FkaW5nPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnJlc291cmNlPVwiY29tcGFueS5hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1vbjpmaWxlQWRkZWQ9XCJpbWFnZVNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgPC9tZWRpYS11cGxvYWQ+XG4gICAgICAgICAgICA8L3ZzLWNvbD5cblxuICAgICAgICAgICAgPHZzLWNvbCA6Y2xhc3M9XCJpc05ldyA/ICd3LWZ1bGwnIDogJ3ctNC81J1wiPlxuICAgICAgICAgICAgICAgIDx2cy1pbnB1dCB2LXZhbGlkYXRlPVwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbiBpY29uLXVzZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uLXBhY2s9XCJmZWF0aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImNvbXBhbnkubmFtZVwiXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbXBhbnkubmFtZX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBuby1pY29uLWJvcmRlclwiLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoJ25hbWUnKSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDx2cy1pbnB1dCB2LXZhbGlkYXRlPVwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbXBhbnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbiBpY29uLWJyaWVmY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIkNvbXBhbnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiY29tcGFueS5jb21wYW55XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCI+e3sgZXJyb3JzLmZpcnN0KCdjb21wYW55JykgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8dnMtaW5wdXQgdi12YWxpZGF0ZT1cIidyZXF1aXJlZHxlbWFpbHxtaW46MydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXZ2LXZhbGlkYXRlLW9uPVwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJpY29uIGljb24tbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIkVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImNvbXBhbnkuZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBuby1pY29uLWJvcmRlclwiLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoJ2VtYWlsJykgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8dnMtaW5wdXQgdi12YWxpZGF0ZT1cIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXZ2LXZhbGlkYXRlLW9uPVwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJpc05ld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJpY29uIGljb24tbG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIlBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImNvbXBhbnkucGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBpbmxpbmUtYmxvY2sgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCI+e3sgZXJyb3JzLmZpcnN0KCdwYXNzd29yZCcpIH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHZzLWlucHV0IHYtdmFsaWRhdGU9XCIncmVxdWlyZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS12di12YWxpZGF0ZS1vbj1cImJsdXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiaXNOZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRfY29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi1sb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbi1wYWNrPVwiZmVhdGhlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiUGFzc3dvcmQgQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImNvbXBhbnkucGFzc3dvcmRfY29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgaW5saW5lLWJsb2NrIG5vLWljb24tYm9yZGVyXCIvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgncGFzc3dvcmRfY29uZmlybWF0aW9uJykgfX08L3NwYW4+XG5cbiAgICAgICAgICAgIDwvdnMtY29sPlxuXG4gICAgICAgIDwvdnMtcm93PlxuXG4gICAgICAgIDx2cy1yb3c+XG4gICAgICAgICAgICA8dnMtY29sIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPHZzLWlucHV0IHYtdmFsaWRhdGU9XCInJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInBob25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi1waG9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIlBob25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImNvbXBhbnkucGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBuby1pY29uLWJvcmRlclwiLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoJ3Bob25lJykgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJibG9jayBnZy1pbnB1dC1sYWJlbFwiPkNvdW50cnk8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDx2dWUtc2ltcGxlLXN1Z2dlc3QgOmRlYm91bmNlPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmaWx0ZXItYnktcXVlcnk9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsaXN0PVwiZ2V0Q291bnRyaWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXgtc3VnZ2VzdGlvbnM9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWluLWxlbmd0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGU9XCInc2VsZWN0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2VsZWN0PVwib25TdWdnZXN0U2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpudWxsYWJsZS1zZWxlY3Q9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXktYXR0cmlidXRlPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkNvdW50cnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPVwic3VnZ2VzdENvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiY29tcGFueS5jb3VudHJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLWF0dHJpYnV0ZT1cImlkXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHNsb3Q9XCJtaXNjLWl0ZW0tYWJvdmVcIiBzbG90LXNjb3BlPVwieyBzdWdnZXN0aW9ucywgcXVlcnkgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pc2MtaXRlbVwiIHYtaWY9XCJzdWdnZXN0aW9ucy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ObyByZXN1bHRzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiA6dGl0bGU9XCJzY29wZS5zdWdnZXN0aW9uLmRlc2NyaXB0aW9uXCIgc2xvdD1cInN1Z2dlc3Rpb24taXRlbVwiIHNsb3Qtc2NvcGU9XCJzY29wZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWh0bWw9XCJib2xkZW5TdWdnZXN0aW9uKHNjb3BlKVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlzYy1pdGVtXCIgc2xvdD1cIm1pc2MtaXRlbS1iZWxvd1wiIHNsb3Qtc2NvcGU9XCJ7IHN1Z2dlc3Rpb25zIH1cIiB2LWlmPVwibG9hZGluZ0NvdW50cmllc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TG9hZGluZy4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC92dWUtc2ltcGxlLXN1Z2dlc3Q+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbWQ6dy0xLzMgbWQ6aW5saW5lLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1pbnB1dCB2LXZhbGlkYXRlPVwiJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi1tYXAtcGluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiQ2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImNvbXBhbnkuY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXIgaW5saW5lLWJsb2NrXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciB0ZXh0LXNtIGlubGluZS1ibG9jayBtZDpoaWRkZW5cIj57eyBlcnJvcnMuZmlyc3QoJ2NpdHknKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBtZDp3LTEvMiBtZDppbmxpbmUtZmxleCBtZDpweC00IHNtOnB4LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1pbnB1dCB2LXZhbGlkYXRlPVwiJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwic3RyZWV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbiBpY29uLW1hcC1waW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbi1wYWNrPVwiZmVhdGhlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJTdHJlZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJjb21wYW55LnN0cmVldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc20gaW5saW5lLWJsb2NrIG1kOmhpZGRlblwiPnt7IGVycm9ycy5maXJzdCgnc3RyZWV0JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbWQ6dy0xLzYgbWQ6aW5saW5lLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2cy1pbnB1dCB2LXZhbGlkYXRlPVwiJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiemlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbiBpY29uLW1hcC1waW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbi1wYWNrPVwiZmVhdGhlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJaaXAgY29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImNvbXBhbnkuemlwX2NvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciB0ZXh0LXNtIGlubGluZS1ibG9jayBtZDpoaWRkZW5cIj57eyBlcnJvcnMuZmlyc3QoJ3ppcCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaGlkZGVuIG1kOmZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBtZDp3LTEvMyBpbmxpbmUtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciB0ZXh0LXNtIGlubGluZS1ibG9ja1wiPnt7IGVycm9ycy5maXJzdCgnY2l0eScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIG1kOnctMS8yIGlubGluZS1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoJ3N0cmVldCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIG1kOnctMS82IGlubGluZS1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoJ3ppcCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWJldHdlZW4gbXktNVwiPlxuICAgICAgICAgICAgICAgICAgICA8dnMtYnV0dG9uIGNsYXNzPVwibXItMlwiIGNvbG9yPVwicHJpbWFyeVwiIDpkaXNhYmxlZD1cIiF2YWxpZGF0ZUZvcm1cIiBidXR0b249XCJzdWJtaXRcIj5TYXZlPC92cy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJtci0yXCIgY29sb3I9XCJ3YXJuaW5nXCIgQGNsaWNrPVwiYmFja1wiPkNhbmNlbDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92cy1jb2w+XG4gICAgICAgIDwvdnMtcm93PlxuXG4gICAgPC9mb3JtPlxuPC90ZW1wbGF0ZT5cblxuXG48c2NyaXB0PlxuICAgIGltcG9ydCBWdWVTaW1wbGVTdWdnZXN0IGZyb20gJ3Z1ZS1zaW1wbGUtc3VnZ2VzdCc7XG4gICAgaW1wb3J0ICd2dWUtc2ltcGxlLXN1Z2dlc3QvZGlzdC9zdHlsZXMuY3NzJ1xuXG4gICAgaW1wb3J0IFByaXNtIGZyb20gJ3Z1ZS1wcmlzbS1jb21wb25lbnQnXG4gICAgaW1wb3J0IEF1dGhTZXJ2aWNlIGZyb20gXCIuLi8uLi9jb21tb24vc2VydmljZXMvQXV0aFNlcnZpY2VcIjtcbiAgICBpbXBvcnQgTWVkaWFVcGxvYWQgZnJvbSBcIi4uLy4uL2NvbW1vbi9jb21wb25lbnRzL01lZGlhVXBsb2FkXCI7XG4gICAgaW1wb3J0IEZpbGVTZXJ2aWNlIGZyb20gXCIuLi8uLi9jb21tb24vc2VydmljZXMvRmlsZVNlcnZpY2VcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzTmV3OiB7XG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB1cGRhdGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgbG9hZGluZ0NvdW50cmllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgbW9kZTogJ2lucHV0JyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQgKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuJHJvdXRlLnBhcmFtcy5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGllbnRzL2dldENsaWVudCcsIHRoaXMuJHJvdXRlLnBhcmFtcy5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIHZhbGlkYXRlRm9ybSAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmVycm9ycy5hbnkoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiYWNrICgpIHtcbiAgICAgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblN1Z2dlc3RTZWxlY3QgKGNvdW50cnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBhbnkuY291bnRyeSA9IGNvdW50cnk7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wYW55LmNvdW50cnlfaWQgPSBjb3VudHJ5LmlkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGFueS5jb3VudHJ5X2lkID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm9sZGVuU3VnZ2VzdGlvbiAoc2NvcGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNjb3BlKSByZXR1cm4gc2NvcGU7XG4gICAgICAgICAgICAgICAgY29uc3Qge3N1Z2dlc3Rpb24sIHF1ZXJ5fSA9IHNjb3BlO1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLiRyZWZzLnN1Z2dlc3RDb21wb25lbnQuZGlzcGxheVByb3BlcnR5KHN1Z2dlc3Rpb24pO1xuICAgICAgICAgICAgICAgIGlmICghcXVlcnkpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dHMgPSBxdWVyeS5zcGxpdCgvW1xccy1fL1xcXFx8Ll0vZ20pLmZpbHRlcih0ID0+ICEhdCkgfHwgWycnXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlcGxhY2UobmV3IFJlZ0V4cCgnKC4qPykoJyArIHRleHRzLmpvaW4oJ3wnKSArICcpKC4qPyknLCAnZ2knKSwgJyQxPGI+JDI8L2I+JDMnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDb3VudHJpZXMgKGlucHV0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdDb3VudHJpZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBBdXRoU2VydmljZS5nZXRDb3VudHJpZXMoaW5wdXRWYWx1ZSkudGhlbigoY291bnRyaWVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdDb3VudHJpZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoY291bnRyaWVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWFnZVNlbGVjdGVkIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIEZpbGVTZXJ2aWNlLmdldEJhc2U2NChkYXRhLmZpbGUuZmlsZSkudGhlbigoZW5jb2RlZEltYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLmNvbXBhbnkuYXZhdGFyID0gZW5jb2RlZEltYWdlO1xuICAgICAgICAgICAgICAgICAgICB2bS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdm0uJGVtaXQoJ2ZpbGVBZGRlZCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI6IHsuLi52bS51c2VyfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRJbWFnZTogZW5jb2RlZEltYWdlLnNwbGl0KCcsJylbMV1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBWdWVTaW1wbGVTdWdnZXN0LFxuICAgICAgICAgICAgUHJpc20sXG4gICAgICAgICAgICBNZWRpYVVwbG9hZCxcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbiAgICBAaW1wb3J0IFwiLi4vLi4vLi4vYXNzZXRzL3Njc3MvdnVlc2F4L3BhZ2VzL3Byb2ZpbGVcIjtcbjwvc3R5bGU+XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpTUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFEQTtBQUpBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUExQ0E7QUE0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQWpFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/UserForm.vue?vue&type=script&lang=js&":
/*!*******************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/components/UserForm.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es6.regexp.split */ \"./node_modules/core-js/modules/es6.regexp.split.js\");\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _common_components_MediaUpload__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/components/MediaUpload */ \"./src/modules/common/components/MediaUpload.vue\");\n/* harmony import */ var _common_services_FileService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../common/services/FileService */ \"./src/modules/common/services/FileService.js\");\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  props: {\n    user: {\n      required: true\n    },\n    isNew: {\n      required: true\n    },\n    loading: {\n      required: true\n    }\n  },\n  data: function data() {\n    return {};\n  },\n  computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_9__[\"mapGetters\"])({\n    roles: 'users/roles'\n  })),\n  components: {\n    MediaUpload: _common_components_MediaUpload__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n  },\n  methods: {\n    validateForm: function validateForm() {\n      return !this.errors.any();\n    },\n    back: function back() {\n      history.back();\n    },\n    getRoles: function getRoles() {\n      this.$store.dispatch('users/getRoles');\n    },\n    imageSelected: function imageSelected(data) {\n      var vm = this;\n      _common_services_FileService__WEBPACK_IMPORTED_MODULE_11__[\"default\"].getBase64(data.file.file).then(function (encodedImage) {\n        vm.user.avatar = encodedImage;\n        vm.$forceUpdate();\n        vm.$emit('fileAdded', {\n          user: _objectSpread({}, vm.user),\n          encodedImage: encodedImage.split(',')[1]\n        });\n      });\n    },\n    setRoleId: function setRoleId(role) {\n      this.user.role_id = role.id;\n    }\n  },\n  mounted: function mounted() {\n    var vm = this;\n    this.getRoles();\n\n    if (!vm.isNew && this.$route.params.id) {\n      vm.loadingUser = true;\n      vm.$store.dispatch('users/getUser', vm.$route.params.id).then(function () {\n        vm.loadingUser = false;\n      }, function () {\n        vm.loadingUser = false;\n      });\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vc3JjL21vZHVsZXMvdXNlcnMvY29tcG9uZW50cy9Vc2VyRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL1VzZXJGb3JtLnZ1ZT8wNDZlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwiJGVtaXQoJ3NhdmUnLCB1c2VyKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC04XCI+XG5cbiAgICAgICAgICAgIDxkaXYgdi1pZj1cIiFpc05ld1wiPlxuICAgICAgICAgICAgICAgIDxtZWRpYS11cGxvYWQgY2xhc3NOYW1lPVwidXNlci1hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpyZXNvdXJjZT1cInVzZXIuYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtb246ZmlsZUFkZGVkPVwiaW1hZ2VTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgIDwvbWVkaWEtdXBsb2FkPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDx2cy1pbnB1dCB2LXZhbGlkYXRlPVwiJ3JlcXVpcmVkfG1pbjozJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS12di12YWxpZGF0ZS1vbj1cImJsdXJcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbiBpY29uLXVzZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbi1wYWNrPVwiZmVhdGhlclwiXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwtcGxhY2Vob2xkZXI9XCJOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwidXNlci5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBuby1pY29uLWJvcmRlclwiLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgnbmFtZScpIH19PC9zcGFuPlxuXG4gICAgICAgICAgICA8dnMtaW5wdXQgdi12YWxpZGF0ZT1cIidyZXF1aXJlZHxtaW46MydcIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwic3VybmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi11c2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiU3VybmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cInVzZXIuc3VybmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoJ3N1cm5hbWUnKSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgPHZzLWlucHV0IHYtdmFsaWRhdGU9XCIncmVxdWlyZWR8ZW1haWx8bWluOjMnXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXZ2LXZhbGlkYXRlLW9uPVwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiaXNOZXdcIlxuICAgICAgICAgICAgICAgICAgICAgIGljb249XCJpY29uIGljb24tbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uLXBhY2s9XCJmZWF0aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIkVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwidXNlci5lbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoJ2VtYWlsJykgfX08L3NwYW4+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2cy1jb21wb25lbnQgdnMtaW5wdXQgdy1mdWxsIG5vLWljb24tYm9yZGVyIHZzLWlucHV0LXByaW1hcnkgaXMtbGFiZWwtcGxhY2Vob2xkZXIgbWItOFwiXG4gICAgICAgICAgICAgICAgIHYtaWY9XCJpc05ld1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1wbGFjZWhvbGRlciBnZy1kZWZhdWx0LWxhYmVsXCI+Um9sZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0IHYtbW9kZWw9XCJ1c2VyLnJvbGVcIiB2YWx1ZT1cImlkXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUm9sZVwiIDpvcHRpb25zPVwicm9sZXNcIiBsYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2VsZWN0PVwic2V0Um9sZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stYnk9XCJuYW1lXCIgOm11bHRpcGxlPVwiZmFsc2VcIi8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHZzLWlucHV0IHYtdmFsaWRhdGU9XCIncmVxdWlyZWR8bWluOjMnXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJpc05ld1wiXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi1sb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiUGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJ1c2VyLnBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBpbmxpbmUtYmxvY2sgbm8taWNvbi1ib3JkZXJcIi8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHRleHQtc21cIj57eyBlcnJvcnMuZmlyc3QoJ3Bhc3N3b3JkJykgfX08L3NwYW4+XG5cblxuICAgICAgICAgICAgPHZzLWlucHV0IHYtdmFsaWRhdGU9XCIncmVxdWlyZWR8bWluOjMnXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdnYtdmFsaWRhdGUtb249XCJibHVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJpc05ld1wiXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb24gaWNvbi1sb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgIGljb24tcGFjaz1cImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLXBsYWNlaG9sZGVyPVwiUGFzc3dvcmQgQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwidXNlci5wYXNzd29yZF9jb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGlubGluZS1ibG9jayBuby1pY29uLWJvcmRlclwiLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdGV4dC1zbVwiPnt7IGVycm9ycy5maXJzdCgncGFzc3dvcmQnKSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImp1c3RpZnktYmV0d2VlbiBteS01XCI+XG4gICAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBjb2xvcj1cInByaW1hcnlcIiA6ZGlzYWJsZWQ9XCIhdmFsaWRhdGVGb3JtXCIgYnV0dG9uPVwic3VibWl0XCI+U2F2ZTwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDx2cy1idXR0b24gY2xhc3M9XCJtci0yXCIgY29sb3I9XCJ3YXJuaW5nXCIgQGNsaWNrPVwiYmFja1wiPkNhbmNlbDwvdnMtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQge21hcEdldHRlcnN9IGZyb20gJ3Z1ZXgnO1xuICAgIGltcG9ydCBNZWRpYVVwbG9hZCBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbXBvbmVudHMvTWVkaWFVcGxvYWRcIjtcbiAgICBpbXBvcnQgRmlsZVNlcnZpY2UgZnJvbSBcIi4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9GaWxlU2VydmljZVwiO1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdXNlcjoge3JlcXVpcmVkOiB0cnVlfSxcbiAgICAgICAgICAgIGlzTmV3OiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgICAgICAgICAgbG9hZGluZzoge3JlcXVpcmVkOiB0cnVlfVxuICAgICAgICB9LFxuICAgICAgICBkYXRhICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICAgICAgcm9sZXM6ICd1c2Vycy9yb2xlcycsXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBNZWRpYVVwbG9hZCxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgdmFsaWRhdGVGb3JtICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZXJyb3JzLmFueSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJhY2sgKCkge1xuICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFJvbGVzICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgndXNlcnMvZ2V0Um9sZXMnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWFnZVNlbGVjdGVkIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIEZpbGVTZXJ2aWNlLmdldEJhc2U2NChkYXRhLmZpbGUuZmlsZSkudGhlbigoZW5jb2RlZEltYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnVzZXIuYXZhdGFyID0gZW5jb2RlZEltYWdlO1xuICAgICAgICAgICAgICAgICAgICB2bS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdm0uJGVtaXQoJ2ZpbGVBZGRlZCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI6IHsuLi52bS51c2VyfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRJbWFnZTogZW5jb2RlZEltYWdlLnNwbGl0KCcsJylbMV1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0Um9sZUlkIChyb2xlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyLnJvbGVfaWQgPSByb2xlLmlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZtID0gdGhpcztcbiAgICAgICAgICAgIHRoaXMuZ2V0Um9sZXMoKTtcbiAgICAgICAgICAgIGlmICghdm0uaXNOZXcgJiYgdGhpcy4kcm91dGUucGFyYW1zLmlkKSB7XG4gICAgICAgICAgICAgICAgdm0ubG9hZGluZ1VzZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZtLiRzdG9yZS5kaXNwYXRjaCgndXNlcnMvZ2V0VXNlcicsIHZtLiRyb3V0ZS5wYXJhbXMuaWQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2bS5sb2FkaW5nVXNlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdm0ubG9hZGluZ1VzZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJGQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBREE7QUFJQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF2QkE7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyREEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/UserForm.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e&":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"transition\", { attrs: { name: \"back-to-top-fade\" } }, [\n    _c(\n      \"div\",\n      {\n        directives: [\n          {\n            name: \"show\",\n            rawName: \"v-show\",\n            value: _vm.visible,\n            expression: \"visible\"\n          }\n        ],\n        staticClass: \"vue-back-to-top\",\n        style: \"bottom:\" + this.bottom + \";right:\" + this.right + \";\",\n        on: { click: _vm.backToTop }\n      },\n      [\n        _vm._t(\"default\", [\n          _c(\"div\", { staticClass: \"default\" }, [\n            _c(\"span\", [\n              _vm._v(\"\\n          \" + _vm._s(_vm.text) + \"\\n        \")\n            ])\n          ])\n        ])\n      ],\n      2\n    )\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWUtYmFja3RvdG9wL3NyYy9CYWNrVG9Ub3AudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU4YzU2OTBlJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtYmFja3RvdG9wL3NyYy9CYWNrVG9Ub3AudnVlPzJlZDQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcInRyYW5zaXRpb25cIiwgeyBhdHRyczogeyBuYW1lOiBcImJhY2stdG8tdG9wLWZhZGVcIiB9IH0sIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICB2YWx1ZTogX3ZtLnZpc2libGUsXG4gICAgICAgICAgICBleHByZXNzaW9uOiBcInZpc2libGVcIlxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgc3RhdGljQ2xhc3M6IFwidnVlLWJhY2stdG8tdG9wXCIsXG4gICAgICAgIHN0eWxlOiBcImJvdHRvbTpcIiArIHRoaXMuYm90dG9tICsgXCI7cmlnaHQ6XCIgKyB0aGlzLnJpZ2h0ICsgXCI7XCIsXG4gICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uYmFja1RvVG9wIH1cbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIF92bS5fdChcImRlZmF1bHRcIiwgW1xuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZGVmYXVsdFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgICAgICBcIiArIF92bS5fcyhfdm0udGV4dCkgKyBcIlxcbiAgICAgICAgXCIpXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgICBdLFxuICAgICAgMlxuICAgIClcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/App.vue?vue&type=template&id=7ba5bd90&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/App.vue?vue&type=template&id=7ba5bd90& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { attrs: { id: \"app\" } }, [_c(\"router-view\")], 1)\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9BcHAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdiYTViZDkwJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9BcHAudnVlP2IwM2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcImFwcFwiIH0gfSwgW19jKFwicm91dGVyLXZpZXdcIildLCAxKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/App.vue?vue&type=template&id=7ba5bd90&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/Edit.vue?vue&type=template&id=1d909928&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/categories/Edit.vue?vue&type=template&id=1d909928& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1 d-theme-dark-bg\" },\n    [\n      _c(\"category\", {\n        attrs: {\n          isNew: false,\n          loading: _vm.updating,\n          reason: Object.assign({}, _vm.reason)\n        },\n        on: { save: _vm.save }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NhdGVnb3JpZXMvRWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWQ5MDk5MjgmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9FZGl0LnZ1ZT9kYTE3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcInZ4LWNvbCBzbTp3LWZ1bGwgbWQ6dy1mdWxsIGxnOnctMS8xIGQtdGhlbWUtZGFyay1iZ1wiIH0sXG4gICAgW1xuICAgICAgX2MoXCJjYXRlZ29yeVwiLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgaXNOZXc6IGZhbHNlLFxuICAgICAgICAgIGxvYWRpbmc6IF92bS51cGRhdGluZyxcbiAgICAgICAgICByZWFzb246IE9iamVjdC5hc3NpZ24oe30sIF92bS5yZWFzb24pXG4gICAgICAgIH0sXG4gICAgICAgIG9uOiB7IHNhdmU6IF92bS5zYXZlIH1cbiAgICAgIH0pXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/Edit.vue?vue&type=template&id=1d909928&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/List.vue?vue&type=template&id=3c20e800&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/categories/List.vue?vue&type=template&id=3c20e800& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var this$1 = this\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"cal-categories\" } },\n    [\n      _c(\n        \"vx-card\",\n        [\n          _c(\n            \"vs-table\",\n            {\n              attrs: { sst: true, data: _vm.categories.data, search: \"\" },\n              on: {\n                search: function(e) {\n                  return _vm.handleSearch(e, this$1)\n                }\n              },\n              scopedSlots: _vm._u([\n                {\n                  key: \"default\",\n                  fn: function(ref) {\n                    var data = ref.data\n                    return _vm._l(data, function(tr) {\n                      return _c(\n                        \"vs-tr\",\n                        { key: tr.id },\n                        [\n                          _c(\"vs-td\", [_vm._v(_vm._s(tr.code))]),\n                          _c(\"vs-td\", [_vm._v(_vm._s(tr.description))]),\n                          _c(\n                            \"vs-td\",\n                            { staticClass: \"float-right centerx\" },\n                            [\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Edit\" } },\n                                [\n                                  _c(\"vs-button\", {\n                                    staticClass: \"inline-block mx-1\",\n                                    attrs: { size: \"small\", icon: \"edit\" },\n                                    on: {\n                                      click: function($event) {\n                                        return _vm.editCategory(tr)\n                                      }\n                                    }\n                                  })\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Enable\" } },\n                                [\n                                  !tr.is_enabled\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mx-1\",\n                                        attrs: {\n                                          color: \"primary\",\n                                          size: \"small\",\n                                          icon: \"check\"\n                                        },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.enableCategory(tr)\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Disable\" } },\n                                [\n                                  tr.is_enabled\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mx-1\",\n                                        attrs: {\n                                          color: \"danger\",\n                                          size: \"small\",\n                                          icon: \"delete\"\n                                        },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.disableCategory(tr)\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Delete\" } },\n                                [\n                                  tr.can_delete\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mx-1\",\n                                        attrs: {\n                                          color: \"danger\",\n                                          size: \"small\",\n                                          icon: \"delete_forever\"\n                                        },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.deleteCategory(tr)\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              )\n                            ],\n                            1\n                          )\n                        ],\n                        1\n                      )\n                    })\n                  }\n                }\n              ])\n            },\n            [\n              _c(\"template\", { slot: \"header\" }, [\n                _c(\"h3\", [_vm._v(\"Categories\")]),\n                _c(\n                  \"div\",\n                  { staticClass: \"mx-2\" },\n                  [\n                    _c(\n                      \"vs-button\",\n                      {\n                        staticClass: \"d-inline-block\",\n                        attrs: {\n                          to: \"/categories/create\",\n                          size: \"small\",\n                          icon: \"add_circle\"\n                        }\n                      },\n                      [\n                        _vm._v(\n                          \"\\n                        Create\\n                    \"\n                        )\n                      ]\n                    )\n                  ],\n                  1\n                )\n              ]),\n              _c(\n                \"template\",\n                { slot: \"thead\" },\n                [\n                  _c(\"vs-th\", [_vm._v(\"Code\")]),\n                  _c(\"vs-th\", [_vm._v(\"Description\")]),\n                  _c(\"vs-th\", { staticClass: \"float-right\" }, [\n                    _vm._v(\"Actions\")\n                  ])\n                ],\n                1\n              )\n            ],\n            2\n          ),\n          _vm.categories.data && _vm.categories.data.length > 0\n            ? _c(\"vs-pagination\", {\n                staticClass: \"mt-6\",\n                attrs: { total: _vm.categories.meta.pagination[\"total_pages\"] },\n                on: { change: _vm.handleChangePage },\n                model: {\n                  value: _vm.filters.page,\n                  callback: function($$v) {\n                    _vm.$set(_vm.filters, \"page\", $$v)\n                  },\n                  expression: \"filters.page\"\n                }\n              })\n            : _vm._e()\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NhdGVnb3JpZXMvTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMGU4MDAmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9MaXN0LnZ1ZT9lNzdhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoaXMkMSA9IHRoaXNcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IGF0dHJzOiB7IGlkOiBcImNhbC1jYXRlZ29yaWVzXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcInZ4LWNhcmRcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ2cy10YWJsZVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczogeyBzc3Q6IHRydWUsIGRhdGE6IF92bS5jYXRlZ29yaWVzLmRhdGEsIHNlYXJjaDogXCJcIiB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIHNlYXJjaDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVTZWFyY2goZSwgdGhpcyQxKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZWYuZGF0YVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLl9sKGRhdGEsIGZ1bmN0aW9uKHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IHRyLmlkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGRcIiwgW192bS5fdihfdm0uX3ModHIuY29kZSkpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGRcIiwgW192bS5fdihfdm0uX3ModHIuZGVzY3JpcHRpb24pKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJmbG9hdC1yaWdodCBjZW50ZXJ4XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJFZGl0XCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1idXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaW5saW5lLWJsb2NrIG14LTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNpemU6IFwic21hbGxcIiwgaWNvbjogXCJlZGl0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmVkaXRDYXRlZ29yeSh0cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJFbmFibGVcIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdHIuaXNfZW5hYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInZzLWJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaW5saW5lLWJsb2NrIG14LTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJjaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmVuYWJsZUNhdGVnb3J5KHRyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZ4LXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyB0ZXh0OiBcIkRpc2FibGVcIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ci5pc19lbmFibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwidnMtYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpbmxpbmUtYmxvY2sgbXgtMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJkYW5nZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZGlzYWJsZUNhdGVnb3J5KHRyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZ4LXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyB0ZXh0OiBcIkRlbGV0ZVwiIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyLmNhbl9kZWxldGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJ2cy1idXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImlubGluZS1ibG9jayBteC0xXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcImRhbmdlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJkZWxldGVfZm9yZXZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmRlbGV0ZUNhdGVnb3J5KHRyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInRlbXBsYXRlXCIsIHsgc2xvdDogXCJoZWFkZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXCJoM1wiLCBbX3ZtLl92KFwiQ2F0ZWdvcmllc1wiKV0pLFxuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibXgtMlwiIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZC1pbmxpbmUtYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBcIi9jYXRlZ29yaWVzL2NyZWF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBcInNtYWxsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiYWRkX2NpcmNsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlXFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInRlbXBsYXRlXCIsXG4gICAgICAgICAgICAgICAgeyBzbG90OiBcInRoZWFkXCIgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtfdm0uX3YoXCJDb2RlXCIpXSksXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtfdm0uX3YoXCJEZXNjcmlwdGlvblwiKV0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10aFwiLCB7IHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJBY3Rpb25zXCIpXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLmNhdGVnb3JpZXMuZGF0YSAmJiBfdm0uY2F0ZWdvcmllcy5kYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gX2MoXCJ2cy1wYWdpbmF0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdC02XCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgdG90YWw6IF92bS5jYXRlZ29yaWVzLm1ldGEucGFnaW5hdGlvbltcInRvdGFsX3BhZ2VzXCJdIH0sXG4gICAgICAgICAgICAgICAgb246IHsgY2hhbmdlOiBfdm0uaGFuZGxlQ2hhbmdlUGFnZSB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmZpbHRlcnMucGFnZSxcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmZpbHRlcnMsIFwicGFnZVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJmaWx0ZXJzLnBhZ2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/List.vue?vue&type=template&id=3c20e800&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/New.vue?vue&type=template&id=0f85c32e&":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/categories/New.vue?vue&type=template&id=0f85c32e& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1 d-theme-dark-bg\" },\n    [\n      _c(\"category\", {\n        attrs: { isNew: true, loading: _vm.saving, reason: _vm.category },\n        on: { save: _vm.save }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NhdGVnb3JpZXMvTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZjg1YzMyZSYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL05ldy52dWU/NmQ1OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgeyBzdGF0aWNDbGFzczogXCJ2eC1jb2wgc206dy1mdWxsIG1kOnctZnVsbCBsZzp3LTEvMSBkLXRoZW1lLWRhcmstYmdcIiB9LFxuICAgIFtcbiAgICAgIF9jKFwiY2F0ZWdvcnlcIiwge1xuICAgICAgICBhdHRyczogeyBpc05ldzogdHJ1ZSwgbG9hZGluZzogX3ZtLnNhdmluZywgcmVhc29uOiBfdm0uY2F0ZWdvcnkgfSxcbiAgICAgICAgb246IHsgc2F2ZTogX3ZtLnNhdmUgfVxuICAgICAgfSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/New.vue?vue&type=template&id=0f85c32e&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b&":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"vx-card\", [\n    _c(\n      \"form\",\n      {\n        attrs: { autocomplete: \"off\" },\n        on: {\n          submit: function($event) {\n            $event.preventDefault()\n            return _vm.save($event)\n          }\n        }\n      },\n      [\n        _c(\n          \"div\",\n          { staticClass: \"p-8\" },\n          [\n            _c(\n              \"vs-row\",\n              { staticClass: \"w-full\" },\n              [\n                _c(\n                  \"vs-col\",\n                  [\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"required\",\n                          expression: \"'required'\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"code\",\n                        icon: \"icon icon-hash\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Code\"\n                      },\n                      model: {\n                        value: _vm.reason.code,\n                        callback: function($$v) {\n                          _vm.$set(_vm.reason, \"code\", $$v)\n                        },\n                        expression: \"reason.code\"\n                      }\n                    }),\n                    _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                      _vm._v(_vm._s(_vm.errors.first(\"code\")))\n                    ]),\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"required\",\n                          expression: \"'required'\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"description\",\n                        icon: \"icon icon-hash\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Description\"\n                      },\n                      model: {\n                        value: _vm.reason.description,\n                        callback: function($$v) {\n                          _vm.$set(_vm.reason, \"description\", $$v)\n                        },\n                        expression: \"reason.description\"\n                      }\n                    }),\n                    _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                      _vm._v(_vm._s(_vm.errors.first(\"description\")))\n                    ]),\n                    _c(\n                      \"div\",\n                      { staticClass: \"justify-between my-5\" },\n                      [\n                        _c(\n                          \"vs-button\",\n                          {\n                            staticClass: \"mr-2\",\n                            attrs: {\n                              color: \"primary\",\n                              disabled: !_vm.validateForm,\n                              button: \"submit\"\n                            }\n                          },\n                          [_vm._v(\"Save\\n                        \")]\n                        ),\n                        _c(\n                          \"vs-button\",\n                          {\n                            staticClass: \"mr-2\",\n                            attrs: { color: \"warning\" },\n                            on: { click: _vm.back }\n                          },\n                          [_vm._v(\"Back\")]\n                        )\n                      ],\n                      1\n                    )\n                  ],\n                  1\n                )\n              ],\n              1\n            )\n          ],\n          1\n        )\n      ]\n    )\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NhdGVnb3JpZXMvY29tcG9uZW50cy9Gb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MGEyYzY2YiYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL2NvbXBvbmVudHMvRm9ybS52dWU/MTcyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwidngtY2FyZFwiLCBbXG4gICAgX2MoXG4gICAgICBcImZvcm1cIixcbiAgICAgIHtcbiAgICAgICAgYXR0cnM6IHsgYXV0b2NvbXBsZXRlOiBcIm9mZlwiIH0sXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgc3VibWl0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICByZXR1cm4gX3ZtLnNhdmUoJGV2ZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInAtOFwiIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwidnMtcm93XCIsXG4gICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidy1mdWxsXCIgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJ2cy1jb2xcIixcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJyZXF1aXJlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS12di12YWxpZGF0ZS1vblwiOiBcImJsdXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiY29kZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJpY29uIGljb24taGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpY29uLXBhY2tcIjogXCJmZWF0aGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5yZWFzb24uY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLnJlYXNvbiwgXCJjb2RlXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInJlYXNvbi5jb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcImNvZGVcIikpKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJyZXF1aXJlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS12di12YWxpZGF0ZS1vblwiOiBcImJsdXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLWhhc2hcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIkRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnJlYXNvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLnJlYXNvbiwgXCJkZXNjcmlwdGlvblwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJyZWFzb24uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZXJyb3JzLmZpcnN0KFwiZGVzY3JpcHRpb25cIikpKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImp1c3RpZnktYmV0d2VlbiBteS01XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1yLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0udmFsaWRhdGVGb3JtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBcInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiU2F2ZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiKV1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1yLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJ3YXJuaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmJhY2sgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiQmFja1wiKV1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdLFxuICAgICAgICAgIDFcbiAgICAgICAgKVxuICAgICAgXVxuICAgIClcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      staticClass:\n        \"border border-solid d-theme-border-grey-light rounded relative overflow-hidden\",\n      attrs: { id: \"chat-app\" }\n    },\n    [\n      _c(\n        \"vs-sidebar\",\n        {\n          staticClass: \"items-no-padding\",\n          attrs: {\n            \"click-not-close\": _vm.clickNotClose,\n            \"hidden-background\": _vm.clickNotClose,\n            id: \"chat-list-sidebar\",\n            parent: \"#chat-app\"\n          },\n          model: {\n            value: _vm.isChatSidebarActive,\n            callback: function($$v) {\n              _vm.isChatSidebarActive = $$v\n            },\n            expression: \"isChatSidebarActive\"\n          }\n        },\n        [\n          _c(\n            \"div\",\n            { staticClass: \"chat__profile-search flex p-4\" },\n            [\n              _c(\n                \"div\",\n                { staticClass: \"relative inline-flex\" },\n                [\n                  _c(\"vs-avatar\", {\n                    staticClass:\n                      \"m-0 border-2 border-solid bg-white border-white\",\n                    attrs: { src: _vm.userData.avatar, size: \"40px\" }\n                  }),\n                  _c(\"div\", {\n                    staticClass:\n                      \"h-3 w-3 border-white border bg-success border-solid rounded-full absolute right-0 bottom-0\"\n                  })\n                ],\n                1\n              ),\n              _c(\"vs-input\", {\n                staticClass: \"w-full mx-5 input-rounded-full no-icon-border\",\n                attrs: {\n                  icon: \"icon-search\",\n                  \"icon-pack\": \"feather\",\n                  placeholder: \"Search or start a new chat\"\n                },\n                model: {\n                  value: _vm.searchQuery,\n                  callback: function($$v) {\n                    _vm.searchQuery = $$v\n                  },\n                  expression: \"searchQuery\"\n                }\n              })\n            ],\n            1\n          ),\n          _c(\"vs-divider\", { staticClass: \"d-theme-border-grey-light m-0\" }),\n          _c(\n            \"VuePerfectScrollbar\",\n            {\n              staticClass: \"chat-scroll-area pt-4\",\n              attrs: { settings: _vm.settings }\n            },\n            [\n              _c(\"div\", { staticClass: \"chat__chats-list mb-8\" }, [\n                _c(\"h3\", { staticClass: \"text-primary mb-5 px-4\" }, [\n                  _vm._v(\"Projects\")\n                ]),\n                _c(\n                  \"ul\",\n                  { staticClass: \"chat__active-chats bordered-items\" },\n                  _vm._l(_vm.sortedChats, function(contact, index) {\n                    return _c(\n                      \"li\",\n                      {\n                        key: index,\n                        staticClass: \"cursor-pointer\",\n                        on: {\n                          click: function($event) {\n                            return _vm.updateActiveChatUser(contact)\n                          }\n                        }\n                      },\n                      [\n                        _c(\"chat-contact\", {\n                          attrs: {\n                            contact: contact,\n                            isActiveChatUser: _vm.activeChatId === contact.id\n                          }\n                        })\n                      ],\n                      1\n                    )\n                  }),\n                  0\n                )\n              ])\n            ]\n          )\n        ],\n        1\n      ),\n      _c(\n        \"div\",\n        {\n          staticClass:\n            \"chat__bg app-fixed-height chat-content-area border border-solid d-theme-border-grey-light border-t-0 border-r-0 border-b-0\",\n          class: {\n            \"sidebar-spacer--wide\": _vm.clickNotClose,\n            \"flex items-center justify-center\": !_vm.activeChatId\n          }\n        },\n        [\n          _vm.activeChatId\n            ? [\n                _c(\n                  \"div\",\n                  { staticClass: \"chat__navbar\" },\n                  [\n                    _c(\"chat-navbar\", {\n                      attrs: {\n                        chat: _vm.selectedChat,\n                        isSidebarCollapsed: !_vm.clickNotClose,\n                        \"user-id\": _vm.activeChatId\n                      },\n                      on: {\n                        openContactsSidebar: function($event) {\n                          return _vm.toggleChatSidebar(true)\n                        }\n                      }\n                    })\n                  ],\n                  1\n                ),\n                _c(\n                  \"VuePerfectScrollbar\",\n                  {\n                    ref: \"chatLogPS\",\n                    staticClass:\n                      \"chat-content-scroll-area border border-solid d-theme-border-grey-light\",\n                    attrs: { settings: _vm.settings }\n                  },\n                  [\n                    _c(\n                      \"div\",\n                      { ref: \"chatLog\", staticClass: \"chat__log\" },\n                      [\n                        _vm.activeChatId\n                          ? _c(\"chat-log\", {\n                              attrs: {\n                                chat: _vm.selectedChat,\n                                \"user-data\": _vm.userData,\n                                messages: _vm.messages\n                              }\n                            })\n                          : _vm._e()\n                      ],\n                      1\n                    )\n                  ]\n                ),\n                _c(\n                  \"div\",\n                  { staticClass: \"chat__input flex p-4 bg-white\" },\n                  [\n                    _c(\"vs-input\", {\n                      staticClass: \"flex-1\",\n                      attrs: { placeholder: \"Type Your Message\" },\n                      on: {\n                        keyup: function($event) {\n                          if (\n                            !$event.type.indexOf(\"key\") &&\n                            _vm._k(\n                              $event.keyCode,\n                              \"enter\",\n                              13,\n                              $event.key,\n                              \"Enter\"\n                            )\n                          ) {\n                            return null\n                          }\n                          return _vm.sendMessage($event)\n                        }\n                      },\n                      model: {\n                        value: _vm.typedMessage,\n                        callback: function($$v) {\n                          _vm.typedMessage = $$v\n                        },\n                        expression: \"typedMessage\"\n                      }\n                    }),\n                    _c(\n                      \"vs-button\",\n                      {\n                        staticClass: \"bg-primary-gradient ml-4\",\n                        attrs: { type: \"filled\" },\n                        on: { click: _vm.sendMessage }\n                      },\n                      [_vm._v(\"Send\")]\n                    )\n                  ],\n                  1\n                )\n              ]\n            : [\n                _c(\n                  \"div\",\n                  {\n                    staticClass: \"flex flex-col items-center\",\n                    on: {\n                      click: function($event) {\n                        $event.stopPropagation()\n                        return _vm.toggleChatSidebar(true)\n                      }\n                    }\n                  },\n                  [\n                    _c(\"feather-icon\", {\n                      staticClass:\n                        \"mb-4 bg-white p-8 shadow-md rounded-full pointer\",\n                      attrs: {\n                        icon: \"MessageSquareIcon\",\n                        svgClasses: \"w-16 h-16\"\n                      }\n                    })\n                  ],\n                  1\n                )\n              ]\n        ],\n        2\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NoYXQvQ2hhdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzAwM2I1M2UmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9DaGF0LnZ1ZT83ZjljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgXCJib3JkZXIgYm9yZGVyLXNvbGlkIGQtdGhlbWUtYm9yZGVyLWdyZXktbGlnaHQgcm91bmRlZCByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW5cIixcbiAgICAgIGF0dHJzOiB7IGlkOiBcImNoYXQtYXBwXCIgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwidnMtc2lkZWJhclwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaXRlbXMtbm8tcGFkZGluZ1wiLFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBcImNsaWNrLW5vdC1jbG9zZVwiOiBfdm0uY2xpY2tOb3RDbG9zZSxcbiAgICAgICAgICAgIFwiaGlkZGVuLWJhY2tncm91bmRcIjogX3ZtLmNsaWNrTm90Q2xvc2UsXG4gICAgICAgICAgICBpZDogXCJjaGF0LWxpc3Qtc2lkZWJhclwiLFxuICAgICAgICAgICAgcGFyZW50OiBcIiNjaGF0LWFwcFwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgdmFsdWU6IF92bS5pc0NoYXRTaWRlYmFyQWN0aXZlLFxuICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICBfdm0uaXNDaGF0U2lkZWJhckFjdGl2ZSA9ICQkdlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4cHJlc3Npb246IFwiaXNDaGF0U2lkZWJhckFjdGl2ZVwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJjaGF0X19wcm9maWxlLXNlYXJjaCBmbGV4IHAtNFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJyZWxhdGl2ZSBpbmxpbmUtZmxleFwiIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1hdmF0YXJcIiwge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICBcIm0tMCBib3JkZXItMiBib3JkZXItc29saWQgYmctd2hpdGUgYm9yZGVyLXdoaXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNyYzogX3ZtLnVzZXJEYXRhLmF2YXRhciwgc2l6ZTogXCI0MHB4XCIgfVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgIFwiaC0zIHctMyBib3JkZXItd2hpdGUgYm9yZGVyIGJnLXN1Y2Nlc3MgYm9yZGVyLXNvbGlkIHJvdW5kZWQtZnVsbCBhYnNvbHV0ZSByaWdodC0wIGJvdHRvbS0wXCJcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF9jKFwidnMtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctZnVsbCBteC01IGlucHV0LXJvdW5kZWQtZnVsbCBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBpY29uOiBcImljb24tc2VhcmNoXCIsXG4gICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIlNlYXJjaCBvciBzdGFydCBhIG5ldyBjaGF0XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlYXJjaFF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uc2VhcmNoUXVlcnkgPSAkJHZcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlYXJjaFF1ZXJ5XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgICksXG4gICAgICAgICAgX2MoXCJ2cy1kaXZpZGVyXCIsIHsgc3RhdGljQ2xhc3M6IFwiZC10aGVtZS1ib3JkZXItZ3JleS1saWdodCBtLTBcIiB9KSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiVnVlUGVyZmVjdFNjcm9sbGJhclwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjaGF0LXNjcm9sbC1hcmVhIHB0LTRcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHsgc2V0dGluZ3M6IF92bS5zZXR0aW5ncyB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImNoYXRfX2NoYXRzLWxpc3QgbWItOFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcImgzXCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1wcmltYXJ5IG1iLTUgcHgtNFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIlByb2plY3RzXCIpXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcInVsXCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImNoYXRfX2FjdGl2ZS1jaGF0cyBib3JkZXJlZC1pdGVtc1wiIH0sXG4gICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLnNvcnRlZENoYXRzLCBmdW5jdGlvbihjb250YWN0LCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJsaVwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjdXJzb3ItcG9pbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0udXBkYXRlQWN0aXZlQ2hhdFVzZXIoY29udGFjdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJjaGF0LWNvbnRhY3RcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3Q6IGNvbnRhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVDaGF0VXNlcjogX3ZtLmFjdGl2ZUNoYXRJZCA9PT0gY29udGFjdC5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgIFwiY2hhdF9fYmcgYXBwLWZpeGVkLWhlaWdodCBjaGF0LWNvbnRlbnQtYXJlYSBib3JkZXIgYm9yZGVyLXNvbGlkIGQtdGhlbWUtYm9yZGVyLWdyZXktbGlnaHQgYm9yZGVyLXQtMCBib3JkZXItci0wIGJvcmRlci1iLTBcIixcbiAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgXCJzaWRlYmFyLXNwYWNlci0td2lkZVwiOiBfdm0uY2xpY2tOb3RDbG9zZSxcbiAgICAgICAgICAgIFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIjogIV92bS5hY3RpdmVDaGF0SWRcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfdm0uYWN0aXZlQ2hhdElkXG4gICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImNoYXRfX25hdmJhclwiIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiY2hhdC1uYXZiYXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGF0OiBfdm0uc2VsZWN0ZWRDaGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTaWRlYmFyQ29sbGFwc2VkOiAhX3ZtLmNsaWNrTm90Q2xvc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInVzZXItaWRcIjogX3ZtLmFjdGl2ZUNoYXRJZFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5Db250YWN0c1NpZGViYXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnRvZ2dsZUNoYXRTaWRlYmFyKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJWdWVQZXJmZWN0U2Nyb2xsYmFyXCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJlZjogXCJjaGF0TG9nUFNcIixcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgXCJjaGF0LWNvbnRlbnQtc2Nyb2xsLWFyZWEgYm9yZGVyIGJvcmRlci1zb2xpZCBkLXRoZW1lLWJvcmRlci1ncmV5LWxpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNldHRpbmdzOiBfdm0uc2V0dGluZ3MgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHJlZjogXCJjaGF0TG9nXCIsIHN0YXRpY0NsYXNzOiBcImNoYXRfX2xvZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmFjdGl2ZUNoYXRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiY2hhdC1sb2dcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdDogX3ZtLnNlbGVjdGVkQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ1c2VyLWRhdGFcIjogX3ZtLnVzZXJEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlczogX3ZtLm1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImNoYXRfX2lucHV0IGZsZXggcC00IGJnLXdoaXRlXCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZmxleC0xXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgcGxhY2Vob2xkZXI6IFwiVHlwZSBZb3VyIE1lc3NhZ2VcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXl1cDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhJGV2ZW50LnR5cGUuaW5kZXhPZihcImtleVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fayhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXlDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uc2VuZE1lc3NhZ2UoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0udHlwZWRNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0udHlwZWRNZXNzYWdlID0gJCR2XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ0eXBlZE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYmctcHJpbWFyeS1ncmFkaWVudCBtbC00XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImZpbGxlZFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnNlbmRNZXNzYWdlIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJTZW5kXCIpXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS50b2dnbGVDaGF0U2lkZWJhcih0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJmZWF0aGVyLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtYi00IGJnLXdoaXRlIHAtOCBzaGFkb3ctbWQgcm91bmRlZC1mdWxsIHBvaW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJNZXNzYWdlU3F1YXJlSWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnQ2xhc3NlczogXCJ3LTE2IGgtMTZcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      staticClass: \"chat__contact flex items-center px-2 py-3\",\n      class: {\n        \"bg-primary-gradient text-white shadow-lg\": _vm.isActiveChatUser\n      }\n    },\n    [\n      _c(\n        \"div\",\n        { staticClass: \"contact__avatar mr-3\" },\n        [\n          _c(\"vs-avatar\", {\n            staticClass: \"border-2 border-solid border-white bg-white\",\n            attrs: { src: _vm.contact.image, size: \"42px\" }\n          })\n        ],\n        1\n      ),\n      _c(\n        \"div\",\n        {\n          staticClass:\n            \"contact__container w-full flex items-center justify-between overflow-hidden\"\n        },\n        [\n          _c(\n            \"div\",\n            { staticClass: \"contact__info flex flex-col truncate w-5/6\" },\n            [\n              _c(\n                \"h5\",\n                {\n                  staticClass: \"font-semibold\",\n                  class: { \"text-white\": _vm.isActiveChatUser }\n                },\n                [_vm._v(_vm._s(_vm.contact.title))]\n              )\n            ]\n          ),\n          _c(\n            \"div\",\n            {\n              staticClass:\n                \"chat__contact__meta flex self-start flex-col items-end w-1/6\"\n            },\n            [\n              _c(\"span\", { staticClass: \"whitespace-no-wrap\" }, [\n                _vm._v(_vm._s(_vm._f(\"fromNow\")(_vm.contact.last_message_at)))\n              ]),\n              _vm.contact.unread\n                ? _c(\n                    \"vs-chip\",\n                    { staticClass: \"number\", attrs: { color: \"primary\" } },\n                    [_vm._v(_vm._s(_vm.contact.unread))]\n                  )\n                : _vm._e()\n            ],\n            1\n          )\n        ]\n      )\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NoYXQvY29tcG9uZW50cy9DaGF0Q29udGFjdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2ZjM2IyNTYmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL0NoYXRDb250YWN0LnZ1ZT9lYjA3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJjaGF0X19jb250YWN0IGZsZXggaXRlbXMtY2VudGVyIHB4LTIgcHktM1wiLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgXCJiZy1wcmltYXJ5LWdyYWRpZW50IHRleHQtd2hpdGUgc2hhZG93LWxnXCI6IF92bS5pc0FjdGl2ZUNoYXRVc2VyXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBzdGF0aWNDbGFzczogXCJjb250YWN0X19hdmF0YXIgbXItM1wiIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcInZzLWF2YXRhclwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJib3JkZXItMiBib3JkZXItc29saWQgYm9yZGVyLXdoaXRlIGJnLXdoaXRlXCIsXG4gICAgICAgICAgICBhdHRyczogeyBzcmM6IF92bS5jb250YWN0LmltYWdlLCBzaXplOiBcIjQycHhcIiB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKSxcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICBcImNvbnRhY3RfX2NvbnRhaW5lciB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImNvbnRhY3RfX2luZm8gZmxleCBmbGV4LWNvbCB0cnVuY2F0ZSB3LTUvNlwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiaDVcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJmb250LXNlbWlib2xkXCIsXG4gICAgICAgICAgICAgICAgICBjbGFzczogeyBcInRleHQtd2hpdGVcIjogX3ZtLmlzQWN0aXZlQ2hhdFVzZXIgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLmNvbnRhY3QudGl0bGUpKV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICBcImNoYXRfX2NvbnRhY3RfX21ldGEgZmxleCBzZWxmLXN0YXJ0IGZsZXgtY29sIGl0ZW1zLWVuZCB3LTEvNlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJ3aGl0ZXNwYWNlLW5vLXdyYXBcIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uX2YoXCJmcm9tTm93XCIpKF92bS5jb250YWN0Lmxhc3RfbWVzc2FnZV9hdCkpKVxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgX3ZtLmNvbnRhY3QudW5yZWFkXG4gICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJ2cy1jaGlwXCIsXG4gICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibnVtYmVyXCIsIGF0dHJzOiB7IGNvbG9yOiBcInByaW1hcnlcIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5jb250YWN0LnVucmVhZCkpXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICApXG4gICAgXVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _vm.messages\n    ? _c(\n        \"div\",\n        { staticClass: \"m-8\", attrs: { id: \"component-chat-log\" } },\n        _vm._l(_vm.messages, function(msg, index) {\n          return _c(\n            \"div\",\n            { key: index, staticClass: \"msg-grp-container\" },\n            [\n              _vm.messages[index - 1]\n                ? [\n                    !_vm.isSameDay(msg.time, _vm.messages[index - 1].time)\n                      ? _c(\"vs-divider\", [\n                          _c(\"span\", [\n                            _vm._v(\n                              _vm._s(_vm._f(\"date\")(msg.time, \"DD MMMM YYYY\"))\n                            )\n                          ])\n                        ])\n                      : _vm._e(),\n                    !_vm.hasSentPreviousMsg(\n                      _vm.messages[index - 1].sender_id === _vm.userData.id,\n                      msg.sender_id === _vm.userData.id\n                    )\n                      ? _c(\"div\", { staticClass: \"spacer mt-8\" })\n                      : _vm._e()\n                  ]\n                : _vm._e(),\n              _c(\n                \"div\",\n                {\n                  staticClass: \"flex items-start\",\n                  class: [\n                    { \"flex-row-reverse\": msg.sender_id === _vm.userData.id }\n                  ]\n                },\n                [\n                  _vm.messages[index - 1]\n                    ? [\n                        !_vm.hasSentPreviousMsg(\n                          _vm.messages[index - 1].sender_id === _vm.userData.id,\n                          msg.sender_id === _vm.userData.id\n                        ) ||\n                        !_vm.isSameDay(msg.time, _vm.messages[index - 1].time)\n                          ? [\n                              _c(\"vs-avatar\", {\n                                staticClass:\n                                  \"border-2 shadow border-solid border-white bg-white m-0 flex-shrink-0\",\n                                class:\n                                  msg.sender_id === _vm.userData.id\n                                    ? \"sm:ml-5 ml-3\"\n                                    : \"sm:mr-5 mr-3\",\n                                attrs: { src: msg.user_avatar, size: \"40px\" }\n                              })\n                            ]\n                          : _vm._e()\n                      ]\n                    : _vm._e(),\n                  index === 0\n                    ? [\n                        _c(\"vs-avatar\", {\n                          staticClass:\n                            \"border-2 shadow border-solid border-white bg-white m-0 flex-shrink-0\",\n                          class:\n                            msg.sender_id === _vm.userData.id\n                              ? \"sm:ml-5 ml-3\"\n                              : \"sm:mr-5 mr-3\",\n                          attrs: { src: msg.user_avatar, size: \"40px\" }\n                        })\n                      ]\n                    : _vm._e(),\n                  _vm.messages[index - 1]\n                    ? [\n                        !(\n                          !_vm.hasSentPreviousMsg(\n                            _vm.messages[index - 1].sender_id ===\n                              _vm.userData.id,\n                            msg.sender_id === _vm.userData.id\n                          ) ||\n                          !_vm.isSameDay(msg.time, _vm.messages[index - 1].time)\n                        )\n                          ? _c(\"div\", { staticClass: \"mr-16\" })\n                          : _vm._e()\n                      ]\n                    : _vm._e(),\n                  _c(\n                    \"div\",\n                    {\n                      staticClass:\n                        \"msg break-words relative shadow-md rounded py-3 px-4 mb-2 rounded-lg max-w-sm\",\n                      class: {\n                        \"bg-primary-gradient text-white\":\n                          msg.sender_id === _vm.userData.id,\n                        \"border border-solid border-grey-light bg-white\":\n                          msg.sender_id !== _vm.userData.id\n                      }\n                    },\n                    [\n                      _c(\"span\", [_vm._v(_vm._s(msg.message))]),\n                      _c(\"br\"),\n                      _c(\n                        \"span\",\n                        {\n                          staticStyle: { \"font-size\": \"10px\", float: \"right\" }\n                        },\n                        [\n                          _vm._v(\n                            _vm._s(_vm._f(\"date\")(msg.time, \"DD/MM/YYYY HH:mm\"))\n                          )\n                        ]\n                      )\n                    ]\n                  )\n                ],\n                2\n              )\n            ],\n            2\n          )\n        }),\n        0\n      )\n    : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NoYXQvY29tcG9uZW50cy9DaGF0TG9nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OTUzMGE3OSYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdExvZy52dWU/NzNkMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF92bS5tZXNzYWdlc1xuICAgID8gX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibS04XCIsIGF0dHJzOiB7IGlkOiBcImNvbXBvbmVudC1jaGF0LWxvZ1wiIH0gfSxcbiAgICAgICAgX3ZtLl9sKF92bS5tZXNzYWdlcywgZnVuY3Rpb24obXNnLCBpbmRleCkge1xuICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IGtleTogaW5kZXgsIHN0YXRpY0NsYXNzOiBcIm1zZy1ncnAtY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLm1lc3NhZ2VzW2luZGV4IC0gMV1cbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgIV92bS5pc1NhbWVEYXkobXNnLnRpbWUsIF92bS5tZXNzYWdlc1tpbmRleCAtIDFdLnRpbWUpXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInZzLWRpdmlkZXJcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uX2YoXCJkYXRlXCIpKG1zZy50aW1lLCBcIkREIE1NTU0gWVlZWVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICFfdm0uaGFzU2VudFByZXZpb3VzTXNnKFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5tZXNzYWdlc1tpbmRleCAtIDFdLnNlbmRlcl9pZCA9PT0gX3ZtLnVzZXJEYXRhLmlkLFxuICAgICAgICAgICAgICAgICAgICAgIG1zZy5zZW5kZXJfaWQgPT09IF92bS51c2VyRGF0YS5pZFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInNwYWNlciBtdC04XCIgfSlcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJmbGV4IGl0ZW1zLXN0YXJ0XCIsXG4gICAgICAgICAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgICAgICAgICB7IFwiZmxleC1yb3ctcmV2ZXJzZVwiOiBtc2cuc2VuZGVyX2lkID09PSBfdm0udXNlckRhdGEuaWQgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX3ZtLm1lc3NhZ2VzW2luZGV4IC0gMV1cbiAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAhX3ZtLmhhc1NlbnRQcmV2aW91c01zZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm1lc3NhZ2VzW2luZGV4IC0gMV0uc2VuZGVyX2lkID09PSBfdm0udXNlckRhdGEuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5zZW5kZXJfaWQgPT09IF92bS51c2VyRGF0YS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIV92bS5pc1NhbWVEYXkobXNnLnRpbWUsIF92bS5tZXNzYWdlc1tpbmRleCAtIDFdLnRpbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1hdmF0YXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJvcmRlci0yIHNoYWRvdyBib3JkZXItc29saWQgYm9yZGVyLXdoaXRlIGJnLXdoaXRlIG0tMCBmbGV4LXNocmluay0wXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5zZW5kZXJfaWQgPT09IF92bS51c2VyRGF0YS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcInNtOm1sLTUgbWwtM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwic206bXItNSBtci0zXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNyYzogbXNnLnVzZXJfYXZhdGFyLCBzaXplOiBcIjQwcHhcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgIGluZGV4ID09PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1hdmF0YXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJvcmRlci0yIHNoYWRvdyBib3JkZXItc29saWQgYm9yZGVyLXdoaXRlIGJnLXdoaXRlIG0tMCBmbGV4LXNocmluay0wXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5zZW5kZXJfaWQgPT09IF92bS51c2VyRGF0YS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcInNtOm1sLTUgbWwtM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwic206bXItNSBtci0zXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNyYzogbXNnLnVzZXJfYXZhdGFyLCBzaXplOiBcIjQwcHhcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgIF92bS5tZXNzYWdlc1tpbmRleCAtIDFdXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIV92bS5oYXNTZW50UHJldmlvdXNNc2coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm1lc3NhZ2VzW2luZGV4IC0gMV0uc2VuZGVyX2lkID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnVzZXJEYXRhLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5zZW5kZXJfaWQgPT09IF92bS51c2VyRGF0YS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICFfdm0uaXNTYW1lRGF5KG1zZy50aW1lLCBfdm0ubWVzc2FnZXNbaW5kZXggLSAxXS50aW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwibXItMTZcIiB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibXNnIGJyZWFrLXdvcmRzIHJlbGF0aXZlIHNoYWRvdy1tZCByb3VuZGVkIHB5LTMgcHgtNCBtYi0yIHJvdW5kZWQtbGcgbWF4LXctc21cIixcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJiZy1wcmltYXJ5LWdyYWRpZW50IHRleHQtd2hpdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLnNlbmRlcl9pZCA9PT0gX3ZtLnVzZXJEYXRhLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1ncmV5LWxpZ2h0IGJnLXdoaXRlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5zZW5kZXJfaWQgIT09IF92bS51c2VyRGF0YS5pZFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbX3ZtLl92KF92bS5fcyhtc2cubWVzc2FnZSkpXSksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNTdHlsZTogeyBcImZvbnQtc2l6ZVwiOiBcIjEwcHhcIiwgZmxvYXQ6IFwicmlnaHRcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5fZihcImRhdGVcIikobXNnLnRpbWUsIFwiREQvTU0vWVlZWSBISDptbVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgfSksXG4gICAgICAgIDBcbiAgICAgIClcbiAgICA6IF92bS5fZSgpXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb&":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _vm.userId != null\n    ? _c(\n        \"div\",\n        { staticClass: \"chat__header\" },\n        [\n          _c(\n            \"vs-navbar\",\n            {\n              staticClass: \"p-4 flex navbar-custom\",\n              attrs: { color: \"white\", type: \"flat\" }\n            },\n            [\n              _c(\n                \"div\",\n                { staticClass: \"relative flex mr-4\" },\n                [\n                  _vm.isSidebarCollapsed\n                    ? _c(\"feather-icon\", {\n                        staticClass: \"mr-4 cursor-pointer\",\n                        attrs: { icon: \"MenuIcon\" },\n                        on: {\n                          click: function($event) {\n                            $event.stopPropagation()\n                            return _vm.$emit(\"openContactsSidebar\")\n                          }\n                        }\n                      })\n                    : _vm._e(),\n                  _c(\"vs-avatar\", {\n                    staticClass:\n                      \"m-0 border-2 border-solid border-white bg-white\",\n                    attrs: { size: \"40px\", src: _vm.chat.image },\n                    on: {\n                      click: function($event) {\n                        $event.stopPropagation()\n                        return _vm.$emit(\"showProfileSidebar\", _vm.userId)\n                      }\n                    }\n                  }),\n                  _c(\"div\", {\n                    staticClass:\n                      \"h-3 w-3 border-white border border-solid rounded-full absolute right-0 bottom-0 bg-success\"\n                  })\n                ],\n                1\n              ),\n              _c(\"h6\", [_vm._v(_vm._s(_vm.chat.title))]),\n              _c(\n                \"vx-tooltip\",\n                {\n                  staticClass: \"gg-absolute position-right-15\",\n                  attrs: { text: \"Project details\" }\n                },\n                [\n                  _c(\"feather-icon\", {\n                    staticClass: \"cursor-pointer\",\n                    attrs: {\n                      icon: \"ArrowRightCircleIcon\",\n                      svgClasses: [\"w-6\", \"h-6\"]\n                    },\n                    on: {\n                      click: function($event) {\n                        $event.stopPropagation()\n                        return _vm.goToProjectDetails($event)\n                      }\n                    }\n                  })\n                ],\n                1\n              ),\n              _c(\"vs-spacer\")\n            ],\n            1\n          )\n        ],\n        1\n      )\n    : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NoYXQvY29tcG9uZW50cy9DaGF0TmF2YmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDQyZWVlYiYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdE5hdmJhci52dWU/YzNiMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF92bS51c2VySWQgIT0gbnVsbFxuICAgID8gX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiY2hhdF9faGVhZGVyXCIgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ2cy1uYXZiYXJcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicC00IGZsZXggbmF2YmFyLWN1c3RvbVwiLFxuICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJ3aGl0ZVwiLCB0eXBlOiBcImZsYXRcIiB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicmVsYXRpdmUgZmxleCBtci00XCIgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uaXNTaWRlYmFyQ29sbGFwc2VkXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXCJmZWF0aGVyLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXItNCBjdXJzb3ItcG9pbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWNvbjogXCJNZW51SWNvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS4kZW1pdChcIm9wZW5Db250YWN0c1NpZGViYXJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLWF2YXRhclwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgIFwibS0wIGJvcmRlci0yIGJvcmRlci1zb2xpZCBib3JkZXItd2hpdGUgYmctd2hpdGVcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgc2l6ZTogXCI0MHB4XCIsIHNyYzogX3ZtLmNoYXQuaW1hZ2UgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uJGVtaXQoXCJzaG93UHJvZmlsZVNpZGViYXJcIiwgX3ZtLnVzZXJJZClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICBcImgtMyB3LTMgYm9yZGVyLXdoaXRlIGJvcmRlciBib3JkZXItc29saWQgcm91bmRlZC1mdWxsIGFic29sdXRlIHJpZ2h0LTAgYm90dG9tLTAgYmctc3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBfYyhcImg2XCIsIFtfdm0uX3YoX3ZtLl9zKF92bS5jaGF0LnRpdGxlKSldKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZ2ctYWJzb2x1dGUgcG9zaXRpb24tcmlnaHQtMTVcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHRleHQ6IFwiUHJvamVjdCBkZXRhaWxzXCIgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJmZWF0aGVyLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjdXJzb3ItcG9pbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiQXJyb3dSaWdodENpcmNsZUljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICBzdmdDbGFzc2VzOiBbXCJ3LTZcIiwgXCJoLTZcIl1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZ29Ub1Byb2plY3REZXRhaWxzKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF9jKFwidnMtc3BhY2VyXCIpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"parentx-demo-2\" } },\n    [\n      _c(\n        \"vs-sidebar\",\n        {\n          staticClass: \"items-no-padding\",\n          attrs: {\n            parent: \"#chat-app\",\n            \"position-right\": !_vm.isActiveUser,\n            \"hidden-background\": false,\n            id: \"chat-profile-sidebar\"\n          },\n          model: {\n            value: _vm.activeLocal,\n            callback: function($$v) {\n              _vm.activeLocal = $$v\n            },\n            expression: \"activeLocal\"\n          }\n        },\n        [\n          _c(\n            \"div\",\n            {\n              staticClass: \"header-sidebar relative flex flex-col p-0\",\n              attrs: { slot: \"header\" },\n              slot: \"header\"\n            },\n            [\n              _c(\"feather-icon\", {\n                attrs: {\n                  icon: \"XIcon\",\n                  svgClasses: \"m-2 cursor-pointer absolute top-0 right-0\"\n                },\n                on: {\n                  click: function($event) {\n                    return _vm.$emit(\"closeProfileSidebar\", false)\n                  }\n                }\n              }),\n              _c(\n                \"div\",\n                { staticClass: \"relative inline-flex mx-auto mb-5 mt-6\" },\n                [\n                  _c(\"vs-avatar\", {\n                    staticClass:\n                      \"m-0 border-white border-2 border-solid shadow-md\",\n                    attrs: {\n                      src: __webpack_require__(\"./src/assets/images/portrait/small sync recursive ^\\\\.\\\\/.*$\")(\"./\" +\n                        _vm.userImg),\n                      size: \"70px\"\n                    }\n                  }),\n                  _c(\"div\", {\n                    staticClass:\n                      \"h-5 w-5 border-white border-2 border-solid rounded-full absolute right-0 bottom-0\",\n                    class: \"bg-\" + _vm.getStatusColor(_vm.isActiveUser)\n                  })\n                ],\n                1\n              ),\n              _c(\"h4\", { staticClass: \"mr-2 self-center\" }, [\n                _vm._v(_vm._s(_vm.userName))\n              ])\n            ],\n            1\n          ),\n          _c(\n            \"VuePerfectScrollbar\",\n            { staticClass: \"scroll-area\", attrs: { settings: _vm.settings } },\n            [\n              _c(\n                \"div\",\n                { staticClass: \"p-8\" },\n                [\n                  _c(\n                    \"h6\",\n                    {\n                      staticClass: \"mb-2\",\n                      class: { \"ml-4\": _vm.isActiveUser }\n                    },\n                    [_vm._v(\"About\")]\n                  ),\n                  _vm.isActiveUser\n                    ? _c(\"vs-textarea\", {\n                        staticClass: \"mb-10\",\n                        attrs: {\n                          counter: \"120\",\n                          maxlength: \"120\",\n                          \"counter-danger\": _vm.counterDanger,\n                          rows: \"5\"\n                        },\n                        on: {\n                          \"update:counterDanger\": function($event) {\n                            _vm.counterDanger = $event\n                          },\n                          \"update:counter-danger\": function($event) {\n                            _vm.counterDanger = $event\n                          }\n                        },\n                        model: {\n                          value: _vm.about,\n                          callback: function($$v) {\n                            _vm.about = $$v\n                          },\n                          expression: \"about\"\n                        }\n                      })\n                    : _c(\"p\", [_vm._v(_vm._s(_vm.about))]),\n                  _vm.isActiveUser\n                    ? _c(\"div\", { staticClass: \"userProfile__status\" }, [\n                        _c(\"h6\", { staticClass: \"mb-4\" }, [_vm._v(\"Status\")]),\n                        _c(\"ul\", [\n                          _c(\n                            \"li\",\n                            { staticClass: \"mb-2\" },\n                            [\n                              _c(\n                                \"vs-radio\",\n                                {\n                                  attrs: {\n                                    \"vs-value\": \"online\",\n                                    color: \"success\"\n                                  },\n                                  model: {\n                                    value: _vm.status,\n                                    callback: function($$v) {\n                                      _vm.status = $$v\n                                    },\n                                    expression: \"status\"\n                                  }\n                                },\n                                [_vm._v(\"Active\")]\n                              )\n                            ],\n                            1\n                          ),\n                          _c(\n                            \"li\",\n                            { staticClass: \"mb-2\" },\n                            [\n                              _c(\n                                \"vs-radio\",\n                                {\n                                  attrs: {\n                                    \"vs-value\": \"do not disturb\",\n                                    color: \"danger\"\n                                  },\n                                  model: {\n                                    value: _vm.status,\n                                    callback: function($$v) {\n                                      _vm.status = $$v\n                                    },\n                                    expression: \"status\"\n                                  }\n                                },\n                                [\n                                  _vm._v(\n                                    \"Do Not Disturb\\n                            \"\n                                  )\n                                ]\n                              )\n                            ],\n                            1\n                          ),\n                          _c(\n                            \"li\",\n                            { staticClass: \"mb-2\" },\n                            [\n                              _c(\n                                \"vs-radio\",\n                                {\n                                  attrs: {\n                                    \"vs-value\": \"away\",\n                                    color: \"warning\"\n                                  },\n                                  model: {\n                                    value: _vm.status,\n                                    callback: function($$v) {\n                                      _vm.status = $$v\n                                    },\n                                    expression: \"status\"\n                                  }\n                                },\n                                [_vm._v(\"Away\")]\n                              )\n                            ],\n                            1\n                          ),\n                          _c(\n                            \"li\",\n                            { staticClass: \"mb-2\" },\n                            [\n                              _c(\n                                \"vs-radio\",\n                                {\n                                  attrs: {\n                                    \"vs-value\": \"offline\",\n                                    color: \"grey\"\n                                  },\n                                  model: {\n                                    value: _vm.status,\n                                    callback: function($$v) {\n                                      _vm.status = $$v\n                                    },\n                                    expression: \"status\"\n                                  }\n                                },\n                                [_vm._v(\"Offline\")]\n                              )\n                            ],\n                            1\n                          )\n                        ])\n                      ])\n                    : _vm._e()\n                ],\n                1\n              )\n            ]\n          )\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NoYXQvY29tcG9uZW50cy9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2UzOGRjZWEmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL1VzZXJQcm9maWxlLnZ1ZT8xYWM3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IGF0dHJzOiB7IGlkOiBcInBhcmVudHgtZGVtby0yXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcInZzLXNpZGViYXJcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIml0ZW1zLW5vLXBhZGRpbmdcIixcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgcGFyZW50OiBcIiNjaGF0LWFwcFwiLFxuICAgICAgICAgICAgXCJwb3NpdGlvbi1yaWdodFwiOiAhX3ZtLmlzQWN0aXZlVXNlcixcbiAgICAgICAgICAgIFwiaGlkZGVuLWJhY2tncm91bmRcIjogZmFsc2UsXG4gICAgICAgICAgICBpZDogXCJjaGF0LXByb2ZpbGUtc2lkZWJhclwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgdmFsdWU6IF92bS5hY3RpdmVMb2NhbCxcbiAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgX3ZtLmFjdGl2ZUxvY2FsID0gJCR2XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJhY3RpdmVMb2NhbFwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJoZWFkZXItc2lkZWJhciByZWxhdGl2ZSBmbGV4IGZsZXgtY29sIHAtMFwiLFxuICAgICAgICAgICAgICBhdHRyczogeyBzbG90OiBcImhlYWRlclwiIH0sXG4gICAgICAgICAgICAgIHNsb3Q6IFwiaGVhZGVyXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgaWNvbjogXCJYSWNvblwiLFxuICAgICAgICAgICAgICAgICAgc3ZnQ2xhc3NlczogXCJtLTIgY3Vyc29yLXBvaW50ZXIgYWJzb2x1dGUgdG9wLTAgcmlnaHQtMFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRlbWl0KFwiY2xvc2VQcm9maWxlU2lkZWJhclwiLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicmVsYXRpdmUgaW5saW5lLWZsZXggbXgtYXV0byBtYi01IG10LTZcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidnMtYXZhdGFyXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgXCJtLTAgYm9yZGVyLXdoaXRlIGJvcmRlci0yIGJvcmRlci1zb2xpZCBzaGFkb3ctbWRcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBzcmM6IHJlcXVpcmUoXCJAL2Fzc2V0cy9pbWFnZXMvcG9ydHJhaXQvc21hbGwvXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnVzZXJJbWcpLFxuICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwiNzBweFwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICBcImgtNSB3LTUgYm9yZGVyLXdoaXRlIGJvcmRlci0yIGJvcmRlci1zb2xpZCByb3VuZGVkLWZ1bGwgYWJzb2x1dGUgcmlnaHQtMCBib3R0b20tMFwiLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczogXCJiZy1cIiArIF92bS5nZXRTdGF0dXNDb2xvcihfdm0uaXNBY3RpdmVVc2VyKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX2MoXCJoNFwiLCB7IHN0YXRpY0NsYXNzOiBcIm1yLTIgc2VsZi1jZW50ZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udXNlck5hbWUpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJWdWVQZXJmZWN0U2Nyb2xsYmFyXCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInNjcm9sbC1hcmVhXCIsIGF0dHJzOiB7IHNldHRpbmdzOiBfdm0uc2V0dGluZ3MgfSB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicC04XCIgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJoNlwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibWItMlwiLFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7IFwibWwtNFwiOiBfdm0uaXNBY3RpdmVVc2VyIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIkFib3V0XCIpXVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF92bS5pc0FjdGl2ZVVzZXJcbiAgICAgICAgICAgICAgICAgICAgPyBfYyhcInZzLXRleHRhcmVhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1iLTEwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyOiBcIjEyMFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IFwiMTIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY291bnRlci1kYW5nZXJcIjogX3ZtLmNvdW50ZXJEYW5nZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IFwiNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ1cGRhdGU6Y291bnRlckRhbmdlclwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uY291bnRlckRhbmdlciA9ICRldmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInVwZGF0ZTpjb3VudGVyLWRhbmdlclwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uY291bnRlckRhbmdlciA9ICRldmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5hYm91dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5hYm91dCA9ICQkdlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImFib3V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IF9jKFwicFwiLCBbX3ZtLl92KF92bS5fcyhfdm0uYWJvdXQpKV0pLFxuICAgICAgICAgICAgICAgICAgX3ZtLmlzQWN0aXZlVXNlclxuICAgICAgICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlclByb2ZpbGVfX3N0YXR1c1wiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaDZcIiwgeyBzdGF0aWNDbGFzczogXCJtYi00XCIgfSwgW192bS5fdihcIlN0YXR1c1wiKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ1bFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcIm1iLTJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXJhZGlvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy12YWx1ZVwiOiBcIm9ubGluZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zdGF0dXMgPSAkJHZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiQWN0aXZlXCIpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImxpXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtYi0yXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy1yYWRpb1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtdmFsdWVcIjogXCJkbyBub3QgZGlzdHVyYlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnN0YXR1cyA9ICQkdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRvIE5vdCBEaXN0dXJiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcIm1iLTJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXJhZGlvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy12YWx1ZVwiOiBcImF3YXlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIndhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc3RhdHVzID0gJCR2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIkF3YXlcIildXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcIm1iLTJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXJhZGlvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy12YWx1ZVwiOiBcIm9mZmxpbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcImdyZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc3RhdHVzID0gJCR2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIk9mZmxpbmVcIildXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1 d-theme-dark-bg\" },\n    [\n      _c(\"client\", {\n        attrs: {\n          isNew: false,\n          loading: _vm.updating,\n          company: Object.assign({}, _vm.user.profile)\n        },\n        on: { save: _vm.save }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NsaWVudHMvRWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmI0ODBiOWMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2xpZW50cy9FZGl0LnZ1ZT9kODBiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcInZ4LWNvbCBzbTp3LWZ1bGwgbWQ6dy1mdWxsIGxnOnctMS8xIGQtdGhlbWUtZGFyay1iZ1wiIH0sXG4gICAgW1xuICAgICAgX2MoXCJjbGllbnRcIiwge1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGlzTmV3OiBmYWxzZSxcbiAgICAgICAgICBsb2FkaW5nOiBfdm0udXBkYXRpbmcsXG4gICAgICAgICAgY29tcGFueTogT2JqZWN0LmFzc2lnbih7fSwgX3ZtLnVzZXIucHJvZmlsZSlcbiAgICAgICAgfSxcbiAgICAgICAgb246IHsgc2F2ZTogX3ZtLnNhdmUgfVxuICAgICAgfSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/List.vue?vue&type=template&id=49d85a74&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/clients/List.vue?vue&type=template&id=49d85a74& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var this$1 = this\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"cal-clients\" } },\n    [\n      _c(\n        \"vx-card\",\n        [\n          _c(\n            \"vs-table\",\n            {\n              attrs: { sst: true, data: _vm.clients.data, search: \"\" },\n              on: {\n                search: function(e) {\n                  return _vm.handleSearch(e, this$1)\n                }\n              },\n              scopedSlots: _vm._u([\n                {\n                  key: \"default\",\n                  fn: function(ref) {\n                    var data = ref.data\n                    return _vm._l(data, function(tr) {\n                      return _c(\n                        \"vs-tr\",\n                        { key: tr.id },\n                        [\n                          _c(\"vs-td\", [_vm._v(_vm._s(tr[\"fullName\"]))]),\n                          _c(\"vs-td\", [\n                            _c(\n                              \"a\",\n                              { attrs: { href: \"mailto:\" + tr.email + \"}}\" } },\n                              [_vm._v(_vm._s(tr.email))]\n                            )\n                          ]),\n                          _c(\"vs-td\", [_vm._v(_vm._s(tr.profile.company))]),\n                          _c(\n                            \"vs-td\",\n                            { staticClass: \"float-right\" },\n                            [\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Edit\" } },\n                                [\n                                  _c(\"vs-button\", {\n                                    staticClass: \"inline-block mx-1\",\n                                    attrs: { size: \"small\", icon: \"edit\" },\n                                    on: {\n                                      click: function($event) {\n                                        return _vm.editClient(tr)\n                                      }\n                                    }\n                                  })\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Disable\" } },\n                                [\n                                  tr.is_enabled\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mx-1\",\n                                        attrs: {\n                                          color: \"danger\",\n                                          size: \"small\",\n                                          icon: \"delete\"\n                                        },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.disableClient(tr)\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              )\n                            ],\n                            1\n                          )\n                        ],\n                        1\n                      )\n                    })\n                  }\n                }\n              ])\n            },\n            [\n              _c(\"template\", { slot: \"header\" }, [\n                _c(\"h3\", [_vm._v(\"Clients\")]),\n                _c(\n                  \"div\",\n                  { staticClass: \"mx-2\" },\n                  [\n                    _c(\n                      \"vs-button\",\n                      {\n                        staticClass: \"d-inline-block\",\n                        attrs: {\n                          to: \"/clients/create\",\n                          size: \"small\",\n                          icon: \"add_circle\"\n                        }\n                      },\n                      [\n                        _vm._v(\n                          \"\\n                        Create\\n                    \"\n                        )\n                      ]\n                    )\n                  ],\n                  1\n                )\n              ]),\n              _c(\n                \"template\",\n                { slot: \"thead\" },\n                [\n                  _c(\"vs-th\", [_vm._v(\"Name\")]),\n                  _c(\"vs-th\", [_vm._v(\"Email\")]),\n                  _c(\"vs-th\", [_vm._v(\"Company\")]),\n                  _c(\"vs-th\", { staticClass: \"float-right\" }, [\n                    _vm._v(\"Actions\")\n                  ])\n                ],\n                1\n              )\n            ],\n            2\n          ),\n          _vm.clients.data && _vm.clients.data.length > 0\n            ? _c(\"vs-pagination\", {\n                staticClass: \"mt-6\",\n                attrs: { total: _vm.clients.meta.pagination[\"total_pages\"] },\n                on: { change: _vm.handleChangePage },\n                model: {\n                  value: _vm.filters.page,\n                  callback: function($$v) {\n                    _vm.$set(_vm.filters, \"page\", $$v)\n                  },\n                  expression: \"filters.page\"\n                }\n              })\n            : _vm._e()\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NsaWVudHMvTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDlkODVhNzQmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2xpZW50cy9MaXN0LnZ1ZT81MjE2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoaXMkMSA9IHRoaXNcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IGF0dHJzOiB7IGlkOiBcImNhbC1jbGllbnRzXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcInZ4LWNhcmRcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ2cy10YWJsZVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczogeyBzc3Q6IHRydWUsIGRhdGE6IF92bS5jbGllbnRzLmRhdGEsIHNlYXJjaDogXCJcIiB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIHNlYXJjaDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVTZWFyY2goZSwgdGhpcyQxKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZWYuZGF0YVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLl9sKGRhdGEsIGZ1bmN0aW9uKHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IHRyLmlkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGRcIiwgW192bS5fdihfdm0uX3ModHJbXCJmdWxsTmFtZVwiXSkpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGRcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IGhyZWY6IFwibWFpbHRvOlwiICsgdHIuZW1haWwgKyBcIn19XCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3ModHIuZW1haWwpKV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLXRkXCIsIFtfdm0uX3YoX3ZtLl9zKHRyLnByb2ZpbGUuY29tcGFueSkpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtdGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJFZGl0XCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1idXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaW5saW5lLWJsb2NrIG14LTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNpemU6IFwic21hbGxcIiwgaWNvbjogXCJlZGl0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmVkaXRDbGllbnQodHIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidngtdG9vbHRpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IHRleHQ6IFwiRGlzYWJsZVwiIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyLmlzX2VuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJ2cy1idXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImlubGluZS1ibG9jayBteC0xXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcImRhbmdlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJkZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5kaXNhYmxlQ2xpZW50KHRyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInRlbXBsYXRlXCIsIHsgc2xvdDogXCJoZWFkZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXCJoM1wiLCBbX3ZtLl92KFwiQ2xpZW50c1wiKV0pLFxuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibXgtMlwiIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZC1pbmxpbmUtYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBcIi9jbGllbnRzL2NyZWF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBcInNtYWxsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiYWRkX2NpcmNsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlXFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInRlbXBsYXRlXCIsXG4gICAgICAgICAgICAgICAgeyBzbG90OiBcInRoZWFkXCIgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtfdm0uX3YoXCJOYW1lXCIpXSksXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtfdm0uX3YoXCJFbWFpbFwiKV0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10aFwiLCBbX3ZtLl92KFwiQ29tcGFueVwiKV0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10aFwiLCB7IHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJBY3Rpb25zXCIpXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLmNsaWVudHMuZGF0YSAmJiBfdm0uY2xpZW50cy5kYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gX2MoXCJ2cy1wYWdpbmF0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdC02XCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgdG90YWw6IF92bS5jbGllbnRzLm1ldGEucGFnaW5hdGlvbltcInRvdGFsX3BhZ2VzXCJdIH0sXG4gICAgICAgICAgICAgICAgb246IHsgY2hhbmdlOiBfdm0uaGFuZGxlQ2hhbmdlUGFnZSB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmZpbHRlcnMucGFnZSxcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmZpbHRlcnMsIFwicGFnZVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJmaWx0ZXJzLnBhZ2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/List.vue?vue&type=template&id=49d85a74&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/New.vue?vue&type=template&id=760ae8b0&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/clients/New.vue?vue&type=template&id=760ae8b0& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1 d-theme-dark-bg\" },\n    [\n      _c(\"client\", {\n        attrs: { isNew: true, loading: _vm.saving, company: _vm.client },\n        on: { save: _vm.save }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NsaWVudHMvTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NjBhZThiMCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jbGllbnRzL05ldy52dWU/YjZkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgeyBzdGF0aWNDbGFzczogXCJ2eC1jb2wgc206dy1mdWxsIG1kOnctZnVsbCBsZzp3LTEvMSBkLXRoZW1lLWRhcmstYmdcIiB9LFxuICAgIFtcbiAgICAgIF9jKFwiY2xpZW50XCIsIHtcbiAgICAgICAgYXR0cnM6IHsgaXNOZXc6IHRydWUsIGxvYWRpbmc6IF92bS5zYXZpbmcsIGNvbXBhbnk6IF92bS5jbGllbnQgfSxcbiAgICAgICAgb246IHsgc2F2ZTogX3ZtLnNhdmUgfVxuICAgICAgfSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/New.vue?vue&type=template&id=760ae8b0&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      ref: \"button\",\n      staticClass: \"file-uploader-container\",\n      on: {\n        click: function($event) {\n          !_vm.isUploading && _vm.$emit(\"click\")\n        }\n      }\n    },\n    [\n      _vm._t(\"default\"),\n      _vm.options.uploadOnClick && _vm.isUploading\n        ? _c(\"div\", { staticClass: \"h-100\" }, [\n            _c(\"p\", { staticClass: \"loading\" }, [\n              _vm._v(\"\\n            UPLOADING\\n        \")\n            ])\n          ])\n        : _vm._e()\n    ],\n    2\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL0ZpbGVVcGxvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjM2ZTM3ODAmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvRmlsZVVwbG9hZGVyLnZ1ZT8zZTMzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICByZWY6IFwiYnV0dG9uXCIsXG4gICAgICBzdGF0aWNDbGFzczogXCJmaWxlLXVwbG9hZGVyLWNvbnRhaW5lclwiLFxuICAgICAgb246IHtcbiAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICFfdm0uaXNVcGxvYWRpbmcgJiYgX3ZtLiRlbWl0KFwiY2xpY2tcIilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLl90KFwiZGVmYXVsdFwiKSxcbiAgICAgIF92bS5vcHRpb25zLnVwbG9hZE9uQ2xpY2sgJiYgX3ZtLmlzVXBsb2FkaW5nXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJoLTEwMFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwicFwiLCB7IHN0YXRpY0NsYXNzOiBcImxvYWRpbmdcIiB9LCBbXG4gICAgICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgICAgICAgIFVQTE9BRElOR1xcbiAgICAgICAgXCIpXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0pXG4gICAgICAgIDogX3ZtLl9lKClcbiAgICBdLFxuICAgIDJcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502&":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { class: _vm.className }, [\n    _c(\"div\", [\n      _c(\n        \"div\",\n        {\n          ref: \"button\",\n          staticClass: \"media-upload m-auto\",\n          class: { \"cal-loading\": _vm.loading },\n          style: { backgroundImage: \"url(\" + _vm.resource + \")\" }\n        },\n        [\n          _vm.isEditable\n            ? _c(\"div\", { staticClass: \"edit-image-hover\" }, [\n                _c(\"p\", [_vm._v(\"Upload\")])\n              ])\n            : _vm._e()\n        ]\n      )\n    ])\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL01lZGlhVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04YWM2ZjUwMiYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9NZWRpYVVwbG9hZC52dWU/MzViNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIHsgY2xhc3M6IF92bS5jbGFzc05hbWUgfSwgW1xuICAgIF9jKFwiZGl2XCIsIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgcmVmOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1lZGlhLXVwbG9hZCBtLWF1dG9cIixcbiAgICAgICAgICBjbGFzczogeyBcImNhbC1sb2FkaW5nXCI6IF92bS5sb2FkaW5nIH0sXG4gICAgICAgICAgc3R5bGU6IHsgYmFja2dyb3VuZEltYWdlOiBcInVybChcIiArIF92bS5yZXNvdXJjZSArIFwiKVwiIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF92bS5pc0VkaXRhYmxlXG4gICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWRpdC1pbWFnZS1ob3ZlclwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcInBcIiwgW192bS5fdihcIlVwbG9hZFwiKV0pXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgIF1cbiAgICAgIClcbiAgICBdKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"vx-card\", { staticClass: \"overflow-hidden\" }, [\n    _c(\"div\", { attrs: { slot: \"no-body\" }, slot: \"no-body\" }, [\n      _c(\n        \"div\",\n        {\n          staticClass: \"p-6 pb-0\",\n          class: {\n            \"flex justify-between flex-row-reverse items-center\": _vm.iconRight\n          }\n        },\n        [\n          _c(\"feather-icon\", {\n            staticClass: \"p-3 inline-flex rounded-full\",\n            class: [\"text-\" + _vm.color, { \"mb-4\": !_vm.iconRight }],\n            style: { background: \"rgba(var(--vs-\" + _vm.color + \"),.15)\" },\n            attrs: { icon: _vm.icon }\n          }),\n          _c(\"div\", [\n            _c(\"h2\", { staticClass: \"mb-1 font-bold\" }, [\n              _vm._v(_vm._s(_vm.statistic))\n            ]),\n            _c(\"span\", [_vm._v(_vm._s(_vm.statisticTitle))])\n          ])\n        ],\n        1\n      ),\n      _c(\n        \"div\",\n        { staticClass: \"line-area-chart\", attrs: { id: _vm.chartData.id } },\n        [\n          _c(\"vue-apex-charts\", {\n            ref: \"apexChart\",\n            attrs: {\n              options: _vm.chartOptions,\n              series: _vm.chartData.series,\n              type: _vm.type,\n              height: \"100\",\n              width: \"100%\"\n            }\n          })\n        ],\n        1\n      )\n    ])\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1N0YXRpc3RpY3NDYXJkTGluZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzcyZmZmZGQmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvU3RhdGlzdGljc0NhcmRMaW5lLnZ1ZT9lOWFkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJ2eC1jYXJkXCIsIHsgc3RhdGljQ2xhc3M6IFwib3ZlcmZsb3ctaGlkZGVuXCIgfSwgW1xuICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgc2xvdDogXCJuby1ib2R5XCIgfSwgc2xvdDogXCJuby1ib2R5XCIgfSwgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJwLTYgcGItMFwiLFxuICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICBcImZsZXgganVzdGlmeS1iZXR3ZWVuIGZsZXgtcm93LXJldmVyc2UgaXRlbXMtY2VudGVyXCI6IF92bS5pY29uUmlnaHRcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImZlYXRoZXItaWNvblwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJwLTMgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsXCIsXG4gICAgICAgICAgICBjbGFzczogW1widGV4dC1cIiArIF92bS5jb2xvciwgeyBcIm1iLTRcIjogIV92bS5pY29uUmlnaHQgfV0sXG4gICAgICAgICAgICBzdHlsZTogeyBiYWNrZ3JvdW5kOiBcInJnYmEodmFyKC0tdnMtXCIgKyBfdm0uY29sb3IgKyBcIiksLjE1KVwiIH0sXG4gICAgICAgICAgICBhdHRyczogeyBpY29uOiBfdm0uaWNvbiB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgW1xuICAgICAgICAgICAgX2MoXCJoMlwiLCB7IHN0YXRpY0NsYXNzOiBcIm1iLTEgZm9udC1ib2xkXCIgfSwgW1xuICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5zdGF0aXN0aWMpKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBfYyhcInNwYW5cIiwgW192bS5fdihfdm0uX3MoX3ZtLnN0YXRpc3RpY1RpdGxlKSldKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgICksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBzdGF0aWNDbGFzczogXCJsaW5lLWFyZWEtY2hhcnRcIiwgYXR0cnM6IHsgaWQ6IF92bS5jaGFydERhdGEuaWQgfSB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJ2dWUtYXBleC1jaGFydHNcIiwge1xuICAgICAgICAgICAgcmVmOiBcImFwZXhDaGFydFwiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLmNoYXJ0T3B0aW9ucyxcbiAgICAgICAgICAgICAgc2VyaWVzOiBfdm0uY2hhcnREYXRhLnNlcmllcyxcbiAgICAgICAgICAgICAgdHlwZTogX3ZtLnR5cGUsXG4gICAgICAgICAgICAgIGhlaWdodDogXCIxMDBcIixcbiAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0pXG4gIF0pXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      ref: \"card\",\n      staticClass: \"vx-card\",\n      class: [\n        { \"overflow-hidden\": _vm.tempHidden },\n        { \"no-shadow\": _vm.noShadow },\n        { \"rounded-none\": _vm.noRadius },\n        { \"card-border\": _vm.cardBorder },\n        _vm.cardClasses\n      ],\n      style: _vm.cardStyles\n    },\n    [\n      _vm.hasHeader\n        ? _c(\"div\", { staticClass: \"vx-card__header\" }, [\n            _c(\"div\", { staticClass: \"vx-card__title\" }, [\n              this.$props.title\n                ? _c(\n                    \"h4\",\n                    { class: _vm.titleClasses, style: _vm.titleStyles },\n                    [_vm._v(_vm._s(_vm.title))]\n                  )\n                : _vm._e(),\n              this.$props.subtitle\n                ? _c(\n                    \"h6\",\n                    { class: _vm.subtitleClasses, style: _vm.subtitleStyles },\n                    [_vm._v(_vm._s(_vm.subtitle))]\n                  )\n                : _vm._e()\n            ]),\n            _vm.hasAction\n              ? _c(\n                  \"div\",\n                  { staticClass: \"vx-card__actions\" },\n                  [\n                    _vm._t(\"actions\", [\n                      (_vm.actionButtons ||\n                        _vm.collapseAction ||\n                        _vm.refreshContentAction ||\n                        _vm.removeCardAction) &&\n                      !_vm.codeToggler\n                        ? _c(\n                            \"div\",\n                            { staticClass: \"vx-card__action-buttons\" },\n                            [\n                              _vm.actionButtons || _vm.collapseAction\n                                ? _c(\"feather-icon\", {\n                                    staticClass: \"ml-4\",\n                                    class: {\n                                      rotate180: !_vm.isContentCollapsed\n                                    },\n                                    attrs: { icon: \"ChevronUpIcon\" },\n                                    on: { click: _vm.toggleContent }\n                                  })\n                                : _vm._e(),\n                              _vm.actionButtons || _vm.refreshContentAction\n                                ? _c(\"feather-icon\", {\n                                    staticClass: \"ml-4\",\n                                    attrs: { icon: \"RotateCwIcon\" },\n                                    on: { click: _vm.refreshcard }\n                                  })\n                                : _vm._e(),\n                              _vm.actionButtons || _vm.removeCardAction\n                                ? _c(\"feather-icon\", {\n                                    staticClass: \"ml-4\",\n                                    attrs: { icon: \"XIcon\" },\n                                    on: { click: _vm.removeCard }\n                                  })\n                                : _vm._e()\n                            ],\n                            1\n                          )\n                        : _vm._e(),\n                      _vm.codeToggler && !_vm.actionButtons\n                        ? _c(\n                            \"div\",\n                            {\n                              staticClass:\n                                \"vx-card__code-toggler sm:block hidden\"\n                            },\n                            [\n                              _c(\"feather-icon\", {\n                                class: {\n                                  \"border border-solid border-primary border-t-0 border-r-0 border-l-0\":\n                                    _vm.showCode\n                                },\n                                attrs: { icon: \"CodeIcon\" },\n                                on: { click: _vm.toggleCode }\n                              })\n                            ],\n                            1\n                          )\n                        : _vm._e()\n                    ])\n                  ],\n                  2\n                )\n              : _vm._e()\n          ])\n        : _vm._e(),\n      _c(\n        \"div\",\n        {\n          ref: \"content\",\n          staticClass: \"vx-card__collapsible-content vs-con-loading__container\",\n          class: [\n            { collapsed: _vm.isContentCollapsed },\n            { \"overflow-hidden\": _vm.tempHidden }\n          ],\n          style: _vm.StyleItems\n        },\n        [\n          _vm._t(\"no-body\"),\n          this.$slots.default\n            ? _c(\n                \"div\",\n                { staticClass: \"vx-card__body\" },\n                [_vm._t(\"default\")],\n                2\n              )\n            : _vm._e(),\n          _vm._t(\"no-body-bottom\"),\n          this.$slots.footer\n            ? _c(\n                \"div\",\n                { staticClass: \"vx-card__footer\" },\n                [_vm._t(\"footer\")],\n                2\n              )\n            : _vm._e()\n        ],\n        2\n      ),\n      _c(\n        \"div\",\n        {\n          directives: [\n            {\n              name: \"show\",\n              rawName: \"v-show\",\n              value: this.$slots.codeContainer,\n              expression: \"this.$slots.codeContainer\"\n            }\n          ],\n          ref: \"codeContainer\",\n          staticClass: \"vx-card__code-container\",\n          class: { collapsed: !_vm.showCode },\n          style: _vm.codeContainerStyles\n        },\n        [\n          _c(\n            \"div\",\n            { staticClass: \"code-content\" },\n            [\n              _c(\n                \"prism\",\n                { attrs: { language: _vm.codeLanguage } },\n                [_vm._t(\"codeContainer\")],\n                2\n              )\n            ],\n            1\n          )\n        ]\n      )\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1Z4Q2FyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGI5OWQyZTgmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvVnhDYXJkLnZ1ZT9kYTI4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICByZWY6IFwiY2FyZFwiLFxuICAgICAgc3RhdGljQ2xhc3M6IFwidngtY2FyZFwiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgeyBcIm92ZXJmbG93LWhpZGRlblwiOiBfdm0udGVtcEhpZGRlbiB9LFxuICAgICAgICB7IFwibm8tc2hhZG93XCI6IF92bS5ub1NoYWRvdyB9LFxuICAgICAgICB7IFwicm91bmRlZC1ub25lXCI6IF92bS5ub1JhZGl1cyB9LFxuICAgICAgICB7IFwiY2FyZC1ib3JkZXJcIjogX3ZtLmNhcmRCb3JkZXIgfSxcbiAgICAgICAgX3ZtLmNhcmRDbGFzc2VzXG4gICAgICBdLFxuICAgICAgc3R5bGU6IF92bS5jYXJkU3R5bGVzXG4gICAgfSxcbiAgICBbXG4gICAgICBfdm0uaGFzSGVhZGVyXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ2eC1jYXJkX19oZWFkZXJcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInZ4LWNhcmRfX3RpdGxlXCIgfSwgW1xuICAgICAgICAgICAgICB0aGlzLiRwcm9wcy50aXRsZVxuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiaDRcIixcbiAgICAgICAgICAgICAgICAgICAgeyBjbGFzczogX3ZtLnRpdGxlQ2xhc3Nlcywgc3R5bGU6IF92bS50aXRsZVN0eWxlcyB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKV1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICB0aGlzLiRwcm9wcy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiaDZcIixcbiAgICAgICAgICAgICAgICAgICAgeyBjbGFzczogX3ZtLnN1YnRpdGxlQ2xhc3Nlcywgc3R5bGU6IF92bS5zdWJ0aXRsZVN0eWxlcyB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uc3VidGl0bGUpKV1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF92bS5oYXNBY3Rpb25cbiAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInZ4LWNhcmRfX2FjdGlvbnNcIiB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3QoXCJhY3Rpb25zXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAoX3ZtLmFjdGlvbkJ1dHRvbnMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5jb2xsYXBzZUFjdGlvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnJlZnJlc2hDb250ZW50QWN0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0ucmVtb3ZlQ2FyZEFjdGlvbikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhX3ZtLmNvZGVUb2dnbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ2eC1jYXJkX19hY3Rpb24tYnV0dG9uc1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmFjdGlvbkJ1dHRvbnMgfHwgX3ZtLmNvbGxhcHNlQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJmZWF0aGVyLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibWwtNFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlMTgwOiAhX3ZtLmlzQ29udGVudENvbGxhcHNlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGljb246IFwiQ2hldnJvblVwSWNvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnRvZ2dsZUNvbnRlbnQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uYWN0aW9uQnV0dG9ucyB8fCBfdm0ucmVmcmVzaENvbnRlbnRBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImZlYXRoZXItaWNvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtbC00XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpY29uOiBcIlJvdGF0ZUN3SWNvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnJlZnJlc2hjYXJkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmFjdGlvbkJ1dHRvbnMgfHwgX3ZtLnJlbW92ZUNhcmRBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImZlYXRoZXItaWNvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtbC00XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpY29uOiBcIlhJY29uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ucmVtb3ZlQ2FyZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5jb2RlVG9nZ2xlciAmJiAhX3ZtLmFjdGlvbkJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC1jYXJkX19jb2RlLXRvZ2dsZXIgc206YmxvY2sgaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJvcmRlciBib3JkZXItc29saWQgYm9yZGVyLXByaW1hcnkgYm9yZGVyLXQtMCBib3JkZXItci0wIGJvcmRlci1sLTBcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93Q29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpY29uOiBcIkNvZGVJY29uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS50b2dnbGVDb2RlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgcmVmOiBcImNvbnRlbnRcIixcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJ2eC1jYXJkX19jb2xsYXBzaWJsZS1jb250ZW50IHZzLWNvbi1sb2FkaW5nX19jb250YWluZXJcIixcbiAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgeyBjb2xsYXBzZWQ6IF92bS5pc0NvbnRlbnRDb2xsYXBzZWQgfSxcbiAgICAgICAgICAgIHsgXCJvdmVyZmxvdy1oaWRkZW5cIjogX3ZtLnRlbXBIaWRkZW4gfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3R5bGU6IF92bS5TdHlsZUl0ZW1zXG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfdm0uX3QoXCJuby1ib2R5XCIpLFxuICAgICAgICAgIHRoaXMuJHNsb3RzLmRlZmF1bHRcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInZ4LWNhcmRfX2JvZHlcIiB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSxcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl90KFwibm8tYm9keS1ib3R0b21cIiksXG4gICAgICAgICAgdGhpcy4kc2xvdHMuZm9vdGVyXG4gICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ2eC1jYXJkX19mb290ZXJcIiB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3QoXCJmb290ZXJcIildLFxuICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICBdLFxuICAgICAgICAyXG4gICAgICApLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy4kc2xvdHMuY29kZUNvbnRhaW5lcixcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ0aGlzLiRzbG90cy5jb2RlQ29udGFpbmVyXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlZjogXCJjb2RlQ29udGFpbmVyXCIsXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwidngtY2FyZF9fY29kZS1jb250YWluZXJcIixcbiAgICAgICAgICBjbGFzczogeyBjb2xsYXBzZWQ6ICFfdm0uc2hvd0NvZGUgfSxcbiAgICAgICAgICBzdHlsZTogX3ZtLmNvZGVDb250YWluZXJTdHlsZXNcbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiY29kZS1jb250ZW50XCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJwcmlzbVwiLFxuICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgbGFuZ3VhZ2U6IF92bS5jb2RlTGFuZ3VhZ2UgfSB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3QoXCJjb2RlQ29udGFpbmVyXCIpXSxcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICApXG4gICAgXVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"footer\",\n    { staticClass: \"the-footer flex-wrap justify-between\", class: _vm.classes },\n    [\n      _c(\"div\", { staticClass: \"vx-col w-1/3\" }, [\n        _c(\"span\", {}, [\n          _vm._v(\"COPYRIGHT © \" + _vm._s(new Date().getFullYear()))\n        ])\n      ]),\n      _c(\"div\", { staticClass: \"vx-col w-1/3 text-right\" }, [\n        _c(\"span\", {}, [\n          _vm._v(\"For more info check out our \"),\n          _c(\"a\", { attrs: { href: _vm.websiteUrl, target: \"_blank\" } }, [\n            _vm._v(\"website\")\n          ])\n        ])\n      ])\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvVGhlRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYzI4Y2VhYyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZUZvb3Rlci52dWU/MTcyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZm9vdGVyXCIsXG4gICAgeyBzdGF0aWNDbGFzczogXCJ0aGUtZm9vdGVyIGZsZXgtd3JhcCBqdXN0aWZ5LWJldHdlZW5cIiwgY2xhc3M6IF92bS5jbGFzc2VzIH0sXG4gICAgW1xuICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ2eC1jb2wgdy0xLzNcIiB9LCBbXG4gICAgICAgIF9jKFwic3BhblwiLCB7fSwgW1xuICAgICAgICAgIF92bS5fdihcIkNPUFlSSUdIVCDCqSBcIiArIF92bS5fcyhuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpKVxuICAgICAgICBdKVxuICAgICAgXSksXG4gICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInZ4LWNvbCB3LTEvMyB0ZXh0LXJpZ2h0XCIgfSwgW1xuICAgICAgICBfYyhcInNwYW5cIiwge30sIFtcbiAgICAgICAgICBfdm0uX3YoXCJGb3IgbW9yZSBpbmZvIGNoZWNrIG91dCBvdXIgXCIpLFxuICAgICAgICAgIF9jKFwiYVwiLCB7IGF0dHJzOiB7IGhyZWY6IF92bS53ZWJzaXRlVXJsLCB0YXJnZXQ6IFwiX2JsYW5rXCIgfSB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoXCJ3ZWJzaXRlXCIpXG4gICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICAgIF0pXG4gICAgXVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"relative\" }, [\n    _c(\n      \"div\",\n      { staticClass: \"vx-navbar-wrapper\" },\n      [\n        _c(\n          \"vs-navbar\",\n          {\n            staticClass: \"vx-navbar navbar-custom\",\n            class: _vm.classObj,\n            attrs: { color: _vm.navbarColor }\n          },\n          [\n            _c(\"feather-icon\", {\n              staticClass: \"sm:inline-flex xl:hidden cursor-pointer mr-1\",\n              attrs: { icon: \"MenuIcon\" },\n              on: {\n                click: function($event) {\n                  $event.stopPropagation()\n                  return _vm.showSidebar($event)\n                }\n              }\n            }),\n            _c(\"vs-spacer\"),\n            _c(\n              \"div\",\n              { staticClass: \"the-navbar__user-meta flex items-center\" },\n              [\n                _c(\n                  \"div\",\n                  { staticClass: \"text-right leading-tight hidden sm:block\" },\n                  [\n                    _c(\"p\", { staticClass: \"font-semibold\" }, [\n                      _vm._v(_vm._s(_vm.user_displayName))\n                    ])\n                  ]\n                ),\n                _c(\n                  \"vs-dropdown\",\n                  {\n                    staticClass: \"cursor-pointer\",\n                    attrs: { \"vs-custom-content\": \"\", \"vs-trigger-click\": \"\" }\n                  },\n                  [\n                    _c(\"div\", { staticClass: \"con-img ml-3\" }, [\n                      _c(\"img\", {\n                        key: \"onlineImg\",\n                        staticClass:\n                          \"rounded-full shadow-md cursor-pointer block gg-image-cover\",\n                        attrs: {\n                          src: _vm.activeUserImg,\n                          alt: \"user-img\",\n                          width: \"40\",\n                          height: \"40\"\n                        }\n                      })\n                    ]),\n                    _c(\n                      \"vs-dropdown-menu\",\n                      { staticClass: \"vx-navbar-dropdown\" },\n                      [\n                        _c(\n                          \"ul\",\n                          { staticStyle: { \"min-width\": \"15rem\" } },\n                          [\n                            _c(\n                              \"li\",\n                              {\n                                staticClass:\n                                  \"flex py-2 px-4 cursor-pointer hover:bg-primary hover:text-white\",\n                                on: {\n                                  click: function($event) {\n                                    return _vm.$router.push({ name: \"Profile\" })\n                                  }\n                                }\n                              },\n                              [\n                                _c(\"feather-icon\", {\n                                  attrs: {\n                                    icon: \"UserIcon\",\n                                    svgClasses: \"w-4 h-4\"\n                                  }\n                                }),\n                                _c(\n                                  \"span\",\n                                  { staticClass: \"ml-2 w-full text-right\" },\n                                  [_vm._v(\"Profile\")]\n                                )\n                              ],\n                              1\n                            ),\n                            _c(\n                              \"li\",\n                              {\n                                staticClass:\n                                  \"flex py-2 px-4 cursor-pointer hover:bg-primary hover:text-white\",\n                                on: {\n                                  click: function($event) {\n                                    return _vm.$router.push({\n                                      name: \"ChangePassword\"\n                                    })\n                                  }\n                                }\n                              },\n                              [\n                                _c(\"feather-icon\", {\n                                  attrs: {\n                                    icon: \"LockIcon\",\n                                    svgClasses: \"w-4 h-4\"\n                                  }\n                                }),\n                                _c(\n                                  \"span\",\n                                  { staticClass: \"ml-2 w-full text-right\" },\n                                  [_vm._v(\"Change password\")]\n                                )\n                              ],\n                              1\n                            ),\n                            _c(\"vs-divider\", { staticClass: \"m-1\" }),\n                            _c(\n                              \"li\",\n                              {\n                                staticClass:\n                                  \"flex py-2 px-4 cursor-pointer hover:bg-primary hover:text-white\",\n                                on: { click: _vm.logout }\n                              },\n                              [\n                                _c(\"feather-icon\", {\n                                  attrs: {\n                                    icon: \"LogOutIcon\",\n                                    svgClasses: \"w-4 h-4\"\n                                  }\n                                }),\n                                _c(\n                                  \"span\",\n                                  { staticClass: \"ml-2 w-full text-right\" },\n                                  [_vm._v(\"Logout\")]\n                                )\n                              ],\n                              1\n                            )\n                          ],\n                          1\n                        )\n                      ]\n                    )\n                  ],\n                  1\n                )\n              ],\n              1\n            )\n          ],\n          1\n        )\n      ],\n      1\n    )\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvVGhlTmF2YmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02YTRhMWFiZSYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZU5hdmJhci52dWU/ZDVmOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwicmVsYXRpdmVcIiB9LCBbXG4gICAgX2MoXG4gICAgICBcImRpdlwiLFxuICAgICAgeyBzdGF0aWNDbGFzczogXCJ2eC1uYXZiYXItd3JhcHBlclwiIH0sXG4gICAgICBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwidnMtbmF2YmFyXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidngtbmF2YmFyIG5hdmJhci1jdXN0b21cIixcbiAgICAgICAgICAgIGNsYXNzOiBfdm0uY2xhc3NPYmosXG4gICAgICAgICAgICBhdHRyczogeyBjb2xvcjogX3ZtLm5hdmJhckNvbG9yIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwic206aW5saW5lLWZsZXggeGw6aGlkZGVuIGN1cnNvci1wb2ludGVyIG1yLTFcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHsgaWNvbjogXCJNZW51SWNvblwiIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnNob3dTaWRlYmFyKCRldmVudClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgX2MoXCJ2cy1zcGFjZXJcIiksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0aGUtbmF2YmFyX191c2VyLW1ldGEgZmxleCBpdGVtcy1jZW50ZXJcIiB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LXJpZ2h0IGxlYWRpbmctdGlnaHQgaGlkZGVuIHNtOmJsb2NrXCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJwXCIsIHsgc3RhdGljQ2xhc3M6IFwiZm9udC1zZW1pYm9sZFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS51c2VyX2Rpc3BsYXlOYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJ2cy1kcm9wZG93blwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjdXJzb3ItcG9pbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBcInZzLWN1c3RvbS1jb250ZW50XCI6IFwiXCIsIFwidnMtdHJpZ2dlci1jbGlja1wiOiBcIlwiIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY29uLWltZyBtbC0zXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJvbmxpbmVJbWdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInJvdW5kZWQtZnVsbCBzaGFkb3ctbWQgY3Vyc29yLXBvaW50ZXIgYmxvY2sgZ2ctaW1hZ2UtY292ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogX3ZtLmFjdGl2ZVVzZXJJbWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogXCJ1c2VyLWltZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCI0MFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiNDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInZzLWRyb3Bkb3duLW1lbnVcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInZ4LW5hdmJhci1kcm9wZG93blwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNTdHlsZTogeyBcIm1pbi13aWR0aFwiOiBcIjE1cmVtXCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImxpXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZmxleCBweS0yIHB4LTQgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctcHJpbWFyeSBob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS4kcm91dGVyLnB1c2goeyBuYW1lOiBcIlByb2ZpbGVcIiB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJmZWF0aGVyLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcIlVzZXJJY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmdDbGFzc2VzOiBcInctNCBoLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibWwtMiB3LWZ1bGwgdGV4dC1yaWdodFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIlByb2ZpbGVcIildXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmbGV4IHB5LTIgcHgtNCBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1wcmltYXJ5IGhvdmVyOnRleHQtd2hpdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRyb3V0ZXIucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQ2hhbmdlUGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJMb2NrSWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZnQ2xhc3NlczogXCJ3LTQgaC00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcIm1sLTIgdy1mdWxsIHRleHQtcmlnaHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJDaGFuZ2UgcGFzc3dvcmRcIildXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLWRpdmlkZXJcIiwgeyBzdGF0aWNDbGFzczogXCJtLTFcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmbGV4IHB5LTIgcHgtNCBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1wcmltYXJ5IGhvdmVyOnRleHQtd2hpdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5sb2dvdXQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJmZWF0aGVyLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcIkxvZ091dEljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2Z0NsYXNzZXM6IFwidy00IGgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtbC0yIHctZnVsbCB0ZXh0LXJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiTG9nb3V0XCIpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdLFxuICAgICAgICAgIDFcbiAgICAgICAgKVxuICAgICAgXSxcbiAgICAgIDFcbiAgICApXG4gIF0pXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"parentx\" },\n    [\n      _c(\n        \"vs-sidebar\",\n        {\n          directives: [\n            {\n              name: \"hammer\",\n              rawName: \"v-hammer:swipe.left\",\n              value: _vm.onSwipeLeft,\n              expression: \"onSwipeLeft\",\n              arg: \"swipe\",\n              modifiers: { left: true }\n            }\n          ],\n          ref: \"mainSidebar\",\n          staticClass: \"sidebarx main-menu-sidebar items-no-padding\",\n          attrs: {\n            \"click-not-close\": _vm.clickNotClose,\n            hiddenBackground: _vm.clickNotClose,\n            parent: _vm.parent,\n            reduce: _vm.reduce,\n            \"reduce-not-rebound\": _vm.reduceNotRebound,\n            \"default-index\": \"-1\"\n          },\n          model: {\n            value: _vm.isSidebarActive,\n            callback: function($$v) {\n              _vm.isSidebarActive = $$v\n            },\n            expression: \"isSidebarActive\"\n          }\n        },\n        [\n          _c(\n            \"div\",\n            {\n              on: {\n                mouseenter: _vm.sidebarMouseEntered,\n                mouseleave: _vm.sidebarMouseLeave\n              }\n            },\n            [\n              _c(\n                \"div\",\n                {\n                  staticClass: \"header-sidebar flex items-end justify-between\",\n                  attrs: { slot: \"header\" },\n                  slot: \"header\"\n                },\n                [\n                  _c(\"div\", { staticClass: \"logo flex items-center\" }, [\n                    _vm.logo\n                      ? _c(\"img\", {\n                          staticClass: \"m-0 p-0\",\n                          attrs: { src: _vm.logo, alt: \"logo\", height: \"35px\" }\n                        })\n                      : _vm._e()\n                  ]),\n                  _c(\n                    \"div\",\n                    [\n                      _vm.showCloseButton\n                        ? [\n                            _c(\"feather-icon\", {\n                              staticClass: \"m-0 cursor-pointer\",\n                              attrs: { icon: \"XIcon\" },\n                              on: {\n                                click: function($event) {\n                                  return _vm.$store.commit(\n                                    \"TOGGLE_IS_SIDEBAR_ACTIVE\",\n                                    false\n                                  )\n                                }\n                              }\n                            })\n                          ]\n                        : _vm._e()\n                    ],\n                    2\n                  )\n                ]\n              ),\n              _c(\"div\", {\n                directives: [\n                  {\n                    name: \"show\",\n                    rawName: \"v-show\",\n                    value: _vm.showShadowBottom,\n                    expression: \"showShadowBottom\"\n                  }\n                ],\n                staticClass: \"shadow-bottom\"\n              }),\n              _c(\n                \"VuePerfectScrollbar\",\n                {\n                  ref: \"mainSidebarPs\",\n                  staticClass: \"scroll-area--main-sidebar pt-2\",\n                  attrs: { settings: _vm.settings },\n                  on: { \"ps-scroll-y\": _vm.psSectionScroll }\n                },\n                [\n                  _vm._l(_vm.sidebarItems, function(sidebarItem, index) {\n                    return [\n                      _vm.hasRole(sidebarItem.roles)\n                        ? [\n                            sidebarItem.header && !_vm.sidebarItemsMin\n                              ? _c(\n                                  \"span\",\n                                  {\n                                    key: \"header-\" + index,\n                                    staticClass: \"navigation-header truncate\"\n                                  },\n                                  [\n                                    _vm._v(\n                                      _vm._s(\n                                        sidebarItem.i18n || sidebarItem.header\n                                      )\n                                    )\n                                  ]\n                                )\n                              : !sidebarItem.header\n                              ? [\n                                  !sidebarItem.submenu\n                                    ? _c(\n                                        \"vx-sidebar-item\",\n                                        {\n                                          key: \"sidebarItem-\" + index,\n                                          ref: \"sidebarLink\",\n                                          refInFor: true,\n                                          attrs: {\n                                            href:\n                                              sidebarItem.slug === \"external\"\n                                                ? sidebarItem.url\n                                                : \"\",\n                                            icon: sidebarItem.icon,\n                                            index: index,\n                                            isDisabled: sidebarItem.isDisabled,\n                                            slug: sidebarItem.slug,\n                                            target: sidebarItem.target,\n                                            to:\n                                              sidebarItem.slug !== \"external\"\n                                                ? sidebarItem.url\n                                                : \"\"\n                                          }\n                                        },\n                                        [\n                                          _c(\n                                            \"span\",\n                                            {\n                                              directives: [\n                                                {\n                                                  name: \"show\",\n                                                  rawName: \"v-show\",\n                                                  value: !_vm.sidebarItemsMin,\n                                                  expression: \"!sidebarItemsMin\"\n                                                }\n                                              ],\n                                              staticClass: \"truncate\"\n                                            },\n                                            [\n                                              _vm._v(\n                                                _vm._s(\n                                                  sidebarItem.i18n ||\n                                                    sidebarItem.name\n                                                )\n                                              )\n                                            ]\n                                          ),\n                                          (sidebarItem.tag ||\n                                            (sidebarItem.tagValue &&\n                                              _vm.counters[\n                                                sidebarItem.tagValue\n                                              ])) &&\n                                          (_vm.isMouseEnter || !_vm.reduce)\n                                            ? _c(\n                                                \"vs-chip\",\n                                                {\n                                                  staticClass: \"ml-auto\",\n                                                  attrs: {\n                                                    color: sidebarItem.tagColor\n                                                  }\n                                                },\n                                                [\n                                                  sidebarItem.tagValue\n                                                    ? _c(\"span\", [\n                                                        _vm._v(\n                                                          _vm._s(\n                                                            _vm.counters[\n                                                              sidebarItem\n                                                                .tagValue\n                                                            ]\n                                                          )\n                                                        )\n                                                      ])\n                                                    : _vm._e(),\n                                                  sidebarItem.tag\n                                                    ? _c(\"span\", [\n                                                        _vm._v(\n                                                          _vm._s(\n                                                            sidebarItem.tag\n                                                          )\n                                                        )\n                                                      ])\n                                                    : _vm._e()\n                                                ]\n                                              )\n                                            : _vm._e()\n                                        ],\n                                        1\n                                      )\n                                    : [\n                                        _c(\"vx-sidebar-group\", {\n                                          key: \"group-\" + index,\n                                          ref: \"sidebarGrp\",\n                                          refInFor: true,\n                                          attrs: {\n                                            group: sidebarItem,\n                                            groupIndex: index,\n                                            open: _vm.isGroupActive(\n                                              sidebarItem\n                                            ),\n                                            openHover: _vm.openGroupHover\n                                          }\n                                        })\n                                      ]\n                                ]\n                              : _vm._e()\n                          ]\n                        : _vm._e()\n                    ]\n                  })\n                ],\n                2\n              )\n            ],\n            1\n          )\n        ]\n      ),\n      !_vm.isSidebarActive\n        ? _c(\"div\", {\n            directives: [\n              {\n                name: \"hammer\",\n                rawName: \"v-hammer:swipe.right\",\n                value: _vm.onSwipeRightSidebarSwipeArea,\n                expression: \"onSwipeRightSidebarSwipeArea\",\n                arg: \"swipe\",\n                modifiers: { right: true }\n              }\n            ],\n            staticClass: \"sidebar-swipe-area\",\n            attrs: { id: \"sidebar-swipe-area\" }\n          })\n        : _vm._e()\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE0NTg3OGE4Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXIudnVlP2M3OTMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwicGFyZW50eFwiIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwidnMtc2lkZWJhclwiLFxuICAgICAgICB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcImhhbW1lclwiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtaGFtbWVyOnN3aXBlLmxlZnRcIixcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS5vblN3aXBlTGVmdCxcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJvblN3aXBlTGVmdFwiLFxuICAgICAgICAgICAgICBhcmc6IFwic3dpcGVcIixcbiAgICAgICAgICAgICAgbW9kaWZpZXJzOiB7IGxlZnQ6IHRydWUgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVmOiBcIm1haW5TaWRlYmFyXCIsXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwic2lkZWJhcnggbWFpbi1tZW51LXNpZGViYXIgaXRlbXMtbm8tcGFkZGluZ1wiLFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBcImNsaWNrLW5vdC1jbG9zZVwiOiBfdm0uY2xpY2tOb3RDbG9zZSxcbiAgICAgICAgICAgIGhpZGRlbkJhY2tncm91bmQ6IF92bS5jbGlja05vdENsb3NlLFxuICAgICAgICAgICAgcGFyZW50OiBfdm0ucGFyZW50LFxuICAgICAgICAgICAgcmVkdWNlOiBfdm0ucmVkdWNlLFxuICAgICAgICAgICAgXCJyZWR1Y2Utbm90LXJlYm91bmRcIjogX3ZtLnJlZHVjZU5vdFJlYm91bmQsXG4gICAgICAgICAgICBcImRlZmF1bHQtaW5kZXhcIjogXCItMVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgdmFsdWU6IF92bS5pc1NpZGViYXJBY3RpdmUsXG4gICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgIF92bS5pc1NpZGViYXJBY3RpdmUgPSAkJHZcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHByZXNzaW9uOiBcImlzU2lkZWJhckFjdGl2ZVwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIG1vdXNlZW50ZXI6IF92bS5zaWRlYmFyTW91c2VFbnRlcmVkLFxuICAgICAgICAgICAgICAgIG1vdXNlbGVhdmU6IF92bS5zaWRlYmFyTW91c2VMZWF2ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImhlYWRlci1zaWRlYmFyIGZsZXggaXRlbXMtZW5kIGp1c3RpZnktYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgc2xvdDogXCJoZWFkZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgc2xvdDogXCJoZWFkZXJcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJsb2dvIGZsZXggaXRlbXMtY2VudGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0ubG9nb1xuICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtLTAgcC0wXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNyYzogX3ZtLmxvZ28sIGFsdDogXCJsb2dvXCIsIGhlaWdodDogXCIzNXB4XCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dDbG9zZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJmZWF0aGVyLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibS0wIGN1cnNvci1wb2ludGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpY29uOiBcIlhJY29uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRzdG9yZS5jb21taXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRPR0dMRV9JU19TSURFQkFSX0FDVElWRVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dTaGFkb3dCb3R0b20sXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd1NoYWRvd0JvdHRvbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJzaGFkb3ctYm90dG9tXCJcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiVnVlUGVyZmVjdFNjcm9sbGJhclwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJlZjogXCJtYWluU2lkZWJhclBzXCIsXG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJzY3JvbGwtYXJlYS0tbWFpbi1zaWRlYmFyIHB0LTJcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNldHRpbmdzOiBfdm0uc2V0dGluZ3MgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7IFwicHMtc2Nyb2xsLXlcIjogX3ZtLnBzU2VjdGlvblNjcm9sbCB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLnNpZGViYXJJdGVtcywgZnVuY3Rpb24oc2lkZWJhckl0ZW0sIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhc1JvbGUoc2lkZWJhckl0ZW0ucm9sZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlYmFySXRlbS5oZWFkZXIgJiYgIV92bS5zaWRlYmFySXRlbXNNaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImhlYWRlci1cIiArIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibmF2aWdhdGlvbi1oZWFkZXIgdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZWJhckl0ZW0uaTE4biB8fCBzaWRlYmFySXRlbS5oZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAhc2lkZWJhckl0ZW0uaGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhc2lkZWJhckl0ZW0uc3VibWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZ4LXNpZGViYXItaXRlbVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJzaWRlYmFySXRlbS1cIiArIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBcInNpZGViYXJMaW5rXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZJbkZvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZWJhckl0ZW0uc2x1ZyA9PT0gXCJleHRlcm5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNpZGViYXJJdGVtLnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBzaWRlYmFySXRlbS5pY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IHNpZGViYXJJdGVtLmlzRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHNpZGViYXJJdGVtLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogc2lkZWJhckl0ZW0udGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlYmFySXRlbS5zbHVnICE9PSBcImV4dGVybmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2lkZWJhckl0ZW0udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhX3ZtLnNpZGViYXJJdGVtc01pbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIhc2lkZWJhckl0ZW1zTWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZWJhckl0ZW0uaTE4biB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGViYXJJdGVtLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2lkZWJhckl0ZW0udGFnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaWRlYmFySXRlbS50YWdWYWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5jb3VudGVyc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGViYXJJdGVtLnRhZ1ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLmlzTW91c2VFbnRlciB8fCAhX3ZtLnJlZHVjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtY2hpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtbC1hdXRvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHNpZGViYXJJdGVtLnRhZ0NvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGViYXJJdGVtLnRhZ1ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmNvdW50ZXJzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50YWdWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlYmFySXRlbS50YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlYmFySXRlbS50YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZ4LXNpZGViYXItZ3JvdXBcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImdyb3VwLVwiICsgaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IFwic2lkZWJhckdycFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmSW5Gb3I6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogc2lkZWJhckl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwSW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBfdm0uaXNHcm91cEFjdGl2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuSG92ZXI6IF92bS5vcGVuR3JvdXBIb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICApLFxuICAgICAgIV92bS5pc1NpZGViYXJBY3RpdmVcbiAgICAgICAgPyBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImhhbW1lclwiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1oYW1tZXI6c3dpcGUucmlnaHRcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm9uU3dpcGVSaWdodFNpZGViYXJTd2lwZUFyZWEsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJvblN3aXBlUmlnaHRTaWRlYmFyU3dpcGVBcmVhXCIsXG4gICAgICAgICAgICAgICAgYXJnOiBcInN3aXBlXCIsXG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzOiB7IHJpZ2h0OiB0cnVlIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInNpZGViYXItc3dpcGUtYXJlYVwiLFxuICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwic2lkZWJhci1zd2lwZS1hcmVhXCIgfVxuICAgICAgICAgIH0pXG4gICAgICAgIDogX3ZtLl9lKClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      staticClass: \"vs-sidebar-group\",\n      class: [\n        { \"vs-sidebar-group-open\": _vm.openItems },\n        { \"vs-sidebar-group-active\": _vm.open },\n        { \"disabled-item pointer-events-none\": _vm.group.isDisabled }\n      ],\n      on: { mouseout: _vm.mouseout, mouseover: _vm.mouseover }\n    },\n    [\n      _c(\n        \"div\",\n        { staticClass: \"group-header w-full\", on: { click: _vm.clickGroup } },\n        [\n          _c(\n            \"span\",\n            { staticClass: \"flex items-center w-full\" },\n            [\n              _vm.group.icon || this.groupIndex > Math.floor(this.groupIndex)\n                ? _c(\"feather-icon\", {\n                    attrs: {\n                      icon: _vm.group.icon || \"CircleIcon\",\n                      svgClasses: { \"w-3 h-3\": this.groupIndex % 1 != 0 }\n                    }\n                  })\n                : _vm._e(),\n              _c(\n                \"span\",\n                {\n                  directives: [\n                    {\n                      name: \"show\",\n                      rawName: \"v-show\",\n                      value: !_vm.sidebarItemsMin,\n                      expression: \"!sidebarItemsMin\"\n                    }\n                  ],\n                  staticClass: \"truncate mr-3 select-none\"\n                },\n                [_vm._v(_vm._s(_vm.group.i18n || _vm.group.name))]\n              ),\n              _vm.group.tag && !_vm.sidebarItemsMin\n                ? _c(\n                    \"vs-chip\",\n                    {\n                      staticClass: \"ml-auto mr-4\",\n                      attrs: { color: _vm.group.tagColor }\n                    },\n                    [_vm._v(_vm._s(_vm.group.tag))]\n                  )\n                : _vm._e()\n            ],\n            1\n          ),\n          _c(\"feather-icon\", {\n            directives: [\n              {\n                name: \"show\",\n                rawName: \"v-show\",\n                value: !_vm.sidebarItemsMin,\n                expression: \"!sidebarItemsMin\"\n              }\n            ],\n            class: [{ rotate90: _vm.openItems }, \"feather-grp-header-arrow\"],\n            attrs: { icon: \"ChevronRightIcon\", \"svg-classes\": \"w-4 h-4\" }\n          }),\n          _c(\"span\", { staticClass: \"vs-sidebar--tooltip\" }, [\n            _vm._v(_vm._s(_vm.group.i18n || _vm.group.name))\n          ])\n        ],\n        1\n      ),\n      _c(\n        \"ul\",\n        {\n          ref: \"items\",\n          staticClass: \"vs-sidebar-group-items\",\n          style: _vm.styleItems\n        },\n        _vm._l(_vm.group.submenu, function(groupItem, index) {\n          return _c(\n            \"li\",\n            { key: index },\n            [\n              groupItem.submenu\n                ? _c(\"vx-sidebar-group\", {\n                    attrs: {\n                      group: groupItem,\n                      groupIndex: Number(_vm.groupIndex + \".\" + index),\n                      open: _vm.isGroupActive(groupItem),\n                      openHover: _vm.openHover\n                    }\n                  })\n                : _c(\n                    \"vx-sidebar-item\",\n                    {\n                      attrs: {\n                        icon: _vm.itemIcon(_vm.groupIndex + \".\" + index),\n                        index: _vm.groupIndex + \".\" + index,\n                        slug: groupItem.slug,\n                        target: groupItem.target,\n                        to: groupItem.url,\n                        \"icon-small\": \"\"\n                      }\n                    },\n                    [\n                      _c(\"span\", { staticClass: \"truncate\" }, [\n                        _vm._v(_vm._s(groupItem.i18n || groupItem.name))\n                      ]),\n                      groupItem.tag\n                        ? _c(\n                            \"vs-chip\",\n                            {\n                              staticClass: \"ml-auto\",\n                              attrs: { color: groupItem.tagColor }\n                            },\n                            [_vm._v(_vm._s(groupItem.tag))]\n                          )\n                        : _vm._e()\n                    ],\n                    1\n                  )\n            ],\n            1\n          )\n        }),\n        0\n      )\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXJHcm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YjgzYTI2M2EmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL1Z4U2lkZWJhckdyb3VwLnZ1ZT9lZTVmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJ2cy1zaWRlYmFyLWdyb3VwXCIsXG4gICAgICBjbGFzczogW1xuICAgICAgICB7IFwidnMtc2lkZWJhci1ncm91cC1vcGVuXCI6IF92bS5vcGVuSXRlbXMgfSxcbiAgICAgICAgeyBcInZzLXNpZGViYXItZ3JvdXAtYWN0aXZlXCI6IF92bS5vcGVuIH0sXG4gICAgICAgIHsgXCJkaXNhYmxlZC1pdGVtIHBvaW50ZXItZXZlbnRzLW5vbmVcIjogX3ZtLmdyb3VwLmlzRGlzYWJsZWQgfVxuICAgICAgXSxcbiAgICAgIG9uOiB7IG1vdXNlb3V0OiBfdm0ubW91c2VvdXQsIG1vdXNlb3ZlcjogX3ZtLm1vdXNlb3ZlciB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBzdGF0aWNDbGFzczogXCJncm91cC1oZWFkZXIgdy1mdWxsXCIsIG9uOiB7IGNsaWNrOiBfdm0uY2xpY2tHcm91cCB9IH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGxcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0uZ3JvdXAuaWNvbiB8fCB0aGlzLmdyb3VwSW5kZXggPiBNYXRoLmZsb29yKHRoaXMuZ3JvdXBJbmRleClcbiAgICAgICAgICAgICAgICA/IF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBpY29uOiBfdm0uZ3JvdXAuaWNvbiB8fCBcIkNpcmNsZUljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICBzdmdDbGFzc2VzOiB7IFwidy0zIGgtM1wiOiB0aGlzLmdyb3VwSW5kZXggJSAxICE9IDAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICFfdm0uc2lkZWJhckl0ZW1zTWluLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiIXNpZGViYXJJdGVtc01pblwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnVuY2F0ZSBtci0zIHNlbGVjdC1ub25lXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5ncm91cC5pMThuIHx8IF92bS5ncm91cC5uYW1lKSldXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5ncm91cC50YWcgJiYgIV92bS5zaWRlYmFySXRlbXNNaW5cbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcInZzLWNoaXBcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1sLWF1dG8gbXItNFwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGNvbG9yOiBfdm0uZ3JvdXAudGFnQ29sb3IgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uZ3JvdXAudGFnKSldXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICFfdm0uc2lkZWJhckl0ZW1zTWluLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiIXNpZGViYXJJdGVtc01pblwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjbGFzczogW3sgcm90YXRlOTA6IF92bS5vcGVuSXRlbXMgfSwgXCJmZWF0aGVyLWdycC1oZWFkZXItYXJyb3dcIl0sXG4gICAgICAgICAgICBhdHRyczogeyBpY29uOiBcIkNoZXZyb25SaWdodEljb25cIiwgXCJzdmctY2xhc3Nlc1wiOiBcInctNCBoLTRcIiB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwidnMtc2lkZWJhci0tdG9vbHRpcFwiIH0sIFtcbiAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmdyb3VwLmkxOG4gfHwgX3ZtLmdyb3VwLm5hbWUpKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgICksXG4gICAgICBfYyhcbiAgICAgICAgXCJ1bFwiLFxuICAgICAgICB7XG4gICAgICAgICAgcmVmOiBcIml0ZW1zXCIsXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwidnMtc2lkZWJhci1ncm91cC1pdGVtc1wiLFxuICAgICAgICAgIHN0eWxlOiBfdm0uc3R5bGVJdGVtc1xuICAgICAgICB9LFxuICAgICAgICBfdm0uX2woX3ZtLmdyb3VwLnN1Ym1lbnUsIGZ1bmN0aW9uKGdyb3VwSXRlbSwgaW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICBcImxpXCIsXG4gICAgICAgICAgICB7IGtleTogaW5kZXggfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgZ3JvdXBJdGVtLnN1Ym1lbnVcbiAgICAgICAgICAgICAgICA/IF9jKFwidngtc2lkZWJhci1ncm91cFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IGdyb3VwSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICBncm91cEluZGV4OiBOdW1iZXIoX3ZtLmdyb3VwSW5kZXggKyBcIi5cIiArIGluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBfdm0uaXNHcm91cEFjdGl2ZShncm91cEl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAgIG9wZW5Ib3ZlcjogX3ZtLm9wZW5Ib3ZlclxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogX2MoXG4gICAgICAgICAgICAgICAgICAgIFwidngtc2lkZWJhci1pdGVtXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogX3ZtLml0ZW1JY29uKF92bS5ncm91cEluZGV4ICsgXCIuXCIgKyBpbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogX3ZtLmdyb3VwSW5kZXggKyBcIi5cIiArIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2x1ZzogZ3JvdXBJdGVtLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGdyb3VwSXRlbS50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0bzogZ3JvdXBJdGVtLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWNvbi1zbWFsbFwiOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwidHJ1bmNhdGVcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKGdyb3VwSXRlbS5pMThuIHx8IGdyb3VwSXRlbS5uYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICBncm91cEl0ZW0udGFnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtY2hpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1sLWF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGNvbG9yOiBncm91cEl0ZW0udGFnQ29sb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoZ3JvdXBJdGVtLnRhZykpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICB9KSxcbiAgICAgICAgMFxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142&":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _vm.canSee\n    ? _c(\n        \"div\",\n        {\n          staticClass: \"vs-sidebar--item\",\n          class: [\n            { \"vs-sidebar-item-active\": _vm.activeLink },\n            { \"disabled-item pointer-events-none\": _vm.isDisabled }\n          ]\n        },\n        [\n          _vm.to\n            ? _c(\n                \"router-link\",\n                {\n                  class: [{ \"router-link-active\": _vm.activeLink }],\n                  attrs: { target: _vm.target, to: _vm.to, exact: \"\" }\n                },\n                [\n                  !_vm.featherIcon\n                    ? _c(\"vs-icon\", {\n                        attrs: { icon: _vm.icon, \"icon-pack\": _vm.iconPack }\n                      })\n                    : _c(\"feather-icon\", {\n                        class: { \"w-3 h-3\": _vm.iconSmall },\n                        attrs: { icon: _vm.icon }\n                      }),\n                  _vm._t(\"default\")\n                ],\n                2\n              )\n            : _c(\n                \"a\",\n                { attrs: { href: _vm.href, target: _vm.target } },\n                [\n                  !_vm.featherIcon\n                    ? _c(\"vs-icon\", {\n                        attrs: { icon: _vm.icon, \"icon-pack\": _vm.iconPack }\n                      })\n                    : _c(\"feather-icon\", {\n                        class: { \"w-3 h-3\": _vm.iconSmall },\n                        attrs: { icon: _vm.icon }\n                      }),\n                  _vm._t(\"default\")\n                ],\n                2\n              )\n        ],\n        1\n      )\n    : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXJJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03YzQxOTE0MiYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFySXRlbS52dWU/NGRhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF92bS5jYW5TZWVcbiAgICA/IF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwidnMtc2lkZWJhci0taXRlbVwiLFxuICAgICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgICB7IFwidnMtc2lkZWJhci1pdGVtLWFjdGl2ZVwiOiBfdm0uYWN0aXZlTGluayB9LFxuICAgICAgICAgICAgeyBcImRpc2FibGVkLWl0ZW0gcG9pbnRlci1ldmVudHMtbm9uZVwiOiBfdm0uaXNEaXNhYmxlZCB9XG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX3ZtLnRvXG4gICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgIFwicm91dGVyLWxpbmtcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBjbGFzczogW3sgXCJyb3V0ZXItbGluay1hY3RpdmVcIjogX3ZtLmFjdGl2ZUxpbmsgfV0sXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyB0YXJnZXQ6IF92bS50YXJnZXQsIHRvOiBfdm0udG8sIGV4YWN0OiBcIlwiIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICFfdm0uZmVhdGhlckljb25cbiAgICAgICAgICAgICAgICAgICAgPyBfYyhcInZzLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWNvbjogX3ZtLmljb24sIFwiaWNvbi1wYWNrXCI6IF92bS5pY29uUGFjayB9XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfYyhcImZlYXRoZXItaWNvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogeyBcInctMyBoLTNcIjogX3ZtLmljb25TbWFsbCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWNvbjogX3ZtLmljb24gfVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgX3ZtLl90KFwiZGVmYXVsdFwiKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IF9jKFxuICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgaHJlZjogX3ZtLmhyZWYsIHRhcmdldDogX3ZtLnRhcmdldCB9IH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIV92bS5mZWF0aGVySWNvblxuICAgICAgICAgICAgICAgICAgICA/IF9jKFwidnMtaWNvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpY29uOiBfdm0uaWNvbiwgXCJpY29uLXBhY2tcIjogX3ZtLmljb25QYWNrIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7IFwidy0zIGgtM1wiOiBfdm0uaWNvblNtYWxsIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpY29uOiBfdm0uaWNvbiB9XG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBfdm0uX3QoXCJkZWZhdWx0XCIpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      ref: \"convstooltip\",\n      staticClass: \"con-vs-tooltip\",\n      on: {\n        mouseenter: _vm.mouseenterx,\n        mouseleave: _vm.mouseleavex,\n        mouseup: _vm.destroy\n      }\n    },\n    [\n      _c(\"transition\", { attrs: { name: \"tooltip-fade\" } }, [\n        _c(\n          \"div\",\n          {\n            directives: [\n              {\n                name: \"show\",\n                rawName: \"v-show\",\n                value: _vm.active,\n                expression: \"active\"\n              }\n            ],\n            ref: \"vstooltip\",\n            staticClass: \"vs-tooltip\",\n            class: [\n              \"vs-tooltip-\" + (_vm.positionx || _vm.position),\n              \"vs-tooltip-\" + _vm.color,\n              { \"after-none\": _vm.noneAfter }\n            ],\n            style: _vm.style\n          },\n          [\n            _vm.title ? _c(\"h4\", [_vm._v(_vm._s(_vm.title))]) : _vm._e(),\n            _vm._v(\"\\n      \" + _vm._s(_vm.text) + \"\\n    \")\n          ]\n        )\n      ]),\n      _vm._t(\"default\")\n    ],\n    2\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtdG9vbHRpcC9WeFRvb2x0aXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE0N2MxZDhjJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtdG9vbHRpcC9WeFRvb2x0aXAudnVlP2Y5YTEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHJlZjogXCJjb252c3Rvb2x0aXBcIixcbiAgICAgIHN0YXRpY0NsYXNzOiBcImNvbi12cy10b29sdGlwXCIsXG4gICAgICBvbjoge1xuICAgICAgICBtb3VzZWVudGVyOiBfdm0ubW91c2VlbnRlcngsXG4gICAgICAgIG1vdXNlbGVhdmU6IF92bS5tb3VzZWxlYXZleCxcbiAgICAgICAgbW91c2V1cDogX3ZtLmRlc3Ryb3lcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFwidHJhbnNpdGlvblwiLCB7IGF0dHJzOiB7IG5hbWU6IFwidG9vbHRpcC1mYWRlXCIgfSB9LCBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmFjdGl2ZSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImFjdGl2ZVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByZWY6IFwidnN0b29sdGlwXCIsXG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ2cy10b29sdGlwXCIsXG4gICAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgICBcInZzLXRvb2x0aXAtXCIgKyAoX3ZtLnBvc2l0aW9ueCB8fCBfdm0ucG9zaXRpb24pLFxuICAgICAgICAgICAgICBcInZzLXRvb2x0aXAtXCIgKyBfdm0uY29sb3IsXG4gICAgICAgICAgICAgIHsgXCJhZnRlci1ub25lXCI6IF92bS5ub25lQWZ0ZXIgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0eWxlOiBfdm0uc3R5bGVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF92bS50aXRsZSA/IF9jKFwiaDRcIiwgW192bS5fdihfdm0uX3MoX3ZtLnRpdGxlKSldKSA6IF92bS5fZSgpLFxuICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgXCIgKyBfdm0uX3MoX3ZtLnRleHQpICsgXCJcXG4gICAgXCIpXG4gICAgICAgICAgXVxuICAgICAgICApXG4gICAgICBdKSxcbiAgICAgIF92bS5fdChcImRlZmF1bHRcIilcbiAgICBdLFxuICAgIDJcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"layout--full-page\" }, [_c(\"router-view\")], 1)\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2Z1bGwtcGFnZS9GdWxsUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTAyZjRkMGUmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvZnVsbC1wYWdlL0Z1bGxQYWdlLnZ1ZT8xMDc3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJsYXlvdXQtLWZ1bGwtcGFnZVwiIH0sIFtfYyhcInJvdXRlci12aWV3XCIpXSwgMSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      staticClass: \"layout--main\",\n      class: [\n        _vm.navbarClasses,\n        _vm.footerClasses,\n        { \"app-page\": _vm.isAppPage }\n      ]\n    },\n    [\n      _c(\"vx-sidebar\", {\n        attrs: {\n          logo: \"logo.svg\",\n          sidebarItems: _vm.sidebarItems,\n          parent: \".layout--main\",\n          title: \"\"\n        }\n      }),\n      _c(\n        \"div\",\n        {\n          class: [_vm.contentAreaClass, { \"show-overlay\": _vm.bodyOverlay }],\n          attrs: { id: \"content-area\" }\n        },\n        [\n          _c(\"div\", { attrs: { id: \"content-overlay\" } }),\n          _c(\n            \"div\",\n            { staticClass: \"content-wrapper\" },\n            [\n              _c(\"the-navbar\", {\n                class: [\n                  { \"text-white\": _vm.isNavbarDark && !_vm.isThemeDark },\n                  { \"text-base\": !_vm.isNavbarDark && _vm.isThemeDark }\n                ],\n                attrs: { navbarColor: _vm.navbarColor }\n              }),\n              _c(\"div\", { staticClass: \"router-view\" }, [\n                _c(\n                  \"div\",\n                  {\n                    staticClass: \"router-content\",\n                    class: { \"mt-0\": _vm.navbarType === \"hidden\" }\n                  },\n                  [\n                    _c(\n                      \"transition\",\n                      { attrs: { name: _vm.routerTransition } },\n                      [\n                        _vm.$route.meta.breadcrumb || _vm.$route.meta.pageTitle\n                          ? _c(\n                              \"div\",\n                              {\n                                staticClass:\n                                  \"router-header flex flex-wrap items-center mb-6\"\n                              },\n                              [\n                                _c(\n                                  \"div\",\n                                  {\n                                    staticClass: \"content-area__heading\",\n                                    class: {\n                                      \"pr-4 border-0 md:border-r border-t-0 border-b-0 border-l-0 border-solid border-grey-light\":\n                                        _vm.$route.meta.breadcrumb\n                                    }\n                                  },\n                                  [\n                                    _c(\"h2\", { staticClass: \"mb-1\" }, [\n                                      _vm._v(_vm._s(_vm.routeTitle))\n                                    ])\n                                  ]\n                                ),\n                                _c(\n                                  \"vs-dropdown\",\n                                  {\n                                    staticClass:\n                                      \"ml-auto md:block hidden cursor-pointer\",\n                                    attrs: { \"vs-trigger-click\": \"\" }\n                                  },\n                                  [\n                                    _c(\"vs-button\", {\n                                      attrs: {\n                                        icon: \"icon-settings\",\n                                        \"icon-pack\": \"feather\",\n                                        radius: \"\"\n                                      }\n                                    }),\n                                    _c(\n                                      \"vs-dropdown-menu\",\n                                      { staticClass: \"w-32\" },\n                                      [\n                                        _c(\"vs-dropdown-item\", [\n                                          _c(\n                                            \"div\",\n                                            {\n                                              staticClass: \"flex items-center\",\n                                              on: {\n                                                click: function($event) {\n                                                  return _vm.$router.push(\n                                                    \"/pages/profile\"\n                                                  )\n                                                }\n                                              }\n                                            },\n                                            [\n                                              _c(\"feather-icon\", {\n                                                staticClass:\n                                                  \"inline-block mr-2\",\n                                                attrs: {\n                                                  icon: \"UserIcon\",\n                                                  svgClasses: \"w-4 h-4\"\n                                                }\n                                              }),\n                                              _c(\"span\", [_vm._v(\"Profile\")])\n                                            ],\n                                            1\n                                          )\n                                        ]),\n                                        _c(\"vs-dropdown-item\", [\n                                          _c(\n                                            \"div\",\n                                            {\n                                              staticClass: \"flex items-center\",\n                                              on: {\n                                                click: function($event) {\n                                                  return _vm.$router.push(\n                                                    \"/apps/todo\"\n                                                  )\n                                                }\n                                              }\n                                            },\n                                            [\n                                              _c(\"feather-icon\", {\n                                                staticClass:\n                                                  \"inline-block mr-2\",\n                                                attrs: {\n                                                  icon: \"CheckSquareIcon\",\n                                                  svgClasses: \"w-4 h-4\"\n                                                }\n                                              }),\n                                              _c(\"span\", [_vm._v(\"Tasks\")])\n                                            ],\n                                            1\n                                          )\n                                        ]),\n                                        _c(\"vs-dropdown-item\", [\n                                          _c(\n                                            \"div\",\n                                            {\n                                              staticClass: \"flex items-center\",\n                                              on: {\n                                                click: function($event) {\n                                                  return _vm.$router.push(\n                                                    \"/apps/email\"\n                                                  )\n                                                }\n                                              }\n                                            },\n                                            [\n                                              _c(\"feather-icon\", {\n                                                staticClass:\n                                                  \"inline-block mr-2\",\n                                                attrs: {\n                                                  icon: \"MailIcon\",\n                                                  svgClasses: \"w-4 h-4\"\n                                                }\n                                              }),\n                                              _c(\"span\", [_vm._v(\"Inbox\")])\n                                            ],\n                                            1\n                                          )\n                                        ])\n                                      ],\n                                      1\n                                    )\n                                  ],\n                                  1\n                                )\n                              ],\n                              1\n                            )\n                          : _vm._e()\n                      ]\n                    ),\n                    _c(\n                      \"div\",\n                      { staticClass: \"content-area__content\" },\n                      [\n                        !_vm.hideScrollToTop\n                          ? _c(\n                              \"back-to-top\",\n                              { attrs: { bottom: \"5%\", visibleoffset: \"500\" } },\n                              [\n                                _c(\"vs-button\", {\n                                  staticClass: \"shadow-lg\",\n                                  attrs: {\n                                    icon: \"icon-arrow-up\",\n                                    \"icon-pack\": \"feather\"\n                                  }\n                                })\n                              ],\n                              1\n                            )\n                          : _vm._e(),\n                        _c(\n                          \"transition\",\n                          {\n                            attrs: {\n                              name: _vm.routerTransition,\n                              mode: \"out-in\"\n                            }\n                          },\n                          [\n                            _c(\"router-view\", {\n                              on: { changeRouteTitle: _vm.changeRouteTitle }\n                            })\n                          ],\n                          1\n                        )\n                      ],\n                      1\n                    )\n                  ],\n                  1\n                )\n              ])\n            ],\n            1\n          ),\n          _c(\"the-footer\")\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL21haW4vTWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODMxMjhiYjQmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvbWFpbi9NYWluLnZ1ZT8xOGExIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJsYXlvdXQtLW1haW5cIixcbiAgICAgIGNsYXNzOiBbXG4gICAgICAgIF92bS5uYXZiYXJDbGFzc2VzLFxuICAgICAgICBfdm0uZm9vdGVyQ2xhc3NlcyxcbiAgICAgICAgeyBcImFwcC1wYWdlXCI6IF92bS5pc0FwcFBhZ2UgfVxuICAgICAgXVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXCJ2eC1zaWRlYmFyXCIsIHtcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICBsb2dvOiBcImxvZ28uc3ZnXCIsXG4gICAgICAgICAgc2lkZWJhckl0ZW1zOiBfdm0uc2lkZWJhckl0ZW1zLFxuICAgICAgICAgIHBhcmVudDogXCIubGF5b3V0LS1tYWluXCIsXG4gICAgICAgICAgdGl0bGU6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzOiBbX3ZtLmNvbnRlbnRBcmVhQ2xhc3MsIHsgXCJzaG93LW92ZXJsYXlcIjogX3ZtLmJvZHlPdmVybGF5IH1dLFxuICAgICAgICAgIGF0dHJzOiB7IGlkOiBcImNvbnRlbnQtYXJlYVwiIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwiY29udGVudC1vdmVybGF5XCIgfSB9KSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImNvbnRlbnQtd3JhcHBlclwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwidGhlLW5hdmJhclwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IFtcbiAgICAgICAgICAgICAgICAgIHsgXCJ0ZXh0LXdoaXRlXCI6IF92bS5pc05hdmJhckRhcmsgJiYgIV92bS5pc1RoZW1lRGFyayB9LFxuICAgICAgICAgICAgICAgICAgeyBcInRleHQtYmFzZVwiOiAhX3ZtLmlzTmF2YmFyRGFyayAmJiBfdm0uaXNUaGVtZURhcmsgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgbmF2YmFyQ29sb3I6IF92bS5uYXZiYXJDb2xvciB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInJvdXRlci12aWV3XCIgfSwgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicm91dGVyLWNvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHsgXCJtdC0wXCI6IF92bS5uYXZiYXJUeXBlID09PSBcImhpZGRlblwiIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwidHJhbnNpdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgbmFtZTogX3ZtLnJvdXRlclRyYW5zaXRpb24gfSB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kcm91dGUubWV0YS5icmVhZGNydW1iIHx8IF92bS4kcm91dGUubWV0YS5wYWdlVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicm91dGVyLWhlYWRlciBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgbWItNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImNvbnRlbnQtYXJlYV9faGVhZGluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwci00IGJvcmRlci0wIG1kOmJvcmRlci1yIGJvcmRlci10LTAgYm9yZGVyLWItMCBib3JkZXItbC0wIGJvcmRlci1zb2xpZCBib3JkZXItZ3JleS1saWdodFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kcm91dGUubWV0YS5icmVhZGNydW1iXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImgyXCIsIHsgc3RhdGljQ2xhc3M6IFwibWItMVwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0ucm91dGVUaXRsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy1kcm9wZG93blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1sLWF1dG8gbWQ6YmxvY2sgaGlkZGVuIGN1cnNvci1wb2ludGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBcInZzLXRyaWdnZXItY2xpY2tcIjogXCJcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLWJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJpY29uLXNldHRpbmdzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpY29uLXBhY2tcIjogXCJmZWF0aGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtZHJvcGRvd24tbWVudVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInctMzJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1kcm9wZG93bi1pdGVtXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRyb3V0ZXIucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi9wYWdlcy9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlubGluZS1ibG9jayBtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcIlVzZXJJY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2Z0NsYXNzZXM6IFwidy00IGgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCJQcm9maWxlXCIpXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtZHJvcGRvd24taXRlbVwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsZXggaXRlbXMtY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS4kcm91dGVyLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIvYXBwcy90b2RvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlubGluZS1ibG9jayBtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcIkNoZWNrU3F1YXJlSWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmdDbGFzc2VzOiBcInctNCBoLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbX3ZtLl92KFwiVGFza3NcIildKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1kcm9wZG93bi1pdGVtXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRyb3V0ZXIucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi9hcHBzL2VtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlubGluZS1ibG9jayBtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcIk1haWxJY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2Z0NsYXNzZXM6IFwidy00IGgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCJJbmJveFwiKV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiY29udGVudC1hcmVhX19jb250ZW50XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAhX3ZtLmhpZGVTY3JvbGxUb1RvcFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiYWNrLXRvLXRvcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBib3R0b206IFwiNSVcIiwgdmlzaWJsZW9mZnNldDogXCI1MDBcIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJzaGFkb3ctbGdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJpY29uLWFycm93LXVwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhbnNpdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IF92bS5yb3V0ZXJUcmFuc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogXCJvdXQtaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwicm91dGVyLXZpZXdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2hhbmdlUm91dGVUaXRsZTogX3ZtLmNoYW5nZVJvdXRlVGl0bGUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgICksXG4gICAgICAgICAgX2MoXCJ0aGUtZm9vdGVyXCIpXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var this$1 = this\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"cal-contact-requests\" } },\n    [\n      _c(\n        \"vx-card\",\n        [\n          _c(\n            \"vs-table\",\n            {\n              attrs: { sst: true, data: _vm.newsLetter.data, search: \"\" },\n              on: {\n                search: function(e) {\n                  return _vm.handleSearch(e, this$1)\n                }\n              },\n              scopedSlots: _vm._u([\n                {\n                  key: \"default\",\n                  fn: function(ref) {\n                    var data = ref.data\n                    return _vm._l(data, function(tr, indextr) {\n                      return _c(\n                        \"vs-tr\",\n                        { key: indextr },\n                        [\n                          _c(\"vs-td\", { attrs: { data: data[indextr].name } }, [\n                            _vm._v(\n                              \"\\n                        \" +\n                                _vm._s(data[indextr].name) +\n                                \"\\n                    \"\n                            )\n                          ]),\n                          _c(\n                            \"vs-td\",\n                            { attrs: { data: data[indextr].email } },\n                            [\n                              _c(\n                                \"a\",\n                                {\n                                  attrs: {\n                                    href: \"mailto:\" + data[indextr].email + \"}}\"\n                                  }\n                                },\n                                [_vm._v(_vm._s(data[indextr].email))]\n                              )\n                            ]\n                          ),\n                          _c(\n                            \"vs-td\",\n                            { attrs: { data: data[indextr].enquiry } },\n                            [\n                              _vm._v(\n                                \"\\n                        \" +\n                                  _vm._s(data[indextr].enquiry) +\n                                  \"\\n                    \"\n                              )\n                            ]\n                          ),\n                          _c(\n                            \"vs-td\",\n                            {\n                              staticClass: \"float-right\",\n                              attrs: { data: data[indextr] }\n                            },\n                            [\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Delete\" } },\n                                [\n                                  _c(\"vs-button\", {\n                                    staticClass: \"inline-block mx-1\",\n                                    attrs: {\n                                      color: \"danger\",\n                                      size: \"small\",\n                                      icon: \"delete\"\n                                    },\n                                    on: {\n                                      click: function($event) {\n                                        return _vm.deleteRequest(data[indextr])\n                                      }\n                                    }\n                                  })\n                                ],\n                                1\n                              )\n                            ],\n                            1\n                          )\n                        ],\n                        1\n                      )\n                    })\n                  }\n                }\n              ])\n            },\n            [\n              _c(\"template\", { slot: \"header\" }, [\n                _c(\"h3\", [_vm._v(\"Inbox messages\")])\n              ]),\n              _c(\n                \"template\",\n                { slot: \"thead\" },\n                [\n                  _c(\"vs-th\", [_vm._v(\"Name\")]),\n                  _c(\"vs-th\", [_vm._v(\"Email\")]),\n                  _c(\"vs-th\", [_vm._v(\"Enquiry\")]),\n                  _c(\"vs-th\", { staticClass: \"float-right\" }, [\n                    _vm._v(\"Actions\")\n                  ])\n                ],\n                1\n              )\n            ],\n            2\n          ),\n          _vm.newsLetter.data && _vm.newsLetter.data.length > 0\n            ? _c(\"vs-pagination\", {\n                staticClass: \"mt-6\",\n                attrs: { total: _vm.newsLetter.meta.pagination.total_pages },\n                on: { change: _vm.handleChangePage },\n                model: {\n                  value: _vm.filters.page,\n                  callback: function($$v) {\n                    _vm.$set(_vm.filters, \"page\", $$v)\n                  },\n                  expression: \"filters.page\"\n                }\n              })\n            : _vm._e()\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbnRhY3RzL0NvbnRhY3RSZXF1ZXN0cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Njk5NzM1ODkmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29udGFjdHMvQ29udGFjdFJlcXVlc3RzLnZ1ZT9iOTk2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoaXMkMSA9IHRoaXNcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IGF0dHJzOiB7IGlkOiBcImNhbC1jb250YWN0LXJlcXVlc3RzXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcInZ4LWNhcmRcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ2cy10YWJsZVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczogeyBzc3Q6IHRydWUsIGRhdGE6IF92bS5uZXdzTGV0dGVyLmRhdGEsIHNlYXJjaDogXCJcIiB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIHNlYXJjaDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVTZWFyY2goZSwgdGhpcyQxKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZWYuZGF0YVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLl9sKGRhdGEsIGZ1bmN0aW9uKHRyLCBpbmRleHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IGluZGV4dHIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10ZFwiLCB7IGF0dHJzOiB7IGRhdGE6IGRhdGFbaW5kZXh0cl0ubmFtZSB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKGRhdGFbaW5kZXh0cl0ubmFtZSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBkYXRhOiBkYXRhW2luZGV4dHJdLmVtYWlsIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogXCJtYWlsdG86XCIgKyBkYXRhW2luZGV4dHJdLmVtYWlsICsgXCJ9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhkYXRhW2luZGV4dHJdLmVtYWlsKSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBkYXRhOiBkYXRhW2luZGV4dHJdLmVucXVpcnkgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKGRhdGFbaW5kZXh0cl0uZW5xdWlyeSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBkYXRhOiBkYXRhW2luZGV4dHJdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZ4LXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyB0ZXh0OiBcIkRlbGV0ZVwiIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImlubGluZS1ibG9jayBteC0xXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJkYW5nZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZGVsZXRlUmVxdWVzdChkYXRhW2luZGV4dHJdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInRlbXBsYXRlXCIsIHsgc2xvdDogXCJoZWFkZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXCJoM1wiLCBbX3ZtLl92KFwiSW5ib3ggbWVzc2FnZXNcIildKVxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ0ZW1wbGF0ZVwiLFxuICAgICAgICAgICAgICAgIHsgc2xvdDogXCJ0aGVhZFwiIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10aFwiLCBbX3ZtLl92KFwiTmFtZVwiKV0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10aFwiLCBbX3ZtLl92KFwiRW1haWxcIildKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGhcIiwgW192bS5fdihcIkVucXVpcnlcIildKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGhcIiwgeyBzdGF0aWNDbGFzczogXCJmbG9hdC1yaWdodFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiQWN0aW9uc1wiKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5uZXdzTGV0dGVyLmRhdGEgJiYgX3ZtLm5ld3NMZXR0ZXIuZGF0YS5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IF9jKFwidnMtcGFnaW5hdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXQtNlwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHRvdGFsOiBfdm0ubmV3c0xldHRlci5tZXRhLnBhZ2luYXRpb24udG90YWxfcGFnZXMgfSxcbiAgICAgICAgICAgICAgICBvbjogeyBjaGFuZ2U6IF92bS5oYW5kbGVDaGFuZ2VQYWdlIH0sXG4gICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZmlsdGVycy5wYWdlLFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uZmlsdGVycywgXCJwYWdlXCIsICQkdilcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImZpbHRlcnMucGFnZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var this$1 = this\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"cal-news-letter\" } },\n    [\n      _c(\n        \"vx-card\",\n        [\n          _c(\n            \"vs-table\",\n            {\n              attrs: { sst: true, data: _vm.newsLetter.data, search: \"\" },\n              on: {\n                search: function(e) {\n                  return _vm.handleSearch(e, this$1)\n                }\n              },\n              scopedSlots: _vm._u([\n                {\n                  key: \"default\",\n                  fn: function(ref) {\n                    var data = ref.data\n                    return _vm._l(data, function(tr, indextr) {\n                      return _c(\n                        \"vs-tr\",\n                        { key: indextr },\n                        [\n                          _c(\n                            \"vs-td\",\n                            { attrs: { data: data[indextr].email } },\n                            [\n                              _c(\n                                \"a\",\n                                {\n                                  attrs: {\n                                    href: \"mailto:\" + data[indextr].email + \"}}\"\n                                  }\n                                },\n                                [_vm._v(_vm._s(data[indextr].email))]\n                              )\n                            ]\n                          )\n                        ],\n                        1\n                      )\n                    })\n                  }\n                }\n              ])\n            },\n            [\n              _c(\"template\", { slot: \"header\" }, [\n                _c(\"h3\", [_vm._v(\"Subscribers\")]),\n                _vm.newsLetter.data && _vm.newsLetter.data.length > 0\n                  ? _c(\n                      \"div\",\n                      { staticClass: \"mx-4\" },\n                      [\n                        _c(\n                          \"vs-button\",\n                          {\n                            attrs: { size: \"small\", icon: \"cloud_download\" },\n                            on: { click: _vm.exportExcel }\n                          },\n                          [\n                            _vm._v(\n                              \"\\n                        Export\\n                    \"\n                            )\n                          ]\n                        )\n                      ],\n                      1\n                    )\n                  : _vm._e()\n              ]),\n              _c(\n                \"template\",\n                { slot: \"thead\" },\n                [\n                  _c(\"vs-th\", [\n                    _vm._v(\"\\n                    Email\\n                \")\n                  ])\n                ],\n                1\n              )\n            ],\n            2\n          ),\n          _vm.newsLetter.data && _vm.newsLetter.data.length > 0\n            ? _c(\"vs-pagination\", {\n                staticClass: \"mt-6\",\n                attrs: { total: _vm.newsLetter.meta.pagination.total_pages },\n                on: { change: _vm.handleChangePage },\n                model: {\n                  value: _vm.filters.page,\n                  callback: function($$v) {\n                    _vm.$set(_vm.filters, \"page\", $$v)\n                  },\n                  expression: \"filters.page\"\n                }\n              })\n            : _vm._e()\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2NvbnRhY3RzL05ld3NMZXR0ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwNTFkYzM4Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbnRhY3RzL05ld3NMZXR0ZXIudnVlP2E3ZDQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdGhpcyQxID0gdGhpc1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgYXR0cnM6IHsgaWQ6IFwiY2FsLW5ld3MtbGV0dGVyXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcInZ4LWNhcmRcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ2cy10YWJsZVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczogeyBzc3Q6IHRydWUsIGRhdGE6IF92bS5uZXdzTGV0dGVyLmRhdGEsIHNlYXJjaDogXCJcIiB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIHNlYXJjaDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVTZWFyY2goZSwgdGhpcyQxKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZWYuZGF0YVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLl9sKGRhdGEsIGZ1bmN0aW9uKHRyLCBpbmRleHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IGluZGV4dHIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgZGF0YTogZGF0YVtpbmRleHRyXS5lbWFpbCB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IFwibWFpbHRvOlwiICsgZGF0YVtpbmRleHRyXS5lbWFpbCArIFwifX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoZGF0YVtpbmRleHRyXS5lbWFpbCkpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJ0ZW1wbGF0ZVwiLCB7IHNsb3Q6IFwiaGVhZGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgIF9jKFwiaDNcIiwgW192bS5fdihcIlN1YnNjcmliZXJzXCIpXSksXG4gICAgICAgICAgICAgICAgX3ZtLm5ld3NMZXR0ZXIuZGF0YSAmJiBfdm0ubmV3c0xldHRlci5kYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcIm14LTRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgc2l6ZTogXCJzbWFsbFwiLCBpY29uOiBcImNsb3VkX2Rvd25sb2FkXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmV4cG9ydEV4Y2VsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgRXhwb3J0XFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInRlbXBsYXRlXCIsXG4gICAgICAgICAgICAgICAgeyBzbG90OiBcInRoZWFkXCIgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICBFbWFpbFxcbiAgICAgICAgICAgICAgICBcIilcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0ubmV3c0xldHRlci5kYXRhICYmIF92bS5uZXdzTGV0dGVyLmRhdGEubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyBfYyhcInZzLXBhZ2luYXRpb25cIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm10LTZcIixcbiAgICAgICAgICAgICAgICBhdHRyczogeyB0b3RhbDogX3ZtLm5ld3NMZXR0ZXIubWV0YS5wYWdpbmF0aW9uLnRvdGFsX3BhZ2VzIH0sXG4gICAgICAgICAgICAgICAgb246IHsgY2hhbmdlOiBfdm0uaGFuZGxlQ2hhbmdlUGFnZSB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmZpbHRlcnMucGFnZSxcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmZpbHRlcnMsIFwicGFnZVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJmaWx0ZXJzLnBhZ2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { attrs: { id: \"dashboard-analytics\" } }, [\n    _c(\"div\", { staticClass: \"vx-row\" }, [\n      _c(\"div\", { staticClass: \"vx-col w-full\" }, [\n        _c(\"div\", { attrs: { id: \"simple-calendar-app\" } }, [\n          _c(\n            \"div\",\n            { staticClass: \"vx-card app-fixed-height\" },\n            [\n              _c(\n                \"calendar-view\",\n                {\n                  ref: \"calendar\",\n                  staticClass: \"theme-default\",\n                  attrs: {\n                    displayPeriodUom: _vm.calendarView,\n                    \"show-date\": _vm.startDate,\n                    events: _vm.calendar,\n                    eventTop: _vm.windowWidth <= 400 ? \"2rem\" : \"3rem\",\n                    eventBorderHeight: \"0px\",\n                    eventContentHeight: \"1.65rem\"\n                  },\n                  on: { \"click-event\": _vm.goToProjectDetails }\n                },\n                [\n                  _c(\n                    \"div\",\n                    {\n                      staticClass: \"mb-12\",\n                      attrs: { slot: \"header\" },\n                      slot: \"header\"\n                    },\n                    [\n                      _c(\"div\", { staticClass: \"vx-row no-gutter\" }, [\n                        _c(\"div\", {\n                          staticClass:\n                            \"vx-col sm:w-1/3 w-full sm:my-0 my-3 mx-auto flex\"\n                        }),\n                        _c(\n                          \"div\",\n                          {\n                            staticClass:\n                              \"vx-col sm:w-1/3 w-full sm:my-0 my-3 mx-auto flex\"\n                          },\n                          [\n                            _c(\n                              \"div\",\n                              { staticClass: \"flex items-center mx-auto\" },\n                              [\n                                _c(\"feather-icon\", {\n                                  staticClass:\n                                    \"cursor-pointer bg-primary text-white rounded-full\",\n                                  attrs: {\n                                    icon: \"ChevronLeftIcon\",\n                                    svgClasses: \"w-5 h-5 m-1\"\n                                  },\n                                  on: {\n                                    click: function($event) {\n                                      return _vm.updateMonth(-1)\n                                    }\n                                  }\n                                }),\n                                _c(\n                                  \"span\",\n                                  {\n                                    staticClass:\n                                      \"mx-3 text-xl font-medium whitespace-no-wrap\"\n                                  },\n                                  [\n                                    _vm._v(\n                                      _vm._s(_vm._f(\"month\")(_vm.startDate))\n                                    )\n                                  ]\n                                ),\n                                _c(\"feather-icon\", {\n                                  staticClass:\n                                    \"cursor-pointer bg-primary text-white rounded-full\",\n                                  attrs: {\n                                    icon: \"ChevronRightIcon\",\n                                    svgClasses: \"w-5 h-5 m-1\"\n                                  },\n                                  on: {\n                                    click: function($event) {\n                                      return _vm.updateMonth(1)\n                                    }\n                                  }\n                                })\n                              ],\n                              1\n                            )\n                          ]\n                        ),\n                        _c(\n                          \"div\",\n                          {\n                            staticClass:\n                              \"vx-col sm:w-1/3 w-full sm:my-0 my-3 flex justify-end\"\n                          },\n                          [\n                            _c(\n                              \"div\",\n                              {\n                                staticClass:\n                                  \"flex flex-wrap justify-start justify-center\"\n                              },\n                              _vm._l(_vm.calendarLabels, function(\n                                label,\n                                index\n                              ) {\n                                return _c(\n                                  \"div\",\n                                  {\n                                    key: index,\n                                    staticClass: \"flex items-center mr-4 mb-2\"\n                                  },\n                                  [\n                                    _c(\"div\", {\n                                      staticClass:\n                                        \"h-3 w-3 inline-block rounded-full mr-2\",\n                                      class: \"bg-\" + label.color\n                                    }),\n                                    _c(\"span\", [_vm._v(_vm._s(label.text))])\n                                  ]\n                                )\n                              }),\n                              0\n                            )\n                          ]\n                        )\n                      ])\n                    ]\n                  )\n                ]\n              )\n            ],\n            1\n          )\n        ])\n      ])\n    ])\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9EYXNoYm9hcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkMDRlNDY4Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9EYXNoYm9hcmQudnVlPzFlNmYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcImRhc2hib2FyZC1hbmFseXRpY3NcIiB9IH0sIFtcbiAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInZ4LXJvd1wiIH0sIFtcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidngtY29sIHctZnVsbFwiIH0sIFtcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJzaW1wbGUtY2FsZW5kYXItYXBwXCIgfSB9LCBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ2eC1jYXJkIGFwcC1maXhlZC1oZWlnaHRcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImNhbGVuZGFyLXZpZXdcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICByZWY6IFwiY2FsZW5kYXJcIixcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRoZW1lLWRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlQZXJpb2RVb206IF92bS5jYWxlbmRhclZpZXcsXG4gICAgICAgICAgICAgICAgICAgIFwic2hvdy1kYXRlXCI6IF92bS5zdGFydERhdGUsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50czogX3ZtLmNhbGVuZGFyLFxuICAgICAgICAgICAgICAgICAgICBldmVudFRvcDogX3ZtLndpbmRvd1dpZHRoIDw9IDQwMCA/IFwiMnJlbVwiIDogXCIzcmVtXCIsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50Qm9yZGVySGVpZ2h0OiBcIjBweFwiLFxuICAgICAgICAgICAgICAgICAgICBldmVudENvbnRlbnRIZWlnaHQ6IFwiMS42NXJlbVwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHsgXCJjbGljay1ldmVudFwiOiBfdm0uZ29Ub1Byb2plY3REZXRhaWxzIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibWItMTJcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBzbG90OiBcImhlYWRlclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgc2xvdDogXCJoZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ2eC1yb3cgbm8tZ3V0dGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZ4LWNvbCBzbTp3LTEvMyB3LWZ1bGwgc206bXktMCBteS0zIG14LWF1dG8gZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZ4LWNvbCBzbTp3LTEvMyB3LWZ1bGwgc206bXktMCBteS0zIG14LWF1dG8gZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImZsZXggaXRlbXMtY2VudGVyIG14LWF1dG9cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImZlYXRoZXItaWNvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImN1cnNvci1wb2ludGVyIGJnLXByaW1hcnkgdGV4dC13aGl0ZSByb3VuZGVkLWZ1bGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJDaGV2cm9uTGVmdEljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2Z0NsYXNzZXM6IFwidy01IGgtNSBtLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS51cGRhdGVNb250aCgtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJteC0zIHRleHQteGwgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1uby13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5fZihcIm1vbnRoXCIpKF92bS5zdGFydERhdGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJmZWF0aGVyLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjdXJzb3ItcG9pbnRlciBiZy1wcmltYXJ5IHRleHQtd2hpdGUgcm91bmRlZC1mdWxsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiQ2hldnJvblJpZ2h0SWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZnQ2xhc3NlczogXCJ3LTUgaC01IG0tMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnVwZGF0ZU1vbnRoKDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC1jb2wgc206dy0xLzMgdy1mdWxsIHNtOm15LTAgbXktMyBmbGV4IGp1c3RpZnktZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LXN0YXJ0IGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLmNhbGVuZGFyTGFiZWxzLCBmdW5jdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsZXggaXRlbXMtY2VudGVyIG1yLTQgbWItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaC0zIHctMyBpbmxpbmUtYmxvY2sgcm91bmRlZC1mdWxsIG1yLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFwiYmctXCIgKyBsYWJlbC5jb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW192bS5fdihfdm0uX3MobGFiZWwudGV4dCkpXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdKVxuICAgICAgXSlcbiAgICBdKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0&":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1 d-theme-dark-bg\" },\n    [\n      _vm.project.can_edit\n        ? _c(\"project\", {\n            attrs: {\n              isNew: false,\n              loading: _vm.updating,\n              project: Object.assign({}, _vm.project)\n            },\n            on: { save: _vm.save, fileAdded: _vm.fileAdded }\n          })\n        : _vm._e(),\n      !_vm.project.can_edit\n        ? _c(\"project-details\", {\n            attrs: { project: Object.assign({}, _vm.project) }\n          })\n        : _vm._e()\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL0VkaXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5MmU1NmUwJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL0VkaXQudnVlP2Y0YTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwidngtY29sIHNtOnctZnVsbCBtZDp3LWZ1bGwgbGc6dy0xLzEgZC10aGVtZS1kYXJrLWJnXCIgfSxcbiAgICBbXG4gICAgICBfdm0ucHJvamVjdC5jYW5fZWRpdFxuICAgICAgICA/IF9jKFwicHJvamVjdFwiLCB7XG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBpc05ldzogZmFsc2UsXG4gICAgICAgICAgICAgIGxvYWRpbmc6IF92bS51cGRhdGluZyxcbiAgICAgICAgICAgICAgcHJvamVjdDogT2JqZWN0LmFzc2lnbih7fSwgX3ZtLnByb2plY3QpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHsgc2F2ZTogX3ZtLnNhdmUsIGZpbGVBZGRlZDogX3ZtLmZpbGVBZGRlZCB9XG4gICAgICAgICAgfSlcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICFfdm0ucHJvamVjdC5jYW5fZWRpdFxuICAgICAgICA/IF9jKFwicHJvamVjdC1kZXRhaWxzXCIsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7IHByb2plY3Q6IE9iamVjdC5hc3NpZ24oe30sIF92bS5wcm9qZWN0KSB9XG4gICAgICAgICAgfSlcbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74&":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var this$1 = this\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"cal-projects\" } },\n    [\n      _c(\"vx-card\", [\n        _c(\"div\", { staticClass: \"vx-row\" }, [\n          _c(\n            \"div\",\n            { staticClass: \"vx-col w-full\" },\n            [\n              _c(\n                \"vs-table\",\n                {\n                  staticClass: \"gg-no-body\",\n                  attrs: { sst: true, data: _vm.projects.data, search: \"\" },\n                  on: {\n                    search: function(e) {\n                      return _vm.handleSearch(e, this$1)\n                    }\n                  }\n                },\n                [\n                  _c(\"template\", { slot: \"header\" }, [\n                    _c(\"h3\", [_vm._v(\"Projects\")]),\n                    _c(\n                      \"div\",\n                      { staticClass: \"mx-2\" },\n                      [\n                        _c(\n                          \"vs-button\",\n                          {\n                            staticClass: \"float-right d-inline-block\",\n                            attrs: {\n                              to: \"/projects/create\",\n                              size: \"small\",\n                              icon: \"add_circle\"\n                            }\n                          },\n                          [\n                            _vm._v(\n                              \"\\n                                Create\\n                            \"\n                            )\n                          ]\n                        )\n                      ],\n                      1\n                    )\n                  ])\n                ],\n                2\n              )\n            ],\n            1\n          )\n        ]),\n        _c(\n          \"div\",\n          { staticClass: \"vx-row\" },\n          _vm._l(_vm.projects.data, function(project) {\n            return _c(\n              \"div\",\n              {\n                key: project.id,\n                staticClass: \"vx-col w-full lg:w-1/3 sm:w-1/2 mb-base\"\n              },\n              [\n                _c(\n                  \"vx-card\",\n                  { staticClass: \"p-2\" },\n                  [\n                    _c(\"vs-avatar\", {\n                      staticClass: \"mx-auto mb-6 block vs-avatar-object-cover\",\n                      attrs: { src: project.logo, size: \"80px\" }\n                    }),\n                    _c(\"div\", { staticClass: \"text-center\" }, [\n                      _c(\"h4\", [_vm._v(_vm._s(project.name))]),\n                      _c(\"p\", { staticClass: \"text-center mt-1\" }, [\n                        _c(\n                          \"span\",\n                          {\n                            staticClass: \"text-white px-4 py-1 rounded-lg\",\n                            class: _vm.getChipColor(project.status)\n                          },\n                          [\n                            _vm._v(\n                              \"\\n                                 \" +\n                                _vm._s(project.readable_status) +\n                                \"\\n                            \"\n                            )\n                          ]\n                        )\n                      ])\n                    ]),\n                    _c(\n                      \"div\",\n                      { staticClass: \"cal-top-right\" },\n                      [\n                        _c(\n                          \"vx-tooltip\",\n                          { attrs: { text: \"Edit\" } },\n                          [\n                            _c(\"vs-button\", {\n                              staticClass: \"inline-block mx-1\",\n                              attrs: { size: \"small\", icon: \"edit\" },\n                              on: {\n                                click: function($event) {\n                                  return _vm.editProject(project)\n                                }\n                              }\n                            })\n                          ],\n                          1\n                        ),\n                        _c(\n                          \"vx-tooltip\",\n                          { attrs: { text: \"Delete\" } },\n                          [\n                            _vm.isAdmin()\n                              ? _c(\"vs-button\", {\n                                  staticClass: \"inline-block mx-1\",\n                                  attrs: {\n                                    color: \"danger\",\n                                    size: \"small\",\n                                    icon: \"delete\"\n                                  },\n                                  on: {\n                                    click: function($event) {\n                                      return _vm.deleteProject(project)\n                                    }\n                                  }\n                                })\n                              : _vm._e()\n                          ],\n                          1\n                        )\n                      ],\n                      1\n                    ),\n                    _c(\n                      \"template\",\n                      { slot: \"footer\" },\n                      [\n                        _c(\"vs-divider\"),\n                        _c(\"div\", { staticClass: \"flex justify-between\" }, [\n                          _c(\n                            \"span\",\n                            { staticClass: \"flex items-center\" },\n                            [\n                              _c(\"feather-icon\", {\n                                attrs: {\n                                  icon: \"FileIcon\",\n                                  svgClasses:\n                                    \"h-5 w-5 text-primary stroke-current\"\n                                }\n                              }),\n                              _c(\"span\", { staticClass: \"ml-2\" }, [\n                                _vm._v(_vm._s(project.files_count))\n                              ])\n                            ],\n                            1\n                          ),\n                          _c(\n                            \"span\",\n                            { staticClass: \"flex items-center\" },\n                            [\n                              _c(\"feather-icon\", {\n                                attrs: {\n                                  icon: \"CalendarIcon\",\n                                  svgClasses:\n                                    \"h-5 w-5 stroke-current \" +\n                                    _vm.getCalendarClass(project)\n                                }\n                              }),\n                              _c(\"span\", { staticClass: \"ml-2\" }, [\n                                _vm._v(_vm._s(_vm._f(\"date\")(project.due_date)))\n                              ])\n                            ],\n                            1\n                          )\n                        ])\n                      ],\n                      1\n                    )\n                  ],\n                  2\n                )\n              ],\n              1\n            )\n          }),\n          0\n        ),\n        _c(\"div\", { staticClass: \"vx-row\" }, [\n          _c(\n            \"div\",\n            { staticClass: \"vx-col w-full mb-base text-center\" },\n            [\n              _vm.projects.data && _vm.projects.data.length > 0\n                ? _c(\"vs-pagination\", {\n                    staticClass: \"mt-6\",\n                    attrs: { total: _vm.projects.meta.pagination.total_pages },\n                    on: { change: _vm.handleChangePage },\n                    model: {\n                      value: _vm.filters.page,\n                      callback: function($$v) {\n                        _vm.$set(_vm.filters, \"page\", $$v)\n                      },\n                      expression: \"filters.page\"\n                    }\n                  })\n                : _vm._e()\n            ],\n            1\n          )\n        ])\n      ])\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU5ZTYyZjc0Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL0xpc3QudnVlPzQ0MDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdGhpcyQxID0gdGhpc1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgYXR0cnM6IHsgaWQ6IFwiY2FsLXByb2plY3RzXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFwidngtY2FyZFwiLCBbXG4gICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidngtcm93XCIgfSwgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidngtY29sIHctZnVsbFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwidnMtdGFibGVcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJnZy1uby1ib2R5XCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBzc3Q6IHRydWUsIGRhdGE6IF92bS5wcm9qZWN0cy5kYXRhLCBzZWFyY2g6IFwiXCIgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlU2VhcmNoKGUsIHRoaXMkMSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJ0ZW1wbGF0ZVwiLCB7IHNsb3Q6IFwiaGVhZGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcImgzXCIsIFtfdm0uX3YoXCJQcm9qZWN0c1wiKV0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibXgtMlwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJmbG9hdC1yaWdodCBkLWlubGluZS1ibG9ja1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogXCIvcHJvamVjdHMvY3JlYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBcInNtYWxsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcImFkZF9jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIF0pLFxuICAgICAgICBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidngtcm93XCIgfSxcbiAgICAgICAgICBfdm0uX2woX3ZtLnByb2plY3RzLmRhdGEsIGZ1bmN0aW9uKHByb2plY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogcHJvamVjdC5pZCxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ2eC1jb2wgdy1mdWxsIGxnOnctMS8zIHNtOnctMS8yIG1iLWJhc2VcIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcInZ4LWNhcmRcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicC0yXCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1hdmF0YXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm14LWF1dG8gbWItNiBibG9jayB2cy1hdmF0YXItb2JqZWN0LWNvdmVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgc3JjOiBwcm9qZWN0LmxvZ28sIHNpemU6IFwiODBweFwiIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1jZW50ZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJoNFwiLCBbX3ZtLl92KF92bS5fcyhwcm9qZWN0Lm5hbWUpKV0pLFxuICAgICAgICAgICAgICAgICAgICAgIF9jKFwicFwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtY2VudGVyIG10LTFcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0ZXh0LXdoaXRlIHB4LTQgcHktMSByb3VuZGVkLWxnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IF92bS5nZXRDaGlwQ29sb3IocHJvamVjdC5zdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKHByb2plY3QucmVhZGFibGVfc3RhdHVzKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJjYWwtdG9wLXJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJFZGl0XCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1idXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaW5saW5lLWJsb2NrIG14LTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNpemU6IFwic21hbGxcIiwgaWNvbjogXCJlZGl0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmVkaXRQcm9qZWN0KHByb2plY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidngtdG9vbHRpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IHRleHQ6IFwiRGVsZXRlXCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmlzQWRtaW4oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInZzLWJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaW5saW5lLWJsb2NrIG14LTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiZGFuZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBcInNtYWxsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmRlbGV0ZVByb2plY3QocHJvamVjdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0ZW1wbGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgc2xvdDogXCJmb290ZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtZGl2aWRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZmxleCBqdXN0aWZ5LWJldHdlZW5cIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZmxleCBpdGVtcy1jZW50ZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZmVhdGhlci1pY29uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcIkZpbGVJY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZnQ2xhc3NlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaC01IHctNSB0ZXh0LXByaW1hcnkgc3Ryb2tlLWN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcIm1sLTJcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MocHJvamVjdC5maWxlc19jb3VudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImZsZXggaXRlbXMtY2VudGVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImZlYXRoZXItaWNvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJDYWxlbmRhckljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmdDbGFzc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoLTUgdy01IHN0cm9rZS1jdXJyZW50IFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5nZXRDYWxlbmRhckNsYXNzKHByb2plY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwibWwtMlwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uX2YoXCJkYXRlXCIpKHByb2plY3QuZHVlX2RhdGUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSksXG4gICAgICAgICAgMFxuICAgICAgICApLFxuICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInZ4LXJvd1wiIH0sIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInZ4LWNvbCB3LWZ1bGwgbWItYmFzZSB0ZXh0LWNlbnRlclwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5wcm9qZWN0cy5kYXRhICYmIF92bS5wcm9qZWN0cy5kYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IF9jKFwidnMtcGFnaW5hdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm10LTZcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgdG90YWw6IF92bS5wcm9qZWN0cy5tZXRhLnBhZ2luYXRpb24udG90YWxfcGFnZXMgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHsgY2hhbmdlOiBfdm0uaGFuZGxlQ2hhbmdlUGFnZSB9LFxuICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZmlsdGVycy5wYWdlLFxuICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5maWx0ZXJzLCBcInBhZ2VcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJmaWx0ZXJzLnBhZ2VcIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdKVxuICAgICAgXSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1 d-theme-dark-bg\" },\n    [\n      _c(\"project\", {\n        attrs: { isNew: true, loading: _vm.saving, project: _vm.project },\n        on: { save: _vm.save }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGQzMmUxM2EmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvTmV3LnZ1ZT84YjYwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcInZ4LWNvbCBzbTp3LWZ1bGwgbWQ6dy1mdWxsIGxnOnctMS8xIGQtdGhlbWUtZGFyay1iZ1wiIH0sXG4gICAgW1xuICAgICAgX2MoXCJwcm9qZWN0XCIsIHtcbiAgICAgICAgYXR0cnM6IHsgaXNOZXc6IHRydWUsIGxvYWRpbmc6IF92bS5zYXZpbmcsIHByb2plY3Q6IF92bS5wcm9qZWN0IH0sXG4gICAgICAgIG9uOiB7IHNhdmU6IF92bS5zYXZlIH1cbiAgICAgIH0pXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var this$1 = this\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"cal-projects\" } },\n    [\n      _c(\"vx-card\", [\n        _c(\"div\", { staticClass: \"vx-row\" }, [\n          _c(\n            \"div\",\n            { staticClass: \"vx-col w-full\" },\n            [\n              _c(\n                \"vs-table\",\n                {\n                  staticClass: \"gg-no-body\",\n                  attrs: { sst: true, data: _vm.projects.data, search: \"\" },\n                  on: {\n                    search: function(e) {\n                      return _vm.handleSearch(e, this$1)\n                    }\n                  }\n                },\n                [\n                  _c(\"template\", { slot: \"header\" }, [\n                    _c(\"h3\", [_vm._v(\"Projects\")])\n                  ])\n                ],\n                2\n              )\n            ],\n            1\n          )\n        ]),\n        _c(\n          \"div\",\n          { staticClass: \"vx-row\" },\n          _vm._l(_vm.projects.data, function(project) {\n            return _c(\n              \"div\",\n              {\n                key: project.id,\n                staticClass: \"vx-col w-full lg:w-1/3 sm:w-1/2 mb-base\"\n              },\n              [\n                _c(\n                  \"vx-card\",\n                  { staticClass: \"p-2\" },\n                  [\n                    _c(\"vs-avatar\", {\n                      staticClass: \"mx-auto mb-6 block vs-avatar-object-cover\",\n                      attrs: { src: project.logo, size: \"80px\" }\n                    }),\n                    _c(\"div\", { staticClass: \"text-center\" }, [\n                      _c(\"h4\", [_vm._v(_vm._s(project.name))])\n                    ]),\n                    _c(\n                      \"div\",\n                      { staticClass: \"cal-top-right\" },\n                      [\n                        _c(\n                          \"vx-tooltip\",\n                          { attrs: { text: \"Edit\" } },\n                          [\n                            _c(\"vs-button\", {\n                              staticClass: \"inline-block mx-1\",\n                              attrs: { size: \"small\", icon: \"edit\" },\n                              on: {\n                                click: function($event) {\n                                  return _vm.editProject(project)\n                                }\n                              }\n                            })\n                          ],\n                          1\n                        )\n                      ],\n                      1\n                    ),\n                    _c(\n                      \"template\",\n                      { slot: \"footer\" },\n                      [\n                        _c(\"vs-divider\"),\n                        _c(\"div\", { staticClass: \"flex justify-between\" }, [\n                          _c(\n                            \"span\",\n                            { staticClass: \"flex items-center\" },\n                            [\n                              _c(\"feather-icon\", {\n                                attrs: {\n                                  icon: \"FileIcon\",\n                                  svgClasses:\n                                    \"h-5 w-5 text-primary stroke-current\"\n                                }\n                              }),\n                              _c(\"span\", { staticClass: \"ml-2\" }, [\n                                _vm._v(_vm._s(project.files_count))\n                              ])\n                            ],\n                            1\n                          ),\n                          _c(\n                            \"span\",\n                            { staticClass: \"flex items-center\" },\n                            [\n                              _c(\"feather-icon\", {\n                                attrs: {\n                                  icon: \"CalendarIcon\",\n                                  svgClasses:\n                                    \"h-5 w-5 stroke-current \" +\n                                    _vm.getCalendarClass(project)\n                                }\n                              }),\n                              _c(\"span\", { staticClass: \"ml-2\" }, [\n                                _vm._v(_vm._s(_vm._f(\"date\")(project.due_date)))\n                              ])\n                            ],\n                            1\n                          )\n                        ])\n                      ],\n                      1\n                    )\n                  ],\n                  2\n                )\n              ],\n              1\n            )\n          }),\n          0\n        ),\n        _c(\"div\", { staticClass: \"vx-row\" }, [\n          _c(\n            \"div\",\n            { staticClass: \"vx-col w-full mb-base text-center\" },\n            [\n              _c(\"vs-pagination\", {\n                staticClass: \"mt-6\",\n                attrs: { total: _vm.projects.meta.pagination.total_pages },\n                on: { change: _vm.handleChangePage },\n                model: {\n                  value: _vm.filters.page,\n                  callback: function($$v) {\n                    _vm.$set(_vm.filters, \"page\", $$v)\n                  },\n                  expression: \"filters.page\"\n                }\n              })\n            ],\n            1\n          )\n        ])\n      ])\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL1RvUXVvdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiYTc4MmRiJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL1RvUXVvdGUudnVlPzNkNDEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdGhpcyQxID0gdGhpc1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgYXR0cnM6IHsgaWQ6IFwiY2FsLXByb2plY3RzXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFwidngtY2FyZFwiLCBbXG4gICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidngtcm93XCIgfSwgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidngtY29sIHctZnVsbFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwidnMtdGFibGVcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJnZy1uby1ib2R5XCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBzc3Q6IHRydWUsIGRhdGE6IF92bS5wcm9qZWN0cy5kYXRhLCBzZWFyY2g6IFwiXCIgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlU2VhcmNoKGUsIHRoaXMkMSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJ0ZW1wbGF0ZVwiLCB7IHNsb3Q6IFwiaGVhZGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcImgzXCIsIFtfdm0uX3YoXCJQcm9qZWN0c1wiKV0pXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ2eC1yb3dcIiB9LFxuICAgICAgICAgIF92bS5fbChfdm0ucHJvamVjdHMuZGF0YSwgZnVuY3Rpb24ocHJvamVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBwcm9qZWN0LmlkLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInZ4LWNvbCB3LWZ1bGwgbGc6dy0xLzMgc206dy0xLzIgbWItYmFzZVwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwidngtY2FyZFwiLFxuICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJwLTJcIiB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcInZzLWF2YXRhclwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXgtYXV0byBtYi02IGJsb2NrIHZzLWF2YXRhci1vYmplY3QtY292ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBzcmM6IHByb2plY3QubG9nbywgc2l6ZTogXCI4MHB4XCIgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWNlbnRlclwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcImg0XCIsIFtfdm0uX3YoX3ZtLl9zKHByb2plY3QubmFtZSkpXSlcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJjYWwtdG9wLXJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJFZGl0XCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1idXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaW5saW5lLWJsb2NrIG14LTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNpemU6IFwic21hbGxcIiwgaWNvbjogXCJlZGl0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmVkaXRQcm9qZWN0KHByb2plY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwidGVtcGxhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHNsb3Q6IFwiZm9vdGVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLWRpdmlkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImZsZXgganVzdGlmeS1iZXR3ZWVuXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImZsZXggaXRlbXMtY2VudGVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImZlYXRoZXItaWNvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJGaWxlSWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2Z0NsYXNzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImgtNSB3LTUgdGV4dC1wcmltYXJ5IHN0cm9rZS1jdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJtbC0yXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKHByb2plY3QuZmlsZXNfY291bnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJmbGV4IGl0ZW1zLWNlbnRlclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJmZWF0aGVyLWljb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiQ2FsZW5kYXJJY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZnQ2xhc3NlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaC01IHctNSBzdHJva2UtY3VycmVudCBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZ2V0Q2FsZW5kYXJDbGFzcyhwcm9qZWN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcIm1sLTJcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLl9mKFwiZGF0ZVwiKShwcm9qZWN0LmR1ZV9kYXRlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIDBcbiAgICAgICAgKSxcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ2eC1yb3dcIiB9LCBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ2eC1jb2wgdy1mdWxsIG1iLWJhc2UgdGV4dC1jZW50ZXJcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInZzLXBhZ2luYXRpb25cIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm10LTZcIixcbiAgICAgICAgICAgICAgICBhdHRyczogeyB0b3RhbDogX3ZtLnByb2plY3RzLm1ldGEucGFnaW5hdGlvbi50b3RhbF9wYWdlcyB9LFxuICAgICAgICAgICAgICAgIG9uOiB7IGNoYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVBhZ2UgfSxcbiAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5maWx0ZXJzLnBhZ2UsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5maWx0ZXJzLCBcInBhZ2VcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiZmlsdGVycy5wYWdlXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSlcbiAgICAgIF0pXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    [\n      _c(\"vx-card\", [\n        _c(\n          \"div\",\n          { staticClass: \"p-8\" },\n          [\n            _c(\n              \"vs-row\",\n              { staticClass: \"w-full my-4 mb-16\" },\n              [\n                _c(\n                  \"vs-col\",\n                  { staticClass: \"w-4/5\" },\n                  [\n                    _vm.project.can_request_quotation\n                      ? _c(\n                          \"vs-button\",\n                          {\n                            staticClass: \"mr-2\",\n                            attrs: { color: \"primary\" },\n                            on: { click: _vm.requestQuotation }\n                          },\n                          [\n                            _vm._v(\n                              \"\\n                        Request Quotation\\n                    \"\n                            )\n                          ]\n                        )\n                      : _vm._e(),\n                    _vm.project.can_accept_quotation\n                      ? _c(\n                          \"vs-button\",\n                          {\n                            staticClass: \"mr-2\",\n                            attrs: { color: \"primary\" },\n                            on: {\n                              click: function($event) {\n                                _vm.showRespondPopup = true\n                              }\n                            }\n                          },\n                          [\n                            _vm._v(\n                              \"\\n                        Respond\\n                    \"\n                            )\n                          ]\n                        )\n                      : _vm._e(),\n                    _vm.project.can_update_status && _vm.statuses.length > 0\n                      ? _c(\n                          \"div\",\n                          {\n                            staticClass:\n                              \"vs-component vs-con-input-label vs-input w-full no-icon-border vs-input-primary\"\n                          },\n                          [\n                            _c(\"Multiselect\", {\n                              attrs: {\n                                options: _vm.statuses,\n                                searchable: false,\n                                label: \"text\",\n                                \"track-by\": \"value\",\n                                multiple: false\n                              },\n                              model: {\n                                value: _vm.selectedStatus,\n                                callback: function($$v) {\n                                  _vm.selectedStatus = $$v\n                                },\n                                expression: \"selectedStatus\"\n                              }\n                            })\n                          ],\n                          1\n                        )\n                      : _vm._e()\n                  ],\n                  1\n                ),\n                _c(\n                  \"vs-col\",\n                  { staticClass: \"w-1/5 text-right\" },\n                  [\n                    _c(\n                      \"vs-button\",\n                      { attrs: { color: \"warning\" }, on: { click: _vm.back } },\n                      [_vm._v(\"Back\")]\n                    )\n                  ],\n                  1\n                )\n              ],\n              1\n            ),\n            _c(\n              \"vs-popup\",\n              {\n                staticClass: \"holamundo\",\n                attrs: { active: _vm.showRespondPopup, title: \"Respond\" },\n                on: {\n                  \"update:active\": function($event) {\n                    _vm.showRespondPopup = $event\n                  }\n                }\n              },\n              [\n                _c(\n                  \"div\",\n                  {\n                    staticClass:\n                      \"vs-component vs-con-input-label no-border vs-input w-full no-icon-border vs-input-primary is-label-placeholder\"\n                  },\n                  [\n                    _c(\"vs-textarea\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"required\",\n                          expression: \"'required'\"\n                        }\n                      ],\n                      staticClass:\n                        \"w-full vs-input vs-input--input normal hasValue no-padding\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"message\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Respond\",\n                        rows: \"5\"\n                      },\n                      model: {\n                        value: _vm.rejection.message,\n                        callback: function($$v) {\n                          _vm.$set(_vm.rejection, \"message\", $$v)\n                        },\n                        expression: \"rejection.message\"\n                      }\n                    })\n                  ],\n                  1\n                ),\n                _c(\n                  \"div\",\n                  { staticClass: \"justify-between my-5\" },\n                  [\n                    _c(\n                      \"vs-button\",\n                      {\n                        staticClass: \"mr-2\",\n                        attrs: {\n                          color: \"primary\",\n                          disabled: !_vm.rejection.message\n                        },\n                        on: { click: _vm.respond }\n                      },\n                      [_vm._v(\"Save\\n                    \")]\n                    ),\n                    _c(\n                      \"vs-button\",\n                      {\n                        staticClass: \"mr-2\",\n                        attrs: { color: \"warning\" },\n                        on: {\n                          click: function($event) {\n                            _vm.showRespondPopup = false\n                          }\n                        }\n                      },\n                      [_vm._v(\"Cancel\")]\n                    )\n                  ],\n                  1\n                )\n              ]\n            ),\n            _c(\n              \"vs-row\",\n              { staticClass: \"w-full\" },\n              [\n                _c(\"vs-col\", { staticClass: \"w-1/4\" }, [\n                  _c(\"img\", {\n                    staticClass: \"w-4/5\",\n                    attrs: { src: _vm.project.logo, alt: \"\" }\n                  })\n                ]),\n                _c(\"vs-col\", { staticClass: \"w-3/4\" }, [\n                  _c(\"table\", {}, [\n                    _c(\"tr\", [\n                      _c(\"th\", { staticClass: \"v-text-top\" }, [\n                        _vm._v(\"Client\")\n                      ]),\n                      _c(\"td\", [_vm._v(_vm._s(_vm.project.client))])\n                    ]),\n                    _c(\"tr\", [\n                      _c(\"th\", { staticClass: \"v-text-top\" }, [_vm._v(\"Name\")]),\n                      _c(\"td\", [_vm._v(_vm._s(_vm.project.name))])\n                    ]),\n                    _c(\"tr\", [\n                      _c(\"th\", { staticClass: \"v-text-top\" }, [\n                        _vm._v(\"Location\")\n                      ]),\n                      _c(\"td\", [_vm._v(_vm._s(_vm.project.location || \"n/d\"))])\n                    ]),\n                    _c(\"tr\", [\n                      _c(\"th\", { staticClass: \"v-text-top\" }, [\n                        _vm._v(\"Person Responsible\")\n                      ]),\n                      _c(\"td\", [\n                        _vm._v(_vm._s(_vm.project.person_responsible || \"n/d\"))\n                      ])\n                    ]),\n                    _c(\"tr\", [\n                      _c(\"th\", { staticClass: \"v-text-top\" }, [\n                        _vm._v(\"Person Responsible Email\")\n                      ]),\n                      _c(\"td\", [\n                        _c(\n                          \"a\",\n                          {\n                            attrs: {\n                              href:\n                                \"mailto:\" + _vm.project.person_responsible_email\n                            }\n                          },\n                          [_vm._v(_vm._s(_vm.project.person_responsible_email))]\n                        )\n                      ])\n                    ]),\n                    _c(\"tr\", [\n                      _c(\"th\", { staticClass: \"v-text-top\" }, [\n                        _vm._v(\"Person Responsible Phone\")\n                      ]),\n                      _c(\"td\", [\n                        _vm._v(\n                          _vm._s(_vm.project.person_responsible_phone || \"n/d\")\n                        )\n                      ])\n                    ]),\n                    _c(\"tr\", [\n                      _c(\"th\", { staticClass: \"v-text-top\" }, [\n                        _vm._v(\"Due Date\")\n                      ]),\n                      _c(\"td\", [\n                        _vm._v(\n                          _vm._s(\n                            _vm._f(\"date\")(_vm.project.due_date, \"DD MMM YYYY\")\n                          )\n                        )\n                      ])\n                    ]),\n                    _c(\"tr\", [\n                      _c(\"th\", { staticClass: \"v-text-top\" }, [\n                        _vm._v(\"Services\")\n                      ]),\n                      _c(\n                        \"td\",\n                        _vm._l(_vm.project.services, function(service) {\n                          return _c(\n                            \"vs-chip\",\n                            {\n                              key: service.id,\n                              staticClass: \"mr-2\",\n                              attrs: { color: \"primary\" }\n                            },\n                            [\n                              _vm._v(\n                                \"\\n                                    \" +\n                                  _vm._s(service.name) +\n                                  \"\\n                                \"\n                              )\n                            ]\n                          )\n                        }),\n                        1\n                      )\n                    ])\n                  ])\n                ])\n              ],\n              1\n            )\n          ],\n          1\n        )\n      ]),\n      _c(\n        \"vx-card\",\n        { staticClass: \"my-4\" },\n        [\n          _c(\n            \"vs-row\",\n            { staticClass: \"w-full\" },\n            [\n              _c(\"vs-col\", { staticClass: \"w-1/2\" }, [\n                _c(\"h2\", [_vm._v(\"Document management\")])\n              ]),\n              _c(\n                \"vs-col\",\n                { staticClass: \"w-1/2\" },\n                [\n                  _vm.hasSelectedFiles()\n                    ? _c(\n                        \"vs-button\",\n                        {\n                          staticClass: \"float-right ml-2\",\n                          on: { click: _vm.downloadMedia }\n                        },\n                        [\n                          _vm._v(\n                            \"\\n                    Download\\n                \"\n                          )\n                        ]\n                      )\n                    : _vm._e(),\n                  _vm.project.can_upload_files\n                    ? _c(\n                        \"vs-button\",\n                        {\n                          staticClass: \"float-right ml-2\",\n                          on: { click: _vm.showUploaderPopup }\n                        },\n                        [\n                          _vm._v(\n                            \"\\n                    Upload\\n                \"\n                          )\n                        ]\n                      )\n                    : _vm._e(),\n                  _vm.project.can_delete_files && _vm.hasSelectedFiles()\n                    ? _c(\n                        \"vs-button\",\n                        {\n                          staticClass: \"float-right ml-2\",\n                          attrs: { color: \"danger\" },\n                          on: { click: _vm.deleteMedia }\n                        },\n                        [\n                          _vm._v(\n                            \"\\n                    Delete\\n                \"\n                          )\n                        ]\n                      )\n                    : _vm._e()\n                ],\n                1\n              )\n            ],\n            1\n          ),\n          !_vm.project.files || _vm.project.files.length === 0\n            ? _c(\n                \"vs-row\",\n                [\n                  _c(\"vs-col\", { staticClass: \"my-8\" }, [\n                    _c(\"h5\", { staticClass: \"text-warning\" }, [\n                      _vm._v(\"No files were uploaded for this project.\")\n                    ])\n                  ])\n                ],\n                1\n              )\n            : _vm._e(),\n          _vm.project.files && _vm.project.files.length > 0\n            ? _c(\n                \"vs-row\",\n                [\n                  _c(\n                    \"vs-col\",\n                    { staticClass: \"my-8\" },\n                    _vm._l(_vm.groupedFiles, function(files) {\n                      return _c(\"div\", { key: files.key }, [\n                        files.key && _vm.mySelf[files.key.replace(/ /g, \"\")]\n                          ? _c(\n                              \"div\",\n                              { staticClass: \"my-4\" },\n                              [\n                                _c(\"h3\", { staticClass: \"mb-2\" }, [\n                                  _vm._v(_vm._s(files.key))\n                                ]),\n                                _c(\n                                  \"vs-table\",\n                                  {\n                                    ref: \"ggDocumentTable\",\n                                    refInFor: true,\n                                    attrs: { multiple: \"\", data: files.data },\n                                    on: { input: _vm.selectedItem },\n                                    scopedSlots: _vm._u(\n                                      [\n                                        {\n                                          key: \"default\",\n                                          fn: function(ref) {\n                                            var data = ref.data\n                                            return [\n                                              _c(\n                                                \"tbody\",\n                                                _vm._l(data, function(\n                                                  tr,\n                                                  indextr\n                                                ) {\n                                                  return _c(\n                                                    \"vs-tr\",\n                                                    {\n                                                      key: indextr,\n                                                      attrs: { data: tr }\n                                                    },\n                                                    [\n                                                      _c(\"vs-td\", [\n                                                        _c(\n                                                          \"p\",\n                                                          {\n                                                            staticClass:\n                                                              \"gg-media-table-text product-name font-medium\"\n                                                          },\n                                                          [\n                                                            _vm._v(\n                                                              _vm._s(tr.name)\n                                                            )\n                                                          ]\n                                                        )\n                                                      ]),\n                                                      _c(\"vs-td\", [\n                                                        _c(\n                                                          \"p\",\n                                                          {\n                                                            staticClass:\n                                                              \"gg-media-table-text product-category\"\n                                                          },\n                                                          [\n                                                            _vm._v(\n                                                              _vm._s(\n                                                                tr.description\n                                                              )\n                                                            )\n                                                          ]\n                                                        )\n                                                      ]),\n                                                      _c(\"vs-td\", [\n                                                        _c(\n                                                          \"p\",\n                                                          {\n                                                            staticClass:\n                                                              \"gg-media-table-text product-price\"\n                                                          },\n                                                          [\n                                                            _vm._v(\n                                                              _vm._s(\n                                                                tr.filename\n                                                              )\n                                                            )\n                                                          ]\n                                                        )\n                                                      ]),\n                                                      _c(\"vs-td\", [\n                                                        _c(\n                                                          \"p\",\n                                                          {\n                                                            staticClass:\n                                                              \"gg-media-table-text product-price\"\n                                                          },\n                                                          [\n                                                            _vm._v(\n                                                              _vm._s(\n                                                                _vm._f(\n                                                                  \"readableBytes\"\n                                                                )(tr.size)\n                                                              )\n                                                            )\n                                                          ]\n                                                        )\n                                                      ]),\n                                                      _c(\"vs-td\", [\n                                                        _c(\n                                                          \"p\",\n                                                          {\n                                                            staticClass:\n                                                              \"gg-media-table-text product-price\"\n                                                          },\n                                                          [\n                                                            _vm._v(\n                                                              _vm._s(\n                                                                _vm._f(\"date\")(\n                                                                  tr.uploaded_at,\n                                                                  \"DD MMMM YYYY\"\n                                                                )\n                                                              )\n                                                            )\n                                                          ]\n                                                        )\n                                                      ])\n                                                    ],\n                                                    1\n                                                  )\n                                                }),\n                                                1\n                                              )\n                                            ]\n                                          }\n                                        }\n                                      ],\n                                      null,\n                                      true\n                                    ),\n                                    model: {\n                                      value:\n                                        _vm.mySelf[files.key.replace(/ /g, \"\")],\n                                      callback: function($$v) {\n                                        _vm.$set(\n                                          _vm.mySelf,\n                                          files.key.replace(/ /g, \"\"),\n                                          $$v\n                                        )\n                                      },\n                                      expression:\n                                        \"mySelf[files.key.replace(/ /g, '')]\"\n                                    }\n                                  },\n                                  [\n                                    _c(\n                                      \"template\",\n                                      { slot: \"thead\" },\n                                      [\n                                        _c(\n                                          \"vs-th\",\n                                          {\n                                            staticStyle: {\n                                              \"max-width\": \"15%\",\n                                              \"min-width\": \"15%\",\n                                              width: \"15%\"\n                                            }\n                                          },\n                                          [_vm._v(\"Name\")]\n                                        ),\n                                        _c(\n                                          \"vs-th\",\n                                          {\n                                            staticStyle: {\n                                              \"max-width\": \"30%\",\n                                              \"min-width\": \"30%\",\n                                              width: \"30%\"\n                                            }\n                                          },\n                                          [_vm._v(\"Description\")]\n                                        ),\n                                        _c(\n                                          \"vs-th\",\n                                          {\n                                            staticStyle: {\n                                              \"max-width\": \"30%\",\n                                              \"min-width\": \"30%\",\n                                              width: \"30%\"\n                                            }\n                                          },\n                                          [_vm._v(\"File name\")]\n                                        ),\n                                        _c(\n                                          \"vs-th\",\n                                          {\n                                            staticStyle: {\n                                              \"max-width\": \"10%\",\n                                              \"min-width\": \"10%\",\n                                              width: \"10%\"\n                                            }\n                                          },\n                                          [_vm._v(\"File size\")]\n                                        ),\n                                        _c(\n                                          \"vs-th\",\n                                          {\n                                            staticStyle: {\n                                              \"max-width\": \"15%\",\n                                              \"min-width\": \"15%\",\n                                              width: \"15%\"\n                                            }\n                                          },\n                                          [_vm._v(\"Uploaded at\")]\n                                        )\n                                      ],\n                                      1\n                                    )\n                                  ],\n                                  2\n                                )\n                              ],\n                              1\n                            )\n                          : _vm._e()\n                      ])\n                    }),\n                    0\n                  )\n                ],\n                1\n              )\n            : _vm._e()\n        ],\n        1\n      ),\n      _c(\n        \"vs-popup\",\n        {\n          staticClass: \"holamundo\",\n          attrs: { active: _vm.showUploadPopup, title: \"Upload document\" },\n          on: {\n            \"update:active\": function($event) {\n              _vm.showUploadPopup = $event\n            }\n          }\n        },\n        [\n          _c(\n            \"div\",\n            {\n              staticClass:\n                \"vs-component vs-con-input-label vs-input w-full no-icon-border vs-input-primary is-label-placeholder\"\n            },\n            [\n              _c(\"input\", {\n                directives: [\n                  {\n                    name: \"model\",\n                    rawName: \"v-model\",\n                    value: _vm.newMedia.name,\n                    expression: \"newMedia.name\"\n                  }\n                ],\n                staticClass: \"w-full vs-inputx vs-input--input normal hasValue\",\n                attrs: {\n                  name: \"media_name\",\n                  autocomplete: \"off\",\n                  \"label-placeholder\": \"Name\"\n                },\n                domProps: { value: _vm.newMedia.name },\n                on: {\n                  input: function($event) {\n                    if ($event.target.composing) {\n                      return\n                    }\n                    _vm.$set(_vm.newMedia, \"name\", $event.target.value)\n                  }\n                }\n              }),\n              _c(\n                \"span\",\n                {\n                  staticClass:\n                    \"input-span-placeholder vs-input--placeholder normal normal vs-placeholder-label\"\n                },\n                [_vm._v(\"Name\")]\n              )\n            ]\n          ),\n          _c(\n            \"div\",\n            {\n              staticClass:\n                \"vs-component vs-con-input-label no-border vs-input w-full no-icon-border vs-input-primary is-label-placeholder mt-8\"\n            },\n            [\n              _c(\"vs-textarea\", {\n                staticClass:\n                  \"w-full select-large vs-inputx vs-input--input normal reduce-text-area-margin hasValue no-padding\",\n                attrs: {\n                  name: \"description\",\n                  type: \"number\",\n                  autocomplete: \"off\",\n                  \"label-placeholder\": \"Description\",\n                  rows: \"3\"\n                },\n                model: {\n                  value: _vm.newMedia.description,\n                  callback: function($$v) {\n                    _vm.$set(_vm.newMedia, \"description\", $$v)\n                  },\n                  expression: \"newMedia.description\"\n                }\n              }),\n              _c(\n                \"span\",\n                {\n                  staticClass:\n                    \"input-span-placeholder vs-input--placeholder normal normal vs-placeholder-label\"\n                },\n                [_vm._v(\"Description\")]\n              )\n            ],\n            1\n          ),\n          _vm.isAdmin()\n            ? _c(\n                \"div\",\n                {\n                  staticClass:\n                    \"vs-component vs-input w-full no-icon-border vs-input-primary is-label-placeholder mb-8\"\n                },\n                [\n                  _c(\n                    \"label\",\n                    {\n                      staticClass: \"form-control-placeholder gg-default-label\"\n                    },\n                    [_vm._v(\"Folder\")]\n                  ),\n                  _c(\"Multiselect\", {\n                    attrs: {\n                      options: _vm.folderNames,\n                      \"tag-placeholder\": \"Select or write folder\",\n                      taggable: true,\n                      label: \"name\",\n                      \"track-by\": \"name\",\n                      multiple: false\n                    },\n                    on: { tag: _vm.addFolderName },\n                    model: {\n                      value: _vm.newMedia.folderName,\n                      callback: function($$v) {\n                        _vm.$set(_vm.newMedia, \"folderName\", $$v)\n                      },\n                      expression: \"newMedia.folderName\"\n                    }\n                  })\n                ],\n                1\n              )\n            : _vm._e(),\n          _c(\n            \"file-uploader\",\n            {\n              staticClass: \"h-100\",\n              attrs: { options: _vm.flowConfig },\n              on: {\n                fileSubmitted: _vm.onFileSubmitted,\n                fileSuccess: _vm.onFileSuccess\n              }\n            },\n            [\n              _c(\"div\", { staticClass: \"row h-100\" }, [\n                _c(\n                  \"div\",\n                  { staticClass: \"col-sm-12 text-center file-uploader\" },\n                  [\n                    _c(\"img\", {\n                      attrs: {\n                        alt: \"\",\n                        src: \"assets/drag-drop.svg\",\n                        width: \"40%\"\n                      }\n                    })\n                  ]\n                ),\n                _vm.flow && _vm.flow.files && _vm.flow.files.length > 0\n                  ? _c(\"div\", { staticClass: \"text-center\" }, [\n                      _c(\"p\", [_vm._v(_vm._s(_vm.flow.files[0].name))])\n                    ])\n                  : _vm._e()\n              ])\n            ]\n          ),\n          _vm.flow.progress && _vm.flow.progress() > 0\n            ? _c(\"vs-progress\", {\n                attrs: { percent: _vm.flow.progress() * 100, color: \"primary\" }\n              })\n            : _vm._e(),\n          _c(\n            \"div\",\n            { staticClass: \"justify-between my-5\" },\n            [\n              _c(\n                \"vs-button\",\n                {\n                  staticClass: \"mr-2\",\n                  attrs: {\n                    color: \"primary\",\n                    disabled: !(\n                      _vm.flow &&\n                      _vm.flow.files &&\n                      _vm.flow.files.length > 0 &&\n                      _vm.newMedia.name &&\n                      _vm.newMedia.description\n                    )\n                  },\n                  on: { click: _vm.upload }\n                },\n                [_vm._v(\"\\n                Upload\\n            \")]\n              ),\n              _c(\n                \"vs-button\",\n                {\n                  staticClass: \"mr-2\",\n                  attrs: { color: \"warning\" },\n                  on: {\n                    click: function($event) {\n                      _vm.showUploadPopup = false\n                    }\n                  }\n                },\n                [_vm._v(\"Cancel\")]\n              )\n            ],\n            1\n          )\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL2NvbXBvbmVudHMvRGV0YWlscy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTBmODY0ZGYmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvY29tcG9uZW50cy9EZXRhaWxzLnZ1ZT9iMGJkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICBbXG4gICAgICBfYyhcInZ4LWNhcmRcIiwgW1xuICAgICAgICBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicC04XCIgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJ2cy1yb3dcIixcbiAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgbXktNCBtYi0xNlwiIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwidnMtY29sXCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInctNC81XCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnByb2plY3QuY2FuX3JlcXVlc3RfcXVvdGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1yLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJwcmltYXJ5XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnJlcXVlc3RRdW90YXRpb24gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0IFF1b3RhdGlvblxcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICBfdm0ucHJvamVjdC5jYW5fYWNjZXB0X3F1b3RhdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgY29sb3I6IFwicHJpbWFyeVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dSZXNwb25kUG9wdXAgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25kXFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgIF92bS5wcm9qZWN0LmNhbl91cGRhdGVfc3RhdHVzICYmIF92bS5zdGF0dXNlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiTXVsdGlzZWxlY3RcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLnN0YXR1c2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwidmFsdWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zZWxlY3RlZFN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3RlZFN0YXR1cyA9ICQkdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlbGVjdGVkU3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJ2cy1jb2xcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidy0xLzUgdGV4dC1yaWdodFwiIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBjb2xvcjogXCJ3YXJuaW5nXCIgfSwgb246IHsgY2xpY2s6IF92bS5iYWNrIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiQmFja1wiKV1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJ2cy1wb3B1cFwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaG9sYW11bmRvXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgYWN0aXZlOiBfdm0uc2hvd1Jlc3BvbmRQb3B1cCwgdGl0bGU6IFwiUmVzcG9uZFwiIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIFwidXBkYXRlOmFjdGl2ZVwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dSZXNwb25kUG9wdXAgPSAkZXZlbnRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgIFwidnMtY29tcG9uZW50IHZzLWNvbi1pbnB1dC1sYWJlbCBuby1ib3JkZXIgdnMtaW5wdXQgdy1mdWxsIG5vLWljb24tYm9yZGVyIHZzLWlucHV0LXByaW1hcnkgaXMtbGFiZWwtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10ZXh0YXJlYVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJyZXF1aXJlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICBcInctZnVsbCB2cy1pbnB1dCB2cy1pbnB1dC0taW5wdXQgbm9ybWFsIGhhc1ZhbHVlIG5vLXBhZGRpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXZ2LXZhbGlkYXRlLW9uXCI6IFwiYmx1clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJSZXNwb25kXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzOiBcIjVcIlxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ucmVqZWN0aW9uLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5yZWplY3Rpb24sIFwibWVzc2FnZVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJyZWplY3Rpb24ubWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwianVzdGlmeS1iZXR3ZWVuIG15LTVcIiB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1yLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInByaW1hcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0ucmVqZWN0aW9uLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnJlc3BvbmQgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIlNhdmVcXG4gICAgICAgICAgICAgICAgICAgIFwiKV1cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJ3YXJuaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd1Jlc3BvbmRQb3B1cCA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJDYW5jZWxcIildXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwidnMtcm93XCIsXG4gICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidy1mdWxsXCIgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFwidnMtY29sXCIsIHsgc3RhdGljQ2xhc3M6IFwidy0xLzRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctNC81XCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNyYzogX3ZtLnByb2plY3QubG9nbywgYWx0OiBcIlwiIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgX2MoXCJ2cy1jb2xcIiwgeyBzdGF0aWNDbGFzczogXCJ3LTMvNFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidGFibGVcIiwge30sIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ0clwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0aFwiLCB7IHN0YXRpY0NsYXNzOiBcInYtdGV4dC10b3BcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJDbGllbnRcIilcbiAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS5wcm9qZWN0LmNsaWVudCkpXSlcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwidHJcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGhcIiwgeyBzdGF0aWNDbGFzczogXCJ2LXRleHQtdG9wXCIgfSwgW192bS5fdihcIk5hbWVcIildKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS5wcm9qZWN0Lm5hbWUpKV0pXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInRyXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInRoXCIsIHsgc3RhdGljQ2xhc3M6IFwidi10ZXh0LXRvcFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIkxvY2F0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0ZFwiLCBbX3ZtLl92KF92bS5fcyhfdm0ucHJvamVjdC5sb2NhdGlvbiB8fCBcIm4vZFwiKSldKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ0clwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0aFwiLCB7IHN0YXRpY0NsYXNzOiBcInYtdGV4dC10b3BcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJQZXJzb24gUmVzcG9uc2libGVcIilcbiAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnByb2plY3QucGVyc29uX3Jlc3BvbnNpYmxlIHx8IFwibi9kXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInRyXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInRoXCIsIHsgc3RhdGljQ2xhc3M6IFwidi10ZXh0LXRvcFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIlBlcnNvbiBSZXNwb25zaWJsZSBFbWFpbFwiKVxuICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFpbHRvOlwiICsgX3ZtLnByb2plY3QucGVyc29uX3Jlc3BvbnNpYmxlX2VtYWlsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0ucHJvamVjdC5wZXJzb25fcmVzcG9uc2libGVfZW1haWwpKV1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ0clwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0aFwiLCB7IHN0YXRpY0NsYXNzOiBcInYtdGV4dC10b3BcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJQZXJzb24gUmVzcG9uc2libGUgUGhvbmVcIilcbiAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5wcm9qZWN0LnBlcnNvbl9yZXNwb25zaWJsZV9waG9uZSB8fCBcIm4vZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInRyXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInRoXCIsIHsgc3RhdGljQ2xhc3M6IFwidi10ZXh0LXRvcFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIkR1ZSBEYXRlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0ZFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2YoXCJkYXRlXCIpKF92bS5wcm9qZWN0LmR1ZV9kYXRlLCBcIkREIE1NTSBZWVlZXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ0clwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0aFwiLCB7IHN0YXRpY0NsYXNzOiBcInYtdGV4dC10b3BcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJTZXJ2aWNlc1wiKVxuICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5wcm9qZWN0LnNlcnZpY2VzLCBmdW5jdGlvbihzZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLWNoaXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHNlcnZpY2UuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJwcmltYXJ5XCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3Moc2VydmljZS5uYW1lKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdLFxuICAgICAgICAgIDFcbiAgICAgICAgKVxuICAgICAgXSksXG4gICAgICBfYyhcbiAgICAgICAgXCJ2eC1jYXJkXCIsXG4gICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibXktNFwiIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidnMtcm93XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInctZnVsbFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwidnMtY29sXCIsIHsgc3RhdGljQ2xhc3M6IFwidy0xLzJcIiB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXCJoMlwiLCBbX3ZtLl92KFwiRG9jdW1lbnQgbWFuYWdlbWVudFwiKV0pXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInZzLWNvbFwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidy0xLzJcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF92bS5oYXNTZWxlY3RlZEZpbGVzKClcbiAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0IG1sLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5kb3dubG9hZE1lZGlhIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRcXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgIF92bS5wcm9qZWN0LmNhbl91cGxvYWRfZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0IG1sLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5zaG93VXBsb2FkZXJQb3B1cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgIFVwbG9hZFxcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgX3ZtLnByb2plY3QuY2FuX2RlbGV0ZV9maWxlcyAmJiBfdm0uaGFzU2VsZWN0ZWRGaWxlcygpXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJmbG9hdC1yaWdodCBtbC0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGNvbG9yOiBcImRhbmdlclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uZGVsZXRlTWVkaWEgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICBEZWxldGVcXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgICksXG4gICAgICAgICAgIV92bS5wcm9qZWN0LmZpbGVzIHx8IF92bS5wcm9qZWN0LmZpbGVzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcInZzLXJvd1wiLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidnMtY29sXCIsIHsgc3RhdGljQ2xhc3M6IFwibXktOFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJoNVwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtd2FybmluZ1wiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJObyBmaWxlcyB3ZXJlIHVwbG9hZGVkIGZvciB0aGlzIHByb2plY3QuXCIpXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5wcm9qZWN0LmZpbGVzICYmIF92bS5wcm9qZWN0LmZpbGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJ2cy1yb3dcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJ2cy1jb2xcIixcbiAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJteS04XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5ncm91cGVkRmlsZXMsIGZ1bmN0aW9uKGZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFwiZGl2XCIsIHsga2V5OiBmaWxlcy5rZXkgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMua2V5ICYmIF92bS5teVNlbGZbZmlsZXMua2V5LnJlcGxhY2UoLyAvZywgXCJcIildXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJteS00XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJoM1wiLCB7IHN0YXRpY0NsYXNzOiBcIm1iLTJcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhmaWxlcy5rZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10YWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogXCJnZ0RvY3VtZW50VGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZkluRm9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgbXVsdGlwbGU6IFwiXCIsIGRhdGE6IGZpbGVzLmRhdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGlucHV0OiBfdm0uc2VsZWN0ZWRJdGVtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZWRTbG90czogX3ZtLl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZWYuZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0Ym9keVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKGRhdGEsIGZ1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXh0clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXRyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBpbmRleHRyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgZGF0YTogdHIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10ZFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImdnLW1lZGlhLXRhYmxlLXRleHQgcHJvZHVjdC1uYW1lIGZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKHRyLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGRcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJnZy1tZWRpYS10YWJsZS10ZXh0IHByb2R1Y3QtY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHIuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLXRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZ2ctbWVkaWEtdGFibGUtdGV4dCBwcm9kdWN0LXByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyLmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10ZFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImdnLW1lZGlhLXRhYmxlLXRleHQgcHJvZHVjdC1wcmljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInJlYWRhYmxlQnl0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkodHIuc2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLXRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZ2ctbWVkaWEtdGFibGUtdGV4dCBwcm9kdWN0LXByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fZihcImRhdGVcIikoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ci51cGxvYWRlZF9hdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiREQgTU1NTSBZWVlZXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5teVNlbGZbZmlsZXMua2V5LnJlcGxhY2UoLyAvZywgXCJcIildLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ubXlTZWxmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMua2V5LnJlcGxhY2UoLyAvZywgXCJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJHZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJteVNlbGZbZmlsZXMua2V5LnJlcGxhY2UoLyAvZywgJycpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0ZW1wbGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNsb3Q6IFwidGhlYWRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtd2lkdGhcIjogXCIxNSVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1pbi13aWR0aFwiOiBcIjE1JVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE1JVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiTmFtZVwiKV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10aFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNTdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWF4LXdpZHRoXCI6IFwiMzAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtaW4td2lkdGhcIjogXCIzMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIzMCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIkRlc2NyaXB0aW9uXCIpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtd2lkdGhcIjogXCIzMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1pbi13aWR0aFwiOiBcIjMwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjMwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiRmlsZSBuYW1lXCIpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtd2lkdGhcIjogXCIxMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1pbi13aWR0aFwiOiBcIjEwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiRmlsZSBzaXplXCIpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLXRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtd2lkdGhcIjogXCIxNSVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1pbi13aWR0aFwiOiBcIjE1JVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE1JVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiVXBsb2FkZWQgYXRcIildXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApLFxuICAgICAgX2MoXG4gICAgICAgIFwidnMtcG9wdXBcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImhvbGFtdW5kb1wiLFxuICAgICAgICAgIGF0dHJzOiB7IGFjdGl2ZTogX3ZtLnNob3dVcGxvYWRQb3B1cCwgdGl0bGU6IFwiVXBsb2FkIGRvY3VtZW50XCIgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgXCJ1cGRhdGU6YWN0aXZlXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICBfdm0uc2hvd1VwbG9hZFBvcHVwID0gJGV2ZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICBcInZzLWNvbXBvbmVudCB2cy1jb24taW5wdXQtbGFiZWwgdnMtaW5wdXQgdy1mdWxsIG5vLWljb24tYm9yZGVyIHZzLWlucHV0LXByaW1hcnkgaXMtbGFiZWwtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld01lZGlhLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3TWVkaWEubmFtZVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgdnMtaW5wdXR4IHZzLWlucHV0LS1pbnB1dCBub3JtYWwgaGFzVmFsdWVcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJtZWRpYV9uYW1lXCIsXG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiTmFtZVwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLm5ld01lZGlhLm5hbWUgfSxcbiAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ubmV3TWVkaWEsIFwibmFtZVwiLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICBcImlucHV0LXNwYW4tcGxhY2Vob2xkZXIgdnMtaW5wdXQtLXBsYWNlaG9sZGVyIG5vcm1hbCBub3JtYWwgdnMtcGxhY2Vob2xkZXItbGFiZWxcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihcIk5hbWVcIildXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgXCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIG5vLWJvcmRlciB2cy1pbnB1dCB3LWZ1bGwgbm8taWNvbi1ib3JkZXIgdnMtaW5wdXQtcHJpbWFyeSBpcy1sYWJlbC1wbGFjZWhvbGRlciBtdC04XCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwidnMtdGV4dGFyZWFcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgXCJ3LWZ1bGwgc2VsZWN0LWxhcmdlIHZzLWlucHV0eCB2cy1pbnB1dC0taW5wdXQgbm9ybWFsIHJlZHVjZS10ZXh0LWFyZWEtbWFyZ2luIGhhc1ZhbHVlIG5vLXBhZGRpbmdcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJEZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgcm93czogXCIzXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld01lZGlhLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ubmV3TWVkaWEsIFwiZGVzY3JpcHRpb25cIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3TWVkaWEuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICBcImlucHV0LXNwYW4tcGxhY2Vob2xkZXIgdnMtaW5wdXQtLXBsYWNlaG9sZGVyIG5vcm1hbCBub3JtYWwgdnMtcGxhY2Vob2xkZXItbGFiZWxcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihcIkRlc2NyaXB0aW9uXCIpXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLmlzQWRtaW4oKVxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICBcInZzLWNvbXBvbmVudCB2cy1pbnB1dCB3LWZ1bGwgbm8taWNvbi1ib3JkZXIgdnMtaW5wdXQtcHJpbWFyeSBpcy1sYWJlbC1wbGFjZWhvbGRlciBtYi04XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImxhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJmb3JtLWNvbnRyb2wtcGxhY2Vob2xkZXIgZ2ctZGVmYXVsdC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJGb2xkZXJcIildXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgX2MoXCJNdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLmZvbGRlck5hbWVzLFxuICAgICAgICAgICAgICAgICAgICAgIFwidGFnLXBsYWNlaG9sZGVyXCI6IFwiU2VsZWN0IG9yIHdyaXRlIGZvbGRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgIHRhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbjogeyB0YWc6IF92bS5hZGRGb2xkZXJOYW1lIH0sXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uZXdNZWRpYS5mb2xkZXJOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdNZWRpYSwgXCJmb2xkZXJOYW1lXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3TWVkaWEuZm9sZGVyTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImZpbGUtdXBsb2FkZXJcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaC0xMDBcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHsgb3B0aW9uczogX3ZtLmZsb3dDb25maWcgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBmaWxlU3VibWl0dGVkOiBfdm0ub25GaWxlU3VibWl0dGVkLFxuICAgICAgICAgICAgICAgIGZpbGVTdWNjZXNzOiBfdm0ub25GaWxlU3VjY2Vzc1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInJvdyBoLTEwMFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImNvbC1zbS0xMiB0ZXh0LWNlbnRlciBmaWxlLXVwbG9hZGVyXCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IFwiYXNzZXRzL2RyYWctZHJvcC5zdmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjQwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgX3ZtLmZsb3cgJiYgX3ZtLmZsb3cuZmlsZXMgJiYgX3ZtLmZsb3cuZmlsZXMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtY2VudGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFwicFwiLCBbX3ZtLl92KF92bS5fcyhfdm0uZmxvdy5maWxlc1swXS5uYW1lKSldKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLmZsb3cucHJvZ3Jlc3MgJiYgX3ZtLmZsb3cucHJvZ3Jlc3MoKSA+IDBcbiAgICAgICAgICAgID8gX2MoXCJ2cy1wcm9ncmVzc1wiLCB7XG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgcGVyY2VudDogX3ZtLmZsb3cucHJvZ3Jlc3MoKSAqIDEwMCwgY29sb3I6IFwicHJpbWFyeVwiIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJqdXN0aWZ5LWJldHdlZW4gbXktNVwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXItMlwiLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIShcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uZmxvdyAmJlxuICAgICAgICAgICAgICAgICAgICAgIF92bS5mbG93LmZpbGVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLmZsb3cuZmlsZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgIF92bS5uZXdNZWRpYS5uYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLm5ld01lZGlhLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnVwbG9hZCB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgIFVwbG9hZFxcbiAgICAgICAgICAgIFwiKV1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJ3YXJuaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd1VwbG9hZFBvcHVwID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihcIkNhbmNlbFwiKV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    [\n      _c(\"vx-card\", [\n        _c(\n          \"form\",\n          {\n            attrs: { autocomplete: \"off\" },\n            on: {\n              submit: function($event) {\n                $event.preventDefault()\n                return _vm.save($event)\n              }\n            }\n          },\n          [\n            _c(\n              \"vs-row\",\n              { staticClass: \"w-full\" },\n              [\n                _c(\"vs-col\", { staticClass: \"w-2/3\" }, [\n                  _c(\"h2\", [_vm._v(\"Project data\")])\n                ]),\n                _c(\n                  \"vs-col\",\n                  { staticClass: \"w-1/3 text-right\" },\n                  [\n                    _vm.project.can_request_quotation\n                      ? _c(\n                          \"vs-button\",\n                          {\n                            staticClass: \"mr-2\",\n                            attrs: { color: \"primary\" },\n                            on: { click: _vm.requestQuotation }\n                          },\n                          [\n                            _vm._v(\n                              \"\\n                        Request Quotation\\n                    \"\n                            )\n                          ]\n                        )\n                      : _vm._e()\n                  ],\n                  1\n                )\n              ],\n              1\n            ),\n            _c(\n              \"vs-row\",\n              { staticClass: \"w-full\" },\n              [\n                _c(\n                  \"vs-col\",\n                  { staticClass: \"w-1/5\" },\n                  [\n                    _c(\"h3\", { staticClass: \"my-4 text-center\" }, [\n                      _vm._v(\" \")\n                    ]),\n                    _c(\"media-upload\", {\n                      attrs: {\n                        className: \"user-avatar\",\n                        loading: _vm.loading,\n                        resource: _vm.project.logo,\n                        \"is-editable\": _vm.project.can_edit\n                      },\n                      on: { fileAdded: _vm.imageSelected }\n                    })\n                  ],\n                  1\n                ),\n                _c(\n                  \"vs-col\",\n                  { staticClass: \"w-4/5\" },\n                  [\n                    _vm.isAdmin()\n                      ? _c(\n                          \"div\",\n                          [\n                            _c(\n                              \"label\",\n                              { staticClass: \"block gg-input-label\" },\n                              [_vm._v(\"Client\")]\n                            ),\n                            _c(\"vue-simple-suggest\", {\n                              ref: \"suggestComponent\",\n                              attrs: {\n                                debounce: 500,\n                                \"filter-by-query\": true,\n                                list: _vm.getClients,\n                                \"max-suggestions\": 10,\n                                \"min-length\": 2,\n                                mode: \"select\",\n                                \"prevent-submit\": true,\n                                \"display-attribute\": \"fullName\",\n                                placeholder: \"Client\",\n                                \"value-attribute\": \"id\"\n                              },\n                              on: { select: _vm.setClientId },\n                              scopedSlots: _vm._u(\n                                [\n                                  {\n                                    key: \"misc-item-above\",\n                                    fn: function(ref) {\n                                      var suggestions = ref.suggestions\n                                      return [\n                                        suggestions.length === 0\n                                          ? _c(\n                                              \"div\",\n                                              { staticClass: \"misc-item\" },\n                                              [\n                                                _c(\"span\", [\n                                                  _vm._v(\"No results\")\n                                                ])\n                                              ]\n                                            )\n                                          : _vm._e()\n                                      ]\n                                    }\n                                  },\n                                  {\n                                    key: \"suggestion-item\",\n                                    fn: function(scope) {\n                                      return _c(\n                                        \"div\",\n                                        {\n                                          attrs: {\n                                            title: scope.suggestion.description\n                                          }\n                                        },\n                                        [\n                                          _c(\"div\", { staticClass: \"text\" }, [\n                                            _c(\"span\", {\n                                              domProps: {\n                                                innerHTML: _vm._s(\n                                                  _vm.boldenSuggestion(scope)\n                                                )\n                                              }\n                                            })\n                                          ])\n                                        ]\n                                      )\n                                    }\n                                  },\n                                  {\n                                    key: \"misc-item-below\",\n                                    fn: function(ref) {\n                                      var suggestions = ref.suggestions\n                                      return _vm.isLoadingClients\n                                        ? _c(\n                                            \"div\",\n                                            { staticClass: \"misc-item\" },\n                                            [_c(\"span\", [_vm._v(\"Loading...\")])]\n                                          )\n                                        : _vm._e()\n                                    }\n                                  }\n                                ],\n                                null,\n                                true\n                              ),\n                              model: {\n                                value: _vm.project.client,\n                                callback: function($$v) {\n                                  _vm.$set(_vm.project, \"client\", $$v)\n                                },\n                                expression: \"project.client\"\n                              }\n                            })\n                          ],\n                          1\n                        )\n                      : _vm._e(),\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"required\",\n                          expression: \"'required'\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"name\",\n                        icon: \"icon icon-hash\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Name\",\n                        disabled: !_vm.project.can_edit\n                      },\n                      model: {\n                        value: _vm.project.name,\n                        callback: function($$v) {\n                          _vm.$set(_vm.project, \"name\", $$v)\n                        },\n                        expression: \"project.name\"\n                      }\n                    }),\n                    _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                      _vm._v(_vm._s(_vm.errors.first(\"name\")))\n                    ]),\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"required\",\n                          expression: \"'required'\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"location\",\n                        icon: \"icon icon-map\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Location\",\n                        disabled: !_vm.project.can_edit\n                      },\n                      model: {\n                        value: _vm.project.location,\n                        callback: function($$v) {\n                          _vm.$set(_vm.project, \"location\", $$v)\n                        },\n                        expression: \"project.location\"\n                      }\n                    }),\n                    _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                      _vm._v(_vm._s(_vm.errors.first(\"location\")))\n                    ]),\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"required\",\n                          expression: \"'required'\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"responsible\",\n                        icon: \"icon icon-align-left\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Person responsible\",\n                        disabled: !_vm.project.can_edit\n                      },\n                      model: {\n                        value: _vm.project.person_responsible,\n                        callback: function($$v) {\n                          _vm.$set(_vm.project, \"person_responsible\", $$v)\n                        },\n                        expression: \"project.person_responsible\"\n                      }\n                    }),\n                    _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                      _vm._v(_vm._s(_vm.errors.first(\"responsible\")))\n                    ]),\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"required\",\n                          expression: \"'required'\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"Person responsible's email\",\n                        icon: \"icon icon-mail\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Person responsible's email\",\n                        disabled: !_vm.project.can_edit\n                      },\n                      model: {\n                        value: _vm.project.person_responsible_email,\n                        callback: function($$v) {\n                          _vm.$set(_vm.project, \"person_responsible_email\", $$v)\n                        },\n                        expression: \"project.person_responsible_email\"\n                      }\n                    }),\n                    _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                      _vm._v(\n                        _vm._s(_vm.errors.first(\"Person responsible's email\"))\n                      )\n                    ]),\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"required\",\n                          expression: \"'required'\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"Person responsible's phone\",\n                        icon: \"icon icon-phone\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Person responsible's phone\",\n                        disabled: !_vm.project.can_edit\n                      },\n                      model: {\n                        value: _vm.project.person_responsible_phone,\n                        callback: function($$v) {\n                          _vm.$set(_vm.project, \"person_responsible_phone\", $$v)\n                        },\n                        expression: \"project.person_responsible_phone\"\n                      }\n                    }),\n                    _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                      _vm._v(\n                        _vm._s(_vm.errors.first(\"Person responsible's phone\"))\n                      )\n                    ]),\n                    _c(\n                      \"div\",\n                      {\n                        staticClass:\n                          \"vs-component vs-con-input-label vs-input w-full no-icon-border vs-input-primary is-label-placeholder\"\n                      },\n                      [\n                        _c(\"datepicker\", {\n                          staticClass:\n                            \"vs-inputx vs-input--input normal hasValue no-padding border-none\",\n                          attrs: {\n                            placeholder: \"Select Date\",\n                            disabled: !_vm.project.can_edit,\n                            label: \"Due date\"\n                          },\n                          model: {\n                            value: _vm.project.due_date,\n                            callback: function($$v) {\n                              _vm.$set(_vm.project, \"due_date\", $$v)\n                            },\n                            expression: \"project.due_date\"\n                          }\n                        }),\n                        _c(\n                          \"span\",\n                          {\n                            staticClass:\n                              \"input-span-placeholder vs-input--placeholder normal normal vs-placeholder-label\"\n                          },\n                          [_vm._v(\"Due Date\")]\n                        )\n                      ],\n                      1\n                    )\n                  ],\n                  1\n                )\n              ],\n              1\n            ),\n            _c(\n              \"vs-row\",\n              { staticClass: \"w-full\" },\n              [\n                _c(\"vs-col\", { staticClass: \"w-full\" }, [\n                  _c(\n                    \"div\",\n                    {\n                      staticClass:\n                        \"vs-component vs-con-input-label vs-input w-full no-icon-border vs-input-primary is-label-placeholder\"\n                    },\n                    [\n                      _c(\n                        \"label\",\n                        {\n                          staticClass: \"form-control-placeholder gg-input-label\"\n                        },\n                        [_vm._v(\"Services\")]\n                      ),\n                      _c(\"Multiselect\", {\n                        attrs: {\n                          options: _vm.services,\n                          searchable: false,\n                          label: \"name\",\n                          \"track-by\": \"name\",\n                          multiple: true\n                        },\n                        model: {\n                          value: _vm.project.services,\n                          callback: function($$v) {\n                            _vm.$set(_vm.project, \"services\", $$v)\n                          },\n                          expression: \"project.services\"\n                        }\n                      })\n                    ],\n                    1\n                  ),\n                  _vm.isNew\n                    ? _c(\n                        \"div\",\n                        {\n                          staticClass:\n                            \"vs-component no-border vs-con-input-label vs-input w-full no-icon-border vs-input-primary is-label-placeholder\"\n                        },\n                        [\n                          _c(\"vs-textarea\", {\n                            staticClass:\n                              \"w-full select-large vs-inputx vs-input--input normal hasValue no-padding\",\n                            attrs: {\n                              \"data-vv-validate-on\": \"blur\",\n                              name: \"notes\",\n                              type: \"number\",\n                              icon: \"icon icon-dollar-sign\",\n                              autocomplete: \"off\",\n                              \"icon-pack\": \"feather\",\n                              \"label-placeholder\": \"Notes\",\n                              rows: \"5\",\n                              disabled: !_vm.project.can_edit\n                            },\n                            model: {\n                              value: _vm.project.notes,\n                              callback: function($$v) {\n                                _vm.$set(_vm.project, \"notes\", $$v)\n                              },\n                              expression: \"project.notes\"\n                            }\n                          }),\n                          _c(\n                            \"span\",\n                            {\n                              staticClass:\n                                \"input-span-placeholder vs-input--placeholder normal normal vs-placeholder-label\"\n                            },\n                            [_vm._v(\"Notes\")]\n                          )\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _c(\n                    \"div\",\n                    { staticClass: \"justify-between my-5\" },\n                    [\n                      _vm.project.can_edit\n                        ? _c(\n                            \"vs-button\",\n                            {\n                              staticClass: \"mr-2\",\n                              attrs: {\n                                color: \"primary\",\n                                disabled: !_vm.validateForm,\n                                button: \"submit\"\n                              }\n                            },\n                            [_vm._v(\"Save\\n                        \")]\n                          )\n                        : _vm._e(),\n                      _c(\n                        \"vs-button\",\n                        {\n                          staticClass: \"mr-2\",\n                          attrs: { color: \"warning\" },\n                          on: { click: _vm.back }\n                        },\n                        [_vm._v(\"Back\")]\n                      )\n                    ],\n                    1\n                  )\n                ])\n              ],\n              1\n            )\n          ],\n          1\n        )\n      ]),\n      _vm.project.can_upload_files\n        ? _c(\n            \"vx-card\",\n            { staticClass: \"my-4\" },\n            [\n              _c(\n                \"vs-row\",\n                { staticClass: \"w-full\" },\n                [\n                  _c(\"vs-col\", { staticClass: \"w-1/2\" }, [\n                    _c(\"h2\", [_vm._v(\"Document management\")])\n                  ]),\n                  _c(\n                    \"vs-col\",\n                    { staticClass: \"w-1/2\" },\n                    [\n                      _vm.selected.length > 0\n                        ? _c(\n                            \"vs-button\",\n                            {\n                              staticClass: \"float-right ml-2\",\n                              attrs: { color: \"danger\" },\n                              on: { click: _vm.deleteMedia }\n                            },\n                            [\n                              _vm._v(\n                                \"\\n                    Delete\\n                \"\n                              )\n                            ]\n                          )\n                        : _vm._e(),\n                      _vm.selected.length > 0\n                        ? _c(\n                            \"vs-button\",\n                            {\n                              staticClass: \"float-right ml-2\",\n                              on: { click: _vm.downloadMedia }\n                            },\n                            [\n                              _vm._v(\n                                \"\\n                    Download\\n                \"\n                              )\n                            ]\n                          )\n                        : _vm._e(),\n                      _c(\n                        \"vs-button\",\n                        {\n                          staticClass: \"float-right\",\n                          on: { click: _vm.showUploaderPopup }\n                        },\n                        [\n                          _vm._v(\n                            \"\\n                    Upload\\n                \"\n                          )\n                        ]\n                      )\n                    ],\n                    1\n                  )\n                ],\n                1\n              ),\n              !_vm.project.files || _vm.project.files.length === 0\n                ? _c(\n                    \"vs-row\",\n                    [\n                      _c(\"vs-col\", { staticClass: \"my-8\" }, [\n                        _c(\"h5\", { staticClass: \"text-warning\" }, [\n                          _vm._v(\"No files were uploaded for this project.\")\n                        ])\n                      ])\n                    ],\n                    1\n                  )\n                : _vm._e(),\n              _vm.project.files && _vm.project.files.length > 0\n                ? _c(\n                    \"vs-row\",\n                    [\n                      _c(\n                        \"vs-col\",\n                        { staticClass: \"my-8\" },\n                        [\n                          _c(\n                            \"vs-table\",\n                            {\n                              ref: \"ggDocumentTable\",\n                              attrs: { multiple: \"\", data: _vm.project.files },\n                              scopedSlots: _vm._u(\n                                [\n                                  {\n                                    key: \"default\",\n                                    fn: function(ref) {\n                                      var data = ref.data\n                                      return [\n                                        _c(\n                                          \"tbody\",\n                                          _vm._l(data, function(tr, indextr) {\n                                            return _c(\n                                              \"vs-tr\",\n                                              {\n                                                key: indextr,\n                                                attrs: { data: tr }\n                                              },\n                                              [\n                                                _c(\"vs-td\", [\n                                                  _c(\n                                                    \"p\",\n                                                    {\n                                                      staticClass:\n                                                        \"product-name font-medium\"\n                                                    },\n                                                    [_vm._v(_vm._s(tr.name))]\n                                                  )\n                                                ]),\n                                                _c(\"vs-td\", [\n                                                  _c(\n                                                    \"p\",\n                                                    {\n                                                      staticClass:\n                                                        \"product-category\"\n                                                    },\n                                                    [\n                                                      _vm._v(\n                                                        _vm._s(tr.description)\n                                                      )\n                                                    ]\n                                                  )\n                                                ]),\n                                                _c(\"vs-td\", [\n                                                  _c(\n                                                    \"p\",\n                                                    {\n                                                      staticClass:\n                                                        \"product-price\"\n                                                    },\n                                                    [\n                                                      _vm._v(\n                                                        _vm._s(tr.filename)\n                                                      )\n                                                    ]\n                                                  )\n                                                ])\n                                              ],\n                                              1\n                                            )\n                                          }),\n                                          1\n                                        )\n                                      ]\n                                    }\n                                  }\n                                ],\n                                null,\n                                false,\n                                1108076069\n                              ),\n                              model: {\n                                value: _vm.selected,\n                                callback: function($$v) {\n                                  _vm.selected = $$v\n                                },\n                                expression: \"selected\"\n                              }\n                            },\n                            [\n                              _c(\n                                \"template\",\n                                { slot: \"thead\" },\n                                [\n                                  _c(\"vs-th\", [_vm._v(\"Name\")]),\n                                  _c(\"vs-th\", [_vm._v(\"Description\")]),\n                                  _c(\"vs-th\", [_vm._v(\"File name\")])\n                                ],\n                                1\n                              )\n                            ],\n                            2\n                          )\n                        ],\n                        1\n                      )\n                    ],\n                    1\n                  )\n                : _vm._e(),\n              _c(\n                \"vs-popup\",\n                {\n                  staticClass: \"holamundo\",\n                  attrs: {\n                    active: _vm.showUploadPopup,\n                    title: \"Upload document\"\n                  },\n                  on: {\n                    \"update:active\": function($event) {\n                      _vm.showUploadPopup = $event\n                    }\n                  }\n                },\n                [\n                  _c(\n                    \"div\",\n                    {\n                      staticClass:\n                        \"vs-component vs-con-input-label vs-input w-full no-icon-border vs-input-primary is-label-placeholder\"\n                    },\n                    [\n                      _c(\"input\", {\n                        directives: [\n                          {\n                            name: \"model\",\n                            rawName: \"v-model\",\n                            value: _vm.newMedia.name,\n                            expression: \"newMedia.name\"\n                          }\n                        ],\n                        staticClass:\n                          \"w-full vs-inputx vs-input--input normal hasValue\",\n                        attrs: {\n                          name: \"media_name\",\n                          autocomplete: \"off\",\n                          \"label-placeholder\": \"Name\"\n                        },\n                        domProps: { value: _vm.newMedia.name },\n                        on: {\n                          input: function($event) {\n                            if ($event.target.composing) {\n                              return\n                            }\n                            _vm.$set(_vm.newMedia, \"name\", $event.target.value)\n                          }\n                        }\n                      }),\n                      _c(\n                        \"span\",\n                        {\n                          staticClass:\n                            \"input-span-placeholder vs-input--placeholder normal normal vs-placeholder-label\"\n                        },\n                        [_vm._v(\"Name\")]\n                      )\n                    ]\n                  ),\n                  _c(\n                    \"div\",\n                    {\n                      staticClass:\n                        \"vs-component vs-con-input-label vs-input w-full no-icon-border no-border vs-input-primary is-label-placeholder mt-8\"\n                    },\n                    [\n                      _c(\"vs-textarea\", {\n                        staticClass:\n                          \"w-full select-large vs-inputx vs-input--input normal hasValue no-padding\",\n                        attrs: {\n                          name: \"description\",\n                          type: \"number\",\n                          autocomplete: \"off\",\n                          \"label-placeholder\": \"Description\",\n                          rows: \"3\"\n                        },\n                        model: {\n                          value: _vm.newMedia.description,\n                          callback: function($$v) {\n                            _vm.$set(_vm.newMedia, \"description\", $$v)\n                          },\n                          expression: \"newMedia.description\"\n                        }\n                      }),\n                      _c(\n                        \"span\",\n                        {\n                          staticClass:\n                            \"input-span-placeholder vs-input--placeholder normal normal vs-placeholder-label\"\n                        },\n                        [_vm._v(\"Description\")]\n                      )\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"file-uploader\",\n                    {\n                      staticClass: \"h-100\",\n                      attrs: { options: _vm.flowConfig },\n                      on: {\n                        fileSubmitted: _vm.onFileSubmitted,\n                        fileSuccess: _vm.onFileSuccess\n                      }\n                    },\n                    [\n                      _c(\"div\", { staticClass: \"row h-100\" }, [\n                        _c(\n                          \"div\",\n                          {\n                            staticClass: \"col-sm-12 text-center file-uploader\"\n                          },\n                          [\n                            _c(\"img\", {\n                              attrs: {\n                                alt: \"\",\n                                src: \"assets/drag-drop.svg\",\n                                width: \"40%\"\n                              }\n                            })\n                          ]\n                        ),\n                        _vm.flow && _vm.flow.files && _vm.flow.files.length > 0\n                          ? _c(\"div\", { staticClass: \"text-center\" }, [\n                              _c(\"p\", [_vm._v(_vm._s(_vm.flow.files[0].name))])\n                            ])\n                          : _vm._e()\n                      ])\n                    ]\n                  ),\n                  _vm.flow.progress && _vm.flow.progress() > 0\n                    ? _c(\"vs-progress\", {\n                        attrs: {\n                          percent: _vm.flow.progress() * 100,\n                          color: \"primary\"\n                        }\n                      })\n                    : _vm._e(),\n                  _c(\n                    \"div\",\n                    { staticClass: \"justify-between my-5\" },\n                    [\n                      _c(\n                        \"vs-button\",\n                        {\n                          staticClass: \"mr-2\",\n                          attrs: {\n                            color: \"primary\",\n                            disabled: !(\n                              _vm.flow &&\n                              _vm.flow.files &&\n                              _vm.flow.files.length > 0 &&\n                              _vm.newMedia.name &&\n                              _vm.newMedia.description\n                            )\n                          },\n                          on: { click: _vm.upload }\n                        },\n                        [\n                          _vm._v(\n                            \"\\n                    Upload\\n                \"\n                          )\n                        ]\n                      ),\n                      _c(\n                        \"vs-button\",\n                        {\n                          staticClass: \"mr-2\",\n                          attrs: { color: \"warning\" },\n                          on: {\n                            click: function($event) {\n                              _vm.showUploadPopup = false\n                            }\n                          }\n                        },\n                        [_vm._v(\"Cancel\")]\n                      )\n                    ],\n                    1\n                  )\n                ],\n                1\n              )\n            ],\n            1\n          )\n        : _vm._e()\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL2NvbXBvbmVudHMvRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGJiNzMyNzcmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvY29tcG9uZW50cy9Gb3JtLnZ1ZT9jZjFjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICBbXG4gICAgICBfYyhcInZ4LWNhcmRcIiwgW1xuICAgICAgICBfYyhcbiAgICAgICAgICBcImZvcm1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhdHRyczogeyBhdXRvY29tcGxldGU6IFwib2ZmXCIgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIHN1Ym1pdDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnNhdmUoJGV2ZW50KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJ2cy1yb3dcIixcbiAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ3LWZ1bGxcIiB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXCJ2cy1jb2xcIiwgeyBzdGF0aWNDbGFzczogXCJ3LTIvM1wiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiaDJcIiwgW192bS5fdihcIlByb2plY3QgZGF0YVwiKV0pXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcInZzLWNvbFwiLFxuICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ3LTEvMyB0ZXh0LXJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnByb2plY3QuY2FuX3JlcXVlc3RfcXVvdGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1yLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJwcmltYXJ5XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnJlcXVlc3RRdW90YXRpb24gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0IFF1b3RhdGlvblxcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcInZzLXJvd1wiLFxuICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInctZnVsbFwiIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwidnMtY29sXCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInctMS81XCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJoM1wiLCB7IHN0YXRpY0NsYXNzOiBcIm15LTQgdGV4dC1jZW50ZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiwqBcIilcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwibWVkaWEtdXBsb2FkXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInVzZXItYXZhdGFyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBfdm0ubG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlOiBfdm0ucHJvamVjdC5sb2dvLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpcy1lZGl0YWJsZVwiOiBfdm0ucHJvamVjdC5jYW5fZWRpdFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHsgZmlsZUFkZGVkOiBfdm0uaW1hZ2VTZWxlY3RlZCB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcInZzLWNvbFwiLFxuICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ3LTQvNVwiIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5pc0FkbWluKClcbiAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImxhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImJsb2NrIGdnLWlucHV0LWxhYmVsXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJDbGllbnRcIildXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZ1ZS1zaW1wbGUtc3VnZ2VzdFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IFwic3VnZ2VzdENvbXBvbmVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2U6IDUwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmaWx0ZXItYnktcXVlcnlcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogX3ZtLmdldENsaWVudHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWF4LXN1Z2dlc3Rpb25zXCI6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1pbi1sZW5ndGhcIjogMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogXCJzZWxlY3RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcmV2ZW50LXN1Ym1pdFwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpc3BsYXktYXR0cmlidXRlXCI6IFwiZnVsbE5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwiQ2xpZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsdWUtYXR0cmlidXRlXCI6IFwiaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IHNlbGVjdDogX3ZtLnNldENsaWVudElkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZWRTbG90czogX3ZtLl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIm1pc2MtaXRlbS1hYm92ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3VnZ2VzdGlvbnMgPSByZWYuc3VnZ2VzdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcIm1pc2MtaXRlbVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiTm8gcmVzdWx0c1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcInN1Z2dlc3Rpb24taXRlbVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uKHNjb3BlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzY29wZS5zdWdnZXN0aW9uLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVySFRNTDogX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uYm9sZGVuU3VnZ2VzdGlvbihzY29wZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIm1pc2MtaXRlbS1iZWxvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3VnZ2VzdGlvbnMgPSByZWYuc3VnZ2VzdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5pc0xvYWRpbmdDbGllbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtaXNjLWl0ZW1cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCJMb2FkaW5nLi4uXCIpXSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ucHJvamVjdC5jbGllbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ucHJvamVjdCwgXCJjbGllbnRcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInByb2plY3QuY2xpZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJyZXF1aXJlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS12di12YWxpZGF0ZS1vblwiOiBcImJsdXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJpY29uIGljb24taGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpY29uLXBhY2tcIjogXCJmZWF0aGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiTmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0ucHJvamVjdC5jYW5fZWRpdFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ucHJvamVjdC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ucHJvamVjdCwgXCJuYW1lXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInByb2plY3QubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1kYW5nZXIgdGV4dC1zbVwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lcnJvcnMuZmlyc3QoXCJuYW1lXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwidnMtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtdmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIncmVxdWlyZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctZnVsbCBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcImxvY2F0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcImljb24gaWNvbi1tYXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIkxvY2F0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIV92bS5wcm9qZWN0LmNhbl9lZGl0XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5wcm9qZWN0LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ucHJvamVjdCwgXCJsb2NhdGlvblwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJwcm9qZWN0LmxvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcImxvY2F0aW9uXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwidnMtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtdmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIncmVxdWlyZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctZnVsbCBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInJlc3BvbnNpYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcImljb24gaWNvbi1hbGlnbi1sZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJQZXJzb24gcmVzcG9uc2libGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLnByb2plY3QuY2FuX2VkaXRcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnByb2plY3QucGVyc29uX3Jlc3BvbnNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ucHJvamVjdCwgXCJwZXJzb25fcmVzcG9uc2libGVcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwicHJvamVjdC5wZXJzb25fcmVzcG9uc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZXJyb3JzLmZpcnN0KFwicmVzcG9uc2libGVcIikpKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJyZXF1aXJlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS12di12YWxpZGF0ZS1vblwiOiBcImJsdXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiUGVyc29uIHJlc3BvbnNpYmxlJ3MgZW1haWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLW1haWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIlBlcnNvbiByZXNwb25zaWJsZSdzIGVtYWlsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIV92bS5wcm9qZWN0LmNhbl9lZGl0XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5wcm9qZWN0LnBlcnNvbl9yZXNwb25zaWJsZV9lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLnByb2plY3QsIFwicGVyc29uX3Jlc3BvbnNpYmxlX2VtYWlsXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInByb2plY3QucGVyc29uX3Jlc3BvbnNpYmxlX2VtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uZXJyb3JzLmZpcnN0KFwiUGVyc29uIHJlc3BvbnNpYmxlJ3MgZW1haWxcIikpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJyZXF1aXJlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS12di12YWxpZGF0ZS1vblwiOiBcImJsdXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiUGVyc29uIHJlc3BvbnNpYmxlJ3MgcGhvbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLXBob25lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJQZXJzb24gcmVzcG9uc2libGUncyBwaG9uZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0ucHJvamVjdC5jYW5fZWRpdFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ucHJvamVjdC5wZXJzb25fcmVzcG9uc2libGVfcGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5wcm9qZWN0LCBcInBlcnNvbl9yZXNwb25zaWJsZV9waG9uZVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJwcm9qZWN0LnBlcnNvbl9yZXNwb25zaWJsZV9waG9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1kYW5nZXIgdGV4dC1zbVwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcIlBlcnNvbiByZXNwb25zaWJsZSdzIHBob25lXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtY29tcG9uZW50IHZzLWNvbi1pbnB1dC1sYWJlbCB2cy1pbnB1dCB3LWZ1bGwgbm8taWNvbi1ib3JkZXIgdnMtaW5wdXQtcHJpbWFyeSBpcy1sYWJlbC1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcImRhdGVwaWNrZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLWlucHV0eCB2cy1pbnB1dC0taW5wdXQgbm9ybWFsIGhhc1ZhbHVlIG5vLXBhZGRpbmcgYm9yZGVyLW5vbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJTZWxlY3QgRGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLnByb2plY3QuY2FuX2VkaXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiRHVlIGRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ucHJvamVjdC5kdWVfZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ucHJvamVjdCwgXCJkdWVfZGF0ZVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInByb2plY3QuZHVlX2RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dC1zcGFuLXBsYWNlaG9sZGVyIHZzLWlucHV0LS1wbGFjZWhvbGRlciBub3JtYWwgbm9ybWFsIHZzLXBsYWNlaG9sZGVyLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIkR1ZSBEYXRlXCIpXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcInZzLXJvd1wiLFxuICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInctZnVsbFwiIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcInZzLWNvbFwiLCB7IHN0YXRpY0NsYXNzOiBcInctZnVsbFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICBcInZzLWNvbXBvbmVudCB2cy1jb24taW5wdXQtbGFiZWwgdnMtaW5wdXQgdy1mdWxsIG5vLWljb24tYm9yZGVyIHZzLWlucHV0LXByaW1hcnkgaXMtbGFiZWwtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZvcm0tY29udHJvbC1wbGFjZWhvbGRlciBnZy1pbnB1dC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIlNlcnZpY2VzXCIpXVxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJNdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0uc2VydmljZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5wcm9qZWN0LnNlcnZpY2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLnByb2plY3QsIFwic2VydmljZXNcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInByb2plY3Quc2VydmljZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfdm0uaXNOZXdcbiAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtY29tcG9uZW50IG5vLWJvcmRlciB2cy1jb24taW5wdXQtbGFiZWwgdnMtaW5wdXQgdy1mdWxsIG5vLWljb24tYm9yZGVyIHZzLWlucHV0LXByaW1hcnkgaXMtbGFiZWwtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10ZXh0YXJlYVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInctZnVsbCBzZWxlY3QtbGFyZ2UgdnMtaW5wdXR4IHZzLWlucHV0LS1pbnB1dCBub3JtYWwgaGFzVmFsdWUgbm8tcGFkZGluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm5vdGVzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJpY29uIGljb24tZG9sbGFyLXNpZ25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIk5vdGVzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiBcIjVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLnByb2plY3QuY2FuX2VkaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnByb2plY3Qubm90ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5wcm9qZWN0LCBcIm5vdGVzXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInByb2plY3Qubm90ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0LXNwYW4tcGxhY2Vob2xkZXIgdnMtaW5wdXQtLXBsYWNlaG9sZGVyIG5vcm1hbCBub3JtYWwgdnMtcGxhY2Vob2xkZXItbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIk5vdGVzXCIpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImp1c3RpZnktYmV0d2VlbiBteS01XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5wcm9qZWN0LmNhbl9lZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXItMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIV92bS52YWxpZGF0ZUZvcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogXCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIlNhdmVcXG4gICAgICAgICAgICAgICAgICAgICAgICBcIildXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGNvbG9yOiBcIndhcm5pbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmJhY2sgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJCYWNrXCIpXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdLFxuICAgICAgICAgIDFcbiAgICAgICAgKVxuICAgICAgXSksXG4gICAgICBfdm0ucHJvamVjdC5jYW5fdXBsb2FkX2ZpbGVzXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcInZ4LWNhcmRcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibXktNFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwidnMtcm93XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ3LWZ1bGxcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidnMtY29sXCIsIHsgc3RhdGljQ2xhc3M6IFwidy0xLzJcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiaDJcIiwgW192bS5fdihcIkRvY3VtZW50IG1hbmFnZW1lbnRcIildKVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJ2cy1jb2xcIixcbiAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ3LTEvMlwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VsZWN0ZWQubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0IG1sLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGNvbG9yOiBcImRhbmdlclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmRlbGV0ZU1lZGlhIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgIERlbGV0ZVxcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VsZWN0ZWQubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0IG1sLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uZG93bmxvYWRNZWRpYSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFxcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uc2hvd1VwbG9hZGVyUG9wdXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICBVcGxvYWRcXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAhX3ZtLnByb2plY3QuZmlsZXMgfHwgX3ZtLnByb2plY3QuZmlsZXMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJ2cy1yb3dcIixcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtY29sXCIsIHsgc3RhdGljQ2xhc3M6IFwibXktOFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaDVcIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LXdhcm5pbmdcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIk5vIGZpbGVzIHdlcmUgdXBsb2FkZWQgZm9yIHRoaXMgcHJvamVjdC5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgIF92bS5wcm9qZWN0LmZpbGVzICYmIF92bS5wcm9qZWN0LmZpbGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcInZzLXJvd1wiLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZzLWNvbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJteS04XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10YWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogXCJnZ0RvY3VtZW50VGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IG11bHRpcGxlOiBcIlwiLCBkYXRhOiBfdm0ucHJvamVjdC5maWxlcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gcmVmLmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGJvZHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChkYXRhLCBmdW5jdGlvbih0ciwgaW5kZXh0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogaW5kZXh0cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGRhdGE6IHRyIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGRcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcm9kdWN0LW5hbWUgZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3ModHIubmFtZSkpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGRcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcm9kdWN0LWNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKHRyLmRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLXRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicHJvZHVjdC1wcmljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyh0ci5maWxlbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMDgwNzYwNjlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNlbGVjdGVkID0gJCR2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGVtcGxhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzbG90OiBcInRoZWFkXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGhcIiwgW192bS5fdihcIk5hbWVcIildKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtfdm0uX3YoXCJEZXNjcmlwdGlvblwiKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGhcIiwgW192bS5fdihcIkZpbGUgbmFtZVwiKV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInZzLXBvcHVwXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaG9sYW11bmRvXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IF92bS5zaG93VXBsb2FkUG9wdXAsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIlVwbG9hZCBkb2N1bWVudFwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgXCJ1cGRhdGU6YWN0aXZlXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93VXBsb2FkUG9wdXAgPSAkZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtY29tcG9uZW50IHZzLWNvbi1pbnB1dC1sYWJlbCB2cy1pbnB1dCB3LWZ1bGwgbm8taWNvbi1ib3JkZXIgdnMtaW5wdXQtcHJpbWFyeSBpcy1sYWJlbC1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld01lZGlhLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuZXdNZWRpYS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInctZnVsbCB2cy1pbnB1dHggdnMtaW5wdXQtLWlucHV0IG5vcm1hbCBoYXNWYWx1ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtZWRpYV9uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0ubmV3TWVkaWEubmFtZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdNZWRpYSwgXCJuYW1lXCIsICRldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0LXNwYW4tcGxhY2Vob2xkZXIgdnMtaW5wdXQtLXBsYWNlaG9sZGVyIG5vcm1hbCBub3JtYWwgdnMtcGxhY2Vob2xkZXItbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJOYW1lXCIpXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICBcInZzLWNvbXBvbmVudCB2cy1jb24taW5wdXQtbGFiZWwgdnMtaW5wdXQgdy1mdWxsIG5vLWljb24tYm9yZGVyIG5vLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5IGlzLWxhYmVsLXBsYWNlaG9sZGVyIG10LThcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10ZXh0YXJlYVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ3LWZ1bGwgc2VsZWN0LWxhcmdlIHZzLWlucHV0eCB2cy1pbnB1dC0taW5wdXQgbm9ybWFsIGhhc1ZhbHVlIG5vLXBhZGRpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiRGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm93czogXCIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld01lZGlhLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld01lZGlhLCBcImRlc2NyaXB0aW9uXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuZXdNZWRpYS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dC1zcGFuLXBsYWNlaG9sZGVyIHZzLWlucHV0LS1wbGFjZWhvbGRlciBub3JtYWwgbm9ybWFsIHZzLXBsYWNlaG9sZGVyLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiRGVzY3JpcHRpb25cIildXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZmlsZS11cGxvYWRlclwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaC0xMDBcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBvcHRpb25zOiBfdm0uZmxvd0NvbmZpZyB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlU3VibWl0dGVkOiBfdm0ub25GaWxlU3VibWl0dGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVN1Y2Nlc3M6IF92bS5vbkZpbGVTdWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJyb3cgaC0xMDBcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImNvbC1zbS0xMiB0ZXh0LWNlbnRlciBmaWxlLXVwbG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBcImFzc2V0cy9kcmFnLWRyb3Auc3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjQwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5mbG93ICYmIF92bS5mbG93LmZpbGVzICYmIF92bS5mbG93LmZpbGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtY2VudGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJwXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS5mbG93LmZpbGVzWzBdLm5hbWUpKV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfdm0uZmxvdy5wcm9ncmVzcyAmJiBfdm0uZmxvdy5wcm9ncmVzcygpID4gMFxuICAgICAgICAgICAgICAgICAgICA/IF9jKFwidnMtcHJvZ3Jlc3NcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogX3ZtLmZsb3cucHJvZ3Jlc3MoKSAqIDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImp1c3RpZnktYmV0d2VlbiBteS01XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXItMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInByaW1hcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5mbG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZmxvdy5maWxlcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmZsb3cuZmlsZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm5ld01lZGlhLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5uZXdNZWRpYS5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS51cGxvYWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICBVcGxvYWRcXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGNvbG9yOiBcIndhcm5pbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93VXBsb2FkUG9wdXAgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJDYW5jZWxcIildXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1 d-theme-dark-bg\" },\n    [\n      _c(\"service\", {\n        attrs: {\n          isNew: false,\n          loading: _vm.updating,\n          service: Object.assign({}, _vm.service)\n        },\n        on: { save: _vm.save, fileUploaded: _vm.fileUploaded }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL0VkaXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTkwZjE0OWYyJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL0VkaXQudnVlPzNmMjkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwidngtY29sIHNtOnctZnVsbCBtZDp3LWZ1bGwgbGc6dy0xLzEgZC10aGVtZS1kYXJrLWJnXCIgfSxcbiAgICBbXG4gICAgICBfYyhcInNlcnZpY2VcIiwge1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGlzTmV3OiBmYWxzZSxcbiAgICAgICAgICBsb2FkaW5nOiBfdm0udXBkYXRpbmcsXG4gICAgICAgICAgc2VydmljZTogT2JqZWN0LmFzc2lnbih7fSwgX3ZtLnNlcnZpY2UpXG4gICAgICAgIH0sXG4gICAgICAgIG9uOiB7IHNhdmU6IF92bS5zYXZlLCBmaWxlVXBsb2FkZWQ6IF92bS5maWxlVXBsb2FkZWQgfVxuICAgICAgfSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var this$1 = this\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"cal-services\" } },\n    [\n      _c(\n        \"vx-card\",\n        [\n          _c(\n            \"vs-table\",\n            {\n              attrs: { sst: true, data: _vm.services.data, search: \"\" },\n              on: {\n                search: function(e) {\n                  return _vm.handleSearch(e, this$1)\n                }\n              },\n              scopedSlots: _vm._u([\n                {\n                  key: \"default\",\n                  fn: function(ref) {\n                    var data = ref.data\n                    return _vm._l(data, function(tr) {\n                      return _c(\n                        \"vs-tr\",\n                        { key: tr.id },\n                        [\n                          _c(\"vs-td\", [_vm._v(_vm._s(tr.name))]),\n                          _c(\"vs-td\", [_vm._v(_vm._s(tr.description))]),\n                          _c(\"vs-td\", [_vm._v(_vm._s(tr.created_by))]),\n                          _c(\"vs-td\", [_vm._v(_vm._s(tr.price))]),\n                          _c(\n                            \"vs-td\",\n                            { staticClass: \"float-right\" },\n                            [\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Download\" } },\n                                [\n                                  tr.has_media\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mx-1\",\n                                        attrs: {\n                                          size: \"small\",\n                                          icon: \"cloud_download\"\n                                        },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.downloadFile(tr)\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                {\n                                  attrs: {\n                                    text: tr.can_edit ? \"Edit\" : \"Details\"\n                                  }\n                                },\n                                [\n                                  _c(\"vs-button\", {\n                                    staticClass: \"inline-block mx-1\",\n                                    attrs: {\n                                      size: \"small\",\n                                      icon: tr.can_edit\n                                        ? \"edit\"\n                                        : \"remove_red_eye\"\n                                    },\n                                    on: {\n                                      click: function($event) {\n                                        return _vm.editService(tr)\n                                      }\n                                    }\n                                  })\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Disable\" } },\n                                [\n                                  tr.can_disable\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mx-1\",\n                                        attrs: {\n                                          color: \"danger\",\n                                          size: \"small\",\n                                          icon: \"delete\"\n                                        },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.disableService(tr)\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Enable\" } },\n                                [\n                                  tr.can_enable\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mx-1\",\n                                        attrs: { size: \"small\", icon: \"check\" },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.enableService(tr)\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              )\n                            ],\n                            1\n                          )\n                        ],\n                        1\n                      )\n                    })\n                  }\n                }\n              ])\n            },\n            [\n              _c(\"template\", { slot: \"header\" }, [\n                _c(\"h3\", [_vm._v(\"Services\")]),\n                _c(\n                  \"div\",\n                  { staticClass: \"mx-2\" },\n                  [\n                    _c(\n                      \"vs-button\",\n                      {\n                        staticClass: \"d-inline-block\",\n                        attrs: {\n                          to: \"/services/create\",\n                          size: \"small\",\n                          icon: \"add_circle\"\n                        }\n                      },\n                      [\n                        _vm._v(\n                          \"\\n                        Create\\n                    \"\n                        )\n                      ]\n                    )\n                  ],\n                  1\n                )\n              ]),\n              _c(\n                \"template\",\n                { slot: \"thead\" },\n                [\n                  _c(\"vs-th\", [_vm._v(\"Name\")]),\n                  _c(\"vs-th\", [_vm._v(\"Description\")]),\n                  _c(\"vs-th\", [_vm._v(\"Created By\")]),\n                  _c(\"vs-th\", [_vm._v(\"Price\")]),\n                  _c(\"vs-th\", { staticClass: \"float-right\" }, [\n                    _vm._v(\"Actions\")\n                  ])\n                ],\n                1\n              )\n            ],\n            2\n          ),\n          _vm.services.data && _vm.services.data.length > 0\n            ? _c(\"vs-pagination\", {\n                staticClass: \"mt-6\",\n                attrs: { total: _vm.services.meta.pagination.total_pages },\n                on: { change: _vm.handleChangePage },\n                model: {\n                  value: _vm.filters.page,\n                  callback: function($$v) {\n                    _vm.$set(_vm.filters, \"page\", $$v)\n                  },\n                  expression: \"filters.page\"\n                }\n              })\n            : _vm._e()\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWFmODE5OGNhJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL0xpc3QudnVlP2UyMzciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdGhpcyQxID0gdGhpc1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgYXR0cnM6IHsgaWQ6IFwiY2FsLXNlcnZpY2VzXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcInZ4LWNhcmRcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ2cy10YWJsZVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczogeyBzc3Q6IHRydWUsIGRhdGE6IF92bS5zZXJ2aWNlcy5kYXRhLCBzZWFyY2g6IFwiXCIgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBzZWFyY2g6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlU2VhcmNoKGUsIHRoaXMkMSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHNjb3BlZFNsb3RzOiBfdm0uX3UoW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGtleTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gcmVmLmRhdGFcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5fbChkYXRhLCBmdW5jdGlvbih0cikge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtdHJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiB0ci5pZCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLXRkXCIsIFtfdm0uX3YoX3ZtLl9zKHRyLm5hbWUpKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLXRkXCIsIFtfdm0uX3YoX3ZtLl9zKHRyLmRlc2NyaXB0aW9uKSldKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10ZFwiLCBbX3ZtLl92KF92bS5fcyh0ci5jcmVhdGVkX2J5KSldKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10ZFwiLCBbX3ZtLl92KF92bS5fcyh0ci5wcmljZSkpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidnMtdGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJEb3dubG9hZFwiIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyLmhhc19tZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInZzLWJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaW5saW5lLWJsb2NrIG14LTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJjbG91ZF9kb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmRvd25sb2FkRmlsZSh0cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdHIuY2FuX2VkaXQgPyBcIkVkaXRcIiA6IFwiRGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1idXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaW5saW5lLWJsb2NrIG14LTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogdHIuY2FuX2VkaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcInJlbW92ZV9yZWRfZXllXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5lZGl0U2VydmljZSh0cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJEaXNhYmxlXCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHIuY2FuX2Rpc2FibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJ2cy1idXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImlubGluZS1ibG9jayBteC0xXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcImRhbmdlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJkZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5kaXNhYmxlU2VydmljZSh0cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJFbmFibGVcIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ci5jYW5fZW5hYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwidnMtYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpbmxpbmUtYmxvY2sgbXgtMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNpemU6IFwic21hbGxcIiwgaWNvbjogXCJjaGVja1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5lbmFibGVTZXJ2aWNlKHRyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInRlbXBsYXRlXCIsIHsgc2xvdDogXCJoZWFkZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXCJoM1wiLCBbX3ZtLl92KFwiU2VydmljZXNcIildKSxcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcIm14LTJcIiB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImQtaW5saW5lLWJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogXCIvc2VydmljZXMvY3JlYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJhZGRfY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVcXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwidGVtcGxhdGVcIixcbiAgICAgICAgICAgICAgICB7IHNsb3Q6IFwidGhlYWRcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGhcIiwgW192bS5fdihcIk5hbWVcIildKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGhcIiwgW192bS5fdihcIkRlc2NyaXB0aW9uXCIpXSksXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtfdm0uX3YoXCJDcmVhdGVkIEJ5XCIpXSksXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtfdm0uX3YoXCJQcmljZVwiKV0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10aFwiLCB7IHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJBY3Rpb25zXCIpXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLnNlcnZpY2VzLmRhdGEgJiYgX3ZtLnNlcnZpY2VzLmRhdGEubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyBfYyhcInZzLXBhZ2luYXRpb25cIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm10LTZcIixcbiAgICAgICAgICAgICAgICBhdHRyczogeyB0b3RhbDogX3ZtLnNlcnZpY2VzLm1ldGEucGFnaW5hdGlvbi50b3RhbF9wYWdlcyB9LFxuICAgICAgICAgICAgICAgIG9uOiB7IGNoYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVBhZ2UgfSxcbiAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5maWx0ZXJzLnBhZ2UsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5maWx0ZXJzLCBcInBhZ2VcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiZmlsdGVycy5wYWdlXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1 d-theme-dark-bg\" },\n    [\n      _c(\"service\", {\n        attrs: { isNew: true, loading: _vm.saving, service: _vm.service },\n        on: { save: _vm.save, fileUploaded: _vm.fileUploaded }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDViNTg3OWEmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvTmV3LnZ1ZT8yZjRlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcInZ4LWNvbCBzbTp3LWZ1bGwgbWQ6dy1mdWxsIGxnOnctMS8xIGQtdGhlbWUtZGFyay1iZ1wiIH0sXG4gICAgW1xuICAgICAgX2MoXCJzZXJ2aWNlXCIsIHtcbiAgICAgICAgYXR0cnM6IHsgaXNOZXc6IHRydWUsIGxvYWRpbmc6IF92bS5zYXZpbmcsIHNlcnZpY2U6IF92bS5zZXJ2aWNlIH0sXG4gICAgICAgIG9uOiB7IHNhdmU6IF92bS5zYXZlLCBmaWxlVXBsb2FkZWQ6IF92bS5maWxlVXBsb2FkZWQgfVxuICAgICAgfSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"vx-card\", [\n    _c(\n      \"form\",\n      {\n        attrs: { autocomplete: \"off\" },\n        on: {\n          submit: function($event) {\n            $event.preventDefault()\n            return _vm.$emit(\"save\", { service: _vm.service, flow: _vm.flow })\n          }\n        }\n      },\n      [\n        _c(\n          \"div\",\n          { staticClass: \"p-8\" },\n          [\n            _c(\"vs-input\", {\n              directives: [\n                {\n                  name: \"validate\",\n                  rawName: \"v-validate\",\n                  value: \"required\",\n                  expression: \"'required'\"\n                }\n              ],\n              staticClass: \"w-full no-icon-border\",\n              attrs: {\n                \"data-vv-validate-on\": \"blur\",\n                name: \"name\",\n                icon: \"icon icon-hash\",\n                autocomplete: \"off\",\n                \"icon-pack\": \"feather\",\n                \"label-placeholder\": \"Name\",\n                disabled: !_vm.service.can_edit\n              },\n              model: {\n                value: _vm.service.name,\n                callback: function($$v) {\n                  _vm.$set(_vm.service, \"name\", $$v)\n                },\n                expression: \"service.name\"\n              }\n            }),\n            _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n              _vm._v(_vm._s(_vm.errors.first(\"name\")))\n            ]),\n            _vm.isAdmin()\n              ? _c(\n                  \"div\",\n                  {\n                    staticClass:\n                      \"vs-component vs-con-input-label vs-input w-full no-icon-border vs-input-primary is-label-placeholder\"\n                  },\n                  [\n                    _c(\n                      \"label\",\n                      {\n                        staticClass: \"form-control-placeholder gg-default-label\"\n                      },\n                      [_vm._v(\"Category\")]\n                    ),\n                    _c(\"Multiselect\", {\n                      attrs: {\n                        placeholder: \"Select Category\",\n                        options: _vm.categories,\n                        label: \"code\",\n                        \"track-by\": \"id\"\n                      },\n                      on: { select: _vm.setCategoryId },\n                      model: {\n                        value: _vm.service.category,\n                        callback: function($$v) {\n                          _vm.$set(_vm.service, \"category\", $$v)\n                        },\n                        expression: \"service.category\"\n                      }\n                    })\n                  ],\n                  1\n                )\n              : _vm._e(),\n            !_vm.service.can_edit || _vm.isAdmin()\n              ? _c(\"vs-input\", {\n                  staticClass: \"w-full no-icon-border\",\n                  attrs: {\n                    name: \"price\",\n                    disabled: !_vm.service.can_edit,\n                    autocomplete: \"off\",\n                    \"label-placeholder\": \"Price\"\n                  },\n                  model: {\n                    value: _vm.service.price,\n                    callback: function($$v) {\n                      _vm.$set(_vm.service, \"price\", $$v)\n                    },\n                    expression: \"service.price\"\n                  }\n                })\n              : _vm._e(),\n            _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n              _vm._v(_vm._s(_vm.errors.first(\"price\")))\n            ]),\n            _c(\"vs-input\", {\n              directives: [\n                {\n                  name: \"validate\",\n                  rawName: \"v-validate\",\n                  value: \"required\",\n                  expression: \"'required'\"\n                }\n              ],\n              staticClass: \"w-full no-icon-border\",\n              attrs: {\n                \"data-vv-validate-on\": \"blur\",\n                name: \"description\",\n                icon: \"icon icon-align-left\",\n                autocomplete: \"off\",\n                \"icon-pack\": \"feather\",\n                \"label-placeholder\": \"Description\",\n                disabled: !_vm.service.can_edit\n              },\n              model: {\n                value: _vm.service.description,\n                callback: function($$v) {\n                  _vm.$set(_vm.service, \"description\", $$v)\n                },\n                expression: \"service.description\"\n              }\n            }),\n            _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n              _vm._v(_vm._s(_vm.errors.first(\"description\")))\n            ]),\n            _c(\n              \"div\",\n              {\n                staticClass:\n                  \"vs-component vs-con-input-label vs-input w-full no-icon-border vs-input-primary is-label-placeholder no-border\"\n              },\n              [\n                _c(\"vs-textarea\", {\n                  directives: [\n                    {\n                      name: \"validate\",\n                      rawName: \"v-validate\",\n                      value: \"required\",\n                      expression: \"'required'\"\n                    }\n                  ],\n                  staticClass:\n                    \"w-full vs-input vs-input--input normal hasValue no-padding\",\n                  attrs: {\n                    \"data-vv-validate-on\": \"blur\",\n                    name: \"long_description\",\n                    autocomplete: \"off\",\n                    \"icon-pack\": \"feather\",\n                    disabled: !_vm.service.can_edit,\n                    \"label-placeholder\": \"Notes\",\n                    rows: \"5\"\n                  },\n                  model: {\n                    value: _vm.service.long_description,\n                    callback: function($$v) {\n                      _vm.$set(_vm.service, \"long_description\", $$v)\n                    },\n                    expression: \"service.long_description\"\n                  }\n                }),\n                _c(\n                  \"span\",\n                  {\n                    staticClass:\n                      \"input-span-placeholder vs-input--placeholder normal normal vs-placeholder-label\"\n                  },\n                  [_vm._v(\"Long Description\")]\n                )\n              ],\n              1\n            ),\n            _vm.service.can_edit\n              ? _c(\"div\", { staticClass: \"vx-col w-2/3 mx-auto text-center\" }, [\n                  _vm.service.has_media\n                    ? _c(\"p\", { staticClass: \"text-warning\" }, [\n                        _c(\"strong\", [\n                          _vm._v(\n                            \"\\n                        For this service there is already a document example attached, uploading another one will\\n                        overwrite the existing document!\\n                    \"\n                          )\n                        ])\n                      ])\n                    : _vm._e()\n                ])\n              : _vm._e(),\n            _vm.service.can_edit && _vm.isAdmin()\n              ? _c(\n                  \"div\",\n                  { staticClass: \"vx-col w-1/6 mx-auto text-center\" },\n                  [\n                    _c(\n                      \"file-uploader\",\n                      {\n                        staticClass: \"h-100\",\n                        attrs: { options: _vm.flowConfig },\n                        on: {\n                          fileSubmitted: _vm.onFileSubmitted,\n                          fileSuccess: _vm.onFileSuccess\n                        }\n                      },\n                      [\n                        _c(\"div\", { staticClass: \"row h-100\" }, [\n                          _c(\n                            \"div\",\n                            {\n                              staticClass: \"col-sm-12 text-center file-uploader\"\n                            },\n                            [\n                              _c(\"img\", {\n                                attrs: {\n                                  alt: \"\",\n                                  src: \"assets/drag-drop.svg\",\n                                  width: \"100%\"\n                                }\n                              })\n                            ]\n                          ),\n                          _vm.flow &&\n                          _vm.flow.files &&\n                          _vm.flow.files.length > 0\n                            ? _c(\"div\", { staticClass: \"text-center\" }, [\n                                _c(\"p\", [\n                                  _vm._v(_vm._s(_vm.flow.files[0].name))\n                                ])\n                              ])\n                            : _vm._e()\n                        ])\n                      ]\n                    ),\n                    _vm.flow.progress && _vm.flow.progress() > 0\n                      ? _c(\"vs-progress\", {\n                          attrs: {\n                            percent: _vm.flow.progress() * 100,\n                            color: \"primary\"\n                          }\n                        })\n                      : _vm._e()\n                  ],\n                  1\n                )\n              : _vm._e(),\n            _c(\n              \"div\",\n              { staticClass: \"justify-between my-5\" },\n              [\n                _vm.service.can_edit\n                  ? _c(\n                      \"vs-button\",\n                      {\n                        staticClass: \"mr-2\",\n                        attrs: {\n                          color: \"primary\",\n                          disabled: !_vm.validateForm,\n                          button: \"submit\"\n                        }\n                      },\n                      [_vm._v(\"Save\\n                \")]\n                    )\n                  : _vm._e(),\n                _c(\n                  \"vs-button\",\n                  {\n                    staticClass: \"mr-2\",\n                    attrs: { color: \"warning\" },\n                    on: { click: _vm.back }\n                  },\n                  [_vm._v(\"Cancel\")]\n                ),\n                _vm.service.has_media\n                  ? _c(\n                      \"vs-button\",\n                      {\n                        staticClass: \"mr-2\",\n                        attrs: { color: \"primary\" },\n                        on: { click: _vm.download }\n                      },\n                      [\n                        _vm._v(\n                          \"Download\\n                    Example\\n                \"\n                        )\n                      ]\n                    )\n                  : _vm._e()\n              ],\n              1\n            )\n          ],\n          1\n        )\n      ]\n    )\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL2NvbXBvbmVudHMvRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmU2M2RmZjAmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvY29tcG9uZW50cy9Gb3JtLnZ1ZT85ZTA0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJ2eC1jYXJkXCIsIFtcbiAgICBfYyhcbiAgICAgIFwiZm9ybVwiLFxuICAgICAge1xuICAgICAgICBhdHRyczogeyBhdXRvY29tcGxldGU6IFwib2ZmXCIgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIHJldHVybiBfdm0uJGVtaXQoXCJzYXZlXCIsIHsgc2VydmljZTogX3ZtLnNlcnZpY2UsIGZsb3c6IF92bS5mbG93IH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicC04XCIgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcInZzLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwidmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgaWNvbjogXCJpY29uIGljb24taGFzaFwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiTmFtZVwiLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLnNlcnZpY2UuY2FuX2VkaXRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlcnZpY2UubmFtZSxcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uc2VydmljZSwgXCJuYW1lXCIsICQkdilcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VydmljZS5uYW1lXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCIgfSwgW1xuICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lcnJvcnMuZmlyc3QoXCJuYW1lXCIpKSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX3ZtLmlzQWRtaW4oKVxuICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgXCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0IHctZnVsbCBuby1pY29uLWJvcmRlciB2cy1pbnB1dC1wcmltYXJ5IGlzLWxhYmVsLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwibGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJmb3JtLWNvbnRyb2wtcGxhY2Vob2xkZXIgZ2ctZGVmYXVsdC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiQ2F0ZWdvcnlcIildXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiTXVsdGlzZWxlY3RcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJTZWxlY3QgQ2F0ZWdvcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IF92bS5jYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiY29kZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImlkXCJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IHNlbGVjdDogX3ZtLnNldENhdGVnb3J5SWQgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zZXJ2aWNlLmNhdGVnb3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uc2VydmljZSwgXCJjYXRlZ29yeVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzZXJ2aWNlLmNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICFfdm0uc2VydmljZS5jYW5fZWRpdCB8fCBfdm0uaXNBZG1pbigpXG4gICAgICAgICAgICAgID8gX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwicHJpY2VcIixcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0uc2VydmljZS5jYW5fZWRpdCxcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiUHJpY2VcIlxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2VydmljZS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5zZXJ2aWNlLCBcInByaWNlXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzZXJ2aWNlLnByaWNlXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1kYW5nZXIgdGV4dC1zbVwiIH0sIFtcbiAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZXJyb3JzLmZpcnN0KFwicHJpY2VcIikpKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBfYyhcInZzLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwidmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLWFsaWduLWxlZnRcIixcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgXCJpY29uLXBhY2tcIjogXCJmZWF0aGVyXCIsXG4gICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIkRlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0uc2VydmljZS5jYW5fZWRpdFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2VydmljZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uc2VydmljZSwgXCJkZXNjcmlwdGlvblwiLCAkJHYpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlcnZpY2UuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcImRlc2NyaXB0aW9uXCIpKSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgIFwidnMtY29tcG9uZW50IHZzLWNvbi1pbnB1dC1sYWJlbCB2cy1pbnB1dCB3LWZ1bGwgbm8taWNvbi1ib3JkZXIgdnMtaW5wdXQtcHJpbWFyeSBpcy1sYWJlbC1wbGFjZWhvbGRlciBuby1ib3JkZXJcIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXCJ2cy10ZXh0YXJlYVwiLCB7XG4gICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgIFwidy1mdWxsIHZzLWlucHV0IHZzLWlucHV0LS1pbnB1dCBub3JtYWwgaGFzVmFsdWUgbm8tcGFkZGluZ1wiLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXZ2LXZhbGlkYXRlLW9uXCI6IFwiYmx1clwiLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcImxvbmdfZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0uc2VydmljZS5jYW5fZWRpdCxcbiAgICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIk5vdGVzXCIsXG4gICAgICAgICAgICAgICAgICAgIHJvd3M6IFwiNVwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zZXJ2aWNlLmxvbmdfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uc2VydmljZSwgXCJsb25nX2Rlc2NyaXB0aW9uXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzZXJ2aWNlLmxvbmdfZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQtc3Bhbi1wbGFjZWhvbGRlciB2cy1pbnB1dC0tcGxhY2Vob2xkZXIgbm9ybWFsIG5vcm1hbCB2cy1wbGFjZWhvbGRlci1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW192bS5fdihcIkxvbmcgRGVzY3JpcHRpb25cIildXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3ZtLnNlcnZpY2UuY2FuX2VkaXRcbiAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInZ4LWNvbCB3LTIvMyBteC1hdXRvIHRleHQtY2VudGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgX3ZtLnNlcnZpY2UuaGFzX21lZGlhXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXCJwXCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC13YXJuaW5nXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzdHJvbmdcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBzZXJ2aWNlIHRoZXJlIGlzIGFscmVhZHkgYSBkb2N1bWVudCBleGFtcGxlIGF0dGFjaGVkLCB1cGxvYWRpbmcgYW5vdGhlciBvbmUgd2lsbFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgZG9jdW1lbnQhXFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgX3ZtLnNlcnZpY2UuY2FuX2VkaXQgJiYgX3ZtLmlzQWRtaW4oKVxuICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidngtY29sIHctMS82IG14LWF1dG8gdGV4dC1jZW50ZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImZpbGUtdXBsb2FkZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJoLTEwMFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgb3B0aW9uczogX3ZtLmZsb3dDb25maWcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVTdWJtaXR0ZWQ6IF92bS5vbkZpbGVTdWJtaXR0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVTdWNjZXNzOiBfdm0ub25GaWxlU3VjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJyb3cgaC0xMDBcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiY29sLXNtLTEyIHRleHQtY2VudGVyIGZpbGUtdXBsb2FkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IFwiYXNzZXRzL2RyYWctZHJvcC5zdmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5mbG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5mbG93LmZpbGVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5mbG93LmZpbGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1jZW50ZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwicFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZmxvdy5maWxlc1swXS5uYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF92bS5mbG93LnByb2dyZXNzICYmIF92bS5mbG93LnByb2dyZXNzKCkgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInZzLXByb2dyZXNzXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50OiBfdm0uZmxvdy5wcm9ncmVzcygpICogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwianVzdGlmeS1iZXR3ZWVuIG15LTVcIiB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX3ZtLnNlcnZpY2UuY2FuX2VkaXRcbiAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLnZhbGlkYXRlRm9ybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBcInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiU2F2ZVxcbiAgICAgICAgICAgICAgICBcIildXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGNvbG9yOiBcIndhcm5pbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmJhY2sgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJDYW5jZWxcIildXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBfdm0uc2VydmljZS5oYXNfbWVkaWFcbiAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJwcmltYXJ5XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uZG93bmxvYWQgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRvd25sb2FkXFxuICAgICAgICAgICAgICAgICAgICBFeGFtcGxlXFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdLFxuICAgICAgICAgIDFcbiAgICAgICAgKVxuICAgICAgXVxuICAgIClcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1\" },\n    [\n      _c(\"vx-card\", [\n        _c(\"div\", { staticClass: \"sm:w-full md:w-1/2 lg:w-1/2 mx-auto\" }, [\n          _c(\n            \"form\",\n            {\n              attrs: { autocomplete: \"off\" },\n              on: {\n                submit: function($event) {\n                  $event.preventDefault()\n                  return _vm.updatePassword(_vm.user)\n                }\n              }\n            },\n            [\n              _c(\"vs-input\", {\n                directives: [\n                  {\n                    name: \"validate\",\n                    rawName: \"v-validate\",\n                    value: \"required\",\n                    expression: \"'required'\"\n                  }\n                ],\n                staticClass: \"w-full inline-block no-icon-border\",\n                attrs: {\n                  type: \"password\",\n                  \"data-vv-validate-on\": \"blur\",\n                  name: \"password\",\n                  icon: \"icon icon-lock\",\n                  autocomplete: \"off\",\n                  \"icon-pack\": \"feather\",\n                  \"label-placeholder\": \"Password\"\n                },\n                model: {\n                  value: _vm.user.password,\n                  callback: function($$v) {\n                    _vm.$set(_vm.user, \"password\", $$v)\n                  },\n                  expression: \"user.password\"\n                }\n              }),\n              _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                _vm._v(_vm._s(_vm.errors.first(\"password\")))\n              ]),\n              _c(\"vs-input\", {\n                directives: [\n                  {\n                    name: \"validate\",\n                    rawName: \"v-validate\",\n                    value: \"required\",\n                    expression: \"'required'\"\n                  }\n                ],\n                staticClass: \"w-full inline-block no-icon-border\",\n                attrs: {\n                  type: \"password\",\n                  \"data-vv-validate-on\": \"blur\",\n                  name: \"password_confirmation\",\n                  icon: \"icon icon-lock\",\n                  autocomplete: \"off\",\n                  \"icon-pack\": \"feather\",\n                  \"label-placeholder\": \"Password Confirmation\"\n                },\n                model: {\n                  value: _vm.user.password_confirmation,\n                  callback: function($$v) {\n                    _vm.$set(_vm.user, \"password_confirmation\", $$v)\n                  },\n                  expression: \"user.password_confirmation\"\n                }\n              }),\n              _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                _vm._v(_vm._s(_vm.errors.first(\"password_confirmation\")))\n              ]),\n              _c(\n                \"div\",\n                { staticClass: \"justify-between my-5\" },\n                [\n                  _c(\n                    \"vs-button\",\n                    {\n                      staticClass: \"mr-2\",\n                      attrs: {\n                        color: \"primary\",\n                        disabled: !_vm.validateForm,\n                        button: \"submit\"\n                      }\n                    },\n                    [_vm._v(\"Save\\n                    \")]\n                  ),\n                  _c(\n                    \"vs-button\",\n                    {\n                      staticClass: \"mr-2\",\n                      attrs: { color: \"warning\" },\n                      on: { click: _vm.back }\n                    },\n                    [_vm._v(\"Cancel\")]\n                  )\n                ],\n                1\n              )\n            ],\n            1\n          )\n        ])\n      ])\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3VzZXJzL0NoYW5nZVBhc3N3b3JkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xOGI3Mjg1MyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9DaGFuZ2VQYXNzd29yZC52dWU/NTQwNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgeyBzdGF0aWNDbGFzczogXCJ2eC1jb2wgc206dy1mdWxsIG1kOnctZnVsbCBsZzp3LTEvMVwiIH0sXG4gICAgW1xuICAgICAgX2MoXCJ2eC1jYXJkXCIsIFtcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJzbTp3LWZ1bGwgbWQ6dy0xLzIgbGc6dy0xLzIgbXgtYXV0b1wiIH0sIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZm9ybVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczogeyBhdXRvY29tcGxldGU6IFwib2ZmXCIgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0udXBkYXRlUGFzc3dvcmQoX3ZtLnVzZXIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInZzLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwidmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcInJlcXVpcmVkXCIsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgaW5saW5lLWJsb2NrIG5vLWljb24tYm9yZGVyXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICAgIFwiZGF0YS12di12YWxpZGF0ZS1vblwiOiBcImJsdXJcIixcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLWxvY2tcIixcbiAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIlBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnVzZXIucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS51c2VyLCBcInBhc3N3b3JkXCIsICQkdilcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInVzZXIucGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZXJyb3JzLmZpcnN0KFwicGFzc3dvcmRcIikpKVxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJyZXF1aXJlZFwiLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIGlubGluZS1ibG9jayBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInBhc3N3b3JkX2NvbmZpcm1hdGlvblwiLFxuICAgICAgICAgICAgICAgICAgaWNvbjogXCJpY29uIGljb24tbG9ja1wiLFxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgXCJpY29uLXBhY2tcIjogXCJmZWF0aGVyXCIsXG4gICAgICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiUGFzc3dvcmQgQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnVzZXIucGFzc3dvcmRfY29uZmlybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0udXNlciwgXCJwYXNzd29yZF9jb25maXJtYXRpb25cIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwidXNlci5wYXNzd29yZF9jb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZXJyb3JzLmZpcnN0KFwicGFzc3dvcmRfY29uZmlybWF0aW9uXCIpKSlcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJqdXN0aWZ5LWJldHdlZW4gbXktNVwiIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwidnMtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInByaW1hcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLnZhbGlkYXRlRm9ybSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogXCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW192bS5fdihcIlNhdmVcXG4gICAgICAgICAgICAgICAgICAgIFwiKV1cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1yLTJcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJ3YXJuaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmJhY2sgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiQ2FuY2VsXCIpXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSlcbiAgICAgIF0pXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e&":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var this$1 = this\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"cal-users\" } },\n    [\n      _c(\n        \"vx-card\",\n        [\n          _c(\n            \"vs-table\",\n            {\n              attrs: { sst: true, data: _vm.users.data, search: \"\" },\n              on: {\n                search: function(e) {\n                  return _vm.handleSearch(e, this$1)\n                }\n              },\n              scopedSlots: _vm._u([\n                {\n                  key: \"default\",\n                  fn: function(ref) {\n                    var data = ref.data\n                    return _vm._l(data, function(tr, indextr) {\n                      return _c(\n                        \"vs-tr\",\n                        { key: indextr },\n                        [\n                          _c(\n                            \"vs-td\",\n                            { attrs: { data: data[indextr].fullName } },\n                            [\n                              _vm._v(\n                                \"\\n                        \" +\n                                  _vm._s(data[indextr].fullName) +\n                                  \"\\n                    \"\n                              )\n                            ]\n                          ),\n                          _c(\n                            \"vs-td\",\n                            { attrs: { data: data[indextr].email } },\n                            [\n                              _c(\n                                \"a\",\n                                {\n                                  attrs: {\n                                    href: \"mailto:\" + data[indextr].email + \"}}\"\n                                  }\n                                },\n                                [_vm._v(_vm._s(data[indextr].email))]\n                              )\n                            ]\n                          ),\n                          _c(\n                            \"vs-td\",\n                            {\n                              staticClass: \"float-right\",\n                              attrs: { data: data[indextr] }\n                            },\n                            [\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Enable\" } },\n                                [\n                                  !data[indextr].is_enabled\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mr-1\",\n                                        attrs: { size: \"small\", icon: \"check\" },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.enableUser(data[indextr])\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Delete\" } },\n                                [\n                                  _c(\"vs-button\", {\n                                    staticClass: \"inline-block mr-1\",\n                                    attrs: {\n                                      color: \"danger\",\n                                      size: \"small\",\n                                      icon: \"delete\"\n                                    },\n                                    on: {\n                                      click: function($event) {\n                                        return _vm.deleteConfirmation(\n                                          data[indextr]\n                                        )\n                                      }\n                                    }\n                                  })\n                                ],\n                                1\n                              )\n                            ],\n                            1\n                          )\n                        ],\n                        1\n                      )\n                    })\n                  }\n                }\n              ])\n            },\n            [\n              _c(\"template\", { slot: \"header\" }, [\n                _c(\"h3\", [_vm._v(\"Clients Confirmation\")])\n              ]),\n              _c(\n                \"template\",\n                { slot: \"thead\" },\n                [\n                  _c(\"vs-th\", [_vm._v(\"Name\")]),\n                  _c(\"vs-th\", [_vm._v(\"Email\")]),\n                  _c(\"vs-th\", { staticClass: \"float-right\" }, [\n                    _vm._v(\"Actions\")\n                  ])\n                ],\n                1\n              )\n            ],\n            2\n          ),\n          _vm.users.data && _vm.users.data.length > 0\n            ? _c(\"vs-pagination\", {\n                staticClass: \"mt-6\",\n                attrs: { total: _vm.users.meta.pagination.total_pages },\n                on: { change: _vm.handleChangePage },\n                model: {\n                  value: _vm.filters.page,\n                  callback: function($$v) {\n                    _vm.$set(_vm.filters, \"page\", $$v)\n                  },\n                  expression: \"filters.page\"\n                }\n              })\n            : _vm._e()\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3VzZXJzL0NsaWVudHNDb25maXJtYXRpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMWJhZGUxZSYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9DbGllbnRzQ29uZmlybWF0aW9ucy52dWU/NGUwMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGlzJDEgPSB0aGlzXG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgeyBhdHRyczogeyBpZDogXCJjYWwtdXNlcnNcIiB9IH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwidngtY2FyZFwiLFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcInZzLXRhYmxlXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7IHNzdDogdHJ1ZSwgZGF0YTogX3ZtLnVzZXJzLmRhdGEsIHNlYXJjaDogXCJcIiB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIHNlYXJjaDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVTZWFyY2goZSwgdGhpcyQxKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZWYuZGF0YVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLl9sKGRhdGEsIGZ1bmN0aW9uKHRyLCBpbmRleHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IGluZGV4dHIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgZGF0YTogZGF0YVtpbmRleHRyXS5mdWxsTmFtZSB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoZGF0YVtpbmRleHRyXS5mdWxsTmFtZSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgZGF0YTogZGF0YVtpbmRleHRyXS5lbWFpbCB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IFwibWFpbHRvOlwiICsgZGF0YVtpbmRleHRyXS5lbWFpbCArIFwifX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoZGF0YVtpbmRleHRyXS5lbWFpbCkpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBkYXRhOiBkYXRhW2luZGV4dHJdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZ4LXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyB0ZXh0OiBcIkVuYWJsZVwiIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFkYXRhW2luZGV4dHJdLmlzX2VuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJ2cy1idXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImlubGluZS1ibG9jayBtci0xXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgc2l6ZTogXCJzbWFsbFwiLCBpY29uOiBcImNoZWNrXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmVuYWJsZVVzZXIoZGF0YVtpbmRleHRyXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJEZWxldGVcIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLWJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpbmxpbmUtYmxvY2sgbXItMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiZGFuZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJkZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmRlbGV0ZUNvbmZpcm1hdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbaW5kZXh0cl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwidGVtcGxhdGVcIiwgeyBzbG90OiBcImhlYWRlclwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcImgzXCIsIFtfdm0uX3YoXCJDbGllbnRzIENvbmZpcm1hdGlvblwiKV0pXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInRlbXBsYXRlXCIsXG4gICAgICAgICAgICAgICAgeyBzbG90OiBcInRoZWFkXCIgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtfdm0uX3YoXCJOYW1lXCIpXSksXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIFtfdm0uX3YoXCJFbWFpbFwiKV0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2cy10aFwiLCB7IHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJBY3Rpb25zXCIpXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLnVzZXJzLmRhdGEgJiYgX3ZtLnVzZXJzLmRhdGEubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyBfYyhcInZzLXBhZ2luYXRpb25cIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm10LTZcIixcbiAgICAgICAgICAgICAgICBhdHRyczogeyB0b3RhbDogX3ZtLnVzZXJzLm1ldGEucGFnaW5hdGlvbi50b3RhbF9wYWdlcyB9LFxuICAgICAgICAgICAgICAgIG9uOiB7IGNoYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVBhZ2UgfSxcbiAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5maWx0ZXJzLnBhZ2UsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5maWx0ZXJzLCBcInBhZ2VcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiZmlsdGVycy5wYWdlXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1\" },\n    [\n      _c(\"vx-card\", [\n        _c(\n          \"div\",\n          { staticClass: \"sm:w-full md:w-1/2 lg:w-1/2 mx-auto\" },\n          [\n            _c(\"user\", {\n              attrs: {\n                isNew: false,\n                loading: _vm.updating,\n                user: Object.assign({}, _vm.user)\n              },\n              on: { save: _vm.save, fileAdded: _vm.imageSelected }\n            })\n          ],\n          1\n        )\n      ])\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3VzZXJzL0VkaXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRlOWUxZjFjJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL0VkaXQudnVlPzZlMDIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwidngtY29sIHNtOnctZnVsbCBtZDp3LWZ1bGwgbGc6dy0xLzFcIiB9LFxuICAgIFtcbiAgICAgIF9jKFwidngtY2FyZFwiLCBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJzbTp3LWZ1bGwgbWQ6dy0xLzIgbGc6dy0xLzIgbXgtYXV0b1wiIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX2MoXCJ1c2VyXCIsIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBpc05ldzogZmFsc2UsXG4gICAgICAgICAgICAgICAgbG9hZGluZzogX3ZtLnVwZGF0aW5nLFxuICAgICAgICAgICAgICAgIHVzZXI6IE9iamVjdC5hc3NpZ24oe30sIF92bS51c2VyKVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbjogeyBzYXZlOiBfdm0uc2F2ZSwgZmlsZUFkZGVkOiBfdm0uaW1hZ2VTZWxlY3RlZCB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0sXG4gICAgICAgICAgMVxuICAgICAgICApXG4gICAgICBdKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/New.vue?vue&type=template&id=bde46530&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/New.vue?vue&type=template&id=bde46530& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1\" },\n    [\n      _c(\"vx-card\", [\n        _c(\n          \"div\",\n          { staticClass: \"sm:w-full md:w-1/2 lg:w-1/2 mx-auto\" },\n          [\n            _c(\"user\", {\n              attrs: { isNew: true, loading: _vm.saving, user: _vm.user },\n              on: { save: _vm.save }\n            })\n          ],\n          1\n        )\n      ])\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3VzZXJzL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YmRlNDY1MzAmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvTmV3LnZ1ZT8xZDY4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcInZ4LWNvbCBzbTp3LWZ1bGwgbWQ6dy1mdWxsIGxnOnctMS8xXCIgfSxcbiAgICBbXG4gICAgICBfYyhcInZ4LWNhcmRcIiwgW1xuICAgICAgICBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwic206dy1mdWxsIG1kOnctMS8yIGxnOnctMS8yIG14LWF1dG9cIiB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFwidXNlclwiLCB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7IGlzTmV3OiB0cnVlLCBsb2FkaW5nOiBfdm0uc2F2aW5nLCB1c2VyOiBfdm0udXNlciB9LFxuICAgICAgICAgICAgICBvbjogeyBzYXZlOiBfdm0uc2F2ZSB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0sXG4gICAgICAgICAgMVxuICAgICAgICApXG4gICAgICBdKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/New.vue?vue&type=template&id=bde46530&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e&":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"vx-col sm:w-full md:w-full lg:w-1/1\" },\n    [\n      _vm.isAdmin()\n        ? _c(\"vx-card\", [\n            _c(\n              \"div\",\n              { staticClass: \"sm:w-full md:w-1/2 lg:w-1/2 mx-auto\" },\n              [\n                _c(\"user\", {\n                  attrs: {\n                    isNew: false,\n                    loading: _vm.updating,\n                    user: Object.assign({}, _vm.userData)\n                  },\n                  on: { save: _vm.save, fileAdded: _vm.imageSelected }\n                })\n              ],\n              1\n            )\n          ])\n        : _vm._e(),\n      !_vm.isAdmin()\n        ? _c(\"vx-card\", [\n            _c(\n              \"div\",\n              { staticClass: \"sm:w-full md:w-1/1 lg:w-1/1 mx-auto\" },\n              [\n                _c(\"company\", {\n                  attrs: {\n                    isNew: false,\n                    company: Object.assign({}, _vm.userData.profile)\n                  },\n                  on: {\n                    fileAdded: _vm.imageSelected,\n                    save: _vm.updateCompanyProfile\n                  }\n                })\n              ],\n              1\n            )\n          ])\n        : _vm._e(),\n      !_vm.userData.can_use_account\n        ? _c(\n            \"div\",\n            {\n              staticClass: \"mt-6 text-center bg-warning gg-banner-full-screen\"\n            },\n            [\n              _c(\"h3\", { staticClass: \"py-4 text-white\" }, [\n                _vm._v(\n                  \"Your account has been disabled. Please contact the system administrator.\"\n                )\n              ])\n            ]\n          )\n        : _vm._e()\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3VzZXJzL1Byb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVhNzUyZTFlJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL1Byb2ZpbGUudnVlPzJhZGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwidngtY29sIHNtOnctZnVsbCBtZDp3LWZ1bGwgbGc6dy0xLzFcIiB9LFxuICAgIFtcbiAgICAgIF92bS5pc0FkbWluKClcbiAgICAgICAgPyBfYyhcInZ4LWNhcmRcIiwgW1xuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwic206dy1mdWxsIG1kOnctMS8yIGxnOnctMS8yIG14LWF1dG9cIiB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXCJ1c2VyXCIsIHtcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGlzTmV3OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogX3ZtLnVwZGF0aW5nLFxuICAgICAgICAgICAgICAgICAgICB1c2VyOiBPYmplY3QuYXNzaWduKHt9LCBfdm0udXNlckRhdGEpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHsgc2F2ZTogX3ZtLnNhdmUsIGZpbGVBZGRlZDogX3ZtLmltYWdlU2VsZWN0ZWQgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgIV92bS5pc0FkbWluKClcbiAgICAgICAgPyBfYyhcInZ4LWNhcmRcIiwgW1xuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwic206dy1mdWxsIG1kOnctMS8xIGxnOnctMS8xIG14LWF1dG9cIiB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXCJjb21wYW55XCIsIHtcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGlzTmV3OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGFueTogT2JqZWN0LmFzc2lnbih7fSwgX3ZtLnVzZXJEYXRhLnByb2ZpbGUpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZUFkZGVkOiBfdm0uaW1hZ2VTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgc2F2ZTogX3ZtLnVwZGF0ZUNvbXBhbnlQcm9maWxlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAhX3ZtLnVzZXJEYXRhLmNhbl91c2VfYWNjb3VudFxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXQtNiB0ZXh0LWNlbnRlciBiZy13YXJuaW5nIGdnLWJhbm5lci1mdWxsLXNjcmVlblwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImgzXCIsIHsgc3RhdGljQ2xhc3M6IFwicHktNCB0ZXh0LXdoaXRlXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgIFwiWW91ciBhY2NvdW50IGhhcyBiZWVuIGRpc2FibGVkLiBQbGVhc2UgY29udGFjdCB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IuXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var this$1 = this\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"cal-users\" } },\n    [\n      _c(\n        \"vx-card\",\n        [\n          _c(\n            \"vs-table\",\n            {\n              attrs: { sst: true, data: _vm.users.data, search: \"\" },\n              on: {\n                search: function(e) {\n                  return _vm.handleSearch(e, this$1)\n                }\n              },\n              scopedSlots: _vm._u([\n                {\n                  key: \"default\",\n                  fn: function(ref) {\n                    var data = ref.data\n                    return _vm._l(data, function(tr, indextr) {\n                      return _c(\n                        \"vs-tr\",\n                        { key: indextr },\n                        [\n                          _c(\n                            \"vs-td\",\n                            { attrs: { data: data[indextr].fullName } },\n                            [\n                              _vm._v(\n                                \"\\n                        \" +\n                                  _vm._s(data[indextr].fullName) +\n                                  \"\\n                    \"\n                              )\n                            ]\n                          ),\n                          _c(\n                            \"vs-td\",\n                            { attrs: { data: data[indextr].email } },\n                            [\n                              _c(\n                                \"a\",\n                                {\n                                  attrs: {\n                                    href: \"mailto:\" + data[indextr].email + \"}}\"\n                                  }\n                                },\n                                [_vm._v(_vm._s(data[indextr].email))]\n                              )\n                            ]\n                          ),\n                          _c(\n                            \"vs-td\",\n                            {\n                              staticClass: \"float-right\",\n                              attrs: { data: data[indextr] }\n                            },\n                            [\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Edit\" } },\n                                [\n                                  _c(\"vs-button\", {\n                                    staticClass: \"inline-block mx-1\",\n                                    attrs: { size: \"small\", icon: \"edit\" },\n                                    on: {\n                                      click: function($event) {\n                                        return _vm.editUser(data[indextr])\n                                      }\n                                    }\n                                  })\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Disable\" } },\n                                [\n                                  data[indextr].is_enabled\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mx-1\",\n                                        attrs: {\n                                          color: \"danger\",\n                                          size: \"small\",\n                                          icon: \"delete\"\n                                        },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.disableUser(\n                                              data[indextr]\n                                            )\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"vx-tooltip\",\n                                { attrs: { text: \"Enable\" } },\n                                [\n                                  !data[indextr].is_enabled\n                                    ? _c(\"vs-button\", {\n                                        staticClass: \"inline-block mx-1\",\n                                        attrs: { size: \"small\", icon: \"check\" },\n                                        on: {\n                                          click: function($event) {\n                                            return _vm.enableUser(data[indextr])\n                                          }\n                                        }\n                                      })\n                                    : _vm._e()\n                                ],\n                                1\n                              )\n                            ],\n                            1\n                          )\n                        ],\n                        1\n                      )\n                    })\n                  }\n                }\n              ])\n            },\n            [\n              _c(\"template\", { slot: \"header\" }, [\n                _c(\"h3\", [_vm._v(\"Users\")]),\n                _c(\n                  \"div\",\n                  { staticClass: \"mx-2\" },\n                  [\n                    _c(\n                      \"vs-button\",\n                      {\n                        staticClass: \"d-inline-block\",\n                        attrs: {\n                          to: \"/users/create\",\n                          size: \"small\",\n                          icon: \"add_circle\"\n                        }\n                      },\n                      [\n                        _vm._v(\n                          \"\\n                        Create\\n                    \"\n                        )\n                      ]\n                    )\n                  ],\n                  1\n                )\n              ]),\n              _c(\n                \"template\",\n                { slot: \"thead\" },\n                [\n                  _c(\"vs-th\", [_vm._v(\"Name\")]),\n                  _c(\"vs-th\", [_vm._v(\"Email\")]),\n                  _c(\"vs-th\", { staticClass: \"float-right\" }, [\n                    _vm._v(\"Actions\")\n                  ])\n                ],\n                1\n              )\n            ],\n            2\n          ),\n          _vm.users.data && _vm.users.data.length > 0\n            ? _c(\"vs-pagination\", {\n                staticClass: \"mt-6\",\n                attrs: { total: _vm.users.meta.pagination.total_pages },\n                on: { change: _vm.handleChangePage },\n                model: {\n                  value: _vm.filters.page,\n                  callback: function($$v) {\n                    _vm.$set(_vm.filters, \"page\", $$v)\n                  },\n                  expression: \"filters.page\"\n                }\n              })\n            : _vm._e()\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3VzZXJzL1VzZXJzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYzhlYjFkMCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9Vc2Vycy52dWU/NGMyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGlzJDEgPSB0aGlzXG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgeyBhdHRyczogeyBpZDogXCJjYWwtdXNlcnNcIiB9IH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwidngtY2FyZFwiLFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcInZzLXRhYmxlXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7IHNzdDogdHJ1ZSwgZGF0YTogX3ZtLnVzZXJzLmRhdGEsIHNlYXJjaDogXCJcIiB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIHNlYXJjaDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVTZWFyY2goZSwgdGhpcyQxKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZWYuZGF0YVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLl9sKGRhdGEsIGZ1bmN0aW9uKHRyLCBpbmRleHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IGluZGV4dHIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgZGF0YTogZGF0YVtpbmRleHRyXS5mdWxsTmFtZSB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoZGF0YVtpbmRleHRyXS5mdWxsTmFtZSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgZGF0YTogZGF0YVtpbmRleHRyXS5lbWFpbCB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IFwibWFpbHRvOlwiICsgZGF0YVtpbmRleHRyXS5lbWFpbCArIFwifX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoZGF0YVtpbmRleHRyXS5lbWFpbCkpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2cy10ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBkYXRhOiBkYXRhW2luZGV4dHJdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZ4LXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyB0ZXh0OiBcIkVkaXRcIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInZzLWJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpbmxpbmUtYmxvY2sgbXgtMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgc2l6ZTogXCJzbWFsbFwiLCBpY29uOiBcImVkaXRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZWRpdFVzZXIoZGF0YVtpbmRleHRyXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2eC10b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGV4dDogXCJEaXNhYmxlXCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtpbmRleHRyXS5pc19lbmFibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwidnMtYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpbmxpbmUtYmxvY2sgbXgtMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJkYW5nZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZGlzYWJsZVVzZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtpbmRleHRyXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidngtdG9vbHRpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IHRleHQ6IFwiRW5hYmxlXCIgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWRhdGFbaW5kZXh0cl0uaXNfZW5hYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInZzLWJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaW5saW5lLWJsb2NrIG14LTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBzaXplOiBcInNtYWxsXCIsIGljb246IFwiY2hlY2tcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZW5hYmxlVXNlcihkYXRhW2luZGV4dHJdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInRlbXBsYXRlXCIsIHsgc2xvdDogXCJoZWFkZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXCJoM1wiLCBbX3ZtLl92KFwiVXNlcnNcIildKSxcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcIm14LTJcIiB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImQtaW5saW5lLWJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogXCIvdXNlcnMvY3JlYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJhZGRfY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVcXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwidGVtcGxhdGVcIixcbiAgICAgICAgICAgICAgICB7IHNsb3Q6IFwidGhlYWRcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGhcIiwgW192bS5fdihcIk5hbWVcIildKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidnMtdGhcIiwgW192bS5fdihcIkVtYWlsXCIpXSksXG4gICAgICAgICAgICAgICAgICBfYyhcInZzLXRoXCIsIHsgc3RhdGljQ2xhc3M6IFwiZmxvYXQtcmlnaHRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIkFjdGlvbnNcIilcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0udXNlcnMuZGF0YSAmJiBfdm0udXNlcnMuZGF0YS5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IF9jKFwidnMtcGFnaW5hdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXQtNlwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHRvdGFsOiBfdm0udXNlcnMubWV0YS5wYWdpbmF0aW9uLnRvdGFsX3BhZ2VzIH0sXG4gICAgICAgICAgICAgICAgb246IHsgY2hhbmdlOiBfdm0uaGFuZGxlQ2hhbmdlUGFnZSB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmZpbHRlcnMucGFnZSxcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmZpbHRlcnMsIFwicGFnZVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJmaWx0ZXJzLnBhZ2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"form\",\n    {\n      attrs: { autocomplete: \"off\" },\n      on: {\n        submit: function($event) {\n          $event.preventDefault()\n          return _vm.$emit(\"save\", _vm.company)\n        }\n      }\n    },\n    [\n      _c(\n        \"vs-row\",\n        [\n          !_vm.isNew\n            ? _c(\n                \"vs-col\",\n                { staticClass: \"w-1/5\" },\n                [\n                  _c(\"h1\", [_vm._v(\" \")]),\n                  _c(\"media-upload\", {\n                    attrs: {\n                      className: \"user-avatar\",\n                      loading: false,\n                      resource: _vm.company.avatar\n                    },\n                    on: { fileAdded: _vm.imageSelected }\n                  })\n                ],\n                1\n              )\n            : _vm._e(),\n          _c(\n            \"vs-col\",\n            { class: _vm.isNew ? \"w-full\" : \"w-4/5\" },\n            [\n              _c(\"vs-input\", {\n                directives: [\n                  {\n                    name: \"validate\",\n                    rawName: \"v-validate\",\n                    value: \"required\",\n                    expression: \"'required'\"\n                  }\n                ],\n                staticClass: \"w-full no-icon-border\",\n                attrs: {\n                  \"data-vv-validate-on\": \"blur\",\n                  name: \"name\",\n                  icon: \"icon icon-user\",\n                  autocomplete: \"off\",\n                  \"icon-pack\": \"feather\",\n                  \"label-placeholder\": \"Name\",\n                  value: \"{company.name}\"\n                },\n                model: {\n                  value: _vm.company.name,\n                  callback: function($$v) {\n                    _vm.$set(_vm.company, \"name\", $$v)\n                  },\n                  expression: \"company.name\"\n                }\n              }),\n              _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                _vm._v(_vm._s(_vm.errors.first(\"name\")))\n              ]),\n              _c(\"vs-input\", {\n                directives: [\n                  {\n                    name: \"validate\",\n                    rawName: \"v-validate\",\n                    value: \"required\",\n                    expression: \"'required'\"\n                  }\n                ],\n                staticClass: \"w-full no-icon-border\",\n                attrs: {\n                  \"data-vv-validate-on\": \"blur\",\n                  name: \"company\",\n                  icon: \"icon icon-briefcase\",\n                  autocomplete: \"off\",\n                  \"icon-pack\": \"feather\",\n                  \"label-placeholder\": \"Company\"\n                },\n                model: {\n                  value: _vm.company.company,\n                  callback: function($$v) {\n                    _vm.$set(_vm.company, \"company\", $$v)\n                  },\n                  expression: \"company.company\"\n                }\n              }),\n              _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                _vm._v(_vm._s(_vm.errors.first(\"company\")))\n              ]),\n              _c(\"vs-input\", {\n                directives: [\n                  {\n                    name: \"validate\",\n                    rawName: \"v-validate\",\n                    value: \"required|email|min:3\",\n                    expression: \"'required|email|min:3'\"\n                  }\n                ],\n                staticClass: \"w-full no-icon-border\",\n                attrs: {\n                  \"data-vv-validate-on\": \"blur\",\n                  name: \"email\",\n                  icon: \"icon icon-mail\",\n                  autocomplete: \"off\",\n                  \"icon-pack\": \"feather\",\n                  \"label-placeholder\": \"Email\"\n                },\n                model: {\n                  value: _vm.company.email,\n                  callback: function($$v) {\n                    _vm.$set(_vm.company, \"email\", $$v)\n                  },\n                  expression: \"company.email\"\n                }\n              }),\n              _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                _vm._v(_vm._s(_vm.errors.first(\"email\")))\n              ]),\n              _vm.isNew\n                ? _c(\"vs-input\", {\n                    directives: [\n                      {\n                        name: \"validate\",\n                        rawName: \"v-validate\",\n                        value: \"required\",\n                        expression: \"'required'\"\n                      }\n                    ],\n                    staticClass: \"w-full inline-block no-icon-border\",\n                    attrs: {\n                      type: \"password\",\n                      \"data-vv-validate-on\": \"blur\",\n                      name: \"password\",\n                      icon: \"icon icon-lock\",\n                      autocomplete: \"off\",\n                      \"icon-pack\": \"feather\",\n                      \"label-placeholder\": \"Password\"\n                    },\n                    model: {\n                      value: _vm.company.password,\n                      callback: function($$v) {\n                        _vm.$set(_vm.company, \"password\", $$v)\n                      },\n                      expression: \"company.password\"\n                    }\n                  })\n                : _vm._e(),\n              _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                _vm._v(_vm._s(_vm.errors.first(\"password\")))\n              ]),\n              _vm.isNew\n                ? _c(\"vs-input\", {\n                    directives: [\n                      {\n                        name: \"validate\",\n                        rawName: \"v-validate\",\n                        value: \"required\",\n                        expression: \"'required'\"\n                      }\n                    ],\n                    staticClass: \"w-full inline-block no-icon-border\",\n                    attrs: {\n                      type: \"password\",\n                      \"data-vv-validate-on\": \"blur\",\n                      name: \"password_confirmation\",\n                      icon: \"icon icon-lock\",\n                      autocomplete: \"off\",\n                      \"icon-pack\": \"feather\",\n                      \"label-placeholder\": \"Password Confirmation\"\n                    },\n                    model: {\n                      value: _vm.company.password_confirmation,\n                      callback: function($$v) {\n                        _vm.$set(_vm.company, \"password_confirmation\", $$v)\n                      },\n                      expression: \"company.password_confirmation\"\n                    }\n                  })\n                : _vm._e(),\n              _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                _vm._v(_vm._s(_vm.errors.first(\"password_confirmation\")))\n              ])\n            ],\n            1\n          )\n        ],\n        1\n      ),\n      _c(\n        \"vs-row\",\n        [\n          _c(\n            \"vs-col\",\n            { staticClass: \"w-full\" },\n            [\n              _c(\"vs-input\", {\n                directives: [\n                  {\n                    name: \"validate\",\n                    rawName: \"v-validate\",\n                    value: \"\",\n                    expression: \"''\"\n                  }\n                ],\n                staticClass: \"w-full no-icon-border\",\n                attrs: {\n                  \"data-vv-validate-on\": \"blur\",\n                  name: \"phone\",\n                  icon: \"icon icon-phone\",\n                  autocomplete: \"off\",\n                  \"icon-pack\": \"feather\",\n                  \"label-placeholder\": \"Phone\"\n                },\n                model: {\n                  value: _vm.company.phone,\n                  callback: function($$v) {\n                    _vm.$set(_vm.company, \"phone\", $$v)\n                  },\n                  expression: \"company.phone\"\n                }\n              }),\n              _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                _vm._v(_vm._s(_vm.errors.first(\"phone\")))\n              ]),\n              _c(\"label\", { staticClass: \"block gg-input-label\" }, [\n                _vm._v(\"Country\")\n              ]),\n              _c(\"vue-simple-suggest\", {\n                ref: \"suggestComponent\",\n                attrs: {\n                  debounce: 500,\n                  \"filter-by-query\": true,\n                  list: _vm.getCountries,\n                  \"max-suggestions\": 10,\n                  \"min-length\": 2,\n                  mode: \"select\",\n                  \"nullable-select\": true,\n                  \"display-attribute\": \"name\",\n                  placeholder: \"Country\",\n                  \"value-attribute\": \"id\"\n                },\n                on: { select: _vm.onSuggestSelect },\n                scopedSlots: _vm._u(\n                  [\n                    {\n                      key: \"misc-item-above\",\n                      fn: function(ref) {\n                        var suggestions = ref.suggestions\n                        var query = ref.query\n                        return [\n                          suggestions.length === 0\n                            ? _c(\"div\", { staticClass: \"misc-item\" }, [\n                                _c(\"span\", [_vm._v(\"No results\")])\n                              ])\n                            : _vm._e()\n                        ]\n                      }\n                    },\n                    {\n                      key: \"suggestion-item\",\n                      fn: function(scope) {\n                        return _c(\n                          \"div\",\n                          { attrs: { title: scope.suggestion.description } },\n                          [\n                            _c(\"div\", { staticClass: \"text\" }, [\n                              _c(\"span\", {\n                                domProps: {\n                                  innerHTML: _vm._s(_vm.boldenSuggestion(scope))\n                                }\n                              })\n                            ])\n                          ]\n                        )\n                      }\n                    },\n                    {\n                      key: \"misc-item-below\",\n                      fn: function(ref) {\n                        var suggestions = ref.suggestions\n                        return _vm.loadingCountries\n                          ? _c(\"div\", { staticClass: \"misc-item\" }, [\n                              _c(\"span\", [_vm._v(\"Loading...\")])\n                            ])\n                          : _vm._e()\n                      }\n                    }\n                  ],\n                  null,\n                  true\n                ),\n                model: {\n                  value: _vm.company.country,\n                  callback: function($$v) {\n                    _vm.$set(_vm.company, \"country\", $$v)\n                  },\n                  expression: \"company.country\"\n                }\n              }),\n              _c(\"div\", { staticClass: \"w-full\" }, [\n                _c(\n                  \"div\",\n                  { staticClass: \"w-full md:w-1/3 md:inline-flex\" },\n                  [\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"\",\n                          expression: \"''\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border inline-block\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"city\",\n                        icon: \"icon icon-map-pin\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"City\"\n                      },\n                      model: {\n                        value: _vm.company.city,\n                        callback: function($$v) {\n                          _vm.$set(_vm.company, \"city\", $$v)\n                        },\n                        expression: \"company.city\"\n                      }\n                    }),\n                    _c(\n                      \"span\",\n                      {\n                        staticClass:\n                          \"text-danger text-sm inline-block md:hidden\"\n                      },\n                      [_vm._v(_vm._s(_vm.errors.first(\"city\")))]\n                    )\n                  ],\n                  1\n                ),\n                _c(\n                  \"div\",\n                  {\n                    staticClass:\n                      \"w-full md:w-1/2 md:inline-flex md:px-4 sm:px-0\"\n                  },\n                  [\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"\",\n                          expression: \"''\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"street\",\n                        icon: \"icon icon-map-pin\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Street\"\n                      },\n                      model: {\n                        value: _vm.company.street,\n                        callback: function($$v) {\n                          _vm.$set(_vm.company, \"street\", $$v)\n                        },\n                        expression: \"company.street\"\n                      }\n                    }),\n                    _c(\n                      \"span\",\n                      {\n                        staticClass:\n                          \"text-danger text-sm inline-block md:hidden\"\n                      },\n                      [_vm._v(_vm._s(_vm.errors.first(\"street\")))]\n                    )\n                  ],\n                  1\n                ),\n                _c(\n                  \"div\",\n                  { staticClass: \"w-full md:w-1/6 md:inline-flex\" },\n                  [\n                    _c(\"vs-input\", {\n                      directives: [\n                        {\n                          name: \"validate\",\n                          rawName: \"v-validate\",\n                          value: \"\",\n                          expression: \"''\"\n                        }\n                      ],\n                      staticClass: \"w-full no-icon-border\",\n                      attrs: {\n                        \"data-vv-validate-on\": \"blur\",\n                        name: \"zip\",\n                        icon: \"icon icon-map-pin\",\n                        autocomplete: \"off\",\n                        \"icon-pack\": \"feather\",\n                        \"label-placeholder\": \"Zip code\"\n                      },\n                      model: {\n                        value: _vm.company.zip_code,\n                        callback: function($$v) {\n                          _vm.$set(_vm.company, \"zip_code\", $$v)\n                        },\n                        expression: \"company.zip_code\"\n                      }\n                    }),\n                    _c(\n                      \"span\",\n                      {\n                        staticClass:\n                          \"text-danger text-sm inline-block md:hidden\"\n                      },\n                      [_vm._v(_vm._s(_vm.errors.first(\"zip\")))]\n                    )\n                  ],\n                  1\n                )\n              ]),\n              _c(\"div\", { staticClass: \"w-full hidden md:flex\" }, [\n                _c(\"div\", { staticClass: \"w-full md:w-1/3 inline-flex\" }, [\n                  _c(\n                    \"span\",\n                    { staticClass: \"text-danger text-sm inline-block\" },\n                    [_vm._v(_vm._s(_vm.errors.first(\"city\")))]\n                  )\n                ]),\n                _c(\"div\", { staticClass: \"w-full md:w-1/2 inline-flex\" }, [\n                  _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                    _vm._v(_vm._s(_vm.errors.first(\"street\")))\n                  ])\n                ]),\n                _c(\"div\", { staticClass: \"w-full md:w-1/6 inline-flex\" }, [\n                  _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n                    _vm._v(_vm._s(_vm.errors.first(\"zip\")))\n                  ])\n                ])\n              ]),\n              _c(\n                \"div\",\n                { staticClass: \"justify-between my-5\" },\n                [\n                  _c(\n                    \"vs-button\",\n                    {\n                      staticClass: \"mr-2\",\n                      attrs: {\n                        color: \"primary\",\n                        disabled: !_vm.validateForm,\n                        button: \"submit\"\n                      }\n                    },\n                    [_vm._v(\"Save\")]\n                  ),\n                  _c(\n                    \"vs-button\",\n                    {\n                      staticClass: \"mr-2\",\n                      attrs: { color: \"warning\" },\n                      on: { click: _vm.back }\n                    },\n                    [_vm._v(\"Cancel\")]\n                  )\n                ],\n                1\n              )\n            ],\n            1\n          )\n        ],\n        1\n      )\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3VzZXJzL2NvbXBvbmVudHMvQ29tcGFueVByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ4NTE3MDBkJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL2NvbXBvbmVudHMvQ29tcGFueVByb2ZpbGUudnVlP2Y0MDUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImZvcm1cIixcbiAgICB7XG4gICAgICBhdHRyczogeyBhdXRvY29tcGxldGU6IFwib2ZmXCIgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIHN1Ym1pdDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICByZXR1cm4gX3ZtLiRlbWl0KFwic2F2ZVwiLCBfdm0uY29tcGFueSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwidnMtcm93XCIsXG4gICAgICAgIFtcbiAgICAgICAgICAhX3ZtLmlzTmV3XG4gICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgIFwidnMtY29sXCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ3LTEvNVwiIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJoMVwiLCBbX3ZtLl92KFwiwqBcIildKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwibWVkaWEtdXBsb2FkXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwidXNlci1hdmF0YXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZTogX3ZtLmNvbXBhbnkuYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uOiB7IGZpbGVBZGRlZDogX3ZtLmltYWdlU2VsZWN0ZWQgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidnMtY29sXCIsXG4gICAgICAgICAgICB7IGNsYXNzOiBfdm0uaXNOZXcgPyBcInctZnVsbFwiIDogXCJ3LTQvNVwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwidnMtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtdmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIncmVxdWlyZWQnXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctZnVsbCBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLXVzZXJcIixcbiAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIk5hbWVcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIntjb21wYW55Lm5hbWV9XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmNvbXBhbnkubmFtZSxcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmNvbXBhbnksIFwibmFtZVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjb21wYW55Lm5hbWVcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZXJyb3JzLmZpcnN0KFwibmFtZVwiKSkpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcInZzLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwidmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcInJlcXVpcmVkXCIsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgXCJkYXRhLXZ2LXZhbGlkYXRlLW9uXCI6IFwiYmx1clwiLFxuICAgICAgICAgICAgICAgICAgbmFtZTogXCJjb21wYW55XCIsXG4gICAgICAgICAgICAgICAgICBpY29uOiBcImljb24gaWNvbi1icmllZmNhc2VcIixcbiAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIkNvbXBhbnlcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY29tcGFueS5jb21wYW55LFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uY29tcGFueSwgXCJjb21wYW55XCIsICQkdilcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImNvbXBhbnkuY29tcGFueVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1kYW5nZXIgdGV4dC1zbVwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lcnJvcnMuZmlyc3QoXCJjb21wYW55XCIpKSlcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIF9jKFwidnMtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtdmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwicmVxdWlyZWR8ZW1haWx8bWluOjNcIixcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIncmVxdWlyZWR8ZW1haWx8bWluOjMnXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctZnVsbCBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBcImVtYWlsXCIsXG4gICAgICAgICAgICAgICAgICBpY29uOiBcImljb24gaWNvbi1tYWlsXCIsXG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJFbWFpbFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5jb21wYW55LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uY29tcGFueSwgXCJlbWFpbFwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjb21wYW55LmVtYWlsXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcImVtYWlsXCIpKSlcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIF92bS5pc05ld1xuICAgICAgICAgICAgICAgID8gX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtdmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcInJlcXVpcmVkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIGlubGluZS1ibG9jayBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLWxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJpY29uLXBhY2tcIjogXCJmZWF0aGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIlBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmNvbXBhbnkucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmNvbXBhbnksIFwicGFzc3dvcmRcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjb21wYW55LnBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcInBhc3N3b3JkXCIpKSlcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIF92bS5pc05ld1xuICAgICAgICAgICAgICAgID8gX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtdmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcInJlcXVpcmVkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIGlubGluZS1ibG9jayBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJwYXNzd29yZF9jb25maXJtYXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcImljb24gaWNvbi1sb2NrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJQYXNzd29yZCBDb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY29tcGFueS5wYXNzd29yZF9jb25maXJtYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmNvbXBhbnksIFwicGFzc3dvcmRfY29uZmlybWF0aW9uXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiY29tcGFueS5wYXNzd29yZF9jb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZXJyb3JzLmZpcnN0KFwicGFzc3dvcmRfY29uZmlybWF0aW9uXCIpKSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApLFxuICAgICAgX2MoXG4gICAgICAgIFwidnMtcm93XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidnMtY29sXCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInctZnVsbFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwidnMtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtdmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiJydcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIFwiZGF0YS12di12YWxpZGF0ZS1vblwiOiBcImJsdXJcIixcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwicGhvbmVcIixcbiAgICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLXBob25lXCIsXG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJQaG9uZVwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5jb21wYW55LnBob25lLFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uY29tcGFueSwgXCJwaG9uZVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjb21wYW55LnBob25lXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcInBob25lXCIpKSlcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIF9jKFwibGFiZWxcIiwgeyBzdGF0aWNDbGFzczogXCJibG9jayBnZy1pbnB1dC1sYWJlbFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoXCJDb3VudHJ5XCIpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcInZ1ZS1zaW1wbGUtc3VnZ2VzdFwiLCB7XG4gICAgICAgICAgICAgICAgcmVmOiBcInN1Z2dlc3RDb21wb25lbnRcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgZGVib3VuY2U6IDUwMCxcbiAgICAgICAgICAgICAgICAgIFwiZmlsdGVyLWJ5LXF1ZXJ5XCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBsaXN0OiBfdm0uZ2V0Q291bnRyaWVzLFxuICAgICAgICAgICAgICAgICAgXCJtYXgtc3VnZ2VzdGlvbnNcIjogMTAsXG4gICAgICAgICAgICAgICAgICBcIm1pbi1sZW5ndGhcIjogMixcbiAgICAgICAgICAgICAgICAgIG1vZGU6IFwic2VsZWN0XCIsXG4gICAgICAgICAgICAgICAgICBcIm51bGxhYmxlLXNlbGVjdFwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgXCJkaXNwbGF5LWF0dHJpYnV0ZVwiOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIkNvdW50cnlcIixcbiAgICAgICAgICAgICAgICAgIFwidmFsdWUtYXR0cmlidXRlXCI6IFwiaWRcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHsgc2VsZWN0OiBfdm0ub25TdWdnZXN0U2VsZWN0IH0sXG4gICAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJtaXNjLWl0ZW0tYWJvdmVcIixcbiAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3VnZ2VzdGlvbnMgPSByZWYuc3VnZ2VzdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxdWVyeSA9IHJlZi5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcIm1pc2MtaXRlbVwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCJObyByZXN1bHRzXCIpXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJzdWdnZXN0aW9uLWl0ZW1cIixcbiAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oc2NvcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyB0aXRsZTogc2NvcGUuc3VnZ2VzdGlvbi5kZXNjcmlwdGlvbiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVySFRNTDogX3ZtLl9zKF92bS5ib2xkZW5TdWdnZXN0aW9uKHNjb3BlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBcIm1pc2MtaXRlbS1iZWxvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdWdnZXN0aW9ucyA9IHJlZi5zdWdnZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5sb2FkaW5nQ291bnRyaWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJtaXNjLWl0ZW1cIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW192bS5fdihcIkxvYWRpbmcuLi5cIildKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY29tcGFueS5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uY29tcGFueSwgXCJjb3VudHJ5XCIsICQkdilcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImNvbXBhbnkuY291bnRyeVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ3LWZ1bGxcIiB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgbWQ6dy0xLzMgbWQ6aW5saW5lLWZsZXhcIiB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcInZzLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwidmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIicnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctZnVsbCBuby1pY29uLWJvcmRlciBpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXZ2LXZhbGlkYXRlLW9uXCI6IFwiYmx1clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJjaXR5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcImljb24gaWNvbi1tYXAtcGluXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJDaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmNvbXBhbnkuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmNvbXBhbnksIFwiY2l0eVwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjb21wYW55LmNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInRleHQtZGFuZ2VyIHRleHQtc20gaW5saW5lLWJsb2NrIG1kOmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uZXJyb3JzLmZpcnN0KFwiY2l0eVwiKSkpXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICBcInctZnVsbCBtZDp3LTEvMiBtZDppbmxpbmUtZmxleCBtZDpweC00IHNtOnB4LTBcIlxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCInJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgbm8taWNvbi1ib3JkZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXZ2LXZhbGlkYXRlLW9uXCI6IFwiYmx1clwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzdHJlZXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLW1hcC1waW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIlN0cmVldFwiXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5jb21wYW55LnN0cmVldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmNvbXBhbnksIFwic3RyZWV0XCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImNvbXBhbnkuc3RyZWV0XCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtIGlubGluZS1ibG9jayBtZDpoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcInN0cmVldFwiKSkpXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgbWQ6dy0xLzYgbWQ6aW5saW5lLWZsZXhcIiB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcInZzLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwidmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIicnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctZnVsbCBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInppcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJpY29uIGljb24tbWFwLXBpblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpY29uLXBhY2tcIjogXCJmZWF0aGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiWmlwIGNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY29tcGFueS56aXBfY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmNvbXBhbnksIFwiemlwX2NvZGVcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiY29tcGFueS56aXBfY29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidGV4dC1kYW5nZXIgdGV4dC1zbSBpbmxpbmUtYmxvY2sgbWQ6aGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5lcnJvcnMuZmlyc3QoXCJ6aXBcIikpKV1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInctZnVsbCBoaWRkZW4gbWQ6ZmxleFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInctZnVsbCBtZDp3LTEvMyBpbmxpbmUtZmxleFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtIGlubGluZS1ibG9ja1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5lcnJvcnMuZmlyc3QoXCJjaXR5XCIpKSldXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ3LWZ1bGwgbWQ6dy0xLzIgaW5saW5lLWZsZXhcIiB9LCBbXG4gICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LWRhbmdlciB0ZXh0LXNtXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lcnJvcnMuZmlyc3QoXCJzdHJlZXRcIikpKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInctZnVsbCBtZDp3LTEvNiBpbmxpbmUtZmxleFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcInppcFwiKSkpXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwianVzdGlmeS1iZXR3ZWVuIG15LTVcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXItMlwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIV92bS52YWxpZGF0ZUZvcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJTYXZlXCIpXVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInZzLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXItMlwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGNvbG9yOiBcIndhcm5pbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uYmFjayB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJDYW5jZWxcIildXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d&\n");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210&":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e4057efa-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"form\",\n    {\n      attrs: { autocomplete: \"off\" },\n      on: {\n        submit: function($event) {\n          $event.preventDefault()\n          return _vm.$emit(\"save\", _vm.user)\n        }\n      }\n    },\n    [\n      _c(\n        \"div\",\n        { staticClass: \"p-8\" },\n        [\n          !_vm.isNew\n            ? _c(\n                \"div\",\n                [\n                  _c(\"media-upload\", {\n                    attrs: {\n                      className: \"user-avatar\",\n                      loading: _vm.loading,\n                      resource: _vm.user.avatar\n                    },\n                    on: { fileAdded: _vm.imageSelected }\n                  })\n                ],\n                1\n              )\n            : _vm._e(),\n          _c(\"vs-input\", {\n            directives: [\n              {\n                name: \"validate\",\n                rawName: \"v-validate\",\n                value: \"required|min:3\",\n                expression: \"'required|min:3'\"\n              }\n            ],\n            staticClass: \"w-full no-icon-border\",\n            attrs: {\n              \"data-vv-validate-on\": \"blur\",\n              name: \"name\",\n              icon: \"icon icon-user\",\n              autocomplete: \"off\",\n              \"icon-pack\": \"feather\",\n              \"label-placeholder\": \"Name\"\n            },\n            model: {\n              value: _vm.user.name,\n              callback: function($$v) {\n                _vm.$set(_vm.user, \"name\", $$v)\n              },\n              expression: \"user.name\"\n            }\n          }),\n          _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n            _vm._v(_vm._s(_vm.errors.first(\"name\")))\n          ]),\n          _c(\"vs-input\", {\n            directives: [\n              {\n                name: \"validate\",\n                rawName: \"v-validate\",\n                value: \"required|min:3\",\n                expression: \"'required|min:3'\"\n              }\n            ],\n            staticClass: \"w-full no-icon-border\",\n            attrs: {\n              \"data-vv-validate-on\": \"blur\",\n              name: \"surname\",\n              icon: \"icon icon-user\",\n              autocomplete: \"off\",\n              \"icon-pack\": \"feather\",\n              \"label-placeholder\": \"Surname\"\n            },\n            model: {\n              value: _vm.user.surname,\n              callback: function($$v) {\n                _vm.$set(_vm.user, \"surname\", $$v)\n              },\n              expression: \"user.surname\"\n            }\n          }),\n          _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n            _vm._v(_vm._s(_vm.errors.first(\"surname\")))\n          ]),\n          _vm.isNew\n            ? _c(\"vs-input\", {\n                directives: [\n                  {\n                    name: \"validate\",\n                    rawName: \"v-validate\",\n                    value: \"required|email|min:3\",\n                    expression: \"'required|email|min:3'\"\n                  }\n                ],\n                staticClass: \"w-full no-icon-border\",\n                attrs: {\n                  \"data-vv-validate-on\": \"blur\",\n                  name: \"email\",\n                  icon: \"icon icon-mail\",\n                  autocomplete: \"off\",\n                  \"icon-pack\": \"feather\",\n                  \"label-placeholder\": \"Email\"\n                },\n                model: {\n                  value: _vm.user.email,\n                  callback: function($$v) {\n                    _vm.$set(_vm.user, \"email\", $$v)\n                  },\n                  expression: \"user.email\"\n                }\n              })\n            : _vm._e(),\n          _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n            _vm._v(_vm._s(_vm.errors.first(\"email\")))\n          ]),\n          _vm.isNew\n            ? _c(\n                \"div\",\n                {\n                  staticClass:\n                    \"vs-component vs-input w-full no-icon-border vs-input-primary is-label-placeholder mb-8\"\n                },\n                [\n                  _c(\n                    \"label\",\n                    {\n                      staticClass: \"form-control-placeholder gg-default-label\"\n                    },\n                    [_vm._v(\"Role\")]\n                  ),\n                  _c(\"Multiselect\", {\n                    attrs: {\n                      value: \"id\",\n                      placeholder: \"Select Role\",\n                      options: _vm.roles,\n                      label: \"name\",\n                      \"track-by\": \"name\",\n                      multiple: false\n                    },\n                    on: { select: _vm.setRoleId },\n                    model: {\n                      value: _vm.user.role,\n                      callback: function($$v) {\n                        _vm.$set(_vm.user, \"role\", $$v)\n                      },\n                      expression: \"user.role\"\n                    }\n                  })\n                ],\n                1\n              )\n            : _vm._e(),\n          _vm.isNew\n            ? _c(\"vs-input\", {\n                directives: [\n                  {\n                    name: \"validate\",\n                    rawName: \"v-validate\",\n                    value: \"required|min:3\",\n                    expression: \"'required|min:3'\"\n                  }\n                ],\n                staticClass: \"w-full inline-block no-icon-border\",\n                attrs: {\n                  type: \"password\",\n                  \"data-vv-validate-on\": \"blur\",\n                  name: \"password\",\n                  icon: \"icon icon-lock\",\n                  autocomplete: \"off\",\n                  \"icon-pack\": \"feather\",\n                  \"label-placeholder\": \"Password\"\n                },\n                model: {\n                  value: _vm.user.password,\n                  callback: function($$v) {\n                    _vm.$set(_vm.user, \"password\", $$v)\n                  },\n                  expression: \"user.password\"\n                }\n              })\n            : _vm._e(),\n          _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n            _vm._v(_vm._s(_vm.errors.first(\"password\")))\n          ]),\n          _vm.isNew\n            ? _c(\"vs-input\", {\n                directives: [\n                  {\n                    name: \"validate\",\n                    rawName: \"v-validate\",\n                    value: \"required|min:3\",\n                    expression: \"'required|min:3'\"\n                  }\n                ],\n                staticClass: \"w-full inline-block no-icon-border\",\n                attrs: {\n                  type: \"password\",\n                  \"data-vv-validate-on\": \"blur\",\n                  name: \"password\",\n                  icon: \"icon icon-lock\",\n                  autocomplete: \"off\",\n                  \"icon-pack\": \"feather\",\n                  \"label-placeholder\": \"Password Confirmation\"\n                },\n                model: {\n                  value: _vm.user.password_confirmation,\n                  callback: function($$v) {\n                    _vm.$set(_vm.user, \"password_confirmation\", $$v)\n                  },\n                  expression: \"user.password_confirmation\"\n                }\n              })\n            : _vm._e(),\n          _c(\"span\", { staticClass: \"text-danger text-sm\" }, [\n            _vm._v(_vm._s(_vm.errors.first(\"password\")))\n          ]),\n          _c(\n            \"div\",\n            { staticClass: \"justify-between my-5\" },\n            [\n              _c(\n                \"vs-button\",\n                {\n                  staticClass: \"mr-2\",\n                  attrs: {\n                    color: \"primary\",\n                    disabled: !_vm.validateForm,\n                    button: \"submit\"\n                  }\n                },\n                [_vm._v(\"Save\")]\n              ),\n              _c(\n                \"vs-button\",\n                {\n                  staticClass: \"mr-2\",\n                  attrs: { color: \"warning\" },\n                  on: { click: _vm.back }\n                },\n                [_vm._v(\"Cancel\")]\n              )\n            ],\n            1\n          )\n        ],\n        1\n      )\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL3NyYy9tb2R1bGVzL3VzZXJzL2NvbXBvbmVudHMvVXNlckZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIxMzQ1MjEwJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL2NvbXBvbmVudHMvVXNlckZvcm0udnVlPzgyMWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImZvcm1cIixcbiAgICB7XG4gICAgICBhdHRyczogeyBhdXRvY29tcGxldGU6IFwib2ZmXCIgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIHN1Ym1pdDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICByZXR1cm4gX3ZtLiRlbWl0KFwic2F2ZVwiLCBfdm0udXNlcilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicC04XCIgfSxcbiAgICAgICAgW1xuICAgICAgICAgICFfdm0uaXNOZXdcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcIm1lZGlhLXVwbG9hZFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInVzZXItYXZhdGFyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogX3ZtLmxvYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IF92bS51c2VyLmF2YXRhclxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbjogeyBmaWxlQWRkZWQ6IF92bS5pbWFnZVNlbGVjdGVkIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IFwicmVxdWlyZWR8bWluOjNcIixcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZHxtaW46MydcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIsXG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgICAgICBpY29uOiBcImljb24gaWNvbi11c2VyXCIsXG4gICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgXCJpY29uLXBhY2tcIjogXCJmZWF0aGVyXCIsXG4gICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJOYW1lXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnVzZXIubmFtZSxcbiAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS51c2VyLCBcIm5hbWVcIiwgJCR2KVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInVzZXIubmFtZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1kYW5nZXIgdGV4dC1zbVwiIH0sIFtcbiAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcIm5hbWVcIikpKVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF9jKFwidnMtaW5wdXRcIiwge1xuICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJ2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcInJlcXVpcmVkfG1pbjozXCIsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIncmVxdWlyZWR8bWluOjMnXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctZnVsbCBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgXCJkYXRhLXZ2LXZhbGlkYXRlLW9uXCI6IFwiYmx1clwiLFxuICAgICAgICAgICAgICBuYW1lOiBcInN1cm5hbWVcIixcbiAgICAgICAgICAgICAgaWNvbjogXCJpY29uIGljb24tdXNlclwiLFxuICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiU3VybmFtZVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS51c2VyLnN1cm5hbWUsXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0udXNlciwgXCJzdXJuYW1lXCIsICQkdilcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ1c2VyLnN1cm5hbWVcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lcnJvcnMuZmlyc3QoXCJzdXJuYW1lXCIpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uaXNOZXdcbiAgICAgICAgICAgID8gX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJyZXF1aXJlZHxlbWFpbHxtaW46M1wiLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZHxlbWFpbHxtaW46MydcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIG5vLWljb24tYm9yZGVyXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIFwiZGF0YS12di12YWxpZGF0ZS1vblwiOiBcImJsdXJcIixcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwiZW1haWxcIixcbiAgICAgICAgICAgICAgICAgIGljb246IFwiaWNvbiBpY29uLW1haWxcIixcbiAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgIFwiaWNvbi1wYWNrXCI6IFwiZmVhdGhlclwiLFxuICAgICAgICAgICAgICAgICAgXCJsYWJlbC1wbGFjZWhvbGRlclwiOiBcIkVtYWlsXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnVzZXIuZW1haWwsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS51c2VyLCBcImVtYWlsXCIsICQkdilcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInVzZXIuZW1haWxcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1kYW5nZXIgdGV4dC1zbVwiIH0sIFtcbiAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcImVtYWlsXCIpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uaXNOZXdcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgXCJ2cy1jb21wb25lbnQgdnMtaW5wdXQgdy1mdWxsIG5vLWljb24tYm9yZGVyIHZzLWlucHV0LXByaW1hcnkgaXMtbGFiZWwtcGxhY2Vob2xkZXIgbWItOFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJsYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyIGdnLWRlZmF1bHQtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiUm9sZVwiKV1cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfYyhcIk11bHRpc2VsZWN0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIlNlbGVjdCBSb2xlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLnJvbGVzLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbjogeyBzZWxlY3Q6IF92bS5zZXRSb2xlSWQgfSxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnVzZXIucm9sZSxcbiAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0udXNlciwgXCJyb2xlXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwidXNlci5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uaXNOZXdcbiAgICAgICAgICAgID8gX2MoXCJ2cy1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi12YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJyZXF1aXJlZHxtaW46M1wiLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIidyZXF1aXJlZHxtaW46MydcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidy1mdWxsIGlubGluZS1ibG9jayBuby1pY29uLWJvcmRlclwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgICBcImRhdGEtdnYtdmFsaWRhdGUtb25cIjogXCJibHVyXCIsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgICBpY29uOiBcImljb24gaWNvbi1sb2NrXCIsXG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICBcImljb24tcGFja1wiOiBcImZlYXRoZXJcIixcbiAgICAgICAgICAgICAgICAgIFwibGFiZWwtcGxhY2Vob2xkZXJcIjogXCJQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS51c2VyLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0udXNlciwgXCJwYXNzd29yZFwiLCAkJHYpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ1c2VyLnBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRleHQtZGFuZ2VyIHRleHQtc21cIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lcnJvcnMuZmlyc3QoXCJwYXNzd29yZFwiKSkpXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLmlzTmV3XG4gICAgICAgICAgICA/IF9jKFwidnMtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtdmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwicmVxdWlyZWR8bWluOjNcIixcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIncmVxdWlyZWR8bWluOjMnXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInctZnVsbCBpbmxpbmUtYmxvY2sgbm8taWNvbi1ib3JkZXJcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgXCJkYXRhLXZ2LXZhbGlkYXRlLW9uXCI6IFwiYmx1clwiLFxuICAgICAgICAgICAgICAgICAgbmFtZTogXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgaWNvbjogXCJpY29uIGljb24tbG9ja1wiLFxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgXCJpY29uLXBhY2tcIjogXCJmZWF0aGVyXCIsXG4gICAgICAgICAgICAgICAgICBcImxhYmVsLXBsYWNlaG9sZGVyXCI6IFwiUGFzc3dvcmQgQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnVzZXIucGFzc3dvcmRfY29uZmlybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0udXNlciwgXCJwYXNzd29yZF9jb25maXJtYXRpb25cIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwidXNlci5wYXNzd29yZF9jb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1kYW5nZXIgdGV4dC1zbVwiIH0sIFtcbiAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVycm9ycy5maXJzdChcInBhc3N3b3JkXCIpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImp1c3RpZnktYmV0d2VlbiBteS01XCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLnZhbGlkYXRlRm9ybSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBcInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl92KFwiU2F2ZVwiKV1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ2cy1idXR0b25cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtci0yXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogXCJ3YXJuaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uYmFjayB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl92KFwiQ2FuY2VsXCIpXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210&\n");

/***/ }),

/***/ "./node_modules/clipboard/dist/clipboard.min.js":
/*!******************************************************!*\
  !*** ./node_modules/clipboard/dist/clipboard.min.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/*!\n * clipboard.js v2.0.4\n * https://zenorocha.github.io/clipboard.js\n * \n * Licensed MIT © Zeno Rocha\n */\n!function(t,e){ true?module.exports=e():undefined}(this,function(){return function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}return r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=0)}([function(t,e,n){\"use strict\";var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=o(n(1)),c=o(n(3)),u=o(n(4));function o(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function o(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,o);var n=function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));return n.resolveOptions(e),n.listenClick(t),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,c.default),i(o,[{key:\"resolveOptions\",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=\"function\"==typeof t.action?t.action:this.defaultAction,this.target=\"function\"==typeof t.target?t.target:this.defaultTarget,this.text=\"function\"==typeof t.text?t.text:this.defaultText,this.container=\"object\"===r(t.container)?t.container:document.body}},{key:\"listenClick\",value:function(t){var e=this;this.listener=(0,u.default)(t,\"click\",function(t){return e.onClick(t)})}},{key:\"onClick\",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:\"defaultAction\",value:function(t){return s(\"action\",t)}},{key:\"defaultTarget\",value:function(t){var e=s(\"target\",t);if(e)return document.querySelector(e)}},{key:\"defaultText\",value:function(t){return s(\"text\",t)}},{key:\"destroy\",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:\"isSupported\",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[\"copy\",\"cut\"],e=\"string\"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),o}();function s(t,e){var n=\"data-clipboard-\"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=l},function(t,e,n){\"use strict\";var o,r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=n(2),c=(o=a)&&o.__esModule?o:{default:o};var u=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.resolveOptions(t),this.initSelection()}return i(e,[{key:\"resolveOptions\",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=\"\"}},{key:\"initSelection\",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:\"selectFake\",value:function(){var t=this,e=\"rtl\"==document.documentElement.getAttribute(\"dir\");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener(\"click\",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement(\"textarea\"),this.fakeElem.style.fontSize=\"12pt\",this.fakeElem.style.border=\"0\",this.fakeElem.style.padding=\"0\",this.fakeElem.style.margin=\"0\",this.fakeElem.style.position=\"absolute\",this.fakeElem.style[e?\"right\":\"left\"]=\"-9999px\";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+\"px\",this.fakeElem.setAttribute(\"readonly\",\"\"),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,c.default)(this.fakeElem),this.copyText()}},{key:\"removeFake\",value:function(){this.fakeHandler&&(this.container.removeEventListener(\"click\",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:\"selectTarget\",value:function(){this.selectedText=(0,c.default)(this.target),this.copyText()}},{key:\"copyText\",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:\"handleResult\",value:function(t){this.emitter.emit(t?\"success\":\"error\",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:\"clearSelection\",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:\"destroy\",value:function(){this.removeFake()}},{key:\"action\",set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:\"copy\";if(this._action=t,\"copy\"!==this._action&&\"cut\"!==this._action)throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"')},get:function(){return this._action}},{key:\"target\",set:function(t){if(void 0!==t){if(!t||\"object\"!==(void 0===t?\"undefined\":r(t))||1!==t.nodeType)throw new Error('Invalid \"target\" value, use a valid Element');if(\"copy\"===this.action&&t.hasAttribute(\"disabled\"))throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');if(\"cut\"===this.action&&(t.hasAttribute(\"readonly\")||t.hasAttribute(\"disabled\")))throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');this._target=t}},get:function(){return this._target}}]),e}();t.exports=u},function(t,e){t.exports=function(t){var e;if(\"SELECT\"===t.nodeName)t.focus(),e=t.value;else if(\"INPUT\"===t.nodeName||\"TEXTAREA\"===t.nodeName){var n=t.hasAttribute(\"readonly\");n||t.setAttribute(\"readonly\",\"\"),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute(\"readonly\"),e=t.value}else{t.hasAttribute(\"contenteditable\")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var d=n(5),h=n(6);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error(\"Missing required arguments\");if(!d.string(e))throw new TypeError(\"Second argument must be a String\");if(!d.fn(n))throw new TypeError(\"Third argument must be a Function\");if(d.node(t))return s=e,f=n,(l=t).addEventListener(s,f),{destroy:function(){l.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,u=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,u)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,u)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError(\"First argument must be a String, HTMLElement, HTMLCollection, or NodeList\");var o,r,i,a,c,u,l,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&(\"[object NodeList]\"===e||\"[object HTMLCollection]\"===e)&&\"length\"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return\"string\"==typeof t||t instanceof String},n.fn=function(t){return\"[object Function]\"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(7);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return\"function\"==typeof t.addEventListener?i.apply(null,arguments):\"function\"==typeof n?i.bind(null,document).apply(null,arguments):(\"string\"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if(\"undefined\"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if(\"function\"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}}])});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY2xpcGJvYXJkL2Rpc3QvY2xpcGJvYXJkLm1pbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jbGlwYm9hcmQvZGlzdC9jbGlwYm9hcmQubWluLmpzPzY5ODEiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBjbGlwYm9hcmQuanMgdjIuMC40XG4gKiBodHRwczovL3plbm9yb2NoYS5naXRodWIuaW8vY2xpcGJvYXJkLmpzXG4gKiBcbiAqIExpY2Vuc2VkIE1JVCDCqSBaZW5vIFJvY2hhXG4gKi9cbiFmdW5jdGlvbih0LGUpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGUpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuQ2xpcGJvYXJkSlM9ZSgpOnQuQ2xpcGJvYXJkSlM9ZSgpfSh0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBvPXt9O2Z1bmN0aW9uIHIodCl7aWYob1t0XSlyZXR1cm4gb1t0XS5leHBvcnRzO3ZhciBlPW9bdF09e2k6dCxsOiExLGV4cG9ydHM6e319O3JldHVybiBuW3RdLmNhbGwoZS5leHBvcnRzLGUsZS5leHBvcnRzLHIpLGUubD0hMCxlLmV4cG9ydHN9cmV0dXJuIHIubT1uLHIuYz1vLHIuZD1mdW5jdGlvbih0LGUsbil7ci5vKHQsZSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsZ2V0Om59KX0sci5yPWZ1bmN0aW9uKHQpe1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LHIudD1mdW5jdGlvbihlLHQpe2lmKDEmdCYmKGU9cihlKSksOCZ0KXJldHVybiBlO2lmKDQmdCYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHIucihuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobixcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTplfSksMiZ0JiZcInN0cmluZ1wiIT10eXBlb2YgZSlmb3IodmFyIG8gaW4gZSlyLmQobixvLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfS5iaW5kKG51bGwsbykpO3JldHVybiBufSxyLm49ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIHIuZChlLFwiYVwiLGUpLGV9LHIubz1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX0sci5wPVwiXCIscihyLnM9MCl9KFtmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0saT1mdW5jdGlvbigpe2Z1bmN0aW9uIG8odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIG89ZVtuXTtvLmVudW1lcmFibGU9by5lbnVtZXJhYmxlfHwhMSxvLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBvJiYoby53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsby5rZXksbyl9fXJldHVybiBmdW5jdGlvbih0LGUsbil7cmV0dXJuIGUmJm8odC5wcm90b3R5cGUsZSksbiYmbyh0LG4pLHR9fSgpLGE9byhuKDEpKSxjPW8obigzKSksdT1vKG4oNCkpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fXZhciBsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG8odCxlKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLG8pO3ZhciBuPWZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9KHRoaXMsKG8uX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YobykpLmNhbGwodGhpcykpO3JldHVybiBuLnJlc29sdmVPcHRpb25zKGUpLG4ubGlzdGVuQ2xpY2sodCksbn1yZXR1cm4gZnVuY3Rpb24odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX0obyxjLmRlZmF1bHQpLGkobyxbe2tleTpcInJlc29sdmVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307dGhpcy5hY3Rpb249XCJmdW5jdGlvblwiPT10eXBlb2YgdC5hY3Rpb24/dC5hY3Rpb246dGhpcy5kZWZhdWx0QWN0aW9uLHRoaXMudGFyZ2V0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHQudGFyZ2V0P3QudGFyZ2V0OnRoaXMuZGVmYXVsdFRhcmdldCx0aGlzLnRleHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdC50ZXh0P3QudGV4dDp0aGlzLmRlZmF1bHRUZXh0LHRoaXMuY29udGFpbmVyPVwib2JqZWN0XCI9PT1yKHQuY29udGFpbmVyKT90LmNvbnRhaW5lcjpkb2N1bWVudC5ib2R5fX0se2tleTpcImxpc3RlbkNsaWNrXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmxpc3RlbmVyPSgwLHUuZGVmYXVsdCkodCxcImNsaWNrXCIsZnVuY3Rpb24odCl7cmV0dXJuIGUub25DbGljayh0KX0pfX0se2tleTpcIm9uQ2xpY2tcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmRlbGVnYXRlVGFyZ2V0fHx0LmN1cnJlbnRUYXJnZXQ7dGhpcy5jbGlwYm9hcmRBY3Rpb24mJih0aGlzLmNsaXBib2FyZEFjdGlvbj1udWxsKSx0aGlzLmNsaXBib2FyZEFjdGlvbj1uZXcgYS5kZWZhdWx0KHthY3Rpb246dGhpcy5hY3Rpb24oZSksdGFyZ2V0OnRoaXMudGFyZ2V0KGUpLHRleHQ6dGhpcy50ZXh0KGUpLGNvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcix0cmlnZ2VyOmUsZW1pdHRlcjp0aGlzfSl9fSx7a2V5OlwiZGVmYXVsdEFjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBzKFwiYWN0aW9uXCIsdCl9fSx7a2V5OlwiZGVmYXVsdFRhcmdldFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXMoXCJ0YXJnZXRcIix0KTtpZihlKXJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpfX0se2tleTpcImRlZmF1bHRUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHMoXCJ0ZXh0XCIsdCl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5saXN0ZW5lci5kZXN0cm95KCksdGhpcy5jbGlwYm9hcmRBY3Rpb24mJih0aGlzLmNsaXBib2FyZEFjdGlvbi5kZXN0cm95KCksdGhpcy5jbGlwYm9hcmRBY3Rpb249bnVsbCl9fV0sW3trZXk6XCJpc1N1cHBvcnRlZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltcImNvcHlcIixcImN1dFwiXSxlPVwic3RyaW5nXCI9PXR5cGVvZiB0P1t0XTp0LG49ISFkb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQ7cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbih0KXtuPW4mJiEhZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkKHQpfSksbn19XSksb30oKTtmdW5jdGlvbiBzKHQsZSl7dmFyIG49XCJkYXRhLWNsaXBib2FyZC1cIit0O2lmKGUuaGFzQXR0cmlidXRlKG4pKXJldHVybiBlLmdldEF0dHJpYnV0ZShuKX10LmV4cG9ydHM9bH0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciBvLHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0saT1mdW5jdGlvbigpe2Z1bmN0aW9uIG8odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIG89ZVtuXTtvLmVudW1lcmFibGU9by5lbnVtZXJhYmxlfHwhMSxvLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBvJiYoby53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsby5rZXksbyl9fXJldHVybiBmdW5jdGlvbih0LGUsbil7cmV0dXJuIGUmJm8odC5wcm90b3R5cGUsZSksbiYmbyh0LG4pLHR9fSgpLGE9bigyKSxjPShvPWEpJiZvLl9fZXNNb2R1bGU/bzp7ZGVmYXVsdDpvfTt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLnJlc29sdmVPcHRpb25zKHQpLHRoaXMuaW5pdFNlbGVjdGlvbigpfXJldHVybiBpKGUsW3trZXk6XCJyZXNvbHZlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3RoaXMuYWN0aW9uPXQuYWN0aW9uLHRoaXMuY29udGFpbmVyPXQuY29udGFpbmVyLHRoaXMuZW1pdHRlcj10LmVtaXR0ZXIsdGhpcy50YXJnZXQ9dC50YXJnZXQsdGhpcy50ZXh0PXQudGV4dCx0aGlzLnRyaWdnZXI9dC50cmlnZ2VyLHRoaXMuc2VsZWN0ZWRUZXh0PVwiXCJ9fSx7a2V5OlwiaW5pdFNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50ZXh0P3RoaXMuc2VsZWN0RmFrZSgpOnRoaXMudGFyZ2V0JiZ0aGlzLnNlbGVjdFRhcmdldCgpfX0se2tleTpcInNlbGVjdEZha2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1cInJ0bFwiPT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGlyXCIpO3RoaXMucmVtb3ZlRmFrZSgpLHRoaXMuZmFrZUhhbmRsZXJDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiB0LnJlbW92ZUZha2UoKX0sdGhpcy5mYWtlSGFuZGxlcj10aGlzLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmZha2VIYW5kbGVyQ2FsbGJhY2spfHwhMCx0aGlzLmZha2VFbGVtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKSx0aGlzLmZha2VFbGVtLnN0eWxlLmZvbnRTaXplPVwiMTJwdFwiLHRoaXMuZmFrZUVsZW0uc3R5bGUuYm9yZGVyPVwiMFwiLHRoaXMuZmFrZUVsZW0uc3R5bGUucGFkZGluZz1cIjBcIix0aGlzLmZha2VFbGVtLnN0eWxlLm1hcmdpbj1cIjBcIix0aGlzLmZha2VFbGVtLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix0aGlzLmZha2VFbGVtLnN0eWxlW2U/XCJyaWdodFwiOlwibGVmdFwiXT1cIi05OTk5cHhcIjt2YXIgbj13aW5kb3cucGFnZVlPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7dGhpcy5mYWtlRWxlbS5zdHlsZS50b3A9bitcInB4XCIsdGhpcy5mYWtlRWxlbS5zZXRBdHRyaWJ1dGUoXCJyZWFkb25seVwiLFwiXCIpLHRoaXMuZmFrZUVsZW0udmFsdWU9dGhpcy50ZXh0LHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZmFrZUVsZW0pLHRoaXMuc2VsZWN0ZWRUZXh0PSgwLGMuZGVmYXVsdCkodGhpcy5mYWtlRWxlbSksdGhpcy5jb3B5VGV4dCgpfX0se2tleTpcInJlbW92ZUZha2VcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZmFrZUhhbmRsZXImJih0aGlzLmNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmZha2VIYW5kbGVyQ2FsbGJhY2spLHRoaXMuZmFrZUhhbmRsZXI9bnVsbCx0aGlzLmZha2VIYW5kbGVyQ2FsbGJhY2s9bnVsbCksdGhpcy5mYWtlRWxlbSYmKHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuZmFrZUVsZW0pLHRoaXMuZmFrZUVsZW09bnVsbCl9fSx7a2V5Olwic2VsZWN0VGFyZ2V0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkVGV4dD0oMCxjLmRlZmF1bHQpKHRoaXMudGFyZ2V0KSx0aGlzLmNvcHlUZXh0KCl9fSx7a2V5OlwiY29weVRleHRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXZvaWQgMDt0cnl7ZT1kb2N1bWVudC5leGVjQ29tbWFuZCh0aGlzLmFjdGlvbil9Y2F0Y2godCl7ZT0hMX10aGlzLmhhbmRsZVJlc3VsdChlKX19LHtrZXk6XCJoYW5kbGVSZXN1bHRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmVtaXR0ZXIuZW1pdCh0P1wic3VjY2Vzc1wiOlwiZXJyb3JcIix7YWN0aW9uOnRoaXMuYWN0aW9uLHRleHQ6dGhpcy5zZWxlY3RlZFRleHQsdHJpZ2dlcjp0aGlzLnRyaWdnZXIsY2xlYXJTZWxlY3Rpb246dGhpcy5jbGVhclNlbGVjdGlvbi5iaW5kKHRoaXMpfSl9fSx7a2V5OlwiY2xlYXJTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlciYmdGhpcy50cmlnZ2VyLmZvY3VzKCksd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpfX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucmVtb3ZlRmFrZSgpfX0se2tleTpcImFjdGlvblwiLHNldDpmdW5jdGlvbigpe3ZhciB0PTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpcImNvcHlcIjtpZih0aGlzLl9hY3Rpb249dCxcImNvcHlcIiE9PXRoaXMuX2FjdGlvbiYmXCJjdXRcIiE9PXRoaXMuX2FjdGlvbil0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgXCJhY3Rpb25cIiB2YWx1ZSwgdXNlIGVpdGhlciBcImNvcHlcIiBvciBcImN1dFwiJyl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3Rpb259fSx7a2V5OlwidGFyZ2V0XCIsc2V0OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpe2lmKCF0fHxcIm9iamVjdFwiIT09KHZvaWQgMD09PXQ/XCJ1bmRlZmluZWRcIjpyKHQpKXx8MSE9PXQubm9kZVR5cGUpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFwidGFyZ2V0XCIgdmFsdWUsIHVzZSBhIHZhbGlkIEVsZW1lbnQnKTtpZihcImNvcHlcIj09PXRoaXMuYWN0aW9uJiZ0Lmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpKXRocm93IG5ldyBFcnJvcignSW52YWxpZCBcInRhcmdldFwiIGF0dHJpYnV0ZS4gUGxlYXNlIHVzZSBcInJlYWRvbmx5XCIgaW5zdGVhZCBvZiBcImRpc2FibGVkXCIgYXR0cmlidXRlJyk7aWYoXCJjdXRcIj09PXRoaXMuYWN0aW9uJiYodC5oYXNBdHRyaWJ1dGUoXCJyZWFkb25seVwiKXx8dC5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSkpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFwidGFyZ2V0XCIgYXR0cmlidXRlLiBZb3UgY2FuXFwndCBjdXQgdGV4dCBmcm9tIGVsZW1lbnRzIHdpdGggXCJyZWFkb25seVwiIG9yIFwiZGlzYWJsZWRcIiBhdHRyaWJ1dGVzJyk7dGhpcy5fdGFyZ2V0PXR9fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGFyZ2V0fX1dKSxlfSgpO3QuZXhwb3J0cz11fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTtpZihcIlNFTEVDVFwiPT09dC5ub2RlTmFtZSl0LmZvY3VzKCksZT10LnZhbHVlO2Vsc2UgaWYoXCJJTlBVVFwiPT09dC5ub2RlTmFtZXx8XCJURVhUQVJFQVwiPT09dC5ub2RlTmFtZSl7dmFyIG49dC5oYXNBdHRyaWJ1dGUoXCJyZWFkb25seVwiKTtufHx0LnNldEF0dHJpYnV0ZShcInJlYWRvbmx5XCIsXCJcIiksdC5zZWxlY3QoKSx0LnNldFNlbGVjdGlvblJhbmdlKDAsdC52YWx1ZS5sZW5ndGgpLG58fHQucmVtb3ZlQXR0cmlidXRlKFwicmVhZG9ubHlcIiksZT10LnZhbHVlfWVsc2V7dC5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikmJnQuZm9jdXMoKTt2YXIgbz13aW5kb3cuZ2V0U2VsZWN0aW9uKCkscj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Iuc2VsZWN0Tm9kZUNvbnRlbnRzKHQpLG8ucmVtb3ZlQWxsUmFuZ2VzKCksby5hZGRSYW5nZShyKSxlPW8udG9TdHJpbmcoKX1yZXR1cm4gZX19LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe31uLnByb3RvdHlwZT17b246ZnVuY3Rpb24odCxlLG4pe3ZhciBvPXRoaXMuZXx8KHRoaXMuZT17fSk7cmV0dXJuKG9bdF18fChvW3RdPVtdKSkucHVzaCh7Zm46ZSxjdHg6bn0pLHRoaXN9LG9uY2U6ZnVuY3Rpb24odCxlLG4pe3ZhciBvPXRoaXM7ZnVuY3Rpb24gcigpe28ub2ZmKHQsciksZS5hcHBseShuLGFyZ3VtZW50cyl9cmV0dXJuIHIuXz1lLHRoaXMub24odCxyLG4pfSxlbWl0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxuPSgodGhpcy5lfHwodGhpcy5lPXt9KSlbdF18fFtdKS5zbGljZSgpLG89MCxyPW4ubGVuZ3RoO288cjtvKyspbltvXS5mbi5hcHBseShuW29dLmN0eCxlKTtyZXR1cm4gdGhpc30sb2ZmOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5lfHwodGhpcy5lPXt9KSxvPW5bdF0scj1bXTtpZihvJiZlKWZvcih2YXIgaT0wLGE9by5sZW5ndGg7aTxhO2krKylvW2ldLmZuIT09ZSYmb1tpXS5mbi5fIT09ZSYmci5wdXNoKG9baV0pO3JldHVybiByLmxlbmd0aD9uW3RdPXI6ZGVsZXRlIG5bdF0sdGhpc319LHQuZXhwb3J0cz1ufSxmdW5jdGlvbih0LGUsbil7dmFyIGQ9big1KSxoPW4oNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtpZighdCYmIWUmJiFuKXRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnRzXCIpO2lmKCFkLnN0cmluZyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBTdHJpbmdcIik7aWYoIWQuZm4obikpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlRoaXJkIGFyZ3VtZW50IG11c3QgYmUgYSBGdW5jdGlvblwiKTtpZihkLm5vZGUodCkpcmV0dXJuIHM9ZSxmPW4sKGw9dCkuYWRkRXZlbnRMaXN0ZW5lcihzLGYpLHtkZXN0cm95OmZ1bmN0aW9uKCl7bC5yZW1vdmVFdmVudExpc3RlbmVyKHMsZil9fTtpZihkLm5vZGVMaXN0KHQpKXJldHVybiBhPXQsYz1lLHU9bixBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsZnVuY3Rpb24odCl7dC5hZGRFdmVudExpc3RlbmVyKGMsdSl9KSx7ZGVzdHJveTpmdW5jdGlvbigpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxmdW5jdGlvbih0KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoYyx1KX0pfX07aWYoZC5zdHJpbmcodCkpcmV0dXJuIG89dCxyPWUsaT1uLGgoZG9jdW1lbnQuYm9keSxvLHIsaSk7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBTdHJpbmcsIEhUTUxFbGVtZW50LCBIVE1MQ29sbGVjdGlvbiwgb3IgTm9kZUxpc3RcIik7dmFyIG8scixpLGEsYyx1LGwscyxmfX0sZnVuY3Rpb24odCxuKXtuLm5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmMT09PXQubm9kZVR5cGV9LG4ubm9kZUxpc3Q9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO3JldHVybiB2b2lkIDAhPT10JiYoXCJbb2JqZWN0IE5vZGVMaXN0XVwiPT09ZXx8XCJbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXVwiPT09ZSkmJlwibGVuZ3RoXCJpbiB0JiYoMD09PXQubGVuZ3RofHxuLm5vZGUodFswXSkpfSxuLnN0cmluZz1mdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFN0cmluZ30sbi5mbj1mdW5jdGlvbih0KXtyZXR1cm5cIltvYmplY3QgRnVuY3Rpb25dXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGE9big3KTtmdW5jdGlvbiBpKHQsZSxuLG8scil7dmFyIGk9ZnVuY3Rpb24oZSxuLHQsbyl7cmV0dXJuIGZ1bmN0aW9uKHQpe3QuZGVsZWdhdGVUYXJnZXQ9YSh0LnRhcmdldCxuKSx0LmRlbGVnYXRlVGFyZ2V0JiZvLmNhbGwoZSx0KX19LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKG4saSxyKSx7ZGVzdHJveTpmdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGkscil9fX10LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmFkZEV2ZW50TGlzdGVuZXI/aS5hcHBseShudWxsLGFyZ3VtZW50cyk6XCJmdW5jdGlvblwiPT10eXBlb2Ygbj9pLmJpbmQobnVsbCxkb2N1bWVudCkuYXBwbHkobnVsbCxhcmd1bWVudHMpOihcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KSksQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHQsZnVuY3Rpb24odCl7cmV0dXJuIGkodCxlLG4sbyxyKX0pKX19LGZ1bmN0aW9uKHQsZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEVsZW1lbnQmJiFFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzKXt2YXIgbj1FbGVtZW50LnByb3RvdHlwZTtuLm1hdGNoZXM9bi5tYXRjaGVzU2VsZWN0b3J8fG4ubW96TWF0Y2hlc1NlbGVjdG9yfHxuLm1zTWF0Y2hlc1NlbGVjdG9yfHxuLm9NYXRjaGVzU2VsZWN0b3J8fG4ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcig7dCYmOSE9PXQubm9kZVR5cGU7KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0Lm1hdGNoZXMmJnQubWF0Y2hlcyhlKSlyZXR1cm4gdDt0PXQucGFyZW50Tm9kZX19fV0pfSk7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/clipboard/dist/clipboard.min.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_a-function.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_a-function.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcz9kOGU4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_a-function.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_add-to-unscopables.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js/modules/_add-to-unscopables.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/modules/_hide.js\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanM/OWM2YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMi4xLjMuMzEgQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG52YXIgVU5TQ09QQUJMRVMgPSByZXF1aXJlKCcuL193a3MnKSgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuaWYgKEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdID09IHVuZGVmaW5lZCkgcmVxdWlyZSgnLi9faGlkZScpKEFycmF5UHJvdG8sIFVOU0NPUEFCTEVTLCB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b1tVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_add-to-unscopables.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_advance-string-index.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js/modules/_advance-string-index.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar at = __webpack_require__(/*! ./_string-at */ \"./node_modules/core-js/modules/_string-at.js\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZHZhbmNlLXN0cmluZy1pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FkdmFuY2Utc3RyaW5nLWluZGV4LmpzPzAzOTAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbiAvLyBgQWR2YW5jZVN0cmluZ0luZGV4YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFkdmFuY2VzdHJpbmdpbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUywgaW5kZXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIGluZGV4ICsgKHVuaWNvZGUgPyBhdChTLCBpbmRleCkubGVuZ3RoIDogMSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_advance-string-index.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_an-object.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_an-object.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/modules/_is-object.js\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1vYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1vYmplY3QuanM/Y2I3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_an-object.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_array-includes.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js/modules/_array-includes.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/core-js/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2MzNjYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_array-includes.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_array-methods.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js/modules/_array-methods.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/modules/_ctx.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/modules/_iobject.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/modules/_to-object.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/modules/_to-length.js\");\nvar asc = __webpack_require__(/*! ./_array-species-create */ \"./node_modules/core-js/modules/_array-species-create.js\");\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1tZXRob2RzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktbWV0aG9kcy5qcz8wYTQ5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDAgLT4gQXJyYXkjZm9yRWFjaFxuLy8gMSAtPiBBcnJheSNtYXBcbi8vIDIgLT4gQXJyYXkjZmlsdGVyXG4vLyAzIC0+IEFycmF5I3NvbWVcbi8vIDQgLT4gQXJyYXkjZXZlcnlcbi8vIDUgLT4gQXJyYXkjZmluZFxuLy8gNiAtPiBBcnJheSNmaW5kSW5kZXhcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBhc2MgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVFlQRSwgJGNyZWF0ZSkge1xuICB2YXIgSVNfTUFQID0gVFlQRSA9PSAxO1xuICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyO1xuICB2YXIgSVNfU09NRSA9IFRZUEUgPT0gMztcbiAgdmFyIElTX0VWRVJZID0gVFlQRSA9PSA0O1xuICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjtcbiAgdmFyIE5PX0hPTEVTID0gVFlQRSA9PSA1IHx8IElTX0ZJTkRfSU5ERVg7XG4gIHZhciBjcmVhdGUgPSAkY3JlYXRlIHx8IGFzYztcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSU9iamVjdChPKTtcbiAgICB2YXIgZiA9IGN0eChjYWxsYmFja2ZuLCB0aGF0LCAzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoc2VsZi5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIHJlc3VsdCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHZhbCwgcmVzO1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZikge1xuICAgICAgdmFsID0gc2VsZltpbmRleF07XG4gICAgICByZXMgPSBmKHZhbCwgaW5kZXgsIE8pO1xuICAgICAgaWYgKFRZUEUpIHtcbiAgICAgICAgaWYgKElTX01BUCkgcmVzdWx0W2luZGV4XSA9IHJlczsgICAvLyBtYXBcbiAgICAgICAgZWxzZSBpZiAocmVzKSBzd2l0Y2ggKFRZUEUpIHtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAvLyBzb21lXG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsOyAgICAgICAgICAgICAgLy8gZmluZFxuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIGluZGV4OyAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcmVzdWx0LnB1c2godmFsKTsgICAgICAgIC8vIGZpbHRlclxuICAgICAgICB9IGVsc2UgaWYgKElTX0VWRVJZKSByZXR1cm4gZmFsc2U7IC8vIGV2ZXJ5XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiByZXN1bHQ7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_array-methods.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_array-reduce.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js/modules/_array-reduce.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/modules/_a-function.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/modules/_to-object.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/modules/_iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/modules/_to-length.js\");\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n  aFunction(callbackfn);\n  var O = toObject(that);\n  var self = IObject(O);\n  var length = toLength(O.length);\n  var index = isRight ? length - 1 : 0;\n  var i = isRight ? -1 : 1;\n  if (aLen < 2) for (;;) {\n    if (index in self) {\n      memo = self[index];\n      index += i;\n      break;\n    }\n    index += i;\n    if (isRight ? index < 0 : length <= index) {\n      throw TypeError('Reduce of empty array with no initial value');\n    }\n  }\n  for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n    memo = callbackfn(memo, self[index], index, O);\n  }\n  return memo;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1yZWR1Y2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1yZWR1Y2UuanM/N2IyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBjYWxsYmFja2ZuLCBhTGVuLCBtZW1vLCBpc1JpZ2h0KSB7XG4gIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGF0KTtcbiAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICB2YXIgaW5kZXggPSBpc1JpZ2h0ID8gbGVuZ3RoIC0gMSA6IDA7XG4gIHZhciBpID0gaXNSaWdodCA/IC0xIDogMTtcbiAgaWYgKGFMZW4gPCAyKSBmb3IgKDs7KSB7XG4gICAgaWYgKGluZGV4IGluIHNlbGYpIHtcbiAgICAgIG1lbW8gPSBzZWxmW2luZGV4XTtcbiAgICAgIGluZGV4ICs9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaW5kZXggKz0gaTtcbiAgICBpZiAoaXNSaWdodCA/IGluZGV4IDwgMCA6IGxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7XG4gICAgfVxuICB9XG4gIGZvciAoO2lzUmlnaHQgPyBpbmRleCA+PSAwIDogbGVuZ3RoID4gaW5kZXg7IGluZGV4ICs9IGkpIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgbWVtbyA9IGNhbGxiYWNrZm4obWVtbywgc2VsZltpbmRleF0sIGluZGV4LCBPKTtcbiAgfVxuICByZXR1cm4gbWVtbztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_array-reduce.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_array-species-constructor.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js/modules/_array-species-constructor.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/modules/_is-object.js\");\nvar isArray = __webpack_require__(/*! ./_is-array */ \"./node_modules/core-js/modules/_is-array.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3Rvci5qcz9lODUzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbCkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWwpKSB7XG4gICAgQyA9IG9yaWdpbmFsLmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEM7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_array-species-constructor.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_array-species-create.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js/modules/_array-species-create.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ \"./node_modules/core-js/modules/_array-species-constructor.js\");\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzP2NkMWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gOS40LjIuMyBBcnJheVNwZWNpZXNDcmVhdGUob3JpZ2luYWxBcnJheSwgbGVuZ3RoKVxudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwsIGxlbmd0aCkge1xuICByZXR1cm4gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Iob3JpZ2luYWwpKShsZW5ndGgpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_array-species-create.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_classof.js":
/*!**************************************************!*\
  !*** ./node_modules/core-js/modules/_classof.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/modules/_cof.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jbGFzc29mLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY2xhc3NvZi5qcz8yM2M2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIEFSRyA9IGNvZihmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgVCwgQjtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKFQgPSB0cnlHZXQoTyA9IE9iamVjdChpdCksIFRBRykpID09ICdzdHJpbmcnID8gVFxuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQVJHID8gY29mKE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_classof.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_cof.js":
/*!**********************************************!*\
  !*** ./node_modules/core-js/modules/_cof.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2YuanM/MmQ5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_cof.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_core.js":
/*!***********************************************!*\
  !*** ./node_modules/core-js/modules/_core.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb3JlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29yZS5qcz84Mzc4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuNScgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_core.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_create-property.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js/modules/_create-property.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar $defineProperty = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/modules/_property-desc.js\");\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanM/ZjFhZSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBpbmRleCwgdmFsdWUpIHtcbiAgaWYgKGluZGV4IGluIG9iamVjdCkgJGRlZmluZVByb3BlcnR5LmYob2JqZWN0LCBpbmRleCwgY3JlYXRlRGVzYygwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_create-property.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_ctx.js":
/*!**********************************************!*\
  !*** ./node_modules/core-js/modules/_ctx.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jdHguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jdHguanM/OWI0MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_ctx.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_defined.js":
/*!**************************************************!*\
  !*** ./node_modules/core-js/modules/_defined.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZWZpbmVkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGVmaW5lZC5qcz9iZTEzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_defined.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_descriptors.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_descriptors.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzPzllMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_descriptors.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_dom-create.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_dom-create.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/modules/_is-object.js\");\nvar document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kb20tY3JlYXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qcz8yMzBlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_dom-create.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_enum-bug-keys.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js/modules/_enum-bug-keys.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qcz9lMTFlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_enum-bug-keys.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_export.js":
/*!*************************************************!*\
  !*** ./node_modules/core-js/modules/_export.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/modules/_core.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/modules/_hide.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/modules/_redefine.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/modules/_ctx.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19leHBvcnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19leHBvcnQuanM/NWNhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSB8fCAoZ2xvYmFsW25hbWVdID0ge30pIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSk7XG4gIHZhciBrZXksIG93biwgb3V0LCBleHA7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSAob3duID8gdGFyZ2V0IDogc291cmNlKVtrZXldO1xuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgZXhwID0gSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIGlmICh0YXJnZXQpIHJlZGVmaW5lKHRhcmdldCwga2V5LCBvdXQsIHR5cGUgJiAkZXhwb3J0LlUpO1xuICAgIC8vIGV4cG9ydFxuICAgIGlmIChleHBvcnRzW2tleV0gIT0gb3V0KSBoaWRlKGV4cG9ydHMsIGtleSwgZXhwKTtcbiAgICBpZiAoSVNfUFJPVE8gJiYgZXhwUHJvdG9ba2V5XSAhPSBvdXQpIGV4cFByb3RvW2tleV0gPSBvdXQ7XG4gIH1cbn07XG5nbG9iYWwuY29yZSA9IGNvcmU7XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_export.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_fails-is-regexp.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js/modules/_fails-is-regexp.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var MATCH = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy1pcy1yZWdleHAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy1pcy1yZWdleHAuanM/NTE0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUFUQ0ggPSByZXF1aXJlKCcuL193a3MnKSgnbWF0Y2gnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgcmUgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbS0VZXShyZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0cnkge1xuICAgICAgcmVbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gIScvLi8nW0tFWV0ocmUpO1xuICAgIH0gY2F0Y2ggKGYpIHsgLyogZW1wdHkgKi8gfVxuICB9IHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_fails-is-regexp.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_fails.js":
/*!************************************************!*\
  !*** ./node_modules/core-js/modules/_fails.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLmpzPzc5ZTUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_fails.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_fix-re-wks.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_fix-re-wks.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n__webpack_require__(/*! ./es6.regexp.exec */ \"./node_modules/core-js/modules/es6.regexp.exec.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/modules/_redefine.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/modules/_hide.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/modules/_defined.js\");\nvar wks = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\");\nvar regexpExec = __webpack_require__(/*! ./_regexp-exec */ \"./node_modules/core-js/modules/_regexp-exec.js\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19maXgtcmUtd2tzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZml4LXJlLXdrcy5qcz8yMTRmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4vZXM2LnJlZ2V4cC5leGVjJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjJyk7XG5cbnZhciBTUEVDSUVTID0gd2tzKCdzcGVjaWVzJyk7XG5cbnZhciBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vICNyZXBsYWNlIG5lZWRzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIG5hbWVkIGdyb3Vwcy5cbiAgLy8gI21hdGNoIHdvcmtzIGZpbmUgYmVjYXVzZSBpdCBqdXN0IHJldHVybiB0aGUgZXhlYyByZXN1bHRzLCBldmVuIGlmIGl0IGhhc1xuICAvLyBhIFwiZ3JvcHNcIiBwcm9wZXJ0eS5cbiAgdmFyIHJlID0gLy4vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQuZ3JvdXBzID0geyBhOiAnNycgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICByZXR1cm4gJycucmVwbGFjZShyZSwgJyQ8YT4nKSAhPT0gJzcnO1xufSk7XG5cbnZhciBTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMgPSAoZnVuY3Rpb24gKCkge1xuICAvLyBDaHJvbWUgNTEgaGFzIGEgYnVnZ3kgXCJzcGxpdFwiIGltcGxlbWVudGF0aW9uIHdoZW4gUmVnRXhwI2V4ZWMgIT09IG5hdGl2ZUV4ZWNcbiAgdmFyIHJlID0gLyg/OikvO1xuICB2YXIgb3JpZ2luYWxFeGVjID0gcmUuZXhlYztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9yaWdpbmFsRXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xuICB2YXIgcmVzdWx0ID0gJ2FiJy5zcGxpdChyZSk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoID09PSAyICYmIHJlc3VsdFswXSA9PT0gJ2EnICYmIHJlc3VsdFsxXSA9PT0gJ2InO1xufSkoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBsZW5ndGgsIGV4ZWMpIHtcbiAgdmFyIFNZTUJPTCA9IHdrcyhLRVkpO1xuXG4gIHZhciBERUxFR0FURVNfVE9fU1lNQk9MID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBTdHJpbmcgbWV0aG9kcyBjYWxsIHN5bWJvbC1uYW1lZCBSZWdFcCBtZXRob2RzXG4gICAgdmFyIE8gPSB7fTtcbiAgICBPW1NZTUJPTF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9O1xuICAgIHJldHVybiAnJ1tLRVldKE8pICE9IDc7XG4gIH0pO1xuXG4gIHZhciBERUxFR0FURVNfVE9fRVhFQyA9IERFTEVHQVRFU19UT19TWU1CT0wgPyAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN5bWJvbC1uYW1lZCBSZWdFeHAgbWV0aG9kcyBjYWxsIC5leGVjXG4gICAgdmFyIGV4ZWNDYWxsZWQgPSBmYWxzZTtcbiAgICB2YXIgcmUgPSAvYS87XG4gICAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgZXhlY0NhbGxlZCA9IHRydWU7IHJldHVybiBudWxsOyB9O1xuICAgIGlmIChLRVkgPT09ICdzcGxpdCcpIHtcbiAgICAgIC8vIFJlZ0V4cFtAQHNwbGl0XSBkb2Vzbid0IGNhbGwgdGhlIHJlZ2V4J3MgZXhlYyBtZXRob2QsIGJ1dCBmaXJzdCBjcmVhdGVzXG4gICAgICAvLyBhIG5ldyBvbmUuIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBwYXRjaGVkIHJlZ2V4IHdoZW4gY3JlYXRpbmcgdGhlIG5ldyBvbmUuXG4gICAgICByZS5jb25zdHJ1Y3RvciA9IHt9O1xuICAgICAgcmUuY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZTsgfTtcbiAgICB9XG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KSA6IHVuZGVmaW5lZDtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICAoS0VZID09PSAncmVwbGFjZScgJiYgIVJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTKSB8fFxuICAgIChLRVkgPT09ICdzcGxpdCcgJiYgIVNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQylcbiAgKSB7XG4gICAgdmFyIG5hdGl2ZVJlZ0V4cE1ldGhvZCA9IC8uL1tTWU1CT0xdO1xuICAgIHZhciBmbnMgPSBleGVjKFxuICAgICAgZGVmaW5lZCxcbiAgICAgIFNZTUJPTCxcbiAgICAgICcnW0tFWV0sXG4gICAgICBmdW5jdGlvbiBtYXliZUNhbGxOYXRpdmUobmF0aXZlTWV0aG9kLCByZWdleHAsIHN0ciwgYXJnMiwgZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgaWYgKHJlZ2V4cC5leGVjID09PSByZWdleHBFeGVjKSB7XG4gICAgICAgICAgaWYgKERFTEVHQVRFU19UT19TWU1CT0wgJiYgIWZvcmNlU3RyaW5nTWV0aG9kKSB7XG4gICAgICAgICAgICAvLyBUaGUgbmF0aXZlIFN0cmluZyBtZXRob2QgYWxyZWFkeSBkZWxlZ2F0ZXMgdG8gQEBtZXRob2QgKHRoaXNcbiAgICAgICAgICAgIC8vIHBvbHlmaWxsZWQgZnVuY3Rpb24pLCBsZWFzaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgICAgICAgICAgIC8vIFdlIGF2b2lkIGl0IGJ5IGRpcmVjdGx5IGNhbGxpbmcgdGhlIG5hdGl2ZSBAQG1ldGhvZCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlUmVnRXhwTWV0aG9kLmNhbGwocmVnZXhwLCBzdHIsIGFyZzIpIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVNZXRob2QuY2FsbChzdHIsIHJlZ2V4cCwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICk7XG4gICAgdmFyIHN0cmZuID0gZm5zWzBdO1xuICAgIHZhciByeGZuID0gZm5zWzFdO1xuXG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBzdHJmbik7XG4gICAgaGlkZShSZWdFeHAucHJvdG90eXBlLCBTWU1CT0wsIGxlbmd0aCA9PSAyXG4gICAgICAvLyAyMS4yLjUuOCBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV0oc3RyaW5nLCByZXBsYWNlVmFsdWUpXG4gICAgICAvLyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KVxuICAgICAgPyBmdW5jdGlvbiAoc3RyaW5nLCBhcmcpIHsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByeGZuLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_fix-re-wks.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_flags.js":
/*!************************************************!*\
  !*** ./node_modules/core-js/modules/_flags.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGFncy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZsYWdzLmpzPzBiZmIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gMjEuMi41LjMgZ2V0IFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LnVuaWNvZGUpIHJlc3VsdCArPSAndSc7XG4gIGlmICh0aGF0LnN0aWNreSkgcmVzdWx0ICs9ICd5JztcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_flags.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_function-to-string.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js/modules/_function-to-string.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/modules/_shared.js\")('native-function-to-string', Function.toString);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mdW5jdGlvbi10by1zdHJpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mdW5jdGlvbi10by1zdHJpbmcuanM/ZmE1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCduYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nJywgRnVuY3Rpb24udG9TdHJpbmcpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_function-to-string.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_global.js":
/*!*************************************************!*\
  !*** ./node_modules/core-js/modules/_global.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19nbG9iYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19nbG9iYWwuanM/NzcyNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5pZiAodHlwZW9mIF9fZyA9PSAnbnVtYmVyJykgX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_global.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_has.js":
/*!**********************************************!*\
  !*** ./node_modules/core-js/modules/_has.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oYXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oYXMuanM/NjlhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_has.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_hide.js":
/*!***********************************************!*\
  !*** ./node_modules/core-js/modules/_hide.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oaWRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faGlkZS5qcz8zMmU5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_hide.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_html.js":
/*!***********************************************!*\
  !*** ./node_modules/core-js/modules/_html.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\").document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19odG1sLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faHRtbC5qcz9mYWIyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_html.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_ie8-dom-define.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js/modules/_ie8-dom-define.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\")(function () {\n  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzP2M2OWEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_ie8-dom-define.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_inherit-if-required.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js/modules/_inherit-if-required.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/modules/_is-object.js\");\nvar setPrototypeOf = __webpack_require__(/*! ./_set-proto */ \"./node_modules/core-js/modules/_set-proto.js\").set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pbmhlcml0LWlmLXJlcXVpcmVkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW5oZXJpdC1pZi1yZXF1aXJlZC5qcz81ZGJjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgdGFyZ2V0LCBDKSB7XG4gIHZhciBTID0gdGFyZ2V0LmNvbnN0cnVjdG9yO1xuICB2YXIgUDtcbiAgaWYgKFMgIT09IEMgJiYgdHlwZW9mIFMgPT0gJ2Z1bmN0aW9uJyAmJiAoUCA9IFMucHJvdG90eXBlKSAhPT0gQy5wcm90b3R5cGUgJiYgaXNPYmplY3QoUCkgJiYgc2V0UHJvdG90eXBlT2YpIHtcbiAgICBzZXRQcm90b3R5cGVPZih0aGF0LCBQKTtcbiAgfSByZXR1cm4gdGhhdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_inherit-if-required.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_iobject.js":
/*!**************************************************!*\
  !*** ./node_modules/core-js/modules/_iobject.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pb2JqZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW9iamVjdC5qcz82MjZhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_iobject.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_is-array.js":
/*!***************************************************!*\
  !*** ./node_modules/core-js/modules/_is-array.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/modules/_cof.js\");\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1hcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLWFycmF5LmpzPzExNjkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_is-array.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_is-object.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_is-object.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1vYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1vYmplY3QuanM/ZDNmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_is-object.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_is-regexp.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_is-regexp.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/modules/_is-object.js\");\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/modules/_cof.js\");\nvar MATCH = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1yZWdleHAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1yZWdleHAuanM/YWFlMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuOCBJc1JlZ0V4cChhcmd1bWVudClcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_is-regexp.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_iter-create.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_iter-create.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/modules/_object-create.js\");\nvar descriptor = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/modules/_property-desc.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/modules/_set-to-string-tag.js\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(/*! ./_hide */ \"./node_modules/core-js/modules/_hide.js\")(IteratorPrototype, __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzPzQxYTAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_iter-create.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_iter-define.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_iter-define.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/modules/_library.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/modules/_redefine.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/modules/_iterators.js\");\nvar $iterCreate = __webpack_require__(/*! ./_iter-create */ \"./node_modules/core-js/modules/_iter-create.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/modules/_set-to-string-tag.js\");\nvar getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/core-js/modules/_object-gpo.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRlZmluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzPzAxZjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_iter-define.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_iter-step.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_iter-step.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLXN0ZXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLXN0ZXAuanM/ZDUzYiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_iter-step.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_iterators.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_iterators.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyYXRvcnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyYXRvcnMuanM/ODRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_iterators.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_library.js":
/*!**************************************************!*\
  !*** ./node_modules/core-js/modules/_library.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = false;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19saWJyYXJ5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbGlicmFyeS5qcz8yZDAwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_library.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_math-sign.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_math-sign.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n  // eslint-disable-next-line no-self-compare\n  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLXNpZ24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLXNpZ24uanM/OTZmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4yLjIuMjggTWF0aC5zaWduKHgpXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguc2lnbiB8fCBmdW5jdGlvbiBzaWduKHgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICByZXR1cm4gKHggPSAreCkgPT0gMCB8fCB4ICE9IHggPyB4IDogeCA8IDAgPyAtMSA6IDE7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_math-sign.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-create.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js/modules/_object-create.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar dPs = __webpack_require__(/*! ./_object-dps */ \"./node_modules/core-js/modules/_object-dps.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/modules/_enum-bug-keys.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/modules/_shared-key.js\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/modules/_dom-create.js\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(/*! ./_html */ \"./node_modules/core-js/modules/_html.js\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qcz8yYWViIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-create.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-dp.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_object-dp.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanM/ODZjYyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-dp.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-dps.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_object-dps.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/modules/_object-keys.js\");\n\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHBzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWRwcy5qcz8xNDk1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-dps.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-gopd.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_object-gopd.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/modules/_object-pie.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/modules/_property-desc.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/modules/_to-primitive.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/modules/_has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/modules/_ie8-dom-define.js\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BkLmpzPzExZTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-gopd.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-gopn.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_object-gopn.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/modules/_object-keys-internal.js\");\nvar hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/modules/_enum-bug-keys.js\").concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BuLmpzPzkwOTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-gopn.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-gops.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_object-gops.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BzLmpzPzI2MjEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-gops.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-gpo.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_object-gpo.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/modules/_has.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/modules/_to-object.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/modules/_shared-key.js\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ3BvLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdwby5qcz8zOGZkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-gpo.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-keys-internal.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js/modules/_object-keys-internal.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/core-js/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzP2NlMTAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-keys-internal.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-keys.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_object-keys.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzBkNTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-keys.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-pie.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_object-pie.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtcGllLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcz81MmE3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMuZiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-pie.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_object-sap.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_object-sap.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/modules/_core.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\");\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qtc2FwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXNhcC5qcz81ZWRhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG1vc3QgT2JqZWN0IG1ldGhvZHMgYnkgRVM2IHNob3VsZCBhY2NlcHQgcHJpbWl0aXZlc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgZXhlYykge1xuICB2YXIgZm4gPSAoY29yZS5PYmplY3QgfHwge30pW0tFWV0gfHwgT2JqZWN0W0tFWV07XG4gIHZhciBleHAgPSB7fTtcbiAgZXhwW0tFWV0gPSBleGVjKGZuKTtcbiAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbiAoKSB7IGZuKDEpOyB9KSwgJ09iamVjdCcsIGV4cCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_object-sap.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_own-keys.js":
/*!***************************************************!*\
  !*** ./node_modules/core-js/modules/_own-keys.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// all object keys, includes non-enumerable and symbols\nvar gOPN = __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/modules/_object-gopn.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/modules/_object-gops.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar Reflect = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\").Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vd24ta2V5cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX293bi1rZXlzLmpzPzk5MGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgUmVmbGVjdCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlJlZmxlY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IFJlZmxlY3QgJiYgUmVmbGVjdC5vd25LZXlzIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnT1BOLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIHJldHVybiBnZXRTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_own-keys.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_property-desc.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js/modules/_property-desc.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qcz80NjMwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_property-desc.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_redefine.js":
/*!***************************************************!*\
  !*** ./node_modules/core-js/modules/_redefine.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/modules/_has.js\");\nvar SRC = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/modules/_uid.js\")('src');\nvar $toString = __webpack_require__(/*! ./_function-to-string */ \"./node_modules/core-js/modules/_function-to-string.js\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(/*! ./_core */ \"./node_modules/core-js/modules/_core.js\").inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWRlZmluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLmpzPzJhYmEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgU1JDID0gcmVxdWlyZSgnLi9fdWlkJykoJ3NyYycpO1xudmFyICR0b1N0cmluZyA9IHJlcXVpcmUoJy4vX2Z1bmN0aW9uLXRvLXN0cmluZycpO1xudmFyIFRPX1NUUklORyA9ICd0b1N0cmluZyc7XG52YXIgVFBMID0gKCcnICsgJHRvU3RyaW5nKS5zcGxpdChUT19TVFJJTkcpO1xuXG5yZXF1aXJlKCcuL19jb3JlJykuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gJHRvU3RyaW5nLmNhbGwoaXQpO1xufTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsLCBzYWZlKSB7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHZhbCA9PSAnZnVuY3Rpb24nO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgJ25hbWUnKSB8fCBoaWRlKHZhbCwgJ25hbWUnLCBrZXkpO1xuICBpZiAoT1trZXldID09PSB2YWwpIHJldHVybjtcbiAgaWYgKGlzRnVuY3Rpb24pIGhhcyh2YWwsIFNSQykgfHwgaGlkZSh2YWwsIFNSQywgT1trZXldID8gJycgKyBPW2tleV0gOiBUUEwuam9pbihTdHJpbmcoa2V5KSkpO1xuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2UgaWYgKCFzYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfSBlbHNlIGlmIChPW2tleV0pIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSB7XG4gICAgaGlkZShPLCBrZXksIHZhbCk7XG4gIH1cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiB0aGlzW1NSQ10gfHwgJHRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_redefine.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_regexp-exec-abstract.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js/modules/_regexp-exec-abstract.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar classof = __webpack_require__(/*! ./_classof */ \"./node_modules/core-js/modules/_classof.js\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWdleHAtZXhlYy1hYnN0cmFjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZ2V4cC1leGVjLWFic3RyYWN0LmpzPzVmMWIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBidWlsdGluRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcblxuIC8vIGBSZWdFeHBFeGVjYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cGV4ZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFIsIFMpIHtcbiAgdmFyIGV4ZWMgPSBSLmV4ZWM7XG4gIGlmICh0eXBlb2YgZXhlYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBleGVjLmNhbGwoUiwgUyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZWdFeHAgZXhlYyBtZXRob2QgcmV0dXJuZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gT2JqZWN0IG9yIG51bGwnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoY2xhc3NvZihSKSAhPT0gJ1JlZ0V4cCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG4gIH1cbiAgcmV0dXJuIGJ1aWx0aW5FeGVjLmNhbGwoUiwgUyk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_regexp-exec-abstract.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_regexp-exec.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_regexp-exec.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar regexpFlags = __webpack_require__(/*! ./_flags */ \"./node_modules/core-js/modules/_flags.js\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWdleHAtZXhlYy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZ2V4cC1leGVjLmpzPzUyMGEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVnZXhwRmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xuXG52YXIgbmF0aXZlRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcbi8vIFRoaXMgYWx3YXlzIHJlZmVycyB0byB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIHRoZVxuLy8gU3RyaW5nI3JlcGxhY2UgcG9seWZpbGwgdXNlcyAuL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMuanMsXG4vLyB3aGljaCBsb2FkcyB0aGlzIGZpbGUgYmVmb3JlIHBhdGNoaW5nIHRoZSBtZXRob2QuXG52YXIgbmF0aXZlUmVwbGFjZSA9IFN0cmluZy5wcm90b3R5cGUucmVwbGFjZTtcblxudmFyIHBhdGNoZWRFeGVjID0gbmF0aXZlRXhlYztcblxudmFyIExBU1RfSU5ERVggPSAnbGFzdEluZGV4JztcblxudmFyIFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciByZTEgPSAvYS8sXG4gICAgICByZTIgPSAvYiovZztcbiAgbmF0aXZlRXhlYy5jYWxsKHJlMSwgJ2EnKTtcbiAgbmF0aXZlRXhlYy5jYWxsKHJlMiwgJ2EnKTtcbiAgcmV0dXJuIHJlMVtMQVNUX0lOREVYXSAhPT0gMCB8fCByZTJbTEFTVF9JTkRFWF0gIT09IDA7XG59KSgpO1xuXG4vLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cCwgY29waWVkIGZyb20gZXM1LXNoaW0ncyBTdHJpbmcjc3BsaXQgcGF0Y2guXG52YXIgTlBDR19JTkNMVURFRCA9IC8oKT8/Ly5leGVjKCcnKVsxXSAhPT0gdW5kZWZpbmVkO1xuXG52YXIgUEFUQ0ggPSBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgfHwgTlBDR19JTkNMVURFRDtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyByZS5zb3VyY2UgKyAnJCg/IVxcXFxzKScsIHJlZ2V4cEZsYWdzLmNhbGwocmUpKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmVbTEFTVF9JTkRFWF07XG5cbiAgICBtYXRjaCA9IG5hdGl2ZUV4ZWMuY2FsbChyZSwgc3RyKTtcblxuICAgIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgJiYgbWF0Y2gpIHtcbiAgICAgIHJlW0xBU1RfSU5ERVhdID0gcmUuZ2xvYmFsID8gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggOiBsYXN0SW5kZXg7XG4gICAgfVxuICAgIGlmIChOUENHX0lOQ0xVREVEICYmIG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIEZpeCBicm93c2VycyB3aG9zZSBgZXhlY2AgbWV0aG9kcyBkb24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGB1bmRlZmluZWRgXG4gICAgICAvLyBmb3IgTlBDRywgbGlrZSBJRTguIE5PVEU6IFRoaXMgZG9lc24nIHdvcmsgZm9yIC8oLj8pPy9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb29wLWZ1bmNcbiAgICAgIG5hdGl2ZVJlcGxhY2UuY2FsbChtYXRjaFswXSwgcmVDb3B5LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKSBtYXRjaFtpXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoZWRFeGVjO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_regexp-exec.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_same-value.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_same-value.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zYW1lLXZhbHVlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2FtZS12YWx1ZS5qcz84M2ExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMi45IFNhbWVWYWx1ZSh4LCB5KVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaXMgfHwgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_same-value.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_set-proto.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_set-proto.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/modules/_is-object.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/modules/_ctx.js\")(Function.call, __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/modules/_object-gopd.js\").f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtcHJvdG8uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtcHJvdG8uanM/OGI5NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_set-proto.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_set-species.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_set-species.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\");\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('species');\n\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtc3BlY2llcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1zcGVjaWVzLmpzPzdhNTYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIEMgPSBnbG9iYWxbS0VZXTtcbiAgaWYgKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pIGRQLmYoQywgU1BFQ0lFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_set-species.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_set-to-string-tag.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/modules/_set-to-string-tag.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var def = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\").f;\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/modules/_has.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdmMjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_set-to-string-tag.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_shared-key.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_shared-key.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/modules/_uid.js\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQta2V5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2hhcmVkLWtleS5qcz82MTNiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_shared-key.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_shared.js":
/*!*************************************************!*\
  !*** ./node_modules/core-js/modules/_shared.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(/*! ./_library */ \"./node_modules/core-js/modules/_library.js\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQuanM/NTUzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_shared.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_species-constructor.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js/modules/_species-constructor.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/modules/_a-function.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qcz9lYmQ2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMy4yMCBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgRCkge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBEIDogYUZ1bmN0aW9uKFMpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_species-constructor.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_strict-method.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js/modules/_strict-method.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\");\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpY3QtbWV0aG9kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaWN0LW1ldGhvZC5qcz8yZjIxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1ldGhvZCwgYXJnKSB7XG4gIHJldHVybiAhIW1ldGhvZCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbFxuICAgIGFyZyA/IG1ldGhvZC5jYWxsKG51bGwsIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgMSkgOiBtZXRob2QuY2FsbChudWxsKTtcbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_strict-method.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_string-at.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_string-at.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/modules/_to-integer.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/modules/_defined.js\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctYXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctYXQuanM/MDJmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_string-at.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_string-context.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js/modules/_string-context.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(/*! ./_is-regexp */ \"./node_modules/core-js/modules/_is-regexp.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/modules/_defined.js\");\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctY29udGV4dC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1jb250ZXh0LmpzP2QyYzgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaGVscGVyIGZvciBTdHJpbmcje3N0YXJ0c1dpdGgsIGVuZHNXaXRoLCBpbmNsdWRlc31cbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRoYXQsIHNlYXJjaFN0cmluZywgTkFNRSkge1xuICBpZiAoaXNSZWdFeHAoc2VhcmNoU3RyaW5nKSkgdGhyb3cgVHlwZUVycm9yKCdTdHJpbmcjJyArIE5BTUUgKyBcIiBkb2Vzbid0IGFjY2VwdCByZWdleCFcIik7XG4gIHJldHVybiBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_string-context.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_string-trim.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js/modules/_string-trim.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/modules/_defined.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\");\nvar spaces = __webpack_require__(/*! ./_string-ws */ \"./node_modules/core-js/modules/_string-ws.js\");\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctdHJpbS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy10cmltLmpzP2FhNzciXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBzcGFjZXMgPSByZXF1aXJlKCcuL19zdHJpbmctd3MnKTtcbnZhciBzcGFjZSA9ICdbJyArIHNwYWNlcyArICddJztcbnZhciBub24gPSAnXFx1MjAwYlxcdTAwODUnO1xudmFyIGx0cmltID0gUmVnRXhwKCdeJyArIHNwYWNlICsgc3BhY2UgKyAnKicpO1xudmFyIHJ0cmltID0gUmVnRXhwKHNwYWNlICsgc3BhY2UgKyAnKiQnKTtcblxudmFyIGV4cG9ydGVyID0gZnVuY3Rpb24gKEtFWSwgZXhlYywgQUxJQVMpIHtcbiAgdmFyIGV4cCA9IHt9O1xuICB2YXIgRk9SQ0UgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhc3BhY2VzW0tFWV0oKSB8fCBub25bS0VZXSgpICE9IG5vbjtcbiAgfSk7XG4gIHZhciBmbiA9IGV4cFtLRVldID0gRk9SQ0UgPyBleGVjKHRyaW0pIDogc3BhY2VzW0tFWV07XG4gIGlmIChBTElBUykgZXhwW0FMSUFTXSA9IGZuO1xuICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIEZPUkNFLCAnU3RyaW5nJywgZXhwKTtcbn07XG5cbi8vIDEgLT4gU3RyaW5nI3RyaW1MZWZ0XG4vLyAyIC0+IFN0cmluZyN0cmltUmlnaHRcbi8vIDMgLT4gU3RyaW5nI3RyaW1cbnZhciB0cmltID0gZXhwb3J0ZXIudHJpbSA9IGZ1bmN0aW9uIChzdHJpbmcsIFRZUEUpIHtcbiAgc3RyaW5nID0gU3RyaW5nKGRlZmluZWQoc3RyaW5nKSk7XG4gIGlmIChUWVBFICYgMSkgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UobHRyaW0sICcnKTtcbiAgaWYgKFRZUEUgJiAyKSBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShydHJpbSwgJycpO1xuICByZXR1cm4gc3RyaW5nO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRlcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_string-trim.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_string-ws.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_string-ws.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctd3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctd3MuanM/ZmRlZiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICdcXHgwOVxceDBBXFx4MEJcXHgwQ1xceDBEXFx4MjBcXHhBMFxcdTE2ODBcXHUxODBFXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwMycgK1xuICAnXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_string-ws.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_to-absolute-index.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/modules/_to-absolute-index.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzc3ZjEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_to-absolute-index.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_to-integer.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_to-integer.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pbnRlZ2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW50ZWdlci5qcz80NTg4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS40IFRvSW50ZWdlclxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_to-integer.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_to-iobject.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/modules/_to-iobject.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/modules/_defined.js\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pb2JqZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW9iamVjdC5qcz82ODIxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_to-iobject.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_to-length.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_to-length.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1sZW5ndGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1sZW5ndGguanM/OWRlZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_to-length.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_to-object.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js/modules/_to-object.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/modules/_defined.js\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1vYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1vYmplY3QuanM/NGJmOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_to-object.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_to-primitive.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js/modules/_to-primitive.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanM/NmE5OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_to-primitive.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_uid.js":
/*!**********************************************!*\
  !*** ./node_modules/core-js/modules/_uid.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191aWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191aWQuanM/Y2E1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_uid.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/_wks.js":
/*!**********************************************!*\
  !*** ./node_modules/core-js/modules/_wks.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var store = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/modules/_shared.js\")('wks');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/modules/_uid.js\");\nvar Symbol = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MuanM/MmI0YyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/_wks.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.filter.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.filter.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar $filter = __webpack_require__(/*! ./_array-methods */ \"./node_modules/core-js/modules/_array-methods.js\")(2);\n\n$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ \"./node_modules/core-js/modules/_strict-method.js\")([].filter, true), 'Array', {\n  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments[1]);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maWx0ZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maWx0ZXIuanM/ZDI1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmaWx0ZXIgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMik7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5maWx0ZXIsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy43IC8gMTUuNC40LjIwIEFycmF5LnByb3RvdHlwZS5maWx0ZXIoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJGZpbHRlcih0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.filter.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.find-index.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.find-index.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar $find = __webpack_require__(/*! ./_array-methods */ \"./node_modules/core-js/modules/_array-methods.js\")(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n__webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/core-js/modules/_add-to-unscopables.js\")(KEY);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maW5kLWluZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleC5qcz8yMGQ2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy45IEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgocHJlZGljYXRlLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSg2KTtcbnZhciBLRVkgPSAnZmluZEluZGV4JztcbnZhciBmb3JjZWQgPSB0cnVlO1xuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChLRVkgaW4gW10pIEFycmF5KDEpW0tFWV0oZnVuY3Rpb24gKCkgeyBmb3JjZWQgPSBmYWxzZTsgfSk7XG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZvcmNlZCwgJ0FycmF5Jywge1xuICBmaW5kSW5kZXg6IGZ1bmN0aW9uIGZpbmRJbmRleChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoS0VZKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.find-index.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.find.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.find.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar $find = __webpack_require__(/*! ./_array-methods */ \"./node_modules/core-js/modules/_array-methods.js\")(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n__webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/core-js/modules/_add-to-unscopables.js\")(KEY);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maW5kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC5qcz83NTE0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy44IEFycmF5LnByb3RvdHlwZS5maW5kKHByZWRpY2F0ZSwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoNSk7XG52YXIgS0VZID0gJ2ZpbmQnO1xudmFyIGZvcmNlZCA9IHRydWU7XG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYgKEtFWSBpbiBbXSkgQXJyYXkoMSlbS0VZXShmdW5jdGlvbiAoKSB7IGZvcmNlZCA9IGZhbHNlOyB9KTtcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZm9yY2VkLCAnQXJyYXknLCB7XG4gIGZpbmQ6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKEtFWSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.find.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.for-each.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.for-each.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar $forEach = __webpack_require__(/*! ./_array-methods */ \"./node_modules/core-js/modules/_array-methods.js\")(0);\nvar STRICT = __webpack_require__(/*! ./_strict-method */ \"./node_modules/core-js/modules/_strict-method.js\")([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n  forEach: function forEach(callbackfn /* , thisArg */) {\n    return $forEach(this, callbackfn, arguments[1]);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5mb3ItZWFjaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZvci1lYWNoLmpzP2YzZTIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgwKTtcbnZhciBTVFJJQ1QgPSByZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZm9yRWFjaCwgdHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIVNUUklDVCwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTAgLyAxNS40LjQuMTggQXJyYXkucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZm9yRWFjaCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.for-each.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.index-of.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.index-of.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar $indexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/core-js/modules/_array-includes.js\")(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(/*! ./_strict-method */ \"./node_modules/core-js/modules/_strict-method.js\")($native)), 'Array', {\n  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? $native.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments[1]);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pbmRleC1vZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mLmpzPzU3ZTciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyICRuYXRpdmUgPSBbXS5pbmRleE9mO1xudmFyIE5FR0FUSVZFX1pFUk8gPSAhISRuYXRpdmUgJiYgMSAvIFsxXS5pbmRleE9mKDEsIC0wKSA8IDA7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKE5FR0FUSVZFX1pFUk8gfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKSgkbmF0aXZlKSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjExIC8gMTUuNC40LjE0IEFycmF5LnByb3RvdHlwZS5pbmRleE9mKHNlYXJjaEVsZW1lbnQgWywgZnJvbUluZGV4XSlcbiAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiBORUdBVElWRV9aRVJPXG4gICAgICAvLyBjb252ZXJ0IC0wIHRvICswXG4gICAgICA/ICRuYXRpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCAwXG4gICAgICA6ICRpbmRleE9mKHRoaXMsIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.index-of.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.is-array.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.is-array.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\n\n$export($export.S, 'Array', { isArray: __webpack_require__(/*! ./_is-array */ \"./node_modules/core-js/modules/_is-array.js\") });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pcy1hcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmlzLWFycmF5LmpzPzJjYWYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjIuMS4yLjIgLyAxNS40LjMuMiBBcnJheS5pc0FycmF5KGFyZylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnQXJyYXknLCB7IGlzQXJyYXk6IHJlcXVpcmUoJy4vX2lzLWFycmF5JykgfSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.is-array.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.iterator.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.iterator.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/core-js/modules/_add-to-unscopables.js\");\nvar step = __webpack_require__(/*! ./_iter-step */ \"./node_modules/core-js/modules/_iter-step.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/modules/_iterators.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/modules/_to-iobject.js\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/modules/_iter-define.js\")(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2NhZGYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.iterator.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.map.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.map.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar $map = __webpack_require__(/*! ./_array-methods */ \"./node_modules/core-js/modules/_array-methods.js\")(1);\n\n$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ \"./node_modules/core-js/modules/_strict-method.js\")([].map, true), 'Array', {\n  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments[1]);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5tYXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5tYXAuanM/NmQ2NyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRtYXAgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5tYXAsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xNSAvIDE1LjQuNC4xOSBBcnJheS5wcm90b3R5cGUubWFwKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRtYXAodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.map.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.reduce.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.reduce.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar $reduce = __webpack_require__(/*! ./_array-reduce */ \"./node_modules/core-js/modules/_array-reduce.js\");\n\n$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ \"./node_modules/core-js/modules/_strict-method.js\")([].reduce, true), 'Array', {\n  // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UuanM/MGNkOCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRyZWR1Y2UgPSByZXF1aXJlKCcuL19hcnJheS1yZWR1Y2UnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLnJlZHVjZSwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE4IC8gMTUuNC40LjIxIEFycmF5LnByb3RvdHlwZS5yZWR1Y2UoY2FsbGJhY2tmbiBbLCBpbml0aWFsVmFsdWVdKVxuICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzWzFdLCBmYWxzZSk7XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.reduce.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.array.sort.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.array.sort.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/modules/_a-function.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/modules/_to-object.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\");\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !__webpack_require__(/*! ./_strict-method */ \"./node_modules/core-js/modules/_strict-method.js\")($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zb3J0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29ydC5qcz81NWRkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyICRzb3J0ID0gW10uc29ydDtcbnZhciB0ZXN0ID0gWzEsIDIsIDNdO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIElFOC1cbiAgdGVzdC5zb3J0KHVuZGVmaW5lZCk7XG59KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBWOCBidWdcbiAgdGVzdC5zb3J0KG51bGwpO1xuICAvLyBPbGQgV2ViS2l0XG59KSB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRzb3J0KSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjI1IEFycmF5LnByb3RvdHlwZS5zb3J0KGNvbXBhcmVmbilcbiAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgICByZXR1cm4gY29tcGFyZWZuID09PSB1bmRlZmluZWRcbiAgICAgID8gJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSlcbiAgICAgIDogJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSwgYUZ1bmN0aW9uKGNvbXBhcmVmbikpO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.array.sort.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.date.to-string.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.date.to-string.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n  __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/modules/_redefine.js\")(DateProto, TO_STRING, function toString() {\n    var value = getTime.call(this);\n    // eslint-disable-next-line no-self-compare\n    return value === value ? $toString.call(this) : INVALID_DATE;\n  });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLXN0cmluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8tc3RyaW5nLmpzPzg3YjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIERhdGVQcm90byA9IERhdGUucHJvdG90eXBlO1xudmFyIElOVkFMSURfREFURSA9ICdJbnZhbGlkIERhdGUnO1xudmFyIFRPX1NUUklORyA9ICd0b1N0cmluZyc7XG52YXIgJHRvU3RyaW5nID0gRGF0ZVByb3RvW1RPX1NUUklOR107XG52YXIgZ2V0VGltZSA9IERhdGVQcm90by5nZXRUaW1lO1xuaWYgKG5ldyBEYXRlKE5hTikgKyAnJyAhPSBJTlZBTElEX0RBVEUpIHtcbiAgcmVxdWlyZSgnLi9fcmVkZWZpbmUnKShEYXRlUHJvdG8sIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgdmFyIHZhbHVlID0gZ2V0VGltZS5jYWxsKHRoaXMpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gJHRvU3RyaW5nLmNhbGwodGhpcykgOiBJTlZBTElEX0RBVEU7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.date.to-string.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.function.name.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.function.name.js ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\").f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\") && dP(FProto, NAME, {\n  configurable: true,\n  get: function () {\n    try {\n      return ('' + this).match(nameRE)[1];\n    } catch (e) {\n      return '';\n    }\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24ubmFtZS5qcz83ZjdmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgRlByb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIG5hbWVSRSA9IC9eXFxzKmZ1bmN0aW9uIChbXiAoXSopLztcbnZhciBOQU1FID0gJ25hbWUnO1xuXG4vLyAxOS4yLjQuMiBuYW1lXG5OQU1FIGluIEZQcm90byB8fCByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmIGRQKEZQcm90bywgTkFNRSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKCcnICsgdGhpcykubWF0Y2gobmFtZVJFKVsxXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.function.name.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.math.sign.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js/modules/es6.math.sign.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 20.2.2.28 Math.sign(x)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\n\n$export($export.S, 'Math', { sign: __webpack_require__(/*! ./_math-sign */ \"./node_modules/core-js/modules/_math-sign.js\") });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnNpZ24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnNpZ24uanM/MGIyMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4yLjIuMjggTWF0aC5zaWduKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IHNpZ246IHJlcXVpcmUoJy4vX21hdGgtc2lnbicpIH0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.math.sign.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.number.constructor.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.number.constructor.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/modules/_has.js\");\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/modules/_cof.js\");\nvar inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ \"./node_modules/core-js/modules/_inherit-if-required.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/modules/_to-primitive.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\");\nvar gOPN = __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/modules/_object-gopn.js\").f;\nvar gOPD = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/modules/_object-gopd.js\").f;\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\").f;\nvar $trim = __webpack_require__(/*! ./_string-trim */ \"./node_modules/core-js/modules/_string-trim.js\").trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(__webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/modules/_object-create.js\")(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\") ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/modules/_redefine.js\")(global, NUMBER, $Number);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuY29uc3RydWN0b3IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuY29uc3RydWN0b3IuanM/YzVmNiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuL19pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciAkdHJpbSA9IHJlcXVpcmUoJy4vX3N0cmluZy10cmltJykudHJpbTtcbnZhciBOVU1CRVIgPSAnTnVtYmVyJztcbnZhciAkTnVtYmVyID0gZ2xvYmFsW05VTUJFUl07XG52YXIgQmFzZSA9ICROdW1iZXI7XG52YXIgcHJvdG8gPSAkTnVtYmVyLnByb3RvdHlwZTtcbi8vIE9wZXJhIH4xMiBoYXMgYnJva2VuIE9iamVjdCN0b1N0cmluZ1xudmFyIEJST0tFTl9DT0YgPSBjb2YocmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpKHByb3RvKSkgPT0gTlVNQkVSO1xudmFyIFRSSU0gPSAndHJpbScgaW4gU3RyaW5nLnByb3RvdHlwZTtcblxuLy8gNy4xLjMgVG9OdW1iZXIoYXJndW1lbnQpXG52YXIgdG9OdW1iZXIgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGl0ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsIGZhbHNlKTtcbiAgaWYgKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyAmJiBpdC5sZW5ndGggPiAyKSB7XG4gICAgaXQgPSBUUklNID8gaXQudHJpbSgpIDogJHRyaW0oaXQsIDMpO1xuICAgIHZhciBmaXJzdCA9IGl0LmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIHRoaXJkLCByYWRpeCwgbWF4Q29kZTtcbiAgICBpZiAoZmlyc3QgPT09IDQzIHx8IGZpcnN0ID09PSA0NSkge1xuICAgICAgdGhpcmQgPSBpdC5jaGFyQ29kZUF0KDIpO1xuICAgICAgaWYgKHRoaXJkID09PSA4OCB8fCB0aGlyZCA9PT0gMTIwKSByZXR1cm4gTmFOOyAvLyBOdW1iZXIoJysweDEnKSBzaG91bGQgYmUgTmFOLCBvbGQgVjggZml4XG4gICAgfSBlbHNlIGlmIChmaXJzdCA9PT0gNDgpIHtcbiAgICAgIHN3aXRjaCAoaXQuY2hhckNvZGVBdCgxKSkge1xuICAgICAgICBjYXNlIDY2OiBjYXNlIDk4OiByYWRpeCA9IDI7IG1heENvZGUgPSA0OTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgL14wYlswMV0rJC9pXG4gICAgICAgIGNhc2UgNzk6IGNhc2UgMTExOiByYWRpeCA9IDg7IG1heENvZGUgPSA1NTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgL14wb1swLTddKyQvaVxuICAgICAgICBkZWZhdWx0OiByZXR1cm4gK2l0O1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgZGlnaXRzID0gaXQuc2xpY2UoMiksIGkgPSAwLCBsID0gZGlnaXRzLmxlbmd0aCwgY29kZTsgaSA8IGw7IGkrKykge1xuICAgICAgICBjb2RlID0gZGlnaXRzLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIC8vIHBhcnNlSW50IHBhcnNlcyBhIHN0cmluZyB0byBhIGZpcnN0IHVuYXZhaWxhYmxlIHN5bWJvbFxuICAgICAgICAvLyBidXQgVG9OdW1iZXIgc2hvdWxkIHJldHVybiBOYU4gaWYgYSBzdHJpbmcgY29udGFpbnMgdW5hdmFpbGFibGUgc3ltYm9sc1xuICAgICAgICBpZiAoY29kZSA8IDQ4IHx8IGNvZGUgPiBtYXhDb2RlKSByZXR1cm4gTmFOO1xuICAgICAgfSByZXR1cm4gcGFyc2VJbnQoZGlnaXRzLCByYWRpeCk7XG4gICAgfVxuICB9IHJldHVybiAraXQ7XG59O1xuXG5pZiAoISROdW1iZXIoJyAwbzEnKSB8fCAhJE51bWJlcignMGIxJykgfHwgJE51bWJlcignKzB4MScpKSB7XG4gICROdW1iZXIgPSBmdW5jdGlvbiBOdW1iZXIodmFsdWUpIHtcbiAgICB2YXIgaXQgPSBhcmd1bWVudHMubGVuZ3RoIDwgMSA/IDAgOiB2YWx1ZTtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgcmV0dXJuIHRoYXQgaW5zdGFuY2VvZiAkTnVtYmVyXG4gICAgICAvLyBjaGVjayBvbiAxLi5jb25zdHJ1Y3Rvcihmb28pIGNhc2VcbiAgICAgICYmIChCUk9LRU5fQ09GID8gZmFpbHMoZnVuY3Rpb24gKCkgeyBwcm90by52YWx1ZU9mLmNhbGwodGhhdCk7IH0pIDogY29mKHRoYXQpICE9IE5VTUJFUilcbiAgICAgICAgPyBpbmhlcml0SWZSZXF1aXJlZChuZXcgQmFzZSh0b051bWJlcihpdCkpLCB0aGF0LCAkTnVtYmVyKSA6IHRvTnVtYmVyKGl0KTtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BOKEJhc2UpIDogKFxuICAgIC8vIEVTMzpcbiAgICAnTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksJyArXG4gICAgLy8gRVM2IChpbiBjYXNlLCBpZiBtb2R1bGVzIHdpdGggRVM2IE51bWJlciBzdGF0aWNzIHJlcXVpcmVkIGJlZm9yZSk6XG4gICAgJ0VQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUiwnICtcbiAgICAnTUlOX1NBRkVfSU5URUdFUixwYXJzZUZsb2F0LHBhcnNlSW50LGlzSW50ZWdlcidcbiAgKS5zcGxpdCgnLCcpLCBqID0gMCwga2V5OyBrZXlzLmxlbmd0aCA+IGo7IGorKykge1xuICAgIGlmIChoYXMoQmFzZSwga2V5ID0ga2V5c1tqXSkgJiYgIWhhcygkTnVtYmVyLCBrZXkpKSB7XG4gICAgICBkUCgkTnVtYmVyLCBrZXksIGdPUEQoQmFzZSwga2V5KSk7XG4gICAgfVxuICB9XG4gICROdW1iZXIucHJvdG90eXBlID0gcHJvdG87XG4gIHByb3RvLmNvbnN0cnVjdG9yID0gJE51bWJlcjtcbiAgcmVxdWlyZSgnLi9fcmVkZWZpbmUnKShnbG9iYWwsIE5VTUJFUiwgJE51bWJlcik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.number.constructor.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.object.define-properties.js":
/*!**********************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.object.define-properties.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\"), 'Object', { defineProperties: __webpack_require__(/*! ./_object-dps */ \"./node_modules/core-js/modules/_object-dps.js\") });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMuanM/NThiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjMgLyAxNS4yLjMuNyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydGllczogcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpIH0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.object.define-properties.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.object.define-property.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.object.define-property.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\").f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcz8xYzAxIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydHk6IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYgfSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.object.define-property.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.object.keys.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.object.keys.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/modules/_to-object.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/modules/_object-keys.js\");\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/modules/_object-sap.js\")('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzPzQ1NmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgna2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gJGtleXModG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.object.keys.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.regexp.constructor.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.regexp.constructor.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\");\nvar inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ \"./node_modules/core-js/modules/_inherit-if-required.js\");\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\").f;\nvar gOPN = __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/modules/_object-gopn.js\").f;\nvar isRegExp = __webpack_require__(/*! ./_is-regexp */ \"./node_modules/core-js/modules/_is-regexp.js\");\nvar $flags = __webpack_require__(/*! ./_flags */ \"./node_modules/core-js/modules/_flags.js\");\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\") && (!CORRECT_NEW || __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\")(function () {\n  re2[__webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\")('match')] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n  $RegExp = function RegExp(p, f) {\n    var tiRE = this instanceof $RegExp;\n    var piRE = isRegExp(p);\n    var fiU = f === undefined;\n    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n      : inheritIfRequired(CORRECT_NEW\n        ? new Base(piRE && !fiU ? p.source : p, f)\n        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n      , tiRE ? this : proto, $RegExp);\n  };\n  var proxy = function (key) {\n    key in $RegExp || dP($RegExp, key, {\n      configurable: true,\n      get: function () { return Base[key]; },\n      set: function (it) { Base[key] = it; }\n    });\n  };\n  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n  proto.constructor = $RegExp;\n  $RegExp.prototype = proto;\n  __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/modules/_redefine.js\")(global, 'RegExp', $RegExp);\n}\n\n__webpack_require__(/*! ./_set-species */ \"./node_modules/core-js/modules/_set-species.js\")('RegExp');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3IuanM/M2IyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuL19pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKTtcbnZhciAkZmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xudmFyICRSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIEJhc2UgPSAkUmVnRXhwO1xudmFyIHByb3RvID0gJFJlZ0V4cC5wcm90b3R5cGU7XG52YXIgcmUxID0gL2EvZztcbnZhciByZTIgPSAvYS9nO1xuLy8gXCJuZXdcIiBjcmVhdGVzIGEgbmV3IG9iamVjdCwgb2xkIHdlYmtpdCBidWdneSBoZXJlXG52YXIgQ09SUkVDVF9ORVcgPSBuZXcgJFJlZ0V4cChyZTEpICE9PSByZTE7XG5cbmlmIChyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICghQ09SUkVDVF9ORVcgfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJlMltyZXF1aXJlKCcuL193a3MnKSgnbWF0Y2gnKV0gPSBmYWxzZTtcbiAgLy8gUmVnRXhwIGNvbnN0cnVjdG9yIGNhbiBhbHRlciBmbGFncyBhbmQgSXNSZWdFeHAgd29ya3MgY29ycmVjdCB3aXRoIEBAbWF0Y2hcbiAgcmV0dXJuICRSZWdFeHAocmUxKSAhPSByZTEgfHwgJFJlZ0V4cChyZTIpID09IHJlMiB8fCAkUmVnRXhwKHJlMSwgJ2knKSAhPSAnL2EvaSc7XG59KSkpIHtcbiAgJFJlZ0V4cCA9IGZ1bmN0aW9uIFJlZ0V4cChwLCBmKSB7XG4gICAgdmFyIHRpUkUgPSB0aGlzIGluc3RhbmNlb2YgJFJlZ0V4cDtcbiAgICB2YXIgcGlSRSA9IGlzUmVnRXhwKHApO1xuICAgIHZhciBmaVUgPSBmID09PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICF0aVJFICYmIHBpUkUgJiYgcC5jb25zdHJ1Y3RvciA9PT0gJFJlZ0V4cCAmJiBmaVUgPyBwXG4gICAgICA6IGluaGVyaXRJZlJlcXVpcmVkKENPUlJFQ1RfTkVXXG4gICAgICAgID8gbmV3IEJhc2UocGlSRSAmJiAhZmlVID8gcC5zb3VyY2UgOiBwLCBmKVxuICAgICAgICA6IEJhc2UoKHBpUkUgPSBwIGluc3RhbmNlb2YgJFJlZ0V4cCkgPyBwLnNvdXJjZSA6IHAsIHBpUkUgJiYgZmlVID8gJGZsYWdzLmNhbGwocCkgOiBmKVxuICAgICAgLCB0aVJFID8gdGhpcyA6IHByb3RvLCAkUmVnRXhwKTtcbiAgfTtcbiAgdmFyIHByb3h5ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIGtleSBpbiAkUmVnRXhwIHx8IGRQKCRSZWdFeHAsIGtleSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBCYXNlW2tleV07IH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIChpdCkgeyBCYXNlW2tleV0gPSBpdDsgfVxuICAgIH0pO1xuICB9O1xuICBmb3IgKHZhciBrZXlzID0gZ09QTihCYXNlKSwgaSA9IDA7IGtleXMubGVuZ3RoID4gaTspIHByb3h5KGtleXNbaSsrXSk7XG4gIHByb3RvLmNvbnN0cnVjdG9yID0gJFJlZ0V4cDtcbiAgJFJlZ0V4cC5wcm90b3R5cGUgPSBwcm90bztcbiAgcmVxdWlyZSgnLi9fcmVkZWZpbmUnKShnbG9iYWwsICdSZWdFeHAnLCAkUmVnRXhwKTtcbn1cblxucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKSgnUmVnRXhwJyk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.regexp.constructor.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.regexp.exec.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.regexp.exec.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar regexpExec = __webpack_require__(/*! ./_regexp-exec */ \"./node_modules/core-js/modules/_regexp-exec.js\");\n__webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\")({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuZXhlYy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5leGVjLmpzP2IwYzUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYycpO1xucmVxdWlyZSgnLi9fZXhwb3J0Jykoe1xuICB0YXJnZXQ6ICdSZWdFeHAnLFxuICBwcm90bzogdHJ1ZSxcbiAgZm9yY2VkOiByZWdleHBFeGVjICE9PSAvLi8uZXhlY1xufSwge1xuICBleGVjOiByZWdleHBFeGVjXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.regexp.exec.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.regexp.flags.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.regexp.flags.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// 21.2.5.3 get RegExp.prototype.flags()\nif (__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\") && /./g.flags != 'g') __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/modules/_object-dp.js\").f(RegExp.prototype, 'flags', {\n  configurable: true,\n  get: __webpack_require__(/*! ./_flags */ \"./node_modules/core-js/modules/_flags.js\")\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuZmxhZ3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuZmxhZ3MuanM/Mzg0NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMS4yLjUuMyBnZXQgUmVnRXhwLnByb3RvdHlwZS5mbGFncygpXG5pZiAocmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAvLi9nLmZsYWdzICE9ICdnJykgcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZihSZWdFeHAucHJvdG90eXBlLCAnZmxhZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiByZXF1aXJlKCcuL19mbGFncycpXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.regexp.flags.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.regexp.match.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.regexp.match.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/modules/_to-length.js\");\nvar advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ \"./node_modules/core-js/modules/_advance-string-index.js\");\nvar regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ \"./node_modules/core-js/modules/_regexp-exec-abstract.js\");\n\n// @@match logic\n__webpack_require__(/*! ./_fix-re-wks */ \"./node_modules/core-js/modules/_fix-re-wks.js\")('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAubWF0Y2guanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAubWF0Y2guanM/NDkxNyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi9fYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciByZWdFeHBFeGVjID0gcmVxdWlyZSgnLi9fcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxuLy8gQEBtYXRjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdtYXRjaCcsIDEsIGZ1bmN0aW9uIChkZWZpbmVkLCBNQVRDSCwgJG1hdGNoLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5tYXRjaGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5tYXRjaFxuICAgIGZ1bmN0aW9uIG1hdGNoKHJlZ2V4cCkge1xuICAgICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgICAgdmFyIGZuID0gcmVnZXhwID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHJlZ2V4cFtNQVRDSF07XG4gICAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZCA/IGZuLmNhbGwocmVnZXhwLCBPKSA6IG5ldyBSZWdFeHAocmVnZXhwKVtNQVRDSF0oU3RyaW5nKE8pKTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAbWF0Y2hdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAbWF0Y2hcbiAgICBmdW5jdGlvbiAocmVnZXhwKSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKCRtYXRjaCwgcmVnZXhwLCB0aGlzKTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIGlmICghcnguZ2xvYmFsKSByZXR1cm4gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIHZhciBBID0gW107XG4gICAgICB2YXIgbiA9IDA7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgd2hpbGUgKChyZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKSkgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIG1hdGNoU3RyID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIEFbbl0gPSBtYXRjaFN0cjtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgICAgbisrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG4gPT09IDAgPyBudWxsIDogQTtcbiAgICB9XG4gIF07XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.regexp.match.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.regexp.replace.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.regexp.replace.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/modules/_to-object.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/modules/_to-length.js\");\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/modules/_to-integer.js\");\nvar advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ \"./node_modules/core-js/modules/_advance-string-index.js\");\nvar regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ \"./node_modules/core-js/modules/_regexp-exec-abstract.js\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(/*! ./_fix-re-wks */ \"./node_modules/core-js/modules/_fix-re-wks.js\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAucmVwbGFjZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlLmpzP2E0ODEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4vX2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTID0gL1xcJChbJCZgJ118XFxkXFxkP3w8W14+XSo+KS9nO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEID0gL1xcJChbJCZgJ118XFxkXFxkPykvZztcblxudmFyIG1heWJlVG9TdHJpbmcgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyBpdCA6IFN0cmluZyhpdCk7XG59O1xuXG4vLyBAQHJlcGxhY2UgbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgncmVwbGFjZScsIDIsIGZ1bmN0aW9uIChkZWZpbmVkLCBSRVBMQUNFLCAkcmVwbGFjZSwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUucmVwbGFjZWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlXG4gICAgZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgTyA9IGRlZmluZWQodGhpcyk7XG4gICAgICB2YXIgZm4gPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZWFyY2hWYWx1ZVtSRVBMQUNFXTtcbiAgICAgIHJldHVybiBmbiAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gZm4uY2FsbChzZWFyY2hWYWx1ZSwgTywgcmVwbGFjZVZhbHVlKVxuICAgICAgICA6ICRyZXBsYWNlLmNhbGwoU3RyaW5nKE8pLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEByZXBsYWNlXG4gICAgZnVuY3Rpb24gKHJlZ2V4cCwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKCRyZXBsYWNlLCByZWdleHAsIHRoaXMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG5cbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIHZhciBmdW5jdGlvbmFsUmVwbGFjZSA9IHR5cGVvZiByZXBsYWNlVmFsdWUgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoIWZ1bmN0aW9uYWxSZXBsYWNlKSByZXBsYWNlVmFsdWUgPSBTdHJpbmcocmVwbGFjZVZhbHVlKTtcbiAgICAgIHZhciBnbG9iYWwgPSByeC5nbG9iYWw7XG4gICAgICBpZiAoZ2xvYmFsKSB7XG4gICAgICAgIHZhciBmdWxsVW5pY29kZSA9IHJ4LnVuaWNvZGU7XG4gICAgICAgIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlZ0V4cEV4ZWMocngsIFMpO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSBicmVhaztcbiAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIGlmICghZ2xvYmFsKSBicmVhaztcbiAgICAgICAgdmFyIG1hdGNoU3RyID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICB9XG4gICAgICB2YXIgYWNjdW11bGF0ZWRSZXN1bHQgPSAnJztcbiAgICAgIHZhciBuZXh0U291cmNlUG9zaXRpb24gPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdHNbaV07XG4gICAgICAgIHZhciBtYXRjaGVkID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IG1heChtaW4odG9JbnRlZ2VyKHJlc3VsdC5pbmRleCksIFMubGVuZ3RoKSwgMCk7XG4gICAgICAgIHZhciBjYXB0dXJlcyA9IFtdO1xuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICAgLy8gICBjYXB0dXJlcyA9IHJlc3VsdC5zbGljZSgxKS5tYXAobWF5YmVUb1N0cmluZylcbiAgICAgICAgLy8gYnV0IGZvciBzb21lIHJlYXNvbiBgbmF0aXZlU2xpY2UuY2FsbChyZXN1bHQsIDEsIHJlc3VsdC5sZW5ndGgpYCAoY2FsbGVkIGluXG4gICAgICAgIC8vIHRoZSBzbGljZSBwb2x5ZmlsbCB3aGVuIHNsaWNpbmcgbmF0aXZlIGFycmF5cykgXCJkb2Vzbid0IHdvcmtcIiBpbiBzYWZhcmkgOSBhbmRcbiAgICAgICAgLy8gY2F1c2VzIGEgY3Jhc2ggKGh0dHBzOi8vcGFzdGViaW4uY29tL04yMVF6ZVFBKSB3aGVuIHRyeWluZyB0byBkZWJ1ZyBpdC5cbiAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCByZXN1bHQubGVuZ3RoOyBqKyspIGNhcHR1cmVzLnB1c2gobWF5YmVUb1N0cmluZyhyZXN1bHRbal0pKTtcbiAgICAgICAgdmFyIG5hbWVkQ2FwdHVyZXMgPSByZXN1bHQuZ3JvdXBzO1xuICAgICAgICBpZiAoZnVuY3Rpb25hbFJlcGxhY2UpIHtcbiAgICAgICAgICB2YXIgcmVwbGFjZXJBcmdzID0gW21hdGNoZWRdLmNvbmNhdChjYXB0dXJlcywgcG9zaXRpb24sIFMpO1xuICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHJlcGxhY2VyQXJncy5wdXNoKG5hbWVkQ2FwdHVyZXMpO1xuICAgICAgICAgIHZhciByZXBsYWNlbWVudCA9IFN0cmluZyhyZXBsYWNlVmFsdWUuYXBwbHkodW5kZWZpbmVkLCByZXBsYWNlckFyZ3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXBsYWNlbWVudCA9IGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBTLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvc2l0aW9uID49IG5leHRTb3VyY2VQb3NpdGlvbikge1xuICAgICAgICAgIGFjY3VtdWxhdGVkUmVzdWx0ICs9IFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uLCBwb3NpdGlvbikgKyByZXBsYWNlbWVudDtcbiAgICAgICAgICBuZXh0U291cmNlUG9zaXRpb24gPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW11bGF0ZWRSZXN1bHQgKyBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbik7XG4gICAgfVxuICBdO1xuXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZ2V0c3Vic3RpdHV0aW9uXG4gIGZ1bmN0aW9uIGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBzdHIsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFjZW1lbnQpIHtcbiAgICB2YXIgdGFpbFBvcyA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgdmFyIG0gPSBjYXB0dXJlcy5sZW5ndGg7XG4gICAgdmFyIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRDtcbiAgICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBuYW1lZENhcHR1cmVzID0gdG9PYmplY3QobmFtZWRDYXB0dXJlcyk7XG4gICAgICBzeW1ib2xzID0gU1VCU1RJVFVUSU9OX1NZTUJPTFM7XG4gICAgfVxuICAgIHJldHVybiAkcmVwbGFjZS5jYWxsKHJlcGxhY2VtZW50LCBzeW1ib2xzLCBmdW5jdGlvbiAobWF0Y2gsIGNoKSB7XG4gICAgICB2YXIgY2FwdHVyZTtcbiAgICAgIHN3aXRjaCAoY2guY2hhckF0KDApKSB7XG4gICAgICAgIGNhc2UgJyQnOiByZXR1cm4gJyQnO1xuICAgICAgICBjYXNlICcmJzogcmV0dXJuIG1hdGNoZWQ7XG4gICAgICAgIGNhc2UgJ2AnOiByZXR1cm4gc3RyLnNsaWNlKDAsIHBvc2l0aW9uKTtcbiAgICAgICAgY2FzZSBcIidcIjogcmV0dXJuIHN0ci5zbGljZSh0YWlsUG9zKTtcbiAgICAgICAgY2FzZSAnPCc6XG4gICAgICAgICAgY2FwdHVyZSA9IG5hbWVkQ2FwdHVyZXNbY2guc2xpY2UoMSwgLTEpXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDogLy8gXFxkXFxkP1xuICAgICAgICAgIHZhciBuID0gK2NoO1xuICAgICAgICAgIGlmIChuID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgaWYgKG4gPiBtKSB7XG4gICAgICAgICAgICB2YXIgZiA9IGZsb29yKG4gLyAxMCk7XG4gICAgICAgICAgICBpZiAoZiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgICAgaWYgKGYgPD0gbSkgcmV0dXJuIGNhcHR1cmVzW2YgLSAxXSA9PT0gdW5kZWZpbmVkID8gY2guY2hhckF0KDEpIDogY2FwdHVyZXNbZiAtIDFdICsgY2guY2hhckF0KDEpO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXB0dXJlID0gY2FwdHVyZXNbbiAtIDFdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNhcHR1cmUgPT09IHVuZGVmaW5lZCA/ICcnIDogY2FwdHVyZTtcbiAgICB9KTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.regexp.replace.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.regexp.search.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.regexp.search.js ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar sameValue = __webpack_require__(/*! ./_same-value */ \"./node_modules/core-js/modules/_same-value.js\");\nvar regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ \"./node_modules/core-js/modules/_regexp-exec-abstract.js\");\n\n// @@search logic\n__webpack_require__(/*! ./_fix-re-wks */ \"./node_modules/core-js/modules/_fix-re-wks.js\")('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[SEARCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative($search, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc2VhcmNoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnNlYXJjaC5qcz8zODZkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgc2FtZVZhbHVlID0gcmVxdWlyZSgnLi9fc2FtZS12YWx1ZScpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xuXG4vLyBAQHNlYXJjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdzZWFyY2gnLCAxLCBmdW5jdGlvbiAoZGVmaW5lZCwgU0VBUkNILCAkc2VhcmNoLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zZWFyY2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc2VhcmNoXG4gICAgZnVuY3Rpb24gc2VhcmNoKHJlZ2V4cCkge1xuICAgICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgICAgdmFyIGZuID0gcmVnZXhwID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHJlZ2V4cFtTRUFSQ0hdO1xuICAgICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbU0VBUkNIXShTdHJpbmcoTykpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEBzZWFyY2hdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAc2VhcmNoXG4gICAgZnVuY3Rpb24gKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZSgkc2VhcmNoLCByZWdleHAsIHRoaXMpO1xuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgICAgdmFyIHByZXZpb3VzTGFzdEluZGV4ID0gcngubGFzdEluZGV4O1xuICAgICAgaWYgKCFzYW1lVmFsdWUocHJldmlvdXNMYXN0SW5kZXgsIDApKSByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIHJlc3VsdCA9IHJlZ0V4cEV4ZWMocngsIFMpO1xuICAgICAgaWYgKCFzYW1lVmFsdWUocngubGFzdEluZGV4LCBwcmV2aW91c0xhc3RJbmRleCkpIHJ4Lmxhc3RJbmRleCA9IHByZXZpb3VzTGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gbnVsbCA/IC0xIDogcmVzdWx0LmluZGV4O1xuICAgIH1cbiAgXTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.regexp.search.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.regexp.split.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.regexp.split.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar isRegExp = __webpack_require__(/*! ./_is-regexp */ \"./node_modules/core-js/modules/_is-regexp.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar speciesConstructor = __webpack_require__(/*! ./_species-constructor */ \"./node_modules/core-js/modules/_species-constructor.js\");\nvar advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ \"./node_modules/core-js/modules/_advance-string-index.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/modules/_to-length.js\");\nvar callRegExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ \"./node_modules/core-js/modules/_regexp-exec-abstract.js\");\nvar regexpExec = __webpack_require__(/*! ./_regexp-exec */ \"./node_modules/core-js/modules/_regexp-exec.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\");\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\n__webpack_require__(/*! ./_fix-re-wks */ \"./node_modules/core-js/modules/_fix-re-wks.js\")('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n    ''[$SPLIT](/.?/)[LENGTH]\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(this);\n      if (separator === undefined && limit === 0) return [];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) return $split.call(string, separator, limit);\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy[LAST_INDEX];\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n          lastLength = match[0][LENGTH];\n          lastLastIndex = lastIndex;\n          if (output[LENGTH] >= splitLimit) break;\n        }\n        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string[LENGTH]) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n    };\n  // Chakra, V8\n  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n    };\n  } else {\n    internalSplit = $split;\n  }\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = defined(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc3BsaXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc3BsaXQuanM/MjhhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4vX2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjYWxsUmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyICRtaW4gPSBNYXRoLm1pbjtcbnZhciAkcHVzaCA9IFtdLnB1c2g7XG52YXIgJFNQTElUID0gJ3NwbGl0JztcbnZhciBMRU5HVEggPSAnbGVuZ3RoJztcbnZhciBMQVNUX0lOREVYID0gJ2xhc3RJbmRleCc7XG52YXIgTUFYX1VJTlQzMiA9IDB4ZmZmZmZmZmY7XG5cbi8vIGJhYmVsLW1pbmlmeSB0cmFuc3BpbGVzIFJlZ0V4cCgneCcsICd5JykgLT4gL3gveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgU1VQUE9SVFNfWSA9ICFmYWlscyhmdW5jdGlvbiAoKSB7IFJlZ0V4cChNQVhfVUlOVDMyLCAneScpOyB9KTtcblxuLy8gQEBzcGxpdCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdzcGxpdCcsIDIsIGZ1bmN0aW9uIChkZWZpbmVkLCBTUExJVCwgJHNwbGl0LCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgdmFyIGludGVybmFsU3BsaXQ7XG4gIGlmIChcbiAgICAnYWJiYydbJFNQTElUXSgvKGIpKi8pWzFdID09ICdjJyB8fFxuICAgICd0ZXN0J1skU1BMSVRdKC8oPzopLywgLTEpW0xFTkdUSF0gIT0gNCB8fFxuICAgICdhYidbJFNQTElUXSgvKD86YWIpKi8pW0xFTkdUSF0gIT0gMiB8fFxuICAgICcuJ1skU1BMSVRdKC8oLj8pKC4/KS8pW0xFTkdUSF0gIT0gNCB8fFxuICAgICcuJ1skU1BMSVRdKC8oKSgpLylbTEVOR1RIXSA+IDEgfHxcbiAgICAnJ1skU1BMSVRdKC8uPy8pW0xFTkdUSF1cbiAgKSB7XG4gICAgLy8gYmFzZWQgb24gZXM1LXNoaW0gaW1wbGVtZW50YXRpb24sIG5lZWQgdG8gcmV3b3JrIGl0XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgc3RyaW5nID0gU3RyaW5nKHRoaXMpO1xuICAgICAgaWYgKHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwKSByZXR1cm4gW107XG4gICAgICAvLyBJZiBgc2VwYXJhdG9yYCBpcyBub3QgYSByZWdleCwgdXNlIG5hdGl2ZSBzcGxpdFxuICAgICAgaWYgKCFpc1JlZ0V4cChzZXBhcmF0b3IpKSByZXR1cm4gJHNwbGl0LmNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICAgIHZhciBmbGFncyA9IChzZXBhcmF0b3IuaWdub3JlQ2FzZSA/ICdpJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLm11bHRpbGluZSA/ICdtJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLnVuaWNvZGUgPyAndScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5zdGlja3kgPyAneScgOiAnJyk7XG4gICAgICB2YXIgbGFzdExhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgc3BsaXRMaW1pdCA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfVUlOVDMyIDogbGltaXQgPj4+IDA7XG4gICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weVxuICAgICAgdmFyIHNlcGFyYXRvckNvcHkgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgJ2cnKTtcbiAgICAgIHZhciBtYXRjaCwgbGFzdEluZGV4LCBsYXN0TGVuZ3RoO1xuICAgICAgd2hpbGUgKG1hdGNoID0gcmVnZXhwRXhlYy5jYWxsKHNlcGFyYXRvckNvcHksIHN0cmluZykpIHtcbiAgICAgICAgbGFzdEluZGV4ID0gc2VwYXJhdG9yQ29weVtMQVNUX0lOREVYXTtcbiAgICAgICAgaWYgKGxhc3RJbmRleCA+IGxhc3RMYXN0SW5kZXgpIHtcbiAgICAgICAgICBvdXRwdXQucHVzaChzdHJpbmcuc2xpY2UobGFzdExhc3RJbmRleCwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgICBpZiAobWF0Y2hbTEVOR1RIXSA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHJpbmdbTEVOR1RIXSkgJHB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdW0xFTkdUSF07XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0W0xFTkdUSF0gPj0gc3BsaXRMaW1pdCkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF0gPT09IG1hdGNoLmluZGV4KSBzZXBhcmF0b3JDb3B5W0xBU1RfSU5ERVhdKys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmdbTEVOR1RIXSkge1xuICAgICAgICBpZiAobGFzdExlbmd0aCB8fCAhc2VwYXJhdG9yQ29weS50ZXN0KCcnKSkgb3V0cHV0LnB1c2goJycpO1xuICAgICAgfSBlbHNlIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4KSk7XG4gICAgICByZXR1cm4gb3V0cHV0W0xFTkdUSF0gPiBzcGxpdExpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIHNwbGl0TGltaXQpIDogb3V0cHV0O1xuICAgIH07XG4gIC8vIENoYWtyYSwgVjhcbiAgfSBlbHNlIGlmICgnMCdbJFNQTElUXSh1bmRlZmluZWQsIDApW0xFTkdUSF0pIHtcbiAgICBpbnRlcm5hbFNwbGl0ID0gZnVuY3Rpb24gKHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHJldHVybiBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCAmJiBsaW1pdCA9PT0gMCA/IFtdIDogJHNwbGl0LmNhbGwodGhpcywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBpbnRlcm5hbFNwbGl0ID0gJHNwbGl0O1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zcGxpdFxuICAgIGZ1bmN0aW9uIHNwbGl0KHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICAgIHZhciBzcGxpdHRlciA9IHNlcGFyYXRvciA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZXBhcmF0b3JbU1BMSVRdO1xuICAgICAgcmV0dXJuIHNwbGl0dGVyICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBzcGxpdHRlci5jYWxsKHNlcGFyYXRvciwgTywgbGltaXQpXG4gICAgICAgIDogaW50ZXJuYWxTcGxpdC5jYWxsKFN0cmluZyhPKSwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHNwbGl0XG4gICAgLy9cbiAgICAvLyBOT1RFOiBUaGlzIGNhbm5vdCBiZSBwcm9wZXJseSBwb2x5ZmlsbGVkIGluIGVuZ2luZXMgdGhhdCBkb24ndCBzdXBwb3J0XG4gICAgLy8gdGhlICd5JyBmbGFnLlxuICAgIGZ1bmN0aW9uIChyZWdleHAsIGxpbWl0KSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKGludGVybmFsU3BsaXQsIHJlZ2V4cCwgdGhpcywgbGltaXQsIGludGVybmFsU3BsaXQgIT09ICRzcGxpdCk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG5cbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHJ4LCBSZWdFeHApO1xuXG4gICAgICB2YXIgdW5pY29kZU1hdGNoaW5nID0gcngudW5pY29kZTtcbiAgICAgIHZhciBmbGFncyA9IChyeC5pZ25vcmVDYXNlID8gJ2knIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChyeC5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJ4LnVuaWNvZGUgPyAndScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKFNVUFBPUlRTX1kgPyAneScgOiAnZycpO1xuXG4gICAgICAvLyBeKD8gKyByeCArICkgaXMgbmVlZGVkLCBpbiBjb21iaW5hdGlvbiB3aXRoIHNvbWUgUyBzbGljaW5nLCB0b1xuICAgICAgLy8gc2ltdWxhdGUgdGhlICd5JyBmbGFnLlxuICAgICAgdmFyIHNwbGl0dGVyID0gbmV3IEMoU1VQUE9SVFNfWSA/IHJ4IDogJ14oPzonICsgcnguc291cmNlICsgJyknLCBmbGFncyk7XG4gICAgICB2YXIgbGltID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9VSU5UMzIgOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmIChsaW0gPT09IDApIHJldHVybiBbXTtcbiAgICAgIGlmIChTLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKSA9PT0gbnVsbCA/IFtTXSA6IFtdO1xuICAgICAgdmFyIHAgPSAwO1xuICAgICAgdmFyIHEgPSAwO1xuICAgICAgdmFyIEEgPSBbXTtcbiAgICAgIHdoaWxlIChxIDwgUy5sZW5ndGgpIHtcbiAgICAgICAgc3BsaXR0ZXIubGFzdEluZGV4ID0gU1VQUE9SVFNfWSA/IHEgOiAwO1xuICAgICAgICB2YXIgeiA9IGNhbGxSZWdFeHBFeGVjKHNwbGl0dGVyLCBTVVBQT1JUU19ZID8gUyA6IFMuc2xpY2UocSkpO1xuICAgICAgICB2YXIgZTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHogPT09IG51bGwgfHxcbiAgICAgICAgICAoZSA9ICRtaW4odG9MZW5ndGgoc3BsaXR0ZXIubGFzdEluZGV4ICsgKFNVUFBPUlRTX1kgPyAwIDogcSkpLCBTLmxlbmd0aCkpID09PSBwXG4gICAgICAgICkge1xuICAgICAgICAgIHEgPSBhZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBBLnB1c2goUy5zbGljZShwLCBxKSk7XG4gICAgICAgICAgaWYgKEEubGVuZ3RoID09PSBsaW0pIHJldHVybiBBO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHoubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBBLnB1c2goeltpXSk7XG4gICAgICAgICAgICBpZiAoQS5sZW5ndGggPT09IGxpbSkgcmV0dXJuIEE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHEgPSBwID0gZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQS5wdXNoKFMuc2xpY2UocCkpO1xuICAgICAgcmV0dXJuIEE7XG4gICAgfVxuICBdO1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.regexp.split.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.regexp.to-string.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.regexp.to-string.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n__webpack_require__(/*! ./es6.regexp.flags */ \"./node_modules/core-js/modules/es6.regexp.flags.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/modules/_an-object.js\");\nvar $flags = __webpack_require__(/*! ./_flags */ \"./node_modules/core-js/modules/_flags.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/modules/_descriptors.js\");\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n  __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/modules/_redefine.js\")(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/modules/_fails.js\")(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n  define(function toString() {\n    var R = anObject(this);\n    return '/'.concat(R.source, '/',\n      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n  });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n  define(function toString() {\n    return $toString.call(this);\n  });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAudG8tc3RyaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnRvLXN0cmluZy5qcz82YjU0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4vZXM2LnJlZ2V4cC5mbGFncycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgJGZsYWdzID0gcmVxdWlyZSgnLi9fZmxhZ3MnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSAvLi9bVE9fU1RSSU5HXTtcblxudmFyIGRlZmluZSA9IGZ1bmN0aW9uIChmbikge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKFJlZ0V4cC5wcm90b3R5cGUsIFRPX1NUUklORywgZm4sIHRydWUpO1xufTtcblxuLy8gMjEuMi41LjE0IFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcoKVxuaWYgKHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkgeyByZXR1cm4gJHRvU3RyaW5nLmNhbGwoeyBzb3VyY2U6ICdhJywgZmxhZ3M6ICdiJyB9KSAhPSAnL2EvYic7IH0pKSB7XG4gIGRlZmluZShmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgUiA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHJldHVybiAnLycuY29uY2F0KFIuc291cmNlLCAnLycsXG4gICAgICAnZmxhZ3MnIGluIFIgPyBSLmZsYWdzIDogIURFU0NSSVBUT1JTICYmIFIgaW5zdGFuY2VvZiBSZWdFeHAgPyAkZmxhZ3MuY2FsbChSKSA6IHVuZGVmaW5lZCk7XG4gIH0pO1xuLy8gRkY0NC0gUmVnRXhwI3RvU3RyaW5nIGhhcyBhIHdyb25nIG5hbWVcbn0gZWxzZSBpZiAoJHRvU3RyaW5nLm5hbWUgIT0gVE9fU1RSSU5HKSB7XG4gIGRlZmluZShmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJHRvU3RyaW5nLmNhbGwodGhpcyk7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.regexp.to-string.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.string.includes.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js/modules/es6.string.includes.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar context = __webpack_require__(/*! ./_string-context */ \"./node_modules/core-js/modules/_string-context.js\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ \"./node_modules/core-js/modules/_fails-is-regexp.js\")(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuaW5jbHVkZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuaW5jbHVkZXMuanM/MmZkYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMS4xLjMuNyBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzKHNlYXJjaFN0cmluZywgcG9zaXRpb24gPSAwKVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBJTkNMVURFUyA9ICdpbmNsdWRlcyc7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMtaXMtcmVnZXhwJykoSU5DTFVERVMpLCAnU3RyaW5nJywge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgcmV0dXJuICEhfmNvbnRleHQodGhpcywgc2VhcmNoU3RyaW5nLCBJTkNMVURFUylcbiAgICAgIC5pbmRleE9mKHNlYXJjaFN0cmluZywgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.string.includes.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es6.string.trim.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js/modules/es6.string.trim.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n// 21.1.3.25 String.prototype.trim()\n__webpack_require__(/*! ./_string-trim */ \"./node_modules/core-js/modules/_string-trim.js\")('trim', function ($trim) {\n  return function trim() {\n    return $trim(this, 3);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcudHJpbS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy50cmltLmpzPzRmMzciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gMjEuMS4zLjI1IFN0cmluZy5wcm90b3R5cGUudHJpbSgpXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltJywgZnVuY3Rpb24gKCR0cmltKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0cmltKCkge1xuICAgIHJldHVybiAkdHJpbSh0aGlzLCAzKTtcbiAgfTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es6.string.trim.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es7.array.includes.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/modules/es7.array.includes.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar $includes = __webpack_require__(/*! ./_array-includes */ \"./node_modules/core-js/modules/_array-includes.js\")(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n__webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/core-js/modules/_add-to-unscopables.js\")('includes');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5pbmNsdWRlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmluY2x1ZGVzLmpzPzY3NjIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRpbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhlbCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnaW5jbHVkZXMnKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es7.array.includes.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/modules/_export.js\");\nvar ownKeys = __webpack_require__(/*! ./_own-keys */ \"./node_modules/core-js/modules/_own-keys.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/modules/_to-iobject.js\");\nvar gOPD = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/modules/_object-gopd.js\");\nvar createProperty = __webpack_require__(/*! ./_create-property */ \"./node_modules/core-js/modules/_create-property.js\");\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzLmpzPzhlNmUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvcnNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4vX293bi1rZXlzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gICAgdmFyIGdldERlc2MgPSBnT1BELmY7XG4gICAgdmFyIGtleXMgPSBvd25LZXlzKE8pO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleSwgZGVzYztcbiAgICB3aGlsZSAoa2V5cy5sZW5ndGggPiBpKSB7XG4gICAgICBkZXNjID0gZ2V0RGVzYyhPLCBrZXkgPSBrZXlzW2krK10pO1xuICAgICAgaWYgKGRlc2MgIT09IHVuZGVmaW5lZCkgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBrZXksIGRlc2MpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\n");

/***/ }),

/***/ "./node_modules/core-js/modules/web.dom.iterable.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js/modules/web.dom.iterable.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var $iterators = __webpack_require__(/*! ./es6.array.iterator */ \"./node_modules/core-js/modules/es6.array.iterator.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/modules/_object-keys.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/modules/_redefine.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/modules/_global.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/modules/_iterators.js\");\nvar wks = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/modules/_wks.js\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanM/YWM2YSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgSVRFUkFUT1IgPSB3a3MoJ2l0ZXJhdG9yJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHdrcygndG9TdHJpbmdUYWcnKTtcbnZhciBBcnJheVZhbHVlcyA9IEl0ZXJhdG9ycy5BcnJheTtcblxudmFyIERPTUl0ZXJhYmxlcyA9IHtcbiAgQ1NTUnVsZUxpc3Q6IHRydWUsIC8vIFRPRE86IE5vdCBzcGVjIGNvbXBsaWFudCwgc2hvdWxkIGJlIGZhbHNlLlxuICBDU1NTdHlsZURlY2xhcmF0aW9uOiBmYWxzZSxcbiAgQ1NTVmFsdWVMaXN0OiBmYWxzZSxcbiAgQ2xpZW50UmVjdExpc3Q6IGZhbHNlLFxuICBET01SZWN0TGlzdDogZmFsc2UsXG4gIERPTVN0cmluZ0xpc3Q6IGZhbHNlLFxuICBET01Ub2tlbkxpc3Q6IHRydWUsXG4gIERhdGFUcmFuc2Zlckl0ZW1MaXN0OiBmYWxzZSxcbiAgRmlsZUxpc3Q6IGZhbHNlLFxuICBIVE1MQWxsQ29sbGVjdGlvbjogZmFsc2UsXG4gIEhUTUxDb2xsZWN0aW9uOiBmYWxzZSxcbiAgSFRNTEZvcm1FbGVtZW50OiBmYWxzZSxcbiAgSFRNTFNlbGVjdEVsZW1lbnQ6IGZhbHNlLFxuICBNZWRpYUxpc3Q6IHRydWUsIC8vIFRPRE86IE5vdCBzcGVjIGNvbXBsaWFudCwgc2hvdWxkIGJlIGZhbHNlLlxuICBNaW1lVHlwZUFycmF5OiBmYWxzZSxcbiAgTmFtZWROb2RlTWFwOiBmYWxzZSxcbiAgTm9kZUxpc3Q6IHRydWUsXG4gIFBhaW50UmVxdWVzdExpc3Q6IGZhbHNlLFxuICBQbHVnaW46IGZhbHNlLFxuICBQbHVnaW5BcnJheTogZmFsc2UsXG4gIFNWR0xlbmd0aExpc3Q6IGZhbHNlLFxuICBTVkdOdW1iZXJMaXN0OiBmYWxzZSxcbiAgU1ZHUGF0aFNlZ0xpc3Q6IGZhbHNlLFxuICBTVkdQb2ludExpc3Q6IGZhbHNlLFxuICBTVkdTdHJpbmdMaXN0OiBmYWxzZSxcbiAgU1ZHVHJhbnNmb3JtTGlzdDogZmFsc2UsXG4gIFNvdXJjZUJ1ZmZlckxpc3Q6IGZhbHNlLFxuICBTdHlsZVNoZWV0TGlzdDogdHJ1ZSwgLy8gVE9ETzogTm90IHNwZWMgY29tcGxpYW50LCBzaG91bGQgYmUgZmFsc2UuXG4gIFRleHRUcmFja0N1ZUxpc3Q6IGZhbHNlLFxuICBUZXh0VHJhY2tMaXN0OiBmYWxzZSxcbiAgVG91Y2hMaXN0OiBmYWxzZVxufTtcblxuZm9yICh2YXIgY29sbGVjdGlvbnMgPSBnZXRLZXlzKERPTUl0ZXJhYmxlcyksIGkgPSAwOyBpIDwgY29sbGVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgdmFyIE5BTUUgPSBjb2xsZWN0aW9uc1tpXTtcbiAgdmFyIGV4cGxpY2l0ID0gRE9NSXRlcmFibGVzW05BTUVdO1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIHByb3RvID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgdmFyIGtleTtcbiAgaWYgKHByb3RvKSB7XG4gICAgaWYgKCFwcm90b1tJVEVSQVRPUl0pIGhpZGUocHJvdG8sIElURVJBVE9SLCBBcnJheVZhbHVlcyk7XG4gICAgaWYgKCFwcm90b1tUT19TVFJJTkdfVEFHXSkgaGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gICAgSXRlcmF0b3JzW05BTUVdID0gQXJyYXlWYWx1ZXM7XG4gICAgaWYgKGV4cGxpY2l0KSBmb3IgKGtleSBpbiAkaXRlcmF0b3JzKSBpZiAoIXByb3RvW2tleV0pIHJlZGVmaW5lKHByb3RvLCBrZXksICRpdGVyYXRvcnNba2V5XSwgdHJ1ZSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/core-js/modules/web.dom.iterable.js\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/material-icons/iconfont/material-icons.css":
/*!*****************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2!./node_modules/material-icons/iconfont/material-icons.css ***!
  \*****************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var escape = __webpack_require__(/*! ../../css-loader/lib/url/escape.js */ \"./node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = __webpack_require__(/*! ../../css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"@font-face {\\n  font-family: \\\"Material Icons\\\";\\n\\n  font-style: normal;\\n\\n  font-weight: 400;\\n\\n  src: url(\" + escape(__webpack_require__(/*! ./MaterialIcons-Regular.eot */ \"./node_modules/material-icons/iconfont/MaterialIcons-Regular.eot\")) + \");\\n\\n  /* For IE6-8 */\\n\\n  src: local(\\\"Material Icons\\\"), local(\\\"MaterialIcons-Regular\\\"), url(\" + escape(__webpack_require__(/*! ./MaterialIcons-Regular.woff2 */ \"./node_modules/material-icons/iconfont/MaterialIcons-Regular.woff2\")) + \") format(\\\"woff2\\\"), url(\" + escape(__webpack_require__(/*! ./MaterialIcons-Regular.woff */ \"./node_modules/material-icons/iconfont/MaterialIcons-Regular.woff\")) + \") format(\\\"woff\\\"), url(\" + escape(__webpack_require__(/*! ./MaterialIcons-Regular.ttf */ \"./node_modules/material-icons/iconfont/MaterialIcons-Regular.ttf\")) + \") format(\\\"truetype\\\");\\n}\\n\\n.material-icons {\\n  font-family: \\\"Material Icons\\\";\\n  font-weight: normal;\\n  font-style: normal;\\n  font-size: 24px;\\n  display: inline-block;\\n  line-height: 1;\\n  text-transform: none;\\n  letter-spacing: normal;\\n  word-wrap: normal;\\n  white-space: nowrap;\\n  direction: ltr;\\n  /* Support for all WebKit browsers. */\\n  -webkit-font-smoothing: antialiased;\\n  /* Support for Safari and Chrome. */\\n  text-rendering: optimizeLegibility;\\n  /* Support for Firefox. */\\n  -moz-osx-font-smoothing: grayscale;\\n  /* Support for IE. */\\n  font-feature-settings: 'liga';\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9tYXRlcmlhbC1pY29ucy9pY29uZm9udC9tYXRlcmlhbC1pY29ucy5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbWF0ZXJpYWwtaWNvbnMvaWNvbmZvbnQvbWF0ZXJpYWwtaWNvbnMuY3NzPzA1ODAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGVzY2FwZSA9IHJlcXVpcmUoXCIuLi8uLi9jc3MtbG9hZGVyL2xpYi91cmwvZXNjYXBlLmpzXCIpO1xuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6IFxcXCJNYXRlcmlhbCBJY29uc1xcXCI7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogNDAwO1xcblxcbiAgc3JjOiB1cmwoXCIgKyBlc2NhcGUocmVxdWlyZShcIi4vTWF0ZXJpYWxJY29ucy1SZWd1bGFyLmVvdFwiKSkgKyBcIik7XFxuXFxuICAvKiBGb3IgSUU2LTggKi9cXG5cXG4gIHNyYzogbG9jYWwoXFxcIk1hdGVyaWFsIEljb25zXFxcIiksIGxvY2FsKFxcXCJNYXRlcmlhbEljb25zLVJlZ3VsYXJcXFwiKSwgdXJsKFwiICsgZXNjYXBlKHJlcXVpcmUoXCIuL01hdGVyaWFsSWNvbnMtUmVndWxhci53b2ZmMlwiKSkgKyBcIikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpLCB1cmwoXCIgKyBlc2NhcGUocmVxdWlyZShcIi4vTWF0ZXJpYWxJY29ucy1SZWd1bGFyLndvZmZcIikpICsgXCIpIGZvcm1hdChcXFwid29mZlxcXCIpLCB1cmwoXCIgKyBlc2NhcGUocmVxdWlyZShcIi4vTWF0ZXJpYWxJY29ucy1SZWd1bGFyLnR0ZlwiKSkgKyBcIikgZm9ybWF0KFxcXCJ0cnVldHlwZVxcXCIpO1xcbn1cXG5cXG4ubWF0ZXJpYWwtaWNvbnMge1xcbiAgZm9udC1mYW1pbHk6IFxcXCJNYXRlcmlhbCBJY29uc1xcXCI7XFxuICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC1zaXplOiAyNHB4O1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XFxuICB3b3JkLXdyYXA6IG5vcm1hbDtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBkaXJlY3Rpb246IGx0cjtcXG4gIC8qIFN1cHBvcnQgZm9yIGFsbCBXZWJLaXQgYnJvd3NlcnMuICovXFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcXG4gIC8qIFN1cHBvcnQgZm9yIFNhZmFyaSBhbmQgQ2hyb21lLiAqL1xcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcXG4gIC8qIFN1cHBvcnQgZm9yIEZpcmVmb3guICovXFxuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xcbiAgLyogU3VwcG9ydCBmb3IgSUUuICovXFxuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICdsaWdhJztcXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/material-icons/iconfont/material-icons.css\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/prismjs/themes/prism-tomorrow.css":
/*!********************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2!./node_modules/prismjs/themes/prism-tomorrow.css ***!
  \********************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/**\\n * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML\\n * Based on https://github.com/chriskempson/tomorrow-theme\\n * @author Rose Pritchard\\n */\\n\\ncode[class*=\\\"language-\\\"],\\npre[class*=\\\"language-\\\"] {\\n  color: #ccc;\\n  background: none;\\n  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\\n  font-size: 1em;\\n  text-align: left;\\n  white-space: pre;\\n  word-spacing: normal;\\n  word-break: normal;\\n  word-wrap: normal;\\n  line-height: 1.5;\\n  -moz-tab-size: 4;\\n  -o-tab-size: 4;\\n  tab-size: 4;\\n  -webkit-hyphens: none;\\n  -ms-hyphens: none;\\n  hyphens: none;\\n}\\n\\n/* Code blocks */\\n\\npre[class*=\\\"language-\\\"] {\\n  padding: 1em;\\n  margin: .5em 0;\\n  overflow: auto;\\n}\\n\\n:not(pre) > code[class*=\\\"language-\\\"],\\npre[class*=\\\"language-\\\"] {\\n  background: #2d2d2d;\\n}\\n\\n/* Inline code */\\n\\n:not(pre) > code[class*=\\\"language-\\\"] {\\n  padding: .1em;\\n  border-radius: .3em;\\n  white-space: normal;\\n}\\n\\n.token.comment,\\n.token.block-comment,\\n.token.prolog,\\n.token.doctype,\\n.token.cdata {\\n  color: #999;\\n}\\n\\n.token.punctuation {\\n  color: #ccc;\\n}\\n\\n.token.tag,\\n.token.attr-name,\\n.token.namespace,\\n.token.deleted {\\n  color: #e2777a;\\n}\\n\\n.token.function-name {\\n  color: #6196cc;\\n}\\n\\n.token.boolean,\\n.token.number,\\n.token.function {\\n  color: #f08d49;\\n}\\n\\n.token.property,\\n.token.class-name,\\n.token.constant,\\n.token.symbol {\\n  color: #f8c555;\\n}\\n\\n.token.selector,\\n.token.important,\\n.token.atrule,\\n.token.keyword,\\n.token.builtin {\\n  color: #cc99cd;\\n}\\n\\n.token.string,\\n.token.char,\\n.token.attr-value,\\n.token.regex,\\n.token.variable {\\n  color: #7ec699;\\n}\\n\\n.token.operator,\\n.token.entity,\\n.token.url {\\n  color: #67cdcc;\\n}\\n\\n.token.important,\\n.token.bold {\\n  font-weight: bold;\\n}\\n\\n.token.italic {\\n  font-style: italic;\\n}\\n\\n.token.entity {\\n  cursor: help;\\n}\\n\\n.token.inserted {\\n  color: green;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9wcmlzbWpzL3RoZW1lcy9wcmlzbS10b21vcnJvdy5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJpc21qcy90aGVtZXMvcHJpc20tdG9tb3Jyb3cuY3NzPzhkYmUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi8qKlxcbiAqIHByaXNtLmpzIHRvbW9ycm93IG5pZ2h0IGVpZ2h0aWVzIGZvciBKYXZhU2NyaXB0LCBDb2ZmZWVTY3JpcHQsIENTUyBhbmQgSFRNTFxcbiAqIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2tlbXBzb24vdG9tb3Jyb3ctdGhlbWVcXG4gKiBAYXV0aG9yIFJvc2UgUHJpdGNoYXJkXFxuICovXFxuXFxuY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdLFxcbnByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdIHtcXG4gIGNvbG9yOiAjY2NjO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2U7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICB3aGl0ZS1zcGFjZTogcHJlO1xcbiAgd29yZC1zcGFjaW5nOiBub3JtYWw7XFxuICB3b3JkLWJyZWFrOiBub3JtYWw7XFxuICB3b3JkLXdyYXA6IG5vcm1hbDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAtbW96LXRhYi1zaXplOiA0O1xcbiAgLW8tdGFiLXNpemU6IDQ7XFxuICB0YWItc2l6ZTogNDtcXG4gIC13ZWJraXQtaHlwaGVuczogbm9uZTtcXG4gIC1tcy1oeXBoZW5zOiBub25lO1xcbiAgaHlwaGVuczogbm9uZTtcXG59XFxuXFxuLyogQ29kZSBibG9ja3MgKi9cXG5cXG5wcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSB7XFxuICBwYWRkaW5nOiAxZW07XFxuICBtYXJnaW46IC41ZW0gMDtcXG4gIG92ZXJmbG93OiBhdXRvO1xcbn1cXG5cXG46bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0sXFxucHJlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0ge1xcbiAgYmFja2dyb3VuZDogIzJkMmQyZDtcXG59XFxuXFxuLyogSW5saW5lIGNvZGUgKi9cXG5cXG46bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0ge1xcbiAgcGFkZGluZzogLjFlbTtcXG4gIGJvcmRlci1yYWRpdXM6IC4zZW07XFxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcbn1cXG5cXG4udG9rZW4uY29tbWVudCxcXG4udG9rZW4uYmxvY2stY29tbWVudCxcXG4udG9rZW4ucHJvbG9nLFxcbi50b2tlbi5kb2N0eXBlLFxcbi50b2tlbi5jZGF0YSB7XFxuICBjb2xvcjogIzk5OTtcXG59XFxuXFxuLnRva2VuLnB1bmN0dWF0aW9uIHtcXG4gIGNvbG9yOiAjY2NjO1xcbn1cXG5cXG4udG9rZW4udGFnLFxcbi50b2tlbi5hdHRyLW5hbWUsXFxuLnRva2VuLm5hbWVzcGFjZSxcXG4udG9rZW4uZGVsZXRlZCB7XFxuICBjb2xvcjogI2UyNzc3YTtcXG59XFxuXFxuLnRva2VuLmZ1bmN0aW9uLW5hbWUge1xcbiAgY29sb3I6ICM2MTk2Y2M7XFxufVxcblxcbi50b2tlbi5ib29sZWFuLFxcbi50b2tlbi5udW1iZXIsXFxuLnRva2VuLmZ1bmN0aW9uIHtcXG4gIGNvbG9yOiAjZjA4ZDQ5O1xcbn1cXG5cXG4udG9rZW4ucHJvcGVydHksXFxuLnRva2VuLmNsYXNzLW5hbWUsXFxuLnRva2VuLmNvbnN0YW50LFxcbi50b2tlbi5zeW1ib2wge1xcbiAgY29sb3I6ICNmOGM1NTU7XFxufVxcblxcbi50b2tlbi5zZWxlY3RvcixcXG4udG9rZW4uaW1wb3J0YW50LFxcbi50b2tlbi5hdHJ1bGUsXFxuLnRva2VuLmtleXdvcmQsXFxuLnRva2VuLmJ1aWx0aW4ge1xcbiAgY29sb3I6ICNjYzk5Y2Q7XFxufVxcblxcbi50b2tlbi5zdHJpbmcsXFxuLnRva2VuLmNoYXIsXFxuLnRva2VuLmF0dHItdmFsdWUsXFxuLnRva2VuLnJlZ2V4LFxcbi50b2tlbi52YXJpYWJsZSB7XFxuICBjb2xvcjogIzdlYzY5OTtcXG59XFxuXFxuLnRva2VuLm9wZXJhdG9yLFxcbi50b2tlbi5lbnRpdHksXFxuLnRva2VuLnVybCB7XFxuICBjb2xvcjogIzY3Y2RjYztcXG59XFxuXFxuLnRva2VuLmltcG9ydGFudCxcXG4udG9rZW4uYm9sZCB7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG59XFxuXFxuLnRva2VuLml0YWxpYyB7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxufVxcblxcbi50b2tlbi5lbnRpdHkge1xcbiAgY3Vyc29yOiBoZWxwO1xcbn1cXG5cXG4udG9rZW4uaW5zZXJ0ZWQge1xcbiAgY29sb3I6IGdyZWVuO1xcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/prismjs/themes/prism-tomorrow.css\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./src/assets/scss/main.scss":
/*!********************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-3-1!./node_modules/postcss-loader/src??ref--8-oneOf-3-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-3-3!./src/assets/scss/main.scss ***!
  \********************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var escape = __webpack_require__(/*! ../../../node_modules/css-loader/lib/url/escape.js */ \"./node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n  File Name: main.scss\\n  Description: Main scss file. Imports other scss partials from 'vuesax' folder\\n  ----------------------------------------------------------------------------------------\\n  Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n  Author: Pixinvent\\n  Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _variables.scss\\n    Description: partial- SCSS varibales\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*========================================================\\n        SPACING\\n=========================================================*/\\n\\n/*========================================================\\n        COLORS\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        DARK THEME\\n=========================================================*/\\n\\n/*=========================================================================================\\n    File Name: _layout.scss\\n    Description: partial- main layout styles container - imports layout styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _layoutCommon.scss\\n    Description: Common layout styles. This style will apply to all layouts\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\nhtml {\\n  font-size: 14px;\\n  height: 100%;\\n  width: 100%;\\n  line-height: 1.5;\\n  letter-spacing: 0.01rem;\\n}\\n\\nbody {\\n  font-family: \\\"Roboto\\\", Helvetica, Arial, sans-serif;\\n  background: #f8f8f8;\\n  font-weight: 400;\\n  overflow-x: hidden;\\n  max-width: 100%;\\n  height: 100%;\\n  transition: background-color .3s ease;\\n}\\n\\n#app {\\n  min-height: 100%;\\n}\\n\\n.sidebar-swipe-area {\\n  position: fixed;\\n  background: transparent;\\n  height: 100vh;\\n  width: 30px;\\n  z-index: 1;\\n  top: 0;\\n  left: 0;\\n}\\n\\n.feather.feather-menu {\\n  z-index: 9;\\n}\\n\\n.layout--main {\\n  height: 100%;\\n  min-height: 100%;\\n}\\n\\ntextarea.vs-textarea {\\n  font-family: \\\"Roboto\\\", Helvetica, Arial, sans-serif;\\n  line-height: 1.6;\\n}\\n\\ntextarea.vs-textarea:disabled {\\n  color: #626262;\\n  opacity: 0.5;\\n}\\n\\n#content-overlay {\\n  position: fixed;\\n  opacity: 0;\\n  width: 100%;\\n  height: 100%;\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  bottom: 0;\\n  background-color: rgba(0, 0, 0, 0.5);\\n  cursor: pointer;\\n  transition: opacity .7s;\\n  z-index: -1;\\n}\\n\\n.show-overlay #content-overlay {\\n  z-index: 41000;\\n  opacity: 1;\\n}\\n\\n.the-footer {\\n  display: flex;\\n  align-items: center;\\n}\\n\\nli.vs-navbar--item a {\\n  color: inherit;\\n}\\n\\n.vs-content-sidebar.items-no-padding .vs-sidebar--items {\\n  padding: 0;\\n}\\n\\ndiv[id$=\\\"demo\\\"] .vx-card:not(:last-of-type) {\\n  margin-bottom: 2.2rem;\\n}\\n\\n.scroll-area {\\n  position: relative;\\n  margin: auto;\\n  width: 100%;\\n  height: 100%;\\n}\\n\\n.app-search-container {\\n  background-color: #fff;\\n}\\n\\n.demo-alignment {\\n  display: flex;\\n  flex-wrap: wrap;\\n  justify-content: flex-start;\\n  align-items: center;\\n}\\n\\n.demo-alignment > * {\\n  margin-right: 1.5rem;\\n  margin-top: 1.5rem;\\n}\\n\\n.op-block {\\n  box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.1);\\n  padding: 10px;\\n  border-radius: 10px;\\n}\\n\\n.app-page .router-view {\\n  padding-bottom: 0;\\n}\\n\\n.app-page.navbar-floating .app-fixed-height {\\n  height: calc(100vh - 12.1rem);\\n}\\n\\n.app-page.navbar-floating.footer-hidden .app-fixed-height {\\n  height: calc(100vh - 9.6rem);\\n}\\n\\n.app-page.navbar-floating.footer-sticky .app-fixed-height {\\n  height: calc(100vh - 13.1rem);\\n}\\n\\n.app-page.navbar-sticky .app-fixed-height {\\n  height: calc(100vh - 11.1rem);\\n}\\n\\n.app-page.navbar-sticky.footer-hidden .app-fixed-height {\\n  height: calc(100vh - 8.6rem);\\n}\\n\\n.app-page.navbar-sticky.footer-sticky .app-fixed-height {\\n  height: calc(100vh - 12.1rem);\\n}\\n\\n.app-page.navbar-static .app-fixed-height {\\n  height: calc(100vh - 11.1rem);\\n}\\n\\n.app-page.navbar-static.footer-hidden .app-fixed-height {\\n  height: calc(100vh - 7.6rem);\\n}\\n\\n.app-page.navbar-hidden .app-fixed-height {\\n  height: calc(100vh - 6.1rem);\\n}\\n\\n.app-page.navbar-hidden.footer-hidden .app-fixed-height {\\n  height: calc(100vh - 4.1rem);\\n}\\n\\n.app-page.navbar-hidden.footer-sticky .app-fixed-height {\\n  height: calc(100vh - 8.1rem);\\n}\\n\\n.app-fixed-height {\\n  height: calc(100vh - 14.1rem);\\n}\\n\\n.vs-sidebar .vs-sidebar--items {\\n  overflow: hidden;\\n  height: 100%;\\n}\\n\\n.vs-alert code.language-markup {\\n  background: transparent !important;\\n  color: #636363 !important;\\n}\\n\\n@media (max-width: 576px) {\\n  .router-view {\\n    padding: 1.2rem !important;\\n  }\\n\\n  .footer-sticky .router-view {\\n    padding-bottom: 5rem !important;\\n  }\\n}\\n\\n/*=========================================================================================\\n    File Name: _layoutModern.scss\\n    Description: Default layout styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n.vs-navbar.vx-navbar {\\n  padding: .8rem 1rem;\\n  width: calc(100% - 260px - 4.4rem);\\n  position: fixed;\\n  border-radius: .5rem;\\n  transition: all .5s;\\n  z-index: 10000;\\n}\\n\\n.vs-navbar.vx-navbar.navbar-reduced {\\n  width: calc(100% - 80px - 4.4rem);\\n}\\n\\n.vs-navbar.vx-navbar.navbar-full {\\n  width: calc(100% - 4.4rem);\\n}\\n\\n#content-area {\\n  margin-left: 260px;\\n  height: 100%;\\n  transition: margin-left 0.5s;\\n}\\n\\n#content-area .content-wrapper {\\n  min-height: calc(100vh - 3.5rem);\\n}\\n\\n#content-area.content-area-reduced {\\n  margin-left: 80px;\\n}\\n\\n#content-area.content-area-full {\\n  margin-left: 0px;\\n}\\n\\n#content-area .vx-navbar__search-input input {\\n  border: none !important;\\n}\\n\\n#content-area .vx-navbar__search-input input:focus {\\n  box-shadow: none;\\n}\\n\\n.router-view {\\n  position: relative;\\n  padding: 2.2rem;\\n}\\n\\n.router-view .router-content {\\n  margin-top: 5.5rem;\\n}\\n\\n.router-view .content-area__heading h2 {\\n  color: #636363;\\n}\\n\\n/*=========================================================================================\\n    File Name: _theNavbar.scss\\n    Description: The navbar styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _variables.scss\\n    Description: partial- SCSS varibales\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*========================================================\\n        SPACING\\n=========================================================*/\\n\\n/*========================================================\\n        COLORS\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        DARK THEME\\n=========================================================*/\\n\\n.vx-navbar-wrapper {\\n  background: linear-gradient(to bottom, rgba(248, 248, 248, 0.95) 44%, rgba(248, 248, 248, 0.46) 73%, rgba(255, 255, 255, 0) 100%);\\n  padding: 2.2rem;\\n  padding-top: 1.3rem;\\n  background-repeat-x: repeat;\\n  z-index: 41000;\\n  width: calc(100% - 260px);\\n  height: 103px;\\n  background-repeat-y: no-repeat;\\n  position: fixed;\\n  top: 0;\\n}\\n\\n.vx-navbar-wrapper .vx-navbar .vs-con-items {\\n  width: 100%;\\n}\\n\\n.vx-navbar-wrapper .vx-navbar .vs-con-items .search-full-container {\\n  background: #fff;\\n}\\n\\n.vx-navbar-wrapper .vx-navbar .vs-con-items .vx-auto-suggest {\\n  color: #626262;\\n}\\n\\n.content-area-reduced .vx-navbar-wrapper {\\n  width: calc(100% - 80px);\\n}\\n\\n.content-area-reduced .vs-navbar.vx-navbar {\\n  width: calc(100% - 80px - 4.4rem);\\n}\\n\\n.show-overlay .vx-navbar-wrapper {\\n  background: linear-gradient(to bottom, rgba(44, 48, 60, 0.9) 44%, rgba(44, 48, 60, 0.43) 73%, rgba(44, 48, 60, 0) 100%);\\n}\\n\\n.navbar-sticky .vx-navbar-wrapper {\\n  padding: 0;\\n  background: none;\\n}\\n\\n.navbar-sticky .vx-navbar-wrapper .vx-navbar {\\n  width: calc(100% - 260px);\\n  border-radius: 0;\\n  padding: .8rem 2.2rem;\\n}\\n\\n.navbar-sticky .vx-navbar-wrapper .vx-navbar .vx-auto-suggest .auto-suggest-suggestions-list {\\n  width: calc(100% - 2rem) !important;\\n  margin-left: 1rem;\\n}\\n\\n.navbar-sticky .content-area-reduced .vx-navbar-wrapper .vx-navbar {\\n  width: calc(100% - 80px);\\n}\\n\\n.navbar-sticky .router-view .router-content {\\n  margin-top: 4.5rem;\\n}\\n\\n.navbar-static .vx-navbar-wrapper {\\n  padding: 0;\\n  background: none;\\n  position: relative;\\n  height: auto;\\n  width: 100%;\\n}\\n\\n.navbar-static .vx-navbar-wrapper .vx-navbar {\\n  width: 100%;\\n  border-radius: 0;\\n  padding: .8rem 2.2rem;\\n  background: transparent !important;\\n  box-shadow: none;\\n  position: relative;\\n}\\n\\n.navbar-static .vx-navbar-wrapper .vx-navbar .search-full-container {\\n  border-radius: 0 !important;\\n}\\n\\n.navbar-static .vx-navbar-wrapper .vx-navbar .vx-auto-suggest .auto-suggest-suggestions-list {\\n  width: calc(100% - 2rem) !important;\\n  margin-left: 1rem;\\n}\\n\\n.navbar-static .router-view {\\n  padding-top: 1rem;\\n}\\n\\n.navbar-static .router-view .router-content {\\n  margin-top: 0;\\n}\\n\\n.navbar-hidden .vx-navbar-wrapper {\\n  display: none;\\n}\\n\\n.search-full-container {\\n  z-index: 50000;\\n}\\n\\n.search-full-container .vx-auto-suggest > div {\\n  height: 100%;\\n}\\n\\n.search-full-container .vx-auto-suggest input[type=\\\"text\\\"],\\n  .search-full-container .vx-auto-suggest .input-span-placeholder {\\n  padding: 1.25rem 3rem;\\n}\\n\\n.search-full-container .vx-auto-suggest .vs-input--icon.feather {\\n  top: 34%;\\n  left: 0.8rem;\\n}\\n\\n.search-full-container > div.feather-icon {\\n  position: absolute !important;\\n}\\n\\n.bookmark-dropdown {\\n  z-index: 41001;\\n}\\n\\n.navbar-custom .vs-navbar--btn-responsive {\\n  display: none !important;\\n}\\n\\n.navbar-custom .vs-spacer {\\n  display: block !important;\\n}\\n\\n.navbar-custom .vs-con-items {\\n  display: flex !important;\\n  width: 100%;\\n}\\n\\n@media (max-width: 1200px) {\\n  .vx-navbar-wrapper {\\n    width: calc(100% - 1.2rem);\\n  }\\n\\n  .navbar-sticky .vx-navbar-wrapper .vx-navbar {\\n    width: 100%;\\n    padding: .8rem 2.2rem;\\n  }\\n}\\n\\n@media (max-width: 576px) {\\n  .vx-navbar-wrapper {\\n    padding: 1.2rem;\\n  }\\n\\n  .vx-navbar-wrapper .vx-navbar.navbar-full {\\n    width: calc(100% - 2.4rem);\\n  }\\n\\n  .navbar-sticky .vx-navbar-wrapper {\\n    padding: 0;\\n  }\\n\\n  .navbar-sticky .vx-navbar-wrapper .vx-navbar {\\n    width: 100%;\\n    padding: .8rem 1.5rem;\\n  }\\n\\n  .navbar-static .vx-navbar-wrapper .vx-navbar {\\n    width: 100%;\\n    padding: .8rem 1.5rem;\\n  }\\n\\n  .navbar-static .router-view .router-content {\\n    margin-top: 0;\\n  }\\n}\\n\\n.starred-page:hover,\\n.starred-page--more:hover {\\n  color: rgba(var(--vs-primary), 1);\\n}\\n\\n.i18n-dropdown .vs-dropdown--item-link {\\n  display: flex;\\n  align-items: center;\\n}\\n\\n@media screen and (max-width: 364px) {\\n  .i18n-dropdown {\\n    width: 95vw;\\n    left: 90vw !important;\\n  }\\n\\n  .i18n-dropdown .vs-dropdown--menu--after {\\n    display: none;\\n  }\\n}\\n\\n.cart-dropdown {\\n  width: 365px;\\n}\\n\\n.cart-dropdown .cart-dropdown-item-img {\\n  max-width: 100%;\\n  max-height: 100%;\\n  width: auto;\\n  transition: .35s;\\n}\\n\\n.notification-dropdown,\\n.cart-dropdown {\\n  width: 365px;\\n}\\n\\n@media screen and (max-width: 500px) {\\n  .notification-dropdown,\\n    .cart-dropdown {\\n    width: 95vw;\\n    left: 97.5vw !important;\\n  }\\n\\n  .notification-dropdown .vs-dropdown--menu--after,\\n      .cart-dropdown .vs-dropdown--menu--after {\\n    display: none;\\n  }\\n}\\n\\n.notification-dropdown .notification:hover,\\n  .cart-dropdown .notification:hover {\\n  background-color: #f7f7f7;\\n}\\n\\n.notification-dropdown .checkout-footer,\\n  .notification-dropdown .notification-footer,\\n  .cart-dropdown .checkout-footer,\\n  .cart-dropdown .notification-footer {\\n  background-color: #f8f8f8;\\n}\\n\\n.scroll-area--nofications-dropdown,\\n.scroll-area--cart-items-dropdowm {\\n  position: relative;\\n  margin: auto;\\n  width: 100%;\\n  max-height: 25rem;\\n}\\n\\n@media screen and (max-height: 334px) {\\n  .vx-navbar-dropdown {\\n    top: calc(100vh - 82.5vh) !important;\\n  }\\n\\n  .vx-navbar-dropdown .vs-dropdown--menu--after {\\n    display: none;\\n  }\\n}\\n\\n/*=========================================================================================\\n    File Name: _footer.scss\\n    Description: Footer styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n.footer-sticky .the-footer {\\n  position: fixed;\\n  background: #fff;\\n  bottom: 0;\\n  width: calc(100% - 260px);\\n  box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.05);\\n  z-index: 40000;\\n}\\n\\n.footer-sticky .content-area-reduced .the-footer {\\n  width: calc(100% - 80px);\\n}\\n\\n.footer-sticky .content-area-full .the-footer {\\n  width: 100%;\\n}\\n\\n.footer-sticky .router-view {\\n  padding-bottom: 5rem;\\n}\\n\\n.footer-hidden .the-footer {\\n  display: none;\\n}\\n\\n.the-footer {\\n  padding: 1rem 2.2rem;\\n}\\n\\n/*=========================================================================================\\n    File Name: _typography.scss\\n    Description: partial- typography styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin Italic\\\"), local(\\\"../fonts/Roboto-ThinItalic\\\"), url(\" + escape(__webpack_require__(/*! ../fonts/Roboto-ThinItalic.ttf */ \"./src/assets/fonts/Roboto-ThinItalic.ttf\")) + \") format(\\\"ttf\\\");\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin Italic\\\"), local(\\\"../fonts/Roboto-ThinItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzQdL-vwnYh2eg.woff2) format(\\\"woff2\\\");\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin Italic\\\"), local(\\\"../fonts/Roboto-ThinItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzwdL-vwnYh2eg.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin Italic\\\"), local(\\\"../fonts/Roboto-ThinItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzMdL-vwnYh2eg.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin Italic\\\"), local(\\\"../fonts/Roboto-ThinItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz8dL-vwnYh2eg.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin Italic\\\"), local(\\\"../fonts/Roboto-ThinItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz4dL-vwnYh2eg.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin Italic\\\"), local(\\\"../fonts/Roboto-ThinItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzAdL-vwnYg.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light Italic\\\"), local(\\\"../fonts/Roboto-LightItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc3CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light Italic\\\"), local(\\\"../fonts/Roboto-LightItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc-CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light Italic\\\"), local(\\\"../fonts/Roboto-LightItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc2CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light Italic\\\"), local(\\\"../fonts/Roboto-LightItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc5CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light Italic\\\"), local(\\\"../fonts/Roboto-LightItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc1CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light Italic\\\"), local(\\\"../fonts/Roboto-LightItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc0CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light Italic\\\"), local(\\\"../fonts/Roboto-LightItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc6CsTYl4BO.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto Italic\\\"), local(\\\"../fonts/Roboto-Italic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xFIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto Italic\\\"), local(\\\"../fonts/Roboto-Italic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xMIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto Italic\\\"), local(\\\"../fonts/Roboto-Italic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xEIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto Italic\\\"), local(\\\"../fonts/Roboto-Italic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xLIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto Italic\\\"), local(\\\"../fonts/Roboto-Italic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xHIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto Italic\\\"), local(\\\"../fonts/Roboto-Italic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xGIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto Italic\\\"), local(\\\"../fonts/Roboto-Italic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xIIzIXKMny.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium Italic\\\"), local(\\\"../fonts/Roboto-MediumItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc3CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium Italic\\\"), local(\\\"../fonts/Roboto-MediumItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc-CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium Italic\\\"), local(\\\"../fonts/Roboto-MediumItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc2CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium Italic\\\"), local(\\\"../fonts/Roboto-MediumItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc5CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium Italic\\\"), local(\\\"../fonts/Roboto-MediumItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc1CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium Italic\\\"), local(\\\"../fonts/Roboto-MediumItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc0CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium Italic\\\"), local(\\\"../fonts/Roboto-MediumItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc6CsTYl4BO.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold Italic\\\"), local(\\\"../fonts/Roboto-BoldItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic3CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold Italic\\\"), local(\\\"../fonts/Roboto-BoldItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic-CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold Italic\\\"), local(\\\"../fonts/Roboto-BoldItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic2CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold Italic\\\"), local(\\\"../fonts/Roboto-BoldItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic5CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold Italic\\\"), local(\\\"../fonts/Roboto-BoldItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic1CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold Italic\\\"), local(\\\"../fonts/Roboto-BoldItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic0CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold Italic\\\"), local(\\\"../fonts/Roboto-BoldItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic6CsTYl4BO.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black Italic\\\"), local(\\\"../fonts/Roboto-BlackItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc3CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black Italic\\\"), local(\\\"../fonts/Roboto-BlackItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc-CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black Italic\\\"), local(\\\"../fonts/Roboto-BlackItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc2CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black Italic\\\"), local(\\\"../fonts/Roboto-BlackItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc5CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black Italic\\\"), local(\\\"../fonts/Roboto-BlackItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc1CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black Italic\\\"), local(\\\"../fonts/Roboto-BlackItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc0CsTYl4BOQ3o.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: italic;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black Italic\\\"), local(\\\"../fonts/Roboto-BlackItalic\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc6CsTYl4BO.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin\\\"), local(\\\"../fonts/Roboto-Thin\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxFIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin\\\"), local(\\\"../fonts/Roboto-Thin\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxMIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin\\\"), local(\\\"../fonts/Roboto-Thin\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxEIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin\\\"), local(\\\"../fonts/Roboto-Thin\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxLIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin\\\"), local(\\\"../fonts/Roboto-Thin\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxHIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin\\\"), local(\\\"../fonts/Roboto-Thin\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxGIzIXKMnyrYk.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 100;\\n\\n  src: local(\\\"Roboto Thin\\\"), local(\\\"../fonts/Roboto-Thin\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxIIzIXKMny.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light\\\"), local(\\\"../fonts/Roboto-Light\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light\\\"), local(\\\"../fonts/Roboto-Light\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light\\\"), local(\\\"../fonts/Roboto-Light\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light\\\"), local(\\\"../fonts/Roboto-Light\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light\\\"), local(\\\"../fonts/Roboto-Light\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light\\\"), local(\\\"../fonts/Roboto-Light\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 300;\\n\\n  src: local(\\\"Roboto Light\\\"), local(\\\"../fonts/Roboto-Light\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto\\\"), local(\\\"../fonts/Roboto-Regular\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto\\\"), local(\\\"../fonts/Roboto-Regular\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto\\\"), local(\\\"../fonts/Roboto-Regular\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto\\\"), local(\\\"../fonts/Roboto-Regular\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto\\\"), local(\\\"../fonts/Roboto-Regular\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto\\\"), local(\\\"../fonts/Roboto-Regular\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 400;\\n\\n  src: local(\\\"Roboto\\\"), local(\\\"../fonts/Roboto-Regular\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium\\\"), local(\\\"../fonts/Roboto-Medium\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium\\\"), local(\\\"../fonts/Roboto-Medium\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium\\\"), local(\\\"../fonts/Roboto-Medium\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium\\\"), local(\\\"../fonts/Roboto-Medium\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium\\\"), local(\\\"../fonts/Roboto-Medium\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium\\\"), local(\\\"../fonts/Roboto-Medium\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 500;\\n\\n  src: local(\\\"Roboto Medium\\\"), local(\\\"../fonts/Roboto-Medium\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold\\\"), local(\\\"../fonts/Roboto-Bold\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold\\\"), local(\\\"../fonts/Roboto-Bold\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold\\\"), local(\\\"../fonts/Roboto-Bold\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold\\\"), local(\\\"../fonts/Roboto-Bold\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold\\\"), local(\\\"../fonts/Roboto-Bold\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold\\\"), local(\\\"../fonts/Roboto-Bold\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 700;\\n\\n  src: local(\\\"Roboto Bold\\\"), local(\\\"../fonts/Roboto-Bold\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* cyrillic-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black\\\"), local(\\\"../fonts/Roboto-Black\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCRc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\\n}\\n\\n/* cyrillic */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black\\\"), local(\\\"../fonts/Roboto-Black\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfABc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\\n}\\n\\n/* greek-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black\\\"), local(\\\"../fonts/Roboto-Black\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCBc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+1F00-1FFF;\\n}\\n\\n/* greek */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black\\\"), local(\\\"../fonts/Roboto-Black\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBxc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0370-03FF;\\n}\\n\\n/* vietnamese */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black\\\"), local(\\\"../fonts/Roboto-Black\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCxc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\\n}\\n\\n/* latin-ext */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black\\\"), local(\\\"../fonts/Roboto-Black\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfChc4AMP6lbBP.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\\n}\\n\\n/* latin */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 900;\\n\\n  src: local(\\\"Roboto Black\\\"), local(\\\"../fonts/Roboto-Black\\\"), url(https://../fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBBc4AMP6lQ.woff2) format(\\\"woff2\\\");\\n\\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\\n}\\n\\n/* sampled usage */\\n\\n@font-face {\\n  font-family: 'Roboto';\\n\\n  font-style: normal;\\n\\n  font-weight: 900;\\n\\n  src: url(https://../fonts.gstatic.com/stats/Roboto/normal/900);\\n\\n  unicode-range: U+20;\\n}\\n\\nbody {\\n  color: #626262;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n  color: #2c2c2c;\\n}\\n\\nh1, h2, h3, h4, h5, h6,\\n.h1, .h2, .h3, .h4, .h5, .h6 {\\n  font-family: inherit;\\n  font-weight: 500;\\n  line-height: 1.2;\\n  color: #2c2c2c;\\n}\\n\\nh1, .h1 {\\n  font-size: 28px;\\n}\\n\\nh2, .h2 {\\n  font-size: 24.36px;\\n}\\n\\nh3, .h3 {\\n  font-size: 21.14px;\\n}\\n\\nh4, .h4 {\\n  font-size: 18.48px;\\n}\\n\\nh5, .h5 {\\n  font-size: 15.96px;\\n}\\n\\nh6, .h6 {\\n  font-size: 14px;\\n}\\n\\n.vs-tooltip h4 {\\n  color: #fff;\\n}\\n\\na:active,\\na:visited,\\na:hover,\\na {\\n  color: rgba(var(--vs-primary), 1);\\n}\\n\\nu {\\n  text-decoration: underline;\\n}\\n\\n/*=========================================================================================\\n    File Name: _misc.scss\\n    Description: partial- misc styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\ncode {\\n  font-family: \\\"Roboto\\\", Helvetica, Arial, sans-serif;\\n  background: #eee;\\n  padding: 0.1rem .3rem;\\n  border-radius: 3px;\\n}\\n\\nul, ol {\\n  list-style-type: none;\\n  margin: 0;\\n  padding: 0;\\n}\\n\\n.bg-img {\\n  background-image: url(\" + escape(__webpack_require__(/*! ../images/pages/vuesax-login-bg.jpg */ \"./src/assets/images/pages/vuesax-login-bg.jpg\")) + \");\\n  background-position: center;\\n  background-repeat: no-repeat;\\n  background-size: cover;\\n}\\n\\n.full-page-bg-color {\\n  background-color: #eff2f7;\\n}\\n\\n.count-down {\\n  text-align: center;\\n}\\n\\n.single-counter {\\n  display: inline-block;\\n  position: relative;\\n  width: 105px;\\n  padding: 18px 10px 10px;\\n}\\n\\n.single-counter span {\\n  display: block;\\n  text-align: center;\\n}\\n\\n.single-counter .timer {\\n  font-size: 3rem;\\n}\\n\\n.activity-timeline {\\n  margin-left: 1.5rem;\\n  padding-left: 40px;\\n  border-left: 2px solid #E5E8EB;\\n}\\n\\n.activity-timeline li {\\n  position: relative;\\n  margin-bottom: 20px;\\n}\\n\\n.activity-timeline li .timeline-icon {\\n  position: absolute;\\n  top: 0;\\n  left: -4.3rem;\\n  border-radius: 50%;\\n  padding: .75rem;\\n  padding-bottom: 0.4rem;\\n}\\n\\n.activity-timeline li .activity-desc {\\n  font-size: .9rem;\\n}\\n\\n.activity-timeline li .activity-e-time {\\n  font-size: .8rem;\\n}\\n\\n.chat-card-log {\\n  height: 240px;\\n}\\n\\n.vjs-poster {\\n  background-size: cover !important;\\n  width: 100% !important;\\n}\\n\\n.spinner {\\n  -webkit-animation: spin 1.5s linear infinite;\\n          animation: spin 1.5s linear infinite;\\n}\\n\\n@-webkit-keyframes spin {\\n  from {\\n    transform: rotate(0deg);\\n  }\\n\\n  to {\\n    transform: rotate(360deg);\\n  }\\n}\\n\\n@keyframes spin {\\n  from {\\n    transform: rotate(0deg);\\n  }\\n\\n  to {\\n    transform: rotate(360deg);\\n  }\\n}\\n\\n/*=========================================================================================\\n    File Name: _extraComponents.scss\\n    Description: partial - imports extra components styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _formWizard.scss\\n    Description: Styles for form wizard externsion.\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n.vue-form-wizard.md .wizard-navigation .wizard-progress-with-circle {\\n  top: 33px !important;\\n}\\n\\n.vue-form-wizard.md .wizard-navigation .wizard-nav .wizard-icon-circle {\\n  border: 3px solid #cccccc;\\n  width: 55px;\\n  height: 55px;\\n}\\n\\n.vue-form-wizard.md .wizard-navigation .wizard-nav .wizard-icon-circle .wizard-icon {\\n  font-size: 1.5rem;\\n}\\n\\n.vue-form-wizard.md .wizard-navigation .wizard-nav .stepTitle {\\n  color: #626262;\\n}\\n\\n/*=========================================================================================\\n    File Name: _vueSelect.scss\\n    Description: vue-select component style.\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _variables.scss\\n    Description: partial- SCSS varibales\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*========================================================\\n        SPACING\\n=========================================================*/\\n\\n/*========================================================\\n        COLORS\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        DARK THEME\\n=========================================================*/\\n\\n.v-select .vs__dropdown-toggle .vs__search {\\n  color: #626262;\\n}\\n\\n.v-select .vs__dropdown-toggle .vs__deselect svg {\\n  stroke: #626262;\\n  opacity: 0.5;\\n}\\n\\n.v-select .vs__dropdown-menu .vs__dropdown-option--highlight {\\n  color: #fff !important;\\n}\\n\\n.v-select .vs__dropdown-menu .vs__dropdown-option {\\n  color: #626262;\\n}\\n\\n.v-select .vs__selected {\\n  color: #626262;\\n}\\n\\n.theme-dark .v-select .vs__dropdown-toggle {\\n  background: #262c49;\\n}\\n\\n.theme-dark .v-select .vs__dropdown-toggle .vs__clear svg {\\n  stroke: #b8c2cc;\\n}\\n\\n.theme-dark .v-select .vs__dropdown-toggle .vs__deselect svg {\\n  stroke: #b8c2cc;\\n  opacity: 0.7;\\n}\\n\\n.theme-dark .v-select:not(.vs--single) .vs__selected {\\n  background: #10163a;\\n  border: none;\\n}\\n\\n.theme-dark .v-select .vs__selected {\\n  color: #fff;\\n}\\n\\n.theme-dark .v-select .vs__open-indicator {\\n  fill: #b8c2cc;\\n}\\n\\n.theme-dark .v-select .vs__dropdown-menu {\\n  background: #262c49;\\n}\\n\\n.theme-dark .v-select .vs__dropdown-menu .vs__dropdown-option {\\n  color: #c2c6dc;\\n}\\n\\n.v-select {\\n  position: relative;\\n  font-family: inherit;\\n}\\n\\n.v-select,\\n.v-select * {\\n  box-sizing: border-box;\\n}\\n\\n/* KeyFrames */\\n\\n@-webkit-keyframes vSelectSpinner {\\n  0% {\\n    transform: rotate(0deg);\\n  }\\n\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n\\n@keyframes vSelectSpinner {\\n  0% {\\n    transform: rotate(0deg);\\n  }\\n\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n\\n/* Dropdown Default Transition */\\n\\n.vs__fade-enter-active,\\n.vs__fade-leave-active {\\n  transition: opacity 0.15s cubic-bezier(1, 0.5, 0.8, 1);\\n}\\n\\n.vs__fade-enter,\\n.vs__fade-leave-to {\\n  opacity: 0;\\n}\\n\\n/** Component States */\\n\\n/*\\n * Disabled\\n *\\n * When the component is disabled, all interaction\\n * should be prevented. Here we modify the bg color,\\n * and change the cursor displayed on the interactive\\n * components.\\n */\\n\\n.vs--disabled .vs__dropdown-toggle,\\n.vs--disabled .vs__clear,\\n.vs--disabled .vs__search,\\n.vs--disabled .vs__selected,\\n.vs--disabled .vs__open-indicator {\\n  cursor: not-allowed;\\n  background-color: #f8f8f8;\\n}\\n\\n/*\\n *  RTL - Right to Left Support\\n *\\n *  Because we're using a flexbox layout, the `dir=\\\"rtl\\\"`\\n *  HTML attribute does most of the work for us by\\n *  rearranging the child elements visually.\\n */\\n\\n.v-select[dir=\\\"rtl\\\"] .vs__actions {\\n  padding: 0 3px 0 6px;\\n}\\n\\n.v-select[dir=\\\"rtl\\\"] .vs__clear {\\n  margin-left: 6px;\\n  margin-right: 0;\\n}\\n\\n.v-select[dir=\\\"rtl\\\"] .vs__deselect {\\n  margin-left: 0;\\n  margin-right: 2px;\\n}\\n\\n.v-select[dir=\\\"rtl\\\"] .vs__dropdown-menu {\\n  text-align: right;\\n}\\n\\n/**\\n    Dropdown Toggle\\n\\n    The dropdown toggle is the primary wrapper of the component. It\\n    has two direct descendants: .vs__selected-options, and .vs__actions.\\n\\n    .vs__selected-options holds the .vs__selected's as well as the\\n    main search input.\\n\\n    .vs__actions holds the clear button and dropdown toggle.\\n */\\n\\n.vs__dropdown-toggle {\\n  -webkit-appearance: none;\\n     -moz-appearance: none;\\n          appearance: none;\\n  display: flex;\\n  padding: 0 0 4px 0;\\n  background: none;\\n  border: 1px solid rgba(60, 60, 60, 0.26);\\n  border-radius: 4px;\\n  white-space: normal;\\n}\\n\\n.vs__selected-options {\\n  display: flex;\\n  flex-basis: 100%;\\n  flex-grow: 1;\\n  flex-wrap: wrap;\\n  padding: 0 2px;\\n  position: relative;\\n}\\n\\n.vs__actions {\\n  display: flex;\\n  align-items: center;\\n  padding: 4px 6px 0 3px;\\n}\\n\\n/* Dropdown Toggle States */\\n\\n.vs--searchable .vs__dropdown-toggle {\\n  cursor: text;\\n}\\n\\n.vs--unsearchable .vs__dropdown-toggle {\\n  cursor: pointer;\\n}\\n\\n.vs--open .vs__dropdown-toggle {\\n  border-bottom-color: transparent;\\n  border-bottom-left-radius: 0;\\n  border-bottom-right-radius: 0;\\n}\\n\\n.vs__open-indicator {\\n  fill: rgba(60, 60, 60, 0.5);\\n  transform: scale(1);\\n  transition: transform 150ms cubic-bezier(1, -0.115, 0.975, 0.855);\\n  transition-timing-function: cubic-bezier(1, -0.115, 0.975, 0.855);\\n}\\n\\n.vs--open .vs__open-indicator {\\n  transform: rotate(180deg) scale(1);\\n}\\n\\n.vs--loading .vs__open-indicator {\\n  opacity: 0;\\n}\\n\\n/* Clear Button */\\n\\n.vs__clear {\\n  fill: rgba(60, 60, 60, 0.5);\\n  padding: 0;\\n  border: 0;\\n  background-color: transparent;\\n  cursor: pointer;\\n  margin-right: 8px;\\n}\\n\\n/* Dropdown Menu */\\n\\n.vs__dropdown-menu {\\n  display: block;\\n  position: absolute;\\n  top: calc(100% - 1px);\\n  left: 0;\\n  z-index: 1000;\\n  padding: 5px 0;\\n  margin: 0;\\n  width: 100%;\\n  max-height: 350px;\\n  min-width: 160px;\\n  overflow-y: auto;\\n  box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.15);\\n  border: 1px solid rgba(60, 60, 60, 0.26);\\n  border-top-style: none;\\n  border-radius: 0 0 4px 4px;\\n  text-align: left;\\n  list-style: none;\\n  background: #fff;\\n}\\n\\n.vs__no-options {\\n  text-align: center;\\n}\\n\\n/* List Items */\\n\\n.vs__dropdown-option {\\n  line-height: 1.42857143;\\n  /* Normalize line height */\\n  display: block;\\n  padding: 3px 20px;\\n  clear: both;\\n  color: #333;\\n  /* Overrides most CSS frameworks */\\n  white-space: nowrap;\\n}\\n\\n.vs__dropdown-option:hover {\\n  cursor: pointer;\\n}\\n\\n.vs__dropdown-option--highlight {\\n  background: #00A593;\\n  color: #fff;\\n}\\n\\n/* Selected Tags */\\n\\n.vs__selected {\\n  display: flex;\\n  align-items: center;\\n  background-color: #f0f0f0;\\n  border: 1px solid rgba(60, 60, 60, 0.26);\\n  border-radius: 4px;\\n  color: #333;\\n  line-height: 1.8;\\n  margin: 4px 2px 0px 2px;\\n  padding: 0 0.25em;\\n}\\n\\n.vs__deselect {\\n  display: inline-flex;\\n  -webkit-appearance: none;\\n     -moz-appearance: none;\\n          appearance: none;\\n  margin-left: 4px;\\n  padding: 0;\\n  border: 0;\\n  cursor: pointer;\\n  background: none;\\n  fill: rgba(60, 60, 60, 0.5);\\n  text-shadow: 0 1px 0 #fff;\\n}\\n\\n/* States */\\n\\n.vs--single .vs__selected {\\n  background-color: transparent;\\n  border-color: transparent;\\n}\\n\\n.vs--single.vs--open .vs__selected {\\n  position: absolute;\\n  opacity: .4;\\n}\\n\\n.vs--single.vs--searching .vs__selected {\\n  display: none;\\n}\\n\\n/* Search Input */\\n\\n.vs__search::-webkit-search-decoration,\\n.vs__search::-webkit-search-cancel-button,\\n.vs__search::-webkit-search-results-button,\\n.vs__search::-webkit-search-results-decoration,\\n.vs__search::-ms-clear {\\n  display: none;\\n}\\n\\n.vs__search,\\n.vs__search:focus {\\n  -webkit-appearance: none;\\n     -moz-appearance: none;\\n          appearance: none;\\n  line-height: 1.8;\\n  font-size: 1em;\\n  border: 1px solid transparent;\\n  border-left: none;\\n  outline: none;\\n  margin: 4px 0 0 0;\\n  padding: 0 7px;\\n  background: none;\\n  box-shadow: none;\\n  width: 0;\\n  max-width: 100%;\\n  flex-grow: 1;\\n}\\n\\n.vs__search::-webkit-input-placeholder {\\n  color: inherit;\\n}\\n\\n.vs__search::-moz-placeholder {\\n  color: inherit;\\n}\\n\\n.vs__search:-ms-input-placeholder {\\n  color: inherit;\\n}\\n\\n.vs__search::-ms-input-placeholder {\\n  color: inherit;\\n}\\n\\n.vs__search::placeholder {\\n  color: inherit;\\n}\\n\\n/**\\n    States\\n */\\n\\n.vs--unsearchable .vs__search {\\n  opacity: 1;\\n}\\n\\n.vs--unsearchable .vs__search:hover {\\n  cursor: pointer;\\n}\\n\\n.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search {\\n  opacity: .2;\\n}\\n\\n/* Loading Spinner */\\n\\n.vs__spinner {\\n  align-self: center;\\n  opacity: 0;\\n  font-size: 5px;\\n  text-indent: -9999em;\\n  overflow: hidden;\\n  border-top: 0.9em solid rgba(100, 100, 100, 0.1);\\n  border-right: 0.9em solid rgba(100, 100, 100, 0.1);\\n  border-bottom: 0.9em solid rgba(100, 100, 100, 0.1);\\n  border-left: 0.9em solid rgba(60, 60, 60, 0.45);\\n  transform: translateZ(0);\\n  -webkit-animation: vSelectSpinner 1.1s infinite linear;\\n          animation: vSelectSpinner 1.1s infinite linear;\\n  transition: opacity .1s;\\n}\\n\\n.vs__spinner,\\n.vs__spinner:after {\\n  border-radius: 50%;\\n  width: 5em;\\n  height: 5em;\\n}\\n\\n/* Loading Spinner States */\\n\\n.vs--loading .vs__spinner {\\n  opacity: 1;\\n}\\n\\n/*=========================================================================================\\n    File Name: _charts.scss\\n    Description: Styles for charts.\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n.echarts {\\n  width: 100% !important;\\n}\\n\\n/*=========================================================================================\\n    File Name: _contextMenu.scss\\n    Description: Styles for context menu\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _variables.scss\\n    Description: partial- SCSS varibales\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*========================================================\\n        SPACING\\n=========================================================*/\\n\\n/*========================================================\\n        COLORS\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        DARK THEME\\n=========================================================*/\\n\\n.v-context {\\n  padding: 0 !important;\\n  border-radius: .5rem !important;\\n  overflow: hidden;\\n  box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.14) !important;\\n}\\n\\n.v-context li a {\\n  color: inherit !important;\\n}\\n\\n.v-context li a:focus, .v-context li a:hover {\\n  background: #eee !important;\\n}\\n\\n.theme-dark .v-context {\\n  background: #262c49 !important;\\n}\\n\\n.theme-dark .v-context li a {\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark .v-context li a:focus, .theme-dark .v-context li a:hover {\\n  background: #10163a !important;\\n}\\n\\n/*=========================================================================================\\n    File Name: _quillEditor.scss\\n    Description: Styles for quill editor externsion.\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _variables.scss\\n    Description: partial- SCSS varibales\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*========================================================\\n        SPACING\\n=========================================================*/\\n\\n/*========================================================\\n        COLORS\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        DARK THEME\\n=========================================================*/\\n\\n.quill-editor .ql-bubble .ql-tooltip {\\n  z-index: 51000;\\n}\\n\\n.theme-dark .quill-editor .ql-snow.ql-toolbar, .theme-dark .quill-editor .ql-snow.ql-container {\\n  border-color: #414561;\\n}\\n\\n/*=========================================================================================\\n    File Name: _datePicker.scss\\n    Description: Styles for datepicker component.\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _variables.scss\\n    Description: partial- SCSS varibales\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*========================================================\\n        SPACING\\n=========================================================*/\\n\\n/*========================================================\\n        COLORS\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        DARK THEME\\n=========================================================*/\\n\\n.vdp-datepicker input {\\n  padding: .7rem;\\n  font-size: 1rem;\\n  border-radius: 5px;\\n  border: 1px solid rgba(0, 0, 0, 0.2);\\n  color: #626262;\\n  width: 100%;\\n}\\n\\n.vdp-datepicker input[disabled] {\\n  opacity: .5;\\n}\\n\\n.vdp-datepicker .day.blank {\\n  background: transparent;\\n}\\n\\n.vdp-datepicker .cell:hover {\\n  border-color: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.vdp-datepicker .cell.day.highlighted {\\n  background: rgba(var(--vs-primary), 0.7);\\n  color: #fff;\\n}\\n\\n.vdp-datepicker .cell.day.highlighted:hover {\\n  background: rgba(var(--vs-primary), 1);\\n}\\n\\n.vdp-datepicker .cell.selected {\\n  color: #fff;\\n  background: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.vdp-datepicker .cell.selected:hover {\\n  background: rgba(var(--vs-primary), 1);\\n}\\n\\n/*=========================================================================================\\n    File Name: _datetimePicker.scss\\n    Description: Styles for datetime picker\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n    Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _variables.scss\\n    Description: partial- SCSS varibales\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*========================================================\\n        SPACING\\n=========================================================*/\\n\\n/*========================================================\\n        COLORS\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        DARK THEME\\n=========================================================*/\\n\\n.flatpickr-calendar {\\n  width: calc(307.875px + 13px * 2) !important;\\n  box-shadow: 0 15px 30px 0 rgba(0, 0, 0, 0.11), 0 5px 15px 0 rgba(0, 0, 0, 0.08) !important;\\n  border-radius: .5rem !important;\\n  overflow: hidden;\\n}\\n\\n.flatpickr-calendar.arrowTop:after, .flatpickr-calendar.arrowTop:before {\\n  display: none;\\n}\\n\\n.flatpickr-calendar.arrowBottom:after, .flatpickr-calendar.arrowBottom:before {\\n  display: none;\\n}\\n\\n.flatpickr-calendar .numInputWrapper {\\n  width: 5.5ch !important;\\n}\\n\\n.flatpickr-calendar .numInputWrapper .numInput.cur-year {\\n  font-weight: 600 !important;\\n}\\n\\n.flatpickr-calendar .numInputWrapper:hover {\\n  background: none;\\n}\\n\\n.flatpickr-calendar .numInputWrapper:hover .arrowUp,\\n      .flatpickr-calendar .numInputWrapper:hover .arrowDown {\\n  border: none;\\n}\\n\\n.flatpickr-calendar .flatpickr-months,\\n  .flatpickr-calendar .flatpickr-month {\\n  height: 44px !important;\\n}\\n\\n.flatpickr-calendar .flatpickr-months {\\n  padding: 0;\\n}\\n\\n.flatpickr-calendar .flatpickr-monthDropdown-months {\\n  border: 1px solid rgba(0, 0, 0, 0.3) !important;\\n  border-radius: .5rem !important;\\n  font-size: 1rem !important;\\n  font-weight: 500 !important;\\n  height: 27px;\\n  margin-left: 22px !important;\\n  margin-right: 3px !important;\\n}\\n\\n.flatpickr-calendar .flatpickr-monthDropdown-months:hover {\\n  background: transparent !important;\\n}\\n\\n.flatpickr-calendar .flatpickr-current-month {\\n  bottom: -11px;\\n  padding-top: 0;\\n}\\n\\n.flatpickr-calendar .flatpickr-current-month .numInputWrapper {\\n  vertical-align: middle;\\n}\\n\\n.flatpickr-calendar .flatpickr-prev-month,\\n  .flatpickr-calendar .flatpickr-next-month,\\n  .flatpickr-calendar .flatpickr-innerContainer {\\n  padding: 13px !important;\\n}\\n\\n.flatpickr-calendar .flatpickr-prev-month,\\n  .flatpickr-calendar .flatpickr-next-month {\\n  top: calc(13px - 3px) !important;\\n}\\n\\n.flatpickr-calendar .flatpickr-prev-month {\\n  left: 13px !important;\\n}\\n\\n.flatpickr-calendar .flatpickr-next-month {\\n  right: 13px !important;\\n}\\n\\n.flatpickr-calendar.inline {\\n  display: block !important;\\n}\\n\\n.flatpickr-calendar .flatpickr-day.selected, .flatpickr-calendar .flatpickr-day.startRange, .flatpickr-calendar .flatpickr-day.endRange, .flatpickr-calendar .flatpickr-day.selected.inRange, .flatpickr-calendar .flatpickr-day.startRange.inRange, .flatpickr-calendar .flatpickr-day.endRange.inRange, .flatpickr-calendar .flatpickr-day.selected:focus, .flatpickr-calendar .flatpickr-day.startRange:focus, .flatpickr-calendar .flatpickr-day.endRange:focus, .flatpickr-calendar .flatpickr-day.selected:hover, .flatpickr-calendar .flatpickr-day.startRange:hover, .flatpickr-calendar .flatpickr-day.endRange:hover, .flatpickr-calendar .flatpickr-day.selected.prevMonthDay, .flatpickr-calendar .flatpickr-day.startRange.prevMonthDay, .flatpickr-calendar .flatpickr-day.endRange.prevMonthDay, .flatpickr-calendar .flatpickr-day.selected.nextMonthDay, .flatpickr-calendar .flatpickr-day.startRange.nextMonthDay, .flatpickr-calendar .flatpickr-day.endRange.nextMonthDay {\\n  background: #00A593 !important;\\n  box-shadow: none;\\n  color: #fff;\\n  border-color: #00A593 !important;\\n}\\n\\n.flatpickr-input {\\n  padding: .7rem;\\n  font-size: 1rem;\\n  border-radius: 5px;\\n  border: 1px solid rgba(0, 0, 0, 0.2);\\n  color: #626262;\\n}\\n\\n.flatpickr-input.active {\\n  border: 1px solid #00A593;\\n}\\n\\n.flatpickr-months .flatpickr-prev-month:hover svg,\\n.flatpickr-months .flatpickr-next-month:hover svg {\\n  fill: #00A593 !important;\\n}\\n\\n.theme-dark .flatpickr-calendar {\\n  background: #10163a;\\n  border: 1px solid #414561;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-month,\\n  .theme-dark .flatpickr-calendar .flatpickr-weekday {\\n  color: #fff;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-prev-month svg,\\n  .theme-dark .flatpickr-calendar .flatpickr-next-month svg {\\n  fill: #fff;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-day {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-day.inRange, .theme-dark .flatpickr-calendar .flatpickr-day.prevMonthDay.inRange, .theme-dark .flatpickr-calendar .flatpickr-day.nextMonthDay.inRange, .theme-dark .flatpickr-calendar .flatpickr-day.today.inRange, .theme-dark .flatpickr-calendar .flatpickr-day.prevMonthDay.today.inRange, .theme-dark .flatpickr-calendar .flatpickr-day.nextMonthDay.today.inRange, .theme-dark .flatpickr-calendar .flatpickr-day:hover, .theme-dark .flatpickr-calendar .flatpickr-day.prevMonthDay:hover, .theme-dark .flatpickr-calendar .flatpickr-day.nextMonthDay:hover, .theme-dark .flatpickr-calendar .flatpickr-day:focus, .theme-dark .flatpickr-calendar .flatpickr-day.prevMonthDay:focus, .theme-dark .flatpickr-calendar .flatpickr-day.nextMonthDay:focus {\\n  background: #262c49;\\n  border-color: #262c49;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-day.today {\\n  border-color: #959ea9;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-day.selected {\\n  color: #fff;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-day.today:hover, .theme-dark .flatpickr-calendar .flatpickr-day.today:focus {\\n  background: #262c49;\\n  color: #fff;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-day.prevMonthDay, .theme-dark .flatpickr-calendar .flatpickr-day.nextMonthDay, .theme-dark .flatpickr-calendar .flatpickr-day.disabled {\\n  opacity: .3;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-time {\\n  border-top-color: #414561 !important;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-time input {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-time input:hover,\\n    .theme-dark .flatpickr-calendar .flatpickr-time .flatpickr-am-pm:hover,\\n    .theme-dark .flatpickr-calendar .flatpickr-time input:focus,\\n    .theme-dark .flatpickr-calendar .flatpickr-time .flatpickr-am-pm:focus {\\n  background: #262c49;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-time .flatpickr-am-pm {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-time ::-moz-selection {\\n  background: transparent;\\n}\\n\\n.theme-dark .flatpickr-calendar .flatpickr-time ::selection {\\n  background: transparent;\\n}\\n\\n.theme-dark .flatpickr-calendar .numInputWrapper .arrowUp:after {\\n  border-bottom-color: #fff;\\n}\\n\\n.theme-dark .flatpickr-calendar .numInputWrapper .arrowDown:after {\\n  border-top-color: #fff;\\n}\\n\\n/*=========================================================================================\\n    File Name: _themes.scss\\n    Description: partial- themes - imports theme styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _themeDark.scss\\n    Description: partial- Styles for dark theme\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n.theme-dark {\\n  background-color: #262c49;\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark .content-area__heading h2 {\\n  color: #ebeefd;\\n}\\n\\n.theme-dark code {\\n  color: #b8c2cc;\\n  background: #262c49;\\n}\\n\\n.theme-dark pre[class*=\\\"language-\\\"] {\\n  background-color: #1E1E1E;\\n  text-shadow: none;\\n}\\n\\n.theme-dark pre[class*=\\\"language-\\\"] code {\\n  background-color: transparent;\\n}\\n\\n.theme-dark pre[class*=\\\"language-\\\"] code[class*=\\\"language-\\\"] {\\n  text-shadow: none;\\n}\\n\\n.theme-dark label {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark h1, .theme-dark h2, .theme-dark h3, .theme-dark h4, .theme-dark h5, .theme-dark h6 {\\n  color: #ebeefd;\\n}\\n\\n.theme-dark ul.bordered-items li {\\n  border-color: #414561 !important;\\n}\\n\\n.theme-dark .notification-dropdown .notification:hover,\\n  .theme-dark .notification-dropdown .cart-item:hover,\\n  .theme-dark .cart-dropdown .notification:hover,\\n  .theme-dark .cart-dropdown .cart-item:hover {\\n  background: #10163a;\\n}\\n\\n.theme-dark .notification-dropdown .checkout-footer,\\n  .theme-dark .notification-dropdown .notification-footer,\\n  .theme-dark .cart-dropdown .checkout-footer,\\n  .theme-dark .cart-dropdown .notification-footer {\\n  background-color: #262c49;\\n}\\n\\n.theme-dark .notification-dropdown .checkout-footer:hover,\\n  .theme-dark .notification-dropdown .notification-footer:hover,\\n  .theme-dark .cart-dropdown .checkout-footer:hover,\\n  .theme-dark .cart-dropdown .notification-footer:hover {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark .vs-component.vs-notifications.vs-noti-dark {\\n  color: #22292f !important;\\n}\\n\\n.theme-dark .vs-component.vs-notifications.vs-noti-dark .filling {\\n  background: #b8c2cc !important;\\n}\\n\\n.theme-dark .vs-component.vs-notifications.vs-noti-dark h3 {\\n  color: #22292f !important;\\n}\\n\\n.theme-dark .vx-card {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark .vx-card.card-border {\\n  border-color: #414561;\\n}\\n\\n.theme-dark .vx-card .vx-card__title h4 {\\n  color: #ebeefd;\\n}\\n\\n.theme-dark .vx-card .con-vs-alert-dark {\\n  color: #dae1e7;\\n}\\n\\n.theme-dark .vx-card .code-content pre[class^=\\\"language-\\\"] {\\n  background-color: #262c49;\\n  text-shadow: none;\\n}\\n\\n.theme-dark .vx-card .code-content pre[class^=\\\"language-\\\"] code {\\n  background-color: transparent;\\n}\\n\\n.theme-dark .vx-card .code-content pre[class^=\\\"language-\\\"] code[class*=\\\"language-\\\"] {\\n  text-shadow: none;\\n}\\n\\n.theme-dark .vx-card .vx-card__body .con-vs-alert-primary h4 {\\n  color: rgba(var(--vs-primary), 1);\\n}\\n\\n.theme-dark .vx-card .vx-card__body .con-vs-alert-success h4 {\\n  color: rgba(var(--vs-success), 1);\\n}\\n\\n.theme-dark .vx-card .vx-card__body .con-vs-alert-danger h4 {\\n  color: rgba(var(--vs-danger), 1);\\n}\\n\\n.theme-dark .vx-card .vx-card__body .con-vs-alert-info h4 {\\n  color: rgba(var(--vs-info), 1);\\n}\\n\\n.theme-dark .vx-card .vx-card__body .con-vs-alert-warning h4 {\\n  color: rgba(var(--vs-warning), 1);\\n}\\n\\n.theme-dark .vx-card .tasks-today-container .tasks-today__task:hover {\\n  background: #212744 !important;\\n}\\n\\n.theme-dark .vx-navbar-wrapper {\\n  background: linear-gradient(to bottom, rgba(44, 48, 60, 0.9) 44%, rgba(44, 48, 60, 0.43) 73%, rgba(44, 48, 60, 0) 100%);\\n}\\n\\n.theme-dark .vx-navbar-wrapper .vx-navbar .search-full-container {\\n  background-color: #10163a !important;\\n}\\n\\n.theme-dark .vx-navbar-wrapper .vx-navbar .search-full-container .vx-auto-suggest input {\\n  background: #10163a;\\n}\\n\\n.theme-dark .vx-navbar-wrapper .vx-navbar .vx-auto-suggest .auto-suggest-suggestions-list .auto-suggest__suggestion {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .vx-navbar-wrapper .vx-navbar .vx-auto-suggest .auto-suggest-suggestions-list .auto-suggest__suggestion.vx-auto-suggest__current-selected {\\n  background: #10163a;\\n  color: #fff;\\n}\\n\\n.theme-dark .main-menu-sidebar .vs-sidebar {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark .main-menu-sidebar .shadow-bottom {\\n  width: 94%;\\n  background: linear-gradient(to bottom, #0f1642 44%, rgba(15, 22, 66, 0.51) 73%, rgba(44, 48, 60, 0) 100%);\\n}\\n\\n.theme-dark .main-menu-sidebar .scroll-area--main-sidebar .feather-icon, .theme-dark .main-menu-sidebar .scroll-area--main-sidebar span:not(.vs-chip--text) {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .main-menu-sidebar .scroll-area--main-sidebar a:not(.router-link-active) .feather-icon svg, .theme-dark .main-menu-sidebar .scroll-area--main-sidebar a:not(.router-link-active) .feather-icon span {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .main-menu-sidebar .scroll-area--main-sidebar a.router-link-active span {\\n  color: #fff;\\n}\\n\\n.theme-dark .main-menu-sidebar .scroll-area--main-sidebar .vs-sidebar-group.vs-sidebar-group-active > .group-header {\\n  background: #262c49;\\n}\\n\\n.theme-dark .main-menu-sidebar .scroll-area--main-sidebar .vs-sidebar-group.vs-sidebar-group-open > .group-header {\\n  background: #262c49;\\n}\\n\\n.theme-dark .ps:hover > .ps__scrollbar-y-rail:hover {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark .grid-demo__layout-container .vs-row .vs-col {\\n  background-color: #212744;\\n}\\n\\n.theme-dark .grid-demo__layout-container .vs-row .vs-col:last-of-type {\\n  background-color: #212744;\\n}\\n\\n.theme-dark .grid-demo__layout-container--block .vs-row {\\n  background-color: #212744;\\n}\\n\\n.theme-dark .chat-card-log .flex-row-reverse .msg.chat-sent-msg {\\n  background-color: #10163a !important;\\n}\\n\\n.theme-dark .chat-card-log .msg {\\n  background-color: #212744 !important;\\n}\\n\\n.theme-dark .chat-input-container, .theme-dark .chat__input {\\n  background-color: #10163a !important;\\n  border-top: 1px solid #212744;\\n}\\n\\n.theme-dark .app-search-container {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark #chat-app .chat__profile-search .vs-inputx {\\n  border-color: #414561 !important;\\n}\\n\\n.theme-dark #chat-app #chat-list-sidebar .chat-scroll-area .chat__contact:hover {\\n  background: #10163a;\\n}\\n\\n.theme-dark #chat-app .chat__header header {\\n  background: #212744 !important;\\n}\\n\\n.theme-dark #chat-app .chat__header header h6 {\\n  color: #ebeefd;\\n}\\n\\n.theme-dark #chat-app .chat__bg {\\n  background-color: #171e49;\\n  background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260' viewBox='0 0 260 260'%3E%3Cg fill-rule='evenodd'%3E%3Cg fill='%236f76a1' fill-opacity='0.4'%3E%3Cpath d='M24.37 16c.2.65.39 1.32.54 2H21.17l1.17 2.34.45.9-.24.11V28a5 5 0 0 1-2.23 8.94l-.02.06a8 8 0 0 1-7.75 6h-20a8 8 0 0 1-7.74-6l-.02-.06A5 5 0 0 1-17.45 28v-6.76l-.79-1.58-.44-.9.9-.44.63-.32H-20a23.01 23.01 0 0 1 44.37-2zm-36.82 2a1 1 0 0 0-.44.1l-3.1 1.56.89 1.79 1.31-.66a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .86.02l2.88-1.27a3 3 0 0 1 2.43 0l2.88 1.27a1 1 0 0 0 .85-.02l3.1-1.55-.89-1.79-1.42.71a3 3 0 0 1-2.56.06l-2.77-1.23a1 1 0 0 0-.4-.09h-.01a1 1 0 0 0-.4.09l-2.78 1.23a3 3 0 0 1-2.56-.06l-2.3-1.15a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1L.9 19.22a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1l-2.21 1.11a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01zm0-2h-4.9a21.01 21.01 0 0 1 39.61 0h-2.09l-.06-.13-.26.13h-32.31zm30.35 7.68l1.36-.68h1.3v2h-36v-1.15l.34-.17 1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0l1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0L2.26 23h2.59l1.36.68a3 3 0 0 0 2.56.06l1.67-.74h3.23l1.67.74a3 3 0 0 0 2.56-.06zM-13.82 27l16.37 4.91L18.93 27h-32.75zm-.63 2h.34l16.66 5 16.67-5h.33a3 3 0 1 1 0 6h-34a3 3 0 1 1 0-6zm1.35 8a6 6 0 0 0 5.65 4h20a6 6 0 0 0 5.66-4H-13.1z'/%3E%3Cpath id='path6_fill-copy' d='M284.37 16c.2.65.39 1.32.54 2H281.17l1.17 2.34.45.9-.24.11V28a5 5 0 0 1-2.23 8.94l-.02.06a8 8 0 0 1-7.75 6h-20a8 8 0 0 1-7.74-6l-.02-.06a5 5 0 0 1-2.24-8.94v-6.76l-.79-1.58-.44-.9.9-.44.63-.32H240a23.01 23.01 0 0 1 44.37-2zm-36.82 2a1 1 0 0 0-.44.1l-3.1 1.56.89 1.79 1.31-.66a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .86.02l2.88-1.27a3 3 0 0 1 2.43 0l2.88 1.27a1 1 0 0 0 .85-.02l3.1-1.55-.89-1.79-1.42.71a3 3 0 0 1-2.56.06l-2.77-1.23a1 1 0 0 0-.4-.09h-.01a1 1 0 0 0-.4.09l-2.78 1.23a3 3 0 0 1-2.56-.06l-2.3-1.15a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1l-2.21 1.11a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1l-2.21 1.11a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01zm0-2h-4.9a21.01 21.01 0 0 1 39.61 0h-2.09l-.06-.13-.26.13h-32.31zm30.35 7.68l1.36-.68h1.3v2h-36v-1.15l.34-.17 1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0l1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0l1.36-.68h2.59l1.36.68a3 3 0 0 0 2.56.06l1.67-.74h3.23l1.67.74a3 3 0 0 0 2.56-.06zM246.18 27l16.37 4.91L278.93 27h-32.75zm-.63 2h.34l16.66 5 16.67-5h.33a3 3 0 1 1 0 6h-34a3 3 0 1 1 0-6zm1.35 8a6 6 0 0 0 5.65 4h20a6 6 0 0 0 5.66-4H246.9z'/%3E%3Cpath d='M159.5 21.02A9 9 0 0 0 151 15h-42a9 9 0 0 0-8.5 6.02 6 6 0 0 0 .02 11.96A8.99 8.99 0 0 0 109 45h42a9 9 0 0 0 8.48-12.02 6 6 0 0 0 .02-11.96zM151 17h-42a7 7 0 0 0-6.33 4h54.66a7 7 0 0 0-6.33-4zm-9.34 26a8.98 8.98 0 0 0 3.34-7h-2a7 7 0 0 1-7 7h-4.34a8.98 8.98 0 0 0 3.34-7h-2a7 7 0 0 1-7 7h-4.34a8.98 8.98 0 0 0 3.34-7h-2a7 7 0 0 1-7 7h-7a7 7 0 1 1 0-14h42a7 7 0 1 1 0 14h-9.34zM109 27a9 9 0 0 0-7.48 4H101a4 4 0 1 1 0-8h58a4 4 0 0 1 0 8h-.52a9 9 0 0 0-7.48-4h-42z'/%3E%3Cpath d='M39 115a8 8 0 1 0 0-16 8 8 0 0 0 0 16zm6-8a6 6 0 1 1-12 0 6 6 0 0 1 12 0zm-3-29v-2h8v-6H40a4 4 0 0 0-4 4v10H22l-1.33 4-.67 2h2.19L26 130h26l3.81-40H58l-.67-2L56 84H42v-6zm-4-4v10h2V74h8v-2h-8a2 2 0 0 0-2 2zm2 12h14.56l.67 2H22.77l.67-2H40zm13.8 4H24.2l3.62 38h22.36l3.62-38z'/%3E%3Cpath d='M129 92h-6v4h-6v4h-6v14h-3l.24 2 3.76 32h36l3.76-32 .24-2h-3v-14h-6v-4h-6v-4h-8zm18 22v-12h-4v4h3v8h1zm-3 0v-6h-4v6h4zm-6 6v-16h-4v19.17c1.6-.7 2.97-1.8 4-3.17zm-6 3.8V100h-4v23.8a10.04 10.04 0 0 0 4 0zm-6-.63V104h-4v16a10.04 10.04 0 0 0 4 3.17zm-6-9.17v-6h-4v6h4zm-6 0v-8h3v-4h-4v12h1zm27-12v-4h-4v4h3v4h1v-4zm-6 0v-8h-4v4h3v4h1zm-6-4v-4h-4v8h1v-4h3zm-6 4v-4h-4v8h1v-4h3zm7 24a12 12 0 0 0 11.83-10h7.92l-3.53 30h-32.44l-3.53-30h7.92A12 12 0 0 0 130 126z'/%3E%3Cpath d='M212 86v2h-4v-2h4zm4 0h-2v2h2v-2zm-20 0v.1a5 5 0 0 0-.56 9.65l.06.25 1.12 4.48a2 2 0 0 0 1.94 1.52h.01l7.02 24.55a2 2 0 0 0 1.92 1.45h4.98a2 2 0 0 0 1.92-1.45l7.02-24.55a2 2 0 0 0 1.95-1.52L224.5 96l.06-.25a5 5 0 0 0-.56-9.65V86a14 14 0 0 0-28 0zm4 0h6v2h-9a3 3 0 1 0 0 6H223a3 3 0 1 0 0-6H220v-2h2a12 12 0 1 0-24 0h2zm-1.44 14l-1-4h24.88l-1 4h-22.88zm8.95 26l-6.86-24h18.7l-6.86 24h-4.98zM150 242a22 22 0 1 0 0-44 22 22 0 0 0 0 44zm24-22a24 24 0 1 1-48 0 24 24 0 0 1 48 0zm-28.38 17.73l2.04-.87a6 6 0 0 1 4.68 0l2.04.87a2 2 0 0 0 2.5-.82l1.14-1.9a6 6 0 0 1 3.79-2.75l2.15-.5a2 2 0 0 0 1.54-2.12l-.19-2.2a6 6 0 0 1 1.45-4.46l1.45-1.67a2 2 0 0 0 0-2.62l-1.45-1.67a6 6 0 0 1-1.45-4.46l.2-2.2a2 2 0 0 0-1.55-2.13l-2.15-.5a6 6 0 0 1-3.8-2.75l-1.13-1.9a2 2 0 0 0-2.5-.8l-2.04.86a6 6 0 0 1-4.68 0l-2.04-.87a2 2 0 0 0-2.5.82l-1.14 1.9a6 6 0 0 1-3.79 2.75l-2.15.5a2 2 0 0 0-1.54 2.12l.19 2.2a6 6 0 0 1-1.45 4.46l-1.45 1.67a2 2 0 0 0 0 2.62l1.45 1.67a6 6 0 0 1 1.45 4.46l-.2 2.2a2 2 0 0 0 1.55 2.13l2.15.5a6 6 0 0 1 3.8 2.75l1.13 1.9a2 2 0 0 0 2.5.8zm2.82.97a4 4 0 0 1 3.12 0l2.04.87a4 4 0 0 0 4.99-1.62l1.14-1.9a4 4 0 0 1 2.53-1.84l2.15-.5a4 4 0 0 0 3.09-4.24l-.2-2.2a4 4 0 0 1 .97-2.98l1.45-1.67a4 4 0 0 0 0-5.24l-1.45-1.67a4 4 0 0 1-.97-2.97l.2-2.2a4 4 0 0 0-3.09-4.25l-2.15-.5a4 4 0 0 1-2.53-1.84l-1.14-1.9a4 4 0 0 0-5-1.62l-2.03.87a4 4 0 0 1-3.12 0l-2.04-.87a4 4 0 0 0-4.99 1.62l-1.14 1.9a4 4 0 0 1-2.53 1.84l-2.15.5a4 4 0 0 0-3.09 4.24l.2 2.2a4 4 0 0 1-.97 2.98l-1.45 1.67a4 4 0 0 0 0 5.24l1.45 1.67a4 4 0 0 1 .97 2.97l-.2 2.2a4 4 0 0 0 3.09 4.25l2.15.5a4 4 0 0 1 2.53 1.84l1.14 1.9a4 4 0 0 0 5 1.62l2.03-.87zM152 207a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm6 2a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-11 1a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-6 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm3-5a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-8 8a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm3 6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm0 6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm4 7a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm5-2a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm5 4a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm4-6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm6-4a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-4-3a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm4-3a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-5-4a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-24 6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm16 5a5 5 0 1 0 0-10 5 5 0 0 0 0 10zm7-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0zm86-29a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm19 9a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-14 5a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm-25 1a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm5 4a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm9 0a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm15 1a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm12-2a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm-11-14a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-19 0a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm6 5a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-25 15c0-.47.01-.94.03-1.4a5 5 0 0 1-1.7-8 3.99 3.99 0 0 1 1.88-5.18 5 5 0 0 1 3.4-6.22 3 3 0 0 1 1.46-1.05 5 5 0 0 1 7.76-3.27A30.86 30.86 0 0 1 246 184c6.79 0 13.06 2.18 18.17 5.88a5 5 0 0 1 7.76 3.27 3 3 0 0 1 1.47 1.05 5 5 0 0 1 3.4 6.22 4 4 0 0 1 1.87 5.18 4.98 4.98 0 0 1-1.7 8c.02.46.03.93.03 1.4v1h-62v-1zm.83-7.17a30.9 30.9 0 0 0-.62 3.57 3 3 0 0 1-.61-4.2c.37.28.78.49 1.23.63zm1.49-4.61c-.36.87-.68 1.76-.96 2.68a2 2 0 0 1-.21-3.71c.33.4.73.75 1.17 1.03zm2.32-4.54c-.54.86-1.03 1.76-1.49 2.68a3 3 0 0 1-.07-4.67 3 3 0 0 0 1.56 1.99zm1.14-1.7c.35-.5.72-.98 1.1-1.46a1 1 0 1 0-1.1 1.45zm5.34-5.77c-1.03.86-2 1.79-2.9 2.77a3 3 0 0 0-1.11-.77 3 3 0 0 1 4-2zm42.66 2.77c-.9-.98-1.87-1.9-2.9-2.77a3 3 0 0 1 4.01 2 3 3 0 0 0-1.1.77zm1.34 1.54c.38.48.75.96 1.1 1.45a1 1 0 1 0-1.1-1.45zm3.73 5.84c-.46-.92-.95-1.82-1.5-2.68a3 3 0 0 0 1.57-1.99 3 3 0 0 1-.07 4.67zm1.8 4.53c-.29-.9-.6-1.8-.97-2.67.44-.28.84-.63 1.17-1.03a2 2 0 0 1-.2 3.7zm1.14 5.51c-.14-1.21-.35-2.4-.62-3.57.45-.14.86-.35 1.23-.63a2.99 2.99 0 0 1-.6 4.2zM275 214a29 29 0 0 0-57.97 0h57.96zM72.33 198.12c-.21-.32-.34-.7-.34-1.12v-12h-2v12a4.01 4.01 0 0 0 7.09 2.54c.57-.69.91-1.57.91-2.54v-12h-2v12a1.99 1.99 0 0 1-2 2 2 2 0 0 1-1.66-.88zM75 176c.38 0 .74-.04 1.1-.12a4 4 0 0 0 6.19 2.4A13.94 13.94 0 0 1 84 185v24a6 6 0 0 1-6 6h-3v9a5 5 0 1 1-10 0v-9h-3a6 6 0 0 1-6-6v-24a14 14 0 0 1 14-14 5 5 0 0 0 5 5zm-17 15v12a1.99 1.99 0 0 0 1.22 1.84 2 2 0 0 0 2.44-.72c.21-.32.34-.7.34-1.12v-12h2v12a3.98 3.98 0 0 1-5.35 3.77 3.98 3.98 0 0 1-.65-.3V209a4 4 0 0 0 4 4h16a4 4 0 0 0 4-4v-24c.01-1.53-.23-2.88-.72-4.17-.43.1-.87.16-1.28.17a6 6 0 0 1-5.2-3 7 7 0 0 1-6.47-4.88A12 12 0 0 0 58 185v6zm9 24v9a3 3 0 1 0 6 0v-9h-6z'/%3E%3Cpath d='M-17 191a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm19 9a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1zm-14 5a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm-25 1a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm5 4a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm9 0a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm15 1a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm12-2a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2H4zm-11-14a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-19 0a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm6 5a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-25 15c0-.47.01-.94.03-1.4a5 5 0 0 1-1.7-8 3.99 3.99 0 0 1 1.88-5.18 5 5 0 0 1 3.4-6.22 3 3 0 0 1 1.46-1.05 5 5 0 0 1 7.76-3.27A30.86 30.86 0 0 1-14 184c6.79 0 13.06 2.18 18.17 5.88a5 5 0 0 1 7.76 3.27 3 3 0 0 1 1.47 1.05 5 5 0 0 1 3.4 6.22 4 4 0 0 1 1.87 5.18 4.98 4.98 0 0 1-1.7 8c.02.46.03.93.03 1.4v1h-62v-1zm.83-7.17a30.9 30.9 0 0 0-.62 3.57 3 3 0 0 1-.61-4.2c.37.28.78.49 1.23.63zm1.49-4.61c-.36.87-.68 1.76-.96 2.68a2 2 0 0 1-.21-3.71c.33.4.73.75 1.17 1.03zm2.32-4.54c-.54.86-1.03 1.76-1.49 2.68a3 3 0 0 1-.07-4.67 3 3 0 0 0 1.56 1.99zm1.14-1.7c.35-.5.72-.98 1.1-1.46a1 1 0 1 0-1.1 1.45zm5.34-5.77c-1.03.86-2 1.79-2.9 2.77a3 3 0 0 0-1.11-.77 3 3 0 0 1 4-2zm42.66 2.77c-.9-.98-1.87-1.9-2.9-2.77a3 3 0 0 1 4.01 2 3 3 0 0 0-1.1.77zm1.34 1.54c.38.48.75.96 1.1 1.45a1 1 0 1 0-1.1-1.45zm3.73 5.84c-.46-.92-.95-1.82-1.5-2.68a3 3 0 0 0 1.57-1.99 3 3 0 0 1-.07 4.67zm1.8 4.53c-.29-.9-.6-1.8-.97-2.67.44-.28.84-.63 1.17-1.03a2 2 0 0 1-.2 3.7zm1.14 5.51c-.14-1.21-.35-2.4-.62-3.57.45-.14.86-.35 1.23-.63a2.99 2.99 0 0 1-.6 4.2zM15 214a29 29 0 0 0-57.97 0h57.96z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\\\");\\n}\\n\\n.theme-dark #chat-app .chat__bg .select-none {\\n  background-color: #212744 !important;\\n}\\n\\n.theme-dark #chat-app .chat__bg h4 {\\n  background-color: #212744 !important;\\n  color: #ebeefd;\\n}\\n\\n.theme-dark #chat-app .chat__bg .msg {\\n  background-color: #10163a !important;\\n}\\n\\n.theme-dark #chat-app .chat__bg.chat-content-area .chat-content-scroll-area {\\n  background: rgba(34, 41, 47, 0.2);\\n}\\n\\n.theme-dark #chat-app .chat__bg .chat__input input {\\n  border-color: #414561 !important;\\n}\\n\\n.theme-dark #todo-app .todo-list h6.todo-title {\\n  color: #ebeefd;\\n}\\n\\n.theme-dark #todo-app .todo-list .todo-tags .con-vs-chip {\\n  background: #10163a;\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark #todo-app .list-item-component {\\n  border-color: #414561;\\n}\\n\\n.theme-dark #todo-app .list-item-component:hover {\\n  box-shadow: 0px 0 0 0px #1E1E1E;\\n}\\n\\n.theme-dark #email-app .email__mails .email__mail-item .mail__mail-item {\\n  background: #10163a;\\n}\\n\\n.theme-dark #email-app .email__mails .email__mail-item .mail__mail-item:hover {\\n  box-shadow: 10px 0 0 0px #1E1E1E;\\n}\\n\\n.theme-dark #email-app .email__mails .email__mail-item .mail__mail-item.mail__opened-mail {\\n  background: #262c49;\\n}\\n\\n.theme-dark #email-app .email__mails .email__mail-item:not(:first-of-type) .mail__mail-item {\\n  border-top: 1px solid #414561;\\n}\\n\\n.theme-dark #email-app .email-view-sidebar .vs-sidebar {\\n  background-color: #212744 !important;\\n  border-left-color: #414561;\\n}\\n\\n.theme-dark #email-app .email-view-sidebar .email-header {\\n  border-bottom-color: #414561;\\n}\\n\\n.theme-dark #calendar-app .full-calendar-body .week-row .day-cell.not-cur-month .day-number {\\n  color: rgba(255, 255, 255, 0.24);\\n}\\n\\n.theme-dark .vs-alert code {\\n  color: #b8c2cc;\\n  background: #262c49;\\n}\\n\\n.theme-dark .con-vs-avatar {\\n  background: #10163a !important;\\n}\\n\\n.theme-dark .con-vs-avatar.con-vs-avatar-primary {\\n  background: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.theme-dark .con-vs-avatar.con-vs-avatar-success {\\n  background: rgba(var(--vs-success), 1) !important;\\n}\\n\\n.theme-dark .con-vs-avatar.con-vs-avatar-danger {\\n  background: rgba(var(--vs-danger), 1) !important;\\n}\\n\\n.theme-dark .con-vs-avatar.con-vs-avatar-warning {\\n  background: rgba(var(--vs-warning), 1) !important;\\n}\\n\\n.theme-dark .con-vs-avatar.con-vs-avatar-info {\\n  background: rgba(var(--vs-info), 1) !important;\\n}\\n\\n.theme-dark .con-vs-avatar.con-vs-avatar-dark {\\n  background: #b8c2cc !important;\\n}\\n\\n.theme-dark #profile-page .profile-header .profile-header-nav {\\n  background: #10163a !important;\\n}\\n\\n.theme-dark #faq-page .faq-bg {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark .vs-breadcrumb--ol a, .theme-dark .vs-breadcrumb--ol .vs-breadcrum--separator {\\n  color: #dae1e7;\\n}\\n\\n.theme-dark .vs-button-dark.vs-button-filled {\\n  background: #b8c2cc !important;\\n}\\n\\n.theme-dark .vs-button-dark.vs-button-filled .vs-button--text {\\n  color: #1E1E1E;\\n}\\n\\n.theme-dark .demo-text-dark .vs-button-text {\\n  color: #b8c2cc;\\n}\\n\\n.theme-dark .vs-button-dark.vs-button-border, .theme-dark .vs-button-dark.vs-button-flat, .theme-dark .vs-button-dark.vs-button-line {\\n  border-color: #b8c2cc;\\n}\\n\\n.theme-dark .vs-button-dark .vs-button--text, .theme-dark .vs-button-dark .vs-icon {\\n  color: #b8c2cc;\\n}\\n\\n.theme-dark .con-vs-chip {\\n  background: #10163a;\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark .con-vs-chip.vs-chip-primary {\\n  background: rgba(var(--vs-primary), 1);\\n}\\n\\n.theme-dark .con-vs-chip.vs-chip-success {\\n  background: rgba(var(--vs-success), 1);\\n}\\n\\n.theme-dark .con-vs-chip.vs-chip-danger {\\n  background: rgba(var(--vs-danger), 1);\\n}\\n\\n.theme-dark .con-vs-chip.vs-chip-warning {\\n  background: rgba(var(--vs-warning), 1);\\n}\\n\\n.theme-dark .con-vs-chip.vs-chip-info {\\n  background: rgba(var(--vs-info), 1);\\n}\\n\\n.theme-dark .con-vs-chip.vs-chip-dark {\\n  background: rgba(var(--vs-dark), 1);\\n}\\n\\n.theme-dark .con-vs-chip .con-vs-avatar {\\n  background-color: #262c49 !important;\\n}\\n\\n.theme-dark .con-vs-chip.con-color {\\n  color: #fff !important;\\n}\\n\\n.theme-dark .con-chips .con-chips--input {\\n  background-color: #262c49;\\n}\\n\\n.theme-dark .vs-divider .vs-divider-border {\\n  border-color: #414561 !important;\\n}\\n\\n.theme-dark .vs-divider .vs-divider-border.vs-divider-border-primary {\\n  border-color: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.theme-dark .vs-divider .vs-divider-border.vs-divider-border-success {\\n  border-color: rgba(var(--vs-success), 1) !important;\\n}\\n\\n.theme-dark .vs-divider .vs-divider-border.vs-divider-border-danger {\\n  border-color: rgba(var(--vs-danger), 1) !important;\\n}\\n\\n.theme-dark .vs-divider .vs-divider-border.vs-divider-border-warning {\\n  border-color: rgba(var(--vs-warning), 1) !important;\\n}\\n\\n.theme-dark .vs-divider .vs-divider-border.vs-divider-border-info {\\n  border-color: rgba(var(--vs-info), 1) !important;\\n}\\n\\n.theme-dark .vs-divider .vs-divider-border.vs-divider-border-dark {\\n  border-color: rgba(184, 194, 204, 0.5) !important;\\n}\\n\\n.theme-dark .vs-divider .vs-divider--text {\\n  background: transparent;\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark .vs-divider .vs-divider--text .vs-icon {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .vs-dropdown--menu, .theme-dark .vs-dropdown--menu--after {\\n  background: #262c49;\\n  border-color: #414561;\\n}\\n\\n.theme-dark .vs-dropdown--menu .con-dropdown--group-ul, .theme-dark .vs-dropdown--menu--after .con-dropdown--group-ul {\\n  background: #262c49;\\n}\\n\\n.theme-dark .vs-dropdown--menu .vs-dropdown--item .vs-dropdown--item-link.disabled, .theme-dark .vs-dropdown--menu--after .vs-dropdown--item .vs-dropdown--item-link.disabled {\\n  color: #b8c2cc !important;\\n}\\n\\n.theme-dark .con-vs-loading {\\n  background: rgba(16, 22, 58, 0.6);\\n}\\n\\n.theme-dark .con-vs-loading h4.title-loading {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .vs-list .vs-list--header {\\n  box-shadow: 0 7px 7px -5px rgba(38, 44, 73, 0.8);\\n}\\n\\n.theme-dark .vs-list .vs-list--item {\\n  border-color: rgba(194, 198, 220, 0.08);\\n}\\n\\n.theme-dark .vs-navbar {\\n  border-color: #262c49;\\n}\\n\\n.theme-dark .vs-navbar li.vs-navbar--item a {\\n  color: #dae1e7;\\n}\\n\\n.theme-dark .vs-navbar li.vs-navbar--item.is-active-item a {\\n  color: #fff;\\n}\\n\\n.theme-dark .vs-navbar {\\n  background-color: #10163a !important;\\n  box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.5);\\n}\\n\\n.theme-dark .vs-pagination--nav .vs-pagination--ul {\\n  background: #10163a;\\n}\\n\\n.theme-dark .vs-pagination--nav .vs-pagination--ul .vs-pagination--li {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .vs-pagination--nav .vs-pagination--ul .item-pagination.is-current {\\n  color: #fff;\\n}\\n\\n.theme-dark .vs-pagination--nav .vs-pagination--buttons {\\n  background: #10163a;\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .con-vs-popup .vs-popup {\\n  background: #262c49 !important;\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .con-vs-popup .vs-popup .vs-popup--header {\\n  background: #10163a !important;\\n}\\n\\n.theme-dark .con-vs-popup .vs-popup .vs-popup--header .vs-popup--close {\\n  background: #262c49 !important;\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark #popup-demo .demo-alignment .vs-button {\\n  background: #262c49 !important;\\n}\\n\\n.theme-dark #popup-demo .demo-alignment .vs-button:hover {\\n  box-shadow: #262c49 0px 8px 25px -8px !important;\\n}\\n\\n.theme-dark .vs-sidebar {\\n  background: #10163a;\\n}\\n\\n.theme-dark .vs-sidebar h4, .theme-dark .vs-sidebar h5 {\\n  color: #ebeefd;\\n}\\n\\n.theme-dark .vs-sidebar .vs-sidebar--header {\\n  border-bottom-color: #414561;\\n}\\n\\n.theme-dark .vs-sidebar .vs-sidebar--items .vs-sidebar--item a {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .vs-sidebar .vs-sidebar-group.vs-sidebar-group-active > .group-header {\\n  background: #262c49;\\n}\\n\\n.theme-dark .con-vs-slider .vs-slider {\\n  background: rgba(38, 44, 73, 0.5);\\n}\\n\\n.theme-dark .ul-tabs .vs-tabs--li button {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .vs-tabs-dark .activeChild button, .theme-dark .vs-tabs-dark button:not(:disabled):hover {\\n  color: #b8c2cc !important;\\n}\\n\\n.theme-dark .vs-tabs-dark .line-vs-tabs {\\n  background: linear-gradient(30deg, #b8c2cc, rgba(184, 194, 204, 0.5)) !important;\\n  box-shadow: 0 0 8px 0 rgba(184, 194, 204, 0.4) !important;\\n}\\n\\n.theme-dark .vs-tooltip.vs-tooltip-dark {\\n  background: #262c49;\\n}\\n\\n.theme-dark .con-upload .con-input-upload, .theme-dark .con-upload .con-img-upload {\\n  background-color: #262c49;\\n}\\n\\n.theme-dark .con-upload .btn-upload-all {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark .con-upload .con-input-upload {\\n  border-color: #414561;\\n}\\n\\n.theme-dark input {\\n  background: #10163a;\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark input ~ .vs-placeholder-label, .theme-dark input ~ .vs-input--placeholder {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark ::-webkit-input-placeholder {\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark ::-moz-placeholder {\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark :-ms-input-placeholder {\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark ::-ms-input-placeholder {\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark ::placeholder {\\n  color: #c2c6dc !important;\\n}\\n\\n.theme-dark .vs-input--icon {\\n  color: #c2c6dc;\\n  border-right-color: rgba(194, 198, 220, 0.2);\\n}\\n\\n.theme-dark .vs-input--icon.icon-after {\\n  border-left-color: rgba(194, 198, 220, 0.2);\\n}\\n\\n.theme-dark .vs-input-number {\\n  background: #262c49;\\n}\\n\\n.theme-dark .vs-input-number button.vs-input-number--button-less:disabled, .theme-dark .vs-input-number button.vs-input-number--button-less.limit, .theme-dark .vs-input-number button.vs-input-number--button-plus:disabled, .theme-dark .vs-input-number button.vs-input-number--button-plus.limit {\\n  opacity: 0.75;\\n  background: #b8c2cc;\\n}\\n\\n.theme-dark .vs-con-textarea {\\n  background: #262c49;\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .vs-con-textarea .vs-textarea {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .vs-con-textarea .vs-textarea:focus {\\n  border-color: transparent;\\n}\\n\\n.theme-dark .vs-con-textarea.focusx {\\n  border-color: transparent;\\n}\\n\\n.theme-dark .vs-con-textarea.focusx h4 {\\n  background: transparent;\\n}\\n\\n.theme-dark .vs-con-textarea.textarea-danger .vs-textarea {\\n  color: rgba(var(--vs-danger), 1);\\n}\\n\\n.theme-dark .vs-switch {\\n  background: #262c49;\\n}\\n\\n.theme-dark .vs-switch.vs-switch-primary.vs-switch-active {\\n  background: rgba(var(--vs-primary), 1);\\n}\\n\\n.theme-dark .vs-switch.vs-switch-success.vs-switch-active {\\n  background: rgba(var(--vs-success), 1);\\n}\\n\\n.theme-dark .vs-switch.vs-switch-danger.vs-switch-active {\\n  background: rgba(var(--vs-danger), 1);\\n}\\n\\n.theme-dark .vs-switch.vs-switch-warning.vs-switch-active {\\n  background: rgba(var(--vs-warning), 1);\\n}\\n\\n.theme-dark .vs-switch.vs-switch-info.vs-switch-active {\\n  background: rgba(var(--vs-info), 1);\\n}\\n\\n.theme-dark .vs-switch.vs-switch-dark.vs-switch-active {\\n  background: #b8c2cc;\\n}\\n\\n.theme-dark .vs-radio-dark .vs-radio--circle {\\n  background: #b8c2cc;\\n  box-shadow: 0 3px 12px 0 rgba(184, 194, 204, 0.4);\\n}\\n\\n.theme-dark .op-block {\\n  box-shadow: 1px 1px 10px rgba(255, 255, 255, 0.1);\\n}\\n\\n.theme-dark .vs-input-dark .vs-input--input:focus {\\n  border-color: #b8c2cc !important;\\n}\\n\\n.theme-dark .vs-input-dark .vs-input--input:focus ~ .vs-input--placeholder {\\n  color: #b8c2cc;\\n}\\n\\n.theme-dark .vue-form-wizard .wizard-icon-circle {\\n  background: #262c49;\\n  border-color: #212744;\\n}\\n\\n.theme-dark .vue-form-wizard .wizard-nav-pills > li > a {\\n  color: #fff;\\n}\\n\\n.theme-dark .vue-form-wizard .wizard-nav-pills > li > a .stepTitle {\\n  color: #dae1e7;\\n}\\n\\n.theme-dark .vue-form-wizard .wizard-nav-pills > li > a:hover {\\n  color: #fff;\\n}\\n\\n.theme-dark .vue-form-wizard .wizard-navigation .wizard-nav .stepTitle {\\n  color: #dae1e7;\\n}\\n\\n.theme-dark .vs-con-table .vs-con-tbody {\\n  background: #212744;\\n  border: 2px solid #262c49;\\n}\\n\\n.theme-dark .vs-con-table .vs-con-tbody .vs-table--tbody-table tr {\\n  background: #262c49;\\n}\\n\\n.theme-dark .vs-con-table .vs-con-tbody .vs-table--tbody-table .vs-table--thead tr {\\n  background: #212744;\\n}\\n\\n.theme-dark .vs-con-table .con-edit-td {\\n  background: #212744;\\n}\\n\\n.theme-dark .vs-con-table .is-selected .tr-values {\\n  background: #212744 !important;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-tooltip.light {\\n  background: #212744;\\n  border-color: #262c49;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-tooltip.light .apexcharts-tooltip-title {\\n  background: #212744;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-xaxistooltip {\\n  background: #212744;\\n  border-color: #262c49;\\n  color: #fff;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-xaxistooltip:before, .theme-dark .apexcharts-canvas .apexcharts-xaxistooltip:after {\\n  border-bottom-color: #212744;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-yaxistooltip {\\n  background: #212744;\\n  border-color: #262c49;\\n  color: #fff;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-yaxistooltip:before, .theme-dark .apexcharts-canvas .apexcharts-yaxistooltip:after {\\n  border-left-color: #212744;\\n}\\n\\n.theme-dark .apexcharts-canvas text {\\n  fill: #fff !important;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-pie-series path {\\n  stroke: #262c49;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-legend .apexcharts-legend-series .apexcharts-legend-text {\\n  color: #b8c2cc !important;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-toolbar .apexcharts-menu {\\n  background: #262c49;\\n  border-color: #262c49;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-toolbar .apexcharts-menu .apexcharts-menu-item {\\n  background: #212744;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-radar-series polygon {\\n  fill: #262c49;\\n  stroke: #212744;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-track path {\\n  stroke: #262c49;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-selection-icon:not(.selected):hover svg,\\n  .theme-dark .apexcharts-canvas .apexcharts-zoom-icon:not(.selected):hover svg,\\n  .theme-dark .apexcharts-canvas .apexcharts-zoom-in-icon:hover svg,\\n  .theme-dark .apexcharts-canvas .apexcharts-zoom-out-icon:hover svg,\\n  .theme-dark .apexcharts-canvas .apexcharts-reset-zoom-icon:hover svg,\\n  .theme-dark .apexcharts-canvas .apexcharts-menu-icon:hover svg {\\n  fill: #fff;\\n}\\n\\n.theme-dark .apexcharts-canvas .apexcharts-gridline {\\n  stroke: #414561;\\n}\\n\\n.theme-dark .token.operator, .theme-dark .token.entity, .theme-dark .token.url, .theme-dark .language-css .token.string, .theme-dark .style .token.string {\\n  background: transparent;\\n}\\n\\n.theme-dark .search-tab-filter {\\n  background: #10163a;\\n}\\n\\n.theme-dark .vs-select--options {\\n  background: #10163a;\\n  border-color: rgba(184, 194, 204, 0.2);\\n}\\n\\n.theme-dark .vs-select--options span {\\n  color: #c2c6dc;\\n}\\n\\n.theme-dark .vs-select--options .vs-select--item {\\n  color: #b8c2cc;\\n  border-color: rgba(184, 194, 204, 0.2);\\n  box-shadow: none;\\n}\\n\\n.theme-dark .vs-select--options .vs-select--item:hover {\\n  background: #262c49;\\n}\\n\\n.theme-dark .quill-editor .ql-toolbar button {\\n  color: #fff;\\n}\\n\\n.theme-dark .quill-editor .ql-toolbar button svg path {\\n  stroke: #fff;\\n}\\n\\n.theme-dark .quill-editor .ql-toolbar .ql-fill {\\n  fill: #fff;\\n}\\n\\n.theme-dark .quill-editor .ql-toolbar .ql-stroke {\\n  stroke: #fff;\\n}\\n\\n.theme-dark .quill-editor .ql-toolbar .ql-picker {\\n  color: #fff;\\n}\\n\\n.theme-dark .quill-editor .ql-toolbar .ql-picker .ql-picker-options {\\n  background: #10163a;\\n}\\n\\n.theme-dark .quill-editor .ql-editor.ql-blank::before {\\n  color: rgba(255, 255, 255, 0.6);\\n}\\n\\n.theme-dark .activity-timeline {\\n  border-color: #414561;\\n}\\n\\n.theme-dark .vdp-datepicker .vdp-datepicker__calendar {\\n  background: #262c49;\\n}\\n\\n.theme-dark .vdp-datepicker .vdp-datepicker__calendar header .prev:not(.disabled):hover, .theme-dark .vdp-datepicker .vdp-datepicker__calendar header .next:not(.disabled):hover, .theme-dark .vdp-datepicker .vdp-datepicker__calendar header .up:not(.disabled):hover {\\n  background: #10163a;\\n}\\n\\n.theme-dark .vdp-datepicker .vdp-datepicker__calendar header .prev:after {\\n  border-right-color: #fff;\\n}\\n\\n.theme-dark .vdp-datepicker .vdp-datepicker__calendar header .next:after {\\n  border-left-color: #fff;\\n}\\n\\n.theme-dark .vdp-datepicker .vdp-datepicker__calendar .disabled {\\n  color: rgba(184, 194, 204, 0.6);\\n}\\n\\n.theme-dark .vdp-datepicker .vdp-datepicker__calendar .cell.highlighted {\\n  background: #10163a;\\n}\\n\\n.theme-dark .vdp-datepicker input {\\n  border: 0;\\n  padding: 10px;\\n}\\n\\n.theme-dark .vs-collapse.shadow {\\n  box-shadow: 0 0px 8px 0 rgba(255, 255, 255, 0.1) !important;\\n}\\n\\n.theme-dark .vs-collapse .vs-collapse-item {\\n  border-bottom-color: rgba(255, 255, 255, 0.04);\\n}\\n\\n.theme-dark .vs-collapse.border {\\n  border-color: rgba(255, 255, 255, 0.1);\\n}\\n\\n.theme-dark .vs-collapse.border .vs-collapse-item {\\n  border-bottom-color: rgba(255, 255, 255, 0.04);\\n}\\n\\n.theme-dark .vs-collapse.margin .vs-collapse-item {\\n  box-shadow: 0 2px 15px 0 rgba(255, 255, 255, 0.05);\\n}\\n\\n.theme-dark .vx-auto-suggest .auto-suggest-suggestions-list {\\n  background-color: #262c49;\\n}\\n\\n.theme-dark .footer-sticky .the-footer {\\n  background-color: #10163a;\\n  color: #fff !important;\\n}\\n\\n.theme-dark .con-vs-dialog .vs-dialog {\\n  background: #262c49;\\n  color: #fff;\\n}\\n\\n.theme-dark .con-vs-dialog .vs-dialog header {\\n  background: #10163a;\\n}\\n\\n.theme-dark .con-vs-dialog .vs-dialog header .con-title-after h3 {\\n  color: #fff;\\n}\\n\\n.theme-dark .con-vs-dialog .vs-dialog header .vs-dialog-cancel, .theme-dark .con-vs-dialog .vs-dialog header .vs-icon {\\n  background: #262c49;\\n  color: #fff;\\n}\\n\\n.theme-dark .con-vs-dialog .vs-dialog footer .vs-button--text {\\n  color: #fff;\\n}\\n\\n.theme-dark .con-vs-dialog .vs-dialog .vs-dialog-text .date-label {\\n  color: #fff;\\n}\\n\\n.theme-dark .con-vs-dialog .vs-dialog input, .theme-dark .con-vs-dialog .vs-dialog .vs-con-textarea {\\n  background: #10163a;\\n}\\n\\n.theme-dark .con-vs-dialog .vs-dialog .con-upload .con-input-upload,\\n    .theme-dark .con-vs-dialog .vs-dialog .con-upload .con-img-upload {\\n  background: #10163a;\\n}\\n\\n.theme-dark .con-vs-dialog .vs-dialog .quill-editor {\\n  background: #262c49;\\n}\\n\\n.theme-dark #theme-customizer .vs-switch,\\n  .theme-dark #theme-customizer input {\\n  background: #262c49;\\n}\\n\\n.theme-dark .add-new-data-sidebar input {\\n  background: #262c49;\\n}\\n\\n.theme-dark .vx-card .vs-pagination--nav .vs-pagination--ul {\\n  background: #262c49;\\n}\\n\\n.theme-dark .vx-card .vs-pagination--nav .vs-pagination--ul .vs-pagination--li {\\n  color: #fff;\\n}\\n\\n.theme-dark .vx-card .vs-pagination--nav .vs-pagination--buttons {\\n  background: #262c49;\\n  color: #fff;\\n}\\n\\n.theme-dark .vx-card .con-vs-avatar {\\n  background: #262c49 !important;\\n}\\n\\n.theme-dark .vx-card .con-vs-avatar.con-vs-avatar-primary {\\n  background: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.theme-dark .vx-card .con-vs-avatar.con-vs-avatar-success {\\n  background: rgba(var(--vs-success), 1) !important;\\n}\\n\\n.theme-dark .vx-card .con-vs-avatar.con-vs-avatar-danger {\\n  background: rgba(var(--vs-danger), 1) !important;\\n}\\n\\n.theme-dark .vx-card .con-vs-avatar.con-vs-avatar-warning {\\n  background: rgba(var(--vs-warning), 1) !important;\\n}\\n\\n.theme-dark .vx-card .con-vs-avatar.con-vs-avatar-info {\\n  background: rgba(var(--vs-info), 1) !important;\\n}\\n\\n.theme-dark .vx-card .con-vs-avatar.con-vs-avatar-dark {\\n  background: #b8c2cc !important;\\n}\\n\\n.theme-dark .vx-card .con-vs-chip {\\n  background: #262c49;\\n}\\n\\n.theme-dark .vx-card .con-vs-chip.vs-chip-primary {\\n  background: rgba(var(--vs-primary), 1);\\n}\\n\\n.theme-dark .vx-card .con-vs-chip.vs-chip-success {\\n  background: rgba(var(--vs-success), 1);\\n}\\n\\n.theme-dark .vx-card .con-vs-chip.vs-chip-danger {\\n  background: rgba(var(--vs-danger), 1);\\n}\\n\\n.theme-dark .vx-card .con-vs-chip.vs-chip-warning {\\n  background: rgba(var(--vs-warning), 1);\\n}\\n\\n.theme-dark .vx-card .con-vs-chip.vs-chip-info {\\n  background: rgba(var(--vs-info), 1);\\n}\\n\\n.theme-dark .vx-card .con-vs-chip.vs-chip-dark {\\n  background: rgba(var(--vs-dark), 1);\\n}\\n\\n.theme-dark .vx-card .con-vs-chip .con-vs-avatar {\\n  background-color: #10163a !important;\\n}\\n\\n.theme-dark .vx-card .con-chips .con-chips--input {\\n  background-color: #10163a !important;\\n}\\n\\n.theme-dark .vx-card .vs-navbar {\\n  background-color: #262c49 !important;\\n}\\n\\n.theme-dark .vx-card .vs-navbar .vs-navbar--btn-responsive .btn-responsive-line {\\n  background: #c2c6dc;\\n}\\n\\n.theme-dark .vx-card .vs-navbar-shadow .vs-navbar--item.is-active-item {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark .vx-card input {\\n  background: #262c49;\\n}\\n\\n/*=========================================================================================\\n    File Name: _themeSemiDark.scss\\n    Description: partial- Styles for semi dark theme\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n.theme-semi-dark .main-menu-sidebar .vs-sidebar {\\n  background-color: #10163a;\\n}\\n\\n.theme-semi-dark .main-menu-sidebar .shadow-bottom {\\n  width: 94%;\\n  background: linear-gradient(to bottom, #0f1642 44%, rgba(15, 22, 66, 0.51) 73%, rgba(44, 48, 60, 0) 100%);\\n}\\n\\n.theme-semi-dark .main-menu-sidebar .scroll-area--main-sidebar .feather-icon, .theme-semi-dark .main-menu-sidebar .scroll-area--main-sidebar span {\\n  color: #fff;\\n}\\n\\n.theme-semi-dark .main-menu-sidebar .scroll-area--main-sidebar a .feather-icon svg, .theme-semi-dark .main-menu-sidebar .scroll-area--main-sidebar a .feather-icon span {\\n  color: #fff;\\n}\\n\\n.theme-semi-dark .main-menu-sidebar .scroll-area--main-sidebar .vs-sidebar-group.vs-sidebar-group-open > .group-header {\\n  background: #262c49;\\n}\\n\\n.theme-semi-dark .main-menu-sidebar .scroll-area--main-sidebar .vs-sidebar-group.vs-sidebar-group-active > .group-header {\\n  background: #262c49;\\n}\\n\\n.theme-semi-dark .main-menu-sidebar .scroll-area--main-sidebar .con-vs-chip {\\n  box-shadow: 0px 0px 4px 2px #262c49;\\n}\\n\\n/*=========================================================================================\\n    File Name: _routerAnimations.scss\\n    Description: partial- router animations\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/* ZOOM FADE */\\n\\n.zoom-fade-enter-active,\\n.zoom-fade-leave-active {\\n  transition: transform .35s, opacity .28s ease-in-out;\\n}\\n\\n.zoom-fade-enter {\\n  transform: scale(0.97);\\n  opacity: 0;\\n}\\n\\n.zoom-fade-leave-to {\\n  transform: scale(1.03);\\n  opacity: 0;\\n}\\n\\n/* FADE TRNASITION */\\n\\n.fade-enter-active,\\n.fade-leave-active {\\n  transition: opacity .28s ease-in-out;\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n  opacity: 0;\\n}\\n\\n/* PAGE SLIDE */\\n\\n.slide-fade-enter-active, .slide-fade-leave-active {\\n  transition: opacity .35s, transform .4s;\\n}\\n\\n.slide-fade-enter {\\n  opacity: 0;\\n  transform: translateX(-30%);\\n}\\n\\n.slide-fade-leave-to {\\n  opacity: 0;\\n  transform: translateX(30%);\\n}\\n\\n/* ZOOM OUT */\\n\\n.zoom-out-enter-active, .zoom-out-leave-active {\\n  transition: opacity .35s ease-in-out, transform .45s ease-out;\\n}\\n\\n.zoom-out-enter, .zoom-out-leave-to {\\n  opacity: 0;\\n  transform: scale(0);\\n}\\n\\n/* UNFOLD SLIDE */\\n\\n.fade-bottom-enter-active, .fade-bottom-leave-active {\\n  transition: opacity .3s, transform .35s;\\n}\\n\\n.fade-bottom-enter {\\n  opacity: 0;\\n  transform: translateY(-8%);\\n}\\n\\n.fade-bottom-leave-to {\\n  opacity: 0;\\n  transform: translateY(8%);\\n}\\n\\n/*=========================================================================================\\n    File Name: _transitions.scss\\n    Description: Transition styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n.list-leave-active {\\n  position: absolute;\\n}\\n\\n.list-enter,\\n.list-leave-to {\\n  opacity: 0;\\n  transform: translateX(30px);\\n}\\n\\n.list-enter-up-leave-active {\\n  transition: none !important;\\n}\\n\\n.list-enter-up-enter {\\n  opacity: 0;\\n  transform: translateY(30px);\\n}\\n\\n/*=========================================================================================\\n    File Name: _customClasses.scss\\n    Description: partial- this file containes custom helper classes\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n    Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n.vx-row {\\n  display: flex;\\n  flex-wrap: wrap;\\n  margin: 0 -1rem;\\n}\\n\\n.vx-row > .vx-col {\\n  padding: 0 1rem;\\n}\\n\\n.vx-row.match-height > .vx-col {\\n  display: flex;\\n}\\n\\n.vx-row.no-gutter {\\n  margin: 0;\\n}\\n\\n.vx-row.no-gutter > .vx-col {\\n  padding: 0;\\n}\\n\\n.text-primary {\\n  color: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.text-success {\\n  color: rgba(var(--vs-success), 1) !important;\\n}\\n\\n.text-danger {\\n  color: rgba(var(--vs-danger), 1) !important;\\n}\\n\\n.text-warning {\\n  color: rgba(var(--vs-warning), 1) !important;\\n}\\n\\n.text-dark {\\n  color: rgba(var(--vs-dark), 1) !important;\\n}\\n\\n.bg-primary {\\n  background-color: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.bg-success {\\n  background-color: rgba(var(--vs-success), 1) !important;\\n}\\n\\n.bg-danger {\\n  background-color: rgba(var(--vs-danger), 1) !important;\\n}\\n\\n.bg-warning {\\n  background-color: rgba(var(--vs-warning), 1) !important;\\n}\\n\\n.bg-dark {\\n  background-color: rgba(var(--vs-dark), 1) !important;\\n}\\n\\n.border-primary {\\n  border-color: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.border-success {\\n  border-color: rgba(var(--vs-success), 1) !important;\\n}\\n\\n.border-danger {\\n  border-color: rgba(var(--vs-danger), 1) !important;\\n}\\n\\n.border-warning {\\n  border-color: rgba(var(--vs-warning), 1) !important;\\n}\\n\\n.border-dark {\\n  border-color: rgba(var(--vs-dark), 1) !important;\\n}\\n\\n.hover\\\\:bg-primary:hover {\\n  background-color: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.hover\\\\:bg-success:hover {\\n  background-color: rgba(var(--vs-success), 1) !important;\\n}\\n\\n.hover\\\\:bg-danger:hover {\\n  background-color: rgba(var(--vs-danger), 1) !important;\\n}\\n\\n.hover\\\\:bg-warning:hover {\\n  background-color: rgba(var(--vs-warning), 1) !important;\\n}\\n\\n.hover\\\\:bg-dark:hover {\\n  background-color: rgba(var(--vs-dark), 1) !important;\\n}\\n\\n.hover\\\\:text-primary:hover {\\n  color: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.hover\\\\:text-success:hover {\\n  color: rgba(var(--vs-success), 1) !important;\\n}\\n\\n.hover\\\\:text-danger:hover {\\n  color: rgba(var(--vs-danger), 1) !important;\\n}\\n\\n.hover\\\\:text-warning:hover {\\n  color: rgba(var(--vs-warning), 1) !important;\\n}\\n\\n.hover\\\\:text-dark:hover {\\n  color: rgba(var(--vs-dark), 1) !important;\\n}\\n\\n.bg-primary-gradient {\\n  background: linear-gradient(118deg, rgba(var(--vs-primary), 1), rgba(var(--vs-primary), 0.7)) !important;\\n}\\n\\n.bg-success-gradient {\\n  background: linear-gradient(118deg, rgba(var(--vs-success), 1), rgba(var(--vs-success), 0.7)) !important;\\n}\\n\\n.bg-danger-gradient {\\n  background: linear-gradient(118deg, rgba(var(--vs-danger), 1), rgba(var(--vs-danger), 0.7)) !important;\\n}\\n\\n.bg-warning-gradient {\\n  background: linear-gradient(118deg, rgba(var(--vs-warning), 1), rgba(var(--vs-warning), 0.7)) !important;\\n}\\n\\n.bg-dark-gradient {\\n  background: linear-gradient(118deg, rgba(var(--vs-dark), 1), rgba(var(--vs-dark), 0.7)) !important;\\n}\\n\\n.btn-group button {\\n  padding: 1rem 1.25rem !important;\\n}\\n\\n.btn-group :not(:last-child) {\\n  border-top-right-radius: 0;\\n  border-bottom-right-radius: 0;\\n}\\n\\n.btn-group :not(:first-child) {\\n  border-top-left-radius: 0;\\n  border-bottom-left-radius: 0;\\n}\\n\\n.btn-group-vertical {\\n  display: inline-flex;\\n  flex-direction: column;\\n  align-items: flex-start;\\n}\\n\\n.btn-group-vertical button {\\n  padding: 1rem 1.25rem !important;\\n  width: 100%;\\n}\\n\\n.btn-group-vertical :not(:first-child) {\\n  border-top-right-radius: 0;\\n  border-top-left-radius: 0;\\n}\\n\\n.btn-group-vertical :not(:last-child) {\\n  border-bottom-right-radius: 0;\\n  border-bottom-left-radius: 0;\\n}\\n\\n.con-vs-chip.number {\\n  padding-right: unset;\\n  min-height: 20px;\\n  min-width: 20px;\\n}\\n\\n.con-vs-chip.number .vs-chip--text {\\n  margin-left: unset;\\n  font-weight: 600;\\n}\\n\\n.truncate {\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n}\\n\\n.text-big {\\n  font-size: 4rem;\\n}\\n\\n.text-color-base {\\n  color: #626262;\\n}\\n\\n.blur-1 {\\n  -webkit-filter: blur(1px);\\n          filter: blur(1px);\\n}\\n\\n.blur-2 {\\n  -webkit-filter: blur(2px);\\n          filter: blur(2px);\\n}\\n\\n.blur-3 {\\n  -webkit-filter: blur(3px);\\n          filter: blur(3px);\\n}\\n\\n.sidebar-spacer {\\n  width: calc(100% - 260px);\\n  margin-left: 260px;\\n}\\n\\n.background-absolute .vs-sidebar--background {\\n  position: absolute;\\n}\\n\\n.sidebar-spacer-with-margin {\\n  width: calc(100% - 260px - 2.2rem);\\n  margin-left: calc(260px + 2.2rem);\\n}\\n\\n.sidebar-spacer--wide {\\n  width: calc(100% - 400px);\\n  margin-left: 400px;\\n}\\n\\n.full-vs-sidebar .vs-sidebar {\\n  max-width: calc(100% - 260px);\\n  margin-left: 260px;\\n}\\n\\n@media only screen and (max-width: 992px) {\\n  .full-vs-sidebar .vs-sidebar {\\n    max-width: 100%;\\n    margin-left: 0;\\n  }\\n}\\n\\n.vs-input-shadow-drop input {\\n  box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.14);\\n}\\n\\n.vs-input-no-border .vs-input--input {\\n  border: none !important;\\n}\\n\\n.vs-input-no-border .vs-input--input:focus {\\n  border: none !important;\\n}\\n\\n.vs-input-no-shdow-focus .vs-input--input:focus {\\n  box-shadow: none !important;\\n}\\n\\n.vs-select-no-border .vs-select--input {\\n  border: none !important;\\n}\\n\\n.responsive {\\n  width: 100%;\\n  height: auto;\\n}\\n\\nul.bordered-items > li:not(:last-of-type):not([class*='shadow']) {\\n  border-bottom: 1px solid #dae1e7;\\n}\\n\\n.user-list {\\n  display: flex;\\n}\\n\\n.user-list .con-vs-avatar {\\n  transition: .3s;\\n}\\n\\n.user-list .con-vs-avatar:hover {\\n  transform: translateY(-5px) scale(1.07);\\n  box-shadow: 0 14px 24px rgba(62, 57, 107, 0.2);\\n  z-index: 999;\\n}\\n\\n.dropdown-custom .vs-dropdown--custom {\\n  padding: 0 !important;\\n  border: 0;\\n  overflow: hidden;\\n  border-radius: .5rem;\\n  box-shadow: 0 15px 30px 0 rgba(0, 0, 0, 0.11), 0 5px 15px 0 rgba(0, 0, 0, 0.08) !important;\\n}\\n\\n.dropdown-custom .vs-dropdown--menu--after {\\n  background: rgba(var(--vs-primary), 1) !important;\\n  right: 1.6rem !important;\\n}\\n\\n.d-theme-dark-bg {\\n  background-color: #fff;\\n}\\n\\n.d-theme-border-grey-light {\\n  border-color: #dae1e7;\\n}\\n\\n.d-theme-text-inverse {\\n  color: #fff;\\n}\\n\\n.theme-dark .d-theme-dark-bg {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark .d-theme-input-dark-bg input {\\n  background-color: #10163a;\\n}\\n\\n.theme-dark .d-theme-heading-color {\\n  color: #2c2c2c;\\n}\\n\\n.theme-dark .d-theme-text-inverse {\\n  color: #626262;\\n}\\n\\n.theme-dark .d-theme-border-grey-light {\\n  border-color: #414561;\\n}\\n\\n/*=========================================================================================\\n  File Name: _fixesVuesax.scss\\n  Description: Partial - Fixes/Add vuesax styles\\n  ----------------------------------------------------------------------------------------\\n  Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n  Author: Pixinvent\\n  Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n.vs-alert {\\n  font-size: 1rem;\\n}\\n\\n.vs-alert code {\\n  background: #b5b5b5;\\n  color: #fff;\\n}\\n\\n.vs-breadcrumb--ol a:focus, .vs-breadcrumb--ol a:hover {\\n  color: #00A593;\\n}\\n\\n.vs-breadcrumb--ol .active {\\n  color: #00A593;\\n}\\n\\n.vs-tooltip {\\n  z-index: 52000;\\n}\\n\\n.con-chips .con-chips--input {\\n  border: none;\\n}\\n\\n.con-chips .con-vs-chip {\\n  margin: .75rem;\\n}\\n\\n.con-chips .con-chips--remove-all {\\n  right: 9px;\\n}\\n\\n.con-vs-chip {\\n  min-height: 26px;\\n  min-width: 26px;\\n  font-size: .8rem;\\n}\\n\\n.vs-collapse-item--header {\\n  font-size: 1.2rem;\\n  padding: 1rem;\\n}\\n\\n.con-content--item {\\n  font-size: 1rem;\\n  padding: 1rem;\\n}\\n\\n.vs-collapse.default .open-item .con-content--item, .vs-collapse.shadow .open-item .con-content--item, .vs-collapse.border .open-item .con-content--item, .vs-collapse.margin .open-item .con-content--item {\\n  opacity: 1;\\n  padding: 1rem;\\n}\\n\\n.vs-collapse.shadow .vs-collapse-item--icon-header {\\n  transform: translate(-50%, -50%);\\n}\\n\\n.vs-collapse.shadow .open-item .vs-collapse-item--icon-header {\\n  transform: translate(-50%, -50%) rotate(180deg);\\n}\\n\\n.con-vs-dialog {\\n  z-index: 52005;\\n}\\n\\n.con-vs-dialog .vs-dialog header h3 {\\n  padding: 0.8rem;\\n}\\n\\n.con-vs-dialog .vs-dialog header span.after {\\n  width: 0;\\n}\\n\\n.con-vs-dialog .vs-dialog .vs-dialog-text {\\n  padding: 1rem;\\n  font-size: 1rem;\\n}\\n\\n.con-vs-dialog .vs-dialog footer {\\n  padding: 1rem;\\n}\\n\\n.vs-con-dropdown {\\n  font-size: 1rem;\\n}\\n\\n.con-vs-dropdown--menu {\\n  z-index: 42000;\\n}\\n\\n.vs-list--item .list-titles .vs-list--subtitle {\\n  font-size: .85rem;\\n}\\n\\n.vs-list--item:last-child {\\n  border-bottom: none;\\n}\\n\\n.con-vs-popup {\\n  z-index: 53000;\\n}\\n\\n.con-vs-popup .vs-popup--content {\\n  padding: 1rem;\\n  font-size: 1rem;\\n}\\n\\n.vs-tabs--li button {\\n  font-size: 1rem;\\n}\\n\\n.con-select .vs-select--input {\\n  padding: 10px;\\n  font-size: 1rem;\\n  border: 1px solid rgba(0, 0, 0, 0.2);\\n}\\n\\n.vs-select--options {\\n  font-size: 1rem;\\n}\\n\\n.vs-select--options span {\\n  color: #626262;\\n  font-size: 1rem;\\n}\\n\\n.vs-switch--text {\\n  font-size: 0.7rem;\\n}\\n\\n.vs-con-input .vs-inputx {\\n  padding: .7rem;\\n  font-size: 1rem;\\n  border: 1px solid rgba(0, 0, 0, 0.2);\\n}\\n\\n.vs-con-input .vx-inputx:not(.input-rounded-full) {\\n  border-radius: 5px;\\n}\\n\\n.vs-input--input.normal {\\n  padding: .7rem;\\n  font-size: 1rem;\\n}\\n\\n.vs-input--input.hasIcon {\\n  padding: 0.7rem 1rem 0.7rem 3rem;\\n}\\n\\n.vs-input--input.hasIcon.icon-after-input {\\n  padding: 0.7rem 3rem 0.7rem 1rem;\\n}\\n\\n.vs-input--placeholder.normal {\\n  padding: .6rem;\\n}\\n\\n.vs-input--input.large {\\n  padding: 1rem;\\n  font-size: 1.2rem;\\n}\\n\\n.vs-input--input.large.hasIcon {\\n  padding: 1rem 0.8rem 1rem 2.5rem;\\n}\\n\\n.vs-input--placeholder.large {\\n  padding: 1rem;\\n}\\n\\n.vs-input--input.small {\\n  padding: .4rem;\\n  font-size: .8rem;\\n}\\n\\n.vs-input--placeholder.small {\\n  padding: .2rem .6rem;\\n  font-size: .8rem;\\n}\\n\\n.vs-input--input.large ~ .vs-input--icon {\\n  top: 1rem;\\n  left: 0.8rem;\\n}\\n\\n.vs-input--icon {\\n  top: 13px;\\n}\\n\\n.vs-input--icon.feather {\\n  top: 10px;\\n}\\n\\n.no-icon-border .vs-input--icon {\\n  border: none;\\n}\\n\\n.vs-textarea {\\n  font-size: 1rem;\\n}\\n\\n.vs-con-textarea {\\n  border: 1px solid rgba(0, 0, 0, 0.2);\\n}\\n\\n.vs-checkbox-small .vs-checkbox--input:checked + .vs-checkbox .vs-icon {\\n  transform: translateY(-3px);\\n}\\n\\n.vs-col {\\n  padding: 0 15px;\\n}\\n\\n.con-img-upload {\\n  overflow: hidden;\\n  padding: 0.6rem;\\n}\\n\\n.con-img-upload .img-upload {\\n  margin: 15px;\\n}\\n\\n.view-upload {\\n  z-index: 52000;\\n}\\n\\n.select-large input.vs-select--input {\\n  padding: 11px;\\n}\\n\\ni.wizard-icon {\\n  font-style: inherit;\\n}\\n\\n.stepTitle {\\n  margin-top: .5rem;\\n}\\n\\ni.feather {\\n  font-weight: 100;\\n}\\n\\n.vs-con-table {\\n  background: transparent;\\n}\\n\\n.vs-con-table .vs-table--header .vs-table--search {\\n  padding: 1rem 0;\\n}\\n\\n.vs-con-table .vs-table--header .vs-table--search .vs-table--search-input {\\n  padding: 10px 28px;\\n  border: 1px solid rgba(0, 0, 0, 0.1);\\n  font-size: 0.9rem;\\n}\\n\\n.vs-con-table .vs-table--header .vs-table--search .vs-table--search-input:focus + i {\\n  left: 10px;\\n}\\n\\n.vs-con-table .vs-table--header .vs-table--search i {\\n  left: 10px;\\n}\\n\\n.vs-con-table .vs-con-tbody {\\n  background: #f8f8f8;\\n  border: 2px solid #f8f8f8;\\n  width: 100%;\\n  overflow: auto;\\n}\\n\\n.vs-con-table .vs-con-tbody .con-vs-checkbox {\\n  justify-content: center !important;\\n}\\n\\n.vs-con-table .vs-con-tbody .vs-table--tbody-table {\\n  font-size: 1rem;\\n}\\n\\n.vs-con-table .vs-con-tbody .vs-table--tbody-table .tr-spacer {\\n  height: 2px;\\n}\\n\\n.vs-con-table .vs-con-tbody .vs-table--tbody-table .tr-table .tr-expand td {\\n  padding: 0;\\n}\\n\\n.vs-con-table .vs-con-tbody .vs-table--tbody-table .tr-table td {\\n  padding: 1rem;\\n}\\n\\n.vs-con-table .vs-con-tbody .vs-table--tbody-table .vs-table--thead th {\\n  padding-top: 1rem;\\n  padding-bottom: 1rem;\\n}\\n\\n.vs-con-table .vs-con-tbody .vs-table--tbody-table .vs-table--thead .con-td-check {\\n  background: transparent;\\n  box-shadow: none;\\n}\\n\\n.vs-con-table .vs-table--pagination {\\n  margin-top: 1rem;\\n}\\n\\n.con-vs-checkbox,\\n.con-vs-radio {\\n  justify-content: flex-start !important;\\n}\\n\\n.con-vs-radio {\\n  display: inline-flex;\\n}\\n\\n.input-rounded-full input {\\n  border-radius: 20px;\\n}\\n\\n.v-select .dropdown-toggle .vs__actions .clear {\\n  padding-top: 4px;\\n}\\n\\n.vs-button {\\n  font-family: \\\"Montserrat\\\", Helvetica, Arial, sans-serif;\\n  font-size: 1rem;\\n}\\n\\n.vs-button.vs-button-gradient:hover {\\n  box-shadow: none !important;\\n}\\n\\n.vs-button:not(.vs-radius):not(.includeIconOnly):not(.small):not(.large) {\\n  padding: .75rem 2rem;\\n}\\n\\n.vs-button:not(.vs-radius):not(.includeIconOnly):not(.small):not(.large).vs-button-border {\\n  padding: .679rem 2rem;\\n}\\n\\n.vs-button.small:not(.includeIconOnly) {\\n  padding: 0.5rem 1.5rem;\\n}\\n\\n.vs-button.large:not(.includeIconOnly) {\\n  padding: 1rem 2.5rem;\\n}\\n\\n.vs-button.large {\\n  font-size: 1.25rem;\\n}\\n\\n.vs-button.large .vs-button--icon {\\n  font-size: 1.25rem;\\n}\\n\\n.vs-button.round {\\n  border-radius: 1.5rem;\\n}\\n\\n.vs-button.includeIcon {\\n  float: none;\\n}\\n\\n.vs-popup--title h3,\\n.vs-notifications h3 {\\n  margin-bottom: 0;\\n}\\n\\n.vs-notifications {\\n  z-index: 200000 !important;\\n}\\n\\n.vs-notifications h3 {\\n  color: #fff;\\n  font-weight: 600;\\n  font-size: 15.96px;\\n}\\n\\n.vs-navbar-null .vs-navbar--item a:hover,\\n.vs-navbar-flat .vs-navbar--item a:hover,\\n.vs-navbar-fund .vs-navbar--item a:hover,\\n.vs-navbar-border .vs-navbar--item a:hover,\\n.vs-navbar-shadow .vs-navbar--item a:hover {\\n  color: #00A593 !important;\\n}\\n\\nh3.vs-navbar--title {\\n  margin-bottom: 0;\\n}\\n\\n.vs-navbar-gradient .vs-navbar-item-primary.is-active-item {\\n  color: #fff !important;\\n}\\n\\n.vs-con-dropdown {\\n  color: inherit;\\n}\\n\\n.dropdown-button-container .vs-button {\\n  padding: .72rem 1.5rem !important;\\n}\\n\\n.dropdown-button-container .vs-button-line {\\n  padding: 9px 10px !important;\\n}\\n\\n.vs-alert--title {\\n  color: inherit;\\n}\\n\\n.vs-input.input-rounded-full .vs-input--input.hasIcon {\\n  padding: .8rem 1rem 0.8rem 3rem;\\n}\\n\\n.vs-input.input-rounded-full .input-span-placeholder {\\n  padding-left: 3rem;\\n  padding-top: .7rem;\\n}\\n\\n.vs-input.input-rounded-full .vs-icon {\\n  margin-top: .1rem;\\n  margin-left: 0.6rem;\\n  font-size: 1rem;\\n}\\n\\n.vs-tabs-position-left .vs-tabs--li {\\n  padding: .35rem 0.3rem;\\n}\\n\\n.vs-pagination--li.is-current {\\n  border-radius: 50%;\\n}\\n\\n.vs-pagination--li.is-current .effect {\\n  border-radius: 50%;\\n}\\n\\n.vs-pagination--ul {\\n  padding: 0;\\n}\\n\\n.vs-select--options {\\n  border: 1px solid #eee;\\n  z-index: 530001;\\n}\\n\\n.vs-input--icon.feather {\\n  padding: .2rem .5rem 0rem .4rem;\\n}\\n\\n.vs-input--input.hasIcon + .vs-input--placeholder {\\n  padding-left: 3rem;\\n}\\n\\n.vs-input--input.large.hasIcon {\\n  padding: 1rem .8rem 1rem 3rem;\\n}\\n\\n.con-vs-alert {\\n  box-shadow: none !important;\\n}\\n\\n.vs-alert {\\n  font-weight: 500;\\n}\\n\\n.vs-checkbox-small .vs-checkbox--input:checked + .vs-checkbox .vs-icon {\\n  margin-top: 4px;\\n  margin-left: -1px;\\n}\\n\\n.vs-checkbox-small input:checked + .vs-checkbox {\\n  background-color: rgba(var(--vs-primary), 1) !important;\\n}\\n\\n.vs-dialog footer .vs-button:last-of-type {\\n  margin-left: .5rem !important;\\n  border-color: rgba(0, 0, 0, 0.2) !important;\\n}\\n\\n.vs-avatar--text.feather {\\n  font-size: 1.3rem;\\n}\\n\\n.vs-avatar--con-img img {\\n  height: 100%;\\n}\\n\\n/*=========================================================================================\\n    File Name: _tailwindFixes.scss\\n    Description: partial- Tailwind Fixes\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\nbutton:focus {\\n  outline: none;\\n}\\n\\n.cal-top-right {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n}\\n\\n.no-padding {\\n  padding: 0 !important;\\n}\\n\\n.no-margin {\\n  margin: 0 !important;\\n}\\n\\n.reduce-text-area-margin {\\n  margin-bottom: 8px;\\n}\\n\\n.user-avatar .media-upload {\\n  position: relative;\\n  height: 150px;\\n  width: 150px;\\n  background-size: cover;\\n  background-position: center center;\\n  border-radius: 50%;\\n}\\n\\n.user-avatar .media-upload.cal-loading {\\n  filter: blur(3px);\\n  -webkit-filter: blur(3px);\\n}\\n\\n.user-avatar .media-upload img.img-upload {\\n  width: 100%;\\n}\\n\\n.user-avatar .media-upload img.img-upload:after {\\n  content: \\\"\\\";\\n  display: block;\\n  padding-bottom: 100%;\\n}\\n\\n.user-avatar .media-upload .edit-image-hover {\\n  opacity: 0;\\n  position: absolute;\\n  left: 0;\\n  bottom: 0;\\n  background: linear-gradient(0deg, #00A593 25%, transparent 0%);\\n  width: 100%;\\n  border-radius: 100%;\\n  height: 100%;\\n  cursor: pointer;\\n  transition: all .15s ease-in-out;\\n}\\n\\n.user-avatar .media-upload .edit-image-hover p {\\n  position: absolute;\\n  bottom: 10px;\\n  left: 50%;\\n  transform: translateX(-50%) translateY(25%);\\n  width: 70%;\\n  text-align: center;\\n  color: #ffffff;\\n  font-weight: 700;\\n}\\n\\n@media only screen and (max-width: 480px) {\\n  .user-avatar .media-upload .edit-image-hover p {\\n    margin-bottom: 5px;\\n    font-size: 12px;\\n  }\\n}\\n\\n.user-avatar .media-upload:hover .edit-image-hover {\\n  opacity: 1;\\n}\\n\\n.vs-avatar-object-cover {\\n  background-color: transparent !important;\\n}\\n\\n.vs-avatar-object-cover .con-img {\\n  border: 2px solid #00A593 !important;\\n}\\n\\n.vs-avatar-object-cover img {\\n  -o-object-fit: cover;\\n     object-fit: cover;\\n}\\n\\n.bg-secondary {\\n  background-color: #777777;\\n}\\n\\n.v-text-top {\\n  vertical-align: text-top;\\n}\\n\\n.vue-simple-suggest .default-input {\\n  font-size: 14px;\\n  color: #626262 !important;\\n}\\n\\n.vue-simple-suggest .default-input:-ms-input-placeholder, .vue-simple-suggest .default-input:-ms-input-placeholder, .vue-simple-suggest .default-input ::-ms-input-placeholder {\\n  color: rgba(0, 0, 0, 0.2) !important;\\n  opacity: 1;\\n}\\n\\n.vue-simple-suggest .default-input::-ms-input-placeholder, .vue-simple-suggest .default-input:-ms-input-placeholder, .vue-simple-suggest .default-input ::-ms-input-placeholder {\\n  color: rgba(0, 0, 0, 0.2) !important;\\n  opacity: 1;\\n}\\n\\n.vue-simple-suggest .default-input::placeholder, .vue-simple-suggest .default-input:-ms-input-placeholder, .vue-simple-suggest .default-input ::-ms-input-placeholder {\\n  color: rgba(0, 0, 0, 0.2) !important;\\n  opacity: 1;\\n}\\n\\n.gg-image-cover {\\n  -o-object-fit: cover;\\n     object-fit: cover;\\n}\\n\\n.gg-no-body .vs-con-tbody {\\n  display: none;\\n}\\n\\n.cv-event {\\n  -ms-text-overflow: ellipsis;\\n  text-overflow: ellipsis;\\n}\\n\\n.vs-input--icon {\\n  z-index: 10;\\n}\\n\\n.multiselect__content-wrapper {\\n  z-index: 1000;\\n}\\n\\n.gg-absolute {\\n  position: absolute !important;\\n}\\n\\n.position-right-15 {\\n  right: 15px;\\n}\\n\\n.gg-default-label {\\n  font-size: 9.8px;\\n  color: rgba(0, 0, 0, 0.4);\\n}\\n\\n.multiselect span {\\n  font-size: 14px;\\n}\\n\\n.multiselect .multiselect__tags {\\n  border: 1px solid rgba(0, 0, 0, 0.2);\\n}\\n\\n.multiselect > span {\\n  color: #626262;\\n}\\n\\n.multiselect .multiselect__option--highlight {\\n  background: #00A593;\\n}\\n\\n.multiselect .multiselect__option--highlight:after {\\n  background: #00A593;\\n}\\n\\n.multiselect .multiselect__option--highlight.multiselect__option--selected {\\n  background: #EA5455;\\n  color: white;\\n}\\n\\n.multiselect .multiselect__option--highlight.multiselect__option--selected:after {\\n  background: #EA5455;\\n}\\n\\ntextarea.vs-textarea {\\n  border: 1px solid rgba(0, 0, 0, 0.2);\\n}\\n\\n.no-border {\\n  border: none !important;\\n}\\n\\n.no-border .vs-con-textarea {\\n  border: none !important;\\n}\\n\\n.vs-input--placeholder {\\n  top: 1px;\\n}\\n\\n.gg-input-label {\\n  font-size: .7rem;\\n}\\n\\n.gg-banner-full-screen {\\n  margin-left: -50px;\\n  margin-right: -50px;\\n}\\n\\n.gg-banner-full-screen h3 {\\n  padding-left: 50px;\\n  padding-right: 50px;\\n}\\n\\n.con-vs-tooltip {\\n  display: inline-flex;\\n}\\n\\n.gg-media-table-text {\\n  word-break: break-all;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9zcmMvYXNzZXRzL3Njc3MvbWFpbi5zY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy9zY3NzL21haW4uc2Nzcz9hMzdkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBlc2NhcGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL3VybC9lc2NhcGUuanNcIik7XG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gIEZpbGUgTmFtZTogbWFpbi5zY3NzXFxuICBEZXNjcmlwdGlvbjogTWFpbiBzY3NzIGZpbGUuIEltcG9ydHMgb3RoZXIgc2NzcyBwYXJ0aWFscyBmcm9tICd2dWVzYXgnIGZvbGRlclxcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gIEF1dGhvcjogUGl4aW52ZW50XFxuICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IF92YXJpYWJsZXMuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gU0NTUyB2YXJpYmFsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBTUEFDSU5HXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBDT0xPUlNcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIERBUksgVEhFTUVcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBfbGF5b3V0LnNjc3NcXG4gICAgRGVzY3JpcHRpb246IHBhcnRpYWwtIG1haW4gbGF5b3V0IHN0eWxlcyBjb250YWluZXIgLSBpbXBvcnRzIGxheW91dCBzdHlsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX2xheW91dENvbW1vbi5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBDb21tb24gbGF5b3V0IHN0eWxlcy4gVGhpcyBzdHlsZSB3aWxsIGFwcGx5IHRvIGFsbCBsYXlvdXRzXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuaHRtbCB7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICBsZXR0ZXItc3BhY2luZzogMC4wMXJlbTtcXG59XFxuXFxuYm9keSB7XFxuICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICBiYWNrZ3JvdW5kOiAjZjhmOGY4O1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzIGVhc2U7XFxufVxcblxcbiNhcHAge1xcbiAgbWluLWhlaWdodDogMTAwJTtcXG59XFxuXFxuLnNpZGViYXItc3dpcGUtYXJlYSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGhlaWdodDogMTAwdmg7XFxuICB3aWR0aDogMzBweDtcXG4gIHotaW5kZXg6IDE7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbn1cXG5cXG4uZmVhdGhlci5mZWF0aGVyLW1lbnUge1xcbiAgei1pbmRleDogOTtcXG59XFxuXFxuLmxheW91dC0tbWFpbiB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBtaW4taGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG50ZXh0YXJlYS52cy10ZXh0YXJlYSB7XFxuICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICBsaW5lLWhlaWdodDogMS42O1xcbn1cXG5cXG50ZXh0YXJlYS52cy10ZXh0YXJlYTpkaXNhYmxlZCB7XFxuICBjb2xvcjogIzYyNjI2MjtcXG4gIG9wYWNpdHk6IDAuNTtcXG59XFxuXFxuI2NvbnRlbnQtb3ZlcmxheSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBvcGFjaXR5OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC43cztcXG4gIHotaW5kZXg6IC0xO1xcbn1cXG5cXG4uc2hvdy1vdmVybGF5ICNjb250ZW50LW92ZXJsYXkge1xcbiAgei1pbmRleDogNDEwMDA7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG5cXG4udGhlLWZvb3RlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuXFxubGkudnMtbmF2YmFyLS1pdGVtIGEge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcblxcbi52cy1jb250ZW50LXNpZGViYXIuaXRlbXMtbm8tcGFkZGluZyAudnMtc2lkZWJhci0taXRlbXMge1xcbiAgcGFkZGluZzogMDtcXG59XFxuXFxuZGl2W2lkJD1cXFwiZGVtb1xcXCJdIC52eC1jYXJkOm5vdCg6bGFzdC1vZi10eXBlKSB7XFxuICBtYXJnaW4tYm90dG9tOiAyLjJyZW07XFxufVxcblxcbi5zY3JvbGwtYXJlYSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBtYXJnaW46IGF1dG87XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuXFxuLmFwcC1zZWFyY2gtY29udGFpbmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxufVxcblxcbi5kZW1vLWFsaWdubWVudCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuXFxuLmRlbW8tYWxpZ25tZW50ID4gKiB7XFxuICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcXG4gIG1hcmdpbi10b3A6IDEuNXJlbTtcXG59XFxuXFxuLm9wLWJsb2NrIHtcXG4gIGJveC1zaGFkb3c6IDFweCAxcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICBwYWRkaW5nOiAxMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG59XFxuXFxuLmFwcC1wYWdlIC5yb3V0ZXItdmlldyB7XFxuICBwYWRkaW5nLWJvdHRvbTogMDtcXG59XFxuXFxuLmFwcC1wYWdlLm5hdmJhci1mbG9hdGluZyAuYXBwLWZpeGVkLWhlaWdodCB7XFxuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAxMi4xcmVtKTtcXG59XFxuXFxuLmFwcC1wYWdlLm5hdmJhci1mbG9hdGluZy5mb290ZXItaGlkZGVuIC5hcHAtZml4ZWQtaGVpZ2h0IHtcXG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDkuNnJlbSk7XFxufVxcblxcbi5hcHAtcGFnZS5uYXZiYXItZmxvYXRpbmcuZm9vdGVyLXN0aWNreSAuYXBwLWZpeGVkLWhlaWdodCB7XFxuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAxMy4xcmVtKTtcXG59XFxuXFxuLmFwcC1wYWdlLm5hdmJhci1zdGlja3kgLmFwcC1maXhlZC1oZWlnaHQge1xcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTEuMXJlbSk7XFxufVxcblxcbi5hcHAtcGFnZS5uYXZiYXItc3RpY2t5LmZvb3Rlci1oaWRkZW4gLmFwcC1maXhlZC1oZWlnaHQge1xcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gOC42cmVtKTtcXG59XFxuXFxuLmFwcC1wYWdlLm5hdmJhci1zdGlja3kuZm9vdGVyLXN0aWNreSAuYXBwLWZpeGVkLWhlaWdodCB7XFxuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAxMi4xcmVtKTtcXG59XFxuXFxuLmFwcC1wYWdlLm5hdmJhci1zdGF0aWMgLmFwcC1maXhlZC1oZWlnaHQge1xcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTEuMXJlbSk7XFxufVxcblxcbi5hcHAtcGFnZS5uYXZiYXItc3RhdGljLmZvb3Rlci1oaWRkZW4gLmFwcC1maXhlZC1oZWlnaHQge1xcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNy42cmVtKTtcXG59XFxuXFxuLmFwcC1wYWdlLm5hdmJhci1oaWRkZW4gLmFwcC1maXhlZC1oZWlnaHQge1xcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNi4xcmVtKTtcXG59XFxuXFxuLmFwcC1wYWdlLm5hdmJhci1oaWRkZW4uZm9vdGVyLWhpZGRlbiAuYXBwLWZpeGVkLWhlaWdodCB7XFxuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0LjFyZW0pO1xcbn1cXG5cXG4uYXBwLXBhZ2UubmF2YmFyLWhpZGRlbi5mb290ZXItc3RpY2t5IC5hcHAtZml4ZWQtaGVpZ2h0IHtcXG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDguMXJlbSk7XFxufVxcblxcbi5hcHAtZml4ZWQtaGVpZ2h0IHtcXG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDE0LjFyZW0pO1xcbn1cXG5cXG4udnMtc2lkZWJhciAudnMtc2lkZWJhci0taXRlbXMge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuXFxuLnZzLWFsZXJ0IGNvZGUubGFuZ3VhZ2UtbWFya3VwIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogIzYzNjM2MyAhaW1wb3J0YW50O1xcbn1cXG5cXG5AbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcXG4gIC5yb3V0ZXItdmlldyB7XFxuICAgIHBhZGRpbmc6IDEuMnJlbSAhaW1wb3J0YW50O1xcbiAgfVxcblxcbiAgLmZvb3Rlci1zdGlja3kgLnJvdXRlci12aWV3IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDVyZW0gIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IF9sYXlvdXRNb2Rlcm4uc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogRGVmYXVsdCBsYXlvdXQgc3R5bGVzXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLnZzLW5hdmJhci52eC1uYXZiYXIge1xcbiAgcGFkZGluZzogLjhyZW0gMXJlbTtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAyNjBweCAtIDQuNHJlbSk7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBib3JkZXItcmFkaXVzOiAuNXJlbTtcXG4gIHRyYW5zaXRpb246IGFsbCAuNXM7XFxuICB6LWluZGV4OiAxMDAwMDtcXG59XFxuXFxuLnZzLW5hdmJhci52eC1uYXZiYXIubmF2YmFyLXJlZHVjZWQge1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDgwcHggLSA0LjRyZW0pO1xcbn1cXG5cXG4udnMtbmF2YmFyLnZ4LW5hdmJhci5uYXZiYXItZnVsbCB7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gNC40cmVtKTtcXG59XFxuXFxuI2NvbnRlbnQtYXJlYSB7XFxuICBtYXJnaW4tbGVmdDogMjYwcHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB0cmFuc2l0aW9uOiBtYXJnaW4tbGVmdCAwLjVzO1xcbn1cXG5cXG4jY29udGVudC1hcmVhIC5jb250ZW50LXdyYXBwZXIge1xcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDMuNXJlbSk7XFxufVxcblxcbiNjb250ZW50LWFyZWEuY29udGVudC1hcmVhLXJlZHVjZWQge1xcbiAgbWFyZ2luLWxlZnQ6IDgwcHg7XFxufVxcblxcbiNjb250ZW50LWFyZWEuY29udGVudC1hcmVhLWZ1bGwge1xcbiAgbWFyZ2luLWxlZnQ6IDBweDtcXG59XFxuXFxuI2NvbnRlbnQtYXJlYSAudngtbmF2YmFyX19zZWFyY2gtaW5wdXQgaW5wdXQge1xcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XFxufVxcblxcbiNjb250ZW50LWFyZWEgLnZ4LW5hdmJhcl9fc2VhcmNoLWlucHV0IGlucHV0OmZvY3VzIHtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxufVxcblxcbi5yb3V0ZXItdmlldyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nOiAyLjJyZW07XFxufVxcblxcbi5yb3V0ZXItdmlldyAucm91dGVyLWNvbnRlbnQge1xcbiAgbWFyZ2luLXRvcDogNS41cmVtO1xcbn1cXG5cXG4ucm91dGVyLXZpZXcgLmNvbnRlbnQtYXJlYV9faGVhZGluZyBoMiB7XFxuICBjb2xvcjogIzYzNjM2MztcXG59XFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IF90aGVOYXZiYXIuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogVGhlIG5hdmJhciBzdHlsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX3ZhcmlhYmxlcy5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBwYXJ0aWFsLSBTQ1NTIHZhcmliYWxlc1xcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFNQQUNJTkdcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIENPTE9SU1xcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgVFlQT0dSQVBIWVxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgVFlQT0dSQVBIWVxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgREFSSyBUSEVNRVxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLnZ4LW5hdmJhci13cmFwcGVyIHtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMjQ4LCAyNDgsIDI0OCwgMC45NSkgNDQlLCByZ2JhKDI0OCwgMjQ4LCAyNDgsIDAuNDYpIDczJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlKTtcXG4gIHBhZGRpbmc6IDIuMnJlbTtcXG4gIHBhZGRpbmctdG9wOiAxLjNyZW07XFxuICBiYWNrZ3JvdW5kLXJlcGVhdC14OiByZXBlYXQ7XFxuICB6LWluZGV4OiA0MTAwMDtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAyNjBweCk7XFxuICBoZWlnaHQ6IDEwM3B4O1xcbiAgYmFja2dyb3VuZC1yZXBlYXQteTogbm8tcmVwZWF0O1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4udngtbmF2YmFyLXdyYXBwZXIgLnZ4LW5hdmJhciAudnMtY29uLWl0ZW1zIHtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5cXG4udngtbmF2YmFyLXdyYXBwZXIgLnZ4LW5hdmJhciAudnMtY29uLWl0ZW1zIC5zZWFyY2gtZnVsbC1jb250YWluZXIge1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG59XFxuXFxuLnZ4LW5hdmJhci13cmFwcGVyIC52eC1uYXZiYXIgLnZzLWNvbi1pdGVtcyAudngtYXV0by1zdWdnZXN0IHtcXG4gIGNvbG9yOiAjNjI2MjYyO1xcbn1cXG5cXG4uY29udGVudC1hcmVhLXJlZHVjZWQgLnZ4LW5hdmJhci13cmFwcGVyIHtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA4MHB4KTtcXG59XFxuXFxuLmNvbnRlbnQtYXJlYS1yZWR1Y2VkIC52cy1uYXZiYXIudngtbmF2YmFyIHtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA4MHB4IC0gNC40cmVtKTtcXG59XFxuXFxuLnNob3ctb3ZlcmxheSAudngtbmF2YmFyLXdyYXBwZXIge1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSg0NCwgNDgsIDYwLCAwLjkpIDQ0JSwgcmdiYSg0NCwgNDgsIDYwLCAwLjQzKSA3MyUsIHJnYmEoNDQsIDQ4LCA2MCwgMCkgMTAwJSk7XFxufVxcblxcbi5uYXZiYXItc3RpY2t5IC52eC1uYXZiYXItd3JhcHBlciB7XFxuICBwYWRkaW5nOiAwO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG59XFxuXFxuLm5hdmJhci1zdGlja3kgLnZ4LW5hdmJhci13cmFwcGVyIC52eC1uYXZiYXIge1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDI2MHB4KTtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICBwYWRkaW5nOiAuOHJlbSAyLjJyZW07XFxufVxcblxcbi5uYXZiYXItc3RpY2t5IC52eC1uYXZiYXItd3JhcHBlciAudngtbmF2YmFyIC52eC1hdXRvLXN1Z2dlc3QgLmF1dG8tc3VnZ2VzdC1zdWdnZXN0aW9ucy1saXN0IHtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAycmVtKSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XFxufVxcblxcbi5uYXZiYXItc3RpY2t5IC5jb250ZW50LWFyZWEtcmVkdWNlZCAudngtbmF2YmFyLXdyYXBwZXIgLnZ4LW5hdmJhciB7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gODBweCk7XFxufVxcblxcbi5uYXZiYXItc3RpY2t5IC5yb3V0ZXItdmlldyAucm91dGVyLWNvbnRlbnQge1xcbiAgbWFyZ2luLXRvcDogNC41cmVtO1xcbn1cXG5cXG4ubmF2YmFyLXN0YXRpYyAudngtbmF2YmFyLXdyYXBwZXIge1xcbiAgcGFkZGluZzogMDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IGF1dG87XFxuICB3aWR0aDogMTAwJTtcXG59XFxuXFxuLm5hdmJhci1zdGF0aWMgLnZ4LW5hdmJhci13cmFwcGVyIC52eC1uYXZiYXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgcGFkZGluZzogLjhyZW0gMi4ycmVtO1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcblxcbi5uYXZiYXItc3RhdGljIC52eC1uYXZiYXItd3JhcHBlciAudngtbmF2YmFyIC5zZWFyY2gtZnVsbC1jb250YWluZXIge1xcbiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubmF2YmFyLXN0YXRpYyAudngtbmF2YmFyLXdyYXBwZXIgLnZ4LW5hdmJhciAudngtYXV0by1zdWdnZXN0IC5hdXRvLXN1Z2dlc3Qtc3VnZ2VzdGlvbnMtbGlzdCB7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gMnJlbSkgIWltcG9ydGFudDtcXG4gIG1hcmdpbi1sZWZ0OiAxcmVtO1xcbn1cXG5cXG4ubmF2YmFyLXN0YXRpYyAucm91dGVyLXZpZXcge1xcbiAgcGFkZGluZy10b3A6IDFyZW07XFxufVxcblxcbi5uYXZiYXItc3RhdGljIC5yb3V0ZXItdmlldyAucm91dGVyLWNvbnRlbnQge1xcbiAgbWFyZ2luLXRvcDogMDtcXG59XFxuXFxuLm5hdmJhci1oaWRkZW4gLnZ4LW5hdmJhci13cmFwcGVyIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbi5zZWFyY2gtZnVsbC1jb250YWluZXIge1xcbiAgei1pbmRleDogNTAwMDA7XFxufVxcblxcbi5zZWFyY2gtZnVsbC1jb250YWluZXIgLnZ4LWF1dG8tc3VnZ2VzdCA+IGRpdiB7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5zZWFyY2gtZnVsbC1jb250YWluZXIgLnZ4LWF1dG8tc3VnZ2VzdCBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl0sXFxuICAuc2VhcmNoLWZ1bGwtY29udGFpbmVyIC52eC1hdXRvLXN1Z2dlc3QgLmlucHV0LXNwYW4tcGxhY2Vob2xkZXIge1xcbiAgcGFkZGluZzogMS4yNXJlbSAzcmVtO1xcbn1cXG5cXG4uc2VhcmNoLWZ1bGwtY29udGFpbmVyIC52eC1hdXRvLXN1Z2dlc3QgLnZzLWlucHV0LS1pY29uLmZlYXRoZXIge1xcbiAgdG9wOiAzNCU7XFxuICBsZWZ0OiAwLjhyZW07XFxufVxcblxcbi5zZWFyY2gtZnVsbC1jb250YWluZXIgPiBkaXYuZmVhdGhlci1pY29uIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYm9va21hcmstZHJvcGRvd24ge1xcbiAgei1pbmRleDogNDEwMDE7XFxufVxcblxcbi5uYXZiYXItY3VzdG9tIC52cy1uYXZiYXItLWJ0bi1yZXNwb25zaXZlIHtcXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLm5hdmJhci1jdXN0b20gLnZzLXNwYWNlciB7XFxuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubmF2YmFyLWN1c3RvbSAudnMtY29uLWl0ZW1zIHtcXG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5cXG5AbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XFxuICAudngtbmF2YmFyLXdyYXBwZXIge1xcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMS4ycmVtKTtcXG4gIH1cXG5cXG4gIC5uYXZiYXItc3RpY2t5IC52eC1uYXZiYXItd3JhcHBlciAudngtbmF2YmFyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHBhZGRpbmc6IC44cmVtIDIuMnJlbTtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XFxuICAudngtbmF2YmFyLXdyYXBwZXIge1xcbiAgICBwYWRkaW5nOiAxLjJyZW07XFxuICB9XFxuXFxuICAudngtbmF2YmFyLXdyYXBwZXIgLnZ4LW5hdmJhci5uYXZiYXItZnVsbCB7XFxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyLjRyZW0pO1xcbiAgfVxcblxcbiAgLm5hdmJhci1zdGlja3kgLnZ4LW5hdmJhci13cmFwcGVyIHtcXG4gICAgcGFkZGluZzogMDtcXG4gIH1cXG5cXG4gIC5uYXZiYXItc3RpY2t5IC52eC1uYXZiYXItd3JhcHBlciAudngtbmF2YmFyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHBhZGRpbmc6IC44cmVtIDEuNXJlbTtcXG4gIH1cXG5cXG4gIC5uYXZiYXItc3RhdGljIC52eC1uYXZiYXItd3JhcHBlciAudngtbmF2YmFyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHBhZGRpbmc6IC44cmVtIDEuNXJlbTtcXG4gIH1cXG5cXG4gIC5uYXZiYXItc3RhdGljIC5yb3V0ZXItdmlldyAucm91dGVyLWNvbnRlbnQge1xcbiAgICBtYXJnaW4tdG9wOiAwO1xcbiAgfVxcbn1cXG5cXG4uc3RhcnJlZC1wYWdlOmhvdmVyLFxcbi5zdGFycmVkLXBhZ2UtLW1vcmU6aG92ZXIge1xcbiAgY29sb3I6IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpO1xcbn1cXG5cXG4uaTE4bi1kcm9wZG93biAudnMtZHJvcGRvd24tLWl0ZW0tbGluayB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuXFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzY0cHgpIHtcXG4gIC5pMThuLWRyb3Bkb3duIHtcXG4gICAgd2lkdGg6IDk1dnc7XFxuICAgIGxlZnQ6IDkwdncgIWltcG9ydGFudDtcXG4gIH1cXG5cXG4gIC5pMThuLWRyb3Bkb3duIC52cy1kcm9wZG93bi0tbWVudS0tYWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcbn1cXG5cXG4uY2FydC1kcm9wZG93biB7XFxuICB3aWR0aDogMzY1cHg7XFxufVxcblxcbi5jYXJ0LWRyb3Bkb3duIC5jYXJ0LWRyb3Bkb3duLWl0ZW0taW1nIHtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIG1heC1oZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogYXV0bztcXG4gIHRyYW5zaXRpb246IC4zNXM7XFxufVxcblxcbi5ub3RpZmljYXRpb24tZHJvcGRvd24sXFxuLmNhcnQtZHJvcGRvd24ge1xcbiAgd2lkdGg6IDM2NXB4O1xcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1MDBweCkge1xcbiAgLm5vdGlmaWNhdGlvbi1kcm9wZG93bixcXG4gICAgLmNhcnQtZHJvcGRvd24ge1xcbiAgICB3aWR0aDogOTV2dztcXG4gICAgbGVmdDogOTcuNXZ3ICFpbXBvcnRhbnQ7XFxuICB9XFxuXFxuICAubm90aWZpY2F0aW9uLWRyb3Bkb3duIC52cy1kcm9wZG93bi0tbWVudS0tYWZ0ZXIsXFxuICAgICAgLmNhcnQtZHJvcGRvd24gLnZzLWRyb3Bkb3duLS1tZW51LS1hZnRlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxufVxcblxcbi5ub3RpZmljYXRpb24tZHJvcGRvd24gLm5vdGlmaWNhdGlvbjpob3ZlcixcXG4gIC5jYXJ0LWRyb3Bkb3duIC5ub3RpZmljYXRpb246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcXG59XFxuXFxuLm5vdGlmaWNhdGlvbi1kcm9wZG93biAuY2hlY2tvdXQtZm9vdGVyLFxcbiAgLm5vdGlmaWNhdGlvbi1kcm9wZG93biAubm90aWZpY2F0aW9uLWZvb3RlcixcXG4gIC5jYXJ0LWRyb3Bkb3duIC5jaGVja291dC1mb290ZXIsXFxuICAuY2FydC1kcm9wZG93biAubm90aWZpY2F0aW9uLWZvb3RlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4O1xcbn1cXG5cXG4uc2Nyb2xsLWFyZWEtLW5vZmljYXRpb25zLWRyb3Bkb3duLFxcbi5zY3JvbGwtYXJlYS0tY2FydC1pdGVtcy1kcm9wZG93bSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBtYXJnaW46IGF1dG87XFxuICB3aWR0aDogMTAwJTtcXG4gIG1heC1oZWlnaHQ6IDI1cmVtO1xcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LWhlaWdodDogMzM0cHgpIHtcXG4gIC52eC1uYXZiYXItZHJvcGRvd24ge1xcbiAgICB0b3A6IGNhbGMoMTAwdmggLSA4Mi41dmgpICFpbXBvcnRhbnQ7XFxuICB9XFxuXFxuICAudngtbmF2YmFyLWRyb3Bkb3duIC52cy1kcm9wZG93bi0tbWVudS0tYWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX2Zvb3Rlci5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBGb290ZXIgc3R5bGVzXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLmZvb3Rlci1zdGlja3kgLnRoZS1mb290ZXIge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIGJvdHRvbTogMDtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAyNjBweCk7XFxuICBib3gtc2hhZG93OiAwIDRweCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG4gIHotaW5kZXg6IDQwMDAwO1xcbn1cXG5cXG4uZm9vdGVyLXN0aWNreSAuY29udGVudC1hcmVhLXJlZHVjZWQgLnRoZS1mb290ZXIge1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDgwcHgpO1xcbn1cXG5cXG4uZm9vdGVyLXN0aWNreSAuY29udGVudC1hcmVhLWZ1bGwgLnRoZS1mb290ZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcblxcbi5mb290ZXItc3RpY2t5IC5yb3V0ZXItdmlldyB7XFxuICBwYWRkaW5nLWJvdHRvbTogNXJlbTtcXG59XFxuXFxuLmZvb3Rlci1oaWRkZW4gLnRoZS1mb290ZXIge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLnRoZS1mb290ZXIge1xcbiAgcGFkZGluZzogMXJlbSAyLjJyZW07XFxufVxcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBfdHlwb2dyYXBoeS5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBwYXJ0aWFsLSB0eXBvZ3JhcGh5IHN0eWxlc1xcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDEwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBUaGluIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLVRoaW5JdGFsaWNcXFwiKSwgdXJsKFwiICsgZXNjYXBlKHJlcXVpcmUoXCIuLi9mb250cy9Sb2JvdG8tVGhpbkl0YWxpYy50dGZcIikpICsgXCIpIGZvcm1hdChcXFwidHRmXFxcIik7XFxufVxcblxcbi8qIGN5cmlsbGljICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogMTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIFRoaW4gSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tVGhpbkl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPaUNucUV1OTJGcjFNdTUxUXJFelFkTC12d25ZaDJlZy53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcbn1cXG5cXG4vKiBncmVlay1leHQgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiAxMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gVGhpbiBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1UaGluSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9pQ25xRXU5MkZyMU11NTFRckV6d2RMLXZ3blloMmVnLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjtcXG59XFxuXFxuLyogZ3JlZWsgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiAxMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gVGhpbiBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1UaGluSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9pQ25xRXU5MkZyMU11NTFRckV6TWRMLXZ3blloMmVnLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcXG59XFxuXFxuLyogdmlldG5hbWVzZSAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDEwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBUaGluIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLVRoaW5JdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2lDbnFFdTkyRnIxTXU1MVFyRXo4ZEwtdnduWWgyZWcud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcXG59XFxuXFxuLyogbGF0aW4tZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogMTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIFRoaW4gSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tVGhpbkl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPaUNucUV1OTJGcjFNdTUxUXJFejRkTC12d25ZaDJlZy53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcXG59XFxuXFxuLyogbGF0aW4gKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiAxMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gVGhpbiBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1UaGluSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9pQ25xRXU5MkZyMU11NTFRckV6QWRMLXZ3bllnLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xcbn1cXG5cXG4vKiBjeXJpbGxpYy1leHQgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTGlnaHQgSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTGlnaHRJdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVRqQVNjM0NzVFlsNEJPUTNvLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjtcXG59XFxuXFxuLyogY3lyaWxsaWMgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTGlnaHQgSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTGlnaHRJdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVRqQVNjLUNzVFlsNEJPUTNvLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XFxufVxcblxcbi8qIGdyZWVrLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBMaWdodCBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1MaWdodEl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVGpBU2MyQ3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xcbn1cXG5cXG4vKiBncmVlayAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBMaWdodCBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1MaWdodEl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVGpBU2M1Q3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xcbn1cXG5cXG4vKiB2aWV0bmFtZXNlICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogMzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIExpZ2h0IEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUxpZ2h0SXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUakFTYzFDc1RZbDRCT1Ezby53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xcbn1cXG5cXG4vKiBsYXRpbi1leHQgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTGlnaHQgSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTGlnaHRJdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVRqQVNjMENzVFlsNEJPUTNvLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xcbn1cXG5cXG4vKiBsYXRpbiAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBMaWdodCBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1MaWdodEl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVGpBU2M2Q3NUWWw0Qk8ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XFxufVxcblxcbi8qIGN5cmlsbGljLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1JdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2tDbnFFdTkyRnIxTXU1MXhGSXpJWEtNbnlyWWsud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xcbn1cXG5cXG4vKiBjeXJpbGxpYyAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1JdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2tDbnFFdTkyRnIxTXU1MXhNSXpJWEtNbnlyWWsud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcXG59XFxuXFxuLyogZ3JlZWstZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNDAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNdTUxeEVJeklYS01ueXJZay53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XFxufVxcblxcbi8qIGdyZWVrICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNDAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNdTUxeExJeklYS01ueXJZay53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XFxufVxcblxcbi8qIHZpZXRuYW1lc2UgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU11NTF4SEl6SVhLTW55cllrLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XFxufVxcblxcbi8qIGxhdGluLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1JdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2tDbnFFdTkyRnIxTXU1MXhHSXpJWEtNbnlyWWsud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XFxufVxcblxcbi8qIGxhdGluICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNDAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNdTUxeElJeklYS01ueS53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcXG59XFxuXFxuLyogY3lyaWxsaWMtZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIE1lZGl1bSBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1NZWRpdW1JdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVM3QUNjM0NzVFlsNEJPUTNvLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjtcXG59XFxuXFxuLyogY3lyaWxsaWMgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTWVkaXVtIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLU1lZGl1bUl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxUzdBQ2MtQ3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcXG59XFxuXFxuLyogZ3JlZWstZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIE1lZGl1bSBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1NZWRpdW1JdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVM3QUNjMkNzVFlsNEJPUTNvLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjtcXG59XFxuXFxuLyogZ3JlZWsgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTWVkaXVtIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLU1lZGl1bUl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxUzdBQ2M1Q3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xcbn1cXG5cXG4vKiB2aWV0bmFtZXNlICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIE1lZGl1bSBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1NZWRpdW1JdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVM3QUNjMUNzVFlsNEJPUTNvLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XFxufVxcblxcbi8qIGxhdGluLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBNZWRpdW0gSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTWVkaXVtSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFTN0FDYzBDc1RZbDRCT1Ezby53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcXG59XFxuXFxuLyogbGF0aW4gKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTWVkaXVtIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLU1lZGl1bUl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxUzdBQ2M2Q3NUWWw0Qk8ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XFxufVxcblxcbi8qIGN5cmlsbGljLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCb2xkIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUJvbGRJdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVR6QmljM0NzVFlsNEJPUTNvLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjtcXG59XFxuXFxuLyogY3lyaWxsaWMgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gQm9sZCBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1Cb2xkSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUekJpYy1Dc1RZbDRCT1Ezby53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xcbn1cXG5cXG4vKiBncmVlay1leHQgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gQm9sZCBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1Cb2xkSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUekJpYzJDc1RZbDRCT1Ezby53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XFxufVxcblxcbi8qIGdyZWVrICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJvbGQgSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQm9sZEl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVHpCaWM1Q3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xcbn1cXG5cXG4vKiB2aWV0bmFtZXNlICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJvbGQgSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQm9sZEl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVHpCaWMxQ3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcXG59XFxuXFxuLyogbGF0aW4tZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJvbGQgSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQm9sZEl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVHpCaWMwQ3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XFxufVxcblxcbi8qIGxhdGluICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogNzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJvbGQgSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQm9sZEl0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVHpCaWM2Q3NUWWw0Qk8ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XFxufVxcblxcbi8qIGN5cmlsbGljLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDkwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCbGFjayBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1CbGFja0l0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVExCQ2MzQ3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xcbn1cXG5cXG4vKiBjeXJpbGxpYyAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDkwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCbGFjayBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1CbGFja0l0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVExCQ2MtQ3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcXG59XFxuXFxuLyogZ3JlZWstZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogOTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJsYWNrIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUJsYWNrSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUTEJDYzJDc1RZbDRCT1Ezby53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XFxufVxcblxcbi8qIGdyZWVrICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogOTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJsYWNrIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUJsYWNrSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUTEJDYzVDc1RZbDRCT1Ezby53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XFxufVxcblxcbi8qIHZpZXRuYW1lc2UgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG5cXG4gIGZvbnQtd2VpZ2h0OiA5MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gQmxhY2sgSXRhbGljXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQmxhY2tJdGFsaWNcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVRMQkNjMUNzVFlsNEJPUTNvLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XFxufVxcblxcbi8qIGxhdGluLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcblxcbiAgZm9udC13ZWlnaHQ6IDkwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCbGFjayBJdGFsaWNcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1CbGFja0l0YWxpY1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVExCQ2MwQ3NUWWw0Qk9RM28ud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XFxufVxcblxcbi8qIGxhdGluICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuXFxuICBmb250LXdlaWdodDogOTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJsYWNrIEl0YWxpY1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUJsYWNrSXRhbGljXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUTEJDYzZDc1RZbDRCTy53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcXG59XFxuXFxuLyogY3lyaWxsaWMtZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogMTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIFRoaW5cXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1UaGluXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU1tZ1Z4Rkl6SVhLTW55cllrLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjtcXG59XFxuXFxuLyogY3lyaWxsaWMgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiAxMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gVGhpblxcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLVRoaW5cXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2tDbnFFdTkyRnIxTW1nVnhNSXpJWEtNbnlyWWsud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcXG59XFxuXFxuLyogZ3JlZWstZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogMTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIFRoaW5cXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1UaGluXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU1tZ1Z4RUl6SVhLTW55cllrLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjtcXG59XFxuXFxuLyogZ3JlZWsgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiAxMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gVGhpblxcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLVRoaW5cXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2tDbnFFdTkyRnIxTW1nVnhMSXpJWEtNbnlyWWsud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xcbn1cXG5cXG4vKiB2aWV0bmFtZXNlICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogMTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIFRoaW5cXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1UaGluXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU1tZ1Z4SEl6SVhLTW55cllrLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XFxufVxcblxcbi8qIGxhdGluLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDEwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBUaGluXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tVGhpblxcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNbWdWeEdJeklYS01ueXJZay53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcXG59XFxuXFxuLyogbGF0aW4gKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiAxMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gVGhpblxcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLVRoaW5cXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2tDbnFFdTkyRnIxTW1nVnhJSXpJWEtNbnkud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XFxufVxcblxcbi8qIGN5cmlsbGljLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBMaWdodFxcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUxpZ2h0XFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tU1U1ZkNSYzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XFxufVxcblxcbi8qIGN5cmlsbGljICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogMzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIExpZ2h0XFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTGlnaHRcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1TVTVmQUJjNEFNUDZsYkJQLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XFxufVxcblxcbi8qIGdyZWVrLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBMaWdodFxcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUxpZ2h0XFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tU1U1ZkNCYzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XFxufVxcblxcbi8qIGdyZWVrICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogMzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIExpZ2h0XFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTGlnaHRcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1TVTVmQnhjNEFNUDZsYkJQLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcXG59XFxuXFxuLyogdmlldG5hbWVzZSAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBMaWdodFxcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUxpZ2h0XFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tU1U1ZkN4YzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xcbn1cXG5cXG4vKiBsYXRpbi1leHQgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTGlnaHRcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1MaWdodFxcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVNVNWZDaGM0QU1QNmxiQlAud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XFxufVxcblxcbi8qIGxhdGluICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogMzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIExpZ2h0XFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTGlnaHRcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1TVTVmQkJjNEFNUDZsUS53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcXG59XFxuXFxuLyogY3lyaWxsaWMtZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogNDAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tUmVndWxhclxcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbUNucUV1OTJGcjFNdTcyeEtLVFUxS3Zuei53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XFxufVxcblxcbi8qIGN5cmlsbGljICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogNDAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tUmVndWxhclxcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbUNucUV1OTJGcjFNdTVteEtLVFUxS3Zuei53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xcbn1cXG5cXG4vKiBncmVlay1leHQgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG9cXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1SZWd1bGFyXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9tQ25xRXU5MkZyMU11N214S0tUVTFLdm56LndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjtcXG59XFxuXFxuLyogZ3JlZWsgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG9cXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1SZWd1bGFyXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9tQ25xRXU5MkZyMU11NFd4S0tUVTFLdm56LndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcXG59XFxuXFxuLyogdmlldG5hbWVzZSAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90b1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLVJlZ3VsYXJcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT21DbnFFdTkyRnIxTXU3V3hLS1RVMUt2bnoud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcXG59XFxuXFxuLyogbGF0aW4tZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogNDAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tUmVndWxhclxcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbUNucUV1OTJGcjFNdTdHeEtLVFUxS3Zuei53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcXG59XFxuXFxuLyogbGF0aW4gKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG9cXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1SZWd1bGFyXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9tQ25xRXU5MkZyMU11NG14S0tUVTFLZy53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcXG59XFxuXFxuLyogY3lyaWxsaWMtZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIE1lZGl1bVxcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLU1lZGl1bVxcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbUVVOWZDUmM0QU1QNmxiQlAud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xcbn1cXG5cXG4vKiBjeXJpbGxpYyAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBNZWRpdW1cXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1NZWRpdW1cXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1FVTlmQUJjNEFNUDZsYkJQLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XFxufVxcblxcbi8qIGdyZWVrLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBNZWRpdW1cXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1NZWRpdW1cXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1FVTlmQ0JjNEFNUDZsYkJQLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjtcXG59XFxuXFxuLyogZ3JlZWsgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTWVkaXVtXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTWVkaXVtXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tRVU5ZkJ4YzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XFxufVxcblxcbi8qIHZpZXRuYW1lc2UgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTWVkaXVtXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTWVkaXVtXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tRVU5ZkN4YzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xcbn1cXG5cXG4vKiBsYXRpbi1leHQgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTWVkaXVtXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTWVkaXVtXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tRVU5ZkNoYzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcXG59XFxuXFxuLyogbGF0aW4gKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gTWVkaXVtXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tTWVkaXVtXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tRVU5ZkJCYzRBTVA2bFEud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XFxufVxcblxcbi8qIGN5cmlsbGljLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCb2xkXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQm9sZFxcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVdVbGZDUmM0QU1QNmxiQlAud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xcbn1cXG5cXG4vKiBjeXJpbGxpYyAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCb2xkXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQm9sZFxcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVdVbGZBQmM0QU1QNmxiQlAud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcXG59XFxuXFxuLyogZ3JlZWstZXh0ICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogNzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJvbGRcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1Cb2xkXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tV1VsZkNCYzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XFxufVxcblxcbi8qIGdyZWVrICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogNzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJvbGRcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1Cb2xkXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tV1VsZkJ4YzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XFxufVxcblxcbi8qIHZpZXRuYW1lc2UgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gQm9sZFxcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUJvbGRcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1XVWxmQ3hjNEFNUDZsYkJQLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XFxufVxcblxcbi8qIGxhdGluLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCb2xkXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQm9sZFxcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVdVbGZDaGM0QU1QNmxiQlAud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XFxufVxcblxcbi8qIGxhdGluICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogNzAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJvbGRcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1Cb2xkXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tV1VsZkJCYzRBTVA2bFEud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XFxufVxcblxcbi8qIGN5cmlsbGljLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDkwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCbGFja1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUJsYWNrXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tWVV0ZkNSYzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XFxufVxcblxcbi8qIGN5cmlsbGljICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogOTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJsYWNrXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQmxhY2tcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1ZVXRmQUJjNEFNUDZsYkJQLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XFxufVxcblxcbi8qIGdyZWVrLWV4dCAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDkwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCbGFja1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUJsYWNrXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tWVV0ZkNCYzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XFxufVxcblxcbi8qIGdyZWVrICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogOTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJsYWNrXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQmxhY2tcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1ZVXRmQnhjNEFNUDZsYkJQLndvZmYyKSBmb3JtYXQoXFxcIndvZmYyXFxcIik7XFxuXFxuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcXG59XFxuXFxuLyogdmlldG5hbWVzZSAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDkwMDtcXG5cXG4gIHNyYzogbG9jYWwoXFxcIlJvYm90byBCbGFja1xcXCIpLCBsb2NhbChcXFwiLi4vZm9udHMvUm9ib3RvLUJsYWNrXFxcIiksIHVybChodHRwczovLy4uL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tWVV0ZkN4YzRBTVA2bGJCUC53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xcbn1cXG5cXG4vKiBsYXRpbi1leHQgKi9cXG5cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcXG5cXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG5cXG4gIGZvbnQtd2VpZ2h0OiA5MDA7XFxuXFxuICBzcmM6IGxvY2FsKFxcXCJSb2JvdG8gQmxhY2tcXFwiKSwgbG9jYWwoXFxcIi4uL2ZvbnRzL1JvYm90by1CbGFja1xcXCIpLCB1cmwoaHR0cHM6Ly8uLi9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVlVdGZDaGM0QU1QNmxiQlAud29mZjIpIGZvcm1hdChcXFwid29mZjJcXFwiKTtcXG5cXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XFxufVxcblxcbi8qIGxhdGluICovXFxuXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogJ1JvYm90byc7XFxuXFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuXFxuICBmb250LXdlaWdodDogOTAwO1xcblxcbiAgc3JjOiBsb2NhbChcXFwiUm9ib3RvIEJsYWNrXFxcIiksIGxvY2FsKFxcXCIuLi9mb250cy9Sb2JvdG8tQmxhY2tcXFwiKSwgdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1ZVXRmQkJjNEFNUDZsUS53b2ZmMikgZm9ybWF0KFxcXCJ3b2ZmMlxcXCIpO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcXG59XFxuXFxuLyogc2FtcGxlZCB1c2FnZSAqL1xcblxcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xcblxcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcblxcbiAgZm9udC13ZWlnaHQ6IDkwMDtcXG5cXG4gIHNyYzogdXJsKGh0dHBzOi8vLi4vZm9udHMuZ3N0YXRpYy5jb20vc3RhdHMvUm9ib3RvL25vcm1hbC85MDApO1xcblxcbiAgdW5pY29kZS1yYW5nZTogVSsyMDtcXG59XFxuXFxuYm9keSB7XFxuICBjb2xvcjogIzYyNjI2MjtcXG59XFxuXFxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XFxuICBjb2xvcjogIzJjMmMyYztcXG59XFxuXFxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcXG4uaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI7XFxuICBjb2xvcjogIzJjMmMyYztcXG59XFxuXFxuaDEsIC5oMSB7XFxuICBmb250LXNpemU6IDI4cHg7XFxufVxcblxcbmgyLCAuaDIge1xcbiAgZm9udC1zaXplOiAyNC4zNnB4O1xcbn1cXG5cXG5oMywgLmgzIHtcXG4gIGZvbnQtc2l6ZTogMjEuMTRweDtcXG59XFxuXFxuaDQsIC5oNCB7XFxuICBmb250LXNpemU6IDE4LjQ4cHg7XFxufVxcblxcbmg1LCAuaDUge1xcbiAgZm9udC1zaXplOiAxNS45NnB4O1xcbn1cXG5cXG5oNiwgLmg2IHtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG59XFxuXFxuLnZzLXRvb2x0aXAgaDQge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbmE6YWN0aXZlLFxcbmE6dmlzaXRlZCxcXG5hOmhvdmVyLFxcbmEge1xcbiAgY29sb3I6IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpO1xcbn1cXG5cXG51IHtcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX21pc2Muc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gbWlzYyBzdHlsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG5jb2RlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUm9ib3RvXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIGJhY2tncm91bmQ6ICNlZWU7XFxuICBwYWRkaW5nOiAwLjFyZW0gLjNyZW07XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxufVxcblxcbnVsLCBvbCB7XFxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4uYmctaW1nIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiArIGVzY2FwZShyZXF1aXJlKFwiLi4vaW1hZ2VzL3BhZ2VzL3Z1ZXNheC1sb2dpbi1iZy5qcGdcIikpICsgXCIpO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XFxufVxcblxcbi5mdWxsLXBhZ2UtYmctY29sb3Ige1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmZjJmNztcXG59XFxuXFxuLmNvdW50LWRvd24ge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG5cXG4uc2luZ2xlLWNvdW50ZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwNXB4O1xcbiAgcGFkZGluZzogMThweCAxMHB4IDEwcHg7XFxufVxcblxcbi5zaW5nbGUtY291bnRlciBzcGFuIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG5cXG4uc2luZ2xlLWNvdW50ZXIgLnRpbWVyIHtcXG4gIGZvbnQtc2l6ZTogM3JlbTtcXG59XFxuXFxuLmFjdGl2aXR5LXRpbWVsaW5lIHtcXG4gIG1hcmdpbi1sZWZ0OiAxLjVyZW07XFxuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XFxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNFNUU4RUI7XFxufVxcblxcbi5hY3Rpdml0eS10aW1lbGluZSBsaSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xcbn1cXG5cXG4uYWN0aXZpdHktdGltZWxpbmUgbGkgLnRpbWVsaW5lLWljb24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogLTQuM3JlbTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIHBhZGRpbmc6IC43NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjRyZW07XFxufVxcblxcbi5hY3Rpdml0eS10aW1lbGluZSBsaSAuYWN0aXZpdHktZGVzYyB7XFxuICBmb250LXNpemU6IC45cmVtO1xcbn1cXG5cXG4uYWN0aXZpdHktdGltZWxpbmUgbGkgLmFjdGl2aXR5LWUtdGltZSB7XFxuICBmb250LXNpemU6IC44cmVtO1xcbn1cXG5cXG4uY2hhdC1jYXJkLWxvZyB7XFxuICBoZWlnaHQ6IDI0MHB4O1xcbn1cXG5cXG4udmpzLXBvc3RlciB7XFxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyICFpbXBvcnRhbnQ7XFxuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc3Bpbm5lciB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogc3BpbiAxLjVzIGxpbmVhciBpbmZpbml0ZTtcXG4gICAgICAgICAgYW5pbWF0aW9uOiBzcGluIDEuNXMgbGluZWFyIGluZmluaXRlO1xcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuXFxuICB0byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuXFxuICB0byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBfZXh0cmFDb21wb25lbnRzLnNjc3NcXG4gICAgRGVzY3JpcHRpb246IHBhcnRpYWwgLSBpbXBvcnRzIGV4dHJhIGNvbXBvbmVudHMgc3R5bGVzXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IF9mb3JtV2l6YXJkLnNjc3NcXG4gICAgRGVzY3JpcHRpb246IFN0eWxlcyBmb3IgZm9ybSB3aXphcmQgZXh0ZXJuc2lvbi5cXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4udnVlLWZvcm0td2l6YXJkLm1kIC53aXphcmQtbmF2aWdhdGlvbiAud2l6YXJkLXByb2dyZXNzLXdpdGgtY2lyY2xlIHtcXG4gIHRvcDogMzNweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udnVlLWZvcm0td2l6YXJkLm1kIC53aXphcmQtbmF2aWdhdGlvbiAud2l6YXJkLW5hdiAud2l6YXJkLWljb24tY2lyY2xlIHtcXG4gIGJvcmRlcjogM3B4IHNvbGlkICNjY2NjY2M7XFxuICB3aWR0aDogNTVweDtcXG4gIGhlaWdodDogNTVweDtcXG59XFxuXFxuLnZ1ZS1mb3JtLXdpemFyZC5tZCAud2l6YXJkLW5hdmlnYXRpb24gLndpemFyZC1uYXYgLndpemFyZC1pY29uLWNpcmNsZSAud2l6YXJkLWljb24ge1xcbiAgZm9udC1zaXplOiAxLjVyZW07XFxufVxcblxcbi52dWUtZm9ybS13aXphcmQubWQgLndpemFyZC1uYXZpZ2F0aW9uIC53aXphcmQtbmF2IC5zdGVwVGl0bGUge1xcbiAgY29sb3I6ICM2MjYyNjI7XFxufVxcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBfdnVlU2VsZWN0LnNjc3NcXG4gICAgRGVzY3JpcHRpb246IHZ1ZS1zZWxlY3QgY29tcG9uZW50IHN0eWxlLlxcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBfdmFyaWFibGVzLnNjc3NcXG4gICAgRGVzY3JpcHRpb246IHBhcnRpYWwtIFNDU1MgdmFyaWJhbGVzXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgU1BBQ0lOR1xcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgQ09MT1JTXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBUWVBPR1JBUEhZXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBUWVBPR1JBUEhZXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBEQVJLIFRIRU1FXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4udi1zZWxlY3QgLnZzX19kcm9wZG93bi10b2dnbGUgLnZzX19zZWFyY2gge1xcbiAgY29sb3I6ICM2MjYyNjI7XFxufVxcblxcbi52LXNlbGVjdCAudnNfX2Ryb3Bkb3duLXRvZ2dsZSAudnNfX2Rlc2VsZWN0IHN2ZyB7XFxuICBzdHJva2U6ICM2MjYyNjI7XFxuICBvcGFjaXR5OiAwLjU7XFxufVxcblxcbi52LXNlbGVjdCAudnNfX2Ryb3Bkb3duLW1lbnUgLnZzX19kcm9wZG93bi1vcHRpb24tLWhpZ2hsaWdodCB7XFxuICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udi1zZWxlY3QgLnZzX19kcm9wZG93bi1tZW51IC52c19fZHJvcGRvd24tb3B0aW9uIHtcXG4gIGNvbG9yOiAjNjI2MjYyO1xcbn1cXG5cXG4udi1zZWxlY3QgLnZzX19zZWxlY3RlZCB7XFxuICBjb2xvcjogIzYyNjI2MjtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnYtc2VsZWN0IC52c19fZHJvcGRvd24tdG9nZ2xlIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52LXNlbGVjdCAudnNfX2Ryb3Bkb3duLXRvZ2dsZSAudnNfX2NsZWFyIHN2ZyB7XFxuICBzdHJva2U6ICNiOGMyY2M7XFxufVxcblxcbi50aGVtZS1kYXJrIC52LXNlbGVjdCAudnNfX2Ryb3Bkb3duLXRvZ2dsZSAudnNfX2Rlc2VsZWN0IHN2ZyB7XFxuICBzdHJva2U6ICNiOGMyY2M7XFxuICBvcGFjaXR5OiAwLjc7XFxufVxcblxcbi50aGVtZS1kYXJrIC52LXNlbGVjdDpub3QoLnZzLS1zaW5nbGUpIC52c19fc2VsZWN0ZWQge1xcbiAgYmFja2dyb3VuZDogIzEwMTYzYTtcXG4gIGJvcmRlcjogbm9uZTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnYtc2VsZWN0IC52c19fc2VsZWN0ZWQge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi50aGVtZS1kYXJrIC52LXNlbGVjdCAudnNfX29wZW4taW5kaWNhdG9yIHtcXG4gIGZpbGw6ICNiOGMyY2M7XFxufVxcblxcbi50aGVtZS1kYXJrIC52LXNlbGVjdCAudnNfX2Ryb3Bkb3duLW1lbnUge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnYtc2VsZWN0IC52c19fZHJvcGRvd24tbWVudSAudnNfX2Ryb3Bkb3duLW9wdGlvbiB7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuXFxuLnYtc2VsZWN0IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbn1cXG5cXG4udi1zZWxlY3QsXFxuLnYtc2VsZWN0ICoge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuXFxuLyogS2V5RnJhbWVzICovXFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHZTZWxlY3RTcGlubmVyIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuXFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyB2U2VsZWN0U3Bpbm5lciB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcblxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbi8qIERyb3Bkb3duIERlZmF1bHQgVHJhbnNpdGlvbiAqL1xcblxcbi52c19fZmFkZS1lbnRlci1hY3RpdmUsXFxuLnZzX19mYWRlLWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGN1YmljLWJlemllcigxLCAwLjUsIDAuOCwgMSk7XFxufVxcblxcbi52c19fZmFkZS1lbnRlcixcXG4udnNfX2ZhZGUtbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuXFxuLyoqIENvbXBvbmVudCBTdGF0ZXMgKi9cXG5cXG4vKlxcbiAqIERpc2FibGVkXFxuICpcXG4gKiBXaGVuIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQsIGFsbCBpbnRlcmFjdGlvblxcbiAqIHNob3VsZCBiZSBwcmV2ZW50ZWQuIEhlcmUgd2UgbW9kaWZ5IHRoZSBiZyBjb2xvcixcXG4gKiBhbmQgY2hhbmdlIHRoZSBjdXJzb3IgZGlzcGxheWVkIG9uIHRoZSBpbnRlcmFjdGl2ZVxcbiAqIGNvbXBvbmVudHMuXFxuICovXFxuXFxuLnZzLS1kaXNhYmxlZCAudnNfX2Ryb3Bkb3duLXRvZ2dsZSxcXG4udnMtLWRpc2FibGVkIC52c19fY2xlYXIsXFxuLnZzLS1kaXNhYmxlZCAudnNfX3NlYXJjaCxcXG4udnMtLWRpc2FibGVkIC52c19fc2VsZWN0ZWQsXFxuLnZzLS1kaXNhYmxlZCAudnNfX29wZW4taW5kaWNhdG9yIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4O1xcbn1cXG5cXG4vKlxcbiAqICBSVEwgLSBSaWdodCB0byBMZWZ0IFN1cHBvcnRcXG4gKlxcbiAqICBCZWNhdXNlIHdlJ3JlIHVzaW5nIGEgZmxleGJveCBsYXlvdXQsIHRoZSBgZGlyPVxcXCJydGxcXFwiYFxcbiAqICBIVE1MIGF0dHJpYnV0ZSBkb2VzIG1vc3Qgb2YgdGhlIHdvcmsgZm9yIHVzIGJ5XFxuICogIHJlYXJyYW5naW5nIHRoZSBjaGlsZCBlbGVtZW50cyB2aXN1YWxseS5cXG4gKi9cXG5cXG4udi1zZWxlY3RbZGlyPVxcXCJydGxcXFwiXSAudnNfX2FjdGlvbnMge1xcbiAgcGFkZGluZzogMCAzcHggMCA2cHg7XFxufVxcblxcbi52LXNlbGVjdFtkaXI9XFxcInJ0bFxcXCJdIC52c19fY2xlYXIge1xcbiAgbWFyZ2luLWxlZnQ6IDZweDtcXG4gIG1hcmdpbi1yaWdodDogMDtcXG59XFxuXFxuLnYtc2VsZWN0W2Rpcj1cXFwicnRsXFxcIl0gLnZzX19kZXNlbGVjdCB7XFxuICBtYXJnaW4tbGVmdDogMDtcXG4gIG1hcmdpbi1yaWdodDogMnB4O1xcbn1cXG5cXG4udi1zZWxlY3RbZGlyPVxcXCJydGxcXFwiXSAudnNfX2Ryb3Bkb3duLW1lbnUge1xcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XFxufVxcblxcbi8qKlxcbiAgICBEcm9wZG93biBUb2dnbGVcXG5cXG4gICAgVGhlIGRyb3Bkb3duIHRvZ2dsZSBpcyB0aGUgcHJpbWFyeSB3cmFwcGVyIG9mIHRoZSBjb21wb25lbnQuIEl0XFxuICAgIGhhcyB0d28gZGlyZWN0IGRlc2NlbmRhbnRzOiAudnNfX3NlbGVjdGVkLW9wdGlvbnMsIGFuZCAudnNfX2FjdGlvbnMuXFxuXFxuICAgIC52c19fc2VsZWN0ZWQtb3B0aW9ucyBob2xkcyB0aGUgLnZzX19zZWxlY3RlZCdzIGFzIHdlbGwgYXMgdGhlXFxuICAgIG1haW4gc2VhcmNoIGlucHV0LlxcblxcbiAgICAudnNfX2FjdGlvbnMgaG9sZHMgdGhlIGNsZWFyIGJ1dHRvbiBhbmQgZHJvcGRvd24gdG9nZ2xlLlxcbiAqL1xcblxcbi52c19fZHJvcGRvd24tdG9nZ2xlIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBwYWRkaW5nOiAwIDAgNHB4IDA7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg2MCwgNjAsIDYwLCAwLjI2KTtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XFxufVxcblxcbi52c19fc2VsZWN0ZWQtb3B0aW9ucyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1iYXNpczogMTAwJTtcXG4gIGZsZXgtZ3JvdzogMTtcXG4gIGZsZXgtd3JhcDogd3JhcDtcXG4gIHBhZGRpbmc6IDAgMnB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG5cXG4udnNfX2FjdGlvbnMge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBwYWRkaW5nOiA0cHggNnB4IDAgM3B4O1xcbn1cXG5cXG4vKiBEcm9wZG93biBUb2dnbGUgU3RhdGVzICovXFxuXFxuLnZzLS1zZWFyY2hhYmxlIC52c19fZHJvcGRvd24tdG9nZ2xlIHtcXG4gIGN1cnNvcjogdGV4dDtcXG59XFxuXFxuLnZzLS11bnNlYXJjaGFibGUgLnZzX19kcm9wZG93bi10b2dnbGUge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4udnMtLW9wZW4gLnZzX19kcm9wZG93bi10b2dnbGUge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XFxufVxcblxcbi52c19fb3Blbi1pbmRpY2F0b3Ige1xcbiAgZmlsbDogcmdiYSg2MCwgNjAsIDYwLCAwLjUpO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxNTBtcyBjdWJpYy1iZXppZXIoMSwgLTAuMTE1LCAwLjk3NSwgMC44NTUpO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigxLCAtMC4xMTUsIDAuOTc1LCAwLjg1NSk7XFxufVxcblxcbi52cy0tb3BlbiAudnNfX29wZW4taW5kaWNhdG9yIHtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykgc2NhbGUoMSk7XFxufVxcblxcbi52cy0tbG9hZGluZyAudnNfX29wZW4taW5kaWNhdG9yIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblxcbi8qIENsZWFyIEJ1dHRvbiAqL1xcblxcbi52c19fY2xlYXIge1xcbiAgZmlsbDogcmdiYSg2MCwgNjAsIDYwLCAwLjUpO1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgbWFyZ2luLXJpZ2h0OiA4cHg7XFxufVxcblxcbi8qIERyb3Bkb3duIE1lbnUgKi9cXG5cXG4udnNfX2Ryb3Bkb3duLW1lbnUge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IGNhbGMoMTAwJSAtIDFweCk7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMTAwMDtcXG4gIHBhZGRpbmc6IDVweCAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXgtaGVpZ2h0OiAzNTBweDtcXG4gIG1pbi13aWR0aDogMTYwcHg7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgYm94LXNoYWRvdzogMHB4IDNweCA2cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDYwLCA2MCwgNjAsIDAuMjYpO1xcbiAgYm9yZGVyLXRvcC1zdHlsZTogbm9uZTtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4O1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbn1cXG5cXG4udnNfX25vLW9wdGlvbnMge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG5cXG4vKiBMaXN0IEl0ZW1zICovXFxuXFxuLnZzX19kcm9wZG93bi1vcHRpb24ge1xcbiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7XFxuICAvKiBOb3JtYWxpemUgbGluZSBoZWlnaHQgKi9cXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcGFkZGluZzogM3B4IDIwcHg7XFxuICBjbGVhcjogYm90aDtcXG4gIGNvbG9yOiAjMzMzO1xcbiAgLyogT3ZlcnJpZGVzIG1vc3QgQ1NTIGZyYW1ld29ya3MgKi9cXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxufVxcblxcbi52c19fZHJvcGRvd24tb3B0aW9uOmhvdmVyIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLnZzX19kcm9wZG93bi1vcHRpb24tLWhpZ2hsaWdodCB7XFxuICBiYWNrZ3JvdW5kOiAjMDBBNTkzO1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi8qIFNlbGVjdGVkIFRhZ3MgKi9cXG5cXG4udnNfX3NlbGVjdGVkIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNjAsIDYwLCA2MCwgMC4yNik7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBjb2xvcjogIzMzMztcXG4gIGxpbmUtaGVpZ2h0OiAxLjg7XFxuICBtYXJnaW46IDRweCAycHggMHB4IDJweDtcXG4gIHBhZGRpbmc6IDAgMC4yNWVtO1xcbn1cXG5cXG4udnNfX2Rlc2VsZWN0IHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xcbiAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IDA7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgZmlsbDogcmdiYSg2MCwgNjAsIDYwLCAwLjUpO1xcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcXG59XFxuXFxuLyogU3RhdGVzICovXFxuXFxuLnZzLS1zaW5nbGUgLnZzX19zZWxlY3RlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi52cy0tc2luZ2xlLnZzLS1vcGVuIC52c19fc2VsZWN0ZWQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgb3BhY2l0eTogLjQ7XFxufVxcblxcbi52cy0tc2luZ2xlLnZzLS1zZWFyY2hpbmcgLnZzX19zZWxlY3RlZCB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4vKiBTZWFyY2ggSW5wdXQgKi9cXG5cXG4udnNfX3NlYXJjaDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbixcXG4udnNfX3NlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcXG4udnNfX3NlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sXFxuLnZzX19zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbixcXG4udnNfX3NlYXJjaDo6LW1zLWNsZWFyIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbi52c19fc2VhcmNoLFxcbi52c19fc2VhcmNoOmZvY3VzIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjg7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLWxlZnQ6IG5vbmU7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgbWFyZ2luOiA0cHggMCAwIDA7XFxuICBwYWRkaW5nOiAwIDdweDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgd2lkdGg6IDA7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBmbGV4LWdyb3c6IDE7XFxufVxcblxcbi52c19fc2VhcmNoOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG5cXG4udnNfX3NlYXJjaDo6LW1vei1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG59XFxuXFxuLnZzX19zZWFyY2g6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG5cXG4udnNfX3NlYXJjaDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG5cXG4udnNfX3NlYXJjaDo6cGxhY2Vob2xkZXIge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcblxcbi8qKlxcbiAgICBTdGF0ZXNcXG4gKi9cXG5cXG4udnMtLXVuc2VhcmNoYWJsZSAudnNfX3NlYXJjaCB7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG5cXG4udnMtLXVuc2VhcmNoYWJsZSAudnNfX3NlYXJjaDpob3ZlciB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi52cy0tc2luZ2xlLnZzLS1zZWFyY2hpbmc6bm90KC52cy0tb3Blbik6bm90KC52cy0tbG9hZGluZykgLnZzX19zZWFyY2gge1xcbiAgb3BhY2l0eTogLjI7XFxufVxcblxcbi8qIExvYWRpbmcgU3Bpbm5lciAqL1xcblxcbi52c19fc3Bpbm5lciB7XFxuICBhbGlnbi1zZWxmOiBjZW50ZXI7XFxuICBvcGFjaXR5OiAwO1xcbiAgZm9udC1zaXplOiA1cHg7XFxuICB0ZXh0LWluZGVudDogLTk5OTllbTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBib3JkZXItdG9wOiAwLjllbSBzb2xpZCByZ2JhKDEwMCwgMTAwLCAxMDAsIDAuMSk7XFxuICBib3JkZXItcmlnaHQ6IDAuOWVtIHNvbGlkIHJnYmEoMTAwLCAxMDAsIDEwMCwgMC4xKTtcXG4gIGJvcmRlci1ib3R0b206IDAuOWVtIHNvbGlkIHJnYmEoMTAwLCAxMDAsIDEwMCwgMC4xKTtcXG4gIGJvcmRlci1sZWZ0OiAwLjllbSBzb2xpZCByZ2JhKDYwLCA2MCwgNjAsIDAuNDUpO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xcbiAgLXdlYmtpdC1hbmltYXRpb246IHZTZWxlY3RTcGlubmVyIDEuMXMgaW5maW5pdGUgbGluZWFyO1xcbiAgICAgICAgICBhbmltYXRpb246IHZTZWxlY3RTcGlubmVyIDEuMXMgaW5maW5pdGUgbGluZWFyO1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMXM7XFxufVxcblxcbi52c19fc3Bpbm5lcixcXG4udnNfX3NwaW5uZXI6YWZ0ZXIge1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgd2lkdGg6IDVlbTtcXG4gIGhlaWdodDogNWVtO1xcbn1cXG5cXG4vKiBMb2FkaW5nIFNwaW5uZXIgU3RhdGVzICovXFxuXFxuLnZzLS1sb2FkaW5nIC52c19fc3Bpbm5lciB7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX2NoYXJ0cy5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBTdHlsZXMgZm9yIGNoYXJ0cy5cXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4uZWNoYXJ0cyB7XFxuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX2NvbnRleHRNZW51LnNjc3NcXG4gICAgRGVzY3JpcHRpb246IFN0eWxlcyBmb3IgY29udGV4dCBtZW51XFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IF92YXJpYWJsZXMuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gU0NTUyB2YXJpYmFsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBTUEFDSU5HXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBDT0xPUlNcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIERBUksgVEhFTUVcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi52LWNvbnRleHQge1xcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLXJhZGl1czogLjVyZW0gIWltcG9ydGFudDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpICFpbXBvcnRhbnQ7XFxufVxcblxcbi52LWNvbnRleHQgbGkgYSB7XFxuICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udi1jb250ZXh0IGxpIGE6Zm9jdXMsIC52LWNvbnRleHQgbGkgYTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiAjZWVlICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52LWNvbnRleHQge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudi1jb250ZXh0IGxpIGEge1xcbiAgY29sb3I6ICNjMmM2ZGMgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnYtY29udGV4dCBsaSBhOmZvY3VzLCAudGhlbWUtZGFyayAudi1jb250ZXh0IGxpIGE6aG92ZXIge1xcbiAgYmFja2dyb3VuZDogIzEwMTYzYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX3F1aWxsRWRpdG9yLnNjc3NcXG4gICAgRGVzY3JpcHRpb246IFN0eWxlcyBmb3IgcXVpbGwgZWRpdG9yIGV4dGVybnNpb24uXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IF92YXJpYWJsZXMuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gU0NTUyB2YXJpYmFsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBTUEFDSU5HXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBDT0xPUlNcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIERBUksgVEhFTUVcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi5xdWlsbC1lZGl0b3IgLnFsLWJ1YmJsZSAucWwtdG9vbHRpcCB7XFxuICB6LWluZGV4OiA1MTAwMDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnF1aWxsLWVkaXRvciAucWwtc25vdy5xbC10b29sYmFyLCAudGhlbWUtZGFyayAucXVpbGwtZWRpdG9yIC5xbC1zbm93LnFsLWNvbnRhaW5lciB7XFxuICBib3JkZXItY29sb3I6ICM0MTQ1NjE7XFxufVxcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBfZGF0ZVBpY2tlci5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBTdHlsZXMgZm9yIGRhdGVwaWNrZXIgY29tcG9uZW50LlxcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBfdmFyaWFibGVzLnNjc3NcXG4gICAgRGVzY3JpcHRpb246IHBhcnRpYWwtIFNDU1MgdmFyaWJhbGVzXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgU1BBQ0lOR1xcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgQ09MT1JTXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBUWVBPR1JBUEhZXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBUWVBPR1JBUEhZXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBEQVJLIFRIRU1FXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4udmRwLWRhdGVwaWNrZXIgaW5wdXQge1xcbiAgcGFkZGluZzogLjdyZW07XFxuICBmb250LXNpemU6IDFyZW07XFxuICBib3JkZXItcmFkaXVzOiA1cHg7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICBjb2xvcjogIzYyNjI2MjtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5cXG4udmRwLWRhdGVwaWNrZXIgaW5wdXRbZGlzYWJsZWRdIHtcXG4gIG9wYWNpdHk6IC41O1xcbn1cXG5cXG4udmRwLWRhdGVwaWNrZXIgLmRheS5ibGFuayB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuLnZkcC1kYXRlcGlja2VyIC5jZWxsOmhvdmVyIHtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnZkcC1kYXRlcGlja2VyIC5jZWxsLmRheS5oaWdobGlnaHRlZCB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLXByaW1hcnkpLCAwLjcpO1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi52ZHAtZGF0ZXBpY2tlciAuY2VsbC5kYXkuaGlnaGxpZ2h0ZWQ6aG92ZXIge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSk7XFxufVxcblxcbi52ZHAtZGF0ZXBpY2tlciAuY2VsbC5zZWxlY3RlZCB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi52ZHAtZGF0ZXBpY2tlciAuY2VsbC5zZWxlY3RlZDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLXByaW1hcnkpLCAxKTtcXG59XFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IF9kYXRldGltZVBpY2tlci5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBTdHlsZXMgZm9yIGRhdGV0aW1lIHBpY2tlclxcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX3ZhcmlhYmxlcy5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBwYXJ0aWFsLSBTQ1NTIHZhcmliYWxlc1xcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFNQQUNJTkdcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIENPTE9SU1xcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgVFlQT0dSQVBIWVxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgVFlQT0dSQVBIWVxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICAgICAgREFSSyBUSEVNRVxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLmZsYXRwaWNrci1jYWxlbmRhciB7XFxuICB3aWR0aDogY2FsYygzMDcuODc1cHggKyAxM3B4ICogMikgIWltcG9ydGFudDtcXG4gIGJveC1zaGFkb3c6IDAgMTVweCAzMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjExKSwgMCA1cHggMTVweCAwIHJnYmEoMCwgMCwgMCwgMC4wOCkgIWltcG9ydGFudDtcXG4gIGJvcmRlci1yYWRpdXM6IC41cmVtICFpbXBvcnRhbnQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG5cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmFmdGVyLCAuZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmJlZm9yZSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmFmdGVyLCAuZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmJlZm9yZSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5udW1JbnB1dFdyYXBwZXIge1xcbiAgd2lkdGg6IDUuNWNoICFpbXBvcnRhbnQ7XFxufVxcblxcbi5mbGF0cGlja3ItY2FsZW5kYXIgLm51bUlucHV0V3JhcHBlciAubnVtSW5wdXQuY3VyLXllYXIge1xcbiAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5udW1JbnB1dFdyYXBwZXI6aG92ZXIge1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG59XFxuXFxuLmZsYXRwaWNrci1jYWxlbmRhciAubnVtSW5wdXRXcmFwcGVyOmhvdmVyIC5hcnJvd1VwLFxcbiAgICAgIC5mbGF0cGlja3ItY2FsZW5kYXIgLm51bUlucHV0V3JhcHBlcjpob3ZlciAuYXJyb3dEb3duIHtcXG4gIGJvcmRlcjogbm9uZTtcXG59XFxuXFxuLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLW1vbnRocyxcXG4gIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1tb250aCB7XFxuICBoZWlnaHQ6IDQ0cHggIWltcG9ydGFudDtcXG59XFxuXFxuLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLW1vbnRocyB7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHMge1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjMpICFpbXBvcnRhbnQ7XFxuICBib3JkZXItcmFkaXVzOiAuNXJlbSAhaW1wb3J0YW50O1xcbiAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7XFxuICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7XFxuICBoZWlnaHQ6IDI3cHg7XFxuICBtYXJnaW4tbGVmdDogMjJweCAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiAzcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIHtcXG4gIGJvdHRvbTogLTExcHg7XFxuICBwYWRkaW5nLXRvcDogMDtcXG59XFxuXFxuLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbn1cXG5cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItcHJldi1tb250aCxcXG4gIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1uZXh0LW1vbnRoLFxcbiAgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWlubmVyQ29udGFpbmVyIHtcXG4gIHBhZGRpbmc6IDEzcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLXByZXYtbW9udGgsXFxuICAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItbmV4dC1tb250aCB7XFxuICB0b3A6IGNhbGMoMTNweCAtIDNweCkgIWltcG9ydGFudDtcXG59XFxuXFxuLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLXByZXYtbW9udGgge1xcbiAgbGVmdDogMTNweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItbmV4dC1tb250aCB7XFxuICByaWdodDogMTNweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmlubGluZSB7XFxuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLCAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UsIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UsIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuaW5SYW5nZSwgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLmluUmFuZ2UsIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UuaW5SYW5nZSwgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheS5zZWxlY3RlZDpmb2N1cywgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlOmZvY3VzLCAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlOmZvY3VzLCAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkOmhvdmVyLCAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2U6aG92ZXIsIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2U6aG92ZXIsIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQucHJldk1vbnRoRGF5LCAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UucHJldk1vbnRoRGF5LCAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLnByZXZNb250aERheSwgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5uZXh0TW9udGhEYXksIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5uZXh0TW9udGhEYXksIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UubmV4dE1vbnRoRGF5IHtcXG4gIGJhY2tncm91bmQ6ICMwMEE1OTMgIWltcG9ydGFudDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJvcmRlci1jb2xvcjogIzAwQTU5MyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZmxhdHBpY2tyLWlucHV0IHtcXG4gIHBhZGRpbmc6IC43cmVtO1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgY29sb3I6ICM2MjYyNjI7XFxufVxcblxcbi5mbGF0cGlja3ItaW5wdXQuYWN0aXZlIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMEE1OTM7XFxufVxcblxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aDpob3ZlciBzdmcsXFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoOmhvdmVyIHN2ZyB7XFxuICBmaWxsOiAjMDBBNTkzICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIge1xcbiAgYmFja2dyb3VuZDogIzEwMTYzYTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICM0MTQ1NjE7XFxufVxcblxcbi50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1tb250aCxcXG4gIC50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci13ZWVrZGF5IHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItcHJldi1tb250aCBzdmcsXFxuICAudGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItbmV4dC1tb250aCBzdmcge1xcbiAgZmlsbDogI2ZmZjtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheSB7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheS5pblJhbmdlLCAudGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnByZXZNb250aERheS5pblJhbmdlLCAudGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheS5pblJhbmdlLCAudGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnRvZGF5LmluUmFuZ2UsIC50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsIC50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsIC50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXk6aG92ZXIsIC50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5OmhvdmVyLCAudGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheTpob3ZlciwgLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheTpmb2N1cywgLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXk6Zm9jdXMsIC50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5OmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxuICBib3JkZXItY29sb3I6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkudG9kYXkge1xcbiAgYm9yZGVyLWNvbG9yOiAjOTU5ZWE5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkIHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnRvZGF5OmhvdmVyLCAudGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LnRvZGF5OmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXksIC50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LCAudGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItZGF5LmRpc2FibGVkIHtcXG4gIG9wYWNpdHk6IC4zO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItdGltZSB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjNDE0NTYxICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci10aW1lIGlucHV0IHtcXG4gIGNvbG9yOiAjYzJjNmRjO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItdGltZSBpbnB1dDpob3ZlcixcXG4gICAgLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbTpob3ZlcixcXG4gICAgLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLXRpbWUgaW5wdXQ6Zm9jdXMsXFxuICAgIC50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItYW0tcG06Zm9jdXMge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbSB7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLXRpbWUgOjotbW96LXNlbGVjdGlvbiB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLXRpbWUgOjpzZWxlY3Rpb24ge1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5mbGF0cGlja3ItY2FsZW5kYXIgLm51bUlucHV0V3JhcHBlciAuYXJyb3dVcDphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZmxhdHBpY2tyLWNhbGVuZGFyIC5udW1JbnB1dFdyYXBwZXIgLmFycm93RG93bjphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjZmZmO1xcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX3RoZW1lcy5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBwYXJ0aWFsLSB0aGVtZXMgLSBpbXBvcnRzIHRoZW1lIHN0eWxlc1xcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBfdGhlbWVEYXJrLnNjc3NcXG4gICAgRGVzY3JpcHRpb246IHBhcnRpYWwtIFN0eWxlcyBmb3IgZGFyayB0aGVtZVxcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi50aGVtZS1kYXJrIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNjJjNDk7XFxuICBjb2xvcjogI2MyYzZkYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29udGVudC1hcmVhX19oZWFkaW5nIGgyIHtcXG4gIGNvbG9yOiAjZWJlZWZkO1xcbn1cXG5cXG4udGhlbWUtZGFyayBjb2RlIHtcXG4gIGNvbG9yOiAjYjhjMmNjO1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgcHJlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFFMUUxRTtcXG4gIHRleHQtc2hhZG93OiBub25lO1xcbn1cXG5cXG4udGhlbWUtZGFyayBwcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSBjb2RlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayBwcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSBjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0ge1xcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XFxufVxcblxcbi50aGVtZS1kYXJrIGxhYmVsIHtcXG4gIGNvbG9yOiAjYzJjNmRjO1xcbn1cXG5cXG4udGhlbWUtZGFyayBoMSwgLnRoZW1lLWRhcmsgaDIsIC50aGVtZS1kYXJrIGgzLCAudGhlbWUtZGFyayBoNCwgLnRoZW1lLWRhcmsgaDUsIC50aGVtZS1kYXJrIGg2IHtcXG4gIGNvbG9yOiAjZWJlZWZkO1xcbn1cXG5cXG4udGhlbWUtZGFyayB1bC5ib3JkZXJlZC1pdGVtcyBsaSB7XFxuICBib3JkZXItY29sb3I6ICM0MTQ1NjEgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLm5vdGlmaWNhdGlvbi1kcm9wZG93biAubm90aWZpY2F0aW9uOmhvdmVyLFxcbiAgLnRoZW1lLWRhcmsgLm5vdGlmaWNhdGlvbi1kcm9wZG93biAuY2FydC1pdGVtOmhvdmVyLFxcbiAgLnRoZW1lLWRhcmsgLmNhcnQtZHJvcGRvd24gLm5vdGlmaWNhdGlvbjpob3ZlcixcXG4gIC50aGVtZS1kYXJrIC5jYXJ0LWRyb3Bkb3duIC5jYXJ0LWl0ZW06aG92ZXIge1xcbiAgYmFja2dyb3VuZDogIzEwMTYzYTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLm5vdGlmaWNhdGlvbi1kcm9wZG93biAuY2hlY2tvdXQtZm9vdGVyLFxcbiAgLnRoZW1lLWRhcmsgLm5vdGlmaWNhdGlvbi1kcm9wZG93biAubm90aWZpY2F0aW9uLWZvb3RlcixcXG4gIC50aGVtZS1kYXJrIC5jYXJ0LWRyb3Bkb3duIC5jaGVja291dC1mb290ZXIsXFxuICAudGhlbWUtZGFyayAuY2FydC1kcm9wZG93biAubm90aWZpY2F0aW9uLWZvb3RlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAubm90aWZpY2F0aW9uLWRyb3Bkb3duIC5jaGVja291dC1mb290ZXI6aG92ZXIsXFxuICAudGhlbWUtZGFyayAubm90aWZpY2F0aW9uLWRyb3Bkb3duIC5ub3RpZmljYXRpb24tZm9vdGVyOmhvdmVyLFxcbiAgLnRoZW1lLWRhcmsgLmNhcnQtZHJvcGRvd24gLmNoZWNrb3V0LWZvb3Rlcjpob3ZlcixcXG4gIC50aGVtZS1kYXJrIC5jYXJ0LWRyb3Bkb3duIC5ub3RpZmljYXRpb24tZm9vdGVyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMDE2M2E7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1jb21wb25lbnQudnMtbm90aWZpY2F0aW9ucy52cy1ub3RpLWRhcmsge1xcbiAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWNvbXBvbmVudC52cy1ub3RpZmljYXRpb25zLnZzLW5vdGktZGFyayAuZmlsbGluZyB7XFxuICBiYWNrZ3JvdW5kOiAjYjhjMmNjICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1jb21wb25lbnQudnMtbm90aWZpY2F0aW9ucy52cy1ub3RpLWRhcmsgaDMge1xcbiAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEwMTYzYTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQuY2FyZC1ib3JkZXIge1xcbiAgYm9yZGVyLWNvbG9yOiAjNDE0NTYxO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAudngtY2FyZF9fdGl0bGUgaDQge1xcbiAgY29sb3I6ICNlYmVlZmQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC5jb24tdnMtYWxlcnQtZGFyayB7XFxuICBjb2xvcjogI2RhZTFlNztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQgLmNvZGUtY29udGVudCBwcmVbY2xhc3NePVxcXCJsYW5ndWFnZS1cXFwiXSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyYzQ5O1xcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC5jb2RlLWNvbnRlbnQgcHJlW2NsYXNzXj1cXFwibGFuZ3VhZ2UtXFxcIl0gY29kZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQgLmNvZGUtY29udGVudCBwcmVbY2xhc3NePVxcXCJsYW5ndWFnZS1cXFwiXSBjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0ge1xcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC52eC1jYXJkX19ib2R5IC5jb24tdnMtYWxlcnQtcHJpbWFyeSBoNCB7XFxuICBjb2xvcjogcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC52eC1jYXJkX19ib2R5IC5jb24tdnMtYWxlcnQtc3VjY2VzcyBoNCB7XFxuICBjb2xvcjogcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwgMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC52eC1jYXJkX19ib2R5IC5jb24tdnMtYWxlcnQtZGFuZ2VyIGg0IHtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLXZzLWRhbmdlciksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAudngtY2FyZF9fYm9keSAuY29uLXZzLWFsZXJ0LWluZm8gaDQge1xcbiAgY29sb3I6IHJnYmEodmFyKC0tdnMtaW5mbyksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAudngtY2FyZF9fYm9keSAuY29uLXZzLWFsZXJ0LXdhcm5pbmcgaDQge1xcbiAgY29sb3I6IHJnYmEodmFyKC0tdnMtd2FybmluZyksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAudGFza3MtdG9kYXktY29udGFpbmVyIC50YXNrcy10b2RheV9fdGFzazpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiAjMjEyNzQ0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1uYXZiYXItd3JhcHBlciB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDQ0LCA0OCwgNjAsIDAuOSkgNDQlLCByZ2JhKDQ0LCA0OCwgNjAsIDAuNDMpIDczJSwgcmdiYSg0NCwgNDgsIDYwLCAwKSAxMDAlKTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LW5hdmJhci13cmFwcGVyIC52eC1uYXZiYXIgLnNlYXJjaC1mdWxsLWNvbnRhaW5lciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTAxNjNhICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1uYXZiYXItd3JhcHBlciAudngtbmF2YmFyIC5zZWFyY2gtZnVsbC1jb250YWluZXIgLnZ4LWF1dG8tc3VnZ2VzdCBpbnB1dCB7XFxuICBiYWNrZ3JvdW5kOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtbmF2YmFyLXdyYXBwZXIgLnZ4LW5hdmJhciAudngtYXV0by1zdWdnZXN0IC5hdXRvLXN1Z2dlc3Qtc3VnZ2VzdGlvbnMtbGlzdCAuYXV0by1zdWdnZXN0X19zdWdnZXN0aW9uIHtcXG4gIGNvbG9yOiAjYzJjNmRjO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtbmF2YmFyLXdyYXBwZXIgLnZ4LW5hdmJhciAudngtYXV0by1zdWdnZXN0IC5hdXRvLXN1Z2dlc3Qtc3VnZ2VzdGlvbnMtbGlzdCAuYXV0by1zdWdnZXN0X19zdWdnZXN0aW9uLnZ4LWF1dG8tc3VnZ2VzdF9fY3VycmVudC1zZWxlY3RlZCB7XFxuICBiYWNrZ3JvdW5kOiAjMTAxNjNhO1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi50aGVtZS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAubWFpbi1tZW51LXNpZGViYXIgLnNoYWRvdy1ib3R0b20ge1xcbiAgd2lkdGg6IDk0JTtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwZjE2NDIgNDQlLCByZ2JhKDE1LCAyMiwgNjYsIDAuNTEpIDczJSwgcmdiYSg0NCwgNDgsIDYwLCAwKSAxMDAlKTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLm1haW4tbWVudS1zaWRlYmFyIC5zY3JvbGwtYXJlYS0tbWFpbi1zaWRlYmFyIC5mZWF0aGVyLWljb24sIC50aGVtZS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciBzcGFuOm5vdCgudnMtY2hpcC0tdGV4dCkge1xcbiAgY29sb3I6ICNjMmM2ZGM7XFxufVxcblxcbi50aGVtZS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciBhOm5vdCgucm91dGVyLWxpbmstYWN0aXZlKSAuZmVhdGhlci1pY29uIHN2ZywgLnRoZW1lLWRhcmsgLm1haW4tbWVudS1zaWRlYmFyIC5zY3JvbGwtYXJlYS0tbWFpbi1zaWRlYmFyIGE6bm90KC5yb3V0ZXItbGluay1hY3RpdmUpIC5mZWF0aGVyLWljb24gc3BhbiB7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLm1haW4tbWVudS1zaWRlYmFyIC5zY3JvbGwtYXJlYS0tbWFpbi1zaWRlYmFyIGEucm91dGVyLWxpbmstYWN0aXZlIHNwYW4ge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi50aGVtZS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciAudnMtc2lkZWJhci1ncm91cC52cy1zaWRlYmFyLWdyb3VwLWFjdGl2ZSA+IC5ncm91cC1oZWFkZXIge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLm1haW4tbWVudS1zaWRlYmFyIC5zY3JvbGwtYXJlYS0tbWFpbi1zaWRlYmFyIC52cy1zaWRlYmFyLWdyb3VwLnZzLXNpZGViYXItZ3JvdXAtb3BlbiA+IC5ncm91cC1oZWFkZXIge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnBzOmhvdmVyID4gLnBzX19zY3JvbGxiYXIteS1yYWlsOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMDE2M2E7XFxufVxcblxcbi50aGVtZS1kYXJrIC5ncmlkLWRlbW9fX2xheW91dC1jb250YWluZXIgLnZzLXJvdyAudnMtY29sIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTI3NDQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5ncmlkLWRlbW9fX2xheW91dC1jb250YWluZXIgLnZzLXJvdyAudnMtY29sOmxhc3Qtb2YtdHlwZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNzQ0O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZ3JpZC1kZW1vX19sYXlvdXQtY29udGFpbmVyLS1ibG9jayAudnMtcm93IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTI3NDQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jaGF0LWNhcmQtbG9nIC5mbGV4LXJvdy1yZXZlcnNlIC5tc2cuY2hhdC1zZW50LW1zZyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTAxNjNhICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jaGF0LWNhcmQtbG9nIC5tc2cge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjc0NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY2hhdC1pbnB1dC1jb250YWluZXIsIC50aGVtZS1kYXJrIC5jaGF0X19pbnB1dCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTAxNjNhICFpbXBvcnRhbnQ7XFxuICBib3JkZXItdG9wOiAxcHggc29saWQgIzIxMjc0NDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmFwcC1zZWFyY2gtY29udGFpbmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMDE2M2E7XFxufVxcblxcbi50aGVtZS1kYXJrICNjaGF0LWFwcCAuY2hhdF9fcHJvZmlsZS1zZWFyY2ggLnZzLWlucHV0eCB7XFxuICBib3JkZXItY29sb3I6ICM0MTQ1NjEgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgI2NoYXQtYXBwICNjaGF0LWxpc3Qtc2lkZWJhciAuY2hhdC1zY3JvbGwtYXJlYSAuY2hhdF9fY29udGFjdDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAjY2hhdC1hcHAgLmNoYXRfX2hlYWRlciBoZWFkZXIge1xcbiAgYmFja2dyb3VuZDogIzIxMjc0NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAjY2hhdC1hcHAgLmNoYXRfX2hlYWRlciBoZWFkZXIgaDYge1xcbiAgY29sb3I6ICNlYmVlZmQ7XFxufVxcblxcbi50aGVtZS1kYXJrICNjaGF0LWFwcCAuY2hhdF9fYmcge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWU0OTtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyNjAnIGhlaWdodD0nMjYwJyB2aWV3Qm94PScwIDAgMjYwIDI2MCclM0UlM0NnIGZpbGwtcnVsZT0nZXZlbm9kZCclM0UlM0NnIGZpbGw9JyUyMzZmNzZhMScgZmlsbC1vcGFjaXR5PScwLjQnJTNFJTNDcGF0aCBkPSdNMjQuMzcgMTZjLjIuNjUuMzkgMS4zMi41NCAySDIxLjE3bDEuMTcgMi4zNC40NS45LS4yNC4xMVYyOGE1IDUgMCAwIDEtMi4yMyA4Ljk0bC0uMDIuMDZhOCA4IDAgMCAxLTcuNzUgNmgtMjBhOCA4IDAgMCAxLTcuNzQtNmwtLjAyLS4wNkE1IDUgMCAwIDEtMTcuNDUgMjh2LTYuNzZsLS43OS0xLjU4LS40NC0uOS45LS40NC42My0uMzJILTIwYTIzLjAxIDIzLjAxIDAgMCAxIDQ0LjM3LTJ6bS0zNi44MiAyYTEgMSAwIDAgMC0uNDQuMWwtMy4xIDEuNTYuODkgMS43OSAxLjMxLS42NmEzIDMgMCAwIDEgMi42OSAwbDIuMiAxLjFhMSAxIDAgMCAwIC45IDBsMi4yMS0xLjFhMyAzIDAgMCAxIDIuNjkgMGwyLjIgMS4xYTEgMSAwIDAgMCAuOSAwbDIuMjEtMS4xYTMgMyAwIDAgMSAyLjY5IDBsMi4yIDEuMWExIDEgMCAwIDAgLjg2LjAybDIuODgtMS4yN2EzIDMgMCAwIDEgMi40MyAwbDIuODggMS4yN2ExIDEgMCAwIDAgLjg1LS4wMmwzLjEtMS41NS0uODktMS43OS0xLjQyLjcxYTMgMyAwIDAgMS0yLjU2LjA2bC0yLjc3LTEuMjNhMSAxIDAgMCAwLS40LS4wOWgtLjAxYTEgMSAwIDAgMC0uNC4wOWwtMi43OCAxLjIzYTMgMyAwIDAgMS0yLjU2LS4wNmwtMi4zLTEuMTVhMSAxIDAgMCAwLS40NS0uMTFoLS4wMWExIDEgMCAwIDAtLjQ0LjFMLjkgMTkuMjJhMyAzIDAgMCAxLTIuNjkgMGwtMi4yLTEuMWExIDEgMCAwIDAtLjQ1LS4xMWgtLjAxYTEgMSAwIDAgMC0uNDQuMWwtMi4yMSAxLjExYTMgMyAwIDAgMS0yLjY5IDBsLTIuMi0xLjFhMSAxIDAgMCAwLS40NS0uMTFoLS4wMXptMC0yaC00LjlhMjEuMDEgMjEuMDEgMCAwIDEgMzkuNjEgMGgtMi4wOWwtLjA2LS4xMy0uMjYuMTNoLTMyLjMxem0zMC4zNSA3LjY4bDEuMzYtLjY4aDEuM3YyaC0zNnYtMS4xNWwuMzQtLjE3IDEuMzYtLjY4aDIuNTlsMS4zNi42OGEzIDMgMCAwIDAgMi42OSAwbDEuMzYtLjY4aDIuNTlsMS4zNi42OGEzIDMgMCAwIDAgMi42OSAwTDIuMjYgMjNoMi41OWwxLjM2LjY4YTMgMyAwIDAgMCAyLjU2LjA2bDEuNjctLjc0aDMuMjNsMS42Ny43NGEzIDMgMCAwIDAgMi41Ni0uMDZ6TS0xMy44MiAyN2wxNi4zNyA0LjkxTDE4LjkzIDI3aC0zMi43NXptLS42MyAyaC4zNGwxNi42NiA1IDE2LjY3LTVoLjMzYTMgMyAwIDEgMSAwIDZoLTM0YTMgMyAwIDEgMSAwLTZ6bTEuMzUgOGE2IDYgMCAwIDAgNS42NSA0aDIwYTYgNiAwIDAgMCA1LjY2LTRILTEzLjF6Jy8lM0UlM0NwYXRoIGlkPSdwYXRoNl9maWxsLWNvcHknIGQ9J00yODQuMzcgMTZjLjIuNjUuMzkgMS4zMi41NCAySDI4MS4xN2wxLjE3IDIuMzQuNDUuOS0uMjQuMTFWMjhhNSA1IDAgMCAxLTIuMjMgOC45NGwtLjAyLjA2YTggOCAwIDAgMS03Ljc1IDZoLTIwYTggOCAwIDAgMS03Ljc0LTZsLS4wMi0uMDZhNSA1IDAgMCAxLTIuMjQtOC45NHYtNi43NmwtLjc5LTEuNTgtLjQ0LS45LjktLjQ0LjYzLS4zMkgyNDBhMjMuMDEgMjMuMDEgMCAwIDEgNDQuMzctMnptLTM2LjgyIDJhMSAxIDAgMCAwLS40NC4xbC0zLjEgMS41Ni44OSAxLjc5IDEuMzEtLjY2YTMgMyAwIDAgMSAyLjY5IDBsMi4yIDEuMWExIDEgMCAwIDAgLjkgMGwyLjIxLTEuMWEzIDMgMCAwIDEgMi42OSAwbDIuMiAxLjFhMSAxIDAgMCAwIC45IDBsMi4yMS0xLjFhMyAzIDAgMCAxIDIuNjkgMGwyLjIgMS4xYTEgMSAwIDAgMCAuODYuMDJsMi44OC0xLjI3YTMgMyAwIDAgMSAyLjQzIDBsMi44OCAxLjI3YTEgMSAwIDAgMCAuODUtLjAybDMuMS0xLjU1LS44OS0xLjc5LTEuNDIuNzFhMyAzIDAgMCAxLTIuNTYuMDZsLTIuNzctMS4yM2ExIDEgMCAwIDAtLjQtLjA5aC0uMDFhMSAxIDAgMCAwLS40LjA5bC0yLjc4IDEuMjNhMyAzIDAgMCAxLTIuNTYtLjA2bC0yLjMtMS4xNWExIDEgMCAwIDAtLjQ1LS4xMWgtLjAxYTEgMSAwIDAgMC0uNDQuMWwtMi4yMSAxLjExYTMgMyAwIDAgMS0yLjY5IDBsLTIuMi0xLjFhMSAxIDAgMCAwLS40NS0uMTFoLS4wMWExIDEgMCAwIDAtLjQ0LjFsLTIuMjEgMS4xMWEzIDMgMCAwIDEtMi42OSAwbC0yLjItMS4xYTEgMSAwIDAgMC0uNDUtLjExaC0uMDF6bTAtMmgtNC45YTIxLjAxIDIxLjAxIDAgMCAxIDM5LjYxIDBoLTIuMDlsLS4wNi0uMTMtLjI2LjEzaC0zMi4zMXptMzAuMzUgNy42OGwxLjM2LS42OGgxLjN2MmgtMzZ2LTEuMTVsLjM0LS4xNyAxLjM2LS42OGgyLjU5bDEuMzYuNjhhMyAzIDAgMCAwIDIuNjkgMGwxLjM2LS42OGgyLjU5bDEuMzYuNjhhMyAzIDAgMCAwIDIuNjkgMGwxLjM2LS42OGgyLjU5bDEuMzYuNjhhMyAzIDAgMCAwIDIuNTYuMDZsMS42Ny0uNzRoMy4yM2wxLjY3Ljc0YTMgMyAwIDAgMCAyLjU2LS4wNnpNMjQ2LjE4IDI3bDE2LjM3IDQuOTFMMjc4LjkzIDI3aC0zMi43NXptLS42MyAyaC4zNGwxNi42NiA1IDE2LjY3LTVoLjMzYTMgMyAwIDEgMSAwIDZoLTM0YTMgMyAwIDEgMSAwLTZ6bTEuMzUgOGE2IDYgMCAwIDAgNS42NSA0aDIwYTYgNiAwIDAgMCA1LjY2LTRIMjQ2Ljl6Jy8lM0UlM0NwYXRoIGQ9J00xNTkuNSAyMS4wMkE5IDkgMCAwIDAgMTUxIDE1aC00MmE5IDkgMCAwIDAtOC41IDYuMDIgNiA2IDAgMCAwIC4wMiAxMS45NkE4Ljk5IDguOTkgMCAwIDAgMTA5IDQ1aDQyYTkgOSAwIDAgMCA4LjQ4LTEyLjAyIDYgNiAwIDAgMCAuMDItMTEuOTZ6TTE1MSAxN2gtNDJhNyA3IDAgMCAwLTYuMzMgNGg1NC42NmE3IDcgMCAwIDAtNi4zMy00em0tOS4zNCAyNmE4Ljk4IDguOTggMCAwIDAgMy4zNC03aC0yYTcgNyAwIDAgMS03IDdoLTQuMzRhOC45OCA4Ljk4IDAgMCAwIDMuMzQtN2gtMmE3IDcgMCAwIDEtNyA3aC00LjM0YTguOTggOC45OCAwIDAgMCAzLjM0LTdoLTJhNyA3IDAgMCAxLTcgN2gtN2E3IDcgMCAxIDEgMC0xNGg0MmE3IDcgMCAxIDEgMCAxNGgtOS4zNHpNMTA5IDI3YTkgOSAwIDAgMC03LjQ4IDRIMTAxYTQgNCAwIDEgMSAwLThoNThhNCA0IDAgMCAxIDAgOGgtLjUyYTkgOSAwIDAgMC03LjQ4LTRoLTQyeicvJTNFJTNDcGF0aCBkPSdNMzkgMTE1YTggOCAwIDEgMCAwLTE2IDggOCAwIDAgMCAwIDE2em02LThhNiA2IDAgMSAxLTEyIDAgNiA2IDAgMCAxIDEyIDB6bS0zLTI5di0yaDh2LTZINDBhNCA0IDAgMCAwLTQgNHYxMEgyMmwtMS4zMyA0LS42NyAyaDIuMTlMMjYgMTMwaDI2bDMuODEtNDBINThsLS42Ny0yTDU2IDg0SDQydi02em0tNC00djEwaDJWNzRoOHYtMmgtOGEyIDIgMCAwIDAtMiAyem0yIDEyaDE0LjU2bC42NyAySDIyLjc3bC42Ny0ySDQwem0xMy44IDRIMjQuMmwzLjYyIDM4aDIyLjM2bDMuNjItMzh6Jy8lM0UlM0NwYXRoIGQ9J00xMjkgOTJoLTZ2NGgtNnY0aC02djE0aC0zbC4yNCAyIDMuNzYgMzJoMzZsMy43Ni0zMiAuMjQtMmgtM3YtMTRoLTZ2LTRoLTZ2LTRoLTh6bTE4IDIydi0xMmgtNHY0aDN2OGgxem0tMyAwdi02aC00djZoNHptLTYgNnYtMTZoLTR2MTkuMTdjMS42LS43IDIuOTctMS44IDQtMy4xN3ptLTYgMy44VjEwMGgtNHYyMy44YTEwLjA0IDEwLjA0IDAgMCAwIDQgMHptLTYtLjYzVjEwNGgtNHYxNmExMC4wNCAxMC4wNCAwIDAgMCA0IDMuMTd6bS02LTkuMTd2LTZoLTR2Nmg0em0tNiAwdi04aDN2LTRoLTR2MTJoMXptMjctMTJ2LTRoLTR2NGgzdjRoMXYtNHptLTYgMHYtOGgtNHY0aDN2NGgxem0tNi00di00aC00djhoMXYtNGgzem0tNiA0di00aC00djhoMXYtNGgzem03IDI0YTEyIDEyIDAgMCAwIDExLjgzLTEwaDcuOTJsLTMuNTMgMzBoLTMyLjQ0bC0zLjUzLTMwaDcuOTJBMTIgMTIgMCAwIDAgMTMwIDEyNnonLyUzRSUzQ3BhdGggZD0nTTIxMiA4NnYyaC00di0yaDR6bTQgMGgtMnYyaDJ2LTJ6bS0yMCAwdi4xYTUgNSAwIDAgMC0uNTYgOS42NWwuMDYuMjUgMS4xMiA0LjQ4YTIgMiAwIDAgMCAxLjk0IDEuNTJoLjAxbDcuMDIgMjQuNTVhMiAyIDAgMCAwIDEuOTIgMS40NWg0Ljk4YTIgMiAwIDAgMCAxLjkyLTEuNDVsNy4wMi0yNC41NWEyIDIgMCAwIDAgMS45NS0xLjUyTDIyNC41IDk2bC4wNi0uMjVhNSA1IDAgMCAwLS41Ni05LjY1Vjg2YTE0IDE0IDAgMCAwLTI4IDB6bTQgMGg2djJoLTlhMyAzIDAgMSAwIDAgNkgyMjNhMyAzIDAgMSAwIDAtNkgyMjB2LTJoMmExMiAxMiAwIDEgMC0yNCAwaDJ6bS0xLjQ0IDE0bC0xLTRoMjQuODhsLTEgNGgtMjIuODh6bTguOTUgMjZsLTYuODYtMjRoMTguN2wtNi44NiAyNGgtNC45OHpNMTUwIDI0MmEyMiAyMiAwIDEgMCAwLTQ0IDIyIDIyIDAgMCAwIDAgNDR6bTI0LTIyYTI0IDI0IDAgMSAxLTQ4IDAgMjQgMjQgMCAwIDEgNDggMHptLTI4LjM4IDE3LjczbDIuMDQtLjg3YTYgNiAwIDAgMSA0LjY4IDBsMi4wNC44N2EyIDIgMCAwIDAgMi41LS44MmwxLjE0LTEuOWE2IDYgMCAwIDEgMy43OS0yLjc1bDIuMTUtLjVhMiAyIDAgMCAwIDEuNTQtMi4xMmwtLjE5LTIuMmE2IDYgMCAwIDEgMS40NS00LjQ2bDEuNDUtMS42N2EyIDIgMCAwIDAgMC0yLjYybC0xLjQ1LTEuNjdhNiA2IDAgMCAxLTEuNDUtNC40NmwuMi0yLjJhMiAyIDAgMCAwLTEuNTUtMi4xM2wtMi4xNS0uNWE2IDYgMCAwIDEtMy44LTIuNzVsLTEuMTMtMS45YTIgMiAwIDAgMC0yLjUtLjhsLTIuMDQuODZhNiA2IDAgMCAxLTQuNjggMGwtMi4wNC0uODdhMiAyIDAgMCAwLTIuNS44MmwtMS4xNCAxLjlhNiA2IDAgMCAxLTMuNzkgMi43NWwtMi4xNS41YTIgMiAwIDAgMC0xLjU0IDIuMTJsLjE5IDIuMmE2IDYgMCAwIDEtMS40NSA0LjQ2bC0xLjQ1IDEuNjdhMiAyIDAgMCAwIDAgMi42MmwxLjQ1IDEuNjdhNiA2IDAgMCAxIDEuNDUgNC40NmwtLjIgMi4yYTIgMiAwIDAgMCAxLjU1IDIuMTNsMi4xNS41YTYgNiAwIDAgMSAzLjggMi43NWwxLjEzIDEuOWEyIDIgMCAwIDAgMi41Ljh6bTIuODIuOTdhNCA0IDAgMCAxIDMuMTIgMGwyLjA0Ljg3YTQgNCAwIDAgMCA0Ljk5LTEuNjJsMS4xNC0xLjlhNCA0IDAgMCAxIDIuNTMtMS44NGwyLjE1LS41YTQgNCAwIDAgMCAzLjA5LTQuMjRsLS4yLTIuMmE0IDQgMCAwIDEgLjk3LTIuOThsMS40NS0xLjY3YTQgNCAwIDAgMCAwLTUuMjRsLTEuNDUtMS42N2E0IDQgMCAwIDEtLjk3LTIuOTdsLjItMi4yYTQgNCAwIDAgMC0zLjA5LTQuMjVsLTIuMTUtLjVhNCA0IDAgMCAxLTIuNTMtMS44NGwtMS4xNC0xLjlhNCA0IDAgMCAwLTUtMS42MmwtMi4wMy44N2E0IDQgMCAwIDEtMy4xMiAwbC0yLjA0LS44N2E0IDQgMCAwIDAtNC45OSAxLjYybC0xLjE0IDEuOWE0IDQgMCAwIDEtMi41MyAxLjg0bC0yLjE1LjVhNCA0IDAgMCAwLTMuMDkgNC4yNGwuMiAyLjJhNCA0IDAgMCAxLS45NyAyLjk4bC0xLjQ1IDEuNjdhNCA0IDAgMCAwIDAgNS4yNGwxLjQ1IDEuNjdhNCA0IDAgMCAxIC45NyAyLjk3bC0uMiAyLjJhNCA0IDAgMCAwIDMuMDkgNC4yNWwyLjE1LjVhNCA0IDAgMCAxIDIuNTMgMS44NGwxLjE0IDEuOWE0IDQgMCAwIDAgNSAxLjYybDIuMDMtLjg3ek0xNTIgMjA3YTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHptNiAyYTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHptLTExIDFhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem0tNiAwYTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHptMy01YTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHptLTggOGExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bTMgNmExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bTAgNmExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bTQgN2ExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bTUtMmExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bTUgNGExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bTQtNmExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bTYtNGExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bS00LTNhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem00LTNhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem0tNS00YTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHptLTI0IDZhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem0xNiA1YTUgNSAwIDEgMCAwLTEwIDUgNSAwIDAgMCAwIDEwem03LTVhNyA3IDAgMSAxLTE0IDAgNyA3IDAgMCAxIDE0IDB6bTg2LTI5YTEgMSAwIDAgMCAwIDJoMmExIDEgMCAwIDAgMC0yaC0yem0xOSA5YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMCAyaC0yYTEgMSAwIDAgMS0xLTF6bS0xNCA1YTEgMSAwIDAgMCAwIDJoMmExIDEgMCAwIDAgMC0yaC0yem0tMjUgMWExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptNSA0YTEgMSAwIDAgMCAwIDJoMmExIDEgMCAwIDAgMC0yaC0yem05IDBhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAwIDJoLTJhMSAxIDAgMCAxLTEtMXptMTUgMWExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDAgMmgtMmExIDEgMCAwIDEtMS0xem0xMi0yYTEgMSAwIDAgMCAwIDJoMmExIDEgMCAwIDAgMC0yaC0yem0tMTEtMTRhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAwIDJoLTJhMSAxIDAgMCAxLTEtMXptLTE5IDBhMSAxIDAgMCAwIDAgMmgyYTEgMSAwIDAgMCAwLTJoLTJ6bTYgNWExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDAgMmgtMmExIDEgMCAwIDEtMS0xem0tMjUgMTVjMC0uNDcuMDEtLjk0LjAzLTEuNGE1IDUgMCAwIDEtMS43LTggMy45OSAzLjk5IDAgMCAxIDEuODgtNS4xOCA1IDUgMCAwIDEgMy40LTYuMjIgMyAzIDAgMCAxIDEuNDYtMS4wNSA1IDUgMCAwIDEgNy43Ni0zLjI3QTMwLjg2IDMwLjg2IDAgMCAxIDI0NiAxODRjNi43OSAwIDEzLjA2IDIuMTggMTguMTcgNS44OGE1IDUgMCAwIDEgNy43NiAzLjI3IDMgMyAwIDAgMSAxLjQ3IDEuMDUgNSA1IDAgMCAxIDMuNCA2LjIyIDQgNCAwIDAgMSAxLjg3IDUuMTggNC45OCA0Ljk4IDAgMCAxLTEuNyA4Yy4wMi40Ni4wMy45My4wMyAxLjR2MWgtNjJ2LTF6bS44My03LjE3YTMwLjkgMzAuOSAwIDAgMC0uNjIgMy41NyAzIDMgMCAwIDEtLjYxLTQuMmMuMzcuMjguNzguNDkgMS4yMy42M3ptMS40OS00LjYxYy0uMzYuODctLjY4IDEuNzYtLjk2IDIuNjhhMiAyIDAgMCAxLS4yMS0zLjcxYy4zMy40LjczLjc1IDEuMTcgMS4wM3ptMi4zMi00LjU0Yy0uNTQuODYtMS4wMyAxLjc2LTEuNDkgMi42OGEzIDMgMCAwIDEtLjA3LTQuNjcgMyAzIDAgMCAwIDEuNTYgMS45OXptMS4xNC0xLjdjLjM1LS41LjcyLS45OCAxLjEtMS40NmExIDEgMCAxIDAtMS4xIDEuNDV6bTUuMzQtNS43N2MtMS4wMy44Ni0yIDEuNzktMi45IDIuNzdhMyAzIDAgMCAwLTEuMTEtLjc3IDMgMyAwIDAgMSA0LTJ6bTQyLjY2IDIuNzdjLS45LS45OC0xLjg3LTEuOS0yLjktMi43N2EzIDMgMCAwIDEgNC4wMSAyIDMgMyAwIDAgMC0xLjEuNzd6bTEuMzQgMS41NGMuMzguNDguNzUuOTYgMS4xIDEuNDVhMSAxIDAgMSAwLTEuMS0xLjQ1em0zLjczIDUuODRjLS40Ni0uOTItLjk1LTEuODItMS41LTIuNjhhMyAzIDAgMCAwIDEuNTctMS45OSAzIDMgMCAwIDEtLjA3IDQuNjd6bTEuOCA0LjUzYy0uMjktLjktLjYtMS44LS45Ny0yLjY3LjQ0LS4yOC44NC0uNjMgMS4xNy0xLjAzYTIgMiAwIDAgMS0uMiAzLjd6bTEuMTQgNS41MWMtLjE0LTEuMjEtLjM1LTIuNC0uNjItMy41Ny40NS0uMTQuODYtLjM1IDEuMjMtLjYzYTIuOTkgMi45OSAwIDAgMS0uNiA0LjJ6TTI3NSAyMTRhMjkgMjkgMCAwIDAtNTcuOTcgMGg1Ny45NnpNNzIuMzMgMTk4LjEyYy0uMjEtLjMyLS4zNC0uNy0uMzQtMS4xMnYtMTJoLTJ2MTJhNC4wMSA0LjAxIDAgMCAwIDcuMDkgMi41NGMuNTctLjY5LjkxLTEuNTcuOTEtMi41NHYtMTJoLTJ2MTJhMS45OSAxLjk5IDAgMCAxLTIgMiAyIDIgMCAwIDEtMS42Ni0uODh6TTc1IDE3NmMuMzggMCAuNzQtLjA0IDEuMS0uMTJhNCA0IDAgMCAwIDYuMTkgMi40QTEzLjk0IDEzLjk0IDAgMCAxIDg0IDE4NXYyNGE2IDYgMCAwIDEtNiA2aC0zdjlhNSA1IDAgMSAxLTEwIDB2LTloLTNhNiA2IDAgMCAxLTYtNnYtMjRhMTQgMTQgMCAwIDEgMTQtMTQgNSA1IDAgMCAwIDUgNXptLTE3IDE1djEyYTEuOTkgMS45OSAwIDAgMCAxLjIyIDEuODQgMiAyIDAgMCAwIDIuNDQtLjcyYy4yMS0uMzIuMzQtLjcuMzQtMS4xMnYtMTJoMnYxMmEzLjk4IDMuOTggMCAwIDEtNS4zNSAzLjc3IDMuOTggMy45OCAwIDAgMS0uNjUtLjNWMjA5YTQgNCAwIDAgMCA0IDRoMTZhNCA0IDAgMCAwIDQtNHYtMjRjLjAxLTEuNTMtLjIzLTIuODgtLjcyLTQuMTctLjQzLjEtLjg3LjE2LTEuMjguMTdhNiA2IDAgMCAxLTUuMi0zIDcgNyAwIDAgMS02LjQ3LTQuODhBMTIgMTIgMCAwIDAgNTggMTg1djZ6bTkgMjR2OWEzIDMgMCAxIDAgNiAwdi05aC02eicvJTNFJTNDcGF0aCBkPSdNLTE3IDE5MWExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptMTkgOWExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDAgMkgzYTEgMSAwIDAgMS0xLTF6bS0xNCA1YTEgMSAwIDAgMCAwIDJoMmExIDEgMCAwIDAgMC0yaC0yem0tMjUgMWExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptNSA0YTEgMSAwIDAgMCAwIDJoMmExIDEgMCAwIDAgMC0yaC0yem05IDBhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAwIDJoLTJhMSAxIDAgMCAxLTEtMXptMTUgMWExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDAgMmgtMmExIDEgMCAwIDEtMS0xem0xMi0yYTEgMSAwIDAgMCAwIDJoMmExIDEgMCAwIDAgMC0ySDR6bS0xMS0xNGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDAgMmgtMmExIDEgMCAwIDEtMS0xem0tMTkgMGExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptNiA1YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMCAyaC0yYTEgMSAwIDAgMS0xLTF6bS0yNSAxNWMwLS40Ny4wMS0uOTQuMDMtMS40YTUgNSAwIDAgMS0xLjctOCAzLjk5IDMuOTkgMCAwIDEgMS44OC01LjE4IDUgNSAwIDAgMSAzLjQtNi4yMiAzIDMgMCAwIDEgMS40Ni0xLjA1IDUgNSAwIDAgMSA3Ljc2LTMuMjdBMzAuODYgMzAuODYgMCAwIDEtMTQgMTg0YzYuNzkgMCAxMy4wNiAyLjE4IDE4LjE3IDUuODhhNSA1IDAgMCAxIDcuNzYgMy4yNyAzIDMgMCAwIDEgMS40NyAxLjA1IDUgNSAwIDAgMSAzLjQgNi4yMiA0IDQgMCAwIDEgMS44NyA1LjE4IDQuOTggNC45OCAwIDAgMS0xLjcgOGMuMDIuNDYuMDMuOTMuMDMgMS40djFoLTYydi0xem0uODMtNy4xN2EzMC45IDMwLjkgMCAwIDAtLjYyIDMuNTcgMyAzIDAgMCAxLS42MS00LjJjLjM3LjI4Ljc4LjQ5IDEuMjMuNjN6bTEuNDktNC42MWMtLjM2Ljg3LS42OCAxLjc2LS45NiAyLjY4YTIgMiAwIDAgMS0uMjEtMy43MWMuMzMuNC43My43NSAxLjE3IDEuMDN6bTIuMzItNC41NGMtLjU0Ljg2LTEuMDMgMS43Ni0xLjQ5IDIuNjhhMyAzIDAgMCAxLS4wNy00LjY3IDMgMyAwIDAgMCAxLjU2IDEuOTl6bTEuMTQtMS43Yy4zNS0uNS43Mi0uOTggMS4xLTEuNDZhMSAxIDAgMSAwLTEuMSAxLjQ1em01LjM0LTUuNzdjLTEuMDMuODYtMiAxLjc5LTIuOSAyLjc3YTMgMyAwIDAgMC0xLjExLS43NyAzIDMgMCAwIDEgNC0yem00Mi42NiAyLjc3Yy0uOS0uOTgtMS44Ny0xLjktMi45LTIuNzdhMyAzIDAgMCAxIDQuMDEgMiAzIDMgMCAwIDAtMS4xLjc3em0xLjM0IDEuNTRjLjM4LjQ4Ljc1Ljk2IDEuMSAxLjQ1YTEgMSAwIDEgMC0xLjEtMS40NXptMy43MyA1Ljg0Yy0uNDYtLjkyLS45NS0xLjgyLTEuNS0yLjY4YTMgMyAwIDAgMCAxLjU3LTEuOTkgMyAzIDAgMCAxLS4wNyA0LjY3em0xLjggNC41M2MtLjI5LS45LS42LTEuOC0uOTctMi42Ny40NC0uMjguODQtLjYzIDEuMTctMS4wM2EyIDIgMCAwIDEtLjIgMy43em0xLjE0IDUuNTFjLS4xNC0xLjIxLS4zNS0yLjQtLjYyLTMuNTcuNDUtLjE0Ljg2LS4zNSAxLjIzLS42M2EyLjk5IDIuOTkgMCAwIDEtLjYgNC4yek0xNSAyMTRhMjkgMjkgMCAwIDAtNTcuOTcgMGg1Ny45NnonLyUzRSUzQy9nJTNFJTNDL2clM0UlM0Mvc3ZnJTNFXFxcIik7XFxufVxcblxcbi50aGVtZS1kYXJrICNjaGF0LWFwcCAuY2hhdF9fYmcgLnNlbGVjdC1ub25lIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTI3NDQgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgI2NoYXQtYXBwIC5jaGF0X19iZyBoNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNzQ0ICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogI2ViZWVmZDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgI2NoYXQtYXBwIC5jaGF0X19iZyAubXNnIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMDE2M2EgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgI2NoYXQtYXBwIC5jaGF0X19iZy5jaGF0LWNvbnRlbnQtYXJlYSAuY2hhdC1jb250ZW50LXNjcm9sbC1hcmVhIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMzQsIDQxLCA0NywgMC4yKTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgI2NoYXQtYXBwIC5jaGF0X19iZyAuY2hhdF9faW5wdXQgaW5wdXQge1xcbiAgYm9yZGVyLWNvbG9yOiAjNDE0NTYxICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrICN0b2RvLWFwcCAudG9kby1saXN0IGg2LnRvZG8tdGl0bGUge1xcbiAgY29sb3I6ICNlYmVlZmQ7XFxufVxcblxcbi50aGVtZS1kYXJrICN0b2RvLWFwcCAudG9kby1saXN0IC50b2RvLXRhZ3MgLmNvbi12cy1jaGlwIHtcXG4gIGJhY2tncm91bmQ6ICMxMDE2M2E7XFxuICBjb2xvcjogI2MyYzZkYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAjdG9kby1hcHAgLmxpc3QtaXRlbS1jb21wb25lbnQge1xcbiAgYm9yZGVyLWNvbG9yOiAjNDE0NTYxO1xcbn1cXG5cXG4udGhlbWUtZGFyayAjdG9kby1hcHAgLmxpc3QtaXRlbS1jb21wb25lbnQ6aG92ZXIge1xcbiAgYm94LXNoYWRvdzogMHB4IDAgMCAwcHggIzFFMUUxRTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgI2VtYWlsLWFwcCAuZW1haWxfX21haWxzIC5lbWFpbF9fbWFpbC1pdGVtIC5tYWlsX19tYWlsLWl0ZW0ge1xcbiAgYmFja2dyb3VuZDogIzEwMTYzYTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgI2VtYWlsLWFwcCAuZW1haWxfX21haWxzIC5lbWFpbF9fbWFpbC1pdGVtIC5tYWlsX19tYWlsLWl0ZW06aG92ZXIge1xcbiAgYm94LXNoYWRvdzogMTBweCAwIDAgMHB4ICMxRTFFMUU7XFxufVxcblxcbi50aGVtZS1kYXJrICNlbWFpbC1hcHAgLmVtYWlsX19tYWlscyAuZW1haWxfX21haWwtaXRlbSAubWFpbF9fbWFpbC1pdGVtLm1haWxfX29wZW5lZC1tYWlsIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrICNlbWFpbC1hcHAgLmVtYWlsX19tYWlscyAuZW1haWxfX21haWwtaXRlbTpub3QoOmZpcnN0LW9mLXR5cGUpIC5tYWlsX19tYWlsLWl0ZW0ge1xcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0MTQ1NjE7XFxufVxcblxcbi50aGVtZS1kYXJrICNlbWFpbC1hcHAgLmVtYWlsLXZpZXctc2lkZWJhciAudnMtc2lkZWJhciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNzQ0ICFpbXBvcnRhbnQ7XFxuICBib3JkZXItbGVmdC1jb2xvcjogIzQxNDU2MTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgI2VtYWlsLWFwcCAuZW1haWwtdmlldy1zaWRlYmFyIC5lbWFpbC1oZWFkZXIge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzQxNDU2MTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgI2NhbGVuZGFyLWFwcCAuZnVsbC1jYWxlbmRhci1ib2R5IC53ZWVrLXJvdyAuZGF5LWNlbGwubm90LWN1ci1tb250aCAuZGF5LW51bWJlciB7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI0KTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWFsZXJ0IGNvZGUge1xcbiAgY29sb3I6ICNiOGMyY2M7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWF2YXRhciB7XFxuICBiYWNrZ3JvdW5kOiAjMTAxNjNhICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtYXZhdGFyLmNvbi12cy1hdmF0YXItcHJpbWFyeSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLXByaW1hcnkpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWF2YXRhci5jb24tdnMtYXZhdGFyLXN1Y2Nlc3Mge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmNvbi12cy1hdmF0YXIuY29uLXZzLWF2YXRhci1kYW5nZXIge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1kYW5nZXIpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWF2YXRhci5jb24tdnMtYXZhdGFyLXdhcm5pbmcge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy13YXJuaW5nKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmNvbi12cy1hdmF0YXIuY29uLXZzLWF2YXRhci1pbmZvIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtaW5mbyksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtYXZhdGFyLmNvbi12cy1hdmF0YXItZGFyayB7XFxuICBiYWNrZ3JvdW5kOiAjYjhjMmNjICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrICNwcm9maWxlLXBhZ2UgLnByb2ZpbGUtaGVhZGVyIC5wcm9maWxlLWhlYWRlci1uYXYge1xcbiAgYmFja2dyb3VuZDogIzEwMTYzYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAjZmFxLXBhZ2UgLmZhcS1iZyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtYnJlYWRjcnVtYi0tb2wgYSwgLnRoZW1lLWRhcmsgLnZzLWJyZWFkY3J1bWItLW9sIC52cy1icmVhZGNydW0tLXNlcGFyYXRvciB7XFxuICBjb2xvcjogI2RhZTFlNztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWJ1dHRvbi1kYXJrLnZzLWJ1dHRvbi1maWxsZWQge1xcbiAgYmFja2dyb3VuZDogI2I4YzJjYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtYnV0dG9uLWRhcmsudnMtYnV0dG9uLWZpbGxlZCAudnMtYnV0dG9uLS10ZXh0IHtcXG4gIGNvbG9yOiAjMUUxRTFFO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZGVtby10ZXh0LWRhcmsgLnZzLWJ1dHRvbi10ZXh0IHtcXG4gIGNvbG9yOiAjYjhjMmNjO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtYnV0dG9uLWRhcmsudnMtYnV0dG9uLWJvcmRlciwgLnRoZW1lLWRhcmsgLnZzLWJ1dHRvbi1kYXJrLnZzLWJ1dHRvbi1mbGF0LCAudGhlbWUtZGFyayAudnMtYnV0dG9uLWRhcmsudnMtYnV0dG9uLWxpbmUge1xcbiAgYm9yZGVyLWNvbG9yOiAjYjhjMmNjO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtYnV0dG9uLWRhcmsgLnZzLWJ1dHRvbi0tdGV4dCwgLnRoZW1lLWRhcmsgLnZzLWJ1dHRvbi1kYXJrIC52cy1pY29uIHtcXG4gIGNvbG9yOiAjYjhjMmNjO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWNoaXAge1xcbiAgYmFja2dyb3VuZDogIzEwMTYzYTtcXG4gIGNvbG9yOiAjYzJjNmRjICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtY2hpcC52cy1jaGlwLXByaW1hcnkge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtY2hpcC52cy1jaGlwLXN1Y2Nlc3Mge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwgMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtY2hpcC52cy1jaGlwLWRhbmdlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLWRhbmdlciksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWNoaXAudnMtY2hpcC13YXJuaW5nIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtd2FybmluZyksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWNoaXAudnMtY2hpcC1pbmZvIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtaW5mbyksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWNoaXAudnMtY2hpcC1kYXJrIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtZGFyayksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWNoaXAgLmNvbi12cy1hdmF0YXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2MmM0OSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWNoaXAuY29uLWNvbG9yIHtcXG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tY2hpcHMgLmNvbi1jaGlwcy0taW5wdXQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWRpdmlkZXIgLnZzLWRpdmlkZXItYm9yZGVyIHtcXG4gIGJvcmRlci1jb2xvcjogIzQxNDU2MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtZGl2aWRlciAudnMtZGl2aWRlci1ib3JkZXIudnMtZGl2aWRlci1ib3JkZXItcHJpbWFyeSB7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1kaXZpZGVyIC52cy1kaXZpZGVyLWJvcmRlci52cy1kaXZpZGVyLWJvcmRlci1zdWNjZXNzIHtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWRpdmlkZXIgLnZzLWRpdmlkZXItYm9yZGVyLnZzLWRpdmlkZXItYm9yZGVyLWRhbmdlciB7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWRpdmlkZXIgLnZzLWRpdmlkZXItYm9yZGVyLnZzLWRpdmlkZXItYm9yZGVyLXdhcm5pbmcge1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtZGl2aWRlciAudnMtZGl2aWRlci1ib3JkZXIudnMtZGl2aWRlci1ib3JkZXItaW5mbyB7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdnMtaW5mbyksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1kaXZpZGVyIC52cy1kaXZpZGVyLWJvcmRlci52cy1kaXZpZGVyLWJvcmRlci1kYXJrIHtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSgxODQsIDE5NCwgMjA0LCAwLjUpICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1kaXZpZGVyIC52cy1kaXZpZGVyLS10ZXh0IHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgY29sb3I6ICNjMmM2ZGMgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWRpdmlkZXIgLnZzLWRpdmlkZXItLXRleHQgLnZzLWljb24ge1xcbiAgY29sb3I6ICNjMmM2ZGM7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1kcm9wZG93bi0tbWVudSwgLnRoZW1lLWRhcmsgLnZzLWRyb3Bkb3duLS1tZW51LS1hZnRlciB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbiAgYm9yZGVyLWNvbG9yOiAjNDE0NTYxO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtZHJvcGRvd24tLW1lbnUgLmNvbi1kcm9wZG93bi0tZ3JvdXAtdWwsIC50aGVtZS1kYXJrIC52cy1kcm9wZG93bi0tbWVudS0tYWZ0ZXIgLmNvbi1kcm9wZG93bi0tZ3JvdXAtdWwge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWRyb3Bkb3duLS1tZW51IC52cy1kcm9wZG93bi0taXRlbSAudnMtZHJvcGRvd24tLWl0ZW0tbGluay5kaXNhYmxlZCwgLnRoZW1lLWRhcmsgLnZzLWRyb3Bkb3duLS1tZW51LS1hZnRlciAudnMtZHJvcGRvd24tLWl0ZW0gLnZzLWRyb3Bkb3duLS1pdGVtLWxpbmsuZGlzYWJsZWQge1xcbiAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmNvbi12cy1sb2FkaW5nIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMTYsIDIyLCA1OCwgMC42KTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmNvbi12cy1sb2FkaW5nIGg0LnRpdGxlLWxvYWRpbmcge1xcbiAgY29sb3I6ICNjMmM2ZGM7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1saXN0IC52cy1saXN0LS1oZWFkZXIge1xcbiAgYm94LXNoYWRvdzogMCA3cHggN3B4IC01cHggcmdiYSgzOCwgNDQsIDczLCAwLjgpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtbGlzdCAudnMtbGlzdC0taXRlbSB7XFxuICBib3JkZXItY29sb3I6IHJnYmEoMTk0LCAxOTgsIDIyMCwgMC4wOCk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1uYXZiYXIge1xcbiAgYm9yZGVyLWNvbG9yOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtbmF2YmFyIGxpLnZzLW5hdmJhci0taXRlbSBhIHtcXG4gIGNvbG9yOiAjZGFlMWU3O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtbmF2YmFyIGxpLnZzLW5hdmJhci0taXRlbS5pcy1hY3RpdmUtaXRlbSBhIHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtbmF2YmFyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMDE2M2EgIWltcG9ydGFudDtcXG4gIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggMCByZ2JhKDAsIDAsIDAsIDAuNSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1wYWdpbmF0aW9uLS1uYXYgLnZzLXBhZ2luYXRpb24tLXVsIHtcXG4gIGJhY2tncm91bmQ6ICMxMDE2M2E7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1wYWdpbmF0aW9uLS1uYXYgLnZzLXBhZ2luYXRpb24tLXVsIC52cy1wYWdpbmF0aW9uLS1saSB7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLXBhZ2luYXRpb24tLW5hdiAudnMtcGFnaW5hdGlvbi0tdWwgLml0ZW0tcGFnaW5hdGlvbi5pcy1jdXJyZW50IHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtcGFnaW5hdGlvbi0tbmF2IC52cy1wYWdpbmF0aW9uLS1idXR0b25zIHtcXG4gIGJhY2tncm91bmQ6ICMxMDE2M2E7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmNvbi12cy1wb3B1cCAudnMtcG9wdXAge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OSAhaW1wb3J0YW50O1xcbiAgY29sb3I6ICNjMmM2ZGM7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtcG9wdXAgLnZzLXBvcHVwIC52cy1wb3B1cC0taGVhZGVyIHtcXG4gIGJhY2tncm91bmQ6ICMxMDE2M2EgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmNvbi12cy1wb3B1cCAudnMtcG9wdXAgLnZzLXBvcHVwLS1oZWFkZXIgLnZzLXBvcHVwLS1jbG9zZSB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5ICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgI3BvcHVwLWRlbW8gLmRlbW8tYWxpZ25tZW50IC52cy1idXR0b24ge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAjcG9wdXAtZGVtbyAuZGVtby1hbGlnbm1lbnQgLnZzLWJ1dHRvbjpob3ZlciB7XFxuICBib3gtc2hhZG93OiAjMjYyYzQ5IDBweCA4cHggMjVweCAtOHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1zaWRlYmFyIHtcXG4gIGJhY2tncm91bmQ6ICMxMDE2M2E7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1zaWRlYmFyIGg0LCAudGhlbWUtZGFyayAudnMtc2lkZWJhciBoNSB7XFxuICBjb2xvcjogI2ViZWVmZDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLXNpZGViYXIgLnZzLXNpZGViYXItLWhlYWRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjNDE0NTYxO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtc2lkZWJhciAudnMtc2lkZWJhci0taXRlbXMgLnZzLXNpZGViYXItLWl0ZW0gYSB7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLXNpZGViYXIgLnZzLXNpZGViYXItZ3JvdXAudnMtc2lkZWJhci1ncm91cC1hY3RpdmUgPiAuZ3JvdXAtaGVhZGVyIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtc2xpZGVyIC52cy1zbGlkZXIge1xcbiAgYmFja2dyb3VuZDogcmdiYSgzOCwgNDQsIDczLCAwLjUpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudWwtdGFicyAudnMtdGFicy0tbGkgYnV0dG9uIHtcXG4gIGNvbG9yOiAjYzJjNmRjO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtdGFicy1kYXJrIC5hY3RpdmVDaGlsZCBidXR0b24sIC50aGVtZS1kYXJrIC52cy10YWJzLWRhcmsgYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcXG4gIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy10YWJzLWRhcmsgLmxpbmUtdnMtdGFicyB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMzBkZWcsICNiOGMyY2MsIHJnYmEoMTg0LCAxOTQsIDIwNCwgMC41KSkgIWltcG9ydGFudDtcXG4gIGJveC1zaGFkb3c6IDAgMCA4cHggMCByZ2JhKDE4NCwgMTk0LCAyMDQsIDAuNCkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLXRvb2x0aXAudnMtdG9vbHRpcC1kYXJrIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdXBsb2FkIC5jb24taW5wdXQtdXBsb2FkLCAudGhlbWUtZGFyayAuY29uLXVwbG9hZCAuY29uLWltZy11cGxvYWQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmNvbi11cGxvYWQgLmJ0bi11cGxvYWQtYWxsIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMDE2M2E7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdXBsb2FkIC5jb24taW5wdXQtdXBsb2FkIHtcXG4gIGJvcmRlci1jb2xvcjogIzQxNDU2MTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgaW5wdXQge1xcbiAgYmFja2dyb3VuZDogIzEwMTYzYTtcXG4gIGNvbG9yOiAjYzJjNmRjO1xcbn1cXG5cXG4udGhlbWUtZGFyayBpbnB1dCB+IC52cy1wbGFjZWhvbGRlci1sYWJlbCwgLnRoZW1lLWRhcmsgaW5wdXQgfiAudnMtaW5wdXQtLXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjYzJjNmRjO1xcbn1cXG5cXG4udGhlbWUtZGFyayA6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNjMmM2ZGMgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjYzJjNmRjICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNjMmM2ZGMgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNjMmM2ZGMgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgOjpwbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2MyYzZkYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtaW5wdXQtLWljb24ge1xcbiAgY29sb3I6ICNjMmM2ZGM7XFxuICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMTk0LCAxOTgsIDIyMCwgMC4yKTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWlucHV0LS1pY29uLmljb24tYWZ0ZXIge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMTk0LCAxOTgsIDIyMCwgMC4yKTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWlucHV0LW51bWJlciB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtaW5wdXQtbnVtYmVyIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1sZXNzOmRpc2FibGVkLCAudGhlbWUtZGFyayAudnMtaW5wdXQtbnVtYmVyIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1sZXNzLmxpbWl0LCAudGhlbWUtZGFyayAudnMtaW5wdXQtbnVtYmVyIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzOmRpc2FibGVkLCAudGhlbWUtZGFyayAudnMtaW5wdXQtbnVtYmVyIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzLmxpbWl0IHtcXG4gIG9wYWNpdHk6IDAuNzU7XFxuICBiYWNrZ3JvdW5kOiAjYjhjMmNjO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtY29uLXRleHRhcmVhIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWNvbi10ZXh0YXJlYSAudnMtdGV4dGFyZWEge1xcbiAgY29sb3I6ICNjMmM2ZGM7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1jb24tdGV4dGFyZWEgLnZzLXRleHRhcmVhOmZvY3VzIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1jb24tdGV4dGFyZWEuZm9jdXN4IHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1jb24tdGV4dGFyZWEuZm9jdXN4IGg0IHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtY29uLXRleHRhcmVhLnRleHRhcmVhLWRhbmdlciAudnMtdGV4dGFyZWEge1xcbiAgY29sb3I6IHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwgMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1zd2l0Y2gge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLXN3aXRjaC52cy1zd2l0Y2gtcHJpbWFyeS52cy1zd2l0Y2gtYWN0aXZlIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtc3dpdGNoLnZzLXN3aXRjaC1zdWNjZXNzLnZzLXN3aXRjaC1hY3RpdmUge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwgMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1zd2l0Y2gudnMtc3dpdGNoLWRhbmdlci52cy1zd2l0Y2gtYWN0aXZlIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwgMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1zd2l0Y2gudnMtc3dpdGNoLXdhcm5pbmcudnMtc3dpdGNoLWFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLCAxKTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLXN3aXRjaC52cy1zd2l0Y2gtaW5mby52cy1zd2l0Y2gtYWN0aXZlIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtaW5mbyksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtc3dpdGNoLnZzLXN3aXRjaC1kYXJrLnZzLXN3aXRjaC1hY3RpdmUge1xcbiAgYmFja2dyb3VuZDogI2I4YzJjYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLXJhZGlvLWRhcmsgLnZzLXJhZGlvLS1jaXJjbGUge1xcbiAgYmFja2dyb3VuZDogI2I4YzJjYztcXG4gIGJveC1zaGFkb3c6IDAgM3B4IDEycHggMCByZ2JhKDE4NCwgMTk0LCAyMDQsIDAuNCk7XFxufVxcblxcbi50aGVtZS1kYXJrIC5vcC1ibG9jayB7XFxuICBib3gtc2hhZG93OiAxcHggMXB4IDEwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtaW5wdXQtZGFyayAudnMtaW5wdXQtLWlucHV0OmZvY3VzIHtcXG4gIGJvcmRlci1jb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtaW5wdXQtZGFyayAudnMtaW5wdXQtLWlucHV0OmZvY3VzIH4gLnZzLWlucHV0LS1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2I4YzJjYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ1ZS1mb3JtLXdpemFyZCAud2l6YXJkLWljb24tY2lyY2xlIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxuICBib3JkZXItY29sb3I6ICMyMTI3NDQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52dWUtZm9ybS13aXphcmQgLndpemFyZC1uYXYtcGlsbHMgPiBsaSA+IGEge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi50aGVtZS1kYXJrIC52dWUtZm9ybS13aXphcmQgLndpemFyZC1uYXYtcGlsbHMgPiBsaSA+IGEgLnN0ZXBUaXRsZSB7XFxuICBjb2xvcjogI2RhZTFlNztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ1ZS1mb3JtLXdpemFyZCAud2l6YXJkLW5hdi1waWxscyA+IGxpID4gYTpob3ZlciB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ1ZS1mb3JtLXdpemFyZCAud2l6YXJkLW5hdmlnYXRpb24gLndpemFyZC1uYXYgLnN0ZXBUaXRsZSB7XFxuICBjb2xvcjogI2RhZTFlNztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWNvbi10YWJsZSAudnMtY29uLXRib2R5IHtcXG4gIGJhY2tncm91bmQ6ICMyMTI3NDQ7XFxuICBib3JkZXI6IDJweCBzb2xpZCAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtY29uLXRhYmxlIC52cy1jb24tdGJvZHkgLnZzLXRhYmxlLS10Ym9keS10YWJsZSB0ciB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtY29uLXRhYmxlIC52cy1jb24tdGJvZHkgLnZzLXRhYmxlLS10Ym9keS10YWJsZSAudnMtdGFibGUtLXRoZWFkIHRyIHtcXG4gIGJhY2tncm91bmQ6ICMyMTI3NDQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1jb24tdGFibGUgLmNvbi1lZGl0LXRkIHtcXG4gIGJhY2tncm91bmQ6ICMyMTI3NDQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1jb24tdGFibGUgLmlzLXNlbGVjdGVkIC50ci12YWx1ZXMge1xcbiAgYmFja2dyb3VuZDogIzIxMjc0NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtdG9vbHRpcC5saWdodCB7XFxuICBiYWNrZ3JvdW5kOiAjMjEyNzQ0O1xcbiAgYm9yZGVyLWNvbG9yOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtdG9vbHRpcC5saWdodCAuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcXG4gIGJhY2tncm91bmQ6ICMyMTI3NDQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAge1xcbiAgYmFja2dyb3VuZDogIzIxMjc0NDtcXG4gIGJvcmRlci1jb2xvcjogIzI2MmM0OTtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmJlZm9yZSwgLnRoZW1lLWRhcmsgLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjMjEyNzQ0O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIHtcXG4gIGJhY2tncm91bmQ6ICMyMTI3NDQ7XFxuICBib3JkZXItY29sb3I6ICMyNjJjNDk7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUsIC50aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICMyMTI3NDQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLWNhbnZhcyB0ZXh0IHtcXG4gIGZpbGw6ICNmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXBpZS1zZXJpZXMgcGF0aCB7XFxuICBzdHJva2U6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1sZWdlbmQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcyAuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCB7XFxuICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtdG9vbGJhciAuYXBleGNoYXJ0cy1tZW51IHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxuICBib3JkZXItY29sb3I6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy10b29sYmFyIC5hcGV4Y2hhcnRzLW1lbnUgLmFwZXhjaGFydHMtbWVudS1pdGVtIHtcXG4gIGJhY2tncm91bmQ6ICMyMTI3NDQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcG9seWdvbiB7XFxuICBmaWxsOiAjMjYyYzQ5O1xcbiAgc3Ryb2tlOiAjMjEyNzQ0O1xcbn1cXG5cXG4udGhlbWUtZGFyayAuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtdHJhY2sgcGF0aCB7XFxuICBzdHJva2U6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbjpub3QoLnNlbGVjdGVkKTpob3ZlciBzdmcsXFxuICAudGhlbWUtZGFyayAuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtem9vbS1pY29uOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHN2ZyxcXG4gIC50aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy16b29tLWluLWljb246aG92ZXIgc3ZnLFxcbiAgLnRoZW1lLWRhcmsgLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXpvb20tb3V0LWljb246aG92ZXIgc3ZnLFxcbiAgLnRoZW1lLWRhcmsgLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXJlc2V0LXpvb20taWNvbjpob3ZlciBzdmcsXFxuICAudGhlbWUtZGFyayAuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtbWVudS1pY29uOmhvdmVyIHN2ZyB7XFxuICBmaWxsOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtZ3JpZGxpbmUge1xcbiAgc3Ryb2tlOiAjNDE0NTYxO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudG9rZW4ub3BlcmF0b3IsIC50aGVtZS1kYXJrIC50b2tlbi5lbnRpdHksIC50aGVtZS1kYXJrIC50b2tlbi51cmwsIC50aGVtZS1kYXJrIC5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZywgLnRoZW1lLWRhcmsgLnN0eWxlIC50b2tlbi5zdHJpbmcge1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5zZWFyY2gtdGFiLWZpbHRlciB7XFxuICBiYWNrZ3JvdW5kOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtc2VsZWN0LS1vcHRpb25zIHtcXG4gIGJhY2tncm91bmQ6ICMxMDE2M2E7XFxuICBib3JkZXItY29sb3I6IHJnYmEoMTg0LCAxOTQsIDIwNCwgMC4yKTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLXNlbGVjdC0tb3B0aW9ucyBzcGFuIHtcXG4gIGNvbG9yOiAjYzJjNmRjO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudnMtc2VsZWN0LS1vcHRpb25zIC52cy1zZWxlY3QtLWl0ZW0ge1xcbiAgY29sb3I6ICNiOGMyY2M7XFxuICBib3JkZXItY29sb3I6IHJnYmEoMTg0LCAxOTQsIDIwNCwgMC4yKTtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1zZWxlY3QtLW9wdGlvbnMgLnZzLXNlbGVjdC0taXRlbTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAucXVpbGwtZWRpdG9yIC5xbC10b29sYmFyIGJ1dHRvbiB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnF1aWxsLWVkaXRvciAucWwtdG9vbGJhciBidXR0b24gc3ZnIHBhdGgge1xcbiAgc3Ryb2tlOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAucXVpbGwtZWRpdG9yIC5xbC10b29sYmFyIC5xbC1maWxsIHtcXG4gIGZpbGw6ICNmZmY7XFxufVxcblxcbi50aGVtZS1kYXJrIC5xdWlsbC1lZGl0b3IgLnFsLXRvb2xiYXIgLnFsLXN0cm9rZSB7XFxuICBzdHJva2U6ICNmZmY7XFxufVxcblxcbi50aGVtZS1kYXJrIC5xdWlsbC1lZGl0b3IgLnFsLXRvb2xiYXIgLnFsLXBpY2tlciB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnF1aWxsLWVkaXRvciAucWwtdG9vbGJhciAucWwtcGlja2VyIC5xbC1waWNrZXItb3B0aW9ucyB7XFxuICBiYWNrZ3JvdW5kOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAucXVpbGwtZWRpdG9yIC5xbC1lZGl0b3IucWwtYmxhbms6OmJlZm9yZSB7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuYWN0aXZpdHktdGltZWxpbmUge1xcbiAgYm9yZGVyLWNvbG9yOiAjNDE0NTYxO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudmRwLWRhdGVwaWNrZXIgLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudmRwLWRhdGVwaWNrZXIgLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnByZXY6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC50aGVtZS1kYXJrIC52ZHAtZGF0ZXBpY2tlciAudmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAubmV4dDpub3QoLmRpc2FibGVkKTpob3ZlciwgLnRoZW1lLWRhcmsgLnZkcC1kYXRlcGlja2VyIC52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgaGVhZGVyIC51cDpub3QoLmRpc2FibGVkKTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudmRwLWRhdGVwaWNrZXIgLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnByZXY6YWZ0ZXIge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudmRwLWRhdGVwaWNrZXIgLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLm5leHQ6YWZ0ZXIge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZmY7XFxufVxcblxcbi50aGVtZS1kYXJrIC52ZHAtZGF0ZXBpY2tlciAudmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5kaXNhYmxlZCB7XFxuICBjb2xvcjogcmdiYSgxODQsIDE5NCwgMjA0LCAwLjYpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudmRwLWRhdGVwaWNrZXIgLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbC5oaWdobGlnaHRlZCB7XFxuICBiYWNrZ3JvdW5kOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudmRwLWRhdGVwaWNrZXIgaW5wdXQge1xcbiAgYm9yZGVyOiAwO1xcbiAgcGFkZGluZzogMTBweDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWNvbGxhcHNlLnNoYWRvdyB7XFxuICBib3gtc2hhZG93OiAwIDBweCA4cHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWNvbGxhcHNlIC52cy1jb2xsYXBzZS1pdGVtIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1jb2xsYXBzZS5ib3JkZXIge1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52cy1jb2xsYXBzZS5ib3JkZXIgLnZzLWNvbGxhcHNlLWl0ZW0ge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZzLWNvbGxhcHNlLm1hcmdpbiAudnMtY29sbGFwc2UtaXRlbSB7XFxuICBib3gtc2hhZG93OiAwIDJweCAxNXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWF1dG8tc3VnZ2VzdCAuYXV0by1zdWdnZXN0LXN1Z2dlc3Rpb25zLWxpc3Qge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmZvb3Rlci1zdGlja3kgLnRoZS1mb290ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEwMTYzYTtcXG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGhlYWRlciB7XFxuICBiYWNrZ3JvdW5kOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGhlYWRlciAuY29uLXRpdGxlLWFmdGVyIGgzIHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGhlYWRlciAudnMtZGlhbG9nLWNhbmNlbCwgLnRoZW1lLWRhcmsgLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyBoZWFkZXIgLnZzLWljb24ge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGZvb3RlciAudnMtYnV0dG9uLS10ZXh0IHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIC52cy1kaWFsb2ctdGV4dCAuZGF0ZS1sYWJlbCB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyBpbnB1dCwgLnRoZW1lLWRhcmsgLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyAudnMtY29uLXRleHRhcmVhIHtcXG4gIGJhY2tncm91bmQ6ICMxMDE2M2E7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgLmNvbi11cGxvYWQgLmNvbi1pbnB1dC11cGxvYWQsXFxuICAgIC50aGVtZS1kYXJrIC5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgLmNvbi11cGxvYWQgLmNvbi1pbWctdXBsb2FkIHtcXG4gIGJhY2tncm91bmQ6ICMxMDE2M2E7XFxufVxcblxcbi50aGVtZS1kYXJrIC5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgLnF1aWxsLWVkaXRvciB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtZGFyayAjdGhlbWUtY3VzdG9taXplciAudnMtc3dpdGNoLFxcbiAgLnRoZW1lLWRhcmsgI3RoZW1lLWN1c3RvbWl6ZXIgaW5wdXQge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmFkZC1uZXctZGF0YS1zaWRlYmFyIGlucHV0IHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC52cy1wYWdpbmF0aW9uLS1uYXYgLnZzLXBhZ2luYXRpb24tLXVsIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC52cy1wYWdpbmF0aW9uLS1uYXYgLnZzLXBhZ2luYXRpb24tLXVsIC52cy1wYWdpbmF0aW9uLS1saSB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQgLnZzLXBhZ2luYXRpb24tLW5hdiAudnMtcGFnaW5hdGlvbi0tYnV0dG9ucyB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC5jb24tdnMtYXZhdGFyIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQgLmNvbi12cy1hdmF0YXIuY29uLXZzLWF2YXRhci1wcmltYXJ5IHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC5jb24tdnMtYXZhdGFyLmNvbi12cy1hdmF0YXItc3VjY2VzcyB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAuY29uLXZzLWF2YXRhci5jb24tdnMtYXZhdGFyLWRhbmdlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLWRhbmdlciksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC5jb24tdnMtYXZhdGFyLmNvbi12cy1hdmF0YXItd2FybmluZyB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAuY29uLXZzLWF2YXRhci5jb24tdnMtYXZhdGFyLWluZm8ge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1pbmZvKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQgLmNvbi12cy1hdmF0YXIuY29uLXZzLWF2YXRhci1kYXJrIHtcXG4gIGJhY2tncm91bmQ6ICNiOGMyY2MgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQgLmNvbi12cy1jaGlwIHtcXG4gIGJhY2tncm91bmQ6ICMyNjJjNDk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC5jb24tdnMtY2hpcC52cy1jaGlwLXByaW1hcnkge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC5jb24tdnMtY2hpcC52cy1jaGlwLXN1Y2Nlc3Mge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwgMSk7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC5jb24tdnMtY2hpcC52cy1jaGlwLWRhbmdlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLWRhbmdlciksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAuY29uLXZzLWNoaXAudnMtY2hpcC13YXJuaW5nIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtd2FybmluZyksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAuY29uLXZzLWNoaXAudnMtY2hpcC1pbmZvIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtaW5mbyksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAuY29uLXZzLWNoaXAudnMtY2hpcC1kYXJrIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtZGFyayksIDEpO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAuY29uLXZzLWNoaXAgLmNvbi12cy1hdmF0YXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEwMTYzYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCAuY29uLWNoaXBzIC5jb24tY2hpcHMtLWlucHV0IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMDE2M2EgIWltcG9ydGFudDtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQgLnZzLW5hdmJhciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyYzQ5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50aGVtZS1kYXJrIC52eC1jYXJkIC52cy1uYXZiYXIgLnZzLW5hdmJhci0tYnRuLXJlc3BvbnNpdmUgLmJ0bi1yZXNwb25zaXZlLWxpbmUge1xcbiAgYmFja2dyb3VuZDogI2MyYzZkYztcXG59XFxuXFxuLnRoZW1lLWRhcmsgLnZ4LWNhcmQgLnZzLW5hdmJhci1zaGFkb3cgLnZzLW5hdmJhci0taXRlbS5pcy1hY3RpdmUtaXRlbSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAudngtY2FyZCBpbnB1dCB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX3RoZW1lU2VtaURhcmsuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gU3R5bGVzIGZvciBzZW1pIGRhcmsgdGhlbWVcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4udGhlbWUtc2VtaS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtc2VtaS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAuc2hhZG93LWJvdHRvbSB7XFxuICB3aWR0aDogOTQlO1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzBmMTY0MiA0NCUsIHJnYmEoMTUsIDIyLCA2NiwgMC41MSkgNzMlLCByZ2JhKDQ0LCA0OCwgNjAsIDApIDEwMCUpO1xcbn1cXG5cXG4udGhlbWUtc2VtaS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciAuZmVhdGhlci1pY29uLCAudGhlbWUtc2VtaS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciBzcGFuIHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udGhlbWUtc2VtaS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciBhIC5mZWF0aGVyLWljb24gc3ZnLCAudGhlbWUtc2VtaS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciBhIC5mZWF0aGVyLWljb24gc3BhbiB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLnRoZW1lLXNlbWktZGFyayAubWFpbi1tZW51LXNpZGViYXIgLnNjcm9sbC1hcmVhLS1tYWluLXNpZGViYXIgLnZzLXNpZGViYXItZ3JvdXAudnMtc2lkZWJhci1ncm91cC1vcGVuID4gLmdyb3VwLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kOiAjMjYyYzQ5O1xcbn1cXG5cXG4udGhlbWUtc2VtaS1kYXJrIC5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciAudnMtc2lkZWJhci1ncm91cC52cy1zaWRlYmFyLWdyb3VwLWFjdGl2ZSA+IC5ncm91cC1oZWFkZXIge1xcbiAgYmFja2dyb3VuZDogIzI2MmM0OTtcXG59XFxuXFxuLnRoZW1lLXNlbWktZGFyayAubWFpbi1tZW51LXNpZGViYXIgLnNjcm9sbC1hcmVhLS1tYWluLXNpZGViYXIgLmNvbi12cy1jaGlwIHtcXG4gIGJveC1zaGFkb3c6IDBweCAwcHggNHB4IDJweCAjMjYyYzQ5O1xcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX3JvdXRlckFuaW1hdGlvbnMuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gcm91dGVyIGFuaW1hdGlvbnNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKiBaT09NIEZBREUgKi9cXG5cXG4uem9vbS1mYWRlLWVudGVyLWFjdGl2ZSxcXG4uem9vbS1mYWRlLWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjM1cywgb3BhY2l0eSAuMjhzIGVhc2UtaW4tb3V0O1xcbn1cXG5cXG4uem9vbS1mYWRlLWVudGVyIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG5cXG4uem9vbS1mYWRlLWxlYXZlLXRvIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wMyk7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG5cXG4vKiBGQURFIFRSTkFTSVRJT04gKi9cXG5cXG4uZmFkZS1lbnRlci1hY3RpdmUsXFxuLmZhZGUtbGVhdmUtYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjI4cyBlYXNlLWluLW91dDtcXG59XFxuXFxuLmZhZGUtZW50ZXIsXFxuLmZhZGUtbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuXFxuLyogUEFHRSBTTElERSAqL1xcblxcbi5zbGlkZS1mYWRlLWVudGVyLWFjdGl2ZSwgLnNsaWRlLWZhZGUtbGVhdmUtYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjM1cywgdHJhbnNmb3JtIC40cztcXG59XFxuXFxuLnNsaWRlLWZhZGUtZW50ZXIge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzAlKTtcXG59XFxuXFxuLnNsaWRlLWZhZGUtbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzMCUpO1xcbn1cXG5cXG4vKiBaT09NIE9VVCAqL1xcblxcbi56b29tLW91dC1lbnRlci1hY3RpdmUsIC56b29tLW91dC1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMzVzIGVhc2UtaW4tb3V0LCB0cmFuc2Zvcm0gLjQ1cyBlYXNlLW91dDtcXG59XFxuXFxuLnpvb20tb3V0LWVudGVyLCAuem9vbS1vdXQtbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxufVxcblxcbi8qIFVORk9MRCBTTElERSAqL1xcblxcbi5mYWRlLWJvdHRvbS1lbnRlci1hY3RpdmUsIC5mYWRlLWJvdHRvbS1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuM3MsIHRyYW5zZm9ybSAuMzVzO1xcbn1cXG5cXG4uZmFkZS1ib3R0b20tZW50ZXIge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOCUpO1xcbn1cXG5cXG4uZmFkZS1ib3R0b20tbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4JSk7XFxufVxcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBfdHJhbnNpdGlvbnMuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogVHJhbnNpdGlvbiBzdHlsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4ubGlzdC1sZWF2ZS1hY3RpdmUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbn1cXG5cXG4ubGlzdC1lbnRlcixcXG4ubGlzdC1sZWF2ZS10byB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpO1xcbn1cXG5cXG4ubGlzdC1lbnRlci11cC1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlzdC1lbnRlci11cC1lbnRlciB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpO1xcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX2N1c3RvbUNsYXNzZXMuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gdGhpcyBmaWxlIGNvbnRhaW5lcyBjdXN0b20gaGVscGVyIGNsYXNzZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLnZ4LXJvdyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbiAgbWFyZ2luOiAwIC0xcmVtO1xcbn1cXG5cXG4udngtcm93ID4gLnZ4LWNvbCB7XFxuICBwYWRkaW5nOiAwIDFyZW07XFxufVxcblxcbi52eC1yb3cubWF0Y2gtaGVpZ2h0ID4gLnZ4LWNvbCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG5cXG4udngtcm93Lm5vLWd1dHRlciB7XFxuICBtYXJnaW46IDA7XFxufVxcblxcbi52eC1yb3cubm8tZ3V0dGVyID4gLnZ4LWNvbCB7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4udGV4dC1wcmltYXJ5IHtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLXZzLXByaW1hcnkpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGV4dC1zdWNjZXNzIHtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGV4dC1kYW5nZXIge1xcbiAgY29sb3I6IHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRleHQtd2FybmluZyB7XFxuICBjb2xvcjogcmdiYSh2YXIoLS12cy13YXJuaW5nKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRleHQtZGFyayB7XFxuICBjb2xvcjogcmdiYSh2YXIoLS12cy1kYXJrKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJnLXByaW1hcnkge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJnLXN1Y2Nlc3Mge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJnLWRhbmdlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXZzLWRhbmdlciksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5iZy13YXJuaW5nIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdnMtd2FybmluZyksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5iZy1kYXJrIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdnMtZGFyayksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ib3JkZXItcHJpbWFyeSB7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ib3JkZXItc3VjY2VzcyB7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdnMtc3VjY2VzcyksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ib3JkZXItZGFuZ2VyIHtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS12cy1kYW5nZXIpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYm9yZGVyLXdhcm5pbmcge1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYm9yZGVyLWRhcmsge1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXZzLWRhcmspLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaG92ZXJcXFxcOmJnLXByaW1hcnk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmhvdmVyXFxcXDpiZy1zdWNjZXNzOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdnMtc3VjY2VzcyksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ob3ZlclxcXFw6YmctZGFuZ2VyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmhvdmVyXFxcXDpiZy13YXJuaW5nOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdnMtd2FybmluZyksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ob3ZlclxcXFw6YmctZGFyazpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXZzLWRhcmspLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaG92ZXJcXFxcOnRleHQtcHJpbWFyeTpob3ZlciB7XFxuICBjb2xvcjogcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmhvdmVyXFxcXDp0ZXh0LXN1Y2Nlc3M6aG92ZXIge1xcbiAgY29sb3I6IHJnYmEodmFyKC0tdnMtc3VjY2VzcyksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ob3ZlclxcXFw6dGV4dC1kYW5nZXI6aG92ZXIge1xcbiAgY29sb3I6IHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwgMSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmhvdmVyXFxcXDp0ZXh0LXdhcm5pbmc6aG92ZXIge1xcbiAgY29sb3I6IHJnYmEodmFyKC0tdnMtd2FybmluZyksIDEpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ob3ZlclxcXFw6dGV4dC1kYXJrOmhvdmVyIHtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLXZzLWRhcmspLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmctcHJpbWFyeS1ncmFkaWVudCB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTE4ZGVnLCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLCAxKSwgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMC43KSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJnLXN1Y2Nlc3MtZ3JhZGllbnQge1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDExOGRlZywgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwgMSksIHJnYmEodmFyKC0tdnMtc3VjY2VzcyksIDAuNykpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5iZy1kYW5nZXItZ3JhZGllbnQge1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDExOGRlZywgcmdiYSh2YXIoLS12cy1kYW5nZXIpLCAxKSwgcmdiYSh2YXIoLS12cy1kYW5nZXIpLCAwLjcpKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmctd2FybmluZy1ncmFkaWVudCB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTE4ZGVnLCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLCAxKSwgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwgMC43KSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJnLWRhcmstZ3JhZGllbnQge1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDExOGRlZywgcmdiYSh2YXIoLS12cy1kYXJrKSwgMSksIHJnYmEodmFyKC0tdnMtZGFyayksIDAuNykpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5idG4tZ3JvdXAgYnV0dG9uIHtcXG4gIHBhZGRpbmc6IDFyZW0gMS4yNXJlbSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnRuLWdyb3VwIDpub3QoOmxhc3QtY2hpbGQpIHtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XFxufVxcblxcbi5idG4tZ3JvdXAgOm5vdCg6Zmlyc3QtY2hpbGQpIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xcbn1cXG5cXG4uYnRuLWdyb3VwLXZlcnRpY2FsIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbn1cXG5cXG4uYnRuLWdyb3VwLXZlcnRpY2FsIGJ1dHRvbiB7XFxuICBwYWRkaW5nOiAxcmVtIDEuMjVyZW0gIWltcG9ydGFudDtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5cXG4uYnRuLWdyb3VwLXZlcnRpY2FsIDpub3QoOmZpcnN0LWNoaWxkKSB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XFxufVxcblxcbi5idG4tZ3JvdXAtdmVydGljYWwgOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xcbn1cXG5cXG4uY29uLXZzLWNoaXAubnVtYmVyIHtcXG4gIHBhZGRpbmctcmlnaHQ6IHVuc2V0O1xcbiAgbWluLWhlaWdodDogMjBweDtcXG4gIG1pbi13aWR0aDogMjBweDtcXG59XFxuXFxuLmNvbi12cy1jaGlwLm51bWJlciAudnMtY2hpcC0tdGV4dCB7XFxuICBtYXJnaW4tbGVmdDogdW5zZXQ7XFxuICBmb250LXdlaWdodDogNjAwO1xcbn1cXG5cXG4udHJ1bmNhdGUge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG59XFxuXFxuLnRleHQtYmlnIHtcXG4gIGZvbnQtc2l6ZTogNHJlbTtcXG59XFxuXFxuLnRleHQtY29sb3ItYmFzZSB7XFxuICBjb2xvcjogIzYyNjI2MjtcXG59XFxuXFxuLmJsdXItMSB7XFxuICAtd2Via2l0LWZpbHRlcjogYmx1cigxcHgpO1xcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoMXB4KTtcXG59XFxuXFxuLmJsdXItMiB7XFxuICAtd2Via2l0LWZpbHRlcjogYmx1cigycHgpO1xcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoMnB4KTtcXG59XFxuXFxuLmJsdXItMyB7XFxuICAtd2Via2l0LWZpbHRlcjogYmx1cigzcHgpO1xcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoM3B4KTtcXG59XFxuXFxuLnNpZGViYXItc3BhY2VyIHtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAyNjBweCk7XFxuICBtYXJnaW4tbGVmdDogMjYwcHg7XFxufVxcblxcbi5iYWNrZ3JvdW5kLWFic29sdXRlIC52cy1zaWRlYmFyLS1iYWNrZ3JvdW5kIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG59XFxuXFxuLnNpZGViYXItc3BhY2VyLXdpdGgtbWFyZ2luIHtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAyNjBweCAtIDIuMnJlbSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygyNjBweCArIDIuMnJlbSk7XFxufVxcblxcbi5zaWRlYmFyLXNwYWNlci0td2lkZSB7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gNDAwcHgpO1xcbiAgbWFyZ2luLWxlZnQ6IDQwMHB4O1xcbn1cXG5cXG4uZnVsbC12cy1zaWRlYmFyIC52cy1zaWRlYmFyIHtcXG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gMjYwcHgpO1xcbiAgbWFyZ2luLWxlZnQ6IDI2MHB4O1xcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MnB4KSB7XFxuICAuZnVsbC12cy1zaWRlYmFyIC52cy1zaWRlYmFyIHtcXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgICBtYXJnaW4tbGVmdDogMDtcXG4gIH1cXG59XFxuXFxuLnZzLWlucHV0LXNoYWRvdy1kcm9wIGlucHV0IHtcXG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCk7XFxufVxcblxcbi52cy1pbnB1dC1uby1ib3JkZXIgLnZzLWlucHV0LS1pbnB1dCB7XFxuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLnZzLWlucHV0LW5vLWJvcmRlciAudnMtaW5wdXQtLWlucHV0OmZvY3VzIHtcXG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udnMtaW5wdXQtbm8tc2hkb3ctZm9jdXMgLnZzLWlucHV0LS1pbnB1dDpmb2N1cyB7XFxuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XFxufVxcblxcbi52cy1zZWxlY3Qtbm8tYm9yZGVyIC52cy1zZWxlY3QtLWlucHV0IHtcXG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVzcG9uc2l2ZSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuXFxudWwuYm9yZGVyZWQtaXRlbXMgPiBsaTpub3QoOmxhc3Qtb2YtdHlwZSk6bm90KFtjbGFzcyo9J3NoYWRvdyddKSB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RhZTFlNztcXG59XFxuXFxuLnVzZXItbGlzdCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG5cXG4udXNlci1saXN0IC5jb24tdnMtYXZhdGFyIHtcXG4gIHRyYW5zaXRpb246IC4zcztcXG59XFxuXFxuLnVzZXItbGlzdCAuY29uLXZzLWF2YXRhcjpob3ZlciB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCkgc2NhbGUoMS4wNyk7XFxuICBib3gtc2hhZG93OiAwIDE0cHggMjRweCByZ2JhKDYyLCA1NywgMTA3LCAwLjIpO1xcbiAgei1pbmRleDogOTk5O1xcbn1cXG5cXG4uZHJvcGRvd24tY3VzdG9tIC52cy1kcm9wZG93bi0tY3VzdG9tIHtcXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG4gIGJvcmRlcjogMDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBib3JkZXItcmFkaXVzOiAuNXJlbTtcXG4gIGJveC1zaGFkb3c6IDAgMTVweCAzMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjExKSwgMCA1cHggMTVweCAwIHJnYmEoMCwgMCwgMCwgMC4wOCkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRyb3Bkb3duLWN1c3RvbSAudnMtZHJvcGRvd24tLW1lbnUtLWFmdGVyIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpICFpbXBvcnRhbnQ7XFxuICByaWdodDogMS42cmVtICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kLXRoZW1lLWRhcmstYmcge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG59XFxuXFxuLmQtdGhlbWUtYm9yZGVyLWdyZXktbGlnaHQge1xcbiAgYm9yZGVyLWNvbG9yOiAjZGFlMWU3O1xcbn1cXG5cXG4uZC10aGVtZS10ZXh0LWludmVyc2Uge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi50aGVtZS1kYXJrIC5kLXRoZW1lLWRhcmstYmcge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEwMTYzYTtcXG59XFxuXFxuLnRoZW1lLWRhcmsgLmQtdGhlbWUtaW5wdXQtZGFyay1iZyBpbnB1dCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTAxNjNhO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZC10aGVtZS1oZWFkaW5nLWNvbG9yIHtcXG4gIGNvbG9yOiAjMmMyYzJjO1xcbn1cXG5cXG4udGhlbWUtZGFyayAuZC10aGVtZS10ZXh0LWludmVyc2Uge1xcbiAgY29sb3I6ICM2MjYyNjI7XFxufVxcblxcbi50aGVtZS1kYXJrIC5kLXRoZW1lLWJvcmRlci1ncmV5LWxpZ2h0IHtcXG4gIGJvcmRlci1jb2xvcjogIzQxNDU2MTtcXG59XFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgRmlsZSBOYW1lOiBfZml4ZXNWdWVzYXguc2Nzc1xcbiAgRGVzY3JpcHRpb246IFBhcnRpYWwgLSBGaXhlcy9BZGQgdnVlc2F4IHN0eWxlc1xcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gIEF1dGhvcjogUGl4aW52ZW50XFxuICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLnZzLWFsZXJ0IHtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG59XFxuXFxuLnZzLWFsZXJ0IGNvZGUge1xcbiAgYmFja2dyb3VuZDogI2I1YjViNTtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4udnMtYnJlYWRjcnVtYi0tb2wgYTpmb2N1cywgLnZzLWJyZWFkY3J1bWItLW9sIGE6aG92ZXIge1xcbiAgY29sb3I6ICMwMEE1OTM7XFxufVxcblxcbi52cy1icmVhZGNydW1iLS1vbCAuYWN0aXZlIHtcXG4gIGNvbG9yOiAjMDBBNTkzO1xcbn1cXG5cXG4udnMtdG9vbHRpcCB7XFxuICB6LWluZGV4OiA1MjAwMDtcXG59XFxuXFxuLmNvbi1jaGlwcyAuY29uLWNoaXBzLS1pbnB1dCB7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcblxcbi5jb24tY2hpcHMgLmNvbi12cy1jaGlwIHtcXG4gIG1hcmdpbjogLjc1cmVtO1xcbn1cXG5cXG4uY29uLWNoaXBzIC5jb24tY2hpcHMtLXJlbW92ZS1hbGwge1xcbiAgcmlnaHQ6IDlweDtcXG59XFxuXFxuLmNvbi12cy1jaGlwIHtcXG4gIG1pbi1oZWlnaHQ6IDI2cHg7XFxuICBtaW4td2lkdGg6IDI2cHg7XFxuICBmb250LXNpemU6IC44cmVtO1xcbn1cXG5cXG4udnMtY29sbGFwc2UtaXRlbS0taGVhZGVyIHtcXG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xcbiAgcGFkZGluZzogMXJlbTtcXG59XFxuXFxuLmNvbi1jb250ZW50LS1pdGVtIHtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIHBhZGRpbmc6IDFyZW07XFxufVxcblxcbi52cy1jb2xsYXBzZS5kZWZhdWx0IC5vcGVuLWl0ZW0gLmNvbi1jb250ZW50LS1pdGVtLCAudnMtY29sbGFwc2Uuc2hhZG93IC5vcGVuLWl0ZW0gLmNvbi1jb250ZW50LS1pdGVtLCAudnMtY29sbGFwc2UuYm9yZGVyIC5vcGVuLWl0ZW0gLmNvbi1jb250ZW50LS1pdGVtLCAudnMtY29sbGFwc2UubWFyZ2luIC5vcGVuLWl0ZW0gLmNvbi1jb250ZW50LS1pdGVtIHtcXG4gIG9wYWNpdHk6IDE7XFxuICBwYWRkaW5nOiAxcmVtO1xcbn1cXG5cXG4udnMtY29sbGFwc2Uuc2hhZG93IC52cy1jb2xsYXBzZS1pdGVtLS1pY29uLWhlYWRlciB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG59XFxuXFxuLnZzLWNvbGxhcHNlLnNoYWRvdyAub3Blbi1pdGVtIC52cy1jb2xsYXBzZS1pdGVtLS1pY29uLWhlYWRlciB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoMTgwZGVnKTtcXG59XFxuXFxuLmNvbi12cy1kaWFsb2cge1xcbiAgei1pbmRleDogNTIwMDU7XFxufVxcblxcbi5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgaGVhZGVyIGgzIHtcXG4gIHBhZGRpbmc6IDAuOHJlbTtcXG59XFxuXFxuLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyBoZWFkZXIgc3Bhbi5hZnRlciB7XFxuICB3aWR0aDogMDtcXG59XFxuXFxuLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyAudnMtZGlhbG9nLXRleHQge1xcbiAgcGFkZGluZzogMXJlbTtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG59XFxuXFxuLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyBmb290ZXIge1xcbiAgcGFkZGluZzogMXJlbTtcXG59XFxuXFxuLnZzLWNvbi1kcm9wZG93biB7XFxuICBmb250LXNpemU6IDFyZW07XFxufVxcblxcbi5jb24tdnMtZHJvcGRvd24tLW1lbnUge1xcbiAgei1pbmRleDogNDIwMDA7XFxufVxcblxcbi52cy1saXN0LS1pdGVtIC5saXN0LXRpdGxlcyAudnMtbGlzdC0tc3VidGl0bGUge1xcbiAgZm9udC1zaXplOiAuODVyZW07XFxufVxcblxcbi52cy1saXN0LS1pdGVtOmxhc3QtY2hpbGQge1xcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcXG59XFxuXFxuLmNvbi12cy1wb3B1cCB7XFxuICB6LWluZGV4OiA1MzAwMDtcXG59XFxuXFxuLmNvbi12cy1wb3B1cCAudnMtcG9wdXAtLWNvbnRlbnQge1xcbiAgcGFkZGluZzogMXJlbTtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG59XFxuXFxuLnZzLXRhYnMtLWxpIGJ1dHRvbiB7XFxuICBmb250LXNpemU6IDFyZW07XFxufVxcblxcbi5jb24tc2VsZWN0IC52cy1zZWxlY3QtLWlucHV0IHtcXG4gIHBhZGRpbmc6IDEwcHg7XFxuICBmb250LXNpemU6IDFyZW07XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7XFxufVxcblxcbi52cy1zZWxlY3QtLW9wdGlvbnMge1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbn1cXG5cXG4udnMtc2VsZWN0LS1vcHRpb25zIHNwYW4ge1xcbiAgY29sb3I6ICM2MjYyNjI7XFxuICBmb250LXNpemU6IDFyZW07XFxufVxcblxcbi52cy1zd2l0Y2gtLXRleHQge1xcbiAgZm9udC1zaXplOiAwLjdyZW07XFxufVxcblxcbi52cy1jb24taW5wdXQgLnZzLWlucHV0eCB7XFxuICBwYWRkaW5nOiAuN3JlbTtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG59XFxuXFxuLnZzLWNvbi1pbnB1dCAudngtaW5wdXR4Om5vdCguaW5wdXQtcm91bmRlZC1mdWxsKSB7XFxuICBib3JkZXItcmFkaXVzOiA1cHg7XFxufVxcblxcbi52cy1pbnB1dC0taW5wdXQubm9ybWFsIHtcXG4gIHBhZGRpbmc6IC43cmVtO1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbn1cXG5cXG4udnMtaW5wdXQtLWlucHV0Lmhhc0ljb24ge1xcbiAgcGFkZGluZzogMC43cmVtIDFyZW0gMC43cmVtIDNyZW07XFxufVxcblxcbi52cy1pbnB1dC0taW5wdXQuaGFzSWNvbi5pY29uLWFmdGVyLWlucHV0IHtcXG4gIHBhZGRpbmc6IDAuN3JlbSAzcmVtIDAuN3JlbSAxcmVtO1xcbn1cXG5cXG4udnMtaW5wdXQtLXBsYWNlaG9sZGVyLm5vcm1hbCB7XFxuICBwYWRkaW5nOiAuNnJlbTtcXG59XFxuXFxuLnZzLWlucHV0LS1pbnB1dC5sYXJnZSB7XFxuICBwYWRkaW5nOiAxcmVtO1xcbiAgZm9udC1zaXplOiAxLjJyZW07XFxufVxcblxcbi52cy1pbnB1dC0taW5wdXQubGFyZ2UuaGFzSWNvbiB7XFxuICBwYWRkaW5nOiAxcmVtIDAuOHJlbSAxcmVtIDIuNXJlbTtcXG59XFxuXFxuLnZzLWlucHV0LS1wbGFjZWhvbGRlci5sYXJnZSB7XFxuICBwYWRkaW5nOiAxcmVtO1xcbn1cXG5cXG4udnMtaW5wdXQtLWlucHV0LnNtYWxsIHtcXG4gIHBhZGRpbmc6IC40cmVtO1xcbiAgZm9udC1zaXplOiAuOHJlbTtcXG59XFxuXFxuLnZzLWlucHV0LS1wbGFjZWhvbGRlci5zbWFsbCB7XFxuICBwYWRkaW5nOiAuMnJlbSAuNnJlbTtcXG4gIGZvbnQtc2l6ZTogLjhyZW07XFxufVxcblxcbi52cy1pbnB1dC0taW5wdXQubGFyZ2UgfiAudnMtaW5wdXQtLWljb24ge1xcbiAgdG9wOiAxcmVtO1xcbiAgbGVmdDogMC44cmVtO1xcbn1cXG5cXG4udnMtaW5wdXQtLWljb24ge1xcbiAgdG9wOiAxM3B4O1xcbn1cXG5cXG4udnMtaW5wdXQtLWljb24uZmVhdGhlciB7XFxuICB0b3A6IDEwcHg7XFxufVxcblxcbi5uby1pY29uLWJvcmRlciAudnMtaW5wdXQtLWljb24ge1xcbiAgYm9yZGVyOiBub25lO1xcbn1cXG5cXG4udnMtdGV4dGFyZWEge1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbn1cXG5cXG4udnMtY29uLXRleHRhcmVhIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG59XFxuXFxuLnZzLWNoZWNrYm94LXNtYWxsIC52cy1jaGVja2JveC0taW5wdXQ6Y2hlY2tlZCArIC52cy1jaGVja2JveCAudnMtaWNvbiB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XFxufVxcblxcbi52cy1jb2wge1xcbiAgcGFkZGluZzogMCAxNXB4O1xcbn1cXG5cXG4uY29uLWltZy11cGxvYWQge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBhZGRpbmc6IDAuNnJlbTtcXG59XFxuXFxuLmNvbi1pbWctdXBsb2FkIC5pbWctdXBsb2FkIHtcXG4gIG1hcmdpbjogMTVweDtcXG59XFxuXFxuLnZpZXctdXBsb2FkIHtcXG4gIHotaW5kZXg6IDUyMDAwO1xcbn1cXG5cXG4uc2VsZWN0LWxhcmdlIGlucHV0LnZzLXNlbGVjdC0taW5wdXQge1xcbiAgcGFkZGluZzogMTFweDtcXG59XFxuXFxuaS53aXphcmQtaWNvbiB7XFxuICBmb250LXN0eWxlOiBpbmhlcml0O1xcbn1cXG5cXG4uc3RlcFRpdGxlIHtcXG4gIG1hcmdpbi10b3A6IC41cmVtO1xcbn1cXG5cXG5pLmZlYXRoZXIge1xcbiAgZm9udC13ZWlnaHQ6IDEwMDtcXG59XFxuXFxuLnZzLWNvbi10YWJsZSB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuLnZzLWNvbi10YWJsZSAudnMtdGFibGUtLWhlYWRlciAudnMtdGFibGUtLXNlYXJjaCB7XFxuICBwYWRkaW5nOiAxcmVtIDA7XFxufVxcblxcbi52cy1jb24tdGFibGUgLnZzLXRhYmxlLS1oZWFkZXIgLnZzLXRhYmxlLS1zZWFyY2ggLnZzLXRhYmxlLS1zZWFyY2gtaW5wdXQge1xcbiAgcGFkZGluZzogMTBweCAyOHB4O1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgZm9udC1zaXplOiAwLjlyZW07XFxufVxcblxcbi52cy1jb24tdGFibGUgLnZzLXRhYmxlLS1oZWFkZXIgLnZzLXRhYmxlLS1zZWFyY2ggLnZzLXRhYmxlLS1zZWFyY2gtaW5wdXQ6Zm9jdXMgKyBpIHtcXG4gIGxlZnQ6IDEwcHg7XFxufVxcblxcbi52cy1jb24tdGFibGUgLnZzLXRhYmxlLS1oZWFkZXIgLnZzLXRhYmxlLS1zZWFyY2ggaSB7XFxuICBsZWZ0OiAxMHB4O1xcbn1cXG5cXG4udnMtY29uLXRhYmxlIC52cy1jb24tdGJvZHkge1xcbiAgYmFja2dyb3VuZDogI2Y4ZjhmODtcXG4gIGJvcmRlcjogMnB4IHNvbGlkICNmOGY4Zjg7XFxuICB3aWR0aDogMTAwJTtcXG4gIG92ZXJmbG93OiBhdXRvO1xcbn1cXG5cXG4udnMtY29uLXRhYmxlIC52cy1jb24tdGJvZHkgLmNvbi12cy1jaGVja2JveCB7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xcbn1cXG5cXG4udnMtY29uLXRhYmxlIC52cy1jb24tdGJvZHkgLnZzLXRhYmxlLS10Ym9keS10YWJsZSB7XFxuICBmb250LXNpemU6IDFyZW07XFxufVxcblxcbi52cy1jb24tdGFibGUgLnZzLWNvbi10Ym9keSAudnMtdGFibGUtLXRib2R5LXRhYmxlIC50ci1zcGFjZXIge1xcbiAgaGVpZ2h0OiAycHg7XFxufVxcblxcbi52cy1jb24tdGFibGUgLnZzLWNvbi10Ym9keSAudnMtdGFibGUtLXRib2R5LXRhYmxlIC50ci10YWJsZSAudHItZXhwYW5kIHRkIHtcXG4gIHBhZGRpbmc6IDA7XFxufVxcblxcbi52cy1jb24tdGFibGUgLnZzLWNvbi10Ym9keSAudnMtdGFibGUtLXRib2R5LXRhYmxlIC50ci10YWJsZSB0ZCB7XFxuICBwYWRkaW5nOiAxcmVtO1xcbn1cXG5cXG4udnMtY29uLXRhYmxlIC52cy1jb24tdGJvZHkgLnZzLXRhYmxlLS10Ym9keS10YWJsZSAudnMtdGFibGUtLXRoZWFkIHRoIHtcXG4gIHBhZGRpbmctdG9wOiAxcmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDFyZW07XFxufVxcblxcbi52cy1jb24tdGFibGUgLnZzLWNvbi10Ym9keSAudnMtdGFibGUtLXRib2R5LXRhYmxlIC52cy10YWJsZS0tdGhlYWQgLmNvbi10ZC1jaGVjayB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxufVxcblxcbi52cy1jb24tdGFibGUgLnZzLXRhYmxlLS1wYWdpbmF0aW9uIHtcXG4gIG1hcmdpbi10b3A6IDFyZW07XFxufVxcblxcbi5jb24tdnMtY2hlY2tib3gsXFxuLmNvbi12cy1yYWRpbyB7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcXG59XFxuXFxuLmNvbi12cy1yYWRpbyB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG59XFxuXFxuLmlucHV0LXJvdW5kZWQtZnVsbCBpbnB1dCB7XFxuICBib3JkZXItcmFkaXVzOiAyMHB4O1xcbn1cXG5cXG4udi1zZWxlY3QgLmRyb3Bkb3duLXRvZ2dsZSAudnNfX2FjdGlvbnMgLmNsZWFyIHtcXG4gIHBhZGRpbmctdG9wOiA0cHg7XFxufVxcblxcbi52cy1idXR0b24ge1xcbiAgZm9udC1mYW1pbHk6IFxcXCJNb250c2VycmF0XFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG59XFxuXFxuLnZzLWJ1dHRvbi52cy1idXR0b24tZ3JhZGllbnQ6aG92ZXIge1xcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udnMtYnV0dG9uOm5vdCgudnMtcmFkaXVzKTpub3QoLmluY2x1ZGVJY29uT25seSk6bm90KC5zbWFsbCk6bm90KC5sYXJnZSkge1xcbiAgcGFkZGluZzogLjc1cmVtIDJyZW07XFxufVxcblxcbi52cy1idXR0b246bm90KC52cy1yYWRpdXMpOm5vdCguaW5jbHVkZUljb25Pbmx5KTpub3QoLnNtYWxsKTpub3QoLmxhcmdlKS52cy1idXR0b24tYm9yZGVyIHtcXG4gIHBhZGRpbmc6IC42NzlyZW0gMnJlbTtcXG59XFxuXFxuLnZzLWJ1dHRvbi5zbWFsbDpub3QoLmluY2x1ZGVJY29uT25seSkge1xcbiAgcGFkZGluZzogMC41cmVtIDEuNXJlbTtcXG59XFxuXFxuLnZzLWJ1dHRvbi5sYXJnZTpub3QoLmluY2x1ZGVJY29uT25seSkge1xcbiAgcGFkZGluZzogMXJlbSAyLjVyZW07XFxufVxcblxcbi52cy1idXR0b24ubGFyZ2Uge1xcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xcbn1cXG5cXG4udnMtYnV0dG9uLmxhcmdlIC52cy1idXR0b24tLWljb24ge1xcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xcbn1cXG5cXG4udnMtYnV0dG9uLnJvdW5kIHtcXG4gIGJvcmRlci1yYWRpdXM6IDEuNXJlbTtcXG59XFxuXFxuLnZzLWJ1dHRvbi5pbmNsdWRlSWNvbiB7XFxuICBmbG9hdDogbm9uZTtcXG59XFxuXFxuLnZzLXBvcHVwLS10aXRsZSBoMyxcXG4udnMtbm90aWZpY2F0aW9ucyBoMyB7XFxuICBtYXJnaW4tYm90dG9tOiAwO1xcbn1cXG5cXG4udnMtbm90aWZpY2F0aW9ucyB7XFxuICB6LWluZGV4OiAyMDAwMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnZzLW5vdGlmaWNhdGlvbnMgaDMge1xcbiAgY29sb3I6ICNmZmY7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgZm9udC1zaXplOiAxNS45NnB4O1xcbn1cXG5cXG4udnMtbmF2YmFyLW51bGwgLnZzLW5hdmJhci0taXRlbSBhOmhvdmVyLFxcbi52cy1uYXZiYXItZmxhdCAudnMtbmF2YmFyLS1pdGVtIGE6aG92ZXIsXFxuLnZzLW5hdmJhci1mdW5kIC52cy1uYXZiYXItLWl0ZW0gYTpob3ZlcixcXG4udnMtbmF2YmFyLWJvcmRlciAudnMtbmF2YmFyLS1pdGVtIGE6aG92ZXIsXFxuLnZzLW5hdmJhci1zaGFkb3cgLnZzLW5hdmJhci0taXRlbSBhOmhvdmVyIHtcXG4gIGNvbG9yOiAjMDBBNTkzICFpbXBvcnRhbnQ7XFxufVxcblxcbmgzLnZzLW5hdmJhci0tdGl0bGUge1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG59XFxuXFxuLnZzLW5hdmJhci1ncmFkaWVudCAudnMtbmF2YmFyLWl0ZW0tcHJpbWFyeS5pcy1hY3RpdmUtaXRlbSB7XFxuICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udnMtY29uLWRyb3Bkb3duIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG5cXG4uZHJvcGRvd24tYnV0dG9uLWNvbnRhaW5lciAudnMtYnV0dG9uIHtcXG4gIHBhZGRpbmc6IC43MnJlbSAxLjVyZW0gIWltcG9ydGFudDtcXG59XFxuXFxuLmRyb3Bkb3duLWJ1dHRvbi1jb250YWluZXIgLnZzLWJ1dHRvbi1saW5lIHtcXG4gIHBhZGRpbmc6IDlweCAxMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi52cy1hbGVydC0tdGl0bGUge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcblxcbi52cy1pbnB1dC5pbnB1dC1yb3VuZGVkLWZ1bGwgLnZzLWlucHV0LS1pbnB1dC5oYXNJY29uIHtcXG4gIHBhZGRpbmc6IC44cmVtIDFyZW0gMC44cmVtIDNyZW07XFxufVxcblxcbi52cy1pbnB1dC5pbnB1dC1yb3VuZGVkLWZ1bGwgLmlucHV0LXNwYW4tcGxhY2Vob2xkZXIge1xcbiAgcGFkZGluZy1sZWZ0OiAzcmVtO1xcbiAgcGFkZGluZy10b3A6IC43cmVtO1xcbn1cXG5cXG4udnMtaW5wdXQuaW5wdXQtcm91bmRlZC1mdWxsIC52cy1pY29uIHtcXG4gIG1hcmdpbi10b3A6IC4xcmVtO1xcbiAgbWFyZ2luLWxlZnQ6IDAuNnJlbTtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG59XFxuXFxuLnZzLXRhYnMtcG9zaXRpb24tbGVmdCAudnMtdGFicy0tbGkge1xcbiAgcGFkZGluZzogLjM1cmVtIDAuM3JlbTtcXG59XFxuXFxuLnZzLXBhZ2luYXRpb24tLWxpLmlzLWN1cnJlbnQge1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbn1cXG5cXG4udnMtcGFnaW5hdGlvbi0tbGkuaXMtY3VycmVudCAuZWZmZWN0IHtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG59XFxuXFxuLnZzLXBhZ2luYXRpb24tLXVsIHtcXG4gIHBhZGRpbmc6IDA7XFxufVxcblxcbi52cy1zZWxlY3QtLW9wdGlvbnMge1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2VlZTtcXG4gIHotaW5kZXg6IDUzMDAwMTtcXG59XFxuXFxuLnZzLWlucHV0LS1pY29uLmZlYXRoZXIge1xcbiAgcGFkZGluZzogLjJyZW0gLjVyZW0gMHJlbSAuNHJlbTtcXG59XFxuXFxuLnZzLWlucHV0LS1pbnB1dC5oYXNJY29uICsgLnZzLWlucHV0LS1wbGFjZWhvbGRlciB7XFxuICBwYWRkaW5nLWxlZnQ6IDNyZW07XFxufVxcblxcbi52cy1pbnB1dC0taW5wdXQubGFyZ2UuaGFzSWNvbiB7XFxuICBwYWRkaW5nOiAxcmVtIC44cmVtIDFyZW0gM3JlbTtcXG59XFxuXFxuLmNvbi12cy1hbGVydCB7XFxuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XFxufVxcblxcbi52cy1hbGVydCB7XFxuICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG4udnMtY2hlY2tib3gtc21hbGwgLnZzLWNoZWNrYm94LS1pbnB1dDpjaGVja2VkICsgLnZzLWNoZWNrYm94IC52cy1pY29uIHtcXG4gIG1hcmdpbi10b3A6IDRweDtcXG4gIG1hcmdpbi1sZWZ0OiAtMXB4O1xcbn1cXG5cXG4udnMtY2hlY2tib3gtc21hbGwgaW5wdXQ6Y2hlY2tlZCArIC52cy1jaGVja2JveCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXZzLXByaW1hcnkpLCAxKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udnMtZGlhbG9nIGZvb3RlciAudnMtYnV0dG9uOmxhc3Qtb2YtdHlwZSB7XFxuICBtYXJnaW4tbGVmdDogLjVyZW0gIWltcG9ydGFudDtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjIpICFpbXBvcnRhbnQ7XFxufVxcblxcbi52cy1hdmF0YXItLXRleHQuZmVhdGhlciB7XFxuICBmb250LXNpemU6IDEuM3JlbTtcXG59XFxuXFxuLnZzLWF2YXRhci0tY29uLWltZyBpbWcge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogX3RhaWx3aW5kRml4ZXMuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gVGFpbHdpbmQgRml4ZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG5idXR0b246Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuXFxuLmNhbC10b3AtcmlnaHQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxufVxcblxcbi5uby1wYWRkaW5nIHtcXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm5vLW1hcmdpbiB7XFxuICBtYXJnaW46IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZHVjZS10ZXh0LWFyZWEtbWFyZ2luIHtcXG4gIG1hcmdpbi1ib3R0b206IDhweDtcXG59XFxuXFxuLnVzZXItYXZhdGFyIC5tZWRpYS11cGxvYWQge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgaGVpZ2h0OiAxNTBweDtcXG4gIHdpZHRoOiAxNTBweDtcXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbn1cXG5cXG4udXNlci1hdmF0YXIgLm1lZGlhLXVwbG9hZC5jYWwtbG9hZGluZyB7XFxuICBmaWx0ZXI6IGJsdXIoM3B4KTtcXG4gIC13ZWJraXQtZmlsdGVyOiBibHVyKDNweCk7XFxufVxcblxcbi51c2VyLWF2YXRhciAubWVkaWEtdXBsb2FkIGltZy5pbWctdXBsb2FkIHtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5cXG4udXNlci1hdmF0YXIgLm1lZGlhLXVwbG9hZCBpbWcuaW1nLXVwbG9hZDphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XFxufVxcblxcbi51c2VyLWF2YXRhciAubWVkaWEtdXBsb2FkIC5lZGl0LWltYWdlLWhvdmVyIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcsICMwMEE1OTMgMjUlLCB0cmFuc3BhcmVudCAwJSk7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJvcmRlci1yYWRpdXM6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB0cmFuc2l0aW9uOiBhbGwgLjE1cyBlYXNlLWluLW91dDtcXG59XFxuXFxuLnVzZXItYXZhdGFyIC5tZWRpYS11cGxvYWQgLmVkaXQtaW1hZ2UtaG92ZXIgcCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDEwcHg7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgyNSUpO1xcbiAgd2lkdGg6IDcwJTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGNvbG9yOiAjZmZmZmZmO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xcbiAgLnVzZXItYXZhdGFyIC5tZWRpYS11cGxvYWQgLmVkaXQtaW1hZ2UtaG92ZXIgcCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDVweDtcXG4gICAgZm9udC1zaXplOiAxMnB4O1xcbiAgfVxcbn1cXG5cXG4udXNlci1hdmF0YXIgLm1lZGlhLXVwbG9hZDpob3ZlciAuZWRpdC1pbWFnZS1ob3ZlciB7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG5cXG4udnMtYXZhdGFyLW9iamVjdC1jb3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udnMtYXZhdGFyLW9iamVjdC1jb3ZlciAuY29uLWltZyB7XFxuICBib3JkZXI6IDJweCBzb2xpZCAjMDBBNTkzICFpbXBvcnRhbnQ7XFxufVxcblxcbi52cy1hdmF0YXItb2JqZWN0LWNvdmVyIGltZyB7XFxuICAtby1vYmplY3QtZml0OiBjb3ZlcjtcXG4gICAgIG9iamVjdC1maXQ6IGNvdmVyO1xcbn1cXG5cXG4uYmctc2Vjb25kYXJ5IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3Nzc3Nzc7XFxufVxcblxcbi52LXRleHQtdG9wIHtcXG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcXG59XFxuXFxuLnZ1ZS1zaW1wbGUtc3VnZ2VzdCAuZGVmYXVsdC1pbnB1dCB7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBjb2xvcjogIzYyNjI2MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udnVlLXNpbXBsZS1zdWdnZXN0IC5kZWZhdWx0LWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgLnZ1ZS1zaW1wbGUtc3VnZ2VzdCAuZGVmYXVsdC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsIC52dWUtc2ltcGxlLXN1Z2dlc3QgLmRlZmF1bHQtaW5wdXQgOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKSAhaW1wb3J0YW50O1xcbiAgb3BhY2l0eTogMTtcXG59XFxuXFxuLnZ1ZS1zaW1wbGUtc3VnZ2VzdCAuZGVmYXVsdC1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLCAudnVlLXNpbXBsZS1zdWdnZXN0IC5kZWZhdWx0LWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgLnZ1ZS1zaW1wbGUtc3VnZ2VzdCAuZGVmYXVsdC1pbnB1dCA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjIpICFpbXBvcnRhbnQ7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG5cXG4udnVlLXNpbXBsZS1zdWdnZXN0IC5kZWZhdWx0LWlucHV0OjpwbGFjZWhvbGRlciwgLnZ1ZS1zaW1wbGUtc3VnZ2VzdCAuZGVmYXVsdC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsIC52dWUtc2ltcGxlLXN1Z2dlc3QgLmRlZmF1bHQtaW5wdXQgOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKSAhaW1wb3J0YW50O1xcbiAgb3BhY2l0eTogMTtcXG59XFxuXFxuLmdnLWltYWdlLWNvdmVyIHtcXG4gIC1vLW9iamVjdC1maXQ6IGNvdmVyO1xcbiAgICAgb2JqZWN0LWZpdDogY292ZXI7XFxufVxcblxcbi5nZy1uby1ib2R5IC52cy1jb24tdGJvZHkge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLmN2LWV2ZW50IHtcXG4gIC1tcy10ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cXG5cXG4udnMtaW5wdXQtLWljb24ge1xcbiAgei1pbmRleDogMTA7XFxufVxcblxcbi5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIHtcXG4gIHotaW5kZXg6IDEwMDA7XFxufVxcblxcbi5nZy1hYnNvbHV0ZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcXG59XFxuXFxuLnBvc2l0aW9uLXJpZ2h0LTE1IHtcXG4gIHJpZ2h0OiAxNXB4O1xcbn1cXG5cXG4uZ2ctZGVmYXVsdC1sYWJlbCB7XFxuICBmb250LXNpemU6IDkuOHB4O1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTtcXG59XFxuXFxuLm11bHRpc2VsZWN0IHNwYW4ge1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbn1cXG5cXG4ubXVsdGlzZWxlY3QgLm11bHRpc2VsZWN0X190YWdzIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG59XFxuXFxuLm11bHRpc2VsZWN0ID4gc3BhbiB7XFxuICBjb2xvcjogIzYyNjI2MjtcXG59XFxuXFxuLm11bHRpc2VsZWN0IC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQge1xcbiAgYmFja2dyb3VuZDogIzAwQTU5MztcXG59XFxuXFxuLm11bHRpc2VsZWN0IC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQ6YWZ0ZXIge1xcbiAgYmFja2dyb3VuZDogIzAwQTU5MztcXG59XFxuXFxuLm11bHRpc2VsZWN0IC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQubXVsdGlzZWxlY3RfX29wdGlvbi0tc2VsZWN0ZWQge1xcbiAgYmFja2dyb3VuZDogI0VBNTQ1NTtcXG4gIGNvbG9yOiB3aGl0ZTtcXG59XFxuXFxuLm11bHRpc2VsZWN0IC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQubXVsdGlzZWxlY3RfX29wdGlvbi0tc2VsZWN0ZWQ6YWZ0ZXIge1xcbiAgYmFja2dyb3VuZDogI0VBNTQ1NTtcXG59XFxuXFxudGV4dGFyZWEudnMtdGV4dGFyZWEge1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpO1xcbn1cXG5cXG4ubm8tYm9yZGVyIHtcXG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubm8tYm9yZGVyIC52cy1jb24tdGV4dGFyZWEge1xcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XFxufVxcblxcbi52cy1pbnB1dC0tcGxhY2Vob2xkZXIge1xcbiAgdG9wOiAxcHg7XFxufVxcblxcbi5nZy1pbnB1dC1sYWJlbCB7XFxuICBmb250LXNpemU6IC43cmVtO1xcbn1cXG5cXG4uZ2ctYmFubmVyLWZ1bGwtc2NyZWVuIHtcXG4gIG1hcmdpbi1sZWZ0OiAtNTBweDtcXG4gIG1hcmdpbi1yaWdodDogLTUwcHg7XFxufVxcblxcbi5nZy1iYW5uZXItZnVsbC1zY3JlZW4gaDMge1xcbiAgcGFkZGluZy1sZWZ0OiA1MHB4O1xcbiAgcGFkZGluZy1yaWdodDogNTBweDtcXG59XFxuXFxuLmNvbi12cy10b29sdGlwIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbn1cXG5cXG4uZ2ctbWVkaWEtdGFibGUtdGV4dCB7XFxuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./src/assets/scss/main.scss\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-multiselect/dist/vue-multiselect.min.css":
/*!*******************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2!./node_modules/vue-multiselect/dist/vue-multiselect.min.css ***!
  \*******************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"fieldset[disabled] .multiselect{\\n  pointer-events:none\\n}\\n\\n.multiselect__spinner{\\n  position:absolute;\\n  right:1px;\\n  top:1px;\\n  width:48px;\\n  height:35px;\\n  background:#fff;\\n  display:block\\n}\\n\\n.multiselect__spinner:after,.multiselect__spinner:before{\\n  position:absolute;\\n  content:\\\"\\\";\\n  top:50%;\\n  left:50%;\\n  margin:-8px 0 0 -8px;\\n  width:16px;\\n  height:16px;\\n  border-radius:100%;\\n  border:2px solid transparent;\\n  border-top-color:#41b883;\\n  box-shadow:0 0 0 1px transparent\\n}\\n\\n.multiselect__spinner:before{\\n  -webkit-animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);\\n          animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);\\n  -webkit-animation-iteration-count:infinite;\\n          animation-iteration-count:infinite\\n}\\n\\n.multiselect__spinner:after{\\n  -webkit-animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);\\n          animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);\\n  -webkit-animation-iteration-count:infinite;\\n          animation-iteration-count:infinite\\n}\\n\\n.multiselect__loading-enter-active,.multiselect__loading-leave-active{\\n  transition:opacity .4s ease-in-out;\\n  opacity:1\\n}\\n\\n.multiselect__loading-enter,.multiselect__loading-leave-active{\\n  opacity:0\\n}\\n\\n.multiselect,.multiselect__input,.multiselect__single{\\n  font-family:inherit;\\n  font-size:16px;\\n  touch-action:manipulation\\n}\\n\\n.multiselect{\\n  box-sizing:content-box;\\n  display:block;\\n  position:relative;\\n  width:100%;\\n  min-height:40px;\\n  text-align:left;\\n  color:#35495e\\n}\\n\\n.multiselect *{\\n  box-sizing:border-box\\n}\\n\\n.multiselect:focus{\\n  outline:none\\n}\\n\\n.multiselect--disabled{\\n  background:#ededed;\\n  pointer-events:none;\\n  opacity:.6\\n}\\n\\n.multiselect--active{\\n  z-index:50\\n}\\n\\n.multiselect--active:not(.multiselect--above) .multiselect__current,.multiselect--active:not(.multiselect--above) .multiselect__input,.multiselect--active:not(.multiselect--above) .multiselect__tags{\\n  border-bottom-left-radius:0;\\n  border-bottom-right-radius:0\\n}\\n\\n.multiselect--active .multiselect__select{\\n  transform:rotate(180deg)\\n}\\n\\n.multiselect--above.multiselect--active .multiselect__current,.multiselect--above.multiselect--active .multiselect__input,.multiselect--above.multiselect--active .multiselect__tags{\\n  border-top-left-radius:0;\\n  border-top-right-radius:0\\n}\\n\\n.multiselect__input,.multiselect__single{\\n  position:relative;\\n  display:inline-block;\\n  min-height:20px;\\n  line-height:20px;\\n  border:none;\\n  border-radius:5px;\\n  background:#fff;\\n  padding:0 0 0 5px;\\n  width:100%;\\n  transition:border .1s ease;\\n  box-sizing:border-box;\\n  margin-bottom:8px;\\n  vertical-align:top\\n}\\n\\n.multiselect__input:-ms-input-placeholder{\\n  color:#35495e\\n}\\n\\n.multiselect__input::-webkit-input-placeholder{\\n  color:#35495e\\n}\\n\\n.multiselect__input::-moz-placeholder{\\n  color:#35495e\\n}\\n\\n.multiselect__input::-ms-input-placeholder{\\n  color:#35495e\\n}\\n\\n.multiselect__input::placeholder{\\n  color:#35495e\\n}\\n\\n.multiselect__tag~.multiselect__input,.multiselect__tag~.multiselect__single{\\n  width:auto\\n}\\n\\n.multiselect__input:hover,.multiselect__single:hover{\\n  border-color:#cfcfcf\\n}\\n\\n.multiselect__input:focus,.multiselect__single:focus{\\n  border-color:#a8a8a8;\\n  outline:none\\n}\\n\\n.multiselect__single{\\n  padding-left:5px;\\n  margin-bottom:8px\\n}\\n\\n.multiselect__tags-wrap{\\n  display:inline\\n}\\n\\n.multiselect__tags{\\n  min-height:40px;\\n  display:block;\\n  padding:8px 40px 0 8px;\\n  border-radius:5px;\\n  border:1px solid #e8e8e8;\\n  background:#fff;\\n  font-size:14px\\n}\\n\\n.multiselect__tag{\\n  position:relative;\\n  display:inline-block;\\n  padding:4px 26px 4px 10px;\\n  border-radius:5px;\\n  margin-right:10px;\\n  color:#fff;\\n  line-height:1;\\n  background:#41b883;\\n  margin-bottom:5px;\\n  white-space:nowrap;\\n  overflow:hidden;\\n  max-width:100%;\\n  text-overflow:ellipsis\\n}\\n\\n.multiselect__tag-icon{\\n  cursor:pointer;\\n  margin-left:7px;\\n  position:absolute;\\n  right:0;\\n  top:0;\\n  bottom:0;\\n  font-weight:700;\\n  font-style:normal;\\n  width:22px;\\n  text-align:center;\\n  line-height:22px;\\n  transition:all .2s ease;\\n  border-radius:5px\\n}\\n\\n.multiselect__tag-icon:after{\\n  content:\\\"\\\\D7\\\";\\n  color:#266d4d;\\n  font-size:14px\\n}\\n\\n.multiselect__tag-icon:focus,.multiselect__tag-icon:hover{\\n  background:#369a6e\\n}\\n\\n.multiselect__tag-icon:focus:after,.multiselect__tag-icon:hover:after{\\n  color:#fff\\n}\\n\\n.multiselect__current{\\n  min-height:40px;\\n  overflow:hidden;\\n  padding:8px 30px 0 12px;\\n  white-space:nowrap;\\n  border-radius:5px;\\n  border:1px solid #e8e8e8\\n}\\n\\n.multiselect__current,.multiselect__select{\\n  line-height:16px;\\n  box-sizing:border-box;\\n  display:block;\\n  margin:0;\\n  text-decoration:none;\\n  cursor:pointer\\n}\\n\\n.multiselect__select{\\n  position:absolute;\\n  width:40px;\\n  height:38px;\\n  right:1px;\\n  top:1px;\\n  padding:4px 8px;\\n  text-align:center;\\n  transition:transform .2s ease\\n}\\n\\n.multiselect__select:before{\\n  position:relative;\\n  right:0;\\n  top:65%;\\n  color:#999;\\n  margin-top:4px;\\n  border-color:#999 transparent transparent;\\n  border-style:solid;\\n  border-width:5px 5px 0;\\n  content:\\\"\\\"\\n}\\n\\n.multiselect__placeholder{\\n  color:#adadad;\\n  display:inline-block;\\n  margin-bottom:10px;\\n  padding-top:2px\\n}\\n\\n.multiselect--active .multiselect__placeholder{\\n  display:none\\n}\\n\\n.multiselect__content-wrapper{\\n  position:absolute;\\n  display:block;\\n  background:#fff;\\n  width:100%;\\n  max-height:240px;\\n  overflow:auto;\\n  border:1px solid #e8e8e8;\\n  border-top:none;\\n  border-bottom-left-radius:5px;\\n  border-bottom-right-radius:5px;\\n  z-index:50;\\n  -webkit-overflow-scrolling:touch\\n}\\n\\n.multiselect__content{\\n  list-style:none;\\n  display:inline-block;\\n  padding:0;\\n  margin:0;\\n  min-width:100%;\\n  vertical-align:top\\n}\\n\\n.multiselect--above .multiselect__content-wrapper{\\n  bottom:100%;\\n  border-bottom-left-radius:0;\\n  border-bottom-right-radius:0;\\n  border-top-left-radius:5px;\\n  border-top-right-radius:5px;\\n  border-bottom:none;\\n  border-top:1px solid #e8e8e8\\n}\\n\\n.multiselect__content::webkit-scrollbar{\\n  display:none\\n}\\n\\n.multiselect__element{\\n  display:block\\n}\\n\\n.multiselect__option{\\n  display:block;\\n  padding:12px;\\n  min-height:40px;\\n  line-height:16px;\\n  text-decoration:none;\\n  text-transform:none;\\n  vertical-align:middle;\\n  position:relative;\\n  cursor:pointer;\\n  white-space:nowrap\\n}\\n\\n.multiselect__option:after{\\n  top:0;\\n  right:0;\\n  position:absolute;\\n  line-height:40px;\\n  padding-right:12px;\\n  padding-left:20px;\\n  font-size:13px\\n}\\n\\n.multiselect__option--highlight{\\n  background:#41b883;\\n  outline:none;\\n  color:#fff\\n}\\n\\n.multiselect__option--highlight:after{\\n  content:attr(data-select);\\n  background:#41b883;\\n  color:#fff\\n}\\n\\n.multiselect__option--selected{\\n  background:#f3f3f3;\\n  color:#35495e;\\n  font-weight:700\\n}\\n\\n.multiselect__option--selected:after{\\n  content:attr(data-selected);\\n  color:silver\\n}\\n\\n.multiselect__option--selected.multiselect__option--highlight{\\n  background:#ff6a6a;\\n  color:#fff\\n}\\n\\n.multiselect__option--selected.multiselect__option--highlight:after{\\n  background:#ff6a6a;\\n  content:attr(data-deselect);\\n  color:#fff\\n}\\n\\n.multiselect--disabled .multiselect__current,.multiselect--disabled .multiselect__select{\\n  background:#ededed;\\n  color:#a6a6a6\\n}\\n\\n.multiselect__option--disabled{\\n  background:#ededed!important;\\n  color:#a6a6a6!important;\\n  cursor:text;\\n  pointer-events:none\\n}\\n\\n.multiselect__option--group{\\n  background:#ededed;\\n  color:#35495e\\n}\\n\\n.multiselect__option--group.multiselect__option--highlight{\\n  background:#35495e;\\n  color:#fff\\n}\\n\\n.multiselect__option--group.multiselect__option--highlight:after{\\n  background:#35495e\\n}\\n\\n.multiselect__option--disabled.multiselect__option--highlight{\\n  background:#dedede\\n}\\n\\n.multiselect__option--group-selected.multiselect__option--highlight{\\n  background:#ff6a6a;\\n  color:#fff\\n}\\n\\n.multiselect__option--group-selected.multiselect__option--highlight:after{\\n  background:#ff6a6a;\\n  content:attr(data-deselect);\\n  color:#fff\\n}\\n\\n.multiselect-enter-active,.multiselect-leave-active{\\n  transition:all .15s ease\\n}\\n\\n.multiselect-enter,.multiselect-leave-active{\\n  opacity:0\\n}\\n\\n.multiselect__strong{\\n  margin-bottom:8px;\\n  line-height:20px;\\n  display:inline-block;\\n  vertical-align:top\\n}\\n\\n[dir=rtl] .multiselect{\\n  text-align:right\\n}\\n\\n[dir=rtl] .multiselect__select{\\n  right:auto;\\n  left:1px\\n}\\n\\n[dir=rtl] .multiselect__tags{\\n  padding:8px 8px 0 40px\\n}\\n\\n[dir=rtl] .multiselect__content{\\n  text-align:right\\n}\\n\\n[dir=rtl] .multiselect__option:after{\\n  right:auto;\\n  left:0\\n}\\n\\n[dir=rtl] .multiselect__clear{\\n  right:auto;\\n  left:12px\\n}\\n\\n[dir=rtl] .multiselect__spinner{\\n  right:auto;\\n  left:1px\\n}\\n\\n@-webkit-keyframes spinning{\\n  0%{\\n    transform:rotate(0)\\n  }\\n\\n  to{\\n    transform:rotate(2turn)\\n  }\\n}\\n\\n@keyframes spinning{\\n  0%{\\n    transform:rotate(0)\\n  }\\n\\n  to{\\n    transform:rotate(2turn)\\n  }\\n}\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbXVsdGlzZWxlY3QvZGlzdC92dWUtbXVsdGlzZWxlY3QubWluLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtbXVsdGlzZWxlY3QvZGlzdC92dWUtbXVsdGlzZWxlY3QubWluLmNzcz8zYjY3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKShmYWxzZSk7XG4vLyBpbXBvcnRzXG5cblxuLy8gbW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJmaWVsZHNldFtkaXNhYmxlZF0gLm11bHRpc2VsZWN0e1xcbiAgcG9pbnRlci1ldmVudHM6bm9uZVxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX3NwaW5uZXJ7XFxuICBwb3NpdGlvbjphYnNvbHV0ZTtcXG4gIHJpZ2h0OjFweDtcXG4gIHRvcDoxcHg7XFxuICB3aWR0aDo0OHB4O1xcbiAgaGVpZ2h0OjM1cHg7XFxuICBiYWNrZ3JvdW5kOiNmZmY7XFxuICBkaXNwbGF5OmJsb2NrXFxufVxcblxcbi5tdWx0aXNlbGVjdF9fc3Bpbm5lcjphZnRlciwubXVsdGlzZWxlY3RfX3NwaW5uZXI6YmVmb3Jle1xcbiAgcG9zaXRpb246YWJzb2x1dGU7XFxuICBjb250ZW50OlxcXCJcXFwiO1xcbiAgdG9wOjUwJTtcXG4gIGxlZnQ6NTAlO1xcbiAgbWFyZ2luOi04cHggMCAwIC04cHg7XFxuICB3aWR0aDoxNnB4O1xcbiAgaGVpZ2h0OjE2cHg7XFxuICBib3JkZXItcmFkaXVzOjEwMCU7XFxuICBib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjojNDFiODgzO1xcbiAgYm94LXNoYWRvdzowIDAgMCAxcHggdHJhbnNwYXJlbnRcXG59XFxuXFxuLm11bHRpc2VsZWN0X19zcGlubmVyOmJlZm9yZXtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOnNwaW5uaW5nIDIuNHMgY3ViaWMtYmV6aWVyKC40MSwuMjYsLjIsLjYyKTtcXG4gICAgICAgICAgYW5pbWF0aW9uOnNwaW5uaW5nIDIuNHMgY3ViaWMtYmV6aWVyKC40MSwuMjYsLjIsLjYyKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZVxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX3NwaW5uZXI6YWZ0ZXJ7XFxuICAtd2Via2l0LWFuaW1hdGlvbjpzcGlubmluZyAyLjRzIGN1YmljLWJlemllciguNTEsLjA5LC4yMSwuOCk7XFxuICAgICAgICAgIGFuaW1hdGlvbjpzcGlubmluZyAyLjRzIGN1YmljLWJlemllciguNTEsLjA5LC4yMSwuOCk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7XFxuICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGVcXG59XFxuXFxuLm11bHRpc2VsZWN0X19sb2FkaW5nLWVudGVyLWFjdGl2ZSwubXVsdGlzZWxlY3RfX2xvYWRpbmctbGVhdmUtYWN0aXZle1xcbiAgdHJhbnNpdGlvbjpvcGFjaXR5IC40cyBlYXNlLWluLW91dDtcXG4gIG9wYWNpdHk6MVxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX2xvYWRpbmctZW50ZXIsLm11bHRpc2VsZWN0X19sb2FkaW5nLWxlYXZlLWFjdGl2ZXtcXG4gIG9wYWNpdHk6MFxcbn1cXG5cXG4ubXVsdGlzZWxlY3QsLm11bHRpc2VsZWN0X19pbnB1dCwubXVsdGlzZWxlY3RfX3NpbmdsZXtcXG4gIGZvbnQtZmFtaWx5OmluaGVyaXQ7XFxuICBmb250LXNpemU6MTZweDtcXG4gIHRvdWNoLWFjdGlvbjptYW5pcHVsYXRpb25cXG59XFxuXFxuLm11bHRpc2VsZWN0e1xcbiAgYm94LXNpemluZzpjb250ZW50LWJveDtcXG4gIGRpc3BsYXk6YmxvY2s7XFxuICBwb3NpdGlvbjpyZWxhdGl2ZTtcXG4gIHdpZHRoOjEwMCU7XFxuICBtaW4taGVpZ2h0OjQwcHg7XFxuICB0ZXh0LWFsaWduOmxlZnQ7XFxuICBjb2xvcjojMzU0OTVlXFxufVxcblxcbi5tdWx0aXNlbGVjdCAqe1xcbiAgYm94LXNpemluZzpib3JkZXItYm94XFxufVxcblxcbi5tdWx0aXNlbGVjdDpmb2N1c3tcXG4gIG91dGxpbmU6bm9uZVxcbn1cXG5cXG4ubXVsdGlzZWxlY3QtLWRpc2FibGVke1xcbiAgYmFja2dyb3VuZDojZWRlZGVkO1xcbiAgcG9pbnRlci1ldmVudHM6bm9uZTtcXG4gIG9wYWNpdHk6LjZcXG59XFxuXFxuLm11bHRpc2VsZWN0LS1hY3RpdmV7XFxuICB6LWluZGV4OjUwXFxufVxcblxcbi5tdWx0aXNlbGVjdC0tYWN0aXZlOm5vdCgubXVsdGlzZWxlY3QtLWFib3ZlKSAubXVsdGlzZWxlY3RfX2N1cnJlbnQsLm11bHRpc2VsZWN0LS1hY3RpdmU6bm90KC5tdWx0aXNlbGVjdC0tYWJvdmUpIC5tdWx0aXNlbGVjdF9faW5wdXQsLm11bHRpc2VsZWN0LS1hY3RpdmU6bm90KC5tdWx0aXNlbGVjdC0tYWJvdmUpIC5tdWx0aXNlbGVjdF9fdGFnc3tcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBcXG59XFxuXFxuLm11bHRpc2VsZWN0LS1hY3RpdmUgLm11bHRpc2VsZWN0X19zZWxlY3R7XFxuICB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZylcXG59XFxuXFxuLm11bHRpc2VsZWN0LS1hYm92ZS5tdWx0aXNlbGVjdC0tYWN0aXZlIC5tdWx0aXNlbGVjdF9fY3VycmVudCwubXVsdGlzZWxlY3QtLWFib3ZlLm11bHRpc2VsZWN0LS1hY3RpdmUgLm11bHRpc2VsZWN0X19pbnB1dCwubXVsdGlzZWxlY3QtLWFib3ZlLm11bHRpc2VsZWN0LS1hY3RpdmUgLm11bHRpc2VsZWN0X190YWdze1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MFxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX2lucHV0LC5tdWx0aXNlbGVjdF9fc2luZ2xle1xcbiAgcG9zaXRpb246cmVsYXRpdmU7XFxuICBkaXNwbGF5OmlubGluZS1ibG9jaztcXG4gIG1pbi1oZWlnaHQ6MjBweDtcXG4gIGxpbmUtaGVpZ2h0OjIwcHg7XFxuICBib3JkZXI6bm9uZTtcXG4gIGJvcmRlci1yYWRpdXM6NXB4O1xcbiAgYmFja2dyb3VuZDojZmZmO1xcbiAgcGFkZGluZzowIDAgMCA1cHg7XFxuICB3aWR0aDoxMDAlO1xcbiAgdHJhbnNpdGlvbjpib3JkZXIgLjFzIGVhc2U7XFxuICBib3gtc2l6aW5nOmJvcmRlci1ib3g7XFxuICBtYXJnaW4tYm90dG9tOjhweDtcXG4gIHZlcnRpY2FsLWFsaWduOnRvcFxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX2lucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntcXG4gIGNvbG9yOiMzNTQ5NWVcXG59XFxuXFxuLm11bHRpc2VsZWN0X19pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntcXG4gIGNvbG9yOiMzNTQ5NWVcXG59XFxuXFxuLm11bHRpc2VsZWN0X19pbnB1dDo6LW1vei1wbGFjZWhvbGRlcntcXG4gIGNvbG9yOiMzNTQ5NWVcXG59XFxuXFxuLm11bHRpc2VsZWN0X19pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVye1xcbiAgY29sb3I6IzM1NDk1ZVxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX2lucHV0OjpwbGFjZWhvbGRlcntcXG4gIGNvbG9yOiMzNTQ5NWVcXG59XFxuXFxuLm11bHRpc2VsZWN0X190YWd+Lm11bHRpc2VsZWN0X19pbnB1dCwubXVsdGlzZWxlY3RfX3RhZ34ubXVsdGlzZWxlY3RfX3NpbmdsZXtcXG4gIHdpZHRoOmF1dG9cXG59XFxuXFxuLm11bHRpc2VsZWN0X19pbnB1dDpob3ZlciwubXVsdGlzZWxlY3RfX3NpbmdsZTpob3ZlcntcXG4gIGJvcmRlci1jb2xvcjojY2ZjZmNmXFxufVxcblxcbi5tdWx0aXNlbGVjdF9faW5wdXQ6Zm9jdXMsLm11bHRpc2VsZWN0X19zaW5nbGU6Zm9jdXN7XFxuICBib3JkZXItY29sb3I6I2E4YThhODtcXG4gIG91dGxpbmU6bm9uZVxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX3NpbmdsZXtcXG4gIHBhZGRpbmctbGVmdDo1cHg7XFxuICBtYXJnaW4tYm90dG9tOjhweFxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX3RhZ3Mtd3JhcHtcXG4gIGRpc3BsYXk6aW5saW5lXFxufVxcblxcbi5tdWx0aXNlbGVjdF9fdGFnc3tcXG4gIG1pbi1oZWlnaHQ6NDBweDtcXG4gIGRpc3BsYXk6YmxvY2s7XFxuICBwYWRkaW5nOjhweCA0MHB4IDAgOHB4O1xcbiAgYm9yZGVyLXJhZGl1czo1cHg7XFxuICBib3JkZXI6MXB4IHNvbGlkICNlOGU4ZTg7XFxuICBiYWNrZ3JvdW5kOiNmZmY7XFxuICBmb250LXNpemU6MTRweFxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX3RhZ3tcXG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XFxuICBwYWRkaW5nOjRweCAyNnB4IDRweCAxMHB4O1xcbiAgYm9yZGVyLXJhZGl1czo1cHg7XFxuICBtYXJnaW4tcmlnaHQ6MTBweDtcXG4gIGNvbG9yOiNmZmY7XFxuICBsaW5lLWhlaWdodDoxO1xcbiAgYmFja2dyb3VuZDojNDFiODgzO1xcbiAgbWFyZ2luLWJvdHRvbTo1cHg7XFxuICB3aGl0ZS1zcGFjZTpub3dyYXA7XFxuICBvdmVyZmxvdzpoaWRkZW47XFxuICBtYXgtd2lkdGg6MTAwJTtcXG4gIHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXNcXG59XFxuXFxuLm11bHRpc2VsZWN0X190YWctaWNvbntcXG4gIGN1cnNvcjpwb2ludGVyO1xcbiAgbWFyZ2luLWxlZnQ6N3B4O1xcbiAgcG9zaXRpb246YWJzb2x1dGU7XFxuICByaWdodDowO1xcbiAgdG9wOjA7XFxuICBib3R0b206MDtcXG4gIGZvbnQtd2VpZ2h0OjcwMDtcXG4gIGZvbnQtc3R5bGU6bm9ybWFsO1xcbiAgd2lkdGg6MjJweDtcXG4gIHRleHQtYWxpZ246Y2VudGVyO1xcbiAgbGluZS1oZWlnaHQ6MjJweDtcXG4gIHRyYW5zaXRpb246YWxsIC4ycyBlYXNlO1xcbiAgYm9yZGVyLXJhZGl1czo1cHhcXG59XFxuXFxuLm11bHRpc2VsZWN0X190YWctaWNvbjphZnRlcntcXG4gIGNvbnRlbnQ6XFxcIlxcXFxEN1xcXCI7XFxuICBjb2xvcjojMjY2ZDRkO1xcbiAgZm9udC1zaXplOjE0cHhcXG59XFxuXFxuLm11bHRpc2VsZWN0X190YWctaWNvbjpmb2N1cywubXVsdGlzZWxlY3RfX3RhZy1pY29uOmhvdmVye1xcbiAgYmFja2dyb3VuZDojMzY5YTZlXFxufVxcblxcbi5tdWx0aXNlbGVjdF9fdGFnLWljb246Zm9jdXM6YWZ0ZXIsLm11bHRpc2VsZWN0X190YWctaWNvbjpob3ZlcjphZnRlcntcXG4gIGNvbG9yOiNmZmZcXG59XFxuXFxuLm11bHRpc2VsZWN0X19jdXJyZW50e1xcbiAgbWluLWhlaWdodDo0MHB4O1xcbiAgb3ZlcmZsb3c6aGlkZGVuO1xcbiAgcGFkZGluZzo4cHggMzBweCAwIDEycHg7XFxuICB3aGl0ZS1zcGFjZTpub3dyYXA7XFxuICBib3JkZXItcmFkaXVzOjVweDtcXG4gIGJvcmRlcjoxcHggc29saWQgI2U4ZThlOFxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX2N1cnJlbnQsLm11bHRpc2VsZWN0X19zZWxlY3R7XFxuICBsaW5lLWhlaWdodDoxNnB4O1xcbiAgYm94LXNpemluZzpib3JkZXItYm94O1xcbiAgZGlzcGxheTpibG9jaztcXG4gIG1hcmdpbjowO1xcbiAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XFxuICBjdXJzb3I6cG9pbnRlclxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX3NlbGVjdHtcXG4gIHBvc2l0aW9uOmFic29sdXRlO1xcbiAgd2lkdGg6NDBweDtcXG4gIGhlaWdodDozOHB4O1xcbiAgcmlnaHQ6MXB4O1xcbiAgdG9wOjFweDtcXG4gIHBhZGRpbmc6NHB4IDhweDtcXG4gIHRleHQtYWxpZ246Y2VudGVyO1xcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2VcXG59XFxuXFxuLm11bHRpc2VsZWN0X19zZWxlY3Q6YmVmb3Jle1xcbiAgcG9zaXRpb246cmVsYXRpdmU7XFxuICByaWdodDowO1xcbiAgdG9wOjY1JTtcXG4gIGNvbG9yOiM5OTk7XFxuICBtYXJnaW4tdG9wOjRweDtcXG4gIGJvcmRlci1jb2xvcjojOTk5IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXN0eWxlOnNvbGlkO1xcbiAgYm9yZGVyLXdpZHRoOjVweCA1cHggMDtcXG4gIGNvbnRlbnQ6XFxcIlxcXCJcXG59XFxuXFxuLm11bHRpc2VsZWN0X19wbGFjZWhvbGRlcntcXG4gIGNvbG9yOiNhZGFkYWQ7XFxuICBkaXNwbGF5OmlubGluZS1ibG9jaztcXG4gIG1hcmdpbi1ib3R0b206MTBweDtcXG4gIHBhZGRpbmctdG9wOjJweFxcbn1cXG5cXG4ubXVsdGlzZWxlY3QtLWFjdGl2ZSAubXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVye1xcbiAgZGlzcGxheTpub25lXFxufVxcblxcbi5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVye1xcbiAgcG9zaXRpb246YWJzb2x1dGU7XFxuICBkaXNwbGF5OmJsb2NrO1xcbiAgYmFja2dyb3VuZDojZmZmO1xcbiAgd2lkdGg6MTAwJTtcXG4gIG1heC1oZWlnaHQ6MjQwcHg7XFxuICBvdmVyZmxvdzphdXRvO1xcbiAgYm9yZGVyOjFweCBzb2xpZCAjZThlOGU4O1xcbiAgYm9yZGVyLXRvcDpub25lO1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo1cHg7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo1cHg7XFxuICB6LWluZGV4OjUwO1xcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2hcXG59XFxuXFxuLm11bHRpc2VsZWN0X19jb250ZW50e1xcbiAgbGlzdC1zdHlsZTpub25lO1xcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XFxuICBwYWRkaW5nOjA7XFxuICBtYXJnaW46MDtcXG4gIG1pbi13aWR0aDoxMDAlO1xcbiAgdmVydGljYWwtYWxpZ246dG9wXFxufVxcblxcbi5tdWx0aXNlbGVjdC0tYWJvdmUgLm11bHRpc2VsZWN0X19jb250ZW50LXdyYXBwZXJ7XFxuICBib3R0b206MTAwJTtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjVweDtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjVweDtcXG4gIGJvcmRlci1ib3R0b206bm9uZTtcXG4gIGJvcmRlci10b3A6MXB4IHNvbGlkICNlOGU4ZThcXG59XFxuXFxuLm11bHRpc2VsZWN0X19jb250ZW50Ojp3ZWJraXQtc2Nyb2xsYmFye1xcbiAgZGlzcGxheTpub25lXFxufVxcblxcbi5tdWx0aXNlbGVjdF9fZWxlbWVudHtcXG4gIGRpc3BsYXk6YmxvY2tcXG59XFxuXFxuLm11bHRpc2VsZWN0X19vcHRpb257XFxuICBkaXNwbGF5OmJsb2NrO1xcbiAgcGFkZGluZzoxMnB4O1xcbiAgbWluLWhlaWdodDo0MHB4O1xcbiAgbGluZS1oZWlnaHQ6MTZweDtcXG4gIHRleHQtZGVjb3JhdGlvbjpub25lO1xcbiAgdGV4dC10cmFuc2Zvcm06bm9uZTtcXG4gIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcXG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xcbiAgY3Vyc29yOnBvaW50ZXI7XFxuICB3aGl0ZS1zcGFjZTpub3dyYXBcXG59XFxuXFxuLm11bHRpc2VsZWN0X19vcHRpb246YWZ0ZXJ7XFxuICB0b3A6MDtcXG4gIHJpZ2h0OjA7XFxuICBwb3NpdGlvbjphYnNvbHV0ZTtcXG4gIGxpbmUtaGVpZ2h0OjQwcHg7XFxuICBwYWRkaW5nLXJpZ2h0OjEycHg7XFxuICBwYWRkaW5nLWxlZnQ6MjBweDtcXG4gIGZvbnQtc2l6ZToxM3B4XFxufVxcblxcbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHR7XFxuICBiYWNrZ3JvdW5kOiM0MWI4ODM7XFxuICBvdXRsaW5lOm5vbmU7XFxuICBjb2xvcjojZmZmXFxufVxcblxcbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQ6YWZ0ZXJ7XFxuICBjb250ZW50OmF0dHIoZGF0YS1zZWxlY3QpO1xcbiAgYmFja2dyb3VuZDojNDFiODgzO1xcbiAgY29sb3I6I2ZmZlxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX29wdGlvbi0tc2VsZWN0ZWR7XFxuICBiYWNrZ3JvdW5kOiNmM2YzZjM7XFxuICBjb2xvcjojMzU0OTVlO1xcbiAgZm9udC13ZWlnaHQ6NzAwXFxufVxcblxcbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1zZWxlY3RlZDphZnRlcntcXG4gIGNvbnRlbnQ6YXR0cihkYXRhLXNlbGVjdGVkKTtcXG4gIGNvbG9yOnNpbHZlclxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX29wdGlvbi0tc2VsZWN0ZWQubXVsdGlzZWxlY3RfX29wdGlvbi0taGlnaGxpZ2h0e1xcbiAgYmFja2dyb3VuZDojZmY2YTZhO1xcbiAgY29sb3I6I2ZmZlxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX29wdGlvbi0tc2VsZWN0ZWQubXVsdGlzZWxlY3RfX29wdGlvbi0taGlnaGxpZ2h0OmFmdGVye1xcbiAgYmFja2dyb3VuZDojZmY2YTZhO1xcbiAgY29udGVudDphdHRyKGRhdGEtZGVzZWxlY3QpO1xcbiAgY29sb3I6I2ZmZlxcbn1cXG5cXG4ubXVsdGlzZWxlY3QtLWRpc2FibGVkIC5tdWx0aXNlbGVjdF9fY3VycmVudCwubXVsdGlzZWxlY3QtLWRpc2FibGVkIC5tdWx0aXNlbGVjdF9fc2VsZWN0e1xcbiAgYmFja2dyb3VuZDojZWRlZGVkO1xcbiAgY29sb3I6I2E2YTZhNlxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX29wdGlvbi0tZGlzYWJsZWR7XFxuICBiYWNrZ3JvdW5kOiNlZGVkZWQhaW1wb3J0YW50O1xcbiAgY29sb3I6I2E2YTZhNiFpbXBvcnRhbnQ7XFxuICBjdXJzb3I6dGV4dDtcXG4gIHBvaW50ZXItZXZlbnRzOm5vbmVcXG59XFxuXFxuLm11bHRpc2VsZWN0X19vcHRpb24tLWdyb3Vwe1xcbiAgYmFja2dyb3VuZDojZWRlZGVkO1xcbiAgY29sb3I6IzM1NDk1ZVxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX29wdGlvbi0tZ3JvdXAubXVsdGlzZWxlY3RfX29wdGlvbi0taGlnaGxpZ2h0e1xcbiAgYmFja2dyb3VuZDojMzU0OTVlO1xcbiAgY29sb3I6I2ZmZlxcbn1cXG5cXG4ubXVsdGlzZWxlY3RfX29wdGlvbi0tZ3JvdXAubXVsdGlzZWxlY3RfX29wdGlvbi0taGlnaGxpZ2h0OmFmdGVye1xcbiAgYmFja2dyb3VuZDojMzU0OTVlXFxufVxcblxcbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1kaXNhYmxlZC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHR7XFxuICBiYWNrZ3JvdW5kOiNkZWRlZGVcXG59XFxuXFxuLm11bHRpc2VsZWN0X19vcHRpb24tLWdyb3VwLXNlbGVjdGVkLm11bHRpc2VsZWN0X19vcHRpb24tLWhpZ2hsaWdodHtcXG4gIGJhY2tncm91bmQ6I2ZmNmE2YTtcXG4gIGNvbG9yOiNmZmZcXG59XFxuXFxuLm11bHRpc2VsZWN0X19vcHRpb24tLWdyb3VwLXNlbGVjdGVkLm11bHRpc2VsZWN0X19vcHRpb24tLWhpZ2hsaWdodDphZnRlcntcXG4gIGJhY2tncm91bmQ6I2ZmNmE2YTtcXG4gIGNvbnRlbnQ6YXR0cihkYXRhLWRlc2VsZWN0KTtcXG4gIGNvbG9yOiNmZmZcXG59XFxuXFxuLm11bHRpc2VsZWN0LWVudGVyLWFjdGl2ZSwubXVsdGlzZWxlY3QtbGVhdmUtYWN0aXZle1xcbiAgdHJhbnNpdGlvbjphbGwgLjE1cyBlYXNlXFxufVxcblxcbi5tdWx0aXNlbGVjdC1lbnRlciwubXVsdGlzZWxlY3QtbGVhdmUtYWN0aXZle1xcbiAgb3BhY2l0eTowXFxufVxcblxcbi5tdWx0aXNlbGVjdF9fc3Ryb25ne1xcbiAgbWFyZ2luLWJvdHRvbTo4cHg7XFxuICBsaW5lLWhlaWdodDoyMHB4O1xcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XFxuICB2ZXJ0aWNhbC1hbGlnbjp0b3BcXG59XFxuXFxuW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdHtcXG4gIHRleHQtYWxpZ246cmlnaHRcXG59XFxuXFxuW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdF9fc2VsZWN0e1xcbiAgcmlnaHQ6YXV0bztcXG4gIGxlZnQ6MXB4XFxufVxcblxcbltkaXI9cnRsXSAubXVsdGlzZWxlY3RfX3RhZ3N7XFxuICBwYWRkaW5nOjhweCA4cHggMCA0MHB4XFxufVxcblxcbltkaXI9cnRsXSAubXVsdGlzZWxlY3RfX2NvbnRlbnR7XFxuICB0ZXh0LWFsaWduOnJpZ2h0XFxufVxcblxcbltkaXI9cnRsXSAubXVsdGlzZWxlY3RfX29wdGlvbjphZnRlcntcXG4gIHJpZ2h0OmF1dG87XFxuICBsZWZ0OjBcXG59XFxuXFxuW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdF9fY2xlYXJ7XFxuICByaWdodDphdXRvO1xcbiAgbGVmdDoxMnB4XFxufVxcblxcbltkaXI9cnRsXSAubXVsdGlzZWxlY3RfX3NwaW5uZXJ7XFxuICByaWdodDphdXRvO1xcbiAgbGVmdDoxcHhcXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW5uaW5ne1xcbiAgMCV7XFxuICAgIHRyYW5zZm9ybTpyb3RhdGUoMClcXG4gIH1cXG5cXG4gIHRve1xcbiAgICB0cmFuc2Zvcm06cm90YXRlKDJ0dXJuKVxcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNwaW5uaW5ne1xcbiAgMCV7XFxuICAgIHRyYW5zZm9ybTpyb3RhdGUoMClcXG4gIH1cXG5cXG4gIHRve1xcbiAgICB0cmFuc2Zvcm06cm90YXRlKDJ0dXJuKVxcbiAgfVxcbn1cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-multiselect/dist/vue-multiselect.min.css\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-simple-suggest/dist/styles.css":
/*!*********************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2!./node_modules/vue-simple-suggest/dist/styles.css ***!
  \*********************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \".vue-simple-suggest > ul {\\n  list-style: none;\\n  margin: 0;\\n  padding: 0;\\n}\\n\\n.vue-simple-suggest.designed {\\n  position: relative;\\n}\\n\\n.vue-simple-suggest.designed, .vue-simple-suggest.designed * {\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n\\n.vue-simple-suggest.designed .input-wrapper input {\\n  display: block;\\n  width: 100%;\\n  padding: 10px;\\n  border: 1px solid #cde;\\n  border-radius: 3px;\\n  color: black;\\n  background: white;\\n  outline:none;\\n  -webkit-transition: all .1s;\\n  transition: all .1s;\\n  -webkit-transition-delay: .05s;\\n          transition-delay: .05s\\n}\\n\\n.vue-simple-suggest.designed.focus .input-wrapper input {\\n  border: 1px solid #aaa;\\n}\\n\\n.vue-simple-suggest.designed .suggestions {\\n  position: absolute;\\n  left: 0;\\n  right: 0;\\n  top: 100%;\\n  top: calc(100% + 5px);\\n  border-radius: 3px;\\n  border: 1px solid #aaa;\\n  background-color: #fff;\\n  opacity: 1;\\n  z-index: 1000;\\n}\\n\\n.vue-simple-suggest.designed .suggestions .suggest-item {\\n  cursor: pointer;\\n  -webkit-user-select: none;\\n     -moz-user-select: none;\\n      -ms-user-select: none;\\n          user-select: none;\\n}\\n\\n.vue-simple-suggest.designed .suggestions .suggest-item,\\n.vue-simple-suggest.designed .suggestions .misc-item {\\n  padding: 5px 10px;\\n}\\n\\n.vue-simple-suggest.designed .suggestions .suggest-item.hover {\\n  background-color: #2874D5 !important;\\n  color: #fff !important;\\n}\\n\\n.vue-simple-suggest.designed .suggestions .suggest-item.selected {\\n  background-color: #2832D5;\\n  color: #fff;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWUtc2ltcGxlLXN1Z2dlc3QvZGlzdC9zdHlsZXMuY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1zaW1wbGUtc3VnZ2VzdC9kaXN0L3N0eWxlcy5jc3M/MDYwOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnZ1ZS1zaW1wbGUtc3VnZ2VzdCA+IHVsIHtcXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4udnVlLXNpbXBsZS1zdWdnZXN0LmRlc2lnbmVkIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuXFxuLnZ1ZS1zaW1wbGUtc3VnZ2VzdC5kZXNpZ25lZCwgLnZ1ZS1zaW1wbGUtc3VnZ2VzdC5kZXNpZ25lZCAqIHtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuXFxuLnZ1ZS1zaW1wbGUtc3VnZ2VzdC5kZXNpZ25lZCAuaW5wdXQtd3JhcHBlciBpbnB1dCB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZzogMTBweDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjZGU7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBjb2xvcjogYmxhY2s7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIG91dGxpbmU6bm9uZTtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC4xcztcXG4gIHRyYW5zaXRpb246IGFsbCAuMXM7XFxuICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IC4wNXM7XFxuICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IC4wNXNcXG59XFxuXFxuLnZ1ZS1zaW1wbGUtc3VnZ2VzdC5kZXNpZ25lZC5mb2N1cyAuaW5wdXQtd3JhcHBlciBpbnB1dCB7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xcbn1cXG5cXG4udnVlLXNpbXBsZS1zdWdnZXN0LmRlc2lnbmVkIC5zdWdnZXN0aW9ucyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB0b3A6IDEwMCU7XFxuICB0b3A6IGNhbGMoMTAwJSArIDVweCk7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIG9wYWNpdHk6IDE7XFxuICB6LWluZGV4OiAxMDAwO1xcbn1cXG5cXG4udnVlLXNpbXBsZS1zdWdnZXN0LmRlc2lnbmVkIC5zdWdnZXN0aW9ucyAuc3VnZ2VzdC1pdGVtIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcblxcbi52dWUtc2ltcGxlLXN1Z2dlc3QuZGVzaWduZWQgLnN1Z2dlc3Rpb25zIC5zdWdnZXN0LWl0ZW0sXFxuLnZ1ZS1zaW1wbGUtc3VnZ2VzdC5kZXNpZ25lZCAuc3VnZ2VzdGlvbnMgLm1pc2MtaXRlbSB7XFxuICBwYWRkaW5nOiA1cHggMTBweDtcXG59XFxuXFxuLnZ1ZS1zaW1wbGUtc3VnZ2VzdC5kZXNpZ25lZCAuc3VnZ2VzdGlvbnMgLnN1Z2dlc3QtaXRlbS5ob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjg3NEQ1ICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udnVlLXNpbXBsZS1zdWdnZXN0LmRlc2lnbmVkIC5zdWdnZXN0aW9ucyAuc3VnZ2VzdC1pdGVtLnNlbGVjdGVkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyODMyRDU7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-simple-suggest/dist/styles.css\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-tour/dist/vue-tour.css":
/*!*************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2!./node_modules/vue-tour/dist/vue-tour.css ***!
  \*************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \".v-step[data-v-aa0cbe42]{-webkit-filter:drop-shadow(0 0 2px rgba(0,0,0,.5));background:#50596c;border-radius:3px;color:#fff;filter:drop-shadow(0 0 2px rgba(0,0,0,.5));max-width:320px;padding:1rem;text-align:center}.v-step .v-step__arrow[data-v-aa0cbe42]{border-color:#50596c;border-style:solid;height:0;margin:.5rem;position:absolute;width:0}.v-step .v-step__arrow--dark[data-v-aa0cbe42]{border-color:#454d5d}.v-step[x-placement^=top][data-v-aa0cbe42]{margin-bottom:.5rem}.v-step[x-placement^=top] .v-step__arrow[data-v-aa0cbe42]{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;border-width:.5rem .5rem 0;bottom:-.5rem;left:calc(50% - 1rem);margin-bottom:0;margin-top:0}.v-step[x-placement^=bottom][data-v-aa0cbe42]{margin-top:.5rem}.v-step[x-placement^=bottom] .v-step__arrow[data-v-aa0cbe42]{border-left-color:transparent;border-right-color:transparent;border-top-color:transparent;border-width:0 .5rem .5rem;left:calc(50% - 1rem);margin-bottom:0;margin-top:0;top:-.5rem}.v-step[x-placement^=right][data-v-aa0cbe42]{margin-left:.5rem}.v-step[x-placement^=right] .v-step__arrow[data-v-aa0cbe42]{border-bottom-color:transparent;border-left-color:transparent;border-top-color:transparent;border-width:.5rem .5rem .5rem 0;left:-.5rem;margin-left:0;margin-right:0;top:calc(50% - 1rem)}.v-step[x-placement^=left][data-v-aa0cbe42]{margin-right:.5rem}.v-step[x-placement^=left] .v-step__arrow[data-v-aa0cbe42]{border-bottom-color:transparent;border-right-color:transparent;border-top-color:transparent;border-width:.5rem 0 .5rem .5rem;margin-left:0;margin-right:0;right:-.5rem;top:calc(50% - 1rem)}.v-step__header[data-v-aa0cbe42]{background-color:#454d5d;border-top-left-radius:3px;border-top-right-radius:3px;margin:-1rem -1rem .5rem;padding:.5rem}.v-step__content[data-v-aa0cbe42]{margin:0 0 1rem}.v-step__button[data-v-aa0cbe42]{-webkit-transition:all .2s ease;background:transparent;border:.05rem solid #fff;border-radius:.1rem;color:#fff;cursor:pointer;display:inline-block;font-size:.8rem;height:1.8rem;line-height:1rem;margin:0 .2rem;outline:none;padding:.35rem .4rem;text-align:center;text-decoration:none;transition:all .2s ease;vertical-align:middle;white-space:nowrap}.v-step__button[data-v-aa0cbe42]:hover{background-color:hsla(0,0%,100%,.95);color:#50596c}\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWUtdG91ci9kaXN0L3Z1ZS10b3VyLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtdG91ci9kaXN0L3Z1ZS10b3VyLmNzcz8zODlkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKShmYWxzZSk7XG4vLyBpbXBvcnRzXG5cblxuLy8gbW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIudi1zdGVwW2RhdGEtdi1hYTBjYmU0Ml17LXdlYmtpdC1maWx0ZXI6ZHJvcC1zaGFkb3coMCAwIDJweCByZ2JhKDAsMCwwLC41KSk7YmFja2dyb3VuZDojNTA1OTZjO2JvcmRlci1yYWRpdXM6M3B4O2NvbG9yOiNmZmY7ZmlsdGVyOmRyb3Atc2hhZG93KDAgMCAycHggcmdiYSgwLDAsMCwuNSkpO21heC13aWR0aDozMjBweDtwYWRkaW5nOjFyZW07dGV4dC1hbGlnbjpjZW50ZXJ9LnYtc3RlcCAudi1zdGVwX19hcnJvd1tkYXRhLXYtYWEwY2JlNDJde2JvcmRlci1jb2xvcjojNTA1OTZjO2JvcmRlci1zdHlsZTpzb2xpZDtoZWlnaHQ6MDttYXJnaW46LjVyZW07cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MH0udi1zdGVwIC52LXN0ZXBfX2Fycm93LS1kYXJrW2RhdGEtdi1hYTBjYmU0Ml17Ym9yZGVyLWNvbG9yOiM0NTRkNWR9LnYtc3RlcFt4LXBsYWNlbWVudF49dG9wXVtkYXRhLXYtYWEwY2JlNDJde21hcmdpbi1ib3R0b206LjVyZW19LnYtc3RlcFt4LXBsYWNlbWVudF49dG9wXSAudi1zdGVwX19hcnJvd1tkYXRhLXYtYWEwY2JlNDJde2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci13aWR0aDouNXJlbSAuNXJlbSAwO2JvdHRvbTotLjVyZW07bGVmdDpjYWxjKDUwJSAtIDFyZW0pO21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjB9LnYtc3RlcFt4LXBsYWNlbWVudF49Ym90dG9tXVtkYXRhLXYtYWEwY2JlNDJde21hcmdpbi10b3A6LjVyZW19LnYtc3RlcFt4LXBsYWNlbWVudF49Ym90dG9tXSAudi1zdGVwX19hcnJvd1tkYXRhLXYtYWEwY2JlNDJde2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1yaWdodC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci13aWR0aDowIC41cmVtIC41cmVtO2xlZnQ6Y2FsYyg1MCUgLSAxcmVtKTttYXJnaW4tYm90dG9tOjA7bWFyZ2luLXRvcDowO3RvcDotLjVyZW19LnYtc3RlcFt4LXBsYWNlbWVudF49cmlnaHRdW2RhdGEtdi1hYTBjYmU0Ml17bWFyZ2luLWxlZnQ6LjVyZW19LnYtc3RlcFt4LXBsYWNlbWVudF49cmlnaHRdIC52LXN0ZXBfX2Fycm93W2RhdGEtdi1hYTBjYmU0Ml17Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItbGVmdC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci13aWR0aDouNXJlbSAuNXJlbSAuNXJlbSAwO2xlZnQ6LS41cmVtO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7dG9wOmNhbGMoNTAlIC0gMXJlbSl9LnYtc3RlcFt4LXBsYWNlbWVudF49bGVmdF1bZGF0YS12LWFhMGNiZTQyXXttYXJnaW4tcmlnaHQ6LjVyZW19LnYtc3RlcFt4LXBsYWNlbWVudF49bGVmdF0gLnYtc3RlcF9fYXJyb3dbZGF0YS12LWFhMGNiZTQyXXtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1yaWdodC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci13aWR0aDouNXJlbSAwIC41cmVtIC41cmVtO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7cmlnaHQ6LS41cmVtO3RvcDpjYWxjKDUwJSAtIDFyZW0pfS52LXN0ZXBfX2hlYWRlcltkYXRhLXYtYWEwY2JlNDJde2JhY2tncm91bmQtY29sb3I6IzQ1NGQ1ZDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7bWFyZ2luOi0xcmVtIC0xcmVtIC41cmVtO3BhZGRpbmc6LjVyZW19LnYtc3RlcF9fY29udGVudFtkYXRhLXYtYWEwY2JlNDJde21hcmdpbjowIDAgMXJlbX0udi1zdGVwX19idXR0b25bZGF0YS12LWFhMGNiZTQyXXstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOi4wNXJlbSBzb2xpZCAjZmZmO2JvcmRlci1yYWRpdXM6LjFyZW07Y29sb3I6I2ZmZjtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6LjhyZW07aGVpZ2h0OjEuOHJlbTtsaW5lLWhlaWdodDoxcmVtO21hcmdpbjowIC4ycmVtO291dGxpbmU6bm9uZTtwYWRkaW5nOi4zNXJlbSAuNHJlbTt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwfS52LXN0ZXBfX2J1dHRvbltkYXRhLXYtYWEwY2JlNDJdOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjk1KTtjb2xvcjojNTA1OTZjfVwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-tour/dist/vue-tour.css\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vuesax/dist/vuesax.css":
/*!*********************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2!./node_modules/vuesax/dist/vuesax.css ***!
  \*********************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \".vs-row{clear:both;-ms-flex-flow:wrap;flex-flow:wrap}.vs-col{float:left}.vs-lg-12{width:100%!important}.vs-lg-11{width:91.66666666666667%!important}.vs-lg-10{width:83.33333333333333%!important}.vs-lg-9{width:75%!important}.vs-lg-8{width:66.66666666666667%!important}.vs-lg-7{width:58.33333333333333%!important}.vs-lg-6{width:50%!important}.vs-lg-5{width:41.66666666666667%!important}.vs-lg-4{width:33.33333333333333%!important}.vs-lg-3{width:25%!important}.vs-lg-2{width:16.66666666666667%!important}.vs-lg-1{width:8.333333333333332%!important}.vs-lg-0{display:none!important}@media only screen and (max-width:900px){.vs-sm-12{width:100%!important}.vs-sm-11{width:91.66666666666667%!important}.vs-sm-10{width:83.33333333333333%!important}.vs-sm-9{width:75%!important}.vs-sm-8{width:66.66666666666667%!important}.vs-sm-7{width:58.33333333333333%!important}.vs-sm-6{width:50%!important}.vs-sm-5{width:41.66666666666667%!important}.vs-sm-4{width:33.33333333333333%!important}.vs-sm-3{width:25%!important}.vs-sm-2{width:16.66666666666667%!important}.vs-sm-1{width:8.333333333333332%!important}.vs-sm-0{display:none!important}}@media only screen and (max-width:600px){.vs-xs-12{width:100%!important}.vs-xs-11{width:91.66666666666667%!important}.vs-xs-10{width:83.33333333333333%!important}.vs-xs-9{width:75%!important}.vs-xs-8{width:66.66666666666667%!important}.vs-xs-7{width:58.33333333333333%!important}.vs-xs-6{width:50%!important}.vs-xs-5{width:41.66666666666667%!important}.vs-xs-4{width:33.33333333333333%!important}.vs-xs-3{width:25%!important}.vs-xs-2{width:16.66666666666667%!important}.vs-xs-1{width:8.333333333333332%!important}.vs-xs-0{display:none!important}}*{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;text-transform:none;text-decoration:none}.vuesax-app-is-rtl{direction:rtl}.vuesax-app-is-ltr{direction:ltr}:root{--vs-primary:31,116,255;--vs-danger:255,71,87;--vs-success:70,201,58;--vs-dark:30,30,30;--vs-warning:255,186,0;--vs-light:245,245,245}.con-vs-alert{border-radius:6px;color:#fff;width:100%;position:relative;font-size:.8rem;cursor:default;-webkit-transition:all .25s ease;transition:all .25s ease;overflow:hidden}.icon-alert{height:100%;position:absolute;padding:10px;top:0;font-size:1.1rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.vuesax-app-is-rtl .icon-alert{right:0}.vuesax-app-is-ltr .icon-alert{left:0}.vs-alert{padding:10px;overflow:hidden;position:relative}.vuesax-app-is-rtl .vs-alert.con-icon{padding-right:40px}.vuesax-app-is-ltr .vs-alert.con-icon{padding-left:40px}.vs-alert--title{font-size:.9rem;font-weight:700;padding:8px 10px}.vs-alert--close{position:relative;margin-top:4px;display:inline-block;padding:4px;border-radius:6px;padding-bottom:1px;cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease}.vuesax-app-is-rtl .vs-alert--close{margin-left:4px}.vuesax-app-is-ltr .vs-alert--close{margin-right:4px}.vuesax-app-is-rtl .vs-alert--close{float:left}.vuesax-app-is-ltr .vs-alert--close{float:right}.vs-alert--close:hover{-webkit-box-shadow:0 5px 15px 0 rgba(0,0,0,.1);box-shadow:0 5px 15px 0 rgba(0,0,0,.1)}.con-vs-alert-primary{background:rgba(var(--vs-primary),.15);-webkit-box-shadow:0 0 25px 0 rgba(var(--vs-primary),.15);box-shadow:0 0 25px 0 rgba(var(--vs-primary),.15);color:rgba(var(--vs-primary),1)}.con-vs-alert-primary h4{-webkit-box-shadow:0 6px 15px -7px rgba(var(--vs-primary),.4);box-shadow:0 6px 15px -7px rgba(var(--vs-primary),.4)}.con-vs-alert-primary .con-x{background:rgba(var(--vs-primary),1);color:#fff}.con-vs-alert-secondary{background:rgba(var(--vs-secondary),.15);-webkit-box-shadow:0 0 25px 0 rgba(var(--vs-secondary),.15);box-shadow:0 0 25px 0 rgba(var(--vs-secondary),.15);color:rgba(var(--vs-secondary),1)}.con-vs-alert-secondary h4{-webkit-box-shadow:0 6px 15px -7px rgba(var(--vs-secondary),.4);box-shadow:0 6px 15px -7px rgba(var(--vs-secondary),.4)}.con-vs-alert-secondary .con-x{background:rgba(var(--vs-secondary),1);color:#fff}.con-vs-alert-danger{background:rgba(var(--vs-danger),.15);-webkit-box-shadow:0 0 25px 0 rgba(var(--vs-danger),.15);box-shadow:0 0 25px 0 rgba(var(--vs-danger),.15);color:rgba(var(--vs-danger),1)}.con-vs-alert-danger h4{-webkit-box-shadow:0 6px 15px -7px rgba(var(--vs-danger),.4);box-shadow:0 6px 15px -7px rgba(var(--vs-danger),.4)}.con-vs-alert-danger .con-x{background:rgba(var(--vs-danger),1);color:#fff}.con-vs-alert-success{background:rgba(var(--vs-success),.15);-webkit-box-shadow:0 0 25px 0 rgba(var(--vs-success),.15);box-shadow:0 0 25px 0 rgba(var(--vs-success),.15);color:rgba(var(--vs-success),1)}.con-vs-alert-success h4{-webkit-box-shadow:0 6px 15px -7px rgba(var(--vs-success),.4);box-shadow:0 6px 15px -7px rgba(var(--vs-success),.4)}.con-vs-alert-success .con-x{background:rgba(var(--vs-success),1);color:#fff}.con-vs-alert-warning{background:rgba(var(--vs-warning),.15);-webkit-box-shadow:0 0 25px 0 rgba(var(--vs-warning),.15);box-shadow:0 0 25px 0 rgba(var(--vs-warning),.15);color:rgba(var(--vs-warning),1)}.con-vs-alert-warning h4{-webkit-box-shadow:0 6px 15px -7px rgba(var(--vs-warning),.4);box-shadow:0 6px 15px -7px rgba(var(--vs-warning),.4)}.con-vs-alert-warning .con-x{background:rgba(var(--vs-warning),1);color:#fff}.con-vs-alert-dark{background:rgba(var(--vs-dark),.15);-webkit-box-shadow:0 0 25px 0 rgba(var(--vs-dark),.15);box-shadow:0 0 25px 0 rgba(var(--vs-dark),.15);color:rgba(var(--vs-dark),1)}.con-vs-alert-dark h4{-webkit-box-shadow:0 6px 15px -7px rgba(var(--vs-dark),.4);box-shadow:0 6px 15px -7px rgba(var(--vs-dark),.4)}.con-vs-alert-dark .con-x{background:rgba(var(--vs-dark),1);color:#fff}.con-vs-alert-light{background:rgba(var(--vs-light),.15);-webkit-box-shadow:0 0 25px 0 rgba(var(--vs-light),.15);box-shadow:0 0 25px 0 rgba(var(--vs-light),.15);color:rgba(var(--vs-light),1)}.con-vs-alert-light h4{-webkit-box-shadow:0 6px 15px -7px rgba(var(--vs-light),.4);box-shadow:0 6px 15px -7px rgba(var(--vs-light),.4)}.con-vs-alert-light .con-x{background:rgba(var(--vs-light),1);color:#fff}.con-vs-avatar{width:32px;height:32px;border-radius:50%;position:relative;cursor:pointer;display:inline-block;margin:5px}.con-vs-avatar.large{width:50px;height:50px}.con-vs-avatar.small{width:24px;height:24px}.con-vs-avatar.small .vs-avatar-text{font-size:.9375em}.vs-avatar--count{position:absolute;top:1px;right:1px;width:7px;height:7px;border-radius:50%;z-index:100}.vs-avatar--count.badgeNumber{width:auto;height:auto;top:-3px;right:0;border-radius:4px;padding-left:3px;padding-right:3px;font-size:.625em;color:#fff}.vs-avatar--text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.vs-avatar--con-img{position:absolute;width:100%;height:100%;overflow:hidden;border-radius:50%}.vs-avatar--con-img img{width:100%}.con-vs-avatar-primary{background:rgba(var(--vs-primary),1)}.vs-avatar-text-primary{color:rgba(var(--vs-primary),1)}.con-vs-avatar-secondary{background:rgba(var(--vs-secondary),1)}.vs-avatar-text-secondary{color:rgba(var(--vs-secondary),1)}.con-vs-avatar-danger{background:rgba(var(--vs-danger),1)}.vs-avatar-text-danger{color:rgba(var(--vs-danger),1)}.con-vs-avatar-success{background:rgba(var(--vs-success),1)}.vs-avatar-text-success{color:rgba(var(--vs-success),1)}.con-vs-avatar-warning{background:rgba(var(--vs-warning),1)}.vs-avatar-text-warning{color:rgba(var(--vs-warning),1)}.con-vs-avatar-dark{background:rgba(var(--vs-dark),1)}.vs-avatar-text-dark{color:rgba(var(--vs-dark),1)}.con-vs-avatar-light{background:rgba(var(--vs-light),1)}.vs-avatar-text-light{color:rgba(var(--vs-light),1)}.vs-breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex}.vs-breadcrumb.vs-align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vs-breadcrumb.vs-align-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-breadcrumb.vs-align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vs-breadcrumb .disabled-link{opacity:.5;pointer-events:none}.vs-breadcrumb--ol{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;list-style-type:none}.vs-breadcrumb--ol li.vs-active{cursor:default}.vs-breadcrumb--ol a{-webkit-transition:all .2s ease;transition:all .2s ease;color:rgba(0,0,0,.4)}.vs-breadcrumb--ol a:focus,.vs-breadcrumb--ol a:hover{color:rgba(0,0,0,.7);text-decoration:none}.vs-breadcrum--separator{color:rgba(0,0,0,.4);padding:0 .5rem 0 .5rem}.vs-breadcrum--separator.material-icons{vertical-align:middle;font-size:inherit}.vs-breadcrumb-text-primary{color:rgba(var(--vs-primary),1)}.vs-breadcrumb-text-secondary{color:rgba(var(--vs-secondary),1)}.vs-breadcrumb-text-danger{color:rgba(var(--vs-danger),1)}.vs-breadcrumb-text-success{color:rgba(var(--vs-success),1)}.vs-breadcrumb-text-warning{color:rgba(var(--vs-warning),1)}.vs-breadcrumb-text-dark{color:rgba(var(--vs-dark),1)}.vs-breadcrumb-text-light{color:rgba(var(--vs-light),1)}.vs-button{-webkit-transition:all .2s ease;transition:all .2s ease;padding:10px;border:0;border-radius:6px;cursor:pointer;position:relative;overflow:hidden;color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;background:transparent}.vs-button.vs-radius{border-radius:50%}.vs-button.large{padding:12px;font-size:1em}.vs-button.small{padding:7px;font-size:.7em}.vs-button:disabled{opacity:.5;cursor:default;pointer-events:none}.vs-button--icon{z-index:100;display:block;position:relative;font-size:1.125em;-webkit-transition:all .2s ease;transition:all .2s ease}.vs-button--background{border-radius:50%;width:10px;position:absolute;height:10px;z-index:0;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-webkit-box-shadow:inset 0 0 60px 0 hsla(0,0%,100%,.5);box-shadow:inset 0 0 60px 0 hsla(0,0%,100%,.5)}.vs-button--text{position:relative;color:inherit;display:inline-block;-webkit-transition:all .25s ease;transition:all .25s ease}.vs-button-border{padding:9px}.vs-button-border.isActive .vs-button--icon,.vs-button-border.isActive .vs-button--text,.vs-button-flat.isActive .vs-button--icon,.vs-button-flat.isActive .vs-button--text{color:#fff!important}.vs-button-filled:hover{-webkit-box-shadow:0 9px 28px -9px;box-shadow:0 9px 28px -9px}.vs-button-line{padding:9px 10px;border-radius:0;overflow:visible;border-style:solid}.vs-button-line .vs-button-linex{-webkit-transition:all .2s ease;transition:all .2s ease;width:0;position:absolute;left:0;bottom:-2px;height:2px}.vs-button-line:hover .vs-button--icon,.vs-button-line:hover .vs-button--text{-webkit-transform:translateY(2px);transform:translateY(2px)}.vs-button-line:hover .vs-button-linex{width:100%!important}.vs-button-gradient:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 8px 25px -8px #aaa;box-shadow:0 8px 25px -8px #aaa}.vs-button-gradient:active{-webkit-transform:translate(0);transform:translate(0);-webkit-box-shadow:0 8px 0 -8px #aaa;box-shadow:0 8px 0 -8px #aaa}.vs-button-relief{padding:10px}.vs-button-relief:active{-webkit-transform:translateY(3px);transform:translateY(3px);-webkit-box-shadow:none!important;box-shadow:none!important}.includeIcon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vuesax-app-is-rtl .includeIcon{float:right}.vuesax-app-is-ltr .includeIcon{float:left}.includeIconOnly{width:38px!important;height:38px!important}.includeIconOnly.large{width:44px!important;height:44px!important;font-size:.7em}.includeIconOnly.small{width:28px!important;height:28px!important}.includeIconOnly.small .vs-icon{font-size:.85rem}.vs-button-primary.vs-button-filled{background:rgba(var(--vs-primary),1)!important}.vs-button-primary.vs-button-filled:hover{-webkit-box-shadow:0 8px 25px -8px rgba(var(--vs-primary),1);box-shadow:0 8px 25px -8px rgba(var(--vs-primary),1)}.vs-button-primary.vs-button-border,.vs-button-primary.vs-button-flat{border:1px solid rgba(var(--vs-primary),1);background:transparent!important;color:rgba(var(--vs-primary),1)}.vs-button-primary.vs-button-border .vs-button--text.isActive,.vs-button-primary.vs-button-flat .vs-button--text.isActive{color:#fff!important}.vs-button-primary.vs-button-border:hover,.vs-button-primary.vs-button-flat:hover{background:rgba(var(--vs-primary),.08)!important}.vs-button-primary.vs-button-border .vs-button-backgroundx,.vs-button-primary.vs-button-flat .vs-button-backgroundx{background:rgba(var(--vs-primary),1);-webkit-box-shadow:inset 0 0 60px 0 rgba(var(--vs-primary),1);box-shadow:inset 0 0 60px 0 rgba(var(--vs-primary),1)}.vs-button-primary.vs-button-flat{border:none!important}.vs-button-primary.vs-button-line{color:rgba(var(--vs-primary),1);border-color:rgba(var(--vs-primary),.2)}.vs-button-primary.vs-button-line .vs-button-linex{background:rgba(var(--vs-primary),1)}.vs-button-primary.vs-button-gradient{background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-primary),1),rgba(var(--vs-primary),.5))!important;text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-button-primary.vs-button-relief{background:rgba(var(--vs-primary),1);-webkit-box-shadow:0 -3px 0 0 rgba(0,0,0,.2) inset;box-shadow:inset 0 -3px 0 0 rgba(0,0,0,.2)}.vs-button-secondary.vs-button-filled{background:rgba(var(--vs-secondary),1)!important}.vs-button-secondary.vs-button-filled:hover{-webkit-box-shadow:0 8px 25px -8px rgba(var(--vs-secondary),1);box-shadow:0 8px 25px -8px rgba(var(--vs-secondary),1)}.vs-button-secondary.vs-button-border,.vs-button-secondary.vs-button-flat{border:1px solid rgba(var(--vs-secondary),1);background:transparent!important;color:rgba(var(--vs-secondary),1)}.vs-button-secondary.vs-button-border .vs-button--text.isActive,.vs-button-secondary.vs-button-flat .vs-button--text.isActive{color:#fff!important}.vs-button-secondary.vs-button-border:hover,.vs-button-secondary.vs-button-flat:hover{background:rgba(var(--vs-secondary),.08)!important}.vs-button-secondary.vs-button-border .vs-button-backgroundx,.vs-button-secondary.vs-button-flat .vs-button-backgroundx{background:rgba(var(--vs-secondary),1);-webkit-box-shadow:inset 0 0 60px 0 rgba(var(--vs-secondary),1);box-shadow:inset 0 0 60px 0 rgba(var(--vs-secondary),1)}.vs-button-secondary.vs-button-flat{border:none!important}.vs-button-secondary.vs-button-line{color:rgba(var(--vs-secondary),1);border-color:rgba(var(--vs-secondary),.2)}.vs-button-secondary.vs-button-line .vs-button-linex{background:rgba(var(--vs-secondary),1)}.vs-button-secondary.vs-button-gradient{background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-secondary),1),rgba(var(--vs-secondary),.5))!important;text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-button-secondary.vs-button-relief{background:rgba(var(--vs-secondary),1);-webkit-box-shadow:0 -3px 0 0 rgba(0,0,0,.2) inset;box-shadow:inset 0 -3px 0 0 rgba(0,0,0,.2)}.vs-button-danger.vs-button-filled{background:rgba(var(--vs-danger),1)!important}.vs-button-danger.vs-button-filled:hover{-webkit-box-shadow:0 8px 25px -8px rgba(var(--vs-danger),1);box-shadow:0 8px 25px -8px rgba(var(--vs-danger),1)}.vs-button-danger.vs-button-border,.vs-button-danger.vs-button-flat{border:1px solid rgba(var(--vs-danger),1);background:transparent!important;color:rgba(var(--vs-danger),1)}.vs-button-danger.vs-button-border .vs-button--text.isActive,.vs-button-danger.vs-button-flat .vs-button--text.isActive{color:#fff!important}.vs-button-danger.vs-button-border:hover,.vs-button-danger.vs-button-flat:hover{background:rgba(var(--vs-danger),.08)!important}.vs-button-danger.vs-button-border .vs-button-backgroundx,.vs-button-danger.vs-button-flat .vs-button-backgroundx{background:rgba(var(--vs-danger),1);-webkit-box-shadow:inset 0 0 60px 0 rgba(var(--vs-danger),1);box-shadow:inset 0 0 60px 0 rgba(var(--vs-danger),1)}.vs-button-danger.vs-button-flat{border:none!important}.vs-button-danger.vs-button-line{color:rgba(var(--vs-danger),1);border-color:rgba(var(--vs-danger),.2)}.vs-button-danger.vs-button-line .vs-button-linex{background:rgba(var(--vs-danger),1)}.vs-button-danger.vs-button-gradient{background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-danger),1),rgba(var(--vs-danger),.5))!important;text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-button-danger.vs-button-relief{background:rgba(var(--vs-danger),1);-webkit-box-shadow:0 -3px 0 0 rgba(0,0,0,.2) inset;box-shadow:inset 0 -3px 0 0 rgba(0,0,0,.2)}.vs-button-success.vs-button-filled{background:rgba(var(--vs-success),1)!important}.vs-button-success.vs-button-filled:hover{-webkit-box-shadow:0 8px 25px -8px rgba(var(--vs-success),1);box-shadow:0 8px 25px -8px rgba(var(--vs-success),1)}.vs-button-success.vs-button-border,.vs-button-success.vs-button-flat{border:1px solid rgba(var(--vs-success),1);background:transparent!important;color:rgba(var(--vs-success),1)}.vs-button-success.vs-button-border .vs-button--text.isActive,.vs-button-success.vs-button-flat .vs-button--text.isActive{color:#fff!important}.vs-button-success.vs-button-border:hover,.vs-button-success.vs-button-flat:hover{background:rgba(var(--vs-success),.08)!important}.vs-button-success.vs-button-border .vs-button-backgroundx,.vs-button-success.vs-button-flat .vs-button-backgroundx{background:rgba(var(--vs-success),1);-webkit-box-shadow:inset 0 0 60px 0 rgba(var(--vs-success),1);box-shadow:inset 0 0 60px 0 rgba(var(--vs-success),1)}.vs-button-success.vs-button-flat{border:none!important}.vs-button-success.vs-button-line{color:rgba(var(--vs-success),1);border-color:rgba(var(--vs-success),.2)}.vs-button-success.vs-button-line .vs-button-linex{background:rgba(var(--vs-success),1)}.vs-button-success.vs-button-gradient{background:#0064fa;background-image:linear-gradient(30deg,rgba(var(--vs-success),1),rgba(var(--vs-success),.6))!important;text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-button-success.vs-button-relief{background:rgba(var(--vs-success),1);-webkit-box-shadow:0 -3px 0 0 rgba(0,0,0,.2) inset;box-shadow:inset 0 -3px 0 0 rgba(0,0,0,.2)}.vs-button-warning.vs-button-filled{background:rgba(var(--vs-warning),1)!important}.vs-button-warning.vs-button-filled:hover{-webkit-box-shadow:0 8px 25px -8px rgba(var(--vs-warning),1);box-shadow:0 8px 25px -8px rgba(var(--vs-warning),1)}.vs-button-warning.vs-button-border,.vs-button-warning.vs-button-flat{border:1px solid rgba(var(--vs-warning),1);background:transparent!important;color:rgba(var(--vs-warning),1)}.vs-button-warning.vs-button-border .vs-button--text.isActive,.vs-button-warning.vs-button-flat .vs-button--text.isActive{color:#fff!important}.vs-button-warning.vs-button-border:hover,.vs-button-warning.vs-button-flat:hover{background:rgba(var(--vs-warning),.08)!important}.vs-button-warning.vs-button-border .vs-button-backgroundx,.vs-button-warning.vs-button-flat .vs-button-backgroundx{background:rgba(var(--vs-warning),1);-webkit-box-shadow:inset 0 0 60px 0 rgba(var(--vs-warning),1);box-shadow:inset 0 0 60px 0 rgba(var(--vs-warning),1)}.vs-button-warning.vs-button-flat{border:none!important}.vs-button-warning.vs-button-line{color:rgba(var(--vs-warning),1);border-color:rgba(var(--vs-warning),.2)}.vs-button-warning.vs-button-line .vs-button-linex{background:rgba(var(--vs-warning),1)}.vs-button-warning.vs-button-gradient{background:#fafafa;background-image:linear-gradient(30deg,rgba(var(--vs-warning),1),rgba(var(--vs-warning),.5))!important;text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-button-warning.vs-button-relief{background:rgba(var(--vs-warning),1);-webkit-box-shadow:0 -3px 0 0 rgba(0,0,0,.2) inset;box-shadow:inset 0 -3px 0 0 rgba(0,0,0,.2)}.vs-button-dark.vs-button-filled{background:rgba(var(--vs-dark),1)!important}.vs-button-dark.vs-button-filled:hover{-webkit-box-shadow:0 8px 25px -8px rgba(var(--vs-dark),1);box-shadow:0 8px 25px -8px rgba(var(--vs-dark),1)}.vs-button-dark.vs-button-border,.vs-button-dark.vs-button-flat{border:1px solid rgba(var(--vs-dark),1);background:transparent!important;color:rgba(var(--vs-dark),1)}.vs-button-dark.vs-button-border .vs-button--text.isActive,.vs-button-dark.vs-button-flat .vs-button--text.isActive{color:#fff!important}.vs-button-dark.vs-button-border:hover,.vs-button-dark.vs-button-flat:hover{background:rgba(var(--vs-dark),.08)!important}.vs-button-dark.vs-button-border .vs-button-backgroundx,.vs-button-dark.vs-button-flat .vs-button-backgroundx{background:rgba(var(--vs-dark),1);-webkit-box-shadow:inset 0 0 60px 0 rgba(var(--vs-dark),1);box-shadow:inset 0 0 60px 0 rgba(var(--vs-dark),1)}.vs-button-dark.vs-button-flat{border:none!important}.vs-button-dark.vs-button-line{color:rgba(var(--vs-dark),1);border-color:rgba(var(--vs-dark),.2)}.vs-button-dark.vs-button-line .vs-button-linex{background:rgba(var(--vs-dark),1)}.vs-button-dark.vs-button-gradient{background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-dark),1),rgba(var(--vs-dark),.5))!important;text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-button-dark.vs-button-relief{background:rgba(var(--vs-dark),1);-webkit-box-shadow:0 -3px 0 0 hsla(0,0%,100%,.1) inset;box-shadow:inset 0 -3px 0 0 hsla(0,0%,100%,.1)}.vs-button-light.vs-button-filled{background:rgba(var(--vs-light),1)!important}.vs-button-light.vs-button-filled:hover{-webkit-box-shadow:0 8px 25px -8px rgba(var(--vs-light),1);box-shadow:0 8px 25px -8px rgba(var(--vs-light),1)}.vs-button-light.vs-button-border,.vs-button-light.vs-button-flat{border:1px solid rgba(var(--vs-light),1);background:transparent!important;color:rgba(var(--vs-light),1)}.vs-button-light.vs-button-border .vs-button--text.isActive,.vs-button-light.vs-button-flat .vs-button--text.isActive{color:#fff!important}.vs-button-light.vs-button-border:hover,.vs-button-light.vs-button-flat:hover{background:rgba(var(--vs-light),.08)!important}.vs-button-light.vs-button-border .vs-button-backgroundx,.vs-button-light.vs-button-flat .vs-button-backgroundx{background:rgba(var(--vs-light),1);-webkit-box-shadow:inset 0 0 60px 0 rgba(var(--vs-light),1);box-shadow:inset 0 0 60px 0 rgba(var(--vs-light),1)}.vs-button-light.vs-button-flat{border:none!important}.vs-button-light.vs-button-line{color:rgba(var(--vs-light),1);border-color:rgba(var(--vs-light),.2)}.vs-button-light.vs-button-line .vs-button-linex{background:rgba(var(--vs-light),1)}.vs-button-light.vs-button-gradient{background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-light),1),rgba(var(--vs-light),.5))!important;text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-button-light.vs-button-relief{background:rgba(var(--vs-light),1);-webkit-box-shadow:0 -3px 0 0 rgba(0,0,0,.2) inset;box-shadow:inset 0 -3px 0 0 rgba(0,0,0,.2)}.con-vs-card{width:100%;height:auto;background:#fff;border-radius:8px;margin-bottom:20px;display:block;-webkit-box-shadow:0 4px 25px 0 rgba(0,0,0,.1);box-shadow:0 4px 25px 0 rgba(0,0,0,.1);-webkit-transition:all .3s ease;transition:all .3s ease}.con-vs-card.withHover{cursor:pointer}.con-vs-card.withHover:hover{-webkit-transform:translateY(4px);transform:translateY(4px);-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.1);box-shadow:0 0 5px 0 rgba(0,0,0,.1)}.con-vs-card.withHover:hover img{-webkit-transform:scale(1.1);transform:scale(1.1)}.con-vs-card.fixedHeight{height:100%;position:relative}.vs-card--header{padding:10px;-webkit-box-shadow:0 10px 15px -10px rgba(0,0,0,.05);box-shadow:0 10px 15px -10px rgba(0,0,0,.05)}.vs-card--header h3{padding:0}.vs-card--footer{position:relative;padding:10px;-webkit-transform:translateY(40%);transform:translateY(40%);margin-top:-5%;padding-top:0}.vs-card--footer.fixedHeight{position:absolute;bottom:0;right:0;margin-top:0;-webkit-transform:translate(0);transform:translate(0)}.vs-card--content{padding:10px;font-size:.8rem;margin-bottom:15px}.vs-card--content.fixedHeight{margin-bottom:20px}.vs-card--media{width:100%;overflow:hidden}.vs-card--media img{width:100%;-webkit-transition:all .25s ease;transition:all .25s ease;display:block}.con-vs-checkbox{position:relative;display:block;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-left:5px;margin-right:5px}.con-vs-checkbox.vs-checkbox-small .vs-checkbox{width:15px;height:15px}.con-vs-checkbox.vs-checkbox-small .vs-checkbox .vs-icon{font-size:.7rem}.con-vs-checkbox.vs-checkbox-large .vs-checkbox{width:24px;height:24px}.vs-checkbox--input{position:absolute;width:100%;height:100%;opacity:0;z-index:200;cursor:pointer;background:#55d775}.vs-checkbox--input:disabled{cursor:default;pointer-events:none}.vs-checkbox--input:disabled+.vs-checkbox{opacity:.5;cursor:default;pointer-events:none}.vs-checkbox--input:disabled+.vs-checkbox .vs-checkbox--check{cursor:default;pointer-events:none}.vs-checkbox--input:active:checked+.vs-checkbox .vs-checkbox--check{-webkit-transform:translate(3px);transform:translate(3px)}.vs-checkbox--input:active:checked+.vs-checkbox .vs-icon{-webkit-transform:translate(6px);transform:translate(6px)}.vs-checkbox--input:checked+.vs-checkbox{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.vs-checkbox--input:checked+.vs-checkbox .vs-checkbox--check{-webkit-transform:translate(0);transform:translate(0)}.vs-checkbox--input:checked+.vs-checkbox .vs-icon{opacity:1;-webkit-transform:translate(0);transform:translate(0);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.vs-checkbox,.vs-checkbox--input:checked+.vs-checkbox .vs-icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-checkbox{-webkit-transition:all .2s ease;transition:all .2s ease;cursor:pointer;position:relative;display:block;width:20px;height:20px;border-radius:2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.vuesax-app-is-rtl .vs-checkbox{margin-left:5px}.vuesax-app-is-ltr .vs-checkbox{margin-right:5px}.vs-checkbox--check{width:100%;height:100%;position:absolute;left:0;-webkit-transform:translate(100%);transform:translate(100%);-webkit-transform-origin:right;transform-origin:right;-webkit-transition:all .2s ease;transition:all .2s ease;z-index:10}.vs-checkbox--icon{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;z-index:100;font-size:1.125em;opacity:0;-webkit-transform:translate(30px);transform:translate(30px);-webkit-transform-origin:center;transform-origin:center}.vs-checkbox-primary .vs-checkbox{border:2px solid #b4b4b4}.vs-checkbox-primary input:checked+.vs-checkbox{border:2px solid rgba(var(--vs-primary),1)!important;background:rgba(var(--vs-primary),1)}.vs-checkbox-secondary .vs-checkbox{border:2px solid #b4b4b4}.vs-checkbox-secondary input:checked+.vs-checkbox{border:2px solid rgba(var(--vs-secondary),1)!important;background:rgba(var(--vs-secondary),1)}.vs-checkbox-danger .vs-checkbox{border:2px solid #b4b4b4}.vs-checkbox-danger input:checked+.vs-checkbox{border:2px solid rgba(var(--vs-danger),1)!important;background:rgba(var(--vs-danger),1)}.vs-checkbox-success .vs-checkbox{border:2px solid #b4b4b4}.vs-checkbox-success input:checked+.vs-checkbox{border:2px solid rgba(var(--vs-success),1)!important;background:rgba(var(--vs-success),1)}.vs-checkbox-warning .vs-checkbox{border:2px solid #b4b4b4}.vs-checkbox-warning input:checked+.vs-checkbox{border:2px solid rgba(var(--vs-warning),1)!important;background:rgba(var(--vs-warning),1)}.vs-checkbox-dark .vs-checkbox{border:2px solid #b4b4b4}.vs-checkbox-dark input:checked+.vs-checkbox{border:2px solid rgba(var(--vs-dark),1)!important;background:rgba(var(--vs-dark),1)}.vs-checkbox-light .vs-checkbox{border:2px solid #b4b4b4}.vs-checkbox-light input:checked+.vs-checkbox{border:2px solid rgba(var(--vs-light),1)!important;background:rgba(var(--vs-light),1)}.con-vs-chip{background:#f0f0f0;border-radius:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.7rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:3px;min-height:28px;color:rgba(0,0,0,.7);position:relative}.vuesax-app-is-rtl .con-vs-chip{float:right}.vuesax-app-is-ltr .con-vs-chip{float:left}.vuesax-app-is-rtl .con-vs-chip{margin-left:2px}.vuesax-app-is-ltr .con-vs-chip{margin-right:2px}.vuesax-app-is-rtl .con-vs-chip{padding-left:10px}.vuesax-app-is-ltr .con-vs-chip{padding-right:10px}.vuesax-app-is-rtl .con-vs-chip.closable{padding-left:0}.vuesax-app-is-ltr .con-vs-chip.closable{padding-right:0}.con-vs-chip.con-color .con-vs-avatar{background:hsla(0,0%,100%,.2)}.con-vs-chip .con-vs-avatar{width:24px;height:24px;position:relative;display:block;margin:2px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:rgba(0,0,0,.15)}.vuesax-app-is-rtl .con-vs-chip .con-vs-avatar{-webkit-transform:translate(8px);transform:translate(8px)}.vuesax-app-is-ltr .con-vs-chip .con-vs-avatar{-webkit-transform:translate(-8px);transform:translate(-8px)}.con-vs-chip .con-vs-avatar .material-icons{margin-top:0;font-size:.8rem}.con-vs-chip.bg-chip-transparent{font-weight:500}.vs-chip--close{width:20px;height:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;border:0;margin:0 4px;cursor:pointer;background:rgba(0,0,0,.15);color:#fff;-webkit-transition:all .3s ease;transition:all .3s ease}.vs-chip--close:hover{background:255,71,87}.vs-chip--close i{font-size:.9rem}.vs-chip--text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vuesax-app-is-rtl .vs-chip--text{margin-right:10px}.vuesax-app-is-ltr .vs-chip--text{margin-left:10px}.vs-chip-primary:not(.bg-chip-transparent){background:rgba(var(--vs-primary),1)}.vs-chip-primary.bg-chip-transparent{background:rgba(var(--vs-primary),.15);color:rgba(var(--vs-primary),1)}.vs-chip-secondary:not(.bg-chip-transparent){background:rgba(var(--vs-secondary),1)}.vs-chip-secondary.bg-chip-transparent{background:rgba(var(--vs-secondary),.15);color:rgba(var(--vs-secondary),1)}.vs-chip-danger:not(.bg-chip-transparent){background:rgba(var(--vs-danger),1)}.vs-chip-danger.bg-chip-transparent{background:rgba(var(--vs-danger),.15);color:rgba(var(--vs-danger),1)}.vs-chip-success:not(.bg-chip-transparent){background:rgba(var(--vs-success),1)}.vs-chip-success.bg-chip-transparent{background:rgba(var(--vs-success),.15);color:rgba(var(--vs-success),1)}.vs-chip-warning:not(.bg-chip-transparent){background:rgba(var(--vs-warning),1)}.vs-chip-warning.bg-chip-transparent{background:rgba(var(--vs-warning),.15);color:rgba(var(--vs-warning),1)}.vs-chip-dark:not(.bg-chip-transparent){background:rgba(var(--vs-dark),1)}.vs-chip-dark.bg-chip-transparent{background:rgba(var(--vs-dark),.15);color:rgba(var(--vs-dark),1)}.vs-chip-light:not(.bg-chip-transparent){background:rgba(var(--vs-light),1)}.vs-chip-light.bg-chip-transparent{background:rgba(var(--vs-light),.15);color:rgba(var(--vs-light),1)}.con-chips{width:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-shadow:0 2px 15px 0 rgba(0,0,0,.1);box-shadow:0 2px 15px 0 rgba(0,0,0,.1);border-radius:5px;overflow:hidden;padding:5px}.con-chips .con-vs-chip{margin-top:0;margin-bottom:0}.con-chips--input{display:inline-block;-webkit-box-flex:1;-ms-flex:1;flex:1;color:inherit;padding:9px;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:80px;border:0}.vuesax-app-is-rtl .con-chips--input{margin-right:2px}.vuesax-app-is-ltr .con-chips--input{margin-left:2px}.con-chips--remove-all{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:5px;cursor:pointer;-webkit-transition:all .3s ease;transition:all .3s ease}.vuesax-app-is-rtl .con-chips--remove-all{left:0}.vuesax-app-is-ltr .con-chips--remove-all{right:0}.con-chips--remove-all:hover{color:rgba(var(--vs-danger),1)}.vuesax-app-is-rtl .no-items .con-chips--input{padding-right:10px!important}.vuesax-app-is-ltr .no-items .con-chips--input{padding-left:10px!important}.vs-collapse{-webkit-transition:all .3s ease;transition:all .3s ease;border-radius:8px;padding:10px}.vs-collapse.shadow .open-item{-webkit-transform:scale(1.01);transform:scale(1.01);-webkit-box-shadow:0 2px 15px 0 rgba(0,0,0,.05);box-shadow:0 2px 15px 0 rgba(0,0,0,.05);margin-top:5px;border-bottom:0 solid transparent;margin-bottom:10px;border-radius:6px}.vuesax-app-is-rtl .vs-collapse.shadow .open-item .vs-collapse-item--icon-header{-webkit-transform:translate(50%,-50%) rotate(180deg);transform:translate(50%,-50%) rotate(180deg)}.vuesax-app-is-ltr .vs-collapse.shadow .open-item .vs-collapse-item--icon-header{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}.vs-collapse.shadow .open-item .con-content-item{opacity:1}.vs-collapse.margin .vs-collapse-item{margin-top:10px;margin-bottom:10px;-webkit-box-shadow:0 2px 15px 0 rgba(0,0,0,.05);box-shadow:0 2px 15px 0 rgba(0,0,0,.05);border-radius:5px;border-bottom:0 solid transparent}.vs-collapse.margin .open-item .con-content-item{opacity:1}.vuesax-app-is-rtl .vs-collapse.margin .open-item .vs-collapse-item--icon-header{-webkit-transform:translate(50%,-50%) rotate(180deg);transform:translate(50%,-50%) rotate(180deg)}.vuesax-app-is-ltr .vs-collapse.margin .open-item .vs-collapse-item--icon-header{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}.vs-collapse.border{border:1px solid rgba(0,0,0,.1);padding:0}.vs-collapse.border .vs-collapse-item{border-bottom:1px solid rgba(0,0,0,.1)}.vs-collapse.border .open-item .con-content-item{opacity:1}.vuesax-app-is-rtl .vs-collapse.border .open-item .vs-collapse-item--icon-header{-webkit-transform:translate(50%,-50%) rotate(180deg);transform:translate(50%,-50%) rotate(180deg)}.vuesax-app-is-ltr .vs-collapse.border .open-item .vs-collapse-item--icon-header{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}.vs-collapse.default .open-item .con-content--item{opacity:1}.vuesax-app-is-rtl .vs-collapse.default .open-item .vs-collapse-item--icon-header{-webkit-transform:translate(50%,-50%) rotate(180deg);transform:translate(50%,-50%) rotate(180deg)}.vuesax-app-is-ltr .vs-collapse.default .open-item .vs-collapse-item--icon-header{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}.vs-collapse-item{border-bottom:1px solid rgba(0,0,0,.04);cursor:pointer;-webkit-transition:all .25s ease;transition:all .25s ease}.vs-collapse-item.open-item .con-content--item{opacity:1}.vs-collapse-item.disabledx{opacity:.5;cursor:default;pointer-events:none;z-index:999}.vs-collapse-item:last-child{border-bottom:0 solid transparent!important}.vs-collapse-item--header{display:block;padding:10px;position:relative}.vs-collapse-item--header,.vs-collapse-item--icon-header{-webkit-transition:all .25s ease;transition:all .25s ease}.vs-collapse-item--icon-header{position:absolute;top:50%;display:block;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:5px}.vuesax-app-is-rtl .vs-collapse-item--icon-header{left:0}.vuesax-app-is-ltr .vs-collapse-item--icon-header{right:0}.vuesax-app-is-rtl .vs-collapse-item--icon-header{-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%)}.vuesax-app-is-ltr .vs-collapse-item--icon-header{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.vs-collapse-item--content{overflow:hidden;-webkit-transition:all .2s ease;transition:all .2s ease}.con-content--item{padding:10px;padding-top:0;font-size:.85rem;opacity:.2;-webkit-transition:all .25s ease;transition:all .25s ease}.dialog-t-enter,.dialog-t-leave-to{opacity:0!important}.dialog-t-enter .vs-dialog,.dialog-t-leave-to .vs-dialog{-webkit-transform:scale(.9)!important;transform:scale(.9)!important}.dialog-t-enter .vs-dialog-cancel,.dialog-t-leave-to .vs-dialog-cancel{border-radius:50%!important}.vuesax-app-is-rtl .dialog-t-enter .vs-dialog-cancel,.vuesax-app-is-rtl .dialog-t-leave-to .vs-dialog-cancel{-webkit-transform:translate(-8px,-8px) scale(.5)!important;transform:translate(-8px,-8px) scale(.5)!important}.vuesax-app-is-ltr .dialog-t-enter .vs-dialog-cancel,.vuesax-app-is-ltr .dialog-t-leave-to .vs-dialog-cancel{-webkit-transform:translate(8px,-8px) scale(.5)!important;transform:translate(8px,-8px) scale(.5)!important}.dialog-t-enter .vs-dialog-text,.dialog-t-leave-to .vs-dialog-text{opacity:0}.vuesax-app-is-rtl .dialog-t-enter .vs-dialog-text,.vuesax-app-is-rtl .dialog-t-leave-to .vs-dialog-text{-webkit-transform:translate(15px)!important;transform:translate(15px)!important}.vuesax-app-is-ltr .dialog-t-enter .vs-dialog-text,.vuesax-app-is-ltr .dialog-t-leave-to .vs-dialog-text{-webkit-transform:translate(-15px)!important;transform:translate(-15px)!important}.dialog-t-enter .after,.dialog-t-leave-to .after{height:0%!important}.dialog-t-enter header h3,.dialog-t-leave-to header h3{opacity:0}.vuesax-app-is-rtl .dialog-t-enter header h3,.vuesax-app-is-rtl .dialog-t-leave-to header h3{-webkit-transform:translate(50px)!important;transform:translate(50px)!important}.vuesax-app-is-ltr .dialog-t-enter header h3,.vuesax-app-is-ltr .dialog-t-leave-to header h3{-webkit-transform:translate(-50px)!important;transform:translate(-50px)!important}.dialog-t-enter footer button,.dialog-t-leave-to footer button{-webkit-transform:translateY(10px);transform:translateY(10px);opacity:0}.con-vs-dialog{-webkit-transition:all .2s;transition:all .2s;width:100%;height:100%;position:fixed;top:0;z-index:30000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:1}.vuesax-app-is-rtl .con-vs-dialog{right:0}.vuesax-app-is-ltr .con-vs-dialog{left:0}.con-vs-dialog .vs-dialog-dark{width:100%;background:rgba(0,0,0,.4);position:absolute;top:0;height:100%;z-index:10;-webkit-transition:all .25s ease;transition:all .25s ease;opacity:1}.vuesax-app-is-rtl .con-vs-dialog .vs-dialog-dark{right:0}.vuesax-app-is-ltr .con-vs-dialog .vs-dialog-dark{left:0}.con-vs-dialog .vs-dialog{-webkit-transition:all .2s;transition:all .2s;z-index:100;width:calc(100% - 20px);margin:10px;max-width:400px;border-radius:6px;-webkit-box-shadow:0 5px 20px 0 rgba(0,0,0,.1);box-shadow:0 5px 20px 0 rgba(0,0,0,.1);background:#fff;-webkit-animation:rebound .3s;animation:rebound .3s}.con-vs-dialog .vs-dialog.locked{-webkit-transform:scale(1.02);transform:scale(1.02)}.con-vs-dialog .vs-dialog .vs-dialog-text{padding:10px;font-size:.875em;-webkit-transition:all .23s ease .1s;transition:all .23s ease .1s}.con-vs-dialog .vs-dialog header{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#f8f8f8;border-radius:5px 5px;position:relative}.con-vs-dialog .vs-dialog header .con-title-after{width:100%;position:relative;overflow:hidden;border-radius:5px 5px 0 0}.con-vs-dialog .vs-dialog header span.after{-webkit-transition:all .23s ease .1s;transition:all .23s ease .1s;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:3px;height:100%;display:block}.vuesax-app-is-rtl .con-vs-dialog .vs-dialog header span.after{right:0}.vuesax-app-is-ltr .con-vs-dialog .vs-dialog header span.after{left:0}.con-vs-dialog .vs-dialog header h3{-webkit-transition:all .23s ease .1s;transition:all .23s ease .1s;padding:8px;font-size:1.2rem;margin:0}.vuesax-app-is-rtl .con-vs-dialog .vs-dialog header h3{padding-right:12px}.vuesax-app-is-ltr .con-vs-dialog .vs-dialog header h3{padding-left:12px}.con-vs-dialog .vs-dialog header .vs-dialog-cancel{-webkit-transition:all .23s ease .1s;transition:all .23s ease .1s;position:relative;padding:8px;cursor:pointer;-webkit-box-shadow:0 5px 20px 0 rgba(0,0,0,.1);box-shadow:0 5px 20px 0 rgba(0,0,0,.1);border-radius:5px;background:#fff;font-size:1.25em}.vuesax-app-is-rtl .con-vs-dialog .vs-dialog header .vs-dialog-cancel{-webkit-transform:translate(-8px,-8px);transform:translate(-8px,-8px)}.vuesax-app-is-ltr .con-vs-dialog .vs-dialog header .vs-dialog-cancel{-webkit-transform:translate(8px,-8px);transform:translate(8px,-8px)}.con-vs-dialog .vs-dialog header .vs-dialog-cancel:hover{-webkit-box-shadow:0 0 0 0 rgba(0,0,0,.1);box-shadow:0 0 0 0 rgba(0,0,0,.1)}.vuesax-app-is-rtl .con-vs-dialog .vs-dialog header .vs-dialog-cancel:hover{-webkit-transform:translate(-5px,-5px);transform:translate(-5px,-5px)}.vuesax-app-is-ltr .con-vs-dialog .vs-dialog header .vs-dialog-cancel:hover{-webkit-transform:translate(5px,-5px);transform:translate(5px,-5px)}.con-vs-dialog .vs-dialog footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;position:relative}.vuesax-app-is-rtl .con-vs-dialog .vs-dialog footer button{margin-right:0}.vuesax-app-is-ltr .con-vs-dialog .vs-dialog footer button{margin-left:0}.con-vs-dialog .vs-dialog footer:before{content:\\\"\\\";top:0;left:0;position:absolute;width:90%;height:1px;background:rgba(0,0,0,.05)}.vuesax-app-is-rtl .con-vs-dialog .vs-dialog footer:before{margin-right:5%}.vuesax-app-is-ltr .con-vs-dialog .vs-dialog footer:before{margin-left:5%}.vs-dialog-primary .vs-dialog .vs-dialog-header{color:rgba(var(--vs-primary),1)}.vs-dialog-primary .vs-dialog .after{background:rgba(var(--vs-primary),1)}.vs-dialog-secondary .vs-dialog .vs-dialog-header{color:rgba(var(--vs-secondary),1)}.vs-dialog-secondary .vs-dialog .after{background:rgba(var(--vs-secondary),1)}.vs-dialog-danger .vs-dialog .vs-dialog-header{color:rgba(var(--vs-danger),1)}.vs-dialog-danger .vs-dialog .after{background:rgba(var(--vs-danger),1)}.vs-dialog-success .vs-dialog .vs-dialog-header{color:rgba(var(--vs-success),1)}.vs-dialog-success .vs-dialog .after{background:rgba(var(--vs-success),1)}.vs-dialog-warning .vs-dialog .vs-dialog-header{color:rgba(var(--vs-warning),1)}.vs-dialog-warning .vs-dialog .after{background:rgba(var(--vs-warning),1)}.vs-dialog-dark .vs-dialog .vs-dialog-header{color:rgba(var(--vs-dark),1)}.vs-dialog-dark .vs-dialog .after{background:rgba(var(--vs-dark),1)}.vs-dialog-light .vs-dialog .vs-dialog-header{color:rgba(var(--vs-light),1)}.vs-dialog-light .vs-dialog .after{background:rgba(var(--vs-light),1)}.vs-divider{width:100%;position:relative;display:block;margin:15px 0;clear:both;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-divider .after,.vs-divider .before{position:relative;display:block;width:100%}.vs-divider--text{cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;white-space:nowrap;background:#fff;padding-left:12px;padding-right:12px;font-size:.9375em}.vs-divider--icon{font-size:1.25em}.vs-divider-border-primary{border-top-color:rgba(var(--vs-primary),1)}.vs-divider-text-primary{color:rgba(var(--vs-primary),1)}.vs-divider-background-primary{background:rgba(var(--vs-primary),1)}.vs-divider-border-secondary{border-top-color:rgba(var(--vs-secondary),1)}.vs-divider-text-secondary{color:rgba(var(--vs-secondary),1)}.vs-divider-background-secondary{background:rgba(var(--vs-secondary),1)}.vs-divider-border-danger{border-top-color:rgba(var(--vs-danger),1)}.vs-divider-text-danger{color:rgba(var(--vs-danger),1)}.vs-divider-background-danger{background:rgba(var(--vs-danger),1)}.vs-divider-border-success{border-top-color:rgba(var(--vs-success),1)}.vs-divider-text-success{color:rgba(var(--vs-success),1)}.vs-divider-background-success{background:rgba(var(--vs-success),1)}.vs-divider-border-warning{border-top-color:rgba(var(--vs-warning),1)}.vs-divider-text-warning{color:rgba(var(--vs-warning),1)}.vs-divider-background-warning{background:rgba(var(--vs-warning),1)}.vs-divider-border-dark{border-top-color:rgba(var(--vs-dark),1)}.vs-divider-text-dark{color:rgba(var(--vs-dark),1)}.vs-divider-background-dark{background:rgba(var(--vs-dark),1)}.vs-divider-border-light{border-top-color:rgba(var(--vs-light),1)}.vs-divider-text-light{color:rgba(var(--vs-light),1)}.vs-divider-background-light{background:rgba(var(--vs-light),1)}.dropdown-group-enter-active,.dropdown-group-leave-active{-webkit-transition:opacity .25s;transition:opacity .25s}.dropdown-group-enter,.dropdown-group-leave-to{opacity:0}.vs-con-dropdown{position:relative;display:inline-block;border:0;background:transparent}.vs-con-dropdown *{pointer-events:none}.vs-con-dropdown a{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.vs-con-dropdown:active{opacity:1!important}.vuesax-app-is-rtl .vs-con-dropdown .a-icon{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.vs-dropdown--group{position:relative;list-style:none;width:calc(100% - 6px);margin-left:3px;width:auto;display:block;padding:5px;padding-left:10px;padding-right:10px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;-webkit-transition:all .3s ease;transition:all .3s ease}.vs-dropdown--group.marginIcon{padding-right:25px}.vs-dropdown--group.marginIcon:hover .con-dropdown--group{border-left:1px solid rgba(0,0,0,.1)}.vs-dropdown--group.marginIcon:hover>.icon-group{-webkit-transform:translateY(-50%) rotate(-180deg);transform:translateY(-50%) rotate(-180deg);opacity:0}.vs-dropdown--group-label{font-size:.9375em;font-weight:400;pointer-events:none}.vs-dropdown--group-icon{position:absolute;right:4px;font-size:1.125em;top:50%;-webkit-transition:all .25s ease;transition:all .25s ease;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.con-dropdown--group-con-ul{padding-left:3px;position:relative;right:0;top:0;min-width:130px;width:auto;z-index:1000;background:inherit;overflow:hidden;-webkit-transition:all .3s ease;transition:all .3s ease;border-left:1px solid rgba(0,0,0,.1)}.con-dropdown--group-ul{padding-top:5px;padding-left:0;position:relative;background:#fff;border-radius:5px}.no-cascading{font-weight:700;border-top:1px solid rgba(0,0,0,.05);padding-left:0!important;padding-right:0!important;margin-top:5px!important;margin-left:0}.no-cascading>h3{padding:0 10px;font-size:.9375em;padding-top:6px;padding-bottom:6px;cursor:default}.no-cascading .con-dropdown--group-no-cascading{width:100%!important;font-weight:700;height:auto!important;opacity:1!important;border-left:1px solid transparent!important}.no-cascading .con-dropdown--group-no-cascading ul{width:100%;-webkit-box-shadow:0 5px 20px 0 transparent!important;box-shadow:0 5px 20px 0 transparent!important;padding-left:0!important}.vs-dropdown--item{-webkit-transition:all .2s ease;transition:all .2s ease;position:relative;z-index:100;border-radius:5px;width:calc(100% - 6px);margin:0 3px;list-style:none;font-weight:400!important;font-size:.9375em}.vuesax-app-is-rtl .vs-dropdown--item{text-align:right}.vuesax-app-is-ltr .vs-dropdown--item{text-align:left}.vs-dropdown--item .vs-dropdown--item-link{background:inherit!important;color:inherit!important;cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease;padding:5px;padding-left:10px;padding-right:10px;width:100%;position:relative;display:block;color:rgba(0,0,0,.7)}.vs-dropdown--item .vs-dropdown--item-link.disabled{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none!important;cursor:default;opacity:.5!important;color:rgba(0,0,0,.5)!important}.vs-dropdown--item.divider{border-top:1px solid rgba(0,0,0,.08);margin-top:5px}.dropdownx-enter,.dropdownx-leave-to{opacity:0;-webkit-transform:translate(-100%,8px)!important;transform:translate(-100%,8px)!important}.con-vs-dropdown--menu{padding-top:10px;position:absolute;height:auto;width:auto;z-index:40000;-webkit-transform:translate(-100%);transform:translate(-100%);-webkit-transition:opacity .25s,width .3s ease,-webkit-transform .25s;transition:opacity .25s,width .3s ease,-webkit-transform .25s;transition:opacity .25s,transform .25s,width .3s ease;transition:opacity .25s,transform .25s,width .3s ease,-webkit-transform .25s}.con-vs-dropdown--menu.rightx .vs-dropdown--menu--after{left:30px;right:0}.con-vs-dropdown--menu:after{content:\\\"\\\";display:block;width:100%;height:10px;position:absolute;left:0;top:100%}.vs-dropdown--menu{background:#fff;padding-left:0!important;border-radius:5px;-webkit-box-shadow:0 5px 25px 0 rgba(0,0,0,.1);box-shadow:0 5px 25px 0 rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.1);padding-top:5px;padding-bottom:5px;position:relative;margin:0}.vs-dropdown-right--menu--after{left:20px}.vs-dropdown--menu--after,.vs-dropdown-right--menu--after{position:absolute;width:10px;height:10px;display:block;background:#fff;-webkit-transform:rotate(45deg) translate(-7px);transform:rotate(45deg) translate(-7px);border-top:1px solid rgba(0,0,0,.1);border-left:1px solid rgba(0,0,0,.1);z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.vs-dropdown--menu--after{right:10px}.notHeight .vs-dropdown-menu:after{top:auto;bottom:0;border-top:1px solid transparent;border-left:1px solid transparent;border-bottom:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1);-webkit-transform:rotate(45deg) translate(7px);transform:rotate(45deg) translate(7px)}.vs-dropdown--custom{padding:5px!important;padding-top:8px!important}.vs-icon{color:inherit;text-align:center;font-size:1rem}.vs-icon.large{font-size:3.125rem;width:3.125rem;height:3.125rem}.vs-icon.medium{font-size:2.31rem;width:2.31rem;height:2.31rem}.vs-icon.small{font-size:1.5rem;width:1.5rem;height:1.5rem}.vs-icon-bg{width:1rem;height:1rem}.vs-icon-bg.bg-large{width:3.125rem;height:3.125rem}.vs-icon-bg.bg-medium{width:2.31rem;height:2.31rem}.vs-icon-bg.bg-small{width:1.5rem;height:1.5rem}.round{border-radius:50%}.con-vs-icon-bg-primary,.dot-count-primary{background:rgba(var(--vs-primary),1)}.vs-icon-primary{color:rgba(var(--vs-primary),1)}.con-vs-icon-bg-secondary,.dot-count-secondary{background:rgba(var(--vs-secondary),1)}.vs-icon-secondary{color:rgba(var(--vs-secondary),1)}.con-vs-icon-bg-danger,.dot-count-danger{background:rgba(var(--vs-danger),1)}.vs-icon-danger{color:rgba(var(--vs-danger),1)}.con-vs-icon-bg-success,.dot-count-success{background:rgba(var(--vs-success),1)}.vs-icon-success{color:rgba(var(--vs-success),1)}.con-vs-icon-bg-warning,.dot-count-warning{background:rgba(var(--vs-warning),1)}.vs-icon-warning{color:rgba(var(--vs-warning),1)}.con-vs-icon-bg-dark,.dot-count-dark{background:rgba(var(--vs-dark),1)}.vs-icon-dark{color:rgba(var(--vs-dark),1)}.con-vs-icon-bg-light,.dot-count-light{background:rgba(var(--vs-light),1)}.vs-icon-light{color:rgba(var(--vs-light),1)}.vs-images{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-images.notBorderRadius .con-vs-image,.vs-images.notBorderRadius .vs-image{border-radius:0!important}.vs-images.alternating .vs-image:nth-child(5n){width:calc(50% - 4px);float:right}.vs-images.alternating.notMargin .vs-image:nth-child(5n){width:50%}.vs-images.notMargin .vs-image{margin:0;width:25%}.vs-images--ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:10px;width:100%}.vs-image{width:calc(25% - 4px);height:auto;list-style:none;margin:2px;-webkit-transition:all .25s ease;transition:all .25s ease;float:left;-webkit-backface-visibility:visible;backface-visibility:visible;cursor:pointer}.vs-image,.vs-image .con-vs-image{border-radius:10px;position:relative}.vs-image .con-vs-image{overflow:hidden;width:100%;z-index:200}.vs-image .imag-blur{position:absolute;bottom:0;border-radius:10px;opacity:0;z-index:100;-webkit-transform:scale(1);transform:scale(1);-webkit-filter:blur(5px);filter:blur(5px)}.vs-image--img,.vs-image .imag-blur{width:100%;-webkit-transition:all .25s ease;transition:all .25s ease}.vs-image--img{background-position:50%;padding-bottom:100%;display:block;position:relative}.vs-images-hover-blur .vs-image:hover{-webkit-transform:scale(1.04) translateY(-2px);transform:scale(1.04) translateY(-2px);cursor:pointer;z-index:300}.vs-images-hover-blur .vs-image:hover .imag-blur{opacity:.8;-webkit-transform:scale(.9);transform:scale(.9);-webkit-filter:blur(5px);filter:blur(5px);bottom:-10px}.vs-images-hover-zoom .vs-image:hover .vs-image--img{-webkit-transform:scale(1.2);transform:scale(1.2)}.vs-images-hover-default .vs-image:hover{-webkit-transform:scale(.9);transform:scale(.9)}.vs-images-hover-default .vs-image:hover .vs-image--img{-webkit-transform:scale(1.3);transform:scale(1.3)}.vs-images-hover-dark .vs-image:hover{background:#000;border-radius:20px}.vs-images-hover-dark .vs-image:hover .vs-image--img{opacity:.4;border-radius:20px}.vs-images-hover-scale .vs-image:hover{z-index:300;-webkit-transform:scale(1.15);transform:scale(1.15);-webkit-box-shadow:0 3px 15px 0 rgba(0,0,0,.3);box-shadow:0 3px 15px 0 rgba(0,0,0,.3)}.vs-images-hover-curtain .vs-image{overflow:hidden}.vs-images-hover-curtain .vs-image:after{content:\\\"\\\";position:absolute;left:0;top:0;background:rgba(0,0,0,.5);width:100%;height:100%;z-index:400;border-radius:inherit;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0;-webkit-transition:all .25s ease;transition:all .25s ease}.vs-images-hover-curtain .vs-image .vs-image--img{-webkit-transform:scale(1.2) translateY(-10px);transform:scale(1.2) translateY(-10px)}.vs-images-hover-curtain .vs-image:hover .vs-image--img{-webkit-transform:scale(1.25) translateY(10px);transform:scale(1.25) translateY(10px)}.vs-images-hover-curtain .vs-image:hover:after{-webkit-transform:scale(1) translate(0);transform:scale(1) translate(0);opacity:1}@media only screen and (max-width:700px){.vs-image{width:calc(33% - 4px)}}@media only screen and (max-width:550px){.vs-image{width:calc(50% - 4px)}}@media only screen and (max-width:350px){.vs-image{width:calc(100% - 4px)}}.placeholderx-enter,.placeholderx-leave-to{opacity:0}.vuesax-app-is-rtl .placeholderx-enter,.vuesax-app-is-rtl .placeholderx-leave-to{-webkit-transform:translate(-15px)!important;transform:translate(-15px)!important}.vuesax-app-is-ltr .placeholderx-enter,.vuesax-app-is-ltr .placeholderx-leave-to{-webkit-transform:translate(15px)!important;transform:translate(15px)!important}.icon-validate-enter,.icon-validate-leave-to{opacity:0;-webkit-transform:scale(.5)!important;transform:scale(.5)!important}.vs-con-input-label{position:relative;-webkit-transition:all .3s ease;transition:all .3s ease;width:200px}.vs-con-input-label.is-label-placeholder{margin-top:17px}.vs-con-input-label .vs-con-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-input--icon{position:absolute;z-index:100;font-size:1.1rem;color:rgba(0,0,0,.4);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;top:8px}.vuesax-app-is-rtl .vs-input--icon{right:5px}.vuesax-app-is-ltr .vs-input--icon{left:5px}.vuesax-app-is-rtl .vs-input--icon{border-left:1px solid rgba(0,0,0,.1)}.vuesax-app-is-ltr .vs-input--icon{border-right:1px solid rgba(0,0,0,.1)}.vuesax-app-is-rtl .vs-input--icon{padding-left:3px}.vuesax-app-is-ltr .vs-input--icon{padding-right:3px}.vs-input--icon.small{top:4px;font-size:1rem}.vs-input--icon.large{top:14px}.vuesax-app-is-rtl .vs-input--icon.icon-after{right:auto}.vuesax-app-is-ltr .vs-input--icon.icon-after{left:auto}.vuesax-app-is-rtl .vs-input--icon.icon-after{left:5px}.vuesax-app-is-ltr .vs-input--icon.icon-after{right:5px}.vuesax-app-is-rtl .vs-input--icon.icon-after{border-right:1px solid rgba(0,0,0,.1)}.vuesax-app-is-ltr .vs-input--icon.icon-after{border-left:1px solid rgba(0,0,0,.1)}.vuesax-app-is-rtl .vs-input--icon.icon-after{border-left:0}.vuesax-app-is-ltr .vs-input--icon.icon-after{border-right:0}.vuesax-app-is-rtl .vs-input--icon.icon-after{padding-right:3px}.vuesax-app-is-ltr .vs-input--icon.icon-after{padding-left:3px}.vuesax-app-is-rtl .vs-input--icon.icon-after{padding-left:0}.vuesax-app-is-ltr .vs-input--icon.icon-after{padding-right:0}.vs-input--icon.icon-no-border{border:0}.vs-input--placeholder{-webkit-transition:all .2s ease;transition:all .2s ease;position:absolute;border-radius:5px;padding:.4rem;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;font-size:.85rem;color:rgba(0,0,0,.4);white-space:nowrap;cursor:text;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;top:-1px;pointer-events:none}.vuesax-app-is-rtl .vs-input--placeholder{right:0}.vuesax-app-is-ltr .vs-input--placeholder{left:0}.vuesax-app-is-rtl .vs-input--placeholder{padding-right:.55rem}.vuesax-app-is-ltr .vs-input--placeholder{padding-left:.55rem}.vs-input--placeholder.small{padding:.2rem}.vuesax-app-is-rtl .vs-input--placeholder.small{padding-right:.55rem}.vuesax-app-is-ltr .vs-input--placeholder.small{padding-left:.55rem}.vs-input--placeholder.large{padding-top:.8rem;padding:.7rem}.vs-input--label{font-size:.85rem;color:rgba(0,0,0,.7)}.vuesax-app-is-rtl .vs-input--label{padding-right:5px}.vuesax-app-is-ltr .vs-input--label{padding-left:5px}.vs-input--text-validation{position:relative;font-size:.65rem;overflow:hidden;-webkit-transition:all .2s ease;transition:all .2s ease}.vs-input--text-validation .vs-input--text-validation-span{padding:2px 4px;padding-bottom:4px;display:block}.vs-input--icon-validate{position:absolute;top:0;font-size:1.1rem;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 4px;border-radius:0 5px 5px 0;-webkit-transition:all .2s ease;transition:all .2s ease}.vuesax-app-is-rtl .vs-input--icon-validate{left:0}.vuesax-app-is-ltr .vs-input--icon-validate{right:0}.vs-input--icon-validate.icon-before{position:absolute;right:auto;z-index:100;font-size:1.1rem;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;top:0}.vuesax-app-is-rtl .vs-input--icon-validate.icon-before{right:0}.vuesax-app-is-ltr .vs-input--icon-validate.icon-before{left:0}.vuesax-app-is-rtl .vs-input--icon-validate.icon-before{padding-left:.2rem}.vuesax-app-is-ltr .vs-input--icon-validate.icon-before{padding-right:.2rem}.vuesax-app-is-rtl .vs-input--icon-validate.icon-before{border-left:1px}.vuesax-app-is-ltr .vs-input--icon-validate.icon-before{border-right:1px}.vs-input--input{color:inherit;position:relative;padding:.4rem;border-radius:5px;border:1px solid rgba(0,0,0,.2);-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0 0 0 0 rgba(0,0,0,.15);box-shadow:0 0 0 0 rgba(0,0,0,.15);-webkit-transition:all .3s ease;transition:all .3s ease;width:100%}.vs-input--input.small{padding:.2rem}.vuesax-app-is-rtl .vs-input--input.small{padding-right:.55rem}.vuesax-app-is-ltr .vs-input--input.small{padding-left:.55rem}.vs-input--input.small+.vs-placeholder-label-small{padding:0 .4rem}.vs-input--input.normal{padding:.4rem}.vs-input--input.large{padding:.8rem}.vs-input--input.large+.vs-placeholder-label-large{padding:.6rem}.vs-input--input:focus{-webkit-box-shadow:0 3px 10px 0 rgba(0,0,0,.15);box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.vs-input--input.hasValue+.vs-placeholder-label,.vs-input--input:focus+.vs-placeholder-label{font-size:.7rem}.vuesax-app-is-rtl .vs-input--input.hasValue+.vs-placeholder-label,.vuesax-app-is-rtl .vs-input--input:focus+.vs-placeholder-label{-webkit-transform:translate(3px,-90%)!important;transform:translate(3px,-90%)!important}.vuesax-app-is-ltr .vs-input--input.hasValue+.vs-placeholder-label,.vuesax-app-is-ltr .vs-input--input:focus+.vs-placeholder-label{-webkit-transform:translate(-3px,-90%)!important;transform:translate(-3px,-90%)!important}.vuesax-app-is-rtl .vs-input--input.hasValue+.vs-placeholder-label,.vuesax-app-is-rtl .vs-input--input:focus+.vs-placeholder-label{padding-right:.5rem!important}.vuesax-app-is-ltr .vs-input--input.hasValue+.vs-placeholder-label,.vuesax-app-is-ltr .vs-input--input:focus+.vs-placeholder-label{padding-left:.5rem!important}.vs-input--input.hasValue+.vs-placeholder-label-small,.vs-input--input:focus+.vs-placeholder-label-small{font-size:.7rem}.vuesax-app-is-rtl .vs-input--input.hasValue+.vs-placeholder-label-small,.vuesax-app-is-rtl .vs-input--input:focus+.vs-placeholder-label-small{-webkit-transform:translate(3px,-120%)!important;transform:translate(3px,-120%)!important}.vuesax-app-is-ltr .vs-input--input.hasValue+.vs-placeholder-label-small,.vuesax-app-is-ltr .vs-input--input:focus+.vs-placeholder-label-small{-webkit-transform:translate(-3px,-120%)!important;transform:translate(-3px,-120%)!important}.vuesax-app-is-rtl .vs-input--input.hasValue+.vs-placeholder-label-small,.vuesax-app-is-rtl .vs-input--input:focus+.vs-placeholder-label-small{padding-right:.5rem!important}.vuesax-app-is-ltr .vs-input--input.hasValue+.vs-placeholder-label-small,.vuesax-app-is-ltr .vs-input--input:focus+.vs-placeholder-label-small{padding-left:.5rem!important}.vuesax-app-is-rtl .vs-input--input:focus+.vs-input--placeholder{-webkit-transform:translate(-5px);transform:translate(-5px)}.vuesax-app-is-ltr .vs-input--input:focus+.vs-input--placeholder{-webkit-transform:translate(5px);transform:translate(5px)}.vuesax-app-is-rtl .vs-input--input.hasIcon{padding-right:32px}.vuesax-app-is-ltr .vs-input--input.hasIcon{padding-left:32px}.vuesax-app-is-rtl .vs-input--input.hasIcon+.vs-input--placeholder{padding-right:32px}.vuesax-app-is-ltr .vs-input--input.hasIcon+.vs-input--placeholder{padding-left:32px}.vuesax-app-is-rtl .vs-input--input.icon-after-input{padding-left:1.75rem}.vuesax-app-is-ltr .vs-input--input.icon-after-input{padding-right:1.75rem}.vuesax-app-is-rtl .vs-input--input.icon-after-input+.vs-input--placeholder{padding-left:1.75rem}.vuesax-app-is-ltr .vs-input--input.icon-after-input+.vs-input--placeholder{padding-right:1.75rem}.vuesax-app-is-rtl .vs-input--input.hasIcon.icon-after-input{padding-right:.85em}.vuesax-app-is-ltr .vs-input--input.hasIcon.icon-after-input{padding-left:.85em}.vuesax-app-is-rtl .vs-input--input.hasIcon.icon-after-input+.vs-input--placeholder{padding-right:.85em}.vuesax-app-is-ltr .vs-input--input.hasIcon.icon-after-input+.vs-input--placeholder{padding-left:.85em}.vs-input--input:disabled,.vs-input--input:disabled+.vs-input--placeholder{opacity:.5;cursor:default;pointer-events:none}.vs-input-primary .vs-input--input:focus{border:1px solid rgba(var(--vs-primary),1)!important}.vs-input-primary.isFocus .vs-input--label,.vs-input-primary .vs-input--input:focus~.icon-inputx,.vs-input-primary .vs-input--input:focus~.vs-placeholder-label{color:rgba(var(--vs-primary),1)}.span-text-validation-primary{color:rgba(var(--vs-primary),1)!important}.input-icon-validate-primary .vs-input--input,.input-icon-validate-primary .vs-input--input:focus{border:1px solid rgba(var(--vs-primary),1)!important}.input-icon-validate-primary .input-icon-validate{background:rgba(var(--vs-primary),.2);color:rgba(var(--vs-primary),1)}.vs-input-secondary .vs-input--input:focus{border:1px solid rgba(var(--vs-secondary),1)!important}.vs-input-secondary.isFocus .vs-input--label,.vs-input-secondary .vs-input--input:focus~.icon-inputx,.vs-input-secondary .vs-input--input:focus~.vs-placeholder-label{color:rgba(var(--vs-secondary),1)}.span-text-validation-secondary{color:rgba(var(--vs-secondary),1)!important}.input-icon-validate-secondary .vs-input--input,.input-icon-validate-secondary .vs-input--input:focus{border:1px solid rgba(var(--vs-secondary),1)!important}.input-icon-validate-secondary .input-icon-validate{background:rgba(var(--vs-secondary),.2);color:rgba(var(--vs-secondary),1)}.vs-input-danger .vs-input--input:focus{border:1px solid rgba(var(--vs-danger),1)!important}.vs-input-danger.isFocus .vs-input--label,.vs-input-danger .vs-input--input:focus~.icon-inputx,.vs-input-danger .vs-input--input:focus~.vs-placeholder-label{color:rgba(var(--vs-danger),1)}.span-text-validation-danger{color:rgba(var(--vs-danger),1)!important}.input-icon-validate-danger .vs-input--input,.input-icon-validate-danger .vs-input--input:focus{border:1px solid rgba(var(--vs-danger),1)!important}.input-icon-validate-danger .input-icon-validate{background:rgba(var(--vs-danger),.2);color:rgba(var(--vs-danger),1)}.vs-input-success .vs-input--input:focus{border:1px solid rgba(var(--vs-success),1)!important}.vs-input-success.isFocus .vs-input--label,.vs-input-success .vs-input--input:focus~.icon-inputx,.vs-input-success .vs-input--input:focus~.vs-placeholder-label{color:rgba(var(--vs-success),1)}.span-text-validation-success{color:rgba(var(--vs-success),1)!important}.input-icon-validate-success .vs-input--input,.input-icon-validate-success .vs-input--input:focus{border:1px solid rgba(var(--vs-success),1)!important}.input-icon-validate-success .input-icon-validate{background:rgba(var(--vs-success),.2);color:rgba(var(--vs-success),1)}.vs-input-warning .vs-input--input:focus{border:1px solid rgba(var(--vs-warning),1)!important}.vs-input-warning.isFocus .vs-input--label,.vs-input-warning .vs-input--input:focus~.icon-inputx,.vs-input-warning .vs-input--input:focus~.vs-placeholder-label{color:rgba(var(--vs-warning),1)}.span-text-validation-warning{color:rgba(var(--vs-warning),1)!important}.input-icon-validate-warning .vs-input--input,.input-icon-validate-warning .vs-input--input:focus{border:1px solid rgba(var(--vs-warning),1)!important}.input-icon-validate-warning .input-icon-validate{background:rgba(var(--vs-warning),.2);color:rgba(var(--vs-warning),1)}.vs-input-dark .vs-input--input:focus{border:1px solid rgba(var(--vs-dark),1)!important}.vs-input-dark.isFocus .vs-input--label,.vs-input-dark .vs-input--input:focus~.icon-inputx,.vs-input-dark .vs-input--input:focus~.vs-placeholder-label{color:rgba(var(--vs-dark),1)}.span-text-validation-dark{color:rgba(var(--vs-dark),1)!important}.input-icon-validate-dark .vs-input--input,.input-icon-validate-dark .vs-input--input:focus{border:1px solid rgba(var(--vs-dark),1)!important}.input-icon-validate-dark .input-icon-validate{background:rgba(var(--vs-dark),.2);color:rgba(var(--vs-dark),1)}.vs-input-light .vs-input--input:focus{border:1px solid rgba(var(--vs-light),1)!important}.vs-input-light.isFocus .vs-input--label,.vs-input-light .vs-input--input:focus~.icon-inputx,.vs-input-light .vs-input--input:focus~.vs-placeholder-label{color:rgba(var(--vs-light),1)}.span-text-validation-light{color:rgba(var(--vs-light),1)!important}.input-icon-validate-light .vs-input--input,.input-icon-validate-light .vs-input--input:focus{border:1px solid rgba(var(--vs-light),1)!important}.input-icon-validate-light .input-icon-validate{background:rgba(var(--vs-light),.2);color:rgba(var(--vs-light),1)}.vs-input-number{position:relative;display:block;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:5px 10px;background:#f5f5f5;padding:2px;border-radius:5px}.vs-input-number.isChangeValue .vs-input-number--input{-webkit-transform:translateY(-2px);transform:translateY(-2px);opacity:.5}.vs-input-number .vs-input-number--input{-webkit-transition:all .2s ease;transition:all .2s ease;width:40px;min-width:40px;border:0;text-align:center;background:transparent;padding:4px;-moz-appearance:textfield}.vs-input-number .vs-input-number--input[type=number]::-webkit-inner-spin-button,.vs-input-number .vs-input-number--input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.vs-input-number button{min-width:22px;min-height:22px;padding:0;margin:0;display:block;position:relative;border:0;border-radius:5px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-transition:all .3s ease;transition:all .3s ease;color:#fff;-webkit-backface-visibility:hidden;backface-visibility:hidden}.vs-input-number button:disabled{opacity:.5;cursor:default;pointer-events:none}.vs-input-number button i{font-size:.9rem}.vuesax-app-is-rtl .vs-input-number button.vs-input-number--button-plus{-webkit-transform:translate(-10px);transform:translate(-10px)}.vuesax-app-is-ltr .vs-input-number button.vs-input-number--button-plus{-webkit-transform:translate(10px);transform:translate(10px)}.vuesax-app-is-rtl .vs-input-number button.vs-input-number--button-plus:active{-webkit-transform:translate(-10px) scale(.9);transform:translate(-10px) scale(.9)}.vuesax-app-is-ltr .vs-input-number button.vs-input-number--button-plus:active{-webkit-transform:translate(10px) scale(.9);transform:translate(10px) scale(.9)}.vs-input-number button.vs-input-number--button-plus.limit,.vs-input-number button.vs-input-number--button-plus:disabled{opacity:.5;cursor:default;pointer-events:none;background-color:rgba(0,0,0,.5)}.vuesax-app-is-rtl .vs-input-number button.vs-input-number--button-less{-webkit-transform:translate(10px);transform:translate(10px)}.vuesax-app-is-ltr .vs-input-number button.vs-input-number--button-less{-webkit-transform:translate(-10px);transform:translate(-10px)}.vuesax-app-is-rtl .vs-input-number button.vs-input-number--button-less:active{-webkit-transform:translate(10px) scale(.9);transform:translate(10px) scale(.9)}.vuesax-app-is-ltr .vs-input-number button.vs-input-number--button-less:active{-webkit-transform:translate(-10px) scale(.9);transform:translate(-10px) scale(.9)}.vs-input-number button.vs-input-number--button-less.limit,.vs-input-number button.vs-input-number--button-less:disabled{opacity:.5;cursor:default;pointer-events:none;background-color:rgba(0,0,0,.5)}.vs-input-number.vs-input-number-size-medium input{padding:3px;font-size:.8rem}.vs-input-number.vs-input-number-size-medium button{min-width:19px;min-height:19px}.vs-input-number.vs-input-number-size-medium button i{font-size:.8rem}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-medium button.vs-input-number--button-plus{-webkit-transform:translate(-8px);transform:translate(-8px)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-medium button.vs-input-number--button-plus{-webkit-transform:translate(8px);transform:translate(8px)}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-medium button.vs-input-number--button-plus:active{-webkit-transform:translate(-8px) scale(.9);transform:translate(-8px) scale(.9)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-medium button.vs-input-number--button-plus:active{-webkit-transform:translate(8px) scale(.9);transform:translate(8px) scale(.9)}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-medium button.vs-input-number--button-less{-webkit-transform:translate(8px);transform:translate(8px)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-medium button.vs-input-number--button-less{-webkit-transform:translate(-8px);transform:translate(-8px)}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-medium button.vs-input-number--button-less:active{-webkit-transform:translate(8px) scale(.9);transform:translate(8px) scale(.9)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-medium button.vs-input-number--button-less:active{-webkit-transform:translate(-8px) scale(.9);transform:translate(-8px) scale(.9)}.vs-input-number.vs-input-number-size-small .vs-input-number--input{padding:2px;font-size:.7rem}.vs-input-number.vs-input-number-size-small button{min-width:16px;min-height:16px}.vs-input-number.vs-input-number-size-small button i{font-size:.7rem}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-small button.vs-input-number--button-plus{-webkit-transform:translate(-7px);transform:translate(-7px)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-small button.vs-input-number--button-plus{-webkit-transform:translate(7px);transform:translate(7px)}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-small button.vs-input-number--button-plus:active{-webkit-transform:translate(-7px) scale(.9);transform:translate(-7px) scale(.9)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-small button.vs-input-number--button-plus:active{-webkit-transform:translate(7px) scale(.9);transform:translate(7px) scale(.9)}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-small button.vs-input-number--button-less{-webkit-transform:translate(7px);transform:translate(7px)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-small button.vs-input-number--button-less{-webkit-transform:translate(-7px);transform:translate(-7px)}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-small button.vs-input-number--button-less:active{-webkit-transform:translate(7px) scale(.9);transform:translate(7px) scale(.9)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-small button.vs-input-number--button-less:active{-webkit-transform:translate(-7px) scale(.9);transform:translate(-7px) scale(.9)}.vs-input-number.vs-input-number-size-mini .vs-input-number--input{padding:1px;font-size:.6rem}.vs-input-number.vs-input-number-size-mini button{min-width:14px;min-height:14px}.vs-input-number.vs-input-number-size-mini button i{font-size:.6rem}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-mini button.vs-input-number--button-plus{-webkit-transform:translate(-6px);transform:translate(-6px)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-mini button.vs-input-number--button-plus{-webkit-transform:translate(6px);transform:translate(6px)}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-mini button.vs-input-number--button-plus:active{-webkit-transform:translate(-6px) scale(.9);transform:translate(-6px) scale(.9)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-mini button.vs-input-number--button-plus:active{-webkit-transform:translate(6px) scale(.9);transform:translate(6px) scale(.9)}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-mini button.vs-input-number--button-less{-webkit-transform:translate(6px);transform:translate(6px)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-mini button.vs-input-number--button-less{-webkit-transform:translate(-6px);transform:translate(-6px)}.vuesax-app-is-rtl .vs-input-number.vs-input-number-size-mini button.vs-input-number--button-less:active{-webkit-transform:translate(6px) scale(.9);transform:translate(6px) scale(.9)}.vuesax-app-is-ltr .vs-input-number.vs-input-number-size-mini button.vs-input-number--button-less:active{-webkit-transform:translate(-6px) scale(.9);transform:translate(-6px) scale(.9)}.vs-input-number-primary button{background:rgba(var(--vs-primary),1)}.vs-input-number-primary button:hover{-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-primary),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-primary),.4)}.vs-input-number-secondary button{background:rgba(var(--vs-secondary),1)}.vs-input-number-secondary button:hover{-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-secondary),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-secondary),.4)}.vs-input-number-danger button{background:rgba(var(--vs-danger),1)}.vs-input-number-danger button:hover{-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-danger),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-danger),.4)}.vs-input-number-success button{background:rgba(var(--vs-success),1)}.vs-input-number-success button:hover{-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-success),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-success),.4)}.vs-input-number-warning button{background:rgba(var(--vs-warning),1)}.vs-input-number-warning button:hover{-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-warning),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-warning),.4)}.vs-input-number-dark button{background:rgba(var(--vs-dark),1)}.vs-input-number-dark button:hover{-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-dark),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-dark),.4)}.vs-input-number-light button{background:rgba(var(--vs-light),1)}.vs-input-number-light button:hover{-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-light),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-light),.4)}.vs-list{width:100%;position:relative;padding:5px}.vs-list--icon{padding:6px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-list--icon i{font-size:1.2rem!important}.vs-list--header{padding:8px 0;font-weight:700;-webkit-box-shadow:0 7px 7px -5px rgba(0,0,0,.08);box-shadow:0 7px 7px -5px rgba(0,0,0,.08);margin-bottom:5px}.vs-list--header,.vs-list--item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vs-list--item{border-bottom:1px solid rgba(0,0,0,.08);padding:5px}.vs-list--item .vs-list--avatar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.vuesax-app-is-rtl .vs-list--slot{margin-right:auto}.vuesax-app-is-ltr .vs-list--slot{margin-left:auto}.vs-list--title{font-weight:700}.vs-list--subtitle{font-size:.8rem}.vs-header-list-primary{color:rgba(var(--vs-primary),1)}.vs-header-list-secondary{color:rgba(var(--vs-secondary),1)}.vs-header-list-danger{color:rgba(var(--vs-danger),1)}.vs-header-list-success{color:rgba(var(--vs-success),1)}.vs-header-list-warning{color:rgba(var(--vs-warning),1)}.vs-header-list-dark{color:rgba(var(--vs-dark),1)}.vs-header-list-light{color:rgba(var(--vs-light),1)}.vs-con-loading__container{position:relative;overflow:hidden}.vs-con-loading__container .con-vs-loading{position:absolute!important;width:100%;height:100%;min-height:60px;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.beforeRemove{opacity:0}.con-vs-loading{width:100%;height:100%;position:fixed;left:0;top:0;background:hsla(0,0%,100%,.6);z-index:300000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-transition:all .3s ease;transition:all .3s ease}.con-vs-loading.textAfter{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.con-vs-loading .title-loading{position:relative;padding:5px}.con-vs-loading .effect-click{position:absolute;width:0;height:0;background:rgba(0,0,0,.1);border-radius:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.con-vs-loading .vs-loading{position:relative;width:55px;height:55px;display:block;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:3px solid transparent}.con-vs-loading .vs-loading .effects{-webkit-transition:all .3s ease;transition:all .3s ease}.con-vs-loading .vs-loading.material{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.con-vs-loading .vs-loading.border .effect-1,.con-vs-loading .vs-loading.default .effect-1{-webkit-animation:rotate 1s ease infinite;animation:rotate 1s ease infinite}.con-vs-loading .vs-loading.border .effect-1,.con-vs-loading .vs-loading.border .effect-2,.con-vs-loading .vs-loading.default .effect-1,.con-vs-loading .vs-loading.default .effect-2{position:absolute;width:100%;height:100%;border:3px solid transparent;border-left:3px solid rgba(var(--vs-primary),1);border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box}.con-vs-loading .vs-loading.border .effect-2,.con-vs-loading .vs-loading.default .effect-2{-webkit-animation:rotateOpacity 1s ease .1s infinite;animation:rotateOpacity 1s ease .1s infinite}.con-vs-loading .vs-loading.border .effect-3,.con-vs-loading .vs-loading.default .effect-3{position:absolute;width:100%;height:100%;border:3px solid transparent;border-left:3px solid rgba(var(--vs-primary),1);-webkit-animation:rotateOpacity 1s ease .2s infinite;animation:rotateOpacity 1s ease .2s infinite;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box}.con-vs-loading .vs-loading.border{border:1px solid #f0f0f0}.con-vs-loading .vs-loading.border .effect-1,.con-vs-loading .vs-loading.border .effect-2,.con-vs-loading .vs-loading.border .effect-3{border:1px solid transparent;border-left:1px solid rgba(var(--vs-primary),1)}.con-vs-loading .vs-loading.point .effect-1{-webkit-animation:scale 1.2s ease infinite;animation:scale 1.2s ease infinite}.con-vs-loading .vs-loading.point .effect-1,.con-vs-loading .vs-loading.point .effect-2{background:rgba(var(--vs-primary),.4);position:absolute;width:100%;height:100%;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box}.con-vs-loading .vs-loading.point .effect-2{-webkit-animation:scale 1.8s ease infinite;animation:scale 1.8s ease infinite}.con-vs-loading .vs-loading.point .effect-3{background:rgba(var(--vs-primary),.4);position:absolute;width:100%;height:100%;-webkit-animation:scale 3.6s ease-out infinite;animation:scale 3.6s ease-out infinite;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box}.con-vs-loading .vs-loading.radius .effect-1{-webkit-animation:radius 1s ease infinite;animation:radius 1s ease infinite}.con-vs-loading .vs-loading.radius .effect-1,.con-vs-loading .vs-loading.radius .effect-2{position:absolute;width:100%;height:100%;border:3px solid rgba(var(--vs-primary),1);border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box}.con-vs-loading .vs-loading.radius .effect-2{-webkit-animation:radius 2s ease .1s infinite;animation:radius 2s ease .1s infinite}.con-vs-loading .vs-loading.radius .effect-3{-webkit-animation:radius 3s ease .2s infinite;animation:radius 3s ease .2s infinite}.con-vs-loading .vs-loading.corners .effect-1,.con-vs-loading .vs-loading.radius .effect-3{position:absolute;width:100%;height:100%;border:3px solid rgba(var(--vs-primary),1);border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box}.con-vs-loading .vs-loading.corners .effect-1{-webkit-animation:corners 1s ease infinite;animation:corners 1s ease infinite}.con-vs-loading .vs-loading.sound{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.con-vs-loading .vs-loading.sound .effect-1{height:100%;-webkit-animation:sound 1.4s ease infinite alternate;animation:sound 1.4s ease infinite alternate}.con-vs-loading .vs-loading.sound .effect-1,.con-vs-loading .vs-loading.sound .effect-2{position:relative;width:5px;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:rgba(var(--vs-primary),1);margin:0 4px}.con-vs-loading .vs-loading.sound .effect-2{height:60%;-webkit-animation:sound .7s ease infinite alternate;animation:sound .7s ease infinite alternate}.con-vs-loading .vs-loading.sound .effect-3{position:relative;width:5px;height:80%;-webkit-animation:sound 1s ease-out infinite alternate;animation:sound 1s ease-out infinite alternate;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:rgba(var(--vs-primary),1);margin:0 4px}.spinner{-webkit-animation:rotator 1.4s linear infinite;animation:rotator 1.4s linear infinite}.path{stroke-dasharray:187;stroke-dashoffset:0;-webkit-transform-origin:center;transform-origin:center;-webkit-animation:dash 1.4s ease-in-out infinite,colors 5.6s ease-in-out infinite;animation:dash 1.4s ease-in-out infinite,colors 5.6s ease-in-out infinite}.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .3s;transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.effect-click-leave-active{-webkit-transition:all .3s;transition:all .3s}.effect-click-leave-to{opacity:0;width:1000px!important;height:1000px!important}.vs-loading-background-primary{background:rgba(var(--vs-primary),1)}.vs-loading-color-primary .border .effect-1,.vs-loading-color-primary .border .effect-2,.vs-loading-color-primary .border .effect-3,.vs-loading-color-primary .default .effect-1,.vs-loading-color-primary .default .effect-2,.vs-loading-color-primary .default .effect-3{border-left:3px solid rgba(var(--vs-primary),1)!important}.vs-loading-color-primary .border .effect-1,.vs-loading-color-primary .border .effect-2,.vs-loading-color-primary .border .effect-3{border-left:1px solid rgba(var(--vs-primary),1)!important}.vs-loading-color-primary .point .effect-1,.vs-loading-color-primary .point .effect-2,.vs-loading-color-primary .point .effect-3{background:rgba(var(--vs-primary),.4)!important}.vs-loading-color-primary .corners .effect-1,.vs-loading-color-primary .radius .effect-1,.vs-loading-color-primary .radius .effect-2,.vs-loading-color-primary .radius .effect-3{border:3px solid rgba(var(--vs-primary),1)!important}.vs-loading-color-primary .sound .effect-1,.vs-loading-color-primary .sound .effect-2,.vs-loading-color-primary .sound .effect-3{background:rgba(var(--vs-primary),1)!important}.vs-loading-background-secondary{background:rgba(var(--vs-secondary),1)}.vs-loading-color-secondary .border .effect-1,.vs-loading-color-secondary .border .effect-2,.vs-loading-color-secondary .border .effect-3,.vs-loading-color-secondary .default .effect-1,.vs-loading-color-secondary .default .effect-2,.vs-loading-color-secondary .default .effect-3{border-left:3px solid rgba(var(--vs-secondary),1)!important}.vs-loading-color-secondary .border .effect-1,.vs-loading-color-secondary .border .effect-2,.vs-loading-color-secondary .border .effect-3{border-left:1px solid rgba(var(--vs-secondary),1)!important}.vs-loading-color-secondary .point .effect-1,.vs-loading-color-secondary .point .effect-2,.vs-loading-color-secondary .point .effect-3{background:rgba(var(--vs-secondary),.4)!important}.vs-loading-color-secondary .corners .effect-1,.vs-loading-color-secondary .radius .effect-1,.vs-loading-color-secondary .radius .effect-2,.vs-loading-color-secondary .radius .effect-3{border:3px solid rgba(var(--vs-secondary),1)!important}.vs-loading-color-secondary .sound .effect-1,.vs-loading-color-secondary .sound .effect-2,.vs-loading-color-secondary .sound .effect-3{background:rgba(var(--vs-secondary),1)!important}.vs-loading-background-danger{background:rgba(var(--vs-danger),1)}.vs-loading-color-danger .border .effect-1,.vs-loading-color-danger .border .effect-2,.vs-loading-color-danger .border .effect-3,.vs-loading-color-danger .default .effect-1,.vs-loading-color-danger .default .effect-2,.vs-loading-color-danger .default .effect-3{border-left:3px solid rgba(var(--vs-danger),1)!important}.vs-loading-color-danger .border .effect-1,.vs-loading-color-danger .border .effect-2,.vs-loading-color-danger .border .effect-3{border-left:1px solid rgba(var(--vs-danger),1)!important}.vs-loading-color-danger .point .effect-1,.vs-loading-color-danger .point .effect-2,.vs-loading-color-danger .point .effect-3{background:rgba(var(--vs-danger),.4)!important}.vs-loading-color-danger .corners .effect-1,.vs-loading-color-danger .radius .effect-1,.vs-loading-color-danger .radius .effect-2,.vs-loading-color-danger .radius .effect-3{border:3px solid rgba(var(--vs-danger),1)!important}.vs-loading-color-danger .sound .effect-1,.vs-loading-color-danger .sound .effect-2,.vs-loading-color-danger .sound .effect-3{background:rgba(var(--vs-danger),1)!important}.vs-loading-background-success{background:rgba(var(--vs-success),1)}.vs-loading-color-success .border .effect-1,.vs-loading-color-success .border .effect-2,.vs-loading-color-success .border .effect-3,.vs-loading-color-success .default .effect-1,.vs-loading-color-success .default .effect-2,.vs-loading-color-success .default .effect-3{border-left:3px solid rgba(var(--vs-success),1)!important}.vs-loading-color-success .border .effect-1,.vs-loading-color-success .border .effect-2,.vs-loading-color-success .border .effect-3{border-left:1px solid rgba(var(--vs-success),1)!important}.vs-loading-color-success .point .effect-1,.vs-loading-color-success .point .effect-2,.vs-loading-color-success .point .effect-3{background:rgba(var(--vs-success),.4)!important}.vs-loading-color-success .corners .effect-1,.vs-loading-color-success .radius .effect-1,.vs-loading-color-success .radius .effect-2,.vs-loading-color-success .radius .effect-3{border:3px solid rgba(var(--vs-success),1)!important}.vs-loading-color-success .sound .effect-1,.vs-loading-color-success .sound .effect-2,.vs-loading-color-success .sound .effect-3{background:rgba(var(--vs-success),1)!important}.vs-loading-background-warning{background:rgba(var(--vs-warning),1)}.vs-loading-color-warning .border .effect-1,.vs-loading-color-warning .border .effect-2,.vs-loading-color-warning .border .effect-3,.vs-loading-color-warning .default .effect-1,.vs-loading-color-warning .default .effect-2,.vs-loading-color-warning .default .effect-3{border-left:3px solid rgba(var(--vs-warning),1)!important}.vs-loading-color-warning .border .effect-1,.vs-loading-color-warning .border .effect-2,.vs-loading-color-warning .border .effect-3{border-left:1px solid rgba(var(--vs-warning),1)!important}.vs-loading-color-warning .point .effect-1,.vs-loading-color-warning .point .effect-2,.vs-loading-color-warning .point .effect-3{background:rgba(var(--vs-warning),.4)!important}.vs-loading-color-warning .corners .effect-1,.vs-loading-color-warning .radius .effect-1,.vs-loading-color-warning .radius .effect-2,.vs-loading-color-warning .radius .effect-3{border:3px solid rgba(var(--vs-warning),1)!important}.vs-loading-color-warning .sound .effect-1,.vs-loading-color-warning .sound .effect-2,.vs-loading-color-warning .sound .effect-3{background:rgba(var(--vs-warning),1)!important}.vs-loading-background-dark{background:rgba(var(--vs-dark),1)}.vs-loading-color-dark .border .effect-1,.vs-loading-color-dark .border .effect-2,.vs-loading-color-dark .border .effect-3,.vs-loading-color-dark .default .effect-1,.vs-loading-color-dark .default .effect-2,.vs-loading-color-dark .default .effect-3{border-left:3px solid rgba(var(--vs-dark),1)!important}.vs-loading-color-dark .border .effect-1,.vs-loading-color-dark .border .effect-2,.vs-loading-color-dark .border .effect-3{border-left:1px solid rgba(var(--vs-dark),1)!important}.vs-loading-color-dark .point .effect-1,.vs-loading-color-dark .point .effect-2,.vs-loading-color-dark .point .effect-3{background:rgba(var(--vs-dark),.4)!important}.vs-loading-color-dark .corners .effect-1,.vs-loading-color-dark .radius .effect-1,.vs-loading-color-dark .radius .effect-2,.vs-loading-color-dark .radius .effect-3{border:3px solid rgba(var(--vs-dark),1)!important}.vs-loading-color-dark .sound .effect-1,.vs-loading-color-dark .sound .effect-2,.vs-loading-color-dark .sound .effect-3{background:rgba(var(--vs-dark),1)!important}.vs-loading-background-light{background:rgba(var(--vs-light),1)}.vs-loading-color-light .border .effect-1,.vs-loading-color-light .border .effect-2,.vs-loading-color-light .border .effect-3,.vs-loading-color-light .default .effect-1,.vs-loading-color-light .default .effect-2,.vs-loading-color-light .default .effect-3{border-left:3px solid rgba(var(--vs-light),1)!important}.vs-loading-color-light .border .effect-1,.vs-loading-color-light .border .effect-2,.vs-loading-color-light .border .effect-3{border-left:1px solid rgba(var(--vs-light),1)!important}.vs-loading-color-light .point .effect-1,.vs-loading-color-light .point .effect-2,.vs-loading-color-light .point .effect-3{background:rgba(var(--vs-light),.4)!important}.vs-loading-color-light .corners .effect-1,.vs-loading-color-light .radius .effect-1,.vs-loading-color-light .radius .effect-2,.vs-loading-color-light .radius .effect-3{border:3px solid rgba(var(--vs-light),1)!important}.vs-loading-color-light .sound .effect-1,.vs-loading-color-light .sound .effect-2,.vs-loading-color-light .sound .effect-3{background:rgba(var(--vs-light),1)!important}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes rotateOpacity{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);opacity:.1}to{-webkit-transform:rotate(1turn);transform:rotate(1turn);opacity:1}}@keyframes rotateOpacity{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);opacity:.1}to{-webkit-transform:rotate(1turn);transform:rotate(1turn);opacity:1}}@-webkit-keyframes scale{0%{-webkit-transform:scale(.1);transform:scale(.1)}60%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.1);transform:scale(.1)}}@keyframes scale{0%{-webkit-transform:scale(.1);transform:scale(.1)}60%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.1);transform:scale(.1)}}@-webkit-keyframes radius{0%{-webkit-transform:rotate(0deg) scale(.1);transform:rotate(0deg) scale(.1);opacity:1}60%{-webkit-transform:rotate(160deg) scale(1);transform:rotate(160deg) scale(1);opacity:0}to{-webkit-transform:rotate(0deg) scale(.1);transform:rotate(0deg) scale(.1);opacity:1}}@keyframes radius{0%{-webkit-transform:rotate(0deg) scale(.1);transform:rotate(0deg) scale(.1);opacity:1}60%{-webkit-transform:rotate(160deg) scale(1);transform:rotate(160deg) scale(1);opacity:0}to{-webkit-transform:rotate(0deg) scale(.1);transform:rotate(0deg) scale(.1);opacity:1}}@-webkit-keyframes corners{0%{border-radius:50%;-webkit-transform:rotate(0deg);transform:rotate(0deg)}25%{border-radius:50% 50% 50% 20%}50%{border-radius:50% 50% 20% 30%}75%{border-radius:50% 20% 30% 30%}to{border-radius:50%;-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}}@keyframes corners{0%{border-radius:50%;-webkit-transform:rotate(0deg);transform:rotate(0deg)}25%{border-radius:50% 50% 50% 20%}50%{border-radius:50% 50% 20% 30%}75%{border-radius:50% 20% 30% 30%}to{border-radius:50%;-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}}@-webkit-keyframes sound{0%{-webkit-transform:scaleY(0);transform:scaleY(0);opacity:.7}40%{-webkit-transform:scaleY(1.2);transform:scaleY(1.2);opacity:.5}70%{-webkit-transform:scaleY(.2);transform:scaleY(.2);opacity:.8}50%{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1}}@keyframes sound{0%{-webkit-transform:scaleY(0);transform:scaleY(0);opacity:.7}40%{-webkit-transform:scaleY(1.2);transform:scaleY(1.2);opacity:.5}70%{-webkit-transform:scaleY(.2);transform:scaleY(.2);opacity:.8}50%{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1}}@-webkit-keyframes dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;-webkit-transform:rotate(135deg);transform:rotate(135deg)}to{stroke-dashoffset:187;-webkit-transform:rotate(450deg);transform:rotate(450deg)}}@keyframes dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;-webkit-transform:rotate(135deg);transform:rotate(135deg)}to{stroke-dashoffset:187;-webkit-transform:rotate(450deg);transform:rotate(450deg)}}@-webkit-keyframes colors{0%{stroke:#4285f4}25%{stroke:#de3e35}50%{stroke:#f7c223}75%{stroke:#1b9a59}to{stroke:#4285f4}}@keyframes colors{0%{stroke:#4285f4}25%{stroke:#de3e35}50%{stroke:#f7c223}75%{stroke:#1b9a59}to{stroke:#4285f4}}@-webkit-keyframes rotator{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(270deg);transform:rotate(270deg)}}@keyframes rotator{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(270deg);transform:rotate(270deg)}}.vs-navbar{clear:both;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-shadow:0 4px 20px 0 rgba(0,0,0,.05);box-shadow:0 4px 20px 0 rgba(0,0,0,.05);width:100%;z-index:10000;position:relative}.vs-navbar .vs-button{margin:0}.vs-navbar--btn-responsive{display:none;width:40px;height:40px;position:relative;border:0;background:transparent;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 0;margin-left:5px;cursor:pointer;-webkit-transition:all .25s ease;transition:all .25s ease;overflow:hidden}.vs-navbar--btn-responsive:hover{background:rgba(0,0,0,.08);padding:12px 0}.vs-navbar--btn-responsive.active-menu{padding:10px 0!important}.vs-navbar--btn-responsive.active-menu .line--1{-webkit-transform:rotate(45deg) translate(5px,5px);transform:rotate(45deg) translate(5px,5px)}.vs-navbar--btn-responsive.active-menu .line--2{opacity:0;-webkit-transform:translate(-10px);transform:translate(-10px)}.vs-navbar--btn-responsive.active-menu .line--3{-webkit-transform:rotate(-45deg) translate(5px,-5px);transform:rotate(-45deg) translate(5px,-5px)}.vs-navbar--btn-responsive .btn-responsive-line{width:20px;height:2px;background:rgba(0,0,0,.6);position:relative;display:block;-webkit-transition:all .2s ease;transition:all .2s ease}.vs-con-items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-navbar--item{display:block;position:relative;-webkit-transition:all .25s ease;transition:all .25s ease;z-index:1000}.vs-navbar--item.is-active-item .vs-navbar-after{width:100%}.vs-navbar--item:hover .vs-navbar-submenu{opacity:1;visibility:visible}.vs-navbar--item a{font-size:.8rem;padding:10px 12px;display:block;color:inherit;text-decoration:none!important;position:relative;z-index:100}.vs-navbar--item a:hover~.vs-navbar-after{width:100%}.vs-navbar--item .vs-navbar-after{width:0;height:2px;left:50%;bottom:0;-webkit-transform:translate(-50%);transform:translate(-50%);background:31,116,255;position:absolute;-webkit-transition:all .25s ease;transition:all .25s ease;z-index:10}.vs-navbar--title{font-size:1.1rem;padding:0;padding-left:10px;padding-right:10px;color:inherit}.vs-navbar--items{position:relative}.vs-navbar-submenu{position:absolute;visibility:hidden;opacity:0;background:#fff;z-index:1000;padding-left:0;width:200px}.vs-navbar-submenu .vs-navbar-after{display:none}.vs-navbar-submenu .vs-navbar--items a{text-align:left}.vs-navbar-flat{-webkit-box-shadow:none;box-shadow:none}.vs-navbar-flat .vs-navbar-after{display:none}.vs-navbar-fund{-webkit-box-shadow:none;box-shadow:none}.vs-navbar-fund .vs-navbar-after{width:100%;height:0%;opacity:.1}.vs-navbar-fund .vs-navbar--item.is-active-item .vs-navbar-after,.vs-navbar-fund a:hover~.vs-navbar-after{height:100%}.vs-navbar-border{-webkit-box-shadow:none;box-shadow:none;border:1px solid rgba(0,0,0,.05)}.vs-navbar-border .vs-navbar--item{border-left:1px solid rgba(0,0,0,.05)}.vs-navbar-border .vs-navbar-after{height:1px;bottom:-1px}.vs-navbar-gradient .vs-navbar--item{margin:4px 3px}.vs-navbar-gradient .vs-navbar--item a{padding:6px 12px}.vs-navbar-gradient .vs-navbar-after{display:none}.vs-navbar-shadow{-webkit-box-shadow:none;box-shadow:none}.vs-navbar-shadow .vs-navbar--item{background:rgba(0,0,0,.05)}.vs-navbar-shadow .vs-navbar--item.is-active-item{background:#fff;border-radius:4px;-webkit-box-shadow:0 5px 20px 0 rgba(0,0,0,.07);box-shadow:0 5px 20px 0 rgba(0,0,0,.07)}.vs-navbar-shadow .vs-navbar-after{display:none}.vs-navbar-color-color{background:31,116,255}.vs-navbar-submenu .vs-navbar-item-primary.is-active-item,.vs-navbar-submenu .vs-navbar-item-primary:hover,.vs-navbar .vs-navbar-item-primary.is-active-item,.vs-navbar .vs-navbar-item-primary:hover>a{color:31,116,255}.vs-navbar-gradient .vs-navbar-item-primary{border-radius:4px}.vs-navbar-gradient .vs-navbar-item-primary.is-active-item{border-radius:6px;color:#fff;background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-primary),1),rgba(var(--vs-primary),.5));text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-navbar-color-color{background:121,49,177}.vs-navbar-submenu .vs-navbar-item-secondary.is-active-item,.vs-navbar-submenu .vs-navbar-item-secondary:hover,.vs-navbar .vs-navbar-item-secondary.is-active-item,.vs-navbar .vs-navbar-item-secondary:hover>a{color:121,49,177}.vs-navbar-gradient .vs-navbar-item-secondary{border-radius:4px}.vs-navbar-gradient .vs-navbar-item-secondary.is-active-item{border-radius:6px;color:#fff;background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-secondary),1),rgba(var(--vs-secondary),.5));text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-navbar-color-color{background:255,71,87}.vs-navbar-submenu .vs-navbar-item-danger.is-active-item,.vs-navbar-submenu .vs-navbar-item-danger:hover,.vs-navbar .vs-navbar-item-danger.is-active-item,.vs-navbar .vs-navbar-item-danger:hover>a{color:255,71,87}.vs-navbar-gradient .vs-navbar-item-danger{border-radius:4px}.vs-navbar-gradient .vs-navbar-item-danger.is-active-item{border-radius:6px;color:#fff;background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-danger),1),rgba(var(--vs-danger),.5));text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-navbar-color-color{background:70,201,58}.vs-navbar-submenu .vs-navbar-item-success.is-active-item,.vs-navbar-submenu .vs-navbar-item-success:hover,.vs-navbar .vs-navbar-item-success.is-active-item,.vs-navbar .vs-navbar-item-success:hover>a{color:70,201,58}.vs-navbar-gradient .vs-navbar-item-success{border-radius:4px}.vs-navbar-gradient .vs-navbar-item-success.is-active-item{border-radius:6px;color:#fff;background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-success),1),rgba(var(--vs-success),.5));text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-navbar-color-color{background:255,186,0}.vs-navbar-submenu .vs-navbar-item-warning.is-active-item,.vs-navbar-submenu .vs-navbar-item-warning:hover,.vs-navbar .vs-navbar-item-warning.is-active-item,.vs-navbar .vs-navbar-item-warning:hover>a{color:255,186,0}.vs-navbar-gradient .vs-navbar-item-warning{border-radius:4px}.vs-navbar-gradient .vs-navbar-item-warning.is-active-item{border-radius:6px;color:#fff;background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-warning),1),rgba(var(--vs-warning),.5));text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-navbar-color-color{background:30,30,30}.vs-navbar-submenu .vs-navbar-item-dark.is-active-item,.vs-navbar-submenu .vs-navbar-item-dark:hover,.vs-navbar .vs-navbar-item-dark.is-active-item,.vs-navbar .vs-navbar-item-dark:hover>a{color:30,30,30}.vs-navbar-gradient .vs-navbar-item-dark{border-radius:4px}.vs-navbar-gradient .vs-navbar-item-dark.is-active-item{border-radius:6px;color:#fff;background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-dark),1),rgba(var(--vs-dark),.5));text-shadow:1px 2px 4px rgba(0,0,0,.3)}.vs-navbar-color-color{background:245,245,245}.vs-navbar-submenu .vs-navbar-item-light.is-active-item,.vs-navbar-submenu .vs-navbar-item-light:hover,.vs-navbar .vs-navbar-item-light.is-active-item,.vs-navbar .vs-navbar-item-light:hover>a{color:245,245,245}.vs-navbar-gradient .vs-navbar-item-light{border-radius:4px}.vs-navbar-gradient .vs-navbar-item-light.is-active-item{border-radius:6px;color:#fff;background:#640064;background-image:linear-gradient(30deg,rgba(var(--vs-light),1),rgba(var(--vs-light),.5));text-shadow:1px 2px 4px rgba(0,0,0,.3)}.collapse{display:block}.collapse .vs-navbar--btn-responsive,.collapse .vs-navbar--header{display:-webkit-box;display:-ms-flexbox;display:flex}.collapse .vs-navbar--header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.collapse .vs-con-items{display:none;width:100%}.collapse .vs-con-items.activeMenuResponsive{display:block}.collapse .vs-con-items .vs-spacer{display:none}.collapse .vs-navbar--item{width:100%}@media screen and (max-width:800px){.vs-navbar--btn-responsive{display:-webkit-box;display:-ms-flexbox;display:flex}.vs-navbar{display:block}.vs-navbar--header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.vs-con-items{display:none;width:100%}.vs-con-items.activeMenuResponsive{display:block}.vs-con-items .vs-spacer{display:none}.vs-navbar--item{width:100%}}.vs-notifications{position:fixed;z-index:200000;padding:5px;margin-left:5px;margin-right:5px;border-radius:10px;overflow:hidden;-webkit-transition:all .3s ease;transition:all .3s ease;cursor:default;max-width:350px;min-width:200px}.vs-notifications:active{opacity:.8}.vs-notifications .content-noti{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%}.vs-notifications .content-noti .con-text-noti{width:100%}.vs-notifications .content-noti .vs-icon-noti{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;z-index:100;display:block;padding:5px;background:hsla(0,0%,100%,.1);border-radius:6px;font-size:20px;-webkit-animation:openicon .4s ease;animation:openicon .4s ease}.vs-notifications h3,.vs-notifications p{z-index:100;position:relative;-webkit-animation:open .4s ease;animation:open .4s ease}.vs-notifications h3{font-size:16px;padding:5px;padding-bottom:0}.vs-notifications p{font-size:14px;padding:5px;padding-right:10px}.vs-notifications.vs-noti-active h3,.vs-notifications.vs-noti-active p{opacity:1}.vs-notifications .filling{display:block;position:absolute;-webkit-transition:all .45s ease;transition:all .45s ease;z-index:1;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vs-noti-primary .filling{background:rgba(var(--vs-primary),1);width:10px;height:10px;border-radius:50%}.vs-noti-secondary .filling{background:rgba(var(--vs-secondary),1);width:10px;height:10px;border-radius:50%}.vs-noti-danger .filling{background:rgba(var(--vs-danger),1);width:10px;height:10px;border-radius:50%}.vs-noti-success .filling{background:rgba(var(--vs-success),1);width:10px;height:10px;border-radius:50%}.vs-noti-warning .filling{background:rgba(var(--vs-warning),1);width:10px;height:10px;border-radius:50%}.vs-noti-dark .filling{background:rgba(var(--vs-dark),1);width:10px;height:10px;border-radius:50%}.vs-noti-light .filling{background:rgba(var(--vs-light),1);width:10px;height:10px;border-radius:50%}@-webkit-keyframes open{0%{opacity:0;-webkit-transform:translate(-30px);transform:translate(-30px)}to{-webkit-transform:translate(0);transform:translate(0);opacity:1}}@keyframes open{0%{opacity:0;-webkit-transform:translate(-30px);transform:translate(-30px)}to{-webkit-transform:translate(0);transform:translate(0);opacity:1}}@-webkit-keyframes openicon{0%{opacity:0;-webkit-transform:scale(.4);transform:scale(.4)}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes openicon{0%{opacity:0;-webkit-transform:scale(.4);transform:scale(.4)}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.con-vs-pagination{--color-pagination:#f0f0f0;--color-pagination-alpha:#f0f0f0}.vs-pagination--input-goto{color:inherit;padding:8px;border-radius:5px;border:0 solid rgba(0,0,0,.2);background:#f0f0f0}.vuesax-app-is-rtl .vs-pagination--input-goto{margin-right:5px}.vuesax-app-is-ltr .vs-pagination--input-goto{margin-left:5px}.vs-pagination--nav,.vs-pagination--ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-pagination--ul{padding:0;background:#f0f0f0;border-radius:20px;padding-left:5px;padding-right:5px}.vs-pagination--array{display:inline-block;padding:0}.vs-pagination--array li{display:inline-block}.vs-pagination--mb{margin-bottom:5px}.vs-pagination--bold{font-weight:700}.vs-pagination--li{cursor:pointer;width:35px;height:35px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;-webkit-transition:all .25s ease;transition:all .25s ease;position:relative;-webkit-backface-visibility:visible;backface-visibility:visible;margin:0 2px;font-weight:700;color:rgba(0,0,0,.5)}.vs-pagination--li span{z-index:100}.vs-pagination--li .effect{z-index:50;content:\\\"\\\";position:absolute;width:100%;height:100%;background:var(--vs-color-pagination);top:0;display:block;border-radius:8px;-webkit-transform:scale(.5);transform:scale(.5);opacity:0;-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-box-shadow:0 0 20px 0 transparent;box-shadow:0 0 20px 0 transparent}.vuesax-app-is-rtl .vs-pagination--li .effect{right:0}.vuesax-app-is-ltr .vs-pagination--li .effect{left:0}.vs-pagination--li.is-current{-webkit-transform:scale(1.05);transform:scale(1.05);color:#fff;font-weight:700;cursor:default;background:var(--vs-color-pagination)}.vs-pagination--li.is-current .effect{opacity:1;-webkit-transform:scale(1)!important;transform:scale(1)!important;-webkit-box-shadow:0 0 20px 0 var(--vs-color-pagination-alpha);box-shadow:0 0 20px 0 var(--vs-color-pagination-alpha)}.vs-pagination--li:hover:not(.is-current){color:var(--vs-color-pagination)}.vs-pagination--buttons{width:35px;height:35px;border-radius:50%;border:0;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;color:rgba(0,0,0,.6);-webkit-transition:all .2s ease;transition:all .2s ease;background:#f0f0f0;margin:0;z-index:200}.vuesax-app-is-rtl .vs-pagination--buttons.vs-pagination--button-prev{margin-left:5px}.vuesax-app-is-ltr .vs-pagination--buttons.vs-pagination--button-prev,.vuesax-app-is-rtl .vs-pagination--buttons.vs-pagination--button-next{margin-right:5px}.vuesax-app-is-ltr .vs-pagination--buttons.vs-pagination--button-next{margin-left:5px}.vs-pagination--buttons.disabled,.vs-pagination--buttons:disabled{cursor:default;pointer-events:none;opacity:.5}.vs-pagination--buttons i{font-size:1.2rem}.vs-pagination--buttons:hover{background:var(--vs-color-pagination);color:#fff}.vs-pagination-primary li:hover:not(.is-current){color:rgba(var(--vs-primary),1)!important}.vs-pagination-primary .effect{-webkit-box-shadow:0 0 20px 0 rgba(var(--vs-primary),.5);box-shadow:0 0 20px 0 rgba(var(--vs-primary),.5)}.vs-pagination-primary .effect,.vs-pagination-primary .vs-pagination--buttons:hover{background:rgba(var(--vs-primary),1)!important}.vs-pagination-secondary li:hover:not(.is-current){color:rgba(var(--vs-secondary),1)!important}.vs-pagination-secondary .effect{-webkit-box-shadow:0 0 20px 0 rgba(var(--vs-secondary),.5);box-shadow:0 0 20px 0 rgba(var(--vs-secondary),.5)}.vs-pagination-secondary .effect,.vs-pagination-secondary .vs-pagination--buttons:hover{background:rgba(var(--vs-secondary),1)!important}.vs-pagination-danger li:hover:not(.is-current){color:rgba(var(--vs-danger),1)!important}.vs-pagination-danger .effect{-webkit-box-shadow:0 0 20px 0 rgba(var(--vs-danger),.5);box-shadow:0 0 20px 0 rgba(var(--vs-danger),.5)}.vs-pagination-danger .effect,.vs-pagination-danger .vs-pagination--buttons:hover{background:rgba(var(--vs-danger),1)!important}.vs-pagination-success li:hover:not(.is-current){color:rgba(var(--vs-success),1)!important}.vs-pagination-success .effect{-webkit-box-shadow:0 0 20px 0 rgba(var(--vs-success),.5);box-shadow:0 0 20px 0 rgba(var(--vs-success),.5)}.vs-pagination-success .effect,.vs-pagination-success .vs-pagination--buttons:hover{background:rgba(var(--vs-success),1)!important}.vs-pagination-warning li:hover:not(.is-current){color:rgba(var(--vs-warning),1)!important}.vs-pagination-warning .effect{-webkit-box-shadow:0 0 20px 0 rgba(var(--vs-warning),.5);box-shadow:0 0 20px 0 rgba(var(--vs-warning),.5)}.vs-pagination-warning .effect,.vs-pagination-warning .vs-pagination--buttons:hover{background:rgba(var(--vs-warning),1)!important}.vs-pagination-dark li:hover:not(.is-current){color:rgba(var(--vs-dark),1)!important}.vs-pagination-dark .effect{-webkit-box-shadow:0 0 20px 0 rgba(var(--vs-dark),.5);box-shadow:0 0 20px 0 rgba(var(--vs-dark),.5)}.vs-pagination-dark .effect,.vs-pagination-dark .vs-pagination--buttons:hover{background:rgba(var(--vs-dark),1)!important}.vs-pagination-light li:hover:not(.is-current){color:rgba(var(--vs-light),1)!important}.vs-pagination-light .effect{-webkit-box-shadow:0 0 20px 0 rgba(var(--vs-light),.5);box-shadow:0 0 20px 0 rgba(var(--vs-light),.5)}.vs-pagination-light .effect,.vs-pagination-light .vs-pagination--buttons:hover{background:rgba(var(--vs-light),1)!important}.vs-description-primary{color:rgba(var(--vs-primary),1)!important}.vs-description-secondary{color:rgba(var(--vs-secondary),1)!important}.vs-description-danger{color:rgba(var(--vs-danger),1)!important}.vs-description-success{color:rgba(var(--vs-success),1)!important}.vs-description-warning{color:rgba(var(--vs-warning),1)!important}.vs-description-dark{color:rgba(var(--vs-dark),1)!important}.vs-description-light{color:rgba(var(--vs-light),1)!important}.popup-t-enter,.popup-t-leave-to{opacity:0!important}.popup-t-enter .vs-popup,.popup-t-leave-to .vs-popup{-webkit-transform:scale(.9)!important;transform:scale(.9)!important}.popup-t-enter .vs-popup-cancel,.popup-t-leave-to .vs-popup-cancel{border-radius:50%!important}.vuesax-app-is-rtl .popup-t-enter .vs-popup-cancel,.vuesax-app-is-rtl .popup-t-leave-to .vs-popup-cancel{-webkit-transform:translate(-8px,-8px) scale(.5)!important;transform:translate(-8px,-8px) scale(.5)!important}.vuesax-app-is-ltr .popup-t-enter .vs-popup-cancel,.vuesax-app-is-ltr .popup-t-leave-to .vs-popup-cancel{-webkit-transform:translate(8px,-8px) scale(.5)!important;transform:translate(8px,-8px) scale(.5)!important}.popup-t-enter .vs-popup-text,.popup-t-leave-to .vs-popup-text{opacity:0}.vuesax-app-is-rtl .popup-t-enter .vs-popup-text,.vuesax-app-is-rtl .popup-t-leave-to .vs-popup-text{-webkit-transform:translate(15px)!important;transform:translate(15px)!important}.vuesax-app-is-ltr .popup-t-enter .vs-popup-text,.vuesax-app-is-ltr .popup-t-leave-to .vs-popup-text{-webkit-transform:translate(-15px)!important;transform:translate(-15px)!important}.popup-t-enter header h3,.popup-t-leave-to header h3{opacity:0}.vuesax-app-is-rtl .popup-t-enter header h3,.vuesax-app-is-rtl .popup-t-leave-to header h3{-webkit-transform:translate(50px)!important;transform:translate(50px)!important}.vuesax-app-is-ltr .popup-t-enter header h3,.vuesax-app-is-ltr .popup-t-leave-to header h3{-webkit-transform:translate(-50px)!important;transform:translate(-50px)!important}.con-vs-popup{-webkit-transition:all .2s;transition:all .2s;width:100%;height:100%;position:fixed;top:0;z-index:20000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:1}.vuesax-app-is-rtl .con-vs-popup{right:0}.vuesax-app-is-ltr .con-vs-popup{left:0}.con-vs-popup.fullscreen .vs-popup{width:100%;height:100%}.con-vs-popup .vs-popup{-webkit-transition:all .2s;transition:all .2s;z-index:100;width:600px;margin:10px;max-width:calc(100% - 30px);max-height:calc(100% - 30px);border-radius:6px;-webkit-box-shadow:0 5px 20px 0 rgba(0,0,0,.1);box-shadow:0 5px 20px 0 rgba(0,0,0,.1);background:#fff;-webkit-animation:rebound .3s;animation:rebound .3s}.vs-popup--header{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:rgba(0,0,0,.05);border-radius:5px 5px;position:relative}.vs-popup--content{padding:13px;font-size:.9em;-webkit-transition:all .23s ease .1s;transition:all .23s ease .1s;overflow:auto;max-height:calc(100vh - 100px);margin-top:5px;margin-bottom:5px;width:calc(100% - 5px)}.vuesax-app-is-rtl .vs-popup--content{margin-left:5px}.vuesax-app-is-ltr .vs-popup--content{margin-right:5px}.vs-popup--close{-webkit-transition:all .23s ease .1s;transition:all .23s ease .1s;position:relative;padding:8px;cursor:pointer;-webkit-box-shadow:0 5px 20px 0 rgba(0,0,0,.1);box-shadow:0 5px 20px 0 rgba(0,0,0,.1);border-radius:5px;background:#fff;font-size:1.25em;color:rgba(0,0,0,.6)}.vuesax-app-is-rtl .vs-popup--close{-webkit-transform:translate(-8px,-8px);transform:translate(-8px,-8px)}.vuesax-app-is-ltr .vs-popup--close{-webkit-transform:translate(8px,-8px);transform:translate(8px,-8px)}.vs-popup--close:hover{-webkit-box-shadow:0 0 0 0 rgba(0,0,0,.1);box-shadow:0 0 0 0 rgba(0,0,0,.1)}.vuesax-app-is-rtl .vs-popup--close:hover{-webkit-transform:translate(-5px,-5px);transform:translate(-5px,-5px)}.vuesax-app-is-ltr .vs-popup--close:hover{-webkit-transform:translate(5px,-5px);transform:translate(5px,-5px)}.vs-popup--title{width:100%;position:relative;overflow:hidden;border-radius:5px 5px 0 0}.vs-popup--title h3{-webkit-transition:all .23s ease .1s;transition:all .23s ease .1s;padding:8px;padding-left:12px;font-size:1.2rem}.vs-popup--background{width:100%;background:rgba(0,0,0,.4);position:absolute;top:0;height:100%;z-index:10;-webkit-transition:all .25s ease;transition:all .25s ease;opacity:1}.vuesax-app-is-rtl .vs-popup--background{right:0}.vuesax-app-is-ltr .vs-popup--background{left:0}.vs-popup-primary header .after{background:rgba(var(--vs-primary),1)}.vs-popup-secondary header .after{background:rgba(var(--vs-secondary),1)}.vs-popup-danger header .after{background:rgba(var(--vs-danger),1)}.vs-popup-success header .after{background:rgba(var(--vs-success),1)}.vs-popup-warning header .after{background:rgba(var(--vs-warning),1)}.vs-popup-dark header .after{background:rgba(var(--vs-dark),1)}.vs-popup-light header .after{background:rgba(var(--vs-light),1)}@-webkit-keyframes rebound{0%{-webkit-transform:scale(.9);transform:scale(.9)}50%{-webkit-transform:scale(1.08);transform:scale(1.08)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes rebound{0%{-webkit-transform:scale(.9);transform:scale(.9)}50%{-webkit-transform:scale(1.08);transform:scale(1.08)}to{-webkit-transform:scale(1);transform:scale(1)}}.vs-progress--indeterminate{position:absolute;width:0;height:100%;left:-100%;top:0;border-radius:2px;-webkit-animation:indeterminate 1.2s ease infinite;animation:indeterminate 1.2s ease infinite;border-radius:20px}.vs-progress--background{width:100%;border-radius:18px;background-color:rgba(0,0,0,.06);z-index:50;position:relative;display:inline-block;overflow:hidden}.vs-progress--foreground{z-index:100;height:100%;border-radius:18px;-webkit-transition:all .5s ease;transition:all .5s ease}.vs-progress-primary{background:rgba(var(--vs-primary),.1)}.vs-progress-primary .vs-progress--foreground,.vs-progress-primary .vs-progress--indeterminate{background:rgba(var(--vs-primary),1)}.vs-progress-secondary{background:rgba(var(--vs-secondary),.1)}.vs-progress-secondary .vs-progress--foreground,.vs-progress-secondary .vs-progress--indeterminate{background:rgba(var(--vs-secondary),1)}.vs-progress-danger{background:rgba(var(--vs-danger),.1)}.vs-progress-danger .vs-progress--foreground,.vs-progress-danger .vs-progress--indeterminate{background:rgba(var(--vs-danger),1)}.vs-progress-success{background:rgba(var(--vs-success),.1)}.vs-progress-success .vs-progress--foreground,.vs-progress-success .vs-progress--indeterminate{background:rgba(var(--vs-success),1)}.vs-progress-warning{background:rgba(var(--vs-warning),.1)}.vs-progress-warning .vs-progress--foreground,.vs-progress-warning .vs-progress--indeterminate{background:rgba(var(--vs-warning),1)}.vs-progress-dark{background:rgba(var(--vs-dark),.1)}.vs-progress-dark .vs-progress--foreground,.vs-progress-dark .vs-progress--indeterminate{background:rgba(var(--vs-dark),1)}.vs-progress-light{background:rgba(var(--vs-light),.1)}.vs-progress-light .vs-progress--foreground,.vs-progress-light .vs-progress--indeterminate{background:rgba(var(--vs-light),1)}@-webkit-keyframes indeterminate{0%{width:30%;left:-40%}60%{left:100%;width:100%}to{left:100%;width:0}}@keyframes indeterminate{0%{width:30%;left:-40%}60%{left:100%;width:100%}to{left:100%;width:0}}.con-vs-radio{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.con-vs-radio:hover .vs-radio--borde{border:2px solid #a0a0a0}.vs-radio--label{cursor:pointer}.vuesax-app-is-rtl .vs-radio--label{margin-right:5px}.vuesax-app-is-ltr .vs-radio--label{margin-left:5px}.vs-radio{width:18px;height:18px;position:relative;display:block;border-radius:50%;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.vs-radio--borde{border-radius:50%;background:transparent;border:2px solid #c8c8c8}.vs-radio--borde,.vs-radio--circle{width:100%;height:100%;position:absolute;left:0;-webkit-transition:all .25s ease;transition:all .25s ease;top:0}.vs-radio--circle{-webkit-transform:scale(.1);transform:scale(.1);opacity:0;border-radius:50%}.vs-radio--input{position:absolute;left:0;opacity:0;width:20px}.vs-radio--input:checked+.vs-radio{cursor:default}.vs-radio--input:checked+.vs-radio .vs-radio--circle{-webkit-transform:scale(1);transform:scale(1);opacity:1}.vs-radio--input:checked+.vs-radio .vs-radio--borde{opacity:0;-webkit-transform:scale(.3);transform:scale(.3)}.vs-radio--input:active+.vs-radio .vs-radio--borde{-webkit-transform:scale(1.1);transform:scale(1.1)}.vs-radio--input:disabled+.vs-radio,.vs-radio--input:disabled+.vs-radio+.vs-radio--label{pointer-events:none;cursor:default}.vs-radio--input:disabled+.vs-radio{opacity:.4}.vs-radio--input:disabled+.vs-radio .vs-radio--circle{pointer-events:none}.vs-radio--input:disabled+.vs-radio .vs-radio--borde{border:2px solid #b4b4b4;background:#d2d2d2;pointer-events:none}.vs-radio-primary .vs-radio--circle{background:rgba(var(--vs-primary),1);-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-primary),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-primary),.4)}.vs-radio-secondary .vs-radio--circle{background:rgba(var(--vs-secondary),1);-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-secondary),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-secondary),.4)}.vs-radio-danger .vs-radio--circle{background:rgba(var(--vs-danger),1);-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-danger),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-danger),.4)}.vs-radio-success .vs-radio--circle{background:rgba(var(--vs-success),1);-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-success),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-success),.4)}.vs-radio-warning .vs-radio--circle{background:rgba(var(--vs-warning),1);-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-warning),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-warning),.4)}.vs-radio-dark .vs-radio--circle{background:rgba(var(--vs-dark),1);-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-dark),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-dark),.4)}.vs-radio-light .vs-radio--circle{background:rgba(var(--vs-light),1);-webkit-box-shadow:0 3px 12px 0 rgba(var(--vs-light),.4);box-shadow:0 3px 12px 0 rgba(var(--vs-light),.4)}.fadeselect-enter-active{-webkit-transition:opacity .2s,-webkit-transform .2s;transition:opacity .2s,-webkit-transform .2s;transition:transform .2s,opacity .2s;transition:transform .2s,opacity .2s,-webkit-transform .2s}.fadeselect-leave-active{-webkit-transition:opacity .15s,-webkit-transform .15s;transition:opacity .15s,-webkit-transform .15s;transition:transform .15s,opacity .15s;transition:transform .15s,opacity .15s,-webkit-transform .15s}.fadeselect-enter,.fadeselect-leave-to{opacity:0;-webkit-transform:translate(0) scale(.95);transform:translate(0) scale(.95);-webkit-box-shadow:0 10px 0 -5px transparent;box-shadow:0 10px 0 -5px transparent}.con-select,.input-select-con{position:relative}.con-select{width:200px;clear:both}.con-select.activeOptions:not(.autocompletex) .input-select{opacity:0;-webkit-transform:scale(1.1);transform:scale(1.1)}.vuesax-app-is-ltr .con-select.activeOptions .vs-select--icon,.vuesax-app-is-rtl .con-select.activeOptions .vs-select--icon{-webkit-transform:translateY(-50%) rotate(-180deg);transform:translateY(-50%) rotate(-180deg)}.vs-select--icon{position:absolute;font-size:1.0625em;top:50%;pointer-events:none;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:all .2s ease;transition:all .2s ease}.vuesax-app-is-rtl .vs-select--icon{left:5px}.vuesax-app-is-ltr .vs-select--icon{right:5px}.vs-select--input{color:inherit;width:100%;position:relative;padding:7px;border-radius:5px;border:1px solid rgba(0,0,0,.1);-webkit-transition:all .2s ease;transition:all .2s ease;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.vuesax-app-is-rtl .vs-select--input{padding-left:20px}.vuesax-app-is-ltr .vs-select--input{padding-right:20px}.vs-select--input:hover{border:1px solid rgba(0,0,0,.4)}.vs-select--input-con{position:relative}.vs-select--input:disabled{opacity:.5;cursor:default;pointer-events:none}.vs-select--label{font-size:.85rem;color:rgba(0,0,0,.6)}.vuesax-app-is-rtl .vs-select--label{padding-right:5px}.vuesax-app-is-ltr .vs-select--label{padding-left:5px}.con-text-validation{position:relative;font-size:.65rem;overflow:hidden;-webkit-transition:all .25s ease;transition:all .25s ease}.con-text-validation .span-text-validation{padding:2px 4px;padding-bottom:4px;display:block}.scrollx ul{padding-right:4px}.vs-select--options{padding:4px;padding-top:6px;padding-bottom:6px;-webkit-box-shadow:0 5px 20px 0 rgba(0,0,0,.05);box-shadow:0 5px 20px 0 rgba(0,0,0,.05);border-radius:5px;position:absolute;z-index:40000;background:#fff}.vuesax-app-is-rtl .vs-select--options{padding-right:5px}.vuesax-app-is-ltr .vs-select--options{padding-left:5px}.vs-select--options ul{max-height:260px;overflow:auto;padding:0}.vuesax-app-is-rtl .vs-select--options ul{padding-right:0}.vuesax-app-is-ltr .vs-select--options ul{padding-left:0}.vs-select--options ul li{margin:0}.vs-select--item{color:rgba(0,0,0,.8);padding:7px;border:0;position:relative;border-top:1px solid #fff;border-bottom:1px solid #fff;-webkit-transition:all .3s ease;transition:all .3s ease;margin:0!important;cursor:pointer}.vuesax-app-is-rtl .vs-select--item{text-align:right}.vuesax-app-is-ltr .vs-select--item{text-align:left}.vs-select--item:focus,.vs-select--item:hover{background:#f5f5f5}.vs-select--item.con-icon.activex{padding-left:25px}.vs-select--item.con-icon.activex .vs-select--item-icon{opacity:1;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vs-select--item-icon{position:absolute;font-size:1em;left:5px;opacity:0;-webkit-transition:all .2s ease;transition:all .2s ease;top:50%}.vuesax-app-is-rtl .vs-select--item-icon{-webkit-transform:translate(100%,-50%);transform:translate(100%,-50%)}.vuesax-app-is-ltr .vs-select--item-icon{-webkit-transform:translate(-100%,-50%);transform:translate(-100%,-50%)}.vs-select-primary .vs-select--item.activex{background:rgba(var(--vs-primary),.1);color:rgba(var(--vs-primary),1);font-weight:700}.input-select-label-primary--active{color:rgba(var(--vs-primary),1)}.input-select-validate-primary .input-select-con .input-select{border-color:rgba(var(--vs-primary),1)}.input-select-validate-primary .input-select-con .vs-select--icon{color:rgba(var(--vs-primary),1)}.vs-select-secondary .vs-select--item.activex{background:rgba(var(--vs-secondary),.1);color:rgba(var(--vs-secondary),1);font-weight:700}.input-select-label-secondary--active{color:rgba(var(--vs-secondary),1)}.input-select-validate-secondary .input-select-con .input-select{border-color:rgba(var(--vs-secondary),1)}.input-select-validate-secondary .input-select-con .vs-select--icon{color:rgba(var(--vs-secondary),1)}.vs-select-danger .vs-select--item.activex{background:rgba(var(--vs-danger),.1);color:rgba(var(--vs-danger),1);font-weight:700}.input-select-label-danger--active{color:rgba(var(--vs-danger),1)}.input-select-validate-danger .input-select-con .input-select{border-color:rgba(var(--vs-danger),1)}.input-select-validate-danger .input-select-con .vs-select--icon{color:rgba(var(--vs-danger),1)}.vs-select-success .vs-select--item.activex{background:rgba(var(--vs-success),.1);color:rgba(var(--vs-success),1);font-weight:700}.input-select-label-success--active{color:rgba(var(--vs-success),1)}.input-select-validate-success .input-select-con .input-select{border-color:rgba(var(--vs-success),1)}.input-select-validate-success .input-select-con .vs-select--icon{color:rgba(var(--vs-success),1)}.vs-select-warning .vs-select--item.activex{background:rgba(var(--vs-warning),.1);color:rgba(var(--vs-warning),1);font-weight:700}.input-select-label-warning--active{color:rgba(var(--vs-warning),1)}.input-select-validate-warning .input-select-con .input-select{border-color:rgba(var(--vs-warning),1)}.input-select-validate-warning .input-select-con .vs-select--icon{color:rgba(var(--vs-warning),1)}.vs-select-dark .vs-select--item.activex{background:rgba(var(--vs-dark),.1);color:rgba(var(--vs-dark),1);font-weight:700}.input-select-label-dark--active{color:rgba(var(--vs-dark),1)}.input-select-validate-dark .input-select-con .input-select{border-color:rgba(var(--vs-dark),1)}.input-select-validate-dark .input-select-con .vs-select--icon{color:rgba(var(--vs-dark),1)}.vs-select-light .vs-select--item.activex{background:rgba(var(--vs-light),.1);color:rgba(var(--vs-light),1);font-weight:700}.input-select-label-light--active{color:rgba(var(--vs-light),1)}.input-select-validate-light .input-select-con .input-select{border-color:rgba(var(--vs-light),1)}.input-select-validate-light .input-select-con .vs-select--icon{color:rgba(var(--vs-light),1)}.vs-select--item{background:transparent;padding:5px;width:100%;margin:0;text-transform:capitalize}.vs-select--item.disabledx{opacity:.5;cursor:default;pointer-events:none}.vs-select--item span.searchx{background:rgba(0,0,0,.07);border-bottom:1px solid rgba(0,0,0,.3);font-weight:700;color:inherit}.vs-select-group h4{cursor:default;padding-bottom:5px}.vuesax-app-is-rtl .vs-select-group h4{padding-right:10px}.vuesax-app-is-ltr .vs-select-group h4{padding-left:10px}.vs-select-group li{list-style:none}.vuesax-app-is-rtl .vs-select-group li{border-right:1px solid rgba(0,0,0,.1)}.vuesax-app-is-ltr .vs-select-group li{border-left:1px solid rgba(0,0,0,.1)}.vuesax-app-is-rtl .vs-select-group li{margin-right:15px!important}.vuesax-app-is-ltr .vs-select-group li{margin-left:15px!important}.vs-select--icon-clear{position:absolute;z-index:200;top:50%;cursor:pointer;-webkit-transform:translateY(-50%) rotate(45deg);transform:translateY(-50%) rotate(45deg);border:0;width:15px;height:15px;border-radius:0 5px 5px 0;background:inherit;color:inherit;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease}.vuesax-app-is-rtl .vs-select--icon-clear{left:5px}.vuesax-app-is-ltr .vs-select--icon-clear{right:5px}.vs-select--icon-clear.activeBtnClear{opacity:1!important;visibility:visible!important;-webkit-transform:translateY(-50%) rotate(0deg)!important;transform:translateY(-50%) rotate(0deg)!important}.vs-select--icon-clear i{font-size:.9rem}.parentx-static .vs-sidebar-background{display:none}.vs-sidebar--background{background:rgba(0,0,0,.2);width:100%;height:100%;position:fixed;z-index:20000;-webkit-transition:all .3s ease;transition:all .3s ease;opacity:1}.vs-sidebar{background:#fff;z-index:3000;position:fixed;height:100vh;width:100%;max-width:260px;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 15px 0 rgba(0,0,0,.05);box-shadow:0 0 15px 0 rgba(0,0,0,.05);-webkit-transition:all .25s ease;transition:all .25s ease;z-index:40000}.vuesax-app-is-rtl .vs-sidebar{right:0}.vuesax-app-is-ltr .vs-sidebar{left:0}.vs-sidebar.vs-sidebar-reduce{max-width:54px;border-radius:0 10px 10px 0}.vs-sidebar.vs-sidebar-reduce h4{display:block;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:.7rem}.vs-sidebar.vs-sidebar-reduce h4 i{opacity:0}.vuesax-app-is-rtl .vs-sidebar.vs-sidebar-reduce ul{padding-right:0!important}.vuesax-app-is-ltr .vs-sidebar.vs-sidebar-reduce ul{padding-left:0!important}.vs-sidebar.vs-sidebar-reduce .con-vs-avatar{width:40px!important;height:40px!important}.vs-sidebar.vs-sidebar-reduce.vs-sidebar-reduceNotHoverExpand h4{text-align:center}.vs-sidebar.vs-sidebar-reduce.vs-sidebar-reduceNotHoverExpand h4:hover~.vs-sidebar--tooltip{opacity:1;visibility:visible}.vuesax-app-is-rtl .vs-sidebar.vs-sidebar-reduce.vs-sidebar-reduceNotHoverExpand h4:hover~.vs-sidebar--tooltip{-webkit-transform:translate(-5px,-110%);transform:translate(-5px,-110%)}.vuesax-app-is-ltr .vs-sidebar.vs-sidebar-reduce.vs-sidebar-reduceNotHoverExpand h4:hover~.vs-sidebar--tooltip{-webkit-transform:translate(5px,-110%);transform:translate(5px,-110%)}.vs-sidebar.vs-sidebar-reduce:hover:not(.vs-sidebar-reduceNotRebound):not(.vs-sidebar-reduceNotHoverExpand){-webkit-animation:expand .4s ease .15s;animation:expand .4s ease .15s}.vs-sidebar.vs-sidebar-reduce:hover:not(.vs-sidebar-reduceNotHoverExpand){max-width:260px}.vs-sidebar.vs-sidebar-reduce:hover:not(.vs-sidebar-reduceNotHoverExpand) h4 i{opacity:1}.vs-sidebar.vs-sidebar-reduce .vs-sidebar--item{overflow:hidden}.vs-sidebar.vs-sidebar-reduce .vs-sidebar--item i{padding:10px}.vuesax-app-is-rtl .vs-sidebar.vs-sidebar-position-right{right:auto}.vuesax-app-is-ltr .vs-sidebar.vs-sidebar-position-right{left:auto}.vuesax-app-is-rtl .vs-sidebar.vs-sidebar-position-right{left:0}.vuesax-app-is-ltr .vs-sidebar.vs-sidebar-position-right{right:0}.vs-sidebar.vs-sidebar-position-right.vs-sidebar-reduce{border-radius:10px 0 0 10px}.vuesax-app-is-rtl .vs-sidebar.vs-sidebar-position-right .vs-sidebar-tooltip{right:auto}.vuesax-app-is-ltr .vs-sidebar.vs-sidebar-position-right .vs-sidebar-tooltip{left:auto}.vuesax-app-is-rtl .vs-sidebar.vs-sidebar-position-right .vs-sidebar-tooltip{left:70px}.vuesax-app-is-ltr .vs-sidebar.vs-sidebar-position-right .vs-sidebar-tooltip{right:70px}.vs-sidebar.vs-sidebar-position-right .vs-sidebar-tooltip:after{-webkit-box-shadow:4px 0 6px -3px rgba(0,0,0,.07);box-shadow:4px 0 6px -3px rgba(0,0,0,.07)}.vuesax-app-is-rtl .vs-sidebar.vs-sidebar-position-right .vs-sidebar-tooltip:after{right:auto}.vuesax-app-is-ltr .vs-sidebar.vs-sidebar-position-right .vs-sidebar-tooltip:after{left:auto}.vuesax-app-is-rtl .vs-sidebar.vs-sidebar-position-right .vs-sidebar-tooltip:after{left:5px}.vuesax-app-is-ltr .vs-sidebar.vs-sidebar-position-right .vs-sidebar-tooltip:after{right:5px}.vs-sidebar.vs-sidebar-parent{position:absolute;height:100%!important;top:0}.vs-sidebar.vs-sidebar-staticPosition{position:relative}.vs-sidebar .vs-divider-text{opacity:.7}.vs-sidebar--footer{border-top:1px solid rgba(0,0,0,.06)}.vs-sidebar--items{padding:10px 0;background:inherit;overflow-y:auto}.vs-sidebar--item{-webkit-transition:all .25s ease;transition:all .25s ease}.vs-sidebar--item i.material-icons{-webkit-transition:border .25s ease;transition:border .25s ease;font-size:1rem}.vuesax-app-is-rtl .vs-sidebar--item i.material-icons{margin-left:8px}.vuesax-app-is-ltr .vs-sidebar--item i.material-icons{margin-right:8px}.vs-sidebar--item a{padding:10px;-webkit-transition:all .25s ease;transition:all .25s ease;display:block;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:inherit;opacity:.8;font-size:.85rem;text-decoration:none}.vs-sidebar--item a:hover{opacity:1}.vs-sidebar--header{border-bottom:1px solid rgba(0,0,0,.06);padding:10px 5px}.vs-sidebar-group{background:inherit;position:relative}.vs-sidebar-group>ul{-webkit-transition:all .2s ease;transition:all .2s ease}.vs-sidebar-group h4{padding:10px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .25s ease;transition:all .25s ease;border-bottom:1px solid transparent;background:inherit;font-size:.7rem}.vs-sidebar-group h4 i{position:absolute}.vuesax-app-is-rtl .vs-sidebar-group h4 i{left:10px}.vuesax-app-is-ltr .vs-sidebar-group h4 i{right:10px}.vs-sidebar-group .vs-icon{-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vs-sidebar-group.vs-sidebar-group-open>ul{opacity:1}.vuesax-app-is-rtl .vs-sidebar-group.vs-sidebar-group-open>ul{padding-right:10px}.vuesax-app-is-ltr .vs-sidebar-group.vs-sidebar-group-open>ul{padding-left:10px}.vs-sidebar-group.vs-sidebar-group-open>ul .vs-sidebar--item:last-child{border-bottom:1px solid rgba(0,0,0,.05)}.vs-sidebar-group.vs-sidebar-group-open>h4{background:-webkit-gradient(linear,left top, right top,from(transparent),to(rgba(0,0,0,.01)));background:linear-gradient(90deg,transparent,rgba(0,0,0,.01))}.vs-sidebar-group.vs-sidebar-group-open>h4>.vs-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vs-sidebar--tooltip{opacity:0;-webkit-transition:all .25s ease;transition:all .25s ease;background:inherit;-webkit-box-shadow:0 0 6px 0 rgba(0,0,0,.07);box-shadow:0 0 6px 0 rgba(0,0,0,.07);padding:4px 8px;border-radius:4px;position:fixed;pointer-events:none;visibility:hidden}.vuesax-app-is-rtl .vs-sidebar--tooltip{right:60px}.vuesax-app-is-ltr .vs-sidebar--tooltip{left:60px}.vuesax-app-is-rtl .vs-sidebar--tooltip{-webkit-transform:translate(-15px,-110%);transform:translate(-15px,-110%)}.vuesax-app-is-ltr .vs-sidebar--tooltip{-webkit-transform:translate(15px,-110%);transform:translate(15px,-110%)}.vs-sidebar--tooltip:after{content:\\\"\\\";width:10px;height:10px;background:inherit;-webkit-box-shadow:-4px 0 6px -3px rgba(0,0,0,.07);box-shadow:-4px 0 6px -3px rgba(0,0,0,.07);position:absolute;top:50%;-webkit-transform:translateY(-50%) rotate(45deg);transform:translateY(-50%) rotate(45deg)}.vuesax-app-is-rtl .vs-sidebar--tooltip:after{right:-5px}.vuesax-app-is-ltr .vs-sidebar--tooltip:after{left:-5px}.vs-sidebar--group-items{padding:0;-webkit-transition:all .25s ease;transition:all .25s ease;max-height:0;overflow:hidden;background:inherit}.vs-sidebar-primary .vs-sidebar--item a:hover{color:rgba(var(--vs-primary),1)}.vs-sidebar-primary .vs-sidebar-item-active{font-weight:700;background:-webkit-gradient(linear,left top, right top,from(transparent),to(rgba(0,0,0,.01)));background:linear-gradient(90deg,transparent,rgba(0,0,0,.01));border-right:3px solid rgba(var(--vs-primary),1)!important}.vuesax-app-is-rtl .vs-sidebar-primary .vs-sidebar-item-active{border-left:3px solid rgba(var(--vs-primary),1)!important}.vuesax-app-is-ltr .vs-sidebar-primary .vs-sidebar-item-active{border-right:3px solid rgba(var(--vs-primary),1)!important}.vs-sidebar-primary .vs-sidebar-item-active a{color:rgba(var(--vs-primary),1)!important;opacity:1!important}.vs-sidebar-secondary .vs-sidebar--item a:hover{color:rgba(var(--vs-secondary),1)}.vs-sidebar-secondary .vs-sidebar-item-active{font-weight:700;background:-webkit-gradient(linear,left top, right top,from(transparent),to(rgba(0,0,0,.01)));background:linear-gradient(90deg,transparent,rgba(0,0,0,.01));border-right:3px solid rgba(var(--vs-secondary),1)!important}.vuesax-app-is-rtl .vs-sidebar-secondary .vs-sidebar-item-active{border-left:3px solid rgba(var(--vs-secondary),1)!important}.vuesax-app-is-ltr .vs-sidebar-secondary .vs-sidebar-item-active{border-right:3px solid rgba(var(--vs-secondary),1)!important}.vs-sidebar-secondary .vs-sidebar-item-active a{color:rgba(var(--vs-secondary),1)!important;opacity:1!important}.vs-sidebar-danger .vs-sidebar--item a:hover{color:rgba(var(--vs-danger),1)}.vs-sidebar-danger .vs-sidebar-item-active{font-weight:700;background:-webkit-gradient(linear,left top, right top,from(transparent),to(rgba(0,0,0,.01)));background:linear-gradient(90deg,transparent,rgba(0,0,0,.01));border-right:3px solid rgba(var(--vs-danger),1)!important}.vuesax-app-is-rtl .vs-sidebar-danger .vs-sidebar-item-active{border-left:3px solid rgba(var(--vs-danger),1)!important}.vuesax-app-is-ltr .vs-sidebar-danger .vs-sidebar-item-active{border-right:3px solid rgba(var(--vs-danger),1)!important}.vs-sidebar-danger .vs-sidebar-item-active a{color:rgba(var(--vs-danger),1)!important;opacity:1!important}.vs-sidebar-success .vs-sidebar--item a:hover{color:rgba(var(--vs-success),1)}.vs-sidebar-success .vs-sidebar-item-active{font-weight:700;background:-webkit-gradient(linear,left top, right top,from(transparent),to(rgba(0,0,0,.01)));background:linear-gradient(90deg,transparent,rgba(0,0,0,.01));border-right:3px solid rgba(var(--vs-success),1)!important}.vuesax-app-is-rtl .vs-sidebar-success .vs-sidebar-item-active{border-left:3px solid rgba(var(--vs-success),1)!important}.vuesax-app-is-ltr .vs-sidebar-success .vs-sidebar-item-active{border-right:3px solid rgba(var(--vs-success),1)!important}.vs-sidebar-success .vs-sidebar-item-active a{color:rgba(var(--vs-success),1)!important;opacity:1!important}.vs-sidebar-warning .vs-sidebar--item a:hover{color:rgba(var(--vs-warning),1)}.vs-sidebar-warning .vs-sidebar-item-active{font-weight:700;background:-webkit-gradient(linear,left top, right top,from(transparent),to(rgba(0,0,0,.01)));background:linear-gradient(90deg,transparent,rgba(0,0,0,.01));border-right:3px solid rgba(var(--vs-warning),1)!important}.vuesax-app-is-rtl .vs-sidebar-warning .vs-sidebar-item-active{border-left:3px solid rgba(var(--vs-warning),1)!important}.vuesax-app-is-ltr .vs-sidebar-warning .vs-sidebar-item-active{border-right:3px solid rgba(var(--vs-warning),1)!important}.vs-sidebar-warning .vs-sidebar-item-active a{color:rgba(var(--vs-warning),1)!important;opacity:1!important}.vs-sidebar-dark .vs-sidebar--item a:hover{color:rgba(var(--vs-dark),1)}.vs-sidebar-dark .vs-sidebar-item-active{font-weight:700;background:-webkit-gradient(linear,left top, right top,from(transparent),to(rgba(0,0,0,.01)));background:linear-gradient(90deg,transparent,rgba(0,0,0,.01));border-right:3px solid rgba(var(--vs-dark),1)!important}.vuesax-app-is-rtl .vs-sidebar-dark .vs-sidebar-item-active{border-left:3px solid rgba(var(--vs-dark),1)!important}.vuesax-app-is-ltr .vs-sidebar-dark .vs-sidebar-item-active{border-right:3px solid rgba(var(--vs-dark),1)!important}.vs-sidebar-dark .vs-sidebar-item-active a{color:rgba(var(--vs-dark),1)!important;opacity:1!important}.vs-sidebar-light .vs-sidebar--item a:hover{color:rgba(var(--vs-light),1)}.vs-sidebar-light .vs-sidebar-item-active{font-weight:700;background:-webkit-gradient(linear,left top, right top,from(transparent),to(rgba(0,0,0,.01)));background:linear-gradient(90deg,transparent,rgba(0,0,0,.01));border-right:3px solid rgba(var(--vs-light),1)!important}.vuesax-app-is-rtl .vs-sidebar-light .vs-sidebar-item-active{border-left:3px solid rgba(var(--vs-light),1)!important}.vuesax-app-is-ltr .vs-sidebar-light .vs-sidebar-item-active{border-right:3px solid rgba(var(--vs-light),1)!important}.vs-sidebar-light .vs-sidebar-item-active a{color:rgba(var(--vs-light),1)!important;opacity:1!important}.vs-sidebar-animate-enter-active,.vs-sidebar-animate-enter-active .vs-sidebar,.vs-sidebar-animate-leave-active,.vs-sidebar-animate-leave-active .vs-sidebar{-webkit-transition:all .25s ease;transition:all .25s ease}.vuesax-app-is-rtl .vs-sidebar-animate-enter:not(.vs-sidebar-position-right) .vs-sidebar,.vuesax-app-is-rtl .vs-sidebar-animate-leave-to:not(.vs-sidebar-position-right) .vs-sidebar{-webkit-transform:translate(100%);transform:translate(100%)}.vuesax-app-is-ltr .vs-sidebar-animate-enter:not(.vs-sidebar-position-right) .vs-sidebar,.vuesax-app-is-ltr .vs-sidebar-animate-leave-to:not(.vs-sidebar-position-right) .vs-sidebar{-webkit-transform:translate(-100%);transform:translate(-100%)}.vs-sidebar-animate-enter .vs-sidebar-background,.vs-sidebar-animate-leave-to .vs-sidebar-background{opacity:0!important}.vuesax-app-is-rtl .vs-sidebar-animate-enter .vs-sidebar.vs-sidebar-position-right,.vuesax-app-is-rtl .vs-sidebar-animate-leave-to .vs-sidebar.vs-sidebar-position-right{-webkit-transform:translate(-100%);transform:translate(-100%)}.vuesax-app-is-ltr .vs-sidebar-animate-enter .vs-sidebar.vs-sidebar-position-right,.vuesax-app-is-ltr .vs-sidebar-animate-leave-to .vs-sidebar.vs-sidebar-position-right{-webkit-transform:translate(100%);transform:translate(100%)}@-webkit-keyframes expand{0%{max-width:275px}30%{max-width:250px}60%{max-width:265px}to{max-width:260px}}@keyframes expand{0%{max-width:275px}30%{max-width:250px}60%{max-width:265px}to{max-width:260px}}.con-vs-slider{width:100%;position:relative;left:0;margin:16px 0;display:block;min-width:300px;z-index:100}.con-vs-slider.disabledx{opacity:.4;cursor:default}.con-vs-slider.disabledx button{cursor:default!important;pointer-events:none}.vs-slider{width:100%;height:4px;border-radius:4px;background:#f0f0f0;position:relative;cursor:pointer;border:0;margin:0;display:block;overflow:hidden}.vs-slider-line-one{width:20px;height:100%;top:0;position:absolute;left:0;z-index:1}.vs-slider-line-one.hasTransition{-webkit-transition:all .2s ease;transition:all .2s ease}.vs-slider-line-efect{width:0;height:100%;top:0;position:absolute;left:0;-webkit-transition:opacity .3s ease,width .3s ease;transition:opacity .3s ease,width .3s ease;-webkit-transform:translate(-50%);transform:translate(-50%)}.vs-slider-line-efect:not(.run-effect){opacity:0!important;width:0!important}.vs-slider-line-efect.run-effect{width:100%;-webkit-animation:example .3s ease;animation:example .3s ease;-webkit-animation-iteration-count:1;animation-iteration-count:1}.vs-slider--tick{position:absolute;left:100px;background:#d2d2d2;width:4px;height:100%;top:0}.vs-slider--tick.isEnd{-webkit-transform:translate(-100%);transform:translate(-100%)}.vs-slider--circles{-webkit-transform:translate(-50%);transform:translate(-50%);-webkit-transition:border .2s ease,border-radius .2s ease,-webkit-transform .2s ease;transition:border .2s ease,border-radius .2s ease,-webkit-transform .2s ease;transition:border .2s ease,transform .2s ease,border-radius .2s ease;transition:border .2s ease,transform .2s ease,border-radius .2s ease,-webkit-transform .2s ease;display:block;background:#fff}.vs-slider--circles:active{border-width:7px!important}.vs-slider--circles.isEquals.vs-circle-slider-two{border-radius:50% 50% 0 0;-webkit-transform:translate(-50%,-7px) scale(.9)!important;transform:translate(-50%,-7px) scale(.9)!important}.vs-slider--circles.isEquals.vs-circle-slider{border-radius:0 0 50% 50%;-webkit-transform:translate(-50%,6px) scale(.9)!important;transform:translate(-50%,6px) scale(.9)!important}.vs-slider--circles.changeValue:active{border-width:6px!important}.vs-slider--circles.changeValue:active .text-circle-slider{-webkit-transform:translate(-50%,calc(-100% + -19px))!important;transform:translate(-50%,calc(-100% + -19px))!important}.vs-slider--circles.isEndValue{border-radius:50% 0 0 50%!important}.vs-slider--circles:hover:not(:active){-webkit-transform:scale(1.2) translate(-50%);transform:scale(1.2) translate(-50%)}.vs-slider--circles:active .text-circle-slider{opacity:1;-webkit-transform:translate(-50%,calc(-100% + -13px)) scale(1) rotate(0deg);transform:translate(-50%,calc(-100% + -13px)) scale(1) rotate(0deg);visibility:visible}.vs-slider--circle-text{color:#fff;position:absolute;padding:2px 5px;display:block;border-radius:5px;-webkit-transform:translate(-50%,-20%) scale(.3);transform:translate(-50%,-20%) scale(.3);top:0;left:50%;font-size:.75rem;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000}.vs-slider--circle-text span{margin-left:2px}.vs-slider--circle-text i{font-size:.8rem;margin-left:2px}.vs-slider--circle-text:after{content:\\\"\\\";width:6px;height:6px;display:block;position:absolute;background:inherit;left:50%;bottom:-3px;-webkit-transform:translate(-50%) rotate(45deg);transform:translate(-50%) rotate(45deg)}.vs-slider--circle{width:16px;height:16px;position:absolute;top:-6px;border-radius:50%;cursor:pointer;border:0;margin:0;z-index:200}.vs-slider--circle.hasTransition{-webkit-transition:all .2s ease;transition:all .2s ease}.vs-slider--circle-two{z-index:100;width:16px;height:16px;position:absolute;top:-6px;border-radius:50%;cursor:pointer;border:0;margin:0;color:#fff}.vs-slider--circle-two.hasTransition{-webkit-transition:all .2s ease;transition:all .2s ease}.vs-slider-primary .vs-slider-line-one{background:rgba(var(--vs-primary),1)}.vs-slider-primary .vs-circles-slider{border:2px solid rgba(var(--vs-primary),1)}.vs-slider-primary .text-circle-slider,.vs-slider-primary .vs-slider-line-efect{background:rgba(var(--vs-primary),1)}.vs-slider-secondary .vs-slider-line-one{background:rgba(var(--vs-secondary),1)}.vs-slider-secondary .vs-circles-slider{border:2px solid rgba(var(--vs-secondary),1)}.vs-slider-secondary .text-circle-slider,.vs-slider-secondary .vs-slider-line-efect{background:rgba(var(--vs-secondary),1)}.vs-slider-danger .vs-slider-line-one{background:rgba(var(--vs-danger),1)}.vs-slider-danger .vs-circles-slider{border:2px solid rgba(var(--vs-danger),1)}.vs-slider-danger .text-circle-slider,.vs-slider-danger .vs-slider-line-efect{background:rgba(var(--vs-danger),1)}.vs-slider-success .vs-slider-line-one{background:rgba(var(--vs-success),1)}.vs-slider-success .vs-circles-slider{border:2px solid rgba(var(--vs-success),1)}.vs-slider-success .text-circle-slider,.vs-slider-success .vs-slider-line-efect{background:rgba(var(--vs-success),1)}.vs-slider-warning .vs-slider-line-one{background:rgba(var(--vs-warning),1)}.vs-slider-warning .vs-circles-slider{border:2px solid rgba(var(--vs-warning),1)}.vs-slider-warning .text-circle-slider,.vs-slider-warning .vs-slider-line-efect{background:rgba(var(--vs-warning),1)}.vs-slider-dark .vs-slider-line-one{background:rgba(var(--vs-dark),1)}.vs-slider-dark .vs-circles-slider{border:2px solid rgba(var(--vs-dark),1)}.vs-slider-dark .text-circle-slider,.vs-slider-dark .vs-slider-line-efect{background:rgba(var(--vs-dark),1)}.vs-slider-light .vs-slider-line-one{background:rgba(var(--vs-light),1)}.vs-slider-light .vs-circles-slider{border:2px solid rgba(var(--vs-light),1)}.vs-slider-light .text-circle-slider,.vs-slider-light .vs-slider-line-efect{background:rgba(var(--vs-light),1)}@-webkit-keyframes example{0%{opacity:1}to{opacity:0}}@keyframes example{0%{opacity:1}to{opacity:0}}.vs-spacer{padding:0;margin:0;-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important;background:transparent}.vs-switch{border-radius:12px;border:0;min-width:42px;height:22px;position:relative;cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-switch:disabled{opacity:.5;cursor:default;pointer-events:none}.vs-switch:active:not(.vs-switch--circle) .vs-switch--circle{width:24px;border-radius:15px}.vs-switch.vs-switch-active:active .vs-switch--circle{width:24px;margin-left:calc(100% - 29px)}.vs-switch.vs-switch-active .vs-switch--circle{margin-left:calc(100% - 22px)}.vs-switch--circle{display:block;width:18px;height:18px;position:absolute;background:#fff;left:2px;top:2px;border-radius:50%;-webkit-transition:all .25s ease;transition:all .25s ease;-webkit-box-shadow:0 0 4px 0 rgba(0,0,0,.1);box-shadow:0 0 4px 0 rgba(0,0,0,.1)}.vs-switch--text{position:absolute;display:block;font-size:.625em;opacity:0;-webkit-transition:all .2s ease;transition:all .2s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;white-space:nowrap;overflow:hidden}.vs-switch--text.text-on{padding-left:6px;left:0;color:#fff;-webkit-transform:translate(10px);transform:translate(10px)}.vs-switch--text.text-off{right:0;padding-right:5px;color:#a0a0a0;-webkit-transform:translate(-10px);transform:translate(-10px)}.vs-switch--text.active-text{opacity:1;-webkit-transform:translate(0);transform:translate(0)}.vs-switch--icon{font-size:.8rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;max-width:16px;padding:0 2px}.vs-switch--input{position:absolute;width:100%;height:100%;z-index:200;opacity:0;cursor:pointer}.vs-switch-primary{background:#e2e2e2}.vs-switch-primary.vs-switch-active{background:rgba(var(--vs-primary),1)}.vs-switch-secondary{background:#e2e2e2}.vs-switch-secondary.vs-switch-active{background:rgba(var(--vs-secondary),1)}.vs-switch-danger{background:#e2e2e2}.vs-switch-danger.vs-switch-active{background:rgba(var(--vs-danger),1)}.vs-switch-success{background:#e2e2e2}.vs-switch-success.vs-switch-active{background:rgba(var(--vs-success),1)}.vs-switch-warning{background:#e2e2e2}.vs-switch-warning.vs-switch-active{background:rgba(var(--vs-warning),1)}.vs-switch-dark{background:#e2e2e2}.vs-switch-dark.vs-switch-active{background:rgba(var(--vs-dark),1)}.vs-switch-light{background:#e2e2e2}.vs-switch-light.vs-switch-active{background:rgba(var(--vs-light),1)}.vs-con-table{background:#fbfbfb;border-radius:5px;padding:5p}.vs-con-table .empty{color:rgba(var(--vs-danger),1)}.vs-con-table .con-edit-td{position:absolute;padding:6px;-webkit-transform:translateY(15%);transform:translateY(15%);border-radius:5px;z-index:300;background:#fff;-webkit-box-shadow:0 6px 10px 0 rgba(0,0,0,.05);box-shadow:0 6px 10px 0 rgba(0,0,0,.05);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;overflow:hidden}.vuesax-app-is-rtl .vs-con-table .con-edit-td{right:0}.vuesax-app-is-ltr .vs-con-table .con-edit-td{left:0}.vs-con-table.stripe .tr-values:nth-child(2n){background:transparent!important}.vs-con-table table{font-size:.8rem;width:100%;border-collapse:collapse}.vs-con-table table tbody{width:100%}.vs-con-table td{border:0;padding:2px 8px}.vs-con-table td:first-child{border-left:1px solid transparent}.vs-con-table td.td-check{cursor:pointer;padding:5px!important}.vs-con-table td.td-check .con-vs-checkbox{margin-left:0!important;margin-right:0!important}.vs-con-table td.td-check .vs-icon{-webkit-transition:all .25s ease;transition:all .25s ease;-webkit-transform:translate(7px) rotate(-90deg);transform:translate(7px) rotate(-90deg)}.td-edit{text-decoration:underline}.td-edit .icon-edit{-webkit-transition:all .25s ease;transition:all .25s ease;font-size:.75rem;position:absolute;opacity:0;padding-top:3px;-webkit-transform:translate(0);transform:translate(0);background:#f0f0f0;width:17px;height:17px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:5px}.td-edit>span{cursor:pointer}.vs-table--pagination{width:100%;padding:7px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vs-table--pagination .vs-pagination--buttons{width:30px;height:30px}.vs-table--pagination .item-pagination{width:30px;height:30px;font-size:.8rem}.vs-table--tbody{z-index:400;position:relative}.vs-table--tbody-table{width:100%;margin:0;min-width:400px;position:relative}.vs-table--tbody-table .tr-table:last-child .con-edit-td{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.vs-table--tbody-table .tr-spacer{height:4px;opacity:1}.vs-table--tbody-table:nth-child(2n){background:#000}.vs-table--tbody-table .tr-expand td{padding:0;overflow:hidden}.vs-table--tbody-table .tr-expand td .con-expand{-webkit-transition:all .25s ease;transition:all .25s ease}.vs-table--tbody-table tr{-webkit-transition:all .3s ease;transition:all .3s ease;background:#fff}.vs-table--tbody-table .tr-values.activeEdit{z-index:500!important}.vs-table--tbody-table .tr-values.activeEdit+.tr-table{-webkit-transform:translate(0)!important;transform:translate(0)!important}.vs-table--tbody-table .tr-values.hoverFlat:not(.activeEdit):not(.is-expand):hover{opacity:.8}.vs-table--tbody-table .tr-values:not(.activeEdit):not(.tr-expandedx):not(.hoverFlat):hover{z-index:200;-webkit-transform:translateY(-4px);transform:translateY(-4px)}.vs-table--tbody-table .tr-values:not(.activeEdit):not(.tr-expandedx):not(.hoverFlat):hover .tr-values{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.05);box-shadow:0 2px 12px 0 rgba(0,0,0,.05)}.vs-table--tbody-table .tr-values:not(.activeEdit):not(.tr-expandedx):not(.hoverFlat):hover~tbody{z-index:10}.vs-table--tbody-table .tr-values td{padding:10px}.vs-table--tbody-table .tr-values .tr-expand td{padding:0}.vs-table--tbody-table .tr-values.selected{cursor:pointer}.vs-table--tbody-table .tr-values:last-child{border-bottom:1px solid transparent}.vs-table--tbody-table .tr-values.is-expand{-webkit-box-shadow:0 2px 10px 0 rgba(0,0,0,.08);box-shadow:0 2px 10px 0 rgba(0,0,0,.08);-webkit-transform:scale(1.025);transform:scale(1.025);z-index:300}.vs-table--tbody-table .tr-values.is-expand .tr-values{z-index:300;-webkit-box-shadow:0 2px 10px 0 transparent;box-shadow:0 2px 10px 0 transparent}.vs-table--tbody-table .tr-values.is-expand .tr-spacer{height:0}.vs-table--tbody-table .tr-values.is-expand .tr-expand .con-expand{border-top:1px solid rgba(0,0,0,.05)!important}.td-check{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.td-check.active-expanded .vs-icon{-webkit-transform:translate(7px) rotate(0deg)!important;transform:translate(7px) rotate(0deg)!important}.td-check .vs-icon{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transform:translate(7px) rotate(0deg);transform:translate(7px) rotate(0deg)}.vs-table--content{width:100%;overflow:auto}.vs-table--header{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.vs-table--header,.vs-table--search{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.vs-table--search{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;max-width:200px;position:relative}.vuesax-app-is-rtl .vs-table--search{margin-right:auto}.vuesax-app-is-ltr .vs-table--search{margin-left:auto}.vs-table--search i{position:absolute;-webkit-transition:all .25s ease;transition:all .25s ease;font-size:1rem}.vuesax-app-is-rtl .vs-table--search i{right:10px}.vuesax-app-is-ltr .vs-table--search i{left:10px}.vs-table--search-input{padding:5px 10px;border-radius:20px;border:1px solid rgba(0,0,0,.04);font-size:.7rem;width:200px;color:rgba(0,0,0,.7);-webkit-transition:all .25s ease;transition:all .25s ease}.vuesax-app-is-rtl .vs-table--search-input{padding-right:30px}.vuesax-app-is-ltr .vs-table--search-input{padding-left:30px}.vs-table--search-input:focus{-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.03);box-shadow:0 4px 10px 0 rgba(0,0,0,.03)}.vs-table--search-input:focus+i{color:rgba(var(--vs-primary),1)}.vs-table--thead{z-index:200;width:100%;position:relative}th{padding:6px 10px;padding-top:5px;padding-bottom:3px;border:0;text-align:left;font-size:.85rem}th .vs-table-text{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;cursor:pointer}th .sort-th,th .vs-table-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}th .sort-th{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:6px;-webkit-transform:translateY(2px);transform:translateY(2px)}th .sort-th .th-sort-icon{font-size:.9rem;-webkit-transition:all .25s ease;transition:all .25s ease;border-radius:2px}th.td-check{padding:0!important}th.td-check .con-td-check{display:block;padding-top:3px;background:#fff;border-radius:6px;padding:5px;padding-right:2px;-webkit-box-shadow:0 3px 10px 0 rgba(0,0,0,.05);box-shadow:0 3px 10px 0 rgba(0,0,0,.05);-webkit-transition:all .25s ease;transition:all .25s ease}th.td-check:hover{-webkit-box-shadow:0 0 0 0 rgba(0,0,0,.05);box-shadow:0 0 0 0 rgba(0,0,0,.05)}th.td-check .con-vs-checkbox{margin-right:0!important;margin-left:0!important}.vs-table--not-data{padding:10px;text-align:center}.tr-table-state-primary{background:rgba(var(--vs-primary),.1)!important}.tr-table-state-primary,.vs-table-primary .is-selected{color:rgba(var(--vs-primary),1);-webkit-box-shadow:0 0 1px 0 rgba(var(--vs-primary),1)!important;box-shadow:0 0 1px 0 rgba(var(--vs-primary),1)!important}.vs-table-primary .is-selected{-webkit-transform:translate(0)!important;transform:translate(0)!important;background:rgba(var(--vs-primary),.05)!important}.vs-table-primary .is-selected td:first-child{border-left:1px solid transparent!important}.tr-table-state-secondary{background:rgba(var(--vs-secondary),.1)!important}.tr-table-state-secondary,.vs-table-secondary .is-selected{color:rgba(var(--vs-secondary),1);-webkit-box-shadow:0 0 1px 0 rgba(var(--vs-secondary),1)!important;box-shadow:0 0 1px 0 rgba(var(--vs-secondary),1)!important}.vs-table-secondary .is-selected{-webkit-transform:translate(0)!important;transform:translate(0)!important;background:rgba(var(--vs-secondary),.05)!important}.vs-table-secondary .is-selected td:first-child{border-left:1px solid transparent!important}.tr-table-state-danger{background:rgba(var(--vs-danger),.1)!important}.tr-table-state-danger,.vs-table-danger .is-selected{color:rgba(var(--vs-danger),1);-webkit-box-shadow:0 0 1px 0 rgba(var(--vs-danger),1)!important;box-shadow:0 0 1px 0 rgba(var(--vs-danger),1)!important}.vs-table-danger .is-selected{-webkit-transform:translate(0)!important;transform:translate(0)!important;background:rgba(var(--vs-danger),.05)!important}.vs-table-danger .is-selected td:first-child{border-left:1px solid transparent!important}.tr-table-state-success{background:rgba(var(--vs-success),.1)!important}.tr-table-state-success,.vs-table-success .is-selected{color:rgba(var(--vs-success),1);-webkit-box-shadow:0 0 1px 0 rgba(var(--vs-success),1)!important;box-shadow:0 0 1px 0 rgba(var(--vs-success),1)!important}.vs-table-success .is-selected{-webkit-transform:translate(0)!important;transform:translate(0)!important;background:rgba(var(--vs-success),.05)!important}.vs-table-success .is-selected td:first-child{border-left:1px solid transparent!important}.tr-table-state-warning{background:rgba(var(--vs-warning),.1)!important}.tr-table-state-warning,.vs-table-warning .is-selected{color:rgba(var(--vs-warning),1);-webkit-box-shadow:0 0 1px 0 rgba(var(--vs-warning),1)!important;box-shadow:0 0 1px 0 rgba(var(--vs-warning),1)!important}.vs-table-warning .is-selected{-webkit-transform:translate(0)!important;transform:translate(0)!important;background:rgba(var(--vs-warning),.05)!important}.vs-table-warning .is-selected td:first-child{border-left:1px solid transparent!important}.tr-table-state-dark{background:rgba(var(--vs-dark),.1)!important}.tr-table-state-dark,.vs-table-dark .is-selected{color:rgba(var(--vs-dark),1);-webkit-box-shadow:0 0 1px 0 rgba(var(--vs-dark),1)!important;box-shadow:0 0 1px 0 rgba(var(--vs-dark),1)!important}.vs-table-dark .is-selected{-webkit-transform:translate(0)!important;transform:translate(0)!important;background:rgba(var(--vs-dark),.05)!important}.vs-table-dark .is-selected td:first-child{border-left:1px solid transparent!important}.tr-table-state-light{background:rgba(var(--vs-light),.1)!important}.tr-table-state-light,.vs-table-light .is-selected{color:rgba(var(--vs-light),1);-webkit-box-shadow:0 0 1px 0 rgba(var(--vs-light),1)!important;box-shadow:0 0 1px 0 rgba(var(--vs-light),1)!important}.vs-table-light .is-selected{-webkit-transform:translate(0)!important;transform:translate(0)!important;background:rgba(var(--vs-light),.05)!important}.vs-table-light .is-selected td:first-child{border-left:1px solid transparent!important}.td-enter-active,.td-leave-active{-webkit-transition:all .25s ease;transition:all .25s ease}.td-enter,.td-leave-to{opacity:0;-webkit-transform:translateY(15%) scale(.4)!important;transform:translateY(15%) scale(.4)!important}.tr-expand-enter-active,.tr-expand-leave-active{-webkit-transition:all .3s ease;transition:all .3s ease}.tr-expand-enter,.tr-expand-leave-to{opacity:0;height:0}.tr-expand td .content-tr-expand{padding:10px;position:relative;border-top:1px solid rgba(0,0,0,.05);border-bottom:1px solid rgba(0,0,0,.05);width:100%;padding-right:30px}.tr-expand td .content-tr-expand,.tr-expand td .tr-expand--close{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tr-expand td .tr-expand--close{position:absolute;width:30px;height:30px;right:0;background:inherit;color:rgba(var(--vs-danger),1);border:0;margin-left:10px;background:#f5f5f5;border-radius:3px;cursor:pointer;-webkit-transition:all .25s ease;transition:all .25s ease}.tr-expand td .tr-expand--close:hover{opacity:.7;background:rgba(var(--vs-danger),1);color:#fff}.tr-expand td .tr-expand--close i{font-size:1.1rem}.vuesax-app-is-rtl .vs-con-table td.td-check .vs-icon{-webkit-transform:translate(-7px) rotate(90deg);transform:translate(-7px) rotate(90deg)}.vuesax-app-is-rtl .vs-con-table td.td-check .vs-checkbox--check .vs-icon{-webkit-transform:translate(1px) rotate(0deg);transform:translate(1px) rotate(0deg)}.fade-tab-enter-active,.fade-tab-leave-active{-webkit-transition:all .3s;transition:all .3s}.fade-tab-enter,.fade-tab-leave-to{top:0;opacity:0;position:absolute!important;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.fade-tab-leave-to{top:0;opacity:0;position:absolute!important;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.fade-tab-invert-enter-active,.fade-tab-invert-leave-active{-webkit-transition:all .3s;transition:all .3s}.fade-tab-invert-enter,.fade-tab-invert-leave-to{top:0;opacity:0;position:absolute!important;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.fade-tab-invert-leave-to{top:0;opacity:0;position:absolute!important;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.fade-tab-vertical-enter-active,.fade-tab-vertical-leave-active{-webkit-transition:all .3s;transition:all .3s}.fade-tab-vertical-enter{top:0;opacity:0;position:absolute!important;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.fade-tab-vertical-leave-to{top:0;opacity:0;position:absolute!important;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.fade-tab-vertical-invert-enter-active,.fade-tab-vertical-invert-leave-active{-webkit-transition:all .3s;transition:all .3s}.fade-tab-vertical-invert-enter{top:0;opacity:0;position:absolute!important;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.fade-tab-vertical-invert-leave-to{top:0;opacity:0;position:absolute!important;-webkit-transform:translate3d(0,100%,0)!important;transform:translate3d(0,100%,0)!important}.con-vs-tabs{width:100%;overflow:hidden;position:relative}.con-vs-tabs .con-slot-tabs{position:relative;display:block;overflow:hidden}.con-vs-tabs .con-ul-tabs,.vs-tabs--ul{position:relative}.vs-tabs--ul{width:100%;padding-left:0;-webkit-box-shadow:0 0 25px 0 rgba(0,0,0,.04);box-shadow:0 0 25px 0 rgba(0,0,0,.04)}.vs-tabs--ul.ul-tabs-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-tabs--ul.ul-tabs-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vs-tabs--ul.ul-tabs-fixed{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.vs-tabs--ul.ul-tabs-fixed li{width:100%}.line-vs-tabs{width:100px;height:2px;display:block;position:absolute;-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transform:translateZ(0);transform:translateZ(0);will-change:left,right}.vs-tabs--li{display:block;position:relative}.vs-tabs--li button{color:inherit;font-family:inherit}.vs-tabs--li button.vs-tabs--btn{-webkit-box-sizing:border-box;box-sizing:border-box;display:block;position:relative;width:100%;background:transparent;margin:0;padding:10px;border:0;cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease;z-index:100}.vs-tabs--li button.vs-tabs--btn:hover:not(:disabled){color:inherit}.vs-tabs--li button:disabled{opacity:.5;cursor:default!important;pointer-events:none}.activeChild button:not(:disabled){color:inherit}.activeChild button.vs-tabs--btn{padding-top:8px;padding-bottom:12px}.vs-tabs--btn-tag{position:absolute;width:20px;height:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;top:-10px;right:-10px;border-radius:3px;border:0;background:#fff;-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.05);box-shadow:0 0 10px 0 rgba(0,0,0,.05);cursor:pointer;z-index:200}.vs-tabs--btn-tag i{padding-right:0!important;font-size:.9rem}.vuesax-app-is-rtl .vs-tabs--btn-icon+span{padding-right:9px}.vuesax-app-is-ltr .vs-tabs--btn-icon+span{padding-left:9px}.vs-tabs-position-top .vs-tabs--ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.vs-tabs-position-bottom .vs-tabs--ul{display:-webkit-box;display:-ms-flexbox;display:flex;border-top:1px solid rgba(0,0,0,.05);border-bottom:0!important}.vs-tabs-position-bottom .con-ul-tabs{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.vs-tabs-position-bottom .line-vs-tabs{top:0}.vs-tabs-position-left{display:-webkit-box;display:-ms-flexbox;display:flex}.vs-tabs-position-left .line-vs-tabs{left:auto!important;right:0}.vs-tabs-position-left .con-ul-tabs{float:left;height:100%;display:block}.vs-tabs-position-left .vs-tabs--ul{display:block;width:auto;border-bottom:0!important;border-right:1px solid rgba(0,0,0,.05)}.vs-tabs-position-left .activeChild button{padding-top:10px!important;padding-bottom:10px!important;padding-left:12px!important;padding-right:8px!important}.vs-tabs-position-right{display:-webkit-box;display:-ms-flexbox;display:flex}.vs-tabs-position-right .con-slot-tabs{width:100%}.vs-tabs-position-right .con-ul-tabs{float:left;height:100%;display:block;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.vs-tabs-position-right .vs-tabs--ul{display:block;width:auto;border-bottom:0!important;border-left:1px solid rgba(0,0,0,.05)}.vs-tabs-position-right .activeChild button{padding-top:10px!important;padding-bottom:10px!important;padding-left:8px!important;padding-right:12px!important}.vs-tabs-primary .con-ul-tabs .activeChild button,.vs-tabs-primary .con-ul-tabs button:not(:disabled):hover{color:rgba(var(--vs-primary),1)!important}.vs-tabs-primary .con-ul-tabs .line-vs-tabs{background:linear-gradient(30deg,rgba(var(--vs-primary),1),rgba(var(--vs-primary),.5))!important;-webkit-box-shadow:0 0 8px 0 rgba(var(--vs-primary),.4)!important;box-shadow:0 0 8px 0 rgba(var(--vs-primary),.4)!important}.vs-tabs-secondary .con-ul-tabs .activeChild button,.vs-tabs-secondary .con-ul-tabs button:not(:disabled):hover{color:rgba(var(--vs-secondary),1)!important}.vs-tabs-secondary .con-ul-tabs .line-vs-tabs{background:linear-gradient(30deg,rgba(var(--vs-secondary),1),rgba(var(--vs-secondary),.5))!important;-webkit-box-shadow:0 0 8px 0 rgba(var(--vs-secondary),.4)!important;box-shadow:0 0 8px 0 rgba(var(--vs-secondary),.4)!important}.vs-tabs-danger .con-ul-tabs .activeChild button,.vs-tabs-danger .con-ul-tabs button:not(:disabled):hover{color:rgba(var(--vs-danger),1)!important}.vs-tabs-danger .con-ul-tabs .line-vs-tabs{background:linear-gradient(30deg,rgba(var(--vs-danger),1),rgba(var(--vs-danger),.5))!important;-webkit-box-shadow:0 0 8px 0 rgba(var(--vs-danger),.4)!important;box-shadow:0 0 8px 0 rgba(var(--vs-danger),.4)!important}.vs-tabs-success .con-ul-tabs .activeChild button,.vs-tabs-success .con-ul-tabs button:not(:disabled):hover{color:rgba(var(--vs-success),1)!important}.vs-tabs-success .con-ul-tabs .line-vs-tabs{background:linear-gradient(30deg,rgba(var(--vs-success),1),rgba(var(--vs-success),.5))!important;-webkit-box-shadow:0 0 8px 0 rgba(var(--vs-success),.4)!important;box-shadow:0 0 8px 0 rgba(var(--vs-success),.4)!important}.vs-tabs-warning .con-ul-tabs .activeChild button,.vs-tabs-warning .con-ul-tabs button:not(:disabled):hover{color:rgba(var(--vs-warning),1)!important}.vs-tabs-warning .con-ul-tabs .line-vs-tabs{background:linear-gradient(30deg,rgba(var(--vs-warning),1),rgba(var(--vs-warning),.5))!important;-webkit-box-shadow:0 0 8px 0 rgba(var(--vs-warning),.4)!important;box-shadow:0 0 8px 0 rgba(var(--vs-warning),.4)!important}.vs-tabs-dark .con-ul-tabs .activeChild button,.vs-tabs-dark .con-ul-tabs button:not(:disabled):hover{color:rgba(var(--vs-dark),1)!important}.vs-tabs-dark .con-ul-tabs .line-vs-tabs{background:linear-gradient(30deg,rgba(var(--vs-dark),1),rgba(var(--vs-dark),.5))!important;-webkit-box-shadow:0 0 8px 0 rgba(var(--vs-dark),.4)!important;box-shadow:0 0 8px 0 rgba(var(--vs-dark),.4)!important}.vs-tabs-light .con-ul-tabs .activeChild button,.vs-tabs-light .con-ul-tabs button:not(:disabled):hover{color:rgba(var(--vs-light),1)!important}.vs-tabs-light .con-ul-tabs .line-vs-tabs{background:linear-gradient(30deg,rgba(var(--vs-light),1),rgba(var(--vs-light),.5))!important;-webkit-box-shadow:0 0 8px 0 rgba(var(--vs-light),.4)!important;box-shadow:0 0 8px 0 rgba(var(--vs-light),.4)!important}.vs-tabs--content{position:relative;width:100%;display:block;padding:10px}.vs-con-textarea{width:100%;position:relative;border:1px solid rgba(0,0,0,.08);-webkit-box-shadow:0 0 0 0 transparent;box-shadow:0 0 0 0 transparent;border-radius:6px;-webkit-transition:boxShadow .25s ease,border .25s ease,-webkit-transform .25s ease;transition:boxShadow .25s ease,border .25s ease,-webkit-transform .25s ease;transition:boxShadow .25s ease,border .25s ease,transform .25s ease;transition:boxShadow .25s ease,border .25s ease,transform .25s ease,-webkit-transform .25s ease;-webkit-transform:translate(0);transform:translate(0);margin-bottom:16px}.vs-con-textarea.focusx h4{background:#fcfcfc;padding-top:4px;padding-bottom:4px}.vs-con-textarea h4{font-size:.7rem;padding:8px;padding-bottom:0;cursor:default;-webkit-transition:all .25s ease;transition:all .25s ease;border-radius:5px 5px 0 0}.vs-textarea{resize:none;border-radius:6px;border:0 solid transparent;display:block;padding:9px;color:rgba(0,0,0,.8);font-size:.8rem;width:100%;max-width:100%;min-width:100%;background:transparent}.vs-textarea:focus{resize:auto!important}.vs-textarea:focus~.count{opacity:1}.textarea-danger{border:1px solid rgba(var(--vs-danger),.4);-webkit-box-shadow:0 4px 20px 0 rgba(var(--vs-danger),.1);box-shadow:0 4px 20px 0 rgba(var(--vs-danger),.1)}.textarea-danger .vs-textarea{color:rgba(var(--vs-danger),.8)}.textarea-danger .count{background:rgba(var(--vs-danger),1)}.vs-textarea--count{position:absolute;right:14px;bottom:0;-webkit-transform:translateY(100%);transform:translateY(100%);padding:1px 6px;font-size:.6rem;border-radius:0 0 5px 5px;font-weight:700;-webkit-box-shadow:0 4px 20px 0 rgba(0,0,0,.05);box-shadow:0 4px 20px 0 rgba(0,0,0,.05);cursor:default;background:rgba(var(--vs-primary),1);color:#fff;opacity:.3;-webkit-transition:all .25s ease;transition:all .25s ease}.focusx.vs-textarea-primary{border:1px solid rgba(var(--vs-primary),1)!important}.focusx.vs-textarea-secondary{border:1px solid rgba(var(--vs-secondary),1)!important}.focusx.vs-textarea-danger{border:1px solid rgba(var(--vs-danger),1)!important}.focusx.vs-textarea-success{border:1px solid rgba(var(--vs-success),1)!important}.focusx.vs-textarea-warning{border:1px solid rgba(var(--vs-warning),1)!important}.focusx.vs-textarea-dark{border:1px solid rgba(var(--vs-dark),1)!important}.focusx.vs-textarea-light{border:1px solid rgba(var(--vs-light),1)!important}.vs-timepicker{display:inline-block;position:relative}.vs-timepicker .con-vs-time{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vs-timepicker .con-vs-time .time{padding:5px 8px;margin:0 2px;border-radius:4px;-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.05);box-shadow:0 4px 10px 0 rgba(0,0,0,.05);cursor:pointer;position:relative}.con-ul-time{overflow:hidden;max-height:180px;position:absolute;z-index:20000}.ul-time{position:relative;background:#fff;margin:0;padding:0;height:auto;max-height:180px;overflow:auto;border-radius:4px;-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.05);box-shadow:0 4px 10px 0 rgba(0,0,0,.05)}.ul-time li{padding:5px 8px;list-style:none;text-align:center;cursor:pointer}.ul-time li.active-time{background:#000}.vs-tooltip{display:block;height:auto;position:absolute;left:0;top:0;z-index:40000;background:#323232;padding:5px 7px;font-size:12px;border-radius:6px;max-width:220px;color:#fff}.vs-tooltip.after-none:after{display:none!important}.vs-tooltip h4{font-size:13px;width:100%;border-bottom:1px solid hsla(0,0%,100%,.1);padding-bottom:5px;margin-bottom:5px;text-align:center}.vs-tooltip:after{content:\\\"\\\";background:inherit;width:8px;height:8px;position:absolute;display:block}.vs-tooltip.vs-tooltip-top:after{bottom:-6px}.vs-tooltip.vs-tooltip-bottom:after,.vs-tooltip.vs-tooltip-top:after{-webkit-transform:rotate(45deg) translate(-50%);transform:rotate(45deg) translate(-50%);left:50%}.vs-tooltip.vs-tooltip-bottom:after{top:-1px}.vs-tooltip.vs-tooltip-left:after{right:-1px}.vs-tooltip.vs-tooltip-left:after,.vs-tooltip.vs-tooltip-right:after{-webkit-transform:rotate(45deg) translateY(-50%);transform:rotate(45deg) translateY(-50%);top:50%}.vs-tooltip.vs-tooltip-right:after{left:-6px}.tooltip-fade-enter-active,.tooltip-fade-leave-active{-webkit-transition:opacity .2s,-webkit-transform .2s;transition:opacity .2s,-webkit-transform .2s;transition:opacity .2s,transform .2s;transition:opacity .2s,transform .2s,-webkit-transform .2s}.tooltip-fade-enter,.tooltip-fade-leave-to{opacity:0}.tooltip-fade-enter.vs-tooltip-top,.tooltip-fade-leave-to.vs-tooltip-top{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tooltip-fade-enter.vs-tooltip-bottom,.tooltip-fade-leave-to.vs-tooltip-bottom{-webkit-transform:translateY(10px);transform:translateY(10px)}.tooltip-fade-enter.vs-tooltip-left,.tooltip-fade-leave-to.vs-tooltip-left{-webkit-transform:translate(-10px);transform:translate(-10px)}.tooltip-fade-enter.vs-tooltip-right,.tooltip-fade-leave-to.vs-tooltip-right{-webkit-transform:translate(10px);transform:translate(10px)}.vs-tooltip-primary{background:rgba(var(--vs-primary),1)}.vs-tooltip-secondary{background:rgba(var(--vs-secondary),1)}.vs-tooltip-danger{background:rgba(var(--vs-danger),1)}.vs-tooltip-success{background:rgba(var(--vs-success),1)}.vs-tooltip-warning{background:rgba(var(--vs-warning),1)}.vs-tooltip-dark{background:rgba(var(--vs-dark),1)}.vs-tooltip-light{background:rgba(var(--vs-light),1)}.con-upload{width:100%;position:relative}.con-input-upload{background:#f5f5f5;width:200px;height:200px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;position:relative;-webkit-transition:all .25s ease;transition:all .25s ease;border:1px dashed rgba(0,0,0,.1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:15px}.vuesax-app-is-rtl .con-input-upload{float:right}.vuesax-app-is-ltr .con-input-upload{float:left}.con-input-upload:hover{border:1px dashed rgba(var(--vs-primary),.5)}.con-input-upload.disabled-upload{opacity:0;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:none}.con-input-upload input{position:absolute;width:100%;height:100%;opacity:0;left:0;top:0;cursor:pointer}.con-input-upload .text-input{min-width:200px;display:block;text-align:center;margin:0!important;padding:0!important;width:100%;font-weight:700}.con-input-upload .input-progress{height:100%;position:absolute;display:block;left:0;top:0;width:29%;background:rgba(var(--vs-primary),1);border-radius:10px}.con-input-upload.on-progress-all-upload{width:100%;height:4px;overflow:hidden;padding:0;border:0 solid transparent}.con-input-upload.on-progress-all-upload .text-input,.con-input-upload.on-progress-all-upload .vs-upload--button-upload{opacity:0;-webkit-transform:translate(-40px);transform:translate(-40px)}.con-input-upload.is-ready-all-upload .input-progress{background:rgba(var(--vs-success),1)!important}.vs-upload--button-upload{position:absolute;border:0;padding:4px;border-radius:0 0 5px 5px;padding-left:6px;padding-right:6px;font-size:.8rem;z-index:500;cursor:pointer;margin:0;color:rgba(var(--vs-primary),1);-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-box-shadow:0 0 0 0 rgba(0,0,0,.05);box-shadow:0 0 0 0 rgba(0,0,0,.05);background:rgba(0,0,0,.03);bottom:0;width:100%}.vs-upload--button-upload:disabled{opacity:.4;pointer-events:none}.vs-upload--button-upload:hover{padding-bottom:10px;padding-top:10px;background:rgba(var(--vs-primary),1);color:#fff}.con-img-upload{width:100%;background:#fff;margin-top:5px;padding-right:5px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-column-gap:5px;-moz-column-gap:5px;column-gap:5px}.con-img-upload,.con-img-upload .img-upload{position:relative;border-radius:10px;overflow:hidden}.con-img-upload .img-upload{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:rgba(0,80,0,.5);background:#fff;-webkit-box-shadow:0 5px 20px 0 rgba(0,0,0,.1);box-shadow:0 5px 20px 0 rgba(0,0,0,.1);-webkit-transition:all .3s ease;transition:all .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:200px;height:200px;margin:5px;cursor:pointer}.vuesax-app-is-rtl .con-img-upload .img-upload{float:right}.vuesax-app-is-ltr .con-img-upload .img-upload{float:left}.con-img-upload .img-upload.fileError{border:1px solid rgba(var(--vs-danger),1);-webkit-box-shadow:0 5px 20px 0 rgba(var(--vs-danger),1);box-shadow:0 5px 20px 0 rgba(var(--vs-danger),1)}.con-img-upload .img-upload.fileError .btn-upload-file{background:rgba(var(--vs-danger),.3)!important}.con-img-upload .img-upload.fileError .btn-upload-file i{background:rgba(var(--vs-danger),1)!important}.con-img-upload .img-upload.removeItem{-webkit-transition:all .3s ease,height .2s ease .2s;transition:all .3s ease,height .2s ease .2s;opacity:0!important;width:0!important;visibility:hidden;margin:0!important;height:0!important}.con-img-upload .img-upload img{-webkit-transition:all .3s ease;transition:all .3s ease}.con-img-upload .img-upload:hover{-webkit-transform:scale(.99);transform:scale(.99);-webkit-box-shadow:0 0 0 0 rgba(0,0,0,.1);box-shadow:0 0 0 0 rgba(0,0,0,.1)}.con-img-upload .img-upload:hover .btn-x-file{opacity:1;-webkit-transform:translate(0);transform:translate(0)}.con-img-upload .img-upload:hover .btn-upload-file{opacity:1;-webkit-transform:translate(-50%,65%);transform:translate(-50%,65%)}.con-img-upload .img-upload .btn-x-file{display:block;position:absolute;top:5px;padding:0;margin:0;-webkit-transform:translate(20%,-20%);transform:translate(20%,-20%);background:transparent;z-index:300;opacity:0;border:0;cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease;border-radius:10px}.vuesax-app-is-rtl .con-img-upload .img-upload .btn-x-file{left:5px}.vuesax-app-is-ltr .con-img-upload .img-upload .btn-x-file{right:5px}.con-img-upload .img-upload .btn-x-file i{-webkit-transition:all .2s ease;transition:all .2s ease;position:relative;padding:4px;font-size:1.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:5px;background:rgba(0,0,0,.1);color:#fff;text-shadow:0 3px 10px rgba(0,0,0,.5)}.con-img-upload .img-upload .btn-x-file:hover i{border-radius:50%;background:rgba(var(--vs-danger),1)}.con-img-upload .img-upload .btn-x-file:hover~.btn-upload-file:not(.on-progress){background:radial-gradient(ellipse at center,rgba(var(--vs-danger),1) 0,transparent 70%);height:300px}.con-img-upload .img-upload .btn-x-file:hover~.btn-upload-file:not(.on-progress):after{border:1px solid rgba(var(--vs-danger),1)}.con-img-upload .img-upload .btn-x-file:hover~.btn-upload-file:not(.on-progress) i{opacity:0}.con-img-upload .img-upload .btn-x-file:hover~.on-progress{background:rgba(var(--vs-danger),.2)}.con-img-upload .img-upload .btn-x-file:hover~.on-progress i{opacity:0}.con-img-upload .img-upload .btn-x-file:hover~img{-webkit-filter:grayscale(80%);filter:grayscale(80%)}.con-img-upload .img-upload .text-archive{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;text-align:center;padding:5px}.con-img-upload .img-upload .text-archive i{position:absolute;font-size:7rem;opacity:.05}.con-img-upload .img-upload .text-archive span{position:relative;padding:5px}.con-img-upload .img-upload .btn-upload-file{margin:0;opacity:0;position:absolute;bottom:0;left:50%;z-index:200;border-radius:50%;width:300px;height:200px;-webkit-transform:translate(-50%,80%);transform:translate(-50%,80%);border:0;background:radial-gradient(ellipse at center,rgba(var(--vs-success),1) 0,transparent 70%);cursor:pointer;-webkit-transition:all .3s ease;transition:all .3s ease;-webkit-animation:imageRebound .7s ease!important;animation:imageRebound .7s ease!important}.con-img-upload .img-upload .btn-upload-file:after{content:\\\"\\\";width:200px;height:200px;position:absolute;z-index:100;display:block;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);top:50%;border-radius:50%;border:1px solid rgba(var(--vs-success),1);-webkit-animation:circle 1.5s ease infinite;animation:circle 1.5s ease infinite}.con-img-upload .img-upload .btn-upload-file:not(.on-progress):hover{width:200px;height:200px;-webkit-transform:translate(-50%,70%);transform:translate(-50%,70%)}.con-img-upload .img-upload .btn-upload-file:not(.on-progress):hover i{font-size:1.4rem;background:rgba(var(--vs-success),1);top:6%;padding:10px}.con-img-upload .img-upload .btn-upload-file i{z-index:50;border-radius:50%;-webkit-transition:all .2s ease;transition:all .2s ease;position:absolute;left:50%;top:12%;-webkit-transform:translate(-50%);transform:translate(-50%);color:#fff;text-shadow:0 3px 10px rgba(0,0,0,.5);padding:20px;-webkit-backface-visibility:visible;backface-visibility:visible}.con-img-upload .img-upload .btn-upload-file span{opacity:0;z-index:300}.con-img-upload .img-upload .btn-upload-file.on-progress{width:100%;height:20px;background:rgba(var(--vs-success),1);border-top:1px solid rgba(var(--vs-success),1);bottom:0;-webkit-transform:translate(0);transform:translate(0);left:0;opacity:1!important;overflow:hidden;border-radius:0;pointer-events:none}.con-img-upload .img-upload .btn-upload-file.on-progress i{opacity:.2;background:rgba(var(--vs-success),1);-webkit-box-shadow:0 5px 17px 0 rgba(0,0,0,.15);box-shadow:0 5px 17px 0 rgba(0,0,0,.15);top:50%;-webkit-transform:translate(-50%,-50%) scale(1.2);transform:translate(-50%,-50%) scale(1.2);padding:20px}.con-img-upload .img-upload .btn-upload-file.on-progress span{-webkit-transition:all .5s ease;transition:all .5s ease;opacity:1;color:#fff;font-size:1rem;position:absolute;top:calc(50% + 40px);left:0;text-align:center;width:100%;text-shadow:0 3px 15px rgba(var(--vs-success),1);font-weight:700;z-index:300;display:block;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.con-img-upload .img-upload .btn-upload-file.ready-progress{border-top:0 solid rgba(var(--vs-success),1);background:rgba(var(--vs-success),.5)}.con-img-upload .img-upload .btn-upload-file.ready-progress span{z-index:10;-webkit-transform:translateY(-50%) scale(.5);transform:translateY(-50%) scale(.5);top:calc(50% + 20px);opacity:0}.con-img-upload .img-upload .btn-upload-file.ready-progress:after{opacity:0}.con-img-upload .img-upload .btn-upload-file.ready-progress i{opacity:1;background:rgba(var(--vs-success),1);-webkit-box-shadow:0 5px 17px 0 rgba(0,0,0,.15);box-shadow:0 5px 17px 0 rgba(0,0,0,.15);top:50%;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1);padding:10px}.upload-enter-active{-webkit-transition:all .7s ease!important;transition:all .7s ease!important;-webkit-animation:imageRebound .7s ease!important;animation:imageRebound .7s ease!important}.view-upload-enter-active,.view-upload-leave-active{-webkit-transition:opacity .5s;transition:opacity .5s}.view-upload-enter,.view-upload-leave-to{opacity:0}.view-upload-enter img,.view-upload-leave-to img{-webkit-transform:scale(.4);transform:scale(.4)}.view-upload{position:fixed;left:0;z-index:15000;width:100%;height:100%;background:rgba(0,0,0,.3);top:0;padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.view-upload img{-webkit-transition:all .3s ease;transition:all .3s ease;border-radius:10px;position:relative;display:block;left:0;top:0;right:0;bottom:0;max-width:100%;max-height:100%;margin:auto;-webkit-animation:imageRebound .7s ease!important;animation:imageRebound .7s ease!important;-webkit-box-shadow:0 8px 30px 0 rgba(0,0,0,.25);box-shadow:0 8px 30px 0 rgba(0,0,0,.25);background:#fff}@-webkit-keyframes imageRebound{0%{-webkit-transform:scale(.4);transform:scale(.4);border-radius:30%;pointer-events:none}40%{-webkit-transform:scale(1.03);transform:scale(1.03);border-radius:14px;pointer-events:none}70%{-webkit-transform:scale(.98);transform:scale(.98);border-radius:18px;pointer-events:none}to{-webkit-transform:scale(1);transform:scale(1);border-radius:10px;pointer-events:none}}@keyframes imageRebound{0%{-webkit-transform:scale(.4);transform:scale(.4);border-radius:30%;pointer-events:none}40%{-webkit-transform:scale(1.03);transform:scale(1.03);border-radius:14px;pointer-events:none}70%{-webkit-transform:scale(.98);transform:scale(.98);border-radius:18px;pointer-events:none}to{-webkit-transform:scale(1);transform:scale(1);border-radius:10px;pointer-events:none}}@-webkit-keyframes circle{0%{width:0;height:0}to{width:230px;height:230px;opacity:0}}@keyframes circle{0%{width:0;height:0}to{width:230px;height:230px;opacity:0}}\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWVzYXgvZGlzdC92dWVzYXguY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXNheC9kaXN0L3Z1ZXNheC5jc3M/ZDM2MCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnZzLXJvd3tjbGVhcjpib3RoOy1tcy1mbGV4LWZsb3c6d3JhcDtmbGV4LWZsb3c6d3JhcH0udnMtY29se2Zsb2F0OmxlZnR9LnZzLWxnLTEye3dpZHRoOjEwMCUhaW1wb3J0YW50fS52cy1sZy0xMXt3aWR0aDo5MS42NjY2NjY2NjY2NjY2NyUhaW1wb3J0YW50fS52cy1sZy0xMHt3aWR0aDo4My4zMzMzMzMzMzMzMzMzMyUhaW1wb3J0YW50fS52cy1sZy05e3dpZHRoOjc1JSFpbXBvcnRhbnR9LnZzLWxnLTh7d2lkdGg6NjYuNjY2NjY2NjY2NjY2NjclIWltcG9ydGFudH0udnMtbGctN3t3aWR0aDo1OC4zMzMzMzMzMzMzMzMzMyUhaW1wb3J0YW50fS52cy1sZy02e3dpZHRoOjUwJSFpbXBvcnRhbnR9LnZzLWxnLTV7d2lkdGg6NDEuNjY2NjY2NjY2NjY2NjclIWltcG9ydGFudH0udnMtbGctNHt3aWR0aDozMy4zMzMzMzMzMzMzMzMzMyUhaW1wb3J0YW50fS52cy1sZy0ze3dpZHRoOjI1JSFpbXBvcnRhbnR9LnZzLWxnLTJ7d2lkdGg6MTYuNjY2NjY2NjY2NjY2NjclIWltcG9ydGFudH0udnMtbGctMXt3aWR0aDo4LjMzMzMzMzMzMzMzMzMzMiUhaW1wb3J0YW50fS52cy1sZy0we2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjkwMHB4KXsudnMtc20tMTJ7d2lkdGg6MTAwJSFpbXBvcnRhbnR9LnZzLXNtLTExe3dpZHRoOjkxLjY2NjY2NjY2NjY2NjY3JSFpbXBvcnRhbnR9LnZzLXNtLTEwe3dpZHRoOjgzLjMzMzMzMzMzMzMzMzMzJSFpbXBvcnRhbnR9LnZzLXNtLTl7d2lkdGg6NzUlIWltcG9ydGFudH0udnMtc20tOHt3aWR0aDo2Ni42NjY2NjY2NjY2NjY2NyUhaW1wb3J0YW50fS52cy1zbS03e3dpZHRoOjU4LjMzMzMzMzMzMzMzMzMzJSFpbXBvcnRhbnR9LnZzLXNtLTZ7d2lkdGg6NTAlIWltcG9ydGFudH0udnMtc20tNXt3aWR0aDo0MS42NjY2NjY2NjY2NjY2NyUhaW1wb3J0YW50fS52cy1zbS00e3dpZHRoOjMzLjMzMzMzMzMzMzMzMzMzJSFpbXBvcnRhbnR9LnZzLXNtLTN7d2lkdGg6MjUlIWltcG9ydGFudH0udnMtc20tMnt3aWR0aDoxNi42NjY2NjY2NjY2NjY2NyUhaW1wb3J0YW50fS52cy1zbS0xe3dpZHRoOjguMzMzMzMzMzMzMzMzMzMyJSFpbXBvcnRhbnR9LnZzLXNtLTB7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjYwMHB4KXsudnMteHMtMTJ7d2lkdGg6MTAwJSFpbXBvcnRhbnR9LnZzLXhzLTExe3dpZHRoOjkxLjY2NjY2NjY2NjY2NjY3JSFpbXBvcnRhbnR9LnZzLXhzLTEwe3dpZHRoOjgzLjMzMzMzMzMzMzMzMzMzJSFpbXBvcnRhbnR9LnZzLXhzLTl7d2lkdGg6NzUlIWltcG9ydGFudH0udnMteHMtOHt3aWR0aDo2Ni42NjY2NjY2NjY2NjY2NyUhaW1wb3J0YW50fS52cy14cy03e3dpZHRoOjU4LjMzMzMzMzMzMzMzMzMzJSFpbXBvcnRhbnR9LnZzLXhzLTZ7d2lkdGg6NTAlIWltcG9ydGFudH0udnMteHMtNXt3aWR0aDo0MS42NjY2NjY2NjY2NjY2NyUhaW1wb3J0YW50fS52cy14cy00e3dpZHRoOjMzLjMzMzMzMzMzMzMzMzMzJSFpbXBvcnRhbnR9LnZzLXhzLTN7d2lkdGg6MjUlIWltcG9ydGFudH0udnMteHMtMnt3aWR0aDoxNi42NjY2NjY2NjY2NjY2NyUhaW1wb3J0YW50fS52cy14cy0xe3dpZHRoOjguMzMzMzMzMzMzMzMzMzMyJSFpbXBvcnRhbnR9LnZzLXhzLTB7ZGlzcGxheTpub25lIWltcG9ydGFudH19KnttYXJnaW46MDtwYWRkaW5nOjA7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O291dGxpbmU6bm9uZTt0ZXh0LXRyYW5zZm9ybTpub25lO3RleHQtZGVjb3JhdGlvbjpub25lfS52dWVzYXgtYXBwLWlzLXJ0bHtkaXJlY3Rpb246cnRsfS52dWVzYXgtYXBwLWlzLWx0cntkaXJlY3Rpb246bHRyfTpyb290ey0tdnMtcHJpbWFyeTozMSwxMTYsMjU1Oy0tdnMtZGFuZ2VyOjI1NSw3MSw4NzstLXZzLXN1Y2Nlc3M6NzAsMjAxLDU4Oy0tdnMtZGFyazozMCwzMCwzMDstLXZzLXdhcm5pbmc6MjU1LDE4NiwwOy0tdnMtbGlnaHQ6MjQ1LDI0NSwyNDV9LmNvbi12cy1hbGVydHtib3JkZXItcmFkaXVzOjZweDtjb2xvcjojZmZmO3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOi44cmVtO2N1cnNvcjpkZWZhdWx0Oy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZTtvdmVyZmxvdzpoaWRkZW59Lmljb24tYWxlcnR7aGVpZ2h0OjEwMCU7cG9zaXRpb246YWJzb2x1dGU7cGFkZGluZzoxMHB4O3RvcDowO2ZvbnQtc2l6ZToxLjFyZW07ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0udnVlc2F4LWFwcC1pcy1ydGwgLmljb24tYWxlcnR7cmlnaHQ6MH0udnVlc2F4LWFwcC1pcy1sdHIgLmljb24tYWxlcnR7bGVmdDowfS52cy1hbGVydHtwYWRkaW5nOjEwcHg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtYWxlcnQuY29uLWljb257cGFkZGluZy1yaWdodDo0MHB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtYWxlcnQuY29uLWljb257cGFkZGluZy1sZWZ0OjQwcHh9LnZzLWFsZXJ0LS10aXRsZXtmb250LXNpemU6LjlyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6OHB4IDEwcHh9LnZzLWFsZXJ0LS1jbG9zZXtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tdG9wOjRweDtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjRweDtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nLWJvdHRvbToxcHg7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWFsZXJ0LS1jbG9zZXttYXJnaW4tbGVmdDo0cHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1hbGVydC0tY2xvc2V7bWFyZ2luLXJpZ2h0OjRweH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWFsZXJ0LS1jbG9zZXtmbG9hdDpsZWZ0fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtYWxlcnQtLWNsb3Nle2Zsb2F0OnJpZ2h0fS52cy1hbGVydC0tY2xvc2U6aG92ZXJ7LXdlYmtpdC1ib3gtc2hhZG93OjAgNXB4IDE1cHggMCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93OjAgNXB4IDE1cHggMCByZ2JhKDAsMCwwLC4xKX0uY29uLXZzLWFsZXJ0LXByaW1hcnl7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLC4xNSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAyNXB4IDAgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuMTUpO2JveC1zaGFkb3c6MCAwIDI1cHggMCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLC4xNSk7Y29sb3I6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKX0uY29uLXZzLWFsZXJ0LXByaW1hcnkgaDR7LXdlYmtpdC1ib3gtc2hhZG93OjAgNnB4IDE1cHggLTdweCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLC40KTtib3gtc2hhZG93OjAgNnB4IDE1cHggLTdweCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLC40KX0uY29uLXZzLWFsZXJ0LXByaW1hcnkgLmNvbi14e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKTtjb2xvcjojZmZmfS5jb24tdnMtYWxlcnQtc2Vjb25kYXJ5e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC4xNSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAyNXB4IDAgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC4xNSk7Ym94LXNoYWRvdzowIDAgMjVweCAwIHJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuMTUpO2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0uY29uLXZzLWFsZXJ0LXNlY29uZGFyeSBoNHstd2Via2l0LWJveC1zaGFkb3c6MCA2cHggMTVweCAtN3B4IHJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuNCk7Ym94LXNoYWRvdzowIDZweCAxNXB4IC03cHggcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC40KX0uY29uLXZzLWFsZXJ0LXNlY29uZGFyeSAuY29uLXh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSk7Y29sb3I6I2ZmZn0uY29uLXZzLWFsZXJ0LWRhbmdlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuMTUpOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMjVweCAwIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuMTUpO2JveC1zaGFkb3c6MCAwIDI1cHggMCByZ2JhKHZhcigtLXZzLWRhbmdlciksLjE1KTtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LmNvbi12cy1hbGVydC1kYW5nZXIgaDR7LXdlYmtpdC1ib3gtc2hhZG93OjAgNnB4IDE1cHggLTdweCByZ2JhKHZhcigtLXZzLWRhbmdlciksLjQpO2JveC1zaGFkb3c6MCA2cHggMTVweCAtN3B4IHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuNCl9LmNvbi12cy1hbGVydC1kYW5nZXIgLmNvbi14e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpO2NvbG9yOiNmZmZ9LmNvbi12cy1hbGVydC1zdWNjZXNze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuMTUpOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMjVweCAwIHJnYmEodmFyKC0tdnMtc3VjY2VzcyksLjE1KTtib3gtc2hhZG93OjAgMCAyNXB4IDAgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuMTUpO2NvbG9yOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSl9LmNvbi12cy1hbGVydC1zdWNjZXNzIGg0ey13ZWJraXQtYm94LXNoYWRvdzowIDZweCAxNXB4IC03cHggcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuNCk7Ym94LXNoYWRvdzowIDZweCAxNXB4IC03cHggcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuNCl9LmNvbi12cy1hbGVydC1zdWNjZXNzIC5jb24teHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSk7Y29sb3I6I2ZmZn0uY29uLXZzLWFsZXJ0LXdhcm5pbmd7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLC4xNSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAyNXB4IDAgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwuMTUpO2JveC1zaGFkb3c6MCAwIDI1cHggMCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLC4xNSk7Y29sb3I6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0uY29uLXZzLWFsZXJ0LXdhcm5pbmcgaDR7LXdlYmtpdC1ib3gtc2hhZG93OjAgNnB4IDE1cHggLTdweCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLC40KTtib3gtc2hhZG93OjAgNnB4IDE1cHggLTdweCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLC40KX0uY29uLXZzLWFsZXJ0LXdhcm5pbmcgLmNvbi14e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKTtjb2xvcjojZmZmfS5jb24tdnMtYWxlcnQtZGFya3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksLjE1KTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDI1cHggMCByZ2JhKHZhcigtLXZzLWRhcmspLC4xNSk7Ym94LXNoYWRvdzowIDAgMjVweCAwIHJnYmEodmFyKC0tdnMtZGFyayksLjE1KTtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS5jb24tdnMtYWxlcnQtZGFyayBoNHstd2Via2l0LWJveC1zaGFkb3c6MCA2cHggMTVweCAtN3B4IHJnYmEodmFyKC0tdnMtZGFyayksLjQpO2JveC1zaGFkb3c6MCA2cHggMTVweCAtN3B4IHJnYmEodmFyKC0tdnMtZGFyayksLjQpfS5jb24tdnMtYWxlcnQtZGFyayAuY29uLXh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhcmspLDEpO2NvbG9yOiNmZmZ9LmNvbi12cy1hbGVydC1saWdodHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLC4xNSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAyNXB4IDAgcmdiYSh2YXIoLS12cy1saWdodCksLjE1KTtib3gtc2hhZG93OjAgMCAyNXB4IDAgcmdiYSh2YXIoLS12cy1saWdodCksLjE1KTtjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0uY29uLXZzLWFsZXJ0LWxpZ2h0IGg0ey13ZWJraXQtYm94LXNoYWRvdzowIDZweCAxNXB4IC03cHggcmdiYSh2YXIoLS12cy1saWdodCksLjQpO2JveC1zaGFkb3c6MCA2cHggMTVweCAtN3B4IHJnYmEodmFyKC0tdnMtbGlnaHQpLC40KX0uY29uLXZzLWFsZXJ0LWxpZ2h0IC5jb24teHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpO2NvbG9yOiNmZmZ9LmNvbi12cy1hdmF0YXJ7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtib3JkZXItcmFkaXVzOjUwJTtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46NXB4fS5jb24tdnMtYXZhdGFyLmxhcmdle3dpZHRoOjUwcHg7aGVpZ2h0OjUwcHh9LmNvbi12cy1hdmF0YXIuc21hbGx7d2lkdGg6MjRweDtoZWlnaHQ6MjRweH0uY29uLXZzLWF2YXRhci5zbWFsbCAudnMtYXZhdGFyLXRleHR7Zm9udC1zaXplOi45Mzc1ZW19LnZzLWF2YXRhci0tY291bnR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjFweDtyaWdodDoxcHg7d2lkdGg6N3B4O2hlaWdodDo3cHg7Ym9yZGVyLXJhZGl1czo1MCU7ei1pbmRleDoxMDB9LnZzLWF2YXRhci0tY291bnQuYmFkZ2VOdW1iZXJ7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bzt0b3A6LTNweDtyaWdodDowO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmctbGVmdDozcHg7cGFkZGluZy1yaWdodDozcHg7Zm9udC1zaXplOi42MjVlbTtjb2xvcjojZmZmfS52cy1hdmF0YXItLXRleHR7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dG9wOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSl9LnZzLWF2YXRhci0tY29uLWltZ3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjUwJX0udnMtYXZhdGFyLS1jb24taW1nIGltZ3t3aWR0aDoxMDAlfS5jb24tdnMtYXZhdGFyLXByaW1hcnl7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1hdmF0YXItdGV4dC1wcmltYXJ5e2NvbG9yOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LmNvbi12cy1hdmF0YXItc2Vjb25kYXJ5e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy1hdmF0YXItdGV4dC1zZWNvbmRhcnl7Y29sb3I6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS5jb24tdnMtYXZhdGFyLWRhbmdlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnMtYXZhdGFyLXRleHQtZGFuZ2Vye2NvbG9yOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0uY29uLXZzLWF2YXRhci1zdWNjZXNze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtYXZhdGFyLXRleHQtc3VjY2Vzc3tjb2xvcjpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS5jb24tdnMtYXZhdGFyLXdhcm5pbmd7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1hdmF0YXItdGV4dC13YXJuaW5ne2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LmNvbi12cy1hdmF0YXItZGFya3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWF2YXRhci10ZXh0LWRhcmt7Y29sb3I6cmdiYSh2YXIoLS12cy1kYXJrKSwxKX0uY29uLXZzLWF2YXRhci1saWdodHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfS52cy1hdmF0YXItdGV4dC1saWdodHtjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0udnMtYnJlYWRjcnVtYntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS52cy1icmVhZGNydW1iLnZzLWFsaWduLWxlZnR7LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS52cy1icmVhZGNydW1iLnZzLWFsaWduLWNlbnRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52cy1icmVhZGNydW1iLnZzLWFsaWduLXJpZ2h0ey13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0udnMtYnJlYWRjcnVtYiAuZGlzYWJsZWQtbGlua3tvcGFjaXR5Oi41O3BvaW50ZXItZXZlbnRzOm5vbmV9LnZzLWJyZWFkY3J1bWItLW9se2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LW1zLWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwO3BhZGRpbmc6Ljc1cmVtIDFyZW07bGlzdC1zdHlsZS10eXBlOm5vbmV9LnZzLWJyZWFkY3J1bWItLW9sIGxpLnZzLWFjdGl2ZXtjdXJzb3I6ZGVmYXVsdH0udnMtYnJlYWRjcnVtYi0tb2wgYXstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO2NvbG9yOnJnYmEoMCwwLDAsLjQpfS52cy1icmVhZGNydW1iLS1vbCBhOmZvY3VzLC52cy1icmVhZGNydW1iLS1vbCBhOmhvdmVye2NvbG9yOnJnYmEoMCwwLDAsLjcpO3RleHQtZGVjb3JhdGlvbjpub25lfS52cy1icmVhZGNydW0tLXNlcGFyYXRvcntjb2xvcjpyZ2JhKDAsMCwwLC40KTtwYWRkaW5nOjAgLjVyZW0gMCAuNXJlbX0udnMtYnJlYWRjcnVtLS1zZXBhcmF0b3IubWF0ZXJpYWwtaWNvbnN7dmVydGljYWwtYWxpZ246bWlkZGxlO2ZvbnQtc2l6ZTppbmhlcml0fS52cy1icmVhZGNydW1iLXRleHQtcHJpbWFyeXtjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1icmVhZGNydW1iLXRleHQtc2Vjb25kYXJ5e2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0udnMtYnJlYWRjcnVtYi10ZXh0LWRhbmdlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWJyZWFkY3J1bWItdGV4dC1zdWNjZXNze2NvbG9yOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSl9LnZzLWJyZWFkY3J1bWItdGV4dC13YXJuaW5ne2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LnZzLWJyZWFkY3J1bWItdGV4dC1kYXJre2NvbG9yOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWJyZWFkY3J1bWItdGV4dC1saWdodHtjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0udnMtYnV0dG9uey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7cGFkZGluZzoxMHB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6NnB4O2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtjb2xvcjojZmZmOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS52cy1idXR0b24udnMtcmFkaXVze2JvcmRlci1yYWRpdXM6NTAlfS52cy1idXR0b24ubGFyZ2V7cGFkZGluZzoxMnB4O2ZvbnQtc2l6ZToxZW19LnZzLWJ1dHRvbi5zbWFsbHtwYWRkaW5nOjdweDtmb250LXNpemU6LjdlbX0udnMtYnV0dG9uOmRpc2FibGVke29wYWNpdHk6LjU7Y3Vyc29yOmRlZmF1bHQ7cG9pbnRlci1ldmVudHM6bm9uZX0udnMtYnV0dG9uLS1pY29ue3otaW5kZXg6MTAwO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjEuMTI1ZW07LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZX0udnMtYnV0dG9uLS1iYWNrZ3JvdW5ke2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjEwcHg7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjEwcHg7ei1pbmRleDowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAwIDYwcHggMCBoc2xhKDAsMCUsMTAwJSwuNSk7Ym94LXNoYWRvdzppbnNldCAwIDAgNjBweCAwIGhzbGEoMCwwJSwxMDAlLC41KX0udnMtYnV0dG9uLS10ZXh0e3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOmluaGVyaXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlfS52cy1idXR0b24tYm9yZGVye3BhZGRpbmc6OXB4fS52cy1idXR0b24tYm9yZGVyLmlzQWN0aXZlIC52cy1idXR0b24tLWljb24sLnZzLWJ1dHRvbi1ib3JkZXIuaXNBY3RpdmUgLnZzLWJ1dHRvbi0tdGV4dCwudnMtYnV0dG9uLWZsYXQuaXNBY3RpdmUgLnZzLWJ1dHRvbi0taWNvbiwudnMtYnV0dG9uLWZsYXQuaXNBY3RpdmUgLnZzLWJ1dHRvbi0tdGV4dHtjb2xvcjojZmZmIWltcG9ydGFudH0udnMtYnV0dG9uLWZpbGxlZDpob3Zlcnstd2Via2l0LWJveC1zaGFkb3c6MCA5cHggMjhweCAtOXB4O2JveC1zaGFkb3c6MCA5cHggMjhweCAtOXB4fS52cy1idXR0b24tbGluZXtwYWRkaW5nOjlweCAxMHB4O2JvcmRlci1yYWRpdXM6MDtvdmVyZmxvdzp2aXNpYmxlO2JvcmRlci1zdHlsZTpzb2xpZH0udnMtYnV0dG9uLWxpbmUgLnZzLWJ1dHRvbi1saW5leHstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO3dpZHRoOjA7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTotMnB4O2hlaWdodDoycHh9LnZzLWJ1dHRvbi1saW5lOmhvdmVyIC52cy1idXR0b24tLWljb24sLnZzLWJ1dHRvbi1saW5lOmhvdmVyIC52cy1idXR0b24tLXRleHR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgycHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDJweCl9LnZzLWJ1dHRvbi1saW5lOmhvdmVyIC52cy1idXR0b24tbGluZXh7d2lkdGg6MTAwJSFpbXBvcnRhbnR9LnZzLWJ1dHRvbi1ncmFkaWVudDpob3Zlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOy13ZWJraXQtYm94LXNoYWRvdzowIDhweCAyNXB4IC04cHggI2FhYTtib3gtc2hhZG93OjAgOHB4IDI1cHggLThweCAjYWFhfS52cy1idXR0b24tZ3JhZGllbnQ6YWN0aXZley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApOy13ZWJraXQtYm94LXNoYWRvdzowIDhweCAwIC04cHggI2FhYTtib3gtc2hhZG93OjAgOHB4IDAgLThweCAjYWFhfS52cy1idXR0b24tcmVsaWVme3BhZGRpbmc6MTBweH0udnMtYnV0dG9uLXJlbGllZjphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgzcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDNweCk7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnR9LmluY2x1ZGVJY29ue2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0udnVlc2F4LWFwcC1pcy1ydGwgLmluY2x1ZGVJY29ue2Zsb2F0OnJpZ2h0fS52dWVzYXgtYXBwLWlzLWx0ciAuaW5jbHVkZUljb257ZmxvYXQ6bGVmdH0uaW5jbHVkZUljb25Pbmx5e3dpZHRoOjM4cHghaW1wb3J0YW50O2hlaWdodDozOHB4IWltcG9ydGFudH0uaW5jbHVkZUljb25Pbmx5Lmxhcmdle3dpZHRoOjQ0cHghaW1wb3J0YW50O2hlaWdodDo0NHB4IWltcG9ydGFudDtmb250LXNpemU6LjdlbX0uaW5jbHVkZUljb25Pbmx5LnNtYWxse3dpZHRoOjI4cHghaW1wb3J0YW50O2hlaWdodDoyOHB4IWltcG9ydGFudH0uaW5jbHVkZUljb25Pbmx5LnNtYWxsIC52cy1pY29ue2ZvbnQtc2l6ZTouODVyZW19LnZzLWJ1dHRvbi1wcmltYXJ5LnZzLWJ1dHRvbi1maWxsZWR7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpIWltcG9ydGFudH0udnMtYnV0dG9uLXByaW1hcnkudnMtYnV0dG9uLWZpbGxlZDpob3Zlcnstd2Via2l0LWJveC1zaGFkb3c6MCA4cHggMjVweCAtOHB4IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSk7Ym94LXNoYWRvdzowIDhweCAyNXB4IC04cHggcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKX0udnMtYnV0dG9uLXByaW1hcnkudnMtYnV0dG9uLWJvcmRlciwudnMtYnV0dG9uLXByaW1hcnkudnMtYnV0dG9uLWZsYXR7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2NvbG9yOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLWJ1dHRvbi1wcmltYXJ5LnZzLWJ1dHRvbi1ib3JkZXIgLnZzLWJ1dHRvbi0tdGV4dC5pc0FjdGl2ZSwudnMtYnV0dG9uLXByaW1hcnkudnMtYnV0dG9uLWZsYXQgLnZzLWJ1dHRvbi0tdGV4dC5pc0FjdGl2ZXtjb2xvcjojZmZmIWltcG9ydGFudH0udnMtYnV0dG9uLXByaW1hcnkudnMtYnV0dG9uLWJvcmRlcjpob3ZlciwudnMtYnV0dG9uLXByaW1hcnkudnMtYnV0dG9uLWZsYXQ6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLC4wOCkhaW1wb3J0YW50fS52cy1idXR0b24tcHJpbWFyeS52cy1idXR0b24tYm9yZGVyIC52cy1idXR0b24tYmFja2dyb3VuZHgsLnZzLWJ1dHRvbi1wcmltYXJ5LnZzLWJ1dHRvbi1mbGF0IC52cy1idXR0b24tYmFja2dyb3VuZHh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgNjBweCAwIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSk7Ym94LXNoYWRvdzppbnNldCAwIDAgNjBweCAwIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLWJ1dHRvbi1wcmltYXJ5LnZzLWJ1dHRvbi1mbGF0e2JvcmRlcjpub25lIWltcG9ydGFudH0udnMtYnV0dG9uLXByaW1hcnkudnMtYnV0dG9uLWxpbmV7Y29sb3I6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKTtib3JkZXItY29sb3I6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuMil9LnZzLWJ1dHRvbi1wcmltYXJ5LnZzLWJ1dHRvbi1saW5lIC52cy1idXR0b24tbGluZXh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1idXR0b24tcHJpbWFyeS52cy1idXR0b24tZ3JhZGllbnR7YmFja2dyb3VuZDojNjQwMDY0O2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDMwZGVnLHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSkscmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuNSkpIWltcG9ydGFudDt0ZXh0LXNoYWRvdzoxcHggMnB4IDRweCByZ2JhKDAsMCwwLC4zKX0udnMtYnV0dG9uLXByaW1hcnkudnMtYnV0dG9uLXJlbGllZntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgLTNweCAwIDAgcmdiYSgwLDAsMCwuMikgaW5zZXQ7Ym94LXNoYWRvdzppbnNldCAwIC0zcHggMCAwIHJnYmEoMCwwLDAsLjIpfS52cy1idXR0b24tc2Vjb25kYXJ5LnZzLWJ1dHRvbi1maWxsZWR7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSkhaW1wb3J0YW50fS52cy1idXR0b24tc2Vjb25kYXJ5LnZzLWJ1dHRvbi1maWxsZWQ6aG92ZXJ7LXdlYmtpdC1ib3gtc2hhZG93OjAgOHB4IDI1cHggLThweCByZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSk7Ym94LXNoYWRvdzowIDhweCAyNXB4IC04cHggcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy1idXR0b24tc2Vjb25kYXJ5LnZzLWJ1dHRvbi1ib3JkZXIsLnZzLWJ1dHRvbi1zZWNvbmRhcnkudnMtYnV0dG9uLWZsYXR7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSk7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Y29sb3I6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy1idXR0b24tc2Vjb25kYXJ5LnZzLWJ1dHRvbi1ib3JkZXIgLnZzLWJ1dHRvbi0tdGV4dC5pc0FjdGl2ZSwudnMtYnV0dG9uLXNlY29uZGFyeS52cy1idXR0b24tZmxhdCAudnMtYnV0dG9uLS10ZXh0LmlzQWN0aXZle2NvbG9yOiNmZmYhaW1wb3J0YW50fS52cy1idXR0b24tc2Vjb25kYXJ5LnZzLWJ1dHRvbi1ib3JkZXI6aG92ZXIsLnZzLWJ1dHRvbi1zZWNvbmRhcnkudnMtYnV0dG9uLWZsYXQ6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksLjA4KSFpbXBvcnRhbnR9LnZzLWJ1dHRvbi1zZWNvbmRhcnkudnMtYnV0dG9uLWJvcmRlciAudnMtYnV0dG9uLWJhY2tncm91bmR4LC52cy1idXR0b24tc2Vjb25kYXJ5LnZzLWJ1dHRvbi1mbGF0IC52cy1idXR0b24tYmFja2dyb3VuZHh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCA2MHB4IDAgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDYwcHggMCByZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLWJ1dHRvbi1zZWNvbmRhcnkudnMtYnV0dG9uLWZsYXR7Ym9yZGVyOm5vbmUhaW1wb3J0YW50fS52cy1idXR0b24tc2Vjb25kYXJ5LnZzLWJ1dHRvbi1saW5le2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKTtib3JkZXItY29sb3I6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC4yKX0udnMtYnV0dG9uLXNlY29uZGFyeS52cy1idXR0b24tbGluZSAudnMtYnV0dG9uLWxpbmV4e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy1idXR0b24tc2Vjb25kYXJ5LnZzLWJ1dHRvbi1ncmFkaWVudHtiYWNrZ3JvdW5kOiM2NDAwNjQ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMzBkZWcscmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpLHJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuNSkpIWltcG9ydGFudDt0ZXh0LXNoYWRvdzoxcHggMnB4IDRweCByZ2JhKDAsMCwwLC4zKX0udnMtYnV0dG9uLXNlY29uZGFyeS52cy1idXR0b24tcmVsaWVme2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIC0zcHggMCAwIHJnYmEoMCwwLDAsLjIpIGluc2V0O2JveC1zaGFkb3c6aW5zZXQgMCAtM3B4IDAgMCByZ2JhKDAsMCwwLC4yKX0udnMtYnV0dG9uLWRhbmdlci52cy1idXR0b24tZmlsbGVke2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpIWltcG9ydGFudH0udnMtYnV0dG9uLWRhbmdlci52cy1idXR0b24tZmlsbGVkOmhvdmVyey13ZWJraXQtYm94LXNoYWRvdzowIDhweCAyNXB4IC04cHggcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpO2JveC1zaGFkb3c6MCA4cHggMjVweCAtOHB4IHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnMtYnV0dG9uLWRhbmdlci52cy1idXR0b24tYm9yZGVyLC52cy1idXR0b24tZGFuZ2VyLnZzLWJ1dHRvbi1mbGF0e2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2NvbG9yOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnMtYnV0dG9uLWRhbmdlci52cy1idXR0b24tYm9yZGVyIC52cy1idXR0b24tLXRleHQuaXNBY3RpdmUsLnZzLWJ1dHRvbi1kYW5nZXIudnMtYnV0dG9uLWZsYXQgLnZzLWJ1dHRvbi0tdGV4dC5pc0FjdGl2ZXtjb2xvcjojZmZmIWltcG9ydGFudH0udnMtYnV0dG9uLWRhbmdlci52cy1idXR0b24tYm9yZGVyOmhvdmVyLC52cy1idXR0b24tZGFuZ2VyLnZzLWJ1dHRvbi1mbGF0OmhvdmVye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLC4wOCkhaW1wb3J0YW50fS52cy1idXR0b24tZGFuZ2VyLnZzLWJ1dHRvbi1ib3JkZXIgLnZzLWJ1dHRvbi1iYWNrZ3JvdW5keCwudnMtYnV0dG9uLWRhbmdlci52cy1idXR0b24tZmxhdCAudnMtYnV0dG9uLWJhY2tncm91bmR4e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgNjBweCAwIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKTtib3gtc2hhZG93Omluc2V0IDAgMCA2MHB4IDAgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpfS52cy1idXR0b24tZGFuZ2VyLnZzLWJ1dHRvbi1mbGF0e2JvcmRlcjpub25lIWltcG9ydGFudH0udnMtYnV0dG9uLWRhbmdlci52cy1idXR0b24tbGluZXtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSk7Ym9yZGVyLWNvbG9yOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuMil9LnZzLWJ1dHRvbi1kYW5nZXIudnMtYnV0dG9uLWxpbmUgLnZzLWJ1dHRvbi1saW5leHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnMtYnV0dG9uLWRhbmdlci52cy1idXR0b24tZ3JhZGllbnR7YmFja2dyb3VuZDojNjQwMDY0O2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDMwZGVnLHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKSxyZ2JhKHZhcigtLXZzLWRhbmdlciksLjUpKSFpbXBvcnRhbnQ7dGV4dC1zaGFkb3c6MXB4IDJweCA0cHggcmdiYSgwLDAsMCwuMyl9LnZzLWJ1dHRvbi1kYW5nZXIudnMtYnV0dG9uLXJlbGllZntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKTstd2Via2l0LWJveC1zaGFkb3c6MCAtM3B4IDAgMCByZ2JhKDAsMCwwLC4yKSBpbnNldDtib3gtc2hhZG93Omluc2V0IDAgLTNweCAwIDAgcmdiYSgwLDAsMCwuMil9LnZzLWJ1dHRvbi1zdWNjZXNzLnZzLWJ1dHRvbi1maWxsZWR7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpIWltcG9ydGFudH0udnMtYnV0dG9uLXN1Y2Nlc3MudnMtYnV0dG9uLWZpbGxlZDpob3Zlcnstd2Via2l0LWJveC1zaGFkb3c6MCA4cHggMjVweCAtOHB4IHJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSk7Ym94LXNoYWRvdzowIDhweCAyNXB4IC04cHggcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtYnV0dG9uLXN1Y2Nlc3MudnMtYnV0dG9uLWJvcmRlciwudnMtYnV0dG9uLXN1Y2Nlc3MudnMtYnV0dG9uLWZsYXR7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2NvbG9yOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSl9LnZzLWJ1dHRvbi1zdWNjZXNzLnZzLWJ1dHRvbi1ib3JkZXIgLnZzLWJ1dHRvbi0tdGV4dC5pc0FjdGl2ZSwudnMtYnV0dG9uLXN1Y2Nlc3MudnMtYnV0dG9uLWZsYXQgLnZzLWJ1dHRvbi0tdGV4dC5pc0FjdGl2ZXtjb2xvcjojZmZmIWltcG9ydGFudH0udnMtYnV0dG9uLXN1Y2Nlc3MudnMtYnV0dG9uLWJvcmRlcjpob3ZlciwudnMtYnV0dG9uLXN1Y2Nlc3MudnMtYnV0dG9uLWZsYXQ6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC4wOCkhaW1wb3J0YW50fS52cy1idXR0b24tc3VjY2Vzcy52cy1idXR0b24tYm9yZGVyIC52cy1idXR0b24tYmFja2dyb3VuZHgsLnZzLWJ1dHRvbi1zdWNjZXNzLnZzLWJ1dHRvbi1mbGF0IC52cy1idXR0b24tYmFja2dyb3VuZHh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgNjBweCAwIHJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSk7Ym94LXNoYWRvdzppbnNldCAwIDAgNjBweCAwIHJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSl9LnZzLWJ1dHRvbi1zdWNjZXNzLnZzLWJ1dHRvbi1mbGF0e2JvcmRlcjpub25lIWltcG9ydGFudH0udnMtYnV0dG9uLXN1Y2Nlc3MudnMtYnV0dG9uLWxpbmV7Y29sb3I6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKTtib3JkZXItY29sb3I6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuMil9LnZzLWJ1dHRvbi1zdWNjZXNzLnZzLWJ1dHRvbi1saW5lIC52cy1idXR0b24tbGluZXh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS52cy1idXR0b24tc3VjY2Vzcy52cy1idXR0b24tZ3JhZGllbnR7YmFja2dyb3VuZDojMDA2NGZhO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDMwZGVnLHJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSkscmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuNikpIWltcG9ydGFudDt0ZXh0LXNoYWRvdzoxcHggMnB4IDRweCByZ2JhKDAsMCwwLC4zKX0udnMtYnV0dG9uLXN1Y2Nlc3MudnMtYnV0dG9uLXJlbGllZntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgLTNweCAwIDAgcmdiYSgwLDAsMCwuMikgaW5zZXQ7Ym94LXNoYWRvdzppbnNldCAwIC0zcHggMCAwIHJnYmEoMCwwLDAsLjIpfS52cy1idXR0b24td2FybmluZy52cy1idXR0b24tZmlsbGVke2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKSFpbXBvcnRhbnR9LnZzLWJ1dHRvbi13YXJuaW5nLnZzLWJ1dHRvbi1maWxsZWQ6aG92ZXJ7LXdlYmtpdC1ib3gtc2hhZG93OjAgOHB4IDI1cHggLThweCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpO2JveC1zaGFkb3c6MCA4cHggMjVweCAtOHB4IHJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LnZzLWJ1dHRvbi13YXJuaW5nLnZzLWJ1dHRvbi1ib3JkZXIsLnZzLWJ1dHRvbi13YXJuaW5nLnZzLWJ1dHRvbi1mbGF0e2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudDtjb2xvcjpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1idXR0b24td2FybmluZy52cy1idXR0b24tYm9yZGVyIC52cy1idXR0b24tLXRleHQuaXNBY3RpdmUsLnZzLWJ1dHRvbi13YXJuaW5nLnZzLWJ1dHRvbi1mbGF0IC52cy1idXR0b24tLXRleHQuaXNBY3RpdmV7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9LnZzLWJ1dHRvbi13YXJuaW5nLnZzLWJ1dHRvbi1ib3JkZXI6aG92ZXIsLnZzLWJ1dHRvbi13YXJuaW5nLnZzLWJ1dHRvbi1mbGF0OmhvdmVye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwuMDgpIWltcG9ydGFudH0udnMtYnV0dG9uLXdhcm5pbmcudnMtYnV0dG9uLWJvcmRlciAudnMtYnV0dG9uLWJhY2tncm91bmR4LC52cy1idXR0b24td2FybmluZy52cy1idXR0b24tZmxhdCAudnMtYnV0dG9uLWJhY2tncm91bmR4e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAwIDYwcHggMCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDYwcHggMCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1idXR0b24td2FybmluZy52cy1idXR0b24tZmxhdHtib3JkZXI6bm9uZSFpbXBvcnRhbnR9LnZzLWJ1dHRvbi13YXJuaW5nLnZzLWJ1dHRvbi1saW5le2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSk7Ym9yZGVyLWNvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksLjIpfS52cy1idXR0b24td2FybmluZy52cy1idXR0b24tbGluZSAudnMtYnV0dG9uLWxpbmV4e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0udnMtYnV0dG9uLXdhcm5pbmcudnMtYnV0dG9uLWdyYWRpZW50e2JhY2tncm91bmQ6I2ZhZmFmYTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgzMGRlZyxyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpLHJnYmEodmFyKC0tdnMtd2FybmluZyksLjUpKSFpbXBvcnRhbnQ7dGV4dC1zaGFkb3c6MXB4IDJweCA0cHggcmdiYSgwLDAsMCwuMyl9LnZzLWJ1dHRvbi13YXJuaW5nLnZzLWJ1dHRvbi1yZWxpZWZ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIC0zcHggMCAwIHJnYmEoMCwwLDAsLjIpIGluc2V0O2JveC1zaGFkb3c6aW5zZXQgMCAtM3B4IDAgMCByZ2JhKDAsMCwwLC4yKX0udnMtYnV0dG9uLWRhcmsudnMtYnV0dG9uLWZpbGxlZHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSkhaW1wb3J0YW50fS52cy1idXR0b24tZGFyay52cy1idXR0b24tZmlsbGVkOmhvdmVyey13ZWJraXQtYm94LXNoYWRvdzowIDhweCAyNXB4IC04cHggcmdiYSh2YXIoLS12cy1kYXJrKSwxKTtib3gtc2hhZG93OjAgOHB4IDI1cHggLThweCByZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1idXR0b24tZGFyay52cy1idXR0b24tYm9yZGVyLC52cy1idXR0b24tZGFyay52cy1idXR0b24tZmxhdHtib3JkZXI6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtZGFyayksMSk7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Y29sb3I6cmdiYSh2YXIoLS12cy1kYXJrKSwxKX0udnMtYnV0dG9uLWRhcmsudnMtYnV0dG9uLWJvcmRlciAudnMtYnV0dG9uLS10ZXh0LmlzQWN0aXZlLC52cy1idXR0b24tZGFyay52cy1idXR0b24tZmxhdCAudnMtYnV0dG9uLS10ZXh0LmlzQWN0aXZle2NvbG9yOiNmZmYhaW1wb3J0YW50fS52cy1idXR0b24tZGFyay52cy1idXR0b24tYm9yZGVyOmhvdmVyLC52cy1idXR0b24tZGFyay52cy1idXR0b24tZmxhdDpob3ZlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksLjA4KSFpbXBvcnRhbnR9LnZzLWJ1dHRvbi1kYXJrLnZzLWJ1dHRvbi1ib3JkZXIgLnZzLWJ1dHRvbi1iYWNrZ3JvdW5keCwudnMtYnV0dG9uLWRhcmsudnMtYnV0dG9uLWZsYXQgLnZzLWJ1dHRvbi1iYWNrZ3JvdW5keHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCA2MHB4IDAgcmdiYSh2YXIoLS12cy1kYXJrKSwxKTtib3gtc2hhZG93Omluc2V0IDAgMCA2MHB4IDAgcmdiYSh2YXIoLS12cy1kYXJrKSwxKX0udnMtYnV0dG9uLWRhcmsudnMtYnV0dG9uLWZsYXR7Ym9yZGVyOm5vbmUhaW1wb3J0YW50fS52cy1idXR0b24tZGFyay52cy1idXR0b24tbGluZXtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpO2JvcmRlci1jb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLC4yKX0udnMtYnV0dG9uLWRhcmsudnMtYnV0dG9uLWxpbmUgLnZzLWJ1dHRvbi1saW5leHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWJ1dHRvbi1kYXJrLnZzLWJ1dHRvbi1ncmFkaWVudHtiYWNrZ3JvdW5kOiM2NDAwNjQ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMzBkZWcscmdiYSh2YXIoLS12cy1kYXJrKSwxKSxyZ2JhKHZhcigtLXZzLWRhcmspLC41KSkhaW1wb3J0YW50O3RleHQtc2hhZG93OjFweCAycHggNHB4IHJnYmEoMCwwLDAsLjMpfS52cy1idXR0b24tZGFyay52cy1idXR0b24tcmVsaWVme2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwxKTstd2Via2l0LWJveC1zaGFkb3c6MCAtM3B4IDAgMCBoc2xhKDAsMCUsMTAwJSwuMSkgaW5zZXQ7Ym94LXNoYWRvdzppbnNldCAwIC0zcHggMCAwIGhzbGEoMCwwJSwxMDAlLC4xKX0udnMtYnV0dG9uLWxpZ2h0LnZzLWJ1dHRvbi1maWxsZWR7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSFpbXBvcnRhbnR9LnZzLWJ1dHRvbi1saWdodC52cy1idXR0b24tZmlsbGVkOmhvdmVyey13ZWJraXQtYm94LXNoYWRvdzowIDhweCAyNXB4IC04cHggcmdiYSh2YXIoLS12cy1saWdodCksMSk7Ym94LXNoYWRvdzowIDhweCAyNXB4IC04cHggcmdiYSh2YXIoLS12cy1saWdodCksMSl9LnZzLWJ1dHRvbi1saWdodC52cy1idXR0b24tYm9yZGVyLC52cy1idXR0b24tbGlnaHQudnMtYnV0dG9uLWZsYXR7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudDtjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0udnMtYnV0dG9uLWxpZ2h0LnZzLWJ1dHRvbi1ib3JkZXIgLnZzLWJ1dHRvbi0tdGV4dC5pc0FjdGl2ZSwudnMtYnV0dG9uLWxpZ2h0LnZzLWJ1dHRvbi1mbGF0IC52cy1idXR0b24tLXRleHQuaXNBY3RpdmV7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9LnZzLWJ1dHRvbi1saWdodC52cy1idXR0b24tYm9yZGVyOmhvdmVyLC52cy1idXR0b24tbGlnaHQudnMtYnV0dG9uLWZsYXQ6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwuMDgpIWltcG9ydGFudH0udnMtYnV0dG9uLWxpZ2h0LnZzLWJ1dHRvbi1ib3JkZXIgLnZzLWJ1dHRvbi1iYWNrZ3JvdW5keCwudnMtYnV0dG9uLWxpZ2h0LnZzLWJ1dHRvbi1mbGF0IC52cy1idXR0b24tYmFja2dyb3VuZHh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAwIDYwcHggMCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKTtib3gtc2hhZG93Omluc2V0IDAgMCA2MHB4IDAgcmdiYSh2YXIoLS12cy1saWdodCksMSl9LnZzLWJ1dHRvbi1saWdodC52cy1idXR0b24tZmxhdHtib3JkZXI6bm9uZSFpbXBvcnRhbnR9LnZzLWJ1dHRvbi1saWdodC52cy1idXR0b24tbGluZXtjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKTtib3JkZXItY29sb3I6cmdiYSh2YXIoLS12cy1saWdodCksLjIpfS52cy1idXR0b24tbGlnaHQudnMtYnV0dG9uLWxpbmUgLnZzLWJ1dHRvbi1saW5leHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfS52cy1idXR0b24tbGlnaHQudnMtYnV0dG9uLWdyYWRpZW50e2JhY2tncm91bmQ6IzY0MDA2NDtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgzMGRlZyxyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSxyZ2JhKHZhcigtLXZzLWxpZ2h0KSwuNSkpIWltcG9ydGFudDt0ZXh0LXNoYWRvdzoxcHggMnB4IDRweCByZ2JhKDAsMCwwLC4zKX0udnMtYnV0dG9uLWxpZ2h0LnZzLWJ1dHRvbi1yZWxpZWZ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKTstd2Via2l0LWJveC1zaGFkb3c6MCAtM3B4IDAgMCByZ2JhKDAsMCwwLC4yKSBpbnNldDtib3gtc2hhZG93Omluc2V0IDAgLTNweCAwIDAgcmdiYSgwLDAsMCwuMil9LmNvbi12cy1jYXJke3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbi1ib3R0b206MjBweDtkaXNwbGF5OmJsb2NrOy13ZWJraXQtYm94LXNoYWRvdzowIDRweCAyNXB4IDAgcmdiYSgwLDAsMCwuMSk7Ym94LXNoYWRvdzowIDRweCAyNXB4IDAgcmdiYSgwLDAsMCwuMSk7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZX0uY29uLXZzLWNhcmQud2l0aEhvdmVye2N1cnNvcjpwb2ludGVyfS5jb24tdnMtY2FyZC53aXRoSG92ZXI6aG92ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSg0cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDRweCk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCA1cHggMCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93OjAgMCA1cHggMCByZ2JhKDAsMCwwLC4xKX0uY29uLXZzLWNhcmQud2l0aEhvdmVyOmhvdmVyIGltZ3std2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjEpO3RyYW5zZm9ybTpzY2FsZSgxLjEpfS5jb24tdnMtY2FyZC5maXhlZEhlaWdodHtoZWlnaHQ6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0udnMtY2FyZC0taGVhZGVye3BhZGRpbmc6MTBweDstd2Via2l0LWJveC1zaGFkb3c6MCAxMHB4IDE1cHggLTEwcHggcmdiYSgwLDAsMCwuMDUpO2JveC1zaGFkb3c6MCAxMHB4IDE1cHggLTEwcHggcmdiYSgwLDAsMCwuMDUpfS52cy1jYXJkLS1oZWFkZXIgaDN7cGFkZGluZzowfS52cy1jYXJkLS1mb290ZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzoxMHB4Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoNDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSg0MCUpO21hcmdpbi10b3A6LTUlO3BhZGRpbmctdG9wOjB9LnZzLWNhcmQtLWZvb3Rlci5maXhlZEhlaWdodHtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtyaWdodDowO21hcmdpbi10b3A6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX0udnMtY2FyZC0tY29udGVudHtwYWRkaW5nOjEwcHg7Zm9udC1zaXplOi44cmVtO21hcmdpbi1ib3R0b206MTVweH0udnMtY2FyZC0tY29udGVudC5maXhlZEhlaWdodHttYXJnaW4tYm90dG9tOjIwcHh9LnZzLWNhcmQtLW1lZGlhe3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS52cy1jYXJkLS1tZWRpYSBpbWd7d2lkdGg6MTAwJTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7ZGlzcGxheTpibG9ja30uY29uLXZzLWNoZWNrYm94e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi1sZWZ0OjVweDttYXJnaW4tcmlnaHQ6NXB4fS5jb24tdnMtY2hlY2tib3gudnMtY2hlY2tib3gtc21hbGwgLnZzLWNoZWNrYm94e3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHh9LmNvbi12cy1jaGVja2JveC52cy1jaGVja2JveC1zbWFsbCAudnMtY2hlY2tib3ggLnZzLWljb257Zm9udC1zaXplOi43cmVtfS5jb24tdnMtY2hlY2tib3gudnMtY2hlY2tib3gtbGFyZ2UgLnZzLWNoZWNrYm94e3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHh9LnZzLWNoZWNrYm94LS1pbnB1dHtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29wYWNpdHk6MDt6LWluZGV4OjIwMDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiM1NWQ3NzV9LnZzLWNoZWNrYm94LS1pbnB1dDpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtwb2ludGVyLWV2ZW50czpub25lfS52cy1jaGVja2JveC0taW5wdXQ6ZGlzYWJsZWQrLnZzLWNoZWNrYm94e29wYWNpdHk6LjU7Y3Vyc29yOmRlZmF1bHQ7cG9pbnRlci1ldmVudHM6bm9uZX0udnMtY2hlY2tib3gtLWlucHV0OmRpc2FibGVkKy52cy1jaGVja2JveCAudnMtY2hlY2tib3gtLWNoZWNre2N1cnNvcjpkZWZhdWx0O3BvaW50ZXItZXZlbnRzOm5vbmV9LnZzLWNoZWNrYm94LS1pbnB1dDphY3RpdmU6Y2hlY2tlZCsudnMtY2hlY2tib3ggLnZzLWNoZWNrYm94LS1jaGVja3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoM3B4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDNweCl9LnZzLWNoZWNrYm94LS1pbnB1dDphY3RpdmU6Y2hlY2tlZCsudnMtY2hlY2tib3ggLnZzLWljb257LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDZweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg2cHgpfS52cy1jaGVja2JveC0taW5wdXQ6Y2hlY2tlZCsudnMtY2hlY2tib3h7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9LnZzLWNoZWNrYm94LS1pbnB1dDpjaGVja2VkKy52cy1jaGVja2JveCAudnMtY2hlY2tib3gtLWNoZWNrey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfS52cy1jaGVja2JveC0taW5wdXQ6Y2hlY2tlZCsudnMtY2hlY2tib3ggLnZzLWljb257b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApO2NvbG9yOiNmZmY7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0udnMtY2hlY2tib3gsLnZzLWNoZWNrYm94LS1pbnB1dDpjaGVja2VkKy52cy1jaGVja2JveCAudnMtaWNvbnstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52cy1jaGVja2JveHstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjJweDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtY2hlY2tib3h7bWFyZ2luLWxlZnQ6NXB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtY2hlY2tib3h7bWFyZ2luLXJpZ2h0OjVweH0udnMtY2hlY2tib3gtLWNoZWNre3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpyaWdodDt0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0Oy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7ei1pbmRleDoxMH0udnMtY2hlY2tib3gtLWljb257LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGU7YmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2Utb3V0O3RyYW5zaXRpb246YWxsIC4ycyBlYXNlLW91dDt6LWluZGV4OjEwMDtmb250LXNpemU6MS4xMjVlbTtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDMwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMzBweCk7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn0udnMtY2hlY2tib3gtcHJpbWFyeSAudnMtY2hlY2tib3h7Ym9yZGVyOjJweCBzb2xpZCAjYjRiNGI0fS52cy1jaGVja2JveC1wcmltYXJ5IGlucHV0OmNoZWNrZWQrLnZzLWNoZWNrYm94e2JvcmRlcjoycHggc29saWQgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKSFpbXBvcnRhbnQ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1jaGVja2JveC1zZWNvbmRhcnkgLnZzLWNoZWNrYm94e2JvcmRlcjoycHggc29saWQgI2I0YjRiNH0udnMtY2hlY2tib3gtc2Vjb25kYXJ5IGlucHV0OmNoZWNrZWQrLnZzLWNoZWNrYm94e2JvcmRlcjoycHggc29saWQgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpIWltcG9ydGFudDtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0udnMtY2hlY2tib3gtZGFuZ2VyIC52cy1jaGVja2JveHtib3JkZXI6MnB4IHNvbGlkICNiNGI0YjR9LnZzLWNoZWNrYm94LWRhbmdlciBpbnB1dDpjaGVja2VkKy52cy1jaGVja2JveHtib3JkZXI6MnB4IHNvbGlkIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKSFpbXBvcnRhbnQ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWNoZWNrYm94LXN1Y2Nlc3MgLnZzLWNoZWNrYm94e2JvcmRlcjoycHggc29saWQgI2I0YjRiNH0udnMtY2hlY2tib3gtc3VjY2VzcyBpbnB1dDpjaGVja2VkKy52cy1jaGVja2JveHtib3JkZXI6MnB4IHNvbGlkIHJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSkhaW1wb3J0YW50O2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtY2hlY2tib3gtd2FybmluZyAudnMtY2hlY2tib3h7Ym9yZGVyOjJweCBzb2xpZCAjYjRiNGI0fS52cy1jaGVja2JveC13YXJuaW5nIGlucHV0OmNoZWNrZWQrLnZzLWNoZWNrYm94e2JvcmRlcjoycHggc29saWQgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKSFpbXBvcnRhbnQ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1jaGVja2JveC1kYXJrIC52cy1jaGVja2JveHtib3JkZXI6MnB4IHNvbGlkICNiNGI0YjR9LnZzLWNoZWNrYm94LWRhcmsgaW5wdXQ6Y2hlY2tlZCsudnMtY2hlY2tib3h7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKHZhcigtLXZzLWRhcmspLDEpIWltcG9ydGFudDtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWNoZWNrYm94LWxpZ2h0IC52cy1jaGVja2JveHtib3JkZXI6MnB4IHNvbGlkICNiNGI0YjR9LnZzLWNoZWNrYm94LWxpZ2h0IGlucHV0OmNoZWNrZWQrLnZzLWNoZWNrYm94e2JvcmRlcjoycHggc29saWQgcmdiYSh2YXIoLS12cy1saWdodCksMSkhaW1wb3J0YW50O2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1saWdodCksMSl9LmNvbi12cy1jaGlwe2JhY2tncm91bmQ6I2YwZjBmMDtib3JkZXItcmFkaXVzOjIwcHg7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6LjdyZW07LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tYm90dG9tOjNweDttaW4taGVpZ2h0OjI4cHg7Y29sb3I6cmdiYSgwLDAsMCwuNyk7cG9zaXRpb246cmVsYXRpdmV9LnZ1ZXNheC1hcHAtaXMtcnRsIC5jb24tdnMtY2hpcHtmbG9hdDpyaWdodH0udnVlc2F4LWFwcC1pcy1sdHIgLmNvbi12cy1jaGlwe2Zsb2F0OmxlZnR9LnZ1ZXNheC1hcHAtaXMtcnRsIC5jb24tdnMtY2hpcHttYXJnaW4tbGVmdDoycHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC5jb24tdnMtY2hpcHttYXJnaW4tcmlnaHQ6MnB4fS52dWVzYXgtYXBwLWlzLXJ0bCAuY29uLXZzLWNoaXB7cGFkZGluZy1sZWZ0OjEwcHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC5jb24tdnMtY2hpcHtwYWRkaW5nLXJpZ2h0OjEwcHh9LnZ1ZXNheC1hcHAtaXMtcnRsIC5jb24tdnMtY2hpcC5jbG9zYWJsZXtwYWRkaW5nLWxlZnQ6MH0udnVlc2F4LWFwcC1pcy1sdHIgLmNvbi12cy1jaGlwLmNsb3NhYmxle3BhZGRpbmctcmlnaHQ6MH0uY29uLXZzLWNoaXAuY29uLWNvbG9yIC5jb24tdnMtYXZhdGFye2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjIpfS5jb24tdnMtY2hpcCAuY29uLXZzLWF2YXRhcnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjJweCAwO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjE1KX0udnVlc2F4LWFwcC1pcy1ydGwgLmNvbi12cy1jaGlwIC5jb24tdnMtYXZhdGFyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg4cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoOHB4KX0udnVlc2F4LWFwcC1pcy1sdHIgLmNvbi12cy1jaGlwIC5jb24tdnMtYXZhdGFyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC04cHgpfS5jb24tdnMtY2hpcCAuY29uLXZzLWF2YXRhciAubWF0ZXJpYWwtaWNvbnN7bWFyZ2luLXRvcDowO2ZvbnQtc2l6ZTouOHJlbX0uY29uLXZzLWNoaXAuYmctY2hpcC10cmFuc3BhcmVudHtmb250LXdlaWdodDo1MDB9LnZzLWNoaXAtLWNsb3Nle3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjowO21hcmdpbjowIDRweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjE1KTtjb2xvcjojZmZmOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2V9LnZzLWNoaXAtLWNsb3NlOmhvdmVye2JhY2tncm91bmQ6MjU1LDcxLDg3fS52cy1jaGlwLS1jbG9zZSBpe2ZvbnQtc2l6ZTouOXJlbX0udnMtY2hpcC0tdGV4dHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1jaGlwLS10ZXh0e21hcmdpbi1yaWdodDoxMHB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtY2hpcC0tdGV4dHttYXJnaW4tbGVmdDoxMHB4fS52cy1jaGlwLXByaW1hcnk6bm90KC5iZy1jaGlwLXRyYW5zcGFyZW50KXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLWNoaXAtcHJpbWFyeS5iZy1jaGlwLXRyYW5zcGFyZW50e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuMTUpO2NvbG9yOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLWNoaXAtc2Vjb25kYXJ5Om5vdCguYmctY2hpcC10cmFuc3BhcmVudCl7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLWNoaXAtc2Vjb25kYXJ5LmJnLWNoaXAtdHJhbnNwYXJlbnR7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksLjE1KTtjb2xvcjpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLWNoaXAtZGFuZ2VyOm5vdCguYmctY2hpcC10cmFuc3BhcmVudCl7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWNoaXAtZGFuZ2VyLmJnLWNoaXAtdHJhbnNwYXJlbnR7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksLjE1KTtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWNoaXAtc3VjY2Vzczpub3QoLmJnLWNoaXAtdHJhbnNwYXJlbnQpe2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtY2hpcC1zdWNjZXNzLmJnLWNoaXAtdHJhbnNwYXJlbnR7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC4xNSk7Y29sb3I6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtY2hpcC13YXJuaW5nOm5vdCguYmctY2hpcC10cmFuc3BhcmVudCl7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1jaGlwLXdhcm5pbmcuYmctY2hpcC10cmFuc3BhcmVudHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtd2FybmluZyksLjE1KTtjb2xvcjpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1jaGlwLWRhcms6bm90KC5iZy1jaGlwLXRyYW5zcGFyZW50KXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWNoaXAtZGFyay5iZy1jaGlwLXRyYW5zcGFyZW50e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwuMTUpO2NvbG9yOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWNoaXAtbGlnaHQ6bm90KC5iZy1jaGlwLXRyYW5zcGFyZW50KXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfS52cy1jaGlwLWxpZ2h0LmJnLWNoaXAtdHJhbnNwYXJlbnR7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwuMTUpO2NvbG9yOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfS5jb24tY2hpcHN7d2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMnB4IDE1cHggMCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93OjAgMnB4IDE1cHggMCByZ2JhKDAsMCwwLC4xKTtib3JkZXItcmFkaXVzOjVweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo1cHh9LmNvbi1jaGlwcyAuY29uLXZzLWNoaXB7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MH0uY29uLWNoaXBzLS1pbnB1dHtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjE7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjlweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLXdpZHRoOjgwcHg7Ym9yZGVyOjB9LnZ1ZXNheC1hcHAtaXMtcnRsIC5jb24tY2hpcHMtLWlucHV0e21hcmdpbi1yaWdodDoycHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC5jb24tY2hpcHMtLWlucHV0e21hcmdpbi1sZWZ0OjJweH0uY29uLWNoaXBzLS1yZW1vdmUtYWxse3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtoZWlnaHQ6MTAwJTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzo1cHg7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZX0udnVlc2F4LWFwcC1pcy1ydGwgLmNvbi1jaGlwcy0tcmVtb3ZlLWFsbHtsZWZ0OjB9LnZ1ZXNheC1hcHAtaXMtbHRyIC5jb24tY2hpcHMtLXJlbW92ZS1hbGx7cmlnaHQ6MH0uY29uLWNoaXBzLS1yZW1vdmUtYWxsOmhvdmVye2NvbG9yOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnVlc2F4LWFwcC1pcy1ydGwgLm5vLWl0ZW1zIC5jb24tY2hpcHMtLWlucHV0e3BhZGRpbmctcmlnaHQ6MTBweCFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtbHRyIC5uby1pdGVtcyAuY29uLWNoaXBzLS1pbnB1dHtwYWRkaW5nLWxlZnQ6MTBweCFpbXBvcnRhbnR9LnZzLWNvbGxhcHNley13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxMHB4fS52cy1jb2xsYXBzZS5zaGFkb3cgLm9wZW4taXRlbXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjAxKTt0cmFuc2Zvcm06c2NhbGUoMS4wMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMnB4IDE1cHggMCByZ2JhKDAsMCwwLC4wNSk7Ym94LXNoYWRvdzowIDJweCAxNXB4IDAgcmdiYSgwLDAsMCwuMDUpO21hcmdpbi10b3A6NXB4O2JvcmRlci1ib3R0b206MCBzb2xpZCB0cmFuc3BhcmVudDttYXJnaW4tYm90dG9tOjEwcHg7Ym9yZGVyLXJhZGl1czo2cHh9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1jb2xsYXBzZS5zaGFkb3cgLm9wZW4taXRlbSAudnMtY29sbGFwc2UtaXRlbS0taWNvbi1oZWFkZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDUwJSwtNTAlKSByb3RhdGUoMTgwZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDUwJSwtNTAlKSByb3RhdGUoMTgwZGVnKX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWNvbGxhcHNlLnNoYWRvdyAub3Blbi1pdGVtIC52cy1jb2xsYXBzZS1pdGVtLS1pY29uLWhlYWRlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSByb3RhdGUoMTgwZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKDE4MGRlZyl9LnZzLWNvbGxhcHNlLnNoYWRvdyAub3Blbi1pdGVtIC5jb24tY29udGVudC1pdGVte29wYWNpdHk6MX0udnMtY29sbGFwc2UubWFyZ2luIC52cy1jb2xsYXBzZS1pdGVte21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgMnB4IDE1cHggMCByZ2JhKDAsMCwwLC4wNSk7Ym94LXNoYWRvdzowIDJweCAxNXB4IDAgcmdiYSgwLDAsMCwuMDUpO2JvcmRlci1yYWRpdXM6NXB4O2JvcmRlci1ib3R0b206MCBzb2xpZCB0cmFuc3BhcmVudH0udnMtY29sbGFwc2UubWFyZ2luIC5vcGVuLWl0ZW0gLmNvbi1jb250ZW50LWl0ZW17b3BhY2l0eToxfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtY29sbGFwc2UubWFyZ2luIC5vcGVuLWl0ZW0gLnZzLWNvbGxhcHNlLWl0ZW0tLWljb24taGVhZGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg1MCUsLTUwJSkgcm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg1MCUsLTUwJSkgcm90YXRlKDE4MGRlZyl9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1jb2xsYXBzZS5tYXJnaW4gLm9wZW4taXRlbSAudnMtY29sbGFwc2UtaXRlbS0taWNvbi1oZWFkZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHJvdGF0ZSgxODBkZWcpfS52cy1jb2xsYXBzZS5ib3JkZXJ7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKTtwYWRkaW5nOjB9LnZzLWNvbGxhcHNlLmJvcmRlciAudnMtY29sbGFwc2UtaXRlbXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKX0udnMtY29sbGFwc2UuYm9yZGVyIC5vcGVuLWl0ZW0gLmNvbi1jb250ZW50LWl0ZW17b3BhY2l0eToxfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtY29sbGFwc2UuYm9yZGVyIC5vcGVuLWl0ZW0gLnZzLWNvbGxhcHNlLWl0ZW0tLWljb24taGVhZGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg1MCUsLTUwJSkgcm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg1MCUsLTUwJSkgcm90YXRlKDE4MGRlZyl9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1jb2xsYXBzZS5ib3JkZXIgLm9wZW4taXRlbSAudnMtY29sbGFwc2UtaXRlbS0taWNvbi1oZWFkZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHJvdGF0ZSgxODBkZWcpfS52cy1jb2xsYXBzZS5kZWZhdWx0IC5vcGVuLWl0ZW0gLmNvbi1jb250ZW50LS1pdGVte29wYWNpdHk6MX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWNvbGxhcHNlLmRlZmF1bHQgLm9wZW4taXRlbSAudnMtY29sbGFwc2UtaXRlbS0taWNvbi1oZWFkZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDUwJSwtNTAlKSByb3RhdGUoMTgwZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDUwJSwtNTAlKSByb3RhdGUoMTgwZGVnKX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWNvbGxhcHNlLmRlZmF1bHQgLm9wZW4taXRlbSAudnMtY29sbGFwc2UtaXRlbS0taWNvbi1oZWFkZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHJvdGF0ZSgxODBkZWcpfS52cy1jb2xsYXBzZS1pdGVte2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA0KTtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2V9LnZzLWNvbGxhcHNlLWl0ZW0ub3Blbi1pdGVtIC5jb24tY29udGVudC0taXRlbXtvcGFjaXR5OjF9LnZzLWNvbGxhcHNlLWl0ZW0uZGlzYWJsZWR4e29wYWNpdHk6LjU7Y3Vyc29yOmRlZmF1bHQ7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4Ojk5OX0udnMtY29sbGFwc2UtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MCBzb2xpZCB0cmFuc3BhcmVudCFpbXBvcnRhbnR9LnZzLWNvbGxhcHNlLWl0ZW0tLWhlYWRlcntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTBweDtwb3NpdGlvbjpyZWxhdGl2ZX0udnMtY29sbGFwc2UtaXRlbS0taGVhZGVyLC52cy1jb2xsYXBzZS1pdGVtLS1pY29uLWhlYWRlcnstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2V9LnZzLWNvbGxhcHNlLWl0ZW0tLWljb24taGVhZGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7ZGlzcGxheTpibG9jaztkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXJhZGl1czo1cHh9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1jb2xsYXBzZS1pdGVtLS1pY29uLWhlYWRlcntsZWZ0OjB9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1jb2xsYXBzZS1pdGVtLS1pY29uLWhlYWRlcntyaWdodDowfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtY29sbGFwc2UtaXRlbS0taWNvbi1oZWFkZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDUwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDUwJSwtNTAlKX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWNvbGxhcHNlLWl0ZW0tLWljb24taGVhZGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKX0udnMtY29sbGFwc2UtaXRlbS0tY29udGVudHtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZX0uY29uLWNvbnRlbnQtLWl0ZW17cGFkZGluZzoxMHB4O3BhZGRpbmctdG9wOjA7Zm9udC1zaXplOi44NXJlbTtvcGFjaXR5Oi4yOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZX0uZGlhbG9nLXQtZW50ZXIsLmRpYWxvZy10LWxlYXZlLXRve29wYWNpdHk6MCFpbXBvcnRhbnR9LmRpYWxvZy10LWVudGVyIC52cy1kaWFsb2csLmRpYWxvZy10LWxlYXZlLXRvIC52cy1kaWFsb2d7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjkpIWltcG9ydGFudDt0cmFuc2Zvcm06c2NhbGUoLjkpIWltcG9ydGFudH0uZGlhbG9nLXQtZW50ZXIgLnZzLWRpYWxvZy1jYW5jZWwsLmRpYWxvZy10LWxlYXZlLXRvIC52cy1kaWFsb2ctY2FuY2Vse2JvcmRlci1yYWRpdXM6NTAlIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1ydGwgLmRpYWxvZy10LWVudGVyIC52cy1kaWFsb2ctY2FuY2VsLC52dWVzYXgtYXBwLWlzLXJ0bCAuZGlhbG9nLXQtbGVhdmUtdG8gLnZzLWRpYWxvZy1jYW5jZWx7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC04cHgsLThweCkgc2NhbGUoLjUpIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlKC04cHgsLThweCkgc2NhbGUoLjUpIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1sdHIgLmRpYWxvZy10LWVudGVyIC52cy1kaWFsb2ctY2FuY2VsLC52dWVzYXgtYXBwLWlzLWx0ciAuZGlhbG9nLXQtbGVhdmUtdG8gLnZzLWRpYWxvZy1jYW5jZWx7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDhweCwtOHB4KSBzY2FsZSguNSkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGUoOHB4LC04cHgpIHNjYWxlKC41KSFpbXBvcnRhbnR9LmRpYWxvZy10LWVudGVyIC52cy1kaWFsb2ctdGV4dCwuZGlhbG9nLXQtbGVhdmUtdG8gLnZzLWRpYWxvZy10ZXh0e29wYWNpdHk6MH0udnVlc2F4LWFwcC1pcy1ydGwgLmRpYWxvZy10LWVudGVyIC52cy1kaWFsb2ctdGV4dCwudnVlc2F4LWFwcC1pcy1ydGwgLmRpYWxvZy10LWxlYXZlLXRvIC52cy1kaWFsb2ctdGV4dHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMTVweCkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGUoMTVweCkhaW1wb3J0YW50fS52dWVzYXgtYXBwLWlzLWx0ciAuZGlhbG9nLXQtZW50ZXIgLnZzLWRpYWxvZy10ZXh0LC52dWVzYXgtYXBwLWlzLWx0ciAuZGlhbG9nLXQtbGVhdmUtdG8gLnZzLWRpYWxvZy10ZXh0ey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTVweCkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTE1cHgpIWltcG9ydGFudH0uZGlhbG9nLXQtZW50ZXIgLmFmdGVyLC5kaWFsb2ctdC1sZWF2ZS10byAuYWZ0ZXJ7aGVpZ2h0OjAlIWltcG9ydGFudH0uZGlhbG9nLXQtZW50ZXIgaGVhZGVyIGgzLC5kaWFsb2ctdC1sZWF2ZS10byBoZWFkZXIgaDN7b3BhY2l0eTowfS52dWVzYXgtYXBwLWlzLXJ0bCAuZGlhbG9nLXQtZW50ZXIgaGVhZGVyIGgzLC52dWVzYXgtYXBwLWlzLXJ0bCAuZGlhbG9nLXQtbGVhdmUtdG8gaGVhZGVyIGgzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg1MHB4KSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSg1MHB4KSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtbHRyIC5kaWFsb2ctdC1lbnRlciBoZWFkZXIgaDMsLnZ1ZXNheC1hcHAtaXMtbHRyIC5kaWFsb2ctdC1sZWF2ZS10byBoZWFkZXIgaDN7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MHB4KSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTBweCkhaW1wb3J0YW50fS5kaWFsb2ctdC1lbnRlciBmb290ZXIgYnV0dG9uLC5kaWFsb2ctdC1sZWF2ZS10byBmb290ZXIgYnV0dG9uey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCk7b3BhY2l0eTowfS5jb24tdnMtZGlhbG9ney13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzO3RyYW5zaXRpb246YWxsIC4yczt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmZpeGVkO3RvcDowO3otaW5kZXg6MzAwMDA7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO29wYWNpdHk6MX0udnVlc2F4LWFwcC1pcy1ydGwgLmNvbi12cy1kaWFsb2d7cmlnaHQ6MH0udnVlc2F4LWFwcC1pcy1sdHIgLmNvbi12cy1kaWFsb2d7bGVmdDowfS5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2ctZGFya3t3aWR0aDoxMDAlO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNCk7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7aGVpZ2h0OjEwMCU7ei1pbmRleDoxMDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7b3BhY2l0eToxfS52dWVzYXgtYXBwLWlzLXJ0bCAuY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nLWRhcmt7cmlnaHQ6MH0udnVlc2F4LWFwcC1pcy1sdHIgLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZy1kYXJre2xlZnQ6MH0uY29uLXZzLWRpYWxvZyAudnMtZGlhbG9ney13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzO3RyYW5zaXRpb246YWxsIC4yczt6LWluZGV4OjEwMDt3aWR0aDpjYWxjKDEwMCUgLSAyMHB4KTttYXJnaW46MTBweDttYXgtd2lkdGg6NDAwcHg7Ym9yZGVyLXJhZGl1czo2cHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgNXB4IDIwcHggMCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93OjAgNXB4IDIwcHggMCByZ2JhKDAsMCwwLC4xKTtiYWNrZ3JvdW5kOiNmZmY7LXdlYmtpdC1hbmltYXRpb246cmVib3VuZCAuM3M7YW5pbWF0aW9uOnJlYm91bmQgLjNzfS5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cubG9ja2Vkey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMDIpO3RyYW5zZm9ybTpzY2FsZSgxLjAyKX0uY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIC52cy1kaWFsb2ctdGV4dHtwYWRkaW5nOjEwcHg7Zm9udC1zaXplOi44NzVlbTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yM3MgZWFzZSAuMXM7dHJhbnNpdGlvbjphbGwgLjIzcyBlYXNlIC4xc30uY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGhlYWRlcnt3aWR0aDoxMDAlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtiYWNrZ3JvdW5kOiNmOGY4Zjg7Ym9yZGVyLXJhZGl1czo1cHggNXB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgaGVhZGVyIC5jb24tdGl0bGUtYWZ0ZXJ7d2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czo1cHggNXB4IDAgMH0uY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGhlYWRlciBzcGFuLmFmdGVyey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjIzcyBlYXNlIC4xczt0cmFuc2l0aW9uOmFsbCAuMjNzIGVhc2UgLjFzO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt3aWR0aDozcHg7aGVpZ2h0OjEwMCU7ZGlzcGxheTpibG9ja30udnVlc2F4LWFwcC1pcy1ydGwgLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyBoZWFkZXIgc3Bhbi5hZnRlcntyaWdodDowfS52dWVzYXgtYXBwLWlzLWx0ciAuY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGhlYWRlciBzcGFuLmFmdGVye2xlZnQ6MH0uY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGhlYWRlciBoM3std2Via2l0LXRyYW5zaXRpb246YWxsIC4yM3MgZWFzZSAuMXM7dHJhbnNpdGlvbjphbGwgLjIzcyBlYXNlIC4xcztwYWRkaW5nOjhweDtmb250LXNpemU6MS4ycmVtO21hcmdpbjowfS52dWVzYXgtYXBwLWlzLXJ0bCAuY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGhlYWRlciBoM3twYWRkaW5nLXJpZ2h0OjEycHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgaGVhZGVyIGgze3BhZGRpbmctbGVmdDoxMnB4fS5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgaGVhZGVyIC52cy1kaWFsb2ctY2FuY2Vsey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjIzcyBlYXNlIC4xczt0cmFuc2l0aW9uOmFsbCAuMjNzIGVhc2UgLjFzO3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6OHB4O2N1cnNvcjpwb2ludGVyOy13ZWJraXQtYm94LXNoYWRvdzowIDVweCAyMHB4IDAgcmdiYSgwLDAsMCwuMSk7Ym94LXNoYWRvdzowIDVweCAyMHB4IDAgcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czo1cHg7YmFja2dyb3VuZDojZmZmO2ZvbnQtc2l6ZToxLjI1ZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgaGVhZGVyIC52cy1kaWFsb2ctY2FuY2Vsey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtOHB4LC04cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLThweCwtOHB4KX0udnVlc2F4LWFwcC1pcy1sdHIgLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyBoZWFkZXIgLnZzLWRpYWxvZy1jYW5jZWx7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDhweCwtOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDhweCwtOHB4KX0uY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGhlYWRlciAudnMtZGlhbG9nLWNhbmNlbDpob3Zlcnstd2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93OjAgMCAwIDAgcmdiYSgwLDAsMCwuMSl9LnZ1ZXNheC1hcHAtaXMtcnRsIC5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgaGVhZGVyIC52cy1kaWFsb2ctY2FuY2VsOmhvdmVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNXB4LC01cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTVweCwtNXB4KX0udnVlc2F4LWFwcC1pcy1sdHIgLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyBoZWFkZXIgLnZzLWRpYWxvZy1jYW5jZWw6aG92ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDVweCwtNXB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDVweCwtNXB4KX0uY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGZvb3RlcntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwb3NpdGlvbjpyZWxhdGl2ZX0udnVlc2F4LWFwcC1pcy1ydGwgLmNvbi12cy1kaWFsb2cgLnZzLWRpYWxvZyBmb290ZXIgYnV0dG9ue21hcmdpbi1yaWdodDowfS52dWVzYXgtYXBwLWlzLWx0ciAuY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGZvb3RlciBidXR0b257bWFyZ2luLWxlZnQ6MH0uY29uLXZzLWRpYWxvZyAudnMtZGlhbG9nIGZvb3RlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcIjt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6OTAlO2hlaWdodDoxcHg7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNSl9LnZ1ZXNheC1hcHAtaXMtcnRsIC5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgZm9vdGVyOmJlZm9yZXttYXJnaW4tcmlnaHQ6NSV9LnZ1ZXNheC1hcHAtaXMtbHRyIC5jb24tdnMtZGlhbG9nIC52cy1kaWFsb2cgZm9vdGVyOmJlZm9yZXttYXJnaW4tbGVmdDo1JX0udnMtZGlhbG9nLXByaW1hcnkgLnZzLWRpYWxvZyAudnMtZGlhbG9nLWhlYWRlcntjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1kaWFsb2ctcHJpbWFyeSAudnMtZGlhbG9nIC5hZnRlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLWRpYWxvZy1zZWNvbmRhcnkgLnZzLWRpYWxvZyAudnMtZGlhbG9nLWhlYWRlcntjb2xvcjpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLWRpYWxvZy1zZWNvbmRhcnkgLnZzLWRpYWxvZyAuYWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLWRpYWxvZy1kYW5nZXIgLnZzLWRpYWxvZyAudnMtZGlhbG9nLWhlYWRlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWRpYWxvZy1kYW5nZXIgLnZzLWRpYWxvZyAuYWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWRpYWxvZy1zdWNjZXNzIC52cy1kaWFsb2cgLnZzLWRpYWxvZy1oZWFkZXJ7Y29sb3I6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtZGlhbG9nLXN1Y2Nlc3MgLnZzLWRpYWxvZyAuYWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS52cy1kaWFsb2ctd2FybmluZyAudnMtZGlhbG9nIC52cy1kaWFsb2ctaGVhZGVye2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LnZzLWRpYWxvZy13YXJuaW5nIC52cy1kaWFsb2cgLmFmdGVye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0udnMtZGlhbG9nLWRhcmsgLnZzLWRpYWxvZyAudnMtZGlhbG9nLWhlYWRlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1kaWFsb2ctZGFyayAudnMtZGlhbG9nIC5hZnRlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWRpYWxvZy1saWdodCAudnMtZGlhbG9nIC52cy1kaWFsb2ctaGVhZGVye2NvbG9yOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfS52cy1kaWFsb2ctbGlnaHQgLnZzLWRpYWxvZyAuYWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0udnMtZGl2aWRlcnt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjE1cHggMDtjbGVhcjpib3RoO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0udnMtZGl2aWRlciAuYWZ0ZXIsLnZzLWRpdmlkZXIgLmJlZm9yZXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LnZzLWRpdmlkZXItLXRleHR7Y3Vyc29yOmRlZmF1bHQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcDtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZy1sZWZ0OjEycHg7cGFkZGluZy1yaWdodDoxMnB4O2ZvbnQtc2l6ZTouOTM3NWVtfS52cy1kaXZpZGVyLS1pY29ue2ZvbnQtc2l6ZToxLjI1ZW19LnZzLWRpdmlkZXItYm9yZGVyLXByaW1hcnl7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1kaXZpZGVyLXRleHQtcHJpbWFyeXtjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1kaXZpZGVyLWJhY2tncm91bmQtcHJpbWFyeXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLWRpdmlkZXItYm9yZGVyLXNlY29uZGFyeXtib3JkZXItdG9wLWNvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0udnMtZGl2aWRlci10ZXh0LXNlY29uZGFyeXtjb2xvcjpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLWRpdmlkZXItYmFja2dyb3VuZC1zZWNvbmRhcnl7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLWRpdmlkZXItYm9yZGVyLWRhbmdlcntib3JkZXItdG9wLWNvbG9yOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnMtZGl2aWRlci10ZXh0LWRhbmdlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWRpdmlkZXItYmFja2dyb3VuZC1kYW5nZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWRpdmlkZXItYm9yZGVyLXN1Y2Nlc3N7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS52cy1kaXZpZGVyLXRleHQtc3VjY2Vzc3tjb2xvcjpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS52cy1kaXZpZGVyLWJhY2tncm91bmQtc3VjY2Vzc3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSl9LnZzLWRpdmlkZXItYm9yZGVyLXdhcm5pbmd7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1kaXZpZGVyLXRleHQtd2FybmluZ3tjb2xvcjpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1kaXZpZGVyLWJhY2tncm91bmQtd2FybmluZ3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LnZzLWRpdmlkZXItYm9yZGVyLWRhcmt7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1kaXZpZGVyLXRleHQtZGFya3tjb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1kaXZpZGVyLWJhY2tncm91bmQtZGFya3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWRpdmlkZXItYm9yZGVyLWxpZ2h0e2JvcmRlci10b3AtY29sb3I6cmdiYSh2YXIoLS12cy1saWdodCksMSl9LnZzLWRpdmlkZXItdGV4dC1saWdodHtjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0udnMtZGl2aWRlci1iYWNrZ3JvdW5kLWxpZ2h0e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1saWdodCksMSl9LmRyb3Bkb3duLWdyb3VwLWVudGVyLWFjdGl2ZSwuZHJvcGRvd24tZ3JvdXAtbGVhdmUtYWN0aXZley13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IC4yNXM7dHJhbnNpdGlvbjpvcGFjaXR5IC4yNXN9LmRyb3Bkb3duLWdyb3VwLWVudGVyLC5kcm9wZG93bi1ncm91cC1sZWF2ZS10b3tvcGFjaXR5OjB9LnZzLWNvbi1kcm9wZG93bntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS52cy1jb24tZHJvcGRvd24gKntwb2ludGVyLWV2ZW50czpub25lfS52cy1jb24tZHJvcGRvd24gYXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmUhaW1wb3J0YW50Oy1tb3otdXNlci1zZWxlY3Q6bm9uZSFpbXBvcnRhbnQ7LW1zLXVzZXItc2VsZWN0Om5vbmUhaW1wb3J0YW50O3VzZXItc2VsZWN0Om5vbmUhaW1wb3J0YW50fS52cy1jb24tZHJvcGRvd246YWN0aXZle29wYWNpdHk6MSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1jb24tZHJvcGRvd24gLmEtaWNvbnstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZTstbXMtZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2U7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9LnZzLWRyb3Bkb3duLS1ncm91cHtwb3NpdGlvbjpyZWxhdGl2ZTtsaXN0LXN0eWxlOm5vbmU7d2lkdGg6Y2FsYygxMDAlIC0gNnB4KTttYXJnaW4tbGVmdDozcHg7d2lkdGg6YXV0bztkaXNwbGF5OmJsb2NrO3BhZGRpbmc6NXB4O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctcmlnaHQ6MTBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZX0udnMtZHJvcGRvd24tLWdyb3VwLm1hcmdpbkljb257cGFkZGluZy1yaWdodDoyNXB4fS52cy1kcm9wZG93bi0tZ3JvdXAubWFyZ2luSWNvbjpob3ZlciAuY29uLWRyb3Bkb3duLS1ncm91cHtib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgwLDAsMCwuMSl9LnZzLWRyb3Bkb3duLS1ncm91cC5tYXJnaW5JY29uOmhvdmVyPi5pY29uLWdyb3Vwey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKC0xODBkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgtMTgwZGVnKTtvcGFjaXR5OjB9LnZzLWRyb3Bkb3duLS1ncm91cC1sYWJlbHtmb250LXNpemU6LjkzNzVlbTtmb250LXdlaWdodDo0MDA7cG9pbnRlci1ldmVudHM6bm9uZX0udnMtZHJvcGRvd24tLWdyb3VwLWljb257cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6NHB4O2ZvbnQtc2l6ZToxLjEyNWVtO3RvcDo1MCU7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmNvbi1kcm9wZG93bi0tZ3JvdXAtY29uLXVse3BhZGRpbmctbGVmdDozcHg7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MDt0b3A6MDttaW4td2lkdGg6MTMwcHg7d2lkdGg6YXV0bzt6LWluZGV4OjEwMDA7YmFja2dyb3VuZDppbmhlcml0O292ZXJmbG93OmhpZGRlbjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlO2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKX0uY29uLWRyb3Bkb3duLS1ncm91cC11bHtwYWRkaW5nLXRvcDo1cHg7cGFkZGluZy1sZWZ0OjA7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6NXB4fS5uby1jYXNjYWRpbmd7Zm9udC13ZWlnaHQ6NzAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA1KTtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDttYXJnaW4tdG9wOjVweCFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MH0ubm8tY2FzY2FkaW5nPmgze3BhZGRpbmc6MCAxMHB4O2ZvbnQtc2l6ZTouOTM3NWVtO3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHg7Y3Vyc29yOmRlZmF1bHR9Lm5vLWNhc2NhZGluZyAuY29uLWRyb3Bkb3duLS1ncm91cC1uby1jYXNjYWRpbmd7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwO2hlaWdodDphdXRvIWltcG9ydGFudDtvcGFjaXR5OjEhaW1wb3J0YW50O2JvcmRlci1sZWZ0OjFweCBzb2xpZCB0cmFuc3BhcmVudCFpbXBvcnRhbnR9Lm5vLWNhc2NhZGluZyAuY29uLWRyb3Bkb3duLS1ncm91cC1uby1jYXNjYWRpbmcgdWx7d2lkdGg6MTAwJTstd2Via2l0LWJveC1zaGFkb3c6MCA1cHggMjBweCAwIHRyYW5zcGFyZW50IWltcG9ydGFudDtib3gtc2hhZG93OjAgNXB4IDIwcHggMCB0cmFuc3BhcmVudCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50fS52cy1kcm9wZG93bi0taXRlbXstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTAwO2JvcmRlci1yYWRpdXM6NXB4O3dpZHRoOmNhbGMoMTAwJSAtIDZweCk7bWFyZ2luOjAgM3B4O2xpc3Qtc3R5bGU6bm9uZTtmb250LXdlaWdodDo0MDAhaW1wb3J0YW50O2ZvbnQtc2l6ZTouOTM3NWVtfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtZHJvcGRvd24tLWl0ZW17dGV4dC1hbGlnbjpyaWdodH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWRyb3Bkb3duLS1pdGVte3RleHQtYWxpZ246bGVmdH0udnMtZHJvcGRvd24tLWl0ZW0gLnZzLWRyb3Bkb3duLS1pdGVtLWxpbmt7YmFja2dyb3VuZDppbmhlcml0IWltcG9ydGFudDtjb2xvcjppbmhlcml0IWltcG9ydGFudDtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO3BhZGRpbmc6NXB4O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctcmlnaHQ6MTBweDt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Y29sb3I6cmdiYSgwLDAsMCwuNyl9LnZzLWRyb3Bkb3duLS1pdGVtIC52cy1kcm9wZG93bi0taXRlbS1saW5rLmRpc2FibGVkey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwb2ludGVyLWV2ZW50czpub25lIWltcG9ydGFudDtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi41IWltcG9ydGFudDtjb2xvcjpyZ2JhKDAsMCwwLC41KSFpbXBvcnRhbnR9LnZzLWRyb3Bkb3duLS1pdGVtLmRpdmlkZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMDgpO21hcmdpbi10b3A6NXB4fS5kcm9wZG93bngtZW50ZXIsLmRyb3Bkb3dueC1sZWF2ZS10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlLDhweCkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUsOHB4KSFpbXBvcnRhbnR9LmNvbi12cy1kcm9wZG93bi0tbWVudXtwYWRkaW5nLXRvcDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDphdXRvO3dpZHRoOmF1dG87ei1pbmRleDo0MDAwMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUpOy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IC4yNXMsd2lkdGggLjNzIGVhc2UsLXdlYmtpdC10cmFuc2Zvcm0gLjI1czt0cmFuc2l0aW9uOm9wYWNpdHkgLjI1cyx3aWR0aCAuM3MgZWFzZSwtd2Via2l0LXRyYW5zZm9ybSAuMjVzO3RyYW5zaXRpb246b3BhY2l0eSAuMjVzLHRyYW5zZm9ybSAuMjVzLHdpZHRoIC4zcyBlYXNlO3RyYW5zaXRpb246b3BhY2l0eSAuMjVzLHRyYW5zZm9ybSAuMjVzLHdpZHRoIC4zcyBlYXNlLC13ZWJraXQtdHJhbnNmb3JtIC4yNXN9LmNvbi12cy1kcm9wZG93bi0tbWVudS5yaWdodHggLnZzLWRyb3Bkb3duLS1tZW51LS1hZnRlcntsZWZ0OjMwcHg7cmlnaHQ6MH0uY29uLXZzLWRyb3Bkb3duLS1tZW51OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MTAwJX0udnMtZHJvcGRvd24tLW1lbnV7YmFja2dyb3VuZDojZmZmO3BhZGRpbmctbGVmdDowIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjVweDstd2Via2l0LWJveC1zaGFkb3c6MCA1cHggMjVweCAwIHJnYmEoMCwwLDAsLjEpO2JveC1zaGFkb3c6MCA1cHggMjVweCAwIHJnYmEoMCwwLDAsLjEpO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7cGFkZGluZy10b3A6NXB4O3BhZGRpbmctYm90dG9tOjVweDtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MH0udnMtZHJvcGRvd24tcmlnaHQtLW1lbnUtLWFmdGVye2xlZnQ6MjBweH0udnMtZHJvcGRvd24tLW1lbnUtLWFmdGVyLC52cy1kcm9wZG93bi1yaWdodC0tbWVudS0tYWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtkaXNwbGF5OmJsb2NrO2JhY2tncm91bmQ6I2ZmZjstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZSgtN3B4KTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGUoLTdweCk7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpO3otaW5kZXg6MTA7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS52cy1kcm9wZG93bi0tbWVudS0tYWZ0ZXJ7cmlnaHQ6MTBweH0ubm90SGVpZ2h0IC52cy1kcm9wZG93bi1tZW51OmFmdGVye3RvcDphdXRvO2JvdHRvbTowO2JvcmRlci10b3A6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlKDdweCk7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlKDdweCl9LnZzLWRyb3Bkb3duLS1jdXN0b217cGFkZGluZzo1cHghaW1wb3J0YW50O3BhZGRpbmctdG9wOjhweCFpbXBvcnRhbnR9LnZzLWljb257Y29sb3I6aW5oZXJpdDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MXJlbX0udnMtaWNvbi5sYXJnZXtmb250LXNpemU6My4xMjVyZW07d2lkdGg6My4xMjVyZW07aGVpZ2h0OjMuMTI1cmVtfS52cy1pY29uLm1lZGl1bXtmb250LXNpemU6Mi4zMXJlbTt3aWR0aDoyLjMxcmVtO2hlaWdodDoyLjMxcmVtfS52cy1pY29uLnNtYWxse2ZvbnQtc2l6ZToxLjVyZW07d2lkdGg6MS41cmVtO2hlaWdodDoxLjVyZW19LnZzLWljb24tYmd7d2lkdGg6MXJlbTtoZWlnaHQ6MXJlbX0udnMtaWNvbi1iZy5iZy1sYXJnZXt3aWR0aDozLjEyNXJlbTtoZWlnaHQ6My4xMjVyZW19LnZzLWljb24tYmcuYmctbWVkaXVte3dpZHRoOjIuMzFyZW07aGVpZ2h0OjIuMzFyZW19LnZzLWljb24tYmcuYmctc21hbGx7d2lkdGg6MS41cmVtO2hlaWdodDoxLjVyZW19LnJvdW5ke2JvcmRlci1yYWRpdXM6NTAlfS5jb24tdnMtaWNvbi1iZy1wcmltYXJ5LC5kb3QtY291bnQtcHJpbWFyeXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLWljb24tcHJpbWFyeXtjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS5jb24tdnMtaWNvbi1iZy1zZWNvbmRhcnksLmRvdC1jb3VudC1zZWNvbmRhcnl7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLWljb24tc2Vjb25kYXJ5e2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0uY29uLXZzLWljb24tYmctZGFuZ2VyLC5kb3QtY291bnQtZGFuZ2Vye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpfS52cy1pY29uLWRhbmdlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LmNvbi12cy1pY29uLWJnLXN1Y2Nlc3MsLmRvdC1jb3VudC1zdWNjZXNze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtaWNvbi1zdWNjZXNze2NvbG9yOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSl9LmNvbi12cy1pY29uLWJnLXdhcm5pbmcsLmRvdC1jb3VudC13YXJuaW5ne2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0udnMtaWNvbi13YXJuaW5ne2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LmNvbi12cy1pY29uLWJnLWRhcmssLmRvdC1jb3VudC1kYXJre2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwxKX0udnMtaWNvbi1kYXJre2NvbG9yOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LmNvbi12cy1pY29uLWJnLWxpZ2h0LC5kb3QtY291bnQtbGlnaHR7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0udnMtaWNvbi1saWdodHtjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0udnMtaW1hZ2Vze2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydDstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52cy1pbWFnZXMubm90Qm9yZGVyUmFkaXVzIC5jb24tdnMtaW1hZ2UsLnZzLWltYWdlcy5ub3RCb3JkZXJSYWRpdXMgLnZzLWltYWdle2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9LnZzLWltYWdlcy5hbHRlcm5hdGluZyAudnMtaW1hZ2U6bnRoLWNoaWxkKDVuKXt3aWR0aDpjYWxjKDUwJSAtIDRweCk7ZmxvYXQ6cmlnaHR9LnZzLWltYWdlcy5hbHRlcm5hdGluZy5ub3RNYXJnaW4gLnZzLWltYWdlOm50aC1jaGlsZCg1bil7d2lkdGg6NTAlfS52cy1pbWFnZXMubm90TWFyZ2luIC52cy1pbWFnZXttYXJnaW46MDt3aWR0aDoyNSV9LnZzLWltYWdlcy0tdWx7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpzdGFydDstbXMtZmxleC1hbGlnbjpzdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0Oy13ZWJraXQtYm94LXBhY2s6c3RhcnQ7LW1zLWZsZXgtcGFjazpzdGFydDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7bWFyZ2luOjA7cGFkZGluZzoxMHB4O3dpZHRoOjEwMCV9LnZzLWltYWdle3dpZHRoOmNhbGMoMjUlIC0gNHB4KTtoZWlnaHQ6YXV0bztsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjJweDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7ZmxvYXQ6bGVmdDstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6dmlzaWJsZTtiYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGU7Y3Vyc29yOnBvaW50ZXJ9LnZzLWltYWdlLC52cy1pbWFnZSAuY29uLXZzLWltYWdle2JvcmRlci1yYWRpdXM6MTBweDtwb3NpdGlvbjpyZWxhdGl2ZX0udnMtaW1hZ2UgLmNvbi12cy1pbWFnZXtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJTt6LWluZGV4OjIwMH0udnMtaW1hZ2UgLmltYWctYmx1cntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtib3JkZXItcmFkaXVzOjEwcHg7b3BhY2l0eTowO3otaW5kZXg6MTAwOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LWZpbHRlcjpibHVyKDVweCk7ZmlsdGVyOmJsdXIoNXB4KX0udnMtaW1hZ2UtLWltZywudnMtaW1hZ2UgLmltYWctYmx1cnt3aWR0aDoxMDAlOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZX0udnMtaW1hZ2UtLWltZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTtwYWRkaW5nLWJvdHRvbToxMDAlO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LnZzLWltYWdlcy1ob3Zlci1ibHVyIC52cy1pbWFnZTpob3Zlcnstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjA0KSB0cmFuc2xhdGVZKC0ycHgpO3RyYW5zZm9ybTpzY2FsZSgxLjA0KSB0cmFuc2xhdGVZKC0ycHgpO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MzAwfS52cy1pbWFnZXMtaG92ZXItYmx1ciAudnMtaW1hZ2U6aG92ZXIgLmltYWctYmx1cntvcGFjaXR5Oi44Oy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC45KTt0cmFuc2Zvcm06c2NhbGUoLjkpOy13ZWJraXQtZmlsdGVyOmJsdXIoNXB4KTtmaWx0ZXI6Ymx1cig1cHgpO2JvdHRvbTotMTBweH0udnMtaW1hZ2VzLWhvdmVyLXpvb20gLnZzLWltYWdlOmhvdmVyIC52cy1pbWFnZS0taW1ney13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMik7dHJhbnNmb3JtOnNjYWxlKDEuMil9LnZzLWltYWdlcy1ob3Zlci1kZWZhdWx0IC52cy1pbWFnZTpob3Zlcnstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguOSk7dHJhbnNmb3JtOnNjYWxlKC45KX0udnMtaW1hZ2VzLWhvdmVyLWRlZmF1bHQgLnZzLWltYWdlOmhvdmVyIC52cy1pbWFnZS0taW1ney13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMyk7dHJhbnNmb3JtOnNjYWxlKDEuMyl9LnZzLWltYWdlcy1ob3Zlci1kYXJrIC52cy1pbWFnZTpob3ZlcntiYWNrZ3JvdW5kOiMwMDA7Ym9yZGVyLXJhZGl1czoyMHB4fS52cy1pbWFnZXMtaG92ZXItZGFyayAudnMtaW1hZ2U6aG92ZXIgLnZzLWltYWdlLS1pbWd7b3BhY2l0eTouNDtib3JkZXItcmFkaXVzOjIwcHh9LnZzLWltYWdlcy1ob3Zlci1zY2FsZSAudnMtaW1hZ2U6aG92ZXJ7ei1pbmRleDozMDA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4xNSk7dHJhbnNmb3JtOnNjYWxlKDEuMTUpOy13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxNXB4IDAgcmdiYSgwLDAsMCwuMyk7Ym94LXNoYWRvdzowIDNweCAxNXB4IDAgcmdiYSgwLDAsMCwuMyl9LnZzLWltYWdlcy1ob3Zlci1jdXJ0YWluIC52cy1pbWFnZXtvdmVyZmxvdzpoaWRkZW59LnZzLWltYWdlcy1ob3Zlci1jdXJ0YWluIC52cy1pbWFnZTphZnRlcntjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjUpO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ei1pbmRleDo0MDA7Ym9yZGVyLXJhZGl1czppbmhlcml0Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlfS52cy1pbWFnZXMtaG92ZXItY3VydGFpbiAudnMtaW1hZ2UgLnZzLWltYWdlLS1pbWd7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4yKSB0cmFuc2xhdGVZKC0xMHB4KTt0cmFuc2Zvcm06c2NhbGUoMS4yKSB0cmFuc2xhdGVZKC0xMHB4KX0udnMtaW1hZ2VzLWhvdmVyLWN1cnRhaW4gLnZzLWltYWdlOmhvdmVyIC52cy1pbWFnZS0taW1ney13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMjUpIHRyYW5zbGF0ZVkoMTBweCk7dHJhbnNmb3JtOnNjYWxlKDEuMjUpIHRyYW5zbGF0ZVkoMTBweCl9LnZzLWltYWdlcy1ob3Zlci1jdXJ0YWluIC52cy1pbWFnZTpob3ZlcjphZnRlcnstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGUoMCk7dHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZSgwKTtvcGFjaXR5OjF9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjcwMHB4KXsudnMtaW1hZ2V7d2lkdGg6Y2FsYygzMyUgLSA0cHgpfX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTUwcHgpey52cy1pbWFnZXt3aWR0aDpjYWxjKDUwJSAtIDRweCl9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDozNTBweCl7LnZzLWltYWdle3dpZHRoOmNhbGMoMTAwJSAtIDRweCl9fS5wbGFjZWhvbGRlcngtZW50ZXIsLnBsYWNlaG9sZGVyeC1sZWF2ZS10b3tvcGFjaXR5OjB9LnZ1ZXNheC1hcHAtaXMtcnRsIC5wbGFjZWhvbGRlcngtZW50ZXIsLnZ1ZXNheC1hcHAtaXMtcnRsIC5wbGFjZWhvbGRlcngtbGVhdmUtdG97LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC0xNXB4KSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTVweCkhaW1wb3J0YW50fS52dWVzYXgtYXBwLWlzLWx0ciAucGxhY2Vob2xkZXJ4LWVudGVyLC52dWVzYXgtYXBwLWlzLWx0ciAucGxhY2Vob2xkZXJ4LWxlYXZlLXRvey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgxNXB4KSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxNXB4KSFpbXBvcnRhbnR9Lmljb24tdmFsaWRhdGUtZW50ZXIsLmljb24tdmFsaWRhdGUtbGVhdmUtdG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC41KSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnNjYWxlKC41KSFpbXBvcnRhbnR9LnZzLWNvbi1pbnB1dC1sYWJlbHtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlO3dpZHRoOjIwMHB4fS52cy1jb24taW5wdXQtbGFiZWwuaXMtbGFiZWwtcGxhY2Vob2xkZXJ7bWFyZ2luLXRvcDoxN3B4fS52cy1jb24taW5wdXQtbGFiZWwgLnZzLWNvbi1pbnB1dHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOnN0YXJ0Oy1tcy1mbGV4LWFsaWduOnN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0udnMtaW5wdXQtLWljb257cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDA7Zm9udC1zaXplOjEuMXJlbTtjb2xvcjpyZ2JhKDAsMCwwLC40KTtjdXJzb3I6ZGVmYXVsdDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dG9wOjhweH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1pY29ue3JpZ2h0OjVweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1pY29ue2xlZnQ6NXB4fS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtLWljb257Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtLWljb257Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1pY29ue3BhZGRpbmctbGVmdDozcHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taWNvbntwYWRkaW5nLXJpZ2h0OjNweH0udnMtaW5wdXQtLWljb24uc21hbGx7dG9wOjRweDtmb250LXNpemU6MXJlbX0udnMtaW5wdXQtLWljb24ubGFyZ2V7dG9wOjE0cHh9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taWNvbi5pY29uLWFmdGVye3JpZ2h0OmF1dG99LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taWNvbi5pY29uLWFmdGVye2xlZnQ6YXV0b30udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1pY29uLmljb24tYWZ0ZXJ7bGVmdDo1cHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taWNvbi5pY29uLWFmdGVye3JpZ2h0OjVweH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1pY29uLmljb24tYWZ0ZXJ7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1pY29uLmljb24tYWZ0ZXJ7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtLWljb24uaWNvbi1hZnRlcntib3JkZXItbGVmdDowfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtLWljb24uaWNvbi1hZnRlcntib3JkZXItcmlnaHQ6MH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1pY29uLmljb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDozcHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taWNvbi5pY29uLWFmdGVye3BhZGRpbmctbGVmdDozcHh9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taWNvbi5pY29uLWFmdGVye3BhZGRpbmctbGVmdDowfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtLWljb24uaWNvbi1hZnRlcntwYWRkaW5nLXJpZ2h0OjB9LnZzLWlucHV0LS1pY29uLmljb24tbm8tYm9yZGVye2JvcmRlcjowfS52cy1pbnB1dC0tcGxhY2Vob2xkZXJ7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjVweDtwYWRkaW5nOi40cmVtO3dpZHRoOjEwMCU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmhpZGRlbjtmb250LXNpemU6Ljg1cmVtO2NvbG9yOnJnYmEoMCwwLDAsLjQpO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6dGV4dDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dG9wOi0xcHg7cG9pbnRlci1ldmVudHM6bm9uZX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1wbGFjZWhvbGRlcntyaWdodDowfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtLXBsYWNlaG9sZGVye2xlZnQ6MH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1wbGFjZWhvbGRlcntwYWRkaW5nLXJpZ2h0Oi41NXJlbX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1wbGFjZWhvbGRlcntwYWRkaW5nLWxlZnQ6LjU1cmVtfS52cy1pbnB1dC0tcGxhY2Vob2xkZXIuc21hbGx7cGFkZGluZzouMnJlbX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1wbGFjZWhvbGRlci5zbWFsbHtwYWRkaW5nLXJpZ2h0Oi41NXJlbX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1wbGFjZWhvbGRlci5zbWFsbHtwYWRkaW5nLWxlZnQ6LjU1cmVtfS52cy1pbnB1dC0tcGxhY2Vob2xkZXIubGFyZ2V7cGFkZGluZy10b3A6LjhyZW07cGFkZGluZzouN3JlbX0udnMtaW5wdXQtLWxhYmVse2ZvbnQtc2l6ZTouODVyZW07Y29sb3I6cmdiYSgwLDAsMCwuNyl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0tbGFiZWx7cGFkZGluZy1yaWdodDo1cHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0tbGFiZWx7cGFkZGluZy1sZWZ0OjVweH0udnMtaW5wdXQtLXRleHQtdmFsaWRhdGlvbntwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6LjY1cmVtO292ZXJmbG93OmhpZGRlbjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlfS52cy1pbnB1dC0tdGV4dC12YWxpZGF0aW9uIC52cy1pbnB1dC0tdGV4dC12YWxpZGF0aW9uLXNwYW57cGFkZGluZzoycHggNHB4O3BhZGRpbmctYm90dG9tOjRweDtkaXNwbGF5OmJsb2NrfS52cy1pbnB1dC0taWNvbi12YWxpZGF0ZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtmb250LXNpemU6MS4xcmVtO2hlaWdodDoxMDAlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzowIDRweDtib3JkZXItcmFkaXVzOjAgNXB4IDVweCAwOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2V9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taWNvbi12YWxpZGF0ZXtsZWZ0OjB9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taWNvbi12YWxpZGF0ZXtyaWdodDowfS52cy1pbnB1dC0taWNvbi12YWxpZGF0ZS5pY29uLWJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDphdXRvO3otaW5kZXg6MTAwO2ZvbnQtc2l6ZToxLjFyZW07Y3Vyc29yOmRlZmF1bHQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RvcDowfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtLWljb24tdmFsaWRhdGUuaWNvbi1iZWZvcmV7cmlnaHQ6MH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1pY29uLXZhbGlkYXRlLmljb24tYmVmb3Jle2xlZnQ6MH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1pY29uLXZhbGlkYXRlLmljb24tYmVmb3Jle3BhZGRpbmctbGVmdDouMnJlbX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1pY29uLXZhbGlkYXRlLmljb24tYmVmb3Jle3BhZGRpbmctcmlnaHQ6LjJyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taWNvbi12YWxpZGF0ZS5pY29uLWJlZm9yZXtib3JkZXItbGVmdDoxcHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taWNvbi12YWxpZGF0ZS5pY29uLWJlZm9yZXtib3JkZXItcmlnaHQ6MXB4fS52cy1pbnB1dC0taW5wdXR7Y29sb3I6aW5oZXJpdDtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOi40cmVtO2JvcmRlci1yYWRpdXM6NXB4O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMik7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwIHJnYmEoMCwwLDAsLjE1KTtib3gtc2hhZG93OjAgMCAwIDAgcmdiYSgwLDAsMCwuMTUpOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7d2lkdGg6MTAwJX0udnMtaW5wdXQtLWlucHV0LnNtYWxse3BhZGRpbmc6LjJyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taW5wdXQuc21hbGx7cGFkZGluZy1yaWdodDouNTVyZW19LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taW5wdXQuc21hbGx7cGFkZGluZy1sZWZ0Oi41NXJlbX0udnMtaW5wdXQtLWlucHV0LnNtYWxsKy52cy1wbGFjZWhvbGRlci1sYWJlbC1zbWFsbHtwYWRkaW5nOjAgLjRyZW19LnZzLWlucHV0LS1pbnB1dC5ub3JtYWx7cGFkZGluZzouNHJlbX0udnMtaW5wdXQtLWlucHV0Lmxhcmdle3BhZGRpbmc6LjhyZW19LnZzLWlucHV0LS1pbnB1dC5sYXJnZSsudnMtcGxhY2Vob2xkZXItbGFiZWwtbGFyZ2V7cGFkZGluZzouNnJlbX0udnMtaW5wdXQtLWlucHV0OmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxMHB4IDAgcmdiYSgwLDAsMCwuMTUpO2JveC1zaGFkb3c6MCAzcHggMTBweCAwIHJnYmEoMCwwLDAsLjE1KX0udnMtaW5wdXQtLWlucHV0Lmhhc1ZhbHVlKy52cy1wbGFjZWhvbGRlci1sYWJlbCwudnMtaW5wdXQtLWlucHV0OmZvY3VzKy52cy1wbGFjZWhvbGRlci1sYWJlbHtmb250LXNpemU6LjdyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taW5wdXQuaGFzVmFsdWUrLnZzLXBsYWNlaG9sZGVyLWxhYmVsLC52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtLWlucHV0OmZvY3VzKy52cy1wbGFjZWhvbGRlci1sYWJlbHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoM3B4LC05MCUpIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlKDNweCwtOTAlKSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taW5wdXQuaGFzVmFsdWUrLnZzLXBsYWNlaG9sZGVyLWxhYmVsLC52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtLWlucHV0OmZvY3VzKy52cy1wbGFjZWhvbGRlci1sYWJlbHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTNweCwtOTAlKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtM3B4LC05MCUpIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1pbnB1dC5oYXNWYWx1ZSsudnMtcGxhY2Vob2xkZXItbGFiZWwsLnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taW5wdXQ6Zm9jdXMrLnZzLXBsYWNlaG9sZGVyLWxhYmVse3BhZGRpbmctcmlnaHQ6LjVyZW0haW1wb3J0YW50fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtLWlucHV0Lmhhc1ZhbHVlKy52cy1wbGFjZWhvbGRlci1sYWJlbCwudnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1pbnB1dDpmb2N1cysudnMtcGxhY2Vob2xkZXItbGFiZWx7cGFkZGluZy1sZWZ0Oi41cmVtIWltcG9ydGFudH0udnMtaW5wdXQtLWlucHV0Lmhhc1ZhbHVlKy52cy1wbGFjZWhvbGRlci1sYWJlbC1zbWFsbCwudnMtaW5wdXQtLWlucHV0OmZvY3VzKy52cy1wbGFjZWhvbGRlci1sYWJlbC1zbWFsbHtmb250LXNpemU6LjdyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taW5wdXQuaGFzVmFsdWUrLnZzLXBsYWNlaG9sZGVyLWxhYmVsLXNtYWxsLC52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtLWlucHV0OmZvY3VzKy52cy1wbGFjZWhvbGRlci1sYWJlbC1zbWFsbHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoM3B4LC0xMjAlKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgzcHgsLTEyMCUpIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1pbnB1dC5oYXNWYWx1ZSsudnMtcGxhY2Vob2xkZXItbGFiZWwtc21hbGwsLnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taW5wdXQ6Zm9jdXMrLnZzLXBsYWNlaG9sZGVyLWxhYmVsLXNtYWxsey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtM3B4LC0xMjAlKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtM3B4LC0xMjAlKSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taW5wdXQuaGFzVmFsdWUrLnZzLXBsYWNlaG9sZGVyLWxhYmVsLXNtYWxsLC52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtLWlucHV0OmZvY3VzKy52cy1wbGFjZWhvbGRlci1sYWJlbC1zbWFsbHtwYWRkaW5nLXJpZ2h0Oi41cmVtIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1pbnB1dC5oYXNWYWx1ZSsudnMtcGxhY2Vob2xkZXItbGFiZWwtc21hbGwsLnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taW5wdXQ6Zm9jdXMrLnZzLXBsYWNlaG9sZGVyLWxhYmVsLXNtYWxse3BhZGRpbmctbGVmdDouNXJlbSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taW5wdXQ6Zm9jdXMrLnZzLWlucHV0LS1wbGFjZWhvbGRlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTVweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNXB4KX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1pbnB1dDpmb2N1cysudnMtaW5wdXQtLXBsYWNlaG9sZGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg1cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoNXB4KX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1pbnB1dC5oYXNJY29ue3BhZGRpbmctcmlnaHQ6MzJweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LS1pbnB1dC5oYXNJY29ue3BhZGRpbmctbGVmdDozMnB4fS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtLWlucHV0Lmhhc0ljb24rLnZzLWlucHV0LS1wbGFjZWhvbGRlcntwYWRkaW5nLXJpZ2h0OjMycHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taW5wdXQuaGFzSWNvbisudnMtaW5wdXQtLXBsYWNlaG9sZGVye3BhZGRpbmctbGVmdDozMnB4fS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtLWlucHV0Lmljb24tYWZ0ZXItaW5wdXR7cGFkZGluZy1sZWZ0OjEuNzVyZW19LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taW5wdXQuaWNvbi1hZnRlci1pbnB1dHtwYWRkaW5nLXJpZ2h0OjEuNzVyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taW5wdXQuaWNvbi1hZnRlci1pbnB1dCsudnMtaW5wdXQtLXBsYWNlaG9sZGVye3BhZGRpbmctbGVmdDoxLjc1cmVtfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtLWlucHV0Lmljb24tYWZ0ZXItaW5wdXQrLnZzLWlucHV0LS1wbGFjZWhvbGRlcntwYWRkaW5nLXJpZ2h0OjEuNzVyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC0taW5wdXQuaGFzSWNvbi5pY29uLWFmdGVyLWlucHV0e3BhZGRpbmctcmlnaHQ6Ljg1ZW19LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC0taW5wdXQuaGFzSWNvbi5pY29uLWFmdGVyLWlucHV0e3BhZGRpbmctbGVmdDouODVlbX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LS1pbnB1dC5oYXNJY29uLmljb24tYWZ0ZXItaW5wdXQrLnZzLWlucHV0LS1wbGFjZWhvbGRlcntwYWRkaW5nLXJpZ2h0Oi44NWVtfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtLWlucHV0Lmhhc0ljb24uaWNvbi1hZnRlci1pbnB1dCsudnMtaW5wdXQtLXBsYWNlaG9sZGVye3BhZGRpbmctbGVmdDouODVlbX0udnMtaW5wdXQtLWlucHV0OmRpc2FibGVkLC52cy1pbnB1dC0taW5wdXQ6ZGlzYWJsZWQrLnZzLWlucHV0LS1wbGFjZWhvbGRlcntvcGFjaXR5Oi41O2N1cnNvcjpkZWZhdWx0O3BvaW50ZXItZXZlbnRzOm5vbmV9LnZzLWlucHV0LXByaW1hcnkgLnZzLWlucHV0LS1pbnB1dDpmb2N1c3tib3JkZXI6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSkhaW1wb3J0YW50fS52cy1pbnB1dC1wcmltYXJ5LmlzRm9jdXMgLnZzLWlucHV0LS1sYWJlbCwudnMtaW5wdXQtcHJpbWFyeSAudnMtaW5wdXQtLWlucHV0OmZvY3Vzfi5pY29uLWlucHV0eCwudnMtaW5wdXQtcHJpbWFyeSAudnMtaW5wdXQtLWlucHV0OmZvY3Vzfi52cy1wbGFjZWhvbGRlci1sYWJlbHtjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS5zcGFuLXRleHQtdmFsaWRhdGlvbi1wcmltYXJ5e2NvbG9yOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSkhaW1wb3J0YW50fS5pbnB1dC1pY29uLXZhbGlkYXRlLXByaW1hcnkgLnZzLWlucHV0LS1pbnB1dCwuaW5wdXQtaWNvbi12YWxpZGF0ZS1wcmltYXJ5IC52cy1pbnB1dC0taW5wdXQ6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpIWltcG9ydGFudH0uaW5wdXQtaWNvbi12YWxpZGF0ZS1wcmltYXJ5IC5pbnB1dC1pY29uLXZhbGlkYXRle2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuMik7Y29sb3I6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKX0udnMtaW5wdXQtc2Vjb25kYXJ5IC52cy1pbnB1dC0taW5wdXQ6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSkhaW1wb3J0YW50fS52cy1pbnB1dC1zZWNvbmRhcnkuaXNGb2N1cyAudnMtaW5wdXQtLWxhYmVsLC52cy1pbnB1dC1zZWNvbmRhcnkgLnZzLWlucHV0LS1pbnB1dDpmb2N1c34uaWNvbi1pbnB1dHgsLnZzLWlucHV0LXNlY29uZGFyeSAudnMtaW5wdXQtLWlucHV0OmZvY3Vzfi52cy1wbGFjZWhvbGRlci1sYWJlbHtjb2xvcjpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnNwYW4tdGV4dC12YWxpZGF0aW9uLXNlY29uZGFyeXtjb2xvcjpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSkhaW1wb3J0YW50fS5pbnB1dC1pY29uLXZhbGlkYXRlLXNlY29uZGFyeSAudnMtaW5wdXQtLWlucHV0LC5pbnB1dC1pY29uLXZhbGlkYXRlLXNlY29uZGFyeSAudnMtaW5wdXQtLWlucHV0OmZvY3Vze2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpIWltcG9ydGFudH0uaW5wdXQtaWNvbi12YWxpZGF0ZS1zZWNvbmRhcnkgLmlucHV0LWljb24tdmFsaWRhdGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksLjIpO2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0udnMtaW5wdXQtZGFuZ2VyIC52cy1pbnB1dC0taW5wdXQ6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLWRhbmdlciksMSkhaW1wb3J0YW50fS52cy1pbnB1dC1kYW5nZXIuaXNGb2N1cyAudnMtaW5wdXQtLWxhYmVsLC52cy1pbnB1dC1kYW5nZXIgLnZzLWlucHV0LS1pbnB1dDpmb2N1c34uaWNvbi1pbnB1dHgsLnZzLWlucHV0LWRhbmdlciAudnMtaW5wdXQtLWlucHV0OmZvY3Vzfi52cy1wbGFjZWhvbGRlci1sYWJlbHtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnNwYW4tdGV4dC12YWxpZGF0aW9uLWRhbmdlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSkhaW1wb3J0YW50fS5pbnB1dC1pY29uLXZhbGlkYXRlLWRhbmdlciAudnMtaW5wdXQtLWlucHV0LC5pbnB1dC1pY29uLXZhbGlkYXRlLWRhbmdlciAudnMtaW5wdXQtLWlucHV0OmZvY3Vze2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpIWltcG9ydGFudH0uaW5wdXQtaWNvbi12YWxpZGF0ZS1kYW5nZXIgLmlucHV0LWljb24tdmFsaWRhdGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksLjIpO2NvbG9yOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnMtaW5wdXQtc3VjY2VzcyAudnMtaW5wdXQtLWlucHV0OmZvY3Vze2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnR9LnZzLWlucHV0LXN1Y2Nlc3MuaXNGb2N1cyAudnMtaW5wdXQtLWxhYmVsLC52cy1pbnB1dC1zdWNjZXNzIC52cy1pbnB1dC0taW5wdXQ6Zm9jdXN+Lmljb24taW5wdXR4LC52cy1pbnB1dC1zdWNjZXNzIC52cy1pbnB1dC0taW5wdXQ6Zm9jdXN+LnZzLXBsYWNlaG9sZGVyLWxhYmVse2NvbG9yOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSl9LnNwYW4tdGV4dC12YWxpZGF0aW9uLXN1Y2Nlc3N7Y29sb3I6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnR9LmlucHV0LWljb24tdmFsaWRhdGUtc3VjY2VzcyAudnMtaW5wdXQtLWlucHV0LC5pbnB1dC1pY29uLXZhbGlkYXRlLXN1Y2Nlc3MgLnZzLWlucHV0LS1pbnB1dDpmb2N1c3tib3JkZXI6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSkhaW1wb3J0YW50fS5pbnB1dC1pY29uLXZhbGlkYXRlLXN1Y2Nlc3MgLmlucHV0LWljb24tdmFsaWRhdGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC4yKTtjb2xvcjpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS52cy1pbnB1dC13YXJuaW5nIC52cy1pbnB1dC0taW5wdXQ6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpIWltcG9ydGFudH0udnMtaW5wdXQtd2FybmluZy5pc0ZvY3VzIC52cy1pbnB1dC0tbGFiZWwsLnZzLWlucHV0LXdhcm5pbmcgLnZzLWlucHV0LS1pbnB1dDpmb2N1c34uaWNvbi1pbnB1dHgsLnZzLWlucHV0LXdhcm5pbmcgLnZzLWlucHV0LS1pbnB1dDpmb2N1c34udnMtcGxhY2Vob2xkZXItbGFiZWx7Y29sb3I6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0uc3Bhbi10ZXh0LXZhbGlkYXRpb24td2FybmluZ3tjb2xvcjpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpIWltcG9ydGFudH0uaW5wdXQtaWNvbi12YWxpZGF0ZS13YXJuaW5nIC52cy1pbnB1dC0taW5wdXQsLmlucHV0LWljb24tdmFsaWRhdGUtd2FybmluZyAudnMtaW5wdXQtLWlucHV0OmZvY3Vze2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKSFpbXBvcnRhbnR9LmlucHV0LWljb24tdmFsaWRhdGUtd2FybmluZyAuaW5wdXQtaWNvbi12YWxpZGF0ZXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtd2FybmluZyksLjIpO2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LnZzLWlucHV0LWRhcmsgLnZzLWlucHV0LS1pbnB1dDpmb2N1c3tib3JkZXI6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtZGFyayksMSkhaW1wb3J0YW50fS52cy1pbnB1dC1kYXJrLmlzRm9jdXMgLnZzLWlucHV0LS1sYWJlbCwudnMtaW5wdXQtZGFyayAudnMtaW5wdXQtLWlucHV0OmZvY3Vzfi5pY29uLWlucHV0eCwudnMtaW5wdXQtZGFyayAudnMtaW5wdXQtLWlucHV0OmZvY3Vzfi52cy1wbGFjZWhvbGRlci1sYWJlbHtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS5zcGFuLXRleHQtdmFsaWRhdGlvbi1kYXJre2NvbG9yOnJnYmEodmFyKC0tdnMtZGFyayksMSkhaW1wb3J0YW50fS5pbnB1dC1pY29uLXZhbGlkYXRlLWRhcmsgLnZzLWlucHV0LS1pbnB1dCwuaW5wdXQtaWNvbi12YWxpZGF0ZS1kYXJrIC52cy1pbnB1dC0taW5wdXQ6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLWRhcmspLDEpIWltcG9ydGFudH0uaW5wdXQtaWNvbi12YWxpZGF0ZS1kYXJrIC5pbnB1dC1pY29uLXZhbGlkYXRle2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwuMik7Y29sb3I6cmdiYSh2YXIoLS12cy1kYXJrKSwxKX0udnMtaW5wdXQtbGlnaHQgLnZzLWlucHV0LS1pbnB1dDpmb2N1c3tib3JkZXI6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtbGlnaHQpLDEpIWltcG9ydGFudH0udnMtaW5wdXQtbGlnaHQuaXNGb2N1cyAudnMtaW5wdXQtLWxhYmVsLC52cy1pbnB1dC1saWdodCAudnMtaW5wdXQtLWlucHV0OmZvY3Vzfi5pY29uLWlucHV0eCwudnMtaW5wdXQtbGlnaHQgLnZzLWlucHV0LS1pbnB1dDpmb2N1c34udnMtcGxhY2Vob2xkZXItbGFiZWx7Y29sb3I6cmdiYSh2YXIoLS12cy1saWdodCksMSl9LnNwYW4tdGV4dC12YWxpZGF0aW9uLWxpZ2h0e2NvbG9yOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpIWltcG9ydGFudH0uaW5wdXQtaWNvbi12YWxpZGF0ZS1saWdodCAudnMtaW5wdXQtLWlucHV0LC5pbnB1dC1pY29uLXZhbGlkYXRlLWxpZ2h0IC52cy1pbnB1dC0taW5wdXQ6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSFpbXBvcnRhbnR9LmlucHV0LWljb24tdmFsaWRhdGUtbGlnaHQgLmlucHV0LWljb24tdmFsaWRhdGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwuMik7Y29sb3I6cmdiYSh2YXIoLS12cy1saWdodCksMSl9LnZzLWlucHV0LW51bWJlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46NXB4IDEwcHg7YmFja2dyb3VuZDojZjVmNWY1O3BhZGRpbmc6MnB4O2JvcmRlci1yYWRpdXM6NXB4fS52cy1pbnB1dC1udW1iZXIuaXNDaGFuZ2VWYWx1ZSAudnMtaW5wdXQtbnVtYmVyLS1pbnB1dHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpO29wYWNpdHk6LjV9LnZzLWlucHV0LW51bWJlciAudnMtaW5wdXQtbnVtYmVyLS1pbnB1dHstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO3dpZHRoOjQwcHg7bWluLXdpZHRoOjQwcHg7Ym9yZGVyOjA7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtwYWRkaW5nOjRweDstbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkfS52cy1pbnB1dC1udW1iZXIgLnZzLWlucHV0LW51bWJlci0taW5wdXRbdHlwZT1udW1iZXJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLC52cy1pbnB1dC1udW1iZXIgLnZzLWlucHV0LW51bWJlci0taW5wdXRbdHlwZT1udW1iZXJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbjowfS52cy1pbnB1dC1udW1iZXIgYnV0dG9ue21pbi13aWR0aDoyMnB4O21pbi1oZWlnaHQ6MjJweDtwYWRkaW5nOjA7bWFyZ2luOjA7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjVweDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTtjb2xvcjojZmZmOy13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59LnZzLWlucHV0LW51bWJlciBidXR0b246ZGlzYWJsZWR7b3BhY2l0eTouNTtjdXJzb3I6ZGVmYXVsdDtwb2ludGVyLWV2ZW50czpub25lfS52cy1pbnB1dC1udW1iZXIgYnV0dG9uIGl7Zm9udC1zaXplOi45cmVtfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtbnVtYmVyIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTBweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTBweCl9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC1udW1iZXIgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLXBsdXN7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDEwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMTBweCl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC1udW1iZXIgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLXBsdXM6YWN0aXZley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTBweCkgc2NhbGUoLjkpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwcHgpIHNjYWxlKC45KX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LW51bWJlciBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tcGx1czphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDEwcHgpIHNjYWxlKC45KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwcHgpIHNjYWxlKC45KX0udnMtaW5wdXQtbnVtYmVyIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzLmxpbWl0LC52cy1pbnB1dC1udW1iZXIgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLXBsdXM6ZGlzYWJsZWR7b3BhY2l0eTouNTtjdXJzb3I6ZGVmYXVsdDtwb2ludGVyLWV2ZW50czpub25lO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC1udW1iZXIgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLWxlc3N7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDEwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMTBweCl9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC1udW1iZXIgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLWxlc3N7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC0xMHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMHB4KX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LW51bWJlciBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tbGVzczphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDEwcHgpIHNjYWxlKC45KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwcHgpIHNjYWxlKC45KX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LW51bWJlciBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tbGVzczphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC0xMHB4KSBzY2FsZSguOSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTBweCkgc2NhbGUoLjkpfS52cy1pbnB1dC1udW1iZXIgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLWxlc3MubGltaXQsLnZzLWlucHV0LW51bWJlciBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tbGVzczpkaXNhYmxlZHtvcGFjaXR5Oi41O2N1cnNvcjpkZWZhdWx0O3BvaW50ZXItZXZlbnRzOm5vbmU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC41KX0udnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLW1lZGl1bSBpbnB1dHtwYWRkaW5nOjNweDtmb250LXNpemU6LjhyZW19LnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1tZWRpdW0gYnV0dG9ue21pbi13aWR0aDoxOXB4O21pbi1oZWlnaHQ6MTlweH0udnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLW1lZGl1bSBidXR0b24gaXtmb250LXNpemU6LjhyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtbWVkaXVtIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC04cHgpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLW1lZGl1bSBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tcGx1c3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDhweCl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtbWVkaXVtIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzOmFjdGl2ZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLThweCkgc2NhbGUoLjkpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLThweCkgc2NhbGUoLjkpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLW1lZGl1bSBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tcGx1czphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDhweCkgc2NhbGUoLjkpO3RyYW5zZm9ybTp0cmFuc2xhdGUoOHB4KSBzY2FsZSguOSl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtbWVkaXVtIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1sZXNzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg4cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoOHB4KX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1tZWRpdW0gYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLWxlc3N7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC04cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLThweCl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtbWVkaXVtIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1sZXNzOmFjdGl2ZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoOHB4KSBzY2FsZSguOSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg4cHgpIHNjYWxlKC45KX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1tZWRpdW0gYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLWxlc3M6YWN0aXZley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtOHB4KSBzY2FsZSguOSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtOHB4KSBzY2FsZSguOSl9LnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1zbWFsbCAudnMtaW5wdXQtbnVtYmVyLS1pbnB1dHtwYWRkaW5nOjJweDtmb250LXNpemU6LjdyZW19LnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1zbWFsbCBidXR0b257bWluLXdpZHRoOjE2cHg7bWluLWhlaWdodDoxNnB4fS52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtc21hbGwgYnV0dG9uIGl7Zm9udC1zaXplOi43cmVtfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLXNtYWxsIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtN3B4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC03cHgpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLXNtYWxsIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg3cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoN3B4KX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1zbWFsbCBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tcGx1czphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC03cHgpIHNjYWxlKC45KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC03cHgpIHNjYWxlKC45KX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1zbWFsbCBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tcGx1czphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDdweCkgc2NhbGUoLjkpO3RyYW5zZm9ybTp0cmFuc2xhdGUoN3B4KSBzY2FsZSguOSl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtc21hbGwgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLWxlc3N7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDdweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg3cHgpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLXNtYWxsIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1sZXNzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtN3B4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC03cHgpfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLXNtYWxsIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1sZXNzOmFjdGl2ZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoN3B4KSBzY2FsZSguOSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg3cHgpIHNjYWxlKC45KX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1zbWFsbCBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tbGVzczphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC03cHgpIHNjYWxlKC45KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC03cHgpIHNjYWxlKC45KX0udnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLW1pbmkgLnZzLWlucHV0LW51bWJlci0taW5wdXR7cGFkZGluZzoxcHg7Zm9udC1zaXplOi42cmVtfS52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtbWluaSBidXR0b257bWluLXdpZHRoOjE0cHg7bWluLWhlaWdodDoxNHB4fS52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtbWluaSBidXR0b24gaXtmb250LXNpemU6LjZyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtbWluaSBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tcGx1c3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTZweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNnB4KX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1taW5pIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg2cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoNnB4KX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWlucHV0LW51bWJlci52cy1pbnB1dC1udW1iZXItc2l6ZS1taW5pIGJ1dHRvbi52cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzOmFjdGl2ZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTZweCkgc2NhbGUoLjkpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTZweCkgc2NhbGUoLjkpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLW1pbmkgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLXBsdXM6YWN0aXZley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg2cHgpIHNjYWxlKC45KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDZweCkgc2NhbGUoLjkpfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLW1pbmkgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLWxlc3N7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDZweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg2cHgpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtaW5wdXQtbnVtYmVyLnZzLWlucHV0LW51bWJlci1zaXplLW1pbmkgYnV0dG9uLnZzLWlucHV0LW51bWJlci0tYnV0dG9uLWxlc3N7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC02cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTZweCl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtbWluaSBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tbGVzczphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDZweCkgc2NhbGUoLjkpO3RyYW5zZm9ybTp0cmFuc2xhdGUoNnB4KSBzY2FsZSguOSl9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1pbnB1dC1udW1iZXIudnMtaW5wdXQtbnVtYmVyLXNpemUtbWluaSBidXR0b24udnMtaW5wdXQtbnVtYmVyLS1idXR0b24tbGVzczphY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC02cHgpIHNjYWxlKC45KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC02cHgpIHNjYWxlKC45KX0udnMtaW5wdXQtbnVtYmVyLXByaW1hcnkgYnV0dG9ue2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKX0udnMtaW5wdXQtbnVtYmVyLXByaW1hcnkgYnV0dG9uOmhvdmVyey13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuNCk7Ym94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuNCl9LnZzLWlucHV0LW51bWJlci1zZWNvbmRhcnkgYnV0dG9ue2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy1pbnB1dC1udW1iZXItc2Vjb25kYXJ5IGJ1dHRvbjpob3Zlcnstd2Via2l0LWJveC1zaGFkb3c6MCAzcHggMTJweCAwIHJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuNCk7Ym94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC40KX0udnMtaW5wdXQtbnVtYmVyLWRhbmdlciBidXR0b257YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWlucHV0LW51bWJlci1kYW5nZXIgYnV0dG9uOmhvdmVyey13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1kYW5nZXIpLC40KTtib3gtc2hhZG93OjAgM3B4IDEycHggMCByZ2JhKHZhcigtLXZzLWRhbmdlciksLjQpfS52cy1pbnB1dC1udW1iZXItc3VjY2VzcyBidXR0b257YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS52cy1pbnB1dC1udW1iZXItc3VjY2VzcyBidXR0b246aG92ZXJ7LXdlYmtpdC1ib3gtc2hhZG93OjAgM3B4IDEycHggMCByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC40KTtib3gtc2hhZG93OjAgM3B4IDEycHggMCByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC40KX0udnMtaW5wdXQtbnVtYmVyLXdhcm5pbmcgYnV0dG9ue2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0udnMtaW5wdXQtbnVtYmVyLXdhcm5pbmcgYnV0dG9uOmhvdmVyey13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwuNCk7Ym94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwuNCl9LnZzLWlucHV0LW51bWJlci1kYXJrIGJ1dHRvbntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWlucHV0LW51bWJlci1kYXJrIGJ1dHRvbjpob3Zlcnstd2Via2l0LWJveC1zaGFkb3c6MCAzcHggMTJweCAwIHJnYmEodmFyKC0tdnMtZGFyayksLjQpO2JveC1zaGFkb3c6MCAzcHggMTJweCAwIHJnYmEodmFyKC0tdnMtZGFyayksLjQpfS52cy1pbnB1dC1udW1iZXItbGlnaHQgYnV0dG9ue2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1saWdodCksMSl9LnZzLWlucHV0LW51bWJlci1saWdodCBidXR0b246aG92ZXJ7LXdlYmtpdC1ib3gtc2hhZG93OjAgM3B4IDEycHggMCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwuNCk7Ym94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1saWdodCksLjQpfS52cy1saXN0e3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzo1cHh9LnZzLWxpc3QtLWljb257cGFkZGluZzo2cHg7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52cy1saXN0LS1pY29uIGl7Zm9udC1zaXplOjEuMnJlbSFpbXBvcnRhbnR9LnZzLWxpc3QtLWhlYWRlcntwYWRkaW5nOjhweCAwO2ZvbnQtd2VpZ2h0OjcwMDstd2Via2l0LWJveC1zaGFkb3c6MCA3cHggN3B4IC01cHggcmdiYSgwLDAsMCwuMDgpO2JveC1zaGFkb3c6MCA3cHggN3B4IC01cHggcmdiYSgwLDAsMCwuMDgpO21hcmdpbi1ib3R0b206NXB4fS52cy1saXN0LS1oZWFkZXIsLnZzLWxpc3QtLWl0ZW17ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOnN0YXJ0Oy1tcy1mbGV4LXBhY2s6c3RhcnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnZzLWxpc3QtLWl0ZW17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMDgpO3BhZGRpbmc6NXB4fS52cy1saXN0LS1pdGVtIC52cy1saXN0LS1hdmF0YXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLWxpc3QtLXNsb3R7bWFyZ2luLXJpZ2h0OmF1dG99LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1saXN0LS1zbG90e21hcmdpbi1sZWZ0OmF1dG99LnZzLWxpc3QtLXRpdGxle2ZvbnQtd2VpZ2h0OjcwMH0udnMtbGlzdC0tc3VidGl0bGV7Zm9udC1zaXplOi44cmVtfS52cy1oZWFkZXItbGlzdC1wcmltYXJ5e2NvbG9yOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLWhlYWRlci1saXN0LXNlY29uZGFyeXtjb2xvcjpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLWhlYWRlci1saXN0LWRhbmdlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLWhlYWRlci1saXN0LXN1Y2Nlc3N7Y29sb3I6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtaGVhZGVyLWxpc3Qtd2FybmluZ3tjb2xvcjpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1oZWFkZXItbGlzdC1kYXJre2NvbG9yOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLWhlYWRlci1saXN0LWxpZ2h0e2NvbG9yOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfS52cy1jb24tbG9hZGluZ19fY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0udnMtY29uLWxvYWRpbmdfX2NvbnRhaW5lciAuY29uLXZzLWxvYWRpbmd7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDo2MHB4O3RvcDo1MCU7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpfS5iZWZvcmVSZW1vdmV7b3BhY2l0eTowfS5jb24tdnMtbG9hZGluZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDt0b3A6MDtiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC42KTt6LWluZGV4OjMwMDAwMDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZX0uY29uLXZzLWxvYWRpbmcudGV4dEFmdGVyey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2UhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5jb24tdnMtbG9hZGluZyAudGl0bGUtbG9hZGluZ3twb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjVweH0uY29uLXZzLWxvYWRpbmcgLmVmZmVjdC1jbGlja3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowO2hlaWdodDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpfS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZ3twb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo1NXB4O2hlaWdodDo1NXB4O2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjozcHggc29saWQgdHJhbnNwYXJlbnR9LmNvbi12cy1sb2FkaW5nIC52cy1sb2FkaW5nIC5lZmZlY3Rzey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2V9LmNvbi12cy1sb2FkaW5nIC52cy1sb2FkaW5nLm1hdGVyaWFse2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuYm9yZGVyIC5lZmZlY3QtMSwuY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuZGVmYXVsdCAuZWZmZWN0LTF7LXdlYmtpdC1hbmltYXRpb246cm90YXRlIDFzIGVhc2UgaW5maW5pdGU7YW5pbWF0aW9uOnJvdGF0ZSAxcyBlYXNlIGluZmluaXRlfS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5ib3JkZXIgLmVmZmVjdC0xLC5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5ib3JkZXIgLmVmZmVjdC0yLC5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5kZWZhdWx0IC5lZmZlY3QtMSwuY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuZGVmYXVsdCAuZWZmZWN0LTJ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6M3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpO2JvcmRlci1yYWRpdXM6NTAlOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuYm9yZGVyIC5lZmZlY3QtMiwuY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuZGVmYXVsdCAuZWZmZWN0LTJ7LXdlYmtpdC1hbmltYXRpb246cm90YXRlT3BhY2l0eSAxcyBlYXNlIC4xcyBpbmZpbml0ZTthbmltYXRpb246cm90YXRlT3BhY2l0eSAxcyBlYXNlIC4xcyBpbmZpbml0ZX0uY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuYm9yZGVyIC5lZmZlY3QtMywuY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuZGVmYXVsdCAuZWZmZWN0LTN7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6M3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpOy13ZWJraXQtYW5pbWF0aW9uOnJvdGF0ZU9wYWNpdHkgMXMgZWFzZSAuMnMgaW5maW5pdGU7YW5pbWF0aW9uOnJvdGF0ZU9wYWNpdHkgMXMgZWFzZSAuMnMgaW5maW5pdGU7Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5ib3JkZXJ7Ym9yZGVyOjFweCBzb2xpZCAjZjBmMGYwfS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5ib3JkZXIgLmVmZmVjdC0xLC5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5ib3JkZXIgLmVmZmVjdC0yLC5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5ib3JkZXIgLmVmZmVjdC0ze2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LmNvbi12cy1sb2FkaW5nIC52cy1sb2FkaW5nLnBvaW50IC5lZmZlY3QtMXstd2Via2l0LWFuaW1hdGlvbjpzY2FsZSAxLjJzIGVhc2UgaW5maW5pdGU7YW5pbWF0aW9uOnNjYWxlIDEuMnMgZWFzZSBpbmZpbml0ZX0uY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcucG9pbnQgLmVmZmVjdC0xLC5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5wb2ludCAuZWZmZWN0LTJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLC40KTtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6NTAlOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcucG9pbnQgLmVmZmVjdC0yey13ZWJraXQtYW5pbWF0aW9uOnNjYWxlIDEuOHMgZWFzZSBpbmZpbml0ZTthbmltYXRpb246c2NhbGUgMS44cyBlYXNlIGluZmluaXRlfS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5wb2ludCAuZWZmZWN0LTN7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLC40KTtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlOy13ZWJraXQtYW5pbWF0aW9uOnNjYWxlIDMuNnMgZWFzZS1vdXQgaW5maW5pdGU7YW5pbWF0aW9uOnNjYWxlIDMuNnMgZWFzZS1vdXQgaW5maW5pdGU7Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5yYWRpdXMgLmVmZmVjdC0xey13ZWJraXQtYW5pbWF0aW9uOnJhZGl1cyAxcyBlYXNlIGluZmluaXRlO2FuaW1hdGlvbjpyYWRpdXMgMXMgZWFzZSBpbmZpbml0ZX0uY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcucmFkaXVzIC5lZmZlY3QtMSwuY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcucmFkaXVzIC5lZmZlY3QtMntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjozcHggc29saWQgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKTtib3JkZXItcmFkaXVzOjEwcHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5yYWRpdXMgLmVmZmVjdC0yey13ZWJraXQtYW5pbWF0aW9uOnJhZGl1cyAycyBlYXNlIC4xcyBpbmZpbml0ZTthbmltYXRpb246cmFkaXVzIDJzIGVhc2UgLjFzIGluZmluaXRlfS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5yYWRpdXMgLmVmZmVjdC0zey13ZWJraXQtYW5pbWF0aW9uOnJhZGl1cyAzcyBlYXNlIC4ycyBpbmZpbml0ZTthbmltYXRpb246cmFkaXVzIDNzIGVhc2UgLjJzIGluZmluaXRlfS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5jb3JuZXJzIC5lZmZlY3QtMSwuY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcucmFkaXVzIC5lZmZlY3QtM3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjozcHggc29saWQgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKTtib3JkZXItcmFkaXVzOjEwcHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5jb3JuZXJzIC5lZmZlY3QtMXstd2Via2l0LWFuaW1hdGlvbjpjb3JuZXJzIDFzIGVhc2UgaW5maW5pdGU7YW5pbWF0aW9uOmNvcm5lcnMgMXMgZWFzZSBpbmZpbml0ZX0uY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuc291bmR7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5zb3VuZCAuZWZmZWN0LTF7aGVpZ2h0OjEwMCU7LXdlYmtpdC1hbmltYXRpb246c291bmQgMS40cyBlYXNlIGluZmluaXRlIGFsdGVybmF0ZTthbmltYXRpb246c291bmQgMS40cyBlYXNlIGluZmluaXRlIGFsdGVybmF0ZX0uY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuc291bmQgLmVmZmVjdC0xLC5jb24tdnMtbG9hZGluZyAudnMtbG9hZGluZy5zb3VuZCAuZWZmZWN0LTJ7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NXB4O2JvcmRlci1yYWRpdXM6MTBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpO21hcmdpbjowIDRweH0uY29uLXZzLWxvYWRpbmcgLnZzLWxvYWRpbmcuc291bmQgLmVmZmVjdC0ye2hlaWdodDo2MCU7LXdlYmtpdC1hbmltYXRpb246c291bmQgLjdzIGVhc2UgaW5maW5pdGUgYWx0ZXJuYXRlO2FuaW1hdGlvbjpzb3VuZCAuN3MgZWFzZSBpbmZpbml0ZSBhbHRlcm5hdGV9LmNvbi12cy1sb2FkaW5nIC52cy1sb2FkaW5nLnNvdW5kIC5lZmZlY3QtM3twb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo1cHg7aGVpZ2h0OjgwJTstd2Via2l0LWFuaW1hdGlvbjpzb3VuZCAxcyBlYXNlLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7YW5pbWF0aW9uOnNvdW5kIDFzIGVhc2Utb3V0IGluZmluaXRlIGFsdGVybmF0ZTtib3JkZXItcmFkaXVzOjEwcHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKTttYXJnaW46MCA0cHh9LnNwaW5uZXJ7LXdlYmtpdC1hbmltYXRpb246cm90YXRvciAxLjRzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246cm90YXRvciAxLjRzIGxpbmVhciBpbmZpbml0ZX0ucGF0aHtzdHJva2UtZGFzaGFycmF5OjE4NztzdHJva2UtZGFzaG9mZnNldDowOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7LXdlYmtpdC1hbmltYXRpb246ZGFzaCAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlLGNvbG9ycyA1LjZzIGVhc2UtaW4tb3V0IGluZmluaXRlO2FuaW1hdGlvbjpkYXNoIDEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUsY29sb3JzIDUuNnMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmZhZGUtZW50ZXItYWN0aXZlLC5mYWRlLWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuM3M7dHJhbnNpdGlvbjpvcGFjaXR5IC4zc30uZmFkZS1lbnRlciwuZmFkZS1sZWF2ZS10b3tvcGFjaXR5OjB9LmVmZmVjdC1jbGljay1sZWF2ZS1hY3RpdmV7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3M7dHJhbnNpdGlvbjphbGwgLjNzfS5lZmZlY3QtY2xpY2stbGVhdmUtdG97b3BhY2l0eTowO3dpZHRoOjEwMDBweCFpbXBvcnRhbnQ7aGVpZ2h0OjEwMDBweCFpbXBvcnRhbnR9LnZzLWxvYWRpbmctYmFja2dyb3VuZC1wcmltYXJ5e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKX0udnMtbG9hZGluZy1jb2xvci1wcmltYXJ5IC5ib3JkZXIgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXByaW1hcnkgLmJvcmRlciAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3ItcHJpbWFyeSAuYm9yZGVyIC5lZmZlY3QtMywudnMtbG9hZGluZy1jb2xvci1wcmltYXJ5IC5kZWZhdWx0IC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1wcmltYXJ5IC5kZWZhdWx0IC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1wcmltYXJ5IC5kZWZhdWx0IC5lZmZlY3QtM3tib3JkZXItbGVmdDozcHggc29saWQgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKSFpbXBvcnRhbnR9LnZzLWxvYWRpbmctY29sb3ItcHJpbWFyeSAuYm9yZGVyIC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1wcmltYXJ5IC5ib3JkZXIgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLXByaW1hcnkgLmJvcmRlciAuZWZmZWN0LTN7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLXByaW1hcnkgLnBvaW50IC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1wcmltYXJ5IC5wb2ludCAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3ItcHJpbWFyeSAucG9pbnQgLmVmZmVjdC0ze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuNCkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLXByaW1hcnkgLmNvcm5lcnMgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXByaW1hcnkgLnJhZGl1cyAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3ItcHJpbWFyeSAucmFkaXVzIC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1wcmltYXJ5IC5yYWRpdXMgLmVmZmVjdC0ze2JvcmRlcjozcHggc29saWQgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKSFpbXBvcnRhbnR9LnZzLWxvYWRpbmctY29sb3ItcHJpbWFyeSAuc291bmQgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXByaW1hcnkgLnNvdW5kIC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1wcmltYXJ5IC5zb3VuZCAuZWZmZWN0LTN7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1iYWNrZ3JvdW5kLXNlY29uZGFyeXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0udnMtbG9hZGluZy1jb2xvci1zZWNvbmRhcnkgLmJvcmRlciAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3Itc2Vjb25kYXJ5IC5ib3JkZXIgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLXNlY29uZGFyeSAuYm9yZGVyIC5lZmZlY3QtMywudnMtbG9hZGluZy1jb2xvci1zZWNvbmRhcnkgLmRlZmF1bHQgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXNlY29uZGFyeSAuZGVmYXVsdCAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3Itc2Vjb25kYXJ5IC5kZWZhdWx0IC5lZmZlY3QtM3tib3JkZXItbGVmdDozcHggc29saWQgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci1zZWNvbmRhcnkgLmJvcmRlciAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3Itc2Vjb25kYXJ5IC5ib3JkZXIgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLXNlY29uZGFyeSAuYm9yZGVyIC5lZmZlY3QtM3tib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci1zZWNvbmRhcnkgLnBvaW50IC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1zZWNvbmRhcnkgLnBvaW50IC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1zZWNvbmRhcnkgLnBvaW50IC5lZmZlY3QtM3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuNCkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLXNlY29uZGFyeSAuY29ybmVycyAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3Itc2Vjb25kYXJ5IC5yYWRpdXMgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXNlY29uZGFyeSAucmFkaXVzIC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1zZWNvbmRhcnkgLnJhZGl1cyAuZWZmZWN0LTN7Ym9yZGVyOjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLXNlY29uZGFyeSAuc291bmQgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXNlY29uZGFyeSAuc291bmQgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLXNlY29uZGFyeSAuc291bmQgLmVmZmVjdC0ze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1iYWNrZ3JvdW5kLWRhbmdlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnMtbG9hZGluZy1jb2xvci1kYW5nZXIgLmJvcmRlciAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3ItZGFuZ2VyIC5ib3JkZXIgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLWRhbmdlciAuYm9yZGVyIC5lZmZlY3QtMywudnMtbG9hZGluZy1jb2xvci1kYW5nZXIgLmRlZmF1bHQgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLWRhbmdlciAuZGVmYXVsdCAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3ItZGFuZ2VyIC5kZWZhdWx0IC5lZmZlY3QtM3tib3JkZXItbGVmdDozcHggc29saWQgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci1kYW5nZXIgLmJvcmRlciAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3ItZGFuZ2VyIC5ib3JkZXIgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLWRhbmdlciAuYm9yZGVyIC5lZmZlY3QtM3tib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci1kYW5nZXIgLnBvaW50IC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1kYW5nZXIgLnBvaW50IC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1kYW5nZXIgLnBvaW50IC5lZmZlY3QtM3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuNCkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLWRhbmdlciAuY29ybmVycyAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3ItZGFuZ2VyIC5yYWRpdXMgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLWRhbmdlciAucmFkaXVzIC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1kYW5nZXIgLnJhZGl1cyAuZWZmZWN0LTN7Ym9yZGVyOjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLWRhbmdlciksMSkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLWRhbmdlciAuc291bmQgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLWRhbmdlciAuc291bmQgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLWRhbmdlciAuc291bmQgLmVmZmVjdC0ze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1iYWNrZ3JvdW5kLXN1Y2Nlc3N7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS52cy1sb2FkaW5nLWNvbG9yLXN1Y2Nlc3MgLmJvcmRlciAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3Itc3VjY2VzcyAuYm9yZGVyIC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1zdWNjZXNzIC5ib3JkZXIgLmVmZmVjdC0zLC52cy1sb2FkaW5nLWNvbG9yLXN1Y2Nlc3MgLmRlZmF1bHQgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXN1Y2Nlc3MgLmRlZmF1bHQgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLXN1Y2Nlc3MgLmRlZmF1bHQgLmVmZmVjdC0ze2JvcmRlci1sZWZ0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci1zdWNjZXNzIC5ib3JkZXIgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXN1Y2Nlc3MgLmJvcmRlciAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3Itc3VjY2VzcyAuYm9yZGVyIC5lZmZlY3QtM3tib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnR9LnZzLWxvYWRpbmctY29sb3Itc3VjY2VzcyAucG9pbnQgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXN1Y2Nlc3MgLnBvaW50IC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1zdWNjZXNzIC5wb2ludCAuZWZmZWN0LTN7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC40KSFpbXBvcnRhbnR9LnZzLWxvYWRpbmctY29sb3Itc3VjY2VzcyAuY29ybmVycyAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3Itc3VjY2VzcyAucmFkaXVzIC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1zdWNjZXNzIC5yYWRpdXMgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLXN1Y2Nlc3MgLnJhZGl1cyAuZWZmZWN0LTN7Ym9yZGVyOjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci1zdWNjZXNzIC5zb3VuZCAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3Itc3VjY2VzcyAuc291bmQgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLXN1Y2Nlc3MgLnNvdW5kIC5lZmZlY3QtM3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWJhY2tncm91bmQtd2FybmluZ3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LnZzLWxvYWRpbmctY29sb3Itd2FybmluZyAuYm9yZGVyIC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci13YXJuaW5nIC5ib3JkZXIgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLXdhcm5pbmcgLmJvcmRlciAuZWZmZWN0LTMsLnZzLWxvYWRpbmctY29sb3Itd2FybmluZyAuZGVmYXVsdCAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3Itd2FybmluZyAuZGVmYXVsdCAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3Itd2FybmluZyAuZGVmYXVsdCAuZWZmZWN0LTN7Ym9yZGVyLWxlZnQ6M3B4IHNvbGlkIHJnYmEodmFyKC0tdnMtd2FybmluZyksMSkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLXdhcm5pbmcgLmJvcmRlciAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3Itd2FybmluZyAuYm9yZGVyIC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci13YXJuaW5nIC5ib3JkZXIgLmVmZmVjdC0ze2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci13YXJuaW5nIC5wb2ludCAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3Itd2FybmluZyAucG9pbnQgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLXdhcm5pbmcgLnBvaW50IC5lZmZlY3QtM3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtd2FybmluZyksLjQpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci13YXJuaW5nIC5jb3JuZXJzIC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci13YXJuaW5nIC5yYWRpdXMgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLXdhcm5pbmcgLnJhZGl1cyAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3Itd2FybmluZyAucmFkaXVzIC5lZmZlY3QtM3tib3JkZXI6M3B4IHNvbGlkIHJnYmEodmFyKC0tdnMtd2FybmluZyksMSkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLXdhcm5pbmcgLnNvdW5kIC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci13YXJuaW5nIC5zb3VuZCAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3Itd2FybmluZyAuc291bmQgLmVmZmVjdC0ze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKSFpbXBvcnRhbnR9LnZzLWxvYWRpbmctYmFja2dyb3VuZC1kYXJre2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwxKX0udnMtbG9hZGluZy1jb2xvci1kYXJrIC5ib3JkZXIgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLWRhcmsgLmJvcmRlciAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3ItZGFyayAuYm9yZGVyIC5lZmZlY3QtMywudnMtbG9hZGluZy1jb2xvci1kYXJrIC5kZWZhdWx0IC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1kYXJrIC5kZWZhdWx0IC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1kYXJrIC5kZWZhdWx0IC5lZmZlY3QtM3tib3JkZXItbGVmdDozcHggc29saWQgcmdiYSh2YXIoLS12cy1kYXJrKSwxKSFpbXBvcnRhbnR9LnZzLWxvYWRpbmctY29sb3ItZGFyayAuYm9yZGVyIC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1kYXJrIC5ib3JkZXIgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLWRhcmsgLmJvcmRlciAuZWZmZWN0LTN7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtZGFyayksMSkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLWRhcmsgLnBvaW50IC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1kYXJrIC5wb2ludCAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3ItZGFyayAucG9pbnQgLmVmZmVjdC0ze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwuNCkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLWRhcmsgLmNvcm5lcnMgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLWRhcmsgLnJhZGl1cyAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3ItZGFyayAucmFkaXVzIC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1kYXJrIC5yYWRpdXMgLmVmZmVjdC0ze2JvcmRlcjozcHggc29saWQgcmdiYSh2YXIoLS12cy1kYXJrKSwxKSFpbXBvcnRhbnR9LnZzLWxvYWRpbmctY29sb3ItZGFyayAuc291bmQgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLWRhcmsgLnNvdW5kIC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1kYXJrIC5zb3VuZCAuZWZmZWN0LTN7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhcmspLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1iYWNrZ3JvdW5kLWxpZ2h0e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1saWdodCksMSl9LnZzLWxvYWRpbmctY29sb3ItbGlnaHQgLmJvcmRlciAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3ItbGlnaHQgLmJvcmRlciAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3ItbGlnaHQgLmJvcmRlciAuZWZmZWN0LTMsLnZzLWxvYWRpbmctY29sb3ItbGlnaHQgLmRlZmF1bHQgLmVmZmVjdC0xLC52cy1sb2FkaW5nLWNvbG9yLWxpZ2h0IC5kZWZhdWx0IC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1saWdodCAuZGVmYXVsdCAuZWZmZWN0LTN7Ym9yZGVyLWxlZnQ6M3B4IHNvbGlkIHJnYmEodmFyKC0tdnMtbGlnaHQpLDEpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci1saWdodCAuYm9yZGVyIC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1saWdodCAuYm9yZGVyIC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1saWdodCAuYm9yZGVyIC5lZmZlY3QtM3tib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSh2YXIoLS12cy1saWdodCksMSkhaW1wb3J0YW50fS52cy1sb2FkaW5nLWNvbG9yLWxpZ2h0IC5wb2ludCAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3ItbGlnaHQgLnBvaW50IC5lZmZlY3QtMiwudnMtbG9hZGluZy1jb2xvci1saWdodCAucG9pbnQgLmVmZmVjdC0ze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1saWdodCksLjQpIWltcG9ydGFudH0udnMtbG9hZGluZy1jb2xvci1saWdodCAuY29ybmVycyAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3ItbGlnaHQgLnJhZGl1cyAuZWZmZWN0LTEsLnZzLWxvYWRpbmctY29sb3ItbGlnaHQgLnJhZGl1cyAuZWZmZWN0LTIsLnZzLWxvYWRpbmctY29sb3ItbGlnaHQgLnJhZGl1cyAuZWZmZWN0LTN7Ym9yZGVyOjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSFpbXBvcnRhbnR9LnZzLWxvYWRpbmctY29sb3ItbGlnaHQgLnNvdW5kIC5lZmZlY3QtMSwudnMtbG9hZGluZy1jb2xvci1saWdodCAuc291bmQgLmVmZmVjdC0yLC52cy1sb2FkaW5nLWNvbG9yLWxpZ2h0IC5zb3VuZCAuZWZmZWN0LTN7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSFpbXBvcnRhbnR9QC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZXswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pO3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIHJvdGF0ZXswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pO3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1ALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlT3BhY2l0eXswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTtvcGFjaXR5Oi4xfXRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7dHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIHJvdGF0ZU9wYWNpdHl7MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyk7b3BhY2l0eTouMX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pO3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pO29wYWNpdHk6MX19QC13ZWJraXQta2V5ZnJhbWVzIHNjYWxlezAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC4xKTt0cmFuc2Zvcm06c2NhbGUoLjEpfTYwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSl9dG97LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjEpO3RyYW5zZm9ybTpzY2FsZSguMSl9fUBrZXlmcmFtZXMgc2NhbGV7MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjEpO3RyYW5zZm9ybTpzY2FsZSguMSl9NjAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKX10b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZSguMSk7dHJhbnNmb3JtOnNjYWxlKC4xKX19QC13ZWJraXQta2V5ZnJhbWVzIHJhZGl1c3swJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoLjEpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoLjEpO29wYWNpdHk6MX02MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE2MGRlZykgc2NhbGUoMSk7dHJhbnNmb3JtOnJvdGF0ZSgxNjBkZWcpIHNjYWxlKDEpO29wYWNpdHk6MH10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoLjEpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoLjEpO29wYWNpdHk6MX19QGtleWZyYW1lcyByYWRpdXN7MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpIHNjYWxlKC4xKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpIHNjYWxlKC4xKTtvcGFjaXR5OjF9NjAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxNjBkZWcpIHNjYWxlKDEpO3RyYW5zZm9ybTpyb3RhdGUoMTYwZGVnKSBzY2FsZSgxKTtvcGFjaXR5OjB9dG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpIHNjYWxlKC4xKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpIHNjYWxlKC4xKTtvcGFjaXR5OjF9fUAtd2Via2l0LWtleWZyYW1lcyBjb3JuZXJzezAle2JvcmRlci1yYWRpdXM6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTI1JXtib3JkZXItcmFkaXVzOjUwJSA1MCUgNTAlIDIwJX01MCV7Ym9yZGVyLXJhZGl1czo1MCUgNTAlIDIwJSAzMCV9NzUle2JvcmRlci1yYWRpdXM6NTAlIDIwJSAzMCUgMzAlfXRve2JvcmRlci1yYWRpdXM6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKC0xODBkZWcpfX1Aa2V5ZnJhbWVzIGNvcm5lcnN7MCV7Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MjUle2JvcmRlci1yYWRpdXM6NTAlIDUwJSA1MCUgMjAlfTUwJXtib3JkZXItcmFkaXVzOjUwJSA1MCUgMjAlIDMwJX03NSV7Ym9yZGVyLXJhZGl1czo1MCUgMjAlIDMwJSAzMCV9dG97Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xODBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTE4MGRlZyl9fUAtd2Via2l0LWtleWZyYW1lcyBzb3VuZHswJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZVkoMCk7dHJhbnNmb3JtOnNjYWxlWSgwKTtvcGFjaXR5Oi43fTQwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZVkoMS4yKTt0cmFuc2Zvcm06c2NhbGVZKDEuMik7b3BhY2l0eTouNX03MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKC4yKTt0cmFuc2Zvcm06c2NhbGVZKC4yKTtvcGFjaXR5Oi44fTUwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZVkoMSk7dHJhbnNmb3JtOnNjYWxlWSgxKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgc291bmR7MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKDApO3RyYW5zZm9ybTpzY2FsZVkoMCk7b3BhY2l0eTouN300MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKDEuMik7dHJhbnNmb3JtOnNjYWxlWSgxLjIpO29wYWNpdHk6LjV9NzAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlWSguMik7dHJhbnNmb3JtOnNjYWxlWSguMik7b3BhY2l0eTouOH01MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKDEpO3RyYW5zZm9ybTpzY2FsZVkoMSk7b3BhY2l0eToxfX1ALXdlYmtpdC1rZXlmcmFtZXMgZGFzaHswJXtzdHJva2UtZGFzaG9mZnNldDoxODd9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjQ2Ljc1Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKX10b3tzdHJva2UtZGFzaG9mZnNldDoxODc7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg0NTBkZWcpfX1Aa2V5ZnJhbWVzIGRhc2h7MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MTg3fTUwJXtzdHJva2UtZGFzaG9mZnNldDo0Ni43NTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDEzNWRlZyl9dG97c3Ryb2tlLWRhc2hvZmZzZXQ6MTg3Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg0NTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDUwZGVnKX19QC13ZWJraXQta2V5ZnJhbWVzIGNvbG9yc3swJXtzdHJva2U6IzQyODVmNH0yNSV7c3Ryb2tlOiNkZTNlMzV9NTAle3N0cm9rZTojZjdjMjIzfTc1JXtzdHJva2U6IzFiOWE1OX10b3tzdHJva2U6IzQyODVmNH19QGtleWZyYW1lcyBjb2xvcnN7MCV7c3Ryb2tlOiM0Mjg1ZjR9MjUle3N0cm9rZTojZGUzZTM1fTUwJXtzdHJva2U6I2Y3YzIyM303NSV7c3Ryb2tlOiMxYjlhNTl9dG97c3Ryb2tlOiM0Mjg1ZjR9fUAtd2Via2l0LWtleWZyYW1lcyByb3RhdG9yezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX19QGtleWZyYW1lcyByb3RhdG9yezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX19LnZzLW5hdmJhcntjbGVhcjpib3RoO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjstd2Via2l0LWJveC1zaGFkb3c6MCA0cHggMjBweCAwIHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93OjAgNHB4IDIwcHggMCByZ2JhKDAsMCwwLC4wNSk7d2lkdGg6MTAwJTt6LWluZGV4OjEwMDAwO3Bvc2l0aW9uOnJlbGF0aXZlfS52cy1uYXZiYXIgLnZzLWJ1dHRvbnttYXJnaW46MH0udnMtbmF2YmFyLS1idG4tcmVzcG9uc2l2ZXtkaXNwbGF5Om5vbmU7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy1tcy1mbGV4LXBhY2s6ZGlzdHJpYnV0ZTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MTBweCAwO21hcmdpbi1sZWZ0OjVweDtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7b3ZlcmZsb3c6aGlkZGVufS52cy1uYXZiYXItLWJ0bi1yZXNwb25zaXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDgpO3BhZGRpbmc6MTJweCAwfS52cy1uYXZiYXItLWJ0bi1yZXNwb25zaXZlLmFjdGl2ZS1tZW51e3BhZGRpbmc6MTBweCAwIWltcG9ydGFudH0udnMtbmF2YmFyLS1idG4tcmVzcG9uc2l2ZS5hY3RpdmUtbWVudSAubGluZS0tMXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZSg1cHgsNXB4KTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGUoNXB4LDVweCl9LnZzLW5hdmJhci0tYnRuLXJlc3BvbnNpdmUuYWN0aXZlLW1lbnUgLmxpbmUtLTJ7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTBweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTBweCl9LnZzLW5hdmJhci0tYnRuLXJlc3BvbnNpdmUuYWN0aXZlLW1lbnUgLmxpbmUtLTN7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgdHJhbnNsYXRlKDVweCwtNXB4KTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZykgdHJhbnNsYXRlKDVweCwtNXB4KX0udnMtbmF2YmFyLS1idG4tcmVzcG9uc2l2ZSAuYnRuLXJlc3BvbnNpdmUtbGluZXt3aWR0aDoyMHB4O2hlaWdodDoycHg7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC42KTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2V9LnZzLWNvbi1pdGVtc3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnZzLW5hdmJhci0taXRlbXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt6LWluZGV4OjEwMDB9LnZzLW5hdmJhci0taXRlbS5pcy1hY3RpdmUtaXRlbSAudnMtbmF2YmFyLWFmdGVye3dpZHRoOjEwMCV9LnZzLW5hdmJhci0taXRlbTpob3ZlciAudnMtbmF2YmFyLXN1Ym1lbnV7b3BhY2l0eToxO3Zpc2liaWxpdHk6dmlzaWJsZX0udnMtbmF2YmFyLS1pdGVtIGF7Zm9udC1zaXplOi44cmVtO3BhZGRpbmc6MTBweCAxMnB4O2Rpc3BsYXk6YmxvY2s7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxMDB9LnZzLW5hdmJhci0taXRlbSBhOmhvdmVyfi52cy1uYXZiYXItYWZ0ZXJ7d2lkdGg6MTAwJX0udnMtbmF2YmFyLS1pdGVtIC52cy1uYXZiYXItYWZ0ZXJ7d2lkdGg6MDtoZWlnaHQ6MnB4O2xlZnQ6NTAlO2JvdHRvbTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpO2JhY2tncm91bmQ6MzEsMTE2LDI1NTtwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7ei1pbmRleDoxMH0udnMtbmF2YmFyLS10aXRsZXtmb250LXNpemU6MS4xcmVtO3BhZGRpbmc6MDtwYWRkaW5nLWxlZnQ6MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7Y29sb3I6aW5oZXJpdH0udnMtbmF2YmFyLS1pdGVtc3twb3NpdGlvbjpyZWxhdGl2ZX0udnMtbmF2YmFyLXN1Ym1lbnV7cG9zaXRpb246YWJzb2x1dGU7dmlzaWJpbGl0eTpoaWRkZW47b3BhY2l0eTowO2JhY2tncm91bmQ6I2ZmZjt6LWluZGV4OjEwMDA7cGFkZGluZy1sZWZ0OjA7d2lkdGg6MjAwcHh9LnZzLW5hdmJhci1zdWJtZW51IC52cy1uYXZiYXItYWZ0ZXJ7ZGlzcGxheTpub25lfS52cy1uYXZiYXItc3VibWVudSAudnMtbmF2YmFyLS1pdGVtcyBhe3RleHQtYWxpZ246bGVmdH0udnMtbmF2YmFyLWZsYXR7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS52cy1uYXZiYXItZmxhdCAudnMtbmF2YmFyLWFmdGVye2Rpc3BsYXk6bm9uZX0udnMtbmF2YmFyLWZ1bmR7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS52cy1uYXZiYXItZnVuZCAudnMtbmF2YmFyLWFmdGVye3dpZHRoOjEwMCU7aGVpZ2h0OjAlO29wYWNpdHk6LjF9LnZzLW5hdmJhci1mdW5kIC52cy1uYXZiYXItLWl0ZW0uaXMtYWN0aXZlLWl0ZW0gLnZzLW5hdmJhci1hZnRlciwudnMtbmF2YmFyLWZ1bmQgYTpob3Zlcn4udnMtbmF2YmFyLWFmdGVye2hlaWdodDoxMDAlfS52cy1uYXZiYXItYm9yZGVyey13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA1KX0udnMtbmF2YmFyLWJvcmRlciAudnMtbmF2YmFyLS1pdGVte2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wNSl9LnZzLW5hdmJhci1ib3JkZXIgLnZzLW5hdmJhci1hZnRlcntoZWlnaHQ6MXB4O2JvdHRvbTotMXB4fS52cy1uYXZiYXItZ3JhZGllbnQgLnZzLW5hdmJhci0taXRlbXttYXJnaW46NHB4IDNweH0udnMtbmF2YmFyLWdyYWRpZW50IC52cy1uYXZiYXItLWl0ZW0gYXtwYWRkaW5nOjZweCAxMnB4fS52cy1uYXZiYXItZ3JhZGllbnQgLnZzLW5hdmJhci1hZnRlcntkaXNwbGF5Om5vbmV9LnZzLW5hdmJhci1zaGFkb3d7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS52cy1uYXZiYXItc2hhZG93IC52cy1uYXZiYXItLWl0ZW17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNSl9LnZzLW5hdmJhci1zaGFkb3cgLnZzLW5hdmJhci0taXRlbS5pcy1hY3RpdmUtaXRlbXtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgNXB4IDIwcHggMCByZ2JhKDAsMCwwLC4wNyk7Ym94LXNoYWRvdzowIDVweCAyMHB4IDAgcmdiYSgwLDAsMCwuMDcpfS52cy1uYXZiYXItc2hhZG93IC52cy1uYXZiYXItYWZ0ZXJ7ZGlzcGxheTpub25lfS52cy1uYXZiYXItY29sb3ItY29sb3J7YmFja2dyb3VuZDozMSwxMTYsMjU1fS52cy1uYXZiYXItc3VibWVudSAudnMtbmF2YmFyLWl0ZW0tcHJpbWFyeS5pcy1hY3RpdmUtaXRlbSwudnMtbmF2YmFyLXN1Ym1lbnUgLnZzLW5hdmJhci1pdGVtLXByaW1hcnk6aG92ZXIsLnZzLW5hdmJhciAudnMtbmF2YmFyLWl0ZW0tcHJpbWFyeS5pcy1hY3RpdmUtaXRlbSwudnMtbmF2YmFyIC52cy1uYXZiYXItaXRlbS1wcmltYXJ5OmhvdmVyPmF7Y29sb3I6MzEsMTE2LDI1NX0udnMtbmF2YmFyLWdyYWRpZW50IC52cy1uYXZiYXItaXRlbS1wcmltYXJ5e2JvcmRlci1yYWRpdXM6NHB4fS52cy1uYXZiYXItZ3JhZGllbnQgLnZzLW5hdmJhci1pdGVtLXByaW1hcnkuaXMtYWN0aXZlLWl0ZW17Ym9yZGVyLXJhZGl1czo2cHg7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiM2NDAwNjQ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMzBkZWcscmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKSxyZ2JhKHZhcigtLXZzLXByaW1hcnkpLC41KSk7dGV4dC1zaGFkb3c6MXB4IDJweCA0cHggcmdiYSgwLDAsMCwuMyl9LnZzLW5hdmJhci1jb2xvci1jb2xvcntiYWNrZ3JvdW5kOjEyMSw0OSwxNzd9LnZzLW5hdmJhci1zdWJtZW51IC52cy1uYXZiYXItaXRlbS1zZWNvbmRhcnkuaXMtYWN0aXZlLWl0ZW0sLnZzLW5hdmJhci1zdWJtZW51IC52cy1uYXZiYXItaXRlbS1zZWNvbmRhcnk6aG92ZXIsLnZzLW5hdmJhciAudnMtbmF2YmFyLWl0ZW0tc2Vjb25kYXJ5LmlzLWFjdGl2ZS1pdGVtLC52cy1uYXZiYXIgLnZzLW5hdmJhci1pdGVtLXNlY29uZGFyeTpob3Zlcj5he2NvbG9yOjEyMSw0OSwxNzd9LnZzLW5hdmJhci1ncmFkaWVudCAudnMtbmF2YmFyLWl0ZW0tc2Vjb25kYXJ5e2JvcmRlci1yYWRpdXM6NHB4fS52cy1uYXZiYXItZ3JhZGllbnQgLnZzLW5hdmJhci1pdGVtLXNlY29uZGFyeS5pcy1hY3RpdmUtaXRlbXtib3JkZXItcmFkaXVzOjZweDtjb2xvcjojZmZmO2JhY2tncm91bmQ6IzY0MDA2NDtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgzMGRlZyxyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSkscmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC41KSk7dGV4dC1zaGFkb3c6MXB4IDJweCA0cHggcmdiYSgwLDAsMCwuMyl9LnZzLW5hdmJhci1jb2xvci1jb2xvcntiYWNrZ3JvdW5kOjI1NSw3MSw4N30udnMtbmF2YmFyLXN1Ym1lbnUgLnZzLW5hdmJhci1pdGVtLWRhbmdlci5pcy1hY3RpdmUtaXRlbSwudnMtbmF2YmFyLXN1Ym1lbnUgLnZzLW5hdmJhci1pdGVtLWRhbmdlcjpob3ZlciwudnMtbmF2YmFyIC52cy1uYXZiYXItaXRlbS1kYW5nZXIuaXMtYWN0aXZlLWl0ZW0sLnZzLW5hdmJhciAudnMtbmF2YmFyLWl0ZW0tZGFuZ2VyOmhvdmVyPmF7Y29sb3I6MjU1LDcxLDg3fS52cy1uYXZiYXItZ3JhZGllbnQgLnZzLW5hdmJhci1pdGVtLWRhbmdlcntib3JkZXItcmFkaXVzOjRweH0udnMtbmF2YmFyLWdyYWRpZW50IC52cy1uYXZiYXItaXRlbS1kYW5nZXIuaXMtYWN0aXZlLWl0ZW17Ym9yZGVyLXJhZGl1czo2cHg7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiM2NDAwNjQ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMzBkZWcscmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpLHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuNSkpO3RleHQtc2hhZG93OjFweCAycHggNHB4IHJnYmEoMCwwLDAsLjMpfS52cy1uYXZiYXItY29sb3ItY29sb3J7YmFja2dyb3VuZDo3MCwyMDEsNTh9LnZzLW5hdmJhci1zdWJtZW51IC52cy1uYXZiYXItaXRlbS1zdWNjZXNzLmlzLWFjdGl2ZS1pdGVtLC52cy1uYXZiYXItc3VibWVudSAudnMtbmF2YmFyLWl0ZW0tc3VjY2Vzczpob3ZlciwudnMtbmF2YmFyIC52cy1uYXZiYXItaXRlbS1zdWNjZXNzLmlzLWFjdGl2ZS1pdGVtLC52cy1uYXZiYXIgLnZzLW5hdmJhci1pdGVtLXN1Y2Nlc3M6aG92ZXI+YXtjb2xvcjo3MCwyMDEsNTh9LnZzLW5hdmJhci1ncmFkaWVudCAudnMtbmF2YmFyLWl0ZW0tc3VjY2Vzc3tib3JkZXItcmFkaXVzOjRweH0udnMtbmF2YmFyLWdyYWRpZW50IC52cy1uYXZiYXItaXRlbS1zdWNjZXNzLmlzLWFjdGl2ZS1pdGVte2JvcmRlci1yYWRpdXM6NnB4O2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNjQwMDY0O2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDMwZGVnLHJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSkscmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuNSkpO3RleHQtc2hhZG93OjFweCAycHggNHB4IHJnYmEoMCwwLDAsLjMpfS52cy1uYXZiYXItY29sb3ItY29sb3J7YmFja2dyb3VuZDoyNTUsMTg2LDB9LnZzLW5hdmJhci1zdWJtZW51IC52cy1uYXZiYXItaXRlbS13YXJuaW5nLmlzLWFjdGl2ZS1pdGVtLC52cy1uYXZiYXItc3VibWVudSAudnMtbmF2YmFyLWl0ZW0td2FybmluZzpob3ZlciwudnMtbmF2YmFyIC52cy1uYXZiYXItaXRlbS13YXJuaW5nLmlzLWFjdGl2ZS1pdGVtLC52cy1uYXZiYXIgLnZzLW5hdmJhci1pdGVtLXdhcm5pbmc6aG92ZXI+YXtjb2xvcjoyNTUsMTg2LDB9LnZzLW5hdmJhci1ncmFkaWVudCAudnMtbmF2YmFyLWl0ZW0td2FybmluZ3tib3JkZXItcmFkaXVzOjRweH0udnMtbmF2YmFyLWdyYWRpZW50IC52cy1uYXZiYXItaXRlbS13YXJuaW5nLmlzLWFjdGl2ZS1pdGVte2JvcmRlci1yYWRpdXM6NnB4O2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNjQwMDY0O2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDMwZGVnLHJnYmEodmFyKC0tdnMtd2FybmluZyksMSkscmdiYSh2YXIoLS12cy13YXJuaW5nKSwuNSkpO3RleHQtc2hhZG93OjFweCAycHggNHB4IHJnYmEoMCwwLDAsLjMpfS52cy1uYXZiYXItY29sb3ItY29sb3J7YmFja2dyb3VuZDozMCwzMCwzMH0udnMtbmF2YmFyLXN1Ym1lbnUgLnZzLW5hdmJhci1pdGVtLWRhcmsuaXMtYWN0aXZlLWl0ZW0sLnZzLW5hdmJhci1zdWJtZW51IC52cy1uYXZiYXItaXRlbS1kYXJrOmhvdmVyLC52cy1uYXZiYXIgLnZzLW5hdmJhci1pdGVtLWRhcmsuaXMtYWN0aXZlLWl0ZW0sLnZzLW5hdmJhciAudnMtbmF2YmFyLWl0ZW0tZGFyazpob3Zlcj5he2NvbG9yOjMwLDMwLDMwfS52cy1uYXZiYXItZ3JhZGllbnQgLnZzLW5hdmJhci1pdGVtLWRhcmt7Ym9yZGVyLXJhZGl1czo0cHh9LnZzLW5hdmJhci1ncmFkaWVudCAudnMtbmF2YmFyLWl0ZW0tZGFyay5pcy1hY3RpdmUtaXRlbXtib3JkZXItcmFkaXVzOjZweDtjb2xvcjojZmZmO2JhY2tncm91bmQ6IzY0MDA2NDtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgzMGRlZyxyZ2JhKHZhcigtLXZzLWRhcmspLDEpLHJnYmEodmFyKC0tdnMtZGFyayksLjUpKTt0ZXh0LXNoYWRvdzoxcHggMnB4IDRweCByZ2JhKDAsMCwwLC4zKX0udnMtbmF2YmFyLWNvbG9yLWNvbG9ye2JhY2tncm91bmQ6MjQ1LDI0NSwyNDV9LnZzLW5hdmJhci1zdWJtZW51IC52cy1uYXZiYXItaXRlbS1saWdodC5pcy1hY3RpdmUtaXRlbSwudnMtbmF2YmFyLXN1Ym1lbnUgLnZzLW5hdmJhci1pdGVtLWxpZ2h0OmhvdmVyLC52cy1uYXZiYXIgLnZzLW5hdmJhci1pdGVtLWxpZ2h0LmlzLWFjdGl2ZS1pdGVtLC52cy1uYXZiYXIgLnZzLW5hdmJhci1pdGVtLWxpZ2h0OmhvdmVyPmF7Y29sb3I6MjQ1LDI0NSwyNDV9LnZzLW5hdmJhci1ncmFkaWVudCAudnMtbmF2YmFyLWl0ZW0tbGlnaHR7Ym9yZGVyLXJhZGl1czo0cHh9LnZzLW5hdmJhci1ncmFkaWVudCAudnMtbmF2YmFyLWl0ZW0tbGlnaHQuaXMtYWN0aXZlLWl0ZW17Ym9yZGVyLXJhZGl1czo2cHg7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiM2NDAwNjQ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMzBkZWcscmdiYSh2YXIoLS12cy1saWdodCksMSkscmdiYSh2YXIoLS12cy1saWdodCksLjUpKTt0ZXh0LXNoYWRvdzoxcHggMnB4IDRweCByZ2JhKDAsMCwwLC4zKX0uY29sbGFwc2V7ZGlzcGxheTpibG9ja30uY29sbGFwc2UgLnZzLW5hdmJhci0tYnRuLXJlc3BvbnNpdmUsLmNvbGxhcHNlIC52cy1uYXZiYXItLWhlYWRlcntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS5jb2xsYXBzZSAudnMtbmF2YmFyLS1oZWFkZXJ7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uY29sbGFwc2UgLnZzLWNvbi1pdGVtc3tkaXNwbGF5Om5vbmU7d2lkdGg6MTAwJX0uY29sbGFwc2UgLnZzLWNvbi1pdGVtcy5hY3RpdmVNZW51UmVzcG9uc2l2ZXtkaXNwbGF5OmJsb2NrfS5jb2xsYXBzZSAudnMtY29uLWl0ZW1zIC52cy1zcGFjZXJ7ZGlzcGxheTpub25lfS5jb2xsYXBzZSAudnMtbmF2YmFyLS1pdGVte3dpZHRoOjEwMCV9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo4MDBweCl7LnZzLW5hdmJhci0tYnRuLXJlc3BvbnNpdmV7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0udnMtbmF2YmFye2Rpc3BsYXk6YmxvY2t9LnZzLW5hdmJhci0taGVhZGVye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0udnMtY29uLWl0ZW1ze2Rpc3BsYXk6bm9uZTt3aWR0aDoxMDAlfS52cy1jb24taXRlbXMuYWN0aXZlTWVudVJlc3BvbnNpdmV7ZGlzcGxheTpibG9ja30udnMtY29uLWl0ZW1zIC52cy1zcGFjZXJ7ZGlzcGxheTpub25lfS52cy1uYXZiYXItLWl0ZW17d2lkdGg6MTAwJX19LnZzLW5vdGlmaWNhdGlvbnN7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoyMDAwMDA7cGFkZGluZzo1cHg7bWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1yaWdodDo1cHg7Ym9yZGVyLXJhZGl1czoxMHB4O292ZXJmbG93OmhpZGRlbjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlO2N1cnNvcjpkZWZhdWx0O21heC13aWR0aDozNTBweDttaW4td2lkdGg6MjAwcHh9LnZzLW5vdGlmaWNhdGlvbnM6YWN0aXZle29wYWNpdHk6Ljh9LnZzLW5vdGlmaWNhdGlvbnMgLmNvbnRlbnQtbm90aXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MTAwJX0udnMtbm90aWZpY2F0aW9ucyAuY29udGVudC1ub3RpIC5jb24tdGV4dC1ub3Rpe3dpZHRoOjEwMCV9LnZzLW5vdGlmaWNhdGlvbnMgLmNvbnRlbnQtbm90aSAudnMtaWNvbi1ub3Rpe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7ei1pbmRleDoxMDA7ZGlzcGxheTpibG9jaztwYWRkaW5nOjVweDtiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC4xKTtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MjBweDstd2Via2l0LWFuaW1hdGlvbjpvcGVuaWNvbiAuNHMgZWFzZTthbmltYXRpb246b3Blbmljb24gLjRzIGVhc2V9LnZzLW5vdGlmaWNhdGlvbnMgaDMsLnZzLW5vdGlmaWNhdGlvbnMgcHt6LWluZGV4OjEwMDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWFuaW1hdGlvbjpvcGVuIC40cyBlYXNlO2FuaW1hdGlvbjpvcGVuIC40cyBlYXNlfS52cy1ub3RpZmljYXRpb25zIGgze2ZvbnQtc2l6ZToxNnB4O3BhZGRpbmc6NXB4O3BhZGRpbmctYm90dG9tOjB9LnZzLW5vdGlmaWNhdGlvbnMgcHtmb250LXNpemU6MTRweDtwYWRkaW5nOjVweDtwYWRkaW5nLXJpZ2h0OjEwcHh9LnZzLW5vdGlmaWNhdGlvbnMudnMtbm90aS1hY3RpdmUgaDMsLnZzLW5vdGlmaWNhdGlvbnMudnMtbm90aS1hY3RpdmUgcHtvcGFjaXR5OjF9LnZzLW5vdGlmaWNhdGlvbnMgLmZpbGxpbmd7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zaXRpb246YWxsIC40NXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuNDVzIGVhc2U7ei1pbmRleDoxOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LnZzLW5vdGktcHJpbWFyeSAuZmlsbGluZ3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSk7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtib3JkZXItcmFkaXVzOjUwJX0udnMtbm90aS1zZWNvbmRhcnkgLmZpbGxpbmd7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSk7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtib3JkZXItcmFkaXVzOjUwJX0udnMtbm90aS1kYW5nZXIgLmZpbGxpbmd7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSk7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtib3JkZXItcmFkaXVzOjUwJX0udnMtbm90aS1zdWNjZXNzIC5maWxsaW5ne2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKTt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O2JvcmRlci1yYWRpdXM6NTAlfS52cy1ub3RpLXdhcm5pbmcgLmZpbGxpbmd7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpO3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHg7Ym9yZGVyLXJhZGl1czo1MCV9LnZzLW5vdGktZGFyayAuZmlsbGluZ3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSk7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtib3JkZXItcmFkaXVzOjUwJX0udnMtbm90aS1saWdodCAuZmlsbGluZ3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpO3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHg7Ym9yZGVyLXJhZGl1czo1MCV9QC13ZWJraXQta2V5ZnJhbWVzIG9wZW57MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMzBweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMzBweCl9dG97LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIG9wZW57MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMzBweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMzBweCl9dG97LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7b3BhY2l0eToxfX1ALXdlYmtpdC1rZXlmcmFtZXMgb3Blbmljb257MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC40KTt0cmFuc2Zvcm06c2NhbGUoLjQpfXRvey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgb3Blbmljb257MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC40KTt0cmFuc2Zvcm06c2NhbGUoLjQpfXRvey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5OjF9fS5jb24tdnMtcGFnaW5hdGlvbnstLWNvbG9yLXBhZ2luYXRpb246I2YwZjBmMDstLWNvbG9yLXBhZ2luYXRpb24tYWxwaGE6I2YwZjBmMH0udnMtcGFnaW5hdGlvbi0taW5wdXQtZ290b3tjb2xvcjppbmhlcml0O3BhZGRpbmc6OHB4O2JvcmRlci1yYWRpdXM6NXB4O2JvcmRlcjowIHNvbGlkIHJnYmEoMCwwLDAsLjIpO2JhY2tncm91bmQ6I2YwZjBmMH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXBhZ2luYXRpb24tLWlucHV0LWdvdG97bWFyZ2luLXJpZ2h0OjVweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXBhZ2luYXRpb24tLWlucHV0LWdvdG97bWFyZ2luLWxlZnQ6NXB4fS52cy1wYWdpbmF0aW9uLS1uYXYsLnZzLXBhZ2luYXRpb24tLXVse2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0udnMtcGFnaW5hdGlvbi0tdWx7cGFkZGluZzowO2JhY2tncm91bmQ6I2YwZjBmMDtib3JkZXItcmFkaXVzOjIwcHg7cGFkZGluZy1sZWZ0OjVweDtwYWRkaW5nLXJpZ2h0OjVweH0udnMtcGFnaW5hdGlvbi0tYXJyYXl7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzowfS52cy1wYWdpbmF0aW9uLS1hcnJheSBsaXtkaXNwbGF5OmlubGluZS1ibG9ja30udnMtcGFnaW5hdGlvbi0tbWJ7bWFyZ2luLWJvdHRvbTo1cHh9LnZzLXBhZ2luYXRpb24tLWJvbGR7Zm9udC13ZWlnaHQ6NzAwfS52cy1wYWdpbmF0aW9uLS1saXtjdXJzb3I6cG9pbnRlcjt3aWR0aDozNXB4O2hlaWdodDozNXB4O2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOjhweDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGU7YmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlO21hcmdpbjowIDJweDtmb250LXdlaWdodDo3MDA7Y29sb3I6cmdiYSgwLDAsMCwuNSl9LnZzLXBhZ2luYXRpb24tLWxpIHNwYW57ei1pbmRleDoxMDB9LnZzLXBhZ2luYXRpb24tLWxpIC5lZmZlY3R7ei1pbmRleDo1MDtjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDp2YXIoLS12cy1jb2xvci1wYWdpbmF0aW9uKTt0b3A6MDtkaXNwbGF5OmJsb2NrO2JvcmRlci1yYWRpdXM6OHB4Oy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC41KTt0cmFuc2Zvcm06c2NhbGUoLjUpO29wYWNpdHk6MDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMjBweCAwIHRyYW5zcGFyZW50O2JveC1zaGFkb3c6MCAwIDIwcHggMCB0cmFuc3BhcmVudH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXBhZ2luYXRpb24tLWxpIC5lZmZlY3R7cmlnaHQ6MH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXBhZ2luYXRpb24tLWxpIC5lZmZlY3R7bGVmdDowfS52cy1wYWdpbmF0aW9uLS1saS5pcy1jdXJyZW50ey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMDUpO3RyYW5zZm9ybTpzY2FsZSgxLjA1KTtjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjcwMDtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kOnZhcigtLXZzLWNvbG9yLXBhZ2luYXRpb24pfS52cy1wYWdpbmF0aW9uLS1saS5pcy1jdXJyZW50IC5lZmZlY3R7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIWltcG9ydGFudDt0cmFuc2Zvcm06c2NhbGUoMSkhaW1wb3J0YW50Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMjBweCAwIHZhcigtLXZzLWNvbG9yLXBhZ2luYXRpb24tYWxwaGEpO2JveC1zaGFkb3c6MCAwIDIwcHggMCB2YXIoLS12cy1jb2xvci1wYWdpbmF0aW9uLWFscGhhKX0udnMtcGFnaW5hdGlvbi0tbGk6aG92ZXI6bm90KC5pcy1jdXJyZW50KXtjb2xvcjp2YXIoLS12cy1jb2xvci1wYWdpbmF0aW9uKX0udnMtcGFnaW5hdGlvbi0tYnV0dG9uc3t3aWR0aDozNXB4O2hlaWdodDozNXB4O2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstbXMtZmxleC1uZWdhdGl2ZTowO2ZsZXgtc2hyaW5rOjA7Y29sb3I6cmdiYSgwLDAsMCwuNik7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTtiYWNrZ3JvdW5kOiNmMGYwZjA7bWFyZ2luOjA7ei1pbmRleDoyMDB9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1wYWdpbmF0aW9uLS1idXR0b25zLnZzLXBhZ2luYXRpb24tLWJ1dHRvbi1wcmV2e21hcmdpbi1sZWZ0OjVweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXBhZ2luYXRpb24tLWJ1dHRvbnMudnMtcGFnaW5hdGlvbi0tYnV0dG9uLXByZXYsLnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1wYWdpbmF0aW9uLS1idXR0b25zLnZzLXBhZ2luYXRpb24tLWJ1dHRvbi1uZXh0e21hcmdpbi1yaWdodDo1cHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1wYWdpbmF0aW9uLS1idXR0b25zLnZzLXBhZ2luYXRpb24tLWJ1dHRvbi1uZXh0e21hcmdpbi1sZWZ0OjVweH0udnMtcGFnaW5hdGlvbi0tYnV0dG9ucy5kaXNhYmxlZCwudnMtcGFnaW5hdGlvbi0tYnV0dG9uczpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6LjV9LnZzLXBhZ2luYXRpb24tLWJ1dHRvbnMgaXtmb250LXNpemU6MS4ycmVtfS52cy1wYWdpbmF0aW9uLS1idXR0b25zOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tdnMtY29sb3ItcGFnaW5hdGlvbik7Y29sb3I6I2ZmZn0udnMtcGFnaW5hdGlvbi1wcmltYXJ5IGxpOmhvdmVyOm5vdCguaXMtY3VycmVudCl7Y29sb3I6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKSFpbXBvcnRhbnR9LnZzLXBhZ2luYXRpb24tcHJpbWFyeSAuZWZmZWN0ey13ZWJraXQtYm94LXNoYWRvdzowIDAgMjBweCAwIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksLjUpO2JveC1zaGFkb3c6MCAwIDIwcHggMCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLC41KX0udnMtcGFnaW5hdGlvbi1wcmltYXJ5IC5lZmZlY3QsLnZzLXBhZ2luYXRpb24tcHJpbWFyeSAudnMtcGFnaW5hdGlvbi0tYnV0dG9uczpob3ZlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSkhaW1wb3J0YW50fS52cy1wYWdpbmF0aW9uLXNlY29uZGFyeSBsaTpob3Zlcjpub3QoLmlzLWN1cnJlbnQpe2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKSFpbXBvcnRhbnR9LnZzLXBhZ2luYXRpb24tc2Vjb25kYXJ5IC5lZmZlY3R7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAyMHB4IDAgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC41KTtib3gtc2hhZG93OjAgMCAyMHB4IDAgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC41KX0udnMtcGFnaW5hdGlvbi1zZWNvbmRhcnkgLmVmZmVjdCwudnMtcGFnaW5hdGlvbi1zZWNvbmRhcnkgLnZzLXBhZ2luYXRpb24tLWJ1dHRvbnM6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSkhaW1wb3J0YW50fS52cy1wYWdpbmF0aW9uLWRhbmdlciBsaTpob3Zlcjpub3QoLmlzLWN1cnJlbnQpe2NvbG9yOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKSFpbXBvcnRhbnR9LnZzLXBhZ2luYXRpb24tZGFuZ2VyIC5lZmZlY3R7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAyMHB4IDAgcmdiYSh2YXIoLS12cy1kYW5nZXIpLC41KTtib3gtc2hhZG93OjAgMCAyMHB4IDAgcmdiYSh2YXIoLS12cy1kYW5nZXIpLC41KX0udnMtcGFnaW5hdGlvbi1kYW5nZXIgLmVmZmVjdCwudnMtcGFnaW5hdGlvbi1kYW5nZXIgLnZzLXBhZ2luYXRpb24tLWJ1dHRvbnM6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSkhaW1wb3J0YW50fS52cy1wYWdpbmF0aW9uLXN1Y2Nlc3MgbGk6aG92ZXI6bm90KC5pcy1jdXJyZW50KXtjb2xvcjpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpIWltcG9ydGFudH0udnMtcGFnaW5hdGlvbi1zdWNjZXNzIC5lZmZlY3R7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAyMHB4IDAgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuNSk7Ym94LXNoYWRvdzowIDAgMjBweCAwIHJnYmEodmFyKC0tdnMtc3VjY2VzcyksLjUpfS52cy1wYWdpbmF0aW9uLXN1Y2Nlc3MgLmVmZmVjdCwudnMtcGFnaW5hdGlvbi1zdWNjZXNzIC52cy1wYWdpbmF0aW9uLS1idXR0b25zOmhvdmVye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnR9LnZzLXBhZ2luYXRpb24td2FybmluZyBsaTpob3Zlcjpub3QoLmlzLWN1cnJlbnQpe2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSkhaW1wb3J0YW50fS52cy1wYWdpbmF0aW9uLXdhcm5pbmcgLmVmZmVjdHstd2Via2l0LWJveC1zaGFkb3c6MCAwIDIwcHggMCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLC41KTtib3gtc2hhZG93OjAgMCAyMHB4IDAgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwuNSl9LnZzLXBhZ2luYXRpb24td2FybmluZyAuZWZmZWN0LC52cy1wYWdpbmF0aW9uLXdhcm5pbmcgLnZzLXBhZ2luYXRpb24tLWJ1dHRvbnM6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpIWltcG9ydGFudH0udnMtcGFnaW5hdGlvbi1kYXJrIGxpOmhvdmVyOm5vdCguaXMtY3VycmVudCl7Y29sb3I6cmdiYSh2YXIoLS12cy1kYXJrKSwxKSFpbXBvcnRhbnR9LnZzLXBhZ2luYXRpb24tZGFyayAuZWZmZWN0ey13ZWJraXQtYm94LXNoYWRvdzowIDAgMjBweCAwIHJnYmEodmFyKC0tdnMtZGFyayksLjUpO2JveC1zaGFkb3c6MCAwIDIwcHggMCByZ2JhKHZhcigtLXZzLWRhcmspLC41KX0udnMtcGFnaW5hdGlvbi1kYXJrIC5lZmZlY3QsLnZzLXBhZ2luYXRpb24tZGFyayAudnMtcGFnaW5hdGlvbi0tYnV0dG9uczpob3ZlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSkhaW1wb3J0YW50fS52cy1wYWdpbmF0aW9uLWxpZ2h0IGxpOmhvdmVyOm5vdCguaXMtY3VycmVudCl7Y29sb3I6cmdiYSh2YXIoLS12cy1saWdodCksMSkhaW1wb3J0YW50fS52cy1wYWdpbmF0aW9uLWxpZ2h0IC5lZmZlY3R7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAyMHB4IDAgcmdiYSh2YXIoLS12cy1saWdodCksLjUpO2JveC1zaGFkb3c6MCAwIDIwcHggMCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwuNSl9LnZzLXBhZ2luYXRpb24tbGlnaHQgLmVmZmVjdCwudnMtcGFnaW5hdGlvbi1saWdodCAudnMtcGFnaW5hdGlvbi0tYnV0dG9uczpob3ZlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpIWltcG9ydGFudH0udnMtZGVzY3JpcHRpb24tcHJpbWFyeXtjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpIWltcG9ydGFudH0udnMtZGVzY3JpcHRpb24tc2Vjb25kYXJ5e2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKSFpbXBvcnRhbnR9LnZzLWRlc2NyaXB0aW9uLWRhbmdlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSkhaW1wb3J0YW50fS52cy1kZXNjcmlwdGlvbi1zdWNjZXNze2NvbG9yOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSkhaW1wb3J0YW50fS52cy1kZXNjcmlwdGlvbi13YXJuaW5ne2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSkhaW1wb3J0YW50fS52cy1kZXNjcmlwdGlvbi1kYXJre2NvbG9yOnJnYmEodmFyKC0tdnMtZGFyayksMSkhaW1wb3J0YW50fS52cy1kZXNjcmlwdGlvbi1saWdodHtjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSFpbXBvcnRhbnR9LnBvcHVwLXQtZW50ZXIsLnBvcHVwLXQtbGVhdmUtdG97b3BhY2l0eTowIWltcG9ydGFudH0ucG9wdXAtdC1lbnRlciAudnMtcG9wdXAsLnBvcHVwLXQtbGVhdmUtdG8gLnZzLXBvcHVwey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC45KSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnNjYWxlKC45KSFpbXBvcnRhbnR9LnBvcHVwLXQtZW50ZXIgLnZzLXBvcHVwLWNhbmNlbCwucG9wdXAtdC1sZWF2ZS10byAudnMtcG9wdXAtY2FuY2Vse2JvcmRlci1yYWRpdXM6NTAlIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1ydGwgLnBvcHVwLXQtZW50ZXIgLnZzLXBvcHVwLWNhbmNlbCwudnVlc2F4LWFwcC1pcy1ydGwgLnBvcHVwLXQtbGVhdmUtdG8gLnZzLXBvcHVwLWNhbmNlbHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLThweCwtOHB4KSBzY2FsZSguNSkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGUoLThweCwtOHB4KSBzY2FsZSguNSkhaW1wb3J0YW50fS52dWVzYXgtYXBwLWlzLWx0ciAucG9wdXAtdC1lbnRlciAudnMtcG9wdXAtY2FuY2VsLC52dWVzYXgtYXBwLWlzLWx0ciAucG9wdXAtdC1sZWF2ZS10byAudnMtcG9wdXAtY2FuY2Vsey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg4cHgsLThweCkgc2NhbGUoLjUpIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlKDhweCwtOHB4KSBzY2FsZSguNSkhaW1wb3J0YW50fS5wb3B1cC10LWVudGVyIC52cy1wb3B1cC10ZXh0LC5wb3B1cC10LWxlYXZlLXRvIC52cy1wb3B1cC10ZXh0e29wYWNpdHk6MH0udnVlc2F4LWFwcC1pcy1ydGwgLnBvcHVwLXQtZW50ZXIgLnZzLXBvcHVwLXRleHQsLnZ1ZXNheC1hcHAtaXMtcnRsIC5wb3B1cC10LWxlYXZlLXRvIC52cy1wb3B1cC10ZXh0ey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgxNXB4KSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxNXB4KSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtbHRyIC5wb3B1cC10LWVudGVyIC52cy1wb3B1cC10ZXh0LC52dWVzYXgtYXBwLWlzLWx0ciAucG9wdXAtdC1sZWF2ZS10byAudnMtcG9wdXAtdGV4dHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTE1cHgpIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xNXB4KSFpbXBvcnRhbnR9LnBvcHVwLXQtZW50ZXIgaGVhZGVyIGgzLC5wb3B1cC10LWxlYXZlLXRvIGhlYWRlciBoM3tvcGFjaXR5OjB9LnZ1ZXNheC1hcHAtaXMtcnRsIC5wb3B1cC10LWVudGVyIGhlYWRlciBoMywudnVlc2F4LWFwcC1pcy1ydGwgLnBvcHVwLXQtbGVhdmUtdG8gaGVhZGVyIGgzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg1MHB4KSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSg1MHB4KSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtbHRyIC5wb3B1cC10LWVudGVyIGhlYWRlciBoMywudnVlc2F4LWFwcC1pcy1sdHIgLnBvcHVwLXQtbGVhdmUtdG8gaGVhZGVyIGgzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTBweCkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwcHgpIWltcG9ydGFudH0uY29uLXZzLXBvcHVwey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzO3RyYW5zaXRpb246YWxsIC4yczt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmZpeGVkO3RvcDowO3otaW5kZXg6MjAwMDA7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO29wYWNpdHk6MX0udnVlc2F4LWFwcC1pcy1ydGwgLmNvbi12cy1wb3B1cHtyaWdodDowfS52dWVzYXgtYXBwLWlzLWx0ciAuY29uLXZzLXBvcHVwe2xlZnQ6MH0uY29uLXZzLXBvcHVwLmZ1bGxzY3JlZW4gLnZzLXBvcHVwe3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LmNvbi12cy1wb3B1cCAudnMtcG9wdXB7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnM7dHJhbnNpdGlvbjphbGwgLjJzO3otaW5kZXg6MTAwO3dpZHRoOjYwMHB4O21hcmdpbjoxMHB4O21heC13aWR0aDpjYWxjKDEwMCUgLSAzMHB4KTttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIDMwcHgpO2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDVweCAyMHB4IDAgcmdiYSgwLDAsMCwuMSk7Ym94LXNoYWRvdzowIDVweCAyMHB4IDAgcmdiYSgwLDAsMCwuMSk7YmFja2dyb3VuZDojZmZmOy13ZWJraXQtYW5pbWF0aW9uOnJlYm91bmQgLjNzO2FuaW1hdGlvbjpyZWJvdW5kIC4zc30udnMtcG9wdXAtLWhlYWRlcnt3aWR0aDoxMDAlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA1KTtib3JkZXItcmFkaXVzOjVweCA1cHg7cG9zaXRpb246cmVsYXRpdmV9LnZzLXBvcHVwLS1jb250ZW50e3BhZGRpbmc6MTNweDtmb250LXNpemU6LjllbTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yM3MgZWFzZSAuMXM7dHJhbnNpdGlvbjphbGwgLjIzcyBlYXNlIC4xcztvdmVyZmxvdzphdXRvO21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDEwMHB4KTttYXJnaW4tdG9wOjVweDttYXJnaW4tYm90dG9tOjVweDt3aWR0aDpjYWxjKDEwMCUgLSA1cHgpfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtcG9wdXAtLWNvbnRlbnR7bWFyZ2luLWxlZnQ6NXB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtcG9wdXAtLWNvbnRlbnR7bWFyZ2luLXJpZ2h0OjVweH0udnMtcG9wdXAtLWNsb3Nley13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjIzcyBlYXNlIC4xczt0cmFuc2l0aW9uOmFsbCAuMjNzIGVhc2UgLjFzO3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6OHB4O2N1cnNvcjpwb2ludGVyOy13ZWJraXQtYm94LXNoYWRvdzowIDVweCAyMHB4IDAgcmdiYSgwLDAsMCwuMSk7Ym94LXNoYWRvdzowIDVweCAyMHB4IDAgcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czo1cHg7YmFja2dyb3VuZDojZmZmO2ZvbnQtc2l6ZToxLjI1ZW07Y29sb3I6cmdiYSgwLDAsMCwuNil9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1wb3B1cC0tY2xvc2V7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC04cHgsLThweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtOHB4LC04cHgpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtcG9wdXAtLWNsb3Nley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg4cHgsLThweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg4cHgsLThweCl9LnZzLXBvcHVwLS1jbG9zZTpob3Zlcnstd2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93OjAgMCAwIDAgcmdiYSgwLDAsMCwuMSl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1wb3B1cC0tY2xvc2U6aG92ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01cHgsLTVweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNXB4LC01cHgpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtcG9wdXAtLWNsb3NlOmhvdmVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg1cHgsLTVweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg1cHgsLTVweCl9LnZzLXBvcHVwLS10aXRsZXt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjVweCA1cHggMCAwfS52cy1wb3B1cC0tdGl0bGUgaDN7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjNzIGVhc2UgLjFzO3RyYW5zaXRpb246YWxsIC4yM3MgZWFzZSAuMXM7cGFkZGluZzo4cHg7cGFkZGluZy1sZWZ0OjEycHg7Zm9udC1zaXplOjEuMnJlbX0udnMtcG9wdXAtLWJhY2tncm91bmR7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjQpO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2hlaWdodDoxMDAlO3otaW5kZXg6MTA7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO29wYWNpdHk6MX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXBvcHVwLS1iYWNrZ3JvdW5ke3JpZ2h0OjB9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1wb3B1cC0tYmFja2dyb3VuZHtsZWZ0OjB9LnZzLXBvcHVwLXByaW1hcnkgaGVhZGVyIC5hZnRlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLXBvcHVwLXNlY29uZGFyeSBoZWFkZXIgLmFmdGVye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy1wb3B1cC1kYW5nZXIgaGVhZGVyIC5hZnRlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnMtcG9wdXAtc3VjY2VzcyBoZWFkZXIgLmFmdGVye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtcG9wdXAtd2FybmluZyBoZWFkZXIgLmFmdGVye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0udnMtcG9wdXAtZGFyayBoZWFkZXIgLmFmdGVye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwxKX0udnMtcG9wdXAtbGlnaHQgaGVhZGVyIC5hZnRlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfUAtd2Via2l0LWtleWZyYW1lcyByZWJvdW5kezAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC45KTt0cmFuc2Zvcm06c2NhbGUoLjkpfTUwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjA4KTt0cmFuc2Zvcm06c2NhbGUoMS4wOCl9dG97LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtOnNjYWxlKDEpfX1Aa2V5ZnJhbWVzIHJlYm91bmR7MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjkpO3RyYW5zZm9ybTpzY2FsZSguOSl9NTAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMDgpO3RyYW5zZm9ybTpzY2FsZSgxLjA4KX10b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSl9fS52cy1wcm9ncmVzcy0taW5kZXRlcm1pbmF0ZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowO2hlaWdodDoxMDAlO2xlZnQ6LTEwMCU7dG9wOjA7Ym9yZGVyLXJhZGl1czoycHg7LXdlYmtpdC1hbmltYXRpb246aW5kZXRlcm1pbmF0ZSAxLjJzIGVhc2UgaW5maW5pdGU7YW5pbWF0aW9uOmluZGV0ZXJtaW5hdGUgMS4ycyBlYXNlIGluZmluaXRlO2JvcmRlci1yYWRpdXM6MjBweH0udnMtcHJvZ3Jlc3MtLWJhY2tncm91bmR7d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjE4cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNik7ei1pbmRleDo1MDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzpoaWRkZW59LnZzLXByb2dyZXNzLS1mb3JlZ3JvdW5ke3otaW5kZXg6MTAwO2hlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6MThweDstd2Via2l0LXRyYW5zaXRpb246YWxsIC41cyBlYXNlO3RyYW5zaXRpb246YWxsIC41cyBlYXNlfS52cy1wcm9ncmVzcy1wcmltYXJ5e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuMSl9LnZzLXByb2dyZXNzLXByaW1hcnkgLnZzLXByb2dyZXNzLS1mb3JlZ3JvdW5kLC52cy1wcm9ncmVzcy1wcmltYXJ5IC52cy1wcm9ncmVzcy0taW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLXByb2dyZXNzLXNlY29uZGFyeXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuMSl9LnZzLXByb2dyZXNzLXNlY29uZGFyeSAudnMtcHJvZ3Jlc3MtLWZvcmVncm91bmQsLnZzLXByb2dyZXNzLXNlY29uZGFyeSAudnMtcHJvZ3Jlc3MtLWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLXByb2dyZXNzLWRhbmdlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuMSl9LnZzLXByb2dyZXNzLWRhbmdlciAudnMtcHJvZ3Jlc3MtLWZvcmVncm91bmQsLnZzLXByb2dyZXNzLWRhbmdlciAudnMtcHJvZ3Jlc3MtLWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLXByb2dyZXNzLXN1Y2Nlc3N7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC4xKX0udnMtcHJvZ3Jlc3Mtc3VjY2VzcyAudnMtcHJvZ3Jlc3MtLWZvcmVncm91bmQsLnZzLXByb2dyZXNzLXN1Y2Nlc3MgLnZzLXByb2dyZXNzLS1pbmRldGVybWluYXRle2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtcHJvZ3Jlc3Mtd2FybmluZ3tiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtd2FybmluZyksLjEpfS52cy1wcm9ncmVzcy13YXJuaW5nIC52cy1wcm9ncmVzcy0tZm9yZWdyb3VuZCwudnMtcHJvZ3Jlc3Mtd2FybmluZyAudnMtcHJvZ3Jlc3MtLWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1wcm9ncmVzcy1kYXJre2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwuMSl9LnZzLXByb2dyZXNzLWRhcmsgLnZzLXByb2dyZXNzLS1mb3JlZ3JvdW5kLC52cy1wcm9ncmVzcy1kYXJrIC52cy1wcm9ncmVzcy0taW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFyayksMSl9LnZzLXByb2dyZXNzLWxpZ2h0e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1saWdodCksLjEpfS52cy1wcm9ncmVzcy1saWdodCAudnMtcHJvZ3Jlc3MtLWZvcmVncm91bmQsLnZzLXByb2dyZXNzLWxpZ2h0IC52cy1wcm9ncmVzcy0taW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfUAtd2Via2l0LWtleWZyYW1lcyBpbmRldGVybWluYXRlezAle3dpZHRoOjMwJTtsZWZ0Oi00MCV9NjAle2xlZnQ6MTAwJTt3aWR0aDoxMDAlfXRve2xlZnQ6MTAwJTt3aWR0aDowfX1Aa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGV7MCV7d2lkdGg6MzAlO2xlZnQ6LTQwJX02MCV7bGVmdDoxMDAlO3dpZHRoOjEwMCV9dG97bGVmdDoxMDAlO3dpZHRoOjB9fS5jb24tdnMtcmFkaW97cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jb24tdnMtcmFkaW86aG92ZXIgLnZzLXJhZGlvLS1ib3JkZXtib3JkZXI6MnB4IHNvbGlkICNhMGEwYTB9LnZzLXJhZGlvLS1sYWJlbHtjdXJzb3I6cG9pbnRlcn0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXJhZGlvLS1sYWJlbHttYXJnaW4tcmlnaHQ6NXB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtcmFkaW8tLWxhYmVse21hcmdpbi1sZWZ0OjVweH0udnMtcmFkaW97d2lkdGg6MThweDtoZWlnaHQ6MThweDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpwb2ludGVyOy1tcy1mbGV4LW5lZ2F0aXZlOjA7ZmxleC1zaHJpbms6MH0udnMtcmFkaW8tLWJvcmRle2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjJweCBzb2xpZCAjYzhjOGM4fS52cy1yYWRpby0tYm9yZGUsLnZzLXJhZGlvLS1jaXJjbGV7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RvcDowfS52cy1yYWRpby0tY2lyY2xley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC4xKTt0cmFuc2Zvcm06c2NhbGUoLjEpO29wYWNpdHk6MDtib3JkZXItcmFkaXVzOjUwJX0udnMtcmFkaW8tLWlucHV0e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtvcGFjaXR5OjA7d2lkdGg6MjBweH0udnMtcmFkaW8tLWlucHV0OmNoZWNrZWQrLnZzLXJhZGlve2N1cnNvcjpkZWZhdWx0fS52cy1yYWRpby0taW5wdXQ6Y2hlY2tlZCsudnMtcmFkaW8gLnZzLXJhZGlvLS1jaXJjbGV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtOnNjYWxlKDEpO29wYWNpdHk6MX0udnMtcmFkaW8tLWlucHV0OmNoZWNrZWQrLnZzLXJhZGlvIC52cy1yYWRpby0tYm9yZGV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC4zKTt0cmFuc2Zvcm06c2NhbGUoLjMpfS52cy1yYWRpby0taW5wdXQ6YWN0aXZlKy52cy1yYWRpbyAudnMtcmFkaW8tLWJvcmRley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMSk7dHJhbnNmb3JtOnNjYWxlKDEuMSl9LnZzLXJhZGlvLS1pbnB1dDpkaXNhYmxlZCsudnMtcmFkaW8sLnZzLXJhZGlvLS1pbnB1dDpkaXNhYmxlZCsudnMtcmFkaW8rLnZzLXJhZGlvLS1sYWJlbHtwb2ludGVyLWV2ZW50czpub25lO2N1cnNvcjpkZWZhdWx0fS52cy1yYWRpby0taW5wdXQ6ZGlzYWJsZWQrLnZzLXJhZGlve29wYWNpdHk6LjR9LnZzLXJhZGlvLS1pbnB1dDpkaXNhYmxlZCsudnMtcmFkaW8gLnZzLXJhZGlvLS1jaXJjbGV7cG9pbnRlci1ldmVudHM6bm9uZX0udnMtcmFkaW8tLWlucHV0OmRpc2FibGVkKy52cy1yYWRpbyAudnMtcmFkaW8tLWJvcmRle2JvcmRlcjoycHggc29saWQgI2I0YjRiNDtiYWNrZ3JvdW5kOiNkMmQyZDI7cG9pbnRlci1ldmVudHM6bm9uZX0udnMtcmFkaW8tcHJpbWFyeSAudnMtcmFkaW8tLWNpcmNsZXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgM3B4IDEycHggMCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLC40KTtib3gtc2hhZG93OjAgM3B4IDEycHggMCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLC40KX0udnMtcmFkaW8tc2Vjb25kYXJ5IC52cy1yYWRpby0tY2lyY2xle2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC40KTtib3gtc2hhZG93OjAgM3B4IDEycHggMCByZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksLjQpfS52cy1yYWRpby1kYW5nZXIgLnZzLXJhZGlvLS1jaXJjbGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgM3B4IDEycHggMCByZ2JhKHZhcigtLXZzLWRhbmdlciksLjQpO2JveC1zaGFkb3c6MCAzcHggMTJweCAwIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuNCl9LnZzLXJhZGlvLXN1Y2Nlc3MgLnZzLXJhZGlvLS1jaXJjbGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuNCk7Ym94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuNCl9LnZzLXJhZGlvLXdhcm5pbmcgLnZzLXJhZGlvLS1jaXJjbGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwuNCk7Ym94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwuNCl9LnZzLXJhZGlvLWRhcmsgLnZzLXJhZGlvLS1jaXJjbGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhcmspLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1kYXJrKSwuNCk7Ym94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1kYXJrKSwuNCl9LnZzLXJhZGlvLWxpZ2h0IC52cy1yYWRpby0tY2lyY2xle2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1saWdodCksMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgM3B4IDEycHggMCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwuNCk7Ym94LXNoYWRvdzowIDNweCAxMnB4IDAgcmdiYSh2YXIoLS12cy1saWdodCksLjQpfS5mYWRlc2VsZWN0LWVudGVyLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuMnMsLXdlYmtpdC10cmFuc2Zvcm0gLjJzO3RyYW5zaXRpb246b3BhY2l0eSAuMnMsLXdlYmtpdC10cmFuc2Zvcm0gLjJzO3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyxvcGFjaXR5IC4yczt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMsb3BhY2l0eSAuMnMsLXdlYmtpdC10cmFuc2Zvcm0gLjJzfS5mYWRlc2VsZWN0LWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuMTVzLC13ZWJraXQtdHJhbnNmb3JtIC4xNXM7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMsLXdlYmtpdC10cmFuc2Zvcm0gLjE1czt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzLG9wYWNpdHkgLjE1czt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzLG9wYWNpdHkgLjE1cywtd2Via2l0LXRyYW5zZm9ybSAuMTVzfS5mYWRlc2VsZWN0LWVudGVyLC5mYWRlc2VsZWN0LWxlYXZlLXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCkgc2NhbGUoLjk1KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApIHNjYWxlKC45NSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMTBweCAwIC01cHggdHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzowIDEwcHggMCAtNXB4IHRyYW5zcGFyZW50fS5jb24tc2VsZWN0LC5pbnB1dC1zZWxlY3QtY29ue3Bvc2l0aW9uOnJlbGF0aXZlfS5jb24tc2VsZWN0e3dpZHRoOjIwMHB4O2NsZWFyOmJvdGh9LmNvbi1zZWxlY3QuYWN0aXZlT3B0aW9uczpub3QoLmF1dG9jb21wbGV0ZXgpIC5pbnB1dC1zZWxlY3R7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMSk7dHJhbnNmb3JtOnNjYWxlKDEuMSl9LnZ1ZXNheC1hcHAtaXMtbHRyIC5jb24tc2VsZWN0LmFjdGl2ZU9wdGlvbnMgLnZzLXNlbGVjdC0taWNvbiwudnVlc2F4LWFwcC1pcy1ydGwgLmNvbi1zZWxlY3QuYWN0aXZlT3B0aW9ucyAudnMtc2VsZWN0LS1pY29uey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKC0xODBkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgtMTgwZGVnKX0udnMtc2VsZWN0LS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO2ZvbnQtc2l6ZToxLjA2MjVlbTt0b3A6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2VsZWN0LS1pY29ue2xlZnQ6NXB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2VsZWN0LS1pY29ue3JpZ2h0OjVweH0udnMtc2VsZWN0LS1pbnB1dHtjb2xvcjppbmhlcml0O3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzo3cHg7Ym9yZGVyLXJhZGl1czo1cHg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2VsZWN0LS1pbnB1dHtwYWRkaW5nLWxlZnQ6MjBweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNlbGVjdC0taW5wdXR7cGFkZGluZy1yaWdodDoyMHB4fS52cy1zZWxlY3QtLWlucHV0OmhvdmVye2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuNCl9LnZzLXNlbGVjdC0taW5wdXQtY29ue3Bvc2l0aW9uOnJlbGF0aXZlfS52cy1zZWxlY3QtLWlucHV0OmRpc2FibGVke29wYWNpdHk6LjU7Y3Vyc29yOmRlZmF1bHQ7cG9pbnRlci1ldmVudHM6bm9uZX0udnMtc2VsZWN0LS1sYWJlbHtmb250LXNpemU6Ljg1cmVtO2NvbG9yOnJnYmEoMCwwLDAsLjYpfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2VsZWN0LS1sYWJlbHtwYWRkaW5nLXJpZ2h0OjVweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNlbGVjdC0tbGFiZWx7cGFkZGluZy1sZWZ0OjVweH0uY29uLXRleHQtdmFsaWRhdGlvbntwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6LjY1cmVtO292ZXJmbG93OmhpZGRlbjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2V9LmNvbi10ZXh0LXZhbGlkYXRpb24gLnNwYW4tdGV4dC12YWxpZGF0aW9ue3BhZGRpbmc6MnB4IDRweDtwYWRkaW5nLWJvdHRvbTo0cHg7ZGlzcGxheTpibG9ja30uc2Nyb2xseCB1bHtwYWRkaW5nLXJpZ2h0OjRweH0udnMtc2VsZWN0LS1vcHRpb25ze3BhZGRpbmc6NHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgNXB4IDIwcHggMCByZ2JhKDAsMCwwLC4wNSk7Ym94LXNoYWRvdzowIDVweCAyMHB4IDAgcmdiYSgwLDAsMCwuMDUpO2JvcmRlci1yYWRpdXM6NXB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6NDAwMDA7YmFja2dyb3VuZDojZmZmfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2VsZWN0LS1vcHRpb25ze3BhZGRpbmctcmlnaHQ6NXB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2VsZWN0LS1vcHRpb25ze3BhZGRpbmctbGVmdDo1cHh9LnZzLXNlbGVjdC0tb3B0aW9ucyB1bHttYXgtaGVpZ2h0OjI2MHB4O292ZXJmbG93OmF1dG87cGFkZGluZzowfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2VsZWN0LS1vcHRpb25zIHVse3BhZGRpbmctcmlnaHQ6MH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNlbGVjdC0tb3B0aW9ucyB1bHtwYWRkaW5nLWxlZnQ6MH0udnMtc2VsZWN0LS1vcHRpb25zIHVsIGxpe21hcmdpbjowfS52cy1zZWxlY3QtLWl0ZW17Y29sb3I6cmdiYSgwLDAsMCwuOCk7cGFkZGluZzo3cHg7Ym9yZGVyOjA7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZmZmOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7bWFyZ2luOjAhaW1wb3J0YW50O2N1cnNvcjpwb2ludGVyfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2VsZWN0LS1pdGVte3RleHQtYWxpZ246cmlnaHR9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1zZWxlY3QtLWl0ZW17dGV4dC1hbGlnbjpsZWZ0fS52cy1zZWxlY3QtLWl0ZW06Zm9jdXMsLnZzLXNlbGVjdC0taXRlbTpob3ZlcntiYWNrZ3JvdW5kOiNmNWY1ZjV9LnZzLXNlbGVjdC0taXRlbS5jb24taWNvbi5hY3RpdmV4e3BhZGRpbmctbGVmdDoyNXB4fS52cy1zZWxlY3QtLWl0ZW0uY29uLWljb24uYWN0aXZleCAudnMtc2VsZWN0LS1pdGVtLWljb257b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LnZzLXNlbGVjdC0taXRlbS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO2ZvbnQtc2l6ZToxZW07bGVmdDo1cHg7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dG9wOjUwJX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXNlbGVjdC0taXRlbS1pY29uey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlLC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSwtNTAlKX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNlbGVjdC0taXRlbS1pY29uey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlLC01MCUpfS52cy1zZWxlY3QtcHJpbWFyeSAudnMtc2VsZWN0LS1pdGVtLmFjdGl2ZXh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLC4xKTtjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpO2ZvbnQtd2VpZ2h0OjcwMH0uaW5wdXQtc2VsZWN0LWxhYmVsLXByaW1hcnktLWFjdGl2ZXtjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS5pbnB1dC1zZWxlY3QtdmFsaWRhdGUtcHJpbWFyeSAuaW5wdXQtc2VsZWN0LWNvbiAuaW5wdXQtc2VsZWN0e2JvcmRlci1jb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS5pbnB1dC1zZWxlY3QtdmFsaWRhdGUtcHJpbWFyeSAuaW5wdXQtc2VsZWN0LWNvbiAudnMtc2VsZWN0LS1pY29ue2NvbG9yOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLXNlbGVjdC1zZWNvbmRhcnkgLnZzLXNlbGVjdC0taXRlbS5hY3RpdmV4e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLC4xKTtjb2xvcjpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSk7Zm9udC13ZWlnaHQ6NzAwfS5pbnB1dC1zZWxlY3QtbGFiZWwtc2Vjb25kYXJ5LS1hY3RpdmV7Y29sb3I6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS5pbnB1dC1zZWxlY3QtdmFsaWRhdGUtc2Vjb25kYXJ5IC5pbnB1dC1zZWxlY3QtY29uIC5pbnB1dC1zZWxlY3R7Ym9yZGVyLWNvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0uaW5wdXQtc2VsZWN0LXZhbGlkYXRlLXNlY29uZGFyeSAuaW5wdXQtc2VsZWN0LWNvbiAudnMtc2VsZWN0LS1pY29ue2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0udnMtc2VsZWN0LWRhbmdlciAudnMtc2VsZWN0LS1pdGVtLmFjdGl2ZXh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksLjEpO2NvbG9yOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKTtmb250LXdlaWdodDo3MDB9LmlucHV0LXNlbGVjdC1sYWJlbC1kYW5nZXItLWFjdGl2ZXtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LmlucHV0LXNlbGVjdC12YWxpZGF0ZS1kYW5nZXIgLmlucHV0LXNlbGVjdC1jb24gLmlucHV0LXNlbGVjdHtib3JkZXItY29sb3I6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpfS5pbnB1dC1zZWxlY3QtdmFsaWRhdGUtZGFuZ2VyIC5pbnB1dC1zZWxlY3QtY29uIC52cy1zZWxlY3QtLWljb257Y29sb3I6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpfS52cy1zZWxlY3Qtc3VjY2VzcyAudnMtc2VsZWN0LS1pdGVtLmFjdGl2ZXh7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC4xKTtjb2xvcjpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpO2ZvbnQtd2VpZ2h0OjcwMH0uaW5wdXQtc2VsZWN0LWxhYmVsLXN1Y2Nlc3MtLWFjdGl2ZXtjb2xvcjpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS5pbnB1dC1zZWxlY3QtdmFsaWRhdGUtc3VjY2VzcyAuaW5wdXQtc2VsZWN0LWNvbiAuaW5wdXQtc2VsZWN0e2JvcmRlci1jb2xvcjpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS5pbnB1dC1zZWxlY3QtdmFsaWRhdGUtc3VjY2VzcyAuaW5wdXQtc2VsZWN0LWNvbiAudnMtc2VsZWN0LS1pY29ue2NvbG9yOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSl9LnZzLXNlbGVjdC13YXJuaW5nIC52cy1zZWxlY3QtLWl0ZW0uYWN0aXZleHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtd2FybmluZyksLjEpO2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSk7Zm9udC13ZWlnaHQ6NzAwfS5pbnB1dC1zZWxlY3QtbGFiZWwtd2FybmluZy0tYWN0aXZle2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LmlucHV0LXNlbGVjdC12YWxpZGF0ZS13YXJuaW5nIC5pbnB1dC1zZWxlY3QtY29uIC5pbnB1dC1zZWxlY3R7Ym9yZGVyLWNvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LmlucHV0LXNlbGVjdC12YWxpZGF0ZS13YXJuaW5nIC5pbnB1dC1zZWxlY3QtY29uIC52cy1zZWxlY3QtLWljb257Y29sb3I6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0udnMtc2VsZWN0LWRhcmsgLnZzLXNlbGVjdC0taXRlbS5hY3RpdmV4e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwuMSk7Y29sb3I6cmdiYSh2YXIoLS12cy1kYXJrKSwxKTtmb250LXdlaWdodDo3MDB9LmlucHV0LXNlbGVjdC1sYWJlbC1kYXJrLS1hY3RpdmV7Y29sb3I6cmdiYSh2YXIoLS12cy1kYXJrKSwxKX0uaW5wdXQtc2VsZWN0LXZhbGlkYXRlLWRhcmsgLmlucHV0LXNlbGVjdC1jb24gLmlucHV0LXNlbGVjdHtib3JkZXItY29sb3I6cmdiYSh2YXIoLS12cy1kYXJrKSwxKX0uaW5wdXQtc2VsZWN0LXZhbGlkYXRlLWRhcmsgLmlucHV0LXNlbGVjdC1jb24gLnZzLXNlbGVjdC0taWNvbntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1zZWxlY3QtbGlnaHQgLnZzLXNlbGVjdC0taXRlbS5hY3RpdmV4e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1saWdodCksLjEpO2NvbG9yOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpO2ZvbnQtd2VpZ2h0OjcwMH0uaW5wdXQtc2VsZWN0LWxhYmVsLWxpZ2h0LS1hY3RpdmV7Y29sb3I6cmdiYSh2YXIoLS12cy1saWdodCksMSl9LmlucHV0LXNlbGVjdC12YWxpZGF0ZS1saWdodCAuaW5wdXQtc2VsZWN0LWNvbiAuaW5wdXQtc2VsZWN0e2JvcmRlci1jb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0uaW5wdXQtc2VsZWN0LXZhbGlkYXRlLWxpZ2h0IC5pbnB1dC1zZWxlY3QtY29uIC52cy1zZWxlY3QtLWljb257Y29sb3I6cmdiYSh2YXIoLS12cy1saWdodCksMSl9LnZzLXNlbGVjdC0taXRlbXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O3BhZGRpbmc6NXB4O3dpZHRoOjEwMCU7bWFyZ2luOjA7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZX0udnMtc2VsZWN0LS1pdGVtLmRpc2FibGVkeHtvcGFjaXR5Oi41O2N1cnNvcjpkZWZhdWx0O3BvaW50ZXItZXZlbnRzOm5vbmV9LnZzLXNlbGVjdC0taXRlbSBzcGFuLnNlYXJjaHh7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNyk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMyk7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOmluaGVyaXR9LnZzLXNlbGVjdC1ncm91cCBoNHtjdXJzb3I6ZGVmYXVsdDtwYWRkaW5nLWJvdHRvbTo1cHh9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zZWxlY3QtZ3JvdXAgaDR7cGFkZGluZy1yaWdodDoxMHB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2VsZWN0LWdyb3VwIGg0e3BhZGRpbmctbGVmdDoxMHB4fS52cy1zZWxlY3QtZ3JvdXAgbGl7bGlzdC1zdHlsZTpub25lfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2VsZWN0LWdyb3VwIGxpe2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgwLDAsMCwuMSl9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1zZWxlY3QtZ3JvdXAgbGl7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2VsZWN0LWdyb3VwIGxpe21hcmdpbi1yaWdodDoxNXB4IWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNlbGVjdC1ncm91cCBsaXttYXJnaW4tbGVmdDoxNXB4IWltcG9ydGFudH0udnMtc2VsZWN0LS1pY29uLWNsZWFye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MjAwO3RvcDo1MCU7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSg0NWRlZyk7Ym9yZGVyOjA7d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtib3JkZXItcmFkaXVzOjAgNXB4IDVweCAwO2JhY2tncm91bmQ6aW5oZXJpdDtjb2xvcjppbmhlcml0O29wYWNpdHk6MDt2aXNpYmlsaXR5OmhpZGRlbjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2VsZWN0LS1pY29uLWNsZWFye2xlZnQ6NXB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2VsZWN0LS1pY29uLWNsZWFye3JpZ2h0OjVweH0udnMtc2VsZWN0LS1pY29uLWNsZWFyLmFjdGl2ZUJ0bkNsZWFye29wYWNpdHk6MSFpbXBvcnRhbnQ7dmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgwZGVnKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDBkZWcpIWltcG9ydGFudH0udnMtc2VsZWN0LS1pY29uLWNsZWFyIGl7Zm9udC1zaXplOi45cmVtfS5wYXJlbnR4LXN0YXRpYyAudnMtc2lkZWJhci1iYWNrZ3JvdW5ke2Rpc3BsYXk6bm9uZX0udnMtc2lkZWJhci0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjIpO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoyMDAwMDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlO29wYWNpdHk6MX0udnMtc2lkZWJhcntiYWNrZ3JvdW5kOiNmZmY7ei1pbmRleDozMDAwO3Bvc2l0aW9uOmZpeGVkO2hlaWdodDoxMDB2aDt3aWR0aDoxMDAlO21heC13aWR0aDoyNjBweDt0b3A6MDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTVweCAwIHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93OjAgMCAxNXB4IDAgcmdiYSgwLDAsMCwuMDUpOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt6LWluZGV4OjQwMDAwfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhcntyaWdodDowfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhcntsZWZ0OjB9LnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2V7bWF4LXdpZHRoOjU0cHg7Ym9yZGVyLXJhZGl1czowIDEwcHggMTBweCAwfS52cy1zaWRlYmFyLnZzLXNpZGViYXItcmVkdWNlIGg0e2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3dpZHRoOjEwMCU7Zm9udC1zaXplOi43cmVtfS52cy1zaWRlYmFyLnZzLXNpZGViYXItcmVkdWNlIGg0IGl7b3BhY2l0eTowfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhci52cy1zaWRlYmFyLXJlZHVjZSB1bHtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhci52cy1zaWRlYmFyLXJlZHVjZSB1bHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2UgLmNvbi12cy1hdmF0YXJ7d2lkdGg6NDBweCFpbXBvcnRhbnQ7aGVpZ2h0OjQwcHghaW1wb3J0YW50fS52cy1zaWRlYmFyLnZzLXNpZGViYXItcmVkdWNlLnZzLXNpZGViYXItcmVkdWNlTm90SG92ZXJFeHBhbmQgaDR7dGV4dC1hbGlnbjpjZW50ZXJ9LnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2UudnMtc2lkZWJhci1yZWR1Y2VOb3RIb3ZlckV4cGFuZCBoNDpob3Zlcn4udnMtc2lkZWJhci0tdG9vbHRpcHtvcGFjaXR5OjE7dmlzaWJpbGl0eTp2aXNpYmxlfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhci52cy1zaWRlYmFyLXJlZHVjZS52cy1zaWRlYmFyLXJlZHVjZU5vdEhvdmVyRXhwYW5kIGg0OmhvdmVyfi52cy1zaWRlYmFyLS10b29sdGlwey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNXB4LC0xMTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01cHgsLTExMCUpfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhci52cy1zaWRlYmFyLXJlZHVjZS52cy1zaWRlYmFyLXJlZHVjZU5vdEhvdmVyRXhwYW5kIGg0OmhvdmVyfi52cy1zaWRlYmFyLS10b29sdGlwey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg1cHgsLTExMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoNXB4LC0xMTAlKX0udnMtc2lkZWJhci52cy1zaWRlYmFyLXJlZHVjZTpob3Zlcjpub3QoLnZzLXNpZGViYXItcmVkdWNlTm90UmVib3VuZCk6bm90KC52cy1zaWRlYmFyLXJlZHVjZU5vdEhvdmVyRXhwYW5kKXstd2Via2l0LWFuaW1hdGlvbjpleHBhbmQgLjRzIGVhc2UgLjE1czthbmltYXRpb246ZXhwYW5kIC40cyBlYXNlIC4xNXN9LnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2U6aG92ZXI6bm90KC52cy1zaWRlYmFyLXJlZHVjZU5vdEhvdmVyRXhwYW5kKXttYXgtd2lkdGg6MjYwcHh9LnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2U6aG92ZXI6bm90KC52cy1zaWRlYmFyLXJlZHVjZU5vdEhvdmVyRXhwYW5kKSBoNCBpe29wYWNpdHk6MX0udnMtc2lkZWJhci52cy1zaWRlYmFyLXJlZHVjZSAudnMtc2lkZWJhci0taXRlbXtvdmVyZmxvdzpoaWRkZW59LnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2UgLnZzLXNpZGViYXItLWl0ZW0gaXtwYWRkaW5nOjEwcHh9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLnZzLXNpZGViYXItcG9zaXRpb24tcmlnaHR7cmlnaHQ6YXV0b30udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNpZGViYXIudnMtc2lkZWJhci1wb3NpdGlvbi1yaWdodHtsZWZ0OmF1dG99LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLnZzLXNpZGViYXItcG9zaXRpb24tcmlnaHR7bGVmdDowfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhci52cy1zaWRlYmFyLXBvc2l0aW9uLXJpZ2h0e3JpZ2h0OjB9LnZzLXNpZGViYXIudnMtc2lkZWJhci1wb3NpdGlvbi1yaWdodC52cy1zaWRlYmFyLXJlZHVjZXtib3JkZXItcmFkaXVzOjEwcHggMCAwIDEwcHh9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLnZzLXNpZGViYXItcG9zaXRpb24tcmlnaHQgLnZzLXNpZGViYXItdG9vbHRpcHtyaWdodDphdXRvfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhci52cy1zaWRlYmFyLXBvc2l0aW9uLXJpZ2h0IC52cy1zaWRlYmFyLXRvb2x0aXB7bGVmdDphdXRvfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhci52cy1zaWRlYmFyLXBvc2l0aW9uLXJpZ2h0IC52cy1zaWRlYmFyLXRvb2x0aXB7bGVmdDo3MHB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhci52cy1zaWRlYmFyLXBvc2l0aW9uLXJpZ2h0IC52cy1zaWRlYmFyLXRvb2x0aXB7cmlnaHQ6NzBweH0udnMtc2lkZWJhci52cy1zaWRlYmFyLXBvc2l0aW9uLXJpZ2h0IC52cy1zaWRlYmFyLXRvb2x0aXA6YWZ0ZXJ7LXdlYmtpdC1ib3gtc2hhZG93OjRweCAwIDZweCAtM3B4IHJnYmEoMCwwLDAsLjA3KTtib3gtc2hhZG93OjRweCAwIDZweCAtM3B4IHJnYmEoMCwwLDAsLjA3KX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXNpZGViYXIudnMtc2lkZWJhci1wb3NpdGlvbi1yaWdodCAudnMtc2lkZWJhci10b29sdGlwOmFmdGVye3JpZ2h0OmF1dG99LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1zaWRlYmFyLnZzLXNpZGViYXItcG9zaXRpb24tcmlnaHQgLnZzLXNpZGViYXItdG9vbHRpcDphZnRlcntsZWZ0OmF1dG99LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLnZzLXNpZGViYXItcG9zaXRpb24tcmlnaHQgLnZzLXNpZGViYXItdG9vbHRpcDphZnRlcntsZWZ0OjVweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNpZGViYXIudnMtc2lkZWJhci1wb3NpdGlvbi1yaWdodCAudnMtc2lkZWJhci10b29sdGlwOmFmdGVye3JpZ2h0OjVweH0udnMtc2lkZWJhci52cy1zaWRlYmFyLXBhcmVudHtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6MTAwJSFpbXBvcnRhbnQ7dG9wOjB9LnZzLXNpZGViYXIudnMtc2lkZWJhci1zdGF0aWNQb3NpdGlvbntwb3NpdGlvbjpyZWxhdGl2ZX0udnMtc2lkZWJhciAudnMtZGl2aWRlci10ZXh0e29wYWNpdHk6Ljd9LnZzLXNpZGViYXItLWZvb3Rlcntib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wNil9LnZzLXNpZGViYXItLWl0ZW1ze3BhZGRpbmc6MTBweCAwO2JhY2tncm91bmQ6aW5oZXJpdDtvdmVyZmxvdy15OmF1dG99LnZzLXNpZGViYXItLWl0ZW17LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlfS52cy1zaWRlYmFyLS1pdGVtIGkubWF0ZXJpYWwtaWNvbnN7LXdlYmtpdC10cmFuc2l0aW9uOmJvcmRlciAuMjVzIGVhc2U7dHJhbnNpdGlvbjpib3JkZXIgLjI1cyBlYXNlO2ZvbnQtc2l6ZToxcmVtfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhci0taXRlbSBpLm1hdGVyaWFsLWljb25ze21hcmdpbi1sZWZ0OjhweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNpZGViYXItLWl0ZW0gaS5tYXRlcmlhbC1pY29uc3ttYXJnaW4tcmlnaHQ6OHB4fS52cy1zaWRlYmFyLS1pdGVtIGF7cGFkZGluZzoxMHB4Oy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZTtkaXNwbGF5OmJsb2NrO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6aW5oZXJpdDtvcGFjaXR5Oi44O2ZvbnQtc2l6ZTouODVyZW07dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnZzLXNpZGViYXItLWl0ZW0gYTpob3ZlcntvcGFjaXR5OjF9LnZzLXNpZGViYXItLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wNik7cGFkZGluZzoxMHB4IDVweH0udnMtc2lkZWJhci1ncm91cHtiYWNrZ3JvdW5kOmluaGVyaXQ7cG9zaXRpb246cmVsYXRpdmV9LnZzLXNpZGViYXItZ3JvdXA+dWx7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZX0udnMtc2lkZWJhci1ncm91cCBoNHtwYWRkaW5nOjEwcHg7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1wYWNrOmp1c3RpZnk7LW1zLWZsZXgtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdHJhbnNwYXJlbnQ7YmFja2dyb3VuZDppbmhlcml0O2ZvbnQtc2l6ZTouN3JlbX0udnMtc2lkZWJhci1ncm91cCBoNCBpe3Bvc2l0aW9uOmFic29sdXRlfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhci1ncm91cCBoNCBpe2xlZnQ6MTBweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNpZGViYXItZ3JvdXAgaDQgaXtyaWdodDoxMHB4fS52cy1zaWRlYmFyLWdyb3VwIC52cy1pY29uey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS52cy1zaWRlYmFyLWdyb3VwLnZzLXNpZGViYXItZ3JvdXAtb3Blbj51bHtvcGFjaXR5OjF9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLWdyb3VwLnZzLXNpZGViYXItZ3JvdXAtb3Blbj51bHtwYWRkaW5nLXJpZ2h0OjEwcHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1zaWRlYmFyLWdyb3VwLnZzLXNpZGViYXItZ3JvdXAtb3Blbj51bHtwYWRkaW5nLWxlZnQ6MTBweH0udnMtc2lkZWJhci1ncm91cC52cy1zaWRlYmFyLWdyb3VwLW9wZW4+dWwgLnZzLXNpZGViYXItLWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wNSl9LnZzLXNpZGViYXItZ3JvdXAudnMtc2lkZWJhci1ncm91cC1vcGVuPmg0e2JhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsIHJpZ2h0IHRvcCxmcm9tKHRyYW5zcGFyZW50KSx0byhyZ2JhKDAsMCwwLC4wMSkpKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCxyZ2JhKDAsMCwwLC4wMSkpfS52cy1zaWRlYmFyLWdyb3VwLnZzLXNpZGViYXItZ3JvdXAtb3Blbj5oND4udnMtaWNvbnstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9LnZzLXNpZGViYXItLXRvb2x0aXB7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZTtiYWNrZ3JvdW5kOmluaGVyaXQ7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCA2cHggMCByZ2JhKDAsMCwwLC4wNyk7Ym94LXNoYWRvdzowIDAgNnB4IDAgcmdiYSgwLDAsMCwuMDcpO3BhZGRpbmc6NHB4IDhweDtib3JkZXItcmFkaXVzOjRweDtwb3NpdGlvbjpmaXhlZDtwb2ludGVyLWV2ZW50czpub25lO3Zpc2liaWxpdHk6aGlkZGVufS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhci0tdG9vbHRpcHtyaWdodDo2MHB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhci0tdG9vbHRpcHtsZWZ0OjYwcHh9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLS10b29sdGlwey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTVweCwtMTEwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTVweCwtMTEwJSl9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1zaWRlYmFyLS10b29sdGlwey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgxNXB4LC0xMTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDE1cHgsLTExMCUpfS52cy1zaWRlYmFyLS10b29sdGlwOmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtiYWNrZ3JvdW5kOmluaGVyaXQ7LXdlYmtpdC1ib3gtc2hhZG93Oi00cHggMCA2cHggLTNweCByZ2JhKDAsMCwwLC4wNyk7Ym94LXNoYWRvdzotNHB4IDAgNnB4IC0zcHggcmdiYSgwLDAsMCwuMDcpO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSg0NWRlZyl9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLS10b29sdGlwOmFmdGVye3JpZ2h0Oi01cHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1zaWRlYmFyLS10b29sdGlwOmFmdGVye2xlZnQ6LTVweH0udnMtc2lkZWJhci0tZ3JvdXAtaXRlbXN7cGFkZGluZzowOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZTttYXgtaGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6aW5oZXJpdH0udnMtc2lkZWJhci1wcmltYXJ5IC52cy1zaWRlYmFyLS1pdGVtIGE6aG92ZXJ7Y29sb3I6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKX0udnMtc2lkZWJhci1wcmltYXJ5IC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLCByaWdodCB0b3AsZnJvbSh0cmFuc3BhcmVudCksdG8ocmdiYSgwLDAsMCwuMDEpKSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQscmdiYSgwLDAsMCwuMDEpKTtib3JkZXItcmlnaHQ6M3B4IHNvbGlkIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSkhaW1wb3J0YW50fS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhci1wcmltYXJ5IC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2JvcmRlci1sZWZ0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNpZGViYXItcHJpbWFyeSAudnMtc2lkZWJhci1pdGVtLWFjdGl2ZXtib3JkZXItcmlnaHQ6M3B4IHNvbGlkIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSkhaW1wb3J0YW50fS52cy1zaWRlYmFyLXByaW1hcnkgLnZzLXNpZGViYXItaXRlbS1hY3RpdmUgYXtjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpIWltcG9ydGFudDtvcGFjaXR5OjEhaW1wb3J0YW50fS52cy1zaWRlYmFyLXNlY29uZGFyeSAudnMtc2lkZWJhci0taXRlbSBhOmhvdmVye2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKX0udnMtc2lkZWJhci1zZWNvbmRhcnkgLnZzLXNpZGViYXItaXRlbS1hY3RpdmV7Zm9udC13ZWlnaHQ6NzAwO2JhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsIHJpZ2h0IHRvcCxmcm9tKHRyYW5zcGFyZW50KSx0byhyZ2JhKDAsMCwwLC4wMSkpKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCxyZ2JhKDAsMCwwLC4wMSkpO2JvcmRlci1yaWdodDozcHggc29saWQgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXNpZGViYXItc2Vjb25kYXJ5IC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2JvcmRlci1sZWZ0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSkhaW1wb3J0YW50fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhci1zZWNvbmRhcnkgLnZzLXNpZGViYXItaXRlbS1hY3RpdmV7Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSkhaW1wb3J0YW50fS52cy1zaWRlYmFyLXNlY29uZGFyeSAudnMtc2lkZWJhci1pdGVtLWFjdGl2ZSBhe2NvbG9yOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwxKSFpbXBvcnRhbnQ7b3BhY2l0eToxIWltcG9ydGFudH0udnMtc2lkZWJhci1kYW5nZXIgLnZzLXNpZGViYXItLWl0ZW0gYTpob3Zlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLXNpZGViYXItZGFuZ2VyIC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLCByaWdodCB0b3AsZnJvbSh0cmFuc3BhcmVudCksdG8ocmdiYSgwLDAsMCwuMDEpKSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQscmdiYSgwLDAsMCwuMDEpKTtib3JkZXItcmlnaHQ6M3B4IHNvbGlkIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLWRhbmdlciAudnMtc2lkZWJhci1pdGVtLWFjdGl2ZXtib3JkZXItbGVmdDozcHggc29saWQgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNpZGViYXItZGFuZ2VyIC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2JvcmRlci1yaWdodDozcHggc29saWQgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpIWltcG9ydGFudH0udnMtc2lkZWJhci1kYW5nZXIgLnZzLXNpZGViYXItaXRlbS1hY3RpdmUgYXtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSkhaW1wb3J0YW50O29wYWNpdHk6MSFpbXBvcnRhbnR9LnZzLXNpZGViYXItc3VjY2VzcyAudnMtc2lkZWJhci0taXRlbSBhOmhvdmVye2NvbG9yOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSl9LnZzLXNpZGViYXItc3VjY2VzcyAudnMtc2lkZWJhci1pdGVtLWFjdGl2ZXtmb250LXdlaWdodDo3MDA7YmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCwgcmlnaHQgdG9wLGZyb20odHJhbnNwYXJlbnQpLHRvKHJnYmEoMCwwLDAsLjAxKSkpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LHJnYmEoMCwwLDAsLjAxKSk7Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXNpZGViYXItc3VjY2VzcyAudnMtc2lkZWJhci1pdGVtLWFjdGl2ZXtib3JkZXItbGVmdDozcHggc29saWQgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1zaWRlYmFyLXN1Y2Nlc3MgLnZzLXNpZGViYXItaXRlbS1hY3RpdmV7Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpIWltcG9ydGFudH0udnMtc2lkZWJhci1zdWNjZXNzIC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZlIGF7Y29sb3I6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnQ7b3BhY2l0eToxIWltcG9ydGFudH0udnMtc2lkZWJhci13YXJuaW5nIC52cy1zaWRlYmFyLS1pdGVtIGE6aG92ZXJ7Y29sb3I6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0udnMtc2lkZWJhci13YXJuaW5nIC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLCByaWdodCB0b3AsZnJvbSh0cmFuc3BhcmVudCksdG8ocmdiYSgwLDAsMCwuMDEpKSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQscmdiYSgwLDAsMCwuMDEpKTtib3JkZXItcmlnaHQ6M3B4IHNvbGlkIHJnYmEodmFyKC0tdnMtd2FybmluZyksMSkhaW1wb3J0YW50fS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhci13YXJuaW5nIC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2JvcmRlci1sZWZ0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpIWltcG9ydGFudH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNpZGViYXItd2FybmluZyAudnMtc2lkZWJhci1pdGVtLWFjdGl2ZXtib3JkZXItcmlnaHQ6M3B4IHNvbGlkIHJnYmEodmFyKC0tdnMtd2FybmluZyksMSkhaW1wb3J0YW50fS52cy1zaWRlYmFyLXdhcm5pbmcgLnZzLXNpZGViYXItaXRlbS1hY3RpdmUgYXtjb2xvcjpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpIWltcG9ydGFudDtvcGFjaXR5OjEhaW1wb3J0YW50fS52cy1zaWRlYmFyLWRhcmsgLnZzLXNpZGViYXItLWl0ZW0gYTpob3Zlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1zaWRlYmFyLWRhcmsgLnZzLXNpZGViYXItaXRlbS1hY3RpdmV7Zm9udC13ZWlnaHQ6NzAwO2JhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsIHJpZ2h0IHRvcCxmcm9tKHRyYW5zcGFyZW50KSx0byhyZ2JhKDAsMCwwLC4wMSkpKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCxyZ2JhKDAsMCwwLC4wMSkpO2JvcmRlci1yaWdodDozcHggc29saWQgcmdiYSh2YXIoLS12cy1kYXJrKSwxKSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLWRhcmsgLnZzLXNpZGViYXItaXRlbS1hY3RpdmV7Ym9yZGVyLWxlZnQ6M3B4IHNvbGlkIHJnYmEodmFyKC0tdnMtZGFyayksMSkhaW1wb3J0YW50fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhci1kYXJrIC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2JvcmRlci1yaWdodDozcHggc29saWQgcmdiYSh2YXIoLS12cy1kYXJrKSwxKSFpbXBvcnRhbnR9LnZzLXNpZGViYXItZGFyayAudnMtc2lkZWJhci1pdGVtLWFjdGl2ZSBhe2NvbG9yOnJnYmEodmFyKC0tdnMtZGFyayksMSkhaW1wb3J0YW50O29wYWNpdHk6MSFpbXBvcnRhbnR9LnZzLXNpZGViYXItbGlnaHQgLnZzLXNpZGViYXItLWl0ZW0gYTpob3Zlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKX0udnMtc2lkZWJhci1saWdodCAudnMtc2lkZWJhci1pdGVtLWFjdGl2ZXtmb250LXdlaWdodDo3MDA7YmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCwgcmlnaHQgdG9wLGZyb20odHJhbnNwYXJlbnQpLHRvKHJnYmEoMCwwLDAsLjAxKSkpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LHJnYmEoMCwwLDAsLjAxKSk7Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLWxpZ2h0IC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2JvcmRlci1sZWZ0OjNweCBzb2xpZCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1zaWRlYmFyLWxpZ2h0IC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZle2JvcmRlci1yaWdodDozcHggc29saWQgcmdiYSh2YXIoLS12cy1saWdodCksMSkhaW1wb3J0YW50fS52cy1zaWRlYmFyLWxpZ2h0IC52cy1zaWRlYmFyLWl0ZW0tYWN0aXZlIGF7Y29sb3I6cmdiYSh2YXIoLS12cy1saWdodCksMSkhaW1wb3J0YW50O29wYWNpdHk6MSFpbXBvcnRhbnR9LnZzLXNpZGViYXItYW5pbWF0ZS1lbnRlci1hY3RpdmUsLnZzLXNpZGViYXItYW5pbWF0ZS1lbnRlci1hY3RpdmUgLnZzLXNpZGViYXIsLnZzLXNpZGViYXItYW5pbWF0ZS1sZWF2ZS1hY3RpdmUsLnZzLXNpZGViYXItYW5pbWF0ZS1sZWF2ZS1hY3RpdmUgLnZzLXNpZGViYXJ7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtc2lkZWJhci1hbmltYXRlLWVudGVyOm5vdCgudnMtc2lkZWJhci1wb3NpdGlvbi1yaWdodCkgLnZzLXNpZGViYXIsLnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLWFuaW1hdGUtbGVhdmUtdG86bm90KC52cy1zaWRlYmFyLXBvc2l0aW9uLXJpZ2h0KSAudnMtc2lkZWJhcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlKX0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNpZGViYXItYW5pbWF0ZS1lbnRlcjpub3QoLnZzLXNpZGViYXItcG9zaXRpb24tcmlnaHQpIC52cy1zaWRlYmFyLC52dWVzYXgtYXBwLWlzLWx0ciAudnMtc2lkZWJhci1hbmltYXRlLWxlYXZlLXRvOm5vdCgudnMtc2lkZWJhci1wb3NpdGlvbi1yaWdodCkgLnZzLXNpZGViYXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKX0udnMtc2lkZWJhci1hbmltYXRlLWVudGVyIC52cy1zaWRlYmFyLWJhY2tncm91bmQsLnZzLXNpZGViYXItYW5pbWF0ZS1sZWF2ZS10byAudnMtc2lkZWJhci1iYWNrZ3JvdW5ke29wYWNpdHk6MCFpbXBvcnRhbnR9LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1zaWRlYmFyLWFuaW1hdGUtZW50ZXIgLnZzLXNpZGViYXIudnMtc2lkZWJhci1wb3NpdGlvbi1yaWdodCwudnVlc2F4LWFwcC1pcy1ydGwgLnZzLXNpZGViYXItYW5pbWF0ZS1sZWF2ZS10byAudnMtc2lkZWJhci52cy1zaWRlYmFyLXBvc2l0aW9uLXJpZ2h0ey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSl9LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy1zaWRlYmFyLWFuaW1hdGUtZW50ZXIgLnZzLXNpZGViYXIudnMtc2lkZWJhci1wb3NpdGlvbi1yaWdodCwudnVlc2F4LWFwcC1pcy1sdHIgLnZzLXNpZGViYXItYW5pbWF0ZS1sZWF2ZS10byAudnMtc2lkZWJhci52cy1zaWRlYmFyLXBvc2l0aW9uLXJpZ2h0ey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUpfUAtd2Via2l0LWtleWZyYW1lcyBleHBhbmR7MCV7bWF4LXdpZHRoOjI3NXB4fTMwJXttYXgtd2lkdGg6MjUwcHh9NjAle21heC13aWR0aDoyNjVweH10b3ttYXgtd2lkdGg6MjYwcHh9fUBrZXlmcmFtZXMgZXhwYW5kezAle21heC13aWR0aDoyNzVweH0zMCV7bWF4LXdpZHRoOjI1MHB4fTYwJXttYXgtd2lkdGg6MjY1cHh9dG97bWF4LXdpZHRoOjI2MHB4fX0uY29uLXZzLXNsaWRlcnt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MDttYXJnaW46MTZweCAwO2Rpc3BsYXk6YmxvY2s7bWluLXdpZHRoOjMwMHB4O3otaW5kZXg6MTAwfS5jb24tdnMtc2xpZGVyLmRpc2FibGVkeHtvcGFjaXR5Oi40O2N1cnNvcjpkZWZhdWx0fS5jb24tdnMtc2xpZGVyLmRpc2FibGVkeCBidXR0b257Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnZzLXNsaWRlcnt3aWR0aDoxMDAlO2hlaWdodDo0cHg7Ym9yZGVyLXJhZGl1czo0cHg7YmFja2dyb3VuZDojZjBmMGYwO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO2JvcmRlcjowO21hcmdpbjowO2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVufS52cy1zbGlkZXItbGluZS1vbmV7d2lkdGg6MjBweDtoZWlnaHQ6MTAwJTt0b3A6MDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7ei1pbmRleDoxfS52cy1zbGlkZXItbGluZS1vbmUuaGFzVHJhbnNpdGlvbnstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlfS52cy1zbGlkZXItbGluZS1lZmVjdHt3aWR0aDowO2hlaWdodDoxMDAlO3RvcDowO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuM3MgZWFzZSx3aWR0aCAuM3MgZWFzZTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGVhc2Usd2lkdGggLjNzIGVhc2U7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSl9LnZzLXNsaWRlci1saW5lLWVmZWN0Om5vdCgucnVuLWVmZmVjdCl7b3BhY2l0eTowIWltcG9ydGFudDt3aWR0aDowIWltcG9ydGFudH0udnMtc2xpZGVyLWxpbmUtZWZlY3QucnVuLWVmZmVjdHt3aWR0aDoxMDAlOy13ZWJraXQtYW5pbWF0aW9uOmV4YW1wbGUgLjNzIGVhc2U7YW5pbWF0aW9uOmV4YW1wbGUgLjNzIGVhc2U7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OjE7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDoxfS52cy1zbGlkZXItLXRpY2t7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMDBweDtiYWNrZ3JvdW5kOiNkMmQyZDI7d2lkdGg6NHB4O2hlaWdodDoxMDAlO3RvcDowfS52cy1zbGlkZXItLXRpY2suaXNFbmR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKX0udnMtc2xpZGVyLS1jaXJjbGVzey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpOy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXIgLjJzIGVhc2UsYm9yZGVyLXJhZGl1cyAuMnMgZWFzZSwtd2Via2l0LXRyYW5zZm9ybSAuMnMgZWFzZTt0cmFuc2l0aW9uOmJvcmRlciAuMnMgZWFzZSxib3JkZXItcmFkaXVzIC4ycyBlYXNlLC13ZWJraXQtdHJhbnNmb3JtIC4ycyBlYXNlO3RyYW5zaXRpb246Ym9yZGVyIC4ycyBlYXNlLHRyYW5zZm9ybSAuMnMgZWFzZSxib3JkZXItcmFkaXVzIC4ycyBlYXNlO3RyYW5zaXRpb246Ym9yZGVyIC4ycyBlYXNlLHRyYW5zZm9ybSAuMnMgZWFzZSxib3JkZXItcmFkaXVzIC4ycyBlYXNlLC13ZWJraXQtdHJhbnNmb3JtIC4ycyBlYXNlO2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZDojZmZmfS52cy1zbGlkZXItLWNpcmNsZXM6YWN0aXZle2JvcmRlci13aWR0aDo3cHghaW1wb3J0YW50fS52cy1zbGlkZXItLWNpcmNsZXMuaXNFcXVhbHMudnMtY2lyY2xlLXNsaWRlci10d297Ym9yZGVyLXJhZGl1czo1MCUgNTAlIDAgMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtN3B4KSBzY2FsZSguOSkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtN3B4KSBzY2FsZSguOSkhaW1wb3J0YW50fS52cy1zbGlkZXItLWNpcmNsZXMuaXNFcXVhbHMudnMtY2lyY2xlLXNsaWRlcntib3JkZXItcmFkaXVzOjAgMCA1MCUgNTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLDZweCkgc2NhbGUoLjkpIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsNnB4KSBzY2FsZSguOSkhaW1wb3J0YW50fS52cy1zbGlkZXItLWNpcmNsZXMuY2hhbmdlVmFsdWU6YWN0aXZle2JvcmRlci13aWR0aDo2cHghaW1wb3J0YW50fS52cy1zbGlkZXItLWNpcmNsZXMuY2hhbmdlVmFsdWU6YWN0aXZlIC50ZXh0LWNpcmNsZS1zbGlkZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsY2FsYygtMTAwJSArIC0xOXB4KSkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSxjYWxjKC0xMDAlICsgLTE5cHgpKSFpbXBvcnRhbnR9LnZzLXNsaWRlci0tY2lyY2xlcy5pc0VuZFZhbHVle2JvcmRlci1yYWRpdXM6NTAlIDAgMCA1MCUhaW1wb3J0YW50fS52cy1zbGlkZXItLWNpcmNsZXM6aG92ZXI6bm90KDphY3RpdmUpey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMikgdHJhbnNsYXRlKC01MCUpO3RyYW5zZm9ybTpzY2FsZSgxLjIpIHRyYW5zbGF0ZSgtNTAlKX0udnMtc2xpZGVyLS1jaXJjbGVzOmFjdGl2ZSAudGV4dC1jaXJjbGUtc2xpZGVye29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSxjYWxjKC0xMDAlICsgLTEzcHgpKSBzY2FsZSgxKSByb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLGNhbGMoLTEwMCUgKyAtMTNweCkpIHNjYWxlKDEpIHJvdGF0ZSgwZGVnKTt2aXNpYmlsaXR5OnZpc2libGV9LnZzLXNsaWRlci0tY2lyY2xlLXRleHR7Y29sb3I6I2ZmZjtwb3NpdGlvbjphYnNvbHV0ZTtwYWRkaW5nOjJweCA1cHg7ZGlzcGxheTpibG9jaztib3JkZXItcmFkaXVzOjVweDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtMjAlKSBzY2FsZSguMyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC0yMCUpIHNjYWxlKC4zKTt0b3A6MDtsZWZ0OjUwJTtmb250LXNpemU6Ljc1cmVtO29wYWNpdHk6MDt2aXNpYmlsaXR5OmhpZGRlbjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt6LWluZGV4OjEwMDB9LnZzLXNsaWRlci0tY2lyY2xlLXRleHQgc3BhbnttYXJnaW4tbGVmdDoycHh9LnZzLXNsaWRlci0tY2lyY2xlLXRleHQgaXtmb250LXNpemU6LjhyZW07bWFyZ2luLWxlZnQ6MnB4fS52cy1zbGlkZXItLWNpcmNsZS10ZXh0OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7d2lkdGg6NnB4O2hlaWdodDo2cHg7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOmluaGVyaXQ7bGVmdDo1MCU7Ym90dG9tOi0zcHg7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpIHJvdGF0ZSg0NWRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKSByb3RhdGUoNDVkZWcpfS52cy1zbGlkZXItLWNpcmNsZXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNnB4O2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpwb2ludGVyO2JvcmRlcjowO21hcmdpbjowO3otaW5kZXg6MjAwfS52cy1zbGlkZXItLWNpcmNsZS5oYXNUcmFuc2l0aW9uey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2V9LnZzLXNsaWRlci0tY2lyY2xlLXR3b3t6LWluZGV4OjEwMDt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNnB4O2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpwb2ludGVyO2JvcmRlcjowO21hcmdpbjowO2NvbG9yOiNmZmZ9LnZzLXNsaWRlci0tY2lyY2xlLXR3by5oYXNUcmFuc2l0aW9uey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2V9LnZzLXNsaWRlci1wcmltYXJ5IC52cy1zbGlkZXItbGluZS1vbmV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1zbGlkZXItcHJpbWFyeSAudnMtY2lyY2xlcy1zbGlkZXJ7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1zbGlkZXItcHJpbWFyeSAudGV4dC1jaXJjbGUtc2xpZGVyLC52cy1zbGlkZXItcHJpbWFyeSAudnMtc2xpZGVyLWxpbmUtZWZlY3R7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1zbGlkZXItc2Vjb25kYXJ5IC52cy1zbGlkZXItbGluZS1vbmV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSl9LnZzLXNsaWRlci1zZWNvbmRhcnkgLnZzLWNpcmNsZXMtc2xpZGVye2JvcmRlcjoycHggc29saWQgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy1zbGlkZXItc2Vjb25kYXJ5IC50ZXh0LWNpcmNsZS1zbGlkZXIsLnZzLXNsaWRlci1zZWNvbmRhcnkgLnZzLXNsaWRlci1saW5lLWVmZWN0e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy1zbGlkZXItZGFuZ2VyIC52cy1zbGlkZXItbGluZS1vbmV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSl9LnZzLXNsaWRlci1kYW5nZXIgLnZzLWNpcmNsZXMtc2xpZGVye2JvcmRlcjoycHggc29saWQgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpfS52cy1zbGlkZXItZGFuZ2VyIC50ZXh0LWNpcmNsZS1zbGlkZXIsLnZzLXNsaWRlci1kYW5nZXIgLnZzLXNsaWRlci1saW5lLWVmZWN0e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpfS52cy1zbGlkZXItc3VjY2VzcyAudnMtc2xpZGVyLWxpbmUtb25le2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtc2xpZGVyLXN1Y2Nlc3MgLnZzLWNpcmNsZXMtc2xpZGVye2JvcmRlcjoycHggc29saWQgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtc2xpZGVyLXN1Y2Nlc3MgLnRleHQtY2lyY2xlLXNsaWRlciwudnMtc2xpZGVyLXN1Y2Nlc3MgLnZzLXNsaWRlci1saW5lLWVmZWN0e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtc2xpZGVyLXdhcm5pbmcgLnZzLXNsaWRlci1saW5lLW9uZXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LnZzLXNsaWRlci13YXJuaW5nIC52cy1jaXJjbGVzLXNsaWRlcntib3JkZXI6MnB4IHNvbGlkIHJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LnZzLXNsaWRlci13YXJuaW5nIC50ZXh0LWNpcmNsZS1zbGlkZXIsLnZzLXNsaWRlci13YXJuaW5nIC52cy1zbGlkZXItbGluZS1lZmVjdHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSl9LnZzLXNsaWRlci1kYXJrIC52cy1zbGlkZXItbGluZS1vbmV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1zbGlkZXItZGFyayAudnMtY2lyY2xlcy1zbGlkZXJ7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1zbGlkZXItZGFyayAudGV4dC1jaXJjbGUtc2xpZGVyLC52cy1zbGlkZXItZGFyayAudnMtc2xpZGVyLWxpbmUtZWZlY3R7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1zbGlkZXItbGlnaHQgLnZzLXNsaWRlci1saW5lLW9uZXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfS52cy1zbGlkZXItbGlnaHQgLnZzLWNpcmNsZXMtc2xpZGVye2JvcmRlcjoycHggc29saWQgcmdiYSh2YXIoLS12cy1saWdodCksMSl9LnZzLXNsaWRlci1saWdodCAudGV4dC1jaXJjbGUtc2xpZGVyLC52cy1zbGlkZXItbGlnaHQgLnZzLXNsaWRlci1saW5lLWVmZWN0e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1saWdodCksMSl9QC13ZWJraXQta2V5ZnJhbWVzIGV4YW1wbGV7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MH19QGtleWZyYW1lcyBleGFtcGxlezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fS52cy1zcGFjZXJ7cGFkZGluZzowO21hcmdpbjowOy13ZWJraXQtYm94LWZsZXg6MSFpbXBvcnRhbnQ7LW1zLWZsZXgtcG9zaXRpdmU6MSFpbXBvcnRhbnQ7ZmxleC1ncm93OjEhaW1wb3J0YW50O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnZzLXN3aXRjaHtib3JkZXItcmFkaXVzOjEycHg7Ym9yZGVyOjA7bWluLXdpZHRoOjQycHg7aGVpZ2h0OjIycHg7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnZzLXN3aXRjaDpkaXNhYmxlZHtvcGFjaXR5Oi41O2N1cnNvcjpkZWZhdWx0O3BvaW50ZXItZXZlbnRzOm5vbmV9LnZzLXN3aXRjaDphY3RpdmU6bm90KC52cy1zd2l0Y2gtLWNpcmNsZSkgLnZzLXN3aXRjaC0tY2lyY2xle3dpZHRoOjI0cHg7Ym9yZGVyLXJhZGl1czoxNXB4fS52cy1zd2l0Y2gudnMtc3dpdGNoLWFjdGl2ZTphY3RpdmUgLnZzLXN3aXRjaC0tY2lyY2xle3dpZHRoOjI0cHg7bWFyZ2luLWxlZnQ6Y2FsYygxMDAlIC0gMjlweCl9LnZzLXN3aXRjaC52cy1zd2l0Y2gtYWN0aXZlIC52cy1zd2l0Y2gtLWNpcmNsZXttYXJnaW4tbGVmdDpjYWxjKDEwMCUgLSAyMnB4KX0udnMtc3dpdGNoLS1jaXJjbGV7ZGlzcGxheTpibG9jazt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6I2ZmZjtsZWZ0OjJweDt0b3A6MnB4O2JvcmRlci1yYWRpdXM6NTAlOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDRweCAwIHJnYmEoMCwwLDAsLjEpO2JveC1zaGFkb3c6MCAwIDRweCAwIHJnYmEoMCwwLDAsLjEpfS52cy1zd2l0Y2gtLXRleHR7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztmb250LXNpemU6LjYyNWVtO29wYWNpdHk6MDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVufS52cy1zd2l0Y2gtLXRleHQudGV4dC1vbntwYWRkaW5nLWxlZnQ6NnB4O2xlZnQ6MDtjb2xvcjojZmZmOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgxMHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwcHgpfS52cy1zd2l0Y2gtLXRleHQudGV4dC1vZmZ7cmlnaHQ6MDtwYWRkaW5nLXJpZ2h0OjVweDtjb2xvcjojYTBhMGEwOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTBweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTBweCl9LnZzLXN3aXRjaC0tdGV4dC5hY3RpdmUtdGV4dHtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCl9LnZzLXN3aXRjaC0taWNvbntmb250LXNpemU6LjhyZW07ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO292ZXJmbG93OmhpZGRlbjttYXgtd2lkdGg6MTZweDtwYWRkaW5nOjAgMnB4fS52cy1zd2l0Y2gtLWlucHV0e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ei1pbmRleDoyMDA7b3BhY2l0eTowO2N1cnNvcjpwb2ludGVyfS52cy1zd2l0Y2gtcHJpbWFyeXtiYWNrZ3JvdW5kOiNlMmUyZTJ9LnZzLXN3aXRjaC1wcmltYXJ5LnZzLXN3aXRjaC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy1zd2l0Y2gtc2Vjb25kYXJ5e2JhY2tncm91bmQ6I2UyZTJlMn0udnMtc3dpdGNoLXNlY29uZGFyeS52cy1zd2l0Y2gtYWN0aXZle2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy1zd2l0Y2gtZGFuZ2Vye2JhY2tncm91bmQ6I2UyZTJlMn0udnMtc3dpdGNoLWRhbmdlci52cy1zd2l0Y2gtYWN0aXZle2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpfS52cy1zd2l0Y2gtc3VjY2Vzc3tiYWNrZ3JvdW5kOiNlMmUyZTJ9LnZzLXN3aXRjaC1zdWNjZXNzLnZzLXN3aXRjaC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpfS52cy1zd2l0Y2gtd2FybmluZ3tiYWNrZ3JvdW5kOiNlMmUyZTJ9LnZzLXN3aXRjaC13YXJuaW5nLnZzLXN3aXRjaC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpfS52cy1zd2l0Y2gtZGFya3tiYWNrZ3JvdW5kOiNlMmUyZTJ9LnZzLXN3aXRjaC1kYXJrLnZzLXN3aXRjaC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhcmspLDEpfS52cy1zd2l0Y2gtbGlnaHR7YmFja2dyb3VuZDojZTJlMmUyfS52cy1zd2l0Y2gtbGlnaHQudnMtc3dpdGNoLWFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfS52cy1jb24tdGFibGV7YmFja2dyb3VuZDojZmJmYmZiO2JvcmRlci1yYWRpdXM6NXB4O3BhZGRpbmc6NXB9LnZzLWNvbi10YWJsZSAuZW1wdHl7Y29sb3I6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpfS52cy1jb24tdGFibGUgLmNvbi1lZGl0LXRke3Bvc2l0aW9uOmFic29sdXRlO3BhZGRpbmc6NnB4Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTUlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxNSUpO2JvcmRlci1yYWRpdXM6NXB4O3otaW5kZXg6MzAwO2JhY2tncm91bmQ6I2ZmZjstd2Via2l0LWJveC1zaGFkb3c6MCA2cHggMTBweCAwIHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93OjAgNnB4IDEwcHggMCByZ2JhKDAsMCwwLC4wNSk7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtY29uLXRhYmxlIC5jb24tZWRpdC10ZHtyaWdodDowfS52dWVzYXgtYXBwLWlzLWx0ciAudnMtY29uLXRhYmxlIC5jb24tZWRpdC10ZHtsZWZ0OjB9LnZzLWNvbi10YWJsZS5zdHJpcGUgLnRyLXZhbHVlczpudGgtY2hpbGQoMm4pe2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50fS52cy1jb24tdGFibGUgdGFibGV7Zm9udC1zaXplOi44cmVtO3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS52cy1jb24tdGFibGUgdGFibGUgdGJvZHl7d2lkdGg6MTAwJX0udnMtY29uLXRhYmxlIHRke2JvcmRlcjowO3BhZGRpbmc6MnB4IDhweH0udnMtY29uLXRhYmxlIHRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0OjFweCBzb2xpZCB0cmFuc3BhcmVudH0udnMtY29uLXRhYmxlIHRkLnRkLWNoZWNre2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6NXB4IWltcG9ydGFudH0udnMtY29uLXRhYmxlIHRkLnRkLWNoZWNrIC5jb24tdnMtY2hlY2tib3h7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fS52cy1jb24tdGFibGUgdGQudGQtY2hlY2sgLnZzLWljb257LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg3cHgpIHJvdGF0ZSgtOTBkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGUoN3B4KSByb3RhdGUoLTkwZGVnKX0udGQtZWRpdHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS50ZC1lZGl0IC5pY29uLWVkaXR7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO2ZvbnQtc2l6ZTouNzVyZW07cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO3BhZGRpbmctdG9wOjNweDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTtiYWNrZ3JvdW5kOiNmMGYwZjA7d2lkdGg6MTdweDtoZWlnaHQ6MTdweDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXJhZGl1czo1cHh9LnRkLWVkaXQ+c3BhbntjdXJzb3I6cG9pbnRlcn0udnMtdGFibGUtLXBhZ2luYXRpb257d2lkdGg6MTAwJTtwYWRkaW5nOjdweDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0udnMtdGFibGUtLXBhZ2luYXRpb24gLnZzLXBhZ2luYXRpb24tLWJ1dHRvbnN7d2lkdGg6MzBweDtoZWlnaHQ6MzBweH0udnMtdGFibGUtLXBhZ2luYXRpb24gLml0ZW0tcGFnaW5hdGlvbnt3aWR0aDozMHB4O2hlaWdodDozMHB4O2ZvbnQtc2l6ZTouOHJlbX0udnMtdGFibGUtLXRib2R5e3otaW5kZXg6NDAwO3Bvc2l0aW9uOnJlbGF0aXZlfS52cy10YWJsZS0tdGJvZHktdGFibGV7d2lkdGg6MTAwJTttYXJnaW46MDttaW4td2lkdGg6NDAwcHg7cG9zaXRpb246cmVsYXRpdmV9LnZzLXRhYmxlLS10Ym9keS10YWJsZSAudHItdGFibGU6bGFzdC1jaGlsZCAuY29uLWVkaXQtdGR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKSFpbXBvcnRhbnR9LnZzLXRhYmxlLS10Ym9keS10YWJsZSAudHItc3BhY2Vye2hlaWdodDo0cHg7b3BhY2l0eToxfS52cy10YWJsZS0tdGJvZHktdGFibGU6bnRoLWNoaWxkKDJuKXtiYWNrZ3JvdW5kOiMwMDB9LnZzLXRhYmxlLS10Ym9keS10YWJsZSAudHItZXhwYW5kIHRke3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW59LnZzLXRhYmxlLS10Ym9keS10YWJsZSAudHItZXhwYW5kIHRkIC5jb24tZXhwYW5key13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZX0udnMtdGFibGUtLXRib2R5LXRhYmxlIHRyey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7YmFja2dyb3VuZDojZmZmfS52cy10YWJsZS0tdGJvZHktdGFibGUgLnRyLXZhbHVlcy5hY3RpdmVFZGl0e3otaW5kZXg6NTAwIWltcG9ydGFudH0udnMtdGFibGUtLXRib2R5LXRhYmxlIC50ci12YWx1ZXMuYWN0aXZlRWRpdCsudHItdGFibGV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDApIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlKDApIWltcG9ydGFudH0udnMtdGFibGUtLXRib2R5LXRhYmxlIC50ci12YWx1ZXMuaG92ZXJGbGF0Om5vdCguYWN0aXZlRWRpdCk6bm90KC5pcy1leHBhbmQpOmhvdmVye29wYWNpdHk6Ljh9LnZzLXRhYmxlLS10Ym9keS10YWJsZSAudHItdmFsdWVzOm5vdCguYWN0aXZlRWRpdCk6bm90KC50ci1leHBhbmRlZHgpOm5vdCguaG92ZXJGbGF0KTpob3Zlcnt6LWluZGV4OjIwMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC00cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC00cHgpfS52cy10YWJsZS0tdGJvZHktdGFibGUgLnRyLXZhbHVlczpub3QoLmFjdGl2ZUVkaXQpOm5vdCgudHItZXhwYW5kZWR4KTpub3QoLmhvdmVyRmxhdCk6aG92ZXIgLnRyLXZhbHVlc3std2Via2l0LWJveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4wNSl9LnZzLXRhYmxlLS10Ym9keS10YWJsZSAudHItdmFsdWVzOm5vdCguYWN0aXZlRWRpdCk6bm90KC50ci1leHBhbmRlZHgpOm5vdCguaG92ZXJGbGF0KTpob3Zlcn50Ym9keXt6LWluZGV4OjEwfS52cy10YWJsZS0tdGJvZHktdGFibGUgLnRyLXZhbHVlcyB0ZHtwYWRkaW5nOjEwcHh9LnZzLXRhYmxlLS10Ym9keS10YWJsZSAudHItdmFsdWVzIC50ci1leHBhbmQgdGR7cGFkZGluZzowfS52cy10YWJsZS0tdGJvZHktdGFibGUgLnRyLXZhbHVlcy5zZWxlY3RlZHtjdXJzb3I6cG9pbnRlcn0udnMtdGFibGUtLXRib2R5LXRhYmxlIC50ci12YWx1ZXM6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudH0udnMtdGFibGUtLXRib2R5LXRhYmxlIC50ci12YWx1ZXMuaXMtZXhwYW5key13ZWJraXQtYm94LXNoYWRvdzowIDJweCAxMHB4IDAgcmdiYSgwLDAsMCwuMDgpO2JveC1zaGFkb3c6MCAycHggMTBweCAwIHJnYmEoMCwwLDAsLjA4KTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjAyNSk7dHJhbnNmb3JtOnNjYWxlKDEuMDI1KTt6LWluZGV4OjMwMH0udnMtdGFibGUtLXRib2R5LXRhYmxlIC50ci12YWx1ZXMuaXMtZXhwYW5kIC50ci12YWx1ZXN7ei1pbmRleDozMDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMnB4IDEwcHggMCB0cmFuc3BhcmVudDtib3gtc2hhZG93OjAgMnB4IDEwcHggMCB0cmFuc3BhcmVudH0udnMtdGFibGUtLXRib2R5LXRhYmxlIC50ci12YWx1ZXMuaXMtZXhwYW5kIC50ci1zcGFjZXJ7aGVpZ2h0OjB9LnZzLXRhYmxlLS10Ym9keS10YWJsZSAudHItdmFsdWVzLmlzLWV4cGFuZCAudHItZXhwYW5kIC5jb24tZXhwYW5ke2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA1KSFpbXBvcnRhbnR9LnRkLWNoZWNrey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0udGQtY2hlY2suYWN0aXZlLWV4cGFuZGVkIC52cy1pY29uey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSg3cHgpIHJvdGF0ZSgwZGVnKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSg3cHgpIHJvdGF0ZSgwZGVnKSFpbXBvcnRhbnR9LnRkLWNoZWNrIC52cy1pY29uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoN3B4KSByb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg3cHgpIHJvdGF0ZSgwZGVnKX0udnMtdGFibGUtLWNvbnRlbnR7d2lkdGg6MTAwJTtvdmVyZmxvdzphdXRvfS52cy10YWJsZS0taGVhZGVyey13ZWJraXQtYm94LXBhY2s6anVzdGlmeTstbXMtZmxleC1wYWNrOmp1c3RpZnk7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnZzLXRhYmxlLS1oZWFkZXIsLnZzLXRhYmxlLS1zZWFyY2h7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0udnMtdGFibGUtLXNlYXJjaHstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21heC13aWR0aDoyMDBweDtwb3NpdGlvbjpyZWxhdGl2ZX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXRhYmxlLS1zZWFyY2h7bWFyZ2luLXJpZ2h0OmF1dG99LnZ1ZXNheC1hcHAtaXMtbHRyIC52cy10YWJsZS0tc2VhcmNoe21hcmdpbi1sZWZ0OmF1dG99LnZzLXRhYmxlLS1zZWFyY2ggaXtwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7Zm9udC1zaXplOjFyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy10YWJsZS0tc2VhcmNoIGl7cmlnaHQ6MTBweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXRhYmxlLS1zZWFyY2ggaXtsZWZ0OjEwcHh9LnZzLXRhYmxlLS1zZWFyY2gtaW5wdXR7cGFkZGluZzo1cHggMTBweDtib3JkZXItcmFkaXVzOjIwcHg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wNCk7Zm9udC1zaXplOi43cmVtO3dpZHRoOjIwMHB4O2NvbG9yOnJnYmEoMCwwLDAsLjcpOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZX0udnVlc2F4LWFwcC1pcy1ydGwgLnZzLXRhYmxlLS1zZWFyY2gtaW5wdXR7cGFkZGluZy1yaWdodDozMHB4fS52dWVzYXgtYXBwLWlzLWx0ciAudnMtdGFibGUtLXNlYXJjaC1pbnB1dHtwYWRkaW5nLWxlZnQ6MzBweH0udnMtdGFibGUtLXNlYXJjaC1pbnB1dDpmb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCA0cHggMTBweCAwIHJnYmEoMCwwLDAsLjAzKTtib3gtc2hhZG93OjAgNHB4IDEwcHggMCByZ2JhKDAsMCwwLC4wMyl9LnZzLXRhYmxlLS1zZWFyY2gtaW5wdXQ6Zm9jdXMraXtjb2xvcjpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpfS52cy10YWJsZS0tdGhlYWR7ei1pbmRleDoyMDA7d2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX10aHtwYWRkaW5nOjZweCAxMHB4O3BhZGRpbmctdG9wOjVweDtwYWRkaW5nLWJvdHRvbTozcHg7Ym9yZGVyOjA7dGV4dC1hbGlnbjpsZWZ0O2ZvbnQtc2l6ZTouODVyZW19dGggLnZzLXRhYmxlLXRleHR7LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2N1cnNvcjpwb2ludGVyfXRoIC5zb3J0LXRoLHRoIC52cy10YWJsZS10ZXh0e2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9dGggLnNvcnQtdGh7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nLWxlZnQ6NnB4Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgycHgpfXRoIC5zb3J0LXRoIC50aC1zb3J0LWljb257Zm9udC1zaXplOi45cmVtOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZTtib3JkZXItcmFkaXVzOjJweH10aC50ZC1jaGVja3twYWRkaW5nOjAhaW1wb3J0YW50fXRoLnRkLWNoZWNrIC5jb24tdGQtY2hlY2t7ZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDozcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6NXB4O3BhZGRpbmctcmlnaHQ6MnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDNweCAxMHB4IDAgcmdiYSgwLDAsMCwuMDUpO2JveC1zaGFkb3c6MCAzcHggMTBweCAwIHJnYmEoMCwwLDAsLjA1KTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2V9dGgudGQtY2hlY2s6aG92ZXJ7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAgcmdiYSgwLDAsMCwuMDUpO2JveC1zaGFkb3c6MCAwIDAgMCByZ2JhKDAsMCwwLC4wNSl9dGgudGQtY2hlY2sgLmNvbi12cy1jaGVja2JveHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9LnZzLXRhYmxlLS1ub3QtZGF0YXtwYWRkaW5nOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXJ9LnRyLXRhYmxlLXN0YXRlLXByaW1hcnl7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLC4xKSFpbXBvcnRhbnR9LnRyLXRhYmxlLXN0YXRlLXByaW1hcnksLnZzLXRhYmxlLXByaW1hcnkgLmlzLXNlbGVjdGVke2NvbG9yOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxcHggMCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpIWltcG9ydGFudDtib3gtc2hhZG93OjAgMCAxcHggMCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpIWltcG9ydGFudH0udnMtdGFibGUtcHJpbWFyeSAuaXMtc2VsZWN0ZWR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDApIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlKDApIWltcG9ydGFudDtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksLjA1KSFpbXBvcnRhbnR9LnZzLXRhYmxlLXByaW1hcnkgLmlzLXNlbGVjdGVkIHRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0OjFweCBzb2xpZCB0cmFuc3BhcmVudCFpbXBvcnRhbnR9LnRyLXRhYmxlLXN0YXRlLXNlY29uZGFyeXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuMSkhaW1wb3J0YW50fS50ci10YWJsZS1zdGF0ZS1zZWNvbmRhcnksLnZzLXRhYmxlLXNlY29uZGFyeSAuaXMtc2VsZWN0ZWR7Y29sb3I6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMXB4IDAgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpIWltcG9ydGFudDtib3gtc2hhZG93OjAgMCAxcHggMCByZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksMSkhaW1wb3J0YW50fS52cy10YWJsZS1zZWNvbmRhcnkgLmlzLXNlbGVjdGVkey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSFpbXBvcnRhbnQ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXNlY29uZGFyeSksLjA1KSFpbXBvcnRhbnR9LnZzLXRhYmxlLXNlY29uZGFyeSAuaXMtc2VsZWN0ZWQgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHRyYW5zcGFyZW50IWltcG9ydGFudH0udHItdGFibGUtc3RhdGUtZGFuZ2Vye2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLC4xKSFpbXBvcnRhbnR9LnRyLXRhYmxlLXN0YXRlLWRhbmdlciwudnMtdGFibGUtZGFuZ2VyIC5pcy1zZWxlY3RlZHtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxcHggMCByZ2JhKHZhcigtLXZzLWRhbmdlciksMSkhaW1wb3J0YW50O2JveC1zaGFkb3c6MCAwIDFweCAwIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKSFpbXBvcnRhbnR9LnZzLXRhYmxlLWRhbmdlciAuaXMtc2VsZWN0ZWR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDApIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlKDApIWltcG9ydGFudDtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuMDUpIWltcG9ydGFudH0udnMtdGFibGUtZGFuZ2VyIC5pcy1zZWxlY3RlZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdDoxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50fS50ci10YWJsZS1zdGF0ZS1zdWNjZXNze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuMSkhaW1wb3J0YW50fS50ci10YWJsZS1zdGF0ZS1zdWNjZXNzLC52cy10YWJsZS1zdWNjZXNzIC5pcy1zZWxlY3RlZHtjb2xvcjpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMXB4IDAgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIDAgMXB4IDAgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnR9LnZzLXRhYmxlLXN1Y2Nlc3MgLmlzLXNlbGVjdGVkey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSFpbXBvcnRhbnQ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC4wNSkhaW1wb3J0YW50fS52cy10YWJsZS1zdWNjZXNzIC5pcy1zZWxlY3RlZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdDoxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50fS50ci10YWJsZS1zdGF0ZS13YXJuaW5ne2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwuMSkhaW1wb3J0YW50fS50ci10YWJsZS1zdGF0ZS13YXJuaW5nLC52cy10YWJsZS13YXJuaW5nIC5pcy1zZWxlY3RlZHtjb2xvcjpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMXB4IDAgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIDAgMXB4IDAgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKSFpbXBvcnRhbnR9LnZzLXRhYmxlLXdhcm5pbmcgLmlzLXNlbGVjdGVkey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSFpbXBvcnRhbnQ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLC4wNSkhaW1wb3J0YW50fS52cy10YWJsZS13YXJuaW5nIC5pcy1zZWxlY3RlZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdDoxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50fS50ci10YWJsZS1zdGF0ZS1kYXJre2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwuMSkhaW1wb3J0YW50fS50ci10YWJsZS1zdGF0ZS1kYXJrLC52cy10YWJsZS1kYXJrIC5pcy1zZWxlY3RlZHtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMXB4IDAgcmdiYSh2YXIoLS12cy1kYXJrKSwxKSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIDAgMXB4IDAgcmdiYSh2YXIoLS12cy1kYXJrKSwxKSFpbXBvcnRhbnR9LnZzLXRhYmxlLWRhcmsgLmlzLXNlbGVjdGVkey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSFpbXBvcnRhbnQ7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhcmspLC4wNSkhaW1wb3J0YW50fS52cy10YWJsZS1kYXJrIC5pcy1zZWxlY3RlZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdDoxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50fS50ci10YWJsZS1zdGF0ZS1saWdodHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLC4xKSFpbXBvcnRhbnR9LnRyLXRhYmxlLXN0YXRlLWxpZ2h0LC52cy10YWJsZS1saWdodCAuaXMtc2VsZWN0ZWR7Y29sb3I6cmdiYSh2YXIoLS12cy1saWdodCksMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxcHggMCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIDAgMXB4IDAgcmdiYSh2YXIoLS12cy1saWdodCksMSkhaW1wb3J0YW50fS52cy10YWJsZS1saWdodCAuaXMtc2VsZWN0ZWR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDApIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlKDApIWltcG9ydGFudDtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLC4wNSkhaW1wb3J0YW50fS52cy10YWJsZS1saWdodCAuaXMtc2VsZWN0ZWQgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHRyYW5zcGFyZW50IWltcG9ydGFudH0udGQtZW50ZXItYWN0aXZlLC50ZC1sZWF2ZS1hY3RpdmV7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlfS50ZC1lbnRlciwudGQtbGVhdmUtdG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTUlKSBzY2FsZSguNCkhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGVZKDE1JSkgc2NhbGUoLjQpIWltcG9ydGFudH0udHItZXhwYW5kLWVudGVyLWFjdGl2ZSwudHItZXhwYW5kLWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlfS50ci1leHBhbmQtZW50ZXIsLnRyLWV4cGFuZC1sZWF2ZS10b3tvcGFjaXR5OjA7aGVpZ2h0OjB9LnRyLWV4cGFuZCB0ZCAuY29udGVudC10ci1leHBhbmR7cGFkZGluZzoxMHB4O3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA1KTtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wNSk7d2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjMwcHh9LnRyLWV4cGFuZCB0ZCAuY29udGVudC10ci1leHBhbmQsLnRyLWV4cGFuZCB0ZCAudHItZXhwYW5kLS1jbG9zZXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnRyLWV4cGFuZCB0ZCAudHItZXhwYW5kLS1jbG9zZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMHB4O2hlaWdodDozMHB4O3JpZ2h0OjA7YmFja2dyb3VuZDppbmhlcml0O2NvbG9yOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKTtib3JkZXI6MDttYXJnaW4tbGVmdDoxMHB4O2JhY2tncm91bmQ6I2Y1ZjVmNTtib3JkZXItcmFkaXVzOjNweDtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2V9LnRyLWV4cGFuZCB0ZCAudHItZXhwYW5kLS1jbG9zZTpob3ZlcntvcGFjaXR5Oi43O2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpO2NvbG9yOiNmZmZ9LnRyLWV4cGFuZCB0ZCAudHItZXhwYW5kLS1jbG9zZSBpe2ZvbnQtc2l6ZToxLjFyZW19LnZ1ZXNheC1hcHAtaXMtcnRsIC52cy1jb24tdGFibGUgdGQudGQtY2hlY2sgLnZzLWljb257LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC03cHgpIHJvdGF0ZSg5MGRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtN3B4KSByb3RhdGUoOTBkZWcpfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtY29uLXRhYmxlIHRkLnRkLWNoZWNrIC52cy1jaGVja2JveC0tY2hlY2sgLnZzLWljb257LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDFweCkgcm90YXRlKDBkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMXB4KSByb3RhdGUoMGRlZyl9LmZhZGUtdGFiLWVudGVyLWFjdGl2ZSwuZmFkZS10YWItbGVhdmUtYWN0aXZley13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzO3RyYW5zaXRpb246YWxsIC4zc30uZmFkZS10YWItZW50ZXIsLmZhZGUtdGFiLWxlYXZlLXRve3RvcDowO29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMCUsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMCUsMCwwKX0uZmFkZS10YWItbGVhdmUtdG97dG9wOjA7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMDAlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKX0uZmFkZS10YWItaW52ZXJ0LWVudGVyLWFjdGl2ZSwuZmFkZS10YWItaW52ZXJ0LWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zczt0cmFuc2l0aW9uOmFsbCAuM3N9LmZhZGUtdGFiLWludmVydC1lbnRlciwuZmFkZS10YWItaW52ZXJ0LWxlYXZlLXRve3RvcDowO29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMDAlLDAsMCl9LmZhZGUtdGFiLWludmVydC1sZWF2ZS10b3t0b3A6MDtvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCl9LmZhZGUtdGFiLXZlcnRpY2FsLWVudGVyLWFjdGl2ZSwuZmFkZS10YWItdmVydGljYWwtbGVhdmUtYWN0aXZley13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzO3RyYW5zaXRpb246YWxsIC4zc30uZmFkZS10YWItdmVydGljYWwtZW50ZXJ7dG9wOjA7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwJSwwKX0uZmFkZS10YWItdmVydGljYWwtbGVhdmUtdG97dG9wOjA7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApfS5mYWRlLXRhYi12ZXJ0aWNhbC1pbnZlcnQtZW50ZXItYWN0aXZlLC5mYWRlLXRhYi12ZXJ0aWNhbC1pbnZlcnQtbGVhdmUtYWN0aXZley13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzO3RyYW5zaXRpb246YWxsIC4zc30uZmFkZS10YWItdmVydGljYWwtaW52ZXJ0LWVudGVye3RvcDowO29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKX0uZmFkZS10YWItdmVydGljYWwtaW52ZXJ0LWxlYXZlLXRve3RvcDowO29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApIWltcG9ydGFudH0uY29uLXZzLXRhYnN7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9LmNvbi12cy10YWJzIC5jb24tc2xvdC10YWJze3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVufS5jb24tdnMtdGFicyAuY29uLXVsLXRhYnMsLnZzLXRhYnMtLXVse3Bvc2l0aW9uOnJlbGF0aXZlfS52cy10YWJzLS11bHt3aWR0aDoxMDAlO3BhZGRpbmctbGVmdDowOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMjVweCAwIHJnYmEoMCwwLDAsLjA0KTtib3gtc2hhZG93OjAgMCAyNXB4IDAgcmdiYSgwLDAsMCwuMDQpfS52cy10YWJzLS11bC51bC10YWJzLWNlbnRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52cy10YWJzLS11bC51bC10YWJzLXJpZ2h0ey13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0udnMtdGFicy0tdWwudWwtdGFicy1maXhlZHstd2Via2l0LWJveC1wYWNrOmp1c3RpZnk7LW1zLWZsZXgtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOy1tcy1mbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudDtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0udnMtdGFicy0tdWwudWwtdGFicy1maXhlZCBsaXt3aWR0aDoxMDAlfS5saW5lLXZzLXRhYnN7d2lkdGg6MTAwcHg7aGVpZ2h0OjJweDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt3aWxsLWNoYW5nZTpsZWZ0LHJpZ2h0fS52cy10YWJzLS1saXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS52cy10YWJzLS1saSBidXR0b257Y29sb3I6aW5oZXJpdDtmb250LWZhbWlseTppbmhlcml0fS52cy10YWJzLS1saSBidXR0b24udnMtdGFicy0tYnRuey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDttYXJnaW46MDtwYWRkaW5nOjEwcHg7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt6LWluZGV4OjEwMH0udnMtdGFicy0tbGkgYnV0dG9uLnZzLXRhYnMtLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKXtjb2xvcjppbmhlcml0fS52cy10YWJzLS1saSBidXR0b246ZGlzYWJsZWR7b3BhY2l0eTouNTtjdXJzb3I6ZGVmYXVsdCFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0uYWN0aXZlQ2hpbGQgYnV0dG9uOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOmluaGVyaXR9LmFjdGl2ZUNoaWxkIGJ1dHRvbi52cy10YWJzLS1idG57cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjEycHh9LnZzLXRhYnMtLWJ0bi10YWd7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dG9wOi0xMHB4O3JpZ2h0Oi0xMHB4O2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjowO2JhY2tncm91bmQ6I2ZmZjstd2Via2l0LWJveC1zaGFkb3c6MCAwIDEwcHggMCByZ2JhKDAsMCwwLC4wNSk7Ym94LXNoYWRvdzowIDAgMTBweCAwIHJnYmEoMCwwLDAsLjA1KTtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjIwMH0udnMtdGFicy0tYnRuLXRhZyBpe3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnQ7Zm9udC1zaXplOi45cmVtfS52dWVzYXgtYXBwLWlzLXJ0bCAudnMtdGFicy0tYnRuLWljb24rc3BhbntwYWRkaW5nLXJpZ2h0OjlweH0udnVlc2F4LWFwcC1pcy1sdHIgLnZzLXRhYnMtLWJ0bi1pY29uK3NwYW57cGFkZGluZy1sZWZ0OjlweH0udnMtdGFicy1wb3NpdGlvbi10b3AgLnZzLXRhYnMtLXVse2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LW1zLWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwfS52cy10YWJzLXBvc2l0aW9uLWJvdHRvbSAudnMtdGFicy0tdWx7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wNSk7Ym9yZGVyLWJvdHRvbTowIWltcG9ydGFudH0udnMtdGFicy1wb3NpdGlvbi1ib3R0b20gLmNvbi11bC10YWJzey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MzstbXMtZmxleC1vcmRlcjoyO29yZGVyOjJ9LnZzLXRhYnMtcG9zaXRpb24tYm90dG9tIC5saW5lLXZzLXRhYnN7dG9wOjB9LnZzLXRhYnMtcG9zaXRpb24tbGVmdHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS52cy10YWJzLXBvc2l0aW9uLWxlZnQgLmxpbmUtdnMtdGFic3tsZWZ0OmF1dG8haW1wb3J0YW50O3JpZ2h0OjB9LnZzLXRhYnMtcG9zaXRpb24tbGVmdCAuY29uLXVsLXRhYnN7ZmxvYXQ6bGVmdDtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrfS52cy10YWJzLXBvc2l0aW9uLWxlZnQgLnZzLXRhYnMtLXVse2Rpc3BsYXk6YmxvY2s7d2lkdGg6YXV0bztib3JkZXItYm90dG9tOjAhaW1wb3J0YW50O2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgwLDAsMCwuMDUpfS52cy10YWJzLXBvc2l0aW9uLWxlZnQgLmFjdGl2ZUNoaWxkIGJ1dHRvbntwYWRkaW5nLXRvcDoxMHB4IWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbToxMHB4IWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MTJweCFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDo4cHghaW1wb3J0YW50fS52cy10YWJzLXBvc2l0aW9uLXJpZ2h0e2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9LnZzLXRhYnMtcG9zaXRpb24tcmlnaHQgLmNvbi1zbG90LXRhYnN7d2lkdGg6MTAwJX0udnMtdGFicy1wb3NpdGlvbi1yaWdodCAuY29uLXVsLXRhYnN7ZmxvYXQ6bGVmdDtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrOy13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MzstbXMtZmxleC1vcmRlcjoyO29yZGVyOjJ9LnZzLXRhYnMtcG9zaXRpb24tcmlnaHQgLnZzLXRhYnMtLXVse2Rpc3BsYXk6YmxvY2s7d2lkdGg6YXV0bztib3JkZXItYm90dG9tOjAhaW1wb3J0YW50O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wNSl9LnZzLXRhYnMtcG9zaXRpb24tcmlnaHQgLmFjdGl2ZUNoaWxkIGJ1dHRvbntwYWRkaW5nLXRvcDoxMHB4IWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbToxMHB4IWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6OHB4IWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjEycHghaW1wb3J0YW50fS52cy10YWJzLXByaW1hcnkgLmNvbi11bC10YWJzIC5hY3RpdmVDaGlsZCBidXR0b24sLnZzLXRhYnMtcHJpbWFyeSAuY29uLXVsLXRhYnMgYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVye2NvbG9yOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSkhaW1wb3J0YW50fS52cy10YWJzLXByaW1hcnkgLmNvbi11bC10YWJzIC5saW5lLXZzLXRhYnN7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMzBkZWcscmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKSxyZ2JhKHZhcigtLXZzLXByaW1hcnkpLC41KSkhaW1wb3J0YW50Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgOHB4IDAgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuNCkhaW1wb3J0YW50O2JveC1zaGFkb3c6MCAwIDhweCAwIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksLjQpIWltcG9ydGFudH0udnMtdGFicy1zZWNvbmRhcnkgLmNvbi11bC10YWJzIC5hY3RpdmVDaGlsZCBidXR0b24sLnZzLXRhYnMtc2Vjb25kYXJ5IC5jb24tdWwtdGFicyBidXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXJ7Y29sb3I6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpIWltcG9ydGFudH0udnMtdGFicy1zZWNvbmRhcnkgLmNvbi11bC10YWJzIC5saW5lLXZzLXRhYnN7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMzBkZWcscmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpLHJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuNSkpIWltcG9ydGFudDstd2Via2l0LWJveC1zaGFkb3c6MCAwIDhweCAwIHJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuNCkhaW1wb3J0YW50O2JveC1zaGFkb3c6MCAwIDhweCAwIHJnYmEodmFyKC0tdnMtc2Vjb25kYXJ5KSwuNCkhaW1wb3J0YW50fS52cy10YWJzLWRhbmdlciAuY29uLXVsLXRhYnMgLmFjdGl2ZUNoaWxkIGJ1dHRvbiwudnMtdGFicy1kYW5nZXIgLmNvbi11bC10YWJzIGJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3Zlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksMSkhaW1wb3J0YW50fS52cy10YWJzLWRhbmdlciAuY29uLXVsLXRhYnMgLmxpbmUtdnMtdGFic3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgzMGRlZyxyZ2JhKHZhcigtLXZzLWRhbmdlciksMSkscmdiYSh2YXIoLS12cy1kYW5nZXIpLC41KSkhaW1wb3J0YW50Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgOHB4IDAgcmdiYSh2YXIoLS12cy1kYW5nZXIpLC40KSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIDAgOHB4IDAgcmdiYSh2YXIoLS12cy1kYW5nZXIpLC40KSFpbXBvcnRhbnR9LnZzLXRhYnMtc3VjY2VzcyAuY29uLXVsLXRhYnMgLmFjdGl2ZUNoaWxkIGJ1dHRvbiwudnMtdGFicy1zdWNjZXNzIC5jb24tdWwtdGFicyBidXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXJ7Y29sb3I6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnR9LnZzLXRhYnMtc3VjY2VzcyAuY29uLXVsLXRhYnMgLmxpbmUtdnMtdGFic3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgzMGRlZyxyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpLHJnYmEodmFyKC0tdnMtc3VjY2VzcyksLjUpKSFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCA4cHggMCByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLC40KSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIDAgOHB4IDAgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuNCkhaW1wb3J0YW50fS52cy10YWJzLXdhcm5pbmcgLmNvbi11bC10YWJzIC5hY3RpdmVDaGlsZCBidXR0b24sLnZzLXRhYnMtd2FybmluZyAuY29uLXVsLXRhYnMgYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVye2NvbG9yOnJnYmEodmFyKC0tdnMtd2FybmluZyksMSkhaW1wb3J0YW50fS52cy10YWJzLXdhcm5pbmcgLmNvbi11bC10YWJzIC5saW5lLXZzLXRhYnN7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMzBkZWcscmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKSxyZ2JhKHZhcigtLXZzLXdhcm5pbmcpLC41KSkhaW1wb3J0YW50Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgOHB4IDAgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwuNCkhaW1wb3J0YW50O2JveC1zaGFkb3c6MCAwIDhweCAwIHJnYmEodmFyKC0tdnMtd2FybmluZyksLjQpIWltcG9ydGFudH0udnMtdGFicy1kYXJrIC5jb24tdWwtdGFicyAuYWN0aXZlQ2hpbGQgYnV0dG9uLC52cy10YWJzLWRhcmsgLmNvbi11bC10YWJzIGJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3Zlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWRhcmspLDEpIWltcG9ydGFudH0udnMtdGFicy1kYXJrIC5jb24tdWwtdGFicyAubGluZS12cy10YWJze2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDMwZGVnLHJnYmEodmFyKC0tdnMtZGFyayksMSkscmdiYSh2YXIoLS12cy1kYXJrKSwuNSkpIWltcG9ydGFudDstd2Via2l0LWJveC1zaGFkb3c6MCAwIDhweCAwIHJnYmEodmFyKC0tdnMtZGFyayksLjQpIWltcG9ydGFudDtib3gtc2hhZG93OjAgMCA4cHggMCByZ2JhKHZhcigtLXZzLWRhcmspLC40KSFpbXBvcnRhbnR9LnZzLXRhYnMtbGlnaHQgLmNvbi11bC10YWJzIC5hY3RpdmVDaGlsZCBidXR0b24sLnZzLXRhYnMtbGlnaHQgLmNvbi11bC10YWJzIGJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3Zlcntjb2xvcjpyZ2JhKHZhcigtLXZzLWxpZ2h0KSwxKSFpbXBvcnRhbnR9LnZzLXRhYnMtbGlnaHQgLmNvbi11bC10YWJzIC5saW5lLXZzLXRhYnN7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMzBkZWcscmdiYSh2YXIoLS12cy1saWdodCksMSkscmdiYSh2YXIoLS12cy1saWdodCksLjUpKSFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCA4cHggMCByZ2JhKHZhcigtLXZzLWxpZ2h0KSwuNCkhaW1wb3J0YW50O2JveC1zaGFkb3c6MCAwIDhweCAwIHJnYmEodmFyKC0tdnMtbGlnaHQpLC40KSFpbXBvcnRhbnR9LnZzLXRhYnMtLWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTBweH0udnMtY29uLXRleHRhcmVhe3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wOCk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAgdHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzowIDAgMCAwIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtdHJhbnNpdGlvbjpib3hTaGFkb3cgLjI1cyBlYXNlLGJvcmRlciAuMjVzIGVhc2UsLXdlYmtpdC10cmFuc2Zvcm0gLjI1cyBlYXNlO3RyYW5zaXRpb246Ym94U2hhZG93IC4yNXMgZWFzZSxib3JkZXIgLjI1cyBlYXNlLC13ZWJraXQtdHJhbnNmb3JtIC4yNXMgZWFzZTt0cmFuc2l0aW9uOmJveFNoYWRvdyAuMjVzIGVhc2UsYm9yZGVyIC4yNXMgZWFzZSx0cmFuc2Zvcm0gLjI1cyBlYXNlO3RyYW5zaXRpb246Ym94U2hhZG93IC4yNXMgZWFzZSxib3JkZXIgLjI1cyBlYXNlLHRyYW5zZm9ybSAuMjVzIGVhc2UsLXdlYmtpdC10cmFuc2Zvcm0gLjI1cyBlYXNlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApO21hcmdpbi1ib3R0b206MTZweH0udnMtY29uLXRleHRhcmVhLmZvY3VzeCBoNHtiYWNrZ3JvdW5kOiNmY2ZjZmM7cGFkZGluZy10b3A6NHB4O3BhZGRpbmctYm90dG9tOjRweH0udnMtY29uLXRleHRhcmVhIGg0e2ZvbnQtc2l6ZTouN3JlbTtwYWRkaW5nOjhweDtwYWRkaW5nLWJvdHRvbTowO2N1cnNvcjpkZWZhdWx0Oy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO3RyYW5zaXRpb246YWxsIC4yNXMgZWFzZTtib3JkZXItcmFkaXVzOjVweCA1cHggMCAwfS52cy10ZXh0YXJlYXtyZXNpemU6bm9uZTtib3JkZXItcmFkaXVzOjZweDtib3JkZXI6MCBzb2xpZCB0cmFuc3BhcmVudDtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6OXB4O2NvbG9yOnJnYmEoMCwwLDAsLjgpO2ZvbnQtc2l6ZTouOHJlbTt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO21pbi13aWR0aDoxMDAlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnZzLXRleHRhcmVhOmZvY3Vze3Jlc2l6ZTphdXRvIWltcG9ydGFudH0udnMtdGV4dGFyZWE6Zm9jdXN+LmNvdW50e29wYWNpdHk6MX0udGV4dGFyZWEtZGFuZ2Vye2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1kYW5nZXIpLC40KTstd2Via2l0LWJveC1zaGFkb3c6MCA0cHggMjBweCAwIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwuMSk7Ym94LXNoYWRvdzowIDRweCAyMHB4IDAgcmdiYSh2YXIoLS12cy1kYW5nZXIpLC4xKX0udGV4dGFyZWEtZGFuZ2VyIC52cy10ZXh0YXJlYXtjb2xvcjpyZ2JhKHZhcigtLXZzLWRhbmdlciksLjgpfS50ZXh0YXJlYS1kYW5nZXIgLmNvdW50e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpfS52cy10ZXh0YXJlYS0tY291bnR7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTRweDtib3R0b206MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpO3BhZGRpbmc6MXB4IDZweDtmb250LXNpemU6LjZyZW07Ym9yZGVyLXJhZGl1czowIDAgNXB4IDVweDtmb250LXdlaWdodDo3MDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgNHB4IDIwcHggMCByZ2JhKDAsMCwwLC4wNSk7Ym94LXNoYWRvdzowIDRweCAyMHB4IDAgcmdiYSgwLDAsMCwuMDUpO2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKTtjb2xvcjojZmZmO29wYWNpdHk6LjM7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlfS5mb2N1c3gudnMtdGV4dGFyZWEtcHJpbWFyeXtib3JkZXI6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSkhaW1wb3J0YW50fS5mb2N1c3gudnMtdGV4dGFyZWEtc2Vjb25kYXJ5e2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpIWltcG9ydGFudH0uZm9jdXN4LnZzLXRleHRhcmVhLWRhbmdlcntib3JkZXI6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKSFpbXBvcnRhbnR9LmZvY3VzeC52cy10ZXh0YXJlYS1zdWNjZXNze2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnR9LmZvY3VzeC52cy10ZXh0YXJlYS13YXJuaW5ne2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKSFpbXBvcnRhbnR9LmZvY3VzeC52cy10ZXh0YXJlYS1kYXJre2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1kYXJrKSwxKSFpbXBvcnRhbnR9LmZvY3VzeC52cy10ZXh0YXJlYS1saWdodHtib3JkZXI6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtbGlnaHQpLDEpIWltcG9ydGFudH0udnMtdGltZXBpY2tlcntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0udnMtdGltZXBpY2tlciAuY29uLXZzLXRpbWV7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52cy10aW1lcGlja2VyIC5jb24tdnMtdGltZSAudGltZXtwYWRkaW5nOjVweCA4cHg7bWFyZ2luOjAgMnB4O2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDRweCAxMHB4IDAgcmdiYSgwLDAsMCwuMDUpO2JveC1zaGFkb3c6MCA0cHggMTBweCAwIHJnYmEoMCwwLDAsLjA1KTtjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZX0uY29uLXVsLXRpbWV7b3ZlcmZsb3c6aGlkZGVuO21heC1oZWlnaHQ6MTgwcHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyMDAwMH0udWwtdGltZXtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjA7cGFkZGluZzowO2hlaWdodDphdXRvO21heC1oZWlnaHQ6MTgwcHg7b3ZlcmZsb3c6YXV0bztib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6MCA0cHggMTBweCAwIHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93OjAgNHB4IDEwcHggMCByZ2JhKDAsMCwwLC4wNSl9LnVsLXRpbWUgbGl7cGFkZGluZzo1cHggOHB4O2xpc3Qtc3R5bGU6bm9uZTt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcn0udWwtdGltZSBsaS5hY3RpdmUtdGltZXtiYWNrZ3JvdW5kOiMwMDB9LnZzLXRvb2x0aXB7ZGlzcGxheTpibG9jaztoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7ei1pbmRleDo0MDAwMDtiYWNrZ3JvdW5kOiMzMjMyMzI7cGFkZGluZzo1cHggN3B4O2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1yYWRpdXM6NnB4O21heC13aWR0aDoyMjBweDtjb2xvcjojZmZmfS52cy10b29sdGlwLmFmdGVyLW5vbmU6YWZ0ZXJ7ZGlzcGxheTpub25lIWltcG9ydGFudH0udnMtdG9vbHRpcCBoNHtmb250LXNpemU6MTNweDt3aWR0aDoxMDAlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIGhzbGEoMCwwJSwxMDAlLC4xKTtwYWRkaW5nLWJvdHRvbTo1cHg7bWFyZ2luLWJvdHRvbTo1cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LnZzLXRvb2x0aXA6YWZ0ZXJ7Y29udGVudDpcXFwiXFxcIjtiYWNrZ3JvdW5kOmluaGVyaXQ7d2lkdGg6OHB4O2hlaWdodDo4cHg7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9ja30udnMtdG9vbHRpcC52cy10b29sdGlwLXRvcDphZnRlcntib3R0b206LTZweH0udnMtdG9vbHRpcC52cy10b29sdGlwLWJvdHRvbTphZnRlciwudnMtdG9vbHRpcC52cy10b29sdGlwLXRvcDphZnRlcnstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZSgtNTAlKTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGUoLTUwJSk7bGVmdDo1MCV9LnZzLXRvb2x0aXAudnMtdG9vbHRpcC1ib3R0b206YWZ0ZXJ7dG9wOi0xcHh9LnZzLXRvb2x0aXAudnMtdG9vbHRpcC1sZWZ0OmFmdGVye3JpZ2h0Oi0xcHh9LnZzLXRvb2x0aXAudnMtdG9vbHRpcC1sZWZ0OmFmdGVyLC52cy10b29sdGlwLnZzLXRvb2x0aXAtcmlnaHQ6YWZ0ZXJ7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKC01MCUpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVkoLTUwJSk7dG9wOjUwJX0udnMtdG9vbHRpcC52cy10b29sdGlwLXJpZ2h0OmFmdGVye2xlZnQ6LTZweH0udG9vbHRpcC1mYWRlLWVudGVyLWFjdGl2ZSwudG9vbHRpcC1mYWRlLWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuMnMsLXdlYmtpdC10cmFuc2Zvcm0gLjJzO3RyYW5zaXRpb246b3BhY2l0eSAuMnMsLXdlYmtpdC10cmFuc2Zvcm0gLjJzO3RyYW5zaXRpb246b3BhY2l0eSAuMnMsdHJhbnNmb3JtIC4yczt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzLHRyYW5zZm9ybSAuMnMsLXdlYmtpdC10cmFuc2Zvcm0gLjJzfS50b29sdGlwLWZhZGUtZW50ZXIsLnRvb2x0aXAtZmFkZS1sZWF2ZS10b3tvcGFjaXR5OjB9LnRvb2x0aXAtZmFkZS1lbnRlci52cy10b29sdGlwLXRvcCwudG9vbHRpcC1mYWRlLWxlYXZlLXRvLnZzLXRvb2x0aXAtdG9wey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMHB4KX0udG9vbHRpcC1mYWRlLWVudGVyLnZzLXRvb2x0aXAtYm90dG9tLC50b29sdGlwLWZhZGUtbGVhdmUtdG8udnMtdG9vbHRpcC1ib3R0b217LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KX0udG9vbHRpcC1mYWRlLWVudGVyLnZzLXRvb2x0aXAtbGVmdCwudG9vbHRpcC1mYWRlLWxlYXZlLXRvLnZzLXRvb2x0aXAtbGVmdHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTEwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwcHgpfS50b29sdGlwLWZhZGUtZW50ZXIudnMtdG9vbHRpcC1yaWdodCwudG9vbHRpcC1mYWRlLWxlYXZlLXRvLnZzLXRvb2x0aXAtcmlnaHR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDEwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMTBweCl9LnZzLXRvb2x0aXAtcHJpbWFyeXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSl9LnZzLXRvb2x0aXAtc2Vjb25kYXJ5e2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zZWNvbmRhcnkpLDEpfS52cy10b29sdGlwLWRhbmdlcntiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0udnMtdG9vbHRpcC1zdWNjZXNze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKX0udnMtdG9vbHRpcC13YXJuaW5ne2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy13YXJuaW5nKSwxKX0udnMtdG9vbHRpcC1kYXJre2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYXJrKSwxKX0udnMtdG9vbHRpcC1saWdodHtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtbGlnaHQpLDEpfS5jb24tdXBsb2Fke3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9LmNvbi1pbnB1dC11cGxvYWR7YmFja2dyb3VuZDojZjVmNWY1O3dpZHRoOjIwMHB4O2hlaWdodDoyMDBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo4cHg7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMjVzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjI1cyBlYXNlO2JvcmRlcjoxcHggZGFzaGVkIHJnYmEoMCwwLDAsLjEpO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXJnaW46MTVweH0udnVlc2F4LWFwcC1pcy1ydGwgLmNvbi1pbnB1dC11cGxvYWR7ZmxvYXQ6cmlnaHR9LnZ1ZXNheC1hcHAtaXMtbHRyIC5jb24taW5wdXQtdXBsb2Fke2Zsb2F0OmxlZnR9LmNvbi1pbnB1dC11cGxvYWQ6aG92ZXJ7Ym9yZGVyOjFweCBkYXNoZWQgcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwuNSl9LmNvbi1pbnB1dC11cGxvYWQuZGlzYWJsZWQtdXBsb2Fke29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5Om5vbmV9LmNvbi1pbnB1dC11cGxvYWQgaW5wdXR7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvcGFjaXR5OjA7bGVmdDowO3RvcDowO2N1cnNvcjpwb2ludGVyfS5jb24taW5wdXQtdXBsb2FkIC50ZXh0LWlucHV0e21pbi13aWR0aDoyMDBweDtkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3dpZHRoOjEwMCU7Zm9udC13ZWlnaHQ6NzAwfS5jb24taW5wdXQtdXBsb2FkIC5pbnB1dC1wcm9ncmVzc3toZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2xlZnQ6MDt0b3A6MDt3aWR0aDoyOSU7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXByaW1hcnkpLDEpO2JvcmRlci1yYWRpdXM6MTBweH0uY29uLWlucHV0LXVwbG9hZC5vbi1wcm9ncmVzcy1hbGwtdXBsb2Fke3dpZHRoOjEwMCU7aGVpZ2h0OjRweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO2JvcmRlcjowIHNvbGlkIHRyYW5zcGFyZW50fS5jb24taW5wdXQtdXBsb2FkLm9uLXByb2dyZXNzLWFsbC11cGxvYWQgLnRleHQtaW5wdXQsLmNvbi1pbnB1dC11cGxvYWQub24tcHJvZ3Jlc3MtYWxsLXVwbG9hZCAudnMtdXBsb2FkLS1idXR0b24tdXBsb2Fke29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTQwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTQwcHgpfS5jb24taW5wdXQtdXBsb2FkLmlzLXJlYWR5LWFsbC11cGxvYWQgLmlucHV0LXByb2dyZXNze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKSFpbXBvcnRhbnR9LnZzLXVwbG9hZC0tYnV0dG9uLXVwbG9hZHtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDtwYWRkaW5nOjRweDtib3JkZXItcmFkaXVzOjAgMCA1cHggNXB4O3BhZGRpbmctbGVmdDo2cHg7cGFkZGluZy1yaWdodDo2cHg7Zm9udC1zaXplOi44cmVtO3otaW5kZXg6NTAwO2N1cnNvcjpwb2ludGVyO21hcmdpbjowO2NvbG9yOnJnYmEodmFyKC0tdnMtcHJpbWFyeSksMSk7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMCByZ2JhKDAsMCwwLC4wNSk7Ym94LXNoYWRvdzowIDAgMCAwIHJnYmEoMCwwLDAsLjA1KTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjAzKTtib3R0b206MDt3aWR0aDoxMDAlfS52cy11cGxvYWQtLWJ1dHRvbi11cGxvYWQ6ZGlzYWJsZWR7b3BhY2l0eTouNDtwb2ludGVyLWV2ZW50czpub25lfS52cy11cGxvYWQtLWJ1dHRvbi11cGxvYWQ6aG92ZXJ7cGFkZGluZy1ib3R0b206MTBweDtwYWRkaW5nLXRvcDoxMHB4O2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1wcmltYXJ5KSwxKTtjb2xvcjojZmZmfS5jb24taW1nLXVwbG9hZHt3aWR0aDoxMDAlO2JhY2tncm91bmQ6I2ZmZjttYXJnaW4tdG9wOjVweDtwYWRkaW5nLXJpZ2h0OjVweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1jb2x1bW4tZ2FwOjVweDstbW96LWNvbHVtbi1nYXA6NXB4O2NvbHVtbi1nYXA6NXB4fS5jb24taW1nLXVwbG9hZCwuY29uLWltZy11cGxvYWQgLmltZy11cGxvYWR7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLXJhZGl1czoxMHB4O292ZXJmbG93OmhpZGRlbn0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWR7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZ3JvdW5kOnJnYmEoMCw4MCwwLC41KTtiYWNrZ3JvdW5kOiNmZmY7LXdlYmtpdC1ib3gtc2hhZG93OjAgNXB4IDIwcHggMCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93OjAgNXB4IDIwcHggMCByZ2JhKDAsMCwwLC4xKTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoyMDBweDtoZWlnaHQ6MjAwcHg7bWFyZ2luOjVweDtjdXJzb3I6cG9pbnRlcn0udnVlc2F4LWFwcC1pcy1ydGwgLmNvbi1pbWctdXBsb2FkIC5pbWctdXBsb2Fke2Zsb2F0OnJpZ2h0fS52dWVzYXgtYXBwLWlzLWx0ciAuY29uLWltZy11cGxvYWQgLmltZy11cGxvYWR7ZmxvYXQ6bGVmdH0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQuZmlsZUVycm9ye2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpOy13ZWJraXQtYm94LXNoYWRvdzowIDVweCAyMHB4IDAgcmdiYSh2YXIoLS12cy1kYW5nZXIpLDEpO2JveC1zaGFkb3c6MCA1cHggMjBweCAwIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQuZmlsZUVycm9yIC5idG4tdXBsb2FkLWZpbGV7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLWRhbmdlciksLjMpIWltcG9ydGFudH0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQuZmlsZUVycm9yIC5idG4tdXBsb2FkLWZpbGUgaXtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKSFpbXBvcnRhbnR9LmNvbi1pbWctdXBsb2FkIC5pbWctdXBsb2FkLnJlbW92ZUl0ZW17LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZSxoZWlnaHQgLjJzIGVhc2UgLjJzO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlLGhlaWdodCAuMnMgZWFzZSAuMnM7b3BhY2l0eTowIWltcG9ydGFudDt3aWR0aDowIWltcG9ydGFudDt2aXNpYmlsaXR5OmhpZGRlbjttYXJnaW46MCFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50fS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCBpbWd7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZX0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQ6aG92ZXJ7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjk5KTt0cmFuc2Zvcm06c2NhbGUoLjk5KTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93OjAgMCAwIDAgcmdiYSgwLDAsMCwuMSl9LmNvbi1pbWctdXBsb2FkIC5pbWctdXBsb2FkOmhvdmVyIC5idG4teC1maWxle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQ6aG92ZXIgLmJ0bi11cGxvYWQtZmlsZXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsNjUlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsNjUlKX0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi14LWZpbGV7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NXB4O3BhZGRpbmc6MDttYXJnaW46MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMjAlLC0yMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMjAlLC0yMCUpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7ei1pbmRleDozMDA7b3BhY2l0eTowO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7Ym9yZGVyLXJhZGl1czoxMHB4fS52dWVzYXgtYXBwLWlzLXJ0bCAuY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi14LWZpbGV7bGVmdDo1cHh9LnZ1ZXNheC1hcHAtaXMtbHRyIC5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAuYnRuLXgtZmlsZXtyaWdodDo1cHh9LmNvbi1pbWctdXBsb2FkIC5pbWctdXBsb2FkIC5idG4teC1maWxlIGl7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjRweDtmb250LXNpemU6MS40cmVtO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOjVweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEpO2NvbG9yOiNmZmY7dGV4dC1zaGFkb3c6MCAzcHggMTBweCByZ2JhKDAsMCwwLC41KX0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi14LWZpbGU6aG92ZXIgaXtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi14LWZpbGU6aG92ZXJ+LmJ0bi11cGxvYWQtZmlsZTpub3QoLm9uLXByb2dyZXNzKXtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IGNlbnRlcixyZ2JhKHZhcigtLXZzLWRhbmdlciksMSkgMCx0cmFuc3BhcmVudCA3MCUpO2hlaWdodDozMDBweH0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi14LWZpbGU6aG92ZXJ+LmJ0bi11cGxvYWQtZmlsZTpub3QoLm9uLXByb2dyZXNzKTphZnRlcntib3JkZXI6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwxKX0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi14LWZpbGU6aG92ZXJ+LmJ0bi11cGxvYWQtZmlsZTpub3QoLm9uLXByb2dyZXNzKSBpe29wYWNpdHk6MH0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi14LWZpbGU6aG92ZXJ+Lm9uLXByb2dyZXNze2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1kYW5nZXIpLC4yKX0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi14LWZpbGU6aG92ZXJ+Lm9uLXByb2dyZXNzIGl7b3BhY2l0eTowfS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAuYnRuLXgtZmlsZTpob3Zlcn5pbWd7LXdlYmtpdC1maWx0ZXI6Z3JheXNjYWxlKDgwJSk7ZmlsdGVyOmdyYXlzY2FsZSg4MCUpfS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAudGV4dC1hcmNoaXZle2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjVweH0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLnRleHQtYXJjaGl2ZSBpe3Bvc2l0aW9uOmFic29sdXRlO2ZvbnQtc2l6ZTo3cmVtO29wYWNpdHk6LjA1fS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAudGV4dC1hcmNoaXZlIHNwYW57cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzo1cHh9LmNvbi1pbWctdXBsb2FkIC5pbWctdXBsb2FkIC5idG4tdXBsb2FkLWZpbGV7bWFyZ2luOjA7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2xlZnQ6NTAlO3otaW5kZXg6MjAwO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjMwMHB4O2hlaWdodDoyMDBweDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSw4MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSw4MCUpO2JvcmRlcjowO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgY2VudGVyLHJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSkgMCx0cmFuc3BhcmVudCA3MCUpO2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7LXdlYmtpdC1hbmltYXRpb246aW1hZ2VSZWJvdW5kIC43cyBlYXNlIWltcG9ydGFudDthbmltYXRpb246aW1hZ2VSZWJvdW5kIC43cyBlYXNlIWltcG9ydGFudH0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi11cGxvYWQtZmlsZTphZnRlcntjb250ZW50OlxcXCJcXFwiO3dpZHRoOjIwMHB4O2hlaWdodDoyMDBweDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDtkaXNwbGF5OmJsb2NrO2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0b3A6NTAlO2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoxcHggc29saWQgcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKTstd2Via2l0LWFuaW1hdGlvbjpjaXJjbGUgMS41cyBlYXNlIGluZmluaXRlO2FuaW1hdGlvbjpjaXJjbGUgMS41cyBlYXNlIGluZmluaXRlfS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAuYnRuLXVwbG9hZC1maWxlOm5vdCgub24tcHJvZ3Jlc3MpOmhvdmVye3dpZHRoOjIwMHB4O2hlaWdodDoyMDBweDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSw3MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSw3MCUpfS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAuYnRuLXVwbG9hZC1maWxlOm5vdCgub24tcHJvZ3Jlc3MpOmhvdmVyIGl7Zm9udC1zaXplOjEuNHJlbTtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSk7dG9wOjYlO3BhZGRpbmc6MTBweH0uY29uLWltZy11cGxvYWQgLmltZy11cGxvYWQgLmJ0bi11cGxvYWQtZmlsZSBpe3otaW5kZXg6NTA7Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTt0b3A6MTIlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpO2NvbG9yOiNmZmY7dGV4dC1zaGFkb3c6MCAzcHggMTBweCByZ2JhKDAsMCwwLC41KTtwYWRkaW5nOjIwcHg7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGU7YmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlfS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAuYnRuLXVwbG9hZC1maWxlIHNwYW57b3BhY2l0eTowO3otaW5kZXg6MzAwfS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAuYnRuLXVwbG9hZC1maWxlLm9uLXByb2dyZXNze3dpZHRoOjEwMCU7aGVpZ2h0OjIwcHg7YmFja2dyb3VuZDpyZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpO2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSk7Ym90dG9tOjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7bGVmdDowO29wYWNpdHk6MSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MDtwb2ludGVyLWV2ZW50czpub25lfS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAuYnRuLXVwbG9hZC1maWxlLm9uLXByb2dyZXNzIGl7b3BhY2l0eTouMjtiYWNrZ3JvdW5kOnJnYmEodmFyKC0tdnMtc3VjY2VzcyksMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgNXB4IDE3cHggMCByZ2JhKDAsMCwwLC4xNSk7Ym94LXNoYWRvdzowIDVweCAxN3B4IDAgcmdiYSgwLDAsMCwuMTUpO3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMS4yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMS4yKTtwYWRkaW5nOjIwcHh9LmNvbi1pbWctdXBsb2FkIC5pbWctdXBsb2FkIC5idG4tdXBsb2FkLWZpbGUub24tcHJvZ3Jlc3Mgc3Bhbnstd2Via2l0LXRyYW5zaXRpb246YWxsIC41cyBlYXNlO3RyYW5zaXRpb246YWxsIC41cyBlYXNlO29wYWNpdHk6MTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxcmVtO3Bvc2l0aW9uOmFic29sdXRlO3RvcDpjYWxjKDUwJSArIDQwcHgpO2xlZnQ6MDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlO3RleHQtc2hhZG93OjAgM3B4IDE1cHggcmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKTtmb250LXdlaWdodDo3MDA7ei1pbmRleDozMDA7ZGlzcGxheTpibG9jazstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAuYnRuLXVwbG9hZC1maWxlLnJlYWR5LXByb2dyZXNze2JvcmRlci10b3A6MCBzb2xpZCByZ2JhKHZhcigtLXZzLXN1Y2Nlc3MpLDEpO2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwuNSl9LmNvbi1pbWctdXBsb2FkIC5pbWctdXBsb2FkIC5idG4tdXBsb2FkLWZpbGUucmVhZHktcHJvZ3Jlc3Mgc3Bhbnt6LWluZGV4OjEwOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoLjUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHNjYWxlKC41KTt0b3A6Y2FsYyg1MCUgKyAyMHB4KTtvcGFjaXR5OjB9LmNvbi1pbWctdXBsb2FkIC5pbWctdXBsb2FkIC5idG4tdXBsb2FkLWZpbGUucmVhZHktcHJvZ3Jlc3M6YWZ0ZXJ7b3BhY2l0eTowfS5jb24taW1nLXVwbG9hZCAuaW1nLXVwbG9hZCAuYnRuLXVwbG9hZC1maWxlLnJlYWR5LXByb2dyZXNzIGl7b3BhY2l0eToxO2JhY2tncm91bmQ6cmdiYSh2YXIoLS12cy1zdWNjZXNzKSwxKTstd2Via2l0LWJveC1zaGFkb3c6MCA1cHggMTdweCAwIHJnYmEoMCwwLDAsLjE1KTtib3gtc2hhZG93OjAgNXB4IDE3cHggMCByZ2JhKDAsMCwwLC4xNSk7dG9wOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgxKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMSk7cGFkZGluZzoxMHB4fS51cGxvYWQtZW50ZXItYWN0aXZley13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjdzIGVhc2UhaW1wb3J0YW50O3RyYW5zaXRpb246YWxsIC43cyBlYXNlIWltcG9ydGFudDstd2Via2l0LWFuaW1hdGlvbjppbWFnZVJlYm91bmQgLjdzIGVhc2UhaW1wb3J0YW50O2FuaW1hdGlvbjppbWFnZVJlYm91bmQgLjdzIGVhc2UhaW1wb3J0YW50fS52aWV3LXVwbG9hZC1lbnRlci1hY3RpdmUsLnZpZXctdXBsb2FkLWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuNXM7dHJhbnNpdGlvbjpvcGFjaXR5IC41c30udmlldy11cGxvYWQtZW50ZXIsLnZpZXctdXBsb2FkLWxlYXZlLXRve29wYWNpdHk6MH0udmlldy11cGxvYWQtZW50ZXIgaW1nLC52aWV3LXVwbG9hZC1sZWF2ZS10byBpbWd7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjQpO3RyYW5zZm9ybTpzY2FsZSguNCl9LnZpZXctdXBsb2Fke3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDt6LWluZGV4OjE1MDAwO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zKTt0b3A6MDtwYWRkaW5nOjIwcHg7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52aWV3LXVwbG9hZCBpbWd7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTtib3JkZXItcmFkaXVzOjEwcHg7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztsZWZ0OjA7dG9wOjA7cmlnaHQ6MDtib3R0b206MDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCU7bWFyZ2luOmF1dG87LXdlYmtpdC1hbmltYXRpb246aW1hZ2VSZWJvdW5kIC43cyBlYXNlIWltcG9ydGFudDthbmltYXRpb246aW1hZ2VSZWJvdW5kIC43cyBlYXNlIWltcG9ydGFudDstd2Via2l0LWJveC1zaGFkb3c6MCA4cHggMzBweCAwIHJnYmEoMCwwLDAsLjI1KTtib3gtc2hhZG93OjAgOHB4IDMwcHggMCByZ2JhKDAsMCwwLC4yNSk7YmFja2dyb3VuZDojZmZmfUAtd2Via2l0LWtleWZyYW1lcyBpbWFnZVJlYm91bmR7MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjQpO3RyYW5zZm9ybTpzY2FsZSguNCk7Ym9yZGVyLXJhZGl1czozMCU7cG9pbnRlci1ldmVudHM6bm9uZX00MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4wMyk7dHJhbnNmb3JtOnNjYWxlKDEuMDMpO2JvcmRlci1yYWRpdXM6MTRweDtwb2ludGVyLWV2ZW50czpub25lfTcwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguOTgpO3RyYW5zZm9ybTpzY2FsZSguOTgpO2JvcmRlci1yYWRpdXM6MThweDtwb2ludGVyLWV2ZW50czpub25lfXRvey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKTtib3JkZXItcmFkaXVzOjEwcHg7cG9pbnRlci1ldmVudHM6bm9uZX19QGtleWZyYW1lcyBpbWFnZVJlYm91bmR7MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjQpO3RyYW5zZm9ybTpzY2FsZSguNCk7Ym9yZGVyLXJhZGl1czozMCU7cG9pbnRlci1ldmVudHM6bm9uZX00MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4wMyk7dHJhbnNmb3JtOnNjYWxlKDEuMDMpO2JvcmRlci1yYWRpdXM6MTRweDtwb2ludGVyLWV2ZW50czpub25lfTcwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguOTgpO3RyYW5zZm9ybTpzY2FsZSguOTgpO2JvcmRlci1yYWRpdXM6MThweDtwb2ludGVyLWV2ZW50czpub25lfXRvey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKTtib3JkZXItcmFkaXVzOjEwcHg7cG9pbnRlci1ldmVudHM6bm9uZX19QC13ZWJraXQta2V5ZnJhbWVzIGNpcmNsZXswJXt3aWR0aDowO2hlaWdodDowfXRve3dpZHRoOjIzMHB4O2hlaWdodDoyMzBweDtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgY2lyY2xlezAle3dpZHRoOjA7aGVpZ2h0OjB9dG97d2lkdGg6MjMwcHg7aGVpZ2h0OjIzMHB4O29wYWNpdHk6MH19XCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vuesax/dist/vuesax.css\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/iconfont.css":
/*!*************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2!./src/assets/css/iconfont.css ***!
  \*************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var escape = __webpack_require__(/*! ../../../node_modules/css-loader/lib/url/escape.js */ \"./node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"@font-face {\\n  font-family: \\\"feather\\\";\\n\\n  src: url(\" + escape(__webpack_require__(/*! ../fonts/feather.eot?t=1525787366991 */ \"./src/assets/fonts/feather.eot?t=1525787366991\")) + \"); /* IE9 */\\n\\n  src: url(\" + escape(__webpack_require__(/*! ../fonts/feather.eot?t=1525787366991 */ \"./src/assets/fonts/feather.eot?t=1525787366991\")) + \"#iefix) format('embedded-opentype'),  url(\" + escape(__webpack_require__(/*! ../fonts/feather.woff?t=1525787366991 */ \"./src/assets/fonts/feather.woff?t=1525787366991\")) + \") format('woff'),  url(\" + escape(__webpack_require__(/*! ../fonts/feather.ttf?t=1525787366991 */ \"./src/assets/fonts/feather.ttf?t=1525787366991\")) + \") format('truetype'),  url(\" + escape(__webpack_require__(/*! ../fonts/feather.svg?t=1525787366991 */ \"./src/assets/fonts/feather.svg?t=1525787366991\")) + \"#feather) format('svg'); /* iOS 4.1- */\\n}\\n\\n.feather {\\n  /* use !important to prevent issues with browser extensions that change fonts */\\n  font-family: 'feather', sans-serif !important;\\n  speak: none;\\n  font-style: normal;\\n  font-weight: normal;\\n  font-variant: normal;\\n  text-transform: none;\\n  line-height: 1;\\n  /* Better Font Rendering =========== */\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.icon-alert-octagon:before {\\n  content: \\\"\\\\E81B\\\";\\n}\\n\\n.icon-alert-circle:before {\\n  content: \\\"\\\\E81C\\\";\\n}\\n\\n.icon-activity:before {\\n  content: \\\"\\\\E81D\\\";\\n}\\n\\n.icon-alert-triangle:before {\\n  content: \\\"\\\\E81E\\\";\\n}\\n\\n.icon-align-center:before {\\n  content: \\\"\\\\E81F\\\";\\n}\\n\\n.icon-airplay:before {\\n  content: \\\"\\\\E820\\\";\\n}\\n\\n.icon-align-justify:before {\\n  content: \\\"\\\\E821\\\";\\n}\\n\\n.icon-align-left:before {\\n  content: \\\"\\\\E822\\\";\\n}\\n\\n.icon-align-right:before {\\n  content: \\\"\\\\E823\\\";\\n}\\n\\n.icon-arrow-down-left:before {\\n  content: \\\"\\\\E824\\\";\\n}\\n\\n.icon-arrow-down-right:before {\\n  content: \\\"\\\\E825\\\";\\n}\\n\\n.icon-anchor:before {\\n  content: \\\"\\\\E826\\\";\\n}\\n\\n.icon-aperture:before {\\n  content: \\\"\\\\E827\\\";\\n}\\n\\n.icon-arrow-left:before {\\n  content: \\\"\\\\E828\\\";\\n}\\n\\n.icon-arrow-right:before {\\n  content: \\\"\\\\E829\\\";\\n}\\n\\n.icon-arrow-down:before {\\n  content: \\\"\\\\E82A\\\";\\n}\\n\\n.icon-arrow-up-left:before {\\n  content: \\\"\\\\E82B\\\";\\n}\\n\\n.icon-arrow-up-right:before {\\n  content: \\\"\\\\E82C\\\";\\n}\\n\\n.icon-arrow-up:before {\\n  content: \\\"\\\\E82D\\\";\\n}\\n\\n.icon-award:before {\\n  content: \\\"\\\\E82E\\\";\\n}\\n\\n.icon-bar-chart:before {\\n  content: \\\"\\\\E82F\\\";\\n}\\n\\n.icon-at-sign:before {\\n  content: \\\"\\\\E830\\\";\\n}\\n\\n.icon-bar-chart-2:before {\\n  content: \\\"\\\\E831\\\";\\n}\\n\\n.icon-battery-charging:before {\\n  content: \\\"\\\\E832\\\";\\n}\\n\\n.icon-bell-off:before {\\n  content: \\\"\\\\E833\\\";\\n}\\n\\n.icon-battery:before {\\n  content: \\\"\\\\E834\\\";\\n}\\n\\n.icon-bluetooth:before {\\n  content: \\\"\\\\E835\\\";\\n}\\n\\n.icon-bell:before {\\n  content: \\\"\\\\E836\\\";\\n}\\n\\n.icon-book:before {\\n  content: \\\"\\\\E837\\\";\\n}\\n\\n.icon-briefcase:before {\\n  content: \\\"\\\\E838\\\";\\n}\\n\\n.icon-camera-off:before {\\n  content: \\\"\\\\E839\\\";\\n}\\n\\n.icon-calendar:before {\\n  content: \\\"\\\\E83A\\\";\\n}\\n\\n.icon-bookmark:before {\\n  content: \\\"\\\\E83B\\\";\\n}\\n\\n.icon-box:before {\\n  content: \\\"\\\\E83C\\\";\\n}\\n\\n.icon-camera:before {\\n  content: \\\"\\\\E83D\\\";\\n}\\n\\n.icon-check-circle:before {\\n  content: \\\"\\\\E83E\\\";\\n}\\n\\n.icon-check:before {\\n  content: \\\"\\\\E83F\\\";\\n}\\n\\n.icon-check-square:before {\\n  content: \\\"\\\\E840\\\";\\n}\\n\\n.icon-cast:before {\\n  content: \\\"\\\\E841\\\";\\n}\\n\\n.icon-chevron-down:before {\\n  content: \\\"\\\\E842\\\";\\n}\\n\\n.icon-chevron-left:before {\\n  content: \\\"\\\\E843\\\";\\n}\\n\\n.icon-chevron-right:before {\\n  content: \\\"\\\\E844\\\";\\n}\\n\\n.icon-chevron-up:before {\\n  content: \\\"\\\\E845\\\";\\n}\\n\\n.icon-chevrons-down:before {\\n  content: \\\"\\\\E846\\\";\\n}\\n\\n.icon-chevrons-right:before {\\n  content: \\\"\\\\E847\\\";\\n}\\n\\n.icon-chevrons-up:before {\\n  content: \\\"\\\\E848\\\";\\n}\\n\\n.icon-chevrons-left:before {\\n  content: \\\"\\\\E849\\\";\\n}\\n\\n.icon-circle:before {\\n  content: \\\"\\\\E84A\\\";\\n}\\n\\n.icon-clipboard:before {\\n  content: \\\"\\\\E84B\\\";\\n}\\n\\n.icon-chrome:before {\\n  content: \\\"\\\\E84C\\\";\\n}\\n\\n.icon-clock:before {\\n  content: \\\"\\\\E84D\\\";\\n}\\n\\n.icon-cloud-lightning:before {\\n  content: \\\"\\\\E84E\\\";\\n}\\n\\n.icon-cloud-drizzle:before {\\n  content: \\\"\\\\E84F\\\";\\n}\\n\\n.icon-cloud-rain:before {\\n  content: \\\"\\\\E850\\\";\\n}\\n\\n.icon-cloud-off:before {\\n  content: \\\"\\\\E851\\\";\\n}\\n\\n.icon-codepen:before {\\n  content: \\\"\\\\E852\\\";\\n}\\n\\n.icon-cloud-snow:before {\\n  content: \\\"\\\\E853\\\";\\n}\\n\\n.icon-compass:before {\\n  content: \\\"\\\\E854\\\";\\n}\\n\\n.icon-copy:before {\\n  content: \\\"\\\\E855\\\";\\n}\\n\\n.icon-corner-down-right:before {\\n  content: \\\"\\\\E856\\\";\\n}\\n\\n.icon-corner-down-left:before {\\n  content: \\\"\\\\E857\\\";\\n}\\n\\n.icon-corner-left-down:before {\\n  content: \\\"\\\\E858\\\";\\n}\\n\\n.icon-corner-left-up:before {\\n  content: \\\"\\\\E859\\\";\\n}\\n\\n.icon-corner-up-left:before {\\n  content: \\\"\\\\E85A\\\";\\n}\\n\\n.icon-corner-up-right:before {\\n  content: \\\"\\\\E85B\\\";\\n}\\n\\n.icon-corner-right-down:before {\\n  content: \\\"\\\\E85C\\\";\\n}\\n\\n.icon-corner-right-up:before {\\n  content: \\\"\\\\E85D\\\";\\n}\\n\\n.icon-cpu:before {\\n  content: \\\"\\\\E85E\\\";\\n}\\n\\n.icon-credit-card:before {\\n  content: \\\"\\\\E85F\\\";\\n}\\n\\n.icon-crosshair:before {\\n  content: \\\"\\\\E860\\\";\\n}\\n\\n.icon-disc:before {\\n  content: \\\"\\\\E861\\\";\\n}\\n\\n.icon-delete:before {\\n  content: \\\"\\\\E862\\\";\\n}\\n\\n.icon-download-cloud:before {\\n  content: \\\"\\\\E863\\\";\\n}\\n\\n.icon-download:before {\\n  content: \\\"\\\\E864\\\";\\n}\\n\\n.icon-droplet:before {\\n  content: \\\"\\\\E865\\\";\\n}\\n\\n.icon-edit-2:before {\\n  content: \\\"\\\\E866\\\";\\n}\\n\\n.icon-edit:before {\\n  content: \\\"\\\\E867\\\";\\n}\\n\\n.icon-edit-1:before {\\n  content: \\\"\\\\E868\\\";\\n}\\n\\n.icon-external-link:before {\\n  content: \\\"\\\\E869\\\";\\n}\\n\\n.icon-eye:before {\\n  content: \\\"\\\\E86A\\\";\\n}\\n\\n.icon-feather:before {\\n  content: \\\"\\\\E86B\\\";\\n}\\n\\n.icon-facebook:before {\\n  content: \\\"\\\\E86C\\\";\\n}\\n\\n.icon-file-minus:before {\\n  content: \\\"\\\\E86D\\\";\\n}\\n\\n.icon-eye-off:before {\\n  content: \\\"\\\\E86E\\\";\\n}\\n\\n.icon-fast-forward:before {\\n  content: \\\"\\\\E86F\\\";\\n}\\n\\n.icon-file-text:before {\\n  content: \\\"\\\\E870\\\";\\n}\\n\\n.icon-film:before {\\n  content: \\\"\\\\E871\\\";\\n}\\n\\n.icon-file:before {\\n  content: \\\"\\\\E872\\\";\\n}\\n\\n.icon-file-plus:before {\\n  content: \\\"\\\\E873\\\";\\n}\\n\\n.icon-folder:before {\\n  content: \\\"\\\\E874\\\";\\n}\\n\\n.icon-filter:before {\\n  content: \\\"\\\\E875\\\";\\n}\\n\\n.icon-flag:before {\\n  content: \\\"\\\\E876\\\";\\n}\\n\\n.icon-globe:before {\\n  content: \\\"\\\\E877\\\";\\n}\\n\\n.icon-grid:before {\\n  content: \\\"\\\\E878\\\";\\n}\\n\\n.icon-heart:before {\\n  content: \\\"\\\\E879\\\";\\n}\\n\\n.icon-home:before {\\n  content: \\\"\\\\E87A\\\";\\n}\\n\\n.icon-github:before {\\n  content: \\\"\\\\E87B\\\";\\n}\\n\\n.icon-image:before {\\n  content: \\\"\\\\E87C\\\";\\n}\\n\\n.icon-inbox:before {\\n  content: \\\"\\\\E87D\\\";\\n}\\n\\n.icon-layers:before {\\n  content: \\\"\\\\E87E\\\";\\n}\\n\\n.icon-info:before {\\n  content: \\\"\\\\E87F\\\";\\n}\\n\\n.icon-instagram:before {\\n  content: \\\"\\\\E880\\\";\\n}\\n\\n.icon-layout:before {\\n  content: \\\"\\\\E881\\\";\\n}\\n\\n.icon-link-2:before {\\n  content: \\\"\\\\E882\\\";\\n}\\n\\n.icon-life-buoy:before {\\n  content: \\\"\\\\E883\\\";\\n}\\n\\n.icon-link:before {\\n  content: \\\"\\\\E884\\\";\\n}\\n\\n.icon-log-in:before {\\n  content: \\\"\\\\E885\\\";\\n}\\n\\n.icon-list:before {\\n  content: \\\"\\\\E886\\\";\\n}\\n\\n.icon-lock:before {\\n  content: \\\"\\\\E887\\\";\\n}\\n\\n.icon-log-out:before {\\n  content: \\\"\\\\E888\\\";\\n}\\n\\n.icon-loader:before {\\n  content: \\\"\\\\E889\\\";\\n}\\n\\n.icon-mail:before {\\n  content: \\\"\\\\E88A\\\";\\n}\\n\\n.icon-maximize-2:before {\\n  content: \\\"\\\\E88B\\\";\\n}\\n\\n.icon-map:before {\\n  content: \\\"\\\\E88C\\\";\\n}\\n\\n.icon-map-pin:before {\\n  content: \\\"\\\\E88E\\\";\\n}\\n\\n.icon-menu:before {\\n  content: \\\"\\\\E88F\\\";\\n}\\n\\n.icon-message-circle:before {\\n  content: \\\"\\\\E890\\\";\\n}\\n\\n.icon-message-square:before {\\n  content: \\\"\\\\E891\\\";\\n}\\n\\n.icon-minimize-2:before {\\n  content: \\\"\\\\E892\\\";\\n}\\n\\n.icon-mic-off:before {\\n  content: \\\"\\\\E893\\\";\\n}\\n\\n.icon-minus-circle:before {\\n  content: \\\"\\\\E894\\\";\\n}\\n\\n.icon-mic:before {\\n  content: \\\"\\\\E895\\\";\\n}\\n\\n.icon-minus-square:before {\\n  content: \\\"\\\\E896\\\";\\n}\\n\\n.icon-minus:before {\\n  content: \\\"\\\\E897\\\";\\n}\\n\\n.icon-moon:before {\\n  content: \\\"\\\\E898\\\";\\n}\\n\\n.icon-monitor:before {\\n  content: \\\"\\\\E899\\\";\\n}\\n\\n.icon-more-vertical:before {\\n  content: \\\"\\\\E89A\\\";\\n}\\n\\n.icon-more-horizontal:before {\\n  content: \\\"\\\\E89B\\\";\\n}\\n\\n.icon-move:before {\\n  content: \\\"\\\\E89C\\\";\\n}\\n\\n.icon-music:before {\\n  content: \\\"\\\\E89D\\\";\\n}\\n\\n.icon-navigation-2:before {\\n  content: \\\"\\\\E89E\\\";\\n}\\n\\n.icon-navigation:before {\\n  content: \\\"\\\\E89F\\\";\\n}\\n\\n.icon-octagon:before {\\n  content: \\\"\\\\E8A0\\\";\\n}\\n\\n.icon-package:before {\\n  content: \\\"\\\\E8A1\\\";\\n}\\n\\n.icon-pause-circle:before {\\n  content: \\\"\\\\E8A2\\\";\\n}\\n\\n.icon-pause:before {\\n  content: \\\"\\\\E8A3\\\";\\n}\\n\\n.icon-percent:before {\\n  content: \\\"\\\\E8A4\\\";\\n}\\n\\n.icon-phone-call:before {\\n  content: \\\"\\\\E8A5\\\";\\n}\\n\\n.icon-phone-forwarded:before {\\n  content: \\\"\\\\E8A6\\\";\\n}\\n\\n.icon-phone-missed:before {\\n  content: \\\"\\\\E8A7\\\";\\n}\\n\\n.icon-phone-off:before {\\n  content: \\\"\\\\E8A8\\\";\\n}\\n\\n.icon-phone-incoming:before {\\n  content: \\\"\\\\E8A9\\\";\\n}\\n\\n.icon-phone:before {\\n  content: \\\"\\\\E8AA\\\";\\n}\\n\\n.icon-phone-outgoing:before {\\n  content: \\\"\\\\E8AB\\\";\\n}\\n\\n.icon-pie-chart:before {\\n  content: \\\"\\\\E8AC\\\";\\n}\\n\\n.icon-play-circle:before {\\n  content: \\\"\\\\E8AD\\\";\\n}\\n\\n.icon-play:before {\\n  content: \\\"\\\\E8AE\\\";\\n}\\n\\n.icon-plus-square:before {\\n  content: \\\"\\\\E8AF\\\";\\n}\\n\\n.icon-plus-circle:before {\\n  content: \\\"\\\\E8B0\\\";\\n}\\n\\n.icon-plus:before {\\n  content: \\\"\\\\E8B1\\\";\\n}\\n\\n.icon-pocket:before {\\n  content: \\\"\\\\E8B2\\\";\\n}\\n\\n.icon-printer:before {\\n  content: \\\"\\\\E8B3\\\";\\n}\\n\\n.icon-power:before {\\n  content: \\\"\\\\E8B4\\\";\\n}\\n\\n.icon-radio:before {\\n  content: \\\"\\\\E8B5\\\";\\n}\\n\\n.icon-repeat:before {\\n  content: \\\"\\\\E8B6\\\";\\n}\\n\\n.icon-refresh-ccw:before {\\n  content: \\\"\\\\E8B7\\\";\\n}\\n\\n.icon-rewind:before {\\n  content: \\\"\\\\E8B8\\\";\\n}\\n\\n.icon-rotate-ccw:before {\\n  content: \\\"\\\\E8B9\\\";\\n}\\n\\n.icon-refresh-cw:before {\\n  content: \\\"\\\\E8BA\\\";\\n}\\n\\n.icon-rotate-cw:before {\\n  content: \\\"\\\\E8BB\\\";\\n}\\n\\n.icon-save:before {\\n  content: \\\"\\\\E8BC\\\";\\n}\\n\\n.icon-search:before {\\n  content: \\\"\\\\E8BD\\\";\\n}\\n\\n.icon-server:before {\\n  content: \\\"\\\\E8BE\\\";\\n}\\n\\n.icon-scissors:before {\\n  content: \\\"\\\\E8BF\\\";\\n}\\n\\n.icon-share-2:before {\\n  content: \\\"\\\\E8C0\\\";\\n}\\n\\n.icon-share:before {\\n  content: \\\"\\\\E8C1\\\";\\n}\\n\\n.icon-shield:before {\\n  content: \\\"\\\\E8C2\\\";\\n}\\n\\n.icon-settings:before {\\n  content: \\\"\\\\E8C3\\\";\\n}\\n\\n.icon-skip-back:before {\\n  content: \\\"\\\\E8C4\\\";\\n}\\n\\n.icon-shuffle:before {\\n  content: \\\"\\\\E8C5\\\";\\n}\\n\\n.icon-sidebar:before {\\n  content: \\\"\\\\E8C6\\\";\\n}\\n\\n.icon-skip-forward:before {\\n  content: \\\"\\\\E8C7\\\";\\n}\\n\\n.icon-slack:before {\\n  content: \\\"\\\\E8C8\\\";\\n}\\n\\n.icon-slash:before {\\n  content: \\\"\\\\E8C9\\\";\\n}\\n\\n.icon-smartphone:before {\\n  content: \\\"\\\\E8CA\\\";\\n}\\n\\n.icon-square:before {\\n  content: \\\"\\\\E8CB\\\";\\n}\\n\\n.icon-speaker:before {\\n  content: \\\"\\\\E8CC\\\";\\n}\\n\\n.icon-star:before {\\n  content: \\\"\\\\E8CD\\\";\\n}\\n\\n.icon-stop-circle:before {\\n  content: \\\"\\\\E8CE\\\";\\n}\\n\\n.icon-sun:before {\\n  content: \\\"\\\\E8CF\\\";\\n}\\n\\n.icon-sunrise:before {\\n  content: \\\"\\\\E8D0\\\";\\n}\\n\\n.icon-tablet:before {\\n  content: \\\"\\\\E8D1\\\";\\n}\\n\\n.icon-tag:before {\\n  content: \\\"\\\\E8D2\\\";\\n}\\n\\n.icon-sunset:before {\\n  content: \\\"\\\\E8D3\\\";\\n}\\n\\n.icon-target:before {\\n  content: \\\"\\\\E8D4\\\";\\n}\\n\\n.icon-thermometer:before {\\n  content: \\\"\\\\E8D5\\\";\\n}\\n\\n.icon-thumbs-up:before {\\n  content: \\\"\\\\E8D6\\\";\\n}\\n\\n.icon-thumbs-down:before {\\n  content: \\\"\\\\E8D7\\\";\\n}\\n\\n.icon-toggle-left:before {\\n  content: \\\"\\\\E8D8\\\";\\n}\\n\\n.icon-toggle-right:before {\\n  content: \\\"\\\\E8D9\\\";\\n}\\n\\n.icon-trash-2:before {\\n  content: \\\"\\\\E8DA\\\";\\n}\\n\\n.icon-trash:before {\\n  content: \\\"\\\\E8DB\\\";\\n}\\n\\n.icon-trending-up:before {\\n  content: \\\"\\\\E8DC\\\";\\n}\\n\\n.icon-trending-down:before {\\n  content: \\\"\\\\E8DD\\\";\\n}\\n\\n.icon-triangle:before {\\n  content: \\\"\\\\E8DE\\\";\\n}\\n\\n.icon-type:before {\\n  content: \\\"\\\\E8DF\\\";\\n}\\n\\n.icon-twitter:before {\\n  content: \\\"\\\\E8E0\\\";\\n}\\n\\n.icon-upload:before {\\n  content: \\\"\\\\E8E1\\\";\\n}\\n\\n.icon-umbrella:before {\\n  content: \\\"\\\\E8E2\\\";\\n}\\n\\n.icon-upload-cloud:before {\\n  content: \\\"\\\\E8E3\\\";\\n}\\n\\n.icon-unlock:before {\\n  content: \\\"\\\\E8E4\\\";\\n}\\n\\n.icon-user-check:before {\\n  content: \\\"\\\\E8E5\\\";\\n}\\n\\n.icon-user-minus:before {\\n  content: \\\"\\\\E8E6\\\";\\n}\\n\\n.icon-user-plus:before {\\n  content: \\\"\\\\E8E7\\\";\\n}\\n\\n.icon-user-x:before {\\n  content: \\\"\\\\E8E8\\\";\\n}\\n\\n.icon-user:before {\\n  content: \\\"\\\\E8E9\\\";\\n}\\n\\n.icon-users:before {\\n  content: \\\"\\\\E8EA\\\";\\n}\\n\\n.icon-video-off:before {\\n  content: \\\"\\\\E8EB\\\";\\n}\\n\\n.icon-video:before {\\n  content: \\\"\\\\E8EC\\\";\\n}\\n\\n.icon-voicemail:before {\\n  content: \\\"\\\\E8ED\\\";\\n}\\n\\n.icon-volume-x:before {\\n  content: \\\"\\\\E8EE\\\";\\n}\\n\\n.icon-volume-2:before {\\n  content: \\\"\\\\E8EF\\\";\\n}\\n\\n.icon-volume-1:before {\\n  content: \\\"\\\\E8F0\\\";\\n}\\n\\n.icon-volume:before {\\n  content: \\\"\\\\E8F1\\\";\\n}\\n\\n.icon-watch:before {\\n  content: \\\"\\\\E8F2\\\";\\n}\\n\\n.icon-wifi:before {\\n  content: \\\"\\\\E8F3\\\";\\n}\\n\\n.icon-x-square:before {\\n  content: \\\"\\\\E8F4\\\";\\n}\\n\\n.icon-wind:before {\\n  content: \\\"\\\\E8F5\\\";\\n}\\n\\n.icon-x:before {\\n  content: \\\"\\\\E8F6\\\";\\n}\\n\\n.icon-x-circle:before {\\n  content: \\\"\\\\E8F7\\\";\\n}\\n\\n.icon-zap:before {\\n  content: \\\"\\\\E8F8\\\";\\n}\\n\\n.icon-zoom-in:before {\\n  content: \\\"\\\\E8F9\\\";\\n}\\n\\n.icon-zoom-out:before {\\n  content: \\\"\\\\E8FA\\\";\\n}\\n\\n.icon-command:before {\\n  content: \\\"\\\\E8FB\\\";\\n}\\n\\n.icon-cloud:before {\\n  content: \\\"\\\\E8FC\\\";\\n}\\n\\n.icon-hash:before {\\n  content: \\\"\\\\E8FD\\\";\\n}\\n\\n.icon-headphones:before {\\n  content: \\\"\\\\E8FE\\\";\\n}\\n\\n.icon-underline:before {\\n  content: \\\"\\\\E8FF\\\";\\n}\\n\\n.icon-italic:before {\\n  content: \\\"\\\\E900\\\";\\n}\\n\\n.icon-bold:before {\\n  content: \\\"\\\\E901\\\";\\n}\\n\\n.icon-crop:before {\\n  content: \\\"\\\\E902\\\";\\n}\\n\\n.icon-help-circle:before {\\n  content: \\\"\\\\E903\\\";\\n}\\n\\n.icon-paperclip:before {\\n  content: \\\"\\\\E904\\\";\\n}\\n\\n.icon-shopping-cart:before {\\n  content: \\\"\\\\E905\\\";\\n}\\n\\n.icon-tv:before {\\n  content: \\\"\\\\E906\\\";\\n}\\n\\n.icon-wifi-off:before {\\n  content: \\\"\\\\E907\\\";\\n}\\n\\n.icon-minimize:before {\\n  content: \\\"\\\\E88D\\\";\\n}\\n\\n.icon-maximize:before {\\n  content: \\\"\\\\E908\\\";\\n}\\n\\n.icon-gitlab:before {\\n  content: \\\"\\\\E909\\\";\\n}\\n\\n.icon-sliders:before {\\n  content: \\\"\\\\E90A\\\";\\n}\\n\\n.icon-star-on:before {\\n  content: \\\"\\\\E90B\\\";\\n}\\n\\n.icon-heart-on:before {\\n  content: \\\"\\\\E90C\\\";\\n}\\n\\n.icon-archive:before {\\n  content: \\\"\\\\E90D\\\";\\n}\\n\\n.icon-arrow-down-circle:before {\\n  content: \\\"\\\\E90E\\\";\\n}\\n\\n.icon-arrow-up-circle:before {\\n  content: \\\"\\\\E90F\\\";\\n}\\n\\n.icon-arrow-left-circle:before {\\n  content: \\\"\\\\E910\\\";\\n}\\n\\n.icon-arrow-right-circle:before {\\n  content: \\\"\\\\E911\\\";\\n}\\n\\n.icon-bar-chart-line-:before {\\n  content: \\\"\\\\E912\\\";\\n}\\n\\n.icon-bar-chart-line:before {\\n  content: \\\"\\\\E913\\\";\\n}\\n\\n.icon-book-open:before {\\n  content: \\\"\\\\E914\\\";\\n}\\n\\n.icon-code:before {\\n  content: \\\"\\\\E915\\\";\\n}\\n\\n.icon-database:before {\\n  content: \\\"\\\\E916\\\";\\n}\\n\\n.icon-dollar-sign:before {\\n  content: \\\"\\\\E917\\\";\\n}\\n\\n.icon-folder-plus:before {\\n  content: \\\"\\\\E918\\\";\\n}\\n\\n.icon-gift:before {\\n  content: \\\"\\\\E919\\\";\\n}\\n\\n.icon-folder-minus:before {\\n  content: \\\"\\\\E91A\\\";\\n}\\n\\n.icon-git-commit:before {\\n  content: \\\"\\\\E91B\\\";\\n}\\n\\n.icon-git-branch:before {\\n  content: \\\"\\\\E91C\\\";\\n}\\n\\n.icon-git-pull-request:before {\\n  content: \\\"\\\\E91D\\\";\\n}\\n\\n.icon-git-merge:before {\\n  content: \\\"\\\\E91E\\\";\\n}\\n\\n.icon-linkedin:before {\\n  content: \\\"\\\\E91F\\\";\\n}\\n\\n.icon-hard-drive:before {\\n  content: \\\"\\\\E920\\\";\\n}\\n\\n.icon-more-vertical-:before {\\n  content: \\\"\\\\E921\\\";\\n}\\n\\n.icon-more-horizontal-:before {\\n  content: \\\"\\\\E922\\\";\\n}\\n\\n.icon-rss:before {\\n  content: \\\"\\\\E923\\\";\\n}\\n\\n.icon-send:before {\\n  content: \\\"\\\\E924\\\";\\n}\\n\\n.icon-shield-off:before {\\n  content: \\\"\\\\E925\\\";\\n}\\n\\n.icon-shopping-bag:before {\\n  content: \\\"\\\\E926\\\";\\n}\\n\\n.icon-terminal:before {\\n  content: \\\"\\\\E927\\\";\\n}\\n\\n.icon-truck:before {\\n  content: \\\"\\\\E928\\\";\\n}\\n\\n.icon-zap-off:before {\\n  content: \\\"\\\\E929\\\";\\n}\\n\\n.icon-youtube:before {\\n  content: \\\"\\\\E92A\\\";\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL3NyYy9hc3NldHMvY3NzL2ljb25mb250LmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvY3NzL2ljb25mb250LmNzcz8wMjRiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBlc2NhcGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL3VybC9lc2NhcGUuanNcIik7XG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6IFxcXCJmZWF0aGVyXFxcIjtcXG5cXG4gIHNyYzogdXJsKFwiICsgZXNjYXBlKHJlcXVpcmUoXCIuLi9mb250cy9mZWF0aGVyLmVvdD90PTE1MjU3ODczNjY5OTFcIikpICsgXCIpOyAvKiBJRTkgKi9cXG5cXG4gIHNyYzogdXJsKFwiICsgZXNjYXBlKHJlcXVpcmUoXCIuLi9mb250cy9mZWF0aGVyLmVvdD90PTE1MjU3ODczNjY5OTFcIikpICsgXCIjaWVmaXgpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwgIHVybChcIiArIGVzY2FwZShyZXF1aXJlKFwiLi4vZm9udHMvZmVhdGhlci53b2ZmP3Q9MTUyNTc4NzM2Njk5MVwiKSkgKyBcIikgZm9ybWF0KCd3b2ZmJyksICB1cmwoXCIgKyBlc2NhcGUocmVxdWlyZShcIi4uL2ZvbnRzL2ZlYXRoZXIudHRmP3Q9MTUyNTc4NzM2Njk5MVwiKSkgKyBcIikgZm9ybWF0KCd0cnVldHlwZScpLCAgdXJsKFwiICsgZXNjYXBlKHJlcXVpcmUoXCIuLi9mb250cy9mZWF0aGVyLnN2Zz90PTE1MjU3ODczNjY5OTFcIikpICsgXCIjZmVhdGhlcikgZm9ybWF0KCdzdmcnKTsgLyogaU9TIDQuMS0gKi9cXG59XFxuXFxuLmZlYXRoZXIge1xcbiAgLyogdXNlICFpbXBvcnRhbnQgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBicm93c2VyIGV4dGVuc2lvbnMgdGhhdCBjaGFuZ2UgZm9udHMgKi9cXG4gIGZvbnQtZmFtaWx5OiAnZmVhdGhlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcXG4gIHNwZWFrOiBub25lO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxuICBsaW5lLWhlaWdodDogMTtcXG4gIC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqL1xcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xcbn1cXG5cXG4uaWNvbi1hbGVydC1vY3RhZ29uOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MUJcXFwiO1xcbn1cXG5cXG4uaWNvbi1hbGVydC1jaXJjbGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTgxQ1xcXCI7XFxufVxcblxcbi5pY29uLWFjdGl2aXR5OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MURcXFwiO1xcbn1cXG5cXG4uaWNvbi1hbGVydC10cmlhbmdsZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODFFXFxcIjtcXG59XFxuXFxuLmljb24tYWxpZ24tY2VudGVyOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MUZcXFwiO1xcbn1cXG5cXG4uaWNvbi1haXJwbGF5OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MjBcXFwiO1xcbn1cXG5cXG4uaWNvbi1hbGlnbi1qdXN0aWZ5OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MjFcXFwiO1xcbn1cXG5cXG4uaWNvbi1hbGlnbi1sZWZ0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MjJcXFwiO1xcbn1cXG5cXG4uaWNvbi1hbGlnbi1yaWdodDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODIzXFxcIjtcXG59XFxuXFxuLmljb24tYXJyb3ctZG93bi1sZWZ0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MjRcXFwiO1xcbn1cXG5cXG4uaWNvbi1hcnJvdy1kb3duLXJpZ2h0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MjVcXFwiO1xcbn1cXG5cXG4uaWNvbi1hbmNob3I6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTgyNlxcXCI7XFxufVxcblxcbi5pY29uLWFwZXJ0dXJlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MjdcXFwiO1xcbn1cXG5cXG4uaWNvbi1hcnJvdy1sZWZ0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MjhcXFwiO1xcbn1cXG5cXG4uaWNvbi1hcnJvdy1yaWdodDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODI5XFxcIjtcXG59XFxuXFxuLmljb24tYXJyb3ctZG93bjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODJBXFxcIjtcXG59XFxuXFxuLmljb24tYXJyb3ctdXAtbGVmdDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODJCXFxcIjtcXG59XFxuXFxuLmljb24tYXJyb3ctdXAtcmlnaHQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTgyQ1xcXCI7XFxufVxcblxcbi5pY29uLWFycm93LXVwOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MkRcXFwiO1xcbn1cXG5cXG4uaWNvbi1hd2FyZDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODJFXFxcIjtcXG59XFxuXFxuLmljb24tYmFyLWNoYXJ0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MkZcXFwiO1xcbn1cXG5cXG4uaWNvbi1hdC1zaWduOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MzBcXFwiO1xcbn1cXG5cXG4uaWNvbi1iYXItY2hhcnQtMjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODMxXFxcIjtcXG59XFxuXFxuLmljb24tYmF0dGVyeS1jaGFyZ2luZzpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODMyXFxcIjtcXG59XFxuXFxuLmljb24tYmVsbC1vZmY6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTgzM1xcXCI7XFxufVxcblxcbi5pY29uLWJhdHRlcnk6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTgzNFxcXCI7XFxufVxcblxcbi5pY29uLWJsdWV0b290aDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODM1XFxcIjtcXG59XFxuXFxuLmljb24tYmVsbDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODM2XFxcIjtcXG59XFxuXFxuLmljb24tYm9vazpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODM3XFxcIjtcXG59XFxuXFxuLmljb24tYnJpZWZjYXNlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MzhcXFwiO1xcbn1cXG5cXG4uaWNvbi1jYW1lcmEtb2ZmOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4MzlcXFwiO1xcbn1cXG5cXG4uaWNvbi1jYWxlbmRhcjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODNBXFxcIjtcXG59XFxuXFxuLmljb24tYm9va21hcms6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTgzQlxcXCI7XFxufVxcblxcbi5pY29uLWJveDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODNDXFxcIjtcXG59XFxuXFxuLmljb24tY2FtZXJhOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4M0RcXFwiO1xcbn1cXG5cXG4uaWNvbi1jaGVjay1jaXJjbGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTgzRVxcXCI7XFxufVxcblxcbi5pY29uLWNoZWNrOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4M0ZcXFwiO1xcbn1cXG5cXG4uaWNvbi1jaGVjay1zcXVhcmU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg0MFxcXCI7XFxufVxcblxcbi5pY29uLWNhc3Q6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg0MVxcXCI7XFxufVxcblxcbi5pY29uLWNoZXZyb24tZG93bjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODQyXFxcIjtcXG59XFxuXFxuLmljb24tY2hldnJvbi1sZWZ0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NDNcXFwiO1xcbn1cXG5cXG4uaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NDRcXFwiO1xcbn1cXG5cXG4uaWNvbi1jaGV2cm9uLXVwOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NDVcXFwiO1xcbn1cXG5cXG4uaWNvbi1jaGV2cm9ucy1kb3duOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NDZcXFwiO1xcbn1cXG5cXG4uaWNvbi1jaGV2cm9ucy1yaWdodDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODQ3XFxcIjtcXG59XFxuXFxuLmljb24tY2hldnJvbnMtdXA6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg0OFxcXCI7XFxufVxcblxcbi5pY29uLWNoZXZyb25zLWxlZnQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg0OVxcXCI7XFxufVxcblxcbi5pY29uLWNpcmNsZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODRBXFxcIjtcXG59XFxuXFxuLmljb24tY2xpcGJvYXJkOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NEJcXFwiO1xcbn1cXG5cXG4uaWNvbi1jaHJvbWU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg0Q1xcXCI7XFxufVxcblxcbi5pY29uLWNsb2NrOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NERcXFwiO1xcbn1cXG5cXG4uaWNvbi1jbG91ZC1saWdodG5pbmc6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg0RVxcXCI7XFxufVxcblxcbi5pY29uLWNsb3VkLWRyaXp6bGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg0RlxcXCI7XFxufVxcblxcbi5pY29uLWNsb3VkLXJhaW46YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg1MFxcXCI7XFxufVxcblxcbi5pY29uLWNsb3VkLW9mZjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODUxXFxcIjtcXG59XFxuXFxuLmljb24tY29kZXBlbjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODUyXFxcIjtcXG59XFxuXFxuLmljb24tY2xvdWQtc25vdzpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODUzXFxcIjtcXG59XFxuXFxuLmljb24tY29tcGFzczpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODU0XFxcIjtcXG59XFxuXFxuLmljb24tY29weTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODU1XFxcIjtcXG59XFxuXFxuLmljb24tY29ybmVyLWRvd24tcmlnaHQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg1NlxcXCI7XFxufVxcblxcbi5pY29uLWNvcm5lci1kb3duLWxlZnQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg1N1xcXCI7XFxufVxcblxcbi5pY29uLWNvcm5lci1sZWZ0LWRvd246YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg1OFxcXCI7XFxufVxcblxcbi5pY29uLWNvcm5lci1sZWZ0LXVwOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NTlcXFwiO1xcbn1cXG5cXG4uaWNvbi1jb3JuZXItdXAtbGVmdDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODVBXFxcIjtcXG59XFxuXFxuLmljb24tY29ybmVyLXVwLXJpZ2h0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NUJcXFwiO1xcbn1cXG5cXG4uaWNvbi1jb3JuZXItcmlnaHQtZG93bjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODVDXFxcIjtcXG59XFxuXFxuLmljb24tY29ybmVyLXJpZ2h0LXVwOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NURcXFwiO1xcbn1cXG5cXG4uaWNvbi1jcHU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg1RVxcXCI7XFxufVxcblxcbi5pY29uLWNyZWRpdC1jYXJkOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NUZcXFwiO1xcbn1cXG5cXG4uaWNvbi1jcm9zc2hhaXI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg2MFxcXCI7XFxufVxcblxcbi5pY29uLWRpc2M6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg2MVxcXCI7XFxufVxcblxcbi5pY29uLWRlbGV0ZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODYyXFxcIjtcXG59XFxuXFxuLmljb24tZG93bmxvYWQtY2xvdWQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg2M1xcXCI7XFxufVxcblxcbi5pY29uLWRvd25sb2FkOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NjRcXFwiO1xcbn1cXG5cXG4uaWNvbi1kcm9wbGV0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NjVcXFwiO1xcbn1cXG5cXG4uaWNvbi1lZGl0LTI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg2NlxcXCI7XFxufVxcblxcbi5pY29uLWVkaXQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg2N1xcXCI7XFxufVxcblxcbi5pY29uLWVkaXQtMTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODY4XFxcIjtcXG59XFxuXFxuLmljb24tZXh0ZXJuYWwtbGluazpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODY5XFxcIjtcXG59XFxuXFxuLmljb24tZXllOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NkFcXFwiO1xcbn1cXG5cXG4uaWNvbi1mZWF0aGVyOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NkJcXFwiO1xcbn1cXG5cXG4uaWNvbi1mYWNlYm9vazpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODZDXFxcIjtcXG59XFxuXFxuLmljb24tZmlsZS1taW51czpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODZEXFxcIjtcXG59XFxuXFxuLmljb24tZXllLW9mZjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODZFXFxcIjtcXG59XFxuXFxuLmljb24tZmFzdC1mb3J3YXJkOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NkZcXFwiO1xcbn1cXG5cXG4uaWNvbi1maWxlLXRleHQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg3MFxcXCI7XFxufVxcblxcbi5pY29uLWZpbG06YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg3MVxcXCI7XFxufVxcblxcbi5pY29uLWZpbGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg3MlxcXCI7XFxufVxcblxcbi5pY29uLWZpbGUtcGx1czpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODczXFxcIjtcXG59XFxuXFxuLmljb24tZm9sZGVyOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NzRcXFwiO1xcbn1cXG5cXG4uaWNvbi1maWx0ZXI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg3NVxcXCI7XFxufVxcblxcbi5pY29uLWZsYWc6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg3NlxcXCI7XFxufVxcblxcbi5pY29uLWdsb2JlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NzdcXFwiO1xcbn1cXG5cXG4uaWNvbi1ncmlkOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4NzhcXFwiO1xcbn1cXG5cXG4uaWNvbi1oZWFydDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODc5XFxcIjtcXG59XFxuXFxuLmljb24taG9tZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODdBXFxcIjtcXG59XFxuXFxuLmljb24tZ2l0aHViOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4N0JcXFwiO1xcbn1cXG5cXG4uaWNvbi1pbWFnZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODdDXFxcIjtcXG59XFxuXFxuLmljb24taW5ib3g6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg3RFxcXCI7XFxufVxcblxcbi5pY29uLWxheWVyczpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODdFXFxcIjtcXG59XFxuXFxuLmljb24taW5mbzpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODdGXFxcIjtcXG59XFxuXFxuLmljb24taW5zdGFncmFtOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4ODBcXFwiO1xcbn1cXG5cXG4uaWNvbi1sYXlvdXQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg4MVxcXCI7XFxufVxcblxcbi5pY29uLWxpbmstMjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODgyXFxcIjtcXG59XFxuXFxuLmljb24tbGlmZS1idW95OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4ODNcXFwiO1xcbn1cXG5cXG4uaWNvbi1saW5rOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4ODRcXFwiO1xcbn1cXG5cXG4uaWNvbi1sb2ctaW46YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg4NVxcXCI7XFxufVxcblxcbi5pY29uLWxpc3Q6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg4NlxcXCI7XFxufVxcblxcbi5pY29uLWxvY2s6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg4N1xcXCI7XFxufVxcblxcbi5pY29uLWxvZy1vdXQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg4OFxcXCI7XFxufVxcblxcbi5pY29uLWxvYWRlcjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODg5XFxcIjtcXG59XFxuXFxuLmljb24tbWFpbDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODhBXFxcIjtcXG59XFxuXFxuLmljb24tbWF4aW1pemUtMjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODhCXFxcIjtcXG59XFxuXFxuLmljb24tbWFwOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4OENcXFwiO1xcbn1cXG5cXG4uaWNvbi1tYXAtcGluOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4OEVcXFwiO1xcbn1cXG5cXG4uaWNvbi1tZW51OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4OEZcXFwiO1xcbn1cXG5cXG4uaWNvbi1tZXNzYWdlLWNpcmNsZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODkwXFxcIjtcXG59XFxuXFxuLmljb24tbWVzc2FnZS1zcXVhcmU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg5MVxcXCI7XFxufVxcblxcbi5pY29uLW1pbmltaXplLTI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg5MlxcXCI7XFxufVxcblxcbi5pY29uLW1pYy1vZmY6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg5M1xcXCI7XFxufVxcblxcbi5pY29uLW1pbnVzLWNpcmNsZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFODk0XFxcIjtcXG59XFxuXFxuLmljb24tbWljOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4OTVcXFwiO1xcbn1cXG5cXG4uaWNvbi1taW51cy1zcXVhcmU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg5NlxcXCI7XFxufVxcblxcbi5pY29uLW1pbnVzOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4OTdcXFwiO1xcbn1cXG5cXG4uaWNvbi1tb29uOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4OThcXFwiO1xcbn1cXG5cXG4uaWNvbi1tb25pdG9yOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4OTlcXFwiO1xcbn1cXG5cXG4uaWNvbi1tb3JlLXZlcnRpY2FsOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4OUFcXFwiO1xcbn1cXG5cXG4uaWNvbi1tb3JlLWhvcml6b250YWw6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg5QlxcXCI7XFxufVxcblxcbi5pY29uLW1vdmU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg5Q1xcXCI7XFxufVxcblxcbi5pY29uLW11c2ljOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4OURcXFwiO1xcbn1cXG5cXG4uaWNvbi1uYXZpZ2F0aW9uLTI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg5RVxcXCI7XFxufVxcblxcbi5pY29uLW5hdmlnYXRpb246YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg5RlxcXCI7XFxufVxcblxcbi5pY29uLW9jdGFnb246YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThBMFxcXCI7XFxufVxcblxcbi5pY29uLXBhY2thZ2U6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThBMVxcXCI7XFxufVxcblxcbi5pY29uLXBhdXNlLWNpcmNsZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEEyXFxcIjtcXG59XFxuXFxuLmljb24tcGF1c2U6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThBM1xcXCI7XFxufVxcblxcbi5pY29uLXBlcmNlbnQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThBNFxcXCI7XFxufVxcblxcbi5pY29uLXBob25lLWNhbGw6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThBNVxcXCI7XFxufVxcblxcbi5pY29uLXBob25lLWZvcndhcmRlZDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEE2XFxcIjtcXG59XFxuXFxuLmljb24tcGhvbmUtbWlzc2VkOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QTdcXFwiO1xcbn1cXG5cXG4uaWNvbi1waG9uZS1vZmY6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThBOFxcXCI7XFxufVxcblxcbi5pY29uLXBob25lLWluY29taW5nOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QTlcXFwiO1xcbn1cXG5cXG4uaWNvbi1waG9uZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEFBXFxcIjtcXG59XFxuXFxuLmljb24tcGhvbmUtb3V0Z29pbmc6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThBQlxcXCI7XFxufVxcblxcbi5pY29uLXBpZS1jaGFydDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEFDXFxcIjtcXG59XFxuXFxuLmljb24tcGxheS1jaXJjbGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThBRFxcXCI7XFxufVxcblxcbi5pY29uLXBsYXk6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThBRVxcXCI7XFxufVxcblxcbi5pY29uLXBsdXMtc3F1YXJlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QUZcXFwiO1xcbn1cXG5cXG4uaWNvbi1wbHVzLWNpcmNsZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEIwXFxcIjtcXG59XFxuXFxuLmljb24tcGx1czpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEIxXFxcIjtcXG59XFxuXFxuLmljb24tcG9ja2V0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QjJcXFwiO1xcbn1cXG5cXG4uaWNvbi1wcmludGVyOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QjNcXFwiO1xcbn1cXG5cXG4uaWNvbi1wb3dlcjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEI0XFxcIjtcXG59XFxuXFxuLmljb24tcmFkaW86YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThCNVxcXCI7XFxufVxcblxcbi5pY29uLXJlcGVhdDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEI2XFxcIjtcXG59XFxuXFxuLmljb24tcmVmcmVzaC1jY3c6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThCN1xcXCI7XFxufVxcblxcbi5pY29uLXJld2luZDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEI4XFxcIjtcXG59XFxuXFxuLmljb24tcm90YXRlLWNjdzpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEI5XFxcIjtcXG59XFxuXFxuLmljb24tcmVmcmVzaC1jdzpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEJBXFxcIjtcXG59XFxuXFxuLmljb24tcm90YXRlLWN3OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QkJcXFwiO1xcbn1cXG5cXG4uaWNvbi1zYXZlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QkNcXFwiO1xcbn1cXG5cXG4uaWNvbi1zZWFyY2g6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThCRFxcXCI7XFxufVxcblxcbi5pY29uLXNlcnZlcjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEJFXFxcIjtcXG59XFxuXFxuLmljb24tc2Npc3NvcnM6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThCRlxcXCI7XFxufVxcblxcbi5pY29uLXNoYXJlLTI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDMFxcXCI7XFxufVxcblxcbi5pY29uLXNoYXJlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QzFcXFwiO1xcbn1cXG5cXG4uaWNvbi1zaGllbGQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDMlxcXCI7XFxufVxcblxcbi5pY29uLXNldHRpbmdzOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QzNcXFwiO1xcbn1cXG5cXG4uaWNvbi1za2lwLWJhY2s6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDNFxcXCI7XFxufVxcblxcbi5pY29uLXNodWZmbGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDNVxcXCI7XFxufVxcblxcbi5pY29uLXNpZGViYXI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDNlxcXCI7XFxufVxcblxcbi5pY29uLXNraXAtZm9yd2FyZDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEM3XFxcIjtcXG59XFxuXFxuLmljb24tc2xhY2s6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDOFxcXCI7XFxufVxcblxcbi5pY29uLXNsYXNoOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4QzlcXFwiO1xcbn1cXG5cXG4uaWNvbi1zbWFydHBob25lOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4Q0FcXFwiO1xcbn1cXG5cXG4uaWNvbi1zcXVhcmU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDQlxcXCI7XFxufVxcblxcbi5pY29uLXNwZWFrZXI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDQ1xcXCI7XFxufVxcblxcbi5pY29uLXN0YXI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDRFxcXCI7XFxufVxcblxcbi5pY29uLXN0b3AtY2lyY2xlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4Q0VcXFwiO1xcbn1cXG5cXG4uaWNvbi1zdW46YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThDRlxcXCI7XFxufVxcblxcbi5pY29uLXN1bnJpc2U6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThEMFxcXCI7XFxufVxcblxcbi5pY29uLXRhYmxldDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEQxXFxcIjtcXG59XFxuXFxuLmljb24tdGFnOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RDJcXFwiO1xcbn1cXG5cXG4uaWNvbi1zdW5zZXQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThEM1xcXCI7XFxufVxcblxcbi5pY29uLXRhcmdldDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEQ0XFxcIjtcXG59XFxuXFxuLmljb24tdGhlcm1vbWV0ZXI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThENVxcXCI7XFxufVxcblxcbi5pY29uLXRodW1icy11cDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEQ2XFxcIjtcXG59XFxuXFxuLmljb24tdGh1bWJzLWRvd246YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThEN1xcXCI7XFxufVxcblxcbi5pY29uLXRvZ2dsZS1sZWZ0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RDhcXFwiO1xcbn1cXG5cXG4uaWNvbi10b2dnbGUtcmlnaHQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThEOVxcXCI7XFxufVxcblxcbi5pY29uLXRyYXNoLTI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThEQVxcXCI7XFxufVxcblxcbi5pY29uLXRyYXNoOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4REJcXFwiO1xcbn1cXG5cXG4uaWNvbi10cmVuZGluZy11cDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOERDXFxcIjtcXG59XFxuXFxuLmljb24tdHJlbmRpbmctZG93bjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEREXFxcIjtcXG59XFxuXFxuLmljb24tdHJpYW5nbGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThERVxcXCI7XFxufVxcblxcbi5pY29uLXR5cGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThERlxcXCI7XFxufVxcblxcbi5pY29uLXR3aXR0ZXI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThFMFxcXCI7XFxufVxcblxcbi5pY29uLXVwbG9hZDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEUxXFxcIjtcXG59XFxuXFxuLmljb24tdW1icmVsbGE6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThFMlxcXCI7XFxufVxcblxcbi5pY29uLXVwbG9hZC1jbG91ZDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEUzXFxcIjtcXG59XFxuXFxuLmljb24tdW5sb2NrOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RTRcXFwiO1xcbn1cXG5cXG4uaWNvbi11c2VyLWNoZWNrOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RTVcXFwiO1xcbn1cXG5cXG4uaWNvbi11c2VyLW1pbnVzOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RTZcXFwiO1xcbn1cXG5cXG4uaWNvbi11c2VyLXBsdXM6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThFN1xcXCI7XFxufVxcblxcbi5pY29uLXVzZXIteDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEU4XFxcIjtcXG59XFxuXFxuLmljb24tdXNlcjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEU5XFxcIjtcXG59XFxuXFxuLmljb24tdXNlcnM6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThFQVxcXCI7XFxufVxcblxcbi5pY29uLXZpZGVvLW9mZjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEVCXFxcIjtcXG59XFxuXFxuLmljb24tdmlkZW86YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThFQ1xcXCI7XFxufVxcblxcbi5pY29uLXZvaWNlbWFpbDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEVEXFxcIjtcXG59XFxuXFxuLmljb24tdm9sdW1lLXg6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThFRVxcXCI7XFxufVxcblxcbi5pY29uLXZvbHVtZS0yOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RUZcXFwiO1xcbn1cXG5cXG4uaWNvbi12b2x1bWUtMTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEYwXFxcIjtcXG59XFxuXFxuLmljb24tdm9sdW1lOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RjFcXFwiO1xcbn1cXG5cXG4uaWNvbi13YXRjaDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEYyXFxcIjtcXG59XFxuXFxuLmljb24td2lmaTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEYzXFxcIjtcXG59XFxuXFxuLmljb24teC1zcXVhcmU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThGNFxcXCI7XFxufVxcblxcbi5pY29uLXdpbmQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThGNVxcXCI7XFxufVxcblxcbi5pY29uLXg6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThGNlxcXCI7XFxufVxcblxcbi5pY29uLXgtY2lyY2xlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RjdcXFwiO1xcbn1cXG5cXG4uaWNvbi16YXA6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThGOFxcXCI7XFxufVxcblxcbi5pY29uLXpvb20taW46YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRThGOVxcXCI7XFxufVxcblxcbi5pY29uLXpvb20tb3V0OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RkFcXFwiO1xcbn1cXG5cXG4uaWNvbi1jb21tYW5kOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RkJcXFwiO1xcbn1cXG5cXG4uaWNvbi1jbG91ZDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEZDXFxcIjtcXG59XFxuXFxuLmljb24taGFzaDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEZEXFxcIjtcXG59XFxuXFxuLmljb24taGVhZHBob25lczpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOEZFXFxcIjtcXG59XFxuXFxuLmljb24tdW5kZXJsaW5lOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU4RkZcXFwiO1xcbn1cXG5cXG4uaWNvbi1pdGFsaWM6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMFxcXCI7XFxufVxcblxcbi5pY29uLWJvbGQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMVxcXCI7XFxufVxcblxcbi5pY29uLWNyb3A6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMlxcXCI7XFxufVxcblxcbi5pY29uLWhlbHAtY2lyY2xlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MDNcXFwiO1xcbn1cXG5cXG4uaWNvbi1wYXBlcmNsaXA6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNFxcXCI7XFxufVxcblxcbi5pY29uLXNob3BwaW5nLWNhcnQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNVxcXCI7XFxufVxcblxcbi5pY29uLXR2OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MDZcXFwiO1xcbn1cXG5cXG4uaWNvbi13aWZpLW9mZjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTA3XFxcIjtcXG59XFxuXFxuLmljb24tbWluaW1pemU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTg4RFxcXCI7XFxufVxcblxcbi5pY29uLW1heGltaXplOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MDhcXFwiO1xcbn1cXG5cXG4uaWNvbi1naXRsYWI6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkwOVxcXCI7XFxufVxcblxcbi5pY29uLXNsaWRlcnM6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQVxcXCI7XFxufVxcblxcbi5pY29uLXN0YXItb246YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQlxcXCI7XFxufVxcblxcbi5pY29uLWhlYXJ0LW9uOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MENcXFwiO1xcbn1cXG5cXG4uaWNvbi1hcmNoaXZlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MERcXFwiO1xcbn1cXG5cXG4uaWNvbi1hcnJvdy1kb3duLWNpcmNsZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTBFXFxcIjtcXG59XFxuXFxuLmljb24tYXJyb3ctdXAtY2lyY2xlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MEZcXFwiO1xcbn1cXG5cXG4uaWNvbi1hcnJvdy1sZWZ0LWNpcmNsZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTEwXFxcIjtcXG59XFxuXFxuLmljb24tYXJyb3ctcmlnaHQtY2lyY2xlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MTFcXFwiO1xcbn1cXG5cXG4uaWNvbi1iYXItY2hhcnQtbGluZS06YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkxMlxcXCI7XFxufVxcblxcbi5pY29uLWJhci1jaGFydC1saW5lOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MTNcXFwiO1xcbn1cXG5cXG4uaWNvbi1ib29rLW9wZW46YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkxNFxcXCI7XFxufVxcblxcbi5pY29uLWNvZGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkxNVxcXCI7XFxufVxcblxcbi5pY29uLWRhdGFiYXNlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MTZcXFwiO1xcbn1cXG5cXG4uaWNvbi1kb2xsYXItc2lnbjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTE3XFxcIjtcXG59XFxuXFxuLmljb24tZm9sZGVyLXBsdXM6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOFxcXCI7XFxufVxcblxcbi5pY29uLWdpZnQ6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOVxcXCI7XFxufVxcblxcbi5pY29uLWZvbGRlci1taW51czpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTFBXFxcIjtcXG59XFxuXFxuLmljb24tZ2l0LWNvbW1pdDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTFCXFxcIjtcXG59XFxuXFxuLmljb24tZ2l0LWJyYW5jaDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTFDXFxcIjtcXG59XFxuXFxuLmljb24tZ2l0LXB1bGwtcmVxdWVzdDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTFEXFxcIjtcXG59XFxuXFxuLmljb24tZ2l0LW1lcmdlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MUVcXFwiO1xcbn1cXG5cXG4uaWNvbi1saW5rZWRpbjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTFGXFxcIjtcXG59XFxuXFxuLmljb24taGFyZC1kcml2ZTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTIwXFxcIjtcXG59XFxuXFxuLmljb24tbW9yZS12ZXJ0aWNhbC06YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMVxcXCI7XFxufVxcblxcbi5pY29uLW1vcmUtaG9yaXpvbnRhbC06YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMlxcXCI7XFxufVxcblxcbi5pY29uLXJzczpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTIzXFxcIjtcXG59XFxuXFxuLmljb24tc2VuZDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTI0XFxcIjtcXG59XFxuXFxuLmljb24tc2hpZWxkLW9mZjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTI1XFxcIjtcXG59XFxuXFxuLmljb24tc2hvcHBpbmctYmFnOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcXEU5MjZcXFwiO1xcbn1cXG5cXG4uaWNvbi10ZXJtaW5hbDpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXFxFOTI3XFxcIjtcXG59XFxuXFxuLmljb24tdHJ1Y2s6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkyOFxcXCI7XFxufVxcblxcbi5pY29uLXphcC1vZmY6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkyOVxcXCI7XFxufVxcblxcbi5pY29uLXlvdXR1YmU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQVxcXCI7XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/iconfont.css\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/main.css":
/*!*********************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2!./src/assets/css/main.css ***!
  \*********************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/**\\n * This injects Tailwind's base styles, which is a combination of\\n * Normalize.css and some additional base styles.\\n *\\n * You can see the styles here:\\n * https://github.com/tailwindcss/tailwindcss/blob/master/css/preflight.css\\n *\\n * If using `postcss-import`, you should import this line from it's own file:\\n *\\n * @import \\\"./tailwind-preflight.css\\\";\\n *\\n * See: https://github.com/tailwindcss/tailwindcss/issues/53#issuecomment-341413622\\n */\\n\\n/*NOTE: 'preflight' IS RENAMED TO 'base'*/\\n\\n/*@tailwind base;*/\\n\\n/**\\n * Here you would add any of your custom component classes; stuff that you'd\\n * want loaded *before* the utilities so that the utilities could still\\n * override them.\\n *\\n * Example:\\n *\\n * .btn { ... }\\n * .form-input { ... }\\n *\\n * Or if using a preprocessor or `postcss-import`:\\n *\\n * @import \\\"components/buttons\\\";\\n * @import \\\"components/forms\\\";\\n */\\n\\n.container {\\n  width: 100%;\\n  margin-right: auto;\\n  margin-left: auto;\\n  padding-right: 1rem;\\n  padding-left: 1rem\\n}\\n\\n@media (min-width: 576px) {\\n  .container {\\n    max-width: 576px\\n  }\\n}\\n\\n@media (min-width: 768px) {\\n  .container {\\n    max-width: 768px\\n  }\\n}\\n\\n@media (min-width: 992px) {\\n  .container {\\n    max-width: 992px\\n  }\\n}\\n\\n@media (min-width: 1200px) {\\n  .container {\\n    max-width: 1200px\\n  }\\n}\\n\\n/**\\n * This injects all of Tailwind's utility classes, generated based on your\\n * config file.\\n *\\n * If using `postcss-import`, you should import this line from it's own file:\\n *\\n * @import \\\"./tailwind-utilities.css\\\";\\n *\\n * See: https://github.com/tailwindcss/tailwindcss/issues/53#issuecomment-341413622\\n */\\n\\n.sr-only {\\n  position: absolute !important;\\n  width: 1px !important;\\n  height: 1px !important;\\n  padding: 0 !important;\\n  margin: -1px !important;\\n  overflow: hidden !important;\\n  clip: rect(0, 0, 0, 0) !important;\\n  white-space: nowrap !important;\\n  border-width: 0 !important\\n}\\n\\n.not-sr-only {\\n  position: static !important;\\n  width: auto !important;\\n  height: auto !important;\\n  padding: 0 !important;\\n  margin: 0 !important;\\n  overflow: visible !important;\\n  clip: auto !important;\\n  white-space: normal !important\\n}\\n\\n.focus\\\\:sr-only:focus {\\n  position: absolute !important;\\n  width: 1px !important;\\n  height: 1px !important;\\n  padding: 0 !important;\\n  margin: -1px !important;\\n  overflow: hidden !important;\\n  clip: rect(0, 0, 0, 0) !important;\\n  white-space: nowrap !important;\\n  border-width: 0 !important\\n}\\n\\n.focus\\\\:not-sr-only:focus {\\n  position: static !important;\\n  width: auto !important;\\n  height: auto !important;\\n  padding: 0 !important;\\n  margin: 0 !important;\\n  overflow: visible !important;\\n  clip: auto !important;\\n  white-space: normal !important\\n}\\n\\n.appearance-none {\\n  -webkit-appearance: none !important;\\n     -moz-appearance: none !important;\\n          appearance: none !important\\n}\\n\\n.bg-fixed {\\n  background-attachment: fixed !important\\n}\\n\\n.bg-local {\\n  background-attachment: local !important\\n}\\n\\n.bg-scroll {\\n  background-attachment: scroll !important\\n}\\n\\n.bg-transparent {\\n  background-color: transparent !important\\n}\\n\\n.bg-black {\\n  background-color: #22292f !important\\n}\\n\\n.bg-white {\\n  background-color: #ffffff !important\\n}\\n\\n.bg-grey {\\n  background-color: #b8c2cc !important\\n}\\n\\n.bg-grey-light {\\n  background-color: #dae1e7 !important\\n}\\n\\n.hover\\\\:bg-transparent:hover {\\n  background-color: transparent !important\\n}\\n\\n.hover\\\\:bg-black:hover {\\n  background-color: #22292f !important\\n}\\n\\n.hover\\\\:bg-white:hover {\\n  background-color: #ffffff !important\\n}\\n\\n.hover\\\\:bg-grey:hover {\\n  background-color: #b8c2cc !important\\n}\\n\\n.hover\\\\:bg-grey-light:hover {\\n  background-color: #dae1e7 !important\\n}\\n\\n.focus\\\\:bg-transparent:focus {\\n  background-color: transparent !important\\n}\\n\\n.focus\\\\:bg-black:focus {\\n  background-color: #22292f !important\\n}\\n\\n.focus\\\\:bg-white:focus {\\n  background-color: #ffffff !important\\n}\\n\\n.focus\\\\:bg-grey:focus {\\n  background-color: #b8c2cc !important\\n}\\n\\n.focus\\\\:bg-grey-light:focus {\\n  background-color: #dae1e7 !important\\n}\\n\\n.bg-auto {\\n  background-size: auto !important\\n}\\n\\n.bg-cover {\\n  background-size: cover !important\\n}\\n\\n.bg-contain {\\n  background-size: contain !important\\n}\\n\\n.border-collapse {\\n  border-collapse: collapse !important\\n}\\n\\n.border-separate {\\n  border-collapse: separate !important\\n}\\n\\n.border-transparent {\\n  border-color: transparent !important\\n}\\n\\n.border-black {\\n  border-color: #22292f !important\\n}\\n\\n.border-white {\\n  border-color: #ffffff !important\\n}\\n\\n.border-grey {\\n  border-color: #b8c2cc !important\\n}\\n\\n.border-grey-light {\\n  border-color: #dae1e7 !important\\n}\\n\\n.hover\\\\:border-transparent:hover {\\n  border-color: transparent !important\\n}\\n\\n.hover\\\\:border-black:hover {\\n  border-color: #22292f !important\\n}\\n\\n.hover\\\\:border-white:hover {\\n  border-color: #ffffff !important\\n}\\n\\n.hover\\\\:border-grey:hover {\\n  border-color: #b8c2cc !important\\n}\\n\\n.hover\\\\:border-grey-light:hover {\\n  border-color: #dae1e7 !important\\n}\\n\\n.rounded-none {\\n  border-radius: 0 !important\\n}\\n\\n.rounded-sm {\\n  border-radius: .125rem !important\\n}\\n\\n.rounded {\\n  border-radius: .25rem !important\\n}\\n\\n.rounded-lg {\\n  border-radius: .5rem !important\\n}\\n\\n.rounded-full {\\n  border-radius: 9999px !important\\n}\\n\\n.rounded-t-none {\\n  border-top-left-radius: 0 !important;\\n  border-top-right-radius: 0 !important\\n}\\n\\n.rounded-r-none {\\n  border-top-right-radius: 0 !important;\\n  border-bottom-right-radius: 0 !important\\n}\\n\\n.rounded-b-none {\\n  border-bottom-right-radius: 0 !important;\\n  border-bottom-left-radius: 0 !important\\n}\\n\\n.rounded-l-none {\\n  border-top-left-radius: 0 !important;\\n  border-bottom-left-radius: 0 !important\\n}\\n\\n.rounded-t-sm {\\n  border-top-left-radius: .125rem !important;\\n  border-top-right-radius: .125rem !important\\n}\\n\\n.rounded-r-sm {\\n  border-top-right-radius: .125rem !important;\\n  border-bottom-right-radius: .125rem !important\\n}\\n\\n.rounded-b-sm {\\n  border-bottom-right-radius: .125rem !important;\\n  border-bottom-left-radius: .125rem !important\\n}\\n\\n.rounded-l-sm {\\n  border-top-left-radius: .125rem !important;\\n  border-bottom-left-radius: .125rem !important\\n}\\n\\n.rounded-t {\\n  border-top-left-radius: .25rem !important;\\n  border-top-right-radius: .25rem !important\\n}\\n\\n.rounded-r {\\n  border-top-right-radius: .25rem !important;\\n  border-bottom-right-radius: .25rem !important\\n}\\n\\n.rounded-b {\\n  border-bottom-right-radius: .25rem !important;\\n  border-bottom-left-radius: .25rem !important\\n}\\n\\n.rounded-l {\\n  border-top-left-radius: .25rem !important;\\n  border-bottom-left-radius: .25rem !important\\n}\\n\\n.rounded-t-lg {\\n  border-top-left-radius: .5rem !important;\\n  border-top-right-radius: .5rem !important\\n}\\n\\n.rounded-r-lg {\\n  border-top-right-radius: .5rem !important;\\n  border-bottom-right-radius: .5rem !important\\n}\\n\\n.rounded-b-lg {\\n  border-bottom-right-radius: .5rem !important;\\n  border-bottom-left-radius: .5rem !important\\n}\\n\\n.rounded-l-lg {\\n  border-top-left-radius: .5rem !important;\\n  border-bottom-left-radius: .5rem !important\\n}\\n\\n.rounded-t-full {\\n  border-top-left-radius: 9999px !important;\\n  border-top-right-radius: 9999px !important\\n}\\n\\n.rounded-r-full {\\n  border-top-right-radius: 9999px !important;\\n  border-bottom-right-radius: 9999px !important\\n}\\n\\n.rounded-b-full {\\n  border-bottom-right-radius: 9999px !important;\\n  border-bottom-left-radius: 9999px !important\\n}\\n\\n.rounded-l-full {\\n  border-top-left-radius: 9999px !important;\\n  border-bottom-left-radius: 9999px !important\\n}\\n\\n.rounded-tl-none {\\n  border-top-left-radius: 0 !important\\n}\\n\\n.rounded-tr-none {\\n  border-top-right-radius: 0 !important\\n}\\n\\n.rounded-br-none {\\n  border-bottom-right-radius: 0 !important\\n}\\n\\n.rounded-bl-none {\\n  border-bottom-left-radius: 0 !important\\n}\\n\\n.rounded-tl-sm {\\n  border-top-left-radius: .125rem !important\\n}\\n\\n.rounded-tr-sm {\\n  border-top-right-radius: .125rem !important\\n}\\n\\n.rounded-br-sm {\\n  border-bottom-right-radius: .125rem !important\\n}\\n\\n.rounded-bl-sm {\\n  border-bottom-left-radius: .125rem !important\\n}\\n\\n.rounded-tl {\\n  border-top-left-radius: .25rem !important\\n}\\n\\n.rounded-tr {\\n  border-top-right-radius: .25rem !important\\n}\\n\\n.rounded-br {\\n  border-bottom-right-radius: .25rem !important\\n}\\n\\n.rounded-bl {\\n  border-bottom-left-radius: .25rem !important\\n}\\n\\n.rounded-tl-lg {\\n  border-top-left-radius: .5rem !important\\n}\\n\\n.rounded-tr-lg {\\n  border-top-right-radius: .5rem !important\\n}\\n\\n.rounded-br-lg {\\n  border-bottom-right-radius: .5rem !important\\n}\\n\\n.rounded-bl-lg {\\n  border-bottom-left-radius: .5rem !important\\n}\\n\\n.rounded-tl-full {\\n  border-top-left-radius: 9999px !important\\n}\\n\\n.rounded-tr-full {\\n  border-top-right-radius: 9999px !important\\n}\\n\\n.rounded-br-full {\\n  border-bottom-right-radius: 9999px !important\\n}\\n\\n.rounded-bl-full {\\n  border-bottom-left-radius: 9999px !important\\n}\\n\\n.border-solid {\\n  border-style: solid !important\\n}\\n\\n.border-dashed {\\n  border-style: dashed !important\\n}\\n\\n.border-dotted {\\n  border-style: dotted !important\\n}\\n\\n.border-double {\\n  border-style: double !important\\n}\\n\\n.border-none {\\n  border-style: none !important\\n}\\n\\n.border-0 {\\n  border-width: 0 !important\\n}\\n\\n.border-2 {\\n  border-width: 2px !important\\n}\\n\\n.border-4 {\\n  border-width: 4px !important\\n}\\n\\n.border-8 {\\n  border-width: 8px !important\\n}\\n\\n.border {\\n  border-width: 1px !important\\n}\\n\\n.border-t-0 {\\n  border-top-width: 0 !important\\n}\\n\\n.border-r-0 {\\n  border-right-width: 0 !important\\n}\\n\\n.border-b-0 {\\n  border-bottom-width: 0 !important\\n}\\n\\n.border-l-0 {\\n  border-left-width: 0 !important\\n}\\n\\n.border-t-2 {\\n  border-top-width: 2px !important\\n}\\n\\n.border-r-2 {\\n  border-right-width: 2px !important\\n}\\n\\n.border-b-2 {\\n  border-bottom-width: 2px !important\\n}\\n\\n.border-l-2 {\\n  border-left-width: 2px !important\\n}\\n\\n.border-t-4 {\\n  border-top-width: 4px !important\\n}\\n\\n.border-r-4 {\\n  border-right-width: 4px !important\\n}\\n\\n.border-b-4 {\\n  border-bottom-width: 4px !important\\n}\\n\\n.border-l-4 {\\n  border-left-width: 4px !important\\n}\\n\\n.border-t-8 {\\n  border-top-width: 8px !important\\n}\\n\\n.border-r-8 {\\n  border-right-width: 8px !important\\n}\\n\\n.border-b-8 {\\n  border-bottom-width: 8px !important\\n}\\n\\n.border-l-8 {\\n  border-left-width: 8px !important\\n}\\n\\n.border-t {\\n  border-top-width: 1px !important\\n}\\n\\n.border-r {\\n  border-right-width: 1px !important\\n}\\n\\n.border-b {\\n  border-bottom-width: 1px !important\\n}\\n\\n.border-l {\\n  border-left-width: 1px !important\\n}\\n\\n.cursor-auto {\\n  cursor: auto !important\\n}\\n\\n.cursor-default {\\n  cursor: default !important\\n}\\n\\n.cursor-pointer {\\n  cursor: pointer !important\\n}\\n\\n.cursor-wait {\\n  cursor: wait !important\\n}\\n\\n.cursor-text {\\n  cursor: text !important\\n}\\n\\n.cursor-move {\\n  cursor: move !important\\n}\\n\\n.cursor-not-allowed {\\n  cursor: not-allowed !important\\n}\\n\\n.block {\\n  display: block !important\\n}\\n\\n.inline-block {\\n  display: inline-block !important\\n}\\n\\n.inline {\\n  display: inline !important\\n}\\n\\n.flex {\\n  display: flex !important\\n}\\n\\n.inline-flex {\\n  display: inline-flex !important\\n}\\n\\n.table {\\n  display: table !important\\n}\\n\\n.table-row {\\n  display: table-row !important\\n}\\n\\n.table-cell {\\n  display: table-cell !important\\n}\\n\\n.hidden {\\n  display: none !important\\n}\\n\\n.flex-row {\\n  flex-direction: row !important\\n}\\n\\n.flex-row-reverse {\\n  flex-direction: row-reverse !important\\n}\\n\\n.flex-col {\\n  flex-direction: column !important\\n}\\n\\n.flex-col-reverse {\\n  flex-direction: column-reverse !important\\n}\\n\\n.flex-wrap {\\n  flex-wrap: wrap !important\\n}\\n\\n.flex-wrap-reverse {\\n  flex-wrap: wrap-reverse !important\\n}\\n\\n.flex-no-wrap {\\n  flex-wrap: nowrap !important\\n}\\n\\n.items-start {\\n  align-items: flex-start !important\\n}\\n\\n.items-end {\\n  align-items: flex-end !important\\n}\\n\\n.items-center {\\n  align-items: center !important\\n}\\n\\n.items-baseline {\\n  align-items: baseline !important\\n}\\n\\n.items-stretch {\\n  align-items: stretch !important\\n}\\n\\n.self-auto {\\n  align-self: auto !important\\n}\\n\\n.self-start {\\n  align-self: flex-start !important\\n}\\n\\n.self-end {\\n  align-self: flex-end !important\\n}\\n\\n.self-center {\\n  align-self: center !important\\n}\\n\\n.self-stretch {\\n  align-self: stretch !important\\n}\\n\\n.justify-start {\\n  justify-content: flex-start !important\\n}\\n\\n.justify-end {\\n  justify-content: flex-end !important\\n}\\n\\n.justify-center {\\n  justify-content: center !important\\n}\\n\\n.justify-between {\\n  justify-content: space-between !important\\n}\\n\\n.justify-around {\\n  justify-content: space-around !important\\n}\\n\\n.content-center {\\n  align-content: center !important\\n}\\n\\n.content-start {\\n  align-content: flex-start !important\\n}\\n\\n.content-end {\\n  align-content: flex-end !important\\n}\\n\\n.content-between {\\n  align-content: space-between !important\\n}\\n\\n.content-around {\\n  align-content: space-around !important\\n}\\n\\n.flex-1 {\\n  flex: 1 1 0% !important\\n}\\n\\n.flex-auto {\\n  flex: 1 1 auto !important\\n}\\n\\n.flex-initial {\\n  flex: 0 1 auto !important\\n}\\n\\n.flex-none {\\n  flex: none !important\\n}\\n\\n.flex-grow-0 {\\n  flex-grow: 0 !important\\n}\\n\\n.flex-grow {\\n  flex-grow: 1 !important\\n}\\n\\n.flex-shrink-0 {\\n  flex-shrink: 0 !important\\n}\\n\\n.flex-shrink {\\n  flex-shrink: 1 !important\\n}\\n\\n.order-1 {\\n  order: 1 !important\\n}\\n\\n.order-2 {\\n  order: 2 !important\\n}\\n\\n.order-3 {\\n  order: 3 !important\\n}\\n\\n.order-4 {\\n  order: 4 !important\\n}\\n\\n.order-5 {\\n  order: 5 !important\\n}\\n\\n.order-6 {\\n  order: 6 !important\\n}\\n\\n.order-first {\\n  order: -1 !important\\n}\\n\\n.order-last {\\n  order: 999 !important\\n}\\n\\n.order-normal {\\n  order: 0 !important\\n}\\n\\n.hover\\\\:order-1:hover {\\n  order: 1 !important\\n}\\n\\n.hover\\\\:order-2:hover {\\n  order: 2 !important\\n}\\n\\n.hover\\\\:order-3:hover {\\n  order: 3 !important\\n}\\n\\n.hover\\\\:order-4:hover {\\n  order: 4 !important\\n}\\n\\n.hover\\\\:order-5:hover {\\n  order: 5 !important\\n}\\n\\n.hover\\\\:order-6:hover {\\n  order: 6 !important\\n}\\n\\n.hover\\\\:order-first:hover {\\n  order: -1 !important\\n}\\n\\n.hover\\\\:order-last:hover {\\n  order: 999 !important\\n}\\n\\n.hover\\\\:order-normal:hover {\\n  order: 0 !important\\n}\\n\\n.focus\\\\:order-1:focus {\\n  order: 1 !important\\n}\\n\\n.focus\\\\:order-2:focus {\\n  order: 2 !important\\n}\\n\\n.focus\\\\:order-3:focus {\\n  order: 3 !important\\n}\\n\\n.focus\\\\:order-4:focus {\\n  order: 4 !important\\n}\\n\\n.focus\\\\:order-5:focus {\\n  order: 5 !important\\n}\\n\\n.focus\\\\:order-6:focus {\\n  order: 6 !important\\n}\\n\\n.focus\\\\:order-first:focus {\\n  order: -1 !important\\n}\\n\\n.focus\\\\:order-last:focus {\\n  order: 999 !important\\n}\\n\\n.focus\\\\:order-normal:focus {\\n  order: 0 !important\\n}\\n\\n.float-right {\\n  float: right !important\\n}\\n\\n.float-left {\\n  float: left !important\\n}\\n\\n.float-none {\\n  float: none !important\\n}\\n\\n.clearfix:after {\\n  content: \\\"\\\" !important;\\n  display: table !important;\\n  clear: both !important\\n}\\n\\n.font-light {\\n  font-weight: 300 !important\\n}\\n\\n.font-normal {\\n  font-weight: 400 !important\\n}\\n\\n.font-medium {\\n  font-weight: 500 !important\\n}\\n\\n.font-semibold {\\n  font-weight: 600 !important\\n}\\n\\n.font-bold {\\n  font-weight: 700 !important\\n}\\n\\n.font-extrabold {\\n  font-weight: 800 !important\\n}\\n\\n.font-black {\\n  font-weight: 900 !important\\n}\\n\\n.hover\\\\:font-light:hover {\\n  font-weight: 300 !important\\n}\\n\\n.hover\\\\:font-normal:hover {\\n  font-weight: 400 !important\\n}\\n\\n.hover\\\\:font-medium:hover {\\n  font-weight: 500 !important\\n}\\n\\n.hover\\\\:font-semibold:hover {\\n  font-weight: 600 !important\\n}\\n\\n.hover\\\\:font-bold:hover {\\n  font-weight: 700 !important\\n}\\n\\n.hover\\\\:font-extrabold:hover {\\n  font-weight: 800 !important\\n}\\n\\n.hover\\\\:font-black:hover {\\n  font-weight: 900 !important\\n}\\n\\n.h-1 {\\n  height: 0.25rem !important\\n}\\n\\n.h-2 {\\n  height: 0.5rem !important\\n}\\n\\n.h-3 {\\n  height: 0.75rem !important\\n}\\n\\n.h-4 {\\n  height: 1rem !important\\n}\\n\\n.h-5 {\\n  height: 1.25rem !important\\n}\\n\\n.h-6 {\\n  height: 1.5rem !important\\n}\\n\\n.h-8 {\\n  height: 2rem !important\\n}\\n\\n.h-10 {\\n  height: 2.5rem !important\\n}\\n\\n.h-12 {\\n  height: 3rem !important\\n}\\n\\n.h-16 {\\n  height: 4rem !important\\n}\\n\\n.h-24 {\\n  height: 6rem !important\\n}\\n\\n.h-32 {\\n  height: 8rem !important\\n}\\n\\n.h-48 {\\n  height: 12rem !important\\n}\\n\\n.h-64 {\\n  height: 16rem !important\\n}\\n\\n.h-auto {\\n  height: auto !important\\n}\\n\\n.h-px {\\n  height: 1px !important\\n}\\n\\n.h-full {\\n  height: 100% !important\\n}\\n\\n.h-screen {\\n  height: 100vh !important\\n}\\n\\n.leading-none {\\n  line-height: 1 !important\\n}\\n\\n.leading-tight {\\n  line-height: 1.25 !important\\n}\\n\\n.leading-normal {\\n  line-height: 1.5 !important\\n}\\n\\n.leading-loose {\\n  line-height: 2 !important\\n}\\n\\n.list-inside {\\n  list-style-position: inside !important\\n}\\n\\n.list-outside {\\n  list-style-position: outside !important\\n}\\n\\n.m-0 {\\n  margin: 0 !important\\n}\\n\\n.m-1 {\\n  margin: 0.25rem !important\\n}\\n\\n.m-2 {\\n  margin: 0.5rem !important\\n}\\n\\n.m-3 {\\n  margin: 0.75rem !important\\n}\\n\\n.m-4 {\\n  margin: 1rem !important\\n}\\n\\n.m-5 {\\n  margin: 1.25rem !important\\n}\\n\\n.m-6 {\\n  margin: 1.5rem !important\\n}\\n\\n.m-8 {\\n  margin: 2rem !important\\n}\\n\\n.m-10 {\\n  margin: 2.5rem !important\\n}\\n\\n.m-12 {\\n  margin: 3rem !important\\n}\\n\\n.m-16 {\\n  margin: 4rem !important\\n}\\n\\n.m-20 {\\n  margin: 5rem !important\\n}\\n\\n.m-24 {\\n  margin: 6rem !important\\n}\\n\\n.m-32 {\\n  margin: 8rem !important\\n}\\n\\n.m-auto {\\n  margin: auto !important\\n}\\n\\n.m-px {\\n  margin: 1px !important\\n}\\n\\n.m-base {\\n  margin: 2.2rem !important\\n}\\n\\n.-m-px {\\n  margin: -1px !important\\n}\\n\\n.-m-1 {\\n  margin: -0.25rem !important\\n}\\n\\n.-m-2 {\\n  margin: -0.5rem !important\\n}\\n\\n.-m-3 {\\n  margin: -0.75rem !important\\n}\\n\\n.-m-4 {\\n  margin: -1rem !important\\n}\\n\\n.my-0 {\\n  margin-top: 0 !important;\\n  margin-bottom: 0 !important\\n}\\n\\n.mx-0 {\\n  margin-left: 0 !important;\\n  margin-right: 0 !important\\n}\\n\\n.my-1 {\\n  margin-top: 0.25rem !important;\\n  margin-bottom: 0.25rem !important\\n}\\n\\n.mx-1 {\\n  margin-left: 0.25rem !important;\\n  margin-right: 0.25rem !important\\n}\\n\\n.my-2 {\\n  margin-top: 0.5rem !important;\\n  margin-bottom: 0.5rem !important\\n}\\n\\n.mx-2 {\\n  margin-left: 0.5rem !important;\\n  margin-right: 0.5rem !important\\n}\\n\\n.my-3 {\\n  margin-top: 0.75rem !important;\\n  margin-bottom: 0.75rem !important\\n}\\n\\n.mx-3 {\\n  margin-left: 0.75rem !important;\\n  margin-right: 0.75rem !important\\n}\\n\\n.my-4 {\\n  margin-top: 1rem !important;\\n  margin-bottom: 1rem !important\\n}\\n\\n.mx-4 {\\n  margin-left: 1rem !important;\\n  margin-right: 1rem !important\\n}\\n\\n.my-5 {\\n  margin-top: 1.25rem !important;\\n  margin-bottom: 1.25rem !important\\n}\\n\\n.mx-5 {\\n  margin-left: 1.25rem !important;\\n  margin-right: 1.25rem !important\\n}\\n\\n.my-6 {\\n  margin-top: 1.5rem !important;\\n  margin-bottom: 1.5rem !important\\n}\\n\\n.mx-6 {\\n  margin-left: 1.5rem !important;\\n  margin-right: 1.5rem !important\\n}\\n\\n.my-8 {\\n  margin-top: 2rem !important;\\n  margin-bottom: 2rem !important\\n}\\n\\n.mx-8 {\\n  margin-left: 2rem !important;\\n  margin-right: 2rem !important\\n}\\n\\n.my-10 {\\n  margin-top: 2.5rem !important;\\n  margin-bottom: 2.5rem !important\\n}\\n\\n.mx-10 {\\n  margin-left: 2.5rem !important;\\n  margin-right: 2.5rem !important\\n}\\n\\n.my-12 {\\n  margin-top: 3rem !important;\\n  margin-bottom: 3rem !important\\n}\\n\\n.mx-12 {\\n  margin-left: 3rem !important;\\n  margin-right: 3rem !important\\n}\\n\\n.my-16 {\\n  margin-top: 4rem !important;\\n  margin-bottom: 4rem !important\\n}\\n\\n.mx-16 {\\n  margin-left: 4rem !important;\\n  margin-right: 4rem !important\\n}\\n\\n.my-20 {\\n  margin-top: 5rem !important;\\n  margin-bottom: 5rem !important\\n}\\n\\n.mx-20 {\\n  margin-left: 5rem !important;\\n  margin-right: 5rem !important\\n}\\n\\n.my-24 {\\n  margin-top: 6rem !important;\\n  margin-bottom: 6rem !important\\n}\\n\\n.mx-24 {\\n  margin-left: 6rem !important;\\n  margin-right: 6rem !important\\n}\\n\\n.my-32 {\\n  margin-top: 8rem !important;\\n  margin-bottom: 8rem !important\\n}\\n\\n.mx-32 {\\n  margin-left: 8rem !important;\\n  margin-right: 8rem !important\\n}\\n\\n.my-auto {\\n  margin-top: auto !important;\\n  margin-bottom: auto !important\\n}\\n\\n.mx-auto {\\n  margin-left: auto !important;\\n  margin-right: auto !important\\n}\\n\\n.my-px {\\n  margin-top: 1px !important;\\n  margin-bottom: 1px !important\\n}\\n\\n.mx-px {\\n  margin-left: 1px !important;\\n  margin-right: 1px !important\\n}\\n\\n.my-base {\\n  margin-top: 2.2rem !important;\\n  margin-bottom: 2.2rem !important\\n}\\n\\n.mx-base {\\n  margin-left: 2.2rem !important;\\n  margin-right: 2.2rem !important\\n}\\n\\n.-my-px {\\n  margin-top: -1px !important;\\n  margin-bottom: -1px !important\\n}\\n\\n.-mx-px {\\n  margin-left: -1px !important;\\n  margin-right: -1px !important\\n}\\n\\n.-my-1 {\\n  margin-top: -0.25rem !important;\\n  margin-bottom: -0.25rem !important\\n}\\n\\n.-mx-1 {\\n  margin-left: -0.25rem !important;\\n  margin-right: -0.25rem !important\\n}\\n\\n.-my-2 {\\n  margin-top: -0.5rem !important;\\n  margin-bottom: -0.5rem !important\\n}\\n\\n.-mx-2 {\\n  margin-left: -0.5rem !important;\\n  margin-right: -0.5rem !important\\n}\\n\\n.-my-3 {\\n  margin-top: -0.75rem !important;\\n  margin-bottom: -0.75rem !important\\n}\\n\\n.-mx-3 {\\n  margin-left: -0.75rem !important;\\n  margin-right: -0.75rem !important\\n}\\n\\n.-my-4 {\\n  margin-top: -1rem !important;\\n  margin-bottom: -1rem !important\\n}\\n\\n.-mx-4 {\\n  margin-left: -1rem !important;\\n  margin-right: -1rem !important\\n}\\n\\n.mt-0 {\\n  margin-top: 0 !important\\n}\\n\\n.mr-0 {\\n  margin-right: 0 !important\\n}\\n\\n.mb-0 {\\n  margin-bottom: 0 !important\\n}\\n\\n.ml-0 {\\n  margin-left: 0 !important\\n}\\n\\n.mt-1 {\\n  margin-top: 0.25rem !important\\n}\\n\\n.mr-1 {\\n  margin-right: 0.25rem !important\\n}\\n\\n.mb-1 {\\n  margin-bottom: 0.25rem !important\\n}\\n\\n.ml-1 {\\n  margin-left: 0.25rem !important\\n}\\n\\n.mt-2 {\\n  margin-top: 0.5rem !important\\n}\\n\\n.mr-2 {\\n  margin-right: 0.5rem !important\\n}\\n\\n.mb-2 {\\n  margin-bottom: 0.5rem !important\\n}\\n\\n.ml-2 {\\n  margin-left: 0.5rem !important\\n}\\n\\n.mt-3 {\\n  margin-top: 0.75rem !important\\n}\\n\\n.mr-3 {\\n  margin-right: 0.75rem !important\\n}\\n\\n.mb-3 {\\n  margin-bottom: 0.75rem !important\\n}\\n\\n.ml-3 {\\n  margin-left: 0.75rem !important\\n}\\n\\n.mt-4 {\\n  margin-top: 1rem !important\\n}\\n\\n.mr-4 {\\n  margin-right: 1rem !important\\n}\\n\\n.mb-4 {\\n  margin-bottom: 1rem !important\\n}\\n\\n.ml-4 {\\n  margin-left: 1rem !important\\n}\\n\\n.mt-5 {\\n  margin-top: 1.25rem !important\\n}\\n\\n.mr-5 {\\n  margin-right: 1.25rem !important\\n}\\n\\n.mb-5 {\\n  margin-bottom: 1.25rem !important\\n}\\n\\n.ml-5 {\\n  margin-left: 1.25rem !important\\n}\\n\\n.mt-6 {\\n  margin-top: 1.5rem !important\\n}\\n\\n.mr-6 {\\n  margin-right: 1.5rem !important\\n}\\n\\n.mb-6 {\\n  margin-bottom: 1.5rem !important\\n}\\n\\n.ml-6 {\\n  margin-left: 1.5rem !important\\n}\\n\\n.mt-8 {\\n  margin-top: 2rem !important\\n}\\n\\n.mr-8 {\\n  margin-right: 2rem !important\\n}\\n\\n.mb-8 {\\n  margin-bottom: 2rem !important\\n}\\n\\n.ml-8 {\\n  margin-left: 2rem !important\\n}\\n\\n.mt-10 {\\n  margin-top: 2.5rem !important\\n}\\n\\n.mr-10 {\\n  margin-right: 2.5rem !important\\n}\\n\\n.mb-10 {\\n  margin-bottom: 2.5rem !important\\n}\\n\\n.ml-10 {\\n  margin-left: 2.5rem !important\\n}\\n\\n.mt-12 {\\n  margin-top: 3rem !important\\n}\\n\\n.mr-12 {\\n  margin-right: 3rem !important\\n}\\n\\n.mb-12 {\\n  margin-bottom: 3rem !important\\n}\\n\\n.ml-12 {\\n  margin-left: 3rem !important\\n}\\n\\n.mt-16 {\\n  margin-top: 4rem !important\\n}\\n\\n.mr-16 {\\n  margin-right: 4rem !important\\n}\\n\\n.mb-16 {\\n  margin-bottom: 4rem !important\\n}\\n\\n.ml-16 {\\n  margin-left: 4rem !important\\n}\\n\\n.mt-20 {\\n  margin-top: 5rem !important\\n}\\n\\n.mr-20 {\\n  margin-right: 5rem !important\\n}\\n\\n.mb-20 {\\n  margin-bottom: 5rem !important\\n}\\n\\n.ml-20 {\\n  margin-left: 5rem !important\\n}\\n\\n.mt-24 {\\n  margin-top: 6rem !important\\n}\\n\\n.mr-24 {\\n  margin-right: 6rem !important\\n}\\n\\n.mb-24 {\\n  margin-bottom: 6rem !important\\n}\\n\\n.ml-24 {\\n  margin-left: 6rem !important\\n}\\n\\n.mt-32 {\\n  margin-top: 8rem !important\\n}\\n\\n.mr-32 {\\n  margin-right: 8rem !important\\n}\\n\\n.mb-32 {\\n  margin-bottom: 8rem !important\\n}\\n\\n.ml-32 {\\n  margin-left: 8rem !important\\n}\\n\\n.mt-auto {\\n  margin-top: auto !important\\n}\\n\\n.mr-auto {\\n  margin-right: auto !important\\n}\\n\\n.mb-auto {\\n  margin-bottom: auto !important\\n}\\n\\n.ml-auto {\\n  margin-left: auto !important\\n}\\n\\n.mt-px {\\n  margin-top: 1px !important\\n}\\n\\n.mr-px {\\n  margin-right: 1px !important\\n}\\n\\n.mb-px {\\n  margin-bottom: 1px !important\\n}\\n\\n.ml-px {\\n  margin-left: 1px !important\\n}\\n\\n.mt-base {\\n  margin-top: 2.2rem !important\\n}\\n\\n.mr-base {\\n  margin-right: 2.2rem !important\\n}\\n\\n.mb-base {\\n  margin-bottom: 2.2rem !important\\n}\\n\\n.ml-base {\\n  margin-left: 2.2rem !important\\n}\\n\\n.-mt-px {\\n  margin-top: -1px !important\\n}\\n\\n.-mr-px {\\n  margin-right: -1px !important\\n}\\n\\n.-mb-px {\\n  margin-bottom: -1px !important\\n}\\n\\n.-ml-px {\\n  margin-left: -1px !important\\n}\\n\\n.-mt-1 {\\n  margin-top: -0.25rem !important\\n}\\n\\n.-mr-1 {\\n  margin-right: -0.25rem !important\\n}\\n\\n.-mb-1 {\\n  margin-bottom: -0.25rem !important\\n}\\n\\n.-ml-1 {\\n  margin-left: -0.25rem !important\\n}\\n\\n.-mt-2 {\\n  margin-top: -0.5rem !important\\n}\\n\\n.-mr-2 {\\n  margin-right: -0.5rem !important\\n}\\n\\n.-mb-2 {\\n  margin-bottom: -0.5rem !important\\n}\\n\\n.-ml-2 {\\n  margin-left: -0.5rem !important\\n}\\n\\n.-mt-3 {\\n  margin-top: -0.75rem !important\\n}\\n\\n.-mr-3 {\\n  margin-right: -0.75rem !important\\n}\\n\\n.-mb-3 {\\n  margin-bottom: -0.75rem !important\\n}\\n\\n.-ml-3 {\\n  margin-left: -0.75rem !important\\n}\\n\\n.-mt-4 {\\n  margin-top: -1rem !important\\n}\\n\\n.-mr-4 {\\n  margin-right: -1rem !important\\n}\\n\\n.-mb-4 {\\n  margin-bottom: -1rem !important\\n}\\n\\n.-ml-4 {\\n  margin-left: -1rem !important\\n}\\n\\n.max-h-full {\\n  max-height: 100% !important\\n}\\n\\n.max-h-screen {\\n  max-height: 100vh !important\\n}\\n\\n.max-w-xs {\\n  max-width: 20rem !important\\n}\\n\\n.max-w-sm {\\n  max-width: 30rem !important\\n}\\n\\n.max-w-md {\\n  max-width: 40rem !important\\n}\\n\\n.max-w-lg {\\n  max-width: 50rem !important\\n}\\n\\n.max-w-xl {\\n  max-width: 60rem !important\\n}\\n\\n.max-w-2xl {\\n  max-width: 70rem !important\\n}\\n\\n.max-w-3xl {\\n  max-width: 80rem !important\\n}\\n\\n.max-w-4xl {\\n  max-width: 90rem !important\\n}\\n\\n.max-w-5xl {\\n  max-width: 100rem !important\\n}\\n\\n.max-w-full {\\n  max-width: 100% !important\\n}\\n\\n.min-h-0 {\\n  min-height: 0 !important\\n}\\n\\n.min-h-full {\\n  min-height: 100% !important\\n}\\n\\n.min-h-screen {\\n  min-height: 100vh !important\\n}\\n\\n.min-w-0 {\\n  min-width: 0 !important\\n}\\n\\n.min-w-full {\\n  min-width: 100% !important\\n}\\n\\n.object-contain {\\n  -o-object-fit: contain !important;\\n     object-fit: contain !important\\n}\\n\\n.object-cover {\\n  -o-object-fit: cover !important;\\n     object-fit: cover !important\\n}\\n\\n.object-fill {\\n  -o-object-fit: fill !important;\\n     object-fit: fill !important\\n}\\n\\n.object-none {\\n  -o-object-fit: none !important;\\n     object-fit: none !important\\n}\\n\\n.object-scale-down {\\n  -o-object-fit: scale-down !important;\\n     object-fit: scale-down !important\\n}\\n\\n.object-bottom {\\n  -o-object-position: bottom !important;\\n     object-position: bottom !important\\n}\\n\\n.object-center {\\n  -o-object-position: center !important;\\n     object-position: center !important\\n}\\n\\n.object-left {\\n  -o-object-position: left !important;\\n     object-position: left !important\\n}\\n\\n.object-left-bottom {\\n  -o-object-position: left bottom !important;\\n     object-position: left bottom !important\\n}\\n\\n.object-left-top {\\n  -o-object-position: left top !important;\\n     object-position: left top !important\\n}\\n\\n.object-right {\\n  -o-object-position: right !important;\\n     object-position: right !important\\n}\\n\\n.object-right-bottom {\\n  -o-object-position: right bottom !important;\\n     object-position: right bottom !important\\n}\\n\\n.object-right-top {\\n  -o-object-position: right top !important;\\n     object-position: right top !important\\n}\\n\\n.object-top {\\n  -o-object-position: top !important;\\n     object-position: top !important\\n}\\n\\n.opacity-0 {\\n  opacity: 0 !important\\n}\\n\\n.opacity-25 {\\n  opacity: 0.25 !important\\n}\\n\\n.opacity-50 {\\n  opacity: 0.5 !important\\n}\\n\\n.opacity-75 {\\n  opacity: 0.75 !important\\n}\\n\\n.opacity-100 {\\n  opacity: 1 !important\\n}\\n\\n.outline-none {\\n  outline: 0 !important\\n}\\n\\n.focus\\\\:outline-none:focus {\\n  outline: 0 !important\\n}\\n\\n.overflow-auto {\\n  overflow: auto !important\\n}\\n\\n.overflow-hidden {\\n  overflow: hidden !important\\n}\\n\\n.overflow-visible {\\n  overflow: visible !important\\n}\\n\\n.overflow-scroll {\\n  overflow: scroll !important\\n}\\n\\n.overflow-x-auto {\\n  overflow-x: auto !important\\n}\\n\\n.overflow-y-auto {\\n  overflow-y: auto !important\\n}\\n\\n.overflow-x-hidden {\\n  overflow-x: hidden !important\\n}\\n\\n.overflow-y-hidden {\\n  overflow-y: hidden !important\\n}\\n\\n.overflow-x-visible {\\n  overflow-x: visible !important\\n}\\n\\n.overflow-y-visible {\\n  overflow-y: visible !important\\n}\\n\\n.overflow-x-scroll {\\n  overflow-x: scroll !important\\n}\\n\\n.overflow-y-scroll {\\n  overflow-y: scroll !important\\n}\\n\\n.scrolling-touch {\\n  -webkit-overflow-scrolling: touch !important\\n}\\n\\n.scrolling-auto {\\n  -webkit-overflow-scrolling: auto !important\\n}\\n\\n.p-0 {\\n  padding: 0 !important\\n}\\n\\n.p-1 {\\n  padding: 0.25rem !important\\n}\\n\\n.p-2 {\\n  padding: 0.5rem !important\\n}\\n\\n.p-3 {\\n  padding: 0.75rem !important\\n}\\n\\n.p-4 {\\n  padding: 1rem !important\\n}\\n\\n.p-5 {\\n  padding: 1.25rem !important\\n}\\n\\n.p-6 {\\n  padding: 1.5rem !important\\n}\\n\\n.p-8 {\\n  padding: 2rem !important\\n}\\n\\n.p-10 {\\n  padding: 2.5rem !important\\n}\\n\\n.p-12 {\\n  padding: 3rem !important\\n}\\n\\n.p-16 {\\n  padding: 4rem !important\\n}\\n\\n.p-20 {\\n  padding: 5rem !important\\n}\\n\\n.p-24 {\\n  padding: 6rem !important\\n}\\n\\n.p-32 {\\n  padding: 8rem !important\\n}\\n\\n.p-px {\\n  padding: 1px !important\\n}\\n\\n.p-base {\\n  padding: 2.2rem !important\\n}\\n\\n.py-0 {\\n  padding-top: 0 !important;\\n  padding-bottom: 0 !important\\n}\\n\\n.px-0 {\\n  padding-left: 0 !important;\\n  padding-right: 0 !important\\n}\\n\\n.py-1 {\\n  padding-top: 0.25rem !important;\\n  padding-bottom: 0.25rem !important\\n}\\n\\n.px-1 {\\n  padding-left: 0.25rem !important;\\n  padding-right: 0.25rem !important\\n}\\n\\n.py-2 {\\n  padding-top: 0.5rem !important;\\n  padding-bottom: 0.5rem !important\\n}\\n\\n.px-2 {\\n  padding-left: 0.5rem !important;\\n  padding-right: 0.5rem !important\\n}\\n\\n.py-3 {\\n  padding-top: 0.75rem !important;\\n  padding-bottom: 0.75rem !important\\n}\\n\\n.px-3 {\\n  padding-left: 0.75rem !important;\\n  padding-right: 0.75rem !important\\n}\\n\\n.py-4 {\\n  padding-top: 1rem !important;\\n  padding-bottom: 1rem !important\\n}\\n\\n.px-4 {\\n  padding-left: 1rem !important;\\n  padding-right: 1rem !important\\n}\\n\\n.py-5 {\\n  padding-top: 1.25rem !important;\\n  padding-bottom: 1.25rem !important\\n}\\n\\n.px-5 {\\n  padding-left: 1.25rem !important;\\n  padding-right: 1.25rem !important\\n}\\n\\n.py-6 {\\n  padding-top: 1.5rem !important;\\n  padding-bottom: 1.5rem !important\\n}\\n\\n.px-6 {\\n  padding-left: 1.5rem !important;\\n  padding-right: 1.5rem !important\\n}\\n\\n.py-8 {\\n  padding-top: 2rem !important;\\n  padding-bottom: 2rem !important\\n}\\n\\n.px-8 {\\n  padding-left: 2rem !important;\\n  padding-right: 2rem !important\\n}\\n\\n.py-10 {\\n  padding-top: 2.5rem !important;\\n  padding-bottom: 2.5rem !important\\n}\\n\\n.px-10 {\\n  padding-left: 2.5rem !important;\\n  padding-right: 2.5rem !important\\n}\\n\\n.py-12 {\\n  padding-top: 3rem !important;\\n  padding-bottom: 3rem !important\\n}\\n\\n.px-12 {\\n  padding-left: 3rem !important;\\n  padding-right: 3rem !important\\n}\\n\\n.py-16 {\\n  padding-top: 4rem !important;\\n  padding-bottom: 4rem !important\\n}\\n\\n.px-16 {\\n  padding-left: 4rem !important;\\n  padding-right: 4rem !important\\n}\\n\\n.py-20 {\\n  padding-top: 5rem !important;\\n  padding-bottom: 5rem !important\\n}\\n\\n.px-20 {\\n  padding-left: 5rem !important;\\n  padding-right: 5rem !important\\n}\\n\\n.py-24 {\\n  padding-top: 6rem !important;\\n  padding-bottom: 6rem !important\\n}\\n\\n.px-24 {\\n  padding-left: 6rem !important;\\n  padding-right: 6rem !important\\n}\\n\\n.py-32 {\\n  padding-top: 8rem !important;\\n  padding-bottom: 8rem !important\\n}\\n\\n.px-32 {\\n  padding-left: 8rem !important;\\n  padding-right: 8rem !important\\n}\\n\\n.py-px {\\n  padding-top: 1px !important;\\n  padding-bottom: 1px !important\\n}\\n\\n.px-px {\\n  padding-left: 1px !important;\\n  padding-right: 1px !important\\n}\\n\\n.py-base {\\n  padding-top: 2.2rem !important;\\n  padding-bottom: 2.2rem !important\\n}\\n\\n.px-base {\\n  padding-left: 2.2rem !important;\\n  padding-right: 2.2rem !important\\n}\\n\\n.pt-0 {\\n  padding-top: 0 !important\\n}\\n\\n.pr-0 {\\n  padding-right: 0 !important\\n}\\n\\n.pb-0 {\\n  padding-bottom: 0 !important\\n}\\n\\n.pl-0 {\\n  padding-left: 0 !important\\n}\\n\\n.pt-1 {\\n  padding-top: 0.25rem !important\\n}\\n\\n.pr-1 {\\n  padding-right: 0.25rem !important\\n}\\n\\n.pb-1 {\\n  padding-bottom: 0.25rem !important\\n}\\n\\n.pl-1 {\\n  padding-left: 0.25rem !important\\n}\\n\\n.pt-2 {\\n  padding-top: 0.5rem !important\\n}\\n\\n.pr-2 {\\n  padding-right: 0.5rem !important\\n}\\n\\n.pb-2 {\\n  padding-bottom: 0.5rem !important\\n}\\n\\n.pl-2 {\\n  padding-left: 0.5rem !important\\n}\\n\\n.pt-3 {\\n  padding-top: 0.75rem !important\\n}\\n\\n.pr-3 {\\n  padding-right: 0.75rem !important\\n}\\n\\n.pb-3 {\\n  padding-bottom: 0.75rem !important\\n}\\n\\n.pl-3 {\\n  padding-left: 0.75rem !important\\n}\\n\\n.pt-4 {\\n  padding-top: 1rem !important\\n}\\n\\n.pr-4 {\\n  padding-right: 1rem !important\\n}\\n\\n.pb-4 {\\n  padding-bottom: 1rem !important\\n}\\n\\n.pl-4 {\\n  padding-left: 1rem !important\\n}\\n\\n.pt-5 {\\n  padding-top: 1.25rem !important\\n}\\n\\n.pr-5 {\\n  padding-right: 1.25rem !important\\n}\\n\\n.pb-5 {\\n  padding-bottom: 1.25rem !important\\n}\\n\\n.pl-5 {\\n  padding-left: 1.25rem !important\\n}\\n\\n.pt-6 {\\n  padding-top: 1.5rem !important\\n}\\n\\n.pr-6 {\\n  padding-right: 1.5rem !important\\n}\\n\\n.pb-6 {\\n  padding-bottom: 1.5rem !important\\n}\\n\\n.pl-6 {\\n  padding-left: 1.5rem !important\\n}\\n\\n.pt-8 {\\n  padding-top: 2rem !important\\n}\\n\\n.pr-8 {\\n  padding-right: 2rem !important\\n}\\n\\n.pb-8 {\\n  padding-bottom: 2rem !important\\n}\\n\\n.pl-8 {\\n  padding-left: 2rem !important\\n}\\n\\n.pt-10 {\\n  padding-top: 2.5rem !important\\n}\\n\\n.pr-10 {\\n  padding-right: 2.5rem !important\\n}\\n\\n.pb-10 {\\n  padding-bottom: 2.5rem !important\\n}\\n\\n.pl-10 {\\n  padding-left: 2.5rem !important\\n}\\n\\n.pt-12 {\\n  padding-top: 3rem !important\\n}\\n\\n.pr-12 {\\n  padding-right: 3rem !important\\n}\\n\\n.pb-12 {\\n  padding-bottom: 3rem !important\\n}\\n\\n.pl-12 {\\n  padding-left: 3rem !important\\n}\\n\\n.pt-16 {\\n  padding-top: 4rem !important\\n}\\n\\n.pr-16 {\\n  padding-right: 4rem !important\\n}\\n\\n.pb-16 {\\n  padding-bottom: 4rem !important\\n}\\n\\n.pl-16 {\\n  padding-left: 4rem !important\\n}\\n\\n.pt-20 {\\n  padding-top: 5rem !important\\n}\\n\\n.pr-20 {\\n  padding-right: 5rem !important\\n}\\n\\n.pb-20 {\\n  padding-bottom: 5rem !important\\n}\\n\\n.pl-20 {\\n  padding-left: 5rem !important\\n}\\n\\n.pt-24 {\\n  padding-top: 6rem !important\\n}\\n\\n.pr-24 {\\n  padding-right: 6rem !important\\n}\\n\\n.pb-24 {\\n  padding-bottom: 6rem !important\\n}\\n\\n.pl-24 {\\n  padding-left: 6rem !important\\n}\\n\\n.pt-32 {\\n  padding-top: 8rem !important\\n}\\n\\n.pr-32 {\\n  padding-right: 8rem !important\\n}\\n\\n.pb-32 {\\n  padding-bottom: 8rem !important\\n}\\n\\n.pl-32 {\\n  padding-left: 8rem !important\\n}\\n\\n.pt-px {\\n  padding-top: 1px !important\\n}\\n\\n.pr-px {\\n  padding-right: 1px !important\\n}\\n\\n.pb-px {\\n  padding-bottom: 1px !important\\n}\\n\\n.pl-px {\\n  padding-left: 1px !important\\n}\\n\\n.pt-base {\\n  padding-top: 2.2rem !important\\n}\\n\\n.pr-base {\\n  padding-right: 2.2rem !important\\n}\\n\\n.pb-base {\\n  padding-bottom: 2.2rem !important\\n}\\n\\n.pl-base {\\n  padding-left: 2.2rem !important\\n}\\n\\n.placeholder-transparent::-webkit-input-placeholder {\\n  color: transparent !important\\n}\\n\\n.placeholder-transparent::-moz-placeholder {\\n  color: transparent !important\\n}\\n\\n.placeholder-transparent:-ms-input-placeholder {\\n  color: transparent !important\\n}\\n\\n.placeholder-transparent::-ms-input-placeholder {\\n  color: transparent !important\\n}\\n\\n.placeholder-transparent::placeholder {\\n  color: transparent !important\\n}\\n\\n.placeholder-black::-webkit-input-placeholder {\\n  color: #22292f !important\\n}\\n\\n.placeholder-black::-moz-placeholder {\\n  color: #22292f !important\\n}\\n\\n.placeholder-black:-ms-input-placeholder {\\n  color: #22292f !important\\n}\\n\\n.placeholder-black::-ms-input-placeholder {\\n  color: #22292f !important\\n}\\n\\n.placeholder-black::placeholder {\\n  color: #22292f !important\\n}\\n\\n.placeholder-white::-webkit-input-placeholder {\\n  color: #ffffff !important\\n}\\n\\n.placeholder-white::-moz-placeholder {\\n  color: #ffffff !important\\n}\\n\\n.placeholder-white:-ms-input-placeholder {\\n  color: #ffffff !important\\n}\\n\\n.placeholder-white::-ms-input-placeholder {\\n  color: #ffffff !important\\n}\\n\\n.placeholder-white::placeholder {\\n  color: #ffffff !important\\n}\\n\\n.placeholder-grey::-webkit-input-placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.placeholder-grey::-moz-placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.placeholder-grey:-ms-input-placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.placeholder-grey::-ms-input-placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.placeholder-grey::placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.placeholder-grey-light::-webkit-input-placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.placeholder-grey-light::-moz-placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.placeholder-grey-light:-ms-input-placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.placeholder-grey-light::-ms-input-placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.placeholder-grey-light::placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.focus\\\\:placeholder-transparent:focus::-webkit-input-placeholder {\\n  color: transparent !important\\n}\\n\\n.focus\\\\:placeholder-transparent:focus::-moz-placeholder {\\n  color: transparent !important\\n}\\n\\n.focus\\\\:placeholder-transparent:focus:-ms-input-placeholder {\\n  color: transparent !important\\n}\\n\\n.focus\\\\:placeholder-transparent:focus::-ms-input-placeholder {\\n  color: transparent !important\\n}\\n\\n.focus\\\\:placeholder-transparent:focus::placeholder {\\n  color: transparent !important\\n}\\n\\n.focus\\\\:placeholder-black:focus::-webkit-input-placeholder {\\n  color: #22292f !important\\n}\\n\\n.focus\\\\:placeholder-black:focus::-moz-placeholder {\\n  color: #22292f !important\\n}\\n\\n.focus\\\\:placeholder-black:focus:-ms-input-placeholder {\\n  color: #22292f !important\\n}\\n\\n.focus\\\\:placeholder-black:focus::-ms-input-placeholder {\\n  color: #22292f !important\\n}\\n\\n.focus\\\\:placeholder-black:focus::placeholder {\\n  color: #22292f !important\\n}\\n\\n.focus\\\\:placeholder-white:focus::-webkit-input-placeholder {\\n  color: #ffffff !important\\n}\\n\\n.focus\\\\:placeholder-white:focus::-moz-placeholder {\\n  color: #ffffff !important\\n}\\n\\n.focus\\\\:placeholder-white:focus:-ms-input-placeholder {\\n  color: #ffffff !important\\n}\\n\\n.focus\\\\:placeholder-white:focus::-ms-input-placeholder {\\n  color: #ffffff !important\\n}\\n\\n.focus\\\\:placeholder-white:focus::placeholder {\\n  color: #ffffff !important\\n}\\n\\n.focus\\\\:placeholder-grey:focus::-webkit-input-placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.focus\\\\:placeholder-grey:focus::-moz-placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.focus\\\\:placeholder-grey:focus:-ms-input-placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.focus\\\\:placeholder-grey:focus::-ms-input-placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.focus\\\\:placeholder-grey:focus::placeholder {\\n  color: #b8c2cc !important\\n}\\n\\n.focus\\\\:placeholder-grey-light:focus::-webkit-input-placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.focus\\\\:placeholder-grey-light:focus::-moz-placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.focus\\\\:placeholder-grey-light:focus:-ms-input-placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.focus\\\\:placeholder-grey-light:focus::-ms-input-placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.focus\\\\:placeholder-grey-light:focus::placeholder {\\n  color: #dae1e7 !important\\n}\\n\\n.pointer-events-none {\\n  pointer-events: none !important\\n}\\n\\n.pointer-events-auto {\\n  pointer-events: auto !important\\n}\\n\\n.static {\\n  position: static !important\\n}\\n\\n.fixed {\\n  position: fixed !important\\n}\\n\\n.absolute {\\n  position: absolute !important\\n}\\n\\n.relative {\\n  position: relative !important\\n}\\n\\n.sticky {\\n  position: -webkit-sticky !important;\\n  position: sticky !important\\n}\\n\\n.inset-0 {\\n  top: 0 !important;\\n  right: 0 !important;\\n  bottom: 0 !important;\\n  left: 0 !important\\n}\\n\\n.inset-auto {\\n  top: auto !important;\\n  right: auto !important;\\n  bottom: auto !important;\\n  left: auto !important\\n}\\n\\n.inset-y-0 {\\n  top: 0 !important;\\n  bottom: 0 !important\\n}\\n\\n.inset-x-0 {\\n  right: 0 !important;\\n  left: 0 !important\\n}\\n\\n.inset-y-auto {\\n  top: auto !important;\\n  bottom: auto !important\\n}\\n\\n.inset-x-auto {\\n  right: auto !important;\\n  left: auto !important\\n}\\n\\n.top-0 {\\n  top: 0 !important\\n}\\n\\n.right-0 {\\n  right: 0 !important\\n}\\n\\n.bottom-0 {\\n  bottom: 0 !important\\n}\\n\\n.left-0 {\\n  left: 0 !important\\n}\\n\\n.top-auto {\\n  top: auto !important\\n}\\n\\n.right-auto {\\n  right: auto !important\\n}\\n\\n.bottom-auto {\\n  bottom: auto !important\\n}\\n\\n.left-auto {\\n  left: auto !important\\n}\\n\\n.resize-none {\\n  resize: none !important\\n}\\n\\n.resize-y {\\n  resize: vertical !important\\n}\\n\\n.resize-x {\\n  resize: horizontal !important\\n}\\n\\n.resize {\\n  resize: both !important\\n}\\n\\n.shadow {\\n  box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n}\\n\\n.shadow-md {\\n  box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n}\\n\\n.shadow-lg {\\n  box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n}\\n\\n.shadow-inner {\\n  box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n}\\n\\n.shadow-xl {\\n  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n}\\n\\n.shadow-2xl {\\n  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n}\\n\\n.shadow-outline {\\n  box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n}\\n\\n.shadow-none {\\n  box-shadow: none !important\\n}\\n\\n.shadow-drop {\\n  box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n}\\n\\n.hover\\\\:shadow:hover {\\n  box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n}\\n\\n.hover\\\\:shadow-md:hover {\\n  box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n}\\n\\n.hover\\\\:shadow-lg:hover {\\n  box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n}\\n\\n.hover\\\\:shadow-inner:hover {\\n  box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n}\\n\\n.hover\\\\:shadow-xl:hover {\\n  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n}\\n\\n.hover\\\\:shadow-2xl:hover {\\n  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n}\\n\\n.hover\\\\:shadow-outline:hover {\\n  box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n}\\n\\n.hover\\\\:shadow-none:hover {\\n  box-shadow: none !important\\n}\\n\\n.hover\\\\:shadow-drop:hover {\\n  box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n}\\n\\n.focus\\\\:shadow:focus {\\n  box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n}\\n\\n.focus\\\\:shadow-md:focus {\\n  box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n}\\n\\n.focus\\\\:shadow-lg:focus {\\n  box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n}\\n\\n.focus\\\\:shadow-inner:focus {\\n  box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n}\\n\\n.focus\\\\:shadow-xl:focus {\\n  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n}\\n\\n.focus\\\\:shadow-2xl:focus {\\n  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n}\\n\\n.focus\\\\:shadow-outline:focus {\\n  box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n}\\n\\n.focus\\\\:shadow-none:focus {\\n  box-shadow: none !important\\n}\\n\\n.focus\\\\:shadow-drop:focus {\\n  box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n}\\n\\n.fill-current {\\n  fill: currentColor !important\\n}\\n\\n.stroke-current {\\n  stroke: currentColor !important\\n}\\n\\n.table-auto {\\n  table-layout: auto !important\\n}\\n\\n.table-fixed {\\n  table-layout: fixed !important\\n}\\n\\n.text-left {\\n  text-align: left !important\\n}\\n\\n.text-center {\\n  text-align: center !important\\n}\\n\\n.text-right {\\n  text-align: right !important\\n}\\n\\n.text-justify {\\n  text-align: justify !important\\n}\\n\\n.text-transparent {\\n  color: transparent !important\\n}\\n\\n.text-black {\\n  color: #22292f !important\\n}\\n\\n.text-white {\\n  color: #ffffff !important\\n}\\n\\n.text-grey {\\n  color: #b8c2cc !important\\n}\\n\\n.text-grey-light {\\n  color: #dae1e7 !important\\n}\\n\\n.hover\\\\:text-transparent:hover {\\n  color: transparent !important\\n}\\n\\n.hover\\\\:text-black:hover {\\n  color: #22292f !important\\n}\\n\\n.hover\\\\:text-white:hover {\\n  color: #ffffff !important\\n}\\n\\n.hover\\\\:text-grey:hover {\\n  color: #b8c2cc !important\\n}\\n\\n.hover\\\\:text-grey-light:hover {\\n  color: #dae1e7 !important\\n}\\n\\n.focus\\\\:text-transparent:focus {\\n  color: transparent !important\\n}\\n\\n.focus\\\\:text-black:focus {\\n  color: #22292f !important\\n}\\n\\n.focus\\\\:text-white:focus {\\n  color: #ffffff !important\\n}\\n\\n.focus\\\\:text-grey:focus {\\n  color: #b8c2cc !important\\n}\\n\\n.focus\\\\:text-grey-light:focus {\\n  color: #dae1e7 !important\\n}\\n\\n.text-xs {\\n  font-size: .75rem !important\\n}\\n\\n.text-sm {\\n  font-size: .875rem !important\\n}\\n\\n.text-base {\\n  font-size: 1rem !important\\n}\\n\\n.text-lg {\\n  font-size: 1.125rem !important\\n}\\n\\n.text-xl {\\n  font-size: 1.25rem !important\\n}\\n\\n.text-2xl {\\n  font-size: 1.5rem !important\\n}\\n\\n.text-3xl {\\n  font-size: 1.875rem !important\\n}\\n\\n.text-4xl {\\n  font-size: 2.25rem !important\\n}\\n\\n.text-5xl {\\n  font-size: 3rem !important\\n}\\n\\n.text-6xl {\\n  font-size: 4rem !important\\n}\\n\\n.italic {\\n  font-style: italic !important\\n}\\n\\n.not-italic {\\n  font-style: normal !important\\n}\\n\\n.hover\\\\:italic:hover {\\n  font-style: italic !important\\n}\\n\\n.hover\\\\:not-italic:hover {\\n  font-style: normal !important\\n}\\n\\n.focus\\\\:italic:focus {\\n  font-style: italic !important\\n}\\n\\n.focus\\\\:not-italic:focus {\\n  font-style: normal !important\\n}\\n\\n.uppercase {\\n  text-transform: uppercase !important\\n}\\n\\n.lowercase {\\n  text-transform: lowercase !important\\n}\\n\\n.capitalize {\\n  text-transform: capitalize !important\\n}\\n\\n.normal-case {\\n  text-transform: none !important\\n}\\n\\n.hover\\\\:uppercase:hover {\\n  text-transform: uppercase !important\\n}\\n\\n.hover\\\\:lowercase:hover {\\n  text-transform: lowercase !important\\n}\\n\\n.hover\\\\:capitalize:hover {\\n  text-transform: capitalize !important\\n}\\n\\n.hover\\\\:normal-case:hover {\\n  text-transform: none !important\\n}\\n\\n.focus\\\\:uppercase:focus {\\n  text-transform: uppercase !important\\n}\\n\\n.focus\\\\:lowercase:focus {\\n  text-transform: lowercase !important\\n}\\n\\n.focus\\\\:capitalize:focus {\\n  text-transform: capitalize !important\\n}\\n\\n.focus\\\\:normal-case:focus {\\n  text-transform: none !important\\n}\\n\\n.underline {\\n  text-decoration: underline !important\\n}\\n\\n.line-through {\\n  text-decoration: line-through !important\\n}\\n\\n.no-underline {\\n  text-decoration: none !important\\n}\\n\\n.hover\\\\:underline:hover {\\n  text-decoration: underline !important\\n}\\n\\n.hover\\\\:line-through:hover {\\n  text-decoration: line-through !important\\n}\\n\\n.hover\\\\:no-underline:hover {\\n  text-decoration: none !important\\n}\\n\\n.focus\\\\:underline:focus {\\n  text-decoration: underline !important\\n}\\n\\n.focus\\\\:line-through:focus {\\n  text-decoration: line-through !important\\n}\\n\\n.focus\\\\:no-underline:focus {\\n  text-decoration: none !important\\n}\\n\\n.antialiased {\\n  -webkit-font-smoothing: antialiased !important;\\n  -moz-osx-font-smoothing: grayscale !important\\n}\\n\\n.subpixel-antialiased {\\n  -webkit-font-smoothing: auto !important;\\n  -moz-osx-font-smoothing: auto !important\\n}\\n\\n.hover\\\\:antialiased:hover {\\n  -webkit-font-smoothing: antialiased !important;\\n  -moz-osx-font-smoothing: grayscale !important\\n}\\n\\n.hover\\\\:subpixel-antialiased:hover {\\n  -webkit-font-smoothing: auto !important;\\n  -moz-osx-font-smoothing: auto !important\\n}\\n\\n.focus\\\\:antialiased:focus {\\n  -webkit-font-smoothing: antialiased !important;\\n  -moz-osx-font-smoothing: grayscale !important\\n}\\n\\n.focus\\\\:subpixel-antialiased:focus {\\n  -webkit-font-smoothing: auto !important;\\n  -moz-osx-font-smoothing: auto !important\\n}\\n\\n.select-none {\\n  -webkit-user-select: none !important;\\n     -moz-user-select: none !important;\\n      -ms-user-select: none !important;\\n          user-select: none !important\\n}\\n\\n.select-text {\\n  -webkit-user-select: text !important;\\n     -moz-user-select: text !important;\\n      -ms-user-select: text !important;\\n          user-select: text !important\\n}\\n\\n.select-all {\\n  -webkit-user-select: all !important;\\n     -moz-user-select: all !important;\\n      -ms-user-select: all !important;\\n          user-select: all !important\\n}\\n\\n.select-auto {\\n  -webkit-user-select: auto !important;\\n     -moz-user-select: auto !important;\\n      -ms-user-select: auto !important;\\n          user-select: auto !important\\n}\\n\\n.align-baseline {\\n  vertical-align: baseline !important\\n}\\n\\n.align-top {\\n  vertical-align: top !important\\n}\\n\\n.align-middle {\\n  vertical-align: middle !important\\n}\\n\\n.align-bottom {\\n  vertical-align: bottom !important\\n}\\n\\n.align-text-top {\\n  vertical-align: text-top !important\\n}\\n\\n.align-text-bottom {\\n  vertical-align: text-bottom !important\\n}\\n\\n.visible {\\n  visibility: visible !important\\n}\\n\\n.invisible {\\n  visibility: hidden !important\\n}\\n\\n.whitespace-normal {\\n  white-space: normal !important\\n}\\n\\n.whitespace-no-wrap {\\n  white-space: nowrap !important\\n}\\n\\n.whitespace-pre {\\n  white-space: pre !important\\n}\\n\\n.whitespace-pre-line {\\n  white-space: pre-line !important\\n}\\n\\n.whitespace-pre-wrap {\\n  white-space: pre-wrap !important\\n}\\n\\n.break-normal {\\n  overflow-wrap: normal !important;\\n  word-break: normal !important\\n}\\n\\n.break-words {\\n  overflow-wrap: break-word !important\\n}\\n\\n.break-all {\\n  word-break: break-all !important\\n}\\n\\n.truncate {\\n  overflow: hidden !important;\\n  text-overflow: ellipsis !important;\\n  white-space: nowrap !important\\n}\\n\\n.w-1 {\\n  width: 0.25rem !important\\n}\\n\\n.w-2 {\\n  width: 0.5rem !important\\n}\\n\\n.w-3 {\\n  width: 0.75rem !important\\n}\\n\\n.w-4 {\\n  width: 1rem !important\\n}\\n\\n.w-5 {\\n  width: 1.25rem !important\\n}\\n\\n.w-6 {\\n  width: 1.5rem !important\\n}\\n\\n.w-8 {\\n  width: 2rem !important\\n}\\n\\n.w-10 {\\n  width: 2.5rem !important\\n}\\n\\n.w-12 {\\n  width: 3rem !important\\n}\\n\\n.w-16 {\\n  width: 4rem !important\\n}\\n\\n.w-24 {\\n  width: 6rem !important\\n}\\n\\n.w-32 {\\n  width: 8rem !important\\n}\\n\\n.w-48 {\\n  width: 12rem !important\\n}\\n\\n.w-64 {\\n  width: 16rem !important\\n}\\n\\n.w-auto {\\n  width: auto !important\\n}\\n\\n.w-px {\\n  width: 1px !important\\n}\\n\\n.w-1\\\\/2 {\\n  width: 50% !important\\n}\\n\\n.w-1\\\\/3 {\\n  width: 33.33333% !important\\n}\\n\\n.w-2\\\\/3 {\\n  width: 66.66667% !important\\n}\\n\\n.w-1\\\\/4 {\\n  width: 25% !important\\n}\\n\\n.w-3\\\\/4 {\\n  width: 75% !important\\n}\\n\\n.w-1\\\\/5 {\\n  width: 20% !important\\n}\\n\\n.w-2\\\\/5 {\\n  width: 40% !important\\n}\\n\\n.w-3\\\\/5 {\\n  width: 60% !important\\n}\\n\\n.w-4\\\\/5 {\\n  width: 80% !important\\n}\\n\\n.w-1\\\\/6 {\\n  width: 16.66667% !important\\n}\\n\\n.w-5\\\\/6 {\\n  width: 83.33333% !important\\n}\\n\\n.w-1\\\\/12 {\\n  width: 8.33333% !important\\n}\\n\\n.w-2\\\\/12 {\\n  width: 16.66667% !important\\n}\\n\\n.w-3\\\\/12 {\\n  width: 25% !important\\n}\\n\\n.w-4\\\\/12 {\\n  width: 33.33333% !important\\n}\\n\\n.w-5\\\\/12 {\\n  width: 41.66667% !important\\n}\\n\\n.w-6\\\\/12 {\\n  width: 50% !important\\n}\\n\\n.w-7\\\\/12 {\\n  width: 58.33333% !important\\n}\\n\\n.w-8\\\\/12 {\\n  width: 66.66667% !important\\n}\\n\\n.w-9\\\\/12 {\\n  width: 75% !important\\n}\\n\\n.w-10\\\\/12 {\\n  width: 83.33333% !important\\n}\\n\\n.w-11\\\\/12 {\\n  width: 91.66667% !important\\n}\\n\\n.w-full {\\n  width: 100% !important\\n}\\n\\n.w-screen {\\n  width: 100vw !important\\n}\\n\\n.z-0 {\\n  z-index: 0 !important\\n}\\n\\n.z-10 {\\n  z-index: 10 !important\\n}\\n\\n.z-20 {\\n  z-index: 20 !important\\n}\\n\\n.z-30 {\\n  z-index: 30 !important\\n}\\n\\n.z-40 {\\n  z-index: 40 !important\\n}\\n\\n.z-50 {\\n  z-index: 50 !important\\n}\\n\\n.z-auto {\\n  z-index: auto !important\\n}\\n\\n/**\\n * Here you would add any custom utilities you need that don't come out of the\\n * box with Tailwind.\\n *\\n * Example :\\n *\\n * .bg-pattern-graph-paper { ... }\\n * .skew-45 { ... }\\n *\\n * Or if using a preprocessor or `postcss-import`:\\n *\\n * @import \\\"utilities/background-patterns\\\";\\n * @import \\\"utilities/skew-transforms\\\";\\n */\\n\\n@media (min-width: 576px) {\\n  .sm\\\\:sr-only {\\n    position: absolute !important;\\n    width: 1px !important;\\n    height: 1px !important;\\n    padding: 0 !important;\\n    margin: -1px !important;\\n    overflow: hidden !important;\\n    clip: rect(0, 0, 0, 0) !important;\\n    white-space: nowrap !important;\\n    border-width: 0 !important\\n  }\\n\\n  .sm\\\\:not-sr-only {\\n    position: static !important;\\n    width: auto !important;\\n    height: auto !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    overflow: visible !important;\\n    clip: auto !important;\\n    white-space: normal !important\\n  }\\n\\n  .sm\\\\:focus\\\\:sr-only:focus {\\n    position: absolute !important;\\n    width: 1px !important;\\n    height: 1px !important;\\n    padding: 0 !important;\\n    margin: -1px !important;\\n    overflow: hidden !important;\\n    clip: rect(0, 0, 0, 0) !important;\\n    white-space: nowrap !important;\\n    border-width: 0 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:not-sr-only:focus {\\n    position: static !important;\\n    width: auto !important;\\n    height: auto !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    overflow: visible !important;\\n    clip: auto !important;\\n    white-space: normal !important\\n  }\\n\\n  .sm\\\\:appearance-none {\\n    -webkit-appearance: none !important;\\n       -moz-appearance: none !important;\\n            appearance: none !important\\n  }\\n\\n  .sm\\\\:bg-fixed {\\n    background-attachment: fixed !important\\n  }\\n\\n  .sm\\\\:bg-local {\\n    background-attachment: local !important\\n  }\\n\\n  .sm\\\\:bg-scroll {\\n    background-attachment: scroll !important\\n  }\\n\\n  .sm\\\\:bg-transparent {\\n    background-color: transparent !important\\n  }\\n\\n  .sm\\\\:bg-black {\\n    background-color: #22292f !important\\n  }\\n\\n  .sm\\\\:bg-white {\\n    background-color: #ffffff !important\\n  }\\n\\n  .sm\\\\:bg-grey {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:bg-grey-light {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:bg-transparent:hover {\\n    background-color: transparent !important\\n  }\\n\\n  .sm\\\\:hover\\\\:bg-black:hover {\\n    background-color: #22292f !important\\n  }\\n\\n  .sm\\\\:hover\\\\:bg-white:hover {\\n    background-color: #ffffff !important\\n  }\\n\\n  .sm\\\\:hover\\\\:bg-grey:hover {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:hover\\\\:bg-grey-light:hover {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:bg-transparent:focus {\\n    background-color: transparent !important\\n  }\\n\\n  .sm\\\\:focus\\\\:bg-black:focus {\\n    background-color: #22292f !important\\n  }\\n\\n  .sm\\\\:focus\\\\:bg-white:focus {\\n    background-color: #ffffff !important\\n  }\\n\\n  .sm\\\\:focus\\\\:bg-grey:focus {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:focus\\\\:bg-grey-light:focus {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:bg-auto {\\n    background-size: auto !important\\n  }\\n\\n  .sm\\\\:bg-cover {\\n    background-size: cover !important\\n  }\\n\\n  .sm\\\\:bg-contain {\\n    background-size: contain !important\\n  }\\n\\n  .sm\\\\:border-transparent {\\n    border-color: transparent !important\\n  }\\n\\n  .sm\\\\:border-black {\\n    border-color: #22292f !important\\n  }\\n\\n  .sm\\\\:border-white {\\n    border-color: #ffffff !important\\n  }\\n\\n  .sm\\\\:border-grey {\\n    border-color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:border-grey-light {\\n    border-color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:border-transparent:hover {\\n    border-color: transparent !important\\n  }\\n\\n  .sm\\\\:hover\\\\:border-black:hover {\\n    border-color: #22292f !important\\n  }\\n\\n  .sm\\\\:hover\\\\:border-white:hover {\\n    border-color: #ffffff !important\\n  }\\n\\n  .sm\\\\:hover\\\\:border-grey:hover {\\n    border-color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:hover\\\\:border-grey-light:hover {\\n    border-color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:border-solid {\\n    border-style: solid !important\\n  }\\n\\n  .sm\\\\:border-dashed {\\n    border-style: dashed !important\\n  }\\n\\n  .sm\\\\:border-dotted {\\n    border-style: dotted !important\\n  }\\n\\n  .sm\\\\:border-double {\\n    border-style: double !important\\n  }\\n\\n  .sm\\\\:border-none {\\n    border-style: none !important\\n  }\\n\\n  .sm\\\\:border-0 {\\n    border-width: 0 !important\\n  }\\n\\n  .sm\\\\:border-2 {\\n    border-width: 2px !important\\n  }\\n\\n  .sm\\\\:border-4 {\\n    border-width: 4px !important\\n  }\\n\\n  .sm\\\\:border-8 {\\n    border-width: 8px !important\\n  }\\n\\n  .sm\\\\:border {\\n    border-width: 1px !important\\n  }\\n\\n  .sm\\\\:border-t-0 {\\n    border-top-width: 0 !important\\n  }\\n\\n  .sm\\\\:border-r-0 {\\n    border-right-width: 0 !important\\n  }\\n\\n  .sm\\\\:border-b-0 {\\n    border-bottom-width: 0 !important\\n  }\\n\\n  .sm\\\\:border-l-0 {\\n    border-left-width: 0 !important\\n  }\\n\\n  .sm\\\\:border-t-2 {\\n    border-top-width: 2px !important\\n  }\\n\\n  .sm\\\\:border-r-2 {\\n    border-right-width: 2px !important\\n  }\\n\\n  .sm\\\\:border-b-2 {\\n    border-bottom-width: 2px !important\\n  }\\n\\n  .sm\\\\:border-l-2 {\\n    border-left-width: 2px !important\\n  }\\n\\n  .sm\\\\:border-t-4 {\\n    border-top-width: 4px !important\\n  }\\n\\n  .sm\\\\:border-r-4 {\\n    border-right-width: 4px !important\\n  }\\n\\n  .sm\\\\:border-b-4 {\\n    border-bottom-width: 4px !important\\n  }\\n\\n  .sm\\\\:border-l-4 {\\n    border-left-width: 4px !important\\n  }\\n\\n  .sm\\\\:border-t-8 {\\n    border-top-width: 8px !important\\n  }\\n\\n  .sm\\\\:border-r-8 {\\n    border-right-width: 8px !important\\n  }\\n\\n  .sm\\\\:border-b-8 {\\n    border-bottom-width: 8px !important\\n  }\\n\\n  .sm\\\\:border-l-8 {\\n    border-left-width: 8px !important\\n  }\\n\\n  .sm\\\\:border-t {\\n    border-top-width: 1px !important\\n  }\\n\\n  .sm\\\\:border-r {\\n    border-right-width: 1px !important\\n  }\\n\\n  .sm\\\\:border-b {\\n    border-bottom-width: 1px !important\\n  }\\n\\n  .sm\\\\:border-l {\\n    border-left-width: 1px !important\\n  }\\n\\n  .sm\\\\:block {\\n    display: block !important\\n  }\\n\\n  .sm\\\\:inline-block {\\n    display: inline-block !important\\n  }\\n\\n  .sm\\\\:inline {\\n    display: inline !important\\n  }\\n\\n  .sm\\\\:flex {\\n    display: flex !important\\n  }\\n\\n  .sm\\\\:inline-flex {\\n    display: inline-flex !important\\n  }\\n\\n  .sm\\\\:table {\\n    display: table !important\\n  }\\n\\n  .sm\\\\:table-row {\\n    display: table-row !important\\n  }\\n\\n  .sm\\\\:table-cell {\\n    display: table-cell !important\\n  }\\n\\n  .sm\\\\:hidden {\\n    display: none !important\\n  }\\n\\n  .sm\\\\:flex-row {\\n    flex-direction: row !important\\n  }\\n\\n  .sm\\\\:flex-row-reverse {\\n    flex-direction: row-reverse !important\\n  }\\n\\n  .sm\\\\:flex-col {\\n    flex-direction: column !important\\n  }\\n\\n  .sm\\\\:flex-col-reverse {\\n    flex-direction: column-reverse !important\\n  }\\n\\n  .sm\\\\:flex-wrap {\\n    flex-wrap: wrap !important\\n  }\\n\\n  .sm\\\\:flex-wrap-reverse {\\n    flex-wrap: wrap-reverse !important\\n  }\\n\\n  .sm\\\\:flex-no-wrap {\\n    flex-wrap: nowrap !important\\n  }\\n\\n  .sm\\\\:items-start {\\n    align-items: flex-start !important\\n  }\\n\\n  .sm\\\\:items-end {\\n    align-items: flex-end !important\\n  }\\n\\n  .sm\\\\:items-center {\\n    align-items: center !important\\n  }\\n\\n  .sm\\\\:items-baseline {\\n    align-items: baseline !important\\n  }\\n\\n  .sm\\\\:items-stretch {\\n    align-items: stretch !important\\n  }\\n\\n  .sm\\\\:self-auto {\\n    align-self: auto !important\\n  }\\n\\n  .sm\\\\:self-start {\\n    align-self: flex-start !important\\n  }\\n\\n  .sm\\\\:self-end {\\n    align-self: flex-end !important\\n  }\\n\\n  .sm\\\\:self-center {\\n    align-self: center !important\\n  }\\n\\n  .sm\\\\:self-stretch {\\n    align-self: stretch !important\\n  }\\n\\n  .sm\\\\:justify-start {\\n    justify-content: flex-start !important\\n  }\\n\\n  .sm\\\\:justify-end {\\n    justify-content: flex-end !important\\n  }\\n\\n  .sm\\\\:justify-center {\\n    justify-content: center !important\\n  }\\n\\n  .sm\\\\:justify-between {\\n    justify-content: space-between !important\\n  }\\n\\n  .sm\\\\:justify-around {\\n    justify-content: space-around !important\\n  }\\n\\n  .sm\\\\:content-center {\\n    align-content: center !important\\n  }\\n\\n  .sm\\\\:content-start {\\n    align-content: flex-start !important\\n  }\\n\\n  .sm\\\\:content-end {\\n    align-content: flex-end !important\\n  }\\n\\n  .sm\\\\:content-between {\\n    align-content: space-between !important\\n  }\\n\\n  .sm\\\\:content-around {\\n    align-content: space-around !important\\n  }\\n\\n  .sm\\\\:flex-1 {\\n    flex: 1 1 0% !important\\n  }\\n\\n  .sm\\\\:flex-auto {\\n    flex: 1 1 auto !important\\n  }\\n\\n  .sm\\\\:flex-initial {\\n    flex: 0 1 auto !important\\n  }\\n\\n  .sm\\\\:flex-none {\\n    flex: none !important\\n  }\\n\\n  .sm\\\\:flex-grow-0 {\\n    flex-grow: 0 !important\\n  }\\n\\n  .sm\\\\:flex-grow {\\n    flex-grow: 1 !important\\n  }\\n\\n  .sm\\\\:flex-shrink-0 {\\n    flex-shrink: 0 !important\\n  }\\n\\n  .sm\\\\:flex-shrink {\\n    flex-shrink: 1 !important\\n  }\\n\\n  .sm\\\\:order-1 {\\n    order: 1 !important\\n  }\\n\\n  .sm\\\\:order-2 {\\n    order: 2 !important\\n  }\\n\\n  .sm\\\\:order-3 {\\n    order: 3 !important\\n  }\\n\\n  .sm\\\\:order-4 {\\n    order: 4 !important\\n  }\\n\\n  .sm\\\\:order-5 {\\n    order: 5 !important\\n  }\\n\\n  .sm\\\\:order-6 {\\n    order: 6 !important\\n  }\\n\\n  .sm\\\\:order-first {\\n    order: -1 !important\\n  }\\n\\n  .sm\\\\:order-last {\\n    order: 999 !important\\n  }\\n\\n  .sm\\\\:order-normal {\\n    order: 0 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:order-1:hover {\\n    order: 1 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:order-2:hover {\\n    order: 2 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:order-3:hover {\\n    order: 3 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:order-4:hover {\\n    order: 4 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:order-5:hover {\\n    order: 5 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:order-6:hover {\\n    order: 6 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:order-first:hover {\\n    order: -1 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:order-last:hover {\\n    order: 999 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:order-normal:hover {\\n    order: 0 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:order-1:focus {\\n    order: 1 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:order-2:focus {\\n    order: 2 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:order-3:focus {\\n    order: 3 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:order-4:focus {\\n    order: 4 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:order-5:focus {\\n    order: 5 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:order-6:focus {\\n    order: 6 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:order-first:focus {\\n    order: -1 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:order-last:focus {\\n    order: 999 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:order-normal:focus {\\n    order: 0 !important\\n  }\\n\\n  .sm\\\\:float-right {\\n    float: right !important\\n  }\\n\\n  .sm\\\\:float-left {\\n    float: left !important\\n  }\\n\\n  .sm\\\\:float-none {\\n    float: none !important\\n  }\\n\\n  .sm\\\\:clearfix:after {\\n    content: \\\"\\\" !important;\\n    display: table !important;\\n    clear: both !important\\n  }\\n\\n  .sm\\\\:font-light {\\n    font-weight: 300 !important\\n  }\\n\\n  .sm\\\\:font-normal {\\n    font-weight: 400 !important\\n  }\\n\\n  .sm\\\\:font-medium {\\n    font-weight: 500 !important\\n  }\\n\\n  .sm\\\\:font-semibold {\\n    font-weight: 600 !important\\n  }\\n\\n  .sm\\\\:font-bold {\\n    font-weight: 700 !important\\n  }\\n\\n  .sm\\\\:font-extrabold {\\n    font-weight: 800 !important\\n  }\\n\\n  .sm\\\\:font-black {\\n    font-weight: 900 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:font-light:hover {\\n    font-weight: 300 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:font-normal:hover {\\n    font-weight: 400 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:font-medium:hover {\\n    font-weight: 500 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:font-semibold:hover {\\n    font-weight: 600 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:font-bold:hover {\\n    font-weight: 700 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:font-extrabold:hover {\\n    font-weight: 800 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:font-black:hover {\\n    font-weight: 900 !important\\n  }\\n\\n  .sm\\\\:h-1 {\\n    height: 0.25rem !important\\n  }\\n\\n  .sm\\\\:h-2 {\\n    height: 0.5rem !important\\n  }\\n\\n  .sm\\\\:h-3 {\\n    height: 0.75rem !important\\n  }\\n\\n  .sm\\\\:h-4 {\\n    height: 1rem !important\\n  }\\n\\n  .sm\\\\:h-5 {\\n    height: 1.25rem !important\\n  }\\n\\n  .sm\\\\:h-6 {\\n    height: 1.5rem !important\\n  }\\n\\n  .sm\\\\:h-8 {\\n    height: 2rem !important\\n  }\\n\\n  .sm\\\\:h-10 {\\n    height: 2.5rem !important\\n  }\\n\\n  .sm\\\\:h-12 {\\n    height: 3rem !important\\n  }\\n\\n  .sm\\\\:h-16 {\\n    height: 4rem !important\\n  }\\n\\n  .sm\\\\:h-24 {\\n    height: 6rem !important\\n  }\\n\\n  .sm\\\\:h-32 {\\n    height: 8rem !important\\n  }\\n\\n  .sm\\\\:h-48 {\\n    height: 12rem !important\\n  }\\n\\n  .sm\\\\:h-64 {\\n    height: 16rem !important\\n  }\\n\\n  .sm\\\\:h-auto {\\n    height: auto !important\\n  }\\n\\n  .sm\\\\:h-px {\\n    height: 1px !important\\n  }\\n\\n  .sm\\\\:h-full {\\n    height: 100% !important\\n  }\\n\\n  .sm\\\\:h-screen {\\n    height: 100vh !important\\n  }\\n\\n  .sm\\\\:leading-none {\\n    line-height: 1 !important\\n  }\\n\\n  .sm\\\\:leading-tight {\\n    line-height: 1.25 !important\\n  }\\n\\n  .sm\\\\:leading-normal {\\n    line-height: 1.5 !important\\n  }\\n\\n  .sm\\\\:leading-loose {\\n    line-height: 2 !important\\n  }\\n\\n  .sm\\\\:list-inside {\\n    list-style-position: inside !important\\n  }\\n\\n  .sm\\\\:list-outside {\\n    list-style-position: outside !important\\n  }\\n\\n  .sm\\\\:m-0 {\\n    margin: 0 !important\\n  }\\n\\n  .sm\\\\:m-1 {\\n    margin: 0.25rem !important\\n  }\\n\\n  .sm\\\\:m-2 {\\n    margin: 0.5rem !important\\n  }\\n\\n  .sm\\\\:m-3 {\\n    margin: 0.75rem !important\\n  }\\n\\n  .sm\\\\:m-4 {\\n    margin: 1rem !important\\n  }\\n\\n  .sm\\\\:m-5 {\\n    margin: 1.25rem !important\\n  }\\n\\n  .sm\\\\:m-6 {\\n    margin: 1.5rem !important\\n  }\\n\\n  .sm\\\\:m-8 {\\n    margin: 2rem !important\\n  }\\n\\n  .sm\\\\:m-10 {\\n    margin: 2.5rem !important\\n  }\\n\\n  .sm\\\\:m-12 {\\n    margin: 3rem !important\\n  }\\n\\n  .sm\\\\:m-16 {\\n    margin: 4rem !important\\n  }\\n\\n  .sm\\\\:m-20 {\\n    margin: 5rem !important\\n  }\\n\\n  .sm\\\\:m-24 {\\n    margin: 6rem !important\\n  }\\n\\n  .sm\\\\:m-32 {\\n    margin: 8rem !important\\n  }\\n\\n  .sm\\\\:m-auto {\\n    margin: auto !important\\n  }\\n\\n  .sm\\\\:m-px {\\n    margin: 1px !important\\n  }\\n\\n  .sm\\\\:m-base {\\n    margin: 2.2rem !important\\n  }\\n\\n  .sm\\\\:-m-px {\\n    margin: -1px !important\\n  }\\n\\n  .sm\\\\:-m-1 {\\n    margin: -0.25rem !important\\n  }\\n\\n  .sm\\\\:-m-2 {\\n    margin: -0.5rem !important\\n  }\\n\\n  .sm\\\\:-m-3 {\\n    margin: -0.75rem !important\\n  }\\n\\n  .sm\\\\:-m-4 {\\n    margin: -1rem !important\\n  }\\n\\n  .sm\\\\:my-0 {\\n    margin-top: 0 !important;\\n    margin-bottom: 0 !important\\n  }\\n\\n  .sm\\\\:mx-0 {\\n    margin-left: 0 !important;\\n    margin-right: 0 !important\\n  }\\n\\n  .sm\\\\:my-1 {\\n    margin-top: 0.25rem !important;\\n    margin-bottom: 0.25rem !important\\n  }\\n\\n  .sm\\\\:mx-1 {\\n    margin-left: 0.25rem !important;\\n    margin-right: 0.25rem !important\\n  }\\n\\n  .sm\\\\:my-2 {\\n    margin-top: 0.5rem !important;\\n    margin-bottom: 0.5rem !important\\n  }\\n\\n  .sm\\\\:mx-2 {\\n    margin-left: 0.5rem !important;\\n    margin-right: 0.5rem !important\\n  }\\n\\n  .sm\\\\:my-3 {\\n    margin-top: 0.75rem !important;\\n    margin-bottom: 0.75rem !important\\n  }\\n\\n  .sm\\\\:mx-3 {\\n    margin-left: 0.75rem !important;\\n    margin-right: 0.75rem !important\\n  }\\n\\n  .sm\\\\:my-4 {\\n    margin-top: 1rem !important;\\n    margin-bottom: 1rem !important\\n  }\\n\\n  .sm\\\\:mx-4 {\\n    margin-left: 1rem !important;\\n    margin-right: 1rem !important\\n  }\\n\\n  .sm\\\\:my-5 {\\n    margin-top: 1.25rem !important;\\n    margin-bottom: 1.25rem !important\\n  }\\n\\n  .sm\\\\:mx-5 {\\n    margin-left: 1.25rem !important;\\n    margin-right: 1.25rem !important\\n  }\\n\\n  .sm\\\\:my-6 {\\n    margin-top: 1.5rem !important;\\n    margin-bottom: 1.5rem !important\\n  }\\n\\n  .sm\\\\:mx-6 {\\n    margin-left: 1.5rem !important;\\n    margin-right: 1.5rem !important\\n  }\\n\\n  .sm\\\\:my-8 {\\n    margin-top: 2rem !important;\\n    margin-bottom: 2rem !important\\n  }\\n\\n  .sm\\\\:mx-8 {\\n    margin-left: 2rem !important;\\n    margin-right: 2rem !important\\n  }\\n\\n  .sm\\\\:my-10 {\\n    margin-top: 2.5rem !important;\\n    margin-bottom: 2.5rem !important\\n  }\\n\\n  .sm\\\\:mx-10 {\\n    margin-left: 2.5rem !important;\\n    margin-right: 2.5rem !important\\n  }\\n\\n  .sm\\\\:my-12 {\\n    margin-top: 3rem !important;\\n    margin-bottom: 3rem !important\\n  }\\n\\n  .sm\\\\:mx-12 {\\n    margin-left: 3rem !important;\\n    margin-right: 3rem !important\\n  }\\n\\n  .sm\\\\:my-16 {\\n    margin-top: 4rem !important;\\n    margin-bottom: 4rem !important\\n  }\\n\\n  .sm\\\\:mx-16 {\\n    margin-left: 4rem !important;\\n    margin-right: 4rem !important\\n  }\\n\\n  .sm\\\\:my-20 {\\n    margin-top: 5rem !important;\\n    margin-bottom: 5rem !important\\n  }\\n\\n  .sm\\\\:mx-20 {\\n    margin-left: 5rem !important;\\n    margin-right: 5rem !important\\n  }\\n\\n  .sm\\\\:my-24 {\\n    margin-top: 6rem !important;\\n    margin-bottom: 6rem !important\\n  }\\n\\n  .sm\\\\:mx-24 {\\n    margin-left: 6rem !important;\\n    margin-right: 6rem !important\\n  }\\n\\n  .sm\\\\:my-32 {\\n    margin-top: 8rem !important;\\n    margin-bottom: 8rem !important\\n  }\\n\\n  .sm\\\\:mx-32 {\\n    margin-left: 8rem !important;\\n    margin-right: 8rem !important\\n  }\\n\\n  .sm\\\\:my-auto {\\n    margin-top: auto !important;\\n    margin-bottom: auto !important\\n  }\\n\\n  .sm\\\\:mx-auto {\\n    margin-left: auto !important;\\n    margin-right: auto !important\\n  }\\n\\n  .sm\\\\:my-px {\\n    margin-top: 1px !important;\\n    margin-bottom: 1px !important\\n  }\\n\\n  .sm\\\\:mx-px {\\n    margin-left: 1px !important;\\n    margin-right: 1px !important\\n  }\\n\\n  .sm\\\\:my-base {\\n    margin-top: 2.2rem !important;\\n    margin-bottom: 2.2rem !important\\n  }\\n\\n  .sm\\\\:mx-base {\\n    margin-left: 2.2rem !important;\\n    margin-right: 2.2rem !important\\n  }\\n\\n  .sm\\\\:-my-px {\\n    margin-top: -1px !important;\\n    margin-bottom: -1px !important\\n  }\\n\\n  .sm\\\\:-mx-px {\\n    margin-left: -1px !important;\\n    margin-right: -1px !important\\n  }\\n\\n  .sm\\\\:-my-1 {\\n    margin-top: -0.25rem !important;\\n    margin-bottom: -0.25rem !important\\n  }\\n\\n  .sm\\\\:-mx-1 {\\n    margin-left: -0.25rem !important;\\n    margin-right: -0.25rem !important\\n  }\\n\\n  .sm\\\\:-my-2 {\\n    margin-top: -0.5rem !important;\\n    margin-bottom: -0.5rem !important\\n  }\\n\\n  .sm\\\\:-mx-2 {\\n    margin-left: -0.5rem !important;\\n    margin-right: -0.5rem !important\\n  }\\n\\n  .sm\\\\:-my-3 {\\n    margin-top: -0.75rem !important;\\n    margin-bottom: -0.75rem !important\\n  }\\n\\n  .sm\\\\:-mx-3 {\\n    margin-left: -0.75rem !important;\\n    margin-right: -0.75rem !important\\n  }\\n\\n  .sm\\\\:-my-4 {\\n    margin-top: -1rem !important;\\n    margin-bottom: -1rem !important\\n  }\\n\\n  .sm\\\\:-mx-4 {\\n    margin-left: -1rem !important;\\n    margin-right: -1rem !important\\n  }\\n\\n  .sm\\\\:mt-0 {\\n    margin-top: 0 !important\\n  }\\n\\n  .sm\\\\:mr-0 {\\n    margin-right: 0 !important\\n  }\\n\\n  .sm\\\\:mb-0 {\\n    margin-bottom: 0 !important\\n  }\\n\\n  .sm\\\\:ml-0 {\\n    margin-left: 0 !important\\n  }\\n\\n  .sm\\\\:mt-1 {\\n    margin-top: 0.25rem !important\\n  }\\n\\n  .sm\\\\:mr-1 {\\n    margin-right: 0.25rem !important\\n  }\\n\\n  .sm\\\\:mb-1 {\\n    margin-bottom: 0.25rem !important\\n  }\\n\\n  .sm\\\\:ml-1 {\\n    margin-left: 0.25rem !important\\n  }\\n\\n  .sm\\\\:mt-2 {\\n    margin-top: 0.5rem !important\\n  }\\n\\n  .sm\\\\:mr-2 {\\n    margin-right: 0.5rem !important\\n  }\\n\\n  .sm\\\\:mb-2 {\\n    margin-bottom: 0.5rem !important\\n  }\\n\\n  .sm\\\\:ml-2 {\\n    margin-left: 0.5rem !important\\n  }\\n\\n  .sm\\\\:mt-3 {\\n    margin-top: 0.75rem !important\\n  }\\n\\n  .sm\\\\:mr-3 {\\n    margin-right: 0.75rem !important\\n  }\\n\\n  .sm\\\\:mb-3 {\\n    margin-bottom: 0.75rem !important\\n  }\\n\\n  .sm\\\\:ml-3 {\\n    margin-left: 0.75rem !important\\n  }\\n\\n  .sm\\\\:mt-4 {\\n    margin-top: 1rem !important\\n  }\\n\\n  .sm\\\\:mr-4 {\\n    margin-right: 1rem !important\\n  }\\n\\n  .sm\\\\:mb-4 {\\n    margin-bottom: 1rem !important\\n  }\\n\\n  .sm\\\\:ml-4 {\\n    margin-left: 1rem !important\\n  }\\n\\n  .sm\\\\:mt-5 {\\n    margin-top: 1.25rem !important\\n  }\\n\\n  .sm\\\\:mr-5 {\\n    margin-right: 1.25rem !important\\n  }\\n\\n  .sm\\\\:mb-5 {\\n    margin-bottom: 1.25rem !important\\n  }\\n\\n  .sm\\\\:ml-5 {\\n    margin-left: 1.25rem !important\\n  }\\n\\n  .sm\\\\:mt-6 {\\n    margin-top: 1.5rem !important\\n  }\\n\\n  .sm\\\\:mr-6 {\\n    margin-right: 1.5rem !important\\n  }\\n\\n  .sm\\\\:mb-6 {\\n    margin-bottom: 1.5rem !important\\n  }\\n\\n  .sm\\\\:ml-6 {\\n    margin-left: 1.5rem !important\\n  }\\n\\n  .sm\\\\:mt-8 {\\n    margin-top: 2rem !important\\n  }\\n\\n  .sm\\\\:mr-8 {\\n    margin-right: 2rem !important\\n  }\\n\\n  .sm\\\\:mb-8 {\\n    margin-bottom: 2rem !important\\n  }\\n\\n  .sm\\\\:ml-8 {\\n    margin-left: 2rem !important\\n  }\\n\\n  .sm\\\\:mt-10 {\\n    margin-top: 2.5rem !important\\n  }\\n\\n  .sm\\\\:mr-10 {\\n    margin-right: 2.5rem !important\\n  }\\n\\n  .sm\\\\:mb-10 {\\n    margin-bottom: 2.5rem !important\\n  }\\n\\n  .sm\\\\:ml-10 {\\n    margin-left: 2.5rem !important\\n  }\\n\\n  .sm\\\\:mt-12 {\\n    margin-top: 3rem !important\\n  }\\n\\n  .sm\\\\:mr-12 {\\n    margin-right: 3rem !important\\n  }\\n\\n  .sm\\\\:mb-12 {\\n    margin-bottom: 3rem !important\\n  }\\n\\n  .sm\\\\:ml-12 {\\n    margin-left: 3rem !important\\n  }\\n\\n  .sm\\\\:mt-16 {\\n    margin-top: 4rem !important\\n  }\\n\\n  .sm\\\\:mr-16 {\\n    margin-right: 4rem !important\\n  }\\n\\n  .sm\\\\:mb-16 {\\n    margin-bottom: 4rem !important\\n  }\\n\\n  .sm\\\\:ml-16 {\\n    margin-left: 4rem !important\\n  }\\n\\n  .sm\\\\:mt-20 {\\n    margin-top: 5rem !important\\n  }\\n\\n  .sm\\\\:mr-20 {\\n    margin-right: 5rem !important\\n  }\\n\\n  .sm\\\\:mb-20 {\\n    margin-bottom: 5rem !important\\n  }\\n\\n  .sm\\\\:ml-20 {\\n    margin-left: 5rem !important\\n  }\\n\\n  .sm\\\\:mt-24 {\\n    margin-top: 6rem !important\\n  }\\n\\n  .sm\\\\:mr-24 {\\n    margin-right: 6rem !important\\n  }\\n\\n  .sm\\\\:mb-24 {\\n    margin-bottom: 6rem !important\\n  }\\n\\n  .sm\\\\:ml-24 {\\n    margin-left: 6rem !important\\n  }\\n\\n  .sm\\\\:mt-32 {\\n    margin-top: 8rem !important\\n  }\\n\\n  .sm\\\\:mr-32 {\\n    margin-right: 8rem !important\\n  }\\n\\n  .sm\\\\:mb-32 {\\n    margin-bottom: 8rem !important\\n  }\\n\\n  .sm\\\\:ml-32 {\\n    margin-left: 8rem !important\\n  }\\n\\n  .sm\\\\:mt-auto {\\n    margin-top: auto !important\\n  }\\n\\n  .sm\\\\:mr-auto {\\n    margin-right: auto !important\\n  }\\n\\n  .sm\\\\:mb-auto {\\n    margin-bottom: auto !important\\n  }\\n\\n  .sm\\\\:ml-auto {\\n    margin-left: auto !important\\n  }\\n\\n  .sm\\\\:mt-px {\\n    margin-top: 1px !important\\n  }\\n\\n  .sm\\\\:mr-px {\\n    margin-right: 1px !important\\n  }\\n\\n  .sm\\\\:mb-px {\\n    margin-bottom: 1px !important\\n  }\\n\\n  .sm\\\\:ml-px {\\n    margin-left: 1px !important\\n  }\\n\\n  .sm\\\\:mt-base {\\n    margin-top: 2.2rem !important\\n  }\\n\\n  .sm\\\\:mr-base {\\n    margin-right: 2.2rem !important\\n  }\\n\\n  .sm\\\\:mb-base {\\n    margin-bottom: 2.2rem !important\\n  }\\n\\n  .sm\\\\:ml-base {\\n    margin-left: 2.2rem !important\\n  }\\n\\n  .sm\\\\:-mt-px {\\n    margin-top: -1px !important\\n  }\\n\\n  .sm\\\\:-mr-px {\\n    margin-right: -1px !important\\n  }\\n\\n  .sm\\\\:-mb-px {\\n    margin-bottom: -1px !important\\n  }\\n\\n  .sm\\\\:-ml-px {\\n    margin-left: -1px !important\\n  }\\n\\n  .sm\\\\:-mt-1 {\\n    margin-top: -0.25rem !important\\n  }\\n\\n  .sm\\\\:-mr-1 {\\n    margin-right: -0.25rem !important\\n  }\\n\\n  .sm\\\\:-mb-1 {\\n    margin-bottom: -0.25rem !important\\n  }\\n\\n  .sm\\\\:-ml-1 {\\n    margin-left: -0.25rem !important\\n  }\\n\\n  .sm\\\\:-mt-2 {\\n    margin-top: -0.5rem !important\\n  }\\n\\n  .sm\\\\:-mr-2 {\\n    margin-right: -0.5rem !important\\n  }\\n\\n  .sm\\\\:-mb-2 {\\n    margin-bottom: -0.5rem !important\\n  }\\n\\n  .sm\\\\:-ml-2 {\\n    margin-left: -0.5rem !important\\n  }\\n\\n  .sm\\\\:-mt-3 {\\n    margin-top: -0.75rem !important\\n  }\\n\\n  .sm\\\\:-mr-3 {\\n    margin-right: -0.75rem !important\\n  }\\n\\n  .sm\\\\:-mb-3 {\\n    margin-bottom: -0.75rem !important\\n  }\\n\\n  .sm\\\\:-ml-3 {\\n    margin-left: -0.75rem !important\\n  }\\n\\n  .sm\\\\:-mt-4 {\\n    margin-top: -1rem !important\\n  }\\n\\n  .sm\\\\:-mr-4 {\\n    margin-right: -1rem !important\\n  }\\n\\n  .sm\\\\:-mb-4 {\\n    margin-bottom: -1rem !important\\n  }\\n\\n  .sm\\\\:-ml-4 {\\n    margin-left: -1rem !important\\n  }\\n\\n  .sm\\\\:max-h-full {\\n    max-height: 100% !important\\n  }\\n\\n  .sm\\\\:max-h-screen {\\n    max-height: 100vh !important\\n  }\\n\\n  .sm\\\\:max-w-xs {\\n    max-width: 20rem !important\\n  }\\n\\n  .sm\\\\:max-w-sm {\\n    max-width: 30rem !important\\n  }\\n\\n  .sm\\\\:max-w-md {\\n    max-width: 40rem !important\\n  }\\n\\n  .sm\\\\:max-w-lg {\\n    max-width: 50rem !important\\n  }\\n\\n  .sm\\\\:max-w-xl {\\n    max-width: 60rem !important\\n  }\\n\\n  .sm\\\\:max-w-2xl {\\n    max-width: 70rem !important\\n  }\\n\\n  .sm\\\\:max-w-3xl {\\n    max-width: 80rem !important\\n  }\\n\\n  .sm\\\\:max-w-4xl {\\n    max-width: 90rem !important\\n  }\\n\\n  .sm\\\\:max-w-5xl {\\n    max-width: 100rem !important\\n  }\\n\\n  .sm\\\\:max-w-full {\\n    max-width: 100% !important\\n  }\\n\\n  .sm\\\\:min-h-0 {\\n    min-height: 0 !important\\n  }\\n\\n  .sm\\\\:min-h-full {\\n    min-height: 100% !important\\n  }\\n\\n  .sm\\\\:min-h-screen {\\n    min-height: 100vh !important\\n  }\\n\\n  .sm\\\\:min-w-0 {\\n    min-width: 0 !important\\n  }\\n\\n  .sm\\\\:min-w-full {\\n    min-width: 100% !important\\n  }\\n\\n  .sm\\\\:object-contain {\\n    -o-object-fit: contain !important;\\n       object-fit: contain !important\\n  }\\n\\n  .sm\\\\:object-cover {\\n    -o-object-fit: cover !important;\\n       object-fit: cover !important\\n  }\\n\\n  .sm\\\\:object-fill {\\n    -o-object-fit: fill !important;\\n       object-fit: fill !important\\n  }\\n\\n  .sm\\\\:object-none {\\n    -o-object-fit: none !important;\\n       object-fit: none !important\\n  }\\n\\n  .sm\\\\:object-scale-down {\\n    -o-object-fit: scale-down !important;\\n       object-fit: scale-down !important\\n  }\\n\\n  .sm\\\\:object-bottom {\\n    -o-object-position: bottom !important;\\n       object-position: bottom !important\\n  }\\n\\n  .sm\\\\:object-center {\\n    -o-object-position: center !important;\\n       object-position: center !important\\n  }\\n\\n  .sm\\\\:object-left {\\n    -o-object-position: left !important;\\n       object-position: left !important\\n  }\\n\\n  .sm\\\\:object-left-bottom {\\n    -o-object-position: left bottom !important;\\n       object-position: left bottom !important\\n  }\\n\\n  .sm\\\\:object-left-top {\\n    -o-object-position: left top !important;\\n       object-position: left top !important\\n  }\\n\\n  .sm\\\\:object-right {\\n    -o-object-position: right !important;\\n       object-position: right !important\\n  }\\n\\n  .sm\\\\:object-right-bottom {\\n    -o-object-position: right bottom !important;\\n       object-position: right bottom !important\\n  }\\n\\n  .sm\\\\:object-right-top {\\n    -o-object-position: right top !important;\\n       object-position: right top !important\\n  }\\n\\n  .sm\\\\:object-top {\\n    -o-object-position: top !important;\\n       object-position: top !important\\n  }\\n\\n  .sm\\\\:opacity-0 {\\n    opacity: 0 !important\\n  }\\n\\n  .sm\\\\:opacity-25 {\\n    opacity: 0.25 !important\\n  }\\n\\n  .sm\\\\:opacity-50 {\\n    opacity: 0.5 !important\\n  }\\n\\n  .sm\\\\:opacity-75 {\\n    opacity: 0.75 !important\\n  }\\n\\n  .sm\\\\:opacity-100 {\\n    opacity: 1 !important\\n  }\\n\\n  .sm\\\\:overflow-auto {\\n    overflow: auto !important\\n  }\\n\\n  .sm\\\\:overflow-hidden {\\n    overflow: hidden !important\\n  }\\n\\n  .sm\\\\:overflow-visible {\\n    overflow: visible !important\\n  }\\n\\n  .sm\\\\:overflow-scroll {\\n    overflow: scroll !important\\n  }\\n\\n  .sm\\\\:overflow-x-auto {\\n    overflow-x: auto !important\\n  }\\n\\n  .sm\\\\:overflow-y-auto {\\n    overflow-y: auto !important\\n  }\\n\\n  .sm\\\\:overflow-x-hidden {\\n    overflow-x: hidden !important\\n  }\\n\\n  .sm\\\\:overflow-y-hidden {\\n    overflow-y: hidden !important\\n  }\\n\\n  .sm\\\\:overflow-x-visible {\\n    overflow-x: visible !important\\n  }\\n\\n  .sm\\\\:overflow-y-visible {\\n    overflow-y: visible !important\\n  }\\n\\n  .sm\\\\:overflow-x-scroll {\\n    overflow-x: scroll !important\\n  }\\n\\n  .sm\\\\:overflow-y-scroll {\\n    overflow-y: scroll !important\\n  }\\n\\n  .sm\\\\:scrolling-touch {\\n    -webkit-overflow-scrolling: touch !important\\n  }\\n\\n  .sm\\\\:scrolling-auto {\\n    -webkit-overflow-scrolling: auto !important\\n  }\\n\\n  .sm\\\\:p-0 {\\n    padding: 0 !important\\n  }\\n\\n  .sm\\\\:p-1 {\\n    padding: 0.25rem !important\\n  }\\n\\n  .sm\\\\:p-2 {\\n    padding: 0.5rem !important\\n  }\\n\\n  .sm\\\\:p-3 {\\n    padding: 0.75rem !important\\n  }\\n\\n  .sm\\\\:p-4 {\\n    padding: 1rem !important\\n  }\\n\\n  .sm\\\\:p-5 {\\n    padding: 1.25rem !important\\n  }\\n\\n  .sm\\\\:p-6 {\\n    padding: 1.5rem !important\\n  }\\n\\n  .sm\\\\:p-8 {\\n    padding: 2rem !important\\n  }\\n\\n  .sm\\\\:p-10 {\\n    padding: 2.5rem !important\\n  }\\n\\n  .sm\\\\:p-12 {\\n    padding: 3rem !important\\n  }\\n\\n  .sm\\\\:p-16 {\\n    padding: 4rem !important\\n  }\\n\\n  .sm\\\\:p-20 {\\n    padding: 5rem !important\\n  }\\n\\n  .sm\\\\:p-24 {\\n    padding: 6rem !important\\n  }\\n\\n  .sm\\\\:p-32 {\\n    padding: 8rem !important\\n  }\\n\\n  .sm\\\\:p-px {\\n    padding: 1px !important\\n  }\\n\\n  .sm\\\\:p-base {\\n    padding: 2.2rem !important\\n  }\\n\\n  .sm\\\\:py-0 {\\n    padding-top: 0 !important;\\n    padding-bottom: 0 !important\\n  }\\n\\n  .sm\\\\:px-0 {\\n    padding-left: 0 !important;\\n    padding-right: 0 !important\\n  }\\n\\n  .sm\\\\:py-1 {\\n    padding-top: 0.25rem !important;\\n    padding-bottom: 0.25rem !important\\n  }\\n\\n  .sm\\\\:px-1 {\\n    padding-left: 0.25rem !important;\\n    padding-right: 0.25rem !important\\n  }\\n\\n  .sm\\\\:py-2 {\\n    padding-top: 0.5rem !important;\\n    padding-bottom: 0.5rem !important\\n  }\\n\\n  .sm\\\\:px-2 {\\n    padding-left: 0.5rem !important;\\n    padding-right: 0.5rem !important\\n  }\\n\\n  .sm\\\\:py-3 {\\n    padding-top: 0.75rem !important;\\n    padding-bottom: 0.75rem !important\\n  }\\n\\n  .sm\\\\:px-3 {\\n    padding-left: 0.75rem !important;\\n    padding-right: 0.75rem !important\\n  }\\n\\n  .sm\\\\:py-4 {\\n    padding-top: 1rem !important;\\n    padding-bottom: 1rem !important\\n  }\\n\\n  .sm\\\\:px-4 {\\n    padding-left: 1rem !important;\\n    padding-right: 1rem !important\\n  }\\n\\n  .sm\\\\:py-5 {\\n    padding-top: 1.25rem !important;\\n    padding-bottom: 1.25rem !important\\n  }\\n\\n  .sm\\\\:px-5 {\\n    padding-left: 1.25rem !important;\\n    padding-right: 1.25rem !important\\n  }\\n\\n  .sm\\\\:py-6 {\\n    padding-top: 1.5rem !important;\\n    padding-bottom: 1.5rem !important\\n  }\\n\\n  .sm\\\\:px-6 {\\n    padding-left: 1.5rem !important;\\n    padding-right: 1.5rem !important\\n  }\\n\\n  .sm\\\\:py-8 {\\n    padding-top: 2rem !important;\\n    padding-bottom: 2rem !important\\n  }\\n\\n  .sm\\\\:px-8 {\\n    padding-left: 2rem !important;\\n    padding-right: 2rem !important\\n  }\\n\\n  .sm\\\\:py-10 {\\n    padding-top: 2.5rem !important;\\n    padding-bottom: 2.5rem !important\\n  }\\n\\n  .sm\\\\:px-10 {\\n    padding-left: 2.5rem !important;\\n    padding-right: 2.5rem !important\\n  }\\n\\n  .sm\\\\:py-12 {\\n    padding-top: 3rem !important;\\n    padding-bottom: 3rem !important\\n  }\\n\\n  .sm\\\\:px-12 {\\n    padding-left: 3rem !important;\\n    padding-right: 3rem !important\\n  }\\n\\n  .sm\\\\:py-16 {\\n    padding-top: 4rem !important;\\n    padding-bottom: 4rem !important\\n  }\\n\\n  .sm\\\\:px-16 {\\n    padding-left: 4rem !important;\\n    padding-right: 4rem !important\\n  }\\n\\n  .sm\\\\:py-20 {\\n    padding-top: 5rem !important;\\n    padding-bottom: 5rem !important\\n  }\\n\\n  .sm\\\\:px-20 {\\n    padding-left: 5rem !important;\\n    padding-right: 5rem !important\\n  }\\n\\n  .sm\\\\:py-24 {\\n    padding-top: 6rem !important;\\n    padding-bottom: 6rem !important\\n  }\\n\\n  .sm\\\\:px-24 {\\n    padding-left: 6rem !important;\\n    padding-right: 6rem !important\\n  }\\n\\n  .sm\\\\:py-32 {\\n    padding-top: 8rem !important;\\n    padding-bottom: 8rem !important\\n  }\\n\\n  .sm\\\\:px-32 {\\n    padding-left: 8rem !important;\\n    padding-right: 8rem !important\\n  }\\n\\n  .sm\\\\:py-px {\\n    padding-top: 1px !important;\\n    padding-bottom: 1px !important\\n  }\\n\\n  .sm\\\\:px-px {\\n    padding-left: 1px !important;\\n    padding-right: 1px !important\\n  }\\n\\n  .sm\\\\:py-base {\\n    padding-top: 2.2rem !important;\\n    padding-bottom: 2.2rem !important\\n  }\\n\\n  .sm\\\\:px-base {\\n    padding-left: 2.2rem !important;\\n    padding-right: 2.2rem !important\\n  }\\n\\n  .sm\\\\:pt-0 {\\n    padding-top: 0 !important\\n  }\\n\\n  .sm\\\\:pr-0 {\\n    padding-right: 0 !important\\n  }\\n\\n  .sm\\\\:pb-0 {\\n    padding-bottom: 0 !important\\n  }\\n\\n  .sm\\\\:pl-0 {\\n    padding-left: 0 !important\\n  }\\n\\n  .sm\\\\:pt-1 {\\n    padding-top: 0.25rem !important\\n  }\\n\\n  .sm\\\\:pr-1 {\\n    padding-right: 0.25rem !important\\n  }\\n\\n  .sm\\\\:pb-1 {\\n    padding-bottom: 0.25rem !important\\n  }\\n\\n  .sm\\\\:pl-1 {\\n    padding-left: 0.25rem !important\\n  }\\n\\n  .sm\\\\:pt-2 {\\n    padding-top: 0.5rem !important\\n  }\\n\\n  .sm\\\\:pr-2 {\\n    padding-right: 0.5rem !important\\n  }\\n\\n  .sm\\\\:pb-2 {\\n    padding-bottom: 0.5rem !important\\n  }\\n\\n  .sm\\\\:pl-2 {\\n    padding-left: 0.5rem !important\\n  }\\n\\n  .sm\\\\:pt-3 {\\n    padding-top: 0.75rem !important\\n  }\\n\\n  .sm\\\\:pr-3 {\\n    padding-right: 0.75rem !important\\n  }\\n\\n  .sm\\\\:pb-3 {\\n    padding-bottom: 0.75rem !important\\n  }\\n\\n  .sm\\\\:pl-3 {\\n    padding-left: 0.75rem !important\\n  }\\n\\n  .sm\\\\:pt-4 {\\n    padding-top: 1rem !important\\n  }\\n\\n  .sm\\\\:pr-4 {\\n    padding-right: 1rem !important\\n  }\\n\\n  .sm\\\\:pb-4 {\\n    padding-bottom: 1rem !important\\n  }\\n\\n  .sm\\\\:pl-4 {\\n    padding-left: 1rem !important\\n  }\\n\\n  .sm\\\\:pt-5 {\\n    padding-top: 1.25rem !important\\n  }\\n\\n  .sm\\\\:pr-5 {\\n    padding-right: 1.25rem !important\\n  }\\n\\n  .sm\\\\:pb-5 {\\n    padding-bottom: 1.25rem !important\\n  }\\n\\n  .sm\\\\:pl-5 {\\n    padding-left: 1.25rem !important\\n  }\\n\\n  .sm\\\\:pt-6 {\\n    padding-top: 1.5rem !important\\n  }\\n\\n  .sm\\\\:pr-6 {\\n    padding-right: 1.5rem !important\\n  }\\n\\n  .sm\\\\:pb-6 {\\n    padding-bottom: 1.5rem !important\\n  }\\n\\n  .sm\\\\:pl-6 {\\n    padding-left: 1.5rem !important\\n  }\\n\\n  .sm\\\\:pt-8 {\\n    padding-top: 2rem !important\\n  }\\n\\n  .sm\\\\:pr-8 {\\n    padding-right: 2rem !important\\n  }\\n\\n  .sm\\\\:pb-8 {\\n    padding-bottom: 2rem !important\\n  }\\n\\n  .sm\\\\:pl-8 {\\n    padding-left: 2rem !important\\n  }\\n\\n  .sm\\\\:pt-10 {\\n    padding-top: 2.5rem !important\\n  }\\n\\n  .sm\\\\:pr-10 {\\n    padding-right: 2.5rem !important\\n  }\\n\\n  .sm\\\\:pb-10 {\\n    padding-bottom: 2.5rem !important\\n  }\\n\\n  .sm\\\\:pl-10 {\\n    padding-left: 2.5rem !important\\n  }\\n\\n  .sm\\\\:pt-12 {\\n    padding-top: 3rem !important\\n  }\\n\\n  .sm\\\\:pr-12 {\\n    padding-right: 3rem !important\\n  }\\n\\n  .sm\\\\:pb-12 {\\n    padding-bottom: 3rem !important\\n  }\\n\\n  .sm\\\\:pl-12 {\\n    padding-left: 3rem !important\\n  }\\n\\n  .sm\\\\:pt-16 {\\n    padding-top: 4rem !important\\n  }\\n\\n  .sm\\\\:pr-16 {\\n    padding-right: 4rem !important\\n  }\\n\\n  .sm\\\\:pb-16 {\\n    padding-bottom: 4rem !important\\n  }\\n\\n  .sm\\\\:pl-16 {\\n    padding-left: 4rem !important\\n  }\\n\\n  .sm\\\\:pt-20 {\\n    padding-top: 5rem !important\\n  }\\n\\n  .sm\\\\:pr-20 {\\n    padding-right: 5rem !important\\n  }\\n\\n  .sm\\\\:pb-20 {\\n    padding-bottom: 5rem !important\\n  }\\n\\n  .sm\\\\:pl-20 {\\n    padding-left: 5rem !important\\n  }\\n\\n  .sm\\\\:pt-24 {\\n    padding-top: 6rem !important\\n  }\\n\\n  .sm\\\\:pr-24 {\\n    padding-right: 6rem !important\\n  }\\n\\n  .sm\\\\:pb-24 {\\n    padding-bottom: 6rem !important\\n  }\\n\\n  .sm\\\\:pl-24 {\\n    padding-left: 6rem !important\\n  }\\n\\n  .sm\\\\:pt-32 {\\n    padding-top: 8rem !important\\n  }\\n\\n  .sm\\\\:pr-32 {\\n    padding-right: 8rem !important\\n  }\\n\\n  .sm\\\\:pb-32 {\\n    padding-bottom: 8rem !important\\n  }\\n\\n  .sm\\\\:pl-32 {\\n    padding-left: 8rem !important\\n  }\\n\\n  .sm\\\\:pt-px {\\n    padding-top: 1px !important\\n  }\\n\\n  .sm\\\\:pr-px {\\n    padding-right: 1px !important\\n  }\\n\\n  .sm\\\\:pb-px {\\n    padding-bottom: 1px !important\\n  }\\n\\n  .sm\\\\:pl-px {\\n    padding-left: 1px !important\\n  }\\n\\n  .sm\\\\:pt-base {\\n    padding-top: 2.2rem !important\\n  }\\n\\n  .sm\\\\:pr-base {\\n    padding-right: 2.2rem !important\\n  }\\n\\n  .sm\\\\:pb-base {\\n    padding-bottom: 2.2rem !important\\n  }\\n\\n  .sm\\\\:pl-base {\\n    padding-left: 2.2rem !important\\n  }\\n\\n  .sm\\\\:placeholder-transparent::-webkit-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:placeholder-transparent::-moz-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:placeholder-transparent:-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:placeholder-transparent::-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:placeholder-transparent::placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:placeholder-black::-webkit-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:placeholder-black::-moz-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:placeholder-black:-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:placeholder-black::-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:placeholder-black::placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:placeholder-white::-webkit-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:placeholder-white::-moz-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:placeholder-white:-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:placeholder-white::-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:placeholder-white::placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:placeholder-grey::-webkit-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:placeholder-grey::-moz-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:placeholder-grey:-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:placeholder-grey::-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:placeholder-grey::placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:placeholder-grey-light::-webkit-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:placeholder-grey-light::-moz-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:placeholder-grey-light:-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:placeholder-grey-light::-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:placeholder-grey-light::placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-transparent:focus::-webkit-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-transparent:focus::-moz-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-transparent:focus:-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-transparent:focus::-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-transparent:focus::placeholder {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-black:focus::-webkit-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-black:focus::-moz-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-black:focus:-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-black:focus::-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-black:focus::placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-white:focus::-webkit-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-white:focus::-moz-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-white:focus:-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-white:focus::-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-white:focus::placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey:focus::-webkit-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey:focus::-moz-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey:focus:-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey:focus::-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey:focus::placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey-light:focus::-webkit-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey-light:focus::-moz-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey-light:focus:-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey-light:focus::-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:placeholder-grey-light:focus::placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:pointer-events-none {\\n    pointer-events: none !important\\n  }\\n\\n  .sm\\\\:pointer-events-auto {\\n    pointer-events: auto !important\\n  }\\n\\n  .sm\\\\:static {\\n    position: static !important\\n  }\\n\\n  .sm\\\\:fixed {\\n    position: fixed !important\\n  }\\n\\n  .sm\\\\:absolute {\\n    position: absolute !important\\n  }\\n\\n  .sm\\\\:relative {\\n    position: relative !important\\n  }\\n\\n  .sm\\\\:sticky {\\n    position: -webkit-sticky !important;\\n    position: sticky !important\\n  }\\n\\n  .sm\\\\:inset-0 {\\n    top: 0 !important;\\n    right: 0 !important;\\n    bottom: 0 !important;\\n    left: 0 !important\\n  }\\n\\n  .sm\\\\:inset-auto {\\n    top: auto !important;\\n    right: auto !important;\\n    bottom: auto !important;\\n    left: auto !important\\n  }\\n\\n  .sm\\\\:inset-y-0 {\\n    top: 0 !important;\\n    bottom: 0 !important\\n  }\\n\\n  .sm\\\\:inset-x-0 {\\n    right: 0 !important;\\n    left: 0 !important\\n  }\\n\\n  .sm\\\\:inset-y-auto {\\n    top: auto !important;\\n    bottom: auto !important\\n  }\\n\\n  .sm\\\\:inset-x-auto {\\n    right: auto !important;\\n    left: auto !important\\n  }\\n\\n  .sm\\\\:top-0 {\\n    top: 0 !important\\n  }\\n\\n  .sm\\\\:right-0 {\\n    right: 0 !important\\n  }\\n\\n  .sm\\\\:bottom-0 {\\n    bottom: 0 !important\\n  }\\n\\n  .sm\\\\:left-0 {\\n    left: 0 !important\\n  }\\n\\n  .sm\\\\:top-auto {\\n    top: auto !important\\n  }\\n\\n  .sm\\\\:right-auto {\\n    right: auto !important\\n  }\\n\\n  .sm\\\\:bottom-auto {\\n    bottom: auto !important\\n  }\\n\\n  .sm\\\\:left-auto {\\n    left: auto !important\\n  }\\n\\n  .sm\\\\:resize-none {\\n    resize: none !important\\n  }\\n\\n  .sm\\\\:resize-y {\\n    resize: vertical !important\\n  }\\n\\n  .sm\\\\:resize-x {\\n    resize: horizontal !important\\n  }\\n\\n  .sm\\\\:resize {\\n    resize: both !important\\n  }\\n\\n  .sm\\\\:shadow {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .sm\\\\:shadow-md {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .sm\\\\:shadow-lg {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .sm\\\\:shadow-inner {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .sm\\\\:shadow-xl {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .sm\\\\:shadow-2xl {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .sm\\\\:shadow-outline {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .sm\\\\:shadow-none {\\n    box-shadow: none !important\\n  }\\n\\n  .sm\\\\:shadow-drop {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .sm\\\\:hover\\\\:shadow:hover {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .sm\\\\:hover\\\\:shadow-md:hover {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .sm\\\\:hover\\\\:shadow-lg:hover {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .sm\\\\:hover\\\\:shadow-inner:hover {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .sm\\\\:hover\\\\:shadow-xl:hover {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .sm\\\\:hover\\\\:shadow-2xl:hover {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .sm\\\\:hover\\\\:shadow-outline:hover {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .sm\\\\:hover\\\\:shadow-none:hover {\\n    box-shadow: none !important\\n  }\\n\\n  .sm\\\\:hover\\\\:shadow-drop:hover {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .sm\\\\:focus\\\\:shadow:focus {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .sm\\\\:focus\\\\:shadow-md:focus {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .sm\\\\:focus\\\\:shadow-lg:focus {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .sm\\\\:focus\\\\:shadow-inner:focus {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .sm\\\\:focus\\\\:shadow-xl:focus {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .sm\\\\:focus\\\\:shadow-2xl:focus {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .sm\\\\:focus\\\\:shadow-outline:focus {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .sm\\\\:focus\\\\:shadow-none:focus {\\n    box-shadow: none !important\\n  }\\n\\n  .sm\\\\:focus\\\\:shadow-drop:focus {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .sm\\\\:table-auto {\\n    table-layout: auto !important\\n  }\\n\\n  .sm\\\\:table-fixed {\\n    table-layout: fixed !important\\n  }\\n\\n  .sm\\\\:text-left {\\n    text-align: left !important\\n  }\\n\\n  .sm\\\\:text-center {\\n    text-align: center !important\\n  }\\n\\n  .sm\\\\:text-right {\\n    text-align: right !important\\n  }\\n\\n  .sm\\\\:text-justify {\\n    text-align: justify !important\\n  }\\n\\n  .sm\\\\:text-transparent {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:text-black {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:text-white {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:text-grey {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:text-grey-light {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:hover\\\\:text-transparent:hover {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:hover\\\\:text-black:hover {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:hover\\\\:text-white:hover {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:hover\\\\:text-grey:hover {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:hover\\\\:text-grey-light:hover {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:focus\\\\:text-transparent:focus {\\n    color: transparent !important\\n  }\\n\\n  .sm\\\\:focus\\\\:text-black:focus {\\n    color: #22292f !important\\n  }\\n\\n  .sm\\\\:focus\\\\:text-white:focus {\\n    color: #ffffff !important\\n  }\\n\\n  .sm\\\\:focus\\\\:text-grey:focus {\\n    color: #b8c2cc !important\\n  }\\n\\n  .sm\\\\:focus\\\\:text-grey-light:focus {\\n    color: #dae1e7 !important\\n  }\\n\\n  .sm\\\\:text-xs {\\n    font-size: .75rem !important\\n  }\\n\\n  .sm\\\\:text-sm {\\n    font-size: .875rem !important\\n  }\\n\\n  .sm\\\\:text-base {\\n    font-size: 1rem !important\\n  }\\n\\n  .sm\\\\:text-lg {\\n    font-size: 1.125rem !important\\n  }\\n\\n  .sm\\\\:text-xl {\\n    font-size: 1.25rem !important\\n  }\\n\\n  .sm\\\\:text-2xl {\\n    font-size: 1.5rem !important\\n  }\\n\\n  .sm\\\\:text-3xl {\\n    font-size: 1.875rem !important\\n  }\\n\\n  .sm\\\\:text-4xl {\\n    font-size: 2.25rem !important\\n  }\\n\\n  .sm\\\\:text-5xl {\\n    font-size: 3rem !important\\n  }\\n\\n  .sm\\\\:text-6xl {\\n    font-size: 4rem !important\\n  }\\n\\n  .sm\\\\:italic {\\n    font-style: italic !important\\n  }\\n\\n  .sm\\\\:not-italic {\\n    font-style: normal !important\\n  }\\n\\n  .sm\\\\:hover\\\\:italic:hover {\\n    font-style: italic !important\\n  }\\n\\n  .sm\\\\:hover\\\\:not-italic:hover {\\n    font-style: normal !important\\n  }\\n\\n  .sm\\\\:focus\\\\:italic:focus {\\n    font-style: italic !important\\n  }\\n\\n  .sm\\\\:focus\\\\:not-italic:focus {\\n    font-style: normal !important\\n  }\\n\\n  .sm\\\\:uppercase {\\n    text-transform: uppercase !important\\n  }\\n\\n  .sm\\\\:lowercase {\\n    text-transform: lowercase !important\\n  }\\n\\n  .sm\\\\:capitalize {\\n    text-transform: capitalize !important\\n  }\\n\\n  .sm\\\\:normal-case {\\n    text-transform: none !important\\n  }\\n\\n  .sm\\\\:hover\\\\:uppercase:hover {\\n    text-transform: uppercase !important\\n  }\\n\\n  .sm\\\\:hover\\\\:lowercase:hover {\\n    text-transform: lowercase !important\\n  }\\n\\n  .sm\\\\:hover\\\\:capitalize:hover {\\n    text-transform: capitalize !important\\n  }\\n\\n  .sm\\\\:hover\\\\:normal-case:hover {\\n    text-transform: none !important\\n  }\\n\\n  .sm\\\\:focus\\\\:uppercase:focus {\\n    text-transform: uppercase !important\\n  }\\n\\n  .sm\\\\:focus\\\\:lowercase:focus {\\n    text-transform: lowercase !important\\n  }\\n\\n  .sm\\\\:focus\\\\:capitalize:focus {\\n    text-transform: capitalize !important\\n  }\\n\\n  .sm\\\\:focus\\\\:normal-case:focus {\\n    text-transform: none !important\\n  }\\n\\n  .sm\\\\:underline {\\n    text-decoration: underline !important\\n  }\\n\\n  .sm\\\\:line-through {\\n    text-decoration: line-through !important\\n  }\\n\\n  .sm\\\\:no-underline {\\n    text-decoration: none !important\\n  }\\n\\n  .sm\\\\:hover\\\\:underline:hover {\\n    text-decoration: underline !important\\n  }\\n\\n  .sm\\\\:hover\\\\:line-through:hover {\\n    text-decoration: line-through !important\\n  }\\n\\n  .sm\\\\:hover\\\\:no-underline:hover {\\n    text-decoration: none !important\\n  }\\n\\n  .sm\\\\:focus\\\\:underline:focus {\\n    text-decoration: underline !important\\n  }\\n\\n  .sm\\\\:focus\\\\:line-through:focus {\\n    text-decoration: line-through !important\\n  }\\n\\n  .sm\\\\:focus\\\\:no-underline:focus {\\n    text-decoration: none !important\\n  }\\n\\n  .sm\\\\:antialiased {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .sm\\\\:subpixel-antialiased {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .sm\\\\:hover\\\\:antialiased:hover {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .sm\\\\:hover\\\\:subpixel-antialiased:hover {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .sm\\\\:focus\\\\:antialiased:focus {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .sm\\\\:focus\\\\:subpixel-antialiased:focus {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .sm\\\\:select-none {\\n    -webkit-user-select: none !important;\\n       -moz-user-select: none !important;\\n        -ms-user-select: none !important;\\n            user-select: none !important\\n  }\\n\\n  .sm\\\\:select-text {\\n    -webkit-user-select: text !important;\\n       -moz-user-select: text !important;\\n        -ms-user-select: text !important;\\n            user-select: text !important\\n  }\\n\\n  .sm\\\\:select-all {\\n    -webkit-user-select: all !important;\\n       -moz-user-select: all !important;\\n        -ms-user-select: all !important;\\n            user-select: all !important\\n  }\\n\\n  .sm\\\\:select-auto {\\n    -webkit-user-select: auto !important;\\n       -moz-user-select: auto !important;\\n        -ms-user-select: auto !important;\\n            user-select: auto !important\\n  }\\n\\n  .sm\\\\:align-baseline {\\n    vertical-align: baseline !important\\n  }\\n\\n  .sm\\\\:align-top {\\n    vertical-align: top !important\\n  }\\n\\n  .sm\\\\:align-middle {\\n    vertical-align: middle !important\\n  }\\n\\n  .sm\\\\:align-bottom {\\n    vertical-align: bottom !important\\n  }\\n\\n  .sm\\\\:align-text-top {\\n    vertical-align: text-top !important\\n  }\\n\\n  .sm\\\\:align-text-bottom {\\n    vertical-align: text-bottom !important\\n  }\\n\\n  .sm\\\\:visible {\\n    visibility: visible !important\\n  }\\n\\n  .sm\\\\:invisible {\\n    visibility: hidden !important\\n  }\\n\\n  .sm\\\\:whitespace-normal {\\n    white-space: normal !important\\n  }\\n\\n  .sm\\\\:whitespace-no-wrap {\\n    white-space: nowrap !important\\n  }\\n\\n  .sm\\\\:whitespace-pre {\\n    white-space: pre !important\\n  }\\n\\n  .sm\\\\:whitespace-pre-line {\\n    white-space: pre-line !important\\n  }\\n\\n  .sm\\\\:whitespace-pre-wrap {\\n    white-space: pre-wrap !important\\n  }\\n\\n  .sm\\\\:break-normal {\\n    overflow-wrap: normal !important;\\n    word-break: normal !important\\n  }\\n\\n  .sm\\\\:break-words {\\n    overflow-wrap: break-word !important\\n  }\\n\\n  .sm\\\\:break-all {\\n    word-break: break-all !important\\n  }\\n\\n  .sm\\\\:truncate {\\n    overflow: hidden !important;\\n    text-overflow: ellipsis !important;\\n    white-space: nowrap !important\\n  }\\n\\n  .sm\\\\:w-1 {\\n    width: 0.25rem !important\\n  }\\n\\n  .sm\\\\:w-2 {\\n    width: 0.5rem !important\\n  }\\n\\n  .sm\\\\:w-3 {\\n    width: 0.75rem !important\\n  }\\n\\n  .sm\\\\:w-4 {\\n    width: 1rem !important\\n  }\\n\\n  .sm\\\\:w-5 {\\n    width: 1.25rem !important\\n  }\\n\\n  .sm\\\\:w-6 {\\n    width: 1.5rem !important\\n  }\\n\\n  .sm\\\\:w-8 {\\n    width: 2rem !important\\n  }\\n\\n  .sm\\\\:w-10 {\\n    width: 2.5rem !important\\n  }\\n\\n  .sm\\\\:w-12 {\\n    width: 3rem !important\\n  }\\n\\n  .sm\\\\:w-16 {\\n    width: 4rem !important\\n  }\\n\\n  .sm\\\\:w-24 {\\n    width: 6rem !important\\n  }\\n\\n  .sm\\\\:w-32 {\\n    width: 8rem !important\\n  }\\n\\n  .sm\\\\:w-48 {\\n    width: 12rem !important\\n  }\\n\\n  .sm\\\\:w-64 {\\n    width: 16rem !important\\n  }\\n\\n  .sm\\\\:w-auto {\\n    width: auto !important\\n  }\\n\\n  .sm\\\\:w-px {\\n    width: 1px !important\\n  }\\n\\n  .sm\\\\:w-1\\\\/2 {\\n    width: 50% !important\\n  }\\n\\n  .sm\\\\:w-1\\\\/3 {\\n    width: 33.33333% !important\\n  }\\n\\n  .sm\\\\:w-2\\\\/3 {\\n    width: 66.66667% !important\\n  }\\n\\n  .sm\\\\:w-1\\\\/4 {\\n    width: 25% !important\\n  }\\n\\n  .sm\\\\:w-3\\\\/4 {\\n    width: 75% !important\\n  }\\n\\n  .sm\\\\:w-1\\\\/5 {\\n    width: 20% !important\\n  }\\n\\n  .sm\\\\:w-2\\\\/5 {\\n    width: 40% !important\\n  }\\n\\n  .sm\\\\:w-3\\\\/5 {\\n    width: 60% !important\\n  }\\n\\n  .sm\\\\:w-4\\\\/5 {\\n    width: 80% !important\\n  }\\n\\n  .sm\\\\:w-1\\\\/6 {\\n    width: 16.66667% !important\\n  }\\n\\n  .sm\\\\:w-5\\\\/6 {\\n    width: 83.33333% !important\\n  }\\n\\n  .sm\\\\:w-1\\\\/12 {\\n    width: 8.33333% !important\\n  }\\n\\n  .sm\\\\:w-2\\\\/12 {\\n    width: 16.66667% !important\\n  }\\n\\n  .sm\\\\:w-3\\\\/12 {\\n    width: 25% !important\\n  }\\n\\n  .sm\\\\:w-4\\\\/12 {\\n    width: 33.33333% !important\\n  }\\n\\n  .sm\\\\:w-5\\\\/12 {\\n    width: 41.66667% !important\\n  }\\n\\n  .sm\\\\:w-6\\\\/12 {\\n    width: 50% !important\\n  }\\n\\n  .sm\\\\:w-7\\\\/12 {\\n    width: 58.33333% !important\\n  }\\n\\n  .sm\\\\:w-8\\\\/12 {\\n    width: 66.66667% !important\\n  }\\n\\n  .sm\\\\:w-9\\\\/12 {\\n    width: 75% !important\\n  }\\n\\n  .sm\\\\:w-10\\\\/12 {\\n    width: 83.33333% !important\\n  }\\n\\n  .sm\\\\:w-11\\\\/12 {\\n    width: 91.66667% !important\\n  }\\n\\n  .sm\\\\:w-full {\\n    width: 100% !important\\n  }\\n\\n  .sm\\\\:w-screen {\\n    width: 100vw !important\\n  }\\n\\n  .sm\\\\:z-0 {\\n    z-index: 0 !important\\n  }\\n\\n  .sm\\\\:z-10 {\\n    z-index: 10 !important\\n  }\\n\\n  .sm\\\\:z-20 {\\n    z-index: 20 !important\\n  }\\n\\n  .sm\\\\:z-30 {\\n    z-index: 30 !important\\n  }\\n\\n  .sm\\\\:z-40 {\\n    z-index: 40 !important\\n  }\\n\\n  .sm\\\\:z-50 {\\n    z-index: 50 !important\\n  }\\n\\n  .sm\\\\:z-auto {\\n    z-index: auto !important\\n  }\\n}\\n\\n@media (min-width: 768px) {\\n  .md\\\\:sr-only {\\n    position: absolute !important;\\n    width: 1px !important;\\n    height: 1px !important;\\n    padding: 0 !important;\\n    margin: -1px !important;\\n    overflow: hidden !important;\\n    clip: rect(0, 0, 0, 0) !important;\\n    white-space: nowrap !important;\\n    border-width: 0 !important\\n  }\\n\\n  .md\\\\:not-sr-only {\\n    position: static !important;\\n    width: auto !important;\\n    height: auto !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    overflow: visible !important;\\n    clip: auto !important;\\n    white-space: normal !important\\n  }\\n\\n  .md\\\\:focus\\\\:sr-only:focus {\\n    position: absolute !important;\\n    width: 1px !important;\\n    height: 1px !important;\\n    padding: 0 !important;\\n    margin: -1px !important;\\n    overflow: hidden !important;\\n    clip: rect(0, 0, 0, 0) !important;\\n    white-space: nowrap !important;\\n    border-width: 0 !important\\n  }\\n\\n  .md\\\\:focus\\\\:not-sr-only:focus {\\n    position: static !important;\\n    width: auto !important;\\n    height: auto !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    overflow: visible !important;\\n    clip: auto !important;\\n    white-space: normal !important\\n  }\\n\\n  .md\\\\:appearance-none {\\n    -webkit-appearance: none !important;\\n       -moz-appearance: none !important;\\n            appearance: none !important\\n  }\\n\\n  .md\\\\:bg-fixed {\\n    background-attachment: fixed !important\\n  }\\n\\n  .md\\\\:bg-local {\\n    background-attachment: local !important\\n  }\\n\\n  .md\\\\:bg-scroll {\\n    background-attachment: scroll !important\\n  }\\n\\n  .md\\\\:bg-transparent {\\n    background-color: transparent !important\\n  }\\n\\n  .md\\\\:bg-black {\\n    background-color: #22292f !important\\n  }\\n\\n  .md\\\\:bg-white {\\n    background-color: #ffffff !important\\n  }\\n\\n  .md\\\\:bg-grey {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:bg-grey-light {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:hover\\\\:bg-transparent:hover {\\n    background-color: transparent !important\\n  }\\n\\n  .md\\\\:hover\\\\:bg-black:hover {\\n    background-color: #22292f !important\\n  }\\n\\n  .md\\\\:hover\\\\:bg-white:hover {\\n    background-color: #ffffff !important\\n  }\\n\\n  .md\\\\:hover\\\\:bg-grey:hover {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:hover\\\\:bg-grey-light:hover {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:focus\\\\:bg-transparent:focus {\\n    background-color: transparent !important\\n  }\\n\\n  .md\\\\:focus\\\\:bg-black:focus {\\n    background-color: #22292f !important\\n  }\\n\\n  .md\\\\:focus\\\\:bg-white:focus {\\n    background-color: #ffffff !important\\n  }\\n\\n  .md\\\\:focus\\\\:bg-grey:focus {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:focus\\\\:bg-grey-light:focus {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:bg-auto {\\n    background-size: auto !important\\n  }\\n\\n  .md\\\\:bg-cover {\\n    background-size: cover !important\\n  }\\n\\n  .md\\\\:bg-contain {\\n    background-size: contain !important\\n  }\\n\\n  .md\\\\:border-transparent {\\n    border-color: transparent !important\\n  }\\n\\n  .md\\\\:border-black {\\n    border-color: #22292f !important\\n  }\\n\\n  .md\\\\:border-white {\\n    border-color: #ffffff !important\\n  }\\n\\n  .md\\\\:border-grey {\\n    border-color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:border-grey-light {\\n    border-color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:hover\\\\:border-transparent:hover {\\n    border-color: transparent !important\\n  }\\n\\n  .md\\\\:hover\\\\:border-black:hover {\\n    border-color: #22292f !important\\n  }\\n\\n  .md\\\\:hover\\\\:border-white:hover {\\n    border-color: #ffffff !important\\n  }\\n\\n  .md\\\\:hover\\\\:border-grey:hover {\\n    border-color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:hover\\\\:border-grey-light:hover {\\n    border-color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:border-solid {\\n    border-style: solid !important\\n  }\\n\\n  .md\\\\:border-dashed {\\n    border-style: dashed !important\\n  }\\n\\n  .md\\\\:border-dotted {\\n    border-style: dotted !important\\n  }\\n\\n  .md\\\\:border-double {\\n    border-style: double !important\\n  }\\n\\n  .md\\\\:border-none {\\n    border-style: none !important\\n  }\\n\\n  .md\\\\:border-0 {\\n    border-width: 0 !important\\n  }\\n\\n  .md\\\\:border-2 {\\n    border-width: 2px !important\\n  }\\n\\n  .md\\\\:border-4 {\\n    border-width: 4px !important\\n  }\\n\\n  .md\\\\:border-8 {\\n    border-width: 8px !important\\n  }\\n\\n  .md\\\\:border {\\n    border-width: 1px !important\\n  }\\n\\n  .md\\\\:border-t-0 {\\n    border-top-width: 0 !important\\n  }\\n\\n  .md\\\\:border-r-0 {\\n    border-right-width: 0 !important\\n  }\\n\\n  .md\\\\:border-b-0 {\\n    border-bottom-width: 0 !important\\n  }\\n\\n  .md\\\\:border-l-0 {\\n    border-left-width: 0 !important\\n  }\\n\\n  .md\\\\:border-t-2 {\\n    border-top-width: 2px !important\\n  }\\n\\n  .md\\\\:border-r-2 {\\n    border-right-width: 2px !important\\n  }\\n\\n  .md\\\\:border-b-2 {\\n    border-bottom-width: 2px !important\\n  }\\n\\n  .md\\\\:border-l-2 {\\n    border-left-width: 2px !important\\n  }\\n\\n  .md\\\\:border-t-4 {\\n    border-top-width: 4px !important\\n  }\\n\\n  .md\\\\:border-r-4 {\\n    border-right-width: 4px !important\\n  }\\n\\n  .md\\\\:border-b-4 {\\n    border-bottom-width: 4px !important\\n  }\\n\\n  .md\\\\:border-l-4 {\\n    border-left-width: 4px !important\\n  }\\n\\n  .md\\\\:border-t-8 {\\n    border-top-width: 8px !important\\n  }\\n\\n  .md\\\\:border-r-8 {\\n    border-right-width: 8px !important\\n  }\\n\\n  .md\\\\:border-b-8 {\\n    border-bottom-width: 8px !important\\n  }\\n\\n  .md\\\\:border-l-8 {\\n    border-left-width: 8px !important\\n  }\\n\\n  .md\\\\:border-t {\\n    border-top-width: 1px !important\\n  }\\n\\n  .md\\\\:border-r {\\n    border-right-width: 1px !important\\n  }\\n\\n  .md\\\\:border-b {\\n    border-bottom-width: 1px !important\\n  }\\n\\n  .md\\\\:border-l {\\n    border-left-width: 1px !important\\n  }\\n\\n  .md\\\\:block {\\n    display: block !important\\n  }\\n\\n  .md\\\\:inline-block {\\n    display: inline-block !important\\n  }\\n\\n  .md\\\\:inline {\\n    display: inline !important\\n  }\\n\\n  .md\\\\:flex {\\n    display: flex !important\\n  }\\n\\n  .md\\\\:inline-flex {\\n    display: inline-flex !important\\n  }\\n\\n  .md\\\\:table {\\n    display: table !important\\n  }\\n\\n  .md\\\\:table-row {\\n    display: table-row !important\\n  }\\n\\n  .md\\\\:table-cell {\\n    display: table-cell !important\\n  }\\n\\n  .md\\\\:hidden {\\n    display: none !important\\n  }\\n\\n  .md\\\\:flex-row {\\n    flex-direction: row !important\\n  }\\n\\n  .md\\\\:flex-row-reverse {\\n    flex-direction: row-reverse !important\\n  }\\n\\n  .md\\\\:flex-col {\\n    flex-direction: column !important\\n  }\\n\\n  .md\\\\:flex-col-reverse {\\n    flex-direction: column-reverse !important\\n  }\\n\\n  .md\\\\:flex-wrap {\\n    flex-wrap: wrap !important\\n  }\\n\\n  .md\\\\:flex-wrap-reverse {\\n    flex-wrap: wrap-reverse !important\\n  }\\n\\n  .md\\\\:flex-no-wrap {\\n    flex-wrap: nowrap !important\\n  }\\n\\n  .md\\\\:items-start {\\n    align-items: flex-start !important\\n  }\\n\\n  .md\\\\:items-end {\\n    align-items: flex-end !important\\n  }\\n\\n  .md\\\\:items-center {\\n    align-items: center !important\\n  }\\n\\n  .md\\\\:items-baseline {\\n    align-items: baseline !important\\n  }\\n\\n  .md\\\\:items-stretch {\\n    align-items: stretch !important\\n  }\\n\\n  .md\\\\:self-auto {\\n    align-self: auto !important\\n  }\\n\\n  .md\\\\:self-start {\\n    align-self: flex-start !important\\n  }\\n\\n  .md\\\\:self-end {\\n    align-self: flex-end !important\\n  }\\n\\n  .md\\\\:self-center {\\n    align-self: center !important\\n  }\\n\\n  .md\\\\:self-stretch {\\n    align-self: stretch !important\\n  }\\n\\n  .md\\\\:justify-start {\\n    justify-content: flex-start !important\\n  }\\n\\n  .md\\\\:justify-end {\\n    justify-content: flex-end !important\\n  }\\n\\n  .md\\\\:justify-center {\\n    justify-content: center !important\\n  }\\n\\n  .md\\\\:justify-between {\\n    justify-content: space-between !important\\n  }\\n\\n  .md\\\\:justify-around {\\n    justify-content: space-around !important\\n  }\\n\\n  .md\\\\:content-center {\\n    align-content: center !important\\n  }\\n\\n  .md\\\\:content-start {\\n    align-content: flex-start !important\\n  }\\n\\n  .md\\\\:content-end {\\n    align-content: flex-end !important\\n  }\\n\\n  .md\\\\:content-between {\\n    align-content: space-between !important\\n  }\\n\\n  .md\\\\:content-around {\\n    align-content: space-around !important\\n  }\\n\\n  .md\\\\:flex-1 {\\n    flex: 1 1 0% !important\\n  }\\n\\n  .md\\\\:flex-auto {\\n    flex: 1 1 auto !important\\n  }\\n\\n  .md\\\\:flex-initial {\\n    flex: 0 1 auto !important\\n  }\\n\\n  .md\\\\:flex-none {\\n    flex: none !important\\n  }\\n\\n  .md\\\\:flex-grow-0 {\\n    flex-grow: 0 !important\\n  }\\n\\n  .md\\\\:flex-grow {\\n    flex-grow: 1 !important\\n  }\\n\\n  .md\\\\:flex-shrink-0 {\\n    flex-shrink: 0 !important\\n  }\\n\\n  .md\\\\:flex-shrink {\\n    flex-shrink: 1 !important\\n  }\\n\\n  .md\\\\:order-1 {\\n    order: 1 !important\\n  }\\n\\n  .md\\\\:order-2 {\\n    order: 2 !important\\n  }\\n\\n  .md\\\\:order-3 {\\n    order: 3 !important\\n  }\\n\\n  .md\\\\:order-4 {\\n    order: 4 !important\\n  }\\n\\n  .md\\\\:order-5 {\\n    order: 5 !important\\n  }\\n\\n  .md\\\\:order-6 {\\n    order: 6 !important\\n  }\\n\\n  .md\\\\:order-first {\\n    order: -1 !important\\n  }\\n\\n  .md\\\\:order-last {\\n    order: 999 !important\\n  }\\n\\n  .md\\\\:order-normal {\\n    order: 0 !important\\n  }\\n\\n  .md\\\\:hover\\\\:order-1:hover {\\n    order: 1 !important\\n  }\\n\\n  .md\\\\:hover\\\\:order-2:hover {\\n    order: 2 !important\\n  }\\n\\n  .md\\\\:hover\\\\:order-3:hover {\\n    order: 3 !important\\n  }\\n\\n  .md\\\\:hover\\\\:order-4:hover {\\n    order: 4 !important\\n  }\\n\\n  .md\\\\:hover\\\\:order-5:hover {\\n    order: 5 !important\\n  }\\n\\n  .md\\\\:hover\\\\:order-6:hover {\\n    order: 6 !important\\n  }\\n\\n  .md\\\\:hover\\\\:order-first:hover {\\n    order: -1 !important\\n  }\\n\\n  .md\\\\:hover\\\\:order-last:hover {\\n    order: 999 !important\\n  }\\n\\n  .md\\\\:hover\\\\:order-normal:hover {\\n    order: 0 !important\\n  }\\n\\n  .md\\\\:focus\\\\:order-1:focus {\\n    order: 1 !important\\n  }\\n\\n  .md\\\\:focus\\\\:order-2:focus {\\n    order: 2 !important\\n  }\\n\\n  .md\\\\:focus\\\\:order-3:focus {\\n    order: 3 !important\\n  }\\n\\n  .md\\\\:focus\\\\:order-4:focus {\\n    order: 4 !important\\n  }\\n\\n  .md\\\\:focus\\\\:order-5:focus {\\n    order: 5 !important\\n  }\\n\\n  .md\\\\:focus\\\\:order-6:focus {\\n    order: 6 !important\\n  }\\n\\n  .md\\\\:focus\\\\:order-first:focus {\\n    order: -1 !important\\n  }\\n\\n  .md\\\\:focus\\\\:order-last:focus {\\n    order: 999 !important\\n  }\\n\\n  .md\\\\:focus\\\\:order-normal:focus {\\n    order: 0 !important\\n  }\\n\\n  .md\\\\:float-right {\\n    float: right !important\\n  }\\n\\n  .md\\\\:float-left {\\n    float: left !important\\n  }\\n\\n  .md\\\\:float-none {\\n    float: none !important\\n  }\\n\\n  .md\\\\:clearfix:after {\\n    content: \\\"\\\" !important;\\n    display: table !important;\\n    clear: both !important\\n  }\\n\\n  .md\\\\:font-light {\\n    font-weight: 300 !important\\n  }\\n\\n  .md\\\\:font-normal {\\n    font-weight: 400 !important\\n  }\\n\\n  .md\\\\:font-medium {\\n    font-weight: 500 !important\\n  }\\n\\n  .md\\\\:font-semibold {\\n    font-weight: 600 !important\\n  }\\n\\n  .md\\\\:font-bold {\\n    font-weight: 700 !important\\n  }\\n\\n  .md\\\\:font-extrabold {\\n    font-weight: 800 !important\\n  }\\n\\n  .md\\\\:font-black {\\n    font-weight: 900 !important\\n  }\\n\\n  .md\\\\:hover\\\\:font-light:hover {\\n    font-weight: 300 !important\\n  }\\n\\n  .md\\\\:hover\\\\:font-normal:hover {\\n    font-weight: 400 !important\\n  }\\n\\n  .md\\\\:hover\\\\:font-medium:hover {\\n    font-weight: 500 !important\\n  }\\n\\n  .md\\\\:hover\\\\:font-semibold:hover {\\n    font-weight: 600 !important\\n  }\\n\\n  .md\\\\:hover\\\\:font-bold:hover {\\n    font-weight: 700 !important\\n  }\\n\\n  .md\\\\:hover\\\\:font-extrabold:hover {\\n    font-weight: 800 !important\\n  }\\n\\n  .md\\\\:hover\\\\:font-black:hover {\\n    font-weight: 900 !important\\n  }\\n\\n  .md\\\\:h-1 {\\n    height: 0.25rem !important\\n  }\\n\\n  .md\\\\:h-2 {\\n    height: 0.5rem !important\\n  }\\n\\n  .md\\\\:h-3 {\\n    height: 0.75rem !important\\n  }\\n\\n  .md\\\\:h-4 {\\n    height: 1rem !important\\n  }\\n\\n  .md\\\\:h-5 {\\n    height: 1.25rem !important\\n  }\\n\\n  .md\\\\:h-6 {\\n    height: 1.5rem !important\\n  }\\n\\n  .md\\\\:h-8 {\\n    height: 2rem !important\\n  }\\n\\n  .md\\\\:h-10 {\\n    height: 2.5rem !important\\n  }\\n\\n  .md\\\\:h-12 {\\n    height: 3rem !important\\n  }\\n\\n  .md\\\\:h-16 {\\n    height: 4rem !important\\n  }\\n\\n  .md\\\\:h-24 {\\n    height: 6rem !important\\n  }\\n\\n  .md\\\\:h-32 {\\n    height: 8rem !important\\n  }\\n\\n  .md\\\\:h-48 {\\n    height: 12rem !important\\n  }\\n\\n  .md\\\\:h-64 {\\n    height: 16rem !important\\n  }\\n\\n  .md\\\\:h-auto {\\n    height: auto !important\\n  }\\n\\n  .md\\\\:h-px {\\n    height: 1px !important\\n  }\\n\\n  .md\\\\:h-full {\\n    height: 100% !important\\n  }\\n\\n  .md\\\\:h-screen {\\n    height: 100vh !important\\n  }\\n\\n  .md\\\\:leading-none {\\n    line-height: 1 !important\\n  }\\n\\n  .md\\\\:leading-tight {\\n    line-height: 1.25 !important\\n  }\\n\\n  .md\\\\:leading-normal {\\n    line-height: 1.5 !important\\n  }\\n\\n  .md\\\\:leading-loose {\\n    line-height: 2 !important\\n  }\\n\\n  .md\\\\:list-inside {\\n    list-style-position: inside !important\\n  }\\n\\n  .md\\\\:list-outside {\\n    list-style-position: outside !important\\n  }\\n\\n  .md\\\\:m-0 {\\n    margin: 0 !important\\n  }\\n\\n  .md\\\\:m-1 {\\n    margin: 0.25rem !important\\n  }\\n\\n  .md\\\\:m-2 {\\n    margin: 0.5rem !important\\n  }\\n\\n  .md\\\\:m-3 {\\n    margin: 0.75rem !important\\n  }\\n\\n  .md\\\\:m-4 {\\n    margin: 1rem !important\\n  }\\n\\n  .md\\\\:m-5 {\\n    margin: 1.25rem !important\\n  }\\n\\n  .md\\\\:m-6 {\\n    margin: 1.5rem !important\\n  }\\n\\n  .md\\\\:m-8 {\\n    margin: 2rem !important\\n  }\\n\\n  .md\\\\:m-10 {\\n    margin: 2.5rem !important\\n  }\\n\\n  .md\\\\:m-12 {\\n    margin: 3rem !important\\n  }\\n\\n  .md\\\\:m-16 {\\n    margin: 4rem !important\\n  }\\n\\n  .md\\\\:m-20 {\\n    margin: 5rem !important\\n  }\\n\\n  .md\\\\:m-24 {\\n    margin: 6rem !important\\n  }\\n\\n  .md\\\\:m-32 {\\n    margin: 8rem !important\\n  }\\n\\n  .md\\\\:m-auto {\\n    margin: auto !important\\n  }\\n\\n  .md\\\\:m-px {\\n    margin: 1px !important\\n  }\\n\\n  .md\\\\:m-base {\\n    margin: 2.2rem !important\\n  }\\n\\n  .md\\\\:-m-px {\\n    margin: -1px !important\\n  }\\n\\n  .md\\\\:-m-1 {\\n    margin: -0.25rem !important\\n  }\\n\\n  .md\\\\:-m-2 {\\n    margin: -0.5rem !important\\n  }\\n\\n  .md\\\\:-m-3 {\\n    margin: -0.75rem !important\\n  }\\n\\n  .md\\\\:-m-4 {\\n    margin: -1rem !important\\n  }\\n\\n  .md\\\\:my-0 {\\n    margin-top: 0 !important;\\n    margin-bottom: 0 !important\\n  }\\n\\n  .md\\\\:mx-0 {\\n    margin-left: 0 !important;\\n    margin-right: 0 !important\\n  }\\n\\n  .md\\\\:my-1 {\\n    margin-top: 0.25rem !important;\\n    margin-bottom: 0.25rem !important\\n  }\\n\\n  .md\\\\:mx-1 {\\n    margin-left: 0.25rem !important;\\n    margin-right: 0.25rem !important\\n  }\\n\\n  .md\\\\:my-2 {\\n    margin-top: 0.5rem !important;\\n    margin-bottom: 0.5rem !important\\n  }\\n\\n  .md\\\\:mx-2 {\\n    margin-left: 0.5rem !important;\\n    margin-right: 0.5rem !important\\n  }\\n\\n  .md\\\\:my-3 {\\n    margin-top: 0.75rem !important;\\n    margin-bottom: 0.75rem !important\\n  }\\n\\n  .md\\\\:mx-3 {\\n    margin-left: 0.75rem !important;\\n    margin-right: 0.75rem !important\\n  }\\n\\n  .md\\\\:my-4 {\\n    margin-top: 1rem !important;\\n    margin-bottom: 1rem !important\\n  }\\n\\n  .md\\\\:mx-4 {\\n    margin-left: 1rem !important;\\n    margin-right: 1rem !important\\n  }\\n\\n  .md\\\\:my-5 {\\n    margin-top: 1.25rem !important;\\n    margin-bottom: 1.25rem !important\\n  }\\n\\n  .md\\\\:mx-5 {\\n    margin-left: 1.25rem !important;\\n    margin-right: 1.25rem !important\\n  }\\n\\n  .md\\\\:my-6 {\\n    margin-top: 1.5rem !important;\\n    margin-bottom: 1.5rem !important\\n  }\\n\\n  .md\\\\:mx-6 {\\n    margin-left: 1.5rem !important;\\n    margin-right: 1.5rem !important\\n  }\\n\\n  .md\\\\:my-8 {\\n    margin-top: 2rem !important;\\n    margin-bottom: 2rem !important\\n  }\\n\\n  .md\\\\:mx-8 {\\n    margin-left: 2rem !important;\\n    margin-right: 2rem !important\\n  }\\n\\n  .md\\\\:my-10 {\\n    margin-top: 2.5rem !important;\\n    margin-bottom: 2.5rem !important\\n  }\\n\\n  .md\\\\:mx-10 {\\n    margin-left: 2.5rem !important;\\n    margin-right: 2.5rem !important\\n  }\\n\\n  .md\\\\:my-12 {\\n    margin-top: 3rem !important;\\n    margin-bottom: 3rem !important\\n  }\\n\\n  .md\\\\:mx-12 {\\n    margin-left: 3rem !important;\\n    margin-right: 3rem !important\\n  }\\n\\n  .md\\\\:my-16 {\\n    margin-top: 4rem !important;\\n    margin-bottom: 4rem !important\\n  }\\n\\n  .md\\\\:mx-16 {\\n    margin-left: 4rem !important;\\n    margin-right: 4rem !important\\n  }\\n\\n  .md\\\\:my-20 {\\n    margin-top: 5rem !important;\\n    margin-bottom: 5rem !important\\n  }\\n\\n  .md\\\\:mx-20 {\\n    margin-left: 5rem !important;\\n    margin-right: 5rem !important\\n  }\\n\\n  .md\\\\:my-24 {\\n    margin-top: 6rem !important;\\n    margin-bottom: 6rem !important\\n  }\\n\\n  .md\\\\:mx-24 {\\n    margin-left: 6rem !important;\\n    margin-right: 6rem !important\\n  }\\n\\n  .md\\\\:my-32 {\\n    margin-top: 8rem !important;\\n    margin-bottom: 8rem !important\\n  }\\n\\n  .md\\\\:mx-32 {\\n    margin-left: 8rem !important;\\n    margin-right: 8rem !important\\n  }\\n\\n  .md\\\\:my-auto {\\n    margin-top: auto !important;\\n    margin-bottom: auto !important\\n  }\\n\\n  .md\\\\:mx-auto {\\n    margin-left: auto !important;\\n    margin-right: auto !important\\n  }\\n\\n  .md\\\\:my-px {\\n    margin-top: 1px !important;\\n    margin-bottom: 1px !important\\n  }\\n\\n  .md\\\\:mx-px {\\n    margin-left: 1px !important;\\n    margin-right: 1px !important\\n  }\\n\\n  .md\\\\:my-base {\\n    margin-top: 2.2rem !important;\\n    margin-bottom: 2.2rem !important\\n  }\\n\\n  .md\\\\:mx-base {\\n    margin-left: 2.2rem !important;\\n    margin-right: 2.2rem !important\\n  }\\n\\n  .md\\\\:-my-px {\\n    margin-top: -1px !important;\\n    margin-bottom: -1px !important\\n  }\\n\\n  .md\\\\:-mx-px {\\n    margin-left: -1px !important;\\n    margin-right: -1px !important\\n  }\\n\\n  .md\\\\:-my-1 {\\n    margin-top: -0.25rem !important;\\n    margin-bottom: -0.25rem !important\\n  }\\n\\n  .md\\\\:-mx-1 {\\n    margin-left: -0.25rem !important;\\n    margin-right: -0.25rem !important\\n  }\\n\\n  .md\\\\:-my-2 {\\n    margin-top: -0.5rem !important;\\n    margin-bottom: -0.5rem !important\\n  }\\n\\n  .md\\\\:-mx-2 {\\n    margin-left: -0.5rem !important;\\n    margin-right: -0.5rem !important\\n  }\\n\\n  .md\\\\:-my-3 {\\n    margin-top: -0.75rem !important;\\n    margin-bottom: -0.75rem !important\\n  }\\n\\n  .md\\\\:-mx-3 {\\n    margin-left: -0.75rem !important;\\n    margin-right: -0.75rem !important\\n  }\\n\\n  .md\\\\:-my-4 {\\n    margin-top: -1rem !important;\\n    margin-bottom: -1rem !important\\n  }\\n\\n  .md\\\\:-mx-4 {\\n    margin-left: -1rem !important;\\n    margin-right: -1rem !important\\n  }\\n\\n  .md\\\\:mt-0 {\\n    margin-top: 0 !important\\n  }\\n\\n  .md\\\\:mr-0 {\\n    margin-right: 0 !important\\n  }\\n\\n  .md\\\\:mb-0 {\\n    margin-bottom: 0 !important\\n  }\\n\\n  .md\\\\:ml-0 {\\n    margin-left: 0 !important\\n  }\\n\\n  .md\\\\:mt-1 {\\n    margin-top: 0.25rem !important\\n  }\\n\\n  .md\\\\:mr-1 {\\n    margin-right: 0.25rem !important\\n  }\\n\\n  .md\\\\:mb-1 {\\n    margin-bottom: 0.25rem !important\\n  }\\n\\n  .md\\\\:ml-1 {\\n    margin-left: 0.25rem !important\\n  }\\n\\n  .md\\\\:mt-2 {\\n    margin-top: 0.5rem !important\\n  }\\n\\n  .md\\\\:mr-2 {\\n    margin-right: 0.5rem !important\\n  }\\n\\n  .md\\\\:mb-2 {\\n    margin-bottom: 0.5rem !important\\n  }\\n\\n  .md\\\\:ml-2 {\\n    margin-left: 0.5rem !important\\n  }\\n\\n  .md\\\\:mt-3 {\\n    margin-top: 0.75rem !important\\n  }\\n\\n  .md\\\\:mr-3 {\\n    margin-right: 0.75rem !important\\n  }\\n\\n  .md\\\\:mb-3 {\\n    margin-bottom: 0.75rem !important\\n  }\\n\\n  .md\\\\:ml-3 {\\n    margin-left: 0.75rem !important\\n  }\\n\\n  .md\\\\:mt-4 {\\n    margin-top: 1rem !important\\n  }\\n\\n  .md\\\\:mr-4 {\\n    margin-right: 1rem !important\\n  }\\n\\n  .md\\\\:mb-4 {\\n    margin-bottom: 1rem !important\\n  }\\n\\n  .md\\\\:ml-4 {\\n    margin-left: 1rem !important\\n  }\\n\\n  .md\\\\:mt-5 {\\n    margin-top: 1.25rem !important\\n  }\\n\\n  .md\\\\:mr-5 {\\n    margin-right: 1.25rem !important\\n  }\\n\\n  .md\\\\:mb-5 {\\n    margin-bottom: 1.25rem !important\\n  }\\n\\n  .md\\\\:ml-5 {\\n    margin-left: 1.25rem !important\\n  }\\n\\n  .md\\\\:mt-6 {\\n    margin-top: 1.5rem !important\\n  }\\n\\n  .md\\\\:mr-6 {\\n    margin-right: 1.5rem !important\\n  }\\n\\n  .md\\\\:mb-6 {\\n    margin-bottom: 1.5rem !important\\n  }\\n\\n  .md\\\\:ml-6 {\\n    margin-left: 1.5rem !important\\n  }\\n\\n  .md\\\\:mt-8 {\\n    margin-top: 2rem !important\\n  }\\n\\n  .md\\\\:mr-8 {\\n    margin-right: 2rem !important\\n  }\\n\\n  .md\\\\:mb-8 {\\n    margin-bottom: 2rem !important\\n  }\\n\\n  .md\\\\:ml-8 {\\n    margin-left: 2rem !important\\n  }\\n\\n  .md\\\\:mt-10 {\\n    margin-top: 2.5rem !important\\n  }\\n\\n  .md\\\\:mr-10 {\\n    margin-right: 2.5rem !important\\n  }\\n\\n  .md\\\\:mb-10 {\\n    margin-bottom: 2.5rem !important\\n  }\\n\\n  .md\\\\:ml-10 {\\n    margin-left: 2.5rem !important\\n  }\\n\\n  .md\\\\:mt-12 {\\n    margin-top: 3rem !important\\n  }\\n\\n  .md\\\\:mr-12 {\\n    margin-right: 3rem !important\\n  }\\n\\n  .md\\\\:mb-12 {\\n    margin-bottom: 3rem !important\\n  }\\n\\n  .md\\\\:ml-12 {\\n    margin-left: 3rem !important\\n  }\\n\\n  .md\\\\:mt-16 {\\n    margin-top: 4rem !important\\n  }\\n\\n  .md\\\\:mr-16 {\\n    margin-right: 4rem !important\\n  }\\n\\n  .md\\\\:mb-16 {\\n    margin-bottom: 4rem !important\\n  }\\n\\n  .md\\\\:ml-16 {\\n    margin-left: 4rem !important\\n  }\\n\\n  .md\\\\:mt-20 {\\n    margin-top: 5rem !important\\n  }\\n\\n  .md\\\\:mr-20 {\\n    margin-right: 5rem !important\\n  }\\n\\n  .md\\\\:mb-20 {\\n    margin-bottom: 5rem !important\\n  }\\n\\n  .md\\\\:ml-20 {\\n    margin-left: 5rem !important\\n  }\\n\\n  .md\\\\:mt-24 {\\n    margin-top: 6rem !important\\n  }\\n\\n  .md\\\\:mr-24 {\\n    margin-right: 6rem !important\\n  }\\n\\n  .md\\\\:mb-24 {\\n    margin-bottom: 6rem !important\\n  }\\n\\n  .md\\\\:ml-24 {\\n    margin-left: 6rem !important\\n  }\\n\\n  .md\\\\:mt-32 {\\n    margin-top: 8rem !important\\n  }\\n\\n  .md\\\\:mr-32 {\\n    margin-right: 8rem !important\\n  }\\n\\n  .md\\\\:mb-32 {\\n    margin-bottom: 8rem !important\\n  }\\n\\n  .md\\\\:ml-32 {\\n    margin-left: 8rem !important\\n  }\\n\\n  .md\\\\:mt-auto {\\n    margin-top: auto !important\\n  }\\n\\n  .md\\\\:mr-auto {\\n    margin-right: auto !important\\n  }\\n\\n  .md\\\\:mb-auto {\\n    margin-bottom: auto !important\\n  }\\n\\n  .md\\\\:ml-auto {\\n    margin-left: auto !important\\n  }\\n\\n  .md\\\\:mt-px {\\n    margin-top: 1px !important\\n  }\\n\\n  .md\\\\:mr-px {\\n    margin-right: 1px !important\\n  }\\n\\n  .md\\\\:mb-px {\\n    margin-bottom: 1px !important\\n  }\\n\\n  .md\\\\:ml-px {\\n    margin-left: 1px !important\\n  }\\n\\n  .md\\\\:mt-base {\\n    margin-top: 2.2rem !important\\n  }\\n\\n  .md\\\\:mr-base {\\n    margin-right: 2.2rem !important\\n  }\\n\\n  .md\\\\:mb-base {\\n    margin-bottom: 2.2rem !important\\n  }\\n\\n  .md\\\\:ml-base {\\n    margin-left: 2.2rem !important\\n  }\\n\\n  .md\\\\:-mt-px {\\n    margin-top: -1px !important\\n  }\\n\\n  .md\\\\:-mr-px {\\n    margin-right: -1px !important\\n  }\\n\\n  .md\\\\:-mb-px {\\n    margin-bottom: -1px !important\\n  }\\n\\n  .md\\\\:-ml-px {\\n    margin-left: -1px !important\\n  }\\n\\n  .md\\\\:-mt-1 {\\n    margin-top: -0.25rem !important\\n  }\\n\\n  .md\\\\:-mr-1 {\\n    margin-right: -0.25rem !important\\n  }\\n\\n  .md\\\\:-mb-1 {\\n    margin-bottom: -0.25rem !important\\n  }\\n\\n  .md\\\\:-ml-1 {\\n    margin-left: -0.25rem !important\\n  }\\n\\n  .md\\\\:-mt-2 {\\n    margin-top: -0.5rem !important\\n  }\\n\\n  .md\\\\:-mr-2 {\\n    margin-right: -0.5rem !important\\n  }\\n\\n  .md\\\\:-mb-2 {\\n    margin-bottom: -0.5rem !important\\n  }\\n\\n  .md\\\\:-ml-2 {\\n    margin-left: -0.5rem !important\\n  }\\n\\n  .md\\\\:-mt-3 {\\n    margin-top: -0.75rem !important\\n  }\\n\\n  .md\\\\:-mr-3 {\\n    margin-right: -0.75rem !important\\n  }\\n\\n  .md\\\\:-mb-3 {\\n    margin-bottom: -0.75rem !important\\n  }\\n\\n  .md\\\\:-ml-3 {\\n    margin-left: -0.75rem !important\\n  }\\n\\n  .md\\\\:-mt-4 {\\n    margin-top: -1rem !important\\n  }\\n\\n  .md\\\\:-mr-4 {\\n    margin-right: -1rem !important\\n  }\\n\\n  .md\\\\:-mb-4 {\\n    margin-bottom: -1rem !important\\n  }\\n\\n  .md\\\\:-ml-4 {\\n    margin-left: -1rem !important\\n  }\\n\\n  .md\\\\:max-h-full {\\n    max-height: 100% !important\\n  }\\n\\n  .md\\\\:max-h-screen {\\n    max-height: 100vh !important\\n  }\\n\\n  .md\\\\:max-w-xs {\\n    max-width: 20rem !important\\n  }\\n\\n  .md\\\\:max-w-sm {\\n    max-width: 30rem !important\\n  }\\n\\n  .md\\\\:max-w-md {\\n    max-width: 40rem !important\\n  }\\n\\n  .md\\\\:max-w-lg {\\n    max-width: 50rem !important\\n  }\\n\\n  .md\\\\:max-w-xl {\\n    max-width: 60rem !important\\n  }\\n\\n  .md\\\\:max-w-2xl {\\n    max-width: 70rem !important\\n  }\\n\\n  .md\\\\:max-w-3xl {\\n    max-width: 80rem !important\\n  }\\n\\n  .md\\\\:max-w-4xl {\\n    max-width: 90rem !important\\n  }\\n\\n  .md\\\\:max-w-5xl {\\n    max-width: 100rem !important\\n  }\\n\\n  .md\\\\:max-w-full {\\n    max-width: 100% !important\\n  }\\n\\n  .md\\\\:min-h-0 {\\n    min-height: 0 !important\\n  }\\n\\n  .md\\\\:min-h-full {\\n    min-height: 100% !important\\n  }\\n\\n  .md\\\\:min-h-screen {\\n    min-height: 100vh !important\\n  }\\n\\n  .md\\\\:min-w-0 {\\n    min-width: 0 !important\\n  }\\n\\n  .md\\\\:min-w-full {\\n    min-width: 100% !important\\n  }\\n\\n  .md\\\\:object-contain {\\n    -o-object-fit: contain !important;\\n       object-fit: contain !important\\n  }\\n\\n  .md\\\\:object-cover {\\n    -o-object-fit: cover !important;\\n       object-fit: cover !important\\n  }\\n\\n  .md\\\\:object-fill {\\n    -o-object-fit: fill !important;\\n       object-fit: fill !important\\n  }\\n\\n  .md\\\\:object-none {\\n    -o-object-fit: none !important;\\n       object-fit: none !important\\n  }\\n\\n  .md\\\\:object-scale-down {\\n    -o-object-fit: scale-down !important;\\n       object-fit: scale-down !important\\n  }\\n\\n  .md\\\\:object-bottom {\\n    -o-object-position: bottom !important;\\n       object-position: bottom !important\\n  }\\n\\n  .md\\\\:object-center {\\n    -o-object-position: center !important;\\n       object-position: center !important\\n  }\\n\\n  .md\\\\:object-left {\\n    -o-object-position: left !important;\\n       object-position: left !important\\n  }\\n\\n  .md\\\\:object-left-bottom {\\n    -o-object-position: left bottom !important;\\n       object-position: left bottom !important\\n  }\\n\\n  .md\\\\:object-left-top {\\n    -o-object-position: left top !important;\\n       object-position: left top !important\\n  }\\n\\n  .md\\\\:object-right {\\n    -o-object-position: right !important;\\n       object-position: right !important\\n  }\\n\\n  .md\\\\:object-right-bottom {\\n    -o-object-position: right bottom !important;\\n       object-position: right bottom !important\\n  }\\n\\n  .md\\\\:object-right-top {\\n    -o-object-position: right top !important;\\n       object-position: right top !important\\n  }\\n\\n  .md\\\\:object-top {\\n    -o-object-position: top !important;\\n       object-position: top !important\\n  }\\n\\n  .md\\\\:opacity-0 {\\n    opacity: 0 !important\\n  }\\n\\n  .md\\\\:opacity-25 {\\n    opacity: 0.25 !important\\n  }\\n\\n  .md\\\\:opacity-50 {\\n    opacity: 0.5 !important\\n  }\\n\\n  .md\\\\:opacity-75 {\\n    opacity: 0.75 !important\\n  }\\n\\n  .md\\\\:opacity-100 {\\n    opacity: 1 !important\\n  }\\n\\n  .md\\\\:overflow-auto {\\n    overflow: auto !important\\n  }\\n\\n  .md\\\\:overflow-hidden {\\n    overflow: hidden !important\\n  }\\n\\n  .md\\\\:overflow-visible {\\n    overflow: visible !important\\n  }\\n\\n  .md\\\\:overflow-scroll {\\n    overflow: scroll !important\\n  }\\n\\n  .md\\\\:overflow-x-auto {\\n    overflow-x: auto !important\\n  }\\n\\n  .md\\\\:overflow-y-auto {\\n    overflow-y: auto !important\\n  }\\n\\n  .md\\\\:overflow-x-hidden {\\n    overflow-x: hidden !important\\n  }\\n\\n  .md\\\\:overflow-y-hidden {\\n    overflow-y: hidden !important\\n  }\\n\\n  .md\\\\:overflow-x-visible {\\n    overflow-x: visible !important\\n  }\\n\\n  .md\\\\:overflow-y-visible {\\n    overflow-y: visible !important\\n  }\\n\\n  .md\\\\:overflow-x-scroll {\\n    overflow-x: scroll !important\\n  }\\n\\n  .md\\\\:overflow-y-scroll {\\n    overflow-y: scroll !important\\n  }\\n\\n  .md\\\\:scrolling-touch {\\n    -webkit-overflow-scrolling: touch !important\\n  }\\n\\n  .md\\\\:scrolling-auto {\\n    -webkit-overflow-scrolling: auto !important\\n  }\\n\\n  .md\\\\:p-0 {\\n    padding: 0 !important\\n  }\\n\\n  .md\\\\:p-1 {\\n    padding: 0.25rem !important\\n  }\\n\\n  .md\\\\:p-2 {\\n    padding: 0.5rem !important\\n  }\\n\\n  .md\\\\:p-3 {\\n    padding: 0.75rem !important\\n  }\\n\\n  .md\\\\:p-4 {\\n    padding: 1rem !important\\n  }\\n\\n  .md\\\\:p-5 {\\n    padding: 1.25rem !important\\n  }\\n\\n  .md\\\\:p-6 {\\n    padding: 1.5rem !important\\n  }\\n\\n  .md\\\\:p-8 {\\n    padding: 2rem !important\\n  }\\n\\n  .md\\\\:p-10 {\\n    padding: 2.5rem !important\\n  }\\n\\n  .md\\\\:p-12 {\\n    padding: 3rem !important\\n  }\\n\\n  .md\\\\:p-16 {\\n    padding: 4rem !important\\n  }\\n\\n  .md\\\\:p-20 {\\n    padding: 5rem !important\\n  }\\n\\n  .md\\\\:p-24 {\\n    padding: 6rem !important\\n  }\\n\\n  .md\\\\:p-32 {\\n    padding: 8rem !important\\n  }\\n\\n  .md\\\\:p-px {\\n    padding: 1px !important\\n  }\\n\\n  .md\\\\:p-base {\\n    padding: 2.2rem !important\\n  }\\n\\n  .md\\\\:py-0 {\\n    padding-top: 0 !important;\\n    padding-bottom: 0 !important\\n  }\\n\\n  .md\\\\:px-0 {\\n    padding-left: 0 !important;\\n    padding-right: 0 !important\\n  }\\n\\n  .md\\\\:py-1 {\\n    padding-top: 0.25rem !important;\\n    padding-bottom: 0.25rem !important\\n  }\\n\\n  .md\\\\:px-1 {\\n    padding-left: 0.25rem !important;\\n    padding-right: 0.25rem !important\\n  }\\n\\n  .md\\\\:py-2 {\\n    padding-top: 0.5rem !important;\\n    padding-bottom: 0.5rem !important\\n  }\\n\\n  .md\\\\:px-2 {\\n    padding-left: 0.5rem !important;\\n    padding-right: 0.5rem !important\\n  }\\n\\n  .md\\\\:py-3 {\\n    padding-top: 0.75rem !important;\\n    padding-bottom: 0.75rem !important\\n  }\\n\\n  .md\\\\:px-3 {\\n    padding-left: 0.75rem !important;\\n    padding-right: 0.75rem !important\\n  }\\n\\n  .md\\\\:py-4 {\\n    padding-top: 1rem !important;\\n    padding-bottom: 1rem !important\\n  }\\n\\n  .md\\\\:px-4 {\\n    padding-left: 1rem !important;\\n    padding-right: 1rem !important\\n  }\\n\\n  .md\\\\:py-5 {\\n    padding-top: 1.25rem !important;\\n    padding-bottom: 1.25rem !important\\n  }\\n\\n  .md\\\\:px-5 {\\n    padding-left: 1.25rem !important;\\n    padding-right: 1.25rem !important\\n  }\\n\\n  .md\\\\:py-6 {\\n    padding-top: 1.5rem !important;\\n    padding-bottom: 1.5rem !important\\n  }\\n\\n  .md\\\\:px-6 {\\n    padding-left: 1.5rem !important;\\n    padding-right: 1.5rem !important\\n  }\\n\\n  .md\\\\:py-8 {\\n    padding-top: 2rem !important;\\n    padding-bottom: 2rem !important\\n  }\\n\\n  .md\\\\:px-8 {\\n    padding-left: 2rem !important;\\n    padding-right: 2rem !important\\n  }\\n\\n  .md\\\\:py-10 {\\n    padding-top: 2.5rem !important;\\n    padding-bottom: 2.5rem !important\\n  }\\n\\n  .md\\\\:px-10 {\\n    padding-left: 2.5rem !important;\\n    padding-right: 2.5rem !important\\n  }\\n\\n  .md\\\\:py-12 {\\n    padding-top: 3rem !important;\\n    padding-bottom: 3rem !important\\n  }\\n\\n  .md\\\\:px-12 {\\n    padding-left: 3rem !important;\\n    padding-right: 3rem !important\\n  }\\n\\n  .md\\\\:py-16 {\\n    padding-top: 4rem !important;\\n    padding-bottom: 4rem !important\\n  }\\n\\n  .md\\\\:px-16 {\\n    padding-left: 4rem !important;\\n    padding-right: 4rem !important\\n  }\\n\\n  .md\\\\:py-20 {\\n    padding-top: 5rem !important;\\n    padding-bottom: 5rem !important\\n  }\\n\\n  .md\\\\:px-20 {\\n    padding-left: 5rem !important;\\n    padding-right: 5rem !important\\n  }\\n\\n  .md\\\\:py-24 {\\n    padding-top: 6rem !important;\\n    padding-bottom: 6rem !important\\n  }\\n\\n  .md\\\\:px-24 {\\n    padding-left: 6rem !important;\\n    padding-right: 6rem !important\\n  }\\n\\n  .md\\\\:py-32 {\\n    padding-top: 8rem !important;\\n    padding-bottom: 8rem !important\\n  }\\n\\n  .md\\\\:px-32 {\\n    padding-left: 8rem !important;\\n    padding-right: 8rem !important\\n  }\\n\\n  .md\\\\:py-px {\\n    padding-top: 1px !important;\\n    padding-bottom: 1px !important\\n  }\\n\\n  .md\\\\:px-px {\\n    padding-left: 1px !important;\\n    padding-right: 1px !important\\n  }\\n\\n  .md\\\\:py-base {\\n    padding-top: 2.2rem !important;\\n    padding-bottom: 2.2rem !important\\n  }\\n\\n  .md\\\\:px-base {\\n    padding-left: 2.2rem !important;\\n    padding-right: 2.2rem !important\\n  }\\n\\n  .md\\\\:pt-0 {\\n    padding-top: 0 !important\\n  }\\n\\n  .md\\\\:pr-0 {\\n    padding-right: 0 !important\\n  }\\n\\n  .md\\\\:pb-0 {\\n    padding-bottom: 0 !important\\n  }\\n\\n  .md\\\\:pl-0 {\\n    padding-left: 0 !important\\n  }\\n\\n  .md\\\\:pt-1 {\\n    padding-top: 0.25rem !important\\n  }\\n\\n  .md\\\\:pr-1 {\\n    padding-right: 0.25rem !important\\n  }\\n\\n  .md\\\\:pb-1 {\\n    padding-bottom: 0.25rem !important\\n  }\\n\\n  .md\\\\:pl-1 {\\n    padding-left: 0.25rem !important\\n  }\\n\\n  .md\\\\:pt-2 {\\n    padding-top: 0.5rem !important\\n  }\\n\\n  .md\\\\:pr-2 {\\n    padding-right: 0.5rem !important\\n  }\\n\\n  .md\\\\:pb-2 {\\n    padding-bottom: 0.5rem !important\\n  }\\n\\n  .md\\\\:pl-2 {\\n    padding-left: 0.5rem !important\\n  }\\n\\n  .md\\\\:pt-3 {\\n    padding-top: 0.75rem !important\\n  }\\n\\n  .md\\\\:pr-3 {\\n    padding-right: 0.75rem !important\\n  }\\n\\n  .md\\\\:pb-3 {\\n    padding-bottom: 0.75rem !important\\n  }\\n\\n  .md\\\\:pl-3 {\\n    padding-left: 0.75rem !important\\n  }\\n\\n  .md\\\\:pt-4 {\\n    padding-top: 1rem !important\\n  }\\n\\n  .md\\\\:pr-4 {\\n    padding-right: 1rem !important\\n  }\\n\\n  .md\\\\:pb-4 {\\n    padding-bottom: 1rem !important\\n  }\\n\\n  .md\\\\:pl-4 {\\n    padding-left: 1rem !important\\n  }\\n\\n  .md\\\\:pt-5 {\\n    padding-top: 1.25rem !important\\n  }\\n\\n  .md\\\\:pr-5 {\\n    padding-right: 1.25rem !important\\n  }\\n\\n  .md\\\\:pb-5 {\\n    padding-bottom: 1.25rem !important\\n  }\\n\\n  .md\\\\:pl-5 {\\n    padding-left: 1.25rem !important\\n  }\\n\\n  .md\\\\:pt-6 {\\n    padding-top: 1.5rem !important\\n  }\\n\\n  .md\\\\:pr-6 {\\n    padding-right: 1.5rem !important\\n  }\\n\\n  .md\\\\:pb-6 {\\n    padding-bottom: 1.5rem !important\\n  }\\n\\n  .md\\\\:pl-6 {\\n    padding-left: 1.5rem !important\\n  }\\n\\n  .md\\\\:pt-8 {\\n    padding-top: 2rem !important\\n  }\\n\\n  .md\\\\:pr-8 {\\n    padding-right: 2rem !important\\n  }\\n\\n  .md\\\\:pb-8 {\\n    padding-bottom: 2rem !important\\n  }\\n\\n  .md\\\\:pl-8 {\\n    padding-left: 2rem !important\\n  }\\n\\n  .md\\\\:pt-10 {\\n    padding-top: 2.5rem !important\\n  }\\n\\n  .md\\\\:pr-10 {\\n    padding-right: 2.5rem !important\\n  }\\n\\n  .md\\\\:pb-10 {\\n    padding-bottom: 2.5rem !important\\n  }\\n\\n  .md\\\\:pl-10 {\\n    padding-left: 2.5rem !important\\n  }\\n\\n  .md\\\\:pt-12 {\\n    padding-top: 3rem !important\\n  }\\n\\n  .md\\\\:pr-12 {\\n    padding-right: 3rem !important\\n  }\\n\\n  .md\\\\:pb-12 {\\n    padding-bottom: 3rem !important\\n  }\\n\\n  .md\\\\:pl-12 {\\n    padding-left: 3rem !important\\n  }\\n\\n  .md\\\\:pt-16 {\\n    padding-top: 4rem !important\\n  }\\n\\n  .md\\\\:pr-16 {\\n    padding-right: 4rem !important\\n  }\\n\\n  .md\\\\:pb-16 {\\n    padding-bottom: 4rem !important\\n  }\\n\\n  .md\\\\:pl-16 {\\n    padding-left: 4rem !important\\n  }\\n\\n  .md\\\\:pt-20 {\\n    padding-top: 5rem !important\\n  }\\n\\n  .md\\\\:pr-20 {\\n    padding-right: 5rem !important\\n  }\\n\\n  .md\\\\:pb-20 {\\n    padding-bottom: 5rem !important\\n  }\\n\\n  .md\\\\:pl-20 {\\n    padding-left: 5rem !important\\n  }\\n\\n  .md\\\\:pt-24 {\\n    padding-top: 6rem !important\\n  }\\n\\n  .md\\\\:pr-24 {\\n    padding-right: 6rem !important\\n  }\\n\\n  .md\\\\:pb-24 {\\n    padding-bottom: 6rem !important\\n  }\\n\\n  .md\\\\:pl-24 {\\n    padding-left: 6rem !important\\n  }\\n\\n  .md\\\\:pt-32 {\\n    padding-top: 8rem !important\\n  }\\n\\n  .md\\\\:pr-32 {\\n    padding-right: 8rem !important\\n  }\\n\\n  .md\\\\:pb-32 {\\n    padding-bottom: 8rem !important\\n  }\\n\\n  .md\\\\:pl-32 {\\n    padding-left: 8rem !important\\n  }\\n\\n  .md\\\\:pt-px {\\n    padding-top: 1px !important\\n  }\\n\\n  .md\\\\:pr-px {\\n    padding-right: 1px !important\\n  }\\n\\n  .md\\\\:pb-px {\\n    padding-bottom: 1px !important\\n  }\\n\\n  .md\\\\:pl-px {\\n    padding-left: 1px !important\\n  }\\n\\n  .md\\\\:pt-base {\\n    padding-top: 2.2rem !important\\n  }\\n\\n  .md\\\\:pr-base {\\n    padding-right: 2.2rem !important\\n  }\\n\\n  .md\\\\:pb-base {\\n    padding-bottom: 2.2rem !important\\n  }\\n\\n  .md\\\\:pl-base {\\n    padding-left: 2.2rem !important\\n  }\\n\\n  .md\\\\:placeholder-transparent::-webkit-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:placeholder-transparent::-moz-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:placeholder-transparent:-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:placeholder-transparent::-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:placeholder-transparent::placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:placeholder-black::-webkit-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:placeholder-black::-moz-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:placeholder-black:-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:placeholder-black::-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:placeholder-black::placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:placeholder-white::-webkit-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:placeholder-white::-moz-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:placeholder-white:-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:placeholder-white::-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:placeholder-white::placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:placeholder-grey::-webkit-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:placeholder-grey::-moz-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:placeholder-grey:-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:placeholder-grey::-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:placeholder-grey::placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:placeholder-grey-light::-webkit-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:placeholder-grey-light::-moz-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:placeholder-grey-light:-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:placeholder-grey-light::-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:placeholder-grey-light::placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-transparent:focus::-webkit-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-transparent:focus::-moz-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-transparent:focus:-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-transparent:focus::-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-transparent:focus::placeholder {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-black:focus::-webkit-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-black:focus::-moz-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-black:focus:-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-black:focus::-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-black:focus::placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-white:focus::-webkit-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-white:focus::-moz-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-white:focus:-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-white:focus::-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-white:focus::placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey:focus::-webkit-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey:focus::-moz-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey:focus:-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey:focus::-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey:focus::placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey-light:focus::-webkit-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey-light:focus::-moz-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey-light:focus:-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey-light:focus::-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:focus\\\\:placeholder-grey-light:focus::placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:pointer-events-none {\\n    pointer-events: none !important\\n  }\\n\\n  .md\\\\:pointer-events-auto {\\n    pointer-events: auto !important\\n  }\\n\\n  .md\\\\:static {\\n    position: static !important\\n  }\\n\\n  .md\\\\:fixed {\\n    position: fixed !important\\n  }\\n\\n  .md\\\\:absolute {\\n    position: absolute !important\\n  }\\n\\n  .md\\\\:relative {\\n    position: relative !important\\n  }\\n\\n  .md\\\\:sticky {\\n    position: -webkit-sticky !important;\\n    position: sticky !important\\n  }\\n\\n  .md\\\\:inset-0 {\\n    top: 0 !important;\\n    right: 0 !important;\\n    bottom: 0 !important;\\n    left: 0 !important\\n  }\\n\\n  .md\\\\:inset-auto {\\n    top: auto !important;\\n    right: auto !important;\\n    bottom: auto !important;\\n    left: auto !important\\n  }\\n\\n  .md\\\\:inset-y-0 {\\n    top: 0 !important;\\n    bottom: 0 !important\\n  }\\n\\n  .md\\\\:inset-x-0 {\\n    right: 0 !important;\\n    left: 0 !important\\n  }\\n\\n  .md\\\\:inset-y-auto {\\n    top: auto !important;\\n    bottom: auto !important\\n  }\\n\\n  .md\\\\:inset-x-auto {\\n    right: auto !important;\\n    left: auto !important\\n  }\\n\\n  .md\\\\:top-0 {\\n    top: 0 !important\\n  }\\n\\n  .md\\\\:right-0 {\\n    right: 0 !important\\n  }\\n\\n  .md\\\\:bottom-0 {\\n    bottom: 0 !important\\n  }\\n\\n  .md\\\\:left-0 {\\n    left: 0 !important\\n  }\\n\\n  .md\\\\:top-auto {\\n    top: auto !important\\n  }\\n\\n  .md\\\\:right-auto {\\n    right: auto !important\\n  }\\n\\n  .md\\\\:bottom-auto {\\n    bottom: auto !important\\n  }\\n\\n  .md\\\\:left-auto {\\n    left: auto !important\\n  }\\n\\n  .md\\\\:resize-none {\\n    resize: none !important\\n  }\\n\\n  .md\\\\:resize-y {\\n    resize: vertical !important\\n  }\\n\\n  .md\\\\:resize-x {\\n    resize: horizontal !important\\n  }\\n\\n  .md\\\\:resize {\\n    resize: both !important\\n  }\\n\\n  .md\\\\:shadow {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .md\\\\:shadow-md {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .md\\\\:shadow-lg {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .md\\\\:shadow-inner {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .md\\\\:shadow-xl {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .md\\\\:shadow-2xl {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .md\\\\:shadow-outline {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .md\\\\:shadow-none {\\n    box-shadow: none !important\\n  }\\n\\n  .md\\\\:shadow-drop {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .md\\\\:hover\\\\:shadow:hover {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .md\\\\:hover\\\\:shadow-md:hover {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .md\\\\:hover\\\\:shadow-lg:hover {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .md\\\\:hover\\\\:shadow-inner:hover {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .md\\\\:hover\\\\:shadow-xl:hover {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .md\\\\:hover\\\\:shadow-2xl:hover {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .md\\\\:hover\\\\:shadow-outline:hover {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .md\\\\:hover\\\\:shadow-none:hover {\\n    box-shadow: none !important\\n  }\\n\\n  .md\\\\:hover\\\\:shadow-drop:hover {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .md\\\\:focus\\\\:shadow:focus {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .md\\\\:focus\\\\:shadow-md:focus {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .md\\\\:focus\\\\:shadow-lg:focus {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .md\\\\:focus\\\\:shadow-inner:focus {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .md\\\\:focus\\\\:shadow-xl:focus {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .md\\\\:focus\\\\:shadow-2xl:focus {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .md\\\\:focus\\\\:shadow-outline:focus {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .md\\\\:focus\\\\:shadow-none:focus {\\n    box-shadow: none !important\\n  }\\n\\n  .md\\\\:focus\\\\:shadow-drop:focus {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .md\\\\:table-auto {\\n    table-layout: auto !important\\n  }\\n\\n  .md\\\\:table-fixed {\\n    table-layout: fixed !important\\n  }\\n\\n  .md\\\\:text-left {\\n    text-align: left !important\\n  }\\n\\n  .md\\\\:text-center {\\n    text-align: center !important\\n  }\\n\\n  .md\\\\:text-right {\\n    text-align: right !important\\n  }\\n\\n  .md\\\\:text-justify {\\n    text-align: justify !important\\n  }\\n\\n  .md\\\\:text-transparent {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:text-black {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:text-white {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:text-grey {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:text-grey-light {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:hover\\\\:text-transparent:hover {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:hover\\\\:text-black:hover {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:hover\\\\:text-white:hover {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:hover\\\\:text-grey:hover {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:hover\\\\:text-grey-light:hover {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:focus\\\\:text-transparent:focus {\\n    color: transparent !important\\n  }\\n\\n  .md\\\\:focus\\\\:text-black:focus {\\n    color: #22292f !important\\n  }\\n\\n  .md\\\\:focus\\\\:text-white:focus {\\n    color: #ffffff !important\\n  }\\n\\n  .md\\\\:focus\\\\:text-grey:focus {\\n    color: #b8c2cc !important\\n  }\\n\\n  .md\\\\:focus\\\\:text-grey-light:focus {\\n    color: #dae1e7 !important\\n  }\\n\\n  .md\\\\:text-xs {\\n    font-size: .75rem !important\\n  }\\n\\n  .md\\\\:text-sm {\\n    font-size: .875rem !important\\n  }\\n\\n  .md\\\\:text-base {\\n    font-size: 1rem !important\\n  }\\n\\n  .md\\\\:text-lg {\\n    font-size: 1.125rem !important\\n  }\\n\\n  .md\\\\:text-xl {\\n    font-size: 1.25rem !important\\n  }\\n\\n  .md\\\\:text-2xl {\\n    font-size: 1.5rem !important\\n  }\\n\\n  .md\\\\:text-3xl {\\n    font-size: 1.875rem !important\\n  }\\n\\n  .md\\\\:text-4xl {\\n    font-size: 2.25rem !important\\n  }\\n\\n  .md\\\\:text-5xl {\\n    font-size: 3rem !important\\n  }\\n\\n  .md\\\\:text-6xl {\\n    font-size: 4rem !important\\n  }\\n\\n  .md\\\\:italic {\\n    font-style: italic !important\\n  }\\n\\n  .md\\\\:not-italic {\\n    font-style: normal !important\\n  }\\n\\n  .md\\\\:hover\\\\:italic:hover {\\n    font-style: italic !important\\n  }\\n\\n  .md\\\\:hover\\\\:not-italic:hover {\\n    font-style: normal !important\\n  }\\n\\n  .md\\\\:focus\\\\:italic:focus {\\n    font-style: italic !important\\n  }\\n\\n  .md\\\\:focus\\\\:not-italic:focus {\\n    font-style: normal !important\\n  }\\n\\n  .md\\\\:uppercase {\\n    text-transform: uppercase !important\\n  }\\n\\n  .md\\\\:lowercase {\\n    text-transform: lowercase !important\\n  }\\n\\n  .md\\\\:capitalize {\\n    text-transform: capitalize !important\\n  }\\n\\n  .md\\\\:normal-case {\\n    text-transform: none !important\\n  }\\n\\n  .md\\\\:hover\\\\:uppercase:hover {\\n    text-transform: uppercase !important\\n  }\\n\\n  .md\\\\:hover\\\\:lowercase:hover {\\n    text-transform: lowercase !important\\n  }\\n\\n  .md\\\\:hover\\\\:capitalize:hover {\\n    text-transform: capitalize !important\\n  }\\n\\n  .md\\\\:hover\\\\:normal-case:hover {\\n    text-transform: none !important\\n  }\\n\\n  .md\\\\:focus\\\\:uppercase:focus {\\n    text-transform: uppercase !important\\n  }\\n\\n  .md\\\\:focus\\\\:lowercase:focus {\\n    text-transform: lowercase !important\\n  }\\n\\n  .md\\\\:focus\\\\:capitalize:focus {\\n    text-transform: capitalize !important\\n  }\\n\\n  .md\\\\:focus\\\\:normal-case:focus {\\n    text-transform: none !important\\n  }\\n\\n  .md\\\\:underline {\\n    text-decoration: underline !important\\n  }\\n\\n  .md\\\\:line-through {\\n    text-decoration: line-through !important\\n  }\\n\\n  .md\\\\:no-underline {\\n    text-decoration: none !important\\n  }\\n\\n  .md\\\\:hover\\\\:underline:hover {\\n    text-decoration: underline !important\\n  }\\n\\n  .md\\\\:hover\\\\:line-through:hover {\\n    text-decoration: line-through !important\\n  }\\n\\n  .md\\\\:hover\\\\:no-underline:hover {\\n    text-decoration: none !important\\n  }\\n\\n  .md\\\\:focus\\\\:underline:focus {\\n    text-decoration: underline !important\\n  }\\n\\n  .md\\\\:focus\\\\:line-through:focus {\\n    text-decoration: line-through !important\\n  }\\n\\n  .md\\\\:focus\\\\:no-underline:focus {\\n    text-decoration: none !important\\n  }\\n\\n  .md\\\\:antialiased {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .md\\\\:subpixel-antialiased {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .md\\\\:hover\\\\:antialiased:hover {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .md\\\\:hover\\\\:subpixel-antialiased:hover {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .md\\\\:focus\\\\:antialiased:focus {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .md\\\\:focus\\\\:subpixel-antialiased:focus {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .md\\\\:select-none {\\n    -webkit-user-select: none !important;\\n       -moz-user-select: none !important;\\n        -ms-user-select: none !important;\\n            user-select: none !important\\n  }\\n\\n  .md\\\\:select-text {\\n    -webkit-user-select: text !important;\\n       -moz-user-select: text !important;\\n        -ms-user-select: text !important;\\n            user-select: text !important\\n  }\\n\\n  .md\\\\:select-all {\\n    -webkit-user-select: all !important;\\n       -moz-user-select: all !important;\\n        -ms-user-select: all !important;\\n            user-select: all !important\\n  }\\n\\n  .md\\\\:select-auto {\\n    -webkit-user-select: auto !important;\\n       -moz-user-select: auto !important;\\n        -ms-user-select: auto !important;\\n            user-select: auto !important\\n  }\\n\\n  .md\\\\:align-baseline {\\n    vertical-align: baseline !important\\n  }\\n\\n  .md\\\\:align-top {\\n    vertical-align: top !important\\n  }\\n\\n  .md\\\\:align-middle {\\n    vertical-align: middle !important\\n  }\\n\\n  .md\\\\:align-bottom {\\n    vertical-align: bottom !important\\n  }\\n\\n  .md\\\\:align-text-top {\\n    vertical-align: text-top !important\\n  }\\n\\n  .md\\\\:align-text-bottom {\\n    vertical-align: text-bottom !important\\n  }\\n\\n  .md\\\\:visible {\\n    visibility: visible !important\\n  }\\n\\n  .md\\\\:invisible {\\n    visibility: hidden !important\\n  }\\n\\n  .md\\\\:whitespace-normal {\\n    white-space: normal !important\\n  }\\n\\n  .md\\\\:whitespace-no-wrap {\\n    white-space: nowrap !important\\n  }\\n\\n  .md\\\\:whitespace-pre {\\n    white-space: pre !important\\n  }\\n\\n  .md\\\\:whitespace-pre-line {\\n    white-space: pre-line !important\\n  }\\n\\n  .md\\\\:whitespace-pre-wrap {\\n    white-space: pre-wrap !important\\n  }\\n\\n  .md\\\\:break-normal {\\n    overflow-wrap: normal !important;\\n    word-break: normal !important\\n  }\\n\\n  .md\\\\:break-words {\\n    overflow-wrap: break-word !important\\n  }\\n\\n  .md\\\\:break-all {\\n    word-break: break-all !important\\n  }\\n\\n  .md\\\\:truncate {\\n    overflow: hidden !important;\\n    text-overflow: ellipsis !important;\\n    white-space: nowrap !important\\n  }\\n\\n  .md\\\\:w-1 {\\n    width: 0.25rem !important\\n  }\\n\\n  .md\\\\:w-2 {\\n    width: 0.5rem !important\\n  }\\n\\n  .md\\\\:w-3 {\\n    width: 0.75rem !important\\n  }\\n\\n  .md\\\\:w-4 {\\n    width: 1rem !important\\n  }\\n\\n  .md\\\\:w-5 {\\n    width: 1.25rem !important\\n  }\\n\\n  .md\\\\:w-6 {\\n    width: 1.5rem !important\\n  }\\n\\n  .md\\\\:w-8 {\\n    width: 2rem !important\\n  }\\n\\n  .md\\\\:w-10 {\\n    width: 2.5rem !important\\n  }\\n\\n  .md\\\\:w-12 {\\n    width: 3rem !important\\n  }\\n\\n  .md\\\\:w-16 {\\n    width: 4rem !important\\n  }\\n\\n  .md\\\\:w-24 {\\n    width: 6rem !important\\n  }\\n\\n  .md\\\\:w-32 {\\n    width: 8rem !important\\n  }\\n\\n  .md\\\\:w-48 {\\n    width: 12rem !important\\n  }\\n\\n  .md\\\\:w-64 {\\n    width: 16rem !important\\n  }\\n\\n  .md\\\\:w-auto {\\n    width: auto !important\\n  }\\n\\n  .md\\\\:w-px {\\n    width: 1px !important\\n  }\\n\\n  .md\\\\:w-1\\\\/2 {\\n    width: 50% !important\\n  }\\n\\n  .md\\\\:w-1\\\\/3 {\\n    width: 33.33333% !important\\n  }\\n\\n  .md\\\\:w-2\\\\/3 {\\n    width: 66.66667% !important\\n  }\\n\\n  .md\\\\:w-1\\\\/4 {\\n    width: 25% !important\\n  }\\n\\n  .md\\\\:w-3\\\\/4 {\\n    width: 75% !important\\n  }\\n\\n  .md\\\\:w-1\\\\/5 {\\n    width: 20% !important\\n  }\\n\\n  .md\\\\:w-2\\\\/5 {\\n    width: 40% !important\\n  }\\n\\n  .md\\\\:w-3\\\\/5 {\\n    width: 60% !important\\n  }\\n\\n  .md\\\\:w-4\\\\/5 {\\n    width: 80% !important\\n  }\\n\\n  .md\\\\:w-1\\\\/6 {\\n    width: 16.66667% !important\\n  }\\n\\n  .md\\\\:w-5\\\\/6 {\\n    width: 83.33333% !important\\n  }\\n\\n  .md\\\\:w-1\\\\/12 {\\n    width: 8.33333% !important\\n  }\\n\\n  .md\\\\:w-2\\\\/12 {\\n    width: 16.66667% !important\\n  }\\n\\n  .md\\\\:w-3\\\\/12 {\\n    width: 25% !important\\n  }\\n\\n  .md\\\\:w-4\\\\/12 {\\n    width: 33.33333% !important\\n  }\\n\\n  .md\\\\:w-5\\\\/12 {\\n    width: 41.66667% !important\\n  }\\n\\n  .md\\\\:w-6\\\\/12 {\\n    width: 50% !important\\n  }\\n\\n  .md\\\\:w-7\\\\/12 {\\n    width: 58.33333% !important\\n  }\\n\\n  .md\\\\:w-8\\\\/12 {\\n    width: 66.66667% !important\\n  }\\n\\n  .md\\\\:w-9\\\\/12 {\\n    width: 75% !important\\n  }\\n\\n  .md\\\\:w-10\\\\/12 {\\n    width: 83.33333% !important\\n  }\\n\\n  .md\\\\:w-11\\\\/12 {\\n    width: 91.66667% !important\\n  }\\n\\n  .md\\\\:w-full {\\n    width: 100% !important\\n  }\\n\\n  .md\\\\:w-screen {\\n    width: 100vw !important\\n  }\\n\\n  .md\\\\:z-0 {\\n    z-index: 0 !important\\n  }\\n\\n  .md\\\\:z-10 {\\n    z-index: 10 !important\\n  }\\n\\n  .md\\\\:z-20 {\\n    z-index: 20 !important\\n  }\\n\\n  .md\\\\:z-30 {\\n    z-index: 30 !important\\n  }\\n\\n  .md\\\\:z-40 {\\n    z-index: 40 !important\\n  }\\n\\n  .md\\\\:z-50 {\\n    z-index: 50 !important\\n  }\\n\\n  .md\\\\:z-auto {\\n    z-index: auto !important\\n  }\\n}\\n\\n@media (min-width: 992px) {\\n  .lg\\\\:sr-only {\\n    position: absolute !important;\\n    width: 1px !important;\\n    height: 1px !important;\\n    padding: 0 !important;\\n    margin: -1px !important;\\n    overflow: hidden !important;\\n    clip: rect(0, 0, 0, 0) !important;\\n    white-space: nowrap !important;\\n    border-width: 0 !important\\n  }\\n\\n  .lg\\\\:not-sr-only {\\n    position: static !important;\\n    width: auto !important;\\n    height: auto !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    overflow: visible !important;\\n    clip: auto !important;\\n    white-space: normal !important\\n  }\\n\\n  .lg\\\\:focus\\\\:sr-only:focus {\\n    position: absolute !important;\\n    width: 1px !important;\\n    height: 1px !important;\\n    padding: 0 !important;\\n    margin: -1px !important;\\n    overflow: hidden !important;\\n    clip: rect(0, 0, 0, 0) !important;\\n    white-space: nowrap !important;\\n    border-width: 0 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:not-sr-only:focus {\\n    position: static !important;\\n    width: auto !important;\\n    height: auto !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    overflow: visible !important;\\n    clip: auto !important;\\n    white-space: normal !important\\n  }\\n\\n  .lg\\\\:appearance-none {\\n    -webkit-appearance: none !important;\\n       -moz-appearance: none !important;\\n            appearance: none !important\\n  }\\n\\n  .lg\\\\:bg-fixed {\\n    background-attachment: fixed !important\\n  }\\n\\n  .lg\\\\:bg-local {\\n    background-attachment: local !important\\n  }\\n\\n  .lg\\\\:bg-scroll {\\n    background-attachment: scroll !important\\n  }\\n\\n  .lg\\\\:bg-transparent {\\n    background-color: transparent !important\\n  }\\n\\n  .lg\\\\:bg-black {\\n    background-color: #22292f !important\\n  }\\n\\n  .lg\\\\:bg-white {\\n    background-color: #ffffff !important\\n  }\\n\\n  .lg\\\\:bg-grey {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:bg-grey-light {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:bg-transparent:hover {\\n    background-color: transparent !important\\n  }\\n\\n  .lg\\\\:hover\\\\:bg-black:hover {\\n    background-color: #22292f !important\\n  }\\n\\n  .lg\\\\:hover\\\\:bg-white:hover {\\n    background-color: #ffffff !important\\n  }\\n\\n  .lg\\\\:hover\\\\:bg-grey:hover {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:hover\\\\:bg-grey-light:hover {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:bg-transparent:focus {\\n    background-color: transparent !important\\n  }\\n\\n  .lg\\\\:focus\\\\:bg-black:focus {\\n    background-color: #22292f !important\\n  }\\n\\n  .lg\\\\:focus\\\\:bg-white:focus {\\n    background-color: #ffffff !important\\n  }\\n\\n  .lg\\\\:focus\\\\:bg-grey:focus {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:focus\\\\:bg-grey-light:focus {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:bg-auto {\\n    background-size: auto !important\\n  }\\n\\n  .lg\\\\:bg-cover {\\n    background-size: cover !important\\n  }\\n\\n  .lg\\\\:bg-contain {\\n    background-size: contain !important\\n  }\\n\\n  .lg\\\\:border-transparent {\\n    border-color: transparent !important\\n  }\\n\\n  .lg\\\\:border-black {\\n    border-color: #22292f !important\\n  }\\n\\n  .lg\\\\:border-white {\\n    border-color: #ffffff !important\\n  }\\n\\n  .lg\\\\:border-grey {\\n    border-color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:border-grey-light {\\n    border-color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:border-transparent:hover {\\n    border-color: transparent !important\\n  }\\n\\n  .lg\\\\:hover\\\\:border-black:hover {\\n    border-color: #22292f !important\\n  }\\n\\n  .lg\\\\:hover\\\\:border-white:hover {\\n    border-color: #ffffff !important\\n  }\\n\\n  .lg\\\\:hover\\\\:border-grey:hover {\\n    border-color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:hover\\\\:border-grey-light:hover {\\n    border-color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:border-solid {\\n    border-style: solid !important\\n  }\\n\\n  .lg\\\\:border-dashed {\\n    border-style: dashed !important\\n  }\\n\\n  .lg\\\\:border-dotted {\\n    border-style: dotted !important\\n  }\\n\\n  .lg\\\\:border-double {\\n    border-style: double !important\\n  }\\n\\n  .lg\\\\:border-none {\\n    border-style: none !important\\n  }\\n\\n  .lg\\\\:border-0 {\\n    border-width: 0 !important\\n  }\\n\\n  .lg\\\\:border-2 {\\n    border-width: 2px !important\\n  }\\n\\n  .lg\\\\:border-4 {\\n    border-width: 4px !important\\n  }\\n\\n  .lg\\\\:border-8 {\\n    border-width: 8px !important\\n  }\\n\\n  .lg\\\\:border {\\n    border-width: 1px !important\\n  }\\n\\n  .lg\\\\:border-t-0 {\\n    border-top-width: 0 !important\\n  }\\n\\n  .lg\\\\:border-r-0 {\\n    border-right-width: 0 !important\\n  }\\n\\n  .lg\\\\:border-b-0 {\\n    border-bottom-width: 0 !important\\n  }\\n\\n  .lg\\\\:border-l-0 {\\n    border-left-width: 0 !important\\n  }\\n\\n  .lg\\\\:border-t-2 {\\n    border-top-width: 2px !important\\n  }\\n\\n  .lg\\\\:border-r-2 {\\n    border-right-width: 2px !important\\n  }\\n\\n  .lg\\\\:border-b-2 {\\n    border-bottom-width: 2px !important\\n  }\\n\\n  .lg\\\\:border-l-2 {\\n    border-left-width: 2px !important\\n  }\\n\\n  .lg\\\\:border-t-4 {\\n    border-top-width: 4px !important\\n  }\\n\\n  .lg\\\\:border-r-4 {\\n    border-right-width: 4px !important\\n  }\\n\\n  .lg\\\\:border-b-4 {\\n    border-bottom-width: 4px !important\\n  }\\n\\n  .lg\\\\:border-l-4 {\\n    border-left-width: 4px !important\\n  }\\n\\n  .lg\\\\:border-t-8 {\\n    border-top-width: 8px !important\\n  }\\n\\n  .lg\\\\:border-r-8 {\\n    border-right-width: 8px !important\\n  }\\n\\n  .lg\\\\:border-b-8 {\\n    border-bottom-width: 8px !important\\n  }\\n\\n  .lg\\\\:border-l-8 {\\n    border-left-width: 8px !important\\n  }\\n\\n  .lg\\\\:border-t {\\n    border-top-width: 1px !important\\n  }\\n\\n  .lg\\\\:border-r {\\n    border-right-width: 1px !important\\n  }\\n\\n  .lg\\\\:border-b {\\n    border-bottom-width: 1px !important\\n  }\\n\\n  .lg\\\\:border-l {\\n    border-left-width: 1px !important\\n  }\\n\\n  .lg\\\\:block {\\n    display: block !important\\n  }\\n\\n  .lg\\\\:inline-block {\\n    display: inline-block !important\\n  }\\n\\n  .lg\\\\:inline {\\n    display: inline !important\\n  }\\n\\n  .lg\\\\:flex {\\n    display: flex !important\\n  }\\n\\n  .lg\\\\:inline-flex {\\n    display: inline-flex !important\\n  }\\n\\n  .lg\\\\:table {\\n    display: table !important\\n  }\\n\\n  .lg\\\\:table-row {\\n    display: table-row !important\\n  }\\n\\n  .lg\\\\:table-cell {\\n    display: table-cell !important\\n  }\\n\\n  .lg\\\\:hidden {\\n    display: none !important\\n  }\\n\\n  .lg\\\\:flex-row {\\n    flex-direction: row !important\\n  }\\n\\n  .lg\\\\:flex-row-reverse {\\n    flex-direction: row-reverse !important\\n  }\\n\\n  .lg\\\\:flex-col {\\n    flex-direction: column !important\\n  }\\n\\n  .lg\\\\:flex-col-reverse {\\n    flex-direction: column-reverse !important\\n  }\\n\\n  .lg\\\\:flex-wrap {\\n    flex-wrap: wrap !important\\n  }\\n\\n  .lg\\\\:flex-wrap-reverse {\\n    flex-wrap: wrap-reverse !important\\n  }\\n\\n  .lg\\\\:flex-no-wrap {\\n    flex-wrap: nowrap !important\\n  }\\n\\n  .lg\\\\:items-start {\\n    align-items: flex-start !important\\n  }\\n\\n  .lg\\\\:items-end {\\n    align-items: flex-end !important\\n  }\\n\\n  .lg\\\\:items-center {\\n    align-items: center !important\\n  }\\n\\n  .lg\\\\:items-baseline {\\n    align-items: baseline !important\\n  }\\n\\n  .lg\\\\:items-stretch {\\n    align-items: stretch !important\\n  }\\n\\n  .lg\\\\:self-auto {\\n    align-self: auto !important\\n  }\\n\\n  .lg\\\\:self-start {\\n    align-self: flex-start !important\\n  }\\n\\n  .lg\\\\:self-end {\\n    align-self: flex-end !important\\n  }\\n\\n  .lg\\\\:self-center {\\n    align-self: center !important\\n  }\\n\\n  .lg\\\\:self-stretch {\\n    align-self: stretch !important\\n  }\\n\\n  .lg\\\\:justify-start {\\n    justify-content: flex-start !important\\n  }\\n\\n  .lg\\\\:justify-end {\\n    justify-content: flex-end !important\\n  }\\n\\n  .lg\\\\:justify-center {\\n    justify-content: center !important\\n  }\\n\\n  .lg\\\\:justify-between {\\n    justify-content: space-between !important\\n  }\\n\\n  .lg\\\\:justify-around {\\n    justify-content: space-around !important\\n  }\\n\\n  .lg\\\\:content-center {\\n    align-content: center !important\\n  }\\n\\n  .lg\\\\:content-start {\\n    align-content: flex-start !important\\n  }\\n\\n  .lg\\\\:content-end {\\n    align-content: flex-end !important\\n  }\\n\\n  .lg\\\\:content-between {\\n    align-content: space-between !important\\n  }\\n\\n  .lg\\\\:content-around {\\n    align-content: space-around !important\\n  }\\n\\n  .lg\\\\:flex-1 {\\n    flex: 1 1 0% !important\\n  }\\n\\n  .lg\\\\:flex-auto {\\n    flex: 1 1 auto !important\\n  }\\n\\n  .lg\\\\:flex-initial {\\n    flex: 0 1 auto !important\\n  }\\n\\n  .lg\\\\:flex-none {\\n    flex: none !important\\n  }\\n\\n  .lg\\\\:flex-grow-0 {\\n    flex-grow: 0 !important\\n  }\\n\\n  .lg\\\\:flex-grow {\\n    flex-grow: 1 !important\\n  }\\n\\n  .lg\\\\:flex-shrink-0 {\\n    flex-shrink: 0 !important\\n  }\\n\\n  .lg\\\\:flex-shrink {\\n    flex-shrink: 1 !important\\n  }\\n\\n  .lg\\\\:order-1 {\\n    order: 1 !important\\n  }\\n\\n  .lg\\\\:order-2 {\\n    order: 2 !important\\n  }\\n\\n  .lg\\\\:order-3 {\\n    order: 3 !important\\n  }\\n\\n  .lg\\\\:order-4 {\\n    order: 4 !important\\n  }\\n\\n  .lg\\\\:order-5 {\\n    order: 5 !important\\n  }\\n\\n  .lg\\\\:order-6 {\\n    order: 6 !important\\n  }\\n\\n  .lg\\\\:order-first {\\n    order: -1 !important\\n  }\\n\\n  .lg\\\\:order-last {\\n    order: 999 !important\\n  }\\n\\n  .lg\\\\:order-normal {\\n    order: 0 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:order-1:hover {\\n    order: 1 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:order-2:hover {\\n    order: 2 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:order-3:hover {\\n    order: 3 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:order-4:hover {\\n    order: 4 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:order-5:hover {\\n    order: 5 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:order-6:hover {\\n    order: 6 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:order-first:hover {\\n    order: -1 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:order-last:hover {\\n    order: 999 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:order-normal:hover {\\n    order: 0 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:order-1:focus {\\n    order: 1 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:order-2:focus {\\n    order: 2 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:order-3:focus {\\n    order: 3 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:order-4:focus {\\n    order: 4 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:order-5:focus {\\n    order: 5 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:order-6:focus {\\n    order: 6 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:order-first:focus {\\n    order: -1 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:order-last:focus {\\n    order: 999 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:order-normal:focus {\\n    order: 0 !important\\n  }\\n\\n  .lg\\\\:float-right {\\n    float: right !important\\n  }\\n\\n  .lg\\\\:float-left {\\n    float: left !important\\n  }\\n\\n  .lg\\\\:float-none {\\n    float: none !important\\n  }\\n\\n  .lg\\\\:clearfix:after {\\n    content: \\\"\\\" !important;\\n    display: table !important;\\n    clear: both !important\\n  }\\n\\n  .lg\\\\:font-light {\\n    font-weight: 300 !important\\n  }\\n\\n  .lg\\\\:font-normal {\\n    font-weight: 400 !important\\n  }\\n\\n  .lg\\\\:font-medium {\\n    font-weight: 500 !important\\n  }\\n\\n  .lg\\\\:font-semibold {\\n    font-weight: 600 !important\\n  }\\n\\n  .lg\\\\:font-bold {\\n    font-weight: 700 !important\\n  }\\n\\n  .lg\\\\:font-extrabold {\\n    font-weight: 800 !important\\n  }\\n\\n  .lg\\\\:font-black {\\n    font-weight: 900 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:font-light:hover {\\n    font-weight: 300 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:font-normal:hover {\\n    font-weight: 400 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:font-medium:hover {\\n    font-weight: 500 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:font-semibold:hover {\\n    font-weight: 600 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:font-bold:hover {\\n    font-weight: 700 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:font-extrabold:hover {\\n    font-weight: 800 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:font-black:hover {\\n    font-weight: 900 !important\\n  }\\n\\n  .lg\\\\:h-1 {\\n    height: 0.25rem !important\\n  }\\n\\n  .lg\\\\:h-2 {\\n    height: 0.5rem !important\\n  }\\n\\n  .lg\\\\:h-3 {\\n    height: 0.75rem !important\\n  }\\n\\n  .lg\\\\:h-4 {\\n    height: 1rem !important\\n  }\\n\\n  .lg\\\\:h-5 {\\n    height: 1.25rem !important\\n  }\\n\\n  .lg\\\\:h-6 {\\n    height: 1.5rem !important\\n  }\\n\\n  .lg\\\\:h-8 {\\n    height: 2rem !important\\n  }\\n\\n  .lg\\\\:h-10 {\\n    height: 2.5rem !important\\n  }\\n\\n  .lg\\\\:h-12 {\\n    height: 3rem !important\\n  }\\n\\n  .lg\\\\:h-16 {\\n    height: 4rem !important\\n  }\\n\\n  .lg\\\\:h-24 {\\n    height: 6rem !important\\n  }\\n\\n  .lg\\\\:h-32 {\\n    height: 8rem !important\\n  }\\n\\n  .lg\\\\:h-48 {\\n    height: 12rem !important\\n  }\\n\\n  .lg\\\\:h-64 {\\n    height: 16rem !important\\n  }\\n\\n  .lg\\\\:h-auto {\\n    height: auto !important\\n  }\\n\\n  .lg\\\\:h-px {\\n    height: 1px !important\\n  }\\n\\n  .lg\\\\:h-full {\\n    height: 100% !important\\n  }\\n\\n  .lg\\\\:h-screen {\\n    height: 100vh !important\\n  }\\n\\n  .lg\\\\:leading-none {\\n    line-height: 1 !important\\n  }\\n\\n  .lg\\\\:leading-tight {\\n    line-height: 1.25 !important\\n  }\\n\\n  .lg\\\\:leading-normal {\\n    line-height: 1.5 !important\\n  }\\n\\n  .lg\\\\:leading-loose {\\n    line-height: 2 !important\\n  }\\n\\n  .lg\\\\:list-inside {\\n    list-style-position: inside !important\\n  }\\n\\n  .lg\\\\:list-outside {\\n    list-style-position: outside !important\\n  }\\n\\n  .lg\\\\:m-0 {\\n    margin: 0 !important\\n  }\\n\\n  .lg\\\\:m-1 {\\n    margin: 0.25rem !important\\n  }\\n\\n  .lg\\\\:m-2 {\\n    margin: 0.5rem !important\\n  }\\n\\n  .lg\\\\:m-3 {\\n    margin: 0.75rem !important\\n  }\\n\\n  .lg\\\\:m-4 {\\n    margin: 1rem !important\\n  }\\n\\n  .lg\\\\:m-5 {\\n    margin: 1.25rem !important\\n  }\\n\\n  .lg\\\\:m-6 {\\n    margin: 1.5rem !important\\n  }\\n\\n  .lg\\\\:m-8 {\\n    margin: 2rem !important\\n  }\\n\\n  .lg\\\\:m-10 {\\n    margin: 2.5rem !important\\n  }\\n\\n  .lg\\\\:m-12 {\\n    margin: 3rem !important\\n  }\\n\\n  .lg\\\\:m-16 {\\n    margin: 4rem !important\\n  }\\n\\n  .lg\\\\:m-20 {\\n    margin: 5rem !important\\n  }\\n\\n  .lg\\\\:m-24 {\\n    margin: 6rem !important\\n  }\\n\\n  .lg\\\\:m-32 {\\n    margin: 8rem !important\\n  }\\n\\n  .lg\\\\:m-auto {\\n    margin: auto !important\\n  }\\n\\n  .lg\\\\:m-px {\\n    margin: 1px !important\\n  }\\n\\n  .lg\\\\:m-base {\\n    margin: 2.2rem !important\\n  }\\n\\n  .lg\\\\:-m-px {\\n    margin: -1px !important\\n  }\\n\\n  .lg\\\\:-m-1 {\\n    margin: -0.25rem !important\\n  }\\n\\n  .lg\\\\:-m-2 {\\n    margin: -0.5rem !important\\n  }\\n\\n  .lg\\\\:-m-3 {\\n    margin: -0.75rem !important\\n  }\\n\\n  .lg\\\\:-m-4 {\\n    margin: -1rem !important\\n  }\\n\\n  .lg\\\\:my-0 {\\n    margin-top: 0 !important;\\n    margin-bottom: 0 !important\\n  }\\n\\n  .lg\\\\:mx-0 {\\n    margin-left: 0 !important;\\n    margin-right: 0 !important\\n  }\\n\\n  .lg\\\\:my-1 {\\n    margin-top: 0.25rem !important;\\n    margin-bottom: 0.25rem !important\\n  }\\n\\n  .lg\\\\:mx-1 {\\n    margin-left: 0.25rem !important;\\n    margin-right: 0.25rem !important\\n  }\\n\\n  .lg\\\\:my-2 {\\n    margin-top: 0.5rem !important;\\n    margin-bottom: 0.5rem !important\\n  }\\n\\n  .lg\\\\:mx-2 {\\n    margin-left: 0.5rem !important;\\n    margin-right: 0.5rem !important\\n  }\\n\\n  .lg\\\\:my-3 {\\n    margin-top: 0.75rem !important;\\n    margin-bottom: 0.75rem !important\\n  }\\n\\n  .lg\\\\:mx-3 {\\n    margin-left: 0.75rem !important;\\n    margin-right: 0.75rem !important\\n  }\\n\\n  .lg\\\\:my-4 {\\n    margin-top: 1rem !important;\\n    margin-bottom: 1rem !important\\n  }\\n\\n  .lg\\\\:mx-4 {\\n    margin-left: 1rem !important;\\n    margin-right: 1rem !important\\n  }\\n\\n  .lg\\\\:my-5 {\\n    margin-top: 1.25rem !important;\\n    margin-bottom: 1.25rem !important\\n  }\\n\\n  .lg\\\\:mx-5 {\\n    margin-left: 1.25rem !important;\\n    margin-right: 1.25rem !important\\n  }\\n\\n  .lg\\\\:my-6 {\\n    margin-top: 1.5rem !important;\\n    margin-bottom: 1.5rem !important\\n  }\\n\\n  .lg\\\\:mx-6 {\\n    margin-left: 1.5rem !important;\\n    margin-right: 1.5rem !important\\n  }\\n\\n  .lg\\\\:my-8 {\\n    margin-top: 2rem !important;\\n    margin-bottom: 2rem !important\\n  }\\n\\n  .lg\\\\:mx-8 {\\n    margin-left: 2rem !important;\\n    margin-right: 2rem !important\\n  }\\n\\n  .lg\\\\:my-10 {\\n    margin-top: 2.5rem !important;\\n    margin-bottom: 2.5rem !important\\n  }\\n\\n  .lg\\\\:mx-10 {\\n    margin-left: 2.5rem !important;\\n    margin-right: 2.5rem !important\\n  }\\n\\n  .lg\\\\:my-12 {\\n    margin-top: 3rem !important;\\n    margin-bottom: 3rem !important\\n  }\\n\\n  .lg\\\\:mx-12 {\\n    margin-left: 3rem !important;\\n    margin-right: 3rem !important\\n  }\\n\\n  .lg\\\\:my-16 {\\n    margin-top: 4rem !important;\\n    margin-bottom: 4rem !important\\n  }\\n\\n  .lg\\\\:mx-16 {\\n    margin-left: 4rem !important;\\n    margin-right: 4rem !important\\n  }\\n\\n  .lg\\\\:my-20 {\\n    margin-top: 5rem !important;\\n    margin-bottom: 5rem !important\\n  }\\n\\n  .lg\\\\:mx-20 {\\n    margin-left: 5rem !important;\\n    margin-right: 5rem !important\\n  }\\n\\n  .lg\\\\:my-24 {\\n    margin-top: 6rem !important;\\n    margin-bottom: 6rem !important\\n  }\\n\\n  .lg\\\\:mx-24 {\\n    margin-left: 6rem !important;\\n    margin-right: 6rem !important\\n  }\\n\\n  .lg\\\\:my-32 {\\n    margin-top: 8rem !important;\\n    margin-bottom: 8rem !important\\n  }\\n\\n  .lg\\\\:mx-32 {\\n    margin-left: 8rem !important;\\n    margin-right: 8rem !important\\n  }\\n\\n  .lg\\\\:my-auto {\\n    margin-top: auto !important;\\n    margin-bottom: auto !important\\n  }\\n\\n  .lg\\\\:mx-auto {\\n    margin-left: auto !important;\\n    margin-right: auto !important\\n  }\\n\\n  .lg\\\\:my-px {\\n    margin-top: 1px !important;\\n    margin-bottom: 1px !important\\n  }\\n\\n  .lg\\\\:mx-px {\\n    margin-left: 1px !important;\\n    margin-right: 1px !important\\n  }\\n\\n  .lg\\\\:my-base {\\n    margin-top: 2.2rem !important;\\n    margin-bottom: 2.2rem !important\\n  }\\n\\n  .lg\\\\:mx-base {\\n    margin-left: 2.2rem !important;\\n    margin-right: 2.2rem !important\\n  }\\n\\n  .lg\\\\:-my-px {\\n    margin-top: -1px !important;\\n    margin-bottom: -1px !important\\n  }\\n\\n  .lg\\\\:-mx-px {\\n    margin-left: -1px !important;\\n    margin-right: -1px !important\\n  }\\n\\n  .lg\\\\:-my-1 {\\n    margin-top: -0.25rem !important;\\n    margin-bottom: -0.25rem !important\\n  }\\n\\n  .lg\\\\:-mx-1 {\\n    margin-left: -0.25rem !important;\\n    margin-right: -0.25rem !important\\n  }\\n\\n  .lg\\\\:-my-2 {\\n    margin-top: -0.5rem !important;\\n    margin-bottom: -0.5rem !important\\n  }\\n\\n  .lg\\\\:-mx-2 {\\n    margin-left: -0.5rem !important;\\n    margin-right: -0.5rem !important\\n  }\\n\\n  .lg\\\\:-my-3 {\\n    margin-top: -0.75rem !important;\\n    margin-bottom: -0.75rem !important\\n  }\\n\\n  .lg\\\\:-mx-3 {\\n    margin-left: -0.75rem !important;\\n    margin-right: -0.75rem !important\\n  }\\n\\n  .lg\\\\:-my-4 {\\n    margin-top: -1rem !important;\\n    margin-bottom: -1rem !important\\n  }\\n\\n  .lg\\\\:-mx-4 {\\n    margin-left: -1rem !important;\\n    margin-right: -1rem !important\\n  }\\n\\n  .lg\\\\:mt-0 {\\n    margin-top: 0 !important\\n  }\\n\\n  .lg\\\\:mr-0 {\\n    margin-right: 0 !important\\n  }\\n\\n  .lg\\\\:mb-0 {\\n    margin-bottom: 0 !important\\n  }\\n\\n  .lg\\\\:ml-0 {\\n    margin-left: 0 !important\\n  }\\n\\n  .lg\\\\:mt-1 {\\n    margin-top: 0.25rem !important\\n  }\\n\\n  .lg\\\\:mr-1 {\\n    margin-right: 0.25rem !important\\n  }\\n\\n  .lg\\\\:mb-1 {\\n    margin-bottom: 0.25rem !important\\n  }\\n\\n  .lg\\\\:ml-1 {\\n    margin-left: 0.25rem !important\\n  }\\n\\n  .lg\\\\:mt-2 {\\n    margin-top: 0.5rem !important\\n  }\\n\\n  .lg\\\\:mr-2 {\\n    margin-right: 0.5rem !important\\n  }\\n\\n  .lg\\\\:mb-2 {\\n    margin-bottom: 0.5rem !important\\n  }\\n\\n  .lg\\\\:ml-2 {\\n    margin-left: 0.5rem !important\\n  }\\n\\n  .lg\\\\:mt-3 {\\n    margin-top: 0.75rem !important\\n  }\\n\\n  .lg\\\\:mr-3 {\\n    margin-right: 0.75rem !important\\n  }\\n\\n  .lg\\\\:mb-3 {\\n    margin-bottom: 0.75rem !important\\n  }\\n\\n  .lg\\\\:ml-3 {\\n    margin-left: 0.75rem !important\\n  }\\n\\n  .lg\\\\:mt-4 {\\n    margin-top: 1rem !important\\n  }\\n\\n  .lg\\\\:mr-4 {\\n    margin-right: 1rem !important\\n  }\\n\\n  .lg\\\\:mb-4 {\\n    margin-bottom: 1rem !important\\n  }\\n\\n  .lg\\\\:ml-4 {\\n    margin-left: 1rem !important\\n  }\\n\\n  .lg\\\\:mt-5 {\\n    margin-top: 1.25rem !important\\n  }\\n\\n  .lg\\\\:mr-5 {\\n    margin-right: 1.25rem !important\\n  }\\n\\n  .lg\\\\:mb-5 {\\n    margin-bottom: 1.25rem !important\\n  }\\n\\n  .lg\\\\:ml-5 {\\n    margin-left: 1.25rem !important\\n  }\\n\\n  .lg\\\\:mt-6 {\\n    margin-top: 1.5rem !important\\n  }\\n\\n  .lg\\\\:mr-6 {\\n    margin-right: 1.5rem !important\\n  }\\n\\n  .lg\\\\:mb-6 {\\n    margin-bottom: 1.5rem !important\\n  }\\n\\n  .lg\\\\:ml-6 {\\n    margin-left: 1.5rem !important\\n  }\\n\\n  .lg\\\\:mt-8 {\\n    margin-top: 2rem !important\\n  }\\n\\n  .lg\\\\:mr-8 {\\n    margin-right: 2rem !important\\n  }\\n\\n  .lg\\\\:mb-8 {\\n    margin-bottom: 2rem !important\\n  }\\n\\n  .lg\\\\:ml-8 {\\n    margin-left: 2rem !important\\n  }\\n\\n  .lg\\\\:mt-10 {\\n    margin-top: 2.5rem !important\\n  }\\n\\n  .lg\\\\:mr-10 {\\n    margin-right: 2.5rem !important\\n  }\\n\\n  .lg\\\\:mb-10 {\\n    margin-bottom: 2.5rem !important\\n  }\\n\\n  .lg\\\\:ml-10 {\\n    margin-left: 2.5rem !important\\n  }\\n\\n  .lg\\\\:mt-12 {\\n    margin-top: 3rem !important\\n  }\\n\\n  .lg\\\\:mr-12 {\\n    margin-right: 3rem !important\\n  }\\n\\n  .lg\\\\:mb-12 {\\n    margin-bottom: 3rem !important\\n  }\\n\\n  .lg\\\\:ml-12 {\\n    margin-left: 3rem !important\\n  }\\n\\n  .lg\\\\:mt-16 {\\n    margin-top: 4rem !important\\n  }\\n\\n  .lg\\\\:mr-16 {\\n    margin-right: 4rem !important\\n  }\\n\\n  .lg\\\\:mb-16 {\\n    margin-bottom: 4rem !important\\n  }\\n\\n  .lg\\\\:ml-16 {\\n    margin-left: 4rem !important\\n  }\\n\\n  .lg\\\\:mt-20 {\\n    margin-top: 5rem !important\\n  }\\n\\n  .lg\\\\:mr-20 {\\n    margin-right: 5rem !important\\n  }\\n\\n  .lg\\\\:mb-20 {\\n    margin-bottom: 5rem !important\\n  }\\n\\n  .lg\\\\:ml-20 {\\n    margin-left: 5rem !important\\n  }\\n\\n  .lg\\\\:mt-24 {\\n    margin-top: 6rem !important\\n  }\\n\\n  .lg\\\\:mr-24 {\\n    margin-right: 6rem !important\\n  }\\n\\n  .lg\\\\:mb-24 {\\n    margin-bottom: 6rem !important\\n  }\\n\\n  .lg\\\\:ml-24 {\\n    margin-left: 6rem !important\\n  }\\n\\n  .lg\\\\:mt-32 {\\n    margin-top: 8rem !important\\n  }\\n\\n  .lg\\\\:mr-32 {\\n    margin-right: 8rem !important\\n  }\\n\\n  .lg\\\\:mb-32 {\\n    margin-bottom: 8rem !important\\n  }\\n\\n  .lg\\\\:ml-32 {\\n    margin-left: 8rem !important\\n  }\\n\\n  .lg\\\\:mt-auto {\\n    margin-top: auto !important\\n  }\\n\\n  .lg\\\\:mr-auto {\\n    margin-right: auto !important\\n  }\\n\\n  .lg\\\\:mb-auto {\\n    margin-bottom: auto !important\\n  }\\n\\n  .lg\\\\:ml-auto {\\n    margin-left: auto !important\\n  }\\n\\n  .lg\\\\:mt-px {\\n    margin-top: 1px !important\\n  }\\n\\n  .lg\\\\:mr-px {\\n    margin-right: 1px !important\\n  }\\n\\n  .lg\\\\:mb-px {\\n    margin-bottom: 1px !important\\n  }\\n\\n  .lg\\\\:ml-px {\\n    margin-left: 1px !important\\n  }\\n\\n  .lg\\\\:mt-base {\\n    margin-top: 2.2rem !important\\n  }\\n\\n  .lg\\\\:mr-base {\\n    margin-right: 2.2rem !important\\n  }\\n\\n  .lg\\\\:mb-base {\\n    margin-bottom: 2.2rem !important\\n  }\\n\\n  .lg\\\\:ml-base {\\n    margin-left: 2.2rem !important\\n  }\\n\\n  .lg\\\\:-mt-px {\\n    margin-top: -1px !important\\n  }\\n\\n  .lg\\\\:-mr-px {\\n    margin-right: -1px !important\\n  }\\n\\n  .lg\\\\:-mb-px {\\n    margin-bottom: -1px !important\\n  }\\n\\n  .lg\\\\:-ml-px {\\n    margin-left: -1px !important\\n  }\\n\\n  .lg\\\\:-mt-1 {\\n    margin-top: -0.25rem !important\\n  }\\n\\n  .lg\\\\:-mr-1 {\\n    margin-right: -0.25rem !important\\n  }\\n\\n  .lg\\\\:-mb-1 {\\n    margin-bottom: -0.25rem !important\\n  }\\n\\n  .lg\\\\:-ml-1 {\\n    margin-left: -0.25rem !important\\n  }\\n\\n  .lg\\\\:-mt-2 {\\n    margin-top: -0.5rem !important\\n  }\\n\\n  .lg\\\\:-mr-2 {\\n    margin-right: -0.5rem !important\\n  }\\n\\n  .lg\\\\:-mb-2 {\\n    margin-bottom: -0.5rem !important\\n  }\\n\\n  .lg\\\\:-ml-2 {\\n    margin-left: -0.5rem !important\\n  }\\n\\n  .lg\\\\:-mt-3 {\\n    margin-top: -0.75rem !important\\n  }\\n\\n  .lg\\\\:-mr-3 {\\n    margin-right: -0.75rem !important\\n  }\\n\\n  .lg\\\\:-mb-3 {\\n    margin-bottom: -0.75rem !important\\n  }\\n\\n  .lg\\\\:-ml-3 {\\n    margin-left: -0.75rem !important\\n  }\\n\\n  .lg\\\\:-mt-4 {\\n    margin-top: -1rem !important\\n  }\\n\\n  .lg\\\\:-mr-4 {\\n    margin-right: -1rem !important\\n  }\\n\\n  .lg\\\\:-mb-4 {\\n    margin-bottom: -1rem !important\\n  }\\n\\n  .lg\\\\:-ml-4 {\\n    margin-left: -1rem !important\\n  }\\n\\n  .lg\\\\:max-h-full {\\n    max-height: 100% !important\\n  }\\n\\n  .lg\\\\:max-h-screen {\\n    max-height: 100vh !important\\n  }\\n\\n  .lg\\\\:max-w-xs {\\n    max-width: 20rem !important\\n  }\\n\\n  .lg\\\\:max-w-sm {\\n    max-width: 30rem !important\\n  }\\n\\n  .lg\\\\:max-w-md {\\n    max-width: 40rem !important\\n  }\\n\\n  .lg\\\\:max-w-lg {\\n    max-width: 50rem !important\\n  }\\n\\n  .lg\\\\:max-w-xl {\\n    max-width: 60rem !important\\n  }\\n\\n  .lg\\\\:max-w-2xl {\\n    max-width: 70rem !important\\n  }\\n\\n  .lg\\\\:max-w-3xl {\\n    max-width: 80rem !important\\n  }\\n\\n  .lg\\\\:max-w-4xl {\\n    max-width: 90rem !important\\n  }\\n\\n  .lg\\\\:max-w-5xl {\\n    max-width: 100rem !important\\n  }\\n\\n  .lg\\\\:max-w-full {\\n    max-width: 100% !important\\n  }\\n\\n  .lg\\\\:min-h-0 {\\n    min-height: 0 !important\\n  }\\n\\n  .lg\\\\:min-h-full {\\n    min-height: 100% !important\\n  }\\n\\n  .lg\\\\:min-h-screen {\\n    min-height: 100vh !important\\n  }\\n\\n  .lg\\\\:min-w-0 {\\n    min-width: 0 !important\\n  }\\n\\n  .lg\\\\:min-w-full {\\n    min-width: 100% !important\\n  }\\n\\n  .lg\\\\:object-contain {\\n    -o-object-fit: contain !important;\\n       object-fit: contain !important\\n  }\\n\\n  .lg\\\\:object-cover {\\n    -o-object-fit: cover !important;\\n       object-fit: cover !important\\n  }\\n\\n  .lg\\\\:object-fill {\\n    -o-object-fit: fill !important;\\n       object-fit: fill !important\\n  }\\n\\n  .lg\\\\:object-none {\\n    -o-object-fit: none !important;\\n       object-fit: none !important\\n  }\\n\\n  .lg\\\\:object-scale-down {\\n    -o-object-fit: scale-down !important;\\n       object-fit: scale-down !important\\n  }\\n\\n  .lg\\\\:object-bottom {\\n    -o-object-position: bottom !important;\\n       object-position: bottom !important\\n  }\\n\\n  .lg\\\\:object-center {\\n    -o-object-position: center !important;\\n       object-position: center !important\\n  }\\n\\n  .lg\\\\:object-left {\\n    -o-object-position: left !important;\\n       object-position: left !important\\n  }\\n\\n  .lg\\\\:object-left-bottom {\\n    -o-object-position: left bottom !important;\\n       object-position: left bottom !important\\n  }\\n\\n  .lg\\\\:object-left-top {\\n    -o-object-position: left top !important;\\n       object-position: left top !important\\n  }\\n\\n  .lg\\\\:object-right {\\n    -o-object-position: right !important;\\n       object-position: right !important\\n  }\\n\\n  .lg\\\\:object-right-bottom {\\n    -o-object-position: right bottom !important;\\n       object-position: right bottom !important\\n  }\\n\\n  .lg\\\\:object-right-top {\\n    -o-object-position: right top !important;\\n       object-position: right top !important\\n  }\\n\\n  .lg\\\\:object-top {\\n    -o-object-position: top !important;\\n       object-position: top !important\\n  }\\n\\n  .lg\\\\:opacity-0 {\\n    opacity: 0 !important\\n  }\\n\\n  .lg\\\\:opacity-25 {\\n    opacity: 0.25 !important\\n  }\\n\\n  .lg\\\\:opacity-50 {\\n    opacity: 0.5 !important\\n  }\\n\\n  .lg\\\\:opacity-75 {\\n    opacity: 0.75 !important\\n  }\\n\\n  .lg\\\\:opacity-100 {\\n    opacity: 1 !important\\n  }\\n\\n  .lg\\\\:overflow-auto {\\n    overflow: auto !important\\n  }\\n\\n  .lg\\\\:overflow-hidden {\\n    overflow: hidden !important\\n  }\\n\\n  .lg\\\\:overflow-visible {\\n    overflow: visible !important\\n  }\\n\\n  .lg\\\\:overflow-scroll {\\n    overflow: scroll !important\\n  }\\n\\n  .lg\\\\:overflow-x-auto {\\n    overflow-x: auto !important\\n  }\\n\\n  .lg\\\\:overflow-y-auto {\\n    overflow-y: auto !important\\n  }\\n\\n  .lg\\\\:overflow-x-hidden {\\n    overflow-x: hidden !important\\n  }\\n\\n  .lg\\\\:overflow-y-hidden {\\n    overflow-y: hidden !important\\n  }\\n\\n  .lg\\\\:overflow-x-visible {\\n    overflow-x: visible !important\\n  }\\n\\n  .lg\\\\:overflow-y-visible {\\n    overflow-y: visible !important\\n  }\\n\\n  .lg\\\\:overflow-x-scroll {\\n    overflow-x: scroll !important\\n  }\\n\\n  .lg\\\\:overflow-y-scroll {\\n    overflow-y: scroll !important\\n  }\\n\\n  .lg\\\\:scrolling-touch {\\n    -webkit-overflow-scrolling: touch !important\\n  }\\n\\n  .lg\\\\:scrolling-auto {\\n    -webkit-overflow-scrolling: auto !important\\n  }\\n\\n  .lg\\\\:p-0 {\\n    padding: 0 !important\\n  }\\n\\n  .lg\\\\:p-1 {\\n    padding: 0.25rem !important\\n  }\\n\\n  .lg\\\\:p-2 {\\n    padding: 0.5rem !important\\n  }\\n\\n  .lg\\\\:p-3 {\\n    padding: 0.75rem !important\\n  }\\n\\n  .lg\\\\:p-4 {\\n    padding: 1rem !important\\n  }\\n\\n  .lg\\\\:p-5 {\\n    padding: 1.25rem !important\\n  }\\n\\n  .lg\\\\:p-6 {\\n    padding: 1.5rem !important\\n  }\\n\\n  .lg\\\\:p-8 {\\n    padding: 2rem !important\\n  }\\n\\n  .lg\\\\:p-10 {\\n    padding: 2.5rem !important\\n  }\\n\\n  .lg\\\\:p-12 {\\n    padding: 3rem !important\\n  }\\n\\n  .lg\\\\:p-16 {\\n    padding: 4rem !important\\n  }\\n\\n  .lg\\\\:p-20 {\\n    padding: 5rem !important\\n  }\\n\\n  .lg\\\\:p-24 {\\n    padding: 6rem !important\\n  }\\n\\n  .lg\\\\:p-32 {\\n    padding: 8rem !important\\n  }\\n\\n  .lg\\\\:p-px {\\n    padding: 1px !important\\n  }\\n\\n  .lg\\\\:p-base {\\n    padding: 2.2rem !important\\n  }\\n\\n  .lg\\\\:py-0 {\\n    padding-top: 0 !important;\\n    padding-bottom: 0 !important\\n  }\\n\\n  .lg\\\\:px-0 {\\n    padding-left: 0 !important;\\n    padding-right: 0 !important\\n  }\\n\\n  .lg\\\\:py-1 {\\n    padding-top: 0.25rem !important;\\n    padding-bottom: 0.25rem !important\\n  }\\n\\n  .lg\\\\:px-1 {\\n    padding-left: 0.25rem !important;\\n    padding-right: 0.25rem !important\\n  }\\n\\n  .lg\\\\:py-2 {\\n    padding-top: 0.5rem !important;\\n    padding-bottom: 0.5rem !important\\n  }\\n\\n  .lg\\\\:px-2 {\\n    padding-left: 0.5rem !important;\\n    padding-right: 0.5rem !important\\n  }\\n\\n  .lg\\\\:py-3 {\\n    padding-top: 0.75rem !important;\\n    padding-bottom: 0.75rem !important\\n  }\\n\\n  .lg\\\\:px-3 {\\n    padding-left: 0.75rem !important;\\n    padding-right: 0.75rem !important\\n  }\\n\\n  .lg\\\\:py-4 {\\n    padding-top: 1rem !important;\\n    padding-bottom: 1rem !important\\n  }\\n\\n  .lg\\\\:px-4 {\\n    padding-left: 1rem !important;\\n    padding-right: 1rem !important\\n  }\\n\\n  .lg\\\\:py-5 {\\n    padding-top: 1.25rem !important;\\n    padding-bottom: 1.25rem !important\\n  }\\n\\n  .lg\\\\:px-5 {\\n    padding-left: 1.25rem !important;\\n    padding-right: 1.25rem !important\\n  }\\n\\n  .lg\\\\:py-6 {\\n    padding-top: 1.5rem !important;\\n    padding-bottom: 1.5rem !important\\n  }\\n\\n  .lg\\\\:px-6 {\\n    padding-left: 1.5rem !important;\\n    padding-right: 1.5rem !important\\n  }\\n\\n  .lg\\\\:py-8 {\\n    padding-top: 2rem !important;\\n    padding-bottom: 2rem !important\\n  }\\n\\n  .lg\\\\:px-8 {\\n    padding-left: 2rem !important;\\n    padding-right: 2rem !important\\n  }\\n\\n  .lg\\\\:py-10 {\\n    padding-top: 2.5rem !important;\\n    padding-bottom: 2.5rem !important\\n  }\\n\\n  .lg\\\\:px-10 {\\n    padding-left: 2.5rem !important;\\n    padding-right: 2.5rem !important\\n  }\\n\\n  .lg\\\\:py-12 {\\n    padding-top: 3rem !important;\\n    padding-bottom: 3rem !important\\n  }\\n\\n  .lg\\\\:px-12 {\\n    padding-left: 3rem !important;\\n    padding-right: 3rem !important\\n  }\\n\\n  .lg\\\\:py-16 {\\n    padding-top: 4rem !important;\\n    padding-bottom: 4rem !important\\n  }\\n\\n  .lg\\\\:px-16 {\\n    padding-left: 4rem !important;\\n    padding-right: 4rem !important\\n  }\\n\\n  .lg\\\\:py-20 {\\n    padding-top: 5rem !important;\\n    padding-bottom: 5rem !important\\n  }\\n\\n  .lg\\\\:px-20 {\\n    padding-left: 5rem !important;\\n    padding-right: 5rem !important\\n  }\\n\\n  .lg\\\\:py-24 {\\n    padding-top: 6rem !important;\\n    padding-bottom: 6rem !important\\n  }\\n\\n  .lg\\\\:px-24 {\\n    padding-left: 6rem !important;\\n    padding-right: 6rem !important\\n  }\\n\\n  .lg\\\\:py-32 {\\n    padding-top: 8rem !important;\\n    padding-bottom: 8rem !important\\n  }\\n\\n  .lg\\\\:px-32 {\\n    padding-left: 8rem !important;\\n    padding-right: 8rem !important\\n  }\\n\\n  .lg\\\\:py-px {\\n    padding-top: 1px !important;\\n    padding-bottom: 1px !important\\n  }\\n\\n  .lg\\\\:px-px {\\n    padding-left: 1px !important;\\n    padding-right: 1px !important\\n  }\\n\\n  .lg\\\\:py-base {\\n    padding-top: 2.2rem !important;\\n    padding-bottom: 2.2rem !important\\n  }\\n\\n  .lg\\\\:px-base {\\n    padding-left: 2.2rem !important;\\n    padding-right: 2.2rem !important\\n  }\\n\\n  .lg\\\\:pt-0 {\\n    padding-top: 0 !important\\n  }\\n\\n  .lg\\\\:pr-0 {\\n    padding-right: 0 !important\\n  }\\n\\n  .lg\\\\:pb-0 {\\n    padding-bottom: 0 !important\\n  }\\n\\n  .lg\\\\:pl-0 {\\n    padding-left: 0 !important\\n  }\\n\\n  .lg\\\\:pt-1 {\\n    padding-top: 0.25rem !important\\n  }\\n\\n  .lg\\\\:pr-1 {\\n    padding-right: 0.25rem !important\\n  }\\n\\n  .lg\\\\:pb-1 {\\n    padding-bottom: 0.25rem !important\\n  }\\n\\n  .lg\\\\:pl-1 {\\n    padding-left: 0.25rem !important\\n  }\\n\\n  .lg\\\\:pt-2 {\\n    padding-top: 0.5rem !important\\n  }\\n\\n  .lg\\\\:pr-2 {\\n    padding-right: 0.5rem !important\\n  }\\n\\n  .lg\\\\:pb-2 {\\n    padding-bottom: 0.5rem !important\\n  }\\n\\n  .lg\\\\:pl-2 {\\n    padding-left: 0.5rem !important\\n  }\\n\\n  .lg\\\\:pt-3 {\\n    padding-top: 0.75rem !important\\n  }\\n\\n  .lg\\\\:pr-3 {\\n    padding-right: 0.75rem !important\\n  }\\n\\n  .lg\\\\:pb-3 {\\n    padding-bottom: 0.75rem !important\\n  }\\n\\n  .lg\\\\:pl-3 {\\n    padding-left: 0.75rem !important\\n  }\\n\\n  .lg\\\\:pt-4 {\\n    padding-top: 1rem !important\\n  }\\n\\n  .lg\\\\:pr-4 {\\n    padding-right: 1rem !important\\n  }\\n\\n  .lg\\\\:pb-4 {\\n    padding-bottom: 1rem !important\\n  }\\n\\n  .lg\\\\:pl-4 {\\n    padding-left: 1rem !important\\n  }\\n\\n  .lg\\\\:pt-5 {\\n    padding-top: 1.25rem !important\\n  }\\n\\n  .lg\\\\:pr-5 {\\n    padding-right: 1.25rem !important\\n  }\\n\\n  .lg\\\\:pb-5 {\\n    padding-bottom: 1.25rem !important\\n  }\\n\\n  .lg\\\\:pl-5 {\\n    padding-left: 1.25rem !important\\n  }\\n\\n  .lg\\\\:pt-6 {\\n    padding-top: 1.5rem !important\\n  }\\n\\n  .lg\\\\:pr-6 {\\n    padding-right: 1.5rem !important\\n  }\\n\\n  .lg\\\\:pb-6 {\\n    padding-bottom: 1.5rem !important\\n  }\\n\\n  .lg\\\\:pl-6 {\\n    padding-left: 1.5rem !important\\n  }\\n\\n  .lg\\\\:pt-8 {\\n    padding-top: 2rem !important\\n  }\\n\\n  .lg\\\\:pr-8 {\\n    padding-right: 2rem !important\\n  }\\n\\n  .lg\\\\:pb-8 {\\n    padding-bottom: 2rem !important\\n  }\\n\\n  .lg\\\\:pl-8 {\\n    padding-left: 2rem !important\\n  }\\n\\n  .lg\\\\:pt-10 {\\n    padding-top: 2.5rem !important\\n  }\\n\\n  .lg\\\\:pr-10 {\\n    padding-right: 2.5rem !important\\n  }\\n\\n  .lg\\\\:pb-10 {\\n    padding-bottom: 2.5rem !important\\n  }\\n\\n  .lg\\\\:pl-10 {\\n    padding-left: 2.5rem !important\\n  }\\n\\n  .lg\\\\:pt-12 {\\n    padding-top: 3rem !important\\n  }\\n\\n  .lg\\\\:pr-12 {\\n    padding-right: 3rem !important\\n  }\\n\\n  .lg\\\\:pb-12 {\\n    padding-bottom: 3rem !important\\n  }\\n\\n  .lg\\\\:pl-12 {\\n    padding-left: 3rem !important\\n  }\\n\\n  .lg\\\\:pt-16 {\\n    padding-top: 4rem !important\\n  }\\n\\n  .lg\\\\:pr-16 {\\n    padding-right: 4rem !important\\n  }\\n\\n  .lg\\\\:pb-16 {\\n    padding-bottom: 4rem !important\\n  }\\n\\n  .lg\\\\:pl-16 {\\n    padding-left: 4rem !important\\n  }\\n\\n  .lg\\\\:pt-20 {\\n    padding-top: 5rem !important\\n  }\\n\\n  .lg\\\\:pr-20 {\\n    padding-right: 5rem !important\\n  }\\n\\n  .lg\\\\:pb-20 {\\n    padding-bottom: 5rem !important\\n  }\\n\\n  .lg\\\\:pl-20 {\\n    padding-left: 5rem !important\\n  }\\n\\n  .lg\\\\:pt-24 {\\n    padding-top: 6rem !important\\n  }\\n\\n  .lg\\\\:pr-24 {\\n    padding-right: 6rem !important\\n  }\\n\\n  .lg\\\\:pb-24 {\\n    padding-bottom: 6rem !important\\n  }\\n\\n  .lg\\\\:pl-24 {\\n    padding-left: 6rem !important\\n  }\\n\\n  .lg\\\\:pt-32 {\\n    padding-top: 8rem !important\\n  }\\n\\n  .lg\\\\:pr-32 {\\n    padding-right: 8rem !important\\n  }\\n\\n  .lg\\\\:pb-32 {\\n    padding-bottom: 8rem !important\\n  }\\n\\n  .lg\\\\:pl-32 {\\n    padding-left: 8rem !important\\n  }\\n\\n  .lg\\\\:pt-px {\\n    padding-top: 1px !important\\n  }\\n\\n  .lg\\\\:pr-px {\\n    padding-right: 1px !important\\n  }\\n\\n  .lg\\\\:pb-px {\\n    padding-bottom: 1px !important\\n  }\\n\\n  .lg\\\\:pl-px {\\n    padding-left: 1px !important\\n  }\\n\\n  .lg\\\\:pt-base {\\n    padding-top: 2.2rem !important\\n  }\\n\\n  .lg\\\\:pr-base {\\n    padding-right: 2.2rem !important\\n  }\\n\\n  .lg\\\\:pb-base {\\n    padding-bottom: 2.2rem !important\\n  }\\n\\n  .lg\\\\:pl-base {\\n    padding-left: 2.2rem !important\\n  }\\n\\n  .lg\\\\:placeholder-transparent::-webkit-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:placeholder-transparent::-moz-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:placeholder-transparent:-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:placeholder-transparent::-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:placeholder-transparent::placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:placeholder-black::-webkit-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:placeholder-black::-moz-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:placeholder-black:-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:placeholder-black::-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:placeholder-black::placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:placeholder-white::-webkit-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:placeholder-white::-moz-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:placeholder-white:-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:placeholder-white::-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:placeholder-white::placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:placeholder-grey::-webkit-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:placeholder-grey::-moz-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:placeholder-grey:-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:placeholder-grey::-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:placeholder-grey::placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:placeholder-grey-light::-webkit-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:placeholder-grey-light::-moz-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:placeholder-grey-light:-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:placeholder-grey-light::-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:placeholder-grey-light::placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-transparent:focus::-webkit-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-transparent:focus::-moz-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-transparent:focus:-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-transparent:focus::-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-transparent:focus::placeholder {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-black:focus::-webkit-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-black:focus::-moz-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-black:focus:-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-black:focus::-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-black:focus::placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-white:focus::-webkit-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-white:focus::-moz-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-white:focus:-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-white:focus::-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-white:focus::placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey:focus::-webkit-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey:focus::-moz-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey:focus:-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey:focus::-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey:focus::placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey-light:focus::-webkit-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey-light:focus::-moz-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey-light:focus:-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey-light:focus::-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:placeholder-grey-light:focus::placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:pointer-events-none {\\n    pointer-events: none !important\\n  }\\n\\n  .lg\\\\:pointer-events-auto {\\n    pointer-events: auto !important\\n  }\\n\\n  .lg\\\\:static {\\n    position: static !important\\n  }\\n\\n  .lg\\\\:fixed {\\n    position: fixed !important\\n  }\\n\\n  .lg\\\\:absolute {\\n    position: absolute !important\\n  }\\n\\n  .lg\\\\:relative {\\n    position: relative !important\\n  }\\n\\n  .lg\\\\:sticky {\\n    position: -webkit-sticky !important;\\n    position: sticky !important\\n  }\\n\\n  .lg\\\\:inset-0 {\\n    top: 0 !important;\\n    right: 0 !important;\\n    bottom: 0 !important;\\n    left: 0 !important\\n  }\\n\\n  .lg\\\\:inset-auto {\\n    top: auto !important;\\n    right: auto !important;\\n    bottom: auto !important;\\n    left: auto !important\\n  }\\n\\n  .lg\\\\:inset-y-0 {\\n    top: 0 !important;\\n    bottom: 0 !important\\n  }\\n\\n  .lg\\\\:inset-x-0 {\\n    right: 0 !important;\\n    left: 0 !important\\n  }\\n\\n  .lg\\\\:inset-y-auto {\\n    top: auto !important;\\n    bottom: auto !important\\n  }\\n\\n  .lg\\\\:inset-x-auto {\\n    right: auto !important;\\n    left: auto !important\\n  }\\n\\n  .lg\\\\:top-0 {\\n    top: 0 !important\\n  }\\n\\n  .lg\\\\:right-0 {\\n    right: 0 !important\\n  }\\n\\n  .lg\\\\:bottom-0 {\\n    bottom: 0 !important\\n  }\\n\\n  .lg\\\\:left-0 {\\n    left: 0 !important\\n  }\\n\\n  .lg\\\\:top-auto {\\n    top: auto !important\\n  }\\n\\n  .lg\\\\:right-auto {\\n    right: auto !important\\n  }\\n\\n  .lg\\\\:bottom-auto {\\n    bottom: auto !important\\n  }\\n\\n  .lg\\\\:left-auto {\\n    left: auto !important\\n  }\\n\\n  .lg\\\\:resize-none {\\n    resize: none !important\\n  }\\n\\n  .lg\\\\:resize-y {\\n    resize: vertical !important\\n  }\\n\\n  .lg\\\\:resize-x {\\n    resize: horizontal !important\\n  }\\n\\n  .lg\\\\:resize {\\n    resize: both !important\\n  }\\n\\n  .lg\\\\:shadow {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .lg\\\\:shadow-md {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .lg\\\\:shadow-lg {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .lg\\\\:shadow-inner {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .lg\\\\:shadow-xl {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .lg\\\\:shadow-2xl {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .lg\\\\:shadow-outline {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .lg\\\\:shadow-none {\\n    box-shadow: none !important\\n  }\\n\\n  .lg\\\\:shadow-drop {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .lg\\\\:hover\\\\:shadow:hover {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .lg\\\\:hover\\\\:shadow-md:hover {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .lg\\\\:hover\\\\:shadow-lg:hover {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .lg\\\\:hover\\\\:shadow-inner:hover {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .lg\\\\:hover\\\\:shadow-xl:hover {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .lg\\\\:hover\\\\:shadow-2xl:hover {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .lg\\\\:hover\\\\:shadow-outline:hover {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .lg\\\\:hover\\\\:shadow-none:hover {\\n    box-shadow: none !important\\n  }\\n\\n  .lg\\\\:hover\\\\:shadow-drop:hover {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .lg\\\\:focus\\\\:shadow:focus {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .lg\\\\:focus\\\\:shadow-md:focus {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .lg\\\\:focus\\\\:shadow-lg:focus {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .lg\\\\:focus\\\\:shadow-inner:focus {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .lg\\\\:focus\\\\:shadow-xl:focus {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .lg\\\\:focus\\\\:shadow-2xl:focus {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .lg\\\\:focus\\\\:shadow-outline:focus {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .lg\\\\:focus\\\\:shadow-none:focus {\\n    box-shadow: none !important\\n  }\\n\\n  .lg\\\\:focus\\\\:shadow-drop:focus {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .lg\\\\:table-auto {\\n    table-layout: auto !important\\n  }\\n\\n  .lg\\\\:table-fixed {\\n    table-layout: fixed !important\\n  }\\n\\n  .lg\\\\:text-left {\\n    text-align: left !important\\n  }\\n\\n  .lg\\\\:text-center {\\n    text-align: center !important\\n  }\\n\\n  .lg\\\\:text-right {\\n    text-align: right !important\\n  }\\n\\n  .lg\\\\:text-justify {\\n    text-align: justify !important\\n  }\\n\\n  .lg\\\\:text-transparent {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:text-black {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:text-white {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:text-grey {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:text-grey-light {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:hover\\\\:text-transparent:hover {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:hover\\\\:text-black:hover {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:hover\\\\:text-white:hover {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:hover\\\\:text-grey:hover {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:hover\\\\:text-grey-light:hover {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:focus\\\\:text-transparent:focus {\\n    color: transparent !important\\n  }\\n\\n  .lg\\\\:focus\\\\:text-black:focus {\\n    color: #22292f !important\\n  }\\n\\n  .lg\\\\:focus\\\\:text-white:focus {\\n    color: #ffffff !important\\n  }\\n\\n  .lg\\\\:focus\\\\:text-grey:focus {\\n    color: #b8c2cc !important\\n  }\\n\\n  .lg\\\\:focus\\\\:text-grey-light:focus {\\n    color: #dae1e7 !important\\n  }\\n\\n  .lg\\\\:text-xs {\\n    font-size: .75rem !important\\n  }\\n\\n  .lg\\\\:text-sm {\\n    font-size: .875rem !important\\n  }\\n\\n  .lg\\\\:text-base {\\n    font-size: 1rem !important\\n  }\\n\\n  .lg\\\\:text-lg {\\n    font-size: 1.125rem !important\\n  }\\n\\n  .lg\\\\:text-xl {\\n    font-size: 1.25rem !important\\n  }\\n\\n  .lg\\\\:text-2xl {\\n    font-size: 1.5rem !important\\n  }\\n\\n  .lg\\\\:text-3xl {\\n    font-size: 1.875rem !important\\n  }\\n\\n  .lg\\\\:text-4xl {\\n    font-size: 2.25rem !important\\n  }\\n\\n  .lg\\\\:text-5xl {\\n    font-size: 3rem !important\\n  }\\n\\n  .lg\\\\:text-6xl {\\n    font-size: 4rem !important\\n  }\\n\\n  .lg\\\\:italic {\\n    font-style: italic !important\\n  }\\n\\n  .lg\\\\:not-italic {\\n    font-style: normal !important\\n  }\\n\\n  .lg\\\\:hover\\\\:italic:hover {\\n    font-style: italic !important\\n  }\\n\\n  .lg\\\\:hover\\\\:not-italic:hover {\\n    font-style: normal !important\\n  }\\n\\n  .lg\\\\:focus\\\\:italic:focus {\\n    font-style: italic !important\\n  }\\n\\n  .lg\\\\:focus\\\\:not-italic:focus {\\n    font-style: normal !important\\n  }\\n\\n  .lg\\\\:uppercase {\\n    text-transform: uppercase !important\\n  }\\n\\n  .lg\\\\:lowercase {\\n    text-transform: lowercase !important\\n  }\\n\\n  .lg\\\\:capitalize {\\n    text-transform: capitalize !important\\n  }\\n\\n  .lg\\\\:normal-case {\\n    text-transform: none !important\\n  }\\n\\n  .lg\\\\:hover\\\\:uppercase:hover {\\n    text-transform: uppercase !important\\n  }\\n\\n  .lg\\\\:hover\\\\:lowercase:hover {\\n    text-transform: lowercase !important\\n  }\\n\\n  .lg\\\\:hover\\\\:capitalize:hover {\\n    text-transform: capitalize !important\\n  }\\n\\n  .lg\\\\:hover\\\\:normal-case:hover {\\n    text-transform: none !important\\n  }\\n\\n  .lg\\\\:focus\\\\:uppercase:focus {\\n    text-transform: uppercase !important\\n  }\\n\\n  .lg\\\\:focus\\\\:lowercase:focus {\\n    text-transform: lowercase !important\\n  }\\n\\n  .lg\\\\:focus\\\\:capitalize:focus {\\n    text-transform: capitalize !important\\n  }\\n\\n  .lg\\\\:focus\\\\:normal-case:focus {\\n    text-transform: none !important\\n  }\\n\\n  .lg\\\\:underline {\\n    text-decoration: underline !important\\n  }\\n\\n  .lg\\\\:line-through {\\n    text-decoration: line-through !important\\n  }\\n\\n  .lg\\\\:no-underline {\\n    text-decoration: none !important\\n  }\\n\\n  .lg\\\\:hover\\\\:underline:hover {\\n    text-decoration: underline !important\\n  }\\n\\n  .lg\\\\:hover\\\\:line-through:hover {\\n    text-decoration: line-through !important\\n  }\\n\\n  .lg\\\\:hover\\\\:no-underline:hover {\\n    text-decoration: none !important\\n  }\\n\\n  .lg\\\\:focus\\\\:underline:focus {\\n    text-decoration: underline !important\\n  }\\n\\n  .lg\\\\:focus\\\\:line-through:focus {\\n    text-decoration: line-through !important\\n  }\\n\\n  .lg\\\\:focus\\\\:no-underline:focus {\\n    text-decoration: none !important\\n  }\\n\\n  .lg\\\\:antialiased {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .lg\\\\:subpixel-antialiased {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .lg\\\\:hover\\\\:antialiased:hover {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .lg\\\\:hover\\\\:subpixel-antialiased:hover {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .lg\\\\:focus\\\\:antialiased:focus {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .lg\\\\:focus\\\\:subpixel-antialiased:focus {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .lg\\\\:select-none {\\n    -webkit-user-select: none !important;\\n       -moz-user-select: none !important;\\n        -ms-user-select: none !important;\\n            user-select: none !important\\n  }\\n\\n  .lg\\\\:select-text {\\n    -webkit-user-select: text !important;\\n       -moz-user-select: text !important;\\n        -ms-user-select: text !important;\\n            user-select: text !important\\n  }\\n\\n  .lg\\\\:select-all {\\n    -webkit-user-select: all !important;\\n       -moz-user-select: all !important;\\n        -ms-user-select: all !important;\\n            user-select: all !important\\n  }\\n\\n  .lg\\\\:select-auto {\\n    -webkit-user-select: auto !important;\\n       -moz-user-select: auto !important;\\n        -ms-user-select: auto !important;\\n            user-select: auto !important\\n  }\\n\\n  .lg\\\\:align-baseline {\\n    vertical-align: baseline !important\\n  }\\n\\n  .lg\\\\:align-top {\\n    vertical-align: top !important\\n  }\\n\\n  .lg\\\\:align-middle {\\n    vertical-align: middle !important\\n  }\\n\\n  .lg\\\\:align-bottom {\\n    vertical-align: bottom !important\\n  }\\n\\n  .lg\\\\:align-text-top {\\n    vertical-align: text-top !important\\n  }\\n\\n  .lg\\\\:align-text-bottom {\\n    vertical-align: text-bottom !important\\n  }\\n\\n  .lg\\\\:visible {\\n    visibility: visible !important\\n  }\\n\\n  .lg\\\\:invisible {\\n    visibility: hidden !important\\n  }\\n\\n  .lg\\\\:whitespace-normal {\\n    white-space: normal !important\\n  }\\n\\n  .lg\\\\:whitespace-no-wrap {\\n    white-space: nowrap !important\\n  }\\n\\n  .lg\\\\:whitespace-pre {\\n    white-space: pre !important\\n  }\\n\\n  .lg\\\\:whitespace-pre-line {\\n    white-space: pre-line !important\\n  }\\n\\n  .lg\\\\:whitespace-pre-wrap {\\n    white-space: pre-wrap !important\\n  }\\n\\n  .lg\\\\:break-normal {\\n    overflow-wrap: normal !important;\\n    word-break: normal !important\\n  }\\n\\n  .lg\\\\:break-words {\\n    overflow-wrap: break-word !important\\n  }\\n\\n  .lg\\\\:break-all {\\n    word-break: break-all !important\\n  }\\n\\n  .lg\\\\:truncate {\\n    overflow: hidden !important;\\n    text-overflow: ellipsis !important;\\n    white-space: nowrap !important\\n  }\\n\\n  .lg\\\\:w-1 {\\n    width: 0.25rem !important\\n  }\\n\\n  .lg\\\\:w-2 {\\n    width: 0.5rem !important\\n  }\\n\\n  .lg\\\\:w-3 {\\n    width: 0.75rem !important\\n  }\\n\\n  .lg\\\\:w-4 {\\n    width: 1rem !important\\n  }\\n\\n  .lg\\\\:w-5 {\\n    width: 1.25rem !important\\n  }\\n\\n  .lg\\\\:w-6 {\\n    width: 1.5rem !important\\n  }\\n\\n  .lg\\\\:w-8 {\\n    width: 2rem !important\\n  }\\n\\n  .lg\\\\:w-10 {\\n    width: 2.5rem !important\\n  }\\n\\n  .lg\\\\:w-12 {\\n    width: 3rem !important\\n  }\\n\\n  .lg\\\\:w-16 {\\n    width: 4rem !important\\n  }\\n\\n  .lg\\\\:w-24 {\\n    width: 6rem !important\\n  }\\n\\n  .lg\\\\:w-32 {\\n    width: 8rem !important\\n  }\\n\\n  .lg\\\\:w-48 {\\n    width: 12rem !important\\n  }\\n\\n  .lg\\\\:w-64 {\\n    width: 16rem !important\\n  }\\n\\n  .lg\\\\:w-auto {\\n    width: auto !important\\n  }\\n\\n  .lg\\\\:w-px {\\n    width: 1px !important\\n  }\\n\\n  .lg\\\\:w-1\\\\/2 {\\n    width: 50% !important\\n  }\\n\\n  .lg\\\\:w-1\\\\/3 {\\n    width: 33.33333% !important\\n  }\\n\\n  .lg\\\\:w-2\\\\/3 {\\n    width: 66.66667% !important\\n  }\\n\\n  .lg\\\\:w-1\\\\/4 {\\n    width: 25% !important\\n  }\\n\\n  .lg\\\\:w-3\\\\/4 {\\n    width: 75% !important\\n  }\\n\\n  .lg\\\\:w-1\\\\/5 {\\n    width: 20% !important\\n  }\\n\\n  .lg\\\\:w-2\\\\/5 {\\n    width: 40% !important\\n  }\\n\\n  .lg\\\\:w-3\\\\/5 {\\n    width: 60% !important\\n  }\\n\\n  .lg\\\\:w-4\\\\/5 {\\n    width: 80% !important\\n  }\\n\\n  .lg\\\\:w-1\\\\/6 {\\n    width: 16.66667% !important\\n  }\\n\\n  .lg\\\\:w-5\\\\/6 {\\n    width: 83.33333% !important\\n  }\\n\\n  .lg\\\\:w-1\\\\/12 {\\n    width: 8.33333% !important\\n  }\\n\\n  .lg\\\\:w-2\\\\/12 {\\n    width: 16.66667% !important\\n  }\\n\\n  .lg\\\\:w-3\\\\/12 {\\n    width: 25% !important\\n  }\\n\\n  .lg\\\\:w-4\\\\/12 {\\n    width: 33.33333% !important\\n  }\\n\\n  .lg\\\\:w-5\\\\/12 {\\n    width: 41.66667% !important\\n  }\\n\\n  .lg\\\\:w-6\\\\/12 {\\n    width: 50% !important\\n  }\\n\\n  .lg\\\\:w-7\\\\/12 {\\n    width: 58.33333% !important\\n  }\\n\\n  .lg\\\\:w-8\\\\/12 {\\n    width: 66.66667% !important\\n  }\\n\\n  .lg\\\\:w-9\\\\/12 {\\n    width: 75% !important\\n  }\\n\\n  .lg\\\\:w-10\\\\/12 {\\n    width: 83.33333% !important\\n  }\\n\\n  .lg\\\\:w-11\\\\/12 {\\n    width: 91.66667% !important\\n  }\\n\\n  .lg\\\\:w-full {\\n    width: 100% !important\\n  }\\n\\n  .lg\\\\:w-screen {\\n    width: 100vw !important\\n  }\\n\\n  .lg\\\\:z-0 {\\n    z-index: 0 !important\\n  }\\n\\n  .lg\\\\:z-10 {\\n    z-index: 10 !important\\n  }\\n\\n  .lg\\\\:z-20 {\\n    z-index: 20 !important\\n  }\\n\\n  .lg\\\\:z-30 {\\n    z-index: 30 !important\\n  }\\n\\n  .lg\\\\:z-40 {\\n    z-index: 40 !important\\n  }\\n\\n  .lg\\\\:z-50 {\\n    z-index: 50 !important\\n  }\\n\\n  .lg\\\\:z-auto {\\n    z-index: auto !important\\n  }\\n}\\n\\n@media (min-width: 1200px) {\\n  .xl\\\\:sr-only {\\n    position: absolute !important;\\n    width: 1px !important;\\n    height: 1px !important;\\n    padding: 0 !important;\\n    margin: -1px !important;\\n    overflow: hidden !important;\\n    clip: rect(0, 0, 0, 0) !important;\\n    white-space: nowrap !important;\\n    border-width: 0 !important\\n  }\\n\\n  .xl\\\\:not-sr-only {\\n    position: static !important;\\n    width: auto !important;\\n    height: auto !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    overflow: visible !important;\\n    clip: auto !important;\\n    white-space: normal !important\\n  }\\n\\n  .xl\\\\:focus\\\\:sr-only:focus {\\n    position: absolute !important;\\n    width: 1px !important;\\n    height: 1px !important;\\n    padding: 0 !important;\\n    margin: -1px !important;\\n    overflow: hidden !important;\\n    clip: rect(0, 0, 0, 0) !important;\\n    white-space: nowrap !important;\\n    border-width: 0 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:not-sr-only:focus {\\n    position: static !important;\\n    width: auto !important;\\n    height: auto !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    overflow: visible !important;\\n    clip: auto !important;\\n    white-space: normal !important\\n  }\\n\\n  .xl\\\\:appearance-none {\\n    -webkit-appearance: none !important;\\n       -moz-appearance: none !important;\\n            appearance: none !important\\n  }\\n\\n  .xl\\\\:bg-fixed {\\n    background-attachment: fixed !important\\n  }\\n\\n  .xl\\\\:bg-local {\\n    background-attachment: local !important\\n  }\\n\\n  .xl\\\\:bg-scroll {\\n    background-attachment: scroll !important\\n  }\\n\\n  .xl\\\\:bg-transparent {\\n    background-color: transparent !important\\n  }\\n\\n  .xl\\\\:bg-black {\\n    background-color: #22292f !important\\n  }\\n\\n  .xl\\\\:bg-white {\\n    background-color: #ffffff !important\\n  }\\n\\n  .xl\\\\:bg-grey {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:bg-grey-light {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:bg-transparent:hover {\\n    background-color: transparent !important\\n  }\\n\\n  .xl\\\\:hover\\\\:bg-black:hover {\\n    background-color: #22292f !important\\n  }\\n\\n  .xl\\\\:hover\\\\:bg-white:hover {\\n    background-color: #ffffff !important\\n  }\\n\\n  .xl\\\\:hover\\\\:bg-grey:hover {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:hover\\\\:bg-grey-light:hover {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:bg-transparent:focus {\\n    background-color: transparent !important\\n  }\\n\\n  .xl\\\\:focus\\\\:bg-black:focus {\\n    background-color: #22292f !important\\n  }\\n\\n  .xl\\\\:focus\\\\:bg-white:focus {\\n    background-color: #ffffff !important\\n  }\\n\\n  .xl\\\\:focus\\\\:bg-grey:focus {\\n    background-color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:focus\\\\:bg-grey-light:focus {\\n    background-color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:bg-auto {\\n    background-size: auto !important\\n  }\\n\\n  .xl\\\\:bg-cover {\\n    background-size: cover !important\\n  }\\n\\n  .xl\\\\:bg-contain {\\n    background-size: contain !important\\n  }\\n\\n  .xl\\\\:border-transparent {\\n    border-color: transparent !important\\n  }\\n\\n  .xl\\\\:border-black {\\n    border-color: #22292f !important\\n  }\\n\\n  .xl\\\\:border-white {\\n    border-color: #ffffff !important\\n  }\\n\\n  .xl\\\\:border-grey {\\n    border-color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:border-grey-light {\\n    border-color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:border-transparent:hover {\\n    border-color: transparent !important\\n  }\\n\\n  .xl\\\\:hover\\\\:border-black:hover {\\n    border-color: #22292f !important\\n  }\\n\\n  .xl\\\\:hover\\\\:border-white:hover {\\n    border-color: #ffffff !important\\n  }\\n\\n  .xl\\\\:hover\\\\:border-grey:hover {\\n    border-color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:hover\\\\:border-grey-light:hover {\\n    border-color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:border-solid {\\n    border-style: solid !important\\n  }\\n\\n  .xl\\\\:border-dashed {\\n    border-style: dashed !important\\n  }\\n\\n  .xl\\\\:border-dotted {\\n    border-style: dotted !important\\n  }\\n\\n  .xl\\\\:border-double {\\n    border-style: double !important\\n  }\\n\\n  .xl\\\\:border-none {\\n    border-style: none !important\\n  }\\n\\n  .xl\\\\:border-0 {\\n    border-width: 0 !important\\n  }\\n\\n  .xl\\\\:border-2 {\\n    border-width: 2px !important\\n  }\\n\\n  .xl\\\\:border-4 {\\n    border-width: 4px !important\\n  }\\n\\n  .xl\\\\:border-8 {\\n    border-width: 8px !important\\n  }\\n\\n  .xl\\\\:border {\\n    border-width: 1px !important\\n  }\\n\\n  .xl\\\\:border-t-0 {\\n    border-top-width: 0 !important\\n  }\\n\\n  .xl\\\\:border-r-0 {\\n    border-right-width: 0 !important\\n  }\\n\\n  .xl\\\\:border-b-0 {\\n    border-bottom-width: 0 !important\\n  }\\n\\n  .xl\\\\:border-l-0 {\\n    border-left-width: 0 !important\\n  }\\n\\n  .xl\\\\:border-t-2 {\\n    border-top-width: 2px !important\\n  }\\n\\n  .xl\\\\:border-r-2 {\\n    border-right-width: 2px !important\\n  }\\n\\n  .xl\\\\:border-b-2 {\\n    border-bottom-width: 2px !important\\n  }\\n\\n  .xl\\\\:border-l-2 {\\n    border-left-width: 2px !important\\n  }\\n\\n  .xl\\\\:border-t-4 {\\n    border-top-width: 4px !important\\n  }\\n\\n  .xl\\\\:border-r-4 {\\n    border-right-width: 4px !important\\n  }\\n\\n  .xl\\\\:border-b-4 {\\n    border-bottom-width: 4px !important\\n  }\\n\\n  .xl\\\\:border-l-4 {\\n    border-left-width: 4px !important\\n  }\\n\\n  .xl\\\\:border-t-8 {\\n    border-top-width: 8px !important\\n  }\\n\\n  .xl\\\\:border-r-8 {\\n    border-right-width: 8px !important\\n  }\\n\\n  .xl\\\\:border-b-8 {\\n    border-bottom-width: 8px !important\\n  }\\n\\n  .xl\\\\:border-l-8 {\\n    border-left-width: 8px !important\\n  }\\n\\n  .xl\\\\:border-t {\\n    border-top-width: 1px !important\\n  }\\n\\n  .xl\\\\:border-r {\\n    border-right-width: 1px !important\\n  }\\n\\n  .xl\\\\:border-b {\\n    border-bottom-width: 1px !important\\n  }\\n\\n  .xl\\\\:border-l {\\n    border-left-width: 1px !important\\n  }\\n\\n  .xl\\\\:block {\\n    display: block !important\\n  }\\n\\n  .xl\\\\:inline-block {\\n    display: inline-block !important\\n  }\\n\\n  .xl\\\\:inline {\\n    display: inline !important\\n  }\\n\\n  .xl\\\\:flex {\\n    display: flex !important\\n  }\\n\\n  .xl\\\\:inline-flex {\\n    display: inline-flex !important\\n  }\\n\\n  .xl\\\\:table {\\n    display: table !important\\n  }\\n\\n  .xl\\\\:table-row {\\n    display: table-row !important\\n  }\\n\\n  .xl\\\\:table-cell {\\n    display: table-cell !important\\n  }\\n\\n  .xl\\\\:hidden {\\n    display: none !important\\n  }\\n\\n  .xl\\\\:flex-row {\\n    flex-direction: row !important\\n  }\\n\\n  .xl\\\\:flex-row-reverse {\\n    flex-direction: row-reverse !important\\n  }\\n\\n  .xl\\\\:flex-col {\\n    flex-direction: column !important\\n  }\\n\\n  .xl\\\\:flex-col-reverse {\\n    flex-direction: column-reverse !important\\n  }\\n\\n  .xl\\\\:flex-wrap {\\n    flex-wrap: wrap !important\\n  }\\n\\n  .xl\\\\:flex-wrap-reverse {\\n    flex-wrap: wrap-reverse !important\\n  }\\n\\n  .xl\\\\:flex-no-wrap {\\n    flex-wrap: nowrap !important\\n  }\\n\\n  .xl\\\\:items-start {\\n    align-items: flex-start !important\\n  }\\n\\n  .xl\\\\:items-end {\\n    align-items: flex-end !important\\n  }\\n\\n  .xl\\\\:items-center {\\n    align-items: center !important\\n  }\\n\\n  .xl\\\\:items-baseline {\\n    align-items: baseline !important\\n  }\\n\\n  .xl\\\\:items-stretch {\\n    align-items: stretch !important\\n  }\\n\\n  .xl\\\\:self-auto {\\n    align-self: auto !important\\n  }\\n\\n  .xl\\\\:self-start {\\n    align-self: flex-start !important\\n  }\\n\\n  .xl\\\\:self-end {\\n    align-self: flex-end !important\\n  }\\n\\n  .xl\\\\:self-center {\\n    align-self: center !important\\n  }\\n\\n  .xl\\\\:self-stretch {\\n    align-self: stretch !important\\n  }\\n\\n  .xl\\\\:justify-start {\\n    justify-content: flex-start !important\\n  }\\n\\n  .xl\\\\:justify-end {\\n    justify-content: flex-end !important\\n  }\\n\\n  .xl\\\\:justify-center {\\n    justify-content: center !important\\n  }\\n\\n  .xl\\\\:justify-between {\\n    justify-content: space-between !important\\n  }\\n\\n  .xl\\\\:justify-around {\\n    justify-content: space-around !important\\n  }\\n\\n  .xl\\\\:content-center {\\n    align-content: center !important\\n  }\\n\\n  .xl\\\\:content-start {\\n    align-content: flex-start !important\\n  }\\n\\n  .xl\\\\:content-end {\\n    align-content: flex-end !important\\n  }\\n\\n  .xl\\\\:content-between {\\n    align-content: space-between !important\\n  }\\n\\n  .xl\\\\:content-around {\\n    align-content: space-around !important\\n  }\\n\\n  .xl\\\\:flex-1 {\\n    flex: 1 1 0% !important\\n  }\\n\\n  .xl\\\\:flex-auto {\\n    flex: 1 1 auto !important\\n  }\\n\\n  .xl\\\\:flex-initial {\\n    flex: 0 1 auto !important\\n  }\\n\\n  .xl\\\\:flex-none {\\n    flex: none !important\\n  }\\n\\n  .xl\\\\:flex-grow-0 {\\n    flex-grow: 0 !important\\n  }\\n\\n  .xl\\\\:flex-grow {\\n    flex-grow: 1 !important\\n  }\\n\\n  .xl\\\\:flex-shrink-0 {\\n    flex-shrink: 0 !important\\n  }\\n\\n  .xl\\\\:flex-shrink {\\n    flex-shrink: 1 !important\\n  }\\n\\n  .xl\\\\:order-1 {\\n    order: 1 !important\\n  }\\n\\n  .xl\\\\:order-2 {\\n    order: 2 !important\\n  }\\n\\n  .xl\\\\:order-3 {\\n    order: 3 !important\\n  }\\n\\n  .xl\\\\:order-4 {\\n    order: 4 !important\\n  }\\n\\n  .xl\\\\:order-5 {\\n    order: 5 !important\\n  }\\n\\n  .xl\\\\:order-6 {\\n    order: 6 !important\\n  }\\n\\n  .xl\\\\:order-first {\\n    order: -1 !important\\n  }\\n\\n  .xl\\\\:order-last {\\n    order: 999 !important\\n  }\\n\\n  .xl\\\\:order-normal {\\n    order: 0 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:order-1:hover {\\n    order: 1 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:order-2:hover {\\n    order: 2 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:order-3:hover {\\n    order: 3 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:order-4:hover {\\n    order: 4 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:order-5:hover {\\n    order: 5 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:order-6:hover {\\n    order: 6 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:order-first:hover {\\n    order: -1 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:order-last:hover {\\n    order: 999 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:order-normal:hover {\\n    order: 0 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:order-1:focus {\\n    order: 1 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:order-2:focus {\\n    order: 2 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:order-3:focus {\\n    order: 3 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:order-4:focus {\\n    order: 4 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:order-5:focus {\\n    order: 5 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:order-6:focus {\\n    order: 6 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:order-first:focus {\\n    order: -1 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:order-last:focus {\\n    order: 999 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:order-normal:focus {\\n    order: 0 !important\\n  }\\n\\n  .xl\\\\:float-right {\\n    float: right !important\\n  }\\n\\n  .xl\\\\:float-left {\\n    float: left !important\\n  }\\n\\n  .xl\\\\:float-none {\\n    float: none !important\\n  }\\n\\n  .xl\\\\:clearfix:after {\\n    content: \\\"\\\" !important;\\n    display: table !important;\\n    clear: both !important\\n  }\\n\\n  .xl\\\\:font-light {\\n    font-weight: 300 !important\\n  }\\n\\n  .xl\\\\:font-normal {\\n    font-weight: 400 !important\\n  }\\n\\n  .xl\\\\:font-medium {\\n    font-weight: 500 !important\\n  }\\n\\n  .xl\\\\:font-semibold {\\n    font-weight: 600 !important\\n  }\\n\\n  .xl\\\\:font-bold {\\n    font-weight: 700 !important\\n  }\\n\\n  .xl\\\\:font-extrabold {\\n    font-weight: 800 !important\\n  }\\n\\n  .xl\\\\:font-black {\\n    font-weight: 900 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:font-light:hover {\\n    font-weight: 300 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:font-normal:hover {\\n    font-weight: 400 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:font-medium:hover {\\n    font-weight: 500 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:font-semibold:hover {\\n    font-weight: 600 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:font-bold:hover {\\n    font-weight: 700 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:font-extrabold:hover {\\n    font-weight: 800 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:font-black:hover {\\n    font-weight: 900 !important\\n  }\\n\\n  .xl\\\\:h-1 {\\n    height: 0.25rem !important\\n  }\\n\\n  .xl\\\\:h-2 {\\n    height: 0.5rem !important\\n  }\\n\\n  .xl\\\\:h-3 {\\n    height: 0.75rem !important\\n  }\\n\\n  .xl\\\\:h-4 {\\n    height: 1rem !important\\n  }\\n\\n  .xl\\\\:h-5 {\\n    height: 1.25rem !important\\n  }\\n\\n  .xl\\\\:h-6 {\\n    height: 1.5rem !important\\n  }\\n\\n  .xl\\\\:h-8 {\\n    height: 2rem !important\\n  }\\n\\n  .xl\\\\:h-10 {\\n    height: 2.5rem !important\\n  }\\n\\n  .xl\\\\:h-12 {\\n    height: 3rem !important\\n  }\\n\\n  .xl\\\\:h-16 {\\n    height: 4rem !important\\n  }\\n\\n  .xl\\\\:h-24 {\\n    height: 6rem !important\\n  }\\n\\n  .xl\\\\:h-32 {\\n    height: 8rem !important\\n  }\\n\\n  .xl\\\\:h-48 {\\n    height: 12rem !important\\n  }\\n\\n  .xl\\\\:h-64 {\\n    height: 16rem !important\\n  }\\n\\n  .xl\\\\:h-auto {\\n    height: auto !important\\n  }\\n\\n  .xl\\\\:h-px {\\n    height: 1px !important\\n  }\\n\\n  .xl\\\\:h-full {\\n    height: 100% !important\\n  }\\n\\n  .xl\\\\:h-screen {\\n    height: 100vh !important\\n  }\\n\\n  .xl\\\\:leading-none {\\n    line-height: 1 !important\\n  }\\n\\n  .xl\\\\:leading-tight {\\n    line-height: 1.25 !important\\n  }\\n\\n  .xl\\\\:leading-normal {\\n    line-height: 1.5 !important\\n  }\\n\\n  .xl\\\\:leading-loose {\\n    line-height: 2 !important\\n  }\\n\\n  .xl\\\\:list-inside {\\n    list-style-position: inside !important\\n  }\\n\\n  .xl\\\\:list-outside {\\n    list-style-position: outside !important\\n  }\\n\\n  .xl\\\\:m-0 {\\n    margin: 0 !important\\n  }\\n\\n  .xl\\\\:m-1 {\\n    margin: 0.25rem !important\\n  }\\n\\n  .xl\\\\:m-2 {\\n    margin: 0.5rem !important\\n  }\\n\\n  .xl\\\\:m-3 {\\n    margin: 0.75rem !important\\n  }\\n\\n  .xl\\\\:m-4 {\\n    margin: 1rem !important\\n  }\\n\\n  .xl\\\\:m-5 {\\n    margin: 1.25rem !important\\n  }\\n\\n  .xl\\\\:m-6 {\\n    margin: 1.5rem !important\\n  }\\n\\n  .xl\\\\:m-8 {\\n    margin: 2rem !important\\n  }\\n\\n  .xl\\\\:m-10 {\\n    margin: 2.5rem !important\\n  }\\n\\n  .xl\\\\:m-12 {\\n    margin: 3rem !important\\n  }\\n\\n  .xl\\\\:m-16 {\\n    margin: 4rem !important\\n  }\\n\\n  .xl\\\\:m-20 {\\n    margin: 5rem !important\\n  }\\n\\n  .xl\\\\:m-24 {\\n    margin: 6rem !important\\n  }\\n\\n  .xl\\\\:m-32 {\\n    margin: 8rem !important\\n  }\\n\\n  .xl\\\\:m-auto {\\n    margin: auto !important\\n  }\\n\\n  .xl\\\\:m-px {\\n    margin: 1px !important\\n  }\\n\\n  .xl\\\\:m-base {\\n    margin: 2.2rem !important\\n  }\\n\\n  .xl\\\\:-m-px {\\n    margin: -1px !important\\n  }\\n\\n  .xl\\\\:-m-1 {\\n    margin: -0.25rem !important\\n  }\\n\\n  .xl\\\\:-m-2 {\\n    margin: -0.5rem !important\\n  }\\n\\n  .xl\\\\:-m-3 {\\n    margin: -0.75rem !important\\n  }\\n\\n  .xl\\\\:-m-4 {\\n    margin: -1rem !important\\n  }\\n\\n  .xl\\\\:my-0 {\\n    margin-top: 0 !important;\\n    margin-bottom: 0 !important\\n  }\\n\\n  .xl\\\\:mx-0 {\\n    margin-left: 0 !important;\\n    margin-right: 0 !important\\n  }\\n\\n  .xl\\\\:my-1 {\\n    margin-top: 0.25rem !important;\\n    margin-bottom: 0.25rem !important\\n  }\\n\\n  .xl\\\\:mx-1 {\\n    margin-left: 0.25rem !important;\\n    margin-right: 0.25rem !important\\n  }\\n\\n  .xl\\\\:my-2 {\\n    margin-top: 0.5rem !important;\\n    margin-bottom: 0.5rem !important\\n  }\\n\\n  .xl\\\\:mx-2 {\\n    margin-left: 0.5rem !important;\\n    margin-right: 0.5rem !important\\n  }\\n\\n  .xl\\\\:my-3 {\\n    margin-top: 0.75rem !important;\\n    margin-bottom: 0.75rem !important\\n  }\\n\\n  .xl\\\\:mx-3 {\\n    margin-left: 0.75rem !important;\\n    margin-right: 0.75rem !important\\n  }\\n\\n  .xl\\\\:my-4 {\\n    margin-top: 1rem !important;\\n    margin-bottom: 1rem !important\\n  }\\n\\n  .xl\\\\:mx-4 {\\n    margin-left: 1rem !important;\\n    margin-right: 1rem !important\\n  }\\n\\n  .xl\\\\:my-5 {\\n    margin-top: 1.25rem !important;\\n    margin-bottom: 1.25rem !important\\n  }\\n\\n  .xl\\\\:mx-5 {\\n    margin-left: 1.25rem !important;\\n    margin-right: 1.25rem !important\\n  }\\n\\n  .xl\\\\:my-6 {\\n    margin-top: 1.5rem !important;\\n    margin-bottom: 1.5rem !important\\n  }\\n\\n  .xl\\\\:mx-6 {\\n    margin-left: 1.5rem !important;\\n    margin-right: 1.5rem !important\\n  }\\n\\n  .xl\\\\:my-8 {\\n    margin-top: 2rem !important;\\n    margin-bottom: 2rem !important\\n  }\\n\\n  .xl\\\\:mx-8 {\\n    margin-left: 2rem !important;\\n    margin-right: 2rem !important\\n  }\\n\\n  .xl\\\\:my-10 {\\n    margin-top: 2.5rem !important;\\n    margin-bottom: 2.5rem !important\\n  }\\n\\n  .xl\\\\:mx-10 {\\n    margin-left: 2.5rem !important;\\n    margin-right: 2.5rem !important\\n  }\\n\\n  .xl\\\\:my-12 {\\n    margin-top: 3rem !important;\\n    margin-bottom: 3rem !important\\n  }\\n\\n  .xl\\\\:mx-12 {\\n    margin-left: 3rem !important;\\n    margin-right: 3rem !important\\n  }\\n\\n  .xl\\\\:my-16 {\\n    margin-top: 4rem !important;\\n    margin-bottom: 4rem !important\\n  }\\n\\n  .xl\\\\:mx-16 {\\n    margin-left: 4rem !important;\\n    margin-right: 4rem !important\\n  }\\n\\n  .xl\\\\:my-20 {\\n    margin-top: 5rem !important;\\n    margin-bottom: 5rem !important\\n  }\\n\\n  .xl\\\\:mx-20 {\\n    margin-left: 5rem !important;\\n    margin-right: 5rem !important\\n  }\\n\\n  .xl\\\\:my-24 {\\n    margin-top: 6rem !important;\\n    margin-bottom: 6rem !important\\n  }\\n\\n  .xl\\\\:mx-24 {\\n    margin-left: 6rem !important;\\n    margin-right: 6rem !important\\n  }\\n\\n  .xl\\\\:my-32 {\\n    margin-top: 8rem !important;\\n    margin-bottom: 8rem !important\\n  }\\n\\n  .xl\\\\:mx-32 {\\n    margin-left: 8rem !important;\\n    margin-right: 8rem !important\\n  }\\n\\n  .xl\\\\:my-auto {\\n    margin-top: auto !important;\\n    margin-bottom: auto !important\\n  }\\n\\n  .xl\\\\:mx-auto {\\n    margin-left: auto !important;\\n    margin-right: auto !important\\n  }\\n\\n  .xl\\\\:my-px {\\n    margin-top: 1px !important;\\n    margin-bottom: 1px !important\\n  }\\n\\n  .xl\\\\:mx-px {\\n    margin-left: 1px !important;\\n    margin-right: 1px !important\\n  }\\n\\n  .xl\\\\:my-base {\\n    margin-top: 2.2rem !important;\\n    margin-bottom: 2.2rem !important\\n  }\\n\\n  .xl\\\\:mx-base {\\n    margin-left: 2.2rem !important;\\n    margin-right: 2.2rem !important\\n  }\\n\\n  .xl\\\\:-my-px {\\n    margin-top: -1px !important;\\n    margin-bottom: -1px !important\\n  }\\n\\n  .xl\\\\:-mx-px {\\n    margin-left: -1px !important;\\n    margin-right: -1px !important\\n  }\\n\\n  .xl\\\\:-my-1 {\\n    margin-top: -0.25rem !important;\\n    margin-bottom: -0.25rem !important\\n  }\\n\\n  .xl\\\\:-mx-1 {\\n    margin-left: -0.25rem !important;\\n    margin-right: -0.25rem !important\\n  }\\n\\n  .xl\\\\:-my-2 {\\n    margin-top: -0.5rem !important;\\n    margin-bottom: -0.5rem !important\\n  }\\n\\n  .xl\\\\:-mx-2 {\\n    margin-left: -0.5rem !important;\\n    margin-right: -0.5rem !important\\n  }\\n\\n  .xl\\\\:-my-3 {\\n    margin-top: -0.75rem !important;\\n    margin-bottom: -0.75rem !important\\n  }\\n\\n  .xl\\\\:-mx-3 {\\n    margin-left: -0.75rem !important;\\n    margin-right: -0.75rem !important\\n  }\\n\\n  .xl\\\\:-my-4 {\\n    margin-top: -1rem !important;\\n    margin-bottom: -1rem !important\\n  }\\n\\n  .xl\\\\:-mx-4 {\\n    margin-left: -1rem !important;\\n    margin-right: -1rem !important\\n  }\\n\\n  .xl\\\\:mt-0 {\\n    margin-top: 0 !important\\n  }\\n\\n  .xl\\\\:mr-0 {\\n    margin-right: 0 !important\\n  }\\n\\n  .xl\\\\:mb-0 {\\n    margin-bottom: 0 !important\\n  }\\n\\n  .xl\\\\:ml-0 {\\n    margin-left: 0 !important\\n  }\\n\\n  .xl\\\\:mt-1 {\\n    margin-top: 0.25rem !important\\n  }\\n\\n  .xl\\\\:mr-1 {\\n    margin-right: 0.25rem !important\\n  }\\n\\n  .xl\\\\:mb-1 {\\n    margin-bottom: 0.25rem !important\\n  }\\n\\n  .xl\\\\:ml-1 {\\n    margin-left: 0.25rem !important\\n  }\\n\\n  .xl\\\\:mt-2 {\\n    margin-top: 0.5rem !important\\n  }\\n\\n  .xl\\\\:mr-2 {\\n    margin-right: 0.5rem !important\\n  }\\n\\n  .xl\\\\:mb-2 {\\n    margin-bottom: 0.5rem !important\\n  }\\n\\n  .xl\\\\:ml-2 {\\n    margin-left: 0.5rem !important\\n  }\\n\\n  .xl\\\\:mt-3 {\\n    margin-top: 0.75rem !important\\n  }\\n\\n  .xl\\\\:mr-3 {\\n    margin-right: 0.75rem !important\\n  }\\n\\n  .xl\\\\:mb-3 {\\n    margin-bottom: 0.75rem !important\\n  }\\n\\n  .xl\\\\:ml-3 {\\n    margin-left: 0.75rem !important\\n  }\\n\\n  .xl\\\\:mt-4 {\\n    margin-top: 1rem !important\\n  }\\n\\n  .xl\\\\:mr-4 {\\n    margin-right: 1rem !important\\n  }\\n\\n  .xl\\\\:mb-4 {\\n    margin-bottom: 1rem !important\\n  }\\n\\n  .xl\\\\:ml-4 {\\n    margin-left: 1rem !important\\n  }\\n\\n  .xl\\\\:mt-5 {\\n    margin-top: 1.25rem !important\\n  }\\n\\n  .xl\\\\:mr-5 {\\n    margin-right: 1.25rem !important\\n  }\\n\\n  .xl\\\\:mb-5 {\\n    margin-bottom: 1.25rem !important\\n  }\\n\\n  .xl\\\\:ml-5 {\\n    margin-left: 1.25rem !important\\n  }\\n\\n  .xl\\\\:mt-6 {\\n    margin-top: 1.5rem !important\\n  }\\n\\n  .xl\\\\:mr-6 {\\n    margin-right: 1.5rem !important\\n  }\\n\\n  .xl\\\\:mb-6 {\\n    margin-bottom: 1.5rem !important\\n  }\\n\\n  .xl\\\\:ml-6 {\\n    margin-left: 1.5rem !important\\n  }\\n\\n  .xl\\\\:mt-8 {\\n    margin-top: 2rem !important\\n  }\\n\\n  .xl\\\\:mr-8 {\\n    margin-right: 2rem !important\\n  }\\n\\n  .xl\\\\:mb-8 {\\n    margin-bottom: 2rem !important\\n  }\\n\\n  .xl\\\\:ml-8 {\\n    margin-left: 2rem !important\\n  }\\n\\n  .xl\\\\:mt-10 {\\n    margin-top: 2.5rem !important\\n  }\\n\\n  .xl\\\\:mr-10 {\\n    margin-right: 2.5rem !important\\n  }\\n\\n  .xl\\\\:mb-10 {\\n    margin-bottom: 2.5rem !important\\n  }\\n\\n  .xl\\\\:ml-10 {\\n    margin-left: 2.5rem !important\\n  }\\n\\n  .xl\\\\:mt-12 {\\n    margin-top: 3rem !important\\n  }\\n\\n  .xl\\\\:mr-12 {\\n    margin-right: 3rem !important\\n  }\\n\\n  .xl\\\\:mb-12 {\\n    margin-bottom: 3rem !important\\n  }\\n\\n  .xl\\\\:ml-12 {\\n    margin-left: 3rem !important\\n  }\\n\\n  .xl\\\\:mt-16 {\\n    margin-top: 4rem !important\\n  }\\n\\n  .xl\\\\:mr-16 {\\n    margin-right: 4rem !important\\n  }\\n\\n  .xl\\\\:mb-16 {\\n    margin-bottom: 4rem !important\\n  }\\n\\n  .xl\\\\:ml-16 {\\n    margin-left: 4rem !important\\n  }\\n\\n  .xl\\\\:mt-20 {\\n    margin-top: 5rem !important\\n  }\\n\\n  .xl\\\\:mr-20 {\\n    margin-right: 5rem !important\\n  }\\n\\n  .xl\\\\:mb-20 {\\n    margin-bottom: 5rem !important\\n  }\\n\\n  .xl\\\\:ml-20 {\\n    margin-left: 5rem !important\\n  }\\n\\n  .xl\\\\:mt-24 {\\n    margin-top: 6rem !important\\n  }\\n\\n  .xl\\\\:mr-24 {\\n    margin-right: 6rem !important\\n  }\\n\\n  .xl\\\\:mb-24 {\\n    margin-bottom: 6rem !important\\n  }\\n\\n  .xl\\\\:ml-24 {\\n    margin-left: 6rem !important\\n  }\\n\\n  .xl\\\\:mt-32 {\\n    margin-top: 8rem !important\\n  }\\n\\n  .xl\\\\:mr-32 {\\n    margin-right: 8rem !important\\n  }\\n\\n  .xl\\\\:mb-32 {\\n    margin-bottom: 8rem !important\\n  }\\n\\n  .xl\\\\:ml-32 {\\n    margin-left: 8rem !important\\n  }\\n\\n  .xl\\\\:mt-auto {\\n    margin-top: auto !important\\n  }\\n\\n  .xl\\\\:mr-auto {\\n    margin-right: auto !important\\n  }\\n\\n  .xl\\\\:mb-auto {\\n    margin-bottom: auto !important\\n  }\\n\\n  .xl\\\\:ml-auto {\\n    margin-left: auto !important\\n  }\\n\\n  .xl\\\\:mt-px {\\n    margin-top: 1px !important\\n  }\\n\\n  .xl\\\\:mr-px {\\n    margin-right: 1px !important\\n  }\\n\\n  .xl\\\\:mb-px {\\n    margin-bottom: 1px !important\\n  }\\n\\n  .xl\\\\:ml-px {\\n    margin-left: 1px !important\\n  }\\n\\n  .xl\\\\:mt-base {\\n    margin-top: 2.2rem !important\\n  }\\n\\n  .xl\\\\:mr-base {\\n    margin-right: 2.2rem !important\\n  }\\n\\n  .xl\\\\:mb-base {\\n    margin-bottom: 2.2rem !important\\n  }\\n\\n  .xl\\\\:ml-base {\\n    margin-left: 2.2rem !important\\n  }\\n\\n  .xl\\\\:-mt-px {\\n    margin-top: -1px !important\\n  }\\n\\n  .xl\\\\:-mr-px {\\n    margin-right: -1px !important\\n  }\\n\\n  .xl\\\\:-mb-px {\\n    margin-bottom: -1px !important\\n  }\\n\\n  .xl\\\\:-ml-px {\\n    margin-left: -1px !important\\n  }\\n\\n  .xl\\\\:-mt-1 {\\n    margin-top: -0.25rem !important\\n  }\\n\\n  .xl\\\\:-mr-1 {\\n    margin-right: -0.25rem !important\\n  }\\n\\n  .xl\\\\:-mb-1 {\\n    margin-bottom: -0.25rem !important\\n  }\\n\\n  .xl\\\\:-ml-1 {\\n    margin-left: -0.25rem !important\\n  }\\n\\n  .xl\\\\:-mt-2 {\\n    margin-top: -0.5rem !important\\n  }\\n\\n  .xl\\\\:-mr-2 {\\n    margin-right: -0.5rem !important\\n  }\\n\\n  .xl\\\\:-mb-2 {\\n    margin-bottom: -0.5rem !important\\n  }\\n\\n  .xl\\\\:-ml-2 {\\n    margin-left: -0.5rem !important\\n  }\\n\\n  .xl\\\\:-mt-3 {\\n    margin-top: -0.75rem !important\\n  }\\n\\n  .xl\\\\:-mr-3 {\\n    margin-right: -0.75rem !important\\n  }\\n\\n  .xl\\\\:-mb-3 {\\n    margin-bottom: -0.75rem !important\\n  }\\n\\n  .xl\\\\:-ml-3 {\\n    margin-left: -0.75rem !important\\n  }\\n\\n  .xl\\\\:-mt-4 {\\n    margin-top: -1rem !important\\n  }\\n\\n  .xl\\\\:-mr-4 {\\n    margin-right: -1rem !important\\n  }\\n\\n  .xl\\\\:-mb-4 {\\n    margin-bottom: -1rem !important\\n  }\\n\\n  .xl\\\\:-ml-4 {\\n    margin-left: -1rem !important\\n  }\\n\\n  .xl\\\\:max-h-full {\\n    max-height: 100% !important\\n  }\\n\\n  .xl\\\\:max-h-screen {\\n    max-height: 100vh !important\\n  }\\n\\n  .xl\\\\:max-w-xs {\\n    max-width: 20rem !important\\n  }\\n\\n  .xl\\\\:max-w-sm {\\n    max-width: 30rem !important\\n  }\\n\\n  .xl\\\\:max-w-md {\\n    max-width: 40rem !important\\n  }\\n\\n  .xl\\\\:max-w-lg {\\n    max-width: 50rem !important\\n  }\\n\\n  .xl\\\\:max-w-xl {\\n    max-width: 60rem !important\\n  }\\n\\n  .xl\\\\:max-w-2xl {\\n    max-width: 70rem !important\\n  }\\n\\n  .xl\\\\:max-w-3xl {\\n    max-width: 80rem !important\\n  }\\n\\n  .xl\\\\:max-w-4xl {\\n    max-width: 90rem !important\\n  }\\n\\n  .xl\\\\:max-w-5xl {\\n    max-width: 100rem !important\\n  }\\n\\n  .xl\\\\:max-w-full {\\n    max-width: 100% !important\\n  }\\n\\n  .xl\\\\:min-h-0 {\\n    min-height: 0 !important\\n  }\\n\\n  .xl\\\\:min-h-full {\\n    min-height: 100% !important\\n  }\\n\\n  .xl\\\\:min-h-screen {\\n    min-height: 100vh !important\\n  }\\n\\n  .xl\\\\:min-w-0 {\\n    min-width: 0 !important\\n  }\\n\\n  .xl\\\\:min-w-full {\\n    min-width: 100% !important\\n  }\\n\\n  .xl\\\\:object-contain {\\n    -o-object-fit: contain !important;\\n       object-fit: contain !important\\n  }\\n\\n  .xl\\\\:object-cover {\\n    -o-object-fit: cover !important;\\n       object-fit: cover !important\\n  }\\n\\n  .xl\\\\:object-fill {\\n    -o-object-fit: fill !important;\\n       object-fit: fill !important\\n  }\\n\\n  .xl\\\\:object-none {\\n    -o-object-fit: none !important;\\n       object-fit: none !important\\n  }\\n\\n  .xl\\\\:object-scale-down {\\n    -o-object-fit: scale-down !important;\\n       object-fit: scale-down !important\\n  }\\n\\n  .xl\\\\:object-bottom {\\n    -o-object-position: bottom !important;\\n       object-position: bottom !important\\n  }\\n\\n  .xl\\\\:object-center {\\n    -o-object-position: center !important;\\n       object-position: center !important\\n  }\\n\\n  .xl\\\\:object-left {\\n    -o-object-position: left !important;\\n       object-position: left !important\\n  }\\n\\n  .xl\\\\:object-left-bottom {\\n    -o-object-position: left bottom !important;\\n       object-position: left bottom !important\\n  }\\n\\n  .xl\\\\:object-left-top {\\n    -o-object-position: left top !important;\\n       object-position: left top !important\\n  }\\n\\n  .xl\\\\:object-right {\\n    -o-object-position: right !important;\\n       object-position: right !important\\n  }\\n\\n  .xl\\\\:object-right-bottom {\\n    -o-object-position: right bottom !important;\\n       object-position: right bottom !important\\n  }\\n\\n  .xl\\\\:object-right-top {\\n    -o-object-position: right top !important;\\n       object-position: right top !important\\n  }\\n\\n  .xl\\\\:object-top {\\n    -o-object-position: top !important;\\n       object-position: top !important\\n  }\\n\\n  .xl\\\\:opacity-0 {\\n    opacity: 0 !important\\n  }\\n\\n  .xl\\\\:opacity-25 {\\n    opacity: 0.25 !important\\n  }\\n\\n  .xl\\\\:opacity-50 {\\n    opacity: 0.5 !important\\n  }\\n\\n  .xl\\\\:opacity-75 {\\n    opacity: 0.75 !important\\n  }\\n\\n  .xl\\\\:opacity-100 {\\n    opacity: 1 !important\\n  }\\n\\n  .xl\\\\:overflow-auto {\\n    overflow: auto !important\\n  }\\n\\n  .xl\\\\:overflow-hidden {\\n    overflow: hidden !important\\n  }\\n\\n  .xl\\\\:overflow-visible {\\n    overflow: visible !important\\n  }\\n\\n  .xl\\\\:overflow-scroll {\\n    overflow: scroll !important\\n  }\\n\\n  .xl\\\\:overflow-x-auto {\\n    overflow-x: auto !important\\n  }\\n\\n  .xl\\\\:overflow-y-auto {\\n    overflow-y: auto !important\\n  }\\n\\n  .xl\\\\:overflow-x-hidden {\\n    overflow-x: hidden !important\\n  }\\n\\n  .xl\\\\:overflow-y-hidden {\\n    overflow-y: hidden !important\\n  }\\n\\n  .xl\\\\:overflow-x-visible {\\n    overflow-x: visible !important\\n  }\\n\\n  .xl\\\\:overflow-y-visible {\\n    overflow-y: visible !important\\n  }\\n\\n  .xl\\\\:overflow-x-scroll {\\n    overflow-x: scroll !important\\n  }\\n\\n  .xl\\\\:overflow-y-scroll {\\n    overflow-y: scroll !important\\n  }\\n\\n  .xl\\\\:scrolling-touch {\\n    -webkit-overflow-scrolling: touch !important\\n  }\\n\\n  .xl\\\\:scrolling-auto {\\n    -webkit-overflow-scrolling: auto !important\\n  }\\n\\n  .xl\\\\:p-0 {\\n    padding: 0 !important\\n  }\\n\\n  .xl\\\\:p-1 {\\n    padding: 0.25rem !important\\n  }\\n\\n  .xl\\\\:p-2 {\\n    padding: 0.5rem !important\\n  }\\n\\n  .xl\\\\:p-3 {\\n    padding: 0.75rem !important\\n  }\\n\\n  .xl\\\\:p-4 {\\n    padding: 1rem !important\\n  }\\n\\n  .xl\\\\:p-5 {\\n    padding: 1.25rem !important\\n  }\\n\\n  .xl\\\\:p-6 {\\n    padding: 1.5rem !important\\n  }\\n\\n  .xl\\\\:p-8 {\\n    padding: 2rem !important\\n  }\\n\\n  .xl\\\\:p-10 {\\n    padding: 2.5rem !important\\n  }\\n\\n  .xl\\\\:p-12 {\\n    padding: 3rem !important\\n  }\\n\\n  .xl\\\\:p-16 {\\n    padding: 4rem !important\\n  }\\n\\n  .xl\\\\:p-20 {\\n    padding: 5rem !important\\n  }\\n\\n  .xl\\\\:p-24 {\\n    padding: 6rem !important\\n  }\\n\\n  .xl\\\\:p-32 {\\n    padding: 8rem !important\\n  }\\n\\n  .xl\\\\:p-px {\\n    padding: 1px !important\\n  }\\n\\n  .xl\\\\:p-base {\\n    padding: 2.2rem !important\\n  }\\n\\n  .xl\\\\:py-0 {\\n    padding-top: 0 !important;\\n    padding-bottom: 0 !important\\n  }\\n\\n  .xl\\\\:px-0 {\\n    padding-left: 0 !important;\\n    padding-right: 0 !important\\n  }\\n\\n  .xl\\\\:py-1 {\\n    padding-top: 0.25rem !important;\\n    padding-bottom: 0.25rem !important\\n  }\\n\\n  .xl\\\\:px-1 {\\n    padding-left: 0.25rem !important;\\n    padding-right: 0.25rem !important\\n  }\\n\\n  .xl\\\\:py-2 {\\n    padding-top: 0.5rem !important;\\n    padding-bottom: 0.5rem !important\\n  }\\n\\n  .xl\\\\:px-2 {\\n    padding-left: 0.5rem !important;\\n    padding-right: 0.5rem !important\\n  }\\n\\n  .xl\\\\:py-3 {\\n    padding-top: 0.75rem !important;\\n    padding-bottom: 0.75rem !important\\n  }\\n\\n  .xl\\\\:px-3 {\\n    padding-left: 0.75rem !important;\\n    padding-right: 0.75rem !important\\n  }\\n\\n  .xl\\\\:py-4 {\\n    padding-top: 1rem !important;\\n    padding-bottom: 1rem !important\\n  }\\n\\n  .xl\\\\:px-4 {\\n    padding-left: 1rem !important;\\n    padding-right: 1rem !important\\n  }\\n\\n  .xl\\\\:py-5 {\\n    padding-top: 1.25rem !important;\\n    padding-bottom: 1.25rem !important\\n  }\\n\\n  .xl\\\\:px-5 {\\n    padding-left: 1.25rem !important;\\n    padding-right: 1.25rem !important\\n  }\\n\\n  .xl\\\\:py-6 {\\n    padding-top: 1.5rem !important;\\n    padding-bottom: 1.5rem !important\\n  }\\n\\n  .xl\\\\:px-6 {\\n    padding-left: 1.5rem !important;\\n    padding-right: 1.5rem !important\\n  }\\n\\n  .xl\\\\:py-8 {\\n    padding-top: 2rem !important;\\n    padding-bottom: 2rem !important\\n  }\\n\\n  .xl\\\\:px-8 {\\n    padding-left: 2rem !important;\\n    padding-right: 2rem !important\\n  }\\n\\n  .xl\\\\:py-10 {\\n    padding-top: 2.5rem !important;\\n    padding-bottom: 2.5rem !important\\n  }\\n\\n  .xl\\\\:px-10 {\\n    padding-left: 2.5rem !important;\\n    padding-right: 2.5rem !important\\n  }\\n\\n  .xl\\\\:py-12 {\\n    padding-top: 3rem !important;\\n    padding-bottom: 3rem !important\\n  }\\n\\n  .xl\\\\:px-12 {\\n    padding-left: 3rem !important;\\n    padding-right: 3rem !important\\n  }\\n\\n  .xl\\\\:py-16 {\\n    padding-top: 4rem !important;\\n    padding-bottom: 4rem !important\\n  }\\n\\n  .xl\\\\:px-16 {\\n    padding-left: 4rem !important;\\n    padding-right: 4rem !important\\n  }\\n\\n  .xl\\\\:py-20 {\\n    padding-top: 5rem !important;\\n    padding-bottom: 5rem !important\\n  }\\n\\n  .xl\\\\:px-20 {\\n    padding-left: 5rem !important;\\n    padding-right: 5rem !important\\n  }\\n\\n  .xl\\\\:py-24 {\\n    padding-top: 6rem !important;\\n    padding-bottom: 6rem !important\\n  }\\n\\n  .xl\\\\:px-24 {\\n    padding-left: 6rem !important;\\n    padding-right: 6rem !important\\n  }\\n\\n  .xl\\\\:py-32 {\\n    padding-top: 8rem !important;\\n    padding-bottom: 8rem !important\\n  }\\n\\n  .xl\\\\:px-32 {\\n    padding-left: 8rem !important;\\n    padding-right: 8rem !important\\n  }\\n\\n  .xl\\\\:py-px {\\n    padding-top: 1px !important;\\n    padding-bottom: 1px !important\\n  }\\n\\n  .xl\\\\:px-px {\\n    padding-left: 1px !important;\\n    padding-right: 1px !important\\n  }\\n\\n  .xl\\\\:py-base {\\n    padding-top: 2.2rem !important;\\n    padding-bottom: 2.2rem !important\\n  }\\n\\n  .xl\\\\:px-base {\\n    padding-left: 2.2rem !important;\\n    padding-right: 2.2rem !important\\n  }\\n\\n  .xl\\\\:pt-0 {\\n    padding-top: 0 !important\\n  }\\n\\n  .xl\\\\:pr-0 {\\n    padding-right: 0 !important\\n  }\\n\\n  .xl\\\\:pb-0 {\\n    padding-bottom: 0 !important\\n  }\\n\\n  .xl\\\\:pl-0 {\\n    padding-left: 0 !important\\n  }\\n\\n  .xl\\\\:pt-1 {\\n    padding-top: 0.25rem !important\\n  }\\n\\n  .xl\\\\:pr-1 {\\n    padding-right: 0.25rem !important\\n  }\\n\\n  .xl\\\\:pb-1 {\\n    padding-bottom: 0.25rem !important\\n  }\\n\\n  .xl\\\\:pl-1 {\\n    padding-left: 0.25rem !important\\n  }\\n\\n  .xl\\\\:pt-2 {\\n    padding-top: 0.5rem !important\\n  }\\n\\n  .xl\\\\:pr-2 {\\n    padding-right: 0.5rem !important\\n  }\\n\\n  .xl\\\\:pb-2 {\\n    padding-bottom: 0.5rem !important\\n  }\\n\\n  .xl\\\\:pl-2 {\\n    padding-left: 0.5rem !important\\n  }\\n\\n  .xl\\\\:pt-3 {\\n    padding-top: 0.75rem !important\\n  }\\n\\n  .xl\\\\:pr-3 {\\n    padding-right: 0.75rem !important\\n  }\\n\\n  .xl\\\\:pb-3 {\\n    padding-bottom: 0.75rem !important\\n  }\\n\\n  .xl\\\\:pl-3 {\\n    padding-left: 0.75rem !important\\n  }\\n\\n  .xl\\\\:pt-4 {\\n    padding-top: 1rem !important\\n  }\\n\\n  .xl\\\\:pr-4 {\\n    padding-right: 1rem !important\\n  }\\n\\n  .xl\\\\:pb-4 {\\n    padding-bottom: 1rem !important\\n  }\\n\\n  .xl\\\\:pl-4 {\\n    padding-left: 1rem !important\\n  }\\n\\n  .xl\\\\:pt-5 {\\n    padding-top: 1.25rem !important\\n  }\\n\\n  .xl\\\\:pr-5 {\\n    padding-right: 1.25rem !important\\n  }\\n\\n  .xl\\\\:pb-5 {\\n    padding-bottom: 1.25rem !important\\n  }\\n\\n  .xl\\\\:pl-5 {\\n    padding-left: 1.25rem !important\\n  }\\n\\n  .xl\\\\:pt-6 {\\n    padding-top: 1.5rem !important\\n  }\\n\\n  .xl\\\\:pr-6 {\\n    padding-right: 1.5rem !important\\n  }\\n\\n  .xl\\\\:pb-6 {\\n    padding-bottom: 1.5rem !important\\n  }\\n\\n  .xl\\\\:pl-6 {\\n    padding-left: 1.5rem !important\\n  }\\n\\n  .xl\\\\:pt-8 {\\n    padding-top: 2rem !important\\n  }\\n\\n  .xl\\\\:pr-8 {\\n    padding-right: 2rem !important\\n  }\\n\\n  .xl\\\\:pb-8 {\\n    padding-bottom: 2rem !important\\n  }\\n\\n  .xl\\\\:pl-8 {\\n    padding-left: 2rem !important\\n  }\\n\\n  .xl\\\\:pt-10 {\\n    padding-top: 2.5rem !important\\n  }\\n\\n  .xl\\\\:pr-10 {\\n    padding-right: 2.5rem !important\\n  }\\n\\n  .xl\\\\:pb-10 {\\n    padding-bottom: 2.5rem !important\\n  }\\n\\n  .xl\\\\:pl-10 {\\n    padding-left: 2.5rem !important\\n  }\\n\\n  .xl\\\\:pt-12 {\\n    padding-top: 3rem !important\\n  }\\n\\n  .xl\\\\:pr-12 {\\n    padding-right: 3rem !important\\n  }\\n\\n  .xl\\\\:pb-12 {\\n    padding-bottom: 3rem !important\\n  }\\n\\n  .xl\\\\:pl-12 {\\n    padding-left: 3rem !important\\n  }\\n\\n  .xl\\\\:pt-16 {\\n    padding-top: 4rem !important\\n  }\\n\\n  .xl\\\\:pr-16 {\\n    padding-right: 4rem !important\\n  }\\n\\n  .xl\\\\:pb-16 {\\n    padding-bottom: 4rem !important\\n  }\\n\\n  .xl\\\\:pl-16 {\\n    padding-left: 4rem !important\\n  }\\n\\n  .xl\\\\:pt-20 {\\n    padding-top: 5rem !important\\n  }\\n\\n  .xl\\\\:pr-20 {\\n    padding-right: 5rem !important\\n  }\\n\\n  .xl\\\\:pb-20 {\\n    padding-bottom: 5rem !important\\n  }\\n\\n  .xl\\\\:pl-20 {\\n    padding-left: 5rem !important\\n  }\\n\\n  .xl\\\\:pt-24 {\\n    padding-top: 6rem !important\\n  }\\n\\n  .xl\\\\:pr-24 {\\n    padding-right: 6rem !important\\n  }\\n\\n  .xl\\\\:pb-24 {\\n    padding-bottom: 6rem !important\\n  }\\n\\n  .xl\\\\:pl-24 {\\n    padding-left: 6rem !important\\n  }\\n\\n  .xl\\\\:pt-32 {\\n    padding-top: 8rem !important\\n  }\\n\\n  .xl\\\\:pr-32 {\\n    padding-right: 8rem !important\\n  }\\n\\n  .xl\\\\:pb-32 {\\n    padding-bottom: 8rem !important\\n  }\\n\\n  .xl\\\\:pl-32 {\\n    padding-left: 8rem !important\\n  }\\n\\n  .xl\\\\:pt-px {\\n    padding-top: 1px !important\\n  }\\n\\n  .xl\\\\:pr-px {\\n    padding-right: 1px !important\\n  }\\n\\n  .xl\\\\:pb-px {\\n    padding-bottom: 1px !important\\n  }\\n\\n  .xl\\\\:pl-px {\\n    padding-left: 1px !important\\n  }\\n\\n  .xl\\\\:pt-base {\\n    padding-top: 2.2rem !important\\n  }\\n\\n  .xl\\\\:pr-base {\\n    padding-right: 2.2rem !important\\n  }\\n\\n  .xl\\\\:pb-base {\\n    padding-bottom: 2.2rem !important\\n  }\\n\\n  .xl\\\\:pl-base {\\n    padding-left: 2.2rem !important\\n  }\\n\\n  .xl\\\\:placeholder-transparent::-webkit-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:placeholder-transparent::-moz-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:placeholder-transparent:-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:placeholder-transparent::-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:placeholder-transparent::placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:placeholder-black::-webkit-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:placeholder-black::-moz-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:placeholder-black:-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:placeholder-black::-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:placeholder-black::placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:placeholder-white::-webkit-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:placeholder-white::-moz-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:placeholder-white:-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:placeholder-white::-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:placeholder-white::placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:placeholder-grey::-webkit-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:placeholder-grey::-moz-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:placeholder-grey:-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:placeholder-grey::-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:placeholder-grey::placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:placeholder-grey-light::-webkit-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:placeholder-grey-light::-moz-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:placeholder-grey-light:-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:placeholder-grey-light::-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:placeholder-grey-light::placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-transparent:focus::-webkit-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-transparent:focus::-moz-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-transparent:focus:-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-transparent:focus::-ms-input-placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-transparent:focus::placeholder {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-black:focus::-webkit-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-black:focus::-moz-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-black:focus:-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-black:focus::-ms-input-placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-black:focus::placeholder {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-white:focus::-webkit-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-white:focus::-moz-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-white:focus:-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-white:focus::-ms-input-placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-white:focus::placeholder {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey:focus::-webkit-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey:focus::-moz-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey:focus:-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey:focus::-ms-input-placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey:focus::placeholder {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey-light:focus::-webkit-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey-light:focus::-moz-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey-light:focus:-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey-light:focus::-ms-input-placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:placeholder-grey-light:focus::placeholder {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:pointer-events-none {\\n    pointer-events: none !important\\n  }\\n\\n  .xl\\\\:pointer-events-auto {\\n    pointer-events: auto !important\\n  }\\n\\n  .xl\\\\:static {\\n    position: static !important\\n  }\\n\\n  .xl\\\\:fixed {\\n    position: fixed !important\\n  }\\n\\n  .xl\\\\:absolute {\\n    position: absolute !important\\n  }\\n\\n  .xl\\\\:relative {\\n    position: relative !important\\n  }\\n\\n  .xl\\\\:sticky {\\n    position: -webkit-sticky !important;\\n    position: sticky !important\\n  }\\n\\n  .xl\\\\:inset-0 {\\n    top: 0 !important;\\n    right: 0 !important;\\n    bottom: 0 !important;\\n    left: 0 !important\\n  }\\n\\n  .xl\\\\:inset-auto {\\n    top: auto !important;\\n    right: auto !important;\\n    bottom: auto !important;\\n    left: auto !important\\n  }\\n\\n  .xl\\\\:inset-y-0 {\\n    top: 0 !important;\\n    bottom: 0 !important\\n  }\\n\\n  .xl\\\\:inset-x-0 {\\n    right: 0 !important;\\n    left: 0 !important\\n  }\\n\\n  .xl\\\\:inset-y-auto {\\n    top: auto !important;\\n    bottom: auto !important\\n  }\\n\\n  .xl\\\\:inset-x-auto {\\n    right: auto !important;\\n    left: auto !important\\n  }\\n\\n  .xl\\\\:top-0 {\\n    top: 0 !important\\n  }\\n\\n  .xl\\\\:right-0 {\\n    right: 0 !important\\n  }\\n\\n  .xl\\\\:bottom-0 {\\n    bottom: 0 !important\\n  }\\n\\n  .xl\\\\:left-0 {\\n    left: 0 !important\\n  }\\n\\n  .xl\\\\:top-auto {\\n    top: auto !important\\n  }\\n\\n  .xl\\\\:right-auto {\\n    right: auto !important\\n  }\\n\\n  .xl\\\\:bottom-auto {\\n    bottom: auto !important\\n  }\\n\\n  .xl\\\\:left-auto {\\n    left: auto !important\\n  }\\n\\n  .xl\\\\:resize-none {\\n    resize: none !important\\n  }\\n\\n  .xl\\\\:resize-y {\\n    resize: vertical !important\\n  }\\n\\n  .xl\\\\:resize-x {\\n    resize: horizontal !important\\n  }\\n\\n  .xl\\\\:resize {\\n    resize: both !important\\n  }\\n\\n  .xl\\\\:shadow {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .xl\\\\:shadow-md {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .xl\\\\:shadow-lg {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .xl\\\\:shadow-inner {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .xl\\\\:shadow-xl {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .xl\\\\:shadow-2xl {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .xl\\\\:shadow-outline {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .xl\\\\:shadow-none {\\n    box-shadow: none !important\\n  }\\n\\n  .xl\\\\:shadow-drop {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .xl\\\\:hover\\\\:shadow:hover {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .xl\\\\:hover\\\\:shadow-md:hover {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .xl\\\\:hover\\\\:shadow-lg:hover {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .xl\\\\:hover\\\\:shadow-inner:hover {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .xl\\\\:hover\\\\:shadow-xl:hover {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .xl\\\\:hover\\\\:shadow-2xl:hover {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .xl\\\\:hover\\\\:shadow-outline:hover {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .xl\\\\:hover\\\\:shadow-none:hover {\\n    box-shadow: none !important\\n  }\\n\\n  .xl\\\\:hover\\\\:shadow-drop:hover {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .xl\\\\:focus\\\\:shadow:focus {\\n    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.10) !important\\n  }\\n\\n  .xl\\\\:focus\\\\:shadow-md:focus {\\n    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .xl\\\\:focus\\\\:shadow-lg:focus {\\n    box-shadow: 0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08) !important\\n  }\\n\\n  .xl\\\\:focus\\\\:shadow-inner:focus {\\n    box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06) !important\\n  }\\n\\n  .xl\\\\:focus\\\\:shadow-xl:focus {\\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important\\n  }\\n\\n  .xl\\\\:focus\\\\:shadow-2xl:focus {\\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important\\n  }\\n\\n  .xl\\\\:focus\\\\:shadow-outline:focus {\\n    box-shadow: 0 0 0 3px rgba(52,144,220,0.5) !important\\n  }\\n\\n  .xl\\\\:focus\\\\:shadow-none:focus {\\n    box-shadow: none !important\\n  }\\n\\n  .xl\\\\:focus\\\\:shadow-drop:focus {\\n    box-shadow: 0 2px 8px 0 rgba(0,0,0,0.14) !important\\n  }\\n\\n  .xl\\\\:table-auto {\\n    table-layout: auto !important\\n  }\\n\\n  .xl\\\\:table-fixed {\\n    table-layout: fixed !important\\n  }\\n\\n  .xl\\\\:text-left {\\n    text-align: left !important\\n  }\\n\\n  .xl\\\\:text-center {\\n    text-align: center !important\\n  }\\n\\n  .xl\\\\:text-right {\\n    text-align: right !important\\n  }\\n\\n  .xl\\\\:text-justify {\\n    text-align: justify !important\\n  }\\n\\n  .xl\\\\:text-transparent {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:text-black {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:text-white {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:text-grey {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:text-grey-light {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:hover\\\\:text-transparent:hover {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:hover\\\\:text-black:hover {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:hover\\\\:text-white:hover {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:hover\\\\:text-grey:hover {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:hover\\\\:text-grey-light:hover {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:focus\\\\:text-transparent:focus {\\n    color: transparent !important\\n  }\\n\\n  .xl\\\\:focus\\\\:text-black:focus {\\n    color: #22292f !important\\n  }\\n\\n  .xl\\\\:focus\\\\:text-white:focus {\\n    color: #ffffff !important\\n  }\\n\\n  .xl\\\\:focus\\\\:text-grey:focus {\\n    color: #b8c2cc !important\\n  }\\n\\n  .xl\\\\:focus\\\\:text-grey-light:focus {\\n    color: #dae1e7 !important\\n  }\\n\\n  .xl\\\\:text-xs {\\n    font-size: .75rem !important\\n  }\\n\\n  .xl\\\\:text-sm {\\n    font-size: .875rem !important\\n  }\\n\\n  .xl\\\\:text-base {\\n    font-size: 1rem !important\\n  }\\n\\n  .xl\\\\:text-lg {\\n    font-size: 1.125rem !important\\n  }\\n\\n  .xl\\\\:text-xl {\\n    font-size: 1.25rem !important\\n  }\\n\\n  .xl\\\\:text-2xl {\\n    font-size: 1.5rem !important\\n  }\\n\\n  .xl\\\\:text-3xl {\\n    font-size: 1.875rem !important\\n  }\\n\\n  .xl\\\\:text-4xl {\\n    font-size: 2.25rem !important\\n  }\\n\\n  .xl\\\\:text-5xl {\\n    font-size: 3rem !important\\n  }\\n\\n  .xl\\\\:text-6xl {\\n    font-size: 4rem !important\\n  }\\n\\n  .xl\\\\:italic {\\n    font-style: italic !important\\n  }\\n\\n  .xl\\\\:not-italic {\\n    font-style: normal !important\\n  }\\n\\n  .xl\\\\:hover\\\\:italic:hover {\\n    font-style: italic !important\\n  }\\n\\n  .xl\\\\:hover\\\\:not-italic:hover {\\n    font-style: normal !important\\n  }\\n\\n  .xl\\\\:focus\\\\:italic:focus {\\n    font-style: italic !important\\n  }\\n\\n  .xl\\\\:focus\\\\:not-italic:focus {\\n    font-style: normal !important\\n  }\\n\\n  .xl\\\\:uppercase {\\n    text-transform: uppercase !important\\n  }\\n\\n  .xl\\\\:lowercase {\\n    text-transform: lowercase !important\\n  }\\n\\n  .xl\\\\:capitalize {\\n    text-transform: capitalize !important\\n  }\\n\\n  .xl\\\\:normal-case {\\n    text-transform: none !important\\n  }\\n\\n  .xl\\\\:hover\\\\:uppercase:hover {\\n    text-transform: uppercase !important\\n  }\\n\\n  .xl\\\\:hover\\\\:lowercase:hover {\\n    text-transform: lowercase !important\\n  }\\n\\n  .xl\\\\:hover\\\\:capitalize:hover {\\n    text-transform: capitalize !important\\n  }\\n\\n  .xl\\\\:hover\\\\:normal-case:hover {\\n    text-transform: none !important\\n  }\\n\\n  .xl\\\\:focus\\\\:uppercase:focus {\\n    text-transform: uppercase !important\\n  }\\n\\n  .xl\\\\:focus\\\\:lowercase:focus {\\n    text-transform: lowercase !important\\n  }\\n\\n  .xl\\\\:focus\\\\:capitalize:focus {\\n    text-transform: capitalize !important\\n  }\\n\\n  .xl\\\\:focus\\\\:normal-case:focus {\\n    text-transform: none !important\\n  }\\n\\n  .xl\\\\:underline {\\n    text-decoration: underline !important\\n  }\\n\\n  .xl\\\\:line-through {\\n    text-decoration: line-through !important\\n  }\\n\\n  .xl\\\\:no-underline {\\n    text-decoration: none !important\\n  }\\n\\n  .xl\\\\:hover\\\\:underline:hover {\\n    text-decoration: underline !important\\n  }\\n\\n  .xl\\\\:hover\\\\:line-through:hover {\\n    text-decoration: line-through !important\\n  }\\n\\n  .xl\\\\:hover\\\\:no-underline:hover {\\n    text-decoration: none !important\\n  }\\n\\n  .xl\\\\:focus\\\\:underline:focus {\\n    text-decoration: underline !important\\n  }\\n\\n  .xl\\\\:focus\\\\:line-through:focus {\\n    text-decoration: line-through !important\\n  }\\n\\n  .xl\\\\:focus\\\\:no-underline:focus {\\n    text-decoration: none !important\\n  }\\n\\n  .xl\\\\:antialiased {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .xl\\\\:subpixel-antialiased {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .xl\\\\:hover\\\\:antialiased:hover {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .xl\\\\:hover\\\\:subpixel-antialiased:hover {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .xl\\\\:focus\\\\:antialiased:focus {\\n    -webkit-font-smoothing: antialiased !important;\\n    -moz-osx-font-smoothing: grayscale !important\\n  }\\n\\n  .xl\\\\:focus\\\\:subpixel-antialiased:focus {\\n    -webkit-font-smoothing: auto !important;\\n    -moz-osx-font-smoothing: auto !important\\n  }\\n\\n  .xl\\\\:select-none {\\n    -webkit-user-select: none !important;\\n       -moz-user-select: none !important;\\n        -ms-user-select: none !important;\\n            user-select: none !important\\n  }\\n\\n  .xl\\\\:select-text {\\n    -webkit-user-select: text !important;\\n       -moz-user-select: text !important;\\n        -ms-user-select: text !important;\\n            user-select: text !important\\n  }\\n\\n  .xl\\\\:select-all {\\n    -webkit-user-select: all !important;\\n       -moz-user-select: all !important;\\n        -ms-user-select: all !important;\\n            user-select: all !important\\n  }\\n\\n  .xl\\\\:select-auto {\\n    -webkit-user-select: auto !important;\\n       -moz-user-select: auto !important;\\n        -ms-user-select: auto !important;\\n            user-select: auto !important\\n  }\\n\\n  .xl\\\\:align-baseline {\\n    vertical-align: baseline !important\\n  }\\n\\n  .xl\\\\:align-top {\\n    vertical-align: top !important\\n  }\\n\\n  .xl\\\\:align-middle {\\n    vertical-align: middle !important\\n  }\\n\\n  .xl\\\\:align-bottom {\\n    vertical-align: bottom !important\\n  }\\n\\n  .xl\\\\:align-text-top {\\n    vertical-align: text-top !important\\n  }\\n\\n  .xl\\\\:align-text-bottom {\\n    vertical-align: text-bottom !important\\n  }\\n\\n  .xl\\\\:visible {\\n    visibility: visible !important\\n  }\\n\\n  .xl\\\\:invisible {\\n    visibility: hidden !important\\n  }\\n\\n  .xl\\\\:whitespace-normal {\\n    white-space: normal !important\\n  }\\n\\n  .xl\\\\:whitespace-no-wrap {\\n    white-space: nowrap !important\\n  }\\n\\n  .xl\\\\:whitespace-pre {\\n    white-space: pre !important\\n  }\\n\\n  .xl\\\\:whitespace-pre-line {\\n    white-space: pre-line !important\\n  }\\n\\n  .xl\\\\:whitespace-pre-wrap {\\n    white-space: pre-wrap !important\\n  }\\n\\n  .xl\\\\:break-normal {\\n    overflow-wrap: normal !important;\\n    word-break: normal !important\\n  }\\n\\n  .xl\\\\:break-words {\\n    overflow-wrap: break-word !important\\n  }\\n\\n  .xl\\\\:break-all {\\n    word-break: break-all !important\\n  }\\n\\n  .xl\\\\:truncate {\\n    overflow: hidden !important;\\n    text-overflow: ellipsis !important;\\n    white-space: nowrap !important\\n  }\\n\\n  .xl\\\\:w-1 {\\n    width: 0.25rem !important\\n  }\\n\\n  .xl\\\\:w-2 {\\n    width: 0.5rem !important\\n  }\\n\\n  .xl\\\\:w-3 {\\n    width: 0.75rem !important\\n  }\\n\\n  .xl\\\\:w-4 {\\n    width: 1rem !important\\n  }\\n\\n  .xl\\\\:w-5 {\\n    width: 1.25rem !important\\n  }\\n\\n  .xl\\\\:w-6 {\\n    width: 1.5rem !important\\n  }\\n\\n  .xl\\\\:w-8 {\\n    width: 2rem !important\\n  }\\n\\n  .xl\\\\:w-10 {\\n    width: 2.5rem !important\\n  }\\n\\n  .xl\\\\:w-12 {\\n    width: 3rem !important\\n  }\\n\\n  .xl\\\\:w-16 {\\n    width: 4rem !important\\n  }\\n\\n  .xl\\\\:w-24 {\\n    width: 6rem !important\\n  }\\n\\n  .xl\\\\:w-32 {\\n    width: 8rem !important\\n  }\\n\\n  .xl\\\\:w-48 {\\n    width: 12rem !important\\n  }\\n\\n  .xl\\\\:w-64 {\\n    width: 16rem !important\\n  }\\n\\n  .xl\\\\:w-auto {\\n    width: auto !important\\n  }\\n\\n  .xl\\\\:w-px {\\n    width: 1px !important\\n  }\\n\\n  .xl\\\\:w-1\\\\/2 {\\n    width: 50% !important\\n  }\\n\\n  .xl\\\\:w-1\\\\/3 {\\n    width: 33.33333% !important\\n  }\\n\\n  .xl\\\\:w-2\\\\/3 {\\n    width: 66.66667% !important\\n  }\\n\\n  .xl\\\\:w-1\\\\/4 {\\n    width: 25% !important\\n  }\\n\\n  .xl\\\\:w-3\\\\/4 {\\n    width: 75% !important\\n  }\\n\\n  .xl\\\\:w-1\\\\/5 {\\n    width: 20% !important\\n  }\\n\\n  .xl\\\\:w-2\\\\/5 {\\n    width: 40% !important\\n  }\\n\\n  .xl\\\\:w-3\\\\/5 {\\n    width: 60% !important\\n  }\\n\\n  .xl\\\\:w-4\\\\/5 {\\n    width: 80% !important\\n  }\\n\\n  .xl\\\\:w-1\\\\/6 {\\n    width: 16.66667% !important\\n  }\\n\\n  .xl\\\\:w-5\\\\/6 {\\n    width: 83.33333% !important\\n  }\\n\\n  .xl\\\\:w-1\\\\/12 {\\n    width: 8.33333% !important\\n  }\\n\\n  .xl\\\\:w-2\\\\/12 {\\n    width: 16.66667% !important\\n  }\\n\\n  .xl\\\\:w-3\\\\/12 {\\n    width: 25% !important\\n  }\\n\\n  .xl\\\\:w-4\\\\/12 {\\n    width: 33.33333% !important\\n  }\\n\\n  .xl\\\\:w-5\\\\/12 {\\n    width: 41.66667% !important\\n  }\\n\\n  .xl\\\\:w-6\\\\/12 {\\n    width: 50% !important\\n  }\\n\\n  .xl\\\\:w-7\\\\/12 {\\n    width: 58.33333% !important\\n  }\\n\\n  .xl\\\\:w-8\\\\/12 {\\n    width: 66.66667% !important\\n  }\\n\\n  .xl\\\\:w-9\\\\/12 {\\n    width: 75% !important\\n  }\\n\\n  .xl\\\\:w-10\\\\/12 {\\n    width: 83.33333% !important\\n  }\\n\\n  .xl\\\\:w-11\\\\/12 {\\n    width: 91.66667% !important\\n  }\\n\\n  .xl\\\\:w-full {\\n    width: 100% !important\\n  }\\n\\n  .xl\\\\:w-screen {\\n    width: 100vw !important\\n  }\\n\\n  .xl\\\\:z-0 {\\n    z-index: 0 !important\\n  }\\n\\n  .xl\\\\:z-10 {\\n    z-index: 10 !important\\n  }\\n\\n  .xl\\\\:z-20 {\\n    z-index: 20 !important\\n  }\\n\\n  .xl\\\\:z-30 {\\n    z-index: 30 !important\\n  }\\n\\n  .xl\\\\:z-40 {\\n    z-index: 40 !important\\n  }\\n\\n  .xl\\\\:z-50 {\\n    z-index: 50 !important\\n  }\\n\\n  .xl\\\\:z-auto {\\n    z-index: auto !important\\n  }\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL3NyYy9hc3NldHMvY3NzL21haW4uY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy9jc3MvbWFpbi5jc3M/MTQ3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi8qKlxcbiAqIFRoaXMgaW5qZWN0cyBUYWlsd2luZCdzIGJhc2Ugc3R5bGVzLCB3aGljaCBpcyBhIGNvbWJpbmF0aW9uIG9mXFxuICogTm9ybWFsaXplLmNzcyBhbmQgc29tZSBhZGRpdGlvbmFsIGJhc2Ugc3R5bGVzLlxcbiAqXFxuICogWW91IGNhbiBzZWUgdGhlIHN0eWxlcyBoZXJlOlxcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGNzcy90YWlsd2luZGNzcy9ibG9iL21hc3Rlci9jc3MvcHJlZmxpZ2h0LmNzc1xcbiAqXFxuICogSWYgdXNpbmcgYHBvc3Rjc3MtaW1wb3J0YCwgeW91IHNob3VsZCBpbXBvcnQgdGhpcyBsaW5lIGZyb20gaXQncyBvd24gZmlsZTpcXG4gKlxcbiAqIEBpbXBvcnQgXFxcIi4vdGFpbHdpbmQtcHJlZmxpZ2h0LmNzc1xcXCI7XFxuICpcXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGNzcy90YWlsd2luZGNzcy9pc3N1ZXMvNTMjaXNzdWVjb21tZW50LTM0MTQxMzYyMlxcbiAqL1xcblxcbi8qTk9URTogJ3ByZWZsaWdodCcgSVMgUkVOQU1FRCBUTyAnYmFzZScqL1xcblxcbi8qQHRhaWx3aW5kIGJhc2U7Ki9cXG5cXG4vKipcXG4gKiBIZXJlIHlvdSB3b3VsZCBhZGQgYW55IG9mIHlvdXIgY3VzdG9tIGNvbXBvbmVudCBjbGFzc2VzOyBzdHVmZiB0aGF0IHlvdSdkXFxuICogd2FudCBsb2FkZWQgKmJlZm9yZSogdGhlIHV0aWxpdGllcyBzbyB0aGF0IHRoZSB1dGlsaXRpZXMgY291bGQgc3RpbGxcXG4gKiBvdmVycmlkZSB0aGVtLlxcbiAqXFxuICogRXhhbXBsZTpcXG4gKlxcbiAqIC5idG4geyAuLi4gfVxcbiAqIC5mb3JtLWlucHV0IHsgLi4uIH1cXG4gKlxcbiAqIE9yIGlmIHVzaW5nIGEgcHJlcHJvY2Vzc29yIG9yIGBwb3N0Y3NzLWltcG9ydGA6XFxuICpcXG4gKiBAaW1wb3J0IFxcXCJjb21wb25lbnRzL2J1dHRvbnNcXFwiO1xcbiAqIEBpbXBvcnQgXFxcImNvbXBvbmVudHMvZm9ybXNcXFwiO1xcbiAqL1xcblxcbi5jb250YWluZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW1cXG59XFxuXFxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAuY29udGFpbmVyIHtcXG4gICAgbWF4LXdpZHRoOiA1NzZweFxcbiAgfVxcbn1cXG5cXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcXG4gIC5jb250YWluZXIge1xcbiAgICBtYXgtd2lkdGg6IDc2OHB4XFxuICB9XFxufVxcblxcbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xcbiAgLmNvbnRhaW5lciB7XFxuICAgIG1heC13aWR0aDogOTkycHhcXG4gIH1cXG59XFxuXFxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xcbiAgLmNvbnRhaW5lciB7XFxuICAgIG1heC13aWR0aDogMTIwMHB4XFxuICB9XFxufVxcblxcbi8qKlxcbiAqIFRoaXMgaW5qZWN0cyBhbGwgb2YgVGFpbHdpbmQncyB1dGlsaXR5IGNsYXNzZXMsIGdlbmVyYXRlZCBiYXNlZCBvbiB5b3VyXFxuICogY29uZmlnIGZpbGUuXFxuICpcXG4gKiBJZiB1c2luZyBgcG9zdGNzcy1pbXBvcnRgLCB5b3Ugc2hvdWxkIGltcG9ydCB0aGlzIGxpbmUgZnJvbSBpdCdzIG93biBmaWxlOlxcbiAqXFxuICogQGltcG9ydCBcXFwiLi90YWlsd2luZC11dGlsaXRpZXMuY3NzXFxcIjtcXG4gKlxcbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kY3NzL3RhaWx3aW5kY3NzL2lzc3Vlcy81MyNpc3N1ZWNvbW1lbnQtMzQxNDEzNjIyXFxuICovXFxuXFxuLnNyLW9ubHkge1xcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XFxuICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XFxuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XFxuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XFxuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApICFpbXBvcnRhbnQ7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XFxuICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ubm90LXNyLW9ubHkge1xcbiAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcXG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xcbiAgY2xpcDogYXV0byAhaW1wb3J0YW50O1xcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6c3Itb25seTpmb2N1cyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcXG4gIHdpZHRoOiAxcHggIWltcG9ydGFudDtcXG4gIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcXG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcXG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCkgIWltcG9ydGFudDtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcXG4gIGJvcmRlci13aWR0aDogMCAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6bm90LXNyLW9ubHk6Zm9jdXMge1xcbiAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcXG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xcbiAgY2xpcDogYXV0byAhaW1wb3J0YW50O1xcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50XFxufVxcblxcbi5hcHBlYXJhbmNlLW5vbmUge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgICAgYXBwZWFyYW5jZTogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi5iZy1maXhlZCB7XFxuICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkICFpbXBvcnRhbnRcXG59XFxuXFxuLmJnLWxvY2FsIHtcXG4gIGJhY2tncm91bmQtYXR0YWNobWVudDogbG9jYWwgIWltcG9ydGFudFxcbn1cXG5cXG4uYmctc2Nyb2xsIHtcXG4gIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsICFpbXBvcnRhbnRcXG59XFxuXFxuLmJnLXRyYW5zcGFyZW50IHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG59XFxuXFxuLmJnLWJsYWNrIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbn1cXG5cXG4uYmctd2hpdGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxufVxcblxcbi5iZy1ncmV5IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbn1cXG5cXG4uYmctZ3JleS1saWdodCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpiZy10cmFuc3BhcmVudDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6YmctYmxhY2s6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6Ymctd2hpdGU6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6YmctZ3JleTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpiZy1ncmV5LWxpZ2h0OmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOmJnLXRyYW5zcGFyZW50OmZvY3VzIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpiZy1ibGFjazpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpiZy13aGl0ZTpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpiZy1ncmV5OmZvY3VzIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOmJnLWdyZXktbGlnaHQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxufVxcblxcbi5iZy1hdXRvIHtcXG4gIGJhY2tncm91bmQtc2l6ZTogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5iZy1jb3ZlciB7XFxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyICFpbXBvcnRhbnRcXG59XFxuXFxuLmJnLWNvbnRhaW4ge1xcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci1jb2xsYXBzZSB7XFxuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci1zZXBhcmF0ZSB7XFxuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci10cmFuc3BhcmVudCB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci1ibGFjayB7XFxuICBib3JkZXItY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLXdoaXRlIHtcXG4gIGJvcmRlci1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxufVxcblxcbi5ib3JkZXItZ3JleSB7XFxuICBib3JkZXItY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLWdyZXktbGlnaHQge1xcbiAgYm9yZGVyLWNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpib3JkZXItdHJhbnNwYXJlbnQ6aG92ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6Ym9yZGVyLWJsYWNrOmhvdmVyIHtcXG4gIGJvcmRlci1jb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6Ym9yZGVyLXdoaXRlOmhvdmVyIHtcXG4gIGJvcmRlci1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6Ym9yZGVyLWdyZXk6aG92ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpib3JkZXItZ3JleS1saWdodDpob3ZlciB7XFxuICBib3JkZXItY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1ub25lIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1zbSB7XFxuICBib3JkZXItcmFkaXVzOiAuMTI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQge1xcbiAgYm9yZGVyLXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQtbGcge1xcbiAgYm9yZGVyLXJhZGl1czogLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1mdWxsIHtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweCAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXQtbm9uZSB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXItbm9uZSB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1iLW5vbmUge1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1sLW5vbmUge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXQtc20ge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjEyNXJlbSAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4xMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1yLXNtIHtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuMTI1cmVtICFpbXBvcnRhbnQ7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjEyNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLWItc20ge1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IC4xMjVyZW0gIWltcG9ydGFudDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IC4xMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1sLXNtIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4xMjVyZW0gIWltcG9ydGFudDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IC4xMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC10IHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXIge1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLWIge1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQtbCB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXQtbGcge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjVyZW0gIWltcG9ydGFudDtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXItbGcge1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC41cmVtICFpbXBvcnRhbnQ7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1iLWxnIHtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuNXJlbSAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1sLWxnIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC41cmVtICFpbXBvcnRhbnQ7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXQtZnVsbCB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA5OTk5cHggIWltcG9ydGFudDtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA5OTk5cHggIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1yLWZ1bGwge1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDk5OTlweCAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDk5OTlweCAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLWItZnVsbCB7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogOTk5OXB4ICFpbXBvcnRhbnQ7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA5OTk5cHggIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1sLWZ1bGwge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOTk5OXB4ICFpbXBvcnRhbnQ7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA5OTk5cHggIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC10bC1ub25lIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC10ci1ub25lIHtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQtYnItbm9uZSB7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLWJsLW5vbmUge1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXRsLXNtIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4xMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC10ci1zbSB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjEyNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLWJyLXNtIHtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMTI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQtYmwtc20ge1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjEyNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXRsIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXRyIHtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1iciB7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQtYmwge1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQtdGwtbGcge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC10ci1sZyB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1ici1sZyB7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucm91bmRlZC1ibC1sZyB7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5yb3VuZGVkLXRsLWZ1bGwge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOTk5OXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQtdHItZnVsbCB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogOTk5OXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQtYnItZnVsbCB7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogOTk5OXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLnJvdW5kZWQtYmwtZnVsbCB7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA5OTk5cHggIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLXNvbGlkIHtcXG4gIGJvcmRlci1zdHlsZTogc29saWQgIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLWRhc2hlZCB7XFxuICBib3JkZXItc3R5bGU6IGRhc2hlZCAhaW1wb3J0YW50XFxufVxcblxcbi5ib3JkZXItZG90dGVkIHtcXG4gIGJvcmRlci1zdHlsZTogZG90dGVkICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci1kb3VibGUge1xcbiAgYm9yZGVyLXN0eWxlOiBkb3VibGUgIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLW5vbmUge1xcbiAgYm9yZGVyLXN0eWxlOiBub25lICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci0wIHtcXG4gIGJvcmRlci13aWR0aDogMCAhaW1wb3J0YW50XFxufVxcblxcbi5ib3JkZXItMiB7XFxuICBib3JkZXItd2lkdGg6IDJweCAhaW1wb3J0YW50XFxufVxcblxcbi5ib3JkZXItNCB7XFxuICBib3JkZXItd2lkdGg6IDRweCAhaW1wb3J0YW50XFxufVxcblxcbi5ib3JkZXItOCB7XFxuICBib3JkZXItd2lkdGg6IDhweCAhaW1wb3J0YW50XFxufVxcblxcbi5ib3JkZXIge1xcbiAgYm9yZGVyLXdpZHRoOiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLXQtMCB7XFxuICBib3JkZXItdG9wLXdpZHRoOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci1yLTAge1xcbiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci1iLTAge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMCAhaW1wb3J0YW50XFxufVxcblxcbi5ib3JkZXItbC0wIHtcXG4gIGJvcmRlci1sZWZ0LXdpZHRoOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci10LTIge1xcbiAgYm9yZGVyLXRvcC13aWR0aDogMnB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci1yLTIge1xcbiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAycHggIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLWItMiB7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiAycHggIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLWwtMiB7XFxuICBib3JkZXItbGVmdC13aWR0aDogMnB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci10LTQge1xcbiAgYm9yZGVyLXRvcC13aWR0aDogNHB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci1yLTQge1xcbiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA0cHggIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLWItNCB7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiA0cHggIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLWwtNCB7XFxuICBib3JkZXItbGVmdC13aWR0aDogNHB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci10LTgge1xcbiAgYm9yZGVyLXRvcC13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci1yLTgge1xcbiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA4cHggIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLWItOCB7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiA4cHggIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLWwtOCB7XFxuICBib3JkZXItbGVmdC13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvcmRlci10IHtcXG4gIGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50XFxufVxcblxcbi5ib3JkZXItciB7XFxuICBib3JkZXItcmlnaHQtd2lkdGg6IDFweCAhaW1wb3J0YW50XFxufVxcblxcbi5ib3JkZXItYiB7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4uYm9yZGVyLWwge1xcbiAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweCAhaW1wb3J0YW50XFxufVxcblxcbi5jdXJzb3ItYXV0byB7XFxuICBjdXJzb3I6IGF1dG8gIWltcG9ydGFudFxcbn1cXG5cXG4uY3Vyc29yLWRlZmF1bHQge1xcbiAgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnRcXG59XFxuXFxuLmN1cnNvci1wb2ludGVyIHtcXG4gIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50XFxufVxcblxcbi5jdXJzb3Itd2FpdCB7XFxuICBjdXJzb3I6IHdhaXQgIWltcG9ydGFudFxcbn1cXG5cXG4uY3Vyc29yLXRleHQge1xcbiAgY3Vyc29yOiB0ZXh0ICFpbXBvcnRhbnRcXG59XFxuXFxuLmN1cnNvci1tb3ZlIHtcXG4gIGN1cnNvcjogbW92ZSAhaW1wb3J0YW50XFxufVxcblxcbi5jdXJzb3Itbm90LWFsbG93ZWQge1xcbiAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50XFxufVxcblxcbi5ibG9jayB7XFxuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50XFxufVxcblxcbi5pbmxpbmUtYmxvY2sge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnRcXG59XFxuXFxuLmlubGluZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudFxcbn1cXG5cXG4uZmxleCB7XFxuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnRcXG59XFxuXFxuLmlubGluZS1mbGV4IHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnRcXG59XFxuXFxuLnRhYmxlIHtcXG4gIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnRcXG59XFxuXFxuLnRhYmxlLXJvdyB7XFxuICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudFxcbn1cXG5cXG4udGFibGUtY2VsbCB7XFxuICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnRcXG59XFxuXFxuLmhpZGRlbiB7XFxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnRcXG59XFxuXFxuLmZsZXgtcm93IHtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudFxcbn1cXG5cXG4uZmxleC1yb3ctcmV2ZXJzZSB7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudFxcbn1cXG5cXG4uZmxleC1jb2wge1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50XFxufVxcblxcbi5mbGV4LWNvbC1yZXZlcnNlIHtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50XFxufVxcblxcbi5mbGV4LXdyYXAge1xcbiAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnRcXG59XFxuXFxuLmZsZXgtd3JhcC1yZXZlcnNlIHtcXG4gIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnRcXG59XFxuXFxuLmZsZXgtbm8td3JhcCB7XFxuICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50XFxufVxcblxcbi5pdGVtcy1zdGFydCB7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50XFxufVxcblxcbi5pdGVtcy1lbmQge1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnRcXG59XFxuXFxuLml0ZW1zLWNlbnRlciB7XFxuICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnRcXG59XFxuXFxuLml0ZW1zLWJhc2VsaW5lIHtcXG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50XFxufVxcblxcbi5pdGVtcy1zdHJldGNoIHtcXG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnRcXG59XFxuXFxuLnNlbGYtYXV0byB7XFxuICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnRcXG59XFxuXFxuLnNlbGYtc3RhcnQge1xcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50XFxufVxcblxcbi5zZWxmLWVuZCB7XFxuICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50XFxufVxcblxcbi5zZWxmLWNlbnRlciB7XFxuICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudFxcbn1cXG5cXG4uc2VsZi1zdHJldGNoIHtcXG4gIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudFxcbn1cXG5cXG4uanVzdGlmeS1zdGFydCB7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudFxcbn1cXG5cXG4uanVzdGlmeS1lbmQge1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50XFxufVxcblxcbi5qdXN0aWZ5LWNlbnRlciB7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50XFxufVxcblxcbi5qdXN0aWZ5LWJldHdlZW4ge1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnRcXG59XFxuXFxuLmp1c3RpZnktYXJvdW5kIHtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnRcXG59XFxuXFxuLmNvbnRlbnQtY2VudGVyIHtcXG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50XFxufVxcblxcbi5jb250ZW50LXN0YXJ0IHtcXG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudFxcbn1cXG5cXG4uY29udGVudC1lbmQge1xcbiAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudFxcbn1cXG5cXG4uY29udGVudC1iZXR3ZWVuIHtcXG4gIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudFxcbn1cXG5cXG4uY29udGVudC1hcm91bmQge1xcbiAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnRcXG59XFxuXFxuLmZsZXgtMSB7XFxuICBmbGV4OiAxIDEgMCUgIWltcG9ydGFudFxcbn1cXG5cXG4uZmxleC1hdXRvIHtcXG4gIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnRcXG59XFxuXFxuLmZsZXgtaW5pdGlhbCB7XFxuICBmbGV4OiAwIDEgYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5mbGV4LW5vbmUge1xcbiAgZmxleDogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi5mbGV4LWdyb3ctMCB7XFxuICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4uZmxleC1ncm93IHtcXG4gIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50XFxufVxcblxcbi5mbGV4LXNocmluay0wIHtcXG4gIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmZsZXgtc2hyaW5rIHtcXG4gIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnRcXG59XFxuXFxuLm9yZGVyLTEge1xcbiAgb3JkZXI6IDEgIWltcG9ydGFudFxcbn1cXG5cXG4ub3JkZXItMiB7XFxuICBvcmRlcjogMiAhaW1wb3J0YW50XFxufVxcblxcbi5vcmRlci0zIHtcXG4gIG9yZGVyOiAzICFpbXBvcnRhbnRcXG59XFxuXFxuLm9yZGVyLTQge1xcbiAgb3JkZXI6IDQgIWltcG9ydGFudFxcbn1cXG5cXG4ub3JkZXItNSB7XFxuICBvcmRlcjogNSAhaW1wb3J0YW50XFxufVxcblxcbi5vcmRlci02IHtcXG4gIG9yZGVyOiA2ICFpbXBvcnRhbnRcXG59XFxuXFxuLm9yZGVyLWZpcnN0IHtcXG4gIG9yZGVyOiAtMSAhaW1wb3J0YW50XFxufVxcblxcbi5vcmRlci1sYXN0IHtcXG4gIG9yZGVyOiA5OTkgIWltcG9ydGFudFxcbn1cXG5cXG4ub3JkZXItbm9ybWFsIHtcXG4gIG9yZGVyOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpvcmRlci0xOmhvdmVyIHtcXG4gIG9yZGVyOiAxICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpvcmRlci0yOmhvdmVyIHtcXG4gIG9yZGVyOiAyICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpvcmRlci0zOmhvdmVyIHtcXG4gIG9yZGVyOiAzICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpvcmRlci00OmhvdmVyIHtcXG4gIG9yZGVyOiA0ICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpvcmRlci01OmhvdmVyIHtcXG4gIG9yZGVyOiA1ICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpvcmRlci02OmhvdmVyIHtcXG4gIG9yZGVyOiA2ICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpvcmRlci1maXJzdDpob3ZlciB7XFxuICBvcmRlcjogLTEgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOm9yZGVyLWxhc3Q6aG92ZXIge1xcbiAgb3JkZXI6IDk5OSAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6b3JkZXItbm9ybWFsOmhvdmVyIHtcXG4gIG9yZGVyOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpvcmRlci0xOmZvY3VzIHtcXG4gIG9yZGVyOiAxICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpvcmRlci0yOmZvY3VzIHtcXG4gIG9yZGVyOiAyICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpvcmRlci0zOmZvY3VzIHtcXG4gIG9yZGVyOiAzICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpvcmRlci00OmZvY3VzIHtcXG4gIG9yZGVyOiA0ICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpvcmRlci01OmZvY3VzIHtcXG4gIG9yZGVyOiA1ICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpvcmRlci02OmZvY3VzIHtcXG4gIG9yZGVyOiA2ICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpvcmRlci1maXJzdDpmb2N1cyB7XFxuICBvcmRlcjogLTEgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOm9yZGVyLWxhc3Q6Zm9jdXMge1xcbiAgb3JkZXI6IDk5OSAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6b3JkZXItbm9ybWFsOmZvY3VzIHtcXG4gIG9yZGVyOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmZsb2F0LXJpZ2h0IHtcXG4gIGZsb2F0OiByaWdodCAhaW1wb3J0YW50XFxufVxcblxcbi5mbG9hdC1sZWZ0IHtcXG4gIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnRcXG59XFxuXFxuLmZsb2F0LW5vbmUge1xcbiAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudFxcbn1cXG5cXG4uY2xlYXJmaXg6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCIgIWltcG9ydGFudDtcXG4gIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7XFxuICBjbGVhcjogYm90aCAhaW1wb3J0YW50XFxufVxcblxcbi5mb250LWxpZ2h0IHtcXG4gIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9udC1ub3JtYWwge1xcbiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50XFxufVxcblxcbi5mb250LW1lZGl1bSB7XFxuICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvbnQtc2VtaWJvbGQge1xcbiAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50XFxufVxcblxcbi5mb250LWJvbGQge1xcbiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50XFxufVxcblxcbi5mb250LWV4dHJhYm9sZCB7XFxuICBmb250LXdlaWdodDogODAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvbnQtYmxhY2sge1xcbiAgZm9udC13ZWlnaHQ6IDkwMCAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6Zm9udC1saWdodDpob3ZlciB7XFxuICBmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpmb250LW5vcm1hbDpob3ZlciB7XFxuICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpmb250LW1lZGl1bTpob3ZlciB7XFxuICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpmb250LXNlbWlib2xkOmhvdmVyIHtcXG4gIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOmZvbnQtYm9sZDpob3ZlciB7XFxuICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpmb250LWV4dHJhYm9sZDpob3ZlciB7XFxuICBmb250LXdlaWdodDogODAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpmb250LWJsYWNrOmhvdmVyIHtcXG4gIGZvbnQtd2VpZ2h0OiA5MDAgIWltcG9ydGFudFxcbn1cXG5cXG4uaC0xIHtcXG4gIGhlaWdodDogMC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5oLTIge1xcbiAgaGVpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uaC0zIHtcXG4gIGhlaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5oLTQge1xcbiAgaGVpZ2h0OiAxcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLmgtNSB7XFxuICBoZWlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uaC02IHtcXG4gIGhlaWdodDogMS41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLmgtOCB7XFxuICBoZWlnaHQ6IDJyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uaC0xMCB7XFxuICBoZWlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5oLTEyIHtcXG4gIGhlaWdodDogM3JlbSAhaW1wb3J0YW50XFxufVxcblxcbi5oLTE2IHtcXG4gIGhlaWdodDogNHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5oLTI0IHtcXG4gIGhlaWdodDogNnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5oLTMyIHtcXG4gIGhlaWdodDogOHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5oLTQ4IHtcXG4gIGhlaWdodDogMTJyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uaC02NCB7XFxuICBoZWlnaHQ6IDE2cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLmgtYXV0byB7XFxuICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudFxcbn1cXG5cXG4uaC1weCB7XFxuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50XFxufVxcblxcbi5oLWZ1bGwge1xcbiAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnRcXG59XFxuXFxuLmgtc2NyZWVuIHtcXG4gIGhlaWdodDogMTAwdmggIWltcG9ydGFudFxcbn1cXG5cXG4ubGVhZGluZy1ub25lIHtcXG4gIGxpbmUtaGVpZ2h0OiAxICFpbXBvcnRhbnRcXG59XFxuXFxuLmxlYWRpbmctdGlnaHQge1xcbiAgbGluZS1oZWlnaHQ6IDEuMjUgIWltcG9ydGFudFxcbn1cXG5cXG4ubGVhZGluZy1ub3JtYWwge1xcbiAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50XFxufVxcblxcbi5sZWFkaW5nLWxvb3NlIHtcXG4gIGxpbmUtaGVpZ2h0OiAyICFpbXBvcnRhbnRcXG59XFxuXFxuLmxpc3QtaW5zaWRlIHtcXG4gIGxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lkZSAhaW1wb3J0YW50XFxufVxcblxcbi5saXN0LW91dHNpZGUge1xcbiAgbGlzdC1zdHlsZS1wb3NpdGlvbjogb3V0c2lkZSAhaW1wb3J0YW50XFxufVxcblxcbi5tLTAge1xcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLm0tMSB7XFxuICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubS0yIHtcXG4gIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm0tMyB7XFxuICBtYXJnaW46IDAuNzVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubS00IHtcXG4gIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tLTUge1xcbiAgbWFyZ2luOiAxLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm0tNiB7XFxuICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tLTgge1xcbiAgbWFyZ2luOiAycmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm0tMTAge1xcbiAgbWFyZ2luOiAyLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubS0xMiB7XFxuICBtYXJnaW46IDNyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubS0xNiB7XFxuICBtYXJnaW46IDRyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubS0yMCB7XFxuICBtYXJnaW46IDVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubS0yNCB7XFxuICBtYXJnaW46IDZyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubS0zMiB7XFxuICBtYXJnaW46IDhyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubS1hdXRvIHtcXG4gIG1hcmdpbjogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5tLXB4IHtcXG4gIG1hcmdpbjogMXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLm0tYmFzZSB7XFxuICBtYXJnaW46IDIuMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbS1weCB7XFxuICBtYXJnaW46IC0xcHggIWltcG9ydGFudFxcbn1cXG5cXG4uLW0tMSB7XFxuICBtYXJnaW46IC0wLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLi1tLTIge1xcbiAgbWFyZ2luOiAtMC41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLi1tLTMge1xcbiAgbWFyZ2luOiAtMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbS00IHtcXG4gIG1hcmdpbjogLTFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXktMCB7XFxuICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLm14LTAge1xcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcXG4gIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50XFxufVxcblxcbi5teS0xIHtcXG4gIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXgtMSB7XFxuICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm15LTIge1xcbiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXgtMiB7XFxuICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teS0zIHtcXG4gIG1hcmdpbi10b3A6IDAuNzVyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXgtMyB7XFxuICBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm15LTQge1xcbiAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teC00IHtcXG4gIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXktNSB7XFxuICBtYXJnaW4tdG9wOiAxLjI1cmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm14LTUge1xcbiAgbWFyZ2luLWxlZnQ6IDEuMjVyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1yaWdodDogMS4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teS02IHtcXG4gIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm14LTYge1xcbiAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXktOCB7XFxuICBtYXJnaW4tdG9wOiAycmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiAycmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm14LTgge1xcbiAgbWFyZ2luLWxlZnQ6IDJyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1yaWdodDogMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teS0xMCB7XFxuICBtYXJnaW4tdG9wOiAyLjVyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1ib3R0b206IDIuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teC0xMCB7XFxuICBtYXJnaW4tbGVmdDogMi41cmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tcmlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teS0xMiB7XFxuICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm14LTEyIHtcXG4gIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXktMTYge1xcbiAgbWFyZ2luLXRvcDogNHJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLWJvdHRvbTogNHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teC0xNiB7XFxuICBtYXJnaW4tbGVmdDogNHJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiA0cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm15LTIwIHtcXG4gIG1hcmdpbi10b3A6IDVyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1ib3R0b206IDVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXgtMjAge1xcbiAgbWFyZ2luLWxlZnQ6IDVyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1yaWdodDogNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teS0yNCB7XFxuICBtYXJnaW4tdG9wOiA2cmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiA2cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm14LTI0IHtcXG4gIG1hcmdpbi1sZWZ0OiA2cmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tcmlnaHQ6IDZyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXktMzIge1xcbiAgbWFyZ2luLXRvcDogOHJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLWJvdHRvbTogOHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teC0zMiB7XFxuICBtYXJnaW4tbGVmdDogOHJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiA4cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm15LWF1dG8ge1xcbiAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5teC1hdXRvIHtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudFxcbn1cXG5cXG4ubXktcHgge1xcbiAgbWFyZ2luLXRvcDogMXB4ICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4ubXgtcHgge1xcbiAgbWFyZ2luLWxlZnQ6IDFweCAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4ubXktYmFzZSB7XFxuICBtYXJnaW4tdG9wOiAyLjJyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5teC1iYXNlIHtcXG4gIG1hcmdpbi1sZWZ0OiAyLjJyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1yaWdodDogMi4ycmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLi1teS1weCB7XFxuICBtYXJnaW4tdG9wOiAtMXB4ICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiAtMXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLi1teC1weCB7XFxuICBtYXJnaW4tbGVmdDogLTFweCAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiAtMXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLi1teS0xIHtcXG4gIG1hcmdpbi10b3A6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiAtMC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbXgtMSB7XFxuICBtYXJnaW4tbGVmdDogLTAuMjVyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1yaWdodDogLTAuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uLW15LTIge1xcbiAgbWFyZ2luLXRvcDogLTAuNXJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLWJvdHRvbTogLTAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbXgtMiB7XFxuICBtYXJnaW4tbGVmdDogLTAuNXJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiAtMC41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLi1teS0zIHtcXG4gIG1hcmdpbi10b3A6IC0wLjc1cmVtICFpbXBvcnRhbnQ7XFxuICBtYXJnaW4tYm90dG9tOiAtMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbXgtMyB7XFxuICBtYXJnaW4tbGVmdDogLTAuNzVyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1yaWdodDogLTAuNzVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uLW15LTQge1xcbiAgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDtcXG4gIG1hcmdpbi1ib3R0b206IC0xcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLi1teC00IHtcXG4gIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50O1xcbiAgbWFyZ2luLXJpZ2h0OiAtMXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tdC0wIHtcXG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ubXItMCB7XFxuICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ubWItMCB7XFxuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLm1sLTAge1xcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ubXQtMSB7XFxuICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1yLTEge1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1iLTEge1xcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tbC0xIHtcXG4gIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm10LTIge1xcbiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1yLTIge1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWItMiB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWwtMiB7XFxuICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm10LTMge1xcbiAgbWFyZ2luLXRvcDogMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tci0zIHtcXG4gIG1hcmdpbi1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYi0zIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWwtMyB7XFxuICBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tdC00IHtcXG4gIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXItNCB7XFxuICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWItNCB7XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1sLTQge1xcbiAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXQtNSB7XFxuICBtYXJnaW4tdG9wOiAxLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1yLTUge1xcbiAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1iLTUge1xcbiAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tbC01IHtcXG4gIG1hcmdpbi1sZWZ0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm10LTYge1xcbiAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1yLTYge1xcbiAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWItNiB7XFxuICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWwtNiB7XFxuICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm10LTgge1xcbiAgbWFyZ2luLXRvcDogMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tci04IHtcXG4gIG1hcmdpbi1yaWdodDogMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYi04IHtcXG4gIG1hcmdpbi1ib3R0b206IDJyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWwtOCB7XFxuICBtYXJnaW4tbGVmdDogMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tdC0xMCB7XFxuICBtYXJnaW4tdG9wOiAyLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXItMTAge1xcbiAgbWFyZ2luLXJpZ2h0OiAyLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWItMTAge1xcbiAgbWFyZ2luLWJvdHRvbTogMi41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1sLTEwIHtcXG4gIG1hcmdpbi1sZWZ0OiAyLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXQtMTIge1xcbiAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tci0xMiB7XFxuICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWItMTIge1xcbiAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tbC0xMiB7XFxuICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tdC0xNiB7XFxuICBtYXJnaW4tdG9wOiA0cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1yLTE2IHtcXG4gIG1hcmdpbi1yaWdodDogNHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYi0xNiB7XFxuICBtYXJnaW4tYm90dG9tOiA0cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1sLTE2IHtcXG4gIG1hcmdpbi1sZWZ0OiA0cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm10LTIwIHtcXG4gIG1hcmdpbi10b3A6IDVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXItMjAge1xcbiAgbWFyZ2luLXJpZ2h0OiA1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1iLTIwIHtcXG4gIG1hcmdpbi1ib3R0b206IDVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWwtMjAge1xcbiAgbWFyZ2luLWxlZnQ6IDVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXQtMjQge1xcbiAgbWFyZ2luLXRvcDogNnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tci0yNCB7XFxuICBtYXJnaW4tcmlnaHQ6IDZyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWItMjQge1xcbiAgbWFyZ2luLWJvdHRvbTogNnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tbC0yNCB7XFxuICBtYXJnaW4tbGVmdDogNnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tdC0zMiB7XFxuICBtYXJnaW4tdG9wOiA4cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1yLTMyIHtcXG4gIG1hcmdpbi1yaWdodDogOHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYi0zMiB7XFxuICBtYXJnaW4tYm90dG9tOiA4cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1sLTMyIHtcXG4gIG1hcmdpbi1sZWZ0OiA4cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm10LWF1dG8ge1xcbiAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5tci1hdXRvIHtcXG4gIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5tYi1hdXRvIHtcXG4gIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudFxcbn1cXG5cXG4ubWwtYXV0byB7XFxuICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5tdC1weCB7XFxuICBtYXJnaW4tdG9wOiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4ubXItcHgge1xcbiAgbWFyZ2luLXJpZ2h0OiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4ubWItcHgge1xcbiAgbWFyZ2luLWJvdHRvbTogMXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLm1sLXB4IHtcXG4gIG1hcmdpbi1sZWZ0OiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4ubXQtYmFzZSB7XFxuICBtYXJnaW4tdG9wOiAyLjJyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubXItYmFzZSB7XFxuICBtYXJnaW4tcmlnaHQ6IDIuMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYi1iYXNlIHtcXG4gIG1hcmdpbi1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tbC1iYXNlIHtcXG4gIG1hcmdpbi1sZWZ0OiAyLjJyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uLW10LXB4IHtcXG4gIG1hcmdpbi10b3A6IC0xcHggIWltcG9ydGFudFxcbn1cXG5cXG4uLW1yLXB4IHtcXG4gIG1hcmdpbi1yaWdodDogLTFweCAhaW1wb3J0YW50XFxufVxcblxcbi4tbWItcHgge1xcbiAgbWFyZ2luLWJvdHRvbTogLTFweCAhaW1wb3J0YW50XFxufVxcblxcbi4tbWwtcHgge1xcbiAgbWFyZ2luLWxlZnQ6IC0xcHggIWltcG9ydGFudFxcbn1cXG5cXG4uLW10LTEge1xcbiAgbWFyZ2luLXRvcDogLTAuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uLW1yLTEge1xcbiAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbWItMSB7XFxuICBtYXJnaW4tYm90dG9tOiAtMC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbWwtMSB7XFxuICBtYXJnaW4tbGVmdDogLTAuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uLW10LTIge1xcbiAgbWFyZ2luLXRvcDogLTAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbXItMiB7XFxuICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4uLW1iLTIge1xcbiAgbWFyZ2luLWJvdHRvbTogLTAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbWwtMiB7XFxuICBtYXJnaW4tbGVmdDogLTAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbXQtMyB7XFxuICBtYXJnaW4tdG9wOiAtMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbXItMyB7XFxuICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLi1tYi0zIHtcXG4gIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLi1tbC0zIHtcXG4gIG1hcmdpbi1sZWZ0OiAtMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbXQtNCB7XFxuICBtYXJnaW4tdG9wOiAtMXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi4tbXItNCB7XFxuICBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLi1tYi00IHtcXG4gIG1hcmdpbi1ib3R0b206IC0xcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLi1tbC00IHtcXG4gIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYXgtaC1mdWxsIHtcXG4gIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudFxcbn1cXG5cXG4ubWF4LWgtc2NyZWVuIHtcXG4gIG1heC1oZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnRcXG59XFxuXFxuLm1heC13LXhzIHtcXG4gIG1heC13aWR0aDogMjByZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWF4LXctc20ge1xcbiAgbWF4LXdpZHRoOiAzMHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYXgtdy1tZCB7XFxuICBtYXgtd2lkdGg6IDQwcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLm1heC13LWxnIHtcXG4gIG1heC13aWR0aDogNTByZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWF4LXcteGwge1xcbiAgbWF4LXdpZHRoOiA2MHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYXgtdy0yeGwge1xcbiAgbWF4LXdpZHRoOiA3MHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYXgtdy0zeGwge1xcbiAgbWF4LXdpZHRoOiA4MHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYXgtdy00eGwge1xcbiAgbWF4LXdpZHRoOiA5MHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5tYXgtdy01eGwge1xcbiAgbWF4LXdpZHRoOiAxMDByZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ubWF4LXctZnVsbCB7XFxuICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudFxcbn1cXG5cXG4ubWluLWgtMCB7XFxuICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLm1pbi1oLWZ1bGwge1xcbiAgbWluLWhlaWdodDogMTAwJSAhaW1wb3J0YW50XFxufVxcblxcbi5taW4taC1zY3JlZW4ge1xcbiAgbWluLWhlaWdodDogMTAwdmggIWltcG9ydGFudFxcbn1cXG5cXG4ubWluLXctMCB7XFxuICBtaW4td2lkdGg6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ubWluLXctZnVsbCB7XFxuICBtaW4td2lkdGg6IDEwMCUgIWltcG9ydGFudFxcbn1cXG5cXG4ub2JqZWN0LWNvbnRhaW4ge1xcbiAgLW8tb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50O1xcbiAgICAgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50XFxufVxcblxcbi5vYmplY3QtY292ZXIge1xcbiAgLW8tb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDtcXG4gICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC1maWxsIHtcXG4gIC1vLW9iamVjdC1maXQ6IGZpbGwgIWltcG9ydGFudDtcXG4gICAgIG9iamVjdC1maXQ6IGZpbGwgIWltcG9ydGFudFxcbn1cXG5cXG4ub2JqZWN0LW5vbmUge1xcbiAgLW8tb2JqZWN0LWZpdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgb2JqZWN0LWZpdDogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi5vYmplY3Qtc2NhbGUtZG93biB7XFxuICAtby1vYmplY3QtZml0OiBzY2FsZS1kb3duICFpbXBvcnRhbnQ7XFxuICAgICBvYmplY3QtZml0OiBzY2FsZS1kb3duICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC1ib3R0b20ge1xcbiAgLW8tb2JqZWN0LXBvc2l0aW9uOiBib3R0b20gIWltcG9ydGFudDtcXG4gICAgIG9iamVjdC1wb3NpdGlvbjogYm90dG9tICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC1jZW50ZXIge1xcbiAgLW8tb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC1sZWZ0IHtcXG4gIC1vLW9iamVjdC1wb3NpdGlvbjogbGVmdCAhaW1wb3J0YW50O1xcbiAgICAgb2JqZWN0LXBvc2l0aW9uOiBsZWZ0ICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC1sZWZ0LWJvdHRvbSB7XFxuICAtby1vYmplY3QtcG9zaXRpb246IGxlZnQgYm90dG9tICFpbXBvcnRhbnQ7XFxuICAgICBvYmplY3QtcG9zaXRpb246IGxlZnQgYm90dG9tICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC1sZWZ0LXRvcCB7XFxuICAtby1vYmplY3QtcG9zaXRpb246IGxlZnQgdG9wICFpbXBvcnRhbnQ7XFxuICAgICBvYmplY3QtcG9zaXRpb246IGxlZnQgdG9wICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC1yaWdodCB7XFxuICAtby1vYmplY3QtcG9zaXRpb246IHJpZ2h0ICFpbXBvcnRhbnQ7XFxuICAgICBvYmplY3QtcG9zaXRpb246IHJpZ2h0ICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC1yaWdodC1ib3R0b20ge1xcbiAgLW8tb2JqZWN0LXBvc2l0aW9uOiByaWdodCBib3R0b20gIWltcG9ydGFudDtcXG4gICAgIG9iamVjdC1wb3NpdGlvbjogcmlnaHQgYm90dG9tICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC1yaWdodC10b3Age1xcbiAgLW8tb2JqZWN0LXBvc2l0aW9uOiByaWdodCB0b3AgIWltcG9ydGFudDtcXG4gICAgIG9iamVjdC1wb3NpdGlvbjogcmlnaHQgdG9wICFpbXBvcnRhbnRcXG59XFxuXFxuLm9iamVjdC10b3Age1xcbiAgLW8tb2JqZWN0LXBvc2l0aW9uOiB0b3AgIWltcG9ydGFudDtcXG4gICAgIG9iamVjdC1wb3NpdGlvbjogdG9wICFpbXBvcnRhbnRcXG59XFxuXFxuLm9wYWNpdHktMCB7XFxuICBvcGFjaXR5OiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLm9wYWNpdHktMjUge1xcbiAgb3BhY2l0eTogMC4yNSAhaW1wb3J0YW50XFxufVxcblxcbi5vcGFjaXR5LTUwIHtcXG4gIG9wYWNpdHk6IDAuNSAhaW1wb3J0YW50XFxufVxcblxcbi5vcGFjaXR5LTc1IHtcXG4gIG9wYWNpdHk6IDAuNzUgIWltcG9ydGFudFxcbn1cXG5cXG4ub3BhY2l0eS0xMDAge1xcbiAgb3BhY2l0eTogMSAhaW1wb3J0YW50XFxufVxcblxcbi5vdXRsaW5lLW5vbmUge1xcbiAgb3V0bGluZTogMCAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6b3V0bGluZS1ub25lOmZvY3VzIHtcXG4gIG91dGxpbmU6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ub3ZlcmZsb3ctYXV0byB7XFxuICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5vdmVyZmxvdy1oaWRkZW4ge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50XFxufVxcblxcbi5vdmVyZmxvdy12aXNpYmxlIHtcXG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnRcXG59XFxuXFxuLm92ZXJmbG93LXNjcm9sbCB7XFxuICBvdmVyZmxvdzogc2Nyb2xsICFpbXBvcnRhbnRcXG59XFxuXFxuLm92ZXJmbG93LXgtYXV0byB7XFxuICBvdmVyZmxvdy14OiBhdXRvICFpbXBvcnRhbnRcXG59XFxuXFxuLm92ZXJmbG93LXktYXV0byB7XFxuICBvdmVyZmxvdy15OiBhdXRvICFpbXBvcnRhbnRcXG59XFxuXFxuLm92ZXJmbG93LXgtaGlkZGVuIHtcXG4gIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50XFxufVxcblxcbi5vdmVyZmxvdy15LWhpZGRlbiB7XFxuICBvdmVyZmxvdy15OiBoaWRkZW4gIWltcG9ydGFudFxcbn1cXG5cXG4ub3ZlcmZsb3cteC12aXNpYmxlIHtcXG4gIG92ZXJmbG93LXg6IHZpc2libGUgIWltcG9ydGFudFxcbn1cXG5cXG4ub3ZlcmZsb3cteS12aXNpYmxlIHtcXG4gIG92ZXJmbG93LXk6IHZpc2libGUgIWltcG9ydGFudFxcbn1cXG5cXG4ub3ZlcmZsb3cteC1zY3JvbGwge1xcbiAgb3ZlcmZsb3cteDogc2Nyb2xsICFpbXBvcnRhbnRcXG59XFxuXFxuLm92ZXJmbG93LXktc2Nyb2xsIHtcXG4gIG92ZXJmbG93LXk6IHNjcm9sbCAhaW1wb3J0YW50XFxufVxcblxcbi5zY3JvbGxpbmctdG91Y2gge1xcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoICFpbXBvcnRhbnRcXG59XFxuXFxuLnNjcm9sbGluZy1hdXRvIHtcXG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiBhdXRvICFpbXBvcnRhbnRcXG59XFxuXFxuLnAtMCB7XFxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLnAtMSB7XFxuICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnAtMiB7XFxuICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucC0zIHtcXG4gIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucC00IHtcXG4gIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucC01IHtcXG4gIHBhZGRpbmc6IDEuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucC02IHtcXG4gIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wLTgge1xcbiAgcGFkZGluZzogMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wLTEwIHtcXG4gIHBhZGRpbmc6IDIuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wLTEyIHtcXG4gIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucC0xNiB7XFxuICBwYWRkaW5nOiA0cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnAtMjAge1xcbiAgcGFkZGluZzogNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wLTI0IHtcXG4gIHBhZGRpbmc6IDZyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucC0zMiB7XFxuICBwYWRkaW5nOiA4cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnAtcHgge1xcbiAgcGFkZGluZzogMXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLnAtYmFzZSB7XFxuICBwYWRkaW5nOiAyLjJyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHktMCB7XFxuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ucHgtMCB7XFxuICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcXG4gIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ucHktMSB7XFxuICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHgtMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHktMiB7XFxuICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB4LTIge1xcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weS0zIHtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weC0zIHtcXG4gIHBhZGRpbmctbGVmdDogMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weS00IHtcXG4gIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weC00IHtcXG4gIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weS01IHtcXG4gIHBhZGRpbmctdG9wOiAxLjI1cmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLWJvdHRvbTogMS4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weC01IHtcXG4gIHBhZGRpbmctbGVmdDogMS4yNXJlbSAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1yaWdodDogMS4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weS02IHtcXG4gIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcXG4gIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHgtNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB5LTgge1xcbiAgcGFkZGluZy10b3A6IDJyZW0gIWltcG9ydGFudDtcXG4gIHBhZGRpbmctYm90dG9tOiAycmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB4LTgge1xcbiAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLXJpZ2h0OiAycmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB5LTEwIHtcXG4gIHBhZGRpbmctdG9wOiAyLjVyZW0gIWltcG9ydGFudDtcXG4gIHBhZGRpbmctYm90dG9tOiAyLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHgtMTAge1xcbiAgcGFkZGluZy1sZWZ0OiAyLjVyZW0gIWltcG9ydGFudDtcXG4gIHBhZGRpbmctcmlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weS0xMiB7XFxuICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHgtMTIge1xcbiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB5LTE2IHtcXG4gIHBhZGRpbmctdG9wOiA0cmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLWJvdHRvbTogNHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weC0xNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDRyZW0gIWltcG9ydGFudDtcXG4gIHBhZGRpbmctcmlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHktMjAge1xcbiAgcGFkZGluZy10b3A6IDVyZW0gIWltcG9ydGFudDtcXG4gIHBhZGRpbmctYm90dG9tOiA1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB4LTIwIHtcXG4gIHBhZGRpbmctbGVmdDogNXJlbSAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1yaWdodDogNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weS0yNCB7XFxuICBwYWRkaW5nLXRvcDogNnJlbSAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1ib3R0b206IDZyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHgtMjQge1xcbiAgcGFkZGluZy1sZWZ0OiA2cmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLXJpZ2h0OiA2cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB5LTMyIHtcXG4gIHBhZGRpbmctdG9wOiA4cmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLWJvdHRvbTogOHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weC0zMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDhyZW0gIWltcG9ydGFudDtcXG4gIHBhZGRpbmctcmlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHktcHgge1xcbiAgcGFkZGluZy10b3A6IDFweCAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1ib3R0b206IDFweCAhaW1wb3J0YW50XFxufVxcblxcbi5weC1weCB7XFxuICBwYWRkaW5nLWxlZnQ6IDFweCAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLnB5LWJhc2Uge1xcbiAgcGFkZGluZy10b3A6IDIuMnJlbSAhaW1wb3J0YW50O1xcbiAgcGFkZGluZy1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5weC1iYXNlIHtcXG4gIHBhZGRpbmctbGVmdDogMi4ycmVtICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nLXJpZ2h0OiAyLjJyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHQtMCB7XFxuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50XFxufVxcblxcbi5wci0wIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4ucGItMCB7XFxuICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50XFxufVxcblxcbi5wbC0wIHtcXG4gIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50XFxufVxcblxcbi5wdC0xIHtcXG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnByLTEge1xcbiAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wYi0xIHtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsLTEge1xcbiAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB0LTIge1xcbiAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wci0yIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wYi0yIHtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGwtMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wdC0zIHtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnByLTMge1xcbiAgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wYi0zIHtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsLTMge1xcbiAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB0LTQge1xcbiAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHItNCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnBiLTQge1xcbiAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGwtNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHQtNSB7XFxuICBwYWRkaW5nLXRvcDogMS4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wci01IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGItNSB7XFxuICBwYWRkaW5nLWJvdHRvbTogMS4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wbC01IHtcXG4gIHBhZGRpbmctbGVmdDogMS4yNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wdC02IHtcXG4gIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHItNiB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGItNiB7XFxuICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsLTYge1xcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucHQtOCB7XFxuICBwYWRkaW5nLXRvcDogMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wci04IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGItOCB7XFxuICBwYWRkaW5nLWJvdHRvbTogMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wbC04IHtcXG4gIHBhZGRpbmctbGVmdDogMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wdC0xMCB7XFxuICBwYWRkaW5nLXRvcDogMi41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnByLTEwIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wYi0xMCB7XFxuICBwYWRkaW5nLWJvdHRvbTogMi41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsLTEwIHtcXG4gIHBhZGRpbmctbGVmdDogMi41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB0LTEyIHtcXG4gIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnByLTEyIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGItMTIge1xcbiAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGwtMTIge1xcbiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB0LTE2IHtcXG4gIHBhZGRpbmctdG9wOiA0cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnByLTE2IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGItMTYge1xcbiAgcGFkZGluZy1ib3R0b206IDRyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGwtMTYge1xcbiAgcGFkZGluZy1sZWZ0OiA0cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB0LTIwIHtcXG4gIHBhZGRpbmctdG9wOiA1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnByLTIwIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGItMjAge1xcbiAgcGFkZGluZy1ib3R0b206IDVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGwtMjAge1xcbiAgcGFkZGluZy1sZWZ0OiA1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB0LTI0IHtcXG4gIHBhZGRpbmctdG9wOiA2cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnByLTI0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDZyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGItMjQge1xcbiAgcGFkZGluZy1ib3R0b206IDZyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGwtMjQge1xcbiAgcGFkZGluZy1sZWZ0OiA2cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB0LTMyIHtcXG4gIHBhZGRpbmctdG9wOiA4cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnByLTMyIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGItMzIge1xcbiAgcGFkZGluZy1ib3R0b206IDhyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4ucGwtMzIge1xcbiAgcGFkZGluZy1sZWZ0OiA4cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnB0LXB4IHtcXG4gIHBhZGRpbmctdG9wOiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4ucHItcHgge1xcbiAgcGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLnBiLXB4IHtcXG4gIHBhZGRpbmctYm90dG9tOiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4ucGwtcHgge1xcbiAgcGFkZGluZy1sZWZ0OiAxcHggIWltcG9ydGFudFxcbn1cXG5cXG4ucHQtYmFzZSB7XFxuICBwYWRkaW5nLXRvcDogMi4ycmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnByLWJhc2Uge1xcbiAgcGFkZGluZy1yaWdodDogMi4ycmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnBiLWJhc2Uge1xcbiAgcGFkZGluZy1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5wbC1iYXNlIHtcXG4gIHBhZGRpbmctbGVmdDogMi4ycmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci10cmFuc3BhcmVudDo6LW1vei1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbn1cXG5cXG4ucGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci10cmFuc3BhcmVudDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci10cmFuc3BhcmVudDo6cGxhY2Vob2xkZXIge1xcbiAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsYWNlaG9sZGVyLWJsYWNrOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsYWNlaG9sZGVyLWJsYWNrOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsYWNlaG9sZGVyLWJsYWNrOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci1ibGFjazo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsYWNlaG9sZGVyLWJsYWNrOjpwbGFjZWhvbGRlciB7XFxuICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci13aGl0ZTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci13aGl0ZTo6LW1vei1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci13aGl0ZTotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbn1cXG5cXG4ucGxhY2Vob2xkZXItd2hpdGU6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci13aGl0ZTo6cGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbn1cXG5cXG4ucGxhY2Vob2xkZXItZ3JleTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci1ncmV5OjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsYWNlaG9sZGVyLWdyZXk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsYWNlaG9sZGVyLWdyZXk6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci1ncmV5OjpwbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxufVxcblxcbi5wbGFjZWhvbGRlci1ncmV5LWxpZ2h0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbn1cXG5cXG4ucGxhY2Vob2xkZXItZ3JleS1saWdodDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbn1cXG5cXG4ucGxhY2Vob2xkZXItZ3JleS1saWdodDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG59XFxuXFxuLnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6OnBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6cGxhY2Vob2xkZXItYmxhY2s6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6cGxhY2Vob2xkZXItd2hpdGU6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5OmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxufVxcblxcbi5wb2ludGVyLWV2ZW50cy1ub25lIHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnRcXG59XFxuXFxuLnBvaW50ZXItZXZlbnRzLWF1dG8ge1xcbiAgcG9pbnRlci1ldmVudHM6IGF1dG8gIWltcG9ydGFudFxcbn1cXG5cXG4uc3RhdGljIHtcXG4gIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudFxcbn1cXG5cXG4uZml4ZWQge1xcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnRcXG59XFxuXFxuLmFic29sdXRlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50XFxufVxcblxcbi5yZWxhdGl2ZSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudFxcbn1cXG5cXG4uc3RpY2t5IHtcXG4gIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreSAhaW1wb3J0YW50O1xcbiAgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50XFxufVxcblxcbi5pbnNldC0wIHtcXG4gIHRvcDogMCAhaW1wb3J0YW50O1xcbiAgcmlnaHQ6IDAgIWltcG9ydGFudDtcXG4gIGJvdHRvbTogMCAhaW1wb3J0YW50O1xcbiAgbGVmdDogMCAhaW1wb3J0YW50XFxufVxcblxcbi5pbnNldC1hdXRvIHtcXG4gIHRvcDogYXV0byAhaW1wb3J0YW50O1xcbiAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcXG4gIGJvdHRvbTogYXV0byAhaW1wb3J0YW50O1xcbiAgbGVmdDogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5pbnNldC15LTAge1xcbiAgdG9wOiAwICFpbXBvcnRhbnQ7XFxuICBib3R0b206IDAgIWltcG9ydGFudFxcbn1cXG5cXG4uaW5zZXQteC0wIHtcXG4gIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XFxuICBsZWZ0OiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmluc2V0LXktYXV0byB7XFxuICB0b3A6IGF1dG8gIWltcG9ydGFudDtcXG4gIGJvdHRvbTogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5pbnNldC14LWF1dG8ge1xcbiAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcXG4gIGxlZnQ6IGF1dG8gIWltcG9ydGFudFxcbn1cXG5cXG4udG9wLTAge1xcbiAgdG9wOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLnJpZ2h0LTAge1xcbiAgcmlnaHQ6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4uYm90dG9tLTAge1xcbiAgYm90dG9tOiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLmxlZnQtMCB7XFxuICBsZWZ0OiAwICFpbXBvcnRhbnRcXG59XFxuXFxuLnRvcC1hdXRvIHtcXG4gIHRvcDogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5yaWdodC1hdXRvIHtcXG4gIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnRcXG59XFxuXFxuLmJvdHRvbS1hdXRvIHtcXG4gIGJvdHRvbTogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5sZWZ0LWF1dG8ge1xcbiAgbGVmdDogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5yZXNpemUtbm9uZSB7XFxuICByZXNpemU6IG5vbmUgIWltcG9ydGFudFxcbn1cXG5cXG4ucmVzaXplLXkge1xcbiAgcmVzaXplOiB2ZXJ0aWNhbCAhaW1wb3J0YW50XFxufVxcblxcbi5yZXNpemUteCB7XFxuICByZXNpemU6IGhvcml6b250YWwgIWltcG9ydGFudFxcbn1cXG5cXG4ucmVzaXplIHtcXG4gIHJlc2l6ZTogYm90aCAhaW1wb3J0YW50XFxufVxcblxcbi5zaGFkb3cge1xcbiAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjEwKSAhaW1wb3J0YW50XFxufVxcblxcbi5zaGFkb3ctbWQge1xcbiAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxufVxcblxcbi5zaGFkb3ctbGcge1xcbiAgYm94LXNoYWRvdzogMCAxNXB4IDMwcHggMCByZ2JhKDAsMCwwLDAuMTEpLCAwIDVweCAxNXB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxufVxcblxcbi5zaGFkb3ctaW5uZXIge1xcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA2KSAhaW1wb3J0YW50XFxufVxcblxcbi5zaGFkb3cteGwge1xcbiAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMTBweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjA0KSAhaW1wb3J0YW50XFxufVxcblxcbi5zaGFkb3ctMnhsIHtcXG4gIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSkgIWltcG9ydGFudFxcbn1cXG5cXG4uc2hhZG93LW91dGxpbmUge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTIsMTQ0LDIyMCwwLjUpICFpbXBvcnRhbnRcXG59XFxuXFxuLnNoYWRvdy1ub25lIHtcXG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudFxcbn1cXG5cXG4uc2hhZG93LWRyb3Age1xcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IDAgcmdiYSgwLDAsMCwwLjE0KSAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6c2hhZG93OmhvdmVyIHtcXG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4xMCkgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOnNoYWRvdy1tZDpob3ZlciB7XFxuICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDAsMCwwLDAuMTIpLCAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpzaGFkb3ctbGc6aG92ZXIge1xcbiAgYm94LXNoYWRvdzogMCAxNXB4IDMwcHggMCByZ2JhKDAsMCwwLDAuMTEpLCAwIDVweCAxNXB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6c2hhZG93LWlubmVyOmhvdmVyIHtcXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wNikgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOnNoYWRvdy14bDpob3ZlciB7XFxuICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxMHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMDQpICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpzaGFkb3ctMnhsOmhvdmVyIHtcXG4gIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSkgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOnNoYWRvdy1vdXRsaW5lOmhvdmVyIHtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLDE0NCwyMjAsMC41KSAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6c2hhZG93LW5vbmU6aG92ZXIge1xcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6c2hhZG93LWRyb3A6aG92ZXIge1xcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IDAgcmdiYSgwLDAsMCwwLjE0KSAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6c2hhZG93OmZvY3VzIHtcXG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4xMCkgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnNoYWRvdy1tZDpmb2N1cyB7XFxuICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDAsMCwwLDAuMTIpLCAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpzaGFkb3ctbGc6Zm9jdXMge1xcbiAgYm94LXNoYWRvdzogMCAxNXB4IDMwcHggMCByZ2JhKDAsMCwwLDAuMTEpLCAwIDVweCAxNXB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6c2hhZG93LWlubmVyOmZvY3VzIHtcXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wNikgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnNoYWRvdy14bDpmb2N1cyB7XFxuICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxMHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMDQpICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpzaGFkb3ctMnhsOmZvY3VzIHtcXG4gIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSkgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnNoYWRvdy1vdXRsaW5lOmZvY3VzIHtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLDE0NCwyMjAsMC41KSAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6c2hhZG93LW5vbmU6Zm9jdXMge1xcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6c2hhZG93LWRyb3A6Zm9jdXMge1xcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IDAgcmdiYSgwLDAsMCwwLjE0KSAhaW1wb3J0YW50XFxufVxcblxcbi5maWxsLWN1cnJlbnQge1xcbiAgZmlsbDogY3VycmVudENvbG9yICFpbXBvcnRhbnRcXG59XFxuXFxuLnN0cm9rZS1jdXJyZW50IHtcXG4gIHN0cm9rZTogY3VycmVudENvbG9yICFpbXBvcnRhbnRcXG59XFxuXFxuLnRhYmxlLWF1dG8ge1xcbiAgdGFibGUtbGF5b3V0OiBhdXRvICFpbXBvcnRhbnRcXG59XFxuXFxuLnRhYmxlLWZpeGVkIHtcXG4gIHRhYmxlLWxheW91dDogZml4ZWQgIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC1sZWZ0IHtcXG4gIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC1jZW50ZXIge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnRcXG59XFxuXFxuLnRleHQtcmlnaHQge1xcbiAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC1qdXN0aWZ5IHtcXG4gIHRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC10cmFuc3BhcmVudCB7XFxuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC1ibGFjayB7XFxuICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxufVxcblxcbi50ZXh0LXdoaXRlIHtcXG4gIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG59XFxuXFxuLnRleHQtZ3JleSB7XFxuICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxufVxcblxcbi50ZXh0LWdyZXktbGlnaHQge1xcbiAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOnRleHQtdHJhbnNwYXJlbnQ6aG92ZXIge1xcbiAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDp0ZXh0LWJsYWNrOmhvdmVyIHtcXG4gIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDp0ZXh0LXdoaXRlOmhvdmVyIHtcXG4gIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDp0ZXh0LWdyZXk6aG92ZXIge1xcbiAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOnRleHQtZ3JleS1saWdodDpob3ZlciB7XFxuICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6dGV4dC10cmFuc3BhcmVudDpmb2N1cyB7XFxuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnRleHQtYmxhY2s6Zm9jdXMge1xcbiAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnRleHQtd2hpdGU6Zm9jdXMge1xcbiAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOnRleHQtZ3JleTpmb2N1cyB7XFxuICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6dGV4dC1ncmV5LWxpZ2h0OmZvY3VzIHtcXG4gIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG59XFxuXFxuLnRleHQteHMge1xcbiAgZm9udC1zaXplOiAuNzVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC1zbSB7XFxuICBmb250LXNpemU6IC44NzVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC1iYXNlIHtcXG4gIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi50ZXh0LWxnIHtcXG4gIGZvbnQtc2l6ZTogMS4xMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC14bCB7XFxuICBmb250LXNpemU6IDEuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC0yeGwge1xcbiAgZm9udC1zaXplOiAxLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC0zeGwge1xcbiAgZm9udC1zaXplOiAxLjg3NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi50ZXh0LTR4bCB7XFxuICBmb250LXNpemU6IDIuMjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4udGV4dC01eGwge1xcbiAgZm9udC1zaXplOiAzcmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnRleHQtNnhsIHtcXG4gIGZvbnQtc2l6ZTogNHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi5pdGFsaWMge1xcbiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnRcXG59XFxuXFxuLm5vdC1pdGFsaWMge1xcbiAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDppdGFsaWM6aG92ZXIge1xcbiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpub3QtaXRhbGljOmhvdmVyIHtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6aXRhbGljOmZvY3VzIHtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6bm90LWl0YWxpYzpmb2N1cyB7XFxuICBmb250LXN0eWxlOiBub3JtYWwgIWltcG9ydGFudFxcbn1cXG5cXG4udXBwZXJjYXNlIHtcXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudFxcbn1cXG5cXG4ubG93ZXJjYXNlIHtcXG4gIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudFxcbn1cXG5cXG4uY2FwaXRhbGl6ZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50XFxufVxcblxcbi5ub3JtYWwtY2FzZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6dXBwZXJjYXNlOmhvdmVyIHtcXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOmxvd2VyY2FzZTpob3ZlciB7XFxuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpjYXBpdGFsaXplOmhvdmVyIHtcXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpub3JtYWwtY2FzZTpob3ZlciB7XFxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6dXBwZXJjYXNlOmZvY3VzIHtcXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOmxvd2VyY2FzZTpmb2N1cyB7XFxuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpjYXBpdGFsaXplOmZvY3VzIHtcXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDpub3JtYWwtY2FzZTpmb2N1cyB7XFxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi51bmRlcmxpbmUge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudFxcbn1cXG5cXG4ubGluZS10aHJvdWdoIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoICFpbXBvcnRhbnRcXG59XFxuXFxuLm5vLXVuZGVybGluZSB7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOnVuZGVybGluZTpob3ZlciB7XFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6bGluZS10aHJvdWdoOmhvdmVyIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoICFpbXBvcnRhbnRcXG59XFxuXFxuLmhvdmVyXFxcXDpuby11bmRlcmxpbmU6aG92ZXIge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDp1bmRlcmxpbmU6Zm9jdXMge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudFxcbn1cXG5cXG4uZm9jdXNcXFxcOmxpbmUtdGhyb3VnaDpmb2N1cyB7XFxuICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaCAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6bm8tdW5kZXJsaW5lOmZvY3VzIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi5hbnRpYWxpYXNlZCB7XFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZCAhaW1wb3J0YW50O1xcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZSAhaW1wb3J0YW50XFxufVxcblxcbi5zdWJwaXhlbC1hbnRpYWxpYXNlZCB7XFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAtbW96LW9zeC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50XFxufVxcblxcbi5ob3ZlclxcXFw6YW50aWFsaWFzZWQ6aG92ZXIge1xcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQgIWltcG9ydGFudDtcXG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGUgIWltcG9ydGFudFxcbn1cXG5cXG4uaG92ZXJcXFxcOnN1YnBpeGVsLWFudGlhbGlhc2VkOmhvdmVyIHtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudDtcXG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnRcXG59XFxuXFxuLmZvY3VzXFxcXDphbnRpYWxpYXNlZDpmb2N1cyB7XFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZCAhaW1wb3J0YW50O1xcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZSAhaW1wb3J0YW50XFxufVxcblxcbi5mb2N1c1xcXFw6c3VicGl4ZWwtYW50aWFsaWFzZWQ6Zm9jdXMge1xcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50O1xcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudFxcbn1cXG5cXG4uc2VsZWN0LW5vbmUge1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50XFxufVxcblxcbi5zZWxlY3QtdGV4dCB7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICAgICAtbW96LXVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICAgICAgLW1zLXVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnRcXG59XFxuXFxuLnNlbGVjdC1hbGwge1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogYWxsICFpbXBvcnRhbnQ7XFxuICAgICAtbW96LXVzZXItc2VsZWN0OiBhbGwgIWltcG9ydGFudDtcXG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IGFsbCAhaW1wb3J0YW50O1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogYWxsICFpbXBvcnRhbnRcXG59XFxuXFxuLnNlbGVjdC1hdXRvIHtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgICAgICAgdXNlci1zZWxlY3Q6IGF1dG8gIWltcG9ydGFudFxcbn1cXG5cXG4uYWxpZ24tYmFzZWxpbmUge1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnRcXG59XFxuXFxuLmFsaWduLXRvcCB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogdG9wICFpbXBvcnRhbnRcXG59XFxuXFxuLmFsaWduLW1pZGRsZSB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnRcXG59XFxuXFxuLmFsaWduLWJvdHRvbSB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnRcXG59XFxuXFxuLmFsaWduLXRleHQtdG9wIHtcXG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50XFxufVxcblxcbi5hbGlnbi10ZXh0LWJvdHRvbSB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudFxcbn1cXG5cXG4udmlzaWJsZSB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnRcXG59XFxuXFxuLmludmlzaWJsZSB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudFxcbn1cXG5cXG4ud2hpdGVzcGFjZS1ub3JtYWwge1xcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50XFxufVxcblxcbi53aGl0ZXNwYWNlLW5vLXdyYXAge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50XFxufVxcblxcbi53aGl0ZXNwYWNlLXByZSB7XFxuICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnRcXG59XFxuXFxuLndoaXRlc3BhY2UtcHJlLWxpbmUge1xcbiAgd2hpdGUtc3BhY2U6IHByZS1saW5lICFpbXBvcnRhbnRcXG59XFxuXFxuLndoaXRlc3BhY2UtcHJlLXdyYXAge1xcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnRcXG59XFxuXFxuLmJyZWFrLW5vcm1hbCB7XFxuICBvdmVyZmxvdy13cmFwOiBub3JtYWwgIWltcG9ydGFudDtcXG4gIHdvcmQtYnJlYWs6IG5vcm1hbCAhaW1wb3J0YW50XFxufVxcblxcbi5icmVhay13b3JkcyB7XFxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnRcXG59XFxuXFxuLmJyZWFrLWFsbCB7XFxuICB3b3JkLWJyZWFrOiBicmVhay1hbGwgIWltcG9ydGFudFxcbn1cXG5cXG4udHJ1bmNhdGUge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgIWltcG9ydGFudDtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudFxcbn1cXG5cXG4udy0xIHtcXG4gIHdpZHRoOiAwLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMiB7XFxuICB3aWR0aDogMC41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMyB7XFxuICB3aWR0aDogMC43NXJlbSAhaW1wb3J0YW50XFxufVxcblxcbi53LTQge1xcbiAgd2lkdGg6IDFyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4udy01IHtcXG4gIHdpZHRoOiAxLjI1cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnctNiB7XFxuICB3aWR0aDogMS41cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnctOCB7XFxuICB3aWR0aDogMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi53LTEwIHtcXG4gIHdpZHRoOiAyLjVyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4udy0xMiB7XFxuICB3aWR0aDogM3JlbSAhaW1wb3J0YW50XFxufVxcblxcbi53LTE2IHtcXG4gIHdpZHRoOiA0cmVtICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMjQge1xcbiAgd2lkdGg6IDZyZW0gIWltcG9ydGFudFxcbn1cXG5cXG4udy0zMiB7XFxuICB3aWR0aDogOHJlbSAhaW1wb3J0YW50XFxufVxcblxcbi53LTQ4IHtcXG4gIHdpZHRoOiAxMnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi53LTY0IHtcXG4gIHdpZHRoOiAxNnJlbSAhaW1wb3J0YW50XFxufVxcblxcbi53LWF1dG8ge1xcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudFxcbn1cXG5cXG4udy1weCB7XFxuICB3aWR0aDogMXB4ICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMVxcXFwvMiB7XFxuICB3aWR0aDogNTAlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMVxcXFwvMyB7XFxuICB3aWR0aDogMzMuMzMzMzMlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMlxcXFwvMyB7XFxuICB3aWR0aDogNjYuNjY2NjclICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMVxcXFwvNCB7XFxuICB3aWR0aDogMjUlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctM1xcXFwvNCB7XFxuICB3aWR0aDogNzUlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMVxcXFwvNSB7XFxuICB3aWR0aDogMjAlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMlxcXFwvNSB7XFxuICB3aWR0aDogNDAlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctM1xcXFwvNSB7XFxuICB3aWR0aDogNjAlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctNFxcXFwvNSB7XFxuICB3aWR0aDogODAlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMVxcXFwvNiB7XFxuICB3aWR0aDogMTYuNjY2NjclICFpbXBvcnRhbnRcXG59XFxuXFxuLnctNVxcXFwvNiB7XFxuICB3aWR0aDogODMuMzMzMzMlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMVxcXFwvMTIge1xcbiAgd2lkdGg6IDguMzMzMzMlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctMlxcXFwvMTIge1xcbiAgd2lkdGg6IDE2LjY2NjY3JSAhaW1wb3J0YW50XFxufVxcblxcbi53LTNcXFxcLzEyIHtcXG4gIHdpZHRoOiAyNSUgIWltcG9ydGFudFxcbn1cXG5cXG4udy00XFxcXC8xMiB7XFxuICB3aWR0aDogMzMuMzMzMzMlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctNVxcXFwvMTIge1xcbiAgd2lkdGg6IDQxLjY2NjY3JSAhaW1wb3J0YW50XFxufVxcblxcbi53LTZcXFxcLzEyIHtcXG4gIHdpZHRoOiA1MCUgIWltcG9ydGFudFxcbn1cXG5cXG4udy03XFxcXC8xMiB7XFxuICB3aWR0aDogNTguMzMzMzMlICFpbXBvcnRhbnRcXG59XFxuXFxuLnctOFxcXFwvMTIge1xcbiAgd2lkdGg6IDY2LjY2NjY3JSAhaW1wb3J0YW50XFxufVxcblxcbi53LTlcXFxcLzEyIHtcXG4gIHdpZHRoOiA3NSUgIWltcG9ydGFudFxcbn1cXG5cXG4udy0xMFxcXFwvMTIge1xcbiAgd2lkdGg6IDgzLjMzMzMzJSAhaW1wb3J0YW50XFxufVxcblxcbi53LTExXFxcXC8xMiB7XFxuICB3aWR0aDogOTEuNjY2NjclICFpbXBvcnRhbnRcXG59XFxuXFxuLnctZnVsbCB7XFxuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50XFxufVxcblxcbi53LXNjcmVlbiB7XFxuICB3aWR0aDogMTAwdncgIWltcG9ydGFudFxcbn1cXG5cXG4uei0wIHtcXG4gIHotaW5kZXg6IDAgIWltcG9ydGFudFxcbn1cXG5cXG4uei0xMCB7XFxuICB6LWluZGV4OiAxMCAhaW1wb3J0YW50XFxufVxcblxcbi56LTIwIHtcXG4gIHotaW5kZXg6IDIwICFpbXBvcnRhbnRcXG59XFxuXFxuLnotMzAge1xcbiAgei1pbmRleDogMzAgIWltcG9ydGFudFxcbn1cXG5cXG4uei00MCB7XFxuICB6LWluZGV4OiA0MCAhaW1wb3J0YW50XFxufVxcblxcbi56LTUwIHtcXG4gIHotaW5kZXg6IDUwICFpbXBvcnRhbnRcXG59XFxuXFxuLnotYXV0byB7XFxuICB6LWluZGV4OiBhdXRvICFpbXBvcnRhbnRcXG59XFxuXFxuLyoqXFxuICogSGVyZSB5b3Ugd291bGQgYWRkIGFueSBjdXN0b20gdXRpbGl0aWVzIHlvdSBuZWVkIHRoYXQgZG9uJ3QgY29tZSBvdXQgb2YgdGhlXFxuICogYm94IHdpdGggVGFpbHdpbmQuXFxuICpcXG4gKiBFeGFtcGxlIDpcXG4gKlxcbiAqIC5iZy1wYXR0ZXJuLWdyYXBoLXBhcGVyIHsgLi4uIH1cXG4gKiAuc2tldy00NSB7IC4uLiB9XFxuICpcXG4gKiBPciBpZiB1c2luZyBhIHByZXByb2Nlc3NvciBvciBgcG9zdGNzcy1pbXBvcnRgOlxcbiAqXFxuICogQGltcG9ydCBcXFwidXRpbGl0aWVzL2JhY2tncm91bmQtcGF0dGVybnNcXFwiO1xcbiAqIEBpbXBvcnQgXFxcInV0aWxpdGllcy9za2V3LXRyYW5zZm9ybXNcXFwiO1xcbiAqL1xcblxcbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xcbiAgLnNtXFxcXDpzci1vbmx5IHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XFxuICAgIHdpZHRoOiAxcHggIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiAxcHggIWltcG9ydGFudDtcXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xcbiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApICFpbXBvcnRhbnQ7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcXG4gICAgYm9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bm90LXNyLW9ubHkge1xcbiAgICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XFxuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbiAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xcbiAgICBjbGlwOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6c3Itb25seTpmb2N1cyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XFxuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcXG4gICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XFxuICAgIGJvcmRlci13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpub3Qtc3Itb25seTpmb2N1cyB7XFxuICAgIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcXG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICAgIGNsaXA6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmFwcGVhcmFuY2Utbm9uZSB7XFxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YmctZml4ZWQge1xcbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YmctbG9jYWwge1xcbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGxvY2FsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ymctc2Nyb2xsIHtcXG4gICAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBzY3JvbGwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpiZy10cmFuc3BhcmVudCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YmctYmxhY2sge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ymctd2hpdGUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YmctZ3JleSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpiZy1ncmV5LWxpZ2h0IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpiZy10cmFuc3BhcmVudDpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOmJnLWJsYWNrOmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpiZy13aGl0ZTpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6YmctZ3JleTpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6YmctZ3JleS1saWdodDpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6YmctdHJhbnNwYXJlbnQ6Zm9jdXMge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpiZy1ibGFjazpmb2N1cyB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6Ymctd2hpdGU6Zm9jdXMge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOmJnLWdyZXk6Zm9jdXMge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOmJnLWdyZXktbGlnaHQ6Zm9jdXMge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YmctYXV0byB7XFxuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJnLWNvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJnLWNvbnRhaW4ge1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItdHJhbnNwYXJlbnQge1xcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLWJsYWNrIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLXdoaXRlIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLWdyZXkge1xcbiAgICBib3JkZXItY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItZ3JleS1saWdodCB7XFxuICAgIGJvcmRlci1jb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpib3JkZXItdHJhbnNwYXJlbnQ6aG92ZXIge1xcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOmJvcmRlci1ibGFjazpob3ZlciB7XFxuICAgIGJvcmRlci1jb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpib3JkZXItd2hpdGU6aG92ZXIge1xcbiAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6Ym9yZGVyLWdyZXk6aG92ZXIge1xcbiAgICBib3JkZXItY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6Ym9yZGVyLWdyZXktbGlnaHQ6aG92ZXIge1xcbiAgICBib3JkZXItY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItc29saWQge1xcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLWRhc2hlZCB7XFxuICAgIGJvcmRlci1zdHlsZTogZGFzaGVkICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLWRvdHRlZCB7XFxuICAgIGJvcmRlci1zdHlsZTogZG90dGVkICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLWRvdWJsZSB7XFxuICAgIGJvcmRlci1zdHlsZTogZG91YmxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLW5vbmUge1xcbiAgICBib3JkZXItc3R5bGU6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItMCB7XFxuICAgIGJvcmRlci13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJvcmRlci0yIHtcXG4gICAgYm9yZGVyLXdpZHRoOiAycHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItNCB7XFxuICAgIGJvcmRlci13aWR0aDogNHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLTgge1xcbiAgICBib3JkZXItd2lkdGg6IDhweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJvcmRlciB7XFxuICAgIGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLXQtMCB7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItci0wIHtcXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLWItMCB7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItbC0wIHtcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItdC0yIHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMnB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLXItMiB7XFxuICAgIGJvcmRlci1yaWdodC13aWR0aDogMnB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLWItMiB7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDJweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJvcmRlci1sLTIge1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMnB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLXQtNCB7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDRweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJvcmRlci1yLTQge1xcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDRweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJvcmRlci1iLTQge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiA0cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItbC00IHtcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDRweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJvcmRlci10LTgge1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiA4cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItci04IHtcXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA4cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItYi04IHtcXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Ym9yZGVyLWwtOCB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiA4cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItdCB7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJvcmRlci1yIHtcXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3JkZXItYiB7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJvcmRlci1sIHtcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJsb2NrIHtcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDppbmxpbmUtYmxvY2sge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDppbmxpbmUge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmbGV4IHtcXG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmlubGluZS1mbGV4IHtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0YWJsZSB7XFxuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGFibGUtcm93IHtcXG4gICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGFibGUtY2VsbCB7XFxuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpoaWRkZW4ge1xcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6ZmxleC1yb3cge1xcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6ZmxleC1yb3ctcmV2ZXJzZSB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZsZXgtY29sIHtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZsZXgtY29sLXJldmVyc2Uge1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmbGV4LXdyYXAge1xcbiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmbGV4LXdyYXAtcmV2ZXJzZSB7XFxuICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6ZmxleC1uby13cmFwIHtcXG4gICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDppdGVtcy1zdGFydCB7XFxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aXRlbXMtZW5kIHtcXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aXRlbXMtY2VudGVyIHtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOml0ZW1zLWJhc2VsaW5lIHtcXG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aXRlbXMtc3RyZXRjaCB7XFxuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c2VsZi1hdXRvIHtcXG4gICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnNlbGYtc3RhcnQge1xcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c2VsZi1lbmQge1xcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnNlbGYtY2VudGVyIHtcXG4gICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c2VsZi1zdHJldGNoIHtcXG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmp1c3RpZnktc3RhcnQge1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpqdXN0aWZ5LWVuZCB7XFxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpqdXN0aWZ5LWNlbnRlciB7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6anVzdGlmeS1iZXR3ZWVuIHtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6anVzdGlmeS1hcm91bmQge1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmNvbnRlbnQtY2VudGVyIHtcXG4gICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Y29udGVudC1zdGFydCB7XFxuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpjb250ZW50LWVuZCB7XFxuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Y29udGVudC1iZXR3ZWVuIHtcXG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmNvbnRlbnQtYXJvdW5kIHtcXG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6ZmxleC0xIHtcXG4gICAgZmxleDogMSAxIDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6ZmxleC1hdXRvIHtcXG4gICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmbGV4LWluaXRpYWwge1xcbiAgICBmbGV4OiAwIDEgYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZsZXgtbm9uZSB7XFxuICAgIGZsZXg6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmbGV4LWdyb3ctMCB7XFxuICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZsZXgtZ3JvdyB7XFxuICAgIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZsZXgtc2hyaW5rLTAge1xcbiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZsZXgtc2hyaW5rIHtcXG4gICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvcmRlci0xIHtcXG4gICAgb3JkZXI6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvcmRlci0yIHtcXG4gICAgb3JkZXI6IDIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvcmRlci0zIHtcXG4gICAgb3JkZXI6IDMgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvcmRlci00IHtcXG4gICAgb3JkZXI6IDQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvcmRlci01IHtcXG4gICAgb3JkZXI6IDUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvcmRlci02IHtcXG4gICAgb3JkZXI6IDYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvcmRlci1maXJzdCB7XFxuICAgIG9yZGVyOiAtMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9yZGVyLWxhc3Qge1xcbiAgICBvcmRlcjogOTk5ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6b3JkZXItbm9ybWFsIHtcXG4gICAgb3JkZXI6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6b3JkZXItMTpob3ZlciB7XFxuICAgIG9yZGVyOiAxICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOm9yZGVyLTI6aG92ZXIge1xcbiAgICBvcmRlcjogMiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpvcmRlci0zOmhvdmVyIHtcXG4gICAgb3JkZXI6IDMgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6b3JkZXItNDpob3ZlciB7XFxuICAgIG9yZGVyOiA0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOm9yZGVyLTU6aG92ZXIge1xcbiAgICBvcmRlcjogNSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpvcmRlci02OmhvdmVyIHtcXG4gICAgb3JkZXI6IDYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6b3JkZXItZmlyc3Q6aG92ZXIge1xcbiAgICBvcmRlcjogLTEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6b3JkZXItbGFzdDpob3ZlciB7XFxuICAgIG9yZGVyOiA5OTkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6b3JkZXItbm9ybWFsOmhvdmVyIHtcXG4gICAgb3JkZXI6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6b3JkZXItMTpmb2N1cyB7XFxuICAgIG9yZGVyOiAxICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOm9yZGVyLTI6Zm9jdXMge1xcbiAgICBvcmRlcjogMiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpvcmRlci0zOmZvY3VzIHtcXG4gICAgb3JkZXI6IDMgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6b3JkZXItNDpmb2N1cyB7XFxuICAgIG9yZGVyOiA0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOm9yZGVyLTU6Zm9jdXMge1xcbiAgICBvcmRlcjogNSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpvcmRlci02OmZvY3VzIHtcXG4gICAgb3JkZXI6IDYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6b3JkZXItZmlyc3Q6Zm9jdXMge1xcbiAgICBvcmRlcjogLTEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6b3JkZXItbGFzdDpmb2N1cyB7XFxuICAgIG9yZGVyOiA5OTkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6b3JkZXItbm9ybWFsOmZvY3VzIHtcXG4gICAgb3JkZXI6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmbG9hdC1yaWdodCB7XFxuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZsb2F0LWxlZnQge1xcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZsb2F0LW5vbmUge1xcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmNsZWFyZml4OmFmdGVyIHtcXG4gICAgY29udGVudDogXFxcIlxcXCIgIWltcG9ydGFudDtcXG4gICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDtcXG4gICAgY2xlYXI6IGJvdGggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb250LWxpZ2h0IHtcXG4gICAgZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvbnQtbm9ybWFsIHtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvbnQtbWVkaXVtIHtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvbnQtc2VtaWJvbGQge1xcbiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9udC1ib2xkIHtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvbnQtZXh0cmFib2xkIHtcXG4gICAgZm9udC13ZWlnaHQ6IDgwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvbnQtYmxhY2sge1xcbiAgICBmb250LXdlaWdodDogOTAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOmZvbnQtbGlnaHQ6aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOmZvbnQtbm9ybWFsOmhvdmVyIHtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpmb250LW1lZGl1bTpob3ZlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6Zm9udC1zZW1pYm9sZDpob3ZlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6Zm9udC1ib2xkOmhvdmVyIHtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpmb250LWV4dHJhYm9sZDpob3ZlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA4MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6Zm9udC1ibGFjazpob3ZlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA5MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpoLTEge1xcbiAgICBoZWlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpoLTIge1xcbiAgICBoZWlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmgtMyB7XFxuICAgIGhlaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmgtNCB7XFxuICAgIGhlaWdodDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmgtNSB7XFxuICAgIGhlaWdodDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmgtNiB7XFxuICAgIGhlaWdodDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aC04IHtcXG4gICAgaGVpZ2h0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aC0xMCB7XFxuICAgIGhlaWdodDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aC0xMiB7XFxuICAgIGhlaWdodDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmgtMTYge1xcbiAgICBoZWlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpoLTI0IHtcXG4gICAgaGVpZ2h0OiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aC0zMiB7XFxuICAgIGhlaWdodDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmgtNDgge1xcbiAgICBoZWlnaHQ6IDEycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aC02NCB7XFxuICAgIGhlaWdodDogMTZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpoLWF1dG8ge1xcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpoLXB4IHtcXG4gICAgaGVpZ2h0OiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpoLWZ1bGwge1xcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpoLXNjcmVlbiB7XFxuICAgIGhlaWdodDogMTAwdmggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpsZWFkaW5nLW5vbmUge1xcbiAgICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmxlYWRpbmctdGlnaHQge1xcbiAgICBsaW5lLWhlaWdodDogMS4yNSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmxlYWRpbmctbm9ybWFsIHtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmxlYWRpbmctbG9vc2Uge1xcbiAgICBsaW5lLWhlaWdodDogMiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmxpc3QtaW5zaWRlIHtcXG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bGlzdC1vdXRzaWRlIHtcXG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogb3V0c2lkZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm0tMCB7XFxuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm0tMSB7XFxuICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm0tMiB7XFxuICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bS0zIHtcXG4gICAgbWFyZ2luOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bS00IHtcXG4gICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bS01IHtcXG4gICAgbWFyZ2luOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bS02IHtcXG4gICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptLTgge1xcbiAgICBtYXJnaW46IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptLTEwIHtcXG4gICAgbWFyZ2luOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptLTEyIHtcXG4gICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bS0xNiB7XFxuICAgIG1hcmdpbjogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm0tMjAge1xcbiAgICBtYXJnaW46IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptLTI0IHtcXG4gICAgbWFyZ2luOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bS0zMiB7XFxuICAgIG1hcmdpbjogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm0tYXV0byB7XFxuICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm0tcHgge1xcbiAgICBtYXJnaW46IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm0tYmFzZSB7XFxuICAgIG1hcmdpbjogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW0tcHgge1xcbiAgICBtYXJnaW46IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbS0xIHtcXG4gICAgbWFyZ2luOiAtMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1tLTIge1xcbiAgICBtYXJnaW46IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbS0zIHtcXG4gICAgbWFyZ2luOiAtMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1tLTQge1xcbiAgICBtYXJnaW46IC0xcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXktMCB7XFxuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm14LTAge1xcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteS0xIHtcXG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXgtMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm15LTIge1xcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXgtMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteS0zIHtcXG4gICAgbWFyZ2luLXRvcDogMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXgtMyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm15LTQge1xcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteC00IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXktNSB7XFxuICAgIG1hcmdpbi10b3A6IDEuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm14LTUge1xcbiAgICBtYXJnaW4tbGVmdDogMS4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteS02IHtcXG4gICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm14LTYge1xcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXktOCB7XFxuICAgIG1hcmdpbi10b3A6IDJyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm14LTgge1xcbiAgICBtYXJnaW4tbGVmdDogMnJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteS0xMCB7XFxuICAgIG1hcmdpbi10b3A6IDIuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteC0xMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyLjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteS0xMiB7XFxuICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm14LTEyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXktMTYge1xcbiAgICBtYXJnaW4tdG9wOiA0cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteC0xNiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm15LTIwIHtcXG4gICAgbWFyZ2luLXRvcDogNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXgtMjAge1xcbiAgICBtYXJnaW4tbGVmdDogNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteS0yNCB7XFxuICAgIG1hcmdpbi10b3A6IDZyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm14LTI0IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDZyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXktMzIge1xcbiAgICBtYXJnaW4tdG9wOiA4cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteC0zMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm15LWF1dG8ge1xcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteC1hdXRvIHtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXktcHgge1xcbiAgICBtYXJnaW4tdG9wOiAxcHggIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXgtcHgge1xcbiAgICBtYXJnaW4tbGVmdDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXktYmFzZSB7XFxuICAgIG1hcmdpbi10b3A6IDIuMnJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpteC1iYXNlIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDIuMnJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1teS1weCB7XFxuICAgIG1hcmdpbi10b3A6IC0xcHggIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1teC1weCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMXB4ICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1teS0xIHtcXG4gICAgbWFyZ2luLXRvcDogLTAuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbXgtMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW15LTIge1xcbiAgICBtYXJnaW4tdG9wOiAtMC41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbXgtMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMC41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1teS0zIHtcXG4gICAgbWFyZ2luLXRvcDogLTAuNzVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbXgtMyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW15LTQge1xcbiAgICBtYXJnaW4tdG9wOiAtMXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1teC00IHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogLTFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptdC0wIHtcXG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1yLTAge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi0wIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1sLTAge1xcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm10LTEge1xcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXItMSB7XFxuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1iLTEge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWwtMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXQtMiB7XFxuICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1yLTIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1iLTIge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptbC0yIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm10LTMge1xcbiAgICBtYXJnaW4tdG9wOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXItMyB7XFxuICAgIG1hcmdpbi1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1iLTMge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWwtMyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXQtNCB7XFxuICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptci00IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWItNCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptbC00IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptdC01IHtcXG4gICAgbWFyZ2luLXRvcDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1yLTUge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi01IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1sLTUge1xcbiAgICBtYXJnaW4tbGVmdDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm10LTYge1xcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptci02IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi02IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWwtNiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptdC04IHtcXG4gICAgbWFyZ2luLXRvcDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1yLTgge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi04IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1sLTgge1xcbiAgICBtYXJnaW4tbGVmdDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm10LTEwIHtcXG4gICAgbWFyZ2luLXRvcDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXItMTAge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1iLTEwIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWwtMTAge1xcbiAgICBtYXJnaW4tbGVmdDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXQtMTIge1xcbiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXItMTIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi0xMiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptbC0xMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXQtMTYge1xcbiAgICBtYXJnaW4tdG9wOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXItMTYge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi0xNiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptbC0xNiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXQtMjAge1xcbiAgICBtYXJnaW4tdG9wOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXItMjAge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi0yMCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptbC0yMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXQtMjQge1xcbiAgICBtYXJnaW4tdG9wOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXItMjQge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi0yNCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptbC0yNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXQtMzIge1xcbiAgICBtYXJnaW4tdG9wOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXItMzIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi0zMiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptbC0zMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bXQtYXV0byB7XFxuICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptci1hdXRvIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWItYXV0byB7XFxuICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptbC1hdXRvIHtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptdC1weCB7XFxuICAgIG1hcmdpbi10b3A6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1yLXB4IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi1weCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1sLXB4IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm10LWJhc2Uge1xcbiAgICBtYXJnaW4tdG9wOiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptci1iYXNlIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYi1iYXNlIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWwtYmFzZSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbXQtcHgge1xcbiAgICBtYXJnaW4tdG9wOiAtMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW1yLXB4IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW1iLXB4IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1tbC1weCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW10LTEge1xcbiAgICBtYXJnaW4tdG9wOiAtMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1tci0xIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1tYi0xIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbWwtMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1tdC0yIHtcXG4gICAgbWFyZ2luLXRvcDogLTAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1tci0yIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW1iLTIge1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW1sLTIge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1tdC0zIHtcXG4gICAgbWFyZ2luLXRvcDogLTAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbXItMyB7XFxuICAgIG1hcmdpbi1yaWdodDogLTAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbWItMyB7XFxuICAgIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW1sLTMge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDotbXQtNCB7XFxuICAgIG1hcmdpbi10b3A6IC0xcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW1yLTQge1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6LW1iLTQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOi1tbC00IHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWF4LWgtZnVsbCB7XFxuICAgIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYXgtaC1zY3JlZW4ge1xcbiAgICBtYXgtaGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1heC13LXhzIHtcXG4gICAgbWF4LXdpZHRoOiAyMHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1heC13LXNtIHtcXG4gICAgbWF4LXdpZHRoOiAzMHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1heC13LW1kIHtcXG4gICAgbWF4LXdpZHRoOiA0MHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1heC13LWxnIHtcXG4gICAgbWF4LXdpZHRoOiA1MHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1heC13LXhsIHtcXG4gICAgbWF4LXdpZHRoOiA2MHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1heC13LTJ4bCB7XFxuICAgIG1heC13aWR0aDogNzByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptYXgtdy0zeGwge1xcbiAgICBtYXgtd2lkdGg6IDgwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWF4LXctNHhsIHtcXG4gICAgbWF4LXdpZHRoOiA5MHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1heC13LTV4bCB7XFxuICAgIG1heC13aWR0aDogMTAwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWF4LXctZnVsbCB7XFxuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1pbi1oLTAge1xcbiAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWluLWgtZnVsbCB7XFxuICAgIG1pbi1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptaW4taC1zY3JlZW4ge1xcbiAgICBtaW4taGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm1pbi13LTAge1xcbiAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDptaW4tdy1mdWxsIHtcXG4gICAgbWluLXdpZHRoOiAxMDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6b2JqZWN0LWNvbnRhaW4ge1xcbiAgICAtby1vYmplY3QtZml0OiBjb250YWluICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvYmplY3QtY292ZXIge1xcbiAgICAtby1vYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC1maWxsIHtcXG4gICAgLW8tb2JqZWN0LWZpdDogZmlsbCAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtZml0OiBmaWxsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6b2JqZWN0LW5vbmUge1xcbiAgICAtby1vYmplY3QtZml0OiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1maXQ6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvYmplY3Qtc2NhbGUtZG93biB7XFxuICAgIC1vLW9iamVjdC1maXQ6IHNjYWxlLWRvd24gIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LWZpdDogc2NhbGUtZG93biAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC1ib3R0b20ge1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IGJvdHRvbSAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IGJvdHRvbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC1jZW50ZXIge1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC1sZWZ0IHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiBsZWZ0ICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogbGVmdCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC1sZWZ0LWJvdHRvbSB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogbGVmdCBib3R0b20gIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiBsZWZ0IGJvdHRvbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC1sZWZ0LXRvcCB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogbGVmdCB0b3AgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiBsZWZ0IHRvcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC1yaWdodCB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogcmlnaHQgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiByaWdodCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC1yaWdodC1ib3R0b20ge1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IHJpZ2h0IGJvdHRvbSAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IHJpZ2h0IGJvdHRvbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC1yaWdodC10b3Age1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IHJpZ2h0IHRvcCAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IHJpZ2h0IHRvcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9iamVjdC10b3Age1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IHRvcCAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IHRvcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9wYWNpdHktMCB7XFxuICAgIG9wYWNpdHk6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvcGFjaXR5LTI1IHtcXG4gICAgb3BhY2l0eTogMC4yNSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9wYWNpdHktNTAge1xcbiAgICBvcGFjaXR5OiAwLjUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvcGFjaXR5LTc1IHtcXG4gICAgb3BhY2l0eTogMC43NSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm9wYWNpdHktMTAwIHtcXG4gICAgb3BhY2l0eTogMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm92ZXJmbG93LWF1dG8ge1xcbiAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm92ZXJmbG93LWhpZGRlbiB7XFxuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvdmVyZmxvdy12aXNpYmxlIHtcXG4gICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvdmVyZmxvdy1zY3JvbGwge1xcbiAgICBvdmVyZmxvdzogc2Nyb2xsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6b3ZlcmZsb3cteC1hdXRvIHtcXG4gICAgb3ZlcmZsb3cteDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm92ZXJmbG93LXktYXV0byB7XFxuICAgIG92ZXJmbG93LXk6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvdmVyZmxvdy14LWhpZGRlbiB7XFxuICAgIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm92ZXJmbG93LXktaGlkZGVuIHtcXG4gICAgb3ZlcmZsb3cteTogaGlkZGVuICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6b3ZlcmZsb3cteC12aXNpYmxlIHtcXG4gICAgb3ZlcmZsb3cteDogdmlzaWJsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm92ZXJmbG93LXktdmlzaWJsZSB7XFxuICAgIG92ZXJmbG93LXk6IHZpc2libGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpvdmVyZmxvdy14LXNjcm9sbCB7XFxuICAgIG92ZXJmbG93LXg6IHNjcm9sbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm92ZXJmbG93LXktc2Nyb2xsIHtcXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c2Nyb2xsaW5nLXRvdWNoIHtcXG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c2Nyb2xsaW5nLWF1dG8ge1xcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnAtMCB7XFxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwLTEge1xcbiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cC0yIHtcXG4gICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cC0zIHtcXG4gICAgcGFkZGluZzogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnAtNCB7XFxuICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwLTUge1xcbiAgICBwYWRkaW5nOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cC02IHtcXG4gICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cC04IHtcXG4gICAgcGFkZGluZzogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnAtMTAge1xcbiAgICBwYWRkaW5nOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwLTEyIHtcXG4gICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnAtMTYge1xcbiAgICBwYWRkaW5nOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cC0yMCB7XFxuICAgIHBhZGRpbmc6IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwLTI0IHtcXG4gICAgcGFkZGluZzogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnAtMzIge1xcbiAgICBwYWRkaW5nOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cC1weCB7XFxuICAgIHBhZGRpbmc6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnAtYmFzZSB7XFxuICAgIHBhZGRpbmc6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB5LTAge1xcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB4LTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB5LTEge1xcbiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB4LTEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB5LTIge1xcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpweC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHktMyB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHgtMyB7XFxuICAgIHBhZGRpbmctbGVmdDogMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHktNCB7XFxuICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHgtNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHktNSB7XFxuICAgIHBhZGRpbmctdG9wOiAxLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHgtNSB7XFxuICAgIHBhZGRpbmctbGVmdDogMS4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHktNiB7XFxuICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB4LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpweS04IHtcXG4gICAgcGFkZGluZy10b3A6IDJyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpweC04IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpweS0xMCB7XFxuICAgIHBhZGRpbmctdG9wOiAyLjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB4LTEwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyLjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHktMTIge1xcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB4LTEyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpweS0xNiB7XFxuICAgIHBhZGRpbmctdG9wOiA0cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHgtMTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDRyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB5LTIwIHtcXG4gICAgcGFkZGluZy10b3A6IDVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpweC0yMCB7XFxuICAgIHBhZGRpbmctbGVmdDogNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHktMjQge1xcbiAgICBwYWRkaW5nLXRvcDogNnJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB4LTI0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpweS0zMiB7XFxuICAgIHBhZGRpbmctdG9wOiA4cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHgtMzIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDhyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB5LXB4IHtcXG4gICAgcGFkZGluZy10b3A6IDFweCAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHgtcHgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFweCAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpweS1iYXNlIHtcXG4gICAgcGFkZGluZy10b3A6IDIuMnJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHgtYmFzZSB7XFxuICAgIHBhZGRpbmctbGVmdDogMi4ycmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB0LTAge1xcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnByLTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGItMCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGwtMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB0LTEge1xcbiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnByLTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGItMSB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGwtMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB0LTIge1xcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHItMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBiLTIge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGwtMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHQtMyB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHItMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwYi0zIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbC0zIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHQtNCB7XFxuICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHItNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwYi00IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbC00IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHQtNSB7XFxuICAgIHBhZGRpbmctdG9wOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHItNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwYi01IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbC01IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHQtNiB7XFxuICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwci02IHtcXG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGItNiB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbC02IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwdC04IHtcXG4gICAgcGFkZGluZy10b3A6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwci04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBiLTgge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBsLTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwdC0xMCB7XFxuICAgIHBhZGRpbmctdG9wOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwci0xMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBiLTEwIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBsLTEwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwdC0xMiB7XFxuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHItMTIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGItMTIge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBsLTEyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHQtMTYge1xcbiAgICBwYWRkaW5nLXRvcDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnByLTE2IHtcXG4gICAgcGFkZGluZy1yaWdodDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBiLTE2IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbC0xNiB7XFxuICAgIHBhZGRpbmctbGVmdDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB0LTIwIHtcXG4gICAgcGFkZGluZy10b3A6IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwci0yMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwYi0yMCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGwtMjAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwdC0yNCB7XFxuICAgIHBhZGRpbmctdG9wOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHItMjQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGItMjQge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBsLTI0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHQtMzIge1xcbiAgICBwYWRkaW5nLXRvcDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnByLTMyIHtcXG4gICAgcGFkZGluZy1yaWdodDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBiLTMyIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbC0zMiB7XFxuICAgIHBhZGRpbmctbGVmdDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB0LXB4IHtcXG4gICAgcGFkZGluZy10b3A6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnByLXB4IHtcXG4gICAgcGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGItcHgge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGwtcHgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnB0LWJhc2Uge1xcbiAgICBwYWRkaW5nLXRvcDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHItYmFzZSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBiLWJhc2Uge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGwtYmFzZSB7XFxuICAgIHBhZGRpbmctbGVmdDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbGFjZWhvbGRlci1ibGFjazo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItYmxhY2s6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBsYWNlaG9sZGVyLWJsYWNrOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItYmxhY2s6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItYmxhY2s6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbGFjZWhvbGRlci13aGl0ZTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItd2hpdGU6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBsYWNlaG9sZGVyLXdoaXRlOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItd2hpdGU6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItd2hpdGU6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbGFjZWhvbGRlci1ncmV5Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbGFjZWhvbGRlci1ncmV5OjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbGFjZWhvbGRlci1ncmV5Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItZ3JleTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpwbGFjZWhvbGRlci1ncmV5OjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDpmb2N1czotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItYmxhY2s6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItd2hpdGU6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItd2hpdGU6Zm9jdXM6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5OmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleTpmb2N1czotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5OmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5OmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDpmb2N1czotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cG9pbnRlci1ldmVudHMtbm9uZSB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cG9pbnRlci1ldmVudHMtYXV0byB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c3RhdGljIHtcXG4gICAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZpeGVkIHtcXG4gICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YWJzb2x1dGUge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpyZWxhdGl2ZSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnN0aWNreSB7XFxuICAgIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreSAhaW1wb3J0YW50O1xcbiAgICBwb3NpdGlvbjogc3RpY2t5ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aW5zZXQtMCB7XFxuICAgIHRvcDogMCAhaW1wb3J0YW50O1xcbiAgICByaWdodDogMCAhaW1wb3J0YW50O1xcbiAgICBib3R0b206IDAgIWltcG9ydGFudDtcXG4gICAgbGVmdDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmluc2V0LWF1dG8ge1xcbiAgICB0b3A6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDppbnNldC15LTAge1xcbiAgICB0b3A6IDAgIWltcG9ydGFudDtcXG4gICAgYm90dG9tOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aW5zZXQteC0wIHtcXG4gICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcXG4gICAgbGVmdDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmluc2V0LXktYXV0byB7XFxuICAgIHRvcDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBib3R0b206IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDppbnNldC14LWF1dG8ge1xcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dG9wLTAge1xcbiAgICB0b3A6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpyaWdodC0wIHtcXG4gICAgcmlnaHQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpib3R0b20tMCB7XFxuICAgIGJvdHRvbTogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmxlZnQtMCB7XFxuICAgIGxlZnQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0b3AtYXV0byB7XFxuICAgIHRvcDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnJpZ2h0LWF1dG8ge1xcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmJvdHRvbS1hdXRvIHtcXG4gICAgYm90dG9tOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bGVmdC1hdXRvIHtcXG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnJlc2l6ZS1ub25lIHtcXG4gICAgcmVzaXplOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cmVzaXplLXkge1xcbiAgICByZXNpemU6IHZlcnRpY2FsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cmVzaXplLXgge1xcbiAgICByZXNpemU6IGhvcml6b250YWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpyZXNpemUge1xcbiAgICByZXNpemU6IGJvdGggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpzaGFkb3cge1xcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMTApICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c2hhZG93LW1kIHtcXG4gICAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnNoYWRvdy1sZyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMTVweCAzMHB4IDAgcmdiYSgwLDAsMCwwLjExKSwgMCA1cHggMTVweCAwIHJnYmEoMCwwLDAsMC4wOCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpzaGFkb3ctaW5uZXIge1xcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDYpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c2hhZG93LXhsIHtcXG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMTBweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjA0KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnNoYWRvdy0yeGwge1xcbiAgICBib3gtc2hhZG93OiAwIDI1cHggNTBweCAtMTJweCByZ2JhKDAsIDAsIDAsIDAuMjUpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c2hhZG93LW91dGxpbmUge1xcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1MiwxNDQsMjIwLDAuNSkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpzaGFkb3ctbm9uZSB7XFxuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpzaGFkb3ctZHJvcCB7XFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCAwIHJnYmEoMCwwLDAsMC4xNCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6c2hhZG93OmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjEwKSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpzaGFkb3ctbWQ6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDAsMCwwLDAuMTIpLCAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOnNoYWRvdy1sZzpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IDAgMTVweCAzMHB4IDAgcmdiYSgwLDAsMCwwLjExKSwgMCA1cHggMTVweCAwIHJnYmEoMCwwLDAsMC4wOCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6c2hhZG93LWlubmVyOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA2KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpzaGFkb3cteGw6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxMHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMDQpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOnNoYWRvdy0yeGw6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiAwIDI1cHggNTBweCAtMTJweCByZ2JhKDAsIDAsIDAsIDAuMjUpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOnNoYWRvdy1vdXRsaW5lOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTIsMTQ0LDIyMCwwLjUpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOnNoYWRvdy1ub25lOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpzaGFkb3ctZHJvcDpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCAwIHJnYmEoMCwwLDAsMC4xNCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6c2hhZG93OmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjEwKSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpzaGFkb3ctbWQ6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDAsMCwwLDAuMTIpLCAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnNoYWRvdy1sZzpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMTVweCAzMHB4IDAgcmdiYSgwLDAsMCwwLjExKSwgMCA1cHggMTVweCAwIHJnYmEoMCwwLDAsMC4wOCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6c2hhZG93LWlubmVyOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA2KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpzaGFkb3cteGw6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxMHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMDQpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnNoYWRvdy0yeGw6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiAwIDI1cHggNTBweCAtMTJweCByZ2JhKDAsIDAsIDAsIDAuMjUpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnNoYWRvdy1vdXRsaW5lOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTIsMTQ0LDIyMCwwLjUpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnNoYWRvdy1ub25lOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpzaGFkb3ctZHJvcDpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCAwIHJnYmEoMCwwLDAsMC4xNCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0YWJsZS1hdXRvIHtcXG4gICAgdGFibGUtbGF5b3V0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGFibGUtZml4ZWQge1xcbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGV4dC1sZWZ0IHtcXG4gICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnRleHQtY2VudGVyIHtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGV4dC1yaWdodCB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGV4dC1qdXN0aWZ5IHtcXG4gICAgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnRleHQtdHJhbnNwYXJlbnQge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LWJsYWNrIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LXdoaXRlIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LWdyZXkge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnRleHQtZ3JleS1saWdodCB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOnRleHQtdHJhbnNwYXJlbnQ6aG92ZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6dGV4dC1ibGFjazpob3ZlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOnRleHQtd2hpdGU6aG92ZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDp0ZXh0LWdyZXk6aG92ZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDp0ZXh0LWdyZXktbGlnaHQ6aG92ZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDp0ZXh0LXRyYW5zcGFyZW50OmZvY3VzIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnRleHQtYmxhY2s6Zm9jdXMge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDp0ZXh0LXdoaXRlOmZvY3VzIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6dGV4dC1ncmV5OmZvY3VzIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6dGV4dC1ncmV5LWxpZ2h0OmZvY3VzIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LXhzIHtcXG4gICAgZm9udC1zaXplOiAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LXNtIHtcXG4gICAgZm9udC1zaXplOiAuODc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGV4dC1iYXNlIHtcXG4gICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGV4dC1sZyB7XFxuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LXhsIHtcXG4gICAgZm9udC1zaXplOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGV4dC0yeGwge1xcbiAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnRleHQtM3hsIHtcXG4gICAgZm9udC1zaXplOiAxLjg3NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnRleHQtNHhsIHtcXG4gICAgZm9udC1zaXplOiAyLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGV4dC01eGwge1xcbiAgICBmb250LXNpemU6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LTZ4bCB7XFxuICAgIGZvbnQtc2l6ZTogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOml0YWxpYyB7XFxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm5vdC1pdGFsaWMge1xcbiAgICBmb250LXN0eWxlOiBub3JtYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6aXRhbGljOmhvdmVyIHtcXG4gICAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOm5vdC1pdGFsaWM6aG92ZXIge1xcbiAgICBmb250LXN0eWxlOiBub3JtYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6aXRhbGljOmZvY3VzIHtcXG4gICAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOm5vdC1pdGFsaWM6Zm9jdXMge1xcbiAgICBmb250LXN0eWxlOiBub3JtYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp1cHBlcmNhc2Uge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bG93ZXJjYXNlIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmNhcGl0YWxpemUge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOm5vcm1hbC1jYXNlIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6dXBwZXJjYXNlOmhvdmVyIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpsb3dlcmNhc2U6aG92ZXIge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6aG92ZXJcXFxcOmNhcGl0YWxpemU6aG92ZXIge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDpub3JtYWwtY2FzZTpob3ZlciB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnVwcGVyY2FzZTpmb2N1cyB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6bG93ZXJjYXNlOmZvY3VzIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpjYXBpdGFsaXplOmZvY3VzIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpmb2N1c1xcXFw6bm9ybWFsLWNhc2U6Zm9jdXMge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnVuZGVybGluZSB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bGluZS10aHJvdWdoIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2ggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpuby11bmRlcmxpbmUge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6dW5kZXJsaW5lOmhvdmVyIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6bGluZS10aHJvdWdoOmhvdmVyIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2ggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6bm8tdW5kZXJsaW5lOmhvdmVyIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOnVuZGVybGluZTpmb2N1cyB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOmxpbmUtdGhyb3VnaDpmb2N1cyB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOm5vLXVuZGVybGluZTpmb2N1cyB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmFudGlhbGlhc2VkIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQgIWltcG9ydGFudDtcXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnN1YnBpeGVsLWFudGlhbGlhc2VkIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50O1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmhvdmVyXFxcXDphbnRpYWxpYXNlZDpob3ZlciB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkICFpbXBvcnRhbnQ7XFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpob3ZlclxcXFw6c3VicGl4ZWwtYW50aWFsaWFzZWQ6aG92ZXIge1xcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Zm9jdXNcXFxcOmFudGlhbGlhc2VkOmZvY3VzIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQgIWltcG9ydGFudDtcXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmZvY3VzXFxcXDpzdWJwaXhlbC1hbnRpYWxpYXNlZDpmb2N1cyB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpzZWxlY3Qtbm9uZSB7XFxuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpzZWxlY3QtdGV4dCB7XFxuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQgIWltcG9ydGFudDtcXG4gICAgICAgLW1vei11c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IHRleHQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpzZWxlY3QtYWxsIHtcXG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYWxsICFpbXBvcnRhbnQ7XFxuICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IGFsbCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBhbGwgIWltcG9ydGFudDtcXG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogYWxsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6c2VsZWN0LWF1dG8ge1xcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy11c2VyLXNlbGVjdDogYXV0byAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YWxpZ24tYmFzZWxpbmUge1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDphbGlnbi10b3Age1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YWxpZ24tbWlkZGxlIHtcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmFsaWduLWJvdHRvbSB7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b20gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDphbGlnbi10ZXh0LXRvcCB7XFxuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOmFsaWduLXRleHQtYm90dG9tIHtcXG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dmlzaWJsZSB7XFxuICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDppbnZpc2libGUge1xcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3aGl0ZXNwYWNlLW5vcm1hbCB7XFxuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3aGl0ZXNwYWNlLW5vLXdyYXAge1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6d2hpdGVzcGFjZS1wcmUge1xcbiAgICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6d2hpdGVzcGFjZS1wcmUtbGluZSB7XFxuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOndoaXRlc3BhY2UtcHJlLXdyYXAge1xcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDpicmVhay1ub3JtYWwge1xcbiAgICBvdmVyZmxvdy13cmFwOiBub3JtYWwgIWltcG9ydGFudDtcXG4gICAgd29yZC1icmVhazogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YnJlYWstd29yZHMge1xcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6YnJlYWstYWxsIHtcXG4gICAgd29yZC1icmVhazogYnJlYWstYWxsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dHJ1bmNhdGUge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFpbXBvcnRhbnQ7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTEge1xcbiAgICB3aWR0aDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMiB7XFxuICAgIHdpZHRoOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTMge1xcbiAgICB3aWR0aDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctNCB7XFxuICAgIHdpZHRoOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy01IHtcXG4gICAgd2lkdGg6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTYge1xcbiAgICB3aWR0aDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy04IHtcXG4gICAgd2lkdGg6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTEwIHtcXG4gICAgd2lkdGg6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMTIge1xcbiAgICB3aWR0aDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMTYge1xcbiAgICB3aWR0aDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMjQge1xcbiAgICB3aWR0aDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMzIge1xcbiAgICB3aWR0aDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctNDgge1xcbiAgICB3aWR0aDogMTJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTY0IHtcXG4gICAgd2lkdGg6IDE2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy1hdXRvIHtcXG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LXB4IHtcXG4gICAgd2lkdGg6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMVxcXFwvMiB7XFxuICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTFcXFxcLzMge1xcbiAgICB3aWR0aDogMzMuMzMzMzMlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy0yXFxcXC8zIHtcXG4gICAgd2lkdGg6IDY2LjY2NjY3JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMVxcXFwvNCB7XFxuICAgIHdpZHRoOiAyNSUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTNcXFxcLzQge1xcbiAgICB3aWR0aDogNzUlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy0xXFxcXC81IHtcXG4gICAgd2lkdGg6IDIwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMlxcXFwvNSB7XFxuICAgIHdpZHRoOiA0MCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTNcXFxcLzUge1xcbiAgICB3aWR0aDogNjAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy00XFxcXC81IHtcXG4gICAgd2lkdGg6IDgwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMVxcXFwvNiB7XFxuICAgIHdpZHRoOiAxNi42NjY2NyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTVcXFxcLzYge1xcbiAgICB3aWR0aDogODMuMzMzMzMlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy0xXFxcXC8xMiB7XFxuICAgIHdpZHRoOiA4LjMzMzMzJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctMlxcXFwvMTIge1xcbiAgICB3aWR0aDogMTYuNjY2NjclICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy0zXFxcXC8xMiB7XFxuICAgIHdpZHRoOiAyNSUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTRcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDMzLjMzMzMzJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctNVxcXFwvMTIge1xcbiAgICB3aWR0aDogNDEuNjY2NjclICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy02XFxcXC8xMiB7XFxuICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTdcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDU4LjMzMzMzJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctOFxcXFwvMTIge1xcbiAgICB3aWR0aDogNjYuNjY2NjclICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy05XFxcXC8xMiB7XFxuICAgIHdpZHRoOiA3NSUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTEwXFxcXC8xMiB7XFxuICAgIHdpZHRoOiA4My4zMzMzMyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LTExXFxcXC8xMiB7XFxuICAgIHdpZHRoOiA5MS42NjY2NyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnNtXFxcXDp3LWZ1bGwge1xcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnctc2NyZWVuIHtcXG4gICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5zbVxcXFw6ei0wIHtcXG4gICAgei1pbmRleDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnotMTAge1xcbiAgICB6LWluZGV4OiAxMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnotMjAge1xcbiAgICB6LWluZGV4OiAyMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnotMzAge1xcbiAgICB6LWluZGV4OiAzMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnotNDAge1xcbiAgICB6LWluZGV4OiA0MCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnotNTAge1xcbiAgICB6LWluZGV4OiA1MCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAuc21cXFxcOnotYXV0byB7XFxuICAgIHotaW5kZXg6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcbn1cXG5cXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcXG4gIC5tZFxcXFw6c3Itb25seSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XFxuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcXG4gICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XFxuICAgIGJvcmRlci13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm5vdC1zci1vbmx5IHtcXG4gICAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xcbiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcXG4gICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcXG4gICAgY2xpcDogYXV0byAhaW1wb3J0YW50O1xcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnNyLW9ubHk6Zm9jdXMge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcXG4gICAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbjogLTFweCAhaW1wb3J0YW50O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XFxuICAgIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCkgIWltcG9ydGFudDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xcbiAgICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6bm90LXNyLW9ubHk6Zm9jdXMge1xcbiAgICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XFxuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbiAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xcbiAgICBjbGlwOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDphcHBlYXJhbmNlLW5vbmUge1xcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJnLWZpeGVkIHtcXG4gICAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJnLWxvY2FsIHtcXG4gICAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBsb2NhbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJnLXNjcm9sbCB7XFxuICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6YmctdHJhbnNwYXJlbnQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJnLWJsYWNrIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJnLXdoaXRlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJnLWdyZXkge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6YmctZ3JleS1saWdodCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6YmctdHJhbnNwYXJlbnQ6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpiZy1ibGFjazpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6Ymctd2hpdGU6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOmJnLWdyZXk6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOmJnLWdyZXktbGlnaHQ6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOmJnLXRyYW5zcGFyZW50OmZvY3VzIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6YmctYmxhY2s6Zm9jdXMge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOmJnLXdoaXRlOmZvY3VzIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpiZy1ncmV5OmZvY3VzIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpiZy1ncmV5LWxpZ2h0OmZvY3VzIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJnLWF1dG8ge1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpiZy1jb3ZlciB7XFxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpiZy1jb250YWluIHtcXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLXRyYW5zcGFyZW50IHtcXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1ibGFjayB7XFxuICAgIGJvcmRlci1jb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci13aGl0ZSB7XFxuICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1ncmV5IHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLWdyZXktbGlnaHQge1xcbiAgICBib3JkZXItY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6Ym9yZGVyLXRyYW5zcGFyZW50OmhvdmVyIHtcXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpib3JkZXItYmxhY2s6aG92ZXIge1xcbiAgICBib3JkZXItY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6Ym9yZGVyLXdoaXRlOmhvdmVyIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOmJvcmRlci1ncmV5OmhvdmVyIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOmJvcmRlci1ncmV5LWxpZ2h0OmhvdmVyIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLXNvbGlkIHtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1kYXNoZWQge1xcbiAgICBib3JkZXItc3R5bGU6IGRhc2hlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1kb3R0ZWQge1xcbiAgICBib3JkZXItc3R5bGU6IGRvdHRlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1kb3VibGUge1xcbiAgICBib3JkZXItc3R5bGU6IGRvdWJsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1ub25lIHtcXG4gICAgYm9yZGVyLXN0eWxlOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLTAge1xcbiAgICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpib3JkZXItMiB7XFxuICAgIGJvcmRlci13aWR0aDogMnB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLTQge1xcbiAgICBib3JkZXItd2lkdGg6IDRweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci04IHtcXG4gICAgYm9yZGVyLXdpZHRoOiA4cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpib3JkZXIge1xcbiAgICBib3JkZXItd2lkdGg6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci10LTAge1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLXItMCB7XFxuICAgIGJvcmRlci1yaWdodC13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1iLTAge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLWwtMCB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLXQtMiB7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDJweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1yLTIge1xcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDJweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1iLTIge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpib3JkZXItbC0yIHtcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDJweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci10LTQge1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiA0cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpib3JkZXItci00IHtcXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA0cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpib3JkZXItYi00IHtcXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogNHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLWwtNCB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiA0cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpib3JkZXItdC04IHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLXItOCB7XFxuICAgIGJvcmRlci1yaWdodC13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLWItOCB7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDhweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJvcmRlci1sLTgge1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLXQge1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpib3JkZXItciB7XFxuICAgIGJvcmRlci1yaWdodC13aWR0aDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym9yZGVyLWIge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpib3JkZXItbCB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpibG9jayB7XFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aW5saW5lLWJsb2NrIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aW5saW5lIHtcXG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6ZmxleCB7XFxuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDppbmxpbmUtZmxleCB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGFibGUge1xcbiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRhYmxlLXJvdyB7XFxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRhYmxlLWNlbGwge1xcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aGlkZGVuIHtcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZsZXgtcm93IHtcXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZsZXgtcm93LXJldmVyc2Uge1xcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmbGV4LWNvbCB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmbGV4LWNvbC1yZXZlcnNlIHtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6ZmxleC13cmFwIHtcXG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6ZmxleC13cmFwLXJldmVyc2Uge1xcbiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZsZXgtbm8td3JhcCB7XFxuICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aXRlbXMtc3RhcnQge1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOml0ZW1zLWVuZCB7XFxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOml0ZW1zLWNlbnRlciB7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDppdGVtcy1iYXNlbGluZSB7XFxuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOml0ZW1zLXN0cmV0Y2gge1xcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnNlbGYtYXV0byB7XFxuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpzZWxmLXN0YXJ0IHtcXG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnNlbGYtZW5kIHtcXG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpzZWxmLWNlbnRlciB7XFxuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnNlbGYtc3RyZXRjaCB7XFxuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpqdXN0aWZ5LXN0YXJ0IHtcXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6anVzdGlmeS1lbmQge1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6anVzdGlmeS1jZW50ZXIge1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmp1c3RpZnktYmV0d2VlbiB7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmp1c3RpZnktYXJvdW5kIHtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpjb250ZW50LWNlbnRlciB7XFxuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmNvbnRlbnQtc3RhcnQge1xcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Y29udGVudC1lbmQge1xcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmNvbnRlbnQtYmV0d2VlbiB7XFxuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpjb250ZW50LWFyb3VuZCB7XFxuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZsZXgtMSB7XFxuICAgIGZsZXg6IDEgMSAwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZsZXgtYXV0byB7XFxuICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6ZmxleC1pbml0aWFsIHtcXG4gICAgZmxleDogMCAxIGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmbGV4LW5vbmUge1xcbiAgICBmbGV4OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6ZmxleC1ncm93LTAge1xcbiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmbGV4LWdyb3cge1xcbiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmbGV4LXNocmluay0wIHtcXG4gICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmbGV4LXNocmluayB7XFxuICAgIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3JkZXItMSB7XFxuICAgIG9yZGVyOiAxICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3JkZXItMiB7XFxuICAgIG9yZGVyOiAyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3JkZXItMyB7XFxuICAgIG9yZGVyOiAzICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3JkZXItNCB7XFxuICAgIG9yZGVyOiA0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3JkZXItNSB7XFxuICAgIG9yZGVyOiA1ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3JkZXItNiB7XFxuICAgIG9yZGVyOiA2ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3JkZXItZmlyc3Qge1xcbiAgICBvcmRlcjogLTEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvcmRlci1sYXN0IHtcXG4gICAgb3JkZXI6IDk5OSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm9yZGVyLW5vcm1hbCB7XFxuICAgIG9yZGVyOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOm9yZGVyLTE6aG92ZXIge1xcbiAgICBvcmRlcjogMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpvcmRlci0yOmhvdmVyIHtcXG4gICAgb3JkZXI6IDIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6b3JkZXItMzpob3ZlciB7XFxuICAgIG9yZGVyOiAzICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOm9yZGVyLTQ6aG92ZXIge1xcbiAgICBvcmRlcjogNCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpvcmRlci01OmhvdmVyIHtcXG4gICAgb3JkZXI6IDUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6b3JkZXItNjpob3ZlciB7XFxuICAgIG9yZGVyOiA2ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOm9yZGVyLWZpcnN0OmhvdmVyIHtcXG4gICAgb3JkZXI6IC0xICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOm9yZGVyLWxhc3Q6aG92ZXIge1xcbiAgICBvcmRlcjogOTk5ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOm9yZGVyLW5vcm1hbDpob3ZlciB7XFxuICAgIG9yZGVyOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOm9yZGVyLTE6Zm9jdXMge1xcbiAgICBvcmRlcjogMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpvcmRlci0yOmZvY3VzIHtcXG4gICAgb3JkZXI6IDIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6b3JkZXItMzpmb2N1cyB7XFxuICAgIG9yZGVyOiAzICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOm9yZGVyLTQ6Zm9jdXMge1xcbiAgICBvcmRlcjogNCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpvcmRlci01OmZvY3VzIHtcXG4gICAgb3JkZXI6IDUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6b3JkZXItNjpmb2N1cyB7XFxuICAgIG9yZGVyOiA2ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOm9yZGVyLWZpcnN0OmZvY3VzIHtcXG4gICAgb3JkZXI6IC0xICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOm9yZGVyLWxhc3Q6Zm9jdXMge1xcbiAgICBvcmRlcjogOTk5ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOm9yZGVyLW5vcm1hbDpmb2N1cyB7XFxuICAgIG9yZGVyOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6ZmxvYXQtcmlnaHQge1xcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmbG9hdC1sZWZ0IHtcXG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmbG9hdC1ub25lIHtcXG4gICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpjbGVhcmZpeDphZnRlciB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFwiICFpbXBvcnRhbnQ7XFxuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7XFxuICAgIGNsZWFyOiBib3RoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9udC1saWdodCB7XFxuICAgIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb250LW5vcm1hbCB7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb250LW1lZGl1bSB7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb250LXNlbWlib2xkIHtcXG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvbnQtYm9sZCB7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb250LWV4dHJhYm9sZCB7XFxuICAgIGZvbnQtd2VpZ2h0OiA4MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb250LWJsYWNrIHtcXG4gICAgZm9udC13ZWlnaHQ6IDkwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpmb250LWxpZ2h0OmhvdmVyIHtcXG4gICAgZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpmb250LW5vcm1hbDpob3ZlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6Zm9udC1tZWRpdW06aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOmZvbnQtc2VtaWJvbGQ6aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOmZvbnQtYm9sZDpob3ZlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6Zm9udC1leHRyYWJvbGQ6aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogODAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOmZvbnQtYmxhY2s6aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogOTAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aC0xIHtcXG4gICAgaGVpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aC0yIHtcXG4gICAgaGVpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpoLTMge1xcbiAgICBoZWlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpoLTQge1xcbiAgICBoZWlnaHQ6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpoLTUge1xcbiAgICBoZWlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpoLTYge1xcbiAgICBoZWlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmgtOCB7XFxuICAgIGhlaWdodDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmgtMTAge1xcbiAgICBoZWlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmgtMTIge1xcbiAgICBoZWlnaHQ6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpoLTE2IHtcXG4gICAgaGVpZ2h0OiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aC0yNCB7XFxuICAgIGhlaWdodDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmgtMzIge1xcbiAgICBoZWlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpoLTQ4IHtcXG4gICAgaGVpZ2h0OiAxMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmgtNjQge1xcbiAgICBoZWlnaHQ6IDE2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aC1hdXRvIHtcXG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aC1weCB7XFxuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aC1mdWxsIHtcXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aC1zY3JlZW4ge1xcbiAgICBoZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bGVhZGluZy1ub25lIHtcXG4gICAgbGluZS1oZWlnaHQ6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpsZWFkaW5nLXRpZ2h0IHtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpsZWFkaW5nLW5vcm1hbCB7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpsZWFkaW5nLWxvb3NlIHtcXG4gICAgbGluZS1oZWlnaHQ6IDIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpsaXN0LWluc2lkZSB7XFxuICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lkZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmxpc3Qtb3V0c2lkZSB7XFxuICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptLTAge1xcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptLTEge1xcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptLTIge1xcbiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm0tMyB7XFxuICAgIG1hcmdpbjogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm0tNCB7XFxuICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm0tNSB7XFxuICAgIG1hcmdpbjogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm0tNiB7XFxuICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bS04IHtcXG4gICAgbWFyZ2luOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bS0xMCB7XFxuICAgIG1hcmdpbjogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bS0xMiB7XFxuICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm0tMTYge1xcbiAgICBtYXJnaW46IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptLTIwIHtcXG4gICAgbWFyZ2luOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bS0yNCB7XFxuICAgIG1hcmdpbjogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm0tMzIge1xcbiAgICBtYXJnaW46IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptLWF1dG8ge1xcbiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptLXB4IHtcXG4gICAgbWFyZ2luOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptLWJhc2Uge1xcbiAgICBtYXJnaW46IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1tLXB4IHtcXG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW0tMSB7XFxuICAgIG1hcmdpbjogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbS0yIHtcXG4gICAgbWFyZ2luOiAtMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW0tMyB7XFxuICAgIG1hcmdpbjogLTAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbS00IHtcXG4gICAgbWFyZ2luOiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm15LTAge1xcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteC0wIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXktMSB7XFxuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm14LTEge1xcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteS0yIHtcXG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm14LTIge1xcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXktMyB7XFxuICAgIG1hcmdpbi10b3A6IDAuNzVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm14LTMge1xcbiAgICBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteS00IHtcXG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXgtNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm15LTUge1xcbiAgICBtYXJnaW4tdG9wOiAxLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteC01IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXktNiB7XFxuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteC02IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm15LTgge1xcbiAgICBtYXJnaW4tdG9wOiAycmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteC04IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDJyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXktMTAge1xcbiAgICBtYXJnaW4tdG9wOiAyLjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXgtMTAge1xcbiAgICBtYXJnaW4tbGVmdDogMi41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXktMTIge1xcbiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteC0xMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm15LTE2IHtcXG4gICAgbWFyZ2luLXRvcDogNHJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXgtMTYge1xcbiAgICBtYXJnaW4tbGVmdDogNHJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteS0yMCB7XFxuICAgIG1hcmdpbi10b3A6IDVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm14LTIwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXktMjQge1xcbiAgICBtYXJnaW4tdG9wOiA2cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteC0yNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA2cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm15LTMyIHtcXG4gICAgbWFyZ2luLXRvcDogOHJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXgtMzIge1xcbiAgICBtYXJnaW4tbGVmdDogOHJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpteS1hdXRvIHtcXG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXgtYXV0byB7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm15LXB4IHtcXG4gICAgbWFyZ2luLXRvcDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm14LXB4IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDFweCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm15LWJhc2Uge1xcbiAgICBtYXJnaW4tdG9wOiAyLjJyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXgtYmFzZSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyLjJyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbXktcHgge1xcbiAgICBtYXJnaW4tdG9wOiAtMXB4ICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbXgtcHgge1xcbiAgICBtYXJnaW4tbGVmdDogLTFweCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbXktMSB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IC0wLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW14LTEge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1teS0yIHtcXG4gICAgbWFyZ2luLXRvcDogLTAuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW14LTIge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbXktMyB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjc1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW14LTMge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuNzVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1teS00IHtcXG4gICAgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbXgtNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXQtMCB7XFxuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptci0wIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItMCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptbC0wIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptdC0xIHtcXG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1yLTEge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYi0xIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1sLTEge1xcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm10LTIge1xcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptci0yIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYi0yIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWwtMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptdC0zIHtcXG4gICAgbWFyZ2luLXRvcDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1yLTMge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYi0zIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1sLTMge1xcbiAgICBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm10LTQge1xcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXItNCB7XFxuICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1iLTQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWwtNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXQtNSB7XFxuICAgIG1hcmdpbi10b3A6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptci01IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItNSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptbC01IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptdC02IHtcXG4gICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXItNiB7XFxuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItNiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1sLTYge1xcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXQtOCB7XFxuICAgIG1hcmdpbi10b3A6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptci04IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItOCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptbC04IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptdC0xMCB7XFxuICAgIG1hcmdpbi10b3A6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1yLTEwIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYi0xMCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1sLTEwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm10LTEyIHtcXG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1yLTEyIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItMTIge1xcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWwtMTIge1xcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm10LTE2IHtcXG4gICAgbWFyZ2luLXRvcDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1yLTE2IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItMTYge1xcbiAgICBtYXJnaW4tYm90dG9tOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWwtMTYge1xcbiAgICBtYXJnaW4tbGVmdDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm10LTIwIHtcXG4gICAgbWFyZ2luLXRvcDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1yLTIwIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItMjAge1xcbiAgICBtYXJnaW4tYm90dG9tOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWwtMjAge1xcbiAgICBtYXJnaW4tbGVmdDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm10LTI0IHtcXG4gICAgbWFyZ2luLXRvcDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1yLTI0IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItMjQge1xcbiAgICBtYXJnaW4tYm90dG9tOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWwtMjQge1xcbiAgICBtYXJnaW4tbGVmdDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm10LTMyIHtcXG4gICAgbWFyZ2luLXRvcDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1yLTMyIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItMzIge1xcbiAgICBtYXJnaW4tYm90dG9tOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWwtMzIge1xcbiAgICBtYXJnaW4tbGVmdDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm10LWF1dG8ge1xcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXItYXV0byB7XFxuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1iLWF1dG8ge1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWwtYXV0byB7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXQtcHgge1xcbiAgICBtYXJnaW4tdG9wOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptci1weCB7XFxuICAgIG1hcmdpbi1yaWdodDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItcHgge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptbC1weCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptdC1iYXNlIHtcXG4gICAgbWFyZ2luLXRvcDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXItYmFzZSB7XFxuICAgIG1hcmdpbi1yaWdodDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWItYmFzZSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1sLWJhc2Uge1xcbiAgICBtYXJnaW4tbGVmdDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW10LXB4IHtcXG4gICAgbWFyZ2luLXRvcDogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1tci1weCB7XFxuICAgIG1hcmdpbi1yaWdodDogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1tYi1weCB7XFxuICAgIG1hcmdpbi1ib3R0b206IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbWwtcHgge1xcbiAgICBtYXJnaW4tbGVmdDogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1tdC0xIHtcXG4gICAgbWFyZ2luLXRvcDogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbXItMSB7XFxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbWItMSB7XFxuICAgIG1hcmdpbi1ib3R0b206IC0wLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW1sLTEge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbXQtMiB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbXItMiB7XFxuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1tYi0yIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1tbC0yIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbXQtMyB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW1yLTMge1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW1iLTMge1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1tbC0zIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6LW10LTQge1xcbiAgICBtYXJnaW4tdG9wOiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1tci00IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOi1tYi00IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDotbWwtNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1heC1oLWZ1bGwge1xcbiAgICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWF4LWgtc2NyZWVuIHtcXG4gICAgbWF4LWhlaWdodDogMTAwdmggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYXgtdy14cyB7XFxuICAgIG1heC13aWR0aDogMjByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYXgtdy1zbSB7XFxuICAgIG1heC13aWR0aDogMzByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYXgtdy1tZCB7XFxuICAgIG1heC13aWR0aDogNDByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYXgtdy1sZyB7XFxuICAgIG1heC13aWR0aDogNTByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYXgtdy14bCB7XFxuICAgIG1heC13aWR0aDogNjByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYXgtdy0yeGwge1xcbiAgICBtYXgtd2lkdGg6IDcwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWF4LXctM3hsIHtcXG4gICAgbWF4LXdpZHRoOiA4MHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1heC13LTR4bCB7XFxuICAgIG1heC13aWR0aDogOTByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptYXgtdy01eGwge1xcbiAgICBtYXgtd2lkdGg6IDEwMHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1heC13LWZ1bGwge1xcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptaW4taC0wIHtcXG4gICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm1pbi1oLWZ1bGwge1xcbiAgICBtaW4taGVpZ2h0OiAxMDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWluLWgtc2NyZWVuIHtcXG4gICAgbWluLWhlaWdodDogMTAwdmggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDptaW4tdy0wIHtcXG4gICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bWluLXctZnVsbCB7XFxuICAgIG1pbi13aWR0aDogMTAwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm9iamVjdC1jb250YWluIHtcXG4gICAgLW8tb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtZml0OiBjb250YWluICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b2JqZWN0LWNvdmVyIHtcXG4gICAgLW8tb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtZmlsbCB7XFxuICAgIC1vLW9iamVjdC1maXQ6IGZpbGwgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LWZpdDogZmlsbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm9iamVjdC1ub25lIHtcXG4gICAgLW8tb2JqZWN0LWZpdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtZml0OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b2JqZWN0LXNjYWxlLWRvd24ge1xcbiAgICAtby1vYmplY3QtZml0OiBzY2FsZS1kb3duICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1maXQ6IHNjYWxlLWRvd24gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtYm90dG9tIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiBib3R0b20gIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiBib3R0b20gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtY2VudGVyIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtbGVmdCB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogbGVmdCAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IGxlZnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtbGVmdC1ib3R0b20ge1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IGxlZnQgYm90dG9tICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogbGVmdCBib3R0b20gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtbGVmdC10b3Age1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IGxlZnQgdG9wICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogbGVmdCB0b3AgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtcmlnaHQge1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IHJpZ2h0ICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogcmlnaHQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtcmlnaHQtYm90dG9tIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiByaWdodCBib3R0b20gIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiByaWdodCBib3R0b20gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtcmlnaHQtdG9wIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiByaWdodCB0b3AgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiByaWdodCB0b3AgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvYmplY3QtdG9wIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiB0b3AgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiB0b3AgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvcGFjaXR5LTAge1xcbiAgICBvcGFjaXR5OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3BhY2l0eS0yNSB7XFxuICAgIG9wYWNpdHk6IDAuMjUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvcGFjaXR5LTUwIHtcXG4gICAgb3BhY2l0eTogMC41ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3BhY2l0eS03NSB7XFxuICAgIG9wYWNpdHk6IDAuNzUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvcGFjaXR5LTEwMCB7XFxuICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvdmVyZmxvdy1hdXRvIHtcXG4gICAgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvdmVyZmxvdy1oaWRkZW4ge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3ZlcmZsb3ctdmlzaWJsZSB7XFxuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3ZlcmZsb3ctc2Nyb2xsIHtcXG4gICAgb3ZlcmZsb3c6IHNjcm9sbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm92ZXJmbG93LXgtYXV0byB7XFxuICAgIG92ZXJmbG93LXg6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvdmVyZmxvdy15LWF1dG8ge1xcbiAgICBvdmVyZmxvdy15OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3ZlcmZsb3cteC1oaWRkZW4ge1xcbiAgICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvdmVyZmxvdy15LWhpZGRlbiB7XFxuICAgIG92ZXJmbG93LXk6IGhpZGRlbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOm92ZXJmbG93LXgtdmlzaWJsZSB7XFxuICAgIG92ZXJmbG93LXg6IHZpc2libGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvdmVyZmxvdy15LXZpc2libGUge1xcbiAgICBvdmVyZmxvdy15OiB2aXNpYmxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6b3ZlcmZsb3cteC1zY3JvbGwge1xcbiAgICBvdmVyZmxvdy14OiBzY3JvbGwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpvdmVyZmxvdy15LXNjcm9sbCB7XFxuICAgIG92ZXJmbG93LXk6IHNjcm9sbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnNjcm9sbGluZy10b3VjaCB7XFxuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnNjcm9sbGluZy1hdXRvIHtcXG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwLTAge1xcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cC0xIHtcXG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnAtMiB7XFxuICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnAtMyB7XFxuICAgIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwLTQge1xcbiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cC01IHtcXG4gICAgcGFkZGluZzogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnAtNiB7XFxuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnAtOCB7XFxuICAgIHBhZGRpbmc6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwLTEwIHtcXG4gICAgcGFkZGluZzogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cC0xMiB7XFxuICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwLTE2IHtcXG4gICAgcGFkZGluZzogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnAtMjAge1xcbiAgICBwYWRkaW5nOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cC0yNCB7XFxuICAgIHBhZGRpbmc6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwLTMyIHtcXG4gICAgcGFkZGluZzogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnAtcHgge1xcbiAgICBwYWRkaW5nOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwLWJhc2Uge1xcbiAgICBwYWRkaW5nOiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweS0wIHtcXG4gICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweC0wIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweS0xIHtcXG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweC0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweS0yIHtcXG4gICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHgtMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB5LTMge1xcbiAgICBwYWRkaW5nLXRvcDogMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB4LTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB5LTQge1xcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB4LTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB5LTUge1xcbiAgICBwYWRkaW5nLXRvcDogMS4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB4LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB5LTYge1xcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweC02IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHktOCB7XFxuICAgIHBhZGRpbmctdG9wOiAycmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHgtOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMnJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHktMTAge1xcbiAgICBwYWRkaW5nLXRvcDogMi41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweC0xMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB5LTEyIHtcXG4gICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHktMTYge1xcbiAgICBwYWRkaW5nLXRvcDogNHJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB4LTE2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweS0yMCB7XFxuICAgIHBhZGRpbmctdG9wOiA1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHgtMjAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB5LTI0IHtcXG4gICAgcGFkZGluZy10b3A6IDZyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogNnJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHktMzIge1xcbiAgICBwYWRkaW5nLXRvcDogOHJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB4LTMyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpweS1weCB7XFxuICAgIHBhZGRpbmctdG9wOiAxcHggIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB4LXB4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcHggIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHktYmFzZSB7XFxuICAgIHBhZGRpbmctdG9wOiAyLjJyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB4LWJhc2Uge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwdC0wIHtcXG4gICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwci0wIHtcXG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBiLTAge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsLTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwdC0xIHtcXG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwci0xIHtcXG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBiLTEge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsLTEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwdC0yIHtcXG4gICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnByLTIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwYi0yIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsLTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB0LTMge1xcbiAgICBwYWRkaW5nLXRvcDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnByLTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGItMyB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGwtMyB7XFxuICAgIHBhZGRpbmctbGVmdDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB0LTQge1xcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnByLTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGItNCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGwtNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB0LTUge1xcbiAgICBwYWRkaW5nLXRvcDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnByLTUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGItNSB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGwtNSB7XFxuICAgIHBhZGRpbmctbGVmdDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB0LTYge1xcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHItNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBiLTYge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGwtNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHQtOCB7XFxuICAgIHBhZGRpbmctdG9wOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHItOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwYi04IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwbC04IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHQtMTAge1xcbiAgICBwYWRkaW5nLXRvcDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHItMTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwYi0xMCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwbC0xMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHQtMTIge1xcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnByLTEyIHtcXG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBiLTEyIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwbC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB0LTE2IHtcXG4gICAgcGFkZGluZy10b3A6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwci0xNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwYi0xNiB7XFxuICAgIHBhZGRpbmctYm90dG9tOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGwtMTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwdC0yMCB7XFxuICAgIHBhZGRpbmctdG9wOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHItMjAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGItMjAge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsLTIwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHQtMjQge1xcbiAgICBwYWRkaW5nLXRvcDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnByLTI0IHtcXG4gICAgcGFkZGluZy1yaWdodDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBiLTI0IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwbC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnB0LTMyIHtcXG4gICAgcGFkZGluZy10b3A6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwci0zMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwYi0zMiB7XFxuICAgIHBhZGRpbmctYm90dG9tOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGwtMzIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwdC1weCB7XFxuICAgIHBhZGRpbmctdG9wOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwci1weCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBiLXB4IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsLXB4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwdC1iYXNlIHtcXG4gICAgcGFkZGluZy10b3A6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnByLWJhc2Uge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwYi1iYXNlIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsLWJhc2Uge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGxhY2Vob2xkZXItYmxhY2s6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwbGFjZWhvbGRlci1ibGFjazotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGxhY2Vob2xkZXItd2hpdGU6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwbGFjZWhvbGRlci13aGl0ZTotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGxhY2Vob2xkZXItZ3JleTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGxhY2Vob2xkZXItZ3JleTo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGxhY2Vob2xkZXItZ3JleTotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cGxhY2Vob2xkZXItZ3JleTo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItYmxhY2s6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItYmxhY2s6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItd2hpdGU6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5OmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleTpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleTpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleTpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBvaW50ZXItZXZlbnRzLW5vbmUge1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnBvaW50ZXItZXZlbnRzLWF1dG8ge1xcbiAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnN0YXRpYyB7XFxuICAgIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmaXhlZCB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmFic29sdXRlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cmVsYXRpdmUge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpzdGlja3kge1xcbiAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kgIWltcG9ydGFudDtcXG4gICAgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmluc2V0LTAge1xcbiAgICB0b3A6IDAgIWltcG9ydGFudDtcXG4gICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcXG4gICAgYm90dG9tOiAwICFpbXBvcnRhbnQ7XFxuICAgIGxlZnQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDppbnNldC1hdXRvIHtcXG4gICAgdG9wOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIGJvdHRvbTogYXV0byAhaW1wb3J0YW50O1xcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aW5zZXQteS0wIHtcXG4gICAgdG9wOiAwICFpbXBvcnRhbnQ7XFxuICAgIGJvdHRvbTogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmluc2V0LXgtMCB7XFxuICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XFxuICAgIGxlZnQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDppbnNldC15LWF1dG8ge1xcbiAgICB0b3A6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgYm90dG9tOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aW5zZXQteC1hdXRvIHtcXG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRvcC0wIHtcXG4gICAgdG9wOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cmlnaHQtMCB7XFxuICAgIHJpZ2h0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Ym90dG9tLTAge1xcbiAgICBib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpsZWZ0LTAge1xcbiAgICBsZWZ0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dG9wLWF1dG8ge1xcbiAgICB0b3A6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpyaWdodC1hdXRvIHtcXG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpib3R0b20tYXV0byB7XFxuICAgIGJvdHRvbTogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmxlZnQtYXV0byB7XFxuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpyZXNpemUtbm9uZSB7XFxuICAgIHJlc2l6ZTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnJlc2l6ZS15IHtcXG4gICAgcmVzaXplOiB2ZXJ0aWNhbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnJlc2l6ZS14IHtcXG4gICAgcmVzaXplOiBob3Jpem9udGFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cmVzaXplIHtcXG4gICAgcmVzaXplOiBib3RoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6c2hhZG93IHtcXG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjEwKSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnNoYWRvdy1tZCB7XFxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoMCwwLDAsMC4xMiksIDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wOCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpzaGFkb3ctbGcge1xcbiAgICBib3gtc2hhZG93OiAwIDE1cHggMzBweCAwIHJnYmEoMCwwLDAsMC4xMSksIDAgNXB4IDE1cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6c2hhZG93LWlubmVyIHtcXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA2KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnNoYWRvdy14bCB7XFxuICAgIGJveC1zaGFkb3c6IDAgMjBweCAyNXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDEwcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4wNCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpzaGFkb3ctMnhsIHtcXG4gICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiYSgwLCAwLCAwLCAwLjI1KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnNoYWRvdy1vdXRsaW5lIHtcXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTIsMTQ0LDIyMCwwLjUpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6c2hhZG93LW5vbmUge1xcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6c2hhZG93LWRyb3Age1xcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsMCwwLDAuMTQpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOnNoYWRvdzpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4xMCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6c2hhZG93LW1kOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpzaGFkb3ctbGc6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiAwIDE1cHggMzBweCAwIHJnYmEoMCwwLDAsMC4xMSksIDAgNXB4IDE1cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOnNoYWRvdy1pbm5lcjpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wNikgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6c2hhZG93LXhsOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMTBweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjA0KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpzaGFkb3ctMnhsOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiYSgwLCAwLCAwLCAwLjI1KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpzaGFkb3ctb3V0bGluZTpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLDE0NCwyMjAsMC41KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpzaGFkb3ctbm9uZTpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6c2hhZG93LWRyb3A6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsMCwwLDAuMTQpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnNoYWRvdzpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4xMCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6c2hhZG93LW1kOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpzaGFkb3ctbGc6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiAwIDE1cHggMzBweCAwIHJnYmEoMCwwLDAsMC4xMSksIDAgNXB4IDE1cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnNoYWRvdy1pbm5lcjpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wNikgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6c2hhZG93LXhsOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMTBweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjA0KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpzaGFkb3ctMnhsOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiYSgwLCAwLCAwLCAwLjI1KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpzaGFkb3ctb3V0bGluZTpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLDE0NCwyMjAsMC41KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpzaGFkb3ctbm9uZTpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6c2hhZG93LWRyb3A6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsMCwwLDAuMTQpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGFibGUtYXV0byB7XFxuICAgIHRhYmxlLWxheW91dDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRhYmxlLWZpeGVkIHtcXG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRleHQtbGVmdCB7XFxuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp0ZXh0LWNlbnRlciB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRleHQtcmlnaHQge1xcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRleHQtanVzdGlmeSB7XFxuICAgIHRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp0ZXh0LXRyYW5zcGFyZW50IHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC1ibGFjayB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC13aGl0ZSB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC1ncmV5IHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp0ZXh0LWdyZXktbGlnaHQge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDp0ZXh0LXRyYW5zcGFyZW50OmhvdmVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOnRleHQtYmxhY2s6aG92ZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDp0ZXh0LXdoaXRlOmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6dGV4dC1ncmV5OmhvdmVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6dGV4dC1ncmV5LWxpZ2h0OmhvdmVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6dGV4dC10cmFuc3BhcmVudDpmb2N1cyB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDp0ZXh0LWJsYWNrOmZvY3VzIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6dGV4dC13aGl0ZTpmb2N1cyB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnRleHQtZ3JleTpmb2N1cyB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOnRleHQtZ3JleS1saWdodDpmb2N1cyB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC14cyB7XFxuICAgIGZvbnQtc2l6ZTogLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC1zbSB7XFxuICAgIGZvbnQtc2l6ZTogLjg3NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRleHQtYmFzZSB7XFxuICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRleHQtbGcge1xcbiAgICBmb250LXNpemU6IDEuMTI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC14bCB7XFxuICAgIGZvbnQtc2l6ZTogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRleHQtMnhsIHtcXG4gICAgZm9udC1zaXplOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp0ZXh0LTN4bCB7XFxuICAgIGZvbnQtc2l6ZTogMS44NzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp0ZXh0LTR4bCB7XFxuICAgIGZvbnQtc2l6ZTogMi4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRleHQtNXhsIHtcXG4gICAgZm9udC1zaXplOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC02eGwge1xcbiAgICBmb250LXNpemU6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDppdGFsaWMge1xcbiAgICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpub3QtaXRhbGljIHtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOml0YWxpYzpob3ZlciB7XFxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpub3QtaXRhbGljOmhvdmVyIHtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOml0YWxpYzpmb2N1cyB7XFxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpub3QtaXRhbGljOmZvY3VzIHtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dXBwZXJjYXNlIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmxvd2VyY2FzZSB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpjYXBpdGFsaXplIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpub3JtYWwtY2FzZSB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOnVwcGVyY2FzZTpob3ZlciB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6bG93ZXJjYXNlOmhvdmVyIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmhvdmVyXFxcXDpjYXBpdGFsaXplOmhvdmVyIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6bm9ybWFsLWNhc2U6aG92ZXIge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDp1cHBlcmNhc2U6Zm9jdXMge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOmxvd2VyY2FzZTpmb2N1cyB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6Y2FwaXRhbGl6ZTpmb2N1cyB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6Zm9jdXNcXFxcOm5vcm1hbC1jYXNlOmZvY3VzIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp1bmRlcmxpbmUge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmxpbmUtdGhyb3VnaCB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bm8tdW5kZXJsaW5lIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOnVuZGVybGluZTpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOmxpbmUtdGhyb3VnaDpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOm5vLXVuZGVybGluZTpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDp1bmRlcmxpbmU6Zm9jdXMge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpsaW5lLXRocm91Z2g6Zm9jdXMge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDpuby11bmRlcmxpbmU6Zm9jdXMge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDphbnRpYWxpYXNlZCB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkICFpbXBvcnRhbnQ7XFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpzdWJwaXhlbC1hbnRpYWxpYXNlZCB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpob3ZlclxcXFw6YW50aWFsaWFzZWQ6aG92ZXIge1xcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZCAhaW1wb3J0YW50O1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aG92ZXJcXFxcOnN1YnBpeGVsLWFudGlhbGlhc2VkOmhvdmVyIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50O1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmZvY3VzXFxcXDphbnRpYWxpYXNlZDpmb2N1cyB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkICFpbXBvcnRhbnQ7XFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDpmb2N1c1xcXFw6c3VicGl4ZWwtYW50aWFsaWFzZWQ6Zm9jdXMge1xcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6c2VsZWN0LW5vbmUge1xcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6c2VsZWN0LXRleHQge1xcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IHRleHQgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy11c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6c2VsZWN0LWFsbCB7XFxuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IGFsbCAhaW1wb3J0YW50O1xcbiAgICAgICAtbW96LXVzZXItc2VsZWN0OiBhbGwgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy11c2VyLXNlbGVjdDogYWxsICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IGFsbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnNlbGVjdC1hdXRvIHtcXG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYXV0byAhaW1wb3J0YW50O1xcbiAgICAgICAtbW96LXVzZXItc2VsZWN0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmFsaWduLWJhc2VsaW5lIHtcXG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6YWxpZ24tdG9wIHtcXG4gICAgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmFsaWduLW1pZGRsZSB7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDphbGlnbi1ib3R0b20ge1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6YWxpZ24tdGV4dC10b3Age1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDphbGlnbi10ZXh0LWJvdHRvbSB7XFxuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnZpc2libGUge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6aW52aXNpYmxlIHtcXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6d2hpdGVzcGFjZS1ub3JtYWwge1xcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6d2hpdGVzcGFjZS1uby13cmFwIHtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOndoaXRlc3BhY2UtcHJlIHtcXG4gICAgd2hpdGUtc3BhY2U6IHByZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOndoaXRlc3BhY2UtcHJlLWxpbmUge1xcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3aGl0ZXNwYWNlLXByZS13cmFwIHtcXG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6YnJlYWstbm9ybWFsIHtcXG4gICAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsICFpbXBvcnRhbnQ7XFxuICAgIHdvcmQtYnJlYWs6IG5vcm1hbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJyZWFrLXdvcmRzIHtcXG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOmJyZWFrLWFsbCB7XFxuICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnRydW5jYXRlIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyAhaW1wb3J0YW50O1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0xIHtcXG4gICAgd2lkdGg6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTIge1xcbiAgICB3aWR0aDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0zIHtcXG4gICAgd2lkdGg6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTQge1xcbiAgICB3aWR0aDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctNSB7XFxuICAgIHdpZHRoOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy02IHtcXG4gICAgd2lkdGg6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctOCB7XFxuICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0xMCB7XFxuICAgIHdpZHRoOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTEyIHtcXG4gICAgd2lkdGg6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTE2IHtcXG4gICAgd2lkdGg6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTI0IHtcXG4gICAgd2lkdGg6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTMyIHtcXG4gICAgd2lkdGg6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTQ4IHtcXG4gICAgd2lkdGg6IDEycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy02NCB7XFxuICAgIHdpZHRoOiAxNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctYXV0byB7XFxuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy1weCB7XFxuICAgIHdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTFcXFxcLzIge1xcbiAgICB3aWR0aDogNTAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0xXFxcXC8zIHtcXG4gICAgd2lkdGg6IDMzLjMzMzMzJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctMlxcXFwvMyB7XFxuICAgIHdpZHRoOiA2Ni42NjY2NyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTFcXFxcLzQge1xcbiAgICB3aWR0aDogMjUlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0zXFxcXC80IHtcXG4gICAgd2lkdGg6IDc1JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctMVxcXFwvNSB7XFxuICAgIHdpZHRoOiAyMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTJcXFxcLzUge1xcbiAgICB3aWR0aDogNDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0zXFxcXC81IHtcXG4gICAgd2lkdGg6IDYwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctNFxcXFwvNSB7XFxuICAgIHdpZHRoOiA4MCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTFcXFxcLzYge1xcbiAgICB3aWR0aDogMTYuNjY2NjclICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy01XFxcXC82IHtcXG4gICAgd2lkdGg6IDgzLjMzMzMzJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctMVxcXFwvMTIge1xcbiAgICB3aWR0aDogOC4zMzMzMyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTJcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDE2LjY2NjY3JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctM1xcXFwvMTIge1xcbiAgICB3aWR0aDogMjUlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy00XFxcXC8xMiB7XFxuICAgIHdpZHRoOiAzMy4zMzMzMyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTVcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDQxLjY2NjY3JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctNlxcXFwvMTIge1xcbiAgICB3aWR0aDogNTAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy03XFxcXC8xMiB7XFxuICAgIHdpZHRoOiA1OC4zMzMzMyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LThcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDY2LjY2NjY3JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnctOVxcXFwvMTIge1xcbiAgICB3aWR0aDogNzUlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0xMFxcXFwvMTIge1xcbiAgICB3aWR0aDogODMuMzMzMzMlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0xMVxcXFwvMTIge1xcbiAgICB3aWR0aDogOTEuNjY2NjclICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy1mdWxsIHtcXG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp3LXNjcmVlbiB7XFxuICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubWRcXFxcOnotMCB7XFxuICAgIHotaW5kZXg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp6LTEwIHtcXG4gICAgei1pbmRleDogMTAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp6LTIwIHtcXG4gICAgei1pbmRleDogMjAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp6LTMwIHtcXG4gICAgei1pbmRleDogMzAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp6LTQwIHtcXG4gICAgei1pbmRleDogNDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp6LTUwIHtcXG4gICAgei1pbmRleDogNTAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLm1kXFxcXDp6LWF1dG8ge1xcbiAgICB6LWluZGV4OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG59XFxuXFxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XFxuICAubGdcXFxcOnNyLW9ubHkge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcXG4gICAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbjogLTFweCAhaW1wb3J0YW50O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XFxuICAgIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCkgIWltcG9ydGFudDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xcbiAgICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpub3Qtc3Itb25seSB7XFxuICAgIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcXG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICAgIGNsaXA6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpzci1vbmx5OmZvY3VzIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XFxuICAgIHdpZHRoOiAxcHggIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiAxcHggIWltcG9ydGFudDtcXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xcbiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApICFpbXBvcnRhbnQ7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcXG4gICAgYm9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOm5vdC1zci1vbmx5OmZvY3VzIHtcXG4gICAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xcbiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcXG4gICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcXG4gICAgY2xpcDogYXV0byAhaW1wb3J0YW50O1xcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6YXBwZWFyYW5jZS1ub25lIHtcXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpiZy1maXhlZCB7XFxuICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpiZy1sb2NhbCB7XFxuICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogbG9jYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpiZy1zY3JvbGwge1xcbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IHNjcm9sbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJnLXRyYW5zcGFyZW50IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpiZy1ibGFjayB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpiZy13aGl0ZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpiZy1ncmV5IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJnLWdyZXktbGlnaHQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOmJnLXRyYW5zcGFyZW50OmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6YmctYmxhY2s6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOmJnLXdoaXRlOmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpiZy1ncmV5OmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpiZy1ncmV5LWxpZ2h0OmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpiZy10cmFuc3BhcmVudDpmb2N1cyB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOmJnLWJsYWNrOmZvY3VzIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpiZy13aGl0ZTpmb2N1cyB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6YmctZ3JleTpmb2N1cyB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6YmctZ3JleS1saWdodDpmb2N1cyB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpiZy1hdXRvIHtcXG4gICAgYmFja2dyb3VuZC1zaXplOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6YmctY292ZXIge1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6YmctY29udGFpbiB7XFxuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci10cmFuc3BhcmVudCB7XFxuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItYmxhY2sge1xcbiAgICBib3JkZXItY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItd2hpdGUge1xcbiAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItZ3JleSB7XFxuICAgIGJvcmRlci1jb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci1ncmV5LWxpZ2h0IHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOmJvcmRlci10cmFuc3BhcmVudDpob3ZlciB7XFxuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6Ym9yZGVyLWJsYWNrOmhvdmVyIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOmJvcmRlci13aGl0ZTpob3ZlciB7XFxuICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpib3JkZXItZ3JleTpob3ZlciB7XFxuICAgIGJvcmRlci1jb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpib3JkZXItZ3JleS1saWdodDpob3ZlciB7XFxuICAgIGJvcmRlci1jb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci1zb2xpZCB7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItZGFzaGVkIHtcXG4gICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItZG90dGVkIHtcXG4gICAgYm9yZGVyLXN0eWxlOiBkb3R0ZWQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItZG91YmxlIHtcXG4gICAgYm9yZGVyLXN0eWxlOiBkb3VibGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItbm9uZSB7XFxuICAgIGJvcmRlci1zdHlsZTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci0wIHtcXG4gICAgYm9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym9yZGVyLTIge1xcbiAgICBib3JkZXItd2lkdGg6IDJweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci00IHtcXG4gICAgYm9yZGVyLXdpZHRoOiA0cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItOCB7XFxuICAgIGJvcmRlci13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym9yZGVyIHtcXG4gICAgYm9yZGVyLXdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItdC0wIHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci1yLTAge1xcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItYi0wIHtcXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci1sLTAge1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci10LTIge1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiAycHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItci0yIHtcXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAycHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItYi0yIHtcXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym9yZGVyLWwtMiB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAycHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItdC00IHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogNHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym9yZGVyLXItNCB7XFxuICAgIGJvcmRlci1yaWdodC13aWR0aDogNHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym9yZGVyLWItNCB7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDRweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci1sLTQge1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogNHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym9yZGVyLXQtOCB7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDhweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci1yLTgge1xcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDhweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci1iLTgge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiA4cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpib3JkZXItbC04IHtcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDhweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci10IHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym9yZGVyLXIge1xcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvcmRlci1iIHtcXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym9yZGVyLWwge1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6YmxvY2sge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmlubGluZS1ibG9jayB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmlubGluZSB7XFxuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZsZXgge1xcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aW5saW5lLWZsZXgge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRhYmxlIHtcXG4gICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0YWJsZS1yb3cge1xcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0YWJsZS1jZWxsIHtcXG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhpZGRlbiB7XFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmbGV4LXJvdyB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmbGV4LXJvdy1yZXZlcnNlIHtcXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ZmxleC1jb2wge1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ZmxleC1jb2wtcmV2ZXJzZSB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZsZXgtd3JhcCB7XFxuICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZsZXgtd3JhcC1yZXZlcnNlIHtcXG4gICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmbGV4LW5vLXdyYXAge1xcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOml0ZW1zLXN0YXJ0IHtcXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDppdGVtcy1lbmQge1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDppdGVtcy1jZW50ZXIge1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aXRlbXMtYmFzZWxpbmUge1xcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDppdGVtcy1zdHJldGNoIHtcXG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzZWxmLWF1dG8ge1xcbiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6c2VsZi1zdGFydCB7XFxuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzZWxmLWVuZCB7XFxuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6c2VsZi1jZW50ZXIge1xcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzZWxmLXN0cmV0Y2gge1xcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6anVzdGlmeS1zdGFydCB7XFxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmp1c3RpZnktZW5kIHtcXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmp1c3RpZnktY2VudGVyIHtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpqdXN0aWZ5LWJldHdlZW4ge1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpqdXN0aWZ5LWFyb3VuZCB7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Y29udGVudC1jZW50ZXIge1xcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpjb250ZW50LXN0YXJ0IHtcXG4gICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmNvbnRlbnQtZW5kIHtcXG4gICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpjb250ZW50LWJldHdlZW4ge1xcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Y29udGVudC1hcm91bmQge1xcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmbGV4LTEge1xcbiAgICBmbGV4OiAxIDEgMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmbGV4LWF1dG8ge1xcbiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZsZXgtaW5pdGlhbCB7XFxuICAgIGZsZXg6IDAgMSBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ZmxleC1ub25lIHtcXG4gICAgZmxleDogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZsZXgtZ3Jvdy0wIHtcXG4gICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ZmxleC1ncm93IHtcXG4gICAgZmxleC1ncm93OiAxICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ZmxleC1zaHJpbmstMCB7XFxuICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ZmxleC1zaHJpbmsge1xcbiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9yZGVyLTEge1xcbiAgICBvcmRlcjogMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9yZGVyLTIge1xcbiAgICBvcmRlcjogMiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9yZGVyLTMge1xcbiAgICBvcmRlcjogMyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9yZGVyLTQge1xcbiAgICBvcmRlcjogNCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9yZGVyLTUge1xcbiAgICBvcmRlcjogNSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9yZGVyLTYge1xcbiAgICBvcmRlcjogNiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9yZGVyLWZpcnN0IHtcXG4gICAgb3JkZXI6IC0xICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3JkZXItbGFzdCB7XFxuICAgIG9yZGVyOiA5OTkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpvcmRlci1ub3JtYWwge1xcbiAgICBvcmRlcjogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpvcmRlci0xOmhvdmVyIHtcXG4gICAgb3JkZXI6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6b3JkZXItMjpob3ZlciB7XFxuICAgIG9yZGVyOiAyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOm9yZGVyLTM6aG92ZXIge1xcbiAgICBvcmRlcjogMyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpvcmRlci00OmhvdmVyIHtcXG4gICAgb3JkZXI6IDQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6b3JkZXItNTpob3ZlciB7XFxuICAgIG9yZGVyOiA1ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOm9yZGVyLTY6aG92ZXIge1xcbiAgICBvcmRlcjogNiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpvcmRlci1maXJzdDpob3ZlciB7XFxuICAgIG9yZGVyOiAtMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpvcmRlci1sYXN0OmhvdmVyIHtcXG4gICAgb3JkZXI6IDk5OSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpvcmRlci1ub3JtYWw6aG92ZXIge1xcbiAgICBvcmRlcjogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpvcmRlci0xOmZvY3VzIHtcXG4gICAgb3JkZXI6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6b3JkZXItMjpmb2N1cyB7XFxuICAgIG9yZGVyOiAyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOm9yZGVyLTM6Zm9jdXMge1xcbiAgICBvcmRlcjogMyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpvcmRlci00OmZvY3VzIHtcXG4gICAgb3JkZXI6IDQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6b3JkZXItNTpmb2N1cyB7XFxuICAgIG9yZGVyOiA1ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOm9yZGVyLTY6Zm9jdXMge1xcbiAgICBvcmRlcjogNiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpvcmRlci1maXJzdDpmb2N1cyB7XFxuICAgIG9yZGVyOiAtMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpvcmRlci1sYXN0OmZvY3VzIHtcXG4gICAgb3JkZXI6IDk5OSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpvcmRlci1ub3JtYWw6Zm9jdXMge1xcbiAgICBvcmRlcjogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZsb2F0LXJpZ2h0IHtcXG4gICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ZmxvYXQtbGVmdCB7XFxuICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ZmxvYXQtbm9uZSB7XFxuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Y2xlYXJmaXg6YWZ0ZXIge1xcbiAgICBjb250ZW50OiBcXFwiXFxcIiAhaW1wb3J0YW50O1xcbiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50O1xcbiAgICBjbGVhcjogYm90aCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvbnQtbGlnaHQge1xcbiAgICBmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9udC1ub3JtYWwge1xcbiAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9udC1tZWRpdW0ge1xcbiAgICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9udC1zZW1pYm9sZCB7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb250LWJvbGQge1xcbiAgICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9udC1leHRyYWJvbGQge1xcbiAgICBmb250LXdlaWdodDogODAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9udC1ibGFjayB7XFxuICAgIGZvbnQtd2VpZ2h0OiA5MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6Zm9udC1saWdodDpob3ZlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6Zm9udC1ub3JtYWw6aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOmZvbnQtbWVkaXVtOmhvdmVyIHtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpmb250LXNlbWlib2xkOmhvdmVyIHtcXG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpmb250LWJvbGQ6aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOmZvbnQtZXh0cmFib2xkOmhvdmVyIHtcXG4gICAgZm9udC13ZWlnaHQ6IDgwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpmb250LWJsYWNrOmhvdmVyIHtcXG4gICAgZm9udC13ZWlnaHQ6IDkwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmgtMSB7XFxuICAgIGhlaWdodDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmgtMiB7XFxuICAgIGhlaWdodDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aC0zIHtcXG4gICAgaGVpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aC00IHtcXG4gICAgaGVpZ2h0OiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aC01IHtcXG4gICAgaGVpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aC02IHtcXG4gICAgaGVpZ2h0OiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpoLTgge1xcbiAgICBoZWlnaHQ6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpoLTEwIHtcXG4gICAgaGVpZ2h0OiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpoLTEyIHtcXG4gICAgaGVpZ2h0OiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aC0xNiB7XFxuICAgIGhlaWdodDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmgtMjQge1xcbiAgICBoZWlnaHQ6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpoLTMyIHtcXG4gICAgaGVpZ2h0OiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aC00OCB7XFxuICAgIGhlaWdodDogMTJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpoLTY0IHtcXG4gICAgaGVpZ2h0OiAxNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmgtYXV0byB7XFxuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmgtcHgge1xcbiAgICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmgtZnVsbCB7XFxuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmgtc2NyZWVuIHtcXG4gICAgaGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmxlYWRpbmctbm9uZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAxICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bGVhZGluZy10aWdodCB7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI1ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bGVhZGluZy1ub3JtYWwge1xcbiAgICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bGVhZGluZy1sb29zZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bGlzdC1pbnNpZGUge1xcbiAgICBsaXN0LXN0eWxlLXBvc2l0aW9uOiBpbnNpZGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpsaXN0LW91dHNpZGUge1xcbiAgICBsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bS0wIHtcXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bS0xIHtcXG4gICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bS0yIHtcXG4gICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptLTMge1xcbiAgICBtYXJnaW46IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptLTQge1xcbiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptLTUge1xcbiAgICBtYXJnaW46IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptLTYge1xcbiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm0tOCB7XFxuICAgIG1hcmdpbjogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm0tMTAge1xcbiAgICBtYXJnaW46IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm0tMTIge1xcbiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptLTE2IHtcXG4gICAgbWFyZ2luOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bS0yMCB7XFxuICAgIG1hcmdpbjogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm0tMjQge1xcbiAgICBtYXJnaW46IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptLTMyIHtcXG4gICAgbWFyZ2luOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bS1hdXRvIHtcXG4gICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bS1weCB7XFxuICAgIG1hcmdpbjogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bS1iYXNlIHtcXG4gICAgbWFyZ2luOiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbS1weCB7XFxuICAgIG1hcmdpbjogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1tLTEge1xcbiAgICBtYXJnaW46IC0wLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW0tMiB7XFxuICAgIG1hcmdpbjogLTAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1tLTMge1xcbiAgICBtYXJnaW46IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW0tNCB7XFxuICAgIG1hcmdpbjogLTFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteS0wIHtcXG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXgtMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm15LTEge1xcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteC0xIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXktMiB7XFxuICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteC0yIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm15LTMge1xcbiAgICBtYXJnaW4tdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteC0zIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXktNCB7XFxuICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm14LTQge1xcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteS01IHtcXG4gICAgbWFyZ2luLXRvcDogMS4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXgtNSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm15LTYge1xcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXgtNiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteS04IHtcXG4gICAgbWFyZ2luLXRvcDogMnJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXgtOCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm15LTEwIHtcXG4gICAgbWFyZ2luLXRvcDogMi41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm14LTEwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDIuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm15LTEyIHtcXG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXgtMTIge1xcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteS0xNiB7XFxuICAgIG1hcmdpbi10b3A6IDRyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm14LTE2IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDRyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXktMjAge1xcbiAgICBtYXJnaW4tdG9wOiA1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteC0yMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm15LTI0IHtcXG4gICAgbWFyZ2luLXRvcDogNnJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXgtMjQge1xcbiAgICBtYXJnaW4tbGVmdDogNnJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteS0zMiB7XFxuICAgIG1hcmdpbi10b3A6IDhyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm14LTMyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDhyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXktYXV0byB7XFxuICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm14LWF1dG8ge1xcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteS1weCB7XFxuICAgIG1hcmdpbi10b3A6IDFweCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteC1weCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxcHggIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpteS1iYXNlIHtcXG4gICAgbWFyZ2luLXRvcDogMi4ycmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm14LWJhc2Uge1xcbiAgICBtYXJnaW4tbGVmdDogMi4ycmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW15LXB4IHtcXG4gICAgbWFyZ2luLXRvcDogLTFweCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW14LXB4IHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0xcHggIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW15LTEge1xcbiAgICBtYXJnaW4tdG9wOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1teC0xIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbXktMiB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1teC0yIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0wLjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW15LTMge1xcbiAgICBtYXJnaW4tdG9wOiAtMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1teC0zIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0wLjc1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogLTAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbXktNCB7XFxuICAgIG1hcmdpbi10b3A6IC0xcmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IC0xcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW14LTQge1xcbiAgICBtYXJnaW4tbGVmdDogLTFyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm10LTAge1xcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXItMCB7XFxuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTAge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWwtMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXQtMSB7XFxuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptci0xIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWItMSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptbC0xIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptdC0yIHtcXG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXItMiB7XFxuICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWItMiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1sLTIge1xcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXQtMyB7XFxuICAgIG1hcmdpbi10b3A6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptci0zIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWItMyB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptbC0zIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptdC00IHtcXG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1yLTQge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptYi00IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1sLTQge1xcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm10LTUge1xcbiAgICBtYXJnaW4tdG9wOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXItNSB7XFxuICAgIG1hcmdpbi1yaWdodDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTUge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWwtNSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXQtNiB7XFxuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1yLTYge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTYge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptbC02IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm10LTgge1xcbiAgICBtYXJnaW4tdG9wOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXItOCB7XFxuICAgIG1hcmdpbi1yaWdodDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTgge1xcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWwtOCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXQtMTAge1xcbiAgICBtYXJnaW4tdG9wOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptci0xMCB7XFxuICAgIG1hcmdpbi1yaWdodDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWItMTAge1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptbC0xMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptdC0xMiB7XFxuICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptci0xMiB7XFxuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTEyIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1sLTEyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptdC0xNiB7XFxuICAgIG1hcmdpbi10b3A6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptci0xNiB7XFxuICAgIG1hcmdpbi1yaWdodDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTE2IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1sLTE2IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptdC0yMCB7XFxuICAgIG1hcmdpbi10b3A6IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptci0yMCB7XFxuICAgIG1hcmdpbi1yaWdodDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTIwIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1sLTIwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptdC0yNCB7XFxuICAgIG1hcmdpbi10b3A6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptci0yNCB7XFxuICAgIG1hcmdpbi1yaWdodDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTI0IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1sLTI0IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptdC0zMiB7XFxuICAgIG1hcmdpbi10b3A6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptci0zMiB7XFxuICAgIG1hcmdpbi1yaWdodDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTMyIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1sLTMyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptdC1hdXRvIHtcXG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1yLWF1dG8ge1xcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptYi1hdXRvIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1sLWF1dG8ge1xcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm10LXB4IHtcXG4gICAgbWFyZ2luLXRvcDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXItcHgge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLXB4IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWwtcHgge1xcbiAgICBtYXJnaW4tbGVmdDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXQtYmFzZSB7XFxuICAgIG1hcmdpbi10b3A6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1yLWJhc2Uge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLWJhc2Uge1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptbC1iYXNlIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1tdC1weCB7XFxuICAgIG1hcmdpbi10b3A6IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbXItcHgge1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbWItcHgge1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW1sLXB4IHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbXQtMSB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW1yLTEge1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW1iLTEge1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1tbC0xIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW10LTIge1xcbiAgICBtYXJnaW4tdG9wOiAtMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW1yLTIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbWItMiB7XFxuICAgIG1hcmdpbi1ib3R0b206IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbWwtMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW10LTMge1xcbiAgICBtYXJnaW4tdG9wOiAtMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1tci0zIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1tYi0zIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbWwtMyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOi1tdC00IHtcXG4gICAgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbXItNCB7XFxuICAgIG1hcmdpbi1yaWdodDogLTFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDotbWItNCB7XFxuICAgIG1hcmdpbi1ib3R0b206IC0xcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6LW1sLTQge1xcbiAgICBtYXJnaW4tbGVmdDogLTFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptYXgtaC1mdWxsIHtcXG4gICAgbWF4LWhlaWdodDogMTAwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1heC1oLXNjcmVlbiB7XFxuICAgIG1heC1oZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWF4LXcteHMge1xcbiAgICBtYXgtd2lkdGg6IDIwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWF4LXctc20ge1xcbiAgICBtYXgtd2lkdGg6IDMwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWF4LXctbWQge1xcbiAgICBtYXgtd2lkdGg6IDQwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWF4LXctbGcge1xcbiAgICBtYXgtd2lkdGg6IDUwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWF4LXcteGwge1xcbiAgICBtYXgtd2lkdGg6IDYwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWF4LXctMnhsIHtcXG4gICAgbWF4LXdpZHRoOiA3MHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1heC13LTN4bCB7XFxuICAgIG1heC13aWR0aDogODByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptYXgtdy00eGwge1xcbiAgICBtYXgtd2lkdGg6IDkwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWF4LXctNXhsIHtcXG4gICAgbWF4LXdpZHRoOiAxMDByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptYXgtdy1mdWxsIHtcXG4gICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWluLWgtMCB7XFxuICAgIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDptaW4taC1mdWxsIHtcXG4gICAgbWluLWhlaWdodDogMTAwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1pbi1oLXNjcmVlbiB7XFxuICAgIG1pbi1oZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWluLXctMCB7XFxuICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm1pbi13LWZ1bGwge1xcbiAgICBtaW4td2lkdGg6IDEwMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpvYmplY3QtY29udGFpbiB7XFxuICAgIC1vLW9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9iamVjdC1jb3ZlciB7XFxuICAgIC1vLW9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LWZpbGwge1xcbiAgICAtby1vYmplY3QtZml0OiBmaWxsICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1maXQ6IGZpbGwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpvYmplY3Qtbm9uZSB7XFxuICAgIC1vLW9iamVjdC1maXQ6IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LWZpdDogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9iamVjdC1zY2FsZS1kb3duIHtcXG4gICAgLW8tb2JqZWN0LWZpdDogc2NhbGUtZG93biAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtZml0OiBzY2FsZS1kb3duICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LWJvdHRvbSB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogYm90dG9tICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogYm90dG9tICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LWNlbnRlciB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LWxlZnQge1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IGxlZnQgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiBsZWZ0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LWxlZnQtYm90dG9tIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiBsZWZ0IGJvdHRvbSAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IGxlZnQgYm90dG9tICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LWxlZnQtdG9wIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiBsZWZ0IHRvcCAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IGxlZnQgdG9wICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LXJpZ2h0IHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiByaWdodCAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IHJpZ2h0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LXJpZ2h0LWJvdHRvbSB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogcmlnaHQgYm90dG9tICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogcmlnaHQgYm90dG9tICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LXJpZ2h0LXRvcCB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogcmlnaHQgdG9wICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogcmlnaHQgdG9wICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b2JqZWN0LXRvcCB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogdG9wICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogdG9wICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3BhY2l0eS0wIHtcXG4gICAgb3BhY2l0eTogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9wYWNpdHktMjUge1xcbiAgICBvcGFjaXR5OiAwLjI1ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3BhY2l0eS01MCB7XFxuICAgIG9wYWNpdHk6IDAuNSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm9wYWNpdHktNzUge1xcbiAgICBvcGFjaXR5OiAwLjc1ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3BhY2l0eS0xMDAge1xcbiAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3ZlcmZsb3ctYXV0byB7XFxuICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3ZlcmZsb3ctaGlkZGVuIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm92ZXJmbG93LXZpc2libGUge1xcbiAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm92ZXJmbG93LXNjcm9sbCB7XFxuICAgIG92ZXJmbG93OiBzY3JvbGwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpvdmVyZmxvdy14LWF1dG8ge1xcbiAgICBvdmVyZmxvdy14OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3ZlcmZsb3cteS1hdXRvIHtcXG4gICAgb3ZlcmZsb3cteTogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm92ZXJmbG93LXgtaGlkZGVuIHtcXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3ZlcmZsb3cteS1oaWRkZW4ge1xcbiAgICBvdmVyZmxvdy15OiBoaWRkZW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpvdmVyZmxvdy14LXZpc2libGUge1xcbiAgICBvdmVyZmxvdy14OiB2aXNpYmxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3ZlcmZsb3cteS12aXNpYmxlIHtcXG4gICAgb3ZlcmZsb3cteTogdmlzaWJsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm92ZXJmbG93LXgtc2Nyb2xsIHtcXG4gICAgb3ZlcmZsb3cteDogc2Nyb2xsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3ZlcmZsb3cteS1zY3JvbGwge1xcbiAgICBvdmVyZmxvdy15OiBzY3JvbGwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzY3JvbGxpbmctdG91Y2gge1xcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2ggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzY3JvbGxpbmctYXV0byB7XFxuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cC0wIHtcXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnAtMSB7XFxuICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwLTIge1xcbiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwLTMge1xcbiAgICBwYWRkaW5nOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cC00IHtcXG4gICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnAtNSB7XFxuICAgIHBhZGRpbmc6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwLTYge1xcbiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwLTgge1xcbiAgICBwYWRkaW5nOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cC0xMCB7XFxuICAgIHBhZGRpbmc6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnAtMTIge1xcbiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cC0xNiB7XFxuICAgIHBhZGRpbmc6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwLTIwIHtcXG4gICAgcGFkZGluZzogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnAtMjQge1xcbiAgICBwYWRkaW5nOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cC0zMiB7XFxuICAgIHBhZGRpbmc6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwLXB4IHtcXG4gICAgcGFkZGluZzogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cC1iYXNlIHtcXG4gICAgcGFkZGluZzogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHktMCB7XFxuICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHgtMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHktMSB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHgtMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHktMiB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB4LTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweS0zIHtcXG4gICAgcGFkZGluZy10b3A6IDAuNzVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweC0zIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweS00IHtcXG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweC00IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweS01IHtcXG4gICAgcGFkZGluZy10b3A6IDEuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweC01IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweS02IHtcXG4gICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHgtNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB5LTgge1xcbiAgICBwYWRkaW5nLXRvcDogMnJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB4LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDJyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB5LTEwIHtcXG4gICAgcGFkZGluZy10b3A6IDIuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHgtMTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweS0xMiB7XFxuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHgtMTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB5LTE2IHtcXG4gICAgcGFkZGluZy10b3A6IDRyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweC0xNiB7XFxuICAgIHBhZGRpbmctbGVmdDogNHJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHktMjAge1xcbiAgICBwYWRkaW5nLXRvcDogNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB4LTIwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweS0yNCB7XFxuICAgIHBhZGRpbmctdG9wOiA2cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHgtMjQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDZyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB5LTMyIHtcXG4gICAgcGFkZGluZy10b3A6IDhyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweC0zMiB7XFxuICAgIHBhZGRpbmctbGVmdDogOHJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHktcHgge1xcbiAgICBwYWRkaW5nLXRvcDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweC1weCB7XFxuICAgIHBhZGRpbmctbGVmdDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB5LWJhc2Uge1xcbiAgICBwYWRkaW5nLXRvcDogMi4ycmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpweC1iYXNlIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyLjJyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHQtMCB7XFxuICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHItMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwYi0wIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbC0wIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHQtMSB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHItMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwYi0xIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbC0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHQtMiB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwci0yIHtcXG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGItMiB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwdC0zIHtcXG4gICAgcGFkZGluZy10b3A6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwci0zIHtcXG4gICAgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBiLTMge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsLTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwdC00IHtcXG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwci00IHtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBiLTQge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsLTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwdC01IHtcXG4gICAgcGFkZGluZy10b3A6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwci01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBiLTUge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsLTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwdC02IHtcXG4gICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnByLTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwYi02IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsLTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB0LTgge1xcbiAgICBwYWRkaW5nLXRvcDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnByLTgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGItOCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGwtOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB0LTEwIHtcXG4gICAgcGFkZGluZy10b3A6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnByLTEwIHtcXG4gICAgcGFkZGluZy1yaWdodDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGItMTAge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGwtMTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB0LTEyIHtcXG4gICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwci0xMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwYi0xMiB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGwtMTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwdC0xNiB7XFxuICAgIHBhZGRpbmctdG9wOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHItMTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGItMTYge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsLTE2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHQtMjAge1xcbiAgICBwYWRkaW5nLXRvcDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnByLTIwIHtcXG4gICAgcGFkZGluZy1yaWdodDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBiLTIwIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbC0yMCB7XFxuICAgIHBhZGRpbmctbGVmdDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnB0LTI0IHtcXG4gICAgcGFkZGluZy10b3A6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwci0yNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwYi0yNCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGwtMjQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwdC0zMiB7XFxuICAgIHBhZGRpbmctdG9wOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHItMzIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGItMzIge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsLTMyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHQtcHgge1xcbiAgICBwYWRkaW5nLXRvcDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHItcHgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwYi1weCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbC1weCB7XFxuICAgIHBhZGRpbmctbGVmdDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHQtYmFzZSB7XFxuICAgIHBhZGRpbmctdG9wOiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwci1iYXNlIHtcXG4gICAgcGFkZGluZy1yaWdodDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGItYmFzZSB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbC1iYXNlIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci1ibGFjazo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGxhY2Vob2xkZXItYmxhY2s6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci1ibGFjazo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci1ibGFjazo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci13aGl0ZTo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGxhY2Vob2xkZXItd2hpdGU6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci13aGl0ZTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci13aGl0ZTo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsYWNlaG9sZGVyLWdyZXk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci1ncmV5OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnBsYWNlaG9sZGVyLWdyZXk6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItYmxhY2s6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItYmxhY2s6Zm9jdXM6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItd2hpdGU6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItd2hpdGU6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleTpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5OmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Zm9jdXM6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwb2ludGVyLWV2ZW50cy1ub25lIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpwb2ludGVyLWV2ZW50cy1hdXRvIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzdGF0aWMge1xcbiAgICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zml4ZWQge1xcbiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDphYnNvbHV0ZSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnJlbGF0aXZlIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6c3RpY2t5IHtcXG4gICAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5ICFpbXBvcnRhbnQ7XFxuICAgIHBvc2l0aW9uOiBzdGlja3kgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDppbnNldC0wIHtcXG4gICAgdG9wOiAwICFpbXBvcnRhbnQ7XFxuICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XFxuICAgIGJvdHRvbTogMCAhaW1wb3J0YW50O1xcbiAgICBsZWZ0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aW5zZXQtYXV0byB7XFxuICAgIHRvcDogYXV0byAhaW1wb3J0YW50O1xcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBib3R0b206IGF1dG8gIWltcG9ydGFudDtcXG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmluc2V0LXktMCB7XFxuICAgIHRvcDogMCAhaW1wb3J0YW50O1xcbiAgICBib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDppbnNldC14LTAge1xcbiAgICByaWdodDogMCAhaW1wb3J0YW50O1xcbiAgICBsZWZ0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aW5zZXQteS1hdXRvIHtcXG4gICAgdG9wOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIGJvdHRvbTogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmluc2V0LXgtYXV0byB7XFxuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0b3AtMCB7XFxuICAgIHRvcDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnJpZ2h0LTAge1xcbiAgICByaWdodDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJvdHRvbS0wIHtcXG4gICAgYm90dG9tOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bGVmdC0wIHtcXG4gICAgbGVmdDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRvcC1hdXRvIHtcXG4gICAgdG9wOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cmlnaHQtYXV0byB7XFxuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym90dG9tLWF1dG8ge1xcbiAgICBib3R0b206IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpsZWZ0LWF1dG8ge1xcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cmVzaXplLW5vbmUge1xcbiAgICByZXNpemU6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpyZXNpemUteSB7XFxuICAgIHJlc2l6ZTogdmVydGljYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpyZXNpemUteCB7XFxuICAgIHJlc2l6ZTogaG9yaXpvbnRhbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnJlc2l6ZSB7XFxuICAgIHJlc2l6ZTogYm90aCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnNoYWRvdyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4xMCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzaGFkb3ctbWQge1xcbiAgICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDAsMCwwLDAuMTIpLCAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6c2hhZG93LWxnIHtcXG4gICAgYm94LXNoYWRvdzogMCAxNXB4IDMwcHggMCByZ2JhKDAsMCwwLDAuMTEpLCAwIDVweCAxNXB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnNoYWRvdy1pbm5lciB7XFxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wNikgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzaGFkb3cteGwge1xcbiAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxMHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMDQpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6c2hhZG93LTJ4bCB7XFxuICAgIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzaGFkb3ctb3V0bGluZSB7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLDE0NCwyMjAsMC41KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnNoYWRvdy1ub25lIHtcXG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnNoYWRvdy1kcm9wIHtcXG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IDAgcmdiYSgwLDAsMCwwLjE0KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpzaGFkb3c6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMTApICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOnNoYWRvdy1tZDpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoMCwwLDAsMC4xMiksIDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wOCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6c2hhZG93LWxnOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCAxNXB4IDMwcHggMCByZ2JhKDAsMCwwLDAuMTEpLCAwIDVweCAxNXB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpzaGFkb3ctaW5uZXI6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDYpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOnNoYWRvdy14bDpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IDAgMjBweCAyNXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDEwcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4wNCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6c2hhZG93LTJ4bDpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6c2hhZG93LW91dGxpbmU6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1MiwxNDQsMjIwLDAuNSkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6c2hhZG93LW5vbmU6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOnNoYWRvdy1kcm9wOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IDAgcmdiYSgwLDAsMCwwLjE0KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpzaGFkb3c6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMTApICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnNoYWRvdy1tZDpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoMCwwLDAsMC4xMiksIDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wOCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6c2hhZG93LWxnOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCAxNXB4IDMwcHggMCByZ2JhKDAsMCwwLDAuMTEpLCAwIDVweCAxNXB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpzaGFkb3ctaW5uZXI6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDYpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnNoYWRvdy14bDpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMjBweCAyNXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDEwcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4wNCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6c2hhZG93LTJ4bDpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6c2hhZG93LW91dGxpbmU6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1MiwxNDQsMjIwLDAuNSkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6c2hhZG93LW5vbmU6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnNoYWRvdy1kcm9wOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IDAgcmdiYSgwLDAsMCwwLjE0KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRhYmxlLWF1dG8ge1xcbiAgICB0YWJsZS1sYXlvdXQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0YWJsZS1maXhlZCB7XFxuICAgIHRhYmxlLWxheW91dDogZml4ZWQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0ZXh0LWxlZnQge1xcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dGV4dC1jZW50ZXIge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0ZXh0LXJpZ2h0IHtcXG4gICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0ZXh0LWp1c3RpZnkge1xcbiAgICB0ZXh0LWFsaWduOiBqdXN0aWZ5ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dGV4dC10cmFuc3BhcmVudCB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRleHQtYmxhY2sge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRleHQtd2hpdGUge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRleHQtZ3JleSB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dGV4dC1ncmV5LWxpZ2h0IHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6dGV4dC10cmFuc3BhcmVudDpob3ZlciB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDp0ZXh0LWJsYWNrOmhvdmVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6dGV4dC13aGl0ZTpob3ZlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOnRleHQtZ3JleTpob3ZlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOnRleHQtZ3JleS1saWdodDpob3ZlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnRleHQtdHJhbnNwYXJlbnQ6Zm9jdXMge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6dGV4dC1ibGFjazpmb2N1cyB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnRleHQtd2hpdGU6Zm9jdXMge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDp0ZXh0LWdyZXk6Zm9jdXMge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDp0ZXh0LWdyZXktbGlnaHQ6Zm9jdXMge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRleHQteHMge1xcbiAgICBmb250LXNpemU6IC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRleHQtc20ge1xcbiAgICBmb250LXNpemU6IC44NzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0ZXh0LWJhc2Uge1xcbiAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0ZXh0LWxnIHtcXG4gICAgZm9udC1zaXplOiAxLjEyNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRleHQteGwge1xcbiAgICBmb250LXNpemU6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0ZXh0LTJ4bCB7XFxuICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dGV4dC0zeGwge1xcbiAgICBmb250LXNpemU6IDEuODc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dGV4dC00eGwge1xcbiAgICBmb250LXNpemU6IDIuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0ZXh0LTV4bCB7XFxuICAgIGZvbnQtc2l6ZTogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnRleHQtNnhsIHtcXG4gICAgZm9udC1zaXplOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aXRhbGljIHtcXG4gICAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bm90LWl0YWxpYyB7XFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDppdGFsaWM6aG92ZXIge1xcbiAgICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6bm90LWl0YWxpYzpob3ZlciB7XFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDppdGFsaWM6Zm9jdXMge1xcbiAgICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6bm90LWl0YWxpYzpmb2N1cyB7XFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnVwcGVyY2FzZSB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpsb3dlcmNhc2Uge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Y2FwaXRhbGl6ZSB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bm9ybWFsLWNhc2Uge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDp1cHBlcmNhc2U6aG92ZXIge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOmxvd2VyY2FzZTpob3ZlciB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpob3ZlclxcXFw6Y2FwaXRhbGl6ZTpob3ZlciB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOm5vcm1hbC1jYXNlOmhvdmVyIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6dXBwZXJjYXNlOmZvY3VzIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpsb3dlcmNhc2U6Zm9jdXMge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOmNhcGl0YWxpemU6Zm9jdXMge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmZvY3VzXFxcXDpub3JtYWwtY2FzZTpmb2N1cyB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dW5kZXJsaW5lIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpsaW5lLXRocm91Z2gge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOm5vLXVuZGVybGluZSB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDp1bmRlcmxpbmU6aG92ZXIge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpsaW5lLXRocm91Z2g6aG92ZXIge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpuby11bmRlcmxpbmU6aG92ZXIge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6dW5kZXJsaW5lOmZvY3VzIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6bGluZS10aHJvdWdoOmZvY3VzIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2ggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6bm8tdW5kZXJsaW5lOmZvY3VzIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6YW50aWFsaWFzZWQge1xcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZCAhaW1wb3J0YW50O1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6c3VicGl4ZWwtYW50aWFsaWFzZWQge1xcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aG92ZXJcXFxcOmFudGlhbGlhc2VkOmhvdmVyIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQgIWltcG9ydGFudDtcXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmhvdmVyXFxcXDpzdWJwaXhlbC1hbnRpYWxpYXNlZDpob3ZlciB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpmb2N1c1xcXFw6YW50aWFsaWFzZWQ6Zm9jdXMge1xcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZCAhaW1wb3J0YW50O1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Zm9jdXNcXFxcOnN1YnBpeGVsLWFudGlhbGlhc2VkOmZvY3VzIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50O1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnNlbGVjdC1ub25lIHtcXG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnNlbGVjdC10ZXh0IHtcXG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50O1xcbiAgICAgICAtbW96LXVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IHRleHQgIWltcG9ydGFudDtcXG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnNlbGVjdC1hbGwge1xcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGwgIWltcG9ydGFudDtcXG4gICAgICAgLW1vei11c2VyLXNlbGVjdDogYWxsICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IGFsbCAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBhbGwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpzZWxlY3QtYXV0byB7XFxuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgICAgLW1vei11c2VyLXNlbGVjdDogYXV0byAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDphbGlnbi1iYXNlbGluZSB7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmFsaWduLXRvcCB7XFxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3AgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDphbGlnbi1taWRkbGUge1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6YWxpZ24tYm90dG9tIHtcXG4gICAgdmVydGljYWwtYWxpZ246IGJvdHRvbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmFsaWduLXRleHQtdG9wIHtcXG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6YWxpZ24tdGV4dC1ib3R0b20ge1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp2aXNpYmxlIHtcXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmludmlzaWJsZSB7XFxuICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOndoaXRlc3BhY2Utbm9ybWFsIHtcXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOndoaXRlc3BhY2Utbm8td3JhcCB7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3aGl0ZXNwYWNlLXByZSB7XFxuICAgIHdoaXRlLXNwYWNlOiBwcmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3aGl0ZXNwYWNlLXByZS1saW5lIHtcXG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6d2hpdGVzcGFjZS1wcmUtd3JhcCB7XFxuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOmJyZWFrLW5vcm1hbCB7XFxuICAgIG92ZXJmbG93LXdyYXA6IG5vcm1hbCAhaW1wb3J0YW50O1xcbiAgICB3b3JkLWJyZWFrOiBub3JtYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpicmVhay13b3JkcyB7XFxuICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDpicmVhay1hbGwge1xcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp0cnVuY2F0ZSB7XFxuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgIWltcG9ydGFudDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctMSB7XFxuICAgIHdpZHRoOiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0yIHtcXG4gICAgd2lkdGg6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctMyB7XFxuICAgIHdpZHRoOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy00IHtcXG4gICAgd2lkdGg6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTUge1xcbiAgICB3aWR0aDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctNiB7XFxuICAgIHdpZHRoOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTgge1xcbiAgICB3aWR0aDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctMTAge1xcbiAgICB3aWR0aDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0xMiB7XFxuICAgIHdpZHRoOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0xNiB7XFxuICAgIHdpZHRoOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0yNCB7XFxuICAgIHdpZHRoOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0zMiB7XFxuICAgIHdpZHRoOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy00OCB7XFxuICAgIHdpZHRoOiAxMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctNjQge1xcbiAgICB3aWR0aDogMTZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LWF1dG8ge1xcbiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctcHgge1xcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0xXFxcXC8yIHtcXG4gICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctMVxcXFwvMyB7XFxuICAgIHdpZHRoOiAzMy4zMzMzMyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTJcXFxcLzMge1xcbiAgICB3aWR0aDogNjYuNjY2NjclICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0xXFxcXC80IHtcXG4gICAgd2lkdGg6IDI1JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctM1xcXFwvNCB7XFxuICAgIHdpZHRoOiA3NSUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTFcXFxcLzUge1xcbiAgICB3aWR0aDogMjAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0yXFxcXC81IHtcXG4gICAgd2lkdGg6IDQwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctM1xcXFwvNSB7XFxuICAgIHdpZHRoOiA2MCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTRcXFxcLzUge1xcbiAgICB3aWR0aDogODAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0xXFxcXC82IHtcXG4gICAgd2lkdGg6IDE2LjY2NjY3JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctNVxcXFwvNiB7XFxuICAgIHdpZHRoOiA4My4zMzMzMyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTFcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDguMzMzMzMlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0yXFxcXC8xMiB7XFxuICAgIHdpZHRoOiAxNi42NjY2NyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTNcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDI1JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctNFxcXFwvMTIge1xcbiAgICB3aWR0aDogMzMuMzMzMzMlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy01XFxcXC8xMiB7XFxuICAgIHdpZHRoOiA0MS42NjY2NyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTZcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctN1xcXFwvMTIge1xcbiAgICB3aWR0aDogNTguMzMzMzMlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy04XFxcXC8xMiB7XFxuICAgIHdpZHRoOiA2Ni42NjY2NyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTlcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDc1JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctMTBcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDgzLjMzMzMzJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctMTFcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDkxLjY2NjY3JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAubGdcXFxcOnctZnVsbCB7XFxuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy1zY3JlZW4ge1xcbiAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLmxnXFxcXDp6LTAge1xcbiAgICB6LWluZGV4OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ei0xMCB7XFxuICAgIHotaW5kZXg6IDEwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ei0yMCB7XFxuICAgIHotaW5kZXg6IDIwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ei0zMCB7XFxuICAgIHotaW5kZXg6IDMwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ei00MCB7XFxuICAgIHotaW5kZXg6IDQwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ei01MCB7XFxuICAgIHotaW5kZXg6IDUwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ei1hdXRvIHtcXG4gICAgei1pbmRleDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxufVxcblxcbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcXG4gIC54bFxcXFw6c3Itb25seSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XFxuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcXG4gICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XFxuICAgIGJvcmRlci13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm5vdC1zci1vbmx5IHtcXG4gICAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xcbiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcXG4gICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcXG4gICAgY2xpcDogYXV0byAhaW1wb3J0YW50O1xcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnNyLW9ubHk6Zm9jdXMge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcXG4gICAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbjogLTFweCAhaW1wb3J0YW50O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XFxuICAgIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCkgIWltcG9ydGFudDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xcbiAgICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6bm90LXNyLW9ubHk6Zm9jdXMge1xcbiAgICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XFxuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbiAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xcbiAgICBjbGlwOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDphcHBlYXJhbmNlLW5vbmUge1xcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJnLWZpeGVkIHtcXG4gICAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJnLWxvY2FsIHtcXG4gICAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBsb2NhbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJnLXNjcm9sbCB7XFxuICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6YmctdHJhbnNwYXJlbnQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJnLWJsYWNrIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJnLXdoaXRlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJnLWdyZXkge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6YmctZ3JleS1saWdodCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6YmctdHJhbnNwYXJlbnQ6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpiZy1ibGFjazpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6Ymctd2hpdGU6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOmJnLWdyZXk6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOmJnLWdyZXktbGlnaHQ6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOmJnLXRyYW5zcGFyZW50OmZvY3VzIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6YmctYmxhY2s6Zm9jdXMge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOmJnLXdoaXRlOmZvY3VzIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpiZy1ncmV5OmZvY3VzIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpiZy1ncmV5LWxpZ2h0OmZvY3VzIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJnLWF1dG8ge1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpiZy1jb3ZlciB7XFxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpiZy1jb250YWluIHtcXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLXRyYW5zcGFyZW50IHtcXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1ibGFjayB7XFxuICAgIGJvcmRlci1jb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci13aGl0ZSB7XFxuICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1ncmV5IHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLWdyZXktbGlnaHQge1xcbiAgICBib3JkZXItY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6Ym9yZGVyLXRyYW5zcGFyZW50OmhvdmVyIHtcXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpib3JkZXItYmxhY2s6aG92ZXIge1xcbiAgICBib3JkZXItY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6Ym9yZGVyLXdoaXRlOmhvdmVyIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOmJvcmRlci1ncmV5OmhvdmVyIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOmJvcmRlci1ncmV5LWxpZ2h0OmhvdmVyIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLXNvbGlkIHtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1kYXNoZWQge1xcbiAgICBib3JkZXItc3R5bGU6IGRhc2hlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1kb3R0ZWQge1xcbiAgICBib3JkZXItc3R5bGU6IGRvdHRlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1kb3VibGUge1xcbiAgICBib3JkZXItc3R5bGU6IGRvdWJsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1ub25lIHtcXG4gICAgYm9yZGVyLXN0eWxlOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLTAge1xcbiAgICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpib3JkZXItMiB7XFxuICAgIGJvcmRlci13aWR0aDogMnB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLTQge1xcbiAgICBib3JkZXItd2lkdGg6IDRweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci04IHtcXG4gICAgYm9yZGVyLXdpZHRoOiA4cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpib3JkZXIge1xcbiAgICBib3JkZXItd2lkdGg6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci10LTAge1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLXItMCB7XFxuICAgIGJvcmRlci1yaWdodC13aWR0aDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1iLTAge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLWwtMCB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLXQtMiB7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDJweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1yLTIge1xcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDJweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1iLTIge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpib3JkZXItbC0yIHtcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDJweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci10LTQge1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiA0cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpib3JkZXItci00IHtcXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA0cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpib3JkZXItYi00IHtcXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogNHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLWwtNCB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiA0cHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpib3JkZXItdC04IHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLXItOCB7XFxuICAgIGJvcmRlci1yaWdodC13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLWItOCB7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDhweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJvcmRlci1sLTgge1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogOHB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLXQge1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpib3JkZXItciB7XFxuICAgIGJvcmRlci1yaWdodC13aWR0aDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym9yZGVyLWIge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpib3JkZXItbCB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpibG9jayB7XFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aW5saW5lLWJsb2NrIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aW5saW5lIHtcXG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6ZmxleCB7XFxuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDppbmxpbmUtZmxleCB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dGFibGUge1xcbiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRhYmxlLXJvdyB7XFxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRhYmxlLWNlbGwge1xcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aGlkZGVuIHtcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZsZXgtcm93IHtcXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZsZXgtcm93LXJldmVyc2Uge1xcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmbGV4LWNvbCB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmbGV4LWNvbC1yZXZlcnNlIHtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6ZmxleC13cmFwIHtcXG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6ZmxleC13cmFwLXJldmVyc2Uge1xcbiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZsZXgtbm8td3JhcCB7XFxuICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aXRlbXMtc3RhcnQge1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOml0ZW1zLWVuZCB7XFxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOml0ZW1zLWNlbnRlciB7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDppdGVtcy1iYXNlbGluZSB7XFxuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOml0ZW1zLXN0cmV0Y2gge1xcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnNlbGYtYXV0byB7XFxuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpzZWxmLXN0YXJ0IHtcXG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnNlbGYtZW5kIHtcXG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpzZWxmLWNlbnRlciB7XFxuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnNlbGYtc3RyZXRjaCB7XFxuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpqdXN0aWZ5LXN0YXJ0IHtcXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6anVzdGlmeS1lbmQge1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6anVzdGlmeS1jZW50ZXIge1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmp1c3RpZnktYmV0d2VlbiB7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmp1c3RpZnktYXJvdW5kIHtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpjb250ZW50LWNlbnRlciB7XFxuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmNvbnRlbnQtc3RhcnQge1xcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Y29udGVudC1lbmQge1xcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmNvbnRlbnQtYmV0d2VlbiB7XFxuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpjb250ZW50LWFyb3VuZCB7XFxuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZsZXgtMSB7XFxuICAgIGZsZXg6IDEgMSAwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZsZXgtYXV0byB7XFxuICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6ZmxleC1pbml0aWFsIHtcXG4gICAgZmxleDogMCAxIGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmbGV4LW5vbmUge1xcbiAgICBmbGV4OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6ZmxleC1ncm93LTAge1xcbiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmbGV4LWdyb3cge1xcbiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmbGV4LXNocmluay0wIHtcXG4gICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmbGV4LXNocmluayB7XFxuICAgIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3JkZXItMSB7XFxuICAgIG9yZGVyOiAxICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3JkZXItMiB7XFxuICAgIG9yZGVyOiAyICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3JkZXItMyB7XFxuICAgIG9yZGVyOiAzICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3JkZXItNCB7XFxuICAgIG9yZGVyOiA0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3JkZXItNSB7XFxuICAgIG9yZGVyOiA1ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3JkZXItNiB7XFxuICAgIG9yZGVyOiA2ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3JkZXItZmlyc3Qge1xcbiAgICBvcmRlcjogLTEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvcmRlci1sYXN0IHtcXG4gICAgb3JkZXI6IDk5OSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm9yZGVyLW5vcm1hbCB7XFxuICAgIG9yZGVyOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOm9yZGVyLTE6aG92ZXIge1xcbiAgICBvcmRlcjogMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpvcmRlci0yOmhvdmVyIHtcXG4gICAgb3JkZXI6IDIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6b3JkZXItMzpob3ZlciB7XFxuICAgIG9yZGVyOiAzICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOm9yZGVyLTQ6aG92ZXIge1xcbiAgICBvcmRlcjogNCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpvcmRlci01OmhvdmVyIHtcXG4gICAgb3JkZXI6IDUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6b3JkZXItNjpob3ZlciB7XFxuICAgIG9yZGVyOiA2ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOm9yZGVyLWZpcnN0OmhvdmVyIHtcXG4gICAgb3JkZXI6IC0xICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOm9yZGVyLWxhc3Q6aG92ZXIge1xcbiAgICBvcmRlcjogOTk5ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOm9yZGVyLW5vcm1hbDpob3ZlciB7XFxuICAgIG9yZGVyOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOm9yZGVyLTE6Zm9jdXMge1xcbiAgICBvcmRlcjogMSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpvcmRlci0yOmZvY3VzIHtcXG4gICAgb3JkZXI6IDIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6b3JkZXItMzpmb2N1cyB7XFxuICAgIG9yZGVyOiAzICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOm9yZGVyLTQ6Zm9jdXMge1xcbiAgICBvcmRlcjogNCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpvcmRlci01OmZvY3VzIHtcXG4gICAgb3JkZXI6IDUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6b3JkZXItNjpmb2N1cyB7XFxuICAgIG9yZGVyOiA2ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOm9yZGVyLWZpcnN0OmZvY3VzIHtcXG4gICAgb3JkZXI6IC0xICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOm9yZGVyLWxhc3Q6Zm9jdXMge1xcbiAgICBvcmRlcjogOTk5ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOm9yZGVyLW5vcm1hbDpmb2N1cyB7XFxuICAgIG9yZGVyOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6ZmxvYXQtcmlnaHQge1xcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmbG9hdC1sZWZ0IHtcXG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmbG9hdC1ub25lIHtcXG4gICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpjbGVhcmZpeDphZnRlciB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFwiICFpbXBvcnRhbnQ7XFxuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7XFxuICAgIGNsZWFyOiBib3RoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9udC1saWdodCB7XFxuICAgIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb250LW5vcm1hbCB7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb250LW1lZGl1bSB7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb250LXNlbWlib2xkIHtcXG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvbnQtYm9sZCB7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb250LWV4dHJhYm9sZCB7XFxuICAgIGZvbnQtd2VpZ2h0OiA4MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb250LWJsYWNrIHtcXG4gICAgZm9udC13ZWlnaHQ6IDkwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpmb250LWxpZ2h0OmhvdmVyIHtcXG4gICAgZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpmb250LW5vcm1hbDpob3ZlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6Zm9udC1tZWRpdW06aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOmZvbnQtc2VtaWJvbGQ6aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOmZvbnQtYm9sZDpob3ZlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6Zm9udC1leHRyYWJvbGQ6aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogODAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOmZvbnQtYmxhY2s6aG92ZXIge1xcbiAgICBmb250LXdlaWdodDogOTAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aC0xIHtcXG4gICAgaGVpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aC0yIHtcXG4gICAgaGVpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpoLTMge1xcbiAgICBoZWlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpoLTQge1xcbiAgICBoZWlnaHQ6IDFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpoLTUge1xcbiAgICBoZWlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpoLTYge1xcbiAgICBoZWlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmgtOCB7XFxuICAgIGhlaWdodDogMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmgtMTAge1xcbiAgICBoZWlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmgtMTIge1xcbiAgICBoZWlnaHQ6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpoLTE2IHtcXG4gICAgaGVpZ2h0OiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aC0yNCB7XFxuICAgIGhlaWdodDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmgtMzIge1xcbiAgICBoZWlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpoLTQ4IHtcXG4gICAgaGVpZ2h0OiAxMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmgtNjQge1xcbiAgICBoZWlnaHQ6IDE2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aC1hdXRvIHtcXG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aC1weCB7XFxuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aC1mdWxsIHtcXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aC1zY3JlZW4ge1xcbiAgICBoZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bGVhZGluZy1ub25lIHtcXG4gICAgbGluZS1oZWlnaHQ6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpsZWFkaW5nLXRpZ2h0IHtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpsZWFkaW5nLW5vcm1hbCB7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpsZWFkaW5nLWxvb3NlIHtcXG4gICAgbGluZS1oZWlnaHQ6IDIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpsaXN0LWluc2lkZSB7XFxuICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lkZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmxpc3Qtb3V0c2lkZSB7XFxuICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptLTAge1xcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptLTEge1xcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptLTIge1xcbiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm0tMyB7XFxuICAgIG1hcmdpbjogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm0tNCB7XFxuICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm0tNSB7XFxuICAgIG1hcmdpbjogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm0tNiB7XFxuICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bS04IHtcXG4gICAgbWFyZ2luOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bS0xMCB7XFxuICAgIG1hcmdpbjogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bS0xMiB7XFxuICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm0tMTYge1xcbiAgICBtYXJnaW46IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptLTIwIHtcXG4gICAgbWFyZ2luOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bS0yNCB7XFxuICAgIG1hcmdpbjogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm0tMzIge1xcbiAgICBtYXJnaW46IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptLWF1dG8ge1xcbiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptLXB4IHtcXG4gICAgbWFyZ2luOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptLWJhc2Uge1xcbiAgICBtYXJnaW46IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1tLXB4IHtcXG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW0tMSB7XFxuICAgIG1hcmdpbjogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbS0yIHtcXG4gICAgbWFyZ2luOiAtMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW0tMyB7XFxuICAgIG1hcmdpbjogLTAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbS00IHtcXG4gICAgbWFyZ2luOiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm15LTAge1xcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteC0wIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXktMSB7XFxuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm14LTEge1xcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteS0yIHtcXG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm14LTIge1xcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXktMyB7XFxuICAgIG1hcmdpbi10b3A6IDAuNzVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm14LTMge1xcbiAgICBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteS00IHtcXG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXgtNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm15LTUge1xcbiAgICBtYXJnaW4tdG9wOiAxLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteC01IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXktNiB7XFxuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteC02IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm15LTgge1xcbiAgICBtYXJnaW4tdG9wOiAycmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteC04IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDJyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXktMTAge1xcbiAgICBtYXJnaW4tdG9wOiAyLjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXgtMTAge1xcbiAgICBtYXJnaW4tbGVmdDogMi41cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXktMTIge1xcbiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteC0xMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm15LTE2IHtcXG4gICAgbWFyZ2luLXRvcDogNHJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXgtMTYge1xcbiAgICBtYXJnaW4tbGVmdDogNHJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteS0yMCB7XFxuICAgIG1hcmdpbi10b3A6IDVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm14LTIwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXktMjQge1xcbiAgICBtYXJnaW4tdG9wOiA2cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteC0yNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA2cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm15LTMyIHtcXG4gICAgbWFyZ2luLXRvcDogOHJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXgtMzIge1xcbiAgICBtYXJnaW4tbGVmdDogOHJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpteS1hdXRvIHtcXG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXgtYXV0byB7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm15LXB4IHtcXG4gICAgbWFyZ2luLXRvcDogMXB4ICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm14LXB4IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDFweCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm15LWJhc2Uge1xcbiAgICBtYXJnaW4tdG9wOiAyLjJyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXgtYmFzZSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyLjJyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbXktcHgge1xcbiAgICBtYXJnaW4tdG9wOiAtMXB4ICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbXgtcHgge1xcbiAgICBtYXJnaW4tbGVmdDogLTFweCAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbXktMSB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IC0wLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW14LTEge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1teS0yIHtcXG4gICAgbWFyZ2luLXRvcDogLTAuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW14LTIge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbXktMyB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjc1cmVtICFpbXBvcnRhbnQ7XFxuICAgIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW14LTMge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuNzVyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1teS00IHtcXG4gICAgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbXgtNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50O1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXQtMCB7XFxuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptci0wIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItMCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptbC0wIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptdC0xIHtcXG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1yLTEge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYi0xIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1sLTEge1xcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm10LTIge1xcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptci0yIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYi0yIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWwtMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptdC0zIHtcXG4gICAgbWFyZ2luLXRvcDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1yLTMge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYi0zIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1sLTMge1xcbiAgICBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm10LTQge1xcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXItNCB7XFxuICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1iLTQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWwtNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXQtNSB7XFxuICAgIG1hcmdpbi10b3A6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptci01IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItNSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptbC01IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptdC02IHtcXG4gICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXItNiB7XFxuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItNiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1sLTYge1xcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXQtOCB7XFxuICAgIG1hcmdpbi10b3A6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptci04IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItOCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptbC04IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptdC0xMCB7XFxuICAgIG1hcmdpbi10b3A6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1yLTEwIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYi0xMCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1sLTEwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm10LTEyIHtcXG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1yLTEyIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItMTIge1xcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWwtMTIge1xcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm10LTE2IHtcXG4gICAgbWFyZ2luLXRvcDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1yLTE2IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItMTYge1xcbiAgICBtYXJnaW4tYm90dG9tOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWwtMTYge1xcbiAgICBtYXJnaW4tbGVmdDogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm10LTIwIHtcXG4gICAgbWFyZ2luLXRvcDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1yLTIwIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItMjAge1xcbiAgICBtYXJnaW4tYm90dG9tOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWwtMjAge1xcbiAgICBtYXJnaW4tbGVmdDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm10LTI0IHtcXG4gICAgbWFyZ2luLXRvcDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1yLTI0IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItMjQge1xcbiAgICBtYXJnaW4tYm90dG9tOiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWwtMjQge1xcbiAgICBtYXJnaW4tbGVmdDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm10LTMyIHtcXG4gICAgbWFyZ2luLXRvcDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1yLTMyIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItMzIge1xcbiAgICBtYXJnaW4tYm90dG9tOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWwtMzIge1xcbiAgICBtYXJnaW4tbGVmdDogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm10LWF1dG8ge1xcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXItYXV0byB7XFxuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1iLWF1dG8ge1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWwtYXV0byB7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXQtcHgge1xcbiAgICBtYXJnaW4tdG9wOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptci1weCB7XFxuICAgIG1hcmdpbi1yaWdodDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItcHgge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptbC1weCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptdC1iYXNlIHtcXG4gICAgbWFyZ2luLXRvcDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bXItYmFzZSB7XFxuICAgIG1hcmdpbi1yaWdodDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWItYmFzZSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1sLWJhc2Uge1xcbiAgICBtYXJnaW4tbGVmdDogMi4ycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW10LXB4IHtcXG4gICAgbWFyZ2luLXRvcDogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1tci1weCB7XFxuICAgIG1hcmdpbi1yaWdodDogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1tYi1weCB7XFxuICAgIG1hcmdpbi1ib3R0b206IC0xcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbWwtcHgge1xcbiAgICBtYXJnaW4tbGVmdDogLTFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1tdC0xIHtcXG4gICAgbWFyZ2luLXRvcDogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbXItMSB7XFxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbWItMSB7XFxuICAgIG1hcmdpbi1ib3R0b206IC0wLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW1sLTEge1xcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbXQtMiB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbXItMiB7XFxuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1tYi0yIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1tbC0yIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0wLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbXQtMyB7XFxuICAgIG1hcmdpbi10b3A6IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW1yLTMge1xcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW1iLTMge1xcbiAgICBtYXJnaW4tYm90dG9tOiAtMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1tbC0zIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0wLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6LW10LTQge1xcbiAgICBtYXJnaW4tdG9wOiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1tci00IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOi1tYi00IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDotbWwtNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1heC1oLWZ1bGwge1xcbiAgICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWF4LWgtc2NyZWVuIHtcXG4gICAgbWF4LWhlaWdodDogMTAwdmggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYXgtdy14cyB7XFxuICAgIG1heC13aWR0aDogMjByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYXgtdy1zbSB7XFxuICAgIG1heC13aWR0aDogMzByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYXgtdy1tZCB7XFxuICAgIG1heC13aWR0aDogNDByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYXgtdy1sZyB7XFxuICAgIG1heC13aWR0aDogNTByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYXgtdy14bCB7XFxuICAgIG1heC13aWR0aDogNjByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYXgtdy0yeGwge1xcbiAgICBtYXgtd2lkdGg6IDcwcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWF4LXctM3hsIHtcXG4gICAgbWF4LXdpZHRoOiA4MHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1heC13LTR4bCB7XFxuICAgIG1heC13aWR0aDogOTByZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptYXgtdy01eGwge1xcbiAgICBtYXgtd2lkdGg6IDEwMHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1heC13LWZ1bGwge1xcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptaW4taC0wIHtcXG4gICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm1pbi1oLWZ1bGwge1xcbiAgICBtaW4taGVpZ2h0OiAxMDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWluLWgtc2NyZWVuIHtcXG4gICAgbWluLWhlaWdodDogMTAwdmggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDptaW4tdy0wIHtcXG4gICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bWluLXctZnVsbCB7XFxuICAgIG1pbi13aWR0aDogMTAwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm9iamVjdC1jb250YWluIHtcXG4gICAgLW8tb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtZml0OiBjb250YWluICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b2JqZWN0LWNvdmVyIHtcXG4gICAgLW8tb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtZmlsbCB7XFxuICAgIC1vLW9iamVjdC1maXQ6IGZpbGwgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LWZpdDogZmlsbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm9iamVjdC1ub25lIHtcXG4gICAgLW8tb2JqZWN0LWZpdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtZml0OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b2JqZWN0LXNjYWxlLWRvd24ge1xcbiAgICAtby1vYmplY3QtZml0OiBzY2FsZS1kb3duICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1maXQ6IHNjYWxlLWRvd24gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtYm90dG9tIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiBib3R0b20gIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiBib3R0b20gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtY2VudGVyIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtbGVmdCB7XFxuICAgIC1vLW9iamVjdC1wb3NpdGlvbjogbGVmdCAhaW1wb3J0YW50O1xcbiAgICAgICBvYmplY3QtcG9zaXRpb246IGxlZnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtbGVmdC1ib3R0b20ge1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IGxlZnQgYm90dG9tICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogbGVmdCBib3R0b20gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtbGVmdC10b3Age1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IGxlZnQgdG9wICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogbGVmdCB0b3AgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtcmlnaHQge1xcbiAgICAtby1vYmplY3QtcG9zaXRpb246IHJpZ2h0ICFpbXBvcnRhbnQ7XFxuICAgICAgIG9iamVjdC1wb3NpdGlvbjogcmlnaHQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtcmlnaHQtYm90dG9tIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiByaWdodCBib3R0b20gIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiByaWdodCBib3R0b20gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtcmlnaHQtdG9wIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiByaWdodCB0b3AgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiByaWdodCB0b3AgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvYmplY3QtdG9wIHtcXG4gICAgLW8tb2JqZWN0LXBvc2l0aW9uOiB0b3AgIWltcG9ydGFudDtcXG4gICAgICAgb2JqZWN0LXBvc2l0aW9uOiB0b3AgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvcGFjaXR5LTAge1xcbiAgICBvcGFjaXR5OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3BhY2l0eS0yNSB7XFxuICAgIG9wYWNpdHk6IDAuMjUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvcGFjaXR5LTUwIHtcXG4gICAgb3BhY2l0eTogMC41ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3BhY2l0eS03NSB7XFxuICAgIG9wYWNpdHk6IDAuNzUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvcGFjaXR5LTEwMCB7XFxuICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvdmVyZmxvdy1hdXRvIHtcXG4gICAgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvdmVyZmxvdy1oaWRkZW4ge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3ZlcmZsb3ctdmlzaWJsZSB7XFxuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3ZlcmZsb3ctc2Nyb2xsIHtcXG4gICAgb3ZlcmZsb3c6IHNjcm9sbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm92ZXJmbG93LXgtYXV0byB7XFxuICAgIG92ZXJmbG93LXg6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvdmVyZmxvdy15LWF1dG8ge1xcbiAgICBvdmVyZmxvdy15OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3ZlcmZsb3cteC1oaWRkZW4ge1xcbiAgICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvdmVyZmxvdy15LWhpZGRlbiB7XFxuICAgIG92ZXJmbG93LXk6IGhpZGRlbiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOm92ZXJmbG93LXgtdmlzaWJsZSB7XFxuICAgIG92ZXJmbG93LXg6IHZpc2libGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvdmVyZmxvdy15LXZpc2libGUge1xcbiAgICBvdmVyZmxvdy15OiB2aXNpYmxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6b3ZlcmZsb3cteC1zY3JvbGwge1xcbiAgICBvdmVyZmxvdy14OiBzY3JvbGwgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpvdmVyZmxvdy15LXNjcm9sbCB7XFxuICAgIG92ZXJmbG93LXk6IHNjcm9sbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnNjcm9sbGluZy10b3VjaCB7XFxuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnNjcm9sbGluZy1hdXRvIHtcXG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwLTAge1xcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cC0xIHtcXG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnAtMiB7XFxuICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnAtMyB7XFxuICAgIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwLTQge1xcbiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cC01IHtcXG4gICAgcGFkZGluZzogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnAtNiB7XFxuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnAtOCB7XFxuICAgIHBhZGRpbmc6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwLTEwIHtcXG4gICAgcGFkZGluZzogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cC0xMiB7XFxuICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwLTE2IHtcXG4gICAgcGFkZGluZzogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnAtMjAge1xcbiAgICBwYWRkaW5nOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cC0yNCB7XFxuICAgIHBhZGRpbmc6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwLTMyIHtcXG4gICAgcGFkZGluZzogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnAtcHgge1xcbiAgICBwYWRkaW5nOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwLWJhc2Uge1xcbiAgICBwYWRkaW5nOiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweS0wIHtcXG4gICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweC0wIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweS0xIHtcXG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweC0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweS0yIHtcXG4gICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHgtMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB5LTMge1xcbiAgICBwYWRkaW5nLXRvcDogMC43NXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB4LTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB5LTQge1xcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB4LTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB5LTUge1xcbiAgICBwYWRkaW5nLXRvcDogMS4yNXJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB4LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB5LTYge1xcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweC02IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHktOCB7XFxuICAgIHBhZGRpbmctdG9wOiAycmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHgtOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMnJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHktMTAge1xcbiAgICBwYWRkaW5nLXRvcDogMi41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweC0xMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB5LTEyIHtcXG4gICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHktMTYge1xcbiAgICBwYWRkaW5nLXRvcDogNHJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogNHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB4LTE2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweS0yMCB7XFxuICAgIHBhZGRpbmctdG9wOiA1cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctYm90dG9tOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHgtMjAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDVyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB5LTI0IHtcXG4gICAgcGFkZGluZy10b3A6IDZyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogNnJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHktMzIge1xcbiAgICBwYWRkaW5nLXRvcDogOHJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogOHJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB4LTMyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4cmVtICFpbXBvcnRhbnQ7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpweS1weCB7XFxuICAgIHBhZGRpbmctdG9wOiAxcHggIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB4LXB4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcHggIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHktYmFzZSB7XFxuICAgIHBhZGRpbmctdG9wOiAyLjJyZW0gIWltcG9ydGFudDtcXG4gICAgcGFkZGluZy1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB4LWJhc2Uge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbSAhaW1wb3J0YW50O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwdC0wIHtcXG4gICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwci0wIHtcXG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBiLTAge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsLTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwdC0xIHtcXG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwci0xIHtcXG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBiLTEge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsLTEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwdC0yIHtcXG4gICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnByLTIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwYi0yIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsLTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB0LTMge1xcbiAgICBwYWRkaW5nLXRvcDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnByLTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGItMyB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGwtMyB7XFxuICAgIHBhZGRpbmctbGVmdDogMC43NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB0LTQge1xcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnByLTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGItNCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGwtNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB0LTUge1xcbiAgICBwYWRkaW5nLXRvcDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnByLTUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGItNSB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGwtNSB7XFxuICAgIHBhZGRpbmctbGVmdDogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB0LTYge1xcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHItNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBiLTYge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGwtNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHQtOCB7XFxuICAgIHBhZGRpbmctdG9wOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHItOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwYi04IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwbC04IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHQtMTAge1xcbiAgICBwYWRkaW5nLXRvcDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHItMTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwYi0xMCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwbC0xMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHQtMTIge1xcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnByLTEyIHtcXG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBiLTEyIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwbC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB0LTE2IHtcXG4gICAgcGFkZGluZy10b3A6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwci0xNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwYi0xNiB7XFxuICAgIHBhZGRpbmctYm90dG9tOiA0cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGwtMTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwdC0yMCB7XFxuICAgIHBhZGRpbmctdG9wOiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHItMjAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGItMjAge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsLTIwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cHQtMjQge1xcbiAgICBwYWRkaW5nLXRvcDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnByLTI0IHtcXG4gICAgcGFkZGluZy1yaWdodDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBiLTI0IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwbC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnB0LTMyIHtcXG4gICAgcGFkZGluZy10b3A6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwci0zMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwYi0zMiB7XFxuICAgIHBhZGRpbmctYm90dG9tOiA4cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGwtMzIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwdC1weCB7XFxuICAgIHBhZGRpbmctdG9wOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwci1weCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBiLXB4IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDFweCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsLXB4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwdC1iYXNlIHtcXG4gICAgcGFkZGluZy10b3A6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnByLWJhc2Uge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjJyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwYi1iYXNlIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsLWJhc2Uge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwbGFjZWhvbGRlci10cmFuc3BhcmVudDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGxhY2Vob2xkZXItYmxhY2s6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwbGFjZWhvbGRlci1ibGFjazotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGxhY2Vob2xkZXItd2hpdGU6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwbGFjZWhvbGRlci13aGl0ZTotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGxhY2Vob2xkZXItZ3JleTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGxhY2Vob2xkZXItZ3JleTo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGxhY2Vob2xkZXItZ3JleTotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGxhY2Vob2xkZXItZ3JleTo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXRyYW5zcGFyZW50OmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItdHJhbnNwYXJlbnQ6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWJsYWNrOmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItYmxhY2s6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ibGFjazpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItYmxhY2s6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItd2hpdGU6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLXdoaXRlOmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci13aGl0ZTpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5OmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleTpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXk6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleTpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleTpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2I4YzJjYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpwbGFjZWhvbGRlci1ncmV5LWxpZ2h0OmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnBsYWNlaG9sZGVyLWdyZXktbGlnaHQ6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6cGxhY2Vob2xkZXItZ3JleS1saWdodDpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBvaW50ZXItZXZlbnRzLW5vbmUge1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnBvaW50ZXItZXZlbnRzLWF1dG8ge1xcbiAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnN0YXRpYyB7XFxuICAgIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmaXhlZCB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmFic29sdXRlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cmVsYXRpdmUge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpzdGlja3kge1xcbiAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kgIWltcG9ydGFudDtcXG4gICAgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmluc2V0LTAge1xcbiAgICB0b3A6IDAgIWltcG9ydGFudDtcXG4gICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcXG4gICAgYm90dG9tOiAwICFpbXBvcnRhbnQ7XFxuICAgIGxlZnQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDppbnNldC1hdXRvIHtcXG4gICAgdG9wOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIGJvdHRvbTogYXV0byAhaW1wb3J0YW50O1xcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aW5zZXQteS0wIHtcXG4gICAgdG9wOiAwICFpbXBvcnRhbnQ7XFxuICAgIGJvdHRvbTogMCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmluc2V0LXgtMCB7XFxuICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XFxuICAgIGxlZnQ6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDppbnNldC15LWF1dG8ge1xcbiAgICB0b3A6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgYm90dG9tOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aW5zZXQteC1hdXRvIHtcXG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRvcC0wIHtcXG4gICAgdG9wOiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cmlnaHQtMCB7XFxuICAgIHJpZ2h0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Ym90dG9tLTAge1xcbiAgICBib3R0b206IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpsZWZ0LTAge1xcbiAgICBsZWZ0OiAwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dG9wLWF1dG8ge1xcbiAgICB0b3A6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpyaWdodC1hdXRvIHtcXG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpib3R0b20tYXV0byB7XFxuICAgIGJvdHRvbTogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmxlZnQtYXV0byB7XFxuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpyZXNpemUtbm9uZSB7XFxuICAgIHJlc2l6ZTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnJlc2l6ZS15IHtcXG4gICAgcmVzaXplOiB2ZXJ0aWNhbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnJlc2l6ZS14IHtcXG4gICAgcmVzaXplOiBob3Jpem9udGFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6cmVzaXplIHtcXG4gICAgcmVzaXplOiBib3RoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6c2hhZG93IHtcXG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjEwKSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnNoYWRvdy1tZCB7XFxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoMCwwLDAsMC4xMiksIDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wOCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpzaGFkb3ctbGcge1xcbiAgICBib3gtc2hhZG93OiAwIDE1cHggMzBweCAwIHJnYmEoMCwwLDAsMC4xMSksIDAgNXB4IDE1cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6c2hhZG93LWlubmVyIHtcXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA2KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnNoYWRvdy14bCB7XFxuICAgIGJveC1zaGFkb3c6IDAgMjBweCAyNXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDEwcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4wNCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpzaGFkb3ctMnhsIHtcXG4gICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiYSgwLCAwLCAwLCAwLjI1KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnNoYWRvdy1vdXRsaW5lIHtcXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTIsMTQ0LDIyMCwwLjUpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6c2hhZG93LW5vbmUge1xcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6c2hhZG93LWRyb3Age1xcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsMCwwLDAuMTQpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOnNoYWRvdzpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4xMCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6c2hhZG93LW1kOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpzaGFkb3ctbGc6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiAwIDE1cHggMzBweCAwIHJnYmEoMCwwLDAsMC4xMSksIDAgNXB4IDE1cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOnNoYWRvdy1pbm5lcjpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wNikgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6c2hhZG93LXhsOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMTBweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjA0KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpzaGFkb3ctMnhsOmhvdmVyIHtcXG4gICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiYSgwLCAwLCAwLCAwLjI1KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpzaGFkb3ctb3V0bGluZTpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLDE0NCwyMjAsMC41KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpzaGFkb3ctbm9uZTpob3ZlciB7XFxuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6c2hhZG93LWRyb3A6aG92ZXIge1xcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsMCwwLDAuMTQpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnNoYWRvdzpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4xMCkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6c2hhZG93LW1kOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwgMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA4KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpzaGFkb3ctbGc6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiAwIDE1cHggMzBweCAwIHJnYmEoMCwwLDAsMC4xMSksIDAgNXB4IDE1cHggMCByZ2JhKDAsMCwwLDAuMDgpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnNoYWRvdy1pbm5lcjpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4wNikgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6c2hhZG93LXhsOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMTBweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjA0KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpzaGFkb3ctMnhsOmZvY3VzIHtcXG4gICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiYSgwLCAwLCAwLCAwLjI1KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpzaGFkb3ctb3V0bGluZTpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLDE0NCwyMjAsMC41KSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpzaGFkb3ctbm9uZTpmb2N1cyB7XFxuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6c2hhZG93LWRyb3A6Zm9jdXMge1xcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsMCwwLDAuMTQpICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dGFibGUtYXV0byB7XFxuICAgIHRhYmxlLWxheW91dDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRhYmxlLWZpeGVkIHtcXG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRleHQtbGVmdCB7XFxuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp0ZXh0LWNlbnRlciB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRleHQtcmlnaHQge1xcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRleHQtanVzdGlmeSB7XFxuICAgIHRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp0ZXh0LXRyYW5zcGFyZW50IHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dGV4dC1ibGFjayB7XFxuICAgIGNvbG9yOiAjMjIyOTJmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dGV4dC13aGl0ZSB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dGV4dC1ncmV5IHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp0ZXh0LWdyZXktbGlnaHQge1xcbiAgICBjb2xvcjogI2RhZTFlNyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDp0ZXh0LXRyYW5zcGFyZW50OmhvdmVyIHtcXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOnRleHQtYmxhY2s6aG92ZXIge1xcbiAgICBjb2xvcjogIzIyMjkyZiAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDp0ZXh0LXdoaXRlOmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6dGV4dC1ncmV5OmhvdmVyIHtcXG4gICAgY29sb3I6ICNiOGMyY2MgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6dGV4dC1ncmV5LWxpZ2h0OmhvdmVyIHtcXG4gICAgY29sb3I6ICNkYWUxZTcgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6dGV4dC10cmFuc3BhcmVudDpmb2N1cyB7XFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDp0ZXh0LWJsYWNrOmZvY3VzIHtcXG4gICAgY29sb3I6ICMyMjI5MmYgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6dGV4dC13aGl0ZTpmb2N1cyB7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnRleHQtZ3JleTpmb2N1cyB7XFxuICAgIGNvbG9yOiAjYjhjMmNjICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOnRleHQtZ3JleS1saWdodDpmb2N1cyB7XFxuICAgIGNvbG9yOiAjZGFlMWU3ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dGV4dC14cyB7XFxuICAgIGZvbnQtc2l6ZTogLjc1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dGV4dC1zbSB7XFxuICAgIGZvbnQtc2l6ZTogLjg3NXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRleHQtYmFzZSB7XFxuICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRleHQtbGcge1xcbiAgICBmb250LXNpemU6IDEuMTI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dGV4dC14bCB7XFxuICAgIGZvbnQtc2l6ZTogMS4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRleHQtMnhsIHtcXG4gICAgZm9udC1zaXplOiAxLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp0ZXh0LTN4bCB7XFxuICAgIGZvbnQtc2l6ZTogMS44NzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp0ZXh0LTR4bCB7XFxuICAgIGZvbnQtc2l6ZTogMi4yNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRleHQtNXhsIHtcXG4gICAgZm9udC1zaXplOiAzcmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dGV4dC02eGwge1xcbiAgICBmb250LXNpemU6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDppdGFsaWMge1xcbiAgICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpub3QtaXRhbGljIHtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOml0YWxpYzpob3ZlciB7XFxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpub3QtaXRhbGljOmhvdmVyIHtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOml0YWxpYzpmb2N1cyB7XFxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpub3QtaXRhbGljOmZvY3VzIHtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dXBwZXJjYXNlIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmxvd2VyY2FzZSB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpjYXBpdGFsaXplIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpub3JtYWwtY2FzZSB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOnVwcGVyY2FzZTpob3ZlciB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6bG93ZXJjYXNlOmhvdmVyIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmhvdmVyXFxcXDpjYXBpdGFsaXplOmhvdmVyIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6bm9ybWFsLWNhc2U6aG92ZXIge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDp1cHBlcmNhc2U6Zm9jdXMge1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOmxvd2VyY2FzZTpmb2N1cyB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6Y2FwaXRhbGl6ZTpmb2N1cyB7XFxuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6Zm9jdXNcXFxcOm5vcm1hbC1jYXNlOmZvY3VzIHtcXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp1bmRlcmxpbmUge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmxpbmUtdGhyb3VnaCB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6bm8tdW5kZXJsaW5lIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOnVuZGVybGluZTpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOmxpbmUtdGhyb3VnaDpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOm5vLXVuZGVybGluZTpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDp1bmRlcmxpbmU6Zm9jdXMge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpsaW5lLXRocm91Z2g6Zm9jdXMge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDpuby11bmRlcmxpbmU6Zm9jdXMge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDphbnRpYWxpYXNlZCB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkICFpbXBvcnRhbnQ7XFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpzdWJwaXhlbC1hbnRpYWxpYXNlZCB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGF1dG8gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpob3ZlclxcXFw6YW50aWFsaWFzZWQ6aG92ZXIge1xcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZCAhaW1wb3J0YW50O1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aG92ZXJcXFxcOnN1YnBpeGVsLWFudGlhbGlhc2VkOmhvdmVyIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50O1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmZvY3VzXFxcXDphbnRpYWxpYXNlZDpmb2N1cyB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkICFpbXBvcnRhbnQ7XFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDpmb2N1c1xcXFw6c3VicGl4ZWwtYW50aWFsaWFzZWQ6Zm9jdXMge1xcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6c2VsZWN0LW5vbmUge1xcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7XFxuICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6c2VsZWN0LXRleHQge1xcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IHRleHQgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy11c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6c2VsZWN0LWFsbCB7XFxuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IGFsbCAhaW1wb3J0YW50O1xcbiAgICAgICAtbW96LXVzZXItc2VsZWN0OiBhbGwgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy11c2VyLXNlbGVjdDogYWxsICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IGFsbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnNlbGVjdC1hdXRvIHtcXG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYXV0byAhaW1wb3J0YW50O1xcbiAgICAgICAtbW96LXVzZXItc2VsZWN0OiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IGF1dG8gIWltcG9ydGFudDtcXG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogYXV0byAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmFsaWduLWJhc2VsaW5lIHtcXG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6YWxpZ24tdG9wIHtcXG4gICAgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmFsaWduLW1pZGRsZSB7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDphbGlnbi1ib3R0b20ge1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6YWxpZ24tdGV4dC10b3Age1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDphbGlnbi10ZXh0LWJvdHRvbSB7XFxuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnZpc2libGUge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6aW52aXNpYmxlIHtcXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6d2hpdGVzcGFjZS1ub3JtYWwge1xcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6d2hpdGVzcGFjZS1uby13cmFwIHtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOndoaXRlc3BhY2UtcHJlIHtcXG4gICAgd2hpdGUtc3BhY2U6IHByZSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOndoaXRlc3BhY2UtcHJlLWxpbmUge1xcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3aGl0ZXNwYWNlLXByZS13cmFwIHtcXG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6YnJlYWstbm9ybWFsIHtcXG4gICAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsICFpbXBvcnRhbnQ7XFxuICAgIHdvcmQtYnJlYWs6IG5vcm1hbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJyZWFrLXdvcmRzIHtcXG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOmJyZWFrLWFsbCB7XFxuICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbCAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnRydW5jYXRlIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyAhaW1wb3J0YW50O1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy0xIHtcXG4gICAgd2lkdGg6IDAuMjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTIge1xcbiAgICB3aWR0aDogMC41cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy0zIHtcXG4gICAgd2lkdGg6IDAuNzVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTQge1xcbiAgICB3aWR0aDogMXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctNSB7XFxuICAgIHdpZHRoOiAxLjI1cmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy02IHtcXG4gICAgd2lkdGg6IDEuNXJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctOCB7XFxuICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy0xMCB7XFxuICAgIHdpZHRoOiAyLjVyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTEyIHtcXG4gICAgd2lkdGg6IDNyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTE2IHtcXG4gICAgd2lkdGg6IDRyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTI0IHtcXG4gICAgd2lkdGg6IDZyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTMyIHtcXG4gICAgd2lkdGg6IDhyZW0gIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTQ4IHtcXG4gICAgd2lkdGg6IDEycmVtICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy02NCB7XFxuICAgIHdpZHRoOiAxNnJlbSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctYXV0byB7XFxuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy1weCB7XFxuICAgIHdpZHRoOiAxcHggIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTFcXFxcLzIge1xcbiAgICB3aWR0aDogNTAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy0xXFxcXC8zIHtcXG4gICAgd2lkdGg6IDMzLjMzMzMzJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctMlxcXFwvMyB7XFxuICAgIHdpZHRoOiA2Ni42NjY2NyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTFcXFxcLzQge1xcbiAgICB3aWR0aDogMjUlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy0zXFxcXC80IHtcXG4gICAgd2lkdGg6IDc1JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctMVxcXFwvNSB7XFxuICAgIHdpZHRoOiAyMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTJcXFxcLzUge1xcbiAgICB3aWR0aDogNDAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy0zXFxcXC81IHtcXG4gICAgd2lkdGg6IDYwJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctNFxcXFwvNSB7XFxuICAgIHdpZHRoOiA4MCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTFcXFxcLzYge1xcbiAgICB3aWR0aDogMTYuNjY2NjclICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy01XFxcXC82IHtcXG4gICAgd2lkdGg6IDgzLjMzMzMzJSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctMVxcXFwvMTIge1xcbiAgICB3aWR0aDogOC4zMzMzMyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTJcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDE2LjY2NjY3JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctM1xcXFwvMTIge1xcbiAgICB3aWR0aDogMjUlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy00XFxcXC8xMiB7XFxuICAgIHdpZHRoOiAzMy4zMzMzMyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTVcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDQxLjY2NjY3JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctNlxcXFwvMTIge1xcbiAgICB3aWR0aDogNTAlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy03XFxcXC8xMiB7XFxuICAgIHdpZHRoOiA1OC4zMzMzMyUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LThcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDY2LjY2NjY3JSAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnctOVxcXFwvMTIge1xcbiAgICB3aWR0aDogNzUlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy0xMFxcXFwvMTIge1xcbiAgICB3aWR0aDogODMuMzMzMzMlICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy0xMVxcXFwvMTIge1xcbiAgICB3aWR0aDogOTEuNjY2NjclICFpbXBvcnRhbnRcXG4gIH1cXG5cXG4gIC54bFxcXFw6dy1mdWxsIHtcXG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp3LXNjcmVlbiB7XFxuICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50XFxuICB9XFxuXFxuICAueGxcXFxcOnotMCB7XFxuICAgIHotaW5kZXg6IDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp6LTEwIHtcXG4gICAgei1pbmRleDogMTAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp6LTIwIHtcXG4gICAgei1pbmRleDogMjAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp6LTMwIHtcXG4gICAgei1pbmRleDogMzAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp6LTQwIHtcXG4gICAgei1pbmRleDogNDAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp6LTUwIHtcXG4gICAgei1pbmRleDogNTAgIWltcG9ydGFudFxcbiAgfVxcblxcbiAgLnhsXFxcXDp6LWF1dG8ge1xcbiAgICB6LWluZGV4OiBhdXRvICFpbXBvcnRhbnRcXG4gIH1cXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/main.css\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n    File Name: chat.scss\\n    Description: Chat app's styles. This is imported in Chat.vue file\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n#chat-app .vs-sidebar--background {\\n  position: absolute;\\n  z-index: 40000;\\n}\\n#chat-app #chat-list-sidebar .vs-sidebar,\\n#chat-app #chat-profile-sidebar .vs-sidebar {\\n  max-width: 400px;\\n}\\n#chat-app #chat-list-sidebar .chat-scroll-area {\\n  position: relative;\\n  margin: auto;\\n  width: 100%;\\n  height: calc(100% - 70px);\\n}\\n#chat-app #chat-list-sidebar .chat-scroll-area .chat__contact {\\n  transition: background-color .1s;\\n}\\n#chat-app #chat-list-sidebar .chat-scroll-area .chat__contact:hover {\\n  background-color: #eee;\\n}\\n#chat-app .chat__bg {\\n  background-color: #DFDBE5;\\n  background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260' viewBox='0 0 260 260'%3E%3Cg fill-rule='evenodd'%3E%3Cg fill='%239C92AC' fill-opacity='0.4'%3E%3Cpath d='M24.37 16c.2.65.39 1.32.54 2H21.17l1.17 2.34.45.9-.24.11V28a5 5 0 0 1-2.23 8.94l-.02.06a8 8 0 0 1-7.75 6h-20a8 8 0 0 1-7.74-6l-.02-.06A5 5 0 0 1-17.45 28v-6.76l-.79-1.58-.44-.9.9-.44.63-.32H-20a23.01 23.01 0 0 1 44.37-2zm-36.82 2a1 1 0 0 0-.44.1l-3.1 1.56.89 1.79 1.31-.66a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .86.02l2.88-1.27a3 3 0 0 1 2.43 0l2.88 1.27a1 1 0 0 0 .85-.02l3.1-1.55-.89-1.79-1.42.71a3 3 0 0 1-2.56.06l-2.77-1.23a1 1 0 0 0-.4-.09h-.01a1 1 0 0 0-.4.09l-2.78 1.23a3 3 0 0 1-2.56-.06l-2.3-1.15a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1L.9 19.22a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1l-2.21 1.11a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01zm0-2h-4.9a21.01 21.01 0 0 1 39.61 0h-2.09l-.06-.13-.26.13h-32.31zm30.35 7.68l1.36-.68h1.3v2h-36v-1.15l.34-.17 1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0l1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0L2.26 23h2.59l1.36.68a3 3 0 0 0 2.56.06l1.67-.74h3.23l1.67.74a3 3 0 0 0 2.56-.06zM-13.82 27l16.37 4.91L18.93 27h-32.75zm-.63 2h.34l16.66 5 16.67-5h.33a3 3 0 1 1 0 6h-34a3 3 0 1 1 0-6zm1.35 8a6 6 0 0 0 5.65 4h20a6 6 0 0 0 5.66-4H-13.1z'/%3E%3Cpath id='path6_fill-copy' d='M284.37 16c.2.65.39 1.32.54 2H281.17l1.17 2.34.45.9-.24.11V28a5 5 0 0 1-2.23 8.94l-.02.06a8 8 0 0 1-7.75 6h-20a8 8 0 0 1-7.74-6l-.02-.06a5 5 0 0 1-2.24-8.94v-6.76l-.79-1.58-.44-.9.9-.44.63-.32H240a23.01 23.01 0 0 1 44.37-2zm-36.82 2a1 1 0 0 0-.44.1l-3.1 1.56.89 1.79 1.31-.66a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .86.02l2.88-1.27a3 3 0 0 1 2.43 0l2.88 1.27a1 1 0 0 0 .85-.02l3.1-1.55-.89-1.79-1.42.71a3 3 0 0 1-2.56.06l-2.77-1.23a1 1 0 0 0-.4-.09h-.01a1 1 0 0 0-.4.09l-2.78 1.23a3 3 0 0 1-2.56-.06l-2.3-1.15a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1l-2.21 1.11a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1l-2.21 1.11a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01zm0-2h-4.9a21.01 21.01 0 0 1 39.61 0h-2.09l-.06-.13-.26.13h-32.31zm30.35 7.68l1.36-.68h1.3v2h-36v-1.15l.34-.17 1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0l1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0l1.36-.68h2.59l1.36.68a3 3 0 0 0 2.56.06l1.67-.74h3.23l1.67.74a3 3 0 0 0 2.56-.06zM246.18 27l16.37 4.91L278.93 27h-32.75zm-.63 2h.34l16.66 5 16.67-5h.33a3 3 0 1 1 0 6h-34a3 3 0 1 1 0-6zm1.35 8a6 6 0 0 0 5.65 4h20a6 6 0 0 0 5.66-4H246.9z'/%3E%3Cpath d='M159.5 21.02A9 9 0 0 0 151 15h-42a9 9 0 0 0-8.5 6.02 6 6 0 0 0 .02 11.96A8.99 8.99 0 0 0 109 45h42a9 9 0 0 0 8.48-12.02 6 6 0 0 0 .02-11.96zM151 17h-42a7 7 0 0 0-6.33 4h54.66a7 7 0 0 0-6.33-4zm-9.34 26a8.98 8.98 0 0 0 3.34-7h-2a7 7 0 0 1-7 7h-4.34a8.98 8.98 0 0 0 3.34-7h-2a7 7 0 0 1-7 7h-4.34a8.98 8.98 0 0 0 3.34-7h-2a7 7 0 0 1-7 7h-7a7 7 0 1 1 0-14h42a7 7 0 1 1 0 14h-9.34zM109 27a9 9 0 0 0-7.48 4H101a4 4 0 1 1 0-8h58a4 4 0 0 1 0 8h-.52a9 9 0 0 0-7.48-4h-42z'/%3E%3Cpath d='M39 115a8 8 0 1 0 0-16 8 8 0 0 0 0 16zm6-8a6 6 0 1 1-12 0 6 6 0 0 1 12 0zm-3-29v-2h8v-6H40a4 4 0 0 0-4 4v10H22l-1.33 4-.67 2h2.19L26 130h26l3.81-40H58l-.67-2L56 84H42v-6zm-4-4v10h2V74h8v-2h-8a2 2 0 0 0-2 2zm2 12h14.56l.67 2H22.77l.67-2H40zm13.8 4H24.2l3.62 38h22.36l3.62-38z'/%3E%3Cpath d='M129 92h-6v4h-6v4h-6v14h-3l.24 2 3.76 32h36l3.76-32 .24-2h-3v-14h-6v-4h-6v-4h-8zm18 22v-12h-4v4h3v8h1zm-3 0v-6h-4v6h4zm-6 6v-16h-4v19.17c1.6-.7 2.97-1.8 4-3.17zm-6 3.8V100h-4v23.8a10.04 10.04 0 0 0 4 0zm-6-.63V104h-4v16a10.04 10.04 0 0 0 4 3.17zm-6-9.17v-6h-4v6h4zm-6 0v-8h3v-4h-4v12h1zm27-12v-4h-4v4h3v4h1v-4zm-6 0v-8h-4v4h3v4h1zm-6-4v-4h-4v8h1v-4h3zm-6 4v-4h-4v8h1v-4h3zm7 24a12 12 0 0 0 11.83-10h7.92l-3.53 30h-32.44l-3.53-30h7.92A12 12 0 0 0 130 126z'/%3E%3Cpath d='M212 86v2h-4v-2h4zm4 0h-2v2h2v-2zm-20 0v.1a5 5 0 0 0-.56 9.65l.06.25 1.12 4.48a2 2 0 0 0 1.94 1.52h.01l7.02 24.55a2 2 0 0 0 1.92 1.45h4.98a2 2 0 0 0 1.92-1.45l7.02-24.55a2 2 0 0 0 1.95-1.52L224.5 96l.06-.25a5 5 0 0 0-.56-9.65V86a14 14 0 0 0-28 0zm4 0h6v2h-9a3 3 0 1 0 0 6H223a3 3 0 1 0 0-6H220v-2h2a12 12 0 1 0-24 0h2zm-1.44 14l-1-4h24.88l-1 4h-22.88zm8.95 26l-6.86-24h18.7l-6.86 24h-4.98zM150 242a22 22 0 1 0 0-44 22 22 0 0 0 0 44zm24-22a24 24 0 1 1-48 0 24 24 0 0 1 48 0zm-28.38 17.73l2.04-.87a6 6 0 0 1 4.68 0l2.04.87a2 2 0 0 0 2.5-.82l1.14-1.9a6 6 0 0 1 3.79-2.75l2.15-.5a2 2 0 0 0 1.54-2.12l-.19-2.2a6 6 0 0 1 1.45-4.46l1.45-1.67a2 2 0 0 0 0-2.62l-1.45-1.67a6 6 0 0 1-1.45-4.46l.2-2.2a2 2 0 0 0-1.55-2.13l-2.15-.5a6 6 0 0 1-3.8-2.75l-1.13-1.9a2 2 0 0 0-2.5-.8l-2.04.86a6 6 0 0 1-4.68 0l-2.04-.87a2 2 0 0 0-2.5.82l-1.14 1.9a6 6 0 0 1-3.79 2.75l-2.15.5a2 2 0 0 0-1.54 2.12l.19 2.2a6 6 0 0 1-1.45 4.46l-1.45 1.67a2 2 0 0 0 0 2.62l1.45 1.67a6 6 0 0 1 1.45 4.46l-.2 2.2a2 2 0 0 0 1.55 2.13l2.15.5a6 6 0 0 1 3.8 2.75l1.13 1.9a2 2 0 0 0 2.5.8zm2.82.97a4 4 0 0 1 3.12 0l2.04.87a4 4 0 0 0 4.99-1.62l1.14-1.9a4 4 0 0 1 2.53-1.84l2.15-.5a4 4 0 0 0 3.09-4.24l-.2-2.2a4 4 0 0 1 .97-2.98l1.45-1.67a4 4 0 0 0 0-5.24l-1.45-1.67a4 4 0 0 1-.97-2.97l.2-2.2a4 4 0 0 0-3.09-4.25l-2.15-.5a4 4 0 0 1-2.53-1.84l-1.14-1.9a4 4 0 0 0-5-1.62l-2.03.87a4 4 0 0 1-3.12 0l-2.04-.87a4 4 0 0 0-4.99 1.62l-1.14 1.9a4 4 0 0 1-2.53 1.84l-2.15.5a4 4 0 0 0-3.09 4.24l.2 2.2a4 4 0 0 1-.97 2.98l-1.45 1.67a4 4 0 0 0 0 5.24l1.45 1.67a4 4 0 0 1 .97 2.97l-.2 2.2a4 4 0 0 0 3.09 4.25l2.15.5a4 4 0 0 1 2.53 1.84l1.14 1.9a4 4 0 0 0 5 1.62l2.03-.87zM152 207a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm6 2a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-11 1a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-6 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm3-5a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-8 8a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm3 6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm0 6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm4 7a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm5-2a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm5 4a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm4-6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm6-4a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-4-3a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm4-3a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-5-4a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-24 6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm16 5a5 5 0 1 0 0-10 5 5 0 0 0 0 10zm7-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0zm86-29a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm19 9a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-14 5a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm-25 1a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm5 4a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm9 0a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm15 1a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm12-2a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm-11-14a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-19 0a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm6 5a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-25 15c0-.47.01-.94.03-1.4a5 5 0 0 1-1.7-8 3.99 3.99 0 0 1 1.88-5.18 5 5 0 0 1 3.4-6.22 3 3 0 0 1 1.46-1.05 5 5 0 0 1 7.76-3.27A30.86 30.86 0 0 1 246 184c6.79 0 13.06 2.18 18.17 5.88a5 5 0 0 1 7.76 3.27 3 3 0 0 1 1.47 1.05 5 5 0 0 1 3.4 6.22 4 4 0 0 1 1.87 5.18 4.98 4.98 0 0 1-1.7 8c.02.46.03.93.03 1.4v1h-62v-1zm.83-7.17a30.9 30.9 0 0 0-.62 3.57 3 3 0 0 1-.61-4.2c.37.28.78.49 1.23.63zm1.49-4.61c-.36.87-.68 1.76-.96 2.68a2 2 0 0 1-.21-3.71c.33.4.73.75 1.17 1.03zm2.32-4.54c-.54.86-1.03 1.76-1.49 2.68a3 3 0 0 1-.07-4.67 3 3 0 0 0 1.56 1.99zm1.14-1.7c.35-.5.72-.98 1.1-1.46a1 1 0 1 0-1.1 1.45zm5.34-5.77c-1.03.86-2 1.79-2.9 2.77a3 3 0 0 0-1.11-.77 3 3 0 0 1 4-2zm42.66 2.77c-.9-.98-1.87-1.9-2.9-2.77a3 3 0 0 1 4.01 2 3 3 0 0 0-1.1.77zm1.34 1.54c.38.48.75.96 1.1 1.45a1 1 0 1 0-1.1-1.45zm3.73 5.84c-.46-.92-.95-1.82-1.5-2.68a3 3 0 0 0 1.57-1.99 3 3 0 0 1-.07 4.67zm1.8 4.53c-.29-.9-.6-1.8-.97-2.67.44-.28.84-.63 1.17-1.03a2 2 0 0 1-.2 3.7zm1.14 5.51c-.14-1.21-.35-2.4-.62-3.57.45-.14.86-.35 1.23-.63a2.99 2.99 0 0 1-.6 4.2zM275 214a29 29 0 0 0-57.97 0h57.96zM72.33 198.12c-.21-.32-.34-.7-.34-1.12v-12h-2v12a4.01 4.01 0 0 0 7.09 2.54c.57-.69.91-1.57.91-2.54v-12h-2v12a1.99 1.99 0 0 1-2 2 2 2 0 0 1-1.66-.88zM75 176c.38 0 .74-.04 1.1-.12a4 4 0 0 0 6.19 2.4A13.94 13.94 0 0 1 84 185v24a6 6 0 0 1-6 6h-3v9a5 5 0 1 1-10 0v-9h-3a6 6 0 0 1-6-6v-24a14 14 0 0 1 14-14 5 5 0 0 0 5 5zm-17 15v12a1.99 1.99 0 0 0 1.22 1.84 2 2 0 0 0 2.44-.72c.21-.32.34-.7.34-1.12v-12h2v12a3.98 3.98 0 0 1-5.35 3.77 3.98 3.98 0 0 1-.65-.3V209a4 4 0 0 0 4 4h16a4 4 0 0 0 4-4v-24c.01-1.53-.23-2.88-.72-4.17-.43.1-.87.16-1.28.17a6 6 0 0 1-5.2-3 7 7 0 0 1-6.47-4.88A12 12 0 0 0 58 185v6zm9 24v9a3 3 0 1 0 6 0v-9h-6z'/%3E%3Cpath d='M-17 191a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm19 9a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1zm-14 5a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm-25 1a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm5 4a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm9 0a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm15 1a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm12-2a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2H4zm-11-14a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-19 0a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm6 5a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-25 15c0-.47.01-.94.03-1.4a5 5 0 0 1-1.7-8 3.99 3.99 0 0 1 1.88-5.18 5 5 0 0 1 3.4-6.22 3 3 0 0 1 1.46-1.05 5 5 0 0 1 7.76-3.27A30.86 30.86 0 0 1-14 184c6.79 0 13.06 2.18 18.17 5.88a5 5 0 0 1 7.76 3.27 3 3 0 0 1 1.47 1.05 5 5 0 0 1 3.4 6.22 4 4 0 0 1 1.87 5.18 4.98 4.98 0 0 1-1.7 8c.02.46.03.93.03 1.4v1h-62v-1zm.83-7.17a30.9 30.9 0 0 0-.62 3.57 3 3 0 0 1-.61-4.2c.37.28.78.49 1.23.63zm1.49-4.61c-.36.87-.68 1.76-.96 2.68a2 2 0 0 1-.21-3.71c.33.4.73.75 1.17 1.03zm2.32-4.54c-.54.86-1.03 1.76-1.49 2.68a3 3 0 0 1-.07-4.67 3 3 0 0 0 1.56 1.99zm1.14-1.7c.35-.5.72-.98 1.1-1.46a1 1 0 1 0-1.1 1.45zm5.34-5.77c-1.03.86-2 1.79-2.9 2.77a3 3 0 0 0-1.11-.77 3 3 0 0 1 4-2zm42.66 2.77c-.9-.98-1.87-1.9-2.9-2.77a3 3 0 0 1 4.01 2 3 3 0 0 0-1.1.77zm1.34 1.54c.38.48.75.96 1.1 1.45a1 1 0 1 0-1.1-1.45zm3.73 5.84c-.46-.92-.95-1.82-1.5-2.68a3 3 0 0 0 1.57-1.99 3 3 0 0 1-.07 4.67zm1.8 4.53c-.29-.9-.6-1.8-.97-2.67.44-.28.84-.63 1.17-1.03a2 2 0 0 1-.2 3.7zm1.14 5.51c-.14-1.21-.35-2.4-.62-3.57.45-.14.86-.35 1.23-.63a2.99 2.99 0 0 1-.6 4.2zM15 214a29 29 0 0 0-57.97 0h57.96z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\\\");\\n}\\n#chat-app .chat-content-area {\\n  position: relative;\\n}\\n#chat-app .chat-content-area .chat-content-scroll-area {\\n  position: relative;\\n  margin: auto;\\n  width: 100%;\\n  height: calc(100% - 134px);\\n}\\n#chat-app .chat-content-area .chat-content-scroll-area .chat__input {\\n  position: absolute;\\n  bottom: 0;\\n  width: 100%;\\n}\\n@media (min-width: 576px) {\\n#chat-app .user-profile-container .vs-sidebar {\\n    width: 100%;\\n}\\n}\\n@media (min-width: 768px) {\\n#chat-app .user-profile-container .vs-sidebar {\\n    width: 33.33333%;\\n}\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jaGF0L0NoYXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvQ2hhdC52dWU/MTdiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBjaGF0LnNjc3NcXG4gICAgRGVzY3JpcHRpb246IENoYXQgYXBwJ3Mgc3R5bGVzLiBUaGlzIGlzIGltcG9ydGVkIGluIENoYXQudnVlIGZpbGVcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG4jY2hhdC1hcHAgLnZzLXNpZGViYXItLWJhY2tncm91bmQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogNDAwMDA7XFxufVxcbiNjaGF0LWFwcCAjY2hhdC1saXN0LXNpZGViYXIgLnZzLXNpZGViYXIsXFxuI2NoYXQtYXBwICNjaGF0LXByb2ZpbGUtc2lkZWJhciAudnMtc2lkZWJhciB7XFxuICBtYXgtd2lkdGg6IDQwMHB4O1xcbn1cXG4jY2hhdC1hcHAgI2NoYXQtbGlzdC1zaWRlYmFyIC5jaGF0LXNjcm9sbC1hcmVhIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1hcmdpbjogYXV0bztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA3MHB4KTtcXG59XFxuI2NoYXQtYXBwICNjaGF0LWxpc3Qtc2lkZWJhciAuY2hhdC1zY3JvbGwtYXJlYSAuY2hhdF9fY29udGFjdCB7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xcztcXG59XFxuI2NoYXQtYXBwICNjaGF0LWxpc3Qtc2lkZWJhciAuY2hhdC1zY3JvbGwtYXJlYSAuY2hhdF9fY29udGFjdDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xcbn1cXG4jY2hhdC1hcHAgLmNoYXRfX2JnIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNERkRCRTU7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjYwJyBoZWlnaHQ9JzI2MCcgdmlld0JveD0nMCAwIDI2MCAyNjAnJTNFJTNDZyBmaWxsLXJ1bGU9J2V2ZW5vZGQnJTNFJTNDZyBmaWxsPSclMjM5QzkyQUMnIGZpbGwtb3BhY2l0eT0nMC40JyUzRSUzQ3BhdGggZD0nTTI0LjM3IDE2Yy4yLjY1LjM5IDEuMzIuNTQgMkgyMS4xN2wxLjE3IDIuMzQuNDUuOS0uMjQuMTFWMjhhNSA1IDAgMCAxLTIuMjMgOC45NGwtLjAyLjA2YTggOCAwIDAgMS03Ljc1IDZoLTIwYTggOCAwIDAgMS03Ljc0LTZsLS4wMi0uMDZBNSA1IDAgMCAxLTE3LjQ1IDI4di02Ljc2bC0uNzktMS41OC0uNDQtLjkuOS0uNDQuNjMtLjMySC0yMGEyMy4wMSAyMy4wMSAwIDAgMSA0NC4zNy0yem0tMzYuODIgMmExIDEgMCAwIDAtLjQ0LjFsLTMuMSAxLjU2Ljg5IDEuNzkgMS4zMS0uNjZhMyAzIDAgMCAxIDIuNjkgMGwyLjIgMS4xYTEgMSAwIDAgMCAuOSAwbDIuMjEtMS4xYTMgMyAwIDAgMSAyLjY5IDBsMi4yIDEuMWExIDEgMCAwIDAgLjkgMGwyLjIxLTEuMWEzIDMgMCAwIDEgMi42OSAwbDIuMiAxLjFhMSAxIDAgMCAwIC44Ni4wMmwyLjg4LTEuMjdhMyAzIDAgMCAxIDIuNDMgMGwyLjg4IDEuMjdhMSAxIDAgMCAwIC44NS0uMDJsMy4xLTEuNTUtLjg5LTEuNzktMS40Mi43MWEzIDMgMCAwIDEtMi41Ni4wNmwtMi43Ny0xLjIzYTEgMSAwIDAgMC0uNC0uMDloLS4wMWExIDEgMCAwIDAtLjQuMDlsLTIuNzggMS4yM2EzIDMgMCAwIDEtMi41Ni0uMDZsLTIuMy0xLjE1YTEgMSAwIDAgMC0uNDUtLjExaC0uMDFhMSAxIDAgMCAwLS40NC4xTC45IDE5LjIyYTMgMyAwIDAgMS0yLjY5IDBsLTIuMi0xLjFhMSAxIDAgMCAwLS40NS0uMTFoLS4wMWExIDEgMCAwIDAtLjQ0LjFsLTIuMjEgMS4xMWEzIDMgMCAwIDEtMi42OSAwbC0yLjItMS4xYTEgMSAwIDAgMC0uNDUtLjExaC0uMDF6bTAtMmgtNC45YTIxLjAxIDIxLjAxIDAgMCAxIDM5LjYxIDBoLTIuMDlsLS4wNi0uMTMtLjI2LjEzaC0zMi4zMXptMzAuMzUgNy42OGwxLjM2LS42OGgxLjN2MmgtMzZ2LTEuMTVsLjM0LS4xNyAxLjM2LS42OGgyLjU5bDEuMzYuNjhhMyAzIDAgMCAwIDIuNjkgMGwxLjM2LS42OGgyLjU5bDEuMzYuNjhhMyAzIDAgMCAwIDIuNjkgMEwyLjI2IDIzaDIuNTlsMS4zNi42OGEzIDMgMCAwIDAgMi41Ni4wNmwxLjY3LS43NGgzLjIzbDEuNjcuNzRhMyAzIDAgMCAwIDIuNTYtLjA2ek0tMTMuODIgMjdsMTYuMzcgNC45MUwxOC45MyAyN2gtMzIuNzV6bS0uNjMgMmguMzRsMTYuNjYgNSAxNi42Ny01aC4zM2EzIDMgMCAxIDEgMCA2aC0zNGEzIDMgMCAxIDEgMC02em0xLjM1IDhhNiA2IDAgMCAwIDUuNjUgNGgyMGE2IDYgMCAwIDAgNS42Ni00SC0xMy4xeicvJTNFJTNDcGF0aCBpZD0ncGF0aDZfZmlsbC1jb3B5JyBkPSdNMjg0LjM3IDE2Yy4yLjY1LjM5IDEuMzIuNTQgMkgyODEuMTdsMS4xNyAyLjM0LjQ1LjktLjI0LjExVjI4YTUgNSAwIDAgMS0yLjIzIDguOTRsLS4wMi4wNmE4IDggMCAwIDEtNy43NSA2aC0yMGE4IDggMCAwIDEtNy43NC02bC0uMDItLjA2YTUgNSAwIDAgMS0yLjI0LTguOTR2LTYuNzZsLS43OS0xLjU4LS40NC0uOS45LS40NC42My0uMzJIMjQwYTIzLjAxIDIzLjAxIDAgMCAxIDQ0LjM3LTJ6bS0zNi44MiAyYTEgMSAwIDAgMC0uNDQuMWwtMy4xIDEuNTYuODkgMS43OSAxLjMxLS42NmEzIDMgMCAwIDEgMi42OSAwbDIuMiAxLjFhMSAxIDAgMCAwIC45IDBsMi4yMS0xLjFhMyAzIDAgMCAxIDIuNjkgMGwyLjIgMS4xYTEgMSAwIDAgMCAuOSAwbDIuMjEtMS4xYTMgMyAwIDAgMSAyLjY5IDBsMi4yIDEuMWExIDEgMCAwIDAgLjg2LjAybDIuODgtMS4yN2EzIDMgMCAwIDEgMi40MyAwbDIuODggMS4yN2ExIDEgMCAwIDAgLjg1LS4wMmwzLjEtMS41NS0uODktMS43OS0xLjQyLjcxYTMgMyAwIDAgMS0yLjU2LjA2bC0yLjc3LTEuMjNhMSAxIDAgMCAwLS40LS4wOWgtLjAxYTEgMSAwIDAgMC0uNC4wOWwtMi43OCAxLjIzYTMgMyAwIDAgMS0yLjU2LS4wNmwtMi4zLTEuMTVhMSAxIDAgMCAwLS40NS0uMTFoLS4wMWExIDEgMCAwIDAtLjQ0LjFsLTIuMjEgMS4xMWEzIDMgMCAwIDEtMi42OSAwbC0yLjItMS4xYTEgMSAwIDAgMC0uNDUtLjExaC0uMDFhMSAxIDAgMCAwLS40NC4xbC0yLjIxIDEuMTFhMyAzIDAgMCAxLTIuNjkgMGwtMi4yLTEuMWExIDEgMCAwIDAtLjQ1LS4xMWgtLjAxem0wLTJoLTQuOWEyMS4wMSAyMS4wMSAwIDAgMSAzOS42MSAwaC0yLjA5bC0uMDYtLjEzLS4yNi4xM2gtMzIuMzF6bTMwLjM1IDcuNjhsMS4zNi0uNjhoMS4zdjJoLTM2di0xLjE1bC4zNC0uMTcgMS4zNi0uNjhoMi41OWwxLjM2LjY4YTMgMyAwIDAgMCAyLjY5IDBsMS4zNi0uNjhoMi41OWwxLjM2LjY4YTMgMyAwIDAgMCAyLjY5IDBsMS4zNi0uNjhoMi41OWwxLjM2LjY4YTMgMyAwIDAgMCAyLjU2LjA2bDEuNjctLjc0aDMuMjNsMS42Ny43NGEzIDMgMCAwIDAgMi41Ni0uMDZ6TTI0Ni4xOCAyN2wxNi4zNyA0LjkxTDI3OC45MyAyN2gtMzIuNzV6bS0uNjMgMmguMzRsMTYuNjYgNSAxNi42Ny01aC4zM2EzIDMgMCAxIDEgMCA2aC0zNGEzIDMgMCAxIDEgMC02em0xLjM1IDhhNiA2IDAgMCAwIDUuNjUgNGgyMGE2IDYgMCAwIDAgNS42Ni00SDI0Ni45eicvJTNFJTNDcGF0aCBkPSdNMTU5LjUgMjEuMDJBOSA5IDAgMCAwIDE1MSAxNWgtNDJhOSA5IDAgMCAwLTguNSA2LjAyIDYgNiAwIDAgMCAuMDIgMTEuOTZBOC45OSA4Ljk5IDAgMCAwIDEwOSA0NWg0MmE5IDkgMCAwIDAgOC40OC0xMi4wMiA2IDYgMCAwIDAgLjAyLTExLjk2ek0xNTEgMTdoLTQyYTcgNyAwIDAgMC02LjMzIDRoNTQuNjZhNyA3IDAgMCAwLTYuMzMtNHptLTkuMzQgMjZhOC45OCA4Ljk4IDAgMCAwIDMuMzQtN2gtMmE3IDcgMCAwIDEtNyA3aC00LjM0YTguOTggOC45OCAwIDAgMCAzLjM0LTdoLTJhNyA3IDAgMCAxLTcgN2gtNC4zNGE4Ljk4IDguOTggMCAwIDAgMy4zNC03aC0yYTcgNyAwIDAgMS03IDdoLTdhNyA3IDAgMSAxIDAtMTRoNDJhNyA3IDAgMSAxIDAgMTRoLTkuMzR6TTEwOSAyN2E5IDkgMCAwIDAtNy40OCA0SDEwMWE0IDQgMCAxIDEgMC04aDU4YTQgNCAwIDAgMSAwIDhoLS41MmE5IDkgMCAwIDAtNy40OC00aC00MnonLyUzRSUzQ3BhdGggZD0nTTM5IDExNWE4IDggMCAxIDAgMC0xNiA4IDggMCAwIDAgMCAxNnptNi04YTYgNiAwIDEgMS0xMiAwIDYgNiAwIDAgMSAxMiAwem0tMy0yOXYtMmg4di02SDQwYTQgNCAwIDAgMC00IDR2MTBIMjJsLTEuMzMgNC0uNjcgMmgyLjE5TDI2IDEzMGgyNmwzLjgxLTQwSDU4bC0uNjctMkw1NiA4NEg0MnYtNnptLTQtNHYxMGgyVjc0aDh2LTJoLThhMiAyIDAgMCAwLTIgMnptMiAxMmgxNC41NmwuNjcgMkgyMi43N2wuNjctMkg0MHptMTMuOCA0SDI0LjJsMy42MiAzOGgyMi4zNmwzLjYyLTM4eicvJTNFJTNDcGF0aCBkPSdNMTI5IDkyaC02djRoLTZ2NGgtNnYxNGgtM2wuMjQgMiAzLjc2IDMyaDM2bDMuNzYtMzIgLjI0LTJoLTN2LTE0aC02di00aC02di00aC04em0xOCAyMnYtMTJoLTR2NGgzdjhoMXptLTMgMHYtNmgtNHY2aDR6bS02IDZ2LTE2aC00djE5LjE3YzEuNi0uNyAyLjk3LTEuOCA0LTMuMTd6bS02IDMuOFYxMDBoLTR2MjMuOGExMC4wNCAxMC4wNCAwIDAgMCA0IDB6bS02LS42M1YxMDRoLTR2MTZhMTAuMDQgMTAuMDQgMCAwIDAgNCAzLjE3em0tNi05LjE3di02aC00djZoNHptLTYgMHYtOGgzdi00aC00djEyaDF6bTI3LTEydi00aC00djRoM3Y0aDF2LTR6bS02IDB2LThoLTR2NGgzdjRoMXptLTYtNHYtNGgtNHY4aDF2LTRoM3ptLTYgNHYtNGgtNHY4aDF2LTRoM3ptNyAyNGExMiAxMiAwIDAgMCAxMS44My0xMGg3LjkybC0zLjUzIDMwaC0zMi40NGwtMy41My0zMGg3LjkyQTEyIDEyIDAgMCAwIDEzMCAxMjZ6Jy8lM0UlM0NwYXRoIGQ9J00yMTIgODZ2MmgtNHYtMmg0em00IDBoLTJ2Mmgydi0yem0tMjAgMHYuMWE1IDUgMCAwIDAtLjU2IDkuNjVsLjA2LjI1IDEuMTIgNC40OGEyIDIgMCAwIDAgMS45NCAxLjUyaC4wMWw3LjAyIDI0LjU1YTIgMiAwIDAgMCAxLjkyIDEuNDVoNC45OGEyIDIgMCAwIDAgMS45Mi0xLjQ1bDcuMDItMjQuNTVhMiAyIDAgMCAwIDEuOTUtMS41MkwyMjQuNSA5NmwuMDYtLjI1YTUgNSAwIDAgMC0uNTYtOS42NVY4NmExNCAxNCAwIDAgMC0yOCAwem00IDBoNnYyaC05YTMgMyAwIDEgMCAwIDZIMjIzYTMgMyAwIDEgMCAwLTZIMjIwdi0yaDJhMTIgMTIgMCAxIDAtMjQgMGgyem0tMS40NCAxNGwtMS00aDI0Ljg4bC0xIDRoLTIyLjg4em04Ljk1IDI2bC02Ljg2LTI0aDE4LjdsLTYuODYgMjRoLTQuOTh6TTE1MCAyNDJhMjIgMjIgMCAxIDAgMC00NCAyMiAyMiAwIDAgMCAwIDQ0em0yNC0yMmEyNCAyNCAwIDEgMS00OCAwIDI0IDI0IDAgMCAxIDQ4IDB6bS0yOC4zOCAxNy43M2wyLjA0LS44N2E2IDYgMCAwIDEgNC42OCAwbDIuMDQuODdhMiAyIDAgMCAwIDIuNS0uODJsMS4xNC0xLjlhNiA2IDAgMCAxIDMuNzktMi43NWwyLjE1LS41YTIgMiAwIDAgMCAxLjU0LTIuMTJsLS4xOS0yLjJhNiA2IDAgMCAxIDEuNDUtNC40NmwxLjQ1LTEuNjdhMiAyIDAgMCAwIDAtMi42MmwtMS40NS0xLjY3YTYgNiAwIDAgMS0xLjQ1LTQuNDZsLjItMi4yYTIgMiAwIDAgMC0xLjU1LTIuMTNsLTIuMTUtLjVhNiA2IDAgMCAxLTMuOC0yLjc1bC0xLjEzLTEuOWEyIDIgMCAwIDAtMi41LS44bC0yLjA0Ljg2YTYgNiAwIDAgMS00LjY4IDBsLTIuMDQtLjg3YTIgMiAwIDAgMC0yLjUuODJsLTEuMTQgMS45YTYgNiAwIDAgMS0zLjc5IDIuNzVsLTIuMTUuNWEyIDIgMCAwIDAtMS41NCAyLjEybC4xOSAyLjJhNiA2IDAgMCAxLTEuNDUgNC40NmwtMS40NSAxLjY3YTIgMiAwIDAgMCAwIDIuNjJsMS40NSAxLjY3YTYgNiAwIDAgMSAxLjQ1IDQuNDZsLS4yIDIuMmEyIDIgMCAwIDAgMS41NSAyLjEzbDIuMTUuNWE2IDYgMCAwIDEgMy44IDIuNzVsMS4xMyAxLjlhMiAyIDAgMCAwIDIuNS44em0yLjgyLjk3YTQgNCAwIDAgMSAzLjEyIDBsMi4wNC44N2E0IDQgMCAwIDAgNC45OS0xLjYybDEuMTQtMS45YTQgNCAwIDAgMSAyLjUzLTEuODRsMi4xNS0uNWE0IDQgMCAwIDAgMy4wOS00LjI0bC0uMi0yLjJhNCA0IDAgMCAxIC45Ny0yLjk4bDEuNDUtMS42N2E0IDQgMCAwIDAgMC01LjI0bC0xLjQ1LTEuNjdhNCA0IDAgMCAxLS45Ny0yLjk3bC4yLTIuMmE0IDQgMCAwIDAtMy4wOS00LjI1bC0yLjE1LS41YTQgNCAwIDAgMS0yLjUzLTEuODRsLTEuMTQtMS45YTQgNCAwIDAgMC01LTEuNjJsLTIuMDMuODdhNCA0IDAgMCAxLTMuMTIgMGwtMi4wNC0uODdhNCA0IDAgMCAwLTQuOTkgMS42MmwtMS4xNCAxLjlhNCA0IDAgMCAxLTIuNTMgMS44NGwtMi4xNS41YTQgNCAwIDAgMC0zLjA5IDQuMjRsLjIgMi4yYTQgNCAwIDAgMS0uOTcgMi45OGwtMS40NSAxLjY3YTQgNCAwIDAgMCAwIDUuMjRsMS40NSAxLjY3YTQgNCAwIDAgMSAuOTcgMi45N2wtLjIgMi4yYTQgNCAwIDAgMCAzLjA5IDQuMjVsMi4xNS41YTQgNCAwIDAgMSAyLjUzIDEuODRsMS4xNCAxLjlhNCA0IDAgMCAwIDUgMS42MmwyLjAzLS44N3pNMTUyIDIwN2ExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bTYgMmExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bS0xMSAxYTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHptLTYgMGExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bTMtNWExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bS04IDhhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem0zIDZhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem0wIDZhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem00IDdhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem01LTJhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem01IDRhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem00LTZhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem02LTRhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwem0tNC0zYTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHptNC0zYTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHptLTUtNGExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6bS0yNCA2YTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHptMTYgNWE1IDUgMCAxIDAgMC0xMCA1IDUgMCAwIDAgMCAxMHptNy01YTcgNyAwIDEgMS0xNCAwIDcgNyAwIDAgMSAxNCAwem04Ni0yOWExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptMTkgOWExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDAgMmgtMmExIDEgMCAwIDEtMS0xem0tMTQgNWExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptLTI1IDFhMSAxIDAgMCAwIDAgMmgyYTEgMSAwIDAgMCAwLTJoLTJ6bTUgNGExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptOSAwYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMCAyaC0yYTEgMSAwIDAgMS0xLTF6bTE1IDFhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAwIDJoLTJhMSAxIDAgMCAxLTEtMXptMTItMmExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptLTExLTE0YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMCAyaC0yYTEgMSAwIDAgMS0xLTF6bS0xOSAwYTEgMSAwIDAgMCAwIDJoMmExIDEgMCAwIDAgMC0yaC0yem02IDVhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAwIDJoLTJhMSAxIDAgMCAxLTEtMXptLTI1IDE1YzAtLjQ3LjAxLS45NC4wMy0xLjRhNSA1IDAgMCAxLTEuNy04IDMuOTkgMy45OSAwIDAgMSAxLjg4LTUuMTggNSA1IDAgMCAxIDMuNC02LjIyIDMgMyAwIDAgMSAxLjQ2LTEuMDUgNSA1IDAgMCAxIDcuNzYtMy4yN0EzMC44NiAzMC44NiAwIDAgMSAyNDYgMTg0YzYuNzkgMCAxMy4wNiAyLjE4IDE4LjE3IDUuODhhNSA1IDAgMCAxIDcuNzYgMy4yNyAzIDMgMCAwIDEgMS40NyAxLjA1IDUgNSAwIDAgMSAzLjQgNi4yMiA0IDQgMCAwIDEgMS44NyA1LjE4IDQuOTggNC45OCAwIDAgMS0xLjcgOGMuMDIuNDYuMDMuOTMuMDMgMS40djFoLTYydi0xem0uODMtNy4xN2EzMC45IDMwLjkgMCAwIDAtLjYyIDMuNTcgMyAzIDAgMCAxLS42MS00LjJjLjM3LjI4Ljc4LjQ5IDEuMjMuNjN6bTEuNDktNC42MWMtLjM2Ljg3LS42OCAxLjc2LS45NiAyLjY4YTIgMiAwIDAgMS0uMjEtMy43MWMuMzMuNC43My43NSAxLjE3IDEuMDN6bTIuMzItNC41NGMtLjU0Ljg2LTEuMDMgMS43Ni0xLjQ5IDIuNjhhMyAzIDAgMCAxLS4wNy00LjY3IDMgMyAwIDAgMCAxLjU2IDEuOTl6bTEuMTQtMS43Yy4zNS0uNS43Mi0uOTggMS4xLTEuNDZhMSAxIDAgMSAwLTEuMSAxLjQ1em01LjM0LTUuNzdjLTEuMDMuODYtMiAxLjc5LTIuOSAyLjc3YTMgMyAwIDAgMC0xLjExLS43NyAzIDMgMCAwIDEgNC0yem00Mi42NiAyLjc3Yy0uOS0uOTgtMS44Ny0xLjktMi45LTIuNzdhMyAzIDAgMCAxIDQuMDEgMiAzIDMgMCAwIDAtMS4xLjc3em0xLjM0IDEuNTRjLjM4LjQ4Ljc1Ljk2IDEuMSAxLjQ1YTEgMSAwIDEgMC0xLjEtMS40NXptMy43MyA1Ljg0Yy0uNDYtLjkyLS45NS0xLjgyLTEuNS0yLjY4YTMgMyAwIDAgMCAxLjU3LTEuOTkgMyAzIDAgMCAxLS4wNyA0LjY3em0xLjggNC41M2MtLjI5LS45LS42LTEuOC0uOTctMi42Ny40NC0uMjguODQtLjYzIDEuMTctMS4wM2EyIDIgMCAwIDEtLjIgMy43em0xLjE0IDUuNTFjLS4xNC0xLjIxLS4zNS0yLjQtLjYyLTMuNTcuNDUtLjE0Ljg2LS4zNSAxLjIzLS42M2EyLjk5IDIuOTkgMCAwIDEtLjYgNC4yek0yNzUgMjE0YTI5IDI5IDAgMCAwLTU3Ljk3IDBoNTcuOTZ6TTcyLjMzIDE5OC4xMmMtLjIxLS4zMi0uMzQtLjctLjM0LTEuMTJ2LTEyaC0ydjEyYTQuMDEgNC4wMSAwIDAgMCA3LjA5IDIuNTRjLjU3LS42OS45MS0xLjU3LjkxLTIuNTR2LTEyaC0ydjEyYTEuOTkgMS45OSAwIDAgMS0yIDIgMiAyIDAgMCAxLTEuNjYtLjg4ek03NSAxNzZjLjM4IDAgLjc0LS4wNCAxLjEtLjEyYTQgNCAwIDAgMCA2LjE5IDIuNEExMy45NCAxMy45NCAwIDAgMSA4NCAxODV2MjRhNiA2IDAgMCAxLTYgNmgtM3Y5YTUgNSAwIDEgMS0xMCAwdi05aC0zYTYgNiAwIDAgMS02LTZ2LTI0YTE0IDE0IDAgMCAxIDE0LTE0IDUgNSAwIDAgMCA1IDV6bS0xNyAxNXYxMmExLjk5IDEuOTkgMCAwIDAgMS4yMiAxLjg0IDIgMiAwIDAgMCAyLjQ0LS43MmMuMjEtLjMyLjM0LS43LjM0LTEuMTJ2LTEyaDJ2MTJhMy45OCAzLjk4IDAgMCAxLTUuMzUgMy43NyAzLjk4IDMuOTggMCAwIDEtLjY1LS4zVjIwOWE0IDQgMCAwIDAgNCA0aDE2YTQgNCAwIDAgMCA0LTR2LTI0Yy4wMS0xLjUzLS4yMy0yLjg4LS43Mi00LjE3LS40My4xLS44Ny4xNi0xLjI4LjE3YTYgNiAwIDAgMS01LjItMyA3IDcgMCAwIDEtNi40Ny00Ljg4QTEyIDEyIDAgMCAwIDU4IDE4NXY2em05IDI0djlhMyAzIDAgMSAwIDYgMHYtOWgtNnonLyUzRSUzQ3BhdGggZD0nTS0xNyAxOTFhMSAxIDAgMCAwIDAgMmgyYTEgMSAwIDAgMCAwLTJoLTJ6bTE5IDlhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAwIDJIM2ExIDEgMCAwIDEtMS0xem0tMTQgNWExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptLTI1IDFhMSAxIDAgMCAwIDAgMmgyYTEgMSAwIDAgMCAwLTJoLTJ6bTUgNGExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMmgtMnptOSAwYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMCAyaC0yYTEgMSAwIDAgMS0xLTF6bTE1IDFhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAwIDJoLTJhMSAxIDAgMCAxLTEtMXptMTItMmExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMkg0em0tMTEtMTRhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAwIDJoLTJhMSAxIDAgMCAxLTEtMXptLTE5IDBhMSAxIDAgMCAwIDAgMmgyYTEgMSAwIDAgMCAwLTJoLTJ6bTYgNWExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDAgMmgtMmExIDEgMCAwIDEtMS0xem0tMjUgMTVjMC0uNDcuMDEtLjk0LjAzLTEuNGE1IDUgMCAwIDEtMS43LTggMy45OSAzLjk5IDAgMCAxIDEuODgtNS4xOCA1IDUgMCAwIDEgMy40LTYuMjIgMyAzIDAgMCAxIDEuNDYtMS4wNSA1IDUgMCAwIDEgNy43Ni0zLjI3QTMwLjg2IDMwLjg2IDAgMCAxLTE0IDE4NGM2Ljc5IDAgMTMuMDYgMi4xOCAxOC4xNyA1Ljg4YTUgNSAwIDAgMSA3Ljc2IDMuMjcgMyAzIDAgMCAxIDEuNDcgMS4wNSA1IDUgMCAwIDEgMy40IDYuMjIgNCA0IDAgMCAxIDEuODcgNS4xOCA0Ljk4IDQuOTggMCAwIDEtMS43IDhjLjAyLjQ2LjAzLjkzLjAzIDEuNHYxaC02MnYtMXptLjgzLTcuMTdhMzAuOSAzMC45IDAgMCAwLS42MiAzLjU3IDMgMyAwIDAgMS0uNjEtNC4yYy4zNy4yOC43OC40OSAxLjIzLjYzem0xLjQ5LTQuNjFjLS4zNi44Ny0uNjggMS43Ni0uOTYgMi42OGEyIDIgMCAwIDEtLjIxLTMuNzFjLjMzLjQuNzMuNzUgMS4xNyAxLjAzem0yLjMyLTQuNTRjLS41NC44Ni0xLjAzIDEuNzYtMS40OSAyLjY4YTMgMyAwIDAgMS0uMDctNC42NyAzIDMgMCAwIDAgMS41NiAxLjk5em0xLjE0LTEuN2MuMzUtLjUuNzItLjk4IDEuMS0xLjQ2YTEgMSAwIDEgMC0xLjEgMS40NXptNS4zNC01Ljc3Yy0xLjAzLjg2LTIgMS43OS0yLjkgMi43N2EzIDMgMCAwIDAtMS4xMS0uNzcgMyAzIDAgMCAxIDQtMnptNDIuNjYgMi43N2MtLjktLjk4LTEuODctMS45LTIuOS0yLjc3YTMgMyAwIDAgMSA0LjAxIDIgMyAzIDAgMCAwLTEuMS43N3ptMS4zNCAxLjU0Yy4zOC40OC43NS45NiAxLjEgMS40NWExIDEgMCAxIDAtMS4xLTEuNDV6bTMuNzMgNS44NGMtLjQ2LS45Mi0uOTUtMS44Mi0xLjUtMi42OGEzIDMgMCAwIDAgMS41Ny0xLjk5IDMgMyAwIDAgMS0uMDcgNC42N3ptMS44IDQuNTNjLS4yOS0uOS0uNi0xLjgtLjk3LTIuNjcuNDQtLjI4Ljg0LS42MyAxLjE3LTEuMDNhMiAyIDAgMCAxLS4yIDMuN3ptMS4xNCA1LjUxYy0uMTQtMS4yMS0uMzUtMi40LS42Mi0zLjU3LjQ1LS4xNC44Ni0uMzUgMS4yMy0uNjNhMi45OSAyLjk5IDAgMCAxLS42IDQuMnpNMTUgMjE0YTI5IDI5IDAgMCAwLTU3Ljk3IDBoNTcuOTZ6Jy8lM0UlM0MvZyUzRSUzQy9nJTNFJTNDL3N2ZyUzRVxcXCIpO1xcbn1cXG4jY2hhdC1hcHAgLmNoYXQtY29udGVudC1hcmVhIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuI2NoYXQtYXBwIC5jaGF0LWNvbnRlbnQtYXJlYSAuY2hhdC1jb250ZW50LXNjcm9sbC1hcmVhIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1hcmdpbjogYXV0bztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxMzRweCk7XFxufVxcbiNjaGF0LWFwcCAuY2hhdC1jb250ZW50LWFyZWEgLmNoYXQtY29udGVudC1zY3JvbGwtYXJlYSAuY2hhdF9faW5wdXQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xcbiNjaGF0LWFwcCAudXNlci1wcm9maWxlLWNvbnRhaW5lciAudnMtc2lkZWJhciB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbn1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxuI2NoYXQtYXBwIC51c2VyLXByb2ZpbGUtY29udGFpbmVyIC52cy1zaWRlYmFyIHtcXG4gICAgd2lkdGg6IDMzLjMzMzMzJTtcXG59XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n    File Name: featherIcon.scss\\n    Description: Feather icon component's scss. Imported in FeatherIcon.vue file\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n.feather-icon {\\n  display: inline-flex;\\n  align-items: center;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GZWF0aGVySWNvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvRmVhdGhlckljb24udnVlPzVhYzUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKShmYWxzZSk7XG4vLyBpbXBvcnRzXG5cblxuLy8gbW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogZmVhdGhlckljb24uc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogRmVhdGhlciBpY29uIGNvbXBvbmVudCdzIHNjc3MuIEltcG9ydGVkIGluIEZlYXRoZXJJY29uLnZ1ZSBmaWxlXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuLmZlYXRoZXItaWNvbiB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n    File Name: vxCard.scss\\n    Description: Styles for vx-card component. Imported in VxCard.vue file\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n.vx-card {\\n  width: 100%;\\n  background: #fff;\\n  border-radius: .5rem;\\n  display: block;\\n  box-shadow: 0px 4px 25px 0px rgba(0, 0, 0, 0.1);\\n  position: relative;\\n  transition: all .3s ease-in-out;\\n}\\n.vx-card.no-shadow {\\n  box-shadow: none;\\n}\\n.vx-card.card-border {\\n  border: 1px solid #e4e4e4;\\n}\\n.vx-card .vx-card__header {\\n  display: flex;\\n  align-items: center;\\n  flex-wrap: wrap;\\n  justify-content: space-between;\\n  padding: 1.5rem 1.5rem 0;\\n}\\n.vx-card .vx-card__header .vx-card__title h4 + h6 {\\n  margin-top: .3rem;\\n}\\n.vx-card .vx-card__header .vx-card__title h6 {\\n  font-weight: 400;\\n}\\n.vx-card .vx-card__header .vx-card__actions .vx-card__action-buttons {\\n  display: flex;\\n}\\n.vx-card .vx-card__header .vx-card__actions .vx-card__action-buttons .feather-icon {\\n  margin-left: .5rem;\\n}\\n.vx-card .vx-card__header .vx-card__actions svg {\\n  transition: all .25s ease-out;\\n  height: 1rem;\\n  width: 1rem;\\n  cursor: pointer;\\n}\\n.vx-card .vx-card__header .vx-card__actions .rotate180 > svg {\\n  transform: rotate(180deg) !important;\\n}\\n.vx-card img.card-img-top {\\n  border-top-left-radius: .5rem;\\n  border-top-right-radius: .5rem;\\n}\\n.vx-card .vx-card__collapsible-content {\\n  transition: all .3s ease-in-out;\\n}\\n.vx-card .vx-card__collapsible-content.vs-con-loading__container {\\n  overflow: unset;\\n}\\n.vx-card .vx-card__collapsible-content.collapsed {\\n  opacity: 0;\\n  transform: scale(0.99);\\n}\\n.vx-card .vx-card__collapsible-content .card-overlay {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  padding: 1.25rem;\\n}\\n.vx-card .vx-card__collapsible-content .card-overlay > * {\\n  position: relative;\\n  z-index: 1;\\n}\\n.vx-card .vx-card__collapsible-content .card-overlay::after {\\n  position: absolute;\\n  content: \\\"\\\";\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  margin: auto;\\n  height: 100%;\\n  width: 100%;\\n  background: rgba(0, 0, 0, 0.6);\\n  z-index: 0;\\n}\\n.vx-card .vx-card__collapsible-content .vx-card__body {\\n  padding: 1.5rem;\\n}\\n.vx-card .vx-card__collapsible-content .vx-card__body img + .vx-card__title > h4 {\\n  margin-top: 1.5rem;\\n}\\n.vx-card .vx-card__collapsible-content img {\\n  display: block;\\n}\\n.vx-card .vx-card__code-container {\\n  overflow: hidden;\\n  transition: transform 0.35s, opacity .15s, max-height .30s ease-out;\\n}\\n.vx-card .vx-card__code-container.collapsed {\\n  opacity: 0;\\n  transform: translateY(100%);\\n}\\n.vx-card .vx-card__code-container .code-content {\\n  margin: 1.5rem;\\n}\\n.vx-card .vx-card__code-container .code-content pre[class^=\\\"language-\\\"] {\\n  max-height: 350px;\\n  border-radius: .5rem;\\n  margin-bottom: 0;\\n}\\n.vx-card .vx-card__footer {\\n  padding: 0 1.5rem 1.5rem;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9WeENhcmQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1Z4Q2FyZC52dWU/MTJiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiB2eENhcmQuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogU3R5bGVzIGZvciB2eC1jYXJkIGNvbXBvbmVudC4gSW1wb3J0ZWQgaW4gVnhDYXJkLnZ1ZSBmaWxlXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuLnZ4LWNhcmQge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgYm9yZGVyLXJhZGl1czogLjVyZW07XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGJveC1zaGFkb3c6IDBweCA0cHggMjVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdHJhbnNpdGlvbjogYWxsIC4zcyBlYXNlLWluLW91dDtcXG59XFxuLnZ4LWNhcmQubm8tc2hhZG93IHtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxufVxcbi52eC1jYXJkLmNhcmQtYm9yZGVyIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlNGU0ZTQ7XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19oZWFkZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICBwYWRkaW5nOiAxLjVyZW0gMS41cmVtIDA7XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19oZWFkZXIgLnZ4LWNhcmRfX3RpdGxlIGg0ICsgaDYge1xcbiAgbWFyZ2luLXRvcDogLjNyZW07XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19oZWFkZXIgLnZ4LWNhcmRfX3RpdGxlIGg2IHtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19oZWFkZXIgLnZ4LWNhcmRfX2FjdGlvbnMgLnZ4LWNhcmRfX2FjdGlvbi1idXR0b25zIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19oZWFkZXIgLnZ4LWNhcmRfX2FjdGlvbnMgLnZ4LWNhcmRfX2FjdGlvbi1idXR0b25zIC5mZWF0aGVyLWljb24ge1xcbiAgbWFyZ2luLWxlZnQ6IC41cmVtO1xcbn1cXG4udngtY2FyZCAudngtY2FyZF9faGVhZGVyIC52eC1jYXJkX19hY3Rpb25zIHN2ZyB7XFxuICB0cmFuc2l0aW9uOiBhbGwgLjI1cyBlYXNlLW91dDtcXG4gIGhlaWdodDogMXJlbTtcXG4gIHdpZHRoOiAxcmVtO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4udngtY2FyZCAudngtY2FyZF9faGVhZGVyIC52eC1jYXJkX19hY3Rpb25zIC5yb3RhdGUxODAgPiBzdmcge1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKSAhaW1wb3J0YW50O1xcbn1cXG4udngtY2FyZCBpbWcuY2FyZC1pbWctdG9wIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC41cmVtO1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC41cmVtO1xcbn1cXG4udngtY2FyZCAudngtY2FyZF9fY29sbGFwc2libGUtY29udGVudCB7XFxuICB0cmFuc2l0aW9uOiBhbGwgLjNzIGVhc2UtaW4tb3V0O1xcbn1cXG4udngtY2FyZCAudngtY2FyZF9fY29sbGFwc2libGUtY29udGVudC52cy1jb24tbG9hZGluZ19fY29udGFpbmVyIHtcXG4gIG92ZXJmbG93OiB1bnNldDtcXG59XFxuLnZ4LWNhcmQgLnZ4LWNhcmRfX2NvbGxhcHNpYmxlLWNvbnRlbnQuY29sbGFwc2VkIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTkpO1xcbn1cXG4udngtY2FyZCAudngtY2FyZF9fY29sbGFwc2libGUtY29udGVudCAuY2FyZC1vdmVybGF5IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHBhZGRpbmc6IDEuMjVyZW07XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19jb2xsYXBzaWJsZS1jb250ZW50IC5jYXJkLW92ZXJsYXkgPiAqIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19jb2xsYXBzaWJsZS1jb250ZW50IC5jYXJkLW92ZXJsYXk6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XFxuICB6LWluZGV4OiAwO1xcbn1cXG4udngtY2FyZCAudngtY2FyZF9fY29sbGFwc2libGUtY29udGVudCAudngtY2FyZF9fYm9keSB7XFxuICBwYWRkaW5nOiAxLjVyZW07XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19jb2xsYXBzaWJsZS1jb250ZW50IC52eC1jYXJkX19ib2R5IGltZyArIC52eC1jYXJkX190aXRsZSA+IGg0IHtcXG4gIG1hcmdpbi10b3A6IDEuNXJlbTtcXG59XFxuLnZ4LWNhcmQgLnZ4LWNhcmRfX2NvbGxhcHNpYmxlLWNvbnRlbnQgaW1nIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4udngtY2FyZCAudngtY2FyZF9fY29kZS1jb250YWluZXIge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjM1cywgb3BhY2l0eSAuMTVzLCBtYXgtaGVpZ2h0IC4zMHMgZWFzZS1vdXQ7XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19jb2RlLWNvbnRhaW5lci5jb2xsYXBzZWQge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG59XFxuLnZ4LWNhcmQgLnZ4LWNhcmRfX2NvZGUtY29udGFpbmVyIC5jb2RlLWNvbnRlbnQge1xcbiAgbWFyZ2luOiAxLjVyZW07XFxufVxcbi52eC1jYXJkIC52eC1jYXJkX19jb2RlLWNvbnRhaW5lciAuY29kZS1jb250ZW50IHByZVtjbGFzc149XFxcImxhbmd1YWdlLVxcXCJdIHtcXG4gIG1heC1oZWlnaHQ6IDM1MHB4O1xcbiAgYm9yZGVyLXJhZGl1czogLjVyZW07XFxuICBtYXJnaW4tYm90dG9tOiAwO1xcbn1cXG4udngtY2FyZCAudngtY2FyZF9fZm9vdGVyIHtcXG4gIHBhZGRpbmc6IDAgMS41cmVtIDEuNXJlbTtcXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n  File Name: vxSidebar.scss\\n  Description: Styles for vx-sidebar component. Imported in VxSidebar.vue file\\n  ----------------------------------------------------------------------------------------\\n  Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n  Author: Pixinvent\\n  Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _variables.scss\\n    Description: partial- SCSS varibales\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*========================================================\\n        SPACING\\n=========================================================*/\\n\\n/*========================================================\\n        COLORS\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        DARK THEME\\n=========================================================*/\\n.main-menu-sidebar {\\n  white-space: nowrap;\\n}\\n.main-menu-sidebar .vs-sidebar--background {\\n  z-index: 51000;\\n}\\n.main-menu-sidebar .vs-sidebar {\\n  z-index: 51000;\\n  position: fixed;\\n}\\n.main-menu-sidebar .vs-sidebar .vs-sidebar--items {\\n  padding: 0;\\n}\\n.main-menu-sidebar .vs-sidebar.vs-sidebar-reduce {\\n  max-width: 80px;\\n}\\n.main-menu-sidebar .vs-sidebar.vs-sidebar-reduce:hover {\\n  box-shadow: 0 15px 30px 0 rgba(0, 0, 0, 0.11), 0 5px 15px 0 rgba(0, 0, 0, 0.08) !important;\\n}\\n.main-menu-sidebar .vs-sidebar.vs-sidebar-reduce:hover:not(.vs-sidebar-reduceNotRebound):not(.vs-sidebar-reduceNotHoverExpand) .vs-sidebar-group .group-header i {\\n  display: block;\\n}\\n.main-menu-sidebar .vs-sidebar.vs-sidebar-reduce .vs-sidebar-group .group-header i {\\n  display: none;\\n}\\n.main-menu-sidebar .header-sidebar {\\n  padding: 20px 19px 16px 23px;\\n  width: 100%;\\n}\\n.main-menu-sidebar .header-sidebar .logo img {\\n  padding: 4px 0;\\n}\\n.main-menu-sidebar .header-sidebar .logo .logo-text {\\n  font-size: 16px;\\n  font-weight: 600;\\n  color: #00A593;\\n  -webkit-animation: 0.3s cubic-bezier(0.25, 0.8, 0.25, 1) 0s normal forwards 1 fadein;\\n          animation: 0.3s cubic-bezier(0.25, 0.8, 0.25, 1) 0s normal forwards 1 fadein;\\n}\\n.main-menu-sidebar .header-sidebar .feather-icon svg {\\n  color: #00A593;\\n}\\n.main-menu-sidebar .shadow-bottom {\\n  position: absolute;\\n  z-index: 2;\\n  height: 60px;\\n  width: 100%;\\n  pointer-events: none;\\n  margin-top: -1.3rem;\\n  -webkit-filter: blur(5px);\\n          filter: blur(5px);\\n  background: linear-gradient(white 41%, rgba(255, 255, 255, 0.11) 95%, rgba(255, 255, 255, 0) 100%);\\n}\\n.main-menu-sidebar .scroll-area--main-sidebar {\\n  position: relative;\\n  margin: auto;\\n  width: 100%;\\n  height: calc(100vh - 69px);\\n}\\n.main-menu-sidebar .scroll-area--main-sidebar > .vs-sidebar-group {\\n  padding: 0 15px;\\n}\\n.main-menu-sidebar .scroll-area--main-sidebar > .vs-sidebar--item {\\n  padding: 0 15px;\\n}\\n.main-menu-sidebar .navigation-header {\\n  font-size: 0.9rem;\\n  display: block;\\n  margin-top: 2rem;\\n  margin-bottom: 0.8rem;\\n  margin-left: 2.2rem;\\n  font-weight: 500;\\n  text-transform: uppercase;\\n  color: #999;\\n}\\n.main-menu-sidebar .feather-icon {\\n  color: #565656;\\n  margin-right: 14px;\\n}\\n.main-menu-sidebar .feather-icon .feather {\\n  width: 20px;\\n  height: 20px;\\n}\\n.main-menu-sidebar .con-vs-chip {\\n  min-height: 24px;\\n  box-shadow: 0px 0px 7px 3px rgba(0, 0, 0, 0.1);\\n}\\n.main-menu-sidebar .con-vs-chip .vs-chip--text {\\n  color: #fff;\\n  font-size: .8rem;\\n}\\n.main-menu-sidebar .vs-sidebar--item {\\n  transition: none;\\n  overflow: visible !important;\\n}\\n.main-menu-sidebar .vs-sidebar--item:hover a {\\n  color: inherit;\\n}\\n.main-menu-sidebar .vs-sidebar--item:hover a > * {\\n  transform: translateX(5px);\\n}\\n.main-menu-sidebar .vs-sidebar--item.vs-sidebar-item-active {\\n  border-right: none !important;\\n  font-weight: 400;\\n  z-index: 1;\\n  position: relative;\\n}\\n.main-menu-sidebar .vs-sidebar--item a {\\n  font-size: 1rem;\\n  transition: none;\\n  border-radius: 4px;\\n  opacity: unset;\\n  color: #626262;\\n  padding: 10px 15px;\\n}\\n.main-menu-sidebar .vs-sidebar--item a > * {\\n  transition: transform 0.25s ease;\\n}\\n.main-menu-sidebar .vs-sidebar--item a span {\\n  font-size: 15px;\\n}\\n.main-menu-sidebar .vs-sidebar--item.disabled-item a span {\\n  color: #e2e2e2;\\n}\\n.main-menu-sidebar .vs-sidebar--item .router-link-active {\\n  background: linear-gradient(118deg, rgba(var(--vs-primary), 1), rgba(var(--vs-primary), 0.7));\\n  font-weight: 400;\\n  box-shadow: 0px 0px 10px 1px rgba(var(--vs-primary), 0.7);\\n}\\n.main-menu-sidebar .vs-sidebar--item .router-link-active .feather-icon {\\n  color: #fff;\\n}\\n.main-menu-sidebar .vs-sidebar--item .router-link-active span {\\n  color: #fff;\\n}\\n#sidebar-demo .vs-sidebar {\\n  z-index: 52000;\\n}\\n#sidebar-demo .vs-sidebar-staticPosition {\\n  z-index: 10000;\\n}\\n#sidebar-demo #parentx-demo-7 .parentx:not(.show-custom-sidebar) .vs-sidebar {\\n  display: none;\\n  z-index: 1 !important;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT80ZjYyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgRmlsZSBOYW1lOiB2eFNpZGViYXIuc2Nzc1xcbiAgRGVzY3JpcHRpb246IFN0eWxlcyBmb3Igdngtc2lkZWJhciBjb21wb25lbnQuIEltcG9ydGVkIGluIFZ4U2lkZWJhci52dWUgZmlsZVxcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gIEF1dGhvcjogUGl4aW52ZW50XFxuICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IF92YXJpYWJsZXMuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gU0NTUyB2YXJpYmFsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBTUEFDSU5HXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBDT0xPUlNcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIERBUksgVEhFTUVcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcbi5tYWluLW1lbnUtc2lkZWJhciB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnZzLXNpZGViYXItLWJhY2tncm91bmQge1xcbiAgei1pbmRleDogNTEwMDA7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhciB7XFxuICB6LWluZGV4OiA1MTAwMDtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG59XFxuLm1haW4tbWVudS1zaWRlYmFyIC52cy1zaWRlYmFyIC52cy1zaWRlYmFyLS1pdGVtcyB7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2Uge1xcbiAgbWF4LXdpZHRoOiA4MHB4O1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2U6aG92ZXIge1xcbiAgYm94LXNoYWRvdzogMCAxNXB4IDMwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTEpLCAwIDVweCAxNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjA4KSAhaW1wb3J0YW50O1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2U6aG92ZXI6bm90KC52cy1zaWRlYmFyLXJlZHVjZU5vdFJlYm91bmQpOm5vdCgudnMtc2lkZWJhci1yZWR1Y2VOb3RIb3ZlckV4cGFuZCkgLnZzLXNpZGViYXItZ3JvdXAgLmdyb3VwLWhlYWRlciBpIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnZzLXNpZGViYXIudnMtc2lkZWJhci1yZWR1Y2UgLnZzLXNpZGViYXItZ3JvdXAgLmdyb3VwLWhlYWRlciBpIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAuaGVhZGVyLXNpZGViYXIge1xcbiAgcGFkZGluZzogMjBweCAxOXB4IDE2cHggMjNweDtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLmhlYWRlci1zaWRlYmFyIC5sb2dvIGltZyB7XFxuICBwYWRkaW5nOiA0cHggMDtcXG59XFxuLm1haW4tbWVudS1zaWRlYmFyIC5oZWFkZXItc2lkZWJhciAubG9nbyAubG9nby10ZXh0IHtcXG4gIGZvbnQtc2l6ZTogMTZweDtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBjb2xvcjogIzAwQTU5MztcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpIDBzIG5vcm1hbCBmb3J3YXJkcyAxIGZhZGVpbjtcXG4gICAgICAgICAgYW5pbWF0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpIDBzIG5vcm1hbCBmb3J3YXJkcyAxIGZhZGVpbjtcXG59XFxuLm1haW4tbWVudS1zaWRlYmFyIC5oZWFkZXItc2lkZWJhciAuZmVhdGhlci1pY29uIHN2ZyB7XFxuICBjb2xvcjogIzAwQTU5MztcXG59XFxuLm1haW4tbWVudS1zaWRlYmFyIC5zaGFkb3ctYm90dG9tIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDI7XFxuICBoZWlnaHQ6IDYwcHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgbWFyZ2luLXRvcDogLTEuM3JlbTtcXG4gIC13ZWJraXQtZmlsdGVyOiBibHVyKDVweCk7XFxuICAgICAgICAgIGZpbHRlcjogYmx1cig1cHgpO1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHdoaXRlIDQxJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjExKSA5NSUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMTAwJSk7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBtYXJnaW46IGF1dG87XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDY5cHgpO1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnNjcm9sbC1hcmVhLS1tYWluLXNpZGViYXIgPiAudnMtc2lkZWJhci1ncm91cCB7XFxuICBwYWRkaW5nOiAwIDE1cHg7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAuc2Nyb2xsLWFyZWEtLW1haW4tc2lkZWJhciA+IC52cy1zaWRlYmFyLS1pdGVtIHtcXG4gIHBhZGRpbmc6IDAgMTVweDtcXG59XFxuLm1haW4tbWVudS1zaWRlYmFyIC5uYXZpZ2F0aW9uLWhlYWRlciB7XFxuICBmb250LXNpemU6IDAuOXJlbTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbWFyZ2luLXRvcDogMnJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuOHJlbTtcXG4gIG1hcmdpbi1sZWZ0OiAyLjJyZW07XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG4gIGNvbG9yOiAjOTk5O1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLmZlYXRoZXItaWNvbiB7XFxuICBjb2xvcjogIzU2NTY1NjtcXG4gIG1hcmdpbi1yaWdodDogMTRweDtcXG59XFxuLm1haW4tbWVudS1zaWRlYmFyIC5mZWF0aGVyLWljb24gLmZlYXRoZXIge1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAuY29uLXZzLWNoaXAge1xcbiAgbWluLWhlaWdodDogMjRweDtcXG4gIGJveC1zaGFkb3c6IDBweCAwcHggN3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAuY29uLXZzLWNoaXAgLnZzLWNoaXAtLXRleHQge1xcbiAgY29sb3I6ICNmZmY7XFxuICBmb250LXNpemU6IC44cmVtO1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnZzLXNpZGViYXItLWl0ZW0ge1xcbiAgdHJhbnNpdGlvbjogbm9uZTtcXG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhci0taXRlbTpob3ZlciBhIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnZzLXNpZGViYXItLWl0ZW06aG92ZXIgYSA+ICoge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhci0taXRlbS52cy1zaWRlYmFyLWl0ZW0tYWN0aXZlIHtcXG4gIGJvcmRlci1yaWdodDogbm9uZSAhaW1wb3J0YW50O1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIHotaW5kZXg6IDE7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhci0taXRlbSBhIHtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIHRyYW5zaXRpb246IG5vbmU7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBvcGFjaXR5OiB1bnNldDtcXG4gIGNvbG9yOiAjNjI2MjYyO1xcbiAgcGFkZGluZzogMTBweCAxNXB4O1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnZzLXNpZGViYXItLWl0ZW0gYSA+ICoge1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGVhc2U7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhci0taXRlbSBhIHNwYW4ge1xcbiAgZm9udC1zaXplOiAxNXB4O1xcbn1cXG4ubWFpbi1tZW51LXNpZGViYXIgLnZzLXNpZGViYXItLWl0ZW0uZGlzYWJsZWQtaXRlbSBhIHNwYW4ge1xcbiAgY29sb3I6ICNlMmUyZTI7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhci0taXRlbSAucm91dGVyLWxpbmstYWN0aXZlIHtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMThkZWcsIHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpLCByZ2JhKHZhcigtLXZzLXByaW1hcnkpLCAwLjcpKTtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBib3gtc2hhZG93OiAwcHggMHB4IDEwcHggMXB4IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDAuNyk7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhci0taXRlbSAucm91dGVyLWxpbmstYWN0aXZlIC5mZWF0aGVyLWljb24ge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcbi5tYWluLW1lbnUtc2lkZWJhciAudnMtc2lkZWJhci0taXRlbSAucm91dGVyLWxpbmstYWN0aXZlIHNwYW4ge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcbiNzaWRlYmFyLWRlbW8gLnZzLXNpZGViYXIge1xcbiAgei1pbmRleDogNTIwMDA7XFxufVxcbiNzaWRlYmFyLWRlbW8gLnZzLXNpZGViYXItc3RhdGljUG9zaXRpb24ge1xcbiAgei1pbmRleDogMTAwMDA7XFxufVxcbiNzaWRlYmFyLWRlbW8gI3BhcmVudHgtZGVtby03IC5wYXJlbnR4Om5vdCguc2hvdy1jdXN0b20tc2lkZWJhcikgLnZzLXNpZGViYXIge1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIHotaW5kZXg6IDEgIWltcG9ydGFudDtcXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n  File Name: vxSidebarGroup.scss\\n  Description: Styles for vx-sidebar-group component. Imported in VxSidebarGroup.vue file\\n  ----------------------------------------------------------------------------------------\\n  Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n  Author: Pixinvent\\n  Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n.vs-sidebar-group {\\n  overflow: hidden;\\n}\\n.vs-sidebar-group .group-header {\\n  transition: all .5s ease;\\n  font-size: 15px;\\n  padding: 10px 15px;\\n  cursor: pointer;\\n}\\n.vs-sidebar-group .group-header .feather-grp-header-arrow {\\n  position: absolute !important;\\n  right: 8px;\\n  top: 12px;\\n  transition: all .2s ease-out;\\n  transform: rotate(0deg);\\n  display: inline-block;\\n}\\n.vs-sidebar-group .group-header .feather-grp-header-arrow.rotate90 {\\n  transform: rotate(90deg);\\n}\\n.vs-sidebar-group .group-header > * {\\n  transition: all .25s ease;\\n}\\n.vs-sidebar-group .group-header:hover > * {\\n  transform: translateX(5px);\\n}\\n.vs-sidebar-group .group-header .con-vs-chip {\\n  margin-bottom: 0;\\n}\\n.vs-sidebar-group .vs-icon {\\n  font-size: 1.5rem;\\n}\\n.vs-sidebar-group:hover > .group-header {\\n  transform: unset;\\n}\\n.vs-sidebar-group .vs-sidebar-group .group-header {\\n  padding-left: 20px;\\n}\\n.vs-sidebar-group.vs-sidebar-group-open > .group-header {\\n  cursor: pointer;\\n  background: #f6f6f6;\\n  border-radius: 6px;\\n  margin-bottom: 7px;\\n}\\n.vs-sidebar-group.vs-sidebar-group-open > .vs-sidebar-group-items {\\n  padding-left: 0;\\n}\\n.vs-sidebar-group.vs-sidebar-group-open > .vs-sidebar-group-items .vs-sidebar--item span {\\n  padding-left: 2rem;\\n  padding: 0;\\n}\\n.vs-sidebar-group.vs-sidebar-group-open > .vs-sidebar-group-items .vs-sidebar--item:last-child {\\n  border-bottom: 0px;\\n}\\n.vs-sidebar-group.vs-sidebar-group-open .vs-sidebar-group {\\n  overflow: visible;\\n}\\n.vs-sidebar-group.vs-sidebar-group-active > .group-header {\\n  background: #f6f6f6;\\n  border-radius: 6px;\\n}\\n.vs-sidebar-group .vs-sidebar-group-items {\\n  opacity: 0;\\n}\\n.vs-sidebar-group .vs-sidebar-group-items .vs-sidebar--item a {\\n  padding: 10px 15px 10px 20px;\\n}\\n.vs-sidebar-group .vs-sidebar-group-items .vs-sidebar--item a .feather-icon {\\n  margin-right: 20px;\\n}\\n.vs-sidebar-group .vs-sidebar-group-items .vs-sidebar--item:last-child a {\\n  margin-bottom: 0;\\n}\\n.vs-sidebar-group .vs-sidebar-group-items li:last-child {\\n  padding-bottom: 7px;\\n}\\n.vs-sidebar-group .vs-sidebar-group-items .vs-sidebar-group span .feather-icon {\\n  margin-right: 20px;\\n}\\n.vs-sidebar-group .vs-sidebar-group-items .vs-sidebar-group .feather-icon {\\n  margin-right: 0px;\\n}\\n.vs-sidebar-group.disabled-item span {\\n  color: #e2e2e2;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXJHcm91cC52dWU/Y2FmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gIEZpbGUgTmFtZTogdnhTaWRlYmFyR3JvdXAuc2Nzc1xcbiAgRGVzY3JpcHRpb246IFN0eWxlcyBmb3Igdngtc2lkZWJhci1ncm91cCBjb21wb25lbnQuIEltcG9ydGVkIGluIFZ4U2lkZWJhckdyb3VwLnZ1ZSBmaWxlXFxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG4udnMtc2lkZWJhci1ncm91cCB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4udnMtc2lkZWJhci1ncm91cCAuZ3JvdXAtaGVhZGVyIHtcXG4gIHRyYW5zaXRpb246IGFsbCAuNXMgZWFzZTtcXG4gIGZvbnQtc2l6ZTogMTVweDtcXG4gIHBhZGRpbmc6IDEwcHggMTVweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLnZzLXNpZGViYXItZ3JvdXAgLmdyb3VwLWhlYWRlciAuZmVhdGhlci1ncnAtaGVhZGVyLWFycm93IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xcbiAgcmlnaHQ6IDhweDtcXG4gIHRvcDogMTJweDtcXG4gIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZS1vdXQ7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuLnZzLXNpZGViYXItZ3JvdXAgLmdyb3VwLWhlYWRlciAuZmVhdGhlci1ncnAtaGVhZGVyLWFycm93LnJvdGF0ZTkwIHtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG59XFxuLnZzLXNpZGViYXItZ3JvdXAgLmdyb3VwLWhlYWRlciA+ICoge1xcbiAgdHJhbnNpdGlvbjogYWxsIC4yNXMgZWFzZTtcXG59XFxuLnZzLXNpZGViYXItZ3JvdXAgLmdyb3VwLWhlYWRlcjpob3ZlciA+ICoge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwIC5ncm91cC1oZWFkZXIgLmNvbi12cy1jaGlwIHtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwIC52cy1pY29uIHtcXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xcbn1cXG4udnMtc2lkZWJhci1ncm91cDpob3ZlciA+IC5ncm91cC1oZWFkZXIge1xcbiAgdHJhbnNmb3JtOiB1bnNldDtcXG59XFxuLnZzLXNpZGViYXItZ3JvdXAgLnZzLXNpZGViYXItZ3JvdXAgLmdyb3VwLWhlYWRlciB7XFxuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwLnZzLXNpZGViYXItZ3JvdXAtb3BlbiA+IC5ncm91cC1oZWFkZXIge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgYmFja2dyb3VuZDogI2Y2ZjZmNjtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gIG1hcmdpbi1ib3R0b206IDdweDtcXG59XFxuLnZzLXNpZGViYXItZ3JvdXAudnMtc2lkZWJhci1ncm91cC1vcGVuID4gLnZzLXNpZGViYXItZ3JvdXAtaXRlbXMge1xcbiAgcGFkZGluZy1sZWZ0OiAwO1xcbn1cXG4udnMtc2lkZWJhci1ncm91cC52cy1zaWRlYmFyLWdyb3VwLW9wZW4gPiAudnMtc2lkZWJhci1ncm91cC1pdGVtcyAudnMtc2lkZWJhci0taXRlbSBzcGFuIHtcXG4gIHBhZGRpbmctbGVmdDogMnJlbTtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwLnZzLXNpZGViYXItZ3JvdXAtb3BlbiA+IC52cy1zaWRlYmFyLWdyb3VwLWl0ZW1zIC52cy1zaWRlYmFyLS1pdGVtOmxhc3QtY2hpbGQge1xcbiAgYm9yZGVyLWJvdHRvbTogMHB4O1xcbn1cXG4udnMtc2lkZWJhci1ncm91cC52cy1zaWRlYmFyLWdyb3VwLW9wZW4gLnZzLXNpZGViYXItZ3JvdXAge1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwLnZzLXNpZGViYXItZ3JvdXAtYWN0aXZlID4gLmdyb3VwLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kOiAjZjZmNmY2O1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbn1cXG4udnMtc2lkZWJhci1ncm91cCAudnMtc2lkZWJhci1ncm91cC1pdGVtcyB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4udnMtc2lkZWJhci1ncm91cCAudnMtc2lkZWJhci1ncm91cC1pdGVtcyAudnMtc2lkZWJhci0taXRlbSBhIHtcXG4gIHBhZGRpbmc6IDEwcHggMTVweCAxMHB4IDIwcHg7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwIC52cy1zaWRlYmFyLWdyb3VwLWl0ZW1zIC52cy1zaWRlYmFyLS1pdGVtIGEgLmZlYXRoZXItaWNvbiB7XFxuICBtYXJnaW4tcmlnaHQ6IDIwcHg7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwIC52cy1zaWRlYmFyLWdyb3VwLWl0ZW1zIC52cy1zaWRlYmFyLS1pdGVtOmxhc3QtY2hpbGQgYSB7XFxuICBtYXJnaW4tYm90dG9tOiAwO1xcbn1cXG4udnMtc2lkZWJhci1ncm91cCAudnMtc2lkZWJhci1ncm91cC1pdGVtcyBsaTpsYXN0LWNoaWxkIHtcXG4gIHBhZGRpbmctYm90dG9tOiA3cHg7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwIC52cy1zaWRlYmFyLWdyb3VwLWl0ZW1zIC52cy1zaWRlYmFyLWdyb3VwIHNwYW4gLmZlYXRoZXItaWNvbiB7XFxuICBtYXJnaW4tcmlnaHQ6IDIwcHg7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwIC52cy1zaWRlYmFyLWdyb3VwLWl0ZW1zIC52cy1zaWRlYmFyLWdyb3VwIC5mZWF0aGVyLWljb24ge1xcbiAgbWFyZ2luLXJpZ2h0OiAwcHg7XFxufVxcbi52cy1zaWRlYmFyLWdyb3VwLmRpc2FibGVkLWl0ZW0gc3BhbiB7XFxuICBjb2xvcjogI2UyZTJlMjtcXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n    File Name: profile.scss\\n    Description: Profile page styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n#profile-page .profile-img-container {\\n  display: flex;\\n  align-items: center;\\n  position: absolute;\\n  bottom: -3.6rem;\\n  left: 10%;\\n  width: 80%;\\n  justify-content: space-between;\\n}\\n#profile-page .user-profile-img {\\n  border: .3rem solid #fff;\\n  box-shadow: 0px 0px 10px 3px rgba(0, 0, 0, 0.3);\\n}\\n#profile-page .user-latest-image {\\n  transition: all .2s ease-in-out;\\n}\\n#profile-page .user-latest-image:hover {\\n  transform: scale(1.2);\\n}\\n#profile-page .profile-header-nav {\\n  background-color: #fff;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb250YWN0cy9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbnRhY3RzL0NvbnRhY3RSZXF1ZXN0cy52dWU/YTlmOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgRmlsZSBOYW1lOiBwcm9maWxlLnNjc3NcXG4gICAgRGVzY3JpcHRpb246IFByb2ZpbGUgcGFnZSBzdHlsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG4jcHJvZmlsZS1wYWdlIC5wcm9maWxlLWltZy1jb250YWluZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IC0zLjZyZW07XFxuICBsZWZ0OiAxMCU7XFxuICB3aWR0aDogODAlO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4jcHJvZmlsZS1wYWdlIC51c2VyLXByb2ZpbGUtaW1nIHtcXG4gIGJvcmRlcjogLjNyZW0gc29saWQgI2ZmZjtcXG4gIGJveC1zaGFkb3c6IDBweCAwcHggMTBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xcbn1cXG4jcHJvZmlsZS1wYWdlIC51c2VyLWxhdGVzdC1pbWFnZSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2UtaW4tb3V0O1xcbn1cXG4jcHJvZmlsZS1wYWdlIC51c2VyLWxhdGVzdC1pbWFnZTpob3ZlciB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XFxufVxcbiNwcm9maWxlLXBhZ2UgLnByb2ZpbGUtaGVhZGVyLW5hdiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n    File Name: profile.scss\\n    Description: Profile page styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n#profile-page .profile-img-container {\\n  display: flex;\\n  align-items: center;\\n  position: absolute;\\n  bottom: -3.6rem;\\n  left: 10%;\\n  width: 80%;\\n  justify-content: space-between;\\n}\\n#profile-page .user-profile-img {\\n  border: .3rem solid #fff;\\n  box-shadow: 0px 0px 10px 3px rgba(0, 0, 0, 0.3);\\n}\\n#profile-page .user-latest-image {\\n  transition: all .2s ease-in-out;\\n}\\n#profile-page .user-latest-image:hover {\\n  transform: scale(1.2);\\n}\\n#profile-page .profile-header-nav {\\n  background-color: #fff;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT9jMmMzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IHByb2ZpbGUuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogUHJvZmlsZSBwYWdlIHN0eWxlc1xcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcbiNwcm9maWxlLXBhZ2UgLnByb2ZpbGUtaW1nLWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogLTMuNnJlbTtcXG4gIGxlZnQ6IDEwJTtcXG4gIHdpZHRoOiA4MCU7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbiNwcm9maWxlLXBhZ2UgLnVzZXItcHJvZmlsZS1pbWcge1xcbiAgYm9yZGVyOiAuM3JlbSBzb2xpZCAjZmZmO1xcbiAgYm94LXNoYWRvdzogMHB4IDBweCAxMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7XFxufVxcbiNwcm9maWxlLXBhZ2UgLnVzZXItbGF0ZXN0LWltYWdlIHtcXG4gIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZS1pbi1vdXQ7XFxufVxcbiNwcm9maWxlLXBhZ2UgLnVzZXItbGF0ZXN0LWltYWdlOmhvdmVyIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcXG59XFxuI3Byb2ZpbGUtcGFnZSAucHJvZmlsZS1oZWFkZXItbmF2IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n    File Name: simple-calnedar.scss\\n    Description: Simple Calendar app's styles. This is imported in SimpleCalendar.vue file\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*=========================================================================================\\n    File Name: _variables.scss\\n    Description: partial- SCSS varibales\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n\\n/*========================================================\\n        SPACING\\n=========================================================*/\\n\\n/*========================================================\\n        COLORS\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        TYPOGRAPHY\\n=========================================================*/\\n\\n/*========================================================\\n        DARK THEME\\n=========================================================*/\\n#simple-calendar-app .theme-default.cv-wrapper {\\n  padding: 20px;\\n}\\n#simple-calendar-app .theme-default .cv-header-days {\\n  border-bottom: 1px solid #ddd;\\n}\\n#simple-calendar-app .theme-default .cv-header,\\n#simple-calendar-app .theme-default .cv-header-day {\\n  background-color: transparent;\\n  font-weight: bold;\\n}\\n#simple-calendar-app .theme-default .cv-day {\\n  cursor: pointer;\\n}\\n#simple-calendar-app .theme-default .cv-day.draghover {\\n  box-shadow: inset 0 0 0.2em 0.2em rgba(var(--vs-primary), 1);\\n}\\n#simple-calendar-app .theme-default .cv-day:not(.outsideOfMonth) {\\n  background-color: transparent !important;\\n}\\n#simple-calendar-app .theme-default .cv-day.outsideOfMonth {\\n  background-color: rgba(241, 241, 241, 0.4);\\n}\\n#simple-calendar-app .theme-default .cv-day .cv-day-number {\\n  padding: 1rem;\\n}\\n@media screen and (max-width: 400px) {\\n#simple-calendar-app .theme-default .cv-day .cv-day-number {\\n    padding: 0;\\n    margin: 5px;\\n}\\n}\\n#simple-calendar-app .theme-default .cv-day.today .cv-day-number {\\n  background-color: rgba(var(--vs-primary), 1);\\n  border-radius: 50%;\\n  display: inline-table;\\n  padding: 0.4rem;\\n  margin: 0.4rem;\\n  color: #fff;\\n  text-align: center;\\n  font-weight: 600;\\n  width: 24px;\\n}\\n@media screen and (max-width: 400px) {\\n#simple-calendar-app .theme-default .cv-day.today .cv-day-number {\\n    margin: 5px;\\n    padding: 0.3rem;\\n}\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week {\\n  min-height: 20%;\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week .cv-event {\\n  color: #fff;\\n  border: none;\\n  padding-left: .5rem;\\n  padding-right: .5rem;\\n  font-weight: 500;\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week .cv-event.event-primary {\\n  background: rgba(var(--vs-primary), 1) !important;\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week .cv-event.event-secondary {\\n  background: #777777 !important;\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week .cv-event.event-warning {\\n  background: rgba(var(--vs-warning), 1) !important;\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week .cv-event.event-success {\\n  background: rgba(var(--vs-success), 1) !important;\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week .cv-event.event-danger {\\n  background: rgba(var(--vs-danger), 1) !important;\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week .cv-event.toBeContinued:after, #simple-calendar-app .theme-default .cv-weeks .cv-week .cv-event.continued:before {\\n  color: #fff !important;\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week .cv-event:hover {\\n  cursor: pointer;\\n}\\n#simple-calendar-app .theme-default .cv-weeks .cv-week:first-of-type .cv-day {\\n  border-top: none;\\n}\\n.theme-dark .calendar__label-container .con-vs-chip {\\n  color: #fff !important;\\n}\\n.theme-dark #simple-calendar-app .theme-default .cv-day,\\n.theme-dark #simple-calendar-app .theme-default .cv-event,\\n.theme-dark #simple-calendar-app .theme-default .cv-header-day,\\n.theme-dark #simple-calendar-app .theme-default .cv-header-days,\\n.theme-dark #simple-calendar-app .theme-default .cv-week,\\n.theme-dark #simple-calendar-app .theme-default .cv-weeks {\\n  border-color: #414561;\\n}\\n.theme-dark #simple-calendar-app .theme-default .cv-header button {\\n  color: #c2c6dc;\\n}\\n#dashboard-analytics .greet-user {\\n  position: relative;\\n}\\n#dashboard-analytics .greet-user .decore-left {\\n  position: absolute;\\n  left: 0;\\n  top: 0;\\n}\\n#dashboard-analytics .greet-user .decore-right {\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n@media (max-width: 576px) {\\n#dashboard-analytics .decore-left, #dashboard-analytics .decore-right {\\n    width: 140px;\\n}\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT8yZTJkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IHNpbXBsZS1jYWxuZWRhci5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBTaW1wbGUgQ2FsZW5kYXIgYXBwJ3Mgc3R5bGVzLiBUaGlzIGlzIGltcG9ydGVkIGluIFNpbXBsZUNhbGVuZGFyLnZ1ZSBmaWxlXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuXFxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IF92YXJpYWJsZXMuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogcGFydGlhbC0gU0NTUyB2YXJpYmFsZXNcXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgICBJdGVtIE5hbWU6IFZ1ZXNheCBBZG1pbiAtIFZ1ZUpTIERhc2hib2FyZCBBZG1pbiBUZW1wbGF0ZVxcbiAgICAgIEF1dGhvcjogUGl4aW52ZW50XFxuICAgIEF1dGhvciBVUkw6IGh0dHA6Ly93d3cudGhlbWVmb3Jlc3QubmV0L3VzZXIvcGl4aW52ZW50XFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBTUEFDSU5HXFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cXG5cXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgICAgICBDT0xPUlNcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIFRZUE9HUkFQSFlcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcblxcbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gICAgICAgIERBUksgVEhFTUVcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcbiNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0LmN2LXdyYXBwZXIge1xcbiAgcGFkZGluZzogMjBweDtcXG59XFxuI3NpbXBsZS1jYWxlbmRhci1hcHAgLnRoZW1lLWRlZmF1bHQgLmN2LWhlYWRlci1kYXlzIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xcbn1cXG4jc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3YtaGVhZGVyLFxcbiNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi1oZWFkZXItZGF5IHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxufVxcbiNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi1kYXkge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4jc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3YtZGF5LmRyYWdob3ZlciB7XFxuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMC4yZW0gMC4yZW0gcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSk7XFxufVxcbiNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi1kYXk6bm90KC5vdXRzaWRlT2ZNb250aCkge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG59XFxuI3NpbXBsZS1jYWxlbmRhci1hcHAgLnRoZW1lLWRlZmF1bHQgLmN2LWRheS5vdXRzaWRlT2ZNb250aCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0MSwgMjQxLCAyNDEsIDAuNCk7XFxufVxcbiNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi1kYXkgLmN2LWRheS1udW1iZXIge1xcbiAgcGFkZGluZzogMXJlbTtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDAwcHgpIHtcXG4jc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3YtZGF5IC5jdi1kYXktbnVtYmVyIHtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiA1cHg7XFxufVxcbn1cXG4jc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3YtZGF5LnRvZGF5IC5jdi1kYXktbnVtYmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdnMtcHJpbWFyeSksIDEpO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgZGlzcGxheTogaW5saW5lLXRhYmxlO1xcbiAgcGFkZGluZzogMC40cmVtO1xcbiAgbWFyZ2luOiAwLjRyZW07XFxuICBjb2xvcjogI2ZmZjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICB3aWR0aDogMjRweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDAwcHgpIHtcXG4jc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3YtZGF5LnRvZGF5IC5jdi1kYXktbnVtYmVyIHtcXG4gICAgbWFyZ2luOiA1cHg7XFxuICAgIHBhZGRpbmc6IDAuM3JlbTtcXG59XFxufVxcbiNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi13ZWVrcyAuY3Ytd2VlayB7XFxuICBtaW4taGVpZ2h0OiAyMCU7XFxufVxcbiNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi13ZWVrcyAuY3Ytd2VlayAuY3YtZXZlbnQge1xcbiAgY29sb3I6ICNmZmY7XFxuICBib3JkZXI6IG5vbmU7XFxuICBwYWRkaW5nLWxlZnQ6IC41cmVtO1xcbiAgcGFkZGluZy1yaWdodDogLjVyZW07XFxuICBmb250LXdlaWdodDogNTAwO1xcbn1cXG4jc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3Ytd2Vla3MgLmN2LXdlZWsgLmN2LWV2ZW50LmV2ZW50LXByaW1hcnkge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy1wcmltYXJ5KSwgMSkgIWltcG9ydGFudDtcXG59XFxuI3NpbXBsZS1jYWxlbmRhci1hcHAgLnRoZW1lLWRlZmF1bHQgLmN2LXdlZWtzIC5jdi13ZWVrIC5jdi1ldmVudC5ldmVudC1zZWNvbmRhcnkge1xcbiAgYmFja2dyb3VuZDogIzc3Nzc3NyAhaW1wb3J0YW50O1xcbn1cXG4jc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3Ytd2Vla3MgLmN2LXdlZWsgLmN2LWV2ZW50LmV2ZW50LXdhcm5pbmcge1xcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12cy13YXJuaW5nKSwgMSkgIWltcG9ydGFudDtcXG59XFxuI3NpbXBsZS1jYWxlbmRhci1hcHAgLnRoZW1lLWRlZmF1bHQgLmN2LXdlZWtzIC5jdi13ZWVrIC5jdi1ldmVudC5ldmVudC1zdWNjZXNzIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtc3VjY2VzcyksIDEpICFpbXBvcnRhbnQ7XFxufVxcbiNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi13ZWVrcyAuY3Ytd2VlayAuY3YtZXZlbnQuZXZlbnQtZGFuZ2VyIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtZGFuZ2VyKSwgMSkgIWltcG9ydGFudDtcXG59XFxuI3NpbXBsZS1jYWxlbmRhci1hcHAgLnRoZW1lLWRlZmF1bHQgLmN2LXdlZWtzIC5jdi13ZWVrIC5jdi1ldmVudC50b0JlQ29udGludWVkOmFmdGVyLCAjc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3Ytd2Vla3MgLmN2LXdlZWsgLmN2LWV2ZW50LmNvbnRpbnVlZDpiZWZvcmUge1xcbiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG59XFxuI3NpbXBsZS1jYWxlbmRhci1hcHAgLnRoZW1lLWRlZmF1bHQgLmN2LXdlZWtzIC5jdi13ZWVrIC5jdi1ldmVudDpob3ZlciB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbiNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi13ZWVrcyAuY3Ytd2VlazpmaXJzdC1vZi10eXBlIC5jdi1kYXkge1xcbiAgYm9yZGVyLXRvcDogbm9uZTtcXG59XFxuLnRoZW1lLWRhcmsgLmNhbGVuZGFyX19sYWJlbC1jb250YWluZXIgLmNvbi12cy1jaGlwIHtcXG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcbi50aGVtZS1kYXJrICNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi1kYXksXFxuLnRoZW1lLWRhcmsgI3NpbXBsZS1jYWxlbmRhci1hcHAgLnRoZW1lLWRlZmF1bHQgLmN2LWV2ZW50LFxcbi50aGVtZS1kYXJrICNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi1oZWFkZXItZGF5LFxcbi50aGVtZS1kYXJrICNzaW1wbGUtY2FsZW5kYXItYXBwIC50aGVtZS1kZWZhdWx0IC5jdi1oZWFkZXItZGF5cyxcXG4udGhlbWUtZGFyayAjc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3Ytd2VlayxcXG4udGhlbWUtZGFyayAjc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3Ytd2Vla3Mge1xcbiAgYm9yZGVyLWNvbG9yOiAjNDE0NTYxO1xcbn1cXG4udGhlbWUtZGFyayAjc2ltcGxlLWNhbGVuZGFyLWFwcCAudGhlbWUtZGVmYXVsdCAuY3YtaGVhZGVyIGJ1dHRvbiB7XFxuICBjb2xvcjogI2MyYzZkYztcXG59XFxuI2Rhc2hib2FyZC1hbmFseXRpY3MgLmdyZWV0LXVzZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4jZGFzaGJvYXJkLWFuYWx5dGljcyAuZ3JlZXQtdXNlciAuZGVjb3JlLWxlZnQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuI2Rhc2hib2FyZC1hbmFseXRpY3MgLmdyZWV0LXVzZXIgLmRlY29yZS1yaWdodCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMDtcXG4gIHRvcDogMDtcXG59XFxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XFxuI2Rhc2hib2FyZC1hbmFseXRpY3MgLmRlY29yZS1sZWZ0LCAjZGFzaGJvYXJkLWFuYWx5dGljcyAuZGVjb3JlLXJpZ2h0IHtcXG4gICAgd2lkdGg6IDE0MHB4O1xcbn1cXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n    File Name: profile.scss\\n    Description: Profile page styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n#profile-page .profile-img-container {\\n  display: flex;\\n  align-items: center;\\n  position: absolute;\\n  bottom: -3.6rem;\\n  left: 10%;\\n  width: 80%;\\n  justify-content: space-between;\\n}\\n#profile-page .user-profile-img {\\n  border: .3rem solid #fff;\\n  box-shadow: 0px 0px 10px 3px rgba(0, 0, 0, 0.3);\\n}\\n#profile-page .user-latest-image {\\n  transition: all .2s ease-in-out;\\n}\\n#profile-page .user-latest-image:hover {\\n  transform: scale(1.2);\\n}\\n#profile-page .profile-header-nav {\\n  background-color: #fff;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy91c2Vycy9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvQ2hhbmdlUGFzc3dvcmQudnVlP2NjMGUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKShmYWxzZSk7XG4vLyBpbXBvcnRzXG5cblxuLy8gbW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICAgIEZpbGUgTmFtZTogcHJvZmlsZS5zY3NzXFxuICAgIERlc2NyaXB0aW9uOiBQcm9maWxlIHBhZ2Ugc3R5bGVzXFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcXG4gICAgICBBdXRob3I6IFBpeGludmVudFxcbiAgICBBdXRob3IgVVJMOiBodHRwOi8vd3d3LnRoZW1lZm9yZXN0Lm5ldC91c2VyL3BpeGludmVudFxcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXFxuI3Byb2ZpbGUtcGFnZSAucHJvZmlsZS1pbWctY29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAtMy42cmVtO1xcbiAgbGVmdDogMTAlO1xcbiAgd2lkdGg6IDgwJTtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG59XFxuI3Byb2ZpbGUtcGFnZSAudXNlci1wcm9maWxlLWltZyB7XFxuICBib3JkZXI6IC4zcmVtIHNvbGlkICNmZmY7XFxuICBib3gtc2hhZG93OiAwcHggMHB4IDEwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG59XFxuI3Byb2ZpbGUtcGFnZSAudXNlci1sYXRlc3QtaW1hZ2Uge1xcbiAgdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlLWluLW91dDtcXG59XFxuI3Byb2ZpbGUtcGFnZSAudXNlci1sYXRlc3QtaW1hZ2U6aG92ZXIge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpO1xcbn1cXG4jcHJvZmlsZS1wYWdlIC5wcm9maWxlLWhlYWRlci1uYXYge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n    File Name: profile.scss\\n    Description: Profile page styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n#profile-page .profile-img-container {\\n  display: flex;\\n  align-items: center;\\n  position: absolute;\\n  bottom: -3.6rem;\\n  left: 10%;\\n  width: 80%;\\n  justify-content: space-between;\\n}\\n#profile-page .user-profile-img {\\n  border: .3rem solid #fff;\\n  box-shadow: 0px 0px 10px 3px rgba(0, 0, 0, 0.3);\\n}\\n#profile-page .user-latest-image {\\n  transition: all .2s ease-in-out;\\n}\\n#profile-page .user-latest-image:hover {\\n  transform: scale(1.2);\\n}\\n#profile-page .profile-header-nav {\\n  background-color: #fff;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT9kNzM2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IHByb2ZpbGUuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogUHJvZmlsZSBwYWdlIHN0eWxlc1xcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcbiNwcm9maWxlLXBhZ2UgLnByb2ZpbGUtaW1nLWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogLTMuNnJlbTtcXG4gIGxlZnQ6IDEwJTtcXG4gIHdpZHRoOiA4MCU7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbiNwcm9maWxlLXBhZ2UgLnVzZXItcHJvZmlsZS1pbWcge1xcbiAgYm9yZGVyOiAuM3JlbSBzb2xpZCAjZmZmO1xcbiAgYm94LXNoYWRvdzogMHB4IDBweCAxMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7XFxufVxcbiNwcm9maWxlLXBhZ2UgLnVzZXItbGF0ZXN0LWltYWdlIHtcXG4gIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZS1pbi1vdXQ7XFxufVxcbiNwcm9maWxlLXBhZ2UgLnVzZXItbGF0ZXN0LWltYWdlOmhvdmVyIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcXG59XFxuI3Byb2ZpbGUtcGFnZSAucHJvZmlsZS1oZWFkZXItbmF2IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \"/*=========================================================================================\\n    File Name: profile.scss\\n    Description: Profile page styles\\n    ----------------------------------------------------------------------------------------\\n    Item Name: Vuesax Admin - VueJS Dashboard Admin Template\\n      Author: Pixinvent\\n    Author URL: http://www.themeforest.net/user/pixinvent\\n==========================================================================================*/\\n#profile-page .profile-img-container {\\n  display: flex;\\n  align-items: center;\\n  position: absolute;\\n  bottom: -3.6rem;\\n  left: 10%;\\n  width: 80%;\\n  justify-content: space-between;\\n}\\n#profile-page .user-profile-img {\\n  border: .3rem solid #fff;\\n  box-shadow: 0px 0px 10px 3px rgba(0, 0, 0, 0.3);\\n}\\n#profile-page .user-latest-image {\\n  transition: all .2s ease-in-out;\\n}\\n#profile-page .user-latest-image:hover {\\n  transform: scale(1.2);\\n}\\n#profile-page .profile-header-nav {\\n  background-color: #fff;\\n}\\n\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT85ZTFhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAgICBGaWxlIE5hbWU6IHByb2ZpbGUuc2Nzc1xcbiAgICBEZXNjcmlwdGlvbjogUHJvZmlsZSBwYWdlIHN0eWxlc1xcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAgIEl0ZW0gTmFtZTogVnVlc2F4IEFkbWluIC0gVnVlSlMgRGFzaGJvYXJkIEFkbWluIFRlbXBsYXRlXFxuICAgICAgQXV0aG9yOiBQaXhpbnZlbnRcXG4gICAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xcbiNwcm9maWxlLXBhZ2UgLnByb2ZpbGUtaW1nLWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogLTMuNnJlbTtcXG4gIGxlZnQ6IDEwJTtcXG4gIHdpZHRoOiA4MCU7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbiNwcm9maWxlLXBhZ2UgLnVzZXItcHJvZmlsZS1pbWcge1xcbiAgYm9yZGVyOiAuM3JlbSBzb2xpZCAjZmZmO1xcbiAgYm94LXNoYWRvdzogMHB4IDBweCAxMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7XFxufVxcbiNwcm9maWxlLXBhZ2UgLnVzZXItbGF0ZXN0LWltYWdlIHtcXG4gIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZS1pbi1vdXQ7XFxufVxcbiNwcm9maWxlLXBhZ2UgLnVzZXItbGF0ZXN0LWltYWdlOmhvdmVyIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcXG59XFxuI3Byb2ZpbGUtcGFnZSAucHJvZmlsZS1oZWFkZXItbmF2IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&":
/*!*********************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css& ***!
  \*********************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(/*! ../../css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \".back-to-top-fade-enter-active, \\n.back-to-top-fade-leave-active {\\n  transition: opacity .7s;\\n}\\n.back-to-top-fade-enter, \\n.back-to-top-fade-leave-to {\\n  opacity: 0;\\n}\\n.vue-back-to-top {\\n  cursor:pointer;\\n  position: fixed;\\n  z-index: 1000;\\n}\\n.vue-back-to-top .default {\\n  background-color: #f5c85c;\\n  border-radius: 3px;\\n  color: #ffffff;\\n  height: 30px;\\n  line-height: 30px;\\n  text-align: center;\\n  width: 160px;\\n}\\n.vue-back-to-top .default span{\\n  color:#ffffff;\\n}\\n.vue-back-to-top--is-footer {\\n  bottom: 50% !important;\\n  position: absolute;\\n  transform: translateY(50%);\\n}\", \"\"]);\n\n// exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWUtYmFja3RvdG9wL3NyYy9zdHlsZXMuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3MmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1iYWNrdG90b3Avc3JjL3N0eWxlcy5jc3M/MzRiYyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLmJhY2stdG8tdG9wLWZhZGUtZW50ZXItYWN0aXZlLCBcXG4uYmFjay10by10b3AtZmFkZS1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuN3M7XFxufVxcbi5iYWNrLXRvLXRvcC1mYWRlLWVudGVyLCBcXG4uYmFjay10by10b3AtZmFkZS1sZWF2ZS10byB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4udnVlLWJhY2stdG8tdG9wIHtcXG4gIGN1cnNvcjpwb2ludGVyO1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgei1pbmRleDogMTAwMDtcXG59XFxuLnZ1ZS1iYWNrLXRvLXRvcCAuZGVmYXVsdCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVjODVjO1xcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgY29sb3I6ICNmZmZmZmY7XFxuICBoZWlnaHQ6IDMwcHg7XFxuICBsaW5lLWhlaWdodDogMzBweDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdpZHRoOiAxNjBweDtcXG59XFxuLnZ1ZS1iYWNrLXRvLXRvcCAuZGVmYXVsdCBzcGFue1xcbiAgY29sb3I6I2ZmZmZmZjtcXG59XFxuLnZ1ZS1iYWNrLXRvLXRvcC0taXMtZm9vdGVyIHtcXG4gIGJvdHRvbTogNTAlICFpbXBvcnRhbnQ7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNTAlKTtcXG59XCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&\n");

/***/ }),

/***/ "./node_modules/css-loader/lib/css-base.js":
/*!*************************************************!*\
  !*** ./node_modules/css-loader/lib/css-base.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanM/MjM1MCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odXNlU291cmNlTWFwKSB7XG5cdHZhciBsaXN0ID0gW107XG5cblx0Ly8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXHRsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG5cdFx0XHR2YXIgY29udGVudCA9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKTtcblx0XHRcdGlmKGl0ZW1bMl0pIHtcblx0XHRcdFx0cmV0dXJuIFwiQG1lZGlhIFwiICsgaXRlbVsyXSArIFwie1wiICsgY29udGVudCArIFwifVwiO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdFx0XHR9XG5cdFx0fSkuam9pbihcIlwiKTtcblx0fTtcblxuXHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuXHRsaXN0LmkgPSBmdW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XG5cdFx0aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGlkID0gdGhpc1tpXVswXTtcblx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcblx0XHRcdFx0YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuXHRcdH1cblx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XG5cdFx0XHQvLyBza2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXG5cdFx0XHQvLyB0aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJpbmF0aW9uc1xuXHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cblx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxsIG5ldmVyIG9jY3VyIChIZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXG5cdFx0XHRpZih0eXBlb2YgaXRlbVswXSAhPT0gXCJudW1iZXJcIiB8fCAhYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XG5cdFx0XHRcdFx0aXRlbVsyXSA9IG1lZGlhUXVlcnk7XG5cdFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1ZXJ5KSB7XG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwiKSBhbmQgKFwiICsgbWVkaWFRdWVyeSArIFwiKVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxpc3QucHVzaChpdGVtKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdHJldHVybiBsaXN0O1xufTtcblxuZnVuY3Rpb24gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApIHtcblx0dmFyIGNvbnRlbnQgPSBpdGVtWzFdIHx8ICcnO1xuXHR2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG5cdGlmICghY3NzTWFwcGluZykge1xuXHRcdHJldHVybiBjb250ZW50O1xuXHR9XG5cblx0aWYgKHVzZVNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdHZhciBzb3VyY2VNYXBwaW5nID0gdG9Db21tZW50KGNzc01hcHBpbmcpO1xuXHRcdHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG5cdFx0XHRyZXR1cm4gJy8qIyBzb3VyY2VVUkw9JyArIGNzc01hcHBpbmcuc291cmNlUm9vdCArIHNvdXJjZSArICcgKi8nXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKCdcXG4nKTtcblx0fVxuXG5cdHJldHVybiBbY29udGVudF0uam9pbignXFxuJyk7XG59XG5cbi8vIEFkYXB0ZWQgZnJvbSBjb252ZXJ0LXNvdXJjZS1tYXAgKE1JVClcbmZ1bmN0aW9uIHRvQ29tbWVudChzb3VyY2VNYXApIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG5cdHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpO1xuXHR2YXIgZGF0YSA9ICdzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwnICsgYmFzZTY0O1xuXG5cdHJldHVybiAnLyojICcgKyBkYXRhICsgJyAqLyc7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/lib/css-base.js\n");

/***/ }),

/***/ "./node_modules/css-loader/lib/url/escape.js":
/*!***************************************************!*\
  !*** ./node_modules/css-loader/lib/url/escape.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function escape(url) {\n    if (typeof url !== 'string') {\n        return url\n    }\n    // If url is already wrapped in quotes, remove them\n    if (/^['\"].*['\"]$/.test(url)) {\n        url = url.slice(1, -1);\n    }\n    // Should url be wrapped?\n    // See https://drafts.csswg.org/css-values-3/#urls\n    if (/[\"'() \\t\\n]/.test(url)) {\n        return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"'\n    }\n\n    return url\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvdXJsL2VzY2FwZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi91cmwvZXNjYXBlLmpzP2IwNDEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlc2NhcGUodXJsKSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB1cmxcbiAgICB9XG4gICAgLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG4gICAgaWYgKC9eWydcIl0uKlsnXCJdJC8udGVzdCh1cmwpKSB7XG4gICAgICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gICAgfVxuICAgIC8vIFNob3VsZCB1cmwgYmUgd3JhcHBlZD9cbiAgICAvLyBTZWUgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMtMy8jdXJsc1xuICAgIGlmICgvW1wiJygpIFxcdFxcbl0vLnRlc3QodXJsKSkge1xuICAgICAgICByZXR1cm4gJ1wiJyArIHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csICdcXFxcbicpICsgJ1wiJ1xuICAgIH1cblxuICAgIHJldHVybiB1cmxcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/lib/url/escape.js\n");

/***/ }),

/***/ "./node_modules/deepmerge/dist/es.js":
/*!*******************************************!*\
  !*** ./node_modules/deepmerge/dist/es.js ***!
  \*******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (deepmerge_1);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZGVlcG1lcmdlL2Rpc3QvZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGVlcG1lcmdlL2Rpc3QvZXMuanM/NThkYyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNNZXJnZWFibGVPYmplY3QgPSBmdW5jdGlvbiBpc01lcmdlYWJsZU9iamVjdCh2YWx1ZSkge1xuXHRyZXR1cm4gaXNOb25OdWxsT2JqZWN0KHZhbHVlKVxuXHRcdCYmICFpc1NwZWNpYWwodmFsdWUpXG59O1xuXG5mdW5jdGlvbiBpc05vbk51bGxPYmplY3QodmFsdWUpIHtcblx0cmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xufVxuXG5mdW5jdGlvbiBpc1NwZWNpYWwodmFsdWUpIHtcblx0dmFyIHN0cmluZ1ZhbHVlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKTtcblxuXHRyZXR1cm4gc3RyaW5nVmFsdWUgPT09ICdbb2JqZWN0IFJlZ0V4cF0nXG5cdFx0fHwgc3RyaW5nVmFsdWUgPT09ICdbb2JqZWN0IERhdGVdJ1xuXHRcdHx8IGlzUmVhY3RFbGVtZW50KHZhbHVlKVxufVxuXG4vLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvYjVhYzk2M2ZiNzkxZDEyOThlN2YzOTYyMzYzODNiYzk1NWY5MTZjMS9zcmMvaXNvbW9ycGhpYy9jbGFzc2ljL2VsZW1lbnQvUmVhY3RFbGVtZW50LmpzI0wyMS1MMjVcbnZhciBjYW5Vc2VTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5mb3I7XG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gY2FuVXNlU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIDogMHhlYWM3O1xuXG5mdW5jdGlvbiBpc1JlYWN0RWxlbWVudCh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxufVxuXG5mdW5jdGlvbiBlbXB0eVRhcmdldCh2YWwpIHtcblx0cmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKSA/IFtdIDoge31cbn1cblxuZnVuY3Rpb24gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQodmFsdWUsIG9wdGlvbnMpIHtcblx0cmV0dXJuIChvcHRpb25zLmNsb25lICE9PSBmYWxzZSAmJiBvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0KHZhbHVlKSlcblx0XHQ/IGRlZXBtZXJnZShlbXB0eVRhcmdldCh2YWx1ZSksIHZhbHVlLCBvcHRpb25zKVxuXHRcdDogdmFsdWVcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEFycmF5TWVyZ2UodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpIHtcblx0cmV0dXJuIHRhcmdldC5jb25jYXQoc291cmNlKS5tYXAoZnVuY3Rpb24oZWxlbWVudCkge1xuXHRcdHJldHVybiBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZChlbGVtZW50LCBvcHRpb25zKVxuXHR9KVxufVxuXG5mdW5jdGlvbiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHR2YXIgZGVzdGluYXRpb24gPSB7fTtcblx0aWYgKG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QodGFyZ2V0KSkge1xuXHRcdE9iamVjdC5rZXlzKHRhcmdldCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcblx0XHRcdGRlc3RpbmF0aW9uW2tleV0gPSBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCh0YXJnZXRba2V5XSwgb3B0aW9ucyk7XG5cdFx0fSk7XG5cdH1cblx0T2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuXHRcdGlmICghb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdChzb3VyY2Vba2V5XSkgfHwgIXRhcmdldFtrZXldKSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoc291cmNlW2tleV0sIG9wdGlvbnMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gZGVlcG1lcmdlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgb3B0aW9ucyk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGRlc3RpbmF0aW9uXG59XG5cbmZ1bmN0aW9uIGRlZXBtZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblx0b3B0aW9ucy5hcnJheU1lcmdlID0gb3B0aW9ucy5hcnJheU1lcmdlIHx8IGRlZmF1bHRBcnJheU1lcmdlO1xuXHRvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0ID0gb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCB8fCBpc01lcmdlYWJsZU9iamVjdDtcblxuXHR2YXIgc291cmNlSXNBcnJheSA9IEFycmF5LmlzQXJyYXkoc291cmNlKTtcblx0dmFyIHRhcmdldElzQXJyYXkgPSBBcnJheS5pc0FycmF5KHRhcmdldCk7XG5cdHZhciBzb3VyY2VBbmRUYXJnZXRUeXBlc01hdGNoID0gc291cmNlSXNBcnJheSA9PT0gdGFyZ2V0SXNBcnJheTtcblxuXHRpZiAoIXNvdXJjZUFuZFRhcmdldFR5cGVzTWF0Y2gpIHtcblx0XHRyZXR1cm4gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoc291cmNlLCBvcHRpb25zKVxuXHR9IGVsc2UgaWYgKHNvdXJjZUlzQXJyYXkpIHtcblx0XHRyZXR1cm4gb3B0aW9ucy5hcnJheU1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucylcblx0fVxufVxuXG5kZWVwbWVyZ2UuYWxsID0gZnVuY3Rpb24gZGVlcG1lcmdlQWxsKGFycmF5LCBvcHRpb25zKSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShhcnJheSkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheScpXG5cdH1cblxuXHRyZXR1cm4gYXJyYXkucmVkdWNlKGZ1bmN0aW9uKHByZXYsIG5leHQpIHtcblx0XHRyZXR1cm4gZGVlcG1lcmdlKHByZXYsIG5leHQsIG9wdGlvbnMpXG5cdH0sIHt9KVxufTtcblxudmFyIGRlZXBtZXJnZV8xID0gZGVlcG1lcmdlO1xuXG5leHBvcnQgZGVmYXVsdCBkZWVwbWVyZ2VfMTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/deepmerge/dist/es.js\n");

/***/ }),

/***/ "./node_modules/hammerjs/hammer.js":
/*!*****************************************!*\
  !*** ./node_modules/hammerjs/hammer.js ***!
  \*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n  'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n    return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n    if (Array.isArray(arg)) {\n        each(arg, context[fn], context);\n        return true;\n    }\n    return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n    var i;\n\n    if (!obj) {\n        return;\n    }\n\n    if (obj.forEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length !== undefined) {\n        i = 0;\n        while (i < obj.length) {\n            iterator.call(context, obj[i], i, obj);\n            i++;\n        }\n    } else {\n        for (i in obj) {\n            obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n        }\n    }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n    var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n    return function() {\n        var e = new Error('get-stack-trace');\n        var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n            .replace(/^\\s+at\\s+/gm, '')\n            .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n        var log = window.console && (window.console.warn || window.console.log);\n        if (log) {\n            log.call(window.console, deprecationMessage, stack);\n        }\n        return method.apply(this, arguments);\n    };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n    assign = function assign(target) {\n        if (target === undefined || target === null) {\n            throw new TypeError('Cannot convert undefined or null to object');\n        }\n\n        var output = Object(target);\n        for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== undefined && source !== null) {\n                for (var nextKey in source) {\n                    if (source.hasOwnProperty(nextKey)) {\n                        output[nextKey] = source[nextKey];\n                    }\n                }\n            }\n        }\n        return output;\n    };\n} else {\n    assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n    var keys = Object.keys(src);\n    var i = 0;\n    while (i < keys.length) {\n        if (!merge || (merge && dest[keys[i]] === undefined)) {\n            dest[keys[i]] = src[keys[i]];\n        }\n        i++;\n    }\n    return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n    return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n    var baseP = base.prototype,\n        childP;\n\n    childP = child.prototype = Object.create(baseP);\n    childP.constructor = child;\n    childP._super = baseP;\n\n    if (properties) {\n        assign(childP, properties);\n    }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n    return function boundFn() {\n        return fn.apply(context, arguments);\n    };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n    if (typeof val == TYPE_FUNCTION) {\n        return val.apply(args ? args[0] || undefined : undefined, args);\n    }\n    return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n    return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.addEventListener(type, handler, false);\n    });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.removeEventListener(type, handler, false);\n    });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n    while (node) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n    return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n    return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n    if (src.indexOf && !findByKey) {\n        return src.indexOf(find);\n    } else {\n        var i = 0;\n        while (i < src.length) {\n            if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n                return i;\n            }\n            i++;\n        }\n        return -1;\n    }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n    return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n    var results = [];\n    var values = [];\n    var i = 0;\n\n    while (i < src.length) {\n        var val = key ? src[i][key] : src[i];\n        if (inArray(values, val) < 0) {\n            results.push(src[i]);\n        }\n        values[i] = val;\n        i++;\n    }\n\n    if (sort) {\n        if (!key) {\n            results = results.sort();\n        } else {\n            results = results.sort(function sortUniqueArray(a, b) {\n                return a[key] > b[key];\n            });\n        }\n    }\n\n    return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n    var prefix, prop;\n    var camelProp = property[0].toUpperCase() + property.slice(1);\n\n    var i = 0;\n    while (i < VENDOR_PREFIXES.length) {\n        prefix = VENDOR_PREFIXES[i];\n        prop = (prefix) ? prefix + camelProp : property;\n\n        if (prop in obj) {\n            return prop;\n        }\n        i++;\n    }\n    return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n    return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n    var doc = element.ownerDocument || element;\n    return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n    var self = this;\n    this.manager = manager;\n    this.callback = callback;\n    this.element = manager.element;\n    this.target = manager.options.inputTarget;\n\n    // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n    // so when disabled the input events are completely bypassed.\n    this.domHandler = function(ev) {\n        if (boolOrFn(manager.options.enable, [manager])) {\n            self.handler(ev);\n        }\n    };\n\n    this.init();\n\n}\n\nInput.prototype = {\n    /**\n     * should handle the inputEvent data and trigger the callback\n     * @virtual\n     */\n    handler: function() { },\n\n    /**\n     * bind the events\n     */\n    init: function() {\n        this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    },\n\n    /**\n     * unbind the events\n     */\n    destroy: function() {\n        this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n    var Type;\n    var inputClass = manager.options.inputClass;\n\n    if (inputClass) {\n        Type = inputClass;\n    } else if (SUPPORT_POINTER_EVENTS) {\n        Type = PointerEventInput;\n    } else if (SUPPORT_ONLY_TOUCH) {\n        Type = TouchInput;\n    } else if (!SUPPORT_TOUCH) {\n        Type = MouseInput;\n    } else {\n        Type = TouchMouseInput;\n    }\n    return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n    var pointersLen = input.pointers.length;\n    var changedPointersLen = input.changedPointers.length;\n    var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n    var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n    input.isFirst = !!isFirst;\n    input.isFinal = !!isFinal;\n\n    if (isFirst) {\n        manager.session = {};\n    }\n\n    // source event is the normalized value of the domEvents\n    // like 'touchstart, mouseup, pointerdown'\n    input.eventType = eventType;\n\n    // compute scale, rotation etc\n    computeInputData(manager, input);\n\n    // emit secret event\n    manager.emit('hammer.input', input);\n\n    manager.recognize(input);\n    manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n    var session = manager.session;\n    var pointers = input.pointers;\n    var pointersLength = pointers.length;\n\n    // store the first input to calculate the distance and direction\n    if (!session.firstInput) {\n        session.firstInput = simpleCloneInputData(input);\n    }\n\n    // to compute scale and rotation we need to store the multiple touches\n    if (pointersLength > 1 && !session.firstMultiple) {\n        session.firstMultiple = simpleCloneInputData(input);\n    } else if (pointersLength === 1) {\n        session.firstMultiple = false;\n    }\n\n    var firstInput = session.firstInput;\n    var firstMultiple = session.firstMultiple;\n    var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n    var center = input.center = getCenter(pointers);\n    input.timeStamp = now();\n    input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n    input.angle = getAngle(offsetCenter, center);\n    input.distance = getDistance(offsetCenter, center);\n\n    computeDeltaXY(session, input);\n    input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n    var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n    input.overallVelocityX = overallVelocity.x;\n    input.overallVelocityY = overallVelocity.y;\n    input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n    input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n    input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n    input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n        session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n    computeIntervalInputData(session, input);\n\n    // find the correct target\n    var target = manager.element;\n    if (hasParent(input.srcEvent.target, target)) {\n        target = input.srcEvent.target;\n    }\n    input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n    var center = input.center;\n    var offset = session.offsetDelta || {};\n    var prevDelta = session.prevDelta || {};\n    var prevInput = session.prevInput || {};\n\n    if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n        prevDelta = session.prevDelta = {\n            x: prevInput.deltaX || 0,\n            y: prevInput.deltaY || 0\n        };\n\n        offset = session.offsetDelta = {\n            x: center.x,\n            y: center.y\n        };\n    }\n\n    input.deltaX = prevDelta.x + (center.x - offset.x);\n    input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n    var last = session.lastInterval || input,\n        deltaTime = input.timeStamp - last.timeStamp,\n        velocity, velocityX, velocityY, direction;\n\n    if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n        var deltaX = input.deltaX - last.deltaX;\n        var deltaY = input.deltaY - last.deltaY;\n\n        var v = getVelocity(deltaTime, deltaX, deltaY);\n        velocityX = v.x;\n        velocityY = v.y;\n        velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n        direction = getDirection(deltaX, deltaY);\n\n        session.lastInterval = input;\n    } else {\n        // use latest velocity info if it doesn't overtake a minimum period\n        velocity = last.velocity;\n        velocityX = last.velocityX;\n        velocityY = last.velocityY;\n        direction = last.direction;\n    }\n\n    input.velocity = velocity;\n    input.velocityX = velocityX;\n    input.velocityY = velocityY;\n    input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n    // make a simple copy of the pointers because we will get a reference if we don't\n    // we only need clientXY for the calculations\n    var pointers = [];\n    var i = 0;\n    while (i < input.pointers.length) {\n        pointers[i] = {\n            clientX: round(input.pointers[i].clientX),\n            clientY: round(input.pointers[i].clientY)\n        };\n        i++;\n    }\n\n    return {\n        timeStamp: now(),\n        pointers: pointers,\n        center: getCenter(pointers),\n        deltaX: input.deltaX,\n        deltaY: input.deltaY\n    };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n    var pointersLength = pointers.length;\n\n    // no need to loop when only one touch\n    if (pointersLength === 1) {\n        return {\n            x: round(pointers[0].clientX),\n            y: round(pointers[0].clientY)\n        };\n    }\n\n    var x = 0, y = 0, i = 0;\n    while (i < pointersLength) {\n        x += pointers[i].clientX;\n        y += pointers[i].clientY;\n        i++;\n    }\n\n    return {\n        x: round(x / pointersLength),\n        y: round(y / pointersLength)\n    };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n    return {\n        x: x / deltaTime || 0,\n        y: y / deltaTime || 0\n    };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n    if (x === y) {\n        return DIRECTION_NONE;\n    }\n\n    if (abs(x) >= abs(y)) {\n        return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n    return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n\n    return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n    return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n    return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n    return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n    this.evEl = MOUSE_ELEMENT_EVENTS;\n    this.evWin = MOUSE_WINDOW_EVENTS;\n\n    this.pressed = false; // mousedown state\n\n    Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function MEhandler(ev) {\n        var eventType = MOUSE_INPUT_MAP[ev.type];\n\n        // on start we want to have the left mouse button down\n        if (eventType & INPUT_START && ev.button === 0) {\n            this.pressed = true;\n        }\n\n        if (eventType & INPUT_MOVE && ev.which !== 1) {\n            eventType = INPUT_END;\n        }\n\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: INPUT_TYPE_MOUSE,\n            srcEvent: ev\n        });\n    }\n});\n\nvar POINTER_INPUT_MAP = {\n    pointerdown: INPUT_START,\n    pointermove: INPUT_MOVE,\n    pointerup: INPUT_END,\n    pointercancel: INPUT_CANCEL,\n    pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n    2: INPUT_TYPE_TOUCH,\n    3: INPUT_TYPE_PEN,\n    4: INPUT_TYPE_MOUSE,\n    5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n    POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n    POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n    this.evEl = POINTER_ELEMENT_EVENTS;\n    this.evWin = POINTER_WINDOW_EVENTS;\n\n    Input.apply(this, arguments);\n\n    this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function PEhandler(ev) {\n        var store = this.store;\n        var removePointer = false;\n\n        var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n        var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n        var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n        var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n        // get index of the event in the store\n        var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n        // start and mouse must be down\n        if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n            if (storeIndex < 0) {\n                store.push(ev);\n                storeIndex = store.length - 1;\n            }\n        } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n            removePointer = true;\n        }\n\n        // it not found, so the pointer hasn't been down (so it's probably a hover)\n        if (storeIndex < 0) {\n            return;\n        }\n\n        // update the event in the store\n        store[storeIndex] = ev;\n\n        this.callback(this.manager, eventType, {\n            pointers: store,\n            changedPointers: [ev],\n            pointerType: pointerType,\n            srcEvent: ev\n        });\n\n        if (removePointer) {\n            // remove from the store\n            store.splice(storeIndex, 1);\n        }\n    }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n    this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n    this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n    this.started = false;\n\n    Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n    handler: function TEhandler(ev) {\n        var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n        // should we handle the touch events?\n        if (type === INPUT_START) {\n            this.started = true;\n        }\n\n        if (!this.started) {\n            return;\n        }\n\n        var touches = normalizeSingleTouches.call(this, ev, type);\n\n        // when done, reset the started state\n        if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n            this.started = false;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n    var all = toArray(ev.touches);\n    var changed = toArray(ev.changedTouches);\n\n    if (type & (INPUT_END | INPUT_CANCEL)) {\n        all = uniqueArray(all.concat(changed), 'identifier', true);\n    }\n\n    return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n    this.evTarget = TOUCH_TARGET_EVENTS;\n    this.targetIds = {};\n\n    Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n    handler: function MTEhandler(ev) {\n        var type = TOUCH_INPUT_MAP[ev.type];\n        var touches = getTouches.call(this, ev, type);\n        if (!touches) {\n            return;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n    var allTouches = toArray(ev.touches);\n    var targetIds = this.targetIds;\n\n    // when there is only one touch, the process can be simplified\n    if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n        targetIds[allTouches[0].identifier] = true;\n        return [allTouches, allTouches];\n    }\n\n    var i,\n        targetTouches,\n        changedTouches = toArray(ev.changedTouches),\n        changedTargetTouches = [],\n        target = this.target;\n\n    // get target touches from touches\n    targetTouches = allTouches.filter(function(touch) {\n        return hasParent(touch.target, target);\n    });\n\n    // collect touches\n    if (type === INPUT_START) {\n        i = 0;\n        while (i < targetTouches.length) {\n            targetIds[targetTouches[i].identifier] = true;\n            i++;\n        }\n    }\n\n    // filter changed touches to only contain touches that exist in the collected target ids\n    i = 0;\n    while (i < changedTouches.length) {\n        if (targetIds[changedTouches[i].identifier]) {\n            changedTargetTouches.push(changedTouches[i]);\n        }\n\n        // cleanup removed touches\n        if (type & (INPUT_END | INPUT_CANCEL)) {\n            delete targetIds[changedTouches[i].identifier];\n        }\n        i++;\n    }\n\n    if (!changedTargetTouches.length) {\n        return;\n    }\n\n    return [\n        // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n        uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n        changedTargetTouches\n    ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n    Input.apply(this, arguments);\n\n    var handler = bindFn(this.handler, this);\n    this.touch = new TouchInput(this.manager, handler);\n    this.mouse = new MouseInput(this.manager, handler);\n\n    this.primaryTouch = null;\n    this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n    /**\n     * handle mouse and touch events\n     * @param {Hammer} manager\n     * @param {String} inputEvent\n     * @param {Object} inputData\n     */\n    handler: function TMEhandler(manager, inputEvent, inputData) {\n        var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n            isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n        if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n            return;\n        }\n\n        // when we're in a touch event, record touches to  de-dupe synthetic mouse event\n        if (isTouch) {\n            recordTouches.call(this, inputEvent, inputData);\n        } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n            return;\n        }\n\n        this.callback(manager, inputEvent, inputData);\n    },\n\n    /**\n     * remove the event listeners\n     */\n    destroy: function destroy() {\n        this.touch.destroy();\n        this.mouse.destroy();\n    }\n});\n\nfunction recordTouches(eventType, eventData) {\n    if (eventType & INPUT_START) {\n        this.primaryTouch = eventData.changedPointers[0].identifier;\n        setLastTouch.call(this, eventData);\n    } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n        setLastTouch.call(this, eventData);\n    }\n}\n\nfunction setLastTouch(eventData) {\n    var touch = eventData.changedPointers[0];\n\n    if (touch.identifier === this.primaryTouch) {\n        var lastTouch = {x: touch.clientX, y: touch.clientY};\n        this.lastTouches.push(lastTouch);\n        var lts = this.lastTouches;\n        var removeLastTouch = function() {\n            var i = lts.indexOf(lastTouch);\n            if (i > -1) {\n                lts.splice(i, 1);\n            }\n        };\n        setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n    }\n}\n\nfunction isSyntheticEvent(eventData) {\n    var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n    for (var i = 0; i < this.lastTouches.length; i++) {\n        var t = this.lastTouches[i];\n        var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n        if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n    this.manager = manager;\n    this.set(value);\n}\n\nTouchAction.prototype = {\n    /**\n     * set the touchAction value on the element or enable the polyfill\n     * @param {String} value\n     */\n    set: function(value) {\n        // find out the touch-action by the event handlers\n        if (value == TOUCH_ACTION_COMPUTE) {\n            value = this.compute();\n        }\n\n        if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n            this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n        }\n        this.actions = value.toLowerCase().trim();\n    },\n\n    /**\n     * just re-set the touchAction value\n     */\n    update: function() {\n        this.set(this.manager.options.touchAction);\n    },\n\n    /**\n     * compute the value for the touchAction property based on the recognizer's settings\n     * @returns {String} value\n     */\n    compute: function() {\n        var actions = [];\n        each(this.manager.recognizers, function(recognizer) {\n            if (boolOrFn(recognizer.options.enable, [recognizer])) {\n                actions = actions.concat(recognizer.getTouchAction());\n            }\n        });\n        return cleanTouchActions(actions.join(' '));\n    },\n\n    /**\n     * this method is called on each input cycle and provides the preventing of the browser behavior\n     * @param {Object} input\n     */\n    preventDefaults: function(input) {\n        var srcEvent = input.srcEvent;\n        var direction = input.offsetDirection;\n\n        // if the touch action did prevented once this session\n        if (this.manager.session.prevented) {\n            srcEvent.preventDefault();\n            return;\n        }\n\n        var actions = this.actions;\n        var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n        var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n        var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n        if (hasNone) {\n            //do not prevent defaults if this is a tap gesture\n\n            var isTapPointer = input.pointers.length === 1;\n            var isTapMovement = input.distance < 2;\n            var isTapTouchTime = input.deltaTime < 250;\n\n            if (isTapPointer && isTapMovement && isTapTouchTime) {\n                return;\n            }\n        }\n\n        if (hasPanX && hasPanY) {\n            // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n            return;\n        }\n\n        if (hasNone ||\n            (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n            (hasPanX && direction & DIRECTION_VERTICAL)) {\n            return this.preventSrc(srcEvent);\n        }\n    },\n\n    /**\n     * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n     * @param {Object} srcEvent\n     */\n    preventSrc: function(srcEvent) {\n        this.manager.session.prevented = true;\n        srcEvent.preventDefault();\n    }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n    // none\n    if (inStr(actions, TOUCH_ACTION_NONE)) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n    var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n    // if both pan-x and pan-y are set (different recognizers\n    // for different directions, e.g. horizontal pan but vertical swipe?)\n    // we need none (as otherwise with pan-x pan-y combined none of these\n    // recognizers will work, since the browser would handle all panning\n    if (hasPanX && hasPanY) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    // pan-x OR pan-y\n    if (hasPanX || hasPanY) {\n        return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n    }\n\n    // manipulation\n    if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n        return TOUCH_ACTION_MANIPULATION;\n    }\n\n    return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n    if (!NATIVE_TOUCH_ACTION) {\n        return false;\n    }\n    var touchMap = {};\n    var cssSupports = window.CSS && window.CSS.supports;\n    ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n        // If css.supports is not supported but there is native touch-action assume it supports\n        // all values. This is the case for IE 10 and 11.\n        touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n    });\n    return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n *               Possible\n *                  |\n *            +-----+---------------+\n *            |                     |\n *      +-----+-----+               |\n *      |           |               |\n *   Failed      Cancelled          |\n *                          +-------+------+\n *                          |              |\n *                      Recognized       Began\n *                                         |\n *                                      Changed\n *                                         |\n *                                  Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n    this.options = assign({}, this.defaults, options || {});\n\n    this.id = uniqueId();\n\n    this.manager = null;\n\n    // default is enable true\n    this.options.enable = ifUndefined(this.options.enable, true);\n\n    this.state = STATE_POSSIBLE;\n\n    this.simultaneous = {};\n    this.requireFail = [];\n}\n\nRecognizer.prototype = {\n    /**\n     * @virtual\n     * @type {Object}\n     */\n    defaults: {},\n\n    /**\n     * set options\n     * @param {Object} options\n     * @return {Recognizer}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // also update the touchAction, in case something changed about the directions/enabled state\n        this.manager && this.manager.touchAction.update();\n        return this;\n    },\n\n    /**\n     * recognize simultaneous with an other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    recognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n            return this;\n        }\n\n        var simultaneous = this.simultaneous;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (!simultaneous[otherRecognizer.id]) {\n            simultaneous[otherRecognizer.id] = otherRecognizer;\n            otherRecognizer.recognizeWith(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRecognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        delete this.simultaneous[otherRecognizer.id];\n        return this;\n    },\n\n    /**\n     * recognizer can only run when an other is failing\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    requireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n            return this;\n        }\n\n        var requireFail = this.requireFail;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (inArray(requireFail, otherRecognizer) === -1) {\n            requireFail.push(otherRecognizer);\n            otherRecognizer.requireFailure(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the requireFailure link. it does not remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRequireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        var index = inArray(this.requireFail, otherRecognizer);\n        if (index > -1) {\n            this.requireFail.splice(index, 1);\n        }\n        return this;\n    },\n\n    /**\n     * has require failures boolean\n     * @returns {boolean}\n     */\n    hasRequireFailures: function() {\n        return this.requireFail.length > 0;\n    },\n\n    /**\n     * if the recognizer can recognize simultaneous with an other recognizer\n     * @param {Recognizer} otherRecognizer\n     * @returns {Boolean}\n     */\n    canRecognizeWith: function(otherRecognizer) {\n        return !!this.simultaneous[otherRecognizer.id];\n    },\n\n    /**\n     * You should use `tryEmit` instead of `emit` directly to check\n     * that all the needed recognizers has failed before emitting.\n     * @param {Object} input\n     */\n    emit: function(input) {\n        var self = this;\n        var state = this.state;\n\n        function emit(event) {\n            self.manager.emit(event, input);\n        }\n\n        // 'panstart' and 'panmove'\n        if (state < STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n\n        emit(self.options.event); // simple 'eventName' events\n\n        if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n            emit(input.additionalEvent);\n        }\n\n        // panend and pancancel\n        if (state >= STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n    },\n\n    /**\n     * Check that all the require failure recognizers has failed,\n     * if true, it emits a gesture event,\n     * otherwise, setup the state to FAILED.\n     * @param {Object} input\n     */\n    tryEmit: function(input) {\n        if (this.canEmit()) {\n            return this.emit(input);\n        }\n        // it's failing anyway\n        this.state = STATE_FAILED;\n    },\n\n    /**\n     * can we emit?\n     * @returns {boolean}\n     */\n    canEmit: function() {\n        var i = 0;\n        while (i < this.requireFail.length) {\n            if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n                return false;\n            }\n            i++;\n        }\n        return true;\n    },\n\n    /**\n     * update the recognizer\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        // make a new copy of the inputData\n        // so we can change the inputData without messing up the other recognizers\n        var inputDataClone = assign({}, inputData);\n\n        // is is enabled and allow recognizing?\n        if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n            this.reset();\n            this.state = STATE_FAILED;\n            return;\n        }\n\n        // reset when we've reached the end\n        if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n            this.state = STATE_POSSIBLE;\n        }\n\n        this.state = this.process(inputDataClone);\n\n        // the recognizer has recognized a gesture\n        // so trigger an event\n        if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n            this.tryEmit(inputDataClone);\n        }\n    },\n\n    /**\n     * return the state of the recognizer\n     * the actual recognizing happens in this method\n     * @virtual\n     * @param {Object} inputData\n     * @returns {Const} STATE\n     */\n    process: function(inputData) { }, // jshint ignore:line\n\n    /**\n     * return the preferred touch-action\n     * @virtual\n     * @returns {Array}\n     */\n    getTouchAction: function() { },\n\n    /**\n     * called when the gesture isn't allowed to recognize\n     * like when another is being recognized or it is disabled\n     * @virtual\n     */\n    reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n    if (state & STATE_CANCELLED) {\n        return 'cancel';\n    } else if (state & STATE_ENDED) {\n        return 'end';\n    } else if (state & STATE_CHANGED) {\n        return 'move';\n    } else if (state & STATE_BEGAN) {\n        return 'start';\n    }\n    return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n    if (direction == DIRECTION_DOWN) {\n        return 'down';\n    } else if (direction == DIRECTION_UP) {\n        return 'up';\n    } else if (direction == DIRECTION_LEFT) {\n        return 'left';\n    } else if (direction == DIRECTION_RIGHT) {\n        return 'right';\n    }\n    return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n    var manager = recognizer.manager;\n    if (manager) {\n        return manager.get(otherRecognizer);\n    }\n    return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n    Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof AttrRecognizer\n     */\n    defaults: {\n        /**\n         * @type {Number}\n         * @default 1\n         */\n        pointers: 1\n    },\n\n    /**\n     * Used to check if it the recognizer receives valid input, like input.distance > 10.\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {Boolean} recognized\n     */\n    attrTest: function(input) {\n        var optionPointers = this.options.pointers;\n        return optionPointers === 0 || input.pointers.length === optionPointers;\n    },\n\n    /**\n     * Process the input and return the state for the recognizer\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {*} State\n     */\n    process: function(input) {\n        var state = this.state;\n        var eventType = input.eventType;\n\n        var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n        var isValid = this.attrTest(input);\n\n        // on cancel input and we've recognized before, return STATE_CANCELLED\n        if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n            return state | STATE_CANCELLED;\n        } else if (isRecognized || isValid) {\n            if (eventType & INPUT_END) {\n                return state | STATE_ENDED;\n            } else if (!(state & STATE_BEGAN)) {\n                return STATE_BEGAN;\n            }\n            return state | STATE_CHANGED;\n        }\n        return STATE_FAILED;\n    }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n\n    this.pX = null;\n    this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PanRecognizer\n     */\n    defaults: {\n        event: 'pan',\n        threshold: 10,\n        pointers: 1,\n        direction: DIRECTION_ALL\n    },\n\n    getTouchAction: function() {\n        var direction = this.options.direction;\n        var actions = [];\n        if (direction & DIRECTION_HORIZONTAL) {\n            actions.push(TOUCH_ACTION_PAN_Y);\n        }\n        if (direction & DIRECTION_VERTICAL) {\n            actions.push(TOUCH_ACTION_PAN_X);\n        }\n        return actions;\n    },\n\n    directionTest: function(input) {\n        var options = this.options;\n        var hasMoved = true;\n        var distance = input.distance;\n        var direction = input.direction;\n        var x = input.deltaX;\n        var y = input.deltaY;\n\n        // lock to axis?\n        if (!(direction & options.direction)) {\n            if (options.direction & DIRECTION_HORIZONTAL) {\n                direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n                hasMoved = x != this.pX;\n                distance = Math.abs(input.deltaX);\n            } else {\n                direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n                hasMoved = y != this.pY;\n                distance = Math.abs(input.deltaY);\n            }\n        }\n        input.direction = direction;\n        return hasMoved && distance > options.threshold && direction & options.direction;\n    },\n\n    attrTest: function(input) {\n        return AttrRecognizer.prototype.attrTest.call(this, input) &&\n            (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n    },\n\n    emit: function(input) {\n\n        this.pX = input.deltaX;\n        this.pY = input.deltaY;\n\n        var direction = directionStr(input.direction);\n\n        if (direction) {\n            input.additionalEvent = this.options.event + direction;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'pinch',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n    },\n\n    emit: function(input) {\n        if (input.scale !== 1) {\n            var inOut = input.scale < 1 ? 'in' : 'out';\n            input.additionalEvent = this.options.event + inOut;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    this._timer = null;\n    this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PressRecognizer\n     */\n    defaults: {\n        event: 'press',\n        pointers: 1,\n        time: 251, // minimal time of the pointer to be pressed\n        threshold: 9 // a minimal movement is ok, but keep it low\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_AUTO];\n    },\n\n    process: function(input) {\n        var options = this.options;\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTime = input.deltaTime > options.time;\n\n        this._input = input;\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n            this.reset();\n        } else if (input.eventType & INPUT_START) {\n            this.reset();\n            this._timer = setTimeoutContext(function() {\n                this.state = STATE_RECOGNIZED;\n                this.tryEmit();\n            }, options.time, this);\n        } else if (input.eventType & INPUT_END) {\n            return STATE_RECOGNIZED;\n        }\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function(input) {\n        if (this.state !== STATE_RECOGNIZED) {\n            return;\n        }\n\n        if (input && (input.eventType & INPUT_END)) {\n            this.manager.emit(this.options.event + 'up', input);\n        } else {\n            this._input.timeStamp = now();\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof RotateRecognizer\n     */\n    defaults: {\n        event: 'rotate',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n    }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof SwipeRecognizer\n     */\n    defaults: {\n        event: 'swipe',\n        threshold: 10,\n        velocity: 0.3,\n        direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n        pointers: 1\n    },\n\n    getTouchAction: function() {\n        return PanRecognizer.prototype.getTouchAction.call(this);\n    },\n\n    attrTest: function(input) {\n        var direction = this.options.direction;\n        var velocity;\n\n        if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n            velocity = input.overallVelocity;\n        } else if (direction & DIRECTION_HORIZONTAL) {\n            velocity = input.overallVelocityX;\n        } else if (direction & DIRECTION_VERTICAL) {\n            velocity = input.overallVelocityY;\n        }\n\n        return this._super.attrTest.call(this, input) &&\n            direction & input.offsetDirection &&\n            input.distance > this.options.threshold &&\n            input.maxPointers == this.options.pointers &&\n            abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n    },\n\n    emit: function(input) {\n        var direction = directionStr(input.offsetDirection);\n        if (direction) {\n            this.manager.emit(this.options.event + direction, input);\n        }\n\n        this.manager.emit(this.options.event, input);\n    }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    // previous time and center,\n    // used for tap counting\n    this.pTime = false;\n    this.pCenter = false;\n\n    this._timer = null;\n    this._input = null;\n    this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'tap',\n        pointers: 1,\n        taps: 1,\n        interval: 300, // max time between the multi-tap taps\n        time: 250, // max time of the pointer to be down (like finger on the screen)\n        threshold: 9, // a minimal movement is ok, but keep it low\n        posThreshold: 10 // a multi-tap can be a bit off the initial position\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_MANIPULATION];\n    },\n\n    process: function(input) {\n        var options = this.options;\n\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTouchTime = input.deltaTime < options.time;\n\n        this.reset();\n\n        if ((input.eventType & INPUT_START) && (this.count === 0)) {\n            return this.failTimeout();\n        }\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (validMovement && validTouchTime && validPointers) {\n            if (input.eventType != INPUT_END) {\n                return this.failTimeout();\n            }\n\n            var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n            var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n            this.pTime = input.timeStamp;\n            this.pCenter = input.center;\n\n            if (!validMultiTap || !validInterval) {\n                this.count = 1;\n            } else {\n                this.count += 1;\n            }\n\n            this._input = input;\n\n            // if tap count matches we have recognized it,\n            // else it has began recognizing...\n            var tapCount = this.count % options.taps;\n            if (tapCount === 0) {\n                // no failing requirements, immediately trigger the tap event\n                // or wait as long as the multitap interval to trigger\n                if (!this.hasRequireFailures()) {\n                    return STATE_RECOGNIZED;\n                } else {\n                    this._timer = setTimeoutContext(function() {\n                        this.state = STATE_RECOGNIZED;\n                        this.tryEmit();\n                    }, options.interval, this);\n                    return STATE_BEGAN;\n                }\n            }\n        }\n        return STATE_FAILED;\n    },\n\n    failTimeout: function() {\n        this._timer = setTimeoutContext(function() {\n            this.state = STATE_FAILED;\n        }, this.options.interval, this);\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function() {\n        if (this.state == STATE_RECOGNIZED) {\n            this._input.tapCount = this.count;\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n    options = options || {};\n    options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n    return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n    /**\n     * set if DOM events are being triggered.\n     * But this is slower and unused by simple implementations, so disabled by default.\n     * @type {Boolean}\n     * @default false\n     */\n    domEvents: false,\n\n    /**\n     * The value for the touchAction property/fallback.\n     * When set to `compute` it will magically set the correct value based on the added recognizers.\n     * @type {String}\n     * @default compute\n     */\n    touchAction: TOUCH_ACTION_COMPUTE,\n\n    /**\n     * @type {Boolean}\n     * @default true\n     */\n    enable: true,\n\n    /**\n     * EXPERIMENTAL FEATURE -- can be removed/changed\n     * Change the parent input target element.\n     * If Null, then it is being set the to main element.\n     * @type {Null|EventTarget}\n     * @default null\n     */\n    inputTarget: null,\n\n    /**\n     * force an input class\n     * @type {Null|Function}\n     * @default null\n     */\n    inputClass: null,\n\n    /**\n     * Default recognizer setup when calling `Hammer()`\n     * When creating a new Manager these will be skipped.\n     * @type {Array}\n     */\n    preset: [\n        // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n        [RotateRecognizer, {enable: false}],\n        [PinchRecognizer, {enable: false}, ['rotate']],\n        [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n        [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n        [TapRecognizer],\n        [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n        [PressRecognizer]\n    ],\n\n    /**\n     * Some CSS properties can be used to improve the working of Hammer.\n     * Add them to this method and they will be set when creating a new Manager.\n     * @namespace\n     */\n    cssProps: {\n        /**\n         * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userSelect: 'none',\n\n        /**\n         * Disable the Windows Phone grippers when pressing an element.\n         * @type {String}\n         * @default 'none'\n         */\n        touchSelect: 'none',\n\n        /**\n         * Disables the default callout shown when you touch and hold a touch target.\n         * On iOS, when you touch and hold a touch target such as a link, Safari displays\n         * a callout containing information about the link. This property allows you to disable that callout.\n         * @type {String}\n         * @default 'none'\n         */\n        touchCallout: 'none',\n\n        /**\n         * Specifies whether zooming is enabled. Used by IE10>\n         * @type {String}\n         * @default 'none'\n         */\n        contentZooming: 'none',\n\n        /**\n         * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userDrag: 'none',\n\n        /**\n         * Overrides the highlight color shown when the user taps a link or a JavaScript\n         * clickable element in iOS. This property obeys the alpha value, if specified.\n         * @type {String}\n         * @default 'rgba(0,0,0,0)'\n         */\n        tapHighlightColor: 'rgba(0,0,0,0)'\n    }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n    this.options = assign({}, Hammer.defaults, options || {});\n\n    this.options.inputTarget = this.options.inputTarget || element;\n\n    this.handlers = {};\n    this.session = {};\n    this.recognizers = [];\n    this.oldCssProps = {};\n\n    this.element = element;\n    this.input = createInputInstance(this);\n    this.touchAction = new TouchAction(this, this.options.touchAction);\n\n    toggleCssProps(this, true);\n\n    each(this.options.recognizers, function(item) {\n        var recognizer = this.add(new (item[0])(item[1]));\n        item[2] && recognizer.recognizeWith(item[2]);\n        item[3] && recognizer.requireFailure(item[3]);\n    }, this);\n}\n\nManager.prototype = {\n    /**\n     * set options\n     * @param {Object} options\n     * @returns {Manager}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // Options that need a little more setup\n        if (options.touchAction) {\n            this.touchAction.update();\n        }\n        if (options.inputTarget) {\n            // Clean up existing event listeners and reinitialize\n            this.input.destroy();\n            this.input.target = options.inputTarget;\n            this.input.init();\n        }\n        return this;\n    },\n\n    /**\n     * stop recognizing for this session.\n     * This session will be discarded, when a new [input]start event is fired.\n     * When forced, the recognizer cycle is stopped immediately.\n     * @param {Boolean} [force]\n     */\n    stop: function(force) {\n        this.session.stopped = force ? FORCED_STOP : STOP;\n    },\n\n    /**\n     * run the recognizers!\n     * called by the inputHandler function on every movement of the pointers (touches)\n     * it walks through all the recognizers and tries to detect the gesture that is being made\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        var session = this.session;\n        if (session.stopped) {\n            return;\n        }\n\n        // run the touch-action polyfill\n        this.touchAction.preventDefaults(inputData);\n\n        var recognizer;\n        var recognizers = this.recognizers;\n\n        // this holds the recognizer that is being recognized.\n        // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n        // if no recognizer is detecting a thing, it is set to `null`\n        var curRecognizer = session.curRecognizer;\n\n        // reset when the last recognizer is recognized\n        // or when we're in a new session\n        if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n            curRecognizer = session.curRecognizer = null;\n        }\n\n        var i = 0;\n        while (i < recognizers.length) {\n            recognizer = recognizers[i];\n\n            // find out if we are allowed try to recognize the input for this one.\n            // 1.   allow if the session is NOT forced stopped (see the .stop() method)\n            // 2.   allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n            //      that is being recognized.\n            // 3.   allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n            //      this can be setup with the `recognizeWith()` method on the recognizer.\n            if (session.stopped !== FORCED_STOP && ( // 1\n                    !curRecognizer || recognizer == curRecognizer || // 2\n                    recognizer.canRecognizeWith(curRecognizer))) { // 3\n                recognizer.recognize(inputData);\n            } else {\n                recognizer.reset();\n            }\n\n            // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n            // current active recognizer. but only if we don't already have an active recognizer\n            if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n                curRecognizer = session.curRecognizer = recognizer;\n            }\n            i++;\n        }\n    },\n\n    /**\n     * get a recognizer by its event name.\n     * @param {Recognizer|String} recognizer\n     * @returns {Recognizer|Null}\n     */\n    get: function(recognizer) {\n        if (recognizer instanceof Recognizer) {\n            return recognizer;\n        }\n\n        var recognizers = this.recognizers;\n        for (var i = 0; i < recognizers.length; i++) {\n            if (recognizers[i].options.event == recognizer) {\n                return recognizers[i];\n            }\n        }\n        return null;\n    },\n\n    /**\n     * add a recognizer to the manager\n     * existing recognizers with the same event name will be removed\n     * @param {Recognizer} recognizer\n     * @returns {Recognizer|Manager}\n     */\n    add: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'add', this)) {\n            return this;\n        }\n\n        // remove existing\n        var existing = this.get(recognizer.options.event);\n        if (existing) {\n            this.remove(existing);\n        }\n\n        this.recognizers.push(recognizer);\n        recognizer.manager = this;\n\n        this.touchAction.update();\n        return recognizer;\n    },\n\n    /**\n     * remove a recognizer by name or instance\n     * @param {Recognizer|String} recognizer\n     * @returns {Manager}\n     */\n    remove: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'remove', this)) {\n            return this;\n        }\n\n        recognizer = this.get(recognizer);\n\n        // let's make sure this recognizer exists\n        if (recognizer) {\n            var recognizers = this.recognizers;\n            var index = inArray(recognizers, recognizer);\n\n            if (index !== -1) {\n                recognizers.splice(index, 1);\n                this.touchAction.update();\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * bind event\n     * @param {String} events\n     * @param {Function} handler\n     * @returns {EventEmitter} this\n     */\n    on: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n        if (handler === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            handlers[event] = handlers[event] || [];\n            handlers[event].push(handler);\n        });\n        return this;\n    },\n\n    /**\n     * unbind event, leave emit blank to remove all handlers\n     * @param {String} events\n     * @param {Function} [handler]\n     * @returns {EventEmitter} this\n     */\n    off: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            if (!handler) {\n                delete handlers[event];\n            } else {\n                handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n            }\n        });\n        return this;\n    },\n\n    /**\n     * emit event to the listeners\n     * @param {String} event\n     * @param {Object} data\n     */\n    emit: function(event, data) {\n        // we also want to trigger dom events\n        if (this.options.domEvents) {\n            triggerDomEvent(event, data);\n        }\n\n        // no handlers, so skip it all\n        var handlers = this.handlers[event] && this.handlers[event].slice();\n        if (!handlers || !handlers.length) {\n            return;\n        }\n\n        data.type = event;\n        data.preventDefault = function() {\n            data.srcEvent.preventDefault();\n        };\n\n        var i = 0;\n        while (i < handlers.length) {\n            handlers[i](data);\n            i++;\n        }\n    },\n\n    /**\n     * destroy the manager and unbinds all events\n     * it doesn't unbind dom events, that is the user own responsibility\n     */\n    destroy: function() {\n        this.element && toggleCssProps(this, false);\n\n        this.handlers = {};\n        this.session = {};\n        this.input.destroy();\n        this.element = null;\n    }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n    var element = manager.element;\n    if (!element.style) {\n        return;\n    }\n    var prop;\n    each(manager.options.cssProps, function(value, name) {\n        prop = prefixed(element.style, name);\n        if (add) {\n            manager.oldCssProps[prop] = element.style[prop];\n            element.style[prop] = value;\n        } else {\n            element.style[prop] = manager.oldCssProps[prop] || '';\n        }\n    });\n    if (!add) {\n        manager.oldCssProps = {};\n    }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n    var gestureEvent = document.createEvent('Event');\n    gestureEvent.initEvent(event, true, true);\n    gestureEvent.gesture = data;\n    data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n    INPUT_START: INPUT_START,\n    INPUT_MOVE: INPUT_MOVE,\n    INPUT_END: INPUT_END,\n    INPUT_CANCEL: INPUT_CANCEL,\n\n    STATE_POSSIBLE: STATE_POSSIBLE,\n    STATE_BEGAN: STATE_BEGAN,\n    STATE_CHANGED: STATE_CHANGED,\n    STATE_ENDED: STATE_ENDED,\n    STATE_RECOGNIZED: STATE_RECOGNIZED,\n    STATE_CANCELLED: STATE_CANCELLED,\n    STATE_FAILED: STATE_FAILED,\n\n    DIRECTION_NONE: DIRECTION_NONE,\n    DIRECTION_LEFT: DIRECTION_LEFT,\n    DIRECTION_RIGHT: DIRECTION_RIGHT,\n    DIRECTION_UP: DIRECTION_UP,\n    DIRECTION_DOWN: DIRECTION_DOWN,\n    DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n    DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n    DIRECTION_ALL: DIRECTION_ALL,\n\n    Manager: Manager,\n    Input: Input,\n    TouchAction: TouchAction,\n\n    TouchInput: TouchInput,\n    MouseInput: MouseInput,\n    PointerEventInput: PointerEventInput,\n    TouchMouseInput: TouchMouseInput,\n    SingleTouchInput: SingleTouchInput,\n\n    Recognizer: Recognizer,\n    AttrRecognizer: AttrRecognizer,\n    Tap: TapRecognizer,\n    Pan: PanRecognizer,\n    Swipe: SwipeRecognizer,\n    Pinch: PinchRecognizer,\n    Rotate: RotateRecognizer,\n    Press: PressRecognizer,\n\n    on: addEventListeners,\n    off: removeEventListeners,\n    each: each,\n    merge: merge,\n    extend: extend,\n    assign: assign,\n    inherit: inherit,\n    bindFn: bindFn,\n    prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n//  style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (true) {\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n        return Hammer;\n    }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n} else {}\n\n})(window, document, 'Hammer');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaGFtbWVyanMvaGFtbWVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hhbW1lcmpzL2hhbW1lci5qcz9jOGI1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qISBIYW1tZXIuSlMgLSB2Mi4wLjcgLSAyMDE2LTA0LTIyXG4gKiBodHRwOi8vaGFtbWVyanMuZ2l0aHViLmlvL1xuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNiBKb3JpayBUYW5nZWxkZXI7XG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKi9cbihmdW5jdGlvbih3aW5kb3csIGRvY3VtZW50LCBleHBvcnROYW1lLCB1bmRlZmluZWQpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG52YXIgVkVORE9SX1BSRUZJWEVTID0gWycnLCAnd2Via2l0JywgJ01veicsICdNUycsICdtcycsICdvJ107XG52YXIgVEVTVF9FTEVNRU5UID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbnZhciBUWVBFX0ZVTkNUSU9OID0gJ2Z1bmN0aW9uJztcblxudmFyIHJvdW5kID0gTWF0aC5yb3VuZDtcbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBub3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBzZXQgYSB0aW1lb3V0IHdpdGggYSBnaXZlbiBzY29wZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqIEBwYXJhbSB7TnVtYmVyfSB0aW1lb3V0XG4gKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gc2V0VGltZW91dENvbnRleHQoZm4sIHRpbWVvdXQsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gc2V0VGltZW91dChiaW5kRm4oZm4sIGNvbnRleHQpLCB0aW1lb3V0KTtcbn1cblxuLyoqXG4gKiBpZiB0aGUgYXJndW1lbnQgaXMgYW4gYXJyYXksIHdlIHdhbnQgdG8gZXhlY3V0ZSB0aGUgZm4gb24gZWFjaCBlbnRyeVxuICogaWYgaXQgYWludCBhbiBhcnJheSB3ZSBkb24ndCB3YW50IHRvIGRvIGEgdGhpbmcuXG4gKiB0aGlzIGlzIHVzZWQgYnkgYWxsIHRoZSBtZXRob2RzIHRoYXQgYWNjZXB0IGEgc2luZ2xlIGFuZCBhcnJheSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7KnxBcnJheX0gYXJnXG4gKiBAcGFyYW0ge1N0cmluZ30gZm5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbY29udGV4dF1cbiAqIEByZXR1cm5zIHtCb29sZWFufVxuICovXG5mdW5jdGlvbiBpbnZva2VBcnJheUFyZyhhcmcsIGZuLCBjb250ZXh0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICBlYWNoKGFyZywgY29udGV4dFtmbl0sIGNvbnRleHQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIHdhbGsgb2JqZWN0cyBhbmQgYXJyYXlzXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRvclxuICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAqL1xuZnVuY3Rpb24gZWFjaChvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAoIW9iaikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG9iai5mb3JFYWNoKSB7XG4gICAgICAgIG9iai5mb3JFYWNoKGl0ZXJhdG9yLCBjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKG9iai5sZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCBvYmoubGVuZ3RoKSB7XG4gICAgICAgICAgICBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG9ialtpXSwgaSwgb2JqKTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoaSBpbiBvYmopIHtcbiAgICAgICAgICAgIG9iai5oYXNPd25Qcm9wZXJ0eShpKSAmJiBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG9ialtpXSwgaSwgb2JqKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiB3cmFwIGEgbWV0aG9kIHdpdGggYSBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCBzdGFjayB0cmFjZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWV0aG9kXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBuZXcgZnVuY3Rpb24gd3JhcHBpbmcgdGhlIHN1cHBsaWVkIG1ldGhvZC5cbiAqL1xuZnVuY3Rpb24gZGVwcmVjYXRlKG1ldGhvZCwgbmFtZSwgbWVzc2FnZSkge1xuICAgIHZhciBkZXByZWNhdGlvbk1lc3NhZ2UgPSAnREVQUkVDQVRFRCBNRVRIT0Q6ICcgKyBuYW1lICsgJ1xcbicgKyBtZXNzYWdlICsgJyBBVCBcXG4nO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IoJ2dldC1zdGFjay10cmFjZScpO1xuICAgICAgICB2YXIgc3RhY2sgPSBlICYmIGUuc3RhY2sgPyBlLnN0YWNrLnJlcGxhY2UoL15bXlxcKF0rP1tcXG4kXS9nbSwgJycpXG4gICAgICAgICAgICAucmVwbGFjZSgvXlxccythdFxccysvZ20sICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL15PYmplY3QuPGFub255bW91cz5cXHMqXFwoL2dtLCAne2Fub255bW91c30oKUAnKSA6ICdVbmtub3duIFN0YWNrIFRyYWNlJztcblxuICAgICAgICB2YXIgbG9nID0gd2luZG93LmNvbnNvbGUgJiYgKHdpbmRvdy5jb25zb2xlLndhcm4gfHwgd2luZG93LmNvbnNvbGUubG9nKTtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgICAgbG9nLmNhbGwod2luZG93LmNvbnNvbGUsIGRlcHJlY2F0aW9uTWVzc2FnZSwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xufVxuXG4vKipcbiAqIGV4dGVuZCBvYmplY3QuXG4gKiBtZWFucyB0aGF0IHByb3BlcnRpZXMgaW4gZGVzdCB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBvbmVzIGluIHNyYy5cbiAqIEBwYXJhbSB7T2JqZWN0fSB0YXJnZXRcbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBvYmplY3RzX3RvX2Fzc2lnblxuICogQHJldHVybnMge09iamVjdH0gdGFyZ2V0XG4gKi9cbnZhciBhc3NpZ247XG5pZiAodHlwZW9mIE9iamVjdC5hc3NpZ24gIT09ICdmdW5jdGlvbicpIHtcbiAgICBhc3NpZ24gPSBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0KSB7XG4gICAgICAgIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCB8fCB0YXJnZXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG91dHB1dCA9IE9iamVjdCh0YXJnZXQpO1xuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgICAgICBpZiAoc291cmNlICE9PSB1bmRlZmluZWQgJiYgc291cmNlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbmV4dEtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShuZXh0S2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W25leHRLZXldID0gc291cmNlW25leHRLZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfTtcbn0gZWxzZSB7XG4gICAgYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcbn1cblxuLyoqXG4gKiBleHRlbmQgb2JqZWN0LlxuICogbWVhbnMgdGhhdCBwcm9wZXJ0aWVzIGluIGRlc3Qgd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgb25lcyBpbiBzcmMuXG4gKiBAcGFyYW0ge09iamVjdH0gZGVzdFxuICogQHBhcmFtIHtPYmplY3R9IHNyY1xuICogQHBhcmFtIHtCb29sZWFufSBbbWVyZ2U9ZmFsc2VdXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBkZXN0XG4gKi9cbnZhciBleHRlbmQgPSBkZXByZWNhdGUoZnVuY3Rpb24gZXh0ZW5kKGRlc3QsIHNyYywgbWVyZ2UpIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNyYyk7XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChpIDwga2V5cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKCFtZXJnZSB8fCAobWVyZ2UgJiYgZGVzdFtrZXlzW2ldXSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgZGVzdFtrZXlzW2ldXSA9IHNyY1trZXlzW2ldXTtcbiAgICAgICAgfVxuICAgICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBkZXN0O1xufSwgJ2V4dGVuZCcsICdVc2UgYGFzc2lnbmAuJyk7XG5cbi8qKlxuICogbWVyZ2UgdGhlIHZhbHVlcyBmcm9tIHNyYyBpbiB0aGUgZGVzdC5cbiAqIG1lYW5zIHRoYXQgcHJvcGVydGllcyB0aGF0IGV4aXN0IGluIGRlc3Qgd2lsbCBub3QgYmUgb3ZlcndyaXR0ZW4gYnkgc3JjXG4gKiBAcGFyYW0ge09iamVjdH0gZGVzdFxuICogQHBhcmFtIHtPYmplY3R9IHNyY1xuICogQHJldHVybnMge09iamVjdH0gZGVzdFxuICovXG52YXIgbWVyZ2UgPSBkZXByZWNhdGUoZnVuY3Rpb24gbWVyZ2UoZGVzdCwgc3JjKSB7XG4gICAgcmV0dXJuIGV4dGVuZChkZXN0LCBzcmMsIHRydWUpO1xufSwgJ21lcmdlJywgJ1VzZSBgYXNzaWduYC4nKTtcblxuLyoqXG4gKiBzaW1wbGUgY2xhc3MgaW5oZXJpdGFuY2VcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNoaWxkXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBiYXNlXG4gKiBAcGFyYW0ge09iamVjdH0gW3Byb3BlcnRpZXNdXG4gKi9cbmZ1bmN0aW9uIGluaGVyaXQoY2hpbGQsIGJhc2UsIHByb3BlcnRpZXMpIHtcbiAgICB2YXIgYmFzZVAgPSBiYXNlLnByb3RvdHlwZSxcbiAgICAgICAgY2hpbGRQO1xuXG4gICAgY2hpbGRQID0gY2hpbGQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShiYXNlUCk7XG4gICAgY2hpbGRQLmNvbnN0cnVjdG9yID0gY2hpbGQ7XG4gICAgY2hpbGRQLl9zdXBlciA9IGJhc2VQO1xuXG4gICAgaWYgKHByb3BlcnRpZXMpIHtcbiAgICAgICAgYXNzaWduKGNoaWxkUCwgcHJvcGVydGllcyk7XG4gICAgfVxufVxuXG4vKipcbiAqIHNpbXBsZSBmdW5jdGlvbiBiaW5kXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gYmluZEZuKGZuLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGJvdW5kRm4oKSB7XG4gICAgICAgIHJldHVybiBmbi5hcHBseShjb250ZXh0LCBhcmd1bWVudHMpO1xuICAgIH07XG59XG5cbi8qKlxuICogbGV0IGEgYm9vbGVhbiB2YWx1ZSBhbHNvIGJlIGEgZnVuY3Rpb24gdGhhdCBtdXN0IHJldHVybiBhIGJvb2xlYW5cbiAqIHRoaXMgZmlyc3QgaXRlbSBpbiBhcmdzIHdpbGwgYmUgdXNlZCBhcyB0aGUgY29udGV4dFxuICogQHBhcmFtIHtCb29sZWFufEZ1bmN0aW9ufSB2YWxcbiAqIEBwYXJhbSB7QXJyYXl9IFthcmdzXVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGJvb2xPckZuKHZhbCwgYXJncykge1xuICAgIGlmICh0eXBlb2YgdmFsID09IFRZUEVfRlVOQ1RJT04pIHtcbiAgICAgICAgcmV0dXJuIHZhbC5hcHBseShhcmdzID8gYXJnc1swXSB8fCB1bmRlZmluZWQgOiB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xufVxuXG4vKipcbiAqIHVzZSB0aGUgdmFsMiB3aGVuIHZhbDEgaXMgdW5kZWZpbmVkXG4gKiBAcGFyYW0geyp9IHZhbDFcbiAqIEBwYXJhbSB7Kn0gdmFsMlxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGlmVW5kZWZpbmVkKHZhbDEsIHZhbDIpIHtcbiAgICByZXR1cm4gKHZhbDEgPT09IHVuZGVmaW5lZCkgPyB2YWwyIDogdmFsMTtcbn1cblxuLyoqXG4gKiBhZGRFdmVudExpc3RlbmVyIHdpdGggbXVsdGlwbGUgZXZlbnRzIGF0IG9uY2VcbiAqIEBwYXJhbSB7RXZlbnRUYXJnZXR9IHRhcmdldFxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyXG4gKi9cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXJzKHRhcmdldCwgdHlwZXMsIGhhbmRsZXIpIHtcbiAgICBlYWNoKHNwbGl0U3RyKHR5cGVzKSwgZnVuY3Rpb24odHlwZSkge1xuICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBoYW5kbGVyLCBmYWxzZSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogcmVtb3ZlRXZlbnRMaXN0ZW5lciB3aXRoIG11bHRpcGxlIGV2ZW50cyBhdCBvbmNlXG4gKiBAcGFyYW0ge0V2ZW50VGFyZ2V0fSB0YXJnZXRcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlclxuICovXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycyh0YXJnZXQsIHR5cGVzLCBoYW5kbGVyKSB7XG4gICAgZWFjaChzcGxpdFN0cih0eXBlcyksIGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgaGFuZGxlciwgZmFsc2UpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIGZpbmQgaWYgYSBub2RlIGlzIGluIHRoZSBnaXZlbiBwYXJlbnRcbiAqIEBtZXRob2QgaGFzUGFyZW50XG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwYXJlbnRcbiAqIEByZXR1cm4ge0Jvb2xlYW59IGZvdW5kXG4gKi9cbmZ1bmN0aW9uIGhhc1BhcmVudChub2RlLCBwYXJlbnQpIHtcbiAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICBpZiAobm9kZSA9PSBwYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBzbWFsbCBpbmRleE9mIHdyYXBwZXJcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaW5kXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gZm91bmRcbiAqL1xuZnVuY3Rpb24gaW5TdHIoc3RyLCBmaW5kKSB7XG4gICAgcmV0dXJuIHN0ci5pbmRleE9mKGZpbmQpID4gLTE7XG59XG5cbi8qKlxuICogc3BsaXQgc3RyaW5nIG9uIHdoaXRlc3BhY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtBcnJheX0gd29yZHNcbiAqL1xuZnVuY3Rpb24gc3BsaXRTdHIoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci50cmltKCkuc3BsaXQoL1xccysvZyk7XG59XG5cbi8qKlxuICogZmluZCBpZiBhIGFycmF5IGNvbnRhaW5zIHRoZSBvYmplY3QgdXNpbmcgaW5kZXhPZiBvciBhIHNpbXBsZSBwb2x5RmlsbFxuICogQHBhcmFtIHtBcnJheX0gc3JjXG4gKiBAcGFyYW0ge1N0cmluZ30gZmluZFxuICogQHBhcmFtIHtTdHJpbmd9IFtmaW5kQnlLZXldXG4gKiBAcmV0dXJuIHtCb29sZWFufE51bWJlcn0gZmFsc2Ugd2hlbiBub3QgZm91bmQsIG9yIHRoZSBpbmRleFxuICovXG5mdW5jdGlvbiBpbkFycmF5KHNyYywgZmluZCwgZmluZEJ5S2V5KSB7XG4gICAgaWYgKHNyYy5pbmRleE9mICYmICFmaW5kQnlLZXkpIHtcbiAgICAgICAgcmV0dXJuIHNyYy5pbmRleE9mKGZpbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCBzcmMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoKGZpbmRCeUtleSAmJiBzcmNbaV1bZmluZEJ5S2V5XSA9PSBmaW5kKSB8fCAoIWZpbmRCeUtleSAmJiBzcmNbaV0gPT09IGZpbmQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbn1cblxuLyoqXG4gKiBjb252ZXJ0IGFycmF5LWxpa2Ugb2JqZWN0cyB0byByZWFsIGFycmF5c1xuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybnMge0FycmF5fVxuICovXG5mdW5jdGlvbiB0b0FycmF5KG9iaikge1xuICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvYmosIDApO1xufVxuXG4vKipcbiAqIHVuaXF1ZSBhcnJheSB3aXRoIG9iamVjdHMgYmFzZWQgb24gYSBrZXkgKGxpa2UgJ2lkJykgb3IganVzdCBieSB0aGUgYXJyYXkncyB2YWx1ZVxuICogQHBhcmFtIHtBcnJheX0gc3JjIFt7aWQ6MX0se2lkOjJ9LHtpZDoxfV1cbiAqIEBwYXJhbSB7U3RyaW5nfSBba2V5XVxuICogQHBhcmFtIHtCb29sZWFufSBbc29ydD1GYWxzZV1cbiAqIEByZXR1cm5zIHtBcnJheX0gW3tpZDoxfSx7aWQ6Mn1dXG4gKi9cbmZ1bmN0aW9uIHVuaXF1ZUFycmF5KHNyYywga2V5LCBzb3J0KSB7XG4gICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgdmFyIGkgPSAwO1xuXG4gICAgd2hpbGUgKGkgPCBzcmMubGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWwgPSBrZXkgPyBzcmNbaV1ba2V5XSA6IHNyY1tpXTtcbiAgICAgICAgaWYgKGluQXJyYXkodmFsdWVzLCB2YWwpIDwgMCkge1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHNyY1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWVzW2ldID0gdmFsO1xuICAgICAgICBpKys7XG4gICAgfVxuXG4gICAgaWYgKHNvcnQpIHtcbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLnNvcnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLnNvcnQoZnVuY3Rpb24gc29ydFVuaXF1ZUFycmF5KGEsIGIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYVtrZXldID4gYltrZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHByZWZpeGVkIHByb3BlcnR5XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHlcbiAqIEByZXR1cm5zIHtTdHJpbmd8VW5kZWZpbmVkfSBwcmVmaXhlZFxuICovXG5mdW5jdGlvbiBwcmVmaXhlZChvYmosIHByb3BlcnR5KSB7XG4gICAgdmFyIHByZWZpeCwgcHJvcDtcbiAgICB2YXIgY2FtZWxQcm9wID0gcHJvcGVydHlbMF0udG9VcHBlckNhc2UoKSArIHByb3BlcnR5LnNsaWNlKDEpO1xuXG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgVkVORE9SX1BSRUZJWEVTLmxlbmd0aCkge1xuICAgICAgICBwcmVmaXggPSBWRU5ET1JfUFJFRklYRVNbaV07XG4gICAgICAgIHByb3AgPSAocHJlZml4KSA/IHByZWZpeCArIGNhbWVsUHJvcCA6IHByb3BlcnR5O1xuXG4gICAgICAgIGlmIChwcm9wIGluIG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIHByb3A7XG4gICAgICAgIH1cbiAgICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIGdldCBhIHVuaXF1ZSBpZFxuICogQHJldHVybnMge251bWJlcn0gdW5pcXVlSWRcbiAqL1xudmFyIF91bmlxdWVJZCA9IDE7XG5mdW5jdGlvbiB1bmlxdWVJZCgpIHtcbiAgICByZXR1cm4gX3VuaXF1ZUlkKys7XG59XG5cbi8qKlxuICogZ2V0IHRoZSB3aW5kb3cgb2JqZWN0IG9mIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm5zIHtEb2N1bWVudFZpZXd8V2luZG93fVxuICovXG5mdW5jdGlvbiBnZXRXaW5kb3dGb3JFbGVtZW50KGVsZW1lbnQpIHtcbiAgICB2YXIgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGVsZW1lbnQ7XG4gICAgcmV0dXJuIChkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdyB8fCB3aW5kb3cpO1xufVxuXG52YXIgTU9CSUxFX1JFR0VYID0gL21vYmlsZXx0YWJsZXR8aXAoYWR8aG9uZXxvZCl8YW5kcm9pZC9pO1xuXG52YXIgU1VQUE9SVF9UT1VDSCA9ICgnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cpO1xudmFyIFNVUFBPUlRfUE9JTlRFUl9FVkVOVFMgPSBwcmVmaXhlZCh3aW5kb3csICdQb2ludGVyRXZlbnQnKSAhPT0gdW5kZWZpbmVkO1xudmFyIFNVUFBPUlRfT05MWV9UT1VDSCA9IFNVUFBPUlRfVE9VQ0ggJiYgTU9CSUxFX1JFR0VYLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbnZhciBJTlBVVF9UWVBFX1RPVUNIID0gJ3RvdWNoJztcbnZhciBJTlBVVF9UWVBFX1BFTiA9ICdwZW4nO1xudmFyIElOUFVUX1RZUEVfTU9VU0UgPSAnbW91c2UnO1xudmFyIElOUFVUX1RZUEVfS0lORUNUID0gJ2tpbmVjdCc7XG5cbnZhciBDT01QVVRFX0lOVEVSVkFMID0gMjU7XG5cbnZhciBJTlBVVF9TVEFSVCA9IDE7XG52YXIgSU5QVVRfTU9WRSA9IDI7XG52YXIgSU5QVVRfRU5EID0gNDtcbnZhciBJTlBVVF9DQU5DRUwgPSA4O1xuXG52YXIgRElSRUNUSU9OX05PTkUgPSAxO1xudmFyIERJUkVDVElPTl9MRUZUID0gMjtcbnZhciBESVJFQ1RJT05fUklHSFQgPSA0O1xudmFyIERJUkVDVElPTl9VUCA9IDg7XG52YXIgRElSRUNUSU9OX0RPV04gPSAxNjtcblxudmFyIERJUkVDVElPTl9IT1JJWk9OVEFMID0gRElSRUNUSU9OX0xFRlQgfCBESVJFQ1RJT05fUklHSFQ7XG52YXIgRElSRUNUSU9OX1ZFUlRJQ0FMID0gRElSRUNUSU9OX1VQIHwgRElSRUNUSU9OX0RPV047XG52YXIgRElSRUNUSU9OX0FMTCA9IERJUkVDVElPTl9IT1JJWk9OVEFMIHwgRElSRUNUSU9OX1ZFUlRJQ0FMO1xuXG52YXIgUFJPUFNfWFkgPSBbJ3gnLCAneSddO1xudmFyIFBST1BTX0NMSUVOVF9YWSA9IFsnY2xpZW50WCcsICdjbGllbnRZJ107XG5cbi8qKlxuICogY3JlYXRlIG5ldyBpbnB1dCB0eXBlIG1hbmFnZXJcbiAqIEBwYXJhbSB7TWFuYWdlcn0gbWFuYWdlclxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHtJbnB1dH1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBJbnB1dChtYW5hZ2VyLCBjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLmVsZW1lbnQgPSBtYW5hZ2VyLmVsZW1lbnQ7XG4gICAgdGhpcy50YXJnZXQgPSBtYW5hZ2VyLm9wdGlvbnMuaW5wdXRUYXJnZXQ7XG5cbiAgICAvLyBzbWFsbGVyIHdyYXBwZXIgYXJvdW5kIHRoZSBoYW5kbGVyLCBmb3IgdGhlIHNjb3BlIGFuZCB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgbWFuYWdlcixcbiAgICAvLyBzbyB3aGVuIGRpc2FibGVkIHRoZSBpbnB1dCBldmVudHMgYXJlIGNvbXBsZXRlbHkgYnlwYXNzZWQuXG4gICAgdGhpcy5kb21IYW5kbGVyID0gZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgaWYgKGJvb2xPckZuKG1hbmFnZXIub3B0aW9ucy5lbmFibGUsIFttYW5hZ2VyXSkpIHtcbiAgICAgICAgICAgIHNlbGYuaGFuZGxlcihldik7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5pbml0KCk7XG5cbn1cblxuSW5wdXQucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIHNob3VsZCBoYW5kbGUgdGhlIGlucHV0RXZlbnQgZGF0YSBhbmQgdHJpZ2dlciB0aGUgY2FsbGJhY2tcbiAgICAgKiBAdmlydHVhbFxuICAgICAqL1xuICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkgeyB9LFxuXG4gICAgLyoqXG4gICAgICogYmluZCB0aGUgZXZlbnRzXG4gICAgICovXG4gICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuZXZFbCAmJiBhZGRFdmVudExpc3RlbmVycyh0aGlzLmVsZW1lbnQsIHRoaXMuZXZFbCwgdGhpcy5kb21IYW5kbGVyKTtcbiAgICAgICAgdGhpcy5ldlRhcmdldCAmJiBhZGRFdmVudExpc3RlbmVycyh0aGlzLnRhcmdldCwgdGhpcy5ldlRhcmdldCwgdGhpcy5kb21IYW5kbGVyKTtcbiAgICAgICAgdGhpcy5ldldpbiAmJiBhZGRFdmVudExpc3RlbmVycyhnZXRXaW5kb3dGb3JFbGVtZW50KHRoaXMuZWxlbWVudCksIHRoaXMuZXZXaW4sIHRoaXMuZG9tSGFuZGxlcik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHVuYmluZCB0aGUgZXZlbnRzXG4gICAgICovXG4gICAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuZXZFbCAmJiByZW1vdmVFdmVudExpc3RlbmVycyh0aGlzLmVsZW1lbnQsIHRoaXMuZXZFbCwgdGhpcy5kb21IYW5kbGVyKTtcbiAgICAgICAgdGhpcy5ldlRhcmdldCAmJiByZW1vdmVFdmVudExpc3RlbmVycyh0aGlzLnRhcmdldCwgdGhpcy5ldlRhcmdldCwgdGhpcy5kb21IYW5kbGVyKTtcbiAgICAgICAgdGhpcy5ldldpbiAmJiByZW1vdmVFdmVudExpc3RlbmVycyhnZXRXaW5kb3dGb3JFbGVtZW50KHRoaXMuZWxlbWVudCksIHRoaXMuZXZXaW4sIHRoaXMuZG9tSGFuZGxlcik7XG4gICAgfVxufTtcblxuLyoqXG4gKiBjcmVhdGUgbmV3IGlucHV0IHR5cGUgbWFuYWdlclxuICogY2FsbGVkIGJ5IHRoZSBNYW5hZ2VyIGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0hhbW1lcn0gbWFuYWdlclxuICogQHJldHVybnMge0lucHV0fVxuICovXG5mdW5jdGlvbiBjcmVhdGVJbnB1dEluc3RhbmNlKG1hbmFnZXIpIHtcbiAgICB2YXIgVHlwZTtcbiAgICB2YXIgaW5wdXRDbGFzcyA9IG1hbmFnZXIub3B0aW9ucy5pbnB1dENsYXNzO1xuXG4gICAgaWYgKGlucHV0Q2xhc3MpIHtcbiAgICAgICAgVHlwZSA9IGlucHV0Q2xhc3M7XG4gICAgfSBlbHNlIGlmIChTVVBQT1JUX1BPSU5URVJfRVZFTlRTKSB7XG4gICAgICAgIFR5cGUgPSBQb2ludGVyRXZlbnRJbnB1dDtcbiAgICB9IGVsc2UgaWYgKFNVUFBPUlRfT05MWV9UT1VDSCkge1xuICAgICAgICBUeXBlID0gVG91Y2hJbnB1dDtcbiAgICB9IGVsc2UgaWYgKCFTVVBQT1JUX1RPVUNIKSB7XG4gICAgICAgIFR5cGUgPSBNb3VzZUlucHV0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIFR5cGUgPSBUb3VjaE1vdXNlSW5wdXQ7XG4gICAgfVxuICAgIHJldHVybiBuZXcgKFR5cGUpKG1hbmFnZXIsIGlucHV0SGFuZGxlcik7XG59XG5cbi8qKlxuICogaGFuZGxlIGlucHV0IGV2ZW50c1xuICogQHBhcmFtIHtNYW5hZ2VyfSBtYW5hZ2VyXG4gKiBAcGFyYW0ge1N0cmluZ30gZXZlbnRUeXBlXG4gKiBAcGFyYW0ge09iamVjdH0gaW5wdXRcbiAqL1xuZnVuY3Rpb24gaW5wdXRIYW5kbGVyKG1hbmFnZXIsIGV2ZW50VHlwZSwgaW5wdXQpIHtcbiAgICB2YXIgcG9pbnRlcnNMZW4gPSBpbnB1dC5wb2ludGVycy5sZW5ndGg7XG4gICAgdmFyIGNoYW5nZWRQb2ludGVyc0xlbiA9IGlucHV0LmNoYW5nZWRQb2ludGVycy5sZW5ndGg7XG4gICAgdmFyIGlzRmlyc3QgPSAoZXZlbnRUeXBlICYgSU5QVVRfU1RBUlQgJiYgKHBvaW50ZXJzTGVuIC0gY2hhbmdlZFBvaW50ZXJzTGVuID09PSAwKSk7XG4gICAgdmFyIGlzRmluYWwgPSAoZXZlbnRUeXBlICYgKElOUFVUX0VORCB8IElOUFVUX0NBTkNFTCkgJiYgKHBvaW50ZXJzTGVuIC0gY2hhbmdlZFBvaW50ZXJzTGVuID09PSAwKSk7XG5cbiAgICBpbnB1dC5pc0ZpcnN0ID0gISFpc0ZpcnN0O1xuICAgIGlucHV0LmlzRmluYWwgPSAhIWlzRmluYWw7XG5cbiAgICBpZiAoaXNGaXJzdCkge1xuICAgICAgICBtYW5hZ2VyLnNlc3Npb24gPSB7fTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgZXZlbnQgaXMgdGhlIG5vcm1hbGl6ZWQgdmFsdWUgb2YgdGhlIGRvbUV2ZW50c1xuICAgIC8vIGxpa2UgJ3RvdWNoc3RhcnQsIG1vdXNldXAsIHBvaW50ZXJkb3duJ1xuICAgIGlucHV0LmV2ZW50VHlwZSA9IGV2ZW50VHlwZTtcblxuICAgIC8vIGNvbXB1dGUgc2NhbGUsIHJvdGF0aW9uIGV0Y1xuICAgIGNvbXB1dGVJbnB1dERhdGEobWFuYWdlciwgaW5wdXQpO1xuXG4gICAgLy8gZW1pdCBzZWNyZXQgZXZlbnRcbiAgICBtYW5hZ2VyLmVtaXQoJ2hhbW1lci5pbnB1dCcsIGlucHV0KTtcblxuICAgIG1hbmFnZXIucmVjb2duaXplKGlucHV0KTtcbiAgICBtYW5hZ2VyLnNlc3Npb24ucHJldklucHV0ID0gaW5wdXQ7XG59XG5cbi8qKlxuICogZXh0ZW5kIHRoZSBkYXRhIHdpdGggc29tZSB1c2FibGUgcHJvcGVydGllcyBsaWtlIHNjYWxlLCByb3RhdGUsIHZlbG9jaXR5IGV0Y1xuICogQHBhcmFtIHtPYmplY3R9IG1hbmFnZXJcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dFxuICovXG5mdW5jdGlvbiBjb21wdXRlSW5wdXREYXRhKG1hbmFnZXIsIGlucHV0KSB7XG4gICAgdmFyIHNlc3Npb24gPSBtYW5hZ2VyLnNlc3Npb247XG4gICAgdmFyIHBvaW50ZXJzID0gaW5wdXQucG9pbnRlcnM7XG4gICAgdmFyIHBvaW50ZXJzTGVuZ3RoID0gcG9pbnRlcnMubGVuZ3RoO1xuXG4gICAgLy8gc3RvcmUgdGhlIGZpcnN0IGlucHV0IHRvIGNhbGN1bGF0ZSB0aGUgZGlzdGFuY2UgYW5kIGRpcmVjdGlvblxuICAgIGlmICghc2Vzc2lvbi5maXJzdElucHV0KSB7XG4gICAgICAgIHNlc3Npb24uZmlyc3RJbnB1dCA9IHNpbXBsZUNsb25lSW5wdXREYXRhKGlucHV0KTtcbiAgICB9XG5cbiAgICAvLyB0byBjb21wdXRlIHNjYWxlIGFuZCByb3RhdGlvbiB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBtdWx0aXBsZSB0b3VjaGVzXG4gICAgaWYgKHBvaW50ZXJzTGVuZ3RoID4gMSAmJiAhc2Vzc2lvbi5maXJzdE11bHRpcGxlKSB7XG4gICAgICAgIHNlc3Npb24uZmlyc3RNdWx0aXBsZSA9IHNpbXBsZUNsb25lSW5wdXREYXRhKGlucHV0KTtcbiAgICB9IGVsc2UgaWYgKHBvaW50ZXJzTGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHNlc3Npb24uZmlyc3RNdWx0aXBsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBmaXJzdElucHV0ID0gc2Vzc2lvbi5maXJzdElucHV0O1xuICAgIHZhciBmaXJzdE11bHRpcGxlID0gc2Vzc2lvbi5maXJzdE11bHRpcGxlO1xuICAgIHZhciBvZmZzZXRDZW50ZXIgPSBmaXJzdE11bHRpcGxlID8gZmlyc3RNdWx0aXBsZS5jZW50ZXIgOiBmaXJzdElucHV0LmNlbnRlcjtcblxuICAgIHZhciBjZW50ZXIgPSBpbnB1dC5jZW50ZXIgPSBnZXRDZW50ZXIocG9pbnRlcnMpO1xuICAgIGlucHV0LnRpbWVTdGFtcCA9IG5vdygpO1xuICAgIGlucHV0LmRlbHRhVGltZSA9IGlucHV0LnRpbWVTdGFtcCAtIGZpcnN0SW5wdXQudGltZVN0YW1wO1xuXG4gICAgaW5wdXQuYW5nbGUgPSBnZXRBbmdsZShvZmZzZXRDZW50ZXIsIGNlbnRlcik7XG4gICAgaW5wdXQuZGlzdGFuY2UgPSBnZXREaXN0YW5jZShvZmZzZXRDZW50ZXIsIGNlbnRlcik7XG5cbiAgICBjb21wdXRlRGVsdGFYWShzZXNzaW9uLCBpbnB1dCk7XG4gICAgaW5wdXQub2Zmc2V0RGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uKGlucHV0LmRlbHRhWCwgaW5wdXQuZGVsdGFZKTtcblxuICAgIHZhciBvdmVyYWxsVmVsb2NpdHkgPSBnZXRWZWxvY2l0eShpbnB1dC5kZWx0YVRpbWUsIGlucHV0LmRlbHRhWCwgaW5wdXQuZGVsdGFZKTtcbiAgICBpbnB1dC5vdmVyYWxsVmVsb2NpdHlYID0gb3ZlcmFsbFZlbG9jaXR5Lng7XG4gICAgaW5wdXQub3ZlcmFsbFZlbG9jaXR5WSA9IG92ZXJhbGxWZWxvY2l0eS55O1xuICAgIGlucHV0Lm92ZXJhbGxWZWxvY2l0eSA9IChhYnMob3ZlcmFsbFZlbG9jaXR5LngpID4gYWJzKG92ZXJhbGxWZWxvY2l0eS55KSkgPyBvdmVyYWxsVmVsb2NpdHkueCA6IG92ZXJhbGxWZWxvY2l0eS55O1xuXG4gICAgaW5wdXQuc2NhbGUgPSBmaXJzdE11bHRpcGxlID8gZ2V0U2NhbGUoZmlyc3RNdWx0aXBsZS5wb2ludGVycywgcG9pbnRlcnMpIDogMTtcbiAgICBpbnB1dC5yb3RhdGlvbiA9IGZpcnN0TXVsdGlwbGUgPyBnZXRSb3RhdGlvbihmaXJzdE11bHRpcGxlLnBvaW50ZXJzLCBwb2ludGVycykgOiAwO1xuXG4gICAgaW5wdXQubWF4UG9pbnRlcnMgPSAhc2Vzc2lvbi5wcmV2SW5wdXQgPyBpbnB1dC5wb2ludGVycy5sZW5ndGggOiAoKGlucHV0LnBvaW50ZXJzLmxlbmd0aCA+XG4gICAgICAgIHNlc3Npb24ucHJldklucHV0Lm1heFBvaW50ZXJzKSA/IGlucHV0LnBvaW50ZXJzLmxlbmd0aCA6IHNlc3Npb24ucHJldklucHV0Lm1heFBvaW50ZXJzKTtcblxuICAgIGNvbXB1dGVJbnRlcnZhbElucHV0RGF0YShzZXNzaW9uLCBpbnB1dCk7XG5cbiAgICAvLyBmaW5kIHRoZSBjb3JyZWN0IHRhcmdldFxuICAgIHZhciB0YXJnZXQgPSBtYW5hZ2VyLmVsZW1lbnQ7XG4gICAgaWYgKGhhc1BhcmVudChpbnB1dC5zcmNFdmVudC50YXJnZXQsIHRhcmdldCkpIHtcbiAgICAgICAgdGFyZ2V0ID0gaW5wdXQuc3JjRXZlbnQudGFyZ2V0O1xuICAgIH1cbiAgICBpbnB1dC50YXJnZXQgPSB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVEZWx0YVhZKHNlc3Npb24sIGlucHV0KSB7XG4gICAgdmFyIGNlbnRlciA9IGlucHV0LmNlbnRlcjtcbiAgICB2YXIgb2Zmc2V0ID0gc2Vzc2lvbi5vZmZzZXREZWx0YSB8fCB7fTtcbiAgICB2YXIgcHJldkRlbHRhID0gc2Vzc2lvbi5wcmV2RGVsdGEgfHwge307XG4gICAgdmFyIHByZXZJbnB1dCA9IHNlc3Npb24ucHJldklucHV0IHx8IHt9O1xuXG4gICAgaWYgKGlucHV0LmV2ZW50VHlwZSA9PT0gSU5QVVRfU1RBUlQgfHwgcHJldklucHV0LmV2ZW50VHlwZSA9PT0gSU5QVVRfRU5EKSB7XG4gICAgICAgIHByZXZEZWx0YSA9IHNlc3Npb24ucHJldkRlbHRhID0ge1xuICAgICAgICAgICAgeDogcHJldklucHV0LmRlbHRhWCB8fCAwLFxuICAgICAgICAgICAgeTogcHJldklucHV0LmRlbHRhWSB8fCAwXG4gICAgICAgIH07XG5cbiAgICAgICAgb2Zmc2V0ID0gc2Vzc2lvbi5vZmZzZXREZWx0YSA9IHtcbiAgICAgICAgICAgIHg6IGNlbnRlci54LFxuICAgICAgICAgICAgeTogY2VudGVyLnlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbnB1dC5kZWx0YVggPSBwcmV2RGVsdGEueCArIChjZW50ZXIueCAtIG9mZnNldC54KTtcbiAgICBpbnB1dC5kZWx0YVkgPSBwcmV2RGVsdGEueSArIChjZW50ZXIueSAtIG9mZnNldC55KTtcbn1cblxuLyoqXG4gKiB2ZWxvY2l0eSBpcyBjYWxjdWxhdGVkIGV2ZXJ5IHggbXNcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXNzaW9uXG4gKiBAcGFyYW0ge09iamVjdH0gaW5wdXRcbiAqL1xuZnVuY3Rpb24gY29tcHV0ZUludGVydmFsSW5wdXREYXRhKHNlc3Npb24sIGlucHV0KSB7XG4gICAgdmFyIGxhc3QgPSBzZXNzaW9uLmxhc3RJbnRlcnZhbCB8fCBpbnB1dCxcbiAgICAgICAgZGVsdGFUaW1lID0gaW5wdXQudGltZVN0YW1wIC0gbGFzdC50aW1lU3RhbXAsXG4gICAgICAgIHZlbG9jaXR5LCB2ZWxvY2l0eVgsIHZlbG9jaXR5WSwgZGlyZWN0aW9uO1xuXG4gICAgaWYgKGlucHV0LmV2ZW50VHlwZSAhPSBJTlBVVF9DQU5DRUwgJiYgKGRlbHRhVGltZSA+IENPTVBVVEVfSU5URVJWQUwgfHwgbGFzdC52ZWxvY2l0eSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICB2YXIgZGVsdGFYID0gaW5wdXQuZGVsdGFYIC0gbGFzdC5kZWx0YVg7XG4gICAgICAgIHZhciBkZWx0YVkgPSBpbnB1dC5kZWx0YVkgLSBsYXN0LmRlbHRhWTtcblxuICAgICAgICB2YXIgdiA9IGdldFZlbG9jaXR5KGRlbHRhVGltZSwgZGVsdGFYLCBkZWx0YVkpO1xuICAgICAgICB2ZWxvY2l0eVggPSB2Lng7XG4gICAgICAgIHZlbG9jaXR5WSA9IHYueTtcbiAgICAgICAgdmVsb2NpdHkgPSAoYWJzKHYueCkgPiBhYnModi55KSkgPyB2LnggOiB2Lnk7XG4gICAgICAgIGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbihkZWx0YVgsIGRlbHRhWSk7XG5cbiAgICAgICAgc2Vzc2lvbi5sYXN0SW50ZXJ2YWwgPSBpbnB1dDtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1c2UgbGF0ZXN0IHZlbG9jaXR5IGluZm8gaWYgaXQgZG9lc24ndCBvdmVydGFrZSBhIG1pbmltdW0gcGVyaW9kXG4gICAgICAgIHZlbG9jaXR5ID0gbGFzdC52ZWxvY2l0eTtcbiAgICAgICAgdmVsb2NpdHlYID0gbGFzdC52ZWxvY2l0eVg7XG4gICAgICAgIHZlbG9jaXR5WSA9IGxhc3QudmVsb2NpdHlZO1xuICAgICAgICBkaXJlY3Rpb24gPSBsYXN0LmRpcmVjdGlvbjtcbiAgICB9XG5cbiAgICBpbnB1dC52ZWxvY2l0eSA9IHZlbG9jaXR5O1xuICAgIGlucHV0LnZlbG9jaXR5WCA9IHZlbG9jaXR5WDtcbiAgICBpbnB1dC52ZWxvY2l0eVkgPSB2ZWxvY2l0eVk7XG4gICAgaW5wdXQuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xufVxuXG4vKipcbiAqIGNyZWF0ZSBhIHNpbXBsZSBjbG9uZSBmcm9tIHRoZSBpbnB1dCB1c2VkIGZvciBzdG9yYWdlIG9mIGZpcnN0SW5wdXQgYW5kIGZpcnN0TXVsdGlwbGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dFxuICogQHJldHVybnMge09iamVjdH0gY2xvbmVkSW5wdXREYXRhXG4gKi9cbmZ1bmN0aW9uIHNpbXBsZUNsb25lSW5wdXREYXRhKGlucHV0KSB7XG4gICAgLy8gbWFrZSBhIHNpbXBsZSBjb3B5IG9mIHRoZSBwb2ludGVycyBiZWNhdXNlIHdlIHdpbGwgZ2V0IGEgcmVmZXJlbmNlIGlmIHdlIGRvbid0XG4gICAgLy8gd2Ugb25seSBuZWVkIGNsaWVudFhZIGZvciB0aGUgY2FsY3VsYXRpb25zXG4gICAgdmFyIHBvaW50ZXJzID0gW107XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgaW5wdXQucG9pbnRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHBvaW50ZXJzW2ldID0ge1xuICAgICAgICAgICAgY2xpZW50WDogcm91bmQoaW5wdXQucG9pbnRlcnNbaV0uY2xpZW50WCksXG4gICAgICAgICAgICBjbGllbnRZOiByb3VuZChpbnB1dC5wb2ludGVyc1tpXS5jbGllbnRZKVxuICAgICAgICB9O1xuICAgICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGltZVN0YW1wOiBub3coKSxcbiAgICAgICAgcG9pbnRlcnM6IHBvaW50ZXJzLFxuICAgICAgICBjZW50ZXI6IGdldENlbnRlcihwb2ludGVycyksXG4gICAgICAgIGRlbHRhWDogaW5wdXQuZGVsdGFYLFxuICAgICAgICBkZWx0YVk6IGlucHV0LmRlbHRhWVxuICAgIH07XG59XG5cbi8qKlxuICogZ2V0IHRoZSBjZW50ZXIgb2YgYWxsIHRoZSBwb2ludGVyc1xuICogQHBhcmFtIHtBcnJheX0gcG9pbnRlcnNcbiAqIEByZXR1cm4ge09iamVjdH0gY2VudGVyIGNvbnRhaW5zIGB4YCBhbmQgYHlgIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gZ2V0Q2VudGVyKHBvaW50ZXJzKSB7XG4gICAgdmFyIHBvaW50ZXJzTGVuZ3RoID0gcG9pbnRlcnMubGVuZ3RoO1xuXG4gICAgLy8gbm8gbmVlZCB0byBsb29wIHdoZW4gb25seSBvbmUgdG91Y2hcbiAgICBpZiAocG9pbnRlcnNMZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHJvdW5kKHBvaW50ZXJzWzBdLmNsaWVudFgpLFxuICAgICAgICAgICAgeTogcm91bmQocG9pbnRlcnNbMF0uY2xpZW50WSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgeCA9IDAsIHkgPSAwLCBpID0gMDtcbiAgICB3aGlsZSAoaSA8IHBvaW50ZXJzTGVuZ3RoKSB7XG4gICAgICAgIHggKz0gcG9pbnRlcnNbaV0uY2xpZW50WDtcbiAgICAgICAgeSArPSBwb2ludGVyc1tpXS5jbGllbnRZO1xuICAgICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcm91bmQoeCAvIHBvaW50ZXJzTGVuZ3RoKSxcbiAgICAgICAgeTogcm91bmQoeSAvIHBvaW50ZXJzTGVuZ3RoKVxuICAgIH07XG59XG5cbi8qKlxuICogY2FsY3VsYXRlIHRoZSB2ZWxvY2l0eSBiZXR3ZWVuIHR3byBwb2ludHMuIHVuaXQgaXMgaW4gcHggcGVyIG1zLlxuICogQHBhcmFtIHtOdW1iZXJ9IGRlbHRhVGltZVxuICogQHBhcmFtIHtOdW1iZXJ9IHhcbiAqIEBwYXJhbSB7TnVtYmVyfSB5XG4gKiBAcmV0dXJuIHtPYmplY3R9IHZlbG9jaXR5IGB4YCBhbmQgYHlgXG4gKi9cbmZ1bmN0aW9uIGdldFZlbG9jaXR5KGRlbHRhVGltZSwgeCwgeSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggLyBkZWx0YVRpbWUgfHwgMCxcbiAgICAgICAgeTogeSAvIGRlbHRhVGltZSB8fCAwXG4gICAgfTtcbn1cblxuLyoqXG4gKiBnZXQgdGhlIGRpcmVjdGlvbiBiZXR3ZWVuIHR3byBwb2ludHNcbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiBAcGFyYW0ge051bWJlcn0geVxuICogQHJldHVybiB7TnVtYmVyfSBkaXJlY3Rpb25cbiAqL1xuZnVuY3Rpb24gZ2V0RGlyZWN0aW9uKHgsIHkpIHtcbiAgICBpZiAoeCA9PT0geSkge1xuICAgICAgICByZXR1cm4gRElSRUNUSU9OX05PTkU7XG4gICAgfVxuXG4gICAgaWYgKGFicyh4KSA+PSBhYnMoeSkpIHtcbiAgICAgICAgcmV0dXJuIHggPCAwID8gRElSRUNUSU9OX0xFRlQgOiBESVJFQ1RJT05fUklHSFQ7XG4gICAgfVxuICAgIHJldHVybiB5IDwgMCA/IERJUkVDVElPTl9VUCA6IERJUkVDVElPTl9ET1dOO1xufVxuXG4vKipcbiAqIGNhbGN1bGF0ZSB0aGUgYWJzb2x1dGUgZGlzdGFuY2UgYmV0d2VlbiB0d28gcG9pbnRzXG4gKiBAcGFyYW0ge09iamVjdH0gcDEge3gsIHl9XG4gKiBAcGFyYW0ge09iamVjdH0gcDIge3gsIHl9XG4gKiBAcGFyYW0ge0FycmF5fSBbcHJvcHNdIGNvbnRhaW5pbmcgeCBhbmQgeSBrZXlzXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IGRpc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIGdldERpc3RhbmNlKHAxLCBwMiwgcHJvcHMpIHtcbiAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgIHByb3BzID0gUFJPUFNfWFk7XG4gICAgfVxuICAgIHZhciB4ID0gcDJbcHJvcHNbMF1dIC0gcDFbcHJvcHNbMF1dLFxuICAgICAgICB5ID0gcDJbcHJvcHNbMV1dIC0gcDFbcHJvcHNbMV1dO1xuXG4gICAgcmV0dXJuIE1hdGguc3FydCgoeCAqIHgpICsgKHkgKiB5KSk7XG59XG5cbi8qKlxuICogY2FsY3VsYXRlIHRoZSBhbmdsZSBiZXR3ZWVuIHR3byBjb29yZGluYXRlc1xuICogQHBhcmFtIHtPYmplY3R9IHAxXG4gKiBAcGFyYW0ge09iamVjdH0gcDJcbiAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wc10gY29udGFpbmluZyB4IGFuZCB5IGtleXNcbiAqIEByZXR1cm4ge051bWJlcn0gYW5nbGVcbiAqL1xuZnVuY3Rpb24gZ2V0QW5nbGUocDEsIHAyLCBwcm9wcykge1xuICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgcHJvcHMgPSBQUk9QU19YWTtcbiAgICB9XG4gICAgdmFyIHggPSBwMltwcm9wc1swXV0gLSBwMVtwcm9wc1swXV0sXG4gICAgICAgIHkgPSBwMltwcm9wc1sxXV0gLSBwMVtwcm9wc1sxXV07XG4gICAgcmV0dXJuIE1hdGguYXRhbjIoeSwgeCkgKiAxODAgLyBNYXRoLlBJO1xufVxuXG4vKipcbiAqIGNhbGN1bGF0ZSB0aGUgcm90YXRpb24gZGVncmVlcyBiZXR3ZWVuIHR3byBwb2ludGVyc2V0c1xuICogQHBhcmFtIHtBcnJheX0gc3RhcnQgYXJyYXkgb2YgcG9pbnRlcnNcbiAqIEBwYXJhbSB7QXJyYXl9IGVuZCBhcnJheSBvZiBwb2ludGVyc1xuICogQHJldHVybiB7TnVtYmVyfSByb3RhdGlvblxuICovXG5mdW5jdGlvbiBnZXRSb3RhdGlvbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIGdldEFuZ2xlKGVuZFsxXSwgZW5kWzBdLCBQUk9QU19DTElFTlRfWFkpICsgZ2V0QW5nbGUoc3RhcnRbMV0sIHN0YXJ0WzBdLCBQUk9QU19DTElFTlRfWFkpO1xufVxuXG4vKipcbiAqIGNhbGN1bGF0ZSB0aGUgc2NhbGUgZmFjdG9yIGJldHdlZW4gdHdvIHBvaW50ZXJzZXRzXG4gKiBubyBzY2FsZSBpcyAxLCBhbmQgZ29lcyBkb3duIHRvIDAgd2hlbiBwaW5jaGVkIHRvZ2V0aGVyLCBhbmQgYmlnZ2VyIHdoZW4gcGluY2hlZCBvdXRcbiAqIEBwYXJhbSB7QXJyYXl9IHN0YXJ0IGFycmF5IG9mIHBvaW50ZXJzXG4gKiBAcGFyYW0ge0FycmF5fSBlbmQgYXJyYXkgb2YgcG9pbnRlcnNcbiAqIEByZXR1cm4ge051bWJlcn0gc2NhbGVcbiAqL1xuZnVuY3Rpb24gZ2V0U2NhbGUoc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZShlbmRbMF0sIGVuZFsxXSwgUFJPUFNfQ0xJRU5UX1hZKSAvIGdldERpc3RhbmNlKHN0YXJ0WzBdLCBzdGFydFsxXSwgUFJPUFNfQ0xJRU5UX1hZKTtcbn1cblxudmFyIE1PVVNFX0lOUFVUX01BUCA9IHtcbiAgICBtb3VzZWRvd246IElOUFVUX1NUQVJULFxuICAgIG1vdXNlbW92ZTogSU5QVVRfTU9WRSxcbiAgICBtb3VzZXVwOiBJTlBVVF9FTkRcbn07XG5cbnZhciBNT1VTRV9FTEVNRU5UX0VWRU5UUyA9ICdtb3VzZWRvd24nO1xudmFyIE1PVVNFX1dJTkRPV19FVkVOVFMgPSAnbW91c2Vtb3ZlIG1vdXNldXAnO1xuXG4vKipcbiAqIE1vdXNlIGV2ZW50cyBpbnB1dFxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBJbnB1dFxuICovXG5mdW5jdGlvbiBNb3VzZUlucHV0KCkge1xuICAgIHRoaXMuZXZFbCA9IE1PVVNFX0VMRU1FTlRfRVZFTlRTO1xuICAgIHRoaXMuZXZXaW4gPSBNT1VTRV9XSU5ET1dfRVZFTlRTO1xuXG4gICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7IC8vIG1vdXNlZG93biBzdGF0ZVxuXG4gICAgSW5wdXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuaW5oZXJpdChNb3VzZUlucHV0LCBJbnB1dCwge1xuICAgIC8qKlxuICAgICAqIGhhbmRsZSBtb3VzZSBldmVudHNcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZcbiAgICAgKi9cbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBNRWhhbmRsZXIoZXYpIHtcbiAgICAgICAgdmFyIGV2ZW50VHlwZSA9IE1PVVNFX0lOUFVUX01BUFtldi50eXBlXTtcblxuICAgICAgICAvLyBvbiBzdGFydCB3ZSB3YW50IHRvIGhhdmUgdGhlIGxlZnQgbW91c2UgYnV0dG9uIGRvd25cbiAgICAgICAgaWYgKGV2ZW50VHlwZSAmIElOUFVUX1NUQVJUICYmIGV2LmJ1dHRvbiA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudFR5cGUgJiBJTlBVVF9NT1ZFICYmIGV2LndoaWNoICE9PSAxKSB7XG4gICAgICAgICAgICBldmVudFR5cGUgPSBJTlBVVF9FTkQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBtb3VzZSBtdXN0IGJlIGRvd25cbiAgICAgICAgaWYgKCF0aGlzLnByZXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudFR5cGUgJiBJTlBVVF9FTkQpIHtcbiAgICAgICAgICAgIHRoaXMucHJlc3NlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLm1hbmFnZXIsIGV2ZW50VHlwZSwge1xuICAgICAgICAgICAgcG9pbnRlcnM6IFtldl0sXG4gICAgICAgICAgICBjaGFuZ2VkUG9pbnRlcnM6IFtldl0sXG4gICAgICAgICAgICBwb2ludGVyVHlwZTogSU5QVVRfVFlQRV9NT1VTRSxcbiAgICAgICAgICAgIHNyY0V2ZW50OiBldlxuICAgICAgICB9KTtcbiAgICB9XG59KTtcblxudmFyIFBPSU5URVJfSU5QVVRfTUFQID0ge1xuICAgIHBvaW50ZXJkb3duOiBJTlBVVF9TVEFSVCxcbiAgICBwb2ludGVybW92ZTogSU5QVVRfTU9WRSxcbiAgICBwb2ludGVydXA6IElOUFVUX0VORCxcbiAgICBwb2ludGVyY2FuY2VsOiBJTlBVVF9DQU5DRUwsXG4gICAgcG9pbnRlcm91dDogSU5QVVRfQ0FOQ0VMXG59O1xuXG4vLyBpbiBJRTEwIHRoZSBwb2ludGVyIHR5cGVzIGlzIGRlZmluZWQgYXMgYW4gZW51bVxudmFyIElFMTBfUE9JTlRFUl9UWVBFX0VOVU0gPSB7XG4gICAgMjogSU5QVVRfVFlQRV9UT1VDSCxcbiAgICAzOiBJTlBVVF9UWVBFX1BFTixcbiAgICA0OiBJTlBVVF9UWVBFX01PVVNFLFxuICAgIDU6IElOUFVUX1RZUEVfS0lORUNUIC8vIHNlZSBodHRwczovL3R3aXR0ZXIuY29tL2phY29icm9zc2kvc3RhdHVzLzQ4MDU5NjQzODQ4OTg5MDgxNlxufTtcblxudmFyIFBPSU5URVJfRUxFTUVOVF9FVkVOVFMgPSAncG9pbnRlcmRvd24nO1xudmFyIFBPSU5URVJfV0lORE9XX0VWRU5UUyA9ICdwb2ludGVybW92ZSBwb2ludGVydXAgcG9pbnRlcmNhbmNlbCc7XG5cbi8vIElFMTAgaGFzIHByZWZpeGVkIHN1cHBvcnQsIGFuZCBjYXNlLXNlbnNpdGl2ZVxuaWYgKHdpbmRvdy5NU1BvaW50ZXJFdmVudCAmJiAhd2luZG93LlBvaW50ZXJFdmVudCkge1xuICAgIFBPSU5URVJfRUxFTUVOVF9FVkVOVFMgPSAnTVNQb2ludGVyRG93bic7XG4gICAgUE9JTlRFUl9XSU5ET1dfRVZFTlRTID0gJ01TUG9pbnRlck1vdmUgTVNQb2ludGVyVXAgTVNQb2ludGVyQ2FuY2VsJztcbn1cblxuLyoqXG4gKiBQb2ludGVyIGV2ZW50cyBpbnB1dFxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBJbnB1dFxuICovXG5mdW5jdGlvbiBQb2ludGVyRXZlbnRJbnB1dCgpIHtcbiAgICB0aGlzLmV2RWwgPSBQT0lOVEVSX0VMRU1FTlRfRVZFTlRTO1xuICAgIHRoaXMuZXZXaW4gPSBQT0lOVEVSX1dJTkRPV19FVkVOVFM7XG5cbiAgICBJbnB1dC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgdGhpcy5zdG9yZSA9ICh0aGlzLm1hbmFnZXIuc2Vzc2lvbi5wb2ludGVyRXZlbnRzID0gW10pO1xufVxuXG5pbmhlcml0KFBvaW50ZXJFdmVudElucHV0LCBJbnB1dCwge1xuICAgIC8qKlxuICAgICAqIGhhbmRsZSBtb3VzZSBldmVudHNcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZcbiAgICAgKi9cbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBQRWhhbmRsZXIoZXYpIHtcbiAgICAgICAgdmFyIHN0b3JlID0gdGhpcy5zdG9yZTtcbiAgICAgICAgdmFyIHJlbW92ZVBvaW50ZXIgPSBmYWxzZTtcblxuICAgICAgICB2YXIgZXZlbnRUeXBlTm9ybWFsaXplZCA9IGV2LnR5cGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdtcycsICcnKTtcbiAgICAgICAgdmFyIGV2ZW50VHlwZSA9IFBPSU5URVJfSU5QVVRfTUFQW2V2ZW50VHlwZU5vcm1hbGl6ZWRdO1xuICAgICAgICB2YXIgcG9pbnRlclR5cGUgPSBJRTEwX1BPSU5URVJfVFlQRV9FTlVNW2V2LnBvaW50ZXJUeXBlXSB8fCBldi5wb2ludGVyVHlwZTtcblxuICAgICAgICB2YXIgaXNUb3VjaCA9IChwb2ludGVyVHlwZSA9PSBJTlBVVF9UWVBFX1RPVUNIKTtcblxuICAgICAgICAvLyBnZXQgaW5kZXggb2YgdGhlIGV2ZW50IGluIHRoZSBzdG9yZVxuICAgICAgICB2YXIgc3RvcmVJbmRleCA9IGluQXJyYXkoc3RvcmUsIGV2LnBvaW50ZXJJZCwgJ3BvaW50ZXJJZCcpO1xuXG4gICAgICAgIC8vIHN0YXJ0IGFuZCBtb3VzZSBtdXN0IGJlIGRvd25cbiAgICAgICAgaWYgKGV2ZW50VHlwZSAmIElOUFVUX1NUQVJUICYmIChldi5idXR0b24gPT09IDAgfHwgaXNUb3VjaCkpIHtcbiAgICAgICAgICAgIGlmIChzdG9yZUluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgIHN0b3JlLnB1c2goZXYpO1xuICAgICAgICAgICAgICAgIHN0b3JlSW5kZXggPSBzdG9yZS5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSAmIChJTlBVVF9FTkQgfCBJTlBVVF9DQU5DRUwpKSB7XG4gICAgICAgICAgICByZW1vdmVQb2ludGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGl0IG5vdCBmb3VuZCwgc28gdGhlIHBvaW50ZXIgaGFzbid0IGJlZW4gZG93biAoc28gaXQncyBwcm9iYWJseSBhIGhvdmVyKVxuICAgICAgICBpZiAoc3RvcmVJbmRleCA8IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgZXZlbnQgaW4gdGhlIHN0b3JlXG4gICAgICAgIHN0b3JlW3N0b3JlSW5kZXhdID0gZXY7XG5cbiAgICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLm1hbmFnZXIsIGV2ZW50VHlwZSwge1xuICAgICAgICAgICAgcG9pbnRlcnM6IHN0b3JlLFxuICAgICAgICAgICAgY2hhbmdlZFBvaW50ZXJzOiBbZXZdLFxuICAgICAgICAgICAgcG9pbnRlclR5cGU6IHBvaW50ZXJUeXBlLFxuICAgICAgICAgICAgc3JjRXZlbnQ6IGV2XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZW1vdmVQb2ludGVyKSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgZnJvbSB0aGUgc3RvcmVcbiAgICAgICAgICAgIHN0b3JlLnNwbGljZShzdG9yZUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cbn0pO1xuXG52YXIgU0lOR0xFX1RPVUNIX0lOUFVUX01BUCA9IHtcbiAgICB0b3VjaHN0YXJ0OiBJTlBVVF9TVEFSVCxcbiAgICB0b3VjaG1vdmU6IElOUFVUX01PVkUsXG4gICAgdG91Y2hlbmQ6IElOUFVUX0VORCxcbiAgICB0b3VjaGNhbmNlbDogSU5QVVRfQ0FOQ0VMXG59O1xuXG52YXIgU0lOR0xFX1RPVUNIX1RBUkdFVF9FVkVOVFMgPSAndG91Y2hzdGFydCc7XG52YXIgU0lOR0xFX1RPVUNIX1dJTkRPV19FVkVOVFMgPSAndG91Y2hzdGFydCB0b3VjaG1vdmUgdG91Y2hlbmQgdG91Y2hjYW5jZWwnO1xuXG4vKipcbiAqIFRvdWNoIGV2ZW50cyBpbnB1dFxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBJbnB1dFxuICovXG5mdW5jdGlvbiBTaW5nbGVUb3VjaElucHV0KCkge1xuICAgIHRoaXMuZXZUYXJnZXQgPSBTSU5HTEVfVE9VQ0hfVEFSR0VUX0VWRU5UUztcbiAgICB0aGlzLmV2V2luID0gU0lOR0xFX1RPVUNIX1dJTkRPV19FVkVOVFM7XG4gICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG5cbiAgICBJbnB1dC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5pbmhlcml0KFNpbmdsZVRvdWNoSW5wdXQsIElucHV0LCB7XG4gICAgaGFuZGxlcjogZnVuY3Rpb24gVEVoYW5kbGVyKGV2KSB7XG4gICAgICAgIHZhciB0eXBlID0gU0lOR0xFX1RPVUNIX0lOUFVUX01BUFtldi50eXBlXTtcblxuICAgICAgICAvLyBzaG91bGQgd2UgaGFuZGxlIHRoZSB0b3VjaCBldmVudHM/XG4gICAgICAgIGlmICh0eXBlID09PSBJTlBVVF9TVEFSVCkge1xuICAgICAgICAgICAgdGhpcy5zdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG91Y2hlcyA9IG5vcm1hbGl6ZVNpbmdsZVRvdWNoZXMuY2FsbCh0aGlzLCBldiwgdHlwZSk7XG5cbiAgICAgICAgLy8gd2hlbiBkb25lLCByZXNldCB0aGUgc3RhcnRlZCBzdGF0ZVxuICAgICAgICBpZiAodHlwZSAmIChJTlBVVF9FTkQgfCBJTlBVVF9DQU5DRUwpICYmIHRvdWNoZXNbMF0ubGVuZ3RoIC0gdG91Y2hlc1sxXS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLm1hbmFnZXIsIHR5cGUsIHtcbiAgICAgICAgICAgIHBvaW50ZXJzOiB0b3VjaGVzWzBdLFxuICAgICAgICAgICAgY2hhbmdlZFBvaW50ZXJzOiB0b3VjaGVzWzFdLFxuICAgICAgICAgICAgcG9pbnRlclR5cGU6IElOUFVUX1RZUEVfVE9VQ0gsXG4gICAgICAgICAgICBzcmNFdmVudDogZXZcbiAgICAgICAgfSk7XG4gICAgfVxufSk7XG5cbi8qKlxuICogQHRoaXMge1RvdWNoSW5wdXR9XG4gKiBAcGFyYW0ge09iamVjdH0gZXZcbiAqIEBwYXJhbSB7TnVtYmVyfSB0eXBlIGZsYWdcbiAqIEByZXR1cm5zIHt1bmRlZmluZWR8QXJyYXl9IFthbGwsIGNoYW5nZWRdXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNpbmdsZVRvdWNoZXMoZXYsIHR5cGUpIHtcbiAgICB2YXIgYWxsID0gdG9BcnJheShldi50b3VjaGVzKTtcbiAgICB2YXIgY2hhbmdlZCA9IHRvQXJyYXkoZXYuY2hhbmdlZFRvdWNoZXMpO1xuXG4gICAgaWYgKHR5cGUgJiAoSU5QVVRfRU5EIHwgSU5QVVRfQ0FOQ0VMKSkge1xuICAgICAgICBhbGwgPSB1bmlxdWVBcnJheShhbGwuY29uY2F0KGNoYW5nZWQpLCAnaWRlbnRpZmllcicsIHRydWUpO1xuICAgIH1cblxuICAgIHJldHVybiBbYWxsLCBjaGFuZ2VkXTtcbn1cblxudmFyIFRPVUNIX0lOUFVUX01BUCA9IHtcbiAgICB0b3VjaHN0YXJ0OiBJTlBVVF9TVEFSVCxcbiAgICB0b3VjaG1vdmU6IElOUFVUX01PVkUsXG4gICAgdG91Y2hlbmQ6IElOUFVUX0VORCxcbiAgICB0b3VjaGNhbmNlbDogSU5QVVRfQ0FOQ0VMXG59O1xuXG52YXIgVE9VQ0hfVEFSR0VUX0VWRU5UUyA9ICd0b3VjaHN0YXJ0IHRvdWNobW92ZSB0b3VjaGVuZCB0b3VjaGNhbmNlbCc7XG5cbi8qKlxuICogTXVsdGktdXNlciB0b3VjaCBldmVudHMgaW5wdXRcbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMgSW5wdXRcbiAqL1xuZnVuY3Rpb24gVG91Y2hJbnB1dCgpIHtcbiAgICB0aGlzLmV2VGFyZ2V0ID0gVE9VQ0hfVEFSR0VUX0VWRU5UUztcbiAgICB0aGlzLnRhcmdldElkcyA9IHt9O1xuXG4gICAgSW5wdXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuaW5oZXJpdChUb3VjaElucHV0LCBJbnB1dCwge1xuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIE1URWhhbmRsZXIoZXYpIHtcbiAgICAgICAgdmFyIHR5cGUgPSBUT1VDSF9JTlBVVF9NQVBbZXYudHlwZV07XG4gICAgICAgIHZhciB0b3VjaGVzID0gZ2V0VG91Y2hlcy5jYWxsKHRoaXMsIGV2LCB0eXBlKTtcbiAgICAgICAgaWYgKCF0b3VjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbGxiYWNrKHRoaXMubWFuYWdlciwgdHlwZSwge1xuICAgICAgICAgICAgcG9pbnRlcnM6IHRvdWNoZXNbMF0sXG4gICAgICAgICAgICBjaGFuZ2VkUG9pbnRlcnM6IHRvdWNoZXNbMV0sXG4gICAgICAgICAgICBwb2ludGVyVHlwZTogSU5QVVRfVFlQRV9UT1VDSCxcbiAgICAgICAgICAgIHNyY0V2ZW50OiBldlxuICAgICAgICB9KTtcbiAgICB9XG59KTtcblxuLyoqXG4gKiBAdGhpcyB7VG91Y2hJbnB1dH1cbiAqIEBwYXJhbSB7T2JqZWN0fSBldlxuICogQHBhcmFtIHtOdW1iZXJ9IHR5cGUgZmxhZ1xuICogQHJldHVybnMge3VuZGVmaW5lZHxBcnJheX0gW2FsbCwgY2hhbmdlZF1cbiAqL1xuZnVuY3Rpb24gZ2V0VG91Y2hlcyhldiwgdHlwZSkge1xuICAgIHZhciBhbGxUb3VjaGVzID0gdG9BcnJheShldi50b3VjaGVzKTtcbiAgICB2YXIgdGFyZ2V0SWRzID0gdGhpcy50YXJnZXRJZHM7XG5cbiAgICAvLyB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIHRvdWNoLCB0aGUgcHJvY2VzcyBjYW4gYmUgc2ltcGxpZmllZFxuICAgIGlmICh0eXBlICYgKElOUFVUX1NUQVJUIHwgSU5QVVRfTU9WRSkgJiYgYWxsVG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdGFyZ2V0SWRzW2FsbFRvdWNoZXNbMF0uaWRlbnRpZmllcl0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gW2FsbFRvdWNoZXMsIGFsbFRvdWNoZXNdO1xuICAgIH1cblxuICAgIHZhciBpLFxuICAgICAgICB0YXJnZXRUb3VjaGVzLFxuICAgICAgICBjaGFuZ2VkVG91Y2hlcyA9IHRvQXJyYXkoZXYuY2hhbmdlZFRvdWNoZXMpLFxuICAgICAgICBjaGFuZ2VkVGFyZ2V0VG91Y2hlcyA9IFtdLFxuICAgICAgICB0YXJnZXQgPSB0aGlzLnRhcmdldDtcblxuICAgIC8vIGdldCB0YXJnZXQgdG91Y2hlcyBmcm9tIHRvdWNoZXNcbiAgICB0YXJnZXRUb3VjaGVzID0gYWxsVG91Y2hlcy5maWx0ZXIoZnVuY3Rpb24odG91Y2gpIHtcbiAgICAgICAgcmV0dXJuIGhhc1BhcmVudCh0b3VjaC50YXJnZXQsIHRhcmdldCk7XG4gICAgfSk7XG5cbiAgICAvLyBjb2xsZWN0IHRvdWNoZXNcbiAgICBpZiAodHlwZSA9PT0gSU5QVVRfU1RBUlQpIHtcbiAgICAgICAgaSA9IDA7XG4gICAgICAgIHdoaWxlIChpIDwgdGFyZ2V0VG91Y2hlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRhcmdldElkc1t0YXJnZXRUb3VjaGVzW2ldLmlkZW50aWZpZXJdID0gdHJ1ZTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGZpbHRlciBjaGFuZ2VkIHRvdWNoZXMgdG8gb25seSBjb250YWluIHRvdWNoZXMgdGhhdCBleGlzdCBpbiB0aGUgY29sbGVjdGVkIHRhcmdldCBpZHNcbiAgICBpID0gMDtcbiAgICB3aGlsZSAoaSA8IGNoYW5nZWRUb3VjaGVzLmxlbmd0aCkge1xuICAgICAgICBpZiAodGFyZ2V0SWRzW2NoYW5nZWRUb3VjaGVzW2ldLmlkZW50aWZpZXJdKSB7XG4gICAgICAgICAgICBjaGFuZ2VkVGFyZ2V0VG91Y2hlcy5wdXNoKGNoYW5nZWRUb3VjaGVzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNsZWFudXAgcmVtb3ZlZCB0b3VjaGVzXG4gICAgICAgIGlmICh0eXBlICYgKElOUFVUX0VORCB8IElOUFVUX0NBTkNFTCkpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXRJZHNbY2hhbmdlZFRvdWNoZXNbaV0uaWRlbnRpZmllcl07XG4gICAgICAgIH1cbiAgICAgICAgaSsrO1xuICAgIH1cblxuICAgIGlmICghY2hhbmdlZFRhcmdldFRvdWNoZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgICAvLyBtZXJnZSB0YXJnZXRUb3VjaGVzIHdpdGggY2hhbmdlZFRhcmdldFRvdWNoZXMgc28gaXQgY29udGFpbnMgQUxMIHRvdWNoZXMsIGluY2x1ZGluZyAnZW5kJyBhbmQgJ2NhbmNlbCdcbiAgICAgICAgdW5pcXVlQXJyYXkodGFyZ2V0VG91Y2hlcy5jb25jYXQoY2hhbmdlZFRhcmdldFRvdWNoZXMpLCAnaWRlbnRpZmllcicsIHRydWUpLFxuICAgICAgICBjaGFuZ2VkVGFyZ2V0VG91Y2hlc1xuICAgIF07XG59XG5cbi8qKlxuICogQ29tYmluZWQgdG91Y2ggYW5kIG1vdXNlIGlucHV0XG4gKlxuICogVG91Y2ggaGFzIGEgaGlnaGVyIHByaW9yaXR5IHRoZW4gbW91c2UsIGFuZCB3aGlsZSB0b3VjaGluZyBubyBtb3VzZSBldmVudHMgYXJlIGFsbG93ZWQuXG4gKiBUaGlzIGJlY2F1c2UgdG91Y2ggZGV2aWNlcyBhbHNvIGVtaXQgbW91c2UgZXZlbnRzIHdoaWxlIGRvaW5nIGEgdG91Y2guXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBJbnB1dFxuICovXG5cbnZhciBERURVUF9USU1FT1VUID0gMjUwMDtcbnZhciBERURVUF9ESVNUQU5DRSA9IDI1O1xuXG5mdW5jdGlvbiBUb3VjaE1vdXNlSW5wdXQoKSB7XG4gICAgSW5wdXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHZhciBoYW5kbGVyID0gYmluZEZuKHRoaXMuaGFuZGxlciwgdGhpcyk7XG4gICAgdGhpcy50b3VjaCA9IG5ldyBUb3VjaElucHV0KHRoaXMubWFuYWdlciwgaGFuZGxlcik7XG4gICAgdGhpcy5tb3VzZSA9IG5ldyBNb3VzZUlucHV0KHRoaXMubWFuYWdlciwgaGFuZGxlcik7XG5cbiAgICB0aGlzLnByaW1hcnlUb3VjaCA9IG51bGw7XG4gICAgdGhpcy5sYXN0VG91Y2hlcyA9IFtdO1xufVxuXG5pbmhlcml0KFRvdWNoTW91c2VJbnB1dCwgSW5wdXQsIHtcbiAgICAvKipcbiAgICAgKiBoYW5kbGUgbW91c2UgYW5kIHRvdWNoIGV2ZW50c1xuICAgICAqIEBwYXJhbSB7SGFtbWVyfSBtYW5hZ2VyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGlucHV0RXZlbnRcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gaW5wdXREYXRhXG4gICAgICovXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gVE1FaGFuZGxlcihtYW5hZ2VyLCBpbnB1dEV2ZW50LCBpbnB1dERhdGEpIHtcbiAgICAgICAgdmFyIGlzVG91Y2ggPSAoaW5wdXREYXRhLnBvaW50ZXJUeXBlID09IElOUFVUX1RZUEVfVE9VQ0gpLFxuICAgICAgICAgICAgaXNNb3VzZSA9IChpbnB1dERhdGEucG9pbnRlclR5cGUgPT0gSU5QVVRfVFlQRV9NT1VTRSk7XG5cbiAgICAgICAgaWYgKGlzTW91c2UgJiYgaW5wdXREYXRhLnNvdXJjZUNhcGFiaWxpdGllcyAmJiBpbnB1dERhdGEuc291cmNlQ2FwYWJpbGl0aWVzLmZpcmVzVG91Y2hFdmVudHMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdoZW4gd2UncmUgaW4gYSB0b3VjaCBldmVudCwgcmVjb3JkIHRvdWNoZXMgdG8gIGRlLWR1cGUgc3ludGhldGljIG1vdXNlIGV2ZW50XG4gICAgICAgIGlmIChpc1RvdWNoKSB7XG4gICAgICAgICAgICByZWNvcmRUb3VjaGVzLmNhbGwodGhpcywgaW5wdXRFdmVudCwgaW5wdXREYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc01vdXNlICYmIGlzU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBpbnB1dERhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbGxiYWNrKG1hbmFnZXIsIGlucHV0RXZlbnQsIGlucHV0RGF0YSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHJlbW92ZSB0aGUgZXZlbnQgbGlzdGVuZXJzXG4gICAgICovXG4gICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy50b3VjaC5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMubW91c2UuZGVzdHJveSgpO1xuICAgIH1cbn0pO1xuXG5mdW5jdGlvbiByZWNvcmRUb3VjaGVzKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7XG4gICAgaWYgKGV2ZW50VHlwZSAmIElOUFVUX1NUQVJUKSB7XG4gICAgICAgIHRoaXMucHJpbWFyeVRvdWNoID0gZXZlbnREYXRhLmNoYW5nZWRQb2ludGVyc1swXS5pZGVudGlmaWVyO1xuICAgICAgICBzZXRMYXN0VG91Y2guY2FsbCh0aGlzLCBldmVudERhdGEpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlICYgKElOUFVUX0VORCB8IElOUFVUX0NBTkNFTCkpIHtcbiAgICAgICAgc2V0TGFzdFRvdWNoLmNhbGwodGhpcywgZXZlbnREYXRhKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNldExhc3RUb3VjaChldmVudERhdGEpIHtcbiAgICB2YXIgdG91Y2ggPSBldmVudERhdGEuY2hhbmdlZFBvaW50ZXJzWzBdO1xuXG4gICAgaWYgKHRvdWNoLmlkZW50aWZpZXIgPT09IHRoaXMucHJpbWFyeVRvdWNoKSB7XG4gICAgICAgIHZhciBsYXN0VG91Y2ggPSB7eDogdG91Y2guY2xpZW50WCwgeTogdG91Y2guY2xpZW50WX07XG4gICAgICAgIHRoaXMubGFzdFRvdWNoZXMucHVzaChsYXN0VG91Y2gpO1xuICAgICAgICB2YXIgbHRzID0gdGhpcy5sYXN0VG91Y2hlcztcbiAgICAgICAgdmFyIHJlbW92ZUxhc3RUb3VjaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGkgPSBsdHMuaW5kZXhPZihsYXN0VG91Y2gpO1xuICAgICAgICAgICAgaWYgKGkgPiAtMSkge1xuICAgICAgICAgICAgICAgIGx0cy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHNldFRpbWVvdXQocmVtb3ZlTGFzdFRvdWNoLCBERURVUF9USU1FT1VUKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzU3ludGhldGljRXZlbnQoZXZlbnREYXRhKSB7XG4gICAgdmFyIHggPSBldmVudERhdGEuc3JjRXZlbnQuY2xpZW50WCwgeSA9IGV2ZW50RGF0YS5zcmNFdmVudC5jbGllbnRZO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sYXN0VG91Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdCA9IHRoaXMubGFzdFRvdWNoZXNbaV07XG4gICAgICAgIHZhciBkeCA9IE1hdGguYWJzKHggLSB0LngpLCBkeSA9IE1hdGguYWJzKHkgLSB0LnkpO1xuICAgICAgICBpZiAoZHggPD0gREVEVVBfRElTVEFOQ0UgJiYgZHkgPD0gREVEVVBfRElTVEFOQ0UpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxudmFyIFBSRUZJWEVEX1RPVUNIX0FDVElPTiA9IHByZWZpeGVkKFRFU1RfRUxFTUVOVC5zdHlsZSwgJ3RvdWNoQWN0aW9uJyk7XG52YXIgTkFUSVZFX1RPVUNIX0FDVElPTiA9IFBSRUZJWEVEX1RPVUNIX0FDVElPTiAhPT0gdW5kZWZpbmVkO1xuXG4vLyBtYWdpY2FsIHRvdWNoQWN0aW9uIHZhbHVlXG52YXIgVE9VQ0hfQUNUSU9OX0NPTVBVVEUgPSAnY29tcHV0ZSc7XG52YXIgVE9VQ0hfQUNUSU9OX0FVVE8gPSAnYXV0byc7XG52YXIgVE9VQ0hfQUNUSU9OX01BTklQVUxBVElPTiA9ICdtYW5pcHVsYXRpb24nOyAvLyBub3QgaW1wbGVtZW50ZWRcbnZhciBUT1VDSF9BQ1RJT05fTk9ORSA9ICdub25lJztcbnZhciBUT1VDSF9BQ1RJT05fUEFOX1ggPSAncGFuLXgnO1xudmFyIFRPVUNIX0FDVElPTl9QQU5fWSA9ICdwYW4teSc7XG52YXIgVE9VQ0hfQUNUSU9OX01BUCA9IGdldFRvdWNoQWN0aW9uUHJvcHMoKTtcblxuLyoqXG4gKiBUb3VjaCBBY3Rpb25cbiAqIHNldHMgdGhlIHRvdWNoQWN0aW9uIHByb3BlcnR5IG9yIHVzZXMgdGhlIGpzIGFsdGVybmF0aXZlXG4gKiBAcGFyYW0ge01hbmFnZXJ9IG1hbmFnZXJcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIFRvdWNoQWN0aW9uKG1hbmFnZXIsIHZhbHVlKSB7XG4gICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICB0aGlzLnNldCh2YWx1ZSk7XG59XG5cblRvdWNoQWN0aW9uLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBzZXQgdGhlIHRvdWNoQWN0aW9uIHZhbHVlIG9uIHRoZSBlbGVtZW50IG9yIGVuYWJsZSB0aGUgcG9seWZpbGxcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAgICAgKi9cbiAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIC8vIGZpbmQgb3V0IHRoZSB0b3VjaC1hY3Rpb24gYnkgdGhlIGV2ZW50IGhhbmRsZXJzXG4gICAgICAgIGlmICh2YWx1ZSA9PSBUT1VDSF9BQ1RJT05fQ09NUFVURSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmNvbXB1dGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChOQVRJVkVfVE9VQ0hfQUNUSU9OICYmIHRoaXMubWFuYWdlci5lbGVtZW50LnN0eWxlICYmIFRPVUNIX0FDVElPTl9NQVBbdmFsdWVdKSB7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZXIuZWxlbWVudC5zdHlsZVtQUkVGSVhFRF9UT1VDSF9BQ1RJT05dID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3Rpb25zID0gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGp1c3QgcmUtc2V0IHRoZSB0b3VjaEFjdGlvbiB2YWx1ZVxuICAgICAqL1xuICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuc2V0KHRoaXMubWFuYWdlci5vcHRpb25zLnRvdWNoQWN0aW9uKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogY29tcHV0ZSB0aGUgdmFsdWUgZm9yIHRoZSB0b3VjaEFjdGlvbiBwcm9wZXJ0eSBiYXNlZCBvbiB0aGUgcmVjb2duaXplcidzIHNldHRpbmdzXG4gICAgICogQHJldHVybnMge1N0cmluZ30gdmFsdWVcbiAgICAgKi9cbiAgICBjb21wdXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFjdGlvbnMgPSBbXTtcbiAgICAgICAgZWFjaCh0aGlzLm1hbmFnZXIucmVjb2duaXplcnMsIGZ1bmN0aW9uKHJlY29nbml6ZXIpIHtcbiAgICAgICAgICAgIGlmIChib29sT3JGbihyZWNvZ25pemVyLm9wdGlvbnMuZW5hYmxlLCBbcmVjb2duaXplcl0pKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9ucyA9IGFjdGlvbnMuY29uY2F0KHJlY29nbml6ZXIuZ2V0VG91Y2hBY3Rpb24oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2xlYW5Ub3VjaEFjdGlvbnMoYWN0aW9ucy5qb2luKCcgJykpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gZWFjaCBpbnB1dCBjeWNsZSBhbmQgcHJvdmlkZXMgdGhlIHByZXZlbnRpbmcgb2YgdGhlIGJyb3dzZXIgYmVoYXZpb3JcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gaW5wdXRcbiAgICAgKi9cbiAgICBwcmV2ZW50RGVmYXVsdHM6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHZhciBzcmNFdmVudCA9IGlucHV0LnNyY0V2ZW50O1xuICAgICAgICB2YXIgZGlyZWN0aW9uID0gaW5wdXQub2Zmc2V0RGlyZWN0aW9uO1xuXG4gICAgICAgIC8vIGlmIHRoZSB0b3VjaCBhY3Rpb24gZGlkIHByZXZlbnRlZCBvbmNlIHRoaXMgc2Vzc2lvblxuICAgICAgICBpZiAodGhpcy5tYW5hZ2VyLnNlc3Npb24ucHJldmVudGVkKSB7XG4gICAgICAgICAgICBzcmNFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFjdGlvbnMgPSB0aGlzLmFjdGlvbnM7XG4gICAgICAgIHZhciBoYXNOb25lID0gaW5TdHIoYWN0aW9ucywgVE9VQ0hfQUNUSU9OX05PTkUpICYmICFUT1VDSF9BQ1RJT05fTUFQW1RPVUNIX0FDVElPTl9OT05FXTtcbiAgICAgICAgdmFyIGhhc1BhblkgPSBpblN0cihhY3Rpb25zLCBUT1VDSF9BQ1RJT05fUEFOX1kpICYmICFUT1VDSF9BQ1RJT05fTUFQW1RPVUNIX0FDVElPTl9QQU5fWV07XG4gICAgICAgIHZhciBoYXNQYW5YID0gaW5TdHIoYWN0aW9ucywgVE9VQ0hfQUNUSU9OX1BBTl9YKSAmJiAhVE9VQ0hfQUNUSU9OX01BUFtUT1VDSF9BQ1RJT05fUEFOX1hdO1xuXG4gICAgICAgIGlmIChoYXNOb25lKSB7XG4gICAgICAgICAgICAvL2RvIG5vdCBwcmV2ZW50IGRlZmF1bHRzIGlmIHRoaXMgaXMgYSB0YXAgZ2VzdHVyZVxuXG4gICAgICAgICAgICB2YXIgaXNUYXBQb2ludGVyID0gaW5wdXQucG9pbnRlcnMubGVuZ3RoID09PSAxO1xuICAgICAgICAgICAgdmFyIGlzVGFwTW92ZW1lbnQgPSBpbnB1dC5kaXN0YW5jZSA8IDI7XG4gICAgICAgICAgICB2YXIgaXNUYXBUb3VjaFRpbWUgPSBpbnB1dC5kZWx0YVRpbWUgPCAyNTA7XG5cbiAgICAgICAgICAgIGlmIChpc1RhcFBvaW50ZXIgJiYgaXNUYXBNb3ZlbWVudCAmJiBpc1RhcFRvdWNoVGltZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNQYW5YICYmIGhhc1BhblkpIHtcbiAgICAgICAgICAgIC8vIGBwYW4teCBwYW4teWAgbWVhbnMgYnJvd3NlciBoYW5kbGVzIGFsbCBzY3JvbGxpbmcvcGFubmluZywgZG8gbm90IHByZXZlbnRcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNOb25lIHx8XG4gICAgICAgICAgICAoaGFzUGFuWSAmJiBkaXJlY3Rpb24gJiBESVJFQ1RJT05fSE9SSVpPTlRBTCkgfHxcbiAgICAgICAgICAgIChoYXNQYW5YICYmIGRpcmVjdGlvbiAmIERJUkVDVElPTl9WRVJUSUNBTCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZXZlbnRTcmMoc3JjRXZlbnQpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGNhbGwgcHJldmVudERlZmF1bHQgdG8gcHJldmVudCB0aGUgYnJvd3NlcidzIGRlZmF1bHQgYmVoYXZpb3IgKHNjcm9sbGluZyBpbiBtb3N0IGNhc2VzKVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzcmNFdmVudFxuICAgICAqL1xuICAgIHByZXZlbnRTcmM6IGZ1bmN0aW9uKHNyY0V2ZW50KSB7XG4gICAgICAgIHRoaXMubWFuYWdlci5zZXNzaW9uLnByZXZlbnRlZCA9IHRydWU7XG4gICAgICAgIHNyY0V2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxufTtcblxuLyoqXG4gKiB3aGVuIHRoZSB0b3VjaEFjdGlvbnMgYXJlIGNvbGxlY3RlZCB0aGV5IGFyZSBub3QgYSB2YWxpZCB2YWx1ZSwgc28gd2UgbmVlZCB0byBjbGVhbiB0aGluZ3MgdXAuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBhY3Rpb25zXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZnVuY3Rpb24gY2xlYW5Ub3VjaEFjdGlvbnMoYWN0aW9ucykge1xuICAgIC8vIG5vbmVcbiAgICBpZiAoaW5TdHIoYWN0aW9ucywgVE9VQ0hfQUNUSU9OX05PTkUpKSB7XG4gICAgICAgIHJldHVybiBUT1VDSF9BQ1RJT05fTk9ORTtcbiAgICB9XG5cbiAgICB2YXIgaGFzUGFuWCA9IGluU3RyKGFjdGlvbnMsIFRPVUNIX0FDVElPTl9QQU5fWCk7XG4gICAgdmFyIGhhc1BhblkgPSBpblN0cihhY3Rpb25zLCBUT1VDSF9BQ1RJT05fUEFOX1kpO1xuXG4gICAgLy8gaWYgYm90aCBwYW4teCBhbmQgcGFuLXkgYXJlIHNldCAoZGlmZmVyZW50IHJlY29nbml6ZXJzXG4gICAgLy8gZm9yIGRpZmZlcmVudCBkaXJlY3Rpb25zLCBlLmcuIGhvcml6b250YWwgcGFuIGJ1dCB2ZXJ0aWNhbCBzd2lwZT8pXG4gICAgLy8gd2UgbmVlZCBub25lIChhcyBvdGhlcndpc2Ugd2l0aCBwYW4teCBwYW4teSBjb21iaW5lZCBub25lIG9mIHRoZXNlXG4gICAgLy8gcmVjb2duaXplcnMgd2lsbCB3b3JrLCBzaW5jZSB0aGUgYnJvd3NlciB3b3VsZCBoYW5kbGUgYWxsIHBhbm5pbmdcbiAgICBpZiAoaGFzUGFuWCAmJiBoYXNQYW5ZKSB7XG4gICAgICAgIHJldHVybiBUT1VDSF9BQ1RJT05fTk9ORTtcbiAgICB9XG5cbiAgICAvLyBwYW4teCBPUiBwYW4teVxuICAgIGlmIChoYXNQYW5YIHx8IGhhc1BhblkpIHtcbiAgICAgICAgcmV0dXJuIGhhc1BhblggPyBUT1VDSF9BQ1RJT05fUEFOX1ggOiBUT1VDSF9BQ1RJT05fUEFOX1k7XG4gICAgfVxuXG4gICAgLy8gbWFuaXB1bGF0aW9uXG4gICAgaWYgKGluU3RyKGFjdGlvbnMsIFRPVUNIX0FDVElPTl9NQU5JUFVMQVRJT04pKSB7XG4gICAgICAgIHJldHVybiBUT1VDSF9BQ1RJT05fTUFOSVBVTEFUSU9OO1xuICAgIH1cblxuICAgIHJldHVybiBUT1VDSF9BQ1RJT05fQVVUTztcbn1cblxuZnVuY3Rpb24gZ2V0VG91Y2hBY3Rpb25Qcm9wcygpIHtcbiAgICBpZiAoIU5BVElWRV9UT1VDSF9BQ1RJT04pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgdG91Y2hNYXAgPSB7fTtcbiAgICB2YXIgY3NzU3VwcG9ydHMgPSB3aW5kb3cuQ1NTICYmIHdpbmRvdy5DU1Muc3VwcG9ydHM7XG4gICAgWydhdXRvJywgJ21hbmlwdWxhdGlvbicsICdwYW4teScsICdwYW4teCcsICdwYW4teCBwYW4teScsICdub25lJ10uZm9yRWFjaChmdW5jdGlvbih2YWwpIHtcblxuICAgICAgICAvLyBJZiBjc3Muc3VwcG9ydHMgaXMgbm90IHN1cHBvcnRlZCBidXQgdGhlcmUgaXMgbmF0aXZlIHRvdWNoLWFjdGlvbiBhc3N1bWUgaXQgc3VwcG9ydHNcbiAgICAgICAgLy8gYWxsIHZhbHVlcy4gVGhpcyBpcyB0aGUgY2FzZSBmb3IgSUUgMTAgYW5kIDExLlxuICAgICAgICB0b3VjaE1hcFt2YWxdID0gY3NzU3VwcG9ydHMgPyB3aW5kb3cuQ1NTLnN1cHBvcnRzKCd0b3VjaC1hY3Rpb24nLCB2YWwpIDogdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gdG91Y2hNYXA7XG59XG5cbi8qKlxuICogUmVjb2duaXplciBmbG93IGV4cGxhaW5lZDsgKlxuICogQWxsIHJlY29nbml6ZXJzIGhhdmUgdGhlIGluaXRpYWwgc3RhdGUgb2YgUE9TU0lCTEUgd2hlbiBhIGlucHV0IHNlc3Npb24gc3RhcnRzLlxuICogVGhlIGRlZmluaXRpb24gb2YgYSBpbnB1dCBzZXNzaW9uIGlzIGZyb20gdGhlIGZpcnN0IGlucHV0IHVudGlsIHRoZSBsYXN0IGlucHV0LCB3aXRoIGFsbCBpdCdzIG1vdmVtZW50IGluIGl0LiAqXG4gKiBFeGFtcGxlIHNlc3Npb24gZm9yIG1vdXNlLWlucHV0OiBtb3VzZWRvd24gLT4gbW91c2Vtb3ZlIC0+IG1vdXNldXBcbiAqXG4gKiBPbiBlYWNoIHJlY29nbml6aW5nIGN5Y2xlIChzZWUgTWFuYWdlci5yZWNvZ25pemUpIHRoZSAucmVjb2duaXplKCkgbWV0aG9kIGlzIGV4ZWN1dGVkXG4gKiB3aGljaCBkZXRlcm1pbmVzIHdpdGggc3RhdGUgaXQgc2hvdWxkIGJlLlxuICpcbiAqIElmIHRoZSByZWNvZ25pemVyIGhhcyB0aGUgc3RhdGUgRkFJTEVELCBDQU5DRUxMRUQgb3IgUkVDT0dOSVpFRCAoZXF1YWxzIEVOREVEKSwgaXQgaXMgcmVzZXQgdG9cbiAqIFBPU1NJQkxFIHRvIGdpdmUgaXQgYW5vdGhlciBjaGFuZ2Ugb24gdGhlIG5leHQgY3ljbGUuXG4gKlxuICogICAgICAgICAgICAgICBQb3NzaWJsZVxuICogICAgICAgICAgICAgICAgICB8XG4gKiAgICAgICAgICAgICstLS0tLSstLS0tLS0tLS0tLS0tLS0rXG4gKiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8XG4gKiAgICAgICstLS0tLSstLS0tLSsgICAgICAgICAgICAgICB8XG4gKiAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICB8XG4gKiAgIEZhaWxlZCAgICAgIENhbmNlbGxlZCAgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0rLS0tLS0tK1xuICogICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICAgIFJlY29nbml6ZWQgICAgICAgQmVnYW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZGVkL1JlY29nbml6ZWRcbiAqL1xudmFyIFNUQVRFX1BPU1NJQkxFID0gMTtcbnZhciBTVEFURV9CRUdBTiA9IDI7XG52YXIgU1RBVEVfQ0hBTkdFRCA9IDQ7XG52YXIgU1RBVEVfRU5ERUQgPSA4O1xudmFyIFNUQVRFX1JFQ09HTklaRUQgPSBTVEFURV9FTkRFRDtcbnZhciBTVEFURV9DQU5DRUxMRUQgPSAxNjtcbnZhciBTVEFURV9GQUlMRUQgPSAzMjtcblxuLyoqXG4gKiBSZWNvZ25pemVyXG4gKiBFdmVyeSByZWNvZ25pemVyIG5lZWRzIHRvIGV4dGVuZCBmcm9tIHRoaXMgY2xhc3MuXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIFJlY29nbml6ZXIob3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IGFzc2lnbih7fSwgdGhpcy5kZWZhdWx0cywgb3B0aW9ucyB8fCB7fSk7XG5cbiAgICB0aGlzLmlkID0gdW5pcXVlSWQoKTtcblxuICAgIHRoaXMubWFuYWdlciA9IG51bGw7XG5cbiAgICAvLyBkZWZhdWx0IGlzIGVuYWJsZSB0cnVlXG4gICAgdGhpcy5vcHRpb25zLmVuYWJsZSA9IGlmVW5kZWZpbmVkKHRoaXMub3B0aW9ucy5lbmFibGUsIHRydWUpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1BPU1NJQkxFO1xuXG4gICAgdGhpcy5zaW11bHRhbmVvdXMgPSB7fTtcbiAgICB0aGlzLnJlcXVpcmVGYWlsID0gW107XG59XG5cblJlY29nbml6ZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEB2aXJ0dWFsXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICBkZWZhdWx0czoge30sXG5cbiAgICAvKipcbiAgICAgKiBzZXQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHJldHVybiB7UmVjb2duaXplcn1cbiAgICAgKi9cbiAgICBzZXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgICAgYXNzaWduKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgLy8gYWxzbyB1cGRhdGUgdGhlIHRvdWNoQWN0aW9uLCBpbiBjYXNlIHNvbWV0aGluZyBjaGFuZ2VkIGFib3V0IHRoZSBkaXJlY3Rpb25zL2VuYWJsZWQgc3RhdGVcbiAgICAgICAgdGhpcy5tYW5hZ2VyICYmIHRoaXMubWFuYWdlci50b3VjaEFjdGlvbi51cGRhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHJlY29nbml6ZSBzaW11bHRhbmVvdXMgd2l0aCBhbiBvdGhlciByZWNvZ25pemVyLlxuICAgICAqIEBwYXJhbSB7UmVjb2duaXplcn0gb3RoZXJSZWNvZ25pemVyXG4gICAgICogQHJldHVybnMge1JlY29nbml6ZXJ9IHRoaXNcbiAgICAgKi9cbiAgICByZWNvZ25pemVXaXRoOiBmdW5jdGlvbihvdGhlclJlY29nbml6ZXIpIHtcbiAgICAgICAgaWYgKGludm9rZUFycmF5QXJnKG90aGVyUmVjb2duaXplciwgJ3JlY29nbml6ZVdpdGgnLCB0aGlzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2ltdWx0YW5lb3VzID0gdGhpcy5zaW11bHRhbmVvdXM7XG4gICAgICAgIG90aGVyUmVjb2duaXplciA9IGdldFJlY29nbml6ZXJCeU5hbWVJZk1hbmFnZXIob3RoZXJSZWNvZ25pemVyLCB0aGlzKTtcbiAgICAgICAgaWYgKCFzaW11bHRhbmVvdXNbb3RoZXJSZWNvZ25pemVyLmlkXSkge1xuICAgICAgICAgICAgc2ltdWx0YW5lb3VzW290aGVyUmVjb2duaXplci5pZF0gPSBvdGhlclJlY29nbml6ZXI7XG4gICAgICAgICAgICBvdGhlclJlY29nbml6ZXIucmVjb2duaXplV2l0aCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogZHJvcCB0aGUgc2ltdWx0YW5lb3VzIGxpbmsuIGl0IGRvZXNudCByZW1vdmUgdGhlIGxpbmsgb24gdGhlIG90aGVyIHJlY29nbml6ZXIuXG4gICAgICogQHBhcmFtIHtSZWNvZ25pemVyfSBvdGhlclJlY29nbml6ZXJcbiAgICAgKiBAcmV0dXJucyB7UmVjb2duaXplcn0gdGhpc1xuICAgICAqL1xuICAgIGRyb3BSZWNvZ25pemVXaXRoOiBmdW5jdGlvbihvdGhlclJlY29nbml6ZXIpIHtcbiAgICAgICAgaWYgKGludm9rZUFycmF5QXJnKG90aGVyUmVjb2duaXplciwgJ2Ryb3BSZWNvZ25pemVXaXRoJywgdGhpcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgb3RoZXJSZWNvZ25pemVyID0gZ2V0UmVjb2duaXplckJ5TmFtZUlmTWFuYWdlcihvdGhlclJlY29nbml6ZXIsIHRoaXMpO1xuICAgICAgICBkZWxldGUgdGhpcy5zaW11bHRhbmVvdXNbb3RoZXJSZWNvZ25pemVyLmlkXTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHJlY29nbml6ZXIgY2FuIG9ubHkgcnVuIHdoZW4gYW4gb3RoZXIgaXMgZmFpbGluZ1xuICAgICAqIEBwYXJhbSB7UmVjb2duaXplcn0gb3RoZXJSZWNvZ25pemVyXG4gICAgICogQHJldHVybnMge1JlY29nbml6ZXJ9IHRoaXNcbiAgICAgKi9cbiAgICByZXF1aXJlRmFpbHVyZTogZnVuY3Rpb24ob3RoZXJSZWNvZ25pemVyKSB7XG4gICAgICAgIGlmIChpbnZva2VBcnJheUFyZyhvdGhlclJlY29nbml6ZXIsICdyZXF1aXJlRmFpbHVyZScsIHRoaXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciByZXF1aXJlRmFpbCA9IHRoaXMucmVxdWlyZUZhaWw7XG4gICAgICAgIG90aGVyUmVjb2duaXplciA9IGdldFJlY29nbml6ZXJCeU5hbWVJZk1hbmFnZXIob3RoZXJSZWNvZ25pemVyLCB0aGlzKTtcbiAgICAgICAgaWYgKGluQXJyYXkocmVxdWlyZUZhaWwsIG90aGVyUmVjb2duaXplcikgPT09IC0xKSB7XG4gICAgICAgICAgICByZXF1aXJlRmFpbC5wdXNoKG90aGVyUmVjb2duaXplcik7XG4gICAgICAgICAgICBvdGhlclJlY29nbml6ZXIucmVxdWlyZUZhaWx1cmUodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGRyb3AgdGhlIHJlcXVpcmVGYWlsdXJlIGxpbmsuIGl0IGRvZXMgbm90IHJlbW92ZSB0aGUgbGluayBvbiB0aGUgb3RoZXIgcmVjb2duaXplci5cbiAgICAgKiBAcGFyYW0ge1JlY29nbml6ZXJ9IG90aGVyUmVjb2duaXplclxuICAgICAqIEByZXR1cm5zIHtSZWNvZ25pemVyfSB0aGlzXG4gICAgICovXG4gICAgZHJvcFJlcXVpcmVGYWlsdXJlOiBmdW5jdGlvbihvdGhlclJlY29nbml6ZXIpIHtcbiAgICAgICAgaWYgKGludm9rZUFycmF5QXJnKG90aGVyUmVjb2duaXplciwgJ2Ryb3BSZXF1aXJlRmFpbHVyZScsIHRoaXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIG90aGVyUmVjb2duaXplciA9IGdldFJlY29nbml6ZXJCeU5hbWVJZk1hbmFnZXIob3RoZXJSZWNvZ25pemVyLCB0aGlzKTtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5BcnJheSh0aGlzLnJlcXVpcmVGYWlsLCBvdGhlclJlY29nbml6ZXIpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlRmFpbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBoYXMgcmVxdWlyZSBmYWlsdXJlcyBib29sZWFuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaGFzUmVxdWlyZUZhaWx1cmVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZUZhaWwubGVuZ3RoID4gMDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogaWYgdGhlIHJlY29nbml6ZXIgY2FuIHJlY29nbml6ZSBzaW11bHRhbmVvdXMgd2l0aCBhbiBvdGhlciByZWNvZ25pemVyXG4gICAgICogQHBhcmFtIHtSZWNvZ25pemVyfSBvdGhlclJlY29nbml6ZXJcbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBjYW5SZWNvZ25pemVXaXRoOiBmdW5jdGlvbihvdGhlclJlY29nbml6ZXIpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zaW11bHRhbmVvdXNbb3RoZXJSZWNvZ25pemVyLmlkXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogWW91IHNob3VsZCB1c2UgYHRyeUVtaXRgIGluc3RlYWQgb2YgYGVtaXRgIGRpcmVjdGx5IHRvIGNoZWNrXG4gICAgICogdGhhdCBhbGwgdGhlIG5lZWRlZCByZWNvZ25pemVycyBoYXMgZmFpbGVkIGJlZm9yZSBlbWl0dGluZy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gaW5wdXRcbiAgICAgKi9cbiAgICBlbWl0OiBmdW5jdGlvbihpbnB1dCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgICAgZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLmVtaXQoZXZlbnQsIGlucHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICdwYW5zdGFydCcgYW5kICdwYW5tb3ZlJ1xuICAgICAgICBpZiAoc3RhdGUgPCBTVEFURV9FTkRFRCkge1xuICAgICAgICAgICAgZW1pdChzZWxmLm9wdGlvbnMuZXZlbnQgKyBzdGF0ZVN0cihzdGF0ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW1pdChzZWxmLm9wdGlvbnMuZXZlbnQpOyAvLyBzaW1wbGUgJ2V2ZW50TmFtZScgZXZlbnRzXG5cbiAgICAgICAgaWYgKGlucHV0LmFkZGl0aW9uYWxFdmVudCkgeyAvLyBhZGRpdGlvbmFsIGV2ZW50KHBhbmxlZnQsIHBhbnJpZ2h0LCBwaW5jaGluLCBwaW5jaG91dC4uLilcbiAgICAgICAgICAgIGVtaXQoaW5wdXQuYWRkaXRpb25hbEV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHBhbmVuZCBhbmQgcGFuY2FuY2VsXG4gICAgICAgIGlmIChzdGF0ZSA+PSBTVEFURV9FTkRFRCkge1xuICAgICAgICAgICAgZW1pdChzZWxmLm9wdGlvbnMuZXZlbnQgKyBzdGF0ZVN0cihzdGF0ZSkpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrIHRoYXQgYWxsIHRoZSByZXF1aXJlIGZhaWx1cmUgcmVjb2duaXplcnMgaGFzIGZhaWxlZCxcbiAgICAgKiBpZiB0cnVlLCBpdCBlbWl0cyBhIGdlc3R1cmUgZXZlbnQsXG4gICAgICogb3RoZXJ3aXNlLCBzZXR1cCB0aGUgc3RhdGUgdG8gRkFJTEVELlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dFxuICAgICAqL1xuICAgIHRyeUVtaXQ6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLmNhbkVtaXQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW1pdChpbnB1dCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaXQncyBmYWlsaW5nIGFueXdheVxuICAgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfRkFJTEVEO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBjYW4gd2UgZW1pdD9cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBjYW5FbWl0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmVxdWlyZUZhaWwubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoISh0aGlzLnJlcXVpcmVGYWlsW2ldLnN0YXRlICYgKFNUQVRFX0ZBSUxFRCB8IFNUQVRFX1BPU1NJQkxFKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHVwZGF0ZSB0aGUgcmVjb2duaXplclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dERhdGFcbiAgICAgKi9cbiAgICByZWNvZ25pemU6IGZ1bmN0aW9uKGlucHV0RGF0YSkge1xuICAgICAgICAvLyBtYWtlIGEgbmV3IGNvcHkgb2YgdGhlIGlucHV0RGF0YVxuICAgICAgICAvLyBzbyB3ZSBjYW4gY2hhbmdlIHRoZSBpbnB1dERhdGEgd2l0aG91dCBtZXNzaW5nIHVwIHRoZSBvdGhlciByZWNvZ25pemVyc1xuICAgICAgICB2YXIgaW5wdXREYXRhQ2xvbmUgPSBhc3NpZ24oe30sIGlucHV0RGF0YSk7XG5cbiAgICAgICAgLy8gaXMgaXMgZW5hYmxlZCBhbmQgYWxsb3cgcmVjb2duaXppbmc/XG4gICAgICAgIGlmICghYm9vbE9yRm4odGhpcy5vcHRpb25zLmVuYWJsZSwgW3RoaXMsIGlucHV0RGF0YUNsb25lXSkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9GQUlMRUQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXNldCB3aGVuIHdlJ3ZlIHJlYWNoZWQgdGhlIGVuZFxuICAgICAgICBpZiAodGhpcy5zdGF0ZSAmIChTVEFURV9SRUNPR05JWkVEIHwgU1RBVEVfQ0FOQ0VMTEVEIHwgU1RBVEVfRkFJTEVEKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1BPU1NJQkxFO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMucHJvY2VzcyhpbnB1dERhdGFDbG9uZSk7XG5cbiAgICAgICAgLy8gdGhlIHJlY29nbml6ZXIgaGFzIHJlY29nbml6ZWQgYSBnZXN0dXJlXG4gICAgICAgIC8vIHNvIHRyaWdnZXIgYW4gZXZlbnRcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgJiAoU1RBVEVfQkVHQU4gfCBTVEFURV9DSEFOR0VEIHwgU1RBVEVfRU5ERUQgfCBTVEFURV9DQU5DRUxMRUQpKSB7XG4gICAgICAgICAgICB0aGlzLnRyeUVtaXQoaW5wdXREYXRhQ2xvbmUpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHJldHVybiB0aGUgc3RhdGUgb2YgdGhlIHJlY29nbml6ZXJcbiAgICAgKiB0aGUgYWN0dWFsIHJlY29nbml6aW5nIGhhcHBlbnMgaW4gdGhpcyBtZXRob2RcbiAgICAgKiBAdmlydHVhbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dERhdGFcbiAgICAgKiBAcmV0dXJucyB7Q29uc3R9IFNUQVRFXG4gICAgICovXG4gICAgcHJvY2VzczogZnVuY3Rpb24oaW5wdXREYXRhKSB7IH0sIC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRoZSBwcmVmZXJyZWQgdG91Y2gtYWN0aW9uXG4gICAgICogQHZpcnR1YWxcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9XG4gICAgICovXG4gICAgZ2V0VG91Y2hBY3Rpb246IGZ1bmN0aW9uKCkgeyB9LFxuXG4gICAgLyoqXG4gICAgICogY2FsbGVkIHdoZW4gdGhlIGdlc3R1cmUgaXNuJ3QgYWxsb3dlZCB0byByZWNvZ25pemVcbiAgICAgKiBsaWtlIHdoZW4gYW5vdGhlciBpcyBiZWluZyByZWNvZ25pemVkIG9yIGl0IGlzIGRpc2FibGVkXG4gICAgICogQHZpcnR1YWxcbiAgICAgKi9cbiAgICByZXNldDogZnVuY3Rpb24oKSB7IH1cbn07XG5cbi8qKlxuICogZ2V0IGEgdXNhYmxlIHN0cmluZywgdXNlZCBhcyBldmVudCBwb3N0Zml4XG4gKiBAcGFyYW0ge0NvbnN0fSBzdGF0ZVxuICogQHJldHVybnMge1N0cmluZ30gc3RhdGVcbiAqL1xuZnVuY3Rpb24gc3RhdGVTdHIoc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUgJiBTVEFURV9DQU5DRUxMRUQpIHtcbiAgICAgICAgcmV0dXJuICdjYW5jZWwnO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUgJiBTVEFURV9FTkRFRCkge1xuICAgICAgICByZXR1cm4gJ2VuZCc7XG4gICAgfSBlbHNlIGlmIChzdGF0ZSAmIFNUQVRFX0NIQU5HRUQpIHtcbiAgICAgICAgcmV0dXJuICdtb3ZlJztcbiAgICB9IGVsc2UgaWYgKHN0YXRlICYgU1RBVEVfQkVHQU4pIHtcbiAgICAgICAgcmV0dXJuICdzdGFydCc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBkaXJlY3Rpb24gY29ucyB0byBzdHJpbmdcbiAqIEBwYXJhbSB7Q29uc3R9IGRpcmVjdGlvblxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZGlyZWN0aW9uU3RyKGRpcmVjdGlvbikge1xuICAgIGlmIChkaXJlY3Rpb24gPT0gRElSRUNUSU9OX0RPV04pIHtcbiAgICAgICAgcmV0dXJuICdkb3duJztcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBESVJFQ1RJT05fVVApIHtcbiAgICAgICAgcmV0dXJuICd1cCc7XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT0gRElSRUNUSU9OX0xFRlQpIHtcbiAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBESVJFQ1RJT05fUklHSFQpIHtcbiAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBnZXQgYSByZWNvZ25pemVyIGJ5IG5hbWUgaWYgaXQgaXMgYm91bmQgdG8gYSBtYW5hZ2VyXG4gKiBAcGFyYW0ge1JlY29nbml6ZXJ8U3RyaW5nfSBvdGhlclJlY29nbml6ZXJcbiAqIEBwYXJhbSB7UmVjb2duaXplcn0gcmVjb2duaXplclxuICogQHJldHVybnMge1JlY29nbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldFJlY29nbml6ZXJCeU5hbWVJZk1hbmFnZXIob3RoZXJSZWNvZ25pemVyLCByZWNvZ25pemVyKSB7XG4gICAgdmFyIG1hbmFnZXIgPSByZWNvZ25pemVyLm1hbmFnZXI7XG4gICAgaWYgKG1hbmFnZXIpIHtcbiAgICAgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KG90aGVyUmVjb2duaXplcik7XG4gICAgfVxuICAgIHJldHVybiBvdGhlclJlY29nbml6ZXI7XG59XG5cbi8qKlxuICogVGhpcyByZWNvZ25pemVyIGlzIGp1c3QgdXNlZCBhcyBhIGJhc2UgZm9yIHRoZSBzaW1wbGUgYXR0cmlidXRlIHJlY29nbml6ZXJzLlxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBSZWNvZ25pemVyXG4gKi9cbmZ1bmN0aW9uIEF0dHJSZWNvZ25pemVyKCkge1xuICAgIFJlY29nbml6ZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuaW5oZXJpdChBdHRyUmVjb2duaXplciwgUmVjb2duaXplciwge1xuICAgIC8qKlxuICAgICAqIEBuYW1lc3BhY2VcbiAgICAgKiBAbWVtYmVyb2YgQXR0clJlY29nbml6ZXJcbiAgICAgKi9cbiAgICBkZWZhdWx0czoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQHR5cGUge051bWJlcn1cbiAgICAgICAgICogQGRlZmF1bHQgMVxuICAgICAgICAgKi9cbiAgICAgICAgcG9pbnRlcnM6IDFcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBjaGVjayBpZiBpdCB0aGUgcmVjb2duaXplciByZWNlaXZlcyB2YWxpZCBpbnB1dCwgbGlrZSBpbnB1dC5kaXN0YW5jZSA+IDEwLlxuICAgICAqIEBtZW1iZXJvZiBBdHRyUmVjb2duaXplclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dFxuICAgICAqIEByZXR1cm5zIHtCb29sZWFufSByZWNvZ25pemVkXG4gICAgICovXG4gICAgYXR0clRlc3Q6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHZhciBvcHRpb25Qb2ludGVycyA9IHRoaXMub3B0aW9ucy5wb2ludGVycztcbiAgICAgICAgcmV0dXJuIG9wdGlvblBvaW50ZXJzID09PSAwIHx8IGlucHV0LnBvaW50ZXJzLmxlbmd0aCA9PT0gb3B0aW9uUG9pbnRlcnM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGlucHV0IGFuZCByZXR1cm4gdGhlIHN0YXRlIGZvciB0aGUgcmVjb2duaXplclxuICAgICAqIEBtZW1iZXJvZiBBdHRyUmVjb2duaXplclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dFxuICAgICAqIEByZXR1cm5zIHsqfSBTdGF0ZVxuICAgICAqL1xuICAgIHByb2Nlc3M6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHZhciBldmVudFR5cGUgPSBpbnB1dC5ldmVudFR5cGU7XG5cbiAgICAgICAgdmFyIGlzUmVjb2duaXplZCA9IHN0YXRlICYgKFNUQVRFX0JFR0FOIHwgU1RBVEVfQ0hBTkdFRCk7XG4gICAgICAgIHZhciBpc1ZhbGlkID0gdGhpcy5hdHRyVGVzdChpbnB1dCk7XG5cbiAgICAgICAgLy8gb24gY2FuY2VsIGlucHV0IGFuZCB3ZSd2ZSByZWNvZ25pemVkIGJlZm9yZSwgcmV0dXJuIFNUQVRFX0NBTkNFTExFRFxuICAgICAgICBpZiAoaXNSZWNvZ25pemVkICYmIChldmVudFR5cGUgJiBJTlBVVF9DQU5DRUwgfHwgIWlzVmFsaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUgfCBTVEFURV9DQU5DRUxMRUQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNSZWNvZ25pemVkIHx8IGlzVmFsaWQpIHtcbiAgICAgICAgICAgIGlmIChldmVudFR5cGUgJiBJTlBVVF9FTkQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUgfCBTVEFURV9FTkRFRDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIShzdGF0ZSAmIFNUQVRFX0JFR0FOKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBTVEFURV9CRUdBTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZSB8IFNUQVRFX0NIQU5HRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFNUQVRFX0ZBSUxFRDtcbiAgICB9XG59KTtcblxuLyoqXG4gKiBQYW5cbiAqIFJlY29nbml6ZWQgd2hlbiB0aGUgcG9pbnRlciBpcyBkb3duIGFuZCBtb3ZlZCBpbiB0aGUgYWxsb3dlZCBkaXJlY3Rpb24uXG4gKiBAY29uc3RydWN0b3JcbiAqIEBleHRlbmRzIEF0dHJSZWNvZ25pemVyXG4gKi9cbmZ1bmN0aW9uIFBhblJlY29nbml6ZXIoKSB7XG4gICAgQXR0clJlY29nbml6ZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHRoaXMucFggPSBudWxsO1xuICAgIHRoaXMucFkgPSBudWxsO1xufVxuXG5pbmhlcml0KFBhblJlY29nbml6ZXIsIEF0dHJSZWNvZ25pemVyLCB7XG4gICAgLyoqXG4gICAgICogQG5hbWVzcGFjZVxuICAgICAqIEBtZW1iZXJvZiBQYW5SZWNvZ25pemVyXG4gICAgICovXG4gICAgZGVmYXVsdHM6IHtcbiAgICAgICAgZXZlbnQ6ICdwYW4nLFxuICAgICAgICB0aHJlc2hvbGQ6IDEwLFxuICAgICAgICBwb2ludGVyczogMSxcbiAgICAgICAgZGlyZWN0aW9uOiBESVJFQ1RJT05fQUxMXG4gICAgfSxcblxuICAgIGdldFRvdWNoQWN0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IHRoaXMub3B0aW9ucy5kaXJlY3Rpb247XG4gICAgICAgIHZhciBhY3Rpb25zID0gW107XG4gICAgICAgIGlmIChkaXJlY3Rpb24gJiBESVJFQ1RJT05fSE9SSVpPTlRBTCkge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKFRPVUNIX0FDVElPTl9QQU5fWSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpcmVjdGlvbiAmIERJUkVDVElPTl9WRVJUSUNBTCkge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKFRPVUNIX0FDVElPTl9QQU5fWCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjdGlvbnM7XG4gICAgfSxcblxuICAgIGRpcmVjdGlvblRlc3Q6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgICB2YXIgaGFzTW92ZWQgPSB0cnVlO1xuICAgICAgICB2YXIgZGlzdGFuY2UgPSBpbnB1dC5kaXN0YW5jZTtcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IGlucHV0LmRpcmVjdGlvbjtcbiAgICAgICAgdmFyIHggPSBpbnB1dC5kZWx0YVg7XG4gICAgICAgIHZhciB5ID0gaW5wdXQuZGVsdGFZO1xuXG4gICAgICAgIC8vIGxvY2sgdG8gYXhpcz9cbiAgICAgICAgaWYgKCEoZGlyZWN0aW9uICYgb3B0aW9ucy5kaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kaXJlY3Rpb24gJiBESVJFQ1RJT05fSE9SSVpPTlRBTCkge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9ICh4ID09PSAwKSA/IERJUkVDVElPTl9OT05FIDogKHggPCAwKSA/IERJUkVDVElPTl9MRUZUIDogRElSRUNUSU9OX1JJR0hUO1xuICAgICAgICAgICAgICAgIGhhc01vdmVkID0geCAhPSB0aGlzLnBYO1xuICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gTWF0aC5hYnMoaW5wdXQuZGVsdGFYKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gKHkgPT09IDApID8gRElSRUNUSU9OX05PTkUgOiAoeSA8IDApID8gRElSRUNUSU9OX1VQIDogRElSRUNUSU9OX0RPV047XG4gICAgICAgICAgICAgICAgaGFzTW92ZWQgPSB5ICE9IHRoaXMucFk7XG4gICAgICAgICAgICAgICAgZGlzdGFuY2UgPSBNYXRoLmFicyhpbnB1dC5kZWx0YVkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlucHV0LmRpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICAgICAgcmV0dXJuIGhhc01vdmVkICYmIGRpc3RhbmNlID4gb3B0aW9ucy50aHJlc2hvbGQgJiYgZGlyZWN0aW9uICYgb3B0aW9ucy5kaXJlY3Rpb247XG4gICAgfSxcblxuICAgIGF0dHJUZXN0OiBmdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gQXR0clJlY29nbml6ZXIucHJvdG90eXBlLmF0dHJUZXN0LmNhbGwodGhpcywgaW5wdXQpICYmXG4gICAgICAgICAgICAodGhpcy5zdGF0ZSAmIFNUQVRFX0JFR0FOIHx8ICghKHRoaXMuc3RhdGUgJiBTVEFURV9CRUdBTikgJiYgdGhpcy5kaXJlY3Rpb25UZXN0KGlucHV0KSkpO1xuICAgIH0sXG5cbiAgICBlbWl0OiBmdW5jdGlvbihpbnB1dCkge1xuXG4gICAgICAgIHRoaXMucFggPSBpbnB1dC5kZWx0YVg7XG4gICAgICAgIHRoaXMucFkgPSBpbnB1dC5kZWx0YVk7XG5cbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IGRpcmVjdGlvblN0cihpbnB1dC5kaXJlY3Rpb24pO1xuXG4gICAgICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGlucHV0LmFkZGl0aW9uYWxFdmVudCA9IHRoaXMub3B0aW9ucy5ldmVudCArIGRpcmVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zdXBlci5lbWl0LmNhbGwodGhpcywgaW5wdXQpO1xuICAgIH1cbn0pO1xuXG4vKipcbiAqIFBpbmNoXG4gKiBSZWNvZ25pemVkIHdoZW4gdHdvIG9yIG1vcmUgcG9pbnRlcnMgYXJlIG1vdmluZyB0b3dhcmQgKHpvb20taW4pIG9yIGF3YXkgZnJvbSBlYWNoIG90aGVyICh6b29tLW91dCkuXG4gKiBAY29uc3RydWN0b3JcbiAqIEBleHRlbmRzIEF0dHJSZWNvZ25pemVyXG4gKi9cbmZ1bmN0aW9uIFBpbmNoUmVjb2duaXplcigpIHtcbiAgICBBdHRyUmVjb2duaXplci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5pbmhlcml0KFBpbmNoUmVjb2duaXplciwgQXR0clJlY29nbml6ZXIsIHtcbiAgICAvKipcbiAgICAgKiBAbmFtZXNwYWNlXG4gICAgICogQG1lbWJlcm9mIFBpbmNoUmVjb2duaXplclxuICAgICAqL1xuICAgIGRlZmF1bHRzOiB7XG4gICAgICAgIGV2ZW50OiAncGluY2gnLFxuICAgICAgICB0aHJlc2hvbGQ6IDAsXG4gICAgICAgIHBvaW50ZXJzOiAyXG4gICAgfSxcblxuICAgIGdldFRvdWNoQWN0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFtUT1VDSF9BQ1RJT05fTk9ORV07XG4gICAgfSxcblxuICAgIGF0dHJUZXN0OiBmdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VwZXIuYXR0clRlc3QuY2FsbCh0aGlzLCBpbnB1dCkgJiZcbiAgICAgICAgICAgIChNYXRoLmFicyhpbnB1dC5zY2FsZSAtIDEpID4gdGhpcy5vcHRpb25zLnRocmVzaG9sZCB8fCB0aGlzLnN0YXRlICYgU1RBVEVfQkVHQU4pO1xuICAgIH0sXG5cbiAgICBlbWl0OiBmdW5jdGlvbihpbnB1dCkge1xuICAgICAgICBpZiAoaW5wdXQuc2NhbGUgIT09IDEpIHtcbiAgICAgICAgICAgIHZhciBpbk91dCA9IGlucHV0LnNjYWxlIDwgMSA/ICdpbicgOiAnb3V0JztcbiAgICAgICAgICAgIGlucHV0LmFkZGl0aW9uYWxFdmVudCA9IHRoaXMub3B0aW9ucy5ldmVudCArIGluT3V0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N1cGVyLmVtaXQuY2FsbCh0aGlzLCBpbnB1dCk7XG4gICAgfVxufSk7XG5cbi8qKlxuICogUHJlc3NcbiAqIFJlY29nbml6ZWQgd2hlbiB0aGUgcG9pbnRlciBpcyBkb3duIGZvciB4IG1zIHdpdGhvdXQgYW55IG1vdmVtZW50LlxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBSZWNvZ25pemVyXG4gKi9cbmZ1bmN0aW9uIFByZXNzUmVjb2duaXplcigpIHtcbiAgICBSZWNvZ25pemVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICB0aGlzLl90aW1lciA9IG51bGw7XG4gICAgdGhpcy5faW5wdXQgPSBudWxsO1xufVxuXG5pbmhlcml0KFByZXNzUmVjb2duaXplciwgUmVjb2duaXplciwge1xuICAgIC8qKlxuICAgICAqIEBuYW1lc3BhY2VcbiAgICAgKiBAbWVtYmVyb2YgUHJlc3NSZWNvZ25pemVyXG4gICAgICovXG4gICAgZGVmYXVsdHM6IHtcbiAgICAgICAgZXZlbnQ6ICdwcmVzcycsXG4gICAgICAgIHBvaW50ZXJzOiAxLFxuICAgICAgICB0aW1lOiAyNTEsIC8vIG1pbmltYWwgdGltZSBvZiB0aGUgcG9pbnRlciB0byBiZSBwcmVzc2VkXG4gICAgICAgIHRocmVzaG9sZDogOSAvLyBhIG1pbmltYWwgbW92ZW1lbnQgaXMgb2ssIGJ1dCBrZWVwIGl0IGxvd1xuICAgIH0sXG5cbiAgICBnZXRUb3VjaEFjdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBbVE9VQ0hfQUNUSU9OX0FVVE9dO1xuICAgIH0sXG5cbiAgICBwcm9jZXNzOiBmdW5jdGlvbihpbnB1dCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgdmFyIHZhbGlkUG9pbnRlcnMgPSBpbnB1dC5wb2ludGVycy5sZW5ndGggPT09IG9wdGlvbnMucG9pbnRlcnM7XG4gICAgICAgIHZhciB2YWxpZE1vdmVtZW50ID0gaW5wdXQuZGlzdGFuY2UgPCBvcHRpb25zLnRocmVzaG9sZDtcbiAgICAgICAgdmFyIHZhbGlkVGltZSA9IGlucHV0LmRlbHRhVGltZSA+IG9wdGlvbnMudGltZTtcblxuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuXG4gICAgICAgIC8vIHdlIG9ubHkgYWxsb3cgbGl0dGxlIG1vdmVtZW50XG4gICAgICAgIC8vIGFuZCB3ZSd2ZSByZWFjaGVkIGFuIGVuZCBldmVudCwgc28gYSB0YXAgaXMgcG9zc2libGVcbiAgICAgICAgaWYgKCF2YWxpZE1vdmVtZW50IHx8ICF2YWxpZFBvaW50ZXJzIHx8IChpbnB1dC5ldmVudFR5cGUgJiAoSU5QVVRfRU5EIHwgSU5QVVRfQ0FOQ0VMKSAmJiAhdmFsaWRUaW1lKSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LmV2ZW50VHlwZSAmIElOUFVUX1NUQVJUKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXRDb250ZXh0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9SRUNPR05JWkVEO1xuICAgICAgICAgICAgICAgIHRoaXMudHJ5RW1pdCgpO1xuICAgICAgICAgICAgfSwgb3B0aW9ucy50aW1lLCB0aGlzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5ldmVudFR5cGUgJiBJTlBVVF9FTkQpIHtcbiAgICAgICAgICAgIHJldHVybiBTVEFURV9SRUNPR05JWkVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTVEFURV9GQUlMRUQ7XG4gICAgfSxcblxuICAgIHJlc2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcbiAgICB9LFxuXG4gICAgZW1pdDogZnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IFNUQVRFX1JFQ09HTklaRUQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnB1dCAmJiAoaW5wdXQuZXZlbnRUeXBlICYgSU5QVVRfRU5EKSkge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VyLmVtaXQodGhpcy5vcHRpb25zLmV2ZW50ICsgJ3VwJywgaW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5wdXQudGltZVN0YW1wID0gbm93KCk7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZXIuZW1pdCh0aGlzLm9wdGlvbnMuZXZlbnQsIHRoaXMuX2lucHV0KTtcbiAgICAgICAgfVxuICAgIH1cbn0pO1xuXG4vKipcbiAqIFJvdGF0ZVxuICogUmVjb2duaXplZCB3aGVuIHR3byBvciBtb3JlIHBvaW50ZXIgYXJlIG1vdmluZyBpbiBhIGNpcmN1bGFyIG1vdGlvbi5cbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMgQXR0clJlY29nbml6ZXJcbiAqL1xuZnVuY3Rpb24gUm90YXRlUmVjb2duaXplcigpIHtcbiAgICBBdHRyUmVjb2duaXplci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5pbmhlcml0KFJvdGF0ZVJlY29nbml6ZXIsIEF0dHJSZWNvZ25pemVyLCB7XG4gICAgLyoqXG4gICAgICogQG5hbWVzcGFjZVxuICAgICAqIEBtZW1iZXJvZiBSb3RhdGVSZWNvZ25pemVyXG4gICAgICovXG4gICAgZGVmYXVsdHM6IHtcbiAgICAgICAgZXZlbnQ6ICdyb3RhdGUnLFxuICAgICAgICB0aHJlc2hvbGQ6IDAsXG4gICAgICAgIHBvaW50ZXJzOiAyXG4gICAgfSxcblxuICAgIGdldFRvdWNoQWN0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFtUT1VDSF9BQ1RJT05fTk9ORV07XG4gICAgfSxcblxuICAgIGF0dHJUZXN0OiBmdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VwZXIuYXR0clRlc3QuY2FsbCh0aGlzLCBpbnB1dCkgJiZcbiAgICAgICAgICAgIChNYXRoLmFicyhpbnB1dC5yb3RhdGlvbikgPiB0aGlzLm9wdGlvbnMudGhyZXNob2xkIHx8IHRoaXMuc3RhdGUgJiBTVEFURV9CRUdBTik7XG4gICAgfVxufSk7XG5cbi8qKlxuICogU3dpcGVcbiAqIFJlY29nbml6ZWQgd2hlbiB0aGUgcG9pbnRlciBpcyBtb3ZpbmcgZmFzdCAodmVsb2NpdHkpLCB3aXRoIGVub3VnaCBkaXN0YW5jZSBpbiB0aGUgYWxsb3dlZCBkaXJlY3Rpb24uXG4gKiBAY29uc3RydWN0b3JcbiAqIEBleHRlbmRzIEF0dHJSZWNvZ25pemVyXG4gKi9cbmZ1bmN0aW9uIFN3aXBlUmVjb2duaXplcigpIHtcbiAgICBBdHRyUmVjb2duaXplci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5pbmhlcml0KFN3aXBlUmVjb2duaXplciwgQXR0clJlY29nbml6ZXIsIHtcbiAgICAvKipcbiAgICAgKiBAbmFtZXNwYWNlXG4gICAgICogQG1lbWJlcm9mIFN3aXBlUmVjb2duaXplclxuICAgICAqL1xuICAgIGRlZmF1bHRzOiB7XG4gICAgICAgIGV2ZW50OiAnc3dpcGUnLFxuICAgICAgICB0aHJlc2hvbGQ6IDEwLFxuICAgICAgICB2ZWxvY2l0eTogMC4zLFxuICAgICAgICBkaXJlY3Rpb246IERJUkVDVElPTl9IT1JJWk9OVEFMIHwgRElSRUNUSU9OX1ZFUlRJQ0FMLFxuICAgICAgICBwb2ludGVyczogMVxuICAgIH0sXG5cbiAgICBnZXRUb3VjaEFjdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQYW5SZWNvZ25pemVyLnByb3RvdHlwZS5nZXRUb3VjaEFjdGlvbi5jYWxsKHRoaXMpO1xuICAgIH0sXG5cbiAgICBhdHRyVGVzdDogZnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IHRoaXMub3B0aW9ucy5kaXJlY3Rpb247XG4gICAgICAgIHZhciB2ZWxvY2l0eTtcblxuICAgICAgICBpZiAoZGlyZWN0aW9uICYgKERJUkVDVElPTl9IT1JJWk9OVEFMIHwgRElSRUNUSU9OX1ZFUlRJQ0FMKSkge1xuICAgICAgICAgICAgdmVsb2NpdHkgPSBpbnB1dC5vdmVyYWxsVmVsb2NpdHk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uICYgRElSRUNUSU9OX0hPUklaT05UQUwpIHtcbiAgICAgICAgICAgIHZlbG9jaXR5ID0gaW5wdXQub3ZlcmFsbFZlbG9jaXR5WDtcbiAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gJiBESVJFQ1RJT05fVkVSVElDQUwpIHtcbiAgICAgICAgICAgIHZlbG9jaXR5ID0gaW5wdXQub3ZlcmFsbFZlbG9jaXR5WTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9zdXBlci5hdHRyVGVzdC5jYWxsKHRoaXMsIGlucHV0KSAmJlxuICAgICAgICAgICAgZGlyZWN0aW9uICYgaW5wdXQub2Zmc2V0RGlyZWN0aW9uICYmXG4gICAgICAgICAgICBpbnB1dC5kaXN0YW5jZSA+IHRoaXMub3B0aW9ucy50aHJlc2hvbGQgJiZcbiAgICAgICAgICAgIGlucHV0Lm1heFBvaW50ZXJzID09IHRoaXMub3B0aW9ucy5wb2ludGVycyAmJlxuICAgICAgICAgICAgYWJzKHZlbG9jaXR5KSA+IHRoaXMub3B0aW9ucy52ZWxvY2l0eSAmJiBpbnB1dC5ldmVudFR5cGUgJiBJTlBVVF9FTkQ7XG4gICAgfSxcblxuICAgIGVtaXQ6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHZhciBkaXJlY3Rpb24gPSBkaXJlY3Rpb25TdHIoaW5wdXQub2Zmc2V0RGlyZWN0aW9uKTtcbiAgICAgICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VyLmVtaXQodGhpcy5vcHRpb25zLmV2ZW50ICsgZGlyZWN0aW9uLCBpbnB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1hbmFnZXIuZW1pdCh0aGlzLm9wdGlvbnMuZXZlbnQsIGlucHV0KTtcbiAgICB9XG59KTtcblxuLyoqXG4gKiBBIHRhcCBpcyBlY29nbml6ZWQgd2hlbiB0aGUgcG9pbnRlciBpcyBkb2luZyBhIHNtYWxsIHRhcC9jbGljay4gTXVsdGlwbGUgdGFwcyBhcmUgcmVjb2duaXplZCBpZiB0aGV5IG9jY3VyXG4gKiBiZXR3ZWVuIHRoZSBnaXZlbiBpbnRlcnZhbCBhbmQgcG9zaXRpb24uIFRoZSBkZWxheSBvcHRpb24gY2FuIGJlIHVzZWQgdG8gcmVjb2duaXplIG11bHRpLXRhcHMgd2l0aG91dCBmaXJpbmdcbiAqIGEgc2luZ2xlIHRhcC5cbiAqXG4gKiBUaGUgZXZlbnREYXRhIGZyb20gdGhlIGVtaXR0ZWQgZXZlbnQgY29udGFpbnMgdGhlIHByb3BlcnR5IGB0YXBDb3VudGAsIHdoaWNoIGNvbnRhaW5zIHRoZSBhbW91bnQgb2ZcbiAqIG11bHRpLXRhcHMgYmVpbmcgcmVjb2duaXplZC5cbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMgUmVjb2duaXplclxuICovXG5mdW5jdGlvbiBUYXBSZWNvZ25pemVyKCkge1xuICAgIFJlY29nbml6ZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIC8vIHByZXZpb3VzIHRpbWUgYW5kIGNlbnRlcixcbiAgICAvLyB1c2VkIGZvciB0YXAgY291bnRpbmdcbiAgICB0aGlzLnBUaW1lID0gZmFsc2U7XG4gICAgdGhpcy5wQ2VudGVyID0gZmFsc2U7XG5cbiAgICB0aGlzLl90aW1lciA9IG51bGw7XG4gICAgdGhpcy5faW5wdXQgPSBudWxsO1xuICAgIHRoaXMuY291bnQgPSAwO1xufVxuXG5pbmhlcml0KFRhcFJlY29nbml6ZXIsIFJlY29nbml6ZXIsIHtcbiAgICAvKipcbiAgICAgKiBAbmFtZXNwYWNlXG4gICAgICogQG1lbWJlcm9mIFBpbmNoUmVjb2duaXplclxuICAgICAqL1xuICAgIGRlZmF1bHRzOiB7XG4gICAgICAgIGV2ZW50OiAndGFwJyxcbiAgICAgICAgcG9pbnRlcnM6IDEsXG4gICAgICAgIHRhcHM6IDEsXG4gICAgICAgIGludGVydmFsOiAzMDAsIC8vIG1heCB0aW1lIGJldHdlZW4gdGhlIG11bHRpLXRhcCB0YXBzXG4gICAgICAgIHRpbWU6IDI1MCwgLy8gbWF4IHRpbWUgb2YgdGhlIHBvaW50ZXIgdG8gYmUgZG93biAobGlrZSBmaW5nZXIgb24gdGhlIHNjcmVlbilcbiAgICAgICAgdGhyZXNob2xkOiA5LCAvLyBhIG1pbmltYWwgbW92ZW1lbnQgaXMgb2ssIGJ1dCBrZWVwIGl0IGxvd1xuICAgICAgICBwb3NUaHJlc2hvbGQ6IDEwIC8vIGEgbXVsdGktdGFwIGNhbiBiZSBhIGJpdCBvZmYgdGhlIGluaXRpYWwgcG9zaXRpb25cbiAgICB9LFxuXG4gICAgZ2V0VG91Y2hBY3Rpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gW1RPVUNIX0FDVElPTl9NQU5JUFVMQVRJT05dO1xuICAgIH0sXG5cbiAgICBwcm9jZXNzOiBmdW5jdGlvbihpbnB1dCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgICAgICB2YXIgdmFsaWRQb2ludGVycyA9IGlucHV0LnBvaW50ZXJzLmxlbmd0aCA9PT0gb3B0aW9ucy5wb2ludGVycztcbiAgICAgICAgdmFyIHZhbGlkTW92ZW1lbnQgPSBpbnB1dC5kaXN0YW5jZSA8IG9wdGlvbnMudGhyZXNob2xkO1xuICAgICAgICB2YXIgdmFsaWRUb3VjaFRpbWUgPSBpbnB1dC5kZWx0YVRpbWUgPCBvcHRpb25zLnRpbWU7XG5cbiAgICAgICAgdGhpcy5yZXNldCgpO1xuXG4gICAgICAgIGlmICgoaW5wdXQuZXZlbnRUeXBlICYgSU5QVVRfU1RBUlQpICYmICh0aGlzLmNvdW50ID09PSAwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmFpbFRpbWVvdXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlIG9ubHkgYWxsb3cgbGl0dGxlIG1vdmVtZW50XG4gICAgICAgIC8vIGFuZCB3ZSd2ZSByZWFjaGVkIGFuIGVuZCBldmVudCwgc28gYSB0YXAgaXMgcG9zc2libGVcbiAgICAgICAgaWYgKHZhbGlkTW92ZW1lbnQgJiYgdmFsaWRUb3VjaFRpbWUgJiYgdmFsaWRQb2ludGVycykge1xuICAgICAgICAgICAgaWYgKGlucHV0LmV2ZW50VHlwZSAhPSBJTlBVVF9FTkQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mYWlsVGltZW91dCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdmFsaWRJbnRlcnZhbCA9IHRoaXMucFRpbWUgPyAoaW5wdXQudGltZVN0YW1wIC0gdGhpcy5wVGltZSA8IG9wdGlvbnMuaW50ZXJ2YWwpIDogdHJ1ZTtcbiAgICAgICAgICAgIHZhciB2YWxpZE11bHRpVGFwID0gIXRoaXMucENlbnRlciB8fCBnZXREaXN0YW5jZSh0aGlzLnBDZW50ZXIsIGlucHV0LmNlbnRlcikgPCBvcHRpb25zLnBvc1RocmVzaG9sZDtcblxuICAgICAgICAgICAgdGhpcy5wVGltZSA9IGlucHV0LnRpbWVTdGFtcDtcbiAgICAgICAgICAgIHRoaXMucENlbnRlciA9IGlucHV0LmNlbnRlcjtcblxuICAgICAgICAgICAgaWYgKCF2YWxpZE11bHRpVGFwIHx8ICF2YWxpZEludGVydmFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudCA9IDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY291bnQgKz0gMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcblxuICAgICAgICAgICAgLy8gaWYgdGFwIGNvdW50IG1hdGNoZXMgd2UgaGF2ZSByZWNvZ25pemVkIGl0LFxuICAgICAgICAgICAgLy8gZWxzZSBpdCBoYXMgYmVnYW4gcmVjb2duaXppbmcuLi5cbiAgICAgICAgICAgIHZhciB0YXBDb3VudCA9IHRoaXMuY291bnQgJSBvcHRpb25zLnRhcHM7XG4gICAgICAgICAgICBpZiAodGFwQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBubyBmYWlsaW5nIHJlcXVpcmVtZW50cywgaW1tZWRpYXRlbHkgdHJpZ2dlciB0aGUgdGFwIGV2ZW50XG4gICAgICAgICAgICAgICAgLy8gb3Igd2FpdCBhcyBsb25nIGFzIHRoZSBtdWx0aXRhcCBpbnRlcnZhbCB0byB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1JlcXVpcmVGYWlsdXJlcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFURV9SRUNPR05JWkVEO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dENvbnRleHQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUkVDT0dOSVpFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJ5RW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCBvcHRpb25zLmludGVydmFsLCB0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNUQVRFX0JFR0FOO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU1RBVEVfRkFJTEVEO1xuICAgIH0sXG5cbiAgICBmYWlsVGltZW91dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dENvbnRleHQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfRkFJTEVEO1xuICAgICAgICB9LCB0aGlzLm9wdGlvbnMuaW50ZXJ2YWwsIHRoaXMpO1xuICAgICAgICByZXR1cm4gU1RBVEVfRkFJTEVEO1xuICAgIH0sXG5cbiAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7XG4gICAgfSxcblxuICAgIGVtaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PSBTVEFURV9SRUNPR05JWkVEKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dC50YXBDb3VudCA9IHRoaXMuY291bnQ7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZXIuZW1pdCh0aGlzLm9wdGlvbnMuZXZlbnQsIHRoaXMuX2lucHV0KTtcbiAgICAgICAgfVxuICAgIH1cbn0pO1xuXG4vKipcbiAqIFNpbXBsZSB3YXkgdG8gY3JlYXRlIGEgbWFuYWdlciB3aXRoIGEgZGVmYXVsdCBzZXQgb2YgcmVjb2duaXplcnMuXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gSGFtbWVyKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLnJlY29nbml6ZXJzID0gaWZVbmRlZmluZWQob3B0aW9ucy5yZWNvZ25pemVycywgSGFtbWVyLmRlZmF1bHRzLnByZXNldCk7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VyKGVsZW1lbnQsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEBjb25zdCB7c3RyaW5nfVxuICovXG5IYW1tZXIuVkVSU0lPTiA9ICcyLjAuNyc7XG5cbi8qKlxuICogZGVmYXVsdCBzZXR0aW5nc1xuICogQG5hbWVzcGFjZVxuICovXG5IYW1tZXIuZGVmYXVsdHMgPSB7XG4gICAgLyoqXG4gICAgICogc2V0IGlmIERPTSBldmVudHMgYXJlIGJlaW5nIHRyaWdnZXJlZC5cbiAgICAgKiBCdXQgdGhpcyBpcyBzbG93ZXIgYW5kIHVudXNlZCBieSBzaW1wbGUgaW1wbGVtZW50YXRpb25zLCBzbyBkaXNhYmxlZCBieSBkZWZhdWx0LlxuICAgICAqIEB0eXBlIHtCb29sZWFufVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgZG9tRXZlbnRzOiBmYWxzZSxcblxuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZSBmb3IgdGhlIHRvdWNoQWN0aW9uIHByb3BlcnR5L2ZhbGxiYWNrLlxuICAgICAqIFdoZW4gc2V0IHRvIGBjb21wdXRlYCBpdCB3aWxsIG1hZ2ljYWxseSBzZXQgdGhlIGNvcnJlY3QgdmFsdWUgYmFzZWQgb24gdGhlIGFkZGVkIHJlY29nbml6ZXJzLlxuICAgICAqIEB0eXBlIHtTdHJpbmd9XG4gICAgICogQGRlZmF1bHQgY29tcHV0ZVxuICAgICAqL1xuICAgIHRvdWNoQWN0aW9uOiBUT1VDSF9BQ1RJT05fQ09NUFVURSxcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtCb29sZWFufVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGU6IHRydWUsXG5cbiAgICAvKipcbiAgICAgKiBFWFBFUklNRU5UQUwgRkVBVFVSRSAtLSBjYW4gYmUgcmVtb3ZlZC9jaGFuZ2VkXG4gICAgICogQ2hhbmdlIHRoZSBwYXJlbnQgaW5wdXQgdGFyZ2V0IGVsZW1lbnQuXG4gICAgICogSWYgTnVsbCwgdGhlbiBpdCBpcyBiZWluZyBzZXQgdGhlIHRvIG1haW4gZWxlbWVudC5cbiAgICAgKiBAdHlwZSB7TnVsbHxFdmVudFRhcmdldH1cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgaW5wdXRUYXJnZXQ6IG51bGwsXG5cbiAgICAvKipcbiAgICAgKiBmb3JjZSBhbiBpbnB1dCBjbGFzc1xuICAgICAqIEB0eXBlIHtOdWxsfEZ1bmN0aW9ufVxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBpbnB1dENsYXNzOiBudWxsLFxuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCByZWNvZ25pemVyIHNldHVwIHdoZW4gY2FsbGluZyBgSGFtbWVyKClgXG4gICAgICogV2hlbiBjcmVhdGluZyBhIG5ldyBNYW5hZ2VyIHRoZXNlIHdpbGwgYmUgc2tpcHBlZC5cbiAgICAgKiBAdHlwZSB7QXJyYXl9XG4gICAgICovXG4gICAgcHJlc2V0OiBbXG4gICAgICAgIC8vIFJlY29nbml6ZXJDbGFzcywgb3B0aW9ucywgW3JlY29nbml6ZVdpdGgsIC4uLl0sIFtyZXF1aXJlRmFpbHVyZSwgLi4uXVxuICAgICAgICBbUm90YXRlUmVjb2duaXplciwge2VuYWJsZTogZmFsc2V9XSxcbiAgICAgICAgW1BpbmNoUmVjb2duaXplciwge2VuYWJsZTogZmFsc2V9LCBbJ3JvdGF0ZSddXSxcbiAgICAgICAgW1N3aXBlUmVjb2duaXplciwge2RpcmVjdGlvbjogRElSRUNUSU9OX0hPUklaT05UQUx9XSxcbiAgICAgICAgW1BhblJlY29nbml6ZXIsIHtkaXJlY3Rpb246IERJUkVDVElPTl9IT1JJWk9OVEFMfSwgWydzd2lwZSddXSxcbiAgICAgICAgW1RhcFJlY29nbml6ZXJdLFxuICAgICAgICBbVGFwUmVjb2duaXplciwge2V2ZW50OiAnZG91YmxldGFwJywgdGFwczogMn0sIFsndGFwJ11dLFxuICAgICAgICBbUHJlc3NSZWNvZ25pemVyXVxuICAgIF0sXG5cbiAgICAvKipcbiAgICAgKiBTb21lIENTUyBwcm9wZXJ0aWVzIGNhbiBiZSB1c2VkIHRvIGltcHJvdmUgdGhlIHdvcmtpbmcgb2YgSGFtbWVyLlxuICAgICAqIEFkZCB0aGVtIHRvIHRoaXMgbWV0aG9kIGFuZCB0aGV5IHdpbGwgYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgTWFuYWdlci5cbiAgICAgKiBAbmFtZXNwYWNlXG4gICAgICovXG4gICAgY3NzUHJvcHM6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERpc2FibGVzIHRleHQgc2VsZWN0aW9uIHRvIGltcHJvdmUgdGhlIGRyYWdnaW5nIGdlc3R1cmUuIE1haW5seSBmb3IgZGVza3RvcCBicm93c2Vycy5cbiAgICAgICAgICogQHR5cGUge1N0cmluZ31cbiAgICAgICAgICogQGRlZmF1bHQgJ25vbmUnXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERpc2FibGUgdGhlIFdpbmRvd3MgUGhvbmUgZ3JpcHBlcnMgd2hlbiBwcmVzc2luZyBhbiBlbGVtZW50LlxuICAgICAgICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgICAgICAgKiBAZGVmYXVsdCAnbm9uZSdcbiAgICAgICAgICovXG4gICAgICAgIHRvdWNoU2VsZWN0OiAnbm9uZScsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERpc2FibGVzIHRoZSBkZWZhdWx0IGNhbGxvdXQgc2hvd24gd2hlbiB5b3UgdG91Y2ggYW5kIGhvbGQgYSB0b3VjaCB0YXJnZXQuXG4gICAgICAgICAqIE9uIGlPUywgd2hlbiB5b3UgdG91Y2ggYW5kIGhvbGQgYSB0b3VjaCB0YXJnZXQgc3VjaCBhcyBhIGxpbmssIFNhZmFyaSBkaXNwbGF5c1xuICAgICAgICAgKiBhIGNhbGxvdXQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGluay4gVGhpcyBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIGRpc2FibGUgdGhhdCBjYWxsb3V0LlxuICAgICAgICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgICAgICAgKiBAZGVmYXVsdCAnbm9uZSdcbiAgICAgICAgICovXG4gICAgICAgIHRvdWNoQ2FsbG91dDogJ25vbmUnLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTcGVjaWZpZXMgd2hldGhlciB6b29taW5nIGlzIGVuYWJsZWQuIFVzZWQgYnkgSUUxMD5cbiAgICAgICAgICogQHR5cGUge1N0cmluZ31cbiAgICAgICAgICogQGRlZmF1bHQgJ25vbmUnXG4gICAgICAgICAqL1xuICAgICAgICBjb250ZW50Wm9vbWluZzogJ25vbmUnLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTcGVjaWZpZXMgdGhhdCBhbiBlbnRpcmUgZWxlbWVudCBzaG91bGQgYmUgZHJhZ2dhYmxlIGluc3RlYWQgb2YgaXRzIGNvbnRlbnRzLiBNYWlubHkgZm9yIGRlc2t0b3AgYnJvd3NlcnMuXG4gICAgICAgICAqIEB0eXBlIHtTdHJpbmd9XG4gICAgICAgICAqIEBkZWZhdWx0ICdub25lJ1xuICAgICAgICAgKi9cbiAgICAgICAgdXNlckRyYWc6ICdub25lJyxcblxuICAgICAgICAvKipcbiAgICAgICAgICogT3ZlcnJpZGVzIHRoZSBoaWdobGlnaHQgY29sb3Igc2hvd24gd2hlbiB0aGUgdXNlciB0YXBzIGEgbGluayBvciBhIEphdmFTY3JpcHRcbiAgICAgICAgICogY2xpY2thYmxlIGVsZW1lbnQgaW4gaU9TLiBUaGlzIHByb3BlcnR5IG9iZXlzIHRoZSBhbHBoYSB2YWx1ZSwgaWYgc3BlY2lmaWVkLlxuICAgICAgICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgICAgICAgKiBAZGVmYXVsdCAncmdiYSgwLDAsMCwwKSdcbiAgICAgICAgICovXG4gICAgICAgIHRhcEhpZ2hsaWdodENvbG9yOiAncmdiYSgwLDAsMCwwKSdcbiAgICB9XG59O1xuXG52YXIgU1RPUCA9IDE7XG52YXIgRk9SQ0VEX1NUT1AgPSAyO1xuXG4vKipcbiAqIE1hbmFnZXJcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBNYW5hZ2VyKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oe30sIEhhbW1lci5kZWZhdWx0cywgb3B0aW9ucyB8fCB7fSk7XG5cbiAgICB0aGlzLm9wdGlvbnMuaW5wdXRUYXJnZXQgPSB0aGlzLm9wdGlvbnMuaW5wdXRUYXJnZXQgfHwgZWxlbWVudDtcblxuICAgIHRoaXMuaGFuZGxlcnMgPSB7fTtcbiAgICB0aGlzLnNlc3Npb24gPSB7fTtcbiAgICB0aGlzLnJlY29nbml6ZXJzID0gW107XG4gICAgdGhpcy5vbGRDc3NQcm9wcyA9IHt9O1xuXG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLmlucHV0ID0gY3JlYXRlSW5wdXRJbnN0YW5jZSh0aGlzKTtcbiAgICB0aGlzLnRvdWNoQWN0aW9uID0gbmV3IFRvdWNoQWN0aW9uKHRoaXMsIHRoaXMub3B0aW9ucy50b3VjaEFjdGlvbik7XG5cbiAgICB0b2dnbGVDc3NQcm9wcyh0aGlzLCB0cnVlKTtcblxuICAgIGVhY2godGhpcy5vcHRpb25zLnJlY29nbml6ZXJzLCBmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIHZhciByZWNvZ25pemVyID0gdGhpcy5hZGQobmV3IChpdGVtWzBdKShpdGVtWzFdKSk7XG4gICAgICAgIGl0ZW1bMl0gJiYgcmVjb2duaXplci5yZWNvZ25pemVXaXRoKGl0ZW1bMl0pO1xuICAgICAgICBpdGVtWzNdICYmIHJlY29nbml6ZXIucmVxdWlyZUZhaWx1cmUoaXRlbVszXSk7XG4gICAgfSwgdGhpcyk7XG59XG5cbk1hbmFnZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIHNldCBvcHRpb25zXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyB7TWFuYWdlcn1cbiAgICAgKi9cbiAgICBzZXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgICAgYXNzaWduKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgLy8gT3B0aW9ucyB0aGF0IG5lZWQgYSBsaXR0bGUgbW9yZSBzZXR1cFxuICAgICAgICBpZiAob3B0aW9ucy50b3VjaEFjdGlvbikge1xuICAgICAgICAgICAgdGhpcy50b3VjaEFjdGlvbi51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5pbnB1dFRhcmdldCkge1xuICAgICAgICAgICAgLy8gQ2xlYW4gdXAgZXhpc3RpbmcgZXZlbnQgbGlzdGVuZXJzIGFuZCByZWluaXRpYWxpemVcbiAgICAgICAgICAgIHRoaXMuaW5wdXQuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dC50YXJnZXQgPSBvcHRpb25zLmlucHV0VGFyZ2V0O1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5pbml0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHN0b3AgcmVjb2duaXppbmcgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICAgKiBUaGlzIHNlc3Npb24gd2lsbCBiZSBkaXNjYXJkZWQsIHdoZW4gYSBuZXcgW2lucHV0XXN0YXJ0IGV2ZW50IGlzIGZpcmVkLlxuICAgICAqIFdoZW4gZm9yY2VkLCB0aGUgcmVjb2duaXplciBjeWNsZSBpcyBzdG9wcGVkIGltbWVkaWF0ZWx5LlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2ZvcmNlXVxuICAgICAqL1xuICAgIHN0b3A6IGZ1bmN0aW9uKGZvcmNlKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbi5zdG9wcGVkID0gZm9yY2UgPyBGT1JDRURfU1RPUCA6IFNUT1A7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHJ1biB0aGUgcmVjb2duaXplcnMhXG4gICAgICogY2FsbGVkIGJ5IHRoZSBpbnB1dEhhbmRsZXIgZnVuY3Rpb24gb24gZXZlcnkgbW92ZW1lbnQgb2YgdGhlIHBvaW50ZXJzICh0b3VjaGVzKVxuICAgICAqIGl0IHdhbGtzIHRocm91Z2ggYWxsIHRoZSByZWNvZ25pemVycyBhbmQgdHJpZXMgdG8gZGV0ZWN0IHRoZSBnZXN0dXJlIHRoYXQgaXMgYmVpbmcgbWFkZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dERhdGFcbiAgICAgKi9cbiAgICByZWNvZ25pemU6IGZ1bmN0aW9uKGlucHV0RGF0YSkge1xuICAgICAgICB2YXIgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbjtcbiAgICAgICAgaWYgKHNlc3Npb24uc3RvcHBlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcnVuIHRoZSB0b3VjaC1hY3Rpb24gcG9seWZpbGxcbiAgICAgICAgdGhpcy50b3VjaEFjdGlvbi5wcmV2ZW50RGVmYXVsdHMoaW5wdXREYXRhKTtcblxuICAgICAgICB2YXIgcmVjb2duaXplcjtcbiAgICAgICAgdmFyIHJlY29nbml6ZXJzID0gdGhpcy5yZWNvZ25pemVycztcblxuICAgICAgICAvLyB0aGlzIGhvbGRzIHRoZSByZWNvZ25pemVyIHRoYXQgaXMgYmVpbmcgcmVjb2duaXplZC5cbiAgICAgICAgLy8gc28gdGhlIHJlY29nbml6ZXIncyBzdGF0ZSBuZWVkcyB0byBiZSBCRUdBTiwgQ0hBTkdFRCwgRU5ERUQgb3IgUkVDT0dOSVpFRFxuICAgICAgICAvLyBpZiBubyByZWNvZ25pemVyIGlzIGRldGVjdGluZyBhIHRoaW5nLCBpdCBpcyBzZXQgdG8gYG51bGxgXG4gICAgICAgIHZhciBjdXJSZWNvZ25pemVyID0gc2Vzc2lvbi5jdXJSZWNvZ25pemVyO1xuXG4gICAgICAgIC8vIHJlc2V0IHdoZW4gdGhlIGxhc3QgcmVjb2duaXplciBpcyByZWNvZ25pemVkXG4gICAgICAgIC8vIG9yIHdoZW4gd2UncmUgaW4gYSBuZXcgc2Vzc2lvblxuICAgICAgICBpZiAoIWN1clJlY29nbml6ZXIgfHwgKGN1clJlY29nbml6ZXIgJiYgY3VyUmVjb2duaXplci5zdGF0ZSAmIFNUQVRFX1JFQ09HTklaRUQpKSB7XG4gICAgICAgICAgICBjdXJSZWNvZ25pemVyID0gc2Vzc2lvbi5jdXJSZWNvZ25pemVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCByZWNvZ25pemVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlY29nbml6ZXIgPSByZWNvZ25pemVyc1tpXTtcblxuICAgICAgICAgICAgLy8gZmluZCBvdXQgaWYgd2UgYXJlIGFsbG93ZWQgdHJ5IHRvIHJlY29nbml6ZSB0aGUgaW5wdXQgZm9yIHRoaXMgb25lLlxuICAgICAgICAgICAgLy8gMS4gICBhbGxvdyBpZiB0aGUgc2Vzc2lvbiBpcyBOT1QgZm9yY2VkIHN0b3BwZWQgKHNlZSB0aGUgLnN0b3AoKSBtZXRob2QpXG4gICAgICAgICAgICAvLyAyLiAgIGFsbG93IGlmIHdlIHN0aWxsIGhhdmVuJ3QgcmVjb2duaXplZCBhIGdlc3R1cmUgaW4gdGhpcyBzZXNzaW9uLCBvciB0aGUgdGhpcyByZWNvZ25pemVyIGlzIHRoZSBvbmVcbiAgICAgICAgICAgIC8vICAgICAgdGhhdCBpcyBiZWluZyByZWNvZ25pemVkLlxuICAgICAgICAgICAgLy8gMy4gICBhbGxvdyBpZiB0aGUgcmVjb2duaXplciBpcyBhbGxvd2VkIHRvIHJ1biBzaW11bHRhbmVvdXMgd2l0aCB0aGUgY3VycmVudCByZWNvZ25pemVkIHJlY29nbml6ZXIuXG4gICAgICAgICAgICAvLyAgICAgIHRoaXMgY2FuIGJlIHNldHVwIHdpdGggdGhlIGByZWNvZ25pemVXaXRoKClgIG1ldGhvZCBvbiB0aGUgcmVjb2duaXplci5cbiAgICAgICAgICAgIGlmIChzZXNzaW9uLnN0b3BwZWQgIT09IEZPUkNFRF9TVE9QICYmICggLy8gMVxuICAgICAgICAgICAgICAgICAgICAhY3VyUmVjb2duaXplciB8fCByZWNvZ25pemVyID09IGN1clJlY29nbml6ZXIgfHwgLy8gMlxuICAgICAgICAgICAgICAgICAgICByZWNvZ25pemVyLmNhblJlY29nbml6ZVdpdGgoY3VyUmVjb2duaXplcikpKSB7IC8vIDNcbiAgICAgICAgICAgICAgICByZWNvZ25pemVyLnJlY29nbml6ZShpbnB1dERhdGEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWNvZ25pemVyLnJlc2V0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZSByZWNvZ25pemVyIGhhcyBiZWVuIHJlY29nbml6aW5nIHRoZSBpbnB1dCBhcyBhIHZhbGlkIGdlc3R1cmUsIHdlIHdhbnQgdG8gc3RvcmUgdGhpcyBvbmUgYXMgdGhlXG4gICAgICAgICAgICAvLyBjdXJyZW50IGFjdGl2ZSByZWNvZ25pemVyLiBidXQgb25seSBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgYW4gYWN0aXZlIHJlY29nbml6ZXJcbiAgICAgICAgICAgIGlmICghY3VyUmVjb2duaXplciAmJiByZWNvZ25pemVyLnN0YXRlICYgKFNUQVRFX0JFR0FOIHwgU1RBVEVfQ0hBTkdFRCB8IFNUQVRFX0VOREVEKSkge1xuICAgICAgICAgICAgICAgIGN1clJlY29nbml6ZXIgPSBzZXNzaW9uLmN1clJlY29nbml6ZXIgPSByZWNvZ25pemVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGdldCBhIHJlY29nbml6ZXIgYnkgaXRzIGV2ZW50IG5hbWUuXG4gICAgICogQHBhcmFtIHtSZWNvZ25pemVyfFN0cmluZ30gcmVjb2duaXplclxuICAgICAqIEByZXR1cm5zIHtSZWNvZ25pemVyfE51bGx9XG4gICAgICovXG4gICAgZ2V0OiBmdW5jdGlvbihyZWNvZ25pemVyKSB7XG4gICAgICAgIGlmIChyZWNvZ25pemVyIGluc3RhbmNlb2YgUmVjb2duaXplcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlY29nbml6ZXI7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVjb2duaXplcnMgPSB0aGlzLnJlY29nbml6ZXJzO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlY29nbml6ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocmVjb2duaXplcnNbaV0ub3B0aW9ucy5ldmVudCA9PSByZWNvZ25pemVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlY29nbml6ZXJzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBhZGQgYSByZWNvZ25pemVyIHRvIHRoZSBtYW5hZ2VyXG4gICAgICogZXhpc3RpbmcgcmVjb2duaXplcnMgd2l0aCB0aGUgc2FtZSBldmVudCBuYW1lIHdpbGwgYmUgcmVtb3ZlZFxuICAgICAqIEBwYXJhbSB7UmVjb2duaXplcn0gcmVjb2duaXplclxuICAgICAqIEByZXR1cm5zIHtSZWNvZ25pemVyfE1hbmFnZXJ9XG4gICAgICovXG4gICAgYWRkOiBmdW5jdGlvbihyZWNvZ25pemVyKSB7XG4gICAgICAgIGlmIChpbnZva2VBcnJheUFyZyhyZWNvZ25pemVyLCAnYWRkJywgdGhpcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVtb3ZlIGV4aXN0aW5nXG4gICAgICAgIHZhciBleGlzdGluZyA9IHRoaXMuZ2V0KHJlY29nbml6ZXIub3B0aW9ucy5ldmVudCk7XG4gICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUoZXhpc3RpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWNvZ25pemVycy5wdXNoKHJlY29nbml6ZXIpO1xuICAgICAgICByZWNvZ25pemVyLm1hbmFnZXIgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMudG91Y2hBY3Rpb24udXBkYXRlKCk7XG4gICAgICAgIHJldHVybiByZWNvZ25pemVyO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiByZW1vdmUgYSByZWNvZ25pemVyIGJ5IG5hbWUgb3IgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0ge1JlY29nbml6ZXJ8U3RyaW5nfSByZWNvZ25pemVyXG4gICAgICogQHJldHVybnMge01hbmFnZXJ9XG4gICAgICovXG4gICAgcmVtb3ZlOiBmdW5jdGlvbihyZWNvZ25pemVyKSB7XG4gICAgICAgIGlmIChpbnZva2VBcnJheUFyZyhyZWNvZ25pemVyLCAncmVtb3ZlJywgdGhpcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVjb2duaXplciA9IHRoaXMuZ2V0KHJlY29nbml6ZXIpO1xuXG4gICAgICAgIC8vIGxldCdzIG1ha2Ugc3VyZSB0aGlzIHJlY29nbml6ZXIgZXhpc3RzXG4gICAgICAgIGlmIChyZWNvZ25pemVyKSB7XG4gICAgICAgICAgICB2YXIgcmVjb2duaXplcnMgPSB0aGlzLnJlY29nbml6ZXJzO1xuICAgICAgICAgICAgdmFyIGluZGV4ID0gaW5BcnJheShyZWNvZ25pemVycywgcmVjb2duaXplcik7XG5cbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZWNvZ25pemVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hBY3Rpb24udXBkYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogYmluZCBldmVudFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudHNcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyXG4gICAgICogQHJldHVybnMge0V2ZW50RW1pdHRlcn0gdGhpc1xuICAgICAqL1xuICAgIG9uOiBmdW5jdGlvbihldmVudHMsIGhhbmRsZXIpIHtcbiAgICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhbmRsZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGhhbmRsZXJzID0gdGhpcy5oYW5kbGVycztcbiAgICAgICAgZWFjaChzcGxpdFN0cihldmVudHMpLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgaGFuZGxlcnNbZXZlbnRdID0gaGFuZGxlcnNbZXZlbnRdIHx8IFtdO1xuICAgICAgICAgICAgaGFuZGxlcnNbZXZlbnRdLnB1c2goaGFuZGxlcik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogdW5iaW5kIGV2ZW50LCBsZWF2ZSBlbWl0IGJsYW5rIHRvIHJlbW92ZSBhbGwgaGFuZGxlcnNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnRzXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2hhbmRsZXJdXG4gICAgICogQHJldHVybnMge0V2ZW50RW1pdHRlcn0gdGhpc1xuICAgICAqL1xuICAgIG9mZjogZnVuY3Rpb24oZXZlbnRzLCBoYW5kbGVyKSB7XG4gICAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGhhbmRsZXJzID0gdGhpcy5oYW5kbGVycztcbiAgICAgICAgZWFjaChzcGxpdFN0cihldmVudHMpLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGhhbmRsZXJzW2V2ZW50XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlcnNbZXZlbnRdICYmIGhhbmRsZXJzW2V2ZW50XS5zcGxpY2UoaW5BcnJheShoYW5kbGVyc1tldmVudF0sIGhhbmRsZXIpLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBlbWl0IGV2ZW50IHRvIHRoZSBsaXN0ZW5lcnNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnRcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YVxuICAgICAqL1xuICAgIGVtaXQ6IGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG4gICAgICAgIC8vIHdlIGFsc28gd2FudCB0byB0cmlnZ2VyIGRvbSBldmVudHNcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kb21FdmVudHMpIHtcbiAgICAgICAgICAgIHRyaWdnZXJEb21FdmVudChldmVudCwgZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBubyBoYW5kbGVycywgc28gc2tpcCBpdCBhbGxcbiAgICAgICAgdmFyIGhhbmRsZXJzID0gdGhpcy5oYW5kbGVyc1tldmVudF0gJiYgdGhpcy5oYW5kbGVyc1tldmVudF0uc2xpY2UoKTtcbiAgICAgICAgaWYgKCFoYW5kbGVycyB8fCAhaGFuZGxlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLnR5cGUgPSBldmVudDtcbiAgICAgICAgZGF0YS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZGF0YS5zcmNFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCBoYW5kbGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGhhbmRsZXJzW2ldKGRhdGEpO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGRlc3Ryb3kgdGhlIG1hbmFnZXIgYW5kIHVuYmluZHMgYWxsIGV2ZW50c1xuICAgICAqIGl0IGRvZXNuJ3QgdW5iaW5kIGRvbSBldmVudHMsIHRoYXQgaXMgdGhlIHVzZXIgb3duIHJlc3BvbnNpYmlsaXR5XG4gICAgICovXG4gICAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudCAmJiB0b2dnbGVDc3NQcm9wcyh0aGlzLCBmYWxzZSk7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVycyA9IHt9O1xuICAgICAgICB0aGlzLnNlc3Npb24gPSB7fTtcbiAgICAgICAgdGhpcy5pbnB1dC5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gICAgfVxufTtcblxuLyoqXG4gKiBhZGQvcmVtb3ZlIHRoZSBjc3MgcHJvcGVydGllcyBhcyBkZWZpbmVkIGluIG1hbmFnZXIub3B0aW9ucy5jc3NQcm9wc1xuICogQHBhcmFtIHtNYW5hZ2VyfSBtYW5hZ2VyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGFkZFxuICovXG5mdW5jdGlvbiB0b2dnbGVDc3NQcm9wcyhtYW5hZ2VyLCBhZGQpIHtcbiAgICB2YXIgZWxlbWVudCA9IG1hbmFnZXIuZWxlbWVudDtcbiAgICBpZiAoIWVsZW1lbnQuc3R5bGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgcHJvcDtcbiAgICBlYWNoKG1hbmFnZXIub3B0aW9ucy5jc3NQcm9wcywgZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgcHJvcCA9IHByZWZpeGVkKGVsZW1lbnQuc3R5bGUsIG5hbWUpO1xuICAgICAgICBpZiAoYWRkKSB7XG4gICAgICAgICAgICBtYW5hZ2VyLm9sZENzc1Byb3BzW3Byb3BdID0gZWxlbWVudC5zdHlsZVtwcm9wXTtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGVbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGVbcHJvcF0gPSBtYW5hZ2VyLm9sZENzc1Byb3BzW3Byb3BdIHx8ICcnO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFhZGQpIHtcbiAgICAgICAgbWFuYWdlci5vbGRDc3NQcm9wcyA9IHt9O1xuICAgIH1cbn1cblxuLyoqXG4gKiB0cmlnZ2VyIGRvbSBldmVudFxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50XG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YVxuICovXG5mdW5jdGlvbiB0cmlnZ2VyRG9tRXZlbnQoZXZlbnQsIGRhdGEpIHtcbiAgICB2YXIgZ2VzdHVyZUV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgZ2VzdHVyZUV2ZW50LmluaXRFdmVudChldmVudCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgZ2VzdHVyZUV2ZW50Lmdlc3R1cmUgPSBkYXRhO1xuICAgIGRhdGEudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZ2VzdHVyZUV2ZW50KTtcbn1cblxuYXNzaWduKEhhbW1lciwge1xuICAgIElOUFVUX1NUQVJUOiBJTlBVVF9TVEFSVCxcbiAgICBJTlBVVF9NT1ZFOiBJTlBVVF9NT1ZFLFxuICAgIElOUFVUX0VORDogSU5QVVRfRU5ELFxuICAgIElOUFVUX0NBTkNFTDogSU5QVVRfQ0FOQ0VMLFxuXG4gICAgU1RBVEVfUE9TU0lCTEU6IFNUQVRFX1BPU1NJQkxFLFxuICAgIFNUQVRFX0JFR0FOOiBTVEFURV9CRUdBTixcbiAgICBTVEFURV9DSEFOR0VEOiBTVEFURV9DSEFOR0VELFxuICAgIFNUQVRFX0VOREVEOiBTVEFURV9FTkRFRCxcbiAgICBTVEFURV9SRUNPR05JWkVEOiBTVEFURV9SRUNPR05JWkVELFxuICAgIFNUQVRFX0NBTkNFTExFRDogU1RBVEVfQ0FOQ0VMTEVELFxuICAgIFNUQVRFX0ZBSUxFRDogU1RBVEVfRkFJTEVELFxuXG4gICAgRElSRUNUSU9OX05PTkU6IERJUkVDVElPTl9OT05FLFxuICAgIERJUkVDVElPTl9MRUZUOiBESVJFQ1RJT05fTEVGVCxcbiAgICBESVJFQ1RJT05fUklHSFQ6IERJUkVDVElPTl9SSUdIVCxcbiAgICBESVJFQ1RJT05fVVA6IERJUkVDVElPTl9VUCxcbiAgICBESVJFQ1RJT05fRE9XTjogRElSRUNUSU9OX0RPV04sXG4gICAgRElSRUNUSU9OX0hPUklaT05UQUw6IERJUkVDVElPTl9IT1JJWk9OVEFMLFxuICAgIERJUkVDVElPTl9WRVJUSUNBTDogRElSRUNUSU9OX1ZFUlRJQ0FMLFxuICAgIERJUkVDVElPTl9BTEw6IERJUkVDVElPTl9BTEwsXG5cbiAgICBNYW5hZ2VyOiBNYW5hZ2VyLFxuICAgIElucHV0OiBJbnB1dCxcbiAgICBUb3VjaEFjdGlvbjogVG91Y2hBY3Rpb24sXG5cbiAgICBUb3VjaElucHV0OiBUb3VjaElucHV0LFxuICAgIE1vdXNlSW5wdXQ6IE1vdXNlSW5wdXQsXG4gICAgUG9pbnRlckV2ZW50SW5wdXQ6IFBvaW50ZXJFdmVudElucHV0LFxuICAgIFRvdWNoTW91c2VJbnB1dDogVG91Y2hNb3VzZUlucHV0LFxuICAgIFNpbmdsZVRvdWNoSW5wdXQ6IFNpbmdsZVRvdWNoSW5wdXQsXG5cbiAgICBSZWNvZ25pemVyOiBSZWNvZ25pemVyLFxuICAgIEF0dHJSZWNvZ25pemVyOiBBdHRyUmVjb2duaXplcixcbiAgICBUYXA6IFRhcFJlY29nbml6ZXIsXG4gICAgUGFuOiBQYW5SZWNvZ25pemVyLFxuICAgIFN3aXBlOiBTd2lwZVJlY29nbml6ZXIsXG4gICAgUGluY2g6IFBpbmNoUmVjb2duaXplcixcbiAgICBSb3RhdGU6IFJvdGF0ZVJlY29nbml6ZXIsXG4gICAgUHJlc3M6IFByZXNzUmVjb2duaXplcixcblxuICAgIG9uOiBhZGRFdmVudExpc3RlbmVycyxcbiAgICBvZmY6IHJlbW92ZUV2ZW50TGlzdGVuZXJzLFxuICAgIGVhY2g6IGVhY2gsXG4gICAgbWVyZ2U6IG1lcmdlLFxuICAgIGV4dGVuZDogZXh0ZW5kLFxuICAgIGFzc2lnbjogYXNzaWduLFxuICAgIGluaGVyaXQ6IGluaGVyaXQsXG4gICAgYmluZEZuOiBiaW5kRm4sXG4gICAgcHJlZml4ZWQ6IHByZWZpeGVkXG59KTtcblxuLy8gdGhpcyBwcmV2ZW50cyBlcnJvcnMgd2hlbiBIYW1tZXIgaXMgbG9hZGVkIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBBTURcbi8vICBzdHlsZSBsb2FkZXIgYnV0IGJ5IHNjcmlwdCB0YWcsIG5vdCBieSB0aGUgbG9hZGVyLlxudmFyIGZyZWVHbG9iYWwgPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9KSk7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuZnJlZUdsb2JhbC5IYW1tZXIgPSBIYW1tZXI7XG5cbmlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICBkZWZpbmUoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBIYW1tZXI7XG4gICAgfSk7XG59IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEhhbW1lcjtcbn0gZWxzZSB7XG4gICAgd2luZG93W2V4cG9ydE5hbWVdID0gSGFtbWVyO1xufVxuXG59KSh3aW5kb3csIGRvY3VtZW50LCAnSGFtbWVyJyk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBLFNBSUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/hammerjs/hammer.js\n");

/***/ }),

/***/ "./node_modules/lodash/lodash.js":
/*!***************************************!*\
  !*** ./node_modules/lodash/lodash.js ***!
  \***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.17.15';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading and trailing whitespace. */\n  var reTrim = /^\\s+|\\s+$/g,\n      reTrimStart = /^\\s+/,\n      reTrimEnd = /\\s+$/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports =  true && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {number} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      var index = -1;\n      iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      value = iteratee(value);\n\n      var low = 0,\n          high = array == null ? 0 : array.length,\n          valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      return object == null || delete object[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(array);\n      if (stacked && stack.get(other)) {\n        return stacked == other;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked && stack.get(other)) {\n        return stacked == other;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        result[pair[0]] = pair[1];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = value.replace(reTrim, '');\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('déjà vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n      // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      // Like with sourceURL, we take care to not check the option's prototype,\n      // as this configuration is a code injection vector.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrim, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimEnd, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (true) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n      return _;\n    }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else {}\n}.call(this));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xvZGFzaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbG9kYXNoLmpzPzJlZjAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogTG9kYXNoIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQ29weXJpZ2h0IE9wZW5KUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vb3BlbmpzZi5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG47KGZ1bmN0aW9uKCkge1xuXG4gIC8qKiBVc2VkIGFzIGEgc2FmZSByZWZlcmVuY2UgZm9yIGB1bmRlZmluZWRgIGluIHByZS1FUzUgZW52aXJvbm1lbnRzLiAqL1xuICB2YXIgdW5kZWZpbmVkO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci4gKi9cbiAgdmFyIFZFUlNJT04gPSAnNC4xNy4xNSc7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG4gIHZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4gIC8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbiAgdmFyIENPUkVfRVJST1JfVEVYVCA9ICdVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC4nLFxuICAgICAgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4gIC8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbiAgdmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbiAgdmFyIE1BWF9NRU1PSVpFX1NJWkUgPSA1MDA7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIGludGVybmFsIGFyZ3VtZW50IHBsYWNlaG9sZGVyLiAqL1xuICB2YXIgUExBQ0VIT0xERVIgPSAnX19sb2Rhc2hfcGxhY2Vob2xkZXJfXyc7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbiAgdmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbiAgdmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGZ1bmN0aW9uIG1ldGFkYXRhLiAqL1xuICB2YXIgV1JBUF9CSU5EX0ZMQUcgPSAxLFxuICAgICAgV1JBUF9CSU5EX0tFWV9GTEFHID0gMixcbiAgICAgIFdSQVBfQ1VSUllfQk9VTkRfRkxBRyA9IDQsXG4gICAgICBXUkFQX0NVUlJZX0ZMQUcgPSA4LFxuICAgICAgV1JBUF9DVVJSWV9SSUdIVF9GTEFHID0gMTYsXG4gICAgICBXUkFQX1BBUlRJQUxfRkxBRyA9IDMyLFxuICAgICAgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcgPSA2NCxcbiAgICAgIFdSQVBfQVJZX0ZMQUcgPSAxMjgsXG4gICAgICBXUkFQX1JFQVJHX0ZMQUcgPSAyNTYsXG4gICAgICBXUkFQX0ZMSVBfRkxBRyA9IDUxMjtcblxuICAvKiogVXNlZCBhcyBkZWZhdWx0IG9wdGlvbnMgZm9yIGBfLnRydW5jYXRlYC4gKi9cbiAgdmFyIERFRkFVTFRfVFJVTkNfTEVOR1RIID0gMzAsXG4gICAgICBERUZBVUxUX1RSVU5DX09NSVNTSU9OID0gJy4uLic7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xuICB2YXIgSE9UX0NPVU5UID0gODAwLFxuICAgICAgSE9UX1NQQU4gPSAxNjtcblxuICAvKiogVXNlZCB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBsYXp5IGl0ZXJhdGVlcy4gKi9cbiAgdmFyIExBWllfRklMVEVSX0ZMQUcgPSAxLFxuICAgICAgTEFaWV9NQVBfRkxBRyA9IDIsXG4gICAgICBMQVpZX1dISUxFX0ZMQUcgPSAzO1xuXG4gIC8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xuICB2YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICAgIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxLFxuICAgICAgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCxcbiAgICAgIE5BTiA9IDAgLyAwO1xuXG4gIC8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBhbmQgaW5kZXggb2YgYW4gYXJyYXkuICovXG4gIHZhciBNQVhfQVJSQVlfTEVOR1RIID0gNDI5NDk2NzI5NSxcbiAgICAgIE1BWF9BUlJBWV9JTkRFWCA9IE1BWF9BUlJBWV9MRU5HVEggLSAxLFxuICAgICAgSEFMRl9NQVhfQVJSQVlfTEVOR1RIID0gTUFYX0FSUkFZX0xFTkdUSCA+Pj4gMTtcblxuICAvKiogVXNlZCB0byBhc3NvY2lhdGUgd3JhcCBtZXRob2RzIHdpdGggdGhlaXIgYml0IGZsYWdzLiAqL1xuICB2YXIgd3JhcEZsYWdzID0gW1xuICAgIFsnYXJ5JywgV1JBUF9BUllfRkxBR10sXG4gICAgWydiaW5kJywgV1JBUF9CSU5EX0ZMQUddLFxuICAgIFsnYmluZEtleScsIFdSQVBfQklORF9LRVlfRkxBR10sXG4gICAgWydjdXJyeScsIFdSQVBfQ1VSUllfRkxBR10sXG4gICAgWydjdXJyeVJpZ2h0JywgV1JBUF9DVVJSWV9SSUdIVF9GTEFHXSxcbiAgICBbJ2ZsaXAnLCBXUkFQX0ZMSVBfRkxBR10sXG4gICAgWydwYXJ0aWFsJywgV1JBUF9QQVJUSUFMX0ZMQUddLFxuICAgIFsncGFydGlhbFJpZ2h0JywgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUddLFxuICAgIFsncmVhcmcnLCBXUkFQX1JFQVJHX0ZMQUddXG4gIF07XG5cbiAgLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xuICB2YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgICAgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICAgIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICAgIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XScsXG4gICAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nLFxuICAgICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJyxcbiAgICAgIHdlYWtTZXRUYWcgPSAnW29iamVjdCBXZWFrU2V0XSc7XG5cbiAgdmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuICAvKiogVXNlZCB0byBtYXRjaCBlbXB0eSBzdHJpbmcgbGl0ZXJhbHMgaW4gY29tcGlsZWQgdGVtcGxhdGUgc291cmNlLiAqL1xuICB2YXIgcmVFbXB0eVN0cmluZ0xlYWRpbmcgPSAvXFxiX19wIFxcKz0gJyc7L2csXG4gICAgICByZUVtcHR5U3RyaW5nTWlkZGxlID0gL1xcYihfX3AgXFwrPSkgJycgXFwrL2csXG4gICAgICByZUVtcHR5U3RyaW5nVHJhaWxpbmcgPSAvKF9fZVxcKC4qP1xcKXxcXGJfX3RcXCkpIFxcK1xcbicnOy9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIEhUTUwgZW50aXRpZXMgYW5kIEhUTUwgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlRXNjYXBlZEh0bWwgPSAvJig/OmFtcHxsdHxndHxxdW90fCMzOSk7L2csXG4gICAgICByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ10vZyxcbiAgICAgIHJlSGFzRXNjYXBlZEh0bWwgPSBSZWdFeHAocmVFc2NhcGVkSHRtbC5zb3VyY2UpLFxuICAgICAgcmVIYXNVbmVzY2FwZWRIdG1sID0gUmVnRXhwKHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG4gIHZhciByZUVzY2FwZSA9IC88JS0oW1xcc1xcU10rPyklPi9nLFxuICAgICAgcmVFdmFsdWF0ZSA9IC88JShbXFxzXFxTXSs/KSU+L2csXG4gICAgICByZUludGVycG9sYXRlID0gLzwlPShbXFxzXFxTXSs/KSU+L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLyxcbiAgICAgIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAgICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gICAqL1xuICB2YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nLFxuICAgICAgcmVIYXNSZWdFeHBDaGFyID0gUmVnRXhwKHJlUmVnRXhwQ2hhci5zb3VyY2UpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovXG4gIHZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZyxcbiAgICAgIHJlVHJpbVN0YXJ0ID0gL15cXHMrLyxcbiAgICAgIHJlVHJpbUVuZCA9IC9cXHMrJC87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggd3JhcCBkZXRhaWwgY29tbWVudHMuICovXG4gIHZhciByZVdyYXBDb21tZW50ID0gL1xceyg/OlxcblxcL1xcKiBcXFt3cmFwcGVkIHdpdGggLitcXF0gXFwqXFwvKT9cXG4/LyxcbiAgICAgIHJlV3JhcERldGFpbHMgPSAvXFx7XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAoLispXFxdIFxcKi8sXG4gICAgICByZVNwbGl0RGV0YWlscyA9IC8sPyAmIC87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggd29yZHMgY29tcG9zZWQgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuICovXG4gIHZhciByZUFzY2lpV29yZCA9IC9bXlxceDAwLVxceDJmXFx4M2EtXFx4NDBcXHg1Yi1cXHg2MFxceDdiLVxceDdmXSsvZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbiAgdmFyIHJlRXNjYXBlQ2hhciA9IC9cXFxcKFxcXFwpPy9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hdGNoXG4gICAqIFtFUyB0ZW1wbGF0ZSBkZWxpbWl0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10ZW1wbGF0ZS1saXRlcmFsLWxleGljYWwtY29tcG9uZW50cykuXG4gICAqL1xuICB2YXIgcmVFc1RlbXBsYXRlID0gL1xcJFxceyhbXlxcXFx9XSooPzpcXFxcLlteXFxcXH1dKikqKVxcfS9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgIGZsYWdzIGZyb20gdGhlaXIgY29lcmNlZCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbiAgdmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuICAvKiogVXNlZCB0byBtYXRjaCBMYXRpbiBVbmljb2RlIGxldHRlcnMgKGV4Y2x1ZGluZyBtYXRoZW1hdGljYWwgb3BlcmF0b3JzKS4gKi9cbiAgdmFyIHJlTGF0aW4gPSAvW1xceGMwLVxceGQ2XFx4ZDgtXFx4ZjZcXHhmOC1cXHhmZlxcdTAxMDAtXFx1MDE3Zl0vZztcblxuICAvKiogVXNlZCB0byBlbnN1cmUgY2FwdHVyaW5nIG9yZGVyIG9mIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG4gIHZhciByZU5vTWF0Y2ggPSAvKCReKS87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggdW5lc2NhcGVkIGNoYXJhY3RlcnMgaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLiAqL1xuICB2YXIgcmVVbmVzY2FwZWRTdHJpbmcgPSAvWydcXG5cXHJcXHUyMDI4XFx1MjAyOVxcXFxdL2c7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xuICB2YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICAgIHJzRGluZ2JhdFJhbmdlID0gJ1xcXFx1MjcwMC1cXFxcdTI3YmYnLFxuICAgICAgcnNMb3dlclJhbmdlID0gJ2EtelxcXFx4ZGYtXFxcXHhmNlxcXFx4ZjgtXFxcXHhmZicsXG4gICAgICByc01hdGhPcFJhbmdlID0gJ1xcXFx4YWNcXFxceGIxXFxcXHhkN1xcXFx4ZjcnLFxuICAgICAgcnNOb25DaGFyUmFuZ2UgPSAnXFxcXHgwMC1cXFxceDJmXFxcXHgzYS1cXFxceDQwXFxcXHg1Yi1cXFxceDYwXFxcXHg3Yi1cXFxceGJmJyxcbiAgICAgIHJzUHVuY3R1YXRpb25SYW5nZSA9ICdcXFxcdTIwMDAtXFxcXHUyMDZmJyxcbiAgICAgIHJzU3BhY2VSYW5nZSA9ICcgXFxcXHRcXFxceDBiXFxcXGZcXFxceGEwXFxcXHVmZWZmXFxcXG5cXFxcclxcXFx1MjAyOFxcXFx1MjAyOVxcXFx1MTY4MFxcXFx1MTgwZVxcXFx1MjAwMFxcXFx1MjAwMVxcXFx1MjAwMlxcXFx1MjAwM1xcXFx1MjAwNFxcXFx1MjAwNVxcXFx1MjAwNlxcXFx1MjAwN1xcXFx1MjAwOFxcXFx1MjAwOVxcXFx1MjAwYVxcXFx1MjAyZlxcXFx1MjA1ZlxcXFx1MzAwMCcsXG4gICAgICByc1VwcGVyUmFuZ2UgPSAnQS1aXFxcXHhjMC1cXFxceGQ2XFxcXHhkOC1cXFxceGRlJyxcbiAgICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJyxcbiAgICAgIHJzQnJlYWtSYW5nZSA9IHJzTWF0aE9wUmFuZ2UgKyByc05vbkNoYXJSYW5nZSArIHJzUHVuY3R1YXRpb25SYW5nZSArIHJzU3BhY2VSYW5nZTtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG4gIHZhciByc0Fwb3MgPSBcIlsnXFx1MjAxOV1cIixcbiAgICAgIHJzQXN0cmFsID0gJ1snICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzQnJlYWsgPSAnWycgKyByc0JyZWFrUmFuZ2UgKyAnXScsXG4gICAgICByc0NvbWJvID0gJ1snICsgcnNDb21ib1JhbmdlICsgJ10nLFxuICAgICAgcnNEaWdpdHMgPSAnXFxcXGQrJyxcbiAgICAgIHJzRGluZ2JhdCA9ICdbJyArIHJzRGluZ2JhdFJhbmdlICsgJ10nLFxuICAgICAgcnNMb3dlciA9ICdbJyArIHJzTG93ZXJSYW5nZSArICddJyxcbiAgICAgIHJzTWlzYyA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgcnNCcmVha1JhbmdlICsgcnNEaWdpdHMgKyByc0RpbmdiYXRSYW5nZSArIHJzTG93ZXJSYW5nZSArIHJzVXBwZXJSYW5nZSArICddJyxcbiAgICAgIHJzRml0eiA9ICdcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl0nLFxuICAgICAgcnNNb2RpZmllciA9ICcoPzonICsgcnNDb21ibyArICd8JyArIHJzRml0eiArICcpJyxcbiAgICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgICByc1JlZ2lvbmFsID0gJyg/OlxcXFx1ZDgzY1tcXFxcdWRkZTYtXFxcXHVkZGZmXSl7Mn0nLFxuICAgICAgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nLFxuICAgICAgcnNVcHBlciA9ICdbJyArIHJzVXBwZXJSYW5nZSArICddJyxcbiAgICAgIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG4gIHZhciByc01pc2NMb3dlciA9ICcoPzonICsgcnNMb3dlciArICd8JyArIHJzTWlzYyArICcpJyxcbiAgICAgIHJzTWlzY1VwcGVyID0gJyg/OicgKyByc1VwcGVyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNPcHRDb250ckxvd2VyID0gJyg/OicgKyByc0Fwb3MgKyAnKD86ZHxsbHxtfHJlfHN8dHx2ZSkpPycsXG4gICAgICByc09wdENvbnRyVXBwZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpEfExMfE18UkV8U3xUfFZFKSk/JyxcbiAgICAgIHJlT3B0TW9kID0gcnNNb2RpZmllciArICc/JyxcbiAgICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgICByc09wdEpvaW4gPSAnKD86JyArIHJzWldKICsgJyg/OicgKyBbcnNOb25Bc3RyYWwsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzT3B0VmFyICsgcmVPcHRNb2QgKyAnKSonLFxuICAgICAgcnNPcmRMb3dlciA9ICdcXFxcZCooPzoxc3R8Mm5kfDNyZHwoPyFbMTIzXSlcXFxcZHRoKSg/PVxcXFxifFtBLVpfXSknLFxuICAgICAgcnNPcmRVcHBlciA9ICdcXFxcZCooPzoxU1R8Mk5EfDNSRHwoPyFbMTIzXSlcXFxcZFRIKSg/PVxcXFxifFthLXpfXSknLFxuICAgICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgICAgcnNFbW9qaSA9ICcoPzonICsgW3JzRGluZ2JhdCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNTZXEsXG4gICAgICByc1N5bWJvbCA9ICcoPzonICsgW3JzTm9uQXN0cmFsICsgcnNDb21ibyArICc/JywgcnNDb21ibywgcnNSZWdpb25hbCwgcnNTdXJyUGFpciwgcnNBc3RyYWxdLmpvaW4oJ3wnKSArICcpJztcblxuICAvKiogVXNlZCB0byBtYXRjaCBhcG9zdHJvcGhlcy4gKi9cbiAgdmFyIHJlQXBvcyA9IFJlZ0V4cChyc0Fwb3MsICdnJyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2ggW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzKSBhbmRcbiAgICogW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBmb3Igc3ltYm9sc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzX2Zvcl9TeW1ib2xzKS5cbiAgICovXG4gIHZhciByZUNvbWJvTWFyayA9IFJlZ0V4cChyc0NvbWJvLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG4gIHZhciByZVVuaWNvZGUgPSBSZWdFeHAocnNGaXR6ICsgJyg/PScgKyByc0ZpdHogKyAnKXwnICsgcnNTeW1ib2wgKyByc1NlcSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBjb21wbGV4IG9yIGNvbXBvdW5kIHdvcmRzLiAqL1xuICB2YXIgcmVVbmljb2RlV29yZCA9IFJlZ0V4cChbXG4gICAgcnNVcHBlciArICc/JyArIHJzTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIgKyAnKD89JyArIFtyc0JyZWFrLCByc1VwcGVyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc01pc2NVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIgKyByc01pc2NMb3dlciwgJyQnXS5qb2luKCd8JykgKyAnKScsXG4gICAgcnNVcHBlciArICc/JyArIHJzTWlzY0xvd2VyICsgJysnICsgcnNPcHRDb250ckxvd2VyLFxuICAgIHJzVXBwZXIgKyAnKycgKyByc09wdENvbnRyVXBwZXIsXG4gICAgcnNPcmRVcHBlcixcbiAgICByc09yZExvd2VyLFxuICAgIHJzRGlnaXRzLFxuICAgIHJzRW1vamlcbiAgXS5qb2luKCd8JyksICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG4gIHZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHRoYXQgbmVlZCBhIG1vcmUgcm9idXN0IHJlZ2V4cCB0byBtYXRjaCB3b3Jkcy4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZVdvcmQgPSAvW2Etel1bQS1aXXxbQS1aXXsyfVthLXpdfFswLTldW2EtekEtWl18W2EtekEtWl1bMC05XXxbXmEtekEtWjAtOSBdLztcblxuICAvKiogVXNlZCB0byBhc3NpZ24gZGVmYXVsdCBgY29udGV4dGAgb2JqZWN0IHByb3BlcnRpZXMuICovXG4gIHZhciBjb250ZXh0UHJvcHMgPSBbXG4gICAgJ0FycmF5JywgJ0J1ZmZlcicsICdEYXRhVmlldycsICdEYXRlJywgJ0Vycm9yJywgJ0Zsb2F0MzJBcnJheScsICdGbG9hdDY0QXJyYXknLFxuICAgICdGdW5jdGlvbicsICdJbnQ4QXJyYXknLCAnSW50MTZBcnJheScsICdJbnQzMkFycmF5JywgJ01hcCcsICdNYXRoJywgJ09iamVjdCcsXG4gICAgJ1Byb21pc2UnLCAnUmVnRXhwJywgJ1NldCcsICdTdHJpbmcnLCAnU3ltYm9sJywgJ1R5cGVFcnJvcicsICdVaW50OEFycmF5JyxcbiAgICAnVWludDhDbGFtcGVkQXJyYXknLCAnVWludDE2QXJyYXknLCAnVWludDMyQXJyYXknLCAnV2Vha01hcCcsXG4gICAgJ18nLCAnY2xlYXJUaW1lb3V0JywgJ2lzRmluaXRlJywgJ3BhcnNlSW50JywgJ3NldFRpbWVvdXQnXG4gIF07XG5cbiAgLyoqIFVzZWQgdG8gbWFrZSB0ZW1wbGF0ZSBzb3VyY2VVUkxzIGVhc2llciB0byBpZGVudGlmeS4gKi9cbiAgdmFyIHRlbXBsYXRlQ291bnRlciA9IC0xO1xuXG4gIC8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbiAgdmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG4gIHR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG4gIHR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBzdXBwb3J0ZWQgYnkgYF8uY2xvbmVgLiAqL1xuICB2YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuICBjbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2FycmF5QnVmZmVyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0YVZpZXdUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0ZVRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbaW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbaW50MzJUYWddID0gY2xvbmVhYmxlVGFnc1ttYXBUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tyZWdleHBUYWddID0gY2xvbmVhYmxlVGFnc1tzZXRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID0gY2xvbmVhYmxlVGFnc1tzeW1ib2xUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3VpbnQxNlRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuICBjbG9uZWFibGVUYWdzW2Vycm9yVGFnXSA9IGNsb25lYWJsZVRhZ3NbZnVuY1RhZ10gPVxuICBjbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbiAgLyoqIFVzZWQgdG8gbWFwIExhdGluIFVuaWNvZGUgbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzLiAqL1xuICB2YXIgZGVidXJyZWRMZXR0ZXJzID0ge1xuICAgIC8vIExhdGluLTEgU3VwcGxlbWVudCBibG9jay5cbiAgICAnXFx4YzAnOiAnQScsICAnXFx4YzEnOiAnQScsICdcXHhjMic6ICdBJywgJ1xceGMzJzogJ0EnLCAnXFx4YzQnOiAnQScsICdcXHhjNSc6ICdBJyxcbiAgICAnXFx4ZTAnOiAnYScsICAnXFx4ZTEnOiAnYScsICdcXHhlMic6ICdhJywgJ1xceGUzJzogJ2EnLCAnXFx4ZTQnOiAnYScsICdcXHhlNSc6ICdhJyxcbiAgICAnXFx4YzcnOiAnQycsICAnXFx4ZTcnOiAnYycsXG4gICAgJ1xceGQwJzogJ0QnLCAgJ1xceGYwJzogJ2QnLFxuICAgICdcXHhjOCc6ICdFJywgICdcXHhjOSc6ICdFJywgJ1xceGNhJzogJ0UnLCAnXFx4Y2InOiAnRScsXG4gICAgJ1xceGU4JzogJ2UnLCAgJ1xceGU5JzogJ2UnLCAnXFx4ZWEnOiAnZScsICdcXHhlYic6ICdlJyxcbiAgICAnXFx4Y2MnOiAnSScsICAnXFx4Y2QnOiAnSScsICdcXHhjZSc6ICdJJywgJ1xceGNmJzogJ0knLFxuICAgICdcXHhlYyc6ICdpJywgICdcXHhlZCc6ICdpJywgJ1xceGVlJzogJ2knLCAnXFx4ZWYnOiAnaScsXG4gICAgJ1xceGQxJzogJ04nLCAgJ1xceGYxJzogJ24nLFxuICAgICdcXHhkMic6ICdPJywgICdcXHhkMyc6ICdPJywgJ1xceGQ0JzogJ08nLCAnXFx4ZDUnOiAnTycsICdcXHhkNic6ICdPJywgJ1xceGQ4JzogJ08nLFxuICAgICdcXHhmMic6ICdvJywgICdcXHhmMyc6ICdvJywgJ1xceGY0JzogJ28nLCAnXFx4ZjUnOiAnbycsICdcXHhmNic6ICdvJywgJ1xceGY4JzogJ28nLFxuICAgICdcXHhkOSc6ICdVJywgICdcXHhkYSc6ICdVJywgJ1xceGRiJzogJ1UnLCAnXFx4ZGMnOiAnVScsXG4gICAgJ1xceGY5JzogJ3UnLCAgJ1xceGZhJzogJ3UnLCAnXFx4ZmInOiAndScsICdcXHhmYyc6ICd1JyxcbiAgICAnXFx4ZGQnOiAnWScsICAnXFx4ZmQnOiAneScsICdcXHhmZic6ICd5JyxcbiAgICAnXFx4YzYnOiAnQWUnLCAnXFx4ZTYnOiAnYWUnLFxuICAgICdcXHhkZSc6ICdUaCcsICdcXHhmZSc6ICd0aCcsXG4gICAgJ1xceGRmJzogJ3NzJyxcbiAgICAvLyBMYXRpbiBFeHRlbmRlZC1BIGJsb2NrLlxuICAgICdcXHUwMTAwJzogJ0EnLCAgJ1xcdTAxMDInOiAnQScsICdcXHUwMTA0JzogJ0EnLFxuICAgICdcXHUwMTAxJzogJ2EnLCAgJ1xcdTAxMDMnOiAnYScsICdcXHUwMTA1JzogJ2EnLFxuICAgICdcXHUwMTA2JzogJ0MnLCAgJ1xcdTAxMDgnOiAnQycsICdcXHUwMTBhJzogJ0MnLCAnXFx1MDEwYyc6ICdDJyxcbiAgICAnXFx1MDEwNyc6ICdjJywgICdcXHUwMTA5JzogJ2MnLCAnXFx1MDEwYic6ICdjJywgJ1xcdTAxMGQnOiAnYycsXG4gICAgJ1xcdTAxMGUnOiAnRCcsICAnXFx1MDExMCc6ICdEJywgJ1xcdTAxMGYnOiAnZCcsICdcXHUwMTExJzogJ2QnLFxuICAgICdcXHUwMTEyJzogJ0UnLCAgJ1xcdTAxMTQnOiAnRScsICdcXHUwMTE2JzogJ0UnLCAnXFx1MDExOCc6ICdFJywgJ1xcdTAxMWEnOiAnRScsXG4gICAgJ1xcdTAxMTMnOiAnZScsICAnXFx1MDExNSc6ICdlJywgJ1xcdTAxMTcnOiAnZScsICdcXHUwMTE5JzogJ2UnLCAnXFx1MDExYic6ICdlJyxcbiAgICAnXFx1MDExYyc6ICdHJywgICdcXHUwMTFlJzogJ0cnLCAnXFx1MDEyMCc6ICdHJywgJ1xcdTAxMjInOiAnRycsXG4gICAgJ1xcdTAxMWQnOiAnZycsICAnXFx1MDExZic6ICdnJywgJ1xcdTAxMjEnOiAnZycsICdcXHUwMTIzJzogJ2cnLFxuICAgICdcXHUwMTI0JzogJ0gnLCAgJ1xcdTAxMjYnOiAnSCcsICdcXHUwMTI1JzogJ2gnLCAnXFx1MDEyNyc6ICdoJyxcbiAgICAnXFx1MDEyOCc6ICdJJywgICdcXHUwMTJhJzogJ0knLCAnXFx1MDEyYyc6ICdJJywgJ1xcdTAxMmUnOiAnSScsICdcXHUwMTMwJzogJ0knLFxuICAgICdcXHUwMTI5JzogJ2knLCAgJ1xcdTAxMmInOiAnaScsICdcXHUwMTJkJzogJ2knLCAnXFx1MDEyZic6ICdpJywgJ1xcdTAxMzEnOiAnaScsXG4gICAgJ1xcdTAxMzQnOiAnSicsICAnXFx1MDEzNSc6ICdqJyxcbiAgICAnXFx1MDEzNic6ICdLJywgICdcXHUwMTM3JzogJ2snLCAnXFx1MDEzOCc6ICdrJyxcbiAgICAnXFx1MDEzOSc6ICdMJywgICdcXHUwMTNiJzogJ0wnLCAnXFx1MDEzZCc6ICdMJywgJ1xcdTAxM2YnOiAnTCcsICdcXHUwMTQxJzogJ0wnLFxuICAgICdcXHUwMTNhJzogJ2wnLCAgJ1xcdTAxM2MnOiAnbCcsICdcXHUwMTNlJzogJ2wnLCAnXFx1MDE0MCc6ICdsJywgJ1xcdTAxNDInOiAnbCcsXG4gICAgJ1xcdTAxNDMnOiAnTicsICAnXFx1MDE0NSc6ICdOJywgJ1xcdTAxNDcnOiAnTicsICdcXHUwMTRhJzogJ04nLFxuICAgICdcXHUwMTQ0JzogJ24nLCAgJ1xcdTAxNDYnOiAnbicsICdcXHUwMTQ4JzogJ24nLCAnXFx1MDE0Yic6ICduJyxcbiAgICAnXFx1MDE0Yyc6ICdPJywgICdcXHUwMTRlJzogJ08nLCAnXFx1MDE1MCc6ICdPJyxcbiAgICAnXFx1MDE0ZCc6ICdvJywgICdcXHUwMTRmJzogJ28nLCAnXFx1MDE1MSc6ICdvJyxcbiAgICAnXFx1MDE1NCc6ICdSJywgICdcXHUwMTU2JzogJ1InLCAnXFx1MDE1OCc6ICdSJyxcbiAgICAnXFx1MDE1NSc6ICdyJywgICdcXHUwMTU3JzogJ3InLCAnXFx1MDE1OSc6ICdyJyxcbiAgICAnXFx1MDE1YSc6ICdTJywgICdcXHUwMTVjJzogJ1MnLCAnXFx1MDE1ZSc6ICdTJywgJ1xcdTAxNjAnOiAnUycsXG4gICAgJ1xcdTAxNWInOiAncycsICAnXFx1MDE1ZCc6ICdzJywgJ1xcdTAxNWYnOiAncycsICdcXHUwMTYxJzogJ3MnLFxuICAgICdcXHUwMTYyJzogJ1QnLCAgJ1xcdTAxNjQnOiAnVCcsICdcXHUwMTY2JzogJ1QnLFxuICAgICdcXHUwMTYzJzogJ3QnLCAgJ1xcdTAxNjUnOiAndCcsICdcXHUwMTY3JzogJ3QnLFxuICAgICdcXHUwMTY4JzogJ1UnLCAgJ1xcdTAxNmEnOiAnVScsICdcXHUwMTZjJzogJ1UnLCAnXFx1MDE2ZSc6ICdVJywgJ1xcdTAxNzAnOiAnVScsICdcXHUwMTcyJzogJ1UnLFxuICAgICdcXHUwMTY5JzogJ3UnLCAgJ1xcdTAxNmInOiAndScsICdcXHUwMTZkJzogJ3UnLCAnXFx1MDE2Zic6ICd1JywgJ1xcdTAxNzEnOiAndScsICdcXHUwMTczJzogJ3UnLFxuICAgICdcXHUwMTc0JzogJ1cnLCAgJ1xcdTAxNzUnOiAndycsXG4gICAgJ1xcdTAxNzYnOiAnWScsICAnXFx1MDE3Nyc6ICd5JywgJ1xcdTAxNzgnOiAnWScsXG4gICAgJ1xcdTAxNzknOiAnWicsICAnXFx1MDE3Yic6ICdaJywgJ1xcdTAxN2QnOiAnWicsXG4gICAgJ1xcdTAxN2EnOiAneicsICAnXFx1MDE3Yyc6ICd6JywgJ1xcdTAxN2UnOiAneicsXG4gICAgJ1xcdTAxMzInOiAnSUonLCAnXFx1MDEzMyc6ICdpaicsXG4gICAgJ1xcdTAxNTInOiAnT2UnLCAnXFx1MDE1Myc6ICdvZScsXG4gICAgJ1xcdTAxNDknOiBcIiduXCIsICdcXHUwMTdmJzogJ3MnXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gbWFwIGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy4gKi9cbiAgdmFyIGh0bWxFc2NhcGVzID0ge1xuICAgICcmJzogJyZhbXA7JyxcbiAgICAnPCc6ICcmbHQ7JyxcbiAgICAnPic6ICcmZ3Q7JyxcbiAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICBcIidcIjogJyYjMzk7J1xuICB9O1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBIVE1MIGVudGl0aWVzIHRvIGNoYXJhY3RlcnMuICovXG4gIHZhciBodG1sVW5lc2NhcGVzID0ge1xuICAgICcmYW1wOyc6ICcmJyxcbiAgICAnJmx0Oyc6ICc8JyxcbiAgICAnJmd0Oyc6ICc+JyxcbiAgICAnJnF1b3Q7JzogJ1wiJyxcbiAgICAnJiMzOTsnOiBcIidcIlxuICB9O1xuXG4gIC8qKiBVc2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLiAqL1xuICB2YXIgc3RyaW5nRXNjYXBlcyA9IHtcbiAgICAnXFxcXCc6ICdcXFxcJyxcbiAgICBcIidcIjogXCInXCIsXG4gICAgJ1xcbic6ICduJyxcbiAgICAnXFxyJzogJ3InLFxuICAgICdcXHUyMDI4JzogJ3UyMDI4JyxcbiAgICAnXFx1MjAyOSc6ICd1MjAyOSdcbiAgfTtcblxuICAvKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xuICB2YXIgZnJlZVBhcnNlRmxvYXQgPSBwYXJzZUZsb2F0LFxuICAgICAgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbiAgdmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG4gIHZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4gIC8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xuICB2YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xuICB2YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xuICB2YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4gIC8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG4gIHZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xuICB2YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuICAvKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbiAgdmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgICBpZiAodHlwZXMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVzO1xuICAgICAgfVxuXG4gICAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH0oKSk7XG5cbiAgLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIG5vZGVJc0FycmF5QnVmZmVyID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNBcnJheUJ1ZmZlcixcbiAgICAgIG5vZGVJc0RhdGUgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0RhdGUsXG4gICAgICBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcCxcbiAgICAgIG5vZGVJc1JlZ0V4cCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzUmVnRXhwLFxuICAgICAgbm9kZUlzU2V0ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNTZXQsXG4gICAgICBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8qKlxuICAgKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gICAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlQWdncmVnYXRvcmAgZm9yIGFycmF5cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgYWdncmVnYXRlZCBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlBZ2dyZWdhdG9yKGFycmF5LCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIHZhbHVlLCBpdGVyYXRlZSh2YWx1ZSksIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RWFjaChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaFJpZ2h0YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RWFjaFJpZ2h0KGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgaWYgKGl0ZXJhdGVlKGFycmF5W2xlbmd0aF0sIGxlbmd0aCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5ldmVyeWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFdmVyeShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmICghcHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBzcGVjaWZ5aW5nIGFuIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUluY2x1ZGVzKGFycmF5LCB2YWx1ZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gISFsZW5ndGggJiYgYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCAwKSA+IC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXJyYXlJbmNsdWRlc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlJbmNsdWRlc1dpdGgoYXJyYXksIHZhbHVlLCBjb21wYXJhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKHZhbHVlLCBhcnJheVtpbmRleF0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAqIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtvZmZzZXQgKyBpbmRleF0gPSB2YWx1ZXNbaW5kZXhdO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVkdWNlKGFycmF5LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGFycmF5WysraW5kZXhdO1xuICAgIH1cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZVJpZ2h0YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAgICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVJlZHVjZVJpZ2h0KGFycmF5LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgICAgYWNjdW11bGF0b3IgPSBhcnJheVstLWxlbmd0aF07XG4gICAgfVxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbbGVuZ3RoXSwgbGVuZ3RoLCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAqIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICogIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2l6ZSBvZiBhbiBBU0NJSSBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgdmFyIGFzY2lpU2l6ZSA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIEFTQ0lJIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhc2NpaVRvQXJyYXkoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5zcGxpdCgnJyk7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXRzIGFuIEFTQ0lJIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXNjaWlXb3JkcyhzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlQXNjaWlXb3JkKSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZmluZEtleWAgYW5kIGBfLmZpbmRMYXN0S2V5YCxcbiAgICogd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYFxuICAgKiB1c2luZyBgZWFjaEZ1bmNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmb3VuZCBlbGVtZW50IG9yIGl0cyBrZXksIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlRmluZEtleShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGVhY2hGdW5jKSB7XG4gICAgdmFyIHJlc3VsdDtcbiAgICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pKSB7XG4gICAgICAgIHJlc3VsdCA9IGtleTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAgd2l0aG91dFxuICAgKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VGaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4LCBmcm9tUmlnaHQpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21JbmRleCArIChmcm9tUmlnaHQgPyAxIDogLTEpO1xuXG4gICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgYGZyb21JbmRleGAgYm91bmRzIGNoZWNrcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgICA/IHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpXG4gICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGJhc2VJbmRleE9mYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSW5kZXhPZldpdGgoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNvbXBhcmF0b3IoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYU5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbnVtYmVyIG9iamVjdHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUlzTmFOKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZWFuYCBhbmQgYF8ubWVhbkJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lYW4uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlTWVhbihhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgcmV0dXJuIGxlbmd0aCA/IChiYXNlU3VtKGFycmF5LCBpdGVyYXRlZSkgLyBsZW5ndGgpIDogTkFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5T2ZgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eU9mKG9iamVjdCkge1xuICAgIHJldHVybiBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAgICogZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gIHVzaW5nIGBlYWNoRnVuY2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBpbml0QWNjdW0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3Qgb3IgbGFzdCBlbGVtZW50IG9mXG4gICAqICBgY29sbGVjdGlvbmAgYXMgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBlYWNoRnVuYykge1xuICAgIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgYWNjdW11bGF0b3IgPSBpbml0QWNjdW1cbiAgICAgICAgPyAoaW5pdEFjY3VtID0gZmFsc2UsIHZhbHVlKVxuICAgICAgICA6IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgIH0pO1xuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gICAqIHNvcnQgb3JkZXIgb2YgYGFycmF5YCBhbmQgcmVwbGFjZXMgY3JpdGVyaWEgb2JqZWN0cyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmdcbiAgICogdmFsdWVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc29ydC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIGFycmF5LnNvcnQoY29tcGFyZXIpO1xuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgYXJyYXlbbGVuZ3RoXSA9IGFycmF5W2xlbmd0aF0udmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zdW1gIGFuZCBgXy5zdW1CeWAgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlU3VtKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciByZXN1bHQsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSk7XG4gICAgICBpZiAoY3VycmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gY3VycmVudCA6IChyZXN1bHQgKyBjdXJyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gICAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9QYWlyc2AgYW5kIGBfLnRvUGFpcnNJbmAgd2hpY2ggY3JlYXRlcyBhbiBhcnJheVxuICAgKiBvZiBrZXktdmFsdWUgcGFpcnMgZm9yIGBvYmplY3RgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzIG9mIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVG9QYWlycyhvYmplY3QsIHByb3BzKSB7XG4gICAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBba2V5LCBvYmplY3Rba2V5XV07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy52YWx1ZXNgIGFuZCBgXy52YWx1ZXNJbmAgd2hpY2ggY3JlYXRlcyBhblxuICAgKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAgICogb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VWYWx1ZXMob2JqZWN0LCBwcm9wcykge1xuICAgIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gY2FjaGVIYXMoY2FjaGUsIGtleSkge1xuICAgIHJldHVybiBjYWNoZS5oYXMoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltU3RhcnRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHN0cmluZyBzeW1ib2xcbiAgICogdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoYXJhY3RlciBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBzdHJTeW1ib2xzIFRoZSBzdHJpbmcgc3ltYm9scyB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0FycmF5fSBjaHJTeW1ib2xzIFRoZSBjaGFyYWN0ZXIgc3ltYm9scyB0byBmaW5kLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc1N0YXJ0SW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHN0cmluZyBzeW1ib2xcbiAgICogdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoYXJhY3RlciBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBzdHJTeW1ib2xzIFRoZSBzdHJpbmcgc3ltYm9scyB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0FycmF5fSBjaHJTeW1ib2xzIFRoZSBjaGFyYWN0ZXIgc3ltYm9scyB0byBmaW5kLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB1bm1hdGNoZWQgc3RyaW5nIHN5bWJvbC5cbiAgICovXG4gIGZ1bmN0aW9uIGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykge1xuICAgIHZhciBpbmRleCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGluZGV4LS0gJiYgYmFzZUluZGV4T2YoY2hyU3ltYm9scywgc3RyU3ltYm9sc1tpbmRleF0sIDApID4gLTEpIHt9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBgcGxhY2Vob2xkZXJgIG9jY3VycmVuY2VzIGluIGBhcnJheWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciBjb3VudC5cbiAgICovXG4gIGZ1bmN0aW9uIGNvdW50SG9sZGVycyhhcnJheSwgcGxhY2Vob2xkZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXN1bHQgPSAwO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoYXJyYXlbbGVuZ3RoXSA9PT0gcGxhY2Vob2xkZXIpIHtcbiAgICAgICAgKytyZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy5kZWJ1cnJgIHRvIGNvbnZlcnQgTGF0aW4tMSBTdXBwbGVtZW50IGFuZCBMYXRpbiBFeHRlbmRlZC1BXG4gICAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxldHRlciBUaGUgbWF0Y2hlZCBsZXR0ZXIgdG8gZGVidXJyLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBsZXR0ZXIuXG4gICAqL1xuICB2YXIgZGVidXJyTGV0dGVyID0gYmFzZVByb3BlcnR5T2YoZGVidXJyZWRMZXR0ZXJzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy5lc2NhcGVgIHRvIGNvbnZlcnQgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgKi9cbiAgdmFyIGVzY2FwZUh0bWxDaGFyID0gYmFzZVByb3BlcnR5T2YoaHRtbEVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRlbXBsYXRlYCB0byBlc2NhcGUgY2hhcmFjdGVycyBmb3IgaW5jbHVzaW9uIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIGZ1bmN0aW9uIGVzY2FwZVN0cmluZ0NoYXIoY2hyKSB7XG4gICAgcmV0dXJuICdcXFxcJyArIHN0cmluZ0VzY2FwZXNbY2hyXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSBzeW1ib2wgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZS50ZXN0KHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIGEgd29yZCBjb21wb3NlZCBvZiBVbmljb2RlIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSB3b3JkIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlV29yZChzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVIYXNVbmljb2RlV29yZC50ZXN0KHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYGl0ZXJhdG9yYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGl0ZXJhdG9yIFRoZSBpdGVyYXRvciB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGl0ZXJhdG9yVG9BcnJheShpdGVyYXRvcikge1xuICAgIHZhciBkYXRhLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICghKGRhdGEgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGRhdGEudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICAgIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICAgIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBgcGxhY2Vob2xkZXJgIGVsZW1lbnRzIGluIGBhcnJheWAgd2l0aCBhbiBpbnRlcm5hbCBwbGFjZWhvbGRlclxuICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGVpciBpbmRleGVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB0byByZXBsYWNlLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgKi9cbiAgZnVuY3Rpb24gcmVwbGFjZUhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAodmFsdWUgPT09IHBsYWNlaG9sZGVyIHx8IHZhbHVlID09PSBQTEFDRUhPTERFUikge1xuICAgICAgICBhcnJheVtpbmRleF0gPSBQTEFDRUhPTERFUjtcbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gICAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYHNldGAgdG8gaXRzIHZhbHVlLXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvUGFpcnMoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBbdmFsdWUsIHZhbHVlXTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAgICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5sYXN0SW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0TGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggKyAxO1xuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2Ygc3ltYm9scyBpbiBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaW5nU2l6ZShzdHJpbmcpIHtcbiAgICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICA/IHVuaWNvZGVTaXplKHN0cmluZylcbiAgICAgIDogYXNjaWlTaXplKHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlVG9BcnJheShzdHJpbmcpXG4gICAgICA6IGFzY2lpVG9BcnJheShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udW5lc2NhcGVgIHRvIGNvbnZlcnQgSFRNTCBlbnRpdGllcyB0byBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byB1bmVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5lc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciB1bmVzY2FwZUh0bWxDaGFyID0gYmFzZVByb3BlcnR5T2YoaHRtbFVuZXNjYXBlcyk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpemUgb2YgYSBVbmljb2RlIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICBmdW5jdGlvbiB1bmljb2RlU2l6ZShzdHJpbmcpIHtcbiAgICB2YXIgcmVzdWx0ID0gcmVVbmljb2RlLmxhc3RJbmRleCA9IDA7XG4gICAgd2hpbGUgKHJlVW5pY29kZS50ZXN0KHN0cmluZykpIHtcbiAgICAgICsrcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgVW5pY29kZSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVRvQXJyYXkoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGUpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBhIFVuaWNvZGUgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiB1bmljb2RlV29yZHMoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGVXb3JkKSB8fCBbXTtcbiAgfVxuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcHJpc3RpbmUgYGxvZGFzaGAgZnVuY3Rpb24gdXNpbmcgdGhlIGBjb250ZXh0YCBvYmplY3QuXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQG1lbWJlck9mIF9cbiAgICogQHNpbmNlIDEuMS4wXG4gICAqIEBjYXRlZ29yeSBVdGlsXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbY29udGV4dD1yb290XSBUaGUgY29udGV4dCBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBhIG5ldyBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogXy5taXhpbih7ICdmb28nOiBfLmNvbnN0YW50KCdmb28nKSB9KTtcbiAgICpcbiAgICogdmFyIGxvZGFzaCA9IF8ucnVuSW5Db250ZXh0KCk7XG4gICAqIGxvZGFzaC5taXhpbih7ICdiYXInOiBsb2Rhc2guY29uc3RhbnQoJ2JhcicpIH0pO1xuICAgKlxuICAgKiBfLmlzRnVuY3Rpb24oXy5mb28pO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqIF8uaXNGdW5jdGlvbihfLmJhcik7XG4gICAqIC8vID0+IGZhbHNlXG4gICAqXG4gICAqIGxvZGFzaC5pc0Z1bmN0aW9uKGxvZGFzaC5mb28pO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guYmFyKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKlxuICAgKiAvLyBDcmVhdGUgYSBzdXBlZC11cCBgZGVmZXJgIGluIE5vZGUuanMuXG4gICAqIHZhciBkZWZlciA9IF8ucnVuSW5Db250ZXh0KHsgJ3NldFRpbWVvdXQnOiBzZXRJbW1lZGlhdGUgfSkuZGVmZXI7XG4gICAqL1xuICB2YXIgcnVuSW5Db250ZXh0ID0gKGZ1bmN0aW9uIHJ1bkluQ29udGV4dChjb250ZXh0KSB7XG4gICAgY29udGV4dCA9IGNvbnRleHQgPT0gbnVsbCA/IHJvb3QgOiBfLmRlZmF1bHRzKHJvb3QuT2JqZWN0KCksIGNvbnRleHQsIF8ucGljayhyb290LCBjb250ZXh0UHJvcHMpKTtcblxuICAgIC8qKiBCdWlsdC1pbiBjb25zdHJ1Y3RvciByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBBcnJheSA9IGNvbnRleHQuQXJyYXksXG4gICAgICAgIERhdGUgPSBjb250ZXh0LkRhdGUsXG4gICAgICAgIEVycm9yID0gY29udGV4dC5FcnJvcixcbiAgICAgICAgRnVuY3Rpb24gPSBjb250ZXh0LkZ1bmN0aW9uLFxuICAgICAgICBNYXRoID0gY29udGV4dC5NYXRoLFxuICAgICAgICBPYmplY3QgPSBjb250ZXh0Lk9iamVjdCxcbiAgICAgICAgUmVnRXhwID0gY29udGV4dC5SZWdFeHAsXG4gICAgICAgIFN0cmluZyA9IGNvbnRleHQuU3RyaW5nLFxuICAgICAgICBUeXBlRXJyb3IgPSBjb250ZXh0LlR5cGVFcnJvcjtcblxuICAgIC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZSxcbiAgICAgICAgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgICAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG4gICAgdmFyIGNvcmVKc0RhdGEgPSBjb250ZXh0WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbiAgICB2YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG4gICAgdmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbiAgICAvKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xuICAgIHZhciBpZENvdW50ZXIgPSAwO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbiAgICB2YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgICAgIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gICAgICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG4gICAgfSgpKTtcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAgICAgKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAgICAgKiBvZiB2YWx1ZXMuXG4gICAgICovXG4gICAgdmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbiAgICAvKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG4gICAgdmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4gICAgLyoqIFVzZWQgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYF9gIHJlZmVyZW5jZSBpbiBgXy5ub0NvbmZsaWN0YC4gKi9cbiAgICB2YXIgb2xkRGFzaCA9IHJvb3QuXztcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG4gICAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgICAgIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gICAgICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbiAgICApO1xuXG4gICAgLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyBjb250ZXh0LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgU3ltYm9sID0gY29udGV4dC5TeW1ib2wsXG4gICAgICAgIFVpbnQ4QXJyYXkgPSBjb250ZXh0LlVpbnQ4QXJyYXksXG4gICAgICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkLFxuICAgICAgICBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSxcbiAgICAgICAgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZSxcbiAgICAgICAgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZSxcbiAgICAgICAgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2UsXG4gICAgICAgIHNwcmVhZGFibGVTeW1ib2wgPSBTeW1ib2wgPyBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1JdGVyYXRvciA9IFN5bWJvbCA/IFN5bWJvbC5pdGVyYXRvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgICAgICBmdW5jKHt9LCAnJywge30pO1xuICAgICAgICByZXR1cm4gZnVuYztcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfSgpKTtcblxuICAgIC8qKiBNb2NrZWQgYnVpbHQtaW5zLiAqL1xuICAgIHZhciBjdHhDbGVhclRpbWVvdXQgPSBjb250ZXh0LmNsZWFyVGltZW91dCAhPT0gcm9vdC5jbGVhclRpbWVvdXQgJiYgY29udGV4dC5jbGVhclRpbWVvdXQsXG4gICAgICAgIGN0eE5vdyA9IERhdGUgJiYgRGF0ZS5ub3cgIT09IHJvb3QuRGF0ZS5ub3cgJiYgRGF0ZS5ub3csXG4gICAgICAgIGN0eFNldFRpbWVvdXQgPSBjb250ZXh0LnNldFRpbWVvdXQgIT09IHJvb3Quc2V0VGltZW91dCAmJiBjb250ZXh0LnNldFRpbWVvdXQ7XG5cbiAgICAvKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG4gICAgdmFyIG5hdGl2ZUNlaWwgPSBNYXRoLmNlaWwsXG4gICAgICAgIG5hdGl2ZUZsb29yID0gTWF0aC5mbG9vcixcbiAgICAgICAgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsXG4gICAgICAgIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgICAgICBuYXRpdmVJc0Zpbml0ZSA9IGNvbnRleHQuaXNGaW5pdGUsXG4gICAgICAgIG5hdGl2ZUpvaW4gPSBhcnJheVByb3RvLmpvaW4sXG4gICAgICAgIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpLFxuICAgICAgICBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICAgICAgbmF0aXZlTWluID0gTWF0aC5taW4sXG4gICAgICAgIG5hdGl2ZU5vdyA9IERhdGUubm93LFxuICAgICAgICBuYXRpdmVQYXJzZUludCA9IGNvbnRleHQucGFyc2VJbnQsXG4gICAgICAgIG5hdGl2ZVJhbmRvbSA9IE1hdGgucmFuZG9tLFxuICAgICAgICBuYXRpdmVSZXZlcnNlID0gYXJyYXlQcm90by5yZXZlcnNlO1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xuICAgIHZhciBEYXRhVmlldyA9IGdldE5hdGl2ZShjb250ZXh0LCAnRGF0YVZpZXcnKSxcbiAgICAgICAgTWFwID0gZ2V0TmF0aXZlKGNvbnRleHQsICdNYXAnKSxcbiAgICAgICAgUHJvbWlzZSA9IGdldE5hdGl2ZShjb250ZXh0LCAnUHJvbWlzZScpLFxuICAgICAgICBTZXQgPSBnZXROYXRpdmUoY29udGV4dCwgJ1NldCcpLFxuICAgICAgICBXZWFrTWFwID0gZ2V0TmF0aXZlKGNvbnRleHQsICdXZWFrTWFwJyksXG4gICAgICAgIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxuICAgIC8qKiBVc2VkIHRvIHN0b3JlIGZ1bmN0aW9uIG1ldGFkYXRhLiAqL1xuICAgIHZhciBtZXRhTWFwID0gV2Vha01hcCAmJiBuZXcgV2Vha01hcDtcblxuICAgIC8qKiBVc2VkIHRvIGxvb2t1cCB1bm1pbmlmaWVkIGZ1bmN0aW9uIG5hbWVzLiAqL1xuICAgIHZhciByZWFsTmFtZXMgPSB7fTtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG4gICAgdmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICAgICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgICAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4gICAgLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG4gICAgdmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIG9iamVjdCB3aGljaCB3cmFwcyBgdmFsdWVgIHRvIGVuYWJsZSBpbXBsaWNpdCBtZXRob2RcbiAgICAgKiBjaGFpbiBzZXF1ZW5jZXMuIE1ldGhvZHMgdGhhdCBvcGVyYXRlIG9uIGFuZCByZXR1cm4gYXJyYXlzLCBjb2xsZWN0aW9ucyxcbiAgICAgKiBhbmQgZnVuY3Rpb25zIGNhbiBiZSBjaGFpbmVkIHRvZ2V0aGVyLiBNZXRob2RzIHRoYXQgcmV0cmlldmUgYSBzaW5nbGUgdmFsdWVcbiAgICAgKiBvciBtYXkgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIHdpbGwgYXV0b21hdGljYWxseSBlbmQgdGhlIGNoYWluIHNlcXVlbmNlXG4gICAgICogYW5kIHJldHVybiB0aGUgdW53cmFwcGVkIHZhbHVlLiBPdGhlcndpc2UsIHRoZSB2YWx1ZSBtdXN0IGJlIHVud3JhcHBlZFxuICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAqXG4gICAgICogRXhwbGljaXQgY2hhaW4gc2VxdWVuY2VzLCB3aGljaCBtdXN0IGJlIHVud3JhcHBlZCB3aXRoIGBfI3ZhbHVlYCwgbWF5IGJlXG4gICAgICogZW5hYmxlZCB1c2luZyBgXy5jaGFpbmAuXG4gICAgICpcbiAgICAgKiBUaGUgZXhlY3V0aW9uIG9mIGNoYWluZWQgbWV0aG9kcyBpcyBsYXp5LCB0aGF0IGlzLCBpdCdzIGRlZmVycmVkIHVudGlsXG4gICAgICogYF8jdmFsdWVgIGlzIGltcGxpY2l0bHkgb3IgZXhwbGljaXRseSBjYWxsZWQuXG4gICAgICpcbiAgICAgKiBMYXp5IGV2YWx1YXRpb24gYWxsb3dzIHNldmVyYWwgbWV0aG9kcyB0byBzdXBwb3J0IHNob3J0Y3V0IGZ1c2lvbi5cbiAgICAgKiBTaG9ydGN1dCBmdXNpb24gaXMgYW4gb3B0aW1pemF0aW9uIHRvIG1lcmdlIGl0ZXJhdGVlIGNhbGxzOyB0aGlzIGF2b2lkc1xuICAgICAqIHRoZSBjcmVhdGlvbiBvZiBpbnRlcm1lZGlhdGUgYXJyYXlzIGFuZCBjYW4gZ3JlYXRseSByZWR1Y2UgdGhlIG51bWJlciBvZlxuICAgICAqIGl0ZXJhdGVlIGV4ZWN1dGlvbnMuIFNlY3Rpb25zIG9mIGEgY2hhaW4gc2VxdWVuY2UgcXVhbGlmeSBmb3Igc2hvcnRjdXRcbiAgICAgKiBmdXNpb24gaWYgdGhlIHNlY3Rpb24gaXMgYXBwbGllZCB0byBhbiBhcnJheSBhbmQgaXRlcmF0ZWVzIGFjY2VwdCBvbmx5XG4gICAgICogb25lIGFyZ3VtZW50LiBUaGUgaGV1cmlzdGljIGZvciB3aGV0aGVyIGEgc2VjdGlvbiBxdWFsaWZpZXMgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlzIHN1YmplY3QgdG8gY2hhbmdlLlxuICAgICAqXG4gICAgICogQ2hhaW5pbmcgaXMgc3VwcG9ydGVkIGluIGN1c3RvbSBidWlsZHMgYXMgbG9uZyBhcyB0aGUgYF8jdmFsdWVgIG1ldGhvZCBpc1xuICAgICAqIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLlxuICAgICAqXG4gICAgICogSW4gYWRkaXRpb24gdG8gbG9kYXNoIG1ldGhvZHMsIHdyYXBwZXJzIGhhdmUgYEFycmF5YCBhbmQgYFN0cmluZ2AgbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBBcnJheWAgbWV0aG9kcyBhcmU6XG4gICAgICogYGNvbmNhdGAsIGBqb2luYCwgYHBvcGAsIGBwdXNoYCwgYHNoaWZ0YCwgYHNvcnRgLCBgc3BsaWNlYCwgYW5kIGB1bnNoaWZ0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgYFN0cmluZ2AgbWV0aG9kcyBhcmU6XG4gICAgICogYHJlcGxhY2VgIGFuZCBgc3BsaXRgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24gYXJlOlxuICAgICAqIGBhdGAsIGBjb21wYWN0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGRyb3BXaGlsZWAsIGBmaWx0ZXJgLCBgZmluZGAsXG4gICAgICogYGZpbmRMYXN0YCwgYGhlYWRgLCBgaW5pdGlhbGAsIGBsYXN0YCwgYG1hcGAsIGByZWplY3RgLCBgcmV2ZXJzZWAsIGBzbGljZWAsXG4gICAgICogYHRhaWxgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLCBgdGFrZVJpZ2h0V2hpbGVgLCBgdGFrZVdoaWxlYCwgYW5kIGB0b0FycmF5YFxuICAgICAqXG4gICAgICogVGhlIGNoYWluYWJsZSB3cmFwcGVyIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhZnRlcmAsIGBhcnlgLCBgYXNzaWduYCwgYGFzc2lnbkluYCwgYGFzc2lnbkluV2l0aGAsIGBhc3NpZ25XaXRoYCwgYGF0YCxcbiAgICAgKiBgYmVmb3JlYCwgYGJpbmRgLCBgYmluZEFsbGAsIGBiaW5kS2V5YCwgYGNhc3RBcnJheWAsIGBjaGFpbmAsIGBjaHVua2AsXG4gICAgICogYGNvbW1pdGAsIGBjb21wYWN0YCwgYGNvbmNhdGAsIGBjb25mb3Jtc2AsIGBjb25zdGFudGAsIGBjb3VudEJ5YCwgYGNyZWF0ZWAsXG4gICAgICogYGN1cnJ5YCwgYGRlYm91bmNlYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBkZWZlcmAsIGBkZWxheWAsXG4gICAgICogYGRpZmZlcmVuY2VgLCBgZGlmZmVyZW5jZUJ5YCwgYGRpZmZlcmVuY2VXaXRoYCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCxcbiAgICAgKiBgZHJvcFJpZ2h0V2hpbGVgLCBgZHJvcFdoaWxlYCwgYGV4dGVuZGAsIGBleHRlbmRXaXRoYCwgYGZpbGxgLCBgZmlsdGVyYCxcbiAgICAgKiBgZmxhdE1hcGAsIGBmbGF0TWFwRGVlcGAsIGBmbGF0TWFwRGVwdGhgLCBgZmxhdHRlbmAsIGBmbGF0dGVuRGVlcGAsXG4gICAgICogYGZsYXR0ZW5EZXB0aGAsIGBmbGlwYCwgYGZsb3dgLCBgZmxvd1JpZ2h0YCwgYGZyb21QYWlyc2AsIGBmdW5jdGlvbnNgLFxuICAgICAqIGBmdW5jdGlvbnNJbmAsIGBncm91cEJ5YCwgYGluaXRpYWxgLCBgaW50ZXJzZWN0aW9uYCwgYGludGVyc2VjdGlvbkJ5YCxcbiAgICAgKiBgaW50ZXJzZWN0aW9uV2l0aGAsIGBpbnZlcnRgLCBgaW52ZXJ0QnlgLCBgaW52b2tlTWFwYCwgYGl0ZXJhdGVlYCwgYGtleUJ5YCxcbiAgICAgKiBga2V5c2AsIGBrZXlzSW5gLCBgbWFwYCwgYG1hcEtleXNgLCBgbWFwVmFsdWVzYCwgYG1hdGNoZXNgLCBgbWF0Y2hlc1Byb3BlcnR5YCxcbiAgICAgKiBgbWVtb2l6ZWAsIGBtZXJnZWAsIGBtZXJnZVdpdGhgLCBgbWV0aG9kYCwgYG1ldGhvZE9mYCwgYG1peGluYCwgYG5lZ2F0ZWAsXG4gICAgICogYG50aEFyZ2AsIGBvbWl0YCwgYG9taXRCeWAsIGBvbmNlYCwgYG9yZGVyQnlgLCBgb3ZlcmAsIGBvdmVyQXJnc2AsXG4gICAgICogYG92ZXJFdmVyeWAsIGBvdmVyU29tZWAsIGBwYXJ0aWFsYCwgYHBhcnRpYWxSaWdodGAsIGBwYXJ0aXRpb25gLCBgcGlja2AsXG4gICAgICogYHBpY2tCeWAsIGBwbGFudGAsIGBwcm9wZXJ0eWAsIGBwcm9wZXJ0eU9mYCwgYHB1bGxgLCBgcHVsbEFsbGAsIGBwdWxsQWxsQnlgLFxuICAgICAqIGBwdWxsQWxsV2l0aGAsIGBwdWxsQXRgLCBgcHVzaGAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlYXJnYCwgYHJlamVjdGAsXG4gICAgICogYHJlbW92ZWAsIGByZXN0YCwgYHJldmVyc2VgLCBgc2FtcGxlU2l6ZWAsIGBzZXRgLCBgc2V0V2l0aGAsIGBzaHVmZmxlYCxcbiAgICAgKiBgc2xpY2VgLCBgc29ydGAsIGBzb3J0QnlgLCBgc3BsaWNlYCwgYHNwcmVhZGAsIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCxcbiAgICAgKiBgdGFrZVJpZ2h0V2hpbGVgLCBgdGFrZVdoaWxlYCwgYHRhcGAsIGB0aHJvdHRsZWAsIGB0aHJ1YCwgYHRvQXJyYXlgLFxuICAgICAqIGB0b1BhaXJzYCwgYHRvUGFpcnNJbmAsIGB0b1BhdGhgLCBgdG9QbGFpbk9iamVjdGAsIGB0cmFuc2Zvcm1gLCBgdW5hcnlgLFxuICAgICAqIGB1bmlvbmAsIGB1bmlvbkJ5YCwgYHVuaW9uV2l0aGAsIGB1bmlxYCwgYHVuaXFCeWAsIGB1bmlxV2l0aGAsIGB1bnNldGAsXG4gICAgICogYHVuc2hpZnRgLCBgdW56aXBgLCBgdW56aXBXaXRoYCwgYHVwZGF0ZWAsIGB1cGRhdGVXaXRoYCwgYHZhbHVlc2AsXG4gICAgICogYHZhbHVlc0luYCwgYHdpdGhvdXRgLCBgd3JhcGAsIGB4b3JgLCBgeG9yQnlgLCBgeG9yV2l0aGAsIGB6aXBgLFxuICAgICAqIGB6aXBPYmplY3RgLCBgemlwT2JqZWN0RGVlcGAsIGFuZCBgemlwV2l0aGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIG1ldGhvZHMgdGhhdCBhcmUgKipub3QqKiBjaGFpbmFibGUgYnkgZGVmYXVsdCBhcmU6XG4gICAgICogYGFkZGAsIGBhdHRlbXB0YCwgYGNhbWVsQ2FzZWAsIGBjYXBpdGFsaXplYCwgYGNlaWxgLCBgY2xhbXBgLCBgY2xvbmVgLFxuICAgICAqIGBjbG9uZURlZXBgLCBgY2xvbmVEZWVwV2l0aGAsIGBjbG9uZVdpdGhgLCBgY29uZm9ybXNUb2AsIGBkZWJ1cnJgLFxuICAgICAqIGBkZWZhdWx0VG9gLCBgZGl2aWRlYCwgYGVhY2hgLCBgZWFjaFJpZ2h0YCwgYGVuZHNXaXRoYCwgYGVxYCwgYGVzY2FwZWAsXG4gICAgICogYGVzY2FwZVJlZ0V4cGAsIGBldmVyeWAsIGBmaW5kYCwgYGZpbmRJbmRleGAsIGBmaW5kS2V5YCwgYGZpbmRMYXN0YCxcbiAgICAgKiBgZmluZExhc3RJbmRleGAsIGBmaW5kTGFzdEtleWAsIGBmaXJzdGAsIGBmbG9vcmAsIGBmb3JFYWNoYCwgYGZvckVhY2hSaWdodGAsXG4gICAgICogYGZvckluYCwgYGZvckluUmlnaHRgLCBgZm9yT3duYCwgYGZvck93blJpZ2h0YCwgYGdldGAsIGBndGAsIGBndGVgLCBgaGFzYCxcbiAgICAgKiBgaGFzSW5gLCBgaGVhZGAsIGBpZGVudGl0eWAsIGBpbmNsdWRlc2AsIGBpbmRleE9mYCwgYGluUmFuZ2VgLCBgaW52b2tlYCxcbiAgICAgKiBgaXNBcmd1bWVudHNgLCBgaXNBcnJheWAsIGBpc0FycmF5QnVmZmVyYCwgYGlzQXJyYXlMaWtlYCwgYGlzQXJyYXlMaWtlT2JqZWN0YCxcbiAgICAgKiBgaXNCb29sZWFuYCwgYGlzQnVmZmVyYCwgYGlzRGF0ZWAsIGBpc0VsZW1lbnRgLCBgaXNFbXB0eWAsIGBpc0VxdWFsYCxcbiAgICAgKiBgaXNFcXVhbFdpdGhgLCBgaXNFcnJvcmAsIGBpc0Zpbml0ZWAsIGBpc0Z1bmN0aW9uYCwgYGlzSW50ZWdlcmAsIGBpc0xlbmd0aGAsXG4gICAgICogYGlzTWFwYCwgYGlzTWF0Y2hgLCBgaXNNYXRjaFdpdGhgLCBgaXNOYU5gLCBgaXNOYXRpdmVgLCBgaXNOaWxgLCBgaXNOdWxsYCxcbiAgICAgKiBgaXNOdW1iZXJgLCBgaXNPYmplY3RgLCBgaXNPYmplY3RMaWtlYCwgYGlzUGxhaW5PYmplY3RgLCBgaXNSZWdFeHBgLFxuICAgICAqIGBpc1NhZmVJbnRlZ2VyYCwgYGlzU2V0YCwgYGlzU3RyaW5nYCwgYGlzVW5kZWZpbmVkYCwgYGlzVHlwZWRBcnJheWAsXG4gICAgICogYGlzV2Vha01hcGAsIGBpc1dlYWtTZXRgLCBgam9pbmAsIGBrZWJhYkNhc2VgLCBgbGFzdGAsIGBsYXN0SW5kZXhPZmAsXG4gICAgICogYGxvd2VyQ2FzZWAsIGBsb3dlckZpcnN0YCwgYGx0YCwgYGx0ZWAsIGBtYXhgLCBgbWF4QnlgLCBgbWVhbmAsIGBtZWFuQnlgLFxuICAgICAqIGBtaW5gLCBgbWluQnlgLCBgbXVsdGlwbHlgLCBgbm9Db25mbGljdGAsIGBub29wYCwgYG5vd2AsIGBudGhgLCBgcGFkYCxcbiAgICAgKiBgcGFkRW5kYCwgYHBhZFN0YXJ0YCwgYHBhcnNlSW50YCwgYHBvcGAsIGByYW5kb21gLCBgcmVkdWNlYCwgYHJlZHVjZVJpZ2h0YCxcbiAgICAgKiBgcmVwZWF0YCwgYHJlc3VsdGAsIGByb3VuZGAsIGBydW5JbkNvbnRleHRgLCBgc2FtcGxlYCwgYHNoaWZ0YCwgYHNpemVgLFxuICAgICAqIGBzbmFrZUNhc2VgLCBgc29tZWAsIGBzb3J0ZWRJbmRleGAsIGBzb3J0ZWRJbmRleEJ5YCwgYHNvcnRlZExhc3RJbmRleGAsXG4gICAgICogYHNvcnRlZExhc3RJbmRleEJ5YCwgYHN0YXJ0Q2FzZWAsIGBzdGFydHNXaXRoYCwgYHN0dWJBcnJheWAsIGBzdHViRmFsc2VgLFxuICAgICAqIGBzdHViT2JqZWN0YCwgYHN0dWJTdHJpbmdgLCBgc3R1YlRydWVgLCBgc3VidHJhY3RgLCBgc3VtYCwgYHN1bUJ5YCxcbiAgICAgKiBgdGVtcGxhdGVgLCBgdGltZXNgLCBgdG9GaW5pdGVgLCBgdG9JbnRlZ2VyYCwgYHRvSlNPTmAsIGB0b0xlbmd0aGAsXG4gICAgICogYHRvTG93ZXJgLCBgdG9OdW1iZXJgLCBgdG9TYWZlSW50ZWdlcmAsIGB0b1N0cmluZ2AsIGB0b1VwcGVyYCwgYHRyaW1gLFxuICAgICAqIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGB0cnVuY2F0ZWAsIGB1bmVzY2FwZWAsIGB1bmlxdWVJZGAsIGB1cHBlckNhc2VgLFxuICAgICAqIGB1cHBlckZpcnN0YCwgYHZhbHVlYCwgYW5kIGB3b3Jkc2BcbiAgICAgKlxuICAgICAqIEBuYW1lIF9cbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcCBpbiBhIGBsb2Rhc2hgIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMiwgM10pO1xuICAgICAqXG4gICAgICogLy8gUmV0dXJucyBhbiB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogd3JhcHBlZC5yZWR1Y2UoXy5hZGQpO1xuICAgICAqIC8vID0+IDZcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYSB3cmFwcGVkIHZhbHVlLlxuICAgICAqIHZhciBzcXVhcmVzID0gd3JhcHBlZC5tYXAoc3F1YXJlKTtcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KHNxdWFyZXMudmFsdWUoKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxvZGFzaCh2YWx1ZSkge1xuICAgICAgaWYgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzQXJyYXkodmFsdWUpICYmICEodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTG9kYXNoV3JhcHBlcikge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ19fd3JhcHBlZF9fJykpIHtcbiAgICAgICAgICByZXR1cm4gd3JhcHBlckNsb25lKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gICAgICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIHZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICAgICAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgICAgIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgICAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSgpKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBmdW5jdGlvbiB3aG9zZSBwcm90b3R5cGUgY2hhaW4gc2VxdWVuY2Ugd3JhcHBlcnMgaW5oZXJpdCBmcm9tLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTG9kYXNoKCkge1xuICAgICAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBjb25zdHJ1Y3RvciBmb3IgY3JlYXRpbmcgYGxvZGFzaGAgd3JhcHBlciBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NoYWluQWxsXSBFbmFibGUgZXhwbGljaXQgbWV0aG9kIGNoYWluIHNlcXVlbmNlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMb2Rhc2hXcmFwcGVyKHZhbHVlLCBjaGFpbkFsbCkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2NoYWluX18gPSAhIWNoYWluQWxsO1xuICAgICAgdGhpcy5fX2luZGV4X18gPSAwO1xuICAgICAgdGhpcy5fX3ZhbHVlc19fID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzIHVzZWQgYnkgbG9kYXNoIGFyZSBsaWtlIHRob3NlIGluXG4gICAgICogZW1iZWRkZWQgUnVieSAoRVJCKSBhcyB3ZWxsIGFzIEVTMjAxNSB0ZW1wbGF0ZSBzdHJpbmdzLiBDaGFuZ2UgdGhlXG4gICAgICogZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICBsb2Rhc2gudGVtcGxhdGVTZXR0aW5ncyA9IHtcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGRldGVjdCBgZGF0YWAgcHJvcGVydHkgdmFsdWVzIHRvIGJlIEhUTUwtZXNjYXBlZC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAgICovXG4gICAgICAnZXNjYXBlJzogcmVFc2NhcGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgY29kZSB0byBiZSBldmFsdWF0ZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2V2YWx1YXRlJzogcmVFdmFsdWF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGRldGVjdCBgZGF0YWAgcHJvcGVydHkgdmFsdWVzIHRvIGluamVjdC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAgICovXG4gICAgICAnaW50ZXJwb2xhdGUnOiByZUludGVycG9sYXRlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gcmVmZXJlbmNlIHRoZSBkYXRhIG9iamVjdCBpbiB0aGUgdGVtcGxhdGUgdGV4dC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICovXG4gICAgICAndmFyaWFibGUnOiAnJyxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGltcG9ydCB2YXJpYWJsZXMgaW50byB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge09iamVjdH1cbiAgICAgICAqL1xuICAgICAgJ2ltcG9ydHMnOiB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXG4gICAgICAgICAqIEB0eXBlIHtGdW5jdGlvbn1cbiAgICAgICAgICovXG4gICAgICAgICdfJzogbG9kYXNoXG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIEVuc3VyZSB3cmFwcGVycyBhcmUgaW5zdGFuY2VzIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBsb2Rhc2gucHJvdG90eXBlID0gYmFzZUxvZGFzaC5wcm90b3R5cGU7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGxvZGFzaDtcblxuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlID0gYmFzZUNyZWF0ZShiYXNlTG9kYXNoLnByb3RvdHlwZSk7XG4gICAgTG9kYXNoV3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMb2Rhc2hXcmFwcGVyO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGxhenkgd3JhcHBlciBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgbGF6eSBldmFsdWF0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIExhenlXcmFwcGVyKHZhbHVlKSB7XG4gICAgICB0aGlzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICB0aGlzLl9fYWN0aW9uc19fID0gW107XG4gICAgICB0aGlzLl9fZGlyX18gPSAxO1xuICAgICAgdGhpcy5fX2ZpbHRlcmVkX18gPSBmYWxzZTtcbiAgICAgIHRoaXMuX19pdGVyYXRlZXNfXyA9IFtdO1xuICAgICAgdGhpcy5fX3Rha2VDb3VudF9fID0gTUFYX0FSUkFZX0xFTkdUSDtcbiAgICAgIHRoaXMuX192aWV3c19fID0gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBsYXp5IHdyYXBwZXIgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbG9uZVxuICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBgTGF6eVdyYXBwZXJgIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXp5Q2xvbmUoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IExhenlXcmFwcGVyKHRoaXMuX193cmFwcGVkX18pO1xuICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHRoaXMuX19hY3Rpb25zX18pO1xuICAgICAgcmVzdWx0Ll9fZGlyX18gPSB0aGlzLl9fZGlyX187XG4gICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gdGhpcy5fX2ZpbHRlcmVkX187XG4gICAgICByZXN1bHQuX19pdGVyYXRlZXNfXyA9IGNvcHlBcnJheSh0aGlzLl9faXRlcmF0ZWVzX18pO1xuICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSB0aGlzLl9fdGFrZUNvdW50X187XG4gICAgICByZXN1bHQuX192aWV3c19fID0gY29weUFycmF5KHRoaXMuX192aWV3c19fKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJzZXMgdGhlIGRpcmVjdGlvbiBvZiBsYXp5IGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgcmV2ZXJzZVxuICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyByZXZlcnNlZCBgTGF6eVdyYXBwZXJgIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXp5UmV2ZXJzZSgpIHtcbiAgICAgIGlmICh0aGlzLl9fZmlsdGVyZWRfXykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICByZXN1bHQuX19kaXJfXyA9IC0xO1xuICAgICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gKj0gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4dHJhY3RzIHRoZSB1bndyYXBwZWQgdmFsdWUgZnJvbSBpdHMgbGF6eSB3cmFwcGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVZhbHVlKCkge1xuICAgICAgdmFyIGFycmF5ID0gdGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLFxuICAgICAgICAgIGRpciA9IHRoaXMuX19kaXJfXyxcbiAgICAgICAgICBpc0FyciA9IGlzQXJyYXkoYXJyYXkpLFxuICAgICAgICAgIGlzUmlnaHQgPSBkaXIgPCAwLFxuICAgICAgICAgIGFyckxlbmd0aCA9IGlzQXJyID8gYXJyYXkubGVuZ3RoIDogMCxcbiAgICAgICAgICB2aWV3ID0gZ2V0VmlldygwLCBhcnJMZW5ndGgsIHRoaXMuX192aWV3c19fKSxcbiAgICAgICAgICBzdGFydCA9IHZpZXcuc3RhcnQsXG4gICAgICAgICAgZW5kID0gdmlldy5lbmQsXG4gICAgICAgICAgbGVuZ3RoID0gZW5kIC0gc3RhcnQsXG4gICAgICAgICAgaW5kZXggPSBpc1JpZ2h0ID8gZW5kIDogKHN0YXJ0IC0gMSksXG4gICAgICAgICAgaXRlcmF0ZWVzID0gdGhpcy5fX2l0ZXJhdGVlc19fLFxuICAgICAgICAgIGl0ZXJMZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICB0YWtlQ291bnQgPSBuYXRpdmVNaW4obGVuZ3RoLCB0aGlzLl9fdGFrZUNvdW50X18pO1xuXG4gICAgICBpZiAoIWlzQXJyIHx8ICghaXNSaWdodCAmJiBhcnJMZW5ndGggPT0gbGVuZ3RoICYmIHRha2VDb3VudCA9PSBsZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBiYXNlV3JhcHBlclZhbHVlKGFycmF5LCB0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAobGVuZ3RoLS0gJiYgcmVzSW5kZXggPCB0YWtlQ291bnQpIHtcbiAgICAgICAgaW5kZXggKz0gZGlyO1xuXG4gICAgICAgIHZhciBpdGVySW5kZXggPSAtMSxcbiAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICAgIHdoaWxlICgrK2l0ZXJJbmRleCA8IGl0ZXJMZW5ndGgpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IGl0ZXJhdGVlc1tpdGVySW5kZXhdLFxuICAgICAgICAgICAgICBpdGVyYXRlZSA9IGRhdGEuaXRlcmF0ZWUsXG4gICAgICAgICAgICAgIHR5cGUgPSBkYXRhLnR5cGUsXG4gICAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgICAgaWYgKHR5cGUgPT0gTEFaWV9NQVBfRkxBRykge1xuICAgICAgICAgICAgdmFsdWUgPSBjb21wdXRlZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFjb21wdXRlZCkge1xuICAgICAgICAgICAgaWYgKHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRykge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJyZWFrIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGBMYXp5V3JhcHBlcmAgaXMgYW4gaW5zdGFuY2Ugb2YgYGJhc2VMb2Rhc2hgLlxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExhenlXcmFwcGVyO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgICAgIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICAgICAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG4gICAgSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG4gICAgSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbiAgICBIYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuICAgIEhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG4gICAgSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICAgICAgaWYgKGluZGV4ID09IGxhc3RJbmRleCkge1xuICAgICAgICBkYXRhLnBvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3BsaWNlLmNhbGwoZGF0YSwgaW5kZXgsIDEpO1xuICAgICAgfVxuICAgICAgLS10aGlzLnNpemU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgICAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgKyt0aGlzLnNpemU7XG4gICAgICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAgICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgICAgIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgICAgIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gU2V0Q2FjaGUodmFsdWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgYWRkXG4gICAgICogQG1lbWJlck9mIFNldENhY2hlXG4gICAgICogQGFsaWFzIHB1c2hcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICAgICAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFNldENhY2hlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cbiAgICBTZXRDYWNoZS5wcm90b3R5cGUuYWRkID0gU2V0Q2FjaGUucHJvdG90eXBlLnB1c2ggPSBzZXRDYWNoZUFkZDtcbiAgICBTZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gU3RhY2soZW50cmllcykge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG5cbiAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgc3RhY2sgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICAgICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICAgICAgaWYgKCFNYXAgfHwgKHBhaXJzLmxlbmd0aCA8IExBUkdFX0FSUkFZX1NJWkUgLSAxKSkge1xuICAgICAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gICAgICB9XG4gICAgICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG4gICAgU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcbiAgICBTdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG4gICAgU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuICAgIFN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcbiAgICBTdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICAgICAgaXNBcmcgPSAhaXNBcnIgJiYgaXNBcmd1bWVudHModmFsdWUpLFxuICAgICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgICAgIHNraXBJbmRleGVzID0gaXNBcnIgfHwgaXNBcmcgfHwgaXNCdWZmIHx8IGlzVHlwZSxcbiAgICAgICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAgICAgLy8gU2FmYXJpIDkgaGFzIGVudW1lcmFibGUgYGFyZ3VtZW50cy5sZW5ndGhgIGluIHN0cmljdCBtb2RlLlxuICAgICAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgICAgIChpc0J1ZmYgJiYgKGtleSA9PSAnb2Zmc2V0JyB8fCBrZXkgPT0gJ3BhcmVudCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgICAgICAvLyBTa2lwIGluZGV4IHByb3BlcnRpZXMuXG4gICAgICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICAgICAgKSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zYW1wbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2FtcGxlKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2Jhc2VSYW5kb20oMCwgbGVuZ3RoIC0gMSldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zYW1wbGVTaXplYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2FtcGxlU2l6ZShhcnJheSwgbikge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSksIGJhc2VDbGFtcChuLCAwLCBhcnJheS5sZW5ndGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2h1ZmZsZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlTaHVmZmxlKGFycmF5KSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAgICAgKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICAgICAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFnZ3JlZ2F0ZXMgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIG9uIGBhY2N1bXVsYXRvcmAgd2l0aCBrZXlzIHRyYW5zZm9ybWVkXG4gICAgICogYnkgYGl0ZXJhdGVlYCBhbmQgdmFsdWVzIHNldCBieSBgc2V0dGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgYWdncmVnYXRlZCBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFnZ3JlZ2F0b3IoY29sbGVjdGlvbiwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaXRlcmF0ZWUodmFsdWUpLCBjb2xsZWN0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gICAgICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICAgICAqIHZhbHVlIGNoZWNrcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcGlja2VkIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBdChvYmplY3QsIHBhdGhzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICBza2lwID0gb2JqZWN0ID09IG51bGw7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBza2lwID8gdW5kZWZpbmVkIDogZ2V0KG9iamVjdCwgcGF0aHNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xhbXBgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDbGFtcChudW1iZXIsIGxvd2VyLCB1cHBlcikge1xuICAgICAgaWYgKG51bWJlciA9PT0gbnVtYmVyKSB7XG4gICAgICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyIDw9IHVwcGVyID8gbnVtYmVyIDogdXBwZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBudW1iZXIgPSBudW1iZXIgPj0gbG93ZXIgPyBudW1iZXIgOiBsb3dlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gICAgICogdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgMSAtIERlZXAgY2xvbmVcbiAgICAgKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAgICAgKiAgNCAtIENsb25lIHN5bWJvbHNcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgb2JqZWN0LCBzdGFjaykge1xuICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICBpc0RlZXAgPSBiaXRtYXNrICYgQ0xPTkVfREVFUF9GTEFHLFxuICAgICAgICAgIGlzRmxhdCA9IGJpdG1hc2sgJiBDTE9ORV9GTEFUX0ZMQUcsXG4gICAgICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gb2JqZWN0ID8gY3VzdG9taXplcih2YWx1ZSwga2V5LCBvYmplY3QsIHN0YWNrKSA6IGN1c3RvbWl6ZXIodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgICAgIGlmIChpc0Fycikge1xuICAgICAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgICAgcmV0dXJuIGNvcHlBcnJheSh2YWx1ZSwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gY2xvbmVCdWZmZXIodmFsdWUsIGlzRGVlcCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgICAgIHJlc3VsdCA9IChpc0ZsYXQgfHwgaXNGdW5jKSA/IHt9IDogaW5pdENsb25lT2JqZWN0KHZhbHVlKTtcbiAgICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgICAgcmV0dXJuIGlzRmxhdFxuICAgICAgICAgICAgICA/IGNvcHlTeW1ib2xzSW4odmFsdWUsIGJhc2VBc3NpZ25JbihyZXN1bHQsIHZhbHVlKSlcbiAgICAgICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0ID8gdmFsdWUgOiB7fTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldCh2YWx1ZSk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZDtcbiAgICAgIH1cbiAgICAgIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICAgICAgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzTWFwKHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgICAgICByZXN1bHQuc2V0KGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgICAgID8gKGlzRmxhdCA/IGdldEFsbEtleXNJbiA6IGdldEFsbEtleXMpXG4gICAgICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gICAgICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgICAgIGFycmF5RWFjaChwcm9wcyB8fCB2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgICAgICBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgYXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHZhciBwcm9wcyA9IGtleXMoc291cmNlKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBwcm9wcyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zVG9gIHdoaWNoIGFjY2VwdHMgYHByb3BzYCB0byBjaGVjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbbGVuZ3RoXSxcbiAgICAgICAgICAgIHByZWRpY2F0ZSA9IHNvdXJjZVtrZXldLFxuICAgICAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICBpZiAoKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkgfHwgIXByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmRlbGF5YCBhbmQgYF8uZGVmZXJgIHdoaWNoIGFjY2VwdHMgYGFyZ3NgXG4gICAgICogdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ8T2JqZWN0fSBSZXR1cm5zIHRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRGVsYXkoZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsgfSwgd2FpdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRpZmZlcmVuY2VgIHdpdGhvdXQgc3VwcG9ydFxuICAgICAqIGZvciBleGNsdWRpbmcgbXVsdGlwbGUgYXJyYXlzIG9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgIHZhbHVlc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG5cbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFsdWVzID0gYXJyYXlNYXAodmFsdWVzLCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2YWx1ZXMubGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICAgICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgdmFsdWVzID0gbmV3IFNldENhY2hlKHZhbHVlcyk7XG4gICAgICB9XG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPT0gbnVsbCA/IHZhbHVlIDogaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgdmFyIHZhbHVlc0luZGV4ID0gdmFsdWVzTGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICh2YWx1ZXNJbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAodmFsdWVzW3ZhbHVlc0luZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXModmFsdWVzLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUVhY2ggPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hSaWdodGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUVhY2hSaWdodCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd25SaWdodCwgdHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ldmVyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VFdmVyeShjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0cnVlO1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdCA9ICEhcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLm1heGAgYW5kIGBfLm1pbmAgd2hpY2ggYWNjZXB0cyBhXG4gICAgICogYGNvbXBhcmF0b3JgIHRvIGRldGVybWluZSB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIHVzZWQgdG8gY29tcGFyZSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VFeHRyZW11bShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICBpZiAoY3VycmVudCAhPSBudWxsICYmIChjb21wdXRlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKGN1cnJlbnQgPT09IGN1cnJlbnQgJiYgIWlzU3ltYm9sKGN1cnJlbnQpKVxuICAgICAgICAgICAgICA6IGNvbXBhcmF0b3IoY3VycmVudCwgY29tcHV0ZWQpXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgdmFyIGNvbXB1dGVkID0gY3VycmVudCxcbiAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmlsbGAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmlsbC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gbGVuZ3RoKSA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGVuZCA9IHN0YXJ0ID4gZW5kID8gMCA6IHRvTGVuZ3RoKGVuZCk7XG4gICAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcbiAgICAgICAgYXJyYXlbc3RhcnQrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWx0ZXJgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGggVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZWRpY2F0ZT1pc0ZsYXR0ZW5hYmxlXSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0PVtdXSBUaGUgaW5pdGlhbCByZXN1bHQgdmFsdWUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHByZWRpY2F0ZSB8fCAocHJlZGljYXRlID0gaXNGbGF0dGVuYWJsZSk7XG4gICAgICByZXN1bHQgfHwgKHJlc3VsdCA9IFtdKTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAoZGVwdGggPiAwICYmIHByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgICAgICAvLyBSZWN1cnNpdmVseSBmbGF0dGVuIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICAgICAgYmFzZUZsYXR0ZW4odmFsdWUsIGRlcHRoIC0gMSwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvck93bmAgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgb2JqZWN0YFxuICAgICAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUZvcmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzXG4gICAgICogaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIHZhciBiYXNlRm9yUmlnaHQgPSBjcmVhdGVCYXNlRm9yKHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93blJpZ2h0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGb3JPd25SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JSaWdodChvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mdW5jdGlvbnNgIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXkgb2ZcbiAgICAgKiBgb2JqZWN0YCBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmaWx0ZXJlZCBmcm9tIGBwcm9wc2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBmaWx0ZXIuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRnVuY3Rpb25zKG9iamVjdCwgcHJvcHMpIHtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG9iamVjdFtrZXldKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gKGluZGV4ICYmIGluZGV4ID09IGxlbmd0aCkgPyBvYmplY3QgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gICAgICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gICAgICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgICAgIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgICAgIH1cbiAgICAgIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICAgICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHdCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+IG90aGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VIYXMob2JqZWN0LCBrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNJbmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pblJhbmdlYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgbnVtYmVyYCBpcyBpbiB0aGUgcmFuZ2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBudW1iZXIgPj0gbmF0aXZlTWluKHN0YXJ0LCBlbmQpICYmIG51bWJlciA8IG5hdGl2ZU1heChzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCwgd2l0aG91dCBzdXBwb3J0XG4gICAgICogZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHRoYXQgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXlzIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHNoYXJlZCB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludGVyc2VjdGlvbihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5jbHVkZXMgPSBjb21wYXJhdG9yID8gYXJyYXlJbmNsdWRlc1dpdGggOiBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5c1swXS5sZW5ndGgsXG4gICAgICAgICAgb3RoTGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgICAgICBvdGhJbmRleCA9IG90aExlbmd0aCxcbiAgICAgICAgICBjYWNoZXMgPSBBcnJheShvdGhMZW5ndGgpLFxuICAgICAgICAgIG1heExlbmd0aCA9IEluZmluaXR5LFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAob3RoSW5kZXgtLSkge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcnJheXNbb3RoSW5kZXhdO1xuICAgICAgICBpZiAob3RoSW5kZXggJiYgaXRlcmF0ZWUpIHtcbiAgICAgICAgICBhcnJheSA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgICAgfVxuICAgICAgICBtYXhMZW5ndGggPSBuYXRpdmVNaW4oYXJyYXkubGVuZ3RoLCBtYXhMZW5ndGgpO1xuICAgICAgICBjYWNoZXNbb3RoSW5kZXhdID0gIWNvbXBhcmF0b3IgJiYgKGl0ZXJhdGVlIHx8IChsZW5ndGggPj0gMTIwICYmIGFycmF5Lmxlbmd0aCA+PSAxMjApKVxuICAgICAgICAgID8gbmV3IFNldENhY2hlKG90aEluZGV4ICYmIGFycmF5KVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgYXJyYXkgPSBhcnJheXNbMF07XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHNlZW4gPSBjYWNoZXNbMF07XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGggJiYgcmVzdWx0Lmxlbmd0aCA8IG1heExlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmICghKHNlZW5cbiAgICAgICAgICAgICAgPyBjYWNoZUhhcyhzZWVuLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgOiBpbmNsdWRlcyhyZXN1bHQsIGNvbXB1dGVkLCBjb21wYXJhdG9yKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICgtLW90aEluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY2FjaGUgPSBjYWNoZXNbb3RoSW5kZXhdO1xuICAgICAgICAgICAgaWYgKCEoY2FjaGVcbiAgICAgICAgICAgICAgICAgID8gY2FjaGVIYXMoY2FjaGUsIGNvbXB1dGVkKVxuICAgICAgICAgICAgICAgICAgOiBpbmNsdWRlcyhhcnJheXNbb3RoSW5kZXhdLCBjb21wdXRlZCwgY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmludmVydGAgYW5kIGBfLmludmVydEJ5YCB3aGljaCBpbnZlcnRzXG4gICAgICogYG9iamVjdGAgd2l0aCB2YWx1ZXMgdHJhbnNmb3JtZWQgYnkgYGl0ZXJhdGVlYCBhbmQgc2V0IGJ5IGBzZXR0ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0gdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludmVydGVyKG9iamVjdCwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCBpdGVyYXRlZSh2YWx1ZSksIGtleSwgb2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmludm9rZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogbWV0aG9kIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgICAgdmFyIGZ1bmMgPSBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG4gICAgICByZXR1cm4gZnVuYyA9PSBudWxsID8gdW5kZWZpbmVkIDogYXBwbHkoZnVuYywgb2JqZWN0LCBhcmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcnJheUJ1ZmZlcmAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcnJheUJ1ZmZlclRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0RhdGVgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRGF0ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gZGF0ZVRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gICAgICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gICAgICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICAgICAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gICAgICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICAgICAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICAgICAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICAgICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgICAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICAgICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWlzU2FtZVRhZykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpbmRleCA9IG1hdGNoRGF0YS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gIWxlbmd0aDtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKVxuICAgICAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICB2YXIga2V5ID0gZGF0YVswXSxcbiAgICAgICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICAgICAgaWYgKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKSB7XG4gICAgICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIShyZXN1bHQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1JlZ0V4cGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzUmVnRXhwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSByZWdleHBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNTZXRgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXRlcmF0ZWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IFt2YWx1ZT1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSkge1xuICAgICAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM0IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGlkZW50aXR5O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IGJhc2VNYXRjaGVzUHJvcGVydHkodmFsdWVbMF0sIHZhbHVlWzFdKVxuICAgICAgICAgIDogYmFzZU1hdGNoZXModmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICAgICAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gICAgICB9XG4gICAgICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmx0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VMdCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8IG90aGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gICAgICB2YXIgbWF0Y2hEYXRhID0gZ2V0TWF0Y2hEYXRhKHNvdXJjZSk7XG4gICAgICBpZiAobWF0Y2hEYXRhLmxlbmd0aCA9PSAxICYmIG1hdGNoRGF0YVswXVsyXSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNQcm9wZXJ0eWAgd2hpY2ggZG9lc24ndCBjbG9uZSBgc3JjVmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICAgICAgaWYgKGlzS2V5KHBhdGgpICYmIGlzU3RyaWN0Q29tcGFyYWJsZShzcmNWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKHRvS2V5KHBhdGgpLCBzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciBvYmpWYWx1ZSA9IGdldChvYmplY3QsIHBhdGgpO1xuICAgICAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgICAgID8gaGFzSW4ob2JqZWN0LCBwYXRoKVxuICAgICAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZXJnZWAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgICAgID8gY3VzdG9taXplcihzYWZlR2V0KG9iamVjdCwga2V5KSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICAgICAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gICAgICogcmVmZXJlbmNlcyB0byBiZSBtZXJnZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIG1lcmdlRnVuYywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgICAgIHNyY1ZhbHVlID0gc2FmZUdldChzb3VyY2UsIGtleSksXG4gICAgICAgICAgc3RhY2tlZCA9IHN0YWNrLmdldChzcmNWYWx1ZSk7XG5cbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHN0YWNrZWQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgID8gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHZhciBpc0NvbW1vbiA9IG5ld1ZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiBpc0J1ZmZlcihzcmNWYWx1ZSksXG4gICAgICAgICAgICBpc1R5cGVkID0gIWlzQXJyICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHNyY1ZhbHVlKTtcblxuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICBpZiAoaXNBcnIgfHwgaXNCdWZmIHx8IGlzVHlwZWQpIHtcbiAgICAgICAgICBpZiAoaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc0J1ZmYpIHtcbiAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNsb25lQnVmZmVyKHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY2xvbmVUeXBlZEFycmF5KHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHNyY1ZhbHVlKSB8fCBpc0FyZ3VtZW50cyhzcmNWYWx1ZSkpIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgICAgIGlmIChpc0FyZ3VtZW50cyhvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdG9QbGFpbk9iamVjdChvYmpWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgaXNGdW5jdGlvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaW5pdENsb25lT2JqZWN0KHNyY1ZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ29tbW9uKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5udGhgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG50aCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU50aChhcnJheSwgbikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG4gKz0gbiA8IDAgPyBsZW5ndGggOiAwO1xuICAgICAgcmV0dXJuIGlzSW5kZXgobiwgbGVuZ3RoKSA/IGFycmF5W25dIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm9yZGVyQnlgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBpdGVyYXRlZXMgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IG9yZGVycyBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMTtcbiAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcy5sZW5ndGggPyBpdGVyYXRlZXMgOiBbaWRlbnRpdHldLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZU1hcChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VTb3J0QnkocmVzdWx0LCBmdW5jdGlvbihvYmplY3QsIG90aGVyKSB7XG4gICAgICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQWxsQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICAgKiBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXhPZiA9IGNvbXBhcmF0b3IgPyBiYXNlSW5kZXhPZldpdGggOiBiYXNlSW5kZXhPZixcbiAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgc2VlbiA9IGFycmF5O1xuXG4gICAgICBpZiAoYXJyYXkgPT09IHZhbHVlcykge1xuICAgICAgICB2YWx1ZXMgPSBjb3B5QXJyYXkodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGZyb21JbmRleCA9IDAsXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpKSA+IC0xKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IGFycmF5KSB7XG4gICAgICAgICAgICBzcGxpY2UuY2FsbChzZWVuLCBmcm9tSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzcGxpY2UuY2FsbChhcnJheSwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogaW5kZXhlcyBvciBjYXB0dXJpbmcgdGhlIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID8gaW5kZXhlcy5sZW5ndGggOiAwLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGlmIChsZW5ndGggPT0gbGFzdEluZGV4IHx8IGluZGV4ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgIHZhciBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgICAgIGlmIChpc0luZGV4KGluZGV4KSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzZVVuc2V0KGFycmF5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZG9tYCB3aXRob3V0IHN1cHBvcnQgZm9yIHJldHVybmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3dlciBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKSB7XG4gICAgICByZXR1cm4gbG93ZXIgKyBuYXRpdmVGbG9vcihuYXRpdmVSYW5kb20oKSAqICh1cHBlciAtIGxvd2VyICsgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICAgICAqIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICAgICAgc3RhcnQgKz0gc3RlcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVwZWF0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlcGVhdChzdHJpbmcsIG4pIHtcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIGlmICghc3RyaW5nIHx8IG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICAvLyBMZXZlcmFnZSB0aGUgZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcgYWxnb3JpdGhtIGZvciBhIGZhc3RlciByZXBlYXQuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwb25lbnRpYXRpb25fYnlfc3F1YXJpbmcgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG4gJSAyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICBuID0gbmF0aXZlRmxvb3IobiAvIDIpO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgIHN0cmluZyArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKG4pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNhbXBsZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gYXJyYXlTYW1wbGUodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVTaXplYCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4pIHtcbiAgICAgIHZhciBhcnJheSA9IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihhcnJheSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgICAgIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0RGF0YWAgd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0RGF0YSA9ICFtZXRhTWFwID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBkYXRhKSB7XG4gICAgICBtZXRhTWFwLnNldChmdW5jLCBkYXRhKTtcbiAgICAgIHJldHVybiBmdW5jO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gICAgICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAgICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNodWZmbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZih2YWx1ZXMoY29sbGVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNsaWNlYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICAgICAgc3RhcnQgPj4+PSAwO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29tZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiAhcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gISFyZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhgIHdoaWNoXG4gICAgICogcGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIG9mIGBhcnJheWAgdG8gZGV0ZXJtaW5lIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICogc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0byBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgcmV0SGlnaGVzdCkge1xuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyBsb3cgOiBhcnJheS5sZW5ndGg7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT09IHZhbHVlICYmIGhpZ2ggPD0gSEFMRl9NQVhfQVJSQVlfTEVOR1RIKSB7XG4gICAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgICAgdmFyIG1pZCA9IChsb3cgKyBoaWdoKSA+Pj4gMSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBhcnJheVttaWRdO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVkICE9PSBudWxsICYmICFpc1N5bWJvbChjb21wdXRlZCkgJiZcbiAgICAgICAgICAgICAgKHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpKSkge1xuICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhpZ2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpZGVudGl0eSwgcmV0SGlnaGVzdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhCeWAgYW5kIGBfLnNvcnRlZExhc3RJbmRleEJ5YFxuICAgICAqIHdoaWNoIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZVxuICAgICAqIHRoZWlyIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhbHVlID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICB2YXIgbG93ID0gMCxcbiAgICAgICAgICBoaWdoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgdmFsSXNOYU4gPSB2YWx1ZSAhPT0gdmFsdWUsXG4gICAgICAgICAgdmFsSXNOdWxsID0gdmFsdWUgPT09IG51bGwsXG4gICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSksXG4gICAgICAgICAgdmFsSXNVbmRlZmluZWQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICB2YXIgbWlkID0gbmF0aXZlRmxvb3IoKGxvdyArIGhpZ2gpIC8gMiksXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKGFycmF5W21pZF0pLFxuICAgICAgICAgICAgb3RoSXNEZWZpbmVkID0gY29tcHV0ZWQgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IGNvbXB1dGVkID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBjb21wdXRlZCA9PT0gY29tcHV0ZWQsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKGNvbXB1dGVkKTtcblxuICAgICAgICBpZiAodmFsSXNOYU4pIHtcbiAgICAgICAgICB2YXIgc2V0TG93ID0gcmV0SGlnaGVzdCB8fCBvdGhJc1JlZmxleGl2ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc1VuZGVmaW5lZCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIChyZXRIaWdoZXN0IHx8IG90aElzRGVmaW5lZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNOdWxsKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmIChyZXRIaWdoZXN0IHx8ICFvdGhJc051bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzU3ltYm9sKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmICFvdGhJc051bGwgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzU3ltYm9sKTtcbiAgICAgICAgfSBlbHNlIGlmIChvdGhJc051bGwgfHwgb3RoSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRMb3cgPSByZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2V0TG93KSB7XG4gICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoaWdoID0gbWlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlTWluKGhpZ2gsIE1BWF9BUlJBWV9JTkRFWCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkVW5pcWAgYW5kIGBfLnNvcnRlZFVuaXFCeWAgd2l0aG91dFxuICAgICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgaWYgKCFpbmRleCB8fCAhZXEoY29tcHV0ZWQsIHNlZW4pKSB7XG4gICAgICAgICAgdmFyIHNlZW4gPSBjb21wdXRlZDtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b051bWJlcmAgd2hpY2ggZG9lc24ndCBlbnN1cmUgY29ycmVjdFxuICAgICAqIGNvbnZlcnNpb25zIG9mIGJpbmFyeSwgaGV4YWRlY2ltYWwsIG9yIG9jdGFsIHN0cmluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb051bWJlcih2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOQU47XG4gICAgICB9XG4gICAgICByZXR1cm4gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICAgICAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gICAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICBzZWVuID0gcmVzdWx0O1xuXG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAobGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICAgICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgICAgIGlmIChzZXQpIHtcbiAgICAgICAgICByZXR1cm4gc2V0VG9BcnJheShzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IHJlc3VsdCkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuc2V0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCB0byB1bnNldC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsIHx8IGRlbGV0ZSBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVwZGF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlciwgY3VzdG9taXplcikge1xuICAgICAgcmV0dXJuIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB1cGRhdGVyKGJhc2VHZXQob2JqZWN0LCBwYXRoKSksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kcm9wV2hpbGVgIGFuZCBgXy50YWtlV2hpbGVgXG4gICAgICogd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEcm9wXSBTcGVjaWZ5IGRyb3BwaW5nIGVsZW1lbnRzIGluc3RlYWQgb2YgdGFraW5nIHRoZW0uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXaGlsZShhcnJheSwgcHJlZGljYXRlLCBpc0Ryb3AsIGZyb21SaWdodCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xO1xuXG4gICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSAmJlxuICAgICAgICBwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7fVxuXG4gICAgICByZXR1cm4gaXNEcm9wXG4gICAgICAgID8gYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gMCA6IGluZGV4KSwgKGZyb21SaWdodCA/IGluZGV4ICsgMSA6IGxlbmd0aCkpXG4gICAgICAgIDogYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogMCksIChmcm9tUmlnaHQgPyBsZW5ndGggOiBpbmRleCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGB3cmFwcGVyVmFsdWVgIHdoaWNoIHJldHVybnMgdGhlIHJlc3VsdCBvZlxuICAgICAqIHBlcmZvcm1pbmcgYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIG9uIHRoZSB1bndyYXBwZWQgYHZhbHVlYCwgd2hlcmUgZWFjaFxuICAgICAqIHN1Y2Nlc3NpdmUgYWN0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gYWN0aW9ucyBBY3Rpb25zIHRvIHBlcmZvcm0gdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlV3JhcHBlclZhbHVlKHZhbHVlLCBhY3Rpb25zKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdmFsdWU7XG4gICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnZhbHVlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2UoYWN0aW9ucywgZnVuY3Rpb24ocmVzdWx0LCBhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbi5mdW5jLmFwcGx5KGFjdGlvbi50aGlzQXJnLCBhcnJheVB1c2goW3Jlc3VsdF0sIGFjdGlvbi5hcmdzKSk7XG4gICAgICB9LCByZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy54b3JgLCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VYb3IoYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5cy5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVVuaXEoYXJyYXlzWzBdKSA6IFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW2luZGV4XSxcbiAgICAgICAgICAgIG90aEluZGV4ID0gLTE7XG5cbiAgICAgICAgd2hpbGUgKCsrb3RoSW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBpZiAob3RoSW5kZXggIT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHJlc3VsdFtpbmRleF0gPSBiYXNlRGlmZmVyZW5jZShyZXN1bHRbaW5kZXhdIHx8IGFycmF5LCBhcnJheXNbb3RoSW5kZXhdLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4ocmVzdWx0LCAxKSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbkZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlWmlwT2JqZWN0KHByb3BzLCB2YWx1ZXMsIGFzc2lnbkZ1bmMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aCxcbiAgICAgICAgICB2YWxzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5kZXggPCB2YWxzTGVuZ3RoID8gdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGFuIGVtcHR5IGFycmF5IGlmIGl0J3Mgbm90IGFuIGFycmF5IGxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgdGhlIGNhc3QgYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEFycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSA/IHZhbHVlIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBgaWRlbnRpdHlgIGlmIGl0J3Mgbm90IGEgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNLZXkodmFsdWUsIG9iamVjdCkgPyBbdmFsdWVdIDogc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBgYmFzZVJlc3RgIGFsaWFzIHdoaWNoIGNhbiBiZSByZXBsYWNlZCB3aXRoIGBpZGVudGl0eWAgYnkgbW9kdWxlXG4gICAgICogcmVwbGFjZW1lbnQgcGx1Z2lucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgdmFyIGNhc3RSZXN0ID0gYmFzZVJlc3Q7XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgYXJyYXlgIHRvIGEgc2xpY2UgaWYgaXQncyBuZWVkZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBzbGljZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0U2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZDtcbiAgICAgIHJldHVybiAoIXN0YXJ0ICYmIGVuZCA+PSBsZW5ndGgpID8gYXJyYXkgOiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BjbGVhclRpbWVvdXRgXShodHRwczovL21kbi5pby9jbGVhclRpbWVvdXQpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcnxPYmplY3R9IGlkIFRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdCBvZiB0aGUgdGltZXIgdG8gY2xlYXIuXG4gICAgICovXG4gICAgdmFyIGNsZWFyVGltZW91dCA9IGN0eENsZWFyVGltZW91dCB8fCBmdW5jdGlvbihpZCkge1xuICAgICAgcmV0dXJuIHJvb3QuY2xlYXJUaW1lb3V0KGlkKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgICAgIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURhdGFWaWV3KGRhdGFWaWV3LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gICAgICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgICAgIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gICAgICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGB2YWx1ZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZUFzY2VuZGluZyh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gb3RoZXIpIHtcbiAgICAgICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICAgIHZhbElzUmVmbGV4aXZlID0gdmFsdWUgPT09IHZhbHVlLFxuICAgICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICAgICAgdmFyIG90aElzRGVmaW5lZCA9IG90aGVyICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBvdGhJc051bGwgPSBvdGhlciA9PT0gbnVsbCxcbiAgICAgICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChvdGhlcik7XG5cbiAgICAgICAgaWYgKCghb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCAmJiAhdmFsSXNTeW1ib2wgJiYgdmFsdWUgPiBvdGhlcikgfHxcbiAgICAgICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAodmFsSXNOdWxsICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghdmFsSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgICAgIChvdGhJc1N5bWJvbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUgJiYgIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAob3RoSXNOdWxsICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIW90aElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLm9yZGVyQnlgIHRvIGNvbXBhcmUgbXVsdGlwbGUgcHJvcGVydGllcyBvZiBhIHZhbHVlIHRvIGFub3RoZXJcbiAgICAgKiBhbmQgc3RhYmxlIHNvcnQgdGhlbS5cbiAgICAgKlxuICAgICAqIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsXG4gICAgICogc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3IgZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlclxuICAgICAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbltdfHN0cmluZ1tdfSBvcmRlcnMgVGhlIG9yZGVyIHRvIHNvcnQgYnkgZm9yIGVhY2ggcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIG9iakNyaXRlcmlhID0gb2JqZWN0LmNyaXRlcmlhLFxuICAgICAgICAgIG90aENyaXRlcmlhID0gb3RoZXIuY3JpdGVyaWEsXG4gICAgICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgICAgIG9yZGVyc0xlbmd0aCA9IG9yZGVycy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIGlmIChpbmRleCA+PSBvcmRlcnNMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvcmRlciA9IG9yZGVyc1tpbmRleF07XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gICAgICAvLyB0aGF0IGNhdXNlcyBpdCwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB0byBwcm92aWRlIHRoZSBzYW1lIHZhbHVlIGZvclxuICAgICAgLy8gYG9iamVjdGAgYW5kIGBvdGhlcmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvcHVsbC8xMjQ3XG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgLy9cbiAgICAgIC8vIFRoaXMgYWxzbyBlbnN1cmVzIGEgc3RhYmxlIHNvcnQgaW4gVjggYW5kIG90aGVyIGVuZ2luZXMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QuaW5kZXggLSBvdGhlci5pbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uIG9mIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cyxcbiAgICAgKiBwbGFjZWhvbGRlcnMsIGFuZCBwcm92aWRlZCBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBhcnJheSBvZiBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaG9sZGVycyBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbXMge2Jvb2xlYW59IFtpc0N1cnJpZWRdIFNwZWNpZnkgY29tcG9zaW5nIGZvciBhIGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tcG9zZWQgYXJndW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIGxlZnRJbmRleCA9IC0xLFxuICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlZnRMZW5ndGggKyByYW5nZUxlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2FyZ3NJbmRleCA8IGhvbGRlcnNMZW5ndGgpIHtcbiAgICAgICAgaWYgKGlzVW5jdXJyaWVkIHx8IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHRbaG9sZGVyc1thcmdzSW5kZXhdXSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHJhbmdlTGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleCsrXSA9IGFyZ3NbYXJnc0luZGV4KytdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGNvbXBvc2VBcmdzYCBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnRzIGNvbXBvc2l0aW9uXG4gICAgICogaXMgdGFpbG9yZWQgZm9yIGBfLnBhcnRpYWxSaWdodGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFscywgaG9sZGVycywgaXNDdXJyaWVkKSB7XG4gICAgICB2YXIgYXJnc0luZGV4ID0gLTEsXG4gICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoLFxuICAgICAgICAgIGhvbGRlcnNJbmRleCA9IC0xLFxuICAgICAgICAgIGhvbGRlcnNMZW5ndGggPSBob2xkZXJzLmxlbmd0aCxcbiAgICAgICAgICByaWdodEluZGV4ID0gLTEsXG4gICAgICAgICAgcmlnaHRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KHJhbmdlTGVuZ3RoICsgcmlnaHRMZW5ndGgpLFxuICAgICAgICAgIGlzVW5jdXJyaWVkID0gIWlzQ3VycmllZDtcblxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgcmFuZ2VMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2FyZ3NJbmRleF0gPSBhcmdzW2FyZ3NJbmRleF07XG4gICAgICB9XG4gICAgICB2YXIgb2Zmc2V0ID0gYXJnc0luZGV4O1xuICAgICAgd2hpbGUgKCsrcmlnaHRJbmRleCA8IHJpZ2h0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtvZmZzZXQgKyByaWdodEluZGV4XSA9IHBhcnRpYWxzW3JpZ2h0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraG9sZGVyc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtvZmZzZXQgKyBob2xkZXJzW2hvbGRlcnNJbmRleF1dID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gICAgICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICAgICAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTmV3KSB7XG4gICAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2UsIG9iamVjdCkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIG93biBhbmQgaW5oZXJpdGVkIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmdyb3VwQnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2luaXRpYWxpemVyXSBUaGUgYWNjdW11bGF0b3Igb2JqZWN0IGluaXRpYWxpemVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFnZ3JlZ2F0b3IgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQWdncmVnYXRvcihzZXR0ZXIsIGluaXRpYWxpemVyKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlBZ2dyZWdhdG9yIDogYmFzZUFnZ3JlZ2F0b3IsXG4gICAgICAgICAgICBhY2N1bXVsYXRvciA9IGluaXRpYWxpemVyID8gaW5pdGlhbGl6ZXIoKSA6IHt9O1xuXG4gICAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIHNldHRlciwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpLCBhY2N1bXVsYXRvcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgYmFzZUVhY2hgIG9yIGBiYXNlRWFjaFJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBhIGNvbGxlY3Rpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYywgZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCaW5kKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBmbi5hcHBseShpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmxvd2VyRmlyc3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYFN0cmluZ2AgY2FzZSBtZXRob2QgdG8gdXNlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ2FzZUZpcnN0KG1ldGhvZE5hbWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgICB2YXIgc3RyU3ltYm9scyA9IGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgICAgID8gc3RyaW5nVG9BcnJheShzdHJpbmcpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgdmFyIGNociA9IHN0clN5bWJvbHNcbiAgICAgICAgICA/IHN0clN5bWJvbHNbMF1cbiAgICAgICAgICA6IHN0cmluZy5jaGFyQXQoMCk7XG5cbiAgICAgICAgdmFyIHRyYWlsaW5nID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDEpLmpvaW4oJycpXG4gICAgICAgICAgOiBzdHJpbmcuc2xpY2UoMSk7XG5cbiAgICAgICAgcmV0dXJuIGNoclttZXRob2ROYW1lXSgpICsgdHJhaWxpbmc7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmNhbWVsQ2FzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lIGVhY2ggd29yZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3VuZGVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvdW5kZXIoY2FsbGJhY2spIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5UmVkdWNlKHdvcmRzKGRlYnVycihzdHJpbmcpLnJlcGxhY2UocmVBcG9zLCAnJykpLCBjYWxsYmFjaywgJycpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhbiBpbnN0YW5jZSBvZiBgQ3RvcmAgcmVnYXJkbGVzcyBvZlxuICAgICAqIHdoZXRoZXIgaXQgd2FzIGludm9rZWQgYXMgcGFydCBvZiBhIGBuZXdgIGV4cHJlc3Npb24gb3IgYnkgYGNhbGxgIG9yIGBhcHBseWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IEN0b3IgVGhlIGNvbnN0cnVjdG9yIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdG9yKEN0b3IpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gVXNlIGEgYHN3aXRjaGAgc3RhdGVtZW50IHRvIHdvcmsgd2l0aCBjbGFzcyBjb25zdHJ1Y3RvcnMuIFNlZVxuICAgICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWZ1bmN0aW9uLW9iamVjdHMtY2FsbC10aGlzYXJndW1lbnQtYXJndW1lbnRzbGlzdFxuICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDdG9yO1xuICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0pO1xuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0pO1xuICAgICAgICAgIGNhc2UgNzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0sIGFyZ3NbNl0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGlzQmluZGluZyA9IGJhc2VDcmVhdGUoQ3Rvci5wcm90b3R5cGUpLFxuICAgICAgICAgICAgcmVzdWx0ID0gQ3Rvci5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG5cbiAgICAgICAgLy8gTWltaWMgdGhlIGNvbnN0cnVjdG9yJ3MgYHJldHVybmAgYmVoYXZpb3IuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2VzNS5naXRodWIuaW8vI3gxMy4yLjIgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiB0aGlzQmluZGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGVuYWJsZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhcml0eSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpIHtcbiAgICAgIHZhciBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlcik7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGhvbGRlcnMgPSAobGVuZ3RoIDwgMyAmJiBhcmdzWzBdICE9PSBwbGFjZWhvbGRlciAmJiBhcmdzW2xlbmd0aCAtIDFdICE9PSBwbGFjZWhvbGRlcilcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiByZXBsYWNlSG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG5cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgYXJncywgaG9sZGVycywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5IC0gbGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuICAgICAgICByZXR1cm4gYXBwbHkoZm4sIHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLmZpbmRgIG9yIGBfLmZpbmRMYXN0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZmluZEluZGV4RnVuYyBUaGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29sbGVjdGlvbiBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZpbmQoZmluZEluZGV4RnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHZhciBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmxvd2Agb3IgYF8uZmxvd1JpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmxvdyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVGbG93KGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGZ1bmNzKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBmdW5jcy5sZW5ndGgsXG4gICAgICAgICAgICBpbmRleCA9IGxlbmd0aCxcbiAgICAgICAgICAgIHByZXJlcSA9IExvZGFzaFdyYXBwZXIucHJvdG90eXBlLnRocnU7XG5cbiAgICAgICAgaWYgKGZyb21SaWdodCkge1xuICAgICAgICAgIGZ1bmNzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIHZhciBmdW5jID0gZnVuY3NbaW5kZXhdO1xuICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmVyZXEgJiYgIXdyYXBwZXIgJiYgZ2V0RnVuY05hbWUoZnVuYykgPT0gJ3dyYXBwZXInKSB7XG4gICAgICAgICAgICB2YXIgd3JhcHBlciA9IG5ldyBMb2Rhc2hXcmFwcGVyKFtdLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSB3cmFwcGVyID8gaW5kZXggOiBsZW5ndGg7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgZnVuYyA9IGZ1bmNzW2luZGV4XTtcblxuICAgICAgICAgIHZhciBmdW5jTmFtZSA9IGdldEZ1bmNOYW1lKGZ1bmMpLFxuICAgICAgICAgICAgICBkYXRhID0gZnVuY05hbWUgPT0gJ3dyYXBwZXInID8gZ2V0RGF0YShmdW5jKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChkYXRhICYmIGlzTGF6aWFibGUoZGF0YVswXSkgJiZcbiAgICAgICAgICAgICAgICBkYXRhWzFdID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1JFQVJHX0ZMQUcpICYmXG4gICAgICAgICAgICAgICAgIWRhdGFbNF0ubGVuZ3RoICYmIGRhdGFbOV0gPT0gMVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdyYXBwZXIgPSB3cmFwcGVyW2dldEZ1bmNOYW1lKGRhdGFbMF0pXS5hcHBseSh3cmFwcGVyLCBkYXRhWzNdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd3JhcHBlciA9IChmdW5jLmxlbmd0aCA9PSAxICYmIGlzTGF6aWFibGUoZnVuYykpXG4gICAgICAgICAgICAgID8gd3JhcHBlcltmdW5jTmFtZV0oKVxuICAgICAgICAgICAgICA6IHdyYXBwZXIudGhydShmdW5jKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGFyZ3NbMF07XG5cbiAgICAgICAgICBpZiAod3JhcHBlciAmJiBhcmdzLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcHBlci5wbGFudCh2YWx1ZSkudmFsdWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICAgICAgcmVzdWx0ID0gbGVuZ3RoID8gZnVuY3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3MpIDogdmFsdWU7XG5cbiAgICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZnVuY3NbaW5kZXhdLmNhbGwodGhpcywgcmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYCwgcGFydGlhbCBhcHBsaWNhdGlvbiwgYW5kIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNSaWdodF0gVGhlIGFyZ3VtZW50cyB0byBhcHBlbmQgdG8gdGhvc2UgcHJvdmlkZWRcbiAgICAgKiAgdG8gdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc1JpZ2h0XSBUaGUgYHBhcnRpYWxzUmlnaHRgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSHlicmlkKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQXJ5ID0gYml0bWFzayAmIFdSQVBfQVJZX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kID0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHLFxuICAgICAgICAgIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUcsXG4gICAgICAgICAgaXNDdXJyaWVkID0gYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpLFxuICAgICAgICAgIGlzRmxpcCA9IGJpdG1hc2sgJiBXUkFQX0ZMSVBfRkxBRyxcbiAgICAgICAgICBDdG9yID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0N1cnJpZWQpIHtcbiAgICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlciksXG4gICAgICAgICAgICAgIGhvbGRlcnNDb3VudCA9IGNvdW50SG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzKSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0aWFsc1JpZ2h0KSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzUmlnaHQoYXJncywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aCAtPSBob2xkZXJzQ291bnQ7XG4gICAgICAgIGlmIChpc0N1cnJpZWQgJiYgbGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICB2YXIgbmV3SG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdGhpc0FyZyxcbiAgICAgICAgICAgIGFyZ3MsIG5ld0hvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSAtIGxlbmd0aFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsXG4gICAgICAgICAgICBmbiA9IGlzQmluZEtleSA/IHRoaXNCaW5kaW5nW2Z1bmNdIDogZnVuYztcblxuICAgICAgICBsZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgICAgICAgaWYgKGFyZ1Bvcykge1xuICAgICAgICAgIGFyZ3MgPSByZW9yZGVyKGFyZ3MsIGFyZ1Bvcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNGbGlwICYmIGxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBhcmdzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBcnkgJiYgYXJ5IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJncy5sZW5ndGggPSBhcnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikge1xuICAgICAgICAgIGZuID0gQ3RvciB8fCBjcmVhdGVDdG9yKGZuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpc0JpbmRpbmcsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uaW52ZXJ0QnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdG9JdGVyYXRlZSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52ZXJ0ZXIoc2V0dGVyLCB0b0l0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludmVydGVyKG9iamVjdCwgc2V0dGVyLCB0b0l0ZXJhdGVlKGl0ZXJhdGVlKSwge30pO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHVzZWQgZm9yIGB1bmRlZmluZWRgIGFyZ3VtZW50cy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZU1hdGhPcGVyYXRpb24ob3BlcmF0b3IsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvdGhlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gb3RoZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICBvdGhlciA9IGJhc2VUb1N0cmluZyhvdGhlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvTnVtYmVyKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gb3BlcmF0b3IodmFsdWUsIG90aGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5vdmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXJyYXlGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgaXRlcmF0ZWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG92ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlT3ZlcihhcnJheUZ1bmMpIHtcbiAgICAgIHJldHVybiBmbGF0UmVzdChmdW5jdGlvbihpdGVyYXRlZXMpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuICAgICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICAgIHZhciB0aGlzQXJnID0gdGhpcztcbiAgICAgICAgICByZXR1cm4gYXJyYXlGdW5jKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdGhpc0FyZywgYXJncyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AgYmFzZWQgb24gYGxlbmd0aGAuIFRoZSBgY2hhcnNgIHN0cmluZ1xuICAgICAqIGlzIHRydW5jYXRlZCBpZiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZXhjZWVkcyBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRpbmcgZm9yIGBzdHJpbmdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZGRpbmcobGVuZ3RoLCBjaGFycykge1xuICAgICAgY2hhcnMgPSBjaGFycyA9PT0gdW5kZWZpbmVkID8gJyAnIDogYmFzZVRvU3RyaW5nKGNoYXJzKTtcblxuICAgICAgdmFyIGNoYXJzTGVuZ3RoID0gY2hhcnMubGVuZ3RoO1xuICAgICAgaWYgKGNoYXJzTGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gY2hhcnNMZW5ndGggPyBiYXNlUmVwZWF0KGNoYXJzLCBsZW5ndGgpIDogY2hhcnM7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVJlcGVhdChjaGFycywgbmF0aXZlQ2VpbChsZW5ndGggLyBzdHJpbmdTaXplKGNoYXJzKSkpO1xuICAgICAgcmV0dXJuIGhhc1VuaWNvZGUoY2hhcnMpXG4gICAgICAgID8gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkocmVzdWx0KSwgMCwgbGVuZ3RoKS5qb2luKCcnKVxuICAgICAgICA6IHJlc3VsdC5zbGljZSgwLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmdcbiAgICAgKiBvZiBgdGhpc0FyZ2AgYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KGxlZnRMZW5ndGggKyBhcmdzTGVuZ3RoKSxcbiAgICAgICAgICAgIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcblxuICAgICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoYXJnc0xlbmd0aC0tKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXgrK10gPSBhcmd1bWVudHNbKythcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnJhbmdlYCBvciBgXy5yYW5nZVJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmFuZ2UoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCwgc3RlcCkge1xuICAgICAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgICAgIGVuZCA9IHN0ZXAgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcCA9IHN0ZXAgPT09IHVuZGVmaW5lZCA/IChzdGFydCA8IGVuZCA/IDEgOiAtMSkgOiB0b0Zpbml0ZShzdGVwKTtcbiAgICAgICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHJlbGF0aW9uYWwgb3BlcmF0aW9uIG9uIHR3byB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wZXJhdG9yIFRoZSBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVsYXRpb25hbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihvcGVyYXRvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgJiYgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSkge1xuICAgICAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgIG90aGVyID0gdG9OdW1iZXIob3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gY29udGludWUgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB3cmFwRnVuYyBUaGUgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBgZnVuY2Agd3JhcHBlci5cbiAgICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNdIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVjdXJyeShmdW5jLCBiaXRtYXNrLCB3cmFwRnVuYywgcGxhY2Vob2xkZXIsIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0N1cnJ5ID0gYml0bWFzayAmIFdSQVBfQ1VSUllfRkxBRyxcbiAgICAgICAgICBuZXdIb2xkZXJzID0gaXNDdXJyeSA/IGhvbGRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3SG9sZGVyc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IGhvbGRlcnMsXG4gICAgICAgICAgbmV3UGFydGlhbHMgPSBpc0N1cnJ5ID8gcGFydGlhbHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3UGFydGlhbHNSaWdodCA9IGlzQ3VycnkgPyB1bmRlZmluZWQgOiBwYXJ0aWFscztcblxuICAgICAgYml0bWFzayB8PSAoaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9GTEFHIDogV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgYml0bWFzayAmPSB+KGlzQ3VycnkgPyBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA6IFdSQVBfUEFSVElBTF9GTEFHKTtcblxuICAgICAgaWYgKCEoYml0bWFzayAmIFdSQVBfQ1VSUllfQk9VTkRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHKTtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBuZXdQYXJ0aWFscywgbmV3SG9sZGVycywgbmV3UGFydGlhbHNSaWdodCxcbiAgICAgICAgbmV3SG9sZGVyc1JpZ2h0LCBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIHZhciByZXN1bHQgPSB3cmFwRnVuYy5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgaWYgKGlzTGF6aWFibGUoZnVuYykpIHtcbiAgICAgICAgc2V0RGF0YShyZXN1bHQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHJlc3VsdCwgZnVuYywgYml0bWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ucm91bmRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYE1hdGhgIG1ldGhvZCB0byB1c2Ugd2hlbiByb3VuZGluZy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByb3VuZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSb3VuZChtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IE1hdGhbbWV0aG9kTmFtZV07XG4gICAgICByZXR1cm4gZnVuY3Rpb24obnVtYmVyLCBwcmVjaXNpb24pIHtcbiAgICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgcHJlY2lzaW9uID0gcHJlY2lzaW9uID09IG51bGwgPyAwIDogbmF0aXZlTWluKHRvSW50ZWdlcihwcmVjaXNpb24pLCAyOTIpO1xuICAgICAgICBpZiAocHJlY2lzaW9uICYmIG5hdGl2ZUlzRmluaXRlKG51bWJlcikpIHtcbiAgICAgICAgICAvLyBTaGlmdCB3aXRoIGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGF2b2lkIGZsb2F0aW5nLXBvaW50IGlzc3Vlcy5cbiAgICAgICAgICAvLyBTZWUgW01ETl0oaHR0cHM6Ly9tZG4uaW8vcm91bmQjRXhhbXBsZXMpIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgdmFyIHBhaXIgPSAodG9TdHJpbmcobnVtYmVyKSArICdlJykuc3BsaXQoJ2UnKSxcbiAgICAgICAgICAgICAgdmFsdWUgPSBmdW5jKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gKyBwcmVjaXNpb24pKTtcblxuICAgICAgICAgIHBhaXIgPSAodG9TdHJpbmcodmFsdWUpICsgJ2UnKS5zcGxpdCgnZScpO1xuICAgICAgICAgIHJldHVybiArKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gLSBwcmVjaXNpb24pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYyhudW1iZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2V0IG9iamVjdCBvZiBgdmFsdWVzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAgICAgKi9cbiAgICB2YXIgY3JlYXRlU2V0ID0gIShTZXQgJiYgKDEgLyBzZXRUb0FycmF5KG5ldyBTZXQoWywtMF0pKVsxXSkgPT0gSU5GSU5JVFkpID8gbm9vcCA6IGZ1bmN0aW9uKHZhbHVlcykge1xuICAgICAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnRvUGFpcnNgIG9yIGBfLnRvUGFpcnNJbmAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFpcnMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlVG9QYWlycyhrZXlzRnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgdGFnID0gZ2V0VGFnKG9iamVjdCk7XG4gICAgICAgIGlmICh0YWcgPT0gbWFwVGFnKSB7XG4gICAgICAgICAgcmV0dXJuIG1hcFRvQXJyYXkob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09IHNldFRhZykge1xuICAgICAgICAgIHJldHVybiBzZXRUb1BhaXJzKG9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJhc2VUb1BhaXJzKG9iamVjdCwga2V5c0Z1bmMob2JqZWN0KSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGVpdGhlciBjdXJyaWVzIG9yIGludm9rZXMgYGZ1bmNgIHdpdGggb3B0aW9uYWxcbiAgICAgKiBgdGhpc2AgYmluZGluZyBhbmQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgICAxIC0gYF8uYmluZGBcbiAgICAgKiAgICAyIC0gYF8uYmluZEtleWBcbiAgICAgKiAgICA0IC0gYF8uY3VycnlgIG9yIGBfLmN1cnJ5UmlnaHRgIG9mIGEgYm91bmQgZnVuY3Rpb25cbiAgICAgKiAgICA4IC0gYF8uY3VycnlgXG4gICAgICogICAxNiAtIGBfLmN1cnJ5UmlnaHRgXG4gICAgICogICAzMiAtIGBfLnBhcnRpYWxgXG4gICAgICogICA2NCAtIGBfLnBhcnRpYWxSaWdodGBcbiAgICAgKiAgMTI4IC0gYF8ucmVhcmdgXG4gICAgICogIDI1NiAtIGBfLmFyeWBcbiAgICAgKiAgNTEyIC0gYF8uZmxpcGBcbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVXcmFwKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0JpbmRLZXkgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0tFWV9GTEFHO1xuICAgICAgaWYgKCFpc0JpbmRLZXkgJiYgdHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGFydGlhbHMgPyBwYXJ0aWFscy5sZW5ndGggOiAwO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfUEFSVElBTF9GTEFHIHwgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBhcnkgPSBhcnkgPT09IHVuZGVmaW5lZCA/IGFyeSA6IG5hdGl2ZU1heCh0b0ludGVnZXIoYXJ5KSwgMCk7XG4gICAgICBhcml0eSA9IGFyaXR5ID09PSB1bmRlZmluZWQgPyBhcml0eSA6IHRvSW50ZWdlcihhcml0eSk7XG4gICAgICBsZW5ndGggLT0gaG9sZGVycyA/IGhvbGRlcnMubGVuZ3RoIDogMDtcblxuICAgICAgaWYgKGJpdG1hc2sgJiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRykge1xuICAgICAgICB2YXIgcGFydGlhbHNSaWdodCA9IHBhcnRpYWxzLFxuICAgICAgICAgICAgaG9sZGVyc1JpZ2h0ID0gaG9sZGVycztcblxuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB2YXIgZGF0YSA9IGlzQmluZEtleSA/IHVuZGVmaW5lZCA6IGdldERhdGEoZnVuYyk7XG5cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LFxuICAgICAgICBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIG1lcmdlRGF0YShuZXdEYXRhLCBkYXRhKTtcbiAgICAgIH1cbiAgICAgIGZ1bmMgPSBuZXdEYXRhWzBdO1xuICAgICAgYml0bWFzayA9IG5ld0RhdGFbMV07XG4gICAgICB0aGlzQXJnID0gbmV3RGF0YVsyXTtcbiAgICAgIHBhcnRpYWxzID0gbmV3RGF0YVszXTtcbiAgICAgIGhvbGRlcnMgPSBuZXdEYXRhWzRdO1xuICAgICAgYXJpdHkgPSBuZXdEYXRhWzldID0gbmV3RGF0YVs5XSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gKGlzQmluZEtleSA/IDAgOiBmdW5jLmxlbmd0aClcbiAgICAgICAgOiBuYXRpdmVNYXgobmV3RGF0YVs5XSAtIGxlbmd0aCwgMCk7XG5cbiAgICAgIGlmICghYXJpdHkgJiYgYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpKSB7XG4gICAgICAgIGJpdG1hc2sgJj0gfihXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpO1xuICAgICAgfVxuICAgICAgaWYgKCFiaXRtYXNrIHx8IGJpdG1hc2sgPT0gV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZyk7XG4gICAgICB9IGVsc2UgaWYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHIHx8IGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUN1cnJ5KGZ1bmMsIGJpdG1hc2ssIGFyaXR5KTtcbiAgICAgIH0gZWxzZSBpZiAoKGJpdG1hc2sgPT0gV1JBUF9QQVJUSUFMX0ZMQUcgfHwgYml0bWFzayA9PSAoV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRykpICYmICFob2xkZXJzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQgPSBjcmVhdGVQYXJ0aWFsKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUh5YnJpZC5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgdmFyIHNldHRlciA9IGRhdGEgPyBiYXNlU2V0RGF0YSA6IHNldERhdGE7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHNldHRlcihyZXN1bHQsIG5ld0RhdGEpLCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAgICAgKiBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllc1xuICAgICAqIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbURlZmF1bHRzQXNzaWduSW4ob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEob2JqVmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgcmV0dXJuIHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNEZWVwYCB0byBjdXN0b21pemUgaXRzIGBfLm1lcmdlYCB1c2UgdG8gbWVyZ2Ugc291cmNlXG4gICAgICogb2JqZWN0cyBpbnRvIGRlc3RpbmF0aW9uIG9iamVjdHMgdGhhdCBhcmUgcGFzc2VkIHRocnUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBzcmNWYWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKSB7XG4gICAgICBpZiAoaXNPYmplY3Qob2JqVmFsdWUpICYmIGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBvYmpWYWx1ZSk7XG4gICAgICAgIGJhc2VNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSwgc3RhY2spO1xuICAgICAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub21pdGAgdG8gY3VzdG9taXplIGl0cyBgXy5jbG9uZURlZXBgIHVzZSB0byBvbmx5IGNsb25lIHBsYWluXG4gICAgICogb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHVuY2xvbmVkIHZhbHVlIG9yIGB1bmRlZmluZWRgIHRvIGRlZmVyIGNsb25pbmcgdG8gYF8uY2xvbmVEZWVwYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc1BsYWluT2JqZWN0KHZhbHVlKSA/IHVuZGVmaW5lZCA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgYXJyYXlzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYGFycmF5YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBvdGhMZW5ndGggPSBvdGhlci5sZW5ndGg7XG5cbiAgICAgIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICAgICAgaWYgKHN0YWNrZWQgJiYgc3RhY2suZ2V0KG90aGVyKSkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICAgICAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgICAgIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gICAgICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAgICAgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgICAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgICAgICBjYXNlIG1hcFRhZzpcbiAgICAgICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLFxuICAgICAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcblxuICAgICAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkICYmIHN0YWNrLmdldChvdGhlcikpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICAgICAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICAgICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgICAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICAgICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFsbEtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBnZXREYXRhID0gIW1ldGFNYXAgPyBub29wIDogZnVuY3Rpb24oZnVuYykge1xuICAgICAgcmV0dXJuIG1ldGFNYXAuZ2V0KGZ1bmMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRGdW5jTmFtZShmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gKGZ1bmMubmFtZSArICcnKSxcbiAgICAgICAgICBhcnJheSA9IHJlYWxOYW1lc1tyZXN1bHRdLFxuICAgICAgICAgIGxlbmd0aCA9IGhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCByZXN1bHQpID8gYXJyYXkubGVuZ3RoIDogMDtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gYXJyYXlbbGVuZ3RoXSxcbiAgICAgICAgICAgIG90aGVyRnVuYyA9IGRhdGEuZnVuYztcbiAgICAgICAgaWYgKG90aGVyRnVuYyA9PSBudWxsIHx8IG90aGVyRnVuYyA9PSBmdW5jKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEubmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcmd1bWVudCBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRIb2xkZXIoZnVuYykge1xuICAgICAgdmFyIG9iamVjdCA9IGhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLCAncGxhY2Vob2xkZXInKSA/IGxvZGFzaCA6IGZ1bmM7XG4gICAgICByZXR1cm4gb2JqZWN0LnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIFwiaXRlcmF0ZWVcIiBmdW5jdGlvbi4gSWYgYF8uaXRlcmF0ZWVgIGlzIGN1c3RvbWl6ZWQsXG4gICAgICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXN0b20gbWV0aG9kLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgYmFzZUl0ZXJhdGVlYC5cbiAgICAgKiBJZiBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCB0aGUgY2hvc2VuIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCB0aGVtIGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgdGhlIGNyZWF0ZWQgaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjaG9zZW4gZnVuY3Rpb24gb3IgaXRzIHJlc3VsdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRJdGVyYXRlZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2guaXRlcmF0ZWUgfHwgaXRlcmF0ZWU7XG4gICAgICByZXN1bHQgPSByZXN1bHQgPT09IGl0ZXJhdGVlID8gYmFzZUl0ZXJhdGVlIDogcmVzdWx0O1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyByZXN1bHQoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgICAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gICAgICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICAgICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICAgICAgOiBkYXRhLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgICAgIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIGlmICh1bm1hc2tlZCkge1xuICAgICAgICBpZiAoaXNPd24pIHtcbiAgICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgd2hpbGUgKG9iamVjdCkge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgICAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuICAgIC8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbiAgICBpZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAgICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgICAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgICAgIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICAgICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2aWV3LCBhcHBseWluZyBhbnkgYHRyYW5zZm9ybXNgIHRvIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBwb3NpdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHZpZXcuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHRyYW5zZm9ybXMgVGhlIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgdmlldy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBgc3RhcnRgIGFuZCBgZW5kYFxuICAgICAqICBwb3NpdGlvbnMgb2YgdGhlIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0VmlldyhzdGFydCwgZW5kLCB0cmFuc2Zvcm1zKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB0cmFuc2Zvcm1zW2luZGV4XSxcbiAgICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkcm9wJzogICAgICBzdGFydCArPSBzaXplOyBicmVhaztcbiAgICAgICAgICBjYXNlICdkcm9wUmlnaHQnOiBlbmQgLT0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZSc6ICAgICAgZW5kID0gbmF0aXZlTWluKGVuZCwgc3RhcnQgKyBzaXplKTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZVJpZ2h0Jzogc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQsIGVuZCAtIHNpemUpOyBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgJ3N0YXJ0Jzogc3RhcnQsICdlbmQnOiBlbmQgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB3cmFwcGVyIGRldGFpbHMgZnJvbSB0aGUgYHNvdXJjZWAgYm9keSBjb21tZW50LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdyYXBwZXIgZGV0YWlscy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRXcmFwRGV0YWlscyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaCA9IHNvdXJjZS5tYXRjaChyZVdyYXBEZXRhaWxzKTtcbiAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdLnNwbGl0KHJlU3BsaXREZXRhaWxzKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gICAgICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICAgICAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICAgICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gICAgICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgICAgICA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gICAgICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgICAgIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICAgICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgICAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgd3JhcHBlciBgZGV0YWlsc2AgaW4gYSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIGBzb3VyY2VgIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgVGhlIHNvdXJjZSB0byBtb2RpZnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBkZXRhaWxzIFRoZSBkZXRhaWxzIHRvIGluc2VydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCBkZXRhaWxzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gZGV0YWlscy5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBkZXRhaWxzW2xhc3RJbmRleF0gPSAobGVuZ3RoID4gMSA/ICcmICcgOiAnJykgKyBkZXRhaWxzW2xhc3RJbmRleF07XG4gICAgICBkZXRhaWxzID0gZGV0YWlscy5qb2luKGxlbmd0aCA+IDIgPyAnLCAnIDogJyAnKTtcbiAgICAgIHJldHVybiBzb3VyY2UucmVwbGFjZShyZVdyYXBDb21tZW50LCAne1xcbi8qIFt3cmFwcGVkIHdpdGggJyArIGRldGFpbHMgKyAnXSAqL1xcbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAgICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICAgICAgKSB7XG4gICAgICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAgICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgICAgIDogKHZhbHVlID09PSBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGF6aWFibGUoZnVuYykge1xuICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgb3RoZXIgPSBsb2Rhc2hbZnVuY05hbWVdO1xuXG4gICAgICBpZiAodHlwZW9mIG90aGVyICE9ICdmdW5jdGlvbicgfHwgIShmdW5jTmFtZSBpbiBMYXp5V3JhcHBlci5wcm90b3R5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmdW5jID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gZ2V0RGF0YShvdGhlcik7XG4gICAgICByZXR1cm4gISFkYXRhICYmIGZ1bmMgPT09IGRhdGFbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICAgICAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGlzIGNhcGFibGUgb2YgYmVpbmcgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2thYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgdmFyIGlzTWFza2FibGUgPSBjb3JlSnNEYXRhID8gaXNGdW5jdGlvbiA6IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgICAgIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICAgICAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICAgICAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUoa2V5LCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgICAgIChzcmNWYWx1ZSAhPT0gdW5kZWZpbmVkIHx8IChrZXkgaW4gT2JqZWN0KG9iamVjdCkpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICAgICAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0aGUgZnVuY3Rpb24gbWV0YWRhdGEgb2YgYHNvdXJjZWAgaW50byBgZGF0YWAuXG4gICAgICpcbiAgICAgKiBNZXJnaW5nIG1ldGFkYXRhIHJlZHVjZXMgdGhlIG51bWJlciBvZiB3cmFwcGVycyB1c2VkIHRvIGludm9rZSBhIGZ1bmN0aW9uLlxuICAgICAqIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBtZXRob2RzIGxpa2UgYF8uYmluZGAsIGBfLmN1cnJ5YCwgYW5kIGBfLnBhcnRpYWxgXG4gICAgICogbWF5IGJlIGFwcGxpZWQgcmVnYXJkbGVzcyBvZiBleGVjdXRpb24gb3JkZXIuIE1ldGhvZHMgbGlrZSBgXy5hcnlgIGFuZFxuICAgICAqIGBfLnJlYXJnYCBtb2RpZnkgZnVuY3Rpb24gYXJndW1lbnRzLCBtYWtpbmcgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlXG4gICAgICogZXhlY3V0ZWQgaW1wb3J0YW50LCBwcmV2ZW50aW5nIHRoZSBtZXJnaW5nIG9mIG1ldGFkYXRhLiBIb3dldmVyLCB3ZSBtYWtlXG4gICAgICogYW4gZXhjZXB0aW9uIGZvciBhIHNhZmUgY29tYmluZWQgY2FzZSB3aGVyZSBjdXJyaWVkIGZ1bmN0aW9ucyBoYXZlIGBfLmFyeWBcbiAgICAgKiBhbmQgb3IgYF8ucmVhcmdgIGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGRhdGEgVGhlIGRlc3RpbmF0aW9uIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgc291cmNlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgZGF0YWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVyZ2VEYXRhKGRhdGEsIHNvdXJjZSkge1xuICAgICAgdmFyIGJpdG1hc2sgPSBkYXRhWzFdLFxuICAgICAgICAgIHNyY0JpdG1hc2sgPSBzb3VyY2VbMV0sXG4gICAgICAgICAgbmV3Qml0bWFzayA9IGJpdG1hc2sgfCBzcmNCaXRtYXNrLFxuICAgICAgICAgIGlzQ29tbW9uID0gbmV3Qml0bWFzayA8IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRyB8IFdSQVBfQVJZX0ZMQUcpO1xuXG4gICAgICB2YXIgaXNDb21ibyA9XG4gICAgICAgICgoc3JjQml0bWFzayA9PSBXUkFQX0FSWV9GTEFHKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKSB8fFxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9SRUFSR19GTEFHKSAmJiAoZGF0YVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9SRUFSR19GTEFHKSkgJiYgKHNvdXJjZVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKTtcblxuICAgICAgLy8gRXhpdCBlYXJseSBpZiBtZXRhZGF0YSBjYW4ndCBiZSBtZXJnZWQuXG4gICAgICBpZiAoIShpc0NvbW1vbiB8fCBpc0NvbWJvKSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYHRoaXNBcmdgIGlmIGF2YWlsYWJsZS5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgZGF0YVsyXSA9IHNvdXJjZVsyXTtcbiAgICAgICAgLy8gU2V0IHdoZW4gY3VycnlpbmcgYSBib3VuZCBmdW5jdGlvbi5cbiAgICAgICAgbmV3Qml0bWFzayB8PSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcgPyAwIDogV1JBUF9DVVJSWV9CT1VORF9GTEFHO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIGFyZ3VtZW50cy5cbiAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVszXTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbHMgPSBkYXRhWzNdO1xuICAgICAgICBkYXRhWzNdID0gcGFydGlhbHMgPyBjb21wb3NlQXJncyhwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs0XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs0XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVszXSwgUExBQ0VIT0xERVIpIDogc291cmNlWzRdO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIHJpZ2h0IGFyZ3VtZW50cy5cbiAgICAgIHZhbHVlID0gc291cmNlWzVdO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHBhcnRpYWxzID0gZGF0YVs1XTtcbiAgICAgICAgZGF0YVs1XSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3NSaWdodChwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs2XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs2XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVs1XSwgUExBQ0VIT0xERVIpIDogc291cmNlWzZdO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJnUG9zYCBpZiBhdmFpbGFibGUuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs3XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBkYXRhWzddID0gdmFsdWU7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcnlgIGlmIGl0J3Mgc21hbGxlci5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9BUllfRkxBRykge1xuICAgICAgICBkYXRhWzhdID0gZGF0YVs4XSA9PSBudWxsID8gc291cmNlWzhdIDogbmF0aXZlTWluKGRhdGFbOF0sIHNvdXJjZVs4XSk7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcml0eWAgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICAgIGlmIChkYXRhWzldID09IG51bGwpIHtcbiAgICAgICAgZGF0YVs5XSA9IHNvdXJjZVs5XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGZ1bmNgIGFuZCBtZXJnZSBiaXRtYXNrcy5cbiAgICAgIGRhdGFbMF0gPSBzb3VyY2VbMF07XG4gICAgICBkYXRhWzFdID0gbmV3Qml0bWFzaztcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gICAgICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgICAgIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IHZhbHVlIG9mLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwYXJlbnQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyZW50KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoIDwgMiA/IG9iamVjdCA6IGJhc2VHZXQob2JqZWN0LCBiYXNlU2xpY2UocGF0aCwgMCwgLTEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW9yZGVyIGBhcnJheWAgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgaW5kZXhlcyB3aGVyZSB0aGUgZWxlbWVudCBhdFxuICAgICAqIHRoZSBmaXJzdCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgZmlyc3QgZWxlbWVudCwgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgc2Vjb25kIGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBzZWNvbmQgZWxlbWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcmVvcmRlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbmRleGVzIFRoZSBhcnJhbmdlZCBhcnJheSBpbmRleGVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlb3JkZXIoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGluZGV4ZXMubGVuZ3RoLCBhcnJMZW5ndGgpLFxuICAgICAgICAgIG9sZEFycmF5ID0gY29weUFycmF5KGFycmF5KTtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTtcbiAgICAgICAgYXJyYXlbbGVuZ3RoXSA9IGlzSW5kZXgoaW5kZXgsIGFyckxlbmd0aCkgPyBvbGRBcnJheVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAsIHVubGVzcyBga2V5YCBpcyBcIl9fcHJvdG9fX1wiIG9yIFwiY29uc3RydWN0b3JcIi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gICAgICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIHRoaXMgZnVuY3Rpb24gYmVjb21lcyBob3QsIGkuZS4gaXMgaW52b2tlZCBhIGxvdCBpbiBhIHNob3J0XG4gICAgICogcGVyaW9kIG9mIHRpbWUsIGl0IHdpbGwgdHJpcCBpdHMgYnJlYWtlciBhbmQgdHJhbnNpdGlvbiB0byBhbiBpZGVudGl0eVxuICAgICAqIGZ1bmN0aW9uIHRvIGF2b2lkIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXVzZXMgaW4gVjguIFNlZVxuICAgICAqIFtWOCBpc3N1ZSAyMDcwXShodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMDcwKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0RGF0YSA9IHNob3J0T3V0KGJhc2VTZXREYXRhKTtcblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BzZXRUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vc2V0VGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIHZhciBzZXRUaW1lb3V0ID0gY3R4U2V0VGltZW91dCB8fCBmdW5jdGlvbihmdW5jLCB3YWl0KSB7XG4gICAgICByZXR1cm4gcm9vdC5zZXRUaW1lb3V0KGZ1bmMsIHdhaXQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgd3JhcHBlcmAgdG8gbWltaWMgdGhlIHNvdXJjZSBvZiBgcmVmZXJlbmNlYFxuICAgICAqIHdpdGggd3JhcHBlciBkZXRhaWxzIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBzb3VyY2UgYm9keS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gd3JhcHBlciBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGB3cmFwcGVyYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXcmFwVG9TdHJpbmcod3JhcHBlciwgcmVmZXJlbmNlLCBiaXRtYXNrKSB7XG4gICAgICB2YXIgc291cmNlID0gKHJlZmVyZW5jZSArICcnKTtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyh3cmFwcGVyLCBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsIHVwZGF0ZVdyYXBEZXRhaWxzKGdldFdyYXBEZXRhaWxzKHNvdXJjZSksIGJpdG1hc2spKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gICAgICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gICAgICogbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICAgICAgdmFyIGNvdW50ID0gMCxcbiAgICAgICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICAgICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgICAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIHdoaWNoIG11dGF0ZXMgYW5kIHNldHMgdGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPWFycmF5Lmxlbmd0aF0gVGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlU2VsZihhcnJheSwgc2l6ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHNpemUgPSBzaXplID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBzaXplO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBzaXplKSB7XG4gICAgICAgIHZhciByYW5kID0gYmFzZVJhbmRvbShpbmRleCwgbGFzdEluZGV4KSxcbiAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbcmFuZF07XG5cbiAgICAgICAgYXJyYXlbcmFuZF0gPSBhcnJheVtpbmRleF07XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgYXJyYXkubGVuZ3RoID0gc2l6ZTtcbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKi9cbiAgICB2YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDYgLyogLiAqLykge1xuICAgICAgICByZXN1bHQucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgICAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICAgICAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB3cmFwcGVyIGBkZXRhaWxzYCBiYXNlZCBvbiBgYml0bWFza2AgZmxhZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRldGFpbHNgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdyYXBEZXRhaWxzKGRldGFpbHMsIGJpdG1hc2spIHtcbiAgICAgIGFycmF5RWFjaCh3cmFwRmxhZ3MsIGZ1bmN0aW9uKHBhaXIpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gJ18uJyArIHBhaXJbMF07XG4gICAgICAgIGlmICgoYml0bWFzayAmIHBhaXJbMV0pICYmICFhcnJheUluY2x1ZGVzKGRldGFpbHMsIHZhbHVlKSkge1xuICAgICAgICAgIGRldGFpbHMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRldGFpbHMuc29ydCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgd3JhcHBlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB3cmFwcGVyIFRoZSB3cmFwcGVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB3cmFwcGVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDbG9uZSh3cmFwcGVyKSB7XG4gICAgICBpZiAod3JhcHBlciBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHJldHVybiB3cmFwcGVyLmNsb25lKCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlci5fX3dyYXBwZWRfXywgd3JhcHBlci5fX2NoYWluX18pO1xuICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHdyYXBwZXIuX19hY3Rpb25zX18pO1xuICAgICAgcmVzdWx0Ll9faW5kZXhfXyAgPSB3cmFwcGVyLl9faW5kZXhfXztcbiAgICAgIHJlc3VsdC5fX3ZhbHVlc19fID0gd3JhcHBlci5fX3ZhbHVlc19fO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gZ3JvdXBzIHRoZSBsZW5ndGggb2YgYHNpemVgLlxuICAgICAqIElmIGBhcnJheWAgY2FuJ3QgYmUgc3BsaXQgZXZlbmx5LCB0aGUgZmluYWwgY2h1bmsgd2lsbCBiZSB0aGUgcmVtYWluaW5nXG4gICAgICogZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NpemU9MV0gVGhlIGxlbmd0aCBvZiBlYWNoIGNodW5rXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjaHVua3MuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDIpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYiddLCBbJ2MnLCAnZCddXVxuICAgICAqXG4gICAgICogXy5jaHVuayhbJ2EnLCAnYicsICdjJywgJ2QnXSwgMyk7XG4gICAgICogLy8gPT4gW1snYScsICdiJywgJ2MnXSwgWydkJ11dXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2h1bmsoYXJyYXksIHNpemUsIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoYXJyYXksIHNpemUsIGd1YXJkKSA6IHNpemUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgc2l6ZSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplID0gbmF0aXZlTWF4KHRvSW50ZWdlcihzaXplKSwgMCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShuYXRpdmVDZWlsKGxlbmd0aCAvIHNpemUpKTtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGJhc2VTbGljZShhcnJheSwgaW5kZXgsIChpbmRleCArPSBzaXplKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCBhbGwgZmFsc2V5IHZhbHVlcyByZW1vdmVkLiBUaGUgdmFsdWVzIGBmYWxzZWAsIGBudWxsYCxcbiAgICAgKiBgMGAsIGBcIlwiYCwgYHVuZGVmaW5lZGAsIGFuZCBgTmFOYCBhcmUgZmFsc2V5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvbXBhY3QoWzAsIDEsIGZhbHNlLCAyLCAnJywgM10pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IGNvbmNhdGVuYXRpbmcgYGFycmF5YCB3aXRoIGFueSBhZGRpdGlvbmFsIGFycmF5c1xuICAgICAqIGFuZC9vciB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29uY2F0ZW5hdGUuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGNvbmNhdGVuYXRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzFdO1xuICAgICAqIHZhciBvdGhlciA9IF8uY29uY2F0KGFycmF5LCAyLCBbM10sIFtbNF1dKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgWzRdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmNhdCgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGFyZ3MgPSBBcnJheShsZW5ndGggLSAxKSxcbiAgICAgICAgICBhcnJheSA9IGFyZ3VtZW50c1swXSxcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcblxuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgYXJnc1tpbmRleCAtIDFdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVB1c2goaXNBcnJheShhcnJheSkgPyBjb3B5QXJyYXkoYXJyYXkpIDogW2FycmF5XSwgYmFzZUZsYXR0ZW4oYXJncywgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgYGFycmF5YCB2YWx1ZXMgbm90IGluY2x1ZGVkIGluIHRoZSBvdGhlciBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8ud2l0aG91dCwgXy54b3JcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRpZmZlcmVuY2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxCeWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgW3sgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KHZhbHVlcyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgb3JkZXIgYW5kXG4gICAgICogcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbFdpdGhgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlV2l0aChvYmplY3RzLCBbeyAneCc6IDEsICd5JzogMiB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGNvbXBhcmF0b3IpKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3AoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgZW5kLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICogRWxlbWVudHMgYXJlIGRyb3BwZWQgdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxscyBlbGVtZW50cyBvZiBgYXJyYXlgIHdpdGggYHZhbHVlYCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3RcbiAgICAgKiBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5maWxsKGFycmF5LCAnYScpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYScsICdhJ11cbiAgICAgKlxuICAgICAqIF8uZmlsbChBcnJheSgzKSwgMik7XG4gICAgICogLy8gPT4gWzIsIDIsIDJdXG4gICAgICpcbiAgICAgKiBfLmZpbGwoWzQsIDYsIDgsIDEwXSwgJyonLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbNCwgJyonLCAnKicsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgJiYgdHlwZW9mIHN0YXJ0ICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAgICAgKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgeyAndXNlcic6ICdmcmVkJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEluZGV4YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzXG4gICAgICogb2YgYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdwZWJibGVzJzsgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICAgIGlmIChmcm9tSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmRleCA9IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgICBpbmRleCA9IGZyb21JbmRleCA8IDBcbiAgICAgICAgICA/IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMClcbiAgICAgICAgICA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWN1cnNpdmVseSBmbGF0dGVucyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZWVwKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlZXAoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgSU5GSU5JVFkpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbiBgYXJyYXlgIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCBbMiwgWzMsIFs0XV0sIDVdXTtcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlcHRoKGFycmF5LCAxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuRGVwdGgoYXJyYXksIGRlcHRoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLnRvUGFpcnNgOyB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIG9iamVjdCBjb21wb3NlZFxuICAgICAqIGZyb20ga2V5LXZhbHVlIGBwYWlyc2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYWlycyBUaGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZnJvbVBhaXJzKFtbJ2EnLCAxXSwgWydiJywgMl1dKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmcm9tUGFpcnMocGFpcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGFpciA9IHBhaXJzW2luZGV4XTtcbiAgICAgICAgcmVzdWx0W3BhaXJbMF1dID0gcGFpclsxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIGZpcnN0XG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaGVhZChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uaGVhZChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGVhZChhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYXJyYXlbMF0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYHZhbHVlYCBpcyBmb3VuZCBpbiBgYXJyYXlgXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXMgdGhlXG4gICAgICogb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbmRleE9mKFsxLCAyLCAxLCAyXSwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gU2VhcmNoIGZyb20gdGhlIGBmcm9tSW5kZXhgLlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIGJ1dCB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluaXRpYWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0aWFsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAwLCAtMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYWxsIGdpdmVuIGFycmF5c1xuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzJdXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjFdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGlmIChpdGVyYXRlZSA9PT0gbGFzdChtYXBwZWQpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlc1xuICAgICAqIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyksXG4gICAgICAgICAgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcblxuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhbGwgZWxlbWVudHMgaW4gYGFycmF5YCBpbnRvIGEgc3RyaW5nIHNlcGFyYXRlZCBieSBgc2VwYXJhdG9yYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScsJ10gVGhlIGVsZW1lbnQgc2VwYXJhdG9yLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGpvaW5lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uam9pbihbJ2EnLCAnYicsICdjJ10sICd+Jyk7XG4gICAgICogLy8gPT4gJ2F+Yn5jJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGpvaW4oYXJyYXksIHNlcGFyYXRvcikge1xuICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgPyAnJyA6IG5hdGl2ZUpvaW4uY2FsbChhcnJheSwgc2VwYXJhdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGFycmF5YCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWFycmF5Lmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmxhc3RJbmRleE9mKFsxLCAyLCAxLCAyXSwgMiwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBsZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApIDogbmF0aXZlTWluKGluZGV4LCBsZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgPyBzdHJpY3RMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KVxuICAgICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGVsZW1lbnQgYXQgaW5kZXggYG5gIG9mIGBhcnJheWAuIElmIGBuYCBpcyBuZWdhdGl2ZSwgdGhlIG50aFxuICAgICAqIGVsZW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gJ2InXG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgLTIpO1xuICAgICAqIC8vID0+ICdjJztcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGgoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VOdGgoYXJyYXksIHRvSW50ZWdlcihuKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZ2l2ZW4gdmFsdWVzIGZyb20gYGFycmF5YCB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy53aXRob3V0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucmVtb3ZlYFxuICAgICAqIHRvIHJlbW92ZSBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHByZWRpY2F0ZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsKGFycmF5LCAnYScsICdjJyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbCA9IGJhc2VSZXN0KHB1bGxBbGwpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsKGFycmF5LCBbJ2EnLCAnYyddKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydiJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGwoYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcylcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxBbGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VCeWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAzIH0sIHsgJ3gnOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsQnkoYXJyYXksIFt7ICd4JzogMSB9LCB7ICd4JzogMyB9XSwgJ3gnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbEJ5KGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlV2l0aGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMywgJ3knOiA0IH0sIHsgJ3gnOiA1LCAneSc6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGxXaXRoKGFycmF5LCBbeyAneCc6IDMsICd5JzogNCB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDUsICd5JzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxXaXRoKGFycmF5LCB2YWx1ZXMsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGVsZW1lbnRzIGZyb20gYGFycmF5YCBjb3JyZXNwb25kaW5nIHRvIGBpbmRleGVzYCBhbmQgcmV0dXJucyBhblxuICAgICAqIGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmF0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0gey4uLihudW1iZXJ8bnVtYmVyW10pfSBbaW5kZXhlc10gVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqIHZhciBwdWxsZWQgPSBfLnB1bGxBdChhcnJheSwgWzEsIDNdKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYyddXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhwdWxsZWQpO1xuICAgICAqIC8vID0+IFsnYicsICdkJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbEF0ID0gZmxhdFJlc3QoZnVuY3Rpb24oYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBiYXNlQXQoYXJyYXksIGluZGV4ZXMpO1xuXG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBhcnJheU1hcChpbmRleGVzLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gaXNJbmRleChpbmRleCwgbGVuZ3RoKSA/ICtpbmRleCA6IGluZGV4O1xuICAgICAgfSkuc29ydChjb21wYXJlQXNjZW5kaW5nKSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIGBhcnJheWAgdGhhdCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3JcbiAgICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgcmVtb3ZlZCBlbGVtZW50cy4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZmlsdGVyYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucHVsbGBcbiAgICAgKiB0byBwdWxsIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNF07XG4gICAgICogdmFyIGV2ZW5zID0gXy5yZW1vdmUoYXJyYXksIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZXZlbnMpO1xuICAgICAqIC8vID0+IFsyLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbW92ZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmRleGVzID0gW10sXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICAgIGluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlcyBgYXJyYXlgIHNvIHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgYmVjb21lcyB0aGUgbGFzdCwgdGhlIHNlY29uZFxuICAgICAqIGVsZW1lbnQgYmVjb21lcyB0aGUgc2Vjb25kIHRvIGxhc3QsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAgYW5kIGlzIGJhc2VkIG9uXG4gICAgICogW2BBcnJheSNyZXZlcnNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvcmV2ZXJzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfLnJldmVyc2UoYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJldmVyc2UoYXJyYXkpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gYXJyYXkgOiBuYXRpdmVSZXZlcnNlLmNhbGwoYXJyYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGZyb20gYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW5zdGVhZCBvZlxuICAgICAqIFtgQXJyYXkjc2xpY2VgXShodHRwczovL21kbi5pby9BcnJheS9zbGljZSkgdG8gZW5zdXJlIGRlbnNlIGFycmF5cyBhcmVcbiAgICAgKiByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoZW5kICYmIHR5cGVvZiBlbmQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoYXJyYXksIHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlcyBhIGJpbmFyeSBzZWFyY2ggdG8gZGV0ZXJtaW5lIHRoZSBsb3dlc3QgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4KFszMCwgNTBdLCA0MCk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgKiBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiA0IH0sIHsgJ3gnOiA1IH1dO1xuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCkge1xuICAgICAgICB2YXIgaW5kZXggPSBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRJbmRleGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaGlnaGVzdFxuICAgICAqIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0b1xuICAgICAqIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXgoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkTGFzdEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgZnVuY3Rpb24obykgeyByZXR1cm4gby54OyB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5sYXN0SW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgcGVyZm9ybXMgYSBiaW5hcnlcbiAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgdHJ1ZSkgLSAxO1xuICAgICAgICBpZiAoZXEoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0J3MgZGVzaWduZWQgYW5kIG9wdGltaXplZFxuICAgICAqIGZvciBzb3J0ZWQgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcShbMSwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5KVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcUJ5YCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcUJ5KFsxLjEsIDEuMiwgMi4zLCAyLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4xLCAyLjNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkVW5pcUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFpbChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhaWwoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlU2xpY2UoYXJyYXksIDEsIGxlbmd0aCkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHQoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgbiA9IGxlbmd0aCAtIG47XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBuIDwgMCA/IDAgOiBuLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLiBFbGVtZW50cyBhcmVcbiAgICAgKiB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgZmFsc2UsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuIEVsZW1lbnRzXG4gICAgICogYXJlIHRha2VuIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMsIGluIG9yZGVyLCBmcm9tIGFsbCBnaXZlbiBhcnJheXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb24oWzJdLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciB1bmlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbSB0aGUgZmlyc3RcbiAgICAgKiBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb25CeShbMi4xXSwgWzEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbkJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFJlc3VsdCB2YWx1ZXMgYXJlIGNob3NlbiBmcm9tXG4gICAgICogdGhlIGZpcnN0IGFycmF5IGluIHdoaWNoIHRoZSB2YWx1ZSBvY2N1cnMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHVuaW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiBhbiBhcnJheSwgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucywgaW4gd2hpY2ggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIGVsZW1lbnRcbiAgICAgKiBpcyBrZXB0LiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyXG4gICAgICogaW4gdGhlIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcShbMiwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5KSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieSB3aGljaFxuICAgICAqIHVuaXF1ZW5lc3MgaXMgY29tcHV0ZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlXG4gICAgICogb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcUJ5KFsyLjEsIDEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlxQnkoW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICAgICAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LlRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaXFXaXRoKG9iamVjdHMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFXaXRoKGFycmF5LCBjb21wYXJhdG9yKSB7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIGdyb3VwZWRcbiAgICAgKiBlbGVtZW50cyBhbmQgY3JlYXRlcyBhbiBhcnJheSByZWdyb3VwaW5nIHRoZSBlbGVtZW50cyB0byB0aGVpciBwcmUtemlwXG4gICAgICogY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKlxuICAgICAqIF8udW56aXAoemlwcGVkKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuemlwKGFycmF5KSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSAwO1xuICAgICAgYXJyYXkgPSBhcnJheUZpbHRlcihhcnJheSwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGdyb3VwKSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChncm91cC5sZW5ndGgsIGxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJhc2VUaW1lcyhsZW5ndGgsIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcChhcnJheSwgYmFzZVByb3BlcnR5KGluZGV4KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyByZWdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgcmVncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZWdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB6aXBwZWQgPSBfLnppcChbMSwgMl0sIFsxMCwgMjBdLCBbMTAwLCAyMDBdKTtcbiAgICAgKiAvLyA9PiBbWzEsIDEwLCAxMDBdLCBbMiwgMjAsIDIwMF1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwV2l0aCh6aXBwZWQsIF8uYWRkKTtcbiAgICAgKiAvLyA9PiBbMywgMzAsIDMwMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcFdpdGgoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB1bnppcChhcnJheSk7XG4gICAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5TWFwKHJlc3VsdCwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB1bmRlZmluZWQsIGdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgZXhjbHVkaW5nIGFsbCBnaXZlbiB2YWx1ZXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud2l0aG91dChbMiwgMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqL1xuICAgIHZhciB3aXRob3V0ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBpcyB0aGVcbiAgICAgKiBbc3ltbWV0cmljIGRpZmZlcmVuY2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bW1ldHJpY19kaWZmZXJlbmNlKVxuICAgICAqIG9mIHRoZSBnaXZlbiBhcnJheXMuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyXG4gICAgICogdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy53aXRob3V0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKi9cbiAgICB2YXIgeG9yID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAqIHdoaWNoIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWRcbiAgICAgKiBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZVxuICAgICAqIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMiwgMy40XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy54b3JCeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ueG9yYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnhvcldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cywgdGhlIGZpcnN0IG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIGZpcnN0IGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIHRoZSBzZWNvbmQgb2Ygd2hpY2ggY29udGFpbnMgdGhlXG4gICAgICogc2Vjb25kIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcChbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxLCB0cnVlXSwgWydiJywgMiwgZmFsc2VdXVxuICAgICAqL1xuICAgIHZhciB6aXAgPSBiYXNlUmVzdCh1bnppcCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICAgICAqIG9uZSBvZiBwcm9wZXJ0eSBpZGVudGlmaWVycyBhbmQgb25lIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gYmFzZVppcE9iamVjdChwcm9wcyB8fCBbXSwgdmFsdWVzIHx8IFtdLCBhc3NpZ25WYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBPYmplY3RgIGV4Y2VwdCB0aGF0IGl0IHN1cHBvcnRzIHByb3BlcnR5IHBhdGhzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdERlZXAoWydhLmJbMF0uYycsICdhLmJbMV0uZCddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdiJzogW3sgJ2MnOiAxIH0sIHsgJ2QnOiAyIH1dIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdERlZXAocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYmFzZVNldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICogaG93IGdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAqICBncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcFdpdGgoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSwgZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIGEgKyBiICsgYztcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBbMTExLCAyMjJdXG4gICAgICovXG4gICAgdmFyIHppcFdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIGl0ZXJhdGVlID0gbGVuZ3RoID4gMSA/IGFycmF5c1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaXRlcmF0ZWUgPSB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyA/IChhcnJheXMucG9wKCksIGl0ZXJhdGVlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB1bnppcFdpdGgoYXJyYXlzLCBpdGVyYXRlZSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB0aGF0IHdyYXBzIGB2YWx1ZWAgd2l0aCBleHBsaWNpdCBtZXRob2RcbiAgICAgKiBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC4gVGhlIHJlc3VsdCBvZiBzdWNoIHNlcXVlbmNlcyBtdXN0IGJlIHVud3JhcHBlZFxuICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIHZhciB5b3VuZ2VzdCA9IF9cbiAgICAgKiAgIC5jaGFpbih1c2VycylcbiAgICAgKiAgIC5zb3J0QnkoJ2FnZScpXG4gICAgICogICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgICAgcmV0dXJuIG8udXNlciArICcgaXMgJyArIG8uYWdlO1xuICAgICAqICAgfSlcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+ICdwZWJibGVzIGlzIDEnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2hhaW4odmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2godmFsdWUpO1xuICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IHRydWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgYGludGVyY2VwdG9yYCBhbmQgcmV0dXJucyBgdmFsdWVgLiBUaGUgaW50ZXJjZXB0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0b1xuICAgICAqIFwidGFwIGludG9cIiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZSBpbiBvcmRlciB0byBtb2RpZnkgaW50ZXJtZWRpYXRlIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pXG4gICAgICogIC50YXAoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgKiAgICAvLyBNdXRhdGUgaW5wdXQgYXJyYXkuXG4gICAgICogICAgYXJyYXkucG9wKCk7XG4gICAgICogIH0pXG4gICAgICogIC5yZXZlcnNlKClcbiAgICAgKiAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFwKHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgaW50ZXJjZXB0b3IodmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udGFwYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSByZXN1bHQgb2YgYGludGVyY2VwdG9yYC5cbiAgICAgKiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInBhc3MgdGhydVwiIHZhbHVlcyByZXBsYWNpbmcgaW50ZXJtZWRpYXRlXG4gICAgICogcmVzdWx0cyBpbiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm92aWRlIHRvIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaW50ZXJjZXB0b3IgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oJyAgYWJjICAnKVxuICAgICAqICAuY2hhaW4oKVxuICAgICAqICAudHJpbSgpXG4gICAgICogIC50aHJ1KGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICAgcmV0dXJuIFt2YWx1ZV07XG4gICAgICogIH0pXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0aHJ1KHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgcmV0dXJuIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLmF0YC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGF0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8ob2JqZWN0KS5hdChbJ2FbMF0uYi5jJywgJ2FbMV0nXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgd3JhcHBlckF0ID0gZmxhdFJlc3QoZnVuY3Rpb24ocGF0aHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgc3RhcnQgPSBsZW5ndGggPyBwYXRoc1swXSA6IDAsXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgIGludGVyY2VwdG9yID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBiYXNlQXQob2JqZWN0LCBwYXRocyk7IH07XG5cbiAgICAgIGlmIChsZW5ndGggPiAxIHx8IHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoIHx8XG4gICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB8fCAhaXNJbmRleChzdGFydCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKHN0YXJ0LCArc3RhcnQgKyAobGVuZ3RoID8gMSA6IDApKTtcbiAgICAgIHZhbHVlLl9fYWN0aW9uc19fLnB1c2goe1xuICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICdhcmdzJzogW2ludGVyY2VwdG9yXSxcbiAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlLCB0aGlzLl9fY2hhaW5fXykudGhydShmdW5jdGlvbihhcnJheSkge1xuICAgICAgICBpZiAobGVuZ3RoICYmICFhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICBhcnJheS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB3aXRoIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNoYWluXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aG91dCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKS5oZWFkKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfVxuICAgICAqXG4gICAgICogLy8gQSBzZXF1ZW5jZSB3aXRoIGV4cGxpY2l0IGNoYWluaW5nLlxuICAgICAqIF8odXNlcnMpXG4gICAgICogICAuY2hhaW4oKVxuICAgICAqICAgLmhlYWQoKVxuICAgICAqICAgLnBpY2soJ3VzZXInKVxuICAgICAqICAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2hhaW4oKSB7XG4gICAgICByZXR1cm4gY2hhaW4odGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgdGhlIGNoYWluIHNlcXVlbmNlIGFuZCByZXR1cm5zIHRoZSB3cmFwcGVkIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNvbW1pdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMl07XG4gICAgICogdmFyIHdyYXBwZWQgPSBfKGFycmF5KS5wdXNoKDMpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogd3JhcHBlZCA9IHdyYXBwZWQuY29tbWl0KCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogd3JhcHBlZC5sYXN0KCk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDb21taXQoKSB7XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodGhpcy52YWx1ZSgpLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmV4dCB2YWx1ZSBvbiBhIHdyYXBwZWQgb2JqZWN0IGZvbGxvd2luZyB0aGVcbiAgICAgKiBbaXRlcmF0b3IgcHJvdG9jb2xdKGh0dHBzOi8vbWRuLmlvL2l0ZXJhdGlvbl9wcm90b2NvbHMjaXRlcmF0b3IpLlxuICAgICAqXG4gICAgICogQG5hbWUgbmV4dFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5leHQgaXRlcmF0b3IgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pO1xuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IGZhbHNlLCAndmFsdWUnOiAxIH1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMiB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogdHJ1ZSwgJ3ZhbHVlJzogdW5kZWZpbmVkIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyTmV4dCgpIHtcbiAgICAgIGlmICh0aGlzLl9fdmFsdWVzX18gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9fdmFsdWVzX18gPSB0b0FycmF5KHRoaXMudmFsdWUoKSk7XG4gICAgICB9XG4gICAgICB2YXIgZG9uZSA9IHRoaXMuX19pbmRleF9fID49IHRoaXMuX192YWx1ZXNfXy5sZW5ndGgsXG4gICAgICAgICAgdmFsdWUgPSBkb25lID8gdW5kZWZpbmVkIDogdGhpcy5fX3ZhbHVlc19fW3RoaXMuX19pbmRleF9fKytdO1xuXG4gICAgICByZXR1cm4geyAnZG9uZSc6IGRvbmUsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyB0aGUgd3JhcHBlciB0byBiZSBpdGVyYWJsZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIFN5bWJvbC5pdGVyYXRvclxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHdyYXBwZXIgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWRbU3ltYm9sLml0ZXJhdG9yXSgpID09PSB3cmFwcGVkO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIEFycmF5LmZyb20od3JhcHBlZCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclRvSXRlcmF0b3IoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGNoYWluIHNlcXVlbmNlIHBsYW50aW5nIGB2YWx1ZWAgYXMgdGhlIHdyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBwbGFudFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHBsYW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pLm1hcChzcXVhcmUpO1xuICAgICAqIHZhciBvdGhlciA9IHdyYXBwZWQucGxhbnQoWzMsIDRdKTtcbiAgICAgKlxuICAgICAqIG90aGVyLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzksIDE2XVxuICAgICAqXG4gICAgICogd3JhcHBlZC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsxLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJQbGFudCh2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzO1xuXG4gICAgICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgYmFzZUxvZGFzaCkge1xuICAgICAgICB2YXIgY2xvbmUgPSB3cmFwcGVyQ2xvbmUocGFyZW50KTtcbiAgICAgICAgY2xvbmUuX19pbmRleF9fID0gMDtcbiAgICAgICAgY2xvbmUuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gY2xvbmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2xvbmU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZpb3VzID0gY2xvbmU7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5fX3dyYXBwZWRfXztcbiAgICAgIH1cbiAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRoZSB3cmFwcGVyIHZlcnNpb24gb2YgYF8ucmV2ZXJzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgd3JhcHBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXyhhcnJheSkucmV2ZXJzZSgpLnZhbHVlKClcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUmV2ZXJzZSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX187XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICB2YXIgd3JhcHBlZCA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpIHtcbiAgICAgICAgICB3cmFwcGVkID0gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHdyYXBwZWQgPSB3cmFwcGVkLnJldmVyc2UoKTtcbiAgICAgICAgd3JhcHBlZC5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICAgJ2FyZ3MnOiBbcmV2ZXJzZV0sXG4gICAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVkLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50aHJ1KHJldmVyc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIHRvSlNPTiwgdmFsdWVPZlxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKFsxLCAyLCAzXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyVmFsdWUoKSB7XG4gICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZSh0aGlzLl9fd3JhcHBlZF9fLCB0aGlzLl9fYWN0aW9uc19fKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgb2ZcbiAgICAgKiBlYWNoIGtleSBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgd2FzIHJldHVybmVkIGJ5IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY291bnRCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IHsgJzQnOiAxLCAnNic6IDIgfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5jb3VudEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IDIsICc1JzogMSB9XG4gICAgICovXG4gICAgdmFyIGNvdW50QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgICsrcmVzdWx0W2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciAqKmFsbCoqIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIFtlbXB0eSBjb2xsZWN0aW9uc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW1wdHlfc2V0KSBiZWNhdXNlXG4gICAgICogW2V2ZXJ5dGhpbmcgaXMgdHJ1ZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFjdW91c190cnV0aCkgb2ZcbiAgICAgKiBlbGVtZW50cyBvZiBlbXB0eSBjb2xsZWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXZlcnkoW3RydWUsIDEsIG51bGwsICd5ZXMnXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RXZlcnkgOiBiYXNlRXZlcnk7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyBhbiBhcnJheSBvZiBhbGwgZWxlbWVudHNcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnJlbW92ZWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLnJlamVjdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmQodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gICAgICovXG4gICAgdmFyIGZpbmQgPSBjcmVhdGVGaW5kKGZpbmRJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1jb2xsZWN0aW9uLmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5maW5kTGFzdChbMSwgMiwgMywgNF0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAxO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICB2YXIgZmluZExhc3QgPSBjcmVhdGVGaW5kKGZpbmRMYXN0SW5kZXgpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZsYXR0ZW5lZCBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gXG4gICAgICogdGhydSBgaXRlcmF0ZWVgIGFuZCBmbGF0dGVuaW5nIHRoZSBtYXBwZWQgcmVzdWx0cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtuLCBuXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXAoWzEsIDJdLCBkdXBsaWNhdGUpO1xuICAgICAqIC8vID0+IFsxLCAxLCAyLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtbW24sIG5dXV07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwRGVlcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcERlZXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCBJTkZJTklUWSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mbGF0TWFwYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBmbGF0dGVucyB0aGVcbiAgICAgKiBtYXBwZWQgcmVzdWx0cyB1cCB0byBgZGVwdGhgIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtbW24sIG5dXV07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwRGVwdGgoWzEsIDJdLCBkdXBsaWNhdGUsIDIpO1xuICAgICAqIC8vID0+IFtbMSwgMV0sIFsyLCAyXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVwdGgoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGRlcHRoKSB7XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCBkZXB0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEFzIHdpdGggb3RoZXIgXCJDb2xsZWN0aW9uc1wiIG1ldGhvZHMsIG9iamVjdHMgd2l0aCBhIFwibGVuZ3RoXCJcbiAgICAgKiBwcm9wZXJ0eSBhcmUgaXRlcmF0ZWQgbGlrZSBhcnJheXMuIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3IgdXNlIGBfLmZvckluYFxuICAgICAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAYWxpYXMgZWFjaFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqIEBzZWUgXy5mb3JFYWNoUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzIGAxYCB0aGVuIGAyYC5cbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yRWFjaGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAYWxpYXMgZWFjaFJpZ2h0XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mb3JFYWNoUmlnaHQoWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDJgIHRoZW4gYDFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckVhY2hSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoUmlnaHQgOiBiYXNlRWFjaFJpZ2h0O1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIG9yZGVyIG9mIGdyb3VwZWQgdmFsdWVzXG4gICAgICogaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiBgY29sbGVjdGlvbmAuIFRoZSBjb3JyZXNwb25kaW5nXG4gICAgICogdmFsdWUgb2YgZWFjaCBrZXkgaXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlXG4gICAgICoga2V5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ncm91cEJ5KFs2LjEsIDQuMiwgNi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4geyAnNCc6IFs0LjJdLCAnNic6IFs2LjEsIDYuM10gfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ncm91cEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IFsnb25lJywgJ3R3byddLCAnNSc6IFsndGhyZWUnXSB9XG4gICAgICovXG4gICAgdmFyIGdyb3VwQnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBbdmFsdWVdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIGBjb2xsZWN0aW9uYC4gSWYgYGNvbGxlY3Rpb25gIGlzIGEgc3RyaW5nLCBpdCdzXG4gICAgICogY2hlY2tlZCBmb3IgYSBzdWJzdHJpbmcgb2YgYHZhbHVlYCwgb3RoZXJ3aXNlXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBpcyB1c2VkIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhc1xuICAgICAqIHRoZSBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKHsgJ2EnOiAxLCAnYic6IDIgfSwgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcygnYWJjZCcsICdiYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4LCBndWFyZCkge1xuICAgICAgY29sbGVjdGlvbiA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gY29sbGVjdGlvbiA6IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIGZyb21JbmRleCA9IChmcm9tSW5kZXggJiYgIWd1YXJkKSA/IHRvSW50ZWdlcihmcm9tSW5kZXgpIDogMDtcblxuICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgICAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICAgICAgZnJvbUluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGZyb21JbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbilcbiAgICAgICAgPyAoZnJvbUluZGV4IDw9IGxlbmd0aCAmJiBjb2xsZWN0aW9uLmluZGV4T2YodmFsdWUsIGZyb21JbmRleCkgPiAtMSlcbiAgICAgICAgOiAoISFsZW5ndGggJiYgYmFzZUluZGV4T2YoY29sbGVjdGlvbiwgdmFsdWUsIGZyb21JbmRleCkgPiAtMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLCByZXR1cm5pbmdcbiAgICAgKiBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiBlYWNoIGludm9rZWQgbWV0aG9kLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICAgKiBhcmUgcHJvdmlkZWQgdG8gZWFjaCBpbnZva2VkIG1ldGhvZC4gSWYgYHBhdGhgIGlzIGEgZnVuY3Rpb24sIGl0J3MgaW52b2tlZFxuICAgICAqIGZvciwgYW5kIGB0aGlzYCBib3VuZCB0bywgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb258c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlIG9yXG4gICAgICogIHRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgZWFjaCBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW52b2tlTWFwKFtbNSwgMSwgN10sIFszLCAyLCAxXV0sICdzb3J0Jyk7XG4gICAgICogLy8gPT4gW1sxLCA1LCA3XSwgWzEsIDIsIDNdXVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoWzEyMywgNDU2XSwgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCwgJycpO1xuICAgICAqIC8vID0+IFtbJzEnLCAnMicsICczJ10sIFsnNCcsICc1JywgJzYnXV1cbiAgICAgKi9cbiAgICB2YXIgaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgcGF0aCwgYXJncykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaXNGdW5jID0gdHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXN1bHRbKytpbmRleF0gPSBpc0Z1bmMgPyBhcHBseShwYXRoLCB2YWx1ZSwgYXJncykgOiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgY29ycmVzcG9uZGluZyB2YWx1ZSBvZlxuICAgICAqIGVhY2gga2V5IGlzIHRoZSBsYXN0IGVsZW1lbnQgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGtleS4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1xuICAgICAqICAgeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sXG4gICAgICogICB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ua2V5QnkoYXJyYXksIGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG8uY29kZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAnZCc6IHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH0gfVxuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgJ2RpcicpO1xuICAgICAqIC8vID0+IHsgJ2xlZnQnOiB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSwgJ3JpZ2h0JzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICovXG4gICAgdmFyIGtleUJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgdmFsdWUpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnVcbiAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgKiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAgICAgKiBgXy5ldmVyeWAsIGBfLmZpbHRlcmAsIGBfLm1hcGAsIGBfLm1hcFZhbHVlc2AsIGBfLnJlamVjdGAsIGFuZCBgXy5zb21lYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhcnlgLCBgY2h1bmtgLCBgY3VycnlgLCBgY3VycnlSaWdodGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBldmVyeWAsXG4gICAgICogYGZpbGxgLCBgaW52ZXJ0YCwgYHBhcnNlSW50YCwgYHJhbmRvbWAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlcGVhdGAsXG4gICAgICogYHNhbXBsZVNpemVgLCBgc2xpY2VgLCBgc29tZWAsIGBzb3J0QnlgLCBgc3BsaXRgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICAgICAqIGB0ZW1wbGF0ZWAsIGB0cmltYCwgYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYW5kIGB3b3Jkc2BcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLm1hcChbNCwgOF0sIHNxdWFyZSk7XG4gICAgICogLy8gPT4gWzE2LCA2NF1cbiAgICAgKlxuICAgICAqIF8ubWFwKHsgJ2EnOiA0LCAnYic6IDggfSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tYXAodXNlcnMsICd1c2VyJyk7XG4gICAgICogLy8gPT4gWydiYXJuZXknLCAnZnJlZCddXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheU1hcCA6IGJhc2VNYXA7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydEJ5YCBleGNlcHQgdGhhdCBpdCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgc29ydFxuICAgICAqIG9yZGVycyBvZiB0aGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzXG4gICAgICogYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSwgc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3JcbiAgICAgKiBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheVtdfEZ1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gW29yZGVyc10gVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLnJlZHVjZWAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFNvcnQgYnkgYHVzZXJgIGluIGFzY2VuZGluZyBvcmRlciBhbmQgYnkgYGFnZWAgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICAgKiBfLm9yZGVyQnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSwgWydhc2MnLCAnZGVzYyddKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDQwXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzLCBndWFyZCkge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXJyYXkoaXRlcmF0ZWVzKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBpdGVyYXRlZXMgPT0gbnVsbCA/IFtdIDogW2l0ZXJhdGVlc107XG4gICAgICB9XG4gICAgICBvcmRlcnMgPSBndWFyZCA/IHVuZGVmaW5lZCA6IG9yZGVycztcbiAgICAgIGlmICghaXNBcnJheShvcmRlcnMpKSB7XG4gICAgICAgIG9yZGVycyA9IG9yZGVycyA9PSBudWxsID8gW10gOiBbb3JkZXJzXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIHR3byBncm91cHMsIHRoZSBmaXJzdCBvZiB3aGljaFxuICAgICAqIGNvbnRhaW5zIGVsZW1lbnRzIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciwgdGhlIHNlY29uZCBvZiB3aGljaFxuICAgICAqIGNvbnRhaW5zIGVsZW1lbnRzIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5IGZvci4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ3BlYmJsZXMnXSwgWydiYXJuZXknLCAnZnJlZCddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgJ3BlYmJsZXMnXSwgWydmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAqL1xuICAgIHZhciBwYXJ0aXRpb24gPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0W2tleSA/IDAgOiAxXS5wdXNoKHZhbHVlKTtcbiAgICB9LCBmdW5jdGlvbigpIHsgcmV0dXJuIFtbXSwgW11dOyB9KTtcblxuICAgIC8qKlxuICAgICAqIFJlZHVjZXMgYGNvbGxlY3Rpb25gIHRvIGEgdmFsdWUgd2hpY2ggaXMgdGhlIGFjY3VtdWxhdGVkIHJlc3VsdCBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAsIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAgICAgKiBpcyBub3QgZ2l2ZW4sIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsXG4gICAgICogdmFsdWUuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6XG4gICAgICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gICAgICpcbiAgICAgKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAgICAgKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAgICAgKiBhbmQgYHNvcnRCeWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLnJlZHVjZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKFsxLCAyXSwgZnVuY3Rpb24oc3VtLCBuKSB7XG4gICAgICogICByZXR1cm4gc3VtICsgbjtcbiAgICAgKiB9LCAwKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnJlZHVjZSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAqICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgKiB9LCB7fSk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlIDogYmFzZVJlZHVjZSxcbiAgICAgICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yZWR1Y2VgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFtbMCwgMV0sIFsyLCAzXSwgWzQsIDVdXTtcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlUmlnaHQoYXJyYXksIGZ1bmN0aW9uKGZsYXR0ZW5lZCwgb3RoZXIpIHtcbiAgICAgKiAgIHJldHVybiBmbGF0dGVuZWQuY29uY2F0KG90aGVyKTtcbiAgICAgKiB9LCBbXSk7XG4gICAgICogLy8gPT4gWzQsIDUsIDIsIDMsIDAsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlUmlnaHQoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZVJpZ2h0IDogYmFzZVJlZHVjZSxcbiAgICAgICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaFJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8uZmlsdGVyYDsgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gXG4gICAgICogdGhhdCBgcHJlZGljYXRlYCBkb2VzICoqbm90KiogcmV0dXJuIHRydXRoeSBmb3IuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLmZpbHRlclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnJlamVjdCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgeyAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWplY3QoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSByYW5kb20gZWxlbWVudCBmcm9tIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zYW1wbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2FtcGxlIDogYmFzZVNhbXBsZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYG5gIHJhbmRvbSBlbGVtZW50cyBhdCB1bmlxdWUga2V5cyBmcm9tIGBjb2xsZWN0aW9uYCB1cCB0byB0aGVcbiAgICAgKiBzaXplIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZVNpemUoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMywgMV1cbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDQpO1xuICAgICAqIC8vID0+IFsyLCAzLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNhbXBsZVNpemUoY29sbGVjdGlvbiwgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICgoZ3VhcmQgPyBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2FtcGxlU2l6ZSA6IGJhc2VTYW1wbGVTaXplO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzaHVmZmxlZCB2YWx1ZXMsIHVzaW5nIGEgdmVyc2lvbiBvZiB0aGVcbiAgICAgKiBbRmlzaGVyLVlhdGVzIHNodWZmbGVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zpc2hlci1ZYXRlc19zaHVmZmxlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zaHVmZmxlKFsxLCAyLCAzLCA0XSk7XG4gICAgICogLy8gPT4gWzQsIDEsIDMsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNodWZmbGUgOiBiYXNlU2h1ZmZsZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNpemUgb2YgYGNvbGxlY3Rpb25gIGJ5IHJldHVybmluZyBpdHMgbGVuZ3RoIGZvciBhcnJheS1saWtlXG4gICAgICogdmFsdWVzIG9yIHRoZSBudW1iZXIgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgZm9yIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbGxlY3Rpb24gc2l6ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zaXplKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5zaXplKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogXy5zaXplKCdwZWJibGVzJyk7XG4gICAgICogLy8gPT4gN1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNpemUoY29sbGVjdGlvbikge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbikgPyBzdHJpbmdTaXplKGNvbGxlY3Rpb24pIDogY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKGNvbGxlY3Rpb24pO1xuICAgICAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5zaXplO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VLZXlzKGNvbGxlY3Rpb24pLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yICoqYW55KiogZWxlbWVudCBvZiBgY29sbGVjdGlvbmAuXG4gICAgICogSXRlcmF0aW9uIGlzIHN0b3BwZWQgb25jZSBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvbWUoW251bGwsIDAsICd5ZXMnLCBmYWxzZV0sIEJvb2xlYW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTb21lIDogYmFzZVNvbWU7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cywgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgcmVzdWx0cyBvZlxuICAgICAqIHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiB0aHJ1IGVhY2ggaXRlcmF0ZWUuIFRoaXMgbWV0aG9kXG4gICAgICogcGVyZm9ybXMgYSBzdGFibGUgc29ydCwgdGhhdCBpcywgaXQgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBzb3J0IG9yZGVyIG9mXG4gICAgICogZXF1YWwgZWxlbWVudHMuIFRoZSBpdGVyYXRlZXMgYXJlIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFtmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXI7IH1dKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDQwXV1cbiAgICAgKlxuICAgICAqIF8uc29ydEJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM0XSwgWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDQwXSwgWydmcmVkJywgNDhdXVxuICAgICAqL1xuICAgIHZhciBzb3J0QnkgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZXMpIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoID4gMSAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSkpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gW107XG4gICAgICB9IGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0sIGl0ZXJhdGVlc1syXSkpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gW2l0ZXJhdGVlc1swXV07XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLCAxKSwgW10pO1xuICAgIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gICAgICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgRGF0ZVxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICAgICAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAgICAgKiB9LCBfLm5vdygpKTtcbiAgICAgKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICAgICAqL1xuICAgIHZhciBub3cgPSBjdHhOb3cgfHwgZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xuICAgIH07XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8uYmVmb3JlYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIGBmdW5jYCBvbmNlIGl0J3MgY2FsbGVkIGBuYCBvciBtb3JlIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBjYWxscyBiZWZvcmUgYGZ1bmNgIGlzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHNhdmVzID0gWydwcm9maWxlJywgJ3NldHRpbmdzJ107XG4gICAgICpcbiAgICAgKiB2YXIgZG9uZSA9IF8uYWZ0ZXIoc2F2ZXMubGVuZ3RoLCBmdW5jdGlvbigpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKCdkb25lIHNhdmluZyEnKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaChzYXZlcywgZnVuY3Rpb24odHlwZSkge1xuICAgICAqICAgYXN5bmNTYXZlKHsgJ3R5cGUnOiB0eXBlLCAnY29tcGxldGUnOiBkb25lIH0pO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2RvbmUgc2F2aW5nIScgYWZ0ZXIgdGhlIHR3byBhc3luYyBzYXZlcyBoYXZlIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZnRlcihuLCBmdW5jKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoLS1uIDwgMSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2AsIHdpdGggdXAgdG8gYG5gIGFyZ3VtZW50cyxcbiAgICAgKiBpZ25vcmluZyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBjYXAuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICc4JywgJzEwJ10sIF8uYXJ5KHBhcnNlSW50LCAxKSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFyeShmdW5jLCBuLCBndWFyZCkge1xuICAgICAgbiA9IGd1YXJkID8gdW5kZWZpbmVkIDogbjtcbiAgICAgIG4gPSAoZnVuYyAmJiBuID09IG51bGwpID8gZnVuYy5sZW5ndGggOiBuO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9BUllfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50c1xuICAgICAqIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLCB3aGlsZSBpdCdzIGNhbGxlZCBsZXNzIHRoYW4gYG5gIHRpbWVzLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGF0IHdoaWNoIGBmdW5jYCBpcyBubyBsb25nZXIgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5iZWZvcmUoNSwgYWRkQ29udGFjdFRvTGlzdCkpO1xuICAgICAqIC8vID0+IEFsbG93cyBhZGRpbmcgdXAgdG8gNCBjb250YWN0cyB0byB0aGUgbGlzdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiZWZvcmUobiwgZnVuYykge1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPiAwKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuIDw9IDEpIHtcbiAgICAgICAgICBmdW5jID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYFxuICAgICAqIGFuZCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogVGhlIGBfLmJpbmQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpYyBidWlsZHMsXG4gICAgICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBuYXRpdmUgYEZ1bmN0aW9uI2JpbmRgLCB0aGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGJpbmQuXG4gICAgICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ3VzZXInOiAnZnJlZCcgfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCAnaGknKTtcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIEJvdW5kIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCBfLCAnIScpO1xuICAgICAqIGJvdW5kKCdoaScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHRoaXNBcmcsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgYml0bWFzayA9IFdSQVBfQklORF9GTEFHO1xuICAgICAgaWYgKHBhcnRpYWxzLmxlbmd0aCkge1xuICAgICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIoYmluZCkpO1xuICAgICAgICBiaXRtYXNrIHw9IFdSQVBfUEFSVElBTF9GTEFHO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgbWV0aG9kIGF0IGBvYmplY3Rba2V5XWAgd2l0aCBgcGFydGlhbHNgXG4gICAgICogcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gYF8uYmluZGAgYnkgYWxsb3dpbmcgYm91bmQgZnVuY3Rpb25zIHRvIHJlZmVyZW5jZVxuICAgICAqIG1ldGhvZHMgdGhhdCBtYXkgYmUgcmVkZWZpbmVkIG9yIGRvbid0IHlldCBleGlzdC4gU2VlXG4gICAgICogW1BldGVyIE1pY2hhdXgncyBhcnRpY2xlXShodHRwOi8vcGV0ZXIubWljaGF1eC5jYS9hcnRpY2xlcy9sYXp5LWZ1bmN0aW9uLWRlZmluaXRpb24tcGF0dGVybilcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogVGhlIGBfLmJpbmRLZXkucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZva2UgdGhlIG1ldGhvZCBvbi5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgKiAgICd1c2VyJzogJ2ZyZWQnLFxuICAgICAqICAgJ2dyZWV0JzogZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICAgIHJldHVybiBncmVldGluZyArICcgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqICAgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmRLZXkob2JqZWN0LCAnZ3JlZXQnLCAnaGknKTtcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKlxuICAgICAqIG9iamVjdC5ncmVldCA9IGZ1bmN0aW9uKGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJ3lhICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIEJvdW5kIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpeWEgZnJlZCEnXG4gICAgICovXG4gICAgdmFyIGJpbmRLZXkgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGtleSwgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kS2V5KSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChrZXksIGJpdG1hc2ssIG9iamVjdCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhcmd1bWVudHMgb2YgYGZ1bmNgIGFuZCBlaXRoZXIgaW52b2tlc1xuICAgICAqIGBmdW5jYCByZXR1cm5pbmcgaXRzIHJlc3VsdCwgaWYgYXQgbGVhc3QgYGFyaXR5YCBudW1iZXIgb2YgYXJndW1lbnRzIGhhdmVcbiAgICAgKiBiZWVuIHByb3ZpZGVkLCBvciByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSByZW1haW5pbmcgYGZ1bmNgXG4gICAgICogYXJndW1lbnRzLCBhbmQgc28gb24uIFRoZSBhcml0eSBvZiBgZnVuY2AgbWF5IGJlIHNwZWNpZmllZCBpZiBgZnVuYy5sZW5ndGhgXG4gICAgICogaXMgbm90IHN1ZmZpY2llbnQuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uY3VycnkucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpYyBidWlsZHMsXG4gICAgICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGN1cnJpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eT1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhYmMgPSBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgY3VycmllZCA9IF8uY3VycnkoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSkoMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIpKDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgxKShfLCAzKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeShmdW5jLCBhcml0eSwgZ3VhcmQpIHtcbiAgICAgIGFyaXR5ID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBhcml0eTtcbiAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQ1VSUllfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5KTtcbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IGN1cnJ5LnBsYWNlaG9sZGVyO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmN1cnJ5YCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGFwcGxpZWQgdG8gYGZ1bmNgXG4gICAgICogaW4gdGhlIG1hbm5lciBvZiBgXy5wYXJ0aWFsUmlnaHRgIGluc3RlYWQgb2YgYF8ucGFydGlhbGAuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uY3VycnlSaWdodC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeVJpZ2h0KGFiYyk7XG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDMpKDIpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgyLCAzKSgxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMiwgMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiAvLyBDdXJyaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIGN1cnJpZWQoMykoMSwgXykoMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VycnlSaWdodChmdW5jLCBhcml0eSwgZ3VhcmQpIHtcbiAgICAgIGFyaXR5ID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBhcml0eTtcbiAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQ1VSUllfUklHSFRfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5KTtcbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IGN1cnJ5UmlnaHQucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgaW52b2tpbmcgYGZ1bmNgIHVudGlsIGFmdGVyIGB3YWl0YFxuICAgICAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICAgICAqIGludm9rZWQuIFRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgIG1ldGhvZCB0byBjYW5jZWxcbiAgICAgKiBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0byBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS5cbiAgICAgKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAgICAgKiBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGAgdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gU3Vic2VxdWVudFxuICAgICAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gICAgICogaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIGRlYm91bmNlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8uZGVib3VuY2VgIGFuZCBgXy50aHJvdHRsZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWJvdW5jZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPWZhbHNlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heFdhaXRdXG4gICAgICogIFRoZSBtYXhpbXVtIHRpbWUgYGZ1bmNgIGlzIGFsbG93ZWQgdG8gYmUgZGVsYXllZCBiZWZvcmUgaXQncyBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIEF2b2lkIGNvc3RseSBjYWxjdWxhdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBzaXplIGlzIGluIGZsdXguXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgc2VuZE1haWxgIHdoZW4gY2xpY2tlZCwgZGVib3VuY2luZyBzdWJzZXF1ZW50IGNhbGxzLlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAgICAgKiAgICdsZWFkaW5nJzogdHJ1ZSxcbiAgICAgKiAgICd0cmFpbGluZyc6IGZhbHNlXG4gICAgICogfSkpO1xuICAgICAqXG4gICAgICogLy8gRW5zdXJlIGBiYXRjaExvZ2AgaXMgaW52b2tlZCBvbmNlIGFmdGVyIDEgc2Vjb25kIG9mIGRlYm91bmNlZCBjYWxscy5cbiAgICAgKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAgICAgKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gICAgICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBkZWJvdW5jZWQpO1xuICAgICAqXG4gICAgICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyBkZWJvdW5jZWQgaW52b2NhdGlvbi5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCBkZWJvdW5jZWQuY2FuY2VsKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGFzdEFyZ3MsXG4gICAgICAgICAgbGFzdFRoaXMsXG4gICAgICAgICAgbWF4V2FpdCxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgdGltZXJJZCxcbiAgICAgICAgICBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwLFxuICAgICAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgICAgICBtYXhpbmcgPSBmYWxzZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICAgICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgICAgIG1heFdhaXQgPSBtYXhpbmcgPyBuYXRpdmVNYXgodG9OdW1iZXIob3B0aW9ucy5tYXhXYWl0KSB8fCAwLCB3YWl0KSA6IG1heFdhaXQ7XG4gICAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGludm9rZUZ1bmModGltZSkge1xuICAgICAgICB2YXIgYXJncyA9IGxhc3RBcmdzLFxuICAgICAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgICAgICAvLyBSZXNldCBhbnkgYG1heFdhaXRgIHRpbWVyLlxuICAgICAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIC8vIEludm9rZSB0aGUgbGVhZGluZyBlZGdlLlxuICAgICAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHJlbWFpbmluZ1dhaXQodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZSxcbiAgICAgICAgICAgIHRpbWVXYWl0aW5nID0gd2FpdCAtIHRpbWVTaW5jZUxhc3RDYWxsO1xuXG4gICAgICAgIHJldHVybiBtYXhpbmdcbiAgICAgICAgICA/IG5hdGl2ZU1pbih0aW1lV2FpdGluZywgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpXG4gICAgICAgICAgOiB0aW1lV2FpdGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICAgICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAgICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAgICAgLy8gdHJhaWxpbmcgZWRnZSwgdGhlIHN5c3RlbSB0aW1lIGhhcyBnb25lIGJhY2t3YXJkcyBhbmQgd2UncmUgdHJlYXRpbmdcbiAgICAgICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgICAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgICAgICh0aW1lU2luY2VMYXN0Q2FsbCA8IDApIHx8IChtYXhpbmcgJiYgdGltZVNpbmNlTGFzdEludm9rZSA+PSBtYXhXYWl0KSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBub3coKTtcbiAgICAgICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gT25seSBpbnZva2UgaWYgd2UgaGF2ZSBgbGFzdEFyZ3NgIHdoaWNoIG1lYW5zIGBmdW5jYCBoYXMgYmVlblxuICAgICAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICAgICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmModGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgICAgICBpZiAodGltZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gMDtcbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgICAgICBsYXN0QXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgICAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgICAgIGlmIChpc0ludm9raW5nKSB7XG4gICAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gICAgICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgICAgIHJldHVybiBkZWJvdW5jZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmZXJzIGludm9raW5nIHRoZSBgZnVuY2AgdW50aWwgdGhlIGN1cnJlbnQgY2FsbCBzdGFjayBoYXMgY2xlYXJlZC4gQW55XG4gICAgICogYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlZmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sICdkZWZlcnJlZCcpO1xuICAgICAqIC8vID0+IExvZ3MgJ2RlZmVycmVkJyBhZnRlciBvbmUgbWlsbGlzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlZmVyID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCAxLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgYGZ1bmNgIGFmdGVyIGB3YWl0YCBtaWxsaXNlY29uZHMuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmVcbiAgICAgKiBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlbGF5KGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sIDEwMDAsICdsYXRlcicpO1xuICAgICAqIC8vID0+IExvZ3MgJ2xhdGVyJyBhZnRlciBvbmUgc2Vjb25kLlxuICAgICAqL1xuICAgIHZhciBkZWxheSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBiYXNlRGVsYXkoZnVuYywgdG9OdW1iZXIod2FpdCkgfHwgMCwgYXJncyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyByZXZlcnNlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZsaXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbGlwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZmxpcHBlZCA9IF8uZmxpcChmdW5jdGlvbigpIHtcbiAgICAgKiAgIHJldHVybiBfLnRvQXJyYXkoYXJndW1lbnRzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGZsaXBwZWQoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiBbJ2QnLCAnYycsICdiJywgJ2EnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsaXAoZnVuYykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9GTElQX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gICAgICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICAgICAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gICAgICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gICAgICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAgICAgKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICAgICAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGNsZWFyYCwgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gICAgICpcbiAgICAgKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHZhbHVlcyhvdGhlcik7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICpcbiAgICAgKiBvYmplY3QuYSA9IDI7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAgICAgKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqXG4gICAgICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAgICAgKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lbW9pemUoZnVuYywgcmVzb2x2ZXIpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXSxcbiAgICAgICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBtZW1vaXplZC5jYWNoZSA9IGNhY2hlLnNldChrZXksIHJlc3VsdCkgfHwgY2FjaGU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgbWVtb2l6ZWQuY2FjaGUgPSBuZXcgKG1lbW9pemUuQ2FjaGUgfHwgTWFwQ2FjaGUpO1xuICAgICAgcmV0dXJuIG1lbW9pemVkO1xuICAgIH1cblxuICAgIC8vIEV4cG9zZSBgTWFwQ2FjaGVgLlxuICAgIG1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG5lZ2F0ZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJlZGljYXRlIGBmdW5jYC4gVGhlXG4gICAgICogYGZ1bmNgIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgcHJlZGljYXRlIHRvIG5lZ2F0ZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBuZWdhdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0V2ZW4obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5maWx0ZXIoWzEsIDIsIDMsIDQsIDUsIDZdLCBfLm5lZ2F0ZShpc0V2ZW4pKTtcbiAgICAgKiAvLyA9PiBbMSwgMywgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuZWdhdGUocHJlZGljYXRlKSB7XG4gICAgICBpZiAodHlwZW9mIHByZWRpY2F0ZSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcyk7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFwcmVkaWNhdGUuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGlzIHJlc3RyaWN0ZWQgdG8gaW52b2tpbmcgYGZ1bmNgIG9uY2UuIFJlcGVhdCBjYWxsc1xuICAgICAqIHRvIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBpbnZvY2F0aW9uLiBUaGUgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGluaXRpYWxpemUgPSBfLm9uY2UoY3JlYXRlQXBwbGljYXRpb24pO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiBpbml0aWFsaXplKCk7XG4gICAgICogLy8gPT4gYGNyZWF0ZUFwcGxpY2F0aW9uYCBpcyBpbnZva2VkIG9uY2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbmNlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiZWZvcmUoMiwgZnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnRzIHRyYW5zZm9ybWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3RyYW5zZm9ybXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgYXJndW1lbnQgdHJhbnNmb3Jtcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZG91YmxlZChuKSB7XG4gICAgICogICByZXR1cm4gbiAqIDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlckFyZ3MoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIFt4LCB5XTtcbiAgICAgKiB9LCBbc3F1YXJlLCBkb3VibGVkXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDksIDMpO1xuICAgICAqIC8vID0+IFs4MSwgNl1cbiAgICAgKlxuICAgICAqIGZ1bmMoMTAsIDUpO1xuICAgICAqIC8vID0+IFsxMDAsIDEwXVxuICAgICAqL1xuICAgIHZhciBvdmVyQXJncyA9IGNhc3RSZXN0KGZ1bmN0aW9uKGZ1bmMsIHRyYW5zZm9ybXMpIHtcbiAgICAgIHRyYW5zZm9ybXMgPSAodHJhbnNmb3Jtcy5sZW5ndGggPT0gMSAmJiBpc0FycmF5KHRyYW5zZm9ybXNbMF0pKVxuICAgICAgICA/IGFycmF5TWFwKHRyYW5zZm9ybXNbMF0sIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSlcbiAgICAgICAgOiBhcnJheU1hcChiYXNlRmxhdHRlbih0cmFuc2Zvcm1zLCAxKSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIGZ1bmNzTGVuZ3RoID0gdHJhbnNmb3Jtcy5sZW5ndGg7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihhcmdzLmxlbmd0aCwgZnVuY3NMZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSB0cmFuc2Zvcm1zW2luZGV4XS5jYWxsKHRoaXMsIGFyZ3NbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlXG4gICAgICogYXJndW1lbnRzIGl0IHJlY2VpdmVzLiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmJpbmRgIGV4Y2VwdCBpdCBkb2VzICoqbm90KipcbiAgICAgKiBhbHRlciB0aGUgYHRoaXNgIGJpbmRpbmcuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgcGFydGlhbGx5XG4gICAgICogYXBwbGllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkgYXJndW1lbnRzIHRvLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhcnRpYWxseSBhcHBsaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgbmFtZSkge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgbmFtZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbChncmVldCwgJ2hlbGxvJyk7XG4gICAgICogc2F5SGVsbG9UbygnZnJlZCcpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkJ1xuICAgICAqXG4gICAgICogLy8gUGFydGlhbGx5IGFwcGxpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbChncmVldCwgXywgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWwgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKHBhcnRpYWwpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucGFydGlhbGAgZXhjZXB0IHRoYXQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzXG4gICAgICogYXJlIGFwcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbFJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBncmVldEZyZWQgPSBfLnBhcnRpYWxSaWdodChncmVldCwgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnaGVsbG8nLCBfKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWxSaWdodCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbFJpZ2h0KSk7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRywgdW5kZWZpbmVkLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyBhcnJhbmdlZCBhY2NvcmRpbmdcbiAgICAgKiB0byB0aGUgc3BlY2lmaWVkIGBpbmRleGVzYCB3aGVyZSB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIGZpcnN0IGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIHNlY29uZCBpbmRleCBpc1xuICAgICAqIHByb3ZpZGVkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlYXJyYW5nZSBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7Li4uKG51bWJlcnxudW1iZXJbXSl9IGluZGV4ZXMgVGhlIGFycmFuZ2VkIGFyZ3VtZW50IGluZGV4ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciByZWFyZ2VkID0gXy5yZWFyZyhmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH0sIFsyLCAwLCAxXSk7XG4gICAgICpcbiAgICAgKiByZWFyZ2VkKCdiJywgJ2MnLCAnYScpXG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICovXG4gICAgdmFyIHJlYXJnID0gZmxhdFJlc3QoZnVuY3Rpb24oZnVuYywgaW5kZXhlcykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9SRUFSR19GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBpbmRleGVzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBmcm9tIGBzdGFydGAgYW5kIGJleW9uZCBwcm92aWRlZCBhc1xuICAgICAqIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZVxuICAgICAqIFtyZXN0IHBhcmFtZXRlcl0oaHR0cHM6Ly9tZG4uaW8vcmVzdF9wYXJhbWV0ZXJzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5yZXN0KGZ1bmN0aW9uKHdoYXQsIG5hbWVzKSB7XG4gICAgICogICByZXR1cm4gd2hhdCArICcgJyArIF8uaW5pdGlhbChuYW1lcykuam9pbignLCAnKSArXG4gICAgICogICAgIChfLnNpemUobmFtZXMpID4gMSA/ICcsICYgJyA6ICcnKSArIF8ubGFzdChuYW1lcyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoJ2hlbGxvJywgJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVzdChmdW5jLCBzdGFydCkge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBzdGFydCA9PT0gdW5kZWZpbmVkID8gc3RhcnQgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAgICAgKiBjcmVhdGUgZnVuY3Rpb24gYW5kIGFuIGFycmF5IG9mIGFyZ3VtZW50cyBtdWNoIGxpa2VcbiAgICAgKiBbYEZ1bmN0aW9uI2FwcGx5YF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3NwcmVhZCBvcGVyYXRvcl0oaHR0cHM6Ly9tZG4uaW8vc3ByZWFkX29wZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHNwcmVhZCBhcmd1bWVudHMgb3Zlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgc3ByZWFkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5zcHJlYWQoZnVuY3Rpb24od2hvLCB3aGF0KSB7XG4gICAgICogICByZXR1cm4gd2hvICsgJyBzYXlzICcgKyB3aGF0O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogc2F5KFsnZnJlZCcsICdoZWxsbyddKTtcbiAgICAgKiAvLyA9PiAnZnJlZCBzYXlzIGhlbGxvJ1xuICAgICAqXG4gICAgICogdmFyIG51bWJlcnMgPSBQcm9taXNlLmFsbChbXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoNDApLFxuICAgICAqICAgUHJvbWlzZS5yZXNvbHZlKDM2KVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogbnVtYmVycy50aGVuKF8uc3ByZWFkKGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgKiAgIHJldHVybiB4ICsgeTtcbiAgICAgKiB9KSk7XG4gICAgICogLy8gPT4gYSBQcm9taXNlIG9mIDc2XG4gICAgICovXG4gICAgZnVuY3Rpb24gc3ByZWFkKGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogbmF0aXZlTWF4KHRvSW50ZWdlcihzdGFydCksIDApO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJnc1tzdGFydF0sXG4gICAgICAgICAgICBvdGhlckFyZ3MgPSBjYXN0U2xpY2UoYXJncywgMCwgc3RhcnQpO1xuXG4gICAgICAgIGlmIChhcnJheSkge1xuICAgICAgICAgIGFycmF5UHVzaChvdGhlckFyZ3MsIGFycmF5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB0aHJvdHRsZWQgZnVuY3Rpb24gdGhhdCBvbmx5IGludm9rZXMgYGZ1bmNgIGF0IG1vc3Qgb25jZSBwZXJcbiAgICAgKiBldmVyeSBgd2FpdGAgbWlsbGlzZWNvbmRzLiBUaGUgdGhyb3R0bGVkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYFxuICAgICAqIG1ldGhvZCB0byBjYW5jZWwgZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG9cbiAgICAgKiBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS4gUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2BcbiAgICAgKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgXG4gICAgICogdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZVxuICAgICAqIHRocm90dGxlZCBmdW5jdGlvbi4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHJldHVybiB0aGVcbiAgICAgKiByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb25cbiAgICAgKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICpcbiAgICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICAgKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLnRocm90dGxlYCBhbmQgYF8uZGVib3VuY2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gdGhyb3R0bGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRocm90dGxlIGludm9jYXRpb25zIHRvLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgZXhjZXNzaXZlbHkgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHdoaWxlIHNjcm9sbGluZy5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbignc2Nyb2xsJywgXy50aHJvdHRsZSh1cGRhdGVQb3NpdGlvbiwgMTAwKSk7XG4gICAgICpcbiAgICAgKiAvLyBJbnZva2UgYHJlbmV3VG9rZW5gIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBidXQgbm90IG1vcmUgdGhhbiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAgICAgKiB2YXIgdGhyb3R0bGVkID0gXy50aHJvdHRsZShyZW5ld1Rva2VuLCAzMDAwMDAsIHsgJ3RyYWlsaW5nJzogZmFsc2UgfSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHRocm90dGxlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIHRocm90dGxlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIHRocm90dGxlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsZWFkaW5nID0gdHJ1ZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgICAgICBsZWFkaW5nID0gJ2xlYWRpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMubGVhZGluZyA6IGxlYWRpbmc7XG4gICAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVib3VuY2UoZnVuYywgd2FpdCwge1xuICAgICAgICAnbGVhZGluZyc6IGxlYWRpbmcsXG4gICAgICAgICdtYXhXYWl0Jzogd2FpdCxcbiAgICAgICAgJ3RyYWlsaW5nJzogdHJhaWxpbmdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdXAgdG8gb25lIGFyZ3VtZW50LCBpZ25vcmluZyBhbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy51bmFyeShwYXJzZUludCkpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmFyeShmdW5jKSB7XG4gICAgICByZXR1cm4gYXJ5KGZ1bmMsIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIGB2YWx1ZWAgdG8gYHdyYXBwZXJgIGFzIGl0cyBmaXJzdFxuICAgICAqIGFyZ3VtZW50LiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGZ1bmN0aW9uIGFyZSBhcHBlbmRlZFxuICAgICAqIHRvIHRob3NlIHByb3ZpZGVkIHRvIHRoZSBgd3JhcHBlcmAuIFRoZSB3cmFwcGVyIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgXG4gICAgICogYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3dyYXBwZXI9aWRlbnRpdHldIFRoZSB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgcCA9IF8ud3JhcChfLmVzY2FwZSwgZnVuY3Rpb24oZnVuYywgdGV4dCkge1xuICAgICAqICAgcmV0dXJuICc8cD4nICsgZnVuYyh0ZXh0KSArICc8L3A+JztcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHAoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJzxwPmZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlczwvcD4nXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcCh2YWx1ZSwgd3JhcHBlcikge1xuICAgICAgcmV0dXJuIHBhcnRpYWwoY2FzdEZ1bmN0aW9uKHdyYXBwZXIpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCBhcyBhbiBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtudWxsXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkodW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqIGNvbnNvbGUubG9nKF8uY2FzdEFycmF5KGFycmF5KSA9PT0gYXJyYXkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXkoKSB7XG4gICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzWzBdO1xuICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICAgICAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAgICAgKiBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLCBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWRcbiAgICAgKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICAgICAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAgICAgKiBhcyBlcnJvciBvYmplY3RzLCBmdW5jdGlvbnMsIERPTSBub2RlcywgYW5kIFdlYWtNYXBzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBjbG9uZWQgdmFsdWUuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLFxuICAgICAqIGNsb25pbmcgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdXAgdG8gZm91ciBhcmd1bWVudHM7ICh2YWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZShmYWxzZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZVdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICAgICAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVXaXRoYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZURlZXBXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICAgICAqIC8vID0+ICdCT0RZJ1xuICAgICAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGVlcFdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBvYmplY3RgIGNvbmZvcm1zIHRvIGBzb3VyY2VgIGJ5IGludm9raW5nIHRoZSBwcmVkaWNhdGVcbiAgICAgKiBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDE7IH0gfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAyOyB9IH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIHNvdXJjZSA9PSBudWxsIHx8IGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBrZXlzKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGFcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoTmFOLCBOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ubHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndCgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmd0KDEsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGd0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlR3QpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3RlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAgICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5QnVmZmVyYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5QnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5QnVmZmVyID0gbm9kZUlzQXJyYXlCdWZmZXIgPyBiYXNlVW5hcnkobm9kZUlzQXJyYXlCdWZmZXIpIDogYmFzZUlzQXJyYXlCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gICAgICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICAgICAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAgICAgKiBpcyBhbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYm9vbGVhbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihmYWxzZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Jvb2xlYW4obnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYERhdGVgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZShuZXcgRGF0ZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0RhdGUoJ01vbiBBcHJpbCAyMyAyMDEyJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNEYXRlID0gbm9kZUlzRGF0ZSA/IGJhc2VVbmFyeShub2RlSXNEYXRlKSA6IGJhc2VJc0RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBET00gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBET00gZWxlbWVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudChkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudCgnPGJvZHk+Jyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICAgICAqXG4gICAgICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gICAgICogcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICAgICAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAgICAgKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh0cnVlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gICAgICogZXF1aXZhbGVudC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAgICAgKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gICAgICogc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkIGFycmF5cy4gYE9iamVjdGAgb2JqZWN0cyBhcmUgY29tcGFyZWRcbiAgICAgKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAgICAgKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBvYmplY3QgPT09IG90aGVyO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNFcXVhbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gICAgICogc2l4IGFyZ3VtZW50czogKG9ialZhbHVlLCBvdGhWYWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrXSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydoZWxsbycsICdnb29kYnllJ107XG4gICAgICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gICAgICpcbiAgICAgKiBfLmlzRXF1YWxXaXRoKGFycmF5LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXF1YWxXaXRoKHZhbHVlLCBvdGhlciwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKHZhbHVlLCBvdGhlcikgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIHVuZGVmaW5lZCwgY3VzdG9taXplcikgOiAhIXJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICAgICAqIGBTeW50YXhFcnJvcmAsIGBUeXBlRXJyb3JgLCBvciBgVVJJRXJyb3JgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gZXJyb3Igb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihuZXcgRXJyb3IpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihFcnJvcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Vycm9yKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBlcnJvclRhZyB8fCB0YWcgPT0gZG9tRXhjVGFnIHx8XG4gICAgICAgICh0eXBlb2YgdmFsdWUubWVzc2FnZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUubmFtZSA9PSAnc3RyaW5nJyAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIHByaW1pdGl2ZSBudW1iZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0Zpbml0ZWBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0Zpbml0ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmluaXRlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIG5hdGl2ZUlzRmluaXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKF8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgICAgIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA9PSB0b0ludGVnZXIodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAgICAgKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gICAgICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdCh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAgICAgKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGBvYmplY3RgIGFuZCBgc291cmNlYCB0b1xuICAgICAqIGRldGVybWluZSBpZiBgb2JqZWN0YCBjb250YWlucyBlcXVpdmFsZW50IHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGBfLm1hdGNoZXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzTWF0Y2hgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gICAgICogYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBmaXZlXG4gICAgICogYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBpbmRleHxrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhzcmNWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2dyZWV0aW5nJzogJ2hlbGxvJyB9O1xuICAgICAqIHZhciBzb3VyY2UgPSB7ICdncmVldGluZyc6ICdoaScgfTtcbiAgICAgKlxuICAgICAqIF8uaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYE5hTmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc05hTmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc05hTikgYW5kIGlzIG5vdCB0aGUgc2FtZSBhc1xuICAgICAqIGdsb2JhbCBbYGlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vaXNOYU4pIHdoaWNoIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIGB1bmRlZmluZWRgIGFuZCBvdGhlciBub24tbnVtYmVyIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05hTihOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4obmV3IE51bWJlcihOYU4pKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBpc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4odW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTmFOKHZhbHVlKSB7XG4gICAgICAvLyBBbiBgTmFOYCBwcmltaXRpdmUgaXMgdGhlIG9ubHkgdmFsdWUgdGhhdCBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLlxuICAgICAgLy8gUGVyZm9ybSB0aGUgYHRvU3RyaW5nVGFnYCBjaGVjayBmaXJzdCB0byBhdm9pZCBlcnJvcnMgd2l0aCBzb21lXG4gICAgICAvLyBBY3RpdmVYIG9iamVjdHMgaW4gSUUuXG4gICAgICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmIHZhbHVlICE9ICt2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByaXN0aW5lIG5hdGl2ZSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBjYW4ndCByZWxpYWJseSBkZXRlY3QgbmF0aXZlIGZ1bmN0aW9ucyBpbiB0aGUgcHJlc2VuY2VcbiAgICAgKiBvZiB0aGUgY29yZS1qcyBwYWNrYWdlIGJlY2F1c2UgY29yZS1qcyBjaXJjdW12ZW50cyB0aGlzIGtpbmQgb2YgZGV0ZWN0aW9uLlxuICAgICAqIERlc3BpdGUgbXVsdGlwbGUgcmVxdWVzdHMsIHRoZSBjb3JlLWpzIG1haW50YWluZXIgaGFzIG1hZGUgaXQgY2xlYXI6IGFueVxuICAgICAqIGF0dGVtcHQgdG8gZml4IHRoZSBkZXRlY3Rpb24gd2lsbCBiZSBvYnN0cnVjdGVkLiBBcyBhIHJlc3VsdCwgd2UncmUgbGVmdFxuICAgICAqIHdpdGggbGl0dGxlIGNob2ljZSBidXQgdG8gdGhyb3cgYW4gZXJyb3IuIFVuZm9ydHVuYXRlbHksIHRoaXMgYWxzbyBhZmZlY3RzXG4gICAgICogcGFja2FnZXMsIGxpa2UgW2JhYmVsLXBvbHlmaWxsXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iYWJlbC1wb2x5ZmlsbCksXG4gICAgICogd2hpY2ggcmVseSBvbiBjb3JlLWpzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKEFycmF5LnByb3RvdHlwZS5wdXNoKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKF8pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYXRpdmUodmFsdWUpIHtcbiAgICAgIGlmIChpc01hc2thYmxlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoQ09SRV9FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYG51bGxgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bGwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05pbChudWxsKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05pbChOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOaWwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTnVtYmVyYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gICAgICogY2xhc3NpZmllZCBhcyBudW1iZXJzLCB1c2UgdGhlIGBfLmlzRmluaXRlYCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBudW1iZXJUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAgICAgKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC44LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gICAgICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICAgICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFJlZ0V4cGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKC9hYmMvKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKCcvYWJjLycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzUmVnRXhwID0gbm9kZUlzUmVnRXhwID8gYmFzZVVuYXJ5KG5vZGVJc1JlZ0V4cCkgOiBiYXNlSXNSZWdFeHA7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlci4gQW4gaW50ZWdlciBpcyBzYWZlIGlmIGl0J3MgYW4gSUVFRS03NTRcbiAgICAgKiBkb3VibGUgcHJlY2lzaW9uIG51bWJlciB3aGljaCBpc24ndCB0aGUgcmVzdWx0IG9mIGEgcm91bmRlZCB1bnNhZmUgaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzU2FmZUludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNTYWZlSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkgJiYgdmFsdWUgPj0gLU1BWF9TQUZFX0lOVEVHRVIgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFNldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzdHJpbmcsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha01hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSB3ZWFrTWFwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha1NldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBXZWFrU2V0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha1NldChuZXcgU2V0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha1NldCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gd2Vha1NldFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmd0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHQoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBsdCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUx0KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAgICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHRlKDEsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ZSA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPD0gb3RoZXI7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoMSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheShudWxsKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gc3RyaW5nVG9BcnJheSh2YWx1ZSkgOiBjb3B5QXJyYXkodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHN5bUl0ZXJhdG9yICYmIHZhbHVlW3N5bUl0ZXJhdG9yXSkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JUb0FycmF5KHZhbHVlW3N5bUl0ZXJhdG9yXSgpKTtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgIGZ1bmMgPSB0YWcgPT0gbWFwVGFnID8gbWFwVG9BcnJheSA6ICh0YWcgPT0gc2V0VGFnID8gc2V0VG9BcnJheSA6IHZhbHVlcyk7XG5cbiAgICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEyLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZSgzLjIpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiA1ZS0zMjRcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKCczLjInKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgICAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgICAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRvRmluaXRlKHZhbHVlKSxcbiAgICAgICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyIHN1aXRhYmxlIGZvciB1c2UgYXMgdGhlIGxlbmd0aCBvZiBhblxuICAgICAqIGFycmF5LWxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gNDI5NDk2NzI5NVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgnMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgMCwgTUFYX0FSUkFZX0xFTkdUSCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b051bWJlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gSW5maW5pdHlcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgICAgIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICAgICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAgICAgKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHNhZmUgaW50ZWdlci4gQSBzYWZlIGludGVnZXIgY2FuIGJlIGNvbXBhcmVkIGFuZFxuICAgICAqIHJlcHJlc2VudGVkIGNvcnJlY3RseS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gOTAwNzE5OTI1NDc0MDk5MVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9TYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAgICAgKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKG51bGwpO1xuICAgICAqIC8vID0+ICcnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKC0wKTtcbiAgICAgKiAvLyA9PiAnLTAnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gJzEsMiwzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIFN1YnNlcXVlbnQgc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgIGFuZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BPYmplY3QuYXNzaWduYF0oaHR0cHM6Ly9tZG4uaW8vT2JqZWN0L2Fzc2lnbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25JblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbiA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlKSB7XG4gICAgICBpZiAoaXNQcm90b3R5cGUoc291cmNlKSB8fCBpc0FycmF5TGlrZShzb3VyY2UpKSB7XG4gICAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgb3duIGFuZFxuICAgICAqIGluaGVyaXRlZCBzb3VyY2UgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGV4dGVuZFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQmFyKCkge1xuICAgICAqICAgdGhpcy5jID0gMztcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmIgPSAyO1xuICAgICAqIEJhci5wcm90b3R5cGUuZCA9IDQ7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbkluKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMywgJ2QnOiA0IH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduSW4gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25JbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAgICAgKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBmaXZlIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRXaXRoXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbldpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduV2l0aCwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gYHBhdGhzYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9LCA0XSB9O1xuICAgICAqXG4gICAgICogXy5hdChvYmplY3QsIFsnYVswXS5iLmMnLCAnYVsxXSddKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgYXQgPSBmbGF0UmVzdChiYXNlQXQpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBgcHJvdG90eXBlYCBvYmplY3QuIElmIGFcbiAgICAgKiBgcHJvcGVydGllc2Agb2JqZWN0IGlzIGdpdmVuLCBpdHMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXNcbiAgICAgKiBhcmUgYXNzaWduZWQgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90b3R5cGUgVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtwcm9wZXJ0aWVzXSBUaGUgcHJvcGVydGllcyB0byBhc3NpZ24gdG8gdGhlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBTaGFwZSgpIHtcbiAgICAgKiAgIHRoaXMueCA9IDA7XG4gICAgICogICB0aGlzLnkgPSAwO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgKiAgIFNoYXBlLmNhbGwodGhpcyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogQ2lyY2xlLnByb3RvdHlwZSA9IF8uY3JlYXRlKFNoYXBlLnByb3RvdHlwZSwge1xuICAgICAqICAgJ2NvbnN0cnVjdG9yJzogQ2lyY2xlXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiB2YXIgY2lyY2xlID0gbmV3IENpcmNsZTtcbiAgICAgKiBjaXJjbGUgaW5zdGFuY2VvZiBDaXJjbGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgU2hhcGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZShwcm90b3R5cGUsIHByb3BlcnRpZXMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBiYXNlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gcHJvcGVydGllcyA9PSBudWxsID8gcmVzdWx0IDogYmFzZUFzc2lnbihyZXN1bHQsIHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAgICAgKiBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzIHRoYXRcbiAgICAgKiByZXNvbHZlIHRvIGB1bmRlZmluZWRgLiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gICAgICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNEZWVwXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICB2YXIgbGVuZ3RoID0gc291cmNlcy5sZW5ndGg7XG4gICAgICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgICAgICB2YXIgcHJvcHNJbmRleCA9IC0xO1xuICAgICAgICB2YXIgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW3Byb3BzSW5kZXhdO1xuICAgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgKGVxKHZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kZWZhdWx0c2AgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgYXNzaWduc1xuICAgICAqIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0c0RlZXAoeyAnYSc6IHsgJ2InOiAyIH0gfSwgeyAnYSc6IHsgJ2InOiAxLCAnYyc6IDMgfSB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IDIsICdjJzogMyB9IH1cbiAgICAgKi9cbiAgICB2YXIgZGVmYXVsdHNEZWVwID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgYXJncy5wdXNoKHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSk7XG4gICAgICByZXR1cm4gYXBwbHkobWVyZ2VXaXRoLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBrZXkgb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+ICdiYXJuZXknIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEtleWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGEgY29sbGVjdGlvbiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiByZXR1cm5zICdwZWJibGVzJyBhc3N1bWluZyBgXy5maW5kS2V5YCByZXR1cm5zICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEtleShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgYmFzZUZvck93blJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW5cbiAgICAgKiBvYmplY3QgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdFxuICAgICAqIGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JJbihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckluKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3Iob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JJbmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW5SaWdodChuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2MnLCAnYicsIHRoZW4gJ2EnIGFzc3VtaW5nIGBfLmZvckluYCBsb2dzICdhJywgJ2InLCB0aGVuICdjJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJblJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3JSaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCBhbmRcbiAgICAgKiBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uXG4gICAgICogZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvck93blJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93bihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd24ob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yT3duYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXMgb2ZcbiAgICAgKiBgb2JqZWN0YCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9yT3duUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdiJyB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JPd25gIGxvZ3MgJ2EnIHRoZW4gJ2InLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvck93blJpZ2h0KG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGVudW1lcmFibGUgcHJvcGVydGllc1xuICAgICAqIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc0luXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9ucyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnVuY3Rpb25zKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGFuZCBpbmhlcml0ZWRcbiAgICAgKiBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKiBAc2VlIF8uZnVuY3Rpb25zXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9uc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9uc0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5c0luKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gICAgICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IHsgJ2InOiAyIH0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYS5iJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvdGhlciwgJ2EnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhcyhvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBpbnZlcnRlZCBrZXlzIGFuZCB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICogSWYgYG9iamVjdGAgY29udGFpbnMgZHVwbGljYXRlIHZhbHVlcywgc3Vic2VxdWVudCB2YWx1ZXMgb3ZlcndyaXRlXG4gICAgICogcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pbnZlcnQob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogJ2MnLCAnMic6ICdiJyB9XG4gICAgICovXG4gICAgdmFyIGludmVydCA9IGNyZWF0ZUludmVydGVyKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YWx1ZSA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXN1bHRbdmFsdWVdID0ga2V5O1xuICAgIH0sIGNvbnN0YW50KGlkZW50aXR5KSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludmVydGAgZXhjZXB0IHRoYXQgdGhlIGludmVydGVkIG9iamVjdCBpcyBnZW5lcmF0ZWRcbiAgICAgKiBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmcgZWFjaCBlbGVtZW50IG9mIGBvYmplY3RgIHRocnUgYGl0ZXJhdGVlYC4gVGhlXG4gICAgICogY29ycmVzcG9uZGluZyBpbnZlcnRlZCB2YWx1ZSBvZiBlYWNoIGludmVydGVkIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzXG4gICAgICogcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGludmVydGVkIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0Qnkob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAnZ3JvdXAnICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnZ3JvdXAxJzogWydhJywgJ2MnXSwgJ2dyb3VwMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICB2YXIgaW52ZXJ0QnkgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXS5wdXNoKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbdmFsdWVdID0gW2tleV07XG4gICAgICB9XG4gICAgfSwgZ2V0SXRlcmF0ZWUpO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IFsxLCAyLCAzLCA0XSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmludm9rZShvYmplY3QsICdhWzBdLmIuYy5zbGljZScsIDEsIDMpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIHZhciBpbnZva2UgPSBiYXNlUmVzdChiYXNlSW52b2tlKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAgICAgKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5cyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLmtleXMoJ2hpJyk7XG4gICAgICogLy8gPT4gWycwJywgJzEnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5rZXlzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1hcFZhbHVlc2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IHdpdGggdGhlXG4gICAgICogc2FtZSB2YWx1ZXMgYXMgYG9iamVjdGAgYW5kIGtleXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZVxuICAgICAqIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICogQHNlZSBfLm1hcFZhbHVlc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcEtleXMoeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICByZXR1cm4ga2V5ICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnYTEnOiAxLCAnYjInOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBLZXlzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iamVjdCksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYG9iamVjdGAgYW5kIHZhbHVlcyBnZW5lcmF0ZWRcbiAgICAgKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgKiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBLZXlzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICAncGViYmxlcyc6IHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlOyB9KTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgJ2FnZScpO1xuICAgICAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBWYWx1ZXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyBpbnRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICAgICAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICAgICAqIGFyZSBtZXJnZWQgcmVjdXJzaXZlbHkuIE90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5XG4gICAgICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gICAgICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIG90aGVyID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiAyLCAnYyc6IDMgfSwgeyAnZCc6IDQsICdlJzogNSB9XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gICAgICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVyZ2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBtZXJnZWQgdmFsdWVzIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlXG4gICAgICogcHJvcGVydGllcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIG1lcmdpbmcgaXMgaGFuZGxlZCBieSB0aGVcbiAgICAgKiBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggc2l4IGFyZ3VtZW50czpcbiAgICAgKiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogWzFdLCAnYic6IFsyXSB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiBbM10sICdiJzogWzRdIH07XG4gICAgICpcbiAgICAgKiBfLm1lcmdlV2l0aChvYmplY3QsIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogWzEsIDNdLCAnYic6IFsyLCA0XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICAgICAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgcGF0aHMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgY29uc2lkZXJhYmx5IHNsb3dlciB0aGFuIGBfLnBpY2tgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gb21pdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ub21pdChvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIHZhciBvbWl0ID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaXNEZWVwID0gZmFsc2U7XG4gICAgICBwYXRocyA9IGFycmF5TWFwKHBhdGhzLCBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgICBpc0RlZXAgfHwgKGlzRGVlcCA9IHBhdGgubGVuZ3RoID4gMSk7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgfSk7XG4gICAgICBjb3B5T2JqZWN0KG9iamVjdCwgZ2V0QWxsS2V5c0luKG9iamVjdCksIHJlc3VsdCk7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJlc3VsdCA9IGJhc2VDbG9uZShyZXN1bHQsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX0ZMQVRfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9tT21pdENsb25lKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgYmFzZVVuc2V0KHJlc3VsdCwgcGF0aHNbbGVuZ3RoXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tCeWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mXG4gICAgICogdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYG9iamVjdGAgdGhhdFxuICAgICAqIGBwcmVkaWNhdGVgIGRvZXNuJ3QgcmV0dXJuIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3b1xuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXRCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9taXRCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHBpY2tCeShvYmplY3QsIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8ge30gOiBiYXNlUGljayhvYmplY3QsIHBhdGhzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBgb2JqZWN0YCBwcm9wZXJ0aWVzIGBwcmVkaWNhdGVgIHJldHVybnNcbiAgICAgKiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGlja0J5KG9iamVjdCwgXy5pc051bWJlcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gcGlja0J5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgdmFyIHByb3BzID0gYXJyYXlNYXAoZ2V0QWxsS2V5c0luKG9iamVjdCksIGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFtwcm9wXTtcbiAgICAgIH0pO1xuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlKTtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcHJvcHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBwcmVkaWNhdGUodmFsdWUsIHBhdGhbMF0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5nZXRgIGV4Y2VwdCB0aGF0IGlmIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyBhXG4gICAgICogZnVuY3Rpb24gaXQncyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGl0cyBwYXJlbnQgb2JqZWN0IGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byByZXNvbHZlLlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYzEnOiAzLCAnYzInOiBfLmNvbnN0YW50KDQpIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMScpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMicpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCBfLmNvbnN0YW50KCdkZWZhdWx0JykpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3VsdChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gICAgICAvLyBFbnN1cmUgdGhlIGxvb3AgaXMgZW50ZXJlZCB3aGVuIHBhdGggaXMgZW1wdHkuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICBvYmplY3QgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFt0b0tleShwYXRoW2luZGV4XSldO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IGlzRnVuY3Rpb24odmFsdWUpID8gdmFsdWUuY2FsbChvYmplY3QpIDogdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgYSBwb3J0aW9uIG9mIGBwYXRoYCBkb2Vzbid0IGV4aXN0LFxuICAgICAqIGl0J3MgY3JlYXRlZC4gQXJyYXlzIGFyZSBjcmVhdGVkIGZvciBtaXNzaW5nIGluZGV4IHByb3BlcnRpZXMgd2hpbGUgb2JqZWN0c1xuICAgICAqIGFyZSBjcmVhdGVkIGZvciBhbGwgb3RoZXIgbWlzc2luZyBwcm9wZXJ0aWVzLiBVc2UgYF8uc2V0V2l0aGAgdG8gY3VzdG9taXplXG4gICAgICogYHBhdGhgIGNyZWF0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5zZXQob2JqZWN0LCAnYVswXS5iLmMnLCA0KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgWyd4JywgJzAnLCAneScsICd6J10sIDUpO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldChvYmplY3QsIHBhdGgsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0cyBvZiBgcGF0aGAuICBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnNldFdpdGgob2JqZWN0LCAnWzBdWzFdJywgJ2EnLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFdpdGgob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZC12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGBcbiAgICAgKiB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgYF8uZnJvbVBhaXJzYC4gSWYgYG9iamVjdGAgaXMgYSBtYXAgb3Igc2V0LCBpdHNcbiAgICAgKiBlbnRyaWVzIGFyZSByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBlbnRyaWVzXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlycyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzID0gY3JlYXRlVG9QYWlycyhrZXlzKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnNcbiAgICAgKiBmb3IgYG9iamVjdGAgd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwXG4gICAgICogb3Igc2V0LCBpdHMgZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc0luXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlyc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxXSwgWydiJywgMl0sIFsnYycsIDNdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzSW4gPSBjcmVhdGVUb1BhaXJzKGtleXNJbik7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhbHRlcm5hdGl2ZSB0byBgXy5yZWR1Y2VgOyB0aGlzIG1ldGhvZCB0cmFuc2Zvcm1zIGBvYmplY3RgIHRvIGEgbmV3XG4gICAgICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICAgICAqIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgdGhydSBgaXRlcmF0ZWVgLCB3aXRoIGVhY2ggaW52b2NhdGlvblxuICAgICAqIHBvdGVudGlhbGx5IG11dGF0aW5nIHRoZSBgYWNjdW11bGF0b3JgIG9iamVjdC4gSWYgYGFjY3VtdWxhdG9yYCBpcyBub3RcbiAgICAgKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOiAoYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBjdXN0b20gYWNjdW11bGF0b3IgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybShbMiwgMywgNF0sIGZ1bmN0aW9uKHJlc3VsdCwgbikge1xuICAgICAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgOV1cbiAgICAgKlxuICAgICAqIF8udHJhbnNmb3JtKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogfSwge30pO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm0ob2JqZWN0LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgICAgIGlmIChhY2N1bXVsYXRvciA9PSBudWxsKSB7XG4gICAgICAgIHZhciBDdG9yID0gb2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICAgICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0gaXNBcnIgPyBuZXcgQ3RvciA6IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzRnVuY3Rpb24oQ3RvcikgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKSA6IHt9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIChpc0Fyckxpa2UgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBvYmplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgcHJvcGVydHkgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdW5zZXQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogNyB9IH1dIH07XG4gICAgICogXy51bnNldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udW5zZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdHJ1ZSA6IGJhc2VVbnNldChvYmplY3QsIHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBhY2NlcHRzIGB1cGRhdGVyYCB0byBwcm9kdWNlIHRoZVxuICAgICAqIHZhbHVlIHRvIHNldC4gVXNlIGBfLnVwZGF0ZVdpdGhgIHRvIGN1c3RvbWl6ZSBgcGF0aGAgY3JlYXRpb24uIFRoZSBgdXBkYXRlcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ2FbMF0uYi5jJywgZnVuY3Rpb24obikgeyByZXR1cm4gbiAqIG47IH0pO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAgICogLy8gPT4gOVxuICAgICAqXG4gICAgICogXy51cGRhdGUob2JqZWN0LCAneFswXS55LnonLCBmdW5jdGlvbihuKSB7IHJldHVybiBuID8gbiArIDEgOiAwOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVwZGF0ZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7fTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlV2l0aChvYmplY3QsICdbMF1bMV0nLCBfLmNvbnN0YW50KCdhJyksIE9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlV2l0aChvYmplY3QsIHBhdGgsIHVwZGF0ZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCBjYXN0RnVuY3Rpb24odXBkYXRlciksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIF8udmFsdWVzKCdoaScpO1xuICAgICAqIC8vID0+IFsnaCcsICdpJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5XG4gICAgICogdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDbGFtcHMgYG51bWJlcmAgd2l0aGluIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNsYW1wKC0xMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IC01XG4gICAgICpcbiAgICAgKiBfLmNsYW1wKDEwLCAtNSwgNSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gICAgICBpZiAodXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwcGVyID0gdG9OdW1iZXIodXBwZXIpO1xuICAgICAgICB1cHBlciA9IHVwcGVyID09PSB1cHBlciA/IHVwcGVyIDogMDtcbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvd2VyID0gdG9OdW1iZXIobG93ZXIpO1xuICAgICAgICBsb3dlciA9IGxvd2VyID09PSBsb3dlciA/IGxvd2VyIDogMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlQ2xhbXAodG9OdW1iZXIobnVtYmVyKSwgbG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG5gIGlzIGJldHdlZW4gYHN0YXJ0YCBhbmQgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gSWZcbiAgICAgKiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLCBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICogSWYgYHN0YXJ0YCBpcyBncmVhdGVyIHRoYW4gYGVuZGAgdGhlIHBhcmFtcyBhcmUgc3dhcHBlZCB0byBzdXBwb3J0XG4gICAgICogbmVnYXRpdmUgcmFuZ2VzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMy4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLnJhbmdlLCBfLnJhbmdlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDMsIDIsIDQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg0LCA4KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgyLCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDEuMiwgMik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDUuMiwgNCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgtMywgLTIsIC02KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHN0YXJ0O1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmQgPSB0b0Zpbml0ZShlbmQpO1xuICAgICAgfVxuICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgIHJldHVybiBiYXNlSW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2R1Y2VzIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICogSWYgb25seSBvbmUgYXJndW1lbnQgaXMgcHJvdmlkZWQgYSBudW1iZXIgYmV0d2VlbiBgMGAgYW5kIHRoZSBnaXZlbiBudW1iZXJcbiAgICAgKiBpcyByZXR1cm5lZC4gSWYgYGZsb2F0aW5nYCBpcyBgdHJ1ZWAsIG9yIGVpdGhlciBgbG93ZXJgIG9yIGB1cHBlcmAgYXJlXG4gICAgICogZmxvYXRzLCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyByZXR1cm5lZCBpbnN0ZWFkIG9mIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyPTBdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3VwcGVyPTFdIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmbG9hdGluZ10gU3BlY2lmeSByZXR1cm5pbmcgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMCwgNSk7XG4gICAgICogLy8gPT4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUpO1xuICAgICAqIC8vID0+IGFsc28gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUsIHRydWUpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMS4yLCA1LjIpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMS4yIGFuZCA1LjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByYW5kb20obG93ZXIsIHVwcGVyLCBmbG9hdGluZykge1xuICAgICAgaWYgKGZsb2F0aW5nICYmIHR5cGVvZiBmbG9hdGluZyAhPSAnYm9vbGVhbicgJiYgaXNJdGVyYXRlZUNhbGwobG93ZXIsIHVwcGVyLCBmbG9hdGluZykpIHtcbiAgICAgICAgdXBwZXIgPSBmbG9hdGluZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBwZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSB1cHBlcjtcbiAgICAgICAgICB1cHBlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgbG93ZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID09PSB1bmRlZmluZWQgJiYgdXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIHVwcGVyID0gMTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBsb3dlciA9IHRvRmluaXRlKGxvd2VyKTtcbiAgICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICAgIGxvd2VyID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cHBlciA9IHRvRmluaXRlKHVwcGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID4gdXBwZXIpIHtcbiAgICAgICAgdmFyIHRlbXAgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1cHBlcjtcbiAgICAgICAgdXBwZXIgPSB0ZW1wO1xuICAgICAgfVxuICAgICAgaWYgKGZsb2F0aW5nIHx8IGxvd2VyICUgMSB8fCB1cHBlciAlIDEpIHtcbiAgICAgICAgdmFyIHJhbmQgPSBuYXRpdmVSYW5kb20oKTtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZU1pbihsb3dlciArIChyYW5kICogKHVwcGVyIC0gbG93ZXIgKyBmcmVlUGFyc2VGbG9hdCgnMWUtJyArICgocmFuZCArICcnKS5sZW5ndGggLSAxKSkpKSwgdXBwZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBbY2FtZWwgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FtZWxDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhbWVsIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICovXG4gICAgdmFyIGNhbWVsQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgd29yZCA9IHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyBjYXBpdGFsaXplKHdvcmQpIDogd29yZCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGBzdHJpbmdgIHRvIHVwcGVyIGNhc2UgYW5kIHRoZSByZW1haW5pbmdcbiAgICAgKiB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNhcGl0YWxpemUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY2FwaXRhbGl6ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhcGl0YWxpemUoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRnJlZCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cmluZykge1xuICAgICAgcmV0dXJuIHVwcGVyRmlyc3QodG9TdHJpbmcoc3RyaW5nKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWJ1cnJzIGBzdHJpbmdgIGJ5IGNvbnZlcnRpbmdcbiAgICAgKiBbTGF0aW4tMSBTdXBwbGVtZW50XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbi0xX1N1cHBsZW1lbnRfKFVuaWNvZGVfYmxvY2spI0NoYXJhY3Rlcl90YWJsZSlcbiAgICAgKiBhbmQgW0xhdGluIEV4dGVuZGVkLUFdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX0V4dGVuZGVkLUEpXG4gICAgICogbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzIGFuZCByZW1vdmluZ1xuICAgICAqIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZGVidXJyLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGRlYnVycmVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWJ1cnIoJ2TDqWrDoCB2dScpO1xuICAgICAqIC8vID0+ICdkZWphIHZ1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYnVycihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gc3RyaW5nICYmIHN0cmluZy5yZXBsYWNlKHJlTGF0aW4sIGRlYnVyckxldHRlcikucmVwbGFjZShyZUNvbWJvTWFyaywgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBlbmRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249c3RyaW5nLmxlbmd0aF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG5cbiAgICAgIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbGVuZ3RoXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIGxlbmd0aCk7XG5cbiAgICAgIHZhciBlbmQgPSBwb3NpdGlvbjtcbiAgICAgIHBvc2l0aW9uIC09IHRhcmdldC5sZW5ndGg7XG4gICAgICByZXR1cm4gcG9zaXRpb24gPj0gMCAmJiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIGVuZCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIGFuZCBcIidcIiBpbiBgc3RyaW5nYCB0byB0aGVpclxuICAgICAqIGNvcnJlc3BvbmRpbmcgSFRNTCBlbnRpdGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIGNoYXJhY3RlcnMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICAgICAqIFwiPlwiIGFuZCBcIi9cIiBkb24ndCBuZWVkIGVzY2FwaW5nIGluIEhUTUwgYW5kIGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nXG4gICAgICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICAgICAqIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAgICAgKiAodW5kZXIgXCJzZW1pLXJlbGF0ZWQgZnVuIGZhY3RcIikgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFdoZW4gd29ya2luZyB3aXRoIEhUTUwgeW91IHNob3VsZCBhbHdheXNcbiAgICAgKiBbcXVvdGUgYXR0cmlidXRlIHZhbHVlc10oaHR0cDovL3dvbmtvLmNvbS9wb3N0L2h0bWwtZXNjYXBpbmcpIHRvIHJlZHVjZVxuICAgICAqIFhTUyB2ZWN0b3JzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIHRoZSBgUmVnRXhwYCBzcGVjaWFsIGNoYXJhY3RlcnMgXCJeXCIsIFwiJFwiLCBcIlxcXCIsIFwiLlwiLCBcIipcIiwgXCIrXCIsXG4gICAgICogXCI/XCIsIFwiKFwiLCBcIilcIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIGFuZCBcInxcIiBpbiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlUmVnRXhwKCdbbG9kYXNoXShodHRwczovL2xvZGFzaC5jb20vKScpO1xuICAgICAqIC8vID0+ICdcXFtsb2Rhc2hcXF1cXChodHRwczovL2xvZGFzaFxcLmNvbS9cXCknXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzUmVnRXhwQ2hhci50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBba2ViYWIgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3BlY2lhbF9jYXNlX3N0eWxlcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBrZWJhYiBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKi9cbiAgICB2YXIga2ViYWJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJy0nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJy0tRm9vLUJhci0tJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGcmVkJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnZlJFRCdcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9Mb3dlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLlxuICAgICAqIFBhZGRpbmcgY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgY2FuJ3QgYmUgZXZlbmx5IGRpdmlkZWQgYnkgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgpO1xuICAgICAqIC8vID0+ICcgIGFiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1hYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc3RyTGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIG1pZCA9IChsZW5ndGggLSBzdHJMZW5ndGgpIC8gMjtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlRmxvb3IobWlkKSwgY2hhcnMpICtcbiAgICAgICAgc3RyaW5nICtcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVDZWlsKG1pZCksIGNoYXJzKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSByaWdodCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRFbmQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChzdHJpbmcgKyBjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJyAgIGFiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdfLV9hYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSArIHN0cmluZylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gaW50ZWdlciBvZiB0aGUgc3BlY2lmaWVkIHJhZGl4LiBJZiBgcmFkaXhgIGlzXG4gICAgICogYHVuZGVmaW5lZGAgb3IgYDBgLCBhIGByYWRpeGAgb2YgYDEwYCBpcyB1c2VkIHVubGVzcyBgdmFsdWVgIGlzIGFcbiAgICAgKiBoZXhhZGVjaW1hbCwgaW4gd2hpY2ggY2FzZSBhIGByYWRpeGAgb2YgYDE2YCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGFsaWducyB3aXRoIHRoZVxuICAgICAqIFtFUzUgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjEuMi4yKSBvZiBgcGFyc2VJbnRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcmFkaXg9MTBdIFRoZSByYWRpeCB0byBpbnRlcnByZXQgYHZhbHVlYCBieS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhcnNlSW50KCcwOCcpO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICcwOCcsICcxMCddLCBfLnBhcnNlSW50KTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyc2VJbnQoc3RyaW5nLCByYWRpeCwgZ3VhcmQpIHtcbiAgICAgIGlmIChndWFyZCB8fCByYWRpeCA9PSBudWxsKSB7XG4gICAgICAgIHJhZGl4ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocmFkaXgpIHtcbiAgICAgICAgcmFkaXggPSArcmFkaXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlUGFyc2VJbnQodG9TdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyksIHJhZGl4IHx8IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGVhdHMgdGhlIGdpdmVuIHN0cmluZyBgbmAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnKicsIDMpO1xuICAgICAqIC8vID0+ICcqKionXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMik7XG4gICAgICogLy8gPT4gJ2FiY2FiYydcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAwKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmVwZWF0KHRvU3RyaW5nKHN0cmluZyksIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIG1hdGNoZXMgZm9yIGBwYXR0ZXJuYCBpbiBgc3RyaW5nYCB3aXRoIGByZXBsYWNlbWVudGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNyZXBsYWNlYF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3JlcGxhY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gcmVwbGFjZW1lbnQgVGhlIG1hdGNoIHJlcGxhY2VtZW50LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBsYWNlKCdIaSBGcmVkJywgJ0ZyZWQnLCAnQmFybmV5Jyk7XG4gICAgICogLy8gPT4gJ0hpIEJhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBsYWNlKCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoYXJnc1swXSk7XG5cbiAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA8IDMgPyBzdHJpbmcgOiBzdHJpbmcucmVwbGFjZShhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzbmFrZSBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TbmFrZV9jYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNuYWtlIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCctLUZPTy1CQVItLScpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqL1xuICAgIHZhciBzbmFrZUNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnXycgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNzcGxpdGBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9zcGxpdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gc3BsaXQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBzZXBhcmF0b3IgVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHNwbGl0IGJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIFRoZSBsZW5ndGggdG8gdHJ1bmNhdGUgcmVzdWx0cyB0by5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHN0cmluZyBzZWdtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zcGxpdCgnYS1iLWMnLCAnLScsIDIpO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcGxpdChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIGlmIChsaW1pdCAmJiB0eXBlb2YgbGltaXQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBsaW1pdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9BUlJBWV9MRU5HVEggOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmICghbGltaXQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKFxuICAgICAgICAgICAgdHlwZW9mIHNlcGFyYXRvciA9PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgKHNlcGFyYXRvciAhPSBudWxsICYmICFpc1JlZ0V4cChzZXBhcmF0b3IpKVxuICAgICAgICAgICkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gYmFzZVRvU3RyaW5nKHNlcGFyYXRvcik7XG4gICAgICAgIGlmICghc2VwYXJhdG9yICYmIGhhc1VuaWNvZGUoc3RyaW5nKSkge1xuICAgICAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShzdHJpbmcpLCAwLCBsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc3RhcnQgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3R5bGlzdGljX29yX3NwZWNpYWxpc2VkX3VzYWdlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0YXJ0IGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgc3RhcnRDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgdXBwZXJGaXJzdCh3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj0wXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09IG51bGxcbiAgICAgICAgPyAwXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIHN0cmluZy5sZW5ndGgpO1xuXG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcbiAgICAgIHJldHVybiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgdGFyZ2V0Lmxlbmd0aCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbiB0aGF0IGNhbiBpbnRlcnBvbGF0ZSBkYXRhIHByb3BlcnRpZXNcbiAgICAgKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICAgICAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICAgICAqIHByb3BlcnRpZXMgbWF5IGJlIGFjY2Vzc2VkIGFzIGZyZWUgdmFyaWFibGVzIGluIHRoZSB0ZW1wbGF0ZS4gSWYgYSBzZXR0aW5nXG4gICAgICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEluIHRoZSBkZXZlbG9wbWVudCBidWlsZCBgXy50ZW1wbGF0ZWAgdXRpbGl6ZXNcbiAgICAgKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAgICAgKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gICAgICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gICAgICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gICAgICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5ldmFsdWF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXZhbHVhdGVdXG4gICAgICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICAgICAqICBBbiBvYmplY3QgdG8gaW1wb3J0IGludG8gdGhlIHRlbXBsYXRlIGFzIGZyZWUgdmFyaWFibGVzLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gICAgICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zb3VyY2VVUkw9J2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbbl0nXVxuICAgICAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudmFyaWFibGU9J29iaiddXG4gICAgICogIFRoZSBkYXRhIG9iamVjdCB2YXJpYWJsZSBuYW1lLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8Yj48JS0gdmFsdWUgJT48L2I+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnPHNjcmlwdD4nIH0pO1xuICAgICAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGFuZCBnZW5lcmF0ZSBIVE1MLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGludGVybmFsIGBwcmludGAgZnVuY3Rpb24gaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgcHJpbnQoXCJoZWxsbyBcIiArIHVzZXIpOyAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGJhcm5leSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogLy8gRGlzYWJsZSBzdXBwb3J0IGJ5IHJlcGxhY2luZyB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyAkeyB1c2VyIH0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gcGViYmxlcyEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlPSBcIlxcXFw8JS0gdmFsdWUgJVxcXFw+XCIgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICdpZ25vcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgaW1wb3J0c2Agb3B0aW9uIHRvIGltcG9ydCBgalF1ZXJ5YCBhcyBganFgLlxuICAgICAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSh0ZXh0LCB7ICdpbXBvcnRzJzogeyAnanEnOiBqUXVlcnkgfSB9KTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZVVSTGAgb3B0aW9uIHRvIHNwZWNpZnkgYSBjdXN0b20gc291cmNlVVJMIGZvciB0aGUgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICAgICAqIGNvbXBpbGVkKGRhdGEpO1xuICAgICAqIC8vID0+IEZpbmQgdGhlIHNvdXJjZSBvZiBcImdyZWV0aW5nLmpzdFwiIHVuZGVyIHRoZSBTb3VyY2VzIHRhYiBvciBSZXNvdXJjZXMgcGFuZWwgb2YgdGhlIHdlYiBpbnNwZWN0b3IuXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGB2YXJpYWJsZWAgb3B0aW9uIHRvIGVuc3VyZSBhIHdpdGgtc3RhdGVtZW50IGlzbid0IHVzZWQgaW4gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hpIDwlPSBkYXRhLnVzZXIgJT4hJywgeyAndmFyaWFibGUnOiAnZGF0YScgfSk7XG4gICAgICogY29tcGlsZWQuc291cmNlO1xuICAgICAqIC8vID0+IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgKiAvLyAgIHZhciBfX3QsIF9fcCA9ICcnO1xuICAgICAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICAgICAqIC8vICAgcmV0dXJuIF9fcDtcbiAgICAgKiAvLyB9XG4gICAgICpcbiAgICAgKiAvLyBVc2UgY3VzdG9tIHRlbXBsYXRlIGRlbGltaXRlcnMuXG4gICAgICogXy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlID0gL3t7KFtcXHNcXFNdKz8pfX0vZztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnbXVzdGFjaGUnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBtdXN0YWNoZSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VgIHByb3BlcnR5IHRvIGlubGluZSBjb21waWxlZCB0ZW1wbGF0ZXMgZm9yIG1lYW5pbmdmdWxcbiAgICAgKiAvLyBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy5cbiAgICAgKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICAgICAqICAgdmFyIEpTVCA9IHtcXFxuICAgICAqICAgICBcIm1haW5cIjogJyArIF8udGVtcGxhdGUobWFpblRleHQpLnNvdXJjZSArICdcXFxuICAgICAqICAgfTtcXFxuICAgICAqICcpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgICAgIC8vIEJhc2VkIG9uIEpvaG4gUmVzaWcncyBgdG1wbGAgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbiAgICAgIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICAgICAgdmFyIHNldHRpbmdzID0gbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSkge1xuICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIG9wdGlvbnMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMsIHNldHRpbmdzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKTtcblxuICAgICAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICAgICAgaW1wb3J0c0tleXMgPSBrZXlzKGltcG9ydHMpLFxuICAgICAgICAgIGltcG9ydHNWYWx1ZXMgPSBiYXNlVmFsdWVzKGltcG9ydHMsIGltcG9ydHNLZXlzKTtcblxuICAgICAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICAgICAgaXNFdmFsdWF0aW5nLFxuICAgICAgICAgIGluZGV4ID0gMCxcbiAgICAgICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgICAgIHNvdXJjZSA9IFwiX19wICs9ICdcIjtcblxuICAgICAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICAgICAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAgICAgKG9wdGlvbnMuZXNjYXBlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgaW50ZXJwb2xhdGUuc291cmNlICsgJ3wnICtcbiAgICAgICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAob3B0aW9ucy5ldmFsdWF0ZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JCdcbiAgICAgICwgJ2cnKTtcblxuICAgICAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAgLy8gVGhlIHNvdXJjZVVSTCBnZXRzIGluamVjdGVkIGludG8gdGhlIHNvdXJjZSB0aGF0J3MgZXZhbC1lZCwgc28gYmUgY2FyZWZ1bFxuICAgICAgLy8gd2l0aCBsb29rdXAgKGluIGNhc2Ugb2YgZS5nLiBwcm90b3R5cGUgcG9sbHV0aW9uKSwgYW5kIHN0cmlwIG5ld2xpbmVzIGlmIGFueS5cbiAgICAgIC8vIEEgbmV3bGluZSB3b3VsZG4ndCBiZSBhIHZhbGlkIHNvdXJjZVVSTCBhbnl3YXksIGFuZCBpdCdkIGVuYWJsZSBjb2RlIGluamVjdGlvbi5cbiAgICAgIHZhciBzb3VyY2VVUkwgPSAnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAgKGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgICAgICAgPyAob3B0aW9ucy5zb3VyY2VVUkwgKyAnJykucmVwbGFjZSgvW1xcclxcbl0vZywgJyAnKVxuICAgICAgICAgIDogKCdsb2Rhc2gudGVtcGxhdGVTb3VyY2VzWycgKyAoKyt0ZW1wbGF0ZUNvdW50ZXIpICsgJ10nKVxuICAgICAgICApICsgJ1xcbic7XG5cbiAgICAgIHN0cmluZy5yZXBsYWNlKHJlRGVsaW1pdGVycywgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZVZhbHVlLCBpbnRlcnBvbGF0ZVZhbHVlLCBlc1RlbXBsYXRlVmFsdWUsIGV2YWx1YXRlVmFsdWUsIG9mZnNldCkge1xuICAgICAgICBpbnRlcnBvbGF0ZVZhbHVlIHx8IChpbnRlcnBvbGF0ZVZhbHVlID0gZXNUZW1wbGF0ZVZhbHVlKTtcblxuICAgICAgICAvLyBFc2NhcGUgY2hhcmFjdGVycyB0aGF0IGNhbid0IGJlIGluY2x1ZGVkIGluIHN0cmluZyBsaXRlcmFscy5cbiAgICAgICAgc291cmNlICs9IHN0cmluZy5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKHJlVW5lc2NhcGVkU3RyaW5nLCBlc2NhcGVTdHJpbmdDaGFyKTtcblxuICAgICAgICAvLyBSZXBsYWNlIGRlbGltaXRlcnMgd2l0aCBzbmlwcGV0cy5cbiAgICAgICAgaWYgKGVzY2FwZVZhbHVlKSB7XG4gICAgICAgICAgaXNFc2NhcGluZyA9IHRydWU7XG4gICAgICAgICAgc291cmNlICs9IFwiJyArXFxuX19lKFwiICsgZXNjYXBlVmFsdWUgKyBcIikgK1xcbidcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZhbHVhdGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXZhbHVhdGluZyA9IHRydWU7XG4gICAgICAgICAgc291cmNlICs9IFwiJztcXG5cIiArIGV2YWx1YXRlVmFsdWUgKyBcIjtcXG5fX3AgKz0gJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnRlcnBvbGF0ZVZhbHVlKSB7XG4gICAgICAgICAgc291cmNlICs9IFwiJyArXFxuKChfX3QgPSAoXCIgKyBpbnRlcnBvbGF0ZVZhbHVlICsgXCIpKSA9PSBudWxsID8gJycgOiBfX3QpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAgICAgLy8gVGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBwcm9kdWN0cyBuZWVkcyBgbWF0Y2hgIHJldHVybmVkIGluXG4gICAgICAgIC8vIG9yZGVyIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3QgYG9mZnNldGAgdmFsdWUuXG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH0pO1xuXG4gICAgICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gICAgICAvLyBJZiBgdmFyaWFibGVgIGlzIG5vdCBzcGVjaWZpZWQgd3JhcCBhIHdpdGgtc3RhdGVtZW50IGFyb3VuZCB0aGUgZ2VuZXJhdGVkXG4gICAgICAvLyBjb2RlIHRvIGFkZCB0aGUgZGF0YSBvYmplY3QgdG8gdGhlIHRvcCBvZiB0aGUgc2NvcGUgY2hhaW4uXG4gICAgICAvLyBMaWtlIHdpdGggc291cmNlVVJMLCB3ZSB0YWtlIGNhcmUgdG8gbm90IGNoZWNrIHRoZSBvcHRpb24ncyBwcm90b3R5cGUsXG4gICAgICAvLyBhcyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgYSBjb2RlIGluamVjdGlvbiB2ZWN0b3IuXG4gICAgICB2YXIgdmFyaWFibGUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsICd2YXJpYWJsZScpICYmIG9wdGlvbnMudmFyaWFibGU7XG4gICAgICBpZiAoIXZhcmlhYmxlKSB7XG4gICAgICAgIHNvdXJjZSA9ICd3aXRoIChvYmopIHtcXG4nICsgc291cmNlICsgJ1xcbn1cXG4nO1xuICAgICAgfVxuICAgICAgLy8gQ2xlYW51cCBjb2RlIGJ5IHN0cmlwcGluZyBlbXB0eSBzdHJpbmdzLlxuICAgICAgc291cmNlID0gKGlzRXZhbHVhdGluZyA/IHNvdXJjZS5yZXBsYWNlKHJlRW1wdHlTdHJpbmdMZWFkaW5nLCAnJykgOiBzb3VyY2UpXG4gICAgICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdNaWRkbGUsICckMScpXG4gICAgICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdUcmFpbGluZywgJyQxOycpO1xuXG4gICAgICAvLyBGcmFtZSBjb2RlIGFzIHRoZSBmdW5jdGlvbiBib2R5LlxuICAgICAgc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAodmFyaWFibGUgfHwgJ29iaicpICsgJykge1xcbicgK1xuICAgICAgICAodmFyaWFibGVcbiAgICAgICAgICA/ICcnXG4gICAgICAgICAgOiAnb2JqIHx8IChvYmogPSB7fSk7XFxuJ1xuICAgICAgICApICtcbiAgICAgICAgXCJ2YXIgX190LCBfX3AgPSAnJ1wiICtcbiAgICAgICAgKGlzRXNjYXBpbmdcbiAgICAgICAgICAgPyAnLCBfX2UgPSBfLmVzY2FwZSdcbiAgICAgICAgICAgOiAnJ1xuICAgICAgICApICtcbiAgICAgICAgKGlzRXZhbHVhdGluZ1xuICAgICAgICAgID8gJywgX19qID0gQXJyYXkucHJvdG90eXBlLmpvaW47XFxuJyArXG4gICAgICAgICAgICBcImZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxcblwiXG4gICAgICAgICAgOiAnO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIHNvdXJjZSArXG4gICAgICAgICdyZXR1cm4gX19wXFxufSc7XG5cbiAgICAgIHZhciByZXN1bHQgPSBhdHRlbXB0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gRnVuY3Rpb24oaW1wb3J0c0tleXMsIHNvdXJjZVVSTCArICdyZXR1cm4gJyArIHNvdXJjZSlcbiAgICAgICAgICAuYXBwbHkodW5kZWZpbmVkLCBpbXBvcnRzVmFsdWVzKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbidzIHNvdXJjZSBieSBpdHMgYHRvU3RyaW5nYCBtZXRob2Qgb3JcbiAgICAgIC8vIHRoZSBgc291cmNlYCBwcm9wZXJ0eSBhcyBhIGNvbnZlbmllbmNlIGZvciBpbmxpbmluZyBjb21waWxlZCB0ZW1wbGF0ZXMuXG4gICAgICByZXN1bHQuc291cmNlID0gc291cmNlO1xuICAgICAgaWYgKGlzRXJyb3IocmVzdWx0KSkge1xuICAgICAgICB0aHJvdyByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgLCBhcyBhIHdob2xlLCB0byBsb3dlciBjYXNlIGp1c3QgbGlrZVxuICAgICAqIFtTdHJpbmcjdG9Mb3dlckNhc2VdKGh0dHBzOi8vbWRuLmlvL3RvTG93ZXJDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0xvd2VyKCctLUZvby1CYXItLScpO1xuICAgICAqIC8vID0+ICctLWZvby1iYXItLSdcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb2JhcidcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnX19mb29fYmFyX18nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Mb3dlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgLCBhcyBhIHdob2xlLCB0byB1cHBlciBjYXNlIGp1c3QgbGlrZVxuICAgICAqIFtTdHJpbmcjdG9VcHBlckNhc2VdKGh0dHBzOi8vbWRuLmlvL3RvVXBwZXJDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1VwcGVyKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICctLUZPTy1CQVItLSdcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPT0JBUidcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignX19mb29fYmFyX18nKTtcbiAgICAgKiAvLyA9PiAnX19GT09fQkFSX18nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9VcHBlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbSgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICpcbiAgICAgKiBfLm1hcChbJyAgZm9vICAnLCAnICBiYXIgICddLCBfLnRyaW0pO1xuICAgICAqIC8vID0+IFsnZm9vJywgJ2JhciddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbShzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgY2hyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoY2hhcnMpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpLFxuICAgICAgICAgIGVuZCA9IGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIHN0YXJ0LCBlbmQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICcgIGFiYydcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnLV8tYWJjLV8tJywgJ18tJyk7XG4gICAgICogLy8gPT4gJy1fLWFiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmltRW5kKHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbUVuZCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKSArIDE7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCcgIGFiYyAgJyk7XG4gICAgICogLy8gPT4gJ2FiYyAgJ1xuICAgICAqXG4gICAgICogXy50cmltU3RhcnQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmMtXy0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJ1bmNhdGVzIGBzdHJpbmdgIGlmIGl0J3MgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aC5cbiAgICAgKiBUaGUgbGFzdCBjaGFyYWN0ZXJzIG9mIHRoZSB0cnVuY2F0ZWQgc3RyaW5nIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBvbWlzc2lvblxuICAgICAqIHN0cmluZyB3aGljaCBkZWZhdWx0cyB0byBcIi4uLlwiLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRydW5jYXRlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZW5ndGg9MzBdIFRoZSBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm9taXNzaW9uPScuLi4nXSBUaGUgc3RyaW5nIHRvIGluZGljYXRlIHRleHQgaXMgb21pdHRlZC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtvcHRpb25zLnNlcGFyYXRvcl0gVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHRydW5jYXRlIHRvLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRydW5jYXRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nKTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvLi4uJ1xuICAgICAqXG4gICAgICogXy50cnVuY2F0ZSgnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvcmlubycsIHtcbiAgICAgKiAgICdsZW5ndGgnOiAyNCxcbiAgICAgKiAgICdzZXBhcmF0b3InOiAnICdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLC4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogLyw/ICsvXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZS4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnb21pc3Npb24nOiAnIFsuLi5dJ1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWcgWy4uLl0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJ1bmNhdGUoc3RyaW5nLCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gREVGQVVMVF9UUlVOQ19MRU5HVEgsXG4gICAgICAgICAgb21pc3Npb24gPSBERUZBVUxUX1RSVU5DX09NSVNTSU9OO1xuXG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdmFyIHNlcGFyYXRvciA9ICdzZXBhcmF0b3InIGluIG9wdGlvbnMgPyBvcHRpb25zLnNlcGFyYXRvciA6IHNlcGFyYXRvcjtcbiAgICAgICAgbGVuZ3RoID0gJ2xlbmd0aCcgaW4gb3B0aW9ucyA/IHRvSW50ZWdlcihvcHRpb25zLmxlbmd0aCkgOiBsZW5ndGg7XG4gICAgICAgIG9taXNzaW9uID0gJ29taXNzaW9uJyBpbiBvcHRpb25zID8gYmFzZVRvU3RyaW5nKG9wdGlvbnMub21pc3Npb24pIDogb21pc3Npb247XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIGlmIChoYXNVbmljb2RlKHN0cmluZykpIHtcbiAgICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyk7XG4gICAgICAgIHN0ckxlbmd0aCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgaWYgKGxlbmd0aCA+PSBzdHJMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBlbmQgPSBsZW5ndGggLSBzdHJpbmdTaXplKG9taXNzaW9uKTtcbiAgICAgIGlmIChlbmQgPCAxKSB7XG4gICAgICAgIHJldHVybiBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBzdHJTeW1ib2xzXG4gICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJylcbiAgICAgICAgOiBzdHJpbmcuc2xpY2UoMCwgZW5kKTtcblxuICAgICAgaWYgKHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQgKyBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIGlmIChzdHJTeW1ib2xzKSB7XG4gICAgICAgIGVuZCArPSAocmVzdWx0Lmxlbmd0aCAtIGVuZCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNSZWdFeHAoc2VwYXJhdG9yKSkge1xuICAgICAgICBpZiAoc3RyaW5nLnNsaWNlKGVuZCkuc2VhcmNoKHNlcGFyYXRvcikpIHtcbiAgICAgICAgICB2YXIgbWF0Y2gsXG4gICAgICAgICAgICAgIHN1YnN0cmluZyA9IHJlc3VsdDtcblxuICAgICAgICAgIGlmICghc2VwYXJhdG9yLmdsb2JhbCkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIHRvU3RyaW5nKHJlRmxhZ3MuZXhlYyhzZXBhcmF0b3IpKSArICdnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzZXBhcmF0b3IuZXhlYyhzdWJzdHJpbmcpKSkge1xuICAgICAgICAgICAgdmFyIG5ld0VuZCA9IG1hdGNoLmluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgbmV3RW5kID09PSB1bmRlZmluZWQgPyBlbmQgOiBuZXdFbmQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHN0cmluZy5pbmRleE9mKGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpLCBlbmQpICE9IGVuZCkge1xuICAgICAgICB2YXIgaW5kZXggPSByZXN1bHQubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgYF8uZXNjYXBlYDsgdGhpcyBtZXRob2QgY29udmVydHMgdGhlIEhUTUwgZW50aXRpZXNcbiAgICAgKiBgJmFtcDtgLCBgJmx0O2AsIGAmZ3Q7YCwgYCZxdW90O2AsIGFuZCBgJiMzOTtgIGluIGBzdHJpbmdgIHRvXG4gICAgICogdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vIG90aGVyIEhUTUwgZW50aXRpZXMgYXJlIHVuZXNjYXBlZC4gVG8gdW5lc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIEhUTUwgZW50aXRpZXMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNi4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICdmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmVzY2FwZShzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc0VzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZUVzY2FwZWRIdG1sLCB1bmVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdXBwZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnLS1mb28tYmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnX19mb29fYmFyX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICpcbiAgICAgKiBfLnVwcGVyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRlJFRCdcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9VcHBlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFNwbGl0cyBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gW3BhdHRlcm5dIFRoZSBwYXR0ZXJuIHRvIG1hdGNoIHdvcmRzLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnLCAvW14sIF0rL2cpO1xuICAgICAqIC8vID0+IFsnZnJlZCcsICdiYXJuZXknLCAnJicsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3b3JkcyhzdHJpbmcsIHBhdHRlcm4sIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcGF0dGVybiA9IGd1YXJkID8gdW5kZWZpbmVkIDogcGF0dGVybjtcblxuICAgICAgaWYgKHBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSA/IHVuaWNvZGVXb3JkcyhzdHJpbmcpIDogYXNjaWlXb3JkcyhzdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZy5tYXRjaChwYXR0ZXJuKSB8fCBbXTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICAgICAqIG9iamVjdC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGF0dGVtcHQuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICAgICAqIHZhciBlbGVtZW50cyA9IF8uYXR0ZW1wdChmdW5jdGlvbihzZWxlY3Rvcikge1xuICAgICAqICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgICAqIH0sICc+Xz4nKTtcbiAgICAgKlxuICAgICAqIGlmIChfLmlzRXJyb3IoZWxlbWVudHMpKSB7XG4gICAgICogICBlbGVtZW50cyA9IFtdO1xuICAgICAqIH1cbiAgICAgKi9cbiAgICB2YXIgYXR0ZW1wdCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gaXNFcnJvcihlKSA/IGUgOiBuZXcgRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBCaW5kcyBtZXRob2RzIG9mIGFuIG9iamVjdCB0byB0aGUgb2JqZWN0IGl0c2VsZiwgb3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nXG4gICAgICogbWV0aG9kLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGJpbmQgYW5kIGFzc2lnbiB0aGUgYm91bmQgbWV0aG9kcyB0by5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBtZXRob2ROYW1lcyBUaGUgb2JqZWN0IG1ldGhvZCBuYW1lcyB0byBiaW5kLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB2aWV3ID0ge1xuICAgICAqICAgJ2xhYmVsJzogJ2RvY3MnLFxuICAgICAqICAgJ2NsaWNrJzogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdjbGlja2VkICcgKyB0aGlzLmxhYmVsKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5iaW5kQWxsKHZpZXcsIFsnY2xpY2snXSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHZpZXcuY2xpY2spO1xuICAgICAqIC8vID0+IExvZ3MgJ2NsaWNrZWQgZG9jcycgd2hlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIHZhciBiaW5kQWxsID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBtZXRob2ROYW1lcykge1xuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAga2V5ID0gdG9LZXkoa2V5KTtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBiaW5kKG9iamVjdFtrZXldLCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGl0ZXJhdGVzIG92ZXIgYHBhaXJzYCBhbmQgaW52b2tlcyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAqIGZ1bmN0aW9uIG9mIHRoZSBmaXJzdCBwcmVkaWNhdGUgdG8gcmV0dXJuIHRydXRoeS4gVGhlIHByZWRpY2F0ZS1mdW5jdGlvblxuICAgICAqIHBhaXJzIGFyZSBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIHByZWRpY2F0ZS1mdW5jdGlvbiBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5jb25kKFtcbiAgICAgKiAgIFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksICAgICAgICAgICBfLmNvbnN0YW50KCdtYXRjaGVzIEEnKV0sXG4gICAgICogICBbXy5jb25mb3Jtcyh7ICdiJzogXy5pc051bWJlciB9KSwgXy5jb25zdGFudCgnbWF0Y2hlcyBCJyldLFxuICAgICAqICAgW18uc3R1YlRydWUsICAgICAgICAgICAgICAgICAgICAgIF8uY29uc3RhbnQoJ25vIG1hdGNoJyldXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQSdcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6IDAsICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiAnbWF0Y2hlcyBCJ1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogJzEnLCAnYic6ICcyJyB9KTtcbiAgICAgKiAvLyA9PiAnbm8gbWF0Y2gnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZChwYWlycykge1xuICAgICAgdmFyIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHRvSXRlcmF0ZWUgPSBnZXRJdGVyYXRlZSgpO1xuXG4gICAgICBwYWlycyA9ICFsZW5ndGggPyBbXSA6IGFycmF5TWFwKHBhaXJzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFpclsxXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdG9JdGVyYXRlZShwYWlyWzBdKSwgcGFpclsxXV07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgICAgaWYgKGFwcGx5KHBhaXJbMF0sIHRoaXMsIGFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHkocGFpclsxXSwgdGhpcywgYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBwcmVkaWNhdGUgcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoXG4gICAgICogdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGEgZ2l2ZW4gb2JqZWN0LCByZXR1cm5pbmcgYHRydWVgIGlmXG4gICAgICogYWxsIHByZWRpY2F0ZXMgcmV0dXJuIHRydXRoeSwgZWxzZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoZSBjcmVhdGVkIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNUb2Agd2l0aFxuICAgICAqIGBzb3VyY2VgIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IDIsICdiJzogMSB9LFxuICAgICAqICAgeyAnYSc6IDEsICdiJzogMiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8uY29uZm9ybXMoeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIGJhc2VDb25mb3JtcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGB2YWx1ZWAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBpblxuICAgICAqIGl0cyBwbGFjZS4gVGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGBudWxsYCxcbiAgICAgKiBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIFRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0VG8oMSwgMTApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKHVuZGVmaW5lZCwgMTApO1xuICAgICAqIC8vID0+IDEwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVmYXVsdFRvKHZhbHVlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUpID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGludm9raW5nIHRoZSBnaXZlbiBmdW5jdGlvbnNcbiAgICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93UmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93KFtfLmFkZCwgc3F1YXJlXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvdyA9IGNyZWF0ZUZsb3coKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxvd2AgZXhjZXB0IHRoYXQgaXQgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXRcbiAgICAgKiBpbnZva2VzIHRoZSBnaXZlbiBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2Z1bmNzXSBUaGUgZnVuY3Rpb25zIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQHNlZSBfLmZsb3dcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93UmlnaHQoW3NxdWFyZSwgXy5hZGRdKTtcbiAgICAgKiBhZGRTcXVhcmUoMSwgMik7XG4gICAgICogLy8gPT4gOVxuICAgICAqL1xuICAgIHZhciBmbG93UmlnaHQgPSBjcmVhdGVGbG93KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGFyZ3VtZW50cyBvZiB0aGUgY3JlYXRlZFxuICAgICAqIGZ1bmN0aW9uLiBJZiBgZnVuY2AgaXMgYSBwcm9wZXJ0eSBuYW1lLCB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm5zIHRoZVxuICAgICAqIHByb3BlcnR5IHZhbHVlIGZvciBhIGdpdmVuIGVsZW1lbnQuIElmIGBmdW5jYCBpcyBhbiBhcnJheSBvciBvYmplY3QsIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgZm9yIGVsZW1lbnRzIHRoYXQgY29udGFpbiB0aGUgZXF1aXZhbGVudFxuICAgICAqIHNvdXJjZSBwcm9wZXJ0aWVzLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IFtmdW5jPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGEgY2FsbGJhY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjYWxsYmFjay5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgXy5pdGVyYXRlZSh7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoWyd1c2VyJywgJ2ZyZWQnXSkpO1xuICAgICAqIC8vID0+IFt7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwKHVzZXJzLCBfLml0ZXJhdGVlKCd1c2VyJykpO1xuICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gQ3JlYXRlIGN1c3RvbSBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqIF8uaXRlcmF0ZWUgPSBfLndyYXAoXy5pdGVyYXRlZSwgZnVuY3Rpb24oaXRlcmF0ZWUsIGZ1bmMpIHtcbiAgICAgKiAgIHJldHVybiAhXy5pc1JlZ0V4cChmdW5jKSA/IGl0ZXJhdGVlKGZ1bmMpIDogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICogICAgIHJldHVybiBmdW5jLnRlc3Qoc3RyaW5nKTtcbiAgICAgKiAgIH07XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbJ2FiYycsICdkZWYnXSwgL2VmLyk7XG4gICAgICogLy8gPT4gWydkZWYnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGl0ZXJhdGVlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodHlwZW9mIGZ1bmMgPT0gJ2Z1bmN0aW9uJyA/IGZ1bmMgOiBiYXNlQ2xvbmUoZnVuYywgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGEgZ2l2ZW5cbiAgICAgKiBvYmplY3QgYW5kIGBzb3VyY2VgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZSBnaXZlbiBvYmplY3QgaGFzIGVxdWl2YWxlbnRcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmlzTWF0Y2hgIHdpdGggYHNvdXJjZWBcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5tYXRjaGVzKHsgJ2EnOiA0LCAnYyc6IDYgfSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXRjaGVzKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIGJhc2VNYXRjaGVzKGJhc2VDbG9uZShzb3VyY2UsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0aGVcbiAgICAgKiB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QgdG8gYHNyY1ZhbHVlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGVcbiAgICAgKiBvYmplY3QgdmFsdWUgaXMgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0XG4gICAgICogYHNyY1ZhbHVlYCB2YWx1ZXMgYWdhaW5zdCBhbnkgYXJyYXkgb3Igb2JqZWN0IHZhbHVlLCByZXNwZWN0aXZlbHkuIFNlZVxuICAgICAqIGBfLmlzRXF1YWxgIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sXG4gICAgICogICB7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmQob2JqZWN0cywgXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCA0KSk7XG4gICAgICogLy8gPT4geyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIGJhc2VDbG9uZShzcmNWYWx1ZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludm9rZXIgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IHsgJ2InOiBfLmNvbnN0YW50KDIpIH0gfSxcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogXy5jb25zdGFudCgxKSB9IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5tYXAob2JqZWN0cywgXy5tZXRob2QoJ2EuYicpKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ubWV0aG9kKFsnYScsICdiJ10pKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICB2YXIgbWV0aG9kID0gYmFzZVJlc3QoZnVuY3Rpb24ocGF0aCwgYXJncykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5tZXRob2RgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzXG4gICAgICogdGhlIG1ldGhvZCBhdCBhIGdpdmVuIHBhdGggb2YgYG9iamVjdGAuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmVcbiAgICAgKiBwcm92aWRlZCB0byB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52b2tlciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gXy50aW1lcygzLCBfLmNvbnN0YW50KSxcbiAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICpcbiAgICAgKiBfLm1hcChbJ2FbMl0nLCAnY1swXSddLCBfLm1ldGhvZE9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqXG4gICAgICogXy5tYXAoW1snYScsICcyJ10sIFsnYycsICcwJ11dLCBfLm1ldGhvZE9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqL1xuICAgIHZhciBtZXRob2RPZiA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgYXJncykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGFsbCBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgZnVuY3Rpb24gcHJvcGVydGllcyBvZiBhIHNvdXJjZVxuICAgICAqIG9iamVjdCB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0LiBJZiBgb2JqZWN0YCBpcyBhIGZ1bmN0aW9uLCB0aGVuIG1ldGhvZHNcbiAgICAgKiBhcmUgYWRkZWQgdG8gaXRzIHByb3RvdHlwZSBhcyB3ZWxsLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVzZSBgXy5ydW5JbkNvbnRleHRgIHRvIGNyZWF0ZSBhIHByaXN0aW5lIGBsb2Rhc2hgIGZ1bmN0aW9uIHRvXG4gICAgICogYXZvaWQgY29uZmxpY3RzIGNhdXNlZCBieSBtb2RpZnlpbmcgdGhlIG9yaWdpbmFsLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufE9iamVjdH0gW29iamVjdD1sb2Rhc2hdIFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIGZ1bmN0aW9ucyB0byBhZGQuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jaGFpbj10cnVlXSBTcGVjaWZ5IHdoZXRoZXIgbWl4aW5zIGFyZSBjaGFpbmFibGUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufE9iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gdm93ZWxzKHN0cmluZykge1xuICAgICAqICAgcmV0dXJuIF8uZmlsdGVyKHN0cmluZywgZnVuY3Rpb24odikge1xuICAgICAqICAgICByZXR1cm4gL1thZWlvdV0vaS50ZXN0KHYpO1xuICAgICAqICAgfSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5taXhpbih7ICd2b3dlbHMnOiB2b3dlbHMgfSk7XG4gICAgICogXy52b3dlbHMoJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqXG4gICAgICogXygnZnJlZCcpLnZvd2VscygpLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKlxuICAgICAqIF8ubWl4aW4oeyAndm93ZWxzJzogdm93ZWxzIH0sIHsgJ2NoYWluJzogZmFsc2UgfSk7XG4gICAgICogXygnZnJlZCcpLnZvd2VscygpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWl4aW4ob2JqZWN0LCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBwcm9wcyA9IGtleXMoc291cmNlKSxcbiAgICAgICAgICBtZXRob2ROYW1lcyA9IGJhc2VGdW5jdGlvbnMoc291cmNlLCBwcm9wcyk7XG5cbiAgICAgIGlmIChvcHRpb25zID09IG51bGwgJiZcbiAgICAgICAgICAhKGlzT2JqZWN0KHNvdXJjZSkgJiYgKG1ldGhvZE5hbWVzLmxlbmd0aCB8fCAhcHJvcHMubGVuZ3RoKSkpIHtcbiAgICAgICAgb3B0aW9ucyA9IHNvdXJjZTtcbiAgICAgICAgc291cmNlID0gb2JqZWN0O1xuICAgICAgICBvYmplY3QgPSB0aGlzO1xuICAgICAgICBtZXRob2ROYW1lcyA9IGJhc2VGdW5jdGlvbnMoc291cmNlLCBrZXlzKHNvdXJjZSkpO1xuICAgICAgfVxuICAgICAgdmFyIGNoYWluID0gIShpc09iamVjdChvcHRpb25zKSAmJiAnY2hhaW4nIGluIG9wdGlvbnMpIHx8ICEhb3B0aW9ucy5jaGFpbixcbiAgICAgICAgICBpc0Z1bmMgPSBpc0Z1bmN0aW9uKG9iamVjdCk7XG5cbiAgICAgIGFycmF5RWFjaChtZXRob2ROYW1lcywgZnVuY3Rpb24obWV0aG9kTmFtZSkge1xuICAgICAgICB2YXIgZnVuYyA9IHNvdXJjZVttZXRob2ROYW1lXTtcbiAgICAgICAgb2JqZWN0W21ldGhvZE5hbWVdID0gZnVuYztcbiAgICAgICAgaWYgKGlzRnVuYykge1xuICAgICAgICAgIG9iamVjdC5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBjaGFpbkFsbCA9IHRoaXMuX19jaGFpbl9fO1xuICAgICAgICAgICAgaWYgKGNoYWluIHx8IGNoYWluQWxsKSB7XG4gICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvYmplY3QodGhpcy5fX3dyYXBwZWRfXyksXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zID0gcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHRoaXMuX19hY3Rpb25zX18pO1xuXG4gICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7ICdmdW5jJzogZnVuYywgJ2FyZ3MnOiBhcmd1bWVudHMsICd0aGlzQXJnJzogb2JqZWN0IH0pO1xuICAgICAgICAgICAgICByZXN1bHQuX19jaGFpbl9fID0gY2hhaW5BbGw7XG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShvYmplY3QsIGFycmF5UHVzaChbdGhpcy52YWx1ZSgpXSwgYXJndW1lbnRzKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJ0cyB0aGUgYF9gIHZhcmlhYmxlIHRvIGl0cyBwcmV2aW91cyB2YWx1ZSBhbmQgcmV0dXJucyBhIHJlZmVyZW5jZSB0b1xuICAgICAqIHRoZSBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGxvZGFzaCA9IF8ubm9Db25mbGljdCgpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vQ29uZmxpY3QoKSB7XG4gICAgICBpZiAocm9vdC5fID09PSB0aGlzKSB7XG4gICAgICAgIHJvb3QuXyA9IG9sZERhc2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLm5vb3ApO1xuICAgICAqIC8vID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub29wKCkge1xuICAgICAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBhcmd1bWVudCBhdCBpbmRleCBgbmAuIElmIGBuYCBpcyBuZWdhdGl2ZSxcbiAgICAgKiB0aGUgbnRoIGFyZ3VtZW50IGZyb20gdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTBdIFRoZSBpbmRleCBvZiB0aGUgYXJndW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhc3MtdGhydSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm50aEFyZygxKTtcbiAgICAgKiBmdW5jKCdhJywgJ2InLCAnYycsICdkJyk7XG4gICAgICogLy8gPT4gJ2InXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ubnRoQXJnKC0yKTtcbiAgICAgKiBmdW5jKCdhJywgJ2InLCAnYycsICdkJyk7XG4gICAgICogLy8gPT4gJ2MnXG4gICAgICovXG4gICAgZnVuY3Rpb24gbnRoQXJnKG4pIHtcbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICByZXR1cm4gYmFzZU50aChhcmdzLCBuKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGl0ZXJhdGVlc2Agd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzXG4gICAgICogYW5kIHJldHVybnMgdGhlaXIgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXIoW01hdGgubWF4LCBNYXRoLm1pbl0pO1xuICAgICAqXG4gICAgICogZnVuYygxLCAyLCAzLCA0KTtcbiAgICAgKiAvLyA9PiBbNCwgMV1cbiAgICAgKi9cbiAgICB2YXIgb3ZlciA9IGNyZWF0ZU92ZXIoYXJyYXlNYXApO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmICoqYWxsKiogb2YgdGhlIGBwcmVkaWNhdGVzYCByZXR1cm5cbiAgICAgKiB0cnV0aHkgd2hlbiBpbnZva2VkIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyRXZlcnkoW0Jvb2xlYW4sIGlzRmluaXRlXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKCcxJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIG92ZXJFdmVyeSA9IGNyZWF0ZU92ZXIoYXJyYXlFdmVyeSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbnkqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJTb21lKFtCb29sZWFuLCBpc0Zpbml0ZV0pO1xuICAgICAqXG4gICAgICogZnVuYygnMScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIG92ZXJTb21lID0gY3JlYXRlT3ZlcihhcnJheVNvbWUpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKlxuICAgICAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICAgICAgcmV0dXJuIGlzS2V5KHBhdGgpID8gYmFzZVByb3BlcnR5KHRvS2V5KHBhdGgpKSA6IGJhc2VQcm9wZXJ0eURlZXAocGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnByb3BlcnR5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJuc1xuICAgICAqIHRoZSB2YWx1ZSBhdCBhIGdpdmVuIHBhdGggb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzAsIDEsIDJdLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5wcm9wZXJ0eU9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbnVtYmVycyAocG9zaXRpdmUgYW5kL29yIG5lZ2F0aXZlKSBwcm9ncmVzc2luZyBmcm9tXG4gICAgICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAgICAgKiBgc3RhcnRgIGlzIHNwZWNpZmllZCB3aXRob3V0IGFuIGBlbmRgIG9yIGBzdGVwYC4gSWYgYGVuZGAgaXMgbm90IHNwZWNpZmllZCxcbiAgICAgKiBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGVwPTFdIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoNCk7XG4gICAgICogLy8gPT4gWzAsIDEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKC00KTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDRdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAgICAgKiAvLyA9PiBbMCwgNSwgMTAsIDE1XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICB2YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yYW5nZWAgZXhjZXB0IHRoYXQgaXQgcG9wdWxhdGVzIHZhbHVlcyBpblxuICAgICAqIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDQpO1xuICAgICAqIC8vID0+IFszLCAyLCAxLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KC00KTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA1KTtcbiAgICAgKiAvLyA9PiBbNCwgMywgMiwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzE1LCAxMCwgNSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFstMywgLTIsIC0xLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDEsIDQsIDApO1xuICAgICAqIC8vID0+IFsxLCAxLCAxXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlUmlnaHQgPSBjcmVhdGVSYW5nZSh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAgICAgKiAvLyA9PiBbW10sIFtdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICAgICAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uc3R1Yk9iamVjdCk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbe30sIHt9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViT2JqZWN0KCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlN0cmluZyk7XG4gICAgICogLy8gPT4gWycnLCAnJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlRydWUpO1xuICAgICAqIC8vID0+IFt0cnVlLCB0cnVlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJUcnVlKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAgICAgKiBlYWNoIGludm9jYXRpb24uIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAoaW5kZXgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygzLCBTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJywgJzInXVxuICAgICAqXG4gICAgICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gICAgICogLy8gPT4gWzAsIDAsIDAsIDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICBpZiAobiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gTUFYX0FSUkFZX0xFTkdUSCxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4obiwgTUFYX0FSUkFZX0xFTkdUSCk7XG5cbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUpO1xuICAgICAgbiAtPSBNQVhfQVJSQVlfTEVOR1RIO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVRpbWVzKGxlbmd0aCwgaXRlcmF0ZWUpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICAgIGl0ZXJhdGVlKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2EuYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvUGF0aCgnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnMCcsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvUGF0aCh2YWx1ZSkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgdG9LZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzU3ltYm9sKHZhbHVlKSA/IFt2YWx1ZV0gOiBjb3B5QXJyYXkoc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRC4gSWYgYHByZWZpeGAgaXMgZ2l2ZW4sIHRoZSBJRCBpcyBhcHBlbmRlZCB0byBpdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtwcmVmaXg9JyddIFRoZSB2YWx1ZSB0byBwcmVmaXggdGhlIElEIHdpdGguXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5pcXVlIElELlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCdjb250YWN0XycpO1xuICAgICAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAgICAgKlxuICAgICAqIF8udW5pcXVlSWQoKTtcbiAgICAgKiAvLyA9PiAnMTA1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICAgICAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gICAgICByZXR1cm4gdG9TdHJpbmcocHJlZml4KSArIGlkO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdWdlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYWRkZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGFuIGFkZGl0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRvdGFsLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmFkZCg2LCA0KTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIHZhciBhZGQgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGF1Z2VuZCwgYWRkZW5kKSB7XG4gICAgICByZXR1cm4gYXVnZW5kICsgYWRkZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB1cCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCB1cC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHVwIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgdXAgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNlaWwoNC4wMDYpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2LjAwNCwgMik7XG4gICAgICogLy8gPT4gNi4wMVxuICAgICAqXG4gICAgICogXy5jZWlsKDYwNDAsIC0yKTtcbiAgICAgKiAvLyA9PiA2MTAwXG4gICAgICovXG4gICAgdmFyIGNlaWwgPSBjcmVhdGVSb3VuZCgnY2VpbCcpO1xuXG4gICAgLyoqXG4gICAgICogRGl2aWRlIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aWRlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkaXZpc29yIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgZGl2aXNpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcXVvdGllbnQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGl2aWRlKDYsIDQpO1xuICAgICAqIC8vID0+IDEuNVxuICAgICAqL1xuICAgIHZhciBkaXZpZGUgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGRpdmlkZW5kLCBkaXZpc29yKSB7XG4gICAgICByZXR1cm4gZGl2aWRlbmQgLyBkaXZpc29yO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCBkb3duIHRvIGBwcmVjaXNpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIHJvdW5kIGRvd24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCBkb3duIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgZG93biBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNC4wMDYpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoMC4wNDYsIDIpO1xuICAgICAqIC8vID0+IDAuMDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNDA2MCwgLTIpO1xuICAgICAqIC8vID0+IDQwMDBcbiAgICAgKi9cbiAgICB2YXIgZmxvb3IgPSBjcmVhdGVSb3VuZCgnZmxvb3InKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1heChbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWF4KFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXgoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tYXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5tYXhCeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4QnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUd0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWVhbiBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tZWFuKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgaWRlbnRpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVhbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIHZhbHVlIHRvIGJlIGF2ZXJhZ2VkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogNCB9LCB7ICduJzogMiB9LCB7ICduJzogOCB9LCB7ICduJzogNiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tZWFuQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVhbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VNZWFuKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1pbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIF8ubWluKFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5taW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5taW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAxIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNdWx0aXBseSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG11bHRpcGxpZXIgVGhlIGZpcnN0IG51bWJlciBpbiBhIG11bHRpcGxpY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWNhbmQgVGhlIHNlY29uZCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwcm9kdWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm11bHRpcGx5KDYsIDQpO1xuICAgICAqIC8vID0+IDI0XG4gICAgICovXG4gICAgdmFyIG11bHRpcGx5ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtdWx0aXBsaWVyLCBtdWx0aXBsaWNhbmQpIHtcbiAgICAgIHJldHVybiBtdWx0aXBsaWVyICogbXVsdGlwbGljYW5kO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2LCAyKTtcbiAgICAgKiAvLyA9PiA0LjAxXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MTAwXG4gICAgICovXG4gICAgdmFyIHJvdW5kID0gY3JlYXRlUm91bmQoJ3JvdW5kJyk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJ0cmFjdCB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbnVlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJ0cmFoZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgc3VidHJhY3Rpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgZGlmZmVyZW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdWJ0cmFjdCg2LCA0KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgdmFyIHN1YnRyYWN0ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtaW51ZW5kLCBzdWJ0cmFoZW5kKSB7XG4gICAgICByZXR1cm4gbWludWVuZCAtIHN1YnRyYWhlbmQ7XG4gICAgfSwgMCk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgaW4gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjQuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VtKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW0oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGlkZW50aXR5KVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zdW1gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBzdW1tZWQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc3VtQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN1bUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVN1bShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdGhhdCByZXR1cm4gd3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZnRlciA9IGFmdGVyO1xuICAgIGxvZGFzaC5hcnkgPSBhcnk7XG4gICAgbG9kYXNoLmFzc2lnbiA9IGFzc2lnbjtcbiAgICBsb2Rhc2guYXNzaWduSW4gPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guYXNzaWduSW5XaXRoID0gYXNzaWduSW5XaXRoO1xuICAgIGxvZGFzaC5hc3NpZ25XaXRoID0gYXNzaWduV2l0aDtcbiAgICBsb2Rhc2guYXQgPSBhdDtcbiAgICBsb2Rhc2guYmVmb3JlID0gYmVmb3JlO1xuICAgIGxvZGFzaC5iaW5kID0gYmluZDtcbiAgICBsb2Rhc2guYmluZEFsbCA9IGJpbmRBbGw7XG4gICAgbG9kYXNoLmJpbmRLZXkgPSBiaW5kS2V5O1xuICAgIGxvZGFzaC5jYXN0QXJyYXkgPSBjYXN0QXJyYXk7XG4gICAgbG9kYXNoLmNoYWluID0gY2hhaW47XG4gICAgbG9kYXNoLmNodW5rID0gY2h1bms7XG4gICAgbG9kYXNoLmNvbXBhY3QgPSBjb21wYWN0O1xuICAgIGxvZGFzaC5jb25jYXQgPSBjb25jYXQ7XG4gICAgbG9kYXNoLmNvbmQgPSBjb25kO1xuICAgIGxvZGFzaC5jb25mb3JtcyA9IGNvbmZvcm1zO1xuICAgIGxvZGFzaC5jb25zdGFudCA9IGNvbnN0YW50O1xuICAgIGxvZGFzaC5jb3VudEJ5ID0gY291bnRCeTtcbiAgICBsb2Rhc2guY3JlYXRlID0gY3JlYXRlO1xuICAgIGxvZGFzaC5jdXJyeSA9IGN1cnJ5O1xuICAgIGxvZGFzaC5jdXJyeVJpZ2h0ID0gY3VycnlSaWdodDtcbiAgICBsb2Rhc2guZGVib3VuY2UgPSBkZWJvdW5jZTtcbiAgICBsb2Rhc2guZGVmYXVsdHMgPSBkZWZhdWx0cztcbiAgICBsb2Rhc2guZGVmYXVsdHNEZWVwID0gZGVmYXVsdHNEZWVwO1xuICAgIGxvZGFzaC5kZWZlciA9IGRlZmVyO1xuICAgIGxvZGFzaC5kZWxheSA9IGRlbGF5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlID0gZGlmZmVyZW5jZTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZUJ5ID0gZGlmZmVyZW5jZUJ5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlV2l0aCA9IGRpZmZlcmVuY2VXaXRoO1xuICAgIGxvZGFzaC5kcm9wID0gZHJvcDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0ID0gZHJvcFJpZ2h0O1xuICAgIGxvZGFzaC5kcm9wUmlnaHRXaGlsZSA9IGRyb3BSaWdodFdoaWxlO1xuICAgIGxvZGFzaC5kcm9wV2hpbGUgPSBkcm9wV2hpbGU7XG4gICAgbG9kYXNoLmZpbGwgPSBmaWxsO1xuICAgIGxvZGFzaC5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgbG9kYXNoLmZsYXRNYXAgPSBmbGF0TWFwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVlcCA9IGZsYXRNYXBEZWVwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVwdGggPSBmbGF0TWFwRGVwdGg7XG4gICAgbG9kYXNoLmZsYXR0ZW4gPSBmbGF0dGVuO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVlcCA9IGZsYXR0ZW5EZWVwO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVwdGggPSBmbGF0dGVuRGVwdGg7XG4gICAgbG9kYXNoLmZsaXAgPSBmbGlwO1xuICAgIGxvZGFzaC5mbG93ID0gZmxvdztcbiAgICBsb2Rhc2guZmxvd1JpZ2h0ID0gZmxvd1JpZ2h0O1xuICAgIGxvZGFzaC5mcm9tUGFpcnMgPSBmcm9tUGFpcnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9ucyA9IGZ1bmN0aW9ucztcbiAgICBsb2Rhc2guZnVuY3Rpb25zSW4gPSBmdW5jdGlvbnNJbjtcbiAgICBsb2Rhc2guZ3JvdXBCeSA9IGdyb3VwQnk7XG4gICAgbG9kYXNoLmluaXRpYWwgPSBpbml0aWFsO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3Rpb247XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbkJ5ID0gaW50ZXJzZWN0aW9uQnk7XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbldpdGggPSBpbnRlcnNlY3Rpb25XaXRoO1xuICAgIGxvZGFzaC5pbnZlcnQgPSBpbnZlcnQ7XG4gICAgbG9kYXNoLmludmVydEJ5ID0gaW52ZXJ0Qnk7XG4gICAgbG9kYXNoLmludm9rZU1hcCA9IGludm9rZU1hcDtcbiAgICBsb2Rhc2guaXRlcmF0ZWUgPSBpdGVyYXRlZTtcbiAgICBsb2Rhc2gua2V5QnkgPSBrZXlCeTtcbiAgICBsb2Rhc2gua2V5cyA9IGtleXM7XG4gICAgbG9kYXNoLmtleXNJbiA9IGtleXNJbjtcbiAgICBsb2Rhc2gubWFwID0gbWFwO1xuICAgIGxvZGFzaC5tYXBLZXlzID0gbWFwS2V5cztcbiAgICBsb2Rhc2gubWFwVmFsdWVzID0gbWFwVmFsdWVzO1xuICAgIGxvZGFzaC5tYXRjaGVzID0gbWF0Y2hlcztcbiAgICBsb2Rhc2gubWF0Y2hlc1Byb3BlcnR5ID0gbWF0Y2hlc1Byb3BlcnR5O1xuICAgIGxvZGFzaC5tZW1vaXplID0gbWVtb2l6ZTtcbiAgICBsb2Rhc2gubWVyZ2UgPSBtZXJnZTtcbiAgICBsb2Rhc2gubWVyZ2VXaXRoID0gbWVyZ2VXaXRoO1xuICAgIGxvZGFzaC5tZXRob2QgPSBtZXRob2Q7XG4gICAgbG9kYXNoLm1ldGhvZE9mID0gbWV0aG9kT2Y7XG4gICAgbG9kYXNoLm1peGluID0gbWl4aW47XG4gICAgbG9kYXNoLm5lZ2F0ZSA9IG5lZ2F0ZTtcbiAgICBsb2Rhc2gubnRoQXJnID0gbnRoQXJnO1xuICAgIGxvZGFzaC5vbWl0ID0gb21pdDtcbiAgICBsb2Rhc2gub21pdEJ5ID0gb21pdEJ5O1xuICAgIGxvZGFzaC5vbmNlID0gb25jZTtcbiAgICBsb2Rhc2gub3JkZXJCeSA9IG9yZGVyQnk7XG4gICAgbG9kYXNoLm92ZXIgPSBvdmVyO1xuICAgIGxvZGFzaC5vdmVyQXJncyA9IG92ZXJBcmdzO1xuICAgIGxvZGFzaC5vdmVyRXZlcnkgPSBvdmVyRXZlcnk7XG4gICAgbG9kYXNoLm92ZXJTb21lID0gb3ZlclNvbWU7XG4gICAgbG9kYXNoLnBhcnRpYWwgPSBwYXJ0aWFsO1xuICAgIGxvZGFzaC5wYXJ0aWFsUmlnaHQgPSBwYXJ0aWFsUmlnaHQ7XG4gICAgbG9kYXNoLnBhcnRpdGlvbiA9IHBhcnRpdGlvbjtcbiAgICBsb2Rhc2gucGljayA9IHBpY2s7XG4gICAgbG9kYXNoLnBpY2tCeSA9IHBpY2tCeTtcbiAgICBsb2Rhc2gucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICBsb2Rhc2gucHJvcGVydHlPZiA9IHByb3BlcnR5T2Y7XG4gICAgbG9kYXNoLnB1bGwgPSBwdWxsO1xuICAgIGxvZGFzaC5wdWxsQWxsID0gcHVsbEFsbDtcbiAgICBsb2Rhc2gucHVsbEFsbEJ5ID0gcHVsbEFsbEJ5O1xuICAgIGxvZGFzaC5wdWxsQWxsV2l0aCA9IHB1bGxBbGxXaXRoO1xuICAgIGxvZGFzaC5wdWxsQXQgPSBwdWxsQXQ7XG4gICAgbG9kYXNoLnJhbmdlID0gcmFuZ2U7XG4gICAgbG9kYXNoLnJhbmdlUmlnaHQgPSByYW5nZVJpZ2h0O1xuICAgIGxvZGFzaC5yZWFyZyA9IHJlYXJnO1xuICAgIGxvZGFzaC5yZWplY3QgPSByZWplY3Q7XG4gICAgbG9kYXNoLnJlbW92ZSA9IHJlbW92ZTtcbiAgICBsb2Rhc2gucmVzdCA9IHJlc3Q7XG4gICAgbG9kYXNoLnJldmVyc2UgPSByZXZlcnNlO1xuICAgIGxvZGFzaC5zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTtcbiAgICBsb2Rhc2guc2V0ID0gc2V0O1xuICAgIGxvZGFzaC5zZXRXaXRoID0gc2V0V2l0aDtcbiAgICBsb2Rhc2guc2h1ZmZsZSA9IHNodWZmbGU7XG4gICAgbG9kYXNoLnNsaWNlID0gc2xpY2U7XG4gICAgbG9kYXNoLnNvcnRCeSA9IHNvcnRCeTtcbiAgICBsb2Rhc2guc29ydGVkVW5pcSA9IHNvcnRlZFVuaXE7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXFCeSA9IHNvcnRlZFVuaXFCeTtcbiAgICBsb2Rhc2guc3BsaXQgPSBzcGxpdDtcbiAgICBsb2Rhc2guc3ByZWFkID0gc3ByZWFkO1xuICAgIGxvZGFzaC50YWlsID0gdGFpbDtcbiAgICBsb2Rhc2gudGFrZSA9IHRha2U7XG4gICAgbG9kYXNoLnRha2VSaWdodCA9IHRha2VSaWdodDtcbiAgICBsb2Rhc2gudGFrZVJpZ2h0V2hpbGUgPSB0YWtlUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2gudGFrZVdoaWxlID0gdGFrZVdoaWxlO1xuICAgIGxvZGFzaC50YXAgPSB0YXA7XG4gICAgbG9kYXNoLnRocm90dGxlID0gdGhyb3R0bGU7XG4gICAgbG9kYXNoLnRocnUgPSB0aHJ1O1xuICAgIGxvZGFzaC50b0FycmF5ID0gdG9BcnJheTtcbiAgICBsb2Rhc2gudG9QYWlycyA9IHRvUGFpcnM7XG4gICAgbG9kYXNoLnRvUGFpcnNJbiA9IHRvUGFpcnNJbjtcbiAgICBsb2Rhc2gudG9QYXRoID0gdG9QYXRoO1xuICAgIGxvZGFzaC50b1BsYWluT2JqZWN0ID0gdG9QbGFpbk9iamVjdDtcbiAgICBsb2Rhc2gudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIGxvZGFzaC51bmFyeSA9IHVuYXJ5O1xuICAgIGxvZGFzaC51bmlvbiA9IHVuaW9uO1xuICAgIGxvZGFzaC51bmlvbkJ5ID0gdW5pb25CeTtcbiAgICBsb2Rhc2gudW5pb25XaXRoID0gdW5pb25XaXRoO1xuICAgIGxvZGFzaC51bmlxID0gdW5pcTtcbiAgICBsb2Rhc2gudW5pcUJ5ID0gdW5pcUJ5O1xuICAgIGxvZGFzaC51bmlxV2l0aCA9IHVuaXFXaXRoO1xuICAgIGxvZGFzaC51bnNldCA9IHVuc2V0O1xuICAgIGxvZGFzaC51bnppcCA9IHVuemlwO1xuICAgIGxvZGFzaC51bnppcFdpdGggPSB1bnppcFdpdGg7XG4gICAgbG9kYXNoLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICBsb2Rhc2gudXBkYXRlV2l0aCA9IHVwZGF0ZVdpdGg7XG4gICAgbG9kYXNoLnZhbHVlcyA9IHZhbHVlcztcbiAgICBsb2Rhc2gudmFsdWVzSW4gPSB2YWx1ZXNJbjtcbiAgICBsb2Rhc2gud2l0aG91dCA9IHdpdGhvdXQ7XG4gICAgbG9kYXNoLndvcmRzID0gd29yZHM7XG4gICAgbG9kYXNoLndyYXAgPSB3cmFwO1xuICAgIGxvZGFzaC54b3IgPSB4b3I7XG4gICAgbG9kYXNoLnhvckJ5ID0geG9yQnk7XG4gICAgbG9kYXNoLnhvcldpdGggPSB4b3JXaXRoO1xuICAgIGxvZGFzaC56aXAgPSB6aXA7XG4gICAgbG9kYXNoLnppcE9iamVjdCA9IHppcE9iamVjdDtcbiAgICBsb2Rhc2guemlwT2JqZWN0RGVlcCA9IHppcE9iamVjdERlZXA7XG4gICAgbG9kYXNoLnppcFdpdGggPSB6aXBXaXRoO1xuXG4gICAgLy8gQWRkIGFsaWFzZXMuXG4gICAgbG9kYXNoLmVudHJpZXMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC5lbnRyaWVzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLmV4dGVuZCA9IGFzc2lnbkluO1xuICAgIGxvZGFzaC5leHRlbmRXaXRoID0gYXNzaWduSW5XaXRoO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIG1peGluKGxvZGFzaCwgbG9kYXNoKTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHVud3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZGQgPSBhZGQ7XG4gICAgbG9kYXNoLmF0dGVtcHQgPSBhdHRlbXB0O1xuICAgIGxvZGFzaC5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG4gICAgbG9kYXNoLmNhcGl0YWxpemUgPSBjYXBpdGFsaXplO1xuICAgIGxvZGFzaC5jZWlsID0gY2VpbDtcbiAgICBsb2Rhc2guY2xhbXAgPSBjbGFtcDtcbiAgICBsb2Rhc2guY2xvbmUgPSBjbG9uZTtcbiAgICBsb2Rhc2guY2xvbmVEZWVwID0gY2xvbmVEZWVwO1xuICAgIGxvZGFzaC5jbG9uZURlZXBXaXRoID0gY2xvbmVEZWVwV2l0aDtcbiAgICBsb2Rhc2guY2xvbmVXaXRoID0gY2xvbmVXaXRoO1xuICAgIGxvZGFzaC5jb25mb3Jtc1RvID0gY29uZm9ybXNUbztcbiAgICBsb2Rhc2guZGVidXJyID0gZGVidXJyO1xuICAgIGxvZGFzaC5kZWZhdWx0VG8gPSBkZWZhdWx0VG87XG4gICAgbG9kYXNoLmRpdmlkZSA9IGRpdmlkZTtcbiAgICBsb2Rhc2guZW5kc1dpdGggPSBlbmRzV2l0aDtcbiAgICBsb2Rhc2guZXEgPSBlcTtcbiAgICBsb2Rhc2guZXNjYXBlID0gZXNjYXBlO1xuICAgIGxvZGFzaC5lc2NhcGVSZWdFeHAgPSBlc2NhcGVSZWdFeHA7XG4gICAgbG9kYXNoLmV2ZXJ5ID0gZXZlcnk7XG4gICAgbG9kYXNoLmZpbmQgPSBmaW5kO1xuICAgIGxvZGFzaC5maW5kSW5kZXggPSBmaW5kSW5kZXg7XG4gICAgbG9kYXNoLmZpbmRLZXkgPSBmaW5kS2V5O1xuICAgIGxvZGFzaC5maW5kTGFzdCA9IGZpbmRMYXN0O1xuICAgIGxvZGFzaC5maW5kTGFzdEluZGV4ID0gZmluZExhc3RJbmRleDtcbiAgICBsb2Rhc2guZmluZExhc3RLZXkgPSBmaW5kTGFzdEtleTtcbiAgICBsb2Rhc2guZmxvb3IgPSBmbG9vcjtcbiAgICBsb2Rhc2guZm9yRWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmZvckVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZm9ySW4gPSBmb3JJbjtcbiAgICBsb2Rhc2guZm9ySW5SaWdodCA9IGZvckluUmlnaHQ7XG4gICAgbG9kYXNoLmZvck93biA9IGZvck93bjtcbiAgICBsb2Rhc2guZm9yT3duUmlnaHQgPSBmb3JPd25SaWdodDtcbiAgICBsb2Rhc2guZ2V0ID0gZ2V0O1xuICAgIGxvZGFzaC5ndCA9IGd0O1xuICAgIGxvZGFzaC5ndGUgPSBndGU7XG4gICAgbG9kYXNoLmhhcyA9IGhhcztcbiAgICBsb2Rhc2guaGFzSW4gPSBoYXNJbjtcbiAgICBsb2Rhc2guaGVhZCA9IGhlYWQ7XG4gICAgbG9kYXNoLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgbG9kYXNoLmluY2x1ZGVzID0gaW5jbHVkZXM7XG4gICAgbG9kYXNoLmluZGV4T2YgPSBpbmRleE9mO1xuICAgIGxvZGFzaC5pblJhbmdlID0gaW5SYW5nZTtcbiAgICBsb2Rhc2guaW52b2tlID0gaW52b2tlO1xuICAgIGxvZGFzaC5pc0FyZ3VtZW50cyA9IGlzQXJndW1lbnRzO1xuICAgIGxvZGFzaC5pc0FycmF5ID0gaXNBcnJheTtcbiAgICBsb2Rhc2guaXNBcnJheUJ1ZmZlciA9IGlzQXJyYXlCdWZmZXI7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlID0gaXNBcnJheUxpa2U7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlT2JqZWN0ID0gaXNBcnJheUxpa2VPYmplY3Q7XG4gICAgbG9kYXNoLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcbiAgICBsb2Rhc2guaXNCdWZmZXIgPSBpc0J1ZmZlcjtcbiAgICBsb2Rhc2guaXNEYXRlID0gaXNEYXRlO1xuICAgIGxvZGFzaC5pc0VsZW1lbnQgPSBpc0VsZW1lbnQ7XG4gICAgbG9kYXNoLmlzRW1wdHkgPSBpc0VtcHR5O1xuICAgIGxvZGFzaC5pc0VxdWFsID0gaXNFcXVhbDtcbiAgICBsb2Rhc2guaXNFcXVhbFdpdGggPSBpc0VxdWFsV2l0aDtcbiAgICBsb2Rhc2guaXNFcnJvciA9IGlzRXJyb3I7XG4gICAgbG9kYXNoLmlzRmluaXRlID0gaXNGaW5pdGU7XG4gICAgbG9kYXNoLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuICAgIGxvZGFzaC5pc0ludGVnZXIgPSBpc0ludGVnZXI7XG4gICAgbG9kYXNoLmlzTGVuZ3RoID0gaXNMZW5ndGg7XG4gICAgbG9kYXNoLmlzTWFwID0gaXNNYXA7XG4gICAgbG9kYXNoLmlzTWF0Y2ggPSBpc01hdGNoO1xuICAgIGxvZGFzaC5pc01hdGNoV2l0aCA9IGlzTWF0Y2hXaXRoO1xuICAgIGxvZGFzaC5pc05hTiA9IGlzTmFOO1xuICAgIGxvZGFzaC5pc05hdGl2ZSA9IGlzTmF0aXZlO1xuICAgIGxvZGFzaC5pc05pbCA9IGlzTmlsO1xuICAgIGxvZGFzaC5pc051bGwgPSBpc051bGw7XG4gICAgbG9kYXNoLmlzTnVtYmVyID0gaXNOdW1iZXI7XG4gICAgbG9kYXNoLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG4gICAgbG9kYXNoLmlzT2JqZWN0TGlrZSA9IGlzT2JqZWN0TGlrZTtcbiAgICBsb2Rhc2guaXNQbGFpbk9iamVjdCA9IGlzUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLmlzUmVnRXhwID0gaXNSZWdFeHA7XG4gICAgbG9kYXNoLmlzU2FmZUludGVnZXIgPSBpc1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc1NldCA9IGlzU2V0O1xuICAgIGxvZGFzaC5pc1N0cmluZyA9IGlzU3RyaW5nO1xuICAgIGxvZGFzaC5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuICAgIGxvZGFzaC5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG4gICAgbG9kYXNoLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG4gICAgbG9kYXNoLmlzV2Vha01hcCA9IGlzV2Vha01hcDtcbiAgICBsb2Rhc2guaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuICAgIGxvZGFzaC5qb2luID0gam9pbjtcbiAgICBsb2Rhc2gua2ViYWJDYXNlID0ga2ViYWJDYXNlO1xuICAgIGxvZGFzaC5sYXN0ID0gbGFzdDtcbiAgICBsb2Rhc2gubGFzdEluZGV4T2YgPSBsYXN0SW5kZXhPZjtcbiAgICBsb2Rhc2gubG93ZXJDYXNlID0gbG93ZXJDYXNlO1xuICAgIGxvZGFzaC5sb3dlckZpcnN0ID0gbG93ZXJGaXJzdDtcbiAgICBsb2Rhc2gubHQgPSBsdDtcbiAgICBsb2Rhc2gubHRlID0gbHRlO1xuICAgIGxvZGFzaC5tYXggPSBtYXg7XG4gICAgbG9kYXNoLm1heEJ5ID0gbWF4Qnk7XG4gICAgbG9kYXNoLm1lYW4gPSBtZWFuO1xuICAgIGxvZGFzaC5tZWFuQnkgPSBtZWFuQnk7XG4gICAgbG9kYXNoLm1pbiA9IG1pbjtcbiAgICBsb2Rhc2gubWluQnkgPSBtaW5CeTtcbiAgICBsb2Rhc2guc3R1YkFycmF5ID0gc3R1YkFycmF5O1xuICAgIGxvZGFzaC5zdHViRmFsc2UgPSBzdHViRmFsc2U7XG4gICAgbG9kYXNoLnN0dWJPYmplY3QgPSBzdHViT2JqZWN0O1xuICAgIGxvZGFzaC5zdHViU3RyaW5nID0gc3R1YlN0cmluZztcbiAgICBsb2Rhc2guc3R1YlRydWUgPSBzdHViVHJ1ZTtcbiAgICBsb2Rhc2gubXVsdGlwbHkgPSBtdWx0aXBseTtcbiAgICBsb2Rhc2gubnRoID0gbnRoO1xuICAgIGxvZGFzaC5ub0NvbmZsaWN0ID0gbm9Db25mbGljdDtcbiAgICBsb2Rhc2gubm9vcCA9IG5vb3A7XG4gICAgbG9kYXNoLm5vdyA9IG5vdztcbiAgICBsb2Rhc2gucGFkID0gcGFkO1xuICAgIGxvZGFzaC5wYWRFbmQgPSBwYWRFbmQ7XG4gICAgbG9kYXNoLnBhZFN0YXJ0ID0gcGFkU3RhcnQ7XG4gICAgbG9kYXNoLnBhcnNlSW50ID0gcGFyc2VJbnQ7XG4gICAgbG9kYXNoLnJhbmRvbSA9IHJhbmRvbTtcbiAgICBsb2Rhc2gucmVkdWNlID0gcmVkdWNlO1xuICAgIGxvZGFzaC5yZWR1Y2VSaWdodCA9IHJlZHVjZVJpZ2h0O1xuICAgIGxvZGFzaC5yZXBlYXQgPSByZXBlYXQ7XG4gICAgbG9kYXNoLnJlcGxhY2UgPSByZXBsYWNlO1xuICAgIGxvZGFzaC5yZXN1bHQgPSByZXN1bHQ7XG4gICAgbG9kYXNoLnJvdW5kID0gcm91bmQ7XG4gICAgbG9kYXNoLnJ1bkluQ29udGV4dCA9IHJ1bkluQ29udGV4dDtcbiAgICBsb2Rhc2guc2FtcGxlID0gc2FtcGxlO1xuICAgIGxvZGFzaC5zaXplID0gc2l6ZTtcbiAgICBsb2Rhc2guc25ha2VDYXNlID0gc25ha2VDYXNlO1xuICAgIGxvZGFzaC5zb21lID0gc29tZTtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXggPSBzb3J0ZWRJbmRleDtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXhCeSA9IHNvcnRlZEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4T2YgPSBzb3J0ZWRJbmRleE9mO1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXggPSBzb3J0ZWRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleEJ5ID0gc29ydGVkTGFzdEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleE9mID0gc29ydGVkTGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLnN0YXJ0Q2FzZSA9IHN0YXJ0Q2FzZTtcbiAgICBsb2Rhc2guc3RhcnRzV2l0aCA9IHN0YXJ0c1dpdGg7XG4gICAgbG9kYXNoLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG4gICAgbG9kYXNoLnN1bSA9IHN1bTtcbiAgICBsb2Rhc2guc3VtQnkgPSBzdW1CeTtcbiAgICBsb2Rhc2gudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICBsb2Rhc2gudGltZXMgPSB0aW1lcztcbiAgICBsb2Rhc2gudG9GaW5pdGUgPSB0b0Zpbml0ZTtcbiAgICBsb2Rhc2gudG9JbnRlZ2VyID0gdG9JbnRlZ2VyO1xuICAgIGxvZGFzaC50b0xlbmd0aCA9IHRvTGVuZ3RoO1xuICAgIGxvZGFzaC50b0xvd2VyID0gdG9Mb3dlcjtcbiAgICBsb2Rhc2gudG9OdW1iZXIgPSB0b051bWJlcjtcbiAgICBsb2Rhc2gudG9TYWZlSW50ZWdlciA9IHRvU2FmZUludGVnZXI7XG4gICAgbG9kYXNoLnRvU3RyaW5nID0gdG9TdHJpbmc7XG4gICAgbG9kYXNoLnRvVXBwZXIgPSB0b1VwcGVyO1xuICAgIGxvZGFzaC50cmltID0gdHJpbTtcbiAgICBsb2Rhc2gudHJpbUVuZCA9IHRyaW1FbmQ7XG4gICAgbG9kYXNoLnRyaW1TdGFydCA9IHRyaW1TdGFydDtcbiAgICBsb2Rhc2gudHJ1bmNhdGUgPSB0cnVuY2F0ZTtcbiAgICBsb2Rhc2gudW5lc2NhcGUgPSB1bmVzY2FwZTtcbiAgICBsb2Rhc2gudW5pcXVlSWQgPSB1bmlxdWVJZDtcbiAgICBsb2Rhc2gudXBwZXJDYXNlID0gdXBwZXJDYXNlO1xuICAgIGxvZGFzaC51cHBlckZpcnN0ID0gdXBwZXJGaXJzdDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lYWNoID0gZm9yRWFjaDtcbiAgICBsb2Rhc2guZWFjaFJpZ2h0ID0gZm9yRWFjaFJpZ2h0O1xuICAgIGxvZGFzaC5maXJzdCA9IGhlYWQ7XG5cbiAgICBtaXhpbihsb2Rhc2gsIChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzb3VyY2UgPSB7fTtcbiAgICAgIGJhc2VGb3JPd24obG9kYXNoLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChsb2Rhc2gucHJvdG90eXBlLCBtZXRob2ROYW1lKSkge1xuICAgICAgICAgIHNvdXJjZVttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9KCkpLCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBsb2Rhc2guVkVSU0lPTiA9IFZFUlNJT047XG5cbiAgICAvLyBBc3NpZ24gZGVmYXVsdCBwbGFjZWhvbGRlcnMuXG4gICAgYXJyYXlFYWNoKFsnYmluZCcsICdiaW5kS2V5JywgJ2N1cnJ5JywgJ2N1cnJ5UmlnaHQnLCAncGFydGlhbCcsICdwYXJ0aWFsUmlnaHQnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSkge1xuICAgICAgbG9kYXNoW21ldGhvZE5hbWVdLnBsYWNlaG9sZGVyID0gbG9kYXNoO1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uZHJvcGAgYW5kIGBfLnRha2VgIHZhcmlhbnRzLlxuICAgIGFycmF5RWFjaChbJ2Ryb3AnLCAndGFrZSddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24obikge1xuICAgICAgICBuID0gbiA9PT0gdW5kZWZpbmVkID8gMSA6IG5hdGl2ZU1heCh0b0ludGVnZXIobiksIDApO1xuXG4gICAgICAgIHZhciByZXN1bHQgPSAodGhpcy5fX2ZpbHRlcmVkX18gJiYgIWluZGV4KVxuICAgICAgICAgID8gbmV3IExhenlXcmFwcGVyKHRoaXMpXG4gICAgICAgICAgOiB0aGlzLmNsb25lKCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgICByZXN1bHQuX190YWtlQ291bnRfXyA9IG5hdGl2ZU1pbihuLCByZXN1bHQuX190YWtlQ291bnRfXyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdmlld3NfXy5wdXNoKHtcbiAgICAgICAgICAgICdzaXplJzogbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpLFxuICAgICAgICAgICAgJ3R5cGUnOiBtZXRob2ROYW1lICsgKHJlc3VsdC5fX2Rpcl9fIDwgMCA/ICdSaWdodCcgOiAnJylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWUgKyAnUmlnaHQnXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpW21ldGhvZE5hbWVdKG4pLnJldmVyc2UoKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIHRoYXQgYWNjZXB0IGFuIGBpdGVyYXRlZWAgdmFsdWUuXG4gICAgYXJyYXlFYWNoKFsnZmlsdGVyJywgJ21hcCcsICd0YWtlV2hpbGUnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciB0eXBlID0gaW5kZXggKyAxLFxuICAgICAgICAgIGlzRmlsdGVyID0gdHlwZSA9PSBMQVpZX0ZJTFRFUl9GTEFHIHx8IHR5cGUgPT0gTEFaWV9XSElMRV9GTEFHO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICByZXN1bHQuX19pdGVyYXRlZXNfXy5wdXNoKHtcbiAgICAgICAgICAnaXRlcmF0ZWUnOiBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksXG4gICAgICAgICAgJ3R5cGUnOiB0eXBlXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gcmVzdWx0Ll9fZmlsdGVyZWRfXyB8fCBpc0ZpbHRlcjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIGZvciBgXy5oZWFkYCBhbmQgYF8ubGFzdGAuXG4gICAgYXJyYXlFYWNoKFsnaGVhZCcsICdsYXN0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdGFrZU5hbWUgPSAndGFrZScgKyAoaW5kZXggPyAnUmlnaHQnIDogJycpO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbdGFrZU5hbWVdKDEpLnZhbHVlKClbMF07XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaW5pdGlhbGAgYW5kIGBfLnRhaWxgLlxuICAgIGFycmF5RWFjaChbJ2luaXRpYWwnLCAndGFpbCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGRyb3BOYW1lID0gJ2Ryb3AnICsgKGluZGV4ID8gJycgOiAnUmlnaHQnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fZmlsdGVyZWRfXyA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKSA6IHRoaXNbZHJvcE5hbWVdKDEpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jb21wYWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoaWRlbnRpdHkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKHByZWRpY2F0ZSkuaGVhZCgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZExhc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKHByZWRpY2F0ZSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5pbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJlamVjdCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7XG4gICAgICBpZiAocmVzdWx0Ll9fZmlsdGVyZWRfXyAmJiAoc3RhcnQgPiAwIHx8IGVuZCA8IDApKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eVdyYXBwZXIocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRha2VSaWdodCgtc3RhcnQpO1xuICAgICAgfSBlbHNlIGlmIChzdGFydCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuZHJvcChzdGFydCk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW5kID0gdG9JbnRlZ2VyKGVuZCk7XG4gICAgICAgIHJlc3VsdCA9IGVuZCA8IDAgPyByZXN1bHQuZHJvcFJpZ2h0KC1lbmQpIDogcmVzdWx0LnRha2UoZW5kIC0gc3RhcnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRha2VSaWdodFdoaWxlID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKHByZWRpY2F0ZSkucmV2ZXJzZSgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGFrZShNQVhfQVJSQVlfTEVOR1RIKTtcbiAgICB9O1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBjaGVja0l0ZXJhdGVlID0gL14oPzpmaWx0ZXJ8ZmluZHxtYXB8cmVqZWN0KXxXaGlsZSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgaXNUYWtlciA9IC9eKD86aGVhZHxsYXN0KSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgbG9kYXNoRnVuYyA9IGxvZGFzaFtpc1Rha2VyID8gKCd0YWtlJyArIChtZXRob2ROYW1lID09ICdsYXN0JyA/ICdSaWdodCcgOiAnJykpIDogbWV0aG9kTmFtZV0sXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gaXNUYWtlciB8fCAvXmZpbmQvLnRlc3QobWV0aG9kTmFtZSk7XG5cbiAgICAgIGlmICghbG9kYXNoRnVuYykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX18sXG4gICAgICAgICAgICBhcmdzID0gaXNUYWtlciA/IFsxXSA6IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGlzTGF6eSA9IHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIsXG4gICAgICAgICAgICBpdGVyYXRlZSA9IGFyZ3NbMF0sXG4gICAgICAgICAgICB1c2VMYXp5ID0gaXNMYXp5IHx8IGlzQXJyYXkodmFsdWUpO1xuXG4gICAgICAgIHZhciBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaEZ1bmMuYXBwbHkobG9kYXNoLCBhcnJheVB1c2goW3ZhbHVlXSwgYXJncykpO1xuICAgICAgICAgIHJldHVybiAoaXNUYWtlciAmJiBjaGFpbkFsbCkgPyByZXN1bHRbMF0gOiByZXN1bHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHVzZUxhenkgJiYgY2hlY2tJdGVyYXRlZSAmJiB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyAmJiBpdGVyYXRlZS5sZW5ndGggIT0gMSkge1xuICAgICAgICAgIC8vIEF2b2lkIGxhenkgdXNlIGlmIHRoZSBpdGVyYXRlZSBoYXMgYSBcImxlbmd0aFwiIHZhbHVlIG90aGVyIHRoYW4gYDFgLlxuICAgICAgICAgIGlzTGF6eSA9IHVzZUxhenkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXyxcbiAgICAgICAgICAgIGlzSHlicmlkID0gISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxcbiAgICAgICAgICAgIGlzVW53cmFwcGVkID0gcmV0VW53cmFwcGVkICYmICFjaGFpbkFsbCxcbiAgICAgICAgICAgIG9ubHlMYXp5ID0gaXNMYXp5ICYmICFpc0h5YnJpZDtcblxuICAgICAgICBpZiAoIXJldFVud3JhcHBlZCAmJiB1c2VMYXp5KSB7XG4gICAgICAgICAgdmFsdWUgPSBvbmx5TGF6eSA/IHZhbHVlIDogbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHZhbHVlLCBhcmdzKTtcbiAgICAgICAgICByZXN1bHQuX19hY3Rpb25zX18ucHVzaCh7ICdmdW5jJzogdGhydSwgJ2FyZ3MnOiBbaW50ZXJjZXB0b3JdLCAndGhpc0FyZyc6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIocmVzdWx0LCBjaGFpbkFsbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVW53cmFwcGVkICYmIG9ubHlMYXp5KSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy50aHJ1KGludGVyY2VwdG9yKTtcbiAgICAgICAgcmV0dXJuIGlzVW53cmFwcGVkID8gKGlzVGFrZXIgPyByZXN1bHQudmFsdWUoKVswXSA6IHJlc3VsdC52YWx1ZSgpKSA6IHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYEFycmF5YCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBhcnJheUVhY2goWydwb3AnLCAncHVzaCcsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gYXJyYXlQcm90b1ttZXRob2ROYW1lXSxcbiAgICAgICAgICBjaGFpbk5hbWUgPSAvXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QobWV0aG9kTmFtZSkgPyAndGFwJyA6ICd0aHJ1JyxcbiAgICAgICAgICByZXRVbndyYXBwZWQgPSAvXig/OnBvcHxzaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAocmV0VW53cmFwcGVkICYmICF0aGlzLl9fY2hhaW5fXykge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUoKTtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzW2NoYWluTmFtZV0oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBNYXAgbWluaWZpZWQgbWV0aG9kIG5hbWVzIHRvIHRoZWlyIHJlYWwgbmFtZXMuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBsb2Rhc2hGdW5jID0gbG9kYXNoW21ldGhvZE5hbWVdO1xuICAgICAgaWYgKGxvZGFzaEZ1bmMpIHtcbiAgICAgICAgdmFyIGtleSA9IGxvZGFzaEZ1bmMubmFtZSArICcnO1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCBrZXkpKSB7XG4gICAgICAgICAgcmVhbE5hbWVzW2tleV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICByZWFsTmFtZXNba2V5XS5wdXNoKHsgJ25hbWUnOiBtZXRob2ROYW1lLCAnZnVuYyc6IGxvZGFzaEZ1bmMgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZWFsTmFtZXNbY3JlYXRlSHlicmlkKHVuZGVmaW5lZCwgV1JBUF9CSU5EX0tFWV9GTEFHKS5uYW1lXSA9IFt7XG4gICAgICAnbmFtZSc6ICd3cmFwcGVyJyxcbiAgICAgICdmdW5jJzogdW5kZWZpbmVkXG4gICAgfV07XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGF6eVdyYXBwZXJgLlxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jbG9uZSA9IGxhenlDbG9uZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUucmV2ZXJzZSA9IGxhenlSZXZlcnNlO1xuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS52YWx1ZSA9IGxhenlWYWx1ZTtcblxuICAgIC8vIEFkZCBjaGFpbiBzZXF1ZW5jZSBtZXRob2RzIHRvIHRoZSBgbG9kYXNoYCB3cmFwcGVyLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuYXQgPSB3cmFwcGVyQXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jaGFpbiA9IHdyYXBwZXJDaGFpbjtcbiAgICBsb2Rhc2gucHJvdG90eXBlLmNvbW1pdCA9IHdyYXBwZXJDb21taXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5uZXh0ID0gd3JhcHBlck5leHQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5wbGFudCA9IHdyYXBwZXJQbGFudDtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnJldmVyc2UgPSB3cmFwcGVyUmV2ZXJzZTtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnRvSlNPTiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWVPZiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWUgPSB3cmFwcGVyVmFsdWU7XG5cbiAgICAvLyBBZGQgbGF6eSBhbGlhc2VzLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuZmlyc3QgPSBsb2Rhc2gucHJvdG90eXBlLmhlYWQ7XG5cbiAgICBpZiAoc3ltSXRlcmF0b3IpIHtcbiAgICAgIGxvZGFzaC5wcm90b3R5cGVbc3ltSXRlcmF0b3JdID0gd3JhcHBlclRvSXRlcmF0b3I7XG4gICAgfVxuICAgIHJldHVybiBsb2Rhc2g7XG4gIH0pO1xuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8vIEV4cG9ydCBsb2Rhc2guXG4gIHZhciBfID0gcnVuSW5Db250ZXh0KCk7XG5cbiAgLy8gU29tZSBBTUQgYnVpbGQgb3B0aW1pemVycywgbGlrZSByLmpzLCBjaGVjayBmb3IgY29uZGl0aW9uIHBhdHRlcm5zIGxpa2U6XG4gIGlmICh0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEV4cG9zZSBMb2Rhc2ggb24gdGhlIGdsb2JhbCBvYmplY3QgdG8gcHJldmVudCBlcnJvcnMgd2hlbiBMb2Rhc2ggaXNcbiAgICAvLyBsb2FkZWQgYnkgYSBzY3JpcHQgdGFnIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBBTUQgbG9hZGVyLlxuICAgIC8vIFNlZSBodHRwOi8vcmVxdWlyZWpzLm9yZy9kb2NzL2Vycm9ycy5odG1sI21pc21hdGNoIGZvciBtb3JlIGRldGFpbHMuXG4gICAgLy8gVXNlIGBfLm5vQ29uZmxpY3RgIHRvIHJlbW92ZSBMb2Rhc2ggZnJvbSB0aGUgZ2xvYmFsIG9iamVjdC5cbiAgICByb290Ll8gPSBfO1xuXG4gICAgLy8gRGVmaW5lIGFzIGFuIGFub255bW91cyBtb2R1bGUgc28sIHRocm91Z2ggcGF0aCBtYXBwaW5nLCBpdCBjYW4gYmVcbiAgICAvLyByZWZlcmVuY2VkIGFzIHRoZSBcInVuZGVyc2NvcmVcIiBtb2R1bGUuXG4gICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIF87XG4gICAgfSk7XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGBleHBvcnRzYCBhZnRlciBgZGVmaW5lYCBpbiBjYXNlIGEgYnVpbGQgb3B0aW1pemVyIGFkZHMgaXQuXG4gIGVsc2UgaWYgKGZyZWVNb2R1bGUpIHtcbiAgICAvLyBFeHBvcnQgZm9yIE5vZGUuanMuXG4gICAgKGZyZWVNb2R1bGUuZXhwb3J0cyA9IF8pLl8gPSBfO1xuICAgIC8vIEV4cG9ydCBmb3IgQ29tbW9uSlMgc3VwcG9ydC5cbiAgICBmcmVlRXhwb3J0cy5fID0gXztcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBFeHBvcnQgdG8gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcbiAgfVxufS5jYWxsKHRoaXMpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLFNBU0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/lodash.js\n");

/***/ }),

/***/ "./node_modules/material-icons/iconfont/MaterialIcons-Regular.eot":
/*!************************************************************************!*\
  !*** ./node_modules/material-icons/iconfont/MaterialIcons-Regular.eot ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"fonts/MaterialIcons-Regular.96c47680.eot\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWF0ZXJpYWwtaWNvbnMvaWNvbmZvbnQvTWF0ZXJpYWxJY29ucy1SZWd1bGFyLmVvdC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tYXRlcmlhbC1pY29ucy9pY29uZm9udC9NYXRlcmlhbEljb25zLVJlZ3VsYXIuZW90PzZjMmYiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiZm9udHMvTWF0ZXJpYWxJY29ucy1SZWd1bGFyLjk2YzQ3NjgwLmVvdFwiOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/material-icons/iconfont/MaterialIcons-Regular.eot\n");

/***/ }),

/***/ "./node_modules/material-icons/iconfont/MaterialIcons-Regular.ttf":
/*!************************************************************************!*\
  !*** ./node_modules/material-icons/iconfont/MaterialIcons-Regular.ttf ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"fonts/MaterialIcons-Regular.d120c85b.ttf\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWF0ZXJpYWwtaWNvbnMvaWNvbmZvbnQvTWF0ZXJpYWxJY29ucy1SZWd1bGFyLnR0Zi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tYXRlcmlhbC1pY29ucy9pY29uZm9udC9NYXRlcmlhbEljb25zLVJlZ3VsYXIudHRmP2I1NzIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiZm9udHMvTWF0ZXJpYWxJY29ucy1SZWd1bGFyLmQxMjBjODViLnR0ZlwiOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/material-icons/iconfont/MaterialIcons-Regular.ttf\n");

/***/ }),

/***/ "./node_modules/material-icons/iconfont/MaterialIcons-Regular.woff":
/*!*************************************************************************!*\
  !*** ./node_modules/material-icons/iconfont/MaterialIcons-Regular.woff ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"fonts/MaterialIcons-Regular.29b882f0.woff\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWF0ZXJpYWwtaWNvbnMvaWNvbmZvbnQvTWF0ZXJpYWxJY29ucy1SZWd1bGFyLndvZmYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbWF0ZXJpYWwtaWNvbnMvaWNvbmZvbnQvTWF0ZXJpYWxJY29ucy1SZWd1bGFyLndvZmY/MDQyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJmb250cy9NYXRlcmlhbEljb25zLVJlZ3VsYXIuMjliODgyZjAud29mZlwiOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/material-icons/iconfont/MaterialIcons-Regular.woff\n");

/***/ }),

/***/ "./node_modules/material-icons/iconfont/MaterialIcons-Regular.woff2":
/*!**************************************************************************!*\
  !*** ./node_modules/material-icons/iconfont/MaterialIcons-Regular.woff2 ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"fonts/MaterialIcons-Regular.0509ab09.woff2\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWF0ZXJpYWwtaWNvbnMvaWNvbmZvbnQvTWF0ZXJpYWxJY29ucy1SZWd1bGFyLndvZmYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21hdGVyaWFsLWljb25zL2ljb25mb250L01hdGVyaWFsSWNvbnMtUmVndWxhci53b2ZmMj9kYjgwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gKyBcImZvbnRzL01hdGVyaWFsSWNvbnMtUmVndWxhci4wNTA5YWIwOS53b2ZmMlwiOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/material-icons/iconfont/MaterialIcons-Regular.woff2\n");

/***/ }),

/***/ "./node_modules/material-icons/iconfont/material-icons.css":
/*!*****************************************************************!*\
  !*** ./node_modules/material-icons/iconfont/material-icons.css ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./material-icons.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/material-icons/iconfont/material-icons.css\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"322a79a6\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./material-icons.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/material-icons/iconfont/material-icons.css\", function() {\n     var newContent = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./material-icons.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/material-icons/iconfont/material-icons.css\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWF0ZXJpYWwtaWNvbnMvaWNvbmZvbnQvbWF0ZXJpYWwtaWNvbnMuY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21hdGVyaWFsLWljb25zL2ljb25mb250L21hdGVyaWFsLWljb25zLmNzcz85Y2E3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0xIS4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMiEuL21hdGVyaWFsLWljb25zLmNzc1wiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikuZGVmYXVsdFxudmFyIHVwZGF0ZSA9IGFkZChcIjMyMmE3OWE2XCIsIGNvbnRlbnQsIGZhbHNlLCB7XCJzb3VyY2VNYXBcIjpmYWxzZSxcInNoYWRvd01vZGVcIjpmYWxzZX0pO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi9tYXRlcmlhbC1pY29ucy5jc3NcIiwgZnVuY3Rpb24oKSB7XG4gICAgIHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi9tYXRlcmlhbC1pY29ucy5jc3NcIik7XG4gICAgIGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuICAgICB1cGRhdGUobmV3Q29udGVudCk7XG4gICB9KTtcbiB9XG4gLy8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/material-icons/iconfont/material-icons.css\n");

/***/ }),

/***/ "./node_modules/moment/locale sync recursive ^\\.\\/.*$":
/*!**************************************************!*\
  !*** ./node_modules/moment/locale sync ^\.\/.*$ ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-SG\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-SG.js\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZSBzeW5jIHJlY3Vyc2l2ZSBeXFwuXFwvLiokLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUgc3luYyBeXFwuXFwvLiokP2ZlMTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIG1hcCA9IHtcblx0XCIuL2FmXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qc1wiLFxuXHRcIi4vYWYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzXCIsXG5cdFwiLi9hclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanNcIixcblx0XCIuL2FyLWR6XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qc1wiLFxuXHRcIi4vYXItZHouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzXCIsXG5cdFwiLi9hci1rd1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanNcIixcblx0XCIuL2FyLWt3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1rdy5qc1wiLFxuXHRcIi4vYXItbHlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzXCIsXG5cdFwiLi9hci1seS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanNcIixcblx0XCIuL2FyLW1hXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qc1wiLFxuXHRcIi4vYXItbWEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzXCIsXG5cdFwiLi9hci1zYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanNcIixcblx0XCIuL2FyLXNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qc1wiLFxuXHRcIi4vYXItdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzXCIsXG5cdFwiLi9hci10bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanNcIixcblx0XCIuL2FyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci5qc1wiLFxuXHRcIi4vYXpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzXCIsXG5cdFwiLi9hei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanNcIixcblx0XCIuL2JlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qc1wiLFxuXHRcIi4vYmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzXCIsXG5cdFwiLi9iZ1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanNcIixcblx0XCIuL2JnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qc1wiLFxuXHRcIi4vYm1cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzXCIsXG5cdFwiLi9ibS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanNcIixcblx0XCIuL2JuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qc1wiLFxuXHRcIi4vYm4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzXCIsXG5cdFwiLi9ib1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanNcIixcblx0XCIuL2JvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iby5qc1wiLFxuXHRcIi4vYnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzXCIsXG5cdFwiLi9ici5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanNcIixcblx0XCIuL2JzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qc1wiLFxuXHRcIi4vYnMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzXCIsXG5cdFwiLi9jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanNcIixcblx0XCIuL2NhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jYS5qc1wiLFxuXHRcIi4vY3NcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzXCIsXG5cdFwiLi9jcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanNcIixcblx0XCIuL2N2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qc1wiLFxuXHRcIi4vY3YuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzXCIsXG5cdFwiLi9jeVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanNcIixcblx0XCIuL2N5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jeS5qc1wiLFxuXHRcIi4vZGFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzXCIsXG5cdFwiLi9kYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanNcIixcblx0XCIuL2RlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS5qc1wiLFxuXHRcIi4vZGUtYXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzXCIsXG5cdFwiLi9kZS1hdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanNcIixcblx0XCIuL2RlLWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qc1wiLFxuXHRcIi4vZGUtY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzXCIsXG5cdFwiLi9kZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanNcIixcblx0XCIuL2R2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qc1wiLFxuXHRcIi4vZHYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzXCIsXG5cdFwiLi9lbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanNcIixcblx0XCIuL2VsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbC5qc1wiLFxuXHRcIi4vZW4tU0dcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLVNHLmpzXCIsXG5cdFwiLi9lbi1TRy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tU0cuanNcIixcblx0XCIuL2VuLWF1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qc1wiLFxuXHRcIi4vZW4tYXUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzXCIsXG5cdFwiLi9lbi1jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanNcIixcblx0XCIuL2VuLWNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qc1wiLFxuXHRcIi4vZW4tZ2JcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzXCIsXG5cdFwiLi9lbi1nYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanNcIixcblx0XCIuL2VuLWllXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qc1wiLFxuXHRcIi4vZW4taWUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzXCIsXG5cdFwiLi9lbi1pbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanNcIixcblx0XCIuL2VuLWlsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qc1wiLFxuXHRcIi4vZW4tbnpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzXCIsXG5cdFwiLi9lbi1uei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanNcIixcblx0XCIuL2VvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qc1wiLFxuXHRcIi4vZW8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzXCIsXG5cdFwiLi9lc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanNcIixcblx0XCIuL2VzLWRvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qc1wiLFxuXHRcIi4vZXMtZG8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzXCIsXG5cdFwiLi9lcy11c1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanNcIixcblx0XCIuL2VzLXVzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qc1wiLFxuXHRcIi4vZXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzXCIsXG5cdFwiLi9ldFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanNcIixcblx0XCIuL2V0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qc1wiLFxuXHRcIi4vZXVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzXCIsXG5cdFwiLi9ldS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanNcIixcblx0XCIuL2ZhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qc1wiLFxuXHRcIi4vZmEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzXCIsXG5cdFwiLi9maVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanNcIixcblx0XCIuL2ZpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qc1wiLFxuXHRcIi4vZm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZvLmpzXCIsXG5cdFwiLi9mby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanNcIixcblx0XCIuL2ZyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci5qc1wiLFxuXHRcIi4vZnItY2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNhLmpzXCIsXG5cdFwiLi9mci1jYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanNcIixcblx0XCIuL2ZyLWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qc1wiLFxuXHRcIi4vZnItY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzXCIsXG5cdFwiLi9mci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanNcIixcblx0XCIuL2Z5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qc1wiLFxuXHRcIi4vZnkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzXCIsXG5cdFwiLi9nYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanNcIixcblx0XCIuL2dhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nYS5qc1wiLFxuXHRcIi4vZ2RcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dkLmpzXCIsXG5cdFwiLi9nZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanNcIixcblx0XCIuL2dsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qc1wiLFxuXHRcIi4vZ2wuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzXCIsXG5cdFwiLi9nb20tbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanNcIixcblx0XCIuL2dvbS1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qc1wiLFxuXHRcIi4vZ3VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2d1LmpzXCIsXG5cdFwiLi9ndS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanNcIixcblx0XCIuL2hlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qc1wiLFxuXHRcIi4vaGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzXCIsXG5cdFwiLi9oaVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanNcIixcblx0XCIuL2hpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qc1wiLFxuXHRcIi4vaHJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hyLmpzXCIsXG5cdFwiLi9oci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanNcIixcblx0XCIuL2h1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qc1wiLFxuXHRcIi4vaHUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzXCIsXG5cdFwiLi9oeS1hbVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanNcIixcblx0XCIuL2h5LWFtLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qc1wiLFxuXHRcIi4vaWRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lkLmpzXCIsXG5cdFwiLi9pZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanNcIixcblx0XCIuL2lzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qc1wiLFxuXHRcIi4vaXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzXCIsXG5cdFwiLi9pdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2l0LWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qc1wiLFxuXHRcIi4vaXQtY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzXCIsXG5cdFwiLi9pdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2phXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qc1wiLFxuXHRcIi4vamEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzXCIsXG5cdFwiLi9qdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanNcIixcblx0XCIuL2p2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qc1wiLFxuXHRcIi4va2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2thLmpzXCIsXG5cdFwiLi9rYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanNcIixcblx0XCIuL2trXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qc1wiLFxuXHRcIi4va2suanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzXCIsXG5cdFwiLi9rbVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanNcIixcblx0XCIuL2ttLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qc1wiLFxuXHRcIi4va25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tuLmpzXCIsXG5cdFwiLi9rbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanNcIixcblx0XCIuL2tvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qc1wiLFxuXHRcIi4va28uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzXCIsXG5cdFwiLi9rdVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanNcIixcblx0XCIuL2t1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS5qc1wiLFxuXHRcIi4va3lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzXCIsXG5cdFwiLi9reS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanNcIixcblx0XCIuL2xiXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qc1wiLFxuXHRcIi4vbGIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzXCIsXG5cdFwiLi9sb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanNcIixcblx0XCIuL2xvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sby5qc1wiLFxuXHRcIi4vbHRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzXCIsXG5cdFwiLi9sdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanNcIixcblx0XCIuL2x2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qc1wiLFxuXHRcIi4vbHYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzXCIsXG5cdFwiLi9tZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanNcIixcblx0XCIuL21lLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tZS5qc1wiLFxuXHRcIi4vbWlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzXCIsXG5cdFwiLi9taS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanNcIixcblx0XCIuL21rXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qc1wiLFxuXHRcIi4vbWsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzXCIsXG5cdFwiLi9tbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanNcIixcblx0XCIuL21sLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbC5qc1wiLFxuXHRcIi4vbW5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzXCIsXG5cdFwiLi9tbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanNcIixcblx0XCIuL21yXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qc1wiLFxuXHRcIi4vbXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzXCIsXG5cdFwiLi9tc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL21zLW15XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qc1wiLFxuXHRcIi4vbXMtbXkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzXCIsXG5cdFwiLi9tcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL210XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qc1wiLFxuXHRcIi4vbXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzXCIsXG5cdFwiLi9teVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanNcIixcblx0XCIuL215LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9teS5qc1wiLFxuXHRcIi4vbmJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzXCIsXG5cdFwiLi9uYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanNcIixcblx0XCIuL25lXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qc1wiLFxuXHRcIi4vbmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzXCIsXG5cdFwiLi9ubFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25sLWJlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qc1wiLFxuXHRcIi4vbmwtYmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzXCIsXG5cdFwiLi9ubC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25uXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qc1wiLFxuXHRcIi4vbm4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzXCIsXG5cdFwiLi9wYS1pblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanNcIixcblx0XCIuL3BhLWluLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qc1wiLFxuXHRcIi4vcGxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzXCIsXG5cdFwiLi9wbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanNcIixcblx0XCIuL3B0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qc1wiLFxuXHRcIi4vcHQtYnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzXCIsXG5cdFwiLi9wdC1ici5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanNcIixcblx0XCIuL3B0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qc1wiLFxuXHRcIi4vcm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzXCIsXG5cdFwiLi9yby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanNcIixcblx0XCIuL3J1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qc1wiLFxuXHRcIi4vcnUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzXCIsXG5cdFwiLi9zZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanNcIixcblx0XCIuL3NkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qc1wiLFxuXHRcIi4vc2VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzXCIsXG5cdFwiLi9zZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanNcIixcblx0XCIuL3NpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qc1wiLFxuXHRcIi4vc2kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzXCIsXG5cdFwiLi9za1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanNcIixcblx0XCIuL3NrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qc1wiLFxuXHRcIi4vc2xcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzXCIsXG5cdFwiLi9zbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanNcIixcblx0XCIuL3NxXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qc1wiLFxuXHRcIi4vc3EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzXCIsXG5cdFwiLi9zclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanNcIixcblx0XCIuL3NyLWN5cmxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanNcIixcblx0XCIuL3NyLWN5cmwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanNcIixcblx0XCIuL3NyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci5qc1wiLFxuXHRcIi4vc3NcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzXCIsXG5cdFwiLi9zcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanNcIixcblx0XCIuL3N2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qc1wiLFxuXHRcIi4vc3YuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzXCIsXG5cdFwiLi9zd1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3cuanNcIixcblx0XCIuL3N3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qc1wiLFxuXHRcIi4vdGFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzXCIsXG5cdFwiLi90YS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanNcIixcblx0XCIuL3RlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qc1wiLFxuXHRcIi4vdGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzXCIsXG5cdFwiLi90ZXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RldC5qc1wiLFxuXHRcIi4vdGV0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanNcIixcblx0XCIuL3RnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qc1wiLFxuXHRcIi4vdGcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzXCIsXG5cdFwiLi90aFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanNcIixcblx0XCIuL3RoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qc1wiLFxuXHRcIi4vdGwtcGhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzXCIsXG5cdFwiLi90bC1waC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanNcIixcblx0XCIuL3RsaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGxoLmpzXCIsXG5cdFwiLi90bGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qc1wiLFxuXHRcIi4vdHJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzXCIsXG5cdFwiLi90ci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHIuanNcIixcblx0XCIuL3R6bFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHpsLmpzXCIsXG5cdFwiLi90emwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qc1wiLFxuXHRcIi4vdHptXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanNcIixcblx0XCIuL3R6bS1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0tbGF0bi5qc1wiLFxuXHRcIi4vdHptLWxhdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzXCIsXG5cdFwiLi90em0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS5qc1wiLFxuXHRcIi4vdWctY25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzXCIsXG5cdFwiLi91Zy1jbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanNcIixcblx0XCIuL3VrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qc1wiLFxuXHRcIi4vdWsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzXCIsXG5cdFwiLi91clwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanNcIixcblx0XCIuL3VyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ci5qc1wiLFxuXHRcIi4vdXpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzXCIsXG5cdFwiLi91ei1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzXCIsXG5cdFwiLi91ei1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzXCIsXG5cdFwiLi91ei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanNcIixcblx0XCIuL3ZpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qc1wiLFxuXHRcIi4vdmkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3ZpLmpzXCIsXG5cdFwiLi94LXBzZXVkb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanNcIixcblx0XCIuL3gtcHNldWRvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qc1wiLFxuXHRcIi4veW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzXCIsXG5cdFwiLi95by5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanNcIixcblx0XCIuL3poLWNuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qc1wiLFxuXHRcIi4vemgtY24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWNuLmpzXCIsXG5cdFwiLi96aC1oa1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanNcIixcblx0XCIuL3poLWhrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qc1wiLFxuXHRcIi4vemgtdHdcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzXCIsXG5cdFwiLi96aC10dy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZSBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qJFwiOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale sync recursive ^\\.\\/.*$\n");

/***/ }),

/***/ "./node_modules/moment/locale/af.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/af.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var af = moment.defineLocale('af', {\n        months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n        weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM : function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Vandag om] LT',\n            nextDay : '[Môre om] LT',\n            nextWeek : 'dddd [om] LT',\n            lastDay : '[Gister om] LT',\n            lastWeek : '[Laas] dddd [om] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'oor %s',\n            past : '%s gelede',\n            s : '\\'n paar sekondes',\n            ss : '%d sekondes',\n            m : '\\'n minuut',\n            mm : '%d minute',\n            h : '\\'n uur',\n            hh : '%d ure',\n            d : '\\'n dag',\n            dd : '%d dae',\n            M : '\\'n maand',\n            MM : '%d maande',\n            y : '\\'n jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week : {\n            dow : 1, // Maandag is die eerste dag van die week.\n            doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        }\n    });\n\n    return af;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzPzJiZmIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYWYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhZicsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcmllX0ZlYnJ1YXJpZV9NYWFydF9BcHJpbF9NZWlfSnVuaWVfSnVsaWVfQXVndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTXJ0X0Fwcl9NZWlfSnVuX0p1bF9BdWdfU2VwX09rdF9Ob3ZfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTb25kYWdfTWFhbmRhZ19EaW5zZGFnX1dvZW5zZGFnX0RvbmRlcmRhZ19WcnlkYWdfU2F0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU29uX01hYV9EaW5fV29lX0Rvbl9WcnlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTb19NYV9EaV9Xb19Eb19Wcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3ZtfG5tL2ksXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXm5tJC9pLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICd2bScgOiAnVk0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdubScgOiAnTk0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVmFuZGFnIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tNw7RyZSBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0dpc3RlciBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhYXNdIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb29yICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgZ2VsZWRlJyxcbiAgICAgICAgICAgIHMgOiAnXFwnbiBwYWFyIHNla29uZGVzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla29uZGVzJyxcbiAgICAgICAgICAgIG0gOiAnXFwnbiBtaW51dXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlJyxcbiAgICAgICAgICAgIGggOiAnXFwnbiB1dXInLFxuICAgICAgICAgICAgaGggOiAnJWQgdXJlJyxcbiAgICAgICAgICAgIGQgOiAnXFwnbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFlJyxcbiAgICAgICAgICAgIE0gOiAnXFwnbiBtYWFuZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtYWFuZGUnLFxuICAgICAgICAgICAgeSA6ICdcXCduIGphYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgamFhcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICgobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjApID8gJ3N0ZScgOiAnZGUnKTsgLy8gVGhhbmtzIHRvIEpvcmlzIFLDtmxpbmcgOiBodHRwczovL2dpdGh1Yi5jb20vamp1cGl0ZXJcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1hYW5kYWcgaXMgZGllIGVlcnN0ZSBkYWcgdmFuIGRpZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gRGllIHdlZWsgd2F0IGRpZSA0ZGUgSmFudWFyaWUgYmV2YXQgaXMgZGllIGVlcnN0ZSB3ZWVrIHZhbiBkaWUgamFhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFmO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/af.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ar-dz.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/ar-dz.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return arDz;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzP2EzNTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYXJEeiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWR6Jywge1xuICAgICAgICBtb250aHMgOiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfYp9it2K9f2KfYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn2KPYrV/YpdirX9ir2YTYp1/Yo9ixX9iu2YVf2KzZhV/Ys9ioJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgcyA6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzcyA6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG0gOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbSA6ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGggOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGggOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkIDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZCA6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNIDogJ9i02YfYsScsXG4gICAgICAgICAgICBNTSA6ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5IDogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9mG2YjYp9iqJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckR6O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ar-dz.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ar-kw.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/ar-kw.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return arKw;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1rdy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzPzQyM2UiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYXJLdyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWt3Jywge1xuICAgICAgICBtb250aHMgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYqtmG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9in2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3MgOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtIDogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoIDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoIDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZCA6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTSA6ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeSA6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPZhtmI2KfYqidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckt3O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ar-kw.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ar-ly.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/ar-ly.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '1',\n        '2': '2',\n        '3': '3',\n        '4': '4',\n        '5': '5',\n        '6': '6',\n        '7': '7',\n        '8': '8',\n        '9': '9',\n        '0': '0'\n    }, pluralForm = function (n) {\n        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n    }, plurals = {\n        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n    }, pluralize = function (u) {\n        return function (number, withoutSuffix, string, isFuture) {\n            var f = pluralForm(number),\n                str = plurals[u][pluralForm(number)];\n            if (f === 2) {\n                str = str[withoutSuffix ? 0 : 1];\n            }\n            return str.replace(/%d/i, number);\n        };\n    }, months = [\n        'يناير',\n        'فبراير',\n        'مارس',\n        'أبريل',\n        'مايو',\n        'يونيو',\n        'يوليو',\n        'أغسطس',\n        'سبتمبر',\n        'أكتوبر',\n        'نوفمبر',\n        'ديسمبر'\n    ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/\\u200FM/\\u200FYYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'بعد %s',\n            past : 'منذ %s',\n            s : pluralize('s'),\n            ss : pluralize('s'),\n            m : pluralize('m'),\n            mm : pluralize('m'),\n            h : pluralize('h'),\n            hh : pluralize('h'),\n            d : pluralize('d'),\n            dd : pluralize('d'),\n            M : pluralize('M'),\n            MM : pluralize('M'),\n            y : pluralize('y'),\n            yy : pluralize('y')\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return arLy;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1seS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzPzFjZmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICcxJyxcbiAgICAgICAgJzInOiAnMicsXG4gICAgICAgICczJzogJzMnLFxuICAgICAgICAnNCc6ICc0JyxcbiAgICAgICAgJzUnOiAnNScsXG4gICAgICAgICc2JzogJzYnLFxuICAgICAgICAnNyc6ICc3JyxcbiAgICAgICAgJzgnOiAnOCcsXG4gICAgICAgICc5JzogJzknLFxuICAgICAgICAnMCc6ICcwJ1xuICAgIH0sIHBsdXJhbEZvcm0gPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gbiA9PT0gMCA/IDAgOiBuID09PSAxID8gMSA6IG4gPT09IDIgPyAyIDogbiAlIDEwMCA+PSAzICYmIG4gJSAxMDAgPD0gMTAgPyAzIDogbiAlIDEwMCA+PSAxMSA/IDQgOiA1O1xuICAgIH0sIHBsdXJhbHMgPSB7XG4gICAgICAgIHMgOiBbJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLCAn2KvYp9mG2YrYqSDZiNin2K3Yr9ipJywgWyfYq9in2YbZitiq2KfZhicsICfYq9in2YbZitiq2YrZhiddLCAnJWQg2KvZiNin2YYnLCAnJWQg2KvYp9mG2YrYqScsICclZCDYq9in2YbZitipJ10sXG4gICAgICAgIG0gOiBbJ9ij2YLZhCDZhdmGINiv2YLZitmC2KknLCAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJywgWyfYr9mC2YrZgtiq2KfZhicsICfYr9mC2YrZgtiq2YrZhiddLCAnJWQg2K/Zgtin2KbZgicsICclZCDYr9mC2YrZgtipJywgJyVkINiv2YLZitmC2KknXSxcbiAgICAgICAgaCA6IFsn2KPZgtmEINmF2YYg2LPYp9i52KknLCAn2LPYp9i52Kkg2YjYp9it2K/YqScsIFsn2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLCAnJWQg2LPYp9i52KfYqicsICclZCDYs9in2LnYqScsICclZCDYs9in2LnYqSddLFxuICAgICAgICBkIDogWyfYo9mC2YQg2YXZhiDZitmI2YUnLCAn2YrZiNmFINmI2KfYrdivJywgWyfZitmI2YXYp9mGJywgJ9mK2YjZhdmK2YYnXSwgJyVkINij2YrYp9mFJywgJyVkINmK2YjZhdmL2KcnLCAnJWQg2YrZiNmFJ10sXG4gICAgICAgIE0gOiBbJ9ij2YLZhCDZhdmGINi02YfYsScsICfYtNmH2LEg2YjYp9it2K8nLCBbJ9i02YfYsdin2YYnLCAn2LTZh9ix2YrZhiddLCAnJWQg2KPYtNmH2LEnLCAnJWQg2LTZh9ix2KcnLCAnJWQg2LTZh9ixJ10sXG4gICAgICAgIHkgOiBbJ9ij2YLZhCDZhdmGINi52KfZhScsICfYudin2YUg2YjYp9it2K8nLCBbJ9i52KfZhdin2YYnLCAn2LnYp9mF2YrZhiddLCAnJWQg2KPYudmI2KfZhScsICclZCDYudin2YXZi9inJywgJyVkINi52KfZhSddXG4gICAgfSwgcGx1cmFsaXplID0gZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgIHZhciBmID0gcGx1cmFsRm9ybShudW1iZXIpLFxuICAgICAgICAgICAgICAgIHN0ciA9IHBsdXJhbHNbdV1bcGx1cmFsRm9ybShudW1iZXIpXTtcbiAgICAgICAgICAgIGlmIChmID09PSAyKSB7XG4gICAgICAgICAgICAgICAgc3RyID0gc3RyW3dpdGhvdXRTdWZmaXggPyAwIDogMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgICAgIH07XG4gICAgfSwgbW9udGhzID0gW1xuICAgICAgICAn2YrZhtin2YrYsScsXG4gICAgICAgICfZgdio2LHYp9mK2LEnLFxuICAgICAgICAn2YXYp9ix2LMnLFxuICAgICAgICAn2KPYqNix2YrZhCcsXG4gICAgICAgICfZhdin2YrZiCcsXG4gICAgICAgICfZitmI2YbZitmIJyxcbiAgICAgICAgJ9mK2YjZhNmK2YgnLFxuICAgICAgICAn2KPYutiz2LfYsycsXG4gICAgICAgICfYs9io2KrZhdio2LEnLFxuICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgJ9mG2YjZgdmF2KjYsScsXG4gICAgICAgICfYr9mK2LPZhdio2LEnXG4gICAgXTtcblxuICAgIHZhciBhckx5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItbHknLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnRC9cXHUyMDBGTS9cXHUyMDBGWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LV82YUvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn2KjYudivICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIHNzIDogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBtIDogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBtbSA6IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgaCA6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgaGggOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGQgOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIGRkIDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBNIDogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICBNTSA6IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgeSA6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICAgICAgeXkgOiBwbHVyYWxpemUoJ3knKVxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckx5O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ar-ly.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ar-ma.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/ar-ma.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return arMa;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzPzBhODQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYXJNYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLW1hJywge1xuICAgICAgICBtb250aHMgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYqtmG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9in2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3MgOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtIDogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoIDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoIDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZCA6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTSA6ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeSA6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPZhtmI2KfYqidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyTWE7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ar-ma.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ar-sa.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/ar-sa.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return arSa;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzPzgyMzAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfZoScsXG4gICAgICAgICcyJzogJ9miJyxcbiAgICAgICAgJzMnOiAn2aMnLFxuICAgICAgICAnNCc6ICfZpCcsXG4gICAgICAgICc1JzogJ9mlJyxcbiAgICAgICAgJzYnOiAn2aYnLFxuICAgICAgICAnNyc6ICfZpycsXG4gICAgICAgICc4JzogJ9moJyxcbiAgICAgICAgJzknOiAn2aknLFxuICAgICAgICAnMCc6ICfZoCdcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAn2aMnOiAnMycsXG4gICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAn2aYnOiAnNicsXG4gICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAn2aknOiAnOScsXG4gICAgICAgICfZoCc6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgYXJTYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLXNhJywge1xuICAgICAgICBtb250aHMgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2YrZiF/ZitmI2YbZitmIX9mK2YjZhNmK2Yhf2KPYutiz2LfYs1/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i1JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZhSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3MgOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtIDogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoIDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoIDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZCA6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTSA6ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeSA6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPZhtmI2KfYqidcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJTYTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ar-sa.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ar-tn.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/ar-tn.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss : '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات'\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return arTn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci10bi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzPzZkODMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYXJUbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLXRuJywge1xuICAgICAgICBtb250aHM6ICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzcyA6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJUbjtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ar-tn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ar.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ar.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    }, pluralForm = function (n) {\n        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n    }, plurals = {\n        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n    }, pluralize = function (u) {\n        return function (number, withoutSuffix, string, isFuture) {\n            var f = pluralForm(number),\n                str = plurals[u][pluralForm(number)];\n            if (f === 2) {\n                str = str[withoutSuffix ? 0 : 1];\n            }\n            return str.replace(/%d/i, number);\n        };\n    }, months = [\n        'يناير',\n        'فبراير',\n        'مارس',\n        'أبريل',\n        'مايو',\n        'يونيو',\n        'يوليو',\n        'أغسطس',\n        'سبتمبر',\n        'أكتوبر',\n        'نوفمبر',\n        'ديسمبر'\n    ];\n\n    var ar = moment.defineLocale('ar', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/\\u200FM/\\u200FYYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'بعد %s',\n            past : 'منذ %s',\n            s : pluralize('s'),\n            ss : pluralize('s'),\n            m : pluralize('m'),\n            mm : pluralize('m'),\n            h : pluralize('h'),\n            hh : pluralize('h'),\n            d : pluralize('d'),\n            dd : pluralize('d'),\n            M : pluralize('M'),\n            MM : pluralize('M'),\n            y : pluralize('y'),\n            yy : pluralize('y')\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return ar;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzPzhlNzMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfZoScsXG4gICAgICAgICcyJzogJ9miJyxcbiAgICAgICAgJzMnOiAn2aMnLFxuICAgICAgICAnNCc6ICfZpCcsXG4gICAgICAgICc1JzogJ9mlJyxcbiAgICAgICAgJzYnOiAn2aYnLFxuICAgICAgICAnNyc6ICfZpycsXG4gICAgICAgICc4JzogJ9moJyxcbiAgICAgICAgJzknOiAn2aknLFxuICAgICAgICAnMCc6ICfZoCdcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAn2aMnOiAnMycsXG4gICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAn2aYnOiAnNicsXG4gICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAn2aknOiAnOScsXG4gICAgICAgICfZoCc6ICcwJ1xuICAgIH0sIHBsdXJhbEZvcm0gPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gbiA9PT0gMCA/IDAgOiBuID09PSAxID8gMSA6IG4gPT09IDIgPyAyIDogbiAlIDEwMCA+PSAzICYmIG4gJSAxMDAgPD0gMTAgPyAzIDogbiAlIDEwMCA+PSAxMSA/IDQgOiA1O1xuICAgIH0sIHBsdXJhbHMgPSB7XG4gICAgICAgIHMgOiBbJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLCAn2KvYp9mG2YrYqSDZiNin2K3Yr9ipJywgWyfYq9in2YbZitiq2KfZhicsICfYq9in2YbZitiq2YrZhiddLCAnJWQg2KvZiNin2YYnLCAnJWQg2KvYp9mG2YrYqScsICclZCDYq9in2YbZitipJ10sXG4gICAgICAgIG0gOiBbJ9ij2YLZhCDZhdmGINiv2YLZitmC2KknLCAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJywgWyfYr9mC2YrZgtiq2KfZhicsICfYr9mC2YrZgtiq2YrZhiddLCAnJWQg2K/Zgtin2KbZgicsICclZCDYr9mC2YrZgtipJywgJyVkINiv2YLZitmC2KknXSxcbiAgICAgICAgaCA6IFsn2KPZgtmEINmF2YYg2LPYp9i52KknLCAn2LPYp9i52Kkg2YjYp9it2K/YqScsIFsn2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLCAnJWQg2LPYp9i52KfYqicsICclZCDYs9in2LnYqScsICclZCDYs9in2LnYqSddLFxuICAgICAgICBkIDogWyfYo9mC2YQg2YXZhiDZitmI2YUnLCAn2YrZiNmFINmI2KfYrdivJywgWyfZitmI2YXYp9mGJywgJ9mK2YjZhdmK2YYnXSwgJyVkINij2YrYp9mFJywgJyVkINmK2YjZhdmL2KcnLCAnJWQg2YrZiNmFJ10sXG4gICAgICAgIE0gOiBbJ9ij2YLZhCDZhdmGINi02YfYsScsICfYtNmH2LEg2YjYp9it2K8nLCBbJ9i02YfYsdin2YYnLCAn2LTZh9ix2YrZhiddLCAnJWQg2KPYtNmH2LEnLCAnJWQg2LTZh9ix2KcnLCAnJWQg2LTZh9ixJ10sXG4gICAgICAgIHkgOiBbJ9ij2YLZhCDZhdmGINi52KfZhScsICfYudin2YUg2YjYp9it2K8nLCBbJ9i52KfZhdin2YYnLCAn2LnYp9mF2YrZhiddLCAnJWQg2KPYudmI2KfZhScsICclZCDYudin2YXZi9inJywgJyVkINi52KfZhSddXG4gICAgfSwgcGx1cmFsaXplID0gZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgIHZhciBmID0gcGx1cmFsRm9ybShudW1iZXIpLFxuICAgICAgICAgICAgICAgIHN0ciA9IHBsdXJhbHNbdV1bcGx1cmFsRm9ybShudW1iZXIpXTtcbiAgICAgICAgICAgIGlmIChmID09PSAyKSB7XG4gICAgICAgICAgICAgICAgc3RyID0gc3RyW3dpdGhvdXRTdWZmaXggPyAwIDogMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgICAgIH07XG4gICAgfSwgbW9udGhzID0gW1xuICAgICAgICAn2YrZhtin2YrYsScsXG4gICAgICAgICfZgdio2LHYp9mK2LEnLFxuICAgICAgICAn2YXYp9ix2LMnLFxuICAgICAgICAn2KPYqNix2YrZhCcsXG4gICAgICAgICfZhdin2YrZiCcsXG4gICAgICAgICfZitmI2YbZitmIJyxcbiAgICAgICAgJ9mK2YjZhNmK2YgnLFxuICAgICAgICAn2KPYutiz2LfYsycsXG4gICAgICAgICfYs9io2KrZhdio2LEnLFxuICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgJ9mG2YjZgdmF2KjYsScsXG4gICAgICAgICfYr9mK2LPZhdio2LEnXG4gICAgXTtcblxuICAgIHZhciBhciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyJywge1xuICAgICAgICBtb250aHMgOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0IDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5cyA6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0QvXFx1MjAwRk0vXFx1MjAwRllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i1JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZhSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9io2LnYryAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzIDogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBzcyA6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgbSA6IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgbW0gOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIGggOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGhoIDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBkIDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBkZCA6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgTSA6IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgTU0gOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIHkgOiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgICAgIHl5IDogcGx1cmFsaXplKCd5JylcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ar.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/az.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/az.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı'\n    };\n\n    var az = moment.defineLocale('az', {\n        months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n        monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n        weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[bugün saat] LT',\n            nextDay : '[sabah saat] LT',\n            nextWeek : '[gələn həftə] dddd [saat] LT',\n            lastDay : '[dünən] LT',\n            lastWeek : '[keçən həftə] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s sonra',\n            past : '%s əvvəl',\n            s : 'birneçə saniyə',\n            ss : '%d saniyə',\n            m : 'bir dəqiqə',\n            mm : '%d dəqiqə',\n            h : 'bir saat',\n            hh : '%d saat',\n            d : 'bir gün',\n            dd : '%d gün',\n            M : 'bir ay',\n            MM : '%d ay',\n            y : 'bir il',\n            yy : '%d il'\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM : function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal : function (number) {\n            if (number === 0) {  // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = number % 100 - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return az;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hei5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzPzQ4NWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6ICctaW5jaScsXG4gICAgICAgIDU6ICctaW5jaScsXG4gICAgICAgIDg6ICctaW5jaScsXG4gICAgICAgIDcwOiAnLWluY2knLFxuICAgICAgICA4MDogJy1pbmNpJyxcbiAgICAgICAgMjogJy1uY2knLFxuICAgICAgICA3OiAnLW5jaScsXG4gICAgICAgIDIwOiAnLW5jaScsXG4gICAgICAgIDUwOiAnLW5jaScsXG4gICAgICAgIDM6ICctw7xuY8O8JyxcbiAgICAgICAgNDogJy3DvG5jw7wnLFxuICAgICAgICAxMDA6ICctw7xuY8O8JyxcbiAgICAgICAgNjogJy1uY8SxJyxcbiAgICAgICAgOTogJy11bmN1JyxcbiAgICAgICAgMTA6ICctdW5jdScsXG4gICAgICAgIDMwOiAnLXVuY3UnLFxuICAgICAgICA2MDogJy3EsW5jxLEnLFxuICAgICAgICA5MDogJy3EsW5jxLEnXG4gICAgfTtcblxuICAgIHZhciBheiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2F6Jywge1xuICAgICAgICBtb250aHMgOiAneWFudmFyX2ZldnJhbF9tYXJ0X2FwcmVsX21heV9peXVuX2l5dWxfYXZxdXN0X3NlbnR5YWJyX29rdHlhYnJfbm95YWJyX2Rla2Ficicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAneWFuX2Zldl9tYXJfYXByX21heV9peW5faXlsX2F2cV9zZW5fb2t0X25veV9kZWsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0JhemFyX0JhemFyIGVydMmZc2lfw4fJmXLFn8mZbmLJmSBheMWfYW3EsV/Dh8mZcsWfyZluYsmZX0PDvG3JmSBheMWfYW3EsV9Dw7xtyZlfxZ7JmW5iyZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnQmF6X0J6RV/Dh0F4X8OHyZlyX0NBeF9Dw7xtX8WeyZluJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdCel9CRV/Dh0Ffw4fJmV9DQV9Dw7xfxZ7JmScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW2J1Z8O8biBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tzYWJhaCBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdbZ8mZbMmZbiBoyZlmdMmZXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tkw7xuyZluXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdba2XDp8mZbiBoyZlmdMmZXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgc29ucmEnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDJmXZ2yZlsJyxcbiAgICAgICAgICAgIHMgOiAnYmlybmXDp8mZIHNhbml5yZknLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2FuaXnJmScsXG4gICAgICAgICAgICBtIDogJ2JpciBkyZlxaXHJmScsXG4gICAgICAgICAgICBtbSA6ICclZCBkyZlxaXHJmScsXG4gICAgICAgICAgICBoIDogJ2JpciBzYWF0JyxcbiAgICAgICAgICAgIGhoIDogJyVkIHNhYXQnLFxuICAgICAgICAgICAgZCA6ICdiaXIgZ8O8bicsXG4gICAgICAgICAgICBkZCA6ICclZCBnw7xuJyxcbiAgICAgICAgICAgIE0gOiAnYmlyIGF5JyxcbiAgICAgICAgICAgIE1NIDogJyVkIGF5JyxcbiAgICAgICAgICAgIHkgOiAnYmlyIGlsJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGlsJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZ2VjyZl8c8mZaMmZcnxnw7xuZMO8enxheMWfYW0vLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14oZ8O8bmTDvHp8YXjFn2FtKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZ2VjyZknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3PJmWjJmXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2fDvG5kw7x6JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdheMWfYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKMSxbmPEsXxpbmNpfG5jaXzDvG5jw7x8bmPEsXx1bmN1KS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7ICAvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm9cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3EsW5jxLEnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyICUgMTAwIC0gYSxcbiAgICAgICAgICAgICAgICBjID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXo7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/az.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/be.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/be.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            'dd': 'дзень_дні_дзён',\n            'MM': 'месяц_месяцы_месяцаў',\n            'yy': 'год_гады_гадоў'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        }\n        else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months : {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n        },\n        monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n        weekdays : {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/\n        },\n        weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY г.',\n            LLL : 'D MMMM YYYY г., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n        },\n        calendar : {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'праз %s',\n            past : '%s таму',\n            s : 'некалькі секунд',\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : relativeTimeWithPlural,\n            hh : relativeTimeWithPlural,\n            d : 'дзень',\n            dd : relativeTimeWithPlural,\n            M : 'месяц',\n            MM : relativeTimeWithPlural,\n            y : 'год',\n            yy : relativeTimeWithPlural\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM : function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return be;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzPzFmYzEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IChudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMCkgPyBmb3Jtc1sxXSA6IGZvcm1zWzJdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3NzJzogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICAnbW0nOiB3aXRob3V0U3VmZml4ID8gJ9GF0LLRltC70ZbQvdCwX9GF0LLRltC70ZbQvdGLX9GF0LLRltC70ZbQvScgOiAn0YXQstGW0LvRltC90YNf0YXQstGW0LvRltC90Ytf0YXQstGW0LvRltC9JyxcbiAgICAgICAgICAgICdoaCc6IHdpdGhvdXRTdWZmaXggPyAn0LPQsNC00LfRltC90LBf0LPQsNC00LfRltC90Ytf0LPQsNC00LfRltC9JyA6ICfQs9Cw0LTQt9GW0L3Rg1/Qs9Cw0LTQt9GW0L3Ri1/Qs9Cw0LTQt9GW0L0nLFxuICAgICAgICAgICAgJ2RkJzogJ9C00LfQtdC90Yxf0LTQvdGWX9C00LfRkdC9JyxcbiAgICAgICAgICAgICdNTSc6ICfQvNC10YHRj9GGX9C80LXRgdGP0YbRi1/QvNC10YHRj9GG0LDRnicsXG4gICAgICAgICAgICAneXknOiAn0LPQvtC0X9Cz0LDQtNGLX9Cz0LDQtNC+0Z4nXG4gICAgICAgIH07XG4gICAgICAgIGlmIChrZXkgPT09ICdtJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0YXQstGW0LvRltC90LAnIDogJ9GF0LLRltC70ZbQvdGDJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdoJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LPQsNC00LfRltC90LAnIDogJ9Cz0LDQtNC30ZbQvdGDJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBwbHVyYWwoZm9ybWF0W2tleV0sICtudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYmUnLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9GB0YLRg9C00LfQtdC90Y9f0LvRjtGC0LDQs9CwX9GB0LDQutCw0LLRltC60LBf0LrRgNCw0YHQsNCy0ZbQutCwX9GC0YDQsNGe0L3Rj1/Rh9GN0YDQstC10L3Rj1/Qu9GW0L/QtdC90Y9f0LbQvdGW0Z7QvdGPX9Cy0LXRgNCw0YHQvdGPX9C60LDRgdGC0YDRi9GH0L3RltC60LBf0LvRltGB0YLQsNC/0LDQtNCwX9GB0L3QtdC20L3Rjycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfRgdGC0YPQtNC30LXQvdGMX9C70Y7RgtGLX9GB0LDQutCw0LLRltC6X9C60YDQsNGB0LDQstGW0Lpf0YLRgNCw0LLQtdC90Yxf0YfRjdGA0LLQtdC90Yxf0LvRltC/0LXQvdGMX9C20L3RltCy0LXQvdGMX9Cy0LXRgNCw0YHQtdC90Yxf0LrQsNGB0YLRgNGL0YfQvdGW0Lpf0LvRltGB0YLQsNC/0LDQtF/RgdC90LXQttCw0L3RjCcuc3BsaXQoJ18nKVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICfRgdGC0YPQtF/Qu9GO0YJf0YHQsNC6X9C60YDQsNGBX9GC0YDQsNCyX9GH0Y3RgNCyX9C70ZbQv1/QttC90ZbQsl/QstC10YBf0LrQsNGB0YJf0LvRltGB0YJf0YHQvdC10LYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0L3Rj9C00LfQtdC70Y5f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC0L7RgNCw0Lpf0YHQtdGA0LDQtNGDX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW0YbRg1/RgdGD0LHQvtGC0YMnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0L3Rj9C00LfQtdC70Y9f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC0L7RgNCw0Lpf0YHQtdGA0LDQtNCwX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW0YbQsF/RgdGD0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL1xcWyA/W9Cj0YPRnl0gPyg/OtC80ZbQvdGD0LvRg9GOfNC90LDRgdGC0YPQv9C90YPRjik/ID9cXF0gP2RkZGQvXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0L3QtF/Qv9C9X9Cw0YJf0YHRgF/Rh9GGX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0L3QtF/Qv9C9X9Cw0YJf0YHRgF/Rh9GGX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZINCzLicsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg0LMuLCBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZINCzLiwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQodGR0L3QvdGPINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9CX0LDRntGC0YDQsCDRnl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQo9GH0L7RgNCwINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW9CjXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CjINC80ZbQvdGD0LvRg9GOXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0KMg0LzRltC90YPQu9GLXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQv9GA0LDQtyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzINGC0LDQvNGDJyxcbiAgICAgICAgICAgIHMgOiAn0L3QtdC60LDQu9GM0LrRliDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiAn0LTQt9C10L3RjCcsXG4gICAgICAgICAgICBkZCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNIDogJ9C80LXRgdGP0YYnLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeSA6ICfQs9C+0LQnLFxuICAgICAgICAgICAgeXkgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfRi3zRgNCw0L3RltGG0Yt80LTQvdGPfNCy0LXRh9Cw0YDQsC8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0LDRgNCwKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0L3QvtGH0YsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA0LDQvdGW0YbRiyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LTQvdGPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQstC10YfQsNGA0LAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNGWfNGLfNCz0LApLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAobnVtYmVyICUgMTAgPT09IDIgfHwgbnVtYmVyICUgMTAgPT09IDMpICYmIChudW1iZXIgJSAxMDAgIT09IDEyICYmIG51bWJlciAlIDEwMCAhPT0gMTMpID8gbnVtYmVyICsgJy3RlicgOiBudW1iZXIgKyAnLdGLJztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQsCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmU7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/be.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/bg.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/bg.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var bg = moment.defineLocale('bg', {\n        months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n        monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n        weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'D.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay : '[Днес в] LT',\n            nextDay : '[Утре в] LT',\n            nextWeek : 'dddd [в] LT',\n            lastDay : '[Вчера в] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[В изминалата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[В изминалия] dddd [в] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'след %s',\n            past : 'преди %s',\n            s : 'няколко секунди',\n            ss : '%d секунди',\n            m : 'минута',\n            mm : '%d минути',\n            h : 'час',\n            hh : '%d часа',\n            d : 'ден',\n            dd : '%d дни',\n            M : 'месец',\n            MM : '%d месеца',\n            y : 'година',\n            yy : '%d години'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal : function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return bg;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzPzg0YWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYmcgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdiZycsIHtcbiAgICAgICAgbW9udGhzIDogJ9GP0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9GP0L3RgF/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfQvdC10LTQtdC70Y9f0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNGP0LTQsF/Rh9C10YLQstGK0YDRgtGK0Lpf0L/QtdGC0YrQul/RgdGK0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNGPX9GH0LXRgl/Qv9C10YJf0YHRitCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CU0L3QtdGBINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vQo9GC0YDQtSDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9CS0YfQtdGA0LAg0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0LjQt9C80LjQvdCw0LvQsNGC0LBdIGRkZGQgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC40LfQvNC40L3QsNC70LjRj10gZGRkZCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9GB0LvQtdC0ICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn0L/RgNC10LTQuCAlcycsXG4gICAgICAgICAgICBzIDogJ9C90Y/QutC+0LvQutC+INGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzIDogJyVkINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIG0gOiAn0LzQuNC90YPRgtCwJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC80LjQvdGD0YLQuCcsXG4gICAgICAgICAgICBoIDogJ9GH0LDRgScsXG4gICAgICAgICAgICBoaCA6ICclZCDRh9Cw0YHQsCcsXG4gICAgICAgICAgICBkIDogJ9C00LXQvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQtNC90LgnLFxuICAgICAgICAgICAgTSA6ICfQvNC10YHQtdGGJyxcbiAgICAgICAgICAgIE1NIDogJyVkINC80LXRgdC10YbQsCcsXG4gICAgICAgICAgICB5IDogJ9Cz0L7QtNC40L3QsCcsXG4gICAgICAgICAgICB5eSA6ICclZCDQs9C+0LTQuNC90LgnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0LXQsnzQtdC9fNGC0Lh80LLQuHzRgNC4fNC80LgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBsYXN0RGlnaXQgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBsYXN0MkRpZ2l0cyA9IG51bWJlciAlIDEwMDtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdCyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdC9JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPiAxMCAmJiBsYXN0MkRpZ2l0cyA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCy0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgNC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSA3IHx8IGxhc3REaWdpdCA9PT0gOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC80LgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmc7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/bg.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/bm.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/bm.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var bm = moment.defineLocale('bm', {\n        months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n        monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'MMMM [tile] D [san] YYYY',\n            LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n        },\n        calendar : {\n            sameDay : '[Bi lɛrɛ] LT',\n            nextDay : '[Sini lɛrɛ] LT',\n            nextWeek : 'dddd [don lɛrɛ] LT',\n            lastDay : '[Kunu lɛrɛ] LT',\n            lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s kɔnɔ',\n            past : 'a bɛ %s bɔ',\n            s : 'sanga dama dama',\n            ss : 'sekondi %d',\n            m : 'miniti kelen',\n            mm : 'miniti %d',\n            h : 'lɛrɛ kelen',\n            hh : 'lɛrɛ %d',\n            d : 'tile kelen',\n            dd : 'tile %d',\n            M : 'kalo kelen',\n            MM : 'kalo %d',\n            y : 'san kelen',\n            yy : 'san %d'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return bm;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzP2E3ZmEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYm0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibScsIHtcbiAgICAgICAgbW9udGhzIDogJ1phbnd1eWVrYWxvX0Zld3VydXlla2Fsb19NYXJpc2lrYWxvX0F3aXJpbGlrYWxvX03Jm2thbG9fWnV3yZtua2Fsb19adWx1eWVrYWxvX1V0aWthbG9fU8mbdGFuYnVydWthbG9fyZRrdXTJlGJ1cnVrYWxvX05vd2FuYnVydWthbG9fRGVzYW5idXJ1a2Fsbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnWmFuX0Zld19NYXJfQXdpX03Jm19adXdfWnVsX1V0aV9TyZt0X8mUa3VfTm93X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnS2FyaV9OdMmbbsmbbl9UYXJhdGFfQXJhYmFfQWxhbWlzYV9KdW1hX1NpYmlyaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdLYXJfTnTJm19UYXJfQXJhX0FsYV9KdW1fU2liJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdLYV9OdF9UYV9Bcl9BbF9KdV9TaScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ01NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIFtsyZtyyZtdIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVkgW2zJm3LJm10gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbQmkgbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tTaW5pIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbZG9uIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS3VudSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW3TJm23Jm25lbiBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBryZRuyZQnLFxuICAgICAgICAgICAgcGFzdCA6ICdhIGLJmyAlcyBiyZQnLFxuICAgICAgICAgICAgcyA6ICdzYW5nYSBkYW1hIGRhbWEnLFxuICAgICAgICAgICAgc3MgOiAnc2Vrb25kaSAlZCcsXG4gICAgICAgICAgICBtIDogJ21pbml0aSBrZWxlbicsXG4gICAgICAgICAgICBtbSA6ICdtaW5pdGkgJWQnLFxuICAgICAgICAgICAgaCA6ICdsyZtyyZsga2VsZW4nLFxuICAgICAgICAgICAgaGggOiAnbMmbcsmbICVkJyxcbiAgICAgICAgICAgIGQgOiAndGlsZSBrZWxlbicsXG4gICAgICAgICAgICBkZCA6ICd0aWxlICVkJyxcbiAgICAgICAgICAgIE0gOiAna2FsbyBrZWxlbicsXG4gICAgICAgICAgICBNTSA6ICdrYWxvICVkJyxcbiAgICAgICAgICAgIHkgOiAnc2FuIGtlbGVuJyxcbiAgICAgICAgICAgIHl5IDogJ3NhbiAlZCdcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm07XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/bm.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/bn.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/bn.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '১',\n        '2': '২',\n        '3': '৩',\n        '4': '৪',\n        '5': '৫',\n        '6': '৬',\n        '7': '৭',\n        '8': '৮',\n        '9': '৯',\n        '0': '০'\n    },\n    numberMap = {\n        '১': '1',\n        '২': '2',\n        '৩': '3',\n        '৪': '4',\n        '৫': '5',\n        '৬': '6',\n        '৭': '7',\n        '৮': '8',\n        '৯': '9',\n        '০': '0'\n    };\n\n    var bn = moment.defineLocale('bn', {\n        months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n        monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm সময়',\n            LTS : 'A h:mm:ss সময়',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm সময়',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n        },\n        calendar : {\n            sameDay : '[আজ] LT',\n            nextDay : '[আগামীকাল] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[গতকাল] LT',\n            lastWeek : '[গত] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s পরে',\n            past : '%s আগে',\n            s : 'কয়েক সেকেন্ড',\n            ss : '%d সেকেন্ড',\n            m : 'এক মিনিট',\n            mm : '%d মিনিট',\n            h : 'এক ঘন্টা',\n            hh : '%d ঘন্টা',\n            d : 'এক দিন',\n            dd : '%d দিন',\n            M : 'এক মাস',\n            MM : '%d মাস',\n            y : 'এক বছর',\n            yy : '%d বছর'\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'রাত' && hour >= 4) ||\n                    (meridiem === 'দুপুর' && hour < 5) ||\n                    meridiem === 'বিকাল') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return bn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzPzkwNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgp6cnLFxuICAgICAgICAnMic6ICfgp6gnLFxuICAgICAgICAnMyc6ICfgp6knLFxuICAgICAgICAnNCc6ICfgp6onLFxuICAgICAgICAnNSc6ICfgp6snLFxuICAgICAgICAnNic6ICfgp6wnLFxuICAgICAgICAnNyc6ICfgp60nLFxuICAgICAgICAnOCc6ICfgp64nLFxuICAgICAgICAnOSc6ICfgp68nLFxuICAgICAgICAnMCc6ICfgp6YnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgp6cnOiAnMScsXG4gICAgICAgICfgp6gnOiAnMicsXG4gICAgICAgICfgp6knOiAnMycsXG4gICAgICAgICfgp6onOiAnNCcsXG4gICAgICAgICfgp6snOiAnNScsXG4gICAgICAgICfgp6wnOiAnNicsXG4gICAgICAgICfgp60nOiAnNycsXG4gICAgICAgICfgp64nOiAnOCcsXG4gICAgICAgICfgp68nOiAnOScsXG4gICAgICAgICfgp6YnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGJuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm4nLCB7XG4gICAgICAgIG1vbnRocyA6ICfgppzgpr7gpqjgp4Hgp5/gpr7gprDgp4Bf4Kar4KeH4Kas4KeN4Kaw4KeB4Kef4Ka+4Kaw4Ka/X+CmruCmvuCmsOCnjeCmml/gpo/gpqrgp43gprDgpr/gprJf4Kau4KeHX+CmnOCngeCmqF/gppzgp4HgprLgpr7gpodf4KaG4KaX4Ka44KeN4KafX+CmuOCnh+CmquCnjeCmn+Cnh+CmruCnjeCmrOCmsF/gpoXgppXgp43gpp/gp4vgpqzgprBf4Kao4Kat4KeH4Kau4KeN4Kas4KawX+CmoeCmv+CmuOCnh+CmruCnjeCmrOCmsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4Kac4Ka+4Kao4KeBX+Cmq+Cnh+CmrF/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4KawX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4KayX+CmhuCml1/gprjgp4fgpqrgp43gpp9f4KaF4KaV4KeN4Kaf4KeLX+CmqOCmreCnh1/gpqHgpr/gprjgp4cnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+CmsOCmrOCmv+CmrOCmvuCmsF/gprjgp4vgpq7gpqzgpr7gprBf4Kau4KaZ4KeN4KaX4Kay4Kas4Ka+4KawX+CmrOCngeCmp+CmrOCmvuCmsF/gpqzgp4Pgprngprjgp43gpqrgpqTgpr/gpqzgpr7gprBf4Ka24KeB4KaV4KeN4Kaw4Kas4Ka+4KawX+CmtuCmqOCmv+CmrOCmvuCmsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgprDgpqzgpr9f4Ka44KeL4KauX+CmruCmmeCnjeCml+Cmsl/gpqzgp4Hgpqdf4Kas4KeD4Ka54Ka44KeN4Kaq4Kak4Ka/X+CmtuCngeCmleCnjeCmsF/gprbgpqjgpr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaXX+CmrOCngeCmp1/gpqzgp4PgprngpoNf4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3Mg4Ka44Kau4KefJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCmuOCmruCnnydcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgpobgppxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CmhuCml+CmvuCmruCngOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4KaX4Kak4KaV4Ka+4KayXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4KaX4KakXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4Kaq4Kaw4KeHJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4KaG4KaX4KeHJyxcbiAgICAgICAgICAgIHMgOiAn4KaV4Kef4KeH4KaVIOCmuOCnh+CmleCnh+CmqOCnjeCmoScsXG4gICAgICAgICAgICBzcyA6ICclZCDgprjgp4fgppXgp4fgpqjgp43gpqEnLFxuICAgICAgICAgICAgbSA6ICfgpo/gppUg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOCmruCmv+CmqOCmv+CmnycsXG4gICAgICAgICAgICBoIDogJ+Cmj+CmlSDgppjgpqjgp43gpp/gpr4nLFxuICAgICAgICAgICAgaGggOiAnJWQg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGQgOiAn4KaP4KaVIOCmpuCmv+CmqCcsXG4gICAgICAgICAgICBkZCA6ICclZCDgpqbgpr/gpqgnLFxuICAgICAgICAgICAgTSA6ICfgpo/gppUg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCmruCmvuCmuCcsXG4gICAgICAgICAgICB5IDogJ+Cmj+CmlSDgpqzgppvgprAnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4Kas4Kab4KawJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Ken4Keo4Kep4Keq4Ker4Kes4Ket4Keu4Kev4KemXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kaw4Ka+4KakfOCmuOCmleCmvuCmsnzgpqbgp4Hgpqrgp4HgprB84Kas4Ka/4KaV4Ka+4KayfOCmsOCmvuCmpC8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG1lcmlkaWVtID09PSAn4Kaw4Ka+4KakJyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+CmpuCngeCmquCngeCmsCcgJiYgaG91ciA8IDUpIHx8XG4gICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4Kas4Ka/4KaV4Ka+4KayJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kaw4Ka+4KakJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprjgppXgpr7gprInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmpuCngeCmquCngeCmsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kas4Ka/4KaV4Ka+4KayJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBibjtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/bn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/bo.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/bo.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '༡',\n        '2': '༢',\n        '3': '༣',\n        '4': '༤',\n        '5': '༥',\n        '6': '༦',\n        '7': '༧',\n        '8': '༨',\n        '9': '༩',\n        '0': '༠'\n    },\n    numberMap = {\n        '༡': '1',\n        '༢': '2',\n        '༣': '3',\n        '༤': '4',\n        '༥': '5',\n        '༦': '6',\n        '༧': '7',\n        '༨': '8',\n        '༩': '9',\n        '༠': '0'\n    };\n\n    var bo = moment.defineLocale('bo', {\n        months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n        monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n        weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n        weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n        weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[དི་རིང] LT',\n            nextDay : '[སང་ཉིན] LT',\n            nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay : '[ཁ་སང] LT',\n            lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ལ་',\n            past : '%s སྔན་ལ',\n            s : 'ལམ་སང',\n            ss : '%d སྐར་ཆ།',\n            m : 'སྐར་མ་གཅིག',\n            mm : '%d སྐར་མ',\n            h : 'ཆུ་ཚོད་གཅིག',\n            hh : '%d ཆུ་ཚོད',\n            d : 'ཉིན་གཅིག',\n            dd : '%d ཉིན་',\n            M : 'ཟླ་བ་གཅིག',\n            MM : '%d ཟླ་བ',\n            y : 'ལོ་གཅིག',\n            yy : '%d ལོ'\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n                    (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                    meridiem === 'དགོང་དག') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return bo;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iby5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzP2QyNmEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgvKEnLFxuICAgICAgICAnMic6ICfgvKInLFxuICAgICAgICAnMyc6ICfgvKMnLFxuICAgICAgICAnNCc6ICfgvKQnLFxuICAgICAgICAnNSc6ICfgvKUnLFxuICAgICAgICAnNic6ICfgvKYnLFxuICAgICAgICAnNyc6ICfgvKcnLFxuICAgICAgICAnOCc6ICfgvKgnLFxuICAgICAgICAnOSc6ICfgvKknLFxuICAgICAgICAnMCc6ICfgvKAnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgvKEnOiAnMScsXG4gICAgICAgICfgvKInOiAnMicsXG4gICAgICAgICfgvKMnOiAnMycsXG4gICAgICAgICfgvKQnOiAnNCcsXG4gICAgICAgICfgvKUnOiAnNScsXG4gICAgICAgICfgvKYnOiAnNicsXG4gICAgICAgICfgvKcnOiAnNycsXG4gICAgICAgICfgvKgnOiAnOCcsXG4gICAgICAgICfgvKknOiAnOScsXG4gICAgICAgICfgvKAnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGJvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm8nLCB7XG4gICAgICAgIG1vbnRocyA6ICfgvZ/gvrPgvIvgvZbgvIvgvZHgvYTgvIvgvZTgvbxf4L2f4L6z4LyL4L2W4LyL4L2C4L2J4L2y4L2m4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9guC9puC9tOC9mOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZ7gvbLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2j4L6U4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC+suC9tOC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZHgvbTgvZPgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2i4L6S4L6x4L2R4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC9guC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2F4L2y4L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9guC9ieC9suC9puC8i+C9lCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4L2f4L6z4LyL4L2W4LyL4L2R4L2E4LyL4L2U4L28X+C9n+C+s+C8i+C9luC8i+C9guC9ieC9suC9puC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvYLgvabgvbTgvZjgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2e4L2y4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9o+C+lOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZHgvrLgvbTgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2R4L204L2T4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9ouC+kuC+seC9keC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZHgvYLgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9guC9heC9suC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvYLgvYngvbLgvabgvIvgvZQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+C9guC9n+C9oOC8i+C9ieC9suC8i+C9mOC8i1/gvYLgvZ/gvaDgvIvgvZ/gvrPgvIvgvZbgvItf4L2C4L2f4L2g4LyL4L2Y4L2y4L2C4LyL4L2R4L2Y4L2i4LyLX+C9guC9n+C9oOC8i+C9o+C+t+C9guC8i+C9lOC8i1/gvYLgvZ/gvaDgvIvgvZXgvbTgvaLgvIvgvZbgvbRf4L2C4L2f4L2g4LyL4L2U4LyL4L2m4L2E4L2m4LyLX+C9guC9n+C9oOC8i+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgvYngvbLgvIvgvZjgvItf4L2f4L6z4LyL4L2W4LyLX+C9mOC9suC9guC8i+C9keC9mOC9ouC8i1/gvaPgvrfgvYLgvIvgvZTgvItf4L2V4L204L2i4LyL4L2W4L20X+C9lOC8i+C9puC9hOC9puC8i1/gvabgvqTgvbrgvZPgvIvgvZTgvIsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+C9ieC9suC8i+C9mOC8i1/gvZ/gvrPgvIvgvZbgvItf4L2Y4L2y4L2C4LyL4L2R4L2Y4L2i4LyLX+C9o+C+t+C9guC8i+C9lOC8i1/gvZXgvbTgvaLgvIvgvZbgvbRf4L2U4LyL4L2m4L2E4L2m4LyLX+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C9keC9suC8i+C9ouC9suC9hF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4L2m4L2E4LyL4L2J4L2y4L2TXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb4L2W4L2R4L204L2T4LyL4L2V4L6y4L2C4LyL4L2i4L6X4L264L2m4LyL4L2YXSwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4L2B4LyL4L2m4L2EXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4L2W4L2R4L204L2T4LyL4L2V4L6y4L2C4LyL4L2Y4L2Q4L2g4LyL4L2YXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4L2j4LyLJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4L2m4L6U4L2T4LyL4L2jJyxcbiAgICAgICAgICAgIHMgOiAn4L2j4L2Y4LyL4L2m4L2EJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOC9puC+kOC9ouC8i+C9huC8jScsXG4gICAgICAgICAgICBtIDogJ+C9puC+kOC9ouC8i+C9mOC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBtbSA6ICclZCDgvabgvpDgvaLgvIvgvZgnLFxuICAgICAgICAgICAgaCA6ICfgvYbgvbTgvIvgvZrgvbzgvZHgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgaGggOiAnJWQg4L2G4L204LyL4L2a4L284L2RJyxcbiAgICAgICAgICAgIGQgOiAn4L2J4L2y4L2T4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOC9ieC9suC9k+C8iycsXG4gICAgICAgICAgICBNIDogJ+C9n+C+s+C8i+C9luC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBNTSA6ICclZCDgvZ/gvrPgvIvgvZYnLFxuICAgICAgICAgICAgeSA6ICfgvaPgvbzgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgeXkgOiAnJWQg4L2j4L28J1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Lyh4Lyi4Lyj4Lyk4Lyl4Lym4Lyn4Lyo4Lyp4LygXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4L2Y4L2a4L2T4LyL4L2Y4L28fOC9nuC9vOC9guC9puC8i+C9gOC9pnzgvYngvbLgvZPgvIvgvYLgvbTgvYR84L2R4L2C4L284L2E4LyL4L2R4L2CfOC9mOC9muC9k+C8i+C9mOC9vC8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG1lcmlkaWVtID09PSAn4L2Y4L2a4L2T4LyL4L2Y4L28JyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCcgJiYgaG91ciA8IDUpIHx8XG4gICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4L2R4L2C4L284L2E4LyL4L2R4L2CJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2Y4L2a4L2T4LyL4L2Y4L28JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZ7gvbzgvYLgvabgvIvgvYDgvaYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2R4L2C4L284L2E4LyL4L2R4L2CJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZjgvZrgvZPgvIvgvZjgvbwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBibztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/bo.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/br.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/br.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            'mm': 'munutenn',\n            'MM': 'miz',\n            'dd': 'devezh'\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            'm': 'v',\n            'b': 'v',\n            'd': 'z'\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var br = moment.defineLocale('br', {\n        months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n        monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h[e]mm A',\n            LTS : 'h[e]mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D [a viz] MMMM YYYY',\n            LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n            LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n        },\n        calendar : {\n            sameDay : '[Hiziv da] LT',\n            nextDay : '[Warc\\'hoazh da] LT',\n            nextWeek : 'dddd [da] LT',\n            lastDay : '[Dec\\'h da] LT',\n            lastWeek : 'dddd [paset da] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'a-benn %s',\n            past : '%s \\'zo',\n            s : 'un nebeud segondennoù',\n            ss : '%d eilenn',\n            m : 'ur vunutenn',\n            mm : relativeTimeWithMutation,\n            h : 'un eur',\n            hh : '%d eur',\n            d : 'un devezh',\n            dd : relativeTimeWithMutation,\n            M : 'ur miz',\n            MM : relativeTimeWithMutation,\n            y : 'ur bloaz',\n            yy : specialMutationForYears\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal : function (number) {\n            var output = (number === 1) ? 'añ' : 'vet';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return br;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ici5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzPzY4ODciXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24obnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdtbSc6ICdtdW51dGVubicsXG4gICAgICAgICAgICAnTU0nOiAnbWl6JyxcbiAgICAgICAgICAgICdkZCc6ICdkZXZlemgnXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBtdXRhdGlvbihmb3JtYXRba2V5XSwgbnVtYmVyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3BlY2lhbE11dGF0aW9uRm9yWWVhcnMobnVtYmVyKSB7XG4gICAgICAgIHN3aXRjaCAobGFzdE51bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgYmxvYXonO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyB2bG9heic7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbGFzdE51bWJlcihudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0TnVtYmVyKG51bWJlciAlIDEwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtdXRhdGlvbih0ZXh0LCBudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgcmV0dXJuIHNvZnRNdXRhdGlvbih0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gICAgZnVuY3Rpb24gc29mdE11dGF0aW9uKHRleHQpIHtcbiAgICAgICAgdmFyIG11dGF0aW9uVGFibGUgPSB7XG4gICAgICAgICAgICAnbSc6ICd2JyxcbiAgICAgICAgICAgICdiJzogJ3YnLFxuICAgICAgICAgICAgJ2QnOiAneidcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG11dGF0aW9uVGFibGVbdGV4dC5jaGFyQXQoMCldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtdXRhdGlvblRhYmxlW3RleHQuY2hhckF0KDApXSArIHRleHQuc3Vic3RyaW5nKDEpO1xuICAgIH1cblxuICAgIHZhciBiciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JyJywge1xuICAgICAgICBtb250aHMgOiAnR2VudmVyX0NcXCdod2V2cmVyX01ldXJ6aF9FYnJlbF9NYWVfTWV6aGV2ZW5fR291ZXJlX0Vvc3RfR3dlbmdvbG9fSGVyZV9EdV9LZXJ6dScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnR2VuX0NcXCdod2VfTWV1X0Vicl9NYWVfRXZlX0dvdV9Fb3NfR3dlX0hlcl9EdV9LZXInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bF9MdW5fTWV1cnpoX01lcmNcXCdoZXJfWWFvdV9Hd2VuZXJfU2Fkb3JuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bF9MdW5fTWV1X01lcl9ZYW9fR3dlX1NhZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTHVfTWVfTWVyX1lhX0d3X1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2hbZV1tbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoW2VdbW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbYSB2aXpdIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBbYSB2aXpdIE1NTU0gWVlZWSBoW2VdbW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2Egdml6XSBNTU1NIFlZWVkgaFtlXW1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbSGl6aXYgZGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1dhcmNcXCdob2F6aCBkYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbZGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0RlY1xcJ2ggZGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW3Bhc2V0IGRhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnYS1iZW5uICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgXFwnem8nLFxuICAgICAgICAgICAgcyA6ICd1biBuZWJldWQgc2Vnb25kZW5ub8O5JyxcbiAgICAgICAgICAgIHNzIDogJyVkIGVpbGVubicsXG4gICAgICAgICAgICBtIDogJ3VyIHZ1bnV0ZW5uJyxcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgaCA6ICd1biBldXInLFxuICAgICAgICAgICAgaGggOiAnJWQgZXVyJyxcbiAgICAgICAgICAgIGQgOiAndW4gZGV2ZXpoJyxcbiAgICAgICAgICAgIGRkIDogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgTSA6ICd1ciBtaXonLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24sXG4gICAgICAgICAgICB5IDogJ3VyIGJsb2F6JyxcbiAgICAgICAgICAgIHl5IDogc3BlY2lhbE11dGF0aW9uRm9yWWVhcnNcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGHDsXx2ZXQpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAobnVtYmVyID09PSAxKSA/ICdhw7EnIDogJ3ZldCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBicjtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/br.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/bs.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/bs.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danas u] LT',\n            nextDay  : '[sutra u] LT',\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[jučer u] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'par sekundi',\n            ss     : translate,\n            m      : translate,\n            mm     : translate,\n            h      : translate,\n            hh     : translate,\n            d      : 'dan',\n            dd     : translate,\n            M      : 'mjesec',\n            MM     : translate,\n            y      : 'godinu',\n            yy     : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return bs;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzPzI1NTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRuYSBtaW51dGEnIDogJ2plZG5lIG1pbnV0ZSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0ZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkYW4gc2F0JyA6ICdqZWRub2cgc2F0YSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2Rhbic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5lJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYnMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdicycsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqLl9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgIDogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5ICA6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW2p1xI1lciB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWx1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGldIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzICAgICAgOiAncGFyIHNla3VuZGknLFxuICAgICAgICAgICAgc3MgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSAgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCAgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCAgICAgIDogJ2RhbicsXG4gICAgICAgICAgICBkZCAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNICAgICAgOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgICAgICA6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXkgICAgIDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnM7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/bs.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ca.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ca.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var ca = moment.defineLocale('ca', {\n        months : {\n            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n            format: 'de gener_de febrer_de març_d\\'abril_de maig_de juny_de juliol_d\\'agost_de setembre_d\\'octubre_de novembre_de desembre'.split('_'),\n            isFormat: /D[oD]?(\\s)+MMMM/\n        },\n        monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n        weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM [de] YYYY',\n            ll : 'D MMM YYYY',\n            LLL : 'D MMMM [de] YYYY [a les] H:mm',\n            lll : 'D MMM YYYY, H:mm',\n            LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll : 'ddd D MMM YYYY, H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            nextDay : function () {\n                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            lastDay : function () {\n                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'd\\'aquí %s',\n            past : 'fa %s',\n            s : 'uns segons',\n            ss : '%d segons',\n            m : 'un minut',\n            mm : '%d minuts',\n            h : 'una hora',\n            hh : '%d hores',\n            d : 'un dia',\n            dd : '%d dies',\n            M : 'un mes',\n            MM : '%d mesos',\n            y : 'un any',\n            yy : '%d anys'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal : function (number, period) {\n            var output = (number === 1) ? 'r' :\n                (number === 2) ? 'n' :\n                (number === 3) ? 'r' :\n                (number === 4) ? 't' : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ca;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzP2Q3MTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgY2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjYScsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ2dlbmVyX2ZlYnJlcl9tYXLDp19hYnJpbF9tYWlnX2p1bnlfanVsaW9sX2Fnb3N0X3NldGVtYnJlX29jdHVicmVfbm92ZW1icmVfZGVzZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBmb3JtYXQ6ICdkZSBnZW5lcl9kZSBmZWJyZXJfZGUgbWFyw6dfZFxcJ2FicmlsX2RlIG1haWdfZGUganVueV9kZSBqdWxpb2xfZFxcJ2Fnb3N0X2RlIHNldGVtYnJlX2RcXCdvY3R1YnJlX2RlIG5vdmVtYnJlX2RlIGRlc2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9EW29EXT8oXFxzKStNTU1NL1xuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICdnZW4uX2ZlYnIuX21hcsOnX2Fici5fbWFpZ19qdW55X2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkaXVtZW5nZV9kaWxsdW5zX2RpbWFydHNfZGltZWNyZXNfZGlqb3VzX2RpdmVuZHJlc19kaXNzYWJ0ZScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkZy5fZGwuX2R0Ll9kYy5fZGouX2R2Ll9kcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RnX2RsX2R0X2RjX2RqX2R2X2RzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgbGwgOiAnRCBNTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFtkZV0gWVlZWSBbYSBsZXNdIEg6bW0nLFxuICAgICAgICAgICAgbGxsIDogJ0QgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkIEQgTU1NIFlZWVksIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1thdnVpIGEgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tkZW3DoCBhICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2FoaXIgYSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tlbF0gZGRkZCBbcGFzc2F0IGEgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RcXCdhcXXDrSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2ZhICVzJyxcbiAgICAgICAgICAgIHMgOiAndW5zIHNlZ29ucycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWdvbnMnLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dHMnLFxuICAgICAgICAgICAgaCA6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBob3JlcycsXG4gICAgICAgICAgICBkIDogJ3VuIGRpYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkaWVzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc29zJyxcbiAgICAgICAgICAgIHkgOiAndW4gYW55JyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFueXMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShyfG58dHzDqHxhKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAobnVtYmVyID09PSAxKSA/ICdyJyA6XG4gICAgICAgICAgICAgICAgKG51bWJlciA9PT0gMikgPyAnbicgOlxuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDMpID8gJ3InIDpcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSA0KSA/ICd0JyA6ICfDqCc7XG4gICAgICAgICAgICBpZiAocGVyaW9kID09PSAndycgfHwgcGVyaW9kID09PSAnVycpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjYTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ca.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/cs.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/cs.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\n\n    var monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i];\n    // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n    // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n    var monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':  // a few seconds / in a few seconds / a few seconds ago\n                return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n                break;\n            case 'm':  // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n                break;\n            case 'h':  // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n                break;\n            case 'd':  // a day / in a day / a day ago\n                return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n                break;\n            case 'M':  // a month / in a month / a month ago\n                return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n                break;\n            case 'y':  // a year / in a year / a year ago\n                return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n                break;\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months : months,\n        monthsShort : monthsShort,\n        monthsRegex : monthsRegex,\n        monthsShortRegex : monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex : /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n        weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat : {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd D. MMMM YYYY H:mm',\n            l : 'D. M. YYYY'\n        },\n        calendar : {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : 'před %s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return cs;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzPzNjMGQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gJ2xlZGVuX8O6bm9yX2LFmWV6ZW5fZHViZW5fa3bEm3Rlbl/EjWVydmVuX8SNZXJ2ZW5lY19zcnBlbl96w6HFmcOtX8WZw61qZW5fbGlzdG9wYWRfcHJvc2luZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2xlZF/Dum5vX2LFmWVfZHViX2t2xJtfxI12bl/EjXZjX3NycF96w6HFmV/FmcOtal9saXNfcHJvJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9ebGVkL2ksIC9ew7puby9pLCAvXmLFmWUvaSwgL15kdWIvaSwgL15rdsSbL2ksIC9eKMSNdm58xI1lcnZlbiR8xI1lcnZuYSkvaSwgL14oxI12Y3zEjWVydmVuZWN8xI1lcnZlbmNlKS9pLCAvXnNycC9pLCAvXnrDocWZL2ksIC9exZnDrWovaSwgL15saXMvaSwgL15wcm8vaV07XG4gICAgLy8gTk9URTogJ8SNZXJ2ZW4nIGlzIHN1YnN0cmluZyBvZiAnxI1lcnZlbmVjJzsgdGhlcmVmb3JlICfEjWVydmVuZWMnIG11c3QgcHJlY2VkZSAnxI1lcnZlbicgaW4gdGhlIHJlZ2V4IHRvIGJlIGZ1bGx5IG1hdGNoZWQuXG4gICAgLy8gT3RoZXJ3aXNlIHBhcnNlciBtYXRjaGVzICcxLiDEjWVydmVuZWMnIGFzICcxLiDEjWVydmVuJyArICdlYycuXG4gICAgdmFyIG1vbnRoc1JlZ2V4ID0gL14obGVkZW58w7pub3J8YsWZZXplbnxkdWJlbnxrdsSbdGVufMSNZXJ2ZW5lY3zEjWVydmVuY2V8xI1lcnZlbnzEjWVydm5hfHNycGVufHrDocWZw618xZnDrWplbnxsaXN0b3BhZHxwcm9zaW5lY3xsZWR8w7pub3xixZllfGR1YnxrdsSbfMSNdm58xI12Y3xzcnB8esOhxZl8xZnDrWp8bGlzfHBybykvaTtcblxuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIHJldHVybiAobiA+IDEpICYmIChuIDwgNSkgJiYgKH5+KG4gLyAxMCkgIT09IDEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzogIC8vIGEgZmV3IHNlY29uZHMgLyBpbiBhIGZldyBzZWNvbmRzIC8gYSBmZXcgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ3DDoXIgc2VrdW5kJyA6ICdww6FyIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6IC8vIDkgc2Vjb25kcyAvIGluIDkgc2Vjb25kcyAvIDkgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla3VuZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnc2VrdW5kYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtJzogIC8vIGEgbWludXRlIC8gaW4gYSBtaW51dGUgLyBhIG1pbnV0ZSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDogKGlzRnV0dXJlID8gJ21pbnV0dScgOiAnbWludXRvdScpO1xuICAgICAgICAgICAgY2FzZSAnbW0nOiAvLyA5IG1pbnV0ZXMgLyBpbiA5IG1pbnV0ZXMgLyA5IG1pbnV0ZXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaW51dHknIDogJ21pbnV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaCc6ICAvLyBhbiBob3VyIC8gaW4gYW4gaG91ciAvIGFuIGhvdXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnaG9kaW5hJyA6IChpc0Z1dHVyZSA/ICdob2RpbnUnIDogJ2hvZGlub3UnKTtcbiAgICAgICAgICAgIGNhc2UgJ2hoJzogLy8gOSBob3VycyAvIGluIDkgaG91cnMgLyA5IGhvdXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnaG9kaW55JyA6ICdob2RpbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnaG9kaW5hbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2QnOiAgLy8gYSBkYXkgLyBpbiBhIGRheSAvIGEgZGF5IGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAnZGVuJyA6ICdkbmVtJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzogLy8gOSBkYXlzIC8gaW4gOSBkYXlzIC8gOSBkYXlzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZG55JyA6ICdkbsOtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkbnknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ00nOiAgLy8gYSBtb250aCAvIGluIGEgbW9udGggLyBhIG1vbnRoIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAnbcSbc8OtYycgOiAnbcSbc8OtY2VtJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzogLy8gOSBtb250aHMgLyBpbiA5IG1vbnRocyAvIDkgbW9udGhzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbcSbc8OtY2UnIDogJ23Em3PDrWPFrycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcSbc8OtY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3knOiAgLy8gYSB5ZWFyIC8gaW4gYSB5ZWFyIC8gYSB5ZWFyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAncm9rJyA6ICdyb2tlbSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6IC8vIDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Jva3knIDogJ2xldCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbGV0eSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY3MnLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHNTaG9ydCxcbiAgICAgICAgbW9udGhzUmVnZXggOiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleCA6IG1vbnRoc1JlZ2V4LFxuICAgICAgICAvLyBOT1RFOiAnxI1lcnZlbicgaXMgc3Vic3RyaW5nIG9mICfEjWVydmVuZWMnOyB0aGVyZWZvcmUgJ8SNZXJ2ZW5lYycgbXVzdCBwcmVjZWRlICfEjWVydmVuJyBpbiB0aGUgcmVnZXggdG8gYmUgZnVsbHkgbWF0Y2hlZC5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIHBhcnNlciBtYXRjaGVzICcxLiDEjWVydmVuZWMnIGFzICcxLiDEjWVydmVuJyArICdlYycuXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4IDogL14obGVkZW58bGVkbmF8w7pub3JhfMO6bm9yfGLFmWV6ZW58YsWZZXpuYXxkdWJlbnxkdWJuYXxrdsSbdGVufGt2xJt0bmF8xI1lcnZlbmVjfMSNZXJ2ZW5jZXzEjWVydmVufMSNZXJ2bmF8c3JwZW58c3JwbmF8esOhxZnDrXzFmcOtamVufMWZw61qbmF8bGlzdG9wYWR1fGxpc3RvcGFkfHByb3NpbmVjfHByb3NpbmNlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4IDogL14obGVkfMO6bm98YsWZZXxkdWJ8a3bEm3zEjXZufMSNdmN8c3JwfHrDocWZfMWZw61qfGxpc3xwcm8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzIDogJ25lZMSbbGVfcG9uZMSbbMOtX8O6dGVyw71fc3TFmWVkYV/EjXR2cnRla19ww6F0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ25lX3BvX8O6dF9zdF/EjXRfcMOhX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICduZV9wb1/DunRfc3RfxI10X3DDoV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnRC4gTS4gWVlZWSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RuZXMgdl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t6w610cmEgdl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBuZWTEm2xpIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZlIHN0xZllZHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2ZSDEjXR2cnRlayB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgcMOhdGVrIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzb2JvdHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYSB2XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bG91IG5lZMSbbGkgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw6ldIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBzdMWZZWR1IHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3Ugc29ib3R1IHZdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdwxZllZCAlcycsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3M7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/cs.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/cv.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/cv.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var cv = moment.defineLocale('cv', {\n        months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n        monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n        weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n        },\n        calendar : {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (output) {\n                var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n                return output + affix;\n            },\n            past : '%s каялла',\n            s : 'пӗр-ик ҫеккунт',\n            ss : '%d ҫеккунт',\n            m : 'пӗр минут',\n            mm : '%d минут',\n            h : 'пӗр сехет',\n            hh : '%d сехет',\n            d : 'пӗр кун',\n            dd : '%d кун',\n            M : 'пӗр уйӑх',\n            MM : '%d уйӑх',\n            y : 'пӗр ҫул',\n            yy : '%d ҫул'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal : '%d-мӗш',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return cv;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzPzAzZWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgY3YgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjdicsIHtcbiAgICAgICAgbW9udGhzIDogJ9C605HRgNC70LDRh1/QvdCw0YDTkdGBX9C/0YPRiF/QsNC60LBf0LzQsNC5X9Kr05fRgNGC0LzQtV/Rg9GC05Ff0qvRg9GA0LvQsF/QsNCy05HQvV/RjtC/0LBf0YfTs9C6X9GA0LDRiNGC0LDQsicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0LrTkdGAX9C90LDRgF/Qv9GD0Yhf0LDQutCwX9C80LDQuV/Sq9OX0YBf0YPRgtORX9Kr0YPRgF/QsNCy0L1f0Y7Qv9CwX9GH07PQul/RgNCw0YgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9Cy0YvRgNGB0LDRgNC90LjQutGD0L1f0YLRg9C90YLQuNC60YPQvV/Ri9GC0LvQsNGA0LjQutGD0L1f0Y7QvdC60YPQvV/QutOX0qvQvdC10YDQvdC40LrRg9C9X9GN0YDQvdC10LrRg9C9X9GI05HQvNCw0YLQutGD0L0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0LLRi9GAX9GC0YPQvV/Ri9GC0Ltf0Y7QvV/QutOX0qtf0Y3RgNC9X9GI05HQvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0LLRgF/RgtC9X9GL0YJf0Y7QvV/QutKrX9GN0YBf0YjQvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXSwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQn9Cw0Y/QvV0gTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Cr0YDQsNC9XSBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb05bQvdC10YBdIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb0qrQuNGC0LXRgV0gZGRkZCBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9CY0YDRgtC905ddIGRkZGQgTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6IGZ1bmN0aW9uIChvdXRwdXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYWZmaXggPSAv0YHQtdGF0LXRgiQvaS5leGVjKG91dHB1dCkgPyAn0YDQtdC9JyA6IC/Sq9GD0LskL2kuZXhlYyhvdXRwdXQpID8gJ9GC0LDQvScgOiAn0YDQsNC9JztcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0ICsgYWZmaXg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdCA6ICclcyDQutCw0Y/Qu9C70LAnLFxuICAgICAgICAgICAgcyA6ICfQv9OX0YAt0LjQuiDSq9C10LrQutGD0L3RgicsXG4gICAgICAgICAgICBzcyA6ICclZCDSq9C10LrQutGD0L3RgicsXG4gICAgICAgICAgICBtIDogJ9C/05fRgCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC80LjQvdGD0YInLFxuICAgICAgICAgICAgaCA6ICfQv9OX0YAg0YHQtdGF0LXRgicsXG4gICAgICAgICAgICBoaCA6ICclZCDRgdC10YXQtdGCJyxcbiAgICAgICAgICAgIGQgOiAn0L/Tl9GAINC60YPQvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQutGD0L0nLFxuICAgICAgICAgICAgTSA6ICfQv9OX0YAg0YPQudOR0YUnLFxuICAgICAgICAgICAgTU0gOiAnJWQg0YPQudOR0YUnLFxuICAgICAgICAgICAgeSA6ICfQv9OX0YAg0qvRg9C7JyxcbiAgICAgICAgICAgIHl5IDogJyVkINKr0YPQuydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LdC805fRiC8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQt0LzTl9GIJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3Y7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/cv.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/cy.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/cy.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact : true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return cy;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jeS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzPzk3OTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgY3kgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjeScsIHtcbiAgICAgICAgbW9udGhzOiAnSW9uYXdyX0Nod2Vmcm9yX01hd3J0aF9FYnJpbGxfTWFpX01laGVmaW5fR29yZmZlbm5hZl9Bd3N0X01lZGlfSHlkcmVmX1RhY2h3ZWRkX1JoYWdmeXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSW9uX0Nod2VfTWF3X0Vicl9NYWlfTWVoX0dvcl9Bd3NfTWVkX0h5ZF9UYWNoX1JoYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnRHlkZCBTdWxfRHlkZCBMbHVuX0R5ZGQgTWF3cnRoX0R5ZGQgTWVyY2hlcl9EeWRkIElhdV9EeWRkIEd3ZW5lcl9EeWRkIFNhZHdybicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bF9MbHVuX01hd19NZXJfSWF1X0d3ZV9TYWQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTGxfTWFfTWVfSWFfR3dfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIC8vIHRpbWUgZm9ybWF0cyBhcmUgdGhlIHNhbWUgYXMgZW4tZ2JcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIZWRkaXcgYW1dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbWWZvcnkgYW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYW1dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRGRvZSBhbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtkaXdldGhhZiBhbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ21ld24gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHluIMO0bCcsXG4gICAgICAgICAgICBzOiAneWNoeWRpZyBlaWxpYWRhdScsXG4gICAgICAgICAgICBzczogJyVkIGVpbGlhZCcsXG4gICAgICAgICAgICBtOiAnbXVudWQnLFxuICAgICAgICAgICAgbW06ICclZCBtdW51ZCcsXG4gICAgICAgICAgICBoOiAnYXdyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgYXdyJyxcbiAgICAgICAgICAgIGQ6ICdkaXdybm9kJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGl3cm5vZCcsXG4gICAgICAgICAgICBNOiAnbWlzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWlzJyxcbiAgICAgICAgICAgIHk6ICdibHd5ZGR5bicsXG4gICAgICAgICAgICB5eTogJyVkIGZseW5lZGQnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShmZWR8YWlufGFmfGlsfHlkZHxlZHxlZykvLFxuICAgICAgICAvLyB0cmFkaXRpb25hbCBvcmRpbmFsIG51bWJlcnMgYWJvdmUgMzEgYXJlIG5vdCBjb21tb25seSB1c2VkIGluIGNvbGxvcXVpYWwgV2Vsc2hcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gJycsXG4gICAgICAgICAgICAgICAgbG9va3VwID0gW1xuICAgICAgICAgICAgICAgICAgICAnJywgJ2FmJywgJ2lsJywgJ3lkZCcsICd5ZGQnLCAnZWQnLCAnZWQnLCAnZWQnLCAnZmVkJywgJ2ZlZCcsICdmZWQnLCAvLyAxYWYgdG8gMTBmZWRcbiAgICAgICAgICAgICAgICAgICAgJ2VnJywgJ2ZlZCcsICdlZycsICdlZycsICdmZWQnLCAnZWcnLCAnZWcnLCAnZmVkJywgJ2VnJywgJ2ZlZCcgLy8gMTFlZyB0byAyMGZlZFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoYiA+IDIwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGIgPT09IDQwIHx8IGIgPT09IDUwIHx8IGIgPT09IDYwIHx8IGIgPT09IDgwIHx8IGIgPT09IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnZmVkJzsgLy8gbm90IDMwYWluLCA3MGFpbiBvciA5MGFpblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICdhaW4nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYiA+IDApIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBsb29rdXBbYl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjeTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/cy.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/da.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/da.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var da = moment.defineLocale('da', {\n        months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay : '[i dag kl.] LT',\n            nextDay : '[i morgen kl.] LT',\n            nextWeek : 'på dddd [kl.] LT',\n            lastDay : '[i går kl.] LT',\n            lastWeek : '[i] dddd[s kl.] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s siden',\n            s : 'få sekunder',\n            ss : '%d sekunder',\n            m : 'et minut',\n            mm : '%d minutter',\n            h : 'en time',\n            hh : '%d timer',\n            d : 'en dag',\n            dd : '%d dage',\n            M : 'en måned',\n            MM : '%d måneder',\n            y : 'et år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return da;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzPzBmMTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZGEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkYScsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnRzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzw7huX21hbl90aXJfb25zX3Rvcl9mcmVfbMO4cicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBbZC5dIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tpIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW2kgbW9yZ2VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAncMOlIGRkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbaSBnw6VyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW2ldIGRkZGRbcyBrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHNpZGVuJyxcbiAgICAgICAgICAgIHMgOiAnZsOlIHNla3VuZGVyJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG0gOiAnZXQgbWludXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXR0ZXInLFxuICAgICAgICAgICAgaCA6ICdlbiB0aW1lJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHRpbWVyJyxcbiAgICAgICAgICAgIGQgOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2UnLFxuICAgICAgICAgICAgTSA6ICdlbiBtw6VuZWQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOlbmVkZXInLFxuICAgICAgICAgICAgeSA6ICdldCDDpXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgw6VyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/da.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/de-at.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/de-at.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return deAt;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1hdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzP2IzZWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ20nOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgJ2gnOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgJ2QnOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgJ00nOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICAneSc6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGVBdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlLWF0Jywge1xuICAgICAgICBtb250aHMgOiAnSsOkbm5lcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKw6RuLl9GZWIuX03DpHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzIDogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVBdDtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/de-at.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/de-ch.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/de-ch.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return deCh;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzP2JiNzEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ20nOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgJ2gnOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgJ2QnOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgJ00nOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICAneSc6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGVDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlLWNoJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbi5fRmViLl9Nw6Ryel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzIDogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVDaDtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/de-ch.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/de.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/de.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return de;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzP2I0NjkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ20nOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgJ2gnOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgJ2QnOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgJ00nOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICAneSc6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkZScsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1NvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toZXV0ZSB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAndm9yICVzJyxcbiAgICAgICAgICAgIHMgOiAnZWluIHBhYXIgU2VrdW5kZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSA6ICclZCBNaW51dGVuJyxcbiAgICAgICAgICAgIGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/de.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/dv.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/dv.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'ޖެނުއަރީ',\n        'ފެބްރުއަރީ',\n        'މާރިޗު',\n        'އޭޕްރީލު',\n        'މޭ',\n        'ޖޫން',\n        'ޖުލައި',\n        'އޯގަސްޓު',\n        'ސެޕްޓެމްބަރު',\n        'އޮކްޓޯބަރު',\n        'ނޮވެމްބަރު',\n        'ޑިސެމްބަރު'\n    ], weekdays = [\n        'އާދިއްތަ',\n        'ހޯމަ',\n        'އަންގާރަ',\n        'ބުދަ',\n        'ބުރާސްފަތި',\n        'ހުކުރު',\n        'ހޮނިހިރު'\n    ];\n\n    var dv = moment.defineLocale('dv', {\n        months : months,\n        monthsShort : months,\n        weekdays : weekdays,\n        weekdaysShort : weekdays,\n        weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat : {\n\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/M/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM : function (input) {\n            return 'މފ' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar : {\n            sameDay : '[މިއަދު] LT',\n            nextDay : '[މާދަމާ] LT',\n            nextWeek : 'dddd LT',\n            lastDay : '[އިއްޔެ] LT',\n            lastWeek : '[ފާއިތުވި] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ތެރޭގައި %s',\n            past : 'ކުރިން %s',\n            s : 'ސިކުންތުކޮޅެއް',\n            ss : 'd% ސިކުންތު',\n            m : 'މިނިޓެއް',\n            mm : 'މިނިޓު %d',\n            h : 'ގަޑިއިރެއް',\n            hh : 'ގަޑިއިރު %d',\n            d : 'ދުވަހެއް',\n            dd : 'ދުވަސް %d',\n            M : 'މަހެއް',\n            MM : 'މަސް %d',\n            y : 'އަހަރެއް',\n            yy : 'އަހަރު %d'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 7,  // Sunday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return dv;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzPzU5OGEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAn3pberN6C3qreh96m3oPeqScsXG4gICAgICAgICfeit6s3oTesN6D3qreh96m3oPeqScsXG4gICAgICAgICfeid6n3oPeqN6X3qonLFxuICAgICAgICAn3oferd6V3rDeg96p3o3eqicsXG4gICAgICAgICfeid6tJyxcbiAgICAgICAgJ96W3qvegt6wJyxcbiAgICAgICAgJ96W3qrejd6m3ofeqCcsXG4gICAgICAgICfeh96v3o7ept6Q3rDek96qJyxcbiAgICAgICAgJ96Q3qzeld6w3pPerN6J3rDehN6m3oPeqicsXG4gICAgICAgICfeh96u3obesN6T3q/ehN6m3oPeqicsXG4gICAgICAgICfegt6u3ojerN6J3rDehN6m3oPeqicsXG4gICAgICAgICfekd6o3pDerN6J3rDehN6m3oPeqidcbiAgICBdLCB3ZWVrZGF5cyA9IFtcbiAgICAgICAgJ96H3qfei96o3ofesN6M3qYnLFxuICAgICAgICAn3oDer96J3qYnLFxuICAgICAgICAn3ofept6C3rDejt6n3oPepicsXG4gICAgICAgICfehN6q3ovepicsXG4gICAgICAgICfehN6q3oPep96Q3rDeit6m3ozeqCcsXG4gICAgICAgICfegN6q3obeqt6D3qonLFxuICAgICAgICAn3oDert6C3qjegN6o3oPeqidcbiAgICBdO1xuXG4gICAgdmFyIGR2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZHYnLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn3ofep96L3qhf3oDer96J3qZf3ofept6C3rBf3oTeqt6L3qZf3oTeqt6D3qdf3oDeqt6G3qpf3oDert6C3qgnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuXG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv3onehnzeid6KLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfeid6KJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn3onehic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn3oneiic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb3oneqN6H3qbei96qXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1veid6n3ovept6J3qddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb3ofeqN6H3rDelN6sXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb3orep96H3qjejN6q3ojeqF0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn3ozerN6D3q3ejt6m3ofeqCAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ96G3qreg96o3oLesCAlcycsXG4gICAgICAgICAgICBzIDogJ96Q3qjeht6q3oLesN6M3qreht6u3oXerN6H3rAnLFxuICAgICAgICAgICAgc3MgOiAnZCUg3pDeqN6G3qregt6w3ozeqicsXG4gICAgICAgICAgICBtIDogJ96J3qjegt6o3pPerN6H3rAnLFxuICAgICAgICAgICAgbW0gOiAn3oneqN6C3qjek96qICVkJyxcbiAgICAgICAgICAgIGggOiAn3o7ept6R3qjeh96o3oPerN6H3rAnLFxuICAgICAgICAgICAgaGggOiAn3o7ept6R3qjeh96o3oPeqiAlZCcsXG4gICAgICAgICAgICBkIDogJ96L3qreiN6m3oDerN6H3rAnLFxuICAgICAgICAgICAgZGQgOiAn3oveqt6I3qbekN6wICVkJyxcbiAgICAgICAgICAgIE0gOiAn3onept6A3qzeh96wJyxcbiAgICAgICAgICAgIE1NIDogJ96J3qbekN6wICVkJyxcbiAgICAgICAgICAgIHkgOiAn3ofept6A3qbeg96s3ofesCcsXG4gICAgICAgICAgICB5eSA6ICfeh96m3oDept6D3qogJWQnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDcsICAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZHY7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/dv.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/el.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/el.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    function isFunction(input) {\n        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n    }\n\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n        monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n        months : function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n        weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM : function (input) {\n            return ((input + '').toLowerCase()[0] === 'μ');\n        },\n        meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendarEl : {\n            sameDay : '[Σήμερα {}] LT',\n            nextDay : '[Αύριο {}] LT',\n            nextWeek : 'dddd [{}] LT',\n            lastDay : '[Χθες {}] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        calendar : function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n        },\n        relativeTime : {\n            future : 'σε %s',\n            past : '%s πριν',\n            s : 'λίγα δευτερόλεπτα',\n            ss : '%d δευτερόλεπτα',\n            m : 'ένα λεπτό',\n            mm : '%d λεπτά',\n            h : 'μία ώρα',\n            hh : '%d ώρες',\n            d : 'μία μέρα',\n            dd : '%d μέρες',\n            M : 'ένας μήνας',\n            MM : '%d μήνες',\n            y : 'ένας χρόνος',\n            yy : '%d χρόνια'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4st is the first week of the year.\n        }\n    });\n\n    return el;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzPzhkNDciXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIH1cblxuXG4gICAgdmFyIGVsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZWwnLCB7XG4gICAgICAgIG1vbnRoc05vbWluYXRpdmVFbCA6ICfOmc6xzr3Ov8+FzqzPgc65zr/Pgl/Ops61zrLPgc6/z4XOrM+BzrnOv8+CX86czqzPgc+EzrnOv8+CX86Rz4DPgc6vzrvOuc6/z4JfzpzOrM65zr/Pgl/Omc6/z43Ovc65zr/Pgl/Omc6/z43Ou865zr/Pgl/Okc+NzrPOv8+Fz4PPhM6/z4JfzqPOtc+Az4TOrc68zrLPgc65zr/Pgl/On866z4TPjs6yz4HOuc6/z4Jfzp3Ov86tzrzOss+BzrnOv8+CX86UzrXOus6tzrzOss+BzrnOv8+CJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNHZW5pdGl2ZUVsIDogJ86ZzrHOvc6/z4XOsc+Bzq/Ov8+FX86mzrXOss+Bzr/Phc6xz4HOr86/z4VfzpzOsc+Bz4TOr86/z4VfzpHPgM+BzrnOu86vzr/PhV/OnM6xzpDOv8+FX86Zzr/Phc69zq/Ov8+FX86Zzr/Phc67zq/Ov8+FX86Rz4XOs86/z43Pg8+Ezr/PhV/Oo861z4DPhM61zrzOss+Bzq/Ov8+FX86fzrrPhM+JzrLPgc6vzr/PhV/Onc6/zrXOvM6yz4HOr86/z4VfzpTOtc66zrXOvM6yz4HOr86/z4UnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRocyA6IGZ1bmN0aW9uIChtb21lbnRUb0Zvcm1hdCwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW1vbWVudFRvRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc05vbWluYXRpdmVFbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ3N0cmluZycgJiYgL0QvLnRlc3QoZm9ybWF0LnN1YnN0cmluZygwLCBmb3JtYXQuaW5kZXhPZignTU1NTScpKSkpIHsgLy8gaWYgdGhlcmUgaXMgYSBkYXkgbnVtYmVyIGJlZm9yZSAnTU1NTSdcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzR2VuaXRpdmVFbFttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc05vbWluYXRpdmVFbFttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnzpnOsc69X86mzrXOsl/OnM6xz4FfzpHPgM+BX86czrHPil/Omc6/z4XOvV/Omc6/z4XOu1/Okc+FzrNfzqPOtc+AX86fzrrPhF/Onc6/zrVfzpTOtc66Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfOms+Fz4HOuc6xzrrOrl/OlM61z4XPhM6tz4HOsV/OpM+Bzq/PhM63X86kzrXPhM6sz4HPhM63X86gzq3OvM+Az4TOt1/OoM6xz4HOsc+DzrrOtc+Fzq5fzqPOrM6yzrLOsc+Ezr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnzprPhc+BX86UzrXPhV/OpM+BzrlfzqTOtc+EX86gzrXOvF/OoM6xz4FfzqPOsc6yJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfOms+FX86UzrVfzqTPgV/OpM61X86gzrVfzqDOsV/Oo86xJy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfOvM68JyA6ICfOnM6cJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnz4DOvCcgOiAnzqDOnCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAoKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKClbMF0gPT09ICfOvCcpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlIDogL1vOoM6cXVxcLj/OnD9cXC4/L2ksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyRWwgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vOo86uzrzOtc+BzrEge31dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW86Rz43Pgc65zr8ge31dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW3t9XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vOp864zrXPgiB7fV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW8+Ezr8gz4DPgc6/zrfOs86/z43OvM61zr3Ov10gZGRkZCBbe31dIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW8+EzrfOvSDPgM+Bzr/Ot86zzr/Pjc68zrXOvc63XSBkZGRkIFt7fV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IGZ1bmN0aW9uIChrZXksIG1vbSkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyRWxba2V5XSxcbiAgICAgICAgICAgICAgICBob3VycyA9IG1vbSAmJiBtb20uaG91cnMoKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG91dHB1dCkpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuYXBwbHkobW9tKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQucmVwbGFjZSgne30nLCAoaG91cnMgJSAxMiA9PT0gMSA/ICfPg8+EzrcnIDogJ8+Dz4TOuc+CJykpO1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnz4POtSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIM+Az4HOuc69JyxcbiAgICAgICAgICAgIHMgOiAnzrvOr86zzrEgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xJyxcbiAgICAgICAgICAgIHNzIDogJyVkIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsScsXG4gICAgICAgICAgICBtIDogJ86tzr3OsSDOu861z4DPhM+MJyxcbiAgICAgICAgICAgIG1tIDogJyVkIM67zrXPgM+EzqwnLFxuICAgICAgICAgICAgaCA6ICfOvM6vzrEgz47Pgc6xJyxcbiAgICAgICAgICAgIGhoIDogJyVkIM+Oz4HOtc+CJyxcbiAgICAgICAgICAgIGQgOiAnzrzOr86xIM68zq3Pgc6xJyxcbiAgICAgICAgICAgIGRkIDogJyVkIM68zq3Pgc61z4InLFxuICAgICAgICAgICAgTSA6ICfOrc69zrHPgiDOvM6uzr3Osc+CJyxcbiAgICAgICAgICAgIE1NIDogJyVkIM68zq7Ovc61z4InLFxuICAgICAgICAgICAgeSA6ICfOrc69zrHPgiDPh8+Bz4zOvc6/z4InLFxuICAgICAgICAgICAgeXkgOiAnJWQgz4fPgc+Mzr3Ouc6xJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Oty8sXG4gICAgICAgIG9yZGluYWw6ICclZM63JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZWw7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/el.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/en-SG.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-SG.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var enSG = moment.defineLocale('en-SG', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enSG;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1TRy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLVNHLmpzP2NkYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5TRyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLVNHJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZCA6ICdhIGRheScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE0gOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeSA6ICdhIHllYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5TRztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/en-SG.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/en-au.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-au.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var enAu = moment.defineLocale('en-au', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enAu;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzPzBlNmIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5BdSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWF1Jywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuQXU7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/en-au.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/en-ca.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-ca.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var enCa = moment.defineLocale('en-ca', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'YYYY-MM-DD',\n            LL : 'MMMM D, YYYY',\n            LLL : 'MMMM D, YYYY h:mm A',\n            LLLL : 'dddd, MMMM D, YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    return enCa;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzPzM4ODYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5DYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWNhJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ01NTU0gRCwgWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbkNhO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/en-ca.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/en-gb.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-gb.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var enGb = moment.defineLocale('en-gb', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enGb;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1nYi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzPzM5YTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5HYiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWdiJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZCA6ICdhIGRheScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE0gOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeSA6ICdhIHllYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5HYjtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/en-gb.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/en-ie.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-ie.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var enIe = moment.defineLocale('en-ie', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enIe;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzP2UxZDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5JZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWllJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZ28nLFxuICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbSA6ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgICAgICBkIDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTSA6ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5IDogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbkllO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/en-ie.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/en-il.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-il.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var enIl = moment.defineLocale('en-il', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    return enIl;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzPzczMzMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5JbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWlsJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbklsO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/en-il.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/en-nz.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-nz.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var enNz = moment.defineLocale('en-nz', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enNz;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1uei5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzPzZmNTAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5OeiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLW56Jywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuTno7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/en-nz.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/eo.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/eo.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var eo = moment.defineLocale('eo', {\n        months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n        weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D[-a de] MMMM, YYYY',\n            LLL : 'D[-a de] MMMM, YYYY HH:mm',\n            LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar : {\n            sameDay : '[Hodiaŭ je] LT',\n            nextDay : '[Morgaŭ je] LT',\n            nextWeek : 'dddd [je] LT',\n            lastDay : '[Hieraŭ je] LT',\n            lastWeek : '[pasinta] dddd [je] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'post %s',\n            past : 'antaŭ %s',\n            s : 'sekundoj',\n            ss : '%d sekundoj',\n            m : 'minuto',\n            mm : '%d minutoj',\n            h : 'horo',\n            hh : '%d horoj',\n            d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n            dd : '%d tagoj',\n            M : 'monato',\n            MM : '%d monatoj',\n            y : 'jaro',\n            yy : '%d jaroj'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal : '%da',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return eo;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzPzY1ZGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbycsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcm9fZmVicnVhcm9fbWFydG9fYXByaWxvX21ham9fanVuaW9fanVsaW9fYcWtZ3VzdG9fc2VwdGVtYnJvX29rdG9icm9fbm92ZW1icm9fZGVjZW1icm8nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hxa1nX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnZGltYW7EiW9fbHVuZG9fbWFyZG9fbWVya3JlZG9fxLVhxa1kb192ZW5kcmVkb19zYWJhdG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZGltX2x1bl9tYXJkX21lcmtfxLVhxa1fdmVuX3NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZGlfbHVfbWFfbWVfxLVhX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEwgOiAnRFstYSBkZV0gTU1NTSwgWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRFstYSBkZV0gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIFtsYV0gRFstYSBkZV0gTU1NTSwgWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL1thcF1cXC50XFwubS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSA9PT0gJ3AnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwLnQubS4nIDogJ1AuVC5NLic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2EudC5tLicgOiAnQS5ULk0uJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tIb2RpYcWtIGplXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tNb3JnYcWtIGplXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtqZV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbSGllcmHFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3Bhc2ludGFdIGRkZGQgW2plXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAncG9zdCAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2FudGHFrSAlcycsXG4gICAgICAgICAgICBzIDogJ3Nla3VuZG9qJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZG9qJyxcbiAgICAgICAgICAgIG0gOiAnbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0b2onLFxuICAgICAgICAgICAgaCA6ICdob3JvJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcm9qJyxcbiAgICAgICAgICAgIGQgOiAndGFnbycsLy9uZSAnZGl1cm5vJywgxIlhciBlc3RhcyB1eml0YSBwb3IgcHJva3NpbXVtb1xuICAgICAgICAgICAgZGQgOiAnJWQgdGFnb2onLFxuICAgICAgICAgICAgTSA6ICdtb25hdG8nLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9uYXRvaicsXG4gICAgICAgICAgICB5IDogJ2phcm8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgamFyb2onXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfWEvLFxuICAgICAgICBvcmRpbmFsIDogJyVkYScsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVvO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/eo.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/es-do.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/es-do.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return esDo;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzPzBhM2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPSAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9eZW5lL2ksIC9eZmViL2ksIC9ebWFyL2ksIC9eYWJyL2ksIC9ebWF5L2ksIC9eanVuL2ksIC9eanVsL2ksIC9eYWdvL2ksIC9ec2VwL2ksIC9eb2N0L2ksIC9ebm92L2ksIC9eZGljL2ldO1xuICAgIHZhciBtb250aHNSZWdleCA9IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNEbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLWRvJywge1xuICAgICAgICBtb250aHMgOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHMgOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGggOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZCA6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eSA6ICclZCBhw7FvcydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXNEbztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/es-do.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/es-us.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/es-us.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'MM/DD/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return esUs;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzPzU1YzkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPSAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9eZW5lL2ksIC9eZmViL2ksIC9ebWFyL2ksIC9eYWJyL2ksIC9ebWF5L2ksIC9eanVuL2ksIC9eanVsL2ksIC9eYWdvL2ksIC9ec2VwL2ksIC9eb2N0L2ksIC9ebm92L2ksIC9eZGljL2ldO1xuICAgIHZhciBtb250aHNSZWdleCA9IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNVcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLXVzJywge1xuICAgICAgICBtb250aHMgOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ01NL0REL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHMgOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGggOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZCA6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eSA6ICclZCBhw7FvcydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXNVcztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/es-us.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/es.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/es.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex : monthsRegex,\n        monthsShortRegex : monthsRegex,\n        monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex : /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY H:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return es;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzPzg5OGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPSAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9eZW5lL2ksIC9eZmViL2ksIC9ebWFyL2ksIC9eYWJyL2ksIC9ebWF5L2ksIC9eanVuL2ksIC9eanVsL2ksIC9eYWdvL2ksIC9ec2VwL2ksIC9eb2N0L2ksIC9ebm92L2ksIC9eZGljL2ldO1xuICAgIHZhciBtb250aHNSZWdleCA9IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcycsIHtcbiAgICAgICAgbW9udGhzIDogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXggOiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleCA6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleCA6IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXggOiAvXihlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaSxcbiAgICAgICAgbW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXMgOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZG9fbHVfbWFfbWlfanVfdmlfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHMgOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGggOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZCA6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eSA6ICclZCBhw7FvcydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXM7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/es.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/et.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/et.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            'ss': [number + 'sekundi', number + 'sekundit'],\n            'm' : ['ühe minuti', 'üks minut'],\n            'mm': [number + ' minuti', number + ' minutit'],\n            'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n            'hh': [number + ' tunni', number + ' tundi'],\n            'd' : ['ühe päeva', 'üks päev'],\n            'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n            'MM': [number + ' kuu', number + ' kuud'],\n            'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n            'yy': [number + ' aasta', number + ' aastat']\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n        monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n        weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n        weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat : {\n            LT   : 'H:mm',\n            LTS : 'H:mm:ss',\n            L    : 'DD.MM.YYYY',\n            LL   : 'D. MMMM YYYY',\n            LLL  : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[Täna,] LT',\n            nextDay  : '[Homme,] LT',\n            nextWeek : '[Järgmine] dddd LT',\n            lastDay  : '[Eile,] LT',\n            lastWeek : '[Eelmine] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s pärast',\n            past   : '%s tagasi',\n            s      : processRelativeTime,\n            ss     : processRelativeTime,\n            m      : processRelativeTime,\n            mm     : processRelativeTime,\n            h      : processRelativeTime,\n            hh     : processRelativeTime,\n            d      : processRelativeTime,\n            dd     : '%d päeva',\n            M      : processRelativeTime,\n            MM     : processRelativeTime,\n            y      : processRelativeTime,\n            yy     : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return et;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzP2VjMTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3MnIDogWydtw7VuZSBzZWt1bmRpJywgJ23DtW5pIHNla3VuZCcsICdwYWFyIHNla3VuZGl0J10sXG4gICAgICAgICAgICAnc3MnOiBbbnVtYmVyICsgJ3Nla3VuZGknLCBudW1iZXIgKyAnc2VrdW5kaXQnXSxcbiAgICAgICAgICAgICdtJyA6IFsnw7xoZSBtaW51dGknLCAnw7xrcyBtaW51dCddLFxuICAgICAgICAgICAgJ21tJzogW251bWJlciArICcgbWludXRpJywgbnVtYmVyICsgJyBtaW51dGl0J10sXG4gICAgICAgICAgICAnaCcgOiBbJ8O8aGUgdHVubmknLCAndHVuZCBhZWdhJywgJ8O8a3MgdHVuZCddLFxuICAgICAgICAgICAgJ2hoJzogW251bWJlciArICcgdHVubmknLCBudW1iZXIgKyAnIHR1bmRpJ10sXG4gICAgICAgICAgICAnZCcgOiBbJ8O8aGUgcMOkZXZhJywgJ8O8a3MgcMOkZXYnXSxcbiAgICAgICAgICAgICdNJyA6IFsna3V1IGFqYScsICdrdXUgYWVnYScsICfDvGtzIGt1dSddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcga3V1JywgbnVtYmVyICsgJyBrdXVkJ10sXG4gICAgICAgICAgICAneScgOiBbJ8O8aGUgYWFzdGEnLCAnYWFzdGEnLCAnw7xrcyBhYXN0YSddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgYWFzdGEnLCBudW1iZXIgKyAnIGFhc3RhdCddXG4gICAgICAgIH07XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0W2tleV1bMl0gPyBmb3JtYXRba2V5XVsyXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGV0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXQnLCB7XG4gICAgICAgIG1vbnRocyAgICAgICAgOiAnamFhbnVhcl92ZWVicnVhcl9tw6RydHNfYXByaWxsX21haV9qdXVuaV9qdXVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9vYmVyX25vdmVtYmVyX2RldHNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgICA6ICdqYWFuX3ZlZWJyX23DpHJ0c19hcHJfbWFpX2p1dW5pX2p1dWxpX2F1Z19zZXB0X29rdF9ub3ZfZGV0cycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgICAgICA6ICdww7xoYXDDpGV2X2VzbWFzcMOkZXZfdGVpc2lww6Rldl9rb2xtYXDDpGV2X25lbGphcMOkZXZfcmVlZGVfbGF1cMOkZXYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnUF9FX1RfS19OX1JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gICA6ICdQX0VfVF9LX05fUl9MJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUICAgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMICAgIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgICA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMICA6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgIDogJ1tUw6RuYSxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgIDogJ1tIb21tZSxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1tKw6RyZ21pbmVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW0VpbGUsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbRWVsbWluZV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgcMOkcmFzdCcsXG4gICAgICAgICAgICBwYXN0ICAgOiAnJXMgdGFnYXNpJyxcbiAgICAgICAgICAgIHMgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzcyAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCAgICAgOiAnJWQgcMOkZXZhJyxcbiAgICAgICAgICAgIE0gICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTSAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5ICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBldDtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/et.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/eu.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/eu.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var eu = moment.defineLocale('eu', {\n        months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n        monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n        weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY[ko] MMMM[ren] D[a]',\n            LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l : 'YYYY-M-D',\n            ll : 'YYYY[ko] MMM D[a]',\n            lll : 'YYYY[ko] MMM D[a] HH:mm',\n            llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n        },\n        calendar : {\n            sameDay : '[gaur] LT[etan]',\n            nextDay : '[bihar] LT[etan]',\n            nextWeek : 'dddd LT[etan]',\n            lastDay : '[atzo] LT[etan]',\n            lastWeek : '[aurreko] dddd LT[etan]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s barru',\n            past : 'duela %s',\n            s : 'segundo batzuk',\n            ss : '%d segundo',\n            m : 'minutu bat',\n            mm : '%d minutu',\n            h : 'ordu bat',\n            hh : '%d ordu',\n            d : 'egun bat',\n            dd : '%d egun',\n            M : 'hilabete bat',\n            MM : '%d hilabete',\n            y : 'urte bat',\n            yy : '%d urte'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return eu;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzPzBmZjIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZXUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdldScsIHtcbiAgICAgICAgbW9udGhzIDogJ3VydGFycmlsYV9vdHNhaWxhX21hcnR4b2FfYXBpcmlsYV9tYWlhdHphX2VrYWluYV91enRhaWxhX2FidXp0dWFfaXJhaWxhX3VycmlhX2F6YXJvYV9hYmVuZHVhJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICd1cnQuX290cy5fbWFyLl9hcGkuX21haS5fZWthLl91enQuX2FidS5faXJhLl91cnIuX2F6YS5fYWJlLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2lnYW5kZWFfYXN0ZWxlaGVuYV9hc3RlYXJ0ZWFfYXN0ZWF6a2VuYV9vc3RlZ3VuYV9vc3RpcmFsYV9sYXJ1bmJhdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnaWcuX2FsLl9hci5fYXouX29nLl9vbC5fbHIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdpZ19hbF9hcl9hel9vZ19vbF9scicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVlba29dIE1NTU1bcmVuXSBEW2FdJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIFlZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnWVlZWS1NLUQnLFxuICAgICAgICAgICAgbGwgOiAnWVlZWVtrb10gTU1NIERbYV0nLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVlba29dIE1NTSBEW2FdIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkLCBZWVlZW2tvXSBNTU0gRFthXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tnYXVyXSBMVFtldGFuXScsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tiaWhhcl0gTFRbZXRhbl0nLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBMVFtldGFuXScsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1thdHpvXSBMVFtldGFuXScsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbYXVycmVrb10gZGRkZCBMVFtldGFuXScsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgYmFycnUnLFxuICAgICAgICAgICAgcGFzdCA6ICdkdWVsYSAlcycsXG4gICAgICAgICAgICBzIDogJ3NlZ3VuZG8gYmF0enVrJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG8nLFxuICAgICAgICAgICAgbSA6ICdtaW51dHUgYmF0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0dScsXG4gICAgICAgICAgICBoIDogJ29yZHUgYmF0JyxcbiAgICAgICAgICAgIGhoIDogJyVkIG9yZHUnLFxuICAgICAgICAgICAgZCA6ICdlZ3VuIGJhdCcsXG4gICAgICAgICAgICBkZCA6ICclZCBlZ3VuJyxcbiAgICAgICAgICAgIE0gOiAnaGlsYWJldGUgYmF0JyxcbiAgICAgICAgICAgIE1NIDogJyVkIGhpbGFiZXRlJyxcbiAgICAgICAgICAgIHkgOiAndXJ0ZSBiYXQnLFxuICAgICAgICAgICAgeXkgOiAnJWQgdXJ0ZSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBldTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/eu.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/fa.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/fa.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '۱',\n        '2': '۲',\n        '3': '۳',\n        '4': '۴',\n        '5': '۵',\n        '6': '۶',\n        '7': '۷',\n        '8': '۸',\n        '9': '۹',\n        '0': '۰'\n    }, numberMap = {\n        '۱': '1',\n        '۲': '2',\n        '۳': '3',\n        '۴': '4',\n        '۵': '5',\n        '۶': '6',\n        '۷': '7',\n        '۸': '8',\n        '۹': '9',\n        '۰': '0'\n    };\n\n    var fa = moment.defineLocale('fa', {\n        months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n        monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n        weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n        weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n        weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar : {\n            sameDay : '[امروز ساعت] LT',\n            nextDay : '[فردا ساعت] LT',\n            nextWeek : 'dddd [ساعت] LT',\n            lastDay : '[دیروز ساعت] LT',\n            lastWeek : 'dddd [پیش] [ساعت] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'در %s',\n            past : '%s پیش',\n            s : 'چند ثانیه',\n            ss : 'ثانیه d%',\n            m : 'یک دقیقه',\n            mm : '%d دقیقه',\n            h : 'یک ساعت',\n            hh : '%d ساعت',\n            d : 'یک روز',\n            dd : '%d روز',\n            M : 'یک ماه',\n            MM : '%d ماه',\n            y : 'یک سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/[۰-۹]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal : '%dم',\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12 // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return fa;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzPzhkZjQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfbsScsXG4gICAgICAgICcyJzogJ9uyJyxcbiAgICAgICAgJzMnOiAn27MnLFxuICAgICAgICAnNCc6ICfbtCcsXG4gICAgICAgICc1JzogJ9u1JyxcbiAgICAgICAgJzYnOiAn27YnLFxuICAgICAgICAnNyc6ICfbtycsXG4gICAgICAgICc4JzogJ9u4JyxcbiAgICAgICAgJzknOiAn27knLFxuICAgICAgICAnMCc6ICfbsCdcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfbsSc6ICcxJyxcbiAgICAgICAgJ9uyJzogJzInLFxuICAgICAgICAn27MnOiAnMycsXG4gICAgICAgICfbtCc6ICc0JyxcbiAgICAgICAgJ9u1JzogJzUnLFxuICAgICAgICAn27YnOiAnNicsXG4gICAgICAgICfbtyc6ICc3JyxcbiAgICAgICAgJ9u4JzogJzgnLFxuICAgICAgICAn27knOiAnOScsXG4gICAgICAgICfbsCc6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgZmEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmYScsIHtcbiAgICAgICAgbW9udGhzIDogJ9qY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9qY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9uM2qlcXHUyMDBj2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YdcXHUyMDBj2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2KxcXHUyMDBj2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn24zaqVxcdTIwMGPYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh1xcdTIwMGPYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrFxcdTIwMGPYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn24xf2K9f2LNf2oZf2b5f2Kxf2LQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9mC2KjZhCDYp9iyINi42YfYsXzYqNi52K8g2KfYsiDYuNmH2LEvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAv2KjYudivINin2LIg2LjZh9ixLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZgtio2YQg2KfYsiDYuNmH2LEnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9io2LnYryDYp9iyINi42YfYsSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb2KfZhdix2YjYsiDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb2YHYsdiv2Kcg2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9iz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vYr9uM2LHZiNiyINiz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFvZvtuM2LRdIFvYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9iv2LEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDZvtuM2LQnLFxuICAgICAgICAgICAgcyA6ICfahtmG2K8g2KvYp9mG24zZhycsXG4gICAgICAgICAgICBzcyA6ICfYq9in2YbbjNmHIGQlJyxcbiAgICAgICAgICAgIG0gOiAn24zaqSDYr9mC24zZgtmHJyxcbiAgICAgICAgICAgIG1tIDogJyVkINiv2YLbjNmC2YcnLFxuICAgICAgICAgICAgaCA6ICfbjNqpINiz2KfYudiqJyxcbiAgICAgICAgICAgIGhoIDogJyVkINiz2KfYudiqJyxcbiAgICAgICAgICAgIGQgOiAn24zaqSDYsdmI2LInLFxuICAgICAgICAgICAgZGQgOiAnJWQg2LHZiNiyJyxcbiAgICAgICAgICAgIE0gOiAn24zaqSDZhdin2YcnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2YXYp9mHJyxcbiAgICAgICAgICAgIHkgOiAn24zaqSDYs9in2YQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPYp9mEJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b27At27ldL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3ZhS8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTZhScsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZhO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/fa.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/fi.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/fi.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n        numbersFuture = [\n            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n            numbersPast[7], numbersPast[8], numbersPast[9]\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                return isFuture ? 'sekunnin' : 'sekuntia';\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n        monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n        weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n        weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD.MM.YYYY',\n            LL : 'Do MMMM[ta] YYYY',\n            LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l : 'D.M.YYYY',\n            ll : 'Do MMM YYYY',\n            lll : 'Do MMM YYYY, [klo] HH.mm',\n            llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n        },\n        calendar : {\n            sameDay : '[tänään] [klo] LT',\n            nextDay : '[huomenna] [klo] LT',\n            nextWeek : 'dddd [klo] LT',\n            lastDay : '[eilen] [klo] LT',\n            lastWeek : '[viime] dddd[na] [klo] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s päästä',\n            past : '%s sitten',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fi;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzPzgxZTkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbnVtYmVyc1Bhc3QgPSAnbm9sbGEgeWtzaSBrYWtzaSBrb2xtZSBuZWxqw6Qgdmlpc2kga3V1c2kgc2VpdHNlbcOkbiBrYWhkZWtzYW4geWhkZWtzw6RuJy5zcGxpdCgnICcpLFxuICAgICAgICBudW1iZXJzRnV0dXJlID0gW1xuICAgICAgICAgICAgJ25vbGxhJywgJ3loZGVuJywgJ2thaGRlbicsICdrb2xtZW4nLCAnbmVsasOkbicsICd2aWlkZW4nLCAna3V1ZGVuJyxcbiAgICAgICAgICAgIG51bWJlcnNQYXN0WzddLCBudW1iZXJzUGFzdFs4XSwgbnVtYmVyc1Bhc3RbOV1cbiAgICAgICAgXTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtdXV0YW1hbiBzZWt1bm5pbicgOiAnbXV1dGFtYSBzZWt1bnRpJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnc2VrdW5uaW4nIDogJ3Nla3VudGlhJztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtaW51dXRpbicgOiAnbWludXV0dGknO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ21pbnV1dGluJyA6ICdtaW51dXR0aWEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGknO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdww6RpdsOkbicgOiAncMOkaXbDpCc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAncMOkaXbDpG4nIDogJ3DDpGl2w6TDpCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXVzaSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXV0dGEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvc2knO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvdHRhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB2ZXJiYWxOdW1iZXIobnVtYmVyLCBpc0Z1dHVyZSkgKyAnICcgKyByZXN1bHQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZlcmJhbE51bWJlcihudW1iZXIsIGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgPCAxMCA/IChpc0Z1dHVyZSA/IG51bWJlcnNGdXR1cmVbbnVtYmVyXSA6IG51bWJlcnNQYXN0W251bWJlcl0pIDogbnVtYmVyO1xuICAgIH1cblxuICAgIHZhciBmaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZpJywge1xuICAgICAgICBtb250aHMgOiAndGFtbWlrdXVfaGVsbWlrdXVfbWFhbGlza3V1X2h1aHRpa3V1X3RvdWtva3V1X2tlc8Oka3V1X2hlaW7DpGt1dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1dV9qb3VsdWt1dScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAndGFtbWlfaGVsbWlfbWFhbGlzX2h1aHRpX3RvdWtvX2tlc8OkX2hlaW7DpF9lbG9fc3l5c19sb2thX21hcnJhc19qb3VsdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc3VubnVudGFpX21hYW5hbnRhaV90aWlzdGFpX2tlc2tpdmlpa2tvX3RvcnN0YWlfcGVyamFudGFpX2xhdWFudGFpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdzdV9tYV90aV9rZV90b19wZV9sYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISC5tbScsXG4gICAgICAgICAgICBMVFMgOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0RvIE1NTU1bdGFdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0RvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICAgICAgbCA6ICdELk0uWVlZWScsXG4gICAgICAgICAgICBsbCA6ICdEbyBNTU0gWVlZWScsXG4gICAgICAgICAgICBsbGwgOiAnRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbdMOkbsOkw6RuXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1todW9tZW5uYV0gW2tsb10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBba2xvXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tlaWxlbl0gW2tsb10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3ZpaW1lXSBkZGRkW25hXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgcMOkw6RzdMOkJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgc2l0dGVuJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/fi.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/fo.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/fo.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var fo = moment.defineLocale('fo', {\n        months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n        weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D. MMMM, YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Í dag kl.] LT',\n            nextDay : '[Í morgin kl.] LT',\n            nextWeek : 'dddd [kl.] LT',\n            lastDay : '[Í gjár kl.] LT',\n            lastWeek : '[síðstu] dddd [kl] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'um %s',\n            past : '%s síðani',\n            s : 'fá sekund',\n            ss : '%d sekundir',\n            m : 'ein minuttur',\n            mm : '%d minuttir',\n            h : 'ein tími',\n            hh : '%d tímar',\n            d : 'ein dagur',\n            dd : '%d dagar',\n            M : 'ein mánaður',\n            MM : '%d mánaðir',\n            y : 'eitt ár',\n            yy : '%d ár'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fo;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZvLmpzPzA3MjEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZm8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmbycsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByw61sX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc3VubnVkYWd1cl9tw6FuYWRhZ3VyX3TDvXNkYWd1cl9taWt1ZGFndXJfaMOzc2RhZ3VyX2Zyw61nZ2phZGFndXJfbGV5Z2FyZGFndXInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc3VuX23DoW5fdMO9c19taWtfaMOzc19mcsOtX2xleScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc3VfbcOhX3TDvV9taV9ow7NfZnJfbGUnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQuIE1NTU0sIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbw40gZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbw40gbW9yZ2luIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vDjSBnasOhciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tzw63DsHN0dV0gZGRkZCBba2xdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd1bSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHPDrcOwYW5pJyxcbiAgICAgICAgICAgIHMgOiAnZsOhIHNla3VuZCcsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWt1bmRpcicsXG4gICAgICAgICAgICBtIDogJ2VpbiBtaW51dHR1cicsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dHRpcicsXG4gICAgICAgICAgICBoIDogJ2VpbiB0w61taScsXG4gICAgICAgICAgICBoaCA6ICclZCB0w61tYXInLFxuICAgICAgICAgICAgZCA6ICdlaW4gZGFndXInLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgTSA6ICdlaW4gbcOhbmHDsHVyJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG3DoW5hw7BpcicsXG4gICAgICAgICAgICB5IDogJ2VpdHQgw6FyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMOhcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmbztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/fo.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/fr-ca.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/fr-ca.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        }\n    });\n\n    return frCa;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNhLmpzP2Q5ZjgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZnJDYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZyLWNhJywge1xuICAgICAgICBtb250aHMgOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgcyA6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtIDogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaCA6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZCA6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8ZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyQ2E7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/fr-ca.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/fr-ch.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/fr-ch.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return frCh;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzPzBlNDkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZnJDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZyLWNoJywge1xuICAgICAgICBtb250aHMgOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgcyA6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtIDogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaCA6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZCA6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8ZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJDaDtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/fr-ch.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/fr.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/fr.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var fr = moment.defineLocale('fr', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fr;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzPzlmMjYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmcicsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZGlfbHVfbWFfbWVfamVfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0F1am91cmTigJlodWkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0RlbWFpbiDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0hpZXIgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2Rlcm5pZXIgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdkYW5zICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaWwgeSBhICVzJyxcbiAgICAgICAgICAgIHMgOiAncXVlbHF1ZXMgc2Vjb25kZXMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kZXMnLFxuICAgICAgICAgICAgbSA6ICd1bmUgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICd1bmUgaGV1cmUnLFxuICAgICAgICAgICAgaGggOiAnJWQgaGV1cmVzJyxcbiAgICAgICAgICAgIGQgOiAndW4gam91cicsXG4gICAgICAgICAgICBkZCA6ICclZCBqb3VycycsXG4gICAgICAgICAgICBNIDogJ3VuIG1vaXMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9pcycsXG4gICAgICAgICAgICB5IDogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFucydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyfCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFJldHVybiAnZScgd2hlbiBkYXkgb2YgbW9udGggPiAxLiBNb3ZlIHRoaXMgY2FzZSBpbnNpZGVcbiAgICAgICAgICAgICAgICAvLyBibG9jayBmb3IgbWFzY3VsaW5lIHdvcmRzIGJlbG93LlxuICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMzM3NVxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIG1hc2N1bGluZSBncmFtbWF0aWNhbCBnZW5kZXI6IG1vaXMsIHRyaW1lc3RyZSwgam91clxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJ2UnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggZmVtaW5pbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBzZW1haW5lXG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ3JlJyA6ICdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/fr.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/fy.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/fy.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n    var fy = moment.defineLocale('fy', {\n        months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact : true,\n        weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n        weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'oer %s',\n            past : '%s lyn',\n            s : 'in pear sekonden',\n            ss : '%d sekonden',\n            m : 'ien minút',\n            mm : '%d minuten',\n            h : 'ien oere',\n            hh : '%d oeren',\n            d : 'ien dei',\n            dd : '%d dagen',\n            M : 'ien moanne',\n            MM : '%d moannen',\n            y : 'ien jier',\n            yy : '%d jierren'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fy;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzPzcxMTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnRXaXRoRG90cyA9ICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21haV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID0gJ2phbl9mZWJfbXJ0X2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIGZ5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnknLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW5uZXdhcmlzX2ZlYnJld2FyaXNfbWFhcnRfYXByaWxfbWFhaWVfanVueV9qdWx5X2F1Z3VzdHVzX3NlcHRpbWJlcl9va3RvYmVyX25vdmltYmVyX2Rlc2ltYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzbmVpbl9tb2FuZGVpX3RpaXNkZWlfd29hbnNkZWlfdG9uZ2Vyc2RlaV9mcmVlZF9zbmVvbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzaS5fbW8uX3RpLl93by5fdG8uX2ZyLl9zby4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NpX01vX1RpX1dvX1RvX0ZyX1NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hqb2VkIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vYXJuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1c3RlciBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbw7RmcsO7bmVdIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvZXIgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBseW4nLFxuICAgICAgICAgICAgcyA6ICdpbiBwZWFyIHNla29uZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla29uZGVuJyxcbiAgICAgICAgICAgIG0gOiAnaWVuIG1pbsO6dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVuJyxcbiAgICAgICAgICAgIGggOiAnaWVuIG9lcmUnLFxuICAgICAgICAgICAgaGggOiAnJWQgb2VyZW4nLFxuICAgICAgICAgICAgZCA6ICdpZW4gZGVpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2VuJyxcbiAgICAgICAgICAgIE0gOiAnaWVuIG1vYW5uZScsXG4gICAgICAgICAgICBNTSA6ICclZCBtb2FubmVuJyxcbiAgICAgICAgICAgIHkgOiAnaWVuIGppZXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgamllcnJlbidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICgobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjApID8gJ3N0ZScgOiAnZGUnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnk7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/fy.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ga.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ga.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n\n    var months = [\n        'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'\n    ];\n\n    var monthsShort = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'];\n\n    var weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'];\n\n    var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'];\n\n    var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'];\n\n    var ga = moment.defineLocale('ga', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné aig] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d mí',\n            y: 'bliain',\n            yy: '%d bliain'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ga;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzPzUxMjAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICdFYW7DoWlyJywgJ0ZlYWJocmEnLCAnTcOhcnRhJywgJ0FpYnJlw6FuJywgJ0JlYWx0YWluZScsICdNw6lpdGhlYW1oJywgJ0nDumlsJywgJ0zDum5hc2EnLCAnTWXDoW4gRsOzbWhhaXInLCAnRGVhaXJlYWRoIEbDs21oYWlyJywgJ1NhbWhhaW4nLCAnTm9sbGFpZydcbiAgICBdO1xuXG4gICAgdmFyIG1vbnRoc1Nob3J0ID0gWydFYW7DoScsICdGZWFiJywgJ03DoXJ0JywgJ0FpYnInLCAnQmVhbCcsICdNw6lpdCcsICdJw7ppbCcsICdMw7puYScsICdNZcOhbicsICdEZWFpJywgJ1NhbWgnLCAnTm9sbCddO1xuXG4gICAgdmFyIHdlZWtkYXlzID0gWydEw6kgRG9taG5haWdoJywgJ0TDqSBMdWFpbicsICdEw6kgTcOhaXJ0JywgJ0TDqSBDw6lhZGFvaW4nLCAnRMOpYXJkYW9pbicsICdEw6kgaEFvaW5lJywgJ0TDqSBTYXRoYXJuJ107XG5cbiAgICB2YXIgd2Vla2RheXNTaG9ydCA9IFsnRG9tJywgJ0x1YScsICdNw6FpJywgJ0PDqWEnLCAnRMOpYScsICdoQW8nLCAnU2F0J107XG5cbiAgICB2YXIgd2Vla2RheXNNaW4gPSBbJ0RvJywgJ0x1JywgJ03DoScsICdDZScsICdEw6knLCAnaEEnLCAnU2EnXTtcblxuICAgIHZhciBnYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dhJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRoc1Nob3J0LFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IHdlZWtkYXlzU2hvcnQsXG4gICAgICAgIHdlZWtkYXlzTWluOiB3ZWVrZGF5c01pbixcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0lubml1IGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Ftw6FyYWNoIGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FnXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0lubsOpIGFpZ10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtzZW8gY2FpdGVdIFthZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2kgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMOzIHNoaW4nLFxuICAgICAgICAgICAgczogJ2PDunBsYSBzb2ljaW5kJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc29pY2luZCcsXG4gICAgICAgICAgICBtOiAnbsOzaW3DqWFkJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbsOzaW3DqWFkJyxcbiAgICAgICAgICAgIGg6ICd1YWlyIGFuIGNobG9pZycsXG4gICAgICAgICAgICBoaDogJyVkIHVhaXIgYW4gY2hsb2lnJyxcbiAgICAgICAgICAgIGQ6ICdsw6EnLFxuICAgICAgICAgICAgZGQ6ICclZCBsw6EnLFxuICAgICAgICAgICAgTTogJ23DrScsXG4gICAgICAgICAgICBNTTogJyVkIG3DrScsXG4gICAgICAgICAgICB5OiAnYmxpYWluJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYmxpYWluJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZHxuYXxtaCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gbnVtYmVyID09PSAxID8gJ2QnIDogbnVtYmVyICUgMTAgPT09IDIgPyAnbmEnIDogJ21oJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdhO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ga.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/gd.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/gd.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n    ];\n\n    var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\n    var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\n    var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\n    var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months : months,\n        monthsShort : monthsShort,\n        monthsParseExact : true,\n        weekdays : weekdays,\n        weekdaysShort : weekdaysShort,\n        weekdaysMin : weekdaysMin,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[An-diugh aig] LT',\n            nextDay : '[A-màireach aig] LT',\n            nextWeek : 'dddd [aig] LT',\n            lastDay : '[An-dè aig] LT',\n            lastWeek : 'dddd [seo chaidh] [aig] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ann an %s',\n            past : 'bho chionn %s',\n            s : 'beagan diogan',\n            ss : '%d diogan',\n            m : 'mionaid',\n            mm : '%d mionaidean',\n            h : 'uair',\n            hh : '%d uairean',\n            d : 'latha',\n            dd : '%d latha',\n            M : 'mìos',\n            MM : '%d mìosan',\n            y : 'bliadhna',\n            yy : '%d bliadhna'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(d|na|mh)/,\n        ordinal : function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return gd;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dkLmpzP2Y2YjQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAnQW0gRmFvaWxsZWFjaCcsICdBbiBHZWFycmFuJywgJ0FtIE3DoHJ0JywgJ0FuIEdpYmxlYW4nLCAnQW4gQ8OoaXRlYW4nLCAnQW4gdC3DkmdtaGlvcycsICdBbiB0LUl1Y2hhcicsICdBbiBMw7luYXN0YWwnLCAnQW4gdC1TdWx0YWluJywgJ0FuIETDoG1oYWlyJywgJ0FuIHQtU2FtaGFpbicsICdBbiBEw7liaGxhY2hkJ1xuICAgIF07XG5cbiAgICB2YXIgbW9udGhzU2hvcnQgPSBbJ0Zhb2knLCAnR2VhcicsICdNw6BydCcsICdHaWJsJywgJ0PDqGl0JywgJ8OSZ21oJywgJ0l1Y2gnLCAnTMO5bicsICdTdWx0JywgJ0TDoG1oJywgJ1NhbWgnLCAnRMO5YmgnXTtcblxuICAgIHZhciB3ZWVrZGF5cyA9IFsnRGlkw7JtaG5haWNoJywgJ0RpbHVhaW4nLCAnRGltw6BpcnQnLCAnRGljaWFkYWluJywgJ0RpYXJkYW9pbicsICdEaWhhb2luZScsICdEaXNhdGhhaXJuZSddO1xuXG4gICAgdmFyIHdlZWtkYXlzU2hvcnQgPSBbJ0RpZCcsICdEaWwnLCAnRGltJywgJ0RpYycsICdEaWEnLCAnRGloJywgJ0RpcyddO1xuXG4gICAgdmFyIHdlZWtkYXlzTWluID0gWydEw7InLCAnTHUnLCAnTcOgJywgJ0NpJywgJ0FyJywgJ0hhJywgJ1NhJ107XG5cbiAgICB2YXIgZ2QgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnZCcsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRoc1Nob3J0LFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6IHdlZWtkYXlzU2hvcnQsXG4gICAgICAgIHdlZWtkYXlzTWluIDogd2Vla2RheXNNaW4sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tBbi1kaXVnaCBhaWddIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0EtbcOgaXJlYWNoIGFpZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYWlnXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tBbi1kw6ggYWlnXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtzZW8gY2hhaWRoXSBbYWlnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnYW5uIGFuICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnYmhvIGNoaW9ubiAlcycsXG4gICAgICAgICAgICBzIDogJ2JlYWdhbiBkaW9nYW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgZGlvZ2FuJyxcbiAgICAgICAgICAgIG0gOiAnbWlvbmFpZCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW9uYWlkZWFuJyxcbiAgICAgICAgICAgIGggOiAndWFpcicsXG4gICAgICAgICAgICBoaCA6ICclZCB1YWlyZWFuJyxcbiAgICAgICAgICAgIGQgOiAnbGF0aGEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgbGF0aGEnLFxuICAgICAgICAgICAgTSA6ICdtw6xvcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtw6xvc2FuJyxcbiAgICAgICAgICAgIHkgOiAnYmxpYWRobmEnLFxuICAgICAgICAgICAgeXkgOiAnJWQgYmxpYWRobmEnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn0oZHxuYXxtaCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IG51bWJlciA9PT0gMSA/ICdkJyA6IG51bWJlciAlIDEwID09PSAyID8gJ25hJyA6ICdtaCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBnZDtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/gd.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/gl.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/gl.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var gl = moment.defineLocale('gl', {\n        months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n        monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY H:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n            },\n            lastDay : function () {\n                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n            },\n            lastWeek : function () {\n                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past : 'hai %s',\n            s : 'uns segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'unha hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return gl;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzPzg4NDAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZ2wgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnbCcsIHtcbiAgICAgICAgbW9udGhzIDogJ3hhbmVpcm9fZmVicmVpcm9fbWFyem9fYWJyaWxfbWFpb194dcOxb194dWxsb19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZWNlbWJybycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAneGFuLl9mZWIuX21hci5fYWJyLl9tYWkuX3h1w7EuX3h1bC5fYWdvLl9zZXQuX291dC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkb21pbmdvX2x1bnNfbWFydGVzX23DqXJjb3Jlc194b3Zlc192ZW5yZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb20uX2x1bi5fbWFyLl9tw6lyLl94b3YuX3Zlbi5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX23DqV94b192ZV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG94ZSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ8OhcycgOiAnw6EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7HDoSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ8OhcycgOiAnw6EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgWycgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnw6FzJyA6ICdhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tvbnRlICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnw6EnIDogJ2EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tvXSBkZGRkIFtwYXNhZG8gJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICfDoXMnIDogJ2EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ci5pbmRleE9mKCd1bicpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnbicgKyBzdHI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAnZW4gJyArIHN0cjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0IDogJ2hhaSAlcycsXG4gICAgICAgICAgICBzIDogJ3VucyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGggOiAndW5oYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNIDogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5IDogJ3VuIGFubycsXG4gICAgICAgICAgICB5eSA6ICclZCBhbm9zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsIDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBnbDtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/gl.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/gom-latn.js":
/*!************************************************!*\
  !*** ./node_modules/moment/locale/gom-latn.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's': ['thodde secondanim', 'thodde second'],\n            'ss': [number + ' secondanim', number + ' second'],\n            'm': ['eka mintan', 'ek minute'],\n            'mm': [number + ' mintanim', number + ' mintam'],\n            'h': ['eka voran', 'ek vor'],\n            'hh': [number + ' voranim', number + ' voram'],\n            'd': ['eka disan', 'ek dis'],\n            'dd': [number + ' disanim', number + ' dis'],\n            'M': ['eka mhoinean', 'ek mhoino'],\n            'MM': [number + ' mhoineanim', number + ' mhoine'],\n            'y': ['eka vorsan', 'ek voros'],\n            'yy': [number + ' vorsanim', number + ' vorsam']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n        monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\'var'.split('_'),\n        weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'A h:mm [vazta]',\n            LTS : 'A h:mm:ss [vazta]',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY A h:mm [vazta]',\n            LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n        },\n        calendar : {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Ieta to] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fatlo] dddd[,] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s',\n            past : '%s adim',\n            s : processRelativeTime,\n            ss : processRelativeTime,\n            m : processRelativeTime,\n            mm : processRelativeTime,\n            h : processRelativeTime,\n            hh : processRelativeTime,\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(er)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /rati|sokalli|donparam|sanje/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokalli') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokalli';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        }\n    });\n\n    return gomLatn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1sYXRuLmpzPzBjYWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3MnOiBbJ3Rob2RkZSBzZWNvbmRhbmltJywgJ3Rob2RkZSBzZWNvbmQnXSxcbiAgICAgICAgICAgICdzcyc6IFtudW1iZXIgKyAnIHNlY29uZGFuaW0nLCBudW1iZXIgKyAnIHNlY29uZCddLFxuICAgICAgICAgICAgJ20nOiBbJ2VrYSBtaW50YW4nLCAnZWsgbWludXRlJ10sXG4gICAgICAgICAgICAnbW0nOiBbbnVtYmVyICsgJyBtaW50YW5pbScsIG51bWJlciArICcgbWludGFtJ10sXG4gICAgICAgICAgICAnaCc6IFsnZWthIHZvcmFuJywgJ2VrIHZvciddLFxuICAgICAgICAgICAgJ2hoJzogW251bWJlciArICcgdm9yYW5pbScsIG51bWJlciArICcgdm9yYW0nXSxcbiAgICAgICAgICAgICdkJzogWydla2EgZGlzYW4nLCAnZWsgZGlzJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyBkaXNhbmltJywgbnVtYmVyICsgJyBkaXMnXSxcbiAgICAgICAgICAgICdNJzogWydla2EgbWhvaW5lYW4nLCAnZWsgbWhvaW5vJ10sXG4gICAgICAgICAgICAnTU0nOiBbbnVtYmVyICsgJyBtaG9pbmVhbmltJywgbnVtYmVyICsgJyBtaG9pbmUnXSxcbiAgICAgICAgICAgICd5JzogWydla2Egdm9yc2FuJywgJ2VrIHZvcm9zJ10sXG4gICAgICAgICAgICAneXknOiBbbnVtYmVyICsgJyB2b3JzYW5pbScsIG51bWJlciArICcgdm9yc2FtJ11cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBnb21MYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ29tLWxhdG4nLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW5lcl9GZWJyZXJfTWFyc19BYnJpbF9NYWlfSnVuX0p1bGFpX0Fnb3N0X1NldGVtYnJfT3R1YnJfTm92ZW1icl9EZXplbWJyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW4uX0ZlYi5fTWFyc19BYnIuX01haV9KdW5fSnVsLl9BZ28uX1NldC5fT3R1Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdBaXRhcl9Tb21hcl9Nb25nbGxhcl9CdWR2YXJfQnJlc3Rhcl9TdWtyYXJfU29uXFwndmFyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0FpdC5fU29tLl9Nb24uX0J1ZC5fQnJlLl9TdWsuX1Nvbi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0FpX1NtX01vX0J1X0JyX1N1X1NuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3MgW3ZhenRhXScsXG4gICAgICAgICAgICBMIDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEEgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgTU1NTVthY2hlYV0gRG8sIFlZWVksIEEgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQsIEQgTU1NIFlZWVksIEEgaDptbSBbdmF6dGFdJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQWl6XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0ZhbGVhbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbSWV0YSB0b10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0thbF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRmF0bG9dIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZGltJyxcbiAgICAgICAgICAgIHMgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3MgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5IDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5IDogcHJvY2Vzc1JlbGF0aXZlVGltZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9KGVyKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhlIG9yZGluYWwgJ2VyJyBvbmx5IGFwcGxpZXMgdG8gZGF5IG9mIHRoZSBtb250aFxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ2VyJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3JhdGl8c29rYWxsaXxkb25wYXJhbXxzYW5qZS8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdyYXRpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29rYWxsaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdkb25wYXJhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+IDEyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzYW5qZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncmF0aSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc29rYWxsaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZG9ucGFyYW0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NhbmplJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYXRpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdvbUxhdG47XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/gom-latn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/gu.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/gu.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n            '1': '૧',\n            '2': '૨',\n            '3': '૩',\n            '4': '૪',\n            '5': '૫',\n            '6': '૬',\n            '7': '૭',\n            '8': '૮',\n            '9': '૯',\n            '0': '૦'\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0'\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પેહલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ'\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6 // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return gu;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ndS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2d1LmpzP2UwYzUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgJzEnOiAn4KunJyxcbiAgICAgICAgICAgICcyJzogJ+CrqCcsXG4gICAgICAgICAgICAnMyc6ICfgq6knLFxuICAgICAgICAgICAgJzQnOiAn4KuqJyxcbiAgICAgICAgICAgICc1JzogJ+CrqycsXG4gICAgICAgICAgICAnNic6ICfgq6wnLFxuICAgICAgICAgICAgJzcnOiAn4KutJyxcbiAgICAgICAgICAgICc4JzogJ+CrricsXG4gICAgICAgICAgICAnOSc6ICfgq68nLFxuICAgICAgICAgICAgJzAnOiAn4KumJ1xuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KunJzogJzEnLFxuICAgICAgICAgICAgJ+CrqCc6ICcyJyxcbiAgICAgICAgICAgICfgq6knOiAnMycsXG4gICAgICAgICAgICAn4KuqJzogJzQnLFxuICAgICAgICAgICAgJ+Crqyc6ICc1JyxcbiAgICAgICAgICAgICfgq6wnOiAnNicsXG4gICAgICAgICAgICAn4KutJzogJzcnLFxuICAgICAgICAgICAgJ+Crric6ICc4JyxcbiAgICAgICAgICAgICfgq68nOiAnOScsXG4gICAgICAgICAgICAn4KumJzogJzAnXG4gICAgICAgIH07XG5cbiAgICB2YXIgZ3UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdndScsIHtcbiAgICAgICAgbW9udGhzOiAn4Kqc4Kq+4Kqo4KuN4Kqv4KuB4KqG4Kqw4KuAX+Cqq+Crh+CqrOCrjeCqsOCrgeCqhuCqsOCrgF/gqq7gqr7gqrDgq43gqppf4KqP4Kqq4KuN4Kqw4Kq/4KqyX+CqruCrh1/gqpzgq4Lgqqhf4Kqc4KuB4Kqy4Kq+4KqIX+CqkeCql+CquOCrjeCqn1/gqrjgqqrgq43gqp/gq4fgqq7gq43gqqzgqrBf4KqR4KqV4KuN4Kqf4KuN4Kqs4KqwX+CqqOCqteCrh+CqruCrjeCqrOCqsF/gqqHgqr/gqrjgq4fgqq7gq43gqqzgqrAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4Kqc4Kq+4Kqo4KuN4Kqv4KuBLl/gqqvgq4fgqqzgq43gqrDgq4EuX+CqruCqvuCqsOCrjeCqml/gqo/gqqrgq43gqrDgqr8uX+CqruCrh1/gqpzgq4Lgqqhf4Kqc4KuB4Kqy4Kq+Ll/gqpHgqpcuX+CquOCqquCrjeCqn+Crhy5f4KqR4KqV4KuN4Kqf4KuNLl/gqqjgqrXgq4cuX+CqoeCqv+CquOCrhy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4Kqw4Kq14Kq/4Kq14Kq+4KqwX+CquOCri+CqruCqteCqvuCqsF/gqq7gqoLgqpfgqrPgqrXgqr7gqrBf4Kqs4KuB4Kqn4KuN4Kq14Kq+4KqwX+Cql+CrgeCqsOCrgeCqteCqvuCqsF/gqrbgq4HgqpXgq43gqrDgqrXgqr7gqrBf4Kq24Kqo4Kq/4Kq14Kq+4KqwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Kqw4Kq14Kq/X+CquOCri+Cqrl/gqq7gqoLgqpfgqrNf4Kqs4KuB4Kqn4KuNX+Cql+CrgeCqsOCrgV/gqrbgq4HgqpXgq43gqrBf4Kq24Kqo4Kq/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CqsF/gqrjgq4tf4Kqu4KqCX+CqrOCrgV/gqpfgq4Ff4Kq24KuBX+Cqticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Kq14Kq+4KqX4KuN4Kqv4KuHJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgqobgqpxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KqV4Kq+4Kqy4KuHXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KqX4KqH4KqV4Kq+4Kqy4KuHXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgqqrgqr7gqpvgqrLgqr5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgqq7gqr4nLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCqquCrh+CqueCqsuCqvicsXG4gICAgICAgICAgICBzOiAn4KqF4Kqu4KuB4KqVIOCqquCqs+CriycsXG4gICAgICAgICAgICBzczogJyVkIOCquOCrh+CqleCqguCqoScsXG4gICAgICAgICAgICBtOiAn4KqP4KqVIOCqruCqv+CqqOCqv+CqnycsXG4gICAgICAgICAgICBtbTogJyVkIOCqruCqv+CqqOCqv+CqnycsXG4gICAgICAgICAgICBoOiAn4KqP4KqVIOCqleCqsuCqvuCqlScsXG4gICAgICAgICAgICBoaDogJyVkIOCqleCqsuCqvuCqlScsXG4gICAgICAgICAgICBkOiAn4KqP4KqVIOCqpuCqv+CqteCquCcsXG4gICAgICAgICAgICBkZDogJyVkIOCqpuCqv+CqteCquCcsXG4gICAgICAgICAgICBNOiAn4KqP4KqVIOCqruCqueCqv+CqqOCriycsXG4gICAgICAgICAgICBNTTogJyVkIOCqruCqueCqv+CqqOCriycsXG4gICAgICAgICAgICB5OiAn4KqP4KqVIOCqteCqsOCrjeCqtycsXG4gICAgICAgICAgICB5eTogJyVkIOCqteCqsOCrjeCqtydcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Crp+CrqOCrqeCrquCrq+CrrOCrreCrruCrr+Crpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gR3VqYXJhdGkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gR3VqYXJhdGkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gqrDgqr7gqqR84Kqs4Kqq4KuL4KqwfOCquOCqteCqvuCqsHzgqrjgqr7gqoLgqpwvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgqrDgqr7gqqQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqrjgqrXgqr7gqrAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kqs4Kqq4KuL4KqwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqrjgqr7gqoLgqpwnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kqw4Kq+4KqkJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrjgqrXgqr7gqrAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CqrOCqquCri+CqsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kq44Kq+4KqC4KqcJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrDgqr7gqqQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGd1O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/gu.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/he.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/he.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var he = moment.defineLocale('he', {\n        months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n        monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n        weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [ב]MMMM YYYY',\n            LLL : 'D [ב]MMMM YYYY HH:mm',\n            LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n            l : 'D/M/YYYY',\n            ll : 'D MMM YYYY',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd, D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[היום ב־]LT',\n            nextDay : '[מחר ב־]LT',\n            nextWeek : 'dddd [בשעה] LT',\n            lastDay : '[אתמול ב־]LT',\n            lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'בעוד %s',\n            past : 'לפני %s',\n            s : 'מספר שניות',\n            ss : '%d שניות',\n            m : 'דקה',\n            mm : '%d דקות',\n            h : 'שעה',\n            hh : function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d : 'יום',\n            dd : function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M : 'חודש',\n            MM : function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y : 'שנה',\n            yy : function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            }\n        },\n        meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM : function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        }\n    });\n\n    return he;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzP2M3YWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoZScsIHtcbiAgICAgICAgbW9udGhzIDogJ9eZ16DXldeQ16hf16TXkdeo15XXkNeoX9ee16jXpV/XkNek16jXmdecX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXldeh15hf16HXpNeY157XkdeoX9eQ15XXp9eY15XXkdeoX9eg15XXkdee15HXqF/Xk9em157XkdeoJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfXmdeg15XXs1/XpNeR16jXs1/Xnteo16Vf15DXpNeo17Nf157XkNeZX9eZ15XXoNeZX9eZ15XXnNeZX9eQ15XXktezX9eh16TXmNezX9eQ15XXp9ezX9eg15XXkdezX9eT16bXntezJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfXqNeQ16nXldefX9ep16DXmV/Xqdec15nXqdeZX9eo15HXmdei15lf15fXnteZ16nXmV/XqdeZ16nXmV/XqdeR16onLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn15DXs1/XkdezX9eS17Nf15PXs1/XlNezX9eV17Nf16nXsycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn15Bf15Ff15Jf15Nf15Rf15Vf16knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFvXkV1NTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW9eRXU1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW9eRXU1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsIDogJ0QvTS9ZWVlZJyxcbiAgICAgICAgICAgIGxsIDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsIDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdkZGQsIEQgTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb15TXmdeV150g15HWvl1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vXnteX16gg15HWvl1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvXkdep16LXlF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb15DXqtee15XXnCDXkda+XUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vXkdeZ15XXnV0gZGRkZCBb15TXkNeX16jXldefINeR16nXoteUXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn15HXoteV15MgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfXnNek16DXmSAlcycsXG4gICAgICAgICAgICBzIDogJ9ee16HXpNeoINep16DXmdeV16onLFxuICAgICAgICAgICAgc3MgOiAnJWQg16nXoNeZ15XXqicsXG4gICAgICAgICAgICBtIDogJ9eT16fXlCcsXG4gICAgICAgICAgICBtbSA6ICclZCDXk9en15XXqicsXG4gICAgICAgICAgICBoIDogJ9ep16LXlCcsXG4gICAgICAgICAgICBoaCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn16nXoteq15nXmdedJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg16nXoteV16onO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGQgOiAn15nXldedJyxcbiAgICAgICAgICAgIGRkIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXmdeV157XmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXmdee15nXnSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTSA6ICfXl9eV15PXqScsXG4gICAgICAgICAgICBNTSA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn15fXldeT16nXmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXl9eV15PXqdeZ150nO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHkgOiAn16nXoNeUJyxcbiAgICAgICAgICAgIHl5IDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXqdeg16rXmdeZ150nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyICUgMTAgPT09IDAgJiYgbnVtYmVyICE9PSAxMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdeg15QnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdeg15nXnSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/XkNeX15RcItemfNec16TXoNeUXCLXpnzXkNeX16jXmSDXlNem15TXqNeZ15nXnXzXnNek16DXmSDXlNem15TXqNeZ15nXnXzXnNek16DXldeqINeR15XXp9eofNeR15HXlden16h815HXoteo15EvaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNeQ15fXlFwi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815HXoteo15EpJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfXnNek16DXldeqINeR15XXp9eoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfXkdeR15XXp9eoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn15zXpNeg15RcItemJyA6ICfXnNek16DXmSDXlNem15TXqNeZ15nXnSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ9eQ15fXlFwi16YnIDogJ9eQ15fXqNeZINeU16bXlNeo15nXmdedJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfXkdei16jXkSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBoZTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/he.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/hi.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/hi.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    var hi = moment.defineLocale('hi', {\n        months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n        monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm बजे',\n            LTS : 'A h:mm:ss बजे',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm बजे',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[कल] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[कल] LT',\n            lastWeek : '[पिछले] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s में',\n            past : '%s पहले',\n            s : 'कुछ ही क्षण',\n            ss : '%d सेकंड',\n            m : 'एक मिनट',\n            mm : '%d मिनट',\n            h : 'एक घंटा',\n            hh : '%d घंटे',\n            d : 'एक दिन',\n            dd : '%d दिन',\n            M : 'एक महीने',\n            MM : '%d महीने',\n            y : 'एक वर्ष',\n            yy : '%d वर्ष'\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return hi;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hpLmpzP2RjNGQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgpacnLFxuICAgICAgICAnMic6ICfgpagnLFxuICAgICAgICAnMyc6ICfgpaknLFxuICAgICAgICAnNCc6ICfgpaonLFxuICAgICAgICAnNSc6ICfgpasnLFxuICAgICAgICAnNic6ICfgpawnLFxuICAgICAgICAnNyc6ICfgpa0nLFxuICAgICAgICAnOCc6ICfgpa4nLFxuICAgICAgICAnOSc6ICfgpa8nLFxuICAgICAgICAnMCc6ICfgpaYnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICfgpaYnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGhpID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaGknLCB7XG4gICAgICAgIG1vbnRocyA6ICfgpJzgpKjgpLXgpLDgpYBf4KSr4KS84KSw4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+CkuOCkv+CkpOCkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo4KS14KSu4KWN4KSs4KSwX+CkpuCkv+CkuOCkruCljeCkrOCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4KSc4KSoLl/gpKvgpLzgpLAuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYguX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSyLl/gpIXgpJcuX+CkuOCkv+CkpC5f4KSF4KSV4KWN4KSf4KWCLl/gpKjgpLUuX+CkpuCkv+CkuC4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ+CksOCkteCkv+CkteCkvuCksF/gpLjgpYvgpK7gpLXgpL7gpLBf4KSu4KSC4KSX4KSy4KS14KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpJfgpYHgpLDgpYLgpLXgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwX+CktuCkqOCkv+CkteCkvuCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cksl/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+CksF/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+Ckticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3Mg4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCkrOCknOClhydcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CkleCksl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4KSV4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4KSq4KS/4KSb4KSy4KWHXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4KSu4KWH4KSCJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4KSq4KS54KSy4KWHJyxcbiAgICAgICAgICAgIHMgOiAn4KSV4KWB4KSbIOCkueClgCDgpJXgpY3gpLfgpKMnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4KS44KWH4KSV4KSC4KShJyxcbiAgICAgICAgICAgIG0gOiAn4KSP4KSVIOCkruCkv+CkqOCknycsXG4gICAgICAgICAgICBtbSA6ICclZCDgpK7gpL/gpKjgpJ8nLFxuICAgICAgICAgICAgaCA6ICfgpI/gpJUg4KSY4KSC4KSf4KS+JyxcbiAgICAgICAgICAgIGhoIDogJyVkIOCkmOCkguCkn+ClhycsXG4gICAgICAgICAgICBkIDogJ+Ckj+CklSDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIE0gOiAn4KSP4KSVIOCkruCkueClgOCkqOClhycsXG4gICAgICAgICAgICBNTSA6ICclZCDgpK7gpLngpYDgpKjgpYcnLFxuICAgICAgICAgICAgeSA6ICfgpI/gpJUg4KS14KSw4KWN4KS3JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCkteCksOCljeCktydcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gSGluZGkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gSGluZGkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKR84KS44KWB4KSs4KS5fOCkpuCli+CkquCkueCksHzgpLbgpL7gpK4vLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSw4KS+4KSkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KWB4KSs4KS5Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuCli+CkquCkueCksCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS24KS+4KSuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOClgeCkrOCkuSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KWL4KSq4KS54KSwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLbgpL7gpK4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhpO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/hi.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/hr.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/hr.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months : {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n        },\n        monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danas u] LT',\n            nextDay  : '[sutra u] LT',\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[jučer u] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'par sekundi',\n            ss     : translate,\n            m      : translate,\n            mm     : translate,\n            h      : translate,\n            hh     : translate,\n            d      : 'dan',\n            dd     : translate,\n            M      : 'mjesec',\n            MM     : translate,\n            y      : 'godinu',\n            yy     : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return hr;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hyLmpzPzRiYTkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRuYSBtaW51dGEnIDogJ2plZG5lIG1pbnV0ZSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0ZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkYW4gc2F0JyA6ICdqZWRub2cgc2F0YSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2Rhbic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5lJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaHIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdocicsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAnc2lqZcSNbmphX3ZlbGphxI1lX2/FvnVqa2FfdHJhdm5qYV9zdmlibmphX2xpcG5qYV9zcnBuamFfa29sb3ZvemFfcnVqbmFfbGlzdG9wYWRhX3N0dWRlbm9nYV9wcm9zaW5jYScuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICdzaWplxI1hbmpfdmVsamHEjWFfb8W+dWpha190cmF2YW5qX3N2aWJhbmpfbGlwYW5qX3NycGFual9rb2xvdm96X3J1amFuX2xpc3RvcGFkX3N0dWRlbmlfcHJvc2luYWMnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnc2lqLl92ZWxqLl9vxb51Ll90cmEuX3N2aS5fbGlwLl9zcnAuX2tvbC5fcnVqLl9saXMuX3N0dS5fcHJvLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICduZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5ICA6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSAgOiAnW3N1dHJhIHVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgIDogJ1tqdcSNZXIgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxpXSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0ICAgOiAncHJpamUgJXMnLFxuICAgICAgICAgICAgcyAgICAgIDogJ3BhciBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgICAgICA6ICdkYW4nLFxuICAgICAgICAgICAgZGQgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSAgICAgIDogJ21qZXNlYycsXG4gICAgICAgICAgICBNTSAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5ICAgICAgOiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5ICAgICA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhyO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/hr.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/hu.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/hu.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n        monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n        weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'YYYY.MM.DD.',\n            LL : 'YYYY. MMMM D.',\n            LLL : 'YYYY. MMMM D. H:mm',\n            LLLL : 'YYYY. MMMM D., dddd H:mm'\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar : {\n            sameDay : '[ma] LT[-kor]',\n            nextDay : '[holnap] LT[-kor]',\n            nextWeek : function () {\n                return week.call(this, true);\n            },\n            lastDay : '[tegnap] LT[-kor]',\n            lastWeek : function () {\n                return week.call(this, false);\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s múlva',\n            past : '%s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return hu;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzPzViMTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgd2Vla0VuZGluZ3MgPSAndmFzw6FybmFwIGjDqXRmxZFuIGtlZGRlbiBzemVyZMOhbiBjc8O8dMO2cnTDtmvDtm4gcMOpbnRla2VuIHN6b21iYXRvbicuc3BsaXQoJyAnKTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBudW0gPSBudW1iZXI7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXgpID8gJ27DqWjDoW55IG3DoXNvZHBlcmMnIDogJ27DqWjDoW55IG3DoXNvZHBlcmNlJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXgpID8gJyBtw6Fzb2RwZXJjJyA6ICcgbcOhc29kcGVyY2UnO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIHBlcmMnIDogJyBwZXJjZScpO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgcGVyYycgOiAnIHBlcmNlJyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw7NyYScgOiAnIMOzcsOhamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOzcmEnIDogJyDDs3LDoWphJyk7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgbmFwJyA6ICcgbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIG5hcCcgOiAnIG5hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgaMOzbmFwJyA6ICcgaMOzbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIGjDs25hcCcgOiAnIGjDs25hcGphJyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw6l2JyA6ICcgw6l2ZScpO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw6l2JyA6ICcgw6l2ZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgZnVuY3Rpb24gd2Vlayhpc0Z1dHVyZSkge1xuICAgICAgICByZXR1cm4gKGlzRnV0dXJlID8gJycgOiAnW23Dumx0XSAnKSArICdbJyArIHdlZWtFbmRpbmdzW3RoaXMuZGF5KCldICsgJ10gTFRbLWtvcl0nO1xuICAgIH1cblxuICAgIHZhciBodSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2h1Jywge1xuICAgICAgICBtb250aHMgOiAnamFudcOhcl9mZWJydcOhcl9tw6FyY2l1c1/DoXByaWxpc19tw6FqdXNfasO6bml1c19qw7psaXVzX2F1Z3VzenR1c19zemVwdGVtYmVyX29rdMOzYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX23DoXJjX8OhcHJfbcOhal9qw7puX2rDumxfYXVnX3N6ZXB0X29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICd2YXPDoXJuYXBfaMOpdGbFkV9rZWRkX3N6ZXJkYV9jc8O8dMO2cnTDtmtfcMOpbnRla19zem9tYmF0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3Zhc19ow6l0X2tlZGRfc3plX2Nzw7x0X3DDqW5fc3pvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICd2X2hfa19zemVfY3NfcF9zem8nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVkuIE1NTU0gRC4nLFxuICAgICAgICAgICAgTExMIDogJ1lZWVkuIE1NTU0gRC4gSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVkuIE1NTU0gRC4sIGRkZGQgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2RlfGR1L2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgxKS50b0xvd2VyQ2FzZSgpID09PSAndSc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2RlJyA6ICdERSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2R1JyA6ICdEVSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbbWFdIExUWy1rb3JdJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW2hvbG5hcF0gTFRbLWtvcl0nLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdlZWsuY2FsbCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1t0ZWduYXBdIExUWy1rb3JdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3ZWVrLmNhbGwodGhpcywgZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBtw7psdmEnLFxuICAgICAgICAgICAgcGFzdCA6ICclcycsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBodTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/hu.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/hy-am.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/hy-am.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months : {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n        },\n        monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n        weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY թ.',\n            LLL : 'D MMMM YYYY թ., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\n        },\n        calendar : {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s հետո',\n            past : '%s առաջ',\n            s : 'մի քանի վայրկյան',\n            ss : '%d վայրկյան',\n            m : 'րոպե',\n            mm : '%d րոպե',\n            h : 'ժամ',\n            hh : '%d ժամ',\n            d : 'օր',\n            dd : '%d օր',\n            M : 'ամիս',\n            MM : '%d ամիս',\n            y : 'տարի',\n            yy : '%d տարի'\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem : function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return hyAm;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h5LWFtLmpzP2Q2YjYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaHlBbSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2h5LWFtJywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfVsNW41oLVttW+1aHWgNWrX9aD1aXVv9aA1b7VodaA1atf1bTVodaA1b/Vq1/VodW61oDVq9Ws1atf1bTVodW11avVvdWrX9Ww1bjWgtW21avVvdWrX9Ww1bjWgtWs1avVvdWrX9aF1aPVuNW91b/VuNW91atf1b3VpdW61b/VpdW01aLVpdaA1atf1bDVuNWv1b/VpdW01aLVpdaA1atf1bbVuNW11aXVtNWi1aXWgNWrX9Wk1aXVr9W/1aXVtNWi1aXWgNWrJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9Ww1bjWgtW21b7VodaAX9aD1aXVv9aA1b7VodaAX9W01aHWgNW/X9Wh1brWgNWr1axf1bTVodW11avVvV/VsNW41oLVttWr1b1f1bDVuNaC1azVq9W9X9aF1aPVuNW91b/VuNW9X9W91aXVutW/1aXVtNWi1aXWgF/VsNW41a/Vv9Wl1bTVotWl1oBf1bbVuNW11aXVtNWi1aXWgF/VpNWl1a/Vv9Wl1bTVotWl1oAnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn1bDVttW+X9aD1b/WgF/VtNaA1b9f1aHVutaAX9W01bXVvV/VsNW21b1f1bDVrNW9X9aF1aPVvV/VvdW61b9f1bDVr9W/X9W21bTVol/VpNWv1b8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9Wv1avWgNWh1a/Vq1/VpdaA1a/VuNaC1bfVodWi1anVq1/VpdaA1aXWhNW31aHVotWp1atf1bnVuNaA1aXWhNW31aHVotWp1atf1bDVq9W21aPVt9Wh1aLVqdWrX9W41oLWgNWi1aHVqV/Vt9Wh1aLVodWpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9Wv1oDVr1/VpdaA1a9f1aXWgNaEX9W51oDWhF/VsNW21aNf1bjWgtaA1aJf1bfVotWpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfVr9aA1a9f1aXWgNWvX9Wl1oDWhF/VudaA1oRf1bDVttWjX9W41oLWgNWiX9W31aLVqScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZINWpLicsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg1akuLCBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZINWpLiwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vVodW11b3WhdaAXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9W+1aHVstWoXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Wl1oDVpdWvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBb1oXWgNWoINWq1aHVtNWoXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1vVodW21oHVodWuXSBkZGRkIFvWhdaA1agg1arVodW01ahdIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDVsNWl1b/VuCcsXG4gICAgICAgICAgICBwYXN0IDogJyVzINWh1bzVodW7JyxcbiAgICAgICAgICAgIHMgOiAn1bTVqyDWhNWh1bbVqyDVvtWh1bXWgNWv1bXVodW2JyxcbiAgICAgICAgICAgIHNzIDogJyVkINW+1aHVtdaA1a/VtdWh1bYnLFxuICAgICAgICAgICAgbSA6ICfWgNW41brVpScsXG4gICAgICAgICAgICBtbSA6ICclZCDWgNW41brVpScsXG4gICAgICAgICAgICBoIDogJ9Wq1aHVtCcsXG4gICAgICAgICAgICBoaCA6ICclZCDVqtWh1bQnLFxuICAgICAgICAgICAgZCA6ICfWhdaAJyxcbiAgICAgICAgICAgIGRkIDogJyVkINaF1oAnLFxuICAgICAgICAgICAgTSA6ICfVodW01avVvScsXG4gICAgICAgICAgICBNTSA6ICclZCDVodW01avVvScsXG4gICAgICAgICAgICB5IDogJ9W/1aHWgNWrJyxcbiAgICAgICAgICAgIHl5IDogJyVkINW/1aHWgNWrJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv1aPVq9W31aXWgNW+1aF81aHVvNWh1b7VuNW/1b7VoXzWgdWl1oDVpdWv1b7VoXzVpdaA1aXVr9W41bXVodW2LyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o1oHVpdaA1aXVr9W+1aF81aXWgNWl1a/VuNW11aHVtikkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfVo9Wr1bfVpdaA1b7VoSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1aHVvNWh1b7VuNW/1b7VoSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1oHVpdaA1aXVr9W+1aEnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Wl1oDVpdWv1bjVtdWh1bYnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn18XFxkezEsMn0tKNWr1bZ81oDVpCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICBjYXNlICdERERvJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct1avVtic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct1oDVpCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHlBbTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/hy-am.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/id.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/id.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var id = moment.defineLocale('id', {\n        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Besok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kemarin pukul] LT',\n            lastWeek : 'dddd [lalu pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lalu',\n            s : 'beberapa detik',\n            ss : '%d detik',\n            m : 'semenit',\n            mm : '%d menit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return id;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lkLmpzPzUwMzgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaWQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpZCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWd0X1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnTWluZ2d1X1NlbmluX1NlbGFzYV9SYWJ1X0thbWlzX0p1bWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ01pbl9TZW5fU2VsX1JhYl9LYW1fSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnTWdfU25fU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHNpYW5nfHNvcmV8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncGFnaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzaWFuZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29yZScgfHwgbWVyaWRpZW0gPT09ICdtYWxhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BhZ2knO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzaWFuZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NvcmUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21hbGFtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tIYXJpIGluaSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbQmVzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tLZW1hcmluIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtsYWx1IHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyB5YW5nIGxhbHUnLFxuICAgICAgICAgICAgcyA6ICdiZWJlcmFwYSBkZXRpaycsXG4gICAgICAgICAgICBzcyA6ICclZCBkZXRpaycsXG4gICAgICAgICAgICBtIDogJ3NlbWVuaXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWVuaXQnLFxuICAgICAgICAgICAgaCA6ICdzZWphbScsXG4gICAgICAgICAgICBoaCA6ICclZCBqYW0nLFxuICAgICAgICAgICAgZCA6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQgOiAnJWQgaGFyaScsXG4gICAgICAgICAgICBNIDogJ3NlYnVsYW4nLFxuICAgICAgICAgICAgTU0gOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeSA6ICdzZXRhaHVuJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHRhaHVuJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpZDtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/id.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/is.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/is.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n        weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] H:mm',\n            LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n        },\n        calendar : {\n            sameDay : '[í dag kl.] LT',\n            nextDay : '[á morgun kl.] LT',\n            nextWeek : 'dddd [kl.] LT',\n            lastDay : '[í gær kl.] LT',\n            lastWeek : '[síðasta] dddd [kl.] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'eftir %s',\n            past : 'fyrir %s síðan',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : 'klukkustund',\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return is;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzPzA1NTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICBpZiAobiAlIDEwMCA9PT0gMTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKG4gJSAxMCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdub2trcmFyIHNla8O6bmR1cicgOiAnbm9ra3J1bSBzZWvDum5kdW0nO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnc2Vrw7puZHVyJyA6ICdzZWvDum5kdW0nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWvDum5kYSc7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtw61uw7p0YScgOiAnbcOtbsO6dHUnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbcOtbsO6dHVyJyA6ICdtw61uw7p0dW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw61uw7p0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOtbsO6dHUnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAna2x1a2t1c3R1bmRpcicgOiAna2x1a2t1c3R1bmR1bScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2tsdWtrdXN0dW5kJztcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFndXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnZGFnJyA6ICdkZWdpJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZGFnYXInO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnZGFnYScgOiAnZMO2Z3VtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZGFndXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ2RhZycgOiAnZGVnaScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdtw6FudcOwdXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnbcOhbnXDsCcgOiAnbcOhbnXDsGknO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw6FudcOwaXInO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnbcOhbnXDsGknIDogJ23DoW51w7B1bScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DoW51w7B1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnbcOhbnXDsCcgOiAnbcOhbnXDsGknKTtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FyaSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcnVtJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcmknKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBpcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2lzJywge1xuICAgICAgICBtb250aHMgOiAnamFuw7phcl9mZWJyw7phcl9tYXJzX2FwcsOtbF9tYcOtX2rDum7DrV9qw7psw61fw6Fnw7pzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbsOzdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWHDrV9qw7puX2rDumxfw6Fnw7pfc2VwX29rdF9uw7N2X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc3VubnVkYWd1cl9tw6FudWRhZ3VyX8O+cmnDsGp1ZGFndXJfbWnDsHZpa3VkYWd1cl9maW1tdHVkYWd1cl9mw7ZzdHVkYWd1cl9sYXVnYXJkYWd1cicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzdW5fbcOhbl/DvnJpX21pw7BfZmltX2bDtnNfbGF1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nw6Ffw55yX01pX0ZpX0bDtl9MYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBba2wuXSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbw60gZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbw6EgbW9yZ3VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vDrSBnw6ZyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3PDrcOwYXN0YV0gZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZWZ0aXIgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdmeXJpciAlcyBzw63DsGFuJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiAna2x1a2t1c3R1bmQnLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpcztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/is.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/it-ch.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/it-ch.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var itCh = moment.defineLocale('it-ch', {\n        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past : '%s fa',\n            s : 'alcuni secondi',\n            ss : '%d secondi',\n            m : 'un minuto',\n            mm : '%d minuti',\n            h : 'un\\'ora',\n            hh : '%d ore',\n            d : 'un giorno',\n            dd : '%d giorni',\n            M : 'un mese',\n            MM : '%d mesi',\n            y : 'un anno',\n            yy : '%d anni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return itCh;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzPzZmMTIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaXRDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2l0LWNoJywge1xuICAgICAgICBtb250aHMgOiAnZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnZG9tZW5pY2FfbHVuZWTDrF9tYXJ0ZWTDrF9tZXJjb2xlZMOsX2dpb3ZlZMOsX3ZlbmVyZMOsX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX21lX2dpX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW09nZ2kgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEb21hbmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthbGxlXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0llcmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbGEgc2NvcnNhXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgICAgIHJldHVybiAoKC9eWzAtOV0uKyQvKS50ZXN0KHMpID8gJ3RyYScgOiAnaW4nKSArICcgJyArIHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdCA6ICclcyBmYScsXG4gICAgICAgICAgICBzIDogJ2FsY3VuaSBzZWNvbmRpJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGknLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGggOiAndW5cXCdvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgb3JlJyxcbiAgICAgICAgICAgIGQgOiAndW4gZ2lvcm5vJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGdpb3JuaScsXG4gICAgICAgICAgICBNIDogJ3VuIG1lc2UnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzaScsXG4gICAgICAgICAgICB5IDogJ3VuIGFubm8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5uaSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdENoO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/it-ch.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/it.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/it.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var it = moment.defineLocale('it', {\n        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past : '%s fa',\n            s : 'alcuni secondi',\n            ss : '%d secondi',\n            m : 'un minuto',\n            mm : '%d minuti',\n            h : 'un\\'ora',\n            hh : '%d ore',\n            d : 'un giorno',\n            dd : '%d giorni',\n            M : 'un mese',\n            MM : '%d mesi',\n            y : 'un anno',\n            yy : '%d anni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return it;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LmpzPzZlOTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpdCcsIHtcbiAgICAgICAgbW9udGhzIDogJ2dlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ2RvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkb19sdV9tYV9tZV9naV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tPZ2dpIGFsbGVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRG9tYW5pIGFsbGVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJZXJpIGFsbGVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbG8gc2NvcnNvXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCgvXlswLTldLiskLykudGVzdChzKSA/ICd0cmEnIDogJ2luJykgKyAnICcgKyBzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgZmEnLFxuICAgICAgICAgICAgcyA6ICdhbGN1bmkgc2Vjb25kaScsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRpJyxcbiAgICAgICAgICAgIG0gOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoIDogJ3VuXFwnb3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIG9yZScsXG4gICAgICAgICAgICBkIDogJ3VuIGdpb3JubycsXG4gICAgICAgICAgICBkZCA6ICclZCBnaW9ybmknLFxuICAgICAgICAgICAgTSA6ICd1biBtZXNlJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2knLFxuICAgICAgICAgICAgeSA6ICd1biBhbm5vJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFubmknXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXQ7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/it.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ja.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ja.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var ja = moment.defineLocale('ja', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日 dddd HH:mm',\n            l : 'YYYY/MM/DD',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日(ddd) HH:mm'\n        },\n        meridiemParse: /午前|午後/i,\n        isPM : function (input) {\n            return input === '午後';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar : {\n            sameDay : '[今日] LT',\n            nextDay : '[明日] LT',\n            nextWeek : function (now) {\n                if (now.week() < this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay : '[昨日] LT',\n            lastWeek : function (now) {\n                if (this.week() < now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}日/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s後',\n            past : '%s前',\n            s : '数秒',\n            ss : '%d秒',\n            m : '1分',\n            mm : '%d分',\n            h : '1時間',\n            hh : '%d時間',\n            d : '1日',\n            dd : '%d日',\n            M : '1ヶ月',\n            MM : '%dヶ月',\n            y : '1年',\n            yy : '%d年'\n        }\n    });\n\n    return ja;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzPzA3OWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgamEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdqYScsIHtcbiAgICAgICAgbW9udGhzIDogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn5pel5puc5pelX+aciOabnOaXpV/ngavmm5zml6Vf5rC05puc5pelX+acqOabnOaXpV/ph5Hmm5zml6Vf5Zyf5puc5pelJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+aXpV/mnIhf54GrX+awtF/mnKhf6YeRX+Wcnycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZ5bm0TeaciETml6UgZGRkZCBISDptbScsXG4gICAgICAgICAgICBsIDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgbGwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbCA6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdZWVlZ5bm0TeaciETml6UoZGRkKSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WNiOWJjXzljYjlvowvaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn5Y2I5b6MJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfljYjliY0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WNiOW+jCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb5LuK5pelXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vmmI7ml6VdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpIDwgdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5p2l6YCxXWRkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+aYqOaXpV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2VlaygpIDwgbm93LndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vlhYjpgLFdZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfeaXpS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclc+W+jCcsXG4gICAgICAgICAgICBwYXN0IDogJyVz5YmNJyxcbiAgICAgICAgICAgIHMgOiAn5pWw56eSJyxcbiAgICAgICAgICAgIHNzIDogJyVk56eSJyxcbiAgICAgICAgICAgIG0gOiAnMeWIhicsXG4gICAgICAgICAgICBtbSA6ICclZOWIhicsXG4gICAgICAgICAgICBoIDogJzHmmYLplpMnLFxuICAgICAgICAgICAgaGggOiAnJWTmmYLplpMnLFxuICAgICAgICAgICAgZCA6ICcx5pelJyxcbiAgICAgICAgICAgIGRkIDogJyVk5pelJyxcbiAgICAgICAgICAgIE0gOiAnMeODtuaciCcsXG4gICAgICAgICAgICBNTSA6ICclZOODtuaciCcsXG4gICAgICAgICAgICB5IDogJzHlubQnLFxuICAgICAgICAgICAgeXkgOiAnJWTlubQnXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBqYTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ja.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/jv.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/jv.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var jv = moment.defineLocale('jv', {\n        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar : {\n            sameDay : '[Dinten puniko pukul] LT',\n            nextDay : '[Mbenjang pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kala wingi pukul] LT',\n            lastWeek : 'dddd [kepengker pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'wonten ing %s',\n            past : '%s ingkang kepengker',\n            s : 'sawetawis detik',\n            ss : '%d detik',\n            m : 'setunggal menit',\n            mm : '%d menit',\n            h : 'setunggal jam',\n            hh : '%d jam',\n            d : 'sedinten',\n            dd : '%d dinten',\n            M : 'sewulan',\n            MM : '%d wulan',\n            y : 'setaun',\n            yy : '%d taun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return jv;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2p2LmpzP2I1NDAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIganYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdqdicsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vcGVtYmVyX0Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWdzX1NlcF9Pa3RfTm9wX0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnTWluZ2d1X1NlbmVuX1NlbG9zb19SZWJ1X0tlbWlzX0plbXV3YWhfU2VwdHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnTWluX1Nlbl9TZWxfUmViX0tlbV9KZW1fU2VwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdNZ19Tbl9TbF9SYl9LbV9KbV9TcCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISC5tbScsXG4gICAgICAgICAgICBMVFMgOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2VuamluZ3xzaXlhbmd8c29udGVufG5kYWx1LyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ2VuamluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzaXlhbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NvbnRlbicgfHwgbWVyaWRpZW0gPT09ICduZGFsdScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VuamluZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpeWFuZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbnRlbic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbmRhbHUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0RpbnRlbiBwdW5pa28gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW01iZW5qYW5nIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS2FsYSB3aW5naSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBba2VwZW5na2VyIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnd29udGVuIGluZyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGluZ2thbmcga2VwZW5na2VyJyxcbiAgICAgICAgICAgIHMgOiAnc2F3ZXRhd2lzIGRldGlrJyxcbiAgICAgICAgICAgIHNzIDogJyVkIGRldGlrJyxcbiAgICAgICAgICAgIG0gOiAnc2V0dW5nZ2FsIG1lbml0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1lbml0JyxcbiAgICAgICAgICAgIGggOiAnc2V0dW5nZ2FsIGphbScsXG4gICAgICAgICAgICBoaCA6ICclZCBqYW0nLFxuICAgICAgICAgICAgZCA6ICdzZWRpbnRlbicsXG4gICAgICAgICAgICBkZCA6ICclZCBkaW50ZW4nLFxuICAgICAgICAgICAgTSA6ICdzZXd1bGFuJyxcbiAgICAgICAgICAgIE1NIDogJyVkIHd1bGFuJyxcbiAgICAgICAgICAgIHkgOiAnc2V0YXVuJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHRhdW4nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGp2O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/jv.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ka.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ka.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var ka = moment.defineLocale('ka', {\n        months : {\n            standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n            format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n        },\n        monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays : {\n            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n            isFormat: /(წინა|შემდეგ)/\n        },\n        weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[დღეს] LT[-ზე]',\n            nextDay : '[ხვალ] LT[-ზე]',\n            lastDay : '[გუშინ] LT[-ზე]',\n            nextWeek : '[შემდეგ] dddd LT[-ზე]',\n            lastWeek : '[წინა] dddd LT-ზე',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n                    s.replace(/ი$/, 'ში') :\n                    s + 'ში';\n            },\n            past : function (s) {\n                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if ((/წელი/).test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n            },\n            s : 'რამდენიმე წამი',\n            ss : '%d წამი',\n            m : 'წუთი',\n            mm : '%d წუთი',\n            h : 'საათი',\n            hh : '%d საათი',\n            d : 'დღე',\n            dd : '%d დღე',\n            M : 'თვე',\n            MM : '%d თვე',\n            y : 'წელი',\n            yy : '%d წელი'\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal : function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week : {\n            dow : 1,\n            doy : 7\n        }\n    });\n\n    return ka;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2thLmpzPzIwMWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIga2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrYScsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ+GDmOGDkOGDnOGDleGDkOGDoOGDmF/hg5fhg5Thg5Hhg5Thg6Dhg5Xhg5Dhg5rhg5hf4YOb4YOQ4YOg4YOi4YOYX+GDkOGDnuGDoOGDmOGDmuGDmF/hg5vhg5Dhg5jhg6Hhg5hf4YOY4YOV4YOc4YOY4YOh4YOYX+GDmOGDleGDmuGDmOGDoeGDmF/hg5Dhg5Lhg5Xhg5jhg6Hhg6Lhg51f4YOh4YOU4YOl4YOi4YOU4YOb4YOR4YOU4YOg4YOYX+GDneGDpeGDouGDneGDm+GDkeGDlOGDoOGDmF/hg5zhg53hg5Thg5vhg5Hhg5Thg6Dhg5hf4YOT4YOU4YOZ4YOU4YOb4YOR4YOU4YOg4YOYJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgZm9ybWF0OiAn4YOY4YOQ4YOc4YOV4YOQ4YOg4YOhX+GDl+GDlOGDkeGDlOGDoOGDleGDkOGDmuGDoV/hg5vhg5Dhg6Dhg6Lhg6Ff4YOQ4YOe4YOg4YOY4YOa4YOY4YOhX+GDm+GDkOGDmOGDoeGDoV/hg5jhg5Xhg5zhg5jhg6Hhg6Ff4YOY4YOV4YOa4YOY4YOh4YOhX+GDkOGDkuGDleGDmOGDoeGDouGDoV/hg6Hhg5Thg6Xhg6Lhg5Thg5vhg5Hhg5Thg6Dhg6Ff4YOd4YOl4YOi4YOd4YOb4YOR4YOU4YOg4YOhX+GDnOGDneGDlOGDm+GDkeGDlOGDoOGDoV/hg5Phg5Thg5nhg5Thg5vhg5Hhg5Thg6Dhg6EnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4YOY4YOQ4YOcX+GDl+GDlOGDkV/hg5vhg5Dhg6Bf4YOQ4YOe4YOgX+GDm+GDkOGDmF/hg5jhg5Xhg5xf4YOY4YOV4YOaX+GDkOGDkuGDlV/hg6Hhg5Thg6Vf4YOd4YOl4YOiX+GDnOGDneGDlF/hg5Phg5Thg5knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ+GDmeGDleGDmOGDoOGDkF/hg53hg6Dhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOh4YOQ4YOb4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDneGDl+GDruGDqOGDkOGDkeGDkOGDl+GDmF/hg67hg6Phg5fhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOe4YOQ4YOg4YOQ4YOh4YOZ4YOU4YOV4YOYX+GDqOGDkOGDkeGDkOGDl+GDmCcuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ+GDmeGDleGDmOGDoOGDkOGDoV/hg53hg6Dhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOh4YOQ4YOb4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDneGDl+GDruGDqOGDkOGDkeGDkOGDl+GDoV/hg67hg6Phg5fhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOe4YOQ4YOg4YOQ4YOh4YOZ4YOU4YOV4YOhX+GDqOGDkOGDkeGDkOGDl+GDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvKOGDrOGDmOGDnOGDkHzhg6jhg5Thg5vhg5Phg5Thg5IpL1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+GDmeGDleGDmF/hg53hg6Dhg6hf4YOh4YOQ4YObX+GDneGDl+GDrl/hg67hg6Phg5df4YOe4YOQ4YOgX+GDqOGDkOGDkScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4YOZ4YOVX+GDneGDoF/hg6Hhg5Bf4YOd4YOXX+GDruGDo1/hg57hg5Bf4YOo4YOQJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+GDk+GDpuGDlOGDoV0gTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4YOu4YOV4YOQ4YOaXSBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vhg5Lhg6Phg6jhg5jhg5xdIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vhg6jhg5Thg5vhg5Phg5Thg5JdIGRkZGQgTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+GDrOGDmOGDnOGDkF0gZGRkZCBMVC3hg5bhg5QnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKC8o4YOs4YOQ4YOb4YOYfOGDrOGDo+GDl+GDmHzhg6Hhg5Dhg5Dhg5fhg5h84YOs4YOU4YOa4YOYKS8pLnRlc3QocykgP1xuICAgICAgICAgICAgICAgICAgICBzLnJlcGxhY2UoL+GDmCQvLCAn4YOo4YOYJykgOlxuICAgICAgICAgICAgICAgICAgICBzICsgJ+GDqOGDmCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdCA6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCgvKOGDrOGDkOGDm+GDmHzhg6zhg6Phg5fhg5h84YOh4YOQ4YOQ4YOX4YOYfOGDk+GDpuGDlHzhg5fhg5Xhg5QpLykudGVzdChzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC8o4YOYfOGDlCkkLywgJ+GDmOGDoSDhg6zhg5jhg5wnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCgv4YOs4YOU4YOa4YOYLykudGVzdChzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC/hg6zhg5Thg5rhg5gkLywgJ+GDrOGDmuGDmOGDoSDhg6zhg5jhg5wnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcyA6ICfhg6Dhg5Dhg5vhg5Phg5Thg5zhg5jhg5vhg5Qg4YOs4YOQ4YOb4YOYJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOGDrOGDkOGDm+GDmCcsXG4gICAgICAgICAgICBtIDogJ+GDrOGDo+GDl+GDmCcsXG4gICAgICAgICAgICBtbSA6ICclZCDhg6zhg6Phg5fhg5gnLFxuICAgICAgICAgICAgaCA6ICfhg6Hhg5Dhg5Dhg5fhg5gnLFxuICAgICAgICAgICAgaGggOiAnJWQg4YOh4YOQ4YOQ4YOX4YOYJyxcbiAgICAgICAgICAgIGQgOiAn4YOT4YOm4YOUJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOGDk+GDpuGDlCcsXG4gICAgICAgICAgICBNIDogJ+GDl+GDleGDlCcsXG4gICAgICAgICAgICBNTSA6ICclZCDhg5fhg5Xhg5QnLFxuICAgICAgICAgICAgeSA6ICfhg6zhg5Thg5rhg5gnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4YOs4YOU4YOa4YOYJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvMHwxLeGDmuGDmHzhg5vhg5QtXFxkezEsMn18XFxkezEsMn0t4YOULyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLeGDmuGDmCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG51bWJlciA8IDIwKSB8fCAobnVtYmVyIDw9IDEwMCAmJiAobnVtYmVyICUgMjAgPT09IDApKSB8fCAobnVtYmVyICUgMTAwID09PSAwKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4YOb4YOULScgKyBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3hg5QnO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSxcbiAgICAgICAgICAgIGRveSA6IDdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGthO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ka.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/kk.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/kk.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші'\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n        monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n        weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бүгін сағат] LT',\n            nextDay : '[Ертең сағат] LT',\n            nextWeek : 'dddd [сағат] LT',\n            lastDay : '[Кеше сағат] LT',\n            lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ішінде',\n            past : '%s бұрын',\n            s : 'бірнеше секунд',\n            ss : '%d секунд',\n            m : 'бір минут',\n            mm : '%d минут',\n            h : 'бір сағат',\n            hh : '%d сағат',\n            d : 'бір күн',\n            dd : '%d күн',\n            M : 'бір ай',\n            MM : '%d ай',\n            y : 'бір жыл',\n            yy : '%d жыл'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal : function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return kk;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzPzZkNzkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YjRlicsXG4gICAgICAgIDE6ICct0YjRlicsXG4gICAgICAgIDI6ICct0YjRlicsXG4gICAgICAgIDM6ICct0YjRlicsXG4gICAgICAgIDQ6ICct0YjRlicsXG4gICAgICAgIDU6ICct0YjRlicsXG4gICAgICAgIDY6ICct0YjRiycsXG4gICAgICAgIDc6ICct0YjRlicsXG4gICAgICAgIDg6ICct0YjRlicsXG4gICAgICAgIDk6ICct0YjRiycsXG4gICAgICAgIDEwOiAnLdGI0YsnLFxuICAgICAgICAyMDogJy3RiNGLJyxcbiAgICAgICAgMzA6ICct0YjRiycsXG4gICAgICAgIDQwOiAnLdGI0YsnLFxuICAgICAgICA1MDogJy3RiNGWJyxcbiAgICAgICAgNjA6ICct0YjRiycsXG4gICAgICAgIDcwOiAnLdGI0ZYnLFxuICAgICAgICA4MDogJy3RiNGWJyxcbiAgICAgICAgOTA6ICct0YjRiycsXG4gICAgICAgIDEwMDogJy3RiNGWJ1xuICAgIH07XG5cbiAgICB2YXIga2sgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdraycsIHtcbiAgICAgICAgbW9udGhzIDogJ9Kb0LDSo9GC0LDRgF/QsNKb0L/QsNC9X9C90LDRg9GA0YvQt1/RgdOZ0YPRltGAX9C80LDQvNGL0YBf0LzQsNGD0YHRi9C8X9GI0ZbQu9C00LVf0YLQsNC80YvQt1/Sm9GL0YDQutKv0LnQtdC6X9Kb0LDQt9Cw0L1f0pvQsNGA0LDRiNCwX9C20LXQu9GC0L7Sm9GB0LDQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0pvQsNKjX9Cw0pvQv1/QvdCw0YNf0YHTmdGDX9C80LDQvF/QvNCw0YNf0YjRltC7X9GC0LDQvF/Sm9GL0YBf0pvQsNC3X9Kb0LDRgF/QttC10LsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9C20LXQutGB0LXQvdCx0ZZf0LTSr9C50YHQtdC90LHRll/RgdC10LnRgdC10L3QsdGWX9GB05nRgNGB0LXQvdCx0ZZf0LHQtdC50YHQtdC90LHRll/QttKx0LzQsF/RgdC10L3QsdGWJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9C20LXQul/QtNKv0Llf0YHQtdC5X9GB05nRgF/QsdC10Llf0LbSsdC8X9GB0LXQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0LbQul/QtNC5X9GB0Llf0YHRgF/QsdC5X9C20Lxf0YHQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CR0q/Qs9GW0L0g0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0JXRgNGC0LXSoyDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vQmtC10YjQtSDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb06jRgtC60LXQvSDQsNC/0YLQsNC90YvSo10gZGRkZCBb0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzINGW0YjRltC90LTQtScsXG4gICAgICAgICAgICBwYXN0IDogJyVzINCx0rHRgNGL0L0nLFxuICAgICAgICAgICAgcyA6ICfQsdGW0YDQvdC10YjQtSDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3MgOiAnJWQg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG0gOiAn0LHRltGAINC80LjQvdGD0YInLFxuICAgICAgICAgICAgbW0gOiAnJWQg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBoIDogJ9Cx0ZbRgCDRgdCw0pPQsNGCJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGB0LDSk9Cw0YInLFxuICAgICAgICAgICAgZCA6ICfQsdGW0YAg0LrSr9C9JyxcbiAgICAgICAgICAgIGRkIDogJyVkINC60q/QvScsXG4gICAgICAgICAgICBNIDogJ9Cx0ZbRgCDQsNC5JyxcbiAgICAgICAgICAgIE1NIDogJyVkINCw0LknLFxuICAgICAgICAgICAgeSA6ICfQsdGW0YAg0LbRi9C7JyxcbiAgICAgICAgICAgIHl5IDogJyVkINC20YvQuydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRiNGWfNGI0YspLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1tudW1iZXJdIHx8IHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga2s7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/kk.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/km.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/km.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '១',\n        '2': '២',\n        '3': '៣',\n        '4': '៤',\n        '5': '៥',\n        '6': '៦',\n        '7': '៧',\n        '8': '៨',\n        '9': '៩',\n        '0': '០'\n    }, numberMap = {\n        '១': '1',\n        '២': '2',\n        '៣': '3',\n        '៤': '4',\n        '៥': '5',\n        '៦': '6',\n        '៧': '7',\n        '៨': '8',\n        '៩': '9',\n        '០': '0'\n    };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ'\n        },\n        dayOfMonthOrdinalParse : /ទី\\d{1,2}/,\n        ordinal : 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return km;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ttLmpzP2U4MWQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfhn6EnLFxuICAgICAgICAnMic6ICfhn6InLFxuICAgICAgICAnMyc6ICfhn6MnLFxuICAgICAgICAnNCc6ICfhn6QnLFxuICAgICAgICAnNSc6ICfhn6UnLFxuICAgICAgICAnNic6ICfhn6YnLFxuICAgICAgICAnNyc6ICfhn6cnLFxuICAgICAgICAnOCc6ICfhn6gnLFxuICAgICAgICAnOSc6ICfhn6knLFxuICAgICAgICAnMCc6ICfhn6AnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4Z+hJzogJzEnLFxuICAgICAgICAn4Z+iJzogJzInLFxuICAgICAgICAn4Z+jJzogJzMnLFxuICAgICAgICAn4Z+kJzogJzQnLFxuICAgICAgICAn4Z+lJzogJzUnLFxuICAgICAgICAn4Z+mJzogJzYnLFxuICAgICAgICAn4Z+nJzogJzcnLFxuICAgICAgICAn4Z+oJzogJzgnLFxuICAgICAgICAn4Z+pJzogJzknLFxuICAgICAgICAn4Z+gJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBrbSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ttJywge1xuICAgICAgICBtb250aHM6ICfhnpjhnoDhnprhnrZf4Z6A4Z674Z6Y4Z+S4Z6X4Z+IX+GemOGeuOGek+Getl/hnpjhn4Hhnp/hnrZf4Z6n4Z6f4Z6X4Z62X+GemOGet+GekOGeu+Gek+Getl/hnoDhnoDhn5LhnoDhnorhnrZf4Z6f4Z644Z6g4Z62X+GegOGeieGfkuGeieGetl/hno/hnrvhnpvhnrZf4Z6c4Z634Z6F4Z+S4Z6G4Z634Z6A4Z62X+GekuGfkuGek+GevCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfhnpjhnoDhnprhnrZf4Z6A4Z674Z6Y4Z+S4Z6X4Z+IX+GemOGeuOGek+Getl/hnpjhn4Hhnp/hnrZf4Z6n4Z6f4Z6X4Z62X+GemOGet+GekOGeu+Gek+Getl/hnoDhnoDhn5LhnoDhnorhnrZf4Z6f4Z644Z6g4Z62X+GegOGeieGfkuGeieGetl/hno/hnrvhnpvhnrZf4Z6c4Z634Z6F4Z+S4Z6G4Z634Z6A4Z62X+GekuGfkuGek+GevCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfhnqLhnrbhnpHhnrfhno/hn5Lhnplf4Z6F4Z+Q4Z6T4Z+S4Z6RX+GeouGehOGfkuGeguGetuGeml/hnpbhnrvhnpJf4Z6W4Z+S4Z6a4Z6g4Z6f4Z+S4Z6U4Z6P4Z634Z+NX+Gen+Geu+GegOGfkuGeml/hnp/hn4Xhnprhn40nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfhnqLhnrZf4Z6FX+Geol/hnpZf4Z6W4Z+S4Z6aX+Gen+Geu1/hnp8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4Z6i4Z62X+GehV/hnqJf4Z6WX+GeluGfkuGeml/hnp/hnrtf4Z6fJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Z6W4Z+S4Z6a4Z654Z6AfOGem+GfkuGehOGetuGehS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+GeluGfkuGemuGeueGegCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4Z6Q4Z+S4Z6E4Z+D4Z6T4Z+B4Z+HIOGemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhnp/hn5LhnqLhn4LhnoAg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhnpjhn5Lhnp/hnrfhnpvhnpjhnrfhnokg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW+Gen+GelOGfkuGej+GetuGeoOGfjeGemOGeu+Gek10gW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4Z6R4Z+A4Z6PJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+GemOGeu+GekycsXG4gICAgICAgICAgICBzOiAn4Z6U4Z+J4Z674Z6T4Z+S4Z6Y4Z624Z6T4Z6c4Z634Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Z6c4Z634Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIG06ICfhnpjhnr3hnpnhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgbW06ICclZCDhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgaDogJ+GemOGeveGemeGemOGfieGfhOGehCcsXG4gICAgICAgICAgICBoaDogJyVkIOGemOGfieGfhOGehCcsXG4gICAgICAgICAgICBkOiAn4Z6Y4Z694Z6Z4Z6Q4Z+S4Z6E4Z+DJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Z6Q4Z+S4Z6E4Z+DJyxcbiAgICAgICAgICAgIE06ICfhnpjhnr3hnpnhnoHhn4InLFxuICAgICAgICAgICAgTU06ICclZCDhnoHhn4InLFxuICAgICAgICAgICAgeTogJ+GemOGeveGemeGehuGfkuGek+GetuGfhicsXG4gICAgICAgICAgICB5eTogJyVkIOGehuGfkuGek+GetuGfhidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC/hnpHhnrhcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiAn4Z6R4Z64JWQnLFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Z+h4Z+i4Z+j4Z+k4Z+l4Z+m4Z+n4Z+o4Z+p4Z+gXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGttO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/km.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/kn.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/kn.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '೧',\n        '2': '೨',\n        '3': '೩',\n        '4': '೪',\n        '5': '೫',\n        '6': '೬',\n        '7': '೭',\n        '8': '೮',\n        '9': '೯',\n        '0': '೦'\n    },\n    numberMap = {\n        '೧': '1',\n        '೨': '2',\n        '೩': '3',\n        '೪': '4',\n        '೫': '5',\n        '೬': '6',\n        '೭': '7',\n        '೮': '8',\n        '೯': '9',\n        '೦': '0'\n    };\n\n    var kn = moment.defineLocale('kn', {\n        months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n        monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n        weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[ಇಂದು] LT',\n            nextDay : '[ನಾಳೆ] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[ನಿನ್ನೆ] LT',\n            lastWeek : '[ಕೊನೆಯ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ನಂತರ',\n            past : '%s ಹಿಂದೆ',\n            s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss : '%d ಸೆಕೆಂಡುಗಳು',\n            m : 'ಒಂದು ನಿಮಿಷ',\n            mm : '%d ನಿಮಿಷ',\n            h : 'ಒಂದು ಗಂಟೆ',\n            hh : '%d ಗಂಟೆ',\n            d : 'ಒಂದು ದಿನ',\n            dd : '%d ದಿನ',\n            M : 'ಒಂದು ತಿಂಗಳು',\n            MM : '%d ತಿಂಗಳು',\n            y : 'ಒಂದು ವರ್ಷ',\n            yy : '%d ವರ್ಷ'\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal : function (number) {\n            return number + 'ನೇ';\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return kn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tuLmpzPzNlOTIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgs6cnLFxuICAgICAgICAnMic6ICfgs6gnLFxuICAgICAgICAnMyc6ICfgs6knLFxuICAgICAgICAnNCc6ICfgs6onLFxuICAgICAgICAnNSc6ICfgs6snLFxuICAgICAgICAnNic6ICfgs6wnLFxuICAgICAgICAnNyc6ICfgs60nLFxuICAgICAgICAnOCc6ICfgs64nLFxuICAgICAgICAnOSc6ICfgs68nLFxuICAgICAgICAnMCc6ICfgs6YnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgs6cnOiAnMScsXG4gICAgICAgICfgs6gnOiAnMicsXG4gICAgICAgICfgs6knOiAnMycsXG4gICAgICAgICfgs6onOiAnNCcsXG4gICAgICAgICfgs6snOiAnNScsXG4gICAgICAgICfgs6wnOiAnNicsXG4gICAgICAgICfgs60nOiAnNycsXG4gICAgICAgICfgs64nOiAnOCcsXG4gICAgICAgICfgs68nOiAnOScsXG4gICAgICAgICfgs6YnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGtuID0gbW9tZW50LmRlZmluZUxvY2FsZSgna24nLCB7XG4gICAgICAgIG1vbnRocyA6ICfgspzgsqjgsrXgsrDgsr9f4LKr4LOG4LKs4LON4LKw4LK14LKw4LK/X+CyruCyvuCysOCzjeCymuCzjV/gso/gsqrgs43gsrDgsr/gsrLgs41f4LKu4LOG4LOVX+CynOCzguCyqOCzjV/gspzgs4HgsrLgs4bgs5Zf4LKG4LKX4LK44LON4LKf4LONX+CyuOCzhuCyquCzjeCyn+CzhuCyguCyrOCysOCzjV/gsoXgspXgs43gsp/gs4bgs4Lgs5XgsqzgsrDgs41f4LKo4LK14LOG4LKC4LKs4LKw4LONX+CyoeCyv+CyuOCzhuCyguCyrOCysOCzjScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4LKc4LKoX+Cyq+CzhuCyrOCzjeCysF/gsq7gsr7gsrDgs43gsprgs41f4LKP4LKq4LON4LKw4LK/4LKy4LONX+CyruCzhuCzlV/gspzgs4Lgsqjgs41f4LKc4LOB4LKy4LOG4LOWX+CyhuCyl+CyuOCzjeCyn+CzjV/gsrjgs4bgsqrgs43gsp/gs4bgsoJf4LKF4LKV4LON4LKf4LOG4LOC4LOVX+CyqOCyteCzhuCygl/gsqHgsr/gsrjgs4bgsoInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ+CyreCyvuCyqOCzgeCyteCyvuCysF/gsrjgs4bgs4Lgs5Xgsq7gsrXgsr7gsrBf4LKu4LKC4LKX4LKz4LK14LK+4LKwX+CyrOCzgeCyp+CyteCyvuCysF/gspfgs4HgsrDgs4HgsrXgsr7gsrBf4LK24LOB4LKV4LON4LKw4LK14LK+4LKwX+CytuCyqOCyv+CyteCyvuCysCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgsq3gsr7gsqjgs4Ff4LK44LOG4LOC4LOV4LKuX+CyruCyguCyl+Cys1/gsqzgs4Hgsqdf4LKX4LOB4LKw4LOBX+CytuCzgeCyleCzjeCysF/gsrbgsqjgsr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+CyreCyvl/gsrjgs4bgs4Lgs5Vf4LKu4LKCX+CyrOCzgV/gspfgs4Ff4LK24LOBX+Cyticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+Cyh+CyguCypuCzgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4LKo4LK+4LKz4LOGXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgsqjgsr/gsqjgs43gsqjgs4ZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgspXgs4bgs4Lgsqjgs4bgsq9dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgsqjgsoLgsqTgsrAnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgsrngsr/gsoLgsqbgs4YnLFxuICAgICAgICAgICAgcyA6ICfgspXgs4bgsrLgsrXgs4Eg4LKV4LON4LK34LKj4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOCyuOCzhuCyleCzhuCyguCyoeCzgeCyl+Cys+CzgScsXG4gICAgICAgICAgICBtIDogJ+CykuCyguCypuCzgSDgsqjgsr/gsq7gsr/gsrcnLFxuICAgICAgICAgICAgbW0gOiAnJWQg4LKo4LK/4LKu4LK/4LK3JyxcbiAgICAgICAgICAgIGggOiAn4LKS4LKC4LKm4LOBIOCyl+CyguCyn+CzhicsXG4gICAgICAgICAgICBoaCA6ICclZCDgspfgsoLgsp/gs4YnLFxuICAgICAgICAgICAgZCA6ICfgspLgsoLgsqbgs4Eg4LKm4LK/4LKoJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOCypuCyv+CyqCcsXG4gICAgICAgICAgICBNIDogJ+CykuCyguCypuCzgSDgsqTgsr/gsoLgspfgsrPgs4EnLFxuICAgICAgICAgICAgTU0gOiAnJWQg4LKk4LK/4LKC4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIHkgOiAn4LKS4LKC4LKm4LOBIOCyteCysOCzjeCytycsXG4gICAgICAgICAgICB5eSA6ICclZCDgsrXgsrDgs43gsrcnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgs6fgs6jgs6ngs6rgs6vgs6zgs63gs67gs6/gs6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gsrDgsr7gsqTgs43gsrDgsr984LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGfOCyruCyp+CzjeCyr+CyvuCyueCzjeCyqHzgsrjgsoLgspzgs4YvLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4LKw4LK+4LKk4LON4LKw4LK/Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CyruCyp+CzjeCyr+CyvuCyueCzjeCyqCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LK44LKC4LKc4LOGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsrDgsr7gsqTgs43gsrDgsr8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CyrOCzhuCys+Cyv+Cyl+CzjeCyl+Czhic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKu4LKn4LON4LKv4LK+4LK54LON4LKoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsrjgsoLgspzgs4YnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CysOCyvuCypOCzjeCysOCyvyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjgsqjgs4bgs5UpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn4LKo4LOG4LOVJztcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga247XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/kn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ko.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ko.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var ko = moment.defineLocale('ko', {\n        months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'YYYY.MM.DD.',\n            LL : 'YYYY년 MMMM D일',\n            LLL : 'YYYY년 MMMM D일 A h:mm',\n            LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n            l : 'YYYY.MM.DD.',\n            ll : 'YYYY년 MMMM D일',\n            lll : 'YYYY년 MMMM D일 A h:mm',\n            llll : 'YYYY년 MMMM D일 dddd A h:mm'\n        },\n        calendar : {\n            sameDay : '오늘 LT',\n            nextDay : '내일 LT',\n            nextWeek : 'dddd LT',\n            lastDay : '어제 LT',\n            lastWeek : '지난주 dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s 후',\n            past : '%s 전',\n            s : '몇 초',\n            ss : '%d초',\n            m : '1분',\n            mm : '%d분',\n            h : '한 시간',\n            hh : '%d시간',\n            d : '하루',\n            dd : '%d일',\n            M : '한 달',\n            MM : '%d달',\n            y : '일 년',\n            yy : '%d년'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse : /오전|오후/,\n        isPM : function (token) {\n            return token === '오후';\n        },\n        meridiem : function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        }\n    });\n\n    return ko;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzPzIyZjgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIga28gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrbycsIHtcbiAgICAgICAgbW9udGhzIDogJzHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICcx7JuUXzLsm5RfM+yblF807JuUXzXsm5RfNuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn7J287JqU7J28X+yblOyalOydvF/tmZTsmpTsnbxf7IiY7JqU7J28X+uqqeyalOydvF/quIjsmpTsnbxf7Yag7JqU7J28Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+ydvF/sm5Rf7ZmUX+yImF/rqqlf6riIX+2GoCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS5NTS5ERC4nLFxuICAgICAgICAgICAgTEwgOiAnWVlZWeuFhCBNTU1NIETsnbwnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVnrhYQgTU1NTSBE7J28IEEgaDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVnrhYQgTU1NTSBE7J28IGRkZGQgQSBoOm1tJyxcbiAgICAgICAgICAgIGwgOiAnWVlZWS5NTS5ERC4nLFxuICAgICAgICAgICAgbGwgOiAnWVlZWeuFhCBNTU1NIETsnbwnLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVnrhYQgTU1NTSBE7J28IEEgaDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ1lZWVnrhYQgTU1NTSBE7J28IGRkZGQgQSBoOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAn7Jik64qYIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAn64K07J28IExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICfslrTsoJwgTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAn7KeA64Kc7KO8IGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIO2bhCcsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOyghCcsXG4gICAgICAgICAgICBzIDogJ+uqhyDstIgnLFxuICAgICAgICAgICAgc3MgOiAnJWTstIgnLFxuICAgICAgICAgICAgbSA6ICcx67aEJyxcbiAgICAgICAgICAgIG1tIDogJyVk67aEJyxcbiAgICAgICAgICAgIGggOiAn7ZWcIOyLnOqwhCcsXG4gICAgICAgICAgICBoaCA6ICclZOyLnOqwhCcsXG4gICAgICAgICAgICBkIDogJ+2VmOujqCcsXG4gICAgICAgICAgICBkZCA6ICclZOydvCcsXG4gICAgICAgICAgICBNIDogJ+2VnCDri6wnLFxuICAgICAgICAgICAgTU0gOiAnJWTri6wnLFxuICAgICAgICAgICAgeSA6ICfsnbwg64WEJyxcbiAgICAgICAgICAgIHl5IDogJyVk64WEJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9KOydvHzsm5R87KO8KS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfsnbwnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+yblCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn7KO8JztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlIDogL+yYpOyghHzsmKTtm4QvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4gPT09ICfsmKTtm4QnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzVXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIDwgMTIgPyAn7Jik7KCEJyA6ICfsmKTtm4QnO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga287XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ko.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ku.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ku.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    },\n    months = [\n        'کانونی دووەم',\n        'شوبات',\n        'ئازار',\n        'نیسان',\n        'ئایار',\n        'حوزەیران',\n        'تەمموز',\n        'ئاب',\n        'ئەیلوول',\n        'تشرینی یەكەم',\n        'تشرینی دووەم',\n        'كانونی یەکەم'\n    ];\n\n\n    var ku = moment.defineLocale('ku', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),\n        weekdaysShort : 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n        weekdaysMin : 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar : {\n            sameDay : '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay : '[به‌یانی كاتژمێر] LT',\n            nextWeek : 'dddd [كاتژمێر] LT',\n            lastDay : '[دوێنێ كاتژمێر] LT',\n            lastWeek : 'dddd [كاتژمێر] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'له‌ %s',\n            past : '%s',\n            s : 'چه‌ند چركه‌یه‌ك',\n            ss : 'چركه‌ %d',\n            m : 'یه‌ك خوله‌ك',\n            mm : '%d خوله‌ك',\n            h : 'یه‌ك كاتژمێر',\n            hh : '%d كاتژمێر',\n            d : 'یه‌ك ڕۆژ',\n            dd : '%d ڕۆژ',\n            M : 'یه‌ك مانگ',\n            MM : '%d مانگ',\n            y : 'یه‌ك ساڵ',\n            yy : '%d ساڵ'\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12 // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return ku;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LmpzPzI0MjEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfZoScsXG4gICAgICAgICcyJzogJ9miJyxcbiAgICAgICAgJzMnOiAn2aMnLFxuICAgICAgICAnNCc6ICfZpCcsXG4gICAgICAgICc1JzogJ9mlJyxcbiAgICAgICAgJzYnOiAn2aYnLFxuICAgICAgICAnNyc6ICfZpycsXG4gICAgICAgICc4JzogJ9moJyxcbiAgICAgICAgJzknOiAn2aknLFxuICAgICAgICAnMCc6ICfZoCdcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAn2aMnOiAnMycsXG4gICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAn2aYnOiAnNicsXG4gICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAn2aknOiAnOScsXG4gICAgICAgICfZoCc6ICcwJ1xuICAgIH0sXG4gICAgbW9udGhzID0gW1xuICAgICAgICAn2qnYp9mG2YjZhtuMINiv2YjZiNuV2YUnLFxuICAgICAgICAn2LTZiNio2KfYqicsXG4gICAgICAgICfYptin2LLYp9ixJyxcbiAgICAgICAgJ9mG24zYs9in2YYnLFxuICAgICAgICAn2KbYp9uM2KfYsScsXG4gICAgICAgICfYrdmI2LLblduM2LHYp9mGJyxcbiAgICAgICAgJ9iq25XZhdmF2YjYsicsXG4gICAgICAgICfYptin2KgnLFxuICAgICAgICAn2KbblduM2YTZiNmI2YQnLFxuICAgICAgICAn2KrYtNix24zZhtuMINuM25XZg9uV2YUnLFxuICAgICAgICAn2KrYtNix24zZhtuMINiv2YjZiNuV2YUnLFxuICAgICAgICAn2YPYp9mG2YjZhtuMINuM25XaqduV2YUnXG4gICAgXTtcblxuXG4gICAgdmFyIGt1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgna3UnLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogJ9uM2YfigIzZg9i02YfigIzZhdmF2YfigIxf2K/ZiNmI2LTZh+KAjNmF2YXZh+KAjF/Ys9uO2LTZh+KAjNmF2YXZh+KAjF/ahtmI2KfYsdi02YfigIzZhdmF2YfigIxf2b7bjtmG2KzYtNmH4oCM2YXZhdmH4oCMX9mH2YfigIzbjNmG24xf2LTZh+KAjNmF2YXZh+KAjCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfbjNmH4oCM2YPYtNmH4oCM2YVf2K/ZiNmI2LTZh+KAjNmFX9iz247YtNmH4oCM2YVf2obZiNin2LHYtNmH4oCM2YVf2b7bjtmG2KzYtNmH4oCM2YVf2YfZh+KAjNuM2YbbjF/YtNmH4oCM2YXZhdmH4oCMJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfbjF/Yr1/Ys1/ahl/Zvl/Zh1/YtCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2KbbjtmI2KfYsdmH4oCMfNio2YfigIzbjNin2YbbjC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC/YptuO2YjYp9ix2YfigIwvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9io2YfigIzbjNin2YbbjCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KbbjtmI2KfYsdmH4oCMJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vYptmH4oCM2YXYsduGINmD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vYqNmH4oCM24zYp9mG24wg2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9mD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vYr9mI247ZhtuOINmD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFvZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9mE2YfigIwgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcycsXG4gICAgICAgICAgICBzIDogJ9qG2YfigIzZhtivINqG2LHZg9mH4oCM24zZh+KAjNmDJyxcbiAgICAgICAgICAgIHNzIDogJ9qG2LHZg9mH4oCMICVkJyxcbiAgICAgICAgICAgIG0gOiAn24zZh+KAjNmDINiu2YjZhNmH4oCM2YMnLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K7ZiNmE2YfigIzZgycsXG4gICAgICAgICAgICBoIDogJ9uM2YfigIzZgyDZg9in2KramNmF247YsScsXG4gICAgICAgICAgICBoaCA6ICclZCDZg9in2KramNmF247YsScsXG4gICAgICAgICAgICBkIDogJ9uM2YfigIzZgyDalduG2pgnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2pXbhtqYJyxcbiAgICAgICAgICAgIE0gOiAn24zZh+KAjNmDINmF2KfZhtqvJyxcbiAgICAgICAgICAgIE1NIDogJyVkINmF2KfZhtqvJyxcbiAgICAgICAgICAgIHkgOiAn24zZh+KAjNmDINiz2KfatScsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9in2rUnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGt1O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ku.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ky.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ky.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү'\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n        monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n        weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бүгүн саат] LT',\n            nextDay : '[Эртең саат] LT',\n            nextWeek : 'dddd [саат] LT',\n            lastDay : '[Кечээ саат] LT',\n            lastWeek : '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ичинде',\n            past : '%s мурун',\n            s : 'бирнече секунд',\n            ss : '%d секунд',\n            m : 'бир мүнөт',\n            mm : '%d мүнөт',\n            h : 'бир саат',\n            hh : '%d саат',\n            d : 'бир күн',\n            dd : '%d күн',\n            M : 'бир ай',\n            MM : '%d ай',\n            y : 'бир жыл',\n            yy : '%d жыл'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal : function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return ky;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9reS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzPzk2MDkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YfSrycsXG4gICAgICAgIDE6ICct0YfQuCcsXG4gICAgICAgIDI6ICct0YfQuCcsXG4gICAgICAgIDM6ICct0YfSrycsXG4gICAgICAgIDQ6ICct0YfSrycsXG4gICAgICAgIDU6ICct0YfQuCcsXG4gICAgICAgIDY6ICct0YfRiycsXG4gICAgICAgIDc6ICct0YfQuCcsXG4gICAgICAgIDg6ICct0YfQuCcsXG4gICAgICAgIDk6ICct0YfRgycsXG4gICAgICAgIDEwOiAnLdGH0YMnLFxuICAgICAgICAyMDogJy3Rh9GLJyxcbiAgICAgICAgMzA6ICct0YfRgycsXG4gICAgICAgIDQwOiAnLdGH0YsnLFxuICAgICAgICA1MDogJy3Rh9KvJyxcbiAgICAgICAgNjA6ICct0YfRiycsXG4gICAgICAgIDcwOiAnLdGH0LgnLFxuICAgICAgICA4MDogJy3Rh9C4JyxcbiAgICAgICAgOTA6ICct0YfRgycsXG4gICAgICAgIDEwMDogJy3Rh9KvJ1xuICAgIH07XG5cbiAgICB2YXIga3kgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdreScsIHtcbiAgICAgICAgbW9udGhzIDogJ9GP0L3QstCw0YDRjF/RhNC10LLRgNCw0LvRjF/QvNCw0YDRgl/QsNC/0YDQtdC70Yxf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgNGMX9C+0LrRgtGP0LHRgNGMX9C90L7Rj9Cx0YDRjF/QtNC10LrQsNCx0YDRjCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YDRgl/QsNC/0YBf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9CW0LXQutGI0LXQvNCx0Lhf0JTSr9C50YjTqdC80LHSr1/QqNC10LnRiNC10LzQsdC4X9Co0LDRgNGI0LXQvNCx0Lhf0JHQtdC50YjQtdC80LHQuF/QltGD0LzQsF/QmNGI0LXQvNCx0LgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0JbQtdC6X9CU0q/QuV/QqNC10Llf0KjQsNGAX9CR0LXQuV/QltGD0Lxf0JjRiNC1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQltC6X9CU0Llf0KjQuV/QqNGAX9CR0Llf0JbQvF/QmNGIJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb0JHSr9Cz0q/QvSDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0K3RgNGC0LXSoyDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9Ca0LXRh9GN0Y0g0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vTqNGC0LrTqdC9INCw0L/RgtCw0L3Ri9C9XSBkZGRkIFvQutKv0L3Sr10gW9GB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg0LjRh9C40L3QtNC1JyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0LzRg9GA0YPQvScsXG4gICAgICAgICAgICBzIDogJ9Cx0LjRgNC90LXRh9C1INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzcyA6ICclZCDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbSA6ICfQsdC40YAg0LzSr9C906nRgicsXG4gICAgICAgICAgICBtbSA6ICclZCDQvNKv0L3TqdGCJyxcbiAgICAgICAgICAgIGggOiAn0LHQuNGAINGB0LDQsNGCJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGB0LDQsNGCJyxcbiAgICAgICAgICAgIGQgOiAn0LHQuNGAINC60q/QvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQutKv0L0nLFxuICAgICAgICAgICAgTSA6ICfQsdC40YAg0LDQuScsXG4gICAgICAgICAgICBNTSA6ICclZCDQsNC5JyxcbiAgICAgICAgICAgIHkgOiAn0LHQuNGAINC20YvQuycsXG4gICAgICAgICAgICB5eSA6ICclZCDQttGL0LsnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0YfQuHzRh9GLfNGH0q980YfRgykvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBreTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ky.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/lb.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/lb.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eng Minutt', 'enger Minutt'],\n            'h': ['eng Stonn', 'enger Stonn'],\n            'd': ['een Dag', 'engem Dag'],\n            'M': ['ee Mount', 'engem Mount'],\n            'y': ['ee Joer', 'engem Joer']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10, firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            }\n        },\n        relativeTime : {\n            future : processFutureTime,\n            past : processPastTime,\n            s : 'e puer Sekonnen',\n            ss : '%d Sekonnen',\n            m : processRelativeTime,\n            mm : '%d Minutten',\n            h : processRelativeTime,\n            hh : '%d Stonnen',\n            d : processRelativeTime,\n            dd : '%d Deeg',\n            M : processRelativeTime,\n            MM : '%d Méint',\n            y : processRelativeTime,\n            yy : '%d Joer'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lb;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzPzQ0MGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ20nOiBbJ2VuZyBNaW51dHQnLCAnZW5nZXIgTWludXR0J10sXG4gICAgICAgICAgICAnaCc6IFsnZW5nIFN0b25uJywgJ2VuZ2VyIFN0b25uJ10sXG4gICAgICAgICAgICAnZCc6IFsnZWVuIERhZycsICdlbmdlbSBEYWcnXSxcbiAgICAgICAgICAgICdNJzogWydlZSBNb3VudCcsICdlbmdlbSBNb3VudCddLFxuICAgICAgICAgICAgJ3knOiBbJ2VlIEpvZXInLCAnZW5nZW0gSm9lciddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0Z1dHVyZVRpbWUoc3RyaW5nKSB7XG4gICAgICAgIHZhciBudW1iZXIgPSBzdHJpbmcuc3Vic3RyKDAsIHN0cmluZy5pbmRleE9mKCcgJykpO1xuICAgICAgICBpZiAoZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSAnICsgc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnYW4gJyArIHN0cmluZztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc1Bhc3RUaW1lKHN0cmluZykge1xuICAgICAgICB2YXIgbnVtYmVyID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZignICcpKTtcbiAgICAgICAgaWYgKGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ZpcnUgJyArIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ3ZpcnVuICcgKyBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd29yZCBiZWZvcmUgdGhlIGdpdmVuIG51bWJlciBsb3NlcyB0aGUgJy1uJyBlbmRpbmcuXG4gICAgICogZS5nLiAnYW4gMTAgRGVlZycgYnV0ICdhIDUgRGVlZydcbiAgICAgKlxuICAgICAqIEBwYXJhbSBudW1iZXIge2ludGVnZXJ9XG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgZnVuY3Rpb24gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikge1xuICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIsIDEwKTtcbiAgICAgICAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgLy8gTmVnYXRpdmUgTnVtYmVyIC0tPiBhbHdheXMgdHJ1ZVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTApIHtcbiAgICAgICAgICAgIC8vIE9ubHkgMSBkaWdpdFxuICAgICAgICAgICAgaWYgKDQgPD0gbnVtYmVyICYmIG51bWJlciA8PSA3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTAwKSB7XG4gICAgICAgICAgICAvLyAyIGRpZ2l0c1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLCBmaXJzdERpZ2l0ID0gbnVtYmVyIC8gMTA7XG4gICAgICAgICAgICBpZiAobGFzdERpZ2l0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihmaXJzdERpZ2l0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobGFzdERpZ2l0KTtcbiAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCAxMDAwMCkge1xuICAgICAgICAgICAgLy8gMyBvciA0IGRpZ2l0cyAtLT4gcmVjdXJzaXZlbHkgY2hlY2sgZmlyc3QgZGlnaXRcbiAgICAgICAgICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEFueXRoaW5nIGxhcmdlciB0aGFuIDQgZGlnaXRzOiByZWN1cnNpdmVseSBjaGVjayBmaXJzdCBuLTMgZGlnaXRzXG4gICAgICAgICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDAwO1xuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxiID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbGInLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcl9GZWJydWFyX03DpGVyel9BYnLDq2xsX01lZV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbi5fRmVici5fTXJ6Ll9BYnIuX01lZV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnU29ubmRlZ19Nw6lpbmRlZ19Ew6tuc2NoZGVnX03Dq3R0d29jaF9Eb25uZXNjaGRlZ19GcmVpZGVnX1NhbXNjaGRlZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvLl9Nw6kuX0TDqy5fTcOrLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTb19Nw6lfRMOrX03Dq19Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbSBbQXVlcl0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcyBbQXVlcl0nLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhdXQgdW1dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW011ZXIgdW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbR8Orc2NodGVyIHVtXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vIERpZmZlcmVudCBkYXRlIHN0cmluZyBmb3IgJ0TDq25zY2hkZWcnIChUdWVzZGF5KSBhbmQgJ0Rvbm5lc2NoZGVnJyAoVGh1cnNkYXkpIGR1ZSB0byBwaG9ub2xvZ2ljYWwgcnVsZVxuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW0xlc2NodGVuXSBkZGRkIFt1bV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbTGVzY2h0ZV0gZGRkZCBbdW1dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6IHByb2Nlc3NGdXR1cmVUaW1lLFxuICAgICAgICAgICAgcGFzdCA6IHByb2Nlc3NQYXN0VGltZSxcbiAgICAgICAgICAgIHMgOiAnZSBwdWVyIFNla29ubmVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIFNla29ubmVuJyxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiAnJWQgTWludXR0ZW4nLFxuICAgICAgICAgICAgaCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaCA6ICclZCBTdG9ubmVuJyxcbiAgICAgICAgICAgIGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQgOiAnJWQgRGVlZycsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogJyVkIE3DqWludCcsXG4gICAgICAgICAgICB5IDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5IDogJyVkIEpvZXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYjtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/lb.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/lo.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/lo.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var lo = moment.defineLocale('lo', {\n        months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n        monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n        weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar : {\n            sameDay : '[ມື້ນີ້ເວລາ] LT',\n            nextDay : '[ມື້ອື່ນເວລາ] LT',\n            nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ອີກ %s',\n            past : '%sຜ່ານມາ',\n            s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss : '%d ວິນາທີ' ,\n            m : '1 ນາທີ',\n            mm : '%d ນາທີ',\n            h : '1 ຊົ່ວໂມງ',\n            hh : '%d ຊົ່ວໂມງ',\n            d : '1 ມື້',\n            dd : '%d ມື້',\n            M : '1 ເດືອນ',\n            MM : '%d ເດືອນ',\n            y : '1 ປີ',\n            yy : '%d ປີ'\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal : function (number) {\n            return 'ທີ່' + number;\n        }\n    });\n\n    return lo;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sby5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzP2IyOWQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbG8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsbycsIHtcbiAgICAgICAgbW9udGhzIDogJ+C6oeC6seC6h+C6geC6reC6mV/guoHgurjguqHgup7gurJf4Lqh4Lq14LqZ4LqyX+C7gOC6oeC6quC6sl/gup7gurbgupTguqrgurDgup7gurJf4Lqh4Lq04LqW4Lq44LqZ4LqyX+C6geC7jeC6peC6sOC6geC6u+C6lF/guqrgurTguofguqvgurJf4LqB4Lqx4LqZ4LqN4LqyX+C6leC6uOC6peC6sl/gup7gurDguojgurTguoFf4LqX4Lqx4LqZ4Lqn4LqyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfguqHgurHguofguoHguq3guplf4LqB4Lq44Lqh4Lqe4LqyX+C6oeC6teC6meC6sl/gu4DguqHguqrgurJf4Lqe4Lq24LqU4Lqq4Lqw4Lqe4LqyX+C6oeC6tOC6luC6uOC6meC6sl/guoHgu43guqXgurDguoHgurvgupRf4Lqq4Lq04LqH4Lqr4LqyX+C6geC6seC6meC6jeC6sl/gupXgurjguqXgurJf4Lqe4Lqw4LqI4Lq04LqBX+C6l+C6seC6meC6p+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn4Lqt4Lqy4LqX4Lq04LqUX+C6iOC6seC6mV/guq3gurHguofguoTgurLguplf4Lqe4Lq44LqUX+C6nuC6sOC6q+C6seC6lF/guqrgurjguoFf4LuA4Lqq4Lq74LqyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+C6l+C6tOC6lF/guojgurHguplf4Lqt4Lqx4LqH4LqE4Lqy4LqZX+C6nuC6uOC6lF/gup7gurDguqvgurHgupRf4Lqq4Lq44LqBX+C7gOC6quC6u+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4LqXX+C6iF/guq3guoRf4LqeX+C6nuC6q1/guqrguoFf4LqqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAn4Lqn4Lqx4LqZZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C6leC6reC6meC7gOC6iuC6u+C7ieC6snzgupXguq3gupngu4HguqXguocvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C6leC6reC6meC7geC6peC6hyc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LqV4Lqt4LqZ4LuA4LqK4Lq74LuJ4LqyJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgupXguq3gupngu4HguqXguocnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C6oeC6t+C7ieC6meC6teC7ieC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4Lqh4Lq34LuJ4Lqt4Lq34LuI4LqZ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb4Lqn4Lqx4LqZXWRkZGRb4Luc4LuJ4Lqy4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vguqHgurfgu4nguqfgurLgupngupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vguqfgurHgupldZGRkZFvgu4HguqXgu4nguqfgupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfguq3gurXguoEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclc+C6nOC7iOC6suC6meC6oeC6sicsXG4gICAgICAgICAgICBzIDogJ+C6muC7jeC7iOC7gOC6l+C6u+C7iOC6suC7g+C6lOC6p+C6tOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBzcyA6ICclZCDguqfgurTgupngurLgupfgurUnICxcbiAgICAgICAgICAgIG0gOiAnMSDgupngurLgupfgurUnLFxuICAgICAgICAgICAgbW0gOiAnJWQg4LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIGggOiAnMSDguorgurvgu4jguqfgu4LguqHguocnLFxuICAgICAgICAgICAgaGggOiAnJWQg4LqK4Lq74LuI4Lqn4LuC4Lqh4LqHJyxcbiAgICAgICAgICAgIGQgOiAnMSDguqHgurfgu4knLFxuICAgICAgICAgICAgZGQgOiAnJWQg4Lqh4Lq34LuJJyxcbiAgICAgICAgICAgIE0gOiAnMSDgu4DgupTgurfguq3gupknLFxuICAgICAgICAgICAgTU0gOiAnJWQg4LuA4LqU4Lq34Lqt4LqZJyxcbiAgICAgICAgICAgIHkgOiAnMSDgupvgurUnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4Lqb4Lq1J1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvKOC6l+C6teC7iClcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gJ+C6l+C6teC7iCcgKyBudW1iZXI7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsbztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/lo.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/lt.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/lt.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var units = {\n        'ss' : 'sekundė_sekundžių_sekundes',\n        'm' : 'minutė_minutės_minutę',\n        'mm': 'minutės_minučių_minutes',\n        'h' : 'valanda_valandos_valandą',\n        'hh': 'valandos_valandų_valandas',\n        'd' : 'diena_dienos_dieną',\n        'dd': 'dienos_dienų_dienas',\n        'M' : 'mėnuo_mėnesio_mėnesį',\n        'MM': 'mėnesiai_mėnesių_mėnesius',\n        'y' : 'metai_metų_metus',\n        'yy': 'metai_metų_metus'\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months : {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n        },\n        monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays : {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n            isFormat: /dddd HH:mm/\n        },\n        weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY [m.] MMMM D [d.]',\n            LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l : 'YYYY-MM-DD',\n            ll : 'YYYY [m.] MMMM D [d.]',\n            lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n        },\n        calendar : {\n            sameDay : '[Šiandien] LT',\n            nextDay : '[Rytoj] LT',\n            nextWeek : 'dddd LT',\n            lastDay : '[Vakar] LT',\n            lastWeek : '[Praėjusį] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'po %s',\n            past : 'prieš %s',\n            s : translateSeconds,\n            ss : translate,\n            m : translateSingular,\n            mm : translate,\n            h : translateSingular,\n            hh : translate,\n            d : translateSingular,\n            dd : translate,\n            M : translateSingular,\n            MM : translate,\n            y : translateSingular,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal : function (number) {\n            return number + '-oji';\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lt;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzPzI2ZjkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdW5pdHMgPSB7XG4gICAgICAgICdzcycgOiAnc2VrdW5kxJdfc2VrdW5kxb5pxbNfc2VrdW5kZXMnLFxuICAgICAgICAnbScgOiAnbWludXTEl19taW51dMSXc19taW51dMSZJyxcbiAgICAgICAgJ21tJzogJ21pbnV0xJdzX21pbnXEjWnFs19taW51dGVzJyxcbiAgICAgICAgJ2gnIDogJ3ZhbGFuZGFfdmFsYW5kb3NfdmFsYW5kxIUnLFxuICAgICAgICAnaGgnOiAndmFsYW5kb3NfdmFsYW5kxbNfdmFsYW5kYXMnLFxuICAgICAgICAnZCcgOiAnZGllbmFfZGllbm9zX2RpZW7EhScsXG4gICAgICAgICdkZCc6ICdkaWVub3NfZGllbsWzX2RpZW5hcycsXG4gICAgICAgICdNJyA6ICdtxJdudW9fbcSXbmVzaW9fbcSXbmVzxK8nLFxuICAgICAgICAnTU0nOiAnbcSXbmVzaWFpX23El25lc2nFs19txJduZXNpdXMnLFxuICAgICAgICAneScgOiAnbWV0YWlfbWV0xbNfbWV0dXMnLFxuICAgICAgICAneXknOiAnbWV0YWlfbWV0xbNfbWV0dXMnXG4gICAgfTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVTZWNvbmRzKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuICdrZWxpb3Mgc2VrdW5kxJdzJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdrZWxpxbMgc2VrdW5kxb5pxbMnIDogJ2tlbGlhcyBzZWt1bmRlcyc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybXMoa2V5KVswXSA6IChpc0Z1dHVyZSA/IGZvcm1zKGtleSlbMV0gOiBmb3JtcyhrZXkpWzJdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3BlY2lhbChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAwIHx8IChudW1iZXIgPiAxMCAmJiBudW1iZXIgPCAyMCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZvcm1zKGtleSkge1xuICAgICAgICByZXR1cm4gdW5pdHNba2V5XS5zcGxpdCgnXycpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyB0cmFuc2xhdGVTaW5ndWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleVswXSwgaXNGdXR1cmUpO1xuICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoc3BlY2lhbChudW1iZXIpID8gZm9ybXMoa2V5KVsxXSA6IGZvcm1zKGtleSlbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIGZvcm1zKGtleSlbMV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoc3BlY2lhbChudW1iZXIpID8gZm9ybXMoa2V5KVsxXSA6IGZvcm1zKGtleSlbMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBsdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2x0Jywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdzYXVzaW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+aW9fZ2VndcW+xJdzX2JpcsW+ZWxpb19saWVwb3NfcnVncGrFq8SNaW9fcnVnc8SXam9fc3BhbGlvX2xhcGtyacSNaW9fZ3J1b2TFvmlvJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ3NhdXNpc192YXNhcmlzX2tvdmFzX2JhbGFuZGlzX2dlZ3XFvsSXX2JpcsW+ZWxpc19saWVwYV9ydWdwasWrdGlzX3J1Z3PEl2ppc19zcGFsaXNfbGFwa3JpdGlzX2dydW9kaXMnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL0Rbb0RdPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrTU1NTT98TU1NTT8oXFxbW15cXFtcXF1dKlxcXXxcXHMpK0Rbb0RdPy9cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnc2F1X3Zhc19rb3ZfYmFsX2dlZ19iaXJfbGllX3JncF9yZ3Nfc3BhX2xhcF9ncmQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAnc2VrbWFkaWVuxK9fcGlybWFkaWVuxK9fYW50cmFkaWVuxK9fdHJlxI1pYWRpZW7Er19rZXR2aXJ0YWRpZW7Er19wZW5rdGFkaWVuxK9fxaFlxaF0YWRpZW7Erycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICdzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmXEjWlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc1/FoWXFoXRhZGllbmlzJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9kZGRkIEhIOm1tL1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1Nla19QaXJfQW50X1RyZV9LZXRfUGVuX8WgZcWhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTX1BfQV9UX0tfUG5fxaAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0nLFxuICAgICAgICAgICAgTExMIDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGRkLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgbCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIGxsIDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXScsXG4gICAgICAgICAgICBsbGwgOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgbGxsbCA6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZCwgSEg6bW0gW3ZhbC5dJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW8WgaWFuZGllbl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbUnl0b2pdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbVmFrYXJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tQcmHEl2p1c8SvXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdwbyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3ByaWXFoSAlcycsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlU2Vjb25kcyxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIGRkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSA6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tb2ppLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLW9qaSc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGx0O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/lt.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/lv.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/lv.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var units = {\n        'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        'h': 'stundas_stundām_stunda_stundas'.split('_'),\n        'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n        'd': 'dienas_dienām_diena_dienas'.split('_'),\n        'dd': 'dienas_dienām_diena_dienas'.split('_'),\n        'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        'y': 'gada_gadiem_gads_gadi'.split('_'),\n        'yy': 'gada_gadiem_gads_gadi'.split('_')\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n        weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY.',\n            LL : 'YYYY. [gada] D. MMMM',\n            LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n        },\n        calendar : {\n            sameDay : '[Šodien pulksten] LT',\n            nextDay : '[Rīt pulksten] LT',\n            nextWeek : 'dddd [pulksten] LT',\n            lastDay : '[Vakar pulksten] LT',\n            lastWeek : '[Pagājušā] dddd [pulksten] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'pēc %s',\n            past : 'pirms %s',\n            s : relativeSeconds,\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithSingular,\n            mm : relativeTimeWithPlural,\n            h : relativeTimeWithSingular,\n            hh : relativeTimeWithPlural,\n            d : relativeTimeWithSingular,\n            dd : relativeTimeWithPlural,\n            M : relativeTimeWithSingular,\n            MM : relativeTimeWithPlural,\n            y : relativeTimeWithSingular,\n            yy : relativeTimeWithPlural\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lv;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzP2I5N2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdW5pdHMgPSB7XG4gICAgICAgICdzcyc6ICdzZWt1bmRlc19zZWt1bmTEk21fc2VrdW5kZV9zZWt1bmRlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ20nOiAnbWluxat0ZXNfbWluxat0xJNtX21pbsWrdGVfbWluxat0ZXMnLnNwbGl0KCdfJyksXG4gICAgICAgICdtbSc6ICdtaW7Fq3Rlc19taW7Fq3TEk21fbWluxat0ZV9taW7Fq3Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ2gnOiAnc3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ2hoJzogJ3N0dW5kYXNfc3R1bmTEgW1fc3R1bmRhX3N0dW5kYXMnLnNwbGl0KCdfJyksXG4gICAgICAgICdkJzogJ2RpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ2RkJzogJ2RpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ00nOiAnbcSTbmXFoWFfbcSTbmXFoWllbV9txJNuZXNpc19txJNuZcWhaScuc3BsaXQoJ18nKSxcbiAgICAgICAgJ01NJzogJ23Ek25lxaFhX23Ek25lxaFpZW1fbcSTbmVzaXNfbcSTbmXFoWknLnNwbGl0KCdfJyksXG4gICAgICAgICd5JzogJ2dhZGFfZ2FkaWVtX2dhZHNfZ2FkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgJ3l5JzogJ2dhZGFfZ2FkaWVtX2dhZHNfZ2FkaScuc3BsaXQoJ18nKVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHdpdGhvdXRTdWZmaXggYm9vbGVhbiB0cnVlID0gYSBsZW5ndGggb2YgdGltZTsgZmFsc2UgPSBiZWZvcmUvYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JtYXQoZm9ybXMsIG51bWJlciwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgLy8gRS5nLiBcIjIxIG1pbsWrdGVcIiwgXCIzIG1pbsWrdGVzXCIuXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgJiYgbnVtYmVyICUgMTAwICE9PSAxMSA/IGZvcm1zWzJdIDogZm9ybXNbM107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBFLmcuIFwiMjEgbWluxat0ZXNcIiBhcyBpbiBcInDEk2MgMjEgbWluxat0ZXNcIi5cbiAgICAgICAgICAgIC8vIEUuZy4gXCIzIG1pbsWrdMSTbVwiIGFzIGluIFwicMSTYyAzIG1pbsWrdMSTbVwiLlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAxICYmIG51bWJlciAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IGZvcm1zWzFdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIGZvcm1hdCh1bml0c1trZXldLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdCh1bml0c1trZXldLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVNlY29uZHMobnVtYmVyLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2Rhxb5hcyBzZWt1bmRlcycgOiAnZGHFvsSBbSBzZWt1bmTEk20nO1xuICAgIH1cblxuICAgIHZhciBsdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2x2Jywge1xuICAgICAgICBtb250aHMgOiAnamFudsSBcmlzX2ZlYnJ1xIFyaXNfbWFydHNfYXByxKtsaXNfbWFpanNfasWrbmlqc19qxatsaWpzX2F1Z3VzdHNfc2VwdGVtYnJpc19va3RvYnJpc19ub3ZlbWJyaXNfZGVjZW1icmlzJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFpX2rFq25fasWrbF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzdsSTdGRpZW5hX3Bpcm1kaWVuYV9vdHJkaWVuYV90cmXFoWRpZW5hX2NldHVydGRpZW5hX3BpZWt0ZGllbmFfc2VzdGRpZW5hJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N2X1BfT19UX0NfUGtfUycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3ZfUF9PX1RfQ19Qa19TJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVkuJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgZGRkZCwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbxaBvZGllbiBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbUsSrdCBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1Zha2FyIHB1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbUGFnxIFqdcWhxIFdIGRkZGQgW3B1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAncMSTYyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3Bpcm1zICVzJyxcbiAgICAgICAgICAgIHMgOiByZWxhdGl2ZVNlY29uZHMsXG4gICAgICAgICAgICBzcyA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtIDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgbW0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaCA6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBkZCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNIDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeSA6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIHl5IDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGx2O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/lv.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/me.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/me.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact : true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[juče u] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'nekoliko sekundi',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'dan',\n            dd     : translator.translate,\n            M      : 'mjesec',\n            MM     : translator.translate,\n            y      : 'godinu',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return me;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzPzI5M2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHsgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXNcbiAgICAgICAgICAgIHNzOiBbJ3Nla3VuZCcsICdzZWt1bmRhJywgJ3Nla3VuZGknXSxcbiAgICAgICAgICAgIG06IFsnamVkYW4gbWludXQnLCAnamVkbm9nIG1pbnV0YSddLFxuICAgICAgICAgICAgbW06IFsnbWludXQnLCAnbWludXRhJywgJ21pbnV0YSddLFxuICAgICAgICAgICAgaDogWydqZWRhbiBzYXQnLCAnamVkbm9nIHNhdGEnXSxcbiAgICAgICAgICAgIGhoOiBbJ3NhdCcsICdzYXRhJywgJ3NhdGknXSxcbiAgICAgICAgICAgIGRkOiBbJ2RhbicsICdkYW5hJywgJ2RhbmEnXSxcbiAgICAgICAgICAgIE1NOiBbJ21qZXNlYycsICdtamVzZWNhJywgJ21qZXNlY2knXSxcbiAgICAgICAgICAgIHl5OiBbJ2dvZGluYScsICdnb2RpbmUnLCAnZ29kaW5hJ11cbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciA9PT0gMSA/IHdvcmRLZXlbMF0gOiAobnVtYmVyID49IDIgJiYgbnVtYmVyIDw9IDQgPyB3b3JkS2V5WzFdIDogd29yZEtleVsyXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgICAgICB2YXIgd29yZEtleSA9IHRyYW5zbGF0b3Iud29yZHNba2V5XTtcbiAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHZhciBtZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21lJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc2p1dHJhIHVdIExUJyxcblxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdbanXEjWUgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbbmVkamVsamVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwb25lZGplbGprYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3V0b3JrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3JpamVkZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BldGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCdcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0V2Vla0RheXNbdGhpcy5kYXkoKV07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzICAgICAgOiAnbmVrb2xpa28gc2VrdW5kaScsXG4gICAgICAgICAgICBzcyAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoICAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZCAgICAgIDogJ2RhbicsXG4gICAgICAgICAgICBkZCAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gICAgICA6ICdtamVzZWMnLFxuICAgICAgICAgICAgTU0gICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5ICAgICAgOiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5ICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWU7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/me.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/mi.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/mi.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return mi;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9taS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzPzY4OGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbWkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtaScsIHtcbiAgICAgICAgbW9udGhzOiAnS29oaS10xIF0ZV9IdWktdGFuZ3VydV9Qb3V0xastdGUtcmFuZ2lfUGFlbmdhLXdoxIF3aMSBX0hhcmF0dWFfUGlwaXJpX0jFjW5nb2luZ29pX0hlcmUtdHVyaS1rxY1rxIFfTWFodXJ1X1doaXJpbmdhLcSBLW51a3VfV2hpcmluZ2EtxIEtcmFuZ2lfSGFraWhlYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdLb2hpX0h1aV9Qb3VfUGFlX0hhcmFfUGlwaV9IxY1uZ29pX0hlcmVfTWFodV9XaGktbnVfV2hpLXJhX0hha2knLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1JlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsM30vaSxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsM30vaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDJ9L2ksXG4gICAgICAgIHdlZWtkYXlzOiAnUsSBdGFwdV9NYW5lX1TFq3JlaV9XZW5lcmVpX1TEgWl0ZV9QYXJhaXJlX0jEgXRhcmVpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnVGFfTWFfVMWrX1dlX1TEgWlfUGFfSMSBJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1RhX01hX1TFq19XZV9UxIFpX1BhX0jEgScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBbaV0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtpXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSB0ZWllIG1haGFuYSwgaV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1thcG9wbyBpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaW5hbmFoaSBpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3doYWthbXV0dW5nYSBpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaSByb3RvIGkgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGkgbXVhJyxcbiAgICAgICAgICAgIHM6ICd0ZSBoxJNrb25hIHJ1YXJ1YScsXG4gICAgICAgICAgICBzczogJyVkIGjEk2tvbmEnLFxuICAgICAgICAgICAgbTogJ2hlIG1lbmV0aScsXG4gICAgICAgICAgICBtbTogJyVkIG1lbmV0aScsXG4gICAgICAgICAgICBoOiAndGUgaGFvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBoYW9yYScsXG4gICAgICAgICAgICBkOiAnaGUgcmEnLFxuICAgICAgICAgICAgZGQ6ICclZCByYScsXG4gICAgICAgICAgICBNOiAnaGUgbWFyYW1hJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWFyYW1hJyxcbiAgICAgICAgICAgIHk6ICdoZSB0YXUnLFxuICAgICAgICAgICAgeXk6ICclZCB0YXUnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtaTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/mi.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/mk.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/mk.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var mk = moment.defineLocale('mk', {\n        months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n        monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n        weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'D.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay : '[Денес во] LT',\n            nextDay : '[Утре во] LT',\n            nextWeek : '[Во] dddd [во] LT',\n            lastDay : '[Вчера во] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'после %s',\n            past : 'пред %s',\n            s : 'неколку секунди',\n            ss : '%d секунди',\n            m : 'минута',\n            mm : '%d минути',\n            h : 'час',\n            hh : '%d часа',\n            d : 'ден',\n            dd : '%d дена',\n            M : 'месец',\n            MM : '%d месеци',\n            y : 'година',\n            yy : '%d години'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal : function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return mk;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzPzY5MDkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbWsgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtaycsIHtcbiAgICAgICAgbW9udGhzIDogJ9GY0LDQvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C90Lhf0ZjRg9C70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9GY0LDQvV/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfQvdC10LTQtdC70LBf0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTQsF/Rh9C10YLQstGA0YLQvtC6X9C/0LXRgtC+0Lpf0YHQsNCx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9C90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDQtV/Rh9C10YJf0L/QtdGCX9GB0LDQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0L1lX9C/b1/QstGCX9GB0YBf0YfQtV/Qv9C1X9GBYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnRC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vQlNC10L3QtdGBINCy0L5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9Cj0YLRgNC1INCy0L5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vQktC+XSBkZGRkIFvQstC+XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vQktGH0LXRgNCwINCy0L5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JjQt9C80LjQvdCw0YLQsNGC0LBdIGRkZGQgW9Cy0L5dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JjQt9C80LjQvdCw0YLQuNC+0YJdIGRkZGQgW9Cy0L5dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9C/0L7RgdC70LUgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfQv9GA0LXQtCAlcycsXG4gICAgICAgICAgICBzIDogJ9C90LXQutC+0LvQutGDINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzIDogJyVkINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIG0gOiAn0LzQuNC90YPRgtCwJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC80LjQvdGD0YLQuCcsXG4gICAgICAgICAgICBoIDogJ9GH0LDRgScsXG4gICAgICAgICAgICBoaCA6ICclZCDRh9Cw0YHQsCcsXG4gICAgICAgICAgICBkIDogJ9C00LXQvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQtNC10L3QsCcsXG4gICAgICAgICAgICBNIDogJ9C80LXRgdC10YYnLFxuICAgICAgICAgICAgTU0gOiAnJWQg0LzQtdGB0LXRhtC4JyxcbiAgICAgICAgICAgIHkgOiAn0LPQvtC00LjQvdCwJyxcbiAgICAgICAgICAgIHl5IDogJyVkINCz0L7QtNC40L3QuCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGxhc3QyRGlnaXRzID0gbnVtYmVyICUgMTAwO1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10LInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10L0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA+IDEwICYmIGxhc3QyRGlnaXRzIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGA0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDcgfHwgbGFzdERpZ2l0ID09PSA4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LzQuCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtaztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/mk.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ml.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ml.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var ml = moment.defineLocale('ml', {\n        months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n        monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n        weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm -നു',\n            LTS : 'A h:mm:ss -നു',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm -നു',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n        },\n        calendar : {\n            sameDay : '[ഇന്ന്] LT',\n            nextDay : '[നാളെ] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[ഇന്നലെ] LT',\n            lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s കഴിഞ്ഞ്',\n            past : '%s മുൻപ്',\n            s : 'അൽപ നിമിഷങ്ങൾ',\n            ss : '%d സെക്കൻഡ്',\n            m : 'ഒരു മിനിറ്റ്',\n            mm : '%d മിനിറ്റ്',\n            h : 'ഒരു മണിക്കൂർ',\n            hh : '%d മണിക്കൂർ',\n            d : 'ഒരു ദിവസം',\n            dd : '%d ദിവസം',\n            M : 'ഒരു മാസം',\n            MM : '%d മാസം',\n            y : 'ഒരു വർഷം',\n            yy : '%d വർഷം'\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'രാത്രി' && hour >= 4) ||\n                    meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                    meridiem === 'വൈകുന്നേരം') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        }\n    });\n\n    return ml;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzPzAyZmIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtbCcsIHtcbiAgICAgICAgbW9udGhzIDogJ+C0nOC0qOC1geC0teC0sOC0v1/gtKvgtYbgtKzgtY3gtLDgtYHgtLXgtLDgtL9f4LSu4LS+4LW84LSa4LWN4LSa4LWNX+C0j+C0quC1jeC0sOC0v+C1vV/gtK7gtYfgtK/gtY1f4LSc4LWC4LW6X+C0nOC1guC0suC1iF/gtJPgtJfgtLjgtY3gtLHgtY3gtLHgtY1f4LS44LWG4LSq4LWN4LSx4LWN4LSx4LSC4LSs4LW8X+C0kuC0leC1jeC0n+C1i+C0rOC1vF/gtKjgtLXgtILgtKzgtbxf4LSh4LS/4LS44LSC4LSs4LW8Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgtJzgtKjgtYEuX+C0q+C1huC0rOC1jeC0sOC1gS5f4LSu4LS+4LW8Ll/gtI/gtKrgtY3gtLDgtL8uX+C0ruC1h+C0r+C1jV/gtJzgtYLgtbpf4LSc4LWC4LSy4LWILl/gtJPgtJcuX+C0uOC1huC0quC1jeC0seC1jeC0sS5f4LSS4LSV4LWN4LSf4LWLLl/gtKjgtLXgtIIuX+C0oeC0v+C0uOC0gi4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgtJ7gtL7gtK/gtLHgtL7gtLTgtY3gtJpf4LSk4LS/4LSZ4LWN4LSV4LSz4LS+4LS04LWN4LSaX+C0muC1iuC0teC1jeC0teC0vuC0tOC1jeC0ml/gtKzgtYHgtKfgtKjgtL7gtLTgtY3gtJpf4LS14LWN4LSv4LS+4LS04LS+4LS04LWN4LSaX+C0teC1huC0s+C1jeC0s+C0v+C0r+C0vuC0tOC1jeC0ml/gtLbgtKjgtL/gtK/gtL7gtLTgtY3gtJonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4LSe4LS+4LSv4LW8X+C0pOC0v+C0meC1jeC0leC1vl/gtJrgtYrgtLXgtY3gtLVf4LSs4LWB4LSn4LW7X+C0teC1jeC0r+C0vuC0tOC0gl/gtLXgtYbgtLPgtY3gtLPgtL9f4LS24LSo4LS/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgtJ7gtL5f4LSk4LS/X+C0muC1il/gtKzgtYFf4LS14LWN4LSv4LS+X+C0teC1hl/gtLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tIC3gtKjgtYEnLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcyAt4LSo4LWBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSAt4LSo4LWBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C0h+C0qOC1jeC0qOC1jV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4LSo4LS+4LSz4LWGXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgtIfgtKjgtY3gtKjgtLLgtYZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgtJXgtLTgtL/gtJ7gtY3gtJ5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0nLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgtK7gtYHgtbvgtKrgtY0nLFxuICAgICAgICAgICAgcyA6ICfgtIXgtb3gtKog4LSo4LS/4LSu4LS/4LS34LSZ4LWN4LSZ4LW+JyxcbiAgICAgICAgICAgIHNzIDogJyVkIOC0uOC1huC0leC1jeC0leC1u+C0oeC1jScsXG4gICAgICAgICAgICBtIDogJ+C0kuC0sOC1gSDgtK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLFxuICAgICAgICAgICAgbW0gOiAnJWQg4LSu4LS/4LSo4LS/4LSx4LWN4LSx4LWNJyxcbiAgICAgICAgICAgIGggOiAn4LSS4LSw4LWBIOC0ruC0o+C0v+C0leC1jeC0leC1guC1vCcsXG4gICAgICAgICAgICBoaCA6ICclZCDgtK7gtKPgtL/gtJXgtY3gtJXgtYLgtbwnLFxuICAgICAgICAgICAgZCA6ICfgtJLgtLDgtYEg4LSm4LS/4LS14LS44LSCJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOC0puC0v+C0teC0uOC0gicsXG4gICAgICAgICAgICBNIDogJ+C0kuC0sOC1gSDgtK7gtL7gtLjgtIInLFxuICAgICAgICAgICAgTU0gOiAnJWQg4LSu4LS+4LS44LSCJyxcbiAgICAgICAgICAgIHkgOiAn4LSS4LSw4LWBIOC0teC1vOC0t+C0gicsXG4gICAgICAgICAgICB5eSA6ICclZCDgtLXgtbzgtLfgtIInXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gtLDgtL7gtKTgtY3gtLDgtL984LSw4LS+4LS14LS/4LSy4LWGfOC0ieC0muC1jeC0miDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY184LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCfOC0sOC0vuC0pOC1jeC0sOC0vy9pLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChtZXJpZGllbSA9PT0gJ+C0sOC0vuC0pOC1jeC0sOC0vycgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+C0ieC0muC1jeC0miDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0nIHx8XG4gICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSw4LS+4LSk4LWN4LSw4LS/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtLXgtL/gtLLgtYYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0ieC0muC1jeC0miDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSw4LS+4LSk4LWN4LSw4LS/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1sO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ml.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/mn.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/mn.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n        monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY оны MMMMын D',\n            LLL : 'YYYY оны MMMMын D HH:mm',\n            LLLL : 'dddd, YYYY оны MMMMын D HH:mm'\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM : function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar : {\n            sameDay : '[Өнөөдөр] LT',\n            nextDay : '[Маргааш] LT',\n            nextWeek : '[Ирэх] dddd LT',\n            lastDay : '[Өчигдөр] LT',\n            lastWeek : '[Өнгөрсөн] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s дараа',\n            past : '%s өмнө',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        }\n    });\n\n    return mn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzPzk1OGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfRhdGN0LTRhdGN0L0g0YHQtdC60YPQvdC0JyA6ICfRhdGN0LTRhdGN0L0g0YHQtdC60YPQvdC00YvQvSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRgdC10LrRg9C90LQnIDogJyDRgdC10LrRg9C90LTRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINC80LjQvdGD0YInIDogJyDQvNC40L3Rg9GC0YvQvScpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRhtCw0LMnIDogJyDRhtCw0LPQuNC50L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg06nQtNOp0YAnIDogJyDTqdC00YDQuNC50L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0YHQsNGAJyA6ICcg0YHQsNGA0YvQvScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDQttC40LsnIDogJyDQttC40LvQuNC50L0nKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBtbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21uJywge1xuICAgICAgICBtb250aHMgOiAn0J3RjdCz0LTSr9Cz0Y3RjdGAINGB0LDRgF/QpdC+0ZHRgNC00YPQs9Cw0LDRgCDRgdCw0YBf0JPRg9GA0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JTTqdGA06nQstC00q/Qs9GN0Y3RgCDRgdCw0YBf0KLQsNCy0LTRg9Cz0LDQsNGAINGB0LDRgF/Ql9GD0YDQs9Cw0LTRg9Cz0LDQsNGAINGB0LDRgF/QlNC+0LvQtNGD0LPQsNCw0YAg0YHQsNGAX9Cd0LDQudC80LTRg9Cz0LDQsNGAINGB0LDRgF/QldGB0LTSr9Cz0Y3RjdGAINGB0LDRgF/QkNGA0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JDRgNCy0LDQvSDQvdGN0LPQtNKv0LPRjdGN0YAg0YHQsNGAX9CQ0YDQstCw0L0g0YXQvtGR0YDQtNGD0LPQsNCw0YAg0YHQsNGAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICcxINGB0LDRgF8yINGB0LDRgF8zINGB0LDRgF80INGB0LDRgF81INGB0LDRgF82INGB0LDRgF83INGB0LDRgF84INGB0LDRgF85INGB0LDRgF8xMCDRgdCw0YBfMTEg0YHQsNGAXzEyINGB0LDRgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ9Cd0Y/QvF/QlNCw0LLQsNCwX9Cc0Y/Qs9C80LDRgF/Qm9GF0LDQs9Cy0LBf0J/Sr9GA0Y3Qsl/QkdCw0LDRgdCw0L1f0JHRj9C80LHQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQndGP0Lxf0JTQsNCyX9Cc0Y/Qs1/Qm9GF0LBf0J/Sr9GAX9CR0LDQsF/QkdGP0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9Cd0Y9f0JTQsF/QnNGPX9Cb0YVf0J/Sr1/QkdCwX9CR0Y8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZINC+0L3RiyBNTU1N0YvQvSBEJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZINC+0L3RiyBNTU1N0YvQvSBEIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgWVlZWSDQvtC90YsgTU1NTdGL0L0gRCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9Ku06h80q7QpS9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfSrtClJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfSrtOoJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfSrtClJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vTqNC906nTqdC006nRgF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0JzQsNGA0LPQsNCw0YhdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vQmNGA0Y3RhV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vTqNGH0LjQs9C006nRgF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9Oo0L3Qs9Op0YDRgdOp0L1dIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzINC00LDRgNCw0LAnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDTqdC80L3TqScsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9INOp0LTTqdGALyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDTqdC006nRgCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1uO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/mn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/mr.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/mr.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture)\n    {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's': output = 'काही सेकंद'; break;\n                case 'ss': output = '%d सेकंद'; break;\n                case 'm': output = 'एक मिनिट'; break;\n                case 'mm': output = '%d मिनिटे'; break;\n                case 'h': output = 'एक तास'; break;\n                case 'hh': output = '%d तास'; break;\n                case 'd': output = 'एक दिवस'; break;\n                case 'dd': output = '%d दिवस'; break;\n                case 'M': output = 'एक महिना'; break;\n                case 'MM': output = '%d महिने'; break;\n                case 'y': output = 'एक वर्ष'; break;\n                case 'yy': output = '%d वर्षे'; break;\n            }\n        }\n        else {\n            switch (string) {\n                case 's': output = 'काही सेकंदां'; break;\n                case 'ss': output = '%d सेकंदां'; break;\n                case 'm': output = 'एका मिनिटा'; break;\n                case 'mm': output = '%d मिनिटां'; break;\n                case 'h': output = 'एका तासा'; break;\n                case 'hh': output = '%d तासां'; break;\n                case 'd': output = 'एका दिवसा'; break;\n                case 'dd': output = '%d दिवसां'; break;\n                case 'M': output = 'एका महिन्या'; break;\n                case 'MM': output = '%d महिन्यां'; break;\n                case 'y': output = 'एका वर्षा'; break;\n                case 'yy': output = '%d वर्षां'; break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm वाजता',\n            LTS : 'A h:mm:ss वाजता',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm वाजता',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[उद्या] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात्री') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळी') {\n                return hour;\n            } else if (meridiem === 'दुपारी') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'सायंकाळी') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात्री';\n            } else if (hour < 10) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return mr;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzPzM5YmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgpacnLFxuICAgICAgICAnMic6ICfgpagnLFxuICAgICAgICAnMyc6ICfgpaknLFxuICAgICAgICAnNCc6ICfgpaonLFxuICAgICAgICAnNSc6ICfgpasnLFxuICAgICAgICAnNic6ICfgpawnLFxuICAgICAgICAnNyc6ICfgpa0nLFxuICAgICAgICAnOCc6ICfgpa4nLFxuICAgICAgICAnOSc6ICfgpa8nLFxuICAgICAgICAnMCc6ICfgpaYnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICfgpaYnOiAnMCdcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lTXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKVxuICAgIHtcbiAgICAgICAgdmFyIG91dHB1dCA9ICcnO1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzJzogb3V0cHV0ID0gJ+CkleCkvuCkueClgCDgpLjgpYfgpJXgpILgpKYnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzcyc6IG91dHB1dCA9ICclZCDgpLjgpYfgpJXgpILgpKYnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtJzogb3V0cHV0ID0gJ+Ckj+CklSDgpK7gpL/gpKjgpL/gpJ8nOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtbSc6IG91dHB1dCA9ICclZCDgpK7gpL/gpKjgpL/gpJ/gpYcnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoJzogb3V0cHV0ID0gJ+Ckj+CklSDgpKTgpL7gpLgnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoaCc6IG91dHB1dCA9ICclZCDgpKTgpL7gpLgnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkJzogb3V0cHV0ID0gJ+Ckj+CklSDgpKbgpL/gpLXgpLgnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkZCc6IG91dHB1dCA9ICclZCDgpKbgpL/gpLXgpLgnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzogb3V0cHV0ID0gJ+Ckj+CklSDgpK7gpLngpL/gpKjgpL4nOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNTSc6IG91dHB1dCA9ICclZCDgpK7gpLngpL/gpKjgpYcnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5Jzogb3V0cHV0ID0gJ+Ckj+CklSDgpLXgpLDgpY3gpLcnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5eSc6IG91dHB1dCA9ICclZCDgpLXgpLDgpY3gpLfgpYcnOyBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncyc6IG91dHB1dCA9ICfgpJXgpL7gpLngpYAg4KS44KWH4KSV4KSC4KSm4KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3MnOiBvdXRwdXQgPSAnJWQg4KS44KWH4KSV4KSC4KSm4KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbSc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KSu4KS/4KSo4KS/4KSf4KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW0nOiBvdXRwdXQgPSAnJWQg4KSu4KS/4KSo4KS/4KSf4KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KSk4KS+4KS44KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGgnOiBvdXRwdXQgPSAnJWQg4KSk4KS+4KS44KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KSm4KS/4KS14KS44KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGQnOiBvdXRwdXQgPSAnJWQg4KSm4KS/4KS14KS44KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KSu4KS54KS/4KSo4KWN4KSv4KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTU0nOiBvdXRwdXQgPSAnJWQg4KSu4KS54KS/4KSo4KWN4KSv4KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KS14KSw4KWN4KS34KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneXknOiBvdXRwdXQgPSAnJWQg4KS14KSw4KWN4KS34KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dC5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgIH1cblxuICAgIHZhciBtciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21yJywge1xuICAgICAgICBtb250aHMgOiAn4KSc4KS+4KSo4KWH4KS14KS+4KSw4KWAX+Ckq+Clh+CkrOCljeCksOClgeCkteCkvuCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSP4KSq4KWN4KSw4KS/4KSyX+CkruClh1/gpJzgpYLgpKhf4KSc4KWB4KSy4KWIX+CkkeCkl+CkuOCljeCkn1/gpLjgpKrgpY3gpJ/gpYfgpILgpKzgpLBf4KSR4KSV4KWN4KSf4KWL4KSs4KSwX+CkqOCli+CkteCljeCkueClh+CkguCkrOCksF/gpKHgpL/gpLjgpYfgpILgpKzgpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4KSc4KS+4KSo4KWHLl/gpKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkmi5f4KSP4KSq4KWN4KSw4KS/Ll/gpK7gpYcuX+CknOClguCkqC5f4KSc4KWB4KSy4KWILl/gpJHgpJcuX+CkuOCkquCljeCkn+Clh+Ckgi5f4KSR4KSV4KWN4KSf4KWLLl/gpKjgpYvgpLXgpY3gpLngpYfgpIIuX+CkoeCkv+CkuOClh+Ckgi4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+Cks+CkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4KSw4KS14KS/X+CkuOCli+Ckrl/gpK7gpILgpJfgpLNf4KSs4KWB4KSnX+Ckl+ClgeCksOClgl/gpLbgpYHgpJXgpY3gpLBf4KS24KSo4KS/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgpLBf4KS44KWLX+CkruCkgl/gpKzgpYFf4KSX4KWBX+CktuClgV/gpLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgpLXgpL7gpJzgpKTgpL4nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4KSG4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgpIngpKbgpY3gpK/gpL5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+CkleCkvuCksl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KSu4KS+4KSX4KWA4KSyXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+CkruCkp+CljeCkr+ClhycsXG4gICAgICAgICAgICBwYXN0OiAnJXPgpKrgpYLgpLDgpY3gpLXgpYAnLFxuICAgICAgICAgICAgczogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBtOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGg6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgZDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBNOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIHk6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZU1yXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKTgpY3gpLDgpYB84KS44KSV4KS+4KSz4KWAfOCkpuClgeCkquCkvuCksOClgHzgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYAvLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSw4KS+4KSk4KWN4KSw4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KSV4KS+4KSz4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuClgeCkquCkvuCksOClgCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KS+4KSv4KSC4KSV4KS+4KSz4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCljeCksOClgCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KSV4KS+4KSz4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpYHgpKrgpL7gpLDgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkvuCkr+CkguCkleCkvuCks+ClgCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KWN4KSw4KWAJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXI7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/mr.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ms-my.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/ms-my.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var msMy = moment.defineLocale('ms-my', {\n        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Esok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kelmarin pukul] LT',\n            lastWeek : 'dddd [lepas pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lepas',\n            s : 'beberapa saat',\n            ss : '%d saat',\n            m : 'seminit',\n            mm : '%d minit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return msMy;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzPzY0MDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbXNNeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21zLW15Jywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0FoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RlbmdhaGFyaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BldGFuZyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tFc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xlcGFzIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyB5YW5nIGxlcGFzJyxcbiAgICAgICAgICAgIHMgOiAnYmViZXJhcGEgc2FhdCcsXG4gICAgICAgICAgICBzcyA6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG0gOiAnc2VtaW5pdCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW5pdCcsXG4gICAgICAgICAgICBoIDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGphbScsXG4gICAgICAgICAgICBkIDogJ3NlaGFyaScsXG4gICAgICAgICAgICBkZCA6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE0gOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTSA6ICclZCBidWxhbicsXG4gICAgICAgICAgICB5IDogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgdGFodW4nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1zTXk7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ms-my.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ms.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ms.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var ms = moment.defineLocale('ms', {\n        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Esok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kelmarin pukul] LT',\n            lastWeek : 'dddd [lepas pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lepas',\n            s : 'beberapa saat',\n            ss : '%d saat',\n            m : 'seminit',\n            mm : '%d minit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return ms;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzP2ViZTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtcycsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcmlfRmVicnVhcmlfTWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX09nc19TZXBfT2t0X05vdl9EaXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0FoYWRfSXNuaW5fU2VsYXNhX1JhYnVfS2hhbWlzX0p1bWFhdF9TYWJ0dScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0FoX0lzX1NsX1JiX0ttX0ptX1NiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvcGFnaXx0ZW5nYWhhcml8cGV0YW5nfG1hbGFtLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncGFnaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICd0ZW5nYWhhcmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3BldGFuZycgfHwgbWVyaWRpZW0gPT09ICdtYWxhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BhZ2knO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0ZW5nYWhhcmknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwZXRhbmcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21hbGFtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tIYXJpIGluaSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbRXNvayBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0tlbG1hcmluIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtsZXBhcyBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RhbGFtICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgeWFuZyBsZXBhcycsXG4gICAgICAgICAgICBzIDogJ2JlYmVyYXBhIHNhYXQnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2FhdCcsXG4gICAgICAgICAgICBtIDogJ3NlbWluaXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWluaXQnLFxuICAgICAgICAgICAgaCA6ICdzZWphbScsXG4gICAgICAgICAgICBoaCA6ICclZCBqYW0nLFxuICAgICAgICAgICAgZCA6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQgOiAnJWQgaGFyaScsXG4gICAgICAgICAgICBNIDogJ3NlYnVsYW4nLFxuICAgICAgICAgICAgTU0gOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeSA6ICdzZXRhaHVuJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHRhaHVuJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtcztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ms.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/mt.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/mt.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var mt = moment.defineLocale('mt', {\n        months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n        monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n        weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Illum fil-]LT',\n            nextDay : '[Għada fil-]LT',\n            nextWeek : 'dddd [fil-]LT',\n            lastDay : '[Il-bieraħ fil-]LT',\n            lastWeek : 'dddd [li għadda] [fil-]LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'f’ %s',\n            past : '%s ilu',\n            s : 'ftit sekondi',\n            ss : '%d sekondi',\n            m : 'minuta',\n            mm : '%d minuti',\n            h : 'siegħa',\n            hh : '%d siegħat',\n            d : 'ġurnata',\n            dd : '%d ġranet',\n            M : 'xahar',\n            MM : '%d xhur',\n            y : 'sena',\n            yy : '%d sni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return mt;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzPzFiNDUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtdCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbm5hcl9GcmFyX01hcnp1X0FwcmlsX01lamp1X8SgdW5qdV9MdWxqdV9Bd3dpc3N1X1NldHRlbWJydV9PdHR1YnJ1X05vdmVtYnJ1X0RpxItlbWJydScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZyYV9NYXJfQXByX01lal/EoHVuX0x1bF9Bd3dfU2V0X090dF9Ob3ZfRGnEiycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnSWwtxKZhZGRfSXQtVG5lam5fSXQtVGxpZXRhX0wtRXJiZ8SnYV9JbC3EpmFtaXNfSWwtxKBpbWfEp2FfSXMtU2lidCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfEpmFkX1RuZV9UbGlfRXJiX8SmYW1fxKBpbV9TaWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ8SmYV9Ubl9UbF9Fcl/EpmFfxKBpX1NpJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbSWxsdW0gZmlsLV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tHxKdhZGEgZmlsLV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtmaWwtXUxUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0lsLWJpZXJhxKcgZmlsLV1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtsaSBnxKdhZGRhXSBbZmlsLV1MVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZuKAmSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGlsdScsXG4gICAgICAgICAgICBzIDogJ2Z0aXQgc2Vrb25kaScsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWtvbmRpJyxcbiAgICAgICAgICAgIG0gOiAnbWludXRhJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoIDogJ3NpZWfEp2EnLFxuICAgICAgICAgICAgaGggOiAnJWQgc2llZ8SnYXQnLFxuICAgICAgICAgICAgZCA6ICfEoXVybmF0YScsXG4gICAgICAgICAgICBkZCA6ICclZCDEoXJhbmV0JyxcbiAgICAgICAgICAgIE0gOiAneGFoYXInLFxuICAgICAgICAgICAgTU0gOiAnJWQgeGh1cicsXG4gICAgICAgICAgICB5IDogJ3NlbmEnLFxuICAgICAgICAgICAgeXkgOiAnJWQgc25pJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG10O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/mt.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/my.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/my.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '၁',\n        '2': '၂',\n        '3': '၃',\n        '4': '၄',\n        '5': '၅',\n        '6': '၆',\n        '7': '၇',\n        '8': '၈',\n        '9': '၉',\n        '0': '၀'\n    }, numberMap = {\n        '၁': '1',\n        '၂': '2',\n        '၃': '3',\n        '၄': '4',\n        '၅': '5',\n        '၆': '6',\n        '၇': '7',\n        '၈': '8',\n        '၉': '9',\n        '၀': '0'\n    };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss : '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်'\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return my;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9teS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzPzg2ODkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfhgYEnLFxuICAgICAgICAnMic6ICfhgYInLFxuICAgICAgICAnMyc6ICfhgYMnLFxuICAgICAgICAnNCc6ICfhgYQnLFxuICAgICAgICAnNSc6ICfhgYUnLFxuICAgICAgICAnNic6ICfhgYYnLFxuICAgICAgICAnNyc6ICfhgYcnLFxuICAgICAgICAnOCc6ICfhgYgnLFxuICAgICAgICAnOSc6ICfhgYknLFxuICAgICAgICAnMCc6ICfhgYAnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4YGBJzogJzEnLFxuICAgICAgICAn4YGCJzogJzInLFxuICAgICAgICAn4YGDJzogJzMnLFxuICAgICAgICAn4YGEJzogJzQnLFxuICAgICAgICAn4YGFJzogJzUnLFxuICAgICAgICAn4YGGJzogJzYnLFxuICAgICAgICAn4YGHJzogJzcnLFxuICAgICAgICAn4YGIJzogJzgnLFxuICAgICAgICAn4YGJJzogJzknLFxuICAgICAgICAn4YGAJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBteSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ215Jywge1xuICAgICAgICBtb250aHM6ICfhgIfhgJThgLrhgJThgJ3hgKvhgJvhgK5f4YCW4YCx4YCW4YCx4YCs4YC64YCd4YCr4YCb4YCuX+GAmeGAkOGAul/hgKfhgJXhgLzhgK5f4YCZ4YCxX+GAh+GAveGAlOGAul/hgIfhgLDhgJzhgK3hgK/hgIThgLpf4YCe4YC84YCC4YCv4YCQ4YC6X+GAheGAgOGAuuGAkOGAhOGAuuGAmOGArF/hgKHhgLHhgKzhgIDhgLrhgJDhgK3hgK/hgJjhgKxf4YCU4YCt4YCv4YCd4YCE4YC64YCY4YCsX+GAkuGAruGAh+GAhOGAuuGAmOGArCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfhgIfhgJThgLpf4YCW4YCxX+GAmeGAkOGAul/hgJXhgLzhgK5f4YCZ4YCxX+GAh+GAveGAlOGAul/hgJzhgK3hgK/hgIThgLpf4YCe4YC8X+GAheGAgOGAul/hgKHhgLHhgKzhgIDhgLpf4YCU4YCt4YCvX+GAkuGAricuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfhgJDhgJThgIThgLrhgLnhgILhgJThgL3hgLFf4YCQ4YCU4YCE4YC64YC54YCc4YCsX+GAoeGAhOGAuuGAueGAguGAq1/hgJfhgK/hgJLhgLnhgJPhgJ/hgLDhgLhf4YCA4YC84YCs4YCe4YCV4YCQ4YCx4YC4X+GAnuGAseGArOGAgOGAvOGArF/hgIXhgJThgLEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfhgJThgL3hgLFf4YCc4YCsX+GAguGAq1/hgJ/hgLDhgLhf4YCA4YC84YCsX+GAnuGAseGArF/hgJThgLEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4YCU4YC94YCxX+GAnOGArF/hgILhgKtf4YCf4YCw4YC4X+GAgOGAvOGArF/hgJ7hgLHhgKxf4YCU4YCxJy5zcGxpdCgnXycpLFxuXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+GAmuGAlOGAsS5dIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4YCZ4YCU4YCA4YC64YCW4YC84YCU4YC6XSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhgJnhgJThgLEu4YCAXSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vhgJXhgLzhgK7hgLjhgIHhgLLhgLfhgJ7hgLHhgKxdIGRkZGQgTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ+GAnOGArOGAmeGAiuGAuuGAtyAlcyDhgJnhgL7hgKwnLFxuICAgICAgICAgICAgcGFzdDogJ+GAnOGAveGAlOGAuuGAgeGAsuGAt+GAnuGAseGArCAlcyDhgIAnLFxuICAgICAgICAgICAgczogJ+GAheGAgOGAueGAgOGAlOGAui7hgKHhgJThgIrhgLrhgLjhgIThgJrhgLonLFxuICAgICAgICAgICAgc3MgOiAnJWQg4YCF4YCA4YC54YCA4YCU4YC34YC6JyxcbiAgICAgICAgICAgIG06ICfhgJDhgIXhgLrhgJnhgK3hgJThgIXhgLonLFxuICAgICAgICAgICAgbW06ICclZCDhgJnhgK3hgJThgIXhgLonLFxuICAgICAgICAgICAgaDogJ+GAkOGAheGAuuGAlOGArOGAm+GAricsXG4gICAgICAgICAgICBoaDogJyVkIOGAlOGArOGAm+GAricsXG4gICAgICAgICAgICBkOiAn4YCQ4YCF4YC64YCb4YCA4YC6JyxcbiAgICAgICAgICAgIGRkOiAnJWQg4YCb4YCA4YC6JyxcbiAgICAgICAgICAgIE06ICfhgJDhgIXhgLrhgJwnLFxuICAgICAgICAgICAgTU06ICclZCDhgJwnLFxuICAgICAgICAgICAgeTogJ+GAkOGAheGAuuGAlOGAvuGAheGAuicsXG4gICAgICAgICAgICB5eTogJyVkIOGAlOGAvuGAheGAuidcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+GBgeGBguGBg+GBhOGBheGBhuGBh+GBiOGBieGBgF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBteTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/my.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/nb.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/nb.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var nb = moment.defineLocale('nb', {\n        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s siden',\n            s : 'noen sekunder',\n            ss : '%d sekunder',\n            m : 'ett minutt',\n            mm : '%d minutter',\n            h : 'en time',\n            hh : '%d timer',\n            d : 'en dag',\n            dd : '%d dager',\n            M : 'en måned',\n            MM : '%d måneder',\n            y : 'ett år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nb;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uYi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzPzZjZTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbmIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCduYicsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbi5fZmViLl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnc8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzw7guX21hLl90aS5fb24uX3RvLl9mci5fbMO4Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tpIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaSBtb3JnZW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpIGfDpXIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tmb3JyaWdlXSBkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgc2lkZW4nLFxuICAgICAgICAgICAgcyA6ICdub2VuIHNla3VuZGVyJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG0gOiAnZXR0IG1pbnV0dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dHRlcicsXG4gICAgICAgICAgICBoIDogJ2VuIHRpbWUnLFxuICAgICAgICAgICAgaGggOiAnJWQgdGltZXInLFxuICAgICAgICAgICAgZCA6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnZXInLFxuICAgICAgICAgICAgTSA6ICdlbiBtw6VuZWQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOlbmVkZXInLFxuICAgICAgICAgICAgeSA6ICdldHQgw6VyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMOlcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBuYjtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/nb.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ne.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ne.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    var ne = moment.defineLocale('ne', {\n        months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n        monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n        weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'Aको h:mm बजे',\n            LTS : 'Aको h:mm:ss बजे',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[भोलि] LT',\n            nextWeek : '[आउँदो] dddd[,] LT',\n            lastDay : '[हिजो] LT',\n            lastWeek : '[गएको] dddd[,] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%sमा',\n            past : '%s अगाडि',\n            s : 'केही क्षण',\n            ss : '%d सेकेण्ड',\n            m : 'एक मिनेट',\n            mm : '%d मिनेट',\n            h : 'एक घण्टा',\n            hh : '%d घण्टा',\n            d : 'एक दिन',\n            dd : '%d दिन',\n            M : 'एक महिना',\n            MM : '%d महिना',\n            y : 'एक बर्ष',\n            yy : '%d बर्ष'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return ne;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzPzNhMzkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgpacnLFxuICAgICAgICAnMic6ICfgpagnLFxuICAgICAgICAnMyc6ICfgpaknLFxuICAgICAgICAnNCc6ICfgpaonLFxuICAgICAgICAnNSc6ICfgpasnLFxuICAgICAgICAnNic6ICfgpawnLFxuICAgICAgICAnNyc6ICfgpa0nLFxuICAgICAgICAnOCc6ICfgpa4nLFxuICAgICAgICAnOSc6ICfgpa8nLFxuICAgICAgICAnMCc6ICfgpaYnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICfgpaYnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIG5lID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmUnLCB7XG4gICAgICAgIG1vbnRocyA6ICfgpJzgpKjgpLXgpLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpL/gpLJf4KSu4KSIX+CknOClgeCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS34KWN4KSfX+CkuOClh+CkquCljeCkn+Clh+CkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL4KSt4KWH4KSu4KWN4KSs4KSwX+CkoeCkv+CkuOClh+CkruCljeCkrOCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4KSc4KSoLl/gpKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpL8uX+CkruCkiF/gpJzgpYHgpKhf4KSc4KWB4KSy4KS+4KSILl/gpIXgpJcuX+CkuOClh+CkquCljeCkny5f4KSF4KSV4KWN4KSf4KWLLl/gpKjgpYvgpK3gpYcuX+CkoeCkv+CkuOClhy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgpIbgpIfgpKTgpKzgpL7gpLBf4KS44KWL4KSu4KSs4KS+4KSwX+CkruCkmeCljeCkl+CksuCkrOCkvuCksF/gpKzgpYHgpKfgpKzgpL7gpLBf4KSs4KS/4KS54KS/4KSs4KS+4KSwX+CktuClgeCkleCljeCksOCkrOCkvuCksF/gpLbgpKjgpL/gpKzgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4KSG4KSH4KSkLl/gpLjgpYvgpK4uX+CkruCkmeCljeCkl+Cksi5f4KSs4KWB4KSnLl/gpKzgpL/gpLngpL8uX+CktuClgeCkleCljeCksC5f4KS24KSo4KS/Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4KSGLl/gpLjgpYsuX+CkruCkgi5f4KSs4KWBLl/gpKzgpL8uX+CktuClgS5f4KS2Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExUUyA6ICdB4KSV4KWLIGg6bW06c3Mg4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEHgpJXgpYsgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQeCkleCliyBoOm1tIOCkrOCknOClhydcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CksOCkvuCkpOCkv3zgpKzgpL/gpLngpL7gpKh84KSm4KS/4KSJ4KSB4KS44KWLfOCkuOCkvuCkgeCknS8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpL8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKzgpL/gpLngpL7gpKgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KS/4KSJ4KSB4KS44KWLJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpL7gpIHgpJ0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCkvyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSs4KS/4KS54KS+4KSoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpL/gpIngpIHgpLjgpYsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkvuCkgeCknSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KS/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CkreCli+CksuCkv10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+CkhuCkieCkgeCkpuCli10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgpLngpL/gpJzgpYtdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgpJfgpI/gpJXgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVz4KSu4KS+JyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4KSF4KSX4KS+4KSh4KS/JyxcbiAgICAgICAgICAgIHMgOiAn4KSV4KWH4KS54KWAIOCkleCljeCkt+CkoycsXG4gICAgICAgICAgICBzcyA6ICclZCDgpLjgpYfgpJXgpYfgpKPgpY3gpKEnLFxuICAgICAgICAgICAgbSA6ICfgpI/gpJUg4KSu4KS/4KSo4KWH4KSfJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOCkruCkv+CkqOClh+CknycsXG4gICAgICAgICAgICBoIDogJ+Ckj+CklSDgpJjgpKPgpY3gpJ/gpL4nLFxuICAgICAgICAgICAgaGggOiAnJWQg4KSY4KSj4KWN4KSf4KS+JyxcbiAgICAgICAgICAgIGQgOiAn4KSP4KSVIOCkpuCkv+CkqCcsXG4gICAgICAgICAgICBkZCA6ICclZCDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgTSA6ICfgpI/gpJUg4KSu4KS54KS/4KSo4KS+JyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCkruCkueCkv+CkqOCkvicsXG4gICAgICAgICAgICB5IDogJ+Ckj+CklSDgpKzgpLDgpY3gpLcnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4KSs4KSw4KWN4KS3J1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBuZTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ne.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/nl-be.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/nl-be.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n    var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n    var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'over %s',\n            past : '%s geleden',\n            s : 'een paar seconden',\n            ss : '%d seconden',\n            m : 'één minuut',\n            mm : '%d minuten',\n            h : 'één uur',\n            hh : '%d uur',\n            d : 'één dag',\n            dd : '%d dagen',\n            M : 'één maand',\n            MM : '%d maanden',\n            y : 'één jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nlBe;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzP2RiMjkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnRXaXRoRG90cyA9ICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID0gJ2phbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9eamFuL2ksIC9eZmViL2ksIC9ebWFhcnR8bXJ0Lj8kL2ksIC9eYXByL2ksIC9ebWVpJC9pLCAvXmp1bltpLl0/JC9pLCAvXmp1bFtpLl0/JC9pLCAvXmF1Zy9pLCAvXnNlcC9pLCAvXm9rdC9pLCAvXm5vdi9pLCAvXmRlYy9pXTtcbiAgICB2YXIgbW9udGhzUmVnZXggPSAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyfGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2k7XG5cbiAgICB2YXIgbmxCZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25sLWJlJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98bWVpfGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgd2Vla2RheXMgOiAnem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICd6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3pvX21hX2RpX3dvX2RvX3ZyX3phJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW3ZhbmRhYWcgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dpc3RlcmVuIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1thZmdlbG9wZW5dIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvdmVyICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgZ2VsZWRlbicsXG4gICAgICAgICAgICBzIDogJ2VlbiBwYWFyIHNlY29uZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGVuJyxcbiAgICAgICAgICAgIG0gOiAnw6nDqW4gbWludXV0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZW4nLFxuICAgICAgICAgICAgaCA6ICfDqcOpbiB1dXInLFxuICAgICAgICAgICAgaGggOiAnJWQgdXVyJyxcbiAgICAgICAgICAgIGQgOiAnw6nDqW4gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2VuJyxcbiAgICAgICAgICAgIE0gOiAnw6nDqW4gbWFhbmQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWFhbmRlbicsXG4gICAgICAgICAgICB5IDogJ8Opw6luIGphYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgamFhcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICgobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjApID8gJ3N0ZScgOiAnZGUnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmxCZTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/nl-be.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/nl.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/nl.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n    var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n    var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'over %s',\n            past : '%s geleden',\n            s : 'een paar seconden',\n            ss : '%d seconden',\n            m : 'één minuut',\n            mm : '%d minuten',\n            h : 'één uur',\n            hh : '%d uur',\n            d : 'één dag',\n            dd : '%d dagen',\n            M : 'één maand',\n            MM : '%d maanden',\n            y : 'één jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nl;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzP2ZhY2QiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnRXaXRoRG90cyA9ICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID0gJ2phbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9eamFuL2ksIC9eZmViL2ksIC9ebWFhcnR8bXJ0Lj8kL2ksIC9eYXByL2ksIC9ebWVpJC9pLCAvXmp1bltpLl0/JC9pLCAvXmp1bFtpLl0/JC9pLCAvXmF1Zy9pLCAvXnNlcC9pLCAvXm9rdC9pLCAvXm5vdi9pLCAvXmRlYy9pXTtcbiAgICB2YXIgbW9udGhzUmVnZXggPSAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyfGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2k7XG5cbiAgICB2YXIgbmwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubCcsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90cztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRob3V0RG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvXihqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fG1laXxqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaSxcblxuICAgICAgICBtb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIHdlZWtkYXlzIDogJ3pvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICd6b19tYV9kaV93b19kb192cl96YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t2YW5kYWFnIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnaXN0ZXJlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb3ZlciAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGdlbGVkZW4nLFxuICAgICAgICAgICAgcyA6ICdlZW4gcGFhciBzZWNvbmRlbicsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRlbicsXG4gICAgICAgICAgICBtIDogJ8Opw6luIG1pbnV1dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVuJyxcbiAgICAgICAgICAgIGggOiAnw6nDqW4gdXVyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHV1cicsXG4gICAgICAgICAgICBkIDogJ8Opw6luIGRhZycsXG4gICAgICAgICAgICBkZCA6ICclZCBkYWdlbicsXG4gICAgICAgICAgICBNIDogJ8Opw6luIG1hYW5kJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1hYW5kZW4nLFxuICAgICAgICAgICAgeSA6ICfDqcOpbiBqYWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGphYXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoKG51bWJlciA9PT0gMSB8fCBudW1iZXIgPT09IDggfHwgbnVtYmVyID49IDIwKSA/ICdzdGUnIDogJ2RlJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5sO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/nl.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/nn.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/nn.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var nn = moment.defineLocale('nn', {\n        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n        weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] H:mm',\n            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s sidan',\n            s : 'nokre sekund',\n            ss : '%d sekund',\n            m : 'eit minutt',\n            mm : '%d minutt',\n            h : 'ein time',\n            hh : '%d timar',\n            d : 'ein dag',\n            dd : '%d dagar',\n            M : 'ein månad',\n            MM : '%d månader',\n            y : 'eit år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzP2I4NGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbm4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubicsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzdW5kYWdfbcOlbmRhZ190eXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xhdXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc3VuX23DpW5fdHlzX29uc190b3JfZnJlX2xhdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc3VfbcOlX3R5X29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0kgZGFnIGtsb2trYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tJIG1vcmdvbiBrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2xva2thXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0kgZ8OlciBrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0bDuHJlZ8OlYW5kZV0gZGRkZCBba2xva2thXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHNpZGFuJyxcbiAgICAgICAgICAgIHMgOiAnbm9rcmUgc2VrdW5kJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZCcsXG4gICAgICAgICAgICBtIDogJ2VpdCBtaW51dHQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXR0JyxcbiAgICAgICAgICAgIGggOiAnZWluIHRpbWUnLFxuICAgICAgICAgICAgaGggOiAnJWQgdGltYXInLFxuICAgICAgICAgICAgZCA6ICdlaW4gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIE0gOiAnZWluIG3DpW5hZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtw6VuYWRlcicsXG4gICAgICAgICAgICB5IDogJ2VpdCDDpXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgw6VyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5uO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/nn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/pa-in.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/pa-in.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '੧',\n        '2': '੨',\n        '3': '੩',\n        '4': '੪',\n        '5': '੫',\n        '6': '੬',\n        '7': '੭',\n        '8': '੮',\n        '9': '੯',\n        '0': '੦'\n    },\n    numberMap = {\n        '੧': '1',\n        '੨': '2',\n        '੩': '3',\n        '੪': '4',\n        '੫': '5',\n        '੬': '6',\n        '੭': '7',\n        '੮': '8',\n        '੯': '9',\n        '੦': '0'\n    };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n        monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n        weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n        weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm ਵਜੇ',\n            LTS : 'A h:mm:ss ਵਜੇ',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n        },\n        calendar : {\n            sameDay : '[ਅਜ] LT',\n            nextDay : '[ਕਲ] LT',\n            nextWeek : '[ਅਗਲਾ] dddd, LT',\n            lastDay : '[ਕਲ] LT',\n            lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ਵਿੱਚ',\n            past : '%s ਪਿਛਲੇ',\n            s : 'ਕੁਝ ਸਕਿੰਟ',\n            ss : '%d ਸਕਿੰਟ',\n            m : 'ਇਕ ਮਿੰਟ',\n            mm : '%d ਮਿੰਟ',\n            h : 'ਇੱਕ ਘੰਟਾ',\n            hh : '%d ਘੰਟੇ',\n            d : 'ਇੱਕ ਦਿਨ',\n            dd : '%d ਦਿਨ',\n            M : 'ਇੱਕ ਮਹੀਨਾ',\n            MM : '%d ਮਹੀਨੇ',\n            y : 'ਇੱਕ ਸਾਲ',\n            yy : '%d ਸਾਲ'\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return paIn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzP2YzZmYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgqacnLFxuICAgICAgICAnMic6ICfgqagnLFxuICAgICAgICAnMyc6ICfgqaknLFxuICAgICAgICAnNCc6ICfgqaonLFxuICAgICAgICAnNSc6ICfgqasnLFxuICAgICAgICAnNic6ICfgqawnLFxuICAgICAgICAnNyc6ICfgqa0nLFxuICAgICAgICAnOCc6ICfgqa4nLFxuICAgICAgICAnOSc6ICfgqa8nLFxuICAgICAgICAnMCc6ICfgqaYnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgqacnOiAnMScsXG4gICAgICAgICfgqagnOiAnMicsXG4gICAgICAgICfgqaknOiAnMycsXG4gICAgICAgICfgqaonOiAnNCcsXG4gICAgICAgICfgqasnOiAnNScsXG4gICAgICAgICfgqawnOiAnNicsXG4gICAgICAgICfgqa0nOiAnNycsXG4gICAgICAgICfgqa4nOiAnOCcsXG4gICAgICAgICfgqa8nOiAnOScsXG4gICAgICAgICfgqaYnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIHBhSW4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwYS1pbicsIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIG1vbnRocyBuYW1lIGFzIHBlciBOYW5ha3NoYWhpIENhbGVuZGFyIGJ1dCB0aGV5IGFyZSBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBQdW5qYWJpLlxuICAgICAgICBtb250aHMgOiAn4Kic4Kio4Ki14Kiw4KmAX+Coq+CovOCosOCoteCosOCpgF/gqK7gqL7gqLDgqJpf4KiF4Kiq4KmN4Kiw4KmI4KiyX+CoruCoiF/gqJzgqYLgqKhf4Kic4KmB4Kiy4Ki+4KiIX+CoheCol+CouOCopF/gqLjgqKTgqbDgqKzgqLBf4KiF4KiV4Kik4KmC4Kis4KiwX+CoqOCoteCpsOCorOCosF/gqKbgqLjgqbDgqKzgqLAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+ConOCoqOCoteCosOCpgF/gqKvgqLzgqLDgqLXgqLDgqYBf4Kiu4Ki+4Kiw4KiaX+CoheCoquCpjeCosOCpiOCosl/gqK7gqIhf4Kic4KmC4KioX+ConOCpgeCosuCovuCoiF/gqIXgqJfgqLjgqKRf4Ki44Kik4Kmw4Kis4KiwX+CoheColeCopOCpguCorOCosF/gqKjgqLXgqbDgqKzgqLBf4Kim4Ki44Kmw4Kis4KiwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgqJDgqKTgqLXgqL7gqLBf4Ki44KmL4Kiu4Ki14Ki+4KiwX+CoruCpsOCol+CosuCoteCovuCosF/gqKzgqYHgqKfgqLXgqL7gqLBf4Ki14KmA4Kiw4Ki14Ki+4KiwX+CouOCovOCpgeCpseColeCosOCoteCovuCosF/gqLjgqLzgqKjgqYDgqJrgqLDgqLXgqL7gqLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4KiQ4KikX+CouOCpi+Corl/gqK7gqbDgqJfgqLJf4Kis4KmB4KinX+CoteCpgOCosF/gqLjgqLzgqYHgqJXgqLBf4Ki44Ki84Kio4KmAJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgqJDgqKRf4Ki44KmL4KiuX+CoruCpsOCol+Cosl/gqKzgqYHgqKdf4Ki14KmA4KiwX+CouOCovOCpgeColeCosF/gqLjgqLzgqKjgqYAnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tIOCoteConOCphycsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzIOCoteConOCphycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4Ki14Kic4KmHJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgqLXgqJzgqYcnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4KiF4KicXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgqJXgqLJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vgqIXgqJfgqLLgqL5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+ColeCosl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+CoquCov+Com+CosuCph10gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOCoteCov+CpseComicsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOCoquCov+Com+CosuCphycsXG4gICAgICAgICAgICBzIDogJ+ColeCpgeConSDgqLjgqJXgqL/gqbDgqJ8nLFxuICAgICAgICAgICAgc3MgOiAnJWQg4Ki44KiV4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIG0gOiAn4KiH4KiVIOCoruCov+CpsOConycsXG4gICAgICAgICAgICBtbSA6ICclZCDgqK7gqL/gqbDgqJ8nLFxuICAgICAgICAgICAgaCA6ICfgqIfgqbHgqJUg4KiY4Kmw4Kif4Ki+JyxcbiAgICAgICAgICAgIGhoIDogJyVkIOComOCpsOCon+CphycsXG4gICAgICAgICAgICBkIDogJ+Coh+CpseColSDgqKbgqL/gqKgnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4Kim4Ki/4KioJyxcbiAgICAgICAgICAgIE0gOiAn4KiH4Kmx4KiVIOCoruCoueCpgOCoqOCovicsXG4gICAgICAgICAgICBNTSA6ICclZCDgqK7gqLngqYDgqKjgqYcnLFxuICAgICAgICAgICAgeSA6ICfgqIfgqbHgqJUg4Ki44Ki+4KiyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCouOCovuCosidcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cpp+CpqOCpqeCpquCpq+CprOCpreCpruCpr+Cppl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gUHVuamFiaSBub3RhdGlvbiBmb3IgbWVyaWRpZW1zIGFyZSBxdWl0ZSBmdXp6eSBpbiBwcmFjdGljZS4gV2hpbGUgdGhlcmUgZXhpc3RzXG4gICAgICAgIC8vIGEgcmlnaWQgbm90aW9uIG9mIGEgJ1BhaGFyJyBpdCBpcyBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBQdW5qYWJpLlxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kiw4Ki+4KikfOCouOCoteCph+CosHzgqKbgqYHgqKrgqLngqL/gqLB84Ki44Ki84Ki+4KiuLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CosOCovuCopCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CouOCoteCph+CosCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqKbgqYHgqKrgqLngqL/gqLAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CouOCovOCovuCoricpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kiw4Ki+4KikJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLjgqLXgqYfgqLAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CopuCpgeCoquCoueCov+CosCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ki44Ki84Ki+4KiuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLDgqL7gqKQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYUluO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/pa-in.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/pl.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/pl.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n    function plural(n) {\n        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix  ? 'godzina'  : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months : function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (format === '') {\n                // Hack: if format empty we know this is used to generate\n                // RegExp by moment. Give then back both valid forms of months\n                // in RegExp ready format.\n                return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n        weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : '%s temu',\n            s : 'kilka sekund',\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : '1 dzień',\n            dd : '%d dni',\n            M : 'miesiąc',\n            MM : translate,\n            y : 'rok',\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return pl;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzPzhkNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzTm9taW5hdGl2ZSA9ICdzdHljemXFhF9sdXR5X21hcnplY19rd2llY2llxYRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllxYRfd3J6ZXNpZcWEX3Bhxbpkemllcm5pa19saXN0b3BhZF9ncnVkemllxYQnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1N1YmplY3RpdmUgPSAnc3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21hamFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplxZtuaWFfcGHFumR6aWVybmlrYV9saXN0b3BhZGFfZ3J1ZG5pYScuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICByZXR1cm4gKG4gJSAxMCA8IDUpICYmIChuICUgMTAgPiAxKSAmJiAoKH5+KG4gLyAxMCkgJSAxMCkgIT09IDEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla3VuZCcpO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWludXRhJyA6ICdtaW51dMSZJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbnV0eScgOiAnbWludXQnKTtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ICA/ICdnb2R6aW5hJyAgOiAnZ29kemluxJknO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZ29kemlueScgOiAnZ29kemluJyk7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaWVzacSFY2UnIDogJ21pZXNpxJljeScpO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbGF0YScgOiAnbGF0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcGwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwbCcsIHtcbiAgICAgICAgbW9udGhzIDogZnVuY3Rpb24gKG1vbWVudFRvRm9ybWF0LCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50VG9Gb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzTm9taW5hdGl2ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnJykge1xuICAgICAgICAgICAgICAgIC8vIEhhY2s6IGlmIGZvcm1hdCBlbXB0eSB3ZSBrbm93IHRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZVxuICAgICAgICAgICAgICAgIC8vIFJlZ0V4cCBieSBtb21lbnQuIEdpdmUgdGhlbiBiYWNrIGJvdGggdmFsaWQgZm9ybXMgb2YgbW9udGhzXG4gICAgICAgICAgICAgICAgLy8gaW4gUmVnRXhwIHJlYWR5IGZvcm1hdC5cbiAgICAgICAgICAgICAgICByZXR1cm4gJygnICsgbW9udGhzU3ViamVjdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXSArICd8JyArIG1vbnRoc05vbWluYXRpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV0gKyAnKSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC9EIE1NTU0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTdWJqZWN0aXZlW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzTm9taW5hdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnc3R5X2x1dF9tYXJfa3dpX21hal9jemVfbGlwX3NpZV93cnpfcGHFul9saXNfZ3J1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICduaWVkemllbGFfcG9uaWVkemlhxYJla193dG9yZWtfxZtyb2RhX2N6d2FydGVrX3BpxIV0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ25kel9wb25fd3RfxZtyX2N6d19wdF9zb2InLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ05kX1BuX1d0X8Wacl9Del9QdF9Tbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbRHppxZsgb10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tKdXRybyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIG5pZWR6aWVsxJkgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1dlIHd0b3JlayBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyDFm3JvZMSZIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHNvYm90xJkgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXXSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbV2N6b3JhaiBvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgsSFIG5pZWR6aWVsxJkgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgsSFIMWbcm9kxJkgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgsSFIHNvYm90xJkgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYJ5XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgdGVtdScsXG4gICAgICAgICAgICBzIDogJ2tpbGthIHNla3VuZCcsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiAnMSBkemllxYQnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZG5pJyxcbiAgICAgICAgICAgIE0gOiAnbWllc2nEhWMnLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogJ3JvaycsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBsO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/pl.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/pt-br.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/pt-br.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return (this.day() === 0 || this.day() === 6) ?\n                    '[Último] dddd [às] LT' : // Saturday + Sunday\n                    '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'em %s',\n            past : 'há %s',\n            s : 'poucos segundos',\n            ss : '%d segundos',\n            m : 'um minuto',\n            mm : '%d minutos',\n            h : 'uma hora',\n            hh : '%d horas',\n            d : 'um dia',\n            dd : '%d dias',\n            M : 'um mês',\n            MM : '%d meses',\n            y : 'um ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal : '%dº'\n    });\n\n    return ptBr;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC1ici5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzP2QyZDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgcHRCciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3B0LWJyJywge1xuICAgICAgICBtb250aHMgOiAnSmFuZWlyb19GZXZlcmVpcm9fTWFyw6dvX0FicmlsX01haW9fSnVuaG9fSnVsaG9fQWdvc3RvX1NldGVtYnJvX091dHVicm9fTm92ZW1icm9fRGV6ZW1icm8nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZXZfTWFyX0Ficl9NYWlfSnVuX0p1bF9BZ29fU2V0X091dF9Ob3ZfRGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdEb21pbmdvX1NlZ3VuZGEtZmVpcmFfVGVyw6dhLWZlaXJhX1F1YXJ0YS1mZWlyYV9RdWludGEtZmVpcmFfU2V4dGEtZmVpcmFfU8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdEb21fU2VnX1Rlcl9RdWFfUXVpX1NleF9Tw6FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdEb18ywqpfM8KqXzTCql81wqpfNsKqX1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSG9qZSDDoHNdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQW1hbmjDoyDDoHNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BzXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW09udGVtIMOgc10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMuZGF5KCkgPT09IDAgfHwgdGhpcy5kYXkoKSA9PT0gNikgP1xuICAgICAgICAgICAgICAgICAgICAnW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQnIDogLy8gU2F0dXJkYXkgKyBTdW5kYXlcbiAgICAgICAgICAgICAgICAgICAgJ1vDmmx0aW1hXSBkZGRkIFvDoHNdIExUJzsgLy8gTW9uZGF5IC0gRnJpZGF5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdow6EgJXMnLFxuICAgICAgICAgICAgcyA6ICdwb3Vjb3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbSA6ICd1bSBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoIDogJ3VtYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW0gZGlhJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRpYXMnLFxuICAgICAgICAgICAgTSA6ICd1bSBtw6pzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW0gYW5vJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFub3MnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6J1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHB0QnI7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/pt-br.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/pt.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/pt.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var pt = moment.defineLocale('pt', {\n        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return (this.day() === 0 || this.day() === 6) ?\n                    '[Último] dddd [às] LT' : // Saturday + Sunday\n                    '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'em %s',\n            past : 'há %s',\n            s : 'segundos',\n            ss : '%d segundos',\n            m : 'um minuto',\n            mm : '%d minutos',\n            h : 'uma hora',\n            hh : '%d horas',\n            d : 'um dia',\n            dd : '%d dias',\n            M : 'um mês',\n            MM : '%d meses',\n            y : 'um ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return pt;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzP2YyNjAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgcHQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwdCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbmVpcm9fRmV2ZXJlaXJvX01hcsOnb19BYnJpbF9NYWlvX0p1bmhvX0p1bGhvX0Fnb3N0b19TZXRlbWJyb19PdXR1YnJvX05vdmVtYnJvX0RlemVtYnJvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnRG9taW5nb19TZWd1bmRhLWZlaXJhX1RlcsOnYS1mZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnRG9fMsKqXzPCql80wqpfNcKqXzbCql9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmRheSgpID09PSAwIHx8IHRoaXMuZGF5KCkgPT09IDYpID9cbiAgICAgICAgICAgICAgICAgICAgJ1vDmmx0aW1vXSBkZGRkIFvDoHNdIExUJyA6IC8vIFNhdHVyZGF5ICsgU3VuZGF5XG4gICAgICAgICAgICAgICAgICAgICdbw5psdGltYV0gZGRkZCBbw6BzXSBMVCc7IC8vIE1vbmRheSAtIEZyaWRheVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaMOhICVzJyxcbiAgICAgICAgICAgIHMgOiAnc2VndW5kb3MnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbSA6ICd1bSBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoIDogJ3VtYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW0gZGlhJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRpYXMnLFxuICAgICAgICAgICAgTSA6ICd1bSBtw6pzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW0gYW5vJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFub3MnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHQ7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/pt.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ro.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ro.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                'ss': 'secunde',\n                'mm': 'minute',\n                'hh': 'ore',\n                'dd': 'zile',\n                'MM': 'luni',\n                'yy': 'ani'\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n        monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'peste %s',\n            past : '%s în urmă',\n            s : 'câteva secunde',\n            ss : relativeTimeWithPlural,\n            m : 'un minut',\n            mm : relativeTimeWithPlural,\n            h : 'o oră',\n            hh : relativeTimeWithPlural,\n            d : 'o zi',\n            dd : relativeTimeWithPlural,\n            M : 'o lună',\n            MM : relativeTimeWithPlural,\n            y : 'un an',\n            yy : relativeTimeWithPlural\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return ro;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9yby5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzPzk3MmMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAgICAgJ3NzJzogJ3NlY3VuZGUnLFxuICAgICAgICAgICAgICAgICdtbSc6ICdtaW51dGUnLFxuICAgICAgICAgICAgICAgICdoaCc6ICdvcmUnLFxuICAgICAgICAgICAgICAgICdkZCc6ICd6aWxlJyxcbiAgICAgICAgICAgICAgICAnTU0nOiAnbHVuaScsXG4gICAgICAgICAgICAgICAgJ3l5JzogJ2FuaSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXBhcmF0b3IgPSAnICc7XG4gICAgICAgIGlmIChudW1iZXIgJSAxMDAgPj0gMjAgfHwgKG51bWJlciA+PSAxMDAgJiYgbnVtYmVyICUgMTAwID09PSAwKSkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gJyBkZSAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudW1iZXIgKyBzZXBhcmF0b3IgKyBmb3JtYXRba2V5XTtcbiAgICB9XG5cbiAgICB2YXIgcm8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdybycsIHtcbiAgICAgICAgbW9udGhzIDogJ2lhbnVhcmllX2ZlYnJ1YXJpZV9tYXJ0aWVfYXByaWxpZV9tYWlfaXVuaWVfaXVsaWVfYXVndXN0X3NlcHRlbWJyaWVfb2N0b21icmllX25vaWVtYnJpZV9kZWNlbWJyaWUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2lhbi5fZmVici5fbWFydC5fYXByLl9tYWlfaXVuLl9pdWwuX2F1Zy5fc2VwdC5fb2N0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2R1bWluaWPEg19sdW5pX21hcsibaV9taWVyY3VyaV9qb2lfdmluZXJpX3PDom1ixIN0xIMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRHVtX0x1bl9NYXJfTWllX0pvaV9WaW5fU8OibScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnRHVfTHVfTWFfTWlfSm9fVmlfU8OiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2F6aSBsYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttw6JpbmUgbGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbbGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaWVyaSBsYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZm9zdGFdIGRkZGQgW2xhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdwZXN0ZSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIMOubiB1cm3EgycsXG4gICAgICAgICAgICBzIDogJ2PDonRldmEgc2VjdW5kZScsXG4gICAgICAgICAgICBzcyA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0JyxcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGggOiAnbyBvcsSDJyxcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiAnbyB6aScsXG4gICAgICAgICAgICBkZCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNIDogJ28gbHVuxIMnLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeSA6ICd1biBhbicsXG4gICAgICAgICAgICB5eSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWxcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm87XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ro.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ru.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ru.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            'hh': 'час_часа_часов',\n            'dd': 'день_дня_дней',\n            'MM': 'месяц_месяца_месяцев',\n            'yy': 'год_года_лет'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months : {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n        },\n        monthsShort : {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n        },\n        weekdays : {\n            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n        },\n        weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соотвествует только сокращённым формам\n        monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY г.',\n            LLL : 'D MMMM YYYY г., H:mm',\n            LLLL : 'dddd, D MMMM YYYY г., H:mm'\n        },\n        calendar : {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'через %s',\n            past : '%s назад',\n            s : 'несколько секунд',\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : 'час',\n            hh : relativeTimeWithPlural,\n            d : 'день',\n            dd : relativeTimeWithPlural,\n            M : 'месяц',\n            MM : relativeTimeWithPlural,\n            y : 'год',\n            yy : relativeTimeWithPlural\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM : function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ru;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzPzk1N2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IChudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMCkgPyBmb3Jtc1sxXSA6IGZvcm1zWzJdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3NzJzogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICAnbW0nOiB3aXRob3V0U3VmZml4ID8gJ9C80LjQvdGD0YLQsF/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgicgOiAn0LzQuNC90YPRgtGDX9C80LjQvdGD0YLRi1/QvNC40L3Rg9GCJyxcbiAgICAgICAgICAgICdoaCc6ICfRh9Cw0YFf0YfQsNGB0LBf0YfQsNGB0L7QsicsXG4gICAgICAgICAgICAnZGQnOiAn0LTQtdC90Yxf0LTQvdGPX9C00L3QtdC5JyxcbiAgICAgICAgICAgICdNTSc6ICfQvNC10YHRj9GGX9C80LXRgdGP0YbQsF/QvNC10YHRj9GG0LXQsicsXG4gICAgICAgICAgICAneXknOiAn0LPQvtC0X9Cz0L7QtNCwX9C70LXRgidcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQvNC40L3Rg9GC0LAnIDogJ9C80LjQvdGD0YLRgyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbL17Rj9C90LIvaSwgL17RhNC10LIvaSwgL17QvNCw0YAvaSwgL17QsNC/0YAvaSwgL17QvNCwW9C50Y9dL2ksIC9e0LjRjtC9L2ksIC9e0LjRjtC7L2ksIC9e0LDQstCzL2ksIC9e0YHQtdC9L2ksIC9e0L7QutGCL2ksIC9e0L3QvtGPL2ksIC9e0LTQtdC6L2ldO1xuXG4gICAgLy8gaHR0cDovL25ldy5ncmFtb3RhLnJ1L3NwcmF2a2EvcnVsZXMvMTM5LXByb3AgOiDCpyAxMDNcbiAgICAvLyDQodC+0LrRgNCw0YnQtdC90LjRjyDQvNC10YHRj9GG0LXQsjogaHR0cDovL25ldy5ncmFtb3RhLnJ1L3NwcmF2a2EvYnVyby9zZWFyY2gtYW5zd2VyP3M9MjQyNjM3XG4gICAgLy8gQ0xEUiBkYXRhOiAgICAgICAgICBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NsZHIvY2hhcnRzLzI4L3N1bW1hcnkvcnUuaHRtbCMxNzUzXG4gICAgdmFyIHJ1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgncnUnLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9GP0L3QstCw0YDRj1/RhNC10LLRgNCw0LvRj1/QvNCw0YDRgtCwX9Cw0L/RgNC10LvRj1/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCz0YPRgdGC0LBf0YHQtdC90YLRj9Cx0YDRj1/QvtC60YLRj9Cx0YDRj1/QvdC+0Y/QsdGA0Y9f0LTQtdC60LDQsdGA0Y8nLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMJy5zcGxpdCgnXycpXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDoge1xuICAgICAgICAgICAgLy8g0L/QviBDTERSINC40LzQtdC90L3QviBcItC40Y7Quy5cIiDQuCBcItC40Y7QvS5cIiwg0L3QviDQutCw0LrQvtC5INGB0LzRi9GB0Lsg0LzQtdC90Y/RgtGMINCx0YPQutCy0YMg0L3QsCDRgtC+0YfQutGDID9cbiAgICAgICAgICAgIGZvcm1hdDogJ9GP0L3Qsi5f0YTQtdCy0YAuX9C80LDRgC5f0LDQv9GALl/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCzLl/RgdC10L3Rgi5f0L7QutGCLl/QvdC+0Y/QsS5f0LTQtdC6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfRj9C90LIuX9GE0LXQstGALl/QvNCw0YDRgl/QsNC/0YAuX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouJy5zcGxpdCgnXycpXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzIDoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9Cy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNCwX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtCwX9GB0YPQsdCx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgZm9ybWF0OiAn0LLQvtGB0LrRgNC10YHQtdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00YNf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0YNf0YHRg9Cx0LHQvtGC0YMnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL1xcWyA/W9CS0LJdID8oPzrQv9GA0L7RiNC70YPRjnzRgdC70LXQtNGD0Y7RidGD0Y580Y3RgtGDKT8gP1xcXSA/ZGRkZC9cbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIC8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGPINGBINC/0LDQtNC10LbQsNC80LgsINC/0L4g0YLRgNC4INCx0YPQutCy0YssINC00LvRjyDQvdC10LrQvtGC0L7RgNGL0YUsINC/0L4gNCDQsdGD0LrQstGLLCDRgdC+0LrRgNCw0YnQtdC90LjRjyDRgSDRgtC+0YfQutC+0Lkg0Lgg0LHQtdC3INGC0L7Rh9C60LhcbiAgICAgICAgbW9udGhzUmVnZXg6IC9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXFwuP3zRhNC10LLRgNCw0Ltb0YzRj1180YTQtdCy0YA/XFwuP3zQvNCw0YDRgtCwP3zQvNCw0YBcXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXFwuP3zQvNCwW9C50Y9dfNC40Y7QvVvRjNGPXXzQuNGO0L1cXC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcXC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcXC4/fNGB0LXQvdGC0Y/QsdGAW9GM0Y9dfNGB0LXQvdGCP1xcLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglxcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cXC4/fNC00LXQutCw0LHRgFvRjNGPXXzQtNC10LpcXC4/KS9pLFxuXG4gICAgICAgIC8vINC60L7Qv9C40Y8g0L/RgNC10LTRi9C00YPRidC10LPQvlxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiAvXijRj9C90LLQsNGAW9GM0Y9dfNGP0L3QslxcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1xcLj980LzQsNGA0YLQsD980LzQsNGAXFwuP3zQsNC/0YDQtdC7W9GM0Y9dfNCw0L/RgFxcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XFwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XFwuP3zQsNCy0LPRg9GB0YLQsD980LDQstCzXFwuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cXC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcXC4/fNC90L7Rj9Cx0YBb0YzRj1180L3QvtGP0LE/XFwuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XFwuPykvaSxcblxuICAgICAgICAvLyDQv9C+0LvQvdGL0LUg0L3QsNC30LLQsNC90LjRjyDRgSDQv9Cw0LTQtdC20LDQvNC4XG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvXijRj9C90LLQsNGAW9GP0YxdfNGE0LXQstGA0LDQu1vRj9GMXXzQvNCw0YDRgtCwP3zQsNC/0YDQtdC7W9GP0YxdfNC80LBb0Y/QuV180LjRjtC9W9GP0YxdfNC40Y7Qu1vRj9GMXXzQsNCy0LPRg9GB0YLQsD980YHQtdC90YLRj9Cx0YBb0Y/RjF180L7QutGC0Y/QsdGAW9GP0YxdfNC90L7Rj9Cx0YBb0Y/RjF180LTQtdC60LDQsdGAW9GP0YxdKS9pLFxuXG4gICAgICAgIC8vINCS0YvRgNCw0LbQtdC90LjQtSwg0LrQvtGC0L7RgNC+0LUg0YHQvtC+0YLQstC10YHRgtCy0YPQtdGCINGC0L7Qu9GM0LrQviDRgdC+0LrRgNCw0YnRkdC90L3Ri9C8INGE0L7RgNC80LDQvFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvXijRj9C90LJcXC580YTQtdCy0YA/XFwufNC80LDRgFvRgi5dfNCw0L/RgFxcLnzQvNCwW9GP0LldfNC40Y7QvVvRjNGPLl180LjRjtC7W9GM0Y8uXXzQsNCy0LNcXC580YHQtdC90YI/XFwufNC+0LrRglxcLnzQvdC+0Y/QsT9cXC580LTQtdC6XFwuKS9pLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZINCzLicsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg0LMuLCBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkg0LMuLCBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0KHQtdCz0L7QtNC90Y8sINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9CX0LDQstGC0YDQsCwg0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JLRh9C10YDQsCwg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy53ZWVrKCkgIT09IHRoaXMud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQtdC00YPRjtGJ0LXQtV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0YHQu9C10LTRg9GO0YnQuNC5XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDRgdC70LXQtNGD0Y7RidGD0Y5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF5KCkgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CS0L5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JJdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy53ZWVrKCkgIT09IHRoaXMud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC/0YDQvtGI0LvQvtC1XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQv9GA0L7RiNC70YvQuV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9GD0Y5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF5KCkgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CS0L5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JJdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9GH0LXRgNC10LcgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDQvdCw0LfQsNC0JyxcbiAgICAgICAgICAgIHMgOiAn0L3QtdGB0LrQvtC70YzQutC+INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzcyA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGggOiAn0YfQsNGBJyxcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiAn0LTQtdC90YwnLFxuICAgICAgICAgICAgZGQgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTSA6ICfQvNC10YHRj9GGJyxcbiAgICAgICAgICAgIE1NIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHkgOiAn0LPQvtC0JyxcbiAgICAgICAgICAgIHl5IDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0L3QvtGH0Lh80YPRgtGA0LB80LTQvdGPfNCy0LXRh9C10YDQsC9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o0LTQvdGPfNCy0LXRh9C10YDQsCkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9C4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRg9GC0YDQsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LTQvdGPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQstC10YfQtdGA0LAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC5fNCz0L580Y8pLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC5JztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQvic7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGPJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBydTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ru.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/sd.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/sd.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'جنوري',\n        'فيبروري',\n        'مارچ',\n        'اپريل',\n        'مئي',\n        'جون',\n        'جولاءِ',\n        'آگسٽ',\n        'سيپٽمبر',\n        'آڪٽوبر',\n        'نومبر',\n        'ڊسمبر'\n    ];\n    var days = [\n        'آچر',\n        'سومر',\n        'اڱارو',\n        'اربع',\n        'خميس',\n        'جمع',\n        'ڇنڇر'\n    ];\n\n    var sd = moment.defineLocale('sd', {\n        months : months,\n        monthsShort : months,\n        weekdays : days,\n        weekdaysShort : days,\n        weekdaysMin : days,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd، D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /صبح|شام/,\n        isPM : function (input) {\n            return 'شام' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar : {\n            sameDay : '[اڄ] LT',\n            nextDay : '[سڀاڻي] LT',\n            nextWeek : 'dddd [اڳين هفتي تي] LT',\n            lastDay : '[ڪالهه] LT',\n            lastWeek : '[گزريل هفتي] dddd [تي] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s پوء',\n            past : '%s اڳ',\n            s : 'چند سيڪنڊ',\n            ss : '%d سيڪنڊ',\n            m : 'هڪ منٽ',\n            mm : '%d منٽ',\n            h : 'هڪ ڪلاڪ',\n            hh : '%d ڪلاڪ',\n            d : 'هڪ ڏينهن',\n            dd : '%d ڏينهن',\n            M : 'هڪ مهينو',\n            MM : '%d مهينا',\n            y : 'هڪ سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sd;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzPzY3ODQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAn2KzZhtmI2LHZiicsXG4gICAgICAgICfZgdmK2KjYsdmI2LHZiicsXG4gICAgICAgICfZhdin2LHahicsXG4gICAgICAgICfYp9m+2LHZitmEJyxcbiAgICAgICAgJ9mF2KbZiicsXG4gICAgICAgICfYrNmI2YYnLFxuICAgICAgICAn2KzZiNmE2KfYodmQJyxcbiAgICAgICAgJ9ii2q/Ys9m9JyxcbiAgICAgICAgJ9iz2YrZvtm92YXYqNixJyxcbiAgICAgICAgJ9ii2qrZvdmI2KjYsScsXG4gICAgICAgICfZhtmI2YXYqNixJyxcbiAgICAgICAgJ9qK2LPZhdio2LEnXG4gICAgXTtcbiAgICB2YXIgZGF5cyA9IFtcbiAgICAgICAgJ9ii2obYsScsXG4gICAgICAgICfYs9mI2YXYsScsXG4gICAgICAgICfYp9qx2KfYsdmIJyxcbiAgICAgICAgJ9in2LHYqNi5JyxcbiAgICAgICAgJ9iu2YXZitizJyxcbiAgICAgICAgJ9is2YXYuScsXG4gICAgICAgICfah9mG2ofYsSdcbiAgICBdO1xuXG4gICAgdmFyIHNkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2QnLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzTWluIDogZGF5cyxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGTYjCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i12KjYrXzYtNin2YUvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i12KjYrSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhSc7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb2KfahF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb2LPagNin2rvZil0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb2Kfas9mK2YYg2YfZgdiq2Yog2KrZil0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb2qrYp9mE2YfZh10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9qv2LLYsdmK2YQg2YfZgdiq2YpdIGRkZGQgW9iq2YpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDZvtmI2KEnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDYp9qzJyxcbiAgICAgICAgICAgIHMgOiAn2obZhtivINiz2YraqtmG2oonLFxuICAgICAgICAgICAgc3MgOiAnJWQg2LPZitqq2YbaiicsXG4gICAgICAgICAgICBtIDogJ9mH2qog2YXZhtm9JyxcbiAgICAgICAgICAgIG1tIDogJyVkINmF2YbZvScsXG4gICAgICAgICAgICBoIDogJ9mH2qog2qrZhNin2qonLFxuICAgICAgICAgICAgaGggOiAnJWQg2qrZhNin2qonLFxuICAgICAgICAgICAgZCA6ICfZh9qqINqP2YrZhtmH2YYnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2o/ZitmG2YfZhicsXG4gICAgICAgICAgICBNIDogJ9mH2qog2YXZh9mK2YbZiCcsXG4gICAgICAgICAgICBNTSA6ICclZCDZhdmH2YrZhtinJyxcbiAgICAgICAgICAgIHkgOiAn2YfaqiDYs9in2YQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPYp9mEJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNkO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/sd.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/se.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/se.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var se = moment.defineLocale('se', {\n        months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n        monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n        weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n        weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'MMMM D. [b.] YYYY',\n            LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s geažes',\n            past : 'maŋit %s',\n            s : 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m : 'okta minuhta',\n            mm : '%d minuhtat',\n            h : 'okta diimmu',\n            hh : '%d diimmut',\n            d : 'okta beaivi',\n            dd : '%d beaivvit',\n            M : 'okta mánnu',\n            MM : '%d mánut',\n            y : 'okta jahki',\n            yy : '%d jagit'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return se;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzP2ZmZmYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc2UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzZScsIHtcbiAgICAgICAgbW9udGhzIDogJ2/EkcSRYWphZ2Vtw6FubnVfZ3VvdnZhbcOhbm51X25qdWvEjWFtw6FubnVfY3VvxYtvbcOhbm51X21pZXNzZW3DoW5udV9nZWFzc2Vtw6FubnVfc3VvaWRuZW3DoW5udV9ib3JnZW3DoW5udV/EjWFrxI1hbcOhbm51X2dvbGdnb3Rtw6FubnVfc2vDoWJtYW3DoW5udV9qdW92bGFtw6FubnUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2/EkcSRal9ndW92X25qdWtfY3VvX21pZXNfZ2Vhc19zdW9pX2JvcmdfxI1ha8SNX2dvbGdfc2vDoWJfanVvdicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc290bmFiZWFpdmlfdnVvc3PDoXJnYV9tYcWLxYtlYsOhcmdhX2dhc2thdmFoa2t1X2R1b3Jhc3RhdF9iZWFyamFkYXRfbMOhdnZhcmRhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzb3RuX3Z1b3NfbWHFi19nYXNrX2R1b3JfYmVhcl9sw6F2Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdzX3ZfbV9nX2RfYl9MJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnTU1NTSBELiBbYi5dIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ01NTU0gRC4gW2IuXSBZWVlZIFt0aS5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tvdG5lIHRpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2lodHRpbiB0aV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt0aV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpa3RlIHRpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tvdmRkaXRdIGRkZGQgW3RpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBnZWHFvmVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnbWHFi2l0ICVzJyxcbiAgICAgICAgICAgIHMgOiAnbW9hZGRlIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBtIDogJ29rdGEgbWludWh0YScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51aHRhdCcsXG4gICAgICAgICAgICBoIDogJ29rdGEgZGlpbW11JyxcbiAgICAgICAgICAgIGhoIDogJyVkIGRpaW1tdXQnLFxuICAgICAgICAgICAgZCA6ICdva3RhIGJlYWl2aScsXG4gICAgICAgICAgICBkZCA6ICclZCBiZWFpdnZpdCcsXG4gICAgICAgICAgICBNIDogJ29rdGEgbcOhbm51JyxcbiAgICAgICAgICAgIE1NIDogJyVkIG3DoW51dCcsXG4gICAgICAgICAgICB5IDogJ29rdGEgamFoa2knLFxuICAgICAgICAgICAgeXkgOiAnJWQgamFnaXQnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2U7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/se.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/si.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/si.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n        monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n        weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n        weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'a h:mm',\n            LTS : 'a h:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY MMMM D',\n            LLL : 'YYYY MMMM D, a h:mm',\n            LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n        },\n        calendar : {\n            sameDay : '[අද] LT[ට]',\n            nextDay : '[හෙට] LT[ට]',\n            nextWeek : 'dddd LT[ට]',\n            lastDay : '[ඊයේ] LT[ට]',\n            lastWeek : '[පසුගිය] dddd LT[ට]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%sකින්',\n            past : '%sකට පෙර',\n            s : 'තත්පර කිහිපය',\n            ss : 'තත්පර %d',\n            m : 'මිනිත්තුව',\n            mm : 'මිනිත්තු %d',\n            h : 'පැය',\n            hh : 'පැය %d',\n            d : 'දිනය',\n            dd : 'දින %d',\n            M : 'මාසය',\n            MM : 'මාස %d',\n            y : 'වසර',\n            yy : 'වසර %d'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal : function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM : function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        }\n    });\n\n    return si;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzP2VkYTUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICAvKmpzaGludCAtVzEwMCovXG4gICAgdmFyIHNpID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2knLCB7XG4gICAgICAgIG1vbnRocyA6ICfgtqLgtrHgt4Dgt4/gtrvgt5Jf4La04LeZ4La24La74LeA4LeP4La74LeSX+C2uOC3j+C2u+C3iuC2reC3lF/gtoXgtrTgt4rigI3gtrvgt5rgtr3gt4pf4La44LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4Led4LeD4LeK4Lat4LeUX+C3g+C3kOC2tOC3iuC2reC3kOC2uOC3iuC2tuC2u+C3il/gtpTgtprgt4rgtq3gt53gtrbgtrvgt4pf4Lax4Lec4LeA4LeQ4La44LeK4La24La74LeKX+C2r+C3meC3g+C3kOC2uOC3iuC2tuC2u+C3iicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4Lai4LaxX+C2tOC3meC2tl/gtrjgt4/gtrvgt4pf4LaF4La04LeKX+C2uOC3kOC2uuC3kl/gtqLgt5bgtrHgt5Jf4Lai4LeW4La94LeSX+C2heC2nOC3nV/gt4Pgt5DgtrTgt4pf4LaU4Laa4LeKX+C2seC3nOC3gOC3kF/gtq/gt5ngt4Pgt5AnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+C2ieC2u+C3kuC2r+C3j1/gt4PgtrPgt5Tgtq/gt49f4LaF4Laf4LeE4La74LeU4LeA4LeP4Lav4LePX+C2tuC2r+C3j+C2r+C3j1/gtrbgt4rigI3gtrvgt4Tgt4Pgt4rgtrTgtq3gt5LgtrHgt4rgtq/gt49f4LeD4LeS4Laa4LeU4La74LeP4Lav4LePX+C3g+C3meC2seC3g+C3lOC2u+C3j+C2r+C3jycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgtongtrvgt5Jf4LeD4Laz4LeUX+C2heC2n1/gtrbgtq/gt49f4La24LeK4oCN4La74LeEX+C3g+C3kuC2muC3lF/gt4Pgt5ngtrEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+C2iV/gt4Nf4LaFX+C2tl/gtrbgt4rigI3gtrtf4LeD4LeSX+C3g+C3mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdhIGg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ2EgaDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWSBNTU1NIEQnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVkgTU1NTSBELCBhIGg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZIE1NTU0gRCBb4LeA4LeQ4Lax4LeSXSBkZGRkLCBhIGg6bW06c3MnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4LaF4LavXSBMVFvgtqddJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+C3hOC3meC2p10gTFRb4LanXScsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIExUW+C2p10nLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4LaK4La64LeaXSBMVFvgtqddJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgtrTgt4Pgt5Tgtpzgt5LgtrpdIGRkZGQgTFRb4LanXScsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXPgtprgt5LgtrHgt4onLFxuICAgICAgICAgICAgcGFzdCA6ICclc+C2muC2pyDgtrTgt5ngtrsnLFxuICAgICAgICAgICAgcyA6ICfgtq3gtq3gt4rgtrTgtrsg4Laa4LeS4LeE4LeS4La04La6JyxcbiAgICAgICAgICAgIHNzIDogJ+C2reC2reC3iuC2tOC2uyAlZCcsXG4gICAgICAgICAgICBtIDogJ+C2uOC3kuC2seC3kuC2reC3iuC2reC3lOC3gCcsXG4gICAgICAgICAgICBtbSA6ICfgtrjgt5LgtrHgt5Lgtq3gt4rgtq3gt5QgJWQnLFxuICAgICAgICAgICAgaCA6ICfgtrTgt5DgtronLFxuICAgICAgICAgICAgaGggOiAn4La04LeQ4La6ICVkJyxcbiAgICAgICAgICAgIGQgOiAn4Lav4LeS4Lax4La6JyxcbiAgICAgICAgICAgIGRkIDogJ+C2r+C3kuC2sSAlZCcsXG4gICAgICAgICAgICBNIDogJ+C2uOC3j+C3g+C2uicsXG4gICAgICAgICAgICBNTSA6ICfgtrjgt4/gt4MgJWQnLFxuICAgICAgICAgICAgeSA6ICfgt4Dgt4PgtrsnLFxuICAgICAgICAgICAgeXkgOiAn4LeA4LeD4La7ICVkJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0g4LeA4LeQ4Lax4LeSLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIOC3gOC3kOC2seC3kic7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2UgOiAv4La04LeZ4La7IOC3gOC2u+C3lHzgtrTgt4Pgt4og4LeA4La74LeUfOC2tOC3mS7gt4B84La0LuC3gC4vLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfgtrQu4LeALicgfHwgaW5wdXQgPT09ICfgtrTgt4Pgt4og4LeA4La74LeUJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn4La0LuC3gC4nIDogJ+C2tOC3g+C3iiDgt4Dgtrvgt5QnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfgtrTgt5ku4LeALicgOiAn4La04LeZ4La7IOC3gOC2u+C3lCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzaTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/si.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/sk.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/sk.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return (n > 1) && (n < 5);\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':  // a few seconds / in a few seconds / a few seconds ago\n                return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n                break;\n            case 'm':  // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n                break;\n            case 'h':  // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n                break;\n            case 'd':  // a day / in a day / a day ago\n                return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n                break;\n            case 'M':  // a month / in a month / a month ago\n                return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n                break;\n            case 'y':  // a year / in a year / a year ago\n                return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n                break;\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months : months,\n        monthsShort : monthsShort,\n        weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat : {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : 'pred %s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sk;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzPzdiZTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gJ2phbnXDoXJfZmVicnXDoXJfbWFyZWNfYXByw61sX23DoWpfasO6bl9qw7psX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2phbl9mZWJfbWFyX2Fwcl9tw6FqX2rDum5fasO6bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIHJldHVybiAobiA+IDEpICYmIChuIDwgNSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOiAgLy8gYSBmZXcgc2Vjb25kcyAvIGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAncMOhciBzZWvDum5kJyA6ICdww6FyIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6IC8vIDkgc2Vjb25kcyAvIGluIDkgc2Vjb25kcyAvIDkgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla8O6bmQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Nla3VuZGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbSc6ICAvLyBhIG1pbnV0ZSAvIGluIGEgbWludXRlIC8gYSBtaW51dGUgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWluw7p0YScgOiAoaXNGdXR1cmUgPyAnbWluw7p0dScgOiAnbWluw7p0b3UnKTtcbiAgICAgICAgICAgIGNhc2UgJ21tJzogLy8gOSBtaW51dGVzIC8gaW4gOSBtaW51dGVzIC8gOSBtaW51dGVzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWluw7p0eScgOiAnbWluw7p0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtaW7DunRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2gnOiAgLy8gYW4gaG91ciAvIGluIGFuIGhvdXIgLyBhbiBob3VyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2hvZGluYScgOiAoaXNGdXR1cmUgPyAnaG9kaW51JyA6ICdob2Rpbm91Jyk7XG4gICAgICAgICAgICBjYXNlICdoaCc6IC8vIDkgaG91cnMgLyBpbiA5IGhvdXJzIC8gOSBob3VycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2hvZGlueScgOiAnaG9kw61uJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdob2RpbmFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZCc6ICAvLyBhIGRheSAvIGluIGEgZGF5IC8gYSBkYXkgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdkZcWIJyA6ICdkxYhvbSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6IC8vIDkgZGF5cyAvIGluIDkgZGF5cyAvIDkgZGF5cyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2RuaScgOiAnZG7DrScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZMWIYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNJzogIC8vIGEgbW9udGggLyBpbiBhIG1vbnRoIC8gYSBtb250aCBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ21lc2lhYycgOiAnbWVzaWFjb20nO1xuICAgICAgICAgICAgY2FzZSAnTU0nOiAvLyA5IG1vbnRocyAvIGluIDkgbW9udGhzIC8gOSBtb250aHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtZXNpYWNlJyA6ICdtZXNpYWNvdicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbWVzaWFjbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3knOiAgLy8gYSB5ZWFyIC8gaW4gYSB5ZWFyIC8gYSB5ZWFyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAncm9rJyA6ICdyb2tvbSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6IC8vIDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Jva3knIDogJ3Jva292Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdyb2ttaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNrID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2snLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHNTaG9ydCxcbiAgICAgICAgd2Vla2RheXMgOiAnbmVkZcS+YV9wb25kZWxva191dG9yb2tfc3RyZWRhX8WhdHZydG9rX3BpYXRva19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnbmVfcG9fdXRfc3RfxaF0X3BpX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICduZV9wb191dF9zdF/FoXRfcGlfc28nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RuZXMgb10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t6YWp0cmEgb10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBuZWRlxL51IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Ygc3RyZWR1IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdm8gxaF0dnJ0b2sgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHBpYXRvayBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Ygc29ib3R1IG9dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1t2xI1lcmEgb10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBuZWRlxL51IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw7ogc3RyZWR1IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw7ogc29ib3R1IG9dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdwcmVkICVzJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNrO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/sk.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/sl.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/sl.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danes ob] LT',\n            nextDay  : '[jutri ob] LT',\n\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay  : '[včeraj ob] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'čez %s',\n            past   : 'pred %s',\n            s      : processRelativeTime,\n            ss     : processRelativeTime,\n            m      : processRelativeTime,\n            mm     : processRelativeTime,\n            h      : processRelativeTime,\n            hh     : processRelativeTime,\n            d      : processRelativeTime,\n            dd     : processRelativeTime,\n            M      : processRelativeTime,\n            MM     : processRelativeTime,\n            y      : processRelativeTime,\n            yy     : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return sl;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzPzgxNTUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbmVrYWogc2VrdW5kJyA6ICduZWthaiBzZWt1bmRhbWknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggPyAnc2VrdW5kbycgOiAnc2VrdW5kaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnc2VrdW5kaScgOiAnc2VrdW5kYWgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWt1bmRlJyA6ICdzZWt1bmRhaCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZW5hIG1pbnV0YScgOiAnZW5vIG1pbnV0byc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDogJ21pbnV0byc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXRpJyA6ICdtaW51dGFtYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21pbnV0ZScgOiAnbWludXRhbWknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21pbnV0JyA6ICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdlbmEgdXJhJyA6ICdlbm8gdXJvJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ3VyYScgOiAndXJvJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cmknIDogJ3VyYW1hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAndXJlJyA6ICd1cmFtaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAndXInIDogJ3VyYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VuIGRhbicgOiAnZW5pbSBkbmVtJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RhbicgOiAnZG5lbSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZG5pJyA6ICdkbmV2b21hJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkbmknIDogJ2RuZXZpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VuIG1lc2VjJyA6ICdlbmltIG1lc2VjZW0nO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWMnIDogJ21lc2VjZW0nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjYScgOiAnbWVzZWNlbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2UnIDogJ21lc2VjaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNldicgOiAnbWVzZWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VubyBsZXRvJyA6ICdlbmltIGxldG9tJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldG8nIDogJ2xldG9tJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXRpJyA6ICdsZXRvbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXRhJyA6ICdsZXRpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXQnIDogJ2xldGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2wnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnbmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX8SNZXRydGVrX3BldGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICduZWQuX3Bvbi5fdG9yLl9zcmUuX8SNZXQuX3BldC5fc29iLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnbmVfcG9fdG9fc3JfxI1lX3BlX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5ICA6ICdbZGFuZXMgb2JdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgIDogJ1tqdXRyaSBvYl0gTFQnLFxuXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW25lZGVsam9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBbc3JlZG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBbc29ib3RvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gZGRkZCBbb2JdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW3bEjWVyYWogb2JdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuam9dIFtuZWRlbGpvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbc3JlZG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuam9dIFtzb2JvdG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuamldIGRkZGQgW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfEjWV6ICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICdwcmVkICVzJyxcbiAgICAgICAgICAgIHMgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzcyAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5ICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNsO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/sl.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/sq.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/sq.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var sq = moment.defineLocale('sq', {\n        months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n        monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n        weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact : true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Sot në] LT',\n            nextDay : '[Nesër në] LT',\n            nextWeek : 'dddd [në] LT',\n            lastDay : '[Dje në] LT',\n            lastWeek : 'dddd [e kaluar në] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'në %s',\n            past : '%s më parë',\n            s : 'disa sekonda',\n            ss : '%d sekonda',\n            m : 'një minutë',\n            mm : '%d minuta',\n            h : 'një orë',\n            hh : '%d orë',\n            d : 'një ditë',\n            dd : '%d ditë',\n            M : 'një muaj',\n            MM : '%d muaj',\n            y : 'një vit',\n            yy : '%d vite'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sq;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzP2M4ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzcScsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbmFyX1Noa3VydF9NYXJzX1ByaWxsX01hal9RZXJzaG9yX0tvcnJpa19HdXNodF9TaHRhdG9yX1RldG9yX07Dq250b3JfRGhqZXRvcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX1Noa19NYXJfUHJpX01hal9RZXJfS29yX0d1c19TaHRfVGV0X07Dq25fRGhqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdFIERpZWxfRSBIw6tuw6tfRSBNYXJ0w6tfRSBNw6tya3Vyw6tfRSBFbmp0ZV9FIFByZW10ZV9FIFNodHVuw6snLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRGllX0jDq25fTWFyX03Dq3JfRW5qX1ByZV9TaHQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0RfSF9NYV9Nw6tfRV9QX1NoJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvUER8TUQvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMCkgPT09ICdNJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VycyA8IDEyID8gJ1BEJyA6ICdNRCc7XG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tTb3QgbsOrXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tOZXPDq3IgbsOrXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtuw6tdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0RqZSBuw6tdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2Uga2FsdWFyIG7Dq10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ27DqyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIG3DqyBwYXLDqycsXG4gICAgICAgICAgICBzIDogJ2Rpc2Egc2Vrb25kYScsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWtvbmRhJyxcbiAgICAgICAgICAgIG0gOiAnbmrDqyBtaW51dMOrJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0YScsXG4gICAgICAgICAgICBoIDogJ25qw6sgb3LDqycsXG4gICAgICAgICAgICBoaCA6ICclZCBvcsOrJyxcbiAgICAgICAgICAgIGQgOiAnbmrDqyBkaXTDqycsXG4gICAgICAgICAgICBkZCA6ICclZCBkaXTDqycsXG4gICAgICAgICAgICBNIDogJ25qw6sgbXVhaicsXG4gICAgICAgICAgICBNTSA6ICclZCBtdWFqJyxcbiAgICAgICAgICAgIHkgOiAnbmrDqyB2aXQnLFxuICAgICAgICAgICAgeXkgOiAnJWQgdml0ZSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzcTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/sq.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/sr-cyrl.js":
/*!***********************************************!*\
  !*** ./node_modules/moment/locale/sr-cyrl.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једне минуте'],\n            mm: ['минут', 'минуте', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            dd: ['дан', 'дана', 'дана'],\n            MM: ['месец', 'месеца', 'месеци'],\n            yy: ['година', 'године', 'година']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay  : '[јуче у] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'за %s',\n            past   : 'пре %s',\n            s      : 'неколико секунди',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'дан',\n            dd     : translator.translate,\n            M      : 'месец',\n            MM     : translator.translate,\n            y      : 'годину',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return srCyrl;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci1jeXJsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qcz8xM2U5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHRyYW5zbGF0b3IgPSB7XG4gICAgICAgIHdvcmRzOiB7IC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWyfRgdC10LrRg9C90LTQsCcsICfRgdC10LrRg9C90LTQtScsICfRgdC10LrRg9C90LTQuCddLFxuICAgICAgICAgICAgbTogWyfRmNC10LTQsNC9INC80LjQvdGD0YInLCAn0ZjQtdC00L3QtSDQvNC40L3Rg9GC0LUnXSxcbiAgICAgICAgICAgIG1tOiBbJ9C80LjQvdGD0YInLCAn0LzQuNC90YPRgtC1JywgJ9C80LjQvdGD0YLQsCddLFxuICAgICAgICAgICAgaDogWyfRmNC10LTQsNC9INGB0LDRgicsICfRmNC10LTQvdC+0LMg0YHQsNGC0LAnXSxcbiAgICAgICAgICAgIGhoOiBbJ9GB0LDRgicsICfRgdCw0YLQsCcsICfRgdCw0YLQuCddLFxuICAgICAgICAgICAgZGQ6IFsn0LTQsNC9JywgJ9C00LDQvdCwJywgJ9C00LDQvdCwJ10sXG4gICAgICAgICAgICBNTTogWyfQvNC10YHQtdGGJywgJ9C80LXRgdC10YbQsCcsICfQvNC10YHQtdGG0LgnXSxcbiAgICAgICAgICAgIHl5OiBbJ9Cz0L7QtNC40L3QsCcsICfQs9C+0LTQuNC90LUnLCAn0LPQvtC00LjQvdCwJ11cbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciA9PT0gMSA/IHdvcmRLZXlbMF0gOiAobnVtYmVyID49IDIgJiYgbnVtYmVyIDw9IDQgPyB3b3JkS2V5WzFdIDogd29yZEtleVsyXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgICAgICB2YXIgd29yZEtleSA9IHRyYW5zbGF0b3Iud29yZHNba2V5XTtcbiAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHZhciBzckN5cmwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzci1jeXJsJywge1xuICAgICAgICBtb250aHM6ICfRmNCw0L3Rg9Cw0YBf0YTQtdCx0YDRg9Cw0YBf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LHQsNGAX9C+0LrRgtC+0LHQsNGAX9C90L7QstC10LzQsdCw0YBf0LTQtdGG0LXQvNCx0LDRgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfRmNCw0L0uX9GE0LXQsS5f0LzQsNGALl/QsNC/0YAuX9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQsy5f0YHQtdC/Ll/QvtC60YIuX9C90L7Qsi5f0LTQtdGGLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfQvdC10LTQtdGZ0LBf0L/QvtC90LXQtNC10ZnQsNC6X9GD0YLQvtGA0LDQul/RgdGA0LXQtNCwX9GH0LXRgtCy0YDRgtCw0Lpf0L/QtdGC0LDQul/RgdGD0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQvdC10LQuX9C/0L7QvS5f0YPRgtC+Ll/RgdGA0LUuX9GH0LXRgi5f0L/QtdGCLl/RgdGD0LEuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LVf0L/Qvl/Rg9GCX9GB0YBf0YfQtV/Qv9C1X9GB0YMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQtNCw0L3QsNGBINGDXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9GB0YPRgtGA0LAg0YNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBb0L3QtdC00LXRmdGDXSBb0YNdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvRgdGA0LXQtNGDXSBb0YNdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvRgdGD0LHQvtGC0YNdIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gZGRkZCBb0YNdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW9GY0YPRh9C1INGDXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFdlZWtEYXlzID0gW1xuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9C90LXQtNC10ZnQtV0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvQv9C+0L3QtdC00LXRmdC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0YPRgtC+0YDQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvRgdGA0LXQtNC1XSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9GH0LXRgtCy0YDRgtC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0L/QtdGC0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C1XSBb0YHRg9Cx0L7RgtC1XSBb0YNdIExUJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn0LfQsCAlcycsXG4gICAgICAgICAgICBwYXN0ICAgOiAn0L/RgNC1ICVzJyxcbiAgICAgICAgICAgIHMgICAgICA6ICfQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbSAgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkICAgICAgOiAn0LTQsNC9JyxcbiAgICAgICAgICAgIGRkICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTSAgICAgIDogJ9C80LXRgdC10YYnLFxuICAgICAgICAgICAgTU0gICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5ICAgICAgOiAn0LPQvtC00LjQvdGDJyxcbiAgICAgICAgICAgIHl5ICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3JDeXJsO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/sr-cyrl.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/sr.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/sr.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jedne minute'],\n            mm: ['minut', 'minute', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            yy: ['godina', 'godine', 'godina']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[juče u] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'pre %s',\n            s      : 'nekoliko sekundi',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'dan',\n            dd     : translator.translate,\n            M      : 'mesec',\n            MM     : translator.translate,\n            y      : 'godinu',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return sr;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLmpzP2NmMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHsgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXNcbiAgICAgICAgICAgIHNzOiBbJ3Nla3VuZGEnLCAnc2VrdW5kZScsICdzZWt1bmRpJ10sXG4gICAgICAgICAgICBtOiBbJ2plZGFuIG1pbnV0JywgJ2plZG5lIG1pbnV0ZSddLFxuICAgICAgICAgICAgbW06IFsnbWludXQnLCAnbWludXRlJywgJ21pbnV0YSddLFxuICAgICAgICAgICAgaDogWydqZWRhbiBzYXQnLCAnamVkbm9nIHNhdGEnXSxcbiAgICAgICAgICAgIGhoOiBbJ3NhdCcsICdzYXRhJywgJ3NhdGknXSxcbiAgICAgICAgICAgIGRkOiBbJ2RhbicsICdkYW5hJywgJ2RhbmEnXSxcbiAgICAgICAgICAgIE1NOiBbJ21lc2VjJywgJ21lc2VjYScsICdtZXNlY2knXSxcbiAgICAgICAgICAgIHl5OiBbJ2dvZGluYScsICdnb2RpbmUnLCAnZ29kaW5hJ11cbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciA9PT0gMSA/IHdvcmRLZXlbMF0gOiAobnVtYmVyID49IDIgJiYgbnVtYmVyIDw9IDQgPyB3b3JkS2V5WzFdIDogd29yZEtleVsyXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgICAgICB2YXIgd29yZEtleSA9IHRyYW5zbGF0b3Iud29yZHNba2V5XTtcbiAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHZhciBzciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NyJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRlbGphX3BvbmVkZWxqYWtfdXRvcmFrX3NyZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdXRvLl9zcmUuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3N1dHJhIHVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRlbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JlZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW2p1xI1lIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0V2Vla0RheXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW25lZGVsamVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwb25lZGVsamthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbdXRvcmthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtzcmVkZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BldGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCdcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0V2Vla0RheXNbdGhpcy5kYXkoKV07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICdwcmUgJXMnLFxuICAgICAgICAgICAgcyAgICAgIDogJ25la29saWtvIHNla3VuZGknLFxuICAgICAgICAgICAgc3MgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtICAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaCAgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgICAgICA6ICdkYW4nLFxuICAgICAgICAgICAgZGQgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNICAgICAgOiAnbWVzZWMnLFxuICAgICAgICAgICAgTU0gICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5ICAgICAgOiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5ICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3I7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/sr.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ss.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ss.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var ss = moment.defineLocale('ss', {\n        months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n        monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n        weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Namuhla nga] LT',\n            nextDay : '[Kusasa nga] LT',\n            nextWeek : 'dddd [nga] LT',\n            lastDay : '[Itolo nga] LT',\n            lastWeek : 'dddd [leliphelile] [nga] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'nga %s',\n            past : 'wenteka nga %s',\n            s : 'emizuzwana lomcane',\n            ss : '%d mzuzwana',\n            m : 'umzuzu',\n            mm : '%d emizuzu',\n            h : 'lihora',\n            hh : '%d emahora',\n            d : 'lilanga',\n            dd : '%d emalanga',\n            M : 'inyanga',\n            MM : '%d tinyanga',\n            y : 'umnyaka',\n            yy : '%d iminyaka'\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : '%d',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ss;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzPzUyYmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3MgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzcycsIHtcbiAgICAgICAgbW9udGhzIDogXCJCaGltYmlkdndhbmVfSW5kbG92YW5hX0luZGxvdidsZW5raHVsdV9NYWJhc2FfSW5raHdla2h3ZXRpX0luaGxhYmFfS2hvbHdhbmVfSW5nY2lfSW55b25pX0ltcGhhbGFfTHdldGlfSW5nb25nb25pXCIuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnQmhpX0luYV9JbnVfTWFiX0lua19JbmhfS2hvX0lnY19JbnlfSW1wX0x3ZV9JZ28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0xpc29udGZvX1Vtc29tYnVsdWtvX0xlc2liaWxpX0xlc2l0c2F0ZnVfTGVzaW5lX0xlc2lobGFudV9VbWdjaWJlbG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnTGlzX1VtYl9Mc2JfTGVzX0xzaV9Mc2hfVW1nJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdMaV9Vc19MYl9MdF9Mc19MaF9VZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tOYW11aGxhIG5nYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbS3VzYXNhIG5nYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbbmdhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tJdG9sbyBuZ2FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xlbGlwaGVsaWxlXSBbbmdhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnbmdhICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnd2VudGVrYSBuZ2EgJXMnLFxuICAgICAgICAgICAgcyA6ICdlbWl6dXp3YW5hIGxvbWNhbmUnLFxuICAgICAgICAgICAgc3MgOiAnJWQgbXp1endhbmEnLFxuICAgICAgICAgICAgbSA6ICd1bXp1enUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgZW1penV6dScsXG4gICAgICAgICAgICBoIDogJ2xpaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBlbWFob3JhJyxcbiAgICAgICAgICAgIGQgOiAnbGlsYW5nYScsXG4gICAgICAgICAgICBkZCA6ICclZCBlbWFsYW5nYScsXG4gICAgICAgICAgICBNIDogJ2lueWFuZ2EnLFxuICAgICAgICAgICAgTU0gOiAnJWQgdGlueWFuZ2EnLFxuICAgICAgICAgICAgeSA6ICd1bW55YWthJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGltaW55YWthJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZWt1c2VuaXxlbWluaXxlbnRzYW1iYW1hfGVidXN1a3UvLFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VrdXNlbmknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbWluaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VudHNhbWJhbWEnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VidXN1a3UnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAnZWt1c2VuaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdlbWluaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnZW50c2FtYmFtYScgfHwgbWVyaWRpZW0gPT09ICdlYnVzdWt1Jykge1xuICAgICAgICAgICAgICAgIGlmIChob3VyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsIDogJyVkJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3M7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ss.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/sv.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/sv.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var sv = moment.defineLocale('sv', {\n        months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [kl.] HH:mm',\n            LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : 'för %s sedan',\n            s : 'några sekunder',\n            ss : '%d sekunder',\n            m : 'en minut',\n            mm : '%d minuter',\n            h : 'en timme',\n            hh : '%d timmar',\n            d : 'en dag',\n            dd : '%d dagar',\n            M : 'en månad',\n            MM : '%d månader',\n            y : 'ett år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'e' :\n                (b === 1) ? 'a' :\n                (b === 2) ? 'a' :\n                (b === 3) ? 'e' : 'e';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sv;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzPzVmYmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3YgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdicsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcmlfZmVicnVhcmlfbWFyc19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdGlfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzw7ZuZGFnX23DpW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7ZyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3PDtm5fbcOlbl90aXNfb25zX3Rvcl9mcmVfbMO2cicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc8O2X23DpV90aV9vbl90b19mcl9sw7YnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbCA6ICdEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkIEQgTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJZGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0ltb3Jnb25dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSWfDpXJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW1DDpV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tJXSBkZGRkW3NdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnZsO2ciAlcyBzZWRhbicsXG4gICAgICAgICAgICBzIDogJ27DpWdyYSBzZWt1bmRlcicsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtIDogJ2VuIG1pbnV0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXInLFxuICAgICAgICAgICAgaCA6ICdlbiB0aW1tZScsXG4gICAgICAgICAgICBoaCA6ICclZCB0aW1tYXInLFxuICAgICAgICAgICAgZCA6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgTSA6ICdlbiBtw6VuYWQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOlbmFkZXInLFxuICAgICAgICAgICAgeSA6ICdldHQgw6VyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMOlcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGV8YSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICdlJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ2EnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnYScgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdlJyA6ICdlJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN2O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/sv.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/sw.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/sw.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var sw = moment.defineLocale('sw', {\n        months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n        weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[leo saa] LT',\n            nextDay : '[kesho saa] LT',\n            nextWeek : '[wiki ijayo] dddd [saat] LT',\n            lastDay : '[jana] LT',\n            lastWeek : '[wiki iliyopita] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s baadaye',\n            past : 'tokea %s',\n            s : 'hivi punde',\n            ss : 'sekunde %d',\n            m : 'dakika moja',\n            mm : 'dakika %d',\n            h : 'saa limoja',\n            hh : 'masaa %d',\n            d : 'siku moja',\n            dd : 'masiku %d',\n            M : 'mwezi mmoja',\n            MM : 'miezi %d',\n            y : 'mwaka mmoja',\n            yy : 'miaka %d'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return sw;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N3LmpzPzc0ZGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdycsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcmlfRmVicnVhcmlfTWFjaGlfQXByaWxpX01laV9KdW5pX0p1bGFpX0Fnb3N0aV9TZXB0ZW1iYV9Pa3RvYmFfTm92ZW1iYV9EZXNlbWJhJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfQWdvX1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnSnVtYXBpbGlfSnVtYXRhdHVfSnVtYW5uZV9KdW1hdGFub19BbGhhbWlzaV9JanVtYWFfSnVtYW1vc2knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnSnBsX0p0YXRfSm5uZV9KdGFuX0FsaF9Jam1fSm1vcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnSjJfSjNfSjRfSjVfQWxfSWpfSjEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tsZW8gc2FhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1trZXNobyBzYWFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1t3aWtpIGlqYXlvXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tqYW5hXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbd2lraSBpbGl5b3BpdGFdIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBiYWFkYXllJyxcbiAgICAgICAgICAgIHBhc3QgOiAndG9rZWEgJXMnLFxuICAgICAgICAgICAgcyA6ICdoaXZpIHB1bmRlJyxcbiAgICAgICAgICAgIHNzIDogJ3Nla3VuZGUgJWQnLFxuICAgICAgICAgICAgbSA6ICdkYWtpa2EgbW9qYScsXG4gICAgICAgICAgICBtbSA6ICdkYWtpa2EgJWQnLFxuICAgICAgICAgICAgaCA6ICdzYWEgbGltb2phJyxcbiAgICAgICAgICAgIGhoIDogJ21hc2FhICVkJyxcbiAgICAgICAgICAgIGQgOiAnc2lrdSBtb2phJyxcbiAgICAgICAgICAgIGRkIDogJ21hc2lrdSAlZCcsXG4gICAgICAgICAgICBNIDogJ213ZXppIG1tb2phJyxcbiAgICAgICAgICAgIE1NIDogJ21pZXppICVkJyxcbiAgICAgICAgICAgIHkgOiAnbXdha2EgbW1vamEnLFxuICAgICAgICAgICAgeXkgOiAnbWlha2EgJWQnXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN3O1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/sw.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ta.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ta.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '௧',\n        '2': '௨',\n        '3': '௩',\n        '4': '௪',\n        '5': '௫',\n        '6': '௬',\n        '7': '௭',\n        '8': '௮',\n        '9': '௯',\n        '0': '௦'\n    }, numberMap = {\n        '௧': '1',\n        '௨': '2',\n        '௩': '3',\n        '௪': '4',\n        '௫': '5',\n        '௬': '6',\n        '௭': '7',\n        '௮': '8',\n        '௯': '9',\n        '௦': '0'\n    };\n\n    var ta = moment.defineLocale('ta', {\n        months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n        monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n        weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n        weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n        weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, HH:mm',\n            LLLL : 'dddd, D MMMM YYYY, HH:mm'\n        },\n        calendar : {\n            sameDay : '[இன்று] LT',\n            nextDay : '[நாளை] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[நேற்று] LT',\n            lastWeek : '[கடந்த வாரம்] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s இல்',\n            past : '%s முன்',\n            s : 'ஒரு சில விநாடிகள்',\n            ss : '%d விநாடிகள்',\n            m : 'ஒரு நிமிடம்',\n            mm : '%d நிமிடங்கள்',\n            h : 'ஒரு மணி நேரம்',\n            hh : '%d மணி நேரம்',\n            d : 'ஒரு நாள்',\n            dd : '%d நாட்கள்',\n            M : 'ஒரு மாதம்',\n            MM : '%d மாதங்கள்',\n            y : 'ஒரு வருடம்',\n            yy : '%d ஆண்டுகள்'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal : function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை';  // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return ta;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90YS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzPzNkZTUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgr6cnLFxuICAgICAgICAnMic6ICfgr6gnLFxuICAgICAgICAnMyc6ICfgr6knLFxuICAgICAgICAnNCc6ICfgr6onLFxuICAgICAgICAnNSc6ICfgr6snLFxuICAgICAgICAnNic6ICfgr6wnLFxuICAgICAgICAnNyc6ICfgr60nLFxuICAgICAgICAnOCc6ICfgr64nLFxuICAgICAgICAnOSc6ICfgr68nLFxuICAgICAgICAnMCc6ICfgr6YnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4K+nJzogJzEnLFxuICAgICAgICAn4K+oJzogJzInLFxuICAgICAgICAn4K+pJzogJzMnLFxuICAgICAgICAn4K+qJzogJzQnLFxuICAgICAgICAn4K+rJzogJzUnLFxuICAgICAgICAn4K+sJzogJzYnLFxuICAgICAgICAn4K+tJzogJzcnLFxuICAgICAgICAn4K+uJzogJzgnLFxuICAgICAgICAn4K+vJzogJzknLFxuICAgICAgICAn4K+mJzogJzAnXG4gICAgfTtcblxuICAgIHZhciB0YSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RhJywge1xuICAgICAgICBtb250aHMgOiAn4K6c4K6p4K614K6w4K6/X+CuquCuv+CuquCvjeCusOCuteCusOCuv1/grq7grr7grrDgr43grprgr41f4K6P4K6q4K+N4K6w4K6y4K+NX+CuruCvh1/grpzgr4Lgrqngr41f4K6c4K+C4K6y4K+IX+CuhuCuleCuuOCvjeCun+CvjV/grprgr4bgrqrgr43grp/gr4bgrq7gr43grqrgrrDgr41f4K6F4K6V4K+N4K6f4K+H4K6+4K6q4K6w4K+NX+CuqOCuteCuruCvjeCuquCusOCvjV/grp/grr/grprgrq7gr43grqrgrrDgr40nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+CunOCuqeCuteCusOCuv1/grqrgrr/grqrgr43grrDgrrXgrrDgrr9f4K6u4K6+4K6w4K+N4K6a4K+NX+Cuj+CuquCvjeCusOCusuCvjV/grq7gr4df4K6c4K+C4K6p4K+NX+CunOCvguCusuCviF/grobgrpXgrrjgr43grp/gr41f4K6a4K+G4K6q4K+N4K6f4K+G4K6u4K+N4K6q4K6w4K+NX+CuheCuleCvjeCun+Cvh+CuvuCuquCusOCvjV/grqjgrrXgrq7gr43grqrgrrDgr41f4K6f4K6/4K6a4K6u4K+N4K6q4K6w4K+NJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgrp7grr7grq/grr/grrHgr43grrHgr4HgrpXgr43grpXgrr/grrTgrq7gr4hf4K6k4K6/4K6Z4K+N4K6V4K6f4K+N4K6V4K6/4K604K6u4K+IX+CumuCvhuCuteCvjeCuteCuvuCur+CvjeCuleCuv+CutOCuruCviF/grqrgr4HgrqTgrqngr43grpXgrr/grrTgrq7gr4hf4K614K6/4K6v4K6+4K604K6V4K+N4K6V4K6/4K604K6u4K+IX+CuteCvhuCus+CvjeCus+Cuv+CuleCvjeCuleCuv+CutOCuruCviF/grprgrqngrr/grpXgr43grpXgrr/grrTgrq7gr4gnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4K6e4K6+4K6v4K6/4K6x4K+BX+CupOCuv+CumeCvjeCuleCus+CvjV/grprgr4bgrrXgr43grrXgrr7grq/gr41f4K6q4K+B4K6k4K6p4K+NX+CuteCuv+Cur+CuvuCutOCuqeCvjV/grrXgr4bgrrPgr43grrPgrr9f4K6a4K6p4K6/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgrp7grr5f4K6k4K6/X+CumuCvhl/grqrgr4Ff4K614K6/X+CuteCvhl/grponLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+Cuh+CuqeCvjeCuseCvgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4K6o4K6+4K6z4K+IXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgrqjgr4fgrrHgr43grrHgr4FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgrpXgrp/grqjgr43grqQg4K614K6+4K6w4K6u4K+NXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4K6H4K6y4K+NJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4K6u4K+B4K6p4K+NJyxcbiAgICAgICAgICAgIHMgOiAn4K6S4K6w4K+BIOCumuCuv+CusiDgrrXgrr/grqjgrr7grp/grr/grpXgrrPgr40nLFxuICAgICAgICAgICAgc3MgOiAnJWQg4K614K6/4K6o4K6+4K6f4K6/4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIG0gOiAn4K6S4K6w4K+BIOCuqOCuv+CuruCuv+Cun+CuruCvjScsXG4gICAgICAgICAgICBtbSA6ICclZCDgrqjgrr/grq7grr/grp/grpngr43grpXgrrPgr40nLFxuICAgICAgICAgICAgaCA6ICfgrpLgrrDgr4Eg4K6u4K6j4K6/IOCuqOCvh+CusOCuruCvjScsXG4gICAgICAgICAgICBoaCA6ICclZCDgrq7grqPgrr8g4K6o4K+H4K6w4K6u4K+NJyxcbiAgICAgICAgICAgIGQgOiAn4K6S4K6w4K+BIOCuqOCuvuCus+CvjScsXG4gICAgICAgICAgICBkZCA6ICclZCDgrqjgrr7grp/gr43grpXgrrPgr40nLFxuICAgICAgICAgICAgTSA6ICfgrpLgrrDgr4Eg4K6u4K6+4K6k4K6u4K+NJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCuruCuvuCupOCumeCvjeCuleCus+CvjScsXG4gICAgICAgICAgICB5IDogJ+CukuCusOCvgSDgrrXgrrDgr4Hgrp/grq7gr40nLFxuICAgICAgICAgICAgeXkgOiAnJWQg4K6G4K6j4K+N4K6f4K+B4K6V4K6z4K+NJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3grrXgrqTgr4EvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgrrXgrqTgr4EnO1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4K+n4K+o4K+p4K+q4K+r4K+s4K+t4K+u4K+v4K+mXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyByZWZlciBodHRwOi8vdGEud2lraXBlZGlhLm9yZy9zLzFlcjFcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+Cur+CuvuCuruCuruCvjXzgrrXgr4jgrpXgrrHgr4h84K6V4K6+4K6y4K+IfOCuqOCuo+CvjeCuquCuleCusuCvjXzgro7grrHgr43grqrgrr7grp/gr4F84K6u4K6+4K6y4K+ILyxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq/grr7grq7grq7gr40nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuteCviOCuleCuseCviCc7ICAvLyDgrrXgr4jgrpXgrrHgr4hcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6V4K6+4K6y4K+IJzsgLy8g4K6V4K6+4K6y4K+IXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuqOCuo+CvjeCuquCuleCusuCvjSc7IC8vIOCuqOCuo+CvjeCuquCuleCusuCvjVxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgro7grrHgr43grqrgrr7grp/gr4EnOyAvLyDgro7grrHgr43grqrgrr7grp/gr4FcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6u4K6+4K6y4K+IJzsgLy8g4K6u4K6+4K6y4K+IXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCur+CuvuCuruCuruCvjSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgrq/grr7grq7grq7gr40nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCAyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgrrXgr4jgrpXgrrHgr4gnIHx8IG1lcmlkaWVtID09PSAn4K6V4K6+4K6y4K+IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CuqOCuo+CvjeCuquCuleCusuCvjScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ta.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/te.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/te.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var te = moment.defineLocale('te', {\n        months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n        monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n        weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[నేడు] LT',\n            nextDay : '[రేపు] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[నిన్న] LT',\n            lastWeek : '[గత] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s లో',\n            past : '%s క్రితం',\n            s : 'కొన్ని క్షణాలు',\n            ss : '%d సెకన్లు',\n            m : 'ఒక నిమిషం',\n            mm : '%d నిమిషాలు',\n            h : 'ఒక గంట',\n            hh : '%d గంటలు',\n            d : 'ఒక రోజు',\n            dd : '%d రోజులు',\n            M : 'ఒక నెల',\n            MM : '%d నెలలు',\n            y : 'ఒక సంవత్సరం',\n            yy : '%d సంవత్సరాలు'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}వ/,\n        ordinal : '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return te;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzPzVjYmIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZScsIHtcbiAgICAgICAgbW9udGhzIDogJ+CwnOCwqOCwteCwsOCwv1/gsKvgsL/gsKzgsY3gsLDgsLXgsLDgsL9f4LCu4LC+4LCw4LGN4LCa4LC/X+Cwj+CwquCxjeCwsOCwv+CwsuCxjV/gsK7gsYdf4LCc4LGC4LCo4LGNX+CwnOCxgeCwsuCxiF/gsIbgsJfgsLjgsY3gsJ/gsYFf4LC44LGG4LCq4LGN4LCf4LGG4LCC4LCs4LCw4LGNX+CwheCwleCxjeCwn+Cxi+CwrOCwsOCxjV/gsKjgsLXgsILgsKzgsLDgsY1f4LCh4LC/4LC44LGG4LCC4LCs4LCw4LGNJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgsJzgsKguX+Cwq+Cwv+CwrOCxjeCwsC5f4LCu4LC+4LCw4LGN4LCa4LC/X+Cwj+CwquCxjeCwsOCwvy5f4LCu4LGHX+CwnOCxguCwqOCxjV/gsJzgsYHgsLLgsYhf4LCG4LCXLl/gsLjgsYbgsKrgsY0uX+CwheCwleCxjeCwn+Cxiy5f4LCo4LC1Ll/gsKHgsL/gsLjgsYYuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn4LCG4LCm4LC/4LC14LC+4LCw4LCCX+CwuOCxi+CwruCwteCwvuCwsOCwgl/gsK7gsILgsJfgsLPgsLXgsL7gsLDgsIJf4LCs4LGB4LCn4LC14LC+4LCw4LCCX+Cwl+CxgeCwsOCxgeCwteCwvuCwsOCwgl/gsLbgsYHgsJXgsY3gsLDgsLXgsL7gsLDgsIJf4LC24LCo4LC/4LC14LC+4LCw4LCCJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CwhuCwpuCwv1/gsLjgsYvgsK5f4LCu4LCC4LCX4LCzX+CwrOCxgeCwp1/gsJfgsYHgsLDgsYFf4LC24LGB4LCV4LGN4LCwX+CwtuCwqOCwvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4LCGX+CwuOCxi1/gsK7gsIJf4LCs4LGBX+Cwl+CxgV/gsLbgsYFf4LC2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4LCo4LGH4LCh4LGBXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgsLDgsYfgsKrgsYFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+CwqOCwv+CwqOCxjeCwqF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+Cwl+CwpF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOCwsuCxiycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOCwleCxjeCwsOCwv+CwpOCwgicsXG4gICAgICAgICAgICBzIDogJ+CwleCxiuCwqOCxjeCwqOCwvyDgsJXgsY3gsLfgsKPgsL7gsLLgsYEnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4LC44LGG4LCV4LCo4LGN4LCy4LGBJyxcbiAgICAgICAgICAgIG0gOiAn4LCS4LCVIOCwqOCwv+CwruCwv+Cwt+CwgicsXG4gICAgICAgICAgICBtbSA6ICclZCDgsKjgsL/gsK7gsL/gsLfgsL7gsLLgsYEnLFxuICAgICAgICAgICAgaCA6ICfgsJLgsJUg4LCX4LCC4LCfJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOCwl+CwguCwn+CwsuCxgScsXG4gICAgICAgICAgICBkIDogJ+CwkuCwlSDgsLDgsYvgsJzgsYEnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4LCw4LGL4LCc4LGB4LCy4LGBJyxcbiAgICAgICAgICAgIE0gOiAn4LCS4LCVIOCwqOCxhuCwsicsXG4gICAgICAgICAgICBNTSA6ICclZCDgsKjgsYbgsLLgsLLgsYEnLFxuICAgICAgICAgICAgeSA6ICfgsJLgsJUg4LC44LCC4LC14LCk4LGN4LC44LCw4LCCJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCwuOCwguCwteCwpOCxjeCwuOCwsOCwvuCwsuCxgSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfeCwtS8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTgsLUnLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LCw4LC+4LCk4LGN4LCw4LC/fOCwieCwpuCwr+CwgnzgsK7gsKfgsY3gsK/gsL7gsLngsY3gsKjgsIJ84LC44LC+4LCv4LCC4LCk4LGN4LCw4LCCLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CwsOCwvuCwpOCxjeCwsOCwvycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwieCwpuCwr+CwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsK7gsKfgsY3gsK/gsL7gsLngsY3gsKjgsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwuOCwvuCwr+CwguCwpOCxjeCwsOCwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCw4LC+4LCk4LGN4LCw4LC/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsIngsKbgsK/gsIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LC44LC+4LCv4LCC4LCk4LGN4LCw4LCCJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLDgsL7gsKTgsY3gsLDgsL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0ZTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/te.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/tet.js":
/*!*******************************************!*\
  !*** ./node_modules/moment/locale/tet.js ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var tet = moment.defineLocale('tet', {\n        months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'iha %s',\n            past : '%s liuba',\n            s : 'minutu balun',\n            ss : 'minutu %d',\n            m : 'minutu ida',\n            mm : 'minutu %d',\n            h : 'oras ida',\n            hh : 'oras %d',\n            d : 'loron ida',\n            dd : 'loron %d',\n            M : 'fulan ida',\n            MM : 'fulan %d',\n            y : 'tinan ida',\n            yy : 'tinan %d'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tet;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanM/NTc2YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0ZXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZXQnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW5laXJ1X0ZldmVyZWlydV9NYXJzdV9BYnJpbF9NYWl1X0p1w7F1X0p1bGx1X0FndXN0dV9TZXRlbWJydV9PdXR1YnJ1X05vdmVtYnJ1X0RlemVtYnJ1Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnRG9taW5ndV9TZWd1bmRhX1RlcnNhX0t1YXJ0YV9LaW50YV9TZXN0YV9TYWJhZHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRG9tX1NlZ19UZXJzX0t1YV9LaW50X1Nlc3RfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdEb19TZWdfVGVfS3VfS2lfU2VzX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tPaGluIGloYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBYmFuIGloYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtpaGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSG9yaXNlaWsgaWhhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3NlbWFuYSBrb3R1a10gW2loYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaWhhICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgbGl1YmEnLFxuICAgICAgICAgICAgcyA6ICdtaW51dHUgYmFsdW4nLFxuICAgICAgICAgICAgc3MgOiAnbWludXR1ICVkJyxcbiAgICAgICAgICAgIG0gOiAnbWludXR1IGlkYScsXG4gICAgICAgICAgICBtbSA6ICdtaW51dHUgJWQnLFxuICAgICAgICAgICAgaCA6ICdvcmFzIGlkYScsXG4gICAgICAgICAgICBoaCA6ICdvcmFzICVkJyxcbiAgICAgICAgICAgIGQgOiAnbG9yb24gaWRhJyxcbiAgICAgICAgICAgIGRkIDogJ2xvcm9uICVkJyxcbiAgICAgICAgICAgIE0gOiAnZnVsYW4gaWRhJyxcbiAgICAgICAgICAgIE1NIDogJ2Z1bGFuICVkJyxcbiAgICAgICAgICAgIHkgOiAndGluYW4gaWRhJyxcbiAgICAgICAgICAgIHl5IDogJ3RpbmFuICVkJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRldDtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/tet.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/tg.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/tg.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум'\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n        weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Имрӯз соати] LT',\n            nextDay : '[Пагоҳ соати] LT',\n            lastDay : '[Дирӯз соати] LT',\n            nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'баъди %s',\n            past : '%s пеш',\n            s : 'якчанд сония',\n            m : 'як дақиқа',\n            mm : '%d дақиқа',\n            h : 'як соат',\n            hh : '%d соат',\n            d : 'як рӯз',\n            dd : '%d рӯз',\n            M : 'як моҳ',\n            MM : '%d моҳ',\n            y : 'як сол',\n            yy : '%d сол'\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1th is the first week of the year.\n        }\n    });\n\n    return tg;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzPzNiMWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YPQvCcsXG4gICAgICAgIDE6ICct0YPQvCcsXG4gICAgICAgIDI6ICct0Y7QvCcsXG4gICAgICAgIDM6ICct0Y7QvCcsXG4gICAgICAgIDQ6ICct0YPQvCcsXG4gICAgICAgIDU6ICct0YPQvCcsXG4gICAgICAgIDY6ICct0YPQvCcsXG4gICAgICAgIDc6ICct0YPQvCcsXG4gICAgICAgIDg6ICct0YPQvCcsXG4gICAgICAgIDk6ICct0YPQvCcsXG4gICAgICAgIDEwOiAnLdGD0LwnLFxuICAgICAgICAxMjogJy3Rg9C8JyxcbiAgICAgICAgMTM6ICct0YPQvCcsXG4gICAgICAgIDIwOiAnLdGD0LwnLFxuICAgICAgICAzMDogJy3RjtC8JyxcbiAgICAgICAgNDA6ICct0YPQvCcsXG4gICAgICAgIDUwOiAnLdGD0LwnLFxuICAgICAgICA2MDogJy3Rg9C8JyxcbiAgICAgICAgNzA6ICct0YPQvCcsXG4gICAgICAgIDgwOiAnLdGD0LwnLFxuICAgICAgICA5MDogJy3Rg9C8JyxcbiAgICAgICAgMTAwOiAnLdGD0LwnXG4gICAgfTtcblxuICAgIHZhciB0ZyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RnJywge1xuICAgICAgICBtb250aHMgOiAn0Y/QvdCy0LDRgF/RhNC10LLRgNCw0Ltf0LzQsNGA0YJf0LDQv9GA0LXQu1/QvNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YBf0L7QutGC0Y/QsdGAX9C90L7Rj9Cx0YBf0LTQtdC60LDQsdGAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfRj9C90LJf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn0Y/QutGI0LDQvdCx0LVf0LTRg9GI0LDQvdCx0LVf0YHQtdGI0LDQvdCx0LVf0YfQvtGA0YjQsNC90LHQtV/Qv9Cw0L3St9GI0LDQvdCx0LVf0rfRg9C80YrQsF/RiNCw0L3QsdC1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9GP0YjQsV/QtNGI0LFf0YHRiNCxX9GH0YjQsV/Qv9GI0LFf0rfRg9C8X9GI0L3QsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0Y/RiF/QtNGIX9GB0Yhf0YfRiF/Qv9GIX9K30Lxf0YjQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CY0LzRgNOv0Lcg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0J/QsNCz0L7SsyDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vQlNC40YDTr9C3INGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGRb0LhdIFvSs9Cw0YTRgtCw0Lgg0L7Rj9C90LTQsCDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkW9C4XSBb0rPQsNGE0YLQsNC4INCz0YPQt9Cw0YjRgtCwINGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQsdCw0YrQtNC4ICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0L/QtdGIJyxcbiAgICAgICAgICAgIHMgOiAn0Y/QutGH0LDQvdC0INGB0L7QvdC40Y8nLFxuICAgICAgICAgICAgbSA6ICfRj9C6INC00LDSm9C40pvQsCcsXG4gICAgICAgICAgICBtbSA6ICclZCDQtNCw0pvQuNKb0LAnLFxuICAgICAgICAgICAgaCA6ICfRj9C6INGB0L7QsNGCJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGB0L7QsNGCJyxcbiAgICAgICAgICAgIGQgOiAn0Y/QuiDRgNOv0LcnLFxuICAgICAgICAgICAgZGQgOiAnJWQg0YDTr9C3JyxcbiAgICAgICAgICAgIE0gOiAn0Y/QuiDQvNC+0rMnLFxuICAgICAgICAgICAgTU0gOiAnJWQg0LzQvtKzJyxcbiAgICAgICAgICAgIHkgOiAn0Y/QuiDRgdC+0LsnLFxuICAgICAgICAgICAgeXkgOiAnJWQg0YHQvtC7J1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0YjQsNCxfNGB0YPQsdKzfNGA06/Qt3zQsdC10LPQvtKzLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn0YjQsNCxJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YHRg9Cx0rMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YDTr9C3Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfQsdC10LPQvtKzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GI0LDQsSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YHRg9Cx0rMnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA06/Qtyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LHQtdCz0L7Ssyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YjQsNCxJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRg9C8fNGO0LwpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxdGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0ZztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/tg.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/th.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/th.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var th = moment.defineLocale('th', {\n        months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n        monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY เวลา H:mm',\n            LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar : {\n            sameDay : '[วันนี้ เวลา] LT',\n            nextDay : '[พรุ่งนี้ เวลา] LT',\n            nextWeek : 'dddd[หน้า เวลา] LT',\n            lastDay : '[เมื่อวานนี้ เวลา] LT',\n            lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'อีก %s',\n            past : '%sที่แล้ว',\n            s : 'ไม่กี่วินาที',\n            ss : '%d วินาที',\n            m : '1 นาที',\n            mm : '%d นาที',\n            h : '1 ชั่วโมง',\n            hh : '%d ชั่วโมง',\n            d : '1 วัน',\n            dd : '%d วัน',\n            M : '1 เดือน',\n            MM : '%d เดือน',\n            y : '1 ปี',\n            yy : '%d ปี'\n        }\n    });\n\n    return th;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzPzEwZTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdGggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0aCcsIHtcbiAgICAgICAgbW9udGhzIDogJ+C4oeC4geC4o+C4suC4hOC4oV/guIHguLjguKHguKDguLLguJ7guLHguJnguJjguYxf4Lih4Li14LiZ4Liy4LiE4LihX+C5gOC4oeC4qeC4suC4ouC4mV/guJ7guKTguKnguKDguLLguITguKFf4Lih4Li04LiW4Li44LiZ4Liy4Lii4LiZX+C4geC4o+C4geC4juC4suC4hOC4oV/guKrguLTguIfguKvguLLguITguKFf4LiB4Lix4LiZ4Lii4Liy4Lii4LiZX+C4leC4uOC4peC4suC4hOC4oV/guJ7guKTguKjguIjguLTguIHguLLguKLguJlf4LiY4Lix4LiZ4Lin4Liy4LiE4LihJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfguKEu4LiELl/guIEu4LieLl/guKHguLUu4LiELl/guYDguKEu4LiiLl/guJ4u4LiELl/guKHguLQu4LiiLl/guIEu4LiELl/guKou4LiELl/guIEu4LiiLl/guJUu4LiELl/guJ4u4LiiLl/guJgu4LiELicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4quC4muC4lOC4tV/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+C4reC4suC4l+C4tOC4leC4ouC5jF/guIjguLHguJnguJfguKPguYxf4Lit4Lix4LiH4LiE4Liy4LijX+C4nuC4uOC4mF/guJ7guKTguKvguLHguKpf4Lio4Li44LiB4Lij4LmMX+C5gOC4quC4suC4o+C5jCcuc3BsaXQoJ18nKSwgLy8geWVzLCB0aHJlZSBjaGFyYWN0ZXJzIGRpZmZlcmVuY2VcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4Lit4LiyLl/guIguX+C4rS5f4LieLl/guJ7guKQuX+C4qC5f4LiqLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICfguKfguLHguJlkZGRk4LiX4Li14LmIIEQgTU1NTSBZWVlZIOC5gOC4p+C4peC4siBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHfOC4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hy8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfguIHguYjguK3guJnguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4Lin4Lix4LiZ4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4Lie4Lij4Li44LmI4LiH4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZFvguKvguJnguYnguLIg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vguYDguKHguLfguYjguK3guKfguLLguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4Lin4Lix4LiZXWRkZGRb4LiX4Li14LmI4LmB4Lil4LmJ4LinIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ+C4reC4teC4gSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVz4LiX4Li14LmI4LmB4Lil4LmJ4LinJyxcbiAgICAgICAgICAgIHMgOiAn4LmE4Lih4LmI4LiB4Li14LmI4Lin4Li04LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIHNzIDogJyVkIOC4p+C4tOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBtIDogJzEg4LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIG1tIDogJyVkIOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBoIDogJzEg4LiK4Lix4LmI4Lin4LmC4Lih4LiHJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOC4iuC4seC5iOC4p+C5guC4oeC4hycsXG4gICAgICAgICAgICBkIDogJzEg4Lin4Lix4LiZJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOC4p+C4seC4mScsXG4gICAgICAgICAgICBNIDogJzEg4LmA4LiU4Li34Lit4LiZJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOC5gOC4lOC4t+C4reC4mScsXG4gICAgICAgICAgICB5IDogJzEg4Lib4Li1JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOC4m+C4tSdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/th.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/tl-ph.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/tl-ph.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n        monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n        weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'MM/D/YYYY',\n            LL : 'MMMM D, YYYY',\n            LLL : 'MMMM D, YYYY HH:mm',\n            LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'sa loob ng %s',\n            past : '%s ang nakalipas',\n            s : 'ilang segundo',\n            ss : '%d segundo',\n            m : 'isang minuto',\n            mm : '%d minuto',\n            h : 'isang oras',\n            hh : '%d oras',\n            d : 'isang araw',\n            dd : '%d araw',\n            M : 'isang buwan',\n            MM : '%d buwan',\n            y : 'isang taon',\n            yy : '%d taon'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : function (number) {\n            return number;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tlPh;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bC1waC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzPzBmMzgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdGxQaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RsLXBoJywge1xuICAgICAgICBtb250aHMgOiAnRW5lcm9fUGVicmVyb19NYXJzb19BYnJpbF9NYXlvX0h1bnlvX0h1bHlvX0Fnb3N0b19TZXR5ZW1icmVfT2t0dWJyZV9Ob2J5ZW1icmVfRGlzeWVtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdFbmVfUGViX01hcl9BYnJfTWF5X0h1bl9IdWxfQWdvX1NldF9Pa3RfTm9iX0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnTGluZ2dvX0x1bmVzX01hcnRlc19NaXllcmt1bGVzX0h1d2ViZXNfQml5ZXJuZXNfU2FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0xpbl9MdW5fTWFyX01peV9IdXdfQml5X1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnTGlfTHVfTWFfTWlfSHVfQmlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ01NL0QvWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ01NTU0gRCwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gREQsIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ0xUIFtuZ2F5b25nIGFyYXddJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQnVrYXMgbmddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnTFQgW3NhIHN1c3Vub2QgbmFdIGRkZGQnLFxuICAgICAgICAgICAgbGFzdERheTogJ0xUIFtrYWhhcG9uXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ0xUIFtub29uZyBuYWthcmFhbmddIGRkZGQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnc2EgbG9vYiBuZyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFuZyBuYWthbGlwYXMnLFxuICAgICAgICAgICAgcyA6ICdpbGFuZyBzZWd1bmRvJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG8nLFxuICAgICAgICAgICAgbSA6ICdpc2FuZyBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvJyxcbiAgICAgICAgICAgIGggOiAnaXNhbmcgb3JhcycsXG4gICAgICAgICAgICBoaCA6ICclZCBvcmFzJyxcbiAgICAgICAgICAgIGQgOiAnaXNhbmcgYXJhdycsXG4gICAgICAgICAgICBkZCA6ICclZCBhcmF3JyxcbiAgICAgICAgICAgIE0gOiAnaXNhbmcgYnV3YW4nLFxuICAgICAgICAgICAgTU0gOiAnJWQgYnV3YW4nLFxuICAgICAgICAgICAgeSA6ICdpc2FuZyB0YW9uJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHRhb24nXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0bFBoO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/tl-ph.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/tlh.js":
/*!*******************************************!*\
  !*** ./node_modules/moment/locale/tlh.js ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time = (output.indexOf('jaj') !== -1) ?\n        time.slice(0, -3) + 'leS' :\n        (output.indexOf('jar') !== -1) ?\n        time.slice(0, -3) + 'waQ' :\n        (output.indexOf('DIS') !== -1) ?\n        time.slice(0, -3) + 'nem' :\n        time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time = (output.indexOf('jaj') !== -1) ?\n        time.slice(0, -3) + 'Hu’' :\n        (output.indexOf('jar') !== -1) ?\n        time.slice(0, -3) + 'wen' :\n        (output.indexOf('DIS') !== -1) ?\n        time.slice(0, -3) + 'ben' :\n        time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n        ten = Math.floor((number % 100) / 10),\n        one = number % 10,\n        word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n        }\n        return (word === '') ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n        monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : translateFuture,\n            past : translatePast,\n            s : 'puS lup',\n            ss : translate,\n            m : 'wa’ tup',\n            mm : translate,\n            h : 'wa’ rep',\n            hh : translate,\n            d : 'wa’ jaj',\n            dd : translate,\n            M : 'wa’ jar',\n            MM : translate,\n            y : 'wa’ DIS',\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tlh;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanM/Y2Y3NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBudW1iZXJzTm91bnMgPSAncGFnaF93YeKAmV9jaGHigJlfd2VqX2xvU192YWdoX2phdl9Tb2NoX2Nob3JnaF9IdXQnLnNwbGl0KCdfJyk7XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVGdXR1cmUob3V0cHV0KSB7XG4gICAgICAgIHZhciB0aW1lID0gb3V0cHV0O1xuICAgICAgICB0aW1lID0gKG91dHB1dC5pbmRleE9mKCdqYWonKSAhPT0gLTEpID9cbiAgICAgICAgdGltZS5zbGljZSgwLCAtMykgKyAnbGVTJyA6XG4gICAgICAgIChvdXRwdXQuaW5kZXhPZignamFyJykgIT09IC0xKSA/XG4gICAgICAgIHRpbWUuc2xpY2UoMCwgLTMpICsgJ3dhUScgOlxuICAgICAgICAob3V0cHV0LmluZGV4T2YoJ0RJUycpICE9PSAtMSkgP1xuICAgICAgICB0aW1lLnNsaWNlKDAsIC0zKSArICduZW0nIDpcbiAgICAgICAgdGltZSArICcgcElxJztcbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlUGFzdChvdXRwdXQpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBvdXRwdXQ7XG4gICAgICAgIHRpbWUgPSAob3V0cHV0LmluZGV4T2YoJ2phaicpICE9PSAtMSkgP1xuICAgICAgICB0aW1lLnNsaWNlKDAsIC0zKSArICdIdeKAmScgOlxuICAgICAgICAob3V0cHV0LmluZGV4T2YoJ2phcicpICE9PSAtMSkgP1xuICAgICAgICB0aW1lLnNsaWNlKDAsIC0zKSArICd3ZW4nIDpcbiAgICAgICAgKG91dHB1dC5pbmRleE9mKCdESVMnKSAhPT0gLTEpID9cbiAgICAgICAgdGltZS5zbGljZSgwLCAtMykgKyAnYmVuJyA6XG4gICAgICAgIHRpbWUgKyAnIHJldCc7XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG51bWJlck5vdW4gPSBudW1iZXJBc05vdW4obnVtYmVyKTtcbiAgICAgICAgc3dpdGNoIChzdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgbHVwJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgdHVwJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgcmVwJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgamFqJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgamFyJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgRElTJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG51bWJlckFzTm91bihudW1iZXIpIHtcbiAgICAgICAgdmFyIGh1bmRyZWQgPSBNYXRoLmZsb29yKChudW1iZXIgJSAxMDAwKSAvIDEwMCksXG4gICAgICAgIHRlbiA9IE1hdGguZmxvb3IoKG51bWJlciAlIDEwMCkgLyAxMCksXG4gICAgICAgIG9uZSA9IG51bWJlciAlIDEwLFxuICAgICAgICB3b3JkID0gJyc7XG4gICAgICAgIGlmIChodW5kcmVkID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSBudW1iZXJzTm91bnNbaHVuZHJlZF0gKyAndmF0bGgnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0ZW4gPiAwKSB7XG4gICAgICAgICAgICB3b3JkICs9ICgod29yZCAhPT0gJycpID8gJyAnIDogJycpICsgbnVtYmVyc05vdW5zW3Rlbl0gKyAnbWFIJztcbiAgICAgICAgfVxuICAgICAgICBpZiAob25lID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSAoKHdvcmQgIT09ICcnKSA/ICcgJyA6ICcnKSArIG51bWJlcnNOb3Vuc1tvbmVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAod29yZCA9PT0gJycpID8gJ3BhZ2gnIDogd29yZDtcbiAgICB9XG5cbiAgICB2YXIgdGxoID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGxoJywge1xuICAgICAgICBtb250aHMgOiAndGVyYeKAmSBqYXIgd2HigJlfdGVyYeKAmSBqYXIgY2hh4oCZX3RlcmHigJkgamFyIHdlal90ZXJh4oCZIGphciBsb1NfdGVyYeKAmSBqYXIgdmFnaF90ZXJh4oCZIGphciBqYXZfdGVyYeKAmSBqYXIgU29jaF90ZXJh4oCZIGphciBjaG9yZ2hfdGVyYeKAmSBqYXIgSHV0X3RlcmHigJkgamFyIHdh4oCZbWFIX3RlcmHigJkgamFyIHdh4oCZbWFIIHdh4oCZX3RlcmHigJkgamFyIHdh4oCZbWFIIGNoYeKAmScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFyIHdh4oCZX2phciBjaGHigJlfamFyIHdlal9qYXIgbG9TX2phciB2YWdoX2phciBqYXZfamFyIFNvY2hfamFyIGNob3JnaF9qYXIgSHV0X2phciB3YeKAmW1hSF9qYXIgd2HigJltYUggd2HigJlfamFyIHdh4oCZbWFIIGNoYeKAmScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbRGFIamFqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3dh4oCZbGVTXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ0xMTCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3dh4oCZSHXigJldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnTExMJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogdHJhbnNsYXRlRnV0dXJlLFxuICAgICAgICAgICAgcGFzdCA6IHRyYW5zbGF0ZVBhc3QsXG4gICAgICAgICAgICBzIDogJ3B1UyBsdXAnLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogJ3dh4oCZIHR1cCcsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiAnd2HigJkgcmVwJyxcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6ICd3YeKAmSBqYWonLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogJ3dh4oCZIGphcicsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiAnd2HigJkgRElTJyxcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGxoO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/tlh.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/tr.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/tr.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    var suffixes = {\n        1: '\\'inci',\n        5: '\\'inci',\n        8: '\\'inci',\n        70: '\\'inci',\n        80: '\\'inci',\n        2: '\\'nci',\n        7: '\\'nci',\n        20: '\\'nci',\n        50: '\\'nci',\n        3: '\\'üncü',\n        4: '\\'üncü',\n        100: '\\'üncü',\n        6: '\\'ncı',\n        9: '\\'uncu',\n        10: '\\'uncu',\n        30: '\\'uncu',\n        60: '\\'ıncı',\n        90: '\\'ıncı'\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n        monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n        weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n        weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[bugün saat] LT',\n            nextDay : '[yarın saat] LT',\n            nextWeek : '[gelecek] dddd [saat] LT',\n            lastDay : '[dün] LT',\n            lastWeek : '[geçen] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s sonra',\n            past : '%s önce',\n            s : 'birkaç saniye',\n            ss : '%d saniye',\n            m : 'bir dakika',\n            mm : '%d dakika',\n            h : 'bir saat',\n            hh : '%d saat',\n            d : 'bir gün',\n            dd : '%d gün',\n            M : 'bir ay',\n            MM : '%d ay',\n            y : 'bir yıl',\n            yy : '%d yıl'\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {  // special case for zero\n                        return number + '\\'ıncı';\n                    }\n                    var a = number % 10,\n                        b = number % 100 - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return tr;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzPzBlODEiXSwic291cmNlc0NvbnRlbnQiOlsiXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAxOiAnXFwnaW5jaScsXG4gICAgICAgIDU6ICdcXCdpbmNpJyxcbiAgICAgICAgODogJ1xcJ2luY2knLFxuICAgICAgICA3MDogJ1xcJ2luY2knLFxuICAgICAgICA4MDogJ1xcJ2luY2knLFxuICAgICAgICAyOiAnXFwnbmNpJyxcbiAgICAgICAgNzogJ1xcJ25jaScsXG4gICAgICAgIDIwOiAnXFwnbmNpJyxcbiAgICAgICAgNTA6ICdcXCduY2knLFxuICAgICAgICAzOiAnXFwnw7xuY8O8JyxcbiAgICAgICAgNDogJ1xcJ8O8bmPDvCcsXG4gICAgICAgIDEwMDogJ1xcJ8O8bmPDvCcsXG4gICAgICAgIDY6ICdcXCduY8SxJyxcbiAgICAgICAgOTogJ1xcJ3VuY3UnLFxuICAgICAgICAxMDogJ1xcJ3VuY3UnLFxuICAgICAgICAzMDogJ1xcJ3VuY3UnLFxuICAgICAgICA2MDogJ1xcJ8SxbmPEsScsXG4gICAgICAgIDkwOiAnXFwnxLFuY8SxJ1xuICAgIH07XG5cbiAgICB2YXIgdHIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0cicsIHtcbiAgICAgICAgbW9udGhzIDogJ09jYWtfxZ51YmF0X01hcnRfTmlzYW5fTWF5xLFzX0hhemlyYW5fVGVtbXV6X0HEn3VzdG9zX0V5bMO8bF9Fa2ltX0thc8SxbV9BcmFsxLFrJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdPY2FfxZ51Yl9NYXJfTmlzX01heV9IYXpfVGVtX0HEn3VfRXlsX0VraV9LYXNfQXJhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdQYXphcl9QYXphcnRlc2lfU2FsxLFfw4dhcsWfYW1iYV9QZXLFn2VtYmVfQ3VtYV9DdW1hcnRlc2knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnUGF6X1B0c19TYWxfw4dhcl9QZXJfQ3VtX0N0cycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnUHpfUHRfU2Ffw4dhX1BlX0N1X0N0Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbYnVnw7xuIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW3lhcsSxbiBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdbZ2VsZWNla10gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbZMO8bl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW2dlw6dlbl0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIHNvbnJhJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgw7ZuY2UnLFxuICAgICAgICAgICAgcyA6ICdiaXJrYcOnIHNhbml5ZScsXG4gICAgICAgICAgICBzcyA6ICclZCBzYW5peWUnLFxuICAgICAgICAgICAgbSA6ICdiaXIgZGFraWthJyxcbiAgICAgICAgICAgIG1tIDogJyVkIGRha2lrYScsXG4gICAgICAgICAgICBoIDogJ2JpciBzYWF0JyxcbiAgICAgICAgICAgIGhoIDogJyVkIHNhYXQnLFxuICAgICAgICAgICAgZCA6ICdiaXIgZ8O8bicsXG4gICAgICAgICAgICBkZCA6ICclZCBnw7xuJyxcbiAgICAgICAgICAgIE0gOiAnYmlyIGF5JyxcbiAgICAgICAgICAgIE1NIDogJyVkIGF5JyxcbiAgICAgICAgICAgIHkgOiAnYmlyIHnEsWwnLFxuICAgICAgICAgICAgeXkgOiAnJWQgecSxbCdcbiAgICAgICAgfSxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvJzpcbiAgICAgICAgICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkgeyAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ1xcJ8SxbmPEsSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgJSAxMDAgLSBhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHI7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/tr.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/tzl.js":
/*!*******************************************!*\
  !*** ./node_modules/moment/locale/tzl.js ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM [dallas] YYYY',\n            LLL : 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM : function (input) {\n            return 'd\\'o' === input.toLowerCase();\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'd\\'o' : 'D\\'O';\n            } else {\n                return isLower ? 'd\\'a' : 'D\\'A';\n            }\n        },\n        calendar : {\n            sameDay : '[oxhi à] LT',\n            nextDay : '[demà à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[ieiri à] LT',\n            lastWeek : '[sür el] dddd [lasteu à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'osprei %s',\n            past : 'ja%s',\n            s : processRelativeTime,\n            ss : processRelativeTime,\n            m : processRelativeTime,\n            mm : processRelativeTime,\n            h : processRelativeTime,\n            hh : processRelativeTime,\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's': ['viensas secunds', '\\'iensas secunds'],\n            'ss': [number + ' secunds', '' + number + ' secunds'],\n            'm': ['\\'n míut', '\\'iens míut'],\n            'mm': [number + ' míuts', '' + number + ' míuts'],\n            'h': ['\\'n þora', '\\'iensa þora'],\n            'hh': [number + ' þoras', '' + number + ' þoras'],\n            'd': ['\\'n ziua', '\\'iensa ziua'],\n            'dd': [number + ' ziuas', '' + number + ' ziuas'],\n            'M': ['\\'n mes', '\\'iens mes'],\n            'MM': [number + ' mesen', '' + number + ' mesen'],\n            'y': ['\\'n ar', '\\'iens ar'],\n            'yy': [number + ' ars', '' + number + ' ars']\n        };\n        return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n    }\n\n    return tzl;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanM/Y2Y1MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIC8vIEFmdGVyIHRoZSB5ZWFyIHRoZXJlIHNob3VsZCBiZSBhIHNsYXNoIGFuZCB0aGUgYW1vdW50IG9mIHllYXJzIHNpbmNlIERlY2VtYmVyIDI2LCAxOTc5IGluIFJvbWFuIG51bWVyYWxzLlxuICAgIC8vIFRoaXMgaXMgY3VycmVudGx5IHRvbyBkaWZmaWN1bHQgKG1heWJlIGV2ZW4gaW1wb3NzaWJsZSkgdG8gYWRkLlxuICAgIHZhciB0emwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0emwnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJfRmV2cmFnbGhfTWFyw6dfQXZyw691X01haV9Hw7xuX0p1bGlhX0d1c2NodF9TZXRlbXZhcl9MaXN0b3DDpHRzX05vZW12YXJfWmVjZW12YXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZXZfTWFyX0F2cl9NYWlfR8O8bl9KdWxfR3VzX1NldF9MaXNfTm9lX1plYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU8O6bGFkaV9Mw7puZcOnaV9NYWl0emlfTcOhcmN1cmlfWGjDumFkaV9WacOpbmVyw6dpX1PDoXR1cmknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU8O6bF9Mw7puX01haV9Nw6FyX1how7pfVmnDqV9Tw6F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTw7pfTMO6X01hX03DoV9YaF9WaV9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFtkYWxsYXNdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIFtsaV0gRC4gTU1NTSBbZGFsbGFzXSBZWVlZIEhILm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZFxcJ298ZFxcJ2EvaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICdkXFwnbycgPT09IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2RcXCdvJyA6ICdEXFwnTyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2RcXCdhJyA6ICdEXFwnQSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbb3hoaSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbZGVtw6Agw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tpZWlyaSDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3PDvHIgZWxdIGRkZGQgW2xhc3RldSDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29zcHJlaSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2phJXMnLFxuICAgICAgICAgICAgcyA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzcyA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3MnOiBbJ3ZpZW5zYXMgc2VjdW5kcycsICdcXCdpZW5zYXMgc2VjdW5kcyddLFxuICAgICAgICAgICAgJ3NzJzogW251bWJlciArICcgc2VjdW5kcycsICcnICsgbnVtYmVyICsgJyBzZWN1bmRzJ10sXG4gICAgICAgICAgICAnbSc6IFsnXFwnbiBtw611dCcsICdcXCdpZW5zIG3DrXV0J10sXG4gICAgICAgICAgICAnbW0nOiBbbnVtYmVyICsgJyBtw611dHMnLCAnJyArIG51bWJlciArICcgbcOtdXRzJ10sXG4gICAgICAgICAgICAnaCc6IFsnXFwnbiDDvm9yYScsICdcXCdpZW5zYSDDvm9yYSddLFxuICAgICAgICAgICAgJ2hoJzogW251bWJlciArICcgw75vcmFzJywgJycgKyBudW1iZXIgKyAnIMO+b3JhcyddLFxuICAgICAgICAgICAgJ2QnOiBbJ1xcJ24geml1YScsICdcXCdpZW5zYSB6aXVhJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyB6aXVhcycsICcnICsgbnVtYmVyICsgJyB6aXVhcyddLFxuICAgICAgICAgICAgJ00nOiBbJ1xcJ24gbWVzJywgJ1xcJ2llbnMgbWVzJ10sXG4gICAgICAgICAgICAnTU0nOiBbbnVtYmVyICsgJyBtZXNlbicsICcnICsgbnVtYmVyICsgJyBtZXNlbiddLFxuICAgICAgICAgICAgJ3knOiBbJ1xcJ24gYXInLCAnXFwnaWVucyBhciddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgYXJzJywgJycgKyBudW1iZXIgKyAnIGFycyddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogKHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHpsO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/tzl.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/tzm-latn.js":
/*!************************************************!*\
  !*** ./node_modules/moment/locale/tzm-latn.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n        monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n        weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'dadkh s yan %s',\n            past : 'yan %s',\n            s : 'imik',\n            ss : '%d imik',\n            m : 'minuḍ',\n            mm : '%d minuḍ',\n            h : 'saɛa',\n            hh : '%d tassaɛin',\n            d : 'ass',\n            dd : '%d ossan',\n            M : 'ayowr',\n            MM : '%d iyyirn',\n            y : 'asgas',\n            yy : '%d isgasn'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return tzmLatn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0tbGF0bi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzP2I1M2QiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdHptTGF0biA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3R6bS1sYXRuJywge1xuICAgICAgICBtb250aHMgOiAnaW5uYXlyX2Jyy6RheXLLpF9tYXLLpHPLpF9pYnJpcl9tYXl5d195d255d195d2x5d3pfyaN3xaF0X8Whd3RhbmJpcl9rdMukd2Jyy6Rfbnd3YW5iaXJfZHdqbmJpcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnaW5uYXlyX2Jyy6RheXLLpF9tYXLLpHPLpF9pYnJpcl9tYXl5d195d255d195d2x5d3pfyaN3xaF0X8Whd3RhbmJpcl9rdMukd2Jyy6Rfbnd3YW5iaXJfZHdqbmJpcicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2FzZGtoIGddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbYXNrYSBnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ddIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbYXNzYW50IGddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFka2ggcyB5YW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICd5YW4gJXMnLFxuICAgICAgICAgICAgcyA6ICdpbWlrJyxcbiAgICAgICAgICAgIHNzIDogJyVkIGltaWsnLFxuICAgICAgICAgICAgbSA6ICdtaW514biNJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnXhuI0nLFxuICAgICAgICAgICAgaCA6ICdzYcmbYScsXG4gICAgICAgICAgICBoaCA6ICclZCB0YXNzYcmbaW4nLFxuICAgICAgICAgICAgZCA6ICdhc3MnLFxuICAgICAgICAgICAgZGQgOiAnJWQgb3NzYW4nLFxuICAgICAgICAgICAgTSA6ICdheW93cicsXG4gICAgICAgICAgICBNTSA6ICclZCBpeXlpcm4nLFxuICAgICAgICAgICAgeSA6ICdhc2dhcycsXG4gICAgICAgICAgICB5eSA6ICclZCBpc2dhc24nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0em1MYXRuO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/tzm-latn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/tzm.js":
/*!*******************************************!*\
  !*** ./node_modules/moment/locale/tzm.js ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var tzm = moment.defineLocale('tzm', {\n        months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n        monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n        weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past : 'ⵢⴰⵏ %s',\n            s : 'ⵉⵎⵉⴽ',\n            ss : '%d ⵉⵎⵉⴽ',\n            m : 'ⵎⵉⵏⵓⴺ',\n            mm : '%d ⵎⵉⵏⵓⴺ',\n            h : 'ⵙⴰⵄⴰ',\n            hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d : 'ⴰⵙⵙ',\n            dd : '%d oⵙⵙⴰⵏ',\n            M : 'ⴰⵢoⵓⵔ',\n            MM : '%d ⵉⵢⵢⵉⵔⵏ',\n            y : 'ⴰⵙⴳⴰⵙ',\n            yy : '%d ⵉⵙⴳⴰⵙⵏ'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return tzm;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanM/YzEwOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0em0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0em0nLCB7XG4gICAgICAgIG1vbnRocyA6ICfitYnitY/itY/itLDitaLitZRf4rSx4rWV4rSw4rWi4rWVX+K1juK0sOK1leK1ml/itYnitLHitZTitYnitZRf4rWO4rSw4rWi4rWi4rWTX+K1ouK1k+K1j+K1ouK1k1/itaLitZPitY3itaLitZPitaNf4rWW4rWT4rWb4rWcX+K1m+K1k+K1nOK0sOK1j+K0seK1ieK1lF/itL3itZ/itZPitLHitZVf4rWP4rWT4rWh4rSw4rWP4rSx4rWJ4rWUX+K0t+K1k+K1iuK1j+K0seK1ieK1lCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4rWJ4rWP4rWP4rSw4rWi4rWUX+K0seK1leK0sOK1ouK1lV/itY7itLDitZXitZpf4rWJ4rSx4rWU4rWJ4rWUX+K1juK0sOK1ouK1ouK1k1/itaLitZPitY/itaLitZNf4rWi4rWT4rWN4rWi4rWT4rWjX+K1luK1k+K1m+K1nF/itZvitZPitZzitLDitY/itLHitYnitZRf4rS94rWf4rWT4rSx4rWVX+K1j+K1k+K1oeK0sOK1j+K0seK1ieK1lF/itLfitZPitYritY/itLHitYnitZQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfitLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+K0sOK1meK0t+K1hSDitLRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4rSw4rWZ4rS94rSwIOK0tF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvitLRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4rSw4rWa4rSw4rWP4rWcIOK0tF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvitLRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ+K0t+K0sOK0t+K1hSDitZkg4rWi4rSw4rWPICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn4rWi4rSw4rWPICVzJyxcbiAgICAgICAgICAgIHMgOiAn4rWJ4rWO4rWJ4rS9JyxcbiAgICAgICAgICAgIHNzIDogJyVkIOK1ieK1juK1ieK0vScsXG4gICAgICAgICAgICBtIDogJ+K1juK1ieK1j+K1k+K0uicsXG4gICAgICAgICAgICBtbSA6ICclZCDitY7itYnitY/itZPitLonLFxuICAgICAgICAgICAgaCA6ICfitZnitLDitYTitLAnLFxuICAgICAgICAgICAgaGggOiAnJWQg4rWc4rSw4rWZ4rWZ4rSw4rWE4rWJ4rWPJyxcbiAgICAgICAgICAgIGQgOiAn4rSw4rWZ4rWZJyxcbiAgICAgICAgICAgIGRkIDogJyVkIG/itZnitZnitLDitY8nLFxuICAgICAgICAgICAgTSA6ICfitLDitaJv4rWT4rWUJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOK1ieK1ouK1ouK1ieK1lOK1jycsXG4gICAgICAgICAgICB5IDogJ+K0sOK1meK0s+K0sOK1mScsXG4gICAgICAgICAgICB5eSA6ICclZCDitYnitZnitLPitLDitZnitY8nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0em07XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/tzm.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ug-cn.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/ug-cn.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js language configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل'\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ugCn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91Zy1jbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzPzYxMTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsYW5ndWFnZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB1Z0NuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndWctY24nLCB7XG4gICAgICAgIG1vbnRoczogJ9mK2KfZhtuL2KfYsV/ZgduQ24vYsdin2YRf2YXYp9ix2Kpf2KbYp9m+2LHbkNmEX9mF2KfZil/YptmJ2Yrbh9mGX9im2YnZituH2YRf2KbYp9uL2Lrbh9iz2Kpf2LPbkNmG2Krbldio2YnYsV/YptuG2YPYqtuV2KjZidixX9mG2YjZitin2KjZidixX9iv25DZg9in2KjZidixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9mK2KfZhtuL2KfYsV/ZgduQ24vYsdin2YRf2YXYp9ix2Kpf2KbYp9m+2LHbkNmEX9mF2KfZil/YptmJ2Yrbh9mGX9im2YnZituH2YRf2KbYp9uL2Lrbh9iz2Kpf2LPbkNmG2Krbldio2YnYsV/YptuG2YPYqtuV2KjZidixX9mG2YjZitin2KjZidixX9iv25DZg9in2KjZidixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9mK25XZg9i025XZhtio25Vf2K/biNi025XZhtio25Vf2LPbldmK2LTbldmG2KjblV/ahtin2LHYtNuV2YbYqNuVX9m+25XZiti025XZhtio25Vf2KzbiNmF25Vf2LTbldmG2KjblScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9mK25Vf2K/biF/Ys9uVX9qG2Kdf2b7blV/YrNuIX9i025UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2YrblV/Yr9uIX9iz25Vf2obYp1/ZvtuVX9is24hf2LTblScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkt2YrZidmE2YlNLdim2KfZitmG2YnarUQt2YPbiNmG2YnYjCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZNiMIFlZWVkt2YrZidmE2YlNLdim2KfZitmG2YnarUQt2YPbiNmG2YnYjCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9mK25DYsdmJ2YUg2YPbkNqG25V82LPbldq+25XYsXzahtuI2LTYqtmJ2YYg2Kjbh9ix24fZhnzahtuI2LR82obbiNi02KrZidmGINmD25DZitmJ2YZ82YPbldqGLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn2YrbkNix2YnZhSDZg9uQ2obblScgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ9iz25XavtuV2LEnIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfahtuI2LTYqtmJ2YYg2Kjbh9ix24fZhidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ9qG24jYtNiq2YnZhiDZg9uQ2YrZidmGJyB8fCBtZXJpZGllbSA9PT0gJ9mD25XahicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZituQ2LHZidmFINmD25DahtuVJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCA5MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9iz25XavtuV2LEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDExMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9qG24jYtNiq2YnZhiDYqNuH2LHbh9mGJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfahtuI2LQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDE4MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9qG24jYtNiq2YnZhiDZg9uQ2YrZidmGJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZg9uV2oYnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYqNuI2q/biNmGINiz2KfYptuV2KpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2Kbbldiq25Ug2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb2YPbkNmE25XYsdmD2YldIGRkZGQgW9iz2KfYptuV2KpdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KrbhtmG24jar9uI2YZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9im2KfZhNiv2YnZhtmC2YldIGRkZGQgW9iz2KfYptuV2KpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDZg9uQ2YrZidmGJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDYqNuH2LHbh9mGJyxcbiAgICAgICAgICAgIHM6ICfZhtuV2obahtuVINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBzczogJyVkINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBtOiAn2KjZidixINmF2YnZhtuH2KonLFxuICAgICAgICAgICAgbW06ICclZCDZhdmJ2Ybbh9iqJyxcbiAgICAgICAgICAgIGg6ICfYqNmJ2LEg2LPYp9im25XYqicsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYptuV2KonLFxuICAgICAgICAgICAgZDogJ9io2YnYsSDZg9uI2YYnLFxuICAgICAgICAgICAgZGQ6ICclZCDZg9uI2YYnLFxuICAgICAgICAgICAgTTogJ9io2YnYsSDYptin2YonLFxuICAgICAgICAgICAgTU06ICclZCDYptin2YonLFxuICAgICAgICAgICAgeTogJ9io2YnYsSDZitmJ2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDZitmJ2YQnXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KC3Zg9uI2YbZiXwt2KbYp9mKfC3avtuV2b7YqtuVKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Zg9uI2YbZiSc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdq+25XZvtiq25UnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgLy8gR0IvVCA3NDA4LTE5OTTjgIrmlbDmja7lhYPlkozkuqTmjaLmoLzlvI/Ct+S/oeaBr+S6pOaNosK35pel5pyf5ZKM5pe26Ze06KGo56S65rOV44CL5LiOSVNPIDg2MDE6MTk4OOetieaViFxuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNyAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1Z0NuO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ug-cn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/uk.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/uk.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            'dd': 'день_дні_днів',\n            'MM': 'місяць_місяці_місяців',\n            'yy': 'рік_роки_років'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        }\n        else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n        };\n\n        if (m === true) {\n            return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        var nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n            'accusative' :\n            ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n                'genitive' :\n                'nominative');\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months : {\n            'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n            'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n        },\n        monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n        weekdays : weekdaysCaseReplace,\n        weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY р.',\n            LLL : 'D MMMM YYYY р., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n        },\n        calendar : {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'за %s',\n            past : '%s тому',\n            s : 'декілька секунд',\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : 'годину',\n            hh : relativeTimeWithPlural,\n            d : 'день',\n            dd : relativeTimeWithPlural,\n            M : 'місяць',\n            MM : relativeTimeWithPlural,\n            y : 'рік',\n            yy : relativeTimeWithPlural\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return uk;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzP2FkYTIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IChudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMCkgPyBmb3Jtc1sxXSA6IGZvcm1zWzJdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3NzJzogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTQuF/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNC4X9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICAnbW0nOiB3aXRob3V0U3VmZml4ID8gJ9GF0LLQuNC70LjQvdCwX9GF0LLQuNC70LjQvdC4X9GF0LLQuNC70LjQvScgOiAn0YXQstC40LvQuNC90YNf0YXQstC40LvQuNC90Lhf0YXQstC40LvQuNC9JyxcbiAgICAgICAgICAgICdoaCc6IHdpdGhvdXRTdWZmaXggPyAn0LPQvtC00LjQvdCwX9Cz0L7QtNC40L3QuF/Qs9C+0LTQuNC9JyA6ICfQs9C+0LTQuNC90YNf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0nLFxuICAgICAgICAgICAgJ2RkJzogJ9C00LXQvdGMX9C00L3Rll/QtNC90ZbQsicsXG4gICAgICAgICAgICAnTU0nOiAn0LzRltGB0Y/RhtGMX9C80ZbRgdGP0YbRll/QvNGW0YHRj9GG0ZbQsicsXG4gICAgICAgICAgICAneXknOiAn0YDRltC6X9GA0L7QutC4X9GA0L7QutGW0LInXG4gICAgICAgIH07XG4gICAgICAgIGlmIChrZXkgPT09ICdtJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0YXQstC40LvQuNC90LAnIDogJ9GF0LLQuNC70LjQvdGDJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdoJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LPQvtC00LjQvdCwJyA6ICfQs9C+0LTQuNC90YMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHBsdXJhbChmb3JtYXRba2V5XSwgK251bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gd2Vla2RheXNDYXNlUmVwbGFjZShtLCBmb3JtYXQpIHtcbiAgICAgICAgdmFyIHdlZWtkYXlzID0ge1xuICAgICAgICAgICAgJ25vbWluYXRpdmUnOiAn0L3QtdC00ZbQu9GPX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTQsF/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y9f0YHRg9Cx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgJ2FjY3VzYXRpdmUnOiAn0L3QtdC00ZbQu9GOX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTRg1/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y5f0YHRg9Cx0L7RgtGDJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgJ2dlbml0aXZlJzogJ9C90LXQtNGW0LvRll/Qv9C+0L3QtdC00ZbQu9C60LBf0LLRltCy0YLQvtGA0LrQsF/RgdC10YDQtdC00Lhf0YfQtdGC0LLQtdGA0LPQsF/Qv+KAmdGP0YLQvdC40YbRll/RgdGD0LHQvtGC0LgnLnNwbGl0KCdfJylcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXlzWydub21pbmF0aXZlJ10uc2xpY2UoMSwgNykuY29uY2F0KHdlZWtkYXlzWydub21pbmF0aXZlJ10uc2xpY2UoMCwgMSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXlzWydub21pbmF0aXZlJ107XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbm91bkNhc2UgPSAoLyhcXFtb0JLQstCj0YNdXFxdKSA/ZGRkZC8pLnRlc3QoZm9ybWF0KSA/XG4gICAgICAgICAgICAnYWNjdXNhdGl2ZScgOlxuICAgICAgICAgICAgKCgvXFxbPyg/OtC80LjQvdGD0LvQvtGXfNC90LDRgdGC0YPQv9C90L7Rlyk/ID9cXF0gP2RkZGQvKS50ZXN0KGZvcm1hdCkgP1xuICAgICAgICAgICAgICAgICdnZW5pdGl2ZScgOlxuICAgICAgICAgICAgICAgICdub21pbmF0aXZlJyk7XG4gICAgICAgIHJldHVybiB3ZWVrZGF5c1tub3VuQ2FzZV1bbS5kYXkoKV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKHN0cikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0ciArICfQvicgKyAodGhpcy5ob3VycygpID09PSAxMSA/ICfQsScgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHVrID0gbW9tZW50LmRlZmluZUxvY2FsZSgndWsnLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgICdmb3JtYXQnOiAn0YHRltGH0L3Rj1/Qu9GO0YLQvtCz0L5f0LHQtdGA0LXQt9C90Y9f0LrQstGW0YLQvdGPX9GC0YDQsNCy0L3Rj1/Rh9C10YDQstC90Y9f0LvQuNC/0L3Rj1/RgdC10YDQv9C90Y9f0LLQtdGA0LXRgdC90Y9f0LbQvtCy0YLQvdGPX9C70LjRgdGC0L7Qv9Cw0LTQsF/Qs9GA0YPQtNC90Y8nLnNwbGl0KCdfJyksXG4gICAgICAgICAgICAnc3RhbmRhbG9uZSc6ICfRgdGW0YfQtdC90Yxf0LvRjtGC0LjQuV/QsdC10YDQtdC30LXQvdGMX9C60LLRltGC0LXQvdGMX9GC0YDQsNCy0LXQvdGMX9GH0LXRgNCy0LXQvdGMX9C70LjQv9C10L3RjF/RgdC10YDQv9C10L3RjF/QstC10YDQtdGB0LXQvdGMX9C20L7QstGC0LXQvdGMX9C70LjRgdGC0L7Qv9Cw0LRf0LPRgNGD0LTQtdC90YwnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0YHRltGHX9C70Y7Rgl/QsdC10YBf0LrQstGW0YJf0YLRgNCw0LJf0YfQtdGA0LJf0LvQuNC/X9GB0LXRgNC/X9Cy0LXRgF/QttC+0LLRgl/Qu9C40YHRgl/Qs9GA0YPQtCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiB3ZWVrZGF5c0Nhc2VSZXBsYWNlLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWSDRgC4nLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZINGALiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSDRgC4sIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KHRjNC+0LPQvtC00L3RliAnKSxcbiAgICAgICAgICAgIG5leHREYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JfQsNCy0YLRgNCwICcpLFxuICAgICAgICAgICAgbGFzdERheTogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQktGH0L7RgNCwICcpLFxuICAgICAgICAgICAgbmV4dFdlZWs6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KNdIGRkZGQgWycpLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JzQuNC90YPQu9C+0ZddIGRkZGQgWycpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQnNC40L3Rg9C70L7Qs9C+XSBkZGRkIFsnKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQt9CwICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0YLQvtC80YMnLFxuICAgICAgICAgICAgcyA6ICfQtNC10LrRltC70YzQutCwINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzcyA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGggOiAn0LPQvtC00LjQvdGDJyxcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiAn0LTQtdC90YwnLFxuICAgICAgICAgICAgZGQgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTSA6ICfQvNGW0YHRj9GG0YwnLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeSA6ICfRgNGW0LonLFxuICAgICAgICAgICAgeXkgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIE0uIEUuOiB0aG9zZSB0d28gYXJlIHZpcnR1YWxseSB1bnVzZWQgYnV0IGEgdXNlciBtaWdodCB3YW50IHRvIGltcGxlbWVudCB0aGVtIGZvciBoaXMvaGVyIHdlYnNpdGUgZm9yIHNvbWUgcmVhc29uXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfRlnzRgNCw0L3QutGDfNC00L3Rj3zQstC10YfQvtGA0LAvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0L7RgNCwKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0L3QvtGH0ZYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA0LDQvdC60YMnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0L7RgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQuXzQs9C+KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QuSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCz0L4nO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVrO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/uk.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/ur.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/ur.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'جنوری',\n        'فروری',\n        'مارچ',\n        'اپریل',\n        'مئی',\n        'جون',\n        'جولائی',\n        'اگست',\n        'ستمبر',\n        'اکتوبر',\n        'نومبر',\n        'دسمبر'\n    ];\n    var days = [\n        'اتوار',\n        'پیر',\n        'منگل',\n        'بدھ',\n        'جمعرات',\n        'جمعہ',\n        'ہفتہ'\n    ];\n\n    var ur = moment.defineLocale('ur', {\n        months : months,\n        monthsShort : months,\n        weekdays : days,\n        weekdaysShort : days,\n        weekdaysMin : days,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd، D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /صبح|شام/,\n        isPM : function (input) {\n            return 'شام' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar : {\n            sameDay : '[آج بوقت] LT',\n            nextDay : '[کل بوقت] LT',\n            nextWeek : 'dddd [بوقت] LT',\n            lastDay : '[گذشتہ روز بوقت] LT',\n            lastWeek : '[گذشتہ] dddd [بوقت] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s بعد',\n            past : '%s قبل',\n            s : 'چند سیکنڈ',\n            ss : '%d سیکنڈ',\n            m : 'ایک منٹ',\n            mm : '%d منٹ',\n            h : 'ایک گھنٹہ',\n            hh : '%d گھنٹے',\n            d : 'ایک دن',\n            dd : '%d دن',\n            M : 'ایک ماہ',\n            MM : '%d ماہ',\n            y : 'ایک سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ur;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzPzUyOTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAn2KzZhtmI2LHbjCcsXG4gICAgICAgICfZgdix2YjYsduMJyxcbiAgICAgICAgJ9mF2KfYsdqGJyxcbiAgICAgICAgJ9in2b7YsduM2YQnLFxuICAgICAgICAn2YXYptuMJyxcbiAgICAgICAgJ9is2YjZhicsXG4gICAgICAgICfYrNmI2YTYp9im24wnLFxuICAgICAgICAn2Kfar9iz2KonLFxuICAgICAgICAn2LPYqtmF2KjYsScsXG4gICAgICAgICfYp9qp2KrZiNio2LEnLFxuICAgICAgICAn2YbZiNmF2KjYsScsXG4gICAgICAgICfYr9iz2YXYqNixJ1xuICAgIF07XG4gICAgdmFyIGRheXMgPSBbXG4gICAgICAgICfYp9iq2YjYp9ixJyxcbiAgICAgICAgJ9m+24zYsScsXG4gICAgICAgICfZhdmG2q/ZhCcsXG4gICAgICAgICfYqNiv2r4nLFxuICAgICAgICAn2KzZhdi52LHYp9iqJyxcbiAgICAgICAgJ9is2YXYuduBJyxcbiAgICAgICAgJ9uB2YHYqtuBJ1xuICAgIF07XG5cbiAgICB2YXIgdXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1cicsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXMgOiBkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW4gOiBkYXlzLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZNiMIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LXYqNitfNi02KfZhS8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LXYqNitJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJztcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vYotisINio2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vaqdmEINio2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb2q/YsNi02KrbgSDYsdmI2LIg2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1var9iw2LTYqtuBXSBkZGRkIFvYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzINio2LnYrycsXG4gICAgICAgICAgICBwYXN0IDogJyVzINmC2KjZhCcsXG4gICAgICAgICAgICBzIDogJ9qG2YbYryDYs9uM2qnZhtqIJyxcbiAgICAgICAgICAgIHNzIDogJyVkINiz24zaqdmG2ognLFxuICAgICAgICAgICAgbSA6ICfYp9uM2qkg2YXZhtm5JyxcbiAgICAgICAgICAgIG1tIDogJyVkINmF2YbZuScsXG4gICAgICAgICAgICBoIDogJ9in24zaqSDar9q+2YbZuduBJyxcbiAgICAgICAgICAgIGhoIDogJyVkINqv2r7Zhtm525InLFxuICAgICAgICAgICAgZCA6ICfYp9uM2qkg2K/ZhicsXG4gICAgICAgICAgICBkZCA6ICclZCDYr9mGJyxcbiAgICAgICAgICAgIE0gOiAn2KfbjNqpINmF2KfbgScsXG4gICAgICAgICAgICBNTSA6ICclZCDZhdin24EnLFxuICAgICAgICAgICAgeSA6ICfYp9uM2qkg2LPYp9mEJyxcbiAgICAgICAgICAgIHl5IDogJyVkINiz2KfZhCdcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1cjtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/ur.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/uz-latn.js":
/*!***********************************************!*\
  !*** ./node_modules/moment/locale/uz-latn.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n        monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n        weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'D MMMM YYYY, dddd HH:mm'\n        },\n        calendar : {\n            sameDay : '[Bugun soat] LT [da]',\n            nextDay : '[Ertaga] LT [da]',\n            nextWeek : 'dddd [kuni soat] LT [da]',\n            lastDay : '[Kecha soat] LT [da]',\n            lastWeek : '[O\\'tgan] dddd [kuni soat] LT [da]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'Yaqin %s ichida',\n            past : 'Bir necha %s oldin',\n            s : 'soniya',\n            ss : '%d soniya',\n            m : 'bir daqiqa',\n            mm : '%d daqiqa',\n            h : 'bir soat',\n            hh : '%d soat',\n            d : 'bir kun',\n            dd : '%d kun',\n            M : 'bir oy',\n            MM : '%d oy',\n            y : 'bir yil',\n            yy : '%d yil'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return uzLatn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qcz8wMTBlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHV6TGF0biA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3V6LWxhdG4nLCB7XG4gICAgICAgIG1vbnRocyA6ICdZYW52YXJfRmV2cmFsX01hcnRfQXByZWxfTWF5X0l5dW5fSXl1bF9Bdmd1c3RfU2VudGFicl9Pa3RhYnJfTm95YWJyX0Rla2Ficicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnWWFuX0Zldl9NYXJfQXByX01heV9JeXVuX0l5dWxfQXZnX1Nlbl9Pa3RfTm95X0Rlaycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnWWFrc2hhbmJhX0R1c2hhbmJhX1Nlc2hhbmJhX0Nob3JzaGFuYmFfUGF5c2hhbmJhX0p1bWFfU2hhbmJhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1lha19EdXNoX1Nlc2hfQ2hvcl9QYXlfSnVtX1NoYW4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1lhX0R1X1NlX0Nob19QYV9KdV9TaGEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdEIE1NTU0gWVlZWSwgZGRkZCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tCdWd1biBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0VydGFnYV0gTFQgW2RhXScsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtrdW5pIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS2VjaGEgc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbT1xcJ3RnYW5dIGRkZGQgW2t1bmkgc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnWWFxaW4gJXMgaWNoaWRhJyxcbiAgICAgICAgICAgIHBhc3QgOiAnQmlyIG5lY2hhICVzIG9sZGluJyxcbiAgICAgICAgICAgIHMgOiAnc29uaXlhJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNvbml5YScsXG4gICAgICAgICAgICBtIDogJ2JpciBkYXFpcWEnLFxuICAgICAgICAgICAgbW0gOiAnJWQgZGFxaXFhJyxcbiAgICAgICAgICAgIGggOiAnYmlyIHNvYXQnLFxuICAgICAgICAgICAgaGggOiAnJWQgc29hdCcsXG4gICAgICAgICAgICBkIDogJ2JpciBrdW4nLFxuICAgICAgICAgICAgZGQgOiAnJWQga3VuJyxcbiAgICAgICAgICAgIE0gOiAnYmlyIG95JyxcbiAgICAgICAgICAgIE1NIDogJyVkIG95JyxcbiAgICAgICAgICAgIHkgOiAnYmlyIHlpbCcsXG4gICAgICAgICAgICB5eSA6ICclZCB5aWwnXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHV6TGF0bjtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/uz-latn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/uz.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/uz.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var uz = moment.defineLocale('uz', {\n        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'D MMMM YYYY, dddd HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бугун соат] LT [да]',\n            nextDay : '[Эртага] LT [да]',\n            nextWeek : 'dddd [куни соат] LT [да]',\n            lastDay : '[Кеча соат] LT [да]',\n            lastWeek : '[Утган] dddd [куни соат] LT [да]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'Якин %s ичида',\n            past : 'Бир неча %s олдин',\n            s : 'фурсат',\n            ss : '%d фурсат',\n            m : 'бир дакика',\n            mm : '%d дакика',\n            h : 'бир соат',\n            hh : '%d соат',\n            d : 'бир кун',\n            dd : '%d кун',\n            M : 'бир ой',\n            MM : '%d ой',\n            y : 'бир йил',\n            yy : '%d йил'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return uz;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzPzJlOGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdXogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1eicsIHtcbiAgICAgICAgbW9udGhzIDogJ9GP0L3QstCw0YBf0YTQtdCy0YDQsNC7X9C80LDRgNGCX9Cw0L/RgNC10Ltf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGAX9C+0LrRgtGP0LHRgF/QvdC+0Y/QsdGAX9C00LXQutCw0LHRgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9Cv0LrRiNCw0L3QsdCwX9CU0YPRiNCw0L3QsdCwX9Ch0LXRiNCw0L3QsdCwX9Cn0L7RgNGI0LDQvdCx0LBf0J/QsNC50YjQsNC90LHQsF/QltGD0LzQsF/QqNCw0L3QsdCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9Cv0LrRiF/QlNGD0Yhf0KHQtdGIX9Cn0L7RgF/Qn9Cw0Llf0JbRg9C8X9Co0LDQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0K/Qul/QlNGDX9Ch0LVf0KfQvl/Qn9CwX9CW0YNf0KjQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ0QgTU1NTSBZWVlZLCBkZGRkIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CR0YPQs9GD0L0g0YHQvtCw0YJdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vQrdGA0YLQsNCz0LBdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvQutGD0L3QuCDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9Ca0LXRh9CwINGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9Cj0YLQs9Cw0L1dIGRkZGQgW9C60YPQvdC4INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9Cv0LrQuNC9ICVzINC40YfQuNC00LAnLFxuICAgICAgICAgICAgcGFzdCA6ICfQkdC40YAg0L3QtdGH0LAgJXMg0L7Qu9C00LjQvScsXG4gICAgICAgICAgICBzIDogJ9GE0YPRgNGB0LDRgicsXG4gICAgICAgICAgICBzcyA6ICclZCDRhNGD0YDRgdCw0YInLFxuICAgICAgICAgICAgbSA6ICfQsdC40YAg0LTQsNC60LjQutCwJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC00LDQutC40LrQsCcsXG4gICAgICAgICAgICBoIDogJ9Cx0LjRgCDRgdC+0LDRgicsXG4gICAgICAgICAgICBoaCA6ICclZCDRgdC+0LDRgicsXG4gICAgICAgICAgICBkIDogJ9Cx0LjRgCDQutGD0L0nLFxuICAgICAgICAgICAgZGQgOiAnJWQg0LrRg9C9JyxcbiAgICAgICAgICAgIE0gOiAn0LHQuNGAINC+0LknLFxuICAgICAgICAgICAgTU0gOiAnJWQg0L7QuScsXG4gICAgICAgICAgICB5IDogJ9Cx0LjRgCDQudC40LsnLFxuICAgICAgICAgICAgeXkgOiAnJWQg0LnQuNC7J1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1ejtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/uz.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/vi.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/vi.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var vi = moment.defineLocale('vi', {\n        months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n        monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n        weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact : true,\n        meridiemParse: /sa|ch/i,\n        isPM : function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM [năm] YYYY',\n            LLL : 'D MMMM [năm] YYYY HH:mm',\n            LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n            l : 'DD/M/YYYY',\n            ll : 'D MMM YYYY',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd, D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần rồi lúc] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s tới',\n            past : '%s trước',\n            s : 'vài giây',\n            ss : '%d giây' ,\n            m : 'một phút',\n            mm : '%d phút',\n            h : 'một giờ',\n            hh : '%d giờ',\n            d : 'một ngày',\n            dd : '%d ngày',\n            M : 'một tháng',\n            MM : '%d tháng',\n            y : 'một năm',\n            yy : '%d năm'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : function (number) {\n            return number;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return vi;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3ZpLmpzPzI5MjEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdmkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd2aScsIHtcbiAgICAgICAgbW9udGhzIDogJ3Row6FuZyAxX3Row6FuZyAyX3Row6FuZyAzX3Row6FuZyA0X3Row6FuZyA1X3Row6FuZyA2X3Row6FuZyA3X3Row6FuZyA4X3Row6FuZyA5X3Row6FuZyAxMF90aMOhbmcgMTFfdGjDoW5nIDEyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdUaDAxX1RoMDJfVGgwM19UaDA0X1RoMDVfVGgwNl9UaDA3X1RoMDhfVGgwOV9UaDEwX1RoMTFfVGgxMicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2No4bunIG5o4bqtdF90aOG7qSBoYWlfdGjhu6kgYmFfdGjhu6kgdMawX3Ro4bupIG7Eg21fdGjhu6kgc8OhdV90aOG7qSBi4bqjeScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdDTl9UMl9UM19UNF9UNV9UNl9UNycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9zYXxjaC9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL15jaCQvaS50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnc2EnIDogJ1NBJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnY2gnIDogJ0NIJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBbbsSDbV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFtuxINtXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFtuxINtXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnREQvTS9ZWVlZJyxcbiAgICAgICAgICAgIGxsIDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsIDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdkZGQsIEQgTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIw7RtIG5heSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW05nw6B5IG1haSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3R14bqnbiB04bubaSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0jDtG0gcXVhIGzDumNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbdHXhuqduIHLhu5NpIGzDumNdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIHThu5tpJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgdHLGsOG7m2MnLFxuICAgICAgICAgICAgcyA6ICd2w6BpIGdpw6J5JyxcbiAgICAgICAgICAgIHNzIDogJyVkIGdpw6J5JyAsXG4gICAgICAgICAgICBtIDogJ23hu5l0IHBow7p0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIHBow7p0JyxcbiAgICAgICAgICAgIGggOiAnbeG7mXQgZ2nhu50nLFxuICAgICAgICAgICAgaGggOiAnJWQgZ2nhu50nLFxuICAgICAgICAgICAgZCA6ICdt4buZdCBuZ8OgeScsXG4gICAgICAgICAgICBkZCA6ICclZCBuZ8OgeScsXG4gICAgICAgICAgICBNIDogJ23hu5l0IHRow6FuZycsXG4gICAgICAgICAgICBNTSA6ICclZCB0aMOhbmcnLFxuICAgICAgICAgICAgeSA6ICdt4buZdCBuxINtJyxcbiAgICAgICAgICAgIHl5IDogJyVkIG7Eg20nXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB2aTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/vi.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/x-pseudo.js":
/*!************************************************!*\
  !*** ./node_modules/moment/locale/x-pseudo.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n        monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n        weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[T~ódá~ý át] LT',\n            nextDay : '[T~ómó~rró~w át] LT',\n            nextWeek : 'dddd [át] LT',\n            lastDay : '[Ý~ést~érdá~ý át] LT',\n            lastWeek : '[L~ást] dddd [át] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'í~ñ %s',\n            past : '%s á~gó',\n            s : 'á ~féw ~sécó~ñds',\n            ss : '%d s~écóñ~ds',\n            m : 'á ~míñ~úté',\n            mm : '%d m~íñú~tés',\n            h : 'á~ñ hó~úr',\n            hh : '%d h~óúrs',\n            d : 'á ~dáý',\n            dd : '%d d~áýs',\n            M : 'á ~móñ~th',\n            MM : '%d m~óñt~hs',\n            y : 'á ~ýéár',\n            yy : '%d ý~éárs'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return xPseudo;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3gtcHNldWRvLmpzP2ZkN2UiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgeFBzZXVkbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3gtcHNldWRvJywge1xuICAgICAgICBtb250aHMgOiAnSn7DocOxw7rDoX5yw71fRn7DqWJyw7p+w6Fyw71ffk3DoXJjfmhfw4FwfnLDrWxffk3DocO9X35Kw7rDscOpfl9Kw7psfsO9X8OBw7p+Z8O6c3R+X1PDqXB+dMOpbWJ+w6lyX8OTfmN0w7NifsOpcl/DkX7Ds3bDqW1+YsOpcl9+RMOpY8Opfm1iw6lyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKfsOhw7FffkbDqWJffk3DoXJffsOBcHJffk3DocO9X35Kw7rDsV9+SsO6bF9+w4HDumdfflPDqXBffsOTY3RffsORw7N2X35Ew6ljJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnU37DusOxZMOhfsO9X03Ds37DsWTDocO9fl9Uw7rDqX5zZMOhw71+X1fDqWR+w7HDqXNkfsOhw71fVH5ow7pyc35kw6HDvV9+RnLDrWR+w6HDvV9TfsOhdMO6cn5kw6HDvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTfsO6w7Fffk3Ds8OxX35Uw7rDqV9+V8OpZF9+VGjDul9+RnLDrV9+U8OhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU37Dul9Nw7N+X1TDul9+V8OpX1R+aF9Gcn5fU8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUfsOzZMOhfsO9IMOhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVH7Ds23Ds35ycsOzfncgw6F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvDoXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW8OdfsOpc3R+w6lyZMOhfsO9IMOhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0x+w6FzdF0gZGRkZCBbw6F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnw61+w7EgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDDoX5nw7MnLFxuICAgICAgICAgICAgcyA6ICfDoSB+ZsOpdyB+c8OpY8OzfsOxZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc37DqWPDs8OxfmRzJyxcbiAgICAgICAgICAgIG0gOiAnw6Egfm3DrcOxfsO6dMOpJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1+w63DscO6fnTDqXMnLFxuICAgICAgICAgICAgaCA6ICfDoX7DsSBow7N+w7pyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGh+w7PDunJzJyxcbiAgICAgICAgICAgIGQgOiAnw6EgfmTDocO9JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGR+w6HDvXMnLFxuICAgICAgICAgICAgTSA6ICfDoSB+bcOzw7F+dGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbX7Ds8OxdH5ocycsXG4gICAgICAgICAgICB5IDogJ8OhIH7DvcOpw6FyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMO9fsOpw6FycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHRofHN0fG5kfHJkKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB4UHNldWRvO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/x-pseudo.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/yo.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/yo.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var yo = moment.defineLocale('yo', {\n        months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n        monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Ònì ni] LT',\n            nextDay : '[Ọ̀la ni] LT',\n            nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n            lastDay : '[Àna ni] LT',\n            lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ní %s',\n            past : '%s kọjá',\n            s : 'ìsẹjú aayá die',\n            ss :'aayá %d',\n            m : 'ìsẹjú kan',\n            mm : 'ìsẹjú %d',\n            h : 'wákati kan',\n            hh : 'wákati %d',\n            d : 'ọjọ́ kan',\n            dd : 'ọjọ́ %d',\n            M : 'osù kan',\n            MM : 'osù %d',\n            y : 'ọdún kan',\n            yy : 'ọdún %d'\n        },\n        dayOfMonthOrdinalParse : /ọjọ́\\s\\d{1,2}/,\n        ordinal : 'ọjọ́ %d',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return yo;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS95by5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzPzdmMzMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgeW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd5bycsIHtcbiAgICAgICAgbW9udGhzIDogJ1PhurnMgXLhurnMgV9FzIByZcyAbGXMgF/hurhy4bq5zIBuYcyAX0nMgGdiZcyBX0XMgGJpYmlfT8yAa3XMgGR1X0Fn4bq5bW9fT8yAZ3XMgW5fT3dld2Vf4buMzIB3YcyAcmHMgF9CZcyBbHXMgV/hu4zMgHDhurnMgMyAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdT4bq5zIFyX0XMgHJsX+G6uHJuX0nMgGdiX0XMgGJpX0/MgGt1zIBfQWfhurlfT8yAZ3XMgV9Pd2Vf4buMzIB3YcyAX0JlzIFsX+G7jMyAcOG6ucyAzIAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0HMgGnMgGt1zIFfQWplzIFfScyAc+G6ucyBZ3VuX+G7jGrhu43MgXJ1zIFf4buMauG7jcyBYuG7jV/hurh0acyAX0HMgGJhzIFt4bq5zIF0YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdBzIBpzIBrX0FqZcyBX0nMgHPhurnMgV/hu4xqcl/hu4xqYl/hurh0acyAX0HMgGJhzIEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0HMgGnMgF9Bal9JzIBzX+G7jHJf4buMYl/hurh0X0HMgGInLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbT8yAbmnMgCBuaV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4buMzIBsYSBuaV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb4buMc+G6ucyAIHRvzIFuXFwnYuG7jV0gW25pXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tBzIBuYSBuaV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBb4buMc+G6ucyAIHRvzIFs4buNzIFdIFtuaV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ25pzIEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBr4buNamHMgScsXG4gICAgICAgICAgICBzIDogJ2nMgHPhurlqdcyBIGFheWHMgSBkaWUnLFxuICAgICAgICAgICAgc3MgOidhYXlhzIEgJWQnLFxuICAgICAgICAgICAgbSA6ICdpzIBz4bq5anXMgSBrYW4nLFxuICAgICAgICAgICAgbW0gOiAnacyAc+G6uWp1zIEgJWQnLFxuICAgICAgICAgICAgaCA6ICd3YcyBa2F0aSBrYW4nLFxuICAgICAgICAgICAgaGggOiAnd2HMgWthdGkgJWQnLFxuICAgICAgICAgICAgZCA6ICfhu41q4buNzIEga2FuJyxcbiAgICAgICAgICAgIGRkIDogJ+G7jWrhu43MgSAlZCcsXG4gICAgICAgICAgICBNIDogJ29zdcyAIGthbicsXG4gICAgICAgICAgICBNTSA6ICdvc3XMgCAlZCcsXG4gICAgICAgICAgICB5IDogJ+G7jWR1zIFuIGthbicsXG4gICAgICAgICAgICB5eSA6ICfhu41kdcyBbiAlZCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC/hu41q4buNzIFcXHNcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiAn4buNauG7jcyBICVkJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB5bztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/yo.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/zh-cn.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/zh-cn.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日Ah点mm分',\n            LLLL : 'YYYY年M月D日ddddAh点mm分',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' ||\n                    meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天]LT',\n            nextDay : '[明天]LT',\n            nextWeek : '[下]ddddLT',\n            lastDay : '[昨天]LT',\n            lastWeek : '[上]ddddLT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s内',\n            past : '%s前',\n            s : '几秒',\n            ss : '%d 秒',\n            m : '1 分钟',\n            mm : '%d 分钟',\n            h : '1 小时',\n            hh : '%d 小时',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 个月',\n            MM : '%d 个月',\n            y : '1 年',\n            yy : '%d 年'\n        },\n        week : {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return zhCn;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWNuLmpzPzVjM2EiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgemhDbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLWNuJywge1xuICAgICAgICBtb250aHMgOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn5ZGo5pelX+WRqOS4gF/lkajkuoxf5ZGo5LiJX+WRqOWbm1/lkajkupRf5ZGo5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVnlubRN5pyIROaXpUFo54K5bW3liIYnLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZ5bm0TeaciETml6VkZGRkQWjngrltbeWIhicsXG4gICAgICAgICAgICBsIDogJ1lZWVkvTS9EJyxcbiAgICAgICAgICAgIGxsIDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGwgOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHxcbiAgICAgICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZmuS4iicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyAn5Lit5Y2IJ1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+S7iuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vmmI7lpKldTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+S4i11kZGRkTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb5pio5aSpXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vkuIpdZGRkZExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOWRqCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+WRqCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVz5YaFJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXPliY0nLFxuICAgICAgICAgICAgcyA6ICflh6Dnp5InLFxuICAgICAgICAgICAgc3MgOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG0gOiAnMSDliIbpkp8nLFxuICAgICAgICAgICAgbW0gOiAnJWQg5YiG6ZKfJyxcbiAgICAgICAgICAgIGggOiAnMSDlsI/ml7YnLFxuICAgICAgICAgICAgaGggOiAnJWQg5bCP5pe2JyxcbiAgICAgICAgICAgIGQgOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQgOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIE0gOiAnMSDkuKrmnIgnLFxuICAgICAgICAgICAgTU0gOiAnJWQg5Liq5pyIJyxcbiAgICAgICAgICAgIHkgOiAnMSDlubQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg5bm0J1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgLy8gR0IvVCA3NDA4LTE5OTTjgIrmlbDmja7lhYPlkozkuqTmjaLmoLzlvI/Ct+S/oeaBr+S6pOaNosK35pel5pyf5ZKM5pe26Ze06KGo56S65rOV44CL5LiOSVNPIDg2MDE6MTk4OOetieaViFxuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB6aENuO1xuXG59KSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxRQUNBO0FBQ0EsWUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/zh-cn.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/zh-hk.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/zh-hk.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日dddd HH:mm',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天]LT',\n            nextDay : '[明天]LT',\n            nextWeek : '[下]ddddLT',\n            lastDay : '[昨天]LT',\n            lastWeek : '[上]ddddLT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd' :\n                case 'D' :\n                case 'DDD' :\n                    return number + '日';\n                case 'M' :\n                    return number + '月';\n                case 'w' :\n                case 'W' :\n                    return number + '週';\n                default :\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s內',\n            past : '%s前',\n            s : '幾秒',\n            ss : '%d 秒',\n            m : '1 分鐘',\n            mm : '%d 分鐘',\n            h : '1 小時',\n            hh : '%d 小時',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 個月',\n            MM : '%d 個月',\n            y : '1 年',\n            yy : '%d 年'\n        }\n    });\n\n    return zhHk;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWhrLmpzPzQ5YWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgemhIayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLWhrJywge1xuICAgICAgICBtb250aHMgOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbCA6ICdZWVlZL00vRCcsXG4gICAgICAgICAgICBsbCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICflh4zmmagnIHx8IG1lcmlkaWVtID09PSAn5pep5LiKJyB8fCBtZXJpZGllbSA9PT0gJ+S4iuWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuK3ljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+S7iuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vmmI7lpKldTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+S4i11kZGRkTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb5pio5aSpXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vkuIpdZGRkZExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOmAsSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnIDpcbiAgICAgICAgICAgICAgICBjYXNlICdEJyA6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJyA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBjYXNlICdNJyA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JyA6XG4gICAgICAgICAgICAgICAgY2FzZSAnVycgOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+mAsSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdCA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclc+WFpycsXG4gICAgICAgICAgICBwYXN0IDogJyVz5YmNJyxcbiAgICAgICAgICAgIHMgOiAn5bm+56eSJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOenkicsXG4gICAgICAgICAgICBtIDogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOWIhumQmCcsXG4gICAgICAgICAgICBoIDogJzEg5bCP5pmCJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkIDogJzEg5aSpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOWkqScsXG4gICAgICAgICAgICBNIDogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOWAi+aciCcsXG4gICAgICAgICAgICB5IDogJzEg5bm0JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOW5tCdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHpoSGs7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFFBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/zh-hk.js\n");

/***/ }),

/***/ "./node_modules/moment/locale/zh-tw.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/zh-tw.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日dddd HH:mm',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天] LT',\n            nextDay : '[明天] LT',\n            nextWeek : '[下]dddd LT',\n            lastDay : '[昨天] LT',\n            lastWeek : '[上]dddd LT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd' :\n                case 'D' :\n                case 'DDD' :\n                    return number + '日';\n                case 'M' :\n                    return number + '月';\n                case 'w' :\n                case 'W' :\n                    return number + '週';\n                default :\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s內',\n            past : '%s前',\n            s : '幾秒',\n            ss : '%d 秒',\n            m : '1 分鐘',\n            mm : '%d 分鐘',\n            h : '1 小時',\n            hh : '%d 小時',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 個月',\n            MM : '%d 個月',\n            y : '1 年',\n            yy : '%d 年'\n        }\n    });\n\n    return zhTw;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzPzkwZWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgemhUdyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLXR3Jywge1xuICAgICAgICBtb250aHMgOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbCA6ICdZWVlZL00vRCcsXG4gICAgICAgICAgICBsbCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICflh4zmmagnIHx8IG1lcmlkaWVtID09PSAn5pep5LiKJyB8fCBtZXJpZGllbSA9PT0gJ+S4iuWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuK3ljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+S7iuWkqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb5piO5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb5LiLXWRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb5pio5aSpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb5LiKXWRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCcgOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnIDpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnIDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nIDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnIDpcbiAgICAgICAgICAgICAgICBjYXNlICdXJyA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn6YCxJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0IDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVz5YWnJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXPliY0nLFxuICAgICAgICAgICAgcyA6ICflub7np5InLFxuICAgICAgICAgICAgc3MgOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG0gOiAnMSDliIbpkJgnLFxuICAgICAgICAgICAgbW0gOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGggOiAnMSDlsI/mmYInLFxuICAgICAgICAgICAgaGggOiAnJWQg5bCP5pmCJyxcbiAgICAgICAgICAgIGQgOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQgOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIE0gOiAnMSDlgIvmnIgnLFxuICAgICAgICAgICAgTU0gOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHkgOiAnMSDlubQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg5bm0J1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhUdztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFDQTtBQUNBLFlBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/locale/zh-tw.js\n");

/***/ }),

/***/ "./node_modules/moment/moment.js":
/*!***************************************!*\
  !*** ./node_modules/moment/moment.js ***!
  \***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js\n\n;(function (global, factory) {\n     true ? module.exports = factory() :\n    undefined\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks () {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback (callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return input != null && Object.prototype.toString.call(input) === '[object Object]';\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return (Object.getOwnPropertyNames(obj).length === 0);\n        } else {\n            var k;\n            for (k in obj) {\n                if (obj.hasOwnProperty(k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n    }\n\n    function isDate(input) {\n        return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n    }\n\n    function map(arr, fn) {\n        var res = [], i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC (input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty           : false,\n            unusedTokens    : [],\n            unusedInput     : [],\n            overflow        : -2,\n            charsLeftOver   : 0,\n            nullInput       : false,\n            invalidMonth    : null,\n            invalidFormat   : false,\n            userInvalidated : false,\n            iso             : false,\n            parsedDateParts : [],\n            meridiem        : null,\n            rfc2822         : false,\n            weekdayMismatch : false\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this);\n            var len = t.length >>> 0;\n\n            for (var i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m);\n            var parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            var isNowValid = !isNaN(m._d.getTime()) &&\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid = isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            }\n            else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid (flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        }\n        else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = hooks.momentProperties = [];\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    var updateInProgress = false;\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment (obj) {\n        return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n    }\n\n    function absFloor (number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if ((dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    function warn(msg) {\n        if (hooks.suppressDeprecationWarnings === false &&\n                (typeof console !==  'undefined') && console.warn) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [];\n                var arg;\n                for (var i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (var key in arguments[0]) {\n                            arg += key + ': ' + arguments[0][key] + ', ';\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n    }\n\n    function set (config) {\n        var prop, i;\n        for (i in config) {\n            prop = config[i];\n            if (isFunction(prop)) {\n                this[i] = prop;\n            } else {\n                this['_' + i] = prop;\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' + (/\\d{1,2}/).source);\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig), prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (hasOwnProp(parentConfig, prop) &&\n                    !hasOwnProp(childConfig, prop) &&\n                    isObject(parentConfig[prop])) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i, res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay : '[Today at] LT',\n        nextDay : '[Tomorrow at] LT',\n        nextWeek : 'dddd [at] LT',\n        lastDay : '[Yesterday at] LT',\n        lastWeek : '[Last] dddd [at] LT',\n        sameElse : 'L'\n    };\n\n    function calendar (key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    var defaultLongDateFormat = {\n        LTS  : 'h:mm:ss A',\n        LT   : 'h:mm A',\n        L    : 'MM/DD/YYYY',\n        LL   : 'MMMM D, YYYY',\n        LLL  : 'MMMM D, YYYY h:mm A',\n        LLLL : 'dddd, MMMM D, YYYY h:mm A'\n    };\n\n    function longDateFormat (key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n            return val.slice(1);\n        });\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate () {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d';\n    var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal (number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future : 'in %s',\n        past   : '%s ago',\n        s  : 'a few seconds',\n        ss : '%d seconds',\n        m  : 'a minute',\n        mm : '%d minutes',\n        h  : 'an hour',\n        hh : '%d hours',\n        d  : 'a day',\n        dd : '%d days',\n        M  : 'a month',\n        MM : '%d months',\n        y  : 'a year',\n        yy : '%d years'\n    };\n\n    function relativeTime (number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return (isFunction(output)) ?\n            output(number, withoutSuffix, string, isFuture) :\n            output.replace(/%d/i, number);\n    }\n\n    function pastFuture (diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias (unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [];\n        for (var u in unitsObj) {\n            units.push({unit: u, priority: priorities[u]});\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n    var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n    var formatFunctions = {};\n\n    var formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken (token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(func.apply(this, arguments), token);\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens), i, length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '', i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var match1         = /\\d/;            //       0 - 9\n    var match2         = /\\d\\d/;          //      00 - 99\n    var match3         = /\\d{3}/;         //     000 - 999\n    var match4         = /\\d{4}/;         //    0000 - 9999\n    var match6         = /[+-]?\\d{6}/;    // -999999 - 999999\n    var match1to2      = /\\d\\d?/;         //       0 - 99\n    var match3to4      = /\\d\\d\\d\\d?/;     //     999 - 9999\n    var match5to6      = /\\d\\d\\d\\d\\d\\d?/; //   99999 - 999999\n    var match1to3      = /\\d{1,3}/;       //       0 - 999\n    var match1to4      = /\\d{1,4}/;       //       0 - 9999\n    var match1to6      = /[+-]?\\d{1,6}/;  // -999999 - 999999\n\n    var matchUnsigned  = /\\d+/;           //       0 - inf\n    var matchSigned    = /[+-]?\\d+/;      //    -inf - inf\n\n    var matchOffset    = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n    var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n    var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n    // any word (or two) characters or numbers including two/three word month in arabic.\n    // includes scottish gaelic two word and hyphenated months\n    var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n    var regexes = {};\n\n    function addRegexToken (token, regex, strictRegex) {\n        regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n            return (isStrict && strictRegex) ? strictRegex : regex;\n        };\n    }\n\n    function getParseRegexForToken (token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n            return p1 || p2 || p3 || p4;\n        }));\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken (token, callback) {\n        var i, func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken (token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0;\n    var MONTH = 1;\n    var DATE = 2;\n    var HOUR = 3;\n    var MINUTE = 4;\n    var SECOND = 5;\n    var MILLISECOND = 6;\n    var WEEK = 7;\n    var WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? '' + y : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY',   4],       0, 'year');\n    addFormatToken(0, ['YYYYY',  5],       0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y',      matchSigned);\n    addRegexToken('YY',     match1to2, match2);\n    addRegexToken('YYYY',   match1to4, match4);\n    addRegexToken('YYYYY',  match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear () {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet (unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get (mom, unit) {\n        return mom.isValid() ?\n            mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n    }\n\n    function set$1 (mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n            }\n            else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet (units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n\n    function stringSet (units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units);\n            for (var i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M',    match1to2);\n    addRegexToken('MM',   match1to2, match2);\n    addRegexToken('MMM',  function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n    function localeMonths (m, format) {\n        if (!m) {\n            return isArray(this._months) ? this._months :\n                this._months['standalone'];\n        }\n        return isArray(this._months) ? this._months[m.month()] :\n            this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n    }\n\n    var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n    function localeMonthsShort (m, format) {\n        if (!m) {\n            return isArray(this._monthsShort) ? this._monthsShort :\n                this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n            this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i, ii, mom, llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse (monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n                this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n                return i;\n            } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth (mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth (value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth () {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    var defaultMonthsShortRegex = matchWord;\n    function monthsShortRegex (isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict ?\n                this._monthsShortStrictRegex : this._monthsShortRegex;\n        }\n    }\n\n    var defaultMonthsRegex = matchWord;\n    function monthsRegex (isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict ?\n                this._monthsStrictRegex : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse () {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [], longPieces = [], mixedPieces = [],\n            i, mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n        this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n    }\n\n    function createDate (y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate (y) {\n        var date;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            var args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear, resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek, resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w',  match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W',  match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek (mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow : 0, // Sunday is the first day of the week.\n        doy : 6  // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek () {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear () {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek (input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek (input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d',    match1to2);\n    addRegexToken('e',    match1to2);\n    addRegexToken('E',    match1to2);\n    addRegexToken('dd',   function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd',   function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd',   function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays (ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n    function localeWeekdays (m, format) {\n        var weekdays = isArray(this._weekdays) ? this._weekdays :\n            this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n        return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n            : (m) ? weekdays[m.day()] : weekdays;\n    }\n\n    var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n    function localeWeekdaysShort (m) {\n        return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n    }\n\n    var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n    function localeWeekdaysMin (m) {\n        return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse (weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n                this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n                this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n            }\n            if (!this._weekdaysParse[i]) {\n                regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    var defaultWeekdaysRegex = matchWord;\n    function weekdaysRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict ?\n                this._weekdaysStrictRegex : this._weekdaysRegex;\n        }\n    }\n\n    var defaultWeekdaysShortRegex = matchWord;\n    function weekdaysShortRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict ?\n                this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n        }\n    }\n\n    var defaultWeekdaysMinRegex = matchWord;\n    function weekdaysMinRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict ?\n                this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n        }\n    }\n\n\n    function computeWeekdaysParse () {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n            i, mom, minp, shortp, longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = this.weekdaysMin(mom, '');\n            shortp = this.weekdaysShort(mom, '');\n            longp = this.weekdays(mom, '');\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 7; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n        this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n        this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2);\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2);\n    });\n\n    function meridiem (token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem (isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a',  matchMeridiem);\n    addRegexToken('A',  matchMeridiem);\n    addRegexToken('H',  match1to2);\n    addRegexToken('h',  match1to2);\n    addRegexToken('k',  match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4;\n        var pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4;\n        var pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM (input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return ((input + '').toLowerCase().charAt(0) === 'p');\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n    function localeMeridiem (hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n\n    // MOMENTS\n\n    // Setting the hour should keep the time, because the user explicitly\n    // specified which hour they want. So trying to maintain the same hour (in\n    // a new timezone) makes sense. Adding/subtracting hours does not follow\n    // this rule.\n    var getSetHour = makeGetSet('Hours', true);\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse\n    };\n\n    // internal storage for locale config files\n    var locales = {};\n    var localeFamilies = {};\n    var globalLocale;\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0, j, next, locale, split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (!locales[name] && (typeof module !== 'undefined') &&\n                module && module.exports) {\n            try {\n                oldLocale = globalLocale._abbr;\n                var aliasedRequire = require;\n                __webpack_require__(\"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\")(\"./\" + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {}\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale (key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            }\n            else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            }\n            else {\n                if ((typeof console !==  'undefined') && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn('Locale ' + key +  ' not found. Did you forget to load it?');\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale (name, config) {\n        if (config !== null) {\n            var locale, parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple('defineLocaleOverride',\n                        'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale, tmpLocale, parentConfig = baseConfig;\n            // MERGE\n            tmpLocale = loadLocale(name);\n            if (tmpLocale != null) {\n                parentConfig = tmpLocale._config;\n            }\n            config = mergeConfigs(parentConfig, config);\n            locale = new Locale(config);\n            locale.parentLocale = locales[name];\n            locales[name] = locale;\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale (key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow (m) {\n        var overflow;\n        var a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :\n                a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n                a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n                a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :\n                a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :\n                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n                -1;\n\n            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray (config) {\n        var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (config._a[HOUR] === 24 &&\n                config._a[MINUTE] === 0 &&\n                config._a[SECOND] === 0 &&\n                config._a[MILLISECOND] === 0) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n        expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            var curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n    var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n    var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n    var isoDates = [\n        ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n        ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n        ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n        ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n        ['YYYY-DDD', /\\d{4}-\\d{3}/],\n        ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n        ['YYYYYYMMDD', /[+-]\\d{10}/],\n        ['YYYYMMDD', /\\d{8}/],\n        // YYYYMM is NOT allowed by the standard\n        ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n        ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n        ['YYYYDDD', /\\d{7}/]\n    ];\n\n    // iso time formats and regexes\n    var isoTimes = [\n        ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n        ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n        ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n        ['HH:mm', /\\d\\d:\\d\\d/],\n        ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n        ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n        ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n        ['HHmm', /\\d\\d\\d\\d/],\n        ['HH', /\\d\\d/]\n    ];\n\n    var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n    // date from iso format\n    function configFromISO(config) {\n        var i, l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime, dateFormat, timeFormat, tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n    var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n    function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10)\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    var obsOffsets = {\n        UT: 0,\n        GMT: 0,\n        EDT: -4 * 60,\n        EST: -5 * 60,\n        CDT: -5 * 60,\n        CST: -6 * 60,\n        MDT: -6 * 60,\n        MST: -7 * 60,\n        PDT: -7 * 60,\n        PST: -8 * 60\n    };\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10);\n            var m = hm % 100, h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i));\n        if (match) {\n            var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from iso format or fallback\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        // Final attempt, use Input Fallback\n        hooks.createFromInputFallback(config);\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n        'discouraged and will be removed in an upcoming major release. Please refer to ' +\n        'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i, parsedInput, tokens, token, skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0;\n\n        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n            // console.log('token', token, 'parsedInput', parsedInput,\n            //         'regex', getParseRegexForToken(token, config));\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                }\n                else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            }\n            else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n\n    function meridiemFixWrap (locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n\n            scoreToBeat,\n            i,\n            currentScore;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (!isValid(tempConfig)) {\n                continue;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (scoreToBeat == null || currentScore < scoreToBeat) {\n                scoreToBeat = currentScore;\n                bestMoment = tempConfig;\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i);\n        config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n            return obj && parseInt(obj, 10);\n        });\n\n        configFromArray(config);\n    }\n\n    function createFromConfig (config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig (config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({nullInput: true});\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        }  else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC (input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if ((isObject(input) && isObjectEmpty(input)) ||\n                (isArray(input) && input.length === 0)) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal (input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other < this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    );\n\n    var prototypeMax = deprecate(\n        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other > this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min () {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max () {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +(new Date());\n    };\n\n    var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n    function isDurationValid(m) {\n        for (var key in m) {\n            if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n                return false;\n            }\n        }\n\n        var unitHasDecimal = false;\n        for (var i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration (duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds = +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days +\n            weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months +\n            quarters * 3 +\n            years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration (obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound (number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // FORMATTING\n\n    function offset (token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset();\n            var sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z',  matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher);\n\n        if (matches === null) {\n            return null;\n        }\n\n        var chunk   = matches[matches.length - 1] || [];\n        var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ?\n          0 :\n          parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset (m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset (input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone (input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC (keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal (keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset () {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            }\n            else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset (input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime () {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted () {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {};\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted = this.isValid() &&\n                compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal () {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset () {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc () {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n    // and further modified to allow for strings containing both week and day\n    var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration (input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms : input._milliseconds,\n                d  : input._days,\n                M  : input._months\n            };\n        } else if (isNumber(input)) {\n            duration = {};\n            if (key) {\n                duration[key] = input;\n            } else {\n                duration.milliseconds = input;\n            }\n        } else if (!!(match = aspNetRegex.exec(input))) {\n            sign = (match[1] === '-') ? -1 : 1;\n            duration = {\n                y  : 0,\n                d  : toInt(match[DATE])                         * sign,\n                h  : toInt(match[HOUR])                         * sign,\n                m  : toInt(match[MINUTE])                       * sign,\n                s  : toInt(match[SECOND])                       * sign,\n                ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n            };\n        } else if (!!(match = isoRegex.exec(input))) {\n            sign = (match[1] === '-') ? -1 : 1;\n            duration = {\n                y : parseIso(match[2], sign),\n                M : parseIso(match[3], sign),\n                w : parseIso(match[4], sign),\n                d : parseIso(match[5], sign),\n                h : parseIso(match[6], sign),\n                m : parseIso(match[7], sign),\n                s : parseIso(match[8], sign)\n            };\n        } else if (duration == null) {// checks for null or undefined\n            duration = {};\n        } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n            diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso (inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months = other.month() - base.month() +\n            (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return {milliseconds: 0, months: 0};\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n                'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n                tmp = val; val = period; period = tmp;\n            }\n\n            val = typeof val === 'string' ? +val : val;\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract (mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add      = createAdder(1, 'add');\n    var subtract = createAdder(-1, 'subtract');\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6 ? 'sameElse' :\n                diff < -1 ? 'lastWeek' :\n                diff < 0 ? 'lastDay' :\n                diff < 1 ? 'sameDay' :\n                diff < 2 ? 'nextDay' :\n                diff < 7 ? 'nextWeek' : 'sameElse';\n    }\n\n    function calendar$1 (time, formats) {\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n        var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n        return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n    }\n\n    function clone () {\n        return new Moment(this);\n    }\n\n    function isAfter (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween (from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n    }\n\n    function isSame (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n        }\n    }\n\n    function isSameOrAfter (input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore (input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff (input, units, asFloat) {\n        var that,\n            zoneDelta,\n            output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year': output = monthDiff(this, that) / 12; break;\n            case 'month': output = monthDiff(this, that); break;\n            case 'quarter': output = monthDiff(this, that) / 3; break;\n            case 'second': output = (this - that) / 1e3; break; // 1000\n            case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n            case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n            case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default: output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff (a, b) {\n        // difference in months\n        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2, adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString () {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true;\n        var m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect () {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment';\n        var zone = '';\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        var prefix = '[' + func + '(\"]';\n        var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n        var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        var suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format (inputString) {\n        if (!inputString) {\n            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from (time, withoutSuffix) {\n        if (this.isValid() &&\n                ((isMoment(time) && time.isValid()) ||\n                 createLocal(time).isValid())) {\n            return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow (withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to (time, withoutSuffix) {\n        if (this.isValid() &&\n                ((isMoment(time) && time.isValid()) ||\n                 createLocal(time).isValid())) {\n            return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow (withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale (key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData () {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000;\n    var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n    var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n    var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return (dividend % divisor + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf (units) {\n        var time;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n                break;\n            case 'isoWeek':\n                time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf (units) {\n        var time;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n                break;\n            case 'isoWeek':\n                time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf () {\n        return this._d.valueOf() - ((this._offset || 0) * 60000);\n    }\n\n    function unix () {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate () {\n        return new Date(this.valueOf());\n    }\n\n    function toArray () {\n        var m = this;\n        return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n    }\n\n    function toObject () {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds()\n        };\n    }\n\n    function toJSON () {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2 () {\n        return isValid(this);\n    }\n\n    function parsingFlags () {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt () {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict\n        };\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken (token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg',     'weekYear');\n    addWeekYearFormatToken('ggggg',    'weekYear');\n    addWeekYearFormatToken('GGGG',  'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n\n    // PARSING\n\n    addRegexToken('G',      matchSigned);\n    addRegexToken('g',      matchSigned);\n    addRegexToken('GG',     match1to2, match2);\n    addRegexToken('gg',     match1to2, match2);\n    addRegexToken('GGGG',   match1to4, match4);\n    addRegexToken('gggg',   match1to4, match4);\n    addRegexToken('GGGGG',  match1to6, match6);\n    addRegexToken('ggggg',  match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear (input) {\n        return getSetWeekYearHelper.call(this,\n                input,\n                this.week(),\n                this.weekday(),\n                this.localeData()._week.dow,\n                this.localeData()._week.doy);\n    }\n\n    function getSetISOWeekYear (input) {\n        return getSetWeekYearHelper.call(this,\n                input, this.isoWeek(), this.isoWeekday(), 1, 4);\n    }\n\n    function getISOWeeksInYear () {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getWeeksInYear () {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter (input) {\n        return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D',  match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict ?\n          (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n          locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD',  match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear (input) {\n        var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n        return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m',  match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s',  match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S',    match1to3, match1);\n    addRegexToken('SS',   match1to3, match2);\n    addRegexToken('SSS',  match1to3, match3);\n\n    var token;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n    // MOMENTS\n\n    var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z',  0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr () {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName () {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add               = add;\n    proto.calendar          = calendar$1;\n    proto.clone             = clone;\n    proto.diff              = diff;\n    proto.endOf             = endOf;\n    proto.format            = format;\n    proto.from              = from;\n    proto.fromNow           = fromNow;\n    proto.to                = to;\n    proto.toNow             = toNow;\n    proto.get               = stringGet;\n    proto.invalidAt         = invalidAt;\n    proto.isAfter           = isAfter;\n    proto.isBefore          = isBefore;\n    proto.isBetween         = isBetween;\n    proto.isSame            = isSame;\n    proto.isSameOrAfter     = isSameOrAfter;\n    proto.isSameOrBefore    = isSameOrBefore;\n    proto.isValid           = isValid$2;\n    proto.lang              = lang;\n    proto.locale            = locale;\n    proto.localeData        = localeData;\n    proto.max               = prototypeMax;\n    proto.min               = prototypeMin;\n    proto.parsingFlags      = parsingFlags;\n    proto.set               = stringSet;\n    proto.startOf           = startOf;\n    proto.subtract          = subtract;\n    proto.toArray           = toArray;\n    proto.toObject          = toObject;\n    proto.toDate            = toDate;\n    proto.toISOString       = toISOString;\n    proto.inspect           = inspect;\n    proto.toJSON            = toJSON;\n    proto.toString          = toString;\n    proto.unix              = unix;\n    proto.valueOf           = valueOf;\n    proto.creationData      = creationData;\n    proto.year       = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear    = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month       = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week           = proto.weeks        = getSetWeek;\n    proto.isoWeek        = proto.isoWeeks     = getSetISOWeek;\n    proto.weeksInYear    = getWeeksInYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.date       = getSetDayOfMonth;\n    proto.day        = proto.days             = getSetDayOfWeek;\n    proto.weekday    = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear  = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset            = getSetOffset;\n    proto.utc                  = setOffsetToUTC;\n    proto.local                = setOffsetToLocal;\n    proto.parseZone            = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST                = isDaylightSavingTime;\n    proto.isLocal              = isLocal;\n    proto.isUtcOffset          = isUtcOffset;\n    proto.isUtc                = isUtc;\n    proto.isUTC                = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n    proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n    proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n    proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n    proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n    function createUnix (input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone () {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat (string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar        = calendar;\n    proto$1.longDateFormat  = longDateFormat;\n    proto$1.invalidDate     = invalidDate;\n    proto$1.ordinal         = ordinal;\n    proto$1.preparse        = preParsePostFormat;\n    proto$1.postformat      = preParsePostFormat;\n    proto$1.relativeTime    = relativeTime;\n    proto$1.pastFuture      = pastFuture;\n    proto$1.set             = set;\n\n    proto$1.months            =        localeMonths;\n    proto$1.monthsShort       =        localeMonthsShort;\n    proto$1.monthsParse       =        localeMonthsParse;\n    proto$1.monthsRegex       = monthsRegex;\n    proto$1.monthsShortRegex  = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays       =        localeWeekdays;\n    proto$1.weekdaysMin    =        localeWeekdaysMin;\n    proto$1.weekdaysShort  =        localeWeekdaysShort;\n    proto$1.weekdaysParse  =        localeWeekdaysParse;\n\n    proto$1.weekdaysRegex       =        weekdaysRegex;\n    proto$1.weekdaysShortRegex  =        weekdaysShortRegex;\n    proto$1.weekdaysMinRegex    =        weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1 (format, index, field, setter) {\n        var locale = getLocale();\n        var utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl (format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i;\n        var out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl (localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0;\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        var i;\n        var out = [];\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths (format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort (format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (toInt(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n    hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n    var mathAbs = Math.abs;\n\n    function abs () {\n        var data           = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days         = mathAbs(this._days);\n        this._months       = mathAbs(this._months);\n\n        data.milliseconds  = mathAbs(data.milliseconds);\n        data.seconds       = mathAbs(data.seconds);\n        data.minutes       = mathAbs(data.minutes);\n        data.hours         = mathAbs(data.hours);\n        data.months        = mathAbs(data.months);\n        data.years         = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1 (duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days         += direction * other._days;\n        duration._months       += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1 (input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1 (input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil (number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble () {\n        var milliseconds = this._milliseconds;\n        var days         = this._days;\n        var months       = this._months;\n        var data         = this._data;\n        var seconds, minutes, hours, years, monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0))) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds           = absFloor(milliseconds / 1000);\n        data.seconds      = seconds % 60;\n\n        minutes           = absFloor(seconds / 60);\n        data.minutes      = minutes % 60;\n\n        hours             = absFloor(minutes / 60);\n        data.hours        = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days   = days;\n        data.months = months;\n        data.years  = years;\n\n        return this;\n    }\n\n    function daysToMonths (days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return days * 4800 / 146097;\n    }\n\n    function monthsToDays (months) {\n        // the reverse of daysToMonths\n        return months * 146097 / 4800;\n    }\n\n    function as (units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days;\n        var months;\n        var milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':   return months;\n                case 'quarter': return months / 3;\n                case 'year':    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week'   : return days / 7     + milliseconds / 6048e5;\n                case 'day'    : return days         + milliseconds / 864e5;\n                case 'hour'   : return days * 24    + milliseconds / 36e5;\n                case 'minute' : return days * 1440  + milliseconds / 6e4;\n                case 'second' : return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n                default: throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1 () {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs (alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms');\n    var asSeconds      = makeAs('s');\n    var asMinutes      = makeAs('m');\n    var asHours        = makeAs('h');\n    var asDays         = makeAs('d');\n    var asWeeks        = makeAs('w');\n    var asMonths       = makeAs('M');\n    var asQuarters     = makeAs('Q');\n    var asYears        = makeAs('y');\n\n    function clone$1 () {\n        return createDuration(this);\n    }\n\n    function get$2 (units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds');\n    var seconds      = makeGetter('seconds');\n    var minutes      = makeGetter('minutes');\n    var hours        = makeGetter('hours');\n    var days         = makeGetter('days');\n    var months       = makeGetter('months');\n    var years        = makeGetter('years');\n\n    function weeks () {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round;\n    var thresholds = {\n        ss: 44,         // a few seconds to seconds\n        s : 45,         // seconds to minute\n        m : 45,         // minutes to hour\n        h : 22,         // hours to day\n        d : 26,         // days to month\n        M : 11          // months to year\n    };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n        var duration = createDuration(posNegDuration).abs();\n        var seconds  = round(duration.as('s'));\n        var minutes  = round(duration.as('m'));\n        var hours    = round(duration.as('h'));\n        var days     = round(duration.as('d'));\n        var months   = round(duration.as('M'));\n        var years    = round(duration.as('y'));\n\n        var a = seconds <= thresholds.ss && ['s', seconds]  ||\n                seconds < thresholds.s   && ['ss', seconds] ||\n                minutes <= 1             && ['m']           ||\n                minutes < thresholds.m   && ['mm', minutes] ||\n                hours   <= 1             && ['h']           ||\n                hours   < thresholds.h   && ['hh', hours]   ||\n                days    <= 1             && ['d']           ||\n                days    < thresholds.d   && ['dd', days]    ||\n                months  <= 1             && ['M']           ||\n                months  < thresholds.M   && ['MM', months]  ||\n                years   <= 1             && ['y']           || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding (roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof(roundingFunction) === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold (threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize (withSuffix) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var locale = this.localeData();\n        var output = relativeTime$1(this, !withSuffix, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return ((x > 0) - (x < 0)) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000;\n        var days         = abs$1(this._days);\n        var months       = abs$1(this._months);\n        var minutes, hours, years;\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes           = absFloor(seconds / 60);\n        hours             = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years  = absFloor(months / 12);\n        months %= 12;\n\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        var Y = years;\n        var M = months;\n        var D = days;\n        var h = hours;\n        var m = minutes;\n        var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n        var total = this.asSeconds();\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        var totalSign = total < 0 ? '-' : '';\n        var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return totalSign + 'P' +\n            (Y ? ymSign + Y + 'Y' : '') +\n            (M ? ymSign + M + 'M' : '') +\n            (D ? daysSign + D + 'D' : '') +\n            ((h || m || s) ? 'T' : '') +\n            (h ? hmsSign + h + 'H' : '') +\n            (m ? hmsSign + m + 'M' : '') +\n            (s ? hmsSign + s + 'S' : '');\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid        = isValid$1;\n    proto$2.abs            = abs;\n    proto$2.add            = add$1;\n    proto$2.subtract       = subtract$1;\n    proto$2.as             = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds      = asSeconds;\n    proto$2.asMinutes      = asMinutes;\n    proto$2.asHours        = asHours;\n    proto$2.asDays         = asDays;\n    proto$2.asWeeks        = asWeeks;\n    proto$2.asMonths       = asMonths;\n    proto$2.asQuarters     = asQuarters;\n    proto$2.asYears        = asYears;\n    proto$2.valueOf        = valueOf$1;\n    proto$2._bubble        = bubble;\n    proto$2.clone          = clone$1;\n    proto$2.get            = get$2;\n    proto$2.milliseconds   = milliseconds;\n    proto$2.seconds        = seconds;\n    proto$2.minutes        = minutes;\n    proto$2.hours          = hours;\n    proto$2.days           = days;\n    proto$2.weeks          = weeks;\n    proto$2.months         = months;\n    proto$2.years          = years;\n    proto$2.humanize       = humanize;\n    proto$2.toISOString    = toISOString$1;\n    proto$2.toString       = toISOString$1;\n    proto$2.toJSON         = toISOString$1;\n    proto$2.locale         = locale;\n    proto$2.localeData     = localeData;\n\n    proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n    proto$2.lang = lang;\n\n    // Side effect imports\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input, 10) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    // Side effect imports\n\n\n    hooks.version = '2.24.0';\n\n    setHookCallback(createLocal);\n\n    hooks.fn                    = proto;\n    hooks.min                   = min;\n    hooks.max                   = max;\n    hooks.now                   = now;\n    hooks.utc                   = createUTC;\n    hooks.unix                  = createUnix;\n    hooks.months                = listMonths;\n    hooks.isDate                = isDate;\n    hooks.locale                = getSetGlobalLocale;\n    hooks.invalid               = createInvalid;\n    hooks.duration              = createDuration;\n    hooks.isMoment              = isMoment;\n    hooks.weekdays              = listWeekdays;\n    hooks.parseZone             = createInZone;\n    hooks.localeData            = getLocale;\n    hooks.isDuration            = isDuration;\n    hooks.monthsShort           = listMonthsShort;\n    hooks.weekdaysMin           = listWeekdaysMin;\n    hooks.defineLocale          = defineLocale;\n    hooks.updateLocale          = updateLocale;\n    hooks.locales               = listLocales;\n    hooks.weekdaysShort         = listWeekdaysShort;\n    hooks.normalizeUnits        = normalizeUnits;\n    hooks.relativeTimeRounding  = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat        = getCalendarFormat;\n    hooks.prototype             = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',             // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',  // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',   // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD',                             // <input type=\"date\" />\n        TIME: 'HH:mm',                                  // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss',                       // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS',                        // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW',                             // <input type=\"week\" />\n        MONTH: 'YYYY-MM'                                // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbW9tZW50L21vbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbW9tZW50LmpzP2MxZGYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8hIG1vbWVudC5qc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgICBnbG9iYWwubW9tZW50ID0gZmFjdG9yeSgpXG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBob29rQ2FsbGJhY2s7XG5cbiAgICBmdW5jdGlvbiBob29rcyAoKSB7XG4gICAgICAgIHJldHVybiBob29rQ2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGRvbmUgdG8gcmVnaXN0ZXIgdGhlIG1ldGhvZCBjYWxsZWQgd2l0aCBtb21lbnQoKVxuICAgIC8vIHdpdGhvdXQgY3JlYXRpbmcgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICAgIGZ1bmN0aW9uIHNldEhvb2tDYWxsYmFjayAoY2FsbGJhY2spIHtcbiAgICAgICAgaG9va0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBcnJheShpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBBcnJheSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0KGlucHV0KSB7XG4gICAgICAgIC8vIElFOCB3aWxsIHRyZWF0IHVuZGVmaW5lZCBhbmQgbnVsbCBhcyBvYmplY3QgaWYgaXQgd2Fzbid0IGZvclxuICAgICAgICAvLyBpbnB1dCAhPSBudWxsXG4gICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0RW1wdHkob2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcykge1xuICAgICAgICAgICAgcmV0dXJuIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaztcbiAgICAgICAgICAgIGZvciAoayBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE51bWJlcl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF0ZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBEYXRlIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IERhdGVdJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXAoYXJyLCBmbikge1xuICAgICAgICB2YXIgcmVzID0gW10sIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGZuKGFycltpXSwgaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzT3duUHJvcChhLCBiKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZW5kKGEsIGIpIHtcbiAgICAgICAgZm9yICh2YXIgaSBpbiBiKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChiLCBpKSkge1xuICAgICAgICAgICAgICAgIGFbaV0gPSBiW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3RvU3RyaW5nJykpIHtcbiAgICAgICAgICAgIGEudG9TdHJpbmcgPSBiLnRvU3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3ZhbHVlT2YnKSkge1xuICAgICAgICAgICAgYS52YWx1ZU9mID0gYi52YWx1ZU9mO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgdHJ1ZSkudXRjKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmYXVsdFBhcnNpbmdGbGFncygpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBkZWVwIGNsb25lIHRoaXMgb2JqZWN0LlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1wdHkgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICB1bnVzZWRUb2tlbnMgICAgOiBbXSxcbiAgICAgICAgICAgIHVudXNlZElucHV0ICAgICA6IFtdLFxuICAgICAgICAgICAgb3ZlcmZsb3cgICAgICAgIDogLTIsXG4gICAgICAgICAgICBjaGFyc0xlZnRPdmVyICAgOiAwLFxuICAgICAgICAgICAgbnVsbElucHV0ICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICBpbnZhbGlkTW9udGggICAgOiBudWxsLFxuICAgICAgICAgICAgaW52YWxpZEZvcm1hdCAgIDogZmFsc2UsXG4gICAgICAgICAgICB1c2VySW52YWxpZGF0ZWQgOiBmYWxzZSxcbiAgICAgICAgICAgIGlzbyAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgcGFyc2VkRGF0ZVBhcnRzIDogW10sXG4gICAgICAgICAgICBtZXJpZGllbSAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgcmZjMjgyMiAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICB3ZWVrZGF5TWlzbWF0Y2ggOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBhcnNpbmdGbGFncyhtKSB7XG4gICAgICAgIGlmIChtLl9wZiA9PSBudWxsKSB7XG4gICAgICAgICAgICBtLl9wZiA9IGRlZmF1bHRQYXJzaW5nRmxhZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5fcGY7XG4gICAgfVxuXG4gICAgdmFyIHNvbWU7XG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5zb21lKSB7XG4gICAgICAgIHNvbWUgPSBBcnJheS5wcm90b3R5cGUuc29tZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzb21lID0gZnVuY3Rpb24gKGZ1bikge1xuICAgICAgICAgICAgdmFyIHQgPSBPYmplY3QodGhpcyk7XG4gICAgICAgICAgICB2YXIgbGVuID0gdC5sZW5ndGggPj4+IDA7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSBpbiB0ICYmIGZ1bi5jYWxsKHRoaXMsIHRbaV0sIGksIHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQobSkge1xuICAgICAgICBpZiAobS5faXNWYWxpZCA9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgZmxhZ3MgPSBnZXRQYXJzaW5nRmxhZ3MobSk7XG4gICAgICAgICAgICB2YXIgcGFyc2VkUGFydHMgPSBzb21lLmNhbGwoZmxhZ3MucGFyc2VkRGF0ZVBhcnRzLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBpc05vd1ZhbGlkID0gIWlzTmFOKG0uX2QuZ2V0VGltZSgpKSAmJlxuICAgICAgICAgICAgICAgIGZsYWdzLm92ZXJmbG93IDwgMCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5lbXB0eSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkTW9udGggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZFdlZWtkYXkgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3Mud2Vla2RheU1pc21hdGNoICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLm51bGxJbnB1dCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkRm9ybWF0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLnVzZXJJbnZhbGlkYXRlZCAmJlxuICAgICAgICAgICAgICAgICghZmxhZ3MubWVyaWRpZW0gfHwgKGZsYWdzLm1lcmlkaWVtICYmIHBhcnNlZFBhcnRzKSk7XG5cbiAgICAgICAgICAgIGlmIChtLl9zdHJpY3QpIHtcbiAgICAgICAgICAgICAgICBpc05vd1ZhbGlkID0gaXNOb3dWYWxpZCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5jaGFyc0xlZnRPdmVyID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLnVudXNlZFRva2Vucy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYmlnSG91ciA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoT2JqZWN0LmlzRnJvemVuID09IG51bGwgfHwgIU9iamVjdC5pc0Zyb3plbihtKSkge1xuICAgICAgICAgICAgICAgIG0uX2lzVmFsaWQgPSBpc05vd1ZhbGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG0uX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52YWxpZCAoZmxhZ3MpIHtcbiAgICAgICAgdmFyIG0gPSBjcmVhdGVVVEMoTmFOKTtcbiAgICAgICAgaWYgKGZsYWdzICE9IG51bGwpIHtcbiAgICAgICAgICAgIGV4dGVuZChnZXRQYXJzaW5nRmxhZ3MobSksIGZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS51c2VySW52YWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGx1Z2lucyB0aGF0IGFkZCBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGFkZCB0aGUga2V5IGhlcmUgKG51bGwgdmFsdWUpLFxuICAgIC8vIHNvIHdlIGNhbiBwcm9wZXJseSBjbG9uZSBvdXJzZWx2ZXMuXG4gICAgdmFyIG1vbWVudFByb3BlcnRpZXMgPSBob29rcy5tb21lbnRQcm9wZXJ0aWVzID0gW107XG5cbiAgICBmdW5jdGlvbiBjb3B5Q29uZmlnKHRvLCBmcm9tKSB7XG4gICAgICAgIHZhciBpLCBwcm9wLCB2YWw7XG5cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc0FNb21lbnRPYmplY3QpKSB7XG4gICAgICAgICAgICB0by5faXNBTW9tZW50T2JqZWN0ID0gZnJvbS5faXNBTW9tZW50T2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faSkpIHtcbiAgICAgICAgICAgIHRvLl9pID0gZnJvbS5faTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2YpKSB7XG4gICAgICAgICAgICB0by5fZiA9IGZyb20uX2Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sKSkge1xuICAgICAgICAgICAgdG8uX2wgPSBmcm9tLl9sO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fc3RyaWN0KSkge1xuICAgICAgICAgICAgdG8uX3N0cmljdCA9IGZyb20uX3N0cmljdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3R6bSkpIHtcbiAgICAgICAgICAgIHRvLl90em0gPSBmcm9tLl90em07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc1VUQykpIHtcbiAgICAgICAgICAgIHRvLl9pc1VUQyA9IGZyb20uX2lzVVRDO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fb2Zmc2V0KSkge1xuICAgICAgICAgICAgdG8uX29mZnNldCA9IGZyb20uX29mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3BmKSkge1xuICAgICAgICAgICAgdG8uX3BmID0gZ2V0UGFyc2luZ0ZsYWdzKGZyb20pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbG9jYWxlKSkge1xuICAgICAgICAgICAgdG8uX2xvY2FsZSA9IGZyb20uX2xvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb21lbnRQcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtb21lbnRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcHJvcCA9IG1vbWVudFByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICAgICAgdmFsID0gZnJvbVtwcm9wXTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9bcHJvcF0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvO1xuICAgIH1cblxuICAgIHZhciB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG5cbiAgICAvLyBNb21lbnQgcHJvdG90eXBlIG9iamVjdFxuICAgIGZ1bmN0aW9uIE1vbWVudChjb25maWcpIHtcbiAgICAgICAgY29weUNvbmZpZyh0aGlzLCBjb25maWcpO1xuICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoY29uZmlnLl9kICE9IG51bGwgPyBjb25maWcuX2QuZ2V0VGltZSgpIDogTmFOKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5fZCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJldmVudCBpbmZpbml0ZSBsb29wIGluIGNhc2UgdXBkYXRlT2Zmc2V0IGNyZWF0ZXMgbmV3IG1vbWVudFxuICAgICAgICAvLyBvYmplY3RzLlxuICAgICAgICBpZiAodXBkYXRlSW5Qcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNNb21lbnQgKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgTW9tZW50IHx8IChvYmogIT0gbnVsbCAmJiBvYmouX2lzQU1vbWVudE9iamVjdCAhPSBudWxsKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNGbG9vciAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICAvLyAtMCAtPiAwXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKG51bWJlcikgfHwgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0ludChhcmd1bWVudEZvckNvZXJjaW9uKSB7XG4gICAgICAgIHZhciBjb2VyY2VkTnVtYmVyID0gK2FyZ3VtZW50Rm9yQ29lcmNpb24sXG4gICAgICAgICAgICB2YWx1ZSA9IDA7XG5cbiAgICAgICAgaWYgKGNvZXJjZWROdW1iZXIgIT09IDAgJiYgaXNGaW5pdGUoY29lcmNlZE51bWJlcikpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYWJzRmxvb3IoY29lcmNlZE51bWJlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gY29tcGFyZSB0d28gYXJyYXlzLCByZXR1cm4gdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlc1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVBcnJheXMoYXJyYXkxLCBhcnJheTIsIGRvbnRDb252ZXJ0KSB7XG4gICAgICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcnJheTEubGVuZ3RoLCBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGxlbmd0aERpZmYgPSBNYXRoLmFicyhhcnJheTEubGVuZ3RoIC0gYXJyYXkyLmxlbmd0aCksXG4gICAgICAgICAgICBkaWZmcyA9IDAsXG4gICAgICAgICAgICBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgoZG9udENvbnZlcnQgJiYgYXJyYXkxW2ldICE9PSBhcnJheTJbaV0pIHx8XG4gICAgICAgICAgICAgICAgKCFkb250Q29udmVydCAmJiB0b0ludChhcnJheTFbaV0pICE9PSB0b0ludChhcnJheTJbaV0pKSkge1xuICAgICAgICAgICAgICAgIGRpZmZzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpZmZzICsgbGVuZ3RoRGlmZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3YXJuKG1zZykge1xuICAgICAgICBpZiAoaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgY29uc29sZSAhPT0gICd1bmRlZmluZWQnKSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRGVwcmVjYXRpb24gd2FybmluZzogJyArIG1zZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGUobXNnLCBmbikge1xuICAgICAgICB2YXIgZmlyc3RUaW1lID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gZXh0ZW5kKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLCBtc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpcnN0VGltZSkge1xuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICAgICAgdmFyIGFyZztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBhcmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbaV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0gJ1xcblsnICsgaSArICddICc7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnICs9IGtleSArICc6ICcgKyBhcmd1bWVudHNbMF1ba2V5XSArICcsICc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMCwgLTIpOyAvLyBSZW1vdmUgdHJhaWxpbmcgY29tbWEgYW5kIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhcm4obXNnICsgJ1xcbkFyZ3VtZW50czogJyArIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpLmpvaW4oJycpICsgJ1xcbicgKyAobmV3IEVycm9yKCkpLnN0YWNrKTtcbiAgICAgICAgICAgICAgICBmaXJzdFRpbWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9LCBmbik7XG4gICAgfVxuXG4gICAgdmFyIGRlcHJlY2F0aW9ucyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlU2ltcGxlKG5hbWUsIG1zZykge1xuICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihuYW1lLCBtc2cpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVwcmVjYXRpb25zW25hbWVdKSB7XG4gICAgICAgICAgICB3YXJuKG1zZyk7XG4gICAgICAgICAgICBkZXByZWNhdGlvbnNbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID0gZmFsc2U7XG4gICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyID0gbnVsbDtcblxuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgRnVuY3Rpb24gfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXQgKGNvbmZpZykge1xuICAgICAgICB2YXIgcHJvcCwgaTtcbiAgICAgICAgZm9yIChpIGluIGNvbmZpZykge1xuICAgICAgICAgICAgcHJvcCA9IGNvbmZpZ1tpXTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgdGhpc1tpXSA9IHByb3A7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXNbJ18nICsgaV0gPSBwcm9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgLy8gTGVuaWVudCBvcmRpbmFsIHBhcnNpbmcgYWNjZXB0cyBqdXN0IGEgbnVtYmVyIGluIGFkZGl0aW9uIHRvXG4gICAgICAgIC8vIG51bWJlciArIChwb3NzaWJseSkgc3R1ZmYgY29taW5nIGZyb20gX2RheU9mTW9udGhPcmRpbmFsUGFyc2UuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgdGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQgPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgKHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2Uuc291cmNlIHx8IHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UpICtcbiAgICAgICAgICAgICAgICAnfCcgKyAoL1xcZHsxLDJ9Lykuc291cmNlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjaGlsZENvbmZpZykge1xuICAgICAgICB2YXIgcmVzID0gZXh0ZW5kKHt9LCBwYXJlbnRDb25maWcpLCBwcm9wO1xuICAgICAgICBmb3IgKHByb3AgaW4gY2hpbGRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pICYmIGlzT2JqZWN0KGNoaWxkQ29uZmlnW3Byb3BdKSkge1xuICAgICAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJlc1twcm9wXSwgcGFyZW50Q29uZmlnW3Byb3BdKTtcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJlc1twcm9wXSwgY2hpbGRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGRDb25maWdbcHJvcF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSBjaGlsZENvbmZpZ1twcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVzW3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHByb3AgaW4gcGFyZW50Q29uZmlnKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChwYXJlbnRDb25maWcsIHByb3ApICYmXG4gICAgICAgICAgICAgICAgICAgICFoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSAmJlxuICAgICAgICAgICAgICAgICAgICBpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIGNoYW5nZXMgdG8gcHJvcGVydGllcyBkb24ndCBtb2RpZnkgcGFyZW50IGNvbmZpZ1xuICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGV4dGVuZCh7fSwgcmVzW3Byb3BdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIExvY2FsZShjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNldChjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXM7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMpIHtcbiAgICAgICAga2V5cyA9IE9iamVjdC5rZXlzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGtleXMgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICB2YXIgaSwgcmVzID0gW107XG4gICAgICAgICAgICBmb3IgKGkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc093blByb3Aob2JqLCBpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0Q2FsZW5kYXIgPSB7XG4gICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIgKGtleSwgbW9tLCBub3cpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyW2tleV0gfHwgdGhpcy5fY2FsZW5kYXJbJ3NhbWVFbHNlJ107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG91dHB1dCkgPyBvdXRwdXQuY2FsbChtb20sIG5vdykgOiBvdXRwdXQ7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb25nRGF0ZUZvcm1hdCA9IHtcbiAgICAgICAgTFRTICA6ICdoOm1tOnNzIEEnLFxuICAgICAgICBMVCAgIDogJ2g6bW0gQScsXG4gICAgICAgIEwgICAgOiAnTU0vREQvWVlZWScsXG4gICAgICAgIExMICAgOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgTExMICA6ICdNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICAgICAgTExMTCA6ICdkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb25nRGF0ZUZvcm1hdCAoa2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldLFxuICAgICAgICAgICAgZm9ybWF0VXBwZXIgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXkudG9VcHBlckNhc2UoKV07XG5cbiAgICAgICAgaWYgKGZvcm1hdCB8fCAhZm9ybWF0VXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldID0gZm9ybWF0VXBwZXIucmVwbGFjZSgvTU1NTXxNTXxERHxkZGRkL2csIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWwuc2xpY2UoMSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0SW52YWxpZERhdGUgPSAnSW52YWxpZCBkYXRlJztcblxuICAgIGZ1bmN0aW9uIGludmFsaWREYXRlICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludmFsaWREYXRlO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0T3JkaW5hbCA9ICclZCc7XG4gICAgdmFyIGRlZmF1bHREYXlPZk1vbnRoT3JkaW5hbFBhcnNlID0gL1xcZHsxLDJ9LztcblxuICAgIGZ1bmN0aW9uIG9yZGluYWwgKG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCclZCcsIG51bWJlcik7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRSZWxhdGl2ZVRpbWUgPSB7XG4gICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgIHBhc3QgICA6ICclcyBhZ28nLFxuICAgICAgICBzICA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgIG0gIDogJ2EgbWludXRlJyxcbiAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgIGggIDogJ2FuIGhvdXInLFxuICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgIGQgIDogJ2EgZGF5JyxcbiAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgIE0gIDogJ2EgbW9udGgnLFxuICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICB5ICA6ICdhIHllYXInLFxuICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX3JlbGF0aXZlVGltZVtzdHJpbmddO1xuICAgICAgICByZXR1cm4gKGlzRnVuY3Rpb24ob3V0cHV0KSkgP1xuICAgICAgICAgICAgb3V0cHV0KG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkgOlxuICAgICAgICAgICAgb3V0cHV0LnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFzdEZ1dHVyZSAoZGlmZiwgb3V0cHV0KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbZGlmZiA+IDAgPyAnZnV0dXJlJyA6ICdwYXN0J107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKGZvcm1hdCkgPyBmb3JtYXQob3V0cHV0KSA6IGZvcm1hdC5yZXBsYWNlKC8lcy9pLCBvdXRwdXQpO1xuICAgIH1cblxuICAgIHZhciBhbGlhc2VzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0QWxpYXMgKHVuaXQsIHNob3J0aGFuZCkge1xuICAgICAgICB2YXIgbG93ZXJDYXNlID0gdW5pdC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBhbGlhc2VzW2xvd2VyQ2FzZV0gPSBhbGlhc2VzW2xvd2VyQ2FzZSArICdzJ10gPSBhbGlhc2VzW3Nob3J0aGFuZF0gPSB1bml0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdW5pdHMgPT09ICdzdHJpbmcnID8gYWxpYXNlc1t1bml0c10gfHwgYWxpYXNlc1t1bml0cy50b0xvd2VyQ2FzZSgpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVPYmplY3RVbml0cyhpbnB1dE9iamVjdCkge1xuICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0ge30sXG4gICAgICAgICAgICBub3JtYWxpemVkUHJvcCxcbiAgICAgICAgICAgIHByb3A7XG5cbiAgICAgICAgZm9yIChwcm9wIGluIGlucHV0T2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChpbnB1dE9iamVjdCwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkUHJvcCA9IG5vcm1hbGl6ZVVuaXRzKHByb3ApO1xuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkUHJvcCkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkSW5wdXRbbm9ybWFsaXplZFByb3BdID0gaW5wdXRPYmplY3RbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRJbnB1dDtcbiAgICB9XG5cbiAgICB2YXIgcHJpb3JpdGllcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkVW5pdFByaW9yaXR5KHVuaXQsIHByaW9yaXR5KSB7XG4gICAgICAgIHByaW9yaXRpZXNbdW5pdF0gPSBwcmlvcml0eTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzT2JqKSB7XG4gICAgICAgIHZhciB1bml0cyA9IFtdO1xuICAgICAgICBmb3IgKHZhciB1IGluIHVuaXRzT2JqKSB7XG4gICAgICAgICAgICB1bml0cy5wdXNoKHt1bml0OiB1LCBwcmlvcml0eTogcHJpb3JpdGllc1t1XX0pO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnByaW9yaXR5IC0gYi5wcmlvcml0eTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1bml0cztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB6ZXJvRmlsbChudW1iZXIsIHRhcmdldExlbmd0aCwgZm9yY2VTaWduKSB7XG4gICAgICAgIHZhciBhYnNOdW1iZXIgPSAnJyArIE1hdGguYWJzKG51bWJlciksXG4gICAgICAgICAgICB6ZXJvc1RvRmlsbCA9IHRhcmdldExlbmd0aCAtIGFic051bWJlci5sZW5ndGgsXG4gICAgICAgICAgICBzaWduID0gbnVtYmVyID49IDA7XG4gICAgICAgIHJldHVybiAoc2lnbiA/IChmb3JjZVNpZ24gPyAnKycgOiAnJykgOiAnLScpICtcbiAgICAgICAgICAgIE1hdGgucG93KDEwLCBNYXRoLm1heCgwLCB6ZXJvc1RvRmlsbCkpLnRvU3RyaW5nKCkuc3Vic3RyKDEpICsgYWJzTnVtYmVyO1xuICAgIH1cblxuICAgIHZhciBmb3JtYXR0aW5nVG9rZW5zID0gLyhcXFtbXlxcW10qXFxdKXwoXFxcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xZWVlZWVl8WVlZWVl8WVlZWXxZWXxnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZztcblxuICAgIHZhciBsb2NhbEZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nO1xuXG4gICAgdmFyIGZvcm1hdEZ1bmN0aW9ucyA9IHt9O1xuXG4gICAgdmFyIGZvcm1hdFRva2VuRnVuY3Rpb25zID0ge307XG5cbiAgICAvLyB0b2tlbjogICAgJ00nXG4gICAgLy8gcGFkZGVkOiAgIFsnTU0nLCAyXVxuICAgIC8vIG9yZGluYWw6ICAnTW8nXG4gICAgLy8gY2FsbGJhY2s6IGZ1bmN0aW9uICgpIHsgdGhpcy5tb250aCgpICsgMSB9XG4gICAgZnVuY3Rpb24gYWRkRm9ybWF0VG9rZW4gKHRva2VuLCBwYWRkZWQsIG9yZGluYWwsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBmdW5jID0gY2FsbGJhY2s7XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBmdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW2NhbGxiYWNrXSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhZGRlZCkge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbcGFkZGVkWzBdXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gemVyb0ZpbGwoZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBwYWRkZWRbMV0sIHBhZGRlZFsyXSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcmRpbmFsKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1tvcmRpbmFsXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkub3JkaW5hbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRva2VuKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVGb3JtYXR0aW5nVG9rZW5zKGlucHV0KSB7XG4gICAgICAgIGlmIChpbnB1dC5tYXRjaCgvXFxbW1xcc1xcU10vKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL15cXFt8XFxdJC9nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1xcXFwvZywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VGb3JtYXRGdW5jdGlvbihmb3JtYXQpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gZm9ybWF0Lm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpLCBpLCBsZW5ndGg7XG5cbiAgICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXRUb2tlbkZ1bmN0aW9uc1thcnJheVtpXV0pIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSByZW1vdmVGb3JtYXR0aW5nVG9rZW5zKGFycmF5W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobW9tKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gJycsIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gaXNGdW5jdGlvbihhcnJheVtpXSkgPyBhcnJheVtpXS5jYWxsKG1vbSwgZm9ybWF0KSA6IGFycmF5W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBmb3JtYXQgZGF0ZSB1c2luZyBuYXRpdmUgZGF0ZSBvYmplY3RcbiAgICBmdW5jdGlvbiBmb3JtYXRNb21lbnQobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBtLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybWF0ID0gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbS5sb2NhbGVEYXRhKCkpO1xuICAgICAgICBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSA9IGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdIHx8IG1ha2VGb3JtYXRGdW5jdGlvbihmb3JtYXQpO1xuXG4gICAgICAgIHJldHVybiBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XShtKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHBhbmRGb3JtYXQoZm9ybWF0LCBsb2NhbGUpIHtcbiAgICAgICAgdmFyIGkgPSA1O1xuXG4gICAgICAgIGZ1bmN0aW9uIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2VucyhpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5sb25nRGF0ZUZvcm1hdChpbnB1dCkgfHwgaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMubGFzdEluZGV4ID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBsb2NhbEZvcm1hdHRpbmdUb2tlbnMudGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShsb2NhbEZvcm1hdHRpbmdUb2tlbnMsIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2Vucyk7XG4gICAgICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoMSAgICAgICAgID0gL1xcZC87ICAgICAgICAgICAgLy8gICAgICAgMCAtIDlcbiAgICB2YXIgbWF0Y2gyICAgICAgICAgPSAvXFxkXFxkLzsgICAgICAgICAgLy8gICAgICAwMCAtIDk5XG4gICAgdmFyIG1hdGNoMyAgICAgICAgID0gL1xcZHszfS87ICAgICAgICAgLy8gICAgIDAwMCAtIDk5OVxuICAgIHZhciBtYXRjaDQgICAgICAgICA9IC9cXGR7NH0vOyAgICAgICAgIC8vICAgIDAwMDAgLSA5OTk5XG4gICAgdmFyIG1hdGNoNiAgICAgICAgID0gL1srLV0/XFxkezZ9LzsgICAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuICAgIHZhciBtYXRjaDF0bzIgICAgICA9IC9cXGRcXGQ/LzsgICAgICAgICAvLyAgICAgICAwIC0gOTlcbiAgICB2YXIgbWF0Y2gzdG80ICAgICAgPSAvXFxkXFxkXFxkXFxkPy87ICAgICAvLyAgICAgOTk5IC0gOTk5OVxuICAgIHZhciBtYXRjaDV0bzYgICAgICA9IC9cXGRcXGRcXGRcXGRcXGRcXGQ/LzsgLy8gICA5OTk5OSAtIDk5OTk5OVxuICAgIHZhciBtYXRjaDF0bzMgICAgICA9IC9cXGR7MSwzfS87ICAgICAgIC8vICAgICAgIDAgLSA5OTlcbiAgICB2YXIgbWF0Y2gxdG80ICAgICAgPSAvXFxkezEsNH0vOyAgICAgICAvLyAgICAgICAwIC0gOTk5OVxuICAgIHZhciBtYXRjaDF0bzYgICAgICA9IC9bKy1dP1xcZHsxLDZ9LzsgIC8vIC05OTk5OTkgLSA5OTk5OTlcblxuICAgIHZhciBtYXRjaFVuc2lnbmVkICA9IC9cXGQrLzsgICAgICAgICAgIC8vICAgICAgIDAgLSBpbmZcbiAgICB2YXIgbWF0Y2hTaWduZWQgICAgPSAvWystXT9cXGQrLzsgICAgICAvLyAgICAtaW5mIC0gaW5mXG5cbiAgICB2YXIgbWF0Y2hPZmZzZXQgICAgPSAvWnxbKy1dXFxkXFxkOj9cXGRcXGQvZ2k7IC8vICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWlxuICAgIHZhciBtYXRjaFNob3J0T2Zmc2V0ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vZ2k7IC8vICswMCAtMDAgKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG5cbiAgICB2YXIgbWF0Y2hUaW1lc3RhbXAgPSAvWystXT9cXGQrKFxcLlxcZHsxLDN9KT8vOyAvLyAxMjM0NTY3ODkgMTIzNDU2Nzg5LjEyM1xuXG4gICAgLy8gYW55IHdvcmQgKG9yIHR3bykgY2hhcmFjdGVycyBvciBudW1iZXJzIGluY2x1ZGluZyB0d28vdGhyZWUgd29yZCBtb250aCBpbiBhcmFiaWMuXG4gICAgLy8gaW5jbHVkZXMgc2NvdHRpc2ggZ2FlbGljIHR3byB3b3JkIGFuZCBoeXBoZW5hdGVkIG1vbnRoc1xuICAgIHZhciBtYXRjaFdvcmQgPSAvWzAtOV17MCwyNTZ9WydhLXpcXHUwMEEwLVxcdTA1RkZcXHUwNzAwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGMDdcXHVGRjEwLVxcdUZGRUZdezEsMjU2fXxbXFx1MDYwMC1cXHUwNkZGXFwvXXsxLDI1Nn0oXFxzKj9bXFx1MDYwMC1cXHUwNkZGXXsxLDI1Nn0pezEsMn0vaTtcblxuICAgIHZhciByZWdleGVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRSZWdleFRva2VuICh0b2tlbiwgcmVnZXgsIHN0cmljdFJlZ2V4KSB7XG4gICAgICAgIHJlZ2V4ZXNbdG9rZW5dID0gaXNGdW5jdGlvbihyZWdleCkgPyByZWdleCA6IGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIChpc1N0cmljdCAmJiBzdHJpY3RSZWdleCkgPyBzdHJpY3RSZWdleCA6IHJlZ2V4O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBhcnNlUmVnZXhGb3JUb2tlbiAodG9rZW4sIGNvbmZpZykge1xuICAgICAgICBpZiAoIWhhc093blByb3AocmVnZXhlcywgdG9rZW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh1bmVzY2FwZUZvcm1hdCh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZ2V4ZXNbdG9rZW5dKGNvbmZpZy5fc3RyaWN0LCBjb25maWcuX2xvY2FsZSk7XG4gICAgfVxuXG4gICAgLy8gQ29kZSBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdFxuICAgIGZ1bmN0aW9uIHVuZXNjYXBlRm9ybWF0KHMpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2V4RXNjYXBlKHMucmVwbGFjZSgnXFxcXCcsICcnKS5yZXBsYWNlKC9cXFxcKFxcWyl8XFxcXChcXF0pfFxcWyhbXlxcXVxcW10qKVxcXXxcXFxcKC4pL2csIGZ1bmN0aW9uIChtYXRjaGVkLCBwMSwgcDIsIHAzLCBwNCkge1xuICAgICAgICAgICAgcmV0dXJuIHAxIHx8IHAyIHx8IHAzIHx8IHA0O1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVnZXhFc2NhcGUocykge1xuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcbiAgICB9XG5cbiAgICB2YXIgdG9rZW5zID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRQYXJzZVRva2VuICh0b2tlbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGksIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRva2VuID0gW3Rva2VuXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1iZXIoY2FsbGJhY2spKSB7XG4gICAgICAgICAgICBmdW5jID0gZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2NhbGxiYWNrXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2VuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5baV1dID0gZnVuYztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFdlZWtQYXJzZVRva2VuICh0b2tlbiwgY2FsbGJhY2spIHtcbiAgICAgICAgYWRkUGFyc2VUb2tlbih0b2tlbiwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikge1xuICAgICAgICAgICAgY29uZmlnLl93ID0gY29uZmlnLl93IHx8IHt9O1xuICAgICAgICAgICAgY2FsbGJhY2soaW5wdXQsIGNvbmZpZy5fdywgY29uZmlnLCB0b2tlbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFRpbWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBpbnB1dCwgY29uZmlnKSB7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsICYmIGhhc093blByb3AodG9rZW5zLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbl0oaW5wdXQsIGNvbmZpZy5fYSwgY29uZmlnLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgWUVBUiA9IDA7XG4gICAgdmFyIE1PTlRIID0gMTtcbiAgICB2YXIgREFURSA9IDI7XG4gICAgdmFyIEhPVVIgPSAzO1xuICAgIHZhciBNSU5VVEUgPSA0O1xuICAgIHZhciBTRUNPTkQgPSA1O1xuICAgIHZhciBNSUxMSVNFQ09ORCA9IDY7XG4gICAgdmFyIFdFRUsgPSA3O1xuICAgIHZhciBXRUVLREFZID0gODtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdZJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgeSA9IHRoaXMueWVhcigpO1xuICAgICAgICByZXR1cm4geSA8PSA5OTk5ID8gJycgKyB5IDogJysnICsgeTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVknLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVknLCAgIDRdLCAgICAgICAwLCAneWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWVknLCAgNV0sICAgICAgIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWVknLCA2LCB0cnVlXSwgMCwgJ3llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygneWVhcicsICd5Jyk7XG5cbiAgICAvLyBQUklPUklUSUVTXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3llYXInLCAxKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1knLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWScsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWScsICAgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWVknLCBtYXRjaDF0bzYsIG1hdGNoNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnWVlZWVknLCAnWVlZWVlZJ10sIFlFQVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gaW5wdXQubGVuZ3RoID09PSAyID8gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpIDogdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBkYXlzSW5ZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIoeWVhcikgPyAzNjYgOiAzNjU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCkgfHwgeWVhciAlIDQwMCA9PT0gMDtcbiAgICB9XG5cbiAgICAvLyBIT09LU1xuXG4gICAgaG9va3MucGFyc2VUd29EaWdpdFllYXIgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRvSW50KGlucHV0KSArICh0b0ludChpbnB1dCkgPiA2OCA/IDE5MDAgOiAyMDAwKTtcbiAgICB9O1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFllYXIgPSBtYWtlR2V0U2V0KCdGdWxsWWVhcicsIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gZ2V0SXNMZWFwWWVhciAoKSB7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcigpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlR2V0U2V0ICh1bml0LCBrZWVwVGltZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldCQxKHRoaXMsIHVuaXQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywga2VlcFRpbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0KHRoaXMsIHVuaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldCAobW9tLCB1bml0KSB7XG4gICAgICAgIHJldHVybiBtb20uaXNWYWxpZCgpID9cbiAgICAgICAgICAgIG1vbS5fZFsnZ2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSgpIDogTmFOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCQxIChtb20sIHVuaXQsIHZhbHVlKSB7XG4gICAgICAgIGlmIChtb20uaXNWYWxpZCgpICYmICFpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh1bml0ID09PSAnRnVsbFllYXInICYmIGlzTGVhcFllYXIobW9tLnllYXIoKSkgJiYgbW9tLm1vbnRoKCkgPT09IDEgJiYgbW9tLmRhdGUoKSA9PT0gMjkpIHtcbiAgICAgICAgICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0odmFsdWUsIG1vbS5tb250aCgpLCBkYXlzSW5Nb250aCh2YWx1ZSwgbW9tLm1vbnRoKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdHZXQgKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzW3VuaXRzXSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gc3RyaW5nU2V0ICh1bml0cywgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1bml0cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplT2JqZWN0VW5pdHModW5pdHMpO1xuICAgICAgICAgICAgdmFyIHByaW9yaXRpemVkID0gZ2V0UHJpb3JpdGl6ZWRVbml0cyh1bml0cyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByaW9yaXRpemVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpc1twcmlvcml0aXplZFtpXS51bml0XSh1bml0c1twcmlvcml0aXplZFtpXS51bml0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9kKG4sIHgpIHtcbiAgICAgICAgcmV0dXJuICgobiAlIHgpICsgeCkgJSB4O1xuICAgIH1cblxuICAgIHZhciBpbmRleE9mO1xuXG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7XG4gICAgICAgIGluZGV4T2YgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleE9mID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgIC8vIEkga25vd1xuICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzW2ldID09PSBvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkge1xuICAgICAgICBpZiAoaXNOYU4oeWVhcikgfHwgaXNOYU4obW9udGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtb2RNb250aCA9IG1vZChtb250aCwgMTIpO1xuICAgICAgICB5ZWFyICs9IChtb250aCAtIG1vZE1vbnRoKSAvIDEyO1xuICAgICAgICByZXR1cm4gbW9kTW9udGggPT09IDEgPyAoaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDogMjgpIDogKDMxIC0gbW9kTW9udGggJSA3ICUgMik7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ00nLCBbJ01NJywgMl0sICdNbycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGgoKSArIDE7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21vbnRoJywgJ00nKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21vbnRoJywgOCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdNJywgICAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdNTScsICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTScsICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTU0nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNJywgJ01NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTU9OVEhdID0gdG9JbnQoaW5wdXQpIC0gMTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNTU0nLCAnTU1NTSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciBtb250aCA9IGNvbmZpZy5fbG9jYWxlLm1vbnRoc1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpO1xuICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhIG1vbnRoIG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZC5cbiAgICAgICAgaWYgKG1vbnRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIGFycmF5W01PTlRIXSA9IG1vbnRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZE1vbnRoID0gaW5wdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIHZhciBNT05USFNfSU5fRk9STUFUID0gL0Rbb0RdPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrTU1NTT8vO1xuICAgIHZhciBkZWZhdWx0TG9jYWxlTW9udGhzID0gJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzIChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpID8gdGhpcy5fbW9udGhzIDpcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpID8gdGhpcy5fbW9udGhzW20ubW9udGgoKV0gOlxuICAgICAgICAgICAgdGhpcy5fbW9udGhzWyh0aGlzLl9tb250aHMuaXNGb3JtYXQgfHwgTU9OVEhTX0lOX0ZPUk1BVCkudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCA9ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNTaG9ydCAobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpID8gdGhpcy5fbW9udGhzU2hvcnQgOlxuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0WydzdGFuZGFsb25lJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpID8gdGhpcy5fbW9udGhzU2hvcnRbbS5tb250aCgpXSA6XG4gICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFtNT05USFNfSU5fRk9STUFULnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLm1vbnRoKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVN0cmljdFBhcnNlKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IG1vbnRoTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCB1c2VkXG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7ICsraSkge1xuICAgICAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldID0gdGhpcy5tb250aHMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzUGFyc2UgKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIG1vbSwgcmVnZXg7XG5cbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZS5jYWxsKHRoaXMsIG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9tb250aHNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogYWRkIHNvcnRpbmdcbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlclxuICAgICAgICAvLyBzZWUgc29ydGluZyBpbiBjb21wdXRlTW9udGhzUGFyc2VcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdHJpY3QgJiYgIXRoaXMuX21vbnRoc1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgcmVnZXggPSAnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKSArICd8XicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnTU1NTScgJiYgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnTU1NJyAmJiB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX21vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gc2V0TW9udGggKG1vbSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGRheU9mTW9udGg7XG5cbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAvLyBObyBvcFxuICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoL15cXGQrJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvSW50KHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBtb20ubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBBbm90aGVyIHNpbGVudCBmYWlsdXJlP1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGF5T2ZNb250aCA9IE1hdGgubWluKG1vbS5kYXRlKCksIGRheXNJbk1vbnRoKG1vbS55ZWFyKCksIHZhbHVlKSk7XG4gICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyAnTW9udGgnXSh2YWx1ZSwgZGF5T2ZNb250aCk7XG4gICAgICAgIHJldHVybiBtb207XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0TW9udGggKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZXRNb250aCh0aGlzLCB2YWx1ZSk7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgJ01vbnRoJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXlzSW5Nb250aCAoKSB7XG4gICAgICAgIHJldHVybiBkYXlzSW5Nb250aCh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gbW9udGhzU2hvcnRSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1Nob3J0UmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSBkZWZhdWx0TW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TW9udGhzUmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gbW9udGhzUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZU1vbnRoc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNSZWdleCA9IGRlZmF1bHRNb250aHNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVNb250aHNQYXJzZSAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLCBtb207XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaCh0aGlzLm1vbnRocyhtb20sICcnKSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHNTaG9ydChtb20sICcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdFxuICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuXG4gICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHNob3J0UGllY2VzW2ldID0gcmVnZXhFc2NhcGUoc2hvcnRQaWVjZXNbaV0pO1xuICAgICAgICAgICAgbG9uZ1BpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKGxvbmdQaWVjZXNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNDsgaSsrKSB7XG4gICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1peGVkUGllY2VzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFJlZ2V4ID0gdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbG9uZ1BpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRGF0ZSAoeSwgbSwgZCwgaCwgTSwgcywgbXMpIHtcbiAgICAgICAgLy8gY2FuJ3QganVzdCBhcHBseSgpIHRvIGNyZWF0ZSBhIGRhdGU6XG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8xODEzNDhcbiAgICAgICAgdmFyIGRhdGU7XG4gICAgICAgIC8vIHRoZSBkYXRlIGNvbnN0cnVjdG9yIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoeSArIDQwMCwgbSwgZCwgaCwgTSwgcywgbXMpO1xuICAgICAgICAgICAgaWYgKGlzRmluaXRlKGRhdGUuZ2V0RnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVUQ0RhdGUgKHkpIHtcbiAgICAgICAgdmFyIGRhdGU7XG4gICAgICAgIC8vIHRoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgYXJnc1swXSA9IHkgKyA0MDA7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJncykpO1xuICAgICAgICAgICAgaWYgKGlzRmluaXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQtb2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXJcbiAgICBmdW5jdGlvbiBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKVxuICAgICAgICAgICAgZndkID0gNyArIGRvdyAtIGRveSxcbiAgICAgICAgICAgIC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9jYWwgd2Vla2RheSBpcyBmd2RcbiAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBjcmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cpICUgNztcblxuICAgICAgICByZXR1cm4gLWZ3ZGx3ICsgZndkIC0gMTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlI0NhbGN1bGF0aW5nX2FfZGF0ZV9naXZlbl90aGVfeWVhci4yQ193ZWVrX251bWJlcl9hbmRfd2Vla2RheVxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyh5ZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgbG9jYWxXZWVrZGF5ID0gKDcgKyB3ZWVrZGF5IC0gZG93KSAlIDcsXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRheU9mWWVhciA9IDEgKyA3ICogKHdlZWsgLSAxKSArIGxvY2FsV2Vla2RheSArIHdlZWtPZmZzZXQsXG4gICAgICAgICAgICByZXNZZWFyLCByZXNEYXlPZlllYXI7XG5cbiAgICAgICAgaWYgKGRheU9mWWVhciA8PSAwKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciAtIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlzSW5ZZWFyKHJlc1llYXIpICsgZGF5T2ZZZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mWWVhciA+IGRheXNJblllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyICsgMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhciAtIGRheXNJblllYXIoeWVhcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyLFxuICAgICAgICAgICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrT2ZZZWFyKG1vbSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQobW9tLnllYXIoKSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2VlayA9IE1hdGguZmxvb3IoKG1vbS5kYXlPZlllYXIoKSAtIHdlZWtPZmZzZXQgLSAxKSAvIDcpICsgMSxcbiAgICAgICAgICAgIHJlc1dlZWssIHJlc1llYXI7XG5cbiAgICAgICAgaWYgKHdlZWsgPCAxKSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSAtIDE7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayArIHdlZWtzSW5ZZWFyKHJlc1llYXIsIGRvdywgZG95KTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayAtIHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KTtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2VlazogcmVzV2VlayxcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrc0luWWVhcih5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0TmV4dCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyICsgMSwgZG93LCBkb3kpO1xuICAgICAgICByZXR1cm4gKGRheXNJblllYXIoeWVhcikgLSB3ZWVrT2Zmc2V0ICsgd2Vla09mZnNldE5leHQpIC8gNztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigndycsIFsnd3cnLCAyXSwgJ3dvJywgJ3dlZWsnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignVycsIFsnV1cnLCAyXSwgJ1dvJywgJ2lzb1dlZWsnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2VlaycsICd3Jyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrJywgJ1cnKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnd2VlaycsIDUpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2VlaycsIDUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigndycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3d3JywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdXVycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsndycsICd3dycsICdXJywgJ1dXJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAxKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrIChtb20pIHtcbiAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrID0ge1xuICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mV2VlayAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mWWVhciAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRveTtcbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHdlZWtPZlllYXIodGhpcywgMSwgNCkud2VlaztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RvJywgJ2RheScpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZScsIDAsIDAsICd3ZWVrZGF5Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ0UnLCAwLCAwLCAnaXNvV2Vla2RheScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXknLCAnZCcpO1xuICAgIGFkZFVuaXRBbGlhcygnd2Vla2RheScsICdlJyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrZGF5JywgJ0UnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrZGF5JywgMTEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla2RheScsIDExKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2QnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzTWluUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2RkJywgJ2RkZCcsICdkZGRkJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgd2Vla2RheSA9IGNvbmZpZy5fbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZFxuICAgICAgICBpZiAod2Vla2RheSAhPSBudWxsKSB7XG4gICAgICAgICAgICB3ZWVrLmQgPSB3ZWVrZGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZFdlZWtkYXkgPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkJywgJ2UnLCAnRSddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBwYXJzZVdlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc05hTihpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChpbnB1dCwgMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQgPSBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KSAlIDcgfHwgNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOYU4oaW5wdXQpID8gbnVsbCA6IGlucHV0O1xuICAgIH1cblxuICAgIC8vIExPQ0FMRVNcbiAgICBmdW5jdGlvbiBzaGlmdFdlZWtkYXlzICh3cywgbikge1xuICAgICAgICByZXR1cm4gd3Muc2xpY2UobiwgNykuY29uY2F0KHdzLnNsaWNlKDAsIG4pKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzID0gJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzIChtLCBmb3JtYXQpIHtcbiAgICAgICAgdmFyIHdlZWtkYXlzID0gaXNBcnJheSh0aGlzLl93ZWVrZGF5cykgPyB0aGlzLl93ZWVrZGF5cyA6XG4gICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1sobSAmJiBtICE9PSB0cnVlICYmIHRoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZm9ybWF0KSkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ107XG4gICAgICAgIHJldHVybiAobSA9PT0gdHJ1ZSkgPyBzaGlmdFdlZWtkYXlzKHdlZWtkYXlzLCB0aGlzLl93ZWVrLmRvdylcbiAgICAgICAgICAgIDogKG0pID8gd2Vla2RheXNbbS5kYXkoKV0gOiB3ZWVrZGF5cztcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQgPSAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzU2hvcnQgKG0pIHtcbiAgICAgICAgcmV0dXJuIChtID09PSB0cnVlKSA/IHNoaWZ0V2Vla2RheXModGhpcy5fd2Vla2RheXNTaG9ydCwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IChtKSA/IHRoaXMuX3dlZWtkYXlzU2hvcnRbbS5kYXkoKV0gOiB0aGlzLl93ZWVrZGF5c1Nob3J0O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4gPSAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNNaW4gKG0pIHtcbiAgICAgICAgcmV0dXJuIChtID09PSB0cnVlKSA/IHNoaWZ0V2Vla2RheXModGhpcy5fd2Vla2RheXNNaW4sIHRoaXMuX3dlZWsuZG93KVxuICAgICAgICAgICAgOiAobSkgPyB0aGlzLl93ZWVrZGF5c01pblttLmRheSgpXSA6IHRoaXMuX3dlZWtkYXlzTWluO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVN0cmljdFBhcnNlJDEod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBpaSwgbW9tLCBsbGMgPSB3ZWVrZGF5TmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGRkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzUGFyc2UgKHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlU3RyaWN0UGFyc2UkMS5jYWxsKHRoaXMsIHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuXG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9ICdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpICsgJ3xeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAocmVnZXgucmVwbGFjZSgnLicsICcnKSwgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgdGhlIHJlZ2V4XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZGQnICYmIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZGQnICYmIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGQnICYmIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXREYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5ID0gdGhpcy5faXNVVEMgPyB0aGlzLl9kLmdldFVUQ0RheSgpIDogdGhpcy5fZC5nZXREYXkoKTtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlucHV0ID0gcGFyc2VXZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQoaW5wdXQgLSBkYXksICdkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGF5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0TG9jYWxlRGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdlZWtkYXkgPSAodGhpcy5kYXkoKSArIDcgLSB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3cpICUgNztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrZGF5IDogdGhpcy5hZGQoaW5wdXQgLSB3ZWVrZGF5LCAnZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT0RheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYmVoYXZlcyB0aGUgc2FtZSBhcyBtb21lbnQjZGF5IGV4Y2VwdFxuICAgICAgICAvLyBhcyBhIGdldHRlciwgcmV0dXJucyA3IGluc3RlYWQgb2YgMCAoMS03IHJhbmdlIGluc3RlYWQgb2YgMC02KVxuICAgICAgICAvLyBhcyBhIHNldHRlciwgc3VuZGF5IHNob3VsZCBiZWxvbmcgdG8gdGhlIHByZXZpb3VzIHdlZWsuXG5cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciB3ZWVrZGF5ID0gcGFyc2VJc29XZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSAlIDcgPyB3ZWVrZGF5IDogd2Vla2RheSAtIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgfHwgNztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0V2Vla2RheXNSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1JlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IGRlZmF1bHRXZWVrZGF5c1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gd2Vla2RheXNTaG9ydFJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0V2Vla2RheXNNaW5SZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c01pblJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNNaW5SZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBjb21wdXRlV2Vla2RheXNQYXJzZSAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBtaW5QaWVjZXMgPSBbXSwgc2hvcnRQaWVjZXMgPSBbXSwgbG9uZ1BpZWNlcyA9IFtdLCBtaXhlZFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgaSwgbW9tLCBtaW5wLCBzaG9ydHAsIGxvbmdwO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIG1pbnAgPSB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpO1xuICAgICAgICAgICAgc2hvcnRwID0gdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpO1xuICAgICAgICAgICAgbG9uZ3AgPSB0aGlzLndlZWtkYXlzKG1vbSwgJycpO1xuICAgICAgICAgICAgbWluUGllY2VzLnB1c2gobWlucCk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHNob3J0cCk7XG4gICAgICAgICAgICBsb25nUGllY2VzLnB1c2gobG9uZ3ApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gobG9uZ3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgd2Vla2RheSAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdFxuICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuXG4gICAgICAgIG1pblBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1peGVkUGllY2VzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluUmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgc2hvcnRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWluUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBoRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpICUgMTIgfHwgMTI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga0Zvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKSB8fCAyNDtcbiAgICB9XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSCcsIFsnSEgnLCAyXSwgMCwgJ2hvdXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignaCcsIFsnaGgnLCAyXSwgMCwgaEZvcm1hdCk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ2snLCBbJ2trJywgMl0sIDAsIGtGb3JtYXQpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgaEZvcm1hdC5hcHBseSh0aGlzKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdobW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgaEZvcm1hdC5hcHBseSh0aGlzKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyB0aGlzLmhvdXJzKCkgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSG1tc3MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBtZXJpZGllbSAodG9rZW4sIGxvd2VyY2FzZSkge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1lcmlkaWVtKHRoaXMuaG91cnMoKSwgdGhpcy5taW51dGVzKCksIGxvd2VyY2FzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1lcmlkaWVtKCdhJywgdHJ1ZSk7XG4gICAgbWVyaWRpZW0oJ0EnLCBmYWxzZSk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2hvdXInLCAnaCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2hvdXInLCAxMyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBmdW5jdGlvbiBtYXRjaE1lcmlkaWVtIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuX21lcmlkaWVtUGFyc2U7XG4gICAgfVxuXG4gICAgYWRkUmVnZXhUb2tlbignYScsICBtYXRjaE1lcmlkaWVtKTtcbiAgICBhZGRSZWdleFRva2VuKCdBJywgIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0gnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdoJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignaycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0hIJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2hoJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2trJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkUmVnZXhUb2tlbignaG1tJywgbWF0Y2gzdG80KTtcbiAgICBhZGRSZWdleFRva2VuKCdobW1zcycsIG1hdGNoNXRvNik7XG4gICAgYWRkUmVnZXhUb2tlbignSG1tJywgbWF0Y2gzdG80KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW1zcycsIG1hdGNoNXRvNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnSCcsICdISCddLCBIT1VSKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnaycsICdrayddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIGtJbnB1dCA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSBrSW5wdXQgPT09IDI0ID8gMCA6IGtJbnB1dDtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnYScsICdBJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2lzUG0gPSBjb25maWcuX2xvY2FsZS5pc1BNKGlucHV0KTtcbiAgICAgICAgY29uZmlnLl9tZXJpZGllbSA9IGlucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydoJywgJ2hoJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignaG1tJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MpKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignaG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0O1xuICAgICAgICB2YXIgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdIbW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MxID0gaW5wdXQubGVuZ3RoIC0gNDtcbiAgICAgICAgdmFyIHBvczIgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMSwgMikpO1xuICAgICAgICBhcnJheVtTRUNPTkRdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczIpKTtcbiAgICB9KTtcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUlzUE0gKGlucHV0KSB7XG4gICAgICAgIC8vIElFOCBRdWlya3MgTW9kZSAmIElFNyBTdGFuZGFyZHMgTW9kZSBkbyBub3QgYWxsb3cgYWNjZXNzaW5nIHN0cmluZ3MgbGlrZSBhcnJheXNcbiAgICAgICAgLy8gVXNpbmcgY2hhckF0IHNob3VsZCBiZSBtb3JlIGNvbXBhdGlibGUuXG4gICAgICAgIHJldHVybiAoKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApID09PSAncCcpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZSA9IC9bYXBdXFwuP20/XFwuPy9pO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1lcmlkaWVtIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncG0nIDogJ1BNJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2FtJyA6ICdBTSc7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIFNldHRpbmcgdGhlIGhvdXIgc2hvdWxkIGtlZXAgdGhlIHRpbWUsIGJlY2F1c2UgdGhlIHVzZXIgZXhwbGljaXRseVxuICAgIC8vIHNwZWNpZmllZCB3aGljaCBob3VyIHRoZXkgd2FudC4gU28gdHJ5aW5nIHRvIG1haW50YWluIHRoZSBzYW1lIGhvdXIgKGluXG4gICAgLy8gYSBuZXcgdGltZXpvbmUpIG1ha2VzIHNlbnNlLiBBZGRpbmcvc3VidHJhY3RpbmcgaG91cnMgZG9lcyBub3QgZm9sbG93XG4gICAgLy8gdGhpcyBydWxlLlxuICAgIHZhciBnZXRTZXRIb3VyID0gbWFrZUdldFNldCgnSG91cnMnLCB0cnVlKTtcblxuICAgIHZhciBiYXNlQ29uZmlnID0ge1xuICAgICAgICBjYWxlbmRhcjogZGVmYXVsdENhbGVuZGFyLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDogZGVmYXVsdExvbmdEYXRlRm9ybWF0LFxuICAgICAgICBpbnZhbGlkRGF0ZTogZGVmYXVsdEludmFsaWREYXRlLFxuICAgICAgICBvcmRpbmFsOiBkZWZhdWx0T3JkaW5hbCxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UsXG4gICAgICAgIHJlbGF0aXZlVGltZTogZGVmYXVsdFJlbGF0aXZlVGltZSxcblxuICAgICAgICBtb250aHM6IGRlZmF1bHRMb2NhbGVNb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQsXG5cbiAgICAgICAgd2VlazogZGVmYXVsdExvY2FsZVdlZWssXG5cbiAgICAgICAgd2Vla2RheXM6IGRlZmF1bHRMb2NhbGVXZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW46IGRlZmF1bHRMb2NhbGVXZWVrZGF5c01pbixcbiAgICAgICAgd2Vla2RheXNTaG9ydDogZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQsXG5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogZGVmYXVsdExvY2FsZU1lcmlkaWVtUGFyc2VcbiAgICB9O1xuXG4gICAgLy8gaW50ZXJuYWwgc3RvcmFnZSBmb3IgbG9jYWxlIGNvbmZpZyBmaWxlc1xuICAgIHZhciBsb2NhbGVzID0ge307XG4gICAgdmFyIGxvY2FsZUZhbWlsaWVzID0ge307XG4gICAgdmFyIGdsb2JhbExvY2FsZTtcblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUxvY2FsZShrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleSA/IGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ18nLCAnLScpIDoga2V5O1xuICAgIH1cblxuICAgIC8vIHBpY2sgdGhlIGxvY2FsZSBmcm9tIHRoZSBhcnJheVxuICAgIC8vIHRyeSBbJ2VuLWF1JywgJ2VuLWdiJ10gYXMgJ2VuLWF1JywgJ2VuLWdiJywgJ2VuJywgYXMgaW4gbW92ZSB0aHJvdWdoIHRoZSBsaXN0IHRyeWluZyBlYWNoXG4gICAgLy8gc3Vic3RyaW5nIGZyb20gbW9zdCBzcGVjaWZpYyB0byBsZWFzdCwgYnV0IG1vdmUgdG8gdGhlIG5leHQgYXJyYXkgaXRlbSBpZiBpdCdzIGEgbW9yZSBzcGVjaWZpYyB2YXJpYW50IHRoYW4gdGhlIGN1cnJlbnQgcm9vdFxuICAgIGZ1bmN0aW9uIGNob29zZUxvY2FsZShuYW1lcykge1xuICAgICAgICB2YXIgaSA9IDAsIGosIG5leHQsIGxvY2FsZSwgc3BsaXQ7XG5cbiAgICAgICAgd2hpbGUgKGkgPCBuYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNwbGl0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2ldKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgaiA9IHNwbGl0Lmxlbmd0aDtcbiAgICAgICAgICAgIG5leHQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaSArIDFdKTtcbiAgICAgICAgICAgIG5leHQgPSBuZXh0ID8gbmV4dC5zcGxpdCgnLScpIDogbnVsbDtcbiAgICAgICAgICAgIHdoaWxlIChqID4gMCkge1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoc3BsaXQuc2xpY2UoMCwgaikuam9pbignLScpKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQubGVuZ3RoID49IGogJiYgY29tcGFyZUFycmF5cyhzcGxpdCwgbmV4dCwgdHJ1ZSkgPj0gaiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy90aGUgbmV4dCBhcnJheSBpdGVtIGlzIGJldHRlciB0aGFuIGEgc2hhbGxvd2VyIHN1YnN0cmluZyBvZiB0aGlzIG9uZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgai0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9hZExvY2FsZShuYW1lKSB7XG4gICAgICAgIHZhciBvbGRMb2NhbGUgPSBudWxsO1xuICAgICAgICAvLyBUT0RPOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWdpc3RlciBhbmQgbG9hZCBhbGwgdGhlIGxvY2FsZXMgaW4gTm9kZVxuICAgICAgICBpZiAoIWxvY2FsZXNbbmFtZV0gJiYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSAmJlxuICAgICAgICAgICAgICAgIG1vZHVsZSAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvbGRMb2NhbGUgPSBnbG9iYWxMb2NhbGUuX2FiYnI7XG4gICAgICAgICAgICAgICAgdmFyIGFsaWFzZWRSZXF1aXJlID0gcmVxdWlyZTtcbiAgICAgICAgICAgICAgICBhbGlhc2VkUmVxdWlyZSgnLi9sb2NhbGUvJyArIG5hbWUpO1xuICAgICAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShvbGRMb2NhbGUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgbG9hZCBsb2NhbGUgYW5kIHRoZW4gc2V0IHRoZSBnbG9iYWwgbG9jYWxlLiAgSWZcbiAgICAvLyBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCBpbiwgaXQgd2lsbCBzaW1wbHkgcmV0dXJuIHRoZSBjdXJyZW50IGdsb2JhbFxuICAgIC8vIGxvY2FsZSBrZXkuXG4gICAgZnVuY3Rpb24gZ2V0U2V0R2xvYmFsTG9jYWxlIChrZXksIHZhbHVlcykge1xuICAgICAgICB2YXIgZGF0YTtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZGVmaW5lTG9jYWxlKGtleSwgdmFsdWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAvLyBtb21lbnQuZHVyYXRpb24uX2xvY2FsZSA9IG1vbWVudC5fbG9jYWxlID0gZGF0YTtcbiAgICAgICAgICAgICAgICBnbG9iYWxMb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgY29uc29sZSAhPT0gICd1bmRlZmluZWQnKSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICAgICAgICAgICAgLy93YXJuIHVzZXIgaWYgYXJndW1lbnRzIGFyZSBwYXNzZWQgYnV0IHRoZSBsb2NhbGUgY291bGQgbm90IGJlIHNldFxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0xvY2FsZSAnICsga2V5ICsgICcgbm90IGZvdW5kLiBEaWQgeW91IGZvcmdldCB0byBsb2FkIGl0PycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGUuX2FiYnI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmaW5lTG9jYWxlIChuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZSwgcGFyZW50Q29uZmlnID0gYmFzZUNvbmZpZztcbiAgICAgICAgICAgIGNvbmZpZy5hYmJyID0gbmFtZTtcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUoJ2RlZmluZUxvY2FsZU92ZXJyaWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgbW9tZW50LnVwZGF0ZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHRvIGNoYW5nZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbiBleGlzdGluZyBsb2NhbGUuIG1vbWVudC5kZWZpbmVMb2NhbGUobG9jYWxlTmFtZSwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnKSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGUgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZGVmaW5lLWxvY2FsZS8gZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW25hbWVdLl9jb25maWc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tjb25maWcucGFyZW50TG9jYWxlXS5fY29uZmlnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoY29uZmlnLnBhcmVudExvY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlLl9jb25maWc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBjb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbmV3IExvY2FsZShtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjb25maWcpKTtcblxuICAgICAgICAgICAgaWYgKGxvY2FsZUZhbWlsaWVzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbbmFtZV0uZm9yRWFjaChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBkZWZpbmVMb2NhbGUoeC5uYW1lLCB4LmNvbmZpZyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZVxuICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIHNldCB0aGUgbG9jYWxlIEFGVEVSIGFsbCBjaGlsZCBsb2NhbGVzIGhhdmUgYmVlblxuICAgICAgICAgICAgLy8gY3JlYXRlZCwgc28gd2Ugd29uJ3QgZW5kIHVwIHdpdGggdGhlIGNoaWxkIGxvY2FsZSBzZXQuXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG5cblxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB1c2VmdWwgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVMb2NhbGUobmFtZSwgY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZSwgdG1wTG9jYWxlLCBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgLy8gTUVSR0VcbiAgICAgICAgICAgIHRtcExvY2FsZSA9IGxvYWRMb2NhbGUobmFtZSk7XG4gICAgICAgICAgICBpZiAodG1wTG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSB0bXBMb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZyA9IG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZyk7XG4gICAgICAgICAgICBsb2NhbGUgPSBuZXcgTG9jYWxlKGNvbmZpZyk7XG4gICAgICAgICAgICBsb2NhbGUucGFyZW50TG9jYWxlID0gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGU7XG5cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZVxuICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcGFzcyBudWxsIGZvciBjb25maWcgdG8gdW51cGRhdGUsIHVzZWZ1bCBmb3IgdGVzdHNcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIHJldHVybnMgbG9jYWxlIGRhdGFcbiAgICBmdW5jdGlvbiBnZXRMb2NhbGUgKGtleSkge1xuICAgICAgICB2YXIgbG9jYWxlO1xuXG4gICAgICAgIGlmIChrZXkgJiYga2V5Ll9sb2NhbGUgJiYga2V5Ll9sb2NhbGUuX2FiYnIpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQXJyYXkoa2V5KSkge1xuICAgICAgICAgICAgLy9zaG9ydC1jaXJjdWl0IGV2ZXJ5dGhpbmcgZWxzZVxuICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXkgPSBba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaG9vc2VMb2NhbGUoa2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TG9jYWxlcygpIHtcbiAgICAgICAgcmV0dXJuIGtleXMobG9jYWxlcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tPdmVyZmxvdyAobSkge1xuICAgICAgICB2YXIgb3ZlcmZsb3c7XG4gICAgICAgIHZhciBhID0gbS5fYTtcblxuICAgICAgICBpZiAoYSAmJiBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPT09IC0yKSB7XG4gICAgICAgICAgICBvdmVyZmxvdyA9XG4gICAgICAgICAgICAgICAgYVtNT05USF0gICAgICAgPCAwIHx8IGFbTU9OVEhdICAgICAgID4gMTEgID8gTU9OVEggOlxuICAgICAgICAgICAgICAgIGFbREFURV0gICAgICAgIDwgMSB8fCBhW0RBVEVdICAgICAgICA+IGRheXNJbk1vbnRoKGFbWUVBUl0sIGFbTU9OVEhdKSA/IERBVEUgOlxuICAgICAgICAgICAgICAgIGFbSE9VUl0gICAgICAgIDwgMCB8fCBhW0hPVVJdICAgICAgICA+IDI0IHx8IChhW0hPVVJdID09PSAyNCAmJiAoYVtNSU5VVEVdICE9PSAwIHx8IGFbU0VDT05EXSAhPT0gMCB8fCBhW01JTExJU0VDT05EXSAhPT0gMCkpID8gSE9VUiA6XG4gICAgICAgICAgICAgICAgYVtNSU5VVEVdICAgICAgPCAwIHx8IGFbTUlOVVRFXSAgICAgID4gNTkgID8gTUlOVVRFIDpcbiAgICAgICAgICAgICAgICBhW1NFQ09ORF0gICAgICA8IDAgfHwgYVtTRUNPTkRdICAgICAgPiA1OSAgPyBTRUNPTkQgOlxuICAgICAgICAgICAgICAgIGFbTUlMTElTRUNPTkRdIDwgMCB8fCBhW01JTExJU0VDT05EXSA+IDk5OSA/IE1JTExJU0VDT05EIDpcbiAgICAgICAgICAgICAgICAtMTtcblxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dEYXlPZlllYXIgJiYgKG92ZXJmbG93IDwgWUVBUiB8fCBvdmVyZmxvdyA+IERBVEUpKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBEQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dXZWVrcyAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtkYXkgJiYgb3ZlcmZsb3cgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBXRUVLREFZO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPSBvdmVyZmxvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIC8vIFBpY2sgdGhlIGZpcnN0IGRlZmluZWQgb2YgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy5cbiAgICBmdW5jdGlvbiBkZWZhdWx0cyhhLCBiLCBjKSB7XG4gICAgICAgIGlmIChhICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKSB7XG4gICAgICAgIC8vIGhvb2tzIGlzIGFjdHVhbGx5IHRoZSBleHBvcnRlZCBtb21lbnQgb2JqZWN0XG4gICAgICAgIHZhciBub3dWYWx1ZSA9IG5ldyBEYXRlKGhvb2tzLm5vdygpKTtcbiAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDKSB7XG4gICAgICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksIG5vd1ZhbHVlLmdldFVUQ01vbnRoKCksIG5vd1ZhbHVlLmdldFVUQ0RhdGUoKV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtub3dWYWx1ZS5nZXRGdWxsWWVhcigpLCBub3dWYWx1ZS5nZXRNb250aCgpLCBub3dWYWx1ZS5nZXREYXRlKCldO1xuICAgIH1cblxuICAgIC8vIGNvbnZlcnQgYW4gYXJyYXkgdG8gYSBkYXRlLlxuICAgIC8vIHRoZSBhcnJheSBzaG91bGQgbWlycm9yIHRoZSBwYXJhbWV0ZXJzIGJlbG93XG4gICAgLy8gbm90ZTogYWxsIHZhbHVlcyBwYXN0IHRoZSB5ZWFyIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBsb3dlc3QgcG9zc2libGUgdmFsdWUuXG4gICAgLy8gW3llYXIsIG1vbnRoLCBkYXkgLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUFycmF5IChjb25maWcpIHtcbiAgICAgICAgdmFyIGksIGRhdGUsIGlucHV0ID0gW10sIGN1cnJlbnREYXRlLCBleHBlY3RlZFdlZWtkYXksIHllYXJUb1VzZTtcblxuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKTtcblxuICAgICAgICAvL2NvbXB1dGUgZGF5IG9mIHRoZSB5ZWFyIGZyb20gd2Vla3MgYW5kIHdlZWtkYXlzXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgY29uZmlnLl9hW0RBVEVdID09IG51bGwgJiYgY29uZmlnLl9hW01PTlRIXSA9PSBudWxsKSB7XG4gICAgICAgICAgICBkYXlPZlllYXJGcm9tV2Vla0luZm8oY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vaWYgdGhlIGRheSBvZiB0aGUgeWVhciBpcyBzZXQsIGZpZ3VyZSBvdXQgd2hhdCBpdCBpc1xuICAgICAgICBpZiAoY29uZmlnLl9kYXlPZlllYXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgeWVhclRvVXNlID0gZGVmYXVsdHMoY29uZmlnLl9hW1lFQVJdLCBjdXJyZW50RGF0ZVtZRUFSXSk7XG5cbiAgICAgICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciA+IGRheXNJblllYXIoeWVhclRvVXNlKSB8fCBjb25maWcuX2RheU9mWWVhciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd0RheU9mWWVhciA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKHllYXJUb1VzZSwgMCwgY29uZmlnLl9kYXlPZlllYXIpO1xuICAgICAgICAgICAgY29uZmlnLl9hW01PTlRIXSA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtEQVRFXSA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IGRhdGUuXG4gICAgICAgIC8vICogaWYgbm8geWVhciwgbW9udGgsIGRheSBvZiBtb250aCBhcmUgZ2l2ZW4sIGRlZmF1bHQgdG8gdG9kYXlcbiAgICAgICAgLy8gKiBpZiBkYXkgb2YgbW9udGggaXMgZ2l2ZW4sIGRlZmF1bHQgbW9udGggYW5kIHllYXJcbiAgICAgICAgLy8gKiBpZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBvbmx5IHllYXJcbiAgICAgICAgLy8gKiBpZiB5ZWFyIGlzIGdpdmVuLCBkb24ndCBkZWZhdWx0IGFueXRoaW5nXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAzICYmIGNvbmZpZy5fYVtpXSA9PSBudWxsOyArK2kpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gY3VycmVudERhdGVbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBaZXJvIG91dCB3aGF0ZXZlciB3YXMgbm90IGRlZmF1bHRlZCwgaW5jbHVkaW5nIHRpbWVcbiAgICAgICAgZm9yICg7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gKGNvbmZpZy5fYVtpXSA9PSBudWxsKSA/IChpID09PSAyID8gMSA6IDApIDogY29uZmlnLl9hW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIDI0OjAwOjAwLjAwMFxuICAgICAgICBpZiAoY29uZmlnLl9hW0hPVVJdID09PSAyNCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtNSU5VVEVdID09PSAwICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW1NFQ09ORF0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbTUlMTElTRUNPTkRdID09PSAwKSB7XG4gICAgICAgICAgICBjb25maWcuX25leHREYXkgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZy5fZCA9IChjb25maWcuX3VzZVVUQyA/IGNyZWF0ZVVUQ0RhdGUgOiBjcmVhdGVEYXRlKS5hcHBseShudWxsLCBpbnB1dCk7XG4gICAgICAgIGV4cGVjdGVkV2Vla2RheSA9IGNvbmZpZy5fdXNlVVRDID8gY29uZmlnLl9kLmdldFVUQ0RheSgpIDogY29uZmlnLl9kLmdldERheSgpO1xuXG4gICAgICAgIC8vIEFwcGx5IHRpbWV6b25lIG9mZnNldCBmcm9tIGlucHV0LiBUaGUgYWN0dWFsIHV0Y09mZnNldCBjYW4gYmUgY2hhbmdlZFxuICAgICAgICAvLyB3aXRoIHBhcnNlWm9uZS5cbiAgICAgICAgaWYgKGNvbmZpZy5fdHptICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLl9uZXh0RGF5KSB7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAyNDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNoZWNrIGZvciBtaXNtYXRjaGluZyBkYXkgb2Ygd2Vla1xuICAgICAgICBpZiAoY29uZmlnLl93ICYmIHR5cGVvZiBjb25maWcuX3cuZCAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uZmlnLl93LmQgIT09IGV4cGVjdGVkV2Vla2RheSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykud2Vla2RheU1pc21hdGNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpIHtcbiAgICAgICAgdmFyIHcsIHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSwgdGVtcCwgd2Vla2RheU92ZXJmbG93O1xuXG4gICAgICAgIHcgPSBjb25maWcuX3c7XG4gICAgICAgIGlmICh3LkdHICE9IG51bGwgfHwgdy5XICE9IG51bGwgfHwgdy5FICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRvdyA9IDE7XG4gICAgICAgICAgICBkb3kgPSA0O1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBXZSBuZWVkIHRvIHRha2UgdGhlIGN1cnJlbnQgaXNvV2Vla1llYXIsIGJ1dCB0aGF0IGRlcGVuZHMgb25cbiAgICAgICAgICAgIC8vIGhvdyB3ZSBpbnRlcnByZXQgbm93IChsb2NhbCwgdXRjLCBmaXhlZCBvZmZzZXQpLiBTbyBjcmVhdGVcbiAgICAgICAgICAgIC8vIGEgbm93IHZlcnNpb24gb2YgY3VycmVudCBjb25maWcgKHRha2UgbG9jYWwvdXRjL29mZnNldCBmbGFncywgYW5kXG4gICAgICAgICAgICAvLyBjcmVhdGUgbm93KS5cbiAgICAgICAgICAgIHdlZWtZZWFyID0gZGVmYXVsdHMody5HRywgY29uZmlnLl9hW1lFQVJdLCB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIDEsIDQpLnllYXIpO1xuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcuVywgMSk7XG4gICAgICAgICAgICB3ZWVrZGF5ID0gZGVmYXVsdHMody5FLCAxKTtcbiAgICAgICAgICAgIGlmICh3ZWVrZGF5IDwgMSB8fCB3ZWVrZGF5ID4gNykge1xuICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkb3cgPSBjb25maWcuX2xvY2FsZS5fd2Vlay5kb3c7XG4gICAgICAgICAgICBkb3kgPSBjb25maWcuX2xvY2FsZS5fd2Vlay5kb3k7XG5cbiAgICAgICAgICAgIHZhciBjdXJXZWVrID0gd2Vla09mWWVhcihjcmVhdGVMb2NhbCgpLCBkb3csIGRveSk7XG5cbiAgICAgICAgICAgIHdlZWtZZWFyID0gZGVmYXVsdHMody5nZywgY29uZmlnLl9hW1lFQVJdLCBjdXJXZWVrLnllYXIpO1xuXG4gICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgd2Vlay5cbiAgICAgICAgICAgIHdlZWsgPSBkZWZhdWx0cyh3LncsIGN1cldlZWsud2Vlayk7XG5cbiAgICAgICAgICAgIGlmICh3LmQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIHdlZWtkYXkgLS0gbG93IGRheSBudW1iZXJzIGFyZSBjb25zaWRlcmVkIG5leHQgd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3LmQ7XG4gICAgICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAwIHx8IHdlZWtkYXkgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh3LmUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIGxvY2FsIHdlZWtkYXkgLS0gY291bnRpbmcgc3RhcnRzIGZyb20gYmVnaW5uaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5lICsgZG93O1xuICAgICAgICAgICAgICAgIGlmICh3LmUgPCAwIHx8IHcuZSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gYmVnaW5uaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gZG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3ZWVrIDwgMSB8fCB3ZWVrID4gd2Vla3NJblllYXIod2Vla1llYXIsIGRvdywgZG95KSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla3MgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWtkYXlPdmVyZmxvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrZGF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlbXAgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSA9IHRlbXAueWVhcjtcbiAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdGVtcC5kYXlPZlllYXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpc28gODYwMSByZWdleFxuICAgIC8vIDAwMDAtMDAtMDAgMDAwMC1XMDAgb3IgMDAwMC1XMDAtMCArIFQgKyAwMCBvciAwMDowMCBvciAwMDowMDowMCBvciAwMDowMDowMC4wMDAgKyArMDA6MDAgb3IgKzAwMDAgb3IgKzAwKVxuICAgIHZhciBleHRlbmRlZElzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KS0oPzpcXGRcXGQtXFxkXFxkfFdcXGRcXGQtXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86OlxcZFxcZCg/OjpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoW1xcK1xcLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvO1xuICAgIHZhciBiYXNpY0lzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KSg/OlxcZFxcZFxcZFxcZHxXXFxkXFxkXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86XFxkXFxkKD86XFxkXFxkKD86Wy4sXVxcZCspPyk/KT8pKFtcXCtcXC1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLztcblxuICAgIHZhciB0elJlZ2V4ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vO1xuXG4gICAgdmFyIGlzb0RhdGVzID0gW1xuICAgICAgICBbJ1lZWVlZWS1NTS1ERCcsIC9bKy1dXFxkezZ9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgWydZWVlZLU1NLUREJywgL1xcZHs0fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgIFsnR0dHRy1bV11XVy1FJywgL1xcZHs0fS1XXFxkXFxkLVxcZC9dLFxuICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXFxkezR9LVdcXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgIFsnWVlZWS1EREQnLCAvXFxkezR9LVxcZHszfS9dLFxuICAgICAgICBbJ1lZWVktTU0nLCAvXFxkezR9LVxcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZWVlNTUREJywgL1srLV1cXGR7MTB9L10sXG4gICAgICAgIFsnWVlZWU1NREQnLCAvXFxkezh9L10sXG4gICAgICAgIC8vIFlZWVlNTSBpcyBOT1QgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmRcbiAgICAgICAgWydHR0dHW1ddV1dFJywgL1xcZHs0fVdcXGR7M30vXSxcbiAgICAgICAgWydHR0dHW1ddV1cnLCAvXFxkezR9V1xcZHsyfS8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZREREJywgL1xcZHs3fS9dXG4gICAgXTtcblxuICAgIC8vIGlzbyB0aW1lIGZvcm1hdHMgYW5kIHJlZ2V4ZXNcbiAgICB2YXIgaXNvVGltZXMgPSBbXG4gICAgICAgIFsnSEg6bW06c3MuU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcyxTU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICBbJ0hIOm1tJywgL1xcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgWydISG1tc3MuU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgIFsnSEhtbXNzLFNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISG1tc3MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkL10sXG4gICAgICAgIFsnSEhtbScsIC9cXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgWydISCcsIC9cXGRcXGQvXVxuICAgIF07XG5cbiAgICB2YXIgYXNwTmV0SnNvblJlZ2V4ID0gL15cXC8/RGF0ZVxcKChcXC0/XFxkKykvaTtcblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlTTyhjb25maWcpIHtcbiAgICAgICAgdmFyIGksIGwsXG4gICAgICAgICAgICBzdHJpbmcgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBtYXRjaCA9IGV4dGVuZGVkSXNvUmVnZXguZXhlYyhzdHJpbmcpIHx8IGJhc2ljSXNvUmVnZXguZXhlYyhzdHJpbmcpLFxuICAgICAgICAgICAgYWxsb3dUaW1lLCBkYXRlRm9ybWF0LCB0aW1lRm9ybWF0LCB0ekZvcm1hdDtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmlzbyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29EYXRlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNvRGF0ZXNbaV1bMV0uZXhlYyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGlzb0RhdGVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICBhbGxvd1RpbWUgPSBpc29EYXRlc1tpXVsyXSAhPT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbM10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvVGltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IChtYXRjaFsyXSB8fCAnICcpICsgaXNvVGltZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhbGxvd1RpbWUgJiYgdGltZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR6UmVnZXguZXhlYyhtYXRjaFs0XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHpGb3JtYXQgPSAnWic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcuX2YgPSBkYXRlRm9ybWF0ICsgKHRpbWVGb3JtYXQgfHwgJycpICsgKHR6Rm9ybWF0IHx8ICcnKTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkZDIDI4MjIgcmVnZXg6IEZvciBkZXRhaWxzIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjgyMiNzZWN0aW9uLTMuM1xuICAgIHZhciByZmMyODIyID0gL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXFxkezR9KSkkLztcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MoeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpLFxuICAgICAgICAgICAgcGFyc2VJbnQoZGF5U3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChob3VyU3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW51dGVTdHIsIDEwKVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChzZWNvbmRTdHIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlSW50KHNlY29uZFN0ciwgMTApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhclN0cikge1xuICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KHllYXJTdHIsIDEwKTtcbiAgICAgICAgaWYgKHllYXIgPD0gNDkpIHtcbiAgICAgICAgICAgIHJldHVybiAyMDAwICsgeWVhcjtcbiAgICAgICAgfSBlbHNlIGlmICh5ZWFyIDw9IDk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIDE5MDAgKyB5ZWFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5ZWFyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFwoW14pXSpcXCl8W1xcblxcdF0vZywgJyAnKS5yZXBsYWNlKC8oXFxzXFxzKykvZywgJyAnKS5yZXBsYWNlKC9eXFxzXFxzKi8sICcnKS5yZXBsYWNlKC9cXHNcXHMqJC8sICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1dlZWtkYXkod2Vla2RheVN0ciwgcGFyc2VkSW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAod2Vla2RheVN0cikge1xuICAgICAgICAgICAgLy8gVE9ETzogUmVwbGFjZSB0aGUgdmFuaWxsYSBKUyBEYXRlIG9iamVjdCB3aXRoIGFuIGluZGVwZW50ZW50IGRheS1vZi13ZWVrIGNoZWNrLlxuICAgICAgICAgICAgdmFyIHdlZWtkYXlQcm92aWRlZCA9IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0ciksXG4gICAgICAgICAgICAgICAgd2Vla2RheUFjdHVhbCA9IG5ldyBEYXRlKHBhcnNlZElucHV0WzBdLCBwYXJzZWRJbnB1dFsxXSwgcGFyc2VkSW5wdXRbMl0pLmdldERheSgpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXlQcm92aWRlZCAhPT0gd2Vla2RheUFjdHVhbCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLndlZWtkYXlNaXNtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBvYnNPZmZzZXRzID0ge1xuICAgICAgICBVVDogMCxcbiAgICAgICAgR01UOiAwLFxuICAgICAgICBFRFQ6IC00ICogNjAsXG4gICAgICAgIEVTVDogLTUgKiA2MCxcbiAgICAgICAgQ0RUOiAtNSAqIDYwLFxuICAgICAgICBDU1Q6IC02ICogNjAsXG4gICAgICAgIE1EVDogLTYgKiA2MCxcbiAgICAgICAgTVNUOiAtNyAqIDYwLFxuICAgICAgICBQRFQ6IC03ICogNjAsXG4gICAgICAgIFBTVDogLTggKiA2MFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQob2JzT2Zmc2V0LCBtaWxpdGFyeU9mZnNldCwgbnVtT2Zmc2V0KSB7XG4gICAgICAgIGlmIChvYnNPZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gICAgICAgIH0gZWxzZSBpZiAobWlsaXRhcnlPZmZzZXQpIHtcbiAgICAgICAgICAgIC8vIHRoZSBvbmx5IGFsbG93ZWQgbWlsaXRhcnkgdHogaXMgWlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBwYXJzZUludChudW1PZmZzZXQsIDEwKTtcbiAgICAgICAgICAgIHZhciBtID0gaG0gJSAxMDAsIGggPSAoaG0gLSBtKSAvIDEwMDtcbiAgICAgICAgICAgIHJldHVybiBoICogNjAgKyBtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBhbmQgdGltZSBmcm9tIHJlZiAyODIyIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2ggPSByZmMyODIyLmV4ZWMocHJlcHJvY2Vzc1JGQzI4MjIoY29uZmlnLl9pKSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdmFyIHBhcnNlZEFycmF5ID0gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhtYXRjaFs0XSwgbWF0Y2hbM10sIG1hdGNoWzJdLCBtYXRjaFs1XSwgbWF0Y2hbNl0sIG1hdGNoWzddKTtcbiAgICAgICAgICAgIGlmICghY2hlY2tXZWVrZGF5KG1hdGNoWzFdLCBwYXJzZWRBcnJheSwgY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uZmlnLl9hID0gcGFyc2VkQXJyYXk7XG4gICAgICAgICAgICBjb25maWcuX3R6bSA9IGNhbGN1bGF0ZU9mZnNldChtYXRjaFs4XSwgbWF0Y2hbOV0sIG1hdGNoWzEwXSk7XG5cbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGNyZWF0ZVVUQ0RhdGUuYXBwbHkobnVsbCwgY29uZmlnLl9hKTtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnJmYzI4MjIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gaXNvIGZvcm1hdCBvciBmYWxsYmFja1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gYXNwTmV0SnNvblJlZ2V4LmV4ZWMoY29uZmlnLl9pKTtcblxuICAgICAgICBpZiAobWF0Y2hlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoK21hdGNoZWRbMV0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluYWwgYXR0ZW1wdCwgdXNlIElucHV0IEZhbGxiYWNrXG4gICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2sgPSBkZXByZWNhdGUoXG4gICAgICAgICd2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgJyArXG4gICAgICAgICd3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlICcgK1xuICAgICAgICAnZGlzY291cmFnZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyBtYWpvciByZWxlYXNlLiBQbGVhc2UgcmVmZXIgdG8gJyArXG4gICAgICAgICdodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uJyxcbiAgICAgICAgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoY29uZmlnLl9pICsgKGNvbmZpZy5fdXNlVVRDID8gJyBVVEMnIDogJycpKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0YW5kYXJkXG4gICAgaG9va3MuSVNPXzg2MDEgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBSRkMgMjgyMiBmb3JtXG4gICAgaG9va3MuUkZDXzI4MjIgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmdcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZykge1xuICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8gYW5vdGhlciBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBmbG93IHRvIHByZXZlbnQgY2lyY3VsYXIgZGVwc1xuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5JU09fODYwMSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLlJGQ18yODIyKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5fYSA9IFtdO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IHRydWU7XG5cbiAgICAgICAgLy8gVGhpcyBhcnJheSBpcyB1c2VkIHRvIG1ha2UgYSBEYXRlLCBlaXRoZXIgd2l0aCBgbmV3IERhdGVgIG9yIGBEYXRlLlVUQ2BcbiAgICAgICAgdmFyIHN0cmluZyA9ICcnICsgY29uZmlnLl9pLFxuICAgICAgICAgICAgaSwgcGFyc2VkSW5wdXQsIHRva2VucywgdG9rZW4sIHNraXBwZWQsXG4gICAgICAgICAgICBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCA9IDA7XG5cbiAgICAgICAgdG9rZW5zID0gZXhwYW5kRm9ybWF0KGNvbmZpZy5fZiwgY29uZmlnLl9sb2NhbGUpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpIHx8IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHwgW10pWzBdO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Rva2VuJywgdG9rZW4sICdwYXJzZWRJbnB1dCcsIHBhcnNlZElucHV0LFxuICAgICAgICAgICAgLy8gICAgICAgICAncmVnZXgnLCBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgc2tpcHBlZCA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpKTtcbiAgICAgICAgICAgICAgICBpZiAoc2tpcHBlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc2tpcHBlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZShzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkgKyBwYXJzZWRJbnB1dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggKz0gcGFyc2VkSW5wdXQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgaWYgaXQncyBub3QgYSBrbm93biB0b2tlblxuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkVG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgcGFyc2VkSW5wdXQsIGNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb25maWcuX3N0cmljdCAmJiAhcGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGQgcmVtYWluaW5nIHVucGFyc2VkIGlucHV0IGxlbmd0aCB0byB0aGUgc3RyaW5nXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmNoYXJzTGVmdE92ZXIgPSBzdHJpbmdMZW5ndGggLSB0b3RhbFBhcnNlZElucHV0TGVuZ3RoO1xuICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNsZWFyIF8xMmggZmxhZyBpZiBob3VyIGlzIDw9IDEyXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPD0gMTIgJiZcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5wYXJzZWREYXRlUGFydHMgPSBjb25maWcuX2Euc2xpY2UoMCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLm1lcmlkaWVtID0gY29uZmlnLl9tZXJpZGllbTtcbiAgICAgICAgLy8gaGFuZGxlIG1lcmlkaWVtXG4gICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IG1lcmlkaWVtRml4V3JhcChjb25maWcuX2xvY2FsZSwgY29uZmlnLl9hW0hPVVJdLCBjb25maWcuX21lcmlkaWVtKTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgY2hlY2tPdmVyZmxvdyhjb25maWcpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwIChsb2NhbGUsIGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgIHZhciBpc1BtO1xuXG4gICAgICAgIGlmIChtZXJpZGllbSA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLm1lcmlkaWVtSG91ciAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLm1lcmlkaWVtSG91cihob3VyLCBtZXJpZGllbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxlLmlzUE0gIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2tcbiAgICAgICAgICAgIGlzUG0gPSBsb2NhbGUuaXNQTShtZXJpZGllbSk7XG4gICAgICAgICAgICBpZiAoaXNQbSAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyICs9IDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1BtICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHN1cHBvc2VkIHRvIGhhcHBlblxuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBhcnJheSBvZiBmb3JtYXQgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIHRlbXBDb25maWcsXG4gICAgICAgICAgICBiZXN0TW9tZW50LFxuXG4gICAgICAgICAgICBzY29yZVRvQmVhdCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWcuX2YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSA9IDA7XG4gICAgICAgICAgICB0ZW1wQ29uZmlnID0gY29weUNvbmZpZyh7fSwgY29uZmlnKTtcbiAgICAgICAgICAgIGlmIChjb25maWcuX3VzZVVUQyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGVtcENvbmZpZy5fdXNlVVRDID0gY29uZmlnLl91c2VVVEM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZW1wQ29uZmlnLl9mID0gY29uZmlnLl9mW2ldO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCh0ZW1wQ29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHRlbXBDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueSBpbnB1dCB0aGF0IHdhcyBub3QgcGFyc2VkIGFkZCBhIHBlbmFsdHkgZm9yIHRoYXQgZm9ybWF0XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLmNoYXJzTGVmdE92ZXI7XG5cbiAgICAgICAgICAgIC8vb3IgdG9rZW5zXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnVudXNlZFRva2Vucy5sZW5ndGggKiAxMDtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnNjb3JlID0gY3VycmVudFNjb3JlO1xuXG4gICAgICAgICAgICBpZiAoc2NvcmVUb0JlYXQgPT0gbnVsbCB8fCBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCkge1xuICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXh0ZW5kKGNvbmZpZywgYmVzdE1vbWVudCB8fCB0ZW1wQ29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tT2JqZWN0KGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGNvbmZpZy5faSk7XG4gICAgICAgIGNvbmZpZy5fYSA9IG1hcChbaS55ZWFyLCBpLm1vbnRoLCBpLmRheSB8fCBpLmRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vjb25kLCBpLm1pbGxpc2Vjb25kXSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbmZpZyAoY29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3cocHJlcGFyZUNvbmZpZyhjb25maWcpKSk7XG4gICAgICAgIGlmIChyZXMuX25leHREYXkpIHtcbiAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVFxuICAgICAgICAgICAgcmVzLmFkZCgxLCAnZCcpO1xuICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnIChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgZm9ybWF0ID0gY29uZmlnLl9mO1xuXG4gICAgICAgIGNvbmZpZy5fbG9jYWxlID0gY29uZmlnLl9sb2NhbGUgfHwgZ2V0TG9jYWxlKGNvbmZpZy5fbCk7XG5cbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsIHx8IChmb3JtYXQgPT09IHVuZGVmaW5lZCAmJiBpbnB1dCA9PT0gJycpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCh7bnVsbElucHV0OiB0cnVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnLl9pID0gaW5wdXQgPSBjb25maWcuX2xvY2FsZS5wcmVwYXJzZShpbnB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNb21lbnQoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vbWVudChjaGVja092ZXJmbG93KGlucHV0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gaW5wdXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShmb3JtYXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSW5wdXQoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNWYWxpZChjb25maWcpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZyhjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2EgPSBtYXAoaW5wdXQuc2xpY2UoMCksIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbU9iamVjdChjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbE9yVVRDIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgaXNVVEMpIHtcbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBpZiAobG9jYWxlID09PSB0cnVlIHx8IGxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoaXNPYmplY3QoaW5wdXQpICYmIGlzT2JqZWN0RW1wdHkoaW5wdXQpKSB8fFxuICAgICAgICAgICAgICAgIChpc0FycmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MjNcbiAgICAgICAgYy5faXNBTW9tZW50T2JqZWN0ID0gdHJ1ZTtcbiAgICAgICAgYy5fdXNlVVRDID0gYy5faXNVVEMgPSBpc1VUQztcbiAgICAgICAgYy5fbCA9IGxvY2FsZTtcbiAgICAgICAgYy5faSA9IGlucHV0O1xuICAgICAgICBjLl9mID0gZm9ybWF0O1xuICAgICAgICBjLl9zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21Db25maWcoYyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWwgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvdHlwZU1pbiA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPCB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIHZhciBwcm90b3R5cGVNYXggPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID4gdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBQaWNrIGEgbW9tZW50IG0gZnJvbSBtb21lbnRzIHNvIHRoYXQgbVtmbl0ob3RoZXIpIGlzIHRydWUgZm9yIGFsbFxuICAgIC8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rpb24gZm4gdG8gYmUgdHJhbnNpdGl2ZS5cbiAgICAvL1xuICAgIC8vIG1vbWVudHMgc2hvdWxkIGVpdGhlciBiZSBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cyBvciBhbiBhcnJheSwgd2hvc2VcbiAgICAvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzLlxuICAgIGZ1bmN0aW9uIHBpY2tCeShmbiwgbW9tZW50cykge1xuICAgICAgICB2YXIgcmVzLCBpO1xuICAgICAgICBpZiAobW9tZW50cy5sZW5ndGggPT09IDEgJiYgaXNBcnJheShtb21lbnRzWzBdKSkge1xuICAgICAgICAgICAgbW9tZW50cyA9IG1vbWVudHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gbW9tZW50c1swXTtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tpXVtmbl0ocmVzKSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkP1xuICAgIGZ1bmN0aW9uIG1pbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQmVmb3JlJywgYXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF4ICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNBZnRlcicsIGFyZ3MpO1xuICAgIH1cblxuICAgIHZhciBub3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUubm93KCkgOiArKG5ldyBEYXRlKCkpO1xuICAgIH07XG5cbiAgICB2YXIgb3JkZXJpbmcgPSBbJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCAnbWlsbGlzZWNvbmQnXTtcblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb25WYWxpZChtKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBtKSB7XG4gICAgICAgICAgICBpZiAoIShpbmRleE9mLmNhbGwob3JkZXJpbmcsIGtleSkgIT09IC0xICYmIChtW2tleV0gPT0gbnVsbCB8fCAhaXNOYU4obVtrZXldKSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHVuaXRIYXNEZWNpbWFsID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChtW29yZGVyaW5nW2ldXSkge1xuICAgICAgICAgICAgICAgIGlmICh1bml0SGFzRGVjaW1hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG9ubHkgYWxsb3cgbm9uLWludGVnZXJzIGZvciBzbWFsbGVzdCB1bml0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KG1bb3JkZXJpbmdbaV1dKSAhPT0gdG9JbnQobVtvcmRlcmluZ1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKE5hTik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRHVyYXRpb24gKGR1cmF0aW9uKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSBub3JtYWxpemVPYmplY3RVbml0cyhkdXJhdGlvbiksXG4gICAgICAgICAgICB5ZWFycyA9IG5vcm1hbGl6ZWRJbnB1dC55ZWFyIHx8IDAsXG4gICAgICAgICAgICBxdWFydGVycyA9IG5vcm1hbGl6ZWRJbnB1dC5xdWFydGVyIHx8IDAsXG4gICAgICAgICAgICBtb250aHMgPSBub3JtYWxpemVkSW5wdXQubW9udGggfHwgMCxcbiAgICAgICAgICAgIHdlZWtzID0gbm9ybWFsaXplZElucHV0LndlZWsgfHwgbm9ybWFsaXplZElucHV0Lmlzb1dlZWsgfHwgMCxcbiAgICAgICAgICAgIGRheXMgPSBub3JtYWxpemVkSW5wdXQuZGF5IHx8IDAsXG4gICAgICAgICAgICBob3VycyA9IG5vcm1hbGl6ZWRJbnB1dC5ob3VyIHx8IDAsXG4gICAgICAgICAgICBtaW51dGVzID0gbm9ybWFsaXplZElucHV0Lm1pbnV0ZSB8fCAwLFxuICAgICAgICAgICAgc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5zZWNvbmQgfHwgMCxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5taWxsaXNlY29uZCB8fCAwO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc0R1cmF0aW9uVmFsaWQobm9ybWFsaXplZElucHV0KTtcblxuICAgICAgICAvLyByZXByZXNlbnRhdGlvbiBmb3IgZGF0ZUFkZFJlbW92ZVxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSArbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHNlY29uZHMgKiAxZTMgKyAvLyAxMDAwXG4gICAgICAgICAgICBtaW51dGVzICogNmU0ICsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzhcbiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhXG4gICAgICAgIC8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHlcbiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICtcbiAgICAgICAgICAgIHdlZWtzICogNztcbiAgICAgICAgLy8gSXQgaXMgaW1wb3NzaWJsZSB0byB0cmFuc2xhdGUgbW9udGhzIGludG8gZGF5cyB3aXRob3V0IGtub3dpbmdcbiAgICAgICAgLy8gd2hpY2ggbW9udGhzIHlvdSBhcmUgYXJlIHRhbGtpbmcgYWJvdXQsIHNvIHdlIGhhdmUgdG8gc3RvcmVcbiAgICAgICAgLy8gaXQgc2VwYXJhdGVseS5cbiAgICAgICAgdGhpcy5fbW9udGhzID0gK21vbnRocyArXG4gICAgICAgICAgICBxdWFydGVycyAqIDMgK1xuICAgICAgICAgICAgeWVhcnMgKiAxMjtcblxuICAgICAgICB0aGlzLl9kYXRhID0ge307XG5cbiAgICAgICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgdGhpcy5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEdXJhdGlvbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNSb3VuZCAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgtMSAqIG51bWJlcikgKiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBvZmZzZXQgKHRva2VuLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICAgICAgdmFyIHNpZ24gPSAnKyc7XG4gICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgc2lnbiA9ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaWduICsgemVyb0ZpbGwofn4ob2Zmc2V0IC8gNjApLCAyKSArIHNlcGFyYXRvciArIHplcm9GaWxsKH5+KG9mZnNldCkgJSA2MCwgMik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9mZnNldCgnWicsICc6Jyk7XG4gICAgb2Zmc2V0KCdaWicsICcnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1onLCAgbWF0Y2hTaG9ydE9mZnNldCk7XG4gICAgYWRkUmVnZXhUb2tlbignWlonLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnWicsICdaWiddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl91c2VVVEMgPSB0cnVlO1xuICAgICAgICBjb25maWcuX3R6bSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gdGltZXpvbmUgY2h1bmtlclxuICAgIC8vICcrMTA6MDAnID4gWycxMCcsICAnMDAnXVxuICAgIC8vICctMTUzMCcgID4gWyctMTUnLCAnMzAnXVxuICAgIHZhciBjaHVua09mZnNldCA9IC8oW1xcK1xcLV18XFxkXFxkKS9naTtcblxuICAgIGZ1bmN0aW9uIG9mZnNldEZyb21TdHJpbmcobWF0Y2hlciwgc3RyaW5nKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gKHN0cmluZyB8fCAnJykubWF0Y2gobWF0Y2hlcik7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNodW5rICAgPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0gfHwgW107XG4gICAgICAgIHZhciBwYXJ0cyAgID0gKGNodW5rICsgJycpLm1hdGNoKGNodW5rT2Zmc2V0KSB8fCBbJy0nLCAwLCAwXTtcbiAgICAgICAgdmFyIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pO1xuXG4gICAgICAgIHJldHVybiBtaW51dGVzID09PSAwID9cbiAgICAgICAgICAwIDpcbiAgICAgICAgICBwYXJ0c1swXSA9PT0gJysnID8gbWludXRlcyA6IC1taW51dGVzO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhIG1vbWVudCBmcm9tIGlucHV0LCB0aGF0IGlzIGxvY2FsL3V0Yy96b25lIGVxdWl2YWxlbnQgdG8gbW9kZWwuXG4gICAgZnVuY3Rpb24gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCBtb2RlbCkge1xuICAgICAgICB2YXIgcmVzLCBkaWZmO1xuICAgICAgICBpZiAobW9kZWwuX2lzVVRDKSB7XG4gICAgICAgICAgICByZXMgPSBtb2RlbC5jbG9uZSgpO1xuICAgICAgICAgICAgZGlmZiA9IChpc01vbWVudChpbnB1dCkgfHwgaXNEYXRlKGlucHV0KSA/IGlucHV0LnZhbHVlT2YoKSA6IGNyZWF0ZUxvY2FsKGlucHV0KS52YWx1ZU9mKCkpIC0gcmVzLnZhbHVlT2YoKTtcbiAgICAgICAgICAgIC8vIFVzZSBsb3ctbGV2ZWwgYXBpLCBiZWNhdXNlIHRoaXMgZm4gaXMgbG93LWxldmVsIGFwaS5cbiAgICAgICAgICAgIHJlcy5fZC5zZXRUaW1lKHJlcy5fZC52YWx1ZU9mKCkgKyBkaWZmKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChyZXMsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQpLmxvY2FsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXRlT2Zmc2V0IChtKSB7XG4gICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICAgICAgICByZXR1cm4gLU1hdGgucm91bmQobS5fZC5nZXRUaW1lem9uZU9mZnNldCgpIC8gMTUpICogMTU7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBtb21lbnQgaXMgbXV0YXRlZC5cbiAgICAvLyBJdCBpcyBpbnRlbmRlZCB0byBrZWVwIHRoZSBvZmZzZXQgaW4gc3luYyB3aXRoIHRoZSB0aW1lem9uZS5cbiAgICBob29rcy51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIGtlZXBMb2NhbFRpbWUgPSB0cnVlIG1lYW5zIG9ubHkgY2hhbmdlIHRoZSB0aW1lem9uZSwgd2l0aG91dFxuICAgIC8vIGFmZmVjdGluZyB0aGUgbG9jYWwgaG91ci4gU28gNTozMToyNiArMDMwMCAtLVt1dGNPZmZzZXQoMiwgdHJ1ZSldLS0+XG4gICAgLy8gNTozMToyNiArMDIwMCBJdCBpcyBwb3NzaWJsZSB0aGF0IDU6MzE6MjYgZG9lc24ndCBleGlzdCB3aXRoIG9mZnNldFxuICAgIC8vICswMjAwLCBzbyB3ZSBhZGp1c3QgdGhlIHRpbWUgYXMgbmVlZGVkLCB0byBiZSB2YWxpZC5cbiAgICAvL1xuICAgIC8vIEtlZXBpbmcgdGhlIHRpbWUgYWN0dWFsbHkgYWRkcy9zdWJ0cmFjdHMgKG9uZSBob3VyKVxuICAgIC8vIGZyb20gdGhlIGFjdHVhbCByZXByZXNlbnRlZCB0aW1lLiBUaGF0IGlzIHdoeSB3ZSBjYWxsIHVwZGF0ZU9mZnNldFxuICAgIC8vIGEgc2Vjb25kIHRpbWUuIEluIGNhc2UgaXQgd2FudHMgdXMgdG8gY2hhbmdlIHRoZSBvZmZzZXQgYWdhaW5cbiAgICAvLyBfY2hhbmdlSW5Qcm9ncmVzcyA9PSB0cnVlIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBhZGp1c3QsIGJlY2F1c2VcbiAgICAvLyB0aGVyZSBpcyBubyBzdWNoIHRpbWUgaW4gdGhlIGdpdmVuIHRpbWV6b25lLlxuICAgIGZ1bmN0aW9uIGdldFNldE9mZnNldCAoaW5wdXQsIGtlZXBMb2NhbFRpbWUsIGtlZXBNaW51dGVzKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9vZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIGxvY2FsQWRqdXN0O1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChNYXRoLmFicyhpbnB1dCkgPCAxNiAmJiAha2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0ICogNjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzVVRDICYmIGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICBsb2NhbEFkanVzdCA9IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXQgPSBpbnB1dDtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChsb2NhbEFkanVzdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGQobG9jYWxBZGp1c3QsICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmICgha2VlcExvY2FsVGltZSB8fCB0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGNyZWF0ZUR1cmF0aW9uKGlucHV0IC0gb2Zmc2V0LCAnbScpLCAxLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRab25lIChpbnB1dCwga2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IC1pbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb0xvY2FsIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1VUQykge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3VidHJhY3QoZ2V0RGF0ZU9mZnNldCh0aGlzKSwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldCAoKSB7XG4gICAgICAgIGlmICh0aGlzLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0LCB0aGlzLl9pKTtcbiAgICAgICAgICAgIGlmICh0Wm9uZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodFpvbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzQWxpZ25lZEhvdXJPZmZzZXQgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dCA9IGlucHV0ID8gY3JlYXRlTG9jYWwoaW5wdXQpLnV0Y09mZnNldCgpIDogMDtcblxuICAgICAgICByZXR1cm4gKHRoaXMudXRjT2Zmc2V0KCkgLSBpbnB1dCkgJSA2MCA9PT0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZSAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkICgpIHtcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9pc0RTVFNoaWZ0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBjb3B5Q29uZmlnKGMsIHRoaXMpO1xuICAgICAgICBjID0gcHJlcGFyZUNvbmZpZyhjKTtcblxuICAgICAgICBpZiAoYy5fYSkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gYy5faXNVVEMgPyBjcmVhdGVVVEMoYy5fYSkgOiBjcmVhdGVMb2NhbChjLl9hKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgY29tcGFyZUFycmF5cyhjLl9hLCBvdGhlci50b0FycmF5KCkpID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gIXRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGNPZmZzZXQgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVXRjICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4XG4gICAgdmFyIGFzcE5ldFJlZ2V4ID0gL14oXFwtfFxcKyk/KD86KFxcZCopWy4gXSk/KFxcZCspXFw6KFxcZCspKD86XFw6KFxcZCspKFxcLlxcZCopPyk/JC87XG5cbiAgICAvLyBmcm9tIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9naXQvY2xvc3VyZV9nb29nX2RhdGVfZGF0ZS5qcy5zb3VyY2UuaHRtbFxuICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmVcbiAgICAvLyBhbmQgZnVydGhlciBtb2RpZmllZCB0byBhbGxvdyBmb3Igc3RyaW5ncyBjb250YWluaW5nIGJvdGggd2VlayBhbmQgZGF5XG4gICAgdmFyIGlzb1JlZ2V4ID0gL14oLXxcXCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLztcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUR1cmF0aW9uIChpbnB1dCwga2V5KSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGlucHV0LFxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYWdhaW5zdCByZWdleHAgaXMgZXhwZW5zaXZlLCBkbyBpdCBvbiBkZW1hbmRcbiAgICAgICAgICAgIG1hdGNoID0gbnVsbCxcbiAgICAgICAgICAgIHNpZ24sXG4gICAgICAgICAgICByZXQsXG4gICAgICAgICAgICBkaWZmUmVzO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbXMgOiBpbnB1dC5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgICAgIGQgIDogaW5wdXQuX2RheXMsXG4gICAgICAgICAgICAgICAgTSAgOiBpbnB1dC5fbW9udGhzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbltrZXldID0gaW5wdXQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uLm1pbGxpc2Vjb25kcyA9IGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gYXNwTmV0UmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeSAgOiAwLFxuICAgICAgICAgICAgICAgIGQgIDogdG9JbnQobWF0Y2hbREFURV0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBoICA6IHRvSW50KG1hdGNoW0hPVVJdKSAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbSAgOiB0b0ludChtYXRjaFtNSU5VVEVdKSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIHMgIDogdG9JbnQobWF0Y2hbU0VDT05EXSkgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBtcyA6IHRvSW50KGFic1JvdW5kKG1hdGNoW01JTExJU0VDT05EXSAqIDEwMDApKSAqIHNpZ24gLy8gdGhlIG1pbGxpc2Vjb25kIGRlY2ltYWwgcG9pbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1hdGNoXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gaXNvUmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeSA6IHBhcnNlSXNvKG1hdGNoWzJdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBNIDogcGFyc2VJc28obWF0Y2hbM10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHcgOiBwYXJzZUlzbyhtYXRjaFs0XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgZCA6IHBhcnNlSXNvKG1hdGNoWzVdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBoIDogcGFyc2VJc28obWF0Y2hbNl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIG0gOiBwYXJzZUlzbyhtYXRjaFs3XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgcyA6IHBhcnNlSXNvKG1hdGNoWzhdLCBzaWduKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChkdXJhdGlvbiA9PSBudWxsKSB7Ly8gY2hlY2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZHVyYXRpb24gPT09ICdvYmplY3QnICYmICgnZnJvbScgaW4gZHVyYXRpb24gfHwgJ3RvJyBpbiBkdXJhdGlvbikpIHtcbiAgICAgICAgICAgIGRpZmZSZXMgPSBtb21lbnRzRGlmZmVyZW5jZShjcmVhdGVMb2NhbChkdXJhdGlvbi5mcm9tKSwgY3JlYXRlTG9jYWwoZHVyYXRpb24udG8pKTtcblxuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGR1cmF0aW9uLm1zID0gZGlmZlJlcy5taWxsaXNlY29uZHM7XG4gICAgICAgICAgICBkdXJhdGlvbi5NID0gZGlmZlJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXQgPSBuZXcgRHVyYXRpb24oZHVyYXRpb24pO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSAmJiBoYXNPd25Qcm9wKGlucHV0LCAnX2xvY2FsZScpKSB7XG4gICAgICAgICAgICByZXQuX2xvY2FsZSA9IGlucHV0Ll9sb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGNyZWF0ZUR1cmF0aW9uLmZuID0gRHVyYXRpb24ucHJvdG90eXBlO1xuICAgIGNyZWF0ZUR1cmF0aW9uLmludmFsaWQgPSBjcmVhdGVJbnZhbGlkJDE7XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzbyAoaW5wLCBzaWduKSB7XG4gICAgICAgIC8vIFdlJ2Qgbm9ybWFsbHkgdXNlIH5+aW5wIGZvciB0aGlzLCBidXQgdW5mb3J0dW5hdGVseSBpdCBhbHNvXG4gICAgICAgIC8vIGNvbnZlcnRzIGZsb2F0cyB0byBpbnRzLlxuICAgICAgICAvLyBpbnAgbWF5IGJlIHVuZGVmaW5lZCwgc28gY2FyZWZ1bCBjYWxsaW5nIHJlcGxhY2Ugb24gaXQuXG4gICAgICAgIHZhciByZXMgPSBpbnAgJiYgcGFyc2VGbG9hdChpbnAucmVwbGFjZSgnLCcsICcuJykpO1xuICAgICAgICAvLyBhcHBseSBzaWduIHdoaWxlIHdlJ3JlIGF0IGl0XG4gICAgICAgIHJldHVybiAoaXNOYU4ocmVzKSA/IDAgOiByZXMpICogc2lnbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXMgPSB7fTtcblxuICAgICAgICByZXMubW9udGhzID0gb3RoZXIubW9udGgoKSAtIGJhc2UubW9udGgoKSArXG4gICAgICAgICAgICAob3RoZXIueWVhcigpIC0gYmFzZS55ZWFyKCkpICogMTI7XG4gICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHtcbiAgICAgICAgICAgIC0tcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSArb3RoZXIgLSArKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzO1xuICAgICAgICBpZiAoIShiYXNlLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcbiAgICAgICAgfVxuXG4gICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zmc2V0KG90aGVyLCBiYXNlKTtcbiAgICAgICAgaWYgKGJhc2UuaXNCZWZvcmUob3RoZXIpKSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2Uob3RoZXIsIGJhc2UpO1xuICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1yZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRlciBkZXByZWNhdGlvbiBpcyByZW1vdmVkXG4gICAgZnVuY3Rpb24gY3JlYXRlQWRkZXIoZGlyZWN0aW9uLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBkdXIsIHRtcDtcbiAgICAgICAgICAgIC8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBjb21wbGFpbiBhYm91dCBpdFxuICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0gbnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUobmFtZSwgJ21vbWVudCgpLicgKyBuYW1lICArICcocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuJyArIG5hbWUgKyAnKG51bWJlciwgcGVyaW9kKS4gJyArXG4gICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICB0bXAgPSB2YWw7IHZhbCA9IHBlcmlvZDsgcGVyaW9kID0gdG1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWwgPSB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/ICt2YWwgOiB2YWw7XG4gICAgICAgICAgICBkdXIgPSBjcmVhdGVEdXJhdGlvbih2YWwsIHBlcmlvZCk7XG4gICAgICAgICAgICBhZGRTdWJ0cmFjdCh0aGlzLCBkdXIsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCAobW9tLCBkdXJhdGlvbiwgaXNBZGRpbmcsIHVwZGF0ZU9mZnNldCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSBhYnNSb3VuZChkdXJhdGlvbi5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVPZmZzZXQgPSB1cGRhdGVPZmZzZXQgPT0gbnVsbCA/IHRydWUgOiB1cGRhdGVPZmZzZXQ7XG5cbiAgICAgICAgaWYgKG1vbnRocykge1xuICAgICAgICAgICAgc2V0TW9udGgobW9tLCBnZXQobW9tLCAnTW9udGgnKSArIG1vbnRocyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF5cykge1xuICAgICAgICAgICAgc2V0JDEobW9tLCAnRGF0ZScsIGdldChtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICAgIG1vbS5fZC5zZXRUaW1lKG1vbS5fZC52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZU9mZnNldCkge1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KG1vbSwgZGF5cyB8fCBtb250aHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFkZCAgICAgID0gY3JlYXRlQWRkZXIoMSwgJ2FkZCcpO1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3QnKTtcblxuICAgIGZ1bmN0aW9uIGdldENhbGVuZGFyRm9ybWF0KG15TW9tZW50LCBub3cpIHtcbiAgICAgICAgdmFyIGRpZmYgPSBteU1vbWVudC5kaWZmKG5vdywgJ2RheXMnLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGRpZmYgPCAtNiA/ICdzYW1lRWxzZScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAtMSA/ICdsYXN0V2VlaycgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAwID8gJ2xhc3REYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMSA/ICdzYW1lRGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDIgPyAnbmV4dERheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCA3ID8gJ25leHRXZWVrJyA6ICdzYW1lRWxzZSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIkMSAodGltZSwgZm9ybWF0cykge1xuICAgICAgICAvLyBXZSB3YW50IHRvIGNvbXBhcmUgdGhlIHN0YXJ0IG9mIHRvZGF5LCB2cyB0aGlzLlxuICAgICAgICAvLyBHZXR0aW5nIHN0YXJ0LW9mLXRvZGF5IGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBsb2NhbC91dGMvb2Zmc2V0IG9yIG5vdC5cbiAgICAgICAgdmFyIG5vdyA9IHRpbWUgfHwgY3JlYXRlTG9jYWwoKSxcbiAgICAgICAgICAgIHNvZCA9IGNsb25lV2l0aE9mZnNldChub3csIHRoaXMpLnN0YXJ0T2YoJ2RheScpLFxuICAgICAgICAgICAgZm9ybWF0ID0gaG9va3MuY2FsZW5kYXJGb3JtYXQodGhpcywgc29kKSB8fCAnc2FtZUVsc2UnO1xuXG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRzICYmIChpc0Z1bmN0aW9uKGZvcm1hdHNbZm9ybWF0XSkgPyBmb3JtYXRzW2Zvcm1hdF0uY2FsbCh0aGlzLCBub3cpIDogZm9ybWF0c1tmb3JtYXRdKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQob3V0cHV0IHx8IHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGZvcm1hdCwgdGhpcywgY3JlYXRlTG9jYWwobm93KSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBZnRlciAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID4gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxJbnB1dC52YWx1ZU9mKCkgPCB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZWZvcmUgKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JldHdlZW4gKGZyb20sIHRvLCB1bml0cywgaW5jbHVzaXZpdHkpIHtcbiAgICAgICAgdmFyIGxvY2FsRnJvbSA9IGlzTW9tZW50KGZyb20pID8gZnJvbSA6IGNyZWF0ZUxvY2FsKGZyb20pLFxuICAgICAgICAgICAgbG9jYWxUbyA9IGlzTW9tZW50KHRvKSA/IHRvIDogY3JlYXRlTG9jYWwodG8pO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbEZyb20uaXNWYWxpZCgpICYmIGxvY2FsVG8uaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGluY2x1c2l2aXR5ID0gaW5jbHVzaXZpdHkgfHwgJygpJztcbiAgICAgICAgcmV0dXJuIChpbmNsdXNpdml0eVswXSA9PT0gJygnID8gdGhpcy5pc0FmdGVyKGxvY2FsRnJvbSwgdW5pdHMpIDogIXRoaXMuaXNCZWZvcmUobG9jYWxGcm9tLCB1bml0cykpICYmXG4gICAgICAgICAgICAoaW5jbHVzaXZpdHlbMV0gPT09ICcpJyA/IHRoaXMuaXNCZWZvcmUobG9jYWxUbywgdW5pdHMpIDogIXRoaXMuaXNBZnRlcihsb2NhbFRvLCB1bml0cykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCksXG4gICAgICAgICAgICBpbnB1dE1zO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA9PT0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dE1zID0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckFmdGVyIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0FmdGVyKGlucHV0LCB1bml0cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lT3JCZWZvcmUgKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQmVmb3JlKGlucHV0LCB1bml0cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGlmZiAoaW5wdXQsIHVuaXRzLCBhc0Zsb2F0KSB7XG4gICAgICAgIHZhciB0aGF0LFxuICAgICAgICAgICAgem9uZURlbHRhLFxuICAgICAgICAgICAgb3V0cHV0O1xuXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGF0ID0gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCB0aGlzKTtcblxuICAgICAgICBpZiAoIXRoYXQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgem9uZURlbHRhID0gKHRoYXQudXRjT2Zmc2V0KCkgLSB0aGlzLnV0Y09mZnNldCgpKSAqIDZlNDtcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMTI7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCk7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KSAvIDM7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDFlMzsgYnJlYWs7IC8vIDEwMDBcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyA2ZTQ7IGJyZWFrOyAvLyAxMDAwICogNjBcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gMzZlNTsgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwXG4gICAgICAgICAgICBjYXNlICdkYXknOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQgLSB6b25lRGVsdGEpIC8gODY0ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MCAqIDI0LCBuZWdhdGUgZHN0XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDYwNDhlNTsgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQgKiA3LCBuZWdhdGUgZHN0XG4gICAgICAgICAgICBkZWZhdWx0OiBvdXRwdXQgPSB0aGlzIC0gdGhhdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhc0Zsb2F0ID8gb3V0cHV0IDogYWJzRmxvb3Iob3V0cHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb250aERpZmYgKGEsIGIpIHtcbiAgICAgICAgLy8gZGlmZmVyZW5jZSBpbiBtb250aHNcbiAgICAgICAgdmFyIHdob2xlTW9udGhEaWZmID0gKChiLnllYXIoKSAtIGEueWVhcigpKSAqIDEyKSArIChiLm1vbnRoKCkgLSBhLm1vbnRoKCkpLFxuICAgICAgICAgICAgLy8gYiBpcyBpbiAoYW5jaG9yIC0gMSBtb250aCwgYW5jaG9yICsgMSBtb250aClcbiAgICAgICAgICAgIGFuY2hvciA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYsICdtb250aHMnKSxcbiAgICAgICAgICAgIGFuY2hvcjIsIGFkanVzdDtcblxuICAgICAgICBpZiAoYiAtIGFuY2hvciA8IDApIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmIC0gMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IgLSBhbmNob3IyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmICsgMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IyIC0gYW5jaG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vY2hlY2sgZm9yIG5lZ2F0aXZlIHplcm8sIHJldHVybiB6ZXJvIGlmIG5lZ2F0aXZlIHplcm9cbiAgICAgICAgcmV0dXJuIC0od2hvbGVNb250aERpZmYgKyBhZGp1c3QpIHx8IDA7XG4gICAgfVxuXG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdCA9ICdZWVlZLU1NLUREVEhIOm1tOnNzWic7XG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdFV0YyA9ICdZWVlZLU1NLUREVEhIOm1tOnNzW1pdJztcblxuICAgIGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoJ2VuJykuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWicpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nKGtlZXBPZmZzZXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHV0YyA9IGtlZXBPZmZzZXQgIT09IHRydWU7XG4gICAgICAgIHZhciBtID0gdXRjID8gdGhpcy5jbG9uZSgpLnV0YygpIDogdGhpcztcbiAgICAgICAgaWYgKG0ueWVhcigpIDwgMCB8fCBtLnllYXIoKSA+IDk5OTkpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQobSwgdXRjID8gJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScgOiAnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSkge1xuICAgICAgICAgICAgLy8gbmF0aXZlIGltcGxlbWVudGF0aW9uIGlzIH41MHggZmFzdGVyLCB1c2UgaXQgd2hlbiB3ZSBjYW5cbiAgICAgICAgICAgIGlmICh1dGMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkgKyB0aGlzLnV0Y09mZnNldCgpICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLnJlcGxhY2UoJ1onLCBmb3JtYXRNb21lbnQobSwgJ1onKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChtLCB1dGMgPyAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScgOiAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBodW1hbiByZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIG1vbWVudCB0aGF0IGNhblxuICAgICAqIGFsc28gYmUgZXZhbHVhdGVkIHRvIGdldCBhIG5ldyBtb21lbnQgd2hpY2ggaXMgdGhlIHNhbWVcbiAgICAgKlxuICAgICAqIEBsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC9kb2NzL2FwaS91dGlsLmh0bWwjdXRpbF9jdXN0b21faW5zcGVjdF9mdW5jdGlvbl9vbl9vYmplY3RzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAnbW9tZW50LmludmFsaWQoLyogJyArIHRoaXMuX2kgKyAnICovKSc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZ1bmMgPSAnbW9tZW50JztcbiAgICAgICAgdmFyIHpvbmUgPSAnJztcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9jYWwoKSkge1xuICAgICAgICAgICAgZnVuYyA9IHRoaXMudXRjT2Zmc2V0KCkgPT09IDAgPyAnbW9tZW50LnV0YycgOiAnbW9tZW50LnBhcnNlWm9uZSc7XG4gICAgICAgICAgICB6b25lID0gJ1onO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmVmaXggPSAnWycgKyBmdW5jICsgJyhcIl0nO1xuICAgICAgICB2YXIgeWVhciA9ICgwIDw9IHRoaXMueWVhcigpICYmIHRoaXMueWVhcigpIDw9IDk5OTkpID8gJ1lZWVknIDogJ1lZWVlZWSc7XG4gICAgICAgIHZhciBkYXRldGltZSA9ICctTU0tRERbVF1ISDptbTpzcy5TU1MnO1xuICAgICAgICB2YXIgc3VmZml4ID0gem9uZSArICdbXCIpXSc7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KHByZWZpeCArIHllYXIgKyBkYXRldGltZSArIHN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZm9ybWF0IChpbnB1dFN0cmluZykge1xuICAgICAgICBpZiAoIWlucHV0U3RyaW5nKSB7XG4gICAgICAgICAgICBpbnB1dFN0cmluZyA9IHRoaXMuaXNVdGMoKSA/IGhvb2tzLmRlZmF1bHRGb3JtYXRVdGMgOiBob29rcy5kZWZhdWx0Rm9ybWF0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRNb21lbnQodGhpcywgaW5wdXRTdHJpbmcpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb20gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHxcbiAgICAgICAgICAgICAgICAgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHt0bzogdGhpcywgZnJvbTogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb21Ob3cgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbShjcmVhdGVMb2NhbCgpLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0byAodGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fFxuICAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oe2Zyb206IHRoaXMsIHRvOiB0aW1lfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Ob3cgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG8oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgLy8gSWYgcGFzc2VkIGEgbG9jYWxlIGtleSwgaXQgd2lsbCBzZXQgdGhlIGxvY2FsZSBmb3IgdGhpc1xuICAgIC8vIGluc3RhbmNlLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiB0aGUgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbiAgICAvLyB2YXJpYWJsZXMgZm9yIHRoaXMgaW5zdGFuY2UuXG4gICAgZnVuY3Rpb24gbG9jYWxlIChrZXkpIHtcbiAgICAgICAgdmFyIG5ld0xvY2FsZURhdGE7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3TG9jYWxlRGF0YSA9IGdldExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKG5ld0xvY2FsZURhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvY2FsZSA9IG5ld0xvY2FsZURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYW5nID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4nLFxuICAgICAgICBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZURhdGEgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHZhciBNU19QRVJfU0VDT05EID0gMTAwMDtcbiAgICB2YXIgTVNfUEVSX01JTlVURSA9IDYwICogTVNfUEVSX1NFQ09ORDtcbiAgICB2YXIgTVNfUEVSX0hPVVIgPSA2MCAqIE1TX1BFUl9NSU5VVEU7XG4gICAgdmFyIE1TX1BFUl80MDBfWUVBUlMgPSAoMzY1ICogNDAwICsgOTcpICogMjQgKiBNU19QRVJfSE9VUjtcblxuICAgIC8vIGFjdHVhbCBtb2R1bG8gLSBoYW5kbGVzIG5lZ2F0aXZlIG51bWJlcnMgKGZvciBkYXRlcyBiZWZvcmUgMTk3MCk6XG4gICAgZnVuY3Rpb24gbW9kJDEoZGl2aWRlbmQsIGRpdmlzb3IpIHtcbiAgICAgICAgcmV0dXJuIChkaXZpZGVuZCAlIGRpdmlzb3IgKyBkaXZpc29yKSAlIGRpdmlzb3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxTdGFydE9mRGF0ZSh5LCBtLCBkKSB7XG4gICAgICAgIC8vIHRoZSBkYXRlIGNvbnN0cnVjdG9yIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSArIDQwMCwgbSwgZCkgLSBNU19QRVJfNDAwX1lFQVJTO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHksIG0sIGQpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHV0Y1N0YXJ0T2ZEYXRlKHksIG0sIGQpIHtcbiAgICAgICAgLy8gRGF0ZS5VVEMgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIHJldHVybiBEYXRlLlVUQyh5ICsgNDAwLCBtLCBkKSAtIE1TX1BFUl80MDBfWUVBUlM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gRGF0ZS5VVEMoeSwgbSwgZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE9mICh1bml0cykge1xuICAgICAgICB2YXIgdGltZTtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnIHx8ICF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RhcnRPZkRhdGUgPSB0aGlzLl9pc1VUQyA/IHV0Y1N0YXJ0T2ZEYXRlIDogbG9jYWxTdGFydE9mRGF0ZTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIDAsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkgLSB0aGlzLm1vbnRoKCkgJSAzLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSB0aGlzLndlZWtkYXkoKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpc29XZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSAodGhpcy5pc29XZWVrZGF5KCkgLSAxKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIHRoaXMuZGF0ZSgpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUgKyAodGhpcy5faXNVVEMgPyAwIDogdGhpcy51dGNPZmZzZXQoKSAqIE1TX1BFUl9NSU5VVEUpLCBNU19QRVJfSE9VUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUsIE1TX1BFUl9NSU5VVEUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSAtPSBtb2QkMSh0aW1lLCBNU19QRVJfU0VDT05EKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Quc2V0VGltZSh0aW1lKTtcbiAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbmRPZiAodW5pdHMpIHtcbiAgICAgICAgdmFyIHRpbWU7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAodW5pdHMgPT09IHVuZGVmaW5lZCB8fCB1bml0cyA9PT0gJ21pbGxpc2Vjb25kJyB8fCAhdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0YXJ0T2ZEYXRlID0gdGhpcy5faXNVVEMgPyB1dGNTdGFydE9mRGF0ZSA6IGxvY2FsU3RhcnRPZkRhdGU7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpICsgMSwgMCwgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkgLSB0aGlzLm1vbnRoKCkgJSAzICsgMywgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpICsgMSwgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIHRoaXMuZGF0ZSgpIC0gdGhpcy53ZWVrZGF5KCkgKyA3KSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpc29XZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSAodGhpcy5pc29XZWVrZGF5KCkgLSAxKSArIDcpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgKyAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPSBNU19QRVJfSE9VUiAtIG1vZCQxKHRpbWUgKyAodGhpcy5faXNVVEMgPyAwIDogdGhpcy51dGNPZmZzZXQoKSAqIE1TX1BFUl9NSU5VVEUpLCBNU19QRVJfSE9VUikgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPSBNU19QRVJfTUlOVVRFIC0gbW9kJDEodGltZSwgTVNfUEVSX01JTlVURSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPSBNU19QRVJfU0VDT05EIC0gbW9kJDEodGltZSwgTVNfUEVSX1NFQ09ORCkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZC5zZXRUaW1lKHRpbWUpO1xuICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbHVlT2YgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCkgLSAoKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bml4ICgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkgLyAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0RhdGUgKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQXJyYXkgKCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBbbS55ZWFyKCksIG0ubW9udGgoKSwgbS5kYXRlKCksIG0uaG91cigpLCBtLm1pbnV0ZSgpLCBtLnNlY29uZCgpLCBtLm1pbGxpc2Vjb25kKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvT2JqZWN0ICgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcnM6IG0ueWVhcigpLFxuICAgICAgICAgICAgbW9udGhzOiBtLm1vbnRoKCksXG4gICAgICAgICAgICBkYXRlOiBtLmRhdGUoKSxcbiAgICAgICAgICAgIGhvdXJzOiBtLmhvdXJzKCksXG4gICAgICAgICAgICBtaW51dGVzOiBtLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgIHNlY29uZHM6IG0uc2Vjb25kcygpLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzOiBtLm1pbGxpc2Vjb25kcygpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICAgICAgLy8gbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbFxuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLnRvSVNPU3RyaW5nKCkgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMiAoKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNpbmdGbGFncyAoKSB7XG4gICAgICAgIHJldHVybiBleHRlbmQoe30sIGdldFBhcnNpbmdGbGFncyh0aGlzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52YWxpZEF0ICgpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNpbmdGbGFncyh0aGlzKS5vdmVyZmxvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGlvbkRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnB1dDogdGhpcy5faSxcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fZixcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5fbG9jYWxlLFxuICAgICAgICAgICAgaXNVVEM6IHRoaXMuX2lzVVRDLFxuICAgICAgICAgICAgc3RyaWN0OiB0aGlzLl9zdHJpY3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnR0cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1llYXJGb3JtYXRUb2tlbiAodG9rZW4sIGdldHRlcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdldHRlcik7XG4gICAgfVxuXG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZycsICAgICAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnZycsICAgICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0cnLCAgJ2lzb1dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2Vla1llYXInLCAnZ2cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtZZWFyJywgJ0dHJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrWWVhcicsIDEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla1llYXInLCAxKTtcblxuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRycsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2cnLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdHRycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2dnJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2dnZycsICdnZ2dnZycsICdHR0dHJywgJ0dHR0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnJywgJ0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIHRoaXMud2VlaygpLFxuICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheSgpLFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyxcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LCB0aGlzLmlzb1dlZWsoKSwgdGhpcy5pc29XZWVrZGF5KCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luWWVhciAoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhckhlbHBlcihpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtzVGFyZ2V0O1xuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIodGhpcywgZG93LCBkb3kpLnllYXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3ZWVrc1RhcmdldCA9IHdlZWtzSW5ZZWFyKGlucHV0LCBkb3csIGRveSk7XG4gICAgICAgICAgICBpZiAod2VlayA+IHdlZWtzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgd2VlayA9IHdlZWtzVGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldFdlZWtBbGwuY2FsbCh0aGlzLCBpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0V2Vla0FsbCh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhckRhdGEgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKGRheU9mWWVhckRhdGEueWVhciwgMCwgZGF5T2ZZZWFyRGF0YS5kYXlPZlllYXIpO1xuXG4gICAgICAgIHRoaXMueWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgICAgICB0aGlzLm1vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgICAgIHRoaXMuZGF0ZShkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdRJywgMCwgJ1FvJywgJ3F1YXJ0ZXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygncXVhcnRlcicsICdRJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdxdWFydGVyJywgNyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTtcbiAgICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0UXVhcnRlciAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMykgOiB0aGlzLm1vbnRoKChpbnB1dCAtIDEpICogMyArIHRoaXMubW9udGgoKSAlIDMpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEJywgWydERCcsIDJdLCAnRG8nLCAnZGF0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXRlJywgJ0QnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXRlJywgOSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignREQnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignRG8nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgXCJvcmRpbmFsUGFyc2VcIiBmYWxsYmFjayBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/XG4gICAgICAgICAgKGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZSB8fCBsb2NhbGUuX29yZGluYWxQYXJzZSkgOlxuICAgICAgICAgIGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQ7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnRCcsICdERCddLCBEQVRFKTtcbiAgICBhZGRQYXJzZVRva2VuKCdEbycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbREFURV0gPSB0b0ludChpbnB1dC5tYXRjaChtYXRjaDF0bzIpWzBdKTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXREYXlPZk1vbnRoID0gbWFrZUdldFNldCgnRGF0ZScsIHRydWUpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0RERCcsIFsnRERERCcsIDNdLCAnREREbycsICdkYXlPZlllYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF5T2ZZZWFyJywgJ0RERCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheU9mWWVhcicsIDQpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignREREJywgIG1hdGNoMXRvMyk7XG4gICAgYWRkUmVnZXhUb2tlbignRERERCcsIG1hdGNoMyk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ0RERCcsICdEREREJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mWWVhciAoaW5wdXQpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhciA9IE1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKSAtIHRoaXMuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykpIC8gODY0ZTUpICsgMTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBkYXlPZlllYXIgOiB0aGlzLmFkZCgoaW5wdXQgLSBkYXlPZlllYXIpLCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdtJywgWydtbScsIDJdLCAwLCAnbWludXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbnV0ZScsICdtJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaW51dGUnLCAxNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdtJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignbW0nLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ20nLCAnbW0nXSwgTUlOVVRFKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaW51dGUgPSBtYWtlR2V0U2V0KCdNaW51dGVzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMl0sIDAsICdzZWNvbmQnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnc2Vjb25kJywgJ3MnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3NlY29uZCcsIDE1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3MnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdzcycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsncycsICdzcyddLCBTRUNPTkQpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFNlY29uZCA9IG1ha2VHZXRTZXQoJ1NlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTJywgM10sIDAsICdtaWxsaXNlY29uZCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTUycsIDRdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTJywgNV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTUycsIDZdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTUycsIDddLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTJywgOF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTUycsIDldLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDAwO1xuICAgIH0pO1xuXG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbGxpc2Vjb25kJywgJ21zJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaWxsaXNlY29uZCcsIDE2KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1MnLCAgICBtYXRjaDF0bzMsIG1hdGNoMSk7XG4gICAgYWRkUmVnZXhUb2tlbignU1MnLCAgIG1hdGNoMXRvMywgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCAgbWF0Y2gxdG8zLCBtYXRjaDMpO1xuXG4gICAgdmFyIHRva2VuO1xuICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUmVnZXhUb2tlbih0b2tlbiwgbWF0Y2hVbnNpZ25lZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VNcyhpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTUlMTElTRUNPTkRdID0gdG9JbnQoKCcwLicgKyBpbnB1dCkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmb3IgKHRva2VuID0gJ1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpO1xuICAgIH1cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0TWlsbGlzZWNvbmQgPSBtYWtlR2V0U2V0KCdNaWxsaXNlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigneicsICAwLCAwLCAnem9uZUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFpvbmVBYmJyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ1VUQycgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRab25lTmFtZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICdDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZScgOiAnJztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8gPSBNb21lbnQucHJvdG90eXBlO1xuXG4gICAgcHJvdG8uYWRkICAgICAgICAgICAgICAgPSBhZGQ7XG4gICAgcHJvdG8uY2FsZW5kYXIgICAgICAgICAgPSBjYWxlbmRhciQxO1xuICAgIHByb3RvLmNsb25lICAgICAgICAgICAgID0gY2xvbmU7XG4gICAgcHJvdG8uZGlmZiAgICAgICAgICAgICAgPSBkaWZmO1xuICAgIHByb3RvLmVuZE9mICAgICAgICAgICAgID0gZW5kT2Y7XG4gICAgcHJvdG8uZm9ybWF0ICAgICAgICAgICAgPSBmb3JtYXQ7XG4gICAgcHJvdG8uZnJvbSAgICAgICAgICAgICAgPSBmcm9tO1xuICAgIHByb3RvLmZyb21Ob3cgICAgICAgICAgID0gZnJvbU5vdztcbiAgICBwcm90by50byAgICAgICAgICAgICAgICA9IHRvO1xuICAgIHByb3RvLnRvTm93ICAgICAgICAgICAgID0gdG9Ob3c7XG4gICAgcHJvdG8uZ2V0ICAgICAgICAgICAgICAgPSBzdHJpbmdHZXQ7XG4gICAgcHJvdG8uaW52YWxpZEF0ICAgICAgICAgPSBpbnZhbGlkQXQ7XG4gICAgcHJvdG8uaXNBZnRlciAgICAgICAgICAgPSBpc0FmdGVyO1xuICAgIHByb3RvLmlzQmVmb3JlICAgICAgICAgID0gaXNCZWZvcmU7XG4gICAgcHJvdG8uaXNCZXR3ZWVuICAgICAgICAgPSBpc0JldHdlZW47XG4gICAgcHJvdG8uaXNTYW1lICAgICAgICAgICAgPSBpc1NhbWU7XG4gICAgcHJvdG8uaXNTYW1lT3JBZnRlciAgICAgPSBpc1NhbWVPckFmdGVyO1xuICAgIHByb3RvLmlzU2FtZU9yQmVmb3JlICAgID0gaXNTYW1lT3JCZWZvcmU7XG4gICAgcHJvdG8uaXNWYWxpZCAgICAgICAgICAgPSBpc1ZhbGlkJDI7XG4gICAgcHJvdG8ubGFuZyAgICAgICAgICAgICAgPSBsYW5nO1xuICAgIHByb3RvLmxvY2FsZSAgICAgICAgICAgID0gbG9jYWxlO1xuICAgIHByb3RvLmxvY2FsZURhdGEgICAgICAgID0gbG9jYWxlRGF0YTtcbiAgICBwcm90by5tYXggICAgICAgICAgICAgICA9IHByb3RvdHlwZU1heDtcbiAgICBwcm90by5taW4gICAgICAgICAgICAgICA9IHByb3RvdHlwZU1pbjtcbiAgICBwcm90by5wYXJzaW5nRmxhZ3MgICAgICA9IHBhcnNpbmdGbGFncztcbiAgICBwcm90by5zZXQgICAgICAgICAgICAgICA9IHN0cmluZ1NldDtcbiAgICBwcm90by5zdGFydE9mICAgICAgICAgICA9IHN0YXJ0T2Y7XG4gICAgcHJvdG8uc3VidHJhY3QgICAgICAgICAgPSBzdWJ0cmFjdDtcbiAgICBwcm90by50b0FycmF5ICAgICAgICAgICA9IHRvQXJyYXk7XG4gICAgcHJvdG8udG9PYmplY3QgICAgICAgICAgPSB0b09iamVjdDtcbiAgICBwcm90by50b0RhdGUgICAgICAgICAgICA9IHRvRGF0ZTtcbiAgICBwcm90by50b0lTT1N0cmluZyAgICAgICA9IHRvSVNPU3RyaW5nO1xuICAgIHByb3RvLmluc3BlY3QgICAgICAgICAgID0gaW5zcGVjdDtcbiAgICBwcm90by50b0pTT04gICAgICAgICAgICA9IHRvSlNPTjtcbiAgICBwcm90by50b1N0cmluZyAgICAgICAgICA9IHRvU3RyaW5nO1xuICAgIHByb3RvLnVuaXggICAgICAgICAgICAgID0gdW5peDtcbiAgICBwcm90by52YWx1ZU9mICAgICAgICAgICA9IHZhbHVlT2Y7XG4gICAgcHJvdG8uY3JlYXRpb25EYXRhICAgICAgPSBjcmVhdGlvbkRhdGE7XG4gICAgcHJvdG8ueWVhciAgICAgICA9IGdldFNldFllYXI7XG4gICAgcHJvdG8uaXNMZWFwWWVhciA9IGdldElzTGVhcFllYXI7XG4gICAgcHJvdG8ud2Vla1llYXIgICAgPSBnZXRTZXRXZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrWWVhciA9IGdldFNldElTT1dlZWtZZWFyO1xuICAgIHByb3RvLnF1YXJ0ZXIgPSBwcm90by5xdWFydGVycyA9IGdldFNldFF1YXJ0ZXI7XG4gICAgcHJvdG8ubW9udGggICAgICAgPSBnZXRTZXRNb250aDtcbiAgICBwcm90by5kYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoO1xuICAgIHByb3RvLndlZWsgICAgICAgICAgID0gcHJvdG8ud2Vla3MgICAgICAgID0gZ2V0U2V0V2VlaztcbiAgICBwcm90by5pc29XZWVrICAgICAgICA9IHByb3RvLmlzb1dlZWtzICAgICA9IGdldFNldElTT1dlZWs7XG4gICAgcHJvdG8ud2Vla3NJblllYXIgICAgPSBnZXRXZWVrc0luWWVhcjtcbiAgICBwcm90by5pc29XZWVrc0luWWVhciA9IGdldElTT1dlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmRhdGUgICAgICAgPSBnZXRTZXREYXlPZk1vbnRoO1xuICAgIHByb3RvLmRheSAgICAgICAgPSBwcm90by5kYXlzICAgICAgICAgICAgID0gZ2V0U2V0RGF5T2ZXZWVrO1xuICAgIHByb3RvLndlZWtkYXkgICAgPSBnZXRTZXRMb2NhbGVEYXlPZldlZWs7XG4gICAgcHJvdG8uaXNvV2Vla2RheSA9IGdldFNldElTT0RheU9mV2VlaztcbiAgICBwcm90by5kYXlPZlllYXIgID0gZ2V0U2V0RGF5T2ZZZWFyO1xuICAgIHByb3RvLmhvdXIgPSBwcm90by5ob3VycyA9IGdldFNldEhvdXI7XG4gICAgcHJvdG8ubWludXRlID0gcHJvdG8ubWludXRlcyA9IGdldFNldE1pbnV0ZTtcbiAgICBwcm90by5zZWNvbmQgPSBwcm90by5zZWNvbmRzID0gZ2V0U2V0U2Vjb25kO1xuICAgIHByb3RvLm1pbGxpc2Vjb25kID0gcHJvdG8ubWlsbGlzZWNvbmRzID0gZ2V0U2V0TWlsbGlzZWNvbmQ7XG4gICAgcHJvdG8udXRjT2Zmc2V0ICAgICAgICAgICAgPSBnZXRTZXRPZmZzZXQ7XG4gICAgcHJvdG8udXRjICAgICAgICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1VUQztcbiAgICBwcm90by5sb2NhbCAgICAgICAgICAgICAgICA9IHNldE9mZnNldFRvTG9jYWw7XG4gICAgcHJvdG8ucGFyc2Vab25lICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldDtcbiAgICBwcm90by5oYXNBbGlnbmVkSG91ck9mZnNldCA9IGhhc0FsaWduZWRIb3VyT2Zmc2V0O1xuICAgIHByb3RvLmlzRFNUICAgICAgICAgICAgICAgID0gaXNEYXlsaWdodFNhdmluZ1RpbWU7XG4gICAgcHJvdG8uaXNMb2NhbCAgICAgICAgICAgICAgPSBpc0xvY2FsO1xuICAgIHByb3RvLmlzVXRjT2Zmc2V0ICAgICAgICAgID0gaXNVdGNPZmZzZXQ7XG4gICAgcHJvdG8uaXNVdGMgICAgICAgICAgICAgICAgPSBpc1V0YztcbiAgICBwcm90by5pc1VUQyAgICAgICAgICAgICAgICA9IGlzVXRjO1xuICAgIHByb3RvLnpvbmVBYmJyID0gZ2V0Wm9uZUFiYnI7XG4gICAgcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTtcbiAgICBwcm90by5kYXRlcyAgPSBkZXByZWNhdGUoJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJywgZ2V0U2V0RGF5T2ZNb250aCk7XG4gICAgcHJvdG8ubW9udGhzID0gZGVwcmVjYXRlKCdtb250aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQnLCBnZXRTZXRNb250aCk7XG4gICAgcHJvdG8ueWVhcnMgID0gZGVwcmVjYXRlKCd5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkJywgZ2V0U2V0WWVhcik7XG4gICAgcHJvdG8uem9uZSAgID0gZGVwcmVjYXRlKCdtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLycsIGdldFNldFpvbmUpO1xuICAgIHByb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZSgnaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbicsIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVbml4IChpbnB1dCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJblpvbmUgKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYXJzZVpvbmUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVQYXJzZVBvc3RGb3JtYXQgKHN0cmluZykge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH1cblxuICAgIHZhciBwcm90byQxID0gTG9jYWxlLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDEuY2FsZW5kYXIgICAgICAgID0gY2FsZW5kYXI7XG4gICAgcHJvdG8kMS5sb25nRGF0ZUZvcm1hdCAgPSBsb25nRGF0ZUZvcm1hdDtcbiAgICBwcm90byQxLmludmFsaWREYXRlICAgICA9IGludmFsaWREYXRlO1xuICAgIHByb3RvJDEub3JkaW5hbCAgICAgICAgID0gb3JkaW5hbDtcbiAgICBwcm90byQxLnByZXBhcnNlICAgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnBvc3Rmb3JtYXQgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnJlbGF0aXZlVGltZSAgICA9IHJlbGF0aXZlVGltZTtcbiAgICBwcm90byQxLnBhc3RGdXR1cmUgICAgICA9IHBhc3RGdXR1cmU7XG4gICAgcHJvdG8kMS5zZXQgICAgICAgICAgICAgPSBzZXQ7XG5cbiAgICBwcm90byQxLm1vbnRocyAgICAgICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRocztcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0ICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRoc1Nob3J0O1xuICAgIHByb3RvJDEubW9udGhzUGFyc2UgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzUGFyc2U7XG4gICAgcHJvdG8kMS5tb250aHNSZWdleCAgICAgICA9IG1vbnRoc1JlZ2V4O1xuICAgIHByb3RvJDEubW9udGhzU2hvcnRSZWdleCAgPSBtb250aHNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2VlayA9IGxvY2FsZVdlZWs7XG4gICAgcHJvdG8kMS5maXJzdERheU9mWWVhciA9IGxvY2FsZUZpcnN0RGF5T2ZZZWFyO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZldlZWsgPSBsb2NhbGVGaXJzdERheU9mV2VlaztcblxuICAgIHByb3RvJDEud2Vla2RheXMgICAgICAgPSAgICAgICAgbG9jYWxlV2Vla2RheXM7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pbiAgICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c01pbjtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnQgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzU2hvcnQ7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1BhcnNlICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c1BhcnNlO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5c1JlZ2V4ICAgICAgID0gICAgICAgIHdlZWtkYXlzUmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0UmVnZXggID0gICAgICAgIHdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzTWluUmVnZXggICAgPSAgICAgICAgd2Vla2RheXNNaW5SZWdleDtcblxuICAgIHByb3RvJDEuaXNQTSA9IGxvY2FsZUlzUE07XG4gICAgcHJvdG8kMS5tZXJpZGllbSA9IGxvY2FsZU1lcmlkaWVtO1xuXG4gICAgZnVuY3Rpb24gZ2V0JDEgKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpO1xuICAgICAgICB2YXIgdXRjID0gY3JlYXRlVVRDKCkuc2V0KHNldHRlciwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gbG9jYWxlW2ZpZWxkXSh1dGMsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc0ltcGwgKGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIC8vICgpXG4gICAgLy8gKDUpXG4gICAgLy8gKGZtdCwgNSlcbiAgICAvLyAoZm10KVxuICAgIC8vICh0cnVlKVxuICAgIC8vICh0cnVlLCA1KVxuICAgIC8vICh0cnVlLCBmbXQsIDUpXG4gICAgLy8gKHRydWUsIGZtdClcbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNJbXBsIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbG9jYWxlU29ydGVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBsb2NhbGVTb3J0ZWQ7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGxvY2FsZVNvcnRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpLFxuICAgICAgICAgICAgc2hpZnQgPSBsb2NhbGVTb3J0ZWQgPyBsb2NhbGUuX3dlZWsuZG93IDogMDtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgKGkgKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRocyAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRocycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNTaG9ydCAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNTaG9ydCAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzU2hvcnQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNNaW4gKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpO1xuICAgIH1cblxuICAgIGdldFNldEdsb2JhbExvY2FsZSgnZW4nLCB7XG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodG9JbnQobnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG4gICAgaG9va3MubGFuZyA9IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4nLCBnZXRTZXRHbG9iYWxMb2NhbGUpO1xuICAgIGhvb2tzLmxhbmdEYXRhID0gZGVwcmVjYXRlKCdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJywgZ2V0TG9jYWxlKTtcblxuICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBhYnMgKCkge1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgICAgPSB0aGlzLl9kYXRhO1xuXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9IG1hdGhBYnModGhpcy5fbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgdGhpcy5fZGF5cyAgICAgICAgID0gbWF0aEFicyh0aGlzLl9kYXlzKTtcbiAgICAgICAgdGhpcy5fbW9udGhzICAgICAgID0gbWF0aEFicyh0aGlzLl9tb250aHMpO1xuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzICA9IG1hdGhBYnMoZGF0YS5taWxsaXNlY29uZHMpO1xuICAgICAgICBkYXRhLnNlY29uZHMgICAgICAgPSBtYXRoQWJzKGRhdGEuc2Vjb25kcyk7XG4gICAgICAgIGRhdGEubWludXRlcyAgICAgICA9IG1hdGhBYnMoZGF0YS5taW51dGVzKTtcbiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgID0gbWF0aEFicyhkYXRhLmhvdXJzKTtcbiAgICAgICAgZGF0YS5tb250aHMgICAgICAgID0gbWF0aEFicyhkYXRhLm1vbnRocyk7XG4gICAgICAgIGRhdGEueWVhcnMgICAgICAgICA9IG1hdGhBYnMoZGF0YS55ZWFycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QkMSAoZHVyYXRpb24sIGlucHV0LCB2YWx1ZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUR1cmF0aW9uKGlucHV0LCB2YWx1ZSk7XG5cbiAgICAgICAgZHVyYXRpb24uX21pbGxpc2Vjb25kcyArPSBkaXJlY3Rpb24gKiBvdGhlci5fbWlsbGlzZWNvbmRzO1xuICAgICAgICBkdXJhdGlvbi5fZGF5cyAgICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9kYXlzO1xuICAgICAgICBkdXJhdGlvbi5fbW9udGhzICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9tb250aHM7XG5cbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gYWRkJDEgKGlucHV0LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYWRkU3VidHJhY3QkMSh0aGlzLCBpbnB1dCwgdmFsdWUsIDEpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIHN1YnRyYWN0KDEsICdzJykgb3Igc3VidHJhY3QoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gc3VidHJhY3QkMSAoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0NlaWwgKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1YmJsZSAoKSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7XG4gICAgICAgIHZhciBkYXlzICAgICAgICAgPSB0aGlzLl9kYXlzO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gdGhpcy5fbW9udGhzO1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgID0gdGhpcy5fZGF0YTtcbiAgICAgICAgdmFyIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycywgbW9udGhzRnJvbURheXM7XG5cbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIG1peCBvZiBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdmFsdWVzLCBidWJibGUgZG93biBmaXJzdFxuICAgICAgICAvLyBjaGVjazogaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzIxNjZcbiAgICAgICAgaWYgKCEoKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRheXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHxcbiAgICAgICAgICAgICAgICAobWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAwKSkpIHtcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTtcbiAgICAgICAgICAgIGRheXMgPSAwO1xuICAgICAgICAgICAgbW9udGhzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3JcbiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLlxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG5cbiAgICAgICAgc2Vjb25kcyAgICAgICAgICAgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzICAgICAgPSBzZWNvbmRzICUgNjA7XG5cbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgICAgICA9IG1pbnV0ZXMgJSA2MDtcblxuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIGRhdGEuaG91cnMgICAgICAgID0gaG91cnMgJSAyNDtcblxuICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgICAgIC8vIGNvbnZlcnQgZGF5cyB0byBtb250aHNcbiAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9Nb250aHMoZGF5cykpO1xuICAgICAgICBtb250aHMgKz0gbW9udGhzRnJvbURheXM7XG4gICAgICAgIGRheXMgLT0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzRnJvbURheXMpKTtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cbiAgICAgICAgZGF0YS5kYXlzICAgPSBkYXlzO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRocztcbiAgICAgICAgZGF0YS55ZWFycyAgPSB5ZWFycztcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMgKGRheXMpIHtcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTQ2MDk3IGRheXMgKHRha2luZyBpbnRvIGFjY291bnQgbGVhcCB5ZWFyIHJ1bGVzKVxuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxMiBtb250aHMgPT09IDQ4MDBcbiAgICAgICAgcmV0dXJuIGRheXMgKiA0ODAwIC8gMTQ2MDk3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyAobW9udGhzKSB7XG4gICAgICAgIC8vIHRoZSByZXZlcnNlIG9mIGRheXNUb01vbnRoc1xuICAgICAgICByZXR1cm4gbW9udGhzICogMTQ2MDk3IC8gNDgwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcyAodW5pdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5cztcbiAgICAgICAgdmFyIG1vbnRocztcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBpZiAodW5pdHMgPT09ICdtb250aCcgfHwgdW5pdHMgPT09ICdxdWFydGVyJyB8fCB1bml0cyA9PT0gJ3llYXInKSB7XG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzICsgZGF5c1RvTW9udGhzKGRheXMpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ21vbnRoJzogICByZXR1cm4gbW9udGhzO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOiByZXR1cm4gbW9udGhzIC8gMztcbiAgICAgICAgICAgICAgICBjYXNlICd5ZWFyJzogICAgcmV0dXJuIG1vbnRocyAvIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaGFuZGxlIG1pbGxpc2Vjb25kcyBzZXBhcmF0ZWx5IGJlY2F1c2Ugb2YgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgKGlzc3VlICMxODY3KVxuICAgICAgICAgICAgZGF5cyA9IHRoaXMuX2RheXMgKyBNYXRoLnJvdW5kKG1vbnRoc1RvRGF5cyh0aGlzLl9tb250aHMpKTtcbiAgICAgICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd3ZWVrJyAgIDogcmV0dXJuIGRheXMgLyA3ICAgICArIG1pbGxpc2Vjb25kcyAvIDYwNDhlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXknICAgIDogcmV0dXJuIGRheXMgICAgICAgICArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hvdXInICAgOiByZXR1cm4gZGF5cyAqIDI0ICAgICsgbWlsbGlzZWNvbmRzIC8gMzZlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdtaW51dGUnIDogcmV0dXJuIGRheXMgKiAxNDQwICArIG1pbGxpc2Vjb25kcyAvIDZlNDtcbiAgICAgICAgICAgICAgICBjYXNlICdzZWNvbmQnIDogcmV0dXJuIGRheXMgKiA4NjQwMCArIG1pbGxpc2Vjb25kcyAvIDEwMDA7XG4gICAgICAgICAgICAgICAgLy8gTWF0aC5mbG9vciBwcmV2ZW50cyBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyBoZXJlXG4gICAgICAgICAgICAgICAgY2FzZSAnbWlsbGlzZWNvbmQnOiByZXR1cm4gTWF0aC5mbG9vcihkYXlzICogODY0ZTUpICsgbWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignVW5rbm93biB1bml0ICcgKyB1bml0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgdGhpcy5hcygnbXMnKT9cbiAgICBmdW5jdGlvbiB2YWx1ZU9mJDEgKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgK1xuICAgICAgICAgICAgdGhpcy5fZGF5cyAqIDg2NGU1ICtcbiAgICAgICAgICAgICh0aGlzLl9tb250aHMgJSAxMikgKiAyNTkyZTYgK1xuICAgICAgICAgICAgdG9JbnQodGhpcy5fbW9udGhzIC8gMTIpICogMzE1MzZlNlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VBcyAoYWxpYXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFzKGFsaWFzKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgYXNNaWxsaXNlY29uZHMgPSBtYWtlQXMoJ21zJyk7XG4gICAgdmFyIGFzU2Vjb25kcyAgICAgID0gbWFrZUFzKCdzJyk7XG4gICAgdmFyIGFzTWludXRlcyAgICAgID0gbWFrZUFzKCdtJyk7XG4gICAgdmFyIGFzSG91cnMgICAgICAgID0gbWFrZUFzKCdoJyk7XG4gICAgdmFyIGFzRGF5cyAgICAgICAgID0gbWFrZUFzKCdkJyk7XG4gICAgdmFyIGFzV2Vla3MgICAgICAgID0gbWFrZUFzKCd3Jyk7XG4gICAgdmFyIGFzTW9udGhzICAgICAgID0gbWFrZUFzKCdNJyk7XG4gICAgdmFyIGFzUXVhcnRlcnMgICAgID0gbWFrZUFzKCdRJyk7XG4gICAgdmFyIGFzWWVhcnMgICAgICAgID0gbWFrZUFzKCd5Jyk7XG5cbiAgICBmdW5jdGlvbiBjbG9uZSQxICgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldCQyICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpc1t1bml0cyArICdzJ10oKSA6IE5hTjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlR2V0dGVyKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2RhdGFbbmFtZV0gOiBOYU47XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIG1pbGxpc2Vjb25kcyA9IG1ha2VHZXR0ZXIoJ21pbGxpc2Vjb25kcycpO1xuICAgIHZhciBzZWNvbmRzICAgICAgPSBtYWtlR2V0dGVyKCdzZWNvbmRzJyk7XG4gICAgdmFyIG1pbnV0ZXMgICAgICA9IG1ha2VHZXR0ZXIoJ21pbnV0ZXMnKTtcbiAgICB2YXIgaG91cnMgICAgICAgID0gbWFrZUdldHRlcignaG91cnMnKTtcbiAgICB2YXIgZGF5cyAgICAgICAgID0gbWFrZUdldHRlcignZGF5cycpO1xuICAgIHZhciBtb250aHMgICAgICAgPSBtYWtlR2V0dGVyKCdtb250aHMnKTtcbiAgICB2YXIgeWVhcnMgICAgICAgID0gbWFrZUdldHRlcigneWVhcnMnKTtcblxuICAgIGZ1bmN0aW9uIHdlZWtzICgpIHtcbiAgICAgICAgcmV0dXJuIGFic0Zsb29yKHRoaXMuZGF5cygpIC8gNyk7XG4gICAgfVxuXG4gICAgdmFyIHJvdW5kID0gTWF0aC5yb3VuZDtcbiAgICB2YXIgdGhyZXNob2xkcyA9IHtcbiAgICAgICAgc3M6IDQ0LCAgICAgICAgIC8vIGEgZmV3IHNlY29uZHMgdG8gc2Vjb25kc1xuICAgICAgICBzIDogNDUsICAgICAgICAgLy8gc2Vjb25kcyB0byBtaW51dGVcbiAgICAgICAgbSA6IDQ1LCAgICAgICAgIC8vIG1pbnV0ZXMgdG8gaG91clxuICAgICAgICBoIDogMjIsICAgICAgICAgLy8gaG91cnMgdG8gZGF5XG4gICAgICAgIGQgOiAyNiwgICAgICAgICAvLyBkYXlzIHRvIG1vbnRoXG4gICAgICAgIE0gOiAxMSAgICAgICAgICAvLyBtb250aHMgdG8geWVhclxuICAgIH07XG5cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vbWVudC5mbi5mcm9tLCBtb21lbnQuZm4uZnJvbU5vdywgYW5kIG1vbWVudC5kdXJhdGlvbi5mbi5odW1hbml6ZVxuICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVUaW1lQWdvKHN0cmluZywgbnVtYmVyLCB3aXRob3V0U3VmZml4LCBpc0Z1dHVyZSwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUucmVsYXRpdmVUaW1lKG51bWJlciB8fCAxLCAhIXdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZSQxIChwb3NOZWdEdXJhdGlvbiwgd2l0aG91dFN1ZmZpeCwgbG9jYWxlKSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGNyZWF0ZUR1cmF0aW9uKHBvc05lZ0R1cmF0aW9uKS5hYnMoKTtcbiAgICAgICAgdmFyIHNlY29uZHMgID0gcm91bmQoZHVyYXRpb24uYXMoJ3MnKSk7XG4gICAgICAgIHZhciBtaW51dGVzICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdtJykpO1xuICAgICAgICB2YXIgaG91cnMgICAgPSByb3VuZChkdXJhdGlvbi5hcygnaCcpKTtcbiAgICAgICAgdmFyIGRheXMgICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ2QnKSk7XG4gICAgICAgIHZhciBtb250aHMgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdNJykpO1xuICAgICAgICB2YXIgeWVhcnMgICAgPSByb3VuZChkdXJhdGlvbi5hcygneScpKTtcblxuICAgICAgICB2YXIgYSA9IHNlY29uZHMgPD0gdGhyZXNob2xkcy5zcyAmJiBbJ3MnLCBzZWNvbmRzXSAgfHxcbiAgICAgICAgICAgICAgICBzZWNvbmRzIDwgdGhyZXNob2xkcy5zICAgJiYgWydzcycsIHNlY29uZHNdIHx8XG4gICAgICAgICAgICAgICAgbWludXRlcyA8PSAxICAgICAgICAgICAgICYmIFsnbSddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPCB0aHJlc2hvbGRzLm0gICAmJiBbJ21tJywgbWludXRlc10gfHxcbiAgICAgICAgICAgICAgICBob3VycyAgIDw9IDEgICAgICAgICAgICAgJiYgWydoJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgaG91cnMgICA8IHRocmVzaG9sZHMuaCAgICYmIFsnaGgnLCBob3Vyc10gICB8fFxuICAgICAgICAgICAgICAgIGRheXMgICAgPD0gMSAgICAgICAgICAgICAmJiBbJ2QnXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBkYXlzICAgIDwgdGhyZXNob2xkcy5kICAgJiYgWydkZCcsIGRheXNdICAgIHx8XG4gICAgICAgICAgICAgICAgbW9udGhzICA8PSAxICAgICAgICAgICAgICYmIFsnTSddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIG1vbnRocyAgPCB0aHJlc2hvbGRzLk0gICAmJiBbJ01NJywgbW9udGhzXSAgfHxcbiAgICAgICAgICAgICAgICB5ZWFycyAgIDw9IDEgICAgICAgICAgICAgJiYgWyd5J10gICAgICAgICAgIHx8IFsneXknLCB5ZWFyc107XG5cbiAgICAgICAgYVsyXSA9IHdpdGhvdXRTdWZmaXg7XG4gICAgICAgIGFbM10gPSArcG9zTmVnRHVyYXRpb24gPiAwO1xuICAgICAgICBhWzRdID0gbG9jYWxlO1xuICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZVRpbWVBZ28uYXBwbHkobnVsbCwgYSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCB0aGUgcm91bmRpbmcgZnVuY3Rpb24gZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nIChyb3VuZGluZ0Z1bmN0aW9uKSB7XG4gICAgICAgIGlmIChyb3VuZGluZ0Z1bmN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByb3VuZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mKHJvdW5kaW5nRnVuY3Rpb24pID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByb3VuZCA9IHJvdW5kaW5nRnVuY3Rpb247XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCBhIHRocmVzaG9sZCBmb3IgcmVsYXRpdmUgdGltZSBzdHJpbmdzXG4gICAgZnVuY3Rpb24gZ2V0U2V0UmVsYXRpdmVUaW1lVGhyZXNob2xkICh0aHJlc2hvbGQsIGxpbWl0KSB7XG4gICAgICAgIGlmICh0aHJlc2hvbGRzW3RocmVzaG9sZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW1pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyZXNob2xkc1t0aHJlc2hvbGRdO1xuICAgICAgICB9XG4gICAgICAgIHRocmVzaG9sZHNbdGhyZXNob2xkXSA9IGxpbWl0O1xuICAgICAgICBpZiAodGhyZXNob2xkID09PSAncycpIHtcbiAgICAgICAgICAgIHRocmVzaG9sZHMuc3MgPSBsaW1pdCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHVtYW5pemUgKHdpdGhTdWZmaXgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxlID0gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgIHZhciBvdXRwdXQgPSByZWxhdGl2ZVRpbWUkMSh0aGlzLCAhd2l0aFN1ZmZpeCwgbG9jYWxlKTtcblxuICAgICAgICBpZiAod2l0aFN1ZmZpeCkge1xuICAgICAgICAgICAgb3V0cHV0ID0gbG9jYWxlLnBhc3RGdXR1cmUoK3RoaXMsIG91dHB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9jYWxlLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWJzJDEgPSBNYXRoLmFicztcblxuICAgIGZ1bmN0aW9uIHNpZ24oeCkge1xuICAgICAgICByZXR1cm4gKCh4ID4gMCkgLSAoeCA8IDApKSB8fCAreDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0lTT1N0cmluZyQxKCkge1xuICAgICAgICAvLyBmb3IgSVNPIHN0cmluZ3Mgd2UgZG8gbm90IHVzZSB0aGUgbm9ybWFsIGJ1YmJsaW5nIHJ1bGVzOlxuICAgICAgICAvLyAgKiBtaWxsaXNlY29uZHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVjb21lIGhvdXJzXG4gICAgICAgIC8vICAqIGRheXMgZG8gbm90IGJ1YmJsZSBhdCBhbGxcbiAgICAgICAgLy8gICogbW9udGhzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSB5ZWFyc1xuICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgdGhlcmUgaXMgbm8gY29udGV4dC1mcmVlIGNvbnZlcnNpb24gYmV0d2VlbiBob3VycyBhbmQgZGF5c1xuICAgICAgICAvLyAodGhpbmsgb2YgY2xvY2sgY2hhbmdlcylcbiAgICAgICAgLy8gYW5kIGFsc28gbm90IGJldHdlZW4gZGF5cyBhbmQgbW9udGhzICgyOC0zMSBkYXlzIHBlciBtb250aClcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2Vjb25kcyA9IGFicyQxKHRoaXMuX21pbGxpc2Vjb25kcykgLyAxMDAwO1xuICAgICAgICB2YXIgZGF5cyAgICAgICAgID0gYWJzJDEodGhpcy5fZGF5cyk7XG4gICAgICAgIHZhciBtb250aHMgICAgICAgPSBhYnMkMSh0aGlzLl9tb250aHMpO1xuICAgICAgICB2YXIgbWludXRlcywgaG91cnMsIHllYXJzO1xuXG4gICAgICAgIC8vIDM2MDAgc2Vjb25kcyAtPiA2MCBtaW51dGVzIC0+IDEgaG91clxuICAgICAgICBtaW51dGVzICAgICAgICAgICA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgICAgIGhvdXJzICAgICAgICAgICAgID0gYWJzRmxvb3IobWludXRlcyAvIDYwKTtcbiAgICAgICAgc2Vjb25kcyAlPSA2MDtcbiAgICAgICAgbWludXRlcyAlPSA2MDtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzICA9IGFic0Zsb29yKG1vbnRocyAvIDEyKTtcbiAgICAgICAgbW9udGhzICU9IDEyO1xuXG5cbiAgICAgICAgLy8gaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2RvcmRpbGxlL21vbWVudC1pc29kdXJhdGlvbi9ibG9iL21hc3Rlci9tb21lbnQuaXNvZHVyYXRpb24uanNcbiAgICAgICAgdmFyIFkgPSB5ZWFycztcbiAgICAgICAgdmFyIE0gPSBtb250aHM7XG4gICAgICAgIHZhciBEID0gZGF5cztcbiAgICAgICAgdmFyIGggPSBob3VycztcbiAgICAgICAgdmFyIG0gPSBtaW51dGVzO1xuICAgICAgICB2YXIgcyA9IHNlY29uZHMgPyBzZWNvbmRzLnRvRml4ZWQoMykucmVwbGFjZSgvXFwuPzArJC8sICcnKSA6ICcnO1xuICAgICAgICB2YXIgdG90YWwgPSB0aGlzLmFzU2Vjb25kcygpO1xuXG4gICAgICAgIGlmICghdG90YWwpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHNhbWUgYXMgQyMncyAoTm9kYSkgYW5kIHB5dGhvbiAoaXNvZGF0ZSkuLi5cbiAgICAgICAgICAgIC8vIGJ1dCBub3Qgb3RoZXIgSlMgKGdvb2cuZGF0ZSlcbiAgICAgICAgICAgIHJldHVybiAnUDBEJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0b3RhbFNpZ24gPSB0b3RhbCA8IDAgPyAnLScgOiAnJztcbiAgICAgICAgdmFyIHltU2lnbiA9IHNpZ24odGhpcy5fbW9udGhzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcbiAgICAgICAgdmFyIGRheXNTaWduID0gc2lnbih0aGlzLl9kYXlzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcbiAgICAgICAgdmFyIGhtc1NpZ24gPSBzaWduKHRoaXMuX21pbGxpc2Vjb25kcykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG5cbiAgICAgICAgcmV0dXJuIHRvdGFsU2lnbiArICdQJyArXG4gICAgICAgICAgICAoWSA/IHltU2lnbiArIFkgKyAnWScgOiAnJykgK1xuICAgICAgICAgICAgKE0gPyB5bVNpZ24gKyBNICsgJ00nIDogJycpICtcbiAgICAgICAgICAgIChEID8gZGF5c1NpZ24gKyBEICsgJ0QnIDogJycpICtcbiAgICAgICAgICAgICgoaCB8fCBtIHx8IHMpID8gJ1QnIDogJycpICtcbiAgICAgICAgICAgIChoID8gaG1zU2lnbiArIGggKyAnSCcgOiAnJykgK1xuICAgICAgICAgICAgKG0gPyBobXNTaWduICsgbSArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAocyA/IGhtc1NpZ24gKyBzICsgJ1MnIDogJycpO1xuICAgIH1cblxuICAgIHZhciBwcm90byQyID0gRHVyYXRpb24ucHJvdG90eXBlO1xuXG4gICAgcHJvdG8kMi5pc1ZhbGlkICAgICAgICA9IGlzVmFsaWQkMTtcbiAgICBwcm90byQyLmFicyAgICAgICAgICAgID0gYWJzO1xuICAgIHByb3RvJDIuYWRkICAgICAgICAgICAgPSBhZGQkMTtcbiAgICBwcm90byQyLnN1YnRyYWN0ICAgICAgID0gc3VidHJhY3QkMTtcbiAgICBwcm90byQyLmFzICAgICAgICAgICAgID0gYXM7XG4gICAgcHJvdG8kMi5hc01pbGxpc2Vjb25kcyA9IGFzTWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuYXNTZWNvbmRzICAgICAgPSBhc1NlY29uZHM7XG4gICAgcHJvdG8kMi5hc01pbnV0ZXMgICAgICA9IGFzTWludXRlcztcbiAgICBwcm90byQyLmFzSG91cnMgICAgICAgID0gYXNIb3VycztcbiAgICBwcm90byQyLmFzRGF5cyAgICAgICAgID0gYXNEYXlzO1xuICAgIHByb3RvJDIuYXNXZWVrcyAgICAgICAgPSBhc1dlZWtzO1xuICAgIHByb3RvJDIuYXNNb250aHMgICAgICAgPSBhc01vbnRocztcbiAgICBwcm90byQyLmFzUXVhcnRlcnMgICAgID0gYXNRdWFydGVycztcbiAgICBwcm90byQyLmFzWWVhcnMgICAgICAgID0gYXNZZWFycztcbiAgICBwcm90byQyLnZhbHVlT2YgICAgICAgID0gdmFsdWVPZiQxO1xuICAgIHByb3RvJDIuX2J1YmJsZSAgICAgICAgPSBidWJibGU7XG4gICAgcHJvdG8kMi5jbG9uZSAgICAgICAgICA9IGNsb25lJDE7XG4gICAgcHJvdG8kMi5nZXQgICAgICAgICAgICA9IGdldCQyO1xuICAgIHByb3RvJDIubWlsbGlzZWNvbmRzICAgPSBtaWxsaXNlY29uZHM7XG4gICAgcHJvdG8kMi5zZWNvbmRzICAgICAgICA9IHNlY29uZHM7XG4gICAgcHJvdG8kMi5taW51dGVzICAgICAgICA9IG1pbnV0ZXM7XG4gICAgcHJvdG8kMi5ob3VycyAgICAgICAgICA9IGhvdXJzO1xuICAgIHByb3RvJDIuZGF5cyAgICAgICAgICAgPSBkYXlzO1xuICAgIHByb3RvJDIud2Vla3MgICAgICAgICAgPSB3ZWVrcztcbiAgICBwcm90byQyLm1vbnRocyAgICAgICAgID0gbW9udGhzO1xuICAgIHByb3RvJDIueWVhcnMgICAgICAgICAgPSB5ZWFycztcbiAgICBwcm90byQyLmh1bWFuaXplICAgICAgID0gaHVtYW5pemU7XG4gICAgcHJvdG8kMi50b0lTT1N0cmluZyAgICA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b1N0cmluZyAgICAgICA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b0pTT04gICAgICAgICA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi5sb2NhbGUgICAgICAgICA9IGxvY2FsZTtcbiAgICBwcm90byQyLmxvY2FsZURhdGEgICAgID0gbG9jYWxlRGF0YTtcblxuICAgIHByb3RvJDIudG9Jc29TdHJpbmcgPSBkZXByZWNhdGUoJ3RvSXNvU3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0b0lTT1N0cmluZygpIGluc3RlYWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpJywgdG9JU09TdHJpbmckMSk7XG4gICAgcHJvdG8kMi5sYW5nID0gbGFuZztcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdYJywgMCwgMCwgJ3VuaXgnKTtcbiAgICBhZGRGb3JtYXRUb2tlbigneCcsIDAsIDAsICd2YWx1ZU9mJyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCd4JywgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1gnLCBtYXRjaFRpbWVzdGFtcCk7XG4gICAgYWRkUGFyc2VUb2tlbignWCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShwYXJzZUZsb2F0KGlucHV0LCAxMCkgKiAxMDAwKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCd4JywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHRvSW50KGlucHV0KSk7XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cblxuICAgIGhvb2tzLnZlcnNpb24gPSAnMi4yNC4wJztcblxuICAgIHNldEhvb2tDYWxsYmFjayhjcmVhdGVMb2NhbCk7XG5cbiAgICBob29rcy5mbiAgICAgICAgICAgICAgICAgICAgPSBwcm90bztcbiAgICBob29rcy5taW4gICAgICAgICAgICAgICAgICAgPSBtaW47XG4gICAgaG9va3MubWF4ICAgICAgICAgICAgICAgICAgID0gbWF4O1xuICAgIGhvb2tzLm5vdyAgICAgICAgICAgICAgICAgICA9IG5vdztcbiAgICBob29rcy51dGMgICAgICAgICAgICAgICAgICAgPSBjcmVhdGVVVEM7XG4gICAgaG9va3MudW5peCAgICAgICAgICAgICAgICAgID0gY3JlYXRlVW5peDtcbiAgICBob29rcy5tb250aHMgICAgICAgICAgICAgICAgPSBsaXN0TW9udGhzO1xuICAgIGhvb2tzLmlzRGF0ZSAgICAgICAgICAgICAgICA9IGlzRGF0ZTtcbiAgICBob29rcy5sb2NhbGUgICAgICAgICAgICAgICAgPSBnZXRTZXRHbG9iYWxMb2NhbGU7XG4gICAgaG9va3MuaW52YWxpZCAgICAgICAgICAgICAgID0gY3JlYXRlSW52YWxpZDtcbiAgICBob29rcy5kdXJhdGlvbiAgICAgICAgICAgICAgPSBjcmVhdGVEdXJhdGlvbjtcbiAgICBob29rcy5pc01vbWVudCAgICAgICAgICAgICAgPSBpc01vbWVudDtcbiAgICBob29rcy53ZWVrZGF5cyAgICAgICAgICAgICAgPSBsaXN0V2Vla2RheXM7XG4gICAgaG9va3MucGFyc2Vab25lICAgICAgICAgICAgID0gY3JlYXRlSW5ab25lO1xuICAgIGhvb2tzLmxvY2FsZURhdGEgICAgICAgICAgICA9IGdldExvY2FsZTtcbiAgICBob29rcy5pc0R1cmF0aW9uICAgICAgICAgICAgPSBpc0R1cmF0aW9uO1xuICAgIGhvb2tzLm1vbnRoc1Nob3J0ICAgICAgICAgICA9IGxpc3RNb250aHNTaG9ydDtcbiAgICBob29rcy53ZWVrZGF5c01pbiAgICAgICAgICAgPSBsaXN0V2Vla2RheXNNaW47XG4gICAgaG9va3MuZGVmaW5lTG9jYWxlICAgICAgICAgID0gZGVmaW5lTG9jYWxlO1xuICAgIGhvb2tzLnVwZGF0ZUxvY2FsZSAgICAgICAgICA9IHVwZGF0ZUxvY2FsZTtcbiAgICBob29rcy5sb2NhbGVzICAgICAgICAgICAgICAgPSBsaXN0TG9jYWxlcztcbiAgICBob29rcy53ZWVrZGF5c1Nob3J0ICAgICAgICAgPSBsaXN0V2Vla2RheXNTaG9ydDtcbiAgICBob29rcy5ub3JtYWxpemVVbml0cyAgICAgICAgPSBub3JtYWxpemVVbml0cztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVSb3VuZGluZyAgPSBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQgPSBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQ7XG4gICAgaG9va3MuY2FsZW5kYXJGb3JtYXQgICAgICAgID0gZ2V0Q2FsZW5kYXJGb3JtYXQ7XG4gICAgaG9va3MucHJvdG90eXBlICAgICAgICAgICAgID0gcHJvdG87XG5cbiAgICAvLyBjdXJyZW50bHkgSFRNTDUgaW5wdXQgdHlwZSBvbmx5IHN1cHBvcnRzIDI0LWhvdXIgZm9ybWF0c1xuICAgIGhvb2tzLkhUTUw1X0ZNVCA9IHtcbiAgICAgICAgREFURVRJTUVfTE9DQUw6ICdZWVlZLU1NLUREVEhIOm1tJywgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIC8+XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMX1NFQ09ORFM6ICdZWVlZLU1NLUREVEhIOm1tOnNzJywgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMX01TOiAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnLCAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBzdGVwPVwiMC4wMDFcIiAvPlxuICAgICAgICBEQVRFOiAnWVlZWS1NTS1ERCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cImRhdGVcIiAvPlxuICAgICAgICBUSU1FOiAnSEg6bW0nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiAvPlxuICAgICAgICBUSU1FX1NFQ09ORFM6ICdISDptbTpzcycsICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIFRJTUVfTVM6ICdISDptbTpzcy5TU1MnLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIFdFRUs6ICdHR0dHLVtXXVdXJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwid2Vla1wiIC8+XG4gICAgICAgIE1PTlRIOiAnWVlZWS1NTScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwibW9udGhcIiAvPlxuICAgIH07XG5cbiAgICByZXR1cm4gaG9va3M7XG5cbn0pKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/moment/moment.js\n");

/***/ }),

/***/ "./node_modules/prismjs/prism.js":
/*!***************************************!*\
  !*** ./node_modules/prismjs/prism.js ***!
  \***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(global) {\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function (_self){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t}\n\t\t},\n\n\t\ttype: function (o) {\n\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t},\n\n\t\tobjId: function (obj) {\n\t\t\tif (!obj['__id']) {\n\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t}\n\t\t\treturn obj['__id'];\n\t\t},\n\n\t\t// Deep clone a language definition (e.g. to extend it)\n\t\tclone: function deepClone(o, visited) {\n\t\t\tvar clone, id, type = _.util.type(o);\n\t\t\tvisited = visited || {};\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'Object':\n\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t}\n\t\t\t\t\tclone = {};\n\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn clone;\n\n\t\t\t\tcase 'Array':\n\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t}\n\t\t\t\t\tclone = [];\n\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\to.forEach(function (v, i) {\n\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn clone;\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn o;\n\t\t\t}\n\t\t}\n\t},\n\n\tlanguages: {\n\t\textend: function (id, redef) {\n\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\tfor (var key in redef) {\n\t\t\t\tlang[key] = redef[key];\n\t\t\t}\n\n\t\t\treturn lang;\n\t\t},\n\n\t\t/**\n\t\t * Insert a token before another token in a language literal\n\t\t * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n\t\t * we cannot just provide an object, we need an object and a key.\n\t\t * @param inside The key (or language id) of the parent\n\t\t * @param before The key to insert before.\n\t\t * @param insert Object with the key/value pairs to insert\n\t\t * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n\t\t */\n\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\troot = root || _.languages;\n\t\t\tvar grammar = root[inside];\n\t\t\tvar ret = {};\n\n\t\t\tfor (var token in grammar) {\n\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar old = root[inside];\n\t\t\troot[inside] = ret;\n\n\t\t\t// Update references in other language definitions\n\t\t\t_.languages.DFS(_.languages, function(key, value) {\n\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\tthis[key] = ret;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn ret;\n\t\t},\n\n\t\t// Traverse a language definition with Depth First Search\n\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\tvisited = visited || {};\n\n\t\t\tvar objId = _.util.objId;\n\n\t\t\tfor (var i in o) {\n\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\tvar property = o[i],\n\t\t\t\t\t    propertyType = _.util.type(property);\n\n\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t}\n\t\t\t\t\telse if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tplugins: {},\n\n\thighlightAll: function(async, callback) {\n\t\t_.highlightAllUnder(document, async, callback);\n\t},\n\n\thighlightAllUnder: function(container, async, callback) {\n\t\tvar env = {\n\t\t\tcallback: callback,\n\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t};\n\n\t\t_.hooks.run('before-highlightall', env);\n\n\t\tvar elements = container.querySelectorAll(env.selector);\n\n\t\tfor (var i=0, element; element = elements[i++];) {\n\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t}\n\t},\n\n\thighlightElement: function(element, async, callback) {\n\t\t// Find language\n\t\tvar language = 'none', grammar, parent = element;\n\n\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif (parent) {\n\t\t\tlanguage = (parent.className.match(lang) || [,'none'])[1].toLowerCase();\n\t\t\tgrammar = _.languages[language];\n\t\t}\n\n\t\t// Set language on the element, if not present\n\t\telement.className = element.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\n\t\tif (element.parentNode) {\n\t\t\t// Set language on the parent, for styling\n\t\t\tparent = element.parentNode;\n\n\t\t\tif (/pre/i.test(parent.nodeName)) {\n\t\t\t\tparent.className = parent.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\t\t\t}\n\t\t}\n\n\t\tvar code = element.textContent;\n\n\t\tvar env = {\n\t\t\telement: element,\n\t\t\tlanguage: language,\n\t\t\tgrammar: grammar,\n\t\t\tcode: code\n\t\t};\n\n\t\tvar insertHighlightedCode = function (highlightedCode) {\n\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t_.hooks.run('complete', env);\n\t\t\tcallback && callback.call(env.element);\n\t\t}\n\n\t\t_.hooks.run('before-sanity-check', env);\n\n\t\tif (!env.code) {\n\t\t\t_.hooks.run('complete', env);\n\t\t\treturn;\n\t\t}\n\n\t\t_.hooks.run('before-highlight', env);\n\n\t\tif (!env.grammar) {\n\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\treturn;\n\t\t}\n\n\t\tif (async && _self.Worker) {\n\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\tworker.onmessage = function(evt) {\n\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t};\n\n\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\tlanguage: env.language,\n\t\t\t\tcode: env.code,\n\t\t\t\timmediateClose: true\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t}\n\t},\n\n\thighlight: function (text, grammar, language) {\n\t\tvar env = {\n\t\t\tcode: text,\n\t\t\tgrammar: grammar,\n\t\t\tlanguage: language\n\t\t};\n\t\t_.hooks.run('before-tokenize', env);\n\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t_.hooks.run('after-tokenize', env);\n\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t},\n\n\tmatchGrammar: function (text, strarr, grammar, index, startPos, oneshot, target) {\n\t\tfor (var token in grammar) {\n\t\t\tif(!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (token == target) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = (_.util.type(patterns) === \"Array\") ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tvar pattern = patterns[j],\n\t\t\t\t\tinside = pattern.inside,\n\t\t\t\t\tlookbehind = !!pattern.lookbehind,\n\t\t\t\t\tgreedy = !!pattern.greedy,\n\t\t\t\t\tlookbehindLength = 0,\n\t\t\t\t\talias = pattern.alias;\n\n\t\t\t\tif (greedy && !pattern.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = pattern.pattern.toString().match(/[imuy]*$/)[0];\n\t\t\t\t\tpattern.pattern = RegExp(pattern.pattern.source, flags + \"g\");\n\t\t\t\t}\n\n\t\t\t\tpattern = pattern.pattern || pattern;\n\n\t\t\t\t// Don’t cache length as it changes during the loop\n\t\t\t\tfor (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {\n\n\t\t\t\t\tvar str = strarr[i];\n\n\t\t\t\t\tif (strarr.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tvar match = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t    to = match.index + match[0].length,\n\t\t\t\t\t\t    k = i,\n\t\t\t\t\t\t    p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (strarr[i] instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t\t\tdelNum = 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1] ? match[1].length : 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t    match = match[0].slice(lookbehindLength),\n\t\t\t\t\t    to = from + match.length,\n\t\t\t\t\t    before = str.slice(0, from),\n\t\t\t\t\t    after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t},\n\n\tToken: Token\n};\n\n_self.Prism = _;\n\nfunction Token(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n}\n\nToken.stringify = function(o, language) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (Array.isArray(o)) {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = Array.isArray(o.alias) ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '</' + env.tag + '>';\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _;\n\n})(_self);\n\nif ( true && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': /<!--[\\s\\S]*?-->/,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': /<!DOCTYPE[\\s\\S]+?>/i,\n\t'cdata': /<!\\[CDATA\\[[\\s\\S]*?]]>/i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[\\s\\S]*?>)(?:<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\s*|[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, tagName), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: /@[\\w-]+[\\s\\S]*?(?:;|(?=\\s*\\{))/,\n\t\t\tinside: {\n\t\t\t\t'rule': /@[\\w-]+/\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\tpattern: RegExp('url\\\\((?:' + string.source + '|[^\\n\\r()]*)\\\\)', 'i'),\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/\n\t\t\t}\n\t\t},\n\t\t'selector': RegExp('[^{}\\\\s](?:[^{};\"\\']|' + string.source + ')*?(?=\\\\s*\\\\{)'),\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t\t'important': /!important\\b/i,\n\t\t'function': /[-a-z0-9]+(?=\\()/i,\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\n\t\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t\t'style-attr': {\n\t\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'attr-name': {\n\t\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\t\tinside: markup.tag.inside\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t\t'attr-value': {\n\t\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\talias: 'language-css'\n\t\t\t}\n\t\t}, markup.tag);\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])[_$A-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\.(?:prototype|constructor))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.])\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t'number': /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s])\\s*)\\/(\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyus]{0,6}(?=\\s*($|[\\r\\n,.;})\\]]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)?\\s*\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=>)/i,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\s*)\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\\${)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\${|}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\t/**\n\t * @param {Element} [container=document]\n\t */\n\tself.Prism.fileHighlight = function(container) {\n\t\tcontainer = container || document;\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(container.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t// ignore if already loaded\n\t\t\tif (pre.hasAttribute('data-src-loaded')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// load current\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t// mark as loaded\n\t\t\t\t\t\tpre.setAttribute('data-src-loaded', '');\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t\tif (Prism.plugins.toolbar) {\n\t\t\tPrism.plugins.toolbar.registerButton('download-file', function (env) {\n\t\t\t\tvar pre = env.element.parentNode;\n\t\t\t\tif (!pre || !/pre/i.test(pre.nodeName) || !pre.hasAttribute('data-src') || !pre.hasAttribute('data-download-link')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\t\t\t\tvar a = document.createElement('a');\n\t\t\t\ta.textContent = pre.getAttribute('data-download-link-label') || 'Download';\n\t\t\t\ta.setAttribute('download', '');\n\t\t\t\ta.href = src;\n\t\t\t\treturn a;\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', function () {\n\t\t// execute inside handler, for dropping Event as argument\n\t\tself.Prism.fileHighlight();\n\t});\n\n})();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJpc21qcy9wcmlzbS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcmlzbWpzL3ByaXNtLmpzP2MxOTciXSwic291cmNlc0NvbnRlbnQiOlsiXG4vKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIEJlZ2luIHByaXNtLWNvcmUuanNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cblxudmFyIF9zZWxmID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKVxuXHQ/IHdpbmRvdyAgIC8vIGlmIGluIGJyb3dzZXJcblx0OiAoXG5cdFx0KHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlKVxuXHRcdD8gc2VsZiAvLyBpZiBpbiB3b3JrZXJcblx0XHQ6IHt9ICAgLy8gaWYgaW4gbm9kZSBqc1xuXHQpO1xuXG4vKipcbiAqIFByaXNtOiBMaWdodHdlaWdodCwgcm9idXN0LCBlbGVnYW50IHN5bnRheCBoaWdobGlnaHRpbmdcbiAqIE1JVCBsaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwL1xuICogQGF1dGhvciBMZWEgVmVyb3UgaHR0cDovL2xlYS52ZXJvdS5tZVxuICovXG5cbnZhciBQcmlzbSA9IChmdW5jdGlvbiAoX3NlbGYpe1xuXG4vLyBQcml2YXRlIGhlbHBlciB2YXJzXG52YXIgbGFuZyA9IC9cXGJsYW5nKD86dWFnZSk/LShbXFx3LV0rKVxcYi9pO1xudmFyIHVuaXF1ZUlkID0gMDtcblxudmFyIF8gPSB7XG5cdG1hbnVhbDogX3NlbGYuUHJpc20gJiYgX3NlbGYuUHJpc20ubWFudWFsLFxuXHRkaXNhYmxlV29ya2VyTWVzc2FnZUhhbmRsZXI6IF9zZWxmLlByaXNtICYmIF9zZWxmLlByaXNtLmRpc2FibGVXb3JrZXJNZXNzYWdlSGFuZGxlcixcblx0dXRpbDoge1xuXHRcdGVuY29kZTogZnVuY3Rpb24gKHRva2Vucykge1xuXHRcdFx0aWYgKHRva2VucyBpbnN0YW5jZW9mIFRva2VuKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgVG9rZW4odG9rZW5zLnR5cGUsIF8udXRpbC5lbmNvZGUodG9rZW5zLmNvbnRlbnQpLCB0b2tlbnMuYWxpYXMpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRva2VucykpIHtcblx0XHRcdFx0cmV0dXJuIHRva2Vucy5tYXAoXy51dGlsLmVuY29kZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdG9rZW5zLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoL1xcdTAwYTAvZywgJyAnKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0dHlwZTogZnVuY3Rpb24gKG8pIHtcblx0XHRcdHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuXHRcdH0sXG5cblx0XHRvYmpJZDogZnVuY3Rpb24gKG9iaikge1xuXHRcdFx0aWYgKCFvYmpbJ19faWQnXSkge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAnX19pZCcsIHsgdmFsdWU6ICsrdW5pcXVlSWQgfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb2JqWydfX2lkJ107XG5cdFx0fSxcblxuXHRcdC8vIERlZXAgY2xvbmUgYSBsYW5ndWFnZSBkZWZpbml0aW9uIChlLmcuIHRvIGV4dGVuZCBpdClcblx0XHRjbG9uZTogZnVuY3Rpb24gZGVlcENsb25lKG8sIHZpc2l0ZWQpIHtcblx0XHRcdHZhciBjbG9uZSwgaWQsIHR5cGUgPSBfLnV0aWwudHlwZShvKTtcblx0XHRcdHZpc2l0ZWQgPSB2aXNpdGVkIHx8IHt9O1xuXG5cdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0Y2FzZSAnT2JqZWN0Jzpcblx0XHRcdFx0XHRpZCA9IF8udXRpbC5vYmpJZChvKTtcblx0XHRcdFx0XHRpZiAodmlzaXRlZFtpZF0pIHtcblx0XHRcdFx0XHRcdHJldHVybiB2aXNpdGVkW2lkXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2xvbmUgPSB7fTtcblx0XHRcdFx0XHR2aXNpdGVkW2lkXSA9IGNsb25lO1xuXG5cdFx0XHRcdFx0Zm9yICh2YXIga2V5IGluIG8pIHtcblx0XHRcdFx0XHRcdGlmIChvLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0XHRcdFx0XHRcdFx0Y2xvbmVba2V5XSA9IGRlZXBDbG9uZShvW2tleV0sIHZpc2l0ZWQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBjbG9uZTtcblxuXHRcdFx0XHRjYXNlICdBcnJheSc6XG5cdFx0XHRcdFx0aWQgPSBfLnV0aWwub2JqSWQobyk7XG5cdFx0XHRcdFx0aWYgKHZpc2l0ZWRbaWRdKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdmlzaXRlZFtpZF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNsb25lID0gW107XG5cdFx0XHRcdFx0dmlzaXRlZFtpZF0gPSBjbG9uZTtcblxuXHRcdFx0XHRcdG8uZm9yRWFjaChmdW5jdGlvbiAodiwgaSkge1xuXHRcdFx0XHRcdFx0Y2xvbmVbaV0gPSBkZWVwQ2xvbmUodiwgdmlzaXRlZCk7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRyZXR1cm4gY2xvbmU7XG5cblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRyZXR1cm4gbztcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0bGFuZ3VhZ2VzOiB7XG5cdFx0ZXh0ZW5kOiBmdW5jdGlvbiAoaWQsIHJlZGVmKSB7XG5cdFx0XHR2YXIgbGFuZyA9IF8udXRpbC5jbG9uZShfLmxhbmd1YWdlc1tpZF0pO1xuXG5cdFx0XHRmb3IgKHZhciBrZXkgaW4gcmVkZWYpIHtcblx0XHRcdFx0bGFuZ1trZXldID0gcmVkZWZba2V5XTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGxhbmc7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEluc2VydCBhIHRva2VuIGJlZm9yZSBhbm90aGVyIHRva2VuIGluIGEgbGFuZ3VhZ2UgbGl0ZXJhbFxuXHRcdCAqIEFzIHRoaXMgbmVlZHMgdG8gcmVjcmVhdGUgdGhlIG9iamVjdCAod2UgY2Fubm90IGFjdHVhbGx5IGluc2VydCBiZWZvcmUga2V5cyBpbiBvYmplY3QgbGl0ZXJhbHMpLFxuXHRcdCAqIHdlIGNhbm5vdCBqdXN0IHByb3ZpZGUgYW4gb2JqZWN0LCB3ZSBuZWVkIGFuIG9iamVjdCBhbmQgYSBrZXkuXG5cdFx0ICogQHBhcmFtIGluc2lkZSBUaGUga2V5IChvciBsYW5ndWFnZSBpZCkgb2YgdGhlIHBhcmVudFxuXHRcdCAqIEBwYXJhbSBiZWZvcmUgVGhlIGtleSB0byBpbnNlcnQgYmVmb3JlLlxuXHRcdCAqIEBwYXJhbSBpbnNlcnQgT2JqZWN0IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyB0byBpbnNlcnRcblx0XHQgKiBAcGFyYW0gcm9vdCBUaGUgb2JqZWN0IHRoYXQgY29udGFpbnMgYGluc2lkZWAuIElmIGVxdWFsIHRvIFByaXNtLmxhbmd1YWdlcywgaXQgY2FuIGJlIG9taXR0ZWQuXG5cdFx0ICovXG5cdFx0aW5zZXJ0QmVmb3JlOiBmdW5jdGlvbiAoaW5zaWRlLCBiZWZvcmUsIGluc2VydCwgcm9vdCkge1xuXHRcdFx0cm9vdCA9IHJvb3QgfHwgXy5sYW5ndWFnZXM7XG5cdFx0XHR2YXIgZ3JhbW1hciA9IHJvb3RbaW5zaWRlXTtcblx0XHRcdHZhciByZXQgPSB7fTtcblxuXHRcdFx0Zm9yICh2YXIgdG9rZW4gaW4gZ3JhbW1hcikge1xuXHRcdFx0XHRpZiAoZ3JhbW1hci5oYXNPd25Qcm9wZXJ0eSh0b2tlbikpIHtcblxuXHRcdFx0XHRcdGlmICh0b2tlbiA9PSBiZWZvcmUpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIG5ld1Rva2VuIGluIGluc2VydCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoaW5zZXJ0Lmhhc093blByb3BlcnR5KG5ld1Rva2VuKSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldFtuZXdUb2tlbl0gPSBpbnNlcnRbbmV3VG9rZW5dO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRG8gbm90IGluc2VydCB0b2tlbiB3aGljaCBhbHNvIG9jY3VyIGluIGluc2VydC4gU2VlICMxNTI1XG5cdFx0XHRcdFx0aWYgKCFpbnNlcnQuaGFzT3duUHJvcGVydHkodG9rZW4pKSB7XG5cdFx0XHRcdFx0XHRyZXRbdG9rZW5dID0gZ3JhbW1hclt0b2tlbl07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHZhciBvbGQgPSByb290W2luc2lkZV07XG5cdFx0XHRyb290W2luc2lkZV0gPSByZXQ7XG5cblx0XHRcdC8vIFVwZGF0ZSByZWZlcmVuY2VzIGluIG90aGVyIGxhbmd1YWdlIGRlZmluaXRpb25zXG5cdFx0XHRfLmxhbmd1YWdlcy5ERlMoXy5sYW5ndWFnZXMsIGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcblx0XHRcdFx0aWYgKHZhbHVlID09PSBvbGQgJiYga2V5ICE9IGluc2lkZSkge1xuXHRcdFx0XHRcdHRoaXNba2V5XSA9IHJldDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fSxcblxuXHRcdC8vIFRyYXZlcnNlIGEgbGFuZ3VhZ2UgZGVmaW5pdGlvbiB3aXRoIERlcHRoIEZpcnN0IFNlYXJjaFxuXHRcdERGUzogZnVuY3Rpb24gREZTKG8sIGNhbGxiYWNrLCB0eXBlLCB2aXNpdGVkKSB7XG5cdFx0XHR2aXNpdGVkID0gdmlzaXRlZCB8fCB7fTtcblxuXHRcdFx0dmFyIG9iaklkID0gXy51dGlsLm9iaklkO1xuXG5cdFx0XHRmb3IgKHZhciBpIGluIG8pIHtcblx0XHRcdFx0aWYgKG8uaGFzT3duUHJvcGVydHkoaSkpIHtcblx0XHRcdFx0XHRjYWxsYmFjay5jYWxsKG8sIGksIG9baV0sIHR5cGUgfHwgaSk7XG5cblx0XHRcdFx0XHR2YXIgcHJvcGVydHkgPSBvW2ldLFxuXHRcdFx0XHRcdCAgICBwcm9wZXJ0eVR5cGUgPSBfLnV0aWwudHlwZShwcm9wZXJ0eSk7XG5cblx0XHRcdFx0XHRpZiAocHJvcGVydHlUeXBlID09PSAnT2JqZWN0JyAmJiAhdmlzaXRlZFtvYmpJZChwcm9wZXJ0eSldKSB7XG5cdFx0XHRcdFx0XHR2aXNpdGVkW29iaklkKHByb3BlcnR5KV0gPSB0cnVlO1xuXHRcdFx0XHRcdFx0REZTKHByb3BlcnR5LCBjYWxsYmFjaywgbnVsbCwgdmlzaXRlZCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYgKHByb3BlcnR5VHlwZSA9PT0gJ0FycmF5JyAmJiAhdmlzaXRlZFtvYmpJZChwcm9wZXJ0eSldKSB7XG5cdFx0XHRcdFx0XHR2aXNpdGVkW29iaklkKHByb3BlcnR5KV0gPSB0cnVlO1xuXHRcdFx0XHRcdFx0REZTKHByb3BlcnR5LCBjYWxsYmFjaywgaSwgdmlzaXRlZCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRwbHVnaW5zOiB7fSxcblxuXHRoaWdobGlnaHRBbGw6IGZ1bmN0aW9uKGFzeW5jLCBjYWxsYmFjaykge1xuXHRcdF8uaGlnaGxpZ2h0QWxsVW5kZXIoZG9jdW1lbnQsIGFzeW5jLCBjYWxsYmFjayk7XG5cdH0sXG5cblx0aGlnaGxpZ2h0QWxsVW5kZXI6IGZ1bmN0aW9uKGNvbnRhaW5lciwgYXN5bmMsIGNhbGxiYWNrKSB7XG5cdFx0dmFyIGVudiA9IHtcblx0XHRcdGNhbGxiYWNrOiBjYWxsYmFjayxcblx0XHRcdHNlbGVjdG9yOiAnY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0sIFtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gY29kZSwgY29kZVtjbGFzcyo9XCJsYW5nLVwiXSwgW2NsYXNzKj1cImxhbmctXCJdIGNvZGUnXG5cdFx0fTtcblxuXHRcdF8uaG9va3MucnVuKCdiZWZvcmUtaGlnaGxpZ2h0YWxsJywgZW52KTtcblxuXHRcdHZhciBlbGVtZW50cyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKGVudi5zZWxlY3Rvcik7XG5cblx0XHRmb3IgKHZhciBpPTAsIGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50c1tpKytdOykge1xuXHRcdFx0Xy5oaWdobGlnaHRFbGVtZW50KGVsZW1lbnQsIGFzeW5jID09PSB0cnVlLCBlbnYuY2FsbGJhY2spO1xuXHRcdH1cblx0fSxcblxuXHRoaWdobGlnaHRFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50LCBhc3luYywgY2FsbGJhY2spIHtcblx0XHQvLyBGaW5kIGxhbmd1YWdlXG5cdFx0dmFyIGxhbmd1YWdlID0gJ25vbmUnLCBncmFtbWFyLCBwYXJlbnQgPSBlbGVtZW50O1xuXG5cdFx0d2hpbGUgKHBhcmVudCAmJiAhbGFuZy50ZXN0KHBhcmVudC5jbGFzc05hbWUpKSB7XG5cdFx0XHRwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTtcblx0XHR9XG5cblx0XHRpZiAocGFyZW50KSB7XG5cdFx0XHRsYW5ndWFnZSA9IChwYXJlbnQuY2xhc3NOYW1lLm1hdGNoKGxhbmcpIHx8IFssJ25vbmUnXSlbMV0udG9Mb3dlckNhc2UoKTtcblx0XHRcdGdyYW1tYXIgPSBfLmxhbmd1YWdlc1tsYW5ndWFnZV07XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IGxhbmd1YWdlIG9uIHRoZSBlbGVtZW50LCBpZiBub3QgcHJlc2VudFxuXHRcdGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWUucmVwbGFjZShsYW5nLCAnJykucmVwbGFjZSgvXFxzKy9nLCAnICcpICsgJyBsYW5ndWFnZS0nICsgbGFuZ3VhZ2U7XG5cblx0XHRpZiAoZWxlbWVudC5wYXJlbnROb2RlKSB7XG5cdFx0XHQvLyBTZXQgbGFuZ3VhZ2Ugb24gdGhlIHBhcmVudCwgZm9yIHN0eWxpbmdcblx0XHRcdHBhcmVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcblxuXHRcdFx0aWYgKC9wcmUvaS50ZXN0KHBhcmVudC5ub2RlTmFtZSkpIHtcblx0XHRcdFx0cGFyZW50LmNsYXNzTmFtZSA9IHBhcmVudC5jbGFzc05hbWUucmVwbGFjZShsYW5nLCAnJykucmVwbGFjZSgvXFxzKy9nLCAnICcpICsgJyBsYW5ndWFnZS0nICsgbGFuZ3VhZ2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dmFyIGNvZGUgPSBlbGVtZW50LnRleHRDb250ZW50O1xuXG5cdFx0dmFyIGVudiA9IHtcblx0XHRcdGVsZW1lbnQ6IGVsZW1lbnQsXG5cdFx0XHRsYW5ndWFnZTogbGFuZ3VhZ2UsXG5cdFx0XHRncmFtbWFyOiBncmFtbWFyLFxuXHRcdFx0Y29kZTogY29kZVxuXHRcdH07XG5cblx0XHR2YXIgaW5zZXJ0SGlnaGxpZ2h0ZWRDb2RlID0gZnVuY3Rpb24gKGhpZ2hsaWdodGVkQ29kZSkge1xuXHRcdFx0ZW52LmhpZ2hsaWdodGVkQ29kZSA9IGhpZ2hsaWdodGVkQ29kZTtcblxuXHRcdFx0Xy5ob29rcy5ydW4oJ2JlZm9yZS1pbnNlcnQnLCBlbnYpO1xuXG5cdFx0XHRlbnYuZWxlbWVudC5pbm5lckhUTUwgPSBlbnYuaGlnaGxpZ2h0ZWRDb2RlO1xuXG5cdFx0XHRfLmhvb2tzLnJ1bignYWZ0ZXItaGlnaGxpZ2h0JywgZW52KTtcblx0XHRcdF8uaG9va3MucnVuKCdjb21wbGV0ZScsIGVudik7XG5cdFx0XHRjYWxsYmFjayAmJiBjYWxsYmFjay5jYWxsKGVudi5lbGVtZW50KTtcblx0XHR9XG5cblx0XHRfLmhvb2tzLnJ1bignYmVmb3JlLXNhbml0eS1jaGVjaycsIGVudik7XG5cblx0XHRpZiAoIWVudi5jb2RlKSB7XG5cdFx0XHRfLmhvb2tzLnJ1bignY29tcGxldGUnLCBlbnYpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdF8uaG9va3MucnVuKCdiZWZvcmUtaGlnaGxpZ2h0JywgZW52KTtcblxuXHRcdGlmICghZW52LmdyYW1tYXIpIHtcblx0XHRcdGluc2VydEhpZ2hsaWdodGVkQ29kZShfLnV0aWwuZW5jb2RlKGVudi5jb2RlKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKGFzeW5jICYmIF9zZWxmLldvcmtlcikge1xuXHRcdFx0dmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoXy5maWxlbmFtZSk7XG5cblx0XHRcdHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHtcblx0XHRcdFx0aW5zZXJ0SGlnaGxpZ2h0ZWRDb2RlKGV2dC5kYXRhKTtcblx0XHRcdH07XG5cblx0XHRcdHdvcmtlci5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdGxhbmd1YWdlOiBlbnYubGFuZ3VhZ2UsXG5cdFx0XHRcdGNvZGU6IGVudi5jb2RlLFxuXHRcdFx0XHRpbW1lZGlhdGVDbG9zZTogdHJ1ZVxuXHRcdFx0fSkpO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdGluc2VydEhpZ2hsaWdodGVkQ29kZShfLmhpZ2hsaWdodChlbnYuY29kZSwgZW52LmdyYW1tYXIsIGVudi5sYW5ndWFnZSkpO1xuXHRcdH1cblx0fSxcblxuXHRoaWdobGlnaHQ6IGZ1bmN0aW9uICh0ZXh0LCBncmFtbWFyLCBsYW5ndWFnZSkge1xuXHRcdHZhciBlbnYgPSB7XG5cdFx0XHRjb2RlOiB0ZXh0LFxuXHRcdFx0Z3JhbW1hcjogZ3JhbW1hcixcblx0XHRcdGxhbmd1YWdlOiBsYW5ndWFnZVxuXHRcdH07XG5cdFx0Xy5ob29rcy5ydW4oJ2JlZm9yZS10b2tlbml6ZScsIGVudik7XG5cdFx0ZW52LnRva2VucyA9IF8udG9rZW5pemUoZW52LmNvZGUsIGVudi5ncmFtbWFyKTtcblx0XHRfLmhvb2tzLnJ1bignYWZ0ZXItdG9rZW5pemUnLCBlbnYpO1xuXHRcdHJldHVybiBUb2tlbi5zdHJpbmdpZnkoXy51dGlsLmVuY29kZShlbnYudG9rZW5zKSwgZW52Lmxhbmd1YWdlKTtcblx0fSxcblxuXHRtYXRjaEdyYW1tYXI6IGZ1bmN0aW9uICh0ZXh0LCBzdHJhcnIsIGdyYW1tYXIsIGluZGV4LCBzdGFydFBvcywgb25lc2hvdCwgdGFyZ2V0KSB7XG5cdFx0Zm9yICh2YXIgdG9rZW4gaW4gZ3JhbW1hcikge1xuXHRcdFx0aWYoIWdyYW1tYXIuaGFzT3duUHJvcGVydHkodG9rZW4pIHx8ICFncmFtbWFyW3Rva2VuXSkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRva2VuID09IHRhcmdldCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHZhciBwYXR0ZXJucyA9IGdyYW1tYXJbdG9rZW5dO1xuXHRcdFx0cGF0dGVybnMgPSAoXy51dGlsLnR5cGUocGF0dGVybnMpID09PSBcIkFycmF5XCIpID8gcGF0dGVybnMgOiBbcGF0dGVybnNdO1xuXG5cdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IHBhdHRlcm5zLmxlbmd0aDsgKytqKSB7XG5cdFx0XHRcdHZhciBwYXR0ZXJuID0gcGF0dGVybnNbal0sXG5cdFx0XHRcdFx0aW5zaWRlID0gcGF0dGVybi5pbnNpZGUsXG5cdFx0XHRcdFx0bG9va2JlaGluZCA9ICEhcGF0dGVybi5sb29rYmVoaW5kLFxuXHRcdFx0XHRcdGdyZWVkeSA9ICEhcGF0dGVybi5ncmVlZHksXG5cdFx0XHRcdFx0bG9va2JlaGluZExlbmd0aCA9IDAsXG5cdFx0XHRcdFx0YWxpYXMgPSBwYXR0ZXJuLmFsaWFzO1xuXG5cdFx0XHRcdGlmIChncmVlZHkgJiYgIXBhdHRlcm4ucGF0dGVybi5nbG9iYWwpIHtcblx0XHRcdFx0XHQvLyBXaXRob3V0IHRoZSBnbG9iYWwgZmxhZywgbGFzdEluZGV4IHdvbid0IHdvcmtcblx0XHRcdFx0XHR2YXIgZmxhZ3MgPSBwYXR0ZXJuLnBhdHRlcm4udG9TdHJpbmcoKS5tYXRjaCgvW2ltdXldKiQvKVswXTtcblx0XHRcdFx0XHRwYXR0ZXJuLnBhdHRlcm4gPSBSZWdFeHAocGF0dGVybi5wYXR0ZXJuLnNvdXJjZSwgZmxhZ3MgKyBcImdcIik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRwYXR0ZXJuID0gcGF0dGVybi5wYXR0ZXJuIHx8IHBhdHRlcm47XG5cblx0XHRcdFx0Ly8gRG9u4oCZdCBjYWNoZSBsZW5ndGggYXMgaXQgY2hhbmdlcyBkdXJpbmcgdGhlIGxvb3Bcblx0XHRcdFx0Zm9yICh2YXIgaSA9IGluZGV4LCBwb3MgPSBzdGFydFBvczsgaSA8IHN0cmFyci5sZW5ndGg7IHBvcyArPSBzdHJhcnJbaV0ubGVuZ3RoLCArK2kpIHtcblxuXHRcdFx0XHRcdHZhciBzdHIgPSBzdHJhcnJbaV07XG5cblx0XHRcdFx0XHRpZiAoc3RyYXJyLmxlbmd0aCA+IHRleHQubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQvLyBTb21ldGhpbmcgd2VudCB0ZXJyaWJseSB3cm9uZywgQUJPUlQsIEFCT1JUIVxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChzdHIgaW5zdGFuY2VvZiBUb2tlbikge1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGdyZWVkeSAmJiBpICE9IHN0cmFyci5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0XHRwYXR0ZXJuLmxhc3RJbmRleCA9IHBvcztcblx0XHRcdFx0XHRcdHZhciBtYXRjaCA9IHBhdHRlcm4uZXhlYyh0ZXh0KTtcblx0XHRcdFx0XHRcdGlmICghbWF0Y2gpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHZhciBmcm9tID0gbWF0Y2guaW5kZXggKyAobG9va2JlaGluZCA/IG1hdGNoWzFdLmxlbmd0aCA6IDApLFxuXHRcdFx0XHRcdFx0ICAgIHRvID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgsXG5cdFx0XHRcdFx0XHQgICAgayA9IGksXG5cdFx0XHRcdFx0XHQgICAgcCA9IHBvcztcblxuXHRcdFx0XHRcdFx0Zm9yICh2YXIgbGVuID0gc3RyYXJyLmxlbmd0aDsgayA8IGxlbiAmJiAocCA8IHRvIHx8ICghc3RyYXJyW2tdLnR5cGUgJiYgIXN0cmFycltrIC0gMV0uZ3JlZWR5KSk7ICsraykge1xuXHRcdFx0XHRcdFx0XHRwICs9IHN0cmFycltrXS5sZW5ndGg7XG5cdFx0XHRcdFx0XHRcdC8vIE1vdmUgdGhlIGluZGV4IGkgdG8gdGhlIGVsZW1lbnQgaW4gc3RyYXJyIHRoYXQgaXMgY2xvc2VzdCB0byBmcm9tXG5cdFx0XHRcdFx0XHRcdGlmIChmcm9tID49IHApIHtcblx0XHRcdFx0XHRcdFx0XHQrK2k7XG5cdFx0XHRcdFx0XHRcdFx0cG9zID0gcDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBJZiBzdHJhcnJbaV0gaXMgYSBUb2tlbiwgdGhlbiB0aGUgbWF0Y2ggc3RhcnRzIGluc2lkZSBhbm90aGVyIFRva2VuLCB3aGljaCBpcyBpbnZhbGlkXG5cdFx0XHRcdFx0XHRpZiAoc3RyYXJyW2ldIGluc3RhbmNlb2YgVG9rZW4pIHtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE51bWJlciBvZiB0b2tlbnMgdG8gZGVsZXRlIGFuZCByZXBsYWNlIHdpdGggdGhlIG5ldyBtYXRjaFxuXHRcdFx0XHRcdFx0ZGVsTnVtID0gayAtIGk7XG5cdFx0XHRcdFx0XHRzdHIgPSB0ZXh0LnNsaWNlKHBvcywgcCk7XG5cdFx0XHRcdFx0XHRtYXRjaC5pbmRleCAtPSBwb3M7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHBhdHRlcm4ubGFzdEluZGV4ID0gMDtcblxuXHRcdFx0XHRcdFx0dmFyIG1hdGNoID0gcGF0dGVybi5leGVjKHN0ciksXG5cdFx0XHRcdFx0XHRcdGRlbE51bSA9IDE7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKCFtYXRjaCkge1xuXHRcdFx0XHRcdFx0aWYgKG9uZXNob3QpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmKGxvb2tiZWhpbmQpIHtcblx0XHRcdFx0XHRcdGxvb2tiZWhpbmRMZW5ndGggPSBtYXRjaFsxXSA/IG1hdGNoWzFdLmxlbmd0aCA6IDA7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dmFyIGZyb20gPSBtYXRjaC5pbmRleCArIGxvb2tiZWhpbmRMZW5ndGgsXG5cdFx0XHRcdFx0ICAgIG1hdGNoID0gbWF0Y2hbMF0uc2xpY2UobG9va2JlaGluZExlbmd0aCksXG5cdFx0XHRcdFx0ICAgIHRvID0gZnJvbSArIG1hdGNoLmxlbmd0aCxcblx0XHRcdFx0XHQgICAgYmVmb3JlID0gc3RyLnNsaWNlKDAsIGZyb20pLFxuXHRcdFx0XHRcdCAgICBhZnRlciA9IHN0ci5zbGljZSh0byk7XG5cblx0XHRcdFx0XHR2YXIgYXJncyA9IFtpLCBkZWxOdW1dO1xuXG5cdFx0XHRcdFx0aWYgKGJlZm9yZSkge1xuXHRcdFx0XHRcdFx0KytpO1xuXHRcdFx0XHRcdFx0cG9zICs9IGJlZm9yZS5sZW5ndGg7XG5cdFx0XHRcdFx0XHRhcmdzLnB1c2goYmVmb3JlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR2YXIgd3JhcHBlZCA9IG5ldyBUb2tlbih0b2tlbiwgaW5zaWRlPyBfLnRva2VuaXplKG1hdGNoLCBpbnNpZGUpIDogbWF0Y2gsIGFsaWFzLCBtYXRjaCwgZ3JlZWR5KTtcblxuXHRcdFx0XHRcdGFyZ3MucHVzaCh3cmFwcGVkKTtcblxuXHRcdFx0XHRcdGlmIChhZnRlcikge1xuXHRcdFx0XHRcdFx0YXJncy5wdXNoKGFmdGVyKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KHN0cmFyciwgYXJncyk7XG5cblx0XHRcdFx0XHRpZiAoZGVsTnVtICE9IDEpXG5cdFx0XHRcdFx0XHRfLm1hdGNoR3JhbW1hcih0ZXh0LCBzdHJhcnIsIGdyYW1tYXIsIGksIHBvcywgdHJ1ZSwgdG9rZW4pO1xuXG5cdFx0XHRcdFx0aWYgKG9uZXNob3QpXG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHR0b2tlbml6ZTogZnVuY3Rpb24odGV4dCwgZ3JhbW1hcikge1xuXHRcdHZhciBzdHJhcnIgPSBbdGV4dF07XG5cblx0XHR2YXIgcmVzdCA9IGdyYW1tYXIucmVzdDtcblxuXHRcdGlmIChyZXN0KSB7XG5cdFx0XHRmb3IgKHZhciB0b2tlbiBpbiByZXN0KSB7XG5cdFx0XHRcdGdyYW1tYXJbdG9rZW5dID0gcmVzdFt0b2tlbl07XG5cdFx0XHR9XG5cblx0XHRcdGRlbGV0ZSBncmFtbWFyLnJlc3Q7XG5cdFx0fVxuXG5cdFx0Xy5tYXRjaEdyYW1tYXIodGV4dCwgc3RyYXJyLCBncmFtbWFyLCAwLCAwLCBmYWxzZSk7XG5cblx0XHRyZXR1cm4gc3RyYXJyO1xuXHR9LFxuXG5cdGhvb2tzOiB7XG5cdFx0YWxsOiB7fSxcblxuXHRcdGFkZDogZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrKSB7XG5cdFx0XHR2YXIgaG9va3MgPSBfLmhvb2tzLmFsbDtcblxuXHRcdFx0aG9va3NbbmFtZV0gPSBob29rc1tuYW1lXSB8fCBbXTtcblxuXHRcdFx0aG9va3NbbmFtZV0ucHVzaChjYWxsYmFjayk7XG5cdFx0fSxcblxuXHRcdHJ1bjogZnVuY3Rpb24gKG5hbWUsIGVudikge1xuXHRcdFx0dmFyIGNhbGxiYWNrcyA9IF8uaG9va3MuYWxsW25hbWVdO1xuXG5cdFx0XHRpZiAoIWNhbGxiYWNrcyB8fCAhY2FsbGJhY2tzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGZvciAodmFyIGk9MCwgY2FsbGJhY2s7IGNhbGxiYWNrID0gY2FsbGJhY2tzW2krK107KSB7XG5cdFx0XHRcdGNhbGxiYWNrKGVudik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdFRva2VuOiBUb2tlblxufTtcblxuX3NlbGYuUHJpc20gPSBfO1xuXG5mdW5jdGlvbiBUb2tlbih0eXBlLCBjb250ZW50LCBhbGlhcywgbWF0Y2hlZFN0ciwgZ3JlZWR5KSB7XG5cdHRoaXMudHlwZSA9IHR5cGU7XG5cdHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XG5cdHRoaXMuYWxpYXMgPSBhbGlhcztcblx0Ly8gQ29weSBvZiB0aGUgZnVsbCBzdHJpbmcgdGhpcyB0b2tlbiB3YXMgY3JlYXRlZCBmcm9tXG5cdHRoaXMubGVuZ3RoID0gKG1hdGNoZWRTdHIgfHwgXCJcIikubGVuZ3RofDA7XG5cdHRoaXMuZ3JlZWR5ID0gISFncmVlZHk7XG59XG5cblRva2VuLnN0cmluZ2lmeSA9IGZ1bmN0aW9uKG8sIGxhbmd1YWdlKSB7XG5cdGlmICh0eXBlb2YgbyA9PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0aWYgKEFycmF5LmlzQXJyYXkobykpIHtcblx0XHRyZXR1cm4gby5tYXAoZnVuY3Rpb24oZWxlbWVudCkge1xuXHRcdFx0cmV0dXJuIFRva2VuLnN0cmluZ2lmeShlbGVtZW50LCBsYW5ndWFnZSk7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHR2YXIgZW52ID0ge1xuXHRcdHR5cGU6IG8udHlwZSxcblx0XHRjb250ZW50OiBUb2tlbi5zdHJpbmdpZnkoby5jb250ZW50LCBsYW5ndWFnZSksXG5cdFx0dGFnOiAnc3BhbicsXG5cdFx0Y2xhc3NlczogWyd0b2tlbicsIG8udHlwZV0sXG5cdFx0YXR0cmlidXRlczoge30sXG5cdFx0bGFuZ3VhZ2U6IGxhbmd1YWdlXG5cdH07XG5cblx0aWYgKG8uYWxpYXMpIHtcblx0XHR2YXIgYWxpYXNlcyA9IEFycmF5LmlzQXJyYXkoby5hbGlhcykgPyBvLmFsaWFzIDogW28uYWxpYXNdO1xuXHRcdEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGVudi5jbGFzc2VzLCBhbGlhc2VzKTtcblx0fVxuXG5cdF8uaG9va3MucnVuKCd3cmFwJywgZW52KTtcblxuXHR2YXIgYXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKGVudi5hdHRyaWJ1dGVzKS5tYXAoZnVuY3Rpb24obmFtZSkge1xuXHRcdHJldHVybiBuYW1lICsgJz1cIicgKyAoZW52LmF0dHJpYnV0ZXNbbmFtZV0gfHwgJycpLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKSArICdcIic7XG5cdH0pLmpvaW4oJyAnKTtcblxuXHRyZXR1cm4gJzwnICsgZW52LnRhZyArICcgY2xhc3M9XCInICsgZW52LmNsYXNzZXMuam9pbignICcpICsgJ1wiJyArIChhdHRyaWJ1dGVzID8gJyAnICsgYXR0cmlidXRlcyA6ICcnKSArICc+JyArIGVudi5jb250ZW50ICsgJzwvJyArIGVudi50YWcgKyAnPic7XG59O1xuXG5pZiAoIV9zZWxmLmRvY3VtZW50KSB7XG5cdGlmICghX3NlbGYuYWRkRXZlbnRMaXN0ZW5lcikge1xuXHRcdC8vIGluIE5vZGUuanNcblx0XHRyZXR1cm4gXztcblx0fVxuXG5cdGlmICghXy5kaXNhYmxlV29ya2VyTWVzc2FnZUhhbmRsZXIpIHtcblx0XHQvLyBJbiB3b3JrZXJcblx0XHRfc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24gKGV2dCkge1xuXHRcdFx0dmFyIG1lc3NhZ2UgPSBKU09OLnBhcnNlKGV2dC5kYXRhKSxcblx0XHRcdFx0bGFuZyA9IG1lc3NhZ2UubGFuZ3VhZ2UsXG5cdFx0XHRcdGNvZGUgPSBtZXNzYWdlLmNvZGUsXG5cdFx0XHRcdGltbWVkaWF0ZUNsb3NlID0gbWVzc2FnZS5pbW1lZGlhdGVDbG9zZTtcblxuXHRcdFx0X3NlbGYucG9zdE1lc3NhZ2UoXy5oaWdobGlnaHQoY29kZSwgXy5sYW5ndWFnZXNbbGFuZ10sIGxhbmcpKTtcblx0XHRcdGlmIChpbW1lZGlhdGVDbG9zZSkge1xuXHRcdFx0XHRfc2VsZi5jbG9zZSgpO1xuXHRcdFx0fVxuXHRcdH0sIGZhbHNlKTtcblx0fVxuXG5cdHJldHVybiBfO1xufVxuXG4vL0dldCBjdXJyZW50IHNjcmlwdCBhbmQgaGlnaGxpZ2h0XG52YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdCB8fCBbXS5zbGljZS5jYWxsKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpKS5wb3AoKTtcblxuaWYgKHNjcmlwdCkge1xuXHRfLmZpbGVuYW1lID0gc2NyaXB0LnNyYztcblxuXHRpZiAoIV8ubWFudWFsICYmICFzY3JpcHQuaGFzQXR0cmlidXRlKCdkYXRhLW1hbnVhbCcpKSB7XG5cdFx0aWYoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gXCJsb2FkaW5nXCIpIHtcblx0XHRcdGlmICh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG5cdFx0XHRcdHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoXy5oaWdobGlnaHRBbGwpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2luZG93LnNldFRpbWVvdXQoXy5oaWdobGlnaHRBbGwsIDE2KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgXy5oaWdobGlnaHRBbGwpO1xuXHRcdH1cblx0fVxufVxuXG5yZXR1cm4gXztcblxufSkoX3NlbGYpO1xuXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0bW9kdWxlLmV4cG9ydHMgPSBQcmlzbTtcbn1cblxuLy8gaGFjayBmb3IgY29tcG9uZW50cyB0byB3b3JrIGNvcnJlY3RseSBpbiBub2RlLmpzXG5pZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Z2xvYmFsLlByaXNtID0gUHJpc207XG59XG5cblxuLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBCZWdpbiBwcmlzbS1tYXJrdXAuanNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cblxuUHJpc20ubGFuZ3VhZ2VzLm1hcmt1cCA9IHtcblx0J2NvbW1lbnQnOiAvPCEtLVtcXHNcXFNdKj8tLT4vLFxuXHQncHJvbG9nJzogLzxcXD9bXFxzXFxTXSs/XFw/Pi8sXG5cdCdkb2N0eXBlJzogLzwhRE9DVFlQRVtcXHNcXFNdKz8+L2ksXG5cdCdjZGF0YSc6IC88IVxcW0NEQVRBXFxbW1xcc1xcU10qP11dPi9pLFxuXHQndGFnJzoge1xuXHRcdHBhdHRlcm46IC88XFwvPyg/IVxcZClbXlxccz5cXC89JDwlXSsoPzpcXHMoPzpcXHMqW15cXHM+XFwvPV0rKD86XFxzKj1cXHMqKD86XCJbXlwiXSpcInwnW14nXSonfFteXFxzJ1wiPj1dKyg/PVtcXHM+XSkpfCg/PVtcXHMvPl0pKSkrKT9cXHMqXFwvPz4vaSxcblx0XHRncmVlZHk6IHRydWUsXG5cdFx0aW5zaWRlOiB7XG5cdFx0XHQndGFnJzoge1xuXHRcdFx0XHRwYXR0ZXJuOiAvXjxcXC8/W15cXHM+XFwvXSsvaSxcblx0XHRcdFx0aW5zaWRlOiB7XG5cdFx0XHRcdFx0J3B1bmN0dWF0aW9uJzogL148XFwvPy8sXG5cdFx0XHRcdFx0J25hbWVzcGFjZSc6IC9eW15cXHM+XFwvOl0rOi9cblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdCdhdHRyLXZhbHVlJzoge1xuXHRcdFx0XHRwYXR0ZXJuOiAvPVxccyooPzpcIlteXCJdKlwifCdbXiddKid8W15cXHMnXCI+PV0rKS9pLFxuXHRcdFx0XHRpbnNpZGU6IHtcblx0XHRcdFx0XHQncHVuY3R1YXRpb24nOiBbXG5cdFx0XHRcdFx0XHQvXj0vLFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRwYXR0ZXJuOiAvXihcXHMqKVtcIiddfFtcIiddJC8sXG5cdFx0XHRcdFx0XHRcdGxvb2tiZWhpbmQ6IHRydWVcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRdXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQncHVuY3R1YXRpb24nOiAvXFwvPz4vLFxuXHRcdFx0J2F0dHItbmFtZSc6IHtcblx0XHRcdFx0cGF0dGVybjogL1teXFxzPlxcL10rLyxcblx0XHRcdFx0aW5zaWRlOiB7XG5cdFx0XHRcdFx0J25hbWVzcGFjZSc6IC9eW15cXHM+XFwvOl0rOi9cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fVxuXHR9LFxuXHQnZW50aXR5JzogLyYjP1tcXGRhLXpdezEsOH07L2lcbn07XG5cblByaXNtLmxhbmd1YWdlcy5tYXJrdXBbJ3RhZyddLmluc2lkZVsnYXR0ci12YWx1ZSddLmluc2lkZVsnZW50aXR5J10gPVxuXHRQcmlzbS5sYW5ndWFnZXMubWFya3VwWydlbnRpdHknXTtcblxuLy8gUGx1Z2luIHRvIG1ha2UgZW50aXR5IHRpdGxlIHNob3cgdGhlIHJlYWwgZW50aXR5LCBpZGVhIGJ5IFJvbWFuIEtvbWFyb3ZcblByaXNtLmhvb2tzLmFkZCgnd3JhcCcsIGZ1bmN0aW9uKGVudikge1xuXG5cdGlmIChlbnYudHlwZSA9PT0gJ2VudGl0eScpIHtcblx0XHRlbnYuYXR0cmlidXRlc1sndGl0bGUnXSA9IGVudi5jb250ZW50LnJlcGxhY2UoLyZhbXA7LywgJyYnKTtcblx0fVxufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShQcmlzbS5sYW5ndWFnZXMubWFya3VwLnRhZywgJ2FkZElubGluZWQnLCB7XG5cdC8qKlxuXHQgKiBBZGRzIGFuIGlubGluZWQgbGFuZ3VhZ2UgdG8gbWFya3VwLlxuXHQgKlxuXHQgKiBBbiBleGFtcGxlIG9mIGFuIGlubGluZWQgbGFuZ3VhZ2UgaXMgQ1NTIHdpdGggYDxzdHlsZT5gIHRhZ3MuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0YWdOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWcgdGhhdCBjb250YWlucyB0aGUgaW5saW5lZCBsYW5ndWFnZS4gVGhpcyBuYW1lIHdpbGwgYmUgdHJlYXRlZCBhc1xuXHQgKiBjYXNlIGluc2Vuc2l0aXZlLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbGFuZyBUaGUgbGFuZ3VhZ2Uga2V5LlxuXHQgKiBAZXhhbXBsZVxuXHQgKiBhZGRJbmxpbmVkKCdzdHlsZScsICdjc3MnKTtcblx0ICovXG5cdHZhbHVlOiBmdW5jdGlvbiBhZGRJbmxpbmVkKHRhZ05hbWUsIGxhbmcpIHtcblx0XHR2YXIgaW5jbHVkZWRDZGF0YUluc2lkZSA9IHt9O1xuXHRcdGluY2x1ZGVkQ2RhdGFJbnNpZGVbJ2xhbmd1YWdlLScgKyBsYW5nXSA9IHtcblx0XHRcdHBhdHRlcm46IC8oXjwhXFxbQ0RBVEFcXFspW1xcc1xcU10rPyg/PVxcXVxcXT4kKS9pLFxuXHRcdFx0bG9va2JlaGluZDogdHJ1ZSxcblx0XHRcdGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzW2xhbmddXG5cdFx0fTtcblx0XHRpbmNsdWRlZENkYXRhSW5zaWRlWydjZGF0YSddID0gL148IVxcW0NEQVRBXFxbfFxcXVxcXT4kL2k7XG5cblx0XHR2YXIgaW5zaWRlID0ge1xuXHRcdFx0J2luY2x1ZGVkLWNkYXRhJzoge1xuXHRcdFx0XHRwYXR0ZXJuOiAvPCFcXFtDREFUQVxcW1tcXHNcXFNdKj9cXF1cXF0+L2ksXG5cdFx0XHRcdGluc2lkZTogaW5jbHVkZWRDZGF0YUluc2lkZVxuXHRcdFx0fVxuXHRcdH07XG5cdFx0aW5zaWRlWydsYW5ndWFnZS0nICsgbGFuZ10gPSB7XG5cdFx0XHRwYXR0ZXJuOiAvW1xcc1xcU10rLyxcblx0XHRcdGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzW2xhbmddXG5cdFx0fTtcblxuXHRcdHZhciBkZWYgPSB7fTtcblx0XHRkZWZbdGFnTmFtZV0gPSB7XG5cdFx0XHRwYXR0ZXJuOiBSZWdFeHAoLyg8X19bXFxzXFxTXSo/PikoPzo8IVxcW0NEQVRBXFxbW1xcc1xcU10qP1xcXVxcXT5cXHMqfFtcXHNcXFNdKSo/KD89PFxcL19fPikvLnNvdXJjZS5yZXBsYWNlKC9fXy9nLCB0YWdOYW1lKSwgJ2knKSxcblx0XHRcdGxvb2tiZWhpbmQ6IHRydWUsXG5cdFx0XHRncmVlZHk6IHRydWUsXG5cdFx0XHRpbnNpZGU6IGluc2lkZVxuXHRcdH07XG5cblx0XHRQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdtYXJrdXAnLCAnY2RhdGEnLCBkZWYpO1xuXHR9XG59KTtcblxuUHJpc20ubGFuZ3VhZ2VzLnhtbCA9IFByaXNtLmxhbmd1YWdlcy5leHRlbmQoJ21hcmt1cCcsIHt9KTtcblByaXNtLmxhbmd1YWdlcy5odG1sID0gUHJpc20ubGFuZ3VhZ2VzLm1hcmt1cDtcblByaXNtLmxhbmd1YWdlcy5tYXRobWwgPSBQcmlzbS5sYW5ndWFnZXMubWFya3VwO1xuUHJpc20ubGFuZ3VhZ2VzLnN2ZyA9IFByaXNtLmxhbmd1YWdlcy5tYXJrdXA7XG5cblxuLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBCZWdpbiBwcmlzbS1jc3MuanNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cblxuKGZ1bmN0aW9uIChQcmlzbSkge1xuXG5cdHZhciBzdHJpbmcgPSAvKFwifCcpKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS87XG5cblx0UHJpc20ubGFuZ3VhZ2VzLmNzcyA9IHtcblx0XHQnY29tbWVudCc6IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvLyxcblx0XHQnYXRydWxlJzoge1xuXHRcdFx0cGF0dGVybjogL0BbXFx3LV0rW1xcc1xcU10qPyg/Ojt8KD89XFxzKlxceykpLyxcblx0XHRcdGluc2lkZToge1xuXHRcdFx0XHQncnVsZSc6IC9AW1xcdy1dKy9cblx0XHRcdFx0Ly8gU2VlIHJlc3QgYmVsb3dcblx0XHRcdH1cblx0XHR9LFxuXHRcdCd1cmwnOiB7XG5cdFx0XHRwYXR0ZXJuOiBSZWdFeHAoJ3VybFxcXFwoKD86JyArIHN0cmluZy5zb3VyY2UgKyAnfFteXFxuXFxyKCldKilcXFxcKScsICdpJyksXG5cdFx0XHRpbnNpZGU6IHtcblx0XHRcdFx0J2Z1bmN0aW9uJzogL151cmwvaSxcblx0XHRcdFx0J3B1bmN0dWF0aW9uJzogL15cXCh8XFwpJC9cblx0XHRcdH1cblx0XHR9LFxuXHRcdCdzZWxlY3Rvcic6IFJlZ0V4cCgnW157fVxcXFxzXSg/Oltee307XCJcXCddfCcgKyBzdHJpbmcuc291cmNlICsgJykqPyg/PVxcXFxzKlxcXFx7KScpLFxuXHRcdCdzdHJpbmcnOiB7XG5cdFx0XHRwYXR0ZXJuOiBzdHJpbmcsXG5cdFx0XHRncmVlZHk6IHRydWVcblx0XHR9LFxuXHRcdCdwcm9wZXJ0eSc6IC9bLV9hLXpcXHhBMC1cXHVGRkZGXVstXFx3XFx4QTAtXFx1RkZGRl0qKD89XFxzKjopL2ksXG5cdFx0J2ltcG9ydGFudCc6IC8haW1wb3J0YW50XFxiL2ksXG5cdFx0J2Z1bmN0aW9uJzogL1stYS16MC05XSsoPz1cXCgpL2ksXG5cdFx0J3B1bmN0dWF0aW9uJzogL1soKXt9OzosXS9cblx0fTtcblxuXHRQcmlzbS5sYW5ndWFnZXMuY3NzWydhdHJ1bGUnXS5pbnNpZGUucmVzdCA9IFByaXNtLmxhbmd1YWdlcy5jc3M7XG5cblx0dmFyIG1hcmt1cCA9IFByaXNtLmxhbmd1YWdlcy5tYXJrdXA7XG5cdGlmIChtYXJrdXApIHtcblx0XHRtYXJrdXAudGFnLmFkZElubGluZWQoJ3N0eWxlJywgJ2NzcycpO1xuXG5cdFx0UHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnaW5zaWRlJywgJ2F0dHItdmFsdWUnLCB7XG5cdFx0XHQnc3R5bGUtYXR0cic6IHtcblx0XHRcdFx0cGF0dGVybjogL1xccypzdHlsZT0oXCJ8JykoPzpcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMS9pLFxuXHRcdFx0XHRpbnNpZGU6IHtcblx0XHRcdFx0XHQnYXR0ci1uYW1lJzoge1xuXHRcdFx0XHRcdFx0cGF0dGVybjogL15cXHMqc3R5bGUvaSxcblx0XHRcdFx0XHRcdGluc2lkZTogbWFya3VwLnRhZy5pbnNpZGVcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCdwdW5jdHVhdGlvbic6IC9eXFxzKj1cXHMqWydcIl18WydcIl1cXHMqJC8sXG5cdFx0XHRcdFx0J2F0dHItdmFsdWUnOiB7XG5cdFx0XHRcdFx0XHRwYXR0ZXJuOiAvLisvaSxcblx0XHRcdFx0XHRcdGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzLmNzc1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0YWxpYXM6ICdsYW5ndWFnZS1jc3MnXG5cdFx0XHR9XG5cdFx0fSwgbWFya3VwLnRhZyk7XG5cdH1cblxufShQcmlzbSkpO1xuXG5cbi8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQmVnaW4gcHJpc20tY2xpa2UuanNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cblxuUHJpc20ubGFuZ3VhZ2VzLmNsaWtlID0ge1xuXHQnY29tbWVudCc6IFtcblx0XHR7XG5cdFx0XHRwYXR0ZXJuOiAvKF58W15cXFxcXSlcXC9cXCpbXFxzXFxTXSo/KD86XFwqXFwvfCQpLyxcblx0XHRcdGxvb2tiZWhpbmQ6IHRydWVcblx0XHR9LFxuXHRcdHtcblx0XHRcdHBhdHRlcm46IC8oXnxbXlxcXFw6XSlcXC9cXC8uKi8sXG5cdFx0XHRsb29rYmVoaW5kOiB0cnVlLFxuXHRcdFx0Z3JlZWR5OiB0cnVlXG5cdFx0fVxuXHRdLFxuXHQnc3RyaW5nJzoge1xuXHRcdHBhdHRlcm46IC8oW1wiJ10pKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sXG5cdFx0Z3JlZWR5OiB0cnVlXG5cdH0sXG5cdCdjbGFzcy1uYW1lJzoge1xuXHRcdHBhdHRlcm46IC8oKD86XFxiKD86Y2xhc3N8aW50ZXJmYWNlfGV4dGVuZHN8aW1wbGVtZW50c3x0cmFpdHxpbnN0YW5jZW9mfG5ldylcXHMrKXwoPzpjYXRjaFxccytcXCgpKVtcXHcuXFxcXF0rL2ksXG5cdFx0bG9va2JlaGluZDogdHJ1ZSxcblx0XHRpbnNpZGU6IHtcblx0XHRcdHB1bmN0dWF0aW9uOiAvWy5cXFxcXS9cblx0XHR9XG5cdH0sXG5cdCdrZXl3b3JkJzogL1xcYig/OmlmfGVsc2V8d2hpbGV8ZG98Zm9yfHJldHVybnxpbnxpbnN0YW5jZW9mfGZ1bmN0aW9ufG5ld3x0cnl8dGhyb3d8Y2F0Y2h8ZmluYWxseXxudWxsfGJyZWFrfGNvbnRpbnVlKVxcYi8sXG5cdCdib29sZWFuJzogL1xcYig/OnRydWV8ZmFsc2UpXFxiLyxcblx0J2Z1bmN0aW9uJzogL1xcdysoPz1cXCgpLyxcblx0J251bWJlcic6IC9cXGIweFtcXGRhLWZdK1xcYnwoPzpcXGJcXGQrXFwuP1xcZCp8XFxCXFwuXFxkKykoPzplWystXT9cXGQrKT8vaSxcblx0J29wZXJhdG9yJzogLy0tP3xcXCtcXCs/fCE9Pz0/fDw9P3w+PT98PT0/PT98JiY/fFxcfFxcfD98XFw/fFxcKnxcXC98fnxcXF58JS8sXG5cdCdwdW5jdHVhdGlvbic6IC9be31bXFxdOygpLC46XS9cbn07XG5cblxuLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBCZWdpbiBwcmlzbS1qYXZhc2NyaXB0LmpzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cblByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0ID0gUHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgnY2xpa2UnLCB7XG5cdCdjbGFzcy1uYW1lJzogW1xuXHRcdFByaXNtLmxhbmd1YWdlcy5jbGlrZVsnY2xhc3MtbmFtZSddLFxuXHRcdHtcblx0XHRcdHBhdHRlcm46IC8oXnxbXiRcXHdcXHhBMC1cXHVGRkZGXSlbXyRBLVpcXHhBMC1cXHVGRkZGXVskXFx3XFx4QTAtXFx1RkZGRl0qKD89XFwuKD86cHJvdG90eXBlfGNvbnN0cnVjdG9yKSkvLFxuXHRcdFx0bG9va2JlaGluZDogdHJ1ZVxuXHRcdH1cblx0XSxcblx0J2tleXdvcmQnOiBbXG5cdFx0e1xuXHRcdFx0cGF0dGVybjogLygoPzpefH0pXFxzKikoPzpjYXRjaHxmaW5hbGx5KVxcYi8sXG5cdFx0XHRsb29rYmVoaW5kOiB0cnVlXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRwYXR0ZXJuOiAvKF58W14uXSlcXGIoPzphc3xhc3luYyg/PVxccyooPzpmdW5jdGlvblxcYnxcXCh8WyRcXHdcXHhBMC1cXHVGRkZGXXwkKSl8YXdhaXR8YnJlYWt8Y2FzZXxjbGFzc3xjb25zdHxjb250aW51ZXxkZWJ1Z2dlcnxkZWZhdWx0fGRlbGV0ZXxkb3xlbHNlfGVudW18ZXhwb3J0fGV4dGVuZHN8Zm9yfGZyb218ZnVuY3Rpb258Z2V0fGlmfGltcGxlbWVudHN8aW1wb3J0fGlufGluc3RhbmNlb2Z8aW50ZXJmYWNlfGxldHxuZXd8bnVsbHxvZnxwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZXR1cm58c2V0fHN0YXRpY3xzdXBlcnxzd2l0Y2h8dGhpc3x0aHJvd3x0cnl8dHlwZW9mfHVuZGVmaW5lZHx2YXJ8dm9pZHx3aGlsZXx3aXRofHlpZWxkKVxcYi8sXG5cdFx0XHRsb29rYmVoaW5kOiB0cnVlXG5cdFx0fSxcblx0XSxcblx0J251bWJlcic6IC9cXGIoPzooPzowW3hYXSg/OltcXGRBLUZhLWZdKD86X1tcXGRBLUZhLWZdKT8pK3wwW2JCXSg/OlswMV0oPzpfWzAxXSk/KSt8MFtvT10oPzpbMC03XSg/Ol9bMC03XSk/KSspbj98KD86XFxkKD86X1xcZCk/KStufE5hTnxJbmZpbml0eSlcXGJ8KD86XFxiKD86XFxkKD86X1xcZCk/KStcXC4/KD86XFxkKD86X1xcZCk/KSp8XFxCXFwuKD86XFxkKD86X1xcZCk/KSspKD86W0VlXVsrLV0/KD86XFxkKD86X1xcZCk/KSspPy8sXG5cdC8vIEFsbG93IGZvciBhbGwgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgKFNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMDA4NDQ0KVxuXHQnZnVuY3Rpb24nOiAvIz9bXyRhLXpBLVpcXHhBMC1cXHVGRkZGXVskXFx3XFx4QTAtXFx1RkZGRl0qKD89XFxzKig/OlxcLlxccyooPzphcHBseXxiaW5kfGNhbGwpXFxzKik/XFwoKS8sXG5cdCdvcGVyYXRvcic6IC8tWy09XT98XFwrWys9XT98IT0/PT98PDw/PT98Pj4/Pj89P3w9KD86PT0/fD4pP3wmWyY9XT98XFx8W3w9XT98XFwqXFwqPz0/fFxcLz0/fH58XFxePT98JT0/fFxcP3xcXC57M30vXG59KTtcblxuUHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHRbJ2NsYXNzLW5hbWUnXVswXS5wYXR0ZXJuID0gLyhcXGIoPzpjbGFzc3xpbnRlcmZhY2V8ZXh0ZW5kc3xpbXBsZW1lbnRzfGluc3RhbmNlb2Z8bmV3KVxccyspW1xcdy5cXFxcXSsvO1xuXG5QcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdqYXZhc2NyaXB0JywgJ2tleXdvcmQnLCB7XG5cdCdyZWdleCc6IHtcblx0XHRwYXR0ZXJuOiAvKCg/Ol58W14kXFx3XFx4QTAtXFx1RkZGRi5cIidcXF0pXFxzXSlcXHMqKVxcLyhcXFsoPzpbXlxcXVxcXFxcXHJcXG5dfFxcXFwuKSpdfFxcXFwufFteL1xcXFxcXFtcXHJcXG5dKStcXC9bZ2lteXVzXXswLDZ9KD89XFxzKigkfFtcXHJcXG4sLjt9KVxcXV0pKS8sXG5cdFx0bG9va2JlaGluZDogdHJ1ZSxcblx0XHRncmVlZHk6IHRydWVcblx0fSxcblx0Ly8gVGhpcyBtdXN0IGJlIGRlY2xhcmVkIGJlZm9yZSBrZXl3b3JkIGJlY2F1c2Ugd2UgdXNlIFwiZnVuY3Rpb25cIiBpbnNpZGUgdGhlIGxvb2stZm9yd2FyZFxuXHQnZnVuY3Rpb24tdmFyaWFibGUnOiB7XG5cdFx0cGF0dGVybjogLyM/W18kYS16QS1aXFx4QTAtXFx1RkZGRl1bJFxcd1xceEEwLVxcdUZGRkZdKig/PVxccypbPTpdXFxzKig/OmFzeW5jXFxzKik/KD86XFxiZnVuY3Rpb25cXGJ8KD86XFwoKD86W14oKV18XFwoW14oKV0qXFwpKSpcXCl8W18kYS16QS1aXFx4QTAtXFx1RkZGRl1bJFxcd1xceEEwLVxcdUZGRkZdKilcXHMqPT4pKS8sXG5cdFx0YWxpYXM6ICdmdW5jdGlvbidcblx0fSxcblx0J3BhcmFtZXRlcic6IFtcblx0XHR7XG5cdFx0XHRwYXR0ZXJuOiAvKGZ1bmN0aW9uKD86XFxzK1tfJEEtWmEtelxceEEwLVxcdUZGRkZdWyRcXHdcXHhBMC1cXHVGRkZGXSopP1xccypcXChcXHMqKSg/IVxccykoPzpbXigpXXxcXChbXigpXSpcXCkpKz8oPz1cXHMqXFwpKS8sXG5cdFx0XHRsb29rYmVoaW5kOiB0cnVlLFxuXHRcdFx0aW5zaWRlOiBQcmlzbS5sYW5ndWFnZXMuamF2YXNjcmlwdFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0cGF0dGVybjogL1tfJGEtelxceEEwLVxcdUZGRkZdWyRcXHdcXHhBMC1cXHVGRkZGXSooPz1cXHMqPT4pL2ksXG5cdFx0XHRpbnNpZGU6IFByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRwYXR0ZXJuOiAvKFxcKFxccyopKD8hXFxzKSg/OlteKCldfFxcKFteKCldKlxcKSkrPyg/PVxccypcXClcXHMqPT4pLyxcblx0XHRcdGxvb2tiZWhpbmQ6IHRydWUsXG5cdFx0XHRpbnNpZGU6IFByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRwYXR0ZXJuOiAvKCg/OlxcYnxcXHN8XikoPyEoPzphc3xhc3luY3xhd2FpdHxicmVha3xjYXNlfGNhdGNofGNsYXNzfGNvbnN0fGNvbnRpbnVlfGRlYnVnZ2VyfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZW51bXxleHBvcnR8ZXh0ZW5kc3xmaW5hbGx5fGZvcnxmcm9tfGZ1bmN0aW9ufGdldHxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbnxpbnN0YW5jZW9mfGludGVyZmFjZXxsZXR8bmV3fG51bGx8b2Z8cGFja2FnZXxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmV0dXJufHNldHxzdGF0aWN8c3VwZXJ8c3dpdGNofHRoaXN8dGhyb3d8dHJ5fHR5cGVvZnx1bmRlZmluZWR8dmFyfHZvaWR8d2hpbGV8d2l0aHx5aWVsZCkoPyFbJFxcd1xceEEwLVxcdUZGRkZdKSkoPzpbXyRBLVphLXpcXHhBMC1cXHVGRkZGXVskXFx3XFx4QTAtXFx1RkZGRl0qXFxzKilcXChcXHMqKSg/IVxccykoPzpbXigpXXxcXChbXigpXSpcXCkpKz8oPz1cXHMqXFwpXFxzKlxceykvLFxuXHRcdFx0bG9va2JlaGluZDogdHJ1ZSxcblx0XHRcdGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHRcblx0XHR9XG5cdF0sXG5cdCdjb25zdGFudCc6IC9cXGJbQS1aXSg/OltBLVpfXXxcXGR4PykqXFxiL1xufSk7XG5cblByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoJ2phdmFzY3JpcHQnLCAnc3RyaW5nJywge1xuXHQndGVtcGxhdGUtc3RyaW5nJzoge1xuXHRcdHBhdHRlcm46IC9gKD86XFxcXFtcXHNcXFNdfFxcJHsoPzpbXnt9XXx7KD86W157fV18e1tefV0qfSkqfSkrfXwoPyFcXCR7KVteXFxcXGBdKSpgLyxcblx0XHRncmVlZHk6IHRydWUsXG5cdFx0aW5zaWRlOiB7XG5cdFx0XHQndGVtcGxhdGUtcHVuY3R1YXRpb24nOiB7XG5cdFx0XHRcdHBhdHRlcm46IC9eYHxgJC8sXG5cdFx0XHRcdGFsaWFzOiAnc3RyaW5nJ1xuXHRcdFx0fSxcblx0XHRcdCdpbnRlcnBvbGF0aW9uJzoge1xuXHRcdFx0XHRwYXR0ZXJuOiAvKCg/Ol58W15cXFxcXSkoPzpcXFxcezJ9KSopXFwkeyg/Oltee31dfHsoPzpbXnt9XXx7W159XSp9KSp9KSt9Lyxcblx0XHRcdFx0bG9va2JlaGluZDogdHJ1ZSxcblx0XHRcdFx0aW5zaWRlOiB7XG5cdFx0XHRcdFx0J2ludGVycG9sYXRpb24tcHVuY3R1YXRpb24nOiB7XG5cdFx0XHRcdFx0XHRwYXR0ZXJuOiAvXlxcJHt8fSQvLFxuXHRcdFx0XHRcdFx0YWxpYXM6ICdwdW5jdHVhdGlvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHJlc3Q6IFByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQnc3RyaW5nJzogL1tcXHNcXFNdKy9cblx0XHR9XG5cdH1cbn0pO1xuXG5pZiAoUHJpc20ubGFuZ3VhZ2VzLm1hcmt1cCkge1xuXHRQcmlzbS5sYW5ndWFnZXMubWFya3VwLnRhZy5hZGRJbmxpbmVkKCdzY3JpcHQnLCAnamF2YXNjcmlwdCcpO1xufVxuXG5QcmlzbS5sYW5ndWFnZXMuanMgPSBQcmlzbS5sYW5ndWFnZXMuamF2YXNjcmlwdDtcblxuXG4vKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIEJlZ2luIHByaXNtLWZpbGUtaGlnaGxpZ2h0LmpzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdGlmICh0eXBlb2Ygc2VsZiA9PT0gJ3VuZGVmaW5lZCcgfHwgIXNlbGYuUHJpc20gfHwgIXNlbGYuZG9jdW1lbnQgfHwgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtFbGVtZW50fSBbY29udGFpbmVyPWRvY3VtZW50XVxuXHQgKi9cblx0c2VsZi5QcmlzbS5maWxlSGlnaGxpZ2h0ID0gZnVuY3Rpb24oY29udGFpbmVyKSB7XG5cdFx0Y29udGFpbmVyID0gY29udGFpbmVyIHx8IGRvY3VtZW50O1xuXG5cdFx0dmFyIEV4dGVuc2lvbnMgPSB7XG5cdFx0XHQnanMnOiAnamF2YXNjcmlwdCcsXG5cdFx0XHQncHknOiAncHl0aG9uJyxcblx0XHRcdCdyYic6ICdydWJ5Jyxcblx0XHRcdCdwczEnOiAncG93ZXJzaGVsbCcsXG5cdFx0XHQncHNtMSc6ICdwb3dlcnNoZWxsJyxcblx0XHRcdCdzaCc6ICdiYXNoJyxcblx0XHRcdCdiYXQnOiAnYmF0Y2gnLFxuXHRcdFx0J2gnOiAnYycsXG5cdFx0XHQndGV4JzogJ2xhdGV4J1xuXHRcdH07XG5cblx0XHRBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHtcblx0XHRcdC8vIGlnbm9yZSBpZiBhbHJlYWR5IGxvYWRlZFxuXHRcdFx0aWYgKHByZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc3JjLWxvYWRlZCcpKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gbG9hZCBjdXJyZW50XG5cdFx0XHR2YXIgc3JjID0gcHJlLmdldEF0dHJpYnV0ZSgnZGF0YS1zcmMnKTtcblxuXHRcdFx0dmFyIGxhbmd1YWdlLCBwYXJlbnQgPSBwcmU7XG5cdFx0XHR2YXIgbGFuZyA9IC9cXGJsYW5nKD86dWFnZSk/LShbXFx3LV0rKVxcYi9pO1xuXHRcdFx0d2hpbGUgKHBhcmVudCAmJiAhbGFuZy50ZXN0KHBhcmVudC5jbGFzc05hbWUpKSB7XG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAocGFyZW50KSB7XG5cdFx0XHRcdGxhbmd1YWdlID0gKHByZS5jbGFzc05hbWUubWF0Y2gobGFuZykgfHwgWywgJyddKVsxXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFsYW5ndWFnZSkge1xuXHRcdFx0XHR2YXIgZXh0ZW5zaW9uID0gKHNyYy5tYXRjaCgvXFwuKFxcdyspJC8pIHx8IFssICcnXSlbMV07XG5cdFx0XHRcdGxhbmd1YWdlID0gRXh0ZW5zaW9uc1tleHRlbnNpb25dIHx8IGV4dGVuc2lvbjtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7XG5cdFx0XHRjb2RlLmNsYXNzTmFtZSA9ICdsYW5ndWFnZS0nICsgbGFuZ3VhZ2U7XG5cblx0XHRcdHByZS50ZXh0Q29udGVudCA9ICcnO1xuXG5cdFx0XHRjb2RlLnRleHRDb250ZW50ID0gJ0xvYWRpbmfigKYnO1xuXG5cdFx0XHRwcmUuYXBwZW5kQ2hpbGQoY29kZSk7XG5cblx0XHRcdHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuXHRcdFx0eGhyLm9wZW4oJ0dFVCcsIHNyYywgdHJ1ZSk7XG5cblx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7XG5cblx0XHRcdFx0XHRpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7XG5cdFx0XHRcdFx0XHRjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDtcblxuXHRcdFx0XHRcdFx0UHJpc20uaGlnaGxpZ2h0RWxlbWVudChjb2RlKTtcblx0XHRcdFx0XHRcdC8vIG1hcmsgYXMgbG9hZGVkXG5cdFx0XHRcdFx0XHRwcmUuc2V0QXR0cmlidXRlKCdkYXRhLXNyYy1sb2FkZWQnLCAnJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7XG5cdFx0XHRcdFx0XHRjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdGNvZGUudGV4dENvbnRlbnQgPSAn4pyWIEVycm9yOiBGaWxlIGRvZXMgbm90IGV4aXN0IG9yIGlzIGVtcHR5Jztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRcdHhoci5zZW5kKG51bGwpO1xuXHRcdH0pO1xuXG5cdFx0aWYgKFByaXNtLnBsdWdpbnMudG9vbGJhcikge1xuXHRcdFx0UHJpc20ucGx1Z2lucy50b29sYmFyLnJlZ2lzdGVyQnV0dG9uKCdkb3dubG9hZC1maWxlJywgZnVuY3Rpb24gKGVudikge1xuXHRcdFx0XHR2YXIgcHJlID0gZW52LmVsZW1lbnQucGFyZW50Tm9kZTtcblx0XHRcdFx0aWYgKCFwcmUgfHwgIS9wcmUvaS50ZXN0KHByZS5ub2RlTmFtZSkgfHwgIXByZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc3JjJykgfHwgIXByZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtZG93bmxvYWQtbGluaycpKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpO1xuXHRcdFx0XHR2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0YS50ZXh0Q29udGVudCA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZG93bmxvYWQtbGluay1sYWJlbCcpIHx8ICdEb3dubG9hZCc7XG5cdFx0XHRcdGEuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsICcnKTtcblx0XHRcdFx0YS5ocmVmID0gc3JjO1xuXHRcdFx0XHRyZXR1cm4gYTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHR9O1xuXG5cdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG5cdFx0Ly8gZXhlY3V0ZSBpbnNpZGUgaGFuZGxlciwgZm9yIGRyb3BwaW5nIEV2ZW50IGFzIGFyZ3VtZW50XG5cdFx0c2VsZi5QcmlzbS5maWxlSGlnaGxpZ2h0KCk7XG5cdH0pO1xuXG59KSgpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/prismjs/prism.js\n");

/***/ }),

/***/ "./node_modules/prismjs/themes/prism-tomorrow.css":
/*!********************************************************!*\
  !*** ./node_modules/prismjs/themes/prism-tomorrow.css ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./prism-tomorrow.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/prismjs/themes/prism-tomorrow.css\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"c0a2ea50\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./prism-tomorrow.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/prismjs/themes/prism-tomorrow.css\", function() {\n     var newContent = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./prism-tomorrow.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/prismjs/themes/prism-tomorrow.css\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJpc21qcy90aGVtZXMvcHJpc20tdG9tb3Jyb3cuY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ByaXNtanMvdGhlbWVzL3ByaXNtLXRvbW9ycm93LmNzcz81OGJjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0xIS4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMiEuL3ByaXNtLXRvbW9ycm93LmNzc1wiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikuZGVmYXVsdFxudmFyIHVwZGF0ZSA9IGFkZChcImMwYTJlYTUwXCIsIGNvbnRlbnQsIGZhbHNlLCB7XCJzb3VyY2VNYXBcIjpmYWxzZSxcInNoYWRvd01vZGVcIjpmYWxzZX0pO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi9wcmlzbS10b21vcnJvdy5jc3NcIiwgZnVuY3Rpb24oKSB7XG4gICAgIHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi9wcmlzbS10b21vcnJvdy5jc3NcIik7XG4gICAgIGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuICAgICB1cGRhdGUobmV3Q29udGVudCk7XG4gICB9KTtcbiB9XG4gLy8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/prismjs/themes/prism-tomorrow.css\n");

/***/ }),

/***/ "./node_modules/process/browser.js":
/*!*****************************************!*\
  !*** ./node_modules/process/browser.js ***!
  \*****************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcz9mMjhjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/process/browser.js\n");

/***/ }),

/***/ "./node_modules/regenerator-runtime/runtime.js":
/*!*****************************************************!*\
  !*** ./node_modules/regenerator-runtime/runtime.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] =\n    GeneratorFunction.displayName = \"GeneratorFunction\";\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      prototype[method] = function(arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return Promise.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList)\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  Gp[toStringTagSymbol] = \"Generator\";\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n   true ? module.exports : undefined\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcz85NmNmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxudmFyIHJ1bnRpbWUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIGhhc093biA9IE9wLmhhc093blByb3BlcnR5O1xuICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cbiAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgPyBTeW1ib2wgOiB7fTtcbiAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5pdGVyYXRvciB8fCBcIkBAaXRlcmF0b3JcIjtcbiAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIjtcbiAgdmFyIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZVt0b1N0cmluZ1RhZ1N5bWJvbF0gPVxuICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIGV4cG9ydHMubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgaWYgKCEodG9TdHJpbmdUYWdTeW1ib2wgaW4gZ2VuRnVuKSkge1xuICAgICAgICBnZW5GdW5bdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuICAgICAgfVxuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBleHBvcnRzLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgIC8vIElmIGEgcmVqZWN0ZWQgUHJvbWlzZSB3YXMgeWllbGRlZCwgdGhyb3cgdGhlIHJlamVjdGlvbiBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSBoYW5kbGVkIHRoZXJlLlxuICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCBlcnJvciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcbiAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZVthc3luY0l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcihcbiAgICAgIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpXG4gICAgKTtcblxuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBHcFt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvclwiO1xuXG4gIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlXG4gIC8vIEBAaXRlcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIGl0LiBTb21lIGJyb3dzZXJzJyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlXG4gIC8vIGl0ZXJhdG9yIHByb3RvdHlwZSBjaGFpbiBpbmNvcnJlY3RseSBpbXBsZW1lbnQgdGhpcywgY2F1c2luZyB0aGUgR2VuZXJhdG9yXG4gIC8vIG9iamVjdCB0byBub3QgYmUgcmV0dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2lzc3Vlcy8yNzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgR3AudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfTtcblxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgIHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07XG5cbiAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgfVxuXG4gICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgfVxuXG4gICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIjtcbiAgICBkZWxldGUgcmVjb3JkLmFyZztcbiAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG5cbiAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cbiAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG4gICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG4gICAgdGhpcy5yZXNldCh0cnVlKTtcbiAgfVxuXG4gIGV4cG9ydHMua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBleHBvcnRzLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xuXG4gIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGVcbiAgLy8gb3Igbm90LCByZXR1cm4gdGhlIHJ1bnRpbWUgb2JqZWN0IHNvIHRoYXQgd2UgY2FuIGRlY2xhcmUgdGhlIHZhcmlhYmxlXG4gIC8vIHJlZ2VuZXJhdG9yUnVudGltZSBpbiB0aGUgb3V0ZXIgc2NvcGUsIHdoaWNoIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZVxuICAvLyBpbmplY3RlZCBlYXNpbHkgYnkgYGJpbi9yZWdlbmVyYXRvciAtLWluY2x1ZGUtcnVudGltZSBzY3JpcHQuanNgLlxuICByZXR1cm4gZXhwb3J0cztcblxufShcbiAgLy8gSWYgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlLCB1c2UgbW9kdWxlLmV4cG9ydHNcbiAgLy8gYXMgdGhlIHJlZ2VuZXJhdG9yUnVudGltZSBuYW1lc3BhY2UuIE90aGVyd2lzZSBjcmVhdGUgYSBuZXcgZW1wdHlcbiAgLy8gb2JqZWN0LiBFaXRoZXIgd2F5LCB0aGUgcmVzdWx0aW5nIG9iamVjdCB3aWxsIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZVxuICAvLyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIHZhcmlhYmxlIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLlxuICB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiID8gbW9kdWxlLmV4cG9ydHMgOiB7fVxuKSk7XG5cbnRyeSB7XG4gIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59IGNhdGNoIChhY2NpZGVudGFsU3RyaWN0TW9kZSkge1xuICAvLyBUaGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHJ1bm5pbmcgaW4gc3RyaWN0IG1vZGUsIHNvIHRoZSBhYm92ZVxuICAvLyBhc3NpZ25tZW50IHNob3VsZCBhbHdheXMgd29yayB1bmxlc3Mgc29tZXRoaW5nIGlzIG1pc2NvbmZpZ3VyZWQuIEp1c3RcbiAgLy8gaW4gY2FzZSBydW50aW1lLmpzIGFjY2lkZW50YWxseSBydW5zIGluIHN0cmljdCBtb2RlLCB3ZSBjYW4gZXNjYXBlXG4gIC8vIHN0cmljdCBtb2RlIHVzaW5nIGEgZ2xvYmFsIEZ1bmN0aW9uIGNhbGwuIFRoaXMgY291bGQgY29uY2VpdmFibHkgZmFpbFxuICAvLyBpZiBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGZvcmJpZHMgdXNpbmcgRnVuY3Rpb24sIGJ1dCBpbiB0aGF0IGNhc2VcbiAgLy8gdGhlIHByb3BlciBzb2x1dGlvbiBpcyB0byBmaXggdGhlIGFjY2lkZW50YWwgc3RyaWN0IG1vZGUgcHJvYmxlbS4gSWZcbiAgLy8geW91J3ZlIG1pc2NvbmZpZ3VyZWQgeW91ciBidW5kbGVyIHRvIGZvcmNlIHN0cmljdCBtb2RlIGFuZCBhcHBsaWVkIGFcbiAgLy8gQ1NQIHRvIGZvcmJpZCBGdW5jdGlvbiwgYW5kIHlvdSdyZSBub3Qgd2lsbGluZyB0byBmaXggZWl0aGVyIG9mIHRob3NlXG4gIC8vIHByb2JsZW1zLCBwbGVhc2UgZGV0YWlsIHlvdXIgdW5pcXVlIHByZWRpY2FtZW50IGluIGEgR2l0SHViIGlzc3VlLlxuICBGdW5jdGlvbihcInJcIiwgXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHJ1bnRpbWUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/regenerator-runtime/runtime.js\n");

/***/ }),

/***/ "./node_modules/shvl/dist/shvl.es.js":
/*!*******************************************!*\
  !*** ./node_modules/shvl/dist/shvl.es.js ***!
  \*******************************************/
/*! exports provided: get, set */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return t; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return n; });\nfunction t(t,n,r){return void 0===(t=(n.split?n.split(\".\"):n).reduce(function(t,n){return t&&t[n]},t))?r:t}function n(t,n,r,e){return(n=n.split?n.split(\".\"):n).slice(0,-1).reduce(function(t,n){return t[n]=t[n]||{}},t)[n.pop()]=r,t}\n//# sourceMappingURL=shvl.es.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2h2bC9kaXN0L3NodmwuZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2h2bC9kaXN0L3NodmwuZXMuanM/ZTU1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiB0KHQsbixyKXtyZXR1cm4gdm9pZCAwPT09KHQ9KG4uc3BsaXQ/bi5zcGxpdChcIi5cIik6bikucmVkdWNlKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQmJnRbbl19LHQpKT9yOnR9ZnVuY3Rpb24gbih0LG4scixlKXtyZXR1cm4obj1uLnNwbGl0P24uc3BsaXQoXCIuXCIpOm4pLnNsaWNlKDAsLTEpLnJlZHVjZShmdW5jdGlvbih0LG4pe3JldHVybiB0W25dPXRbbl18fHt9fSx0KVtuLnBvcCgpXT1yLHR9ZXhwb3J0e3QgYXMgZ2V0LG4gYXMgc2V0fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNodmwuZXMuanMubWFwXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/shvl/dist/shvl.es.js\n");

/***/ }),

/***/ "./node_modules/sortablejs/Sortable.js":
/*!*********************************************!*\
  !*** ./node_modules/sortablejs/Sortable.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**!\n * Sortable\n * @author\tRubaXa   <trash@rubaxa.org>\n * @author\towenm    <owen23355@gmail.com>\n * @license MIT\n */\n\n(function sortableModule(factory) {\n\t\"use strict\";\n\n\tif (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t}\n\telse {}\n})(function sortableFactory() {\n\t\"use strict\";\n\n\tif (typeof window === \"undefined\" || !window.document) {\n\t\treturn function sortableError() {\n\t\t\tthrow new Error(\"Sortable.js requires a window with a document\");\n\t\t};\n\t}\n\n\tvar dragEl,\n\t\tparentEl,\n\t\tghostEl,\n\t\tcloneEl,\n\t\trootEl,\n\t\tnextEl,\n\t\tlastDownEl,\n\n\t\tscrollEl,\n\t\tscrollParentEl,\n\t\tscrollCustomFn,\n\n\t\toldIndex,\n\t\tnewIndex,\n\t\toldDraggableIndex,\n\t\tnewDraggableIndex,\n\n\t\tactiveGroup,\n\t\tputSortable,\n\n\t\tautoScrolls = [],\n\t\tscrolling = false,\n\n\t\tawaitingDragStarted = false,\n\t\tignoreNextClick = false,\n\t\tsortables = [],\n\n\t\tpointerElemChangedInterval,\n\t\tlastPointerElemX,\n\t\tlastPointerElemY,\n\n\t\ttapEvt,\n\t\ttouchEvt,\n\n\t\tmoved,\n\n\n\t\tlastTarget,\n\t\tlastDirection,\n\t\tpastFirstInvertThresh = false,\n\t\tisCircumstantialInvert = false,\n\t\tlastMode, // 'swap' or 'insert'\n\n\t\ttargetMoveDistance,\n\n\t\t// For positioning ghost absolutely\n\t\tghostRelativeParent,\n\t\tghostRelativeParentInitialScroll = [], // (left, top)\n\n\t\trealDragElRect, // dragEl rect after current animation\n\n\t\t/** @const */\n\t\tR_SPACE = /\\s+/g,\n\n\t\texpando = 'Sortable' + (new Date).getTime(),\n\n\t\twin = window,\n\t\tdocument = win.document,\n\t\tparseInt = win.parseInt,\n\t\tsetTimeout = win.setTimeout,\n\n\t\t$ = win.jQuery || win.Zepto,\n\t\tPolymer = win.Polymer,\n\n\t\tcaptureMode = {\n\t\t\tcapture: false,\n\t\t\tpassive: false\n\t\t},\n\n\t\tIE11OrLess = !!navigator.userAgent.match(/(?:Trident.*rv[ :]?11\\.|msie|iemobile)/i),\n\t\tEdge = !!navigator.userAgent.match(/Edge/i),\n\t\tFireFox = !!navigator.userAgent.match(/firefox/i),\n\t\tSafari = !!(navigator.userAgent.match(/safari/i) && !navigator.userAgent.match(/chrome/i) && !navigator.userAgent.match(/android/i)),\n\t\tIOS = !!(navigator.userAgent.match(/iP(ad|od|hone)/i)),\n\n\t\tPositionGhostAbsolutely = IOS,\n\n\t\tCSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n\n\t\t// This will not pass for IE9, because IE9 DnD only works on anchors\n\t\tsupportDraggable = ('draggable' in document.createElement('div')),\n\n\t\tsupportCssPointerEvents = (function() {\n\t\t\t// false when <= IE11\n\t\t\tif (IE11OrLess) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar el = document.createElement('x');\n\t\t\tel.style.cssText = 'pointer-events:auto';\n\t\t\treturn el.style.pointerEvents === 'auto';\n\t\t})(),\n\n\t\t_silent = false,\n\t\t_alignedSilent = false,\n\n\t\tabs = Math.abs,\n\t\tmin = Math.min,\n\t\tmax = Math.max,\n\n\t\tsavedInputChecked = [],\n\n\t\t_detectDirection = function(el, options) {\n\t\t\tvar elCSS = _css(el),\n\t\t\t\telWidth = parseInt(elCSS.width)\n\t\t\t\t\t- parseInt(elCSS.paddingLeft)\n\t\t\t\t\t- parseInt(elCSS.paddingRight)\n\t\t\t\t\t- parseInt(elCSS.borderLeftWidth)\n\t\t\t\t\t- parseInt(elCSS.borderRightWidth),\n\t\t\t\tchild1 = _getChild(el, 0, options),\n\t\t\t\tchild2 = _getChild(el, 1, options),\n\t\t\t\tfirstChildCSS = child1 && _css(child1),\n\t\t\t\tsecondChildCSS = child2 && _css(child2),\n\t\t\t\tfirstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + _getRect(child1).width,\n\t\t\t\tsecondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + _getRect(child2).width;\n\n\t\t\tif (elCSS.display === 'flex') {\n\t\t\t\treturn elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse'\n\t\t\t\t? 'vertical' : 'horizontal';\n\t\t\t}\n\n\t\t\tif (elCSS.display === 'grid') {\n\t\t\t\treturn elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n\t\t\t}\n\n\t\t\tif (child1 && firstChildCSS.float !== 'none') {\n\t\t\t\tvar touchingSideChild2 = firstChildCSS.float === 'left' ? 'left' : 'right';\n\n\t\t\t\treturn child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ?\n\t\t\t\t\t'vertical' : 'horizontal';\n\t\t\t}\n\n\t\t\treturn (child1 &&\n\t\t\t\t(\n\t\t\t\t\tfirstChildCSS.display === 'block' ||\n\t\t\t\t\tfirstChildCSS.display === 'flex' ||\n\t\t\t\t\tfirstChildCSS.display === 'table' ||\n\t\t\t\t\tfirstChildCSS.display === 'grid' ||\n\t\t\t\t\tfirstChildWidth >= elWidth &&\n\t\t\t\t\telCSS[CSSFloatProperty] === 'none' ||\n\t\t\t\t\tchild2 &&\n\t\t\t\t\telCSS[CSSFloatProperty] === 'none' &&\n\t\t\t\t\tfirstChildWidth + secondChildWidth > elWidth\n\t\t\t\t) ?\n\t\t\t\t'vertical' : 'horizontal'\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n\t\t * @param  {Number} x      X position\n\t\t * @param  {Number} y      Y position\n\t\t * @return {HTMLElement}   Element of the first found nearest Sortable\n\t\t */\n\t\t_detectNearestEmptySortable = function(x, y) {\n\t\t\tfor (var i = 0; i < sortables.length; i++) {\n\t\t\t\tif (_lastChild(sortables[i])) continue;\n\n\t\t\t\tvar rect = _getRect(sortables[i]),\n\t\t\t\t\tthreshold = sortables[i][expando].options.emptyInsertThreshold,\n\t\t\t\t\tinsideHorizontally = x >= (rect.left - threshold) && x <= (rect.right + threshold),\n\t\t\t\t\tinsideVertically = y >= (rect.top - threshold) && y <= (rect.bottom + threshold);\n\n\t\t\t\tif (threshold && insideHorizontally && insideVertically) {\n\t\t\t\t\treturn sortables[i];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_isClientInRowColumn = function(x, y, el, axis, options) {\n\t\t\tvar targetRect = _getRect(el),\n\t\t\t\ttargetS1Opp = axis === 'vertical' ? targetRect.left : targetRect.top,\n\t\t\t\ttargetS2Opp = axis === 'vertical' ? targetRect.right : targetRect.bottom,\n\t\t\t\tmouseOnOppAxis = axis === 'vertical' ? x : y;\n\n\t\t\treturn targetS1Opp < mouseOnOppAxis && mouseOnOppAxis < targetS2Opp;\n\t\t},\n\n\t\t_isElInRowColumn = function(el1, el2, axis) {\n\t\t\tvar el1Rect = el1 === dragEl && realDragElRect || _getRect(el1),\n\t\t\t\tel2Rect = el2 === dragEl && realDragElRect || _getRect(el2),\n\t\t\t\tel1S1Opp = axis === 'vertical' ? el1Rect.left : el1Rect.top,\n\t\t\t\tel1S2Opp = axis === 'vertical' ? el1Rect.right : el1Rect.bottom,\n\t\t\t\tel1OppLength = axis === 'vertical' ? el1Rect.width : el1Rect.height,\n\t\t\t\tel2S1Opp = axis === 'vertical' ? el2Rect.left : el2Rect.top,\n\t\t\t\tel2S2Opp = axis === 'vertical' ? el2Rect.right : el2Rect.bottom,\n\t\t\t\tel2OppLength = axis === 'vertical' ? el2Rect.width : el2Rect.height;\n\n\t\t\treturn (\n\t\t\t\tel1S1Opp === el2S1Opp ||\n\t\t\t\tel1S2Opp === el2S2Opp ||\n\t\t\t\t(el1S1Opp + el1OppLength / 2) === (el2S1Opp + el2OppLength / 2)\n\t\t\t);\n\t\t},\n\n\t\t_getParentAutoScrollElement = function(el, includeSelf) {\n\t\t\t// skip to window\n\t\t\tif (!el || !el.getBoundingClientRect) return _getWindowScrollingElement();\n\n\t\t\tvar elem = el;\n\t\t\tvar gotSelf = false;\n\t\t\tdo {\n\t\t\t\t// we don't need to get elem css if it isn't even overflowing in the first place (performance)\n\t\t\t\tif (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n\t\t\t\t\tvar elemCSS = _css(elem);\n\t\t\t\t\tif (\n\t\t\t\t\t\telem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') ||\n\t\t\t\t\t\telem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (!elem || !elem.getBoundingClientRect || elem === document.body) return _getWindowScrollingElement();\n\n\t\t\t\t\t\tif (gotSelf || includeSelf) return elem;\n\t\t\t\t\t\tgotSelf = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t/* jshint boss:true */\n\t\t\t} while (elem = elem.parentNode);\n\n\t\t\treturn _getWindowScrollingElement();\n\t\t},\n\n\t\t_getWindowScrollingElement = function() {\n\t\t\tif (IE11OrLess) {\n\t\t\t\treturn document.documentElement;\n\t\t\t} else {\n\t\t\t\treturn document.scrollingElement;\n\t\t\t}\n\t\t},\n\n\t\t_scrollBy = function(el, x, y) {\n\t\t\tel.scrollLeft += x;\n\t\t\tel.scrollTop += y;\n\t\t},\n\n\t\t_autoScroll = _throttle(function (/**Event*/evt, /**Object*/options, /**HTMLElement*/rootEl, /**Boolean*/isFallback) {\n\t\t\t// Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n\t\t\tif (options.scroll) {\n\t\t\t\tvar _this = rootEl ? rootEl[expando] : window,\n\t\t\t\t\tsens = options.scrollSensitivity,\n\t\t\t\t\tspeed = options.scrollSpeed,\n\n\t\t\t\t\tx = evt.clientX,\n\t\t\t\t\ty = evt.clientY,\n\n\t\t\t\t\twinScroller = _getWindowScrollingElement(),\n\n\t\t\t\t\tscrollThisInstance = false;\n\n\t\t\t\t// Detect scrollEl\n\t\t\t\tif (scrollParentEl !== rootEl) {\n\t\t\t\t\t_clearAutoScrolls();\n\n\t\t\t\t\tscrollEl = options.scroll;\n\t\t\t\t\tscrollCustomFn = options.scrollFn;\n\n\t\t\t\t\tif (scrollEl === true) {\n\t\t\t\t\t\tscrollEl = _getParentAutoScrollElement(rootEl, true);\n\t\t\t\t\t\tscrollParentEl = scrollEl;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tvar layersOut = 0;\n\t\t\t\tvar currentParent = scrollEl;\n\t\t\t\tdo {\n\t\t\t\t\tvar\tel = currentParent,\n\t\t\t\t\t\trect = _getRect(el),\n\n\t\t\t\t\t\ttop = rect.top,\n\t\t\t\t\t\tbottom = rect.bottom,\n\t\t\t\t\t\tleft = rect.left,\n\t\t\t\t\t\tright = rect.right,\n\n\t\t\t\t\t\twidth = rect.width,\n\t\t\t\t\t\theight = rect.height,\n\n\t\t\t\t\t\tscrollWidth,\n\t\t\t\t\t\tscrollHeight,\n\n\t\t\t\t\t\tcss,\n\n\t\t\t\t\t\tvx,\n\t\t\t\t\t\tvy,\n\n\t\t\t\t\t\tcanScrollX,\n\t\t\t\t\t\tcanScrollY,\n\n\t\t\t\t\t\tscrollPosX,\n\t\t\t\t\t\tscrollPosY;\n\n\n\t\t\t\t\tscrollWidth = el.scrollWidth;\n\t\t\t\t\tscrollHeight = el.scrollHeight;\n\n\t\t\t\t\tcss = _css(el);\n\n\t\t\t\t\tscrollPosX = el.scrollLeft;\n\t\t\t\t\tscrollPosY = el.scrollTop;\n\n\t\t\t\t\tif (el === winScroller) {\n\t\t\t\t\t\tcanScrollX = width < scrollWidth && (css.overflowX === 'auto' || css.overflowX === 'scroll' || css.overflowX === 'visible');\n\t\t\t\t\t\tcanScrollY = height < scrollHeight && (css.overflowY === 'auto' || css.overflowY === 'scroll' || css.overflowY === 'visible');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcanScrollX = width < scrollWidth && (css.overflowX === 'auto' || css.overflowX === 'scroll');\n\t\t\t\t\t\tcanScrollY = height < scrollHeight && (css.overflowY === 'auto' || css.overflowY === 'scroll');\n\t\t\t\t\t}\n\n\t\t\t\t\tvx = canScrollX && (abs(right - x) <= sens && (scrollPosX + width) < scrollWidth) - (abs(left - x) <= sens && !!scrollPosX);\n\n\t\t\t\t\tvy = canScrollY && (abs(bottom - y) <= sens && (scrollPosY + height) < scrollHeight) - (abs(top - y) <= sens && !!scrollPosY);\n\n\n\t\t\t\t\tif (!autoScrolls[layersOut]) {\n\t\t\t\t\t\tfor (var i = 0; i <= layersOut; i++) {\n\t\t\t\t\t\t\tif (!autoScrolls[i]) {\n\t\t\t\t\t\t\t\tautoScrolls[i] = {};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n\t\t\t\t\t\tautoScrolls[layersOut].el = el;\n\t\t\t\t\t\tautoScrolls[layersOut].vx = vx;\n\t\t\t\t\t\tautoScrolls[layersOut].vy = vy;\n\n\t\t\t\t\t\tclearInterval(autoScrolls[layersOut].pid);\n\n\t\t\t\t\t\tif (el && (vx != 0 || vy != 0)) {\n\t\t\t\t\t\t\tscrollThisInstance = true;\n\t\t\t\t\t\t\t/* jshint loopfunc:true */\n\t\t\t\t\t\t\tautoScrolls[layersOut].pid = setInterval((function () {\n\t\t\t\t\t\t\t\t// emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n\t\t\t\t\t\t\t\tif (isFallback && this.layer === 0) {\n\t\t\t\t\t\t\t\t\tSortable.active._emulateDragOver(true);\n\t\t\t\t\t\t\t\t\tSortable.active._onTouchMove(touchEvt, true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvar scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n\t\t\t\t\t\t\t\tvar scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n\t\t\t\t\t\t\t\tif ('function' === typeof(scrollCustomFn)) {\n\t\t\t\t\t\t\t\t\tif (scrollCustomFn.call(_this, scrollOffsetX, scrollOffsetY, evt, touchEvt, autoScrolls[this.layer].el) !== 'continue') {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t_scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n\t\t\t\t\t\t\t}).bind({layer: layersOut}), 24);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlayersOut++;\n\t\t\t\t} while (options.bubbleScroll && currentParent !== winScroller && (currentParent = _getParentAutoScrollElement(currentParent, false)));\n\t\t\t\tscrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n\t\t\t}\n\t\t}, 30),\n\n\t\t_clearAutoScrolls = function () {\n\t\t\tautoScrolls.forEach(function(autoScroll) {\n\t\t\t\tclearInterval(autoScroll.pid);\n\t\t\t});\n\t\t\tautoScrolls = [];\n\t\t},\n\n\t\t_prepareGroup = function (options) {\n\t\t\tfunction toFn(value, pull) {\n\t\t\t\treturn function(to, from, dragEl, evt) {\n\t\t\t\t\tvar sameGroup = to.options.group.name &&\n\t\t\t\t\t\t\t\t\tfrom.options.group.name &&\n\t\t\t\t\t\t\t\t\tto.options.group.name === from.options.group.name;\n\n\t\t\t\t\tif (value == null && (pull || sameGroup)) {\n\t\t\t\t\t\t// Default pull value\n\t\t\t\t\t\t// Default pull and put value if same group\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else if (value == null || value === false) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (pull && value === 'clone') {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t} else if (typeof value === 'function') {\n\t\t\t\t\t\treturn toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar otherGroup = (pull ? to : from).options.group.name;\n\n\t\t\t\t\t\treturn (value === true ||\n\t\t\t\t\t\t(typeof value === 'string' && value === otherGroup) ||\n\t\t\t\t\t\t(value.join && value.indexOf(otherGroup) > -1));\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar group = {};\n\t\t\tvar originalGroup = options.group;\n\n\t\t\tif (!originalGroup || typeof originalGroup != 'object') {\n\t\t\t\toriginalGroup = {name: originalGroup};\n\t\t\t}\n\n\t\t\tgroup.name = originalGroup.name;\n\t\t\tgroup.checkPull = toFn(originalGroup.pull, true);\n\t\t\tgroup.checkPut = toFn(originalGroup.put);\n\t\t\tgroup.revertClone = originalGroup.revertClone;\n\n\t\t\toptions.group = group;\n\t\t},\n\n\t\t_checkAlignment = function(evt) {\n\t\t\tif (!dragEl || !dragEl.parentNode) return;\n\t\t\tdragEl.parentNode[expando] && dragEl.parentNode[expando]._computeIsAligned(evt);\n\t\t},\n\n\t\t_hideGhostForTarget = function() {\n\t\t\tif (!supportCssPointerEvents && ghostEl) {\n\t\t\t\t_css(ghostEl, 'display', 'none');\n\t\t\t}\n\t\t},\n\n\t\t_unhideGhostForTarget = function() {\n\t\t\tif (!supportCssPointerEvents && ghostEl) {\n\t\t\t\t_css(ghostEl, 'display', '');\n\t\t\t}\n\t\t};\n\n\n\t// #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\tdocument.addEventListener('click', function(evt) {\n\t\tif (ignoreNextClick) {\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation && evt.stopPropagation();\n\t\t\tevt.stopImmediatePropagation && evt.stopImmediatePropagation();\n\t\t\tignoreNextClick = false;\n\t\t\treturn false;\n\t\t}\n\t}, true);\n\n\tvar nearestEmptyInsertDetectEvent = function(evt) {\n\t\tif (dragEl) {\n\t\t\tevt = evt.touches ? evt.touches[0] : evt;\n\t\t\tvar nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n\t\t\tif (nearest) {\n\t\t\t\t// Create imitation event\n\t\t\t\tvar event = {};\n\t\t\t\tfor (var i in evt) {\n\t\t\t\t\tevent[i] = evt[i];\n\t\t\t\t}\n\t\t\t\tevent.target = event.rootEl = nearest;\n\t\t\t\tevent.preventDefault = void 0;\n\t\t\t\tevent.stopPropagation = void 0;\n\t\t\t\tnearest[expando]._onDragOver(event);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * @class  Sortable\n\t * @param  {HTMLElement}  el\n\t * @param  {Object}       [options]\n\t */\n\tfunction Sortable(el, options) {\n\t\tif (!(el && el.nodeType && el.nodeType === 1)) {\n\t\t\tthrow 'Sortable: `el` must be HTMLElement, not ' + {}.toString.call(el);\n\t\t}\n\n\t\tthis.el = el; // root element\n\t\tthis.options = options = _extend({}, options);\n\n\n\t\t// Export instance\n\t\tel[expando] = this;\n\n\t\t// Default options\n\t\tvar defaults = {\n\t\t\tgroup: null,\n\t\t\tsort: true,\n\t\t\tdisabled: false,\n\t\t\tstore: null,\n\t\t\thandle: null,\n\t\t\tscroll: true,\n\t\t\tscrollSensitivity: 30,\n\t\t\tscrollSpeed: 10,\n\t\t\tbubbleScroll: true,\n\t\t\tdraggable: /[uo]l/i.test(el.nodeName) ? '>li' : '>*',\n\t\t\tswapThreshold: 1, // percentage; 0 <= x <= 1\n\t\t\tinvertSwap: false, // invert always\n\t\t\tinvertedSwapThreshold: null, // will be set to same as swapThreshold if default\n\t\t\tremoveCloneOnHide: true,\n\t\t\tdirection: function() {\n\t\t\t\treturn _detectDirection(el, this.options);\n\t\t\t},\n\t\t\tghostClass: 'sortable-ghost',\n\t\t\tchosenClass: 'sortable-chosen',\n\t\t\tdragClass: 'sortable-drag',\n\t\t\tignore: 'a, img',\n\t\t\tfilter: null,\n\t\t\tpreventOnFilter: true,\n\t\t\tanimation: 0,\n\t\t\teasing: null,\n\t\t\tsetData: function (dataTransfer, dragEl) {\n\t\t\t\tdataTransfer.setData('Text', dragEl.textContent);\n\t\t\t},\n\t\t\tdropBubble: false,\n\t\t\tdragoverBubble: false,\n\t\t\tdataIdAttr: 'data-id',\n\t\t\tdelay: 0,\n\t\t\tdelayOnTouchOnly: false,\n\t\t\ttouchStartThreshold: parseInt(window.devicePixelRatio, 10) || 1,\n\t\t\tforceFallback: false,\n\t\t\tfallbackClass: 'sortable-fallback',\n\t\t\tfallbackOnBody: false,\n\t\t\tfallbackTolerance: 0,\n\t\t\tfallbackOffset: {x: 0, y: 0},\n\t\t\tsupportPointer: Sortable.supportPointer !== false && ('PointerEvent' in window),\n\t\t\temptyInsertThreshold: 5\n\t\t};\n\n\n\t\t// Set default options\n\t\tfor (var name in defaults) {\n\t\t\t!(name in options) && (options[name] = defaults[name]);\n\t\t}\n\n\t\t_prepareGroup(options);\n\n\t\t// Bind all private methods\n\t\tfor (var fn in this) {\n\t\t\tif (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n\t\t\t\tthis[fn] = this[fn].bind(this);\n\t\t\t}\n\t\t}\n\n\t\t// Setup drag mode\n\t\tthis.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n\t\tif (this.nativeDraggable) {\n\t\t\t// Touch start threshold cannot be greater than the native dragstart threshold\n\t\t\tthis.options.touchStartThreshold = 1;\n\t\t}\n\n\t\t// Bind events\n\t\tif (options.supportPointer) {\n\t\t\t_on(el, 'pointerdown', this._onTapStart);\n\t\t} else {\n\t\t\t_on(el, 'mousedown', this._onTapStart);\n\t\t\t_on(el, 'touchstart', this._onTapStart);\n\t\t}\n\n\t\tif (this.nativeDraggable) {\n\t\t\t_on(el, 'dragover', this);\n\t\t\t_on(el, 'dragenter', this);\n\t\t}\n\n\t\tsortables.push(this.el);\n\n\t\t// Restore sorting\n\t\toptions.store && options.store.get && this.sort(options.store.get(this) || []);\n\t}\n\n\tSortable.prototype = /** @lends Sortable.prototype */ {\n\t\tconstructor: Sortable,\n\n\t\t_computeIsAligned: function(evt) {\n\t\t\tvar target;\n\n\t\t\tif (ghostEl && !supportCssPointerEvents) {\n\t\t\t\t_hideGhostForTarget();\n\t\t\t\ttarget = document.elementFromPoint(evt.clientX, evt.clientY);\n\t\t\t\t_unhideGhostForTarget();\n\t\t\t} else {\n\t\t\t\ttarget = evt.target;\n\t\t\t}\n\n\t\t\ttarget = _closest(target, this.options.draggable, this.el, false);\n\t\t\tif (_alignedSilent) return;\n\t\t\tif (!dragEl || dragEl.parentNode !== this.el) return;\n\n\t\t\tvar children = this.el.children;\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t// Don't change for target in case it is changed to aligned before onDragOver is fired\n\t\t\t\tif (_closest(children[i], this.options.draggable, this.el, false) && children[i] !== target) {\n\t\t\t\t\tchildren[i].sortableMouseAligned = _isClientInRowColumn(evt.clientX, evt.clientY, children[i], this._getDirection(evt, null), this.options);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Used for nulling last target when not in element, nothing to do with checking if aligned\n\t\t\tif (!_closest(target, this.options.draggable, this.el, true)) {\n\t\t\t\tlastTarget = null;\n\t\t\t}\n\n\t\t\t_alignedSilent = true;\n\t\t\tsetTimeout(function() {\n\t\t\t\t_alignedSilent = false;\n\t\t\t}, 30);\n\n\t\t},\n\n\t\t_getDirection: function(evt, target) {\n\t\t\treturn (typeof this.options.direction === 'function') ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n\t\t},\n\n\t\t_onTapStart: function (/** Event|TouchEvent */evt) {\n\t\t\tif (!evt.cancelable) return;\n\t\t\tvar _this = this,\n\t\t\t\tel = this.el,\n\t\t\t\toptions = this.options,\n\t\t\t\tpreventOnFilter = options.preventOnFilter,\n\t\t\t\ttype = evt.type,\n\t\t\t\ttouch = evt.touches && evt.touches[0],\n\t\t\t\ttarget = (touch || evt).target,\n\t\t\t\toriginalTarget = evt.target.shadowRoot && ((evt.path && evt.path[0]) || (evt.composedPath && evt.composedPath()[0])) || target,\n\t\t\t\tfilter = options.filter,\n\t\t\t\tstartIndex,\n\t\t\t\tstartDraggableIndex;\n\n\t\t\t_saveInputCheckedState(el);\n\n\t\t\t// Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\t\t\tif (dragEl) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n\t\t\t\treturn; // only left button and enabled\n\t\t\t}\n\n\t\t\t// cancel dnd if original target is content editable\n\t\t\tif (originalTarget.isContentEditable) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget = _closest(target, options.draggable, el, false);\n\n\n\t\t\tif (lastDownEl === target) {\n\t\t\t\t// Ignoring duplicate `down`\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get the index of the dragged element within its parent\n\t\t\tstartIndex = _index(target);\n\t\t\tstartDraggableIndex = _index(target, options.draggable);\n\n\t\t\t// Check filter\n\t\t\tif (typeof filter === 'function') {\n\t\t\t\tif (filter.call(this, evt, target, this)) {\n\t\t\t\t\t_dispatchEvent(_this, originalTarget, 'filter', target, el, el, startIndex, undefined, startDraggableIndex);\n\t\t\t\t\tpreventOnFilter && evt.cancelable && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (filter) {\n\t\t\t\tfilter = filter.split(',').some(function (criteria) {\n\t\t\t\t\tcriteria = _closest(originalTarget, criteria.trim(), el, false);\n\n\t\t\t\t\tif (criteria) {\n\t\t\t\t\t\t_dispatchEvent(_this, criteria, 'filter', target, el, el, startIndex, undefined, startDraggableIndex);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (filter) {\n\t\t\t\t\tpreventOnFilter && evt.cancelable && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.handle && !_closest(originalTarget, options.handle, el, false)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Prepare `dragstart`\n\t\t\tthis._prepareDragStart(evt, touch, target, startIndex, startDraggableIndex);\n\t\t},\n\n\n\t\t_handleAutoScroll: function(evt, fallback) {\n\t\t\tif (!dragEl || !this.options.scroll) return;\n\t\t\tvar x = evt.clientX,\n\t\t\t\ty = evt.clientY,\n\n\t\t\t\telem = document.elementFromPoint(x, y),\n\t\t\t\t_this = this;\n\n\t\t\t// IE does not seem to have native autoscroll,\n\t\t\t// Edge's autoscroll seems too conditional,\n\t\t\t// MACOS Safari does not have autoscroll,\n\t\t\t// Firefox and Chrome are good\n\t\t\tif (fallback || Edge || IE11OrLess || Safari) {\n\t\t\t\t_autoScroll(evt, _this.options, elem, fallback);\n\n\t\t\t\t// Listener for pointer element change\n\t\t\t\tvar ogElemScroller = _getParentAutoScrollElement(elem, true);\n\t\t\t\tif (\n\t\t\t\t\tscrolling &&\n\t\t\t\t\t(\n\t\t\t\t\t\t!pointerElemChangedInterval ||\n\t\t\t\t\t\tx !== lastPointerElemX ||\n\t\t\t\t\t\ty !== lastPointerElemY\n\t\t\t\t\t)\n\t\t\t\t) {\n\n\t\t\t\t\tpointerElemChangedInterval && clearInterval(pointerElemChangedInterval);\n\t\t\t\t\t// Detect for pointer elem change, emulating native DnD behaviour\n\t\t\t\t\tpointerElemChangedInterval = setInterval(function() {\n\t\t\t\t\t\tif (!dragEl) return;\n\t\t\t\t\t\t// could also check if scroll direction on newElem changes due to parent autoscrolling\n\t\t\t\t\t\tvar newElem = _getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\t\t\t\t\t\tif (newElem !== ogElemScroller) {\n\t\t\t\t\t\t\togElemScroller = newElem;\n\t\t\t\t\t\t\t_clearAutoScrolls();\n\t\t\t\t\t\t\t_autoScroll(evt, _this.options, ogElemScroller, fallback);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 10);\n\t\t\t\t\tlastPointerElemX = x;\n\t\t\t\t\tlastPointerElemY = y;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n\t\t\t\tif (!_this.options.bubbleScroll || _getParentAutoScrollElement(elem, true) === _getWindowScrollingElement()) {\n\t\t\t\t\t_clearAutoScrolls();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t_autoScroll(evt, _this.options, _getParentAutoScrollElement(elem, false), false);\n\t\t\t}\n\t\t},\n\n\t\t_prepareDragStart: function (/** Event */evt, /** Touch */touch, /** HTMLElement */target, /** Number */startIndex, /** Number */startDraggableIndex) {\n\t\t\tvar _this = this,\n\t\t\t\tel = _this.el,\n\t\t\t\toptions = _this.options,\n\t\t\t\townerDocument = el.ownerDocument,\n\t\t\t\tdragStartFn;\n\n\t\t\tif (target && !dragEl && (target.parentNode === el)) {\n\t\t\t\trootEl = el;\n\t\t\t\tdragEl = target;\n\t\t\t\tparentEl = dragEl.parentNode;\n\t\t\t\tnextEl = dragEl.nextSibling;\n\t\t\t\tlastDownEl = target;\n\t\t\t\tactiveGroup = options.group;\n\t\t\t\toldIndex = startIndex;\n\t\t\t\toldDraggableIndex = startDraggableIndex;\n\n\t\t\t\ttapEvt = {\n\t\t\t\t\ttarget: dragEl,\n\t\t\t\t\tclientX: (touch || evt).clientX,\n\t\t\t\t\tclientY: (touch || evt).clientY\n\t\t\t\t};\n\n\t\t\t\tthis._lastX = (touch || evt).clientX;\n\t\t\t\tthis._lastY = (touch || evt).clientY;\n\n\t\t\t\tdragEl.style['will-change'] = 'all';\n\t\t\t\t// undo animation if needed\n\t\t\t\tdragEl.style.transition = '';\n\t\t\t\tdragEl.style.transform = '';\n\n\t\t\t\tdragStartFn = function () {\n\t\t\t\t\t// Delayed drag has been triggered\n\t\t\t\t\t// we can re-enable the events: touchmove/mousemove\n\t\t\t\t\t_this._disableDelayedDragEvents();\n\n\t\t\t\t\tif (!FireFox && _this.nativeDraggable) {\n\t\t\t\t\t\tdragEl.draggable = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Bind the events: dragstart/dragend\n\t\t\t\t\t_this._triggerDragStart(evt, touch);\n\n\t\t\t\t\t// Drag start event\n\t\t\t\t\t_dispatchEvent(_this, rootEl, 'choose', dragEl, rootEl, rootEl, oldIndex, undefined, oldDraggableIndex);\n\n\t\t\t\t\t// Chosen item\n\t\t\t\t\t_toggleClass(dragEl, options.chosenClass, true);\n\t\t\t\t};\n\n\t\t\t\t// Disable \"draggable\"\n\t\t\t\toptions.ignore.split(',').forEach(function (criteria) {\n\t\t\t\t\t_find(dragEl, criteria.trim(), _disableDraggable);\n\t\t\t\t});\n\n\t\t\t\t_on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n\t\t\t\t_on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n\t\t\t\t_on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n\n\t\t\t\t_on(ownerDocument, 'mouseup', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchend', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchcancel', _this._onDrop);\n\n\t\t\t\t// Make dragEl draggable (must be before delay for FireFox)\n\t\t\t\tif (FireFox && this.nativeDraggable) {\n\t\t\t\t\tthis.options.touchStartThreshold = 4;\n\t\t\t\t\tdragEl.draggable = true;\n\t\t\t\t}\n\n\t\t\t\t// Delay is impossible for native DnD in Edge or IE\n\t\t\t\tif (options.delay && (options.delayOnTouchOnly ? touch : true) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n\t\t\t\t\t// If the user moves the pointer or let go the click or touch\n\t\t\t\t\t// before the delay has been reached:\n\t\t\t\t\t// disable the delayed drag\n\t\t\t\t\t_on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n\t\t\t\t\t_on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n\t\t\t\t\toptions.supportPointer && _on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n\n\t\t\t\t\t_this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n\t\t\t\t} else {\n\t\t\t\t\tdragStartFn();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_delayedDragTouchMoveHandler: function (/** TouchEvent|PointerEvent **/e) {\n\t\t\tvar touch = e.touches ? e.touches[0] : e;\n\t\t\tif (max(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY))\n\t\t\t\t\t>= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))\n\t\t\t) {\n\t\t\t\tthis._disableDelayedDrag();\n\t\t\t}\n\t\t},\n\n\t\t_disableDelayedDrag: function () {\n\t\t\tdragEl && _disableDraggable(dragEl);\n\t\t\tclearTimeout(this._dragStartTimer);\n\n\t\t\tthis._disableDelayedDragEvents();\n\t\t},\n\n\t\t_disableDelayedDragEvents: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\t\t\t_off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchend', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n\t\t\t_off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n\t\t\t_off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n\t\t},\n\n\t\t_triggerDragStart: function (/** Event */evt, /** Touch */touch) {\n\t\t\ttouch = touch || (evt.pointerType == 'touch' ? evt : null);\n\n\t\t\tif (!this.nativeDraggable || touch) {\n\t\t\t\tif (this.options.supportPointer) {\n\t\t\t\t\t_on(document, 'pointermove', this._onTouchMove);\n\t\t\t\t} else if (touch) {\n\t\t\t\t\t_on(document, 'touchmove', this._onTouchMove);\n\t\t\t\t} else {\n\t\t\t\t\t_on(document, 'mousemove', this._onTouchMove);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t_on(dragEl, 'dragend', this);\n\t\t\t\t_on(rootEl, 'dragstart', this._onDragStart);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t// Timeout neccessary for IE9\n\t\t\t\t\t_nextTick(function () {\n\t\t\t\t\t\tdocument.selection.empty();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t}\n\t\t},\n\n\t\t_dragStarted: function (fallback, evt) {\n\t\t\tawaitingDragStarted = false;\n\t\t\tif (rootEl && dragEl) {\n\t\t\t\tif (this.nativeDraggable) {\n\t\t\t\t\t_on(document, 'dragover', this._handleAutoScroll);\n\t\t\t\t\t_on(document, 'dragover', _checkAlignment);\n\t\t\t\t}\n\t\t\t\tvar options = this.options;\n\n\t\t\t\t// Apply effect\n\t\t\t\t!fallback && _toggleClass(dragEl, options.dragClass, false);\n\t\t\t\t_toggleClass(dragEl, options.ghostClass, true);\n\n\t\t\t\t// In case dragging an animated element\n\t\t\t\t_css(dragEl, 'transform', '');\n\n\t\t\t\tSortable.active = this;\n\n\t\t\t\tfallback && this._appendGhost();\n\n\t\t\t\t// Drag start event\n\t\t\t\t_dispatchEvent(this, rootEl, 'start', dragEl, rootEl, rootEl, oldIndex, undefined, oldDraggableIndex, undefined, evt);\n\t\t\t} else {\n\t\t\t\tthis._nulling();\n\t\t\t}\n\t\t},\n\n\t\t_emulateDragOver: function (forAutoScroll) {\n\t\t\tif (touchEvt) {\n\t\t\t\tif (this._lastX === touchEvt.clientX && this._lastY === touchEvt.clientY && !forAutoScroll) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._lastX = touchEvt.clientX;\n\t\t\t\tthis._lastY = touchEvt.clientY;\n\n\t\t\t\t_hideGhostForTarget();\n\n\t\t\t\tvar target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n\t\t\t\tvar parent = target;\n\n\t\t\t\twhile (target && target.shadowRoot) {\n\t\t\t\t\ttarget = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n\t\t\t\t\tif (target === parent) break;\n\t\t\t\t\tparent = target;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tif (parent[expando]) {\n\t\t\t\t\t\t\tvar inserted;\n\n\t\t\t\t\t\t\tinserted = parent[expando]._onDragOver({\n\t\t\t\t\t\t\t\tclientX: touchEvt.clientX,\n\t\t\t\t\t\t\t\tclientY: touchEvt.clientY,\n\t\t\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\t\t\trootEl: parent\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (inserted && !this.options.dragoverBubble) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttarget = parent; // store last element\n\t\t\t\t\t}\n\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\twhile (parent = parent.parentNode);\n\t\t\t\t}\n\t\t\t\tdragEl.parentNode[expando]._computeIsAligned(touchEvt);\n\n\t\t\t\t_unhideGhostForTarget();\n\t\t\t}\n\t\t},\n\n\n\t\t_onTouchMove: function (/**TouchEvent*/evt, forAutoScroll) {\n\t\t\tif (tapEvt) {\n\t\t\t\tvar\toptions = this.options,\n\t\t\t\t\tfallbackTolerance = options.fallbackTolerance,\n\t\t\t\t\tfallbackOffset = options.fallbackOffset,\n\t\t\t\t\ttouch = evt.touches ? evt.touches[0] : evt,\n\t\t\t\t\tmatrix = ghostEl && _matrix(ghostEl),\n\t\t\t\t\tscaleX = ghostEl && matrix && matrix.a,\n\t\t\t\t\tscaleY = ghostEl && matrix && matrix.d,\n\t\t\t\t\trelativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && _getRelativeScrollOffset(ghostRelativeParent),\n\t\t\t\t\tdx = ((touch.clientX - tapEvt.clientX)\n\t\t\t\t\t\t\t+ fallbackOffset.x) / (scaleX || 1)\n\t\t\t\t\t\t\t+ (relativeScrollOffset ? (relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0]) : 0) / (scaleX || 1),\n\t\t\t\t\tdy = ((touch.clientY - tapEvt.clientY)\n\t\t\t\t\t\t\t+ fallbackOffset.y) / (scaleY || 1)\n\t\t\t\t\t\t\t+ (relativeScrollOffset ? (relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1]) : 0) / (scaleY || 1),\n\t\t\t\t\ttranslate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)';\n\n\t\t\t\t// only set the status to dragging, when we are actually dragging\n\t\t\t\tif (!Sortable.active && !awaitingDragStarted) {\n\t\t\t\t\tif (fallbackTolerance &&\n\t\t\t\t\t\tmin(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY)) < fallbackTolerance\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._onDragStart(evt, true);\n\t\t\t\t}\n\n\t\t\t\t!forAutoScroll && this._handleAutoScroll(touch, true);\n\n\t\t\t\tmoved = true;\n\t\t\t\ttouchEvt = touch;\n\n\t\t\t\t_css(ghostEl, 'webkitTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'mozTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'msTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'transform', translate3d);\n\n\t\t\t\tevt.cancelable && evt.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\t_appendGhost: function () {\n\t\t\t// Bug if using scale(): https://stackoverflow.com/questions/2637058\n\t\t\t// Not being adjusted for\n\t\t\tif (!ghostEl) {\n\t\t\t\tvar container = this.options.fallbackOnBody ? document.body : rootEl,\n\t\t\t\t\trect = _getRect(dragEl, true, container, !PositionGhostAbsolutely),\n\t\t\t\t\tcss = _css(dragEl),\n\t\t\t\t\toptions = this.options;\n\n\t\t\t\t// Position absolutely\n\t\t\t\tif (PositionGhostAbsolutely) {\n\t\t\t\t\t// Get relatively positioned parent\n\t\t\t\t\tghostRelativeParent = container;\n\n\t\t\t\t\twhile (\n\t\t\t\t\t\t_css(ghostRelativeParent, 'position') === 'static' &&\n\t\t\t\t\t\t_css(ghostRelativeParent, 'transform') === 'none' &&\n\t\t\t\t\t\tghostRelativeParent !== document\n\t\t\t\t\t) {\n\t\t\t\t\t\tghostRelativeParent = ghostRelativeParent.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ghostRelativeParent !== document) {\n\t\t\t\t\t\tvar ghostRelativeParentRect = _getRect(ghostRelativeParent, true);\n\n\t\t\t\t\t\trect.top -= ghostRelativeParentRect.top;\n\t\t\t\t\t\trect.left -= ghostRelativeParentRect.left;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n\t\t\t\t\t\tif (ghostRelativeParent === document) ghostRelativeParent = _getWindowScrollingElement();\n\n\t\t\t\t\t\trect.top += ghostRelativeParent.scrollTop;\n\t\t\t\t\t\trect.left += ghostRelativeParent.scrollLeft;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tghostRelativeParent = _getWindowScrollingElement();\n\t\t\t\t\t}\n\t\t\t\t\tghostRelativeParentInitialScroll = _getRelativeScrollOffset(ghostRelativeParent);\n\t\t\t\t}\n\n\n\t\t\t\tghostEl = dragEl.cloneNode(true);\n\n\t\t\t\t_toggleClass(ghostEl, options.ghostClass, false);\n\t\t\t\t_toggleClass(ghostEl, options.fallbackClass, true);\n\t\t\t\t_toggleClass(ghostEl, options.dragClass, true);\n\n\t\t\t\t_css(ghostEl, 'box-sizing', 'border-box');\n\t\t\t\t_css(ghostEl, 'margin', 0);\n\t\t\t\t_css(ghostEl, 'top', rect.top);\n\t\t\t\t_css(ghostEl, 'left', rect.left);\n\t\t\t\t_css(ghostEl, 'width', rect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height);\n\t\t\t\t_css(ghostEl, 'opacity', '0.8');\n\t\t\t\t_css(ghostEl, 'position', (PositionGhostAbsolutely ? 'absolute' : 'fixed'));\n\t\t\t\t_css(ghostEl, 'zIndex', '100000');\n\t\t\t\t_css(ghostEl, 'pointerEvents', 'none');\n\n\t\t\t\tcontainer.appendChild(ghostEl);\n\t\t\t}\n\t\t},\n\n\t\t_onDragStart: function (/**Event*/evt, /**boolean*/fallback) {\n\t\t\tvar _this = this;\n\t\t\tvar dataTransfer = evt.dataTransfer;\n\t\t\tvar options = _this.options;\n\n\t\t\t// Setup clone\n\t\t\tcloneEl = _clone(dragEl);\n\n\t\t\tcloneEl.draggable = false;\n\t\t\tcloneEl.style['will-change'] = '';\n\n\t\t\tthis._hideClone();\n\n\t\t\t_toggleClass(cloneEl, _this.options.chosenClass, false);\n\n\n\t\t\t// #1143: IFrame support workaround\n\t\t\t_this._cloneId = _nextTick(function () {\n\t\t\t\tif (!_this.options.removeCloneOnHide) {\n\t\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t}\n\t\t\t\t_dispatchEvent(_this, rootEl, 'clone', dragEl);\n\t\t\t});\n\n\n\t\t\t!fallback && _toggleClass(dragEl, options.dragClass, true);\n\n\t\t\t// Set proper drop events\n\t\t\tif (fallback) {\n\t\t\t\tignoreNextClick = true;\n\t\t\t\t_this._loopId = setInterval(_this._emulateDragOver, 50);\n\t\t\t} else {\n\t\t\t\t// Undo what was set in _prepareDragStart before drag started\n\t\t\t\t_off(document, 'mouseup', _this._onDrop);\n\t\t\t\t_off(document, 'touchend', _this._onDrop);\n\t\t\t\t_off(document, 'touchcancel', _this._onDrop);\n\n\t\t\t\tif (dataTransfer) {\n\t\t\t\t\tdataTransfer.effectAllowed = 'move';\n\t\t\t\t\toptions.setData && options.setData.call(_this, dataTransfer, dragEl);\n\t\t\t\t}\n\n\t\t\t\t_on(document, 'drop', _this);\n\n\t\t\t\t// #1276 fix:\n\t\t\t\t_css(dragEl, 'transform', 'translateZ(0)');\n\t\t\t}\n\n\t\t\tawaitingDragStarted = true;\n\n\t\t\t_this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n\t\t\t_on(document, 'selectstart', _this);\n\t\t\tif (Safari) {\n\t\t\t\t_css(document.body, 'user-select', 'none');\n\t\t\t}\n\t\t},\n\n\n\t\t// Returns true - if no further action is needed (either inserted or another condition)\n\t\t_onDragOver: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\ttarget = evt.target,\n\t\t\t\tdragRect,\n\t\t\t\ttargetRect,\n\t\t\t\trevert,\n\t\t\t\toptions = this.options,\n\t\t\t\tgroup = options.group,\n\t\t\t\tactiveSortable = Sortable.active,\n\t\t\t\tisOwner = (activeGroup === group),\n\t\t\t\tcanSort = options.sort,\n\t\t\t\t_this = this;\n\n\t\t\tif (_silent) return;\n\n\t\t\t// Return invocation when dragEl is inserted (or completed)\n\t\t\tfunction completed(insertion) {\n\t\t\t\tif (insertion) {\n\t\t\t\t\tif (isOwner) {\n\t\t\t\t\t\tactiveSortable._hideClone();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveSortable._showClone(_this);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (activeSortable) {\n\t\t\t\t\t\t// Set ghost class to new sortable's ghost class\n\t\t\t\t\t\t_toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n\t\t\t\t\t\t_toggleClass(dragEl, options.ghostClass, true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (putSortable !== _this && _this !== Sortable.active) {\n\t\t\t\t\t\tputSortable = _this;\n\t\t\t\t\t} else if (_this === Sortable.active) {\n\t\t\t\t\t\tputSortable = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Animation\n\t\t\t\t\tdragRect && _this._animate(dragRect, dragEl);\n\t\t\t\t\ttarget && targetRect && _this._animate(targetRect, target);\n\t\t\t\t}\n\n\n\t\t\t\t// Null lastTarget if it is not inside a previously swapped element\n\t\t\t\tif ((target === dragEl && !dragEl.animated) || (target === el && !target.animated)) {\n\t\t\t\t\tlastTarget = null;\n\t\t\t\t}\n\n\t\t\t\t// no bubbling and not fallback\n\t\t\t\tif (!options.dragoverBubble && !evt.rootEl && target !== document) {\n\t\t\t\t\t_this._handleAutoScroll(evt);\n\t\t\t\t\tdragEl.parentNode[expando]._computeIsAligned(evt);\n\n\t\t\t\t\t// Do not detect for empty insert if already inserted\n\t\t\t\t\t!insertion && nearestEmptyInsertDetectEvent(evt);\n\t\t\t\t}\n\n\t\t\t\t!options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Call when dragEl has been inserted\n\t\t\tfunction changed() {\n\t\t\t\t_dispatchEvent(_this, rootEl, 'change', target, el, rootEl, oldIndex, _index(dragEl), oldDraggableIndex, _index(dragEl, options.draggable), evt);\n\t\t\t}\n\n\n\t\t\tif (evt.preventDefault !== void 0) {\n\t\t\t\tevt.cancelable && evt.preventDefault();\n\t\t\t}\n\n\n\t\t\tmoved = true;\n\n\t\t\ttarget = _closest(target, options.draggable, el, true);\n\n\t\t\t// target is dragEl or target is animated\n\t\t\tif (dragEl.contains(evt.target) || target.animated) {\n\t\t\t\treturn completed(false);\n\t\t\t}\n\n\t\t\tif (target !== dragEl) {\n\t\t\t\tignoreNextClick = false;\n\t\t\t}\n\n\t\t\tif (activeSortable && !options.disabled &&\n\t\t\t\t(isOwner\n\t\t\t\t\t? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n\t\t\t\t\t: (\n\t\t\t\t\t\tputSortable === this ||\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) &&\n\t\t\t\t\t\t\tgroup.checkPut(this, activeSortable, dragEl, evt)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tvar axis = this._getDirection(evt, target);\n\n\t\t\t\tdragRect = _getRect(dragEl);\n\n\t\t\t\tif (revert) {\n\t\t\t\t\tthis._hideClone();\n\t\t\t\t\tparentEl = rootEl; // actualization\n\n\t\t\t\t\tif (nextEl) {\n\t\t\t\t\t\trootEl.insertBefore(dragEl, nextEl);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trootEl.appendChild(dragEl);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn completed(true);\n\t\t\t\t}\n\n\t\t\t\tvar elLastChild = _lastChild(el);\n\n\t\t\t\tif (!elLastChild || _ghostIsLast(evt, axis, el) && !elLastChild.animated) {\n\t\t\t\t\t// assign target only if condition is true\n\t\t\t\t\tif (elLastChild && el === evt.target) {\n\t\t\t\t\t\ttarget = elLastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (target) {\n\t\t\t\t\t\ttargetRect = _getRect(target);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isOwner) {\n\t\t\t\t\t\tactiveSortable._hideClone();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveSortable._showClone(this);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\tparentEl = el; // actualization\n\t\t\t\t\t\trealDragElRect = null;\n\n\t\t\t\t\t\tchanged();\n\t\t\t\t\t\treturn completed(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (target && target !== dragEl && target.parentNode === el) {\n\t\t\t\t\tvar direction = 0,\n\t\t\t\t\t\ttargetBeforeFirstSwap,\n\t\t\t\t\t\taligned = target.sortableMouseAligned,\n\t\t\t\t\t\tdifferentLevel = dragEl.parentNode !== el,\n\t\t\t\t\t\tside1 = axis === 'vertical' ? 'top' : 'left',\n\t\t\t\t\t\tscrolledPastTop = _isScrolledPast(target, 'top') || _isScrolledPast(dragEl, 'top'),\n\t\t\t\t\t\tscrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n\n\t\t\t\t\tif (lastTarget !== target) {\n\t\t\t\t\t\tlastMode = null;\n\t\t\t\t\t\ttargetBeforeFirstSwap = _getRect(target)[side1];\n\t\t\t\t\t\tpastFirstInvertThresh = false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Reference: https://www.lucidchart.com/documents/view/10fa0e93-e362-4126-aca2-b709ee56bd8b/0\n\t\t\t\t\tif (\n\t\t\t\t\t\t_isElInRowColumn(dragEl, target, axis) && aligned ||\n\t\t\t\t\t\tdifferentLevel ||\n\t\t\t\t\t\tscrolledPastTop ||\n\t\t\t\t\t\toptions.invertSwap ||\n\t\t\t\t\t\tlastMode === 'insert' ||\n\t\t\t\t\t\t// Needed, in the case that we are inside target and inserted because not aligned... aligned will stay false while inside\n\t\t\t\t\t\t// and lastMode will change to 'insert', but we must swap\n\t\t\t\t\t\tlastMode === 'swap'\n\t\t\t\t\t) {\n\t\t\t\t\t\t// New target that we will be inside\n\t\t\t\t\t\tif (lastMode !== 'swap') {\n\t\t\t\t\t\t\tisCircumstantialInvert = options.invertSwap || differentLevel;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdirection = _getSwapDirection(evt, target, axis,\n\t\t\t\t\t\t\toptions.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold,\n\t\t\t\t\t\t\tisCircumstantialInvert,\n\t\t\t\t\t\t\tlastTarget === target);\n\t\t\t\t\t\tlastMode = 'swap';\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Insert at position\n\t\t\t\t\t\tdirection = _getInsertDirection(target);\n\t\t\t\t\t\tlastMode = 'insert';\n\t\t\t\t\t}\n\t\t\t\t\tif (direction === 0) return completed(false);\n\n\t\t\t\t\trealDragElRect = null;\n\t\t\t\t\tlastTarget = target;\n\n\t\t\t\t\tlastDirection = direction;\n\n\t\t\t\t\ttargetRect = _getRect(target);\n\n\t\t\t\t\tvar nextSibling = target.nextElementSibling,\n\t\t\t\t\t\tafter = false;\n\n\t\t\t\t\tafter = direction === 1;\n\n\t\t\t\t\tvar moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n\t\t\t\t\tif (moveVector !== false) {\n\t\t\t\t\t\tif (moveVector === 1 || moveVector === -1) {\n\t\t\t\t\t\t\tafter = (moveVector === 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_silent = true;\n\t\t\t\t\t\tsetTimeout(_unsilent, 30);\n\n\t\t\t\t\t\tif (isOwner) {\n\t\t\t\t\t\t\tactiveSortable._hideClone();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tactiveSortable._showClone(this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (after && !nextSibling) {\n\t\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Undo chrome's scroll adjustment\n\t\t\t\t\t\tif (scrolledPastTop) {\n\t\t\t\t\t\t\t_scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparentEl = dragEl.parentNode; // actualization\n\n\t\t\t\t\t\t// must be done before animation\n\t\t\t\t\t\tif (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n\t\t\t\t\t\t\ttargetMoveDistance = abs(targetBeforeFirstSwap - _getRect(target)[side1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchanged();\n\n\t\t\t\t\t\treturn completed(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (el.contains(dragEl)) {\n\t\t\t\t\treturn completed(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\t_animate: function (prevRect, target) {\n\t\t\tvar ms = this.options.animation;\n\n\t\t\tif (ms) {\n\t\t\t\tvar currentRect = _getRect(target);\n\n\t\t\t\tif (target === dragEl) {\n\t\t\t\t\trealDragElRect = currentRect;\n\t\t\t\t}\n\n\t\t\t\tif (prevRect.nodeType === 1) {\n\t\t\t\t\tprevRect = _getRect(prevRect);\n\t\t\t\t}\n\n\t\t\t\t// Check if actually moving position\n\t\t\t\tif ((prevRect.left + prevRect.width / 2) !== (currentRect.left + currentRect.width / 2)\n\t\t\t\t\t|| (prevRect.top + prevRect.height / 2) !== (currentRect.top + currentRect.height / 2)\n\t\t\t\t) {\n\t\t\t\t\tvar matrix = _matrix(this.el),\n\t\t\t\t\t\tscaleX = matrix && matrix.a,\n\t\t\t\t\t\tscaleY = matrix && matrix.d;\n\n\t\t\t\t\t_css(target, 'transition', 'none');\n\t\t\t\t\t_css(target, 'transform', 'translate3d('\n\t\t\t\t\t\t+ (prevRect.left - currentRect.left) / (scaleX ? scaleX : 1) + 'px,'\n\t\t\t\t\t\t+ (prevRect.top - currentRect.top) / (scaleY ? scaleY : 1) + 'px,0)'\n\t\t\t\t\t);\n\n\t\t\t\t\tthis._repaint(target);\n\t\t\t\t\t_css(target, 'transition', 'transform ' + ms + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n\t\t\t\t\t_css(target, 'transform', 'translate3d(0,0,0)');\n\t\t\t\t}\n\n\t\t\t\t(typeof target.animated === 'number') && clearTimeout(target.animated);\n\t\t\t\ttarget.animated = setTimeout(function () {\n\t\t\t\t\t_css(target, 'transition', '');\n\t\t\t\t\t_css(target, 'transform', '');\n\t\t\t\t\ttarget.animated = false;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t},\n\n\t\t_repaint: function(target) {\n\t\t\treturn target.offsetWidth;\n\t\t},\n\n\t\t_offMoveEvents: function() {\n\t\t\t_off(document, 'touchmove', this._onTouchMove);\n\t\t\t_off(document, 'pointermove', this._onTouchMove);\n\t\t\t_off(document, 'dragover', nearestEmptyInsertDetectEvent);\n\t\t\t_off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n\t\t\t_off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n\t\t},\n\n\t\t_offUpEvents: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\t_off(ownerDocument, 'mouseup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchend', this._onDrop);\n\t\t\t_off(ownerDocument, 'pointerup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchcancel', this._onDrop);\n\t\t\t_off(document, 'selectstart', this);\n\t\t},\n\n\t\t_onDrop: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\toptions = this.options;\n\t\t\tawaitingDragStarted = false;\n\t\t\tscrolling = false;\n\t\t\tisCircumstantialInvert = false;\n\t\t\tpastFirstInvertThresh = false;\n\n\t\t\tclearInterval(this._loopId);\n\n\t\t\tclearInterval(pointerElemChangedInterval);\n\t\t\t_clearAutoScrolls();\n\t\t\t_cancelThrottle();\n\n\t\t\tclearTimeout(this._dragStartTimer);\n\n\t\t\t_cancelNextTick(this._cloneId);\n\t\t\t_cancelNextTick(this._dragStartId);\n\n\t\t\t// Unbind events\n\t\t\t_off(document, 'mousemove', this._onTouchMove);\n\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(document, 'drop', this);\n\t\t\t\t_off(el, 'dragstart', this._onDragStart);\n\t\t\t\t_off(document, 'dragover', this._handleAutoScroll);\n\t\t\t\t_off(document, 'dragover', _checkAlignment);\n\t\t\t}\n\n\t\t\tif (Safari) {\n\t\t\t\t_css(document.body, 'user-select', '');\n\t\t\t}\n\n\t\t\tthis._offMoveEvents();\n\t\t\tthis._offUpEvents();\n\n\t\t\tif (evt) {\n\t\t\t\tif (moved) {\n\t\t\t\t\tevt.cancelable && evt.preventDefault();\n\t\t\t\t\t!options.dropBubble && evt.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n\t\t\t\tif (rootEl === parentEl || (putSortable && putSortable.lastPutMode !== 'clone')) {\n\t\t\t\t\t// Remove clone\n\t\t\t\t\tcloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n\t\t\t\t}\n\n\t\t\t\tif (dragEl) {\n\t\t\t\t\tif (this.nativeDraggable) {\n\t\t\t\t\t\t_off(dragEl, 'dragend', this);\n\t\t\t\t\t}\n\n\t\t\t\t\t_disableDraggable(dragEl);\n\t\t\t\t\tdragEl.style['will-change'] = '';\n\n\t\t\t\t\t// Remove class's\n\t\t\t\t\t_toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n\t\t\t\t\t_toggleClass(dragEl, this.options.chosenClass, false);\n\n\t\t\t\t\t// Drag stop event\n\t\t\t\t\t_dispatchEvent(this, rootEl, 'unchoose', dragEl, parentEl, rootEl, oldIndex, null, oldDraggableIndex, null, evt);\n\n\t\t\t\t\tif (rootEl !== parentEl) {\n\t\t\t\t\t\tnewIndex = _index(dragEl);\n\t\t\t\t\t\tnewDraggableIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t// Add event\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'add', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\n\t\t\t\t\t\t\t// Remove event\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'remove', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\n\t\t\t\t\t\t\t// drag from one list and drop into another\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tputSortable && putSortable.save();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (dragEl.nextSibling !== nextEl) {\n\t\t\t\t\t\t\t// Get the index of the dragged element within its parent\n\t\t\t\t\t\t\tnewIndex = _index(dragEl);\n\t\t\t\t\t\t\tnewDraggableIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t\t// drag & drop within the same list\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'update', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Sortable.active) {\n\t\t\t\t\t\t/* jshint eqnull:true */\n\t\t\t\t\t\tif (newIndex == null || newIndex === -1) {\n\t\t\t\t\t\t\tnewIndex = oldIndex;\n\t\t\t\t\t\t\tnewDraggableIndex = oldDraggableIndex;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'end', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\n\t\t\t\t\t\t// Save sorting\n\t\t\t\t\t\tthis.save();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tthis._nulling();\n\t\t},\n\n\t\t_nulling: function() {\n\t\t\trootEl =\n\t\t\tdragEl =\n\t\t\tparentEl =\n\t\t\tghostEl =\n\t\t\tnextEl =\n\t\t\tcloneEl =\n\t\t\tlastDownEl =\n\n\t\t\tscrollEl =\n\t\t\tscrollParentEl =\n\t\t\tautoScrolls.length =\n\n\t\t\tpointerElemChangedInterval =\n\t\t\tlastPointerElemX =\n\t\t\tlastPointerElemY =\n\n\t\t\ttapEvt =\n\t\t\ttouchEvt =\n\n\t\t\tmoved =\n\t\t\tnewIndex =\n\t\t\toldIndex =\n\n\t\t\tlastTarget =\n\t\t\tlastDirection =\n\n\t\t\trealDragElRect =\n\n\t\t\tputSortable =\n\t\t\tactiveGroup =\n\t\t\tSortable.active = null;\n\n\t\t\tsavedInputChecked.forEach(function (el) {\n\t\t\t\tel.checked = true;\n\t\t\t});\n\n\t\t\tsavedInputChecked.length = 0;\n\t\t},\n\n\t\thandleEvent: function (/**Event*/evt) {\n\t\t\tswitch (evt.type) {\n\t\t\t\tcase 'drop':\n\t\t\t\tcase 'dragend':\n\t\t\t\t\tthis._onDrop(evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'dragenter':\n\t\t\t\tcase 'dragover':\n\t\t\t\t\tif (dragEl) {\n\t\t\t\t\t\tthis._onDragOver(evt);\n\t\t\t\t\t\t_globalDragOver(evt);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'selectstart':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Serializes the item into an array of string.\n\t\t * @returns {String[]}\n\t\t */\n\t\ttoArray: function () {\n\t\t\tvar order = [],\n\t\t\t\tel,\n\t\t\t\tchildren = this.el.children,\n\t\t\t\ti = 0,\n\t\t\t\tn = children.length,\n\t\t\t\toptions = this.options;\n\n\t\t\tfor (; i < n; i++) {\n\t\t\t\tel = children[i];\n\t\t\t\tif (_closest(el, options.draggable, this.el, false)) {\n\t\t\t\t\torder.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn order;\n\t\t},\n\n\n\t\t/**\n\t\t * Sorts the elements according to the array.\n\t\t * @param  {String[]}  order  order of the items\n\t\t */\n\t\tsort: function (order) {\n\t\t\tvar items = {}, rootEl = this.el;\n\n\t\t\tthis.toArray().forEach(function (id, i) {\n\t\t\t\tvar el = rootEl.children[i];\n\n\t\t\t\tif (_closest(el, this.options.draggable, rootEl, false)) {\n\t\t\t\t\titems[id] = el;\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\torder.forEach(function (id) {\n\t\t\t\tif (items[id]) {\n\t\t\t\t\trootEl.removeChild(items[id]);\n\t\t\t\t\trootEl.appendChild(items[id]);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * Save the current sorting\n\t\t */\n\t\tsave: function () {\n\t\t\tvar store = this.options.store;\n\t\t\tstore && store.set && store.set(this);\n\t\t},\n\n\n\t\t/**\n\t\t * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n\t\t * @param   {HTMLElement}  el\n\t\t * @param   {String}       [selector]  default: `options.draggable`\n\t\t * @returns {HTMLElement|null}\n\t\t */\n\t\tclosest: function (el, selector) {\n\t\t\treturn _closest(el, selector || this.options.draggable, this.el, false);\n\t\t},\n\n\n\t\t/**\n\t\t * Set/get option\n\t\t * @param   {string} name\n\t\t * @param   {*}      [value]\n\t\t * @returns {*}\n\t\t */\n\t\toption: function (name, value) {\n\t\t\tvar options = this.options;\n\n\t\t\tif (value === void 0) {\n\t\t\t\treturn options[name];\n\t\t\t} else {\n\t\t\t\toptions[name] = value;\n\n\t\t\t\tif (name === 'group') {\n\t\t\t\t\t_prepareGroup(options);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Destroy\n\t\t */\n\t\tdestroy: function () {\n\t\t\tvar el = this.el;\n\n\t\t\tel[expando] = null;\n\n\t\t\t_off(el, 'mousedown', this._onTapStart);\n\t\t\t_off(el, 'touchstart', this._onTapStart);\n\t\t\t_off(el, 'pointerdown', this._onTapStart);\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(el, 'dragover', this);\n\t\t\t\t_off(el, 'dragenter', this);\n\t\t\t}\n\t\t\t// Remove draggable attributes\n\t\t\tArray.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n\t\t\t\tel.removeAttribute('draggable');\n\t\t\t});\n\n\t\t\tthis._onDrop();\n\n\t\t\tsortables.splice(sortables.indexOf(this.el), 1);\n\n\t\t\tthis.el = el = null;\n\t\t},\n\n\t\t_hideClone: function() {\n\t\t\tif (!cloneEl.cloneHidden) {\n\t\t\t\t_css(cloneEl, 'display', 'none');\n\t\t\t\tcloneEl.cloneHidden = true;\n\t\t\t\tif (cloneEl.parentNode && this.options.removeCloneOnHide) {\n\t\t\t\t\tcloneEl.parentNode.removeChild(cloneEl);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_showClone: function(putSortable) {\n\t\t\tif (putSortable.lastPutMode !== 'clone') {\n\t\t\t\tthis._hideClone();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (cloneEl.cloneHidden) {\n\t\t\t\t// show clone at dragEl or original position\n\t\t\t\tif (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n\t\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t} else if (nextEl) {\n\t\t\t\t\trootEl.insertBefore(cloneEl, nextEl);\n\t\t\t\t} else {\n\t\t\t\t\trootEl.appendChild(cloneEl);\n\t\t\t\t}\n\n\t\t\t\tif (this.options.group.revertClone) {\n\t\t\t\t\tthis._animate(dragEl, cloneEl);\n\t\t\t\t}\n\t\t\t\t_css(cloneEl, 'display', '');\n\t\t\t\tcloneEl.cloneHidden = false;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n\t\tif (el) {\n\t\t\tctx = ctx || document;\n\n\t\t\tdo {\n\t\t\t\tif (\n\t\t\t\t\tselector != null &&\n\t\t\t\t\t(\n\t\t\t\t\t\tselector[0] === '>' ?\n\t\t\t\t\t\tel.parentNode === ctx && _matches(el, selector) :\n\t\t\t\t\t\t_matches(el, selector)\n\t\t\t\t\t) ||\n\t\t\t\t\tincludeCTX && el === ctx\n\t\t\t\t) {\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\n\t\t\t\tif (el === ctx) break;\n\t\t\t\t/* jshint boss:true */\n\t\t\t} while (el = _getParentOrHost(el));\n\t\t}\n\n\t\treturn null;\n\t}\n\n\n\tfunction _getParentOrHost(el) {\n\t\treturn (el.host && el !== document && el.host.nodeType)\n\t\t\t? el.host\n\t\t\t: el.parentNode;\n\t}\n\n\n\tfunction _globalDragOver(/**Event*/evt) {\n\t\tif (evt.dataTransfer) {\n\t\t\tevt.dataTransfer.dropEffect = 'move';\n\t\t}\n\t\tevt.cancelable && evt.preventDefault();\n\t}\n\n\n\tfunction _on(el, event, fn) {\n\t\tel.addEventListener(event, fn, IE11OrLess ? false : captureMode);\n\t}\n\n\n\tfunction _off(el, event, fn) {\n\t\tel.removeEventListener(event, fn, IE11OrLess ? false : captureMode);\n\t}\n\n\n\tfunction _toggleClass(el, name, state) {\n\t\tif (el && name) {\n\t\t\tif (el.classList) {\n\t\t\t\tel.classList[state ? 'add' : 'remove'](name);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n\t\t\t\tel.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _css(el, prop, val) {\n\t\tvar style = el && el.style;\n\n\t\tif (style) {\n\t\t\tif (val === void 0) {\n\t\t\t\tif (document.defaultView && document.defaultView.getComputedStyle) {\n\t\t\t\t\tval = document.defaultView.getComputedStyle(el, '');\n\t\t\t\t}\n\t\t\t\telse if (el.currentStyle) {\n\t\t\t\t\tval = el.currentStyle;\n\t\t\t\t}\n\n\t\t\t\treturn prop === void 0 ? val : val[prop];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!(prop in style) && prop.indexOf('webkit') === -1) {\n\t\t\t\t\tprop = '-webkit-' + prop;\n\t\t\t\t}\n\n\t\t\t\tstyle[prop] = val + (typeof val === 'string' ? '' : 'px');\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _matrix(el) {\n\t\tvar appliedTransforms = '';\n\t\tdo {\n\t\t\tvar transform = _css(el, 'transform');\n\n\t\t\tif (transform && transform !== 'none') {\n\t\t\t\tappliedTransforms = transform + ' ' + appliedTransforms;\n\t\t\t}\n\t\t\t/* jshint boss:true */\n\t\t} while (el = el.parentNode);\n\n\t\tif (window.DOMMatrix) {\n\t\t\treturn new DOMMatrix(appliedTransforms);\n\t\t} else if (window.WebKitCSSMatrix) {\n\t\t\treturn new WebKitCSSMatrix(appliedTransforms);\n\t\t} else if (window.CSSMatrix) {\n\t\t\treturn new CSSMatrix(appliedTransforms);\n\t\t}\n\t}\n\n\n\tfunction _find(ctx, tagName, iterator) {\n\t\tif (ctx) {\n\t\t\tvar list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;\n\n\t\t\tif (iterator) {\n\t\t\t\tfor (; i < n; i++) {\n\t\t\t\t\titerator(list[i], i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\n\n\tfunction _dispatchEvent(\n\t\tsortable, rootEl, name,\n\t\ttargetEl, toEl, fromEl,\n\t\tstartIndex, newIndex,\n\t\tstartDraggableIndex, newDraggableIndex,\n\t\toriginalEvt\n\t) {\n\t\tsortable = (sortable || rootEl[expando]);\n\t\tvar evt,\n\t\t\toptions = sortable.options,\n\t\t\tonName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n\t\t// Support for new CustomEvent feature\n\t\tif (window.CustomEvent && !IE11OrLess && !Edge) {\n\t\t\tevt = new CustomEvent(name, {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: true\n\t\t\t});\n\t\t} else {\n\t\t\tevt = document.createEvent('Event');\n\t\t\tevt.initEvent(name, true, true);\n\t\t}\n\n\t\tevt.to = toEl || rootEl;\n\t\tevt.from = fromEl || rootEl;\n\t\tevt.item = targetEl || rootEl;\n\t\tevt.clone = cloneEl;\n\n\t\tevt.oldIndex = startIndex;\n\t\tevt.newIndex = newIndex;\n\n\t\tevt.oldDraggableIndex = startDraggableIndex;\n\t\tevt.newDraggableIndex = newDraggableIndex;\n\n\t\tevt.originalEvent = originalEvt;\n\t\tevt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n\t\tif (rootEl) {\n\t\t\trootEl.dispatchEvent(evt);\n\t\t}\n\n\t\tif (options[onName]) {\n\t\t\toptions[onName].call(sortable, evt);\n\t\t}\n\t}\n\n\n\tfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvt, willInsertAfter) {\n\t\tvar evt,\n\t\t\tsortable = fromEl[expando],\n\t\t\tonMoveFn = sortable.options.onMove,\n\t\t\tretVal;\n\t\t// Support for new CustomEvent feature\n\t\tif (window.CustomEvent && !IE11OrLess && !Edge) {\n\t\t\tevt = new CustomEvent('move', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: true\n\t\t\t});\n\t\t} else {\n\t\t\tevt = document.createEvent('Event');\n\t\t\tevt.initEvent('move', true, true);\n\t\t}\n\n\t\tevt.to = toEl;\n\t\tevt.from = fromEl;\n\t\tevt.dragged = dragEl;\n\t\tevt.draggedRect = dragRect;\n\t\tevt.related = targetEl || toEl;\n\t\tevt.relatedRect = targetRect || _getRect(toEl);\n\t\tevt.willInsertAfter = willInsertAfter;\n\n\t\tevt.originalEvent = originalEvt;\n\n\t\tfromEl.dispatchEvent(evt);\n\n\t\tif (onMoveFn) {\n\t\t\tretVal = onMoveFn.call(sortable, evt, originalEvt);\n\t\t}\n\n\t\treturn retVal;\n\t}\n\n\tfunction _disableDraggable(el) {\n\t\tel.draggable = false;\n\t}\n\n\tfunction _unsilent() {\n\t\t_silent = false;\n\t}\n\n\t/**\n\t * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n\t * and non-draggable elements\n\t * @param  {HTMLElement} el       The parent element\n\t * @param  {Number} childNum      The index of the child\n\t * @param  {Object} options       Parent Sortable's options\n\t * @return {HTMLElement}          The child at index childNum, or null if not found\n\t */\n\tfunction _getChild(el, childNum, options) {\n\t\tvar currentChild = 0,\n\t\t\ti = 0,\n\t\t\tchildren = el.children;\n\n\t\twhile (i < children.length) {\n\t\t\tif (\n\t\t\t\tchildren[i].style.display !== 'none' &&\n\t\t\t\tchildren[i] !== ghostEl &&\n\t\t\t\tchildren[i] !== dragEl &&\n\t\t\t\t_closest(children[i], options.draggable, el, false)\n\t\t\t) {\n\t\t\t\tif (currentChild === childNum) {\n\t\t\t\t\treturn children[i];\n\t\t\t\t}\n\t\t\t\tcurrentChild++;\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n\t * @param  {HTMLElement} el       Parent element\n\t * @return {HTMLElement}          The last child, ignoring ghostEl\n\t */\n\tfunction _lastChild(el) {\n\t\tvar last = el.lastElementChild;\n\n\t\twhile (last && (last === ghostEl || _css(last, 'display') === 'none')) {\n\t\t\tlast = last.previousElementSibling;\n\t\t}\n\n\t\treturn last || null;\n\t}\n\n\tfunction _ghostIsLast(evt, axis, el) {\n\t\tvar elRect = _getRect(_lastChild(el)),\n\t\t\tmouseOnAxis = axis === 'vertical' ? evt.clientY : evt.clientX,\n\t\t\tmouseOnOppAxis = axis === 'vertical' ? evt.clientX : evt.clientY,\n\t\t\ttargetS2 = axis === 'vertical' ? elRect.bottom : elRect.right,\n\t\t\ttargetS1Opp = axis === 'vertical' ? elRect.left : elRect.top,\n\t\t\ttargetS2Opp = axis === 'vertical' ? elRect.right : elRect.bottom,\n\t\t\tspacer = 10;\n\n\t\treturn (\n\t\t\taxis === 'vertical' ?\n\t\t\t\t(mouseOnOppAxis > targetS2Opp + spacer || mouseOnOppAxis <= targetS2Opp && mouseOnAxis > targetS2 && mouseOnOppAxis >= targetS1Opp) :\n\t\t\t\t(mouseOnAxis > targetS2 && mouseOnOppAxis > targetS1Opp || mouseOnAxis <= targetS2 && mouseOnOppAxis > targetS2Opp + spacer)\n\t\t);\n\t}\n\n\tfunction _getSwapDirection(evt, target, axis, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n\t\tvar targetRect = _getRect(target),\n\t\t\tmouseOnAxis = axis === 'vertical' ? evt.clientY : evt.clientX,\n\t\t\ttargetLength = axis === 'vertical' ? targetRect.height : targetRect.width,\n\t\t\ttargetS1 = axis === 'vertical' ? targetRect.top : targetRect.left,\n\t\t\ttargetS2 = axis === 'vertical' ? targetRect.bottom : targetRect.right,\n\t\t\tdragRect = _getRect(dragEl),\n\t\t\tinvert = false;\n\n\n\t\tif (!invertSwap) {\n\t\t\t// Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n\t\t\tif (isLastTarget && targetMoveDistance < targetLength * swapThreshold) { // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n\t\t\t\t// check if past first invert threshold on side opposite of lastDirection\n\t\t\t\tif (!pastFirstInvertThresh &&\n\t\t\t\t\t(lastDirection === 1 ?\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tmouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2\n\t\t\t\t\t\t) :\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tmouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\t// past first invert threshold, do not restrict inverted threshold to dragEl shadow\n\t\t\t\t\tpastFirstInvertThresh = true;\n\t\t\t\t}\n\n\t\t\t\tif (!pastFirstInvertThresh) {\n\t\t\t\t\tvar dragS1 = axis === 'vertical' ? dragRect.top : dragRect.left,\n\t\t\t\t\t\tdragS2 = axis === 'vertical' ? dragRect.bottom : dragRect.right;\n\t\t\t\t\t// dragEl shadow (target move distance shadow)\n\t\t\t\t\tif (\n\t\t\t\t\t\tlastDirection === 1 ?\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tmouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n\t\t\t\t\t\t) :\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tmouseOnAxis > targetS2 - targetMoveDistance\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn lastDirection * -1;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tinvert = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Regular\n\t\t\t\tif (\n\t\t\t\t\tmouseOnAxis > targetS1 + (targetLength * (1 - swapThreshold) / 2) &&\n\t\t\t\t\tmouseOnAxis < targetS2 - (targetLength * (1 - swapThreshold) / 2)\n\t\t\t\t) {\n\t\t\t\t\treturn _getInsertDirection(target);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinvert = invert || invertSwap;\n\n\t\tif (invert) {\n\t\t\t// Invert of regular\n\t\t\tif (\n\t\t\t\tmouseOnAxis < targetS1 + (targetLength * invertedSwapThreshold / 2) ||\n\t\t\t\tmouseOnAxis > targetS2 - (targetLength * invertedSwapThreshold / 2)\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn ((mouseOnAxis > targetS1 + targetLength / 2) ? 1 : -1);\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Gets the direction dragEl must be swapped relative to target in order to make it\n\t * seem that dragEl has been \"inserted\" into that element's position\n\t * @param  {HTMLElement} target       The target whose position dragEl is being inserted at\n\t * @return {Number}                   Direction dragEl must be swapped\n\t */\n\tfunction _getInsertDirection(target) {\n\t\tvar dragElIndex = _index(dragEl),\n\t\t\ttargetIndex = _index(target);\n\n\t\tif (dragElIndex < targetIndex) {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\n\t/**\n\t * Generate id\n\t * @param   {HTMLElement} el\n\t * @returns {String}\n\t * @private\n\t */\n\tfunction _generateId(el) {\n\t\tvar str = el.tagName + el.className + el.src + el.href + el.textContent,\n\t\t\ti = str.length,\n\t\t\tsum = 0;\n\n\t\twhile (i--) {\n\t\t\tsum += str.charCodeAt(i);\n\t\t}\n\n\t\treturn sum.toString(36);\n\t}\n\n\t/**\n\t * Returns the index of an element within its parent for a selected set of\n\t * elements\n\t * @param  {HTMLElement} el\n\t * @param  {selector} selector\n\t * @return {number}\n\t */\n\tfunction _index(el, selector) {\n\t\tvar index = 0;\n\n\t\tif (!el || !el.parentNode) {\n\t\t\treturn -1;\n\t\t}\n\n\t\twhile (el && (el = el.previousElementSibling)) {\n\t\t\tif ((el.nodeName.toUpperCase() !== 'TEMPLATE') && el !== cloneEl && (!selector || _matches(el, selector))) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\n\t\treturn index;\n\t}\n\n\tfunction _matches(/**HTMLElement*/el, /**String*/selector) {\n\t\tif (!selector) return;\n\n\t\tselector[0] === '>' && (selector = selector.substring(1));\n\n\t\tif (el) {\n\t\t\ttry {\n\t\t\t\tif (el.matches) {\n\t\t\t\t\treturn el.matches(selector);\n\t\t\t\t} else if (el.msMatchesSelector) {\n\t\t\t\t\treturn el.msMatchesSelector(selector);\n\t\t\t\t} else if (el.webkitMatchesSelector) {\n\t\t\t\t\treturn el.webkitMatchesSelector(selector);\n\t\t\t\t}\n\t\t\t} catch(_) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tvar _throttleTimeout;\n\tfunction _throttle(callback, ms) {\n\t\treturn function () {\n\t\t\tif (!_throttleTimeout) {\n\t\t\t\tvar args = arguments,\n\t\t\t\t\t_this = this;\n\n\t\t\t\t_throttleTimeout = setTimeout(function () {\n\t\t\t\t\tif (args.length === 1) {\n\t\t\t\t\t\tcallback.call(_this, args[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback.apply(_this, args);\n\t\t\t\t\t}\n\n\t\t\t\t\t_throttleTimeout = void 0;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction _cancelThrottle() {\n\t\tclearTimeout(_throttleTimeout);\n\t\t_throttleTimeout = void 0;\n\t}\n\n\tfunction _extend(dst, src) {\n\t\tif (dst && src) {\n\t\t\tfor (var key in src) {\n\t\t\t\tif (src.hasOwnProperty(key)) {\n\t\t\t\t\tdst[key] = src[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn dst;\n\t}\n\n\tfunction _clone(el) {\n\t\tif (Polymer && Polymer.dom) {\n\t\t\treturn Polymer.dom(el).cloneNode(true);\n\t\t}\n\t\telse if ($) {\n\t\t\treturn $(el).clone(true)[0];\n\t\t}\n\t\telse {\n\t\t\treturn el.cloneNode(true);\n\t\t}\n\t}\n\n\tfunction _saveInputCheckedState(root) {\n\t\tsavedInputChecked.length = 0;\n\n\t\tvar inputs = root.getElementsByTagName('input');\n\t\tvar idx = inputs.length;\n\n\t\twhile (idx--) {\n\t\t\tvar el = inputs[idx];\n\t\t\tel.checked && savedInputChecked.push(el);\n\t\t}\n\t}\n\n\tfunction _nextTick(fn) {\n\t\treturn setTimeout(fn, 0);\n\t}\n\n\tfunction _cancelNextTick(id) {\n\t\treturn clearTimeout(id);\n\t}\n\n\n\t/**\n\t * Returns the \"bounding client rect\" of given element\n\t * @param  {HTMLElement} el                The element whose boundingClientRect is wanted\n\t * @param  {[HTMLElement]} container       the parent the element will be placed in\n\t * @param  {[Boolean]} adjustForTransform  Whether the rect should compensate for parent's transform\n\t * @return {Object}                        The boundingClientRect of el\n\t */\n\tfunction _getRect(el, adjustForTransform, container, adjustForFixed) {\n\t\tif (!el.getBoundingClientRect && el !== win) return;\n\n\t\tvar elRect,\n\t\t\ttop,\n\t\t\tleft,\n\t\t\tbottom,\n\t\t\tright,\n\t\t\theight,\n\t\t\twidth;\n\n\t\tif (el !== win && el !== _getWindowScrollingElement()) {\n\t\t\telRect = el.getBoundingClientRect();\n\t\t\ttop = elRect.top;\n\t\t\tleft = elRect.left;\n\t\t\tbottom = elRect.bottom;\n\t\t\tright = elRect.right;\n\t\t\theight = elRect.height;\n\t\t\twidth = elRect.width;\n\t\t} else {\n\t\t\ttop = 0;\n\t\t\tleft = 0;\n\t\t\tbottom = window.innerHeight;\n\t\t\tright = window.innerWidth;\n\t\t\theight = window.innerHeight;\n\t\t\twidth = window.innerWidth;\n\t\t}\n\n\t\tif (adjustForFixed && el !== win) {\n\t\t\t// Adjust for translate()\n\t\t\tcontainer = container || el.parentNode;\n\n\t\t\t// solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n\t\t\t// Not needed on <= IE11\n\t\t\tif (!IE11OrLess) {\n\t\t\t\tdo {\n\t\t\t\t\tif (container && container.getBoundingClientRect && _css(container, 'transform') !== 'none') {\n\t\t\t\t\t\tvar containerRect = container.getBoundingClientRect();\n\n\t\t\t\t\t\t// Set relative to edges of padding box of container\n\t\t\t\t\t\ttop -= containerRect.top + parseInt(_css(container, 'border-top-width'));\n\t\t\t\t\t\tleft -= containerRect.left + parseInt(_css(container, 'border-left-width'));\n\t\t\t\t\t\tbottom = top + elRect.height;\n\t\t\t\t\t\tright = left + elRect.width;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t} while (container = container.parentNode);\n\t\t\t}\n\t\t}\n\n\t\tif (adjustForTransform && el !== win) {\n\t\t\t// Adjust for scale()\n\t\t\tvar matrix = _matrix(container || el),\n\t\t\t\tscaleX = matrix && matrix.a,\n\t\t\t\tscaleY = matrix && matrix.d;\n\n\t\t\tif (matrix) {\n\t\t\t\ttop /= scaleY;\n\t\t\t\tleft /= scaleX;\n\n\t\t\t\twidth /= scaleX;\n\t\t\t\theight /= scaleY;\n\n\t\t\t\tbottom = top + height;\n\t\t\t\tright = left + width;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: top,\n\t\t\tleft: left,\n\t\t\tbottom: bottom,\n\t\t\tright: right,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\t}\n\n\n\t/**\n\t * Checks if a side of an element is scrolled past a side of it's parents\n\t * @param  {HTMLElement}  el       The element who's side being scrolled out of view is in question\n\t * @param  {String}       side     Side of the element in question ('top', 'left', 'right', 'bottom')\n\t * @return {HTMLElement}           The parent scroll element that the el's side is scrolled past, or null if there is no such element\n\t */\n\tfunction _isScrolledPast(el, side) {\n\t\tvar parent = _getParentAutoScrollElement(el, true),\n\t\t\telSide = _getRect(el)[side];\n\n\t\t/* jshint boss:true */\n\t\twhile (parent) {\n\t\t\tvar parentSide = _getRect(parent)[side],\n\t\t\t\tvisible;\n\n\t\t\tif (side === 'top' || side === 'left') {\n\t\t\t\tvisible = elSide >= parentSide;\n\t\t\t} else {\n\t\t\t\tvisible = elSide <= parentSide;\n\t\t\t}\n\n\t\t\tif (!visible) return parent;\n\n\t\t\tif (parent === _getWindowScrollingElement()) break;\n\n\t\t\tparent = _getParentAutoScrollElement(parent, false);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n\t * The value is returned in real pixels.\n\t * @param  {HTMLElement} el\n\t * @return {Array}             Offsets in the format of [left, top]\n\t */\n\tfunction _getRelativeScrollOffset(el) {\n\t\tvar offsetLeft = 0,\n\t\t\toffsetTop = 0,\n\t\t\twinScroller = _getWindowScrollingElement();\n\n\t\tif (el) {\n\t\t\tdo {\n\t\t\t\tvar matrix = _matrix(el),\n\t\t\t\t\tscaleX = matrix.a,\n\t\t\t\t\tscaleY = matrix.d;\n\n\t\t\t\toffsetLeft += el.scrollLeft * scaleX;\n\t\t\t\toffsetTop += el.scrollTop * scaleY;\n\t\t\t} while (el !== winScroller && (el = el.parentNode));\n\t\t}\n\n\t\treturn [offsetLeft, offsetTop];\n\t}\n\n\t// Fixed #973:\n\t_on(document, 'touchmove', function(evt) {\n\t\tif ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n\t\t\tevt.preventDefault();\n\t\t}\n\t});\n\n\n\t// Export utils\n\tSortable.utils = {\n\t\ton: _on,\n\t\toff: _off,\n\t\tcss: _css,\n\t\tfind: _find,\n\t\tis: function (el, selector) {\n\t\t\treturn !!_closest(el, selector, el, false);\n\t\t},\n\t\textend: _extend,\n\t\tthrottle: _throttle,\n\t\tclosest: _closest,\n\t\ttoggleClass: _toggleClass,\n\t\tclone: _clone,\n\t\tindex: _index,\n\t\tnextTick: _nextTick,\n\t\tcancelNextTick: _cancelNextTick,\n\t\tdetectDirection: _detectDirection,\n\t\tgetChild: _getChild\n\t};\n\n\n\t/**\n\t * Create sortable instance\n\t * @param {HTMLElement}  el\n\t * @param {Object}      [options]\n\t */\n\tSortable.create = function (el, options) {\n\t\treturn new Sortable(el, options);\n\t};\n\n\n\t// Export\n\tSortable.version = '1.9.0';\n\treturn Sortable;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc29ydGFibGVqcy9Tb3J0YWJsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zb3J0YWJsZWpzL1NvcnRhYmxlLmpzPzUzZmUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIVxuICogU29ydGFibGVcbiAqIEBhdXRob3JcdFJ1YmFYYSAgIDx0cmFzaEBydWJheGEub3JnPlxuICogQGF1dGhvclx0b3dlbm0gICAgPG93ZW4yMzM1NUBnbWFpbC5jb20+XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuXG4oZnVuY3Rpb24gc29ydGFibGVNb2R1bGUoZmFjdG9yeSkge1xuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHRkZWZpbmUoZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyAhPSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0LyoganNoaW50IHN1Yjp0cnVlICovXG5cdFx0d2luZG93W1wiU29ydGFibGVcIl0gPSBmYWN0b3J5KCk7XG5cdH1cbn0pKGZ1bmN0aW9uIHNvcnRhYmxlRmFjdG9yeSgpIHtcblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgfHwgIXdpbmRvdy5kb2N1bWVudCkge1xuXHRcdHJldHVybiBmdW5jdGlvbiBzb3J0YWJsZUVycm9yKCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiU29ydGFibGUuanMgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50XCIpO1xuXHRcdH07XG5cdH1cblxuXHR2YXIgZHJhZ0VsLFxuXHRcdHBhcmVudEVsLFxuXHRcdGdob3N0RWwsXG5cdFx0Y2xvbmVFbCxcblx0XHRyb290RWwsXG5cdFx0bmV4dEVsLFxuXHRcdGxhc3REb3duRWwsXG5cblx0XHRzY3JvbGxFbCxcblx0XHRzY3JvbGxQYXJlbnRFbCxcblx0XHRzY3JvbGxDdXN0b21GbixcblxuXHRcdG9sZEluZGV4LFxuXHRcdG5ld0luZGV4LFxuXHRcdG9sZERyYWdnYWJsZUluZGV4LFxuXHRcdG5ld0RyYWdnYWJsZUluZGV4LFxuXG5cdFx0YWN0aXZlR3JvdXAsXG5cdFx0cHV0U29ydGFibGUsXG5cblx0XHRhdXRvU2Nyb2xscyA9IFtdLFxuXHRcdHNjcm9sbGluZyA9IGZhbHNlLFxuXG5cdFx0YXdhaXRpbmdEcmFnU3RhcnRlZCA9IGZhbHNlLFxuXHRcdGlnbm9yZU5leHRDbGljayA9IGZhbHNlLFxuXHRcdHNvcnRhYmxlcyA9IFtdLFxuXG5cdFx0cG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwsXG5cdFx0bGFzdFBvaW50ZXJFbGVtWCxcblx0XHRsYXN0UG9pbnRlckVsZW1ZLFxuXG5cdFx0dGFwRXZ0LFxuXHRcdHRvdWNoRXZ0LFxuXG5cdFx0bW92ZWQsXG5cblxuXHRcdGxhc3RUYXJnZXQsXG5cdFx0bGFzdERpcmVjdGlvbixcblx0XHRwYXN0Rmlyc3RJbnZlcnRUaHJlc2ggPSBmYWxzZSxcblx0XHRpc0NpcmN1bXN0YW50aWFsSW52ZXJ0ID0gZmFsc2UsXG5cdFx0bGFzdE1vZGUsIC8vICdzd2FwJyBvciAnaW5zZXJ0J1xuXG5cdFx0dGFyZ2V0TW92ZURpc3RhbmNlLFxuXG5cdFx0Ly8gRm9yIHBvc2l0aW9uaW5nIGdob3N0IGFic29sdXRlbHlcblx0XHRnaG9zdFJlbGF0aXZlUGFyZW50LFxuXHRcdGdob3N0UmVsYXRpdmVQYXJlbnRJbml0aWFsU2Nyb2xsID0gW10sIC8vIChsZWZ0LCB0b3ApXG5cblx0XHRyZWFsRHJhZ0VsUmVjdCwgLy8gZHJhZ0VsIHJlY3QgYWZ0ZXIgY3VycmVudCBhbmltYXRpb25cblxuXHRcdC8qKiBAY29uc3QgKi9cblx0XHRSX1NQQUNFID0gL1xccysvZyxcblxuXHRcdGV4cGFuZG8gPSAnU29ydGFibGUnICsgKG5ldyBEYXRlKS5nZXRUaW1lKCksXG5cblx0XHR3aW4gPSB3aW5kb3csXG5cdFx0ZG9jdW1lbnQgPSB3aW4uZG9jdW1lbnQsXG5cdFx0cGFyc2VJbnQgPSB3aW4ucGFyc2VJbnQsXG5cdFx0c2V0VGltZW91dCA9IHdpbi5zZXRUaW1lb3V0LFxuXG5cdFx0JCA9IHdpbi5qUXVlcnkgfHwgd2luLlplcHRvLFxuXHRcdFBvbHltZXIgPSB3aW4uUG9seW1lcixcblxuXHRcdGNhcHR1cmVNb2RlID0ge1xuXHRcdFx0Y2FwdHVyZTogZmFsc2UsXG5cdFx0XHRwYXNzaXZlOiBmYWxzZVxuXHRcdH0sXG5cblx0XHRJRTExT3JMZXNzID0gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC8oPzpUcmlkZW50LipydlsgOl0/MTFcXC58bXNpZXxpZW1vYmlsZSkvaSksXG5cdFx0RWRnZSA9ICEhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRWRnZS9pKSxcblx0XHRGaXJlRm94ID0gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9maXJlZm94L2kpLFxuXHRcdFNhZmFyaSA9ICEhKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL3NhZmFyaS9pKSAmJiAhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvY2hyb21lL2kpICYmICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9hbmRyb2lkL2kpKSxcblx0XHRJT1MgPSAhIShuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUChhZHxvZHxob25lKS9pKSksXG5cblx0XHRQb3NpdGlvbkdob3N0QWJzb2x1dGVseSA9IElPUyxcblxuXHRcdENTU0Zsb2F0UHJvcGVydHkgPSBFZGdlIHx8IElFMTFPckxlc3MgPyAnY3NzRmxvYXQnIDogJ2Zsb2F0JyxcblxuXHRcdC8vIFRoaXMgd2lsbCBub3QgcGFzcyBmb3IgSUU5LCBiZWNhdXNlIElFOSBEbkQgb25seSB3b3JrcyBvbiBhbmNob3JzXG5cdFx0c3VwcG9ydERyYWdnYWJsZSA9ICgnZHJhZ2dhYmxlJyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSksXG5cblx0XHRzdXBwb3J0Q3NzUG9pbnRlckV2ZW50cyA9IChmdW5jdGlvbigpIHtcblx0XHRcdC8vIGZhbHNlIHdoZW4gPD0gSUUxMVxuXHRcdFx0aWYgKElFMTFPckxlc3MpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgneCcpO1xuXHRcdFx0ZWwuc3R5bGUuY3NzVGV4dCA9ICdwb2ludGVyLWV2ZW50czphdXRvJztcblx0XHRcdHJldHVybiBlbC5zdHlsZS5wb2ludGVyRXZlbnRzID09PSAnYXV0byc7XG5cdFx0fSkoKSxcblxuXHRcdF9zaWxlbnQgPSBmYWxzZSxcblx0XHRfYWxpZ25lZFNpbGVudCA9IGZhbHNlLFxuXG5cdFx0YWJzID0gTWF0aC5hYnMsXG5cdFx0bWluID0gTWF0aC5taW4sXG5cdFx0bWF4ID0gTWF0aC5tYXgsXG5cblx0XHRzYXZlZElucHV0Q2hlY2tlZCA9IFtdLFxuXG5cdFx0X2RldGVjdERpcmVjdGlvbiA9IGZ1bmN0aW9uKGVsLCBvcHRpb25zKSB7XG5cdFx0XHR2YXIgZWxDU1MgPSBfY3NzKGVsKSxcblx0XHRcdFx0ZWxXaWR0aCA9IHBhcnNlSW50KGVsQ1NTLndpZHRoKVxuXHRcdFx0XHRcdC0gcGFyc2VJbnQoZWxDU1MucGFkZGluZ0xlZnQpXG5cdFx0XHRcdFx0LSBwYXJzZUludChlbENTUy5wYWRkaW5nUmlnaHQpXG5cdFx0XHRcdFx0LSBwYXJzZUludChlbENTUy5ib3JkZXJMZWZ0V2lkdGgpXG5cdFx0XHRcdFx0LSBwYXJzZUludChlbENTUy5ib3JkZXJSaWdodFdpZHRoKSxcblx0XHRcdFx0Y2hpbGQxID0gX2dldENoaWxkKGVsLCAwLCBvcHRpb25zKSxcblx0XHRcdFx0Y2hpbGQyID0gX2dldENoaWxkKGVsLCAxLCBvcHRpb25zKSxcblx0XHRcdFx0Zmlyc3RDaGlsZENTUyA9IGNoaWxkMSAmJiBfY3NzKGNoaWxkMSksXG5cdFx0XHRcdHNlY29uZENoaWxkQ1NTID0gY2hpbGQyICYmIF9jc3MoY2hpbGQyKSxcblx0XHRcdFx0Zmlyc3RDaGlsZFdpZHRoID0gZmlyc3RDaGlsZENTUyAmJiBwYXJzZUludChmaXJzdENoaWxkQ1NTLm1hcmdpbkxlZnQpICsgcGFyc2VJbnQoZmlyc3RDaGlsZENTUy5tYXJnaW5SaWdodCkgKyBfZ2V0UmVjdChjaGlsZDEpLndpZHRoLFxuXHRcdFx0XHRzZWNvbmRDaGlsZFdpZHRoID0gc2Vjb25kQ2hpbGRDU1MgJiYgcGFyc2VJbnQoc2Vjb25kQ2hpbGRDU1MubWFyZ2luTGVmdCkgKyBwYXJzZUludChzZWNvbmRDaGlsZENTUy5tYXJnaW5SaWdodCkgKyBfZ2V0UmVjdChjaGlsZDIpLndpZHRoO1xuXG5cdFx0XHRpZiAoZWxDU1MuZGlzcGxheSA9PT0gJ2ZsZXgnKSB7XG5cdFx0XHRcdHJldHVybiBlbENTUy5mbGV4RGlyZWN0aW9uID09PSAnY29sdW1uJyB8fCBlbENTUy5mbGV4RGlyZWN0aW9uID09PSAnY29sdW1uLXJldmVyc2UnXG5cdFx0XHRcdD8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcblx0XHRcdH1cblxuXHRcdFx0aWYgKGVsQ1NTLmRpc3BsYXkgPT09ICdncmlkJykge1xuXHRcdFx0XHRyZXR1cm4gZWxDU1MuZ3JpZFRlbXBsYXRlQ29sdW1ucy5zcGxpdCgnICcpLmxlbmd0aCA8PSAxID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcblx0XHRcdH1cblxuXHRcdFx0aWYgKGNoaWxkMSAmJiBmaXJzdENoaWxkQ1NTLmZsb2F0ICE9PSAnbm9uZScpIHtcblx0XHRcdFx0dmFyIHRvdWNoaW5nU2lkZUNoaWxkMiA9IGZpcnN0Q2hpbGRDU1MuZmxvYXQgPT09ICdsZWZ0JyA/ICdsZWZ0JyA6ICdyaWdodCc7XG5cblx0XHRcdFx0cmV0dXJuIGNoaWxkMiAmJiAoc2Vjb25kQ2hpbGRDU1MuY2xlYXIgPT09ICdib3RoJyB8fCBzZWNvbmRDaGlsZENTUy5jbGVhciA9PT0gdG91Y2hpbmdTaWRlQ2hpbGQyKSA/XG5cdFx0XHRcdFx0J3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIChjaGlsZDEgJiZcblx0XHRcdFx0KFxuXHRcdFx0XHRcdGZpcnN0Q2hpbGRDU1MuZGlzcGxheSA9PT0gJ2Jsb2NrJyB8fFxuXHRcdFx0XHRcdGZpcnN0Q2hpbGRDU1MuZGlzcGxheSA9PT0gJ2ZsZXgnIHx8XG5cdFx0XHRcdFx0Zmlyc3RDaGlsZENTUy5kaXNwbGF5ID09PSAndGFibGUnIHx8XG5cdFx0XHRcdFx0Zmlyc3RDaGlsZENTUy5kaXNwbGF5ID09PSAnZ3JpZCcgfHxcblx0XHRcdFx0XHRmaXJzdENoaWxkV2lkdGggPj0gZWxXaWR0aCAmJlxuXHRcdFx0XHRcdGVsQ1NTW0NTU0Zsb2F0UHJvcGVydHldID09PSAnbm9uZScgfHxcblx0XHRcdFx0XHRjaGlsZDIgJiZcblx0XHRcdFx0XHRlbENTU1tDU1NGbG9hdFByb3BlcnR5XSA9PT0gJ25vbmUnICYmXG5cdFx0XHRcdFx0Zmlyc3RDaGlsZFdpZHRoICsgc2Vjb25kQ2hpbGRXaWR0aCA+IGVsV2lkdGhcblx0XHRcdFx0KSA/XG5cdFx0XHRcdCd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCdcblx0XHRcdCk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIERldGVjdHMgZmlyc3QgbmVhcmVzdCBlbXB0eSBzb3J0YWJsZSB0byBYIGFuZCBZIHBvc2l0aW9uIHVzaW5nIGVtcHR5SW5zZXJ0VGhyZXNob2xkLlxuXHRcdCAqIEBwYXJhbSAge051bWJlcn0geCAgICAgIFggcG9zaXRpb25cblx0XHQgKiBAcGFyYW0gIHtOdW1iZXJ9IHkgICAgICBZIHBvc2l0aW9uXG5cdFx0ICogQHJldHVybiB7SFRNTEVsZW1lbnR9ICAgRWxlbWVudCBvZiB0aGUgZmlyc3QgZm91bmQgbmVhcmVzdCBTb3J0YWJsZVxuXHRcdCAqL1xuXHRcdF9kZXRlY3ROZWFyZXN0RW1wdHlTb3J0YWJsZSA9IGZ1bmN0aW9uKHgsIHkpIHtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc29ydGFibGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChfbGFzdENoaWxkKHNvcnRhYmxlc1tpXSkpIGNvbnRpbnVlO1xuXG5cdFx0XHRcdHZhciByZWN0ID0gX2dldFJlY3Qoc29ydGFibGVzW2ldKSxcblx0XHRcdFx0XHR0aHJlc2hvbGQgPSBzb3J0YWJsZXNbaV1bZXhwYW5kb10ub3B0aW9ucy5lbXB0eUluc2VydFRocmVzaG9sZCxcblx0XHRcdFx0XHRpbnNpZGVIb3Jpem9udGFsbHkgPSB4ID49IChyZWN0LmxlZnQgLSB0aHJlc2hvbGQpICYmIHggPD0gKHJlY3QucmlnaHQgKyB0aHJlc2hvbGQpLFxuXHRcdFx0XHRcdGluc2lkZVZlcnRpY2FsbHkgPSB5ID49IChyZWN0LnRvcCAtIHRocmVzaG9sZCkgJiYgeSA8PSAocmVjdC5ib3R0b20gKyB0aHJlc2hvbGQpO1xuXG5cdFx0XHRcdGlmICh0aHJlc2hvbGQgJiYgaW5zaWRlSG9yaXpvbnRhbGx5ICYmIGluc2lkZVZlcnRpY2FsbHkpIHtcblx0XHRcdFx0XHRyZXR1cm4gc29ydGFibGVzW2ldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdF9pc0NsaWVudEluUm93Q29sdW1uID0gZnVuY3Rpb24oeCwgeSwgZWwsIGF4aXMsIG9wdGlvbnMpIHtcblx0XHRcdHZhciB0YXJnZXRSZWN0ID0gX2dldFJlY3QoZWwpLFxuXHRcdFx0XHR0YXJnZXRTMU9wcCA9IGF4aXMgPT09ICd2ZXJ0aWNhbCcgPyB0YXJnZXRSZWN0LmxlZnQgOiB0YXJnZXRSZWN0LnRvcCxcblx0XHRcdFx0dGFyZ2V0UzJPcHAgPSBheGlzID09PSAndmVydGljYWwnID8gdGFyZ2V0UmVjdC5yaWdodCA6IHRhcmdldFJlY3QuYm90dG9tLFxuXHRcdFx0XHRtb3VzZU9uT3BwQXhpcyA9IGF4aXMgPT09ICd2ZXJ0aWNhbCcgPyB4IDogeTtcblxuXHRcdFx0cmV0dXJuIHRhcmdldFMxT3BwIDwgbW91c2VPbk9wcEF4aXMgJiYgbW91c2VPbk9wcEF4aXMgPCB0YXJnZXRTMk9wcDtcblx0XHR9LFxuXG5cdFx0X2lzRWxJblJvd0NvbHVtbiA9IGZ1bmN0aW9uKGVsMSwgZWwyLCBheGlzKSB7XG5cdFx0XHR2YXIgZWwxUmVjdCA9IGVsMSA9PT0gZHJhZ0VsICYmIHJlYWxEcmFnRWxSZWN0IHx8IF9nZXRSZWN0KGVsMSksXG5cdFx0XHRcdGVsMlJlY3QgPSBlbDIgPT09IGRyYWdFbCAmJiByZWFsRHJhZ0VsUmVjdCB8fCBfZ2V0UmVjdChlbDIpLFxuXHRcdFx0XHRlbDFTMU9wcCA9IGF4aXMgPT09ICd2ZXJ0aWNhbCcgPyBlbDFSZWN0LmxlZnQgOiBlbDFSZWN0LnRvcCxcblx0XHRcdFx0ZWwxUzJPcHAgPSBheGlzID09PSAndmVydGljYWwnID8gZWwxUmVjdC5yaWdodCA6IGVsMVJlY3QuYm90dG9tLFxuXHRcdFx0XHRlbDFPcHBMZW5ndGggPSBheGlzID09PSAndmVydGljYWwnID8gZWwxUmVjdC53aWR0aCA6IGVsMVJlY3QuaGVpZ2h0LFxuXHRcdFx0XHRlbDJTMU9wcCA9IGF4aXMgPT09ICd2ZXJ0aWNhbCcgPyBlbDJSZWN0LmxlZnQgOiBlbDJSZWN0LnRvcCxcblx0XHRcdFx0ZWwyUzJPcHAgPSBheGlzID09PSAndmVydGljYWwnID8gZWwyUmVjdC5yaWdodCA6IGVsMlJlY3QuYm90dG9tLFxuXHRcdFx0XHRlbDJPcHBMZW5ndGggPSBheGlzID09PSAndmVydGljYWwnID8gZWwyUmVjdC53aWR0aCA6IGVsMlJlY3QuaGVpZ2h0O1xuXG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRlbDFTMU9wcCA9PT0gZWwyUzFPcHAgfHxcblx0XHRcdFx0ZWwxUzJPcHAgPT09IGVsMlMyT3BwIHx8XG5cdFx0XHRcdChlbDFTMU9wcCArIGVsMU9wcExlbmd0aCAvIDIpID09PSAoZWwyUzFPcHAgKyBlbDJPcHBMZW5ndGggLyAyKVxuXHRcdFx0KTtcblx0XHR9LFxuXG5cdFx0X2dldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50ID0gZnVuY3Rpb24oZWwsIGluY2x1ZGVTZWxmKSB7XG5cdFx0XHQvLyBza2lwIHRvIHdpbmRvd1xuXHRcdFx0aWYgKCFlbCB8fCAhZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSByZXR1cm4gX2dldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKTtcblxuXHRcdFx0dmFyIGVsZW0gPSBlbDtcblx0XHRcdHZhciBnb3RTZWxmID0gZmFsc2U7XG5cdFx0XHRkbyB7XG5cdFx0XHRcdC8vIHdlIGRvbid0IG5lZWQgdG8gZ2V0IGVsZW0gY3NzIGlmIGl0IGlzbid0IGV2ZW4gb3ZlcmZsb3dpbmcgaW4gdGhlIGZpcnN0IHBsYWNlIChwZXJmb3JtYW5jZSlcblx0XHRcdFx0aWYgKGVsZW0uY2xpZW50V2lkdGggPCBlbGVtLnNjcm9sbFdpZHRoIHx8IGVsZW0uY2xpZW50SGVpZ2h0IDwgZWxlbS5zY3JvbGxIZWlnaHQpIHtcblx0XHRcdFx0XHR2YXIgZWxlbUNTUyA9IF9jc3MoZWxlbSk7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0ZWxlbS5jbGllbnRXaWR0aCA8IGVsZW0uc2Nyb2xsV2lkdGggJiYgKGVsZW1DU1Mub3ZlcmZsb3dYID09ICdhdXRvJyB8fCBlbGVtQ1NTLm92ZXJmbG93WCA9PSAnc2Nyb2xsJykgfHxcblx0XHRcdFx0XHRcdGVsZW0uY2xpZW50SGVpZ2h0IDwgZWxlbS5zY3JvbGxIZWlnaHQgJiYgKGVsZW1DU1Mub3ZlcmZsb3dZID09ICdhdXRvJyB8fCBlbGVtQ1NTLm92ZXJmbG93WSA9PSAnc2Nyb2xsJylcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGlmICghZWxlbSB8fCAhZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgfHwgZWxlbSA9PT0gZG9jdW1lbnQuYm9keSkgcmV0dXJuIF9nZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCk7XG5cblx0XHRcdFx0XHRcdGlmIChnb3RTZWxmIHx8IGluY2x1ZGVTZWxmKSByZXR1cm4gZWxlbTtcblx0XHRcdFx0XHRcdGdvdFNlbGYgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0LyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuXHRcdFx0fSB3aGlsZSAoZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSk7XG5cblx0XHRcdHJldHVybiBfZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuXHRcdH0sXG5cblx0XHRfZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKElFMTFPckxlc3MpIHtcblx0XHRcdFx0cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50O1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRfc2Nyb2xsQnkgPSBmdW5jdGlvbihlbCwgeCwgeSkge1xuXHRcdFx0ZWwuc2Nyb2xsTGVmdCArPSB4O1xuXHRcdFx0ZWwuc2Nyb2xsVG9wICs9IHk7XG5cdFx0fSxcblxuXHRcdF9hdXRvU2Nyb2xsID0gX3Rocm90dGxlKGZ1bmN0aW9uICgvKipFdmVudCovZXZ0LCAvKipPYmplY3QqL29wdGlvbnMsIC8qKkhUTUxFbGVtZW50Ki9yb290RWwsIC8qKkJvb2xlYW4qL2lzRmFsbGJhY2spIHtcblx0XHRcdC8vIEJ1ZzogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA1NTIxXG5cdFx0XHRpZiAob3B0aW9ucy5zY3JvbGwpIHtcblx0XHRcdFx0dmFyIF90aGlzID0gcm9vdEVsID8gcm9vdEVsW2V4cGFuZG9dIDogd2luZG93LFxuXHRcdFx0XHRcdHNlbnMgPSBvcHRpb25zLnNjcm9sbFNlbnNpdGl2aXR5LFxuXHRcdFx0XHRcdHNwZWVkID0gb3B0aW9ucy5zY3JvbGxTcGVlZCxcblxuXHRcdFx0XHRcdHggPSBldnQuY2xpZW50WCxcblx0XHRcdFx0XHR5ID0gZXZ0LmNsaWVudFksXG5cblx0XHRcdFx0XHR3aW5TY3JvbGxlciA9IF9nZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCksXG5cblx0XHRcdFx0XHRzY3JvbGxUaGlzSW5zdGFuY2UgPSBmYWxzZTtcblxuXHRcdFx0XHQvLyBEZXRlY3Qgc2Nyb2xsRWxcblx0XHRcdFx0aWYgKHNjcm9sbFBhcmVudEVsICE9PSByb290RWwpIHtcblx0XHRcdFx0XHRfY2xlYXJBdXRvU2Nyb2xscygpO1xuXG5cdFx0XHRcdFx0c2Nyb2xsRWwgPSBvcHRpb25zLnNjcm9sbDtcblx0XHRcdFx0XHRzY3JvbGxDdXN0b21GbiA9IG9wdGlvbnMuc2Nyb2xsRm47XG5cblx0XHRcdFx0XHRpZiAoc2Nyb2xsRWwgPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdHNjcm9sbEVsID0gX2dldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KHJvb3RFbCwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRzY3JvbGxQYXJlbnRFbCA9IHNjcm9sbEVsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cblx0XHRcdFx0dmFyIGxheWVyc091dCA9IDA7XG5cdFx0XHRcdHZhciBjdXJyZW50UGFyZW50ID0gc2Nyb2xsRWw7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHR2YXJcdGVsID0gY3VycmVudFBhcmVudCxcblx0XHRcdFx0XHRcdHJlY3QgPSBfZ2V0UmVjdChlbCksXG5cblx0XHRcdFx0XHRcdHRvcCA9IHJlY3QudG9wLFxuXHRcdFx0XHRcdFx0Ym90dG9tID0gcmVjdC5ib3R0b20sXG5cdFx0XHRcdFx0XHRsZWZ0ID0gcmVjdC5sZWZ0LFxuXHRcdFx0XHRcdFx0cmlnaHQgPSByZWN0LnJpZ2h0LFxuXG5cdFx0XHRcdFx0XHR3aWR0aCA9IHJlY3Qud2lkdGgsXG5cdFx0XHRcdFx0XHRoZWlnaHQgPSByZWN0LmhlaWdodCxcblxuXHRcdFx0XHRcdFx0c2Nyb2xsV2lkdGgsXG5cdFx0XHRcdFx0XHRzY3JvbGxIZWlnaHQsXG5cblx0XHRcdFx0XHRcdGNzcyxcblxuXHRcdFx0XHRcdFx0dngsXG5cdFx0XHRcdFx0XHR2eSxcblxuXHRcdFx0XHRcdFx0Y2FuU2Nyb2xsWCxcblx0XHRcdFx0XHRcdGNhblNjcm9sbFksXG5cblx0XHRcdFx0XHRcdHNjcm9sbFBvc1gsXG5cdFx0XHRcdFx0XHRzY3JvbGxQb3NZO1xuXG5cblx0XHRcdFx0XHRzY3JvbGxXaWR0aCA9IGVsLnNjcm9sbFdpZHRoO1xuXHRcdFx0XHRcdHNjcm9sbEhlaWdodCA9IGVsLnNjcm9sbEhlaWdodDtcblxuXHRcdFx0XHRcdGNzcyA9IF9jc3MoZWwpO1xuXG5cdFx0XHRcdFx0c2Nyb2xsUG9zWCA9IGVsLnNjcm9sbExlZnQ7XG5cdFx0XHRcdFx0c2Nyb2xsUG9zWSA9IGVsLnNjcm9sbFRvcDtcblxuXHRcdFx0XHRcdGlmIChlbCA9PT0gd2luU2Nyb2xsZXIpIHtcblx0XHRcdFx0XHRcdGNhblNjcm9sbFggPSB3aWR0aCA8IHNjcm9sbFdpZHRoICYmIChjc3Mub3ZlcmZsb3dYID09PSAnYXV0bycgfHwgY3NzLm92ZXJmbG93WCA9PT0gJ3Njcm9sbCcgfHwgY3NzLm92ZXJmbG93WCA9PT0gJ3Zpc2libGUnKTtcblx0XHRcdFx0XHRcdGNhblNjcm9sbFkgPSBoZWlnaHQgPCBzY3JvbGxIZWlnaHQgJiYgKGNzcy5vdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBjc3Mub3ZlcmZsb3dZID09PSAnc2Nyb2xsJyB8fCBjc3Mub3ZlcmZsb3dZID09PSAndmlzaWJsZScpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjYW5TY3JvbGxYID0gd2lkdGggPCBzY3JvbGxXaWR0aCAmJiAoY3NzLm92ZXJmbG93WCA9PT0gJ2F1dG8nIHx8IGNzcy5vdmVyZmxvd1ggPT09ICdzY3JvbGwnKTtcblx0XHRcdFx0XHRcdGNhblNjcm9sbFkgPSBoZWlnaHQgPCBzY3JvbGxIZWlnaHQgJiYgKGNzcy5vdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBjc3Mub3ZlcmZsb3dZID09PSAnc2Nyb2xsJyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dnggPSBjYW5TY3JvbGxYICYmIChhYnMocmlnaHQgLSB4KSA8PSBzZW5zICYmIChzY3JvbGxQb3NYICsgd2lkdGgpIDwgc2Nyb2xsV2lkdGgpIC0gKGFicyhsZWZ0IC0geCkgPD0gc2VucyAmJiAhIXNjcm9sbFBvc1gpO1xuXG5cdFx0XHRcdFx0dnkgPSBjYW5TY3JvbGxZICYmIChhYnMoYm90dG9tIC0geSkgPD0gc2VucyAmJiAoc2Nyb2xsUG9zWSArIGhlaWdodCkgPCBzY3JvbGxIZWlnaHQpIC0gKGFicyh0b3AgLSB5KSA8PSBzZW5zICYmICEhc2Nyb2xsUG9zWSk7XG5cblxuXHRcdFx0XHRcdGlmICghYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XSkge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPD0gbGF5ZXJzT3V0OyBpKyspIHtcblx0XHRcdFx0XHRcdFx0aWYgKCFhdXRvU2Nyb2xsc1tpXSkge1xuXHRcdFx0XHRcdFx0XHRcdGF1dG9TY3JvbGxzW2ldID0ge307XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS52eCAhPSB2eCB8fCBhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLnZ5ICE9IHZ5IHx8IGF1dG9TY3JvbGxzW2xheWVyc091dF0uZWwgIT09IGVsKSB7XG5cdFx0XHRcdFx0XHRhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLmVsID0gZWw7XG5cdFx0XHRcdFx0XHRhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLnZ4ID0gdng7XG5cdFx0XHRcdFx0XHRhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLnZ5ID0gdnk7XG5cblx0XHRcdFx0XHRcdGNsZWFySW50ZXJ2YWwoYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS5waWQpO1xuXG5cdFx0XHRcdFx0XHRpZiAoZWwgJiYgKHZ4ICE9IDAgfHwgdnkgIT0gMCkpIHtcblx0XHRcdFx0XHRcdFx0c2Nyb2xsVGhpc0luc3RhbmNlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0LyoganNoaW50IGxvb3BmdW5jOnRydWUgKi9cblx0XHRcdFx0XHRcdFx0YXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS5waWQgPSBzZXRJbnRlcnZhbCgoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGVtdWxhdGUgZHJhZyBvdmVyIGR1cmluZyBhdXRvc2Nyb2xsIChmYWxsYmFjayksIGVtdWxhdGluZyBuYXRpdmUgRG5EIGJlaGF2aW91clxuXHRcdFx0XHRcdFx0XHRcdGlmIChpc0ZhbGxiYWNrICYmIHRoaXMubGF5ZXIgPT09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFNvcnRhYmxlLmFjdGl2ZS5fZW11bGF0ZURyYWdPdmVyKHRydWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0U29ydGFibGUuYWN0aXZlLl9vblRvdWNoTW92ZSh0b3VjaEV2dCwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHZhciBzY3JvbGxPZmZzZXRZID0gYXV0b1Njcm9sbHNbdGhpcy5sYXllcl0udnkgPyBhdXRvU2Nyb2xsc1t0aGlzLmxheWVyXS52eSAqIHNwZWVkIDogMDtcblx0XHRcdFx0XHRcdFx0XHR2YXIgc2Nyb2xsT2Zmc2V0WCA9IGF1dG9TY3JvbGxzW3RoaXMubGF5ZXJdLnZ4ID8gYXV0b1Njcm9sbHNbdGhpcy5sYXllcl0udnggKiBzcGVlZCA6IDA7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mKHNjcm9sbEN1c3RvbUZuKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHNjcm9sbEN1c3RvbUZuLmNhbGwoX3RoaXMsIHNjcm9sbE9mZnNldFgsIHNjcm9sbE9mZnNldFksIGV2dCwgdG91Y2hFdnQsIGF1dG9TY3JvbGxzW3RoaXMubGF5ZXJdLmVsKSAhPT0gJ2NvbnRpbnVlJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0X3Njcm9sbEJ5KGF1dG9TY3JvbGxzW3RoaXMubGF5ZXJdLmVsLCBzY3JvbGxPZmZzZXRYLCBzY3JvbGxPZmZzZXRZKTtcblx0XHRcdFx0XHRcdFx0fSkuYmluZCh7bGF5ZXI6IGxheWVyc091dH0pLCAyNCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGxheWVyc091dCsrO1xuXHRcdFx0XHR9IHdoaWxlIChvcHRpb25zLmJ1YmJsZVNjcm9sbCAmJiBjdXJyZW50UGFyZW50ICE9PSB3aW5TY3JvbGxlciAmJiAoY3VycmVudFBhcmVudCA9IF9nZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChjdXJyZW50UGFyZW50LCBmYWxzZSkpKTtcblx0XHRcdFx0c2Nyb2xsaW5nID0gc2Nyb2xsVGhpc0luc3RhbmNlOyAvLyBpbiBjYXNlIGFub3RoZXIgZnVuY3Rpb24gY2F0Y2hlcyBzY3JvbGxpbmcgYXMgZmFsc2UgaW4gYmV0d2VlbiB3aGVuIGl0IGlzIG5vdFxuXHRcdFx0fVxuXHRcdH0sIDMwKSxcblxuXHRcdF9jbGVhckF1dG9TY3JvbGxzID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0YXV0b1Njcm9sbHMuZm9yRWFjaChmdW5jdGlvbihhdXRvU2Nyb2xsKSB7XG5cdFx0XHRcdGNsZWFySW50ZXJ2YWwoYXV0b1Njcm9sbC5waWQpO1xuXHRcdFx0fSk7XG5cdFx0XHRhdXRvU2Nyb2xscyA9IFtdO1xuXHRcdH0sXG5cblx0XHRfcHJlcGFyZUdyb3VwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcblx0XHRcdGZ1bmN0aW9uIHRvRm4odmFsdWUsIHB1bGwpIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKHRvLCBmcm9tLCBkcmFnRWwsIGV2dCkge1xuXHRcdFx0XHRcdHZhciBzYW1lR3JvdXAgPSB0by5vcHRpb25zLmdyb3VwLm5hbWUgJiZcblx0XHRcdFx0XHRcdFx0XHRcdGZyb20ub3B0aW9ucy5ncm91cC5uYW1lICYmXG5cdFx0XHRcdFx0XHRcdFx0XHR0by5vcHRpb25zLmdyb3VwLm5hbWUgPT09IGZyb20ub3B0aW9ucy5ncm91cC5uYW1lO1xuXG5cdFx0XHRcdFx0aWYgKHZhbHVlID09IG51bGwgJiYgKHB1bGwgfHwgc2FtZUdyb3VwKSkge1xuXHRcdFx0XHRcdFx0Ly8gRGVmYXVsdCBwdWxsIHZhbHVlXG5cdFx0XHRcdFx0XHQvLyBEZWZhdWx0IHB1bGwgYW5kIHB1dCB2YWx1ZSBpZiBzYW1lIGdyb3VwXG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChwdWxsICYmIHZhbHVlID09PSAnY2xvbmUnKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0b0ZuKHZhbHVlKHRvLCBmcm9tLCBkcmFnRWwsIGV2dCksIHB1bGwpKHRvLCBmcm9tLCBkcmFnRWwsIGV2dCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHZhciBvdGhlckdyb3VwID0gKHB1bGwgPyB0byA6IGZyb20pLm9wdGlvbnMuZ3JvdXAubmFtZTtcblxuXHRcdFx0XHRcdFx0cmV0dXJuICh2YWx1ZSA9PT0gdHJ1ZSB8fFxuXHRcdFx0XHRcdFx0KHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUgPT09IG90aGVyR3JvdXApIHx8XG5cdFx0XHRcdFx0XHQodmFsdWUuam9pbiAmJiB2YWx1ZS5pbmRleE9mKG90aGVyR3JvdXApID4gLTEpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHZhciBncm91cCA9IHt9O1xuXHRcdFx0dmFyIG9yaWdpbmFsR3JvdXAgPSBvcHRpb25zLmdyb3VwO1xuXG5cdFx0XHRpZiAoIW9yaWdpbmFsR3JvdXAgfHwgdHlwZW9mIG9yaWdpbmFsR3JvdXAgIT0gJ29iamVjdCcpIHtcblx0XHRcdFx0b3JpZ2luYWxHcm91cCA9IHtuYW1lOiBvcmlnaW5hbEdyb3VwfTtcblx0XHRcdH1cblxuXHRcdFx0Z3JvdXAubmFtZSA9IG9yaWdpbmFsR3JvdXAubmFtZTtcblx0XHRcdGdyb3VwLmNoZWNrUHVsbCA9IHRvRm4ob3JpZ2luYWxHcm91cC5wdWxsLCB0cnVlKTtcblx0XHRcdGdyb3VwLmNoZWNrUHV0ID0gdG9GbihvcmlnaW5hbEdyb3VwLnB1dCk7XG5cdFx0XHRncm91cC5yZXZlcnRDbG9uZSA9IG9yaWdpbmFsR3JvdXAucmV2ZXJ0Q2xvbmU7XG5cblx0XHRcdG9wdGlvbnMuZ3JvdXAgPSBncm91cDtcblx0XHR9LFxuXG5cdFx0X2NoZWNrQWxpZ25tZW50ID0gZnVuY3Rpb24oZXZ0KSB7XG5cdFx0XHRpZiAoIWRyYWdFbCB8fCAhZHJhZ0VsLnBhcmVudE5vZGUpIHJldHVybjtcblx0XHRcdGRyYWdFbC5wYXJlbnROb2RlW2V4cGFuZG9dICYmIGRyYWdFbC5wYXJlbnROb2RlW2V4cGFuZG9dLl9jb21wdXRlSXNBbGlnbmVkKGV2dCk7XG5cdFx0fSxcblxuXHRcdF9oaWRlR2hvc3RGb3JUYXJnZXQgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICghc3VwcG9ydENzc1BvaW50ZXJFdmVudHMgJiYgZ2hvc3RFbCkge1xuXHRcdFx0XHRfY3NzKGdob3N0RWwsICdkaXNwbGF5JywgJ25vbmUnKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0X3VuaGlkZUdob3N0Rm9yVGFyZ2V0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIXN1cHBvcnRDc3NQb2ludGVyRXZlbnRzICYmIGdob3N0RWwpIHtcblx0XHRcdFx0X2NzcyhnaG9zdEVsLCAnZGlzcGxheScsICcnKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cblx0Ly8gIzExODQgZml4IC0gUHJldmVudCBjbGljayBldmVudCBvbiBmYWxsYmFjayBpZiBkcmFnZ2VkIGJ1dCBpdGVtIG5vdCBjaGFuZ2VkIHBvc2l0aW9uXG5cdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXZ0KSB7XG5cdFx0aWYgKGlnbm9yZU5leHRDbGljaykge1xuXHRcdFx0ZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRldnQuc3RvcFByb3BhZ2F0aW9uICYmIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdGV2dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gJiYgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdFx0aWdub3JlTmV4dENsaWNrID0gZmFsc2U7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9LCB0cnVlKTtcblxuXHR2YXIgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQgPSBmdW5jdGlvbihldnQpIHtcblx0XHRpZiAoZHJhZ0VsKSB7XG5cdFx0XHRldnQgPSBldnQudG91Y2hlcyA/IGV2dC50b3VjaGVzWzBdIDogZXZ0O1xuXHRcdFx0dmFyIG5lYXJlc3QgPSBfZGV0ZWN0TmVhcmVzdEVtcHR5U29ydGFibGUoZXZ0LmNsaWVudFgsIGV2dC5jbGllbnRZKTtcblxuXHRcdFx0aWYgKG5lYXJlc3QpIHtcblx0XHRcdFx0Ly8gQ3JlYXRlIGltaXRhdGlvbiBldmVudFxuXHRcdFx0XHR2YXIgZXZlbnQgPSB7fTtcblx0XHRcdFx0Zm9yICh2YXIgaSBpbiBldnQpIHtcblx0XHRcdFx0XHRldmVudFtpXSA9IGV2dFtpXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRldmVudC50YXJnZXQgPSBldmVudC5yb290RWwgPSBuZWFyZXN0O1xuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCA9IHZvaWQgMDtcblx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uID0gdm9pZCAwO1xuXHRcdFx0XHRuZWFyZXN0W2V4cGFuZG9dLl9vbkRyYWdPdmVyKGV2ZW50KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIEBjbGFzcyAgU29ydGFibGVcblx0ICogQHBhcmFtICB7SFRNTEVsZW1lbnR9ICBlbFxuXHQgKiBAcGFyYW0gIHtPYmplY3R9ICAgICAgIFtvcHRpb25zXVxuXHQgKi9cblx0ZnVuY3Rpb24gU29ydGFibGUoZWwsIG9wdGlvbnMpIHtcblx0XHRpZiAoIShlbCAmJiBlbC5ub2RlVHlwZSAmJiBlbC5ub2RlVHlwZSA9PT0gMSkpIHtcblx0XHRcdHRocm93ICdTb3J0YWJsZTogYGVsYCBtdXN0IGJlIEhUTUxFbGVtZW50LCBub3QgJyArIHt9LnRvU3RyaW5nLmNhbGwoZWwpO1xuXHRcdH1cblxuXHRcdHRoaXMuZWwgPSBlbDsgLy8gcm9vdCBlbGVtZW50XG5cdFx0dGhpcy5vcHRpb25zID0gb3B0aW9ucyA9IF9leHRlbmQoe30sIG9wdGlvbnMpO1xuXG5cblx0XHQvLyBFeHBvcnQgaW5zdGFuY2Vcblx0XHRlbFtleHBhbmRvXSA9IHRoaXM7XG5cblx0XHQvLyBEZWZhdWx0IG9wdGlvbnNcblx0XHR2YXIgZGVmYXVsdHMgPSB7XG5cdFx0XHRncm91cDogbnVsbCxcblx0XHRcdHNvcnQ6IHRydWUsXG5cdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRzdG9yZTogbnVsbCxcblx0XHRcdGhhbmRsZTogbnVsbCxcblx0XHRcdHNjcm9sbDogdHJ1ZSxcblx0XHRcdHNjcm9sbFNlbnNpdGl2aXR5OiAzMCxcblx0XHRcdHNjcm9sbFNwZWVkOiAxMCxcblx0XHRcdGJ1YmJsZVNjcm9sbDogdHJ1ZSxcblx0XHRcdGRyYWdnYWJsZTogL1t1b11sL2kudGVzdChlbC5ub2RlTmFtZSkgPyAnPmxpJyA6ICc+KicsXG5cdFx0XHRzd2FwVGhyZXNob2xkOiAxLCAvLyBwZXJjZW50YWdlOyAwIDw9IHggPD0gMVxuXHRcdFx0aW52ZXJ0U3dhcDogZmFsc2UsIC8vIGludmVydCBhbHdheXNcblx0XHRcdGludmVydGVkU3dhcFRocmVzaG9sZDogbnVsbCwgLy8gd2lsbCBiZSBzZXQgdG8gc2FtZSBhcyBzd2FwVGhyZXNob2xkIGlmIGRlZmF1bHRcblx0XHRcdHJlbW92ZUNsb25lT25IaWRlOiB0cnVlLFxuXHRcdFx0ZGlyZWN0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIF9kZXRlY3REaXJlY3Rpb24oZWwsIHRoaXMub3B0aW9ucyk7XG5cdFx0XHR9LFxuXHRcdFx0Z2hvc3RDbGFzczogJ3NvcnRhYmxlLWdob3N0Jyxcblx0XHRcdGNob3NlbkNsYXNzOiAnc29ydGFibGUtY2hvc2VuJyxcblx0XHRcdGRyYWdDbGFzczogJ3NvcnRhYmxlLWRyYWcnLFxuXHRcdFx0aWdub3JlOiAnYSwgaW1nJyxcblx0XHRcdGZpbHRlcjogbnVsbCxcblx0XHRcdHByZXZlbnRPbkZpbHRlcjogdHJ1ZSxcblx0XHRcdGFuaW1hdGlvbjogMCxcblx0XHRcdGVhc2luZzogbnVsbCxcblx0XHRcdHNldERhdGE6IGZ1bmN0aW9uIChkYXRhVHJhbnNmZXIsIGRyYWdFbCkge1xuXHRcdFx0XHRkYXRhVHJhbnNmZXIuc2V0RGF0YSgnVGV4dCcsIGRyYWdFbC50ZXh0Q29udGVudCk7XG5cdFx0XHR9LFxuXHRcdFx0ZHJvcEJ1YmJsZTogZmFsc2UsXG5cdFx0XHRkcmFnb3ZlckJ1YmJsZTogZmFsc2UsXG5cdFx0XHRkYXRhSWRBdHRyOiAnZGF0YS1pZCcsXG5cdFx0XHRkZWxheTogMCxcblx0XHRcdGRlbGF5T25Ub3VjaE9ubHk6IGZhbHNlLFxuXHRcdFx0dG91Y2hTdGFydFRocmVzaG9sZDogcGFyc2VJbnQod2luZG93LmRldmljZVBpeGVsUmF0aW8sIDEwKSB8fCAxLFxuXHRcdFx0Zm9yY2VGYWxsYmFjazogZmFsc2UsXG5cdFx0XHRmYWxsYmFja0NsYXNzOiAnc29ydGFibGUtZmFsbGJhY2snLFxuXHRcdFx0ZmFsbGJhY2tPbkJvZHk6IGZhbHNlLFxuXHRcdFx0ZmFsbGJhY2tUb2xlcmFuY2U6IDAsXG5cdFx0XHRmYWxsYmFja09mZnNldDoge3g6IDAsIHk6IDB9LFxuXHRcdFx0c3VwcG9ydFBvaW50ZXI6IFNvcnRhYmxlLnN1cHBvcnRQb2ludGVyICE9PSBmYWxzZSAmJiAoJ1BvaW50ZXJFdmVudCcgaW4gd2luZG93KSxcblx0XHRcdGVtcHR5SW5zZXJ0VGhyZXNob2xkOiA1XG5cdFx0fTtcblxuXG5cdFx0Ly8gU2V0IGRlZmF1bHQgb3B0aW9uc1xuXHRcdGZvciAodmFyIG5hbWUgaW4gZGVmYXVsdHMpIHtcblx0XHRcdCEobmFtZSBpbiBvcHRpb25zKSAmJiAob3B0aW9uc1tuYW1lXSA9IGRlZmF1bHRzW25hbWVdKTtcblx0XHR9XG5cblx0XHRfcHJlcGFyZUdyb3VwKG9wdGlvbnMpO1xuXG5cdFx0Ly8gQmluZCBhbGwgcHJpdmF0ZSBtZXRob2RzXG5cdFx0Zm9yICh2YXIgZm4gaW4gdGhpcykge1xuXHRcdFx0aWYgKGZuLmNoYXJBdCgwKSA9PT0gJ18nICYmIHR5cGVvZiB0aGlzW2ZuXSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHR0aGlzW2ZuXSA9IHRoaXNbZm5dLmJpbmQodGhpcyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0dXAgZHJhZyBtb2RlXG5cdFx0dGhpcy5uYXRpdmVEcmFnZ2FibGUgPSBvcHRpb25zLmZvcmNlRmFsbGJhY2sgPyBmYWxzZSA6IHN1cHBvcnREcmFnZ2FibGU7XG5cblx0XHRpZiAodGhpcy5uYXRpdmVEcmFnZ2FibGUpIHtcblx0XHRcdC8vIFRvdWNoIHN0YXJ0IHRocmVzaG9sZCBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBuYXRpdmUgZHJhZ3N0YXJ0IHRocmVzaG9sZFxuXHRcdFx0dGhpcy5vcHRpb25zLnRvdWNoU3RhcnRUaHJlc2hvbGQgPSAxO1xuXHRcdH1cblxuXHRcdC8vIEJpbmQgZXZlbnRzXG5cdFx0aWYgKG9wdGlvbnMuc3VwcG9ydFBvaW50ZXIpIHtcblx0XHRcdF9vbihlbCwgJ3BvaW50ZXJkb3duJywgdGhpcy5fb25UYXBTdGFydCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdF9vbihlbCwgJ21vdXNlZG93bicsIHRoaXMuX29uVGFwU3RhcnQpO1xuXHRcdFx0X29uKGVsLCAndG91Y2hzdGFydCcsIHRoaXMuX29uVGFwU3RhcnQpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuXHRcdFx0X29uKGVsLCAnZHJhZ292ZXInLCB0aGlzKTtcblx0XHRcdF9vbihlbCwgJ2RyYWdlbnRlcicsIHRoaXMpO1xuXHRcdH1cblxuXHRcdHNvcnRhYmxlcy5wdXNoKHRoaXMuZWwpO1xuXG5cdFx0Ly8gUmVzdG9yZSBzb3J0aW5nXG5cdFx0b3B0aW9ucy5zdG9yZSAmJiBvcHRpb25zLnN0b3JlLmdldCAmJiB0aGlzLnNvcnQob3B0aW9ucy5zdG9yZS5nZXQodGhpcykgfHwgW10pO1xuXHR9XG5cblx0U29ydGFibGUucHJvdG90eXBlID0gLyoqIEBsZW5kcyBTb3J0YWJsZS5wcm90b3R5cGUgKi8ge1xuXHRcdGNvbnN0cnVjdG9yOiBTb3J0YWJsZSxcblxuXHRcdF9jb21wdXRlSXNBbGlnbmVkOiBmdW5jdGlvbihldnQpIHtcblx0XHRcdHZhciB0YXJnZXQ7XG5cblx0XHRcdGlmIChnaG9zdEVsICYmICFzdXBwb3J0Q3NzUG9pbnRlckV2ZW50cykge1xuXHRcdFx0XHRfaGlkZUdob3N0Rm9yVGFyZ2V0KCk7XG5cdFx0XHRcdHRhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZ0LmNsaWVudFgsIGV2dC5jbGllbnRZKTtcblx0XHRcdFx0X3VuaGlkZUdob3N0Rm9yVGFyZ2V0KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0YXJnZXQgPSBldnQudGFyZ2V0O1xuXHRcdFx0fVxuXG5cdFx0XHR0YXJnZXQgPSBfY2xvc2VzdCh0YXJnZXQsIHRoaXMub3B0aW9ucy5kcmFnZ2FibGUsIHRoaXMuZWwsIGZhbHNlKTtcblx0XHRcdGlmIChfYWxpZ25lZFNpbGVudCkgcmV0dXJuO1xuXHRcdFx0aWYgKCFkcmFnRWwgfHwgZHJhZ0VsLnBhcmVudE5vZGUgIT09IHRoaXMuZWwpIHJldHVybjtcblxuXHRcdFx0dmFyIGNoaWxkcmVuID0gdGhpcy5lbC5jaGlsZHJlbjtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Ly8gRG9uJ3QgY2hhbmdlIGZvciB0YXJnZXQgaW4gY2FzZSBpdCBpcyBjaGFuZ2VkIHRvIGFsaWduZWQgYmVmb3JlIG9uRHJhZ092ZXIgaXMgZmlyZWRcblx0XHRcdFx0aWYgKF9jbG9zZXN0KGNoaWxkcmVuW2ldLCB0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlLCB0aGlzLmVsLCBmYWxzZSkgJiYgY2hpbGRyZW5baV0gIT09IHRhcmdldCkge1xuXHRcdFx0XHRcdGNoaWxkcmVuW2ldLnNvcnRhYmxlTW91c2VBbGlnbmVkID0gX2lzQ2xpZW50SW5Sb3dDb2x1bW4oZXZ0LmNsaWVudFgsIGV2dC5jbGllbnRZLCBjaGlsZHJlbltpXSwgdGhpcy5fZ2V0RGlyZWN0aW9uKGV2dCwgbnVsbCksIHRoaXMub3B0aW9ucyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIFVzZWQgZm9yIG51bGxpbmcgbGFzdCB0YXJnZXQgd2hlbiBub3QgaW4gZWxlbWVudCwgbm90aGluZyB0byBkbyB3aXRoIGNoZWNraW5nIGlmIGFsaWduZWRcblx0XHRcdGlmICghX2Nsb3Nlc3QodGFyZ2V0LCB0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlLCB0aGlzLmVsLCB0cnVlKSkge1xuXHRcdFx0XHRsYXN0VGFyZ2V0ID0gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0X2FsaWduZWRTaWxlbnQgPSB0cnVlO1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0X2FsaWduZWRTaWxlbnQgPSBmYWxzZTtcblx0XHRcdH0sIDMwKTtcblxuXHRcdH0sXG5cblx0XHRfZ2V0RGlyZWN0aW9uOiBmdW5jdGlvbihldnQsIHRhcmdldCkge1xuXHRcdFx0cmV0dXJuICh0eXBlb2YgdGhpcy5vcHRpb25zLmRpcmVjdGlvbiA9PT0gJ2Z1bmN0aW9uJykgPyB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uLmNhbGwodGhpcywgZXZ0LCB0YXJnZXQsIGRyYWdFbCkgOiB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uO1xuXHRcdH0sXG5cblx0XHRfb25UYXBTdGFydDogZnVuY3Rpb24gKC8qKiBFdmVudHxUb3VjaEV2ZW50ICovZXZ0KSB7XG5cdFx0XHRpZiAoIWV2dC5jYW5jZWxhYmxlKSByZXR1cm47XG5cdFx0XHR2YXIgX3RoaXMgPSB0aGlzLFxuXHRcdFx0XHRlbCA9IHRoaXMuZWwsXG5cdFx0XHRcdG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHRcdHByZXZlbnRPbkZpbHRlciA9IG9wdGlvbnMucHJldmVudE9uRmlsdGVyLFxuXHRcdFx0XHR0eXBlID0gZXZ0LnR5cGUsXG5cdFx0XHRcdHRvdWNoID0gZXZ0LnRvdWNoZXMgJiYgZXZ0LnRvdWNoZXNbMF0sXG5cdFx0XHRcdHRhcmdldCA9ICh0b3VjaCB8fCBldnQpLnRhcmdldCxcblx0XHRcdFx0b3JpZ2luYWxUYXJnZXQgPSBldnQudGFyZ2V0LnNoYWRvd1Jvb3QgJiYgKChldnQucGF0aCAmJiBldnQucGF0aFswXSkgfHwgKGV2dC5jb21wb3NlZFBhdGggJiYgZXZ0LmNvbXBvc2VkUGF0aCgpWzBdKSkgfHwgdGFyZ2V0LFxuXHRcdFx0XHRmaWx0ZXIgPSBvcHRpb25zLmZpbHRlcixcblx0XHRcdFx0c3RhcnRJbmRleCxcblx0XHRcdFx0c3RhcnREcmFnZ2FibGVJbmRleDtcblxuXHRcdFx0X3NhdmVJbnB1dENoZWNrZWRTdGF0ZShlbCk7XG5cblx0XHRcdC8vIERvbid0IHRyaWdnZXIgc3RhcnQgZXZlbnQgd2hlbiBhbiBlbGVtZW50IGlzIGJlZW4gZHJhZ2dlZCwgb3RoZXJ3aXNlIHRoZSBldnQub2xkaW5kZXggYWx3YXlzIHdyb25nIHdoZW4gc2V0IG9wdGlvbi5ncm91cC5cblx0XHRcdGlmIChkcmFnRWwpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoL21vdXNlZG93bnxwb2ludGVyZG93bi8udGVzdCh0eXBlKSAmJiBldnQuYnV0dG9uICE9PSAwIHx8IG9wdGlvbnMuZGlzYWJsZWQpIHtcblx0XHRcdFx0cmV0dXJuOyAvLyBvbmx5IGxlZnQgYnV0dG9uIGFuZCBlbmFibGVkXG5cdFx0XHR9XG5cblx0XHRcdC8vIGNhbmNlbCBkbmQgaWYgb3JpZ2luYWwgdGFyZ2V0IGlzIGNvbnRlbnQgZWRpdGFibGVcblx0XHRcdGlmIChvcmlnaW5hbFRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHRhcmdldCA9IF9jbG9zZXN0KHRhcmdldCwgb3B0aW9ucy5kcmFnZ2FibGUsIGVsLCBmYWxzZSk7XG5cblxuXHRcdFx0aWYgKGxhc3REb3duRWwgPT09IHRhcmdldCkge1xuXHRcdFx0XHQvLyBJZ25vcmluZyBkdXBsaWNhdGUgYGRvd25gXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gR2V0IHRoZSBpbmRleCBvZiB0aGUgZHJhZ2dlZCBlbGVtZW50IHdpdGhpbiBpdHMgcGFyZW50XG5cdFx0XHRzdGFydEluZGV4ID0gX2luZGV4KHRhcmdldCk7XG5cdFx0XHRzdGFydERyYWdnYWJsZUluZGV4ID0gX2luZGV4KHRhcmdldCwgb3B0aW9ucy5kcmFnZ2FibGUpO1xuXG5cdFx0XHQvLyBDaGVjayBmaWx0ZXJcblx0XHRcdGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdGlmIChmaWx0ZXIuY2FsbCh0aGlzLCBldnQsIHRhcmdldCwgdGhpcykpIHtcblx0XHRcdFx0XHRfZGlzcGF0Y2hFdmVudChfdGhpcywgb3JpZ2luYWxUYXJnZXQsICdmaWx0ZXInLCB0YXJnZXQsIGVsLCBlbCwgc3RhcnRJbmRleCwgdW5kZWZpbmVkLCBzdGFydERyYWdnYWJsZUluZGV4KTtcblx0XHRcdFx0XHRwcmV2ZW50T25GaWx0ZXIgJiYgZXZ0LmNhbmNlbGFibGUgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0cmV0dXJuOyAvLyBjYW5jZWwgZG5kXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKGZpbHRlcikge1xuXHRcdFx0XHRmaWx0ZXIgPSBmaWx0ZXIuc3BsaXQoJywnKS5zb21lKGZ1bmN0aW9uIChjcml0ZXJpYSkge1xuXHRcdFx0XHRcdGNyaXRlcmlhID0gX2Nsb3Nlc3Qob3JpZ2luYWxUYXJnZXQsIGNyaXRlcmlhLnRyaW0oKSwgZWwsIGZhbHNlKTtcblxuXHRcdFx0XHRcdGlmIChjcml0ZXJpYSkge1xuXHRcdFx0XHRcdFx0X2Rpc3BhdGNoRXZlbnQoX3RoaXMsIGNyaXRlcmlhLCAnZmlsdGVyJywgdGFyZ2V0LCBlbCwgZWwsIHN0YXJ0SW5kZXgsIHVuZGVmaW5lZCwgc3RhcnREcmFnZ2FibGVJbmRleCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmIChmaWx0ZXIpIHtcblx0XHRcdFx0XHRwcmV2ZW50T25GaWx0ZXIgJiYgZXZ0LmNhbmNlbGFibGUgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0cmV0dXJuOyAvLyBjYW5jZWwgZG5kXG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKG9wdGlvbnMuaGFuZGxlICYmICFfY2xvc2VzdChvcmlnaW5hbFRhcmdldCwgb3B0aW9ucy5oYW5kbGUsIGVsLCBmYWxzZSkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQcmVwYXJlIGBkcmFnc3RhcnRgXG5cdFx0XHR0aGlzLl9wcmVwYXJlRHJhZ1N0YXJ0KGV2dCwgdG91Y2gsIHRhcmdldCwgc3RhcnRJbmRleCwgc3RhcnREcmFnZ2FibGVJbmRleCk7XG5cdFx0fSxcblxuXG5cdFx0X2hhbmRsZUF1dG9TY3JvbGw6IGZ1bmN0aW9uKGV2dCwgZmFsbGJhY2spIHtcblx0XHRcdGlmICghZHJhZ0VsIHx8ICF0aGlzLm9wdGlvbnMuc2Nyb2xsKSByZXR1cm47XG5cdFx0XHR2YXIgeCA9IGV2dC5jbGllbnRYLFxuXHRcdFx0XHR5ID0gZXZ0LmNsaWVudFksXG5cblx0XHRcdFx0ZWxlbSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSksXG5cdFx0XHRcdF90aGlzID0gdGhpcztcblxuXHRcdFx0Ly8gSUUgZG9lcyBub3Qgc2VlbSB0byBoYXZlIG5hdGl2ZSBhdXRvc2Nyb2xsLFxuXHRcdFx0Ly8gRWRnZSdzIGF1dG9zY3JvbGwgc2VlbXMgdG9vIGNvbmRpdGlvbmFsLFxuXHRcdFx0Ly8gTUFDT1MgU2FmYXJpIGRvZXMgbm90IGhhdmUgYXV0b3Njcm9sbCxcblx0XHRcdC8vIEZpcmVmb3ggYW5kIENocm9tZSBhcmUgZ29vZFxuXHRcdFx0aWYgKGZhbGxiYWNrIHx8IEVkZ2UgfHwgSUUxMU9yTGVzcyB8fCBTYWZhcmkpIHtcblx0XHRcdFx0X2F1dG9TY3JvbGwoZXZ0LCBfdGhpcy5vcHRpb25zLCBlbGVtLCBmYWxsYmFjayk7XG5cblx0XHRcdFx0Ly8gTGlzdGVuZXIgZm9yIHBvaW50ZXIgZWxlbWVudCBjaGFuZ2Vcblx0XHRcdFx0dmFyIG9nRWxlbVNjcm9sbGVyID0gX2dldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KGVsZW0sIHRydWUpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0c2Nyb2xsaW5nICYmXG5cdFx0XHRcdFx0KFxuXHRcdFx0XHRcdFx0IXBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsIHx8XG5cdFx0XHRcdFx0XHR4ICE9PSBsYXN0UG9pbnRlckVsZW1YIHx8XG5cdFx0XHRcdFx0XHR5ICE9PSBsYXN0UG9pbnRlckVsZW1ZXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblxuXHRcdFx0XHRcdHBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsICYmIGNsZWFySW50ZXJ2YWwocG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwpO1xuXHRcdFx0XHRcdC8vIERldGVjdCBmb3IgcG9pbnRlciBlbGVtIGNoYW5nZSwgZW11bGF0aW5nIG5hdGl2ZSBEbkQgYmVoYXZpb3VyXG5cdFx0XHRcdFx0cG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGlmICghZHJhZ0VsKSByZXR1cm47XG5cdFx0XHRcdFx0XHQvLyBjb3VsZCBhbHNvIGNoZWNrIGlmIHNjcm9sbCBkaXJlY3Rpb24gb24gbmV3RWxlbSBjaGFuZ2VzIGR1ZSB0byBwYXJlbnQgYXV0b3Njcm9sbGluZ1xuXHRcdFx0XHRcdFx0dmFyIG5ld0VsZW0gPSBfZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQoZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KSwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRpZiAobmV3RWxlbSAhPT0gb2dFbGVtU2Nyb2xsZXIpIHtcblx0XHRcdFx0XHRcdFx0b2dFbGVtU2Nyb2xsZXIgPSBuZXdFbGVtO1xuXHRcdFx0XHRcdFx0XHRfY2xlYXJBdXRvU2Nyb2xscygpO1xuXHRcdFx0XHRcdFx0XHRfYXV0b1Njcm9sbChldnQsIF90aGlzLm9wdGlvbnMsIG9nRWxlbVNjcm9sbGVyLCBmYWxsYmFjayk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSwgMTApO1xuXHRcdFx0XHRcdGxhc3RQb2ludGVyRWxlbVggPSB4O1xuXHRcdFx0XHRcdGxhc3RQb2ludGVyRWxlbVkgPSB5O1xuXHRcdFx0XHR9XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIGlmIERuRCBpcyBlbmFibGVkIChhbmQgYnJvd3NlciBoYXMgZ29vZCBhdXRvc2Nyb2xsaW5nKSwgZmlyc3QgYXV0b3Njcm9sbCB3aWxsIGFscmVhZHkgc2Nyb2xsLCBzbyBnZXQgcGFyZW50IGF1dG9zY3JvbGwgb2YgZmlyc3QgYXV0b3Njcm9sbFxuXHRcdFx0XHRpZiAoIV90aGlzLm9wdGlvbnMuYnViYmxlU2Nyb2xsIHx8IF9nZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChlbGVtLCB0cnVlKSA9PT0gX2dldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKSkge1xuXHRcdFx0XHRcdF9jbGVhckF1dG9TY3JvbGxzKCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdF9hdXRvU2Nyb2xsKGV2dCwgX3RoaXMub3B0aW9ucywgX2dldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KGVsZW0sIGZhbHNlKSwgZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRfcHJlcGFyZURyYWdTdGFydDogZnVuY3Rpb24gKC8qKiBFdmVudCAqL2V2dCwgLyoqIFRvdWNoICovdG91Y2gsIC8qKiBIVE1MRWxlbWVudCAqL3RhcmdldCwgLyoqIE51bWJlciAqL3N0YXJ0SW5kZXgsIC8qKiBOdW1iZXIgKi9zdGFydERyYWdnYWJsZUluZGV4KSB7XG5cdFx0XHR2YXIgX3RoaXMgPSB0aGlzLFxuXHRcdFx0XHRlbCA9IF90aGlzLmVsLFxuXHRcdFx0XHRvcHRpb25zID0gX3RoaXMub3B0aW9ucyxcblx0XHRcdFx0b3duZXJEb2N1bWVudCA9IGVsLm93bmVyRG9jdW1lbnQsXG5cdFx0XHRcdGRyYWdTdGFydEZuO1xuXG5cdFx0XHRpZiAodGFyZ2V0ICYmICFkcmFnRWwgJiYgKHRhcmdldC5wYXJlbnROb2RlID09PSBlbCkpIHtcblx0XHRcdFx0cm9vdEVsID0gZWw7XG5cdFx0XHRcdGRyYWdFbCA9IHRhcmdldDtcblx0XHRcdFx0cGFyZW50RWwgPSBkcmFnRWwucGFyZW50Tm9kZTtcblx0XHRcdFx0bmV4dEVsID0gZHJhZ0VsLm5leHRTaWJsaW5nO1xuXHRcdFx0XHRsYXN0RG93bkVsID0gdGFyZ2V0O1xuXHRcdFx0XHRhY3RpdmVHcm91cCA9IG9wdGlvbnMuZ3JvdXA7XG5cdFx0XHRcdG9sZEluZGV4ID0gc3RhcnRJbmRleDtcblx0XHRcdFx0b2xkRHJhZ2dhYmxlSW5kZXggPSBzdGFydERyYWdnYWJsZUluZGV4O1xuXG5cdFx0XHRcdHRhcEV2dCA9IHtcblx0XHRcdFx0XHR0YXJnZXQ6IGRyYWdFbCxcblx0XHRcdFx0XHRjbGllbnRYOiAodG91Y2ggfHwgZXZ0KS5jbGllbnRYLFxuXHRcdFx0XHRcdGNsaWVudFk6ICh0b3VjaCB8fCBldnQpLmNsaWVudFlcblx0XHRcdFx0fTtcblxuXHRcdFx0XHR0aGlzLl9sYXN0WCA9ICh0b3VjaCB8fCBldnQpLmNsaWVudFg7XG5cdFx0XHRcdHRoaXMuX2xhc3RZID0gKHRvdWNoIHx8IGV2dCkuY2xpZW50WTtcblxuXHRcdFx0XHRkcmFnRWwuc3R5bGVbJ3dpbGwtY2hhbmdlJ10gPSAnYWxsJztcblx0XHRcdFx0Ly8gdW5kbyBhbmltYXRpb24gaWYgbmVlZGVkXG5cdFx0XHRcdGRyYWdFbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XG5cdFx0XHRcdGRyYWdFbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcblxuXHRcdFx0XHRkcmFnU3RhcnRGbiA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHQvLyBEZWxheWVkIGRyYWcgaGFzIGJlZW4gdHJpZ2dlcmVkXG5cdFx0XHRcdFx0Ly8gd2UgY2FuIHJlLWVuYWJsZSB0aGUgZXZlbnRzOiB0b3VjaG1vdmUvbW91c2Vtb3ZlXG5cdFx0XHRcdFx0X3RoaXMuX2Rpc2FibGVEZWxheWVkRHJhZ0V2ZW50cygpO1xuXG5cdFx0XHRcdFx0aWYgKCFGaXJlRm94ICYmIF90aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuXHRcdFx0XHRcdFx0ZHJhZ0VsLmRyYWdnYWJsZSA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gQmluZCB0aGUgZXZlbnRzOiBkcmFnc3RhcnQvZHJhZ2VuZFxuXHRcdFx0XHRcdF90aGlzLl90cmlnZ2VyRHJhZ1N0YXJ0KGV2dCwgdG91Y2gpO1xuXG5cdFx0XHRcdFx0Ly8gRHJhZyBzdGFydCBldmVudFxuXHRcdFx0XHRcdF9kaXNwYXRjaEV2ZW50KF90aGlzLCByb290RWwsICdjaG9vc2UnLCBkcmFnRWwsIHJvb3RFbCwgcm9vdEVsLCBvbGRJbmRleCwgdW5kZWZpbmVkLCBvbGREcmFnZ2FibGVJbmRleCk7XG5cblx0XHRcdFx0XHQvLyBDaG9zZW4gaXRlbVxuXHRcdFx0XHRcdF90b2dnbGVDbGFzcyhkcmFnRWwsIG9wdGlvbnMuY2hvc2VuQ2xhc3MsIHRydWUpO1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdC8vIERpc2FibGUgXCJkcmFnZ2FibGVcIlxuXHRcdFx0XHRvcHRpb25zLmlnbm9yZS5zcGxpdCgnLCcpLmZvckVhY2goZnVuY3Rpb24gKGNyaXRlcmlhKSB7XG5cdFx0XHRcdFx0X2ZpbmQoZHJhZ0VsLCBjcml0ZXJpYS50cmltKCksIF9kaXNhYmxlRHJhZ2dhYmxlKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0X29uKG93bmVyRG9jdW1lbnQsICdkcmFnb3ZlcicsIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KTtcblx0XHRcdFx0X29uKG93bmVyRG9jdW1lbnQsICdtb3VzZW1vdmUnLCBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCk7XG5cdFx0XHRcdF9vbihvd25lckRvY3VtZW50LCAndG91Y2htb3ZlJywgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQpO1xuXG5cdFx0XHRcdF9vbihvd25lckRvY3VtZW50LCAnbW91c2V1cCcsIF90aGlzLl9vbkRyb3ApO1xuXHRcdFx0XHRfb24ob3duZXJEb2N1bWVudCwgJ3RvdWNoZW5kJywgX3RoaXMuX29uRHJvcCk7XG5cdFx0XHRcdF9vbihvd25lckRvY3VtZW50LCAndG91Y2hjYW5jZWwnLCBfdGhpcy5fb25Ecm9wKTtcblxuXHRcdFx0XHQvLyBNYWtlIGRyYWdFbCBkcmFnZ2FibGUgKG11c3QgYmUgYmVmb3JlIGRlbGF5IGZvciBGaXJlRm94KVxuXHRcdFx0XHRpZiAoRmlyZUZveCAmJiB0aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuXHRcdFx0XHRcdHRoaXMub3B0aW9ucy50b3VjaFN0YXJ0VGhyZXNob2xkID0gNDtcblx0XHRcdFx0XHRkcmFnRWwuZHJhZ2dhYmxlID0gdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIERlbGF5IGlzIGltcG9zc2libGUgZm9yIG5hdGl2ZSBEbkQgaW4gRWRnZSBvciBJRVxuXHRcdFx0XHRpZiAob3B0aW9ucy5kZWxheSAmJiAob3B0aW9ucy5kZWxheU9uVG91Y2hPbmx5ID8gdG91Y2ggOiB0cnVlKSAmJiAoIXRoaXMubmF0aXZlRHJhZ2dhYmxlIHx8ICEoRWRnZSB8fCBJRTExT3JMZXNzKSkpIHtcblx0XHRcdFx0XHQvLyBJZiB0aGUgdXNlciBtb3ZlcyB0aGUgcG9pbnRlciBvciBsZXQgZ28gdGhlIGNsaWNrIG9yIHRvdWNoXG5cdFx0XHRcdFx0Ly8gYmVmb3JlIHRoZSBkZWxheSBoYXMgYmVlbiByZWFjaGVkOlxuXHRcdFx0XHRcdC8vIGRpc2FibGUgdGhlIGRlbGF5ZWQgZHJhZ1xuXHRcdFx0XHRcdF9vbihvd25lckRvY3VtZW50LCAnbW91c2V1cCcsIF90aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuXHRcdFx0XHRcdF9vbihvd25lckRvY3VtZW50LCAndG91Y2hlbmQnLCBfdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnKTtcblx0XHRcdFx0XHRfb24ob3duZXJEb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgX3RoaXMuX2Rpc2FibGVEZWxheWVkRHJhZyk7XG5cdFx0XHRcdFx0X29uKG93bmVyRG9jdW1lbnQsICdtb3VzZW1vdmUnLCBfdGhpcy5fZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyKTtcblx0XHRcdFx0XHRfb24ob3duZXJEb2N1bWVudCwgJ3RvdWNobW92ZScsIF90aGlzLl9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXIpO1xuXHRcdFx0XHRcdG9wdGlvbnMuc3VwcG9ydFBvaW50ZXIgJiYgX29uKG93bmVyRG9jdW1lbnQsICdwb2ludGVybW92ZScsIF90aGlzLl9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXIpO1xuXG5cdFx0XHRcdFx0X3RoaXMuX2RyYWdTdGFydFRpbWVyID0gc2V0VGltZW91dChkcmFnU3RhcnRGbiwgb3B0aW9ucy5kZWxheSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZHJhZ1N0YXJ0Rm4oKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRfZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyOiBmdW5jdGlvbiAoLyoqIFRvdWNoRXZlbnR8UG9pbnRlckV2ZW50ICoqL2UpIHtcblx0XHRcdHZhciB0b3VjaCA9IGUudG91Y2hlcyA/IGUudG91Y2hlc1swXSA6IGU7XG5cdFx0XHRpZiAobWF4KGFicyh0b3VjaC5jbGllbnRYIC0gdGhpcy5fbGFzdFgpLCBhYnModG91Y2guY2xpZW50WSAtIHRoaXMuX2xhc3RZKSlcblx0XHRcdFx0XHQ+PSBNYXRoLmZsb29yKHRoaXMub3B0aW9ucy50b3VjaFN0YXJ0VGhyZXNob2xkIC8gKHRoaXMubmF0aXZlRHJhZ2dhYmxlICYmIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRoaXMuX2Rpc2FibGVEZWxheWVkRHJhZygpO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRfZGlzYWJsZURlbGF5ZWREcmFnOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRkcmFnRWwgJiYgX2Rpc2FibGVEcmFnZ2FibGUoZHJhZ0VsKTtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLl9kcmFnU3RhcnRUaW1lcik7XG5cblx0XHRcdHRoaXMuX2Rpc2FibGVEZWxheWVkRHJhZ0V2ZW50cygpO1xuXHRcdH0sXG5cblx0XHRfZGlzYWJsZURlbGF5ZWREcmFnRXZlbnRzOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHR2YXIgb3duZXJEb2N1bWVudCA9IHRoaXMuZWwub3duZXJEb2N1bWVudDtcblx0XHRcdF9vZmYob3duZXJEb2N1bWVudCwgJ21vdXNldXAnLCB0aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuXHRcdFx0X29mZihvd25lckRvY3VtZW50LCAndG91Y2hlbmQnLCB0aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuXHRcdFx0X29mZihvd25lckRvY3VtZW50LCAndG91Y2hjYW5jZWwnLCB0aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuXHRcdFx0X29mZihvd25lckRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5fZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyKTtcblx0XHRcdF9vZmYob3duZXJEb2N1bWVudCwgJ3RvdWNobW92ZScsIHRoaXMuX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcik7XG5cdFx0XHRfb2ZmKG93bmVyRG9jdW1lbnQsICdwb2ludGVybW92ZScsIHRoaXMuX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcik7XG5cdFx0fSxcblxuXHRcdF90cmlnZ2VyRHJhZ1N0YXJ0OiBmdW5jdGlvbiAoLyoqIEV2ZW50ICovZXZ0LCAvKiogVG91Y2ggKi90b3VjaCkge1xuXHRcdFx0dG91Y2ggPSB0b3VjaCB8fCAoZXZ0LnBvaW50ZXJUeXBlID09ICd0b3VjaCcgPyBldnQgOiBudWxsKTtcblxuXHRcdFx0aWYgKCF0aGlzLm5hdGl2ZURyYWdnYWJsZSB8fCB0b3VjaCkge1xuXHRcdFx0XHRpZiAodGhpcy5vcHRpb25zLnN1cHBvcnRQb2ludGVyKSB7XG5cdFx0XHRcdFx0X29uKGRvY3VtZW50LCAncG9pbnRlcm1vdmUnLCB0aGlzLl9vblRvdWNoTW92ZSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAodG91Y2gpIHtcblx0XHRcdFx0XHRfb24oZG9jdW1lbnQsICd0b3VjaG1vdmUnLCB0aGlzLl9vblRvdWNoTW92ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0X29uKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5fb25Ub3VjaE1vdmUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRfb24oZHJhZ0VsLCAnZHJhZ2VuZCcsIHRoaXMpO1xuXHRcdFx0XHRfb24ocm9vdEVsLCAnZHJhZ3N0YXJ0JywgdGhpcy5fb25EcmFnU3RhcnQpO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoZG9jdW1lbnQuc2VsZWN0aW9uKSB7XG5cdFx0XHRcdFx0Ly8gVGltZW91dCBuZWNjZXNzYXJ5IGZvciBJRTlcblx0XHRcdFx0XHRfbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0ZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0d2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0X2RyYWdTdGFydGVkOiBmdW5jdGlvbiAoZmFsbGJhY2ssIGV2dCkge1xuXHRcdFx0YXdhaXRpbmdEcmFnU3RhcnRlZCA9IGZhbHNlO1xuXHRcdFx0aWYgKHJvb3RFbCAmJiBkcmFnRWwpIHtcblx0XHRcdFx0aWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG5cdFx0XHRcdFx0X29uKGRvY3VtZW50LCAnZHJhZ292ZXInLCB0aGlzLl9oYW5kbGVBdXRvU2Nyb2xsKTtcblx0XHRcdFx0XHRfb24oZG9jdW1lbnQsICdkcmFnb3ZlcicsIF9jaGVja0FsaWdubWVudCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cblx0XHRcdFx0Ly8gQXBwbHkgZWZmZWN0XG5cdFx0XHRcdCFmYWxsYmFjayAmJiBfdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBvcHRpb25zLmRyYWdDbGFzcywgZmFsc2UpO1xuXHRcdFx0XHRfdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBvcHRpb25zLmdob3N0Q2xhc3MsIHRydWUpO1xuXG5cdFx0XHRcdC8vIEluIGNhc2UgZHJhZ2dpbmcgYW4gYW5pbWF0ZWQgZWxlbWVudFxuXHRcdFx0XHRfY3NzKGRyYWdFbCwgJ3RyYW5zZm9ybScsICcnKTtcblxuXHRcdFx0XHRTb3J0YWJsZS5hY3RpdmUgPSB0aGlzO1xuXG5cdFx0XHRcdGZhbGxiYWNrICYmIHRoaXMuX2FwcGVuZEdob3N0KCk7XG5cblx0XHRcdFx0Ly8gRHJhZyBzdGFydCBldmVudFxuXHRcdFx0XHRfZGlzcGF0Y2hFdmVudCh0aGlzLCByb290RWwsICdzdGFydCcsIGRyYWdFbCwgcm9vdEVsLCByb290RWwsIG9sZEluZGV4LCB1bmRlZmluZWQsIG9sZERyYWdnYWJsZUluZGV4LCB1bmRlZmluZWQsIGV2dCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLl9udWxsaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdF9lbXVsYXRlRHJhZ092ZXI6IGZ1bmN0aW9uIChmb3JBdXRvU2Nyb2xsKSB7XG5cdFx0XHRpZiAodG91Y2hFdnQpIHtcblx0XHRcdFx0aWYgKHRoaXMuX2xhc3RYID09PSB0b3VjaEV2dC5jbGllbnRYICYmIHRoaXMuX2xhc3RZID09PSB0b3VjaEV2dC5jbGllbnRZICYmICFmb3JBdXRvU2Nyb2xsKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2xhc3RYID0gdG91Y2hFdnQuY2xpZW50WDtcblx0XHRcdFx0dGhpcy5fbGFzdFkgPSB0b3VjaEV2dC5jbGllbnRZO1xuXG5cdFx0XHRcdF9oaWRlR2hvc3RGb3JUYXJnZXQoKTtcblxuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh0b3VjaEV2dC5jbGllbnRYLCB0b3VjaEV2dC5jbGllbnRZKTtcblx0XHRcdFx0dmFyIHBhcmVudCA9IHRhcmdldDtcblxuXHRcdFx0XHR3aGlsZSAodGFyZ2V0ICYmIHRhcmdldC5zaGFkb3dSb290KSB7XG5cdFx0XHRcdFx0dGFyZ2V0ID0gdGFyZ2V0LnNoYWRvd1Jvb3QuZWxlbWVudEZyb21Qb2ludCh0b3VjaEV2dC5jbGllbnRYLCB0b3VjaEV2dC5jbGllbnRZKTtcblx0XHRcdFx0XHRpZiAodGFyZ2V0ID09PSBwYXJlbnQpIGJyZWFrO1xuXHRcdFx0XHRcdHBhcmVudCA9IHRhcmdldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwYXJlbnQpIHtcblx0XHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0XHRpZiAocGFyZW50W2V4cGFuZG9dKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBpbnNlcnRlZDtcblxuXHRcdFx0XHRcdFx0XHRpbnNlcnRlZCA9IHBhcmVudFtleHBhbmRvXS5fb25EcmFnT3Zlcih7XG5cdFx0XHRcdFx0XHRcdFx0Y2xpZW50WDogdG91Y2hFdnQuY2xpZW50WCxcblx0XHRcdFx0XHRcdFx0XHRjbGllbnRZOiB0b3VjaEV2dC5jbGllbnRZLFxuXHRcdFx0XHRcdFx0XHRcdHRhcmdldDogdGFyZ2V0LFxuXHRcdFx0XHRcdFx0XHRcdHJvb3RFbDogcGFyZW50XG5cdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChpbnNlcnRlZCAmJiAhdGhpcy5vcHRpb25zLmRyYWdvdmVyQnViYmxlKSB7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGFyZ2V0ID0gcGFyZW50OyAvLyBzdG9yZSBsYXN0IGVsZW1lbnRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0LyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuXHRcdFx0XHRcdHdoaWxlIChwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZHJhZ0VsLnBhcmVudE5vZGVbZXhwYW5kb10uX2NvbXB1dGVJc0FsaWduZWQodG91Y2hFdnQpO1xuXG5cdFx0XHRcdF91bmhpZGVHaG9zdEZvclRhcmdldCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cblxuXHRcdF9vblRvdWNoTW92ZTogZnVuY3Rpb24gKC8qKlRvdWNoRXZlbnQqL2V2dCwgZm9yQXV0b1Njcm9sbCkge1xuXHRcdFx0aWYgKHRhcEV2dCkge1xuXHRcdFx0XHR2YXJcdG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHRcdFx0ZmFsbGJhY2tUb2xlcmFuY2UgPSBvcHRpb25zLmZhbGxiYWNrVG9sZXJhbmNlLFxuXHRcdFx0XHRcdGZhbGxiYWNrT2Zmc2V0ID0gb3B0aW9ucy5mYWxsYmFja09mZnNldCxcblx0XHRcdFx0XHR0b3VjaCA9IGV2dC50b3VjaGVzID8gZXZ0LnRvdWNoZXNbMF0gOiBldnQsXG5cdFx0XHRcdFx0bWF0cml4ID0gZ2hvc3RFbCAmJiBfbWF0cml4KGdob3N0RWwpLFxuXHRcdFx0XHRcdHNjYWxlWCA9IGdob3N0RWwgJiYgbWF0cml4ICYmIG1hdHJpeC5hLFxuXHRcdFx0XHRcdHNjYWxlWSA9IGdob3N0RWwgJiYgbWF0cml4ICYmIG1hdHJpeC5kLFxuXHRcdFx0XHRcdHJlbGF0aXZlU2Nyb2xsT2Zmc2V0ID0gUG9zaXRpb25HaG9zdEFic29sdXRlbHkgJiYgZ2hvc3RSZWxhdGl2ZVBhcmVudCAmJiBfZ2V0UmVsYXRpdmVTY3JvbGxPZmZzZXQoZ2hvc3RSZWxhdGl2ZVBhcmVudCksXG5cdFx0XHRcdFx0ZHggPSAoKHRvdWNoLmNsaWVudFggLSB0YXBFdnQuY2xpZW50WClcblx0XHRcdFx0XHRcdFx0KyBmYWxsYmFja09mZnNldC54KSAvIChzY2FsZVggfHwgMSlcblx0XHRcdFx0XHRcdFx0KyAocmVsYXRpdmVTY3JvbGxPZmZzZXQgPyAocmVsYXRpdmVTY3JvbGxPZmZzZXRbMF0gLSBnaG9zdFJlbGF0aXZlUGFyZW50SW5pdGlhbFNjcm9sbFswXSkgOiAwKSAvIChzY2FsZVggfHwgMSksXG5cdFx0XHRcdFx0ZHkgPSAoKHRvdWNoLmNsaWVudFkgLSB0YXBFdnQuY2xpZW50WSlcblx0XHRcdFx0XHRcdFx0KyBmYWxsYmFja09mZnNldC55KSAvIChzY2FsZVkgfHwgMSlcblx0XHRcdFx0XHRcdFx0KyAocmVsYXRpdmVTY3JvbGxPZmZzZXQgPyAocmVsYXRpdmVTY3JvbGxPZmZzZXRbMV0gLSBnaG9zdFJlbGF0aXZlUGFyZW50SW5pdGlhbFNjcm9sbFsxXSkgOiAwKSAvIChzY2FsZVkgfHwgMSksXG5cdFx0XHRcdFx0dHJhbnNsYXRlM2QgPSBldnQudG91Y2hlcyA/ICd0cmFuc2xhdGUzZCgnICsgZHggKyAncHgsJyArIGR5ICsgJ3B4LDApJyA6ICd0cmFuc2xhdGUoJyArIGR4ICsgJ3B4LCcgKyBkeSArICdweCknO1xuXG5cdFx0XHRcdC8vIG9ubHkgc2V0IHRoZSBzdGF0dXMgdG8gZHJhZ2dpbmcsIHdoZW4gd2UgYXJlIGFjdHVhbGx5IGRyYWdnaW5nXG5cdFx0XHRcdGlmICghU29ydGFibGUuYWN0aXZlICYmICFhd2FpdGluZ0RyYWdTdGFydGVkKSB7XG5cdFx0XHRcdFx0aWYgKGZhbGxiYWNrVG9sZXJhbmNlICYmXG5cdFx0XHRcdFx0XHRtaW4oYWJzKHRvdWNoLmNsaWVudFggLSB0aGlzLl9sYXN0WCksIGFicyh0b3VjaC5jbGllbnRZIC0gdGhpcy5fbGFzdFkpKSA8IGZhbGxiYWNrVG9sZXJhbmNlXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuX29uRHJhZ1N0YXJ0KGV2dCwgdHJ1ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQhZm9yQXV0b1Njcm9sbCAmJiB0aGlzLl9oYW5kbGVBdXRvU2Nyb2xsKHRvdWNoLCB0cnVlKTtcblxuXHRcdFx0XHRtb3ZlZCA9IHRydWU7XG5cdFx0XHRcdHRvdWNoRXZ0ID0gdG91Y2g7XG5cblx0XHRcdFx0X2NzcyhnaG9zdEVsLCAnd2Via2l0VHJhbnNmb3JtJywgdHJhbnNsYXRlM2QpO1xuXHRcdFx0XHRfY3NzKGdob3N0RWwsICdtb3pUcmFuc2Zvcm0nLCB0cmFuc2xhdGUzZCk7XG5cdFx0XHRcdF9jc3MoZ2hvc3RFbCwgJ21zVHJhbnNmb3JtJywgdHJhbnNsYXRlM2QpO1xuXHRcdFx0XHRfY3NzKGdob3N0RWwsICd0cmFuc2Zvcm0nLCB0cmFuc2xhdGUzZCk7XG5cblx0XHRcdFx0ZXZ0LmNhbmNlbGFibGUgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdF9hcHBlbmRHaG9zdDogZnVuY3Rpb24gKCkge1xuXHRcdFx0Ly8gQnVnIGlmIHVzaW5nIHNjYWxlKCk6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2MzcwNThcblx0XHRcdC8vIE5vdCBiZWluZyBhZGp1c3RlZCBmb3Jcblx0XHRcdGlmICghZ2hvc3RFbCkge1xuXHRcdFx0XHR2YXIgY29udGFpbmVyID0gdGhpcy5vcHRpb25zLmZhbGxiYWNrT25Cb2R5ID8gZG9jdW1lbnQuYm9keSA6IHJvb3RFbCxcblx0XHRcdFx0XHRyZWN0ID0gX2dldFJlY3QoZHJhZ0VsLCB0cnVlLCBjb250YWluZXIsICFQb3NpdGlvbkdob3N0QWJzb2x1dGVseSksXG5cdFx0XHRcdFx0Y3NzID0gX2NzcyhkcmFnRWwpLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cblx0XHRcdFx0Ly8gUG9zaXRpb24gYWJzb2x1dGVseVxuXHRcdFx0XHRpZiAoUG9zaXRpb25HaG9zdEFic29sdXRlbHkpIHtcblx0XHRcdFx0XHQvLyBHZXQgcmVsYXRpdmVseSBwb3NpdGlvbmVkIHBhcmVudFxuXHRcdFx0XHRcdGdob3N0UmVsYXRpdmVQYXJlbnQgPSBjb250YWluZXI7XG5cblx0XHRcdFx0XHR3aGlsZSAoXG5cdFx0XHRcdFx0XHRfY3NzKGdob3N0UmVsYXRpdmVQYXJlbnQsICdwb3NpdGlvbicpID09PSAnc3RhdGljJyAmJlxuXHRcdFx0XHRcdFx0X2NzcyhnaG9zdFJlbGF0aXZlUGFyZW50LCAndHJhbnNmb3JtJykgPT09ICdub25lJyAmJlxuXHRcdFx0XHRcdFx0Z2hvc3RSZWxhdGl2ZVBhcmVudCAhPT0gZG9jdW1lbnRcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGdob3N0UmVsYXRpdmVQYXJlbnQgPSBnaG9zdFJlbGF0aXZlUGFyZW50LnBhcmVudE5vZGU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGdob3N0UmVsYXRpdmVQYXJlbnQgIT09IGRvY3VtZW50KSB7XG5cdFx0XHRcdFx0XHR2YXIgZ2hvc3RSZWxhdGl2ZVBhcmVudFJlY3QgPSBfZ2V0UmVjdChnaG9zdFJlbGF0aXZlUGFyZW50LCB0cnVlKTtcblxuXHRcdFx0XHRcdFx0cmVjdC50b3AgLT0gZ2hvc3RSZWxhdGl2ZVBhcmVudFJlY3QudG9wO1xuXHRcdFx0XHRcdFx0cmVjdC5sZWZ0IC09IGdob3N0UmVsYXRpdmVQYXJlbnRSZWN0LmxlZnQ7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGdob3N0UmVsYXRpdmVQYXJlbnQgIT09IGRvY3VtZW50LmJvZHkgJiYgZ2hvc3RSZWxhdGl2ZVBhcmVudCAhPT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG5cdFx0XHRcdFx0XHRpZiAoZ2hvc3RSZWxhdGl2ZVBhcmVudCA9PT0gZG9jdW1lbnQpIGdob3N0UmVsYXRpdmVQYXJlbnQgPSBfZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuXG5cdFx0XHRcdFx0XHRyZWN0LnRvcCArPSBnaG9zdFJlbGF0aXZlUGFyZW50LnNjcm9sbFRvcDtcblx0XHRcdFx0XHRcdHJlY3QubGVmdCArPSBnaG9zdFJlbGF0aXZlUGFyZW50LnNjcm9sbExlZnQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGdob3N0UmVsYXRpdmVQYXJlbnQgPSBfZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRnaG9zdFJlbGF0aXZlUGFyZW50SW5pdGlhbFNjcm9sbCA9IF9nZXRSZWxhdGl2ZVNjcm9sbE9mZnNldChnaG9zdFJlbGF0aXZlUGFyZW50KTtcblx0XHRcdFx0fVxuXG5cblx0XHRcdFx0Z2hvc3RFbCA9IGRyYWdFbC5jbG9uZU5vZGUodHJ1ZSk7XG5cblx0XHRcdFx0X3RvZ2dsZUNsYXNzKGdob3N0RWwsIG9wdGlvbnMuZ2hvc3RDbGFzcywgZmFsc2UpO1xuXHRcdFx0XHRfdG9nZ2xlQ2xhc3MoZ2hvc3RFbCwgb3B0aW9ucy5mYWxsYmFja0NsYXNzLCB0cnVlKTtcblx0XHRcdFx0X3RvZ2dsZUNsYXNzKGdob3N0RWwsIG9wdGlvbnMuZHJhZ0NsYXNzLCB0cnVlKTtcblxuXHRcdFx0XHRfY3NzKGdob3N0RWwsICdib3gtc2l6aW5nJywgJ2JvcmRlci1ib3gnKTtcblx0XHRcdFx0X2NzcyhnaG9zdEVsLCAnbWFyZ2luJywgMCk7XG5cdFx0XHRcdF9jc3MoZ2hvc3RFbCwgJ3RvcCcsIHJlY3QudG9wKTtcblx0XHRcdFx0X2NzcyhnaG9zdEVsLCAnbGVmdCcsIHJlY3QubGVmdCk7XG5cdFx0XHRcdF9jc3MoZ2hvc3RFbCwgJ3dpZHRoJywgcmVjdC53aWR0aCk7XG5cdFx0XHRcdF9jc3MoZ2hvc3RFbCwgJ2hlaWdodCcsIHJlY3QuaGVpZ2h0KTtcblx0XHRcdFx0X2NzcyhnaG9zdEVsLCAnb3BhY2l0eScsICcwLjgnKTtcblx0XHRcdFx0X2NzcyhnaG9zdEVsLCAncG9zaXRpb24nLCAoUG9zaXRpb25HaG9zdEFic29sdXRlbHkgPyAnYWJzb2x1dGUnIDogJ2ZpeGVkJykpO1xuXHRcdFx0XHRfY3NzKGdob3N0RWwsICd6SW5kZXgnLCAnMTAwMDAwJyk7XG5cdFx0XHRcdF9jc3MoZ2hvc3RFbCwgJ3BvaW50ZXJFdmVudHMnLCAnbm9uZScpO1xuXG5cdFx0XHRcdGNvbnRhaW5lci5hcHBlbmRDaGlsZChnaG9zdEVsKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0X29uRHJhZ1N0YXJ0OiBmdW5jdGlvbiAoLyoqRXZlbnQqL2V2dCwgLyoqYm9vbGVhbiovZmFsbGJhY2spIHtcblx0XHRcdHZhciBfdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgZGF0YVRyYW5zZmVyID0gZXZ0LmRhdGFUcmFuc2Zlcjtcblx0XHRcdHZhciBvcHRpb25zID0gX3RoaXMub3B0aW9ucztcblxuXHRcdFx0Ly8gU2V0dXAgY2xvbmVcblx0XHRcdGNsb25lRWwgPSBfY2xvbmUoZHJhZ0VsKTtcblxuXHRcdFx0Y2xvbmVFbC5kcmFnZ2FibGUgPSBmYWxzZTtcblx0XHRcdGNsb25lRWwuc3R5bGVbJ3dpbGwtY2hhbmdlJ10gPSAnJztcblxuXHRcdFx0dGhpcy5faGlkZUNsb25lKCk7XG5cblx0XHRcdF90b2dnbGVDbGFzcyhjbG9uZUVsLCBfdGhpcy5vcHRpb25zLmNob3NlbkNsYXNzLCBmYWxzZSk7XG5cblxuXHRcdFx0Ly8gIzExNDM6IElGcmFtZSBzdXBwb3J0IHdvcmthcm91bmRcblx0XHRcdF90aGlzLl9jbG9uZUlkID0gX25leHRUaWNrKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0aWYgKCFfdGhpcy5vcHRpb25zLnJlbW92ZUNsb25lT25IaWRlKSB7XG5cdFx0XHRcdFx0cm9vdEVsLmluc2VydEJlZm9yZShjbG9uZUVsLCBkcmFnRWwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdF9kaXNwYXRjaEV2ZW50KF90aGlzLCByb290RWwsICdjbG9uZScsIGRyYWdFbCk7XG5cdFx0XHR9KTtcblxuXG5cdFx0XHQhZmFsbGJhY2sgJiYgX3RvZ2dsZUNsYXNzKGRyYWdFbCwgb3B0aW9ucy5kcmFnQ2xhc3MsIHRydWUpO1xuXG5cdFx0XHQvLyBTZXQgcHJvcGVyIGRyb3AgZXZlbnRzXG5cdFx0XHRpZiAoZmFsbGJhY2spIHtcblx0XHRcdFx0aWdub3JlTmV4dENsaWNrID0gdHJ1ZTtcblx0XHRcdFx0X3RoaXMuX2xvb3BJZCA9IHNldEludGVydmFsKF90aGlzLl9lbXVsYXRlRHJhZ092ZXIsIDUwKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFVuZG8gd2hhdCB3YXMgc2V0IGluIF9wcmVwYXJlRHJhZ1N0YXJ0IGJlZm9yZSBkcmFnIHN0YXJ0ZWRcblx0XHRcdFx0X29mZihkb2N1bWVudCwgJ21vdXNldXAnLCBfdGhpcy5fb25Ecm9wKTtcblx0XHRcdFx0X29mZihkb2N1bWVudCwgJ3RvdWNoZW5kJywgX3RoaXMuX29uRHJvcCk7XG5cdFx0XHRcdF9vZmYoZG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIF90aGlzLl9vbkRyb3ApO1xuXG5cdFx0XHRcdGlmIChkYXRhVHJhbnNmZXIpIHtcblx0XHRcdFx0XHRkYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdtb3ZlJztcblx0XHRcdFx0XHRvcHRpb25zLnNldERhdGEgJiYgb3B0aW9ucy5zZXREYXRhLmNhbGwoX3RoaXMsIGRhdGFUcmFuc2ZlciwgZHJhZ0VsKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdF9vbihkb2N1bWVudCwgJ2Ryb3AnLCBfdGhpcyk7XG5cblx0XHRcdFx0Ly8gIzEyNzYgZml4OlxuXHRcdFx0XHRfY3NzKGRyYWdFbCwgJ3RyYW5zZm9ybScsICd0cmFuc2xhdGVaKDApJyk7XG5cdFx0XHR9XG5cblx0XHRcdGF3YWl0aW5nRHJhZ1N0YXJ0ZWQgPSB0cnVlO1xuXG5cdFx0XHRfdGhpcy5fZHJhZ1N0YXJ0SWQgPSBfbmV4dFRpY2soX3RoaXMuX2RyYWdTdGFydGVkLmJpbmQoX3RoaXMsIGZhbGxiYWNrLCBldnQpKTtcblx0XHRcdF9vbihkb2N1bWVudCwgJ3NlbGVjdHN0YXJ0JywgX3RoaXMpO1xuXHRcdFx0aWYgKFNhZmFyaSkge1xuXHRcdFx0XHRfY3NzKGRvY3VtZW50LmJvZHksICd1c2VyLXNlbGVjdCcsICdub25lJyk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXG5cdFx0Ly8gUmV0dXJucyB0cnVlIC0gaWYgbm8gZnVydGhlciBhY3Rpb24gaXMgbmVlZGVkIChlaXRoZXIgaW5zZXJ0ZWQgb3IgYW5vdGhlciBjb25kaXRpb24pXG5cdFx0X29uRHJhZ092ZXI6IGZ1bmN0aW9uICgvKipFdmVudCovZXZ0KSB7XG5cdFx0XHR2YXIgZWwgPSB0aGlzLmVsLFxuXHRcdFx0XHR0YXJnZXQgPSBldnQudGFyZ2V0LFxuXHRcdFx0XHRkcmFnUmVjdCxcblx0XHRcdFx0dGFyZ2V0UmVjdCxcblx0XHRcdFx0cmV2ZXJ0LFxuXHRcdFx0XHRvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuXHRcdFx0XHRncm91cCA9IG9wdGlvbnMuZ3JvdXAsXG5cdFx0XHRcdGFjdGl2ZVNvcnRhYmxlID0gU29ydGFibGUuYWN0aXZlLFxuXHRcdFx0XHRpc093bmVyID0gKGFjdGl2ZUdyb3VwID09PSBncm91cCksXG5cdFx0XHRcdGNhblNvcnQgPSBvcHRpb25zLnNvcnQsXG5cdFx0XHRcdF90aGlzID0gdGhpcztcblxuXHRcdFx0aWYgKF9zaWxlbnQpIHJldHVybjtcblxuXHRcdFx0Ly8gUmV0dXJuIGludm9jYXRpb24gd2hlbiBkcmFnRWwgaXMgaW5zZXJ0ZWQgKG9yIGNvbXBsZXRlZClcblx0XHRcdGZ1bmN0aW9uIGNvbXBsZXRlZChpbnNlcnRpb24pIHtcblx0XHRcdFx0aWYgKGluc2VydGlvbikge1xuXHRcdFx0XHRcdGlmIChpc093bmVyKSB7XG5cdFx0XHRcdFx0XHRhY3RpdmVTb3J0YWJsZS5faGlkZUNsb25lKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGFjdGl2ZVNvcnRhYmxlLl9zaG93Q2xvbmUoX3RoaXMpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChhY3RpdmVTb3J0YWJsZSkge1xuXHRcdFx0XHRcdFx0Ly8gU2V0IGdob3N0IGNsYXNzIHRvIG5ldyBzb3J0YWJsZSdzIGdob3N0IGNsYXNzXG5cdFx0XHRcdFx0XHRfdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBwdXRTb3J0YWJsZSA/IHB1dFNvcnRhYmxlLm9wdGlvbnMuZ2hvc3RDbGFzcyA6IGFjdGl2ZVNvcnRhYmxlLm9wdGlvbnMuZ2hvc3RDbGFzcywgZmFsc2UpO1xuXHRcdFx0XHRcdFx0X3RvZ2dsZUNsYXNzKGRyYWdFbCwgb3B0aW9ucy5naG9zdENsYXNzLCB0cnVlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAocHV0U29ydGFibGUgIT09IF90aGlzICYmIF90aGlzICE9PSBTb3J0YWJsZS5hY3RpdmUpIHtcblx0XHRcdFx0XHRcdHB1dFNvcnRhYmxlID0gX3RoaXM7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChfdGhpcyA9PT0gU29ydGFibGUuYWN0aXZlKSB7XG5cdFx0XHRcdFx0XHRwdXRTb3J0YWJsZSA9IG51bGw7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gQW5pbWF0aW9uXG5cdFx0XHRcdFx0ZHJhZ1JlY3QgJiYgX3RoaXMuX2FuaW1hdGUoZHJhZ1JlY3QsIGRyYWdFbCk7XG5cdFx0XHRcdFx0dGFyZ2V0ICYmIHRhcmdldFJlY3QgJiYgX3RoaXMuX2FuaW1hdGUodGFyZ2V0UmVjdCwgdGFyZ2V0KTtcblx0XHRcdFx0fVxuXG5cblx0XHRcdFx0Ly8gTnVsbCBsYXN0VGFyZ2V0IGlmIGl0IGlzIG5vdCBpbnNpZGUgYSBwcmV2aW91c2x5IHN3YXBwZWQgZWxlbWVudFxuXHRcdFx0XHRpZiAoKHRhcmdldCA9PT0gZHJhZ0VsICYmICFkcmFnRWwuYW5pbWF0ZWQpIHx8ICh0YXJnZXQgPT09IGVsICYmICF0YXJnZXQuYW5pbWF0ZWQpKSB7XG5cdFx0XHRcdFx0bGFzdFRhcmdldCA9IG51bGw7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBubyBidWJibGluZyBhbmQgbm90IGZhbGxiYWNrXG5cdFx0XHRcdGlmICghb3B0aW9ucy5kcmFnb3ZlckJ1YmJsZSAmJiAhZXZ0LnJvb3RFbCAmJiB0YXJnZXQgIT09IGRvY3VtZW50KSB7XG5cdFx0XHRcdFx0X3RoaXMuX2hhbmRsZUF1dG9TY3JvbGwoZXZ0KTtcblx0XHRcdFx0XHRkcmFnRWwucGFyZW50Tm9kZVtleHBhbmRvXS5fY29tcHV0ZUlzQWxpZ25lZChldnQpO1xuXG5cdFx0XHRcdFx0Ly8gRG8gbm90IGRldGVjdCBmb3IgZW1wdHkgaW5zZXJ0IGlmIGFscmVhZHkgaW5zZXJ0ZWRcblx0XHRcdFx0XHQhaW5zZXJ0aW9uICYmIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KGV2dCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQhb3B0aW9ucy5kcmFnb3ZlckJ1YmJsZSAmJiBldnQuc3RvcFByb3BhZ2F0aW9uICYmIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FsbCB3aGVuIGRyYWdFbCBoYXMgYmVlbiBpbnNlcnRlZFxuXHRcdFx0ZnVuY3Rpb24gY2hhbmdlZCgpIHtcblx0XHRcdFx0X2Rpc3BhdGNoRXZlbnQoX3RoaXMsIHJvb3RFbCwgJ2NoYW5nZScsIHRhcmdldCwgZWwsIHJvb3RFbCwgb2xkSW5kZXgsIF9pbmRleChkcmFnRWwpLCBvbGREcmFnZ2FibGVJbmRleCwgX2luZGV4KGRyYWdFbCwgb3B0aW9ucy5kcmFnZ2FibGUpLCBldnQpO1xuXHRcdFx0fVxuXG5cblx0XHRcdGlmIChldnQucHJldmVudERlZmF1bHQgIT09IHZvaWQgMCkge1xuXHRcdFx0XHRldnQuY2FuY2VsYWJsZSAmJiBldnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdH1cblxuXG5cdFx0XHRtb3ZlZCA9IHRydWU7XG5cblx0XHRcdHRhcmdldCA9IF9jbG9zZXN0KHRhcmdldCwgb3B0aW9ucy5kcmFnZ2FibGUsIGVsLCB0cnVlKTtcblxuXHRcdFx0Ly8gdGFyZ2V0IGlzIGRyYWdFbCBvciB0YXJnZXQgaXMgYW5pbWF0ZWRcblx0XHRcdGlmIChkcmFnRWwuY29udGFpbnMoZXZ0LnRhcmdldCkgfHwgdGFyZ2V0LmFuaW1hdGVkKSB7XG5cdFx0XHRcdHJldHVybiBjb21wbGV0ZWQoZmFsc2UpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGFyZ2V0ICE9PSBkcmFnRWwpIHtcblx0XHRcdFx0aWdub3JlTmV4dENsaWNrID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChhY3RpdmVTb3J0YWJsZSAmJiAhb3B0aW9ucy5kaXNhYmxlZCAmJlxuXHRcdFx0XHQoaXNPd25lclxuXHRcdFx0XHRcdD8gY2FuU29ydCB8fCAocmV2ZXJ0ID0gIXJvb3RFbC5jb250YWlucyhkcmFnRWwpKSAvLyBSZXZlcnRpbmcgaXRlbSBpbnRvIHRoZSBvcmlnaW5hbCBsaXN0XG5cdFx0XHRcdFx0OiAoXG5cdFx0XHRcdFx0XHRwdXRTb3J0YWJsZSA9PT0gdGhpcyB8fFxuXHRcdFx0XHRcdFx0KFxuXHRcdFx0XHRcdFx0XHQodGhpcy5sYXN0UHV0TW9kZSA9IGFjdGl2ZUdyb3VwLmNoZWNrUHVsbCh0aGlzLCBhY3RpdmVTb3J0YWJsZSwgZHJhZ0VsLCBldnQpKSAmJlxuXHRcdFx0XHRcdFx0XHRncm91cC5jaGVja1B1dCh0aGlzLCBhY3RpdmVTb3J0YWJsZSwgZHJhZ0VsLCBldnQpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0dmFyIGF4aXMgPSB0aGlzLl9nZXREaXJlY3Rpb24oZXZ0LCB0YXJnZXQpO1xuXG5cdFx0XHRcdGRyYWdSZWN0ID0gX2dldFJlY3QoZHJhZ0VsKTtcblxuXHRcdFx0XHRpZiAocmV2ZXJ0KSB7XG5cdFx0XHRcdFx0dGhpcy5faGlkZUNsb25lKCk7XG5cdFx0XHRcdFx0cGFyZW50RWwgPSByb290RWw7IC8vIGFjdHVhbGl6YXRpb25cblxuXHRcdFx0XHRcdGlmIChuZXh0RWwpIHtcblx0XHRcdFx0XHRcdHJvb3RFbC5pbnNlcnRCZWZvcmUoZHJhZ0VsLCBuZXh0RWwpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyb290RWwuYXBwZW5kQ2hpbGQoZHJhZ0VsKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gY29tcGxldGVkKHRydWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dmFyIGVsTGFzdENoaWxkID0gX2xhc3RDaGlsZChlbCk7XG5cblx0XHRcdFx0aWYgKCFlbExhc3RDaGlsZCB8fCBfZ2hvc3RJc0xhc3QoZXZ0LCBheGlzLCBlbCkgJiYgIWVsTGFzdENoaWxkLmFuaW1hdGVkKSB7XG5cdFx0XHRcdFx0Ly8gYXNzaWduIHRhcmdldCBvbmx5IGlmIGNvbmRpdGlvbiBpcyB0cnVlXG5cdFx0XHRcdFx0aWYgKGVsTGFzdENoaWxkICYmIGVsID09PSBldnQudGFyZ2V0KSB7XG5cdFx0XHRcdFx0XHR0YXJnZXQgPSBlbExhc3RDaGlsZDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAodGFyZ2V0KSB7XG5cdFx0XHRcdFx0XHR0YXJnZXRSZWN0ID0gX2dldFJlY3QodGFyZ2V0KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoaXNPd25lcikge1xuXHRcdFx0XHRcdFx0YWN0aXZlU29ydGFibGUuX2hpZGVDbG9uZSgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhY3RpdmVTb3J0YWJsZS5fc2hvd0Nsb25lKHRoaXMpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChfb25Nb3ZlKHJvb3RFbCwgZWwsIGRyYWdFbCwgZHJhZ1JlY3QsIHRhcmdldCwgdGFyZ2V0UmVjdCwgZXZ0LCAhIXRhcmdldCkgIT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0XHRlbC5hcHBlbmRDaGlsZChkcmFnRWwpO1xuXHRcdFx0XHRcdFx0cGFyZW50RWwgPSBlbDsgLy8gYWN0dWFsaXphdGlvblxuXHRcdFx0XHRcdFx0cmVhbERyYWdFbFJlY3QgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRjaGFuZ2VkKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY29tcGxldGVkKHRydWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0ICE9PSBkcmFnRWwgJiYgdGFyZ2V0LnBhcmVudE5vZGUgPT09IGVsKSB7XG5cdFx0XHRcdFx0dmFyIGRpcmVjdGlvbiA9IDAsXG5cdFx0XHRcdFx0XHR0YXJnZXRCZWZvcmVGaXJzdFN3YXAsXG5cdFx0XHRcdFx0XHRhbGlnbmVkID0gdGFyZ2V0LnNvcnRhYmxlTW91c2VBbGlnbmVkLFxuXHRcdFx0XHRcdFx0ZGlmZmVyZW50TGV2ZWwgPSBkcmFnRWwucGFyZW50Tm9kZSAhPT0gZWwsXG5cdFx0XHRcdFx0XHRzaWRlMSA9IGF4aXMgPT09ICd2ZXJ0aWNhbCcgPyAndG9wJyA6ICdsZWZ0Jyxcblx0XHRcdFx0XHRcdHNjcm9sbGVkUGFzdFRvcCA9IF9pc1Njcm9sbGVkUGFzdCh0YXJnZXQsICd0b3AnKSB8fCBfaXNTY3JvbGxlZFBhc3QoZHJhZ0VsLCAndG9wJyksXG5cdFx0XHRcdFx0XHRzY3JvbGxCZWZvcmUgPSBzY3JvbGxlZFBhc3RUb3AgPyBzY3JvbGxlZFBhc3RUb3Auc2Nyb2xsVG9wIDogdm9pZCAwO1xuXG5cblx0XHRcdFx0XHRpZiAobGFzdFRhcmdldCAhPT0gdGFyZ2V0KSB7XG5cdFx0XHRcdFx0XHRsYXN0TW9kZSA9IG51bGw7XG5cdFx0XHRcdFx0XHR0YXJnZXRCZWZvcmVGaXJzdFN3YXAgPSBfZ2V0UmVjdCh0YXJnZXQpW3NpZGUxXTtcblx0XHRcdFx0XHRcdHBhc3RGaXJzdEludmVydFRocmVzaCA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFJlZmVyZW5jZTogaHR0cHM6Ly93d3cubHVjaWRjaGFydC5jb20vZG9jdW1lbnRzL3ZpZXcvMTBmYTBlOTMtZTM2Mi00MTI2LWFjYTItYjcwOWVlNTZiZDhiLzBcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRfaXNFbEluUm93Q29sdW1uKGRyYWdFbCwgdGFyZ2V0LCBheGlzKSAmJiBhbGlnbmVkIHx8XG5cdFx0XHRcdFx0XHRkaWZmZXJlbnRMZXZlbCB8fFxuXHRcdFx0XHRcdFx0c2Nyb2xsZWRQYXN0VG9wIHx8XG5cdFx0XHRcdFx0XHRvcHRpb25zLmludmVydFN3YXAgfHxcblx0XHRcdFx0XHRcdGxhc3RNb2RlID09PSAnaW5zZXJ0JyB8fFxuXHRcdFx0XHRcdFx0Ly8gTmVlZGVkLCBpbiB0aGUgY2FzZSB0aGF0IHdlIGFyZSBpbnNpZGUgdGFyZ2V0IGFuZCBpbnNlcnRlZCBiZWNhdXNlIG5vdCBhbGlnbmVkLi4uIGFsaWduZWQgd2lsbCBzdGF5IGZhbHNlIHdoaWxlIGluc2lkZVxuXHRcdFx0XHRcdFx0Ly8gYW5kIGxhc3RNb2RlIHdpbGwgY2hhbmdlIHRvICdpbnNlcnQnLCBidXQgd2UgbXVzdCBzd2FwXG5cdFx0XHRcdFx0XHRsYXN0TW9kZSA9PT0gJ3N3YXAnXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHQvLyBOZXcgdGFyZ2V0IHRoYXQgd2Ugd2lsbCBiZSBpbnNpZGVcblx0XHRcdFx0XHRcdGlmIChsYXN0TW9kZSAhPT0gJ3N3YXAnKSB7XG5cdFx0XHRcdFx0XHRcdGlzQ2lyY3Vtc3RhbnRpYWxJbnZlcnQgPSBvcHRpb25zLmludmVydFN3YXAgfHwgZGlmZmVyZW50TGV2ZWw7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGRpcmVjdGlvbiA9IF9nZXRTd2FwRGlyZWN0aW9uKGV2dCwgdGFyZ2V0LCBheGlzLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zLnN3YXBUaHJlc2hvbGQsIG9wdGlvbnMuaW52ZXJ0ZWRTd2FwVGhyZXNob2xkID09IG51bGwgPyBvcHRpb25zLnN3YXBUaHJlc2hvbGQgOiBvcHRpb25zLmludmVydGVkU3dhcFRocmVzaG9sZCxcblx0XHRcdFx0XHRcdFx0aXNDaXJjdW1zdGFudGlhbEludmVydCxcblx0XHRcdFx0XHRcdFx0bGFzdFRhcmdldCA9PT0gdGFyZ2V0KTtcblx0XHRcdFx0XHRcdGxhc3RNb2RlID0gJ3N3YXAnO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBJbnNlcnQgYXQgcG9zaXRpb25cblx0XHRcdFx0XHRcdGRpcmVjdGlvbiA9IF9nZXRJbnNlcnREaXJlY3Rpb24odGFyZ2V0KTtcblx0XHRcdFx0XHRcdGxhc3RNb2RlID0gJ2luc2VydCc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChkaXJlY3Rpb24gPT09IDApIHJldHVybiBjb21wbGV0ZWQoZmFsc2UpO1xuXG5cdFx0XHRcdFx0cmVhbERyYWdFbFJlY3QgPSBudWxsO1xuXHRcdFx0XHRcdGxhc3RUYXJnZXQgPSB0YXJnZXQ7XG5cblx0XHRcdFx0XHRsYXN0RGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuXG5cdFx0XHRcdFx0dGFyZ2V0UmVjdCA9IF9nZXRSZWN0KHRhcmdldCk7XG5cblx0XHRcdFx0XHR2YXIgbmV4dFNpYmxpbmcgPSB0YXJnZXQubmV4dEVsZW1lbnRTaWJsaW5nLFxuXHRcdFx0XHRcdFx0YWZ0ZXIgPSBmYWxzZTtcblxuXHRcdFx0XHRcdGFmdGVyID0gZGlyZWN0aW9uID09PSAxO1xuXG5cdFx0XHRcdFx0dmFyIG1vdmVWZWN0b3IgPSBfb25Nb3ZlKHJvb3RFbCwgZWwsIGRyYWdFbCwgZHJhZ1JlY3QsIHRhcmdldCwgdGFyZ2V0UmVjdCwgZXZ0LCBhZnRlcik7XG5cblx0XHRcdFx0XHRpZiAobW92ZVZlY3RvciAhPT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdGlmIChtb3ZlVmVjdG9yID09PSAxIHx8IG1vdmVWZWN0b3IgPT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdGFmdGVyID0gKG1vdmVWZWN0b3IgPT09IDEpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRfc2lsZW50ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoX3Vuc2lsZW50LCAzMCk7XG5cblx0XHRcdFx0XHRcdGlmIChpc093bmVyKSB7XG5cdFx0XHRcdFx0XHRcdGFjdGl2ZVNvcnRhYmxlLl9oaWRlQ2xvbmUoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGFjdGl2ZVNvcnRhYmxlLl9zaG93Q2xvbmUodGhpcyk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChhZnRlciAmJiAhbmV4dFNpYmxpbmcpIHtcblx0XHRcdFx0XHRcdFx0ZWwuYXBwZW5kQ2hpbGQoZHJhZ0VsKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkcmFnRWwsIGFmdGVyID8gbmV4dFNpYmxpbmcgOiB0YXJnZXQpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBVbmRvIGNocm9tZSdzIHNjcm9sbCBhZGp1c3RtZW50XG5cdFx0XHRcdFx0XHRpZiAoc2Nyb2xsZWRQYXN0VG9wKSB7XG5cdFx0XHRcdFx0XHRcdF9zY3JvbGxCeShzY3JvbGxlZFBhc3RUb3AsIDAsIHNjcm9sbEJlZm9yZSAtIHNjcm9sbGVkUGFzdFRvcC5zY3JvbGxUb3ApO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRwYXJlbnRFbCA9IGRyYWdFbC5wYXJlbnROb2RlOyAvLyBhY3R1YWxpemF0aW9uXG5cblx0XHRcdFx0XHRcdC8vIG11c3QgYmUgZG9uZSBiZWZvcmUgYW5pbWF0aW9uXG5cdFx0XHRcdFx0XHRpZiAodGFyZ2V0QmVmb3JlRmlyc3RTd2FwICE9PSB1bmRlZmluZWQgJiYgIWlzQ2lyY3Vtc3RhbnRpYWxJbnZlcnQpIHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0TW92ZURpc3RhbmNlID0gYWJzKHRhcmdldEJlZm9yZUZpcnN0U3dhcCAtIF9nZXRSZWN0KHRhcmdldClbc2lkZTFdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNoYW5nZWQoKTtcblxuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbXBsZXRlZCh0cnVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZWwuY29udGFpbnMoZHJhZ0VsKSkge1xuXHRcdFx0XHRcdHJldHVybiBjb21wbGV0ZWQoZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXG5cdFx0X2FuaW1hdGU6IGZ1bmN0aW9uIChwcmV2UmVjdCwgdGFyZ2V0KSB7XG5cdFx0XHR2YXIgbXMgPSB0aGlzLm9wdGlvbnMuYW5pbWF0aW9uO1xuXG5cdFx0XHRpZiAobXMpIHtcblx0XHRcdFx0dmFyIGN1cnJlbnRSZWN0ID0gX2dldFJlY3QodGFyZ2V0KTtcblxuXHRcdFx0XHRpZiAodGFyZ2V0ID09PSBkcmFnRWwpIHtcblx0XHRcdFx0XHRyZWFsRHJhZ0VsUmVjdCA9IGN1cnJlbnRSZWN0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHByZXZSZWN0Lm5vZGVUeXBlID09PSAxKSB7XG5cdFx0XHRcdFx0cHJldlJlY3QgPSBfZ2V0UmVjdChwcmV2UmVjdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDaGVjayBpZiBhY3R1YWxseSBtb3ZpbmcgcG9zaXRpb25cblx0XHRcdFx0aWYgKChwcmV2UmVjdC5sZWZ0ICsgcHJldlJlY3Qud2lkdGggLyAyKSAhPT0gKGN1cnJlbnRSZWN0LmxlZnQgKyBjdXJyZW50UmVjdC53aWR0aCAvIDIpXG5cdFx0XHRcdFx0fHwgKHByZXZSZWN0LnRvcCArIHByZXZSZWN0LmhlaWdodCAvIDIpICE9PSAoY3VycmVudFJlY3QudG9wICsgY3VycmVudFJlY3QuaGVpZ2h0IC8gMilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dmFyIG1hdHJpeCA9IF9tYXRyaXgodGhpcy5lbCksXG5cdFx0XHRcdFx0XHRzY2FsZVggPSBtYXRyaXggJiYgbWF0cml4LmEsXG5cdFx0XHRcdFx0XHRzY2FsZVkgPSBtYXRyaXggJiYgbWF0cml4LmQ7XG5cblx0XHRcdFx0XHRfY3NzKHRhcmdldCwgJ3RyYW5zaXRpb24nLCAnbm9uZScpO1xuXHRcdFx0XHRcdF9jc3ModGFyZ2V0LCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZTNkKCdcblx0XHRcdFx0XHRcdCsgKHByZXZSZWN0LmxlZnQgLSBjdXJyZW50UmVjdC5sZWZ0KSAvIChzY2FsZVggPyBzY2FsZVggOiAxKSArICdweCwnXG5cdFx0XHRcdFx0XHQrIChwcmV2UmVjdC50b3AgLSBjdXJyZW50UmVjdC50b3ApIC8gKHNjYWxlWSA/IHNjYWxlWSA6IDEpICsgJ3B4LDApJ1xuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHR0aGlzLl9yZXBhaW50KHRhcmdldCk7XG5cdFx0XHRcdFx0X2Nzcyh0YXJnZXQsICd0cmFuc2l0aW9uJywgJ3RyYW5zZm9ybSAnICsgbXMgKyAnbXMnICsgKHRoaXMub3B0aW9ucy5lYXNpbmcgPyAnICcgKyB0aGlzLm9wdGlvbnMuZWFzaW5nIDogJycpKTtcblx0XHRcdFx0XHRfY3NzKHRhcmdldCwgJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUzZCgwLDAsMCknKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCh0eXBlb2YgdGFyZ2V0LmFuaW1hdGVkID09PSAnbnVtYmVyJykgJiYgY2xlYXJUaW1lb3V0KHRhcmdldC5hbmltYXRlZCk7XG5cdFx0XHRcdHRhcmdldC5hbmltYXRlZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdF9jc3ModGFyZ2V0LCAndHJhbnNpdGlvbicsICcnKTtcblx0XHRcdFx0XHRfY3NzKHRhcmdldCwgJ3RyYW5zZm9ybScsICcnKTtcblx0XHRcdFx0XHR0YXJnZXQuYW5pbWF0ZWQgPSBmYWxzZTtcblx0XHRcdFx0fSwgbXMpO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRfcmVwYWludDogZnVuY3Rpb24odGFyZ2V0KSB7XG5cdFx0XHRyZXR1cm4gdGFyZ2V0Lm9mZnNldFdpZHRoO1xuXHRcdH0sXG5cblx0XHRfb2ZmTW92ZUV2ZW50czogZnVuY3Rpb24oKSB7XG5cdFx0XHRfb2ZmKGRvY3VtZW50LCAndG91Y2htb3ZlJywgdGhpcy5fb25Ub3VjaE1vdmUpO1xuXHRcdFx0X29mZihkb2N1bWVudCwgJ3BvaW50ZXJtb3ZlJywgdGhpcy5fb25Ub3VjaE1vdmUpO1xuXHRcdFx0X29mZihkb2N1bWVudCwgJ2RyYWdvdmVyJywgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQpO1xuXHRcdFx0X29mZihkb2N1bWVudCwgJ21vdXNlbW92ZScsIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KTtcblx0XHRcdF9vZmYoZG9jdW1lbnQsICd0b3VjaG1vdmUnLCBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCk7XG5cdFx0fSxcblxuXHRcdF9vZmZVcEV2ZW50czogZnVuY3Rpb24gKCkge1xuXHRcdFx0dmFyIG93bmVyRG9jdW1lbnQgPSB0aGlzLmVsLm93bmVyRG9jdW1lbnQ7XG5cblx0XHRcdF9vZmYob3duZXJEb2N1bWVudCwgJ21vdXNldXAnLCB0aGlzLl9vbkRyb3ApO1xuXHRcdFx0X29mZihvd25lckRvY3VtZW50LCAndG91Y2hlbmQnLCB0aGlzLl9vbkRyb3ApO1xuXHRcdFx0X29mZihvd25lckRvY3VtZW50LCAncG9pbnRlcnVwJywgdGhpcy5fb25Ecm9wKTtcblx0XHRcdF9vZmYob3duZXJEb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgdGhpcy5fb25Ecm9wKTtcblx0XHRcdF9vZmYoZG9jdW1lbnQsICdzZWxlY3RzdGFydCcsIHRoaXMpO1xuXHRcdH0sXG5cblx0XHRfb25Ecm9wOiBmdW5jdGlvbiAoLyoqRXZlbnQqL2V2dCkge1xuXHRcdFx0dmFyIGVsID0gdGhpcy5lbCxcblx0XHRcdFx0b3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblx0XHRcdGF3YWl0aW5nRHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcblx0XHRcdHNjcm9sbGluZyA9IGZhbHNlO1xuXHRcdFx0aXNDaXJjdW1zdGFudGlhbEludmVydCA9IGZhbHNlO1xuXHRcdFx0cGFzdEZpcnN0SW52ZXJ0VGhyZXNoID0gZmFsc2U7XG5cblx0XHRcdGNsZWFySW50ZXJ2YWwodGhpcy5fbG9vcElkKTtcblxuXHRcdFx0Y2xlYXJJbnRlcnZhbChwb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCk7XG5cdFx0XHRfY2xlYXJBdXRvU2Nyb2xscygpO1xuXHRcdFx0X2NhbmNlbFRocm90dGxlKCk7XG5cblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLl9kcmFnU3RhcnRUaW1lcik7XG5cblx0XHRcdF9jYW5jZWxOZXh0VGljayh0aGlzLl9jbG9uZUlkKTtcblx0XHRcdF9jYW5jZWxOZXh0VGljayh0aGlzLl9kcmFnU3RhcnRJZCk7XG5cblx0XHRcdC8vIFVuYmluZCBldmVudHNcblx0XHRcdF9vZmYoZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLl9vblRvdWNoTW92ZSk7XG5cblxuXHRcdFx0aWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG5cdFx0XHRcdF9vZmYoZG9jdW1lbnQsICdkcm9wJywgdGhpcyk7XG5cdFx0XHRcdF9vZmYoZWwsICdkcmFnc3RhcnQnLCB0aGlzLl9vbkRyYWdTdGFydCk7XG5cdFx0XHRcdF9vZmYoZG9jdW1lbnQsICdkcmFnb3ZlcicsIHRoaXMuX2hhbmRsZUF1dG9TY3JvbGwpO1xuXHRcdFx0XHRfb2ZmKGRvY3VtZW50LCAnZHJhZ292ZXInLCBfY2hlY2tBbGlnbm1lbnQpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoU2FmYXJpKSB7XG5cdFx0XHRcdF9jc3MoZG9jdW1lbnQuYm9keSwgJ3VzZXItc2VsZWN0JywgJycpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLl9vZmZNb3ZlRXZlbnRzKCk7XG5cdFx0XHR0aGlzLl9vZmZVcEV2ZW50cygpO1xuXG5cdFx0XHRpZiAoZXZ0KSB7XG5cdFx0XHRcdGlmIChtb3ZlZCkge1xuXHRcdFx0XHRcdGV2dC5jYW5jZWxhYmxlICYmIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdCFvcHRpb25zLmRyb3BCdWJibGUgJiYgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Z2hvc3RFbCAmJiBnaG9zdEVsLnBhcmVudE5vZGUgJiYgZ2hvc3RFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGdob3N0RWwpO1xuXG5cdFx0XHRcdGlmIChyb290RWwgPT09IHBhcmVudEVsIHx8IChwdXRTb3J0YWJsZSAmJiBwdXRTb3J0YWJsZS5sYXN0UHV0TW9kZSAhPT0gJ2Nsb25lJykpIHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgY2xvbmVcblx0XHRcdFx0XHRjbG9uZUVsICYmIGNsb25lRWwucGFyZW50Tm9kZSAmJiBjbG9uZUVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2xvbmVFbCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZHJhZ0VsKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG5cdFx0XHRcdFx0XHRfb2ZmKGRyYWdFbCwgJ2RyYWdlbmQnLCB0aGlzKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRfZGlzYWJsZURyYWdnYWJsZShkcmFnRWwpO1xuXHRcdFx0XHRcdGRyYWdFbC5zdHlsZVsnd2lsbC1jaGFuZ2UnXSA9ICcnO1xuXG5cdFx0XHRcdFx0Ly8gUmVtb3ZlIGNsYXNzJ3Ncblx0XHRcdFx0XHRfdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBwdXRTb3J0YWJsZSA/IHB1dFNvcnRhYmxlLm9wdGlvbnMuZ2hvc3RDbGFzcyA6IHRoaXMub3B0aW9ucy5naG9zdENsYXNzLCBmYWxzZSk7XG5cdFx0XHRcdFx0X3RvZ2dsZUNsYXNzKGRyYWdFbCwgdGhpcy5vcHRpb25zLmNob3NlbkNsYXNzLCBmYWxzZSk7XG5cblx0XHRcdFx0XHQvLyBEcmFnIHN0b3AgZXZlbnRcblx0XHRcdFx0XHRfZGlzcGF0Y2hFdmVudCh0aGlzLCByb290RWwsICd1bmNob29zZScsIGRyYWdFbCwgcGFyZW50RWwsIHJvb3RFbCwgb2xkSW5kZXgsIG51bGwsIG9sZERyYWdnYWJsZUluZGV4LCBudWxsLCBldnQpO1xuXG5cdFx0XHRcdFx0aWYgKHJvb3RFbCAhPT0gcGFyZW50RWwpIHtcblx0XHRcdFx0XHRcdG5ld0luZGV4ID0gX2luZGV4KGRyYWdFbCk7XG5cdFx0XHRcdFx0XHRuZXdEcmFnZ2FibGVJbmRleCA9IF9pbmRleChkcmFnRWwsIG9wdGlvbnMuZHJhZ2dhYmxlKTtcblxuXHRcdFx0XHRcdFx0aWYgKG5ld0luZGV4ID49IDApIHtcblx0XHRcdFx0XHRcdFx0Ly8gQWRkIGV2ZW50XG5cdFx0XHRcdFx0XHRcdF9kaXNwYXRjaEV2ZW50KG51bGwsIHBhcmVudEVsLCAnYWRkJywgZHJhZ0VsLCBwYXJlbnRFbCwgcm9vdEVsLCBvbGRJbmRleCwgbmV3SW5kZXgsIG9sZERyYWdnYWJsZUluZGV4LCBuZXdEcmFnZ2FibGVJbmRleCwgZXZ0KTtcblxuXHRcdFx0XHRcdFx0XHQvLyBSZW1vdmUgZXZlbnRcblx0XHRcdFx0XHRcdFx0X2Rpc3BhdGNoRXZlbnQodGhpcywgcm9vdEVsLCAncmVtb3ZlJywgZHJhZ0VsLCBwYXJlbnRFbCwgcm9vdEVsLCBvbGRJbmRleCwgbmV3SW5kZXgsIG9sZERyYWdnYWJsZUluZGV4LCBuZXdEcmFnZ2FibGVJbmRleCwgZXZ0KTtcblxuXHRcdFx0XHRcdFx0XHQvLyBkcmFnIGZyb20gb25lIGxpc3QgYW5kIGRyb3AgaW50byBhbm90aGVyXG5cdFx0XHRcdFx0XHRcdF9kaXNwYXRjaEV2ZW50KG51bGwsIHBhcmVudEVsLCAnc29ydCcsIGRyYWdFbCwgcGFyZW50RWwsIHJvb3RFbCwgb2xkSW5kZXgsIG5ld0luZGV4LCBvbGREcmFnZ2FibGVJbmRleCwgbmV3RHJhZ2dhYmxlSW5kZXgsIGV2dCk7XG5cdFx0XHRcdFx0XHRcdF9kaXNwYXRjaEV2ZW50KHRoaXMsIHJvb3RFbCwgJ3NvcnQnLCBkcmFnRWwsIHBhcmVudEVsLCByb290RWwsIG9sZEluZGV4LCBuZXdJbmRleCwgb2xkRHJhZ2dhYmxlSW5kZXgsIG5ld0RyYWdnYWJsZUluZGV4LCBldnQpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRwdXRTb3J0YWJsZSAmJiBwdXRTb3J0YWJsZS5zYXZlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKGRyYWdFbC5uZXh0U2libGluZyAhPT0gbmV4dEVsKSB7XG5cdFx0XHRcdFx0XHRcdC8vIEdldCB0aGUgaW5kZXggb2YgdGhlIGRyYWdnZWQgZWxlbWVudCB3aXRoaW4gaXRzIHBhcmVudFxuXHRcdFx0XHRcdFx0XHRuZXdJbmRleCA9IF9pbmRleChkcmFnRWwpO1xuXHRcdFx0XHRcdFx0XHRuZXdEcmFnZ2FibGVJbmRleCA9IF9pbmRleChkcmFnRWwsIG9wdGlvbnMuZHJhZ2dhYmxlKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAobmV3SW5kZXggPj0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGRyYWcgJiBkcm9wIHdpdGhpbiB0aGUgc2FtZSBsaXN0XG5cdFx0XHRcdFx0XHRcdFx0X2Rpc3BhdGNoRXZlbnQodGhpcywgcm9vdEVsLCAndXBkYXRlJywgZHJhZ0VsLCBwYXJlbnRFbCwgcm9vdEVsLCBvbGRJbmRleCwgbmV3SW5kZXgsIG9sZERyYWdnYWJsZUluZGV4LCBuZXdEcmFnZ2FibGVJbmRleCwgZXZ0KTtcblx0XHRcdFx0XHRcdFx0XHRfZGlzcGF0Y2hFdmVudCh0aGlzLCByb290RWwsICdzb3J0JywgZHJhZ0VsLCBwYXJlbnRFbCwgcm9vdEVsLCBvbGRJbmRleCwgbmV3SW5kZXgsIG9sZERyYWdnYWJsZUluZGV4LCBuZXdEcmFnZ2FibGVJbmRleCwgZXZ0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChTb3J0YWJsZS5hY3RpdmUpIHtcblx0XHRcdFx0XHRcdC8qIGpzaGludCBlcW51bGw6dHJ1ZSAqL1xuXHRcdFx0XHRcdFx0aWYgKG5ld0luZGV4ID09IG51bGwgfHwgbmV3SW5kZXggPT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdG5ld0luZGV4ID0gb2xkSW5kZXg7XG5cdFx0XHRcdFx0XHRcdG5ld0RyYWdnYWJsZUluZGV4ID0gb2xkRHJhZ2dhYmxlSW5kZXg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRfZGlzcGF0Y2hFdmVudCh0aGlzLCByb290RWwsICdlbmQnLCBkcmFnRWwsIHBhcmVudEVsLCByb290RWwsIG9sZEluZGV4LCBuZXdJbmRleCwgb2xkRHJhZ2dhYmxlSW5kZXgsIG5ld0RyYWdnYWJsZUluZGV4LCBldnQpO1xuXG5cdFx0XHRcdFx0XHQvLyBTYXZlIHNvcnRpbmdcblx0XHRcdFx0XHRcdHRoaXMuc2F2ZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9udWxsaW5nKCk7XG5cdFx0fSxcblxuXHRcdF9udWxsaW5nOiBmdW5jdGlvbigpIHtcblx0XHRcdHJvb3RFbCA9XG5cdFx0XHRkcmFnRWwgPVxuXHRcdFx0cGFyZW50RWwgPVxuXHRcdFx0Z2hvc3RFbCA9XG5cdFx0XHRuZXh0RWwgPVxuXHRcdFx0Y2xvbmVFbCA9XG5cdFx0XHRsYXN0RG93bkVsID1cblxuXHRcdFx0c2Nyb2xsRWwgPVxuXHRcdFx0c2Nyb2xsUGFyZW50RWwgPVxuXHRcdFx0YXV0b1Njcm9sbHMubGVuZ3RoID1cblxuXHRcdFx0cG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwgPVxuXHRcdFx0bGFzdFBvaW50ZXJFbGVtWCA9XG5cdFx0XHRsYXN0UG9pbnRlckVsZW1ZID1cblxuXHRcdFx0dGFwRXZ0ID1cblx0XHRcdHRvdWNoRXZ0ID1cblxuXHRcdFx0bW92ZWQgPVxuXHRcdFx0bmV3SW5kZXggPVxuXHRcdFx0b2xkSW5kZXggPVxuXG5cdFx0XHRsYXN0VGFyZ2V0ID1cblx0XHRcdGxhc3REaXJlY3Rpb24gPVxuXG5cdFx0XHRyZWFsRHJhZ0VsUmVjdCA9XG5cblx0XHRcdHB1dFNvcnRhYmxlID1cblx0XHRcdGFjdGl2ZUdyb3VwID1cblx0XHRcdFNvcnRhYmxlLmFjdGl2ZSA9IG51bGw7XG5cblx0XHRcdHNhdmVkSW5wdXRDaGVja2VkLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG5cdFx0XHRcdGVsLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0fSk7XG5cblx0XHRcdHNhdmVkSW5wdXRDaGVja2VkLmxlbmd0aCA9IDA7XG5cdFx0fSxcblxuXHRcdGhhbmRsZUV2ZW50OiBmdW5jdGlvbiAoLyoqRXZlbnQqL2V2dCkge1xuXHRcdFx0c3dpdGNoIChldnQudHlwZSkge1xuXHRcdFx0XHRjYXNlICdkcm9wJzpcblx0XHRcdFx0Y2FzZSAnZHJhZ2VuZCc6XG5cdFx0XHRcdFx0dGhpcy5fb25Ecm9wKGV2dCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAnZHJhZ2VudGVyJzpcblx0XHRcdFx0Y2FzZSAnZHJhZ292ZXInOlxuXHRcdFx0XHRcdGlmIChkcmFnRWwpIHtcblx0XHRcdFx0XHRcdHRoaXMuX29uRHJhZ092ZXIoZXZ0KTtcblx0XHRcdFx0XHRcdF9nbG9iYWxEcmFnT3ZlcihldnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlICdzZWxlY3RzdGFydCc6XG5cdFx0XHRcdFx0ZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fSxcblxuXG5cdFx0LyoqXG5cdFx0ICogU2VyaWFsaXplcyB0aGUgaXRlbSBpbnRvIGFuIGFycmF5IG9mIHN0cmluZy5cblx0XHQgKiBAcmV0dXJucyB7U3RyaW5nW119XG5cdFx0ICovXG5cdFx0dG9BcnJheTogZnVuY3Rpb24gKCkge1xuXHRcdFx0dmFyIG9yZGVyID0gW10sXG5cdFx0XHRcdGVsLFxuXHRcdFx0XHRjaGlsZHJlbiA9IHRoaXMuZWwuY2hpbGRyZW4sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHRuID0gY2hpbGRyZW4ubGVuZ3RoLFxuXHRcdFx0XHRvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG5cdFx0XHRmb3IgKDsgaSA8IG47IGkrKykge1xuXHRcdFx0XHRlbCA9IGNoaWxkcmVuW2ldO1xuXHRcdFx0XHRpZiAoX2Nsb3Nlc3QoZWwsIG9wdGlvbnMuZHJhZ2dhYmxlLCB0aGlzLmVsLCBmYWxzZSkpIHtcblx0XHRcdFx0XHRvcmRlci5wdXNoKGVsLmdldEF0dHJpYnV0ZShvcHRpb25zLmRhdGFJZEF0dHIpIHx8IF9nZW5lcmF0ZUlkKGVsKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG9yZGVyO1xuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIFNvcnRzIHRoZSBlbGVtZW50cyBhY2NvcmRpbmcgdG8gdGhlIGFycmF5LlxuXHRcdCAqIEBwYXJhbSAge1N0cmluZ1tdfSAgb3JkZXIgIG9yZGVyIG9mIHRoZSBpdGVtc1xuXHRcdCAqL1xuXHRcdHNvcnQ6IGZ1bmN0aW9uIChvcmRlcikge1xuXHRcdFx0dmFyIGl0ZW1zID0ge30sIHJvb3RFbCA9IHRoaXMuZWw7XG5cblx0XHRcdHRoaXMudG9BcnJheSgpLmZvckVhY2goZnVuY3Rpb24gKGlkLCBpKSB7XG5cdFx0XHRcdHZhciBlbCA9IHJvb3RFbC5jaGlsZHJlbltpXTtcblxuXHRcdFx0XHRpZiAoX2Nsb3Nlc3QoZWwsIHRoaXMub3B0aW9ucy5kcmFnZ2FibGUsIHJvb3RFbCwgZmFsc2UpKSB7XG5cdFx0XHRcdFx0aXRlbXNbaWRdID0gZWw7XG5cdFx0XHRcdH1cblx0XHRcdH0sIHRoaXMpO1xuXG5cdFx0XHRvcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChpZCkge1xuXHRcdFx0XHRpZiAoaXRlbXNbaWRdKSB7XG5cdFx0XHRcdFx0cm9vdEVsLnJlbW92ZUNoaWxkKGl0ZW1zW2lkXSk7XG5cdFx0XHRcdFx0cm9vdEVsLmFwcGVuZENoaWxkKGl0ZW1zW2lkXSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIFNhdmUgdGhlIGN1cnJlbnQgc29ydGluZ1xuXHRcdCAqL1xuXHRcdHNhdmU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdHZhciBzdG9yZSA9IHRoaXMub3B0aW9ucy5zdG9yZTtcblx0XHRcdHN0b3JlICYmIHN0b3JlLnNldCAmJiBzdG9yZS5zZXQodGhpcyk7XG5cdFx0fSxcblxuXG5cdFx0LyoqXG5cdFx0ICogRm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgc2V0LCBnZXQgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3RvciBieSB0ZXN0aW5nIHRoZSBlbGVtZW50IGl0c2VsZiBhbmQgdHJhdmVyc2luZyB1cCB0aHJvdWdoIGl0cyBhbmNlc3RvcnMgaW4gdGhlIERPTSB0cmVlLlxuXHRcdCAqIEBwYXJhbSAgIHtIVE1MRWxlbWVudH0gIGVsXG5cdFx0ICogQHBhcmFtICAge1N0cmluZ30gICAgICAgW3NlbGVjdG9yXSAgZGVmYXVsdDogYG9wdGlvbnMuZHJhZ2dhYmxlYFxuXHRcdCAqIEByZXR1cm5zIHtIVE1MRWxlbWVudHxudWxsfVxuXHRcdCAqL1xuXHRcdGNsb3Nlc3Q6IGZ1bmN0aW9uIChlbCwgc2VsZWN0b3IpIHtcblx0XHRcdHJldHVybiBfY2xvc2VzdChlbCwgc2VsZWN0b3IgfHwgdGhpcy5vcHRpb25zLmRyYWdnYWJsZSwgdGhpcy5lbCwgZmFsc2UpO1xuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIFNldC9nZXQgb3B0aW9uXG5cdFx0ICogQHBhcmFtICAge3N0cmluZ30gbmFtZVxuXHRcdCAqIEBwYXJhbSAgIHsqfSAgICAgIFt2YWx1ZV1cblx0XHQgKiBAcmV0dXJucyB7Kn1cblx0XHQgKi9cblx0XHRvcHRpb246IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuXHRcdFx0dmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cblx0XHRcdGlmICh2YWx1ZSA9PT0gdm9pZCAwKSB7XG5cdFx0XHRcdHJldHVybiBvcHRpb25zW25hbWVdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3B0aW9uc1tuYW1lXSA9IHZhbHVlO1xuXG5cdFx0XHRcdGlmIChuYW1lID09PSAnZ3JvdXAnKSB7XG5cdFx0XHRcdFx0X3ByZXBhcmVHcm91cChvcHRpb25zKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIERlc3Ryb3lcblx0XHQgKi9cblx0XHRkZXN0cm95OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHR2YXIgZWwgPSB0aGlzLmVsO1xuXG5cdFx0XHRlbFtleHBhbmRvXSA9IG51bGw7XG5cblx0XHRcdF9vZmYoZWwsICdtb3VzZWRvd24nLCB0aGlzLl9vblRhcFN0YXJ0KTtcblx0XHRcdF9vZmYoZWwsICd0b3VjaHN0YXJ0JywgdGhpcy5fb25UYXBTdGFydCk7XG5cdFx0XHRfb2ZmKGVsLCAncG9pbnRlcmRvd24nLCB0aGlzLl9vblRhcFN0YXJ0KTtcblxuXHRcdFx0aWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG5cdFx0XHRcdF9vZmYoZWwsICdkcmFnb3ZlcicsIHRoaXMpO1xuXHRcdFx0XHRfb2ZmKGVsLCAnZHJhZ2VudGVyJywgdGhpcyk7XG5cdFx0XHR9XG5cdFx0XHQvLyBSZW1vdmUgZHJhZ2dhYmxlIGF0dHJpYnV0ZXNcblx0XHRcdEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZWwucXVlcnlTZWxlY3RvckFsbCgnW2RyYWdnYWJsZV0nKSwgZnVuY3Rpb24gKGVsKSB7XG5cdFx0XHRcdGVsLnJlbW92ZUF0dHJpYnV0ZSgnZHJhZ2dhYmxlJyk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5fb25Ecm9wKCk7XG5cblx0XHRcdHNvcnRhYmxlcy5zcGxpY2Uoc29ydGFibGVzLmluZGV4T2YodGhpcy5lbCksIDEpO1xuXG5cdFx0XHR0aGlzLmVsID0gZWwgPSBudWxsO1xuXHRcdH0sXG5cblx0XHRfaGlkZUNsb25lOiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICghY2xvbmVFbC5jbG9uZUhpZGRlbikge1xuXHRcdFx0XHRfY3NzKGNsb25lRWwsICdkaXNwbGF5JywgJ25vbmUnKTtcblx0XHRcdFx0Y2xvbmVFbC5jbG9uZUhpZGRlbiA9IHRydWU7XG5cdFx0XHRcdGlmIChjbG9uZUVsLnBhcmVudE5vZGUgJiYgdGhpcy5vcHRpb25zLnJlbW92ZUNsb25lT25IaWRlKSB7XG5cdFx0XHRcdFx0Y2xvbmVFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb25lRWwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdF9zaG93Q2xvbmU6IGZ1bmN0aW9uKHB1dFNvcnRhYmxlKSB7XG5cdFx0XHRpZiAocHV0U29ydGFibGUubGFzdFB1dE1vZGUgIT09ICdjbG9uZScpIHtcblx0XHRcdFx0dGhpcy5faGlkZUNsb25lKCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGNsb25lRWwuY2xvbmVIaWRkZW4pIHtcblx0XHRcdFx0Ly8gc2hvdyBjbG9uZSBhdCBkcmFnRWwgb3Igb3JpZ2luYWwgcG9zaXRpb25cblx0XHRcdFx0aWYgKHJvb3RFbC5jb250YWlucyhkcmFnRWwpICYmICF0aGlzLm9wdGlvbnMuZ3JvdXAucmV2ZXJ0Q2xvbmUpIHtcblx0XHRcdFx0XHRyb290RWwuaW5zZXJ0QmVmb3JlKGNsb25lRWwsIGRyYWdFbCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAobmV4dEVsKSB7XG5cdFx0XHRcdFx0cm9vdEVsLmluc2VydEJlZm9yZShjbG9uZUVsLCBuZXh0RWwpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJvb3RFbC5hcHBlbmRDaGlsZChjbG9uZUVsKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLm9wdGlvbnMuZ3JvdXAucmV2ZXJ0Q2xvbmUpIHtcblx0XHRcdFx0XHR0aGlzLl9hbmltYXRlKGRyYWdFbCwgY2xvbmVFbCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0X2NzcyhjbG9uZUVsLCAnZGlzcGxheScsICcnKTtcblx0XHRcdFx0Y2xvbmVFbC5jbG9uZUhpZGRlbiA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRmdW5jdGlvbiBfY2xvc2VzdCgvKipIVE1MRWxlbWVudCovZWwsIC8qKlN0cmluZyovc2VsZWN0b3IsIC8qKkhUTUxFbGVtZW50Ki9jdHgsIGluY2x1ZGVDVFgpIHtcblx0XHRpZiAoZWwpIHtcblx0XHRcdGN0eCA9IGN0eCB8fCBkb2N1bWVudDtcblxuXHRcdFx0ZG8ge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0c2VsZWN0b3IgIT0gbnVsbCAmJlxuXHRcdFx0XHRcdChcblx0XHRcdFx0XHRcdHNlbGVjdG9yWzBdID09PSAnPicgP1xuXHRcdFx0XHRcdFx0ZWwucGFyZW50Tm9kZSA9PT0gY3R4ICYmIF9tYXRjaGVzKGVsLCBzZWxlY3RvcikgOlxuXHRcdFx0XHRcdFx0X21hdGNoZXMoZWwsIHNlbGVjdG9yKVxuXHRcdFx0XHRcdCkgfHxcblx0XHRcdFx0XHRpbmNsdWRlQ1RYICYmIGVsID09PSBjdHhcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGVsID09PSBjdHgpIGJyZWFrO1xuXHRcdFx0XHQvKiBqc2hpbnQgYm9zczp0cnVlICovXG5cdFx0XHR9IHdoaWxlIChlbCA9IF9nZXRQYXJlbnRPckhvc3QoZWwpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cblx0ZnVuY3Rpb24gX2dldFBhcmVudE9ySG9zdChlbCkge1xuXHRcdHJldHVybiAoZWwuaG9zdCAmJiBlbCAhPT0gZG9jdW1lbnQgJiYgZWwuaG9zdC5ub2RlVHlwZSlcblx0XHRcdD8gZWwuaG9zdFxuXHRcdFx0OiBlbC5wYXJlbnROb2RlO1xuXHR9XG5cblxuXHRmdW5jdGlvbiBfZ2xvYmFsRHJhZ092ZXIoLyoqRXZlbnQqL2V2dCkge1xuXHRcdGlmIChldnQuZGF0YVRyYW5zZmVyKSB7XG5cdFx0XHRldnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XG5cdFx0fVxuXHRcdGV2dC5jYW5jZWxhYmxlICYmIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuXHR9XG5cblxuXHRmdW5jdGlvbiBfb24oZWwsIGV2ZW50LCBmbikge1xuXHRcdGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGZuLCBJRTExT3JMZXNzID8gZmFsc2UgOiBjYXB0dXJlTW9kZSk7XG5cdH1cblxuXG5cdGZ1bmN0aW9uIF9vZmYoZWwsIGV2ZW50LCBmbikge1xuXHRcdGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGZuLCBJRTExT3JMZXNzID8gZmFsc2UgOiBjYXB0dXJlTW9kZSk7XG5cdH1cblxuXG5cdGZ1bmN0aW9uIF90b2dnbGVDbGFzcyhlbCwgbmFtZSwgc3RhdGUpIHtcblx0XHRpZiAoZWwgJiYgbmFtZSkge1xuXHRcdFx0aWYgKGVsLmNsYXNzTGlzdCkge1xuXHRcdFx0XHRlbC5jbGFzc0xpc3Rbc3RhdGUgPyAnYWRkJyA6ICdyZW1vdmUnXShuYW1lKTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHR2YXIgY2xhc3NOYW1lID0gKCcgJyArIGVsLmNsYXNzTmFtZSArICcgJykucmVwbGFjZShSX1NQQUNFLCAnICcpLnJlcGxhY2UoJyAnICsgbmFtZSArICcgJywgJyAnKTtcblx0XHRcdFx0ZWwuY2xhc3NOYW1lID0gKGNsYXNzTmFtZSArIChzdGF0ZSA/ICcgJyArIG5hbWUgOiAnJykpLnJlcGxhY2UoUl9TUEFDRSwgJyAnKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXG5cdGZ1bmN0aW9uIF9jc3MoZWwsIHByb3AsIHZhbCkge1xuXHRcdHZhciBzdHlsZSA9IGVsICYmIGVsLnN0eWxlO1xuXG5cdFx0aWYgKHN0eWxlKSB7XG5cdFx0XHRpZiAodmFsID09PSB2b2lkIDApIHtcblx0XHRcdFx0aWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3ICYmIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUpIHtcblx0XHRcdFx0XHR2YWwgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCAnJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAoZWwuY3VycmVudFN0eWxlKSB7XG5cdFx0XHRcdFx0dmFsID0gZWwuY3VycmVudFN0eWxlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHByb3AgPT09IHZvaWQgMCA/IHZhbCA6IHZhbFtwcm9wXTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRpZiAoIShwcm9wIGluIHN0eWxlKSAmJiBwcm9wLmluZGV4T2YoJ3dlYmtpdCcpID09PSAtMSkge1xuXHRcdFx0XHRcdHByb3AgPSAnLXdlYmtpdC0nICsgcHJvcDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHN0eWxlW3Byb3BdID0gdmFsICsgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gJycgOiAncHgnKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBfbWF0cml4KGVsKSB7XG5cdFx0dmFyIGFwcGxpZWRUcmFuc2Zvcm1zID0gJyc7XG5cdFx0ZG8ge1xuXHRcdFx0dmFyIHRyYW5zZm9ybSA9IF9jc3MoZWwsICd0cmFuc2Zvcm0nKTtcblxuXHRcdFx0aWYgKHRyYW5zZm9ybSAmJiB0cmFuc2Zvcm0gIT09ICdub25lJykge1xuXHRcdFx0XHRhcHBsaWVkVHJhbnNmb3JtcyA9IHRyYW5zZm9ybSArICcgJyArIGFwcGxpZWRUcmFuc2Zvcm1zO1xuXHRcdFx0fVxuXHRcdFx0LyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuXHRcdH0gd2hpbGUgKGVsID0gZWwucGFyZW50Tm9kZSk7XG5cblx0XHRpZiAod2luZG93LkRPTU1hdHJpeCkge1xuXHRcdFx0cmV0dXJuIG5ldyBET01NYXRyaXgoYXBwbGllZFRyYW5zZm9ybXMpO1xuXHRcdH0gZWxzZSBpZiAod2luZG93LldlYktpdENTU01hdHJpeCkge1xuXHRcdFx0cmV0dXJuIG5ldyBXZWJLaXRDU1NNYXRyaXgoYXBwbGllZFRyYW5zZm9ybXMpO1xuXHRcdH0gZWxzZSBpZiAod2luZG93LkNTU01hdHJpeCkge1xuXHRcdFx0cmV0dXJuIG5ldyBDU1NNYXRyaXgoYXBwbGllZFRyYW5zZm9ybXMpO1xuXHRcdH1cblx0fVxuXG5cblx0ZnVuY3Rpb24gX2ZpbmQoY3R4LCB0YWdOYW1lLCBpdGVyYXRvcikge1xuXHRcdGlmIChjdHgpIHtcblx0XHRcdHZhciBsaXN0ID0gY3R4LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpLCBpID0gMCwgbiA9IGxpc3QubGVuZ3RoO1xuXG5cdFx0XHRpZiAoaXRlcmF0b3IpIHtcblx0XHRcdFx0Zm9yICg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0XHRpdGVyYXRvcihsaXN0W2ldLCBpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbGlzdDtcblx0XHR9XG5cblx0XHRyZXR1cm4gW107XG5cdH1cblxuXG5cblx0ZnVuY3Rpb24gX2Rpc3BhdGNoRXZlbnQoXG5cdFx0c29ydGFibGUsIHJvb3RFbCwgbmFtZSxcblx0XHR0YXJnZXRFbCwgdG9FbCwgZnJvbUVsLFxuXHRcdHN0YXJ0SW5kZXgsIG5ld0luZGV4LFxuXHRcdHN0YXJ0RHJhZ2dhYmxlSW5kZXgsIG5ld0RyYWdnYWJsZUluZGV4LFxuXHRcdG9yaWdpbmFsRXZ0XG5cdCkge1xuXHRcdHNvcnRhYmxlID0gKHNvcnRhYmxlIHx8IHJvb3RFbFtleHBhbmRvXSk7XG5cdFx0dmFyIGV2dCxcblx0XHRcdG9wdGlvbnMgPSBzb3J0YWJsZS5vcHRpb25zLFxuXHRcdFx0b25OYW1lID0gJ29uJyArIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnN1YnN0cigxKTtcblx0XHQvLyBTdXBwb3J0IGZvciBuZXcgQ3VzdG9tRXZlbnQgZmVhdHVyZVxuXHRcdGlmICh3aW5kb3cuQ3VzdG9tRXZlbnQgJiYgIUlFMTFPckxlc3MgJiYgIUVkZ2UpIHtcblx0XHRcdGV2dCA9IG5ldyBDdXN0b21FdmVudChuYW1lLCB7XG5cdFx0XHRcdGJ1YmJsZXM6IHRydWUsXG5cdFx0XHRcdGNhbmNlbGFibGU6IHRydWVcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRcdGV2dC5pbml0RXZlbnQobmFtZSwgdHJ1ZSwgdHJ1ZSk7XG5cdFx0fVxuXG5cdFx0ZXZ0LnRvID0gdG9FbCB8fCByb290RWw7XG5cdFx0ZXZ0LmZyb20gPSBmcm9tRWwgfHwgcm9vdEVsO1xuXHRcdGV2dC5pdGVtID0gdGFyZ2V0RWwgfHwgcm9vdEVsO1xuXHRcdGV2dC5jbG9uZSA9IGNsb25lRWw7XG5cblx0XHRldnQub2xkSW5kZXggPSBzdGFydEluZGV4O1xuXHRcdGV2dC5uZXdJbmRleCA9IG5ld0luZGV4O1xuXG5cdFx0ZXZ0Lm9sZERyYWdnYWJsZUluZGV4ID0gc3RhcnREcmFnZ2FibGVJbmRleDtcblx0XHRldnQubmV3RHJhZ2dhYmxlSW5kZXggPSBuZXdEcmFnZ2FibGVJbmRleDtcblxuXHRcdGV2dC5vcmlnaW5hbEV2ZW50ID0gb3JpZ2luYWxFdnQ7XG5cdFx0ZXZ0LnB1bGxNb2RlID0gcHV0U29ydGFibGUgPyBwdXRTb3J0YWJsZS5sYXN0UHV0TW9kZSA6IHVuZGVmaW5lZDtcblxuXHRcdGlmIChyb290RWwpIHtcblx0XHRcdHJvb3RFbC5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnNbb25OYW1lXSkge1xuXHRcdFx0b3B0aW9uc1tvbk5hbWVdLmNhbGwoc29ydGFibGUsIGV2dCk7XG5cdFx0fVxuXHR9XG5cblxuXHRmdW5jdGlvbiBfb25Nb3ZlKGZyb21FbCwgdG9FbCwgZHJhZ0VsLCBkcmFnUmVjdCwgdGFyZ2V0RWwsIHRhcmdldFJlY3QsIG9yaWdpbmFsRXZ0LCB3aWxsSW5zZXJ0QWZ0ZXIpIHtcblx0XHR2YXIgZXZ0LFxuXHRcdFx0c29ydGFibGUgPSBmcm9tRWxbZXhwYW5kb10sXG5cdFx0XHRvbk1vdmVGbiA9IHNvcnRhYmxlLm9wdGlvbnMub25Nb3ZlLFxuXHRcdFx0cmV0VmFsO1xuXHRcdC8vIFN1cHBvcnQgZm9yIG5ldyBDdXN0b21FdmVudCBmZWF0dXJlXG5cdFx0aWYgKHdpbmRvdy5DdXN0b21FdmVudCAmJiAhSUUxMU9yTGVzcyAmJiAhRWRnZSkge1xuXHRcdFx0ZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KCdtb3ZlJywge1xuXHRcdFx0XHRidWJibGVzOiB0cnVlLFxuXHRcdFx0XHRjYW5jZWxhYmxlOiB0cnVlXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdtb3ZlJywgdHJ1ZSwgdHJ1ZSk7XG5cdFx0fVxuXG5cdFx0ZXZ0LnRvID0gdG9FbDtcblx0XHRldnQuZnJvbSA9IGZyb21FbDtcblx0XHRldnQuZHJhZ2dlZCA9IGRyYWdFbDtcblx0XHRldnQuZHJhZ2dlZFJlY3QgPSBkcmFnUmVjdDtcblx0XHRldnQucmVsYXRlZCA9IHRhcmdldEVsIHx8IHRvRWw7XG5cdFx0ZXZ0LnJlbGF0ZWRSZWN0ID0gdGFyZ2V0UmVjdCB8fCBfZ2V0UmVjdCh0b0VsKTtcblx0XHRldnQud2lsbEluc2VydEFmdGVyID0gd2lsbEluc2VydEFmdGVyO1xuXG5cdFx0ZXZ0Lm9yaWdpbmFsRXZlbnQgPSBvcmlnaW5hbEV2dDtcblxuXHRcdGZyb21FbC5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cblx0XHRpZiAob25Nb3ZlRm4pIHtcblx0XHRcdHJldFZhbCA9IG9uTW92ZUZuLmNhbGwoc29ydGFibGUsIGV2dCwgb3JpZ2luYWxFdnQpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXRWYWw7XG5cdH1cblxuXHRmdW5jdGlvbiBfZGlzYWJsZURyYWdnYWJsZShlbCkge1xuXHRcdGVsLmRyYWdnYWJsZSA9IGZhbHNlO1xuXHR9XG5cblx0ZnVuY3Rpb24gX3Vuc2lsZW50KCkge1xuXHRcdF9zaWxlbnQgPSBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIG50aCBjaGlsZCBvZiBlbCwgaWdub3JpbmcgaGlkZGVuIGNoaWxkcmVuLCBzb3J0YWJsZSdzIGVsZW1lbnRzIChkb2VzIG5vdCBpZ25vcmUgY2xvbmUgaWYgaXQncyB2aXNpYmxlKVxuXHQgKiBhbmQgbm9uLWRyYWdnYWJsZSBlbGVtZW50c1xuXHQgKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWwgICAgICAgVGhlIHBhcmVudCBlbGVtZW50XG5cdCAqIEBwYXJhbSAge051bWJlcn0gY2hpbGROdW0gICAgICBUaGUgaW5kZXggb2YgdGhlIGNoaWxkXG5cdCAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9ucyAgICAgICBQYXJlbnQgU29ydGFibGUncyBvcHRpb25zXG5cdCAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSAgICAgICAgICBUaGUgY2hpbGQgYXQgaW5kZXggY2hpbGROdW0sIG9yIG51bGwgaWYgbm90IGZvdW5kXG5cdCAqL1xuXHRmdW5jdGlvbiBfZ2V0Q2hpbGQoZWwsIGNoaWxkTnVtLCBvcHRpb25zKSB7XG5cdFx0dmFyIGN1cnJlbnRDaGlsZCA9IDAsXG5cdFx0XHRpID0gMCxcblx0XHRcdGNoaWxkcmVuID0gZWwuY2hpbGRyZW47XG5cblx0XHR3aGlsZSAoaSA8IGNoaWxkcmVuLmxlbmd0aCkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRjaGlsZHJlbltpXS5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScgJiZcblx0XHRcdFx0Y2hpbGRyZW5baV0gIT09IGdob3N0RWwgJiZcblx0XHRcdFx0Y2hpbGRyZW5baV0gIT09IGRyYWdFbCAmJlxuXHRcdFx0XHRfY2xvc2VzdChjaGlsZHJlbltpXSwgb3B0aW9ucy5kcmFnZ2FibGUsIGVsLCBmYWxzZSlcblx0XHRcdCkge1xuXHRcdFx0XHRpZiAoY3VycmVudENoaWxkID09PSBjaGlsZE51bSkge1xuXHRcdFx0XHRcdHJldHVybiBjaGlsZHJlbltpXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjdXJyZW50Q2hpbGQrKztcblx0XHRcdH1cblxuXHRcdFx0aSsrO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBsYXN0IGNoaWxkIGluIHRoZSBlbCwgaWdub3JpbmcgZ2hvc3RFbCBvciBpbnZpc2libGUgZWxlbWVudHMgKGNsb25lcylcblx0ICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsICAgICAgIFBhcmVudCBlbGVtZW50XG5cdCAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSAgICAgICAgICBUaGUgbGFzdCBjaGlsZCwgaWdub3JpbmcgZ2hvc3RFbFxuXHQgKi9cblx0ZnVuY3Rpb24gX2xhc3RDaGlsZChlbCkge1xuXHRcdHZhciBsYXN0ID0gZWwubGFzdEVsZW1lbnRDaGlsZDtcblxuXHRcdHdoaWxlIChsYXN0ICYmIChsYXN0ID09PSBnaG9zdEVsIHx8IF9jc3MobGFzdCwgJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSkge1xuXHRcdFx0bGFzdCA9IGxhc3QucHJldmlvdXNFbGVtZW50U2libGluZztcblx0XHR9XG5cblx0XHRyZXR1cm4gbGFzdCB8fCBudWxsO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2dob3N0SXNMYXN0KGV2dCwgYXhpcywgZWwpIHtcblx0XHR2YXIgZWxSZWN0ID0gX2dldFJlY3QoX2xhc3RDaGlsZChlbCkpLFxuXHRcdFx0bW91c2VPbkF4aXMgPSBheGlzID09PSAndmVydGljYWwnID8gZXZ0LmNsaWVudFkgOiBldnQuY2xpZW50WCxcblx0XHRcdG1vdXNlT25PcHBBeGlzID0gYXhpcyA9PT0gJ3ZlcnRpY2FsJyA/IGV2dC5jbGllbnRYIDogZXZ0LmNsaWVudFksXG5cdFx0XHR0YXJnZXRTMiA9IGF4aXMgPT09ICd2ZXJ0aWNhbCcgPyBlbFJlY3QuYm90dG9tIDogZWxSZWN0LnJpZ2h0LFxuXHRcdFx0dGFyZ2V0UzFPcHAgPSBheGlzID09PSAndmVydGljYWwnID8gZWxSZWN0LmxlZnQgOiBlbFJlY3QudG9wLFxuXHRcdFx0dGFyZ2V0UzJPcHAgPSBheGlzID09PSAndmVydGljYWwnID8gZWxSZWN0LnJpZ2h0IDogZWxSZWN0LmJvdHRvbSxcblx0XHRcdHNwYWNlciA9IDEwO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdGF4aXMgPT09ICd2ZXJ0aWNhbCcgP1xuXHRcdFx0XHQobW91c2VPbk9wcEF4aXMgPiB0YXJnZXRTMk9wcCArIHNwYWNlciB8fCBtb3VzZU9uT3BwQXhpcyA8PSB0YXJnZXRTMk9wcCAmJiBtb3VzZU9uQXhpcyA+IHRhcmdldFMyICYmIG1vdXNlT25PcHBBeGlzID49IHRhcmdldFMxT3BwKSA6XG5cdFx0XHRcdChtb3VzZU9uQXhpcyA+IHRhcmdldFMyICYmIG1vdXNlT25PcHBBeGlzID4gdGFyZ2V0UzFPcHAgfHwgbW91c2VPbkF4aXMgPD0gdGFyZ2V0UzIgJiYgbW91c2VPbk9wcEF4aXMgPiB0YXJnZXRTMk9wcCArIHNwYWNlcilcblx0XHQpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2dldFN3YXBEaXJlY3Rpb24oZXZ0LCB0YXJnZXQsIGF4aXMsIHN3YXBUaHJlc2hvbGQsIGludmVydGVkU3dhcFRocmVzaG9sZCwgaW52ZXJ0U3dhcCwgaXNMYXN0VGFyZ2V0KSB7XG5cdFx0dmFyIHRhcmdldFJlY3QgPSBfZ2V0UmVjdCh0YXJnZXQpLFxuXHRcdFx0bW91c2VPbkF4aXMgPSBheGlzID09PSAndmVydGljYWwnID8gZXZ0LmNsaWVudFkgOiBldnQuY2xpZW50WCxcblx0XHRcdHRhcmdldExlbmd0aCA9IGF4aXMgPT09ICd2ZXJ0aWNhbCcgPyB0YXJnZXRSZWN0LmhlaWdodCA6IHRhcmdldFJlY3Qud2lkdGgsXG5cdFx0XHR0YXJnZXRTMSA9IGF4aXMgPT09ICd2ZXJ0aWNhbCcgPyB0YXJnZXRSZWN0LnRvcCA6IHRhcmdldFJlY3QubGVmdCxcblx0XHRcdHRhcmdldFMyID0gYXhpcyA9PT0gJ3ZlcnRpY2FsJyA/IHRhcmdldFJlY3QuYm90dG9tIDogdGFyZ2V0UmVjdC5yaWdodCxcblx0XHRcdGRyYWdSZWN0ID0gX2dldFJlY3QoZHJhZ0VsKSxcblx0XHRcdGludmVydCA9IGZhbHNlO1xuXG5cblx0XHRpZiAoIWludmVydFN3YXApIHtcblx0XHRcdC8vIE5ldmVyIGludmVydCBvciBjcmVhdGUgZHJhZ0VsIHNoYWRvdyB3aGVuIHRhcmdldCBtb3ZlbWVuZXQgY2F1c2VzIG1vdXNlIHRvIG1vdmUgcGFzdCB0aGUgZW5kIG9mIHJlZ3VsYXIgc3dhcFRocmVzaG9sZFxuXHRcdFx0aWYgKGlzTGFzdFRhcmdldCAmJiB0YXJnZXRNb3ZlRGlzdGFuY2UgPCB0YXJnZXRMZW5ndGggKiBzd2FwVGhyZXNob2xkKSB7IC8vIG11bHRpcGxpZWQgb25seSBieSBzd2FwVGhyZXNob2xkIGJlY2F1c2UgbW91c2Ugd2lsbCBhbHJlYWR5IGJlIGluc2lkZSB0YXJnZXQgYnkgKDEgLSB0aHJlc2hvbGQpICogdGFyZ2V0TGVuZ3RoIC8gMlxuXHRcdFx0XHQvLyBjaGVjayBpZiBwYXN0IGZpcnN0IGludmVydCB0aHJlc2hvbGQgb24gc2lkZSBvcHBvc2l0ZSBvZiBsYXN0RGlyZWN0aW9uXG5cdFx0XHRcdGlmICghcGFzdEZpcnN0SW52ZXJ0VGhyZXNoICYmXG5cdFx0XHRcdFx0KGxhc3REaXJlY3Rpb24gPT09IDEgP1xuXHRcdFx0XHRcdFx0KFxuXHRcdFx0XHRcdFx0XHRtb3VzZU9uQXhpcyA+IHRhcmdldFMxICsgdGFyZ2V0TGVuZ3RoICogaW52ZXJ0ZWRTd2FwVGhyZXNob2xkIC8gMlxuXHRcdFx0XHRcdFx0KSA6XG5cdFx0XHRcdFx0XHQoXG5cdFx0XHRcdFx0XHRcdG1vdXNlT25BeGlzIDwgdGFyZ2V0UzIgLSB0YXJnZXRMZW5ndGggKiBpbnZlcnRlZFN3YXBUaHJlc2hvbGQgLyAyXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBwYXN0IGZpcnN0IGludmVydCB0aHJlc2hvbGQsIGRvIG5vdCByZXN0cmljdCBpbnZlcnRlZCB0aHJlc2hvbGQgdG8gZHJhZ0VsIHNoYWRvd1xuXHRcdFx0XHRcdHBhc3RGaXJzdEludmVydFRocmVzaCA9IHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXBhc3RGaXJzdEludmVydFRocmVzaCkge1xuXHRcdFx0XHRcdHZhciBkcmFnUzEgPSBheGlzID09PSAndmVydGljYWwnID8gZHJhZ1JlY3QudG9wIDogZHJhZ1JlY3QubGVmdCxcblx0XHRcdFx0XHRcdGRyYWdTMiA9IGF4aXMgPT09ICd2ZXJ0aWNhbCcgPyBkcmFnUmVjdC5ib3R0b20gOiBkcmFnUmVjdC5yaWdodDtcblx0XHRcdFx0XHQvLyBkcmFnRWwgc2hhZG93ICh0YXJnZXQgbW92ZSBkaXN0YW5jZSBzaGFkb3cpXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0bGFzdERpcmVjdGlvbiA9PT0gMSA/XG5cdFx0XHRcdFx0XHQoXG5cdFx0XHRcdFx0XHRcdG1vdXNlT25BeGlzIDwgdGFyZ2V0UzEgKyB0YXJnZXRNb3ZlRGlzdGFuY2UgLy8gb3ZlciBkcmFnRWwgc2hhZG93XG5cdFx0XHRcdFx0XHQpIDpcblx0XHRcdFx0XHRcdChcblx0XHRcdFx0XHRcdFx0bW91c2VPbkF4aXMgPiB0YXJnZXRTMiAtIHRhcmdldE1vdmVEaXN0YW5jZVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbGFzdERpcmVjdGlvbiAqIC0xO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpbnZlcnQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBSZWd1bGFyXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRtb3VzZU9uQXhpcyA+IHRhcmdldFMxICsgKHRhcmdldExlbmd0aCAqICgxIC0gc3dhcFRocmVzaG9sZCkgLyAyKSAmJlxuXHRcdFx0XHRcdG1vdXNlT25BeGlzIDwgdGFyZ2V0UzIgLSAodGFyZ2V0TGVuZ3RoICogKDEgLSBzd2FwVGhyZXNob2xkKSAvIDIpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiBfZ2V0SW5zZXJ0RGlyZWN0aW9uKHRhcmdldCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpbnZlcnQgPSBpbnZlcnQgfHwgaW52ZXJ0U3dhcDtcblxuXHRcdGlmIChpbnZlcnQpIHtcblx0XHRcdC8vIEludmVydCBvZiByZWd1bGFyXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG1vdXNlT25BeGlzIDwgdGFyZ2V0UzEgKyAodGFyZ2V0TGVuZ3RoICogaW52ZXJ0ZWRTd2FwVGhyZXNob2xkIC8gMikgfHxcblx0XHRcdFx0bW91c2VPbkF4aXMgPiB0YXJnZXRTMiAtICh0YXJnZXRMZW5ndGggKiBpbnZlcnRlZFN3YXBUaHJlc2hvbGQgLyAyKVxuXHRcdFx0KVxuXHRcdFx0e1xuXHRcdFx0XHRyZXR1cm4gKChtb3VzZU9uQXhpcyA+IHRhcmdldFMxICsgdGFyZ2V0TGVuZ3RoIC8gMikgPyAxIDogLTEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGRpcmVjdGlvbiBkcmFnRWwgbXVzdCBiZSBzd2FwcGVkIHJlbGF0aXZlIHRvIHRhcmdldCBpbiBvcmRlciB0byBtYWtlIGl0XG5cdCAqIHNlZW0gdGhhdCBkcmFnRWwgaGFzIGJlZW4gXCJpbnNlcnRlZFwiIGludG8gdGhhdCBlbGVtZW50J3MgcG9zaXRpb25cblx0ICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IHRhcmdldCAgICAgICBUaGUgdGFyZ2V0IHdob3NlIHBvc2l0aW9uIGRyYWdFbCBpcyBiZWluZyBpbnNlcnRlZCBhdFxuXHQgKiBAcmV0dXJuIHtOdW1iZXJ9ICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbiBkcmFnRWwgbXVzdCBiZSBzd2FwcGVkXG5cdCAqL1xuXHRmdW5jdGlvbiBfZ2V0SW5zZXJ0RGlyZWN0aW9uKHRhcmdldCkge1xuXHRcdHZhciBkcmFnRWxJbmRleCA9IF9pbmRleChkcmFnRWwpLFxuXHRcdFx0dGFyZ2V0SW5kZXggPSBfaW5kZXgodGFyZ2V0KTtcblxuXHRcdGlmIChkcmFnRWxJbmRleCA8IHRhcmdldEluZGV4KSB7XG5cdFx0XHRyZXR1cm4gMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIC0xO1xuXHRcdH1cblx0fVxuXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlIGlkXG5cdCAqIEBwYXJhbSAgIHtIVE1MRWxlbWVudH0gZWxcblx0ICogQHJldHVybnMge1N0cmluZ31cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIF9nZW5lcmF0ZUlkKGVsKSB7XG5cdFx0dmFyIHN0ciA9IGVsLnRhZ05hbWUgKyBlbC5jbGFzc05hbWUgKyBlbC5zcmMgKyBlbC5ocmVmICsgZWwudGV4dENvbnRlbnQsXG5cdFx0XHRpID0gc3RyLmxlbmd0aCxcblx0XHRcdHN1bSA9IDA7XG5cblx0XHR3aGlsZSAoaS0tKSB7XG5cdFx0XHRzdW0gKz0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHN1bS50b1N0cmluZygzNik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgaW5kZXggb2YgYW4gZWxlbWVudCB3aXRoaW4gaXRzIHBhcmVudCBmb3IgYSBzZWxlY3RlZCBzZXQgb2Zcblx0ICogZWxlbWVudHNcblx0ICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsXG5cdCAqIEBwYXJhbSAge3NlbGVjdG9yfSBzZWxlY3RvclxuXHQgKiBAcmV0dXJuIHtudW1iZXJ9XG5cdCAqL1xuXHRmdW5jdGlvbiBfaW5kZXgoZWwsIHNlbGVjdG9yKSB7XG5cdFx0dmFyIGluZGV4ID0gMDtcblxuXHRcdGlmICghZWwgfHwgIWVsLnBhcmVudE5vZGUpIHtcblx0XHRcdHJldHVybiAtMTtcblx0XHR9XG5cblx0XHR3aGlsZSAoZWwgJiYgKGVsID0gZWwucHJldmlvdXNFbGVtZW50U2libGluZykpIHtcblx0XHRcdGlmICgoZWwubm9kZU5hbWUudG9VcHBlckNhc2UoKSAhPT0gJ1RFTVBMQVRFJykgJiYgZWwgIT09IGNsb25lRWwgJiYgKCFzZWxlY3RvciB8fCBfbWF0Y2hlcyhlbCwgc2VsZWN0b3IpKSkge1xuXHRcdFx0XHRpbmRleCsrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBpbmRleDtcblx0fVxuXG5cdGZ1bmN0aW9uIF9tYXRjaGVzKC8qKkhUTUxFbGVtZW50Ki9lbCwgLyoqU3RyaW5nKi9zZWxlY3Rvcikge1xuXHRcdGlmICghc2VsZWN0b3IpIHJldHVybjtcblxuXHRcdHNlbGVjdG9yWzBdID09PSAnPicgJiYgKHNlbGVjdG9yID0gc2VsZWN0b3Iuc3Vic3RyaW5nKDEpKTtcblxuXHRcdGlmIChlbCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKGVsLm1hdGNoZXMpIHtcblx0XHRcdFx0XHRyZXR1cm4gZWwubWF0Y2hlcyhzZWxlY3Rvcik7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZWwubXNNYXRjaGVzU2VsZWN0b3IpIHtcblx0XHRcdFx0XHRyZXR1cm4gZWwubXNNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGVsLndlYmtpdE1hdGNoZXNTZWxlY3Rvcikge1xuXHRcdFx0XHRcdHJldHVybiBlbC53ZWJraXRNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoKF8pIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHZhciBfdGhyb3R0bGVUaW1lb3V0O1xuXHRmdW5jdGlvbiBfdGhyb3R0bGUoY2FsbGJhY2ssIG1zKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdGlmICghX3Rocm90dGxlVGltZW91dCkge1xuXHRcdFx0XHR2YXIgYXJncyA9IGFyZ3VtZW50cyxcblx0XHRcdFx0XHRfdGhpcyA9IHRoaXM7XG5cblx0XHRcdFx0X3Rocm90dGxlVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0Y2FsbGJhY2suY2FsbChfdGhpcywgYXJnc1swXSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNhbGxiYWNrLmFwcGx5KF90aGlzLCBhcmdzKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRfdGhyb3R0bGVUaW1lb3V0ID0gdm9pZCAwO1xuXHRcdFx0XHR9LCBtcyk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9jYW5jZWxUaHJvdHRsZSgpIHtcblx0XHRjbGVhclRpbWVvdXQoX3Rocm90dGxlVGltZW91dCk7XG5cdFx0X3Rocm90dGxlVGltZW91dCA9IHZvaWQgMDtcblx0fVxuXG5cdGZ1bmN0aW9uIF9leHRlbmQoZHN0LCBzcmMpIHtcblx0XHRpZiAoZHN0ICYmIHNyYykge1xuXHRcdFx0Zm9yICh2YXIga2V5IGluIHNyYykge1xuXHRcdFx0XHRpZiAoc3JjLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0XHRcdFx0XHRkc3Rba2V5XSA9IHNyY1trZXldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRzdDtcblx0fVxuXG5cdGZ1bmN0aW9uIF9jbG9uZShlbCkge1xuXHRcdGlmIChQb2x5bWVyICYmIFBvbHltZXIuZG9tKSB7XG5cdFx0XHRyZXR1cm4gUG9seW1lci5kb20oZWwpLmNsb25lTm9kZSh0cnVlKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAoJCkge1xuXHRcdFx0cmV0dXJuICQoZWwpLmNsb25lKHRydWUpWzBdO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHJldHVybiBlbC5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gX3NhdmVJbnB1dENoZWNrZWRTdGF0ZShyb290KSB7XG5cdFx0c2F2ZWRJbnB1dENoZWNrZWQubGVuZ3RoID0gMDtcblxuXHRcdHZhciBpbnB1dHMgPSByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpO1xuXHRcdHZhciBpZHggPSBpbnB1dHMubGVuZ3RoO1xuXG5cdFx0d2hpbGUgKGlkeC0tKSB7XG5cdFx0XHR2YXIgZWwgPSBpbnB1dHNbaWR4XTtcblx0XHRcdGVsLmNoZWNrZWQgJiYgc2F2ZWRJbnB1dENoZWNrZWQucHVzaChlbCk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gX25leHRUaWNrKGZuKSB7XG5cdFx0cmV0dXJuIHNldFRpbWVvdXQoZm4sIDApO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2NhbmNlbE5leHRUaWNrKGlkKSB7XG5cdFx0cmV0dXJuIGNsZWFyVGltZW91dChpZCk7XG5cdH1cblxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBcImJvdW5kaW5nIGNsaWVudCByZWN0XCIgb2YgZ2l2ZW4gZWxlbWVudFxuXHQgKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWwgICAgICAgICAgICAgICAgVGhlIGVsZW1lbnQgd2hvc2UgYm91bmRpbmdDbGllbnRSZWN0IGlzIHdhbnRlZFxuXHQgKiBAcGFyYW0gIHtbSFRNTEVsZW1lbnRdfSBjb250YWluZXIgICAgICAgdGhlIHBhcmVudCB0aGUgZWxlbWVudCB3aWxsIGJlIHBsYWNlZCBpblxuXHQgKiBAcGFyYW0gIHtbQm9vbGVhbl19IGFkanVzdEZvclRyYW5zZm9ybSAgV2hldGhlciB0aGUgcmVjdCBzaG91bGQgY29tcGVuc2F0ZSBmb3IgcGFyZW50J3MgdHJhbnNmb3JtXG5cdCAqIEByZXR1cm4ge09iamVjdH0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgYm91bmRpbmdDbGllbnRSZWN0IG9mIGVsXG5cdCAqL1xuXHRmdW5jdGlvbiBfZ2V0UmVjdChlbCwgYWRqdXN0Rm9yVHJhbnNmb3JtLCBjb250YWluZXIsIGFkanVzdEZvckZpeGVkKSB7XG5cdFx0aWYgKCFlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgJiYgZWwgIT09IHdpbikgcmV0dXJuO1xuXG5cdFx0dmFyIGVsUmVjdCxcblx0XHRcdHRvcCxcblx0XHRcdGxlZnQsXG5cdFx0XHRib3R0b20sXG5cdFx0XHRyaWdodCxcblx0XHRcdGhlaWdodCxcblx0XHRcdHdpZHRoO1xuXG5cdFx0aWYgKGVsICE9PSB3aW4gJiYgZWwgIT09IF9nZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCkpIHtcblx0XHRcdGVsUmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdFx0dG9wID0gZWxSZWN0LnRvcDtcblx0XHRcdGxlZnQgPSBlbFJlY3QubGVmdDtcblx0XHRcdGJvdHRvbSA9IGVsUmVjdC5ib3R0b207XG5cdFx0XHRyaWdodCA9IGVsUmVjdC5yaWdodDtcblx0XHRcdGhlaWdodCA9IGVsUmVjdC5oZWlnaHQ7XG5cdFx0XHR3aWR0aCA9IGVsUmVjdC53aWR0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dG9wID0gMDtcblx0XHRcdGxlZnQgPSAwO1xuXHRcdFx0Ym90dG9tID0gd2luZG93LmlubmVySGVpZ2h0O1xuXHRcdFx0cmlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aDtcblx0XHRcdGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcblx0XHRcdHdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG5cdFx0fVxuXG5cdFx0aWYgKGFkanVzdEZvckZpeGVkICYmIGVsICE9PSB3aW4pIHtcblx0XHRcdC8vIEFkanVzdCBmb3IgdHJhbnNsYXRlKClcblx0XHRcdGNvbnRhaW5lciA9IGNvbnRhaW5lciB8fCBlbC5wYXJlbnROb2RlO1xuXG5cdFx0XHQvLyBzb2x2ZXMgIzExMjMgKHNlZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM3OTUzODA2LzYwODgzMTIpXG5cdFx0XHQvLyBOb3QgbmVlZGVkIG9uIDw9IElFMTFcblx0XHRcdGlmICghSUUxMU9yTGVzcykge1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0aWYgKGNvbnRhaW5lciAmJiBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICYmIF9jc3MoY29udGFpbmVyLCAndHJhbnNmb3JtJykgIT09ICdub25lJykge1xuXHRcdFx0XHRcdFx0dmFyIGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cblx0XHRcdFx0XHRcdC8vIFNldCByZWxhdGl2ZSB0byBlZGdlcyBvZiBwYWRkaW5nIGJveCBvZiBjb250YWluZXJcblx0XHRcdFx0XHRcdHRvcCAtPSBjb250YWluZXJSZWN0LnRvcCArIHBhcnNlSW50KF9jc3MoY29udGFpbmVyLCAnYm9yZGVyLXRvcC13aWR0aCcpKTtcblx0XHRcdFx0XHRcdGxlZnQgLT0gY29udGFpbmVyUmVjdC5sZWZ0ICsgcGFyc2VJbnQoX2Nzcyhjb250YWluZXIsICdib3JkZXItbGVmdC13aWR0aCcpKTtcblx0XHRcdFx0XHRcdGJvdHRvbSA9IHRvcCArIGVsUmVjdC5oZWlnaHQ7XG5cdFx0XHRcdFx0XHRyaWdodCA9IGxlZnQgKyBlbFJlY3Qud2lkdGg7XG5cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvKiBqc2hpbnQgYm9zczp0cnVlICovXG5cdFx0XHRcdH0gd2hpbGUgKGNvbnRhaW5lciA9IGNvbnRhaW5lci5wYXJlbnROb2RlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoYWRqdXN0Rm9yVHJhbnNmb3JtICYmIGVsICE9PSB3aW4pIHtcblx0XHRcdC8vIEFkanVzdCBmb3Igc2NhbGUoKVxuXHRcdFx0dmFyIG1hdHJpeCA9IF9tYXRyaXgoY29udGFpbmVyIHx8IGVsKSxcblx0XHRcdFx0c2NhbGVYID0gbWF0cml4ICYmIG1hdHJpeC5hLFxuXHRcdFx0XHRzY2FsZVkgPSBtYXRyaXggJiYgbWF0cml4LmQ7XG5cblx0XHRcdGlmIChtYXRyaXgpIHtcblx0XHRcdFx0dG9wIC89IHNjYWxlWTtcblx0XHRcdFx0bGVmdCAvPSBzY2FsZVg7XG5cblx0XHRcdFx0d2lkdGggLz0gc2NhbGVYO1xuXHRcdFx0XHRoZWlnaHQgLz0gc2NhbGVZO1xuXG5cdFx0XHRcdGJvdHRvbSA9IHRvcCArIGhlaWdodDtcblx0XHRcdFx0cmlnaHQgPSBsZWZ0ICsgd2lkdGg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogdG9wLFxuXHRcdFx0bGVmdDogbGVmdCxcblx0XHRcdGJvdHRvbTogYm90dG9tLFxuXHRcdFx0cmlnaHQ6IHJpZ2h0LFxuXHRcdFx0d2lkdGg6IHdpZHRoLFxuXHRcdFx0aGVpZ2h0OiBoZWlnaHRcblx0XHR9O1xuXHR9XG5cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGEgc2lkZSBvZiBhbiBlbGVtZW50IGlzIHNjcm9sbGVkIHBhc3QgYSBzaWRlIG9mIGl0J3MgcGFyZW50c1xuXHQgKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gIGVsICAgICAgIFRoZSBlbGVtZW50IHdobydzIHNpZGUgYmVpbmcgc2Nyb2xsZWQgb3V0IG9mIHZpZXcgaXMgaW4gcXVlc3Rpb25cblx0ICogQHBhcmFtICB7U3RyaW5nfSAgICAgICBzaWRlICAgICBTaWRlIG9mIHRoZSBlbGVtZW50IGluIHF1ZXN0aW9uICgndG9wJywgJ2xlZnQnLCAncmlnaHQnLCAnYm90dG9tJylcblx0ICogQHJldHVybiB7SFRNTEVsZW1lbnR9ICAgICAgICAgICBUaGUgcGFyZW50IHNjcm9sbCBlbGVtZW50IHRoYXQgdGhlIGVsJ3Mgc2lkZSBpcyBzY3JvbGxlZCBwYXN0LCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIHN1Y2ggZWxlbWVudFxuXHQgKi9cblx0ZnVuY3Rpb24gX2lzU2Nyb2xsZWRQYXN0KGVsLCBzaWRlKSB7XG5cdFx0dmFyIHBhcmVudCA9IF9nZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChlbCwgdHJ1ZSksXG5cdFx0XHRlbFNpZGUgPSBfZ2V0UmVjdChlbClbc2lkZV07XG5cblx0XHQvKiBqc2hpbnQgYm9zczp0cnVlICovXG5cdFx0d2hpbGUgKHBhcmVudCkge1xuXHRcdFx0dmFyIHBhcmVudFNpZGUgPSBfZ2V0UmVjdChwYXJlbnQpW3NpZGVdLFxuXHRcdFx0XHR2aXNpYmxlO1xuXG5cdFx0XHRpZiAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2xlZnQnKSB7XG5cdFx0XHRcdHZpc2libGUgPSBlbFNpZGUgPj0gcGFyZW50U2lkZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZpc2libGUgPSBlbFNpZGUgPD0gcGFyZW50U2lkZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCF2aXNpYmxlKSByZXR1cm4gcGFyZW50O1xuXG5cdFx0XHRpZiAocGFyZW50ID09PSBfZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpKSBicmVhaztcblxuXHRcdFx0cGFyZW50ID0gX2dldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KHBhcmVudCwgZmFsc2UpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBzY3JvbGwgb2Zmc2V0IG9mIHRoZSBnaXZlbiBlbGVtZW50LCBhZGRlZCB3aXRoIGFsbCB0aGUgc2Nyb2xsIG9mZnNldHMgb2YgcGFyZW50IGVsZW1lbnRzLlxuXHQgKiBUaGUgdmFsdWUgaXMgcmV0dXJuZWQgaW4gcmVhbCBwaXhlbHMuXG5cdCAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbFxuXHQgKiBAcmV0dXJuIHtBcnJheX0gICAgICAgICAgICAgT2Zmc2V0cyBpbiB0aGUgZm9ybWF0IG9mIFtsZWZ0LCB0b3BdXG5cdCAqL1xuXHRmdW5jdGlvbiBfZ2V0UmVsYXRpdmVTY3JvbGxPZmZzZXQoZWwpIHtcblx0XHR2YXIgb2Zmc2V0TGVmdCA9IDAsXG5cdFx0XHRvZmZzZXRUb3AgPSAwLFxuXHRcdFx0d2luU2Nyb2xsZXIgPSBfZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuXG5cdFx0aWYgKGVsKSB7XG5cdFx0XHRkbyB7XG5cdFx0XHRcdHZhciBtYXRyaXggPSBfbWF0cml4KGVsKSxcblx0XHRcdFx0XHRzY2FsZVggPSBtYXRyaXguYSxcblx0XHRcdFx0XHRzY2FsZVkgPSBtYXRyaXguZDtcblxuXHRcdFx0XHRvZmZzZXRMZWZ0ICs9IGVsLnNjcm9sbExlZnQgKiBzY2FsZVg7XG5cdFx0XHRcdG9mZnNldFRvcCArPSBlbC5zY3JvbGxUb3AgKiBzY2FsZVk7XG5cdFx0XHR9IHdoaWxlIChlbCAhPT0gd2luU2Nyb2xsZXIgJiYgKGVsID0gZWwucGFyZW50Tm9kZSkpO1xuXHRcdH1cblxuXHRcdHJldHVybiBbb2Zmc2V0TGVmdCwgb2Zmc2V0VG9wXTtcblx0fVxuXG5cdC8vIEZpeGVkICM5NzM6XG5cdF9vbihkb2N1bWVudCwgJ3RvdWNobW92ZScsIGZ1bmN0aW9uKGV2dCkge1xuXHRcdGlmICgoU29ydGFibGUuYWN0aXZlIHx8IGF3YWl0aW5nRHJhZ1N0YXJ0ZWQpICYmIGV2dC5jYW5jZWxhYmxlKSB7XG5cdFx0XHRldnQucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0pO1xuXG5cblx0Ly8gRXhwb3J0IHV0aWxzXG5cdFNvcnRhYmxlLnV0aWxzID0ge1xuXHRcdG9uOiBfb24sXG5cdFx0b2ZmOiBfb2ZmLFxuXHRcdGNzczogX2Nzcyxcblx0XHRmaW5kOiBfZmluZCxcblx0XHRpczogZnVuY3Rpb24gKGVsLCBzZWxlY3Rvcikge1xuXHRcdFx0cmV0dXJuICEhX2Nsb3Nlc3QoZWwsIHNlbGVjdG9yLCBlbCwgZmFsc2UpO1xuXHRcdH0sXG5cdFx0ZXh0ZW5kOiBfZXh0ZW5kLFxuXHRcdHRocm90dGxlOiBfdGhyb3R0bGUsXG5cdFx0Y2xvc2VzdDogX2Nsb3Nlc3QsXG5cdFx0dG9nZ2xlQ2xhc3M6IF90b2dnbGVDbGFzcyxcblx0XHRjbG9uZTogX2Nsb25lLFxuXHRcdGluZGV4OiBfaW5kZXgsXG5cdFx0bmV4dFRpY2s6IF9uZXh0VGljayxcblx0XHRjYW5jZWxOZXh0VGljazogX2NhbmNlbE5leHRUaWNrLFxuXHRcdGRldGVjdERpcmVjdGlvbjogX2RldGVjdERpcmVjdGlvbixcblx0XHRnZXRDaGlsZDogX2dldENoaWxkXG5cdH07XG5cblxuXHQvKipcblx0ICogQ3JlYXRlIHNvcnRhYmxlIGluc3RhbmNlXG5cdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9ICBlbFxuXHQgKiBAcGFyYW0ge09iamVjdH0gICAgICBbb3B0aW9uc11cblx0ICovXG5cdFNvcnRhYmxlLmNyZWF0ZSA9IGZ1bmN0aW9uIChlbCwgb3B0aW9ucykge1xuXHRcdHJldHVybiBuZXcgU29ydGFibGUoZWwsIG9wdGlvbnMpO1xuXHR9O1xuXG5cblx0Ly8gRXhwb3J0XG5cdFNvcnRhYmxlLnZlcnNpb24gPSAnMS45LjAnO1xuXHRyZXR1cm4gU29ydGFibGU7XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBLFFBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/sortablejs/Sortable.js\n");

/***/ }),

/***/ "./node_modules/vee-validate/dist/vee-validate.esm.js":
/*!************************************************************!*\
  !*** ./node_modules/vee-validate/dist/vee-validate.esm.js ***!
  \************************************************************/
/*! exports provided: default, ErrorBag, Rules, ValidationObserver, ValidationProvider, Validator, directive, install, mapFields, mixin, version, withValidation */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorBag\", function() { return ErrorBag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Rules\", function() { return Rules; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ValidationObserver\", function() { return ValidationObserver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ValidationProvider\", function() { return ValidationProvider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Validator\", function() { return Validator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"directive\", function() { return directive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"install\", function() { return install; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapFields\", function() { return mapFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mixin\", function() { return mixin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withValidation\", function() { return withValidation; });\n/**\n  * vee-validate v2.2.15\n  * (c) 2019 Abdelrahman Awad\n  * @license MIT\n  */\n// \n\nvar isTextInput = function (el) {\n  return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'textarea', 'number'], el.type);\n};\n\nvar isCheckboxOrRadioInput = function (el) {\n  return includes(['radio', 'checkbox'], el.type);\n};\n\nvar isDateInput = function (el) {\n  return includes(['date', 'week', 'month', 'datetime-local', 'time'], el.type);\n};\n\n/**\n * Gets the data attribute. the name must be kebab-case.\n */\nvar getDataAttribute = function (el, name) { return el.getAttribute((\"data-vv-\" + name)); };\n\nvar isNaN$1 = function (value) {\n  if ('isNaN' in Number) {\n    return Number.isNaN(value);\n  }\n\n  // eslint-disable-next-line\n  return typeof(value) === 'number' && value !== value;\n};\n\n/**\n * Checks if the values are either null or undefined.\n */\nvar isNullOrUndefined = function () {\n  var values = [], len = arguments.length;\n  while ( len-- ) values[ len ] = arguments[ len ];\n\n  return values.every(function (value) {\n    return value === null || value === undefined;\n  });\n};\n\n/**\n * Creates the default flags object.\n */\nvar createFlags = function () { return ({\n  untouched: true,\n  touched: false,\n  dirty: false,\n  pristine: true,\n  valid: null,\n  invalid: null,\n  validated: false,\n  pending: false,\n  required: false,\n  changed: false\n}); };\n\n/**\n * Shallow object comparison.\n */\nvar isEqual = function (lhs, rhs) {\n  if (lhs instanceof RegExp && rhs instanceof RegExp) {\n    return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\n  }\n\n  if (Array.isArray(lhs) && Array.isArray(rhs)) {\n    if (lhs.length !== rhs.length) { return false; }\n\n    for (var i = 0; i < lhs.length; i++) {\n      if (!isEqual(lhs[i], rhs[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  // if both are objects, compare each key recursively.\n  if (isObject(lhs) && isObject(rhs)) {\n    return Object.keys(lhs).every(function (key) {\n      return isEqual(lhs[key], rhs[key]);\n    }) && Object.keys(rhs).every(function (key) {\n      return isEqual(lhs[key], rhs[key]);\n    });\n  }\n\n  if (isNaN$1(lhs) && isNaN$1(rhs)) {\n    return true;\n  }\n\n  return lhs === rhs;\n};\n\n/**\n * Determines the input field scope.\n */\nvar getScope = function (el) {\n  var scope = getDataAttribute(el, 'scope');\n  if (isNullOrUndefined(scope)) {\n    var form = getForm(el);\n\n    if (form) {\n      scope = getDataAttribute(form, 'scope');\n    }\n  }\n\n  return !isNullOrUndefined(scope) ? scope : null;\n};\n\n/**\n * Get the closest form element.\n */\nvar getForm = function (el) {\n  if (isNullOrUndefined(el)) { return null; }\n\n  if (el.tagName === 'FORM') { return el; }\n\n  if (!isNullOrUndefined(el.form)) { return el.form; }\n\n  return !isNullOrUndefined(el.parentNode) ? getForm(el.parentNode) : null;\n};\n\n/**\n * Gets the value in an object safely.\n */\nvar getPath = function (path, target, def) {\n  if ( def === void 0 ) def = undefined;\n\n  if (!path || !target) { return def; }\n\n  var value = target;\n  path.split('.').every(function (prop) {\n    if (prop in value) {\n      value = value[prop];\n\n      return true;\n    }\n\n    value = def;\n\n    return false;\n  });\n\n  return value;\n};\n\n/**\n * Checks if path exists within an object.\n */\nvar hasPath = function (path, target) {\n  var obj = target;\n  var previousPath = null;\n  var isNullOrNonObject = false;\n  var isValidPath = path.split('.').reduce(function (reducer, prop) {\n    if (obj == null || typeof obj !== 'object') {\n      isNullOrNonObject = true;\n      return reducer && false;\n    }\n\n    if (prop in obj) {\n      obj = obj[prop];\n      previousPath = previousPath === null ? prop : previousPath + '.' + prop;\n\n      return reducer && true;\n    }\n\n    return reducer && false;\n  }, true);\n\n  if (true) {\n    if (isNullOrNonObject) {\n      throw new Error(previousPath + ' is not an object');\n    }\n  }\n\n  return isValidPath;\n};\n\n/**\n * Parses a rule string expression.\n */\nvar parseRule = function (rule) {\n  var params = [];\n  var name = rule.split(':')[0];\n\n  if (includes(rule, ':')) {\n    params = rule.split(':').slice(1).join(':').split(',');\n  }\n\n  return { name: name, params: params };\n};\n\n/**\n * Debounces a function.\n */\nvar debounce = function (fn, wait, token) {\n  if ( wait === void 0 ) wait = 0;\n  if ( token === void 0 ) token = { cancelled: false };\n\n  if (wait === 0) {\n    return fn;\n  }\n\n  var timeout;\n\n  return function () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var later = function () {\n      timeout = null;\n\n      // check if the fn call was cancelled.\n      if (!token.cancelled) { fn.apply(void 0, args); }\n    };\n\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n    if (!timeout) { fn.apply(void 0, args); }\n  };\n};\n\n/**\n * Appends a rule definition to a list of rules.\n */\nvar appendRule = function (rule, rules) {\n  if (!rules) {\n    return normalizeRules(rule);\n  }\n\n  if (!rule) {\n    return normalizeRules(rules);\n  }\n\n  if (typeof rules === 'string') {\n    rules = normalizeRules(rules);\n  }\n\n  return assign({}, rules, normalizeRules(rule));\n};\n\n/**\n * Normalizes the given rules expression.\n */\nvar normalizeRules = function (rules) {\n  // if falsy value return an empty object.\n  if (!rules) {\n    return {};\n  }\n\n  if (isObject(rules)) {\n    // $FlowFixMe\n    return Object.keys(rules).reduce(function (prev, curr) {\n      var params = [];\n      // $FlowFixMe\n      if (rules[curr] === true) {\n        params = [];\n      } else if (Array.isArray(rules[curr])) {\n        params = rules[curr];\n      } else if (isObject(rules[curr])) {\n        params = rules[curr];\n      } else {\n        params = [rules[curr]];\n      }\n\n      // $FlowFixMe\n      if (rules[curr] !== false) {\n        prev[curr] = params;\n      }\n\n      return prev;\n    }, {});\n  }\n\n  if (typeof rules !== 'string') {\n    warn('rules must be either a string or an object.');\n    return {};\n  }\n\n  return rules.split('|').reduce(function (prev, rule) {\n    var parsedRule = parseRule(rule);\n    if (!parsedRule.name) {\n      return prev;\n    }\n\n    prev[parsedRule.name] = parsedRule.params;\n    return prev;\n  }, {});\n};\n\n/**\n * Emits a warning to the console.\n */\nvar warn = function (message) {\n  console.warn((\"[vee-validate] \" + message)); // eslint-disable-line\n};\n\n/**\n * Creates a branded error object.\n */\nvar createError = function (message) { return new Error((\"[vee-validate] \" + message)); };\n\n/**\n * Checks if the value is an object.\n */\nvar isObject = function (obj) { return obj !== null && obj && typeof obj === 'object' && ! Array.isArray(obj); };\n\n/**\n * Checks if a function is callable.\n */\nvar isCallable = function (func) { return typeof func === 'function'; };\n\n/**\n * Check if element has the css class on it.\n */\nvar hasClass = function (el, className) {\n  if (el.classList) {\n    return el.classList.contains(className);\n  }\n\n  return !!el.className.match(new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\")));\n};\n\n/**\n * Adds the provided css className to the element.\n */\nvar addClass = function (el, className) {\n  if (el.classList) {\n    el.classList.add(className);\n    return;\n  }\n\n  if (!hasClass(el, className)) {\n    el.className += \" \" + className;\n  }\n};\n\n/**\n * Remove the provided css className from the element.\n */\nvar removeClass = function (el, className) {\n  if (el.classList) {\n    el.classList.remove(className);\n    return;\n  }\n\n  if (hasClass(el, className)) {\n    var reg = new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\"));\n    el.className = el.className.replace(reg, ' ');\n  }\n};\n\n/**\n * Adds or removes a class name on the input depending on the status flag.\n */\nvar toggleClass = function (el, className, status) {\n  if (!el || !className) { return; }\n\n  if (Array.isArray(className)) {\n    className.forEach(function (item) { return toggleClass(el, item, status); });\n    return;\n  }\n\n  if (status) {\n    return addClass(el, className);\n  }\n\n  removeClass(el, className);\n};\n\n/**\n * Converts an array-like object to array, provides a simple polyfill for Array.from\n */\nvar toArray = function (arrayLike) {\n  if (isCallable(Array.from)) {\n    return Array.from(arrayLike);\n  }\n\n  var array = [];\n  var length = arrayLike.length;\n  /* istanbul ignore next */\n  for (var i = 0; i < length; i++) {\n    array.push(arrayLike[i]);\n  }\n\n  /* istanbul ignore next */\n  return array;\n};\n\n/**\n * Converts an array-like object to array and place other elements in an array\n */\nvar ensureArray = function (arrayLike) {\n  if (Array.isArray(arrayLike)) {\n    return [].concat( arrayLike );\n  }\n  var array = toArray(arrayLike);\n  return isEmptyArray(array) ? [arrayLike] : array;\n};\n\n/**\n * Assign polyfill from the mdn.\n */\nvar assign = function (target) {\n  var others = [], len = arguments.length - 1;\n  while ( len-- > 0 ) others[ len ] = arguments[ len + 1 ];\n\n  /* istanbul ignore else */\n  if (isCallable(Object.assign)) {\n    return Object.assign.apply(Object, [ target ].concat( others ));\n  }\n\n  /* istanbul ignore next */\n  if (target == null) {\n    throw new TypeError('Cannot convert undefined or null to object');\n  }\n\n  /* istanbul ignore next */\n  var to = Object(target);\n  /* istanbul ignore next */\n  others.forEach(function (arg) {\n    // Skip over if undefined or null\n    if (arg != null) {\n      Object.keys(arg).forEach(function (key) {\n        to[key] = arg[key];\n      });\n    }\n  });\n  /* istanbul ignore next */\n  return to;\n};\n\nvar id = 0;\nvar idTemplate = '{id}';\n\n/**\n * Generates a unique id.\n */\nvar uniqId = function () {\n  // handle too many uses of uniqId, although unlikely.\n  if (id >= 9999) {\n    id = 0;\n    // shift the template.\n    idTemplate = idTemplate.replace('{id}', '_{id}');\n  }\n\n  id++;\n  var newId = idTemplate.replace('{id}', String(id));\n\n  return newId;\n};\n\nvar findIndex = function (arrayLike, predicate) {\n  var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n  for (var i = 0; i < array.length; i++) {\n    if (predicate(array[i])) {\n      return i;\n    }\n  }\n\n  return -1;\n};\n\n/**\n * finds the first element that satisfies the predicate callback, polyfills array.find\n */\nvar find = function (arrayLike, predicate) {\n  var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n  var idx = findIndex(array, predicate);\n\n  return idx === -1 ? undefined : array[idx];\n};\n\nvar isBuiltInComponent = function (vnode) {\n  if (!vnode) {\n    return false;\n  }\n\n  var tag = vnode.componentOptions.tag;\n\n  return /^(keep-alive|transition|transition-group)$/.test(tag);\n};\n\nvar makeDelayObject = function (events, delay, delayConfig) {\n  if (typeof delay === 'number') {\n    return events.reduce(function (prev, e) {\n      prev[e] = delay;\n      return prev;\n    }, {});\n  }\n\n  return events.reduce(function (prev, e) {\n    if (typeof delay === 'object' && e in delay) {\n      prev[e] = delay[e];\n      return prev;\n    }\n\n    if (typeof delayConfig === 'number') {\n      prev[e] = delayConfig;\n      return prev;\n    }\n\n    prev[e] = (delayConfig && delayConfig[e]) || 0;\n\n    return prev;\n  }, {});\n};\n\nvar deepParseInt = function (input) {\n  if (typeof input === 'number') { return input; }\n\n  if (typeof input === 'string') { return parseInt(input); }\n\n  var map = {};\n  for (var element in input) {\n    map[element] = parseInt(input[element]);\n  }\n\n  return map;\n};\n\nvar merge = function (target, source) {\n  if (! (isObject(target) && isObject(source))) {\n    return target;\n  }\n\n  Object.keys(source).forEach(function (key) {\n    var obj, obj$1;\n\n    if (isObject(source[key])) {\n      if (! target[key]) {\n        assign(target, ( obj = {}, obj[key] = {}, obj ));\n      }\n\n      merge(target[key], source[key]);\n      return;\n    }\n\n    assign(target, ( obj$1 = {}, obj$1[key] = source[key], obj$1 ));\n  });\n\n  return target;\n};\n\nvar fillRulesFromElement = function (el, rules) {\n  if (el.required) {\n    rules = appendRule('required', rules);\n  }\n\n  if (isTextInput(el)) {\n    if (el.type === 'email') {\n      rules = appendRule((\"email\" + (el.multiple ? ':multiple' : '')), rules);\n    }\n\n    if (el.pattern) {\n      rules = appendRule({ regex: el.pattern }, rules);\n    }\n\n    // 524288 is the max on some browsers and test environments.\n    if (el.maxLength >= 0 && el.maxLength < 524288) {\n      rules = appendRule((\"max:\" + (el.maxLength)), rules);\n    }\n\n    if (el.minLength > 0) {\n      rules = appendRule((\"min:\" + (el.minLength)), rules);\n    }\n\n    if (el.type === 'number') {\n      rules = appendRule('decimal', rules);\n      if (el.min !== '') {\n        rules = appendRule((\"min_value:\" + (el.min)), rules);\n      }\n\n      if (el.max !== '') {\n        rules = appendRule((\"max_value:\" + (el.max)), rules);\n      }\n    }\n\n    return rules;\n  }\n\n  if (isDateInput(el)) {\n    var timeFormat = el.step && Number(el.step) < 60 ? 'HH:mm:ss' : 'HH:mm';\n\n    if (el.type === 'date') {\n      return appendRule('date_format:yyyy-MM-dd', rules);\n    }\n\n    if (el.type === 'datetime-local') {\n      return appendRule((\"date_format:yyyy-MM-ddT\" + timeFormat), rules);\n    }\n\n    if (el.type === 'month') {\n      return appendRule('date_format:yyyy-MM', rules);\n    }\n\n    if (el.type === 'week') {\n      return appendRule('date_format:yyyy-[W]WW', rules);\n    }\n\n    if (el.type === 'time') {\n      return appendRule((\"date_format:\" + timeFormat), rules);\n    }\n  }\n\n  return rules;\n};\n\nvar values = function (obj) {\n  if (isCallable(Object.values)) {\n    return Object.values(obj);\n  }\n\n  // fallback to keys()\n  /* istanbul ignore next */\n  return Object.keys(obj).map(function (k) { return obj[k]; });\n};\n\nvar parseSelector = function (selector) {\n  var rule = null;\n  if (includes(selector, ':')) {\n    rule = selector.split(':').pop();\n    selector = selector.replace((\":\" + rule), '');\n  }\n\n  if (selector[0] === '#') {\n    return {\n      id: selector.slice(1),\n      rule: rule,\n      name: null,\n      scope: null\n    };\n  }\n\n  var scope = null;\n  var name = selector;\n  if (includes(selector, '.')) {\n    var parts = selector.split('.');\n    scope = parts[0];\n    name = parts.slice(1).join('.');\n  }\n\n  return {\n    id: null,\n    scope: scope,\n    name: name,\n    rule: rule\n  };\n};\n\nvar includes = function (collection, item) {\n  return collection.indexOf(item) !== -1;\n};\n\nvar isEmptyArray = function (arr) {\n  return Array.isArray(arr) && arr.length === 0;\n};\n\nvar defineNonReactive = function (obj, prop, value) {\n  Object.defineProperty(obj, prop, {\n    configurable: false,\n    writable: true,\n    value: value\n  });\n};\n\n// \n\nvar LOCALE = 'en';\n\nvar Dictionary = function Dictionary (dictionary) {\n  if ( dictionary === void 0 ) dictionary = {};\n\n  this.container = {};\n  this.merge(dictionary);\n};\n\nvar prototypeAccessors = { locale: { configurable: true } };\n\nprototypeAccessors.locale.get = function () {\n  return LOCALE;\n};\n\nprototypeAccessors.locale.set = function (value) {\n  LOCALE = value || 'en';\n};\n\nDictionary.prototype.hasLocale = function hasLocale (locale) {\n  return !!this.container[locale];\n};\n\nDictionary.prototype.setDateFormat = function setDateFormat (locale, format) {\n  if (!this.container[locale]) {\n    this.container[locale] = {};\n  }\n\n  this.container[locale].dateFormat = format;\n};\n\nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n  if (!this.container[locale] || !this.container[locale].dateFormat) {\n    return null;\n  }\n\n  return this.container[locale].dateFormat;\n};\n\nDictionary.prototype.getMessage = function getMessage (locale, key, data) {\n  var message = null;\n  if (!this.hasMessage(locale, key)) {\n    message = this._getDefaultMessage(locale);\n  } else {\n    message = this.container[locale].messages[key];\n  }\n\n  return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\n/**\n * Gets a specific message for field. falls back to the rule message.\n */\nDictionary.prototype.getFieldMessage = function getFieldMessage (locale, field, key, data) {\n  if (!this.hasLocale(locale)) {\n    return this.getMessage(locale, key, data);\n  }\n\n  var dict = this.container[locale].custom && this.container[locale].custom[field];\n  if (!dict || !dict[key]) {\n    return this.getMessage(locale, key, data);\n  }\n\n  var message = dict[key];\n  return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\nDictionary.prototype._getDefaultMessage = function _getDefaultMessage (locale) {\n  if (this.hasMessage(locale, '_default')) {\n    return this.container[locale].messages._default;\n  }\n\n  return this.container.en.messages._default;\n};\n\nDictionary.prototype.getAttribute = function getAttribute (locale, key, fallback) {\n    if ( fallback === void 0 ) fallback = '';\n\n  if (!this.hasAttribute(locale, key)) {\n    return fallback;\n  }\n\n  return this.container[locale].attributes[key];\n};\n\nDictionary.prototype.hasMessage = function hasMessage (locale, key) {\n  return !! (\n    this.hasLocale(locale) &&\n          this.container[locale].messages &&\n          this.container[locale].messages[key]\n  );\n};\n\nDictionary.prototype.hasAttribute = function hasAttribute (locale, key) {\n  return !! (\n    this.hasLocale(locale) &&\n          this.container[locale].attributes &&\n          this.container[locale].attributes[key]\n  );\n};\n\nDictionary.prototype.merge = function merge$1 (dictionary) {\n  merge(this.container, dictionary);\n};\n\nDictionary.prototype.setMessage = function setMessage (locale, key, message) {\n  if (! this.hasLocale(locale)) {\n    this.container[locale] = {\n      messages: {},\n      attributes: {}\n    };\n  }\n    \n  if (!this.container[locale].messages) {\n    this.container[locale].messages = {};\n  }\n\n  this.container[locale].messages[key] = message;\n};\n\nDictionary.prototype.setAttribute = function setAttribute (locale, key, attribute) {\n  if (! this.hasLocale(locale)) {\n    this.container[locale] = {\n      messages: {},\n      attributes: {}\n    };\n  }\n\n  this.container[locale].attributes[key] = attribute;\n};\n\nObject.defineProperties( Dictionary.prototype, prototypeAccessors );\n\nvar drivers = {\n  default: new Dictionary({\n    en: {\n      messages: {},\n      attributes: {},\n      custom: {}\n    }\n  })\n};\n\nvar currentDriver = 'default';\n\nvar DictionaryResolver = function DictionaryResolver () {};\n\nDictionaryResolver._checkDriverName = function _checkDriverName (driver) {\n  if (!driver) {\n    throw createError('you must provide a name to the dictionary driver');\n  }\n};\n\nDictionaryResolver.setDriver = function setDriver (driver, implementation) {\n    if ( implementation === void 0 ) implementation = null;\n\n  this._checkDriverName(driver);\n  if (implementation) {\n    drivers[driver] = implementation;\n  }\n\n  currentDriver = driver;\n};\n\nDictionaryResolver.getDriver = function getDriver () {\n  return drivers[currentDriver];\n};\n\n// \n\nvar ErrorBag = function ErrorBag (errorBag, id) {\n  if ( errorBag === void 0 ) errorBag = null;\n  if ( id === void 0 ) id = null;\n\n  this.vmId = id || null;\n  // make this bag a mirror of the provided one, sharing the same items reference.\n  if (errorBag && errorBag instanceof ErrorBag) {\n    this.items = errorBag.items;\n  } else {\n    this.items = [];\n  }\n};\n\nErrorBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n    var this$1 = this;\n\n  var index = 0;\n  return {\n    next: function () {\n      return { value: this$1.items[index++], done: index > this$1.items.length };\n    }\n  };\n};\n\n/**\n * Adds an error to the internal array.\n */\nErrorBag.prototype.add = function add (error) {\n    var ref;\n\n  (ref = this.items).push.apply(\n    ref, this._normalizeError(error)\n  );\n};\n\n/**\n * Normalizes passed errors to an error array.\n */\nErrorBag.prototype._normalizeError = function _normalizeError (error) {\n    var this$1 = this;\n\n  if (Array.isArray(error)) {\n    return error.map(function (e) {\n      e.scope = !isNullOrUndefined(e.scope) ? e.scope : null;\n      e.vmId = !isNullOrUndefined(e.vmId) ? e.vmId : (this$1.vmId || null);\n\n      return e;\n    });\n  }\n\n  error.scope = !isNullOrUndefined(error.scope) ? error.scope : null;\n  error.vmId = !isNullOrUndefined(error.vmId) ? error.vmId : (this.vmId || null);\n\n  return [error];\n};\n\n/**\n * Regenrates error messages if they have a generator function.\n */\nErrorBag.prototype.regenerate = function regenerate () {\n  this.items.forEach(function (i) {\n    i.msg = isCallable(i.regenerate) ? i.regenerate() : i.msg;\n  });\n};\n\n/**\n * Updates a field error with the new field scope.\n */\nErrorBag.prototype.update = function update (id, error) {\n  var item = find(this.items, function (i) { return i.id === id; });\n  if (!item) {\n    return;\n  }\n\n  var idx = this.items.indexOf(item);\n  this.items.splice(idx, 1);\n  item.scope = error.scope;\n  this.items.push(item);\n};\n\n/**\n * Gets all error messages from the internal array.\n */\nErrorBag.prototype.all = function all (scope) {\n    var this$1 = this;\n\n  var filterFn = function (item) {\n    var matchesScope = true;\n    var matchesVM = true;\n    if (!isNullOrUndefined(scope)) {\n      matchesScope = item.scope === scope;\n    }\n\n    if (!isNullOrUndefined(this$1.vmId)) {\n      matchesVM = item.vmId === this$1.vmId;\n    }\n\n    return matchesVM && matchesScope;\n  };\n\n  return this.items.filter(filterFn).map(function (e) { return e.msg; });\n};\n\n/**\n * Checks if there are any errors in the internal array.\n */\nErrorBag.prototype.any = function any (scope) {\n    var this$1 = this;\n\n  var filterFn = function (item) {\n    var matchesScope = true;\n    var matchesVM = true;\n    if (!isNullOrUndefined(scope)) {\n      matchesScope = item.scope === scope;\n    }\n\n    if (!isNullOrUndefined(this$1.vmId)) {\n      matchesVM = item.vmId === this$1.vmId;\n    }\n\n    return matchesVM && matchesScope;\n  };\n\n  return !!this.items.filter(filterFn).length;\n};\n\n/**\n * Removes all items from the internal array.\n */\nErrorBag.prototype.clear = function clear (scope) {\n    var this$1 = this;\n\n  var matchesVM = isNullOrUndefined(this.vmId) ? function () { return true; } : function (i) { return i.vmId === this$1.vmId; };\n  var matchesScope = function (i) { return i.scope === scope; };\n  if (arguments.length === 0) {\n    matchesScope = function () { return true; };\n  } else if (isNullOrUndefined(scope)) {\n    scope = null;\n  }\n\n  for (var i = 0; i < this.items.length; ++i) {\n    if (matchesVM(this.items[i]) && matchesScope(this.items[i])) {\n      this.items.splice(i, 1);\n      --i;\n    }\n  }\n};\n\n/**\n * Collects errors into groups or for a specific field.\n */\nErrorBag.prototype.collect = function collect (field, scope, map) {\n    var this$1 = this;\n    if ( map === void 0 ) map = true;\n\n  var isSingleField = !isNullOrUndefined(field) && !field.includes('*');\n  var groupErrors = function (items) {\n    var errors = items.reduce(function (collection, error) {\n      if (!isNullOrUndefined(this$1.vmId) && error.vmId !== this$1.vmId) {\n        return collection;\n      }\n\n      if (!collection[error.field]) {\n        collection[error.field] = [];\n      }\n\n      collection[error.field].push(map ? error.msg : error);\n\n      return collection;\n    }, {});\n\n    // reduce the collection to be a single array.\n    if (isSingleField) {\n      return values(errors)[0] || [];\n    }\n\n    return errors;\n  };\n\n  if (isNullOrUndefined(field)) {\n    return groupErrors(this.items);\n  }\n\n  var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n  var ref = this._makeCandidateFilters(selector);\n    var isPrimary = ref.isPrimary;\n    var isAlt = ref.isAlt;\n\n  var collected = this.items.reduce(function (prev, curr) {\n    if (isPrimary(curr)) {\n      prev.primary.push(curr);\n    }\n\n    if (isAlt(curr)) {\n      prev.alt.push(curr);\n    }\n\n    return prev;\n  }, { primary: [], alt: [] });\n\n  collected = collected.primary.length ? collected.primary : collected.alt;\n\n  return groupErrors(collected);\n};\n\n/**\n * Gets the internal array length.\n */\nErrorBag.prototype.count = function count () {\n    var this$1 = this;\n\n  if (this.vmId) {\n    return this.items.filter(function (e) { return e.vmId === this$1.vmId; }).length;\n  }\n\n  return this.items.length;\n};\n\n/**\n * Finds and fetches the first error message for the specified field id.\n */\nErrorBag.prototype.firstById = function firstById (id) {\n  var error = find(this.items, function (i) { return i.id === id; });\n\n  return error ? error.msg : undefined;\n};\n\n/**\n * Gets the first error message for a specific field.\n */\nErrorBag.prototype.first = function first (field, scope) {\n    if ( scope === void 0 ) scope = null;\n\n  var selector = isNullOrUndefined(scope) ? field : (scope + \".\" + field);\n  var match = this._match(selector);\n\n  return match && match.msg;\n};\n\n/**\n * Returns the first error rule for the specified field\n */\nErrorBag.prototype.firstRule = function firstRule (field, scope) {\n  var errors = this.collect(field, scope, false);\n\n  return (errors.length && errors[0].rule) || undefined;\n};\n\n/**\n * Checks if the internal array has at least one error for the specified field.\n */\nErrorBag.prototype.has = function has (field, scope) {\n    if ( scope === void 0 ) scope = null;\n\n  return !!this.first(field, scope);\n};\n\n/**\n * Gets the first error message for a specific field and a rule.\n */\nErrorBag.prototype.firstByRule = function firstByRule (name, rule, scope) {\n    if ( scope === void 0 ) scope = null;\n\n  var error = this.collect(name, scope, false).filter(function (e) { return e.rule === rule; })[0];\n\n  return (error && error.msg) || undefined;\n};\n\n/**\n * Gets the first error message for a specific field that not match the rule.\n */\nErrorBag.prototype.firstNot = function firstNot (name, rule, scope) {\n    if ( rule === void 0 ) rule = 'required';\n    if ( scope === void 0 ) scope = null;\n\n  var error = this.collect(name, scope, false).filter(function (e) { return e.rule !== rule; })[0];\n\n  return (error && error.msg) || undefined;\n};\n\n/**\n * Removes errors by matching against the id or ids.\n */\nErrorBag.prototype.removeById = function removeById (id) {\n  var condition = function (item) { return item.id === id; };\n  if (Array.isArray(id)) {\n    condition = function (item) { return id.indexOf(item.id) !== -1; };\n  }\n\n  for (var i = 0; i < this.items.length; ++i) {\n    if (condition(this.items[i])) {\n      this.items.splice(i, 1);\n      --i;\n    }\n  }\n};\n\n/**\n * Removes all error messages associated with a specific field.\n */\nErrorBag.prototype.remove = function remove (field, scope, vmId) {\n  if (isNullOrUndefined(field)) {\n    return;\n  }\n\n  var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n  var ref = this._makeCandidateFilters(selector);\n    var isPrimary = ref.isPrimary;\n    var isAlt = ref.isAlt;\n  var matches = function (item) { return isPrimary(item) || isAlt(item); };\n  var shouldRemove = function (item) {\n    if (isNullOrUndefined(vmId)) { return matches(item); }\n\n    return matches(item) && item.vmId === vmId;\n  };\n\n  for (var i = 0; i < this.items.length; ++i) {\n    if (shouldRemove(this.items[i])) {\n      this.items.splice(i, 1);\n      --i;\n    }\n  }\n};\n\nErrorBag.prototype._makeCandidateFilters = function _makeCandidateFilters (selector) {\n    var this$1 = this;\n\n  var matchesRule = function () { return true; };\n  var matchesScope = function () { return true; };\n  var matchesName = function () { return true; };\n  var matchesVM = function () { return true; };\n\n  var ref = parseSelector(selector);\n    var id = ref.id;\n    var rule = ref.rule;\n    var scope = ref.scope;\n    var name = ref.name;\n\n  if (rule) {\n    matchesRule = function (item) { return item.rule === rule; };\n  }\n\n  // match by id, can be combined with rule selection.\n  if (id) {\n    return {\n      isPrimary: function (item) { return matchesRule(item) && (function (item) { return id === item.id; }); },\n      isAlt: function () { return false; }\n    };\n  }\n\n  if (isNullOrUndefined(scope)) {\n    // if no scope specified, make sure the found error has no scope.\n    matchesScope = function (item) { return isNullOrUndefined(item.scope); };\n  } else {\n    matchesScope = function (item) { return item.scope === scope; };\n  }\n\n  if (!isNullOrUndefined(name) && name !== '*') {\n    matchesName = function (item) { return item.field === name; };\n  }\n\n  if (!isNullOrUndefined(this.vmId)) {\n    matchesVM = function (item) { return item.vmId === this$1.vmId; };\n  }\n\n  // matches the first candidate.\n  var isPrimary = function (item) {\n    return matchesVM(item) && matchesName(item) && matchesRule(item) && matchesScope(item);\n  };\n\n  // matches a second candidate, which is a field with a name containing the '.' character.\n  var isAlt = function (item) {\n    return matchesVM(item) && matchesRule(item) && item.field === (scope + \".\" + name);\n  };\n\n  return {\n    isPrimary: isPrimary,\n    isAlt: isAlt\n  };\n};\n\nErrorBag.prototype._match = function _match (selector) {\n  if (isNullOrUndefined(selector)) {\n    return undefined;\n  }\n\n  var ref = this._makeCandidateFilters(selector);\n    var isPrimary = ref.isPrimary;\n    var isAlt = ref.isAlt;\n\n  return this.items.reduce(function (prev, item, idx, arr) {\n    var isLast = idx === arr.length - 1;\n    if (prev.primary) {\n      return isLast ? prev.primary : prev;\n    }\n\n    if (isPrimary(item)) {\n      prev.primary = item;\n    }\n\n    if (isAlt(item)) {\n      prev.alt = item;\n    }\n\n    // keep going.\n    if (!isLast) {\n      return prev;\n    }\n\n    return prev.primary || prev.alt;\n  }, {});\n};\n\nvar DEFAULT_CONFIG = {\n  locale: 'en',\n  delay: 0,\n  errorBagName: 'errors',\n  dictionary: null,\n  fieldsBagName: 'fields',\n  classes: false,\n  classNames: null,\n  events: 'input',\n  inject: true,\n  fastExit: true,\n  aria: true,\n  validity: false,\n  mode: 'aggressive',\n  useConstraintAttrs: true,\n  i18n: null,\n  i18nRootKey: 'validation'\n};\n\nvar currentConfig = assign({}, DEFAULT_CONFIG);\n\nvar resolveConfig = function (ctx) {\n  var selfConfig = getPath('$options.$_veeValidate', ctx, {});\n\n  return assign({}, currentConfig, selfConfig);\n};\n\nvar getConfig = function () { return currentConfig; };\n\nvar setConfig = function (newConf) {\n  currentConfig = assign({}, currentConfig, newConf);\n};\n\n// VNode Utils\n\n// Gets the model object on the vnode.\nfunction findModel (vnode) {\n  if (!vnode.data) {\n    return null;\n  }\n\n  // Component Model\n  if (vnode.data.model) {\n    return vnode.data.model;\n  }\n\n  return !!(vnode.data.directives) && find(vnode.data.directives, function (d) { return d.name === 'model'; });\n}\n\nfunction extractChildren (vnode) {\n  if (Array.isArray(vnode)) {\n    return vnode;\n  }\n\n  if (Array.isArray(vnode.children)) {\n    return vnode.children;\n  }\n\n  if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\n    return vnode.componentOptions.children;\n  }\n\n  return [];\n}\n\nfunction extractVNodes (vnode) {\n  if (findModel(vnode)) {\n    return [vnode];\n  }\n\n  var children = extractChildren(vnode);\n\n  return children.reduce(function (nodes, node) {\n    var candidates = extractVNodes(node);\n    if (candidates.length) {\n      nodes.push.apply(nodes, candidates);\n    }\n\n    return nodes;\n  }, []);\n}\n\n// Resolves v-model config if exists.\nfunction findModelConfig (vnode) {\n  if (!vnode.componentOptions) { return null; }\n\n  return vnode.componentOptions.Ctor.options.model;\n}\n// Adds a listener to vnode listener object.\nfunction mergeVNodeListeners (obj, eventName, handler) {\n  // Has a single listener, convert to array.\n  if (isCallable(obj[eventName])) {\n    var prevHandler = obj[eventName];\n    obj[eventName] = [prevHandler];\n  }\n\n  // no listeners, create the array.\n  if (isNullOrUndefined(obj[eventName])) {\n    obj[eventName] = [];\n  }\n\n  obj[eventName].push(handler);\n}\n\n// Adds a listener to a native HTML vnode.\nfunction addNativeNodeListener (node, eventName, handler) {\n  if (isNullOrUndefined(node.data.on)) {\n    node.data.on = {};\n  }\n\n  mergeVNodeListeners(node.data.on, eventName, handler);\n}\n\n// Adds a listener to a Vue component vnode.\nfunction addComponentNodeListener (node, eventName, handler) {\n  /* istanbul ignore next */\n  if (!node.componentOptions.listeners) {\n    node.componentOptions.listeners = {};\n  }\n\n  mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\n}\nfunction addVNodeListener (vnode, eventName, handler) {\n  if (vnode.componentOptions) {\n    addComponentNodeListener(vnode, eventName, handler);\n    return;\n  }\n\n  addNativeNodeListener(vnode, eventName, handler);\n}\n// Determines if `change` should be used over `input` for listeners.\nfunction getInputEventName (vnode, model) {\n  // Is a component.\n  if (vnode.componentOptions) {\n    var ref = findModelConfig(vnode) || { event: 'input' };\n    var event = ref.event;\n\n    return event;\n  }\n\n  // Lazy Models and select tag typically use change event\n  if ((model && model.modifiers && model.modifiers.lazy) || vnode.tag === 'select') {\n    return 'change';\n  }\n\n  // is a textual-type input.\n  if (vnode.data.attrs && isTextInput({ type: vnode.data.attrs.type || 'text' })) {\n    return 'input';\n  }\n\n  return 'change';\n}\n\nfunction normalizeSlots (slots, ctx) {\n  return Object.keys(slots).reduce(function (arr, key) {\n    slots[key].forEach(function (vnode) {\n      if (!vnode.context) {\n        slots[key].context = ctx;\n        if (!vnode.data) {\n          vnode.data = {};\n        }\n        vnode.data.slot = key;\n      }\n    });\n\n    return arr.concat(slots[key]);\n  }, []);\n}\nfunction createRenderless (h, children) {\n  // Only render the first item of the node.\n  if (Array.isArray(children) && children[0]) {\n    return children[0];\n  }\n\n  // a single node.\n  if (children) {\n    return children;\n  }\n\n  // No slots, render nothing.\n  return h();\n}\n\n/**\n * Generates the options required to construct a field.\n */\nvar Resolver = function Resolver () {};\n\nResolver.generate = function generate (el, binding, vnode) {\n  var model = Resolver.resolveModel(binding, vnode);\n  var options = resolveConfig(vnode.context);\n\n  return {\n    name: Resolver.resolveName(el, vnode),\n    el: el,\n    listen: !binding.modifiers.disable,\n    bails: binding.modifiers.bails ? true : (binding.modifiers.continues === true ? false : undefined),\n    scope: Resolver.resolveScope(el, binding, vnode),\n    vm: vnode.context,\n    expression: binding.value,\n    component: vnode.componentInstance,\n    classes: options.classes,\n    classNames: options.classNames,\n    getter: Resolver.resolveGetter(el, vnode, model),\n    events: Resolver.resolveEvents(el, vnode) || options.events,\n    model: model,\n    delay: Resolver.resolveDelay(el, vnode, options),\n    rules: Resolver.resolveRules(el, binding, vnode),\n    immediate: !!binding.modifiers.initial || !!binding.modifiers.immediate,\n    persist: !!binding.modifiers.persist,\n    validity: options.validity && !vnode.componentInstance,\n    aria: options.aria && !vnode.componentInstance,\n    initialValue: Resolver.resolveInitialValue(vnode)\n  };\n};\n\nResolver.getCtorConfig = function getCtorConfig (vnode) {\n  if (!vnode.componentInstance) { return null; }\n\n  var config = getPath('componentInstance.$options.$_veeValidate', vnode);\n\n  return config;\n};\n\n/**\n * Resolves the rules defined on an element.\n */\nResolver.resolveRules = function resolveRules (el, binding, vnode) {\n  var rules = '';\n  if (!binding.value && (!binding || !binding.expression)) {\n    rules = getDataAttribute(el, 'rules');\n  }\n\n  if (binding.value && includes(['string', 'object'], typeof binding.value.rules)) {\n    rules = binding.value.rules;\n  } else if (binding.value) {\n    rules = binding.value;\n  }\n\n  if (vnode.componentInstance) {\n    return rules;\n  }\n\n  // If validity is disabled, ignore field rules.\n  var normalized = normalizeRules(rules);\n  if (!getConfig().useConstraintAttrs) {\n    return normalized;\n  }\n\n  return assign({}, fillRulesFromElement(el, {}), normalized);\n};\n\n/**\n * @param {*} vnode\n */\nResolver.resolveInitialValue = function resolveInitialValue (vnode) {\n  var model = vnode.data.model || find(vnode.data.directives, function (d) { return d.name === 'model'; });\n\n  return model && model.value;\n};\n\n/**\n * Resolves the delay value.\n * @param {*} el\n * @param {*} vnode\n * @param {Object} options\n */\nResolver.resolveDelay = function resolveDelay (el, vnode, options) {\n  var delay = getDataAttribute(el, 'delay');\n  var globalDelay = (options && 'delay' in options) ? options.delay : 0;\n\n  if (!delay && vnode.componentInstance && vnode.componentInstance.$attrs) {\n    delay = vnode.componentInstance.$attrs['data-vv-delay'];\n  }\n\n  if (!isObject(globalDelay)) {\n    return deepParseInt(delay || globalDelay);\n  }\n\n  if (!isNullOrUndefined(delay)) {\n    globalDelay.input = delay;\n  }\n\n  return deepParseInt(globalDelay);\n};\n\n/**\n * Resolves the events to validate in response to.\n * @param {*} el\n * @param {*} vnode\n */\nResolver.resolveEvents = function resolveEvents (el, vnode) {\n  // resolve it from the root element.\n  var events = getDataAttribute(el, 'validate-on');\n\n  // resolve from data-vv-validate-on if its a vue component.\n  if (!events && vnode.componentInstance && vnode.componentInstance.$attrs) {\n    events = vnode.componentInstance.$attrs['data-vv-validate-on'];\n  }\n\n  // resolve it from $_veeValidate options.\n  if (!events && vnode.componentInstance) {\n    var config = Resolver.getCtorConfig(vnode);\n    events = config && config.events;\n  }\n\n  if (!events && getConfig().events) {\n    events = getConfig().events;\n  }\n\n  // resolve the model event if its configured for custom components.\n  if (events && vnode.componentInstance && includes(events, 'input')) {\n    var ref = vnode.componentInstance.$options.model || { event: 'input' };\n      var event = ref.event;\n    // if the prop was configured but not the model.\n    if (!event) {\n      return events;\n    }\n\n    events = events.replace('input', event);\n  }\n\n  return events;\n};\n\n/**\n * Resolves the scope for the field.\n * @param {*} el\n * @param {*} binding\n */\nResolver.resolveScope = function resolveScope (el, binding, vnode) {\n    if ( vnode === void 0 ) vnode = {};\n\n  var scope = null;\n  if (vnode.componentInstance && isNullOrUndefined(scope)) {\n    scope = vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-scope'];\n  }\n\n  return !isNullOrUndefined(scope) ? scope : getScope(el);\n};\n\n/**\n * Checks if the node directives contains a v-model or a specified arg.\n * Args take priority over models.\n *\n * @return {Object}\n */\nResolver.resolveModel = function resolveModel (binding, vnode) {\n  if (binding.arg) {\n    return { expression: binding.arg };\n  }\n\n  var model = findModel(vnode);\n  if (!model) {\n    return null;\n  }\n\n  // https://github.com/vuejs/vue/blob/dev/src/core/util/lang.js#L26\n  var watchable = !/[^\\w.$]/.test(model.expression) && hasPath(model.expression, vnode.context);\n  var lazy = !!(model.modifiers && model.modifiers.lazy);\n\n  if (!watchable) {\n    return { expression: null, lazy: lazy };\n  }\n\n  return { expression: model.expression, lazy: lazy };\n};\n\n/**\n * Resolves the field name to trigger validations.\n * @return {String} The field name.\n */\nResolver.resolveName = function resolveName (el, vnode) {\n  var name = getDataAttribute(el, 'name');\n\n  if (!name && !vnode.componentInstance) {\n    return el.name;\n  }\n\n  if (!name && vnode.componentInstance && vnode.componentInstance.$attrs) {\n    name = vnode.componentInstance.$attrs['data-vv-name'] || vnode.componentInstance.$attrs['name'];\n  }\n\n  if (!name && vnode.componentInstance) {\n    var config = Resolver.getCtorConfig(vnode);\n    if (config && isCallable(config.name)) {\n      var boundGetter = config.name.bind(vnode.componentInstance);\n\n      return boundGetter();\n    }\n\n    return vnode.componentInstance.name;\n  }\n\n  return name;\n};\n\n/**\n * Returns a value getter input type.\n */\nResolver.resolveGetter = function resolveGetter (el, vnode, model) {\n  if (model && model.expression) {\n    return function () {\n      return getPath(model.expression, vnode.context);\n    };\n  }\n\n  if (vnode.componentInstance) {\n    var path = getDataAttribute(el, 'value-path') || (vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-value-path']);\n    if (path) {\n      return function () {\n        return getPath(path, vnode.componentInstance);\n      };\n    }\n\n    var config = Resolver.getCtorConfig(vnode);\n    if (config && isCallable(config.value)) {\n      var boundGetter = config.value.bind(vnode.componentInstance);\n\n      return function () {\n        return boundGetter();\n      };\n    }\n\n    var ref = vnode.componentInstance.$options.model || { prop: 'value' };\n      var prop = ref.prop;\n\n    return function () {\n      return vnode.componentInstance[prop];\n    };\n  }\n\n  switch (el.type) {\n  case 'checkbox': return function () {\n    var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n\n    els = toArray(els).filter(function (el) { return el.checked; });\n    if (!els.length) { return undefined; }\n\n    return els.map(function (checkbox) { return checkbox.value; });\n  };\n  case 'radio': return function () {\n    var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n    var elm = find(els, function (el) { return el.checked; });\n\n    return elm && elm.value;\n  };\n  case 'file': return function (context) {\n    return toArray(el.files);\n  };\n  case 'select-multiple': return function () {\n    return toArray(el.options).filter(function (opt) { return opt.selected; }).map(function (opt) { return opt.value; });\n  };\n  default: return function () {\n    return el && el.value;\n  };\n  }\n};\n\nvar RULES = {};\n\nvar RuleContainer = function RuleContainer () {};\n\nvar staticAccessors = { rules: { configurable: true } };\n\nRuleContainer.add = function add (name, ref) {\n    var validate = ref.validate;\n    var options = ref.options;\n    var paramNames = ref.paramNames;\n\n  RULES[name] = {\n    validate: validate,\n    options: options,\n    paramNames: paramNames\n  };\n};\n\nstaticAccessors.rules.get = function () {\n  return RULES;\n};\n\nRuleContainer.has = function has (name) {\n  return !!RULES[name];\n};\n\nRuleContainer.isImmediate = function isImmediate (name) {\n  return !!(RULES[name] && RULES[name].options.immediate);\n};\n\nRuleContainer.isRequireRule = function isRequireRule (name) {\n  return !!(RULES[name] && RULES[name].options.computesRequired);\n};\n\nRuleContainer.isTargetRule = function isTargetRule (name) {\n  return !!(RULES[name] && RULES[name].options.hasTarget);\n};\n\nRuleContainer.remove = function remove (ruleName) {\n  delete RULES[ruleName];\n};\n\nRuleContainer.getParamNames = function getParamNames (ruleName) {\n  return RULES[ruleName] && RULES[ruleName].paramNames;\n};\n\nRuleContainer.getOptions = function getOptions (ruleName) {\n  return RULES[ruleName] && RULES[ruleName].options;\n};\n\nRuleContainer.getValidatorMethod = function getValidatorMethod (ruleName) {\n  return RULES[ruleName] ? RULES[ruleName].validate : null;\n};\n\nObject.defineProperties( RuleContainer, staticAccessors );\n\n// \n\nvar isEvent = function (evt) {\n  return (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) || (evt && evt.srcElement);\n};\n\nvar normalizeEvents = function (evts) {\n  if (!evts) { return []; }\n\n  return (typeof evts === 'string' ? evts.split('|') : evts);\n};\n\nvar supportsPassive = true;\n\nvar detectPassiveSupport = function () {\n  try {\n    var opts = Object.defineProperty({}, 'passive', {\n      get: function get () {\n        supportsPassive = true;\n      }\n    });\n    window.addEventListener('testPassive', null, opts);\n    window.removeEventListener('testPassive', null, opts);\n  } catch (e) {\n    supportsPassive = false;\n  }\n  return supportsPassive;\n};\n\nvar addEventListener = function (el, eventName, cb) {\n  el.addEventListener(eventName, cb, supportsPassive ? { passive: true } : false);\n};\n\n// \n\nvar DEFAULT_OPTIONS = {\n  targetOf: null,\n  immediate: false,\n  persist: false,\n  scope: null,\n  listen: true,\n  name: null,\n  rules: {},\n  vm: null,\n  classes: false,\n  validity: true,\n  aria: true,\n  events: 'input|blur',\n  delay: 0,\n  classNames: {\n    touched: 'touched', // the control has been blurred\n    untouched: 'untouched', // the control hasn't been blurred\n    valid: 'valid', // model is valid\n    invalid: 'invalid', // model is invalid\n    pristine: 'pristine', // control has not been interacted with\n    dirty: 'dirty' // control has been interacted with\n  }\n};\n\nvar Field = function Field (options) {\n  if ( options === void 0 ) options = {};\n\n  this.id = uniqId();\n  this.el = options.el;\n  this.updated = false;\n  this.vmId = options.vmId;\n  defineNonReactive(this, 'dependencies', []);\n  defineNonReactive(this, 'watchers', []);\n  defineNonReactive(this, 'events', []);\n  this.delay = 0;\n  this.rules = {};\n  this.forceRequired = false;\n  this._cacheId(options);\n  this.classNames = assign({}, DEFAULT_OPTIONS.classNames);\n  options = assign({}, DEFAULT_OPTIONS, options);\n  this._delay = !isNullOrUndefined(options.delay) ? options.delay : 0; // cache initial delay\n  this.validity = options.validity;\n  this.aria = options.aria;\n  this.flags = options.flags || createFlags();\n  defineNonReactive(this, 'vm', options.vm);\n  defineNonReactive(this, 'componentInstance', options.component);\n  this.ctorConfig = this.componentInstance ? getPath('$options.$_veeValidate', this.componentInstance) : undefined;\n  this.update(options);\n  // set initial value.\n  this.initialValue = this.value;\n  this.updated = false;\n};\n\nvar prototypeAccessors$1 = { validator: { configurable: true },isRequired: { configurable: true },isDisabled: { configurable: true },alias: { configurable: true },value: { configurable: true },bails: { configurable: true },rejectsFalse: { configurable: true } };\n\nprototypeAccessors$1.validator.get = function () {\n  if (!this.vm || !this.vm.$validator) {\n    return { validate: function () { return Promise.resolve(true); } };\n  }\n\n  return this.vm.$validator;\n};\n\nprototypeAccessors$1.isRequired.get = function () {\n  return !!this.rules.required || this.forceRequired;\n};\n\nprototypeAccessors$1.isDisabled.get = function () {\n  return !!(this.el && this.el.disabled);\n};\n\n/**\n * Gets the display name (user-friendly name).\n */\nprototypeAccessors$1.alias.get = function () {\n  if (this._alias) {\n    return this._alias;\n  }\n\n  var alias = null;\n  if (this.ctorConfig && this.ctorConfig.alias) {\n    alias = isCallable(this.ctorConfig.alias) ? this.ctorConfig.alias.call(this.componentInstance) : this.ctorConfig.alias;\n  }\n\n  if (!alias && this.el) {\n    alias = getDataAttribute(this.el, 'as');\n  }\n\n  if (!alias && this.componentInstance) {\n    return this.componentInstance.$attrs && this.componentInstance.$attrs['data-vv-as'];\n  }\n\n  return alias;\n};\n\n/**\n * Gets the input value.\n */\n\nprototypeAccessors$1.value.get = function () {\n  if (!isCallable(this.getter)) {\n    return undefined;\n  }\n\n  return this.getter();\n};\n\nprototypeAccessors$1.bails.get = function () {\n  return this._bails;\n};\n\n/**\n * If the field rejects false as a valid value for the required rule.\n */\n\nprototypeAccessors$1.rejectsFalse.get = function () {\n  if (this.componentInstance && this.ctorConfig) {\n    return !!this.ctorConfig.rejectsFalse;\n  }\n\n  if (!this.el) {\n    return false;\n  }\n\n  return this.el.type === 'checkbox';\n};\n\n/**\n * Determines if the instance matches the options provided.\n */\nField.prototype.matches = function matches (options) {\n    var this$1 = this;\n\n  if (!options) {\n    return true;\n  }\n\n  if (options.id) {\n    return this.id === options.id;\n  }\n\n  var matchesComponentId = isNullOrUndefined(options.vmId) ? function () { return true; } : function (id) { return id === this$1.vmId; };\n  if (!matchesComponentId(options.vmId)) {\n    return false;\n  }\n\n  if (options.name === undefined && options.scope === undefined) {\n    return true;\n  }\n\n  if (options.scope === undefined) {\n    return this.name === options.name;\n  }\n\n  if (options.name === undefined) {\n    return this.scope === options.scope;\n  }\n\n  return options.name === this.name && options.scope === this.scope;\n};\n\n/**\n * Caches the field id.\n */\nField.prototype._cacheId = function _cacheId (options) {\n  if (this.el && !options.targetOf) {\n    this.el._veeValidateId = this.id;\n  }\n};\n\n/**\n * Keeps a reference of the most current validation run.\n */\nField.prototype.waitFor = function waitFor (pendingPromise) {\n  this._waitingFor = pendingPromise;\n};\n\nField.prototype.isWaitingFor = function isWaitingFor (promise) {\n  return this._waitingFor === promise;\n};\n\n/**\n * Updates the field with changed data.\n */\nField.prototype.update = function update (options) {\n    var this$1 = this;\n\n  this.targetOf = options.targetOf || null;\n  this.immediate = options.immediate || this.immediate || false;\n  this.persist = options.persist || this.persist || false;\n\n  // update errors scope if the field scope was changed.\n  if (!isNullOrUndefined(options.scope) && options.scope !== this.scope && isCallable(this.validator.update)) {\n    this.validator.update(this.id, { scope: options.scope });\n  }\n  this.scope = !isNullOrUndefined(options.scope) ? options.scope\n    : !isNullOrUndefined(this.scope) ? this.scope : null;\n  this.name = (!isNullOrUndefined(options.name) ? String(options.name) : options.name) || this.name || null;\n  this.rules = options.rules !== undefined ? normalizeRules(options.rules) : this.rules;\n  this._bails = options.bails !== undefined ? options.bails : this._bails;\n  this.model = options.model || this.model;\n  this.listen = options.listen !== undefined ? options.listen : this.listen;\n  this.classes = (options.classes || this.classes || false) && !this.componentInstance;\n  this.classNames = isObject(options.classNames) ? merge(this.classNames, options.classNames) : this.classNames;\n  this.getter = isCallable(options.getter) ? options.getter : this.getter;\n  this._alias = options.alias || this._alias;\n  this.events = (options.events) ? normalizeEvents(options.events) : this.events;\n  this.delay = makeDelayObject(this.events, options.delay || this.delay, this._delay);\n  this.updateDependencies();\n  this.addActionListeners();\n\n  if ( true && !this.name && !this.targetOf) {\n    warn('A field is missing a \"name\" or \"data-vv-name\" attribute');\n  }\n\n  // update required flag flags\n  if (options.rules !== undefined) {\n    this.flags.required = this.isRequired;\n  }\n\n  if (Object.keys(options.rules || {}).length === 0 && this.updated) {\n    var resetFlag = this.flags.validated;\n    this.validator.validate((\"#\" + (this.id))).then(function () {\n      this$1.flags.validated = resetFlag;\n    });\n  }\n\n  // validate if it was validated before and field was updated and there was a rules mutation.\n  if (this.flags.validated && options.rules !== undefined && this.updated) {\n    this.validator.validate((\"#\" + (this.id)));\n  }\n\n  this.updated = true;\n  this.addValueListeners();\n\n  // no need to continue.\n  if (!this.el) {\n    return;\n  }\n  this.updateClasses();\n  this.updateAriaAttrs();\n};\n\n/**\n * Resets field flags and errors.\n */\nField.prototype.reset = function reset () {\n    var this$1 = this;\n\n  if (this._cancellationToken) {\n    this._cancellationToken.cancelled = true;\n    delete this._cancellationToken;\n  }\n\n  var defaults = createFlags();\n  Object.keys(this.flags).filter(function (flag) { return flag !== 'required'; }).forEach(function (flag) {\n    this$1.flags[flag] = defaults[flag];\n  });\n\n  // update initial value\n  this.initialValue = this.value;\n  this.flags.changed = false;\n\n  this.addValueListeners();\n  this.addActionListeners();\n  this.updateClasses(true);\n  this.updateAriaAttrs();\n  this.updateCustomValidity();\n};\n\n/**\n * Sets the flags and their negated counterparts, and updates the classes and re-adds action listeners.\n */\nField.prototype.setFlags = function setFlags (flags) {\n    var this$1 = this;\n\n  var negated = {\n    pristine: 'dirty',\n    dirty: 'pristine',\n    valid: 'invalid',\n    invalid: 'valid',\n    touched: 'untouched',\n    untouched: 'touched'\n  };\n\n  Object.keys(flags).forEach(function (flag) {\n    this$1.flags[flag] = flags[flag];\n    // if it has a negation and was not specified, set it as well.\n    if (negated[flag] && flags[negated[flag]] === undefined) {\n      this$1.flags[negated[flag]] = !flags[flag];\n    }\n  });\n\n  if (\n    flags.untouched !== undefined ||\n    flags.touched !== undefined ||\n    flags.dirty !== undefined ||\n    flags.pristine !== undefined\n  ) {\n    this.addActionListeners();\n  }\n  this.updateClasses();\n  this.updateAriaAttrs();\n  this.updateCustomValidity();\n};\n\n/**\n * Determines if the field requires references to target fields.\n*/\nField.prototype.updateDependencies = function updateDependencies () {\n    var this$1 = this;\n\n  // reset dependencies.\n  this.dependencies.forEach(function (d) { return d.field.destroy(); });\n  this.dependencies = [];\n\n  // we get the selectors for each field.\n  var fields = Object.keys(this.rules).reduce(function (prev, r) {\n    if (RuleContainer.isTargetRule(r)) {\n      prev.push({ selector: this$1.rules[r][0], name: r });\n    }\n\n    return prev;\n  }, []);\n\n  if (!fields.length || !this.vm || !this.vm.$el) { return; }\n\n  // must be contained within the same component, so we use the vm root element constrain our dom search.\n  fields.forEach(function (ref$1) {\n      var selector = ref$1.selector;\n      var name = ref$1.name;\n\n    var ref = this$1.vm.$refs[selector];\n    var el = Array.isArray(ref) ? ref[0] : ref;\n    if (!el) {\n      return;\n    }\n\n    var options = {\n      vm: this$1.vm,\n      classes: this$1.classes,\n      classNames: this$1.classNames,\n      delay: this$1.delay,\n      scope: this$1.scope,\n      events: this$1.events.join('|'),\n      immediate: this$1.immediate,\n      targetOf: this$1.id\n    };\n\n    // probably a component.\n    if (isCallable(el.$watch)) {\n      options.component = el;\n      options.el = el.$el;\n      options.getter = Resolver.resolveGetter(el.$el, el.$vnode);\n    } else {\n      options.el = el;\n      options.getter = Resolver.resolveGetter(el, {});\n    }\n\n    this$1.dependencies.push({ name: name, field: new Field(options) });\n  });\n};\n\n/**\n * Removes listeners.\n */\nField.prototype.unwatch = function unwatch (tag) {\n    if ( tag === void 0 ) tag = null;\n\n  if (!tag) {\n    this.watchers.forEach(function (w) { return w.unwatch(); });\n    this.watchers = [];\n    return;\n  }\n\n  this.watchers.filter(function (w) { return tag.test(w.tag); }).forEach(function (w) { return w.unwatch(); });\n  this.watchers = this.watchers.filter(function (w) { return !tag.test(w.tag); });\n};\n\n/**\n * Updates the element classes depending on each field flag status.\n */\nField.prototype.updateClasses = function updateClasses (isReset) {\n    var this$1 = this;\n    if ( isReset === void 0 ) isReset = false;\n\n  if (!this.classes || this.isDisabled) { return; }\n  var applyClasses = function (el) {\n    toggleClass(el, this$1.classNames.dirty, this$1.flags.dirty);\n    toggleClass(el, this$1.classNames.pristine, this$1.flags.pristine);\n    toggleClass(el, this$1.classNames.touched, this$1.flags.touched);\n    toggleClass(el, this$1.classNames.untouched, this$1.flags.untouched);\n\n    // remove valid/invalid classes on reset.\n    if (isReset) {\n      toggleClass(el, this$1.classNames.valid, false);\n      toggleClass(el, this$1.classNames.invalid, false);\n    }\n\n    // make sure we don't set any classes if the state is undetermined.\n    if (!isNullOrUndefined(this$1.flags.valid) && this$1.flags.validated) {\n      toggleClass(el, this$1.classNames.valid, this$1.flags.valid);\n    }\n\n    if (!isNullOrUndefined(this$1.flags.invalid) && this$1.flags.validated) {\n      toggleClass(el, this$1.classNames.invalid, this$1.flags.invalid);\n    }\n  };\n\n  if (!isCheckboxOrRadioInput(this.el)) {\n    applyClasses(this.el);\n    return;\n  }\n\n  var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n  toArray(els).forEach(applyClasses);\n};\n\n/**\n * Adds the listeners required for automatic classes and some flags.\n */\nField.prototype.addActionListeners = function addActionListeners () {\n    var this$1 = this;\n\n  // remove previous listeners.\n  this.unwatch(/class/);\n\n  if (!this.el) { return; }\n\n  var onBlur = function () {\n    this$1.flags.touched = true;\n    this$1.flags.untouched = false;\n    if (this$1.classes) {\n      toggleClass(this$1.el, this$1.classNames.touched, true);\n      toggleClass(this$1.el, this$1.classNames.untouched, false);\n    }\n\n    // only needed once.\n    this$1.unwatch(/^class_blur$/);\n  };\n\n  var inputEvent = isTextInput(this.el) ? 'input' : 'change';\n  var onInput = function () {\n    this$1.flags.dirty = true;\n    this$1.flags.pristine = false;\n    if (this$1.classes) {\n      toggleClass(this$1.el, this$1.classNames.pristine, false);\n      toggleClass(this$1.el, this$1.classNames.dirty, true);\n    }\n\n    // only needed once.\n    this$1.unwatch(/^class_input$/);\n  };\n\n  if (this.componentInstance && isCallable(this.componentInstance.$once)) {\n    this.componentInstance.$once('input', onInput);\n    this.componentInstance.$once('blur', onBlur);\n    this.watchers.push({\n      tag: 'class_input',\n      unwatch: function () {\n        this$1.componentInstance.$off('input', onInput);\n      }\n    });\n    this.watchers.push({\n      tag: 'class_blur',\n      unwatch: function () {\n        this$1.componentInstance.$off('blur', onBlur);\n      }\n    });\n    return;\n  }\n\n  if (!this.el) { return; }\n\n  addEventListener(this.el, inputEvent, onInput);\n  // Checkboxes and radio buttons on Mac don't emit blur naturally, so we listen on click instead.\n  var blurEvent = isCheckboxOrRadioInput(this.el) ? 'change' : 'blur';\n  addEventListener(this.el, blurEvent, onBlur);\n  this.watchers.push({\n    tag: 'class_input',\n    unwatch: function () {\n      this$1.el.removeEventListener(inputEvent, onInput);\n    }\n  });\n\n  this.watchers.push({\n    tag: 'class_blur',\n    unwatch: function () {\n      this$1.el.removeEventListener(blurEvent, onBlur);\n    }\n  });\n};\n\nField.prototype.checkValueChanged = function checkValueChanged () {\n  // handle some people initialize the value to null, since text inputs have empty string value.\n  if (this.initialValue === null && this.value === '' && isTextInput(this.el)) {\n    return false;\n  }\n\n  return this.value !== this.initialValue;\n};\n\n/**\n * Determines the suitable primary event to listen for.\n */\nField.prototype._determineInputEvent = function _determineInputEvent () {\n  // if its a custom component, use the customized model event or the input event.\n  if (this.componentInstance) {\n    return (this.componentInstance.$options.model && this.componentInstance.$options.model.event) || 'input';\n  }\n\n  if (this.model && this.model.lazy) {\n    return 'change';\n  }\n\n  if (isTextInput(this.el)) {\n    return 'input';\n  }\n\n  return 'change';\n};\n\n/**\n * Determines the list of events to listen to.\n */\nField.prototype._determineEventList = function _determineEventList (defaultInputEvent) {\n    var this$1 = this;\n\n  // if no event is configured, or it is a component or a text input then respect the user choice.\n  if (!this.events.length || this.componentInstance || isTextInput(this.el)) {\n    return [].concat( this.events ).map(function (evt) {\n      if (evt === 'input' && this$1.model && this$1.model.lazy) {\n        return 'change';\n      }\n\n      return evt;\n    });\n  }\n\n  // force suitable event for non-text type fields.\n  return this.events.map(function (e) {\n    if (e === 'input') {\n      return defaultInputEvent;\n    }\n\n    return e;\n  });\n};\n\n/**\n * Adds the listeners required for validation.\n */\nField.prototype.addValueListeners = function addValueListeners () {\n    var this$1 = this;\n\n  this.unwatch(/^input_.+/);\n  if (!this.listen || !this.el) { return; }\n\n  var token = { cancelled: false };\n  var fn = this.targetOf ? function () {\n    var target = this$1.validator._resolveField((\"#\" + (this$1.targetOf)));\n    if (target && target.flags.validated) {\n      this$1.validator.validate((\"#\" + (this$1.targetOf)));\n    }\n  } : function () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n    // if its a DOM event, resolve the value, otherwise use the first parameter as the value.\n    if (args.length === 0 || isEvent(args[0])) {\n      args[0] = this$1.value;\n    }\n\n    this$1.flags.pending = true;\n    this$1._cancellationToken = token;\n    this$1.validator.validate((\"#\" + (this$1.id)), args[0]);\n  };\n\n  var inputEvent = this._determineInputEvent();\n  var events = this._determineEventList(inputEvent);\n\n  // if on input validation is requested.\n  if (includes(events, inputEvent)) {\n    var ctx = null;\n    var expression = null;\n    var watchCtxVm = false;\n    // if its watchable from the context vm.\n    if (this.model && this.model.expression) {\n      ctx = this.vm;\n      expression = this.model.expression;\n      watchCtxVm = true;\n    }\n\n    // watch it from the custom component vm instead.\n    if (!expression && this.componentInstance && this.componentInstance.$options.model) {\n      ctx = this.componentInstance;\n      expression = this.componentInstance.$options.model.prop || 'value';\n    }\n\n    if (ctx && expression) {\n      var debouncedFn = debounce(fn, this.delay[inputEvent], token);\n      var unwatch = ctx.$watch(expression, debouncedFn);\n      this.watchers.push({\n        tag: 'input_model',\n        unwatch: function () {\n          this$1.vm.$nextTick(function () {\n            unwatch();\n          });\n        }\n      });\n\n      // filter out input event when we are watching from the context vm.\n      if (watchCtxVm) {\n        events = events.filter(function (e) { return e !== inputEvent; });\n      }\n    }\n  }\n\n  // Add events.\n  events.forEach(function (e) {\n    var debouncedFn = debounce(fn, this$1.delay[e], token);\n\n    this$1._addComponentEventListener(e, debouncedFn);\n    this$1._addHTMLEventListener(e, debouncedFn);\n  });\n};\n\nField.prototype._addComponentEventListener = function _addComponentEventListener (evt, validate) {\n    var this$1 = this;\n\n  if (!this.componentInstance) { return; }\n\n  this.componentInstance.$on(evt, validate);\n  this.watchers.push({\n    tag: 'input_vue',\n    unwatch: function () {\n      this$1.componentInstance.$off(evt, validate);\n    }\n  });\n};\n\nField.prototype._addHTMLEventListener = function _addHTMLEventListener (evt, validate) {\n    var this$1 = this;\n\n  if (!this.el || this.componentInstance) { return; }\n\n  // listen for the current element.\n  var addListener = function (el) {\n    addEventListener(el, evt, validate);\n    this$1.watchers.push({\n      tag: 'input_native',\n      unwatch: function () {\n        el.removeEventListener(evt, validate);\n      }\n    });\n  };\n\n  addListener(this.el);\n  if (!isCheckboxOrRadioInput(this.el)) {\n    return;\n  }\n\n  var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n  toArray(els).forEach(function (el) {\n    // skip if it is added by v-validate and is not the current element.\n    if (el._veeValidateId && el !== this$1.el) {\n      return;\n    }\n\n    addListener(el);\n  });\n};\n\n/**\n * Updates aria attributes on the element.\n */\nField.prototype.updateAriaAttrs = function updateAriaAttrs () {\n    var this$1 = this;\n\n  if (!this.aria || !this.el || !isCallable(this.el.setAttribute)) { return; }\n\n  var applyAriaAttrs = function (el) {\n    el.setAttribute('aria-required', this$1.isRequired ? 'true' : 'false');\n    el.setAttribute('aria-invalid', this$1.flags.invalid ? 'true' : 'false');\n  };\n\n  if (!isCheckboxOrRadioInput(this.el)) {\n    applyAriaAttrs(this.el);\n    return;\n  }\n\n  var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n  toArray(els).forEach(applyAriaAttrs);\n};\n\n/**\n * Updates the custom validity for the field.\n */\nField.prototype.updateCustomValidity = function updateCustomValidity () {\n  if (!this.validity || !this.el || !isCallable(this.el.setCustomValidity) || !this.validator.errors) { return; }\n\n  this.el.setCustomValidity(this.flags.valid ? '' : (this.validator.errors.firstById(this.id) || ''));\n};\n\n/**\n * Removes all listeners.\n */\nField.prototype.destroy = function destroy () {\n  // ignore the result of any ongoing validation.\n  if (this._cancellationToken) {\n    this._cancellationToken.cancelled = true;\n  }\n\n  this.unwatch();\n  this.dependencies.forEach(function (d) { return d.field.destroy(); });\n  this.dependencies = [];\n};\n\nObject.defineProperties( Field.prototype, prototypeAccessors$1 );\n\n// \n\nvar FieldBag = function FieldBag (items) {\n  if ( items === void 0 ) items = [];\n\n  this.items = items || [];\n  this.itemsById = this.items.reduce(function (itemsById, item) {\n    itemsById[item.id] = item;\n    return itemsById;\n  }, {});\n};\n\nvar prototypeAccessors$2 = { length: { configurable: true } };\n\nFieldBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n    var this$1 = this;\n\n  var index = 0;\n  return {\n    next: function () {\n      return { value: this$1.items[index++], done: index > this$1.items.length };\n    }\n  };\n};\n\n/**\n * Gets the current items length.\n */\n\nprototypeAccessors$2.length.get = function () {\n  return this.items.length;\n};\n\n/**\n * Finds the first field that matches the provided matcher object.\n */\nFieldBag.prototype.find = function find$1 (matcher) {\n  return find(this.items, function (item) { return item.matches(matcher); });\n};\n\n/**\n * Finds the field with the given id, using a plain object as a map to link\n * ids to items faster than by looping over the array and matching.\n */\nFieldBag.prototype.findById = function findById (id) {\n  return this.itemsById[id] || null;\n};\n\n/**\n * Filters the items down to the matched fields.\n */\nFieldBag.prototype.filter = function filter (matcher) {\n  // multiple matchers to be tried.\n  if (Array.isArray(matcher)) {\n    return this.items.filter(function (item) { return matcher.some(function (m) { return item.matches(m); }); });\n  }\n\n  return this.items.filter(function (item) { return item.matches(matcher); });\n};\n\n/**\n * Maps the field items using the mapping function.\n */\nFieldBag.prototype.map = function map (mapper) {\n  return this.items.map(mapper);\n};\n\n/**\n * Finds and removes the first field that matches the provided matcher object, returns the removed item.\n */\nFieldBag.prototype.remove = function remove (matcher) {\n  var item = null;\n  if (matcher instanceof Field) {\n    item = matcher;\n  } else {\n    item = this.find(matcher);\n  }\n\n  if (!item) { return null; }\n\n  var index = this.items.indexOf(item);\n  this.items.splice(index, 1);\n  delete this.itemsById[item.id];\n\n  return item;\n};\n\n/**\n * Adds a field item to the list.\n */\nFieldBag.prototype.push = function push (item) {\n  if (! (item instanceof Field)) {\n    throw createError('FieldBag only accepts instances of Field that has an id defined.');\n  }\n\n  if (!item.id) {\n    throw createError('Field id must be defined.');\n  }\n\n  if (this.findById(item.id)) {\n    throw createError((\"Field with id \" + (item.id) + \" is already added.\"));\n  }\n\n  this.items.push(item);\n  this.itemsById[item.id] = item;\n};\n\nObject.defineProperties( FieldBag.prototype, prototypeAccessors$2 );\n\nvar ScopedValidator = function ScopedValidator (base, vm) {\n  this.id = vm._uid;\n  this._base = base;\n  this._paused = false;\n\n  // create a mirror bag with limited component scope.\n  this.errors = new ErrorBag(base.errors, this.id);\n};\n\nvar prototypeAccessors$3 = { flags: { configurable: true },rules: { configurable: true },fields: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\n\nprototypeAccessors$3.flags.get = function () {\n    var this$1 = this;\n\n  return this._base.fields.items.filter(function (f) { return f.vmId === this$1.id; }).reduce(function (acc, field) {\n    if (field.scope) {\n      if (!acc[(\"$\" + (field.scope))]) {\n        acc[(\"$\" + (field.scope))] = {};\n      }\n\n      acc[(\"$\" + (field.scope))][field.name] = field.flags;\n    }\n\n    acc[field.name] = field.flags;\n\n    return acc;\n  }, {});\n};\n\nprototypeAccessors$3.rules.get = function () {\n  return this._base.rules;\n};\n\nprototypeAccessors$3.fields.get = function () {\n  return new FieldBag(this._base.fields.filter({ vmId: this.id }));\n};\n\nprototypeAccessors$3.dictionary.get = function () {\n  return this._base.dictionary;\n};\n\nprototypeAccessors$3.locale.get = function () {\n  return this._base.locale;\n};\n\nprototypeAccessors$3.locale.set = function (val) {\n  this._base.locale = val;\n};\n\nScopedValidator.prototype.localize = function localize () {\n    var ref;\n\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n  return (ref = this._base).localize.apply(ref, args);\n};\n\nScopedValidator.prototype.update = function update () {\n    var ref;\n\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n  return (ref = this._base).update.apply(ref, args);\n};\n\nScopedValidator.prototype.attach = function attach (opts) {\n  var attachOpts = assign({}, opts, { vmId: this.id });\n\n  return this._base.attach(attachOpts);\n};\n\nScopedValidator.prototype.pause = function pause () {\n  this._paused = true;\n};\n\nScopedValidator.prototype.resume = function resume () {\n  this._paused = false;\n};\n\nScopedValidator.prototype.remove = function remove (ruleName) {\n  return this._base.remove(ruleName);\n};\n\nScopedValidator.prototype.detach = function detach (name, scope) {\n  return this._base.detach(name, scope, this.id);\n};\n\nScopedValidator.prototype.extend = function extend () {\n    var ref;\n\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n  return (ref = this._base).extend.apply(ref, args);\n};\n\nScopedValidator.prototype.validate = function validate (descriptor, value, opts) {\n    if ( opts === void 0 ) opts = {};\n\n  if (this._paused) { return Promise.resolve(true); }\n\n  return this._base.validate(descriptor, value, assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.verify = function verify () {\n    var ref;\n\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n  return (ref = this._base).verify.apply(ref, args);\n};\n\nScopedValidator.prototype.validateAll = function validateAll (values, opts) {\n    if ( opts === void 0 ) opts = {};\n\n  if (this._paused) { return Promise.resolve(true); }\n\n  return this._base.validateAll(values, assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.validateScopes = function validateScopes (opts) {\n    if ( opts === void 0 ) opts = {};\n\n  if (this._paused) { return Promise.resolve(true); }\n\n  return this._base.validateScopes(assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.destroy = function destroy () {\n  delete this.id;\n  delete this._base;\n};\n\nScopedValidator.prototype.reset = function reset (matcher) {\n  return this._base.reset(Object.assign({}, matcher || {}, { vmId: this.id }));\n};\n\nScopedValidator.prototype.flag = function flag () {\n    var ref;\n\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n  return (ref = this._base).flag.apply(ref, args.concat( [this.id] ));\n};\n\nScopedValidator.prototype._resolveField = function _resolveField () {\n    var ref;\n\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n  return (ref = this._base)._resolveField.apply(ref, args);\n};\n\nObject.defineProperties( ScopedValidator.prototype, prototypeAccessors$3 );\n\nvar VALIDATOR = null;\n\nvar getValidator = function () {\n  return VALIDATOR;\n};\n\nvar setValidator = function (value) {\n  VALIDATOR = value;\n\n  return value;\n};\n\n// \n\n/**\n * Checks if a parent validator instance was requested.\n */\nvar requestsValidator = function (injections) {\n  if (isObject(injections) && injections.$validator) {\n    return true;\n  }\n\n  return false;\n};\n\nvar mixin = {\n  provide: function provide () {\n    if (this.$validator && !isBuiltInComponent(this.$vnode)) {\n      return {\n        $validator: this.$validator\n      };\n    }\n\n    return {};\n  },\n  beforeCreate: function beforeCreate () {\n    // if built in do nothing.\n    if (isBuiltInComponent(this.$vnode) || this.$options.$__veeInject === false) {\n      return;\n    }\n\n    // if its a root instance set the config if it exists.\n    if (!this.$parent) {\n      setConfig(this.$options.$_veeValidate || {});\n    }\n\n    var options = resolveConfig(this);\n\n    // if its a root instance, inject anyways, or if it requested a new instance.\n    if (!this.$parent || (this.$options.$_veeValidate && /new/.test(this.$options.$_veeValidate.validator))) {\n      this.$validator = new ScopedValidator(getValidator(), this);\n    }\n\n    var requested = requestsValidator(this.$options.inject);\n\n    // if automatic injection is enabled and no instance was requested.\n    if (! this.$validator && options.inject && !requested) {\n      this.$validator = new ScopedValidator(getValidator(), this);\n    }\n\n    // don't inject errors or fieldBag as no validator was resolved.\n    if (!requested && !this.$validator) {\n      return;\n    }\n\n    // There is a validator but it isn't injected, mark as reactive.\n    if (!requested && this.$validator) {\n      var Vue = this.$options._base; // the vue constructor.\n      Vue.util.defineReactive(this.$validator, 'errors', this.$validator.errors);\n    }\n\n    if (!this.$options.computed) {\n      this.$options.computed = {};\n    }\n\n    this.$options.computed[options.errorBagName || 'errors'] = function errorBagGetter () {\n      return this.$validator.errors;\n    };\n    this.$options.computed[options.fieldsBagName || 'fields'] = function fieldBagGetter () {\n      return this.$validator.fields.items.reduce(function (acc, field) {\n        if (field.scope) {\n          if (!acc[(\"$\" + (field.scope))]) {\n            acc[(\"$\" + (field.scope))] = {};\n          }\n\n          acc[(\"$\" + (field.scope))][field.name] = field.flags;\n\n          return acc;\n        }\n\n        acc[field.name] = field.flags;\n\n        return acc;\n      }, {});\n    };\n  },\n  beforeDestroy: function beforeDestroy () {\n    if (this.$validator && this._uid === this.$validator.id) {\n      this.$validator.errors.clear(); // remove errors generated by this component.\n    }\n  }\n};\n\n// \n\n/**\n * Finds the requested field by id from the context object.\n */\nfunction findField (el, context) {\n  if (!context || !context.$validator) {\n    return null;\n  }\n\n  return context.$validator.fields.findById(el._veeValidateId);\n}\nvar directive = {\n  bind: function bind (el, binding, vnode) {\n    var validator = vnode.context.$validator;\n    if (!validator) {\n      if (true) {\n        warn(\"No validator instance is present on vm, did you forget to inject '$validator'?\");\n      }\n\n      return;\n    }\n\n    var fieldOptions = Resolver.generate(el, binding, vnode);\n    validator.attach(fieldOptions);\n  },\n  inserted: function inserted (el, binding, vnode) {\n    var field = findField(el, vnode.context);\n    var scope = Resolver.resolveScope(el, binding, vnode);\n\n    // skip if scope hasn't changed.\n    if (!field || scope === field.scope) { return; }\n\n    // only update scope.\n    field.update({ scope: scope });\n\n    // allows the field to re-evaluated once more in the update hook.\n    field.updated = false;\n  },\n  update: function update (el, binding, vnode) {\n    var field = findField(el, vnode.context);\n\n    // make sure we don't do unneccasary work if no important change was done.\n    if (!field || (field.updated && isEqual(binding.value, binding.oldValue))) { return; }\n    var scope = Resolver.resolveScope(el, binding, vnode);\n    var rules = Resolver.resolveRules(el, binding, vnode);\n\n    field.update({\n      scope: scope,\n      rules: rules\n    });\n  },\n  unbind: function unbind (el, binding, ref) {\n    var context = ref.context;\n\n    var field = findField(el, context);\n    if (!field) { return; }\n\n    context.$validator.detach(field);\n  }\n};\n\n// \n\nvar Validator = function Validator (validations, options, pluginContainer) {\n  if ( options === void 0 ) options = { fastExit: true };\n  if ( pluginContainer === void 0 ) pluginContainer = null;\n\n  this.errors = new ErrorBag();\n  this.fields = new FieldBag();\n  this._createFields(validations);\n  this.paused = false;\n  this.fastExit = !isNullOrUndefined(options && options.fastExit) ? options.fastExit : true;\n  this.$vee = pluginContainer || {\n    _vm: {\n      $nextTick: function (cb) { return isCallable(cb) ? cb() : Promise.resolve(); },\n      $emit: function () {},\n      $off: function () {}\n    }\n  };\n};\n\nvar prototypeAccessors$4 = { rules: { configurable: true },dictionary: { configurable: true },flags: { configurable: true },locale: { configurable: true } };\nvar staticAccessors$1 = { rules: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\n\n/**\n * @deprecated\n */\nstaticAccessors$1.rules.get = function () {\n  if (true) {\n    warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n  }\n\n  return RuleContainer.rules;\n};\n\n/**\n * @deprecated\n */\nprototypeAccessors$4.rules.get = function () {\n  if (true) {\n    warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n  }\n\n  return RuleContainer.rules;\n};\n\nprototypeAccessors$4.dictionary.get = function () {\n  return DictionaryResolver.getDriver();\n};\n\nstaticAccessors$1.dictionary.get = function () {\n  return DictionaryResolver.getDriver();\n};\n\nprototypeAccessors$4.flags.get = function () {\n  return this.fields.items.reduce(function (acc, field) {\n      var obj;\n\n    if (field.scope) {\n      acc[(\"$\" + (field.scope))] = ( obj = {}, obj[field.name] = field.flags, obj );\n\n      return acc;\n    }\n\n    acc[field.name] = field.flags;\n\n    return acc;\n  }, {});\n};\n\n/**\n * Getter for the current locale.\n */\nprototypeAccessors$4.locale.get = function () {\n  return Validator.locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nprototypeAccessors$4.locale.set = function (value) {\n  Validator.locale = value;\n};\n\nstaticAccessors$1.locale.get = function () {\n  return DictionaryResolver.getDriver().locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nstaticAccessors$1.locale.set = function (value) {\n  var hasChanged = value !== DictionaryResolver.getDriver().locale;\n  DictionaryResolver.getDriver().locale = value;\n  if (hasChanged && Validator.$vee && Validator.$vee._vm) {\n    Validator.$vee._vm.$emit('localeChanged');\n  }\n};\n\n/**\n * Static constructor.\n * @deprecated\n */\nValidator.create = function create (validations, options) {\n  if (true) {\n    warn('Please use `new` to create new validator instances.');\n  }\n\n  return new Validator(validations, options);\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.extend = function extend (name, validator, options) {\n    if ( options === void 0 ) options = {};\n\n  Validator._guardExtend(name, validator);\n  // rules imported from the minimal bundle\n  // will have the options embedded in them\n  var mergedOpts = validator.options || {};\n  Validator._merge(name, {\n    validator: validator,\n    paramNames: (options && options.paramNames) || validator.paramNames,\n    options: assign({ hasTarget: false, immediate: true }, mergedOpts, options || {})\n  });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.remove = function remove (name) {\n  if (true) {\n    warn('this method will be deprecated, you can still override your rules with `extend`');\n  }\n\n  RuleContainer.remove(name);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n*/\nValidator.prototype.localize = function localize (lang, dictionary) {\n  Validator.localize(lang, dictionary);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n */\nValidator.localize = function localize (lang, dictionary) {\n    var obj;\n\n  if (isObject(lang)) {\n    DictionaryResolver.getDriver().merge(lang);\n    return;\n  }\n\n  // merge the dictionary.\n  if (dictionary) {\n    var locale = lang || dictionary.name;\n    dictionary = assign({}, dictionary);\n    DictionaryResolver.getDriver().merge(( obj = {}, obj[locale] = dictionary, obj ));\n  }\n\n  if (lang) {\n    // set the locale.\n    Validator.locale = lang;\n  }\n};\n\n/**\n * Registers a field to be validated.\n */\nValidator.prototype.attach = function attach (fieldOpts) {\n    var this$1 = this;\n\n  // We search for a field with the same name & scope, having persist enabled\n  var oldFieldMatcher = { name: fieldOpts.name, scope: fieldOpts.scope, persist: true };\n  var oldField = fieldOpts.persist ? this.fields.find(oldFieldMatcher) : null;\n\n  if (oldField) {\n    // We keep the flags of the old field, then we remove its instance\n    fieldOpts.flags = oldField.flags;\n    oldField.destroy();\n    this.fields.remove(oldField);\n  }\n\n  // fixes initial value detection with v-model and select elements.\n  var value = fieldOpts.initialValue;\n  var field = new Field(fieldOpts);\n  this.fields.push(field);\n\n  // validate the field initially\n  if (field.immediate) {\n    this.$vee._vm.$nextTick(function () { return this$1.validate((\"#\" + (field.id)), value || field.value, { vmId: fieldOpts.vmId }); });\n  } else {\n    this._validate(field, value || field.value, { initial: true }).then(function (result) {\n      field.flags.valid = result.valid;\n      field.flags.invalid = !result.valid;\n    });\n  }\n\n  return field;\n};\n\n/**\n * Sets the flags on a field.\n */\nValidator.prototype.flag = function flag (name, flags, uid) {\n    if ( uid === void 0 ) uid = null;\n\n  var field = this._resolveField(name, undefined, uid);\n  if (!field || !flags) {\n    return;\n  }\n\n  field.setFlags(flags);\n};\n\n/**\n * Removes a field from the validator.\n */\nValidator.prototype.detach = function detach (name, scope, uid) {\n  var field = isCallable(name.destroy) ? name : this._resolveField(name, scope, uid);\n  if (!field) { return; }\n\n  // We destroy/remove the field & error instances if it's not a `persist` one\n  if (!field.persist) {\n    field.destroy();\n    this.errors.remove(field.name, field.scope, field.vmId);\n    this.fields.remove(field);\n  }\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.prototype.extend = function extend (name, validator, options) {\n    if ( options === void 0 ) options = {};\n\n  Validator.extend(name, validator, options);\n};\n\nValidator.prototype.reset = function reset (matcher) {\n    var this$1 = this;\n\n  // two ticks\n  return this.$vee._vm.$nextTick().then(function () {\n    return this$1.$vee._vm.$nextTick();\n  }).then(function () {\n    this$1.fields.filter(matcher).forEach(function (field) {\n      field.waitFor(null);\n      field.reset(); // reset field flags.\n      this$1.errors.remove(field.name, field.scope, matcher && matcher.vmId);\n    });\n  });\n};\n\n/**\n * Updates a field, updating both errors and flags.\n */\nValidator.prototype.update = function update (id, ref) {\n    var scope = ref.scope;\n\n  var field = this._resolveField((\"#\" + id));\n  if (!field) { return; }\n\n  // remove old scope.\n  this.errors.update(id, { scope: scope });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.prototype.remove = function remove (name) {\n  Validator.remove(name);\n};\n\n/**\n * Validates a value against a registered field validations.\n */\nValidator.prototype.validate = function validate (fieldDescriptor, value, ref) {\n    var this$1 = this;\n    if ( ref === void 0 ) ref = {};\n    var silent = ref.silent;\n    var vmId = ref.vmId;\n\n  if (this.paused) { return Promise.resolve(true); }\n\n  // overload to validate all.\n  if (isNullOrUndefined(fieldDescriptor)) {\n    return this.validateScopes({ silent: silent, vmId: vmId });\n  }\n\n  // overload to validate scope-less fields.\n  if (fieldDescriptor === '*') {\n    return this.validateAll(undefined, { silent: silent, vmId: vmId });\n  }\n\n  // if scope validation was requested.\n  if (/^(.+)\\.\\*$/.test(fieldDescriptor)) {\n    var matched = fieldDescriptor.match(/^(.+)\\.\\*$/)[1];\n    return this.validateAll(matched);\n  }\n\n  var field = this._resolveField(fieldDescriptor);\n  if (!field) {\n    return this._handleFieldNotFound(fieldDescriptor);\n  }\n\n  if (!silent) { field.flags.pending = true; }\n  if (value === undefined) {\n    value = field.value;\n  }\n\n  var validationPromise = this._validate(field, value);\n  field.waitFor(validationPromise);\n\n  return validationPromise.then(function (result) {\n    if (!silent && field.isWaitingFor(validationPromise)) {\n      // allow next validation to mutate the state.\n      field.waitFor(null);\n      this$1._handleValidationResults([result], vmId);\n    }\n\n    return result.valid;\n  });\n};\n\n/**\n * Pauses the validator.\n */\nValidator.prototype.pause = function pause () {\n  this.paused = true;\n\n  return this;\n};\n\n/**\n * Resumes the validator.\n */\nValidator.prototype.resume = function resume () {\n  this.paused = false;\n\n  return this;\n};\n\n/**\n * Validates each value against the corresponding field validations.\n */\nValidator.prototype.validateAll = function validateAll (values, ref) {\n    var this$1 = this;\n    if ( ref === void 0 ) ref = {};\n    var silent = ref.silent;\n    var vmId = ref.vmId;\n\n  if (this.paused) { return Promise.resolve(true); }\n\n  var matcher = null;\n  var providedValues = false;\n\n  if (typeof values === 'string') {\n    matcher = { scope: values, vmId: vmId };\n  } else if (isObject(values)) {\n    matcher = Object.keys(values).map(function (key) {\n      return { name: key, vmId: vmId, scope: null };\n    });\n    providedValues = true;\n  } else if (Array.isArray(values)) {\n    matcher = values.map(function (key) {\n      return typeof key === 'object' ? Object.assign({ vmId: vmId }, key) : { name: key, vmId: vmId };\n    });\n  } else {\n    matcher = { scope: null, vmId: vmId };\n  }\n\n  return Promise.all(\n    this.fields.filter(matcher).map(function (field) { return this$1._validate(field, providedValues ? values[field.name] : field.value); })\n  ).then(function (results) {\n    if (!silent) {\n      this$1._handleValidationResults(results, vmId);\n    }\n\n    return results.every(function (t) { return t.valid; });\n  });\n};\n\n/**\n * Validates all scopes.\n */\nValidator.prototype.validateScopes = function validateScopes (ref) {\n    var this$1 = this;\n    if ( ref === void 0 ) ref = {};\n    var silent = ref.silent;\n    var vmId = ref.vmId;\n\n  if (this.paused) { return Promise.resolve(true); }\n\n  return Promise.all(\n    this.fields.filter({ vmId: vmId }).map(function (field) { return this$1._validate(field, field.value); })\n  ).then(function (results) {\n    if (!silent) {\n      this$1._handleValidationResults(results, vmId);\n    }\n\n    return results.every(function (t) { return t.valid; });\n  });\n};\n\n/**\n * Validates a value against the rules.\n */\nValidator.prototype.verify = function verify (value, rules, options) {\n    if ( options === void 0 ) options = {};\n\n  var field = {\n    name: (options && options.name) || '{field}',\n    rules: normalizeRules(rules),\n    bails: getPath('bails', options, true),\n    forceRequired: false,\n    get isRequired () {\n      return !!this.rules.required || this.forceRequired;\n    }\n  };\n\n  var targetRules = Object.keys(field.rules).filter(RuleContainer.isTargetRule);\n  if (targetRules.length && options && isObject(options.values)) {\n    field.dependencies = targetRules.map(function (rule) {\n      var ref = field.rules[rule];\n        var targetKey = ref[0];\n\n      return {\n        name: rule,\n        field: { value: options.values[targetKey] }\n      };\n    });\n  }\n\n  return this._validate(field, value).then(function (result) {\n    var errors = [];\n    var ruleMap = {};\n    result.errors.forEach(function (e) {\n      errors.push(e.msg);\n      ruleMap[e.rule] = e.msg;\n    });\n\n    return {\n      valid: result.valid,\n      errors: errors,\n      failedRules: ruleMap\n    };\n  });\n};\n\n/**\n * Perform cleanup.\n */\nValidator.prototype.destroy = function destroy () {\n  this.$vee._vm.$off('localeChanged');\n};\n\n/**\n * Creates the fields to be validated.\n */\nValidator.prototype._createFields = function _createFields (validations) {\n    var this$1 = this;\n\n  if (!validations) { return; }\n\n  Object.keys(validations).forEach(function (field) {\n    var options = assign({}, { name: field, rules: validations[field] });\n    this$1.attach(options);\n  });\n};\n\n/**\n * Date rules need the existence of a format, so date_format must be supplied.\n */\nValidator.prototype._getDateFormat = function _getDateFormat (validations) {\n  var format = null;\n  if (validations.date_format && Array.isArray(validations.date_format)) {\n    format = validations.date_format[0];\n  }\n\n  return format || DictionaryResolver.getDriver().getDateFormat(this.locale);\n};\n\n/**\n * Formats an error message for field and a rule.\n */\nValidator.prototype._formatErrorMessage = function _formatErrorMessage (field, rule, data, targetName) {\n    if ( data === void 0 ) data = {};\n    if ( targetName === void 0 ) targetName = null;\n\n  var name = this._getFieldDisplayName(field);\n  var params = this._getLocalizedParams(rule, targetName);\n\n  return DictionaryResolver.getDriver().getFieldMessage(this.locale, field.name, rule.name, [name, params, data]);\n};\n\n/**\n * We need to convert any object param to an array format since the locales do not handle params as objects yet.\n */\nValidator.prototype._convertParamObjectToArray = function _convertParamObjectToArray (obj, ruleName) {\n  if (Array.isArray(obj)) {\n    return obj;\n  }\n\n  var paramNames = RuleContainer.getParamNames(ruleName);\n  if (!paramNames || !isObject(obj)) {\n    return obj;\n  }\n\n  return paramNames.reduce(function (prev, paramName) {\n    if (paramName in obj) {\n      prev.push(obj[paramName]);\n    }\n\n    return prev;\n  }, []);\n};\n\n/**\n * Translates the parameters passed to the rule (mainly for target fields).\n */\nValidator.prototype._getLocalizedParams = function _getLocalizedParams (rule, targetName) {\n    if ( targetName === void 0 ) targetName = null;\n\n  var params = this._convertParamObjectToArray(rule.params, rule.name);\n  if (rule.options.hasTarget && params && params[0]) {\n    var localizedName = targetName || DictionaryResolver.getDriver().getAttribute(this.locale, params[0], params[0]);\n    return [localizedName].concat(params.slice(1));\n  }\n\n  return params;\n};\n\n/**\n * Resolves an appropriate display name, first checking 'data-as' or the registered 'prettyName'\n */\nValidator.prototype._getFieldDisplayName = function _getFieldDisplayName (field) {\n  return field.alias || DictionaryResolver.getDriver().getAttribute(this.locale, field.name, field.name);\n};\n\n/**\n * Converts an array of params to an object with named properties.\n * Only works if the rule is configured with a paramNames array.\n * Returns the same params if it cannot convert it.\n */\nValidator.prototype._convertParamArrayToObj = function _convertParamArrayToObj (params, ruleName) {\n  var paramNames = RuleContainer.getParamNames(ruleName);\n  if (!paramNames) {\n    return params;\n  }\n\n  if (isObject(params)) {\n    // check if the object is either a config object or a single parameter that is an object.\n    var hasKeys = paramNames.some(function (name) { return Object.keys(params).indexOf(name) !== -1; });\n    // if it has some of the keys, return it as is.\n    if (hasKeys) {\n      return params;\n    }\n    // otherwise wrap the object in an array.\n    params = [params];\n  }\n\n  // Reduce the paramsNames to a param object.\n  return params.reduce(function (prev, value, idx) {\n    prev[paramNames[idx]] = value;\n\n    return prev;\n  }, {});\n};\n\n/**\n * Tests a single input value against a rule.\n */\nValidator.prototype._test = function _test (field, value, rule) {\n    var this$1 = this;\n\n  var validator = RuleContainer.getValidatorMethod(rule.name);\n  var params = Array.isArray(rule.params) ? toArray(rule.params) : rule.params;\n  if (!params) {\n    params = [];\n  }\n\n  var targetName = null;\n  if (!validator || typeof validator !== 'function') {\n    return Promise.reject(createError((\"No such validator '\" + (rule.name) + \"' exists.\")));\n  }\n\n  // has field dependencies.\n  if (rule.options.hasTarget && field.dependencies) {\n    var target = find(field.dependencies, function (d) { return d.name === rule.name; });\n    if (target) {\n      targetName = target.field.alias;\n      params = [target.field.value].concat(params.slice(1));\n    }\n  } else if (rule.name === 'required' && field.rejectsFalse) {\n    // invalidate false if no args were specified and the field rejects false by default.\n    params = params.length ? params : [true];\n  }\n\n  if (rule.options.isDate) {\n    var dateFormat = this._getDateFormat(field.rules);\n    if (rule.name !== 'date_format') {\n      params.push(dateFormat);\n    }\n  }\n\n  var result = validator(value, this._convertParamArrayToObj(params, rule.name));\n\n  // If it is a promise.\n  if (isCallable(result.then)) {\n    return result.then(function (values) {\n      var allValid = true;\n      var data = {};\n      if (Array.isArray(values)) {\n        allValid = values.every(function (t) { return (isObject(t) ? t.valid : t); });\n      } else { // Is a single object/boolean.\n        allValid = isObject(values) ? values.valid : values;\n        data = values.data;\n      }\n\n      return {\n        valid: allValid,\n        data: result.data,\n        errors: allValid ? [] : [this$1._createFieldError(field, rule, data, targetName)]\n      };\n    });\n  }\n\n  if (!isObject(result)) {\n    result = { valid: result, data: {} };\n  }\n\n  return {\n    valid: result.valid,\n    data: result.data,\n    errors: result.valid ? [] : [this._createFieldError(field, rule, result.data, targetName)]\n  };\n};\n\n/**\n * Merges a validator object into the RULES and Messages.\n */\nValidator._merge = function _merge (name, ref) {\n    var validator = ref.validator;\n    var options = ref.options;\n    var paramNames = ref.paramNames;\n\n  var validate = isCallable(validator) ? validator : validator.validate;\n  if (validator.getMessage) {\n    DictionaryResolver.getDriver().setMessage(Validator.locale, name, validator.getMessage);\n  }\n\n  RuleContainer.add(name, {\n    validate: validate,\n    options: options,\n    paramNames: paramNames\n  });\n};\n\n/**\n * Guards from extension violations.\n */\nValidator._guardExtend = function _guardExtend (name, validator) {\n  if (isCallable(validator)) {\n    return;\n  }\n\n  if (!isCallable(validator.validate)) {\n    throw createError(\n      (\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\")\n    );\n  }\n};\n\n/**\n * Creates a Field Error Object.\n */\nValidator.prototype._createFieldError = function _createFieldError (field, rule, data, targetName) {\n    var this$1 = this;\n\n  return {\n    id: field.id,\n    vmId: field.vmId,\n    field: field.name,\n    msg: this._formatErrorMessage(field, rule, data, targetName),\n    rule: rule.name,\n    scope: field.scope,\n    regenerate: function () {\n      return this$1._formatErrorMessage(field, rule, data, targetName);\n    }\n  };\n};\n\n/**\n * Tries different strategies to find a field.\n */\nValidator.prototype._resolveField = function _resolveField (name, scope, uid) {\n  if (name[0] === '#') {\n    return this.fields.findById(name.slice(1));\n  }\n\n  if (!isNullOrUndefined(scope)) {\n    return this.fields.find({ name: name, scope: scope, vmId: uid });\n  }\n\n  if (includes(name, '.')) {\n    var ref = name.split('.');\n      var fieldScope = ref[0];\n      var fieldName = ref.slice(1);\n    var field = this.fields.find({ name: fieldName.join('.'), scope: fieldScope, vmId: uid });\n    if (field) {\n      return field;\n    }\n  }\n\n  return this.fields.find({ name: name, scope: null, vmId: uid });\n};\n\n/**\n * Handles when a field is not found.\n */\nValidator.prototype._handleFieldNotFound = function _handleFieldNotFound (name, scope) {\n  var fullName = isNullOrUndefined(scope) ? name : (\"\" + (!isNullOrUndefined(scope) ? scope + '.' : '') + name);\n\n  return Promise.reject(createError(\n    (\"Validating a non-existent field: \\\"\" + fullName + \"\\\". Use \\\"attach()\\\" first.\")\n  ));\n};\n\n/**\n * Handles validation results.\n */\nValidator.prototype._handleValidationResults = function _handleValidationResults (results, vmId) {\n    var this$1 = this;\n\n  var matchers = results.map(function (result) { return ({ id: result.id }); });\n  this.errors.removeById(matchers.map(function (m) { return m.id; }));\n  // remove by name and scope to remove any custom errors added.\n  results.forEach(function (result) {\n    this$1.errors.remove(result.field, result.scope, vmId);\n  });\n  var allErrors = results.reduce(function (prev, curr) {\n    prev.push.apply(prev, curr.errors);\n\n    return prev;\n  }, []);\n\n  this.errors.add(allErrors);\n\n  // handle flags.\n  this.fields.filter(matchers).forEach(function (field) {\n    var result = find(results, function (r) { return r.id === field.id; });\n    field.setFlags({\n      pending: false,\n      valid: result.valid,\n      validated: true\n    });\n  });\n};\n\nValidator.prototype._shouldSkip = function _shouldSkip (field, value) {\n  // field is configured to run through the pipeline regardless\n  if (field.bails === false) {\n    return false;\n  }\n\n  // disabled fields are skipped if useConstraintAttrs is enabled in config\n  if (field.isDisabled && getConfig().useConstraintAttrs) {\n    return true;\n  }\n\n  // skip if the field is not required and has an empty value.\n  return !field.isRequired && (isNullOrUndefined(value) || value === '' || isEmptyArray(value));\n};\n\nValidator.prototype._shouldBail = function _shouldBail (field) {\n  // if the field was configured explicitly.\n  if (field.bails !== undefined) {\n    return field.bails;\n  }\n\n  return this.fastExit;\n};\n\n/**\n * Starts the validation process.\n */\nValidator.prototype._validate = function _validate (field, value, ref) {\n    var this$1 = this;\n    if ( ref === void 0 ) ref = {};\n    var initial = ref.initial;\n\n  var requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\n\n  field.forceRequired = false;\n  requireRules.forEach(function (rule) {\n    var ruleOptions = RuleContainer.getOptions(rule);\n    var result = this$1._test(field, value, { name: rule, params: field.rules[rule], options: ruleOptions });\n\n    if (isCallable(result.then)) { throw createError('Require rules cannot be async'); }\n    if (!isObject(result)) { throw createError('Require rules has to return an object (see docs)'); }\n\n    if (result.data.required === true) {\n      field.forceRequired = true;\n    }\n  });\n\n  if (this._shouldSkip(field, value)) {\n    return Promise.resolve({ valid: true, id: field.id, field: field.name, scope: field.scope, errors: [] });\n  }\n\n  var promises = [];\n  var errors = [];\n  var isExitEarly = false;\n  if (isCallable(field.checkValueChanged)) {\n    field.flags.changed = field.checkValueChanged();\n  }\n\n  // use of '.some()' is to break iteration in middle by returning true\n  Object.keys(field.rules).filter(function (rule) {\n    if (!initial || !RuleContainer.has(rule)) { return true; }\n\n    return RuleContainer.isImmediate(rule);\n  }).some(function (rule) {\n    var ruleOptions = RuleContainer.getOptions(rule);\n    var result = this$1._test(field, value, { name: rule, params: field.rules[rule], options: ruleOptions });\n    if (isCallable(result.then)) {\n      promises.push(result);\n    } else if (!result.valid && this$1._shouldBail(field)) {\n      errors.push.apply(errors, result.errors);\n      isExitEarly = true;\n    } else {\n      // promisify the result.\n      promises.push(new Promise(function (resolve) { return resolve(result); }));\n    }\n\n    return isExitEarly;\n  });\n\n  if (isExitEarly) {\n    return Promise.resolve({ valid: false, errors: errors, id: field.id, field: field.name, scope: field.scope });\n  }\n\n  return Promise.all(promises).then(function (results) {\n    return results.reduce(function (prev, v) {\n        var ref;\n\n      if (!v.valid) {\n        (ref = prev.errors).push.apply(ref, v.errors);\n      }\n\n      prev.valid = prev.valid && v.valid;\n\n      return prev;\n    }, { valid: true, errors: errors, id: field.id, field: field.name, scope: field.scope });\n  });\n};\n\nObject.defineProperties( Validator.prototype, prototypeAccessors$4 );\nObject.defineProperties( Validator, staticAccessors$1 );\n\n// \n\nvar normalizeValue = function (value) {\n  if (isObject(value)) {\n    return Object.keys(value).reduce(function (prev, key) {\n      prev[key] = normalizeValue(value[key]);\n\n      return prev;\n    }, {});\n  }\n\n  if (isCallable(value)) {\n    return value('{0}', ['{1}', '{2}', '{3}']);\n  }\n\n  return value;\n};\n\nvar normalizeFormat = function (locale) {\n  // normalize messages\n  var dictionary = {};\n  if (locale.messages) {\n    dictionary.messages = normalizeValue(locale.messages);\n  }\n\n  if (locale.custom) {\n    dictionary.custom = normalizeValue(locale.custom);\n  }\n\n  if (locale.attributes) {\n    dictionary.attributes = locale.attributes;\n  }\n\n  if (!isNullOrUndefined(locale.dateFormat)) {\n    dictionary.dateFormat = locale.dateFormat;\n  }\n\n  return dictionary;\n};\n\nvar I18nDictionary = function I18nDictionary (i18n, rootKey) {\n  this.i18n = i18n;\n  this.rootKey = rootKey;\n};\n\nvar prototypeAccessors$5 = { locale: { configurable: true } };\n\nprototypeAccessors$5.locale.get = function () {\n  return this.i18n.locale;\n};\n\nprototypeAccessors$5.locale.set = function (value) {\n  warn('Cannot set locale from the validator when using vue-i18n, use i18n.locale setter instead');\n};\n\nI18nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n  return this.i18n.getDateTimeFormat(locale || this.locale);\n};\n\nI18nDictionary.prototype.setDateFormat = function setDateFormat (locale, value) {\n  this.i18n.setDateTimeFormat(locale || this.locale, value);\n};\n\nI18nDictionary.prototype.getMessage = function getMessage (_, key, data) {\n  var path = (this.rootKey) + \".messages.\" + key;\n  var dataOptions = data;\n\n  if (Array.isArray(data)) {\n    dataOptions = [].concat.apply([], data);\n  }\n\n  if (this.i18n.te(path)) {\n    return this.i18n.t(path, dataOptions);\n  }\n\n  // fallback to the fallback message\n  if (this.i18n.te(path, this.i18n.fallbackLocale)) {\n    return this.i18n.t(path, this.i18n.fallbackLocale, dataOptions);\n  }\n\n  // fallback to the root message\n  return this.i18n.t(((this.rootKey) + \".messages._default\"), dataOptions);\n};\n\nI18nDictionary.prototype.getAttribute = function getAttribute (_, key, fallback) {\n    if ( fallback === void 0 ) fallback = '';\n\n  var path = (this.rootKey) + \".attributes.\" + key;\n  if (this.i18n.te(path)) {\n    return this.i18n.t(path);\n  }\n\n  return fallback;\n};\n\nI18nDictionary.prototype.getFieldMessage = function getFieldMessage (_, field, key, data) {\n  var path = (this.rootKey) + \".custom.\" + field + \".\" + key;\n  if (this.i18n.te(path)) {\n    return this.i18n.t(path, data);\n  }\n\n  return this.getMessage(_, key, data);\n};\n\nI18nDictionary.prototype.merge = function merge$1 (dictionary) {\n    var this$1 = this;\n\n  Object.keys(dictionary).forEach(function (localeKey) {\n      var obj;\n\n    // i18n doesn't deep merge\n    // first clone the existing locale (avoid mutations to locale)\n    var clone = merge({}, getPath((localeKey + \".\" + (this$1.rootKey)), this$1.i18n.messages, {}));\n    // Merge cloned locale with new one\n    var locale = merge(clone, normalizeFormat(dictionary[localeKey]));\n    this$1.i18n.mergeLocaleMessage(localeKey, ( obj = {}, obj[this$1.rootKey] = locale, obj ));\n    if (locale.dateFormat) {\n      this$1.i18n.setDateTimeFormat(localeKey, locale.dateFormat);\n    }\n  });\n};\n\nI18nDictionary.prototype.setMessage = function setMessage (locale, key, value) {\n    var obj, obj$1;\n\n  this.merge(( obj$1 = {}, obj$1[locale] = {\n      messages: ( obj = {}, obj[key] = value, obj )\n    }, obj$1 ));\n};\n\nI18nDictionary.prototype.setAttribute = function setAttribute (locale, key, value) {\n    var obj, obj$1;\n\n  this.merge(( obj$1 = {}, obj$1[locale] = {\n      attributes: ( obj = {}, obj[key] = value, obj )\n    }, obj$1 ));\n};\n\nObject.defineProperties( I18nDictionary.prototype, prototypeAccessors$5 );\n\nvar aggressive = function () { return ({\n  on: ['input']\n}); };\n\nvar lazy = function () { return ({\n  on: ['change']\n}); };\n\nvar eager = function (ref) {\n  var errors = ref.errors;\n\n  if (errors.length) {\n    return {\n      on: ['input']\n    };\n  }\n\n  return {\n    on: ['change', 'blur']\n  };\n};\n\nvar passive = function () { return ({\n  on: []\n}); };\n\nvar modes = {\n  aggressive: aggressive,\n  eager: eager,\n  passive: passive,\n  lazy: lazy\n};\n\n// \n\nvar Vue;\nvar pendingPlugins;\nvar pluginInstance;\n\nvar VeeValidate$1 = function VeeValidate (config, _Vue) {\n  this.configure(config);\n  pluginInstance = this;\n  if (_Vue) {\n    Vue = _Vue;\n  }\n  this._validator = setValidator(\n    new Validator(null, { fastExit: config && config.fastExit }, this)\n  );\n  this._initVM(this.config);\n  this._initI18n(this.config);\n};\n\nvar prototypeAccessors$6 = { i18nDriver: { configurable: true },config: { configurable: true } };\nvar staticAccessors$2 = { i18nDriver: { configurable: true },config: { configurable: true } };\n\nVeeValidate$1.setI18nDriver = function setI18nDriver (driver, instance) {\n  DictionaryResolver.setDriver(driver, instance);\n};\n\nVeeValidate$1.configure = function configure (cfg) {\n  setConfig(cfg);\n};\n\nVeeValidate$1.setMode = function setMode (mode, implementation) {\n  setConfig({ mode: mode });\n  if (!implementation) {\n    return;\n  }\n\n  if (!isCallable(implementation)) {\n    throw new Error('A mode implementation must be a function');\n  }\n\n  modes[mode] = implementation;\n};\n\nVeeValidate$1.use = function use (plugin, options) {\n    if ( options === void 0 ) options = {};\n\n  if (!isCallable(plugin)) {\n    return warn('The plugin must be a callable function');\n  }\n\n  // Don't install plugins until vee-validate is installed.\n  if (!pluginInstance) {\n    if (!pendingPlugins) {\n      pendingPlugins = [];\n    }\n    pendingPlugins.push({ plugin: plugin, options: options });\n    return;\n  }\n\n  plugin({ Validator: Validator, ErrorBag: ErrorBag, Rules: Validator.rules }, options);\n};\nVeeValidate$1.install = function install (_Vue, opts) {\n  if (Vue && _Vue === Vue) {\n    if (true) {\n      warn('already installed, Vue.use(VeeValidate) should only be called once.');\n    }\n    return;\n  }\n\n  Vue = _Vue;\n  pluginInstance = new VeeValidate$1(opts);\n  // inject the plugin container statically into the validator class\n  Validator.$vee = pluginInstance;\n\n  detectPassiveSupport();\n\n  Vue.mixin(mixin);\n  Vue.directive('validate', directive);\n  if (pendingPlugins) {\n    pendingPlugins.forEach(function (ref) {\n        var plugin = ref.plugin;\n        var options = ref.options;\n\n      VeeValidate$1.use(plugin, options);\n    });\n    pendingPlugins = null;\n  }\n};\n\nprototypeAccessors$6.i18nDriver.get = function () {\n  return DictionaryResolver.getDriver();\n};\n\nstaticAccessors$2.i18nDriver.get = function () {\n  return DictionaryResolver.getDriver();\n};\n\nprototypeAccessors$6.config.get = function () {\n  return getConfig();\n};\n\nstaticAccessors$2.config.get = function () {\n  return getConfig();\n};\n\nVeeValidate$1.prototype._initVM = function _initVM (config) {\n    var this$1 = this;\n\n  this._vm = new Vue({\n    data: function () { return ({\n      errors: this$1._validator.errors,\n      fields: this$1._validator.fields\n    }); }\n  });\n};\n\nVeeValidate$1.prototype._initI18n = function _initI18n (config) {\n    var this$1 = this;\n\n  var dictionary = config.dictionary;\n    var i18n = config.i18n;\n    var i18nRootKey = config.i18nRootKey;\n    var locale = config.locale;\n  var onLocaleChanged = function () {\n    if (dictionary) {\n      this$1.i18nDriver.merge(dictionary);\n    }\n\n    this$1._validator.errors.regenerate();\n  };\n\n  // i18 is being used for localization.\n  if (i18n) {\n    VeeValidate$1.setI18nDriver('i18n', new I18nDictionary(i18n, i18nRootKey));\n    i18n._vm.$watch('locale', onLocaleChanged);\n  } else if (typeof window !== 'undefined') {\n    this._vm.$on('localeChanged', onLocaleChanged);\n  }\n\n  if (dictionary) {\n    this.i18nDriver.merge(dictionary);\n  }\n\n  if (locale && !i18n) {\n    this._validator.localize(locale);\n  }\n};\n\nVeeValidate$1.prototype.configure = function configure (cfg) {\n  setConfig(cfg);\n};\n\nObject.defineProperties( VeeValidate$1.prototype, prototypeAccessors$6 );\nObject.defineProperties( VeeValidate$1, staticAccessors$2 );\n\nVeeValidate$1.mixin = mixin;\nVeeValidate$1.directive = directive;\nVeeValidate$1.Validator = Validator;\nVeeValidate$1.ErrorBag = ErrorBag;\n\n/**\n * Formates file size.\n *\n * @param {Number|String} size\n */\nvar formatFileSize = function (size) {\n  var units = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n  var threshold = 1024;\n  size = Number(size) * threshold;\n  var i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(threshold));\n  return (((size / Math.pow(threshold, i)).toFixed(2) * 1) + \" \" + (units[i]));\n};\n\n/**\n * Checks if vee-validate is defined globally.\n */\nvar isDefinedGlobally = function () {\n  return typeof VeeValidate !== 'undefined';\n};\n\nvar obj;\n\nvar messages = {\n  _default: function (field) { return (\"The \" + field + \" value is not valid\"); },\n  after: function (field, ref) {\n    var target = ref[0];\n    var inclusion = ref[1];\n\n    return (\"The \" + field + \" must be after \" + (inclusion ? 'or equal to ' : '') + target);\n},\n  alpha: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters\"); },\n  alpha_dash: function (field) { return (\"The \" + field + \" field may contain alpha-numeric characters as well as dashes and underscores\"); },\n  alpha_num: function (field) { return (\"The \" + field + \" field may only contain alpha-numeric characters\"); },\n  alpha_spaces: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters as well as spaces\"); },\n  before: function (field, ref) {\n    var target = ref[0];\n    var inclusion = ref[1];\n\n    return (\"The \" + field + \" must be before \" + (inclusion ? 'or equal to ' : '') + target);\n},\n  between: function (field, ref) {\n    var min = ref[0];\n    var max = ref[1];\n\n    return (\"The \" + field + \" field must be between \" + min + \" and \" + max);\n},\n  confirmed: function (field) { return (\"The \" + field + \" confirmation does not match\"); },\n  credit_card: function (field) { return (\"The \" + field + \" field is invalid\"); },\n  date_between: function (field, ref) {\n    var min = ref[0];\n    var max = ref[1];\n\n    return (\"The \" + field + \" must be between \" + min + \" and \" + max);\n},\n  date_format: function (field, ref) {\n    var format = ref[0];\n\n    return (\"The \" + field + \" must be in the format \" + format);\n},\n  decimal: function (field, ref) {\n    if ( ref === void 0 ) ref = [];\n    var decimals = ref[0]; if ( decimals === void 0 ) decimals = '*';\n\n    return (\"The \" + field + \" field must be numeric and may contain\" + (!decimals || decimals === '*' ? '' : ' ' + decimals) + \" decimal points\");\n},\n  digits: function (field, ref) {\n    var length = ref[0];\n\n    return (\"The \" + field + \" field must be numeric and contains exactly \" + length + \" digits\");\n},\n  dimensions: function (field, ref) {\n    var width = ref[0];\n    var height = ref[1];\n\n    return (\"The \" + field + \" field must be \" + width + \" pixels by \" + height + \" pixels\");\n},\n  email: function (field) { return (\"The \" + field + \" field must be a valid email\"); },\n  excluded: function (field) { return (\"The \" + field + \" field must be a valid value\"); },\n  ext: function (field) { return (\"The \" + field + \" field must be a valid file\"); },\n  image: function (field) { return (\"The \" + field + \" field must be an image\"); },\n  included: function (field) { return (\"The \" + field + \" field must be a valid value\"); },\n  integer: function (field) { return (\"The \" + field + \" field must be an integer\"); },\n  ip: function (field) { return (\"The \" + field + \" field must be a valid ip address\"); },\n  ip_or_fqdn: function (field) { return (\"The \" + field + \" field must be a valid ip address or FQDN\"); },\n  length: function (field, ref) {\n    var length = ref[0];\n    var max = ref[1];\n\n    if (max) {\n      return (\"The \" + field + \" length must be between \" + length + \" and \" + max);\n    }\n\n    return (\"The \" + field + \" length must be \" + length);\n  },\n  max: function (field, ref) {\n    var length = ref[0];\n\n    return (\"The \" + field + \" field may not be greater than \" + length + \" characters\");\n},\n  max_value: function (field, ref) {\n    var max = ref[0];\n\n    return (\"The \" + field + \" field must be \" + max + \" or less\");\n},\n  mimes: function (field) { return (\"The \" + field + \" field must have a valid file type\"); },\n  min: function (field, ref) {\n    var length = ref[0];\n\n    return (\"The \" + field + \" field must be at least \" + length + \" characters\");\n},\n  min_value: function (field, ref) {\n    var min = ref[0];\n\n    return (\"The \" + field + \" field must be \" + min + \" or more\");\n},\n  numeric: function (field) { return (\"The \" + field + \" field may only contain numeric characters\"); },\n  regex: function (field) { return (\"The \" + field + \" field format is invalid\"); },\n  required: function (field) { return (\"The \" + field + \" field is required\"); },\n  required_if: function (field, ref) {\n    var target = ref[0];\n\n    return (\"The \" + field + \" field is required when the \" + target + \" field has this value\");\n},\n  size: function (field, ref) {\n    var size = ref[0];\n\n    return (\"The \" + field + \" size must be less than \" + (formatFileSize(size)));\n},\n  url: function (field) { return (\"The \" + field + \" field is not a valid URL\"); }\n};\n\nvar locale = {\n  name: 'en',\n  messages: messages,\n  attributes: {}\n};\n\nif (isDefinedGlobally()) {\n  // eslint-disable-next-line\n  VeeValidate.Validator.localize(( obj = {}, obj[locale.name] = locale, obj ));\n}\n\nfunction toInteger (dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds (dirtyDate) {\n  var date = new Date(dirtyDate.getTime());\n  var baseTimezoneOffset = date.getTimezoneOffset();\n  date.setSeconds(0, 0);\n  var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n\n  return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE$1 = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\n\nvar patterns = {\n  dateTimeDelimeter: /[T ]/,\n  plainTime: /:/,\n  timeZoneDelimeter: /[Z ]/i,\n\n  // year tokens\n  YY: /^(\\d{2})$/,\n  YYY: [\n    /^([+-]\\d{2})$/, // 0 additional digits\n    /^([+-]\\d{3})$/, // 1 additional digit\n    /^([+-]\\d{4})$/ // 2 additional digits\n  ],\n  YYYY: /^(\\d{4})/,\n  YYYYY: [\n    /^([+-]\\d{4})/, // 0 additional digits\n    /^([+-]\\d{5})/, // 1 additional digit\n    /^([+-]\\d{6})/ // 2 additional digits\n  ],\n\n  // date tokens\n  MM: /^-(\\d{2})$/,\n  DDD: /^-?(\\d{3})$/,\n  MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n  Www: /^-?W(\\d{2})$/,\n  WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n  HH: /^(\\d{2}([.,]\\d*)?)$/,\n  HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n  HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n  // timezone tokens\n  timezone: /([Z+-].*)$/,\n  timezoneZ: /^(Z)$/,\n  timezoneHH: /^([+-])(\\d{2})$/,\n  timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n};\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction toDate (argument, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  if (argument === null) {\n    return new Date(NaN)\n  }\n\n  var options = dirtyOptions || {};\n\n  var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2')\n  }\n\n  // Clone the date\n  if (argument instanceof Date ||\n    (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n  ) {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime())\n  } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n    return new Date(argument)\n  } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n    return new Date(NaN)\n  }\n\n  var dateStrings = splitDateString(argument);\n\n  var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n  var year = parseYearResult.year;\n  var restDateString = parseYearResult.restDateString;\n\n  var date = parseDate(restDateString, year);\n\n  if (isNaN(date)) {\n    return new Date(NaN)\n  }\n\n  if (date) {\n    var timestamp = date.getTime();\n    var time = 0;\n    var offset;\n\n    if (dateStrings.time) {\n      time = parseTime(dateStrings.time);\n\n      if (isNaN(time)) {\n        return new Date(NaN)\n      }\n    }\n\n    if (dateStrings.timezone) {\n      offset = parseTimezone(dateStrings.timezone);\n      if (isNaN(offset)) {\n        return new Date(NaN)\n      }\n    } else {\n      // get offset accurate to hour in timezones that change offset\n      offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n      offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n    }\n\n    return new Date(timestamp + time + offset)\n  } else {\n    return new Date(NaN)\n  }\n}\n\nfunction splitDateString (dateString) {\n  var dateStrings = {};\n  var array = dateString.split(patterns.dateTimeDelimeter);\n  var timeString;\n\n  if (patterns.plainTime.test(array[0])) {\n    dateStrings.date = null;\n    timeString = array[0];\n  } else {\n    dateStrings.date = array[0];\n    timeString = array[1];\n    if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n      dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0];\n      timeString = dateString.substr(dateStrings.date.length, dateString.length);\n    }\n  }\n\n  if (timeString) {\n    var token = patterns.timezone.exec(timeString);\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], '');\n      dateStrings.timezone = token[1];\n    } else {\n      dateStrings.time = timeString;\n    }\n  }\n\n  return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n  var patternYYY = patterns.YYY[additionalDigits];\n  var patternYYYYY = patterns.YYYYY[additionalDigits];\n\n  var token;\n\n  // YYYY or ±YYYYY\n  token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n  if (token) {\n    var yearString = token[1];\n    return {\n      year: parseInt(yearString, 10),\n      restDateString: dateString.slice(yearString.length)\n    }\n  }\n\n  // YY or ±YYY\n  token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n  if (token) {\n    var centuryString = token[1];\n    return {\n      year: parseInt(centuryString, 10) * 100,\n      restDateString: dateString.slice(centuryString.length)\n    }\n  }\n\n  // Invalid ISO-formatted year\n  return {\n    year: null\n  }\n}\n\nfunction parseDate (dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) {\n    return null\n  }\n\n  var token;\n  var date;\n  var month;\n  var week;\n\n  // YYYY\n  if (dateString.length === 0) {\n    date = new Date(0);\n    date.setUTCFullYear(year);\n    return date\n  }\n\n  // YYYY-MM\n  token = patterns.MM.exec(dateString);\n  if (token) {\n    date = new Date(0);\n    month = parseInt(token[1], 10) - 1;\n\n    if (!validateDate(year, month)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month);\n    return date\n  }\n\n  // YYYY-DDD or YYYYDDD\n  token = patterns.DDD.exec(dateString);\n  if (token) {\n    date = new Date(0);\n    var dayOfYear = parseInt(token[1], 10);\n\n    if (!validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, 0, dayOfYear);\n    return date\n  }\n\n  // YYYY-MM-DD or YYYYMMDD\n  token = patterns.MMDD.exec(dateString);\n  if (token) {\n    date = new Date(0);\n    month = parseInt(token[1], 10) - 1;\n    var day = parseInt(token[2], 10);\n\n    if (!validateDate(year, month, day)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month, day);\n    return date\n  }\n\n  // YYYY-Www or YYYYWww\n  token = patterns.Www.exec(dateString);\n  if (token) {\n    week = parseInt(token[1], 10) - 1;\n\n    if (!validateWeekDate(year, week)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week)\n  }\n\n  // YYYY-Www-D or YYYYWwwD\n  token = patterns.WwwD.exec(dateString);\n  if (token) {\n    week = parseInt(token[1], 10) - 1;\n    var dayOfWeek = parseInt(token[2], 10) - 1;\n\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week, dayOfWeek)\n  }\n\n  // Invalid ISO-formatted date\n  return null\n}\n\nfunction parseTime (timeString) {\n  var token;\n  var hours;\n  var minutes;\n\n  // hh\n  token = patterns.HH.exec(timeString);\n  if (token) {\n    hours = parseFloat(token[1].replace(',', '.'));\n\n    if (!validateTime(hours)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR\n  }\n\n  // hh:mm or hhmm\n  token = patterns.HHMM.exec(timeString);\n  if (token) {\n    hours = parseInt(token[1], 10);\n    minutes = parseFloat(token[2].replace(',', '.'));\n\n    if (!validateTime(hours, minutes)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR +\n      minutes * MILLISECONDS_IN_MINUTE$1\n  }\n\n  // hh:mm:ss or hhmmss\n  token = patterns.HHMMSS.exec(timeString);\n  if (token) {\n    hours = parseInt(token[1], 10);\n    minutes = parseInt(token[2], 10);\n    var seconds = parseFloat(token[3].replace(',', '.'));\n\n    if (!validateTime(hours, minutes, seconds)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR +\n      minutes * MILLISECONDS_IN_MINUTE$1 +\n      seconds * 1000\n  }\n\n  // Invalid ISO-formatted time\n  return null\n}\n\nfunction parseTimezone (timezoneString) {\n  var token;\n  var absoluteOffset;\n\n  // Z\n  token = patterns.timezoneZ.exec(timezoneString);\n  if (token) {\n    return 0\n  }\n\n  var hours;\n\n  // ±hh\n  token = patterns.timezoneHH.exec(timezoneString);\n  if (token) {\n    hours = parseInt(token[2], 10);\n\n    if (!validateTimezone()) {\n      return NaN\n    }\n\n    absoluteOffset = hours * MILLISECONDS_IN_HOUR;\n    return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n  }\n\n  // ±hh:mm or ±hhmm\n  token = patterns.timezoneHHMM.exec(timezoneString);\n  if (token) {\n    hours = parseInt(token[2], 10);\n    var minutes = parseInt(token[3], 10);\n\n    if (!validateTimezone(hours, minutes)) {\n      return NaN\n    }\n\n    absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1;\n    return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n  }\n\n  return 0\n}\n\nfunction dayOfISOWeekYear (isoWeekYear, week, day) {\n  week = week || 0;\n  day = day || 0;\n  var date = new Date(0);\n  date.setUTCFullYear(isoWeekYear, 0, 4);\n  var fourthOfJanuaryDay = date.getUTCDay() || 7;\n  var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex (year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate (year, month, date) {\n  if (month < 0 || month > 11) {\n    return false\n  }\n\n  if (date != null) {\n    if (date < 1) {\n      return false\n    }\n\n    var isLeapYear = isLeapYearIndex(year);\n    if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n      return false\n    }\n    if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n      return false\n    }\n  }\n\n  return true\n}\n\nfunction validateDayOfYearDate (year, dayOfYear) {\n  if (dayOfYear < 1) {\n    return false\n  }\n\n  var isLeapYear = isLeapYearIndex(year);\n  if (isLeapYear && dayOfYear > 366) {\n    return false\n  }\n  if (!isLeapYear && dayOfYear > 365) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateWeekDate (year, week, day) {\n  if (week < 0 || week > 52) {\n    return false\n  }\n\n  if (day != null && (day < 0 || day > 6)) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateTime (hours, minutes, seconds) {\n  if (hours != null && (hours < 0 || hours >= 25)) {\n    return false\n  }\n\n  if (minutes != null && (minutes < 0 || minutes >= 60)) {\n    return false\n  }\n\n  if (seconds != null && (seconds < 0 || seconds >= 60)) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateTimezone (hours, minutes) {\n  if (minutes != null && (minutes < 0 || minutes > 59)) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n  }\n\n  var timestamp = toDate(dirtyDate, dirtyOptions).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount)\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  return !isNaN(date)\n}\n\nvar formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n\n  halfAMinute: 'half a minute',\n\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\n\nfunction formatDistance (token, count, options) {\n  options = options || {};\n\n  var result;\n  if (typeof formatDistanceLocale[token] === 'string') {\n    result = formatDistanceLocale[token];\n  } else if (count === 1) {\n    result = formatDistanceLocale[token].one;\n  } else {\n    result = formatDistanceLocale[token].other.replace('{{count}}', count);\n  }\n\n  if (options.addSuffix) {\n    if (options.comparison > 0) {\n      return 'in ' + result\n    } else {\n      return result + ' ago'\n    }\n  }\n\n  return result\n}\n\nfunction buildFormatLongFn (args) {\n  return function (dirtyOptions) {\n    var options = dirtyOptions || {};\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format\n  }\n}\n\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\n\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\n\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\n\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\n\nvar formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\n\nfunction formatRelative (token, date, baseDate, options) {\n  return formatRelativeLocale[token]\n}\n\nfunction buildLocalizeFn (args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var context = options.context ? String(options.context) : 'standalone';\n\n    var valuesArray;\n    if (context === 'formatting' && args.formattingValues) {\n      valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth];\n    } else {\n      valuesArray = args.values[width] || args.values[args.defaultWidth];\n    }\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    return valuesArray[index]\n  }\n}\n\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\n\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\n\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\n\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n  var number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`:\n  //\n  //   var options = dirtyOptions || {}\n  //   var unit = String(options.unit)\n  //\n  // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'\n\n  var rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st'\n      case 2:\n        return number + 'nd'\n      case 3:\n        return number + 'rd'\n    }\n  }\n  return number + 'th'\n}\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return Number(quarter) - 1\n    }\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaulFormattingWidth: 'wide'\n  })\n};\n\nfunction buildMatchPatternFn (args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) {\n      return null\n    }\n    var matchedString = matchResult[0];\n\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) {\n      return null\n    }\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    }\n  }\n}\n\nfunction buildMatchFn (args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var width = options.width;\n\n    var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null\n    }\n    var matchedString = matchResult[0];\n\n    var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth];\n\n    var value;\n    if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n      value = parsePatterns.findIndex(function (pattern) {\n        return pattern.test(string)\n      });\n    } else {\n      value = findKey(parsePatterns, function (pattern) {\n        return pattern.test(string)\n      });\n    }\n\n    value = args.valueCallback ? args.valueCallback(value) : value;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    }\n  }\n}\n\nfunction findKey (object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key\n    }\n  }\n}\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\n\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\n\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\n\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\n\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\n\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\n\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value, 10)\n    }\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1\n    }\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale$1 = {\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\n\nvar MILLISECONDS_IN_DAY = 86400000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCDayOfYear (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var weekStartsOn = 1;\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var year = date.getUTCFullYear();\n\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions);\n\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year\n  } else {\n    return year - 1\n  }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var year = getUTCISOWeekYear(dirtyDate, dirtyOptions);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions);\n  return date\n}\n\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeek (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeek (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n  }\n\n  var date = toDate(dirtyDate, options);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeekYear (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var year = date.getUTCFullYear();\n\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale &&\n    locale.options &&\n    locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate =\n    localeFirstWeekContainsDate == null\n      ? 1\n      : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate =\n    options.firstWeekContainsDate == null\n      ? defaultFirstWeekContainsDate\n      : toInteger(options.firstWeekContainsDate);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year\n  } else {\n    return year - 1\n  }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale &&\n    locale.options &&\n    locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate =\n    localeFirstWeekContainsDate == null\n      ? 1\n      : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate =\n    options.firstWeekContainsDate == null\n      ? defaultFirstWeekContainsDate\n      : toInteger(options.firstWeekContainsDate);\n\n  var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, dirtyOptions);\n  return date\n}\n\nvar MILLISECONDS_IN_WEEK$1 = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeek (dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var diff = startOfUTCWeek(date, dirtyOptions).getTime() - startOfUTCWeekYear(date, dirtyOptions).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1\n}\n\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function (date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {width: 'abbreviated'})\n      // A, B\n      case 'GGGGG':\n        return localize.era(era, {width: 'narrow'})\n      // Anno Domini, Before Christ\n      case 'GGGG':\n      default:\n        return localize.era(era, {width: 'wide'})\n    }\n  },\n\n  // Year\n  y: function (date, token, localize, options) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    var signedYear = date.getUTCFullYear();\n\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n\n    // Two digit year\n    if (token === 'yy') {\n      var twoDigitYear = year % 100;\n      return addLeadingZeros(twoDigitYear, 2)\n    }\n\n    // Ordinal number\n    if (token === 'yo') {\n      return localize.ordinalNumber(year, {unit: 'year'})\n    }\n\n    // Padding\n    return addLeadingZeros(year, token.length)\n  },\n\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options);\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2)\n    }\n\n    // Ordinal number\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {unit: 'year'})\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length)\n  },\n\n  // ISO week-numbering year\n  R: function (date, token, localize, options) {\n    var isoWeekYear = getUTCISOWeekYear(date, options);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length)\n  },\n\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token, localize, options) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length)\n  },\n\n  // Quarter\n  Q: function (date, token, localize, options) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter)\n      // 01, 02, 03, 04\n      case 'QQ':\n        return addLeadingZeros(quarter, 2)\n      // 1st, 2nd, 3rd, 4th\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {unit: 'quarter'})\n      // Q1, Q2, Q3, Q4\n      case 'QQQ':\n        return localize.quarter(quarter, {width: 'abbreviated', context: 'formatting'})\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'QQQQQ':\n        return localize.quarter(quarter, {width: 'narrow', context: 'formatting'})\n      // 1st quarter, 2nd quarter, ...\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {width: 'wide', context: 'formatting'})\n    }\n  },\n\n  // Stand-alone quarter\n  q: function (date, token, localize, options) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter)\n      // 01, 02, 03, 04\n      case 'qq':\n        return addLeadingZeros(quarter, 2)\n      // 1st, 2nd, 3rd, 4th\n      case 'qo':\n        return localize.ordinalNumber(quarter, {unit: 'quarter'})\n      // Q1, Q2, Q3, Q4\n      case 'qqq':\n        return localize.quarter(quarter, {width: 'abbreviated', context: 'standalone'})\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'qqqqq':\n        return localize.quarter(quarter, {width: 'narrow', context: 'standalone'})\n      // 1st quarter, 2nd quarter, ...\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {width: 'wide', context: 'standalone'})\n    }\n  },\n\n  // Month\n  M: function (date, token, localize, options) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'M':\n        return String(month + 1)\n      // 01, 02, ..., 12\n      case 'MM':\n        return addLeadingZeros(month + 1, 2)\n      // 1st, 2nd, ..., 12th\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {unit: 'month'})\n      // Jan, Feb, ..., Dec\n      case 'MMM':\n        return localize.month(month, {width: 'abbreviated', context: 'formatting'})\n      // J, F, ..., D\n      case 'MMMMM':\n        return localize.month(month, {width: 'narrow', context: 'formatting'})\n      // January, February, ..., December\n      case 'MMMM':\n      default:\n        return localize.month(month, {width: 'wide', context: 'formatting'})\n    }\n  },\n\n  // Stand-alone month\n  L: function (date, token, localize, options) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1)\n      // 01, 02, ..., 12\n      case 'LL':\n        return addLeadingZeros(month + 1, 2)\n      // 1st, 2nd, ..., 12th\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {unit: 'month'})\n      // Jan, Feb, ..., Dec\n      case 'LLL':\n        return localize.month(month, {width: 'abbreviated', context: 'standalone'})\n      // J, F, ..., D\n      case 'LLLLL':\n        return localize.month(month, {width: 'narrow', context: 'standalone'})\n      // January, February, ..., December\n      case 'LLLL':\n      default:\n        return localize.month(month, {width: 'wide', context: 'standalone'})\n    }\n  },\n\n  // Local week of year\n  w: function (date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {unit: 'week'})\n    }\n\n    return addLeadingZeros(week, token.length)\n  },\n\n  // ISO week of year\n  I: function (date, token, localize, options) {\n    var isoWeek = getUTCISOWeek(date, options);\n\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {unit: 'week'})\n    }\n\n    return addLeadingZeros(isoWeek, token.length)\n  },\n\n  // Day of the month\n  d: function (date, token, localize, options) {\n    var dayOfMonth = date.getUTCDate();\n\n    if (token === 'do') {\n      return localize.ordinalNumber(dayOfMonth, {unit: 'date'})\n    }\n\n    return addLeadingZeros(dayOfMonth, token.length)\n  },\n\n  // Day of year\n  D: function (date, token, localize, options) {\n    var dayOfYear = getUTCDayOfYear(date, options);\n\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {unit: 'dayOfYear'})\n    }\n\n    return addLeadingZeros(dayOfYear, token.length)\n  },\n\n  // Day of week\n  E: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n      // T\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n      // Tu\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n      // Tuesday\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n    }\n  },\n\n  // Local day of week\n  e: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek)\n      // Padded numerical value\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2)\n      // 1st, 2nd, ..., 7th\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n      case 'eee':\n        return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n      // T\n      case 'eeeee':\n        return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n      // Tu\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n      // Tuesday\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n    }\n  },\n\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek)\n      // Padded numberical value\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length)\n      // 1st, 2nd, ..., 7th\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n      case 'ccc':\n        return localize.day(dayOfWeek, {width: 'abbreviated', context: 'standalone'})\n      // T\n      case 'ccccc':\n        return localize.day(dayOfWeek, {width: 'narrow', context: 'standalone'})\n      // Tu\n      case 'cccccc':\n        return localize.day(dayOfWeek, {width: 'short', context: 'standalone'})\n      // Tuesday\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {width: 'wide', context: 'standalone'})\n    }\n  },\n\n  // ISO day of week\n  i: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek)\n      // 02\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length)\n      // 2nd\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {unit: 'day'})\n      // Tue\n      case 'iii':\n        return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n      // T\n      case 'iiiii':\n        return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n      // Tu\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n      // Tuesday\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n    }\n  },\n\n  // AM or PM\n  a: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n    }\n  },\n\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n    }\n\n    switch (token) {\n      case 'b':\n      case 'bb':\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n    }\n  },\n\n  // Hour [1-12]\n  h: function (date, token, localize, options) {\n    var hours = date.getUTCHours() % 12;\n\n    if (hours === 0) {\n      hours = 12;\n    }\n\n    if (token === 'ho') {\n      return localize.ordinalNumber(hours, {unit: 'hour'})\n    }\n\n    return addLeadingZeros(hours, token.length)\n  },\n\n  // Hour [0-23]\n  H: function (date, token, localize, options) {\n    var hours = date.getUTCHours();\n\n    if (token === 'Ho') {\n      return localize.ordinalNumber(hours, {unit: 'hour'})\n    }\n\n    return addLeadingZeros(hours, token.length)\n  },\n\n  // Hour [0-11]\n  K: function (date, token, localize, options) {\n    var hours = date.getUTCHours() % 12;\n\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {unit: 'hour'})\n    }\n\n    return addLeadingZeros(hours, token.length)\n  },\n\n  // Hour [1-24]\n  k: function (date, token, localize, options) {\n    var hours = date.getUTCHours();\n\n    if (hours === 0) {\n      hours = 24;\n    }\n\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {unit: 'hour'})\n    }\n\n    return addLeadingZeros(hours, token.length)\n  },\n\n  // Minute\n  m: function (date, token, localize, options) {\n    var minutes = date.getUTCMinutes();\n\n    if (token === 'mo') {\n      return localize.ordinalNumber(minutes, {unit: 'minute'})\n    }\n\n    return addLeadingZeros(minutes, token.length)\n  },\n\n  // Second\n  s: function (date, token, localize, options) {\n    var seconds = date.getUTCSeconds();\n\n    if (token === 'so') {\n      return localize.ordinalNumber(seconds, {unit: 'second'})\n    }\n\n    return addLeadingZeros(seconds, token.length)\n  },\n\n  // Fraction of second\n  S: function (date, token, localize, options) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, numberOfDigits)\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return 'Z'\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n      // Hours, minutes and optional seconds without `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX': // Hours and minutes without `:` delimeter\n        return formatTimezone(timezoneOffset)\n\n      // Hours, minutes and optional seconds with `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimeter\n      default:\n        return formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n      // Hours, minutes and optional seconds without `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx': // Hours and minutes without `:` delimeter\n        return formatTimezone(timezoneOffset)\n\n      // Hours, minutes and optional seconds with `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimeter\n      default:\n        return formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n      // Long\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Seconds timestamp\n  t: function (date, token, localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length)\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length)\n  }\n};\n\nfunction addLeadingZeros (number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n  return sign + output\n}\n\nfunction formatTimezone (offset, dirtyDelimeter) {\n  var delimeter = dirtyDelimeter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes (offset, dirtyDelimeter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n  }\n  return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort (offset, dirtyDelimeter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours)\n  }\n  var delimeter = dirtyDelimeter || '';\n  return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction dateLongFormatter (pattern, formatLong, options) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({width: 'short'})\n    case 'PP':\n      return formatLong.date({width: 'medium'})\n    case 'PPP':\n      return formatLong.date({width: 'long'})\n    case 'PPPP':\n    default:\n      return formatLong.date({width: 'full'})\n  }\n}\n\nfunction timeLongFormatter (pattern, formatLong, options) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({width: 'short'})\n    case 'pp':\n      return formatLong.time({width: 'medium'})\n    case 'ppp':\n      return formatLong.time({width: 'long'})\n    case 'pppp':\n    default:\n      return formatLong.time({width: 'full'})\n  }\n}\n\nfunction dateTimeLongFormatter (pattern, formatLong, options) {\n  var matchResult = pattern.match(/(P+)(p+)?/);\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong)\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({width: 'short'});\n      break\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({width: 'medium'});\n      break\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({width: 'long'});\n      break\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({width: 'full'});\n      break\n  }\n\n  return dateTimeFormat\n    .replace('{{date}}', dateLongFormatter(datePattern, formatLong))\n    .replace('{{time}}', timeLongFormatter(timePattern, formatLong))\n}\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n  }\n\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount, dirtyOptions)\n}\n\nvar protectedTokens = ['D', 'DD', 'YY', 'YYYY'];\n\nfunction isProtectedToken(token) {\n  return protectedTokens.indexOf(token) !== -1\n}\n\nfunction throwProtectedError(token) {\n  throw new RangeError(\n    '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n      token +\n      '` token; see: https://git.io/fxCyr'\n  )\n}\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 8     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 8     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Su            | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          | a..aaa  | AM, PM                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 1, 2, ..., 11, 0                  |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 0001, ..., 999               |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 05/29/1453                        | 7     |\n * |                                 | PP      | May 29, 1453                      | 7     |\n * |                                 | PPP     | May 29th, 1453                    | 7     |\n * |                                 | PPPP    | Sunday, May 29th, 1453            | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 05/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | May 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | May 29th, 1453 at ...             | 7     |\n * |                                 | PPPPpppp| Sunday, May 29th, 1453 at ...     | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n *   - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n *   - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n *   See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n *   new Date(2014, 1, 11),\n *   'MM/dd/yyyy'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n *   new Date(2014, 6, 2),\n *   \"do 'de' MMMM yyyy\",\n *   {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(\n *   new Date(2014, 6, 2, 15),\n *   \"h 'o''clock'\"\n * )\n * //=> \"3 o'clock\"\n */\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError(\n      '2 arguments required, but only ' + arguments.length + ' present'\n    )\n  }\n\n  var formatStr = String(dirtyFormatStr);\n  var options = dirtyOptions || {};\n\n  var locale = options.locale || locale$1;\n\n  var localeFirstWeekContainsDate =\n    locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate =\n    localeFirstWeekContainsDate == null\n      ? 1\n      : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate =\n    options.firstWeekContainsDate == null\n      ? defaultFirstWeekContainsDate\n      : toInteger(options.firstWeekContainsDate);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError(\n      'firstWeekContainsDate must be between 1 and 7 inclusively'\n    )\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn =\n    localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn =\n    options.weekStartsOn == null\n      ? defaultWeekStartsOn\n      : toInteger(options.weekStartsOn);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n  }\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property')\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property')\n  }\n\n  var originalDate = toDate(dirtyDate, options);\n\n  if (!isValid(originalDate, options)) {\n    return 'Invalid Date'\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset, options);\n\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n\n  var result = formatStr\n    .match(longFormattingTokensRegExp)\n    .map(function(substring) {\n      var firstCharacter = substring[0];\n      if (firstCharacter === 'p' || firstCharacter === 'P') {\n        var longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong, formatterOptions)\n      }\n      return substring\n    })\n    .join('')\n    .match(formattingTokensRegExp)\n    .map(function(substring) {\n      // Replace two single quote characters with one single quote character\n      if (substring === \"''\") {\n        return \"'\"\n      }\n\n      var firstCharacter = substring[0];\n      if (firstCharacter === \"'\") {\n        return cleanEscapedString(substring)\n      }\n\n      var formatter = formatters[firstCharacter];\n      if (formatter) {\n        if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n          throwProtectedError(substring);\n        }\n        return formatter(utcDate, substring, locale.localize, formatterOptions)\n      }\n\n      return substring\n    })\n    .join('');\n\n  return result\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n  return date.getTime() > dateToCompare.getTime()\n}\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n  return date.getTime() < dateToCompare.getTime()\n}\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n *   new Date(2014, 6, 2, 6, 30, 45, 0)\n *   new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual$1 (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n  }\n\n  var dateLeft = toDate(dirtyLeftDate, dirtyOptions);\n  var dateRight = toDate(dirtyRightDate, dirtyOptions);\n  return dateLeft.getTime() === dateRight.getTime()\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n  }\n\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var day = toInteger(dirtyDay);\n\n  var currentDay = date.getUTCDay();\n\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var week = toInteger(dirtyWeek);\n  var diff = getUTCWeek(date, dirtyOptions) - week;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n  }\n\n  var day = toInteger(dirtyDay);\n\n  if (day % 7 === 0) {\n    day = day - 7;\n  }\n\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate, dirtyOptions);\n  var currentDay = date.getUTCDay();\n\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var isoWeek = toInteger(dirtyISOWeek);\n  var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date\n}\n\nvar MILLISECONDS_IN_HOUR$1 = 3600000;\nvar MILLISECONDS_IN_MINUTE$2 = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\n\nvar numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/, // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n  minute: /^[0-5]?\\d/, // 0 to 59\n  second: /^[0-5]?\\d/, // 0 to 59\n\n  singleDigit: /^\\d/, // 0 to 9\n  twoDigits: /^\\d{1,2}/, // 0 to 99\n  threeDigits: /^\\d{1,3}/, // 0 to 999\n  fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nvar timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern (pattern, string, valueCallback) {\n  var matchResult = string.match(pattern);\n\n  if (!matchResult) {\n    return null\n  }\n\n  var value = parseInt(matchResult[0], 10);\n\n  return {\n    value: valueCallback ? valueCallback(value) : value,\n    rest: string.slice(matchResult[0].length)\n  }\n}\n\nfunction parseTimezonePattern (pattern, string) {\n  var matchResult = string.match(pattern);\n\n  if (!matchResult) {\n    return null\n  }\n\n  // Input is 'Z'\n  if (matchResult[0] === 'Z') {\n    return {\n      value: 0,\n      rest: string.slice(1)\n    }\n  }\n\n  var sign = matchResult[1] === '+' ? 1 : -1;\n  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n  return {\n    value: sign * (\n      hours * MILLISECONDS_IN_HOUR$1 +\n        minutes * MILLISECONDS_IN_MINUTE$2 +\n        seconds * MILLISECONDS_IN_SECOND\n    ),\n    rest: string.slice(matchResult[0].length)\n  }\n}\n\nfunction parseAnyDigitsSigned (string, valueCallback) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback)\n}\n\nfunction parseNDigits (n, string, valueCallback) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback)\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback)\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback)\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback)\n    default:\n      return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback)\n  }\n}\n\nfunction parseNDigitsSigned (n, string, valueCallback) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback)\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback)\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback)\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback)\n    default:\n      return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback)\n  }\n}\n\nfunction dayPeriodEnumToHours (enumValue) {\n  switch (enumValue) {\n    case 'morning':\n      return 4\n    case 'evening':\n      return 17\n    case 'pm':\n    case 'noon':\n    case 'afternoon':\n      return 12\n    case 'am':\n    case 'midnight':\n    case 'night':\n    default:\n      return 0\n  }\n}\n\nfunction normalizeTwoDigitYear (twoDigitYear, currentYear) {\n  var isCommonEra = currentYear > 0;\n  // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n  var result;\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    var rangeEnd = absCurrentYear + 50;\n    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n\n  return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH$1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR$1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// User for validation\nfunction isLeapYearIndex$1 (year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |\n * |  p  |                                |  P  |                                |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n */\nvar parsers = {\n  // Era\n  G: {\n    priority: 140,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        // AD, BC\n        case 'G':\n        case 'GG':\n        case 'GGG':\n          return match.era(string, {width: 'abbreviated'}) ||\n            match.era(string, {width: 'narrow'})\n        // A, B\n        case 'GGGGG':\n          return match.era(string, {width: 'narrow'})\n        // Anno Domini, Before Christ\n        case 'GGGG':\n        default:\n          return match.era(string, {width: 'wide'}) ||\n            match.era(string, {width: 'abbreviated'}) ||\n            match.era(string, {width: 'narrow'})\n      }\n    },\n    set: function (date, value, options) {\n      // Sets year 10 BC if BC, or 10 AC if AC\n      date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Year\n  y: {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    priority: 130,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'yy'\n        }\n      };\n\n      switch (token) {\n        case 'y':\n          return parseNDigits(4, string, valueCallback)\n        case 'yo':\n          return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n        default:\n          return parseNDigits(token.length, string, valueCallback)\n      }\n    },\n    validate: function (date, value, options) {\n      return value.isTwoDigitYear || value.year > 0\n    },\n    set: function (date, value, options) {\n      var currentYear = getUTCWeekYear(date, options);\n\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n        date.setUTCHours(0, 0, 0, 0);\n        return date\n      }\n\n      var year = currentYear > 0 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Local week-numbering year\n  Y: {\n    priority: 130,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'YY'\n        }\n      };\n\n      switch (token) {\n        case 'Y':\n          return parseNDigits(4, string, valueCallback)\n        case 'Yo':\n          return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n        default:\n          return parseNDigits(token.length, string, valueCallback)\n      }\n    },\n    validate: function (date, value, options) {\n      return value.isTwoDigitYear || value.year > 0\n    },\n    set: function (date, value, options) {\n      var currentYear = date.getUTCFullYear();\n\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n        date.setUTCHours(0, 0, 0, 0);\n        return startOfUTCWeek(date, options)\n      }\n\n      var year = currentYear > 0 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n      date.setUTCHours(0, 0, 0, 0);\n      return startOfUTCWeek(date, options)\n    }\n  },\n\n  // ISO week-numbering year\n  R: {\n    priority: 130,\n    parse: function (string, token, match, options) {\n      if (token === 'R') {\n        return parseNDigitsSigned(4, string)\n      }\n\n      return parseNDigitsSigned(token.length, string)\n    },\n    set: function (date, value, options) {\n      var firstWeekOfYear = new Date(0);\n      firstWeekOfYear.setUTCFullYear(value, 0, 4);\n      firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n      return startOfUTCISOWeek(firstWeekOfYear)\n    }\n  },\n\n  // Extended year\n  u: {\n    priority: 130,\n    parse: function (string, token, match, options) {\n      if (token === 'u') {\n        return parseNDigitsSigned(4, string)\n      }\n\n      return parseNDigitsSigned(token.length, string)\n    },\n    set: function (date, value, options) {\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Quarter\n  Q: {\n    priority: 120,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'Q':\n        case 'QQ': // 01, 02, 03, 04\n          return parseNDigits(token.length, string)\n        // 1st, 2nd, 3rd, 4th\n        case 'Qo':\n          return match.ordinalNumber(string, {unit: 'quarter'})\n        // Q1, Q2, Q3, Q4\n        case 'QQQ':\n          return match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.quarter(string, {width: 'narrow', context: 'formatting'})\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n        case 'QQQQQ':\n          return match.quarter(string, {width: 'narrow', context: 'formatting'})\n        // 1st quarter, 2nd quarter, ...\n        case 'QQQQ':\n        default:\n          return match.quarter(string, {width: 'wide', context: 'formatting'}) ||\n            match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.quarter(string, {width: 'narrow', context: 'formatting'})\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 1 && value <= 4\n    },\n    set: function (date, value, options) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Stand-alone quarter\n  q: {\n    priority: 120,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'q':\n        case 'qq': // 01, 02, 03, 04\n          return parseNDigits(token.length, string)\n        // 1st, 2nd, 3rd, 4th\n        case 'qo':\n          return match.ordinalNumber(string, {unit: 'quarter'})\n        // Q1, Q2, Q3, Q4\n        case 'qqq':\n          return match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n            match.quarter(string, {width: 'narrow', context: 'standalone'})\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n        case 'qqqqq':\n          return match.quarter(string, {width: 'narrow', context: 'standalone'})\n        // 1st quarter, 2nd quarter, ...\n        case 'qqqq':\n        default:\n          return match.quarter(string, {width: 'wide', context: 'standalone'}) ||\n            match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n            match.quarter(string, {width: 'narrow', context: 'standalone'})\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 1 && value <= 4\n    },\n    set: function (date, value, options) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Month\n  M: {\n    priority: 110,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        return value - 1\n      };\n\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'M':\n          return parseNumericPattern(numericPatterns.month, string, valueCallback)\n        // 01, 02, ..., 12\n        case 'MM':\n          return parseNDigits(2, string, valueCallback)\n        // 1st, 2nd, ..., 12th\n        case 'Mo':\n          return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n        // Jan, Feb, ..., Dec\n        case 'MMM':\n          return match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.month(string, {width: 'narrow', context: 'formatting'})\n        // J, F, ..., D\n        case 'MMMMM':\n          return match.month(string, {width: 'narrow', context: 'formatting'})\n        // January, February, ..., December\n        case 'MMMM':\n        default:\n          return match.month(string, {width: 'wide', context: 'formatting'}) ||\n            match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.month(string, {width: 'narrow', context: 'formatting'})\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 0 && value <= 11\n    },\n    set: function (date, value, options) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Stand-alone month\n  L: {\n    priority: 110,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        return value - 1\n      };\n\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'L':\n          return parseNumericPattern(numericPatterns.month, string, valueCallback)\n        // 01, 02, ..., 12\n        case 'LL':\n          return parseNDigits(2, string, valueCallback)\n        // 1st, 2nd, ..., 12th\n        case 'Lo':\n          return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n        // Jan, Feb, ..., Dec\n        case 'LLL':\n          return match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n            match.month(string, {width: 'narrow', context: 'standalone'})\n        // J, F, ..., D\n        case 'LLLLL':\n          return match.month(string, {width: 'narrow', context: 'standalone'})\n        // January, February, ..., December\n        case 'LLLL':\n        default:\n          return match.month(string, {width: 'wide', context: 'standalone'}) ||\n            match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n            match.month(string, {width: 'narrow', context: 'standalone'})\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 0 && value <= 11\n    },\n    set: function (date, value, options) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Local week of year\n  w: {\n    priority: 100,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'w':\n          return parseNumericPattern(numericPatterns.week, string)\n        case 'wo':\n          return match.ordinalNumber(string, {unit: 'week'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 1 && value <= 53\n    },\n    set: function (date, value, options) {\n      return startOfUTCWeek(setUTCWeek(date, value, options), options)\n    }\n  },\n\n  // ISO week of year\n  I: {\n    priority: 100,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'I':\n          return parseNumericPattern(numericPatterns.week, string)\n        case 'Io':\n          return match.ordinalNumber(string, {unit: 'week'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 1 && value <= 53\n    },\n    set: function (date, value, options) {\n      return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n    }\n  },\n\n  // Day of the month\n  d: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'd':\n          return parseNumericPattern(numericPatterns.date, string)\n        case 'do':\n          return match.ordinalNumber(string, {unit: 'date'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex$1(year);\n      var month = date.getUTCMonth();\n      if (isLeapYear) {\n        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR$1[month]\n      } else {\n        return value >= 1 && value <= DAYS_IN_MONTH$1[month]\n      }\n    },\n    set: function (date, value, options) {\n      date.setUTCDate(value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Day of year\n  D: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'D':\n        case 'DD':\n          return parseNumericPattern(numericPatterns.dayOfYear, string)\n        case 'Do':\n          return match.ordinalNumber(string, {unit: 'date'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex$1(year);\n      if (isLeapYear) {\n        return value >= 1 && value <= 366\n      } else {\n        return value >= 1 && value <= 365\n      }\n    },\n    set: function (date, value, options) {\n      date.setUTCMonth(0, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Day of week\n  E: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        // Tue\n        case 'E':\n        case 'EE':\n        case 'EEE':\n          return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.day(string, {width: 'short', context: 'formatting'}) ||\n            match.day(string, {width: 'narrow', context: 'formatting'})\n        // T\n        case 'EEEEE':\n          return match.day(string, {width: 'narrow', context: 'formatting'})\n        // Tu\n        case 'EEEEEE':\n          return match.day(string, {width: 'short', context: 'formatting'}) ||\n          match.day(string, {width: 'narrow', context: 'formatting'})\n        // Tuesday\n        case 'EEEE':\n        default:\n          return match.day(string, {width: 'wide', context: 'formatting'}) ||\n            match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.day(string, {width: 'short', context: 'formatting'}) ||\n            match.day(string, {width: 'narrow', context: 'formatting'})\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 0 && value <= 6\n    },\n    set: function (date, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Local day of week\n  e: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n      };\n\n      switch (token) {\n        // 3\n        case 'e':\n        case 'ee': // 03\n          return parseNDigits(token.length, string, valueCallback)\n        // 3rd\n        case 'eo':\n          return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n        // Tue\n        case 'eee':\n          return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.day(string, {width: 'short', context: 'formatting'}) ||\n            match.day(string, {width: 'narrow', context: 'formatting'})\n        // T\n        case 'eeeee':\n          return match.day(string, {width: 'narrow', context: 'formatting'})\n        // Tu\n        case 'eeeeee':\n          return match.day(string, {width: 'short', context: 'formatting'}) ||\n          match.day(string, {width: 'narrow', context: 'formatting'})\n        // Tuesday\n        case 'eeee':\n        default:\n          return match.day(string, {width: 'wide', context: 'formatting'}) ||\n            match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.day(string, {width: 'short', context: 'formatting'}) ||\n            match.day(string, {width: 'narrow', context: 'formatting'})\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 0 && value <= 6\n    },\n    set: function (date, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Stand-alone local day of week\n  c: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n      };\n\n      switch (token) {\n        // 3\n        case 'c':\n        case 'cc': // 03\n          return parseNDigits(token.length, string, valueCallback)\n        // 3rd\n        case 'co':\n          return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n        // Tue\n        case 'ccc':\n          return match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n            match.day(string, {width: 'short', context: 'standalone'}) ||\n            match.day(string, {width: 'narrow', context: 'standalone'})\n        // T\n        case 'ccccc':\n          return match.day(string, {width: 'narrow', context: 'standalone'})\n        // Tu\n        case 'cccccc':\n          return match.day(string, {width: 'short', context: 'standalone'}) ||\n          match.day(string, {width: 'narrow', context: 'standalone'})\n        // Tuesday\n        case 'cccc':\n        default:\n          return match.day(string, {width: 'wide', context: 'standalone'}) ||\n            match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n            match.day(string, {width: 'short', context: 'standalone'}) ||\n            match.day(string, {width: 'narrow', context: 'standalone'})\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 0 && value <= 6\n    },\n    set: function (date, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // ISO day of week\n  i: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        if (value === 0) {\n          return 7\n        }\n        return value\n      };\n\n      switch (token) {\n        // 2\n        case 'i':\n        case 'ii': // 02\n          return parseNDigits(token.length, string)\n        // 2nd\n        case 'io':\n          return match.ordinalNumber(string, {unit: 'day'})\n        // Tue\n        case 'iii':\n          return match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n            match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n            match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n        // T\n        case 'iiiii':\n          return match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n        // Tu\n        case 'iiiiii':\n          return match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n          match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n        // Tuesday\n        case 'iiii':\n        default:\n          return match.day(string, {width: 'wide', context: 'formatting', valueCallback: valueCallback}) ||\n            match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n            match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n            match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 1 && value <= 7\n    },\n    set: function (date, value, options) {\n      date = setUTCISODay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date\n    }\n  },\n\n  // AM or PM\n  a: {\n    priority: 80,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'a':\n        case 'aa':\n        case 'aaa':\n          return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n        case 'aaaaa':\n          return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n        case 'aaaa':\n        default:\n          return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n            match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n      }\n    },\n    set: function (date, value, options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date\n    }\n  },\n\n  // AM, PM, midnight\n  b: {\n    priority: 80,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'b':\n        case 'bb':\n        case 'bbb':\n          return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n        case 'bbbbb':\n          return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n        case 'bbbb':\n        default:\n          return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n            match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n      }\n    },\n    set: function (date, value, options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: {\n    priority: 80,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'B':\n        case 'BB':\n        case 'BBB':\n          return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n        case 'BBBBB':\n          return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n        case 'BBBB':\n        default:\n          return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n            match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n            match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n      }\n    },\n    set: function (date, value, options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date\n    }\n  },\n\n  // Hour [1-12]\n  h: {\n    priority: 70,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'h':\n          return parseNumericPattern(numericPatterns.hour12h, string)\n        case 'ho':\n          return match.ordinalNumber(string, {unit: 'hour'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 1 && value <= 12\n    },\n    set: function (date, value, options) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else if (!isPM && value === 12) {\n        date.setUTCHours(0, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date\n    }\n  },\n\n  // Hour [0-23]\n  H: {\n    priority: 70,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'H':\n          return parseNumericPattern(numericPatterns.hour23h, string)\n        case 'Ho':\n          return match.ordinalNumber(string, {unit: 'hour'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 0 && value <= 23\n    },\n    set: function (date, value, options) {\n      date.setUTCHours(value, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Hour [0-11]\n  K: {\n    priority: 70,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'K':\n          return parseNumericPattern(numericPatterns.hour11h, string)\n        case 'Ko':\n          return match.ordinalNumber(string, {unit: 'hour'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 0 && value <= 11\n    },\n    set: function (date, value, options) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date\n    }\n  },\n\n  // Hour [1-24]\n  k: {\n    priority: 70,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'k':\n          return parseNumericPattern(numericPatterns.hour24h, string)\n        case 'ko':\n          return match.ordinalNumber(string, {unit: 'hour'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 1 && value <= 24\n    },\n    set: function (date, value, options) {\n      var hours = value <= 24 ? value % 24 : value;\n      date.setUTCHours(hours, 0, 0, 0);\n      return date\n    }\n  },\n\n  // Minute\n  m: {\n    priority: 60,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'm':\n          return parseNumericPattern(numericPatterns.minute, string)\n        case 'mo':\n          return match.ordinalNumber(string, {unit: 'minute'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 0 && value <= 59\n    },\n    set: function (date, value, options) {\n      date.setUTCMinutes(value, 0, 0);\n      return date\n    }\n  },\n\n  // Second\n  s: {\n    priority: 50,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 's':\n          return parseNumericPattern(numericPatterns.second, string)\n        case 'so':\n          return match.ordinalNumber(string, {unit: 'second'})\n        default:\n          return parseNDigits(token.length, string)\n      }\n    },\n    validate: function (date, value, options) {\n      return value >= 0 && value <= 59\n    },\n    set: function (date, value, options) {\n      date.setUTCSeconds(value, 0);\n      return date\n    }\n  },\n\n  // Fraction of second\n  S: {\n    priority: 40,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        return Math.floor(value * Math.pow(10, -token.length + 3))\n      };\n      return parseNDigits(token.length, string, valueCallback)\n    },\n    set: function (date, value, options) {\n      date.setUTCMilliseconds(value);\n      return date\n    }\n  },\n\n  // Timezone (ISO-8601. +00:00 is `'Z'`)\n  X: {\n    priority: 20,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'X':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n        case 'XX':\n          return parseTimezonePattern(timezonePatterns.basic, string)\n        case 'XXXX':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n        case 'XXXXX':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n        case 'XXX':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, string)\n      }\n    },\n    set: function (date, value, options) {\n      return new Date(date.getTime() - value)\n    }\n  },\n\n  // Timezone (ISO-8601)\n  x: {\n    priority: 20,\n    parse: function (string, token, match, options) {\n      switch (token) {\n        case 'x':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n        case 'xx':\n          return parseTimezonePattern(timezonePatterns.basic, string)\n        case 'xxxx':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n        case 'xxxxx':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n        case 'xxx':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, string)\n      }\n    },\n    set: function (date, value, options) {\n      return new Date(date.getTime() - value)\n    }\n  },\n\n  // Seconds timestamp\n  t: {\n    priority: 10,\n    parse: function (string, token, match, options) {\n      return parseAnyDigitsSigned(string)\n    },\n    set: function (date, value, options) {\n      return new Date(value * 1000)\n    }\n  },\n\n  // Milliseconds timestamp\n  T: {\n    priority: 10,\n    parse: function (string, token, match, options) {\n      return parseAnyDigitsSigned(string)\n    },\n    set: function (date, value, options) {\n      return new Date(value)\n    }\n  }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 20;\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp$1 = /^'(.*?)'?$/;\nvar doubleQuoteRegExp$1 = /''/g;\n\nvar notWhitespaceRegExp = /\\S/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 6     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 6     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Su            | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 1, 2, ..., 11, 0                  |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              |  40 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 0001, ..., 999               |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  20 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  20 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Seconds timestamp               |  10 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Milliseconds timestamp          |  10 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n *    and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - defines values missing from the parsed dateString\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n *   - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n *   - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n *   See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n *   '02/11/2014',\n *   'MM/dd/yyyy',\n *   new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse(\n *   '28-a de februaro',\n *   \"do 'de' MMMM\",\n *   new Date(2010, 0, 1),\n *   {locale: eo}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse(\n  dirtyDateString,\n  dirtyFormatString,\n  dirtyBaseDate,\n  dirtyOptions\n) {\n  if (arguments.length < 3) {\n    throw new TypeError(\n      '3 arguments required, but only ' + arguments.length + ' present'\n    )\n  }\n\n  var dateString = String(dirtyDateString);\n  var formatString = String(dirtyFormatString);\n  var options = dirtyOptions || {};\n\n  var locale = options.locale || locale$1;\n\n  if (!locale.match) {\n    throw new RangeError('locale must contain match property')\n  }\n\n  var localeFirstWeekContainsDate =\n    locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate =\n    localeFirstWeekContainsDate == null\n      ? 1\n      : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate =\n    options.firstWeekContainsDate == null\n      ? defaultFirstWeekContainsDate\n      : toInteger(options.firstWeekContainsDate);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError(\n      'firstWeekContainsDate must be between 1 and 7 inclusively'\n    )\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn =\n    localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn =\n    options.weekStartsOn == null\n      ? defaultWeekStartsOn\n      : toInteger(options.weekStartsOn);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n  }\n\n  if (formatString === '') {\n    if (dateString === '') {\n      return toDate(dirtyBaseDate, options)\n    } else {\n      return new Date(NaN)\n    }\n  }\n\n  var subFnOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale\n  };\n\n  // If timezone isn't specified, it will be set to the system timezone\n  var setters = [\n    {\n      priority: TIMEZONE_UNIT_PRIORITY,\n      set: dateToSystemTimezone,\n      index: 0\n    }\n  ];\n\n  var i;\n\n  var tokens = formatString.match(formattingTokensRegExp$1);\n\n  for (i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n      throwProtectedError(token);\n    }\n\n    var firstCharacter = token[0];\n    var parser = parsers[firstCharacter];\n    if (parser) {\n      var parseResult = parser.parse(\n        dateString,\n        token,\n        locale.match,\n        subFnOptions\n      );\n\n      if (!parseResult) {\n        return new Date(NaN)\n      }\n\n      setters.push({\n        priority: parser.priority,\n        set: parser.set,\n        validate: parser.validate,\n        value: parseResult.value,\n        index: setters.length\n      });\n\n      dateString = parseResult.rest;\n    } else {\n      // Replace two single quote characters with one single quote character\n      if (token === \"''\") {\n        token = \"'\";\n      } else if (firstCharacter === \"'\") {\n        token = cleanEscapedString$1(token);\n      }\n\n      // Cut token from string, or, if string doesn't match the token, return Invalid Date\n      if (dateString.indexOf(token) === 0) {\n        dateString = dateString.slice(token.length);\n      } else {\n        return new Date(NaN)\n      }\n    }\n  }\n\n  // Check if the remaining input contains something other than whitespace\n  if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n    return new Date(NaN)\n  }\n\n  var uniquePrioritySetters = setters\n    .map(function(setter) {\n      return setter.priority\n    })\n    .sort(function(a, b) {\n      return b - a\n    })\n    .filter(function(priority, index, array) {\n      return array.indexOf(priority) === index\n    })\n    .map(function(priority) {\n      return setters\n        .filter(function(setter) {\n          return setter.priority === priority\n        })\n        .reverse()\n    })\n    .map(function(setterArray) {\n      return setterArray[0]\n    });\n\n  var date = toDate(dirtyBaseDate, options);\n\n  if (isNaN(date)) {\n    return new Date(NaN)\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n  var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n\n  for (i = 0; i < uniquePrioritySetters.length; i++) {\n    var setter = uniquePrioritySetters[i];\n\n    if (\n      setter.validate &&\n      !setter.validate(utcDate, setter.value, subFnOptions)\n    ) {\n      return new Date(NaN)\n    }\n\n    utcDate = setter.set(utcDate, setter.value, subFnOptions);\n  }\n\n  return utcDate\n}\n\nfunction dateToSystemTimezone(date) {\n  var convertedDate = new Date(0);\n  convertedDate.setFullYear(\n    date.getUTCFullYear(),\n    date.getUTCMonth(),\n    date.getUTCDate()\n  );\n  convertedDate.setHours(\n    date.getUTCHours(),\n    date.getUTCMinutes(),\n    date.getUTCSeconds(),\n    date.getUTCMilliseconds()\n  );\n  return convertedDate\n}\n\nfunction cleanEscapedString$1(input) {\n  return input.match(escapedStringRegExp$1)[1].replace(doubleQuoteRegExp$1, \"'\")\n}\n\n// \n\n/**\n * Custom parse behavior on top of date-fns parse function.\n */\nfunction parseDate$1 (date, format$1) {\n  if (typeof date !== 'string') {\n    return isValid(date) ? date : null;\n  }\n\n  var parsed = parse(date, format$1, new Date());\n\n  // if date is not valid or the formatted output after parsing does not match\n  // the string value passed in (avoids overflows)\n  if (!isValid(parsed) || format(parsed, format$1) !== date) {\n    return null;\n  }\n\n  return parsed;\n}\n\nvar afterValidator = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var targetValue = ref.targetValue;\n  var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n  var format = ref.format;\n\n  if (typeof format === 'undefined') {\n    format = inclusion;\n    inclusion = false;\n  }\n\n  value = parseDate$1(value, format);\n  targetValue = parseDate$1(targetValue, format);\n\n  // if either is not valid.\n  if (!value || !targetValue) {\n    return false;\n  }\n\n  return isAfter(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\n};\n\nvar options = {\n  hasTarget: true,\n  isDate: true\n};\n\n// required to convert from a list of array values to an object.\nvar paramNames = ['targetValue', 'inclusion', 'format'];\n\nvar after = {\n  validate: afterValidator,\n  options: options,\n  paramNames: paramNames\n};\n\n/**\n * Some Alpha Regex helpers.\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\n */\n\nvar alpha = {\n  en: /^[A-Z]*$/i,\n  cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n  da: /^[A-ZÆØÅ]*$/i,\n  de: /^[A-ZÄÖÜß]*$/i,\n  es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\n  fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n  fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n  it: /^[A-Z\\xC0-\\xFF]*$/i,\n  lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n  nl: /^[A-ZÉËÏÓÖÜ]*$/i,\n  hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n  pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n  pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n  ru: /^[А-ЯЁ]*$/i,\n  sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n  sr: /^[A-ZČĆŽŠĐ]*$/i,\n  sv: /^[A-ZÅÄÖ]*$/i,\n  tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\n  uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\n  ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n  az: /^[A-ZÇƏĞİıÖŞÜ]*$/i\n};\n\nvar alphaSpaces = {\n  en: /^[A-Z\\s]*$/i,\n  cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\n  da: /^[A-ZÆØÅ\\s]*$/i,\n  de: /^[A-ZÄÖÜß\\s]*$/i,\n  es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\n  fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی\\s]*$/,\n  fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\n  it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\n  lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\n  nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\n  hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\n  pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\n  pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\n  ru: /^[А-ЯЁ\\s]*$/i,\n  sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\n  sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\n  sv: /^[A-ZÅÄÖ\\s]*$/i,\n  tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\n  uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\n  ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/,\n  az: /^[A-ZÇƏĞİıÖŞÜ\\s]*$/i\n};\n\nvar alphanumeric = {\n  en: /^[0-9A-Z]*$/i,\n  cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n  da: /^[0-9A-ZÆØÅ]$/i,\n  de: /^[0-9A-ZÄÖÜß]*$/i,\n  es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\n  fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n  fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n  it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\n  lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n  hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n  nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\n  pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n  pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n  ru: /^[0-9А-ЯЁ]*$/i,\n  sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n  sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\n  sv: /^[0-9A-ZÅÄÖ]*$/i,\n  tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\n  uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\n  ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n  az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i\n};\n\nvar alphaDash = {\n  en: /^[0-9A-Z_-]*$/i,\n  cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\n  da: /^[0-9A-ZÆØÅ_-]*$/i,\n  de: /^[0-9A-ZÄÖÜß_-]*$/i,\n  es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\n  fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی_-]*$/,\n  fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\n  it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\n  lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\n  nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\n  hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\n  pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\n  pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\n  ru: /^[0-9А-ЯЁ_-]*$/i,\n  sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\n  sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\n  sv: /^[0-9A-ZÅÄÖ_-]*$/i,\n  tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\n  uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\n  ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,\n  az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i\n};\n\nvar validate = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var locale = ref.locale;\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate(val, [locale]); });\n  }\n\n  // Match at least one locale.\n  if (! locale) {\n    return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });\n  }\n\n  return (alpha[locale] || alpha.en).test(value);\n};\n\nvar paramNames$1 = ['locale'];\n\nvar alpha$1 = {\n  validate: validate,\n  paramNames: paramNames$1\n};\n\nvar validate$1 = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var locale = ref.locale;\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$1(val, [locale]); });\n  }\n\n  // Match at least one locale.\n  if (! locale) {\n    return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\n  }\n\n  return (alphaDash[locale] || alphaDash.en).test(value);\n};\n\nvar paramNames$2 = ['locale'];\n\nvar alpha_dash = {\n  validate: validate$1,\n  paramNames: paramNames$2\n};\n\nvar validate$2 = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var locale = ref.locale;\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$2(val, [locale]); });\n  }\n\n  // Match at least one locale.\n  if (! locale) {\n    return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\n  }\n\n  return (alphanumeric[locale] || alphanumeric.en).test(value);\n};\n\nvar paramNames$3 = ['locale'];\n\nvar alpha_num = {\n  validate: validate$2,\n  paramNames: paramNames$3\n};\n\nvar validate$3 = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var locale = ref.locale;\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$3(val, [locale]); });\n  }\n\n  // Match at least one locale.\n  if (! locale) {\n    return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\n  }\n\n  return (alphaSpaces[locale] || alphaSpaces.en).test(value);\n};\n\nvar paramNames$4 = ['locale'];\n\nvar alpha_spaces = {\n  validate: validate$3,\n  paramNames: paramNames$4\n};\n\nvar validate$4 = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var targetValue = ref.targetValue;\n  var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n  var format = ref.format;\n\n  if (typeof format === 'undefined') {\n    format = inclusion;\n    inclusion = false;\n  }\n\n  value = parseDate$1(value, format);\n  targetValue = parseDate$1(targetValue, format);\n\n  // if either is not valid.\n  if (!value || !targetValue) {\n    return false;\n  }\n\n  return isBefore(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\n};\n\nvar options$1 = {\n  hasTarget: true,\n  isDate: true\n};\n\nvar paramNames$5 = ['targetValue', 'inclusion', 'format'];\n\nvar before = {\n  validate: validate$4,\n  options: options$1,\n  paramNames: paramNames$5\n};\n\nvar validate$5 = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var min = ref.min;\n  var max = ref.max;\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$5(val, { min: min, max: max }); });\n  }\n\n  return Number(min) <= value && Number(max) >= value;\n};\n\nvar paramNames$6 = ['min', 'max'];\n\nvar between = {\n  validate: validate$5,\n  paramNames: paramNames$6\n};\n\nvar validate$6 = function (value, ref) {\n  var targetValue = ref.targetValue;\n\n  return String(value) === String(targetValue);\n};\nvar options$2 = {\n  hasTarget: true\n};\n\nvar paramNames$7 = ['targetValue'];\n\nvar confirmed = {\n  validate: validate$6,\n  options: options$2,\n  paramNames: paramNames$7\n};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar assertString_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = assertString;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction assertString(input) {\n  var isString = typeof input === 'string' || input instanceof String;\n\n  if (!isString) {\n    var invalidType;\n\n    if (input === null) {\n      invalidType = 'null';\n    } else {\n      invalidType = _typeof(input);\n\n      if (invalidType === 'object' && input.constructor && input.constructor.hasOwnProperty('name')) {\n        invalidType = input.constructor.name;\n      } else {\n        invalidType = \"a \".concat(invalidType);\n      }\n    }\n\n    throw new TypeError(\"Expected string but received \".concat(invalidType, \".\"));\n  }\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(assertString_1);\n\nvar isCreditCard_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isCreditCard;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar creditCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|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}|6[27][0-9]{14})$/;\n/* eslint-enable max-len */\n\nfunction isCreditCard(str) {\n  (0, _assertString.default)(str);\n  var sanitized = str.replace(/[- ]+/g, '');\n\n  if (!creditCard.test(sanitized)) {\n    return false;\n  }\n\n  var sum = 0;\n  var digit;\n  var tmpNum;\n  var shouldDouble;\n\n  for (var i = sanitized.length - 1; i >= 0; i--) {\n    digit = sanitized.substring(i, i + 1);\n    tmpNum = parseInt(digit, 10);\n\n    if (shouldDouble) {\n      tmpNum *= 2;\n\n      if (tmpNum >= 10) {\n        sum += tmpNum % 10 + 1;\n      } else {\n        sum += tmpNum;\n      }\n    } else {\n      sum += tmpNum;\n    }\n\n    shouldDouble = !shouldDouble;\n  }\n\n  return !!(sum % 10 === 0 ? sanitized : false);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isCreditCard = unwrapExports(isCreditCard_1);\n\nvar validate$7 = function (value) { return isCreditCard(String(value)); };\n\nvar credit_card = {\n  validate: validate$7\n};\n\nvar validate$8 = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var min = ref.min;\n  var max = ref.max;\n  var inclusivity = ref.inclusivity; if ( inclusivity === void 0 ) inclusivity = '()';\n  var format = ref.format;\n\n  if (typeof format === 'undefined') {\n    format = inclusivity;\n    inclusivity = '()';\n  }\n\n  var minDate = parseDate$1(String(min), format);\n  var maxDate = parseDate$1(String(max), format);\n  var dateVal = parseDate$1(String(value), format);\n\n  if (!minDate || !maxDate || !dateVal) {\n    return false;\n  }\n\n  if (inclusivity === '()') {\n    return isAfter(dateVal, minDate) && isBefore(dateVal, maxDate);\n  }\n\n  if (inclusivity === '(]') {\n    return isAfter(dateVal, minDate) && (isEqual$1(dateVal, maxDate) || isBefore(dateVal, maxDate));\n  }\n\n  if (inclusivity === '[)') {\n    return isBefore(dateVal, maxDate) && (isEqual$1(dateVal, minDate) || isAfter(dateVal, minDate));\n  }\n\n  return isEqual$1(dateVal, maxDate) || isEqual$1(dateVal, minDate) ||\n    (isBefore(dateVal, maxDate) && isAfter(dateVal, minDate));\n};\n\nvar options$3 = {\n  isDate: true\n};\n\nvar paramNames$8 = ['min', 'max', 'inclusivity', 'format'];\n\nvar date_between = {\n  validate: validate$8,\n  options: options$3,\n  paramNames: paramNames$8\n};\n\nvar validate$9 = function (value, ref) {\n  var format = ref.format;\n\n  return !!parseDate$1(value, format);\n};\n\nvar options$4 = {\n  isDate: true\n};\n\nvar paramNames$9 = ['format'];\n\nvar date_format = {\n  validate: validate$9,\n  options: options$4,\n  paramNames: paramNames$9\n};\n\nvar validate$a = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var decimals = ref.decimals; if ( decimals === void 0 ) decimals = '*';\n  var separator = ref.separator; if ( separator === void 0 ) separator = '.';\n\n  if (isNullOrUndefined(value) || value === '') {\n    return false;\n  }\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$a(val, { decimals: decimals, separator: separator }); });\n  }\n\n  // if is 0.\n  if (Number(decimals) === 0) {\n    return /^-?\\d*$/.test(value);\n  }\n\n  var regexPart = decimals === '*' ? '+' : (\"{1,\" + decimals + \"}\");\n  var regex = new RegExp((\"^[-+]?\\\\d*(\\\\\" + separator + \"\\\\d\" + regexPart + \")?([eE]{1}[-]?\\\\d+)?$\"));\n\n  if (! regex.test(value)) {\n    return false;\n  }\n\n  var parsedValue = parseFloat(value);\n\n  // eslint-disable-next-line\n  return parsedValue === parsedValue;\n};\n\nvar paramNames$a = ['decimals', 'separator'];\n\nvar decimal = {\n  validate: validate$a,\n  paramNames: paramNames$a\n};\n\nvar validate$b = function (value, ref) {\n  var length = ref[0];\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$b(val, [length]); });\n  }\n  var strVal = String(value);\n\n  return /^[0-9]*$/.test(strVal) && strVal.length === Number(length);\n};\n\nvar digits = {\n  validate: validate$b\n};\n\nvar imageRegex = /\\.(jpg|svg|jpeg|png|bmp|gif)$/i;\n\nvar validateImage = function (file, width, height) {\n  var URL = window.URL || window.webkitURL;\n  return new Promise(function (resolve) {\n    var image = new Image();\n    image.onerror = function () { return resolve({ valid: false }); };\n    image.onload = function () { return resolve({\n      valid: image.width === Number(width) && image.height === Number(height)\n    }); };\n\n    image.src = URL.createObjectURL(file);\n  });\n};\n\nvar validate$c = function (files, ref) {\n  var width = ref[0];\n  var height = ref[1];\n\n  var images = ensureArray(files).filter(function (file) { return imageRegex.test(file.name); });\n  if (images.length === 0) {\n    return false;\n  }\n  return Promise.all(images.map(function (image) { return validateImage(image, width, height); }));\n};\n\nvar dimensions = {\n  validate: validate$c\n};\n\nvar merge_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = merge;\n\nfunction merge() {\n  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var defaults = arguments.length > 1 ? arguments[1] : undefined;\n\n  for (var key in defaults) {\n    if (typeof obj[key] === 'undefined') {\n      obj[key] = defaults[key];\n    }\n  }\n\n  return obj;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(merge_1);\n\nvar isByteLength_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isByteLength;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n  (0, _assertString.default)(str);\n  var min;\n  var max;\n\n  if (_typeof(options) === 'object') {\n    min = options.min || 0;\n    max = options.max;\n  } else {\n    // backwards compatibility: isByteLength(str, min [, max])\n    min = arguments[1];\n    max = arguments[2];\n  }\n\n  var len = encodeURI(str).split(/%..|./).length - 1;\n  return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(isByteLength_1);\n\nvar isFQDN_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isFQDN;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n  require_tld: true,\n  allow_underscores: false,\n  allow_trailing_dot: false\n};\n\nfunction isFQDN(str, options) {\n  (0, _assertString.default)(str);\n  options = (0, _merge.default)(options, default_fqdn_options);\n  /* Remove the optional trailing dot before checking validity */\n\n  if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n    str = str.substring(0, str.length - 1);\n  }\n\n  var parts = str.split('.');\n\n  for (var i = 0; i < parts.length; i++) {\n    if (parts[i].length > 63) {\n      return false;\n    }\n  }\n\n  if (options.require_tld) {\n    var tld = parts.pop();\n\n    if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n      return false;\n    } // disallow spaces\n\n\n    if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20]/.test(tld)) {\n      return false;\n    }\n  }\n\n  for (var part, _i = 0; _i < parts.length; _i++) {\n    part = parts[_i];\n\n    if (options.allow_underscores) {\n      part = part.replace(/_/g, '');\n    }\n\n    if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n      return false;\n    } // disallow full-width chars\n\n\n    if (/[\\uff01-\\uff5e]/.test(part)) {\n      return false;\n    }\n\n    if (part[0] === '-' || part[part.length - 1] === '-') {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isFQDN = unwrapExports(isFQDN_1);\n\nvar isIP_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isIP;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ipv4Maybe = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\nvar ipv6Block = /^[0-9A-F]{1,4}$/i;\n\nfunction isIP(str) {\n  var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  (0, _assertString.default)(str);\n  version = String(version);\n\n  if (!version) {\n    return isIP(str, 4) || isIP(str, 6);\n  } else if (version === '4') {\n    if (!ipv4Maybe.test(str)) {\n      return false;\n    }\n\n    var parts = str.split('.').sort(function (a, b) {\n      return a - b;\n    });\n    return parts[3] <= 255;\n  } else if (version === '6') {\n    var blocks = str.split(':');\n    var foundOmissionBlock = false; // marker to indicate ::\n    // At least some OS accept the last 32 bits of an IPv6 address\n    // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n    // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n    // and '::a.b.c.d' is deprecated, but also valid.\n\n    var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n    var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n\n    if (blocks.length > expectedNumberOfBlocks) {\n      return false;\n    } // initial or final ::\n\n\n    if (str === '::') {\n      return true;\n    } else if (str.substr(0, 2) === '::') {\n      blocks.shift();\n      blocks.shift();\n      foundOmissionBlock = true;\n    } else if (str.substr(str.length - 2) === '::') {\n      blocks.pop();\n      blocks.pop();\n      foundOmissionBlock = true;\n    }\n\n    for (var i = 0; i < blocks.length; ++i) {\n      // test for a :: which can not be at the string start/end\n      // since those cases have been handled above\n      if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n        if (foundOmissionBlock) {\n          return false; // multiple :: in address\n        }\n\n        foundOmissionBlock = true;\n      } else if (foundIPv4TransitionBlock && i === blocks.length - 1) ; else if (!ipv6Block.test(blocks[i])) {\n        return false;\n      }\n    }\n\n    if (foundOmissionBlock) {\n      return blocks.length >= 1;\n    }\n\n    return blocks.length === expectedNumberOfBlocks;\n  }\n\n  return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isIP = unwrapExports(isIP_1);\n\nvar isEmail_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isEmail;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nvar _isByteLength = _interopRequireDefault(isByteLength_1);\n\nvar _isFQDN = _interopRequireDefault(isFQDN_1);\n\nvar _isIP = _interopRequireDefault(isIP_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_email_options = {\n  allow_display_name: false,\n  require_display_name: false,\n  allow_utf8_local_part: true,\n  require_tld: true\n};\n/* eslint-disable max-len */\n\n/* eslint-disable no-control-regex */\n\nvar displayName = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\,\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\s]*<(.+)>$/i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar gmailUserPart = /^[a-z\\d]+$/;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\n/* eslint-enable max-len */\n\n/* eslint-enable no-control-regex */\n\nfunction isEmail(str, options) {\n  (0, _assertString.default)(str);\n  options = (0, _merge.default)(options, default_email_options);\n\n  if (options.require_display_name || options.allow_display_name) {\n    var display_email = str.match(displayName);\n\n    if (display_email) {\n      str = display_email[1];\n    } else if (options.require_display_name) {\n      return false;\n    }\n  }\n\n  var parts = str.split('@');\n  var domain = parts.pop();\n  var user = parts.join('@');\n  var lower_domain = domain.toLowerCase();\n\n  if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n    /*\n      Previously we removed dots for gmail addresses before validating.\n      This was removed because it allows `multiple..dots@gmail.com`\n      to be reported as valid, but it is not.\n      Gmail only normalizes single dots, removing them from here is pointless,\n      should be done in normalizeEmail\n    */\n    user = user.toLowerCase(); // Removing sub-address from username before gmail validation\n\n    var username = user.split('+')[0]; // Dots are not included in gmail length restriction\n\n    if (!(0, _isByteLength.default)(username.replace('.', ''), {\n      min: 6,\n      max: 30\n    })) {\n      return false;\n    }\n\n    var _user_parts = username.split('.');\n\n    for (var i = 0; i < _user_parts.length; i++) {\n      if (!gmailUserPart.test(_user_parts[i])) {\n        return false;\n      }\n    }\n  }\n\n  if (!(0, _isByteLength.default)(user, {\n    max: 64\n  }) || !(0, _isByteLength.default)(domain, {\n    max: 254\n  })) {\n    return false;\n  }\n\n  if (!(0, _isFQDN.default)(domain, {\n    require_tld: options.require_tld\n  })) {\n    if (!options.allow_ip_domain) {\n      return false;\n    }\n\n    if (!(0, _isIP.default)(domain)) {\n      if (!domain.startsWith('[') || !domain.endsWith(']')) {\n        return false;\n      }\n\n      var noBracketdomain = domain.substr(1, domain.length - 2);\n\n      if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n        return false;\n      }\n    }\n  }\n\n  if (user[0] === '\"') {\n    user = user.slice(1, user.length - 1);\n    return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n  }\n\n  var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n  var user_parts = user.split('.');\n\n  for (var _i = 0; _i < user_parts.length; _i++) {\n    if (!pattern.test(user_parts[_i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isEmail = unwrapExports(isEmail_1);\n\nfunction objectWithoutProperties (obj, exclude) { var target = {}; for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k]; return target; }\n\nvar validate$d = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var multiple = ref.multiple; if ( multiple === void 0 ) multiple = false;\n  var rest = objectWithoutProperties( ref, [\"multiple\"] );\n  var options = rest;\n\n  if (multiple && !Array.isArray(value)) {\n    value = String(value).split(',').map(function (emailStr) { return emailStr.trim(); });\n  }\n\n  var validatorOptions = assign({}, options);\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return isEmail(String(val), validatorOptions); });\n  }\n\n  return isEmail(String(value), validatorOptions);\n};\n\nvar email = {\n  validate: validate$d\n};\n\nvar validate$e = function (value, options) {\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$e(val, options); });\n  }\n\n  return toArray(options).some(function (item) {\n    // eslint-disable-next-line\n    return item == value;\n  });\n};\n\nvar included = {\n  validate: validate$e\n};\n\nvar validate$f = function () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return !validate$e.apply(void 0, args);\n};\n\nvar excluded = {\n  validate: validate$f\n};\n\nvar validate$g = function (files, extensions) {\n  var regex = new RegExp((\".(\" + (extensions.join('|')) + \")$\"), 'i');\n  return ensureArray(files).every(function (file) { return regex.test(file.name); });\n};\n\nvar ext = {\n  validate: validate$g\n};\n\nvar validate$h = function (files) { return (Array.isArray(files) ? files : [files]).every(function (file) { return /\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(file.name); }); };\n\nvar image = {\n  validate: validate$h\n};\n\nvar validate$i = function (value) {\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\n  }\n\n  return /^-?[0-9]+$/.test(String(value));\n};\n\nvar integer = {\n  validate: validate$i\n};\n\nvar validate$j = function (value, ref) {\n  if ( ref === void 0 ) ref = {};\n  var version = ref.version; if ( version === void 0 ) version = 4;\n\n  if (isNullOrUndefined(value)) {\n    value = '';\n  }\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return isIP(val, version); });\n  }\n\n  return isIP(value, version);\n};\n\nvar paramNames$b = ['version'];\n\nvar ip = {\n  validate: validate$j,\n  paramNames: paramNames$b\n};\n\nvar validate$k = function (value) {\n  if (isNullOrUndefined(value)) {\n    value = '';\n  }\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return (isIP(val, '') || isFQDN(val)); });\n  }\n\n  return isIP(value, '') || isFQDN(value);\n};\n\nvar ip_or_fqdn = {\n  validate: validate$k\n};\n\nvar validate$l = function (value, ref) {\n  if ( ref === void 0 ) ref = [];\n  var other = ref[0];\n\n  return value === other;\n};\n\nvar is = {\n  validate: validate$l\n};\n\nvar validate$m = function (value, ref) {\n  if ( ref === void 0 ) ref = [];\n  var other = ref[0];\n\n  return value !== other;\n};\n\nvar is_not = {\n  validate: validate$m\n};\n\n/**\n * @param {Array|String} value\n * @param {Number} length\n * @param {Number} max\n */\nvar compare = function (value, length, max) {\n  if (max === undefined) {\n    return value.length === length;\n  }\n\n  // cast to number.\n  max = Number(max);\n\n  return value.length >= length && value.length <= max;\n};\n\nvar validate$n = function (value, ref) {\n  var length = ref[0];\n  var max = ref[1]; if ( max === void 0 ) max = undefined;\n\n  if (isNullOrUndefined(value)) {\n    return false;\n  }\n\n  length = Number(length);\n  if (typeof value === 'number') {\n    value = String(value);\n  }\n\n  if (!value.length) {\n    value = toArray(value);\n  }\n\n  return compare(value, length, max);\n};\n\nvar length = {\n  validate: validate$n\n};\n\nvar validate$o = function (value, ref) {\n  var length = ref[0];\n\n  if (isNullOrUndefined(value)) {\n    return length >= 0;\n  }\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$o(val, [length]); });\n  }\n\n  return String(value).length <= length;\n};\n\nvar max = {\n  validate: validate$o\n};\n\nvar validate$p = function (value, ref) {\n  var max = ref[0];\n\n  if (isNullOrUndefined(value) || value === '') {\n    return false;\n  }\n\n  if (Array.isArray(value)) {\n    return value.length > 0 && value.every(function (val) { return validate$p(val, [max]); });\n  }\n\n  return Number(value) <= max;\n};\n\nvar max_value = {\n  validate: validate$p\n};\n\nvar validate$q = function (files, mimes) {\n  var regex = new RegExp(((mimes.join('|').replace('*', '.+')) + \"$\"), 'i');\n  return ensureArray(files).every(function (file) { return regex.test(file.type); });\n};\n\nvar mimes = {\n  validate: validate$q\n};\n\nvar validate$r = function (value, ref) {\n  var length = ref[0];\n\n  if (isNullOrUndefined(value)) {\n    return false;\n  }\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$r(val, [length]); });\n  }\n\n  return String(value).length >= length;\n};\n\nvar min = {\n  validate: validate$r\n};\n\nvar validate$s = function (value, ref) {\n  var min = ref[0];\n\n  if (isNullOrUndefined(value) || value === '') {\n    return false;\n  }\n\n  if (Array.isArray(value)) {\n    return value.length > 0 && value.every(function (val) { return validate$s(val, [min]); });\n  }\n\n  return Number(value) >= min;\n};\n\nvar min_value = {\n  validate: validate$s\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\nvar en = /^[0-9]+$/;\n\nvar validate$t = function (value) {\n  var testValue = function (val) {\n    var strValue = String(val);\n\n    return en.test(strValue) || ar.test(strValue);\n  };\n\n  if (Array.isArray(value)) {\n    return value.every(testValue);\n  }\n\n  return testValue(value);\n};\n\nvar numeric = {\n  validate: validate$t\n};\n\nvar validate$u = function (value, ref) {\n  var expression = ref.expression;\n\n  if (typeof expression === 'string') {\n    expression = new RegExp(expression);\n  }\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return validate$u(val, { expression: expression }); });\n  }\n\n  return expression.test(String(value));\n};\n\nvar paramNames$c = ['expression'];\n\nvar regex = {\n  validate: validate$u,\n  paramNames: paramNames$c\n};\n\nvar validate$v = function (value, ref) {\n  if ( ref === void 0 ) ref = [];\n  var invalidateFalse = ref[0]; if ( invalidateFalse === void 0 ) invalidateFalse = false;\n\n  if (isNullOrUndefined(value) || isEmptyArray(value)) {\n    return false;\n  }\n\n  // incase a field considers `false` as an empty value like checkboxes.\n  if (value === false && invalidateFalse) {\n    return false;\n  }\n\n  return !!String(value).trim().length;\n};\n\nvar required = {\n  validate: validate$v\n};\n\nvar validate$w = function (value, ref) {\n  if ( ref === void 0 ) ref = [];\n  var otherFieldVal = ref[0];\n  var possibleVals = ref.slice(1);\n\n  var required = possibleVals.includes(String(otherFieldVal).trim());\n\n  if (!required) {\n    return {\n      valid: true,\n      data: {\n        required: required\n      }\n    };\n  }\n\n  var invalid = (isEmptyArray(value) || [false, null, undefined].includes(value));\n\n  invalid = invalid || !String(value).trim().length;\n\n  return {\n    valid: !invalid,\n    data: {\n      required: required\n    }\n  };\n};\n\nvar options$5 = {\n  hasTarget: true,\n  computesRequired: true\n};\n\nvar required_if = {\n  validate: validate$w,\n  options: options$5\n};\n\nvar validate$x = function (files, ref) {\n  var size = ref[0];\n\n  if (isNaN(size)) {\n    return false;\n  }\n  var nSize = Number(size) * 1024;\n  return ensureArray(files).every(function (file) { return file.size <= nSize; });\n};\n\nvar size = {\n  validate: validate$x\n};\n\nvar isURL_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isURL;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _isFQDN = _interopRequireDefault(isFQDN_1);\n\nvar _isIP = _interopRequireDefault(isIP_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_url_options = {\n  protocols: ['http', 'https', 'ftp'],\n  require_tld: true,\n  require_protocol: false,\n  require_host: true,\n  require_valid_protocol: true,\n  allow_underscores: false,\n  allow_trailing_dot: false,\n  allow_protocol_relative_urls: false\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n  return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n  for (var i = 0; i < matches.length; i++) {\n    var match = matches[i];\n\n    if (host === match || isRegExp(match) && match.test(host)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction isURL(url, options) {\n  (0, _assertString.default)(url);\n\n  if (!url || url.length >= 2083 || /[\\s<>]/.test(url)) {\n    return false;\n  }\n\n  if (url.indexOf('mailto:') === 0) {\n    return false;\n  }\n\n  options = (0, _merge.default)(options, default_url_options);\n  var protocol, auth, host, hostname, port, port_str, split, ipv6;\n  split = url.split('#');\n  url = split.shift();\n  split = url.split('?');\n  url = split.shift();\n  split = url.split('://');\n\n  if (split.length > 1) {\n    protocol = split.shift().toLowerCase();\n\n    if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n      return false;\n    }\n  } else if (options.require_protocol) {\n    return false;\n  } else if (url.substr(0, 2) === '//') {\n    if (!options.allow_protocol_relative_urls) {\n      return false;\n    }\n\n    split[0] = url.substr(2);\n  }\n\n  url = split.join('://');\n\n  if (url === '') {\n    return false;\n  }\n\n  split = url.split('/');\n  url = split.shift();\n\n  if (url === '' && !options.require_host) {\n    return true;\n  }\n\n  split = url.split('@');\n\n  if (split.length > 1) {\n    if (options.disallow_auth) {\n      return false;\n    }\n\n    auth = split.shift();\n\n    if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n      return false;\n    }\n  }\n\n  hostname = split.join('@');\n  port_str = null;\n  ipv6 = null;\n  var ipv6_match = hostname.match(wrapped_ipv6);\n\n  if (ipv6_match) {\n    host = '';\n    ipv6 = ipv6_match[1];\n    port_str = ipv6_match[2] || null;\n  } else {\n    split = hostname.split(':');\n    host = split.shift();\n\n    if (split.length) {\n      port_str = split.join(':');\n    }\n  }\n\n  if (port_str !== null) {\n    port = parseInt(port_str, 10);\n\n    if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n      return false;\n    }\n  }\n\n  if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n    return false;\n  }\n\n  host = host || ipv6;\n\n  if (options.host_whitelist && !checkHost(host, options.host_whitelist)) {\n    return false;\n  }\n\n  if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n    return false;\n  }\n\n  return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isURL = unwrapExports(isURL_1);\n\nvar validate$y = function (value, options) {\n  if ( options === void 0 ) options = {};\n\n  if (isNullOrUndefined(value)) {\n    value = '';\n  }\n\n  var validatorOptions = assign({}, options);\n\n  if (Array.isArray(value)) {\n    return value.every(function (val) { return isURL(val, validatorOptions); });\n  }\n\n  return isURL(value, validatorOptions);\n};\n\nvar url = {\n  validate: validate$y\n};\n\n/* eslint-disable camelcase */\n\nvar Rules = /*#__PURE__*/Object.freeze({\n  after: after,\n  alpha_dash: alpha_dash,\n  alpha_num: alpha_num,\n  alpha_spaces: alpha_spaces,\n  alpha: alpha$1,\n  before: before,\n  between: between,\n  confirmed: confirmed,\n  credit_card: credit_card,\n  date_between: date_between,\n  date_format: date_format,\n  decimal: decimal,\n  digits: digits,\n  dimensions: dimensions,\n  email: email,\n  ext: ext,\n  image: image,\n  included: included,\n  integer: integer,\n  length: length,\n  ip: ip,\n  ip_or_fqdn: ip_or_fqdn,\n  is_not: is_not,\n  is: is,\n  max: max,\n  max_value: max_value,\n  mimes: mimes,\n  min: min,\n  min_value: min_value,\n  excluded: excluded,\n  numeric: numeric,\n  regex: regex,\n  required: required,\n  required_if: required_if,\n  size: size,\n  url: url\n});\n\n// \n\nvar normalize = function (fields) {\n  if (Array.isArray(fields)) {\n    return fields.reduce(function (prev, curr) {\n      if (includes(curr, '.')) {\n        prev[curr.split('.')[1]] = curr;\n      } else {\n        prev[curr] = curr;\n      }\n\n      return prev;\n    }, {});\n  }\n\n  return fields;\n};\n\n// Combines two flags using either AND or OR depending on the flag type.\nvar combine = function (lhs, rhs) {\n  var mapper = {\n    pristine: function (lhs, rhs) { return lhs && rhs; },\n    dirty: function (lhs, rhs) { return lhs || rhs; },\n    touched: function (lhs, rhs) { return lhs || rhs; },\n    untouched: function (lhs, rhs) { return lhs && rhs; },\n    valid: function (lhs, rhs) { return lhs && rhs; },\n    invalid: function (lhs, rhs) { return lhs || rhs; },\n    pending: function (lhs, rhs) { return lhs || rhs; },\n    required: function (lhs, rhs) { return lhs || rhs; },\n    validated: function (lhs, rhs) { return lhs && rhs; }\n  };\n\n  return Object.keys(mapper).reduce(function (flags, flag) {\n    flags[flag] = mapper[flag](lhs[flag], rhs[flag]);\n\n    return flags;\n  }, {});\n};\n\nvar mapScope = function (scope, deep) {\n  if ( deep === void 0 ) deep = true;\n\n  return Object.keys(scope).reduce(function (flags, field) {\n    if (!flags) {\n      flags = assign({}, scope[field]);\n      return flags;\n    }\n\n    // scope.\n    var isScope = field.indexOf('$') === 0;\n    if (deep && isScope) {\n      return combine(mapScope(scope[field]), flags);\n    } else if (!deep && isScope) {\n      return flags;\n    }\n\n    flags = combine(flags, scope[field]);\n\n    return flags;\n  }, null);\n};\n\n/**\n * Maps fields to computed functions.\n */\nvar mapFields = function (fields) {\n  if (!fields) {\n    return function () {\n      return mapScope(this.$validator.flags);\n    };\n  }\n\n  var normalized = normalize(fields);\n  return Object.keys(normalized).reduce(function (prev, curr) {\n    var field = normalized[curr];\n    prev[curr] = function mappedField () {\n      // if field exists\n      if (this.$validator.flags[field]) {\n        return this.$validator.flags[field];\n      }\n\n      // scopeless fields were selected.\n      if (normalized[curr] === '*') {\n        return mapScope(this.$validator.flags, false);\n      }\n\n      // if it has a scope defined\n      var index = field.indexOf('.');\n      if (index <= 0) {\n        return {};\n      }\n\n      var ref = field.split('.');\n      var scope = ref[0];\n      var name = ref.slice(1);\n\n      scope = this.$validator.flags[(\"$\" + scope)];\n      name = name.join('.');\n\n      // an entire scope was selected: scope.*\n      if (name === '*' && scope) {\n        return mapScope(scope);\n      }\n\n      if (scope && scope[name]) {\n        return scope[name];\n      }\n\n      return {};\n    };\n\n    return prev;\n  }, {});\n};\n\nvar $validator = null;\n\nvar PROVIDER_COUNTER = 0;\n\nvar ValidationProvider = {\n  $__veeInject: false,\n  inject: {\n    $_veeObserver: {\n      from: '$_veeObserver',\n      default: function default$1 () {\n        if (!this.$vnode.context.$_veeObserver) {\n          this.$vnode.context.$_veeObserver = createObserver();\n        }\n\n        return this.$vnode.context.$_veeObserver;\n      }\n    }\n  },\n  props: {\n    vid: {\n      type: [String, Number],\n      default: function () {\n        PROVIDER_COUNTER++;\n\n        return (\"_vee_\" + PROVIDER_COUNTER);\n      }\n    },\n    name: {\n      type: String,\n      default: null\n    },\n    mode: {\n      type: [String, Function],\n      default: function () {\n        return getConfig().mode;\n      }\n    },\n    events: {\n      type: Array,\n      validate: function () {\n        /* istanbul ignore next */\n        if (true) {\n          warn('events prop and config will be deprecated in future version please use the interaction modes instead');\n        }\n\n        return true;\n      },\n      default: function () {\n        var events = getConfig().events;\n        if (typeof events === 'string') {\n          return events.split('|');\n        }\n\n        return events;\n      }\n    },\n    rules: {\n      type: [Object, String],\n      default: null\n    },\n    immediate: {\n      type: Boolean,\n      default: false\n    },\n    persist: {\n      type: Boolean,\n      default: false\n    },\n    bails: {\n      type: Boolean,\n      default: function () { return getConfig().fastExit; }\n    },\n    debounce: {\n      type: Number,\n      default: function () { return getConfig().delay || 0; }\n    },\n    tag: {\n      type: String,\n      default: 'span'\n    },\n    slim: {\n      type: Boolean,\n      default: false\n    }\n  },\n  watch: {\n    rules: {\n      deep: true,\n      handler: function handler (val, oldVal) {\n        this._needsValidation = !isEqual(val, oldVal);\n      }\n    }\n  },\n  data: function () { return ({\n    messages: [],\n    value: undefined,\n    initialized: false,\n    initialValue: undefined,\n    flags: createFlags(),\n    failedRules: {},\n    forceRequired: false,\n    isDeactivated: false,\n    id: null\n  }); },\n  computed: {\n    isValid: function isValid () {\n      return this.flags.valid;\n    },\n    fieldDeps: function fieldDeps () {\n      var this$1 = this;\n\n      var rules = normalizeRules(this.rules);\n\n      return Object.keys(rules).filter(RuleContainer.isTargetRule).map(function (rule) {\n        var depName = rules[rule][0];\n        watchCrossFieldDep(this$1, depName);\n\n        return depName;\n      });\n    },\n    normalizedEvents: function normalizedEvents () {\n      var this$1 = this;\n\n      var ref = computeModeSetting(this);\n      var on = ref.on;\n\n      return normalizeEvents(on || this.events || []).map(function (e) {\n        if (e === 'input') {\n          return this$1._inputEventName;\n        }\n\n        return e;\n      });\n    },\n    isRequired: function isRequired () {\n      var rules = normalizeRules(this.rules);\n      var forceRequired = this.forceRequired;\n\n      var isRequired = rules.required || forceRequired;\n      this.flags.required = isRequired;\n\n      return isRequired;\n    },\n    classes: function classes () {\n      var this$1 = this;\n\n      var names = getConfig().classNames;\n      return Object.keys(this.flags).reduce(function (classes, flag) {\n        var className = (names && names[flag]) || flag;\n        if (isNullOrUndefined(this$1.flags[flag])) {\n          return classes;\n        }\n\n        if (className) {\n          classes[className] = this$1.flags[flag];\n        }\n\n        return classes;\n      }, {});\n    }\n  },\n  render: function render (h) {\n    var this$1 = this;\n\n    this.registerField();\n    var ctx = createValidationCtx(this);\n\n    // Gracefully handle non-existent scoped slots.\n    var slot = this.$scopedSlots.default;\n    /* istanbul ignore next */\n    if (!isCallable(slot)) {\n      if (true) {\n        warn('ValidationProvider expects a scoped slot. Did you forget to add \"v-slot\" to your slot?');\n      }\n\n      return h(this.tag, this.$slots.default);\n    }\n\n    var nodes = slot(ctx);\n    // Handle single-root slot.\n    extractVNodes(nodes).forEach(function (input) {\n      addListeners.call(this$1, input);\n    });\n\n    return this.slim ? createRenderless(h, nodes) : h(this.tag, nodes);\n  },\n  beforeDestroy: function beforeDestroy () {\n    // cleanup reference.\n    this.$_veeObserver.unsubscribe(this);\n  },\n  activated: function activated () {\n    this.$_veeObserver.subscribe(this);\n    this.isDeactivated = false;\n  },\n  deactivated: function deactivated () {\n    this.$_veeObserver.unsubscribe(this);\n    this.isDeactivated = true;\n  },\n  methods: {\n    setFlags: function setFlags (flags) {\n      var this$1 = this;\n\n      Object.keys(flags).forEach(function (flag) {\n        this$1.flags[flag] = flags[flag];\n      });\n    },\n    syncValue: function syncValue (e) {\n      var value = normalizeValue$1(e);\n      this.value = value;\n      this.flags.changed = this.initialValue !== value;\n    },\n    reset: function reset () {\n      this.messages = [];\n      this._pendingValidation = null;\n      this.initialValue = this.value;\n      var flags = createFlags();\n      this.setFlags(flags);\n    },\n    validate: function validate () {\n      var this$1 = this;\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      if (args.length > 0) {\n        this.syncValue(args[0]);\n      }\n\n      return this.validateSilent().then(function (result) {\n        this$1.applyResult(result);\n\n        return result;\n      });\n    },\n    validateSilent: function validateSilent () {\n      var this$1 = this;\n\n      this.setFlags({ pending: true });\n\n      return $validator.verify(this.value, this.rules, {\n        name: this.name,\n        values: createValuesLookup(this),\n        bails: this.bails\n      }).then(function (result) {\n        this$1.setFlags({ pending: false });\n        if (!this$1.isRequired) {\n          this$1.setFlags({ valid: result.valid, invalid: !result.valid });\n        }\n\n        return result;\n      });\n    },\n    applyResult: function applyResult (ref) {\n      var errors = ref.errors;\n      var failedRules = ref.failedRules;\n\n      this.messages = errors;\n      this.failedRules = assign({}, failedRules);\n      this.setFlags({\n        valid: !errors.length,\n        changed: this.value !== this.initialValue,\n        invalid: !!errors.length,\n        validated: true\n      });\n    },\n    registerField: function registerField () {\n      if (!$validator) {\n        $validator = getValidator() || new Validator(null, { fastExit: getConfig().fastExit });\n      }\n\n      updateRenderingContextRefs(this);\n    }\n  }\n};\n\nfunction createValidationCtx (ctx) {\n  return {\n    errors: ctx.messages,\n    flags: ctx.flags,\n    classes: ctx.classes,\n    valid: ctx.isValid,\n    failedRules: ctx.failedRules,\n    reset: function () { return ctx.reset(); },\n    validate: function () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      return ctx.validate.apply(ctx, args);\n  },\n    aria: {\n      'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\n      'aria-required': ctx.isRequired ? 'true' : 'false'\n    }\n  };\n}\n\nfunction normalizeValue$1 (value) {\n  if (isEvent(value)) {\n    return value.target.type === 'file' ? toArray(value.target.files) : value.target.value;\n  }\n\n  return value;\n}\n\n/**\n * Determines if a provider needs to run validation.\n */\nfunction shouldValidate (ctx, model) {\n  // when an immediate/initial validation is needed and wasn't done before.\n  if (!ctx._ignoreImmediate && ctx.immediate) {\n    return true;\n  }\n\n  // when the value changes for whatever reason.\n  if (ctx.value !== model.value) {\n    return true;\n  }\n\n  // when it needs validation due to props/cross-fields changes.\n  if (ctx._needsValidation) {\n    return true;\n  }\n\n  // when the initial value is undefined and the field wasn't rendered yet.\n  if (!ctx.initialized && model.value === undefined) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction computeModeSetting (ctx) {\n  var compute = isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode];\n\n  return compute({\n    errors: ctx.messages,\n    value: ctx.value,\n    flags: ctx.flags\n  });\n}\n\nfunction onRenderUpdate (model) {\n  if (!this.initialized) {\n    this.initialValue = model.value;\n  }\n\n  var validateNow = shouldValidate(this, model);\n  this._needsValidation = false;\n  this.value = model.value;\n  this._ignoreImmediate = true;\n\n  if (!validateNow) {\n    return;\n  }\n\n  this.validateSilent().then(this.immediate || this.flags.validated ? this.applyResult : function (x) { return x; });\n}\n\n// Creates the common handlers for a validatable context.\nfunction createCommonHandlers (ctx) {\n  var onInput = function (e) {\n    ctx.syncValue(e); // track and keep the value updated.\n    ctx.setFlags({ dirty: true, pristine: false });\n  };\n\n  // Blur event listener.\n  var onBlur = function () {\n    ctx.setFlags({ touched: true, untouched: false });\n  };\n\n  var onValidate = ctx.$veeHandler;\n  var mode = computeModeSetting(ctx);\n\n  // Handle debounce changes.\n  if (!onValidate || ctx.$veeDebounce !== ctx.debounce) {\n    onValidate = debounce(\n      function () {\n        ctx.$nextTick(function () {\n          var pendingPromise = ctx.validateSilent();\n          // avoids race conditions between successive validations.\n          ctx._pendingValidation = pendingPromise;\n          pendingPromise.then(function (result) {\n            if (pendingPromise === ctx._pendingValidation) {\n              ctx.applyResult(result);\n              ctx._pendingValidation = null;\n            }\n          });\n        });\n      },\n      mode.debounce || ctx.debounce\n    );\n\n    // Cache the handler so we don't create it each time.\n    ctx.$veeHandler = onValidate;\n    // cache the debounce value so we detect if it was changed.\n    ctx.$veeDebounce = ctx.debounce;\n  }\n\n  return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\n}\n\n// Adds all plugin listeners to the vnode.\nfunction addListeners (node) {\n  var model = findModel(node);\n  // cache the input eventName.\n  this._inputEventName = this._inputEventName || getInputEventName(node, model);\n\n  onRenderUpdate.call(this, model);\n\n  var ref = createCommonHandlers(this);\n  var onInput = ref.onInput;\n  var onBlur = ref.onBlur;\n  var onValidate = ref.onValidate;\n  addVNodeListener(node, this._inputEventName, onInput);\n  addVNodeListener(node, 'blur', onBlur);\n\n  // add the validation listeners.\n  this.normalizedEvents.forEach(function (evt) {\n    addVNodeListener(node, evt, onValidate);\n  });\n\n  this.initialized = true;\n}\n\nfunction createValuesLookup (ctx) {\n  var providers = ctx.$_veeObserver.refs;\n\n  return ctx.fieldDeps.reduce(function (acc, depName) {\n    if (!providers[depName]) {\n      return acc;\n    }\n\n    acc[depName] = providers[depName].value;\n\n    return acc;\n  }, {});\n}\n\nfunction updateRenderingContextRefs (ctx) {\n  // IDs should not be nullable.\n  if (isNullOrUndefined(ctx.id) && ctx.id === ctx.vid) {\n    ctx.id = PROVIDER_COUNTER;\n    PROVIDER_COUNTER++;\n  }\n\n  var id = ctx.id;\n  var vid = ctx.vid;\n  // Nothing has changed.\n  if (ctx.isDeactivated || (id === vid && ctx.$_veeObserver.refs[id])) {\n    return;\n  }\n\n  // vid was changed.\n  if (id !== vid && ctx.$_veeObserver.refs[id] === ctx) {\n    ctx.$_veeObserver.unsubscribe({ vid: id });\n  }\n\n  ctx.$_veeObserver.subscribe(ctx);\n  ctx.id = vid;\n}\n\nfunction createObserver () {\n  return {\n    refs: {},\n    subscribe: function subscribe (ctx) {\n      this.refs[ctx.vid] = ctx;\n    },\n    unsubscribe: function unsubscribe (ctx) {\n      delete this.refs[ctx.vid];\n    }\n  };\n}\n\nfunction watchCrossFieldDep (ctx, depName, withHooks) {\n  if ( withHooks === void 0 ) withHooks = true;\n\n  var providers = ctx.$_veeObserver.refs;\n  if (!ctx._veeWatchers) {\n    ctx._veeWatchers = {};\n  }\n\n  if (!providers[depName] && withHooks) {\n    return ctx.$once('hook:mounted', function () {\n      watchCrossFieldDep(ctx, depName, false);\n    });\n  }\n\n  if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\n    ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\n      if (ctx.flags.validated) {\n        ctx._needsValidation = true;\n        ctx.validate();\n      }\n    });\n  }\n}\n\nvar flagMergingStrategy = {\n  pristine: 'every',\n  dirty: 'some',\n  touched: 'some',\n  untouched: 'every',\n  valid: 'every',\n  invalid: 'some',\n  pending: 'some',\n  validated: 'every'\n};\n\nfunction mergeFlags (lhs, rhs, strategy) {\n  var stratName = flagMergingStrategy[strategy];\n\n  return [lhs, rhs][stratName](function (f) { return f; });\n}\n\nvar OBSERVER_COUNTER = 0;\n\nvar ValidationObserver = {\n  name: 'ValidationObserver',\n  provide: function provide () {\n    return {\n      $_veeObserver: this\n    };\n  },\n  inject: {\n    $_veeObserver: {\n      from: '$_veeObserver',\n      default: function default$1 () {\n        if (!this.$vnode.context.$_veeObserver) {\n          return null;\n        }\n\n        return this.$vnode.context.$_veeObserver;\n      }\n    }\n  },\n  props: {\n    tag: {\n      type: String,\n      default: 'span'\n    },\n    slim: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function () { return ({\n    vid: (\"obs_\" + (OBSERVER_COUNTER++)),\n    refs: {},\n    observers: [],\n    persistedStore: {}\n  }); },\n  computed: {\n    ctx: function ctx () {\n      var this$1 = this;\n\n      var ctx = {\n        errors: {},\n        validate: function (arg) {\n          var promise = this$1.validate(arg);\n\n          return {\n            then: function then (thenable) {\n              return promise.then(function (success) {\n                if (success && isCallable(thenable)) {\n                  return Promise.resolve(thenable());\n                }\n\n                return Promise.resolve(success);\n              });\n            }\n          };\n        },\n        reset: function () { return this$1.reset(); }\n      };\n\n      return values(this.refs).concat( Object.keys(this.persistedStore).map(function (key) {\n          return {\n            vid: key,\n            flags: this$1.persistedStore[key].flags,\n            messages: this$1.persistedStore[key].errors\n          };\n        }),\n        this.observers ).reduce(function (acc, provider) {\n        Object.keys(flagMergingStrategy).forEach(function (flag) {\n          var flags = provider.flags || provider.ctx;\n          if (!(flag in acc)) {\n            acc[flag] = flags[flag];\n            return;\n          }\n\n          acc[flag] = mergeFlags(acc[flag], flags[flag], flag);\n        });\n\n        acc.errors[provider.vid] = provider.messages || values(provider.ctx.errors).reduce(function (errs, obsErrors) {\n          return errs.concat(obsErrors);\n        }, []);\n\n        return acc;\n      }, ctx);\n    }\n  },\n  created: function created () {\n    if (this.$_veeObserver) {\n      this.$_veeObserver.subscribe(this, 'observer');\n    }\n  },\n  activated: function activated () {\n    if (this.$_veeObserver) {\n      this.$_veeObserver.subscribe(this, 'observer');\n    }\n  },\n  deactivated: function deactivated () {\n    if (this.$_veeObserver) {\n      this.$_veeObserver.unsubscribe(this, 'observer');\n    }\n  },\n  beforeDestroy: function beforeDestroy () {\n    if (this.$_veeObserver) {\n      this.$_veeObserver.unsubscribe(this, 'observer');\n    }\n  },\n  render: function render (h) {\n    var slots = this.$slots.default || this.$scopedSlots.default || [];\n    if (isCallable(slots)) {\n      slots = slots(this.ctx);\n    }\n\n    return this.slim ? createRenderless(h, slots) : h(this.tag, { on: this.$listeners, attrs: this.$attrs }, slots);\n  },\n  methods: {\n    subscribe: function subscribe (subscriber, kind) {\n      var obj;\n\n      if ( kind === void 0 ) kind = 'provider';\n      if (kind === 'observer') {\n        this.observers.push(subscriber);\n        return;\n      }\n\n      this.refs = Object.assign({}, this.refs, ( obj = {}, obj[subscriber.vid] = subscriber, obj ));\n      if (subscriber.persist && this.persistedStore[subscriber.vid]) {\n        this.restoreProviderState(subscriber);\n      }\n    },\n    unsubscribe: function unsubscribe (ref, kind) {\n      var vid = ref.vid;\n      if ( kind === void 0 ) kind = 'provider';\n\n      if (kind === 'provider') {\n        this.removeProvider(vid);\n      }\n\n      var idx = findIndex(this.observers, function (o) { return o.vid === vid; });\n      if (idx !== -1) {\n        this.observers.splice(idx, 1);\n      }\n    },\n    validate: function validate (ref) {\n      if ( ref === void 0 ) ref = { silent: false };\n      var silent = ref.silent;\n\n      return Promise.all(values(this.refs).map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }).concat( this.observers.map(function (obs) { return obs.validate({ silent: silent }); })\n      )).then(function (results) { return results.every(function (r) { return r; }); });\n    },\n    reset: function reset () {\n      var this$1 = this;\n\n      Object.keys(this.persistedStore).forEach(function (key) {\n        this$1.$delete(this$1.persistedStore, key);\n      });\n      return values(this.refs).concat( this.observers).forEach(function (ref) { return ref.reset(); });\n    },\n    restoreProviderState: function restoreProviderState (provider) {\n      var state = this.persistedStore[provider.vid];\n      provider.setFlags(state.flags);\n      provider.applyResult(state);\n      this.$delete(this.persistedStore, provider.vid);\n    },\n    removeProvider: function removeProvider (vid) {\n      var obj;\n\n      var provider = this.refs[vid];\n      // save it for the next time.\n      if (provider && provider.persist) {\n        /* istanbul ignore else */\n        if (true) {\n          if (vid.indexOf('_vee_') === 0) {\n            warn('Please provide a `vid` prop when using `persist`, there might be unexpected issues otherwise.');\n          }\n        }\n\n        this.persistedStore = assign({}, this.persistedStore, ( obj = {}, obj[vid] = {\n            flags: provider.flags,\n            errors: provider.messages,\n            failedRules: provider.failedRules\n          }, obj ));\n      }\n\n      this.$delete(this.refs, vid);\n    },\n  }\n};\n\nfunction withValidation (component, ctxToProps) {\n  if ( ctxToProps === void 0 ) ctxToProps = null;\n\n  var options = isCallable(component) ? component.options : component;\n  options.$__veeInject = false;\n  var hoc = {\n    name: ((options.name || 'AnonymousHoc') + \"WithValidation\"),\n    props: assign({}, ValidationProvider.props),\n    data: ValidationProvider.data,\n    computed: assign({}, ValidationProvider.computed),\n    methods: assign({}, ValidationProvider.methods),\n    $__veeInject: false,\n    beforeDestroy: ValidationProvider.beforeDestroy,\n    inject: ValidationProvider.inject\n  };\n\n  // Default ctx converts ctx props to component props.\n  if (!ctxToProps) {\n    ctxToProps = function (ctx) { return ctx; };\n  }\n\n  var eventName = (options.model && options.model.event) || 'input';\n\n  hoc.render = function (h) {\n    var obj;\n\n    this.registerField();\n    var vctx = createValidationCtx(this);\n    var listeners = assign({}, this.$listeners);\n\n    var model = findModel(this.$vnode);\n    this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\n    onRenderUpdate.call(this, model);\n\n    var ref = createCommonHandlers(this);\n    var onInput = ref.onInput;\n    var onBlur = ref.onBlur;\n    var onValidate = ref.onValidate;\n\n    mergeVNodeListeners(listeners, eventName, onInput);\n    mergeVNodeListeners(listeners, 'blur', onBlur);\n    this.normalizedEvents.forEach(function (evt, idx) {\n      mergeVNodeListeners(listeners, evt, onValidate);\n    });\n\n    // Props are any attrs not associated with ValidationProvider Plus the model prop.\n    // WARNING: Accidental prop overwrite will probably happen.\n    var ref$1 = findModelConfig(this.$vnode) || { prop: 'value' };\n    var prop = ref$1.prop;\n    var props = assign({}, this.$attrs, ( obj = {}, obj[prop] = model.value, obj ), ctxToProps(vctx));\n\n    return h(options, {\n      attrs: this.$attrs,\n      props: props,\n      on: listeners\n    }, normalizeSlots(this.$slots, this.$vnode.context));\n  };\n\n  return hoc;\n}\n\nvar version = '2.2.15';\n\nObject.keys(Rules).forEach(function (rule) {\n  Validator.extend(rule, Rules[rule].validate, assign({}, Rules[rule].options, { paramNames: Rules[rule].paramNames }));\n});\n\n// Merge the english messages.\nValidator.localize({ en: locale });\n\nvar install = VeeValidate$1.install;\n\nVeeValidate$1.version = version;\nVeeValidate$1.mapFields = mapFields;\nVeeValidate$1.ValidationProvider = ValidationProvider;\nVeeValidate$1.ValidationObserver = ValidationObserver;\nVeeValidate$1.withValidation = withValidation;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (VeeValidate$1);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVlLXZhbGlkYXRlL2Rpc3QvdmVlLXZhbGlkYXRlLmVzbS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWUtdmFsaWRhdGUvZGlzdC92ZWUtdmFsaWRhdGUuZXNtLmpzPzdiYjEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gICogdmVlLXZhbGlkYXRlIHYyLjIuMTVcbiAgKiAoYykgMjAxOSBBYmRlbHJhaG1hbiBBd2FkXG4gICogQGxpY2Vuc2UgTUlUXG4gICovXG4vLyBcblxudmFyIGlzVGV4dElucHV0ID0gZnVuY3Rpb24gKGVsKSB7XG4gIHJldHVybiBpbmNsdWRlcyhbJ3RleHQnLCAncGFzc3dvcmQnLCAnc2VhcmNoJywgJ2VtYWlsJywgJ3RlbCcsICd1cmwnLCAndGV4dGFyZWEnLCAnbnVtYmVyJ10sIGVsLnR5cGUpO1xufTtcblxudmFyIGlzQ2hlY2tib3hPclJhZGlvSW5wdXQgPSBmdW5jdGlvbiAoZWwpIHtcbiAgcmV0dXJuIGluY2x1ZGVzKFsncmFkaW8nLCAnY2hlY2tib3gnXSwgZWwudHlwZSk7XG59O1xuXG52YXIgaXNEYXRlSW5wdXQgPSBmdW5jdGlvbiAoZWwpIHtcbiAgcmV0dXJuIGluY2x1ZGVzKFsnZGF0ZScsICd3ZWVrJywgJ21vbnRoJywgJ2RhdGV0aW1lLWxvY2FsJywgJ3RpbWUnXSwgZWwudHlwZSk7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgYXR0cmlidXRlLiB0aGUgbmFtZSBtdXN0IGJlIGtlYmFiLWNhc2UuXG4gKi9cbnZhciBnZXREYXRhQXR0cmlidXRlID0gZnVuY3Rpb24gKGVsLCBuYW1lKSB7IHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoKFwiZGF0YS12di1cIiArIG5hbWUpKTsgfTtcblxudmFyIGlzTmFOJDEgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKCdpc05hTicgaW4gTnVtYmVyKSB7XG4gICAgcmV0dXJuIE51bWJlci5pc05hTih2YWx1ZSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgcmV0dXJuIHR5cGVvZih2YWx1ZSkgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSB2YWx1ZTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSB2YWx1ZXMgYXJlIGVpdGhlciBudWxsIG9yIHVuZGVmaW5lZC5cbiAqL1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdmFsdWVzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHdoaWxlICggbGVuLS0gKSB2YWx1ZXNbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICByZXR1cm4gdmFsdWVzLmV2ZXJ5KGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICB9KTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgZGVmYXVsdCBmbGFncyBvYmplY3QuXG4gKi9cbnZhciBjcmVhdGVGbGFncyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gIHVudG91Y2hlZDogdHJ1ZSxcbiAgdG91Y2hlZDogZmFsc2UsXG4gIGRpcnR5OiBmYWxzZSxcbiAgcHJpc3RpbmU6IHRydWUsXG4gIHZhbGlkOiBudWxsLFxuICBpbnZhbGlkOiBudWxsLFxuICB2YWxpZGF0ZWQ6IGZhbHNlLFxuICBwZW5kaW5nOiBmYWxzZSxcbiAgcmVxdWlyZWQ6IGZhbHNlLFxuICBjaGFuZ2VkOiBmYWxzZVxufSk7IH07XG5cbi8qKlxuICogU2hhbGxvdyBvYmplY3QgY29tcGFyaXNvbi5cbiAqL1xudmFyIGlzRXF1YWwgPSBmdW5jdGlvbiAobGhzLCByaHMpIHtcbiAgaWYgKGxocyBpbnN0YW5jZW9mIFJlZ0V4cCAmJiByaHMgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICByZXR1cm4gaXNFcXVhbChsaHMuc291cmNlLCByaHMuc291cmNlKSAmJiBpc0VxdWFsKGxocy5mbGFncywgcmhzLmZsYWdzKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGxocykgJiYgQXJyYXkuaXNBcnJheShyaHMpKSB7XG4gICAgaWYgKGxocy5sZW5ndGggIT09IHJocy5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxocy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFpc0VxdWFsKGxoc1tpXSwgcmhzW2ldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBpZiBib3RoIGFyZSBvYmplY3RzLCBjb21wYXJlIGVhY2gga2V5IHJlY3Vyc2l2ZWx5LlxuICBpZiAoaXNPYmplY3QobGhzKSAmJiBpc09iamVjdChyaHMpKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGxocykuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIGlzRXF1YWwobGhzW2tleV0sIHJoc1trZXldKTtcbiAgICB9KSAmJiBPYmplY3Qua2V5cyhyaHMpLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBpc0VxdWFsKGxoc1trZXldLCByaHNba2V5XSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAoaXNOYU4kMShsaHMpICYmIGlzTmFOJDEocmhzKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGxocyA9PT0gcmhzO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBpbnB1dCBmaWVsZCBzY29wZS5cbiAqL1xudmFyIGdldFNjb3BlID0gZnVuY3Rpb24gKGVsKSB7XG4gIHZhciBzY29wZSA9IGdldERhdGFBdHRyaWJ1dGUoZWwsICdzY29wZScpO1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoc2NvcGUpKSB7XG4gICAgdmFyIGZvcm0gPSBnZXRGb3JtKGVsKTtcblxuICAgIGlmIChmb3JtKSB7XG4gICAgICBzY29wZSA9IGdldERhdGFBdHRyaWJ1dGUoZm9ybSwgJ3Njb3BlJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZChzY29wZSkgPyBzY29wZSA6IG51bGw7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgY2xvc2VzdCBmb3JtIGVsZW1lbnQuXG4gKi9cbnZhciBnZXRGb3JtID0gZnVuY3Rpb24gKGVsKSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChlbCkpIHsgcmV0dXJuIG51bGw7IH1cblxuICBpZiAoZWwudGFnTmFtZSA9PT0gJ0ZPUk0nKSB7IHJldHVybiBlbDsgfVxuXG4gIGlmICghaXNOdWxsT3JVbmRlZmluZWQoZWwuZm9ybSkpIHsgcmV0dXJuIGVsLmZvcm07IH1cblxuICByZXR1cm4gIWlzTnVsbE9yVW5kZWZpbmVkKGVsLnBhcmVudE5vZGUpID8gZ2V0Rm9ybShlbC5wYXJlbnROb2RlKSA6IG51bGw7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGluIGFuIG9iamVjdCBzYWZlbHkuXG4gKi9cbnZhciBnZXRQYXRoID0gZnVuY3Rpb24gKHBhdGgsIHRhcmdldCwgZGVmKSB7XG4gIGlmICggZGVmID09PSB2b2lkIDAgKSBkZWYgPSB1bmRlZmluZWQ7XG5cbiAgaWYgKCFwYXRoIHx8ICF0YXJnZXQpIHsgcmV0dXJuIGRlZjsgfVxuXG4gIHZhciB2YWx1ZSA9IHRhcmdldDtcbiAgcGF0aC5zcGxpdCgnLicpLmV2ZXJ5KGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gdmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWVbcHJvcF07XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhbHVlID0gZGVmO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KTtcblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBwYXRoIGV4aXN0cyB3aXRoaW4gYW4gb2JqZWN0LlxuICovXG52YXIgaGFzUGF0aCA9IGZ1bmN0aW9uIChwYXRoLCB0YXJnZXQpIHtcbiAgdmFyIG9iaiA9IHRhcmdldDtcbiAgdmFyIHByZXZpb3VzUGF0aCA9IG51bGw7XG4gIHZhciBpc051bGxPck5vbk9iamVjdCA9IGZhbHNlO1xuICB2YXIgaXNWYWxpZFBhdGggPSBwYXRoLnNwbGl0KCcuJykucmVkdWNlKGZ1bmN0aW9uIChyZWR1Y2VyLCBwcm9wKSB7XG4gICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgICBpc051bGxPck5vbk9iamVjdCA9IHRydWU7XG4gICAgICByZXR1cm4gcmVkdWNlciAmJiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCBpbiBvYmopIHtcbiAgICAgIG9iaiA9IG9ialtwcm9wXTtcbiAgICAgIHByZXZpb3VzUGF0aCA9IHByZXZpb3VzUGF0aCA9PT0gbnVsbCA/IHByb3AgOiBwcmV2aW91c1BhdGggKyAnLicgKyBwcm9wO1xuXG4gICAgICByZXR1cm4gcmVkdWNlciAmJiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiByZWR1Y2VyICYmIGZhbHNlO1xuICB9LCB0cnVlKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChpc051bGxPck5vbk9iamVjdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByZXZpb3VzUGF0aCArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpc1ZhbGlkUGF0aDtcbn07XG5cbi8qKlxuICogUGFyc2VzIGEgcnVsZSBzdHJpbmcgZXhwcmVzc2lvbi5cbiAqL1xudmFyIHBhcnNlUnVsZSA9IGZ1bmN0aW9uIChydWxlKSB7XG4gIHZhciBwYXJhbXMgPSBbXTtcbiAgdmFyIG5hbWUgPSBydWxlLnNwbGl0KCc6JylbMF07XG5cbiAgaWYgKGluY2x1ZGVzKHJ1bGUsICc6JykpIHtcbiAgICBwYXJhbXMgPSBydWxlLnNwbGl0KCc6Jykuc2xpY2UoMSkuam9pbignOicpLnNwbGl0KCcsJyk7XG4gIH1cblxuICByZXR1cm4geyBuYW1lOiBuYW1lLCBwYXJhbXM6IHBhcmFtcyB9O1xufTtcblxuLyoqXG4gKiBEZWJvdW5jZXMgYSBmdW5jdGlvbi5cbiAqL1xudmFyIGRlYm91bmNlID0gZnVuY3Rpb24gKGZuLCB3YWl0LCB0b2tlbikge1xuICBpZiAoIHdhaXQgPT09IHZvaWQgMCApIHdhaXQgPSAwO1xuICBpZiAoIHRva2VuID09PSB2b2lkIDAgKSB0b2tlbiA9IHsgY2FuY2VsbGVkOiBmYWxzZSB9O1xuXG4gIGlmICh3YWl0ID09PSAwKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgdmFyIHRpbWVvdXQ7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIGZuIGNhbGwgd2FzIGNhbmNlbGxlZC5cbiAgICAgIGlmICghdG9rZW4uY2FuY2VsbGVkKSB7IGZuLmFwcGx5KHZvaWQgMCwgYXJncyk7IH1cbiAgICB9O1xuXG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgICBpZiAoIXRpbWVvdXQpIHsgZm4uYXBwbHkodm9pZCAwLCBhcmdzKTsgfVxuICB9O1xufTtcblxuLyoqXG4gKiBBcHBlbmRzIGEgcnVsZSBkZWZpbml0aW9uIHRvIGEgbGlzdCBvZiBydWxlcy5cbiAqL1xudmFyIGFwcGVuZFJ1bGUgPSBmdW5jdGlvbiAocnVsZSwgcnVsZXMpIHtcbiAgaWYgKCFydWxlcykge1xuICAgIHJldHVybiBub3JtYWxpemVSdWxlcyhydWxlKTtcbiAgfVxuXG4gIGlmICghcnVsZSkge1xuICAgIHJldHVybiBub3JtYWxpemVSdWxlcyhydWxlcyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHJ1bGVzID09PSAnc3RyaW5nJykge1xuICAgIHJ1bGVzID0gbm9ybWFsaXplUnVsZXMocnVsZXMpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2lnbih7fSwgcnVsZXMsIG5vcm1hbGl6ZVJ1bGVzKHJ1bGUpKTtcbn07XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgZ2l2ZW4gcnVsZXMgZXhwcmVzc2lvbi5cbiAqL1xudmFyIG5vcm1hbGl6ZVJ1bGVzID0gZnVuY3Rpb24gKHJ1bGVzKSB7XG4gIC8vIGlmIGZhbHN5IHZhbHVlIHJldHVybiBhbiBlbXB0eSBvYmplY3QuXG4gIGlmICghcnVsZXMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBpZiAoaXNPYmplY3QocnVsZXMpKSB7XG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiBPYmplY3Qua2V5cyhydWxlcykucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgICB2YXIgcGFyYW1zID0gW107XG4gICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICBpZiAocnVsZXNbY3Vycl0gPT09IHRydWUpIHtcbiAgICAgICAgcGFyYW1zID0gW107XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocnVsZXNbY3Vycl0pKSB7XG4gICAgICAgIHBhcmFtcyA9IHJ1bGVzW2N1cnJdO1xuICAgICAgfSBlbHNlIGlmIChpc09iamVjdChydWxlc1tjdXJyXSkpIHtcbiAgICAgICAgcGFyYW1zID0gcnVsZXNbY3Vycl07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbXMgPSBbcnVsZXNbY3Vycl1dO1xuICAgICAgfVxuXG4gICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICBpZiAocnVsZXNbY3Vycl0gIT09IGZhbHNlKSB7XG4gICAgICAgIHByZXZbY3Vycl0gPSBwYXJhbXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcnVsZXMgIT09ICdzdHJpbmcnKSB7XG4gICAgd2FybigncnVsZXMgbXVzdCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb2JqZWN0LicpO1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHJldHVybiBydWxlcy5zcGxpdCgnfCcpLnJlZHVjZShmdW5jdGlvbiAocHJldiwgcnVsZSkge1xuICAgIHZhciBwYXJzZWRSdWxlID0gcGFyc2VSdWxlKHJ1bGUpO1xuICAgIGlmICghcGFyc2VkUnVsZS5uYW1lKSB7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9XG5cbiAgICBwcmV2W3BhcnNlZFJ1bGUubmFtZV0gPSBwYXJzZWRSdWxlLnBhcmFtcztcbiAgICByZXR1cm4gcHJldjtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBFbWl0cyBhIHdhcm5pbmcgdG8gdGhlIGNvbnNvbGUuXG4gKi9cbnZhciB3YXJuID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgY29uc29sZS53YXJuKChcIlt2ZWUtdmFsaWRhdGVdIFwiICsgbWVzc2FnZSkpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBicmFuZGVkIGVycm9yIG9iamVjdC5cbiAqL1xudmFyIGNyZWF0ZUVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHsgcmV0dXJuIG5ldyBFcnJvcigoXCJbdmVlLXZhbGlkYXRlXSBcIiArIG1lc3NhZ2UpKTsgfTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHZhbHVlIGlzIGFuIG9iamVjdC5cbiAqL1xudmFyIGlzT2JqZWN0ID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICE9PSBudWxsICYmIG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiAhIEFycmF5LmlzQXJyYXkob2JqKTsgfTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmdW5jdGlvbiBpcyBjYWxsYWJsZS5cbiAqL1xudmFyIGlzQ2FsbGFibGUgPSBmdW5jdGlvbiAoZnVuYykgeyByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbic7IH07XG5cbi8qKlxuICogQ2hlY2sgaWYgZWxlbWVudCBoYXMgdGhlIGNzcyBjbGFzcyBvbiBpdC5cbiAqL1xudmFyIGhhc0NsYXNzID0gZnVuY3Rpb24gKGVsLCBjbGFzc05hbWUpIHtcbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgIHJldHVybiBlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHJldHVybiAhIWVsLmNsYXNzTmFtZS5tYXRjaChuZXcgUmVnRXhwKChcIihcXFxcc3xeKVwiICsgY2xhc3NOYW1lICsgXCIoXFxcXHN8JClcIikpKTtcbn07XG5cbi8qKlxuICogQWRkcyB0aGUgcHJvdmlkZWQgY3NzIGNsYXNzTmFtZSB0byB0aGUgZWxlbWVudC5cbiAqL1xudmFyIGFkZENsYXNzID0gZnVuY3Rpb24gKGVsLCBjbGFzc05hbWUpIHtcbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgIGVsLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIWhhc0NsYXNzKGVsLCBjbGFzc05hbWUpKSB7XG4gICAgZWwuY2xhc3NOYW1lICs9IFwiIFwiICsgY2xhc3NOYW1lO1xuICB9XG59O1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgcHJvdmlkZWQgY3NzIGNsYXNzTmFtZSBmcm9tIHRoZSBlbGVtZW50LlxuICovXG52YXIgcmVtb3ZlQ2xhc3MgPSBmdW5jdGlvbiAoZWwsIGNsYXNzTmFtZSkge1xuICBpZiAoZWwuY2xhc3NMaXN0KSB7XG4gICAgZWwuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChoYXNDbGFzcyhlbCwgY2xhc3NOYW1lKSkge1xuICAgIHZhciByZWcgPSBuZXcgUmVnRXhwKChcIihcXFxcc3xeKVwiICsgY2xhc3NOYW1lICsgXCIoXFxcXHN8JClcIikpO1xuICAgIGVsLmNsYXNzTmFtZSA9IGVsLmNsYXNzTmFtZS5yZXBsYWNlKHJlZywgJyAnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBZGRzIG9yIHJlbW92ZXMgYSBjbGFzcyBuYW1lIG9uIHRoZSBpbnB1dCBkZXBlbmRpbmcgb24gdGhlIHN0YXR1cyBmbGFnLlxuICovXG52YXIgdG9nZ2xlQ2xhc3MgPSBmdW5jdGlvbiAoZWwsIGNsYXNzTmFtZSwgc3RhdHVzKSB7XG4gIGlmICghZWwgfHwgIWNsYXNzTmFtZSkgeyByZXR1cm47IH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShjbGFzc05hbWUpKSB7XG4gICAgY2xhc3NOYW1lLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKGVsLCBpdGVtLCBzdGF0dXMpOyB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc3RhdHVzKSB7XG4gICAgcmV0dXJuIGFkZENsYXNzKGVsLCBjbGFzc05hbWUpO1xuICB9XG5cbiAgcmVtb3ZlQ2xhc3MoZWwsIGNsYXNzTmFtZSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFycmF5LWxpa2Ugb2JqZWN0IHRvIGFycmF5LCBwcm92aWRlcyBhIHNpbXBsZSBwb2x5ZmlsbCBmb3IgQXJyYXkuZnJvbVxuICovXG52YXIgdG9BcnJheSA9IGZ1bmN0aW9uIChhcnJheUxpa2UpIHtcbiAgaWYgKGlzQ2FsbGFibGUoQXJyYXkuZnJvbSkpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShhcnJheUxpa2UpO1xuICB9XG5cbiAgdmFyIGFycmF5ID0gW107XG4gIHZhciBsZW5ndGggPSBhcnJheUxpa2UubGVuZ3RoO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgYXJyYXkucHVzaChhcnJheUxpa2VbaV0pO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGFycmF5O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheS1saWtlIG9iamVjdCB0byBhcnJheSBhbmQgcGxhY2Ugb3RoZXIgZWxlbWVudHMgaW4gYW4gYXJyYXlcbiAqL1xudmFyIGVuc3VyZUFycmF5ID0gZnVuY3Rpb24gKGFycmF5TGlrZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheUxpa2UpKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCggYXJyYXlMaWtlICk7XG4gIH1cbiAgdmFyIGFycmF5ID0gdG9BcnJheShhcnJheUxpa2UpO1xuICByZXR1cm4gaXNFbXB0eUFycmF5KGFycmF5KSA/IFthcnJheUxpa2VdIDogYXJyYXk7XG59O1xuXG4vKipcbiAqIEFzc2lnbiBwb2x5ZmlsbCBmcm9tIHRoZSBtZG4uXG4gKi9cbnZhciBhc3NpZ24gPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIHZhciBvdGhlcnMgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gIHdoaWxlICggbGVuLS0gPiAwICkgb3RoZXJzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpc0NhbGxhYmxlKE9iamVjdC5hc3NpZ24pKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24uYXBwbHkoT2JqZWN0LCBbIHRhcmdldCBdLmNvbmNhdCggb3RoZXJzICkpO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHRhcmdldCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Jyk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB2YXIgdG8gPSBPYmplY3QodGFyZ2V0KTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgb3RoZXJzLmZvckVhY2goZnVuY3Rpb24gKGFyZykge1xuICAgIC8vIFNraXAgb3ZlciBpZiB1bmRlZmluZWQgb3IgbnVsbFxuICAgIGlmIChhcmcgIT0gbnVsbCkge1xuICAgICAgT2JqZWN0LmtleXMoYXJnKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdG9ba2V5XSA9IGFyZ1trZXldO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIHRvO1xufTtcblxudmFyIGlkID0gMDtcbnZhciBpZFRlbXBsYXRlID0gJ3tpZH0nO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBpZC5cbiAqL1xudmFyIHVuaXFJZCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gaGFuZGxlIHRvbyBtYW55IHVzZXMgb2YgdW5pcUlkLCBhbHRob3VnaCB1bmxpa2VseS5cbiAgaWYgKGlkID49IDk5OTkpIHtcbiAgICBpZCA9IDA7XG4gICAgLy8gc2hpZnQgdGhlIHRlbXBsYXRlLlxuICAgIGlkVGVtcGxhdGUgPSBpZFRlbXBsYXRlLnJlcGxhY2UoJ3tpZH0nLCAnX3tpZH0nKTtcbiAgfVxuXG4gIGlkKys7XG4gIHZhciBuZXdJZCA9IGlkVGVtcGxhdGUucmVwbGFjZSgne2lkfScsIFN0cmluZyhpZCkpO1xuXG4gIHJldHVybiBuZXdJZDtcbn07XG5cbnZhciBmaW5kSW5kZXggPSBmdW5jdGlvbiAoYXJyYXlMaWtlLCBwcmVkaWNhdGUpIHtcbiAgdmFyIGFycmF5ID0gQXJyYXkuaXNBcnJheShhcnJheUxpa2UpID8gYXJyYXlMaWtlIDogdG9BcnJheShhcnJheUxpa2UpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpXSkpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn07XG5cbi8qKlxuICogZmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSBjYWxsYmFjaywgcG9seWZpbGxzIGFycmF5LmZpbmRcbiAqL1xudmFyIGZpbmQgPSBmdW5jdGlvbiAoYXJyYXlMaWtlLCBwcmVkaWNhdGUpIHtcbiAgdmFyIGFycmF5ID0gQXJyYXkuaXNBcnJheShhcnJheUxpa2UpID8gYXJyYXlMaWtlIDogdG9BcnJheShhcnJheUxpa2UpO1xuICB2YXIgaWR4ID0gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUpO1xuXG4gIHJldHVybiBpZHggPT09IC0xID8gdW5kZWZpbmVkIDogYXJyYXlbaWR4XTtcbn07XG5cbnZhciBpc0J1aWx0SW5Db21wb25lbnQgPSBmdW5jdGlvbiAodm5vZGUpIHtcbiAgaWYgKCF2bm9kZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciB0YWcgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zLnRhZztcblxuICByZXR1cm4gL14oa2VlcC1hbGl2ZXx0cmFuc2l0aW9ufHRyYW5zaXRpb24tZ3JvdXApJC8udGVzdCh0YWcpO1xufTtcblxudmFyIG1ha2VEZWxheU9iamVjdCA9IGZ1bmN0aW9uIChldmVudHMsIGRlbGF5LCBkZWxheUNvbmZpZykge1xuICBpZiAodHlwZW9mIGRlbGF5ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBldmVudHMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBlKSB7XG4gICAgICBwcmV2W2VdID0gZGVsYXk7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCB7fSk7XG4gIH1cblxuICByZXR1cm4gZXZlbnRzLnJlZHVjZShmdW5jdGlvbiAocHJldiwgZSkge1xuICAgIGlmICh0eXBlb2YgZGVsYXkgPT09ICdvYmplY3QnICYmIGUgaW4gZGVsYXkpIHtcbiAgICAgIHByZXZbZV0gPSBkZWxheVtlXTtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGVsYXlDb25maWcgPT09ICdudW1iZXInKSB7XG4gICAgICBwcmV2W2VdID0gZGVsYXlDb25maWc7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9XG5cbiAgICBwcmV2W2VdID0gKGRlbGF5Q29uZmlnICYmIGRlbGF5Q29uZmlnW2VdKSB8fCAwO1xuXG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIHt9KTtcbn07XG5cbnZhciBkZWVwUGFyc2VJbnQgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicpIHsgcmV0dXJuIGlucHV0OyB9XG5cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIHBhcnNlSW50KGlucHV0KTsgfVxuXG4gIHZhciBtYXAgPSB7fTtcbiAgZm9yICh2YXIgZWxlbWVudCBpbiBpbnB1dCkge1xuICAgIG1hcFtlbGVtZW50XSA9IHBhcnNlSW50KGlucHV0W2VsZW1lbnRdKTtcbiAgfVxuXG4gIHJldHVybiBtYXA7XG59O1xuXG52YXIgbWVyZ2UgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgaWYgKCEgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkpIHtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgb2JqLCBvYmokMTtcblxuICAgIGlmIChpc09iamVjdChzb3VyY2Vba2V5XSkpIHtcbiAgICAgIGlmICghIHRhcmdldFtrZXldKSB7XG4gICAgICAgIGFzc2lnbih0YXJnZXQsICggb2JqID0ge30sIG9ialtrZXldID0ge30sIG9iaiApKTtcbiAgICAgIH1cblxuICAgICAgbWVyZ2UodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhc3NpZ24odGFyZ2V0LCAoIG9iaiQxID0ge30sIG9iaiQxW2tleV0gPSBzb3VyY2Vba2V5XSwgb2JqJDEgKSk7XG4gIH0pO1xuXG4gIHJldHVybiB0YXJnZXQ7XG59O1xuXG52YXIgZmlsbFJ1bGVzRnJvbUVsZW1lbnQgPSBmdW5jdGlvbiAoZWwsIHJ1bGVzKSB7XG4gIGlmIChlbC5yZXF1aXJlZCkge1xuICAgIHJ1bGVzID0gYXBwZW5kUnVsZSgncmVxdWlyZWQnLCBydWxlcyk7XG4gIH1cblxuICBpZiAoaXNUZXh0SW5wdXQoZWwpKSB7XG4gICAgaWYgKGVsLnR5cGUgPT09ICdlbWFpbCcpIHtcbiAgICAgIHJ1bGVzID0gYXBwZW5kUnVsZSgoXCJlbWFpbFwiICsgKGVsLm11bHRpcGxlID8gJzptdWx0aXBsZScgOiAnJykpLCBydWxlcyk7XG4gICAgfVxuXG4gICAgaWYgKGVsLnBhdHRlcm4pIHtcbiAgICAgIHJ1bGVzID0gYXBwZW5kUnVsZSh7IHJlZ2V4OiBlbC5wYXR0ZXJuIH0sIHJ1bGVzKTtcbiAgICB9XG5cbiAgICAvLyA1MjQyODggaXMgdGhlIG1heCBvbiBzb21lIGJyb3dzZXJzIGFuZCB0ZXN0IGVudmlyb25tZW50cy5cbiAgICBpZiAoZWwubWF4TGVuZ3RoID49IDAgJiYgZWwubWF4TGVuZ3RoIDwgNTI0Mjg4KSB7XG4gICAgICBydWxlcyA9IGFwcGVuZFJ1bGUoKFwibWF4OlwiICsgKGVsLm1heExlbmd0aCkpLCBydWxlcyk7XG4gICAgfVxuXG4gICAgaWYgKGVsLm1pbkxlbmd0aCA+IDApIHtcbiAgICAgIHJ1bGVzID0gYXBwZW5kUnVsZSgoXCJtaW46XCIgKyAoZWwubWluTGVuZ3RoKSksIHJ1bGVzKTtcbiAgICB9XG5cbiAgICBpZiAoZWwudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ1bGVzID0gYXBwZW5kUnVsZSgnZGVjaW1hbCcsIHJ1bGVzKTtcbiAgICAgIGlmIChlbC5taW4gIT09ICcnKSB7XG4gICAgICAgIHJ1bGVzID0gYXBwZW5kUnVsZSgoXCJtaW5fdmFsdWU6XCIgKyAoZWwubWluKSksIHJ1bGVzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsLm1heCAhPT0gJycpIHtcbiAgICAgICAgcnVsZXMgPSBhcHBlbmRSdWxlKChcIm1heF92YWx1ZTpcIiArIChlbC5tYXgpKSwgcnVsZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBydWxlcztcbiAgfVxuXG4gIGlmIChpc0RhdGVJbnB1dChlbCkpIHtcbiAgICB2YXIgdGltZUZvcm1hdCA9IGVsLnN0ZXAgJiYgTnVtYmVyKGVsLnN0ZXApIDwgNjAgPyAnSEg6bW06c3MnIDogJ0hIOm1tJztcblxuICAgIGlmIChlbC50eXBlID09PSAnZGF0ZScpIHtcbiAgICAgIHJldHVybiBhcHBlbmRSdWxlKCdkYXRlX2Zvcm1hdDp5eXl5LU1NLWRkJywgcnVsZXMpO1xuICAgIH1cblxuICAgIGlmIChlbC50eXBlID09PSAnZGF0ZXRpbWUtbG9jYWwnKSB7XG4gICAgICByZXR1cm4gYXBwZW5kUnVsZSgoXCJkYXRlX2Zvcm1hdDp5eXl5LU1NLWRkVFwiICsgdGltZUZvcm1hdCksIHJ1bGVzKTtcbiAgICB9XG5cbiAgICBpZiAoZWwudHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgcmV0dXJuIGFwcGVuZFJ1bGUoJ2RhdGVfZm9ybWF0Onl5eXktTU0nLCBydWxlcyk7XG4gICAgfVxuXG4gICAgaWYgKGVsLnR5cGUgPT09ICd3ZWVrJykge1xuICAgICAgcmV0dXJuIGFwcGVuZFJ1bGUoJ2RhdGVfZm9ybWF0Onl5eXktW1ddV1cnLCBydWxlcyk7XG4gICAgfVxuXG4gICAgaWYgKGVsLnR5cGUgPT09ICd0aW1lJykge1xuICAgICAgcmV0dXJuIGFwcGVuZFJ1bGUoKFwiZGF0ZV9mb3JtYXQ6XCIgKyB0aW1lRm9ybWF0KSwgcnVsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBydWxlcztcbn07XG5cbnZhciB2YWx1ZXMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGlmIChpc0NhbGxhYmxlKE9iamVjdC52YWx1ZXMpKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqKTtcbiAgfVxuXG4gIC8vIGZhbGxiYWNrIHRvIGtleXMoKVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24gKGspIHsgcmV0dXJuIG9ialtrXTsgfSk7XG59O1xuXG52YXIgcGFyc2VTZWxlY3RvciA9IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICB2YXIgcnVsZSA9IG51bGw7XG4gIGlmIChpbmNsdWRlcyhzZWxlY3RvciwgJzonKSkge1xuICAgIHJ1bGUgPSBzZWxlY3Rvci5zcGxpdCgnOicpLnBvcCgpO1xuICAgIHNlbGVjdG9yID0gc2VsZWN0b3IucmVwbGFjZSgoXCI6XCIgKyBydWxlKSwgJycpO1xuICB9XG5cbiAgaWYgKHNlbGVjdG9yWzBdID09PSAnIycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNlbGVjdG9yLnNsaWNlKDEpLFxuICAgICAgcnVsZTogcnVsZSxcbiAgICAgIG5hbWU6IG51bGwsXG4gICAgICBzY29wZTogbnVsbFxuICAgIH07XG4gIH1cblxuICB2YXIgc2NvcGUgPSBudWxsO1xuICB2YXIgbmFtZSA9IHNlbGVjdG9yO1xuICBpZiAoaW5jbHVkZXMoc2VsZWN0b3IsICcuJykpIHtcbiAgICB2YXIgcGFydHMgPSBzZWxlY3Rvci5zcGxpdCgnLicpO1xuICAgIHNjb3BlID0gcGFydHNbMF07XG4gICAgbmFtZSA9IHBhcnRzLnNsaWNlKDEpLmpvaW4oJy4nKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaWQ6IG51bGwsXG4gICAgc2NvcGU6IHNjb3BlLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgcnVsZTogcnVsZVxuICB9O1xufTtcblxudmFyIGluY2x1ZGVzID0gZnVuY3Rpb24gKGNvbGxlY3Rpb24sIGl0ZW0pIHtcbiAgcmV0dXJuIGNvbGxlY3Rpb24uaW5kZXhPZihpdGVtKSAhPT0gLTE7XG59O1xuXG52YXIgaXNFbXB0eUFycmF5ID0gZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShhcnIpICYmIGFyci5sZW5ndGggPT09IDA7XG59O1xuXG52YXIgZGVmaW5lTm9uUmVhY3RpdmUgPSBmdW5jdGlvbiAob2JqLCBwcm9wLCB2YWx1ZSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfSk7XG59O1xuXG4vLyBcblxudmFyIExPQ0FMRSA9ICdlbic7XG5cbnZhciBEaWN0aW9uYXJ5ID0gZnVuY3Rpb24gRGljdGlvbmFyeSAoZGljdGlvbmFyeSkge1xuICBpZiAoIGRpY3Rpb25hcnkgPT09IHZvaWQgMCApIGRpY3Rpb25hcnkgPSB7fTtcblxuICB0aGlzLmNvbnRhaW5lciA9IHt9O1xuICB0aGlzLm1lcmdlKGRpY3Rpb25hcnkpO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgbG9jYWxlOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5sb2NhbGUuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gTE9DQUxFO1xufTtcblxucHJvdG90eXBlQWNjZXNzb3JzLmxvY2FsZS5zZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgTE9DQUxFID0gdmFsdWUgfHwgJ2VuJztcbn07XG5cbkRpY3Rpb25hcnkucHJvdG90eXBlLmhhc0xvY2FsZSA9IGZ1bmN0aW9uIGhhc0xvY2FsZSAobG9jYWxlKSB7XG4gIHJldHVybiAhIXRoaXMuY29udGFpbmVyW2xvY2FsZV07XG59O1xuXG5EaWN0aW9uYXJ5LnByb3RvdHlwZS5zZXREYXRlRm9ybWF0ID0gZnVuY3Rpb24gc2V0RGF0ZUZvcm1hdCAobG9jYWxlLCBmb3JtYXQpIHtcbiAgaWYgKCF0aGlzLmNvbnRhaW5lcltsb2NhbGVdKSB7XG4gICAgdGhpcy5jb250YWluZXJbbG9jYWxlXSA9IHt9O1xuICB9XG5cbiAgdGhpcy5jb250YWluZXJbbG9jYWxlXS5kYXRlRm9ybWF0ID0gZm9ybWF0O1xufTtcblxuRGljdGlvbmFyeS5wcm90b3R5cGUuZ2V0RGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIGdldERhdGVGb3JtYXQgKGxvY2FsZSkge1xuICBpZiAoIXRoaXMuY29udGFpbmVyW2xvY2FsZV0gfHwgIXRoaXMuY29udGFpbmVyW2xvY2FsZV0uZGF0ZUZvcm1hdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY29udGFpbmVyW2xvY2FsZV0uZGF0ZUZvcm1hdDtcbn07XG5cbkRpY3Rpb25hcnkucHJvdG90eXBlLmdldE1lc3NhZ2UgPSBmdW5jdGlvbiBnZXRNZXNzYWdlIChsb2NhbGUsIGtleSwgZGF0YSkge1xuICB2YXIgbWVzc2FnZSA9IG51bGw7XG4gIGlmICghdGhpcy5oYXNNZXNzYWdlKGxvY2FsZSwga2V5KSkge1xuICAgIG1lc3NhZ2UgPSB0aGlzLl9nZXREZWZhdWx0TWVzc2FnZShsb2NhbGUpO1xuICB9IGVsc2Uge1xuICAgIG1lc3NhZ2UgPSB0aGlzLmNvbnRhaW5lcltsb2NhbGVdLm1lc3NhZ2VzW2tleV07XG4gIH1cblxuICByZXR1cm4gaXNDYWxsYWJsZShtZXNzYWdlKSA/IG1lc3NhZ2UuYXBwbHkodm9pZCAwLCBkYXRhKSA6IG1lc3NhZ2U7XG59O1xuXG4vKipcbiAqIEdldHMgYSBzcGVjaWZpYyBtZXNzYWdlIGZvciBmaWVsZC4gZmFsbHMgYmFjayB0byB0aGUgcnVsZSBtZXNzYWdlLlxuICovXG5EaWN0aW9uYXJ5LnByb3RvdHlwZS5nZXRGaWVsZE1lc3NhZ2UgPSBmdW5jdGlvbiBnZXRGaWVsZE1lc3NhZ2UgKGxvY2FsZSwgZmllbGQsIGtleSwgZGF0YSkge1xuICBpZiAoIXRoaXMuaGFzTG9jYWxlKGxvY2FsZSkpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKGxvY2FsZSwga2V5LCBkYXRhKTtcbiAgfVxuXG4gIHZhciBkaWN0ID0gdGhpcy5jb250YWluZXJbbG9jYWxlXS5jdXN0b20gJiYgdGhpcy5jb250YWluZXJbbG9jYWxlXS5jdXN0b21bZmllbGRdO1xuICBpZiAoIWRpY3QgfHwgIWRpY3Rba2V5XSkge1xuICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2UobG9jYWxlLCBrZXksIGRhdGEpO1xuICB9XG5cbiAgdmFyIG1lc3NhZ2UgPSBkaWN0W2tleV07XG4gIHJldHVybiBpc0NhbGxhYmxlKG1lc3NhZ2UpID8gbWVzc2FnZS5hcHBseSh2b2lkIDAsIGRhdGEpIDogbWVzc2FnZTtcbn07XG5cbkRpY3Rpb25hcnkucHJvdG90eXBlLl9nZXREZWZhdWx0TWVzc2FnZSA9IGZ1bmN0aW9uIF9nZXREZWZhdWx0TWVzc2FnZSAobG9jYWxlKSB7XG4gIGlmICh0aGlzLmhhc01lc3NhZ2UobG9jYWxlLCAnX2RlZmF1bHQnKSkge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcltsb2NhbGVdLm1lc3NhZ2VzLl9kZWZhdWx0O1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmVuLm1lc3NhZ2VzLl9kZWZhdWx0O1xufTtcblxuRGljdGlvbmFyeS5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24gZ2V0QXR0cmlidXRlIChsb2NhbGUsIGtleSwgZmFsbGJhY2spIHtcbiAgICBpZiAoIGZhbGxiYWNrID09PSB2b2lkIDAgKSBmYWxsYmFjayA9ICcnO1xuXG4gIGlmICghdGhpcy5oYXNBdHRyaWJ1dGUobG9jYWxlLCBrZXkpKSB7XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY29udGFpbmVyW2xvY2FsZV0uYXR0cmlidXRlc1trZXldO1xufTtcblxuRGljdGlvbmFyeS5wcm90b3R5cGUuaGFzTWVzc2FnZSA9IGZ1bmN0aW9uIGhhc01lc3NhZ2UgKGxvY2FsZSwga2V5KSB7XG4gIHJldHVybiAhISAoXG4gICAgdGhpcy5oYXNMb2NhbGUobG9jYWxlKSAmJlxuICAgICAgICAgIHRoaXMuY29udGFpbmVyW2xvY2FsZV0ubWVzc2FnZXMgJiZcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lcltsb2NhbGVdLm1lc3NhZ2VzW2tleV1cbiAgKTtcbn07XG5cbkRpY3Rpb25hcnkucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uIGhhc0F0dHJpYnV0ZSAobG9jYWxlLCBrZXkpIHtcbiAgcmV0dXJuICEhIChcbiAgICB0aGlzLmhhc0xvY2FsZShsb2NhbGUpICYmXG4gICAgICAgICAgdGhpcy5jb250YWluZXJbbG9jYWxlXS5hdHRyaWJ1dGVzICYmXG4gICAgICAgICAgdGhpcy5jb250YWluZXJbbG9jYWxlXS5hdHRyaWJ1dGVzW2tleV1cbiAgKTtcbn07XG5cbkRpY3Rpb25hcnkucHJvdG90eXBlLm1lcmdlID0gZnVuY3Rpb24gbWVyZ2UkMSAoZGljdGlvbmFyeSkge1xuICBtZXJnZSh0aGlzLmNvbnRhaW5lciwgZGljdGlvbmFyeSk7XG59O1xuXG5EaWN0aW9uYXJ5LnByb3RvdHlwZS5zZXRNZXNzYWdlID0gZnVuY3Rpb24gc2V0TWVzc2FnZSAobG9jYWxlLCBrZXksIG1lc3NhZ2UpIHtcbiAgaWYgKCEgdGhpcy5oYXNMb2NhbGUobG9jYWxlKSkge1xuICAgIHRoaXMuY29udGFpbmVyW2xvY2FsZV0gPSB7XG4gICAgICBtZXNzYWdlczoge30sXG4gICAgICBhdHRyaWJ1dGVzOiB7fVxuICAgIH07XG4gIH1cbiAgICBcbiAgaWYgKCF0aGlzLmNvbnRhaW5lcltsb2NhbGVdLm1lc3NhZ2VzKSB7XG4gICAgdGhpcy5jb250YWluZXJbbG9jYWxlXS5tZXNzYWdlcyA9IHt9O1xuICB9XG5cbiAgdGhpcy5jb250YWluZXJbbG9jYWxlXS5tZXNzYWdlc1trZXldID0gbWVzc2FnZTtcbn07XG5cbkRpY3Rpb25hcnkucHJvdG90eXBlLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZSAobG9jYWxlLCBrZXksIGF0dHJpYnV0ZSkge1xuICBpZiAoISB0aGlzLmhhc0xvY2FsZShsb2NhbGUpKSB7XG4gICAgdGhpcy5jb250YWluZXJbbG9jYWxlXSA9IHtcbiAgICAgIG1lc3NhZ2VzOiB7fSxcbiAgICAgIGF0dHJpYnV0ZXM6IHt9XG4gICAgfTtcbiAgfVxuXG4gIHRoaXMuY29udGFpbmVyW2xvY2FsZV0uYXR0cmlidXRlc1trZXldID0gYXR0cmlidXRlO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIERpY3Rpb25hcnkucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxudmFyIGRyaXZlcnMgPSB7XG4gIGRlZmF1bHQ6IG5ldyBEaWN0aW9uYXJ5KHtcbiAgICBlbjoge1xuICAgICAgbWVzc2FnZXM6IHt9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBjdXN0b206IHt9XG4gICAgfVxuICB9KVxufTtcblxudmFyIGN1cnJlbnREcml2ZXIgPSAnZGVmYXVsdCc7XG5cbnZhciBEaWN0aW9uYXJ5UmVzb2x2ZXIgPSBmdW5jdGlvbiBEaWN0aW9uYXJ5UmVzb2x2ZXIgKCkge307XG5cbkRpY3Rpb25hcnlSZXNvbHZlci5fY2hlY2tEcml2ZXJOYW1lID0gZnVuY3Rpb24gX2NoZWNrRHJpdmVyTmFtZSAoZHJpdmVyKSB7XG4gIGlmICghZHJpdmVyKSB7XG4gICAgdGhyb3cgY3JlYXRlRXJyb3IoJ3lvdSBtdXN0IHByb3ZpZGUgYSBuYW1lIHRvIHRoZSBkaWN0aW9uYXJ5IGRyaXZlcicpO1xuICB9XG59O1xuXG5EaWN0aW9uYXJ5UmVzb2x2ZXIuc2V0RHJpdmVyID0gZnVuY3Rpb24gc2V0RHJpdmVyIChkcml2ZXIsIGltcGxlbWVudGF0aW9uKSB7XG4gICAgaWYgKCBpbXBsZW1lbnRhdGlvbiA9PT0gdm9pZCAwICkgaW1wbGVtZW50YXRpb24gPSBudWxsO1xuXG4gIHRoaXMuX2NoZWNrRHJpdmVyTmFtZShkcml2ZXIpO1xuICBpZiAoaW1wbGVtZW50YXRpb24pIHtcbiAgICBkcml2ZXJzW2RyaXZlcl0gPSBpbXBsZW1lbnRhdGlvbjtcbiAgfVxuXG4gIGN1cnJlbnREcml2ZXIgPSBkcml2ZXI7XG59O1xuXG5EaWN0aW9uYXJ5UmVzb2x2ZXIuZ2V0RHJpdmVyID0gZnVuY3Rpb24gZ2V0RHJpdmVyICgpIHtcbiAgcmV0dXJuIGRyaXZlcnNbY3VycmVudERyaXZlcl07XG59O1xuXG4vLyBcblxudmFyIEVycm9yQmFnID0gZnVuY3Rpb24gRXJyb3JCYWcgKGVycm9yQmFnLCBpZCkge1xuICBpZiAoIGVycm9yQmFnID09PSB2b2lkIDAgKSBlcnJvckJhZyA9IG51bGw7XG4gIGlmICggaWQgPT09IHZvaWQgMCApIGlkID0gbnVsbDtcblxuICB0aGlzLnZtSWQgPSBpZCB8fCBudWxsO1xuICAvLyBtYWtlIHRoaXMgYmFnIGEgbWlycm9yIG9mIHRoZSBwcm92aWRlZCBvbmUsIHNoYXJpbmcgdGhlIHNhbWUgaXRlbXMgcmVmZXJlbmNlLlxuICBpZiAoZXJyb3JCYWcgJiYgZXJyb3JCYWcgaW5zdGFuY2VvZiBFcnJvckJhZykge1xuICAgIHRoaXMuaXRlbXMgPSBlcnJvckJhZy5pdGVtcztcbiAgfSBlbHNlIHtcbiAgICB0aGlzLml0ZW1zID0gW107XG4gIH1cbn07XG5cbkVycm9yQmFnLnByb3RvdHlwZVt0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nID8gU3ltYm9sLml0ZXJhdG9yIDogJ0BAaXRlcmF0b3InXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaW5kZXggPSAwO1xuICByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiB0aGlzJDEuaXRlbXNbaW5kZXgrK10sIGRvbmU6IGluZGV4ID4gdGhpcyQxLml0ZW1zLmxlbmd0aCB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQWRkcyBhbiBlcnJvciB0byB0aGUgaW50ZXJuYWwgYXJyYXkuXG4gKi9cbkVycm9yQmFnLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGVycm9yKSB7XG4gICAgdmFyIHJlZjtcblxuICAocmVmID0gdGhpcy5pdGVtcykucHVzaC5hcHBseShcbiAgICByZWYsIHRoaXMuX25vcm1hbGl6ZUVycm9yKGVycm9yKVxuICApO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIHBhc3NlZCBlcnJvcnMgdG8gYW4gZXJyb3IgYXJyYXkuXG4gKi9cbkVycm9yQmFnLnByb3RvdHlwZS5fbm9ybWFsaXplRXJyb3IgPSBmdW5jdGlvbiBfbm9ybWFsaXplRXJyb3IgKGVycm9yKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3IpKSB7XG4gICAgcmV0dXJuIGVycm9yLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgZS5zY29wZSA9ICFpc051bGxPclVuZGVmaW5lZChlLnNjb3BlKSA/IGUuc2NvcGUgOiBudWxsO1xuICAgICAgZS52bUlkID0gIWlzTnVsbE9yVW5kZWZpbmVkKGUudm1JZCkgPyBlLnZtSWQgOiAodGhpcyQxLnZtSWQgfHwgbnVsbCk7XG5cbiAgICAgIHJldHVybiBlO1xuICAgIH0pO1xuICB9XG5cbiAgZXJyb3Iuc2NvcGUgPSAhaXNOdWxsT3JVbmRlZmluZWQoZXJyb3Iuc2NvcGUpID8gZXJyb3Iuc2NvcGUgOiBudWxsO1xuICBlcnJvci52bUlkID0gIWlzTnVsbE9yVW5kZWZpbmVkKGVycm9yLnZtSWQpID8gZXJyb3Iudm1JZCA6ICh0aGlzLnZtSWQgfHwgbnVsbCk7XG5cbiAgcmV0dXJuIFtlcnJvcl07XG59O1xuXG4vKipcbiAqIFJlZ2VucmF0ZXMgZXJyb3IgbWVzc2FnZXMgaWYgdGhleSBoYXZlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuICovXG5FcnJvckJhZy5wcm90b3R5cGUucmVnZW5lcmF0ZSA9IGZ1bmN0aW9uIHJlZ2VuZXJhdGUgKCkge1xuICB0aGlzLml0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcbiAgICBpLm1zZyA9IGlzQ2FsbGFibGUoaS5yZWdlbmVyYXRlKSA/IGkucmVnZW5lcmF0ZSgpIDogaS5tc2c7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIGEgZmllbGQgZXJyb3Igd2l0aCB0aGUgbmV3IGZpZWxkIHNjb3BlLlxuICovXG5FcnJvckJhZy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlIChpZCwgZXJyb3IpIHtcbiAgdmFyIGl0ZW0gPSBmaW5kKHRoaXMuaXRlbXMsIGZ1bmN0aW9uIChpKSB7IHJldHVybiBpLmlkID09PSBpZDsgfSk7XG4gIGlmICghaXRlbSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBpZHggPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XG4gIHRoaXMuaXRlbXMuc3BsaWNlKGlkeCwgMSk7XG4gIGl0ZW0uc2NvcGUgPSBlcnJvci5zY29wZTtcbiAgdGhpcy5pdGVtcy5wdXNoKGl0ZW0pO1xufTtcblxuLyoqXG4gKiBHZXRzIGFsbCBlcnJvciBtZXNzYWdlcyBmcm9tIHRoZSBpbnRlcm5hbCBhcnJheS5cbiAqL1xuRXJyb3JCYWcucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uIGFsbCAoc2NvcGUpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgZmlsdGVyRm4gPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBtYXRjaGVzU2NvcGUgPSB0cnVlO1xuICAgIHZhciBtYXRjaGVzVk0gPSB0cnVlO1xuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoc2NvcGUpKSB7XG4gICAgICBtYXRjaGVzU2NvcGUgPSBpdGVtLnNjb3BlID09PSBzY29wZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMkMS52bUlkKSkge1xuICAgICAgbWF0Y2hlc1ZNID0gaXRlbS52bUlkID09PSB0aGlzJDEudm1JZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlc1ZNICYmIG1hdGNoZXNTY29wZTtcbiAgfTtcblxuICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoZmlsdGVyRm4pLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5tc2c7IH0pO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlcmUgYXJlIGFueSBlcnJvcnMgaW4gdGhlIGludGVybmFsIGFycmF5LlxuICovXG5FcnJvckJhZy5wcm90b3R5cGUuYW55ID0gZnVuY3Rpb24gYW55IChzY29wZSkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBmaWx0ZXJGbiA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIG1hdGNoZXNTY29wZSA9IHRydWU7XG4gICAgdmFyIG1hdGNoZXNWTSA9IHRydWU7XG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChzY29wZSkpIHtcbiAgICAgIG1hdGNoZXNTY29wZSA9IGl0ZW0uc2NvcGUgPT09IHNjb3BlO1xuICAgIH1cblxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcyQxLnZtSWQpKSB7XG4gICAgICBtYXRjaGVzVk0gPSBpdGVtLnZtSWQgPT09IHRoaXMkMS52bUlkO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzVk0gJiYgbWF0Y2hlc1Njb3BlO1xuICB9O1xuXG4gIHJldHVybiAhIXRoaXMuaXRlbXMuZmlsdGVyKGZpbHRlckZuKS5sZW5ndGg7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gdGhlIGludGVybmFsIGFycmF5LlxuICovXG5FcnJvckJhZy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBjbGVhciAoc2NvcGUpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgbWF0Y2hlc1ZNID0gaXNOdWxsT3JVbmRlZmluZWQodGhpcy52bUlkKSA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH0gOiBmdW5jdGlvbiAoaSkgeyByZXR1cm4gaS52bUlkID09PSB0aGlzJDEudm1JZDsgfTtcbiAgdmFyIG1hdGNoZXNTY29wZSA9IGZ1bmN0aW9uIChpKSB7IHJldHVybiBpLnNjb3BlID09PSBzY29wZTsgfTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBtYXRjaGVzU2NvcGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9O1xuICB9IGVsc2UgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHNjb3BlKSkge1xuICAgIHNjb3BlID0gbnVsbDtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pdGVtcy5sZW5ndGg7ICsraSkge1xuICAgIGlmIChtYXRjaGVzVk0odGhpcy5pdGVtc1tpXSkgJiYgbWF0Y2hlc1Njb3BlKHRoaXMuaXRlbXNbaV0pKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgIC0taTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ29sbGVjdHMgZXJyb3JzIGludG8gZ3JvdXBzIG9yIGZvciBhIHNwZWNpZmljIGZpZWxkLlxuICovXG5FcnJvckJhZy5wcm90b3R5cGUuY29sbGVjdCA9IGZ1bmN0aW9uIGNvbGxlY3QgKGZpZWxkLCBzY29wZSwgbWFwKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgaWYgKCBtYXAgPT09IHZvaWQgMCApIG1hcCA9IHRydWU7XG5cbiAgdmFyIGlzU2luZ2xlRmllbGQgPSAhaXNOdWxsT3JVbmRlZmluZWQoZmllbGQpICYmICFmaWVsZC5pbmNsdWRlcygnKicpO1xuICB2YXIgZ3JvdXBFcnJvcnMgPSBmdW5jdGlvbiAoaXRlbXMpIHtcbiAgICB2YXIgZXJyb3JzID0gaXRlbXMucmVkdWNlKGZ1bmN0aW9uIChjb2xsZWN0aW9uLCBlcnJvcikge1xuICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzJDEudm1JZCkgJiYgZXJyb3Iudm1JZCAhPT0gdGhpcyQxLnZtSWQpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICB9XG5cbiAgICAgIGlmICghY29sbGVjdGlvbltlcnJvci5maWVsZF0pIHtcbiAgICAgICAgY29sbGVjdGlvbltlcnJvci5maWVsZF0gPSBbXTtcbiAgICAgIH1cblxuICAgICAgY29sbGVjdGlvbltlcnJvci5maWVsZF0ucHVzaChtYXAgPyBlcnJvci5tc2cgOiBlcnJvcik7XG5cbiAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH0sIHt9KTtcblxuICAgIC8vIHJlZHVjZSB0aGUgY29sbGVjdGlvbiB0byBiZSBhIHNpbmdsZSBhcnJheS5cbiAgICBpZiAoaXNTaW5nbGVGaWVsZCkge1xuICAgICAgcmV0dXJuIHZhbHVlcyhlcnJvcnMpWzBdIHx8IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH07XG5cbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGZpZWxkKSkge1xuICAgIHJldHVybiBncm91cEVycm9ycyh0aGlzLml0ZW1zKTtcbiAgfVxuXG4gIHZhciBzZWxlY3RvciA9IGlzTnVsbE9yVW5kZWZpbmVkKHNjb3BlKSA/IFN0cmluZyhmaWVsZCkgOiAoc2NvcGUgKyBcIi5cIiArIGZpZWxkKTtcbiAgdmFyIHJlZiA9IHRoaXMuX21ha2VDYW5kaWRhdGVGaWx0ZXJzKHNlbGVjdG9yKTtcbiAgICB2YXIgaXNQcmltYXJ5ID0gcmVmLmlzUHJpbWFyeTtcbiAgICB2YXIgaXNBbHQgPSByZWYuaXNBbHQ7XG5cbiAgdmFyIGNvbGxlY3RlZCA9IHRoaXMuaXRlbXMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgaWYgKGlzUHJpbWFyeShjdXJyKSkge1xuICAgICAgcHJldi5wcmltYXJ5LnB1c2goY3Vycik7XG4gICAgfVxuXG4gICAgaWYgKGlzQWx0KGN1cnIpKSB7XG4gICAgICBwcmV2LmFsdC5wdXNoKGN1cnIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcmV2O1xuICB9LCB7IHByaW1hcnk6IFtdLCBhbHQ6IFtdIH0pO1xuXG4gIGNvbGxlY3RlZCA9IGNvbGxlY3RlZC5wcmltYXJ5Lmxlbmd0aCA/IGNvbGxlY3RlZC5wcmltYXJ5IDogY29sbGVjdGVkLmFsdDtcblxuICByZXR1cm4gZ3JvdXBFcnJvcnMoY29sbGVjdGVkKTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgaW50ZXJuYWwgYXJyYXkgbGVuZ3RoLlxuICovXG5FcnJvckJhZy5wcm90b3R5cGUuY291bnQgPSBmdW5jdGlvbiBjb3VudCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKHRoaXMudm1JZCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS52bUlkID09PSB0aGlzJDEudm1JZDsgfSkubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBGaW5kcyBhbmQgZmV0Y2hlcyB0aGUgZmlyc3QgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZCBpZC5cbiAqL1xuRXJyb3JCYWcucHJvdG90eXBlLmZpcnN0QnlJZCA9IGZ1bmN0aW9uIGZpcnN0QnlJZCAoaWQpIHtcbiAgdmFyIGVycm9yID0gZmluZCh0aGlzLml0ZW1zLCBmdW5jdGlvbiAoaSkgeyByZXR1cm4gaS5pZCA9PT0gaWQ7IH0pO1xuXG4gIHJldHVybiBlcnJvciA/IGVycm9yLm1zZyA6IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgZmlyc3QgZXJyb3IgbWVzc2FnZSBmb3IgYSBzcGVjaWZpYyBmaWVsZC5cbiAqL1xuRXJyb3JCYWcucHJvdG90eXBlLmZpcnN0ID0gZnVuY3Rpb24gZmlyc3QgKGZpZWxkLCBzY29wZSkge1xuICAgIGlmICggc2NvcGUgPT09IHZvaWQgMCApIHNjb3BlID0gbnVsbDtcblxuICB2YXIgc2VsZWN0b3IgPSBpc051bGxPclVuZGVmaW5lZChzY29wZSkgPyBmaWVsZCA6IChzY29wZSArIFwiLlwiICsgZmllbGQpO1xuICB2YXIgbWF0Y2ggPSB0aGlzLl9tYXRjaChzZWxlY3Rvcik7XG5cbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoLm1zZztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgZXJyb3IgcnVsZSBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZFxuICovXG5FcnJvckJhZy5wcm90b3R5cGUuZmlyc3RSdWxlID0gZnVuY3Rpb24gZmlyc3RSdWxlIChmaWVsZCwgc2NvcGUpIHtcbiAgdmFyIGVycm9ycyA9IHRoaXMuY29sbGVjdChmaWVsZCwgc2NvcGUsIGZhbHNlKTtcblxuICByZXR1cm4gKGVycm9ycy5sZW5ndGggJiYgZXJyb3JzWzBdLnJ1bGUpIHx8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBpbnRlcm5hbCBhcnJheSBoYXMgYXQgbGVhc3Qgb25lIGVycm9yIGZvciB0aGUgc3BlY2lmaWVkIGZpZWxkLlxuICovXG5FcnJvckJhZy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChmaWVsZCwgc2NvcGUpIHtcbiAgICBpZiAoIHNjb3BlID09PSB2b2lkIDAgKSBzY29wZSA9IG51bGw7XG5cbiAgcmV0dXJuICEhdGhpcy5maXJzdChmaWVsZCwgc2NvcGUpO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBmaXJzdCBlcnJvciBtZXNzYWdlIGZvciBhIHNwZWNpZmljIGZpZWxkIGFuZCBhIHJ1bGUuXG4gKi9cbkVycm9yQmFnLnByb3RvdHlwZS5maXJzdEJ5UnVsZSA9IGZ1bmN0aW9uIGZpcnN0QnlSdWxlIChuYW1lLCBydWxlLCBzY29wZSkge1xuICAgIGlmICggc2NvcGUgPT09IHZvaWQgMCApIHNjb3BlID0gbnVsbDtcblxuICB2YXIgZXJyb3IgPSB0aGlzLmNvbGxlY3QobmFtZSwgc2NvcGUsIGZhbHNlKS5maWx0ZXIoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUucnVsZSA9PT0gcnVsZTsgfSlbMF07XG5cbiAgcmV0dXJuIChlcnJvciAmJiBlcnJvci5tc2cpIHx8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgZmlyc3QgZXJyb3IgbWVzc2FnZSBmb3IgYSBzcGVjaWZpYyBmaWVsZCB0aGF0IG5vdCBtYXRjaCB0aGUgcnVsZS5cbiAqL1xuRXJyb3JCYWcucHJvdG90eXBlLmZpcnN0Tm90ID0gZnVuY3Rpb24gZmlyc3ROb3QgKG5hbWUsIHJ1bGUsIHNjb3BlKSB7XG4gICAgaWYgKCBydWxlID09PSB2b2lkIDAgKSBydWxlID0gJ3JlcXVpcmVkJztcbiAgICBpZiAoIHNjb3BlID09PSB2b2lkIDAgKSBzY29wZSA9IG51bGw7XG5cbiAgdmFyIGVycm9yID0gdGhpcy5jb2xsZWN0KG5hbWUsIHNjb3BlLCBmYWxzZSkuZmlsdGVyKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnJ1bGUgIT09IHJ1bGU7IH0pWzBdO1xuXG4gIHJldHVybiAoZXJyb3IgJiYgZXJyb3IubXNnKSB8fCB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgZXJyb3JzIGJ5IG1hdGNoaW5nIGFnYWluc3QgdGhlIGlkIG9yIGlkcy5cbiAqL1xuRXJyb3JCYWcucHJvdG90eXBlLnJlbW92ZUJ5SWQgPSBmdW5jdGlvbiByZW1vdmVCeUlkIChpZCkge1xuICB2YXIgY29uZGl0aW9uID0gZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWQgPT09IGlkOyB9O1xuICBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICBjb25kaXRpb24gPSBmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaWQuaW5kZXhPZihpdGVtLmlkKSAhPT0gLTE7IH07XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoY29uZGl0aW9uKHRoaXMuaXRlbXNbaV0pKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgIC0taTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwgZXJyb3IgbWVzc2FnZXMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgZmllbGQuXG4gKi9cbkVycm9yQmFnLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUgKGZpZWxkLCBzY29wZSwgdm1JZCkge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoZmllbGQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHNlbGVjdG9yID0gaXNOdWxsT3JVbmRlZmluZWQoc2NvcGUpID8gU3RyaW5nKGZpZWxkKSA6IChzY29wZSArIFwiLlwiICsgZmllbGQpO1xuICB2YXIgcmVmID0gdGhpcy5fbWFrZUNhbmRpZGF0ZUZpbHRlcnMoc2VsZWN0b3IpO1xuICAgIHZhciBpc1ByaW1hcnkgPSByZWYuaXNQcmltYXJ5O1xuICAgIHZhciBpc0FsdCA9IHJlZi5pc0FsdDtcbiAgdmFyIG1hdGNoZXMgPSBmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaXNQcmltYXJ5KGl0ZW0pIHx8IGlzQWx0KGl0ZW0pOyB9O1xuICB2YXIgc2hvdWxkUmVtb3ZlID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodm1JZCkpIHsgcmV0dXJuIG1hdGNoZXMoaXRlbSk7IH1cblxuICAgIHJldHVybiBtYXRjaGVzKGl0ZW0pICYmIGl0ZW0udm1JZCA9PT0gdm1JZDtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoc2hvdWxkUmVtb3ZlKHRoaXMuaXRlbXNbaV0pKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgIC0taTtcbiAgICB9XG4gIH1cbn07XG5cbkVycm9yQmFnLnByb3RvdHlwZS5fbWFrZUNhbmRpZGF0ZUZpbHRlcnMgPSBmdW5jdGlvbiBfbWFrZUNhbmRpZGF0ZUZpbHRlcnMgKHNlbGVjdG9yKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIG1hdGNoZXNSdWxlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfTtcbiAgdmFyIG1hdGNoZXNTY29wZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciBtYXRjaGVzTmFtZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciBtYXRjaGVzVk0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9O1xuXG4gIHZhciByZWYgPSBwYXJzZVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICB2YXIgaWQgPSByZWYuaWQ7XG4gICAgdmFyIHJ1bGUgPSByZWYucnVsZTtcbiAgICB2YXIgc2NvcGUgPSByZWYuc2NvcGU7XG4gICAgdmFyIG5hbWUgPSByZWYubmFtZTtcblxuICBpZiAocnVsZSkge1xuICAgIG1hdGNoZXNSdWxlID0gZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0ucnVsZSA9PT0gcnVsZTsgfTtcbiAgfVxuXG4gIC8vIG1hdGNoIGJ5IGlkLCBjYW4gYmUgY29tYmluZWQgd2l0aCBydWxlIHNlbGVjdGlvbi5cbiAgaWYgKGlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzUHJpbWFyeTogZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIG1hdGNoZXNSdWxlKGl0ZW0pICYmIChmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaWQgPT09IGl0ZW0uaWQ7IH0pOyB9LFxuICAgICAgaXNBbHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChpc051bGxPclVuZGVmaW5lZChzY29wZSkpIHtcbiAgICAvLyBpZiBubyBzY29wZSBzcGVjaWZpZWQsIG1ha2Ugc3VyZSB0aGUgZm91bmQgZXJyb3IgaGFzIG5vIHNjb3BlLlxuICAgIG1hdGNoZXNTY29wZSA9IGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpc051bGxPclVuZGVmaW5lZChpdGVtLnNjb3BlKTsgfTtcbiAgfSBlbHNlIHtcbiAgICBtYXRjaGVzU2NvcGUgPSBmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaXRlbS5zY29wZSA9PT0gc2NvcGU7IH07XG4gIH1cblxuICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG5hbWUpICYmIG5hbWUgIT09ICcqJykge1xuICAgIG1hdGNoZXNOYW1lID0gZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0uZmllbGQgPT09IG5hbWU7IH07XG4gIH1cblxuICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMudm1JZCkpIHtcbiAgICBtYXRjaGVzVk0gPSBmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaXRlbS52bUlkID09PSB0aGlzJDEudm1JZDsgfTtcbiAgfVxuXG4gIC8vIG1hdGNoZXMgdGhlIGZpcnN0IGNhbmRpZGF0ZS5cbiAgdmFyIGlzUHJpbWFyeSA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNWTShpdGVtKSAmJiBtYXRjaGVzTmFtZShpdGVtKSAmJiBtYXRjaGVzUnVsZShpdGVtKSAmJiBtYXRjaGVzU2NvcGUoaXRlbSk7XG4gIH07XG5cbiAgLy8gbWF0Y2hlcyBhIHNlY29uZCBjYW5kaWRhdGUsIHdoaWNoIGlzIGEgZmllbGQgd2l0aCBhIG5hbWUgY29udGFpbmluZyB0aGUgJy4nIGNoYXJhY3Rlci5cbiAgdmFyIGlzQWx0ID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1ZNKGl0ZW0pICYmIG1hdGNoZXNSdWxlKGl0ZW0pICYmIGl0ZW0uZmllbGQgPT09IChzY29wZSArIFwiLlwiICsgbmFtZSk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBpc1ByaW1hcnk6IGlzUHJpbWFyeSxcbiAgICBpc0FsdDogaXNBbHRcbiAgfTtcbn07XG5cbkVycm9yQmFnLnByb3RvdHlwZS5fbWF0Y2ggPSBmdW5jdGlvbiBfbWF0Y2ggKHNlbGVjdG9yKSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChzZWxlY3RvcikpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgdmFyIHJlZiA9IHRoaXMuX21ha2VDYW5kaWRhdGVGaWx0ZXJzKHNlbGVjdG9yKTtcbiAgICB2YXIgaXNQcmltYXJ5ID0gcmVmLmlzUHJpbWFyeTtcbiAgICB2YXIgaXNBbHQgPSByZWYuaXNBbHQ7XG5cbiAgcmV0dXJuIHRoaXMuaXRlbXMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBpdGVtLCBpZHgsIGFycikge1xuICAgIHZhciBpc0xhc3QgPSBpZHggPT09IGFyci5sZW5ndGggLSAxO1xuICAgIGlmIChwcmV2LnByaW1hcnkpIHtcbiAgICAgIHJldHVybiBpc0xhc3QgPyBwcmV2LnByaW1hcnkgOiBwcmV2O1xuICAgIH1cblxuICAgIGlmIChpc1ByaW1hcnkoaXRlbSkpIHtcbiAgICAgIHByZXYucHJpbWFyeSA9IGl0ZW07XG4gICAgfVxuXG4gICAgaWYgKGlzQWx0KGl0ZW0pKSB7XG4gICAgICBwcmV2LmFsdCA9IGl0ZW07XG4gICAgfVxuXG4gICAgLy8ga2VlcCBnb2luZy5cbiAgICBpZiAoIWlzTGFzdCkge1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXYucHJpbWFyeSB8fCBwcmV2LmFsdDtcbiAgfSwge30pO1xufTtcblxudmFyIERFRkFVTFRfQ09ORklHID0ge1xuICBsb2NhbGU6ICdlbicsXG4gIGRlbGF5OiAwLFxuICBlcnJvckJhZ05hbWU6ICdlcnJvcnMnLFxuICBkaWN0aW9uYXJ5OiBudWxsLFxuICBmaWVsZHNCYWdOYW1lOiAnZmllbGRzJyxcbiAgY2xhc3NlczogZmFsc2UsXG4gIGNsYXNzTmFtZXM6IG51bGwsXG4gIGV2ZW50czogJ2lucHV0JyxcbiAgaW5qZWN0OiB0cnVlLFxuICBmYXN0RXhpdDogdHJ1ZSxcbiAgYXJpYTogdHJ1ZSxcbiAgdmFsaWRpdHk6IGZhbHNlLFxuICBtb2RlOiAnYWdncmVzc2l2ZScsXG4gIHVzZUNvbnN0cmFpbnRBdHRyczogdHJ1ZSxcbiAgaTE4bjogbnVsbCxcbiAgaTE4blJvb3RLZXk6ICd2YWxpZGF0aW9uJ1xufTtcblxudmFyIGN1cnJlbnRDb25maWcgPSBhc3NpZ24oe30sIERFRkFVTFRfQ09ORklHKTtcblxudmFyIHJlc29sdmVDb25maWcgPSBmdW5jdGlvbiAoY3R4KSB7XG4gIHZhciBzZWxmQ29uZmlnID0gZ2V0UGF0aCgnJG9wdGlvbnMuJF92ZWVWYWxpZGF0ZScsIGN0eCwge30pO1xuXG4gIHJldHVybiBhc3NpZ24oe30sIGN1cnJlbnRDb25maWcsIHNlbGZDb25maWcpO1xufTtcblxudmFyIGdldENvbmZpZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGN1cnJlbnRDb25maWc7IH07XG5cbnZhciBzZXRDb25maWcgPSBmdW5jdGlvbiAobmV3Q29uZikge1xuICBjdXJyZW50Q29uZmlnID0gYXNzaWduKHt9LCBjdXJyZW50Q29uZmlnLCBuZXdDb25mKTtcbn07XG5cbi8vIFZOb2RlIFV0aWxzXG5cbi8vIEdldHMgdGhlIG1vZGVsIG9iamVjdCBvbiB0aGUgdm5vZGUuXG5mdW5jdGlvbiBmaW5kTW9kZWwgKHZub2RlKSB7XG4gIGlmICghdm5vZGUuZGF0YSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQ29tcG9uZW50IE1vZGVsXG4gIGlmICh2bm9kZS5kYXRhLm1vZGVsKSB7XG4gICAgcmV0dXJuIHZub2RlLmRhdGEubW9kZWw7XG4gIH1cblxuICByZXR1cm4gISEodm5vZGUuZGF0YS5kaXJlY3RpdmVzKSAmJiBmaW5kKHZub2RlLmRhdGEuZGlyZWN0aXZlcywgZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQubmFtZSA9PT0gJ21vZGVsJzsgfSk7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RDaGlsZHJlbiAodm5vZGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgcmV0dXJuIHZub2RlO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodm5vZGUuY2hpbGRyZW4pKSB7XG4gICAgcmV0dXJuIHZub2RlLmNoaWxkcmVuO1xuICB9XG5cbiAgaWYgKHZub2RlLmNvbXBvbmVudE9wdGlvbnMgJiYgQXJyYXkuaXNBcnJheSh2bm9kZS5jb21wb25lbnRPcHRpb25zLmNoaWxkcmVuKSkge1xuICAgIHJldHVybiB2bm9kZS5jb21wb25lbnRPcHRpb25zLmNoaWxkcmVuO1xuICB9XG5cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0Vk5vZGVzICh2bm9kZSkge1xuICBpZiAoZmluZE1vZGVsKHZub2RlKSkge1xuICAgIHJldHVybiBbdm5vZGVdO1xuICB9XG5cbiAgdmFyIGNoaWxkcmVuID0gZXh0cmFjdENoaWxkcmVuKHZub2RlKTtcblxuICByZXR1cm4gY2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uIChub2Rlcywgbm9kZSkge1xuICAgIHZhciBjYW5kaWRhdGVzID0gZXh0cmFjdFZOb2Rlcyhub2RlKTtcbiAgICBpZiAoY2FuZGlkYXRlcy5sZW5ndGgpIHtcbiAgICAgIG5vZGVzLnB1c2guYXBwbHkobm9kZXMsIGNhbmRpZGF0ZXMpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfSwgW10pO1xufVxuXG4vLyBSZXNvbHZlcyB2LW1vZGVsIGNvbmZpZyBpZiBleGlzdHMuXG5mdW5jdGlvbiBmaW5kTW9kZWxDb25maWcgKHZub2RlKSB7XG4gIGlmICghdm5vZGUuY29tcG9uZW50T3B0aW9ucykgeyByZXR1cm4gbnVsbDsgfVxuXG4gIHJldHVybiB2bm9kZS5jb21wb25lbnRPcHRpb25zLkN0b3Iub3B0aW9ucy5tb2RlbDtcbn1cbi8vIEFkZHMgYSBsaXN0ZW5lciB0byB2bm9kZSBsaXN0ZW5lciBvYmplY3QuXG5mdW5jdGlvbiBtZXJnZVZOb2RlTGlzdGVuZXJzIChvYmosIGV2ZW50TmFtZSwgaGFuZGxlcikge1xuICAvLyBIYXMgYSBzaW5nbGUgbGlzdGVuZXIsIGNvbnZlcnQgdG8gYXJyYXkuXG4gIGlmIChpc0NhbGxhYmxlKG9ialtldmVudE5hbWVdKSkge1xuICAgIHZhciBwcmV2SGFuZGxlciA9IG9ialtldmVudE5hbWVdO1xuICAgIG9ialtldmVudE5hbWVdID0gW3ByZXZIYW5kbGVyXTtcbiAgfVxuXG4gIC8vIG5vIGxpc3RlbmVycywgY3JlYXRlIHRoZSBhcnJheS5cbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKG9ialtldmVudE5hbWVdKSkge1xuICAgIG9ialtldmVudE5hbWVdID0gW107XG4gIH1cblxuICBvYmpbZXZlbnROYW1lXS5wdXNoKGhhbmRsZXIpO1xufVxuXG4vLyBBZGRzIGEgbGlzdGVuZXIgdG8gYSBuYXRpdmUgSFRNTCB2bm9kZS5cbmZ1bmN0aW9uIGFkZE5hdGl2ZU5vZGVMaXN0ZW5lciAobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyKSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChub2RlLmRhdGEub24pKSB7XG4gICAgbm9kZS5kYXRhLm9uID0ge307XG4gIH1cblxuICBtZXJnZVZOb2RlTGlzdGVuZXJzKG5vZGUuZGF0YS5vbiwgZXZlbnROYW1lLCBoYW5kbGVyKTtcbn1cblxuLy8gQWRkcyBhIGxpc3RlbmVyIHRvIGEgVnVlIGNvbXBvbmVudCB2bm9kZS5cbmZ1bmN0aW9uIGFkZENvbXBvbmVudE5vZGVMaXN0ZW5lciAobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghbm9kZS5jb21wb25lbnRPcHRpb25zLmxpc3RlbmVycykge1xuICAgIG5vZGUuY29tcG9uZW50T3B0aW9ucy5saXN0ZW5lcnMgPSB7fTtcbiAgfVxuXG4gIG1lcmdlVk5vZGVMaXN0ZW5lcnMobm9kZS5jb21wb25lbnRPcHRpb25zLmxpc3RlbmVycywgZXZlbnROYW1lLCBoYW5kbGVyKTtcbn1cbmZ1bmN0aW9uIGFkZFZOb2RlTGlzdGVuZXIgKHZub2RlLCBldmVudE5hbWUsIGhhbmRsZXIpIHtcbiAgaWYgKHZub2RlLmNvbXBvbmVudE9wdGlvbnMpIHtcbiAgICBhZGRDb21wb25lbnROb2RlTGlzdGVuZXIodm5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlcik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYWRkTmF0aXZlTm9kZUxpc3RlbmVyKHZub2RlLCBldmVudE5hbWUsIGhhbmRsZXIpO1xufVxuLy8gRGV0ZXJtaW5lcyBpZiBgY2hhbmdlYCBzaG91bGQgYmUgdXNlZCBvdmVyIGBpbnB1dGAgZm9yIGxpc3RlbmVycy5cbmZ1bmN0aW9uIGdldElucHV0RXZlbnROYW1lICh2bm9kZSwgbW9kZWwpIHtcbiAgLy8gSXMgYSBjb21wb25lbnQuXG4gIGlmICh2bm9kZS5jb21wb25lbnRPcHRpb25zKSB7XG4gICAgdmFyIHJlZiA9IGZpbmRNb2RlbENvbmZpZyh2bm9kZSkgfHwgeyBldmVudDogJ2lucHV0JyB9O1xuICAgIHZhciBldmVudCA9IHJlZi5ldmVudDtcblxuICAgIHJldHVybiBldmVudDtcbiAgfVxuXG4gIC8vIExhenkgTW9kZWxzIGFuZCBzZWxlY3QgdGFnIHR5cGljYWxseSB1c2UgY2hhbmdlIGV2ZW50XG4gIGlmICgobW9kZWwgJiYgbW9kZWwubW9kaWZpZXJzICYmIG1vZGVsLm1vZGlmaWVycy5sYXp5KSB8fCB2bm9kZS50YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgcmV0dXJuICdjaGFuZ2UnO1xuICB9XG5cbiAgLy8gaXMgYSB0ZXh0dWFsLXR5cGUgaW5wdXQuXG4gIGlmICh2bm9kZS5kYXRhLmF0dHJzICYmIGlzVGV4dElucHV0KHsgdHlwZTogdm5vZGUuZGF0YS5hdHRycy50eXBlIHx8ICd0ZXh0JyB9KSkge1xuICAgIHJldHVybiAnaW5wdXQnO1xuICB9XG5cbiAgcmV0dXJuICdjaGFuZ2UnO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTbG90cyAoc2xvdHMsIGN0eCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoc2xvdHMpLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBrZXkpIHtcbiAgICBzbG90c1trZXldLmZvckVhY2goZnVuY3Rpb24gKHZub2RlKSB7XG4gICAgICBpZiAoIXZub2RlLmNvbnRleHQpIHtcbiAgICAgICAgc2xvdHNba2V5XS5jb250ZXh0ID0gY3R4O1xuICAgICAgICBpZiAoIXZub2RlLmRhdGEpIHtcbiAgICAgICAgICB2bm9kZS5kYXRhID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdm5vZGUuZGF0YS5zbG90ID0ga2V5O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyci5jb25jYXQoc2xvdHNba2V5XSk7XG4gIH0sIFtdKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlbmRlcmxlc3MgKGgsIGNoaWxkcmVuKSB7XG4gIC8vIE9ubHkgcmVuZGVyIHRoZSBmaXJzdCBpdGVtIG9mIHRoZSBub2RlLlxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiYgY2hpbGRyZW5bMF0pIHtcbiAgICByZXR1cm4gY2hpbGRyZW5bMF07XG4gIH1cblxuICAvLyBhIHNpbmdsZSBub2RlLlxuICBpZiAoY2hpbGRyZW4pIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cblxuICAvLyBObyBzbG90cywgcmVuZGVyIG5vdGhpbmcuXG4gIHJldHVybiBoKCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBvcHRpb25zIHJlcXVpcmVkIHRvIGNvbnN0cnVjdCBhIGZpZWxkLlxuICovXG52YXIgUmVzb2x2ZXIgPSBmdW5jdGlvbiBSZXNvbHZlciAoKSB7fTtcblxuUmVzb2x2ZXIuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZSAoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gIHZhciBtb2RlbCA9IFJlc29sdmVyLnJlc29sdmVNb2RlbChiaW5kaW5nLCB2bm9kZSk7XG4gIHZhciBvcHRpb25zID0gcmVzb2x2ZUNvbmZpZyh2bm9kZS5jb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IFJlc29sdmVyLnJlc29sdmVOYW1lKGVsLCB2bm9kZSksXG4gICAgZWw6IGVsLFxuICAgIGxpc3RlbjogIWJpbmRpbmcubW9kaWZpZXJzLmRpc2FibGUsXG4gICAgYmFpbHM6IGJpbmRpbmcubW9kaWZpZXJzLmJhaWxzID8gdHJ1ZSA6IChiaW5kaW5nLm1vZGlmaWVycy5jb250aW51ZXMgPT09IHRydWUgPyBmYWxzZSA6IHVuZGVmaW5lZCksXG4gICAgc2NvcGU6IFJlc29sdmVyLnJlc29sdmVTY29wZShlbCwgYmluZGluZywgdm5vZGUpLFxuICAgIHZtOiB2bm9kZS5jb250ZXh0LFxuICAgIGV4cHJlc3Npb246IGJpbmRpbmcudmFsdWUsXG4gICAgY29tcG9uZW50OiB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSxcbiAgICBjbGFzc2VzOiBvcHRpb25zLmNsYXNzZXMsXG4gICAgY2xhc3NOYW1lczogb3B0aW9ucy5jbGFzc05hbWVzLFxuICAgIGdldHRlcjogUmVzb2x2ZXIucmVzb2x2ZUdldHRlcihlbCwgdm5vZGUsIG1vZGVsKSxcbiAgICBldmVudHM6IFJlc29sdmVyLnJlc29sdmVFdmVudHMoZWwsIHZub2RlKSB8fCBvcHRpb25zLmV2ZW50cyxcbiAgICBtb2RlbDogbW9kZWwsXG4gICAgZGVsYXk6IFJlc29sdmVyLnJlc29sdmVEZWxheShlbCwgdm5vZGUsIG9wdGlvbnMpLFxuICAgIHJ1bGVzOiBSZXNvbHZlci5yZXNvbHZlUnVsZXMoZWwsIGJpbmRpbmcsIHZub2RlKSxcbiAgICBpbW1lZGlhdGU6ICEhYmluZGluZy5tb2RpZmllcnMuaW5pdGlhbCB8fCAhIWJpbmRpbmcubW9kaWZpZXJzLmltbWVkaWF0ZSxcbiAgICBwZXJzaXN0OiAhIWJpbmRpbmcubW9kaWZpZXJzLnBlcnNpc3QsXG4gICAgdmFsaWRpdHk6IG9wdGlvbnMudmFsaWRpdHkgJiYgIXZub2RlLmNvbXBvbmVudEluc3RhbmNlLFxuICAgIGFyaWE6IG9wdGlvbnMuYXJpYSAmJiAhdm5vZGUuY29tcG9uZW50SW5zdGFuY2UsXG4gICAgaW5pdGlhbFZhbHVlOiBSZXNvbHZlci5yZXNvbHZlSW5pdGlhbFZhbHVlKHZub2RlKVxuICB9O1xufTtcblxuUmVzb2x2ZXIuZ2V0Q3RvckNvbmZpZyA9IGZ1bmN0aW9uIGdldEN0b3JDb25maWcgKHZub2RlKSB7XG4gIGlmICghdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHsgcmV0dXJuIG51bGw7IH1cblxuICB2YXIgY29uZmlnID0gZ2V0UGF0aCgnY29tcG9uZW50SW5zdGFuY2UuJG9wdGlvbnMuJF92ZWVWYWxpZGF0ZScsIHZub2RlKTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgcnVsZXMgZGVmaW5lZCBvbiBhbiBlbGVtZW50LlxuICovXG5SZXNvbHZlci5yZXNvbHZlUnVsZXMgPSBmdW5jdGlvbiByZXNvbHZlUnVsZXMgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICB2YXIgcnVsZXMgPSAnJztcbiAgaWYgKCFiaW5kaW5nLnZhbHVlICYmICghYmluZGluZyB8fCAhYmluZGluZy5leHByZXNzaW9uKSkge1xuICAgIHJ1bGVzID0gZ2V0RGF0YUF0dHJpYnV0ZShlbCwgJ3J1bGVzJyk7XG4gIH1cblxuICBpZiAoYmluZGluZy52YWx1ZSAmJiBpbmNsdWRlcyhbJ3N0cmluZycsICdvYmplY3QnXSwgdHlwZW9mIGJpbmRpbmcudmFsdWUucnVsZXMpKSB7XG4gICAgcnVsZXMgPSBiaW5kaW5nLnZhbHVlLnJ1bGVzO1xuICB9IGVsc2UgaWYgKGJpbmRpbmcudmFsdWUpIHtcbiAgICBydWxlcyA9IGJpbmRpbmcudmFsdWU7XG4gIH1cblxuICBpZiAodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICAvLyBJZiB2YWxpZGl0eSBpcyBkaXNhYmxlZCwgaWdub3JlIGZpZWxkIHJ1bGVzLlxuICB2YXIgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVJ1bGVzKHJ1bGVzKTtcbiAgaWYgKCFnZXRDb25maWcoKS51c2VDb25zdHJhaW50QXR0cnMpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgfVxuXG4gIHJldHVybiBhc3NpZ24oe30sIGZpbGxSdWxlc0Zyb21FbGVtZW50KGVsLCB7fSksIG5vcm1hbGl6ZWQpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0geyp9IHZub2RlXG4gKi9cblJlc29sdmVyLnJlc29sdmVJbml0aWFsVmFsdWUgPSBmdW5jdGlvbiByZXNvbHZlSW5pdGlhbFZhbHVlICh2bm9kZSkge1xuICB2YXIgbW9kZWwgPSB2bm9kZS5kYXRhLm1vZGVsIHx8IGZpbmQodm5vZGUuZGF0YS5kaXJlY3RpdmVzLCBmdW5jdGlvbiAoZCkgeyByZXR1cm4gZC5uYW1lID09PSAnbW9kZWwnOyB9KTtcblxuICByZXR1cm4gbW9kZWwgJiYgbW9kZWwudmFsdWU7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBkZWxheSB2YWx1ZS5cbiAqIEBwYXJhbSB7Kn0gZWxcbiAqIEBwYXJhbSB7Kn0gdm5vZGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKi9cblJlc29sdmVyLnJlc29sdmVEZWxheSA9IGZ1bmN0aW9uIHJlc29sdmVEZWxheSAoZWwsIHZub2RlLCBvcHRpb25zKSB7XG4gIHZhciBkZWxheSA9IGdldERhdGFBdHRyaWJ1dGUoZWwsICdkZWxheScpO1xuICB2YXIgZ2xvYmFsRGVsYXkgPSAob3B0aW9ucyAmJiAnZGVsYXknIGluIG9wdGlvbnMpID8gb3B0aW9ucy5kZWxheSA6IDA7XG5cbiAgaWYgKCFkZWxheSAmJiB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSAmJiB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kYXR0cnMpIHtcbiAgICBkZWxheSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRhdHRyc1snZGF0YS12di1kZWxheSddO1xuICB9XG5cbiAgaWYgKCFpc09iamVjdChnbG9iYWxEZWxheSkpIHtcbiAgICByZXR1cm4gZGVlcFBhcnNlSW50KGRlbGF5IHx8IGdsb2JhbERlbGF5KTtcbiAgfVxuXG4gIGlmICghaXNOdWxsT3JVbmRlZmluZWQoZGVsYXkpKSB7XG4gICAgZ2xvYmFsRGVsYXkuaW5wdXQgPSBkZWxheTtcbiAgfVxuXG4gIHJldHVybiBkZWVwUGFyc2VJbnQoZ2xvYmFsRGVsYXkpO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZXZlbnRzIHRvIHZhbGlkYXRlIGluIHJlc3BvbnNlIHRvLlxuICogQHBhcmFtIHsqfSBlbFxuICogQHBhcmFtIHsqfSB2bm9kZVxuICovXG5SZXNvbHZlci5yZXNvbHZlRXZlbnRzID0gZnVuY3Rpb24gcmVzb2x2ZUV2ZW50cyAoZWwsIHZub2RlKSB7XG4gIC8vIHJlc29sdmUgaXQgZnJvbSB0aGUgcm9vdCBlbGVtZW50LlxuICB2YXIgZXZlbnRzID0gZ2V0RGF0YUF0dHJpYnV0ZShlbCwgJ3ZhbGlkYXRlLW9uJyk7XG5cbiAgLy8gcmVzb2x2ZSBmcm9tIGRhdGEtdnYtdmFsaWRhdGUtb24gaWYgaXRzIGEgdnVlIGNvbXBvbmVudC5cbiAgaWYgKCFldmVudHMgJiYgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgJiYgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGF0dHJzKSB7XG4gICAgZXZlbnRzID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGF0dHJzWydkYXRhLXZ2LXZhbGlkYXRlLW9uJ107XG4gIH1cblxuICAvLyByZXNvbHZlIGl0IGZyb20gJF92ZWVWYWxpZGF0ZSBvcHRpb25zLlxuICBpZiAoIWV2ZW50cyAmJiB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgIHZhciBjb25maWcgPSBSZXNvbHZlci5nZXRDdG9yQ29uZmlnKHZub2RlKTtcbiAgICBldmVudHMgPSBjb25maWcgJiYgY29uZmlnLmV2ZW50cztcbiAgfVxuXG4gIGlmICghZXZlbnRzICYmIGdldENvbmZpZygpLmV2ZW50cykge1xuICAgIGV2ZW50cyA9IGdldENvbmZpZygpLmV2ZW50cztcbiAgfVxuXG4gIC8vIHJlc29sdmUgdGhlIG1vZGVsIGV2ZW50IGlmIGl0cyBjb25maWd1cmVkIGZvciBjdXN0b20gY29tcG9uZW50cy5cbiAgaWYgKGV2ZW50cyAmJiB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSAmJiBpbmNsdWRlcyhldmVudHMsICdpbnB1dCcpKSB7XG4gICAgdmFyIHJlZiA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRvcHRpb25zLm1vZGVsIHx8IHsgZXZlbnQ6ICdpbnB1dCcgfTtcbiAgICAgIHZhciBldmVudCA9IHJlZi5ldmVudDtcbiAgICAvLyBpZiB0aGUgcHJvcCB3YXMgY29uZmlndXJlZCBidXQgbm90IHRoZSBtb2RlbC5cbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm4gZXZlbnRzO1xuICAgIH1cblxuICAgIGV2ZW50cyA9IGV2ZW50cy5yZXBsYWNlKCdpbnB1dCcsIGV2ZW50KTtcbiAgfVxuXG4gIHJldHVybiBldmVudHM7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBzY29wZSBmb3IgdGhlIGZpZWxkLlxuICogQHBhcmFtIHsqfSBlbFxuICogQHBhcmFtIHsqfSBiaW5kaW5nXG4gKi9cblJlc29sdmVyLnJlc29sdmVTY29wZSA9IGZ1bmN0aW9uIHJlc29sdmVTY29wZSAoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgaWYgKCB2bm9kZSA9PT0gdm9pZCAwICkgdm5vZGUgPSB7fTtcblxuICB2YXIgc2NvcGUgPSBudWxsO1xuICBpZiAodm5vZGUuY29tcG9uZW50SW5zdGFuY2UgJiYgaXNOdWxsT3JVbmRlZmluZWQoc2NvcGUpKSB7XG4gICAgc2NvcGUgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kYXR0cnMgJiYgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGF0dHJzWydkYXRhLXZ2LXNjb3BlJ107XG4gIH1cblxuICByZXR1cm4gIWlzTnVsbE9yVW5kZWZpbmVkKHNjb3BlKSA/IHNjb3BlIDogZ2V0U2NvcGUoZWwpO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIG5vZGUgZGlyZWN0aXZlcyBjb250YWlucyBhIHYtbW9kZWwgb3IgYSBzcGVjaWZpZWQgYXJnLlxuICogQXJncyB0YWtlIHByaW9yaXR5IG92ZXIgbW9kZWxzLlxuICpcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuUmVzb2x2ZXIucmVzb2x2ZU1vZGVsID0gZnVuY3Rpb24gcmVzb2x2ZU1vZGVsIChiaW5kaW5nLCB2bm9kZSkge1xuICBpZiAoYmluZGluZy5hcmcpIHtcbiAgICByZXR1cm4geyBleHByZXNzaW9uOiBiaW5kaW5nLmFyZyB9O1xuICB9XG5cbiAgdmFyIG1vZGVsID0gZmluZE1vZGVsKHZub2RlKTtcbiAgaWYgKCFtb2RlbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS9ibG9iL2Rldi9zcmMvY29yZS91dGlsL2xhbmcuanMjTDI2XG4gIHZhciB3YXRjaGFibGUgPSAhL1teXFx3LiRdLy50ZXN0KG1vZGVsLmV4cHJlc3Npb24pICYmIGhhc1BhdGgobW9kZWwuZXhwcmVzc2lvbiwgdm5vZGUuY29udGV4dCk7XG4gIHZhciBsYXp5ID0gISEobW9kZWwubW9kaWZpZXJzICYmIG1vZGVsLm1vZGlmaWVycy5sYXp5KTtcblxuICBpZiAoIXdhdGNoYWJsZSkge1xuICAgIHJldHVybiB7IGV4cHJlc3Npb246IG51bGwsIGxhenk6IGxhenkgfTtcbiAgfVxuXG4gIHJldHVybiB7IGV4cHJlc3Npb246IG1vZGVsLmV4cHJlc3Npb24sIGxhenk6IGxhenkgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGZpZWxkIG5hbWUgdG8gdHJpZ2dlciB2YWxpZGF0aW9ucy5cbiAqIEByZXR1cm4ge1N0cmluZ30gVGhlIGZpZWxkIG5hbWUuXG4gKi9cblJlc29sdmVyLnJlc29sdmVOYW1lID0gZnVuY3Rpb24gcmVzb2x2ZU5hbWUgKGVsLCB2bm9kZSkge1xuICB2YXIgbmFtZSA9IGdldERhdGFBdHRyaWJ1dGUoZWwsICduYW1lJyk7XG5cbiAgaWYgKCFuYW1lICYmICF2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgIHJldHVybiBlbC5uYW1lO1xuICB9XG5cbiAgaWYgKCFuYW1lICYmIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICYmIHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRhdHRycykge1xuICAgIG5hbWUgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kYXR0cnNbJ2RhdGEtdnYtbmFtZSddIHx8IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRhdHRyc1snbmFtZSddO1xuICB9XG5cbiAgaWYgKCFuYW1lICYmIHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgdmFyIGNvbmZpZyA9IFJlc29sdmVyLmdldEN0b3JDb25maWcodm5vZGUpO1xuICAgIGlmIChjb25maWcgJiYgaXNDYWxsYWJsZShjb25maWcubmFtZSkpIHtcbiAgICAgIHZhciBib3VuZEdldHRlciA9IGNvbmZpZy5uYW1lLmJpbmQodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpO1xuXG4gICAgICByZXR1cm4gYm91bmRHZXR0ZXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UubmFtZTtcbiAgfVxuXG4gIHJldHVybiBuYW1lO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgdmFsdWUgZ2V0dGVyIGlucHV0IHR5cGUuXG4gKi9cblJlc29sdmVyLnJlc29sdmVHZXR0ZXIgPSBmdW5jdGlvbiByZXNvbHZlR2V0dGVyIChlbCwgdm5vZGUsIG1vZGVsKSB7XG4gIGlmIChtb2RlbCAmJiBtb2RlbC5leHByZXNzaW9uKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBnZXRQYXRoKG1vZGVsLmV4cHJlc3Npb24sIHZub2RlLmNvbnRleHQpO1xuICAgIH07XG4gIH1cblxuICBpZiAodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICB2YXIgcGF0aCA9IGdldERhdGFBdHRyaWJ1dGUoZWwsICd2YWx1ZS1wYXRoJykgfHwgKHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRhdHRycyAmJiB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kYXR0cnNbJ2RhdGEtdnYtdmFsdWUtcGF0aCddKTtcbiAgICBpZiAocGF0aCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhdGgocGF0aCwgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgY29uZmlnID0gUmVzb2x2ZXIuZ2V0Q3RvckNvbmZpZyh2bm9kZSk7XG4gICAgaWYgKGNvbmZpZyAmJiBpc0NhbGxhYmxlKGNvbmZpZy52YWx1ZSkpIHtcbiAgICAgIHZhciBib3VuZEdldHRlciA9IGNvbmZpZy52YWx1ZS5iaW5kKHZub2RlLmNvbXBvbmVudEluc3RhbmNlKTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGJvdW5kR2V0dGVyKCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciByZWYgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kb3B0aW9ucy5tb2RlbCB8fCB7IHByb3A6ICd2YWx1ZScgfTtcbiAgICAgIHZhciBwcm9wID0gcmVmLnByb3A7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHZub2RlLmNvbXBvbmVudEluc3RhbmNlW3Byb3BdO1xuICAgIH07XG4gIH1cblxuICBzd2l0Y2ggKGVsLnR5cGUpIHtcbiAgY2FzZSAnY2hlY2tib3gnOiByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKChcImlucHV0W25hbWU9XFxcIlwiICsgKGVsLm5hbWUpICsgXCJcXFwiXVwiKSk7XG5cbiAgICBlbHMgPSB0b0FycmF5KGVscykuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuY2hlY2tlZDsgfSk7XG4gICAgaWYgKCFlbHMubGVuZ3RoKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICAgIHJldHVybiBlbHMubWFwKGZ1bmN0aW9uIChjaGVja2JveCkgeyByZXR1cm4gY2hlY2tib3gudmFsdWU7IH0pO1xuICB9O1xuICBjYXNlICdyYWRpbyc6IHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoKFwiaW5wdXRbbmFtZT1cXFwiXCIgKyAoZWwubmFtZSkgKyBcIlxcXCJdXCIpKTtcbiAgICB2YXIgZWxtID0gZmluZChlbHMsIGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuY2hlY2tlZDsgfSk7XG5cbiAgICByZXR1cm4gZWxtICYmIGVsbS52YWx1ZTtcbiAgfTtcbiAgY2FzZSAnZmlsZSc6IHJldHVybiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHJldHVybiB0b0FycmF5KGVsLmZpbGVzKTtcbiAgfTtcbiAgY2FzZSAnc2VsZWN0LW11bHRpcGxlJzogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdG9BcnJheShlbC5vcHRpb25zKS5maWx0ZXIoZnVuY3Rpb24gKG9wdCkgeyByZXR1cm4gb3B0LnNlbGVjdGVkOyB9KS5tYXAoZnVuY3Rpb24gKG9wdCkgeyByZXR1cm4gb3B0LnZhbHVlOyB9KTtcbiAgfTtcbiAgZGVmYXVsdDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZWwgJiYgZWwudmFsdWU7XG4gIH07XG4gIH1cbn07XG5cbnZhciBSVUxFUyA9IHt9O1xuXG52YXIgUnVsZUNvbnRhaW5lciA9IGZ1bmN0aW9uIFJ1bGVDb250YWluZXIgKCkge307XG5cbnZhciBzdGF0aWNBY2Nlc3NvcnMgPSB7IHJ1bGVzOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH07XG5cblJ1bGVDb250YWluZXIuYWRkID0gZnVuY3Rpb24gYWRkIChuYW1lLCByZWYpIHtcbiAgICB2YXIgdmFsaWRhdGUgPSByZWYudmFsaWRhdGU7XG4gICAgdmFyIG9wdGlvbnMgPSByZWYub3B0aW9ucztcbiAgICB2YXIgcGFyYW1OYW1lcyA9IHJlZi5wYXJhbU5hbWVzO1xuXG4gIFJVTEVTW25hbWVdID0ge1xuICAgIHZhbGlkYXRlOiB2YWxpZGF0ZSxcbiAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgIHBhcmFtTmFtZXM6IHBhcmFtTmFtZXNcbiAgfTtcbn07XG5cbnN0YXRpY0FjY2Vzc29ycy5ydWxlcy5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBSVUxFUztcbn07XG5cblJ1bGVDb250YWluZXIuaGFzID0gZnVuY3Rpb24gaGFzIChuYW1lKSB7XG4gIHJldHVybiAhIVJVTEVTW25hbWVdO1xufTtcblxuUnVsZUNvbnRhaW5lci5pc0ltbWVkaWF0ZSA9IGZ1bmN0aW9uIGlzSW1tZWRpYXRlIChuYW1lKSB7XG4gIHJldHVybiAhIShSVUxFU1tuYW1lXSAmJiBSVUxFU1tuYW1lXS5vcHRpb25zLmltbWVkaWF0ZSk7XG59O1xuXG5SdWxlQ29udGFpbmVyLmlzUmVxdWlyZVJ1bGUgPSBmdW5jdGlvbiBpc1JlcXVpcmVSdWxlIChuYW1lKSB7XG4gIHJldHVybiAhIShSVUxFU1tuYW1lXSAmJiBSVUxFU1tuYW1lXS5vcHRpb25zLmNvbXB1dGVzUmVxdWlyZWQpO1xufTtcblxuUnVsZUNvbnRhaW5lci5pc1RhcmdldFJ1bGUgPSBmdW5jdGlvbiBpc1RhcmdldFJ1bGUgKG5hbWUpIHtcbiAgcmV0dXJuICEhKFJVTEVTW25hbWVdICYmIFJVTEVTW25hbWVdLm9wdGlvbnMuaGFzVGFyZ2V0KTtcbn07XG5cblJ1bGVDb250YWluZXIucmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlIChydWxlTmFtZSkge1xuICBkZWxldGUgUlVMRVNbcnVsZU5hbWVdO1xufTtcblxuUnVsZUNvbnRhaW5lci5nZXRQYXJhbU5hbWVzID0gZnVuY3Rpb24gZ2V0UGFyYW1OYW1lcyAocnVsZU5hbWUpIHtcbiAgcmV0dXJuIFJVTEVTW3J1bGVOYW1lXSAmJiBSVUxFU1tydWxlTmFtZV0ucGFyYW1OYW1lcztcbn07XG5cblJ1bGVDb250YWluZXIuZ2V0T3B0aW9ucyA9IGZ1bmN0aW9uIGdldE9wdGlvbnMgKHJ1bGVOYW1lKSB7XG4gIHJldHVybiBSVUxFU1tydWxlTmFtZV0gJiYgUlVMRVNbcnVsZU5hbWVdLm9wdGlvbnM7XG59O1xuXG5SdWxlQ29udGFpbmVyLmdldFZhbGlkYXRvck1ldGhvZCA9IGZ1bmN0aW9uIGdldFZhbGlkYXRvck1ldGhvZCAocnVsZU5hbWUpIHtcbiAgcmV0dXJuIFJVTEVTW3J1bGVOYW1lXSA/IFJVTEVTW3J1bGVOYW1lXS52YWxpZGF0ZSA6IG51bGw7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggUnVsZUNvbnRhaW5lciwgc3RhdGljQWNjZXNzb3JzICk7XG5cbi8vIFxuXG52YXIgaXNFdmVudCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgcmV0dXJuICh0eXBlb2YgRXZlbnQgIT09ICd1bmRlZmluZWQnICYmIGlzQ2FsbGFibGUoRXZlbnQpICYmIGV2dCBpbnN0YW5jZW9mIEV2ZW50KSB8fCAoZXZ0ICYmIGV2dC5zcmNFbGVtZW50KTtcbn07XG5cbnZhciBub3JtYWxpemVFdmVudHMgPSBmdW5jdGlvbiAoZXZ0cykge1xuICBpZiAoIWV2dHMpIHsgcmV0dXJuIFtdOyB9XG5cbiAgcmV0dXJuICh0eXBlb2YgZXZ0cyA9PT0gJ3N0cmluZycgPyBldnRzLnNwbGl0KCd8JykgOiBldnRzKTtcbn07XG5cbnZhciBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuXG52YXIgZGV0ZWN0UGFzc2l2ZVN1cHBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgdmFyIG9wdHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdwYXNzaXZlJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0UGFzc2l2ZScsIG51bGwsIG9wdHMpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0ZXN0UGFzc2l2ZScsIG51bGwsIG9wdHMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHN1cHBvcnRzUGFzc2l2ZTtcbn07XG5cbnZhciBhZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24gKGVsLCBldmVudE5hbWUsIGNiKSB7XG4gIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYiwgc3VwcG9ydHNQYXNzaXZlID8geyBwYXNzaXZlOiB0cnVlIH0gOiBmYWxzZSk7XG59O1xuXG4vLyBcblxudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgdGFyZ2V0T2Y6IG51bGwsXG4gIGltbWVkaWF0ZTogZmFsc2UsXG4gIHBlcnNpc3Q6IGZhbHNlLFxuICBzY29wZTogbnVsbCxcbiAgbGlzdGVuOiB0cnVlLFxuICBuYW1lOiBudWxsLFxuICBydWxlczoge30sXG4gIHZtOiBudWxsLFxuICBjbGFzc2VzOiBmYWxzZSxcbiAgdmFsaWRpdHk6IHRydWUsXG4gIGFyaWE6IHRydWUsXG4gIGV2ZW50czogJ2lucHV0fGJsdXInLFxuICBkZWxheTogMCxcbiAgY2xhc3NOYW1lczoge1xuICAgIHRvdWNoZWQ6ICd0b3VjaGVkJywgLy8gdGhlIGNvbnRyb2wgaGFzIGJlZW4gYmx1cnJlZFxuICAgIHVudG91Y2hlZDogJ3VudG91Y2hlZCcsIC8vIHRoZSBjb250cm9sIGhhc24ndCBiZWVuIGJsdXJyZWRcbiAgICB2YWxpZDogJ3ZhbGlkJywgLy8gbW9kZWwgaXMgdmFsaWRcbiAgICBpbnZhbGlkOiAnaW52YWxpZCcsIC8vIG1vZGVsIGlzIGludmFsaWRcbiAgICBwcmlzdGluZTogJ3ByaXN0aW5lJywgLy8gY29udHJvbCBoYXMgbm90IGJlZW4gaW50ZXJhY3RlZCB3aXRoXG4gICAgZGlydHk6ICdkaXJ0eScgLy8gY29udHJvbCBoYXMgYmVlbiBpbnRlcmFjdGVkIHdpdGhcbiAgfVxufTtcblxudmFyIEZpZWxkID0gZnVuY3Rpb24gRmllbGQgKG9wdGlvbnMpIHtcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgdGhpcy5pZCA9IHVuaXFJZCgpO1xuICB0aGlzLmVsID0gb3B0aW9ucy5lbDtcbiAgdGhpcy51cGRhdGVkID0gZmFsc2U7XG4gIHRoaXMudm1JZCA9IG9wdGlvbnMudm1JZDtcbiAgZGVmaW5lTm9uUmVhY3RpdmUodGhpcywgJ2RlcGVuZGVuY2llcycsIFtdKTtcbiAgZGVmaW5lTm9uUmVhY3RpdmUodGhpcywgJ3dhdGNoZXJzJywgW10pO1xuICBkZWZpbmVOb25SZWFjdGl2ZSh0aGlzLCAnZXZlbnRzJywgW10pO1xuICB0aGlzLmRlbGF5ID0gMDtcbiAgdGhpcy5ydWxlcyA9IHt9O1xuICB0aGlzLmZvcmNlUmVxdWlyZWQgPSBmYWxzZTtcbiAgdGhpcy5fY2FjaGVJZChvcHRpb25zKTtcbiAgdGhpcy5jbGFzc05hbWVzID0gYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMuY2xhc3NOYW1lcyk7XG4gIG9wdGlvbnMgPSBhc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyk7XG4gIHRoaXMuX2RlbGF5ID0gIWlzTnVsbE9yVW5kZWZpbmVkKG9wdGlvbnMuZGVsYXkpID8gb3B0aW9ucy5kZWxheSA6IDA7IC8vIGNhY2hlIGluaXRpYWwgZGVsYXlcbiAgdGhpcy52YWxpZGl0eSA9IG9wdGlvbnMudmFsaWRpdHk7XG4gIHRoaXMuYXJpYSA9IG9wdGlvbnMuYXJpYTtcbiAgdGhpcy5mbGFncyA9IG9wdGlvbnMuZmxhZ3MgfHwgY3JlYXRlRmxhZ3MoKTtcbiAgZGVmaW5lTm9uUmVhY3RpdmUodGhpcywgJ3ZtJywgb3B0aW9ucy52bSk7XG4gIGRlZmluZU5vblJlYWN0aXZlKHRoaXMsICdjb21wb25lbnRJbnN0YW5jZScsIG9wdGlvbnMuY29tcG9uZW50KTtcbiAgdGhpcy5jdG9yQ29uZmlnID0gdGhpcy5jb21wb25lbnRJbnN0YW5jZSA/IGdldFBhdGgoJyRvcHRpb25zLiRfdmVlVmFsaWRhdGUnLCB0aGlzLmNvbXBvbmVudEluc3RhbmNlKSA6IHVuZGVmaW5lZDtcbiAgdGhpcy51cGRhdGUob3B0aW9ucyk7XG4gIC8vIHNldCBpbml0aWFsIHZhbHVlLlxuICB0aGlzLmluaXRpYWxWYWx1ZSA9IHRoaXMudmFsdWU7XG4gIHRoaXMudXBkYXRlZCA9IGZhbHNlO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyQxID0geyB2YWxpZGF0b3I6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0saXNSZXF1aXJlZDogeyBjb25maWd1cmFibGU6IHRydWUgfSxpc0Rpc2FibGVkOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LGFsaWFzOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LHZhbHVlOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LGJhaWxzOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LHJlamVjdHNGYWxzZTogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMS52YWxpZGF0b3IuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMudm0gfHwgIXRoaXMudm0uJHZhbGlkYXRvcikge1xuICAgIHJldHVybiB7IHZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7IH0gfTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLnZtLiR2YWxpZGF0b3I7XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMS5pc1JlcXVpcmVkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICEhdGhpcy5ydWxlcy5yZXF1aXJlZCB8fCB0aGlzLmZvcmNlUmVxdWlyZWQ7XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMS5pc0Rpc2FibGVkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICEhKHRoaXMuZWwgJiYgdGhpcy5lbC5kaXNhYmxlZCk7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIGRpc3BsYXkgbmFtZSAodXNlci1mcmllbmRseSBuYW1lKS5cbiAqL1xucHJvdG90eXBlQWNjZXNzb3JzJDEuYWxpYXMuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fYWxpYXMpIHtcbiAgICByZXR1cm4gdGhpcy5fYWxpYXM7XG4gIH1cblxuICB2YXIgYWxpYXMgPSBudWxsO1xuICBpZiAodGhpcy5jdG9yQ29uZmlnICYmIHRoaXMuY3RvckNvbmZpZy5hbGlhcykge1xuICAgIGFsaWFzID0gaXNDYWxsYWJsZSh0aGlzLmN0b3JDb25maWcuYWxpYXMpID8gdGhpcy5jdG9yQ29uZmlnLmFsaWFzLmNhbGwodGhpcy5jb21wb25lbnRJbnN0YW5jZSkgOiB0aGlzLmN0b3JDb25maWcuYWxpYXM7XG4gIH1cblxuICBpZiAoIWFsaWFzICYmIHRoaXMuZWwpIHtcbiAgICBhbGlhcyA9IGdldERhdGFBdHRyaWJ1dGUodGhpcy5lbCwgJ2FzJyk7XG4gIH1cblxuICBpZiAoIWFsaWFzICYmIHRoaXMuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRJbnN0YW5jZS4kYXR0cnMgJiYgdGhpcy5jb21wb25lbnRJbnN0YW5jZS4kYXR0cnNbJ2RhdGEtdnYtYXMnXTtcbiAgfVxuXG4gIHJldHVybiBhbGlhcztcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cblxucHJvdG90eXBlQWNjZXNzb3JzJDEudmFsdWUuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIWlzQ2FsbGFibGUodGhpcy5nZXR0ZXIpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmdldHRlcigpO1xufTtcblxucHJvdG90eXBlQWNjZXNzb3JzJDEuYmFpbHMuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fYmFpbHM7XG59O1xuXG4vKipcbiAqIElmIHRoZSBmaWVsZCByZWplY3RzIGZhbHNlIGFzIGEgdmFsaWQgdmFsdWUgZm9yIHRoZSByZXF1aXJlZCBydWxlLlxuICovXG5cbnByb3RvdHlwZUFjY2Vzc29ycyQxLnJlamVjdHNGYWxzZS5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmNvbXBvbmVudEluc3RhbmNlICYmIHRoaXMuY3RvckNvbmZpZykge1xuICAgIHJldHVybiAhIXRoaXMuY3RvckNvbmZpZy5yZWplY3RzRmFsc2U7XG4gIH1cblxuICBpZiAoIXRoaXMuZWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lbC50eXBlID09PSAnY2hlY2tib3gnO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBpbnN0YW5jZSBtYXRjaGVzIHRoZSBvcHRpb25zIHByb3ZpZGVkLlxuICovXG5GaWVsZC5wcm90b3R5cGUubWF0Y2hlcyA9IGZ1bmN0aW9uIG1hdGNoZXMgKG9wdGlvbnMpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmlkKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IG9wdGlvbnMuaWQ7XG4gIH1cblxuICB2YXIgbWF0Y2hlc0NvbXBvbmVudElkID0gaXNOdWxsT3JVbmRlZmluZWQob3B0aW9ucy52bUlkKSA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH0gOiBmdW5jdGlvbiAoaWQpIHsgcmV0dXJuIGlkID09PSB0aGlzJDEudm1JZDsgfTtcbiAgaWYgKCFtYXRjaGVzQ29tcG9uZW50SWQob3B0aW9ucy52bUlkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm5hbWUgPT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnNjb3BlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjb3BlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSBvcHRpb25zLm5hbWU7XG4gIH1cblxuICBpZiAob3B0aW9ucy5uYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSA9PT0gb3B0aW9ucy5zY29wZTtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zLm5hbWUgPT09IHRoaXMubmFtZSAmJiBvcHRpb25zLnNjb3BlID09PSB0aGlzLnNjb3BlO1xufTtcblxuLyoqXG4gKiBDYWNoZXMgdGhlIGZpZWxkIGlkLlxuICovXG5GaWVsZC5wcm90b3R5cGUuX2NhY2hlSWQgPSBmdW5jdGlvbiBfY2FjaGVJZCAob3B0aW9ucykge1xuICBpZiAodGhpcy5lbCAmJiAhb3B0aW9ucy50YXJnZXRPZikge1xuICAgIHRoaXMuZWwuX3ZlZVZhbGlkYXRlSWQgPSB0aGlzLmlkO1xuICB9XG59O1xuXG4vKipcbiAqIEtlZXBzIGEgcmVmZXJlbmNlIG9mIHRoZSBtb3N0IGN1cnJlbnQgdmFsaWRhdGlvbiBydW4uXG4gKi9cbkZpZWxkLnByb3RvdHlwZS53YWl0Rm9yID0gZnVuY3Rpb24gd2FpdEZvciAocGVuZGluZ1Byb21pc2UpIHtcbiAgdGhpcy5fd2FpdGluZ0ZvciA9IHBlbmRpbmdQcm9taXNlO1xufTtcblxuRmllbGQucHJvdG90eXBlLmlzV2FpdGluZ0ZvciA9IGZ1bmN0aW9uIGlzV2FpdGluZ0ZvciAocHJvbWlzZSkge1xuICByZXR1cm4gdGhpcy5fd2FpdGluZ0ZvciA9PT0gcHJvbWlzZTtcbn07XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgZmllbGQgd2l0aCBjaGFuZ2VkIGRhdGEuXG4gKi9cbkZpZWxkLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKG9wdGlvbnMpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB0aGlzLnRhcmdldE9mID0gb3B0aW9ucy50YXJnZXRPZiB8fCBudWxsO1xuICB0aGlzLmltbWVkaWF0ZSA9IG9wdGlvbnMuaW1tZWRpYXRlIHx8IHRoaXMuaW1tZWRpYXRlIHx8IGZhbHNlO1xuICB0aGlzLnBlcnNpc3QgPSBvcHRpb25zLnBlcnNpc3QgfHwgdGhpcy5wZXJzaXN0IHx8IGZhbHNlO1xuXG4gIC8vIHVwZGF0ZSBlcnJvcnMgc2NvcGUgaWYgdGhlIGZpZWxkIHNjb3BlIHdhcyBjaGFuZ2VkLlxuICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG9wdGlvbnMuc2NvcGUpICYmIG9wdGlvbnMuc2NvcGUgIT09IHRoaXMuc2NvcGUgJiYgaXNDYWxsYWJsZSh0aGlzLnZhbGlkYXRvci51cGRhdGUpKSB7XG4gICAgdGhpcy52YWxpZGF0b3IudXBkYXRlKHRoaXMuaWQsIHsgc2NvcGU6IG9wdGlvbnMuc2NvcGUgfSk7XG4gIH1cbiAgdGhpcy5zY29wZSA9ICFpc051bGxPclVuZGVmaW5lZChvcHRpb25zLnNjb3BlKSA/IG9wdGlvbnMuc2NvcGVcbiAgICA6ICFpc051bGxPclVuZGVmaW5lZCh0aGlzLnNjb3BlKSA/IHRoaXMuc2NvcGUgOiBudWxsO1xuICB0aGlzLm5hbWUgPSAoIWlzTnVsbE9yVW5kZWZpbmVkKG9wdGlvbnMubmFtZSkgPyBTdHJpbmcob3B0aW9ucy5uYW1lKSA6IG9wdGlvbnMubmFtZSkgfHwgdGhpcy5uYW1lIHx8IG51bGw7XG4gIHRoaXMucnVsZXMgPSBvcHRpb25zLnJ1bGVzICE9PSB1bmRlZmluZWQgPyBub3JtYWxpemVSdWxlcyhvcHRpb25zLnJ1bGVzKSA6IHRoaXMucnVsZXM7XG4gIHRoaXMuX2JhaWxzID0gb3B0aW9ucy5iYWlscyAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5iYWlscyA6IHRoaXMuX2JhaWxzO1xuICB0aGlzLm1vZGVsID0gb3B0aW9ucy5tb2RlbCB8fCB0aGlzLm1vZGVsO1xuICB0aGlzLmxpc3RlbiA9IG9wdGlvbnMubGlzdGVuICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmxpc3RlbiA6IHRoaXMubGlzdGVuO1xuICB0aGlzLmNsYXNzZXMgPSAob3B0aW9ucy5jbGFzc2VzIHx8IHRoaXMuY2xhc3NlcyB8fCBmYWxzZSkgJiYgIXRoaXMuY29tcG9uZW50SW5zdGFuY2U7XG4gIHRoaXMuY2xhc3NOYW1lcyA9IGlzT2JqZWN0KG9wdGlvbnMuY2xhc3NOYW1lcykgPyBtZXJnZSh0aGlzLmNsYXNzTmFtZXMsIG9wdGlvbnMuY2xhc3NOYW1lcykgOiB0aGlzLmNsYXNzTmFtZXM7XG4gIHRoaXMuZ2V0dGVyID0gaXNDYWxsYWJsZShvcHRpb25zLmdldHRlcikgPyBvcHRpb25zLmdldHRlciA6IHRoaXMuZ2V0dGVyO1xuICB0aGlzLl9hbGlhcyA9IG9wdGlvbnMuYWxpYXMgfHwgdGhpcy5fYWxpYXM7XG4gIHRoaXMuZXZlbnRzID0gKG9wdGlvbnMuZXZlbnRzKSA/IG5vcm1hbGl6ZUV2ZW50cyhvcHRpb25zLmV2ZW50cykgOiB0aGlzLmV2ZW50cztcbiAgdGhpcy5kZWxheSA9IG1ha2VEZWxheU9iamVjdCh0aGlzLmV2ZW50cywgb3B0aW9ucy5kZWxheSB8fCB0aGlzLmRlbGF5LCB0aGlzLl9kZWxheSk7XG4gIHRoaXMudXBkYXRlRGVwZW5kZW5jaWVzKCk7XG4gIHRoaXMuYWRkQWN0aW9uTGlzdGVuZXJzKCk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXRoaXMubmFtZSAmJiAhdGhpcy50YXJnZXRPZikge1xuICAgIHdhcm4oJ0EgZmllbGQgaXMgbWlzc2luZyBhIFwibmFtZVwiIG9yIFwiZGF0YS12di1uYW1lXCIgYXR0cmlidXRlJyk7XG4gIH1cblxuICAvLyB1cGRhdGUgcmVxdWlyZWQgZmxhZyBmbGFnc1xuICBpZiAob3B0aW9ucy5ydWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5mbGFncy5yZXF1aXJlZCA9IHRoaXMuaXNSZXF1aXJlZDtcbiAgfVxuXG4gIGlmIChPYmplY3Qua2V5cyhvcHRpb25zLnJ1bGVzIHx8IHt9KS5sZW5ndGggPT09IDAgJiYgdGhpcy51cGRhdGVkKSB7XG4gICAgdmFyIHJlc2V0RmxhZyA9IHRoaXMuZmxhZ3MudmFsaWRhdGVkO1xuICAgIHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlKChcIiNcIiArICh0aGlzLmlkKSkpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcyQxLmZsYWdzLnZhbGlkYXRlZCA9IHJlc2V0RmxhZztcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHZhbGlkYXRlIGlmIGl0IHdhcyB2YWxpZGF0ZWQgYmVmb3JlIGFuZCBmaWVsZCB3YXMgdXBkYXRlZCBhbmQgdGhlcmUgd2FzIGEgcnVsZXMgbXV0YXRpb24uXG4gIGlmICh0aGlzLmZsYWdzLnZhbGlkYXRlZCAmJiBvcHRpb25zLnJ1bGVzICE9PSB1bmRlZmluZWQgJiYgdGhpcy51cGRhdGVkKSB7XG4gICAgdGhpcy52YWxpZGF0b3IudmFsaWRhdGUoKFwiI1wiICsgKHRoaXMuaWQpKSk7XG4gIH1cblxuICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICB0aGlzLmFkZFZhbHVlTGlzdGVuZXJzKCk7XG5cbiAgLy8gbm8gbmVlZCB0byBjb250aW51ZS5cbiAgaWYgKCF0aGlzLmVsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMudXBkYXRlQ2xhc3NlcygpO1xuICB0aGlzLnVwZGF0ZUFyaWFBdHRycygpO1xufTtcblxuLyoqXG4gKiBSZXNldHMgZmllbGQgZmxhZ3MgYW5kIGVycm9ycy5cbiAqL1xuRmllbGQucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gcmVzZXQgKCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIGlmICh0aGlzLl9jYW5jZWxsYXRpb25Ub2tlbikge1xuICAgIHRoaXMuX2NhbmNlbGxhdGlvblRva2VuLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZGVsZXRlIHRoaXMuX2NhbmNlbGxhdGlvblRva2VuO1xuICB9XG5cbiAgdmFyIGRlZmF1bHRzID0gY3JlYXRlRmxhZ3MoKTtcbiAgT2JqZWN0LmtleXModGhpcy5mbGFncykuZmlsdGVyKGZ1bmN0aW9uIChmbGFnKSB7IHJldHVybiBmbGFnICE9PSAncmVxdWlyZWQnOyB9KS5mb3JFYWNoKGZ1bmN0aW9uIChmbGFnKSB7XG4gICAgdGhpcyQxLmZsYWdzW2ZsYWddID0gZGVmYXVsdHNbZmxhZ107XG4gIH0pO1xuXG4gIC8vIHVwZGF0ZSBpbml0aWFsIHZhbHVlXG4gIHRoaXMuaW5pdGlhbFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgdGhpcy5mbGFncy5jaGFuZ2VkID0gZmFsc2U7XG5cbiAgdGhpcy5hZGRWYWx1ZUxpc3RlbmVycygpO1xuICB0aGlzLmFkZEFjdGlvbkxpc3RlbmVycygpO1xuICB0aGlzLnVwZGF0ZUNsYXNzZXModHJ1ZSk7XG4gIHRoaXMudXBkYXRlQXJpYUF0dHJzKCk7XG4gIHRoaXMudXBkYXRlQ3VzdG9tVmFsaWRpdHkoKTtcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgZmxhZ3MgYW5kIHRoZWlyIG5lZ2F0ZWQgY291bnRlcnBhcnRzLCBhbmQgdXBkYXRlcyB0aGUgY2xhc3NlcyBhbmQgcmUtYWRkcyBhY3Rpb24gbGlzdGVuZXJzLlxuICovXG5GaWVsZC5wcm90b3R5cGUuc2V0RmxhZ3MgPSBmdW5jdGlvbiBzZXRGbGFncyAoZmxhZ3MpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgbmVnYXRlZCA9IHtcbiAgICBwcmlzdGluZTogJ2RpcnR5JyxcbiAgICBkaXJ0eTogJ3ByaXN0aW5lJyxcbiAgICB2YWxpZDogJ2ludmFsaWQnLFxuICAgIGludmFsaWQ6ICd2YWxpZCcsXG4gICAgdG91Y2hlZDogJ3VudG91Y2hlZCcsXG4gICAgdW50b3VjaGVkOiAndG91Y2hlZCdcbiAgfTtcblxuICBPYmplY3Qua2V5cyhmbGFncykuZm9yRWFjaChmdW5jdGlvbiAoZmxhZykge1xuICAgIHRoaXMkMS5mbGFnc1tmbGFnXSA9IGZsYWdzW2ZsYWddO1xuICAgIC8vIGlmIGl0IGhhcyBhIG5lZ2F0aW9uIGFuZCB3YXMgbm90IHNwZWNpZmllZCwgc2V0IGl0IGFzIHdlbGwuXG4gICAgaWYgKG5lZ2F0ZWRbZmxhZ10gJiYgZmxhZ3NbbmVnYXRlZFtmbGFnXV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcyQxLmZsYWdzW25lZ2F0ZWRbZmxhZ11dID0gIWZsYWdzW2ZsYWddO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKFxuICAgIGZsYWdzLnVudG91Y2hlZCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgZmxhZ3MudG91Y2hlZCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgZmxhZ3MuZGlydHkgIT09IHVuZGVmaW5lZCB8fFxuICAgIGZsYWdzLnByaXN0aW5lICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgdGhpcy5hZGRBY3Rpb25MaXN0ZW5lcnMoKTtcbiAgfVxuICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgdGhpcy51cGRhdGVBcmlhQXR0cnMoKTtcbiAgdGhpcy51cGRhdGVDdXN0b21WYWxpZGl0eSgpO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBmaWVsZCByZXF1aXJlcyByZWZlcmVuY2VzIHRvIHRhcmdldCBmaWVsZHMuXG4qL1xuRmllbGQucHJvdG90eXBlLnVwZGF0ZURlcGVuZGVuY2llcyA9IGZ1bmN0aW9uIHVwZGF0ZURlcGVuZGVuY2llcyAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgLy8gcmVzZXQgZGVwZW5kZW5jaWVzLlxuICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLmZpZWxkLmRlc3Ryb3koKTsgfSk7XG4gIHRoaXMuZGVwZW5kZW5jaWVzID0gW107XG5cbiAgLy8gd2UgZ2V0IHRoZSBzZWxlY3RvcnMgZm9yIGVhY2ggZmllbGQuXG4gIHZhciBmaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLnJ1bGVzKS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIHIpIHtcbiAgICBpZiAoUnVsZUNvbnRhaW5lci5pc1RhcmdldFJ1bGUocikpIHtcbiAgICAgIHByZXYucHVzaCh7IHNlbGVjdG9yOiB0aGlzJDEucnVsZXNbcl1bMF0sIG5hbWU6IHIgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIFtdKTtcblxuICBpZiAoIWZpZWxkcy5sZW5ndGggfHwgIXRoaXMudm0gfHwgIXRoaXMudm0uJGVsKSB7IHJldHVybjsgfVxuXG4gIC8vIG11c3QgYmUgY29udGFpbmVkIHdpdGhpbiB0aGUgc2FtZSBjb21wb25lbnQsIHNvIHdlIHVzZSB0aGUgdm0gcm9vdCBlbGVtZW50IGNvbnN0cmFpbiBvdXIgZG9tIHNlYXJjaC5cbiAgZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKHJlZiQxKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSByZWYkMS5zZWxlY3RvcjtcbiAgICAgIHZhciBuYW1lID0gcmVmJDEubmFtZTtcblxuICAgIHZhciByZWYgPSB0aGlzJDEudm0uJHJlZnNbc2VsZWN0b3JdO1xuICAgIHZhciBlbCA9IEFycmF5LmlzQXJyYXkocmVmKSA/IHJlZlswXSA6IHJlZjtcbiAgICBpZiAoIWVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICB2bTogdGhpcyQxLnZtLFxuICAgICAgY2xhc3NlczogdGhpcyQxLmNsYXNzZXMsXG4gICAgICBjbGFzc05hbWVzOiB0aGlzJDEuY2xhc3NOYW1lcyxcbiAgICAgIGRlbGF5OiB0aGlzJDEuZGVsYXksXG4gICAgICBzY29wZTogdGhpcyQxLnNjb3BlLFxuICAgICAgZXZlbnRzOiB0aGlzJDEuZXZlbnRzLmpvaW4oJ3wnKSxcbiAgICAgIGltbWVkaWF0ZTogdGhpcyQxLmltbWVkaWF0ZSxcbiAgICAgIHRhcmdldE9mOiB0aGlzJDEuaWRcbiAgICB9O1xuXG4gICAgLy8gcHJvYmFibHkgYSBjb21wb25lbnQuXG4gICAgaWYgKGlzQ2FsbGFibGUoZWwuJHdhdGNoKSkge1xuICAgICAgb3B0aW9ucy5jb21wb25lbnQgPSBlbDtcbiAgICAgIG9wdGlvbnMuZWwgPSBlbC4kZWw7XG4gICAgICBvcHRpb25zLmdldHRlciA9IFJlc29sdmVyLnJlc29sdmVHZXR0ZXIoZWwuJGVsLCBlbC4kdm5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLmVsID0gZWw7XG4gICAgICBvcHRpb25zLmdldHRlciA9IFJlc29sdmVyLnJlc29sdmVHZXR0ZXIoZWwsIHt9KTtcbiAgICB9XG5cbiAgICB0aGlzJDEuZGVwZW5kZW5jaWVzLnB1c2goeyBuYW1lOiBuYW1lLCBmaWVsZDogbmV3IEZpZWxkKG9wdGlvbnMpIH0pO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmVtb3ZlcyBsaXN0ZW5lcnMuXG4gKi9cbkZpZWxkLnByb3RvdHlwZS51bndhdGNoID0gZnVuY3Rpb24gdW53YXRjaCAodGFnKSB7XG4gICAgaWYgKCB0YWcgPT09IHZvaWQgMCApIHRhZyA9IG51bGw7XG5cbiAgaWYgKCF0YWcpIHtcbiAgICB0aGlzLndhdGNoZXJzLmZvckVhY2goZnVuY3Rpb24gKHcpIHsgcmV0dXJuIHcudW53YXRjaCgpOyB9KTtcbiAgICB0aGlzLndhdGNoZXJzID0gW107XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy53YXRjaGVycy5maWx0ZXIoZnVuY3Rpb24gKHcpIHsgcmV0dXJuIHRhZy50ZXN0KHcudGFnKTsgfSkuZm9yRWFjaChmdW5jdGlvbiAodykgeyByZXR1cm4gdy51bndhdGNoKCk7IH0pO1xuICB0aGlzLndhdGNoZXJzID0gdGhpcy53YXRjaGVycy5maWx0ZXIoZnVuY3Rpb24gKHcpIHsgcmV0dXJuICF0YWcudGVzdCh3LnRhZyk7IH0pO1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIHRoZSBlbGVtZW50IGNsYXNzZXMgZGVwZW5kaW5nIG9uIGVhY2ggZmllbGQgZmxhZyBzdGF0dXMuXG4gKi9cbkZpZWxkLnByb3RvdHlwZS51cGRhdGVDbGFzc2VzID0gZnVuY3Rpb24gdXBkYXRlQ2xhc3NlcyAoaXNSZXNldCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgIGlmICggaXNSZXNldCA9PT0gdm9pZCAwICkgaXNSZXNldCA9IGZhbHNlO1xuXG4gIGlmICghdGhpcy5jbGFzc2VzIHx8IHRoaXMuaXNEaXNhYmxlZCkgeyByZXR1cm47IH1cbiAgdmFyIGFwcGx5Q2xhc3NlcyA9IGZ1bmN0aW9uIChlbCkge1xuICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xhc3NOYW1lcy5kaXJ0eSwgdGhpcyQxLmZsYWdzLmRpcnR5KTtcbiAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNsYXNzTmFtZXMucHJpc3RpbmUsIHRoaXMkMS5mbGFncy5wcmlzdGluZSk7XG4gICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbGFzc05hbWVzLnRvdWNoZWQsIHRoaXMkMS5mbGFncy50b3VjaGVkKTtcbiAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNsYXNzTmFtZXMudW50b3VjaGVkLCB0aGlzJDEuZmxhZ3MudW50b3VjaGVkKTtcblxuICAgIC8vIHJlbW92ZSB2YWxpZC9pbnZhbGlkIGNsYXNzZXMgb24gcmVzZXQuXG4gICAgaWYgKGlzUmVzZXQpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xhc3NOYW1lcy52YWxpZCwgZmFsc2UpO1xuICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbGFzc05hbWVzLmludmFsaWQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIHN1cmUgd2UgZG9uJ3Qgc2V0IGFueSBjbGFzc2VzIGlmIHRoZSBzdGF0ZSBpcyB1bmRldGVybWluZWQuXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzJDEuZmxhZ3MudmFsaWQpICYmIHRoaXMkMS5mbGFncy52YWxpZGF0ZWQpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xhc3NOYW1lcy52YWxpZCwgdGhpcyQxLmZsYWdzLnZhbGlkKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMkMS5mbGFncy5pbnZhbGlkKSAmJiB0aGlzJDEuZmxhZ3MudmFsaWRhdGVkKSB7XG4gICAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNsYXNzTmFtZXMuaW52YWxpZCwgdGhpcyQxLmZsYWdzLmludmFsaWQpO1xuICAgIH1cbiAgfTtcblxuICBpZiAoIWlzQ2hlY2tib3hPclJhZGlvSW5wdXQodGhpcy5lbCkpIHtcbiAgICBhcHBseUNsYXNzZXModGhpcy5lbCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoKFwiaW5wdXRbbmFtZT1cXFwiXCIgKyAodGhpcy5lbC5uYW1lKSArIFwiXFxcIl1cIikpO1xuICB0b0FycmF5KGVscykuZm9yRWFjaChhcHBseUNsYXNzZXMpO1xufTtcblxuLyoqXG4gKiBBZGRzIHRoZSBsaXN0ZW5lcnMgcmVxdWlyZWQgZm9yIGF1dG9tYXRpYyBjbGFzc2VzIGFuZCBzb21lIGZsYWdzLlxuICovXG5GaWVsZC5wcm90b3R5cGUuYWRkQWN0aW9uTGlzdGVuZXJzID0gZnVuY3Rpb24gYWRkQWN0aW9uTGlzdGVuZXJzICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAvLyByZW1vdmUgcHJldmlvdXMgbGlzdGVuZXJzLlxuICB0aGlzLnVud2F0Y2goL2NsYXNzLyk7XG5cbiAgaWYgKCF0aGlzLmVsKSB7IHJldHVybjsgfVxuXG4gIHZhciBvbkJsdXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcyQxLmZsYWdzLnRvdWNoZWQgPSB0cnVlO1xuICAgIHRoaXMkMS5mbGFncy51bnRvdWNoZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcyQxLmNsYXNzZXMpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKHRoaXMkMS5lbCwgdGhpcyQxLmNsYXNzTmFtZXMudG91Y2hlZCwgdHJ1ZSk7XG4gICAgICB0b2dnbGVDbGFzcyh0aGlzJDEuZWwsIHRoaXMkMS5jbGFzc05hbWVzLnVudG91Y2hlZCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIG9ubHkgbmVlZGVkIG9uY2UuXG4gICAgdGhpcyQxLnVud2F0Y2goL15jbGFzc19ibHVyJC8pO1xuICB9O1xuXG4gIHZhciBpbnB1dEV2ZW50ID0gaXNUZXh0SW5wdXQodGhpcy5lbCkgPyAnaW5wdXQnIDogJ2NoYW5nZSc7XG4gIHZhciBvbklucHV0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMkMS5mbGFncy5kaXJ0eSA9IHRydWU7XG4gICAgdGhpcyQxLmZsYWdzLnByaXN0aW5lID0gZmFsc2U7XG4gICAgaWYgKHRoaXMkMS5jbGFzc2VzKSB7XG4gICAgICB0b2dnbGVDbGFzcyh0aGlzJDEuZWwsIHRoaXMkMS5jbGFzc05hbWVzLnByaXN0aW5lLCBmYWxzZSk7XG4gICAgICB0b2dnbGVDbGFzcyh0aGlzJDEuZWwsIHRoaXMkMS5jbGFzc05hbWVzLmRpcnR5LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBvbmx5IG5lZWRlZCBvbmNlLlxuICAgIHRoaXMkMS51bndhdGNoKC9eY2xhc3NfaW5wdXQkLyk7XG4gIH07XG5cbiAgaWYgKHRoaXMuY29tcG9uZW50SW5zdGFuY2UgJiYgaXNDYWxsYWJsZSh0aGlzLmNvbXBvbmVudEluc3RhbmNlLiRvbmNlKSkge1xuICAgIHRoaXMuY29tcG9uZW50SW5zdGFuY2UuJG9uY2UoJ2lucHV0Jywgb25JbnB1dCk7XG4gICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZS4kb25jZSgnYmx1cicsIG9uQmx1cik7XG4gICAgdGhpcy53YXRjaGVycy5wdXNoKHtcbiAgICAgIHRhZzogJ2NsYXNzX2lucHV0JyxcbiAgICAgIHVud2F0Y2g6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcyQxLmNvbXBvbmVudEluc3RhbmNlLiRvZmYoJ2lucHV0Jywgb25JbnB1dCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy53YXRjaGVycy5wdXNoKHtcbiAgICAgIHRhZzogJ2NsYXNzX2JsdXInLFxuICAgICAgdW53YXRjaDogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzJDEuY29tcG9uZW50SW5zdGFuY2UuJG9mZignYmx1cicsIG9uQmx1cik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCF0aGlzLmVsKSB7IHJldHVybjsgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXIodGhpcy5lbCwgaW5wdXRFdmVudCwgb25JbnB1dCk7XG4gIC8vIENoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMgb24gTWFjIGRvbid0IGVtaXQgYmx1ciBuYXR1cmFsbHksIHNvIHdlIGxpc3RlbiBvbiBjbGljayBpbnN0ZWFkLlxuICB2YXIgYmx1ckV2ZW50ID0gaXNDaGVja2JveE9yUmFkaW9JbnB1dCh0aGlzLmVsKSA/ICdjaGFuZ2UnIDogJ2JsdXInO1xuICBhZGRFdmVudExpc3RlbmVyKHRoaXMuZWwsIGJsdXJFdmVudCwgb25CbHVyKTtcbiAgdGhpcy53YXRjaGVycy5wdXNoKHtcbiAgICB0YWc6ICdjbGFzc19pbnB1dCcsXG4gICAgdW53YXRjaDogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcyQxLmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoaW5wdXRFdmVudCwgb25JbnB1dCk7XG4gICAgfVxuICB9KTtcblxuICB0aGlzLndhdGNoZXJzLnB1c2goe1xuICAgIHRhZzogJ2NsYXNzX2JsdXInLFxuICAgIHVud2F0Y2g6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMkMS5lbC5yZW1vdmVFdmVudExpc3RlbmVyKGJsdXJFdmVudCwgb25CbHVyKTtcbiAgICB9XG4gIH0pO1xufTtcblxuRmllbGQucHJvdG90eXBlLmNoZWNrVmFsdWVDaGFuZ2VkID0gZnVuY3Rpb24gY2hlY2tWYWx1ZUNoYW5nZWQgKCkge1xuICAvLyBoYW5kbGUgc29tZSBwZW9wbGUgaW5pdGlhbGl6ZSB0aGUgdmFsdWUgdG8gbnVsbCwgc2luY2UgdGV4dCBpbnB1dHMgaGF2ZSBlbXB0eSBzdHJpbmcgdmFsdWUuXG4gIGlmICh0aGlzLmluaXRpYWxWYWx1ZSA9PT0gbnVsbCAmJiB0aGlzLnZhbHVlID09PSAnJyAmJiBpc1RleHRJbnB1dCh0aGlzLmVsKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLnZhbHVlICE9PSB0aGlzLmluaXRpYWxWYWx1ZTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgc3VpdGFibGUgcHJpbWFyeSBldmVudCB0byBsaXN0ZW4gZm9yLlxuICovXG5GaWVsZC5wcm90b3R5cGUuX2RldGVybWluZUlucHV0RXZlbnQgPSBmdW5jdGlvbiBfZGV0ZXJtaW5lSW5wdXRFdmVudCAoKSB7XG4gIC8vIGlmIGl0cyBhIGN1c3RvbSBjb21wb25lbnQsIHVzZSB0aGUgY3VzdG9taXplZCBtb2RlbCBldmVudCBvciB0aGUgaW5wdXQgZXZlbnQuXG4gIGlmICh0aGlzLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudEluc3RhbmNlLiRvcHRpb25zLm1vZGVsICYmIHRoaXMuY29tcG9uZW50SW5zdGFuY2UuJG9wdGlvbnMubW9kZWwuZXZlbnQpIHx8ICdpbnB1dCc7XG4gIH1cblxuICBpZiAodGhpcy5tb2RlbCAmJiB0aGlzLm1vZGVsLmxhenkpIHtcbiAgICByZXR1cm4gJ2NoYW5nZSc7XG4gIH1cblxuICBpZiAoaXNUZXh0SW5wdXQodGhpcy5lbCkpIHtcbiAgICByZXR1cm4gJ2lucHV0JztcbiAgfVxuXG4gIHJldHVybiAnY2hhbmdlJztcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgbGlzdCBvZiBldmVudHMgdG8gbGlzdGVuIHRvLlxuICovXG5GaWVsZC5wcm90b3R5cGUuX2RldGVybWluZUV2ZW50TGlzdCA9IGZ1bmN0aW9uIF9kZXRlcm1pbmVFdmVudExpc3QgKGRlZmF1bHRJbnB1dEV2ZW50KSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgLy8gaWYgbm8gZXZlbnQgaXMgY29uZmlndXJlZCwgb3IgaXQgaXMgYSBjb21wb25lbnQgb3IgYSB0ZXh0IGlucHV0IHRoZW4gcmVzcGVjdCB0aGUgdXNlciBjaG9pY2UuXG4gIGlmICghdGhpcy5ldmVudHMubGVuZ3RoIHx8IHRoaXMuY29tcG9uZW50SW5zdGFuY2UgfHwgaXNUZXh0SW5wdXQodGhpcy5lbCkpIHtcbiAgICByZXR1cm4gW10uY29uY2F0KCB0aGlzLmV2ZW50cyApLm1hcChmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoZXZ0ID09PSAnaW5wdXQnICYmIHRoaXMkMS5tb2RlbCAmJiB0aGlzJDEubW9kZWwubGF6eSkge1xuICAgICAgICByZXR1cm4gJ2NoYW5nZSc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBldnQ7XG4gICAgfSk7XG4gIH1cblxuICAvLyBmb3JjZSBzdWl0YWJsZSBldmVudCBmb3Igbm9uLXRleHQgdHlwZSBmaWVsZHMuXG4gIHJldHVybiB0aGlzLmV2ZW50cy5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZSA9PT0gJ2lucHV0Jykge1xuICAgICAgcmV0dXJuIGRlZmF1bHRJbnB1dEV2ZW50O1xuICAgIH1cblxuICAgIHJldHVybiBlO1xuICB9KTtcbn07XG5cbi8qKlxuICogQWRkcyB0aGUgbGlzdGVuZXJzIHJlcXVpcmVkIGZvciB2YWxpZGF0aW9uLlxuICovXG5GaWVsZC5wcm90b3R5cGUuYWRkVmFsdWVMaXN0ZW5lcnMgPSBmdW5jdGlvbiBhZGRWYWx1ZUxpc3RlbmVycyAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdGhpcy51bndhdGNoKC9eaW5wdXRfLisvKTtcbiAgaWYgKCF0aGlzLmxpc3RlbiB8fCAhdGhpcy5lbCkgeyByZXR1cm47IH1cblxuICB2YXIgdG9rZW4gPSB7IGNhbmNlbGxlZDogZmFsc2UgfTtcbiAgdmFyIGZuID0gdGhpcy50YXJnZXRPZiA/IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGFyZ2V0ID0gdGhpcyQxLnZhbGlkYXRvci5fcmVzb2x2ZUZpZWxkKChcIiNcIiArICh0aGlzJDEudGFyZ2V0T2YpKSk7XG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuZmxhZ3MudmFsaWRhdGVkKSB7XG4gICAgICB0aGlzJDEudmFsaWRhdG9yLnZhbGlkYXRlKChcIiNcIiArICh0aGlzJDEudGFyZ2V0T2YpKSk7XG4gICAgfVxuICB9IDogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICAvLyBpZiBpdHMgYSBET00gZXZlbnQsIHJlc29sdmUgdGhlIHZhbHVlLCBvdGhlcndpc2UgdXNlIHRoZSBmaXJzdCBwYXJhbWV0ZXIgYXMgdGhlIHZhbHVlLlxuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCB8fCBpc0V2ZW50KGFyZ3NbMF0pKSB7XG4gICAgICBhcmdzWzBdID0gdGhpcyQxLnZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMkMS5mbGFncy5wZW5kaW5nID0gdHJ1ZTtcbiAgICB0aGlzJDEuX2NhbmNlbGxhdGlvblRva2VuID0gdG9rZW47XG4gICAgdGhpcyQxLnZhbGlkYXRvci52YWxpZGF0ZSgoXCIjXCIgKyAodGhpcyQxLmlkKSksIGFyZ3NbMF0pO1xuICB9O1xuXG4gIHZhciBpbnB1dEV2ZW50ID0gdGhpcy5fZGV0ZXJtaW5lSW5wdXRFdmVudCgpO1xuICB2YXIgZXZlbnRzID0gdGhpcy5fZGV0ZXJtaW5lRXZlbnRMaXN0KGlucHV0RXZlbnQpO1xuXG4gIC8vIGlmIG9uIGlucHV0IHZhbGlkYXRpb24gaXMgcmVxdWVzdGVkLlxuICBpZiAoaW5jbHVkZXMoZXZlbnRzLCBpbnB1dEV2ZW50KSkge1xuICAgIHZhciBjdHggPSBudWxsO1xuICAgIHZhciBleHByZXNzaW9uID0gbnVsbDtcbiAgICB2YXIgd2F0Y2hDdHhWbSA9IGZhbHNlO1xuICAgIC8vIGlmIGl0cyB3YXRjaGFibGUgZnJvbSB0aGUgY29udGV4dCB2bS5cbiAgICBpZiAodGhpcy5tb2RlbCAmJiB0aGlzLm1vZGVsLmV4cHJlc3Npb24pIHtcbiAgICAgIGN0eCA9IHRoaXMudm07XG4gICAgICBleHByZXNzaW9uID0gdGhpcy5tb2RlbC5leHByZXNzaW9uO1xuICAgICAgd2F0Y2hDdHhWbSA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gd2F0Y2ggaXQgZnJvbSB0aGUgY3VzdG9tIGNvbXBvbmVudCB2bSBpbnN0ZWFkLlxuICAgIGlmICghZXhwcmVzc2lvbiAmJiB0aGlzLmNvbXBvbmVudEluc3RhbmNlICYmIHRoaXMuY29tcG9uZW50SW5zdGFuY2UuJG9wdGlvbnMubW9kZWwpIHtcbiAgICAgIGN0eCA9IHRoaXMuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICBleHByZXNzaW9uID0gdGhpcy5jb21wb25lbnRJbnN0YW5jZS4kb3B0aW9ucy5tb2RlbC5wcm9wIHx8ICd2YWx1ZSc7XG4gICAgfVxuXG4gICAgaWYgKGN0eCAmJiBleHByZXNzaW9uKSB7XG4gICAgICB2YXIgZGVib3VuY2VkRm4gPSBkZWJvdW5jZShmbiwgdGhpcy5kZWxheVtpbnB1dEV2ZW50XSwgdG9rZW4pO1xuICAgICAgdmFyIHVud2F0Y2ggPSBjdHguJHdhdGNoKGV4cHJlc3Npb24sIGRlYm91bmNlZEZuKTtcbiAgICAgIHRoaXMud2F0Y2hlcnMucHVzaCh7XG4gICAgICAgIHRhZzogJ2lucHV0X21vZGVsJyxcbiAgICAgICAgdW53YXRjaDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRoaXMkMS52bS4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdW53YXRjaCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gZmlsdGVyIG91dCBpbnB1dCBldmVudCB3aGVuIHdlIGFyZSB3YXRjaGluZyBmcm9tIHRoZSBjb250ZXh0IHZtLlxuICAgICAgaWYgKHdhdGNoQ3R4Vm0pIHtcbiAgICAgICAgZXZlbnRzID0gZXZlbnRzLmZpbHRlcihmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSAhPT0gaW5wdXRFdmVudDsgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGV2ZW50cy5cbiAgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgZGVib3VuY2VkRm4gPSBkZWJvdW5jZShmbiwgdGhpcyQxLmRlbGF5W2VdLCB0b2tlbik7XG5cbiAgICB0aGlzJDEuX2FkZENvbXBvbmVudEV2ZW50TGlzdGVuZXIoZSwgZGVib3VuY2VkRm4pO1xuICAgIHRoaXMkMS5fYWRkSFRNTEV2ZW50TGlzdGVuZXIoZSwgZGVib3VuY2VkRm4pO1xuICB9KTtcbn07XG5cbkZpZWxkLnByb3RvdHlwZS5fYWRkQ29tcG9uZW50RXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uIF9hZGRDb21wb25lbnRFdmVudExpc3RlbmVyIChldnQsIHZhbGlkYXRlKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKCF0aGlzLmNvbXBvbmVudEluc3RhbmNlKSB7IHJldHVybjsgfVxuXG4gIHRoaXMuY29tcG9uZW50SW5zdGFuY2UuJG9uKGV2dCwgdmFsaWRhdGUpO1xuICB0aGlzLndhdGNoZXJzLnB1c2goe1xuICAgIHRhZzogJ2lucHV0X3Z1ZScsXG4gICAgdW53YXRjaDogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcyQxLmNvbXBvbmVudEluc3RhbmNlLiRvZmYoZXZ0LCB2YWxpZGF0ZSk7XG4gICAgfVxuICB9KTtcbn07XG5cbkZpZWxkLnByb3RvdHlwZS5fYWRkSFRNTEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiBfYWRkSFRNTEV2ZW50TGlzdGVuZXIgKGV2dCwgdmFsaWRhdGUpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBpZiAoIXRoaXMuZWwgfHwgdGhpcy5jb21wb25lbnRJbnN0YW5jZSkgeyByZXR1cm47IH1cblxuICAvLyBsaXN0ZW4gZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gIHZhciBhZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIChlbCkge1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsIGV2dCwgdmFsaWRhdGUpO1xuICAgIHRoaXMkMS53YXRjaGVycy5wdXNoKHtcbiAgICAgIHRhZzogJ2lucHV0X25hdGl2ZScsXG4gICAgICB1bndhdGNoOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZ0LCB2YWxpZGF0ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgYWRkTGlzdGVuZXIodGhpcy5lbCk7XG4gIGlmICghaXNDaGVja2JveE9yUmFkaW9JbnB1dCh0aGlzLmVsKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBlbHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKChcImlucHV0W25hbWU9XFxcIlwiICsgKHRoaXMuZWwubmFtZSkgKyBcIlxcXCJdXCIpKTtcbiAgdG9BcnJheShlbHMpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgLy8gc2tpcCBpZiBpdCBpcyBhZGRlZCBieSB2LXZhbGlkYXRlIGFuZCBpcyBub3QgdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAgICBpZiAoZWwuX3ZlZVZhbGlkYXRlSWQgJiYgZWwgIT09IHRoaXMkMS5lbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFkZExpc3RlbmVyKGVsKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgYXJpYSBhdHRyaWJ1dGVzIG9uIHRoZSBlbGVtZW50LlxuICovXG5GaWVsZC5wcm90b3R5cGUudXBkYXRlQXJpYUF0dHJzID0gZnVuY3Rpb24gdXBkYXRlQXJpYUF0dHJzICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBpZiAoIXRoaXMuYXJpYSB8fCAhdGhpcy5lbCB8fCAhaXNDYWxsYWJsZSh0aGlzLmVsLnNldEF0dHJpYnV0ZSkpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGFwcGx5QXJpYUF0dHJzID0gZnVuY3Rpb24gKGVsKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdhcmlhLXJlcXVpcmVkJywgdGhpcyQxLmlzUmVxdWlyZWQgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaW52YWxpZCcsIHRoaXMkMS5mbGFncy5pbnZhbGlkID8gJ3RydWUnIDogJ2ZhbHNlJyk7XG4gIH07XG5cbiAgaWYgKCFpc0NoZWNrYm94T3JSYWRpb0lucHV0KHRoaXMuZWwpKSB7XG4gICAgYXBwbHlBcmlhQXR0cnModGhpcy5lbCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoKFwiaW5wdXRbbmFtZT1cXFwiXCIgKyAodGhpcy5lbC5uYW1lKSArIFwiXFxcIl1cIikpO1xuICB0b0FycmF5KGVscykuZm9yRWFjaChhcHBseUFyaWFBdHRycyk7XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIGN1c3RvbSB2YWxpZGl0eSBmb3IgdGhlIGZpZWxkLlxuICovXG5GaWVsZC5wcm90b3R5cGUudXBkYXRlQ3VzdG9tVmFsaWRpdHkgPSBmdW5jdGlvbiB1cGRhdGVDdXN0b21WYWxpZGl0eSAoKSB7XG4gIGlmICghdGhpcy52YWxpZGl0eSB8fCAhdGhpcy5lbCB8fCAhaXNDYWxsYWJsZSh0aGlzLmVsLnNldEN1c3RvbVZhbGlkaXR5KSB8fCAhdGhpcy52YWxpZGF0b3IuZXJyb3JzKSB7IHJldHVybjsgfVxuXG4gIHRoaXMuZWwuc2V0Q3VzdG9tVmFsaWRpdHkodGhpcy5mbGFncy52YWxpZCA/ICcnIDogKHRoaXMudmFsaWRhdG9yLmVycm9ycy5maXJzdEJ5SWQodGhpcy5pZCkgfHwgJycpKTtcbn07XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwgbGlzdGVuZXJzLlxuICovXG5GaWVsZC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIGRlc3Ryb3kgKCkge1xuICAvLyBpZ25vcmUgdGhlIHJlc3VsdCBvZiBhbnkgb25nb2luZyB2YWxpZGF0aW9uLlxuICBpZiAodGhpcy5fY2FuY2VsbGF0aW9uVG9rZW4pIHtcbiAgICB0aGlzLl9jYW5jZWxsYXRpb25Ub2tlbi5jYW5jZWxsZWQgPSB0cnVlO1xuICB9XG5cbiAgdGhpcy51bndhdGNoKCk7XG4gIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQuZmllbGQuZGVzdHJveSgpOyB9KTtcbiAgdGhpcy5kZXBlbmRlbmNpZXMgPSBbXTtcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBGaWVsZC5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyQxICk7XG5cbi8vIFxuXG52YXIgRmllbGRCYWcgPSBmdW5jdGlvbiBGaWVsZEJhZyAoaXRlbXMpIHtcbiAgaWYgKCBpdGVtcyA9PT0gdm9pZCAwICkgaXRlbXMgPSBbXTtcblxuICB0aGlzLml0ZW1zID0gaXRlbXMgfHwgW107XG4gIHRoaXMuaXRlbXNCeUlkID0gdGhpcy5pdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKGl0ZW1zQnlJZCwgaXRlbSkge1xuICAgIGl0ZW1zQnlJZFtpdGVtLmlkXSA9IGl0ZW07XG4gICAgcmV0dXJuIGl0ZW1zQnlJZDtcbiAgfSwge30pO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyQyID0geyBsZW5ndGg6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxuRmllbGRCYWcucHJvdG90eXBlW3R5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgPyBTeW1ib2wuaXRlcmF0b3IgOiAnQEBpdGVyYXRvciddID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBpbmRleCA9IDA7XG4gIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHRoaXMkMS5pdGVtc1tpbmRleCsrXSwgZG9uZTogaW5kZXggPiB0aGlzJDEuaXRlbXMubGVuZ3RoIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBjdXJyZW50IGl0ZW1zIGxlbmd0aC5cbiAqL1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMi5sZW5ndGguZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGg7XG59O1xuXG4vKipcbiAqIEZpbmRzIHRoZSBmaXJzdCBmaWVsZCB0aGF0IG1hdGNoZXMgdGhlIHByb3ZpZGVkIG1hdGNoZXIgb2JqZWN0LlxuICovXG5GaWVsZEJhZy5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIGZpbmQkMSAobWF0Y2hlcikge1xuICByZXR1cm4gZmluZCh0aGlzLml0ZW1zLCBmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaXRlbS5tYXRjaGVzKG1hdGNoZXIpOyB9KTtcbn07XG5cbi8qKlxuICogRmluZHMgdGhlIGZpZWxkIHdpdGggdGhlIGdpdmVuIGlkLCB1c2luZyBhIHBsYWluIG9iamVjdCBhcyBhIG1hcCB0byBsaW5rXG4gKiBpZHMgdG8gaXRlbXMgZmFzdGVyIHRoYW4gYnkgbG9vcGluZyBvdmVyIHRoZSBhcnJheSBhbmQgbWF0Y2hpbmcuXG4gKi9cbkZpZWxkQmFnLnByb3RvdHlwZS5maW5kQnlJZCA9IGZ1bmN0aW9uIGZpbmRCeUlkIChpZCkge1xuICByZXR1cm4gdGhpcy5pdGVtc0J5SWRbaWRdIHx8IG51bGw7XG59O1xuXG4vKipcbiAqIEZpbHRlcnMgdGhlIGl0ZW1zIGRvd24gdG8gdGhlIG1hdGNoZWQgZmllbGRzLlxuICovXG5GaWVsZEJhZy5wcm90b3R5cGUuZmlsdGVyID0gZnVuY3Rpb24gZmlsdGVyIChtYXRjaGVyKSB7XG4gIC8vIG11bHRpcGxlIG1hdGNoZXJzIHRvIGJlIHRyaWVkLlxuICBpZiAoQXJyYXkuaXNBcnJheShtYXRjaGVyKSkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gbWF0Y2hlci5zb21lKGZ1bmN0aW9uIChtKSB7IHJldHVybiBpdGVtLm1hdGNoZXMobSk7IH0pOyB9KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaXRlbS5tYXRjaGVzKG1hdGNoZXIpOyB9KTtcbn07XG5cbi8qKlxuICogTWFwcyB0aGUgZmllbGQgaXRlbXMgdXNpbmcgdGhlIG1hcHBpbmcgZnVuY3Rpb24uXG4gKi9cbkZpZWxkQmFnLnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbiBtYXAgKG1hcHBlcikge1xuICByZXR1cm4gdGhpcy5pdGVtcy5tYXAobWFwcGVyKTtcbn07XG5cbi8qKlxuICogRmluZHMgYW5kIHJlbW92ZXMgdGhlIGZpcnN0IGZpZWxkIHRoYXQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgbWF0Y2hlciBvYmplY3QsIHJldHVybnMgdGhlIHJlbW92ZWQgaXRlbS5cbiAqL1xuRmllbGRCYWcucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSAobWF0Y2hlcikge1xuICB2YXIgaXRlbSA9IG51bGw7XG4gIGlmIChtYXRjaGVyIGluc3RhbmNlb2YgRmllbGQpIHtcbiAgICBpdGVtID0gbWF0Y2hlcjtcbiAgfSBlbHNlIHtcbiAgICBpdGVtID0gdGhpcy5maW5kKG1hdGNoZXIpO1xuICB9XG5cbiAgaWYgKCFpdGVtKSB7IHJldHVybiBudWxsOyB9XG5cbiAgdmFyIGluZGV4ID0gdGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pO1xuICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gIGRlbGV0ZSB0aGlzLml0ZW1zQnlJZFtpdGVtLmlkXTtcblxuICByZXR1cm4gaXRlbTtcbn07XG5cbi8qKlxuICogQWRkcyBhIGZpZWxkIGl0ZW0gdG8gdGhlIGxpc3QuXG4gKi9cbkZpZWxkQmFnLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gcHVzaCAoaXRlbSkge1xuICBpZiAoISAoaXRlbSBpbnN0YW5jZW9mIEZpZWxkKSkge1xuICAgIHRocm93IGNyZWF0ZUVycm9yKCdGaWVsZEJhZyBvbmx5IGFjY2VwdHMgaW5zdGFuY2VzIG9mIEZpZWxkIHRoYXQgaGFzIGFuIGlkIGRlZmluZWQuJyk7XG4gIH1cblxuICBpZiAoIWl0ZW0uaWQpIHtcbiAgICB0aHJvdyBjcmVhdGVFcnJvcignRmllbGQgaWQgbXVzdCBiZSBkZWZpbmVkLicpO1xuICB9XG5cbiAgaWYgKHRoaXMuZmluZEJ5SWQoaXRlbS5pZCkpIHtcbiAgICB0aHJvdyBjcmVhdGVFcnJvcigoXCJGaWVsZCB3aXRoIGlkIFwiICsgKGl0ZW0uaWQpICsgXCIgaXMgYWxyZWFkeSBhZGRlZC5cIikpO1xuICB9XG5cbiAgdGhpcy5pdGVtcy5wdXNoKGl0ZW0pO1xuICB0aGlzLml0ZW1zQnlJZFtpdGVtLmlkXSA9IGl0ZW07XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggRmllbGRCYWcucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMkMiApO1xuXG52YXIgU2NvcGVkVmFsaWRhdG9yID0gZnVuY3Rpb24gU2NvcGVkVmFsaWRhdG9yIChiYXNlLCB2bSkge1xuICB0aGlzLmlkID0gdm0uX3VpZDtcbiAgdGhpcy5fYmFzZSA9IGJhc2U7XG4gIHRoaXMuX3BhdXNlZCA9IGZhbHNlO1xuXG4gIC8vIGNyZWF0ZSBhIG1pcnJvciBiYWcgd2l0aCBsaW1pdGVkIGNvbXBvbmVudCBzY29wZS5cbiAgdGhpcy5lcnJvcnMgPSBuZXcgRXJyb3JCYWcoYmFzZS5lcnJvcnMsIHRoaXMuaWQpO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyQzID0geyBmbGFnczogeyBjb25maWd1cmFibGU6IHRydWUgfSxydWxlczogeyBjb25maWd1cmFibGU6IHRydWUgfSxmaWVsZHM6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sZGljdGlvbmFyeTogeyBjb25maWd1cmFibGU6IHRydWUgfSxsb2NhbGU6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxucHJvdG90eXBlQWNjZXNzb3JzJDMuZmxhZ3MuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHJldHVybiB0aGlzLl9iYXNlLmZpZWxkcy5pdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudm1JZCA9PT0gdGhpcyQxLmlkOyB9KS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgZmllbGQpIHtcbiAgICBpZiAoZmllbGQuc2NvcGUpIHtcbiAgICAgIGlmICghYWNjWyhcIiRcIiArIChmaWVsZC5zY29wZSkpXSkge1xuICAgICAgICBhY2NbKFwiJFwiICsgKGZpZWxkLnNjb3BlKSldID0ge307XG4gICAgICB9XG5cbiAgICAgIGFjY1soXCIkXCIgKyAoZmllbGQuc2NvcGUpKV1bZmllbGQubmFtZV0gPSBmaWVsZC5mbGFncztcbiAgICB9XG5cbiAgICBhY2NbZmllbGQubmFtZV0gPSBmaWVsZC5mbGFncztcblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn07XG5cbnByb3RvdHlwZUFjY2Vzc29ycyQzLnJ1bGVzLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX2Jhc2UucnVsZXM7XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMy5maWVsZHMuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IEZpZWxkQmFnKHRoaXMuX2Jhc2UuZmllbGRzLmZpbHRlcih7IHZtSWQ6IHRoaXMuaWQgfSkpO1xufTtcblxucHJvdG90eXBlQWNjZXNzb3JzJDMuZGljdGlvbmFyeS5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9iYXNlLmRpY3Rpb25hcnk7XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMy5sb2NhbGUuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fYmFzZS5sb2NhbGU7XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMy5sb2NhbGUuc2V0ID0gZnVuY3Rpb24gKHZhbCkge1xuICB0aGlzLl9iYXNlLmxvY2FsZSA9IHZhbDtcbn07XG5cblNjb3BlZFZhbGlkYXRvci5wcm90b3R5cGUubG9jYWxpemUgPSBmdW5jdGlvbiBsb2NhbGl6ZSAoKSB7XG4gICAgdmFyIHJlZjtcblxuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcbiAgcmV0dXJuIChyZWYgPSB0aGlzLl9iYXNlKS5sb2NhbGl6ZS5hcHBseShyZWYsIGFyZ3MpO1xufTtcblxuU2NvcGVkVmFsaWRhdG9yLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKCkge1xuICAgIHZhciByZWY7XG5cbiAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG4gIHJldHVybiAocmVmID0gdGhpcy5fYmFzZSkudXBkYXRlLmFwcGx5KHJlZiwgYXJncyk7XG59O1xuXG5TY29wZWRWYWxpZGF0b3IucHJvdG90eXBlLmF0dGFjaCA9IGZ1bmN0aW9uIGF0dGFjaCAob3B0cykge1xuICB2YXIgYXR0YWNoT3B0cyA9IGFzc2lnbih7fSwgb3B0cywgeyB2bUlkOiB0aGlzLmlkIH0pO1xuXG4gIHJldHVybiB0aGlzLl9iYXNlLmF0dGFjaChhdHRhY2hPcHRzKTtcbn07XG5cblNjb3BlZFZhbGlkYXRvci5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiBwYXVzZSAoKSB7XG4gIHRoaXMuX3BhdXNlZCA9IHRydWU7XG59O1xuXG5TY29wZWRWYWxpZGF0b3IucHJvdG90eXBlLnJlc3VtZSA9IGZ1bmN0aW9uIHJlc3VtZSAoKSB7XG4gIHRoaXMuX3BhdXNlZCA9IGZhbHNlO1xufTtcblxuU2NvcGVkVmFsaWRhdG9yLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUgKHJ1bGVOYW1lKSB7XG4gIHJldHVybiB0aGlzLl9iYXNlLnJlbW92ZShydWxlTmFtZSk7XG59O1xuXG5TY29wZWRWYWxpZGF0b3IucHJvdG90eXBlLmRldGFjaCA9IGZ1bmN0aW9uIGRldGFjaCAobmFtZSwgc2NvcGUpIHtcbiAgcmV0dXJuIHRoaXMuX2Jhc2UuZGV0YWNoKG5hbWUsIHNjb3BlLCB0aGlzLmlkKTtcbn07XG5cblNjb3BlZFZhbGlkYXRvci5wcm90b3R5cGUuZXh0ZW5kID0gZnVuY3Rpb24gZXh0ZW5kICgpIHtcbiAgICB2YXIgcmVmO1xuXG4gICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuICByZXR1cm4gKHJlZiA9IHRoaXMuX2Jhc2UpLmV4dGVuZC5hcHBseShyZWYsIGFyZ3MpO1xufTtcblxuU2NvcGVkVmFsaWRhdG9yLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlIChkZXNjcmlwdG9yLCB2YWx1ZSwgb3B0cykge1xuICAgIGlmICggb3B0cyA9PT0gdm9pZCAwICkgb3B0cyA9IHt9O1xuXG4gIGlmICh0aGlzLl9wYXVzZWQpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTsgfVxuXG4gIHJldHVybiB0aGlzLl9iYXNlLnZhbGlkYXRlKGRlc2NyaXB0b3IsIHZhbHVlLCBhc3NpZ24oe30sIHsgdm1JZDogdGhpcy5pZCB9LCBvcHRzIHx8IHt9KSk7XG59O1xuXG5TY29wZWRWYWxpZGF0b3IucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeSAoKSB7XG4gICAgdmFyIHJlZjtcblxuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcbiAgcmV0dXJuIChyZWYgPSB0aGlzLl9iYXNlKS52ZXJpZnkuYXBwbHkocmVmLCBhcmdzKTtcbn07XG5cblNjb3BlZFZhbGlkYXRvci5wcm90b3R5cGUudmFsaWRhdGVBbGwgPSBmdW5jdGlvbiB2YWxpZGF0ZUFsbCAodmFsdWVzLCBvcHRzKSB7XG4gICAgaWYgKCBvcHRzID09PSB2b2lkIDAgKSBvcHRzID0ge307XG5cbiAgaWYgKHRoaXMuX3BhdXNlZCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpOyB9XG5cbiAgcmV0dXJuIHRoaXMuX2Jhc2UudmFsaWRhdGVBbGwodmFsdWVzLCBhc3NpZ24oe30sIHsgdm1JZDogdGhpcy5pZCB9LCBvcHRzIHx8IHt9KSk7XG59O1xuXG5TY29wZWRWYWxpZGF0b3IucHJvdG90eXBlLnZhbGlkYXRlU2NvcGVzID0gZnVuY3Rpb24gdmFsaWRhdGVTY29wZXMgKG9wdHMpIHtcbiAgICBpZiAoIG9wdHMgPT09IHZvaWQgMCApIG9wdHMgPSB7fTtcblxuICBpZiAodGhpcy5fcGF1c2VkKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7IH1cblxuICByZXR1cm4gdGhpcy5fYmFzZS52YWxpZGF0ZVNjb3Blcyhhc3NpZ24oe30sIHsgdm1JZDogdGhpcy5pZCB9LCBvcHRzIHx8IHt9KSk7XG59O1xuXG5TY29wZWRWYWxpZGF0b3IucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiBkZXN0cm95ICgpIHtcbiAgZGVsZXRlIHRoaXMuaWQ7XG4gIGRlbGV0ZSB0aGlzLl9iYXNlO1xufTtcblxuU2NvcGVkVmFsaWRhdG9yLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uIHJlc2V0IChtYXRjaGVyKSB7XG4gIHJldHVybiB0aGlzLl9iYXNlLnJlc2V0KE9iamVjdC5hc3NpZ24oe30sIG1hdGNoZXIgfHwge30sIHsgdm1JZDogdGhpcy5pZCB9KSk7XG59O1xuXG5TY29wZWRWYWxpZGF0b3IucHJvdG90eXBlLmZsYWcgPSBmdW5jdGlvbiBmbGFnICgpIHtcbiAgICB2YXIgcmVmO1xuXG4gICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuICByZXR1cm4gKHJlZiA9IHRoaXMuX2Jhc2UpLmZsYWcuYXBwbHkocmVmLCBhcmdzLmNvbmNhdCggW3RoaXMuaWRdICkpO1xufTtcblxuU2NvcGVkVmFsaWRhdG9yLnByb3RvdHlwZS5fcmVzb2x2ZUZpZWxkID0gZnVuY3Rpb24gX3Jlc29sdmVGaWVsZCAoKSB7XG4gICAgdmFyIHJlZjtcblxuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcbiAgcmV0dXJuIChyZWYgPSB0aGlzLl9iYXNlKS5fcmVzb2x2ZUZpZWxkLmFwcGx5KHJlZiwgYXJncyk7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggU2NvcGVkVmFsaWRhdG9yLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzJDMgKTtcblxudmFyIFZBTElEQVRPUiA9IG51bGw7XG5cbnZhciBnZXRWYWxpZGF0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBWQUxJREFUT1I7XG59O1xuXG52YXIgc2V0VmFsaWRhdG9yID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIFZBTElEQVRPUiA9IHZhbHVlO1xuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbi8vIFxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHBhcmVudCB2YWxpZGF0b3IgaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZC5cbiAqL1xudmFyIHJlcXVlc3RzVmFsaWRhdG9yID0gZnVuY3Rpb24gKGluamVjdGlvbnMpIHtcbiAgaWYgKGlzT2JqZWN0KGluamVjdGlvbnMpICYmIGluamVjdGlvbnMuJHZhbGlkYXRvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxudmFyIG1peGluID0ge1xuICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlICgpIHtcbiAgICBpZiAodGhpcy4kdmFsaWRhdG9yICYmICFpc0J1aWx0SW5Db21wb25lbnQodGhpcy4kdm5vZGUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAkdmFsaWRhdG9yOiB0aGlzLiR2YWxpZGF0b3JcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHt9O1xuICB9LFxuICBiZWZvcmVDcmVhdGU6IGZ1bmN0aW9uIGJlZm9yZUNyZWF0ZSAoKSB7XG4gICAgLy8gaWYgYnVpbHQgaW4gZG8gbm90aGluZy5cbiAgICBpZiAoaXNCdWlsdEluQ29tcG9uZW50KHRoaXMuJHZub2RlKSB8fCB0aGlzLiRvcHRpb25zLiRfX3ZlZUluamVjdCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBpZiBpdHMgYSByb290IGluc3RhbmNlIHNldCB0aGUgY29uZmlnIGlmIGl0IGV4aXN0cy5cbiAgICBpZiAoIXRoaXMuJHBhcmVudCkge1xuICAgICAgc2V0Q29uZmlnKHRoaXMuJG9wdGlvbnMuJF92ZWVWYWxpZGF0ZSB8fCB7fSk7XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbnMgPSByZXNvbHZlQ29uZmlnKHRoaXMpO1xuXG4gICAgLy8gaWYgaXRzIGEgcm9vdCBpbnN0YW5jZSwgaW5qZWN0IGFueXdheXMsIG9yIGlmIGl0IHJlcXVlc3RlZCBhIG5ldyBpbnN0YW5jZS5cbiAgICBpZiAoIXRoaXMuJHBhcmVudCB8fCAodGhpcy4kb3B0aW9ucy4kX3ZlZVZhbGlkYXRlICYmIC9uZXcvLnRlc3QodGhpcy4kb3B0aW9ucy4kX3ZlZVZhbGlkYXRlLnZhbGlkYXRvcikpKSB7XG4gICAgICB0aGlzLiR2YWxpZGF0b3IgPSBuZXcgU2NvcGVkVmFsaWRhdG9yKGdldFZhbGlkYXRvcigpLCB0aGlzKTtcbiAgICB9XG5cbiAgICB2YXIgcmVxdWVzdGVkID0gcmVxdWVzdHNWYWxpZGF0b3IodGhpcy4kb3B0aW9ucy5pbmplY3QpO1xuXG4gICAgLy8gaWYgYXV0b21hdGljIGluamVjdGlvbiBpcyBlbmFibGVkIGFuZCBubyBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkLlxuICAgIGlmICghIHRoaXMuJHZhbGlkYXRvciAmJiBvcHRpb25zLmluamVjdCAmJiAhcmVxdWVzdGVkKSB7XG4gICAgICB0aGlzLiR2YWxpZGF0b3IgPSBuZXcgU2NvcGVkVmFsaWRhdG9yKGdldFZhbGlkYXRvcigpLCB0aGlzKTtcbiAgICB9XG5cbiAgICAvLyBkb24ndCBpbmplY3QgZXJyb3JzIG9yIGZpZWxkQmFnIGFzIG5vIHZhbGlkYXRvciB3YXMgcmVzb2x2ZWQuXG4gICAgaWYgKCFyZXF1ZXN0ZWQgJiYgIXRoaXMuJHZhbGlkYXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoZXJlIGlzIGEgdmFsaWRhdG9yIGJ1dCBpdCBpc24ndCBpbmplY3RlZCwgbWFyayBhcyByZWFjdGl2ZS5cbiAgICBpZiAoIXJlcXVlc3RlZCAmJiB0aGlzLiR2YWxpZGF0b3IpIHtcbiAgICAgIHZhciBWdWUgPSB0aGlzLiRvcHRpb25zLl9iYXNlOyAvLyB0aGUgdnVlIGNvbnN0cnVjdG9yLlxuICAgICAgVnVlLnV0aWwuZGVmaW5lUmVhY3RpdmUodGhpcy4kdmFsaWRhdG9yLCAnZXJyb3JzJywgdGhpcy4kdmFsaWRhdG9yLmVycm9ycyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiRvcHRpb25zLmNvbXB1dGVkKSB7XG4gICAgICB0aGlzLiRvcHRpb25zLmNvbXB1dGVkID0ge307XG4gICAgfVxuXG4gICAgdGhpcy4kb3B0aW9ucy5jb21wdXRlZFtvcHRpb25zLmVycm9yQmFnTmFtZSB8fCAnZXJyb3JzJ10gPSBmdW5jdGlvbiBlcnJvckJhZ0dldHRlciAoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kdmFsaWRhdG9yLmVycm9ycztcbiAgICB9O1xuICAgIHRoaXMuJG9wdGlvbnMuY29tcHV0ZWRbb3B0aW9ucy5maWVsZHNCYWdOYW1lIHx8ICdmaWVsZHMnXSA9IGZ1bmN0aW9uIGZpZWxkQmFnR2V0dGVyICgpIHtcbiAgICAgIHJldHVybiB0aGlzLiR2YWxpZGF0b3IuZmllbGRzLml0ZW1zLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBmaWVsZCkge1xuICAgICAgICBpZiAoZmllbGQuc2NvcGUpIHtcbiAgICAgICAgICBpZiAoIWFjY1soXCIkXCIgKyAoZmllbGQuc2NvcGUpKV0pIHtcbiAgICAgICAgICAgIGFjY1soXCIkXCIgKyAoZmllbGQuc2NvcGUpKV0gPSB7fTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhY2NbKFwiJFwiICsgKGZpZWxkLnNjb3BlKSldW2ZpZWxkLm5hbWVdID0gZmllbGQuZmxhZ3M7XG5cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG5cbiAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQuZmxhZ3M7XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcbiAgICB9O1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95ICgpIHtcbiAgICBpZiAodGhpcy4kdmFsaWRhdG9yICYmIHRoaXMuX3VpZCA9PT0gdGhpcy4kdmFsaWRhdG9yLmlkKSB7XG4gICAgICB0aGlzLiR2YWxpZGF0b3IuZXJyb3JzLmNsZWFyKCk7IC8vIHJlbW92ZSBlcnJvcnMgZ2VuZXJhdGVkIGJ5IHRoaXMgY29tcG9uZW50LlxuICAgIH1cbiAgfVxufTtcblxuLy8gXG5cbi8qKlxuICogRmluZHMgdGhlIHJlcXVlc3RlZCBmaWVsZCBieSBpZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZmluZEZpZWxkIChlbCwgY29udGV4dCkge1xuICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQuJHZhbGlkYXRvcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQuJHZhbGlkYXRvci5maWVsZHMuZmluZEJ5SWQoZWwuX3ZlZVZhbGlkYXRlSWQpO1xufVxudmFyIGRpcmVjdGl2ZSA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZCAoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgdmFyIHZhbGlkYXRvciA9IHZub2RlLmNvbnRleHQuJHZhbGlkYXRvcjtcbiAgICBpZiAoIXZhbGlkYXRvcikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybihcIk5vIHZhbGlkYXRvciBpbnN0YW5jZSBpcyBwcmVzZW50IG9uIHZtLCBkaWQgeW91IGZvcmdldCB0byBpbmplY3QgJyR2YWxpZGF0b3InP1wiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBmaWVsZE9wdGlvbnMgPSBSZXNvbHZlci5nZW5lcmF0ZShlbCwgYmluZGluZywgdm5vZGUpO1xuICAgIHZhbGlkYXRvci5hdHRhY2goZmllbGRPcHRpb25zKTtcbiAgfSxcbiAgaW5zZXJ0ZWQ6IGZ1bmN0aW9uIGluc2VydGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICB2YXIgZmllbGQgPSBmaW5kRmllbGQoZWwsIHZub2RlLmNvbnRleHQpO1xuICAgIHZhciBzY29wZSA9IFJlc29sdmVyLnJlc29sdmVTY29wZShlbCwgYmluZGluZywgdm5vZGUpO1xuXG4gICAgLy8gc2tpcCBpZiBzY29wZSBoYXNuJ3QgY2hhbmdlZC5cbiAgICBpZiAoIWZpZWxkIHx8IHNjb3BlID09PSBmaWVsZC5zY29wZSkgeyByZXR1cm47IH1cblxuICAgIC8vIG9ubHkgdXBkYXRlIHNjb3BlLlxuICAgIGZpZWxkLnVwZGF0ZSh7IHNjb3BlOiBzY29wZSB9KTtcblxuICAgIC8vIGFsbG93cyB0aGUgZmllbGQgdG8gcmUtZXZhbHVhdGVkIG9uY2UgbW9yZSBpbiB0aGUgdXBkYXRlIGhvb2suXG4gICAgZmllbGQudXBkYXRlZCA9IGZhbHNlO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgdmFyIGZpZWxkID0gZmluZEZpZWxkKGVsLCB2bm9kZS5jb250ZXh0KTtcblxuICAgIC8vIG1ha2Ugc3VyZSB3ZSBkb24ndCBkbyB1bm5lY2Nhc2FyeSB3b3JrIGlmIG5vIGltcG9ydGFudCBjaGFuZ2Ugd2FzIGRvbmUuXG4gICAgaWYgKCFmaWVsZCB8fCAoZmllbGQudXBkYXRlZCAmJiBpc0VxdWFsKGJpbmRpbmcudmFsdWUsIGJpbmRpbmcub2xkVmFsdWUpKSkgeyByZXR1cm47IH1cbiAgICB2YXIgc2NvcGUgPSBSZXNvbHZlci5yZXNvbHZlU2NvcGUoZWwsIGJpbmRpbmcsIHZub2RlKTtcbiAgICB2YXIgcnVsZXMgPSBSZXNvbHZlci5yZXNvbHZlUnVsZXMoZWwsIGJpbmRpbmcsIHZub2RlKTtcblxuICAgIGZpZWxkLnVwZGF0ZSh7XG4gICAgICBzY29wZTogc2NvcGUsXG4gICAgICBydWxlczogcnVsZXNcbiAgICB9KTtcbiAgfSxcbiAgdW5iaW5kOiBmdW5jdGlvbiB1bmJpbmQgKGVsLCBiaW5kaW5nLCByZWYpIHtcbiAgICB2YXIgY29udGV4dCA9IHJlZi5jb250ZXh0O1xuXG4gICAgdmFyIGZpZWxkID0gZmluZEZpZWxkKGVsLCBjb250ZXh0KTtcbiAgICBpZiAoIWZpZWxkKSB7IHJldHVybjsgfVxuXG4gICAgY29udGV4dC4kdmFsaWRhdG9yLmRldGFjaChmaWVsZCk7XG4gIH1cbn07XG5cbi8vIFxuXG52YXIgVmFsaWRhdG9yID0gZnVuY3Rpb24gVmFsaWRhdG9yICh2YWxpZGF0aW9ucywgb3B0aW9ucywgcGx1Z2luQ29udGFpbmVyKSB7XG4gIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHsgZmFzdEV4aXQ6IHRydWUgfTtcbiAgaWYgKCBwbHVnaW5Db250YWluZXIgPT09IHZvaWQgMCApIHBsdWdpbkNvbnRhaW5lciA9IG51bGw7XG5cbiAgdGhpcy5lcnJvcnMgPSBuZXcgRXJyb3JCYWcoKTtcbiAgdGhpcy5maWVsZHMgPSBuZXcgRmllbGRCYWcoKTtcbiAgdGhpcy5fY3JlYXRlRmllbGRzKHZhbGlkYXRpb25zKTtcbiAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcbiAgdGhpcy5mYXN0RXhpdCA9ICFpc051bGxPclVuZGVmaW5lZChvcHRpb25zICYmIG9wdGlvbnMuZmFzdEV4aXQpID8gb3B0aW9ucy5mYXN0RXhpdCA6IHRydWU7XG4gIHRoaXMuJHZlZSA9IHBsdWdpbkNvbnRhaW5lciB8fCB7XG4gICAgX3ZtOiB7XG4gICAgICAkbmV4dFRpY2s6IGZ1bmN0aW9uIChjYikgeyByZXR1cm4gaXNDYWxsYWJsZShjYikgPyBjYigpIDogUHJvbWlzZS5yZXNvbHZlKCk7IH0sXG4gICAgICAkZW1pdDogZnVuY3Rpb24gKCkge30sXG4gICAgICAkb2ZmOiBmdW5jdGlvbiAoKSB7fVxuICAgIH1cbiAgfTtcbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMkNCA9IHsgcnVsZXM6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sZGljdGlvbmFyeTogeyBjb25maWd1cmFibGU6IHRydWUgfSxmbGFnczogeyBjb25maWd1cmFibGU6IHRydWUgfSxsb2NhbGU6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcbnZhciBzdGF0aWNBY2Nlc3NvcnMkMSA9IHsgcnVsZXM6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sZGljdGlvbmFyeTogeyBjb25maWd1cmFibGU6IHRydWUgfSxsb2NhbGU6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5zdGF0aWNBY2Nlc3NvcnMkMS5ydWxlcy5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgd2FybigndGhpcyBhY2Nlc3NvciB3aWxsIGJlIGRlcHJlY2F0ZWQsIHVzZSBgaW1wb3J0IHsgcnVsZXMgfSBmcm9tIFwidmVlLXZhbGlkYXRlXCJgIGluc3RlYWQuJyk7XG4gIH1cblxuICByZXR1cm4gUnVsZUNvbnRhaW5lci5ydWxlcztcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xucHJvdG90eXBlQWNjZXNzb3JzJDQucnVsZXMuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oJ3RoaXMgYWNjZXNzb3Igd2lsbCBiZSBkZXByZWNhdGVkLCB1c2UgYGltcG9ydCB7IHJ1bGVzIH0gZnJvbSBcInZlZS12YWxpZGF0ZVwiYCBpbnN0ZWFkLicpO1xuICB9XG5cbiAgcmV0dXJuIFJ1bGVDb250YWluZXIucnVsZXM7XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkNC5kaWN0aW9uYXJ5LmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIERpY3Rpb25hcnlSZXNvbHZlci5nZXREcml2ZXIoKTtcbn07XG5cbnN0YXRpY0FjY2Vzc29ycyQxLmRpY3Rpb25hcnkuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gRGljdGlvbmFyeVJlc29sdmVyLmdldERyaXZlcigpO1xufTtcblxucHJvdG90eXBlQWNjZXNzb3JzJDQuZmxhZ3MuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5maWVsZHMuaXRlbXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGZpZWxkKSB7XG4gICAgICB2YXIgb2JqO1xuXG4gICAgaWYgKGZpZWxkLnNjb3BlKSB7XG4gICAgICBhY2NbKFwiJFwiICsgKGZpZWxkLnNjb3BlKSldID0gKCBvYmogPSB7fSwgb2JqW2ZpZWxkLm5hbWVdID0gZmllbGQuZmxhZ3MsIG9iaiApO1xuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cblxuICAgIGFjY1tmaWVsZC5uYW1lXSA9IGZpZWxkLmZsYWdzO1xuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBHZXR0ZXIgZm9yIHRoZSBjdXJyZW50IGxvY2FsZS5cbiAqL1xucHJvdG90eXBlQWNjZXNzb3JzJDQubG9jYWxlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFZhbGlkYXRvci5sb2NhbGU7XG59O1xuXG4vKipcbiAqIFNldHRlciBmb3IgdGhlIHZhbGlkYXRvciBsb2NhbGUuXG4gKi9cbnByb3RvdHlwZUFjY2Vzc29ycyQ0LmxvY2FsZS5zZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgVmFsaWRhdG9yLmxvY2FsZSA9IHZhbHVlO1xufTtcblxuc3RhdGljQWNjZXNzb3JzJDEubG9jYWxlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIERpY3Rpb25hcnlSZXNvbHZlci5nZXREcml2ZXIoKS5sb2NhbGU7XG59O1xuXG4vKipcbiAqIFNldHRlciBmb3IgdGhlIHZhbGlkYXRvciBsb2NhbGUuXG4gKi9cbnN0YXRpY0FjY2Vzc29ycyQxLmxvY2FsZS5zZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIGhhc0NoYW5nZWQgPSB2YWx1ZSAhPT0gRGljdGlvbmFyeVJlc29sdmVyLmdldERyaXZlcigpLmxvY2FsZTtcbiAgRGljdGlvbmFyeVJlc29sdmVyLmdldERyaXZlcigpLmxvY2FsZSA9IHZhbHVlO1xuICBpZiAoaGFzQ2hhbmdlZCAmJiBWYWxpZGF0b3IuJHZlZSAmJiBWYWxpZGF0b3IuJHZlZS5fdm0pIHtcbiAgICBWYWxpZGF0b3IuJHZlZS5fdm0uJGVtaXQoJ2xvY2FsZUNoYW5nZWQnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBTdGF0aWMgY29uc3RydWN0b3IuXG4gKiBAZGVwcmVjYXRlZFxuICovXG5WYWxpZGF0b3IuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlICh2YWxpZGF0aW9ucywgb3B0aW9ucykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oJ1BsZWFzZSB1c2UgYG5ld2AgdG8gY3JlYXRlIG5ldyB2YWxpZGF0b3IgaW5zdGFuY2VzLicpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBWYWxpZGF0b3IodmFsaWRhdGlvbnMsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBBZGRzIGEgY3VzdG9tIHZhbGlkYXRvciB0byB0aGUgbGlzdCBvZiB2YWxpZGF0aW9uIHJ1bGVzLlxuICovXG5WYWxpZGF0b3IuZXh0ZW5kID0gZnVuY3Rpb24gZXh0ZW5kIChuYW1lLCB2YWxpZGF0b3IsIG9wdGlvbnMpIHtcbiAgICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICBWYWxpZGF0b3IuX2d1YXJkRXh0ZW5kKG5hbWUsIHZhbGlkYXRvcik7XG4gIC8vIHJ1bGVzIGltcG9ydGVkIGZyb20gdGhlIG1pbmltYWwgYnVuZGxlXG4gIC8vIHdpbGwgaGF2ZSB0aGUgb3B0aW9ucyBlbWJlZGRlZCBpbiB0aGVtXG4gIHZhciBtZXJnZWRPcHRzID0gdmFsaWRhdG9yLm9wdGlvbnMgfHwge307XG4gIFZhbGlkYXRvci5fbWVyZ2UobmFtZSwge1xuICAgIHZhbGlkYXRvcjogdmFsaWRhdG9yLFxuICAgIHBhcmFtTmFtZXM6IChvcHRpb25zICYmIG9wdGlvbnMucGFyYW1OYW1lcykgfHwgdmFsaWRhdG9yLnBhcmFtTmFtZXMsXG4gICAgb3B0aW9uczogYXNzaWduKHsgaGFzVGFyZ2V0OiBmYWxzZSwgaW1tZWRpYXRlOiB0cnVlIH0sIG1lcmdlZE9wdHMsIG9wdGlvbnMgfHwge30pXG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIGEgcnVsZSBmcm9tIHRoZSBsaXN0IG9mIHZhbGlkYXRvcnMuXG4gKiBAZGVwcmVjYXRlZFxuICovXG5WYWxpZGF0b3IucmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlIChuYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgd2FybigndGhpcyBtZXRob2Qgd2lsbCBiZSBkZXByZWNhdGVkLCB5b3UgY2FuIHN0aWxsIG92ZXJyaWRlIHlvdXIgcnVsZXMgd2l0aCBgZXh0ZW5kYCcpO1xuICB9XG5cbiAgUnVsZUNvbnRhaW5lci5yZW1vdmUobmFtZSk7XG59O1xuXG4vKipcbiAqIEFkZHMgYW5kIHNldHMgdGhlIGN1cnJlbnQgbG9jYWxlIGZvciB0aGUgdmFsaWRhdG9yLlxuKi9cblZhbGlkYXRvci5wcm90b3R5cGUubG9jYWxpemUgPSBmdW5jdGlvbiBsb2NhbGl6ZSAobGFuZywgZGljdGlvbmFyeSkge1xuICBWYWxpZGF0b3IubG9jYWxpemUobGFuZywgZGljdGlvbmFyeSk7XG59O1xuXG4vKipcbiAqIEFkZHMgYW5kIHNldHMgdGhlIGN1cnJlbnQgbG9jYWxlIGZvciB0aGUgdmFsaWRhdG9yLlxuICovXG5WYWxpZGF0b3IubG9jYWxpemUgPSBmdW5jdGlvbiBsb2NhbGl6ZSAobGFuZywgZGljdGlvbmFyeSkge1xuICAgIHZhciBvYmo7XG5cbiAgaWYgKGlzT2JqZWN0KGxhbmcpKSB7XG4gICAgRGljdGlvbmFyeVJlc29sdmVyLmdldERyaXZlcigpLm1lcmdlKGxhbmcpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIG1lcmdlIHRoZSBkaWN0aW9uYXJ5LlxuICBpZiAoZGljdGlvbmFyeSkge1xuICAgIHZhciBsb2NhbGUgPSBsYW5nIHx8IGRpY3Rpb25hcnkubmFtZTtcbiAgICBkaWN0aW9uYXJ5ID0gYXNzaWduKHt9LCBkaWN0aW9uYXJ5KTtcbiAgICBEaWN0aW9uYXJ5UmVzb2x2ZXIuZ2V0RHJpdmVyKCkubWVyZ2UoKCBvYmogPSB7fSwgb2JqW2xvY2FsZV0gPSBkaWN0aW9uYXJ5LCBvYmogKSk7XG4gIH1cblxuICBpZiAobGFuZykge1xuICAgIC8vIHNldCB0aGUgbG9jYWxlLlxuICAgIFZhbGlkYXRvci5sb2NhbGUgPSBsYW5nO1xuICB9XG59O1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGZpZWxkIHRvIGJlIHZhbGlkYXRlZC5cbiAqL1xuVmFsaWRhdG9yLnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbiBhdHRhY2ggKGZpZWxkT3B0cykge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIC8vIFdlIHNlYXJjaCBmb3IgYSBmaWVsZCB3aXRoIHRoZSBzYW1lIG5hbWUgJiBzY29wZSwgaGF2aW5nIHBlcnNpc3QgZW5hYmxlZFxuICB2YXIgb2xkRmllbGRNYXRjaGVyID0geyBuYW1lOiBmaWVsZE9wdHMubmFtZSwgc2NvcGU6IGZpZWxkT3B0cy5zY29wZSwgcGVyc2lzdDogdHJ1ZSB9O1xuICB2YXIgb2xkRmllbGQgPSBmaWVsZE9wdHMucGVyc2lzdCA/IHRoaXMuZmllbGRzLmZpbmQob2xkRmllbGRNYXRjaGVyKSA6IG51bGw7XG5cbiAgaWYgKG9sZEZpZWxkKSB7XG4gICAgLy8gV2Uga2VlcCB0aGUgZmxhZ3Mgb2YgdGhlIG9sZCBmaWVsZCwgdGhlbiB3ZSByZW1vdmUgaXRzIGluc3RhbmNlXG4gICAgZmllbGRPcHRzLmZsYWdzID0gb2xkRmllbGQuZmxhZ3M7XG4gICAgb2xkRmllbGQuZGVzdHJveSgpO1xuICAgIHRoaXMuZmllbGRzLnJlbW92ZShvbGRGaWVsZCk7XG4gIH1cblxuICAvLyBmaXhlcyBpbml0aWFsIHZhbHVlIGRldGVjdGlvbiB3aXRoIHYtbW9kZWwgYW5kIHNlbGVjdCBlbGVtZW50cy5cbiAgdmFyIHZhbHVlID0gZmllbGRPcHRzLmluaXRpYWxWYWx1ZTtcbiAgdmFyIGZpZWxkID0gbmV3IEZpZWxkKGZpZWxkT3B0cyk7XG4gIHRoaXMuZmllbGRzLnB1c2goZmllbGQpO1xuXG4gIC8vIHZhbGlkYXRlIHRoZSBmaWVsZCBpbml0aWFsbHlcbiAgaWYgKGZpZWxkLmltbWVkaWF0ZSkge1xuICAgIHRoaXMuJHZlZS5fdm0uJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS52YWxpZGF0ZSgoXCIjXCIgKyAoZmllbGQuaWQpKSwgdmFsdWUgfHwgZmllbGQudmFsdWUsIHsgdm1JZDogZmllbGRPcHRzLnZtSWQgfSk7IH0pO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX3ZhbGlkYXRlKGZpZWxkLCB2YWx1ZSB8fCBmaWVsZC52YWx1ZSwgeyBpbml0aWFsOiB0cnVlIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgZmllbGQuZmxhZ3MudmFsaWQgPSByZXN1bHQudmFsaWQ7XG4gICAgICBmaWVsZC5mbGFncy5pbnZhbGlkID0gIXJlc3VsdC52YWxpZDtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmaWVsZDtcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgZmxhZ3Mgb24gYSBmaWVsZC5cbiAqL1xuVmFsaWRhdG9yLnByb3RvdHlwZS5mbGFnID0gZnVuY3Rpb24gZmxhZyAobmFtZSwgZmxhZ3MsIHVpZCkge1xuICAgIGlmICggdWlkID09PSB2b2lkIDAgKSB1aWQgPSBudWxsO1xuXG4gIHZhciBmaWVsZCA9IHRoaXMuX3Jlc29sdmVGaWVsZChuYW1lLCB1bmRlZmluZWQsIHVpZCk7XG4gIGlmICghZmllbGQgfHwgIWZsYWdzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZmllbGQuc2V0RmxhZ3MoZmxhZ3MpO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIGEgZmllbGQgZnJvbSB0aGUgdmFsaWRhdG9yLlxuICovXG5WYWxpZGF0b3IucHJvdG90eXBlLmRldGFjaCA9IGZ1bmN0aW9uIGRldGFjaCAobmFtZSwgc2NvcGUsIHVpZCkge1xuICB2YXIgZmllbGQgPSBpc0NhbGxhYmxlKG5hbWUuZGVzdHJveSkgPyBuYW1lIDogdGhpcy5fcmVzb2x2ZUZpZWxkKG5hbWUsIHNjb3BlLCB1aWQpO1xuICBpZiAoIWZpZWxkKSB7IHJldHVybjsgfVxuXG4gIC8vIFdlIGRlc3Ryb3kvcmVtb3ZlIHRoZSBmaWVsZCAmIGVycm9yIGluc3RhbmNlcyBpZiBpdCdzIG5vdCBhIGBwZXJzaXN0YCBvbmVcbiAgaWYgKCFmaWVsZC5wZXJzaXN0KSB7XG4gICAgZmllbGQuZGVzdHJveSgpO1xuICAgIHRoaXMuZXJyb3JzLnJlbW92ZShmaWVsZC5uYW1lLCBmaWVsZC5zY29wZSwgZmllbGQudm1JZCk7XG4gICAgdGhpcy5maWVsZHMucmVtb3ZlKGZpZWxkKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBZGRzIGEgY3VzdG9tIHZhbGlkYXRvciB0byB0aGUgbGlzdCBvZiB2YWxpZGF0aW9uIHJ1bGVzLlxuICovXG5WYWxpZGF0b3IucHJvdG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uIGV4dGVuZCAobmFtZSwgdmFsaWRhdG9yLCBvcHRpb25zKSB7XG4gICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgVmFsaWRhdG9yLmV4dGVuZChuYW1lLCB2YWxpZGF0b3IsIG9wdGlvbnMpO1xufTtcblxuVmFsaWRhdG9yLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uIHJlc2V0IChtYXRjaGVyKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgLy8gdHdvIHRpY2tzXG4gIHJldHVybiB0aGlzLiR2ZWUuX3ZtLiRuZXh0VGljaygpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzJDEuJHZlZS5fdm0uJG5leHRUaWNrKCk7XG4gIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHRoaXMkMS5maWVsZHMuZmlsdGVyKG1hdGNoZXIpLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICBmaWVsZC53YWl0Rm9yKG51bGwpO1xuICAgICAgZmllbGQucmVzZXQoKTsgLy8gcmVzZXQgZmllbGQgZmxhZ3MuXG4gICAgICB0aGlzJDEuZXJyb3JzLnJlbW92ZShmaWVsZC5uYW1lLCBmaWVsZC5zY29wZSwgbWF0Y2hlciAmJiBtYXRjaGVyLnZtSWQpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8qKlxuICogVXBkYXRlcyBhIGZpZWxkLCB1cGRhdGluZyBib3RoIGVycm9ycyBhbmQgZmxhZ3MuXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlIChpZCwgcmVmKSB7XG4gICAgdmFyIHNjb3BlID0gcmVmLnNjb3BlO1xuXG4gIHZhciBmaWVsZCA9IHRoaXMuX3Jlc29sdmVGaWVsZCgoXCIjXCIgKyBpZCkpO1xuICBpZiAoIWZpZWxkKSB7IHJldHVybjsgfVxuXG4gIC8vIHJlbW92ZSBvbGQgc2NvcGUuXG4gIHRoaXMuZXJyb3JzLnVwZGF0ZShpZCwgeyBzY29wZTogc2NvcGUgfSk7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgYSBydWxlIGZyb20gdGhlIGxpc3Qgb2YgdmFsaWRhdG9ycy5cbiAqIEBkZXByZWNhdGVkXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlIChuYW1lKSB7XG4gIFZhbGlkYXRvci5yZW1vdmUobmFtZSk7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyBhIHZhbHVlIGFnYWluc3QgYSByZWdpc3RlcmVkIGZpZWxkIHZhbGlkYXRpb25zLlxuICovXG5WYWxpZGF0b3IucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUgKGZpZWxkRGVzY3JpcHRvciwgdmFsdWUsIHJlZikge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgICB2YXIgc2lsZW50ID0gcmVmLnNpbGVudDtcbiAgICB2YXIgdm1JZCA9IHJlZi52bUlkO1xuXG4gIGlmICh0aGlzLnBhdXNlZCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpOyB9XG5cbiAgLy8gb3ZlcmxvYWQgdG8gdmFsaWRhdGUgYWxsLlxuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoZmllbGREZXNjcmlwdG9yKSkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU2NvcGVzKHsgc2lsZW50OiBzaWxlbnQsIHZtSWQ6IHZtSWQgfSk7XG4gIH1cblxuICAvLyBvdmVybG9hZCB0byB2YWxpZGF0ZSBzY29wZS1sZXNzIGZpZWxkcy5cbiAgaWYgKGZpZWxkRGVzY3JpcHRvciA9PT0gJyonKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVBbGwodW5kZWZpbmVkLCB7IHNpbGVudDogc2lsZW50LCB2bUlkOiB2bUlkIH0pO1xuICB9XG5cbiAgLy8gaWYgc2NvcGUgdmFsaWRhdGlvbiB3YXMgcmVxdWVzdGVkLlxuICBpZiAoL14oLispXFwuXFwqJC8udGVzdChmaWVsZERlc2NyaXB0b3IpKSB7XG4gICAgdmFyIG1hdGNoZWQgPSBmaWVsZERlc2NyaXB0b3IubWF0Y2goL14oLispXFwuXFwqJC8pWzFdO1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQWxsKG1hdGNoZWQpO1xuICB9XG5cbiAgdmFyIGZpZWxkID0gdGhpcy5fcmVzb2x2ZUZpZWxkKGZpZWxkRGVzY3JpcHRvcik7XG4gIGlmICghZmllbGQpIHtcbiAgICByZXR1cm4gdGhpcy5faGFuZGxlRmllbGROb3RGb3VuZChmaWVsZERlc2NyaXB0b3IpO1xuICB9XG5cbiAgaWYgKCFzaWxlbnQpIHsgZmllbGQuZmxhZ3MucGVuZGluZyA9IHRydWU7IH1cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICB2YWx1ZSA9IGZpZWxkLnZhbHVlO1xuICB9XG5cbiAgdmFyIHZhbGlkYXRpb25Qcm9taXNlID0gdGhpcy5fdmFsaWRhdGUoZmllbGQsIHZhbHVlKTtcbiAgZmllbGQud2FpdEZvcih2YWxpZGF0aW9uUHJvbWlzZSk7XG5cbiAgcmV0dXJuIHZhbGlkYXRpb25Qcm9taXNlLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGlmICghc2lsZW50ICYmIGZpZWxkLmlzV2FpdGluZ0Zvcih2YWxpZGF0aW9uUHJvbWlzZSkpIHtcbiAgICAgIC8vIGFsbG93IG5leHQgdmFsaWRhdGlvbiB0byBtdXRhdGUgdGhlIHN0YXRlLlxuICAgICAgZmllbGQud2FpdEZvcihudWxsKTtcbiAgICAgIHRoaXMkMS5faGFuZGxlVmFsaWRhdGlvblJlc3VsdHMoW3Jlc3VsdF0sIHZtSWQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQudmFsaWQ7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBQYXVzZXMgdGhlIHZhbGlkYXRvci5cbiAqL1xuVmFsaWRhdG9yLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uIHBhdXNlICgpIHtcbiAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBSZXN1bWVzIHRoZSB2YWxpZGF0b3IuXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gcmVzdW1lICgpIHtcbiAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogVmFsaWRhdGVzIGVhY2ggdmFsdWUgYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBmaWVsZCB2YWxpZGF0aW9ucy5cbiAqL1xuVmFsaWRhdG9yLnByb3RvdHlwZS52YWxpZGF0ZUFsbCA9IGZ1bmN0aW9uIHZhbGlkYXRlQWxsICh2YWx1ZXMsIHJlZikge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgICB2YXIgc2lsZW50ID0gcmVmLnNpbGVudDtcbiAgICB2YXIgdm1JZCA9IHJlZi52bUlkO1xuXG4gIGlmICh0aGlzLnBhdXNlZCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpOyB9XG5cbiAgdmFyIG1hdGNoZXIgPSBudWxsO1xuICB2YXIgcHJvdmlkZWRWYWx1ZXMgPSBmYWxzZTtcblxuICBpZiAodHlwZW9mIHZhbHVlcyA9PT0gJ3N0cmluZycpIHtcbiAgICBtYXRjaGVyID0geyBzY29wZTogdmFsdWVzLCB2bUlkOiB2bUlkIH07XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QodmFsdWVzKSkge1xuICAgIG1hdGNoZXIgPSBPYmplY3Qua2V5cyh2YWx1ZXMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZXR1cm4geyBuYW1lOiBrZXksIHZtSWQ6IHZtSWQsIHNjb3BlOiBudWxsIH07XG4gICAgfSk7XG4gICAgcHJvdmlkZWRWYWx1ZXMgPSB0cnVlO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgIG1hdGNoZXIgPSB2YWx1ZXMubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiB0eXBlb2Yga2V5ID09PSAnb2JqZWN0JyA/IE9iamVjdC5hc3NpZ24oeyB2bUlkOiB2bUlkIH0sIGtleSkgOiB7IG5hbWU6IGtleSwgdm1JZDogdm1JZCB9O1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG1hdGNoZXIgPSB7IHNjb3BlOiBudWxsLCB2bUlkOiB2bUlkIH07XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgdGhpcy5maWVsZHMuZmlsdGVyKG1hdGNoZXIpLm1hcChmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIHRoaXMkMS5fdmFsaWRhdGUoZmllbGQsIHByb3ZpZGVkVmFsdWVzID8gdmFsdWVzW2ZpZWxkLm5hbWVdIDogZmllbGQudmFsdWUpOyB9KVxuICApLnRoZW4oZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdGhpcyQxLl9oYW5kbGVWYWxpZGF0aW9uUmVzdWx0cyhyZXN1bHRzLCB2bUlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cy5ldmVyeShmdW5jdGlvbiAodCkgeyByZXR1cm4gdC52YWxpZDsgfSk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYWxsIHNjb3Blcy5cbiAqL1xuVmFsaWRhdG9yLnByb3RvdHlwZS52YWxpZGF0ZVNjb3BlcyA9IGZ1bmN0aW9uIHZhbGlkYXRlU2NvcGVzIChyZWYpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gICAgdmFyIHNpbGVudCA9IHJlZi5zaWxlbnQ7XG4gICAgdmFyIHZtSWQgPSByZWYudm1JZDtcblxuICBpZiAodGhpcy5wYXVzZWQpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTsgfVxuXG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICB0aGlzLmZpZWxkcy5maWx0ZXIoeyB2bUlkOiB2bUlkIH0pLm1hcChmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIHRoaXMkMS5fdmFsaWRhdGUoZmllbGQsIGZpZWxkLnZhbHVlKTsgfSlcbiAgKS50aGVuKGZ1bmN0aW9uIChyZXN1bHRzKSB7XG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIHRoaXMkMS5faGFuZGxlVmFsaWRhdGlvblJlc3VsdHMocmVzdWx0cywgdm1JZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHMuZXZlcnkoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIHQudmFsaWQ7IH0pO1xuICB9KTtcbn07XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgdmFsdWUgYWdhaW5zdCB0aGUgcnVsZXMuXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5ICh2YWx1ZSwgcnVsZXMsIG9wdGlvbnMpIHtcbiAgICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICB2YXIgZmllbGQgPSB7XG4gICAgbmFtZTogKG9wdGlvbnMgJiYgb3B0aW9ucy5uYW1lKSB8fCAne2ZpZWxkfScsXG4gICAgcnVsZXM6IG5vcm1hbGl6ZVJ1bGVzKHJ1bGVzKSxcbiAgICBiYWlsczogZ2V0UGF0aCgnYmFpbHMnLCBvcHRpb25zLCB0cnVlKSxcbiAgICBmb3JjZVJlcXVpcmVkOiBmYWxzZSxcbiAgICBnZXQgaXNSZXF1aXJlZCAoKSB7XG4gICAgICByZXR1cm4gISF0aGlzLnJ1bGVzLnJlcXVpcmVkIHx8IHRoaXMuZm9yY2VSZXF1aXJlZDtcbiAgICB9XG4gIH07XG5cbiAgdmFyIHRhcmdldFJ1bGVzID0gT2JqZWN0LmtleXMoZmllbGQucnVsZXMpLmZpbHRlcihSdWxlQ29udGFpbmVyLmlzVGFyZ2V0UnVsZSk7XG4gIGlmICh0YXJnZXRSdWxlcy5sZW5ndGggJiYgb3B0aW9ucyAmJiBpc09iamVjdChvcHRpb25zLnZhbHVlcykpIHtcbiAgICBmaWVsZC5kZXBlbmRlbmNpZXMgPSB0YXJnZXRSdWxlcy5tYXAoZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICAgIHZhciByZWYgPSBmaWVsZC5ydWxlc1tydWxlXTtcbiAgICAgICAgdmFyIHRhcmdldEtleSA9IHJlZlswXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogcnVsZSxcbiAgICAgICAgZmllbGQ6IHsgdmFsdWU6IG9wdGlvbnMudmFsdWVzW3RhcmdldEtleV0gfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl92YWxpZGF0ZShmaWVsZCwgdmFsdWUpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICB2YXIgcnVsZU1hcCA9IHt9O1xuICAgIHJlc3VsdC5lcnJvcnMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgZXJyb3JzLnB1c2goZS5tc2cpO1xuICAgICAgcnVsZU1hcFtlLnJ1bGVdID0gZS5tc2c7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IHJlc3VsdC52YWxpZCxcbiAgICAgIGVycm9yczogZXJyb3JzLFxuICAgICAgZmFpbGVkUnVsZXM6IHJ1bGVNYXBcbiAgICB9O1xuICB9KTtcbn07XG5cbi8qKlxuICogUGVyZm9ybSBjbGVhbnVwLlxuICovXG5WYWxpZGF0b3IucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiBkZXN0cm95ICgpIHtcbiAgdGhpcy4kdmVlLl92bS4kb2ZmKCdsb2NhbGVDaGFuZ2VkJyk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGZpZWxkcyB0byBiZSB2YWxpZGF0ZWQuXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUuX2NyZWF0ZUZpZWxkcyA9IGZ1bmN0aW9uIF9jcmVhdGVGaWVsZHMgKHZhbGlkYXRpb25zKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKCF2YWxpZGF0aW9ucykgeyByZXR1cm47IH1cblxuICBPYmplY3Qua2V5cyh2YWxpZGF0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFzc2lnbih7fSwgeyBuYW1lOiBmaWVsZCwgcnVsZXM6IHZhbGlkYXRpb25zW2ZpZWxkXSB9KTtcbiAgICB0aGlzJDEuYXR0YWNoKG9wdGlvbnMpO1xuICB9KTtcbn07XG5cbi8qKlxuICogRGF0ZSBydWxlcyBuZWVkIHRoZSBleGlzdGVuY2Ugb2YgYSBmb3JtYXQsIHNvIGRhdGVfZm9ybWF0IG11c3QgYmUgc3VwcGxpZWQuXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUuX2dldERhdGVGb3JtYXQgPSBmdW5jdGlvbiBfZ2V0RGF0ZUZvcm1hdCAodmFsaWRhdGlvbnMpIHtcbiAgdmFyIGZvcm1hdCA9IG51bGw7XG4gIGlmICh2YWxpZGF0aW9ucy5kYXRlX2Zvcm1hdCAmJiBBcnJheS5pc0FycmF5KHZhbGlkYXRpb25zLmRhdGVfZm9ybWF0KSkge1xuICAgIGZvcm1hdCA9IHZhbGlkYXRpb25zLmRhdGVfZm9ybWF0WzBdO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdCB8fCBEaWN0aW9uYXJ5UmVzb2x2ZXIuZ2V0RHJpdmVyKCkuZ2V0RGF0ZUZvcm1hdCh0aGlzLmxvY2FsZSk7XG59O1xuXG4vKipcbiAqIEZvcm1hdHMgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZmllbGQgYW5kIGEgcnVsZS5cbiAqL1xuVmFsaWRhdG9yLnByb3RvdHlwZS5fZm9ybWF0RXJyb3JNZXNzYWdlID0gZnVuY3Rpb24gX2Zvcm1hdEVycm9yTWVzc2FnZSAoZmllbGQsIHJ1bGUsIGRhdGEsIHRhcmdldE5hbWUpIHtcbiAgICBpZiAoIGRhdGEgPT09IHZvaWQgMCApIGRhdGEgPSB7fTtcbiAgICBpZiAoIHRhcmdldE5hbWUgPT09IHZvaWQgMCApIHRhcmdldE5hbWUgPSBudWxsO1xuXG4gIHZhciBuYW1lID0gdGhpcy5fZ2V0RmllbGREaXNwbGF5TmFtZShmaWVsZCk7XG4gIHZhciBwYXJhbXMgPSB0aGlzLl9nZXRMb2NhbGl6ZWRQYXJhbXMocnVsZSwgdGFyZ2V0TmFtZSk7XG5cbiAgcmV0dXJuIERpY3Rpb25hcnlSZXNvbHZlci5nZXREcml2ZXIoKS5nZXRGaWVsZE1lc3NhZ2UodGhpcy5sb2NhbGUsIGZpZWxkLm5hbWUsIHJ1bGUubmFtZSwgW25hbWUsIHBhcmFtcywgZGF0YV0pO1xufTtcblxuLyoqXG4gKiBXZSBuZWVkIHRvIGNvbnZlcnQgYW55IG9iamVjdCBwYXJhbSB0byBhbiBhcnJheSBmb3JtYXQgc2luY2UgdGhlIGxvY2FsZXMgZG8gbm90IGhhbmRsZSBwYXJhbXMgYXMgb2JqZWN0cyB5ZXQuXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUuX2NvbnZlcnRQYXJhbU9iamVjdFRvQXJyYXkgPSBmdW5jdGlvbiBfY29udmVydFBhcmFtT2JqZWN0VG9BcnJheSAob2JqLCBydWxlTmFtZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHZhciBwYXJhbU5hbWVzID0gUnVsZUNvbnRhaW5lci5nZXRQYXJhbU5hbWVzKHJ1bGVOYW1lKTtcbiAgaWYgKCFwYXJhbU5hbWVzIHx8ICFpc09iamVjdChvYmopKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHJldHVybiBwYXJhbU5hbWVzLnJlZHVjZShmdW5jdGlvbiAocHJldiwgcGFyYW1OYW1lKSB7XG4gICAgaWYgKHBhcmFtTmFtZSBpbiBvYmopIHtcbiAgICAgIHByZXYucHVzaChvYmpbcGFyYW1OYW1lXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIFtdKTtcbn07XG5cbi8qKlxuICogVHJhbnNsYXRlcyB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIHJ1bGUgKG1haW5seSBmb3IgdGFyZ2V0IGZpZWxkcykuXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUuX2dldExvY2FsaXplZFBhcmFtcyA9IGZ1bmN0aW9uIF9nZXRMb2NhbGl6ZWRQYXJhbXMgKHJ1bGUsIHRhcmdldE5hbWUpIHtcbiAgICBpZiAoIHRhcmdldE5hbWUgPT09IHZvaWQgMCApIHRhcmdldE5hbWUgPSBudWxsO1xuXG4gIHZhciBwYXJhbXMgPSB0aGlzLl9jb252ZXJ0UGFyYW1PYmplY3RUb0FycmF5KHJ1bGUucGFyYW1zLCBydWxlLm5hbWUpO1xuICBpZiAocnVsZS5vcHRpb25zLmhhc1RhcmdldCAmJiBwYXJhbXMgJiYgcGFyYW1zWzBdKSB7XG4gICAgdmFyIGxvY2FsaXplZE5hbWUgPSB0YXJnZXROYW1lIHx8IERpY3Rpb25hcnlSZXNvbHZlci5nZXREcml2ZXIoKS5nZXRBdHRyaWJ1dGUodGhpcy5sb2NhbGUsIHBhcmFtc1swXSwgcGFyYW1zWzBdKTtcbiAgICByZXR1cm4gW2xvY2FsaXplZE5hbWVdLmNvbmNhdChwYXJhbXMuc2xpY2UoMSkpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgYW4gYXBwcm9wcmlhdGUgZGlzcGxheSBuYW1lLCBmaXJzdCBjaGVja2luZyAnZGF0YS1hcycgb3IgdGhlIHJlZ2lzdGVyZWQgJ3ByZXR0eU5hbWUnXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUuX2dldEZpZWxkRGlzcGxheU5hbWUgPSBmdW5jdGlvbiBfZ2V0RmllbGREaXNwbGF5TmFtZSAoZmllbGQpIHtcbiAgcmV0dXJuIGZpZWxkLmFsaWFzIHx8IERpY3Rpb25hcnlSZXNvbHZlci5nZXREcml2ZXIoKS5nZXRBdHRyaWJ1dGUodGhpcy5sb2NhbGUsIGZpZWxkLm5hbWUsIGZpZWxkLm5hbWUpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBwYXJhbXMgdG8gYW4gb2JqZWN0IHdpdGggbmFtZWQgcHJvcGVydGllcy5cbiAqIE9ubHkgd29ya3MgaWYgdGhlIHJ1bGUgaXMgY29uZmlndXJlZCB3aXRoIGEgcGFyYW1OYW1lcyBhcnJheS5cbiAqIFJldHVybnMgdGhlIHNhbWUgcGFyYW1zIGlmIGl0IGNhbm5vdCBjb252ZXJ0IGl0LlxuICovXG5WYWxpZGF0b3IucHJvdG90eXBlLl9jb252ZXJ0UGFyYW1BcnJheVRvT2JqID0gZnVuY3Rpb24gX2NvbnZlcnRQYXJhbUFycmF5VG9PYmogKHBhcmFtcywgcnVsZU5hbWUpIHtcbiAgdmFyIHBhcmFtTmFtZXMgPSBSdWxlQ29udGFpbmVyLmdldFBhcmFtTmFtZXMocnVsZU5hbWUpO1xuICBpZiAoIXBhcmFtTmFtZXMpIHtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgaWYgKGlzT2JqZWN0KHBhcmFtcykpIHtcbiAgICAvLyBjaGVjayBpZiB0aGUgb2JqZWN0IGlzIGVpdGhlciBhIGNvbmZpZyBvYmplY3Qgb3IgYSBzaW5nbGUgcGFyYW1ldGVyIHRoYXQgaXMgYW4gb2JqZWN0LlxuICAgIHZhciBoYXNLZXlzID0gcGFyYW1OYW1lcy5zb21lKGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBPYmplY3Qua2V5cyhwYXJhbXMpLmluZGV4T2YobmFtZSkgIT09IC0xOyB9KTtcbiAgICAvLyBpZiBpdCBoYXMgc29tZSBvZiB0aGUga2V5cywgcmV0dXJuIGl0IGFzIGlzLlxuICAgIGlmIChoYXNLZXlzKSB7XG4gICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cbiAgICAvLyBvdGhlcndpc2Ugd3JhcCB0aGUgb2JqZWN0IGluIGFuIGFycmF5LlxuICAgIHBhcmFtcyA9IFtwYXJhbXNdO1xuICB9XG5cbiAgLy8gUmVkdWNlIHRoZSBwYXJhbXNOYW1lcyB0byBhIHBhcmFtIG9iamVjdC5cbiAgcmV0dXJuIHBhcmFtcy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIHZhbHVlLCBpZHgpIHtcbiAgICBwcmV2W3BhcmFtTmFtZXNbaWR4XV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiBwcmV2O1xuICB9LCB7fSk7XG59O1xuXG4vKipcbiAqIFRlc3RzIGEgc2luZ2xlIGlucHV0IHZhbHVlIGFnYWluc3QgYSBydWxlLlxuICovXG5WYWxpZGF0b3IucHJvdG90eXBlLl90ZXN0ID0gZnVuY3Rpb24gX3Rlc3QgKGZpZWxkLCB2YWx1ZSwgcnVsZSkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciB2YWxpZGF0b3IgPSBSdWxlQ29udGFpbmVyLmdldFZhbGlkYXRvck1ldGhvZChydWxlLm5hbWUpO1xuICB2YXIgcGFyYW1zID0gQXJyYXkuaXNBcnJheShydWxlLnBhcmFtcykgPyB0b0FycmF5KHJ1bGUucGFyYW1zKSA6IHJ1bGUucGFyYW1zO1xuICBpZiAoIXBhcmFtcykge1xuICAgIHBhcmFtcyA9IFtdO1xuICB9XG5cbiAgdmFyIHRhcmdldE5hbWUgPSBudWxsO1xuICBpZiAoIXZhbGlkYXRvciB8fCB0eXBlb2YgdmFsaWRhdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGNyZWF0ZUVycm9yKChcIk5vIHN1Y2ggdmFsaWRhdG9yICdcIiArIChydWxlLm5hbWUpICsgXCInIGV4aXN0cy5cIikpKTtcbiAgfVxuXG4gIC8vIGhhcyBmaWVsZCBkZXBlbmRlbmNpZXMuXG4gIGlmIChydWxlLm9wdGlvbnMuaGFzVGFyZ2V0ICYmIGZpZWxkLmRlcGVuZGVuY2llcykge1xuICAgIHZhciB0YXJnZXQgPSBmaW5kKGZpZWxkLmRlcGVuZGVuY2llcywgZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQubmFtZSA9PT0gcnVsZS5uYW1lOyB9KTtcbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICB0YXJnZXROYW1lID0gdGFyZ2V0LmZpZWxkLmFsaWFzO1xuICAgICAgcGFyYW1zID0gW3RhcmdldC5maWVsZC52YWx1ZV0uY29uY2F0KHBhcmFtcy5zbGljZSgxKSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHJ1bGUubmFtZSA9PT0gJ3JlcXVpcmVkJyAmJiBmaWVsZC5yZWplY3RzRmFsc2UpIHtcbiAgICAvLyBpbnZhbGlkYXRlIGZhbHNlIGlmIG5vIGFyZ3Mgd2VyZSBzcGVjaWZpZWQgYW5kIHRoZSBmaWVsZCByZWplY3RzIGZhbHNlIGJ5IGRlZmF1bHQuXG4gICAgcGFyYW1zID0gcGFyYW1zLmxlbmd0aCA/IHBhcmFtcyA6IFt0cnVlXTtcbiAgfVxuXG4gIGlmIChydWxlLm9wdGlvbnMuaXNEYXRlKSB7XG4gICAgdmFyIGRhdGVGb3JtYXQgPSB0aGlzLl9nZXREYXRlRm9ybWF0KGZpZWxkLnJ1bGVzKTtcbiAgICBpZiAocnVsZS5uYW1lICE9PSAnZGF0ZV9mb3JtYXQnKSB7XG4gICAgICBwYXJhbXMucHVzaChkYXRlRm9ybWF0KTtcbiAgICB9XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gdmFsaWRhdG9yKHZhbHVlLCB0aGlzLl9jb252ZXJ0UGFyYW1BcnJheVRvT2JqKHBhcmFtcywgcnVsZS5uYW1lKSk7XG5cbiAgLy8gSWYgaXQgaXMgYSBwcm9taXNlLlxuICBpZiAoaXNDYWxsYWJsZShyZXN1bHQudGhlbikpIHtcbiAgICByZXR1cm4gcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHZhbHVlcykge1xuICAgICAgdmFyIGFsbFZhbGlkID0gdHJ1ZTtcbiAgICAgIHZhciBkYXRhID0ge307XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgIGFsbFZhbGlkID0gdmFsdWVzLmV2ZXJ5KGZ1bmN0aW9uICh0KSB7IHJldHVybiAoaXNPYmplY3QodCkgPyB0LnZhbGlkIDogdCk7IH0pO1xuICAgICAgfSBlbHNlIHsgLy8gSXMgYSBzaW5nbGUgb2JqZWN0L2Jvb2xlYW4uXG4gICAgICAgIGFsbFZhbGlkID0gaXNPYmplY3QodmFsdWVzKSA/IHZhbHVlcy52YWxpZCA6IHZhbHVlcztcbiAgICAgICAgZGF0YSA9IHZhbHVlcy5kYXRhO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogYWxsVmFsaWQsXG4gICAgICAgIGRhdGE6IHJlc3VsdC5kYXRhLFxuICAgICAgICBlcnJvcnM6IGFsbFZhbGlkID8gW10gOiBbdGhpcyQxLl9jcmVhdGVGaWVsZEVycm9yKGZpZWxkLCBydWxlLCBkYXRhLCB0YXJnZXROYW1lKV1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkpIHtcbiAgICByZXN1bHQgPSB7IHZhbGlkOiByZXN1bHQsIGRhdGE6IHt9IH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbGlkOiByZXN1bHQudmFsaWQsXG4gICAgZGF0YTogcmVzdWx0LmRhdGEsXG4gICAgZXJyb3JzOiByZXN1bHQudmFsaWQgPyBbXSA6IFt0aGlzLl9jcmVhdGVGaWVsZEVycm9yKGZpZWxkLCBydWxlLCByZXN1bHQuZGF0YSwgdGFyZ2V0TmFtZSldXG4gIH07XG59O1xuXG4vKipcbiAqIE1lcmdlcyBhIHZhbGlkYXRvciBvYmplY3QgaW50byB0aGUgUlVMRVMgYW5kIE1lc3NhZ2VzLlxuICovXG5WYWxpZGF0b3IuX21lcmdlID0gZnVuY3Rpb24gX21lcmdlIChuYW1lLCByZWYpIHtcbiAgICB2YXIgdmFsaWRhdG9yID0gcmVmLnZhbGlkYXRvcjtcbiAgICB2YXIgb3B0aW9ucyA9IHJlZi5vcHRpb25zO1xuICAgIHZhciBwYXJhbU5hbWVzID0gcmVmLnBhcmFtTmFtZXM7XG5cbiAgdmFyIHZhbGlkYXRlID0gaXNDYWxsYWJsZSh2YWxpZGF0b3IpID8gdmFsaWRhdG9yIDogdmFsaWRhdG9yLnZhbGlkYXRlO1xuICBpZiAodmFsaWRhdG9yLmdldE1lc3NhZ2UpIHtcbiAgICBEaWN0aW9uYXJ5UmVzb2x2ZXIuZ2V0RHJpdmVyKCkuc2V0TWVzc2FnZShWYWxpZGF0b3IubG9jYWxlLCBuYW1lLCB2YWxpZGF0b3IuZ2V0TWVzc2FnZSk7XG4gIH1cblxuICBSdWxlQ29udGFpbmVyLmFkZChuYW1lLCB7XG4gICAgdmFsaWRhdGU6IHZhbGlkYXRlLFxuICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgcGFyYW1OYW1lczogcGFyYW1OYW1lc1xuICB9KTtcbn07XG5cbi8qKlxuICogR3VhcmRzIGZyb20gZXh0ZW5zaW9uIHZpb2xhdGlvbnMuXG4gKi9cblZhbGlkYXRvci5fZ3VhcmRFeHRlbmQgPSBmdW5jdGlvbiBfZ3VhcmRFeHRlbmQgKG5hbWUsIHZhbGlkYXRvcikge1xuICBpZiAoaXNDYWxsYWJsZSh2YWxpZGF0b3IpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFpc0NhbGxhYmxlKHZhbGlkYXRvci52YWxpZGF0ZSkpIHtcbiAgICB0aHJvdyBjcmVhdGVFcnJvcihcbiAgICAgIChcIkV4dGVuc2lvbiBFcnJvcjogVGhlIHZhbGlkYXRvciAnXCIgKyBuYW1lICsgXCInIG11c3QgYmUgYSBmdW5jdGlvbiBvciBoYXZlIGEgJ3ZhbGlkYXRlJyBtZXRob2QuXCIpXG4gICAgKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgRmllbGQgRXJyb3IgT2JqZWN0LlxuICovXG5WYWxpZGF0b3IucHJvdG90eXBlLl9jcmVhdGVGaWVsZEVycm9yID0gZnVuY3Rpb24gX2NyZWF0ZUZpZWxkRXJyb3IgKGZpZWxkLCBydWxlLCBkYXRhLCB0YXJnZXROYW1lKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgcmV0dXJuIHtcbiAgICBpZDogZmllbGQuaWQsXG4gICAgdm1JZDogZmllbGQudm1JZCxcbiAgICBmaWVsZDogZmllbGQubmFtZSxcbiAgICBtc2c6IHRoaXMuX2Zvcm1hdEVycm9yTWVzc2FnZShmaWVsZCwgcnVsZSwgZGF0YSwgdGFyZ2V0TmFtZSksXG4gICAgcnVsZTogcnVsZS5uYW1lLFxuICAgIHNjb3BlOiBmaWVsZC5zY29wZSxcbiAgICByZWdlbmVyYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcyQxLl9mb3JtYXRFcnJvck1lc3NhZ2UoZmllbGQsIHJ1bGUsIGRhdGEsIHRhcmdldE5hbWUpO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVHJpZXMgZGlmZmVyZW50IHN0cmF0ZWdpZXMgdG8gZmluZCBhIGZpZWxkLlxuICovXG5WYWxpZGF0b3IucHJvdG90eXBlLl9yZXNvbHZlRmllbGQgPSBmdW5jdGlvbiBfcmVzb2x2ZUZpZWxkIChuYW1lLCBzY29wZSwgdWlkKSB7XG4gIGlmIChuYW1lWzBdID09PSAnIycpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZHMuZmluZEJ5SWQobmFtZS5zbGljZSgxKSk7XG4gIH1cblxuICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHNjb3BlKSkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcy5maW5kKHsgbmFtZTogbmFtZSwgc2NvcGU6IHNjb3BlLCB2bUlkOiB1aWQgfSk7XG4gIH1cblxuICBpZiAoaW5jbHVkZXMobmFtZSwgJy4nKSkge1xuICAgIHZhciByZWYgPSBuYW1lLnNwbGl0KCcuJyk7XG4gICAgICB2YXIgZmllbGRTY29wZSA9IHJlZlswXTtcbiAgICAgIHZhciBmaWVsZE5hbWUgPSByZWYuc2xpY2UoMSk7XG4gICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZHMuZmluZCh7IG5hbWU6IGZpZWxkTmFtZS5qb2luKCcuJyksIHNjb3BlOiBmaWVsZFNjb3BlLCB2bUlkOiB1aWQgfSk7XG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXMuZmllbGRzLmZpbmQoeyBuYW1lOiBuYW1lLCBzY29wZTogbnVsbCwgdm1JZDogdWlkIH0pO1xufTtcblxuLyoqXG4gKiBIYW5kbGVzIHdoZW4gYSBmaWVsZCBpcyBub3QgZm91bmQuXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUuX2hhbmRsZUZpZWxkTm90Rm91bmQgPSBmdW5jdGlvbiBfaGFuZGxlRmllbGROb3RGb3VuZCAobmFtZSwgc2NvcGUpIHtcbiAgdmFyIGZ1bGxOYW1lID0gaXNOdWxsT3JVbmRlZmluZWQoc2NvcGUpID8gbmFtZSA6IChcIlwiICsgKCFpc051bGxPclVuZGVmaW5lZChzY29wZSkgPyBzY29wZSArICcuJyA6ICcnKSArIG5hbWUpO1xuXG4gIHJldHVybiBQcm9taXNlLnJlamVjdChjcmVhdGVFcnJvcihcbiAgICAoXCJWYWxpZGF0aW5nIGEgbm9uLWV4aXN0ZW50IGZpZWxkOiBcXFwiXCIgKyBmdWxsTmFtZSArIFwiXFxcIi4gVXNlIFxcXCJhdHRhY2goKVxcXCIgZmlyc3QuXCIpXG4gICkpO1xufTtcblxuLyoqXG4gKiBIYW5kbGVzIHZhbGlkYXRpb24gcmVzdWx0cy5cbiAqL1xuVmFsaWRhdG9yLnByb3RvdHlwZS5faGFuZGxlVmFsaWRhdGlvblJlc3VsdHMgPSBmdW5jdGlvbiBfaGFuZGxlVmFsaWRhdGlvblJlc3VsdHMgKHJlc3VsdHMsIHZtSWQpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgbWF0Y2hlcnMgPSByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVzdWx0KSB7IHJldHVybiAoeyBpZDogcmVzdWx0LmlkIH0pOyB9KTtcbiAgdGhpcy5lcnJvcnMucmVtb3ZlQnlJZChtYXRjaGVycy5tYXAoZnVuY3Rpb24gKG0pIHsgcmV0dXJuIG0uaWQ7IH0pKTtcbiAgLy8gcmVtb3ZlIGJ5IG5hbWUgYW5kIHNjb3BlIHRvIHJlbW92ZSBhbnkgY3VzdG9tIGVycm9ycyBhZGRlZC5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICB0aGlzJDEuZXJyb3JzLnJlbW92ZShyZXN1bHQuZmllbGQsIHJlc3VsdC5zY29wZSwgdm1JZCk7XG4gIH0pO1xuICB2YXIgYWxsRXJyb3JzID0gcmVzdWx0cy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cnIpIHtcbiAgICBwcmV2LnB1c2guYXBwbHkocHJldiwgY3Vyci5lcnJvcnMpO1xuXG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIFtdKTtcblxuICB0aGlzLmVycm9ycy5hZGQoYWxsRXJyb3JzKTtcblxuICAvLyBoYW5kbGUgZmxhZ3MuXG4gIHRoaXMuZmllbGRzLmZpbHRlcihtYXRjaGVycykuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICB2YXIgcmVzdWx0ID0gZmluZChyZXN1bHRzLCBmdW5jdGlvbiAocikgeyByZXR1cm4gci5pZCA9PT0gZmllbGQuaWQ7IH0pO1xuICAgIGZpZWxkLnNldEZsYWdzKHtcbiAgICAgIHBlbmRpbmc6IGZhbHNlLFxuICAgICAgdmFsaWQ6IHJlc3VsdC52YWxpZCxcbiAgICAgIHZhbGlkYXRlZDogdHJ1ZVxuICAgIH0pO1xuICB9KTtcbn07XG5cblZhbGlkYXRvci5wcm90b3R5cGUuX3Nob3VsZFNraXAgPSBmdW5jdGlvbiBfc2hvdWxkU2tpcCAoZmllbGQsIHZhbHVlKSB7XG4gIC8vIGZpZWxkIGlzIGNvbmZpZ3VyZWQgdG8gcnVuIHRocm91Z2ggdGhlIHBpcGVsaW5lIHJlZ2FyZGxlc3NcbiAgaWYgKGZpZWxkLmJhaWxzID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGRpc2FibGVkIGZpZWxkcyBhcmUgc2tpcHBlZCBpZiB1c2VDb25zdHJhaW50QXR0cnMgaXMgZW5hYmxlZCBpbiBjb25maWdcbiAgaWYgKGZpZWxkLmlzRGlzYWJsZWQgJiYgZ2V0Q29uZmlnKCkudXNlQ29uc3RyYWludEF0dHJzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBza2lwIGlmIHRoZSBmaWVsZCBpcyBub3QgcmVxdWlyZWQgYW5kIGhhcyBhbiBlbXB0eSB2YWx1ZS5cbiAgcmV0dXJuICFmaWVsZC5pc1JlcXVpcmVkICYmIChpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgdmFsdWUgPT09ICcnIHx8IGlzRW1wdHlBcnJheSh2YWx1ZSkpO1xufTtcblxuVmFsaWRhdG9yLnByb3RvdHlwZS5fc2hvdWxkQmFpbCA9IGZ1bmN0aW9uIF9zaG91bGRCYWlsIChmaWVsZCkge1xuICAvLyBpZiB0aGUgZmllbGQgd2FzIGNvbmZpZ3VyZWQgZXhwbGljaXRseS5cbiAgaWYgKGZpZWxkLmJhaWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZmllbGQuYmFpbHM7XG4gIH1cblxuICByZXR1cm4gdGhpcy5mYXN0RXhpdDtcbn07XG5cbi8qKlxuICogU3RhcnRzIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MuXG4gKi9cblZhbGlkYXRvci5wcm90b3R5cGUuX3ZhbGlkYXRlID0gZnVuY3Rpb24gX3ZhbGlkYXRlIChmaWVsZCwgdmFsdWUsIHJlZikge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgICB2YXIgaW5pdGlhbCA9IHJlZi5pbml0aWFsO1xuXG4gIHZhciByZXF1aXJlUnVsZXMgPSBPYmplY3Qua2V5cyhmaWVsZC5ydWxlcykuZmlsdGVyKFJ1bGVDb250YWluZXIuaXNSZXF1aXJlUnVsZSk7XG5cbiAgZmllbGQuZm9yY2VSZXF1aXJlZCA9IGZhbHNlO1xuICByZXF1aXJlUnVsZXMuZm9yRWFjaChmdW5jdGlvbiAocnVsZSkge1xuICAgIHZhciBydWxlT3B0aW9ucyA9IFJ1bGVDb250YWluZXIuZ2V0T3B0aW9ucyhydWxlKTtcbiAgICB2YXIgcmVzdWx0ID0gdGhpcyQxLl90ZXN0KGZpZWxkLCB2YWx1ZSwgeyBuYW1lOiBydWxlLCBwYXJhbXM6IGZpZWxkLnJ1bGVzW3J1bGVdLCBvcHRpb25zOiBydWxlT3B0aW9ucyB9KTtcblxuICAgIGlmIChpc0NhbGxhYmxlKHJlc3VsdC50aGVuKSkgeyB0aHJvdyBjcmVhdGVFcnJvcignUmVxdWlyZSBydWxlcyBjYW5ub3QgYmUgYXN5bmMnKTsgfVxuICAgIGlmICghaXNPYmplY3QocmVzdWx0KSkgeyB0aHJvdyBjcmVhdGVFcnJvcignUmVxdWlyZSBydWxlcyBoYXMgdG8gcmV0dXJuIGFuIG9iamVjdCAoc2VlIGRvY3MpJyk7IH1cblxuICAgIGlmIChyZXN1bHQuZGF0YS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xuICAgICAgZmllbGQuZm9yY2VSZXF1aXJlZCA9IHRydWU7XG4gICAgfVxuICB9KTtcblxuICBpZiAodGhpcy5fc2hvdWxkU2tpcChmaWVsZCwgdmFsdWUpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHZhbGlkOiB0cnVlLCBpZDogZmllbGQuaWQsIGZpZWxkOiBmaWVsZC5uYW1lLCBzY29wZTogZmllbGQuc2NvcGUsIGVycm9yczogW10gfSk7XG4gIH1cblxuICB2YXIgcHJvbWlzZXMgPSBbXTtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgaXNFeGl0RWFybHkgPSBmYWxzZTtcbiAgaWYgKGlzQ2FsbGFibGUoZmllbGQuY2hlY2tWYWx1ZUNoYW5nZWQpKSB7XG4gICAgZmllbGQuZmxhZ3MuY2hhbmdlZCA9IGZpZWxkLmNoZWNrVmFsdWVDaGFuZ2VkKCk7XG4gIH1cblxuICAvLyB1c2Ugb2YgJy5zb21lKCknIGlzIHRvIGJyZWFrIGl0ZXJhdGlvbiBpbiBtaWRkbGUgYnkgcmV0dXJuaW5nIHRydWVcbiAgT2JqZWN0LmtleXMoZmllbGQucnVsZXMpLmZpbHRlcihmdW5jdGlvbiAocnVsZSkge1xuICAgIGlmICghaW5pdGlhbCB8fCAhUnVsZUNvbnRhaW5lci5oYXMocnVsZSkpIHsgcmV0dXJuIHRydWU7IH1cblxuICAgIHJldHVybiBSdWxlQ29udGFpbmVyLmlzSW1tZWRpYXRlKHJ1bGUpO1xuICB9KS5zb21lKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgdmFyIHJ1bGVPcHRpb25zID0gUnVsZUNvbnRhaW5lci5nZXRPcHRpb25zKHJ1bGUpO1xuICAgIHZhciByZXN1bHQgPSB0aGlzJDEuX3Rlc3QoZmllbGQsIHZhbHVlLCB7IG5hbWU6IHJ1bGUsIHBhcmFtczogZmllbGQucnVsZXNbcnVsZV0sIG9wdGlvbnM6IHJ1bGVPcHRpb25zIH0pO1xuICAgIGlmIChpc0NhbGxhYmxlKHJlc3VsdC50aGVuKSkge1xuICAgICAgcHJvbWlzZXMucHVzaChyZXN1bHQpO1xuICAgIH0gZWxzZSBpZiAoIXJlc3VsdC52YWxpZCAmJiB0aGlzJDEuX3Nob3VsZEJhaWwoZmllbGQpKSB7XG4gICAgICBlcnJvcnMucHVzaC5hcHBseShlcnJvcnMsIHJlc3VsdC5lcnJvcnMpO1xuICAgICAgaXNFeGl0RWFybHkgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBwcm9taXNpZnkgdGhlIHJlc3VsdC5cbiAgICAgIHByb21pc2VzLnB1c2gobmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHJlc29sdmUocmVzdWx0KTsgfSkpO1xuICAgIH1cblxuICAgIHJldHVybiBpc0V4aXRFYXJseTtcbiAgfSk7XG5cbiAgaWYgKGlzRXhpdEVhcmx5KSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHZhbGlkOiBmYWxzZSwgZXJyb3JzOiBlcnJvcnMsIGlkOiBmaWVsZC5pZCwgZmllbGQ6IGZpZWxkLm5hbWUsIHNjb3BlOiBmaWVsZC5zY29wZSB9KTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbihmdW5jdGlvbiAocmVzdWx0cykge1xuICAgIHJldHVybiByZXN1bHRzLnJlZHVjZShmdW5jdGlvbiAocHJldiwgdikge1xuICAgICAgICB2YXIgcmVmO1xuXG4gICAgICBpZiAoIXYudmFsaWQpIHtcbiAgICAgICAgKHJlZiA9IHByZXYuZXJyb3JzKS5wdXNoLmFwcGx5KHJlZiwgdi5lcnJvcnMpO1xuICAgICAgfVxuXG4gICAgICBwcmV2LnZhbGlkID0gcHJldi52YWxpZCAmJiB2LnZhbGlkO1xuXG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCB7IHZhbGlkOiB0cnVlLCBlcnJvcnM6IGVycm9ycywgaWQ6IGZpZWxkLmlkLCBmaWVsZDogZmllbGQubmFtZSwgc2NvcGU6IGZpZWxkLnNjb3BlIH0pO1xuICB9KTtcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBWYWxpZGF0b3IucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMkNCApO1xuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFZhbGlkYXRvciwgc3RhdGljQWNjZXNzb3JzJDEgKTtcblxuLy8gXG5cbnZhciBub3JtYWxpemVWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHZhbHVlKS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGtleSkge1xuICAgICAgcHJldltrZXldID0gbm9ybWFsaXplVmFsdWUodmFsdWVba2V5XSk7XG5cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZSgnezB9JywgWyd7MX0nLCAnezJ9JywgJ3szfSddKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbnZhciBub3JtYWxpemVGb3JtYXQgPSBmdW5jdGlvbiAobG9jYWxlKSB7XG4gIC8vIG5vcm1hbGl6ZSBtZXNzYWdlc1xuICB2YXIgZGljdGlvbmFyeSA9IHt9O1xuICBpZiAobG9jYWxlLm1lc3NhZ2VzKSB7XG4gICAgZGljdGlvbmFyeS5tZXNzYWdlcyA9IG5vcm1hbGl6ZVZhbHVlKGxvY2FsZS5tZXNzYWdlcyk7XG4gIH1cblxuICBpZiAobG9jYWxlLmN1c3RvbSkge1xuICAgIGRpY3Rpb25hcnkuY3VzdG9tID0gbm9ybWFsaXplVmFsdWUobG9jYWxlLmN1c3RvbSk7XG4gIH1cblxuICBpZiAobG9jYWxlLmF0dHJpYnV0ZXMpIHtcbiAgICBkaWN0aW9uYXJ5LmF0dHJpYnV0ZXMgPSBsb2NhbGUuYXR0cmlidXRlcztcbiAgfVxuXG4gIGlmICghaXNOdWxsT3JVbmRlZmluZWQobG9jYWxlLmRhdGVGb3JtYXQpKSB7XG4gICAgZGljdGlvbmFyeS5kYXRlRm9ybWF0ID0gbG9jYWxlLmRhdGVGb3JtYXQ7XG4gIH1cblxuICByZXR1cm4gZGljdGlvbmFyeTtcbn07XG5cbnZhciBJMThuRGljdGlvbmFyeSA9IGZ1bmN0aW9uIEkxOG5EaWN0aW9uYXJ5IChpMThuLCByb290S2V5KSB7XG4gIHRoaXMuaTE4biA9IGkxOG47XG4gIHRoaXMucm9vdEtleSA9IHJvb3RLZXk7XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzJDUgPSB7IGxvY2FsZTogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkNS5sb2NhbGUuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5pMThuLmxvY2FsZTtcbn07XG5cbnByb3RvdHlwZUFjY2Vzc29ycyQ1LmxvY2FsZS5zZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgd2FybignQ2Fubm90IHNldCBsb2NhbGUgZnJvbSB0aGUgdmFsaWRhdG9yIHdoZW4gdXNpbmcgdnVlLWkxOG4sIHVzZSBpMThuLmxvY2FsZSBzZXR0ZXIgaW5zdGVhZCcpO1xufTtcblxuSTE4bkRpY3Rpb25hcnkucHJvdG90eXBlLmdldERhdGVGb3JtYXQgPSBmdW5jdGlvbiBnZXREYXRlRm9ybWF0IChsb2NhbGUpIHtcbiAgcmV0dXJuIHRoaXMuaTE4bi5nZXREYXRlVGltZUZvcm1hdChsb2NhbGUgfHwgdGhpcy5sb2NhbGUpO1xufTtcblxuSTE4bkRpY3Rpb25hcnkucHJvdG90eXBlLnNldERhdGVGb3JtYXQgPSBmdW5jdGlvbiBzZXREYXRlRm9ybWF0IChsb2NhbGUsIHZhbHVlKSB7XG4gIHRoaXMuaTE4bi5zZXREYXRlVGltZUZvcm1hdChsb2NhbGUgfHwgdGhpcy5sb2NhbGUsIHZhbHVlKTtcbn07XG5cbkkxOG5EaWN0aW9uYXJ5LnByb3RvdHlwZS5nZXRNZXNzYWdlID0gZnVuY3Rpb24gZ2V0TWVzc2FnZSAoXywga2V5LCBkYXRhKSB7XG4gIHZhciBwYXRoID0gKHRoaXMucm9vdEtleSkgKyBcIi5tZXNzYWdlcy5cIiArIGtleTtcbiAgdmFyIGRhdGFPcHRpb25zID0gZGF0YTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIGRhdGFPcHRpb25zID0gW10uY29uY2F0LmFwcGx5KFtdLCBkYXRhKTtcbiAgfVxuXG4gIGlmICh0aGlzLmkxOG4udGUocGF0aCkpIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQocGF0aCwgZGF0YU9wdGlvbnMpO1xuICB9XG5cbiAgLy8gZmFsbGJhY2sgdG8gdGhlIGZhbGxiYWNrIG1lc3NhZ2VcbiAgaWYgKHRoaXMuaTE4bi50ZShwYXRoLCB0aGlzLmkxOG4uZmFsbGJhY2tMb2NhbGUpKSB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KHBhdGgsIHRoaXMuaTE4bi5mYWxsYmFja0xvY2FsZSwgZGF0YU9wdGlvbnMpO1xuICB9XG5cbiAgLy8gZmFsbGJhY2sgdG8gdGhlIHJvb3QgbWVzc2FnZVxuICByZXR1cm4gdGhpcy5pMThuLnQoKCh0aGlzLnJvb3RLZXkpICsgXCIubWVzc2FnZXMuX2RlZmF1bHRcIiksIGRhdGFPcHRpb25zKTtcbn07XG5cbkkxOG5EaWN0aW9uYXJ5LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUgKF8sIGtleSwgZmFsbGJhY2spIHtcbiAgICBpZiAoIGZhbGxiYWNrID09PSB2b2lkIDAgKSBmYWxsYmFjayA9ICcnO1xuXG4gIHZhciBwYXRoID0gKHRoaXMucm9vdEtleSkgKyBcIi5hdHRyaWJ1dGVzLlwiICsga2V5O1xuICBpZiAodGhpcy5pMThuLnRlKHBhdGgpKSB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KHBhdGgpO1xuICB9XG5cbiAgcmV0dXJuIGZhbGxiYWNrO1xufTtcblxuSTE4bkRpY3Rpb25hcnkucHJvdG90eXBlLmdldEZpZWxkTWVzc2FnZSA9IGZ1bmN0aW9uIGdldEZpZWxkTWVzc2FnZSAoXywgZmllbGQsIGtleSwgZGF0YSkge1xuICB2YXIgcGF0aCA9ICh0aGlzLnJvb3RLZXkpICsgXCIuY3VzdG9tLlwiICsgZmllbGQgKyBcIi5cIiArIGtleTtcbiAgaWYgKHRoaXMuaTE4bi50ZShwYXRoKSkge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChwYXRoLCBkYXRhKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmdldE1lc3NhZ2UoXywga2V5LCBkYXRhKTtcbn07XG5cbkkxOG5EaWN0aW9uYXJ5LnByb3RvdHlwZS5tZXJnZSA9IGZ1bmN0aW9uIG1lcmdlJDEgKGRpY3Rpb25hcnkpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBPYmplY3Qua2V5cyhkaWN0aW9uYXJ5KS5mb3JFYWNoKGZ1bmN0aW9uIChsb2NhbGVLZXkpIHtcbiAgICAgIHZhciBvYmo7XG5cbiAgICAvLyBpMThuIGRvZXNuJ3QgZGVlcCBtZXJnZVxuICAgIC8vIGZpcnN0IGNsb25lIHRoZSBleGlzdGluZyBsb2NhbGUgKGF2b2lkIG11dGF0aW9ucyB0byBsb2NhbGUpXG4gICAgdmFyIGNsb25lID0gbWVyZ2Uoe30sIGdldFBhdGgoKGxvY2FsZUtleSArIFwiLlwiICsgKHRoaXMkMS5yb290S2V5KSksIHRoaXMkMS5pMThuLm1lc3NhZ2VzLCB7fSkpO1xuICAgIC8vIE1lcmdlIGNsb25lZCBsb2NhbGUgd2l0aCBuZXcgb25lXG4gICAgdmFyIGxvY2FsZSA9IG1lcmdlKGNsb25lLCBub3JtYWxpemVGb3JtYXQoZGljdGlvbmFyeVtsb2NhbGVLZXldKSk7XG4gICAgdGhpcyQxLmkxOG4ubWVyZ2VMb2NhbGVNZXNzYWdlKGxvY2FsZUtleSwgKCBvYmogPSB7fSwgb2JqW3RoaXMkMS5yb290S2V5XSA9IGxvY2FsZSwgb2JqICkpO1xuICAgIGlmIChsb2NhbGUuZGF0ZUZvcm1hdCkge1xuICAgICAgdGhpcyQxLmkxOG4uc2V0RGF0ZVRpbWVGb3JtYXQobG9jYWxlS2V5LCBsb2NhbGUuZGF0ZUZvcm1hdCk7XG4gICAgfVxuICB9KTtcbn07XG5cbkkxOG5EaWN0aW9uYXJ5LnByb3RvdHlwZS5zZXRNZXNzYWdlID0gZnVuY3Rpb24gc2V0TWVzc2FnZSAobG9jYWxlLCBrZXksIHZhbHVlKSB7XG4gICAgdmFyIG9iaiwgb2JqJDE7XG5cbiAgdGhpcy5tZXJnZSgoIG9iaiQxID0ge30sIG9iaiQxW2xvY2FsZV0gPSB7XG4gICAgICBtZXNzYWdlczogKCBvYmogPSB7fSwgb2JqW2tleV0gPSB2YWx1ZSwgb2JqIClcbiAgICB9LCBvYmokMSApKTtcbn07XG5cbkkxOG5EaWN0aW9uYXJ5LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBzZXRBdHRyaWJ1dGUgKGxvY2FsZSwga2V5LCB2YWx1ZSkge1xuICAgIHZhciBvYmosIG9iaiQxO1xuXG4gIHRoaXMubWVyZ2UoKCBvYmokMSA9IHt9LCBvYmokMVtsb2NhbGVdID0ge1xuICAgICAgYXR0cmlidXRlczogKCBvYmogPSB7fSwgb2JqW2tleV0gPSB2YWx1ZSwgb2JqIClcbiAgICB9LCBvYmokMSApKTtcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBJMThuRGljdGlvbmFyeS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyQ1ICk7XG5cbnZhciBhZ2dyZXNzaXZlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgb246IFsnaW5wdXQnXVxufSk7IH07XG5cbnZhciBsYXp5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgb246IFsnY2hhbmdlJ11cbn0pOyB9O1xuXG52YXIgZWFnZXIgPSBmdW5jdGlvbiAocmVmKSB7XG4gIHZhciBlcnJvcnMgPSByZWYuZXJyb3JzO1xuXG4gIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uOiBbJ2lucHV0J11cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbjogWydjaGFuZ2UnLCAnYmx1ciddXG4gIH07XG59O1xuXG52YXIgcGFzc2l2ZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gIG9uOiBbXVxufSk7IH07XG5cbnZhciBtb2RlcyA9IHtcbiAgYWdncmVzc2l2ZTogYWdncmVzc2l2ZSxcbiAgZWFnZXI6IGVhZ2VyLFxuICBwYXNzaXZlOiBwYXNzaXZlLFxuICBsYXp5OiBsYXp5XG59O1xuXG4vLyBcblxudmFyIFZ1ZTtcbnZhciBwZW5kaW5nUGx1Z2lucztcbnZhciBwbHVnaW5JbnN0YW5jZTtcblxudmFyIFZlZVZhbGlkYXRlJDEgPSBmdW5jdGlvbiBWZWVWYWxpZGF0ZSAoY29uZmlnLCBfVnVlKSB7XG4gIHRoaXMuY29uZmlndXJlKGNvbmZpZyk7XG4gIHBsdWdpbkluc3RhbmNlID0gdGhpcztcbiAgaWYgKF9WdWUpIHtcbiAgICBWdWUgPSBfVnVlO1xuICB9XG4gIHRoaXMuX3ZhbGlkYXRvciA9IHNldFZhbGlkYXRvcihcbiAgICBuZXcgVmFsaWRhdG9yKG51bGwsIHsgZmFzdEV4aXQ6IGNvbmZpZyAmJiBjb25maWcuZmFzdEV4aXQgfSwgdGhpcylcbiAgKTtcbiAgdGhpcy5faW5pdFZNKHRoaXMuY29uZmlnKTtcbiAgdGhpcy5faW5pdEkxOG4odGhpcy5jb25maWcpO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyQ2ID0geyBpMThuRHJpdmVyOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LGNvbmZpZzogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xudmFyIHN0YXRpY0FjY2Vzc29ycyQyID0geyBpMThuRHJpdmVyOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LGNvbmZpZzogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5WZWVWYWxpZGF0ZSQxLnNldEkxOG5Ecml2ZXIgPSBmdW5jdGlvbiBzZXRJMThuRHJpdmVyIChkcml2ZXIsIGluc3RhbmNlKSB7XG4gIERpY3Rpb25hcnlSZXNvbHZlci5zZXREcml2ZXIoZHJpdmVyLCBpbnN0YW5jZSk7XG59O1xuXG5WZWVWYWxpZGF0ZSQxLmNvbmZpZ3VyZSA9IGZ1bmN0aW9uIGNvbmZpZ3VyZSAoY2ZnKSB7XG4gIHNldENvbmZpZyhjZmcpO1xufTtcblxuVmVlVmFsaWRhdGUkMS5zZXRNb2RlID0gZnVuY3Rpb24gc2V0TW9kZSAobW9kZSwgaW1wbGVtZW50YXRpb24pIHtcbiAgc2V0Q29uZmlnKHsgbW9kZTogbW9kZSB9KTtcbiAgaWYgKCFpbXBsZW1lbnRhdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghaXNDYWxsYWJsZShpbXBsZW1lbnRhdGlvbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgbW9kZSBpbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIG1vZGVzW21vZGVdID0gaW1wbGVtZW50YXRpb247XG59O1xuXG5WZWVWYWxpZGF0ZSQxLnVzZSA9IGZ1bmN0aW9uIHVzZSAocGx1Z2luLCBvcHRpb25zKSB7XG4gICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgaWYgKCFpc0NhbGxhYmxlKHBsdWdpbikpIHtcbiAgICByZXR1cm4gd2FybignVGhlIHBsdWdpbiBtdXN0IGJlIGEgY2FsbGFibGUgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIC8vIERvbid0IGluc3RhbGwgcGx1Z2lucyB1bnRpbCB2ZWUtdmFsaWRhdGUgaXMgaW5zdGFsbGVkLlxuICBpZiAoIXBsdWdpbkluc3RhbmNlKSB7XG4gICAgaWYgKCFwZW5kaW5nUGx1Z2lucykge1xuICAgICAgcGVuZGluZ1BsdWdpbnMgPSBbXTtcbiAgICB9XG4gICAgcGVuZGluZ1BsdWdpbnMucHVzaCh7IHBsdWdpbjogcGx1Z2luLCBvcHRpb25zOiBvcHRpb25zIH0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHBsdWdpbih7IFZhbGlkYXRvcjogVmFsaWRhdG9yLCBFcnJvckJhZzogRXJyb3JCYWcsIFJ1bGVzOiBWYWxpZGF0b3IucnVsZXMgfSwgb3B0aW9ucyk7XG59O1xuVmVlVmFsaWRhdGUkMS5pbnN0YWxsID0gZnVuY3Rpb24gaW5zdGFsbCAoX1Z1ZSwgb3B0cykge1xuICBpZiAoVnVlICYmIF9WdWUgPT09IFZ1ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuKCdhbHJlYWR5IGluc3RhbGxlZCwgVnVlLnVzZShWZWVWYWxpZGF0ZSkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UuJyk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIFZ1ZSA9IF9WdWU7XG4gIHBsdWdpbkluc3RhbmNlID0gbmV3IFZlZVZhbGlkYXRlJDEob3B0cyk7XG4gIC8vIGluamVjdCB0aGUgcGx1Z2luIGNvbnRhaW5lciBzdGF0aWNhbGx5IGludG8gdGhlIHZhbGlkYXRvciBjbGFzc1xuICBWYWxpZGF0b3IuJHZlZSA9IHBsdWdpbkluc3RhbmNlO1xuXG4gIGRldGVjdFBhc3NpdmVTdXBwb3J0KCk7XG5cbiAgVnVlLm1peGluKG1peGluKTtcbiAgVnVlLmRpcmVjdGl2ZSgndmFsaWRhdGUnLCBkaXJlY3RpdmUpO1xuICBpZiAocGVuZGluZ1BsdWdpbnMpIHtcbiAgICBwZW5kaW5nUGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgdmFyIHBsdWdpbiA9IHJlZi5wbHVnaW47XG4gICAgICAgIHZhciBvcHRpb25zID0gcmVmLm9wdGlvbnM7XG5cbiAgICAgIFZlZVZhbGlkYXRlJDEudXNlKHBsdWdpbiwgb3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcGVuZGluZ1BsdWdpbnMgPSBudWxsO1xuICB9XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkNi5pMThuRHJpdmVyLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIERpY3Rpb25hcnlSZXNvbHZlci5nZXREcml2ZXIoKTtcbn07XG5cbnN0YXRpY0FjY2Vzc29ycyQyLmkxOG5Ecml2ZXIuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gRGljdGlvbmFyeVJlc29sdmVyLmdldERyaXZlcigpO1xufTtcblxucHJvdG90eXBlQWNjZXNzb3JzJDYuY29uZmlnLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGdldENvbmZpZygpO1xufTtcblxuc3RhdGljQWNjZXNzb3JzJDIuY29uZmlnLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGdldENvbmZpZygpO1xufTtcblxuVmVlVmFsaWRhdGUkMS5wcm90b3R5cGUuX2luaXRWTSA9IGZ1bmN0aW9uIF9pbml0Vk0gKGNvbmZpZykge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHRoaXMuX3ZtID0gbmV3IFZ1ZSh7XG4gICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgIGVycm9yczogdGhpcyQxLl92YWxpZGF0b3IuZXJyb3JzLFxuICAgICAgZmllbGRzOiB0aGlzJDEuX3ZhbGlkYXRvci5maWVsZHNcbiAgICB9KTsgfVxuICB9KTtcbn07XG5cblZlZVZhbGlkYXRlJDEucHJvdG90eXBlLl9pbml0STE4biA9IGZ1bmN0aW9uIF9pbml0STE4biAoY29uZmlnKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIGRpY3Rpb25hcnkgPSBjb25maWcuZGljdGlvbmFyeTtcbiAgICB2YXIgaTE4biA9IGNvbmZpZy5pMThuO1xuICAgIHZhciBpMThuUm9vdEtleSA9IGNvbmZpZy5pMThuUm9vdEtleTtcbiAgICB2YXIgbG9jYWxlID0gY29uZmlnLmxvY2FsZTtcbiAgdmFyIG9uTG9jYWxlQ2hhbmdlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZGljdGlvbmFyeSkge1xuICAgICAgdGhpcyQxLmkxOG5Ecml2ZXIubWVyZ2UoZGljdGlvbmFyeSk7XG4gICAgfVxuXG4gICAgdGhpcyQxLl92YWxpZGF0b3IuZXJyb3JzLnJlZ2VuZXJhdGUoKTtcbiAgfTtcblxuICAvLyBpMTggaXMgYmVpbmcgdXNlZCBmb3IgbG9jYWxpemF0aW9uLlxuICBpZiAoaTE4bikge1xuICAgIFZlZVZhbGlkYXRlJDEuc2V0STE4bkRyaXZlcignaTE4bicsIG5ldyBJMThuRGljdGlvbmFyeShpMThuLCBpMThuUm9vdEtleSkpO1xuICAgIGkxOG4uX3ZtLiR3YXRjaCgnbG9jYWxlJywgb25Mb2NhbGVDaGFuZ2VkKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRoaXMuX3ZtLiRvbignbG9jYWxlQ2hhbmdlZCcsIG9uTG9jYWxlQ2hhbmdlZCk7XG4gIH1cblxuICBpZiAoZGljdGlvbmFyeSkge1xuICAgIHRoaXMuaTE4bkRyaXZlci5tZXJnZShkaWN0aW9uYXJ5KTtcbiAgfVxuXG4gIGlmIChsb2NhbGUgJiYgIWkxOG4pIHtcbiAgICB0aGlzLl92YWxpZGF0b3IubG9jYWxpemUobG9jYWxlKTtcbiAgfVxufTtcblxuVmVlVmFsaWRhdGUkMS5wcm90b3R5cGUuY29uZmlndXJlID0gZnVuY3Rpb24gY29uZmlndXJlIChjZmcpIHtcbiAgc2V0Q29uZmlnKGNmZyk7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggVmVlVmFsaWRhdGUkMS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyQ2ICk7XG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggVmVlVmFsaWRhdGUkMSwgc3RhdGljQWNjZXNzb3JzJDIgKTtcblxuVmVlVmFsaWRhdGUkMS5taXhpbiA9IG1peGluO1xuVmVlVmFsaWRhdGUkMS5kaXJlY3RpdmUgPSBkaXJlY3RpdmU7XG5WZWVWYWxpZGF0ZSQxLlZhbGlkYXRvciA9IFZhbGlkYXRvcjtcblZlZVZhbGlkYXRlJDEuRXJyb3JCYWcgPSBFcnJvckJhZztcblxuLyoqXG4gKiBGb3JtYXRlcyBmaWxlIHNpemUuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ8U3RyaW5nfSBzaXplXG4gKi9cbnZhciBmb3JtYXRGaWxlU2l6ZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHZhciB1bml0cyA9IFsnQnl0ZScsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuICB2YXIgdGhyZXNob2xkID0gMTAyNDtcbiAgc2l6ZSA9IE51bWJlcihzaXplKSAqIHRocmVzaG9sZDtcbiAgdmFyIGkgPSBzaXplID09PSAwID8gMCA6IE1hdGguZmxvb3IoTWF0aC5sb2coc2l6ZSkgLyBNYXRoLmxvZyh0aHJlc2hvbGQpKTtcbiAgcmV0dXJuICgoKHNpemUgLyBNYXRoLnBvdyh0aHJlc2hvbGQsIGkpKS50b0ZpeGVkKDIpICogMSkgKyBcIiBcIiArICh1bml0c1tpXSkpO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdmVlLXZhbGlkYXRlIGlzIGRlZmluZWQgZ2xvYmFsbHkuXG4gKi9cbnZhciBpc0RlZmluZWRHbG9iYWxseSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHR5cGVvZiBWZWVWYWxpZGF0ZSAhPT0gJ3VuZGVmaW5lZCc7XG59O1xuXG52YXIgb2JqO1xuXG52YXIgbWVzc2FnZXMgPSB7XG4gIF9kZWZhdWx0OiBmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgdmFsdWUgaXMgbm90IHZhbGlkXCIpOyB9LFxuICBhZnRlcjogZnVuY3Rpb24gKGZpZWxkLCByZWYpIHtcbiAgICB2YXIgdGFyZ2V0ID0gcmVmWzBdO1xuICAgIHZhciBpbmNsdXNpb24gPSByZWZbMV07XG5cbiAgICByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBtdXN0IGJlIGFmdGVyIFwiICsgKGluY2x1c2lvbiA/ICdvciBlcXVhbCB0byAnIDogJycpICsgdGFyZ2V0KTtcbn0sXG4gIGFscGhhOiBmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgZmllbGQgbWF5IG9ubHkgY29udGFpbiBhbHBoYWJldGljIGNoYXJhY3RlcnNcIik7IH0sXG4gIGFscGhhX2Rhc2g6IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtYXkgY29udGFpbiBhbHBoYS1udW1lcmljIGNoYXJhY3RlcnMgYXMgd2VsbCBhcyBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzXCIpOyB9LFxuICBhbHBoYV9udW06IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtYXkgb25seSBjb250YWluIGFscGhhLW51bWVyaWMgY2hhcmFjdGVyc1wiKTsgfSxcbiAgYWxwaGFfc3BhY2VzOiBmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgZmllbGQgbWF5IG9ubHkgY29udGFpbiBhbHBoYWJldGljIGNoYXJhY3RlcnMgYXMgd2VsbCBhcyBzcGFjZXNcIik7IH0sXG4gIGJlZm9yZTogZnVuY3Rpb24gKGZpZWxkLCByZWYpIHtcbiAgICB2YXIgdGFyZ2V0ID0gcmVmWzBdO1xuICAgIHZhciBpbmNsdXNpb24gPSByZWZbMV07XG5cbiAgICByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBtdXN0IGJlIGJlZm9yZSBcIiArIChpbmNsdXNpb24gPyAnb3IgZXF1YWwgdG8gJyA6ICcnKSArIHRhcmdldCk7XG59LFxuICBiZXR3ZWVuOiBmdW5jdGlvbiAoZmllbGQsIHJlZikge1xuICAgIHZhciBtaW4gPSByZWZbMF07XG4gICAgdmFyIG1heCA9IHJlZlsxXTtcblxuICAgIHJldHVybiAoXCJUaGUgXCIgKyBmaWVsZCArIFwiIGZpZWxkIG11c3QgYmUgYmV0d2VlbiBcIiArIG1pbiArIFwiIGFuZCBcIiArIG1heCk7XG59LFxuICBjb25maXJtZWQ6IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBjb25maXJtYXRpb24gZG9lcyBub3QgbWF0Y2hcIik7IH0sXG4gIGNyZWRpdF9jYXJkOiBmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgZmllbGQgaXMgaW52YWxpZFwiKTsgfSxcbiAgZGF0ZV9iZXR3ZWVuOiBmdW5jdGlvbiAoZmllbGQsIHJlZikge1xuICAgIHZhciBtaW4gPSByZWZbMF07XG4gICAgdmFyIG1heCA9IHJlZlsxXTtcblxuICAgIHJldHVybiAoXCJUaGUgXCIgKyBmaWVsZCArIFwiIG11c3QgYmUgYmV0d2VlbiBcIiArIG1pbiArIFwiIGFuZCBcIiArIG1heCk7XG59LFxuICBkYXRlX2Zvcm1hdDogZnVuY3Rpb24gKGZpZWxkLCByZWYpIHtcbiAgICB2YXIgZm9ybWF0ID0gcmVmWzBdO1xuXG4gICAgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgbXVzdCBiZSBpbiB0aGUgZm9ybWF0IFwiICsgZm9ybWF0KTtcbn0sXG4gIGRlY2ltYWw6IGZ1bmN0aW9uIChmaWVsZCwgcmVmKSB7XG4gICAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IFtdO1xuICAgIHZhciBkZWNpbWFscyA9IHJlZlswXTsgaWYgKCBkZWNpbWFscyA9PT0gdm9pZCAwICkgZGVjaW1hbHMgPSAnKic7XG5cbiAgICByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtdXN0IGJlIG51bWVyaWMgYW5kIG1heSBjb250YWluXCIgKyAoIWRlY2ltYWxzIHx8IGRlY2ltYWxzID09PSAnKicgPyAnJyA6ICcgJyArIGRlY2ltYWxzKSArIFwiIGRlY2ltYWwgcG9pbnRzXCIpO1xufSxcbiAgZGlnaXRzOiBmdW5jdGlvbiAoZmllbGQsIHJlZikge1xuICAgIHZhciBsZW5ndGggPSByZWZbMF07XG5cbiAgICByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtdXN0IGJlIG51bWVyaWMgYW5kIGNvbnRhaW5zIGV4YWN0bHkgXCIgKyBsZW5ndGggKyBcIiBkaWdpdHNcIik7XG59LFxuICBkaW1lbnNpb25zOiBmdW5jdGlvbiAoZmllbGQsIHJlZikge1xuICAgIHZhciB3aWR0aCA9IHJlZlswXTtcbiAgICB2YXIgaGVpZ2h0ID0gcmVmWzFdO1xuXG4gICAgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgZmllbGQgbXVzdCBiZSBcIiArIHdpZHRoICsgXCIgcGl4ZWxzIGJ5IFwiICsgaGVpZ2h0ICsgXCIgcGl4ZWxzXCIpO1xufSxcbiAgZW1haWw6IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtdXN0IGJlIGEgdmFsaWQgZW1haWxcIik7IH0sXG4gIGV4Y2x1ZGVkOiBmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgZmllbGQgbXVzdCBiZSBhIHZhbGlkIHZhbHVlXCIpOyB9LFxuICBleHQ6IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtdXN0IGJlIGEgdmFsaWQgZmlsZVwiKTsgfSxcbiAgaW1hZ2U6IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtdXN0IGJlIGFuIGltYWdlXCIpOyB9LFxuICBpbmNsdWRlZDogZnVuY3Rpb24gKGZpZWxkKSB7IHJldHVybiAoXCJUaGUgXCIgKyBmaWVsZCArIFwiIGZpZWxkIG11c3QgYmUgYSB2YWxpZCB2YWx1ZVwiKTsgfSxcbiAgaW50ZWdlcjogZnVuY3Rpb24gKGZpZWxkKSB7IHJldHVybiAoXCJUaGUgXCIgKyBmaWVsZCArIFwiIGZpZWxkIG11c3QgYmUgYW4gaW50ZWdlclwiKTsgfSxcbiAgaXA6IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtdXN0IGJlIGEgdmFsaWQgaXAgYWRkcmVzc1wiKTsgfSxcbiAgaXBfb3JfZnFkbjogZnVuY3Rpb24gKGZpZWxkKSB7IHJldHVybiAoXCJUaGUgXCIgKyBmaWVsZCArIFwiIGZpZWxkIG11c3QgYmUgYSB2YWxpZCBpcCBhZGRyZXNzIG9yIEZRRE5cIik7IH0sXG4gIGxlbmd0aDogZnVuY3Rpb24gKGZpZWxkLCByZWYpIHtcbiAgICB2YXIgbGVuZ3RoID0gcmVmWzBdO1xuICAgIHZhciBtYXggPSByZWZbMV07XG5cbiAgICBpZiAobWF4KSB7XG4gICAgICByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBsZW5ndGggbXVzdCBiZSBiZXR3ZWVuIFwiICsgbGVuZ3RoICsgXCIgYW5kIFwiICsgbWF4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBsZW5ndGggbXVzdCBiZSBcIiArIGxlbmd0aCk7XG4gIH0sXG4gIG1heDogZnVuY3Rpb24gKGZpZWxkLCByZWYpIHtcbiAgICB2YXIgbGVuZ3RoID0gcmVmWzBdO1xuXG4gICAgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgZmllbGQgbWF5IG5vdCBiZSBncmVhdGVyIHRoYW4gXCIgKyBsZW5ndGggKyBcIiBjaGFyYWN0ZXJzXCIpO1xufSxcbiAgbWF4X3ZhbHVlOiBmdW5jdGlvbiAoZmllbGQsIHJlZikge1xuICAgIHZhciBtYXggPSByZWZbMF07XG5cbiAgICByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtdXN0IGJlIFwiICsgbWF4ICsgXCIgb3IgbGVzc1wiKTtcbn0sXG4gIG1pbWVzOiBmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgZmllbGQgbXVzdCBoYXZlIGEgdmFsaWQgZmlsZSB0eXBlXCIpOyB9LFxuICBtaW46IGZ1bmN0aW9uIChmaWVsZCwgcmVmKSB7XG4gICAgdmFyIGxlbmd0aCA9IHJlZlswXTtcblxuICAgIHJldHVybiAoXCJUaGUgXCIgKyBmaWVsZCArIFwiIGZpZWxkIG11c3QgYmUgYXQgbGVhc3QgXCIgKyBsZW5ndGggKyBcIiBjaGFyYWN0ZXJzXCIpO1xufSxcbiAgbWluX3ZhbHVlOiBmdW5jdGlvbiAoZmllbGQsIHJlZikge1xuICAgIHZhciBtaW4gPSByZWZbMF07XG5cbiAgICByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtdXN0IGJlIFwiICsgbWluICsgXCIgb3IgbW9yZVwiKTtcbn0sXG4gIG51bWVyaWM6IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBtYXkgb25seSBjb250YWluIG51bWVyaWMgY2hhcmFjdGVyc1wiKTsgfSxcbiAgcmVnZXg6IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBmb3JtYXQgaXMgaW52YWxpZFwiKTsgfSxcbiAgcmVxdWlyZWQ6IGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKFwiVGhlIFwiICsgZmllbGQgKyBcIiBmaWVsZCBpcyByZXF1aXJlZFwiKTsgfSxcbiAgcmVxdWlyZWRfaWY6IGZ1bmN0aW9uIChmaWVsZCwgcmVmKSB7XG4gICAgdmFyIHRhcmdldCA9IHJlZlswXTtcblxuICAgIHJldHVybiAoXCJUaGUgXCIgKyBmaWVsZCArIFwiIGZpZWxkIGlzIHJlcXVpcmVkIHdoZW4gdGhlIFwiICsgdGFyZ2V0ICsgXCIgZmllbGQgaGFzIHRoaXMgdmFsdWVcIik7XG59LFxuICBzaXplOiBmdW5jdGlvbiAoZmllbGQsIHJlZikge1xuICAgIHZhciBzaXplID0gcmVmWzBdO1xuXG4gICAgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgc2l6ZSBtdXN0IGJlIGxlc3MgdGhhbiBcIiArIChmb3JtYXRGaWxlU2l6ZShzaXplKSkpO1xufSxcbiAgdXJsOiBmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIChcIlRoZSBcIiArIGZpZWxkICsgXCIgZmllbGQgaXMgbm90IGEgdmFsaWQgVVJMXCIpOyB9XG59O1xuXG52YXIgbG9jYWxlID0ge1xuICBuYW1lOiAnZW4nLFxuICBtZXNzYWdlczogbWVzc2FnZXMsXG4gIGF0dHJpYnV0ZXM6IHt9XG59O1xuXG5pZiAoaXNEZWZpbmVkR2xvYmFsbHkoKSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgVmVlVmFsaWRhdGUuVmFsaWRhdG9yLmxvY2FsaXplKCggb2JqID0ge30sIG9ialtsb2NhbGUubmFtZV0gPSBsb2NhbGUsIG9iaiApKTtcbn1cblxuZnVuY3Rpb24gdG9JbnRlZ2VyIChkaXJ0eU51bWJlcikge1xuICBpZiAoZGlydHlOdW1iZXIgPT09IG51bGwgfHwgZGlydHlOdW1iZXIgPT09IHRydWUgfHwgZGlydHlOdW1iZXIgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIE5hTlxuICB9XG5cbiAgdmFyIG51bWJlciA9IE51bWJlcihkaXJ0eU51bWJlcik7XG5cbiAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICByZXR1cm4gbnVtYmVyXG4gIH1cblxuICByZXR1cm4gbnVtYmVyIDwgMCA/IE1hdGguY2VpbChudW1iZXIpIDogTWF0aC5mbG9vcihudW1iZXIpXG59XG5cbnZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFID0gNjAwMDA7XG5cbi8qKlxuICogR29vZ2xlIENocm9tZSBhcyBvZiA2Ny4wLjMzOTYuODcgaW50cm9kdWNlZCB0aW1lem9uZXMgd2l0aCBvZmZzZXQgdGhhdCBpbmNsdWRlcyBzZWNvbmRzLlxuICogVGhleSB1c3VhbGx5IGFwcGVhciBmb3IgZGF0ZXMgdGhhdCBkZW5vdGUgdGltZSBiZWZvcmUgdGhlIHRpbWV6b25lcyB3ZXJlIGludHJvZHVjZWRcbiAqIChlLmcuIGZvciAnRXVyb3BlL1ByYWd1ZScgdGltZXpvbmUgdGhlIG9mZnNldCBpcyBHTVQrMDA6NTc6NDQgYmVmb3JlIDEgT2N0b2JlciAxODkxXG4gKiBhbmQgR01UKzAxOjAwOjAwIGFmdGVyIHRoYXQgZGF0ZSlcbiAqXG4gKiBEYXRlI2dldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgdGhlIG9mZnNldCBpbiBtaW51dGVzIGFuZCB3b3VsZCByZXR1cm4gNTcgZm9yIHRoZSBleGFtcGxlIGFib3ZlLFxuICogd2hpY2ggd291bGQgbGVhZCB0byBpbmNvcnJlY3QgY2FsY3VsYXRpb25zLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdGltZXpvbmUgb2Zmc2V0IGluIG1pbGxpc2Vjb25kcyB0aGF0IHRha2VzIHNlY29uZHMgaW4gYWNjb3VudC5cbiAqL1xuZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyAoZGlydHlEYXRlKSB7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoZGlydHlEYXRlLmdldFRpbWUoKSk7XG4gIHZhciBiYXNlVGltZXpvbmVPZmZzZXQgPSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gIGRhdGUuc2V0U2Vjb25kcygwLCAwKTtcbiAgdmFyIG1pbGxpc2Vjb25kc1BhcnRPZlRpbWV6b25lT2Zmc2V0ID0gZGF0ZS5nZXRUaW1lKCkgJSBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFO1xuXG4gIHJldHVybiBiYXNlVGltZXpvbmVPZmZzZXQgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFICsgbWlsbGlzZWNvbmRzUGFydE9mVGltZXpvbmVPZmZzZXRcbn1cblxudmFyIE1JTExJU0VDT05EU19JTl9IT1VSID0gMzYwMDAwMDtcbnZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFJDEgPSA2MDAwMDtcbnZhciBERUZBVUxUX0FERElUSU9OQUxfRElHSVRTID0gMjtcblxudmFyIHBhdHRlcm5zID0ge1xuICBkYXRlVGltZURlbGltZXRlcjogL1tUIF0vLFxuICBwbGFpblRpbWU6IC86LyxcbiAgdGltZVpvbmVEZWxpbWV0ZXI6IC9bWiBdL2ksXG5cbiAgLy8geWVhciB0b2tlbnNcbiAgWVk6IC9eKFxcZHsyfSkkLyxcbiAgWVlZOiBbXG4gICAgL14oWystXVxcZHsyfSkkLywgLy8gMCBhZGRpdGlvbmFsIGRpZ2l0c1xuICAgIC9eKFsrLV1cXGR7M30pJC8sIC8vIDEgYWRkaXRpb25hbCBkaWdpdFxuICAgIC9eKFsrLV1cXGR7NH0pJC8gLy8gMiBhZGRpdGlvbmFsIGRpZ2l0c1xuICBdLFxuICBZWVlZOiAvXihcXGR7NH0pLyxcbiAgWVlZWVk6IFtcbiAgICAvXihbKy1dXFxkezR9KS8sIC8vIDAgYWRkaXRpb25hbCBkaWdpdHNcbiAgICAvXihbKy1dXFxkezV9KS8sIC8vIDEgYWRkaXRpb25hbCBkaWdpdFxuICAgIC9eKFsrLV1cXGR7Nn0pLyAvLyAyIGFkZGl0aW9uYWwgZGlnaXRzXG4gIF0sXG5cbiAgLy8gZGF0ZSB0b2tlbnNcbiAgTU06IC9eLShcXGR7Mn0pJC8sXG4gIERERDogL14tPyhcXGR7M30pJC8sXG4gIE1NREQ6IC9eLT8oXFxkezJ9KS0/KFxcZHsyfSkkLyxcbiAgV3d3OiAvXi0/VyhcXGR7Mn0pJC8sXG4gIFd3d0Q6IC9eLT9XKFxcZHsyfSktPyhcXGR7MX0pJC8sXG5cbiAgSEg6IC9eKFxcZHsyfShbLixdXFxkKik/KSQvLFxuICBISE1NOiAvXihcXGR7Mn0pOj8oXFxkezJ9KFsuLF1cXGQqKT8pJC8sXG4gIEhITU1TUzogL14oXFxkezJ9KTo/KFxcZHsyfSk6PyhcXGR7Mn0oWy4sXVxcZCopPykkLyxcblxuICAvLyB0aW1lem9uZSB0b2tlbnNcbiAgdGltZXpvbmU6IC8oW1orLV0uKikkLyxcbiAgdGltZXpvbmVaOiAvXihaKSQvLFxuICB0aW1lem9uZUhIOiAvXihbKy1dKShcXGR7Mn0pJC8sXG4gIHRpbWV6b25lSEhNTTogL14oWystXSkoXFxkezJ9KTo/KFxcZHsyfSkkL1xufTtcblxuLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgYW4gYXJndW1lbnQgaXMgYSBzdHJpbmcsIHRoZSBmdW5jdGlvbiB0cmllcyB0byBwYXJzZSBpdC5cbiAqIEZ1bmN0aW9uIGFjY2VwdHMgY29tcGxldGUgSVNPIDg2MDEgZm9ybWF0cyBhcyB3ZWxsIGFzIHBhcnRpYWwgaW1wbGVtZW50YXRpb25zLlxuICogSVNPIDg2MDE6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDFcbiAqIElmIHRoZSBmdW5jdGlvbiBjYW5ub3QgcGFyc2UgdGhlIHN0cmluZyBvciB0aGUgdmFsdWVzIGFyZSBpbnZhbGlkLCBpdCByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqIEFsbCAqZGF0ZS1mbnMqIGZ1bmN0aW9ucyB3aWxsIHRocm93IGBSYW5nZUVycm9yYCBpZiBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBpcyBub3QgMCwgMSwgMiBvciB1bmRlZmluZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfFN0cmluZ3xOdW1iZXJ9IGFyZ3VtZW50IC0gdGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqIEBwYXJhbSB7T3B0aW9uc30gW29wdGlvbnNdIC0gdGhlIG9iamVjdCB3aXRoIG9wdGlvbnMuIFNlZSBbT3B0aW9uc117QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9PcHRpb25zfVxuICogQHBhcmFtIHswfDF8Mn0gW29wdGlvbnMuYWRkaXRpb25hbERpZ2l0cz0yXSAtIHRoZSBhZGRpdGlvbmFsIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGV4dGVuZGVkIHllYXIgZm9ybWF0XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0c2AgbXVzdCBiZSAwLCAxIG9yIDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCBzdHJpbmcgJzIwMTQtMDItMTFUMTE6MzA6MzAnIHRvIGRhdGU6XG4gKiB2YXIgcmVzdWx0ID0gdG9EYXRlKCcyMDE0LTAyLTExVDExOjMwOjMwJylcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcrMDIwMTQxMDEnIHRvIGRhdGUsXG4gKiAvLyBpZiB0aGUgYWRkaXRpb25hbCBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCBpcyAxOlxuICogdmFyIHJlc3VsdCA9IHRvRGF0ZSgnKzAyMDE0MTAxJywge2FkZGl0aW9uYWxEaWdpdHM6IDF9KVxuICogLy89PiBGcmkgQXByIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZnVuY3Rpb24gdG9EYXRlIChhcmd1bWVudCwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIGlmIChhcmd1bWVudCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pXG4gIH1cblxuICB2YXIgb3B0aW9ucyA9IGRpcnR5T3B0aW9ucyB8fCB7fTtcblxuICB2YXIgYWRkaXRpb25hbERpZ2l0cyA9IG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0cyA9PSBudWxsID8gREVGQVVMVF9BRERJVElPTkFMX0RJR0lUUyA6IHRvSW50ZWdlcihvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHMpO1xuICBpZiAoYWRkaXRpb25hbERpZ2l0cyAhPT0gMiAmJiBhZGRpdGlvbmFsRGlnaXRzICE9PSAxICYmIGFkZGl0aW9uYWxEaWdpdHMgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYWRkaXRpb25hbERpZ2l0cyBtdXN0IGJlIDAsIDEgb3IgMicpXG4gIH1cblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gJ1tvYmplY3QgRGF0ZV0nKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQuZ2V0VGltZSgpKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gJ251bWJlcicgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gJ1tvYmplY3QgTnVtYmVyXScpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpXG4gIH0gZWxzZSBpZiAoISh0eXBlb2YgYXJndW1lbnQgPT09ICdzdHJpbmcnIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCkgPT09ICdbb2JqZWN0IFN0cmluZ10nKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pXG4gIH1cblxuICB2YXIgZGF0ZVN0cmluZ3MgPSBzcGxpdERhdGVTdHJpbmcoYXJndW1lbnQpO1xuXG4gIHZhciBwYXJzZVllYXJSZXN1bHQgPSBwYXJzZVllYXIoZGF0ZVN0cmluZ3MuZGF0ZSwgYWRkaXRpb25hbERpZ2l0cyk7XG4gIHZhciB5ZWFyID0gcGFyc2VZZWFyUmVzdWx0LnllYXI7XG4gIHZhciByZXN0RGF0ZVN0cmluZyA9IHBhcnNlWWVhclJlc3VsdC5yZXN0RGF0ZVN0cmluZztcblxuICB2YXIgZGF0ZSA9IHBhcnNlRGF0ZShyZXN0RGF0ZVN0cmluZywgeWVhcik7XG5cbiAgaWYgKGlzTmFOKGRhdGUpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgfVxuXG4gIGlmIChkYXRlKSB7XG4gICAgdmFyIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuICAgIHZhciB0aW1lID0gMDtcbiAgICB2YXIgb2Zmc2V0O1xuXG4gICAgaWYgKGRhdGVTdHJpbmdzLnRpbWUpIHtcbiAgICAgIHRpbWUgPSBwYXJzZVRpbWUoZGF0ZVN0cmluZ3MudGltZSk7XG5cbiAgICAgIGlmIChpc05hTih0aW1lKSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRlU3RyaW5ncy50aW1lem9uZSkge1xuICAgICAgb2Zmc2V0ID0gcGFyc2VUaW1lem9uZShkYXRlU3RyaW5ncy50aW1lem9uZSk7XG4gICAgICBpZiAoaXNOYU4ob2Zmc2V0KSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBnZXQgb2Zmc2V0IGFjY3VyYXRlIHRvIGhvdXIgaW4gdGltZXpvbmVzIHRoYXQgY2hhbmdlIG9mZnNldFxuICAgICAgb2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhuZXcgRGF0ZSh0aW1lc3RhbXAgKyB0aW1lKSk7XG4gICAgICBvZmZzZXQgPSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKG5ldyBEYXRlKHRpbWVzdGFtcCArIHRpbWUgKyBvZmZzZXQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wICsgdGltZSArIG9mZnNldClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICB9XG59XG5cbmZ1bmN0aW9uIHNwbGl0RGF0ZVN0cmluZyAoZGF0ZVN0cmluZykge1xuICB2YXIgZGF0ZVN0cmluZ3MgPSB7fTtcbiAgdmFyIGFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChwYXR0ZXJucy5kYXRlVGltZURlbGltZXRlcik7XG4gIHZhciB0aW1lU3RyaW5nO1xuXG4gIGlmIChwYXR0ZXJucy5wbGFpblRpbWUudGVzdChhcnJheVswXSkpIHtcbiAgICBkYXRlU3RyaW5ncy5kYXRlID0gbnVsbDtcbiAgICB0aW1lU3RyaW5nID0gYXJyYXlbMF07XG4gIH0gZWxzZSB7XG4gICAgZGF0ZVN0cmluZ3MuZGF0ZSA9IGFycmF5WzBdO1xuICAgIHRpbWVTdHJpbmcgPSBhcnJheVsxXTtcbiAgICBpZiAocGF0dGVybnMudGltZVpvbmVEZWxpbWV0ZXIudGVzdChkYXRlU3RyaW5ncy5kYXRlKSkge1xuICAgICAgZGF0ZVN0cmluZ3MuZGF0ZSA9IGRhdGVTdHJpbmcuc3BsaXQocGF0dGVybnMudGltZVpvbmVEZWxpbWV0ZXIpWzBdO1xuICAgICAgdGltZVN0cmluZyA9IGRhdGVTdHJpbmcuc3Vic3RyKGRhdGVTdHJpbmdzLmRhdGUubGVuZ3RoLCBkYXRlU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRpbWVTdHJpbmcpIHtcbiAgICB2YXIgdG9rZW4gPSBwYXR0ZXJucy50aW1lem9uZS5leGVjKHRpbWVTdHJpbmcpO1xuICAgIGlmICh0b2tlbikge1xuICAgICAgZGF0ZVN0cmluZ3MudGltZSA9IHRpbWVTdHJpbmcucmVwbGFjZSh0b2tlblsxXSwgJycpO1xuICAgICAgZGF0ZVN0cmluZ3MudGltZXpvbmUgPSB0b2tlblsxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZVN0cmluZ3MudGltZSA9IHRpbWVTdHJpbmc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRhdGVTdHJpbmdzXG59XG5cbmZ1bmN0aW9uIHBhcnNlWWVhciAoZGF0ZVN0cmluZywgYWRkaXRpb25hbERpZ2l0cykge1xuICB2YXIgcGF0dGVybllZWSA9IHBhdHRlcm5zLllZWVthZGRpdGlvbmFsRGlnaXRzXTtcbiAgdmFyIHBhdHRlcm5ZWVlZWSA9IHBhdHRlcm5zLllZWVlZW2FkZGl0aW9uYWxEaWdpdHNdO1xuXG4gIHZhciB0b2tlbjtcblxuICAvLyBZWVlZIG9yIMKxWVlZWVlcbiAgdG9rZW4gPSBwYXR0ZXJucy5ZWVlZLmV4ZWMoZGF0ZVN0cmluZykgfHwgcGF0dGVybllZWVlZLmV4ZWMoZGF0ZVN0cmluZyk7XG4gIGlmICh0b2tlbikge1xuICAgIHZhciB5ZWFyU3RyaW5nID0gdG9rZW5bMV07XG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXI6IHBhcnNlSW50KHllYXJTdHJpbmcsIDEwKSxcbiAgICAgIHJlc3REYXRlU3RyaW5nOiBkYXRlU3RyaW5nLnNsaWNlKHllYXJTdHJpbmcubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIC8vIFlZIG9yIMKxWVlZXG4gIHRva2VuID0gcGF0dGVybnMuWVkuZXhlYyhkYXRlU3RyaW5nKSB8fCBwYXR0ZXJuWVlZLmV4ZWMoZGF0ZVN0cmluZyk7XG4gIGlmICh0b2tlbikge1xuICAgIHZhciBjZW50dXJ5U3RyaW5nID0gdG9rZW5bMV07XG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXI6IHBhcnNlSW50KGNlbnR1cnlTdHJpbmcsIDEwKSAqIDEwMCxcbiAgICAgIHJlc3REYXRlU3RyaW5nOiBkYXRlU3RyaW5nLnNsaWNlKGNlbnR1cnlTdHJpbmcubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIHJldHVybiB7XG4gICAgeWVhcjogbnVsbFxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGF0ZSAoZGF0ZVN0cmluZywgeWVhcikge1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICBpZiAoeWVhciA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICB2YXIgdG9rZW47XG4gIHZhciBkYXRlO1xuICB2YXIgbW9udGg7XG4gIHZhciB3ZWVrO1xuXG4gIC8vIFlZWVlcbiAgaWYgKGRhdGVTdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhcik7XG4gICAgcmV0dXJuIGRhdGVcbiAgfVxuXG4gIC8vIFlZWVktTU1cbiAgdG9rZW4gPSBwYXR0ZXJucy5NTS5leGVjKGRhdGVTdHJpbmcpO1xuICBpZiAodG9rZW4pIHtcbiAgICBkYXRlID0gbmV3IERhdGUoMCk7XG4gICAgbW9udGggPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMTtcblxuICAgIGlmICghdmFsaWRhdGVEYXRlKHllYXIsIG1vbnRoKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgICB9XG5cbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoKTtcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1EREQgb3IgWVlZWURERFxuICB0b2tlbiA9IHBhdHRlcm5zLkRERC5leGVjKGRhdGVTdHJpbmcpO1xuICBpZiAodG9rZW4pIHtcbiAgICBkYXRlID0gbmV3IERhdGUoMCk7XG4gICAgdmFyIGRheU9mWWVhciA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCk7XG5cbiAgICBpZiAoIXZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSh5ZWFyLCBkYXlPZlllYXIpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgIH1cblxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgZGF5T2ZZZWFyKTtcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1NTS1ERCBvciBZWVlZTU1ERFxuICB0b2tlbiA9IHBhdHRlcm5zLk1NREQuZXhlYyhkYXRlU3RyaW5nKTtcbiAgaWYgKHRva2VuKSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICAgIG1vbnRoID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKSAtIDE7XG4gICAgdmFyIGRheSA9IHBhcnNlSW50KHRva2VuWzJdLCAxMCk7XG5cbiAgICBpZiAoIXZhbGlkYXRlRGF0ZSh5ZWFyLCBtb250aCwgZGF5KSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgICB9XG5cbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIHJldHVybiBkYXRlXG4gIH1cblxuICAvLyBZWVlZLVd3dyBvciBZWVlZV3d3XG4gIHRva2VuID0gcGF0dGVybnMuV3d3LmV4ZWMoZGF0ZVN0cmluZyk7XG4gIGlmICh0b2tlbikge1xuICAgIHdlZWsgPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMTtcblxuICAgIGlmICghdmFsaWRhdGVXZWVrRGF0ZSh5ZWFyLCB3ZWVrKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5T2ZJU09XZWVrWWVhcih5ZWFyLCB3ZWVrKVxuICB9XG5cbiAgLy8gWVlZWS1Xd3ctRCBvciBZWVlZV3d3RFxuICB0b2tlbiA9IHBhdHRlcm5zLld3d0QuZXhlYyhkYXRlU3RyaW5nKTtcbiAgaWYgKHRva2VuKSB7XG4gICAgd2VlayA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCkgLSAxO1xuICAgIHZhciBkYXlPZldlZWsgPSBwYXJzZUludCh0b2tlblsyXSwgMTApIC0gMTtcblxuICAgIGlmICghdmFsaWRhdGVXZWVrRGF0ZSh5ZWFyLCB3ZWVrLCBkYXlPZldlZWspKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgIH1cblxuICAgIHJldHVybiBkYXlPZklTT1dlZWtZZWFyKHllYXIsIHdlZWssIGRheU9mV2VlaylcbiAgfVxuXG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCBkYXRlXG4gIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIHBhcnNlVGltZSAodGltZVN0cmluZykge1xuICB2YXIgdG9rZW47XG4gIHZhciBob3VycztcbiAgdmFyIG1pbnV0ZXM7XG5cbiAgLy8gaGhcbiAgdG9rZW4gPSBwYXR0ZXJucy5ISC5leGVjKHRpbWVTdHJpbmcpO1xuICBpZiAodG9rZW4pIHtcbiAgICBob3VycyA9IHBhcnNlRmxvYXQodG9rZW5bMV0ucmVwbGFjZSgnLCcsICcuJykpO1xuXG4gICAgaWYgKCF2YWxpZGF0ZVRpbWUoaG91cnMpKSB7XG4gICAgICByZXR1cm4gTmFOXG4gICAgfVxuXG4gICAgcmV0dXJuIChob3VycyAlIDI0KSAqIE1JTExJU0VDT05EU19JTl9IT1VSXG4gIH1cblxuICAvLyBoaDptbSBvciBoaG1tXG4gIHRva2VuID0gcGF0dGVybnMuSEhNTS5leGVjKHRpbWVTdHJpbmcpO1xuICBpZiAodG9rZW4pIHtcbiAgICBob3VycyA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCk7XG4gICAgbWludXRlcyA9IHBhcnNlRmxvYXQodG9rZW5bMl0ucmVwbGFjZSgnLCcsICcuJykpO1xuXG4gICAgaWYgKCF2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMpKSB7XG4gICAgICByZXR1cm4gTmFOXG4gICAgfVxuXG4gICAgcmV0dXJuIChob3VycyAlIDI0KSAqIE1JTExJU0VDT05EU19JTl9IT1VSICtcbiAgICAgIG1pbnV0ZXMgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFJDFcbiAgfVxuXG4gIC8vIGhoOm1tOnNzIG9yIGhobW1zc1xuICB0b2tlbiA9IHBhdHRlcm5zLkhITU1TUy5leGVjKHRpbWVTdHJpbmcpO1xuICBpZiAodG9rZW4pIHtcbiAgICBob3VycyA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCk7XG4gICAgbWludXRlcyA9IHBhcnNlSW50KHRva2VuWzJdLCAxMCk7XG4gICAgdmFyIHNlY29uZHMgPSBwYXJzZUZsb2F0KHRva2VuWzNdLnJlcGxhY2UoJywnLCAnLicpKTtcblxuICAgIGlmICghdmFsaWRhdGVUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSkge1xuICAgICAgcmV0dXJuIE5hTlxuICAgIH1cblxuICAgIHJldHVybiAoaG91cnMgJSAyNCkgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUiArXG4gICAgICBtaW51dGVzICogTUlMTElTRUNPTkRTX0lOX01JTlVURSQxICtcbiAgICAgIHNlY29uZHMgKiAxMDAwXG4gIH1cblxuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgdGltZVxuICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBwYXJzZVRpbWV6b25lICh0aW1lem9uZVN0cmluZykge1xuICB2YXIgdG9rZW47XG4gIHZhciBhYnNvbHV0ZU9mZnNldDtcblxuICAvLyBaXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVaLmV4ZWModGltZXpvbmVTdHJpbmcpO1xuICBpZiAodG9rZW4pIHtcbiAgICByZXR1cm4gMFxuICB9XG5cbiAgdmFyIGhvdXJzO1xuXG4gIC8vIMKxaGhcbiAgdG9rZW4gPSBwYXR0ZXJucy50aW1lem9uZUhILmV4ZWModGltZXpvbmVTdHJpbmcpO1xuICBpZiAodG9rZW4pIHtcbiAgICBob3VycyA9IHBhcnNlSW50KHRva2VuWzJdLCAxMCk7XG5cbiAgICBpZiAoIXZhbGlkYXRlVGltZXpvbmUoKSkge1xuICAgICAgcmV0dXJuIE5hTlxuICAgIH1cblxuICAgIGFic29sdXRlT2Zmc2V0ID0gaG91cnMgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUjtcbiAgICByZXR1cm4gKHRva2VuWzFdID09PSAnKycpID8gLWFic29sdXRlT2Zmc2V0IDogYWJzb2x1dGVPZmZzZXRcbiAgfVxuXG4gIC8vIMKxaGg6bW0gb3IgwrFoaG1tXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVISE1NLmV4ZWModGltZXpvbmVTdHJpbmcpO1xuICBpZiAodG9rZW4pIHtcbiAgICBob3VycyA9IHBhcnNlSW50KHRva2VuWzJdLCAxMCk7XG4gICAgdmFyIG1pbnV0ZXMgPSBwYXJzZUludCh0b2tlblszXSwgMTApO1xuXG4gICAgaWYgKCF2YWxpZGF0ZVRpbWV6b25lKGhvdXJzLCBtaW51dGVzKSkge1xuICAgICAgcmV0dXJuIE5hTlxuICAgIH1cblxuICAgIGFic29sdXRlT2Zmc2V0ID0gaG91cnMgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUiArIG1pbnV0ZXMgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFJDE7XG4gICAgcmV0dXJuICh0b2tlblsxXSA9PT0gJysnKSA/IC1hYnNvbHV0ZU9mZnNldCA6IGFic29sdXRlT2Zmc2V0XG4gIH1cblxuICByZXR1cm4gMFxufVxuXG5mdW5jdGlvbiBkYXlPZklTT1dlZWtZZWFyIChpc29XZWVrWWVhciwgd2VlaywgZGF5KSB7XG4gIHdlZWsgPSB3ZWVrIHx8IDA7XG4gIGRheSA9IGRheSB8fCAwO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGlzb1dlZWtZZWFyLCAwLCA0KTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeURheSA9IGRhdGUuZ2V0VVRDRGF5KCkgfHwgNztcbiAgdmFyIGRpZmYgPSB3ZWVrICogNyArIGRheSArIDEgLSBmb3VydGhPZkphbnVhcnlEYXk7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZVxufVxuXG4vLyBWYWxpZGF0aW9uIGZ1bmN0aW9uc1xuXG52YXIgREFZU19JTl9NT05USCA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcbnZhciBEQVlTX0lOX01PTlRIX0xFQVBfWUVBUiA9IFszMSwgMjksIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcblxuZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4ICh5ZWFyKSB7XG4gIHJldHVybiB5ZWFyICUgNDAwID09PSAwIHx8ICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURhdGUgKHllYXIsIG1vbnRoLCBkYXRlKSB7XG4gIGlmIChtb250aCA8IDAgfHwgbW9udGggPiAxMSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKGRhdGUgIT0gbnVsbCkge1xuICAgIGlmIChkYXRlIDwgMSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIGlzTGVhcFllYXIgPSBpc0xlYXBZZWFySW5kZXgoeWVhcik7XG4gICAgaWYgKGlzTGVhcFllYXIgJiYgZGF0ZSA+IERBWVNfSU5fTU9OVEhfTEVBUF9ZRUFSW21vbnRoXSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGlmICghaXNMZWFwWWVhciAmJiBkYXRlID4gREFZU19JTl9NT05USFttb250aF0pIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSAoeWVhciwgZGF5T2ZZZWFyKSB7XG4gIGlmIChkYXlPZlllYXIgPCAxKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB2YXIgaXNMZWFwWWVhciA9IGlzTGVhcFllYXJJbmRleCh5ZWFyKTtcbiAgaWYgKGlzTGVhcFllYXIgJiYgZGF5T2ZZZWFyID4gMzY2KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKCFpc0xlYXBZZWFyICYmIGRheU9mWWVhciA+IDM2NSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVXZWVrRGF0ZSAoeWVhciwgd2VlaywgZGF5KSB7XG4gIGlmICh3ZWVrIDwgMCB8fCB3ZWVrID4gNTIpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChkYXkgIT0gbnVsbCAmJiAoZGF5IDwgMCB8fCBkYXkgPiA2KSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUaW1lIChob3VycywgbWludXRlcywgc2Vjb25kcykge1xuICBpZiAoaG91cnMgIT0gbnVsbCAmJiAoaG91cnMgPCAwIHx8IGhvdXJzID49IDI1KSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKG1pbnV0ZXMgIT0gbnVsbCAmJiAobWludXRlcyA8IDAgfHwgbWludXRlcyA+PSA2MCkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChzZWNvbmRzICE9IG51bGwgJiYgKHNlY29uZHMgPCAwIHx8IHNlY29uZHMgPj0gNjApKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVRpbWV6b25lIChob3VycywgbWludXRlcykge1xuICBpZiAobWludXRlcyAhPSBudWxsICYmIChtaW51dGVzIDwgMCB8fCBtaW51dGVzID4gNTkpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIEBuYW1lIGFkZE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxTdHJpbmd8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGFkZGVkXG4gKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSAtIHRoZSBvYmplY3Qgd2l0aCBvcHRpb25zLiBTZWUgW09wdGlvbnNde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvT3B0aW9uc31cbiAqIEBwYXJhbSB7MHwxfDJ9IFtvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHM9Ml0gLSBwYXNzZWQgdG8gYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNzUwIG1pbGxpc2Vjb25kcyB0byAxMCBKdWx5IDIwMTQgMTI6NDU6MzAuMDAwOlxuICogdmFyIHJlc3VsdCA9IGFkZE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAzMCwgMCksIDc1MClcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjMwLjc1MFxuICovXG5mdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMgKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQsIGRpcnR5T3B0aW9ucykge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcyIGFyZ3VtZW50cyByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIHByZXNlbnQnKVxuICB9XG5cbiAgdmFyIHRpbWVzdGFtcCA9IHRvRGF0ZShkaXJ0eURhdGUsIGRpcnR5T3B0aW9ucykuZ2V0VGltZSgpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIG5ldyBEYXRlKHRpbWVzdGFtcCArIGFtb3VudClcbn1cblxuLyoqXG4gKiBAbmFtZSBpc1ZhbGlkXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHZhbGlkP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyBmYWxzZSBpZiBhcmd1bWVudCBpcyBJbnZhbGlkIERhdGUgYW5kIHRydWUgb3RoZXJ3aXNlLlxuICogQXJndW1lbnQgaXMgY29udmVydGVkIHRvIERhdGUgdXNpbmcgYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEludmFsaWQgRGF0ZSBpcyBhIERhdGUsIHdob3NlIHRpbWUgdmFsdWUgaXMgTmFOLlxuICpcbiAqIFRpbWUgdmFsdWUgb2YgRGF0ZTogaHR0cDovL2VzNS5naXRodWIuaW8vI3gxNS45LjEuMVxuICpcbiAqIEBwYXJhbSB7Kn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSAtIHRoZSBvYmplY3Qgd2l0aCBvcHRpb25zLiBTZWUgW09wdGlvbnNde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvT3B0aW9uc31cbiAqIEBwYXJhbSB7MHwxfDJ9IFtvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHM9Ml0gLSBwYXNzZWQgdG8gYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB2YWxpZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIHZhbGlkIGRhdGU6XG4gKiB2YXIgcmVzdWx0ID0gaXNWYWxpZChuZXcgRGF0ZSgyMDE0LCAxLCAzMSkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSB2YWx1ZSwgY29udmVydGFibGUgaW50byBhIGRhdGU6XG4gKiB2YXIgcmVzdWx0ID0gaXNWYWxpZCgnMjAxNC0wMi0zMScpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSBpbnZhbGlkIGRhdGU6XG4gKiB2YXIgcmVzdWx0ID0gaXNWYWxpZChuZXcgRGF0ZSgnJykpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWQgKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgcmV0dXJuICFpc05hTihkYXRlKVxufVxuXG52YXIgZm9ybWF0RGlzdGFuY2VMb2NhbGUgPSB7XG4gIGxlc3NUaGFuWFNlY29uZHM6IHtcbiAgICBvbmU6ICdsZXNzIHRoYW4gYSBzZWNvbmQnLFxuICAgIG90aGVyOiAnbGVzcyB0aGFuIHt7Y291bnR9fSBzZWNvbmRzJ1xuICB9LFxuXG4gIHhTZWNvbmRzOiB7XG4gICAgb25lOiAnMSBzZWNvbmQnLFxuICAgIG90aGVyOiAne3tjb3VudH19IHNlY29uZHMnXG4gIH0sXG5cbiAgaGFsZkFNaW51dGU6ICdoYWxmIGEgbWludXRlJyxcblxuICBsZXNzVGhhblhNaW51dGVzOiB7XG4gICAgb25lOiAnbGVzcyB0aGFuIGEgbWludXRlJyxcbiAgICBvdGhlcjogJ2xlc3MgdGhhbiB7e2NvdW50fX0gbWludXRlcydcbiAgfSxcblxuICB4TWludXRlczoge1xuICAgIG9uZTogJzEgbWludXRlJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBtaW51dGVzJ1xuICB9LFxuXG4gIGFib3V0WEhvdXJzOiB7XG4gICAgb25lOiAnYWJvdXQgMSBob3VyJyxcbiAgICBvdGhlcjogJ2Fib3V0IHt7Y291bnR9fSBob3VycydcbiAgfSxcblxuICB4SG91cnM6IHtcbiAgICBvbmU6ICcxIGhvdXInLFxuICAgIG90aGVyOiAne3tjb3VudH19IGhvdXJzJ1xuICB9LFxuXG4gIHhEYXlzOiB7XG4gICAgb25lOiAnMSBkYXknLFxuICAgIG90aGVyOiAne3tjb3VudH19IGRheXMnXG4gIH0sXG5cbiAgYWJvdXRYTW9udGhzOiB7XG4gICAgb25lOiAnYWJvdXQgMSBtb250aCcsXG4gICAgb3RoZXI6ICdhYm91dCB7e2NvdW50fX0gbW9udGhzJ1xuICB9LFxuXG4gIHhNb250aHM6IHtcbiAgICBvbmU6ICcxIG1vbnRoJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBtb250aHMnXG4gIH0sXG5cbiAgYWJvdXRYWWVhcnM6IHtcbiAgICBvbmU6ICdhYm91dCAxIHllYXInLFxuICAgIG90aGVyOiAnYWJvdXQge3tjb3VudH19IHllYXJzJ1xuICB9LFxuXG4gIHhZZWFyczoge1xuICAgIG9uZTogJzEgeWVhcicsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0geWVhcnMnXG4gIH0sXG5cbiAgb3ZlclhZZWFyczoge1xuICAgIG9uZTogJ292ZXIgMSB5ZWFyJyxcbiAgICBvdGhlcjogJ292ZXIge3tjb3VudH19IHllYXJzJ1xuICB9LFxuXG4gIGFsbW9zdFhZZWFyczoge1xuICAgIG9uZTogJ2FsbW9zdCAxIHllYXInLFxuICAgIG90aGVyOiAnYWxtb3N0IHt7Y291bnR9fSB5ZWFycydcbiAgfVxufTtcblxuZnVuY3Rpb24gZm9ybWF0RGlzdGFuY2UgKHRva2VuLCBjb3VudCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICB2YXIgcmVzdWx0O1xuICBpZiAodHlwZW9mIGZvcm1hdERpc3RhbmNlTG9jYWxlW3Rva2VuXSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXN1bHQgPSBmb3JtYXREaXN0YW5jZUxvY2FsZVt0b2tlbl07XG4gIH0gZWxzZSBpZiAoY291bnQgPT09IDEpIHtcbiAgICByZXN1bHQgPSBmb3JtYXREaXN0YW5jZUxvY2FsZVt0b2tlbl0ub25lO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlTG9jYWxlW3Rva2VuXS5vdGhlci5yZXBsYWNlKCd7e2NvdW50fX0nLCBjb3VudCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5hZGRTdWZmaXgpIHtcbiAgICBpZiAob3B0aW9ucy5jb21wYXJpc29uID4gMCkge1xuICAgICAgcmV0dXJuICdpbiAnICsgcmVzdWx0XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAnIGFnbydcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRm9ybWF0TG9uZ0ZuIChhcmdzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZGlydHlPcHRpb25zKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBkaXJ0eU9wdGlvbnMgfHwge307XG4gICAgdmFyIHdpZHRoID0gb3B0aW9ucy53aWR0aCA/IFN0cmluZyhvcHRpb25zLndpZHRoKSA6IGFyZ3MuZGVmYXVsdFdpZHRoO1xuICAgIHZhciBmb3JtYXQgPSBhcmdzLmZvcm1hdHNbd2lkdGhdIHx8IGFyZ3MuZm9ybWF0c1thcmdzLmRlZmF1bHRXaWR0aF07XG4gICAgcmV0dXJuIGZvcm1hdFxuICB9XG59XG5cbnZhciBkYXRlRm9ybWF0cyA9IHtcbiAgZnVsbDogJ0VFRUUsIE1NTU0gZG8sIHknLFxuICBsb25nOiAnTU1NTSBkbywgeScsXG4gIG1lZGl1bTogJ01NTSBkLCB5JyxcbiAgc2hvcnQ6ICdNTS9kZC95eXl5J1xufTtcblxudmFyIHRpbWVGb3JtYXRzID0ge1xuICBmdWxsOiAnaDptbTpzcyBhIHp6enonLFxuICBsb25nOiAnaDptbTpzcyBhIHonLFxuICBtZWRpdW06ICdoOm1tOnNzIGEnLFxuICBzaG9ydDogJ2g6bW0gYSdcbn07XG5cbnZhciBkYXRlVGltZUZvcm1hdHMgPSB7XG4gIGZ1bGw6IFwie3tkYXRlfX0gJ2F0JyB7e3RpbWV9fVwiLFxuICBsb25nOiBcInt7ZGF0ZX19ICdhdCcge3t0aW1lfX1cIixcbiAgbWVkaXVtOiAne3tkYXRlfX0sIHt7dGltZX19JyxcbiAgc2hvcnQ6ICd7e2RhdGV9fSwge3t0aW1lfX0nXG59O1xuXG52YXIgZm9ybWF0TG9uZyA9IHtcbiAgZGF0ZTogYnVpbGRGb3JtYXRMb25nRm4oe1xuICAgIGZvcm1hdHM6IGRhdGVGb3JtYXRzLFxuICAgIGRlZmF1bHRXaWR0aDogJ2Z1bGwnXG4gIH0pLFxuXG4gIHRpbWU6IGJ1aWxkRm9ybWF0TG9uZ0ZuKHtcbiAgICBmb3JtYXRzOiB0aW1lRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6ICdmdWxsJ1xuICB9KSxcblxuICBkYXRlVGltZTogYnVpbGRGb3JtYXRMb25nRm4oe1xuICAgIGZvcm1hdHM6IGRhdGVUaW1lRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6ICdmdWxsJ1xuICB9KVxufTtcblxudmFyIGZvcm1hdFJlbGF0aXZlTG9jYWxlID0ge1xuICBsYXN0V2VlazogXCInbGFzdCcgZWVlZSAnYXQnIHBcIixcbiAgeWVzdGVyZGF5OiBcIid5ZXN0ZXJkYXkgYXQnIHBcIixcbiAgdG9kYXk6IFwiJ3RvZGF5IGF0JyBwXCIsXG4gIHRvbW9ycm93OiBcIid0b21vcnJvdyBhdCcgcFwiLFxuICBuZXh0V2VlazogXCJlZWVlICdhdCcgcFwiLFxuICBvdGhlcjogJ1AnXG59O1xuXG5mdW5jdGlvbiBmb3JtYXRSZWxhdGl2ZSAodG9rZW4sIGRhdGUsIGJhc2VEYXRlLCBvcHRpb25zKSB7XG4gIHJldHVybiBmb3JtYXRSZWxhdGl2ZUxvY2FsZVt0b2tlbl1cbn1cblxuZnVuY3Rpb24gYnVpbGRMb2NhbGl6ZUZuIChhcmdzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZGlydHlJbmRleCwgZGlydHlPcHRpb25zKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBkaXJ0eU9wdGlvbnMgfHwge307XG4gICAgdmFyIHdpZHRoID0gb3B0aW9ucy53aWR0aCA/IFN0cmluZyhvcHRpb25zLndpZHRoKSA6IGFyZ3MuZGVmYXVsdFdpZHRoO1xuICAgIHZhciBjb250ZXh0ID0gb3B0aW9ucy5jb250ZXh0ID8gU3RyaW5nKG9wdGlvbnMuY29udGV4dCkgOiAnc3RhbmRhbG9uZSc7XG5cbiAgICB2YXIgdmFsdWVzQXJyYXk7XG4gICAgaWYgKGNvbnRleHQgPT09ICdmb3JtYXR0aW5nJyAmJiBhcmdzLmZvcm1hdHRpbmdWYWx1ZXMpIHtcbiAgICAgIHZhbHVlc0FycmF5ID0gYXJncy5mb3JtYXR0aW5nVmFsdWVzW3dpZHRoXSB8fCBhcmdzLmZvcm1hdHRpbmdWYWx1ZXNbYXJncy5kZWZhdWx0Rm9ybWF0dGluZ1dpZHRoXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVzQXJyYXkgPSBhcmdzLnZhbHVlc1t3aWR0aF0gfHwgYXJncy52YWx1ZXNbYXJncy5kZWZhdWx0V2lkdGhdO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSBhcmdzLmFyZ3VtZW50Q2FsbGJhY2sgPyBhcmdzLmFyZ3VtZW50Q2FsbGJhY2soZGlydHlJbmRleCkgOiBkaXJ0eUluZGV4O1xuICAgIHJldHVybiB2YWx1ZXNBcnJheVtpbmRleF1cbiAgfVxufVxuXG52YXIgZXJhVmFsdWVzID0ge1xuICBuYXJyb3c6IFsnQicsICdBJ10sXG4gIGFiYnJldmlhdGVkOiBbJ0JDJywgJ0FEJ10sXG4gIHdpZGU6IFsnQmVmb3JlIENocmlzdCcsICdBbm5vIERvbWluaSddXG59O1xuXG52YXIgcXVhcnRlclZhbHVlcyA9IHtcbiAgbmFycm93OiBbJzEnLCAnMicsICczJywgJzQnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnUTEnLCAnUTInLCAnUTMnLCAnUTQnXSxcbiAgd2lkZTogWycxc3QgcXVhcnRlcicsICcybmQgcXVhcnRlcicsICczcmQgcXVhcnRlcicsICc0dGggcXVhcnRlciddXG59O1xuXG4vLyBOb3RlOiBpbiBFbmdsaXNoLCB0aGUgbmFtZXMgb2YgZGF5cyBvZiB0aGUgd2VlayBhbmQgbW9udGhzIGFyZSBjYXBpdGFsaXplZC5cbi8vIElmIHlvdSBhcmUgbWFraW5nIGEgbmV3IGxvY2FsZSBiYXNlZCBvbiB0aGlzIG9uZSwgY2hlY2sgaWYgdGhlIHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIGxhbmd1YWdlIHlvdSdyZSB3b3JraW5nIG9uLlxuLy8gR2VuZXJhbGx5LCBmb3JtYXR0ZWQgZGF0ZXMgc2hvdWxkIGxvb2sgbGlrZSB0aGV5IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgc2VudGVuY2UsXG4vLyBlLmcuIGluIFNwYW5pc2ggbGFuZ3VhZ2UgdGhlIHdlZWtkYXlzIGFuZCBtb250aHMgc2hvdWxkIGJlIGluIHRoZSBsb3dlcmNhc2UuXG52YXIgbW9udGhWYWx1ZXMgPSB7XG4gIG5hcnJvdzogWydKJywgJ0YnLCAnTScsICdBJywgJ00nLCAnSicsICdKJywgJ0EnLCAnUycsICdPJywgJ04nLCAnRCddLFxuICBhYmJyZXZpYXRlZDogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICB3aWRlOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXVxufTtcblxudmFyIGRheVZhbHVlcyA9IHtcbiAgbmFycm93OiBbJ1MnLCAnTScsICdUJywgJ1cnLCAnVCcsICdGJywgJ1MnXSxcbiAgc2hvcnQ6IFsnU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gIHdpZGU6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXVxufTtcblxudmFyIGRheVBlcmlvZFZhbHVlcyA9IHtcbiAgbmFycm93OiB7XG4gICAgYW06ICdhJyxcbiAgICBwbTogJ3AnLFxuICAgIG1pZG5pZ2h0OiAnbWknLFxuICAgIG5vb246ICduJyxcbiAgICBtb3JuaW5nOiAnbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnZXZlbmluZycsXG4gICAgbmlnaHQ6ICduaWdodCdcbiAgfSxcbiAgYWJicmV2aWF0ZWQ6IHtcbiAgICBhbTogJ0FNJyxcbiAgICBwbTogJ1BNJyxcbiAgICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgICBub29uOiAnbm9vbicsXG4gICAgbW9ybmluZzogJ21vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2FmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2V2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnbmlnaHQnXG4gIH0sXG4gIHdpZGU6IHtcbiAgICBhbTogJ2EubS4nLFxuICAgIHBtOiAncC5tLicsXG4gICAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gICAgbm9vbjogJ25vb24nLFxuICAgIG1vcm5pbmc6ICdtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdldmVuaW5nJyxcbiAgICBuaWdodDogJ25pZ2h0J1xuICB9XG59O1xudmFyIGZvcm1hdHRpbmdEYXlQZXJpb2RWYWx1ZXMgPSB7XG4gIG5hcnJvdzoge1xuICAgIGFtOiAnYScsXG4gICAgcG06ICdwJyxcbiAgICBtaWRuaWdodDogJ21pJyxcbiAgICBub29uOiAnbicsXG4gICAgbW9ybmluZzogJ2luIHRoZSBtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdpbiB0aGUgYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnaW4gdGhlIGV2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnYXQgbmlnaHQnXG4gIH0sXG4gIGFiYnJldmlhdGVkOiB7XG4gICAgYW06ICdBTScsXG4gICAgcG06ICdQTScsXG4gICAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gICAgbm9vbjogJ25vb24nLFxuICAgIG1vcm5pbmc6ICdpbiB0aGUgbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnaW4gdGhlIGFmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2luIHRoZSBldmVuaW5nJyxcbiAgICBuaWdodDogJ2F0IG5pZ2h0J1xuICB9LFxuICB3aWRlOiB7XG4gICAgYW06ICdhLm0uJyxcbiAgICBwbTogJ3AubS4nLFxuICAgIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICAgIG5vb246ICdub29uJyxcbiAgICBtb3JuaW5nOiAnaW4gdGhlIG1vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2luIHRoZSBhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdpbiB0aGUgZXZlbmluZycsXG4gICAgbmlnaHQ6ICdhdCBuaWdodCdcbiAgfVxufTtcblxuZnVuY3Rpb24gb3JkaW5hbE51bWJlciAoZGlydHlOdW1iZXIsIGRpcnR5T3B0aW9ucykge1xuICB2YXIgbnVtYmVyID0gTnVtYmVyKGRpcnR5TnVtYmVyKTtcblxuICAvLyBJZiBvcmRpbmFsIG51bWJlcnMgZGVwZW5kIG9uIGNvbnRleHQsIGZvciBleGFtcGxlLFxuICAvLyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudCBncmFtbWF0aWNhbCBnZW5kZXJzLFxuICAvLyB1c2UgYG9wdGlvbnMudW5pdGA6XG4gIC8vXG4gIC8vICAgdmFyIG9wdGlvbnMgPSBkaXJ0eU9wdGlvbnMgfHwge31cbiAgLy8gICB2YXIgdW5pdCA9IFN0cmluZyhvcHRpb25zLnVuaXQpXG4gIC8vXG4gIC8vIHdoZXJlIGB1bml0YCBjYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RhdGUnLCAnZGF5T2ZZZWFyJyxcbiAgLy8gJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnXG5cbiAgdmFyIHJlbTEwMCA9IG51bWJlciAlIDEwMDtcbiAgaWYgKHJlbTEwMCA+IDIwIHx8IHJlbTEwMCA8IDEwKSB7XG4gICAgc3dpdGNoIChyZW0xMDAgJSAxMCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgJ3N0J1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgJ25kJ1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgJ3JkJ1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVtYmVyICsgJ3RoJ1xufVxuXG52YXIgbG9jYWxpemUgPSB7XG4gIG9yZGluYWxOdW1iZXI6IG9yZGluYWxOdW1iZXIsXG5cbiAgZXJhOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogZXJhVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnXG4gIH0pLFxuXG4gIHF1YXJ0ZXI6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBxdWFydGVyVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnLFxuICAgIGFyZ3VtZW50Q2FsbGJhY2s6IGZ1bmN0aW9uIChxdWFydGVyKSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHF1YXJ0ZXIpIC0gMVxuICAgIH1cbiAgfSksXG5cbiAgbW9udGg6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBtb250aFZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6ICd3aWRlJ1xuICB9KSxcblxuICBkYXk6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBkYXlWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZSdcbiAgfSksXG5cbiAgZGF5UGVyaW9kOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogZGF5UGVyaW9kVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnLFxuICAgIGZvcm1hdHRpbmdWYWx1ZXM6IGZvcm1hdHRpbmdEYXlQZXJpb2RWYWx1ZXMsXG4gICAgZGVmYXVsRm9ybWF0dGluZ1dpZHRoOiAnd2lkZSdcbiAgfSlcbn07XG5cbmZ1bmN0aW9uIGJ1aWxkTWF0Y2hQYXR0ZXJuRm4gKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChkaXJ0eVN0cmluZywgZGlydHlPcHRpb25zKSB7XG4gICAgdmFyIHN0cmluZyA9IFN0cmluZyhkaXJ0eVN0cmluZyk7XG4gICAgdmFyIG9wdGlvbnMgPSBkaXJ0eU9wdGlvbnMgfHwge307XG5cbiAgICB2YXIgbWF0Y2hSZXN1bHQgPSBzdHJpbmcubWF0Y2goYXJncy5tYXRjaFBhdHRlcm4pO1xuICAgIGlmICghbWF0Y2hSZXN1bHQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHZhciBtYXRjaGVkU3RyaW5nID0gbWF0Y2hSZXN1bHRbMF07XG5cbiAgICB2YXIgcGFyc2VSZXN1bHQgPSBzdHJpbmcubWF0Y2goYXJncy5wYXJzZVBhdHRlcm4pO1xuICAgIGlmICghcGFyc2VSZXN1bHQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHZhciB2YWx1ZSA9IGFyZ3MudmFsdWVDYWxsYmFjayA/IGFyZ3MudmFsdWVDYWxsYmFjayhwYXJzZVJlc3VsdFswXSkgOiBwYXJzZVJlc3VsdFswXTtcbiAgICB2YWx1ZSA9IG9wdGlvbnMudmFsdWVDYWxsYmFjayA/IG9wdGlvbnMudmFsdWVDYWxsYmFjayh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICByZXN0OiBzdHJpbmcuc2xpY2UobWF0Y2hlZFN0cmluZy5sZW5ndGgpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTWF0Y2hGbiAoYXJncykge1xuICByZXR1cm4gZnVuY3Rpb24gKGRpcnR5U3RyaW5nLCBkaXJ0eU9wdGlvbnMpIHtcbiAgICB2YXIgc3RyaW5nID0gU3RyaW5nKGRpcnR5U3RyaW5nKTtcbiAgICB2YXIgb3B0aW9ucyA9IGRpcnR5T3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgd2lkdGggPSBvcHRpb25zLndpZHRoO1xuXG4gICAgdmFyIG1hdGNoUGF0dGVybiA9ICh3aWR0aCAmJiBhcmdzLm1hdGNoUGF0dGVybnNbd2lkdGhdKSB8fCBhcmdzLm1hdGNoUGF0dGVybnNbYXJncy5kZWZhdWx0TWF0Y2hXaWR0aF07XG4gICAgdmFyIG1hdGNoUmVzdWx0ID0gc3RyaW5nLm1hdGNoKG1hdGNoUGF0dGVybik7XG5cbiAgICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICB2YXIgbWF0Y2hlZFN0cmluZyA9IG1hdGNoUmVzdWx0WzBdO1xuXG4gICAgdmFyIHBhcnNlUGF0dGVybnMgPSAod2lkdGggJiYgYXJncy5wYXJzZVBhdHRlcm5zW3dpZHRoXSkgfHwgYXJncy5wYXJzZVBhdHRlcm5zW2FyZ3MuZGVmYXVsdFBhcnNlV2lkdGhdO1xuXG4gICAgdmFyIHZhbHVlO1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocGFyc2VQYXR0ZXJucykgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIHZhbHVlID0gcGFyc2VQYXR0ZXJucy5maW5kSW5kZXgoZnVuY3Rpb24gKHBhdHRlcm4pIHtcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdChzdHJpbmcpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBmaW5kS2V5KHBhcnNlUGF0dGVybnMsIGZ1bmN0aW9uIChwYXR0ZXJuKSB7XG4gICAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3Qoc3RyaW5nKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFsdWUgPSBhcmdzLnZhbHVlQ2FsbGJhY2sgPyBhcmdzLnZhbHVlQ2FsbGJhY2sodmFsdWUpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBvcHRpb25zLnZhbHVlQ2FsbGJhY2sgPyBvcHRpb25zLnZhbHVlQ2FsbGJhY2sodmFsdWUpIDogdmFsdWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgcmVzdDogc3RyaW5nLnNsaWNlKG1hdGNoZWRTdHJpbmcubGVuZ3RoKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kS2V5IChvYmplY3QsIHByZWRpY2F0ZSkge1xuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdC5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHByZWRpY2F0ZShvYmplY3Rba2V5XSkpIHtcbiAgICAgIHJldHVybiBrZXlcbiAgICB9XG4gIH1cbn1cblxudmFyIG1hdGNoT3JkaW5hbE51bWJlclBhdHRlcm4gPSAvXihcXGQrKSh0aHxzdHxuZHxyZCk/L2k7XG52YXIgcGFyc2VPcmRpbmFsTnVtYmVyUGF0dGVybiA9IC9cXGQrL2k7XG5cbnZhciBtYXRjaEVyYVBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eKGJ8YSkvaSxcbiAgYWJicmV2aWF0ZWQ6IC9eKGJcXC4/XFxzP2NcXC4/fGJcXC4/XFxzP2NcXC4/XFxzP2VcXC4/fGFcXC4/XFxzP2RcXC4/fGNcXC4/XFxzP2VcXC4/KS9pLFxuICB3aWRlOiAvXihiZWZvcmUgY2hyaXN0fGJlZm9yZSBjb21tb24gZXJhfGFubm8gZG9taW5pfGNvbW1vbiBlcmEpL2lcbn07XG52YXIgcGFyc2VFcmFQYXR0ZXJucyA9IHtcbiAgYW55OiBbL15iL2ksIC9eKGF8YykvaV1cbn07XG5cbnZhciBtYXRjaFF1YXJ0ZXJQYXR0ZXJucyA9IHtcbiAgbmFycm93OiAvXlsxMjM0XS9pLFxuICBhYmJyZXZpYXRlZDogL15xWzEyMzRdL2ksXG4gIHdpZGU6IC9eWzEyMzRdKHRofHN0fG5kfHJkKT8gcXVhcnRlci9pXG59O1xudmFyIHBhcnNlUXVhcnRlclBhdHRlcm5zID0ge1xuICBhbnk6IFsvMS9pLCAvMi9pLCAvMy9pLCAvNC9pXVxufTtcblxudmFyIG1hdGNoTW9udGhQYXR0ZXJucyA9IHtcbiAgbmFycm93OiAvXltqZm1hc29uZF0vaSxcbiAgYWJicmV2aWF0ZWQ6IC9eKGphbnxmZWJ8bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjKS9pLFxuICB3aWRlOiAvXihqYW51YXJ5fGZlYnJ1YXJ5fG1hcmNofGFwcmlsfG1heXxqdW5lfGp1bHl8YXVndXN0fHNlcHRlbWJlcnxvY3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pXG59O1xudmFyIHBhcnNlTW9udGhQYXR0ZXJucyA9IHtcbiAgbmFycm93OiBbL15qL2ksIC9eZi9pLCAvXm0vaSwgL15hL2ksIC9ebS9pLCAvXmovaSwgL15qL2ksIC9eYS9pLCAvXnMvaSwgL15vL2ksIC9ebi9pLCAvXmQvaV0sXG4gIGFueTogWy9eamEvaSwgL15mL2ksIC9ebWFyL2ksIC9eYXAvaSwgL15tYXkvaSwgL15qdW4vaSwgL15qdWwvaSwgL15hdS9pLCAvXnMvaSwgL15vL2ksIC9ebi9pLCAvXmQvaV1cbn07XG5cbnZhciBtYXRjaERheVBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eW3NtdHdmXS9pLFxuICBzaG9ydDogL14oc3V8bW98dHV8d2V8dGh8ZnJ8c2EpL2ksXG4gIGFiYnJldmlhdGVkOiAvXihzdW58bW9ufHR1ZXx3ZWR8dGh1fGZyaXxzYXQpL2ksXG4gIHdpZGU6IC9eKHN1bmRheXxtb25kYXl8dHVlc2RheXx3ZWRuZXNkYXl8dGh1cnNkYXl8ZnJpZGF5fHNhdHVyZGF5KS9pXG59O1xudmFyIHBhcnNlRGF5UGF0dGVybnMgPSB7XG4gIG5hcnJvdzogWy9ecy9pLCAvXm0vaSwgL150L2ksIC9edy9pLCAvXnQvaSwgL15mL2ksIC9ecy9pXSxcbiAgYW55OiBbL15zdS9pLCAvXm0vaSwgL150dS9pLCAvXncvaSwgL150aC9pLCAvXmYvaSwgL15zYS9pXVxufTtcblxudmFyIG1hdGNoRGF5UGVyaW9kUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL14oYXxwfG1pfG58KGluIHRoZXxhdCkgKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpKS9pLFxuICBhbnk6IC9eKFthcF1cXC4/XFxzP21cXC4/fG1pZG5pZ2h0fG5vb258KGluIHRoZXxhdCkgKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpKS9pXG59O1xudmFyIHBhcnNlRGF5UGVyaW9kUGF0dGVybnMgPSB7XG4gIGFueToge1xuICAgIGFtOiAvXmEvaSxcbiAgICBwbTogL15wL2ksXG4gICAgbWlkbmlnaHQ6IC9ebWkvaSxcbiAgICBub29uOiAvXm5vL2ksXG4gICAgbW9ybmluZzogL21vcm5pbmcvaSxcbiAgICBhZnRlcm5vb246IC9hZnRlcm5vb24vaSxcbiAgICBldmVuaW5nOiAvZXZlbmluZy9pLFxuICAgIG5pZ2h0OiAvbmlnaHQvaVxuICB9XG59O1xuXG52YXIgbWF0Y2ggPSB7XG4gIG9yZGluYWxOdW1iZXI6IGJ1aWxkTWF0Y2hQYXR0ZXJuRm4oe1xuICAgIG1hdGNoUGF0dGVybjogbWF0Y2hPcmRpbmFsTnVtYmVyUGF0dGVybixcbiAgICBwYXJzZVBhdHRlcm46IHBhcnNlT3JkaW5hbE51bWJlclBhdHRlcm4sXG4gICAgdmFsdWVDYWxsYmFjazogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKVxuICAgIH1cbiAgfSksXG5cbiAgZXJhOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoRXJhUGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICd3aWRlJyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZUVyYVBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55J1xuICB9KSxcblxuICBxdWFydGVyOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoUXVhcnRlclBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnd2lkZScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VRdWFydGVyUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknLFxuICAgIHZhbHVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgcmV0dXJuIGluZGV4ICsgMVxuICAgIH1cbiAgfSksXG5cbiAgbW9udGg6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hNb250aFBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnd2lkZScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VNb250aFBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55J1xuICB9KSxcblxuICBkYXk6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hEYXlQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogJ3dpZGUnLFxuICAgIHBhcnNlUGF0dGVybnM6IHBhcnNlRGF5UGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknXG4gIH0pLFxuXG4gIGRheVBlcmlvZDogYnVpbGRNYXRjaEZuKHtcbiAgICBtYXRjaFBhdHRlcm5zOiBtYXRjaERheVBlcmlvZFBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnYW55JyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZURheVBlcmlvZFBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55J1xuICB9KVxufTtcblxuLyoqXG4gKiBAdHlwZSB7TG9jYWxlfVxuICogQGNhdGVnb3J5IExvY2FsZXNcbiAqIEBzdW1tYXJ5IEVuZ2xpc2ggbG9jYWxlIChVbml0ZWQgU3RhdGVzKS5cbiAqIEBsYW5ndWFnZSBFbmdsaXNoXG4gKiBAaXNvLTYzOS0yIGVuZ1xuICogQGF1dGhvciBTYXNoYSBLb3NzIFtAa29zc25vY29ycF17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2tvc3Nub2NvcnB9XG4gKiBAYXV0aG9yIExlc2hhIEtvc3MgW0BsZXNoYWtvc3Nde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNoYWtvc3N9XG4gKi9cbnZhciBsb2NhbGUkMSA9IHtcbiAgZm9ybWF0RGlzdGFuY2U6IGZvcm1hdERpc3RhbmNlLFxuICBmb3JtYXRMb25nOiBmb3JtYXRMb25nLFxuICBmb3JtYXRSZWxhdGl2ZTogZm9ybWF0UmVsYXRpdmUsXG4gIGxvY2FsaXplOiBsb2NhbGl6ZSxcbiAgbWF0Y2g6IG1hdGNoLFxuICBvcHRpb25zOiB7XG4gICAgd2Vla1N0YXJ0c09uOiAwIC8qIFN1bmRheSAqLyxcbiAgICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDFcbiAgfVxufTtcblxudmFyIE1JTExJU0VDT05EU19JTl9EQVkgPSA4NjQwMDAwMDtcblxuLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGEgcGFydCBvZiBwdWJsaWMgQVBJIHdoZW4gVVRDIGZ1bmN0aW9uIHdpbGwgYmUgaW1wbGVtZW50ZWQuXG4vLyBTZWUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMzc2XG5mdW5jdGlvbiBnZXRVVENEYXlPZlllYXIgKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgdmFyIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZlllYXJUaW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgdmFyIGRpZmZlcmVuY2UgPSB0aW1lc3RhbXAgLSBzdGFydE9mWWVhclRpbWVzdGFtcDtcbiAgcmV0dXJuIE1hdGguZmxvb3IoZGlmZmVyZW5jZSAvIE1JTExJU0VDT05EU19JTl9EQVkpICsgMVxufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgYSBwYXJ0IG9mIHB1YmxpYyBBUEkgd2hlbiBVVEMgZnVuY3Rpb24gd2lsbCBiZSBpbXBsZW1lbnRlZC5cbi8vIFNlZSBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNzZcbmZ1bmN0aW9uIHN0YXJ0T2ZVVENJU09XZWVrIChkaXJ0eURhdGUsIGRpcnR5T3B0aW9ucykge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCcpXG4gIH1cblxuICB2YXIgd2Vla1N0YXJ0c09uID0gMTtcblxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUsIGRpcnR5T3B0aW9ucyk7XG4gIHZhciBkYXkgPSBkYXRlLmdldFVUQ0RheSgpO1xuICB2YXIgZGlmZiA9IChkYXkgPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG5cbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gZGlmZik7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlXG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBhIHBhcnQgb2YgcHVibGljIEFQSSB3aGVuIFVUQyBmdW5jdGlvbiB3aWxsIGJlIGltcGxlbWVudGVkLlxuLy8gU2VlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzM3NlxuZnVuY3Rpb24gZ2V0VVRDSVNPV2Vla1llYXIgKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG5cbiAgdmFyIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhci5zZXRVVENGdWxsWWVhcih5ZWFyICsgMSwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mVVRDSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLCBkaXJ0eU9wdGlvbnMpO1xuXG4gIHZhciBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mVVRDSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyLCBkaXJ0eU9wdGlvbnMpO1xuXG4gIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mTmV4dFllYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXIgKyAxXG4gIH0gZWxzZSBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxXG4gIH1cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGEgcGFydCBvZiBwdWJsaWMgQVBJIHdoZW4gVVRDIGZ1bmN0aW9uIHdpbGwgYmUgaW1wbGVtZW50ZWQuXG4vLyBTZWUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMzc2XG5mdW5jdGlvbiBzdGFydE9mVVRDSVNPV2Vla1llYXIgKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIHZhciB5ZWFyID0gZ2V0VVRDSVNPV2Vla1llYXIoZGlydHlEYXRlLCBkaXJ0eU9wdGlvbnMpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5ID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZVVENJU09XZWVrKGZvdXJ0aE9mSmFudWFyeSwgZGlydHlPcHRpb25zKTtcbiAgcmV0dXJuIGRhdGVcbn1cblxudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgYSBwYXJ0IG9mIHB1YmxpYyBBUEkgd2hlbiBVVEMgZnVuY3Rpb24gd2lsbCBiZSBpbXBsZW1lbnRlZC5cbi8vIFNlZSBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNzZcbmZ1bmN0aW9uIGdldFVUQ0lTT1dlZWsgKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgdmFyIGRpZmYgPSBzdGFydE9mVVRDSVNPV2VlayhkYXRlLCBkaXJ0eU9wdGlvbnMpLmdldFRpbWUoKSAtIHN0YXJ0T2ZVVENJU09XZWVrWWVhcihkYXRlLCBkaXJ0eU9wdGlvbnMpLmdldFRpbWUoKTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspICsgMVxufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgYSBwYXJ0IG9mIHB1YmxpYyBBUEkgd2hlbiBVVEMgZnVuY3Rpb24gd2lsbCBiZSBpbXBsZW1lbnRlZC5cbi8vIFNlZSBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNzZcbmZ1bmN0aW9uIHN0YXJ0T2ZVVENXZWVrIChkaXJ0eURhdGUsIGRpcnR5T3B0aW9ucykge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCcpXG4gIH1cblxuICB2YXIgb3B0aW9ucyA9IGRpcnR5T3B0aW9ucyB8fCB7fTtcbiAgdmFyIGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlO1xuICB2YXIgbG9jYWxlV2Vla1N0YXJ0c09uID0gbG9jYWxlICYmIGxvY2FsZS5vcHRpb25zICYmIGxvY2FsZS5vcHRpb25zLndlZWtTdGFydHNPbjtcbiAgdmFyIGRlZmF1bHRXZWVrU3RhcnRzT24gPSBsb2NhbGVXZWVrU3RhcnRzT24gPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIobG9jYWxlV2Vla1N0YXJ0c09uKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IG9wdGlvbnMud2Vla1N0YXJ0c09uID09IG51bGwgPyBkZWZhdWx0V2Vla1N0YXJ0c09uIDogdG9JbnRlZ2VyKG9wdGlvbnMud2Vla1N0YXJ0c09uKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5JylcbiAgfVxuXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgb3B0aW9ucyk7XG4gIHZhciBkYXkgPSBkYXRlLmdldFVUQ0RheSgpO1xuICB2YXIgZGlmZiA9IChkYXkgPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG5cbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gZGlmZik7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlXG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBhIHBhcnQgb2YgcHVibGljIEFQSSB3aGVuIFVUQyBmdW5jdGlvbiB3aWxsIGJlIGltcGxlbWVudGVkLlxuLy8gU2VlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzM3NlxuZnVuY3Rpb24gZ2V0VVRDV2Vla1llYXIgKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG5cbiAgdmFyIG9wdGlvbnMgPSBkaXJ0eU9wdGlvbnMgfHwge307XG4gIHZhciBsb2NhbGUgPSBvcHRpb25zLmxvY2FsZTtcbiAgdmFyIGxvY2FsZUZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IGxvY2FsZSAmJlxuICAgIGxvY2FsZS5vcHRpb25zICYmXG4gICAgbG9jYWxlLm9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlO1xuICB2YXIgZGVmYXVsdEZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9XG4gICAgbG9jYWxlRmlyc3RXZWVrQ29udGFpbnNEYXRlID09IG51bGxcbiAgICAgID8gMVxuICAgICAgOiB0b0ludGVnZXIobG9jYWxlRmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9XG4gICAgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUgPT0gbnVsbFxuICAgICAgPyBkZWZhdWx0Rmlyc3RXZWVrQ29udGFpbnNEYXRlXG4gICAgICA6IHRvSW50ZWdlcihvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEoZmlyc3RXZWVrQ29udGFpbnNEYXRlID49IDEgJiYgZmlyc3RXZWVrQ29udGFpbnNEYXRlIDw9IDcpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2ZpcnN0V2Vla0NvbnRhaW5zRGF0ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNyBpbmNsdXNpdmVseScpXG4gIH1cblxuICB2YXIgZmlyc3RXZWVrT2ZOZXh0WWVhciA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldFVUQ0Z1bGxZZWFyKHllYXIgKyAxLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZlVUQ1dlZWsoZmlyc3RXZWVrT2ZOZXh0WWVhciwgZGlydHlPcHRpb25zKTtcblxuICB2YXIgZmlyc3RXZWVrT2ZUaGlzWWVhciA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mVVRDV2VlayhmaXJzdFdlZWtPZlRoaXNZZWFyLCBkaXJ0eU9wdGlvbnMpO1xuXG4gIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mTmV4dFllYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXIgKyAxXG4gIH0gZWxzZSBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxXG4gIH1cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGEgcGFydCBvZiBwdWJsaWMgQVBJIHdoZW4gVVRDIGZ1bmN0aW9uIHdpbGwgYmUgaW1wbGVtZW50ZWQuXG4vLyBTZWUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMzc2XG5mdW5jdGlvbiBzdGFydE9mVVRDV2Vla1llYXIgKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIHZhciBvcHRpb25zID0gZGlydHlPcHRpb25zIHx8IHt9O1xuICB2YXIgbG9jYWxlID0gb3B0aW9ucy5sb2NhbGU7XG4gIHZhciBsb2NhbGVGaXJzdFdlZWtDb250YWluc0RhdGUgPSBsb2NhbGUgJiZcbiAgICBsb2NhbGUub3B0aW9ucyAmJlxuICAgIGxvY2FsZS5vcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZTtcbiAgdmFyIGRlZmF1bHRGaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIGxvY2FsZUZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9PSBudWxsXG4gICAgICA/IDFcbiAgICAgIDogdG9JbnRlZ2VyKGxvY2FsZUZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlID09IG51bGxcbiAgICAgID8gZGVmYXVsdEZpcnN0V2Vla0NvbnRhaW5zRGF0ZVxuICAgICAgOiB0b0ludGVnZXIob3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpO1xuXG4gIHZhciB5ZWFyID0gZ2V0VVRDV2Vla1llYXIoZGlydHlEYXRlLCBkaXJ0eU9wdGlvbnMpO1xuICB2YXIgZmlyc3RXZWVrID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vlay5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWsuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXRlID0gc3RhcnRPZlVUQ1dlZWsoZmlyc3RXZWVrLCBkaXJ0eU9wdGlvbnMpO1xuICByZXR1cm4gZGF0ZVxufVxuXG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUskMSA9IDYwNDgwMDAwMDtcblxuLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGEgcGFydCBvZiBwdWJsaWMgQVBJIHdoZW4gVVRDIGZ1bmN0aW9uIHdpbGwgYmUgaW1wbGVtZW50ZWQuXG4vLyBTZWUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMzc2XG5mdW5jdGlvbiBnZXRVVENXZWVrIChkaXJ0eURhdGUsIGRpcnR5T3B0aW9ucykge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCcpXG4gIH1cblxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUsIGRpcnR5T3B0aW9ucyk7XG4gIHZhciBkaWZmID0gc3RhcnRPZlVUQ1dlZWsoZGF0ZSwgZGlydHlPcHRpb25zKS5nZXRUaW1lKCkgLSBzdGFydE9mVVRDV2Vla1llYXIoZGF0ZSwgZGlydHlPcHRpb25zKS5nZXRUaW1lKCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIE1JTExJU0VDT05EU19JTl9XRUVLJDEpICsgMVxufVxuXG52YXIgZGF5UGVyaW9kRW51bSA9IHtcbiAgYW06ICdhbScsXG4gIHBtOiAncG0nLFxuICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgbm9vbjogJ25vb24nLFxuICBtb3JuaW5nOiAnbW9ybmluZycsXG4gIGFmdGVybm9vbjogJ2FmdGVybm9vbicsXG4gIGV2ZW5pbmc6ICdldmVuaW5nJyxcbiAgbmlnaHQ6ICduaWdodCdcbn07XG5cbi8qXG4gKiB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICBhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBBKiB8IE1pbGxpc2Vjb25kcyBpbiBkYXkgICAgICAgICAgICB8XG4gKiB8ICBiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICB8ICBCICB8IEZsZXhpYmxlIGRheSBwZXJpb2QgICAgICAgICAgICB8XG4gKiB8ICBjICB8IFN0YW5kLWFsb25lIGxvY2FsIGRheSBvZiB3ZWVrICB8ICBDKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8XG4gKiB8ICBkICB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICB8ICBEICB8IERheSBvZiB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBlICB8IExvY2FsIGRheSBvZiB3ZWVrICAgICAgICAgICAgICB8ICBFICB8IERheSBvZiB3ZWVrICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBmICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBGKiB8IERheSBvZiB3ZWVrIGluIG1vbnRoICAgICAgICAgICB8XG4gKiB8ICBnKiB8IE1vZGlmaWVkIEp1bGlhbiBkYXkgICAgICAgICAgICB8ICBHICB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBoICB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICB8ICBIICB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBpISB8IElTTyBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgICB8ICBJISB8IElTTyB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgICB8XG4gKiB8ICBqKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8ICBKKiB8IExvY2FsaXplZCBob3VyIHcvbyBkYXkgcGVyaW9kICB8XG4gKiB8ICBrICB8IEhvdXIgWzEtMjRdICAgICAgICAgICAgICAgICAgICB8ICBLICB8IEhvdXIgWzAtMTFdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBsKiB8IChkZXByZWNhdGVkKSAgICAgICAgICAgICAgICAgICB8ICBMICB8IFN0YW5kLWFsb25lIG1vbnRoICAgICAgICAgICAgICB8XG4gKiB8ICBtICB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBNICB8IE1vbnRoICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBuICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBOICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBvISB8IE9yZGluYWwgbnVtYmVyIG1vZGlmaWVyICAgICAgICB8ICBPICB8IFRpbWV6b25lIChHTVQpICAgICAgICAgICAgICAgICB8XG4gKiB8ICBwISB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICB8ICBQISB8IExvbmcgbG9jYWxpemVkIGRhdGUgICAgICAgICAgICB8XG4gKiB8ICBxICB8IFN0YW5kLWFsb25lIHF1YXJ0ZXIgICAgICAgICAgICB8ICBRICB8IFF1YXJ0ZXIgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICByKiB8IFJlbGF0ZWQgR3JlZ29yaWFuIHllYXIgICAgICAgICB8ICBSISB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICB8XG4gKiB8ICBzICB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBTICB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICB8XG4gKiB8ICB0ISB8IFNlY29uZHMgdGltZXN0YW1wICAgICAgICAgICAgICB8ICBUISB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICB8XG4gKiB8ICB1ICB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICB8ICBVKiB8IEN5Y2xpYyB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICB2KiB8IFRpbWV6b25lIChnZW5lcmljIG5vbi1sb2NhdC4pICB8ICBWKiB8IFRpbWV6b25lIChsb2NhdGlvbikgICAgICAgICAgICB8XG4gKiB8ICB3ICB8IExvY2FsIHdlZWsgb2YgeWVhciAgICAgICAgICAgICB8ICBXKiB8IFdlZWsgb2YgbW9udGggICAgICAgICAgICAgICAgICB8XG4gKiB8ICB4ICB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICB8ICBYICB8IFRpbWV6b25lIChJU08tODYwMSkgICAgICAgICAgICB8XG4gKiB8ICB5ICB8IFllYXIgKGFicykgICAgICAgICAgICAgICAgICAgICB8ICBZICB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICB8XG4gKiB8ICB6ICB8IFRpbWV6b25lIChzcGVjaWZpYyBub24tbG9jYXQuKSB8ICBaKiB8IFRpbWV6b25lIChhbGlhc2VzKSAgICAgICAgICAgICB8XG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgKiBhcmUgbm90IGltcGxlbWVudGVkIGJ1dCByZXNlcnZlZCBieSBVbmljb2RlIHN0YW5kYXJkLlxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICEgYXJlIG5vbi1zdGFuZGFyZCwgYnV0IGltcGxlbWVudGVkIGJ5IGRhdGUtZm5zOlxuICogLSBgb2AgbW9kaWZpZXMgdGhlIHByZXZpb3VzIHRva2VuIHRvIHR1cm4gaXQgaW50byBhbiBvcmRpbmFsIChzZWUgYGZvcm1hdGAgZG9jcylcbiAqIC0gYGlgIGlzIElTTyBkYXkgb2Ygd2Vlay4gRm9yIGBpYCBhbmQgYGlpYCBpcyByZXR1cm5zIG51bWVyaWMgSVNPIHdlZWsgZGF5cyxcbiAqICAgaS5lLiA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuICogLSBgSWAgaXMgSVNPIHdlZWsgb2YgeWVhciwgYXMgb3Bwb3NlZCB0byBgd2Agd2hpY2ggaXMgbG9jYWwgd2VlayBvZiB5ZWFyLlxuICogLSBgUmAgaXMgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsIGFzIG9wcG9zZWQgdG8gYFlgIHdoaWNoIGlzIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiAgIGBSYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYElgIGFuZCBgaWBcbiAqICAgZm9yIHVuaXZlcnNhbCBJU08gd2Vlay1udW1iZXJpbmcgZGF0ZSwgd2hlcmVhc1xuICogICBgWWAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB3YCBhbmQgYGVgXG4gKiAgIGZvciB3ZWVrLW51bWJlcmluZyBkYXRlIHNwZWNpZmljIHRvIHRoZSBsb2NhbGUuXG4gKiAtIGBQYCBpcyBsb25nIGxvY2FsaXplZCBkYXRlIGZvcm1hdFxuICogLSBgcGAgaXMgbG9uZyBsb2NhbGl6ZWQgdGltZSBmb3JtYXRcbiAqL1xuXG52YXIgZm9ybWF0dGVycyA9IHtcbiAgLy8gRXJhXG4gIEc6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgZXJhID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpID4gMCA/IDEgOiAwO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIEFELCBCQ1xuICAgICAgY2FzZSAnRyc6XG4gICAgICBjYXNlICdHRyc6XG4gICAgICBjYXNlICdHR0cnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZXJhKGVyYSwge3dpZHRoOiAnYWJicmV2aWF0ZWQnfSlcbiAgICAgIC8vIEEsIEJcbiAgICAgIGNhc2UgJ0dHR0dHJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHt3aWR0aDogJ25hcnJvdyd9KVxuICAgICAgLy8gQW5ubyBEb21pbmksIEJlZm9yZSBDaHJpc3RcbiAgICAgIGNhc2UgJ0dHR0cnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHt3aWR0aDogJ3dpZGUnfSlcbiAgICB9XG4gIH0sXG5cbiAgLy8gWWVhclxuICB5OiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgLy8gRnJvbSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LTMxL3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0Zvcm1hdF90b2tlbnNcbiAgICAvLyB8IFllYXIgICAgIHwgICAgIHkgfCB5eSB8ICAgeXl5IHwgIHl5eXkgfCB5eXl5eSB8XG4gICAgLy8gfC0tLS0tLS0tLS18LS0tLS0tLXwtLS0tfC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tfFxuICAgIC8vIHwgQUQgMSAgICAgfCAgICAgMSB8IDAxIHwgICAwMDEgfCAgMDAwMSB8IDAwMDAxIHxcbiAgICAvLyB8IEFEIDEyICAgIHwgICAgMTIgfCAxMiB8ICAgMDEyIHwgIDAwMTIgfCAwMDAxMiB8XG4gICAgLy8gfCBBRCAxMjMgICB8ICAgMTIzIHwgMjMgfCAgIDEyMyB8ICAwMTIzIHwgMDAxMjMgfFxuICAgIC8vIHwgQUQgMTIzNCAgfCAgMTIzNCB8IDM0IHwgIDEyMzQgfCAgMTIzNCB8IDAxMjM0IHxcbiAgICAvLyB8IEFEIDEyMzQ1IHwgMTIzNDUgfCA0NSB8IDEyMzQ1IHwgMTIzNDUgfCAxMjM0NSB8XG5cbiAgICB2YXIgc2lnbmVkWWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcblxuICAgIC8vIFJldHVybnMgMSBmb3IgMSBCQyAod2hpY2ggaXMgeWVhciAwIGluIEphdmFTY3JpcHQpXG4gICAgdmFyIHllYXIgPSBzaWduZWRZZWFyID4gMCA/IHNpZ25lZFllYXIgOiAxIC0gc2lnbmVkWWVhcjtcblxuICAgIC8vIFR3byBkaWdpdCB5ZWFyXG4gICAgaWYgKHRva2VuID09PSAneXknKSB7XG4gICAgICB2YXIgdHdvRGlnaXRZZWFyID0geWVhciAlIDEwMDtcbiAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3ModHdvRGlnaXRZZWFyLCAyKVxuICAgIH1cblxuICAgIC8vIE9yZGluYWwgbnVtYmVyXG4gICAgaWYgKHRva2VuID09PSAneW8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcih5ZWFyLCB7dW5pdDogJ3llYXInfSlcbiAgICB9XG5cbiAgICAvLyBQYWRkaW5nXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh5ZWFyLCB0b2tlbi5sZW5ndGgpXG4gIH0sXG5cbiAgLy8gTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhclxuICBZOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIHNpZ25lZFdlZWtZZWFyID0gZ2V0VVRDV2Vla1llYXIoZGF0ZSwgb3B0aW9ucyk7XG4gICAgdmFyIHdlZWtZZWFyID0gc2lnbmVkV2Vla1llYXIgPiAwID8gc2lnbmVkV2Vla1llYXIgOiAxIC0gc2lnbmVkV2Vla1llYXI7XG5cbiAgICAvLyBUd28gZGlnaXQgeWVhclxuICAgIGlmICh0b2tlbiA9PT0gJ1lZJykge1xuICAgICAgdmFyIHR3b0RpZ2l0WWVhciA9IHdlZWtZZWFyICUgMTAwO1xuICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0d29EaWdpdFllYXIsIDIpXG4gICAgfVxuXG4gICAgLy8gT3JkaW5hbCBudW1iZXJcbiAgICBpZiAodG9rZW4gPT09ICdZbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHdlZWtZZWFyLCB7dW5pdDogJ3llYXInfSlcbiAgICB9XG5cbiAgICAvLyBQYWRkaW5nXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh3ZWVrWWVhciwgdG9rZW4ubGVuZ3RoKVxuICB9LFxuXG4gIC8vIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gIFI6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgaXNvV2Vla1llYXIgPSBnZXRVVENJU09XZWVrWWVhcihkYXRlLCBvcHRpb25zKTtcblxuICAgIC8vIFBhZGRpbmdcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGlzb1dlZWtZZWFyLCB0b2tlbi5sZW5ndGgpXG4gIH0sXG5cbiAgLy8gRXh0ZW5kZWQgeWVhci4gVGhpcyBpcyBhIHNpbmdsZSBudW1iZXIgZGVzaWduYXRpbmcgdGhlIHllYXIgb2YgdGhpcyBjYWxlbmRhciBzeXN0ZW0uXG4gIC8vIFRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiBgeWAgYW5kIGB1YCBsb2NhbGl6ZXJzIGFyZSBCLkMuIHllYXJzOlxuICAvLyB8IFllYXIgfCBgeWAgfCBgdWAgfFxuICAvLyB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICAvLyB8IEFDIDEgfCAgIDEgfCAgIDEgfFxuICAvLyB8IEJDIDEgfCAgIDEgfCAgIDAgfFxuICAvLyB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICAvLyBBbHNvIGB5eWAgYWx3YXlzIHJldHVybnMgdGhlIGxhc3QgdHdvIGRpZ2l0cyBvZiBhIHllYXIsXG4gIC8vIHdoaWxlIGB1dWAgcGFkcyBzaW5nbGUgZGlnaXQgeWVhcnMgdG8gMiBjaGFyYWN0ZXJzIGFuZCByZXR1cm5zIG90aGVyIHllYXJzIHVuY2hhbmdlZC5cbiAgdTogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoeWVhciwgdG9rZW4ubGVuZ3RoKVxuICB9LFxuXG4gIC8vIFF1YXJ0ZXJcbiAgUTogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBxdWFydGVyID0gTWF0aC5jZWlsKChkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSAvIDMpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgIGNhc2UgJ1EnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHF1YXJ0ZXIpXG4gICAgICAvLyAwMSwgMDIsIDAzLCAwNFxuICAgICAgY2FzZSAnUVEnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHF1YXJ0ZXIsIDIpXG4gICAgICAvLyAxc3QsIDJuZCwgM3JkLCA0dGhcbiAgICAgIGNhc2UgJ1FvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIocXVhcnRlciwge3VuaXQ6ICdxdWFydGVyJ30pXG4gICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuICAgICAgY2FzZSAnUVFRJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG4gICAgICBjYXNlICdRUVFRUSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuICAgICAgY2FzZSAnUVFRUSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7d2lkdGg6ICd3aWRlJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICB9XG4gIH0sXG5cbiAgLy8gU3RhbmQtYWxvbmUgcXVhcnRlclxuICBxOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIHF1YXJ0ZXIgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpIC8gMyk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMSwgMiwgMywgNFxuICAgICAgY2FzZSAncSc6XG4gICAgICAgIHJldHVybiBTdHJpbmcocXVhcnRlcilcbiAgICAgIC8vIDAxLCAwMiwgMDMsIDA0XG4gICAgICBjYXNlICdxcSc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MocXVhcnRlciwgMilcbiAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuICAgICAgY2FzZSAncW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihxdWFydGVyLCB7dW5pdDogJ3F1YXJ0ZXInfSlcbiAgICAgIC8vIFExLCBRMiwgUTMsIFE0XG4gICAgICBjYXNlICdxcXEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCcsIGNvbnRleHQ6ICdzdGFuZGFsb25lJ30pXG4gICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcbiAgICAgIGNhc2UgJ3FxcXFxJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ3N0YW5kYWxvbmUnfSlcbiAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG4gICAgICBjYXNlICdxcXFxJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHt3aWR0aDogJ3dpZGUnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KVxuICAgIH1cbiAgfSxcblxuICAvLyBNb250aFxuICBNOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIC4uLiwgMTJcbiAgICAgIGNhc2UgJ00nOlxuICAgICAgICByZXR1cm4gU3RyaW5nKG1vbnRoICsgMSlcbiAgICAgIC8vIDAxLCAwMiwgLi4uLCAxMlxuICAgICAgY2FzZSAnTU0nOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKG1vbnRoICsgMSwgMilcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgIGNhc2UgJ01vJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIobW9udGggKyAxLCB7dW5pdDogJ21vbnRoJ30pXG4gICAgICAvLyBKYW4sIEZlYiwgLi4uLCBEZWNcbiAgICAgIGNhc2UgJ01NTSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgLy8gSiwgRiwgLi4uLCBEXG4gICAgICBjYXNlICdNTU1NTSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG4gICAgICBjYXNlICdNTU1NJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge3dpZHRoOiAnd2lkZScsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgfVxuICB9LFxuXG4gIC8vIFN0YW5kLWFsb25lIG1vbnRoXG4gIEw6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMSwgMiwgLi4uLCAxMlxuICAgICAgY2FzZSAnTCc6XG4gICAgICAgIHJldHVybiBTdHJpbmcobW9udGggKyAxKVxuICAgICAgLy8gMDEsIDAyLCAuLi4sIDEyXG4gICAgICBjYXNlICdMTCc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MobW9udGggKyAxLCAyKVxuICAgICAgLy8gMXN0LCAybmQsIC4uLiwgMTJ0aFxuICAgICAgY2FzZSAnTG8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihtb250aCArIDEsIHt1bml0OiAnbW9udGgnfSlcbiAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuICAgICAgY2FzZSAnTExMJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCcsIGNvbnRleHQ6ICdzdGFuZGFsb25lJ30pXG4gICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgIGNhc2UgJ0xMTExMJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KVxuICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgIGNhc2UgJ0xMTEwnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7d2lkdGg6ICd3aWRlJywgY29udGV4dDogJ3N0YW5kYWxvbmUnfSlcbiAgICB9XG4gIH0sXG5cbiAgLy8gTG9jYWwgd2VlayBvZiB5ZWFyXG4gIHc6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgd2VlayA9IGdldFVUQ1dlZWsoZGF0ZSwgb3B0aW9ucyk7XG5cbiAgICBpZiAodG9rZW4gPT09ICd3bycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHdlZWssIHt1bml0OiAnd2Vlayd9KVxuICAgIH1cblxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3Mod2VlaywgdG9rZW4ubGVuZ3RoKVxuICB9LFxuXG4gIC8vIElTTyB3ZWVrIG9mIHllYXJcbiAgSTogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBpc29XZWVrID0gZ2V0VVRDSVNPV2VlayhkYXRlLCBvcHRpb25zKTtcblxuICAgIGlmICh0b2tlbiA9PT0gJ0lvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaXNvV2Vlaywge3VuaXQ6ICd3ZWVrJ30pXG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhpc29XZWVrLCB0b2tlbi5sZW5ndGgpXG4gIH0sXG5cbiAgLy8gRGF5IG9mIHRoZSBtb250aFxuICBkOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIGRheU9mTW9udGggPSBkYXRlLmdldFVUQ0RhdGUoKTtcblxuICAgIGlmICh0b2tlbiA9PT0gJ2RvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF5T2ZNb250aCwge3VuaXQ6ICdkYXRlJ30pXG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXlPZk1vbnRoLCB0b2tlbi5sZW5ndGgpXG4gIH0sXG5cbiAgLy8gRGF5IG9mIHllYXJcbiAgRDogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBkYXlPZlllYXIgPSBnZXRVVENEYXlPZlllYXIoZGF0ZSwgb3B0aW9ucyk7XG5cbiAgICBpZiAodG9rZW4gPT09ICdEbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRheU9mWWVhciwge3VuaXQ6ICdkYXlPZlllYXInfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRheU9mWWVhciwgdG9rZW4ubGVuZ3RoKVxuICB9LFxuXG4gIC8vIERheSBvZiB3ZWVrXG4gIEU6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgZGF5T2ZXZWVrID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBUdWVcbiAgICAgIGNhc2UgJ0UnOlxuICAgICAgY2FzZSAnRUUnOlxuICAgICAgY2FzZSAnRUVFJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgIC8vIFRcbiAgICAgIGNhc2UgJ0VFRUVFJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAvLyBUdVxuICAgICAgY2FzZSAnRUVFRUVFJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgJ0VFRUUnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHt3aWR0aDogJ3dpZGUnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgIH1cbiAgfSxcblxuICAvLyBMb2NhbCBkYXkgb2Ygd2Vla1xuICBlOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIGRheU9mV2VlayA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gICAgdmFyIGxvY2FsRGF5T2ZXZWVrID0gKChkYXlPZldlZWsgLSBvcHRpb25zLndlZWtTdGFydHNPbiArIDgpICUgNykgfHwgNztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBOdW1lcmljYWwgdmFsdWUgKE50aCBkYXkgb2Ygd2VlayB3aXRoIGN1cnJlbnQgbG9jYWxlIG9yIHdlZWtTdGFydHNPbilcbiAgICAgIGNhc2UgJ2UnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKGxvY2FsRGF5T2ZXZWVrKVxuICAgICAgLy8gUGFkZGVkIG51bWVyaWNhbCB2YWx1ZVxuICAgICAgY2FzZSAnZWUnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGxvY2FsRGF5T2ZXZWVrLCAyKVxuICAgICAgLy8gMXN0LCAybmQsIC4uLiwgN3RoXG4gICAgICBjYXNlICdlbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGxvY2FsRGF5T2ZXZWVrLCB7dW5pdDogJ2RheSd9KVxuICAgICAgY2FzZSAnZWVlJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgIC8vIFRcbiAgICAgIGNhc2UgJ2VlZWVlJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAvLyBUdVxuICAgICAgY2FzZSAnZWVlZWVlJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgJ2VlZWUnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHt3aWR0aDogJ3dpZGUnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgIH1cbiAgfSxcblxuICAvLyBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2Vla1xuICBjOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIGRheU9mV2VlayA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gICAgdmFyIGxvY2FsRGF5T2ZXZWVrID0gKChkYXlPZldlZWsgLSBvcHRpb25zLndlZWtTdGFydHNPbiArIDgpICUgNykgfHwgNztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBOdW1lcmljYWwgdmFsdWUgKHNhbWUgYXMgaW4gYGVgKVxuICAgICAgY2FzZSAnYyc6XG4gICAgICAgIHJldHVybiBTdHJpbmcobG9jYWxEYXlPZldlZWspXG4gICAgICAvLyBQYWRkZWQgbnVtYmVyaWNhbCB2YWx1ZVxuICAgICAgY2FzZSAnY2MnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGxvY2FsRGF5T2ZXZWVrLCB0b2tlbi5sZW5ndGgpXG4gICAgICAvLyAxc3QsIDJuZCwgLi4uLCA3dGhcbiAgICAgIGNhc2UgJ2NvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIobG9jYWxEYXlPZldlZWssIHt1bml0OiAnZGF5J30pXG4gICAgICBjYXNlICdjY2MnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KVxuICAgICAgLy8gVFxuICAgICAgY2FzZSAnY2NjY2MnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ3N0YW5kYWxvbmUnfSlcbiAgICAgIC8vIFR1XG4gICAgICBjYXNlICdjY2NjY2MnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge3dpZHRoOiAnc2hvcnQnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KVxuICAgICAgLy8gVHVlc2RheVxuICAgICAgY2FzZSAnY2NjYyc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge3dpZHRoOiAnd2lkZScsIGNvbnRleHQ6ICdzdGFuZGFsb25lJ30pXG4gICAgfVxuICB9LFxuXG4gIC8vIElTTyBkYXkgb2Ygd2Vla1xuICBpOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIGRheU9mV2VlayA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gICAgdmFyIGlzb0RheU9mV2VlayA9IGRheU9mV2VlayA9PT0gMCA/IDcgOiBkYXlPZldlZWs7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMlxuICAgICAgY2FzZSAnaSc6XG4gICAgICAgIHJldHVybiBTdHJpbmcoaXNvRGF5T2ZXZWVrKVxuICAgICAgLy8gMDJcbiAgICAgIGNhc2UgJ2lpJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhpc29EYXlPZldlZWssIHRva2VuLmxlbmd0aClcbiAgICAgIC8vIDJuZFxuICAgICAgY2FzZSAnaW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihpc29EYXlPZldlZWssIHt1bml0OiAnZGF5J30pXG4gICAgICAvLyBUdWVcbiAgICAgIGNhc2UgJ2lpaSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCcsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAvLyBUXG4gICAgICBjYXNlICdpaWlpaSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgLy8gVHVcbiAgICAgIGNhc2UgJ2lpaWlpaSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7d2lkdGg6ICdzaG9ydCcsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAvLyBUdWVzZGF5XG4gICAgICBjYXNlICdpaWlpJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7d2lkdGg6ICd3aWRlJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICB9XG4gIH0sXG5cbiAgLy8gQU0gb3IgUE1cbiAgYTogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICB2YXIgZGF5UGVyaW9kRW51bVZhbHVlID0gKGhvdXJzIC8gMTIpID49IDEgPyAncG0nIDogJ2FtJztcblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgY2FzZSAnYWEnOlxuICAgICAgY2FzZSAnYWFhJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgIGNhc2UgJ2FhYWFhJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICBjYXNlICdhYWFhJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7d2lkdGg6ICd3aWRlJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICB9XG4gIH0sXG5cbiAgLy8gQU0sIFBNLCBtaWRuaWdodCwgbm9vblxuICBiOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWU7XG4gICAgaWYgKGhvdXJzID09PSAxMikge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5ub29uO1xuICAgIH0gZWxzZSBpZiAoaG91cnMgPT09IDApIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubWlkbmlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IChob3VycyAvIDEyKSA+PSAxID8gJ3BtJyA6ICdhbSc7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSAnYic6XG4gICAgICBjYXNlICdiYic6XG4gICAgICBjYXNlICdiYmInOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgY2FzZSAnYmJiYmInOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgIGNhc2UgJ2JiYmInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHt3aWR0aDogJ3dpZGUnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgIH1cbiAgfSxcblxuICAvLyBpbiB0aGUgbW9ybmluZywgaW4gdGhlIGFmdGVybm9vbiwgaW4gdGhlIGV2ZW5pbmcsIGF0IG5pZ2h0XG4gIEI6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgdmFyIGRheVBlcmlvZEVudW1WYWx1ZTtcbiAgICBpZiAoaG91cnMgPj0gMTcpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0uZXZlbmluZztcbiAgICB9IGVsc2UgaWYgKGhvdXJzID49IDEyKSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLmFmdGVybm9vbjtcbiAgICB9IGVsc2UgaWYgKGhvdXJzID49IDQpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubW9ybmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5uaWdodDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdCJzpcbiAgICAgIGNhc2UgJ0JCJzpcbiAgICAgIGNhc2UgJ0JCQic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCcsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICBjYXNlICdCQkJCQic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgY2FzZSAnQkJCQic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge3dpZHRoOiAnd2lkZScsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgfVxuICB9LFxuXG4gIC8vIEhvdXIgWzEtMTJdXG4gIGg6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCkgJSAxMjtcblxuICAgIGlmIChob3VycyA9PT0gMCkge1xuICAgICAgaG91cnMgPSAxMjtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4gPT09ICdobycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7dW5pdDogJ2hvdXInfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGhvdXJzLCB0b2tlbi5sZW5ndGgpXG4gIH0sXG5cbiAgLy8gSG91ciBbMC0yM11cbiAgSDogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcblxuICAgIGlmICh0b2tlbiA9PT0gJ0hvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaG91cnMsIHt1bml0OiAnaG91cid9KVxuICAgIH1cblxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaG91cnMsIHRva2VuLmxlbmd0aClcbiAgfSxcblxuICAvLyBIb3VyIFswLTExXVxuICBLOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpICUgMTI7XG5cbiAgICBpZiAodG9rZW4gPT09ICdLbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7dW5pdDogJ2hvdXInfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGhvdXJzLCB0b2tlbi5sZW5ndGgpXG4gIH0sXG5cbiAgLy8gSG91ciBbMS0yNF1cbiAgazogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcblxuICAgIGlmIChob3VycyA9PT0gMCkge1xuICAgICAgaG91cnMgPSAyNDtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4gPT09ICdrbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7dW5pdDogJ2hvdXInfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGhvdXJzLCB0b2tlbi5sZW5ndGgpXG4gIH0sXG5cbiAgLy8gTWludXRlXG4gIG06IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgbWludXRlcyA9IGRhdGUuZ2V0VVRDTWludXRlcygpO1xuXG4gICAgaWYgKHRva2VuID09PSAnbW8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihtaW51dGVzLCB7dW5pdDogJ21pbnV0ZSd9KVxuICAgIH1cblxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MobWludXRlcywgdG9rZW4ubGVuZ3RoKVxuICB9LFxuXG4gIC8vIFNlY29uZFxuICBzOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIHNlY29uZHMgPSBkYXRlLmdldFVUQ1NlY29uZHMoKTtcblxuICAgIGlmICh0b2tlbiA9PT0gJ3NvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoc2Vjb25kcywge3VuaXQ6ICdzZWNvbmQnfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHNlY29uZHMsIHRva2VuLmxlbmd0aClcbiAgfSxcblxuICAvLyBGcmFjdGlvbiBvZiBzZWNvbmRcbiAgUzogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBudW1iZXJPZkRpZ2l0cyA9IHRva2VuLmxlbmd0aDtcbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICB2YXIgZnJhY3Rpb25hbFNlY29uZHMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAqIE1hdGgucG93KDEwLCBudW1iZXJPZkRpZ2l0cyAtIDMpKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGZyYWN0aW9uYWxTZWNvbmRzLCBudW1iZXJPZkRpZ2l0cylcbiAgfSxcblxuICAvLyBUaW1lem9uZSAoSVNPLTg2MDEuIElmIG9mZnNldCBpcyAwLCBvdXRwdXQgaXMgYWx3YXlzIGAnWidgKVxuICBYOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuXG4gICAgaWYgKHRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1onXG4gICAgfVxuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gSG91cnMgYW5kIG9wdGlvbmFsIG1pbnV0ZXNcbiAgICAgIGNhc2UgJ1gnOlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzKHRpbWV6b25lT2Zmc2V0KVxuXG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRob3V0IGA6YCBkZWxpbWV0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGBYWGBcbiAgICAgIGNhc2UgJ1hYWFgnOlxuICAgICAgY2FzZSAnWFgnOiAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRob3V0IGA6YCBkZWxpbWV0ZXJcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0KVxuXG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRoIGA6YCBkZWxpbWV0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGBYWFhgXG4gICAgICBjYXNlICdYWFhYWCc6XG4gICAgICBjYXNlICdYWFgnOiAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRoIGA6YCBkZWxpbWV0ZXJcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCwgJzonKVxuICAgIH1cbiAgfSxcblxuICAvLyBUaW1lem9uZSAoSVNPLTg2MDEuIElmIG9mZnNldCBpcyAwLCBvdXRwdXQgaXMgYCcrMDA6MDAnYCBvciBlcXVpdmFsZW50KVxuICB4OiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gSG91cnMgYW5kIG9wdGlvbmFsIG1pbnV0ZXNcbiAgICAgIGNhc2UgJ3gnOlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzKHRpbWV6b25lT2Zmc2V0KVxuXG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRob3V0IGA6YCBkZWxpbWV0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGB4eGBcbiAgICAgIGNhc2UgJ3h4eHgnOlxuICAgICAgY2FzZSAneHgnOiAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRob3V0IGA6YCBkZWxpbWV0ZXJcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0KVxuXG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRoIGA6YCBkZWxpbWV0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGB4eHhgXG4gICAgICBjYXNlICd4eHh4eCc6XG4gICAgICBjYXNlICd4eHgnOiAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRoIGA6YCBkZWxpbWV0ZXJcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCwgJzonKVxuICAgIH1cbiAgfSxcblxuICAvLyBUaW1lem9uZSAoR01UKVxuICBPOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gU2hvcnRcbiAgICAgIGNhc2UgJ08nOlxuICAgICAgY2FzZSAnT08nOlxuICAgICAgY2FzZSAnT09PJzpcbiAgICAgICAgcmV0dXJuICdHTVQnICsgZm9ybWF0VGltZXpvbmVTaG9ydCh0aW1lem9uZU9mZnNldCwgJzonKVxuICAgICAgLy8gTG9uZ1xuICAgICAgY2FzZSAnT09PTyc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ0dNVCcgKyBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCwgJzonKVxuICAgIH1cbiAgfSxcblxuICAvLyBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0aW9uKVxuICB6OiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gU2hvcnRcbiAgICAgIGNhc2UgJ3onOlxuICAgICAgY2FzZSAnenonOlxuICAgICAgY2FzZSAnenp6JzpcbiAgICAgICAgcmV0dXJuICdHTVQnICsgZm9ybWF0VGltZXpvbmVTaG9ydCh0aW1lem9uZU9mZnNldCwgJzonKVxuICAgICAgLy8gTG9uZ1xuICAgICAgY2FzZSAnenp6eic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ0dNVCcgKyBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCwgJzonKVxuICAgIH1cbiAgfSxcblxuICAvLyBTZWNvbmRzIHRpbWVzdGFtcFxuICB0OiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCkgLyAxMDAwKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHRpbWVzdGFtcCwgdG9rZW4ubGVuZ3RoKVxuICB9LFxuXG4gIC8vIE1pbGxpc2Vjb25kcyB0aW1lc3RhbXBcbiAgVDogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBvcmlnaW5hbERhdGUgPSBvcHRpb25zLl9vcmlnaW5hbERhdGUgfHwgZGF0ZTtcbiAgICB2YXIgdGltZXN0YW1wID0gb3JpZ2luYWxEYXRlLmdldFRpbWUoKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHRpbWVzdGFtcCwgdG9rZW4ubGVuZ3RoKVxuICB9XG59O1xuXG5mdW5jdGlvbiBhZGRMZWFkaW5nWmVyb3MgKG51bWJlciwgdGFyZ2V0TGVuZ3RoKSB7XG4gIHZhciBzaWduID0gbnVtYmVyIDwgMCA/ICctJyA6ICcnO1xuICB2YXIgb3V0cHV0ID0gTWF0aC5hYnMobnVtYmVyKS50b1N0cmluZygpO1xuICB3aGlsZSAob3V0cHV0Lmxlbmd0aCA8IHRhcmdldExlbmd0aCkge1xuICAgIG91dHB1dCA9ICcwJyArIG91dHB1dDtcbiAgfVxuICByZXR1cm4gc2lnbiArIG91dHB1dFxufVxuXG5mdW5jdGlvbiBmb3JtYXRUaW1lem9uZSAob2Zmc2V0LCBkaXJ0eURlbGltZXRlcikge1xuICB2YXIgZGVsaW1ldGVyID0gZGlydHlEZWxpbWV0ZXIgfHwgJyc7XG4gIHZhciBzaWduID0gb2Zmc2V0ID4gMCA/ICctJyA6ICcrJztcbiAgdmFyIGFic09mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gIHZhciBob3VycyA9IGFkZExlYWRpbmdaZXJvcyhNYXRoLmZsb29yKGFic09mZnNldCAvIDYwKSwgMik7XG4gIHZhciBtaW51dGVzID0gYWRkTGVhZGluZ1plcm9zKGFic09mZnNldCAlIDYwLCAyKTtcbiAgcmV0dXJuIHNpZ24gKyBob3VycyArIGRlbGltZXRlciArIG1pbnV0ZXNcbn1cblxuZnVuY3Rpb24gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzIChvZmZzZXQsIGRpcnR5RGVsaW1ldGVyKSB7XG4gIGlmIChvZmZzZXQgJSA2MCA9PT0gMCkge1xuICAgIHZhciBzaWduID0gb2Zmc2V0ID4gMCA/ICctJyA6ICcrJztcbiAgICByZXR1cm4gc2lnbiArIGFkZExlYWRpbmdaZXJvcyhNYXRoLmFicyhvZmZzZXQpIC8gNjAsIDIpXG4gIH1cbiAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKG9mZnNldCwgZGlydHlEZWxpbWV0ZXIpXG59XG5cbmZ1bmN0aW9uIGZvcm1hdFRpbWV6b25lU2hvcnQgKG9mZnNldCwgZGlydHlEZWxpbWV0ZXIpIHtcbiAgdmFyIHNpZ24gPSBvZmZzZXQgPiAwID8gJy0nIDogJysnO1xuICB2YXIgYWJzT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0KTtcbiAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCk7XG4gIHZhciBtaW51dGVzID0gYWJzT2Zmc2V0ICUgNjA7XG4gIGlmIChtaW51dGVzID09PSAwKSB7XG4gICAgcmV0dXJuIHNpZ24gKyBTdHJpbmcoaG91cnMpXG4gIH1cbiAgdmFyIGRlbGltZXRlciA9IGRpcnR5RGVsaW1ldGVyIHx8ICcnO1xuICByZXR1cm4gc2lnbiArIFN0cmluZyhob3VycykgKyBkZWxpbWV0ZXIgKyBhZGRMZWFkaW5nWmVyb3MobWludXRlcywgMilcbn1cblxuZnVuY3Rpb24gZGF0ZUxvbmdGb3JtYXR0ZXIgKHBhdHRlcm4sIGZvcm1hdExvbmcsIG9wdGlvbnMpIHtcbiAgc3dpdGNoIChwYXR0ZXJuKSB7XG4gICAgY2FzZSAnUCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy5kYXRlKHt3aWR0aDogJ3Nob3J0J30pXG4gICAgY2FzZSAnUFAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7d2lkdGg6ICdtZWRpdW0nfSlcbiAgICBjYXNlICdQUFAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7d2lkdGg6ICdsb25nJ30pXG4gICAgY2FzZSAnUFBQUCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLmRhdGUoe3dpZHRoOiAnZnVsbCd9KVxuICB9XG59XG5cbmZ1bmN0aW9uIHRpbWVMb25nRm9ybWF0dGVyIChwYXR0ZXJuLCBmb3JtYXRMb25nLCBvcHRpb25zKSB7XG4gIHN3aXRjaCAocGF0dGVybikge1xuICAgIGNhc2UgJ3AnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7d2lkdGg6ICdzaG9ydCd9KVxuICAgIGNhc2UgJ3BwJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLnRpbWUoe3dpZHRoOiAnbWVkaXVtJ30pXG4gICAgY2FzZSAncHBwJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLnRpbWUoe3dpZHRoOiAnbG9uZyd9KVxuICAgIGNhc2UgJ3BwcHAnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHt3aWR0aDogJ2Z1bGwnfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBkYXRlVGltZUxvbmdGb3JtYXR0ZXIgKHBhdHRlcm4sIGZvcm1hdExvbmcsIG9wdGlvbnMpIHtcbiAgdmFyIG1hdGNoUmVzdWx0ID0gcGF0dGVybi5tYXRjaCgvKFArKShwKyk/Lyk7XG4gIHZhciBkYXRlUGF0dGVybiA9IG1hdGNoUmVzdWx0WzFdO1xuICB2YXIgdGltZVBhdHRlcm4gPSBtYXRjaFJlc3VsdFsyXTtcblxuICBpZiAoIXRpbWVQYXR0ZXJuKSB7XG4gICAgcmV0dXJuIGRhdGVMb25nRm9ybWF0dGVyKHBhdHRlcm4sIGZvcm1hdExvbmcpXG4gIH1cblxuICB2YXIgZGF0ZVRpbWVGb3JtYXQ7XG5cbiAgc3dpdGNoIChkYXRlUGF0dGVybikge1xuICAgIGNhc2UgJ1AnOlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHt3aWR0aDogJ3Nob3J0J30pO1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdQUCc6XG4gICAgICBkYXRlVGltZUZvcm1hdCA9IGZvcm1hdExvbmcuZGF0ZVRpbWUoe3dpZHRoOiAnbWVkaXVtJ30pO1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdQUFAnOlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHt3aWR0aDogJ2xvbmcnfSk7XG4gICAgICBicmVha1xuICAgIGNhc2UgJ1BQUFAnOlxuICAgIGRlZmF1bHQ6XG4gICAgICBkYXRlVGltZUZvcm1hdCA9IGZvcm1hdExvbmcuZGF0ZVRpbWUoe3dpZHRoOiAnZnVsbCd9KTtcbiAgICAgIGJyZWFrXG4gIH1cblxuICByZXR1cm4gZGF0ZVRpbWVGb3JtYXRcbiAgICAucmVwbGFjZSgne3tkYXRlfX0nLCBkYXRlTG9uZ0Zvcm1hdHRlcihkYXRlUGF0dGVybiwgZm9ybWF0TG9uZykpXG4gICAgLnJlcGxhY2UoJ3t7dGltZX19JywgdGltZUxvbmdGb3JtYXR0ZXIodGltZVBhdHRlcm4sIGZvcm1hdExvbmcpKVxufVxuXG52YXIgbG9uZ0Zvcm1hdHRlcnMgPSB7XG4gIHA6IHRpbWVMb25nRm9ybWF0dGVyLFxuICBQOiBkYXRlVGltZUxvbmdGb3JtYXR0ZXJcbn07XG5cbi8qKlxuICogQG5hbWUgc3ViTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8U3RyaW5nfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBzdWJ0cmFjdGVkXG4gKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSAtIHRoZSBvYmplY3Qgd2l0aCBvcHRpb25zLiBTZWUgW09wdGlvbnNde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvT3B0aW9uc31cbiAqIEBwYXJhbSB7MHwxfDJ9IFtvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHM9Ml0gLSBwYXNzZWQgdG8gYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIG11c3QgYmUgMCwgMSBvciAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDc1MCBtaWxsaXNlY29uZHMgZnJvbSAxMCBKdWx5IDIwMTQgMTI6NDU6MzAuMDAwOlxuICogdmFyIHJlc3VsdCA9IHN1Yk1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAzMCwgMCksIDc1MClcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjI5LjI1MFxuICovXG5mdW5jdGlvbiBzdWJNaWxsaXNlY29uZHMgKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQsIGRpcnR5T3B0aW9ucykge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcyIGFyZ3VtZW50cyByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIHByZXNlbnQnKVxuICB9XG5cbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCAtYW1vdW50LCBkaXJ0eU9wdGlvbnMpXG59XG5cbnZhciBwcm90ZWN0ZWRUb2tlbnMgPSBbJ0QnLCAnREQnLCAnWVknLCAnWVlZWSddO1xuXG5mdW5jdGlvbiBpc1Byb3RlY3RlZFRva2VuKHRva2VuKSB7XG4gIHJldHVybiBwcm90ZWN0ZWRUb2tlbnMuaW5kZXhPZih0b2tlbikgIT09IC0xXG59XG5cbmZ1bmN0aW9uIHRocm93UHJvdGVjdGVkRXJyb3IodG9rZW4pIHtcbiAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgJ2BvcHRpb25zLmF3YXJlT2ZVbmljb2RlVG9rZW5zYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgdG8gdXNlIGAnICtcbiAgICAgIHRva2VuICtcbiAgICAgICdgIHRva2VuOyBzZWU6IGh0dHBzOi8vZ2l0LmlvL2Z4Q3lyJ1xuICApXG59XG5cbi8vIFRoaXMgUmVnRXhwIGNvbnNpc3RzIG9mIHRocmVlIHBhcnRzIHNlcGFyYXRlZCBieSBgfGA6XG4vLyAtIFt5WVFxTUx3SWREZWNpaEhLa21zXW8gbWF0Y2hlcyBhbnkgYXZhaWxhYmxlIG9yZGluYWwgbnVtYmVyIHRva2VuXG4vLyAgIChvbmUgb2YgdGhlIGNlcnRhaW4gbGV0dGVycyBmb2xsb3dlZCBieSBgb2ApXG4vLyAtIChcXHcpXFwxKiBtYXRjaGVzIGFueSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgbGV0dGVyXG4vLyAtICcnIG1hdGNoZXMgdHdvIHF1b3RlIGNoYXJhY3RlcnMgaW4gYSByb3dcbi8vIC0gJygnJ3xbXiddKSsoJ3wkKSBtYXRjaGVzIGFueXRoaW5nIHN1cnJvdW5kZWQgYnkgdHdvIHF1b3RlIGNoYXJhY3RlcnMgKCcpLFxuLy8gICBleGNlcHQgYSBzaW5nbGUgcXVvdGUgc3ltYm9sLCB3aGljaCBlbmRzIHRoZSBzZXF1ZW5jZS5cbi8vICAgVHdvIHF1b3RlIGNoYXJhY3RlcnMgZG8gbm90IGVuZCB0aGUgc2VxdWVuY2UuXG4vLyAgIElmIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHNpbmdsZSBxdW90ZVxuLy8gICB0aGVuIHRoZSBzZXF1ZW5jZSB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbi8vIC0gLiBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIHVubWF0Y2hlZCBieSBwcmV2aW91cyBwYXJ0cyBvZiB0aGUgUmVnRXhwc1xudmFyIGZvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvW3lZUXFNTHdJZERlY2loSEtrbXNdb3woXFx3KVxcMSp8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG5cbi8vIFRoaXMgUmVnRXhwIGNhdGNoZXMgc3ltYm9scyBlc2NhcGVkIGJ5IHF1b3RlcywgYW5kIGFsc29cbi8vIHNlcXVlbmNlcyBvZiBzeW1ib2xzIFAsIHAsIGFuZCB0aGUgY29tYmluYXRpb25zIGxpa2UgYFBQUFBQUFBwcHBwcGBcbnZhciBsb25nRm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCA9IC9QK3ArfFArfHArfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xuXG52YXIgZXNjYXBlZFN0cmluZ1JlZ0V4cCA9IC9eJyguKj8pJz8kLztcbnZhciBkb3VibGVRdW90ZVJlZ0V4cCA9IC8nJy9nO1xuXG4vKipcbiAqIEBuYW1lIGZvcm1hdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgdGhlIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiB0aGUgZ2l2ZW4gZm9ybWF0LiBUaGUgcmVzdWx0IG1heSB2YXJ5IGJ5IGxvY2FsZS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBgZm9ybWF0YCB0b2tlbnMgZGlmZmVyIGZyb20gTW9tZW50LmpzIGFuZCBvdGhlciBsaWJyYXJpZXMuXG4gKiA+IFNlZTogaHR0cHM6Ly9naXQuaW8vZnhDeXJcbiAqXG4gKiBUaGUgY2hhcmFjdGVycyB3cmFwcGVkIGJldHdlZW4gdHdvIHNpbmdsZSBxdW90ZXMgY2hhcmFjdGVycyAoJykgYXJlIGVzY2FwZWQuXG4gKiBUd28gc2luZ2xlIHF1b3RlcyBpbiBhIHJvdywgd2hldGhlciBpbnNpZGUgb3Igb3V0c2lkZSBhIHF1b3RlZCBzZXF1ZW5jZSwgcmVwcmVzZW50IGEgJ3JlYWwnIHNpbmdsZSBxdW90ZS5cbiAqIChzZWUgdGhlIGxhc3QgZXhhbXBsZSlcbiAqXG4gKiBGb3JtYXQgb2YgdGhlIHN0cmluZyBpcyBiYXNlZCBvbiBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiBodHRwczovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiB3aXRoIGEgZmV3IGFkZGl0aW9ucyAoc2VlIG5vdGUgNyBiZWxvdyB0aGUgdGFibGUpLlxuICpcbiAqIEFjY2VwdGVkIHBhdHRlcm5zOlxuICogfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0dGVybiB8IFJlc3VsdCBleGFtcGxlcyAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18XG4gKiB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHLi5HR0cgIHwgQUQsIEJDICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR0dHRyAgICB8IEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdHR0dHICAgfCBBLCBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeW8gICAgICB8IDQ0dGgsIDFzdCwgMHRoLCAxN3RoICAgICAgICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXkgICAgIHwgMDQ0LCAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5eSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eXl5ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUgICB8XG4gKiB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgfCBZICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCAyMDE3dGggICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWVkgICAgIHwgMDQ0LCAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWVlZWSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZWVlZICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUgICB8XG4gKiB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICAgfCBSICAgICAgIHwgLTQzLCAwLCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlIgICAgICB8IC00MywgMDAsIDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSUiAgICAgfCAtMDQzLCAwMDAsIDAwMSwgMTkwMCwgMjAxNyAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSUlJSICAgIHwgLTAwNDMsIDAwMDAsIDAwMDEsIDE5MDAsIDIwMTcgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlJSUlIgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNSw3IHxcbiAqIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgICB8IHUgICAgICAgfCAtNDMsIDAsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dSAgICAgIHwgLTQzLCAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXV1ICAgICB8IC0wNDMsIDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHV1dXUgICAgfCAtMDA0MywgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dXV1dSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1ICAgfFxuICogfCBRdWFydGVyIChmb3JtYXR0aW5nKSAgICAgICAgICAgIHwgUSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVFRICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFRUVEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUVFRUSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBRdWFydGVyIChzdGFuZC1hbG9uZSkgICAgICAgICAgIHwgcSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXFxICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFxcXEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcXFxcSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBNb250aCAoZm9ybWF0dGluZykgICAgICAgICAgICAgIHwgTSAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTSAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU1NICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NTU0gICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTU1NTSAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNb250aCAoc3RhbmQtYWxvbmUpICAgICAgICAgICAgIHwgTCAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTCAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTExMICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExMTEwgICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTExMTCAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgIHwgdyAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3dyAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgIHwgSSAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IElvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJSSAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgIHwgZCAgICAgICB8IDEsIDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzMXN0ICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZCAgICAgIHwgMDEsIDAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgIHwgRCAgICAgICB8IDEsIDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgICB8IDggICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzNjV0aCwgMzY2dGggICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBERCAgICAgIHwgMDEsIDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgIHwgOCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgREREICAgICB8IDAwMSwgMDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEREREQgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzICAgICB8XG4gKiB8IERheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICAgICAgfCBFLi5FRUUgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdSAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRUVFRSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVFRUVFICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFRUVFRUUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTdSwgU2EgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgIHwgaSAgICAgICB8IDEsIDIsIDMsIC4uLiwgNyAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA3dGggICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaSAgICAgIHwgMDEsIDAyLCAuLi4sIDA3ICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3UgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaWkgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyLDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaWlpaSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpaWlpICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU3UsIFNhICAgICAgICB8IDcgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICB8IGUgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWUgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWVlICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWVlZWUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZWVlZSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFN1LCBTYSAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChzdGFuZC1hbG9uZSkgfCBjICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY28gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2MgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdSAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjYyAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjY2NjICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2NjY2MgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTdSwgU2EgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgYS4uYWFhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWEgICAgfCBhLm0uLCBwLm0uICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhYSAgIHwgYSwgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgIHwgYi4uYmJiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGJiYmIgICAgfCBhLm0uLCBwLm0uLCBub29uLCBtaWRuaWdodCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBiYmJiYiAgIHwgYSwgcCwgbiwgbWkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgIHwgQi4uQkJCICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJCQkIgICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCQkJCQiAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAxMnRoICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgIHwgSCAgICAgICB8IDAsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhvICAgICAgfCAwdGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBISCAgICAgIHwgMDAsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgIHwgSyAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEtvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAwdGggICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBLSyAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMCAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgIHwgayAgICAgICB8IDI0LCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtvICAgICAgfCAyNHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrayAgICAgIHwgMjQsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1vICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNvICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgIHwgUyAgICAgICB8IDAsIDEsIC4uLiwgOSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDAxLCAuLi4sIDk5OSAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1NTUyAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvIFopICAgICAgICB8IFggICAgICAgfCAtMDgsICswNTMwLCBaICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWCAgICAgIHwgLTA4MDAsICswNTMwLCBaICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWFhYICAgICB8IC0wODowMCwgKzA1OjMwLCBaICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhYWFggICAgfCAtMDgwMCwgKzA1MzAsIFosICsxMjM0NTYgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWFhYWCAgIHwgLTA4OjAwLCArMDU6MzAsIFosICsxMjozNDo1NiAgICAgIHwgICAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgIHwgeCAgICAgICB8IC0wOCwgKzA1MzAsICswMCAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4ICAgICAgfCAtMDgwMCwgKzA1MzAsICswMDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4eHggICAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeHh4eCAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAsICsxMjM0NTYgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4eHh4ICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwLCArMTI6MzQ6NTYgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChHTVQpICAgICAgICAgICAgICAgICAgfCBPLi4uT09PIHwgR01ULTgsIEdNVCs1OjMwLCBHTVQrMCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT09PTyAgICB8IEdNVC0wODowMCwgR01UKzA1OjMwLCBHTVQrMDA6MDAgICB8IDIgICAgIHxcbiAqIHwgVGltZXpvbmUgKHNwZWNpZmljIG5vbi1sb2NhdC4pICB8IHouLi56enogfCBHTVQtOCwgR01UKzU6MzAsIEdNVCswICAgICAgICAgICAgfCA2ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB6enp6ICAgIHwgR01ULTA4OjAwLCBHTVQrMDU6MzAsIEdNVCswMDowMCAgIHwgMiw2ICAgfFxuICogfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgIHwgdCAgICAgICB8IDUxMjk2OTUyMCAgICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHR0ICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDcgICB8XG4gKiB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgfCBUICAgICAgIHwgNTEyOTY5NTIwOTAwICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVFQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNyAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgICB8IFAgICAgICAgfCAwNS8yOS8xNDUzICAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUCAgICAgIHwgTWF5IDI5LCAxNDUzICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQICAgICB8IE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQUFAgICAgfCBTdW5kYXksIE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgfCAyLDcgICB8XG4gKiB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICAgfCBwICAgICAgIHwgMTI6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHAgICAgICB8IDEyOjAwOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBwcCAgICAgfCAxMjowMDowMCBBTSBHTVQrMiAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcHBwICAgIHwgMTI6MDA6MDAgQU0gR01UKzAyOjAwICAgICAgICAgICAgIHwgMiw3ICAgfFxuICogfCBDb21iaW5hdGlvbiBvZiBkYXRlIGFuZCB0aW1lICAgIHwgUHAgICAgICB8IDA1LzI5LzE0NTMsIDEyOjAwIEFNICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQcHAgICAgfCBNYXkgMjksIDE0NTMsIDEyOjAwOjAwIEFNICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUFBwcHAgIHwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQUHBwcHB8IFN1bmRheSwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICB8IDIsNyAgIHxcbiAqIE5vdGVzOlxuICogMS4gXCJGb3JtYXR0aW5nXCIgdW5pdHMgKGUuZy4gZm9ybWF0dGluZyBxdWFydGVyKSBpbiB0aGUgZGVmYXVsdCBlbi1VUyBsb2NhbGVcbiAqICAgIGFyZSB0aGUgc2FtZSBhcyBcInN0YW5kLWFsb25lXCIgdW5pdHMsIGJ1dCBhcmUgZGlmZmVyZW50IGluIHNvbWUgbGFuZ3VhZ2VzLlxuICogICAgXCJGb3JtYXR0aW5nXCIgdW5pdHMgYXJlIGRlY2xpbmVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxhbmd1YWdlXG4gKiAgICBpbiB0aGUgY29udGV4dCBvZiBhIGRhdGUuIFwiU3RhbmQtYWxvbmVcIiB1bml0cyBhcmUgYWx3YXlzIG5vbWluYXRpdmUgc2luZ3VsYXI6XG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBMTExMJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZCdgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBNTU1NJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZHUnYFxuICpcbiAqIDIuIEFueSBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpY2FsIGxldHRlcnMgaXMgYSBwYXR0ZXJuLCB1bmxlc3MgaXQgaXMgZXNjYXBlZCBieVxuICogICAgdGhlIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIChzZWUgYmVsb3cpLlxuICogICAgSWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciB0aGFuIGxpc3RlZCBpbiB0YWJsZSAoZS5nLiBgRUVFRUVFRUVFRUVgKVxuICogICAgdGhlIG91dHB1dCB3aWxsIGJlIHRoZSBzYW1lIGFzIGRlZmF1bHQgcGF0dGVybiBmb3IgdGhpcyB1bml0LCB1c3VhbGx5XG4gKiAgICB0aGUgbG9uZ2VzdCBvbmUgKGluIGNhc2Ugb2YgSVNPIHdlZWtkYXlzLCBgRUVFRWApLiBEZWZhdWx0IHBhdHRlcm5zIGZvciB1bml0c1xuICogICAgYXJlIG1hcmtlZCB3aXRoIFwiMlwiIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUuXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU0nKSAvLz0+ICdOb3YnYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnTU1NTScpIC8vPT4gJ05vdmVtYmVyJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTU1NJykgLy89PiAnTidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NTU0nKSAvLz0+ICdOb3ZlbWJlcidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NTU1NJykgLy89PiAnTm92ZW1iZXInYFxuICpcbiAqIDMuIFNvbWUgcGF0dGVybnMgY291bGQgYmUgdW5saW1pdGVkIGxlbmd0aCAoc3VjaCBhcyBgeXl5eXl5eXlgKS5cbiAqICAgIFRoZSBvdXRwdXQgd2lsbCBiZSBwYWRkZWQgd2l0aCB6ZXJvcyB0byBtYXRjaCB0aGUgbGVuZ3RoIG9mIHRoZSBwYXR0ZXJuLlxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAneXl5eXl5eXknKSAvLz0+ICcwMDAwMjAxNydgXG4gKlxuICogNC4gYFFRUVFRYCBhbmQgYHFxcXFxYCBjb3VsZCBiZSBub3Qgc3RyaWN0bHkgbnVtZXJpY2FsIGluIHNvbWUgbG9jYWxlcy5cbiAqICAgIFRoZXNlIHRva2VucyByZXByZXNlbnQgdGhlIHNob3J0ZXN0IGZvcm0gb2YgdGhlIHF1YXJ0ZXIuXG4gKlxuICogNS4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIHBhdHRlcm5zIGFyZSBCLkMuIHllYXJzOlxuICpcbiAqICAgIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICogICAgfCBBQyAxIHwgICAxIHwgICAxIHxcbiAqICAgIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gKiAgICB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICpcbiAqICAgIEFsc28gYHl5YCBhbHdheXMgcmV0dXJucyB0aGUgbGFzdCB0d28gZGlnaXRzIG9mIGEgeWVhcixcbiAqICAgIHdoaWxlIGB1dWAgcGFkcyBzaW5nbGUgZGlnaXQgeWVhcnMgdG8gMiBjaGFyYWN0ZXJzIGFuZCByZXR1cm5zIG90aGVyIHllYXJzIHVuY2hhbmdlZDpcbiAqXG4gKiAgICB8IFllYXIgfCBgeXlgIHwgYHV1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tLXwtLS0tLS18XG4gKiAgICB8IDEgICAgfCAgIDAxIHwgICAwMSB8XG4gKiAgICB8IDE0ICAgfCAgIDE0IHwgICAxNCB8XG4gKiAgICB8IDM3NiAgfCAgIDc2IHwgIDM3NiB8XG4gKiAgICB8IDE0NTMgfCAgIDUzIHwgMTQ1MyB8XG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbZ2V0SVNPV2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvZ2V0SVNPV2Vla1llYXJ9XG4gKiAgICBhbmQgW2dldFdlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL2dldFdlZWtZZWFyfSkuXG4gKlxuICogNi4gU3BlY2lmaWMgbm9uLWxvY2F0aW9uIHRpbWV6b25lcyBhcmUgY3VycmVudGx5IHVuYXZhaWxhYmxlIGluIGBkYXRlLWZuc2AsXG4gKiAgICBzbyByaWdodCBub3cgdGhlc2UgdG9rZW5zIGZhbGwgYmFjayB0byBHTVQgdGltZXpvbmVzLlxuICpcbiAqIDcuIFRoZXNlIHBhdHRlcm5zIGFyZSBub3QgaW4gdGhlIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqICAgIC0gYGlgOiBJU08gZGF5IG9mIHdlZWtcbiAqICAgIC0gYElgOiBJU08gd2VlayBvZiB5ZWFyXG4gKiAgICAtIGBSYDogSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqICAgIC0gYHRgOiBzZWNvbmRzIHRpbWVzdGFtcFxuICogICAgLSBgVGA6IG1pbGxpc2Vjb25kcyB0aW1lc3RhbXBcbiAqICAgIC0gYG9gOiBvcmRpbmFsIG51bWJlciBtb2RpZmllclxuICogICAgLSBgUGA6IGxvbmcgbG9jYWxpemVkIGRhdGVcbiAqICAgIC0gYHBgOiBsb25nIGxvY2FsaXplZCB0aW1lXG4gKlxuICogOC4gVGhlc2UgdG9rZW5zIGFyZSBvZnRlbiBjb25mdXNlZCB3aXRoIG90aGVycy4gU2VlOiBodHRwczovL2dpdC5pby9meEN5clxuICpcbiAqIEBwYXJhbSB7RGF0ZXxTdHJpbmd8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBmb3JtYXQgLSB0aGUgc3RyaW5nIG9mIHRva2Vuc1xuICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9ucy4gU2VlIFtPcHRpb25zXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL09wdGlvbnN9XG4gKiBAcGFyYW0gezB8MXwyfSBbb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzPTJdIC0gcGFzc2VkIHRvIGB0b0RhdGVgLiBTZWUgW3RvRGF0ZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXNcbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5hd2FyZU9mVW5pY29kZVRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgVW5pY29kZSB0b2tlbnMgY2F1c2VzIGNvbmZ1c2lvbjpcbiAqICAgLSBTb21lIG9mIHRoZSBkYXkgb2YgeWVhciB0b2tlbnMgKGBEYCwgYEREYCkgdGhhdCBhcmUgY29uZnVzZWQgd2l0aCB0aGUgZGF5IG9mIG1vbnRoIHRva2VucyAoYGRgLCBgZGRgKS5cbiAqICAgLSBTb21lIG9mIHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIHRva2VucyAoYFlZYCwgYFlZWVlgKSB0aGF0IGFyZSBjb25mdXNlZCB3aXRoIHRoZSBjYWxlbmRhciB5ZWFyIHRva2VucyAoYHl5YCwgYHl5eXlgKS5cbiAqICAgU2VlOiBodHRwczovL2dpdC5pby9meEN5clxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0c2AgbXVzdCBiZSAwLCAxIG9yIDJcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBsb2NhbGl6ZWAgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXRMb25nYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuYXdhcmVPZlVuaWNvZGVUb2tlbnNgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCB0byB1c2UgYFhYYCB0b2tlbjsgc2VlOiBodHRwczovL2dpdC5pby9meEN5clxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTEgRmVicnVhcnkgMjAxNCBpbiBtaWRkbGUtZW5kaWFuIGZvcm1hdDpcbiAqIHZhciByZXN1bHQgPSBmb3JtYXQoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDEsIDExKSxcbiAqICAgJ01NL2RkL3l5eXknXG4gKiApXG4gKiAvLz0+ICcwMi8xMS8yMDE0J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMiBKdWx5IDIwMTQgaW4gRXNwZXJhbnRvOlxuICogaW1wb3J0IHsgZW9Mb2NhbGUgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW8nXG4gKiB2YXIgcmVzdWx0ID0gZm9ybWF0KFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyKSxcbiAqICAgXCJkbyAnZGUnIE1NTU0geXl5eVwiLFxuICogICB7bG9jYWxlOiBlb0xvY2FsZX1cbiAqIClcbiAqIC8vPT4gJzItYSBkZSBqdWxpbyAyMDE0J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFc2NhcGUgc3RyaW5nIGJ5IHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzOlxuICogdmFyIHJlc3VsdCA9IGZvcm1hdChcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTUpLFxuICogICBcImggJ28nJ2Nsb2NrJ1wiXG4gKiApXG4gKiAvLz0+IFwiMyBvJ2Nsb2NrXCJcbiAqL1xuZnVuY3Rpb24gZm9ybWF0KGRpcnR5RGF0ZSwgZGlydHlGb3JtYXRTdHIsIGRpcnR5T3B0aW9ucykge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJzIgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCdcbiAgICApXG4gIH1cblxuICB2YXIgZm9ybWF0U3RyID0gU3RyaW5nKGRpcnR5Rm9ybWF0U3RyKTtcbiAgdmFyIG9wdGlvbnMgPSBkaXJ0eU9wdGlvbnMgfHwge307XG5cbiAgdmFyIGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlIHx8IGxvY2FsZSQxO1xuXG4gIHZhciBsb2NhbGVGaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIGxvY2FsZS5vcHRpb25zICYmIGxvY2FsZS5vcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZTtcbiAgdmFyIGRlZmF1bHRGaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIGxvY2FsZUZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9PSBudWxsXG4gICAgICA/IDFcbiAgICAgIDogdG9JbnRlZ2VyKGxvY2FsZUZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlID09IG51bGxcbiAgICAgID8gZGVmYXVsdEZpcnN0V2Vla0NvbnRhaW5zRGF0ZVxuICAgICAgOiB0b0ludGVnZXIob3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMSBhbmQgNyBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA+PSAxICYmIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA8PSA3KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFxuICAgICAgJ2ZpcnN0V2Vla0NvbnRhaW5zRGF0ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNyBpbmNsdXNpdmVseSdcbiAgICApXG4gIH1cblxuICB2YXIgbG9jYWxlV2Vla1N0YXJ0c09uID0gbG9jYWxlLm9wdGlvbnMgJiYgbG9jYWxlLm9wdGlvbnMud2Vla1N0YXJ0c09uO1xuICB2YXIgZGVmYXVsdFdlZWtTdGFydHNPbiA9XG4gICAgbG9jYWxlV2Vla1N0YXJ0c09uID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGxvY2FsZVdlZWtTdGFydHNPbik7XG4gIHZhciB3ZWVrU3RhcnRzT24gPVxuICAgIG9wdGlvbnMud2Vla1N0YXJ0c09uID09IG51bGxcbiAgICAgID8gZGVmYXVsdFdlZWtTdGFydHNPblxuICAgICAgOiB0b0ludGVnZXIob3B0aW9ucy53ZWVrU3RhcnRzT24pO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKVxuICB9XG5cbiAgaWYgKCFsb2NhbGUubG9jYWxpemUpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBsb2NhbGl6ZSBwcm9wZXJ0eScpXG4gIH1cblxuICBpZiAoIWxvY2FsZS5mb3JtYXRMb25nKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gZm9ybWF0TG9uZyBwcm9wZXJ0eScpXG4gIH1cblxuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgb3B0aW9ucyk7XG5cbiAgaWYgKCFpc1ZhbGlkKG9yaWdpbmFsRGF0ZSwgb3B0aW9ucykpIHtcbiAgICByZXR1cm4gJ0ludmFsaWQgRGF0ZSdcbiAgfVxuXG4gIC8vIENvbnZlcnQgdGhlIGRhdGUgaW4gc3lzdGVtIHRpbWV6b25lIHRvIHRoZSBzYW1lIGRhdGUgaW4gVVRDKzAwOjAwIHRpbWV6b25lLlxuICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3aGVuIFVUQyBmdW5jdGlvbnMgd2lsbCBiZSBpbXBsZW1lbnRlZCwgbG9jYWxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGVtLlxuICAvLyBTZWUgYW4gaXNzdWUgYWJvdXQgVVRDIGZ1bmN0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNzZcbiAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhvcmlnaW5hbERhdGUpO1xuICB2YXIgdXRjRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhvcmlnaW5hbERhdGUsIHRpbWV6b25lT2Zmc2V0LCBvcHRpb25zKTtcblxuICB2YXIgZm9ybWF0dGVyT3B0aW9ucyA9IHtcbiAgICBmaXJzdFdlZWtDb250YWluc0RhdGU6IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSxcbiAgICB3ZWVrU3RhcnRzT246IHdlZWtTdGFydHNPbixcbiAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICBfb3JpZ2luYWxEYXRlOiBvcmlnaW5hbERhdGVcbiAgfTtcblxuICB2YXIgcmVzdWx0ID0gZm9ybWF0U3RyXG4gICAgLm1hdGNoKGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwKVxuICAgIC5tYXAoZnVuY3Rpb24oc3Vic3RyaW5nKSB7XG4gICAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG4gICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09ICdwJyB8fCBmaXJzdENoYXJhY3RlciA9PT0gJ1AnKSB7XG4gICAgICAgIHZhciBsb25nRm9ybWF0dGVyID0gbG9uZ0Zvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgICAgICByZXR1cm4gbG9uZ0Zvcm1hdHRlcihzdWJzdHJpbmcsIGxvY2FsZS5mb3JtYXRMb25nLCBmb3JtYXR0ZXJPcHRpb25zKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN1YnN0cmluZ1xuICAgIH0pXG4gICAgLmpvaW4oJycpXG4gICAgLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnNSZWdFeHApXG4gICAgLm1hcChmdW5jdGlvbihzdWJzdHJpbmcpIHtcbiAgICAgIC8vIFJlcGxhY2UgdHdvIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIHdpdGggb25lIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJcbiAgICAgIGlmIChzdWJzdHJpbmcgPT09IFwiJydcIikge1xuICAgICAgICByZXR1cm4gXCInXCJcbiAgICAgIH1cblxuICAgICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gc3Vic3RyaW5nWzBdO1xuICAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSBcIidcIikge1xuICAgICAgICByZXR1cm4gY2xlYW5Fc2NhcGVkU3RyaW5nKHN1YnN0cmluZylcbiAgICAgIH1cblxuICAgICAgdmFyIGZvcm1hdHRlciA9IGZvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgICAgaWYgKGZvcm1hdHRlcikge1xuICAgICAgICBpZiAoIW9wdGlvbnMuYXdhcmVPZlVuaWNvZGVUb2tlbnMgJiYgaXNQcm90ZWN0ZWRUb2tlbihzdWJzdHJpbmcpKSB7XG4gICAgICAgICAgdGhyb3dQcm90ZWN0ZWRFcnJvcihzdWJzdHJpbmcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZXIodXRjRGF0ZSwgc3Vic3RyaW5nLCBsb2NhbGUubG9jYWxpemUsIGZvcm1hdHRlck9wdGlvbnMpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdWJzdHJpbmdcbiAgICB9KVxuICAgIC5qb2luKCcnKTtcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGNsZWFuRXNjYXBlZFN0cmluZyhpbnB1dCkge1xuICByZXR1cm4gaW5wdXQubWF0Y2goZXNjYXBlZFN0cmluZ1JlZ0V4cClbMV0ucmVwbGFjZShkb3VibGVRdW90ZVJlZ0V4cCwgXCInXCIpXG59XG5cbi8qKlxuICogQG5hbWUgaXNBZnRlclxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZmlyc3QgZGF0ZSBhZnRlciB0aGUgc2Vjb25kIG9uZT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBmaXJzdCBkYXRlIGFmdGVyIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxTdHJpbmd8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdGhhdCBzaG91bGQgYmUgYWZ0ZXIgdGhlIG90aGVyIG9uZSB0byByZXR1cm4gdHJ1ZVxuICogQHBhcmFtIHtEYXRlfFN0cmluZ3xOdW1iZXJ9IGRhdGVUb0NvbXBhcmUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEBwYXJhbSB7T3B0aW9uc30gW29wdGlvbnNdIC0gdGhlIG9iamVjdCB3aXRoIG9wdGlvbnMuIFNlZSBbT3B0aW9uc117QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9PcHRpb25zfVxuICogQHBhcmFtIHswfDF8Mn0gW29wdGlvbnMuYWRkaXRpb25hbERpZ2l0cz0yXSAtIHBhc3NlZCB0byBgdG9EYXRlYC4gU2VlIFt0b0RhdGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlfVxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBmaXJzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQgZGF0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0c2AgbXVzdCBiZSAwLCAxIG9yIDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMTAgSnVseSAxOTg5IGFmdGVyIDExIEZlYnJ1YXJ5IDE5ODc/XG4gKiB2YXIgcmVzdWx0ID0gaXNBZnRlcihuZXcgRGF0ZSgxOTg5LCA2LCAxMCksIG5ldyBEYXRlKDE5ODcsIDEsIDExKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc0FmdGVyIChkaXJ0eURhdGUsIGRpcnR5RGF0ZVRvQ29tcGFyZSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzIgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCcpXG4gIH1cblxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUsIGRpcnR5T3B0aW9ucyk7XG4gIHZhciBkYXRlVG9Db21wYXJlID0gdG9EYXRlKGRpcnR5RGF0ZVRvQ29tcGFyZSwgZGlydHlPcHRpb25zKTtcbiAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpID4gZGF0ZVRvQ29tcGFyZS5nZXRUaW1lKClcbn1cblxuLyoqXG4gKiBAbmFtZSBpc0JlZm9yZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZmlyc3QgZGF0ZSBiZWZvcmUgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZmlyc3QgZGF0ZSBiZWZvcmUgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQHBhcmFtIHtEYXRlfFN0cmluZ3xOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0aGF0IHNob3VsZCBiZSBiZWZvcmUgdGhlIG90aGVyIG9uZSB0byByZXR1cm4gdHJ1ZVxuICogQHBhcmFtIHtEYXRlfFN0cmluZ3xOdW1iZXJ9IGRhdGVUb0NvbXBhcmUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEBwYXJhbSB7T3B0aW9uc30gW29wdGlvbnNdIC0gdGhlIG9iamVjdCB3aXRoIG9wdGlvbnMuIFNlZSBbT3B0aW9uc117QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9PcHRpb25zfVxuICogQHBhcmFtIHswfDF8Mn0gW29wdGlvbnMuYWRkaXRpb25hbERpZ2l0cz0yXSAtIHBhc3NlZCB0byBgdG9EYXRlYC4gU2VlIFt0b0RhdGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlfVxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBmaXJzdCBkYXRlIGlzIGJlZm9yZSB0aGUgc2Vjb25kIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIG11c3QgYmUgMCwgMSBvciAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDEwIEp1bHkgMTk4OSBiZWZvcmUgMTEgRmVicnVhcnkgMTk4Nz9cbiAqIHZhciByZXN1bHQgPSBpc0JlZm9yZShuZXcgRGF0ZSgxOTg5LCA2LCAxMCksIG5ldyBEYXRlKDE5ODcsIDEsIDExKSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCZWZvcmUgKGRpcnR5RGF0ZSwgZGlydHlEYXRlVG9Db21wYXJlLCBkaXJ0eU9wdGlvbnMpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMiBhcmd1bWVudHMgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgdmFyIGRhdGVUb0NvbXBhcmUgPSB0b0RhdGUoZGlydHlEYXRlVG9Db21wYXJlLCBkaXJ0eU9wdGlvbnMpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPCBkYXRlVG9Db21wYXJlLmdldFRpbWUoKVxufVxuXG4vKipcbiAqIEBuYW1lIGlzRXF1YWxcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBlcXVhbD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgZXF1YWw/XG4gKlxuICogQHBhcmFtIHtEYXRlfFN0cmluZ3xOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZVxuICogQHBhcmFtIHtEYXRlfFN0cmluZ3xOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjb21wYXJlXG4gKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSAtIHRoZSBvYmplY3Qgd2l0aCBvcHRpb25zLiBTZWUgW09wdGlvbnNde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvT3B0aW9uc31cbiAqIEBwYXJhbSB7MHwxfDJ9IFtvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHM9Ml0gLSBwYXNzZWQgdG8gYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGVxdWFsXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMiBKdWx5IDIwMTQgMDY6MzA6NDUuMDAwIGFuZCAyIEp1bHkgMjAxNCAwNjozMDo0NS41MDAgZXF1YWw/XG4gKiB2YXIgcmVzdWx0ID0gaXNFcXVhbChcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgNiwgMzAsIDQ1LCAwKVxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCA2LCAzMCwgNDUsIDUwMClcbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcXVhbCQxIChkaXJ0eUxlZnREYXRlLCBkaXJ0eVJpZ2h0RGF0ZSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzIgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCcpXG4gIH1cblxuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlMZWZ0RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eVJpZ2h0RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgcmV0dXJuIGRhdGVMZWZ0LmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0LmdldFRpbWUoKVxufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgYSBwYXJ0IG9mIHB1YmxpYyBBUEkgd2hlbiBVVEMgZnVuY3Rpb24gd2lsbCBiZSBpbXBsZW1lbnRlZC5cbi8vIFNlZSBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNzZcbmZ1bmN0aW9uIHNldFVUQ0RheSAoZGlydHlEYXRlLCBkaXJ0eURheSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzIgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCcpXG4gIH1cblxuICB2YXIgb3B0aW9ucyA9IGRpcnR5T3B0aW9ucyB8fCB7fTtcbiAgdmFyIGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlO1xuICB2YXIgbG9jYWxlV2Vla1N0YXJ0c09uID0gbG9jYWxlICYmIGxvY2FsZS5vcHRpb25zICYmIGxvY2FsZS5vcHRpb25zLndlZWtTdGFydHNPbjtcbiAgdmFyIGRlZmF1bHRXZWVrU3RhcnRzT24gPSBsb2NhbGVXZWVrU3RhcnRzT24gPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIobG9jYWxlV2Vla1N0YXJ0c09uKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IG9wdGlvbnMud2Vla1N0YXJ0c09uID09IG51bGwgPyBkZWZhdWx0V2Vla1N0YXJ0c09uIDogdG9JbnRlZ2VyKG9wdGlvbnMud2Vla1N0YXJ0c09uKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5JylcbiAgfVxuXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgdmFyIGRheSA9IHRvSW50ZWdlcihkaXJ0eURheSk7XG5cbiAgdmFyIGN1cnJlbnREYXkgPSBkYXRlLmdldFVUQ0RheSgpO1xuXG4gIHZhciByZW1haW5kZXIgPSBkYXkgJSA3O1xuICB2YXIgZGF5SW5kZXggPSAocmVtYWluZGVyICsgNykgJSA3O1xuXG4gIHZhciBkaWZmID0gKGRheUluZGV4IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gY3VycmVudERheTtcblxuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBkaWZmKTtcbiAgcmV0dXJuIGRhdGVcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGEgcGFydCBvZiBwdWJsaWMgQVBJIHdoZW4gVVRDIGZ1bmN0aW9uIHdpbGwgYmUgaW1wbGVtZW50ZWQuXG4vLyBTZWUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMzc2XG5mdW5jdGlvbiBzZXRVVENXZWVrIChkaXJ0eURhdGUsIGRpcnR5V2VlaywgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzIgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCcpXG4gIH1cblxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUsIGRpcnR5T3B0aW9ucyk7XG4gIHZhciB3ZWVrID0gdG9JbnRlZ2VyKGRpcnR5V2Vlayk7XG4gIHZhciBkaWZmID0gZ2V0VVRDV2VlayhkYXRlLCBkaXJ0eU9wdGlvbnMpIC0gd2VlaztcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gZGlmZiAqIDcpO1xuICByZXR1cm4gZGF0ZVxufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgYSBwYXJ0IG9mIHB1YmxpYyBBUEkgd2hlbiBVVEMgZnVuY3Rpb24gd2lsbCBiZSBpbXBsZW1lbnRlZC5cbi8vIFNlZSBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNzZcbmZ1bmN0aW9uIHNldFVUQ0lTT0RheSAoZGlydHlEYXRlLCBkaXJ0eURheSwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzIgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCcpXG4gIH1cblxuICB2YXIgZGF5ID0gdG9JbnRlZ2VyKGRpcnR5RGF5KTtcblxuICBpZiAoZGF5ICUgNyA9PT0gMCkge1xuICAgIGRheSA9IGRheSAtIDc7XG4gIH1cblxuICB2YXIgd2Vla1N0YXJ0c09uID0gMTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlLCBkaXJ0eU9wdGlvbnMpO1xuICB2YXIgY3VycmVudERheSA9IGRhdGUuZ2V0VVRDRGF5KCk7XG5cbiAgdmFyIHJlbWFpbmRlciA9IGRheSAlIDc7XG4gIHZhciBkYXlJbmRleCA9IChyZW1haW5kZXIgKyA3KSAlIDc7XG5cbiAgdmFyIGRpZmYgPSAoZGF5SW5kZXggPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSBjdXJyZW50RGF5O1xuXG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZVxufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgYSBwYXJ0IG9mIHB1YmxpYyBBUEkgd2hlbiBVVEMgZnVuY3Rpb24gd2lsbCBiZSBpbXBsZW1lbnRlZC5cbi8vIFNlZSBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNzZcbmZ1bmN0aW9uIHNldFVUQ0lTT1dlZWsgKGRpcnR5RGF0ZSwgZGlydHlJU09XZWVrLCBkaXJ0eU9wdGlvbnMpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMiBhcmd1bWVudHMgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50JylcbiAgfVxuXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSwgZGlydHlPcHRpb25zKTtcbiAgdmFyIGlzb1dlZWsgPSB0b0ludGVnZXIoZGlydHlJU09XZWVrKTtcbiAgdmFyIGRpZmYgPSBnZXRVVENJU09XZWVrKGRhdGUsIGRpcnR5T3B0aW9ucykgLSBpc29XZWVrO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlXG59XG5cbnZhciBNSUxMSVNFQ09ORFNfSU5fSE9VUiQxID0gMzYwMDAwMDtcbnZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFJDIgPSA2MDAwMDtcbnZhciBNSUxMSVNFQ09ORFNfSU5fU0VDT05EID0gMTAwMDtcblxudmFyIG51bWVyaWNQYXR0ZXJucyA9IHtcbiAgbW9udGg6IC9eKDFbMC0yXXwwP1xcZCkvLCAvLyAwIHRvIDEyXG4gIGRhdGU6IC9eKDNbMC0xXXxbMC0yXT9cXGQpLywgLy8gMCB0byAzMVxuICBkYXlPZlllYXI6IC9eKDM2WzAtNl18M1swLTVdXFxkfFswLTJdP1xcZD9cXGQpLywgLy8gMCB0byAzNjZcbiAgd2VlazogL14oNVswLTNdfFswLTRdP1xcZCkvLCAvLyAwIHRvIDUzXG4gIGhvdXIyM2g6IC9eKDJbMC0zXXxbMC0xXT9cXGQpLywgLy8gMCB0byAyM1xuICBob3VyMjRoOiAvXigyWzAtNF18WzAtMV0/XFxkKS8sIC8vIDAgdG8gMjRcbiAgaG91cjExaDogL14oMVswLTFdfDA/XFxkKS8sIC8vIDAgdG8gMTFcbiAgaG91cjEyaDogL14oMVswLTJdfDA/XFxkKS8sIC8vIDAgdG8gMTJcbiAgbWludXRlOiAvXlswLTVdP1xcZC8sIC8vIDAgdG8gNTlcbiAgc2Vjb25kOiAvXlswLTVdP1xcZC8sIC8vIDAgdG8gNTlcblxuICBzaW5nbGVEaWdpdDogL15cXGQvLCAvLyAwIHRvIDlcbiAgdHdvRGlnaXRzOiAvXlxcZHsxLDJ9LywgLy8gMCB0byA5OVxuICB0aHJlZURpZ2l0czogL15cXGR7MSwzfS8sIC8vIDAgdG8gOTk5XG4gIGZvdXJEaWdpdHM6IC9eXFxkezEsNH0vLCAvLyAwIHRvIDk5OTlcblxuICBhbnlEaWdpdHNTaWduZWQ6IC9eLT9cXGQrLyxcbiAgc2luZ2xlRGlnaXRTaWduZWQ6IC9eLT9cXGQvLCAvLyAwIHRvIDksIC0wIHRvIC05XG4gIHR3b0RpZ2l0c1NpZ25lZDogL14tP1xcZHsxLDJ9LywgLy8gMCB0byA5OSwgLTAgdG8gLTk5XG4gIHRocmVlRGlnaXRzU2lnbmVkOiAvXi0/XFxkezEsM30vLCAvLyAwIHRvIDk5OSwgLTAgdG8gLTk5OVxuICBmb3VyRGlnaXRzU2lnbmVkOiAvXi0/XFxkezEsNH0vIC8vIDAgdG8gOTk5OSwgLTAgdG8gLTk5OTlcbn07XG5cbnZhciB0aW1lem9uZVBhdHRlcm5zID0ge1xuICBiYXNpY09wdGlvbmFsTWludXRlczogL14oWystXSkoXFxkezJ9KShcXGR7Mn0pP3xaLyxcbiAgYmFzaWM6IC9eKFsrLV0pKFxcZHsyfSkoXFxkezJ9KXxaLyxcbiAgYmFzaWNPcHRpb25hbFNlY29uZHM6IC9eKFsrLV0pKFxcZHsyfSkoXFxkezJ9KSgoXFxkezJ9KSk/fFovLFxuICBleHRlbmRlZDogL14oWystXSkoXFxkezJ9KTooXFxkezJ9KXxaLyxcbiAgZXh0ZW5kZWRPcHRpb25hbFNlY29uZHM6IC9eKFsrLV0pKFxcZHsyfSk6KFxcZHsyfSkoOihcXGR7Mn0pKT98Wi9cbn07XG5cbmZ1bmN0aW9uIHBhcnNlTnVtZXJpY1BhdHRlcm4gKHBhdHRlcm4sIHN0cmluZywgdmFsdWVDYWxsYmFjaykge1xuICB2YXIgbWF0Y2hSZXN1bHQgPSBzdHJpbmcubWF0Y2gocGF0dGVybik7XG5cbiAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICB2YXIgdmFsdWUgPSBwYXJzZUludChtYXRjaFJlc3VsdFswXSwgMTApO1xuXG4gIHJldHVybiB7XG4gICAgdmFsdWU6IHZhbHVlQ2FsbGJhY2sgPyB2YWx1ZUNhbGxiYWNrKHZhbHVlKSA6IHZhbHVlLFxuICAgIHJlc3Q6IHN0cmluZy5zbGljZShtYXRjaFJlc3VsdFswXS5sZW5ndGgpXG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VUaW1lem9uZVBhdHRlcm4gKHBhdHRlcm4sIHN0cmluZykge1xuICB2YXIgbWF0Y2hSZXN1bHQgPSBzdHJpbmcubWF0Y2gocGF0dGVybik7XG5cbiAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBJbnB1dCBpcyAnWidcbiAgaWYgKG1hdGNoUmVzdWx0WzBdID09PSAnWicpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IDAsXG4gICAgICByZXN0OiBzdHJpbmcuc2xpY2UoMSlcbiAgICB9XG4gIH1cblxuICB2YXIgc2lnbiA9IG1hdGNoUmVzdWx0WzFdID09PSAnKycgPyAxIDogLTE7XG4gIHZhciBob3VycyA9IG1hdGNoUmVzdWx0WzJdID8gcGFyc2VJbnQobWF0Y2hSZXN1bHRbMl0sIDEwKSA6IDA7XG4gIHZhciBtaW51dGVzID0gbWF0Y2hSZXN1bHRbM10gPyBwYXJzZUludChtYXRjaFJlc3VsdFszXSwgMTApIDogMDtcbiAgdmFyIHNlY29uZHMgPSBtYXRjaFJlc3VsdFs1XSA/IHBhcnNlSW50KG1hdGNoUmVzdWx0WzVdLCAxMCkgOiAwO1xuXG4gIHJldHVybiB7XG4gICAgdmFsdWU6IHNpZ24gKiAoXG4gICAgICBob3VycyAqIE1JTExJU0VDT05EU19JTl9IT1VSJDEgK1xuICAgICAgICBtaW51dGVzICogTUlMTElTRUNPTkRTX0lOX01JTlVURSQyICtcbiAgICAgICAgc2Vjb25kcyAqIE1JTExJU0VDT05EU19JTl9TRUNPTkRcbiAgICApLFxuICAgIHJlc3Q6IHN0cmluZy5zbGljZShtYXRjaFJlc3VsdFswXS5sZW5ndGgpXG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VBbnlEaWdpdHNTaWduZWQgKHN0cmluZywgdmFsdWVDYWxsYmFjaykge1xuICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuYW55RGlnaXRzU2lnbmVkLCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG59XG5cbmZ1bmN0aW9uIHBhcnNlTkRpZ2l0cyAobiwgc3RyaW5nLCB2YWx1ZUNhbGxiYWNrKSB7XG4gIHN3aXRjaCAobikge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5zaW5nbGVEaWdpdCwgc3RyaW5nLCB2YWx1ZUNhbGxiYWNrKVxuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy50d29EaWdpdHMsIHN0cmluZywgdmFsdWVDYWxsYmFjaylcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudGhyZWVEaWdpdHMsIHN0cmluZywgdmFsdWVDYWxsYmFjaylcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuZm91ckRpZ2l0cywgc3RyaW5nLCB2YWx1ZUNhbGxiYWNrKVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihuZXcgUmVnRXhwKCdeXFxcXGR7MSwnICsgbiArICd9JyksIHN0cmluZywgdmFsdWVDYWxsYmFjaylcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZU5EaWdpdHNTaWduZWQgKG4sIHN0cmluZywgdmFsdWVDYWxsYmFjaykge1xuICBzd2l0Y2ggKG4pIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2luZ2xlRGlnaXRTaWduZWQsIHN0cmluZywgdmFsdWVDYWxsYmFjaylcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudHdvRGlnaXRzU2lnbmVkLCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnRocmVlRGlnaXRzU2lnbmVkLCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmZvdXJEaWdpdHNTaWduZWQsIHN0cmluZywgdmFsdWVDYWxsYmFjaylcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obmV3IFJlZ0V4cCgnXi0/XFxcXGR7MSwnICsgbiArICd9JyksIHN0cmluZywgdmFsdWVDYWxsYmFjaylcbiAgfVxufVxuXG5mdW5jdGlvbiBkYXlQZXJpb2RFbnVtVG9Ib3VycyAoZW51bVZhbHVlKSB7XG4gIHN3aXRjaCAoZW51bVZhbHVlKSB7XG4gICAgY2FzZSAnbW9ybmluZyc6XG4gICAgICByZXR1cm4gNFxuICAgIGNhc2UgJ2V2ZW5pbmcnOlxuICAgICAgcmV0dXJuIDE3XG4gICAgY2FzZSAncG0nOlxuICAgIGNhc2UgJ25vb24nOlxuICAgIGNhc2UgJ2FmdGVybm9vbic6XG4gICAgICByZXR1cm4gMTJcbiAgICBjYXNlICdhbSc6XG4gICAgY2FzZSAnbWlkbmlnaHQnOlxuICAgIGNhc2UgJ25pZ2h0JzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIDBcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVUd29EaWdpdFllYXIgKHR3b0RpZ2l0WWVhciwgY3VycmVudFllYXIpIHtcbiAgdmFyIGlzQ29tbW9uRXJhID0gY3VycmVudFllYXIgPiAwO1xuICAvLyBBYnNvbHV0ZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhcjpcbiAgLy8gMSAtPiAxIEFDXG4gIC8vIDAgLT4gMSBCQ1xuICAvLyAtMSAtPiAyIEJDXG4gIHZhciBhYnNDdXJyZW50WWVhciA9IGlzQ29tbW9uRXJhID8gY3VycmVudFllYXIgOiAxIC0gY3VycmVudFllYXI7XG5cbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGFic0N1cnJlbnRZZWFyIDw9IDUwKSB7XG4gICAgcmVzdWx0ID0gdHdvRGlnaXRZZWFyIHx8IDEwMDtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcmFuZ2VFbmQgPSBhYnNDdXJyZW50WWVhciArIDUwO1xuICAgIHZhciByYW5nZUVuZENlbnR1cnkgPSBNYXRoLmZsb29yKHJhbmdlRW5kIC8gMTAwKSAqIDEwMDtcbiAgICB2YXIgaXNQcmV2aW91c0NlbnR1cnkgPSB0d29EaWdpdFllYXIgPj0gcmFuZ2VFbmQgJSAxMDA7XG4gICAgcmVzdWx0ID0gdHdvRGlnaXRZZWFyICsgcmFuZ2VFbmRDZW50dXJ5IC0gKGlzUHJldmlvdXNDZW50dXJ5ID8gMTAwIDogMCk7XG4gIH1cblxuICByZXR1cm4gaXNDb21tb25FcmEgPyByZXN1bHQgOiAxIC0gcmVzdWx0XG59XG5cbnZhciBEQVlTX0lOX01PTlRIJDEgPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG52YXIgREFZU19JTl9NT05USF9MRUFQX1lFQVIkMSA9IFszMSwgMjksIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcblxuLy8gVXNlciBmb3IgdmFsaWRhdGlvblxuZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4JDEgKHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApXG59XG5cbi8qXG4gKiB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICBhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBBKiB8IE1pbGxpc2Vjb25kcyBpbiBkYXkgICAgICAgICAgICB8XG4gKiB8ICBiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICB8ICBCICB8IEZsZXhpYmxlIGRheSBwZXJpb2QgICAgICAgICAgICB8XG4gKiB8ICBjICB8IFN0YW5kLWFsb25lIGxvY2FsIGRheSBvZiB3ZWVrICB8ICBDKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8XG4gKiB8ICBkICB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICB8ICBEICB8IERheSBvZiB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBlICB8IExvY2FsIGRheSBvZiB3ZWVrICAgICAgICAgICAgICB8ICBFICB8IERheSBvZiB3ZWVrICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBmICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBGKiB8IERheSBvZiB3ZWVrIGluIG1vbnRoICAgICAgICAgICB8XG4gKiB8ICBnKiB8IE1vZGlmaWVkIEp1bGlhbiBkYXkgICAgICAgICAgICB8ICBHICB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBoICB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICB8ICBIICB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBpISB8IElTTyBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgICB8ICBJISB8IElTTyB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgICB8XG4gKiB8ICBqKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8ICBKKiB8IExvY2FsaXplZCBob3VyIHcvbyBkYXkgcGVyaW9kICB8XG4gKiB8ICBrICB8IEhvdXIgWzEtMjRdICAgICAgICAgICAgICAgICAgICB8ICBLICB8IEhvdXIgWzAtMTFdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBsKiB8IChkZXByZWNhdGVkKSAgICAgICAgICAgICAgICAgICB8ICBMICB8IFN0YW5kLWFsb25lIG1vbnRoICAgICAgICAgICAgICB8XG4gKiB8ICBtICB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBNICB8IE1vbnRoICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBuICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBOICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBvISB8IE9yZGluYWwgbnVtYmVyIG1vZGlmaWVyICAgICAgICB8ICBPKiB8IFRpbWV6b25lIChHTVQpICAgICAgICAgICAgICAgICB8XG4gKiB8ICBwICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBQICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBxICB8IFN0YW5kLWFsb25lIHF1YXJ0ZXIgICAgICAgICAgICB8ICBRICB8IFF1YXJ0ZXIgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICByKiB8IFJlbGF0ZWQgR3JlZ29yaWFuIHllYXIgICAgICAgICB8ICBSISB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICB8XG4gKiB8ICBzICB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBTICB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICB8XG4gKiB8ICB0ISB8IFNlY29uZHMgdGltZXN0YW1wICAgICAgICAgICAgICB8ICBUISB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICB8XG4gKiB8ICB1ICB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICB8ICBVKiB8IEN5Y2xpYyB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICB2KiB8IFRpbWV6b25lIChnZW5lcmljIG5vbi1sb2NhdC4pICB8ICBWKiB8IFRpbWV6b25lIChsb2NhdGlvbikgICAgICAgICAgICB8XG4gKiB8ICB3ICB8IExvY2FsIHdlZWsgb2YgeWVhciAgICAgICAgICAgICB8ICBXKiB8IFdlZWsgb2YgbW9udGggICAgICAgICAgICAgICAgICB8XG4gKiB8ICB4ICB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICB8ICBYICB8IFRpbWV6b25lIChJU08tODYwMSkgICAgICAgICAgICB8XG4gKiB8ICB5ICB8IFllYXIgKGFicykgICAgICAgICAgICAgICAgICAgICB8ICBZICB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICB8XG4gKiB8ICB6KiB8IFRpbWV6b25lIChzcGVjaWZpYyBub24tbG9jYXQuKSB8ICBaKiB8IFRpbWV6b25lIChhbGlhc2VzKSAgICAgICAgICAgICB8XG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgKiBhcmUgbm90IGltcGxlbWVudGVkIGJ1dCByZXNlcnZlZCBieSBVbmljb2RlIHN0YW5kYXJkLlxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICEgYXJlIG5vbi1zdGFuZGFyZCwgYnV0IGltcGxlbWVudGVkIGJ5IGRhdGUtZm5zOlxuICogLSBgb2AgbW9kaWZpZXMgdGhlIHByZXZpb3VzIHRva2VuIHRvIHR1cm4gaXQgaW50byBhbiBvcmRpbmFsIChzZWUgYHBhcnNlYCBkb2NzKVxuICogLSBgaWAgaXMgSVNPIGRheSBvZiB3ZWVrLiBGb3IgYGlgIGFuZCBgaWlgIGlzIHJldHVybnMgbnVtZXJpYyBJU08gd2VlayBkYXlzLFxuICogICBpLmUuIDcgZm9yIFN1bmRheSwgMSBmb3IgTW9uZGF5LCBldGMuXG4gKiAtIGBJYCBpcyBJU08gd2VlayBvZiB5ZWFyLCBhcyBvcHBvc2VkIHRvIGB3YCB3aGljaCBpcyBsb2NhbCB3ZWVrIG9mIHllYXIuXG4gKiAtIGBSYCBpcyBJU08gd2Vlay1udW1iZXJpbmcgeWVhciwgYXMgb3Bwb3NlZCB0byBgWWAgd2hpY2ggaXMgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhci5cbiAqICAgYFJgIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSWAgYW5kIGBpYFxuICogICBmb3IgdW5pdmVyc2FsIElTTyB3ZWVrLW51bWJlcmluZyBkYXRlLCB3aGVyZWFzXG4gKiAgIGBZYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYHdgIGFuZCBgZWBcbiAqICAgZm9yIHdlZWstbnVtYmVyaW5nIGRhdGUgc3BlY2lmaWMgdG8gdGhlIGxvY2FsZS5cbiAqL1xudmFyIHBhcnNlcnMgPSB7XG4gIC8vIEVyYVxuICBHOiB7XG4gICAgcHJpb3JpdHk6IDE0MCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIEFELCBCQ1xuICAgICAgICBjYXNlICdHJzpcbiAgICAgICAgY2FzZSAnR0cnOlxuICAgICAgICBjYXNlICdHR0cnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5lcmEoc3RyaW5nLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZXJhKHN0cmluZywge3dpZHRoOiAnbmFycm93J30pXG4gICAgICAgIC8vIEEsIEJcbiAgICAgICAgY2FzZSAnR0dHR0cnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5lcmEoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnfSlcbiAgICAgICAgLy8gQW5ubyBEb21pbmksIEJlZm9yZSBDaHJpc3RcbiAgICAgICAgY2FzZSAnR0dHRyc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmVyYShzdHJpbmcsIHt3aWR0aDogJ3dpZGUnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmVyYShzdHJpbmcsIHt3aWR0aDogJ2FiYnJldmlhdGVkJ30pIHx8XG4gICAgICAgICAgICBtYXRjaC5lcmEoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICAvLyBTZXRzIHllYXIgMTAgQkMgaWYgQkMsIG9yIDEwIEFDIGlmIEFDXG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHZhbHVlID09PSAxID8gMTAgOiAtOSwgMCwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gWWVhclxuICB5OiB7XG4gICAgLy8gRnJvbSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LTMxL3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0Zvcm1hdF9QYXR0ZXJuc1xuICAgIC8vIHwgWWVhciAgICAgfCAgICAgeSB8IHl5IHwgICB5eXkgfCAgeXl5eSB8IHl5eXl5IHxcbiAgICAvLyB8LS0tLS0tLS0tLXwtLS0tLS0tfC0tLS18LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18XG4gICAgLy8gfCBBRCAxICAgICB8ICAgICAxIHwgMDEgfCAgIDAwMSB8ICAwMDAxIHwgMDAwMDEgfFxuICAgIC8vIHwgQUQgMTIgICAgfCAgICAxMiB8IDEyIHwgICAwMTIgfCAgMDAxMiB8IDAwMDEyIHxcbiAgICAvLyB8IEFEIDEyMyAgIHwgICAxMjMgfCAyMyB8ICAgMTIzIHwgIDAxMjMgfCAwMDEyMyB8XG4gICAgLy8gfCBBRCAxMjM0ICB8ICAxMjM0IHwgMzQgfCAgMTIzNCB8ICAxMjM0IHwgMDEyMzQgfFxuICAgIC8vIHwgQUQgMTIzNDUgfCAxMjM0NSB8IDQ1IHwgMTIzNDUgfCAxMjM0NSB8IDEyMzQ1IHxcblxuICAgIHByaW9yaXR5OiAxMzAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoeWVhcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgICAgaXNUd29EaWdpdFllYXI6IHRva2VuID09PSAneXknXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyg0LCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgICAgIGNhc2UgJ3lvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihzdHJpbmcsIHt1bml0OiAneWVhcicsIHZhbHVlQ2FsbGJhY2s6IHZhbHVlQ2FsbGJhY2t9KVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUuaXNUd29EaWdpdFllYXIgfHwgdmFsdWUueWVhciA+IDBcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgY3VycmVudFllYXIgPSBnZXRVVENXZWVrWWVhcihkYXRlLCBvcHRpb25zKTtcblxuICAgICAgaWYgKHZhbHVlLmlzVHdvRGlnaXRZZWFyKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkVHdvRGlnaXRZZWFyID0gbm9ybWFsaXplVHdvRGlnaXRZZWFyKHZhbHVlLnllYXIsIGN1cnJlbnRZZWFyKTtcbiAgICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcihub3JtYWxpemVkVHdvRGlnaXRZZWFyLCAwLCAxKTtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICAgIH1cblxuICAgICAgdmFyIHllYXIgPSBjdXJyZW50WWVhciA+IDAgPyB2YWx1ZS55ZWFyIDogMSAtIHZhbHVlLnllYXI7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlXG4gICAgfVxuICB9LFxuXG4gIC8vIExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJcbiAgWToge1xuICAgIHByaW9yaXR5OiAxMzAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoeWVhcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgICAgaXNUd29EaWdpdFllYXI6IHRva2VuID09PSAnWVknXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnWSc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyg0LCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgICAgIGNhc2UgJ1lvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihzdHJpbmcsIHt1bml0OiAneWVhcicsIHZhbHVlQ2FsbGJhY2s6IHZhbHVlQ2FsbGJhY2t9KVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUuaXNUd29EaWdpdFllYXIgfHwgdmFsdWUueWVhciA+IDBcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgY3VycmVudFllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG5cbiAgICAgIGlmICh2YWx1ZS5pc1R3b0RpZ2l0WWVhcikge1xuICAgICAgICB2YXIgbm9ybWFsaXplZFR3b0RpZ2l0WWVhciA9IG5vcm1hbGl6ZVR3b0RpZ2l0WWVhcih2YWx1ZS55ZWFyLCBjdXJyZW50WWVhcik7XG4gICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIobm9ybWFsaXplZFR3b0RpZ2l0WWVhciwgMCwgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpO1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICByZXR1cm4gc3RhcnRPZlVUQ1dlZWsoZGF0ZSwgb3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgdmFyIHllYXIgPSBjdXJyZW50WWVhciA+IDAgPyB2YWx1ZS55ZWFyIDogMSAtIHZhbHVlLnllYXI7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gc3RhcnRPZlVUQ1dlZWsoZGF0ZSwgb3B0aW9ucylcbiAgICB9XG4gIH0sXG5cbiAgLy8gSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAgUjoge1xuICAgIHByaW9yaXR5OiAxMzAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgaWYgKHRva2VuID09PSAnUicpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCg0LCBzdHJpbmcpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQodG9rZW4ubGVuZ3RoLCBzdHJpbmcpXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgdmFyIGZpcnN0V2Vla09mWWVhciA9IG5ldyBEYXRlKDApO1xuICAgICAgZmlyc3RXZWVrT2ZZZWFyLnNldFVUQ0Z1bGxZZWFyKHZhbHVlLCAwLCA0KTtcbiAgICAgIGZpcnN0V2Vla09mWWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDSVNPV2VlayhmaXJzdFdlZWtPZlllYXIpXG4gICAgfVxuICB9LFxuXG4gIC8vIEV4dGVuZGVkIHllYXJcbiAgdToge1xuICAgIHByaW9yaXR5OiAxMzAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgaWYgKHRva2VuID09PSAndScpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCg0LCBzdHJpbmcpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQodG9rZW4ubGVuZ3RoLCBzdHJpbmcpXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih2YWx1ZSwgMCwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gUXVhcnRlclxuICBROiB7XG4gICAgcHJpb3JpdHk6IDEyMCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgIGNhc2UgJ1FRJzogLy8gMDEsIDAyLCAwMywgMDRcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgc3RyaW5nKVxuICAgICAgICAvLyAxc3QsIDJuZCwgM3JkLCA0dGhcbiAgICAgICAgY2FzZSAnUW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKHN0cmluZywge3VuaXQ6ICdxdWFydGVyJ30pXG4gICAgICAgIC8vIFExLCBRMiwgUTMsIFE0XG4gICAgICAgIGNhc2UgJ1FRUSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoc3RyaW5nLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCcsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pIHx8XG4gICAgICAgICAgICBtYXRjaC5xdWFydGVyKHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG4gICAgICAgIGNhc2UgJ1FRUVFRJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG4gICAgICAgIGNhc2UgJ1FRUVEnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKHN0cmluZywge3dpZHRoOiAnd2lkZScsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pIHx8XG4gICAgICAgICAgICBtYXRjaC5xdWFydGVyKHN0cmluZywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KSB8fFxuICAgICAgICAgICAgbWF0Y2gucXVhcnRlcihzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA0XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZS5zZXRVVENNb250aCgodmFsdWUgLSAxKSAqIDMsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlXG4gICAgfVxuICB9LFxuXG4gIC8vIFN0YW5kLWFsb25lIHF1YXJ0ZXJcbiAgcToge1xuICAgIHByaW9yaXR5OiAxMjAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICAgIGNhc2UgJ3EnOlxuICAgICAgICBjYXNlICdxcSc6IC8vIDAxLCAwMiwgMDMsIDA0XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIHN0cmluZylcbiAgICAgICAgLy8gMXN0LCAybmQsIDNyZCwgNHRoXG4gICAgICAgIGNhc2UgJ3FvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihzdHJpbmcsIHt1bml0OiAncXVhcnRlcid9KVxuICAgICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuICAgICAgICBjYXNlICdxcXEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKHN0cmluZywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KSB8fFxuICAgICAgICAgICAgbWF0Y2gucXVhcnRlcihzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdzdGFuZGFsb25lJ30pXG4gICAgICAgIC8vIDEsIDIsIDMsIDQgKG5hcnJvdyBxdWFydGVyOyBjb3VsZCBiZSBub3QgbnVtZXJpY2FsKVxuICAgICAgICBjYXNlICdxcXFxcSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KVxuICAgICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuICAgICAgICBjYXNlICdxcXFxJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihzdHJpbmcsIHt3aWR0aDogJ3dpZGUnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KSB8fFxuICAgICAgICAgICAgbWF0Y2gucXVhcnRlcihzdHJpbmcsIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ3N0YW5kYWxvbmUnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLnF1YXJ0ZXIoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KVxuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNFxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgoKHZhbHVlIC0gMSkgKiAzLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZVxuICAgIH1cbiAgfSxcblxuICAvLyBNb250aFxuICBNOiB7XG4gICAgcHJpb3JpdHk6IDExMCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgLSAxXG4gICAgICB9O1xuXG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIC4uLiwgMTJcbiAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLm1vbnRoLCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgICAgIC8vIDAxLCAwMiwgLi4uLCAxMlxuICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cygyLCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgICAgY2FzZSAnTW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKHN0cmluZywge3VuaXQ6ICdtb250aCcsIHZhbHVlQ2FsbGJhY2s6IHZhbHVlQ2FsbGJhY2t9KVxuICAgICAgICAvLyBKYW4sIEZlYiwgLi4uLCBEZWNcbiAgICAgICAgY2FzZSAnTU1NJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoc3RyaW5nLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCcsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pIHx8XG4gICAgICAgICAgICBtYXRjaC5tb250aChzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAgIC8vIEosIEYsIC4uLiwgRFxuICAgICAgICBjYXNlICdNTU1NTSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgICAgY2FzZSAnTU1NTSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKHN0cmluZywge3dpZHRoOiAnd2lkZScsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pIHx8XG4gICAgICAgICAgICBtYXRjaC5tb250aChzdHJpbmcsIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLm1vbnRoKHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZS5zZXRVVENNb250aCh2YWx1ZSwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gU3RhbmQtYWxvbmUgbW9udGhcbiAgTDoge1xuICAgIHByaW9yaXR5OiAxMTAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIC0gMVxuICAgICAgfTtcblxuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAxLCAyLCAuLi4sIDEyXG4gICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5tb250aCwgc3RyaW5nLCB2YWx1ZUNhbGxiYWNrKVxuICAgICAgICAvLyAwMSwgMDIsIC4uLiwgMTJcbiAgICAgICAgY2FzZSAnTEwnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHMoMiwgc3RyaW5nLCB2YWx1ZUNhbGxiYWNrKVxuICAgICAgICAvLyAxc3QsIDJuZCwgLi4uLCAxMnRoXG4gICAgICAgIGNhc2UgJ0xvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihzdHJpbmcsIHt1bml0OiAnbW9udGgnLCB2YWx1ZUNhbGxiYWNrOiB2YWx1ZUNhbGxiYWNrfSlcbiAgICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG4gICAgICAgIGNhc2UgJ0xMTCc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKHN0cmluZywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KSB8fFxuICAgICAgICAgICAgbWF0Y2gubW9udGgoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KVxuICAgICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgICAgY2FzZSAnTExMTEwnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdzdGFuZGFsb25lJ30pXG4gICAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG4gICAgICAgIGNhc2UgJ0xMTEwnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChzdHJpbmcsIHt3aWR0aDogJ3dpZGUnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KSB8fFxuICAgICAgICAgICAgbWF0Y2gubW9udGgoc3RyaW5nLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCcsIGNvbnRleHQ6ICdzdGFuZGFsb25lJ30pIHx8XG4gICAgICAgICAgICBtYXRjaC5tb250aChzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdzdGFuZGFsb25lJ30pXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAxMVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgodmFsdWUsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlXG4gICAgfVxuICB9LFxuXG4gIC8vIExvY2FsIHdlZWsgb2YgeWVhclxuICB3OiB7XG4gICAgcHJpb3JpdHk6IDEwMCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy53ZWVrLCBzdHJpbmcpXG4gICAgICAgIGNhc2UgJ3dvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihzdHJpbmcsIHt1bml0OiAnd2Vlayd9KVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBzdHJpbmcpXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA1M1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDV2VlayhzZXRVVENXZWVrKGRhdGUsIHZhbHVlLCBvcHRpb25zKSwgb3B0aW9ucylcbiAgICB9XG4gIH0sXG5cbiAgLy8gSVNPIHdlZWsgb2YgeWVhclxuICBJOiB7XG4gICAgcHJpb3JpdHk6IDEwMCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0knOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy53ZWVrLCBzdHJpbmcpXG4gICAgICAgIGNhc2UgJ0lvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihzdHJpbmcsIHt1bml0OiAnd2Vlayd9KVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBzdHJpbmcpXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA1M1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDSVNPV2VlayhzZXRVVENJU09XZWVrKGRhdGUsIHZhbHVlLCBvcHRpb25zKSwgb3B0aW9ucylcbiAgICB9XG4gIH0sXG5cbiAgLy8gRGF5IG9mIHRoZSBtb250aFxuICBkOiB7XG4gICAgcHJpb3JpdHk6IDkwLFxuICAgIHBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmRhdGUsIHN0cmluZylcbiAgICAgICAgY2FzZSAnZG8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKHN0cmluZywge3VuaXQ6ICdkYXRlJ30pXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIHN0cmluZylcbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgdmFyIGlzTGVhcFllYXIgPSBpc0xlYXBZZWFySW5kZXgkMSh5ZWFyKTtcbiAgICAgIHZhciBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgIGlmIChpc0xlYXBZZWFyKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IERBWVNfSU5fTU9OVEhfTEVBUF9ZRUFSJDFbbW9udGhdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSBEQVlTX0lOX01PTlRIJDFbbW9udGhdXG4gICAgICB9XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZS5zZXRVVENEYXRlKHZhbHVlKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZVxuICAgIH1cbiAgfSxcblxuICAvLyBEYXkgb2YgeWVhclxuICBEOiB7XG4gICAgcHJpb3JpdHk6IDkwLFxuICAgIHBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgIGNhc2UgJ0REJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuZGF5T2ZZZWFyLCBzdHJpbmcpXG4gICAgICAgIGNhc2UgJ0RvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihzdHJpbmcsIHt1bml0OiAnZGF0ZSd9KVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBzdHJpbmcpXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgIHZhciBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4JDEoeWVhcik7XG4gICAgICBpZiAoaXNMZWFwWWVhcikge1xuICAgICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAzNjZcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDM2NVxuICAgICAgfVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgoMCwgdmFsdWUpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlXG4gICAgfVxuICB9LFxuXG4gIC8vIERheSBvZiB3ZWVrXG4gIEU6IHtcbiAgICBwcmlvcml0eTogOTAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnRSc6XG4gICAgICAgIGNhc2UgJ0VFJzpcbiAgICAgICAgY2FzZSAnRUVFJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnc2hvcnQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdFRUVFRSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ0VFRUVFRSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgICAvLyBUdWVzZGF5XG4gICAgICAgIGNhc2UgJ0VFRUUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoc3RyaW5nLCB7d2lkdGg6ICd3aWRlJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA2XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZSA9IHNldFVUQ0RheShkYXRlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gTG9jYWwgZGF5IG9mIHdlZWtcbiAgZToge1xuICAgIHByaW9yaXR5OiA5MCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgd2hvbGVXZWVrRGF5cyA9IE1hdGguZmxvb3IoKHZhbHVlIC0gMSkgLyA3KSAqIDc7XG4gICAgICAgIHJldHVybiAodmFsdWUgKyBvcHRpb25zLndlZWtTdGFydHNPbiArIDYpICUgNyArIHdob2xlV2Vla0RheXNcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gM1xuICAgICAgICBjYXNlICdlJzpcbiAgICAgICAgY2FzZSAnZWUnOiAvLyAwM1xuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgICAgIC8vIDNyZFxuICAgICAgICBjYXNlICdlbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoc3RyaW5nLCB7dW5pdDogJ2RheScsIHZhbHVlQ2FsbGJhY2s6IHZhbHVlQ2FsbGJhY2t9KVxuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnZWVlJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnc2hvcnQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdlZWVlZSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ2VlZWVlZSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgICAvLyBUdWVzZGF5XG4gICAgICAgIGNhc2UgJ2VlZWUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoc3RyaW5nLCB7d2lkdGg6ICd3aWRlJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA2XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZSA9IHNldFVUQ0RheShkYXRlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gU3RhbmQtYWxvbmUgbG9jYWwgZGF5IG9mIHdlZWtcbiAgYzoge1xuICAgIHByaW9yaXR5OiA5MCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgd2hvbGVXZWVrRGF5cyA9IE1hdGguZmxvb3IoKHZhbHVlIC0gMSkgLyA3KSAqIDc7XG4gICAgICAgIHJldHVybiAodmFsdWUgKyBvcHRpb25zLndlZWtTdGFydHNPbiArIDYpICUgNyArIHdob2xlV2Vla0RheXNcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gM1xuICAgICAgICBjYXNlICdjJzpcbiAgICAgICAgY2FzZSAnY2MnOiAvLyAwM1xuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBzdHJpbmcsIHZhbHVlQ2FsbGJhY2spXG4gICAgICAgIC8vIDNyZFxuICAgICAgICBjYXNlICdjbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoc3RyaW5nLCB7dW5pdDogJ2RheScsIHZhbHVlQ2FsbGJhY2s6IHZhbHVlQ2FsbGJhY2t9KVxuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnY2NjJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnc2hvcnQnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ3N0YW5kYWxvbmUnfSlcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdjY2NjYyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdzdGFuZGFsb25lJ30pXG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ2NjY2NjYyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ3N0YW5kYWxvbmUnfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnc3RhbmRhbG9uZSd9KVxuICAgICAgICAvLyBUdWVzZGF5XG4gICAgICAgIGNhc2UgJ2NjY2MnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoc3RyaW5nLCB7d2lkdGg6ICd3aWRlJywgY29udGV4dDogJ3N0YW5kYWxvbmUnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ3N0YW5kYWxvbmUnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ3N0YW5kYWxvbmUnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdzdGFuZGFsb25lJ30pXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA2XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZSA9IHNldFVUQ0RheShkYXRlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gSVNPIGRheSBvZiB3ZWVrXG4gIGk6IHtcbiAgICBwcmlvcml0eTogOTAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIDdcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gMlxuICAgICAgICBjYXNlICdpJzpcbiAgICAgICAgY2FzZSAnaWknOiAvLyAwMlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBzdHJpbmcpXG4gICAgICAgIC8vIDJuZFxuICAgICAgICBjYXNlICdpbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoc3RyaW5nLCB7dW5pdDogJ2RheSd9KVxuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnaWlpJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnZm9ybWF0dGluZycsIHZhbHVlQ2FsbGJhY2s6IHZhbHVlQ2FsbGJhY2t9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnc2hvcnQnLCBjb250ZXh0OiAnZm9ybWF0dGluZycsIHZhbHVlQ2FsbGJhY2s6IHZhbHVlQ2FsbGJhY2t9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5KHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnLCB2YWx1ZUNhbGxiYWNrOiB2YWx1ZUNhbGxiYWNrfSlcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdpaWlpaSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJywgdmFsdWVDYWxsYmFjazogdmFsdWVDYWxsYmFja30pXG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ2lpaWlpaSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnLCB2YWx1ZUNhbGxiYWNrOiB2YWx1ZUNhbGxiYWNrfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnZm9ybWF0dGluZycsIHZhbHVlQ2FsbGJhY2s6IHZhbHVlQ2FsbGJhY2t9KVxuICAgICAgICAvLyBUdWVzZGF5XG4gICAgICAgIGNhc2UgJ2lpaWknOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoc3RyaW5nLCB7d2lkdGg6ICd3aWRlJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnLCB2YWx1ZUNhbGxiYWNrOiB2YWx1ZUNhbGxiYWNrfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnLCB2YWx1ZUNhbGxiYWNrOiB2YWx1ZUNhbGxiYWNrfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ3Nob3J0JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnLCB2YWx1ZUNhbGxiYWNrOiB2YWx1ZUNhbGxiYWNrfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJywgdmFsdWVDYWxsYmFjazogdmFsdWVDYWxsYmFja30pXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA3XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZSA9IHNldFVUQ0lTT0RheShkYXRlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gQU0gb3IgUE1cbiAgYToge1xuICAgIHByaW9yaXR5OiA4MCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ2EnOlxuICAgICAgICBjYXNlICdhYSc6XG4gICAgICAgIGNhc2UgJ2FhYSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChzdHJpbmcsIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheVBlcmlvZChzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAgIGNhc2UgJ2FhYWFhJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgICAgY2FzZSAnYWFhYSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChzdHJpbmcsIHt3aWR0aDogJ3dpZGUnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5UGVyaW9kKHN0cmluZywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5UGVyaW9kKHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKGRheVBlcmlvZEVudW1Ub0hvdXJzKHZhbHVlKSwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZVxuICAgIH1cbiAgfSxcblxuICAvLyBBTSwgUE0sIG1pZG5pZ2h0XG4gIGI6IHtcbiAgICBwcmlvcml0eTogODAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdiJzpcbiAgICAgICAgY2FzZSAnYmInOlxuICAgICAgICBjYXNlICdiYmInOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2Qoc3RyaW5nLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCcsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pIHx8XG4gICAgICAgICAgICBtYXRjaC5kYXlQZXJpb2Qoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgICBjYXNlICdiYmJiYic6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICAgIGNhc2UgJ2JiYmInOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2Qoc3RyaW5nLCB7d2lkdGg6ICd3aWRlJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheVBlcmlvZChzdHJpbmcsIHt3aWR0aDogJ2FiYnJldmlhdGVkJywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheVBlcmlvZChzdHJpbmcsIHt3aWR0aDogJ25hcnJvdycsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pXG4gICAgICB9XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZS5zZXRVVENIb3VycyhkYXlQZXJpb2RFbnVtVG9Ib3Vycyh2YWx1ZSksIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gaW4gdGhlIG1vcm5pbmcsIGluIHRoZSBhZnRlcm5vb24sIGluIHRoZSBldmVuaW5nLCBhdCBuaWdodFxuICBCOiB7XG4gICAgcHJpb3JpdHk6IDgwLFxuICAgIHBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnQic6XG4gICAgICAgIGNhc2UgJ0JCJzpcbiAgICAgICAgY2FzZSAnQkJCJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKHN0cmluZywge3dpZHRoOiAnYWJicmV2aWF0ZWQnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5UGVyaW9kKHN0cmluZywge3dpZHRoOiAnbmFycm93JywgY29udGV4dDogJ2Zvcm1hdHRpbmcnfSlcbiAgICAgICAgY2FzZSAnQkJCQkInOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2Qoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgICBjYXNlICdCQkJCJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKHN0cmluZywge3dpZHRoOiAnd2lkZScsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pIHx8XG4gICAgICAgICAgICBtYXRjaC5kYXlQZXJpb2Qoc3RyaW5nLCB7d2lkdGg6ICdhYmJyZXZpYXRlZCcsIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ30pIHx8XG4gICAgICAgICAgICBtYXRjaC5kYXlQZXJpb2Qoc3RyaW5nLCB7d2lkdGg6ICduYXJyb3cnLCBjb250ZXh0OiAnZm9ybWF0dGluZyd9KVxuICAgICAgfVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoZGF5UGVyaW9kRW51bVRvSG91cnModmFsdWUpLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlXG4gICAgfVxuICB9LFxuXG4gIC8vIEhvdXIgWzEtMTJdXG4gIGg6IHtcbiAgICBwcmlvcml0eTogNzAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjEyaCwgc3RyaW5nKVxuICAgICAgICBjYXNlICdobyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoc3RyaW5nLCB7dW5pdDogJ2hvdXInfSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgc3RyaW5nKVxuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMTJcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgaXNQTSA9IGRhdGUuZ2V0VVRDSG91cnMoKSA+PSAxMjtcbiAgICAgIGlmIChpc1BNICYmIHZhbHVlIDwgMTIpIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3Vycyh2YWx1ZSArIDEyLCAwLCAwLCAwKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzUE0gJiYgdmFsdWUgPT09IDEyKSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlLCAwLCAwLCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRlXG4gICAgfVxuICB9LFxuXG4gIC8vIEhvdXIgWzAtMjNdXG4gIEg6IHtcbiAgICBwcmlvcml0eTogNzAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjIzaCwgc3RyaW5nKVxuICAgICAgICBjYXNlICdIbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoc3RyaW5nLCB7dW5pdDogJ2hvdXInfSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgc3RyaW5nKVxuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMjNcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlXG4gICAgfVxuICB9LFxuXG4gIC8vIEhvdXIgWzAtMTFdXG4gIEs6IHtcbiAgICBwcmlvcml0eTogNzAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdLJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjExaCwgc3RyaW5nKVxuICAgICAgICBjYXNlICdLbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoc3RyaW5nLCB7dW5pdDogJ2hvdXInfSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgc3RyaW5nKVxuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMTFcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgaXNQTSA9IGRhdGUuZ2V0VVRDSG91cnMoKSA+PSAxMjtcbiAgICAgIGlmIChpc1BNICYmIHZhbHVlIDwgMTIpIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3Vycyh2YWx1ZSArIDEyLCAwLCAwLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUsIDAsIDAsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gSG91ciBbMS0yNF1cbiAgazoge1xuICAgIHByaW9yaXR5OiA3MCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ2snOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5ob3VyMjRoLCBzdHJpbmcpXG4gICAgICAgIGNhc2UgJ2tvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihzdHJpbmcsIHt1bml0OiAnaG91cid9KVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBzdHJpbmcpXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAyNFxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBob3VycyA9IHZhbHVlIDw9IDI0ID8gdmFsdWUgJSAyNCA6IHZhbHVlO1xuICAgICAgZGF0ZS5zZXRVVENIb3Vycyhob3VycywgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZVxuICAgIH1cbiAgfSxcblxuICAvLyBNaW51dGVcbiAgbToge1xuICAgIHByaW9yaXR5OiA2MCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5taW51dGUsIHN0cmluZylcbiAgICAgICAgY2FzZSAnbW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKHN0cmluZywge3VuaXQ6ICdtaW51dGUnfSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgc3RyaW5nKVxuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNTlcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKGRhdGUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBkYXRlLnNldFVUQ01pbnV0ZXModmFsdWUsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gIH0sXG5cbiAgLy8gU2Vjb25kXG4gIHM6IHtcbiAgICBwcmlvcml0eTogNTAsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2Vjb25kLCBzdHJpbmcpXG4gICAgICAgIGNhc2UgJ3NvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihzdHJpbmcsIHt1bml0OiAnc2Vjb25kJ30pXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIHN0cmluZylcbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDU5XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZS5zZXRVVENTZWNvbmRzKHZhbHVlLCAwKTtcbiAgICAgIHJldHVybiBkYXRlXG4gICAgfVxuICB9LFxuXG4gIC8vIEZyYWN0aW9uIG9mIHNlY29uZFxuICBTOiB7XG4gICAgcHJpb3JpdHk6IDQwLFxuICAgIHBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlICogTWF0aC5wb3coMTAsIC10b2tlbi5sZW5ndGggKyAzKSlcbiAgICAgIH07XG4gICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgc3RyaW5nLCB2YWx1ZUNhbGxiYWNrKVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUuc2V0VVRDTWlsbGlzZWNvbmRzKHZhbHVlKTtcbiAgICAgIHJldHVybiBkYXRlXG4gICAgfVxuICB9LFxuXG4gIC8vIFRpbWV6b25lIChJU08tODYwMS4gKzAwOjAwIGlzIGAnWidgKVxuICBYOiB7XG4gICAgcHJpb3JpdHk6IDIwLFxuICAgIHBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnWCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbE1pbnV0ZXMsIHN0cmluZylcbiAgICAgICAgY2FzZSAnWFgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljLCBzdHJpbmcpXG4gICAgICAgIGNhc2UgJ1hYWFgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljT3B0aW9uYWxTZWNvbmRzLCBzdHJpbmcpXG4gICAgICAgIGNhc2UgJ1hYWFhYJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZE9wdGlvbmFsU2Vjb25kcywgc3RyaW5nKVxuICAgICAgICBjYXNlICdYWFgnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmV4dGVuZGVkLCBzdHJpbmcpXG4gICAgICB9XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUpXG4gICAgfVxuICB9LFxuXG4gIC8vIFRpbWV6b25lIChJU08tODYwMSlcbiAgeDoge1xuICAgIHByaW9yaXR5OiAyMCxcbiAgICBwYXJzZTogZnVuY3Rpb24gKHN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljT3B0aW9uYWxNaW51dGVzLCBzdHJpbmcpXG4gICAgICAgIGNhc2UgJ3h4JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpYywgc3RyaW5nKVxuICAgICAgICBjYXNlICd4eHh4JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpY09wdGlvbmFsU2Vjb25kcywgc3RyaW5nKVxuICAgICAgICBjYXNlICd4eHh4eCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuZXh0ZW5kZWRPcHRpb25hbFNlY29uZHMsIHN0cmluZylcbiAgICAgICAgY2FzZSAneHh4JzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZCwgc3RyaW5nKVxuICAgICAgfVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHZhbHVlKVxuICAgIH1cbiAgfSxcblxuICAvLyBTZWNvbmRzIHRpbWVzdGFtcFxuICB0OiB7XG4gICAgcHJpb3JpdHk6IDEwLFxuICAgIHBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBwYXJzZUFueURpZ2l0c1NpZ25lZChzdHJpbmcpXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlICogMTAwMClcbiAgICB9XG4gIH0sXG5cbiAgLy8gTWlsbGlzZWNvbmRzIHRpbWVzdGFtcFxuICBUOiB7XG4gICAgcHJpb3JpdHk6IDEwLFxuICAgIHBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBwYXJzZUFueURpZ2l0c1NpZ25lZChzdHJpbmcpXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKVxuICAgIH1cbiAgfVxufTtcblxudmFyIFRJTUVaT05FX1VOSVRfUFJJT1JJVFkgPSAyMDtcblxuLy8gVGhpcyBSZWdFeHAgY29uc2lzdHMgb2YgdGhyZWUgcGFydHMgc2VwYXJhdGVkIGJ5IGB8YDpcbi8vIC0gW3lZUXFNTHdJZERlY2loSEtrbXNdbyBtYXRjaGVzIGFueSBhdmFpbGFibGUgb3JkaW5hbCBudW1iZXIgdG9rZW5cbi8vICAgKG9uZSBvZiB0aGUgY2VydGFpbiBsZXR0ZXJzIGZvbGxvd2VkIGJ5IGBvYClcbi8vIC0gKFxcdylcXDEqIG1hdGNoZXMgYW55IHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBsZXR0ZXJcbi8vIC0gJycgbWF0Y2hlcyB0d28gcXVvdGUgY2hhcmFjdGVycyBpbiBhIHJvd1xuLy8gLSAnKCcnfFteJ10pKygnfCQpIG1hdGNoZXMgYW55dGhpbmcgc3Vycm91bmRlZCBieSB0d28gcXVvdGUgY2hhcmFjdGVycyAoJyksXG4vLyAgIGV4Y2VwdCBhIHNpbmdsZSBxdW90ZSBzeW1ib2wsIHdoaWNoIGVuZHMgdGhlIHNlcXVlbmNlLlxuLy8gICBUd28gcXVvdGUgY2hhcmFjdGVycyBkbyBub3QgZW5kIHRoZSBzZXF1ZW5jZS5cbi8vICAgSWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc2luZ2xlIHF1b3RlXG4vLyAgIHRoZW4gdGhlIHNlcXVlbmNlIHdpbGwgY29udGludWUgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuLy8gLSAuIG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgdW5tYXRjaGVkIGJ5IHByZXZpb3VzIHBhcnRzIG9mIHRoZSBSZWdFeHBzXG52YXIgZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCQxID0gL1t5WVFxTUx3SWREZWNpaEhLa21zXW98KFxcdylcXDEqfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xuXG52YXIgZXNjYXBlZFN0cmluZ1JlZ0V4cCQxID0gL14nKC4qPyknPyQvO1xudmFyIGRvdWJsZVF1b3RlUmVnRXhwJDEgPSAvJycvZztcblxudmFyIG5vdFdoaXRlc3BhY2VSZWdFeHAgPSAvXFxTLztcblxuLyoqXG4gKiBAbmFtZSBwYXJzZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBQYXJzZSB0aGUgZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGF0ZSBwYXJzZWQgZnJvbSBzdHJpbmcgdXNpbmcgdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGZvcm1hdGAgdG9rZW5zIGRpZmZlciBmcm9tIE1vbWVudC5qcyBhbmQgb3RoZXIgbGlicmFyaWVzLlxuICogPiBTZWU6IGh0dHBzOi8vZ2l0LmlvL2Z4Q3lyXG4gKlxuICogVGhlIGNoYXJhY3RlcnMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgd3JhcHBlZCBiZXR3ZWVuIHR3byBzaW5nbGUgcXVvdGVzIGNoYXJhY3RlcnMgKCcpIGFyZSBlc2NhcGVkLlxuICogVHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3csIHdoZXRoZXIgaW5zaWRlIG9yIG91dHNpZGUgYSBxdW90ZWQgc2VxdWVuY2UsIHJlcHJlc2VudCBhICdyZWFsJyBzaW5nbGUgcXVvdGUuXG4gKlxuICogRm9ybWF0IG9mIHRoZSBmb3JtYXQgc3RyaW5nIGlzIGJhc2VkIG9uIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqIHdpdGggYSBmZXcgYWRkaXRpb25zIChzZWUgbm90ZSA1IGJlbG93IHRoZSB0YWJsZSkuXG4gKlxuICogQWNjZXB0ZWQgZm9ybWF0IHN0cmluZyBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8UHJpb3J8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfFxuICogfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQwIHwgRy4uR0dHICB8IEFELCBCQyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEdHR0cgICAgfCBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBHR0dHRyAgIHwgQSwgQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgMTMwIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5OTk5ICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eXkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXl5eSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgIHwgMTMwIHwgWSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5MDAwICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCw2ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWVkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0LDYgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVlZWSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgIHwgMTMwIHwgUiAgICAgICB8IC00MywgMSwgMTkwMCwgMjAxNywgOTk5OSwgLTk5OTkgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSICAgICAgfCAtNDMsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlIgICAgIHwgLTA0MywgMDAxLCAxMjMsIDk5OSwgLTk5OSAgICAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSUiAgICB8IC0wMDQzLCAwMDAxLCAyMDE3LCA5OTk5LCAtOTk5OSAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUlJSICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQsNSB8XG4gKiB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICAgfCAxMzAgfCB1ICAgICAgIHwgLTQzLCAxLCAxOTAwLCAyMDE3LCA5OTk5LCAtOTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXUgICAgICB8IC00MywgMDEsIDk5LCAtOTkgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dSAgICAgfCAtMDQzLCAwMDEsIDEyMywgOTk5LCAtOTk5ICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXV1ICAgIHwgLTAwNDMsIDAwMDEsIDIwMTcsIDk5OTksIC05OTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1dXUgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCAgIHxcbiAqIHwgUXVhcnRlciAoZm9ybWF0dGluZykgICAgICAgICAgICB8IDEyMCB8IFEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVFRICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRUVEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgUXVhcnRlciAoc3RhbmQtYWxvbmUpICAgICAgICAgICB8IDEyMCB8IHEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXFxICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxcXEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IDExMCB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTSAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU1NICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NTU0gICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTW9udGggKHN0YW5kLWFsb25lKSAgICAgICAgICAgICB8IDExMCB8IEwgICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTEwgICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTCAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTExMICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMTEwgICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgICB8IDEwMCB8IHcgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB3byAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgd3cgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgICB8IDEwMCB8IEkgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBJbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSUkgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IGQgICAgICAgfCAxLCAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBkbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzFzdCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZGQgICAgICB8IDAxLCAwMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IEQgICAgICAgfCAxLCAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgICAgfCA2ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzY1dGgsIDM2NnRoICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgREQgICAgICB8IDAxLCAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICB8IDYgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IERERCAgICAgfCAwMDEsIDAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEREREICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBEYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgICAgIHwgIDkwIHwgRS4uRUVFICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3UgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFRSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRUVFICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU3UsIFNhICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICB8ICA5MCB8IGkgICAgICAgfCAxLCAyLCAzLCAuLi4sIDcgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgN3RoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWkgICAgICB8IDAxLCAwMiwgLi4uLCAwNyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1ICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaWkgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWlpaSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFN1LCBTYSAgICAgICAgfCA1ICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgfCAgOTAgfCBlICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZW8gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWUgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdSAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWVlICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlZWUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTdSwgU2EgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoc3RhbmQtYWxvbmUpIHwgIDkwIHwgYyAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjYyAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3UgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2MgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjYyAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjY2NjICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU3UsIFNhICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4MCB8IGEuLmFhYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBhYWFhICAgIHwgYS5tLiwgcC5tLiAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICB8ICA4MCB8IGIuLmJiYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBiYmJiICAgIHwgYS5tLiwgcC5tLiwgbm9vbiwgbWlkbmlnaHQgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYmJiYmIgICB8IGEsIHAsIG4sIG1pICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRmxleGlibGUgZGF5IHBlcmlvZCAgICAgICAgICAgICB8ICA4MCB8IEIuLkJCQiAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBCQkJCICAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgQkJCQkIgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGggICAgICAgfCAxLCAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBobyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMTJ0aCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaGggICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEggICAgICAgfCAwLCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBIbyAgICAgIHwgMHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSEggICAgICB8IDAwLCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0xMV0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEsgICAgICAgfCAxLCAyLCAuLi4sIDExLCAwICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBLbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMHRoICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgS0sgICAgICB8IDEsIDIsIC4uLiwgMTEsIDAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0yNF0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGsgICAgICAgfCAyNCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBrbyAgICAgIHwgMjR0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwga2sgICAgICB8IDI0LCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MCB8IG0gICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBtbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgbW0gICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MCB8IHMgICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBzbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgc3MgICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgICB8ICA0MCB8IFMgICAgICAgfCAwLCAxLCAuLi4sIDkgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTUyAgICAgIHwgMDAsIDAxLCAuLi4sIDk5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1NTICAgICB8IDAwMCwgMDAwMSwgLi4uLCA5OTkgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTU1MgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3LyBaKSAgICAgICAgfCAgMjAgfCBYICAgICAgIHwgLTA4LCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFggICAgICB8IC0wODAwLCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWCAgICAgfCAtMDg6MDAsICswNTozMCwgWiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFhYICAgIHwgLTA4MDAsICswNTMwLCBaLCArMTIzNDU2ICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYWFggICB8IC0wODowMCwgKzA1OjMwLCBaLCArMTI6MzQ6NTYgICAgICB8ICAgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvbyBaKSAgICAgICB8ICAyMCB8IHggICAgICAgfCAtMDgsICswNTMwLCArMDAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eCAgICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4ICAgICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eHggICAgfCAtMDgwMCwgKzA1MzAsICswMDAwLCArMTIzNDU2ICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHh4eCAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCwgKzEyOjM0OjU2IHwgICAgICAgfFxuICogfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgIHwgIDEwIHwgdCAgICAgICB8IDUxMjk2OTUyMCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHR0ICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgfCAgMTAgfCBUICAgICAgIHwgNTEyOTY5NTIwOTAwICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgVFQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIE5vdGVzOlxuICogMS4gXCJGb3JtYXR0aW5nXCIgdW5pdHMgKGUuZy4gZm9ybWF0dGluZyBxdWFydGVyKSBpbiB0aGUgZGVmYXVsdCBlbi1VUyBsb2NhbGVcbiAqICAgIGFyZSB0aGUgc2FtZSBhcyBcInN0YW5kLWFsb25lXCIgdW5pdHMsIGJ1dCBhcmUgZGlmZmVyZW50IGluIHNvbWUgbGFuZ3VhZ2VzLlxuICogICAgXCJGb3JtYXR0aW5nXCIgdW5pdHMgYXJlIGRlY2xpbmVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxhbmd1YWdlXG4gKiAgICBpbiB0aGUgY29udGV4dCBvZiBhIGRhdGUuIFwiU3RhbmQtYWxvbmVcIiB1bml0cyBhcmUgYWx3YXlzIG5vbWluYXRpdmUgc2luZ3VsYXIuXG4gKiAgICBJbiBgZm9ybWF0YCBmdW5jdGlvbiwgdGhleSB3aWxsIHByb2R1Y2UgZGlmZmVyZW50IHJlc3VsdDpcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIExMTEwnLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIE1NTU0nLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkdSdgXG4gKlxuICogICAgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCBib3RoIGZvcm1hdHRpbmcgYW5kIHN0YW5kLWFsb25lIHVuaXRzIGludGVyY2hhbmdhYmx5LlxuICpcbiAqIDIuIEFueSBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpY2FsIGxldHRlcnMgaXMgYSBwYXR0ZXJuLCB1bmxlc3MgaXQgaXMgZXNjYXBlZCBieVxuICogICAgdGhlIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIChzZWUgYmVsb3cpLlxuICogICAgSWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciB0aGFuIGxpc3RlZCBpbiB0YWJsZTpcbiAqICAgIC0gZm9yIG51bWVyaWNhbCB1bml0cyAoYHl5eXl5eXl5YCkgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCBhIG51bWJlclxuICogICAgICBhcyB3aWRlIGFzIHRoZSBzZXF1ZW5jZVxuICogICAgLSBmb3IgdGV4dCB1bml0cyAoYE1NTU1NTU1NYCkgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCB0aGUgd2lkZXN0IHZhcmlhdGlvbiBvZiB0aGUgdW5pdC5cbiAqICAgICAgVGhlc2UgdmFyaWF0aW9ucyBhcmUgbWFya2VkIHdpdGggXCIyXCIgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSB0YWJsZS5cbiAqXG4gKiAzLiBgUVFRUVFgIGFuZCBgcXFxcXFgIGNvdWxkIGJlIG5vdCBzdHJpY3RseSBudW1lcmljYWwgaW4gc29tZSBsb2NhbGVzLlxuICogICAgVGhlc2UgdG9rZW5zIHJlcHJlc2VudCB0aGUgc2hvcnRlc3QgZm9ybSBvZiB0aGUgcXVhcnRlci5cbiAqXG4gKiA0LiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gYHlgIGFuZCBgdWAgcGF0dGVybnMgYXJlIEIuQy4geWVhcnM6XG4gKlxuICogICAgfCBZZWFyIHwgYHlgIHwgYHVgIHxcbiAqICAgIHwtLS0tLS18LS0tLS18LS0tLS18XG4gKiAgICB8IEFDIDEgfCAgIDEgfCAgIDEgfFxuICogICAgfCBCQyAxIHwgICAxIHwgICAwIHxcbiAqICAgIHwgQkMgMiB8ICAgMiB8ICAtMSB8XG4gKlxuICogICAgQWxzbyBgeXlgIHdpbGwgdHJ5IHRvIGd1ZXNzIHRoZSBjZW50dXJ5IG9mIHR3byBkaWdpdCB5ZWFyIGJ5IHByb3hpbWl0eSB3aXRoIGBiYXNlRGF0ZWA6XG4gKlxuICogICAgYHBhcnNlKCc1MCcsICd5eScsIG5ldyBEYXRlKDIwMTgsIDAsIDEpKSAvLz0+IFNhdCBKYW4gMDEgMjA1MCAwMDowMDowMGBcbiAqXG4gKiAgICBgcGFyc2UoJzc1JywgJ3l5JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gV2VkIEphbiAwMSAxOTc1IDAwOjAwOjAwYFxuICpcbiAqICAgIHdoaWxlIGB1dWAgd2lsbCBqdXN0IGFzc2lnbiB0aGUgeWVhciBhcyBpczpcbiAqXG4gKiAgICBgcGFyc2UoJzUwJywgJ3V1JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gU2F0IEphbiAwMSAwMDUwIDAwOjAwOjAwYFxuICpcbiAqICAgIGBwYXJzZSgnNzUnLCAndXUnLCBuZXcgRGF0ZSgyMDE4LCAwLCAxKSkgLy89PiBUdWUgSmFuIDAxIDAwNzUgMDA6MDA6MDBgXG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbc2V0SVNPV2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0SVNPV2Vla1llYXJ9XG4gKiAgICBhbmQgW3NldFdlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3NldFdlZWtZZWFyfSkuXG4gKlxuICogNS4gVGhlc2UgcGF0dGVybnMgYXJlIG5vdCBpbiB0aGUgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogICAgLSBgaWA6IElTTyBkYXkgb2Ygd2Vla1xuICogICAgLSBgSWA6IElTTyB3ZWVrIG9mIHllYXJcbiAqICAgIC0gYFJgOiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogICAgLSBgb2A6IG9yZGluYWwgbnVtYmVyIG1vZGlmaWVyXG4gKlxuICogNi4gVGhlc2UgdG9rZW5zIGFyZSBvZnRlbiBjb25mdXNlZCB3aXRoIG90aGVycy4gU2VlOiBodHRwczovL2dpdC5pby9meEN5clxuICpcbiAqIFZhbHVlcyB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBkYXRlIGluIHRoZSBkZXNjZW5kaW5nIG9yZGVyIG9mIGl0cyB1bml0J3MgcHJpb3JpdHkuXG4gKiBVbml0cyBvZiBhbiBlcXVhbCBwcmlvcml0eSBvdmVyd3JpdGUgZWFjaCBvdGhlciBpbiB0aGUgb3JkZXIgb2YgYXBwZWFyYW5jZS5cbiAqXG4gKiBJZiBubyB2YWx1ZXMgb2YgaGlnaGVyIHByaW9yaXR5IGFyZSBwYXJzZWQgKGUuZy4gd2hlbiBwYXJzaW5nIHN0cmluZyAnSmFudWFyeSAxc3QnIHdpdGhvdXQgYSB5ZWFyKSxcbiAqIHRoZSB2YWx1ZXMgd2lsbCBiZSB0YWtlbiBmcm9tIDNyZCBhcmd1bWVudCBgYmFzZURhdGVgIHdoaWNoIHdvcmtzIGFzIGEgY29udGV4dCBvZiBwYXJzaW5nLlxuICpcbiAqIGBiYXNlRGF0ZWAgbXVzdCBiZSBwYXNzZWQgZm9yIGNvcnJlY3Qgd29yayBvZiB0aGUgZnVuY3Rpb24uXG4gKiBJZiB5b3UncmUgbm90IHN1cmUgd2hpY2ggYGJhc2VEYXRlYCB0byBzdXBwbHksIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBEYXRlOlxuICogYHBhcnNlKCcwMi8xMS8yMDE0JywgJ01NL2RkL3l5eXknLCBuZXcgRGF0ZSgpKWBcbiAqIEluIHRoaXMgY2FzZSBwYXJzaW5nIHdpbGwgYmUgZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCBkYXRlLlxuICogSWYgYGJhc2VEYXRlYCBpcyBgSW52YWxpZCBEYXRlYCBvciBhIHZhbHVlIG5vdCBjb252ZXJ0aWJsZSB0byB2YWxpZCBgRGF0ZWAsXG4gKiB0aGVuIGBJbnZhbGlkIERhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogVGhlIHJlc3VsdCBtYXkgdmFyeSBieSBsb2NhbGUuXG4gKlxuICogSWYgYGZvcm1hdFN0cmluZ2AgbWF0Y2hlcyB3aXRoIGBkYXRlU3RyaW5nYCBidXQgZG9lcyBub3QgcHJvdmlkZXMgdG9rZW5zLCBgYmFzZURhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogSWYgcGFyc2luZyBmYWlsZWQsIGBJbnZhbGlkIERhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJbnZhbGlkIERhdGUgaXMgYSBEYXRlLCB3aG9zZSB0aW1lIHZhbHVlIGlzIE5hTi5cbiAqIFRpbWUgdmFsdWUgb2YgRGF0ZTogaHR0cDovL2VzNS5naXRodWIuaW8vI3gxNS45LjEuMVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBkYXRlU3RyaW5nIC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFN0cmluZyAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0ge0RhdGV8U3RyaW5nfE51bWJlcn0gYmFzZURhdGUgLSBkZWZpbmVzIHZhbHVlcyBtaXNzaW5nIGZyb20gdGhlIHBhcnNlZCBkYXRlU3RyaW5nXG4gKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSAtIHRoZSBvYmplY3Qgd2l0aCBvcHRpb25zLiBTZWUgW09wdGlvbnNde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvT3B0aW9uc31cbiAqIEBwYXJhbSB7MHwxfDJ9IFtvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHM9Ml0gLSBwYXNzZWQgdG8gYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYXdhcmVPZlVuaWNvZGVUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIFVuaWNvZGUgdG9rZW5zIGNhdXNlcyBjb25mdXNpb246XG4gKiAgIC0gU29tZSBvZiB0aGUgZGF5IG9mIHllYXIgdG9rZW5zIChgRGAsIGBERGApIHRoYXQgYXJlIGNvbmZ1c2VkIHdpdGggdGhlIGRheSBvZiBtb250aCB0b2tlbnMgKGBkYCwgYGRkYCkuXG4gKiAgIC0gU29tZSBvZiB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciB0b2tlbnMgKGBZWWAsIGBZWVlZYCkgdGhhdCBhcmUgY29uZnVzZWQgd2l0aCB0aGUgY2FsZW5kYXIgeWVhciB0b2tlbnMgKGB5eWAsIGB5eXl5YCkuXG4gKiAgIFNlZTogaHR0cHM6Ly9naXQuaW8vZnhDeXJcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcGFyc2VkIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMyBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIG11c3QgYmUgMCwgMSBvciAyXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgbWF0Y2hgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hd2FyZU9mVW5pY29kZVRva2Vuc2AgbXVzdCBiZSBzZXQgdG8gYHRydWVgIHRvIHVzZSBgWFhgIHRva2VuOyBzZWU6IGh0dHBzOi8vZ2l0LmlvL2Z4Q3lyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFBhcnNlIDExIEZlYnJ1YXJ5IDIwMTQgZnJvbSBtaWRkbGUtZW5kaWFuIGZvcm1hdDpcbiAqIHZhciByZXN1bHQgPSBwYXJzZShcbiAqICAgJzAyLzExLzIwMTQnLFxuICogICAnTU0vZGQveXl5eScsXG4gKiAgIG5ldyBEYXRlKClcbiAqIClcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFBhcnNlIDI4dGggb2YgRmVicnVhcnkgaW4gRXNwZXJhbnRvIGxvY2FsZSBpbiB0aGUgY29udGV4dCBvZiAyMDEwIHllYXI6XG4gKiBpbXBvcnQgZW8gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogdmFyIHJlc3VsdCA9IHBhcnNlKFxuICogICAnMjgtYSBkZSBmZWJydWFybycsXG4gKiAgIFwiZG8gJ2RlJyBNTU1NXCIsXG4gKiAgIG5ldyBEYXRlKDIwMTAsIDAsIDEpLFxuICogICB7bG9jYWxlOiBlb31cbiAqIClcbiAqIC8vPT4gU3VuIEZlYiAyOCAyMDEwIDAwOjAwOjAwXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKFxuICBkaXJ0eURhdGVTdHJpbmcsXG4gIGRpcnR5Rm9ybWF0U3RyaW5nLFxuICBkaXJ0eUJhc2VEYXRlLFxuICBkaXJ0eU9wdGlvbnNcbikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJzMgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCdcbiAgICApXG4gIH1cblxuICB2YXIgZGF0ZVN0cmluZyA9IFN0cmluZyhkaXJ0eURhdGVTdHJpbmcpO1xuICB2YXIgZm9ybWF0U3RyaW5nID0gU3RyaW5nKGRpcnR5Rm9ybWF0U3RyaW5nKTtcbiAgdmFyIG9wdGlvbnMgPSBkaXJ0eU9wdGlvbnMgfHwge307XG5cbiAgdmFyIGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlIHx8IGxvY2FsZSQxO1xuXG4gIGlmICghbG9jYWxlLm1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gbWF0Y2ggcHJvcGVydHknKVxuICB9XG5cbiAgdmFyIGxvY2FsZUZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9XG4gICAgbG9jYWxlLm9wdGlvbnMgJiYgbG9jYWxlLm9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlO1xuICB2YXIgZGVmYXVsdEZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9XG4gICAgbG9jYWxlRmlyc3RXZWVrQ29udGFpbnNEYXRlID09IG51bGxcbiAgICAgID8gMVxuICAgICAgOiB0b0ludGVnZXIobG9jYWxlRmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9XG4gICAgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUgPT0gbnVsbFxuICAgICAgPyBkZWZhdWx0Rmlyc3RXZWVrQ29udGFpbnNEYXRlXG4gICAgICA6IHRvSW50ZWdlcihvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEoZmlyc3RXZWVrQ29udGFpbnNEYXRlID49IDEgJiYgZmlyc3RXZWVrQ29udGFpbnNEYXRlIDw9IDcpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICAnZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5J1xuICAgIClcbiAgfVxuXG4gIHZhciBsb2NhbGVXZWVrU3RhcnRzT24gPSBsb2NhbGUub3B0aW9ucyAmJiBsb2NhbGUub3B0aW9ucy53ZWVrU3RhcnRzT247XG4gIHZhciBkZWZhdWx0V2Vla1N0YXJ0c09uID1cbiAgICBsb2NhbGVXZWVrU3RhcnRzT24gPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIobG9jYWxlV2Vla1N0YXJ0c09uKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9XG4gICAgb3B0aW9ucy53ZWVrU3RhcnRzT24gPT0gbnVsbFxuICAgICAgPyBkZWZhdWx0V2Vla1N0YXJ0c09uXG4gICAgICA6IHRvSW50ZWdlcihvcHRpb25zLndlZWtTdGFydHNPbik7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpXG4gIH1cblxuICBpZiAoZm9ybWF0U3RyaW5nID09PSAnJykge1xuICAgIGlmIChkYXRlU3RyaW5nID09PSAnJykge1xuICAgICAgcmV0dXJuIHRvRGF0ZShkaXJ0eUJhc2VEYXRlLCBvcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgIH1cbiAgfVxuXG4gIHZhciBzdWJGbk9wdGlvbnMgPSB7XG4gICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiBmaXJzdFdlZWtDb250YWluc0RhdGUsXG4gICAgd2Vla1N0YXJ0c09uOiB3ZWVrU3RhcnRzT24sXG4gICAgbG9jYWxlOiBsb2NhbGVcbiAgfTtcblxuICAvLyBJZiB0aW1lem9uZSBpc24ndCBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgc2V0IHRvIHRoZSBzeXN0ZW0gdGltZXpvbmVcbiAgdmFyIHNldHRlcnMgPSBbXG4gICAge1xuICAgICAgcHJpb3JpdHk6IFRJTUVaT05FX1VOSVRfUFJJT1JJVFksXG4gICAgICBzZXQ6IGRhdGVUb1N5c3RlbVRpbWV6b25lLFxuICAgICAgaW5kZXg6IDBcbiAgICB9XG4gIF07XG5cbiAgdmFyIGk7XG5cbiAgdmFyIHRva2VucyA9IGZvcm1hdFN0cmluZy5tYXRjaChmb3JtYXR0aW5nVG9rZW5zUmVnRXhwJDEpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaV07XG5cbiAgICBpZiAoIW9wdGlvbnMuYXdhcmVPZlVuaWNvZGVUb2tlbnMgJiYgaXNQcm90ZWN0ZWRUb2tlbih0b2tlbikpIHtcbiAgICAgIHRocm93UHJvdGVjdGVkRXJyb3IodG9rZW4pO1xuICAgIH1cblxuICAgIHZhciBmaXJzdENoYXJhY3RlciA9IHRva2VuWzBdO1xuICAgIHZhciBwYXJzZXIgPSBwYXJzZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICBpZiAocGFyc2VyKSB7XG4gICAgICB2YXIgcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UoXG4gICAgICAgIGRhdGVTdHJpbmcsXG4gICAgICAgIHRva2VuLFxuICAgICAgICBsb2NhbGUubWF0Y2gsXG4gICAgICAgIHN1YkZuT3B0aW9uc1xuICAgICAgKTtcblxuICAgICAgaWYgKCFwYXJzZVJlc3VsdCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgICAgfVxuXG4gICAgICBzZXR0ZXJzLnB1c2goe1xuICAgICAgICBwcmlvcml0eTogcGFyc2VyLnByaW9yaXR5LFxuICAgICAgICBzZXQ6IHBhcnNlci5zZXQsXG4gICAgICAgIHZhbGlkYXRlOiBwYXJzZXIudmFsaWRhdGUsXG4gICAgICAgIHZhbHVlOiBwYXJzZVJlc3VsdC52YWx1ZSxcbiAgICAgICAgaW5kZXg6IHNldHRlcnMubGVuZ3RoXG4gICAgICB9KTtcblxuICAgICAgZGF0ZVN0cmluZyA9IHBhcnNlUmVzdWx0LnJlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlcGxhY2UgdHdvIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIHdpdGggb25lIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJcbiAgICAgIGlmICh0b2tlbiA9PT0gXCInJ1wiKSB7XG4gICAgICAgIHRva2VuID0gXCInXCI7XG4gICAgICB9IGVsc2UgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSBcIidcIikge1xuICAgICAgICB0b2tlbiA9IGNsZWFuRXNjYXBlZFN0cmluZyQxKHRva2VuKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ3V0IHRva2VuIGZyb20gc3RyaW5nLCBvciwgaWYgc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHRva2VuLCByZXR1cm4gSW52YWxpZCBEYXRlXG4gICAgICBpZiAoZGF0ZVN0cmluZy5pbmRleE9mKHRva2VuKSA9PT0gMCkge1xuICAgICAgICBkYXRlU3RyaW5nID0gZGF0ZVN0cmluZy5zbGljZSh0b2tlbi5sZW5ndGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcmVtYWluaW5nIGlucHV0IGNvbnRhaW5zIHNvbWV0aGluZyBvdGhlciB0aGFuIHdoaXRlc3BhY2VcbiAgaWYgKGRhdGVTdHJpbmcubGVuZ3RoID4gMCAmJiBub3RXaGl0ZXNwYWNlUmVnRXhwLnRlc3QoZGF0ZVN0cmluZykpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICB9XG5cbiAgdmFyIHVuaXF1ZVByaW9yaXR5U2V0dGVycyA9IHNldHRlcnNcbiAgICAubWFwKGZ1bmN0aW9uKHNldHRlcikge1xuICAgICAgcmV0dXJuIHNldHRlci5wcmlvcml0eVxuICAgIH0pXG4gICAgLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgICAgcmV0dXJuIGIgLSBhXG4gICAgfSlcbiAgICAuZmlsdGVyKGZ1bmN0aW9uKHByaW9yaXR5LCBpbmRleCwgYXJyYXkpIHtcbiAgICAgIHJldHVybiBhcnJheS5pbmRleE9mKHByaW9yaXR5KSA9PT0gaW5kZXhcbiAgICB9KVxuICAgIC5tYXAoZnVuY3Rpb24ocHJpb3JpdHkpIHtcbiAgICAgIHJldHVybiBzZXR0ZXJzXG4gICAgICAgIC5maWx0ZXIoZnVuY3Rpb24oc2V0dGVyKSB7XG4gICAgICAgICAgcmV0dXJuIHNldHRlci5wcmlvcml0eSA9PT0gcHJpb3JpdHlcbiAgICAgICAgfSlcbiAgICAgICAgLnJldmVyc2UoKVxuICAgIH0pXG4gICAgLm1hcChmdW5jdGlvbihzZXR0ZXJBcnJheSkge1xuICAgICAgcmV0dXJuIHNldHRlckFycmF5WzBdXG4gICAgfSk7XG5cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlCYXNlRGF0ZSwgb3B0aW9ucyk7XG5cbiAgaWYgKGlzTmFOKGRhdGUpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgfVxuXG4gIC8vIENvbnZlcnQgdGhlIGRhdGUgaW4gc3lzdGVtIHRpbWV6b25lIHRvIHRoZSBzYW1lIGRhdGUgaW4gVVRDKzAwOjAwIHRpbWV6b25lLlxuICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3aGVuIFVUQyBmdW5jdGlvbnMgd2lsbCBiZSBpbXBsZW1lbnRlZCwgbG9jYWxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGVtLlxuICAvLyBTZWUgYW4gaXNzdWUgYWJvdXQgVVRDIGZ1bmN0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zN1xuICB2YXIgdXRjRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhkYXRlLCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGUpKTtcblxuICBmb3IgKGkgPSAwOyBpIDwgdW5pcXVlUHJpb3JpdHlTZXR0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNldHRlciA9IHVuaXF1ZVByaW9yaXR5U2V0dGVyc1tpXTtcblxuICAgIGlmIChcbiAgICAgIHNldHRlci52YWxpZGF0ZSAmJlxuICAgICAgIXNldHRlci52YWxpZGF0ZSh1dGNEYXRlLCBzZXR0ZXIudmFsdWUsIHN1YkZuT3B0aW9ucylcbiAgICApIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pXG4gICAgfVxuXG4gICAgdXRjRGF0ZSA9IHNldHRlci5zZXQodXRjRGF0ZSwgc2V0dGVyLnZhbHVlLCBzdWJGbk9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHV0Y0RhdGVcbn1cblxuZnVuY3Rpb24gZGF0ZVRvU3lzdGVtVGltZXpvbmUoZGF0ZSkge1xuICB2YXIgY29udmVydGVkRGF0ZSA9IG5ldyBEYXRlKDApO1xuICBjb252ZXJ0ZWREYXRlLnNldEZ1bGxZZWFyKFxuICAgIGRhdGUuZ2V0VVRDRnVsbFllYXIoKSxcbiAgICBkYXRlLmdldFVUQ01vbnRoKCksXG4gICAgZGF0ZS5nZXRVVENEYXRlKClcbiAgKTtcbiAgY29udmVydGVkRGF0ZS5zZXRIb3VycyhcbiAgICBkYXRlLmdldFVUQ0hvdXJzKCksXG4gICAgZGF0ZS5nZXRVVENNaW51dGVzKCksXG4gICAgZGF0ZS5nZXRVVENTZWNvbmRzKCksXG4gICAgZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKVxuICApO1xuICByZXR1cm4gY29udmVydGVkRGF0ZVxufVxuXG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmckMShpbnB1dCkge1xuICByZXR1cm4gaW5wdXQubWF0Y2goZXNjYXBlZFN0cmluZ1JlZ0V4cCQxKVsxXS5yZXBsYWNlKGRvdWJsZVF1b3RlUmVnRXhwJDEsIFwiJ1wiKVxufVxuXG4vLyBcblxuLyoqXG4gKiBDdXN0b20gcGFyc2UgYmVoYXZpb3Igb24gdG9wIG9mIGRhdGUtZm5zIHBhcnNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBwYXJzZURhdGUkMSAoZGF0ZSwgZm9ybWF0JDEpIHtcbiAgaWYgKHR5cGVvZiBkYXRlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBpc1ZhbGlkKGRhdGUpID8gZGF0ZSA6IG51bGw7XG4gIH1cblxuICB2YXIgcGFyc2VkID0gcGFyc2UoZGF0ZSwgZm9ybWF0JDEsIG5ldyBEYXRlKCkpO1xuXG4gIC8vIGlmIGRhdGUgaXMgbm90IHZhbGlkIG9yIHRoZSBmb3JtYXR0ZWQgb3V0cHV0IGFmdGVyIHBhcnNpbmcgZG9lcyBub3QgbWF0Y2hcbiAgLy8gdGhlIHN0cmluZyB2YWx1ZSBwYXNzZWQgaW4gKGF2b2lkcyBvdmVyZmxvd3MpXG4gIGlmICghaXNWYWxpZChwYXJzZWQpIHx8IGZvcm1hdChwYXJzZWQsIGZvcm1hdCQxKSAhPT0gZGF0ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxudmFyIGFmdGVyVmFsaWRhdG9yID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgdGFyZ2V0VmFsdWUgPSByZWYudGFyZ2V0VmFsdWU7XG4gIHZhciBpbmNsdXNpb24gPSByZWYuaW5jbHVzaW9uOyBpZiAoIGluY2x1c2lvbiA9PT0gdm9pZCAwICkgaW5jbHVzaW9uID0gZmFsc2U7XG4gIHZhciBmb3JtYXQgPSByZWYuZm9ybWF0O1xuXG4gIGlmICh0eXBlb2YgZm9ybWF0ID09PSAndW5kZWZpbmVkJykge1xuICAgIGZvcm1hdCA9IGluY2x1c2lvbjtcbiAgICBpbmNsdXNpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHZhbHVlID0gcGFyc2VEYXRlJDEodmFsdWUsIGZvcm1hdCk7XG4gIHRhcmdldFZhbHVlID0gcGFyc2VEYXRlJDEodGFyZ2V0VmFsdWUsIGZvcm1hdCk7XG5cbiAgLy8gaWYgZWl0aGVyIGlzIG5vdCB2YWxpZC5cbiAgaWYgKCF2YWx1ZSB8fCAhdGFyZ2V0VmFsdWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaXNBZnRlcih2YWx1ZSwgdGFyZ2V0VmFsdWUpIHx8IChpbmNsdXNpb24gJiYgaXNFcXVhbCQxKHZhbHVlLCB0YXJnZXRWYWx1ZSkpO1xufTtcblxudmFyIG9wdGlvbnMgPSB7XG4gIGhhc1RhcmdldDogdHJ1ZSxcbiAgaXNEYXRlOiB0cnVlXG59O1xuXG4vLyByZXF1aXJlZCB0byBjb252ZXJ0IGZyb20gYSBsaXN0IG9mIGFycmF5IHZhbHVlcyB0byBhbiBvYmplY3QuXG52YXIgcGFyYW1OYW1lcyA9IFsndGFyZ2V0VmFsdWUnLCAnaW5jbHVzaW9uJywgJ2Zvcm1hdCddO1xuXG52YXIgYWZ0ZXIgPSB7XG4gIHZhbGlkYXRlOiBhZnRlclZhbGlkYXRvcixcbiAgb3B0aW9uczogb3B0aW9ucyxcbiAgcGFyYW1OYW1lczogcGFyYW1OYW1lc1xufTtcblxuLyoqXG4gKiBTb21lIEFscGhhIFJlZ2V4IGhlbHBlcnMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vY2hyaXNvL3ZhbGlkYXRvci5qcy9ibG9iL21hc3Rlci9zcmMvbGliL2FscGhhLmpzXG4gKi9cblxudmFyIGFscGhhID0ge1xuICBlbjogL15bQS1aXSokL2ksXG4gIGNzOiAvXltBLVrDgcSMxI7DicSaw43Fh8OTxZjFoMWkw5rFrsOdxb1dKiQvaSxcbiAgZGE6IC9eW0EtWsOGw5jDhV0qJC9pLFxuICBkZTogL15bQS1aw4TDlsOcw59dKiQvaSxcbiAgZXM6IC9eW0EtWsOBw4nDjcORw5PDmsOcXSokL2ksXG4gIGZhOiAvXlvYodii2KPYpNil2KbYp9io2KnYqtir2KzYrdiu2K/YsNix2LLYs9i02LXYtti32LjYudi62YHZgtmD2YTZhdmG2YfZiNmJ2YrZi9mM2Y3ZjtmP2ZDZkdmS2bDZvtqY2q/ahtqp24xdKiQvLFxuICBmcjogL15bQS1aw4DDgsOGw4fDicOIw4rDi8OPw47DlMWSw5nDm8OcxbhdKiQvaSxcbiAgaXQ6IC9eW0EtWlxceEMwLVxceEZGXSokL2ksXG4gIGx0OiAvXltBLVrEhMSMxJjElsSuxaDFssWqxb1dKiQvaSxcbiAgbmw6IC9eW0EtWsOJw4vDj8OTw5bDnF0qJC9pLFxuICBodTogL15bQS1aw4HDicONw5PDlsWQw5rDnMWwXSokL2ksXG4gIHBsOiAvXltBLVrEhMSGxJjFmsWBxYPDk8W7xbldKiQvaSxcbiAgcHQ6IC9eW0EtWsODw4HDgMOCw4fDicOKw43DlcOTw5TDmsOcXSokL2ksXG4gIHJ1OiAvXlvQkC3Qr9CBXSokL2ksXG4gIHNrOiAvXltBLVrDgcOExIzEjsOJw43EucS9xYfDk8WUxaDFpMOaw53FvV0qJC9pLFxuICBzcjogL15bQS1axIzEhsW9xaDEkF0qJC9pLFxuICBzdjogL15bQS1aw4XDhMOWXSokL2ksXG4gIHRyOiAvXltBLVrDh8SexLDEscOWxZ7DnF0qJC9pLFxuICB1azogL15b0JAt0KnQrNCu0K/QhNCG0IfSkF0qJC9pLFxuICBhcjogL15b2KHYotij2KTYpdim2KfYqNip2KrYq9is2K3Yrtiv2LDYsdiy2LPYtNi12LbYt9i42LnYutmB2YLZg9mE2YXZhtmH2YjZidmK2YvZjNmN2Y7Zj9mQ2ZHZktmwXSokLyxcbiAgYXo6IC9eW0EtWsOHxo/EnsSwxLHDlsWew5xdKiQvaVxufTtcblxudmFyIGFscGhhU3BhY2VzID0ge1xuICBlbjogL15bQS1aXFxzXSokL2ksXG4gIGNzOiAvXltBLVrDgcSMxI7DicSaw43Fh8OTxZjFoMWkw5rFrsOdxb1cXHNdKiQvaSxcbiAgZGE6IC9eW0EtWsOGw5jDhVxcc10qJC9pLFxuICBkZTogL15bQS1aw4TDlsOcw59cXHNdKiQvaSxcbiAgZXM6IC9eW0EtWsOBw4nDjcORw5PDmsOcXFxzXSokL2ksXG4gIGZhOiAvXlvYodii2KPYpNil2KbYp9io2KnYqtir2KzYrdiu2K/YsNix2LLYs9i02LXYtti32LjYudi62YHZgtmD2YTZhdmG2YfZiNmJ2YrZi9mM2Y3ZjtmP2ZDZkdmS2bDZvtqY2q/ahtqp24xcXHNdKiQvLFxuICBmcjogL15bQS1aw4DDgsOGw4fDicOIw4rDi8OPw47DlMWSw5nDm8OcxbhcXHNdKiQvaSxcbiAgaXQ6IC9eW0EtWlxceEMwLVxceEZGXFxzXSokL2ksXG4gIGx0OiAvXltBLVrEhMSMxJjElsSuxaDFssWqxb1cXHNdKiQvaSxcbiAgbmw6IC9eW0EtWsOJw4vDj8OTw5bDnFxcc10qJC9pLFxuICBodTogL15bQS1aw4HDicONw5PDlsWQw5rDnMWwXFxzXSokL2ksXG4gIHBsOiAvXltBLVrEhMSGxJjFmsWBxYPDk8W7xblcXHNdKiQvaSxcbiAgcHQ6IC9eW0EtWsODw4HDgMOCw4fDicOKw43DlcOTw5TDmsOcXFxzXSokL2ksXG4gIHJ1OiAvXlvQkC3Qr9CBXFxzXSokL2ksXG4gIHNrOiAvXltBLVrDgcOExIzEjsOJw43EucS9xYfDk8WUxaDFpMOaw53FvVxcc10qJC9pLFxuICBzcjogL15bQS1axIzEhsW9xaDEkFxcc10qJC9pLFxuICBzdjogL15bQS1aw4XDhMOWXFxzXSokL2ksXG4gIHRyOiAvXltBLVrDh8SexLDEscOWxZ7DnFxcc10qJC9pLFxuICB1azogL15b0JAt0KnQrNCu0K/QhNCG0IfSkFxcc10qJC9pLFxuICBhcjogL15b2KHYotij2KTYpdim2KfYqNip2KrYq9is2K3Yrtiv2LDYsdiy2LPYtNi12LbYt9i42LnYutmB2YLZg9mE2YXZhtmH2YjZidmK2YvZjNmN2Y7Zj9mQ2ZHZktmwXFxzXSokLyxcbiAgYXo6IC9eW0EtWsOHxo/EnsSwxLHDlsWew5xcXHNdKiQvaVxufTtcblxudmFyIGFscGhhbnVtZXJpYyA9IHtcbiAgZW46IC9eWzAtOUEtWl0qJC9pLFxuICBjczogL15bMC05QS1aw4HEjMSOw4nEmsONxYfDk8WYxaDFpMOaxa7DncW9XSokL2ksXG4gIGRhOiAvXlswLTlBLVrDhsOYw4VdJC9pLFxuICBkZTogL15bMC05QS1aw4TDlsOcw59dKiQvaSxcbiAgZXM6IC9eWzAtOUEtWsOBw4nDjcORw5PDmsOcXSokL2ksXG4gIGZhOiAvXlvZoNmh2aLZo9mk2aXZptmn2ajZqTAtOdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22LfYuNi52LrZgdmC2YPZhNmF2YbZh9mI2YnZitmL2YzZjdmO2Y/ZkNmR2ZLZsNm+2pjar9qG2qnbjF0qJC8sXG4gIGZyOiAvXlswLTlBLVrDgMOCw4bDh8OJw4jDisOLw4/DjsOUxZLDmcObw5zFuF0qJC9pLFxuICBpdDogL15bMC05QS1aXFx4QzAtXFx4RkZdKiQvaSxcbiAgbHQ6IC9eWzAtOUEtWsSExIzEmMSWxK7FoMWyxarFvV0qJC9pLFxuICBodTogL15bMC05QS1aw4HDicONw5PDlsWQw5rDnMWwXSokL2ksXG4gIG5sOiAvXlswLTlBLVrDicOLw4/Dk8OWw5xdKiQvaSxcbiAgcGw6IC9eWzAtOUEtWsSExIbEmMWaxYHFg8OTxbvFuV0qJC9pLFxuICBwdDogL15bMC05QS1aw4PDgcOAw4LDh8OJw4rDjcOVw5PDlMOaw5xdKiQvaSxcbiAgcnU6IC9eWzAtOdCQLdCv0IFdKiQvaSxcbiAgc2s6IC9eWzAtOUEtWsOBw4TEjMSOw4nDjcS5xL3Fh8OTxZTFoMWkw5rDncW9XSokL2ksXG4gIHNyOiAvXlswLTlBLVrEjMSGxb3FoMSQXSokL2ksXG4gIHN2OiAvXlswLTlBLVrDhcOEw5ZdKiQvaSxcbiAgdHI6IC9eWzAtOUEtWsOHxJ7EsMSxw5bFnsOcXSokL2ksXG4gIHVrOiAvXlswLTnQkC3QqdCs0K7Qr9CE0IbQh9KQXSokL2ksXG4gIGFyOiAvXlvZoNmh2aLZo9mk2aXZptmn2ajZqTAtOdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22LfYuNi52LrZgdmC2YPZhNmF2YbZh9mI2YnZitmL2YzZjdmO2Y/ZkNmR2ZLZsF0qJC8sXG4gIGF6OiAvXlswLTlBLVrDh8aPxJ7EsMSxw5bFnsOcXSokL2lcbn07XG5cbnZhciBhbHBoYURhc2ggPSB7XG4gIGVuOiAvXlswLTlBLVpfLV0qJC9pLFxuICBjczogL15bMC05QS1aw4HEjMSOw4nEmsONxYfDk8WYxaDFpMOaxa7DncW9Xy1dKiQvaSxcbiAgZGE6IC9eWzAtOUEtWsOGw5jDhV8tXSokL2ksXG4gIGRlOiAvXlswLTlBLVrDhMOWw5zDn18tXSokL2ksXG4gIGVzOiAvXlswLTlBLVrDgcOJw43DkcOTw5rDnF8tXSokL2ksXG4gIGZhOiAvXlvZoNmh2aLZo9mk2aXZptmn2ajZqTAtOdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22LfYuNi52LrZgdmC2YPZhNmF2YbZh9mI2YnZitmL2YzZjdmO2Y/ZkNmR2ZLZsNm+2pjar9qG2qnbjF8tXSokLyxcbiAgZnI6IC9eWzAtOUEtWsOAw4LDhsOHw4nDiMOKw4vDj8OOw5TFksOZw5vDnMW4Xy1dKiQvaSxcbiAgaXQ6IC9eWzAtOUEtWlxceEMwLVxceEZGXy1dKiQvaSxcbiAgbHQ6IC9eWzAtOUEtWsSExIzEmMSWxK7FoMWyxarFvV8tXSokL2ksXG4gIG5sOiAvXlswLTlBLVrDicOLw4/Dk8OWw5xfLV0qJC9pLFxuICBodTogL15bMC05QS1aw4HDicONw5PDlsWQw5rDnMWwXy1dKiQvaSxcbiAgcGw6IC9eWzAtOUEtWsSExIbEmMWaxYHFg8OTxbvFuV8tXSokL2ksXG4gIHB0OiAvXlswLTlBLVrDg8OBw4DDgsOHw4nDisONw5XDk8OUw5rDnF8tXSokL2ksXG4gIHJ1OiAvXlswLTnQkC3Qr9CBXy1dKiQvaSxcbiAgc2s6IC9eWzAtOUEtWsOBw4TEjMSOw4nDjcS5xL3Fh8OTxZTFoMWkw5rDncW9Xy1dKiQvaSxcbiAgc3I6IC9eWzAtOUEtWsSMxIbFvcWgxJBfLV0qJC9pLFxuICBzdjogL15bMC05QS1aw4XDhMOWXy1dKiQvaSxcbiAgdHI6IC9eWzAtOUEtWsOHxJ7EsMSxw5bFnsOcXy1dKiQvaSxcbiAgdWs6IC9eWzAtOdCQLdCp0KzQrtCv0ITQhtCH0pBfLV0qJC9pLFxuICBhcjogL15b2aDZodmi2aPZpNml2abZp9mo2akwLTnYodii2KPYpNil2KbYp9io2KnYqtir2KzYrdiu2K/YsNix2LLYs9i02LXYtti32LjYudi62YHZgtmD2YTZhdmG2YfZiNmJ2YrZi9mM2Y3ZjtmP2ZDZkdmS2bBfLV0qJC8sXG4gIGF6OiAvXlswLTlBLVrDh8aPxJ7EsMSxw5bFnsOcXy1dKiQvaVxufTtcblxudmFyIHZhbGlkYXRlID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgbG9jYWxlID0gcmVmLmxvY2FsZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuZXZlcnkoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gdmFsaWRhdGUodmFsLCBbbG9jYWxlXSk7IH0pO1xuICB9XG5cbiAgLy8gTWF0Y2ggYXQgbGVhc3Qgb25lIGxvY2FsZS5cbiAgaWYgKCEgbG9jYWxlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGFscGhhKS5zb21lKGZ1bmN0aW9uIChsb2MpIHsgcmV0dXJuIGFscGhhW2xvY10udGVzdCh2YWx1ZSk7IH0pO1xuICB9XG5cbiAgcmV0dXJuIChhbHBoYVtsb2NhbGVdIHx8IGFscGhhLmVuKS50ZXN0KHZhbHVlKTtcbn07XG5cbnZhciBwYXJhbU5hbWVzJDEgPSBbJ2xvY2FsZSddO1xuXG52YXIgYWxwaGEkMSA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlLFxuICBwYXJhbU5hbWVzOiBwYXJhbU5hbWVzJDFcbn07XG5cbnZhciB2YWxpZGF0ZSQxID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgbG9jYWxlID0gcmVmLmxvY2FsZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuZXZlcnkoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gdmFsaWRhdGUkMSh2YWwsIFtsb2NhbGVdKTsgfSk7XG4gIH1cblxuICAvLyBNYXRjaCBhdCBsZWFzdCBvbmUgbG9jYWxlLlxuICBpZiAoISBsb2NhbGUpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYWxwaGFEYXNoKS5zb21lKGZ1bmN0aW9uIChsb2MpIHsgcmV0dXJuIGFscGhhRGFzaFtsb2NdLnRlc3QodmFsdWUpOyB9KTtcbiAgfVxuXG4gIHJldHVybiAoYWxwaGFEYXNoW2xvY2FsZV0gfHwgYWxwaGFEYXNoLmVuKS50ZXN0KHZhbHVlKTtcbn07XG5cbnZhciBwYXJhbU5hbWVzJDIgPSBbJ2xvY2FsZSddO1xuXG52YXIgYWxwaGFfZGFzaCA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJDEsXG4gIHBhcmFtTmFtZXM6IHBhcmFtTmFtZXMkMlxufTtcblxudmFyIHZhbGlkYXRlJDIgPSBmdW5jdGlvbiAodmFsdWUsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBsb2NhbGUgPSByZWYubG9jYWxlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5ldmVyeShmdW5jdGlvbiAodmFsKSB7IHJldHVybiB2YWxpZGF0ZSQyKHZhbCwgW2xvY2FsZV0pOyB9KTtcbiAgfVxuXG4gIC8vIE1hdGNoIGF0IGxlYXN0IG9uZSBsb2NhbGUuXG4gIGlmICghIGxvY2FsZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhhbHBoYW51bWVyaWMpLnNvbWUoZnVuY3Rpb24gKGxvYykgeyByZXR1cm4gYWxwaGFudW1lcmljW2xvY10udGVzdCh2YWx1ZSk7IH0pO1xuICB9XG5cbiAgcmV0dXJuIChhbHBoYW51bWVyaWNbbG9jYWxlXSB8fCBhbHBoYW51bWVyaWMuZW4pLnRlc3QodmFsdWUpO1xufTtcblxudmFyIHBhcmFtTmFtZXMkMyA9IFsnbG9jYWxlJ107XG5cbnZhciBhbHBoYV9udW0gPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSQyLFxuICBwYXJhbU5hbWVzOiBwYXJhbU5hbWVzJDNcbn07XG5cbnZhciB2YWxpZGF0ZSQzID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgbG9jYWxlID0gcmVmLmxvY2FsZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuZXZlcnkoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gdmFsaWRhdGUkMyh2YWwsIFtsb2NhbGVdKTsgfSk7XG4gIH1cblxuICAvLyBNYXRjaCBhdCBsZWFzdCBvbmUgbG9jYWxlLlxuICBpZiAoISBsb2NhbGUpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYWxwaGFTcGFjZXMpLnNvbWUoZnVuY3Rpb24gKGxvYykgeyByZXR1cm4gYWxwaGFTcGFjZXNbbG9jXS50ZXN0KHZhbHVlKTsgfSk7XG4gIH1cblxuICByZXR1cm4gKGFscGhhU3BhY2VzW2xvY2FsZV0gfHwgYWxwaGFTcGFjZXMuZW4pLnRlc3QodmFsdWUpO1xufTtcblxudmFyIHBhcmFtTmFtZXMkNCA9IFsnbG9jYWxlJ107XG5cbnZhciBhbHBoYV9zcGFjZXMgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSQzLFxuICBwYXJhbU5hbWVzOiBwYXJhbU5hbWVzJDRcbn07XG5cbnZhciB2YWxpZGF0ZSQ0ID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgdGFyZ2V0VmFsdWUgPSByZWYudGFyZ2V0VmFsdWU7XG4gIHZhciBpbmNsdXNpb24gPSByZWYuaW5jbHVzaW9uOyBpZiAoIGluY2x1c2lvbiA9PT0gdm9pZCAwICkgaW5jbHVzaW9uID0gZmFsc2U7XG4gIHZhciBmb3JtYXQgPSByZWYuZm9ybWF0O1xuXG4gIGlmICh0eXBlb2YgZm9ybWF0ID09PSAndW5kZWZpbmVkJykge1xuICAgIGZvcm1hdCA9IGluY2x1c2lvbjtcbiAgICBpbmNsdXNpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHZhbHVlID0gcGFyc2VEYXRlJDEodmFsdWUsIGZvcm1hdCk7XG4gIHRhcmdldFZhbHVlID0gcGFyc2VEYXRlJDEodGFyZ2V0VmFsdWUsIGZvcm1hdCk7XG5cbiAgLy8gaWYgZWl0aGVyIGlzIG5vdCB2YWxpZC5cbiAgaWYgKCF2YWx1ZSB8fCAhdGFyZ2V0VmFsdWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaXNCZWZvcmUodmFsdWUsIHRhcmdldFZhbHVlKSB8fCAoaW5jbHVzaW9uICYmIGlzRXF1YWwkMSh2YWx1ZSwgdGFyZ2V0VmFsdWUpKTtcbn07XG5cbnZhciBvcHRpb25zJDEgPSB7XG4gIGhhc1RhcmdldDogdHJ1ZSxcbiAgaXNEYXRlOiB0cnVlXG59O1xuXG52YXIgcGFyYW1OYW1lcyQ1ID0gWyd0YXJnZXRWYWx1ZScsICdpbmNsdXNpb24nLCAnZm9ybWF0J107XG5cbnZhciBiZWZvcmUgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSQ0LFxuICBvcHRpb25zOiBvcHRpb25zJDEsXG4gIHBhcmFtTmFtZXM6IHBhcmFtTmFtZXMkNVxufTtcblxudmFyIHZhbGlkYXRlJDUgPSBmdW5jdGlvbiAodmFsdWUsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBtaW4gPSByZWYubWluO1xuICB2YXIgbWF4ID0gcmVmLm1heDtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuZXZlcnkoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gdmFsaWRhdGUkNSh2YWwsIHsgbWluOiBtaW4sIG1heDogbWF4IH0pOyB9KTtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIobWluKSA8PSB2YWx1ZSAmJiBOdW1iZXIobWF4KSA+PSB2YWx1ZTtcbn07XG5cbnZhciBwYXJhbU5hbWVzJDYgPSBbJ21pbicsICdtYXgnXTtcblxudmFyIGJldHdlZW4gPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSQ1LFxuICBwYXJhbU5hbWVzOiBwYXJhbU5hbWVzJDZcbn07XG5cbnZhciB2YWxpZGF0ZSQ2ID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgdmFyIHRhcmdldFZhbHVlID0gcmVmLnRhcmdldFZhbHVlO1xuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpID09PSBTdHJpbmcodGFyZ2V0VmFsdWUpO1xufTtcbnZhciBvcHRpb25zJDIgPSB7XG4gIGhhc1RhcmdldDogdHJ1ZVxufTtcblxudmFyIHBhcmFtTmFtZXMkNyA9IFsndGFyZ2V0VmFsdWUnXTtcblxudmFyIGNvbmZpcm1lZCA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJDYsXG4gIG9wdGlvbnM6IG9wdGlvbnMkMixcbiAgcGFyYW1OYW1lczogcGFyYW1OYW1lcyQ3XG59O1xuXG5mdW5jdGlvbiB1bndyYXBFeHBvcnRzICh4KSB7XG5cdHJldHVybiB4ICYmIHguX19lc01vZHVsZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeCwgJ2RlZmF1bHQnKSA/IHhbJ2RlZmF1bHQnXSA6IHg7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZuLCBtb2R1bGUpIHtcblx0cmV0dXJuIG1vZHVsZSA9IHsgZXhwb3J0czoge30gfSwgZm4obW9kdWxlLCBtb2R1bGUuZXhwb3J0cyksIG1vZHVsZS5leHBvcnRzO1xufVxuXG52YXIgYXNzZXJ0U3RyaW5nXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBhc3NlcnRTdHJpbmc7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIGFzc2VydFN0cmluZyhpbnB1dCkge1xuICB2YXIgaXNTdHJpbmcgPSB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnIHx8IGlucHV0IGluc3RhbmNlb2YgU3RyaW5nO1xuXG4gIGlmICghaXNTdHJpbmcpIHtcbiAgICB2YXIgaW52YWxpZFR5cGU7XG5cbiAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgIGludmFsaWRUeXBlID0gJ251bGwnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnZhbGlkVHlwZSA9IF90eXBlb2YoaW5wdXQpO1xuXG4gICAgICBpZiAoaW52YWxpZFR5cGUgPT09ICdvYmplY3QnICYmIGlucHV0LmNvbnN0cnVjdG9yICYmIGlucHV0LmNvbnN0cnVjdG9yLmhhc093blByb3BlcnR5KCduYW1lJykpIHtcbiAgICAgICAgaW52YWxpZFR5cGUgPSBpbnB1dC5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW52YWxpZFR5cGUgPSBcImEgXCIuY29uY2F0KGludmFsaWRUeXBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgc3RyaW5nIGJ1dCByZWNlaXZlZCBcIi5jb25jYXQoaW52YWxpZFR5cGUsIFwiLlwiKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0O1xufSk7XG5cbnVud3JhcEV4cG9ydHMoYXNzZXJ0U3RyaW5nXzEpO1xuXG52YXIgaXNDcmVkaXRDYXJkXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0NyZWRpdENhcmQ7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChhc3NlcnRTdHJpbmdfMSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbnZhciBjcmVkaXRDYXJkID0gL14oPzo0WzAtOV17MTJ9KD86WzAtOV17M30pP3w1WzEtNV1bMC05XXsxNH18KDIyMlsxLTldfDIyWzMtOV1bMC05XXwyWzMtNl1bMC05XXsyfXwyN1swMV1bMC05XXwyNzIwKVswLTldezEyfXw2KD86MDExfDVbMC05XVswLTldKVswLTldezEyfXwzWzQ3XVswLTldezEzfXwzKD86MFswLTVdfFs2OF1bMC05XSlbMC05XXsxMX18KD86MjEzMXwxODAwfDM1XFxkezN9KVxcZHsxMX18NlsyN11bMC05XXsxNH0pJC87XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9cblxuZnVuY3Rpb24gaXNDcmVkaXRDYXJkKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICB2YXIgc2FuaXRpemVkID0gc3RyLnJlcGxhY2UoL1stIF0rL2csICcnKTtcblxuICBpZiAoIWNyZWRpdENhcmQudGVzdChzYW5pdGl6ZWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHN1bSA9IDA7XG4gIHZhciBkaWdpdDtcbiAgdmFyIHRtcE51bTtcbiAgdmFyIHNob3VsZERvdWJsZTtcblxuICBmb3IgKHZhciBpID0gc2FuaXRpemVkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgZGlnaXQgPSBzYW5pdGl6ZWQuc3Vic3RyaW5nKGksIGkgKyAxKTtcbiAgICB0bXBOdW0gPSBwYXJzZUludChkaWdpdCwgMTApO1xuXG4gICAgaWYgKHNob3VsZERvdWJsZSkge1xuICAgICAgdG1wTnVtICo9IDI7XG5cbiAgICAgIGlmICh0bXBOdW0gPj0gMTApIHtcbiAgICAgICAgc3VtICs9IHRtcE51bSAlIDEwICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1bSArPSB0bXBOdW07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1bSArPSB0bXBOdW07XG4gICAgfVxuXG4gICAgc2hvdWxkRG91YmxlID0gIXNob3VsZERvdWJsZTtcbiAgfVxuXG4gIHJldHVybiAhIShzdW0gJSAxMCA9PT0gMCA/IHNhbml0aXplZCA6IGZhbHNlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0O1xufSk7XG5cbnZhciBpc0NyZWRpdENhcmQgPSB1bndyYXBFeHBvcnRzKGlzQ3JlZGl0Q2FyZF8xKTtcblxudmFyIHZhbGlkYXRlJDcgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGlzQ3JlZGl0Q2FyZChTdHJpbmcodmFsdWUpKTsgfTtcblxudmFyIGNyZWRpdF9jYXJkID0ge1xuICB2YWxpZGF0ZTogdmFsaWRhdGUkN1xufTtcblxudmFyIHZhbGlkYXRlJDggPSBmdW5jdGlvbiAodmFsdWUsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBtaW4gPSByZWYubWluO1xuICB2YXIgbWF4ID0gcmVmLm1heDtcbiAgdmFyIGluY2x1c2l2aXR5ID0gcmVmLmluY2x1c2l2aXR5OyBpZiAoIGluY2x1c2l2aXR5ID09PSB2b2lkIDAgKSBpbmNsdXNpdml0eSA9ICcoKSc7XG4gIHZhciBmb3JtYXQgPSByZWYuZm9ybWF0O1xuXG4gIGlmICh0eXBlb2YgZm9ybWF0ID09PSAndW5kZWZpbmVkJykge1xuICAgIGZvcm1hdCA9IGluY2x1c2l2aXR5O1xuICAgIGluY2x1c2l2aXR5ID0gJygpJztcbiAgfVxuXG4gIHZhciBtaW5EYXRlID0gcGFyc2VEYXRlJDEoU3RyaW5nKG1pbiksIGZvcm1hdCk7XG4gIHZhciBtYXhEYXRlID0gcGFyc2VEYXRlJDEoU3RyaW5nKG1heCksIGZvcm1hdCk7XG4gIHZhciBkYXRlVmFsID0gcGFyc2VEYXRlJDEoU3RyaW5nKHZhbHVlKSwgZm9ybWF0KTtcblxuICBpZiAoIW1pbkRhdGUgfHwgIW1heERhdGUgfHwgIWRhdGVWYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaW5jbHVzaXZpdHkgPT09ICcoKScpIHtcbiAgICByZXR1cm4gaXNBZnRlcihkYXRlVmFsLCBtaW5EYXRlKSAmJiBpc0JlZm9yZShkYXRlVmFsLCBtYXhEYXRlKTtcbiAgfVxuXG4gIGlmIChpbmNsdXNpdml0eSA9PT0gJyhdJykge1xuICAgIHJldHVybiBpc0FmdGVyKGRhdGVWYWwsIG1pbkRhdGUpICYmIChpc0VxdWFsJDEoZGF0ZVZhbCwgbWF4RGF0ZSkgfHwgaXNCZWZvcmUoZGF0ZVZhbCwgbWF4RGF0ZSkpO1xuICB9XG5cbiAgaWYgKGluY2x1c2l2aXR5ID09PSAnWyknKSB7XG4gICAgcmV0dXJuIGlzQmVmb3JlKGRhdGVWYWwsIG1heERhdGUpICYmIChpc0VxdWFsJDEoZGF0ZVZhbCwgbWluRGF0ZSkgfHwgaXNBZnRlcihkYXRlVmFsLCBtaW5EYXRlKSk7XG4gIH1cblxuICByZXR1cm4gaXNFcXVhbCQxKGRhdGVWYWwsIG1heERhdGUpIHx8IGlzRXF1YWwkMShkYXRlVmFsLCBtaW5EYXRlKSB8fFxuICAgIChpc0JlZm9yZShkYXRlVmFsLCBtYXhEYXRlKSAmJiBpc0FmdGVyKGRhdGVWYWwsIG1pbkRhdGUpKTtcbn07XG5cbnZhciBvcHRpb25zJDMgPSB7XG4gIGlzRGF0ZTogdHJ1ZVxufTtcblxudmFyIHBhcmFtTmFtZXMkOCA9IFsnbWluJywgJ21heCcsICdpbmNsdXNpdml0eScsICdmb3JtYXQnXTtcblxudmFyIGRhdGVfYmV0d2VlbiA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJDgsXG4gIG9wdGlvbnM6IG9wdGlvbnMkMyxcbiAgcGFyYW1OYW1lczogcGFyYW1OYW1lcyQ4XG59O1xuXG52YXIgdmFsaWRhdGUkOSA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVmKSB7XG4gIHZhciBmb3JtYXQgPSByZWYuZm9ybWF0O1xuXG4gIHJldHVybiAhIXBhcnNlRGF0ZSQxKHZhbHVlLCBmb3JtYXQpO1xufTtcblxudmFyIG9wdGlvbnMkNCA9IHtcbiAgaXNEYXRlOiB0cnVlXG59O1xuXG52YXIgcGFyYW1OYW1lcyQ5ID0gWydmb3JtYXQnXTtcblxudmFyIGRhdGVfZm9ybWF0ID0ge1xuICB2YWxpZGF0ZTogdmFsaWRhdGUkOSxcbiAgb3B0aW9uczogb3B0aW9ucyQ0LFxuICBwYXJhbU5hbWVzOiBwYXJhbU5hbWVzJDlcbn07XG5cbnZhciB2YWxpZGF0ZSRhID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgZGVjaW1hbHMgPSByZWYuZGVjaW1hbHM7IGlmICggZGVjaW1hbHMgPT09IHZvaWQgMCApIGRlY2ltYWxzID0gJyonO1xuICB2YXIgc2VwYXJhdG9yID0gcmVmLnNlcGFyYXRvcjsgaWYgKCBzZXBhcmF0b3IgPT09IHZvaWQgMCApIHNlcGFyYXRvciA9ICcuJztcblxuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8IHZhbHVlID09PSAnJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5ldmVyeShmdW5jdGlvbiAodmFsKSB7IHJldHVybiB2YWxpZGF0ZSRhKHZhbCwgeyBkZWNpbWFsczogZGVjaW1hbHMsIHNlcGFyYXRvcjogc2VwYXJhdG9yIH0pOyB9KTtcbiAgfVxuXG4gIC8vIGlmIGlzIDAuXG4gIGlmIChOdW1iZXIoZGVjaW1hbHMpID09PSAwKSB7XG4gICAgcmV0dXJuIC9eLT9cXGQqJC8udGVzdCh2YWx1ZSk7XG4gIH1cblxuICB2YXIgcmVnZXhQYXJ0ID0gZGVjaW1hbHMgPT09ICcqJyA/ICcrJyA6IChcInsxLFwiICsgZGVjaW1hbHMgKyBcIn1cIik7XG4gIHZhciByZWdleCA9IG5ldyBSZWdFeHAoKFwiXlstK10/XFxcXGQqKFxcXFxcIiArIHNlcGFyYXRvciArIFwiXFxcXGRcIiArIHJlZ2V4UGFydCArIFwiKT8oW2VFXXsxfVstXT9cXFxcZCspPyRcIikpO1xuXG4gIGlmICghIHJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHBhcnNlZFZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHJldHVybiBwYXJzZWRWYWx1ZSA9PT0gcGFyc2VkVmFsdWU7XG59O1xuXG52YXIgcGFyYW1OYW1lcyRhID0gWydkZWNpbWFscycsICdzZXBhcmF0b3InXTtcblxudmFyIGRlY2ltYWwgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSRhLFxuICBwYXJhbU5hbWVzOiBwYXJhbU5hbWVzJGFcbn07XG5cbnZhciB2YWxpZGF0ZSRiID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgdmFyIGxlbmd0aCA9IHJlZlswXTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuZXZlcnkoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gdmFsaWRhdGUkYih2YWwsIFtsZW5ndGhdKTsgfSk7XG4gIH1cbiAgdmFyIHN0clZhbCA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgcmV0dXJuIC9eWzAtOV0qJC8udGVzdChzdHJWYWwpICYmIHN0clZhbC5sZW5ndGggPT09IE51bWJlcihsZW5ndGgpO1xufTtcblxudmFyIGRpZ2l0cyA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJGJcbn07XG5cbnZhciBpbWFnZVJlZ2V4ID0gL1xcLihqcGd8c3ZnfGpwZWd8cG5nfGJtcHxnaWYpJC9pO1xuXG52YXIgdmFsaWRhdGVJbWFnZSA9IGZ1bmN0aW9uIChmaWxlLCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBVUkwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgIGltYWdlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKHsgdmFsaWQ6IGZhbHNlIH0pOyB9O1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmUoe1xuICAgICAgdmFsaWQ6IGltYWdlLndpZHRoID09PSBOdW1iZXIod2lkdGgpICYmIGltYWdlLmhlaWdodCA9PT0gTnVtYmVyKGhlaWdodClcbiAgICB9KTsgfTtcblxuICAgIGltYWdlLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XG4gIH0pO1xufTtcblxudmFyIHZhbGlkYXRlJGMgPSBmdW5jdGlvbiAoZmlsZXMsIHJlZikge1xuICB2YXIgd2lkdGggPSByZWZbMF07XG4gIHZhciBoZWlnaHQgPSByZWZbMV07XG5cbiAgdmFyIGltYWdlcyA9IGVuc3VyZUFycmF5KGZpbGVzKS5maWx0ZXIoZnVuY3Rpb24gKGZpbGUpIHsgcmV0dXJuIGltYWdlUmVnZXgudGVzdChmaWxlLm5hbWUpOyB9KTtcbiAgaWYgKGltYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UuYWxsKGltYWdlcy5tYXAoZnVuY3Rpb24gKGltYWdlKSB7IHJldHVybiB2YWxpZGF0ZUltYWdlKGltYWdlLCB3aWR0aCwgaGVpZ2h0KTsgfSkpO1xufTtcblxudmFyIGRpbWVuc2lvbnMgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSRjXG59O1xuXG52YXIgbWVyZ2VfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IG1lcmdlO1xuXG5mdW5jdGlvbiBtZXJnZSgpIHtcbiAgdmFyIG9iaiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gIHZhciBkZWZhdWx0cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuXG4gIGZvciAodmFyIGtleSBpbiBkZWZhdWx0cykge1xuICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBvYmpba2V5XSA9IGRlZmF1bHRzW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0O1xufSk7XG5cbnVud3JhcEV4cG9ydHMobWVyZ2VfMSk7XG5cbnZhciBpc0J5dGVMZW5ndGhfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQnl0ZUxlbmd0aDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGFzc2VydFN0cmluZ18xKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLXJlc3QtcGFyYW1zICovXG5mdW5jdGlvbiBpc0J5dGVMZW5ndGgoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHZhciBtaW47XG4gIHZhciBtYXg7XG5cbiAgaWYgKF90eXBlb2Yob3B0aW9ucykgPT09ICdvYmplY3QnKSB7XG4gICAgbWluID0gb3B0aW9ucy5taW4gfHwgMDtcbiAgICBtYXggPSBvcHRpb25zLm1heDtcbiAgfSBlbHNlIHtcbiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogaXNCeXRlTGVuZ3RoKHN0ciwgbWluIFssIG1heF0pXG4gICAgbWluID0gYXJndW1lbnRzWzFdO1xuICAgIG1heCA9IGFyZ3VtZW50c1syXTtcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmNvZGVVUkkoc3RyKS5zcGxpdCgvJS4ufC4vKS5sZW5ndGggLSAxO1xuICByZXR1cm4gbGVuID49IG1pbiAmJiAodHlwZW9mIG1heCA9PT0gJ3VuZGVmaW5lZCcgfHwgbGVuIDw9IG1heCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDtcbn0pO1xuXG51bndyYXBFeHBvcnRzKGlzQnl0ZUxlbmd0aF8xKTtcblxudmFyIGlzRlFETl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNGUUROO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoYXNzZXJ0U3RyaW5nXzEpO1xuXG52YXIgX21lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChtZXJnZV8xKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGRlZmF1bHRfZnFkbl9vcHRpb25zID0ge1xuICByZXF1aXJlX3RsZDogdHJ1ZSxcbiAgYWxsb3dfdW5kZXJzY29yZXM6IGZhbHNlLFxuICBhbGxvd190cmFpbGluZ19kb3Q6IGZhbHNlXG59O1xuXG5mdW5jdGlvbiBpc0ZRRE4oc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRfZnFkbl9vcHRpb25zKTtcbiAgLyogUmVtb3ZlIHRoZSBvcHRpb25hbCB0cmFpbGluZyBkb3QgYmVmb3JlIGNoZWNraW5nIHZhbGlkaXR5ICovXG5cbiAgaWYgKG9wdGlvbnMuYWxsb3dfdHJhaWxpbmdfZG90ICYmIHN0cltzdHIubGVuZ3RoIC0gMV0gPT09ICcuJykge1xuICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KCcuJyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChwYXJ0c1tpXS5sZW5ndGggPiA2Mykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnJlcXVpcmVfdGxkKSB7XG4gICAgdmFyIHRsZCA9IHBhcnRzLnBvcCgpO1xuXG4gICAgaWYgKCFwYXJ0cy5sZW5ndGggfHwgIS9eKFthLXpcXHUwMGExLVxcdWZmZmZdezIsfXx4blthLXowLTktXXsyLH0pJC9pLnRlc3QodGxkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gZGlzYWxsb3cgc3BhY2VzXG5cblxuICAgIGlmICgvW1xcc1xcdTIwMDItXFx1MjAwQlxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdUZFRkZcXHVEQjQwXFx1REMyMF0vLnRlc3QodGxkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIHBhcnQsIF9pID0gMDsgX2kgPCBwYXJ0cy5sZW5ndGg7IF9pKyspIHtcbiAgICBwYXJ0ID0gcGFydHNbX2ldO1xuXG4gICAgaWYgKG9wdGlvbnMuYWxsb3dfdW5kZXJzY29yZXMpIHtcbiAgICAgIHBhcnQgPSBwYXJ0LnJlcGxhY2UoL18vZywgJycpO1xuICAgIH1cblxuICAgIGlmICghL15bYS16XFx1MDBhMS1cXHVmZmZmMC05LV0rJC9pLnRlc3QocGFydCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGRpc2FsbG93IGZ1bGwtd2lkdGggY2hhcnNcblxuXG4gICAgaWYgKC9bXFx1ZmYwMS1cXHVmZjVlXS8udGVzdChwYXJ0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChwYXJ0WzBdID09PSAnLScgfHwgcGFydFtwYXJ0Lmxlbmd0aCAtIDFdID09PSAnLScpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0O1xufSk7XG5cbnZhciBpc0ZRRE4gPSB1bndyYXBFeHBvcnRzKGlzRlFETl8xKTtcblxudmFyIGlzSVBfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVA7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChhc3NlcnRTdHJpbmdfMSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBpcHY0TWF5YmUgPSAvXihcXGR7MSwzfSlcXC4oXFxkezEsM30pXFwuKFxcZHsxLDN9KVxcLihcXGR7MSwzfSkkLztcbnZhciBpcHY2QmxvY2sgPSAvXlswLTlBLUZdezEsNH0kL2k7XG5cbmZ1bmN0aW9uIGlzSVAoc3RyKSB7XG4gIHZhciB2ZXJzaW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnJztcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgdmVyc2lvbiA9IFN0cmluZyh2ZXJzaW9uKTtcblxuICBpZiAoIXZlcnNpb24pIHtcbiAgICByZXR1cm4gaXNJUChzdHIsIDQpIHx8IGlzSVAoc3RyLCA2KTtcbiAgfSBlbHNlIGlmICh2ZXJzaW9uID09PSAnNCcpIHtcbiAgICBpZiAoIWlwdjRNYXliZS50ZXN0KHN0cikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoJy4nKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcnRzWzNdIDw9IDI1NTtcbiAgfSBlbHNlIGlmICh2ZXJzaW9uID09PSAnNicpIHtcbiAgICB2YXIgYmxvY2tzID0gc3RyLnNwbGl0KCc6Jyk7XG4gICAgdmFyIGZvdW5kT21pc3Npb25CbG9jayA9IGZhbHNlOyAvLyBtYXJrZXIgdG8gaW5kaWNhdGUgOjpcbiAgICAvLyBBdCBsZWFzdCBzb21lIE9TIGFjY2VwdCB0aGUgbGFzdCAzMiBiaXRzIG9mIGFuIElQdjYgYWRkcmVzc1xuICAgIC8vIChpLmUuIDIgb2YgdGhlIGJsb2NrcykgaW4gSVB2NCBub3RhdGlvbiwgYW5kIFJGQyAzNDkzIHNheXNcbiAgICAvLyB0aGF0ICc6OmZmZmY6YS5iLmMuZCcgaXMgdmFsaWQgZm9yIElQdjQtbWFwcGVkIElQdjYgYWRkcmVzc2VzLFxuICAgIC8vIGFuZCAnOjphLmIuYy5kJyBpcyBkZXByZWNhdGVkLCBidXQgYWxzbyB2YWxpZC5cblxuICAgIHZhciBmb3VuZElQdjRUcmFuc2l0aW9uQmxvY2sgPSBpc0lQKGJsb2Nrc1tibG9ja3MubGVuZ3RoIC0gMV0sIDQpO1xuICAgIHZhciBleHBlY3RlZE51bWJlck9mQmxvY2tzID0gZm91bmRJUHY0VHJhbnNpdGlvbkJsb2NrID8gNyA6IDg7XG5cbiAgICBpZiAoYmxvY2tzLmxlbmd0aCA+IGV4cGVjdGVkTnVtYmVyT2ZCbG9ja3MpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGluaXRpYWwgb3IgZmluYWwgOjpcblxuXG4gICAgaWYgKHN0ciA9PT0gJzo6Jykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChzdHIuc3Vic3RyKDAsIDIpID09PSAnOjonKSB7XG4gICAgICBibG9ja3Muc2hpZnQoKTtcbiAgICAgIGJsb2Nrcy5zaGlmdCgpO1xuICAgICAgZm91bmRPbWlzc2lvbkJsb2NrID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHN0ci5zdWJzdHIoc3RyLmxlbmd0aCAtIDIpID09PSAnOjonKSB7XG4gICAgICBibG9ja3MucG9wKCk7XG4gICAgICBibG9ja3MucG9wKCk7XG4gICAgICBmb3VuZE9taXNzaW9uQmxvY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzLmxlbmd0aDsgKytpKSB7XG4gICAgICAvLyB0ZXN0IGZvciBhIDo6IHdoaWNoIGNhbiBub3QgYmUgYXQgdGhlIHN0cmluZyBzdGFydC9lbmRcbiAgICAgIC8vIHNpbmNlIHRob3NlIGNhc2VzIGhhdmUgYmVlbiBoYW5kbGVkIGFib3ZlXG4gICAgICBpZiAoYmxvY2tzW2ldID09PSAnJyAmJiBpID4gMCAmJiBpIDwgYmxvY2tzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgaWYgKGZvdW5kT21pc3Npb25CbG9jaykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gbXVsdGlwbGUgOjogaW4gYWRkcmVzc1xuICAgICAgICB9XG5cbiAgICAgICAgZm91bmRPbWlzc2lvbkJsb2NrID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoZm91bmRJUHY0VHJhbnNpdGlvbkJsb2NrICYmIGkgPT09IGJsb2Nrcy5sZW5ndGggLSAxKSA7IGVsc2UgaWYgKCFpcHY2QmxvY2sudGVzdChibG9ja3NbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZm91bmRPbWlzc2lvbkJsb2NrKSB7XG4gICAgICByZXR1cm4gYmxvY2tzLmxlbmd0aCA+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiBibG9ja3MubGVuZ3RoID09PSBleHBlY3RlZE51bWJlck9mQmxvY2tzO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7XG59KTtcblxudmFyIGlzSVAgPSB1bndyYXBFeHBvcnRzKGlzSVBfMSk7XG5cbnZhciBpc0VtYWlsXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0VtYWlsO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoYXNzZXJ0U3RyaW5nXzEpO1xuXG52YXIgX21lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChtZXJnZV8xKTtcblxudmFyIF9pc0J5dGVMZW5ndGggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGlzQnl0ZUxlbmd0aF8xKTtcblxudmFyIF9pc0ZRRE4gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGlzRlFETl8xKTtcblxudmFyIF9pc0lQID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChpc0lQXzEpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgZGVmYXVsdF9lbWFpbF9vcHRpb25zID0ge1xuICBhbGxvd19kaXNwbGF5X25hbWU6IGZhbHNlLFxuICByZXF1aXJlX2Rpc3BsYXlfbmFtZTogZmFsc2UsXG4gIGFsbG93X3V0ZjhfbG9jYWxfcGFydDogdHJ1ZSxcbiAgcmVxdWlyZV90bGQ6IHRydWVcbn07XG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRyb2wtcmVnZXggKi9cblxudmFyIGRpc3BsYXlOYW1lID0gL15bYS16XFxkISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5cXC5cXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdK1thLXpcXGQhI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9flxcLFxcLlxcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRlxcc10qPCguKyk+JC9pO1xudmFyIGVtYWlsVXNlclBhcnQgPSAvXlthLXpcXGQhI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9fl0rJC9pO1xudmFyIGdtYWlsVXNlclBhcnQgPSAvXlthLXpcXGRdKyQvO1xudmFyIHF1b3RlZEVtYWlsVXNlciA9IC9eKFtcXHNcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDdmXFx4MjFcXHgyMy1cXHg1YlxceDVkLVxceDdlXXwoXFxcXFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZC1cXHg3Zl0pKSokL2k7XG52YXIgZW1haWxVc2VyVXRmOFBhcnQgPSAvXlthLXpcXGQhI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9flxcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0rJC9pO1xudmFyIHF1b3RlZEVtYWlsVXNlclV0ZjggPSAvXihbXFxzXFx4MDEtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZcXHg3ZlxceDIxXFx4MjMtXFx4NWJcXHg1ZC1cXHg3ZVxcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl18KFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGQtXFx4N2ZcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkqJC9pO1xuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG5cbi8qIGVzbGludC1lbmFibGUgbm8tY29udHJvbC1yZWdleCAqL1xuXG5mdW5jdGlvbiBpc0VtYWlsKHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICBvcHRpb25zID0gKDAsIF9tZXJnZS5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X2VtYWlsX29wdGlvbnMpO1xuXG4gIGlmIChvcHRpb25zLnJlcXVpcmVfZGlzcGxheV9uYW1lIHx8IG9wdGlvbnMuYWxsb3dfZGlzcGxheV9uYW1lKSB7XG4gICAgdmFyIGRpc3BsYXlfZW1haWwgPSBzdHIubWF0Y2goZGlzcGxheU5hbWUpO1xuXG4gICAgaWYgKGRpc3BsYXlfZW1haWwpIHtcbiAgICAgIHN0ciA9IGRpc3BsYXlfZW1haWxbMV07XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLnJlcXVpcmVfZGlzcGxheV9uYW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KCdAJyk7XG4gIHZhciBkb21haW4gPSBwYXJ0cy5wb3AoKTtcbiAgdmFyIHVzZXIgPSBwYXJ0cy5qb2luKCdAJyk7XG4gIHZhciBsb3dlcl9kb21haW4gPSBkb21haW4udG9Mb3dlckNhc2UoKTtcblxuICBpZiAob3B0aW9ucy5kb21haW5fc3BlY2lmaWNfdmFsaWRhdGlvbiAmJiAobG93ZXJfZG9tYWluID09PSAnZ21haWwuY29tJyB8fCBsb3dlcl9kb21haW4gPT09ICdnb29nbGVtYWlsLmNvbScpKSB7XG4gICAgLypcbiAgICAgIFByZXZpb3VzbHkgd2UgcmVtb3ZlZCBkb3RzIGZvciBnbWFpbCBhZGRyZXNzZXMgYmVmb3JlIHZhbGlkYXRpbmcuXG4gICAgICBUaGlzIHdhcyByZW1vdmVkIGJlY2F1c2UgaXQgYWxsb3dzIGBtdWx0aXBsZS4uZG90c0BnbWFpbC5jb21gXG4gICAgICB0byBiZSByZXBvcnRlZCBhcyB2YWxpZCwgYnV0IGl0IGlzIG5vdC5cbiAgICAgIEdtYWlsIG9ubHkgbm9ybWFsaXplcyBzaW5nbGUgZG90cywgcmVtb3ZpbmcgdGhlbSBmcm9tIGhlcmUgaXMgcG9pbnRsZXNzLFxuICAgICAgc2hvdWxkIGJlIGRvbmUgaW4gbm9ybWFsaXplRW1haWxcbiAgICAqL1xuICAgIHVzZXIgPSB1c2VyLnRvTG93ZXJDYXNlKCk7IC8vIFJlbW92aW5nIHN1Yi1hZGRyZXNzIGZyb20gdXNlcm5hbWUgYmVmb3JlIGdtYWlsIHZhbGlkYXRpb25cblxuICAgIHZhciB1c2VybmFtZSA9IHVzZXIuc3BsaXQoJysnKVswXTsgLy8gRG90cyBhcmUgbm90IGluY2x1ZGVkIGluIGdtYWlsIGxlbmd0aCByZXN0cmljdGlvblxuXG4gICAgaWYgKCEoMCwgX2lzQnl0ZUxlbmd0aC5kZWZhdWx0KSh1c2VybmFtZS5yZXBsYWNlKCcuJywgJycpLCB7XG4gICAgICBtaW46IDYsXG4gICAgICBtYXg6IDMwXG4gICAgfSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgX3VzZXJfcGFydHMgPSB1c2VybmFtZS5zcGxpdCgnLicpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdXNlcl9wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFnbWFpbFVzZXJQYXJ0LnRlc3QoX3VzZXJfcGFydHNbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoISgwLCBfaXNCeXRlTGVuZ3RoLmRlZmF1bHQpKHVzZXIsIHtcbiAgICBtYXg6IDY0XG4gIH0pIHx8ICEoMCwgX2lzQnl0ZUxlbmd0aC5kZWZhdWx0KShkb21haW4sIHtcbiAgICBtYXg6IDI1NFxuICB9KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKDAsIF9pc0ZRRE4uZGVmYXVsdCkoZG9tYWluLCB7XG4gICAgcmVxdWlyZV90bGQ6IG9wdGlvbnMucmVxdWlyZV90bGRcbiAgfSkpIHtcbiAgICBpZiAoIW9wdGlvbnMuYWxsb3dfaXBfZG9tYWluKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCEoMCwgX2lzSVAuZGVmYXVsdCkoZG9tYWluKSkge1xuICAgICAgaWYgKCFkb21haW4uc3RhcnRzV2l0aCgnWycpIHx8ICFkb21haW4uZW5kc1dpdGgoJ10nKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciBub0JyYWNrZXRkb21haW4gPSBkb21haW4uc3Vic3RyKDEsIGRvbWFpbi5sZW5ndGggLSAyKTtcblxuICAgICAgaWYgKG5vQnJhY2tldGRvbWFpbi5sZW5ndGggPT09IDAgfHwgISgwLCBfaXNJUC5kZWZhdWx0KShub0JyYWNrZXRkb21haW4pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodXNlclswXSA9PT0gJ1wiJykge1xuICAgIHVzZXIgPSB1c2VyLnNsaWNlKDEsIHVzZXIubGVuZ3RoIC0gMSk7XG4gICAgcmV0dXJuIG9wdGlvbnMuYWxsb3dfdXRmOF9sb2NhbF9wYXJ0ID8gcXVvdGVkRW1haWxVc2VyVXRmOC50ZXN0KHVzZXIpIDogcXVvdGVkRW1haWxVc2VyLnRlc3QodXNlcik7XG4gIH1cblxuICB2YXIgcGF0dGVybiA9IG9wdGlvbnMuYWxsb3dfdXRmOF9sb2NhbF9wYXJ0ID8gZW1haWxVc2VyVXRmOFBhcnQgOiBlbWFpbFVzZXJQYXJ0O1xuICB2YXIgdXNlcl9wYXJ0cyA9IHVzZXIuc3BsaXQoJy4nKTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgdXNlcl9wYXJ0cy5sZW5ndGg7IF9pKyspIHtcbiAgICBpZiAoIXBhdHRlcm4udGVzdCh1c2VyX3BhcnRzW19pXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0O1xufSk7XG5cbnZhciBpc0VtYWlsID0gdW53cmFwRXhwb3J0cyhpc0VtYWlsXzEpO1xuXG5mdW5jdGlvbiBvYmplY3RXaXRob3V0UHJvcGVydGllcyAob2JqLCBleGNsdWRlKSB7IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgayBpbiBvYmopIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrKSAmJiBleGNsdWRlLmluZGV4T2YoaykgPT09IC0xKSB0YXJnZXRba10gPSBvYmpba107IHJldHVybiB0YXJnZXQ7IH1cblxudmFyIHZhbGlkYXRlJGQgPSBmdW5jdGlvbiAodmFsdWUsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBtdWx0aXBsZSA9IHJlZi5tdWx0aXBsZTsgaWYgKCBtdWx0aXBsZSA9PT0gdm9pZCAwICkgbXVsdGlwbGUgPSBmYWxzZTtcbiAgdmFyIHJlc3QgPSBvYmplY3RXaXRob3V0UHJvcGVydGllcyggcmVmLCBbXCJtdWx0aXBsZVwiXSApO1xuICB2YXIgb3B0aW9ucyA9IHJlc3Q7XG5cbiAgaWYgKG11bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKS5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoZW1haWxTdHIpIHsgcmV0dXJuIGVtYWlsU3RyLnRyaW0oKTsgfSk7XG4gIH1cblxuICB2YXIgdmFsaWRhdG9yT3B0aW9ucyA9IGFzc2lnbih7fSwgb3B0aW9ucyk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmV2ZXJ5KGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIGlzRW1haWwoU3RyaW5nKHZhbCksIHZhbGlkYXRvck9wdGlvbnMpOyB9KTtcbiAgfVxuXG4gIHJldHVybiBpc0VtYWlsKFN0cmluZyh2YWx1ZSksIHZhbGlkYXRvck9wdGlvbnMpO1xufTtcblxudmFyIGVtYWlsID0ge1xuICB2YWxpZGF0ZTogdmFsaWRhdGUkZFxufTtcblxudmFyIHZhbGlkYXRlJGUgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmV2ZXJ5KGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIHZhbGlkYXRlJGUodmFsLCBvcHRpb25zKTsgfSk7XG4gIH1cblxuICByZXR1cm4gdG9BcnJheShvcHRpb25zKS5zb21lKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgcmV0dXJuIGl0ZW0gPT0gdmFsdWU7XG4gIH0pO1xufTtcblxudmFyIGluY2x1ZGVkID0ge1xuICB2YWxpZGF0ZTogdmFsaWRhdGUkZVxufTtcblxudmFyIHZhbGlkYXRlJGYgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgcmV0dXJuICF2YWxpZGF0ZSRlLmFwcGx5KHZvaWQgMCwgYXJncyk7XG59O1xuXG52YXIgZXhjbHVkZWQgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSRmXG59O1xuXG52YXIgdmFsaWRhdGUkZyA9IGZ1bmN0aW9uIChmaWxlcywgZXh0ZW5zaW9ucykge1xuICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKChcIi4oXCIgKyAoZXh0ZW5zaW9ucy5qb2luKCd8JykpICsgXCIpJFwiKSwgJ2knKTtcbiAgcmV0dXJuIGVuc3VyZUFycmF5KGZpbGVzKS5ldmVyeShmdW5jdGlvbiAoZmlsZSkgeyByZXR1cm4gcmVnZXgudGVzdChmaWxlLm5hbWUpOyB9KTtcbn07XG5cbnZhciBleHQgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSRnXG59O1xuXG52YXIgdmFsaWRhdGUkaCA9IGZ1bmN0aW9uIChmaWxlcykgeyByZXR1cm4gKEFycmF5LmlzQXJyYXkoZmlsZXMpID8gZmlsZXMgOiBbZmlsZXNdKS5ldmVyeShmdW5jdGlvbiAoZmlsZSkgeyByZXR1cm4gL1xcLihqcGd8c3ZnfGpwZWd8cG5nfGJtcHxnaWYpJC9pLnRlc3QoZmlsZS5uYW1lKTsgfSk7IH07XG5cbnZhciBpbWFnZSA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJGhcbn07XG5cbnZhciB2YWxpZGF0ZSRpID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5ldmVyeShmdW5jdGlvbiAodmFsKSB7IHJldHVybiAvXi0/WzAtOV0rJC8udGVzdChTdHJpbmcodmFsKSk7IH0pO1xuICB9XG5cbiAgcmV0dXJuIC9eLT9bMC05XSskLy50ZXN0KFN0cmluZyh2YWx1ZSkpO1xufTtcblxudmFyIGludGVnZXIgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSRpXG59O1xuXG52YXIgdmFsaWRhdGUkaiA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIHZlcnNpb24gPSByZWYudmVyc2lvbjsgaWYgKCB2ZXJzaW9uID09PSB2b2lkIDAgKSB2ZXJzaW9uID0gNDtcblxuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgdmFsdWUgPSAnJztcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5ldmVyeShmdW5jdGlvbiAodmFsKSB7IHJldHVybiBpc0lQKHZhbCwgdmVyc2lvbik7IH0pO1xuICB9XG5cbiAgcmV0dXJuIGlzSVAodmFsdWUsIHZlcnNpb24pO1xufTtcblxudmFyIHBhcmFtTmFtZXMkYiA9IFsndmVyc2lvbiddO1xuXG52YXIgaXAgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSRqLFxuICBwYXJhbU5hbWVzOiBwYXJhbU5hbWVzJGJcbn07XG5cbnZhciB2YWxpZGF0ZSRrID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICB2YWx1ZSA9ICcnO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmV2ZXJ5KGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIChpc0lQKHZhbCwgJycpIHx8IGlzRlFETih2YWwpKTsgfSk7XG4gIH1cblxuICByZXR1cm4gaXNJUCh2YWx1ZSwgJycpIHx8IGlzRlFETih2YWx1ZSk7XG59O1xuXG52YXIgaXBfb3JfZnFkbiA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJGtcbn07XG5cbnZhciB2YWxpZGF0ZSRsID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IFtdO1xuICB2YXIgb3RoZXIgPSByZWZbMF07XG5cbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlcjtcbn07XG5cbnZhciBpcyA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJGxcbn07XG5cbnZhciB2YWxpZGF0ZSRtID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IFtdO1xuICB2YXIgb3RoZXIgPSByZWZbMF07XG5cbiAgcmV0dXJuIHZhbHVlICE9PSBvdGhlcjtcbn07XG5cbnZhciBpc19ub3QgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSRtXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXl8U3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtOdW1iZXJ9IG1heFxuICovXG52YXIgY29tcGFyZSA9IGZ1bmN0aW9uICh2YWx1ZSwgbGVuZ3RoLCBtYXgpIHtcbiAgaWYgKG1heCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gbGVuZ3RoO1xuICB9XG5cbiAgLy8gY2FzdCB0byBudW1iZXIuXG4gIG1heCA9IE51bWJlcihtYXgpO1xuXG4gIHJldHVybiB2YWx1ZS5sZW5ndGggPj0gbGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8PSBtYXg7XG59O1xuXG52YXIgdmFsaWRhdGUkbiA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVmKSB7XG4gIHZhciBsZW5ndGggPSByZWZbMF07XG4gIHZhciBtYXggPSByZWZbMV07IGlmICggbWF4ID09PSB2b2lkIDAgKSBtYXggPSB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIGlmICghdmFsdWUubGVuZ3RoKSB7XG4gICAgdmFsdWUgPSB0b0FycmF5KHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBjb21wYXJlKHZhbHVlLCBsZW5ndGgsIG1heCk7XG59O1xuXG52YXIgbGVuZ3RoID0ge1xuICB2YWxpZGF0ZTogdmFsaWRhdGUkblxufTtcblxudmFyIHZhbGlkYXRlJG8gPSBmdW5jdGlvbiAodmFsdWUsIHJlZikge1xuICB2YXIgbGVuZ3RoID0gcmVmWzBdO1xuXG4gIGlmIChpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gbGVuZ3RoID49IDA7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuZXZlcnkoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gdmFsaWRhdGUkbyh2YWwsIFtsZW5ndGhdKTsgfSk7XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKS5sZW5ndGggPD0gbGVuZ3RoO1xufTtcblxudmFyIG1heCA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJG9cbn07XG5cbnZhciB2YWxpZGF0ZSRwID0gZnVuY3Rpb24gKHZhbHVlLCByZWYpIHtcbiAgdmFyIG1heCA9IHJlZlswXTtcblxuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8IHZhbHVlID09PSAnJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwICYmIHZhbHVlLmV2ZXJ5KGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIHZhbGlkYXRlJHAodmFsLCBbbWF4XSk7IH0pO1xuICB9XG5cbiAgcmV0dXJuIE51bWJlcih2YWx1ZSkgPD0gbWF4O1xufTtcblxudmFyIG1heF92YWx1ZSA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJHBcbn07XG5cbnZhciB2YWxpZGF0ZSRxID0gZnVuY3Rpb24gKGZpbGVzLCBtaW1lcykge1xuICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCgobWltZXMuam9pbignfCcpLnJlcGxhY2UoJyonLCAnLisnKSkgKyBcIiRcIiksICdpJyk7XG4gIHJldHVybiBlbnN1cmVBcnJheShmaWxlcykuZXZlcnkoZnVuY3Rpb24gKGZpbGUpIHsgcmV0dXJuIHJlZ2V4LnRlc3QoZmlsZS50eXBlKTsgfSk7XG59O1xuXG52YXIgbWltZXMgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSRxXG59O1xuXG52YXIgdmFsaWRhdGUkciA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVmKSB7XG4gIHZhciBsZW5ndGggPSByZWZbMF07XG5cbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5ldmVyeShmdW5jdGlvbiAodmFsKSB7IHJldHVybiB2YWxpZGF0ZSRyKHZhbCwgW2xlbmd0aF0pOyB9KTtcbiAgfVxuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpLmxlbmd0aCA+PSBsZW5ndGg7XG59O1xuXG52YXIgbWluID0ge1xuICB2YWxpZGF0ZTogdmFsaWRhdGUkclxufTtcblxudmFyIHZhbGlkYXRlJHMgPSBmdW5jdGlvbiAodmFsdWUsIHJlZikge1xuICB2YXIgbWluID0gcmVmWzBdO1xuXG4gIGlmIChpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IDAgJiYgdmFsdWUuZXZlcnkoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gdmFsaWRhdGUkcyh2YWwsIFttaW5dKTsgfSk7XG4gIH1cblxuICByZXR1cm4gTnVtYmVyKHZhbHVlKSA+PSBtaW47XG59O1xuXG52YXIgbWluX3ZhbHVlID0ge1xuICB2YWxpZGF0ZTogdmFsaWRhdGUkc1xufTtcblxudmFyIGFyID0gL15b2aDZodmi2aPZpNml2abZp9mo2aldKyQvO1xudmFyIGVuID0gL15bMC05XSskLztcblxudmFyIHZhbGlkYXRlJHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHRlc3RWYWx1ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgc3RyVmFsdWUgPSBTdHJpbmcodmFsKTtcblxuICAgIHJldHVybiBlbi50ZXN0KHN0clZhbHVlKSB8fCBhci50ZXN0KHN0clZhbHVlKTtcbiAgfTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuZXZlcnkodGVzdFZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXN0VmFsdWUodmFsdWUpO1xufTtcblxudmFyIG51bWVyaWMgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSR0XG59O1xuXG52YXIgdmFsaWRhdGUkdSA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVmKSB7XG4gIHZhciBleHByZXNzaW9uID0gcmVmLmV4cHJlc3Npb247XG5cbiAgaWYgKHR5cGVvZiBleHByZXNzaW9uID09PSAnc3RyaW5nJykge1xuICAgIGV4cHJlc3Npb24gPSBuZXcgUmVnRXhwKGV4cHJlc3Npb24pO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmV2ZXJ5KGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIHZhbGlkYXRlJHUodmFsLCB7IGV4cHJlc3Npb246IGV4cHJlc3Npb24gfSk7IH0pO1xuICB9XG5cbiAgcmV0dXJuIGV4cHJlc3Npb24udGVzdChTdHJpbmcodmFsdWUpKTtcbn07XG5cbnZhciBwYXJhbU5hbWVzJGMgPSBbJ2V4cHJlc3Npb24nXTtcblxudmFyIHJlZ2V4ID0ge1xuICB2YWxpZGF0ZTogdmFsaWRhdGUkdSxcbiAgcGFyYW1OYW1lczogcGFyYW1OYW1lcyRjXG59O1xuXG52YXIgdmFsaWRhdGUkdiA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSBbXTtcbiAgdmFyIGludmFsaWRhdGVGYWxzZSA9IHJlZlswXTsgaWYgKCBpbnZhbGlkYXRlRmFsc2UgPT09IHZvaWQgMCApIGludmFsaWRhdGVGYWxzZSA9IGZhbHNlO1xuXG4gIGlmIChpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgaXNFbXB0eUFycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGluY2FzZSBhIGZpZWxkIGNvbnNpZGVycyBgZmFsc2VgIGFzIGFuIGVtcHR5IHZhbHVlIGxpa2UgY2hlY2tib3hlcy5cbiAgaWYgKHZhbHVlID09PSBmYWxzZSAmJiBpbnZhbGlkYXRlRmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gISFTdHJpbmcodmFsdWUpLnRyaW0oKS5sZW5ndGg7XG59O1xuXG52YXIgcmVxdWlyZWQgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSR2XG59O1xuXG52YXIgdmFsaWRhdGUkdyA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSBbXTtcbiAgdmFyIG90aGVyRmllbGRWYWwgPSByZWZbMF07XG4gIHZhciBwb3NzaWJsZVZhbHMgPSByZWYuc2xpY2UoMSk7XG5cbiAgdmFyIHJlcXVpcmVkID0gcG9zc2libGVWYWxzLmluY2x1ZGVzKFN0cmluZyhvdGhlckZpZWxkVmFsKS50cmltKCkpO1xuXG4gIGlmICghcmVxdWlyZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICB2YXIgaW52YWxpZCA9IChpc0VtcHR5QXJyYXkodmFsdWUpIHx8IFtmYWxzZSwgbnVsbCwgdW5kZWZpbmVkXS5pbmNsdWRlcyh2YWx1ZSkpO1xuXG4gIGludmFsaWQgPSBpbnZhbGlkIHx8ICFTdHJpbmcodmFsdWUpLnRyaW0oKS5sZW5ndGg7XG5cbiAgcmV0dXJuIHtcbiAgICB2YWxpZDogIWludmFsaWQsXG4gICAgZGF0YToge1xuICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkXG4gICAgfVxuICB9O1xufTtcblxudmFyIG9wdGlvbnMkNSA9IHtcbiAgaGFzVGFyZ2V0OiB0cnVlLFxuICBjb21wdXRlc1JlcXVpcmVkOiB0cnVlXG59O1xuXG52YXIgcmVxdWlyZWRfaWYgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSR3LFxuICBvcHRpb25zOiBvcHRpb25zJDVcbn07XG5cbnZhciB2YWxpZGF0ZSR4ID0gZnVuY3Rpb24gKGZpbGVzLCByZWYpIHtcbiAgdmFyIHNpemUgPSByZWZbMF07XG5cbiAgaWYgKGlzTmFOKHNpemUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBuU2l6ZSA9IE51bWJlcihzaXplKSAqIDEwMjQ7XG4gIHJldHVybiBlbnN1cmVBcnJheShmaWxlcykuZXZlcnkoZnVuY3Rpb24gKGZpbGUpIHsgcmV0dXJuIGZpbGUuc2l6ZSA8PSBuU2l6ZTsgfSk7XG59O1xuXG52YXIgc2l6ZSA9IHtcbiAgdmFsaWRhdGU6IHZhbGlkYXRlJHhcbn07XG5cbnZhciBpc1VSTF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNVUkw7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChhc3NlcnRTdHJpbmdfMSk7XG5cbnZhciBfaXNGUUROID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChpc0ZRRE5fMSk7XG5cbnZhciBfaXNJUCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoaXNJUF8xKTtcblxudmFyIF9tZXJnZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQobWVyZ2VfMSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBkZWZhdWx0X3VybF9vcHRpb25zID0ge1xuICBwcm90b2NvbHM6IFsnaHR0cCcsICdodHRwcycsICdmdHAnXSxcbiAgcmVxdWlyZV90bGQ6IHRydWUsXG4gIHJlcXVpcmVfcHJvdG9jb2w6IGZhbHNlLFxuICByZXF1aXJlX2hvc3Q6IHRydWUsXG4gIHJlcXVpcmVfdmFsaWRfcHJvdG9jb2w6IHRydWUsXG4gIGFsbG93X3VuZGVyc2NvcmVzOiBmYWxzZSxcbiAgYWxsb3dfdHJhaWxpbmdfZG90OiBmYWxzZSxcbiAgYWxsb3dfcHJvdG9jb2xfcmVsYXRpdmVfdXJsczogZmFsc2Vcbn07XG52YXIgd3JhcHBlZF9pcHY2ID0gL15cXFsoW15cXF1dKylcXF0oPzo6KFswLTldKykpPyQvO1xuXG5mdW5jdGlvbiBpc1JlZ0V4cChvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cblxuZnVuY3Rpb24gY2hlY2tIb3N0KGhvc3QsIG1hdGNoZXMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1hdGNoID0gbWF0Y2hlc1tpXTtcblxuICAgIGlmIChob3N0ID09PSBtYXRjaCB8fCBpc1JlZ0V4cChtYXRjaCkgJiYgbWF0Y2gudGVzdChob3N0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1VSTCh1cmwsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkodXJsKTtcblxuICBpZiAoIXVybCB8fCB1cmwubGVuZ3RoID49IDIwODMgfHwgL1tcXHM8Pl0vLnRlc3QodXJsKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh1cmwuaW5kZXhPZignbWFpbHRvOicpID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UuZGVmYXVsdCkob3B0aW9ucywgZGVmYXVsdF91cmxfb3B0aW9ucyk7XG4gIHZhciBwcm90b2NvbCwgYXV0aCwgaG9zdCwgaG9zdG5hbWUsIHBvcnQsIHBvcnRfc3RyLCBzcGxpdCwgaXB2NjtcbiAgc3BsaXQgPSB1cmwuc3BsaXQoJyMnKTtcbiAgdXJsID0gc3BsaXQuc2hpZnQoKTtcbiAgc3BsaXQgPSB1cmwuc3BsaXQoJz8nKTtcbiAgdXJsID0gc3BsaXQuc2hpZnQoKTtcbiAgc3BsaXQgPSB1cmwuc3BsaXQoJzovLycpO1xuXG4gIGlmIChzcGxpdC5sZW5ndGggPiAxKSB7XG4gICAgcHJvdG9jb2wgPSBzcGxpdC5zaGlmdCgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlX3ZhbGlkX3Byb3RvY29sICYmIG9wdGlvbnMucHJvdG9jb2xzLmluZGV4T2YocHJvdG9jb2wpID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRpb25zLnJlcXVpcmVfcHJvdG9jb2wpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSBpZiAodXJsLnN1YnN0cigwLCAyKSA9PT0gJy8vJykge1xuICAgIGlmICghb3B0aW9ucy5hbGxvd19wcm90b2NvbF9yZWxhdGl2ZV91cmxzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3BsaXRbMF0gPSB1cmwuc3Vic3RyKDIpO1xuICB9XG5cbiAgdXJsID0gc3BsaXQuam9pbignOi8vJyk7XG5cbiAgaWYgKHVybCA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzcGxpdCA9IHVybC5zcGxpdCgnLycpO1xuICB1cmwgPSBzcGxpdC5zaGlmdCgpO1xuXG4gIGlmICh1cmwgPT09ICcnICYmICFvcHRpb25zLnJlcXVpcmVfaG9zdCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3BsaXQgPSB1cmwuc3BsaXQoJ0AnKTtcblxuICBpZiAoc3BsaXQubGVuZ3RoID4gMSkge1xuICAgIGlmIChvcHRpb25zLmRpc2FsbG93X2F1dGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBhdXRoID0gc3BsaXQuc2hpZnQoKTtcblxuICAgIGlmIChhdXRoLmluZGV4T2YoJzonKSA+PSAwICYmIGF1dGguc3BsaXQoJzonKS5sZW5ndGggPiAyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaG9zdG5hbWUgPSBzcGxpdC5qb2luKCdAJyk7XG4gIHBvcnRfc3RyID0gbnVsbDtcbiAgaXB2NiA9IG51bGw7XG4gIHZhciBpcHY2X21hdGNoID0gaG9zdG5hbWUubWF0Y2god3JhcHBlZF9pcHY2KTtcblxuICBpZiAoaXB2Nl9tYXRjaCkge1xuICAgIGhvc3QgPSAnJztcbiAgICBpcHY2ID0gaXB2Nl9tYXRjaFsxXTtcbiAgICBwb3J0X3N0ciA9IGlwdjZfbWF0Y2hbMl0gfHwgbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBzcGxpdCA9IGhvc3RuYW1lLnNwbGl0KCc6Jyk7XG4gICAgaG9zdCA9IHNwbGl0LnNoaWZ0KCk7XG5cbiAgICBpZiAoc3BsaXQubGVuZ3RoKSB7XG4gICAgICBwb3J0X3N0ciA9IHNwbGl0LmpvaW4oJzonKTtcbiAgICB9XG4gIH1cblxuICBpZiAocG9ydF9zdHIgIT09IG51bGwpIHtcbiAgICBwb3J0ID0gcGFyc2VJbnQocG9ydF9zdHIsIDEwKTtcblxuICAgIGlmICghL15bMC05XSskLy50ZXN0KHBvcnRfc3RyKSB8fCBwb3J0IDw9IDAgfHwgcG9ydCA+IDY1NTM1KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCEoMCwgX2lzSVAuZGVmYXVsdCkoaG9zdCkgJiYgISgwLCBfaXNGUUROLmRlZmF1bHQpKGhvc3QsIG9wdGlvbnMpICYmICghaXB2NiB8fCAhKDAsIF9pc0lQLmRlZmF1bHQpKGlwdjYsIDYpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGhvc3QgPSBob3N0IHx8IGlwdjY7XG5cbiAgaWYgKG9wdGlvbnMuaG9zdF93aGl0ZWxpc3QgJiYgIWNoZWNrSG9zdChob3N0LCBvcHRpb25zLmhvc3Rfd2hpdGVsaXN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmhvc3RfYmxhY2tsaXN0ICYmIGNoZWNrSG9zdChob3N0LCBvcHRpb25zLmhvc3RfYmxhY2tsaXN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7XG59KTtcblxudmFyIGlzVVJMID0gdW53cmFwRXhwb3J0cyhpc1VSTF8xKTtcblxudmFyIHZhbGlkYXRlJHkgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHZhbHVlID0gJyc7XG4gIH1cblxuICB2YXIgdmFsaWRhdG9yT3B0aW9ucyA9IGFzc2lnbih7fSwgb3B0aW9ucyk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmV2ZXJ5KGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIGlzVVJMKHZhbCwgdmFsaWRhdG9yT3B0aW9ucyk7IH0pO1xuICB9XG5cbiAgcmV0dXJuIGlzVVJMKHZhbHVlLCB2YWxpZGF0b3JPcHRpb25zKTtcbn07XG5cbnZhciB1cmwgPSB7XG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSR5XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cblxudmFyIFJ1bGVzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICBhZnRlcjogYWZ0ZXIsXG4gIGFscGhhX2Rhc2g6IGFscGhhX2Rhc2gsXG4gIGFscGhhX251bTogYWxwaGFfbnVtLFxuICBhbHBoYV9zcGFjZXM6IGFscGhhX3NwYWNlcyxcbiAgYWxwaGE6IGFscGhhJDEsXG4gIGJlZm9yZTogYmVmb3JlLFxuICBiZXR3ZWVuOiBiZXR3ZWVuLFxuICBjb25maXJtZWQ6IGNvbmZpcm1lZCxcbiAgY3JlZGl0X2NhcmQ6IGNyZWRpdF9jYXJkLFxuICBkYXRlX2JldHdlZW46IGRhdGVfYmV0d2VlbixcbiAgZGF0ZV9mb3JtYXQ6IGRhdGVfZm9ybWF0LFxuICBkZWNpbWFsOiBkZWNpbWFsLFxuICBkaWdpdHM6IGRpZ2l0cyxcbiAgZGltZW5zaW9uczogZGltZW5zaW9ucyxcbiAgZW1haWw6IGVtYWlsLFxuICBleHQ6IGV4dCxcbiAgaW1hZ2U6IGltYWdlLFxuICBpbmNsdWRlZDogaW5jbHVkZWQsXG4gIGludGVnZXI6IGludGVnZXIsXG4gIGxlbmd0aDogbGVuZ3RoLFxuICBpcDogaXAsXG4gIGlwX29yX2ZxZG46IGlwX29yX2ZxZG4sXG4gIGlzX25vdDogaXNfbm90LFxuICBpczogaXMsXG4gIG1heDogbWF4LFxuICBtYXhfdmFsdWU6IG1heF92YWx1ZSxcbiAgbWltZXM6IG1pbWVzLFxuICBtaW46IG1pbixcbiAgbWluX3ZhbHVlOiBtaW5fdmFsdWUsXG4gIGV4Y2x1ZGVkOiBleGNsdWRlZCxcbiAgbnVtZXJpYzogbnVtZXJpYyxcbiAgcmVnZXg6IHJlZ2V4LFxuICByZXF1aXJlZDogcmVxdWlyZWQsXG4gIHJlcXVpcmVkX2lmOiByZXF1aXJlZF9pZixcbiAgc2l6ZTogc2l6ZSxcbiAgdXJsOiB1cmxcbn0pO1xuXG4vLyBcblxudmFyIG5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChmaWVsZHMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGRzKSkge1xuICAgIHJldHVybiBmaWVsZHMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgICBpZiAoaW5jbHVkZXMoY3VyciwgJy4nKSkge1xuICAgICAgICBwcmV2W2N1cnIuc3BsaXQoJy4nKVsxXV0gPSBjdXJyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldltjdXJyXSA9IGN1cnI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHJldHVybiBmaWVsZHM7XG59O1xuXG4vLyBDb21iaW5lcyB0d28gZmxhZ3MgdXNpbmcgZWl0aGVyIEFORCBvciBPUiBkZXBlbmRpbmcgb24gdGhlIGZsYWcgdHlwZS5cbnZhciBjb21iaW5lID0gZnVuY3Rpb24gKGxocywgcmhzKSB7XG4gIHZhciBtYXBwZXIgPSB7XG4gICAgcHJpc3RpbmU6IGZ1bmN0aW9uIChsaHMsIHJocykgeyByZXR1cm4gbGhzICYmIHJoczsgfSxcbiAgICBkaXJ0eTogZnVuY3Rpb24gKGxocywgcmhzKSB7IHJldHVybiBsaHMgfHwgcmhzOyB9LFxuICAgIHRvdWNoZWQ6IGZ1bmN0aW9uIChsaHMsIHJocykgeyByZXR1cm4gbGhzIHx8IHJoczsgfSxcbiAgICB1bnRvdWNoZWQ6IGZ1bmN0aW9uIChsaHMsIHJocykgeyByZXR1cm4gbGhzICYmIHJoczsgfSxcbiAgICB2YWxpZDogZnVuY3Rpb24gKGxocywgcmhzKSB7IHJldHVybiBsaHMgJiYgcmhzOyB9LFxuICAgIGludmFsaWQ6IGZ1bmN0aW9uIChsaHMsIHJocykgeyByZXR1cm4gbGhzIHx8IHJoczsgfSxcbiAgICBwZW5kaW5nOiBmdW5jdGlvbiAobGhzLCByaHMpIHsgcmV0dXJuIGxocyB8fCByaHM7IH0sXG4gICAgcmVxdWlyZWQ6IGZ1bmN0aW9uIChsaHMsIHJocykgeyByZXR1cm4gbGhzIHx8IHJoczsgfSxcbiAgICB2YWxpZGF0ZWQ6IGZ1bmN0aW9uIChsaHMsIHJocykgeyByZXR1cm4gbGhzICYmIHJoczsgfVxuICB9O1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhtYXBwZXIpLnJlZHVjZShmdW5jdGlvbiAoZmxhZ3MsIGZsYWcpIHtcbiAgICBmbGFnc1tmbGFnXSA9IG1hcHBlcltmbGFnXShsaHNbZmxhZ10sIHJoc1tmbGFnXSk7XG5cbiAgICByZXR1cm4gZmxhZ3M7XG4gIH0sIHt9KTtcbn07XG5cbnZhciBtYXBTY29wZSA9IGZ1bmN0aW9uIChzY29wZSwgZGVlcCkge1xuICBpZiAoIGRlZXAgPT09IHZvaWQgMCApIGRlZXAgPSB0cnVlO1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhzY29wZSkucmVkdWNlKGZ1bmN0aW9uIChmbGFncywgZmllbGQpIHtcbiAgICBpZiAoIWZsYWdzKSB7XG4gICAgICBmbGFncyA9IGFzc2lnbih7fSwgc2NvcGVbZmllbGRdKTtcbiAgICAgIHJldHVybiBmbGFncztcbiAgICB9XG5cbiAgICAvLyBzY29wZS5cbiAgICB2YXIgaXNTY29wZSA9IGZpZWxkLmluZGV4T2YoJyQnKSA9PT0gMDtcbiAgICBpZiAoZGVlcCAmJiBpc1Njb3BlKSB7XG4gICAgICByZXR1cm4gY29tYmluZShtYXBTY29wZShzY29wZVtmaWVsZF0pLCBmbGFncyk7XG4gICAgfSBlbHNlIGlmICghZGVlcCAmJiBpc1Njb3BlKSB7XG4gICAgICByZXR1cm4gZmxhZ3M7XG4gICAgfVxuXG4gICAgZmxhZ3MgPSBjb21iaW5lKGZsYWdzLCBzY29wZVtmaWVsZF0pO1xuXG4gICAgcmV0dXJuIGZsYWdzO1xuICB9LCBudWxsKTtcbn07XG5cbi8qKlxuICogTWFwcyBmaWVsZHMgdG8gY29tcHV0ZWQgZnVuY3Rpb25zLlxuICovXG52YXIgbWFwRmllbGRzID0gZnVuY3Rpb24gKGZpZWxkcykge1xuICBpZiAoIWZpZWxkcykge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gbWFwU2NvcGUodGhpcy4kdmFsaWRhdG9yLmZsYWdzKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIG5vcm1hbGl6ZWQgPSBub3JtYWxpemUoZmllbGRzKTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG5vcm1hbGl6ZWQpLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3Vycikge1xuICAgIHZhciBmaWVsZCA9IG5vcm1hbGl6ZWRbY3Vycl07XG4gICAgcHJldltjdXJyXSA9IGZ1bmN0aW9uIG1hcHBlZEZpZWxkICgpIHtcbiAgICAgIC8vIGlmIGZpZWxkIGV4aXN0c1xuICAgICAgaWYgKHRoaXMuJHZhbGlkYXRvci5mbGFnc1tmaWVsZF0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHZhbGlkYXRvci5mbGFnc1tmaWVsZF07XG4gICAgICB9XG5cbiAgICAgIC8vIHNjb3BlbGVzcyBmaWVsZHMgd2VyZSBzZWxlY3RlZC5cbiAgICAgIGlmIChub3JtYWxpemVkW2N1cnJdID09PSAnKicpIHtcbiAgICAgICAgcmV0dXJuIG1hcFNjb3BlKHRoaXMuJHZhbGlkYXRvci5mbGFncywgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiBpdCBoYXMgYSBzY29wZSBkZWZpbmVkXG4gICAgICB2YXIgaW5kZXggPSBmaWVsZC5pbmRleE9mKCcuJyk7XG4gICAgICBpZiAoaW5kZXggPD0gMCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG5cbiAgICAgIHZhciByZWYgPSBmaWVsZC5zcGxpdCgnLicpO1xuICAgICAgdmFyIHNjb3BlID0gcmVmWzBdO1xuICAgICAgdmFyIG5hbWUgPSByZWYuc2xpY2UoMSk7XG5cbiAgICAgIHNjb3BlID0gdGhpcy4kdmFsaWRhdG9yLmZsYWdzWyhcIiRcIiArIHNjb3BlKV07XG4gICAgICBuYW1lID0gbmFtZS5qb2luKCcuJyk7XG5cbiAgICAgIC8vIGFuIGVudGlyZSBzY29wZSB3YXMgc2VsZWN0ZWQ6IHNjb3BlLipcbiAgICAgIGlmIChuYW1lID09PSAnKicgJiYgc2NvcGUpIHtcbiAgICAgICAgcmV0dXJuIG1hcFNjb3BlKHNjb3BlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNjb3BlICYmIHNjb3BlW25hbWVdKSB7XG4gICAgICAgIHJldHVybiBzY29wZVtuYW1lXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHt9O1xuICAgIH07XG5cbiAgICByZXR1cm4gcHJldjtcbiAgfSwge30pO1xufTtcblxudmFyICR2YWxpZGF0b3IgPSBudWxsO1xuXG52YXIgUFJPVklERVJfQ09VTlRFUiA9IDA7XG5cbnZhciBWYWxpZGF0aW9uUHJvdmlkZXIgPSB7XG4gICRfX3ZlZUluamVjdDogZmFsc2UsXG4gIGluamVjdDoge1xuICAgICRfdmVlT2JzZXJ2ZXI6IHtcbiAgICAgIGZyb206ICckX3ZlZU9ic2VydmVyJyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIGRlZmF1bHQkMSAoKSB7XG4gICAgICAgIGlmICghdGhpcy4kdm5vZGUuY29udGV4dC4kX3ZlZU9ic2VydmVyKSB7XG4gICAgICAgICAgdGhpcy4kdm5vZGUuY29udGV4dC4kX3ZlZU9ic2VydmVyID0gY3JlYXRlT2JzZXJ2ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLiR2bm9kZS5jb250ZXh0LiRfdmVlT2JzZXJ2ZXI7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwcm9wczoge1xuICAgIHZpZDoge1xuICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgUFJPVklERVJfQ09VTlRFUisrO1xuXG4gICAgICAgIHJldHVybiAoXCJfdmVlX1wiICsgUFJPVklERVJfQ09VTlRFUik7XG4gICAgICB9XG4gICAgfSxcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBtb2RlOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBGdW5jdGlvbl0sXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb25maWcoKS5tb2RlO1xuICAgICAgfVxuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybignZXZlbnRzIHByb3AgYW5kIGNvbmZpZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHZlcnNpb24gcGxlYXNlIHVzZSB0aGUgaW50ZXJhY3Rpb24gbW9kZXMgaW5zdGVhZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZXZlbnRzID0gZ2V0Q29uZmlnKCkuZXZlbnRzO1xuICAgICAgICBpZiAodHlwZW9mIGV2ZW50cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gZXZlbnRzLnNwbGl0KCd8Jyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXZlbnRzO1xuICAgICAgfVxuICAgIH0sXG4gICAgcnVsZXM6IHtcbiAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBpbW1lZGlhdGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgcGVyc2lzdDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBiYWlsczoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldENvbmZpZygpLmZhc3RFeGl0OyB9XG4gICAgfSxcbiAgICBkZWJvdW5jZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0Q29uZmlnKCkuZGVsYXkgfHwgMDsgfVxuICAgIH0sXG4gICAgdGFnOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnc3BhbidcbiAgICB9LFxuICAgIHNsaW06IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBydWxlczoge1xuICAgICAgZGVlcDogdHJ1ZSxcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIgKHZhbCwgb2xkVmFsKSB7XG4gICAgICAgIHRoaXMuX25lZWRzVmFsaWRhdGlvbiA9ICFpc0VxdWFsKHZhbCwgb2xkVmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgbWVzc2FnZXM6IFtdLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgaW5pdGlhbGl6ZWQ6IGZhbHNlLFxuICAgIGluaXRpYWxWYWx1ZTogdW5kZWZpbmVkLFxuICAgIGZsYWdzOiBjcmVhdGVGbGFncygpLFxuICAgIGZhaWxlZFJ1bGVzOiB7fSxcbiAgICBmb3JjZVJlcXVpcmVkOiBmYWxzZSxcbiAgICBpc0RlYWN0aXZhdGVkOiBmYWxzZSxcbiAgICBpZDogbnVsbFxuICB9KTsgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBpc1ZhbGlkOiBmdW5jdGlvbiBpc1ZhbGlkICgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZsYWdzLnZhbGlkO1xuICAgIH0sXG4gICAgZmllbGREZXBzOiBmdW5jdGlvbiBmaWVsZERlcHMgKCkge1xuICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgIHZhciBydWxlcyA9IG5vcm1hbGl6ZVJ1bGVzKHRoaXMucnVsZXMpO1xuXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMocnVsZXMpLmZpbHRlcihSdWxlQ29udGFpbmVyLmlzVGFyZ2V0UnVsZSkubWFwKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICAgIHZhciBkZXBOYW1lID0gcnVsZXNbcnVsZV1bMF07XG4gICAgICAgIHdhdGNoQ3Jvc3NGaWVsZERlcCh0aGlzJDEsIGRlcE5hbWUpO1xuXG4gICAgICAgIHJldHVybiBkZXBOYW1lO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBub3JtYWxpemVkRXZlbnRzOiBmdW5jdGlvbiBub3JtYWxpemVkRXZlbnRzICgpIHtcbiAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICB2YXIgcmVmID0gY29tcHV0ZU1vZGVTZXR0aW5nKHRoaXMpO1xuICAgICAgdmFyIG9uID0gcmVmLm9uO1xuXG4gICAgICByZXR1cm4gbm9ybWFsaXplRXZlbnRzKG9uIHx8IHRoaXMuZXZlbnRzIHx8IFtdKS5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKGUgPT09ICdpbnB1dCcpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcyQxLl9pbnB1dEV2ZW50TmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBpc1JlcXVpcmVkOiBmdW5jdGlvbiBpc1JlcXVpcmVkICgpIHtcbiAgICAgIHZhciBydWxlcyA9IG5vcm1hbGl6ZVJ1bGVzKHRoaXMucnVsZXMpO1xuICAgICAgdmFyIGZvcmNlUmVxdWlyZWQgPSB0aGlzLmZvcmNlUmVxdWlyZWQ7XG5cbiAgICAgIHZhciBpc1JlcXVpcmVkID0gcnVsZXMucmVxdWlyZWQgfHwgZm9yY2VSZXF1aXJlZDtcbiAgICAgIHRoaXMuZmxhZ3MucmVxdWlyZWQgPSBpc1JlcXVpcmVkO1xuXG4gICAgICByZXR1cm4gaXNSZXF1aXJlZDtcbiAgICB9LFxuICAgIGNsYXNzZXM6IGZ1bmN0aW9uIGNsYXNzZXMgKCkge1xuICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgIHZhciBuYW1lcyA9IGdldENvbmZpZygpLmNsYXNzTmFtZXM7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5mbGFncykucmVkdWNlKGZ1bmN0aW9uIChjbGFzc2VzLCBmbGFnKSB7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSAobmFtZXMgJiYgbmFtZXNbZmxhZ10pIHx8IGZsYWc7XG4gICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzJDEuZmxhZ3NbZmxhZ10pKSB7XG4gICAgICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgY2xhc3Nlc1tjbGFzc05hbWVdID0gdGhpcyQxLmZsYWdzW2ZsYWddO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgICB9LCB7fSk7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdGhpcy5yZWdpc3RlckZpZWxkKCk7XG4gICAgdmFyIGN0eCA9IGNyZWF0ZVZhbGlkYXRpb25DdHgodGhpcyk7XG5cbiAgICAvLyBHcmFjZWZ1bGx5IGhhbmRsZSBub24tZXhpc3RlbnQgc2NvcGVkIHNsb3RzLlxuICAgIHZhciBzbG90ID0gdGhpcy4kc2NvcGVkU2xvdHMuZGVmYXVsdDtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghaXNDYWxsYWJsZShzbG90KSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybignVmFsaWRhdGlvblByb3ZpZGVyIGV4cGVjdHMgYSBzY29wZWQgc2xvdC4gRGlkIHlvdSBmb3JnZXQgdG8gYWRkIFwidi1zbG90XCIgdG8geW91ciBzbG90PycpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaCh0aGlzLnRhZywgdGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVzID0gc2xvdChjdHgpO1xuICAgIC8vIEhhbmRsZSBzaW5nbGUtcm9vdCBzbG90LlxuICAgIGV4dHJhY3RWTm9kZXMobm9kZXMpLmZvckVhY2goZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICBhZGRMaXN0ZW5lcnMuY2FsbCh0aGlzJDEsIGlucHV0KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLnNsaW0gPyBjcmVhdGVSZW5kZXJsZXNzKGgsIG5vZGVzKSA6IGgodGhpcy50YWcsIG5vZGVzKTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSAoKSB7XG4gICAgLy8gY2xlYW51cCByZWZlcmVuY2UuXG4gICAgdGhpcy4kX3ZlZU9ic2VydmVyLnVuc3Vic2NyaWJlKHRoaXMpO1xuICB9LFxuICBhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGFjdGl2YXRlZCAoKSB7XG4gICAgdGhpcy4kX3ZlZU9ic2VydmVyLnN1YnNjcmliZSh0aGlzKTtcbiAgICB0aGlzLmlzRGVhY3RpdmF0ZWQgPSBmYWxzZTtcbiAgfSxcbiAgZGVhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGRlYWN0aXZhdGVkICgpIHtcbiAgICB0aGlzLiRfdmVlT2JzZXJ2ZXIudW5zdWJzY3JpYmUodGhpcyk7XG4gICAgdGhpcy5pc0RlYWN0aXZhdGVkID0gdHJ1ZTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHNldEZsYWdzOiBmdW5jdGlvbiBzZXRGbGFncyAoZmxhZ3MpIHtcbiAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICBPYmplY3Qua2V5cyhmbGFncykuZm9yRWFjaChmdW5jdGlvbiAoZmxhZykge1xuICAgICAgICB0aGlzJDEuZmxhZ3NbZmxhZ10gPSBmbGFnc1tmbGFnXTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc3luY1ZhbHVlOiBmdW5jdGlvbiBzeW5jVmFsdWUgKGUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlJDEoZSk7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmZsYWdzLmNoYW5nZWQgPSB0aGlzLmluaXRpYWxWYWx1ZSAhPT0gdmFsdWU7XG4gICAgfSxcbiAgICByZXNldDogZnVuY3Rpb24gcmVzZXQgKCkge1xuICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xuICAgICAgdGhpcy5fcGVuZGluZ1ZhbGlkYXRpb24gPSBudWxsO1xuICAgICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdmFyIGZsYWdzID0gY3JlYXRlRmxhZ3MoKTtcbiAgICAgIHRoaXMuc2V0RmxhZ3MoZmxhZ3MpO1xuICAgIH0sXG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uIHZhbGlkYXRlICgpIHtcbiAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zeW5jVmFsdWUoYXJnc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU2lsZW50KCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMkMS5hcHBseVJlc3VsdChyZXN1bHQpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHZhbGlkYXRlU2lsZW50OiBmdW5jdGlvbiB2YWxpZGF0ZVNpbGVudCAoKSB7XG4gICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgdGhpcy5zZXRGbGFncyh7IHBlbmRpbmc6IHRydWUgfSk7XG5cbiAgICAgIHJldHVybiAkdmFsaWRhdG9yLnZlcmlmeSh0aGlzLnZhbHVlLCB0aGlzLnJ1bGVzLCB7XG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgdmFsdWVzOiBjcmVhdGVWYWx1ZXNMb29rdXAodGhpcyksXG4gICAgICAgIGJhaWxzOiB0aGlzLmJhaWxzXG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcyQxLnNldEZsYWdzKHsgcGVuZGluZzogZmFsc2UgfSk7XG4gICAgICAgIGlmICghdGhpcyQxLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgICB0aGlzJDEuc2V0RmxhZ3MoeyB2YWxpZDogcmVzdWx0LnZhbGlkLCBpbnZhbGlkOiAhcmVzdWx0LnZhbGlkIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgYXBwbHlSZXN1bHQ6IGZ1bmN0aW9uIGFwcGx5UmVzdWx0IChyZWYpIHtcbiAgICAgIHZhciBlcnJvcnMgPSByZWYuZXJyb3JzO1xuICAgICAgdmFyIGZhaWxlZFJ1bGVzID0gcmVmLmZhaWxlZFJ1bGVzO1xuXG4gICAgICB0aGlzLm1lc3NhZ2VzID0gZXJyb3JzO1xuICAgICAgdGhpcy5mYWlsZWRSdWxlcyA9IGFzc2lnbih7fSwgZmFpbGVkUnVsZXMpO1xuICAgICAgdGhpcy5zZXRGbGFncyh7XG4gICAgICAgIHZhbGlkOiAhZXJyb3JzLmxlbmd0aCxcbiAgICAgICAgY2hhbmdlZDogdGhpcy52YWx1ZSAhPT0gdGhpcy5pbml0aWFsVmFsdWUsXG4gICAgICAgIGludmFsaWQ6ICEhZXJyb3JzLmxlbmd0aCxcbiAgICAgICAgdmFsaWRhdGVkOiB0cnVlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJlZ2lzdGVyRmllbGQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRmllbGQgKCkge1xuICAgICAgaWYgKCEkdmFsaWRhdG9yKSB7XG4gICAgICAgICR2YWxpZGF0b3IgPSBnZXRWYWxpZGF0b3IoKSB8fCBuZXcgVmFsaWRhdG9yKG51bGwsIHsgZmFzdEV4aXQ6IGdldENvbmZpZygpLmZhc3RFeGl0IH0pO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVSZW5kZXJpbmdDb250ZXh0UmVmcyh0aGlzKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVZhbGlkYXRpb25DdHggKGN0eCkge1xuICByZXR1cm4ge1xuICAgIGVycm9yczogY3R4Lm1lc3NhZ2VzLFxuICAgIGZsYWdzOiBjdHguZmxhZ3MsXG4gICAgY2xhc3NlczogY3R4LmNsYXNzZXMsXG4gICAgdmFsaWQ6IGN0eC5pc1ZhbGlkLFxuICAgIGZhaWxlZFJ1bGVzOiBjdHguZmFpbGVkUnVsZXMsXG4gICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGN0eC5yZXNldCgpOyB9LFxuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgICAgcmV0dXJuIGN0eC52YWxpZGF0ZS5hcHBseShjdHgsIGFyZ3MpO1xuICB9LFxuICAgIGFyaWE6IHtcbiAgICAgICdhcmlhLWludmFsaWQnOiBjdHguZmxhZ3MuaW52YWxpZCA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAnYXJpYS1yZXF1aXJlZCc6IGN0eC5pc1JlcXVpcmVkID8gJ3RydWUnIDogJ2ZhbHNlJ1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUkMSAodmFsdWUpIHtcbiAgaWYgKGlzRXZlbnQodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRhcmdldC50eXBlID09PSAnZmlsZScgPyB0b0FycmF5KHZhbHVlLnRhcmdldC5maWxlcykgOiB2YWx1ZS50YXJnZXQudmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIHByb3ZpZGVyIG5lZWRzIHRvIHJ1biB2YWxpZGF0aW9uLlxuICovXG5mdW5jdGlvbiBzaG91bGRWYWxpZGF0ZSAoY3R4LCBtb2RlbCkge1xuICAvLyB3aGVuIGFuIGltbWVkaWF0ZS9pbml0aWFsIHZhbGlkYXRpb24gaXMgbmVlZGVkIGFuZCB3YXNuJ3QgZG9uZSBiZWZvcmUuXG4gIGlmICghY3R4Ll9pZ25vcmVJbW1lZGlhdGUgJiYgY3R4LmltbWVkaWF0ZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gd2hlbiB0aGUgdmFsdWUgY2hhbmdlcyBmb3Igd2hhdGV2ZXIgcmVhc29uLlxuICBpZiAoY3R4LnZhbHVlICE9PSBtb2RlbC52YWx1ZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gd2hlbiBpdCBuZWVkcyB2YWxpZGF0aW9uIGR1ZSB0byBwcm9wcy9jcm9zcy1maWVsZHMgY2hhbmdlcy5cbiAgaWYgKGN0eC5fbmVlZHNWYWxpZGF0aW9uKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyB3aGVuIHRoZSBpbml0aWFsIHZhbHVlIGlzIHVuZGVmaW5lZCBhbmQgdGhlIGZpZWxkIHdhc24ndCByZW5kZXJlZCB5ZXQuXG4gIGlmICghY3R4LmluaXRpYWxpemVkICYmIG1vZGVsLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZU1vZGVTZXR0aW5nIChjdHgpIHtcbiAgdmFyIGNvbXB1dGUgPSBpc0NhbGxhYmxlKGN0eC5tb2RlKSA/IGN0eC5tb2RlIDogbW9kZXNbY3R4Lm1vZGVdO1xuXG4gIHJldHVybiBjb21wdXRlKHtcbiAgICBlcnJvcnM6IGN0eC5tZXNzYWdlcyxcbiAgICB2YWx1ZTogY3R4LnZhbHVlLFxuICAgIGZsYWdzOiBjdHguZmxhZ3NcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uUmVuZGVyVXBkYXRlIChtb2RlbCkge1xuICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IG1vZGVsLnZhbHVlO1xuICB9XG5cbiAgdmFyIHZhbGlkYXRlTm93ID0gc2hvdWxkVmFsaWRhdGUodGhpcywgbW9kZWwpO1xuICB0aGlzLl9uZWVkc1ZhbGlkYXRpb24gPSBmYWxzZTtcbiAgdGhpcy52YWx1ZSA9IG1vZGVsLnZhbHVlO1xuICB0aGlzLl9pZ25vcmVJbW1lZGlhdGUgPSB0cnVlO1xuXG4gIGlmICghdmFsaWRhdGVOb3cpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLnZhbGlkYXRlU2lsZW50KCkudGhlbih0aGlzLmltbWVkaWF0ZSB8fCB0aGlzLmZsYWdzLnZhbGlkYXRlZCA/IHRoaXMuYXBwbHlSZXN1bHQgOiBmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfSk7XG59XG5cbi8vIENyZWF0ZXMgdGhlIGNvbW1vbiBoYW5kbGVycyBmb3IgYSB2YWxpZGF0YWJsZSBjb250ZXh0LlxuZnVuY3Rpb24gY3JlYXRlQ29tbW9uSGFuZGxlcnMgKGN0eCkge1xuICB2YXIgb25JbnB1dCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgY3R4LnN5bmNWYWx1ZShlKTsgLy8gdHJhY2sgYW5kIGtlZXAgdGhlIHZhbHVlIHVwZGF0ZWQuXG4gICAgY3R4LnNldEZsYWdzKHsgZGlydHk6IHRydWUsIHByaXN0aW5lOiBmYWxzZSB9KTtcbiAgfTtcblxuICAvLyBCbHVyIGV2ZW50IGxpc3RlbmVyLlxuICB2YXIgb25CbHVyID0gZnVuY3Rpb24gKCkge1xuICAgIGN0eC5zZXRGbGFncyh7IHRvdWNoZWQ6IHRydWUsIHVudG91Y2hlZDogZmFsc2UgfSk7XG4gIH07XG5cbiAgdmFyIG9uVmFsaWRhdGUgPSBjdHguJHZlZUhhbmRsZXI7XG4gIHZhciBtb2RlID0gY29tcHV0ZU1vZGVTZXR0aW5nKGN0eCk7XG5cbiAgLy8gSGFuZGxlIGRlYm91bmNlIGNoYW5nZXMuXG4gIGlmICghb25WYWxpZGF0ZSB8fCBjdHguJHZlZURlYm91bmNlICE9PSBjdHguZGVib3VuY2UpIHtcbiAgICBvblZhbGlkYXRlID0gZGVib3VuY2UoXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGN0eC4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBwZW5kaW5nUHJvbWlzZSA9IGN0eC52YWxpZGF0ZVNpbGVudCgpO1xuICAgICAgICAgIC8vIGF2b2lkcyByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiBzdWNjZXNzaXZlIHZhbGlkYXRpb25zLlxuICAgICAgICAgIGN0eC5fcGVuZGluZ1ZhbGlkYXRpb24gPSBwZW5kaW5nUHJvbWlzZTtcbiAgICAgICAgICBwZW5kaW5nUHJvbWlzZS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChwZW5kaW5nUHJvbWlzZSA9PT0gY3R4Ll9wZW5kaW5nVmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICBjdHguYXBwbHlSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgY3R4Ll9wZW5kaW5nVmFsaWRhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIG1vZGUuZGVib3VuY2UgfHwgY3R4LmRlYm91bmNlXG4gICAgKTtcblxuICAgIC8vIENhY2hlIHRoZSBoYW5kbGVyIHNvIHdlIGRvbid0IGNyZWF0ZSBpdCBlYWNoIHRpbWUuXG4gICAgY3R4LiR2ZWVIYW5kbGVyID0gb25WYWxpZGF0ZTtcbiAgICAvLyBjYWNoZSB0aGUgZGVib3VuY2UgdmFsdWUgc28gd2UgZGV0ZWN0IGlmIGl0IHdhcyBjaGFuZ2VkLlxuICAgIGN0eC4kdmVlRGVib3VuY2UgPSBjdHguZGVib3VuY2U7XG4gIH1cblxuICByZXR1cm4geyBvbklucHV0OiBvbklucHV0LCBvbkJsdXI6IG9uQmx1ciwgb25WYWxpZGF0ZTogb25WYWxpZGF0ZSB9O1xufVxuXG4vLyBBZGRzIGFsbCBwbHVnaW4gbGlzdGVuZXJzIHRvIHRoZSB2bm9kZS5cbmZ1bmN0aW9uIGFkZExpc3RlbmVycyAobm9kZSkge1xuICB2YXIgbW9kZWwgPSBmaW5kTW9kZWwobm9kZSk7XG4gIC8vIGNhY2hlIHRoZSBpbnB1dCBldmVudE5hbWUuXG4gIHRoaXMuX2lucHV0RXZlbnROYW1lID0gdGhpcy5faW5wdXRFdmVudE5hbWUgfHwgZ2V0SW5wdXRFdmVudE5hbWUobm9kZSwgbW9kZWwpO1xuXG4gIG9uUmVuZGVyVXBkYXRlLmNhbGwodGhpcywgbW9kZWwpO1xuXG4gIHZhciByZWYgPSBjcmVhdGVDb21tb25IYW5kbGVycyh0aGlzKTtcbiAgdmFyIG9uSW5wdXQgPSByZWYub25JbnB1dDtcbiAgdmFyIG9uQmx1ciA9IHJlZi5vbkJsdXI7XG4gIHZhciBvblZhbGlkYXRlID0gcmVmLm9uVmFsaWRhdGU7XG4gIGFkZFZOb2RlTGlzdGVuZXIobm9kZSwgdGhpcy5faW5wdXRFdmVudE5hbWUsIG9uSW5wdXQpO1xuICBhZGRWTm9kZUxpc3RlbmVyKG5vZGUsICdibHVyJywgb25CbHVyKTtcblxuICAvLyBhZGQgdGhlIHZhbGlkYXRpb24gbGlzdGVuZXJzLlxuICB0aGlzLm5vcm1hbGl6ZWRFdmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZ0KSB7XG4gICAgYWRkVk5vZGVMaXN0ZW5lcihub2RlLCBldnQsIG9uVmFsaWRhdGUpO1xuICB9KTtcblxuICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmFsdWVzTG9va3VwIChjdHgpIHtcbiAgdmFyIHByb3ZpZGVycyA9IGN0eC4kX3ZlZU9ic2VydmVyLnJlZnM7XG5cbiAgcmV0dXJuIGN0eC5maWVsZERlcHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGRlcE5hbWUpIHtcbiAgICBpZiAoIXByb3ZpZGVyc1tkZXBOYW1lXSkge1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG5cbiAgICBhY2NbZGVwTmFtZV0gPSBwcm92aWRlcnNbZGVwTmFtZV0udmFsdWU7XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVJlbmRlcmluZ0NvbnRleHRSZWZzIChjdHgpIHtcbiAgLy8gSURzIHNob3VsZCBub3QgYmUgbnVsbGFibGUuXG4gIGlmIChpc051bGxPclVuZGVmaW5lZChjdHguaWQpICYmIGN0eC5pZCA9PT0gY3R4LnZpZCkge1xuICAgIGN0eC5pZCA9IFBST1ZJREVSX0NPVU5URVI7XG4gICAgUFJPVklERVJfQ09VTlRFUisrO1xuICB9XG5cbiAgdmFyIGlkID0gY3R4LmlkO1xuICB2YXIgdmlkID0gY3R4LnZpZDtcbiAgLy8gTm90aGluZyBoYXMgY2hhbmdlZC5cbiAgaWYgKGN0eC5pc0RlYWN0aXZhdGVkIHx8IChpZCA9PT0gdmlkICYmIGN0eC4kX3ZlZU9ic2VydmVyLnJlZnNbaWRdKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHZpZCB3YXMgY2hhbmdlZC5cbiAgaWYgKGlkICE9PSB2aWQgJiYgY3R4LiRfdmVlT2JzZXJ2ZXIucmVmc1tpZF0gPT09IGN0eCkge1xuICAgIGN0eC4kX3ZlZU9ic2VydmVyLnVuc3Vic2NyaWJlKHsgdmlkOiBpZCB9KTtcbiAgfVxuXG4gIGN0eC4kX3ZlZU9ic2VydmVyLnN1YnNjcmliZShjdHgpO1xuICBjdHguaWQgPSB2aWQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU9ic2VydmVyICgpIHtcbiAgcmV0dXJuIHtcbiAgICByZWZzOiB7fSxcbiAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZSAoY3R4KSB7XG4gICAgICB0aGlzLnJlZnNbY3R4LnZpZF0gPSBjdHg7XG4gICAgfSxcbiAgICB1bnN1YnNjcmliZTogZnVuY3Rpb24gdW5zdWJzY3JpYmUgKGN0eCkge1xuICAgICAgZGVsZXRlIHRoaXMucmVmc1tjdHgudmlkXTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHdhdGNoQ3Jvc3NGaWVsZERlcCAoY3R4LCBkZXBOYW1lLCB3aXRoSG9va3MpIHtcbiAgaWYgKCB3aXRoSG9va3MgPT09IHZvaWQgMCApIHdpdGhIb29rcyA9IHRydWU7XG5cbiAgdmFyIHByb3ZpZGVycyA9IGN0eC4kX3ZlZU9ic2VydmVyLnJlZnM7XG4gIGlmICghY3R4Ll92ZWVXYXRjaGVycykge1xuICAgIGN0eC5fdmVlV2F0Y2hlcnMgPSB7fTtcbiAgfVxuXG4gIGlmICghcHJvdmlkZXJzW2RlcE5hbWVdICYmIHdpdGhIb29rcykge1xuICAgIHJldHVybiBjdHguJG9uY2UoJ2hvb2s6bW91bnRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhdGNoQ3Jvc3NGaWVsZERlcChjdHgsIGRlcE5hbWUsIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmICghaXNDYWxsYWJsZShjdHguX3ZlZVdhdGNoZXJzW2RlcE5hbWVdKSAmJiBwcm92aWRlcnNbZGVwTmFtZV0pIHtcbiAgICBjdHguX3ZlZVdhdGNoZXJzW2RlcE5hbWVdID0gcHJvdmlkZXJzW2RlcE5hbWVdLiR3YXRjaCgndmFsdWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoY3R4LmZsYWdzLnZhbGlkYXRlZCkge1xuICAgICAgICBjdHguX25lZWRzVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgIGN0eC52YWxpZGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbnZhciBmbGFnTWVyZ2luZ1N0cmF0ZWd5ID0ge1xuICBwcmlzdGluZTogJ2V2ZXJ5JyxcbiAgZGlydHk6ICdzb21lJyxcbiAgdG91Y2hlZDogJ3NvbWUnLFxuICB1bnRvdWNoZWQ6ICdldmVyeScsXG4gIHZhbGlkOiAnZXZlcnknLFxuICBpbnZhbGlkOiAnc29tZScsXG4gIHBlbmRpbmc6ICdzb21lJyxcbiAgdmFsaWRhdGVkOiAnZXZlcnknXG59O1xuXG5mdW5jdGlvbiBtZXJnZUZsYWdzIChsaHMsIHJocywgc3RyYXRlZ3kpIHtcbiAgdmFyIHN0cmF0TmFtZSA9IGZsYWdNZXJnaW5nU3RyYXRlZ3lbc3RyYXRlZ3ldO1xuXG4gIHJldHVybiBbbGhzLCByaHNdW3N0cmF0TmFtZV0oZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGY7IH0pO1xufVxuXG52YXIgT0JTRVJWRVJfQ09VTlRFUiA9IDA7XG5cbnZhciBWYWxpZGF0aW9uT2JzZXJ2ZXIgPSB7XG4gIG5hbWU6ICdWYWxpZGF0aW9uT2JzZXJ2ZXInLFxuICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJF92ZWVPYnNlcnZlcjogdGhpc1xuICAgIH07XG4gIH0sXG4gIGluamVjdDoge1xuICAgICRfdmVlT2JzZXJ2ZXI6IHtcbiAgICAgIGZyb206ICckX3ZlZU9ic2VydmVyJyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIGRlZmF1bHQkMSAoKSB7XG4gICAgICAgIGlmICghdGhpcy4kdm5vZGUuY29udGV4dC4kX3ZlZU9ic2VydmVyKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy4kdm5vZGUuY29udGV4dC4kX3ZlZU9ic2VydmVyO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcHJvcHM6IHtcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdzcGFuJ1xuICAgIH0sXG4gICAgc2xpbToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgIHZpZDogKFwib2JzX1wiICsgKE9CU0VSVkVSX0NPVU5URVIrKykpLFxuICAgIHJlZnM6IHt9LFxuICAgIG9ic2VydmVyczogW10sXG4gICAgcGVyc2lzdGVkU3RvcmU6IHt9XG4gIH0pOyB9LFxuICBjb21wdXRlZDoge1xuICAgIGN0eDogZnVuY3Rpb24gY3R4ICgpIHtcbiAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICB2YXIgY3R4ID0ge1xuICAgICAgICBlcnJvcnM6IHt9LFxuICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcyQxLnZhbGlkYXRlKGFyZyk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gdGhlbiAodGhlbmFibGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbihmdW5jdGlvbiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzICYmIGlzQ2FsbGFibGUodGhlbmFibGUpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoZW5hYmxlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEucmVzZXQoKTsgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHZhbHVlcyh0aGlzLnJlZnMpLmNvbmNhdCggT2JqZWN0LmtleXModGhpcy5wZXJzaXN0ZWRTdG9yZSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmlkOiBrZXksXG4gICAgICAgICAgICBmbGFnczogdGhpcyQxLnBlcnNpc3RlZFN0b3JlW2tleV0uZmxhZ3MsXG4gICAgICAgICAgICBtZXNzYWdlczogdGhpcyQxLnBlcnNpc3RlZFN0b3JlW2tleV0uZXJyb3JzXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMub2JzZXJ2ZXJzICkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHByb3ZpZGVyKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGZsYWdNZXJnaW5nU3RyYXRlZ3kpLmZvckVhY2goZnVuY3Rpb24gKGZsYWcpIHtcbiAgICAgICAgICB2YXIgZmxhZ3MgPSBwcm92aWRlci5mbGFncyB8fCBwcm92aWRlci5jdHg7XG4gICAgICAgICAgaWYgKCEoZmxhZyBpbiBhY2MpKSB7XG4gICAgICAgICAgICBhY2NbZmxhZ10gPSBmbGFnc1tmbGFnXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhY2NbZmxhZ10gPSBtZXJnZUZsYWdzKGFjY1tmbGFnXSwgZmxhZ3NbZmxhZ10sIGZsYWcpO1xuICAgICAgICB9KTtcblxuICAgICAgICBhY2MuZXJyb3JzW3Byb3ZpZGVyLnZpZF0gPSBwcm92aWRlci5tZXNzYWdlcyB8fCB2YWx1ZXMocHJvdmlkZXIuY3R4LmVycm9ycykucmVkdWNlKGZ1bmN0aW9uIChlcnJzLCBvYnNFcnJvcnMpIHtcbiAgICAgICAgICByZXR1cm4gZXJycy5jb25jYXQob2JzRXJyb3JzKTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBjdHgpO1xuICAgIH1cbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCAoKSB7XG4gICAgaWYgKHRoaXMuJF92ZWVPYnNlcnZlcikge1xuICAgICAgdGhpcy4kX3ZlZU9ic2VydmVyLnN1YnNjcmliZSh0aGlzLCAnb2JzZXJ2ZXInKTtcbiAgICB9XG4gIH0sXG4gIGFjdGl2YXRlZDogZnVuY3Rpb24gYWN0aXZhdGVkICgpIHtcbiAgICBpZiAodGhpcy4kX3ZlZU9ic2VydmVyKSB7XG4gICAgICB0aGlzLiRfdmVlT2JzZXJ2ZXIuc3Vic2NyaWJlKHRoaXMsICdvYnNlcnZlcicpO1xuICAgIH1cbiAgfSxcbiAgZGVhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGRlYWN0aXZhdGVkICgpIHtcbiAgICBpZiAodGhpcy4kX3ZlZU9ic2VydmVyKSB7XG4gICAgICB0aGlzLiRfdmVlT2JzZXJ2ZXIudW5zdWJzY3JpYmUodGhpcywgJ29ic2VydmVyJyk7XG4gICAgfVxuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95ICgpIHtcbiAgICBpZiAodGhpcy4kX3ZlZU9ic2VydmVyKSB7XG4gICAgICB0aGlzLiRfdmVlT2JzZXJ2ZXIudW5zdWJzY3JpYmUodGhpcywgJ29ic2VydmVyJyk7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciBzbG90cyA9IHRoaXMuJHNsb3RzLmRlZmF1bHQgfHwgdGhpcy4kc2NvcGVkU2xvdHMuZGVmYXVsdCB8fCBbXTtcbiAgICBpZiAoaXNDYWxsYWJsZShzbG90cykpIHtcbiAgICAgIHNsb3RzID0gc2xvdHModGhpcy5jdHgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNsaW0gPyBjcmVhdGVSZW5kZXJsZXNzKGgsIHNsb3RzKSA6IGgodGhpcy50YWcsIHsgb246IHRoaXMuJGxpc3RlbmVycywgYXR0cnM6IHRoaXMuJGF0dHJzIH0sIHNsb3RzKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vic2NyaWJlIChzdWJzY3JpYmVyLCBraW5kKSB7XG4gICAgICB2YXIgb2JqO1xuXG4gICAgICBpZiAoIGtpbmQgPT09IHZvaWQgMCApIGtpbmQgPSAncHJvdmlkZXInO1xuICAgICAgaWYgKGtpbmQgPT09ICdvYnNlcnZlcicpIHtcbiAgICAgICAgdGhpcy5vYnNlcnZlcnMucHVzaChzdWJzY3JpYmVyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlZnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJlZnMsICggb2JqID0ge30sIG9ialtzdWJzY3JpYmVyLnZpZF0gPSBzdWJzY3JpYmVyLCBvYmogKSk7XG4gICAgICBpZiAoc3Vic2NyaWJlci5wZXJzaXN0ICYmIHRoaXMucGVyc2lzdGVkU3RvcmVbc3Vic2NyaWJlci52aWRdKSB7XG4gICAgICAgIHRoaXMucmVzdG9yZVByb3ZpZGVyU3RhdGUoc3Vic2NyaWJlcik7XG4gICAgICB9XG4gICAgfSxcbiAgICB1bnN1YnNjcmliZTogZnVuY3Rpb24gdW5zdWJzY3JpYmUgKHJlZiwga2luZCkge1xuICAgICAgdmFyIHZpZCA9IHJlZi52aWQ7XG4gICAgICBpZiAoIGtpbmQgPT09IHZvaWQgMCApIGtpbmQgPSAncHJvdmlkZXInO1xuXG4gICAgICBpZiAoa2luZCA9PT0gJ3Byb3ZpZGVyJykge1xuICAgICAgICB0aGlzLnJlbW92ZVByb3ZpZGVyKHZpZCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBpZHggPSBmaW5kSW5kZXgodGhpcy5vYnNlcnZlcnMsIGZ1bmN0aW9uIChvKSB7IHJldHVybiBvLnZpZCA9PT0gdmlkOyB9KTtcbiAgICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uIHZhbGlkYXRlIChyZWYpIHtcbiAgICAgIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7IHNpbGVudDogZmFsc2UgfTtcbiAgICAgIHZhciBzaWxlbnQgPSByZWYuc2lsZW50O1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwodmFsdWVzKHRoaXMucmVmcykubWFwKGZ1bmN0aW9uIChyZWYpIHsgcmV0dXJuIHJlZltzaWxlbnQgPyAndmFsaWRhdGVTaWxlbnQnIDogJ3ZhbGlkYXRlJ10oKS50aGVuKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnZhbGlkOyB9KTsgfSkuY29uY2F0KCB0aGlzLm9ic2VydmVycy5tYXAoZnVuY3Rpb24gKG9icykgeyByZXR1cm4gb2JzLnZhbGlkYXRlKHsgc2lsZW50OiBzaWxlbnQgfSk7IH0pXG4gICAgICApKS50aGVuKGZ1bmN0aW9uIChyZXN1bHRzKSB7IHJldHVybiByZXN1bHRzLmV2ZXJ5KGZ1bmN0aW9uIChyKSB7IHJldHVybiByOyB9KTsgfSk7XG4gICAgfSxcbiAgICByZXNldDogZnVuY3Rpb24gcmVzZXQgKCkge1xuICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMucGVyc2lzdGVkU3RvcmUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB0aGlzJDEuJGRlbGV0ZSh0aGlzJDEucGVyc2lzdGVkU3RvcmUsIGtleSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB2YWx1ZXModGhpcy5yZWZzKS5jb25jYXQoIHRoaXMub2JzZXJ2ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHsgcmV0dXJuIHJlZi5yZXNldCgpOyB9KTtcbiAgICB9LFxuICAgIHJlc3RvcmVQcm92aWRlclN0YXRlOiBmdW5jdGlvbiByZXN0b3JlUHJvdmlkZXJTdGF0ZSAocHJvdmlkZXIpIHtcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMucGVyc2lzdGVkU3RvcmVbcHJvdmlkZXIudmlkXTtcbiAgICAgIHByb3ZpZGVyLnNldEZsYWdzKHN0YXRlLmZsYWdzKTtcbiAgICAgIHByb3ZpZGVyLmFwcGx5UmVzdWx0KHN0YXRlKTtcbiAgICAgIHRoaXMuJGRlbGV0ZSh0aGlzLnBlcnNpc3RlZFN0b3JlLCBwcm92aWRlci52aWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlUHJvdmlkZXI6IGZ1bmN0aW9uIHJlbW92ZVByb3ZpZGVyICh2aWQpIHtcbiAgICAgIHZhciBvYmo7XG5cbiAgICAgIHZhciBwcm92aWRlciA9IHRoaXMucmVmc1t2aWRdO1xuICAgICAgLy8gc2F2ZSBpdCBmb3IgdGhlIG5leHQgdGltZS5cbiAgICAgIGlmIChwcm92aWRlciAmJiBwcm92aWRlci5wZXJzaXN0KSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgaWYgKHZpZC5pbmRleE9mKCdfdmVlXycpID09PSAwKSB7XG4gICAgICAgICAgICB3YXJuKCdQbGVhc2UgcHJvdmlkZSBhIGB2aWRgIHByb3Agd2hlbiB1c2luZyBgcGVyc2lzdGAsIHRoZXJlIG1pZ2h0IGJlIHVuZXhwZWN0ZWQgaXNzdWVzIG90aGVyd2lzZS4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBlcnNpc3RlZFN0b3JlID0gYXNzaWduKHt9LCB0aGlzLnBlcnNpc3RlZFN0b3JlLCAoIG9iaiA9IHt9LCBvYmpbdmlkXSA9IHtcbiAgICAgICAgICAgIGZsYWdzOiBwcm92aWRlci5mbGFncyxcbiAgICAgICAgICAgIGVycm9yczogcHJvdmlkZXIubWVzc2FnZXMsXG4gICAgICAgICAgICBmYWlsZWRSdWxlczogcHJvdmlkZXIuZmFpbGVkUnVsZXNcbiAgICAgICAgICB9LCBvYmogKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGRlbGV0ZSh0aGlzLnJlZnMsIHZpZCk7XG4gICAgfSxcbiAgfVxufTtcblxuZnVuY3Rpb24gd2l0aFZhbGlkYXRpb24gKGNvbXBvbmVudCwgY3R4VG9Qcm9wcykge1xuICBpZiAoIGN0eFRvUHJvcHMgPT09IHZvaWQgMCApIGN0eFRvUHJvcHMgPSBudWxsO1xuXG4gIHZhciBvcHRpb25zID0gaXNDYWxsYWJsZShjb21wb25lbnQpID8gY29tcG9uZW50Lm9wdGlvbnMgOiBjb21wb25lbnQ7XG4gIG9wdGlvbnMuJF9fdmVlSW5qZWN0ID0gZmFsc2U7XG4gIHZhciBob2MgPSB7XG4gICAgbmFtZTogKChvcHRpb25zLm5hbWUgfHwgJ0Fub255bW91c0hvYycpICsgXCJXaXRoVmFsaWRhdGlvblwiKSxcbiAgICBwcm9wczogYXNzaWduKHt9LCBWYWxpZGF0aW9uUHJvdmlkZXIucHJvcHMpLFxuICAgIGRhdGE6IFZhbGlkYXRpb25Qcm92aWRlci5kYXRhLFxuICAgIGNvbXB1dGVkOiBhc3NpZ24oe30sIFZhbGlkYXRpb25Qcm92aWRlci5jb21wdXRlZCksXG4gICAgbWV0aG9kczogYXNzaWduKHt9LCBWYWxpZGF0aW9uUHJvdmlkZXIubWV0aG9kcyksXG4gICAgJF9fdmVlSW5qZWN0OiBmYWxzZSxcbiAgICBiZWZvcmVEZXN0cm95OiBWYWxpZGF0aW9uUHJvdmlkZXIuYmVmb3JlRGVzdHJveSxcbiAgICBpbmplY3Q6IFZhbGlkYXRpb25Qcm92aWRlci5pbmplY3RcbiAgfTtcblxuICAvLyBEZWZhdWx0IGN0eCBjb252ZXJ0cyBjdHggcHJvcHMgdG8gY29tcG9uZW50IHByb3BzLlxuICBpZiAoIWN0eFRvUHJvcHMpIHtcbiAgICBjdHhUb1Byb3BzID0gZnVuY3Rpb24gKGN0eCkgeyByZXR1cm4gY3R4OyB9O1xuICB9XG5cbiAgdmFyIGV2ZW50TmFtZSA9IChvcHRpb25zLm1vZGVsICYmIG9wdGlvbnMubW9kZWwuZXZlbnQpIHx8ICdpbnB1dCc7XG5cbiAgaG9jLnJlbmRlciA9IGZ1bmN0aW9uIChoKSB7XG4gICAgdmFyIG9iajtcblxuICAgIHRoaXMucmVnaXN0ZXJGaWVsZCgpO1xuICAgIHZhciB2Y3R4ID0gY3JlYXRlVmFsaWRhdGlvbkN0eCh0aGlzKTtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXNzaWduKHt9LCB0aGlzLiRsaXN0ZW5lcnMpO1xuXG4gICAgdmFyIG1vZGVsID0gZmluZE1vZGVsKHRoaXMuJHZub2RlKTtcbiAgICB0aGlzLl9pbnB1dEV2ZW50TmFtZSA9IHRoaXMuX2lucHV0RXZlbnROYW1lIHx8IGdldElucHV0RXZlbnROYW1lKHRoaXMuJHZub2RlLCBtb2RlbCk7XG4gICAgb25SZW5kZXJVcGRhdGUuY2FsbCh0aGlzLCBtb2RlbCk7XG5cbiAgICB2YXIgcmVmID0gY3JlYXRlQ29tbW9uSGFuZGxlcnModGhpcyk7XG4gICAgdmFyIG9uSW5wdXQgPSByZWYub25JbnB1dDtcbiAgICB2YXIgb25CbHVyID0gcmVmLm9uQmx1cjtcbiAgICB2YXIgb25WYWxpZGF0ZSA9IHJlZi5vblZhbGlkYXRlO1xuXG4gICAgbWVyZ2VWTm9kZUxpc3RlbmVycyhsaXN0ZW5lcnMsIGV2ZW50TmFtZSwgb25JbnB1dCk7XG4gICAgbWVyZ2VWTm9kZUxpc3RlbmVycyhsaXN0ZW5lcnMsICdibHVyJywgb25CbHVyKTtcbiAgICB0aGlzLm5vcm1hbGl6ZWRFdmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZ0LCBpZHgpIHtcbiAgICAgIG1lcmdlVk5vZGVMaXN0ZW5lcnMobGlzdGVuZXJzLCBldnQsIG9uVmFsaWRhdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gUHJvcHMgYXJlIGFueSBhdHRycyBub3QgYXNzb2NpYXRlZCB3aXRoIFZhbGlkYXRpb25Qcm92aWRlciBQbHVzIHRoZSBtb2RlbCBwcm9wLlxuICAgIC8vIFdBUk5JTkc6IEFjY2lkZW50YWwgcHJvcCBvdmVyd3JpdGUgd2lsbCBwcm9iYWJseSBoYXBwZW4uXG4gICAgdmFyIHJlZiQxID0gZmluZE1vZGVsQ29uZmlnKHRoaXMuJHZub2RlKSB8fCB7IHByb3A6ICd2YWx1ZScgfTtcbiAgICB2YXIgcHJvcCA9IHJlZiQxLnByb3A7XG4gICAgdmFyIHByb3BzID0gYXNzaWduKHt9LCB0aGlzLiRhdHRycywgKCBvYmogPSB7fSwgb2JqW3Byb3BdID0gbW9kZWwudmFsdWUsIG9iaiApLCBjdHhUb1Byb3BzKHZjdHgpKTtcblxuICAgIHJldHVybiBoKG9wdGlvbnMsIHtcbiAgICAgIGF0dHJzOiB0aGlzLiRhdHRycyxcbiAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgIG9uOiBsaXN0ZW5lcnNcbiAgICB9LCBub3JtYWxpemVTbG90cyh0aGlzLiRzbG90cywgdGhpcy4kdm5vZGUuY29udGV4dCkpO1xuICB9O1xuXG4gIHJldHVybiBob2M7XG59XG5cbnZhciB2ZXJzaW9uID0gJzIuMi4xNSc7XG5cbk9iamVjdC5rZXlzKFJ1bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7XG4gIFZhbGlkYXRvci5leHRlbmQocnVsZSwgUnVsZXNbcnVsZV0udmFsaWRhdGUsIGFzc2lnbih7fSwgUnVsZXNbcnVsZV0ub3B0aW9ucywgeyBwYXJhbU5hbWVzOiBSdWxlc1tydWxlXS5wYXJhbU5hbWVzIH0pKTtcbn0pO1xuXG4vLyBNZXJnZSB0aGUgZW5nbGlzaCBtZXNzYWdlcy5cblZhbGlkYXRvci5sb2NhbGl6ZSh7IGVuOiBsb2NhbGUgfSk7XG5cbnZhciBpbnN0YWxsID0gVmVlVmFsaWRhdGUkMS5pbnN0YWxsO1xuXG5WZWVWYWxpZGF0ZSQxLnZlcnNpb24gPSB2ZXJzaW9uO1xuVmVlVmFsaWRhdGUkMS5tYXBGaWVsZHMgPSBtYXBGaWVsZHM7XG5WZWVWYWxpZGF0ZSQxLlZhbGlkYXRpb25Qcm92aWRlciA9IFZhbGlkYXRpb25Qcm92aWRlcjtcblZlZVZhbGlkYXRlJDEuVmFsaWRhdGlvbk9ic2VydmVyID0gVmFsaWRhdGlvbk9ic2VydmVyO1xuVmVlVmFsaWRhdGUkMS53aXRoVmFsaWRhdGlvbiA9IHdpdGhWYWxpZGF0aW9uO1xuXG5leHBvcnQgZGVmYXVsdCBWZWVWYWxpZGF0ZSQxO1xuZXhwb3J0IHsgRXJyb3JCYWcsIFJ1bGVzLCBWYWxpZGF0aW9uT2JzZXJ2ZXIsIFZhbGlkYXRpb25Qcm92aWRlciwgVmFsaWRhdG9yLCBkaXJlY3RpdmUsIGluc3RhbGwsIG1hcEZpZWxkcywgbWl4aW4sIHZlcnNpb24sIHdpdGhWYWxpZGF0aW9uIH07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vee-validate/dist/vee-validate.esm.js\n");

/***/ }),

/***/ "./node_modules/vue-apexcharts/dist/vue-apexcharts.js":
/*!************************************************************!*\
  !*** ./node_modules/vue-apexcharts/dist/vue-apexcharts.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("(function (global, factory) {\n   true ? module.exports = factory(__webpack_require__(/*! apexcharts */ \"./node_modules/apexcharts/dist/apexcharts.esm.js\")) :\n  undefined;\n}(this, (function (ApexCharts) { 'use strict';\n\n  ApexCharts = ApexCharts && ApexCharts.hasOwnProperty('default') ? ApexCharts['default'] : ApexCharts;\n\n  function _typeof(obj) {\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function (obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function (obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  var ApexChartsComponent = {\n    props: {\n      options: {\n        type: Object\n      },\n      type: {\n        type: String\n      },\n      series: {\n        type: Array,\n        required: true,\n        default: function _default() {\n          return [];\n        }\n      },\n      width: {\n        default: '100%'\n      },\n      height: {\n        default: 'auto'\n      }\n    },\n    data: function data() {\n      return {\n        chart: null\n      };\n    },\n    beforeMount: function beforeMount() {\n      window.ApexCharts = ApexCharts;\n    },\n    mounted: function mounted() {\n      this.init();\n    },\n    created: function created() {\n      var _this = this;\n\n      this.$watch('options', function (options) {\n        if (!_this.chart && options) {\n          _this.init();\n        } else {\n          _this.chart.updateOptions(_this.options);\n        }\n      });\n      this.$watch('series', function (series) {\n        if (!_this.chart && series) {\n          _this.init();\n        } else {\n          _this.chart.updateSeries(_this.series);\n        }\n      });\n      var watched = ['type', 'width', 'height'];\n      watched.forEach(function (prop) {\n        _this.$watch(prop, function () {\n          _this.refresh();\n        });\n      });\n    },\n    beforeDestroy: function beforeDestroy() {\n      if (!this.chart) {\n        return;\n      }\n\n      this.destroy();\n    },\n    render: function render(createElement) {\n      return createElement('div');\n    },\n    methods: {\n      init: function init() {\n        var _this2 = this;\n\n        var newOptions = {\n          chart: {\n            type: this.type || this.options.chart.type || 'line',\n            height: this.height,\n            width: this.width,\n            events: {}\n          },\n          series: this.series\n        };\n        Object.keys(this.$listeners).forEach(function (evt) {\n          newOptions.chart.events[evt] = _this2.$listeners[evt];\n        });\n        var config = this.extend(this.options, newOptions);\n        this.chart = new ApexCharts(this.$el, config);\n        this.chart.render();\n      },\n      isObject: function isObject(item) {\n        return item && _typeof(item) === 'object' && !Array.isArray(item) && item != null;\n      },\n      extend: function extend(target, source) {\n        var _this3 = this;\n\n        if (typeof Object.assign !== 'function') {\n          (function () {\n            Object.assign = function (target) {\n              // We must check against these specific cases.\n              if (target === undefined || target === null) {\n                throw new TypeError('Cannot convert undefined or null to object');\n              }\n\n              var output = Object(target);\n\n              for (var index = 1; index < arguments.length; index++) {\n                var _source = arguments[index];\n\n                if (_source !== undefined && _source !== null) {\n                  for (var nextKey in _source) {\n                    if (_source.hasOwnProperty(nextKey)) {\n                      output[nextKey] = _source[nextKey];\n                    }\n                  }\n                }\n              }\n\n              return output;\n            };\n          })();\n        }\n\n        var output = Object.assign({}, target);\n\n        if (this.isObject(target) && this.isObject(source)) {\n          Object.keys(source).forEach(function (key) {\n            if (_this3.isObject(source[key])) {\n              if (!(key in target)) {\n                Object.assign(output, _defineProperty({}, key, source[key]));\n              } else {\n                output[key] = _this3.extend(target[key], source[key]);\n              }\n            } else {\n              Object.assign(output, _defineProperty({}, key, source[key]));\n            }\n          });\n        }\n\n        return output;\n      },\n      refresh: function refresh() {\n        this.destroy();\n        this.init();\n      },\n      destroy: function destroy() {\n        this.chart.destroy();\n      },\n      updateSeries: function updateSeries(newSeries, animate) {\n        this.chart.updateSeries(newSeries, animate);\n      },\n      updateOptions: function updateOptions(newOptions, redrawPaths, animate) {\n        this.chart.updateOptions(newOptions, redrawPaths, animate);\n      },\n      toggleSeries: function toggleSeries(seriesName) {\n        this.chart.toggleSeries(seriesName);\n      },\n      appendSeries: function appendSeries(newSeries, animate) {\n        this.chart.appendSeries(newSeries, animate);\n      },\n      resetSeries: function resetSeries() {\n        this.chart.resetSeries();\n      },\n      toggleDataPointSelection: function toggleDataPointSelection(seriesIndex, dataPointIndex) {\n        this.chart.toggleDataPointSelection(seriesIndex, dataPointIndex);\n      },\n      appendData: function appendData(newData) {\n        this.chart.appendData(newData);\n      },\n      addText: function addText(options) {\n        this.chart.addText(options);\n      },\n      dataURI: function dataURI() {\n        return this.chart.dataURI();\n      },\n      addXaxisAnnotation: function addXaxisAnnotation(options, pushToMemory) {\n        this.chart.addXaxisAnnotation(options, pushToMemory);\n      },\n      addYaxisAnnotation: function addYaxisAnnotation(options, pushToMemory) {\n        this.chart.addYaxisAnnotation(options, pushToMemory);\n      },\n      addPointAnnotation: function addPointAnnotation(options, pushToMemory) {\n        this.chart.addPointAnnotation(options, pushToMemory);\n      },\n      clearAnnotations: function clearAnnotations() {\n        this.chart.clearAnnotations();\n      }\n    }\n  };\n\n  var VueApexCharts = ApexChartsComponent;\n  window.ApexCharts = ApexCharts;\n\n  VueApexCharts.install = function (Vue) {\n    //adding a global method or property\n    Vue.ApexCharts = ApexCharts;\n    window.ApexCharts = ApexCharts; // add the instance method\n\n    Object.defineProperty(Vue.prototype, '$apexcharts', {\n      get: function get() {\n        return ApexCharts;\n      }\n    });\n  };\n\n  return VueApexCharts;\n\n})));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWFwZXhjaGFydHMvZGlzdC92dWUtYXBleGNoYXJ0cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtYXBleGNoYXJ0cy9kaXN0L3Z1ZS1hcGV4Y2hhcnRzLmpzPzEzMjEiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoJ2FwZXhjaGFydHMnKSkgOlxuICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydhcGV4Y2hhcnRzJ10sIGZhY3RvcnkpIDpcbiAgKGdsb2JhbC5WdWVBcGV4Q2hhcnRzID0gZmFjdG9yeShnbG9iYWwuQXBleENoYXJ0cykpO1xufSh0aGlzLCAoZnVuY3Rpb24gKEFwZXhDaGFydHMpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gIEFwZXhDaGFydHMgPSBBcGV4Q2hhcnRzICYmIEFwZXhDaGFydHMuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHQnKSA/IEFwZXhDaGFydHNbJ2RlZmF1bHQnXSA6IEFwZXhDaGFydHM7XG5cbiAgZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICAgIF90eXBlb2YgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3R5cGVvZiA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBfdHlwZW9mKG9iaik7XG4gIH1cblxuICBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgQXBleENoYXJ0c0NvbXBvbmVudCA9IHtcbiAgICBwcm9wczoge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICB0eXBlOiBPYmplY3RcbiAgICAgIH0sXG4gICAgICB0eXBlOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZ1xuICAgICAgfSxcbiAgICAgIHNlcmllczoge1xuICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHdpZHRoOiB7XG4gICAgICAgIGRlZmF1bHQ6ICcxMDAlJ1xuICAgICAgfSxcbiAgICAgIGhlaWdodDoge1xuICAgICAgICBkZWZhdWx0OiAnYXV0bydcbiAgICAgIH1cbiAgICB9LFxuICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjaGFydDogbnVsbFxuICAgICAgfTtcbiAgICB9LFxuICAgIGJlZm9yZU1vdW50OiBmdW5jdGlvbiBiZWZvcmVNb3VudCgpIHtcbiAgICAgIHdpbmRvdy5BcGV4Q2hhcnRzID0gQXBleENoYXJ0cztcbiAgICB9LFxuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9LFxuICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB0aGlzLiR3YXRjaCgnb3B0aW9ucycsIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIGlmICghX3RoaXMuY2hhcnQgJiYgb3B0aW9ucykge1xuICAgICAgICAgIF90aGlzLmluaXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5jaGFydC51cGRhdGVPcHRpb25zKF90aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuJHdhdGNoKCdzZXJpZXMnLCBmdW5jdGlvbiAoc2VyaWVzKSB7XG4gICAgICAgIGlmICghX3RoaXMuY2hhcnQgJiYgc2VyaWVzKSB7XG4gICAgICAgICAgX3RoaXMuaW5pdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLmNoYXJ0LnVwZGF0ZVNlcmllcyhfdGhpcy5zZXJpZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciB3YXRjaGVkID0gWyd0eXBlJywgJ3dpZHRoJywgJ2hlaWdodCddO1xuICAgICAgd2F0Y2hlZC5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgIF90aGlzLiR3YXRjaChwcm9wLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMucmVmcmVzaCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICAgIGlmICghdGhpcy5jaGFydCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH0sXG4gICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoY3JlYXRlRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgaW5pdDogZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgdmFyIG5ld09wdGlvbnMgPSB7XG4gICAgICAgICAgY2hhcnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSB8fCB0aGlzLm9wdGlvbnMuY2hhcnQudHlwZSB8fCAnbGluZScsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICAgICAgICBldmVudHM6IHt9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzXG4gICAgICAgIH07XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuJGxpc3RlbmVycykuZm9yRWFjaChmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgbmV3T3B0aW9ucy5jaGFydC5ldmVudHNbZXZ0XSA9IF90aGlzMi4kbGlzdGVuZXJzW2V2dF07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5leHRlbmQodGhpcy5vcHRpb25zLCBuZXdPcHRpb25zKTtcbiAgICAgICAgdGhpcy5jaGFydCA9IG5ldyBBcGV4Q2hhcnRzKHRoaXMuJGVsLCBjb25maWcpO1xuICAgICAgICB0aGlzLmNoYXJ0LnJlbmRlcigpO1xuICAgICAgfSxcbiAgICAgIGlzT2JqZWN0OiBmdW5jdGlvbiBpc09iamVjdChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtICYmIF90eXBlb2YoaXRlbSkgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGl0ZW0pICYmIGl0ZW0gIT0gbnVsbDtcbiAgICAgIH0sXG4gICAgICBleHRlbmQ6IGZ1bmN0aW9uIGV4dGVuZCh0YXJnZXQsIHNvdXJjZSkge1xuICAgICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgICBpZiAodHlwZW9mIE9iamVjdC5hc3NpZ24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbiA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgLy8gV2UgbXVzdCBjaGVjayBhZ2FpbnN0IHRoZXNlIHNwZWNpZmljIGNhc2VzLlxuICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQgfHwgdGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Jyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB2YXIgb3V0cHV0ID0gT2JqZWN0KHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggPSAxOyBpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICB2YXIgX3NvdXJjZSA9IGFyZ3VtZW50c1tpbmRleF07XG5cbiAgICAgICAgICAgICAgICBpZiAoX3NvdXJjZSAhPT0gdW5kZWZpbmVkICYmIF9zb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIGZvciAodmFyIG5leHRLZXkgaW4gX3NvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3NvdXJjZS5oYXNPd25Qcm9wZXJ0eShuZXh0S2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtuZXh0S2V5XSA9IF9zb3VyY2VbbmV4dEtleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG91dHB1dCA9IE9iamVjdC5hc3NpZ24oe30sIHRhcmdldCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPYmplY3QodGFyZ2V0KSAmJiB0aGlzLmlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKF90aGlzMy5pc09iamVjdChzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgICAgICAgaWYgKCEoa2V5IGluIHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG91dHB1dCwgX2RlZmluZVByb3BlcnR5KHt9LCBrZXksIHNvdXJjZVtrZXldKSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0W2tleV0gPSBfdGhpczMuZXh0ZW5kKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3V0cHV0LCBfZGVmaW5lUHJvcGVydHkoe30sIGtleSwgc291cmNlW2tleV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICB9LFxuICAgICAgcmVmcmVzaDogZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgfSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZVNlcmllczogZnVuY3Rpb24gdXBkYXRlU2VyaWVzKG5ld1NlcmllcywgYW5pbWF0ZSkge1xuICAgICAgICB0aGlzLmNoYXJ0LnVwZGF0ZVNlcmllcyhuZXdTZXJpZXMsIGFuaW1hdGUpO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZU9wdGlvbnM6IGZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnMobmV3T3B0aW9ucywgcmVkcmF3UGF0aHMsIGFuaW1hdGUpIHtcbiAgICAgICAgdGhpcy5jaGFydC51cGRhdGVPcHRpb25zKG5ld09wdGlvbnMsIHJlZHJhd1BhdGhzLCBhbmltYXRlKTtcbiAgICAgIH0sXG4gICAgICB0b2dnbGVTZXJpZXM6IGZ1bmN0aW9uIHRvZ2dsZVNlcmllcyhzZXJpZXNOYW1lKSB7XG4gICAgICAgIHRoaXMuY2hhcnQudG9nZ2xlU2VyaWVzKHNlcmllc05hbWUpO1xuICAgICAgfSxcbiAgICAgIGFwcGVuZFNlcmllczogZnVuY3Rpb24gYXBwZW5kU2VyaWVzKG5ld1NlcmllcywgYW5pbWF0ZSkge1xuICAgICAgICB0aGlzLmNoYXJ0LmFwcGVuZFNlcmllcyhuZXdTZXJpZXMsIGFuaW1hdGUpO1xuICAgICAgfSxcbiAgICAgIHJlc2V0U2VyaWVzOiBmdW5jdGlvbiByZXNldFNlcmllcygpIHtcbiAgICAgICAgdGhpcy5jaGFydC5yZXNldFNlcmllcygpO1xuICAgICAgfSxcbiAgICAgIHRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbjogZnVuY3Rpb24gdG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uKHNlcmllc0luZGV4LCBkYXRhUG9pbnRJbmRleCkge1xuICAgICAgICB0aGlzLmNoYXJ0LnRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbihzZXJpZXNJbmRleCwgZGF0YVBvaW50SW5kZXgpO1xuICAgICAgfSxcbiAgICAgIGFwcGVuZERhdGE6IGZ1bmN0aW9uIGFwcGVuZERhdGEobmV3RGF0YSkge1xuICAgICAgICB0aGlzLmNoYXJ0LmFwcGVuZERhdGEobmV3RGF0YSk7XG4gICAgICB9LFxuICAgICAgYWRkVGV4dDogZnVuY3Rpb24gYWRkVGV4dChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuY2hhcnQuYWRkVGV4dChvcHRpb25zKTtcbiAgICAgIH0sXG4gICAgICBkYXRhVVJJOiBmdW5jdGlvbiBkYXRhVVJJKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFydC5kYXRhVVJJKCk7XG4gICAgICB9LFxuICAgICAgYWRkWGF4aXNBbm5vdGF0aW9uOiBmdW5jdGlvbiBhZGRYYXhpc0Fubm90YXRpb24ob3B0aW9ucywgcHVzaFRvTWVtb3J5KSB7XG4gICAgICAgIHRoaXMuY2hhcnQuYWRkWGF4aXNBbm5vdGF0aW9uKG9wdGlvbnMsIHB1c2hUb01lbW9yeSk7XG4gICAgICB9LFxuICAgICAgYWRkWWF4aXNBbm5vdGF0aW9uOiBmdW5jdGlvbiBhZGRZYXhpc0Fubm90YXRpb24ob3B0aW9ucywgcHVzaFRvTWVtb3J5KSB7XG4gICAgICAgIHRoaXMuY2hhcnQuYWRkWWF4aXNBbm5vdGF0aW9uKG9wdGlvbnMsIHB1c2hUb01lbW9yeSk7XG4gICAgICB9LFxuICAgICAgYWRkUG9pbnRBbm5vdGF0aW9uOiBmdW5jdGlvbiBhZGRQb2ludEFubm90YXRpb24ob3B0aW9ucywgcHVzaFRvTWVtb3J5KSB7XG4gICAgICAgIHRoaXMuY2hhcnQuYWRkUG9pbnRBbm5vdGF0aW9uKG9wdGlvbnMsIHB1c2hUb01lbW9yeSk7XG4gICAgICB9LFxuICAgICAgY2xlYXJBbm5vdGF0aW9uczogZnVuY3Rpb24gY2xlYXJBbm5vdGF0aW9ucygpIHtcbiAgICAgICAgdGhpcy5jaGFydC5jbGVhckFubm90YXRpb25zKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBWdWVBcGV4Q2hhcnRzID0gQXBleENoYXJ0c0NvbXBvbmVudDtcbiAgd2luZG93LkFwZXhDaGFydHMgPSBBcGV4Q2hhcnRzO1xuXG4gIFZ1ZUFwZXhDaGFydHMuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgICAvL2FkZGluZyBhIGdsb2JhbCBtZXRob2Qgb3IgcHJvcGVydHlcbiAgICBWdWUuQXBleENoYXJ0cyA9IEFwZXhDaGFydHM7XG4gICAgd2luZG93LkFwZXhDaGFydHMgPSBBcGV4Q2hhcnRzOyAvLyBhZGQgdGhlIGluc3RhbmNlIG1ldGhvZFxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckYXBleGNoYXJ0cycsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gQXBleENoYXJ0cztcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gVnVlQXBleENoYXJ0cztcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLFdBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-apexcharts/dist/vue-apexcharts.js\n");

/***/ }),

/***/ "./node_modules/vue-backtotop/node_modules/vue/dist/vue.runtime.esm.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vue-backtotop/node_modules/vue/dist/vue.runtime.esm.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/*!\n * Vue.js v2.3.3\n * (c) 2014-2017 Evan You\n * Released under the MIT License.\n */\n/*  */\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\nfunction isUndef (v) {\n  return v === undefined || v === null\n}\n\nfunction isDef (v) {\n  return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n  return v === true\n}\n\nfunction isFalse (v) {\n  return v === false\n}\n/**\n * Check if value is primitive\n */\nfunction isPrimitive (value) {\n  return typeof value === 'string' || typeof value === 'number'\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nvar _toString = Object.prototype.toString;\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n  return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n  return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n  return val == null\n    ? ''\n    : typeof val === 'object'\n      ? JSON.stringify(val, null, 2)\n      : String(val)\n}\n\n/**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n  var n = parseFloat(val);\n  return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n  str,\n  expectsLowerCase\n) {\n  var map = Object.create(null);\n  var list = str.split(',');\n  for (var i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n  return expectsLowerCase\n    ? function (val) { return map[val.toLowerCase()]; }\n    : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Remove an item from an array\n */\nfunction remove (arr, item) {\n  if (arr.length) {\n    var index = arr.indexOf(item);\n    if (index > -1) {\n      return arr.splice(index, 1)\n    }\n  }\n}\n\n/**\n * Check whether the object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n  var cache = Object.create(null);\n  return (function cachedFn (str) {\n    var hit = cache[str];\n    return hit || (cache[str] = fn(str))\n  })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n  return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n  return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /([^-])([A-Z])/g;\nvar hyphenate = cached(function (str) {\n  return str\n    .replace(hyphenateRE, '$1-$2')\n    .replace(hyphenateRE, '$1-$2')\n    .toLowerCase()\n});\n\n/**\n * Simple bind, faster than native\n */\nfunction bind (fn, ctx) {\n  function boundFn (a) {\n    var l = arguments.length;\n    return l\n      ? l > 1\n        ? fn.apply(ctx, arguments)\n        : fn.call(ctx, a)\n      : fn.call(ctx)\n  }\n  // record original fn length\n  boundFn._length = fn.length;\n  return boundFn\n}\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n  start = start || 0;\n  var i = list.length - start;\n  var ret = new Array(i);\n  while (i--) {\n    ret[i] = list[i + start];\n  }\n  return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n  for (var key in _from) {\n    to[key] = _from[key];\n  }\n  return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n  var res = {};\n  for (var i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n  return res\n}\n\n/**\n * Perform no operation.\n */\nfunction noop () {}\n\n/**\n * Always return false.\n */\nvar no = function () { return false; };\n\n/**\n * Return same value\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a static keys string from compiler modules.\n */\n\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      return JSON.stringify(a) === JSON.stringify(b)\n    } catch (e) {\n      // possible circular reference\n      return a === b\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\nfunction looseIndexOf (arr, val) {\n  for (var i = 0; i < arr.length; i++) {\n    if (looseEqual(arr[i], val)) { return i }\n  }\n  return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n  var called = false;\n  return function () {\n    if (!called) {\n      called = true;\n      fn.apply(this, arguments);\n    }\n  }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n  'component',\n  'directive',\n  'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n  'beforeCreate',\n  'created',\n  'beforeMount',\n  'mounted',\n  'beforeUpdate',\n  'updated',\n  'beforeDestroy',\n  'destroyed',\n  'activated',\n  'deactivated'\n];\n\n/*  */\n\nvar config = ({\n  /**\n   * Option merge strategies (used in core/util/options)\n   */\n  optionMergeStrategies: Object.create(null),\n\n  /**\n   * Whether to suppress warnings.\n   */\n  silent: false,\n\n  /**\n   * Show production mode tip message on boot?\n   */\n  productionTip: \"staging\" !== 'production',\n\n  /**\n   * Whether to enable devtools\n   */\n  devtools: \"staging\" !== 'production',\n\n  /**\n   * Whether to record perf\n   */\n  performance: false,\n\n  /**\n   * Error handler for watcher errors\n   */\n  errorHandler: null,\n\n  /**\n   * Ignore certain custom elements\n   */\n  ignoredElements: [],\n\n  /**\n   * Custom user key aliases for v-on\n   */\n  keyCodes: Object.create(null),\n\n  /**\n   * Check if a tag is reserved so that it cannot be registered as a\n   * component. This is platform-dependent and may be overwritten.\n   */\n  isReservedTag: no,\n\n  /**\n   * Check if an attribute is reserved so that it cannot be used as a component\n   * prop. This is platform-dependent and may be overwritten.\n   */\n  isReservedAttr: no,\n\n  /**\n   * Check if a tag is an unknown element.\n   * Platform-dependent.\n   */\n  isUnknownElement: no,\n\n  /**\n   * Get the namespace of an element\n   */\n  getTagNamespace: noop,\n\n  /**\n   * Parse the real tag name for the specific platform.\n   */\n  parsePlatformTagName: identity,\n\n  /**\n   * Check if an attribute must be bound using property, e.g. value\n   * Platform-dependent.\n   */\n  mustUseProp: no,\n\n  /**\n   * Exposed for legacy reasons\n   */\n  _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/*  */\n\nvar emptyObject = Object.freeze({});\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n  var c = (str + '').charCodeAt(0);\n  return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n  Object.defineProperty(obj, key, {\n    value: val,\n    enumerable: !!enumerable,\n    writable: true,\n    configurable: true\n  });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n  if (bailRE.test(path)) {\n    return\n  }\n  var segments = path.split('.');\n  return function (obj) {\n    for (var i = 0; i < segments.length; i++) {\n      if (!obj) { return }\n      obj = obj[segments[i]];\n    }\n    return obj\n  }\n}\n\n/*  */\n\nvar warn = noop;\nvar tip = noop;\nvar formatComponentName = (null); // work around flow check\n\nif (true) {\n  var hasConsole = typeof console !== 'undefined';\n  var classifyRE = /(?:^|[-_])(\\w)/g;\n  var classify = function (str) { return str\n    .replace(classifyRE, function (c) { return c.toUpperCase(); })\n    .replace(/[-_]/g, ''); };\n\n  warn = function (msg, vm) {\n    if (hasConsole && (!config.silent)) {\n      console.error(\"[Vue warn]: \" + msg + (\n        vm ? generateComponentTrace(vm) : ''\n      ));\n    }\n  };\n\n  tip = function (msg, vm) {\n    if (hasConsole && (!config.silent)) {\n      console.warn(\"[Vue tip]: \" + msg + (\n        vm ? generateComponentTrace(vm) : ''\n      ));\n    }\n  };\n\n  formatComponentName = function (vm, includeFile) {\n    if (vm.$root === vm) {\n      return '<Root>'\n    }\n    var name = typeof vm === 'string'\n      ? vm\n      : typeof vm === 'function' && vm.options\n        ? vm.options.name\n        : vm._isVue\n          ? vm.$options.name || vm.$options._componentTag\n          : vm.name;\n\n    var file = vm._isVue && vm.$options.__file;\n    if (!name && file) {\n      var match = file.match(/([^/\\\\]+)\\.vue$/);\n      name = match && match[1];\n    }\n\n    return (\n      (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n      (file && includeFile !== false ? (\" at \" + file) : '')\n    )\n  };\n\n  var repeat = function (str, n) {\n    var res = '';\n    while (n) {\n      if (n % 2 === 1) { res += str; }\n      if (n > 1) { str += str; }\n      n >>= 1;\n    }\n    return res\n  };\n\n  var generateComponentTrace = function (vm) {\n    if (vm._isVue && vm.$parent) {\n      var tree = [];\n      var currentRecursiveSequence = 0;\n      while (vm) {\n        if (tree.length > 0) {\n          var last = tree[tree.length - 1];\n          if (last.constructor === vm.constructor) {\n            currentRecursiveSequence++;\n            vm = vm.$parent;\n            continue\n          } else if (currentRecursiveSequence > 0) {\n            tree[tree.length - 1] = [last, currentRecursiveSequence];\n            currentRecursiveSequence = 0;\n          }\n        }\n        tree.push(vm);\n        vm = vm.$parent;\n      }\n      return '\\n\\nfound in\\n\\n' + tree\n        .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n            ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n            : formatComponentName(vm))); })\n        .join('\\n')\n    } else {\n      return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n    }\n  };\n}\n\n/*  */\n\nfunction handleError (err, vm, info) {\n  if (config.errorHandler) {\n    config.errorHandler.call(null, err, vm, info);\n  } else {\n    if (true) {\n      warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n    }\n    /* istanbul ignore else */\n    if (inBrowser && typeof console !== 'undefined') {\n      console.error(err);\n    } else {\n      throw err\n    }\n  }\n}\n\n/*  */\n/* globals MutationObserver */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = UA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\nvar supportsPassive = false;\nif (inBrowser) {\n  try {\n    var opts = {};\n    Object.defineProperty(opts, 'passive', ({\n      get: function get () {\n        /* istanbul ignore next */\n        supportsPassive = true;\n      }\n    } )); // https://github.com/facebook/flow/issues/285\n    window.addEventListener('test-passive', null, opts);\n  } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n  if (_isServer === undefined) {\n    /* istanbul ignore if */\n    if (!inBrowser && typeof global !== 'undefined') {\n      // detect presence of vue-server-renderer and avoid\n      // Webpack shimming the process\n      _isServer = global['process'].env.VUE_ENV === 'server';\n    } else {\n      _isServer = false;\n    }\n  }\n  return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n  return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n  typeof Symbol !== 'undefined' && isNative(Symbol) &&\n  typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\n/**\n * Defer a task to execute it asynchronously.\n */\nvar nextTick = (function () {\n  var callbacks = [];\n  var pending = false;\n  var timerFunc;\n\n  function nextTickHandler () {\n    pending = false;\n    var copies = callbacks.slice(0);\n    callbacks.length = 0;\n    for (var i = 0; i < copies.length; i++) {\n      copies[i]();\n    }\n  }\n\n  // the nextTick behavior leverages the microtask queue, which can be accessed\n  // via either native Promise.then or MutationObserver.\n  // MutationObserver has wider support, however it is seriously bugged in\n  // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n  // completely stops working after triggering a few times... so, if native\n  // Promise is available, we will use it:\n  /* istanbul ignore if */\n  if (typeof Promise !== 'undefined' && isNative(Promise)) {\n    var p = Promise.resolve();\n    var logError = function (err) { console.error(err); };\n    timerFunc = function () {\n      p.then(nextTickHandler).catch(logError);\n      // in problematic UIWebViews, Promise.then doesn't completely break, but\n      // it can get stuck in a weird state where callbacks are pushed into the\n      // microtask queue but the queue isn't being flushed, until the browser\n      // needs to do some other work, e.g. handle a timer. Therefore we can\n      // \"force\" the microtask queue to be flushed by adding an empty timer.\n      if (isIOS) { setTimeout(noop); }\n    };\n  } else if (typeof MutationObserver !== 'undefined' && (\n    isNative(MutationObserver) ||\n    // PhantomJS and iOS 7.x\n    MutationObserver.toString() === '[object MutationObserverConstructor]'\n  )) {\n    // use MutationObserver where native Promise is not available,\n    // e.g. PhantomJS IE11, iOS7, Android 4.4\n    var counter = 1;\n    var observer = new MutationObserver(nextTickHandler);\n    var textNode = document.createTextNode(String(counter));\n    observer.observe(textNode, {\n      characterData: true\n    });\n    timerFunc = function () {\n      counter = (counter + 1) % 2;\n      textNode.data = String(counter);\n    };\n  } else {\n    // fallback to setTimeout\n    /* istanbul ignore next */\n    timerFunc = function () {\n      setTimeout(nextTickHandler, 0);\n    };\n  }\n\n  return function queueNextTick (cb, ctx) {\n    var _resolve;\n    callbacks.push(function () {\n      if (cb) {\n        try {\n          cb.call(ctx);\n        } catch (e) {\n          handleError(e, ctx, 'nextTick');\n        }\n      } else if (_resolve) {\n        _resolve(ctx);\n      }\n    });\n    if (!pending) {\n      pending = true;\n      timerFunc();\n    }\n    if (!cb && typeof Promise !== 'undefined') {\n      return new Promise(function (resolve, reject) {\n        _resolve = resolve;\n      })\n    }\n  }\n})();\n\nvar _Set;\n/* istanbul ignore if */\nif (typeof Set !== 'undefined' && isNative(Set)) {\n  // use native Set when available.\n  _Set = Set;\n} else {\n  // a non-standard Set polyfill that only works with primitive keys.\n  _Set = (function () {\n    function Set () {\n      this.set = Object.create(null);\n    }\n    Set.prototype.has = function has (key) {\n      return this.set[key] === true\n    };\n    Set.prototype.add = function add (key) {\n      this.set[key] = true;\n    };\n    Set.prototype.clear = function clear () {\n      this.set = Object.create(null);\n    };\n\n    return Set;\n  }());\n}\n\n/*  */\n\n\nvar uid$1 = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n  this.id = uid$1++;\n  this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n  this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n  remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n  if (Dep.target) {\n    Dep.target.addDep(this);\n  }\n};\n\nDep.prototype.notify = function notify () {\n  // stabilize the subscriber list first\n  var subs = this.subs.slice();\n  for (var i = 0, l = subs.length; i < l; i++) {\n    subs[i].update();\n  }\n};\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (_target) {\n  if (Dep.target) { targetStack.push(Dep.target); }\n  Dep.target = _target;\n}\n\nfunction popTarget () {\n  Dep.target = targetStack.pop();\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);[\n  'push',\n  'pop',\n  'shift',\n  'unshift',\n  'splice',\n  'sort',\n  'reverse'\n]\n.forEach(function (method) {\n  // cache original method\n  var original = arrayProto[method];\n  def(arrayMethods, method, function mutator () {\n    var arguments$1 = arguments;\n\n    // avoid leaking arguments:\n    // http://jsperf.com/closure-with-arguments\n    var i = arguments.length;\n    var args = new Array(i);\n    while (i--) {\n      args[i] = arguments$1[i];\n    }\n    var result = original.apply(this, args);\n    var ob = this.__ob__;\n    var inserted;\n    switch (method) {\n      case 'push':\n        inserted = args;\n        break\n      case 'unshift':\n        inserted = args;\n        break\n      case 'splice':\n        inserted = args.slice(2);\n        break\n    }\n    if (inserted) { ob.observeArray(inserted); }\n    // notify change\n    ob.dep.notify();\n    return result\n  });\n});\n\n/*  */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * By default, when a reactive property is set, the new value is\n * also converted to become reactive. However when passing down props,\n * we don't want to force conversion because the value may be a nested value\n * under a frozen data structure. Converting it would defeat the optimization.\n */\nvar observerState = {\n  shouldConvert: true,\n  isSettingProps: false\n};\n\n/**\n * Observer class that are attached to each observed\n * object. Once attached, the observer converts target\n * object's property keys into getter/setters that\n * collect dependencies and dispatches updates.\n */\nvar Observer = function Observer (value) {\n  this.value = value;\n  this.dep = new Dep();\n  this.vmCount = 0;\n  def(value, '__ob__', this);\n  if (Array.isArray(value)) {\n    var augment = hasProto\n      ? protoAugment\n      : copyAugment;\n    augment(value, arrayMethods, arrayKeys);\n    this.observeArray(value);\n  } else {\n    this.walk(value);\n  }\n};\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n  var keys = Object.keys(obj);\n  for (var i = 0; i < keys.length; i++) {\n    defineReactive$$1(obj, keys[i], obj[keys[i]]);\n  }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n  for (var i = 0, l = items.length; i < l; i++) {\n    observe(items[i]);\n  }\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n  /* eslint-disable no-proto */\n  target.__proto__ = src;\n  /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n  for (var i = 0, l = keys.length; i < l; i++) {\n    var key = keys[i];\n    def(target, key, src[key]);\n  }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n  if (!isObject(value)) {\n    return\n  }\n  var ob;\n  if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n    ob = value.__ob__;\n  } else if (\n    observerState.shouldConvert &&\n    !isServerRendering() &&\n    (Array.isArray(value) || isPlainObject(value)) &&\n    Object.isExtensible(value) &&\n    !value._isVue\n  ) {\n    ob = new Observer(value);\n  }\n  if (asRootData && ob) {\n    ob.vmCount++;\n  }\n  return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n  obj,\n  key,\n  val,\n  customSetter\n) {\n  var dep = new Dep();\n\n  var property = Object.getOwnPropertyDescriptor(obj, key);\n  if (property && property.configurable === false) {\n    return\n  }\n\n  // cater for pre-defined getter/setters\n  var getter = property && property.get;\n  var setter = property && property.set;\n\n  var childOb = observe(val);\n  Object.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    get: function reactiveGetter () {\n      var value = getter ? getter.call(obj) : val;\n      if (Dep.target) {\n        dep.depend();\n        if (childOb) {\n          childOb.dep.depend();\n        }\n        if (Array.isArray(value)) {\n          dependArray(value);\n        }\n      }\n      return value\n    },\n    set: function reactiveSetter (newVal) {\n      var value = getter ? getter.call(obj) : val;\n      /* eslint-disable no-self-compare */\n      if (newVal === value || (newVal !== newVal && value !== value)) {\n        return\n      }\n      /* eslint-enable no-self-compare */\n      if ( true && customSetter) {\n        customSetter();\n      }\n      if (setter) {\n        setter.call(obj, newVal);\n      } else {\n        val = newVal;\n      }\n      childOb = observe(newVal);\n      dep.notify();\n    }\n  });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n  if (Array.isArray(target) && typeof key === 'number') {\n    target.length = Math.max(target.length, key);\n    target.splice(key, 1, val);\n    return val\n  }\n  if (hasOwn(target, key)) {\n    target[key] = val;\n    return val\n  }\n  var ob = (target ).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n     true && warn(\n      'Avoid adding reactive properties to a Vue instance or its root $data ' +\n      'at runtime - declare it upfront in the data option.'\n    );\n    return val\n  }\n  if (!ob) {\n    target[key] = val;\n    return val\n  }\n  defineReactive$$1(ob.value, key, val);\n  ob.dep.notify();\n  return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n  if (Array.isArray(target) && typeof key === 'number') {\n    target.splice(key, 1);\n    return\n  }\n  var ob = (target ).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n     true && warn(\n      'Avoid deleting properties on a Vue instance or its root $data ' +\n      '- just set it to null.'\n    );\n    return\n  }\n  if (!hasOwn(target, key)) {\n    return\n  }\n  delete target[key];\n  if (!ob) {\n    return\n  }\n  ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n  for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n    e = value[i];\n    e && e.__ob__ && e.__ob__.dep.depend();\n    if (Array.isArray(e)) {\n      dependArray(e);\n    }\n  }\n}\n\n/*  */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (true) {\n  strats.el = strats.propsData = function (parent, child, vm, key) {\n    if (!vm) {\n      warn(\n        \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n        'creation with the `new` keyword.'\n      );\n    }\n    return defaultStrat(parent, child)\n  };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n  if (!from) { return to }\n  var key, toVal, fromVal;\n  var keys = Object.keys(from);\n  for (var i = 0; i < keys.length; i++) {\n    key = keys[i];\n    toVal = to[key];\n    fromVal = from[key];\n    if (!hasOwn(to, key)) {\n      set(to, key, fromVal);\n    } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n      mergeData(toVal, fromVal);\n    }\n  }\n  return to\n}\n\n/**\n * Data\n */\nstrats.data = function (\n  parentVal,\n  childVal,\n  vm\n) {\n  if (!vm) {\n    // in a Vue.extend merge, both should be functions\n    if (!childVal) {\n      return parentVal\n    }\n    if (typeof childVal !== 'function') {\n       true && warn(\n        'The \"data\" option should be a function ' +\n        'that returns a per-instance value in component ' +\n        'definitions.',\n        vm\n      );\n      return parentVal\n    }\n    if (!parentVal) {\n      return childVal\n    }\n    // when parentVal & childVal are both present,\n    // we need to return a function that returns the\n    // merged result of both functions... no need to\n    // check if parentVal is a function here because\n    // it has to be a function to pass previous merges.\n    return function mergedDataFn () {\n      return mergeData(\n        childVal.call(this),\n        parentVal.call(this)\n      )\n    }\n  } else if (parentVal || childVal) {\n    return function mergedInstanceDataFn () {\n      // instance merge\n      var instanceData = typeof childVal === 'function'\n        ? childVal.call(vm)\n        : childVal;\n      var defaultData = typeof parentVal === 'function'\n        ? parentVal.call(vm)\n        : undefined;\n      if (instanceData) {\n        return mergeData(instanceData, defaultData)\n      } else {\n        return defaultData\n      }\n    }\n  }\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n  parentVal,\n  childVal\n) {\n  return childVal\n    ? parentVal\n      ? parentVal.concat(childVal)\n      : Array.isArray(childVal)\n        ? childVal\n        : [childVal]\n    : parentVal\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n  strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (parentVal, childVal) {\n  var res = Object.create(parentVal || null);\n  return childVal\n    ? extend(res, childVal)\n    : res\n}\n\nASSET_TYPES.forEach(function (type) {\n  strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (parentVal, childVal) {\n  /* istanbul ignore if */\n  if (!childVal) { return Object.create(parentVal || null) }\n  if (!parentVal) { return childVal }\n  var ret = {};\n  extend(ret, parentVal);\n  for (var key in childVal) {\n    var parent = ret[key];\n    var child = childVal[key];\n    if (parent && !Array.isArray(parent)) {\n      parent = [parent];\n    }\n    ret[key] = parent\n      ? parent.concat(child)\n      : [child];\n  }\n  return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.computed = function (parentVal, childVal) {\n  if (!childVal) { return Object.create(parentVal || null) }\n  if (!parentVal) { return childVal }\n  var ret = Object.create(null);\n  extend(ret, parentVal);\n  extend(ret, childVal);\n  return ret\n};\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n  return childVal === undefined\n    ? parentVal\n    : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n  for (var key in options.components) {\n    var lower = key.toLowerCase();\n    if (isBuiltInTag(lower) || config.isReservedTag(lower)) {\n      warn(\n        'Do not use built-in or reserved HTML elements as component ' +\n        'id: ' + key\n      );\n    }\n  }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options) {\n  var props = options.props;\n  if (!props) { return }\n  var res = {};\n  var i, val, name;\n  if (Array.isArray(props)) {\n    i = props.length;\n    while (i--) {\n      val = props[i];\n      if (typeof val === 'string') {\n        name = camelize(val);\n        res[name] = { type: null };\n      } else if (true) {\n        warn('props must be strings when using array syntax.');\n      }\n    }\n  } else if (isPlainObject(props)) {\n    for (var key in props) {\n      val = props[key];\n      name = camelize(key);\n      res[name] = isPlainObject(val)\n        ? val\n        : { type: val };\n    }\n  }\n  options.props = res;\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n  var dirs = options.directives;\n  if (dirs) {\n    for (var key in dirs) {\n      var def = dirs[key];\n      if (typeof def === 'function') {\n        dirs[key] = { bind: def, update: def };\n      }\n    }\n  }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n  parent,\n  child,\n  vm\n) {\n  if (true) {\n    checkComponents(child);\n  }\n\n  if (typeof child === 'function') {\n    child = child.options;\n  }\n\n  normalizeProps(child);\n  normalizeDirectives(child);\n  var extendsFrom = child.extends;\n  if (extendsFrom) {\n    parent = mergeOptions(parent, extendsFrom, vm);\n  }\n  if (child.mixins) {\n    for (var i = 0, l = child.mixins.length; i < l; i++) {\n      parent = mergeOptions(parent, child.mixins[i], vm);\n    }\n  }\n  var options = {};\n  var key;\n  for (key in parent) {\n    mergeField(key);\n  }\n  for (key in child) {\n    if (!hasOwn(parent, key)) {\n      mergeField(key);\n    }\n  }\n  function mergeField (key) {\n    var strat = strats[key] || defaultStrat;\n    options[key] = strat(parent[key], child[key], vm, key);\n  }\n  return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n  options,\n  type,\n  id,\n  warnMissing\n) {\n  /* istanbul ignore if */\n  if (typeof id !== 'string') {\n    return\n  }\n  var assets = options[type];\n  // check local registration variations first\n  if (hasOwn(assets, id)) { return assets[id] }\n  var camelizedId = camelize(id);\n  if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n  var PascalCaseId = capitalize(camelizedId);\n  if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n  // fallback to prototype chain\n  var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n  if ( true && warnMissing && !res) {\n    warn(\n      'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n      options\n    );\n  }\n  return res\n}\n\n/*  */\n\nfunction validateProp (\n  key,\n  propOptions,\n  propsData,\n  vm\n) {\n  var prop = propOptions[key];\n  var absent = !hasOwn(propsData, key);\n  var value = propsData[key];\n  // handle boolean props\n  if (isType(Boolean, prop.type)) {\n    if (absent && !hasOwn(prop, 'default')) {\n      value = false;\n    } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) {\n      value = true;\n    }\n  }\n  // check default value\n  if (value === undefined) {\n    value = getPropDefaultValue(vm, prop, key);\n    // since the default value is a fresh copy,\n    // make sure to observe it.\n    var prevShouldConvert = observerState.shouldConvert;\n    observerState.shouldConvert = true;\n    observe(value);\n    observerState.shouldConvert = prevShouldConvert;\n  }\n  if (true) {\n    assertProp(prop, key, value, vm, absent);\n  }\n  return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n  // no default, return undefined\n  if (!hasOwn(prop, 'default')) {\n    return undefined\n  }\n  var def = prop.default;\n  // warn against non-factory defaults for Object & Array\n  if ( true && isObject(def)) {\n    warn(\n      'Invalid default value for prop \"' + key + '\": ' +\n      'Props with type Object/Array must use a factory function ' +\n      'to return the default value.',\n      vm\n    );\n  }\n  // the raw prop value was also undefined from previous render,\n  // return previous default value to avoid unnecessary watcher trigger\n  if (vm && vm.$options.propsData &&\n    vm.$options.propsData[key] === undefined &&\n    vm._props[key] !== undefined\n  ) {\n    return vm._props[key]\n  }\n  // call factory function for non-Function types\n  // a value is Function if its prototype is function even across different execution context\n  return typeof def === 'function' && getType(prop.type) !== 'Function'\n    ? def.call(vm)\n    : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n  prop,\n  name,\n  value,\n  vm,\n  absent\n) {\n  if (prop.required && absent) {\n    warn(\n      'Missing required prop: \"' + name + '\"',\n      vm\n    );\n    return\n  }\n  if (value == null && !prop.required) {\n    return\n  }\n  var type = prop.type;\n  var valid = !type || type === true;\n  var expectedTypes = [];\n  if (type) {\n    if (!Array.isArray(type)) {\n      type = [type];\n    }\n    for (var i = 0; i < type.length && !valid; i++) {\n      var assertedType = assertType(value, type[i]);\n      expectedTypes.push(assertedType.expectedType || '');\n      valid = assertedType.valid;\n    }\n  }\n  if (!valid) {\n    warn(\n      'Invalid prop: type check failed for prop \"' + name + '\".' +\n      ' Expected ' + expectedTypes.map(capitalize).join(', ') +\n      ', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.',\n      vm\n    );\n    return\n  }\n  var validator = prop.validator;\n  if (validator) {\n    if (!validator(value)) {\n      warn(\n        'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n        vm\n      );\n    }\n  }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n  var valid;\n  var expectedType = getType(type);\n  if (simpleCheckRE.test(expectedType)) {\n    valid = typeof value === expectedType.toLowerCase();\n  } else if (expectedType === 'Object') {\n    valid = isPlainObject(value);\n  } else if (expectedType === 'Array') {\n    valid = Array.isArray(value);\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid: valid,\n    expectedType: expectedType\n  }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n  var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n  return match ? match[1] : ''\n}\n\nfunction isType (type, fn) {\n  if (!Array.isArray(fn)) {\n    return getType(fn) === getType(type)\n  }\n  for (var i = 0, len = fn.length; i < len; i++) {\n    if (getType(fn[i]) === getType(type)) {\n      return true\n    }\n  }\n  /* istanbul ignore next */\n  return false\n}\n\n/*  */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (true) {\n  var allowedGlobals = makeMap(\n    'Infinity,undefined,NaN,isFinite,isNaN,' +\n    'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n    'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n    'require' // for Webpack/Browserify\n  );\n\n  var warnNonPresent = function (target, key) {\n    warn(\n      \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n      \"referenced during render. Make sure to declare reactive data \" +\n      \"properties in the data option.\",\n      target\n    );\n  };\n\n  var hasProxy =\n    typeof Proxy !== 'undefined' &&\n    Proxy.toString().match(/native code/);\n\n  if (hasProxy) {\n    var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta');\n    config.keyCodes = new Proxy(config.keyCodes, {\n      set: function set (target, key, value) {\n        if (isBuiltInModifier(key)) {\n          warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n          return false\n        } else {\n          target[key] = value;\n          return true\n        }\n      }\n    });\n  }\n\n  var hasHandler = {\n    has: function has (target, key) {\n      var has = key in target;\n      var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n      if (!has && !isAllowed) {\n        warnNonPresent(target, key);\n      }\n      return has || !isAllowed\n    }\n  };\n\n  var getHandler = {\n    get: function get (target, key) {\n      if (typeof key === 'string' && !(key in target)) {\n        warnNonPresent(target, key);\n      }\n      return target[key]\n    }\n  };\n\n  initProxy = function initProxy (vm) {\n    if (hasProxy) {\n      // determine which proxy handler to use\n      var options = vm.$options;\n      var handlers = options.render && options.render._withStripped\n        ? getHandler\n        : hasHandler;\n      vm._renderProxy = new Proxy(vm, handlers);\n    } else {\n      vm._renderProxy = vm;\n    }\n  };\n}\n\nvar mark;\nvar measure;\n\nif (true) {\n  var perf = inBrowser && window.performance;\n  /* istanbul ignore if */\n  if (\n    perf &&\n    perf.mark &&\n    perf.measure &&\n    perf.clearMarks &&\n    perf.clearMeasures\n  ) {\n    mark = function (tag) { return perf.mark(tag); };\n    measure = function (name, startTag, endTag) {\n      perf.measure(name, startTag, endTag);\n      perf.clearMarks(startTag);\n      perf.clearMarks(endTag);\n      perf.clearMeasures(name);\n    };\n  }\n}\n\n/*  */\n\nvar VNode = function VNode (\n  tag,\n  data,\n  children,\n  text,\n  elm,\n  context,\n  componentOptions\n) {\n  this.tag = tag;\n  this.data = data;\n  this.children = children;\n  this.text = text;\n  this.elm = elm;\n  this.ns = undefined;\n  this.context = context;\n  this.functionalContext = undefined;\n  this.key = data && data.key;\n  this.componentOptions = componentOptions;\n  this.componentInstance = undefined;\n  this.parent = undefined;\n  this.raw = false;\n  this.isStatic = false;\n  this.isRootInsert = true;\n  this.isComment = false;\n  this.isCloned = false;\n  this.isOnce = false;\n};\n\nvar prototypeAccessors = { child: {} };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n  return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function () {\n  var node = new VNode();\n  node.text = '';\n  node.isComment = true;\n  return node\n};\n\nfunction createTextVNode (val) {\n  return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n  var cloned = new VNode(\n    vnode.tag,\n    vnode.data,\n    vnode.children,\n    vnode.text,\n    vnode.elm,\n    vnode.context,\n    vnode.componentOptions\n  );\n  cloned.ns = vnode.ns;\n  cloned.isStatic = vnode.isStatic;\n  cloned.key = vnode.key;\n  cloned.isComment = vnode.isComment;\n  cloned.isCloned = true;\n  return cloned\n}\n\nfunction cloneVNodes (vnodes) {\n  var len = vnodes.length;\n  var res = new Array(len);\n  for (var i = 0; i < len; i++) {\n    res[i] = cloneVNode(vnodes[i]);\n  }\n  return res\n}\n\n/*  */\n\nvar normalizeEvent = cached(function (name) {\n  var passive = name.charAt(0) === '&';\n  name = passive ? name.slice(1) : name;\n  var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n  name = once$$1 ? name.slice(1) : name;\n  var capture = name.charAt(0) === '!';\n  name = capture ? name.slice(1) : name;\n  return {\n    name: name,\n    once: once$$1,\n    capture: capture,\n    passive: passive\n  }\n});\n\nfunction createFnInvoker (fns) {\n  function invoker () {\n    var arguments$1 = arguments;\n\n    var fns = invoker.fns;\n    if (Array.isArray(fns)) {\n      for (var i = 0; i < fns.length; i++) {\n        fns[i].apply(null, arguments$1);\n      }\n    } else {\n      // return handler return value for single handlers\n      return fns.apply(null, arguments)\n    }\n  }\n  invoker.fns = fns;\n  return invoker\n}\n\nfunction updateListeners (\n  on,\n  oldOn,\n  add,\n  remove$$1,\n  vm\n) {\n  var name, cur, old, event;\n  for (name in on) {\n    cur = on[name];\n    old = oldOn[name];\n    event = normalizeEvent(name);\n    if (isUndef(cur)) {\n       true && warn(\n        \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n        vm\n      );\n    } else if (isUndef(old)) {\n      if (isUndef(cur.fns)) {\n        cur = on[name] = createFnInvoker(cur);\n      }\n      add(event.name, cur, event.once, event.capture, event.passive);\n    } else if (cur !== old) {\n      old.fns = cur;\n      on[name] = old;\n    }\n  }\n  for (name in oldOn) {\n    if (isUndef(on[name])) {\n      event = normalizeEvent(name);\n      remove$$1(event.name, oldOn[name], event.capture);\n    }\n  }\n}\n\n/*  */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n  var invoker;\n  var oldHook = def[hookKey];\n\n  function wrappedHook () {\n    hook.apply(this, arguments);\n    // important: remove merged hook to ensure it's called only once\n    // and prevent memory leak\n    remove(invoker.fns, wrappedHook);\n  }\n\n  if (isUndef(oldHook)) {\n    // no existing hook\n    invoker = createFnInvoker([wrappedHook]);\n  } else {\n    /* istanbul ignore if */\n    if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n      // already a merged invoker\n      invoker = oldHook;\n      invoker.fns.push(wrappedHook);\n    } else {\n      // existing plain hook\n      invoker = createFnInvoker([oldHook, wrappedHook]);\n    }\n  }\n\n  invoker.merged = true;\n  def[hookKey] = invoker;\n}\n\n/*  */\n\nfunction extractPropsFromVNodeData (\n  data,\n  Ctor,\n  tag\n) {\n  // we are only extracting raw values here.\n  // validation and default values are handled in the child\n  // component itself.\n  var propOptions = Ctor.options.props;\n  if (isUndef(propOptions)) {\n    return\n  }\n  var res = {};\n  var attrs = data.attrs;\n  var props = data.props;\n  if (isDef(attrs) || isDef(props)) {\n    for (var key in propOptions) {\n      var altKey = hyphenate(key);\n      if (true) {\n        var keyInLowerCase = key.toLowerCase();\n        if (\n          key !== keyInLowerCase &&\n          attrs && hasOwn(attrs, keyInLowerCase)\n        ) {\n          tip(\n            \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n            (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n            \" \\\"\" + key + \"\\\". \" +\n            \"Note that HTML attributes are case-insensitive and camelCased \" +\n            \"props need to use their kebab-case equivalents when using in-DOM \" +\n            \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n          );\n        }\n      }\n      checkProp(res, props, key, altKey, true) ||\n      checkProp(res, attrs, key, altKey, false);\n    }\n  }\n  return res\n}\n\nfunction checkProp (\n  res,\n  hash,\n  key,\n  altKey,\n  preserve\n) {\n  if (isDef(hash)) {\n    if (hasOwn(hash, key)) {\n      res[key] = hash[key];\n      if (!preserve) {\n        delete hash[key];\n      }\n      return true\n    } else if (hasOwn(hash, altKey)) {\n      res[key] = hash[altKey];\n      if (!preserve) {\n        delete hash[altKey];\n      }\n      return true\n    }\n  }\n  return false\n}\n\n/*  */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n  for (var i = 0; i < children.length; i++) {\n    if (Array.isArray(children[i])) {\n      return Array.prototype.concat.apply([], children)\n    }\n  }\n  return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n  return isPrimitive(children)\n    ? [createTextVNode(children)]\n    : Array.isArray(children)\n      ? normalizeArrayChildren(children)\n      : undefined\n}\n\nfunction isTextNode (node) {\n  return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n  var res = [];\n  var i, c, last;\n  for (i = 0; i < children.length; i++) {\n    c = children[i];\n    if (isUndef(c) || typeof c === 'boolean') { continue }\n    last = res[res.length - 1];\n    //  nested\n    if (Array.isArray(c)) {\n      res.push.apply(res, normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i)));\n    } else if (isPrimitive(c)) {\n      if (isTextNode(last)) {\n        // merge adjacent text nodes\n        // this is necessary for SSR hydration because text nodes are\n        // essentially merged when rendered to HTML strings\n        (last).text += String(c);\n      } else if (c !== '') {\n        // convert primitive to vnode\n        res.push(createTextVNode(c));\n      }\n    } else {\n      if (isTextNode(c) && isTextNode(last)) {\n        // merge adjacent text nodes\n        res[res.length - 1] = createTextVNode(last.text + c.text);\n      } else {\n        // default key for nested array children (likely generated by v-for)\n        if (isTrue(children._isVList) &&\n          isDef(c.tag) &&\n          isUndef(c.key) &&\n          isDef(nestedIndex)) {\n          c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n        }\n        res.push(c);\n      }\n    }\n  }\n  return res\n}\n\n/*  */\n\nfunction ensureCtor (comp, base) {\n  return isObject(comp)\n    ? base.extend(comp)\n    : comp\n}\n\nfunction resolveAsyncComponent (\n  factory,\n  baseCtor,\n  context\n) {\n  if (isTrue(factory.error) && isDef(factory.errorComp)) {\n    return factory.errorComp\n  }\n\n  if (isDef(factory.resolved)) {\n    return factory.resolved\n  }\n\n  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n    return factory.loadingComp\n  }\n\n  if (isDef(factory.contexts)) {\n    // already pending\n    factory.contexts.push(context);\n  } else {\n    var contexts = factory.contexts = [context];\n    var sync = true;\n\n    var forceRender = function () {\n      for (var i = 0, l = contexts.length; i < l; i++) {\n        contexts[i].$forceUpdate();\n      }\n    };\n\n    var resolve = once(function (res) {\n      // cache resolved\n      factory.resolved = ensureCtor(res, baseCtor);\n      // invoke callbacks only if this is not a synchronous resolve\n      // (async resolves are shimmed as synchronous during SSR)\n      if (!sync) {\n        forceRender();\n      }\n    });\n\n    var reject = once(function (reason) {\n       true && warn(\n        \"Failed to resolve async component: \" + (String(factory)) +\n        (reason ? (\"\\nReason: \" + reason) : '')\n      );\n      if (isDef(factory.errorComp)) {\n        factory.error = true;\n        forceRender();\n      }\n    });\n\n    var res = factory(resolve, reject);\n\n    if (isObject(res)) {\n      if (typeof res.then === 'function') {\n        // () => Promise\n        if (isUndef(factory.resolved)) {\n          res.then(resolve, reject);\n        }\n      } else if (isDef(res.component) && typeof res.component.then === 'function') {\n        res.component.then(resolve, reject);\n\n        if (isDef(res.error)) {\n          factory.errorComp = ensureCtor(res.error, baseCtor);\n        }\n\n        if (isDef(res.loading)) {\n          factory.loadingComp = ensureCtor(res.loading, baseCtor);\n          if (res.delay === 0) {\n            factory.loading = true;\n          } else {\n            setTimeout(function () {\n              if (isUndef(factory.resolved) && isUndef(factory.error)) {\n                factory.loading = true;\n                forceRender();\n              }\n            }, res.delay || 200);\n          }\n        }\n\n        if (isDef(res.timeout)) {\n          setTimeout(function () {\n            if (isUndef(factory.resolved)) {\n              reject(\n                 true\n                  ? (\"timeout (\" + (res.timeout) + \"ms)\")\n                  : undefined\n              );\n            }\n          }, res.timeout);\n        }\n      }\n    }\n\n    sync = false;\n    // return in case resolved synchronously\n    return factory.loading\n      ? factory.loadingComp\n      : factory.resolved\n  }\n}\n\n/*  */\n\nfunction getFirstComponentChild (children) {\n  if (Array.isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      var c = children[i];\n      if (isDef(c) && isDef(c.componentOptions)) {\n        return c\n      }\n    }\n  }\n}\n\n/*  */\n\n/*  */\n\nfunction initEvents (vm) {\n  vm._events = Object.create(null);\n  vm._hasHookEvent = false;\n  // init parent attached events\n  var listeners = vm.$options._parentListeners;\n  if (listeners) {\n    updateComponentListeners(vm, listeners);\n  }\n}\n\nvar target;\n\nfunction add (event, fn, once$$1) {\n  if (once$$1) {\n    target.$once(event, fn);\n  } else {\n    target.$on(event, fn);\n  }\n}\n\nfunction remove$1 (event, fn) {\n  target.$off(event, fn);\n}\n\nfunction updateComponentListeners (\n  vm,\n  listeners,\n  oldListeners\n) {\n  target = vm;\n  updateListeners(listeners, oldListeners || {}, add, remove$1, vm);\n}\n\nfunction eventsMixin (Vue) {\n  var hookRE = /^hook:/;\n  Vue.prototype.$on = function (event, fn) {\n    var this$1 = this;\n\n    var vm = this;\n    if (Array.isArray(event)) {\n      for (var i = 0, l = event.length; i < l; i++) {\n        this$1.$on(event[i], fn);\n      }\n    } else {\n      (vm._events[event] || (vm._events[event] = [])).push(fn);\n      // optimize hook:event cost by using a boolean flag marked at registration\n      // instead of a hash lookup\n      if (hookRE.test(event)) {\n        vm._hasHookEvent = true;\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$once = function (event, fn) {\n    var vm = this;\n    function on () {\n      vm.$off(event, on);\n      fn.apply(vm, arguments);\n    }\n    on.fn = fn;\n    vm.$on(event, on);\n    return vm\n  };\n\n  Vue.prototype.$off = function (event, fn) {\n    var this$1 = this;\n\n    var vm = this;\n    // all\n    if (!arguments.length) {\n      vm._events = Object.create(null);\n      return vm\n    }\n    // array of events\n    if (Array.isArray(event)) {\n      for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n        this$1.$off(event[i$1], fn);\n      }\n      return vm\n    }\n    // specific event\n    var cbs = vm._events[event];\n    if (!cbs) {\n      return vm\n    }\n    if (arguments.length === 1) {\n      vm._events[event] = null;\n      return vm\n    }\n    // specific handler\n    var cb;\n    var i = cbs.length;\n    while (i--) {\n      cb = cbs[i];\n      if (cb === fn || cb.fn === fn) {\n        cbs.splice(i, 1);\n        break\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$emit = function (event) {\n    var vm = this;\n    if (true) {\n      var lowerCaseEvent = event.toLowerCase();\n      if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n        tip(\n          \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n          (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n          \"Note that HTML attributes are case-insensitive and you cannot use \" +\n          \"v-on to listen to camelCase events when using in-DOM templates. \" +\n          \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n        );\n      }\n    }\n    var cbs = vm._events[event];\n    if (cbs) {\n      cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n      var args = toArray(arguments, 1);\n      for (var i = 0, l = cbs.length; i < l; i++) {\n        cbs[i].apply(vm, args);\n      }\n    }\n    return vm\n  };\n}\n\n/*  */\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n  children,\n  context\n) {\n  var slots = {};\n  if (!children) {\n    return slots\n  }\n  var defaultSlot = [];\n  for (var i = 0, l = children.length; i < l; i++) {\n    var child = children[i];\n    // named slots should only be respected if the vnode was rendered in the\n    // same context.\n    if ((child.context === context || child.functionalContext === context) &&\n      child.data && child.data.slot != null\n    ) {\n      var name = child.data.slot;\n      var slot = (slots[name] || (slots[name] = []));\n      if (child.tag === 'template') {\n        slot.push.apply(slot, child.children);\n      } else {\n        slot.push(child);\n      }\n    } else {\n      defaultSlot.push(child);\n    }\n  }\n  // ignore whitespace\n  if (!defaultSlot.every(isWhitespace)) {\n    slots.default = defaultSlot;\n  }\n  return slots\n}\n\nfunction isWhitespace (node) {\n  return node.isComment || node.text === ' '\n}\n\nfunction resolveScopedSlots (\n  fns, // see flow/vnode\n  res\n) {\n  res = res || {};\n  for (var i = 0; i < fns.length; i++) {\n    if (Array.isArray(fns[i])) {\n      resolveScopedSlots(fns[i], res);\n    } else {\n      res[fns[i].key] = fns[i].fn;\n    }\n  }\n  return res\n}\n\n/*  */\n\nvar activeInstance = null;\n\nfunction initLifecycle (vm) {\n  var options = vm.$options;\n\n  // locate first non-abstract parent\n  var parent = options.parent;\n  if (parent && !options.abstract) {\n    while (parent.$options.abstract && parent.$parent) {\n      parent = parent.$parent;\n    }\n    parent.$children.push(vm);\n  }\n\n  vm.$parent = parent;\n  vm.$root = parent ? parent.$root : vm;\n\n  vm.$children = [];\n  vm.$refs = {};\n\n  vm._watcher = null;\n  vm._inactive = null;\n  vm._directInactive = false;\n  vm._isMounted = false;\n  vm._isDestroyed = false;\n  vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n  Vue.prototype._update = function (vnode, hydrating) {\n    var vm = this;\n    if (vm._isMounted) {\n      callHook(vm, 'beforeUpdate');\n    }\n    var prevEl = vm.$el;\n    var prevVnode = vm._vnode;\n    var prevActiveInstance = activeInstance;\n    activeInstance = vm;\n    vm._vnode = vnode;\n    // Vue.prototype.__patch__ is injected in entry points\n    // based on the rendering backend used.\n    if (!prevVnode) {\n      // initial render\n      vm.$el = vm.__patch__(\n        vm.$el, vnode, hydrating, false /* removeOnly */,\n        vm.$options._parentElm,\n        vm.$options._refElm\n      );\n    } else {\n      // updates\n      vm.$el = vm.__patch__(prevVnode, vnode);\n    }\n    activeInstance = prevActiveInstance;\n    // update __vue__ reference\n    if (prevEl) {\n      prevEl.__vue__ = null;\n    }\n    if (vm.$el) {\n      vm.$el.__vue__ = vm;\n    }\n    // if parent is an HOC, update its $el as well\n    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n      vm.$parent.$el = vm.$el;\n    }\n    // updated hook is called by the scheduler to ensure that children are\n    // updated in a parent's updated hook.\n  };\n\n  Vue.prototype.$forceUpdate = function () {\n    var vm = this;\n    if (vm._watcher) {\n      vm._watcher.update();\n    }\n  };\n\n  Vue.prototype.$destroy = function () {\n    var vm = this;\n    if (vm._isBeingDestroyed) {\n      return\n    }\n    callHook(vm, 'beforeDestroy');\n    vm._isBeingDestroyed = true;\n    // remove self from parent\n    var parent = vm.$parent;\n    if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n      remove(parent.$children, vm);\n    }\n    // teardown watchers\n    if (vm._watcher) {\n      vm._watcher.teardown();\n    }\n    var i = vm._watchers.length;\n    while (i--) {\n      vm._watchers[i].teardown();\n    }\n    // remove reference from data ob\n    // frozen object may not have observer.\n    if (vm._data.__ob__) {\n      vm._data.__ob__.vmCount--;\n    }\n    // call the last hook...\n    vm._isDestroyed = true;\n    // invoke destroy hooks on current rendered tree\n    vm.__patch__(vm._vnode, null);\n    // fire destroyed hook\n    callHook(vm, 'destroyed');\n    // turn off all instance listeners.\n    vm.$off();\n    // remove __vue__ reference\n    if (vm.$el) {\n      vm.$el.__vue__ = null;\n    }\n    // remove reference to DOM nodes (prevents leak)\n    vm.$options._parentElm = vm.$options._refElm = null;\n  };\n}\n\nfunction mountComponent (\n  vm,\n  el,\n  hydrating\n) {\n  vm.$el = el;\n  if (!vm.$options.render) {\n    vm.$options.render = createEmptyVNode;\n    if (true) {\n      /* istanbul ignore if */\n      if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n        vm.$options.el || el) {\n        warn(\n          'You are using the runtime-only build of Vue where the template ' +\n          'compiler is not available. Either pre-compile the templates into ' +\n          'render functions, or use the compiler-included build.',\n          vm\n        );\n      } else {\n        warn(\n          'Failed to mount component: template or render function not defined.',\n          vm\n        );\n      }\n    }\n  }\n  callHook(vm, 'beforeMount');\n\n  var updateComponent;\n  /* istanbul ignore if */\n  if ( true && config.performance && mark) {\n    updateComponent = function () {\n      var name = vm._name;\n      var id = vm._uid;\n      var startTag = \"vue-perf-start:\" + id;\n      var endTag = \"vue-perf-end:\" + id;\n\n      mark(startTag);\n      var vnode = vm._render();\n      mark(endTag);\n      measure((name + \" render\"), startTag, endTag);\n\n      mark(startTag);\n      vm._update(vnode, hydrating);\n      mark(endTag);\n      measure((name + \" patch\"), startTag, endTag);\n    };\n  } else {\n    updateComponent = function () {\n      vm._update(vm._render(), hydrating);\n    };\n  }\n\n  vm._watcher = new Watcher(vm, updateComponent, noop);\n  hydrating = false;\n\n  // manually mounted instance, call mounted on self\n  // mounted is called for render-created child components in its inserted hook\n  if (vm.$vnode == null) {\n    vm._isMounted = true;\n    callHook(vm, 'mounted');\n  }\n  return vm\n}\n\nfunction updateChildComponent (\n  vm,\n  propsData,\n  listeners,\n  parentVnode,\n  renderChildren\n) {\n  // determine whether component has slot children\n  // we need to do this before overwriting $options._renderChildren\n  var hasChildren = !!(\n    renderChildren ||               // has new static slots\n    vm.$options._renderChildren ||  // has old static slots\n    parentVnode.data.scopedSlots || // has new scoped slots\n    vm.$scopedSlots !== emptyObject // has old scoped slots\n  );\n\n  vm.$options._parentVnode = parentVnode;\n  vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n  if (vm._vnode) { // update child tree's parent\n    vm._vnode.parent = parentVnode;\n  }\n  vm.$options._renderChildren = renderChildren;\n\n  // update props\n  if (propsData && vm.$options.props) {\n    observerState.shouldConvert = false;\n    if (true) {\n      observerState.isSettingProps = true;\n    }\n    var props = vm._props;\n    var propKeys = vm.$options._propKeys || [];\n    for (var i = 0; i < propKeys.length; i++) {\n      var key = propKeys[i];\n      props[key] = validateProp(key, vm.$options.props, propsData, vm);\n    }\n    observerState.shouldConvert = true;\n    if (true) {\n      observerState.isSettingProps = false;\n    }\n    // keep a copy of raw propsData\n    vm.$options.propsData = propsData;\n  }\n  // update listeners\n  if (listeners) {\n    var oldListeners = vm.$options._parentListeners;\n    vm.$options._parentListeners = listeners;\n    updateComponentListeners(vm, listeners, oldListeners);\n  }\n  // resolve slots + force update if has children\n  if (hasChildren) {\n    vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n    vm.$forceUpdate();\n  }\n}\n\nfunction isInInactiveTree (vm) {\n  while (vm && (vm = vm.$parent)) {\n    if (vm._inactive) { return true }\n  }\n  return false\n}\n\nfunction activateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = false;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  } else if (vm._directInactive) {\n    return\n  }\n  if (vm._inactive || vm._inactive === null) {\n    vm._inactive = false;\n    for (var i = 0; i < vm.$children.length; i++) {\n      activateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'activated');\n  }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = true;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  }\n  if (!vm._inactive) {\n    vm._inactive = true;\n    for (var i = 0; i < vm.$children.length; i++) {\n      deactivateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'deactivated');\n  }\n}\n\nfunction callHook (vm, hook) {\n  var handlers = vm.$options[hook];\n  if (handlers) {\n    for (var i = 0, j = handlers.length; i < j; i++) {\n      try {\n        handlers[i].call(vm);\n      } catch (e) {\n        handleError(e, vm, (hook + \" hook\"));\n      }\n    }\n  }\n  if (vm._hasHookEvent) {\n    vm.$emit('hook:' + hook);\n  }\n}\n\n/*  */\n\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n  index = queue.length = activatedChildren.length = 0;\n  has = {};\n  if (true) {\n    circular = {};\n  }\n  waiting = flushing = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n  flushing = true;\n  var watcher, id;\n\n  // Sort queue before flush.\n  // This ensures that:\n  // 1. Components are updated from parent to child. (because parent is always\n  //    created before the child)\n  // 2. A component's user watchers are run before its render watcher (because\n  //    user watchers are created before the render watcher)\n  // 3. If a component is destroyed during a parent component's watcher run,\n  //    its watchers can be skipped.\n  queue.sort(function (a, b) { return a.id - b.id; });\n\n  // do not cache length because more watchers might be pushed\n  // as we run existing watchers\n  for (index = 0; index < queue.length; index++) {\n    watcher = queue[index];\n    id = watcher.id;\n    has[id] = null;\n    watcher.run();\n    // in dev build, check and stop circular updates.\n    if ( true && has[id] != null) {\n      circular[id] = (circular[id] || 0) + 1;\n      if (circular[id] > MAX_UPDATE_COUNT) {\n        warn(\n          'You may have an infinite update loop ' + (\n            watcher.user\n              ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n              : \"in a component render function.\"\n          ),\n          watcher.vm\n        );\n        break\n      }\n    }\n  }\n\n  // keep copies of post queues before resetting state\n  var activatedQueue = activatedChildren.slice();\n  var updatedQueue = queue.slice();\n\n  resetSchedulerState();\n\n  // call component updated and activated hooks\n  callActivatedHooks(activatedQueue);\n  callUpdateHooks(updatedQueue);\n\n  // devtool hook\n  /* istanbul ignore if */\n  if (devtools && config.devtools) {\n    devtools.emit('flush');\n  }\n}\n\nfunction callUpdateHooks (queue) {\n  var i = queue.length;\n  while (i--) {\n    var watcher = queue[i];\n    var vm = watcher.vm;\n    if (vm._watcher === watcher && vm._isMounted) {\n      callHook(vm, 'updated');\n    }\n  }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n  // setting _inactive to false here so that a render function can\n  // rely on checking whether it's in an inactive tree (e.g. router-view)\n  vm._inactive = false;\n  activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n  for (var i = 0; i < queue.length; i++) {\n    queue[i]._inactive = true;\n    activateChildComponent(queue[i], true /* true */);\n  }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n  var id = watcher.id;\n  if (has[id] == null) {\n    has[id] = true;\n    if (!flushing) {\n      queue.push(watcher);\n    } else {\n      // if already flushing, splice the watcher based on its id\n      // if already past its id, it will be run next immediately.\n      var i = queue.length - 1;\n      while (i > index && queue[i].id > watcher.id) {\n        i--;\n      }\n      queue.splice(i + 1, 0, watcher);\n    }\n    // queue the flush\n    if (!waiting) {\n      waiting = true;\n      nextTick(flushSchedulerQueue);\n    }\n  }\n}\n\n/*  */\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n  vm,\n  expOrFn,\n  cb,\n  options\n) {\n  this.vm = vm;\n  vm._watchers.push(this);\n  // options\n  if (options) {\n    this.deep = !!options.deep;\n    this.user = !!options.user;\n    this.lazy = !!options.lazy;\n    this.sync = !!options.sync;\n  } else {\n    this.deep = this.user = this.lazy = this.sync = false;\n  }\n  this.cb = cb;\n  this.id = ++uid$2; // uid for batching\n  this.active = true;\n  this.dirty = this.lazy; // for lazy watchers\n  this.deps = [];\n  this.newDeps = [];\n  this.depIds = new _Set();\n  this.newDepIds = new _Set();\n  this.expression =  true\n    ? expOrFn.toString()\n    : undefined;\n  // parse expression for getter\n  if (typeof expOrFn === 'function') {\n    this.getter = expOrFn;\n  } else {\n    this.getter = parsePath(expOrFn);\n    if (!this.getter) {\n      this.getter = function () {};\n       true && warn(\n        \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n        'Watcher only accepts simple dot-delimited paths. ' +\n        'For full control, use a function instead.',\n        vm\n      );\n    }\n  }\n  this.value = this.lazy\n    ? undefined\n    : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n  pushTarget(this);\n  var value;\n  var vm = this.vm;\n  if (this.user) {\n    try {\n      value = this.getter.call(vm, vm);\n    } catch (e) {\n      handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n    }\n  } else {\n    value = this.getter.call(vm, vm);\n  }\n  // \"touch\" every property so they are all tracked as\n  // dependencies for deep watching\n  if (this.deep) {\n    traverse(value);\n  }\n  popTarget();\n  this.cleanupDeps();\n  return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n  var id = dep.id;\n  if (!this.newDepIds.has(id)) {\n    this.newDepIds.add(id);\n    this.newDeps.push(dep);\n    if (!this.depIds.has(id)) {\n      dep.addSub(this);\n    }\n  }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n    var this$1 = this;\n\n  var i = this.deps.length;\n  while (i--) {\n    var dep = this$1.deps[i];\n    if (!this$1.newDepIds.has(dep.id)) {\n      dep.removeSub(this$1);\n    }\n  }\n  var tmp = this.depIds;\n  this.depIds = this.newDepIds;\n  this.newDepIds = tmp;\n  this.newDepIds.clear();\n  tmp = this.deps;\n  this.deps = this.newDeps;\n  this.newDeps = tmp;\n  this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n  /* istanbul ignore else */\n  if (this.lazy) {\n    this.dirty = true;\n  } else if (this.sync) {\n    this.run();\n  } else {\n    queueWatcher(this);\n  }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n  if (this.active) {\n    var value = this.get();\n    if (\n      value !== this.value ||\n      // Deep watchers and watchers on Object/Arrays should fire even\n      // when the value is the same, because the value may\n      // have mutated.\n      isObject(value) ||\n      this.deep\n    ) {\n      // set new value\n      var oldValue = this.value;\n      this.value = value;\n      if (this.user) {\n        try {\n          this.cb.call(this.vm, value, oldValue);\n        } catch (e) {\n          handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n        }\n      } else {\n        this.cb.call(this.vm, value, oldValue);\n      }\n    }\n  }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n  this.value = this.get();\n  this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n    var this$1 = this;\n\n  var i = this.deps.length;\n  while (i--) {\n    this$1.deps[i].depend();\n  }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n    var this$1 = this;\n\n  if (this.active) {\n    // remove self from vm's watcher list\n    // this is a somewhat expensive operation so we skip it\n    // if the vm is being destroyed.\n    if (!this.vm._isBeingDestroyed) {\n      remove(this.vm._watchers, this);\n    }\n    var i = this.deps.length;\n    while (i--) {\n      this$1.deps[i].removeSub(this$1);\n    }\n    this.active = false;\n  }\n};\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nvar seenObjects = new _Set();\nfunction traverse (val) {\n  seenObjects.clear();\n  _traverse(val, seenObjects);\n}\n\nfunction _traverse (val, seen) {\n  var i, keys;\n  var isA = Array.isArray(val);\n  if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {\n    return\n  }\n  if (val.__ob__) {\n    var depId = val.__ob__.dep.id;\n    if (seen.has(depId)) {\n      return\n    }\n    seen.add(depId);\n  }\n  if (isA) {\n    i = val.length;\n    while (i--) { _traverse(val[i], seen); }\n  } else {\n    keys = Object.keys(val);\n    i = keys.length;\n    while (i--) { _traverse(val[keys[i]], seen); }\n  }\n}\n\n/*  */\n\nvar sharedPropertyDefinition = {\n  enumerable: true,\n  configurable: true,\n  get: noop,\n  set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n  sharedPropertyDefinition.get = function proxyGetter () {\n    return this[sourceKey][key]\n  };\n  sharedPropertyDefinition.set = function proxySetter (val) {\n    this[sourceKey][key] = val;\n  };\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n  vm._watchers = [];\n  var opts = vm.$options;\n  if (opts.props) { initProps(vm, opts.props); }\n  if (opts.methods) { initMethods(vm, opts.methods); }\n  if (opts.data) {\n    initData(vm);\n  } else {\n    observe(vm._data = {}, true /* asRootData */);\n  }\n  if (opts.computed) { initComputed(vm, opts.computed); }\n  if (opts.watch) { initWatch(vm, opts.watch); }\n}\n\nvar isReservedProp = {\n  key: 1,\n  ref: 1,\n  slot: 1\n};\n\nfunction initProps (vm, propsOptions) {\n  var propsData = vm.$options.propsData || {};\n  var props = vm._props = {};\n  // cache prop keys so that future props updates can iterate using Array\n  // instead of dynamic object key enumeration.\n  var keys = vm.$options._propKeys = [];\n  var isRoot = !vm.$parent;\n  // root instance props should be converted\n  observerState.shouldConvert = isRoot;\n  var loop = function ( key ) {\n    keys.push(key);\n    var value = validateProp(key, propsOptions, propsData, vm);\n    /* istanbul ignore else */\n    if (true) {\n      if (isReservedProp[key] || config.isReservedAttr(key)) {\n        warn(\n          (\"\\\"\" + key + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n          vm\n        );\n      }\n      defineReactive$$1(props, key, value, function () {\n        if (vm.$parent && !observerState.isSettingProps) {\n          warn(\n            \"Avoid mutating a prop directly since the value will be \" +\n            \"overwritten whenever the parent component re-renders. \" +\n            \"Instead, use a data or computed property based on the prop's \" +\n            \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        }\n      });\n    } else {}\n    // static props are already proxied on the component's prototype\n    // during Vue.extend(). We only need to proxy props defined at\n    // instantiation here.\n    if (!(key in vm)) {\n      proxy(vm, \"_props\", key);\n    }\n  };\n\n  for (var key in propsOptions) loop( key );\n  observerState.shouldConvert = true;\n}\n\nfunction initData (vm) {\n  var data = vm.$options.data;\n  data = vm._data = typeof data === 'function'\n    ? getData(data, vm)\n    : data || {};\n  if (!isPlainObject(data)) {\n    data = {};\n     true && warn(\n      'data functions should return an object:\\n' +\n      'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n      vm\n    );\n  }\n  // proxy data on instance\n  var keys = Object.keys(data);\n  var props = vm.$options.props;\n  var i = keys.length;\n  while (i--) {\n    if (props && hasOwn(props, keys[i])) {\n       true && warn(\n        \"The data property \\\"\" + (keys[i]) + \"\\\" is already declared as a prop. \" +\n        \"Use prop default value instead.\",\n        vm\n      );\n    } else if (!isReserved(keys[i])) {\n      proxy(vm, \"_data\", keys[i]);\n    }\n  }\n  // observe data\n  observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n  try {\n    return data.call(vm)\n  } catch (e) {\n    handleError(e, vm, \"data()\");\n    return {}\n  }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n  var watchers = vm._computedWatchers = Object.create(null);\n\n  for (var key in computed) {\n    var userDef = computed[key];\n    var getter = typeof userDef === 'function' ? userDef : userDef.get;\n    if (true) {\n      if (getter === undefined) {\n        warn(\n          (\"No getter function has been defined for computed property \\\"\" + key + \"\\\".\"),\n          vm\n        );\n        getter = noop;\n      }\n    }\n    // create internal watcher for the computed property.\n    watchers[key] = new Watcher(vm, getter, noop, computedWatcherOptions);\n\n    // component-defined computed properties are already defined on the\n    // component prototype. We only need to define computed properties defined\n    // at instantiation here.\n    if (!(key in vm)) {\n      defineComputed(vm, key, userDef);\n    } else if (true) {\n      if (key in vm.$data) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n      } else if (vm.$options.props && key in vm.$options.props) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n      }\n    }\n  }\n}\n\nfunction defineComputed (target, key, userDef) {\n  if (typeof userDef === 'function') {\n    sharedPropertyDefinition.get = createComputedGetter(key);\n    sharedPropertyDefinition.set = noop;\n  } else {\n    sharedPropertyDefinition.get = userDef.get\n      ? userDef.cache !== false\n        ? createComputedGetter(key)\n        : userDef.get\n      : noop;\n    sharedPropertyDefinition.set = userDef.set\n      ? userDef.set\n      : noop;\n  }\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n  return function computedGetter () {\n    var watcher = this._computedWatchers && this._computedWatchers[key];\n    if (watcher) {\n      if (watcher.dirty) {\n        watcher.evaluate();\n      }\n      if (Dep.target) {\n        watcher.depend();\n      }\n      return watcher.value\n    }\n  }\n}\n\nfunction initMethods (vm, methods) {\n  var props = vm.$options.props;\n  for (var key in methods) {\n    vm[key] = methods[key] == null ? noop : bind(methods[key], vm);\n    if (true) {\n      if (methods[key] == null) {\n        warn(\n          \"method \\\"\" + key + \"\\\" has an undefined value in the component definition. \" +\n          \"Did you reference the function correctly?\",\n          vm\n        );\n      }\n      if (props && hasOwn(props, key)) {\n        warn(\n          (\"method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n          vm\n        );\n      }\n    }\n  }\n}\n\nfunction initWatch (vm, watch) {\n  for (var key in watch) {\n    var handler = watch[key];\n    if (Array.isArray(handler)) {\n      for (var i = 0; i < handler.length; i++) {\n        createWatcher(vm, key, handler[i]);\n      }\n    } else {\n      createWatcher(vm, key, handler);\n    }\n  }\n}\n\nfunction createWatcher (vm, key, handler) {\n  var options;\n  if (isPlainObject(handler)) {\n    options = handler;\n    handler = handler.handler;\n  }\n  if (typeof handler === 'string') {\n    handler = vm[handler];\n  }\n  vm.$watch(key, handler, options);\n}\n\nfunction stateMixin (Vue) {\n  // flow somehow has problems with directly declared definition object\n  // when using Object.defineProperty, so we have to procedurally build up\n  // the object here.\n  var dataDef = {};\n  dataDef.get = function () { return this._data };\n  var propsDef = {};\n  propsDef.get = function () { return this._props };\n  if (true) {\n    dataDef.set = function (newData) {\n      warn(\n        'Avoid replacing instance root $data. ' +\n        'Use nested data properties instead.',\n        this\n      );\n    };\n    propsDef.set = function () {\n      warn(\"$props is readonly.\", this);\n    };\n  }\n  Object.defineProperty(Vue.prototype, '$data', dataDef);\n  Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n  Vue.prototype.$set = set;\n  Vue.prototype.$delete = del;\n\n  Vue.prototype.$watch = function (\n    expOrFn,\n    cb,\n    options\n  ) {\n    var vm = this;\n    options = options || {};\n    options.user = true;\n    var watcher = new Watcher(vm, expOrFn, cb, options);\n    if (options.immediate) {\n      cb.call(vm, watcher.value);\n    }\n    return function unwatchFn () {\n      watcher.teardown();\n    }\n  };\n}\n\n/*  */\n\nfunction initProvide (vm) {\n  var provide = vm.$options.provide;\n  if (provide) {\n    vm._provided = typeof provide === 'function'\n      ? provide.call(vm)\n      : provide;\n  }\n}\n\nfunction initInjections (vm) {\n  var result = resolveInject(vm.$options.inject, vm);\n  if (result) {\n    Object.keys(result).forEach(function (key) {\n      /* istanbul ignore else */\n      if (true) {\n        defineReactive$$1(vm, key, result[key], function () {\n          warn(\n            \"Avoid mutating an injected value directly since the changes will be \" +\n            \"overwritten whenever the provided component re-renders. \" +\n            \"injection being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        });\n      } else {}\n    });\n  }\n}\n\nfunction resolveInject (inject, vm) {\n  if (inject) {\n    // inject is :any because flow is not smart enough to figure out cached\n    // isArray here\n    var isArray = Array.isArray(inject);\n    var result = Object.create(null);\n    var keys = isArray\n      ? inject\n      : hasSymbol\n        ? Reflect.ownKeys(inject)\n        : Object.keys(inject);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      var provideKey = isArray ? key : inject[key];\n      var source = vm;\n      while (source) {\n        if (source._provided && provideKey in source._provided) {\n          result[key] = source._provided[provideKey];\n          break\n        }\n        source = source.$parent;\n      }\n    }\n    return result\n  }\n}\n\n/*  */\n\nfunction createFunctionalComponent (\n  Ctor,\n  propsData,\n  data,\n  context,\n  children\n) {\n  var props = {};\n  var propOptions = Ctor.options.props;\n  if (isDef(propOptions)) {\n    for (var key in propOptions) {\n      props[key] = validateProp(key, propOptions, propsData || {});\n    }\n  } else {\n    if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n    if (isDef(data.props)) { mergeProps(props, data.props); }\n  }\n  // ensure the createElement function in functional components\n  // gets a unique context - this is necessary for correct named slot check\n  var _context = Object.create(context);\n  var h = function (a, b, c, d) { return createElement(_context, a, b, c, d, true); };\n  var vnode = Ctor.options.render.call(null, h, {\n    data: data,\n    props: props,\n    children: children,\n    parent: context,\n    listeners: data.on || {},\n    injections: resolveInject(Ctor.options.inject, context),\n    slots: function () { return resolveSlots(children, context); }\n  });\n  if (vnode instanceof VNode) {\n    vnode.functionalContext = context;\n    vnode.functionalOptions = Ctor.options;\n    if (data.slot) {\n      (vnode.data || (vnode.data = {})).slot = data.slot;\n    }\n  }\n  return vnode\n}\n\nfunction mergeProps (to, from) {\n  for (var key in from) {\n    to[camelize(key)] = from[key];\n  }\n}\n\n/*  */\n\n// hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n  init: function init (\n    vnode,\n    hydrating,\n    parentElm,\n    refElm\n  ) {\n    if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) {\n      var child = vnode.componentInstance = createComponentInstanceForVnode(\n        vnode,\n        activeInstance,\n        parentElm,\n        refElm\n      );\n      child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n    } else if (vnode.data.keepAlive) {\n      // kept-alive components, treat as a patch\n      var mountedNode = vnode; // work around flow\n      componentVNodeHooks.prepatch(mountedNode, mountedNode);\n    }\n  },\n\n  prepatch: function prepatch (oldVnode, vnode) {\n    var options = vnode.componentOptions;\n    var child = vnode.componentInstance = oldVnode.componentInstance;\n    updateChildComponent(\n      child,\n      options.propsData, // updated props\n      options.listeners, // updated listeners\n      vnode, // new parent vnode\n      options.children // new children\n    );\n  },\n\n  insert: function insert (vnode) {\n    var context = vnode.context;\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isMounted) {\n      componentInstance._isMounted = true;\n      callHook(componentInstance, 'mounted');\n    }\n    if (vnode.data.keepAlive) {\n      if (context._isMounted) {\n        // vue-router#1212\n        // During updates, a kept-alive component's child components may\n        // change, so directly walking the tree here may call activated hooks\n        // on incorrect children. Instead we push them into a queue which will\n        // be processed after the whole patch process ended.\n        queueActivatedComponent(componentInstance);\n      } else {\n        activateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  },\n\n  destroy: function destroy (vnode) {\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isDestroyed) {\n      if (!vnode.data.keepAlive) {\n        componentInstance.$destroy();\n      } else {\n        deactivateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n  Ctor,\n  data,\n  context,\n  children,\n  tag\n) {\n  if (isUndef(Ctor)) {\n    return\n  }\n\n  var baseCtor = context.$options._base;\n\n  // plain options object: turn it into a constructor\n  if (isObject(Ctor)) {\n    Ctor = baseCtor.extend(Ctor);\n  }\n\n  // if at this stage it's not a constructor or an async component factory,\n  // reject.\n  if (typeof Ctor !== 'function') {\n    if (true) {\n      warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n    }\n    return\n  }\n\n  // async component\n  if (isUndef(Ctor.cid)) {\n    Ctor = resolveAsyncComponent(Ctor, baseCtor, context);\n    if (Ctor === undefined) {\n      // return nothing if this is indeed an async component\n      // wait for the callback to trigger parent update.\n      return\n    }\n  }\n\n  // resolve constructor options in case global mixins are applied after\n  // component constructor creation\n  resolveConstructorOptions(Ctor);\n\n  data = data || {};\n\n  // transform component v-model data into props & events\n  if (isDef(data.model)) {\n    transformModel(Ctor.options, data);\n  }\n\n  // extract props\n  var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n  // functional component\n  if (isTrue(Ctor.options.functional)) {\n    return createFunctionalComponent(Ctor, propsData, data, context, children)\n  }\n\n  // extract listeners, since these needs to be treated as\n  // child component listeners instead of DOM listeners\n  var listeners = data.on;\n  // replace with listeners with .native modifier\n  data.on = data.nativeOn;\n\n  if (isTrue(Ctor.options.abstract)) {\n    // abstract components do not keep anything\n    // other than props & listeners\n    data = {};\n  }\n\n  // merge component management hooks onto the placeholder node\n  mergeHooks(data);\n\n  // return a placeholder vnode\n  var name = Ctor.options.name || tag;\n  var vnode = new VNode(\n    (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n    data, undefined, undefined, undefined, context,\n    { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }\n  );\n  return vnode\n}\n\nfunction createComponentInstanceForVnode (\n  vnode, // we know it's MountedComponentVNode but flow doesn't\n  parent, // activeInstance in lifecycle state\n  parentElm,\n  refElm\n) {\n  var vnodeComponentOptions = vnode.componentOptions;\n  var options = {\n    _isComponent: true,\n    parent: parent,\n    propsData: vnodeComponentOptions.propsData,\n    _componentTag: vnodeComponentOptions.tag,\n    _parentVnode: vnode,\n    _parentListeners: vnodeComponentOptions.listeners,\n    _renderChildren: vnodeComponentOptions.children,\n    _parentElm: parentElm || null,\n    _refElm: refElm || null\n  };\n  // check inline-template render functions\n  var inlineTemplate = vnode.data.inlineTemplate;\n  if (isDef(inlineTemplate)) {\n    options.render = inlineTemplate.render;\n    options.staticRenderFns = inlineTemplate.staticRenderFns;\n  }\n  return new vnodeComponentOptions.Ctor(options)\n}\n\nfunction mergeHooks (data) {\n  if (!data.hook) {\n    data.hook = {};\n  }\n  for (var i = 0; i < hooksToMerge.length; i++) {\n    var key = hooksToMerge[i];\n    var fromParent = data.hook[key];\n    var ours = componentVNodeHooks[key];\n    data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;\n  }\n}\n\nfunction mergeHook$1 (one, two) {\n  return function (a, b, c, d) {\n    one(a, b, c, d);\n    two(a, b, c, d);\n  }\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n  var prop = (options.model && options.model.prop) || 'value';\n  var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;\n  var on = data.on || (data.on = {});\n  if (isDef(on[event])) {\n    on[event] = [data.model.callback].concat(on[event]);\n  } else {\n    on[event] = data.model.callback;\n  }\n}\n\n/*  */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType,\n  alwaysNormalize\n) {\n  if (Array.isArray(data) || isPrimitive(data)) {\n    normalizationType = children;\n    children = data;\n    data = undefined;\n  }\n  if (isTrue(alwaysNormalize)) {\n    normalizationType = ALWAYS_NORMALIZE;\n  }\n  return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType\n) {\n  if (isDef(data) && isDef((data).__ob__)) {\n     true && warn(\n      \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n      'Always create fresh vnode data objects in each render!',\n      context\n    );\n    return createEmptyVNode()\n  }\n  if (!tag) {\n    // in case of component :is set to falsy value\n    return createEmptyVNode()\n  }\n  // support single function children as default scoped slot\n  if (Array.isArray(children) &&\n    typeof children[0] === 'function'\n  ) {\n    data = data || {};\n    data.scopedSlots = { default: children[0] };\n    children.length = 0;\n  }\n  if (normalizationType === ALWAYS_NORMALIZE) {\n    children = normalizeChildren(children);\n  } else if (normalizationType === SIMPLE_NORMALIZE) {\n    children = simpleNormalizeChildren(children);\n  }\n  var vnode, ns;\n  if (typeof tag === 'string') {\n    var Ctor;\n    ns = config.getTagNamespace(tag);\n    if (config.isReservedTag(tag)) {\n      // platform built-in elements\n      vnode = new VNode(\n        config.parsePlatformTagName(tag), data, children,\n        undefined, undefined, context\n      );\n    } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n      // component\n      vnode = createComponent(Ctor, data, context, children, tag);\n    } else {\n      // unknown or unlisted namespaced elements\n      // check at runtime because it may get assigned a namespace when its\n      // parent normalizes children\n      vnode = new VNode(\n        tag, data, children,\n        undefined, undefined, context\n      );\n    }\n  } else {\n    // direct component options / constructor\n    vnode = createComponent(tag, data, context, children);\n  }\n  if (isDef(vnode)) {\n    if (ns) { applyNS(vnode, ns); }\n    return vnode\n  } else {\n    return createEmptyVNode()\n  }\n}\n\nfunction applyNS (vnode, ns) {\n  vnode.ns = ns;\n  if (vnode.tag === 'foreignObject') {\n    // use default namespace inside foreignObject\n    return\n  }\n  if (isDef(vnode.children)) {\n    for (var i = 0, l = vnode.children.length; i < l; i++) {\n      var child = vnode.children[i];\n      if (isDef(child.tag) && isUndef(child.ns)) {\n        applyNS(child, ns);\n      }\n    }\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n  val,\n  render\n) {\n  var ret, i, l, keys, key;\n  if (Array.isArray(val) || typeof val === 'string') {\n    ret = new Array(val.length);\n    for (i = 0, l = val.length; i < l; i++) {\n      ret[i] = render(val[i], i);\n    }\n  } else if (typeof val === 'number') {\n    ret = new Array(val);\n    for (i = 0; i < val; i++) {\n      ret[i] = render(i + 1, i);\n    }\n  } else if (isObject(val)) {\n    keys = Object.keys(val);\n    ret = new Array(keys.length);\n    for (i = 0, l = keys.length; i < l; i++) {\n      key = keys[i];\n      ret[i] = render(val[key], key, i);\n    }\n  }\n  if (isDef(ret)) {\n    (ret)._isVList = true;\n  }\n  return ret\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n  name,\n  fallback,\n  props,\n  bindObject\n) {\n  var scopedSlotFn = this.$scopedSlots[name];\n  if (scopedSlotFn) { // scoped slot\n    props = props || {};\n    if (bindObject) {\n      extend(props, bindObject);\n    }\n    return scopedSlotFn(props) || fallback\n  } else {\n    var slotNodes = this.$slots[name];\n    // warn duplicate slot usage\n    if (slotNodes && \"staging\" !== 'production') {\n      slotNodes._rendered && warn(\n        \"Duplicate presence of slot \\\"\" + name + \"\\\" found in the same render tree \" +\n        \"- this will likely cause render errors.\",\n        this\n      );\n      slotNodes._rendered = true;\n    }\n    return slotNodes || fallback\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n  return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/*  */\n\n/**\n * Runtime helper for checking keyCodes from config.\n */\nfunction checkKeyCodes (\n  eventKeyCode,\n  key,\n  builtInAlias\n) {\n  var keyCodes = config.keyCodes[key] || builtInAlias;\n  if (Array.isArray(keyCodes)) {\n    return keyCodes.indexOf(eventKeyCode) === -1\n  } else {\n    return keyCodes !== eventKeyCode\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n  data,\n  tag,\n  value,\n  asProp\n) {\n  if (value) {\n    if (!isObject(value)) {\n       true && warn(\n        'v-bind without argument expects an Object or Array value',\n        this\n      );\n    } else {\n      if (Array.isArray(value)) {\n        value = toObject(value);\n      }\n      var hash;\n      for (var key in value) {\n        if (key === 'class' || key === 'style') {\n          hash = data;\n        } else {\n          var type = data.attrs && data.attrs.type;\n          hash = asProp || config.mustUseProp(tag, type, key)\n            ? data.domProps || (data.domProps = {})\n            : data.attrs || (data.attrs = {});\n        }\n        if (!(key in hash)) {\n          hash[key] = value[key];\n        }\n      }\n    }\n  }\n  return data\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n  index,\n  isInFor\n) {\n  var tree = this._staticTrees[index];\n  // if has already-rendered static tree and not inside v-for,\n  // we can reuse the same tree by doing a shallow clone.\n  if (tree && !isInFor) {\n    return Array.isArray(tree)\n      ? cloneVNodes(tree)\n      : cloneVNode(tree)\n  }\n  // otherwise, render a fresh tree.\n  tree = this._staticTrees[index] =\n    this.$options.staticRenderFns[index].call(this._renderProxy);\n  markStatic(tree, (\"__static__\" + index), false);\n  return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n  tree,\n  index,\n  key\n) {\n  markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n  return tree\n}\n\nfunction markStatic (\n  tree,\n  key,\n  isOnce\n) {\n  if (Array.isArray(tree)) {\n    for (var i = 0; i < tree.length; i++) {\n      if (tree[i] && typeof tree[i] !== 'string') {\n        markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n      }\n    }\n  } else {\n    markStaticNode(tree, key, isOnce);\n  }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n  node.isStatic = true;\n  node.key = key;\n  node.isOnce = isOnce;\n}\n\n/*  */\n\nfunction initRender (vm) {\n  vm._vnode = null; // the root of the child tree\n  vm._staticTrees = null;\n  var parentVnode = vm.$vnode = vm.$options._parentVnode; // the placeholder node in parent tree\n  var renderContext = parentVnode && parentVnode.context;\n  vm.$slots = resolveSlots(vm.$options._renderChildren, renderContext);\n  vm.$scopedSlots = emptyObject;\n  // bind the createElement fn to this instance\n  // so that we get proper render context inside it.\n  // args order: tag, data, children, normalizationType, alwaysNormalize\n  // internal version is used by render functions compiled from templates\n  vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n  // normalization is always applied for the public version, used in\n  // user-written render functions.\n  vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n}\n\nfunction renderMixin (Vue) {\n  Vue.prototype.$nextTick = function (fn) {\n    return nextTick(fn, this)\n  };\n\n  Vue.prototype._render = function () {\n    var vm = this;\n    var ref = vm.$options;\n    var render = ref.render;\n    var staticRenderFns = ref.staticRenderFns;\n    var _parentVnode = ref._parentVnode;\n\n    if (vm._isMounted) {\n      // clone slot nodes on re-renders\n      for (var key in vm.$slots) {\n        vm.$slots[key] = cloneVNodes(vm.$slots[key]);\n      }\n    }\n\n    vm.$scopedSlots = (_parentVnode && _parentVnode.data.scopedSlots) || emptyObject;\n\n    if (staticRenderFns && !vm._staticTrees) {\n      vm._staticTrees = [];\n    }\n    // set parent vnode. this allows render functions to have access\n    // to the data on the placeholder node.\n    vm.$vnode = _parentVnode;\n    // render self\n    var vnode;\n    try {\n      vnode = render.call(vm._renderProxy, vm.$createElement);\n    } catch (e) {\n      handleError(e, vm, \"render function\");\n      // return error render result,\n      // or previous vnode to prevent render error causing blank component\n      /* istanbul ignore else */\n      if (true) {\n        vnode = vm.$options.renderError\n          ? vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e)\n          : vm._vnode;\n      } else {}\n    }\n    // return empty vnode in case the render function errored out\n    if (!(vnode instanceof VNode)) {\n      if ( true && Array.isArray(vnode)) {\n        warn(\n          'Multiple root nodes returned from render function. Render function ' +\n          'should return a single root node.',\n          vm\n        );\n      }\n      vnode = createEmptyVNode();\n    }\n    // set parent\n    vnode.parent = _parentVnode;\n    return vnode\n  };\n\n  // internal render helpers.\n  // these are exposed on the instance prototype to reduce generated render\n  // code size.\n  Vue.prototype._o = markOnce;\n  Vue.prototype._n = toNumber;\n  Vue.prototype._s = toString;\n  Vue.prototype._l = renderList;\n  Vue.prototype._t = renderSlot;\n  Vue.prototype._q = looseEqual;\n  Vue.prototype._i = looseIndexOf;\n  Vue.prototype._m = renderStatic;\n  Vue.prototype._f = resolveFilter;\n  Vue.prototype._k = checkKeyCodes;\n  Vue.prototype._b = bindObjectProps;\n  Vue.prototype._v = createTextVNode;\n  Vue.prototype._e = createEmptyVNode;\n  Vue.prototype._u = resolveScopedSlots;\n}\n\n/*  */\n\nvar uid = 0;\n\nfunction initMixin (Vue) {\n  Vue.prototype._init = function (options) {\n    var vm = this;\n    // a uid\n    vm._uid = uid++;\n\n    var startTag, endTag;\n    /* istanbul ignore if */\n    if ( true && config.performance && mark) {\n      startTag = \"vue-perf-init:\" + (vm._uid);\n      endTag = \"vue-perf-end:\" + (vm._uid);\n      mark(startTag);\n    }\n\n    // a flag to avoid this being observed\n    vm._isVue = true;\n    // merge options\n    if (options && options._isComponent) {\n      // optimize internal component instantiation\n      // since dynamic options merging is pretty slow, and none of the\n      // internal component options needs special treatment.\n      initInternalComponent(vm, options);\n    } else {\n      vm.$options = mergeOptions(\n        resolveConstructorOptions(vm.constructor),\n        options || {},\n        vm\n      );\n    }\n    /* istanbul ignore else */\n    if (true) {\n      initProxy(vm);\n    } else {}\n    // expose real self\n    vm._self = vm;\n    initLifecycle(vm);\n    initEvents(vm);\n    initRender(vm);\n    callHook(vm, 'beforeCreate');\n    initInjections(vm); // resolve injections before data/props\n    initState(vm);\n    initProvide(vm); // resolve provide after data/props\n    callHook(vm, 'created');\n\n    /* istanbul ignore if */\n    if ( true && config.performance && mark) {\n      vm._name = formatComponentName(vm, false);\n      mark(endTag);\n      measure(((vm._name) + \" init\"), startTag, endTag);\n    }\n\n    if (vm.$options.el) {\n      vm.$mount(vm.$options.el);\n    }\n  };\n}\n\nfunction initInternalComponent (vm, options) {\n  var opts = vm.$options = Object.create(vm.constructor.options);\n  // doing this because it's faster than dynamic enumeration.\n  opts.parent = options.parent;\n  opts.propsData = options.propsData;\n  opts._parentVnode = options._parentVnode;\n  opts._parentListeners = options._parentListeners;\n  opts._renderChildren = options._renderChildren;\n  opts._componentTag = options._componentTag;\n  opts._parentElm = options._parentElm;\n  opts._refElm = options._refElm;\n  if (options.render) {\n    opts.render = options.render;\n    opts.staticRenderFns = options.staticRenderFns;\n  }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n  var options = Ctor.options;\n  if (Ctor.super) {\n    var superOptions = resolveConstructorOptions(Ctor.super);\n    var cachedSuperOptions = Ctor.superOptions;\n    if (superOptions !== cachedSuperOptions) {\n      // super option changed,\n      // need to resolve new options.\n      Ctor.superOptions = superOptions;\n      // check if there are any late-modified/attached options (#4976)\n      var modifiedOptions = resolveModifiedOptions(Ctor);\n      // update base extend options\n      if (modifiedOptions) {\n        extend(Ctor.extendOptions, modifiedOptions);\n      }\n      options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n      if (options.name) {\n        options.components[options.name] = Ctor;\n      }\n    }\n  }\n  return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n  var modified;\n  var latest = Ctor.options;\n  var extended = Ctor.extendOptions;\n  var sealed = Ctor.sealedOptions;\n  for (var key in latest) {\n    if (latest[key] !== sealed[key]) {\n      if (!modified) { modified = {}; }\n      modified[key] = dedupe(latest[key], extended[key], sealed[key]);\n    }\n  }\n  return modified\n}\n\nfunction dedupe (latest, extended, sealed) {\n  // compare latest and sealed to ensure lifecycle hooks won't be duplicated\n  // between merges\n  if (Array.isArray(latest)) {\n    var res = [];\n    sealed = Array.isArray(sealed) ? sealed : [sealed];\n    extended = Array.isArray(extended) ? extended : [extended];\n    for (var i = 0; i < latest.length; i++) {\n      // push original options and not sealed options to exclude duplicated options\n      if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\n        res.push(latest[i]);\n      }\n    }\n    return res\n  } else {\n    return latest\n  }\n}\n\nfunction Vue$3 (options) {\n  if ( true &&\n    !(this instanceof Vue$3)\n  ) {\n    warn('Vue is a constructor and should be called with the `new` keyword');\n  }\n  this._init(options);\n}\n\ninitMixin(Vue$3);\nstateMixin(Vue$3);\neventsMixin(Vue$3);\nlifecycleMixin(Vue$3);\nrenderMixin(Vue$3);\n\n/*  */\n\nfunction initUse (Vue) {\n  Vue.use = function (plugin) {\n    /* istanbul ignore if */\n    if (plugin.installed) {\n      return this\n    }\n    // additional parameters\n    var args = toArray(arguments, 1);\n    args.unshift(this);\n    if (typeof plugin.install === 'function') {\n      plugin.install.apply(plugin, args);\n    } else if (typeof plugin === 'function') {\n      plugin.apply(null, args);\n    }\n    plugin.installed = true;\n    return this\n  };\n}\n\n/*  */\n\nfunction initMixin$1 (Vue) {\n  Vue.mixin = function (mixin) {\n    this.options = mergeOptions(this.options, mixin);\n    return this\n  };\n}\n\n/*  */\n\nfunction initExtend (Vue) {\n  /**\n   * Each instance constructor, including Vue, has a unique\n   * cid. This enables us to create wrapped \"child\n   * constructors\" for prototypal inheritance and cache them.\n   */\n  Vue.cid = 0;\n  var cid = 1;\n\n  /**\n   * Class inheritance\n   */\n  Vue.extend = function (extendOptions) {\n    extendOptions = extendOptions || {};\n    var Super = this;\n    var SuperId = Super.cid;\n    var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n    if (cachedCtors[SuperId]) {\n      return cachedCtors[SuperId]\n    }\n\n    var name = extendOptions.name || Super.options.name;\n    if (true) {\n      if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n        warn(\n          'Invalid component name: \"' + name + '\". Component names ' +\n          'can only contain alphanumeric characters and the hyphen, ' +\n          'and must start with a letter.'\n        );\n      }\n    }\n\n    var Sub = function VueComponent (options) {\n      this._init(options);\n    };\n    Sub.prototype = Object.create(Super.prototype);\n    Sub.prototype.constructor = Sub;\n    Sub.cid = cid++;\n    Sub.options = mergeOptions(\n      Super.options,\n      extendOptions\n    );\n    Sub['super'] = Super;\n\n    // For props and computed properties, we define the proxy getters on\n    // the Vue instances at extension time, on the extended prototype. This\n    // avoids Object.defineProperty calls for each instance created.\n    if (Sub.options.props) {\n      initProps$1(Sub);\n    }\n    if (Sub.options.computed) {\n      initComputed$1(Sub);\n    }\n\n    // allow further extension/mixin/plugin usage\n    Sub.extend = Super.extend;\n    Sub.mixin = Super.mixin;\n    Sub.use = Super.use;\n\n    // create asset registers, so extended classes\n    // can have their private assets too.\n    ASSET_TYPES.forEach(function (type) {\n      Sub[type] = Super[type];\n    });\n    // enable recursive self-lookup\n    if (name) {\n      Sub.options.components[name] = Sub;\n    }\n\n    // keep a reference to the super options at extension time.\n    // later at instantiation we can check if Super's options have\n    // been updated.\n    Sub.superOptions = Super.options;\n    Sub.extendOptions = extendOptions;\n    Sub.sealedOptions = extend({}, Sub.options);\n\n    // cache constructor\n    cachedCtors[SuperId] = Sub;\n    return Sub\n  };\n}\n\nfunction initProps$1 (Comp) {\n  var props = Comp.options.props;\n  for (var key in props) {\n    proxy(Comp.prototype, \"_props\", key);\n  }\n}\n\nfunction initComputed$1 (Comp) {\n  var computed = Comp.options.computed;\n  for (var key in computed) {\n    defineComputed(Comp.prototype, key, computed[key]);\n  }\n}\n\n/*  */\n\nfunction initAssetRegisters (Vue) {\n  /**\n   * Create asset registration methods.\n   */\n  ASSET_TYPES.forEach(function (type) {\n    Vue[type] = function (\n      id,\n      definition\n    ) {\n      if (!definition) {\n        return this.options[type + 's'][id]\n      } else {\n        /* istanbul ignore if */\n        if (true) {\n          if (type === 'component' && config.isReservedTag(id)) {\n            warn(\n              'Do not use built-in or reserved HTML elements as component ' +\n              'id: ' + id\n            );\n          }\n        }\n        if (type === 'component' && isPlainObject(definition)) {\n          definition.name = definition.name || id;\n          definition = this.options._base.extend(definition);\n        }\n        if (type === 'directive' && typeof definition === 'function') {\n          definition = { bind: definition, update: definition };\n        }\n        this.options[type + 's'][id] = definition;\n        return definition\n      }\n    };\n  });\n}\n\n/*  */\n\nvar patternTypes = [String, RegExp];\n\nfunction getComponentName (opts) {\n  return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n  if (typeof pattern === 'string') {\n    return pattern.split(',').indexOf(name) > -1\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name)\n  }\n  /* istanbul ignore next */\n  return false\n}\n\nfunction pruneCache (cache, current, filter) {\n  for (var key in cache) {\n    var cachedNode = cache[key];\n    if (cachedNode) {\n      var name = getComponentName(cachedNode.componentOptions);\n      if (name && !filter(name)) {\n        if (cachedNode !== current) {\n          pruneCacheEntry(cachedNode);\n        }\n        cache[key] = null;\n      }\n    }\n  }\n}\n\nfunction pruneCacheEntry (vnode) {\n  if (vnode) {\n    vnode.componentInstance.$destroy();\n  }\n}\n\nvar KeepAlive = {\n  name: 'keep-alive',\n  abstract: true,\n\n  props: {\n    include: patternTypes,\n    exclude: patternTypes\n  },\n\n  created: function created () {\n    this.cache = Object.create(null);\n  },\n\n  destroyed: function destroyed () {\n    var this$1 = this;\n\n    for (var key in this$1.cache) {\n      pruneCacheEntry(this$1.cache[key]);\n    }\n  },\n\n  watch: {\n    include: function include (val) {\n      pruneCache(this.cache, this._vnode, function (name) { return matches(val, name); });\n    },\n    exclude: function exclude (val) {\n      pruneCache(this.cache, this._vnode, function (name) { return !matches(val, name); });\n    }\n  },\n\n  render: function render () {\n    var vnode = getFirstComponentChild(this.$slots.default);\n    var componentOptions = vnode && vnode.componentOptions;\n    if (componentOptions) {\n      // check pattern\n      var name = getComponentName(componentOptions);\n      if (name && (\n        (this.include && !matches(this.include, name)) ||\n        (this.exclude && matches(this.exclude, name))\n      )) {\n        return vnode\n      }\n      var key = vnode.key == null\n        // same constructor may get registered as different local components\n        // so cid alone is not enough (#3269)\n        ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n        : vnode.key;\n      if (this.cache[key]) {\n        vnode.componentInstance = this.cache[key].componentInstance;\n      } else {\n        this.cache[key] = vnode;\n      }\n      vnode.data.keepAlive = true;\n    }\n    return vnode\n  }\n};\n\nvar builtInComponents = {\n  KeepAlive: KeepAlive\n};\n\n/*  */\n\nfunction initGlobalAPI (Vue) {\n  // config\n  var configDef = {};\n  configDef.get = function () { return config; };\n  if (true) {\n    configDef.set = function () {\n      warn(\n        'Do not replace the Vue.config object, set individual fields instead.'\n      );\n    };\n  }\n  Object.defineProperty(Vue, 'config', configDef);\n\n  // exposed util methods.\n  // NOTE: these are not considered part of the public API - avoid relying on\n  // them unless you are aware of the risk.\n  Vue.util = {\n    warn: warn,\n    extend: extend,\n    mergeOptions: mergeOptions,\n    defineReactive: defineReactive$$1\n  };\n\n  Vue.set = set;\n  Vue.delete = del;\n  Vue.nextTick = nextTick;\n\n  Vue.options = Object.create(null);\n  ASSET_TYPES.forEach(function (type) {\n    Vue.options[type + 's'] = Object.create(null);\n  });\n\n  // this is used to identify the \"base\" constructor to extend all plain-object\n  // components with in Weex's multi-instance scenarios.\n  Vue.options._base = Vue;\n\n  extend(Vue.options.components, builtInComponents);\n\n  initUse(Vue);\n  initMixin$1(Vue);\n  initExtend(Vue);\n  initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue$3);\n\nObject.defineProperty(Vue$3.prototype, '$isServer', {\n  get: isServerRendering\n});\n\nObject.defineProperty(Vue$3.prototype, '$ssrContext', {\n  get: function get () {\n    /* istanbul ignore next */\n    return this.$vnode.ssrContext\n  }\n});\n\nVue$3.version = '2.3.3';\n\n/*  */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select');\nvar mustUseProp = function (tag, type, attr) {\n  return (\n    (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n    (attr === 'selected' && tag === 'option') ||\n    (attr === 'checked' && tag === 'input') ||\n    (attr === 'muted' && tag === 'video')\n  )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isBooleanAttr = makeMap(\n  'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n  'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n  'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n  'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n  'required,reversed,scoped,seamless,selected,sortable,translate,' +\n  'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n  return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n  return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n  return val == null || val === false\n};\n\n/*  */\n\nfunction genClassForVnode (vnode) {\n  var data = vnode.data;\n  var parentNode = vnode;\n  var childNode = vnode;\n  while (isDef(childNode.componentInstance)) {\n    childNode = childNode.componentInstance._vnode;\n    if (childNode.data) {\n      data = mergeClassData(childNode.data, data);\n    }\n  }\n  while (isDef(parentNode = parentNode.parent)) {\n    if (parentNode.data) {\n      data = mergeClassData(data, parentNode.data);\n    }\n  }\n  return genClassFromData(data)\n}\n\nfunction mergeClassData (child, parent) {\n  return {\n    staticClass: concat(child.staticClass, parent.staticClass),\n    class: isDef(child.class)\n      ? [child.class, parent.class]\n      : parent.class\n  }\n}\n\nfunction genClassFromData (data) {\n  var dynamicClass = data.class;\n  var staticClass = data.staticClass;\n  if (isDef(staticClass) || isDef(dynamicClass)) {\n    return concat(staticClass, stringifyClass(dynamicClass))\n  }\n  /* istanbul ignore next */\n  return ''\n}\n\nfunction concat (a, b) {\n  return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n  if (isUndef(value)) {\n    return ''\n  }\n  if (typeof value === 'string') {\n    return value\n  }\n  var res = '';\n  if (Array.isArray(value)) {\n    var stringified;\n    for (var i = 0, l = value.length; i < l; i++) {\n      if (isDef(value[i])) {\n        if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n          res += stringified + ' ';\n        }\n      }\n    }\n    return res.slice(0, -1)\n  }\n  if (isObject(value)) {\n    for (var key in value) {\n      if (value[key]) { res += key + ' '; }\n    }\n    return res.slice(0, -1)\n  }\n  /* istanbul ignore next */\n  return res\n}\n\n/*  */\n\nvar namespaceMap = {\n  svg: 'http://www.w3.org/2000/svg',\n  math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n  'html,body,base,head,link,meta,style,title,' +\n  'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n  'div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,' +\n  'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n  's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n  'embed,object,param,source,canvas,script,noscript,del,ins,' +\n  'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n  'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n  'output,progress,select,textarea,' +\n  'details,dialog,menu,menuitem,summary,' +\n  'content,element,shadow,template'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n  'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n  'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n  'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n  true\n);\n\n\n\nvar isReservedTag = function (tag) {\n  return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n  if (isSVG(tag)) {\n    return 'svg'\n  }\n  // basic support for MathML\n  // note it doesn't support other MathML elements being component roots\n  if (tag === 'math') {\n    return 'math'\n  }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n  /* istanbul ignore if */\n  if (!inBrowser) {\n    return true\n  }\n  if (isReservedTag(tag)) {\n    return false\n  }\n  tag = tag.toLowerCase();\n  /* istanbul ignore if */\n  if (unknownElementCache[tag] != null) {\n    return unknownElementCache[tag]\n  }\n  var el = document.createElement(tag);\n  if (tag.indexOf('-') > -1) {\n    // http://stackoverflow.com/a/28210364/1070244\n    return (unknownElementCache[tag] = (\n      el.constructor === window.HTMLUnknownElement ||\n      el.constructor === window.HTMLElement\n    ))\n  } else {\n    return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n  }\n}\n\n/*  */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n  if (typeof el === 'string') {\n    var selected = document.querySelector(el);\n    if (!selected) {\n       true && warn(\n        'Cannot find element: ' + el\n      );\n      return document.createElement('div')\n    }\n    return selected\n  } else {\n    return el\n  }\n}\n\n/*  */\n\nfunction createElement$1 (tagName, vnode) {\n  var elm = document.createElement(tagName);\n  if (tagName !== 'select') {\n    return elm\n  }\n  // false or null will remove the attribute but undefined will not\n  if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n    elm.setAttribute('multiple', 'multiple');\n  }\n  return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n  return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n  return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n  return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n  parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n  node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n  node.appendChild(child);\n}\n\nfunction parentNode (node) {\n  return node.parentNode\n}\n\nfunction nextSibling (node) {\n  return node.nextSibling\n}\n\nfunction tagName (node) {\n  return node.tagName\n}\n\nfunction setTextContent (node, text) {\n  node.textContent = text;\n}\n\nfunction setAttribute (node, key, val) {\n  node.setAttribute(key, val);\n}\n\n\nvar nodeOps = Object.freeze({\n\tcreateElement: createElement$1,\n\tcreateElementNS: createElementNS,\n\tcreateTextNode: createTextNode,\n\tcreateComment: createComment,\n\tinsertBefore: insertBefore,\n\tremoveChild: removeChild,\n\tappendChild: appendChild,\n\tparentNode: parentNode,\n\tnextSibling: nextSibling,\n\ttagName: tagName,\n\tsetTextContent: setTextContent,\n\tsetAttribute: setAttribute\n});\n\n/*  */\n\nvar ref = {\n  create: function create (_, vnode) {\n    registerRef(vnode);\n  },\n  update: function update (oldVnode, vnode) {\n    if (oldVnode.data.ref !== vnode.data.ref) {\n      registerRef(oldVnode, true);\n      registerRef(vnode);\n    }\n  },\n  destroy: function destroy (vnode) {\n    registerRef(vnode, true);\n  }\n};\n\nfunction registerRef (vnode, isRemoval) {\n  var key = vnode.data.ref;\n  if (!key) { return }\n\n  var vm = vnode.context;\n  var ref = vnode.componentInstance || vnode.elm;\n  var refs = vm.$refs;\n  if (isRemoval) {\n    if (Array.isArray(refs[key])) {\n      remove(refs[key], ref);\n    } else if (refs[key] === ref) {\n      refs[key] = undefined;\n    }\n  } else {\n    if (vnode.data.refInFor) {\n      if (Array.isArray(refs[key]) && refs[key].indexOf(ref) < 0) {\n        refs[key].push(ref);\n      } else {\n        refs[key] = [ref];\n      }\n    } else {\n      refs[key] = ref;\n    }\n  }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n\n/*\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n  return (\n    a.key === b.key &&\n    a.tag === b.tag &&\n    a.isComment === b.isComment &&\n    isDef(a.data) === isDef(b.data) &&\n    sameInputType(a, b)\n  )\n}\n\n// Some browsers do not support dynamically changing type for <input>\n// so they need to be treated as different nodes\nfunction sameInputType (a, b) {\n  if (a.tag !== 'input') { return true }\n  var i;\n  var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n  var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n  return typeA === typeB\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n  var i, key;\n  var map = {};\n  for (i = beginIdx; i <= endIdx; ++i) {\n    key = children[i].key;\n    if (isDef(key)) { map[key] = i; }\n  }\n  return map\n}\n\nfunction createPatchFunction (backend) {\n  var i, j;\n  var cbs = {};\n\n  var modules = backend.modules;\n  var nodeOps = backend.nodeOps;\n\n  for (i = 0; i < hooks.length; ++i) {\n    cbs[hooks[i]] = [];\n    for (j = 0; j < modules.length; ++j) {\n      if (isDef(modules[j][hooks[i]])) {\n        cbs[hooks[i]].push(modules[j][hooks[i]]);\n      }\n    }\n  }\n\n  function emptyNodeAt (elm) {\n    return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n  }\n\n  function createRmCb (childElm, listeners) {\n    function remove$$1 () {\n      if (--remove$$1.listeners === 0) {\n        removeNode(childElm);\n      }\n    }\n    remove$$1.listeners = listeners;\n    return remove$$1\n  }\n\n  function removeNode (el) {\n    var parent = nodeOps.parentNode(el);\n    // element may have already been removed due to v-html / v-text\n    if (isDef(parent)) {\n      nodeOps.removeChild(parent, el);\n    }\n  }\n\n  var inPre = 0;\n  function createElm (vnode, insertedVnodeQueue, parentElm, refElm, nested) {\n    vnode.isRootInsert = !nested; // for transition enter check\n    if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n      return\n    }\n\n    var data = vnode.data;\n    var children = vnode.children;\n    var tag = vnode.tag;\n    if (isDef(tag)) {\n      if (true) {\n        if (data && data.pre) {\n          inPre++;\n        }\n        if (\n          !inPre &&\n          !vnode.ns &&\n          !(config.ignoredElements.length && config.ignoredElements.indexOf(tag) > -1) &&\n          config.isUnknownElement(tag)\n        ) {\n          warn(\n            'Unknown custom element: <' + tag + '> - did you ' +\n            'register the component correctly? For recursive components, ' +\n            'make sure to provide the \"name\" option.',\n            vnode.context\n          );\n        }\n      }\n      vnode.elm = vnode.ns\n        ? nodeOps.createElementNS(vnode.ns, tag)\n        : nodeOps.createElement(tag, vnode);\n      setScope(vnode);\n\n      /* istanbul ignore if */\n      {\n        createChildren(vnode, children, insertedVnodeQueue);\n        if (isDef(data)) {\n          invokeCreateHooks(vnode, insertedVnodeQueue);\n        }\n        insert(parentElm, vnode.elm, refElm);\n      }\n\n      if ( true && data && data.pre) {\n        inPre--;\n      }\n    } else if (isTrue(vnode.isComment)) {\n      vnode.elm = nodeOps.createComment(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    } else {\n      vnode.elm = nodeOps.createTextNode(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    }\n  }\n\n  function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i = vnode.data;\n    if (isDef(i)) {\n      var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n      if (isDef(i = i.hook) && isDef(i = i.init)) {\n        i(vnode, false /* hydrating */, parentElm, refElm);\n      }\n      // after calling the init hook, if the vnode is a child component\n      // it should've created a child instance and mounted it. the child\n      // component also has set the placeholder vnode's elm.\n      // in that case we can just return the element and be done.\n      if (isDef(vnode.componentInstance)) {\n        initComponent(vnode, insertedVnodeQueue);\n        if (isTrue(isReactivated)) {\n          reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n        }\n        return true\n      }\n    }\n  }\n\n  function initComponent (vnode, insertedVnodeQueue) {\n    if (isDef(vnode.data.pendingInsert)) {\n      insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n    }\n    vnode.elm = vnode.componentInstance.$el;\n    if (isPatchable(vnode)) {\n      invokeCreateHooks(vnode, insertedVnodeQueue);\n      setScope(vnode);\n    } else {\n      // empty component root.\n      // skip all element-related modules except for ref (#3455)\n      registerRef(vnode);\n      // make sure to invoke the insert hook\n      insertedVnodeQueue.push(vnode);\n    }\n  }\n\n  function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i;\n    // hack for #4339: a reactivated component with inner transition\n    // does not trigger because the inner node's created hooks are not called\n    // again. It's not ideal to involve module-specific logic in here but\n    // there doesn't seem to be a better way to do it.\n    var innerNode = vnode;\n    while (innerNode.componentInstance) {\n      innerNode = innerNode.componentInstance._vnode;\n      if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n        for (i = 0; i < cbs.activate.length; ++i) {\n          cbs.activate[i](emptyNode, innerNode);\n        }\n        insertedVnodeQueue.push(innerNode);\n        break\n      }\n    }\n    // unlike a newly created component,\n    // a reactivated keep-alive component doesn't insert itself\n    insert(parentElm, vnode.elm, refElm);\n  }\n\n  function insert (parent, elm, ref) {\n    if (isDef(parent)) {\n      if (isDef(ref)) {\n        if (ref.parentNode === parent) {\n          nodeOps.insertBefore(parent, elm, ref);\n        }\n      } else {\n        nodeOps.appendChild(parent, elm);\n      }\n    }\n  }\n\n  function createChildren (vnode, children, insertedVnodeQueue) {\n    if (Array.isArray(children)) {\n      for (var i = 0; i < children.length; ++i) {\n        createElm(children[i], insertedVnodeQueue, vnode.elm, null, true);\n      }\n    } else if (isPrimitive(vnode.text)) {\n      nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text));\n    }\n  }\n\n  function isPatchable (vnode) {\n    while (vnode.componentInstance) {\n      vnode = vnode.componentInstance._vnode;\n    }\n    return isDef(vnode.tag)\n  }\n\n  function invokeCreateHooks (vnode, insertedVnodeQueue) {\n    for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n      cbs.create[i$1](emptyNode, vnode);\n    }\n    i = vnode.data.hook; // Reuse variable\n    if (isDef(i)) {\n      if (isDef(i.create)) { i.create(emptyNode, vnode); }\n      if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n    }\n  }\n\n  // set scope id attribute for scoped CSS.\n  // this is implemented as a special case to avoid the overhead\n  // of going through the normal attribute patching process.\n  function setScope (vnode) {\n    var i;\n    var ancestor = vnode;\n    while (ancestor) {\n      if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n        nodeOps.setAttribute(vnode.elm, i, '');\n      }\n      ancestor = ancestor.parent;\n    }\n    // for slot content they should also get the scopeId from the host instance.\n    if (isDef(i = activeInstance) &&\n      i !== vnode.context &&\n      isDef(i = i.$options._scopeId)\n    ) {\n      nodeOps.setAttribute(vnode.elm, i, '');\n    }\n  }\n\n  function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm);\n    }\n  }\n\n  function invokeDestroyHook (vnode) {\n    var i, j;\n    var data = vnode.data;\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n      for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n    }\n    if (isDef(i = vnode.children)) {\n      for (j = 0; j < vnode.children.length; ++j) {\n        invokeDestroyHook(vnode.children[j]);\n      }\n    }\n  }\n\n  function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      var ch = vnodes[startIdx];\n      if (isDef(ch)) {\n        if (isDef(ch.tag)) {\n          removeAndInvokeRemoveHook(ch);\n          invokeDestroyHook(ch);\n        } else { // Text node\n          removeNode(ch.elm);\n        }\n      }\n    }\n  }\n\n  function removeAndInvokeRemoveHook (vnode, rm) {\n    if (isDef(rm) || isDef(vnode.data)) {\n      var i;\n      var listeners = cbs.remove.length + 1;\n      if (isDef(rm)) {\n        // we have a recursively passed down rm callback\n        // increase the listeners count\n        rm.listeners += listeners;\n      } else {\n        // directly removing\n        rm = createRmCb(vnode.elm, listeners);\n      }\n      // recursively invoke hooks on child component root node\n      if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n        removeAndInvokeRemoveHook(i, rm);\n      }\n      for (i = 0; i < cbs.remove.length; ++i) {\n        cbs.remove[i](vnode, rm);\n      }\n      if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n        i(vnode, rm);\n      } else {\n        rm();\n      }\n    } else {\n      removeNode(vnode.elm);\n    }\n  }\n\n  function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n    var oldStartIdx = 0;\n    var newStartIdx = 0;\n    var oldEndIdx = oldCh.length - 1;\n    var oldStartVnode = oldCh[0];\n    var oldEndVnode = oldCh[oldEndIdx];\n    var newEndIdx = newCh.length - 1;\n    var newStartVnode = newCh[0];\n    var newEndVnode = newCh[newEndIdx];\n    var oldKeyToIdx, idxInOld, elmToMove, refElm;\n\n    // removeOnly is a special flag used only by <transition-group>\n    // to ensure removed elements stay in correct relative positions\n    // during leaving transitions\n    var canMove = !removeOnly;\n\n    while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n      if (isUndef(oldStartVnode)) {\n        oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n      } else if (isUndef(oldEndVnode)) {\n        oldEndVnode = oldCh[--oldEndIdx];\n      } else if (sameVnode(oldStartVnode, newStartVnode)) {\n        patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n        oldStartVnode = oldCh[++oldStartIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else if (sameVnode(oldEndVnode, newEndVnode)) {\n        patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n        patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n        canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n        oldStartVnode = oldCh[++oldStartIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n        patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n        canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else {\n        if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n        idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : null;\n        if (isUndef(idxInOld)) { // New element\n          createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n          newStartVnode = newCh[++newStartIdx];\n        } else {\n          elmToMove = oldCh[idxInOld];\n          /* istanbul ignore if */\n          if ( true && !elmToMove) {\n            warn(\n              'It seems there are duplicate keys that is causing an update error. ' +\n              'Make sure each v-for item has a unique key.'\n            );\n          }\n          if (sameVnode(elmToMove, newStartVnode)) {\n            patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n            oldCh[idxInOld] = undefined;\n            canMove && nodeOps.insertBefore(parentElm, newStartVnode.elm, oldStartVnode.elm);\n            newStartVnode = newCh[++newStartIdx];\n          } else {\n            // same key but different element. treat as new element\n            createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n            newStartVnode = newCh[++newStartIdx];\n          }\n        }\n      }\n    }\n    if (oldStartIdx > oldEndIdx) {\n      refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n      addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n    } else if (newStartIdx > newEndIdx) {\n      removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n    }\n  }\n\n  function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {\n    if (oldVnode === vnode) {\n      return\n    }\n    // reuse element for static trees.\n    // note we only do this if the vnode is cloned -\n    // if the new node is not cloned it means the render functions have been\n    // reset by the hot-reload-api and we need to do a proper re-render.\n    if (isTrue(vnode.isStatic) &&\n      isTrue(oldVnode.isStatic) &&\n      vnode.key === oldVnode.key &&\n      (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n    ) {\n      vnode.elm = oldVnode.elm;\n      vnode.componentInstance = oldVnode.componentInstance;\n      return\n    }\n    var i;\n    var data = vnode.data;\n    if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n      i(oldVnode, vnode);\n    }\n    var elm = vnode.elm = oldVnode.elm;\n    var oldCh = oldVnode.children;\n    var ch = vnode.children;\n    if (isDef(data) && isPatchable(vnode)) {\n      for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n      if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n    }\n    if (isUndef(vnode.text)) {\n      if (isDef(oldCh) && isDef(ch)) {\n        if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n      } else if (isDef(ch)) {\n        if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n        addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n      } else if (isDef(oldCh)) {\n        removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n      } else if (isDef(oldVnode.text)) {\n        nodeOps.setTextContent(elm, '');\n      }\n    } else if (oldVnode.text !== vnode.text) {\n      nodeOps.setTextContent(elm, vnode.text);\n    }\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n    }\n  }\n\n  function invokeInsertHook (vnode, queue, initial) {\n    // delay insert hooks for component root nodes, invoke them after the\n    // element is really inserted\n    if (isTrue(initial) && isDef(vnode.parent)) {\n      vnode.parent.data.pendingInsert = queue;\n    } else {\n      for (var i = 0; i < queue.length; ++i) {\n        queue[i].data.hook.insert(queue[i]);\n      }\n    }\n  }\n\n  var bailed = false;\n  // list of modules that can skip create hook during hydration because they\n  // are already rendered on the client or has no need for initialization\n  var isRenderedModule = makeMap('attrs,style,class,staticClass,staticStyle,key');\n\n  // Note: this is a browser-only function so we can assume elms are DOM nodes.\n  function hydrate (elm, vnode, insertedVnodeQueue) {\n    if (true) {\n      if (!assertNodeMatch(elm, vnode)) {\n        return false\n      }\n    }\n    vnode.elm = elm;\n    var tag = vnode.tag;\n    var data = vnode.data;\n    var children = vnode.children;\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n      if (isDef(i = vnode.componentInstance)) {\n        // child component. it should have hydrated its own tree.\n        initComponent(vnode, insertedVnodeQueue);\n        return true\n      }\n    }\n    if (isDef(tag)) {\n      if (isDef(children)) {\n        // empty element, allow client to pick up and populate children\n        if (!elm.hasChildNodes()) {\n          createChildren(vnode, children, insertedVnodeQueue);\n        } else {\n          var childrenMatch = true;\n          var childNode = elm.firstChild;\n          for (var i$1 = 0; i$1 < children.length; i$1++) {\n            if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue)) {\n              childrenMatch = false;\n              break\n            }\n            childNode = childNode.nextSibling;\n          }\n          // if childNode is not null, it means the actual childNodes list is\n          // longer than the virtual children list.\n          if (!childrenMatch || childNode) {\n            if ( true &&\n              typeof console !== 'undefined' &&\n              !bailed\n            ) {\n              bailed = true;\n              console.warn('Parent: ', elm);\n              console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n            }\n            return false\n          }\n        }\n      }\n      if (isDef(data)) {\n        for (var key in data) {\n          if (!isRenderedModule(key)) {\n            invokeCreateHooks(vnode, insertedVnodeQueue);\n            break\n          }\n        }\n      }\n    } else if (elm.data !== vnode.text) {\n      elm.data = vnode.text;\n    }\n    return true\n  }\n\n  function assertNodeMatch (node, vnode) {\n    if (isDef(vnode.tag)) {\n      return (\n        vnode.tag.indexOf('vue-component') === 0 ||\n        vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n      )\n    } else {\n      return node.nodeType === (vnode.isComment ? 8 : 3)\n    }\n  }\n\n  return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\n    if (isUndef(vnode)) {\n      if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n      return\n    }\n\n    var isInitialPatch = false;\n    var insertedVnodeQueue = [];\n\n    if (isUndef(oldVnode)) {\n      // empty mount (likely as component), create new root element\n      isInitialPatch = true;\n      createElm(vnode, insertedVnodeQueue, parentElm, refElm);\n    } else {\n      var isRealElement = isDef(oldVnode.nodeType);\n      if (!isRealElement && sameVnode(oldVnode, vnode)) {\n        // patch existing root node\n        patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);\n      } else {\n        if (isRealElement) {\n          // mounting to a real element\n          // check if this is server-rendered content and if we can perform\n          // a successful hydration.\n          if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n            oldVnode.removeAttribute(SSR_ATTR);\n            hydrating = true;\n          }\n          if (isTrue(hydrating)) {\n            if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n              invokeInsertHook(vnode, insertedVnodeQueue, true);\n              return oldVnode\n            } else if (true) {\n              warn(\n                'The client-side rendered virtual DOM tree is not matching ' +\n                'server-rendered content. This is likely caused by incorrect ' +\n                'HTML markup, for example nesting block-level elements inside ' +\n                '<p>, or missing <tbody>. Bailing hydration and performing ' +\n                'full client-side render.'\n              );\n            }\n          }\n          // either not server-rendered, or hydration failed.\n          // create an empty node and replace it\n          oldVnode = emptyNodeAt(oldVnode);\n        }\n        // replacing existing element\n        var oldElm = oldVnode.elm;\n        var parentElm$1 = nodeOps.parentNode(oldElm);\n        createElm(\n          vnode,\n          insertedVnodeQueue,\n          // extremely rare edge case: do not insert if old element is in a\n          // leaving transition. Only happens when combining transition +\n          // keep-alive + HOCs. (#4590)\n          oldElm._leaveCb ? null : parentElm$1,\n          nodeOps.nextSibling(oldElm)\n        );\n\n        if (isDef(vnode.parent)) {\n          // component root element replaced.\n          // update parent placeholder node element, recursively\n          var ancestor = vnode.parent;\n          while (ancestor) {\n            ancestor.elm = vnode.elm;\n            ancestor = ancestor.parent;\n          }\n          if (isPatchable(vnode)) {\n            for (var i = 0; i < cbs.create.length; ++i) {\n              cbs.create[i](emptyNode, vnode.parent);\n            }\n          }\n        }\n\n        if (isDef(parentElm$1)) {\n          removeVnodes(parentElm$1, [oldVnode], 0, 0);\n        } else if (isDef(oldVnode.tag)) {\n          invokeDestroyHook(oldVnode);\n        }\n      }\n    }\n\n    invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n    return vnode.elm\n  }\n}\n\n/*  */\n\nvar directives = {\n  create: updateDirectives,\n  update: updateDirectives,\n  destroy: function unbindDirectives (vnode) {\n    updateDirectives(vnode, emptyNode);\n  }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n  if (oldVnode.data.directives || vnode.data.directives) {\n    _update(oldVnode, vnode);\n  }\n}\n\nfunction _update (oldVnode, vnode) {\n  var isCreate = oldVnode === emptyNode;\n  var isDestroy = vnode === emptyNode;\n  var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n  var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n  var dirsWithInsert = [];\n  var dirsWithPostpatch = [];\n\n  var key, oldDir, dir;\n  for (key in newDirs) {\n    oldDir = oldDirs[key];\n    dir = newDirs[key];\n    if (!oldDir) {\n      // new directive, bind\n      callHook$1(dir, 'bind', vnode, oldVnode);\n      if (dir.def && dir.def.inserted) {\n        dirsWithInsert.push(dir);\n      }\n    } else {\n      // existing directive, update\n      dir.oldValue = oldDir.value;\n      callHook$1(dir, 'update', vnode, oldVnode);\n      if (dir.def && dir.def.componentUpdated) {\n        dirsWithPostpatch.push(dir);\n      }\n    }\n  }\n\n  if (dirsWithInsert.length) {\n    var callInsert = function () {\n      for (var i = 0; i < dirsWithInsert.length; i++) {\n        callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n      }\n    };\n    if (isCreate) {\n      mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert);\n    } else {\n      callInsert();\n    }\n  }\n\n  if (dirsWithPostpatch.length) {\n    mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', function () {\n      for (var i = 0; i < dirsWithPostpatch.length; i++) {\n        callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n      }\n    });\n  }\n\n  if (!isCreate) {\n    for (key in oldDirs) {\n      if (!newDirs[key]) {\n        // no longer present, unbind\n        callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n      }\n    }\n  }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n  dirs,\n  vm\n) {\n  var res = Object.create(null);\n  if (!dirs) {\n    return res\n  }\n  var i, dir;\n  for (i = 0; i < dirs.length; i++) {\n    dir = dirs[i];\n    if (!dir.modifiers) {\n      dir.modifiers = emptyModifiers;\n    }\n    res[getRawDirName(dir)] = dir;\n    dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n  }\n  return res\n}\n\nfunction getRawDirName (dir) {\n  return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n  var fn = dir.def && dir.def[hook];\n  if (fn) {\n    try {\n      fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n    } catch (e) {\n      handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n    }\n  }\n}\n\nvar baseModules = [\n  ref,\n  directives\n];\n\n/*  */\n\nfunction updateAttrs (oldVnode, vnode) {\n  if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n    return\n  }\n  var key, cur, old;\n  var elm = vnode.elm;\n  var oldAttrs = oldVnode.data.attrs || {};\n  var attrs = vnode.data.attrs || {};\n  // clone observed objects, as the user probably wants to mutate it\n  if (isDef(attrs.__ob__)) {\n    attrs = vnode.data.attrs = extend({}, attrs);\n  }\n\n  for (key in attrs) {\n    cur = attrs[key];\n    old = oldAttrs[key];\n    if (old !== cur) {\n      setAttr(elm, key, cur);\n    }\n  }\n  // #4391: in IE9, setting type can reset value for input[type=radio]\n  /* istanbul ignore if */\n  if (isIE9 && attrs.value !== oldAttrs.value) {\n    setAttr(elm, 'value', attrs.value);\n  }\n  for (key in oldAttrs) {\n    if (isUndef(attrs[key])) {\n      if (isXlink(key)) {\n        elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n      } else if (!isEnumeratedAttr(key)) {\n        elm.removeAttribute(key);\n      }\n    }\n  }\n}\n\nfunction setAttr (el, key, value) {\n  if (isBooleanAttr(key)) {\n    // set attribute for blank value\n    // e.g. <option disabled>Select one</option>\n    if (isFalsyAttrValue(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(key, key);\n    }\n  } else if (isEnumeratedAttr(key)) {\n    el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n  } else if (isXlink(key)) {\n    if (isFalsyAttrValue(value)) {\n      el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    if (isFalsyAttrValue(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(key, value);\n    }\n  }\n}\n\nvar attrs = {\n  create: updateAttrs,\n  update: updateAttrs\n};\n\n/*  */\n\nfunction updateClass (oldVnode, vnode) {\n  var el = vnode.elm;\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n  if (\n    isUndef(data.staticClass) &&\n    isUndef(data.class) && (\n      isUndef(oldData) || (\n        isUndef(oldData.staticClass) &&\n        isUndef(oldData.class)\n      )\n    )\n  ) {\n    return\n  }\n\n  var cls = genClassForVnode(vnode);\n\n  // handle transition classes\n  var transitionClass = el._transitionClasses;\n  if (isDef(transitionClass)) {\n    cls = concat(cls, stringifyClass(transitionClass));\n  }\n\n  // set the class\n  if (cls !== el._prevClass) {\n    el.setAttribute('class', cls);\n    el._prevClass = cls;\n  }\n}\n\nvar klass = {\n  create: updateClass,\n  update: updateClass\n};\n\n/*  */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\n\n\nfunction wrapFilter (exp, filter) {\n  var i = filter.indexOf('(');\n  if (i < 0) {\n    // _f: resolveFilter\n    return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n  } else {\n    var name = filter.slice(0, i);\n    var args = filter.slice(i + 1);\n    return (\"_f(\\\"\" + name + \"\\\")(\" + exp + \",\" + args)\n  }\n}\n\n/*  */\n\n/*  */\n\n/**\n * Cross-platform code generation for component v-model\n */\n\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\n\n\n/**\n * parse directive model to do the array update transform. a[idx] = val => $$a.splice($$idx, 1, val)\n *\n * for loop possible cases:\n *\n * - test\n * - test[idx]\n * - test[test1[idx]]\n * - test[\"a\"][idx]\n * - xxx.test[a[a].test1[idx]]\n * - test.xxx.a[\"asa\"][test1[idx]]\n *\n */\n\nvar str;\nvar index$1;\n\n/*  */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/*  */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n  var event;\n  /* istanbul ignore if */\n  if (isDef(on[RANGE_TOKEN])) {\n    // IE input[type=range] only supports `change` event\n    event = isIE ? 'change' : 'input';\n    on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n    delete on[RANGE_TOKEN];\n  }\n  if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n    // Chrome fires microtasks in between click/change, leads to #4521\n    event = isChrome ? 'click' : 'change';\n    on[event] = [].concat(on[CHECKBOX_RADIO_TOKEN], on[event] || []);\n    delete on[CHECKBOX_RADIO_TOKEN];\n  }\n}\n\nvar target$1;\n\nfunction add$1 (\n  event,\n  handler,\n  once$$1,\n  capture,\n  passive\n) {\n  if (once$$1) {\n    var oldHandler = handler;\n    var _target = target$1; // save current target element in closure\n    handler = function (ev) {\n      var res = arguments.length === 1\n        ? oldHandler(ev)\n        : oldHandler.apply(null, arguments);\n      if (res !== null) {\n        remove$2(event, handler, capture, _target);\n      }\n    };\n  }\n  target$1.addEventListener(\n    event,\n    handler,\n    supportsPassive\n      ? { capture: capture, passive: passive }\n      : capture\n  );\n}\n\nfunction remove$2 (\n  event,\n  handler,\n  capture,\n  _target\n) {\n  (_target || target$1).removeEventListener(event, handler, capture);\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n  if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n    return\n  }\n  var on = vnode.data.on || {};\n  var oldOn = oldVnode.data.on || {};\n  target$1 = vnode.elm;\n  normalizeEvents(on);\n  updateListeners(on, oldOn, add$1, remove$2, vnode.context);\n}\n\nvar events = {\n  create: updateDOMListeners,\n  update: updateDOMListeners\n};\n\n/*  */\n\nfunction updateDOMProps (oldVnode, vnode) {\n  if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n    return\n  }\n  var key, cur;\n  var elm = vnode.elm;\n  var oldProps = oldVnode.data.domProps || {};\n  var props = vnode.data.domProps || {};\n  // clone observed objects, as the user probably wants to mutate it\n  if (isDef(props.__ob__)) {\n    props = vnode.data.domProps = extend({}, props);\n  }\n\n  for (key in oldProps) {\n    if (isUndef(props[key])) {\n      elm[key] = '';\n    }\n  }\n  for (key in props) {\n    cur = props[key];\n    // ignore children if the node has textContent or innerHTML,\n    // as these will throw away existing DOM nodes and cause removal errors\n    // on subsequent patches (#3360)\n    if (key === 'textContent' || key === 'innerHTML') {\n      if (vnode.children) { vnode.children.length = 0; }\n      if (cur === oldProps[key]) { continue }\n    }\n\n    if (key === 'value') {\n      // store value as _value as well since\n      // non-string values will be stringified\n      elm._value = cur;\n      // avoid resetting cursor position when value is the same\n      var strCur = isUndef(cur) ? '' : String(cur);\n      if (shouldUpdateValue(elm, vnode, strCur)) {\n        elm.value = strCur;\n      }\n    } else {\n      elm[key] = cur;\n    }\n  }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (\n  elm,\n  vnode,\n  checkVal\n) {\n  return (!elm.composing && (\n    vnode.tag === 'option' ||\n    isDirty(elm, checkVal) ||\n    isInputChanged(elm, checkVal)\n  ))\n}\n\nfunction isDirty (elm, checkVal) {\n  // return true when textbox (.number and .trim) loses focus and its value is not equal to the updated value\n  return document.activeElement !== elm && elm.value !== checkVal\n}\n\nfunction isInputChanged (elm, newVal) {\n  var value = elm.value;\n  var modifiers = elm._vModifiers; // injected by v-model runtime\n  if ((isDef(modifiers) && modifiers.number) || elm.type === 'number') {\n    return toNumber(value) !== toNumber(newVal)\n  }\n  if (isDef(modifiers) && modifiers.trim) {\n    return value.trim() !== newVal.trim()\n  }\n  return value !== newVal\n}\n\nvar domProps = {\n  create: updateDOMProps,\n  update: updateDOMProps\n};\n\n/*  */\n\nvar parseStyleText = cached(function (cssText) {\n  var res = {};\n  var listDelimiter = /;(?![^(]*\\))/g;\n  var propertyDelimiter = /:(.+)/;\n  cssText.split(listDelimiter).forEach(function (item) {\n    if (item) {\n      var tmp = item.split(propertyDelimiter);\n      tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n  var style = normalizeStyleBinding(data.style);\n  // static style is pre-processed into an object during compilation\n  // and is always a fresh object, so it's safe to merge into it\n  return data.staticStyle\n    ? extend(data.staticStyle, style)\n    : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n  if (Array.isArray(bindingStyle)) {\n    return toObject(bindingStyle)\n  }\n  if (typeof bindingStyle === 'string') {\n    return parseStyleText(bindingStyle)\n  }\n  return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n  var res = {};\n  var styleData;\n\n  if (checkChild) {\n    var childNode = vnode;\n    while (childNode.componentInstance) {\n      childNode = childNode.componentInstance._vnode;\n      if (childNode.data && (styleData = normalizeStyleData(childNode.data))) {\n        extend(res, styleData);\n      }\n    }\n  }\n\n  if ((styleData = normalizeStyleData(vnode.data))) {\n    extend(res, styleData);\n  }\n\n  var parentNode = vnode;\n  while ((parentNode = parentNode.parent)) {\n    if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n      extend(res, styleData);\n    }\n  }\n  return res\n}\n\n/*  */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n  /* istanbul ignore if */\n  if (cssVarRE.test(name)) {\n    el.style.setProperty(name, val);\n  } else if (importantRE.test(val)) {\n    el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n  } else {\n    var normalizedName = normalize(name);\n    if (Array.isArray(val)) {\n      // Support values array created by autoprefixer, e.g.\n      // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n      // Set them one by one, and the browser will only set those it can recognize\n      for (var i = 0, len = val.length; i < len; i++) {\n        el.style[normalizedName] = val[i];\n      }\n    } else {\n      el.style[normalizedName] = val;\n    }\n  }\n};\n\nvar prefixes = ['Webkit', 'Moz', 'ms'];\n\nvar testEl;\nvar normalize = cached(function (prop) {\n  testEl = testEl || document.createElement('div');\n  prop = camelize(prop);\n  if (prop !== 'filter' && (prop in testEl.style)) {\n    return prop\n  }\n  var upper = prop.charAt(0).toUpperCase() + prop.slice(1);\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefixed = prefixes[i] + upper;\n    if (prefixed in testEl.style) {\n      return prefixed\n    }\n  }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n\n  if (isUndef(data.staticStyle) && isUndef(data.style) &&\n    isUndef(oldData.staticStyle) && isUndef(oldData.style)\n  ) {\n    return\n  }\n\n  var cur, name;\n  var el = vnode.elm;\n  var oldStaticStyle = oldData.staticStyle;\n  var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n  // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n  var oldStyle = oldStaticStyle || oldStyleBinding;\n\n  var style = normalizeStyleBinding(vnode.data.style) || {};\n\n  // store normalized style under a different key for next diff\n  // make sure to clone it if it's reactive, since the user likley wants\n  // to mutate it.\n  vnode.data.normalizedStyle = isDef(style.__ob__)\n    ? extend({}, style)\n    : style;\n\n  var newStyle = getStyle(vnode, true);\n\n  for (name in oldStyle) {\n    if (isUndef(newStyle[name])) {\n      setProp(el, name, '');\n    }\n  }\n  for (name in newStyle) {\n    cur = newStyle[name];\n    if (cur !== oldStyle[name]) {\n      // ie9 setting to null has no effect, must use empty string\n      setProp(el, name, cur == null ? '' : cur);\n    }\n  }\n}\n\nvar style = {\n  create: updateStyle,\n  update: updateStyle\n};\n\n/*  */\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return\n  }\n\n  /* istanbul ignore else */\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(/\\s+/).forEach(function (c) { return el.classList.add(c); });\n    } else {\n      el.classList.add(cls);\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n    if (cur.indexOf(' ' + cls + ' ') < 0) {\n      el.setAttribute('class', (cur + cls).trim());\n    }\n  }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return\n  }\n\n  /* istanbul ignore else */\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(/\\s+/).forEach(function (c) { return el.classList.remove(c); });\n    } else {\n      el.classList.remove(cls);\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n    var tar = ' ' + cls + ' ';\n    while (cur.indexOf(tar) >= 0) {\n      cur = cur.replace(tar, ' ');\n    }\n    el.setAttribute('class', cur.trim());\n  }\n}\n\n/*  */\n\nfunction resolveTransition (def$$1) {\n  if (!def$$1) {\n    return\n  }\n  /* istanbul ignore else */\n  if (typeof def$$1 === 'object') {\n    var res = {};\n    if (def$$1.css !== false) {\n      extend(res, autoCssTransition(def$$1.name || 'v'));\n    }\n    extend(res, def$$1);\n    return res\n  } else if (typeof def$$1 === 'string') {\n    return autoCssTransition(def$$1)\n  }\n}\n\nvar autoCssTransition = cached(function (name) {\n  return {\n    enterClass: (name + \"-enter\"),\n    enterToClass: (name + \"-enter-to\"),\n    enterActiveClass: (name + \"-enter-active\"),\n    leaveClass: (name + \"-leave\"),\n    leaveToClass: (name + \"-leave-to\"),\n    leaveActiveClass: (name + \"-leave-active\")\n  }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n  /* istanbul ignore if */\n  if (window.ontransitionend === undefined &&\n    window.onwebkittransitionend !== undefined\n  ) {\n    transitionProp = 'WebkitTransition';\n    transitionEndEvent = 'webkitTransitionEnd';\n  }\n  if (window.onanimationend === undefined &&\n    window.onwebkitanimationend !== undefined\n  ) {\n    animationProp = 'WebkitAnimation';\n    animationEndEvent = 'webkitAnimationEnd';\n  }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser && window.requestAnimationFrame\n  ? window.requestAnimationFrame.bind(window)\n  : setTimeout;\n\nfunction nextFrame (fn) {\n  raf(function () {\n    raf(fn);\n  });\n}\n\nfunction addTransitionClass (el, cls) {\n  (el._transitionClasses || (el._transitionClasses = [])).push(cls);\n  addClass(el, cls);\n}\n\nfunction removeTransitionClass (el, cls) {\n  if (el._transitionClasses) {\n    remove(el._transitionClasses, cls);\n  }\n  removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n  el,\n  expectedType,\n  cb\n) {\n  var ref = getTransitionInfo(el, expectedType);\n  var type = ref.type;\n  var timeout = ref.timeout;\n  var propCount = ref.propCount;\n  if (!type) { return cb() }\n  var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n  var ended = 0;\n  var end = function () {\n    el.removeEventListener(event, onEnd);\n    cb();\n  };\n  var onEnd = function (e) {\n    if (e.target === el) {\n      if (++ended >= propCount) {\n        end();\n      }\n    }\n  };\n  setTimeout(function () {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n  var styles = window.getComputedStyle(el);\n  var transitionDelays = styles[transitionProp + 'Delay'].split(', ');\n  var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n  var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  var animationDelays = styles[animationProp + 'Delay'].split(', ');\n  var animationDurations = styles[animationProp + 'Duration'].split(', ');\n  var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n  var type;\n  var timeout = 0;\n  var propCount = 0;\n  /* istanbul ignore if */\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0\n      ? transitionTimeout > animationTimeout\n        ? TRANSITION\n        : ANIMATION\n      : null;\n    propCount = type\n      ? type === TRANSITION\n        ? transitionDurations.length\n        : animationDurations.length\n      : 0;\n  }\n  var hasTransform =\n    type === TRANSITION &&\n    transformRE.test(styles[transitionProp + 'Property']);\n  return {\n    type: type,\n    timeout: timeout,\n    propCount: propCount,\n    hasTransform: hasTransform\n  }\n}\n\nfunction getTimeout (delays, durations) {\n  /* istanbul ignore next */\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n\n  return Math.max.apply(null, durations.map(function (d, i) {\n    return toMs(d) + toMs(delays[i])\n  }))\n}\n\nfunction toMs (s) {\n  return Number(s.slice(0, -1)) * 1000\n}\n\n/*  */\n\nfunction enter (vnode, toggleDisplay) {\n  var el = vnode.elm;\n\n  // call leave callback now\n  if (isDef(el._leaveCb)) {\n    el._leaveCb.cancelled = true;\n    el._leaveCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n  if (isUndef(data)) {\n    return\n  }\n\n  /* istanbul ignore if */\n  if (isDef(el._enterCb) || el.nodeType !== 1) {\n    return\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var enterClass = data.enterClass;\n  var enterToClass = data.enterToClass;\n  var enterActiveClass = data.enterActiveClass;\n  var appearClass = data.appearClass;\n  var appearToClass = data.appearToClass;\n  var appearActiveClass = data.appearActiveClass;\n  var beforeEnter = data.beforeEnter;\n  var enter = data.enter;\n  var afterEnter = data.afterEnter;\n  var enterCancelled = data.enterCancelled;\n  var beforeAppear = data.beforeAppear;\n  var appear = data.appear;\n  var afterAppear = data.afterAppear;\n  var appearCancelled = data.appearCancelled;\n  var duration = data.duration;\n\n  // activeInstance will always be the <transition> component managing this\n  // transition. One edge case to check is when the <transition> is placed\n  // as the root node of a child component. In that case we need to check\n  // <transition>'s parent for appear check.\n  var context = activeInstance;\n  var transitionNode = activeInstance.$vnode;\n  while (transitionNode && transitionNode.parent) {\n    transitionNode = transitionNode.parent;\n    context = transitionNode.context;\n  }\n\n  var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n  if (isAppear && !appear && appear !== '') {\n    return\n  }\n\n  var startClass = isAppear && appearClass\n    ? appearClass\n    : enterClass;\n  var activeClass = isAppear && appearActiveClass\n    ? appearActiveClass\n    : enterActiveClass;\n  var toClass = isAppear && appearToClass\n    ? appearToClass\n    : enterToClass;\n\n  var beforeEnterHook = isAppear\n    ? (beforeAppear || beforeEnter)\n    : beforeEnter;\n  var enterHook = isAppear\n    ? (typeof appear === 'function' ? appear : enter)\n    : enter;\n  var afterEnterHook = isAppear\n    ? (afterAppear || afterEnter)\n    : afterEnter;\n  var enterCancelledHook = isAppear\n    ? (appearCancelled || enterCancelled)\n    : enterCancelled;\n\n  var explicitEnterDuration = toNumber(\n    isObject(duration)\n      ? duration.enter\n      : duration\n  );\n\n  if ( true && explicitEnterDuration != null) {\n    checkDuration(explicitEnterDuration, 'enter', vnode);\n  }\n\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(enterHook);\n\n  var cb = el._enterCb = once(function () {\n    if (expectsCSS) {\n      removeTransitionClass(el, toClass);\n      removeTransitionClass(el, activeClass);\n    }\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, startClass);\n      }\n      enterCancelledHook && enterCancelledHook(el);\n    } else {\n      afterEnterHook && afterEnterHook(el);\n    }\n    el._enterCb = null;\n  });\n\n  if (!vnode.data.show) {\n    // remove pending leave element on enter by injecting an insert hook\n    mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', function () {\n      var parent = el.parentNode;\n      var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n      if (pendingNode &&\n        pendingNode.tag === vnode.tag &&\n        pendingNode.elm._leaveCb\n      ) {\n        pendingNode.elm._leaveCb();\n      }\n      enterHook && enterHook(el, cb);\n    });\n  }\n\n  // start enter transition\n  beforeEnterHook && beforeEnterHook(el);\n  if (expectsCSS) {\n    addTransitionClass(el, startClass);\n    addTransitionClass(el, activeClass);\n    nextFrame(function () {\n      addTransitionClass(el, toClass);\n      removeTransitionClass(el, startClass);\n      if (!cb.cancelled && !userWantsControl) {\n        if (isValidDuration(explicitEnterDuration)) {\n          setTimeout(cb, explicitEnterDuration);\n        } else {\n          whenTransitionEnds(el, type, cb);\n        }\n      }\n    });\n  }\n\n  if (vnode.data.show) {\n    toggleDisplay && toggleDisplay();\n    enterHook && enterHook(el, cb);\n  }\n\n  if (!expectsCSS && !userWantsControl) {\n    cb();\n  }\n}\n\nfunction leave (vnode, rm) {\n  var el = vnode.elm;\n\n  // call enter callback now\n  if (isDef(el._enterCb)) {\n    el._enterCb.cancelled = true;\n    el._enterCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n  if (isUndef(data)) {\n    return rm()\n  }\n\n  /* istanbul ignore if */\n  if (isDef(el._leaveCb) || el.nodeType !== 1) {\n    return\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var leaveClass = data.leaveClass;\n  var leaveToClass = data.leaveToClass;\n  var leaveActiveClass = data.leaveActiveClass;\n  var beforeLeave = data.beforeLeave;\n  var leave = data.leave;\n  var afterLeave = data.afterLeave;\n  var leaveCancelled = data.leaveCancelled;\n  var delayLeave = data.delayLeave;\n  var duration = data.duration;\n\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(leave);\n\n  var explicitLeaveDuration = toNumber(\n    isObject(duration)\n      ? duration.leave\n      : duration\n  );\n\n  if ( true && isDef(explicitLeaveDuration)) {\n    checkDuration(explicitLeaveDuration, 'leave', vnode);\n  }\n\n  var cb = el._leaveCb = once(function () {\n    if (el.parentNode && el.parentNode._pending) {\n      el.parentNode._pending[vnode.key] = null;\n    }\n    if (expectsCSS) {\n      removeTransitionClass(el, leaveToClass);\n      removeTransitionClass(el, leaveActiveClass);\n    }\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, leaveClass);\n      }\n      leaveCancelled && leaveCancelled(el);\n    } else {\n      rm();\n      afterLeave && afterLeave(el);\n    }\n    el._leaveCb = null;\n  });\n\n  if (delayLeave) {\n    delayLeave(performLeave);\n  } else {\n    performLeave();\n  }\n\n  function performLeave () {\n    // the delayed leave may have already been cancelled\n    if (cb.cancelled) {\n      return\n    }\n    // record leaving element\n    if (!vnode.data.show) {\n      (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n    }\n    beforeLeave && beforeLeave(el);\n    if (expectsCSS) {\n      addTransitionClass(el, leaveClass);\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(function () {\n        addTransitionClass(el, leaveToClass);\n        removeTransitionClass(el, leaveClass);\n        if (!cb.cancelled && !userWantsControl) {\n          if (isValidDuration(explicitLeaveDuration)) {\n            setTimeout(cb, explicitLeaveDuration);\n          } else {\n            whenTransitionEnds(el, type, cb);\n          }\n        }\n      });\n    }\n    leave && leave(el, cb);\n    if (!expectsCSS && !userWantsControl) {\n      cb();\n    }\n  }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n  if (typeof val !== 'number') {\n    warn(\n      \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n      \"got \" + (JSON.stringify(val)) + \".\",\n      vnode.context\n    );\n  } else if (isNaN(val)) {\n    warn(\n      \"<transition> explicit \" + name + \" duration is NaN - \" +\n      'the duration expression might be incorrect.',\n      vnode.context\n    );\n  }\n}\n\nfunction isValidDuration (val) {\n  return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n  if (isUndef(fn)) {\n    return false\n  }\n  var invokerFns = fn.fns;\n  if (isDef(invokerFns)) {\n    // invoker\n    return getHookArgumentsLength(\n      Array.isArray(invokerFns)\n        ? invokerFns[0]\n        : invokerFns\n    )\n  } else {\n    return (fn._length || fn.length) > 1\n  }\n}\n\nfunction _enter (_, vnode) {\n  if (vnode.data.show !== true) {\n    enter(vnode);\n  }\n}\n\nvar transition = inBrowser ? {\n  create: _enter,\n  activate: _enter,\n  remove: function remove$$1 (vnode, rm) {\n    /* istanbul ignore else */\n    if (vnode.data.show !== true) {\n      leave(vnode, rm);\n    } else {\n      rm();\n    }\n  }\n} : {};\n\nvar platformModules = [\n  attrs,\n  klass,\n  events,\n  domProps,\n  style,\n  transition\n];\n\n/*  */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n  // http://www.matts411.com/post/internet-explorer-9-oninput/\n  document.addEventListener('selectionchange', function () {\n    var el = document.activeElement;\n    if (el && el.vmodel) {\n      trigger(el, 'input');\n    }\n  });\n}\n\nvar model$1 = {\n  inserted: function inserted (el, binding, vnode) {\n    if (vnode.tag === 'select') {\n      var cb = function () {\n        setSelected(el, binding, vnode.context);\n      };\n      cb();\n      /* istanbul ignore if */\n      if (isIE || isEdge) {\n        setTimeout(cb, 0);\n      }\n    } else if (vnode.tag === 'textarea' || el.type === 'text' || el.type === 'password') {\n      el._vModifiers = binding.modifiers;\n      if (!binding.modifiers.lazy) {\n        // Safari < 10.2 & UIWebView doesn't fire compositionend when\n        // switching focus before confirming composition choice\n        // this also fixes the issue where some browsers e.g. iOS Chrome\n        // fires \"change\" instead of \"input\" on autocomplete.\n        el.addEventListener('change', onCompositionEnd);\n        if (!isAndroid) {\n          el.addEventListener('compositionstart', onCompositionStart);\n          el.addEventListener('compositionend', onCompositionEnd);\n        }\n        /* istanbul ignore if */\n        if (isIE9) {\n          el.vmodel = true;\n        }\n      }\n    }\n  },\n  componentUpdated: function componentUpdated (el, binding, vnode) {\n    if (vnode.tag === 'select') {\n      setSelected(el, binding, vnode.context);\n      // in case the options rendered by v-for have changed,\n      // it's possible that the value is out-of-sync with the rendered options.\n      // detect such cases and filter out values that no longer has a matching\n      // option in the DOM.\n      var needReset = el.multiple\n        ? binding.value.some(function (v) { return hasNoMatchingOption(v, el.options); })\n        : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, el.options);\n      if (needReset) {\n        trigger(el, 'change');\n      }\n    }\n  }\n};\n\nfunction setSelected (el, binding, vm) {\n  var value = binding.value;\n  var isMultiple = el.multiple;\n  if (isMultiple && !Array.isArray(value)) {\n     true && warn(\n      \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n      \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n      vm\n    );\n    return\n  }\n  var selected, option;\n  for (var i = 0, l = el.options.length; i < l; i++) {\n    option = el.options[i];\n    if (isMultiple) {\n      selected = looseIndexOf(value, getValue(option)) > -1;\n      if (option.selected !== selected) {\n        option.selected = selected;\n      }\n    } else {\n      if (looseEqual(getValue(option), value)) {\n        if (el.selectedIndex !== i) {\n          el.selectedIndex = i;\n        }\n        return\n      }\n    }\n  }\n  if (!isMultiple) {\n    el.selectedIndex = -1;\n  }\n}\n\nfunction hasNoMatchingOption (value, options) {\n  for (var i = 0, l = options.length; i < l; i++) {\n    if (looseEqual(getValue(options[i]), value)) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction getValue (option) {\n  return '_value' in option\n    ? option._value\n    : option.value\n}\n\nfunction onCompositionStart (e) {\n  e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n  // prevent triggering an input event for no reason\n  if (!e.target.composing) { return }\n  e.target.composing = false;\n  trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n  var e = document.createEvent('HTMLEvents');\n  e.initEvent(type, true, true);\n  el.dispatchEvent(e);\n}\n\n/*  */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n  return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n    ? locateNode(vnode.componentInstance._vnode)\n    : vnode\n}\n\nvar show = {\n  bind: function bind (el, ref, vnode) {\n    var value = ref.value;\n\n    vnode = locateNode(vnode);\n    var transition = vnode.data && vnode.data.transition;\n    var originalDisplay = el.__vOriginalDisplay =\n      el.style.display === 'none' ? '' : el.style.display;\n    if (value && transition && !isIE9) {\n      vnode.data.show = true;\n      enter(vnode, function () {\n        el.style.display = originalDisplay;\n      });\n    } else {\n      el.style.display = value ? originalDisplay : 'none';\n    }\n  },\n\n  update: function update (el, ref, vnode) {\n    var value = ref.value;\n    var oldValue = ref.oldValue;\n\n    /* istanbul ignore if */\n    if (value === oldValue) { return }\n    vnode = locateNode(vnode);\n    var transition = vnode.data && vnode.data.transition;\n    if (transition && !isIE9) {\n      vnode.data.show = true;\n      if (value) {\n        enter(vnode, function () {\n          el.style.display = el.__vOriginalDisplay;\n        });\n      } else {\n        leave(vnode, function () {\n          el.style.display = 'none';\n        });\n      }\n    } else {\n      el.style.display = value ? el.__vOriginalDisplay : 'none';\n    }\n  },\n\n  unbind: function unbind (\n    el,\n    binding,\n    vnode,\n    oldVnode,\n    isDestroy\n  ) {\n    if (!isDestroy) {\n      el.style.display = el.__vOriginalDisplay;\n    }\n  }\n};\n\nvar platformDirectives = {\n  model: model$1,\n  show: show\n};\n\n/*  */\n\n// Provides transition support for a single element/component.\n// supports transition mode (out-in / in-out)\n\nvar transitionProps = {\n  name: String,\n  appear: Boolean,\n  css: Boolean,\n  mode: String,\n  type: String,\n  enterClass: String,\n  leaveClass: String,\n  enterToClass: String,\n  leaveToClass: String,\n  enterActiveClass: String,\n  leaveActiveClass: String,\n  appearClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n  var compOptions = vnode && vnode.componentOptions;\n  if (compOptions && compOptions.Ctor.options.abstract) {\n    return getRealChild(getFirstComponentChild(compOptions.children))\n  } else {\n    return vnode\n  }\n}\n\nfunction extractTransitionData (comp) {\n  var data = {};\n  var options = comp.$options;\n  // props\n  for (var key in options.propsData) {\n    data[key] = comp[key];\n  }\n  // events.\n  // extract listeners and pass them directly to the transition methods\n  var listeners = options._parentListeners;\n  for (var key$1 in listeners) {\n    data[camelize(key$1)] = listeners[key$1];\n  }\n  return data\n}\n\nfunction placeholder (h, rawChild) {\n  if (/\\d-keep-alive$/.test(rawChild.tag)) {\n    return h('keep-alive', {\n      props: rawChild.componentOptions.propsData\n    })\n  }\n}\n\nfunction hasParentTransition (vnode) {\n  while ((vnode = vnode.parent)) {\n    if (vnode.data.transition) {\n      return true\n    }\n  }\n}\n\nfunction isSameChild (child, oldChild) {\n  return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar Transition = {\n  name: 'transition',\n  props: transitionProps,\n  abstract: true,\n\n  render: function render (h) {\n    var this$1 = this;\n\n    var children = this.$slots.default;\n    if (!children) {\n      return\n    }\n\n    // filter out text nodes (possible whitespaces)\n    children = children.filter(function (c) { return c.tag; });\n    /* istanbul ignore if */\n    if (!children.length) {\n      return\n    }\n\n    // warn multiple elements\n    if ( true && children.length > 1) {\n      warn(\n        '<transition> can only be used on a single element. Use ' +\n        '<transition-group> for lists.',\n        this.$parent\n      );\n    }\n\n    var mode = this.mode;\n\n    // warn invalid mode\n    if ( true &&\n      mode && mode !== 'in-out' && mode !== 'out-in'\n    ) {\n      warn(\n        'invalid <transition> mode: ' + mode,\n        this.$parent\n      );\n    }\n\n    var rawChild = children[0];\n\n    // if this is a component root node and the component's\n    // parent container node also has transition, skip.\n    if (hasParentTransition(this.$vnode)) {\n      return rawChild\n    }\n\n    // apply transition data to child\n    // use getRealChild() to ignore abstract components e.g. keep-alive\n    var child = getRealChild(rawChild);\n    /* istanbul ignore if */\n    if (!child) {\n      return rawChild\n    }\n\n    if (this._leaving) {\n      return placeholder(h, rawChild)\n    }\n\n    // ensure a key that is unique to the vnode type and to this transition\n    // component instance. This key will be used to remove pending leaving nodes\n    // during entering.\n    var id = \"__transition-\" + (this._uid) + \"-\";\n    child.key = child.key == null\n      ? id + child.tag\n      : isPrimitive(child.key)\n        ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n        : child.key;\n\n    var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n    var oldRawChild = this._vnode;\n    var oldChild = getRealChild(oldRawChild);\n\n    // mark v-show\n    // so that the transition module can hand over the control to the directive\n    if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {\n      child.data.show = true;\n    }\n\n    if (oldChild && oldChild.data && !isSameChild(child, oldChild)) {\n      // replace old child transition data with fresh one\n      // important for dynamic transitions!\n      var oldData = oldChild && (oldChild.data.transition = extend({}, data));\n      // handle transition mode\n      if (mode === 'out-in') {\n        // return placeholder node and queue update when leave finishes\n        this._leaving = true;\n        mergeVNodeHook(oldData, 'afterLeave', function () {\n          this$1._leaving = false;\n          this$1.$forceUpdate();\n        });\n        return placeholder(h, rawChild)\n      } else if (mode === 'in-out') {\n        var delayedLeave;\n        var performLeave = function () { delayedLeave(); };\n        mergeVNodeHook(data, 'afterEnter', performLeave);\n        mergeVNodeHook(data, 'enterCancelled', performLeave);\n        mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n      }\n    }\n\n    return rawChild\n  }\n};\n\n/*  */\n\n// Provides transition support for list items.\n// supports move transitions using the FLIP technique.\n\n// Because the vdom's children update algorithm is \"unstable\" - i.e.\n// it doesn't guarantee the relative positioning of removed elements,\n// we force transition-group to update its children into two passes:\n// in the first pass, we remove all nodes that need to be removed,\n// triggering their leaving transition; in the second pass, we insert/move\n// into the final desired state. This way in the second pass removed\n// nodes will remain where they should be.\n\nvar props = extend({\n  tag: String,\n  moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n  props: props,\n\n  render: function render (h) {\n    var tag = this.tag || this.$vnode.data.tag || 'span';\n    var map = Object.create(null);\n    var prevChildren = this.prevChildren = this.children;\n    var rawChildren = this.$slots.default || [];\n    var children = this.children = [];\n    var transitionData = extractTransitionData(this);\n\n    for (var i = 0; i < rawChildren.length; i++) {\n      var c = rawChildren[i];\n      if (c.tag) {\n        if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n          children.push(c);\n          map[c.key] = c\n          ;(c.data || (c.data = {})).transition = transitionData;\n        } else if (true) {\n          var opts = c.componentOptions;\n          var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n          warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n        }\n      }\n    }\n\n    if (prevChildren) {\n      var kept = [];\n      var removed = [];\n      for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n        var c$1 = prevChildren[i$1];\n        c$1.data.transition = transitionData;\n        c$1.data.pos = c$1.elm.getBoundingClientRect();\n        if (map[c$1.key]) {\n          kept.push(c$1);\n        } else {\n          removed.push(c$1);\n        }\n      }\n      this.kept = h(tag, null, kept);\n      this.removed = removed;\n    }\n\n    return h(tag, null, children)\n  },\n\n  beforeUpdate: function beforeUpdate () {\n    // force removing pass\n    this.__patch__(\n      this._vnode,\n      this.kept,\n      false, // hydrating\n      true // removeOnly (!important, avoids unnecessary moves)\n    );\n    this._vnode = this.kept;\n  },\n\n  updated: function updated () {\n    var children = this.prevChildren;\n    var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n    if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n      return\n    }\n\n    // we divide the work into three loops to avoid mixing DOM reads and writes\n    // in each iteration - which helps prevent layout thrashing.\n    children.forEach(callPendingCbs);\n    children.forEach(recordPosition);\n    children.forEach(applyTranslation);\n\n    // force reflow to put everything in position\n    var body = document.body;\n    var f = body.offsetHeight; // eslint-disable-line\n\n    children.forEach(function (c) {\n      if (c.data.moved) {\n        var el = c.elm;\n        var s = el.style;\n        addTransitionClass(el, moveClass);\n        s.transform = s.WebkitTransform = s.transitionDuration = '';\n        el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(transitionEndEvent, cb);\n            el._moveCb = null;\n            removeTransitionClass(el, moveClass);\n          }\n        });\n      }\n    });\n  },\n\n  methods: {\n    hasMove: function hasMove (el, moveClass) {\n      /* istanbul ignore if */\n      if (!hasTransition) {\n        return false\n      }\n      if (this._hasMove != null) {\n        return this._hasMove\n      }\n      // Detect whether an element with the move class applied has\n      // CSS transitions. Since the element may be inside an entering\n      // transition at this very moment, we make a clone of it and remove\n      // all other transition classes applied to ensure only the move class\n      // is applied.\n      var clone = el.cloneNode();\n      if (el._transitionClasses) {\n        el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n      }\n      addClass(clone, moveClass);\n      clone.style.display = 'none';\n      this.$el.appendChild(clone);\n      var info = getTransitionInfo(clone);\n      this.$el.removeChild(clone);\n      return (this._hasMove = info.hasTransform)\n    }\n  }\n};\n\nfunction callPendingCbs (c) {\n  /* istanbul ignore if */\n  if (c.elm._moveCb) {\n    c.elm._moveCb();\n  }\n  /* istanbul ignore if */\n  if (c.elm._enterCb) {\n    c.elm._enterCb();\n  }\n}\n\nfunction recordPosition (c) {\n  c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n  var oldPos = c.data.pos;\n  var newPos = c.data.newPos;\n  var dx = oldPos.left - newPos.left;\n  var dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    c.data.moved = true;\n    var s = c.elm.style;\n    s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n    s.transitionDuration = '0s';\n  }\n}\n\nvar platformComponents = {\n  Transition: Transition,\n  TransitionGroup: TransitionGroup\n};\n\n/*  */\n\n// install platform specific utils\nVue$3.config.mustUseProp = mustUseProp;\nVue$3.config.isReservedTag = isReservedTag;\nVue$3.config.isReservedAttr = isReservedAttr;\nVue$3.config.getTagNamespace = getTagNamespace;\nVue$3.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue$3.options.directives, platformDirectives);\nextend(Vue$3.options.components, platformComponents);\n\n// install platform patch function\nVue$3.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue$3.prototype.$mount = function (\n  el,\n  hydrating\n) {\n  el = el && inBrowser ? query(el) : undefined;\n  return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nsetTimeout(function () {\n  if (config.devtools) {\n    if (devtools) {\n      devtools.emit('init', Vue$3);\n    } else if ( true && isChrome) {\n      console[console.info ? 'info' : 'log'](\n        'Download the Vue Devtools extension for a better development experience:\\n' +\n        'https://github.com/vuejs/vue-devtools'\n      );\n    }\n  }\n  if ( true &&\n    config.productionTip !== false &&\n    inBrowser && typeof console !== 'undefined'\n  ) {\n    console[console.info ? 'info' : 'log'](\n      \"You are running Vue in development mode.\\n\" +\n      \"Make sure to turn on production mode when deploying for production.\\n\" +\n      \"See more tips at https://vuejs.org/guide/deployment.html\"\n    );\n  }\n}, 0);\n\n/*  */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vue$3);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWJhY2t0b3RvcC9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLnJ1bnRpbWUuZXNtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1iYWNrdG90b3Avbm9kZV9tb2R1bGVzL3Z1ZS9kaXN0L3Z1ZS5ydW50aW1lLmVzbS5qcz8yYTFhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogVnVlLmpzIHYyLjMuM1xuICogKGMpIDIwMTQtMjAxNyBFdmFuIFlvdVxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG4vKiAgKi9cblxuLy8gdGhlc2UgaGVscGVycyBwcm9kdWNlcyBiZXR0ZXIgdm0gY29kZSBpbiBKUyBlbmdpbmVzIGR1ZSB0byB0aGVpclxuLy8gZXhwbGljaXRuZXNzIGFuZCBmdW5jdGlvbiBpbmxpbmluZ1xuZnVuY3Rpb24gaXNVbmRlZiAodikge1xuICByZXR1cm4gdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNEZWYgKHYpIHtcbiAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSAodikge1xuICByZXR1cm4gdiA9PT0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBpc0ZhbHNlICh2KSB7XG4gIHJldHVybiB2ID09PSBmYWxzZVxufVxuLyoqXG4gKiBDaGVjayBpZiB2YWx1ZSBpcyBwcmltaXRpdmVcbiAqL1xuZnVuY3Rpb24gaXNQcmltaXRpdmUgKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcidcbn1cblxuLyoqXG4gKiBRdWljayBvYmplY3QgY2hlY2sgLSB0aGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIHRlbGxcbiAqIE9iamVjdHMgZnJvbSBwcmltaXRpdmUgdmFsdWVzIHdoZW4gd2Uga25vdyB0aGUgdmFsdWVcbiAqIGlzIGEgSlNPTi1jb21wbGlhbnQgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbnZhciBfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIFN0cmljdCBvYmplY3QgdHlwZSBjaGVjay4gT25seSByZXR1cm5zIHRydWVcbiAqIGZvciBwbGFpbiBKYXZhU2NyaXB0IG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QgKG9iaikge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSdcbn1cblxuZnVuY3Rpb24gaXNSZWdFeHAgKHYpIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKHYpID09PSAnW29iamVjdCBSZWdFeHBdJ1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSB2YWx1ZSB0byBhIHN0cmluZyB0aGF0IGlzIGFjdHVhbGx5IHJlbmRlcmVkLlxuICovXG5mdW5jdGlvbiB0b1N0cmluZyAodmFsKSB7XG4gIHJldHVybiB2YWwgPT0gbnVsbFxuICAgID8gJydcbiAgICA6IHR5cGVvZiB2YWwgPT09ICdvYmplY3QnXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KHZhbCwgbnVsbCwgMilcbiAgICAgIDogU3RyaW5nKHZhbClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgaW5wdXQgdmFsdWUgdG8gYSBudW1iZXIgZm9yIHBlcnNpc3RlbmNlLlxuICogSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KHZhbCk7XG4gIHJldHVybiBpc05hTihuKSA/IHZhbCA6IG5cbn1cblxuLyoqXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYSBrZXlcbiAqIGlzIGluIHRoYXQgbWFwLlxuICovXG5mdW5jdGlvbiBtYWtlTWFwIChcbiAgc3RyLFxuICBleHBlY3RzTG93ZXJDYXNlXG4pIHtcbiAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIG1hcFtsaXN0W2ldXSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2VcbiAgICA/IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWwudG9Mb3dlckNhc2UoKV07IH1cbiAgICA6IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWxdOyB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0YWcgaXMgYSBidWlsdC1pbiB0YWcuXG4gKi9cbnZhciBpc0J1aWx0SW5UYWcgPSBtYWtlTWFwKCdzbG90LGNvbXBvbmVudCcsIHRydWUpO1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpdGVtIGZyb20gYW4gYXJyYXlcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlIChhcnIsIGl0ZW0pIHtcbiAgaWYgKGFyci5sZW5ndGgpIHtcbiAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGFyci5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgb2JqZWN0IGhhcyB0aGUgcHJvcGVydHkuXG4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBoYXNPd24gKG9iaiwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlZCB2ZXJzaW9uIG9mIGEgcHVyZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FjaGVkIChmbikge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gKGZ1bmN0aW9uIGNhY2hlZEZuIChzdHIpIHtcbiAgICB2YXIgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSlcbiAgfSlcbn1cblxuLyoqXG4gKiBDYW1lbGl6ZSBhIGh5cGhlbi1kZWxpbWl0ZWQgc3RyaW5nLlxuICovXG52YXIgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcbnZhciBjYW1lbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCBmdW5jdGlvbiAoXywgYykgeyByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnOyB9KVxufSk7XG5cbi8qKlxuICogQ2FwaXRhbGl6ZSBhIHN0cmluZy5cbiAqL1xudmFyIGNhcGl0YWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpXG59KTtcblxuLyoqXG4gKiBIeXBoZW5hdGUgYSBjYW1lbENhc2Ugc3RyaW5nLlxuICovXG52YXIgaHlwaGVuYXRlUkUgPSAvKFteLV0pKFtBLVpdKS9nO1xudmFyIGh5cGhlbmF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHJcbiAgICAucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJylcbiAgICAucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJylcbiAgICAudG9Mb3dlckNhc2UoKVxufSk7XG5cbi8qKlxuICogU2ltcGxlIGJpbmQsIGZhc3RlciB0aGFuIG5hdGl2ZVxuICovXG5mdW5jdGlvbiBiaW5kIChmbiwgY3R4KSB7XG4gIGZ1bmN0aW9uIGJvdW5kRm4gKGEpIHtcbiAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIGxcbiAgICAgID8gbCA+IDFcbiAgICAgICAgPyBmbi5hcHBseShjdHgsIGFyZ3VtZW50cylcbiAgICAgICAgOiBmbi5jYWxsKGN0eCwgYSlcbiAgICAgIDogZm4uY2FsbChjdHgpXG4gIH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIGZuIGxlbmd0aFxuICBib3VuZEZuLl9sZW5ndGggPSBmbi5sZW5ndGg7XG4gIHJldHVybiBib3VuZEZuXG59XG5cbi8qKlxuICogQ29udmVydCBhbiBBcnJheS1saWtlIG9iamVjdCB0byBhIHJlYWwgQXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkgKGxpc3QsIHN0YXJ0KSB7XG4gIHN0YXJ0ID0gc3RhcnQgfHwgMDtcbiAgdmFyIGkgPSBsaXN0Lmxlbmd0aCAtIHN0YXJ0O1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgcmV0W2ldID0gbGlzdFtpICsgc3RhcnRdO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyoqXG4gKiBNaXggcHJvcGVydGllcyBpbnRvIHRhcmdldCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZCAodG8sIF9mcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBfZnJvbSkge1xuICAgIHRvW2tleV0gPSBfZnJvbVtrZXldO1xuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIE1lcmdlIGFuIEFycmF5IG9mIE9iamVjdHMgaW50byBhIHNpbmdsZSBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHRvT2JqZWN0IChhcnIpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0pIHtcbiAgICAgIGV4dGVuZChyZXMsIGFycltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyoqXG4gKiBQZXJmb3JtIG5vIG9wZXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gbm9vcCAoKSB7fVxuXG4vKipcbiAqIEFsd2F5cyByZXR1cm4gZmFsc2UuXG4gKi9cbnZhciBubyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9O1xuXG4vKipcbiAqIFJldHVybiBzYW1lIHZhbHVlXG4gKi9cbnZhciBpZGVudGl0eSA9IGZ1bmN0aW9uIChfKSB7IHJldHVybiBfOyB9O1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RhdGljIGtleXMgc3RyaW5nIGZyb20gY29tcGlsZXIgbW9kdWxlcy5cbiAqL1xuXG5cbi8qKlxuICogQ2hlY2sgaWYgdHdvIHZhbHVlcyBhcmUgbG9vc2VseSBlcXVhbCAtIHRoYXQgaXMsXG4gKiBpZiB0aGV5IGFyZSBwbGFpbiBvYmplY3RzLCBkbyB0aGV5IGhhdmUgdGhlIHNhbWUgc2hhcGU/XG4gKi9cbmZ1bmN0aW9uIGxvb3NlRXF1YWwgKGEsIGIpIHtcbiAgdmFyIGlzT2JqZWN0QSA9IGlzT2JqZWN0KGEpO1xuICB2YXIgaXNPYmplY3RCID0gaXNPYmplY3QoYik7XG4gIGlmIChpc09iamVjdEEgJiYgaXNPYmplY3RCKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYilcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBwb3NzaWJsZSBjaXJjdWxhciByZWZlcmVuY2VcbiAgICAgIHJldHVybiBhID09PSBiXG4gICAgfVxuICB9IGVsc2UgaWYgKCFpc09iamVjdEEgJiYgIWlzT2JqZWN0Qikge1xuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvb3NlSW5kZXhPZiAoYXJyLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChhcnJbaV0sIHZhbCkpIHsgcmV0dXJuIGkgfVxuICB9XG4gIHJldHVybiAtMVxufVxuXG4vKipcbiAqIEVuc3VyZSBhIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uY2UuXG4gKi9cbmZ1bmN0aW9uIG9uY2UgKGZuKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG59XG5cbnZhciBTU1JfQVRUUiA9ICdkYXRhLXNlcnZlci1yZW5kZXJlZCc7XG5cbnZhciBBU1NFVF9UWVBFUyA9IFtcbiAgJ2NvbXBvbmVudCcsXG4gICdkaXJlY3RpdmUnLFxuICAnZmlsdGVyJ1xuXTtcblxudmFyIExJRkVDWUNMRV9IT09LUyA9IFtcbiAgJ2JlZm9yZUNyZWF0ZScsXG4gICdjcmVhdGVkJyxcbiAgJ2JlZm9yZU1vdW50JyxcbiAgJ21vdW50ZWQnLFxuICAnYmVmb3JlVXBkYXRlJyxcbiAgJ3VwZGF0ZWQnLFxuICAnYmVmb3JlRGVzdHJveScsXG4gICdkZXN0cm95ZWQnLFxuICAnYWN0aXZhdGVkJyxcbiAgJ2RlYWN0aXZhdGVkJ1xuXTtcblxuLyogICovXG5cbnZhciBjb25maWcgPSAoe1xuICAvKipcbiAgICogT3B0aW9uIG1lcmdlIHN0cmF0ZWdpZXMgKHVzZWQgaW4gY29yZS91dGlsL29wdGlvbnMpXG4gICAqL1xuICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3MuXG4gICAqL1xuICBzaWxlbnQ6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBTaG93IHByb2R1Y3Rpb24gbW9kZSB0aXAgbWVzc2FnZSBvbiBib290P1xuICAgKi9cbiAgcHJvZHVjdGlvblRpcDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgZGV2dG9vbHNcbiAgICovXG4gIGRldnRvb2xzOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY29yZCBwZXJmXG4gICAqL1xuICBwZXJmb3JtYW5jZTogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEVycm9yIGhhbmRsZXIgZm9yIHdhdGNoZXIgZXJyb3JzXG4gICAqL1xuICBlcnJvckhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIElnbm9yZSBjZXJ0YWluIGN1c3RvbSBlbGVtZW50c1xuICAgKi9cbiAgaWdub3JlZEVsZW1lbnRzOiBbXSxcblxuICAvKipcbiAgICogQ3VzdG9tIHVzZXIga2V5IGFsaWFzZXMgZm9yIHYtb25cbiAgICovXG4gIGtleUNvZGVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSByZWdpc3RlcmVkIGFzIGFcbiAgICogY29tcG9uZW50LiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNSZXNlcnZlZFRhZzogbm8sXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSB1c2VkIGFzIGEgY29tcG9uZW50XG4gICAqIHByb3AuIFRoaXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xuICBpc1Jlc2VydmVkQXR0cjogbm8sXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgdGFnIGlzIGFuIHVua25vd24gZWxlbWVudC5cbiAgICogUGxhdGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgaXNVbmtub3duRWxlbWVudDogbm8sXG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbmFtZXNwYWNlIG9mIGFuIGVsZW1lbnRcbiAgICovXG4gIGdldFRhZ05hbWVzcGFjZTogbm9vcCxcblxuICAvKipcbiAgICogUGFyc2UgdGhlIHJlYWwgdGFnIG5hbWUgZm9yIHRoZSBzcGVjaWZpYyBwbGF0Zm9ybS5cbiAgICovXG4gIHBhcnNlUGxhdGZvcm1UYWdOYW1lOiBpZGVudGl0eSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXR0cmlidXRlIG11c3QgYmUgYm91bmQgdXNpbmcgcHJvcGVydHksIGUuZy4gdmFsdWVcbiAgICogUGxhdGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgbXVzdFVzZVByb3A6IG5vLFxuXG4gIC8qKlxuICAgKiBFeHBvc2VkIGZvciBsZWdhY3kgcmVhc29uc1xuICAgKi9cbiAgX2xpZmVjeWNsZUhvb2tzOiBMSUZFQ1lDTEVfSE9PS1Ncbn0pO1xuXG4vKiAgKi9cblxudmFyIGVtcHR5T2JqZWN0ID0gT2JqZWN0LmZyZWV6ZSh7fSk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJCBvciBfXG4gKi9cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQgKHN0cikge1xuICB2YXIgYyA9IChzdHIgKyAnJykuY2hhckNvZGVBdCgwKTtcbiAgcmV0dXJuIGMgPT09IDB4MjQgfHwgYyA9PT0gMHg1RlxufVxuXG4vKipcbiAqIERlZmluZSBhIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBkZWYgKG9iaiwga2V5LCB2YWwsIGVudW1lcmFibGUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgdmFsdWU6IHZhbCxcbiAgICBlbnVtZXJhYmxlOiAhIWVudW1lcmFibGUsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlIHNpbXBsZSBwYXRoLlxuICovXG52YXIgYmFpbFJFID0gL1teXFx3LiRdLztcbmZ1bmN0aW9uIHBhcnNlUGF0aCAocGF0aCkge1xuICBpZiAoYmFpbFJFLnRlc3QocGF0aCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBmdW5jdGlvbiAob2JqKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFvYmopIHsgcmV0dXJuIH1cbiAgICAgIG9iaiA9IG9ialtzZWdtZW50c1tpXV07XG4gICAgfVxuICAgIHJldHVybiBvYmpcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHdhcm4gPSBub29wO1xudmFyIHRpcCA9IG5vb3A7XG52YXIgZm9ybWF0Q29tcG9uZW50TmFtZSA9IChudWxsKTsgLy8gd29yayBhcm91bmQgZmxvdyBjaGVja1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaGFzQ29uc29sZSA9IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIGNsYXNzaWZ5UkUgPSAvKD86XnxbLV9dKShcXHcpL2c7XG4gIHZhciBjbGFzc2lmeSA9IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKGNsYXNzaWZ5UkUsIGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRvVXBwZXJDYXNlKCk7IH0pXG4gICAgLnJlcGxhY2UoL1stX10vZywgJycpOyB9O1xuXG4gIHdhcm4gPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbVnVlIHdhcm5dOiBcIiArIG1zZyArIChcbiAgICAgICAgdm0gPyBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlKHZtKSA6ICcnXG4gICAgICApKTtcbiAgICB9XG4gIH07XG5cbiAgdGlwID0gZnVuY3Rpb24gKG1zZywgdm0pIHtcbiAgICBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxlbnQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJbVnVlIHRpcF06IFwiICsgbXNnICsgKFxuICAgICAgICB2bSA/IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0pIDogJydcbiAgICAgICkpO1xuICAgIH1cbiAgfTtcblxuICBmb3JtYXRDb21wb25lbnROYW1lID0gZnVuY3Rpb24gKHZtLCBpbmNsdWRlRmlsZSkge1xuICAgIGlmICh2bS4kcm9vdCA9PT0gdm0pIHtcbiAgICAgIHJldHVybiAnPFJvb3Q+J1xuICAgIH1cbiAgICB2YXIgbmFtZSA9IHR5cGVvZiB2bSA9PT0gJ3N0cmluZydcbiAgICAgID8gdm1cbiAgICAgIDogdHlwZW9mIHZtID09PSAnZnVuY3Rpb24nICYmIHZtLm9wdGlvbnNcbiAgICAgICAgPyB2bS5vcHRpb25zLm5hbWVcbiAgICAgICAgOiB2bS5faXNWdWVcbiAgICAgICAgICA/IHZtLiRvcHRpb25zLm5hbWUgfHwgdm0uJG9wdGlvbnMuX2NvbXBvbmVudFRhZ1xuICAgICAgICAgIDogdm0ubmFtZTtcblxuICAgIHZhciBmaWxlID0gdm0uX2lzVnVlICYmIHZtLiRvcHRpb25zLl9fZmlsZTtcbiAgICBpZiAoIW5hbWUgJiYgZmlsZSkge1xuICAgICAgdmFyIG1hdGNoID0gZmlsZS5tYXRjaCgvKFteL1xcXFxdKylcXC52dWUkLyk7XG4gICAgICBuYW1lID0gbWF0Y2ggJiYgbWF0Y2hbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIChuYW1lID8gKFwiPFwiICsgKGNsYXNzaWZ5KG5hbWUpKSArIFwiPlwiKSA6IFwiPEFub255bW91cz5cIikgK1xuICAgICAgKGZpbGUgJiYgaW5jbHVkZUZpbGUgIT09IGZhbHNlID8gKFwiIGF0IFwiICsgZmlsZSkgOiAnJylcbiAgICApXG4gIH07XG5cbiAgdmFyIHJlcGVhdCA9IGZ1bmN0aW9uIChzdHIsIG4pIHtcbiAgICB2YXIgcmVzID0gJyc7XG4gICAgd2hpbGUgKG4pIHtcbiAgICAgIGlmIChuICUgMiA9PT0gMSkgeyByZXMgKz0gc3RyOyB9XG4gICAgICBpZiAobiA+IDEpIHsgc3RyICs9IHN0cjsgfVxuICAgICAgbiA+Pj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9O1xuXG4gIHZhciBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlID0gZnVuY3Rpb24gKHZtKSB7XG4gICAgaWYgKHZtLl9pc1Z1ZSAmJiB2bS4kcGFyZW50KSB7XG4gICAgICB2YXIgdHJlZSA9IFtdO1xuICAgICAgdmFyIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICB3aGlsZSAodm0pIHtcbiAgICAgICAgaWYgKHRyZWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBsYXN0ID0gdHJlZVt0cmVlLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmIChsYXN0LmNvbnN0cnVjdG9yID09PSB2bS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlKys7XG4gICAgICAgICAgICB2bSA9IHZtLiRwYXJlbnQ7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID4gMCkge1xuICAgICAgICAgICAgdHJlZVt0cmVlLmxlbmd0aCAtIDFdID0gW2xhc3QsIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZV07XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cmVlLnB1c2godm0pO1xuICAgICAgICB2bSA9IHZtLiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gJ1xcblxcbmZvdW5kIGluXFxuXFxuJyArIHRyZWVcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodm0sIGkpIHsgcmV0dXJuIChcIlwiICsgKGkgPT09IDAgPyAnLS0tPiAnIDogcmVwZWF0KCcgJywgNSArIGkgKiAyKSkgKyAoQXJyYXkuaXNBcnJheSh2bSlcbiAgICAgICAgICAgID8gKChmb3JtYXRDb21wb25lbnROYW1lKHZtWzBdKSkgKyBcIi4uLiAoXCIgKyAodm1bMV0pICsgXCIgcmVjdXJzaXZlIGNhbGxzKVwiKVxuICAgICAgICAgICAgOiBmb3JtYXRDb21wb25lbnROYW1lKHZtKSkpOyB9KVxuICAgICAgICAuam9pbignXFxuJylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcIlxcblxcbihmb3VuZCBpbiBcIiArIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkgKyBcIilcIilcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBoYW5kbGVFcnJvciAoZXJyLCB2bSwgaW5mbykge1xuICBpZiAoY29uZmlnLmVycm9ySGFuZGxlcikge1xuICAgIGNvbmZpZy5lcnJvckhhbmRsZXIuY2FsbChudWxsLCBlcnIsIHZtLCBpbmZvKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJFcnJvciBpbiBcIiArIGluZm8gKyBcIjogXFxcIlwiICsgKGVyci50b1N0cmluZygpKSArIFwiXFxcIlwiKSwgdm0pO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpbkJyb3dzZXIgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cbi8qIGdsb2JhbHMgTXV0YXRpb25PYnNlcnZlciAqL1xuXG4vLyBjYW4gd2UgdXNlIF9fcHJvdG9fXz9cbnZhciBoYXNQcm90byA9ICdfX3Byb3RvX18nIGluIHt9O1xuXG4vLyBCcm93c2VyIGVudmlyb25tZW50IHNuaWZmaW5nXG52YXIgaW5Ccm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgVUEgPSBpbkJyb3dzZXIgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbnZhciBpc0lFID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG52YXIgaXNJRTkgPSBVQSAmJiBVQS5pbmRleE9mKCdtc2llIDkuMCcpID4gMDtcbnZhciBpc0VkZ2UgPSBVQSAmJiBVQS5pbmRleE9mKCdlZGdlLycpID4gMDtcbnZhciBpc0FuZHJvaWQgPSBVQSAmJiBVQS5pbmRleE9mKCdhbmRyb2lkJykgPiAwO1xudmFyIGlzSU9TID0gVUEgJiYgL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KFVBKTtcbnZhciBpc0Nocm9tZSA9IFVBICYmIC9jaHJvbWVcXC9cXGQrLy50ZXN0KFVBKSAmJiAhaXNFZGdlO1xuXG52YXIgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG5pZiAoaW5Ccm93c2VyKSB7XG4gIHRyeSB7XG4gICAgdmFyIG9wdHMgPSB7fTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0cywgJ3Bhc3NpdmUnLCAoe1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gKSk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8yODVcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdC1wYXNzaXZlJywgbnVsbCwgb3B0cyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59XG5cbi8vIHRoaXMgbmVlZHMgdG8gYmUgbGF6eS1ldmFsZWQgYmVjYXVzZSB2dWUgbWF5IGJlIHJlcXVpcmVkIGJlZm9yZVxuLy8gdnVlLXNlcnZlci1yZW5kZXJlciBjYW4gc2V0IFZVRV9FTlZcbnZhciBfaXNTZXJ2ZXI7XG52YXIgaXNTZXJ2ZXJSZW5kZXJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChfaXNTZXJ2ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghaW5Ccm93c2VyICYmIHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBkZXRlY3QgcHJlc2VuY2Ugb2YgdnVlLXNlcnZlci1yZW5kZXJlciBhbmQgYXZvaWRcbiAgICAgIC8vIFdlYnBhY2sgc2hpbW1pbmcgdGhlIHByb2Nlc3NcbiAgICAgIF9pc1NlcnZlciA9IGdsb2JhbFsncHJvY2VzcyddLmVudi5WVUVfRU5WID09PSAnc2VydmVyJztcbiAgICB9IGVsc2Uge1xuICAgICAgX2lzU2VydmVyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBfaXNTZXJ2ZXJcbn07XG5cbi8vIGRldGVjdCBkZXZ0b29sc1xudmFyIGRldnRvb2xzID0gaW5Ccm93c2VyICYmIHdpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gaXNOYXRpdmUgKEN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChDdG9yLnRvU3RyaW5nKCkpXG59XG5cbnZhciBoYXNTeW1ib2wgPVxuICB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTeW1ib2wpICYmXG4gIHR5cGVvZiBSZWZsZWN0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShSZWZsZWN0Lm93bktleXMpO1xuXG4vKipcbiAqIERlZmVyIGEgdGFzayB0byBleGVjdXRlIGl0IGFzeW5jaHJvbm91c2x5LlxuICovXG52YXIgbmV4dFRpY2sgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgY2FsbGJhY2tzID0gW107XG4gIHZhciBwZW5kaW5nID0gZmFsc2U7XG4gIHZhciB0aW1lckZ1bmM7XG5cbiAgZnVuY3Rpb24gbmV4dFRpY2tIYW5kbGVyICgpIHtcbiAgICBwZW5kaW5nID0gZmFsc2U7XG4gICAgdmFyIGNvcGllcyA9IGNhbGxiYWNrcy5zbGljZSgwKTtcbiAgICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvcGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29waWVzW2ldKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdGhlIG5leHRUaWNrIGJlaGF2aW9yIGxldmVyYWdlcyB0aGUgbWljcm90YXNrIHF1ZXVlLCB3aGljaCBjYW4gYmUgYWNjZXNzZWRcbiAgLy8gdmlhIGVpdGhlciBuYXRpdmUgUHJvbWlzZS50aGVuIG9yIE11dGF0aW9uT2JzZXJ2ZXIuXG4gIC8vIE11dGF0aW9uT2JzZXJ2ZXIgaGFzIHdpZGVyIHN1cHBvcnQsIGhvd2V2ZXIgaXQgaXMgc2VyaW91c2x5IGJ1Z2dlZCBpblxuICAvLyBVSVdlYlZpZXcgaW4gaU9TID49IDkuMy4zIHdoZW4gdHJpZ2dlcmVkIGluIHRvdWNoIGV2ZW50IGhhbmRsZXJzLiBJdFxuICAvLyBjb21wbGV0ZWx5IHN0b3BzIHdvcmtpbmcgYWZ0ZXIgdHJpZ2dlcmluZyBhIGZldyB0aW1lcy4uLiBzbywgaWYgbmF0aXZlXG4gIC8vIFByb21pc2UgaXMgYXZhaWxhYmxlLCB3ZSB3aWxsIHVzZSBpdDpcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUHJvbWlzZSkpIHtcbiAgICB2YXIgcCA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIHZhciBsb2dFcnJvciA9IGZ1bmN0aW9uIChlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB9O1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHAudGhlbihuZXh0VGlja0hhbmRsZXIpLmNhdGNoKGxvZ0Vycm9yKTtcbiAgICAgIC8vIGluIHByb2JsZW1hdGljIFVJV2ViVmlld3MsIFByb21pc2UudGhlbiBkb2Vzbid0IGNvbXBsZXRlbHkgYnJlYWssIGJ1dFxuICAgICAgLy8gaXQgY2FuIGdldCBzdHVjayBpbiBhIHdlaXJkIHN0YXRlIHdoZXJlIGNhbGxiYWNrcyBhcmUgcHVzaGVkIGludG8gdGhlXG4gICAgICAvLyBtaWNyb3Rhc2sgcXVldWUgYnV0IHRoZSBxdWV1ZSBpc24ndCBiZWluZyBmbHVzaGVkLCB1bnRpbCB0aGUgYnJvd3NlclxuICAgICAgLy8gbmVlZHMgdG8gZG8gc29tZSBvdGhlciB3b3JrLCBlLmcuIGhhbmRsZSBhIHRpbWVyLiBUaGVyZWZvcmUgd2UgY2FuXG4gICAgICAvLyBcImZvcmNlXCIgdGhlIG1pY3JvdGFzayBxdWV1ZSB0byBiZSBmbHVzaGVkIGJ5IGFkZGluZyBhbiBlbXB0eSB0aW1lci5cbiAgICAgIGlmIChpc0lPUykgeyBzZXRUaW1lb3V0KG5vb3ApOyB9XG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgTXV0YXRpb25PYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxuICAgIGlzTmF0aXZlKE11dGF0aW9uT2JzZXJ2ZXIpIHx8XG4gICAgLy8gUGhhbnRvbUpTIGFuZCBpT1MgNy54XG4gICAgTXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpID09PSAnW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3JdJ1xuICApKSB7XG4gICAgLy8gdXNlIE11dGF0aW9uT2JzZXJ2ZXIgd2hlcmUgbmF0aXZlIFByb21pc2UgaXMgbm90IGF2YWlsYWJsZSxcbiAgICAvLyBlLmcuIFBoYW50b21KUyBJRTExLCBpT1M3LCBBbmRyb2lkIDQuNFxuICAgIHZhciBjb3VudGVyID0gMTtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihuZXh0VGlja0hhbmRsZXIpO1xuICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyhjb3VudGVyKSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0ZXh0Tm9kZSwge1xuICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZVxuICAgIH0pO1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50ZXIgPSAoY291bnRlciArIDEpICUgMjtcbiAgICAgIHRleHROb2RlLmRhdGEgPSBTdHJpbmcoY291bnRlcik7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBmYWxsYmFjayB0byBzZXRUaW1lb3V0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRUaW1lb3V0KG5leHRUaWNrSGFuZGxlciwgMCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBxdWV1ZU5leHRUaWNrIChjYiwgY3R4KSB7XG4gICAgdmFyIF9yZXNvbHZlO1xuICAgIGNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjYikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNiLmNhbGwoY3R4KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIGN0eCwgJ25leHRUaWNrJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoX3Jlc29sdmUpIHtcbiAgICAgICAgX3Jlc29sdmUoY3R4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgIHBlbmRpbmcgPSB0cnVlO1xuICAgICAgdGltZXJGdW5jKCk7XG4gICAgfVxuICAgIGlmICghY2IgJiYgdHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB9KVxuICAgIH1cbiAgfVxufSkoKTtcblxudmFyIF9TZXQ7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmICh0eXBlb2YgU2V0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTZXQpKSB7XG4gIC8vIHVzZSBuYXRpdmUgU2V0IHdoZW4gYXZhaWxhYmxlLlxuICBfU2V0ID0gU2V0O1xufSBlbHNlIHtcbiAgLy8gYSBub24tc3RhbmRhcmQgU2V0IHBvbHlmaWxsIHRoYXQgb25seSB3b3JrcyB3aXRoIHByaW1pdGl2ZSBrZXlzLlxuICBfU2V0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZXQgKCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH1cbiAgICBTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIGhhcyAoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRba2V5XSA9PT0gdHJ1ZVxuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGtleSkge1xuICAgICAgdGhpcy5zZXRba2V5XSA9IHRydWU7XG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIgKCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH07XG5cbiAgICByZXR1cm4gU2V0O1xuICB9KCkpO1xufVxuXG4vKiAgKi9cblxuXG52YXIgdWlkJDEgPSAwO1xuXG4vKipcbiAqIEEgZGVwIGlzIGFuIG9ic2VydmFibGUgdGhhdCBjYW4gaGF2ZSBtdWx0aXBsZVxuICogZGlyZWN0aXZlcyBzdWJzY3JpYmluZyB0byBpdC5cbiAqL1xudmFyIERlcCA9IGZ1bmN0aW9uIERlcCAoKSB7XG4gIHRoaXMuaWQgPSB1aWQkMSsrO1xuICB0aGlzLnN1YnMgPSBbXTtcbn07XG5cbkRlcC5wcm90b3R5cGUuYWRkU3ViID0gZnVuY3Rpb24gYWRkU3ViIChzdWIpIHtcbiAgdGhpcy5zdWJzLnB1c2goc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUucmVtb3ZlU3ViID0gZnVuY3Rpb24gcmVtb3ZlU3ViIChzdWIpIHtcbiAgcmVtb3ZlKHRoaXMuc3Vicywgc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUuZGVwZW5kID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcbiAgaWYgKERlcC50YXJnZXQpIHtcbiAgICBEZXAudGFyZ2V0LmFkZERlcCh0aGlzKTtcbiAgfVxufTtcblxuRGVwLnByb3RvdHlwZS5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkgKCkge1xuICAvLyBzdGFiaWxpemUgdGhlIHN1YnNjcmliZXIgbGlzdCBmaXJzdFxuICB2YXIgc3VicyA9IHRoaXMuc3Vicy5zbGljZSgpO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHN1YnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgc3Vic1tpXS51cGRhdGUoKTtcbiAgfVxufTtcblxuLy8gdGhlIGN1cnJlbnQgdGFyZ2V0IHdhdGNoZXIgYmVpbmcgZXZhbHVhdGVkLlxuLy8gdGhpcyBpcyBnbG9iYWxseSB1bmlxdWUgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvbmx5IG9uZVxuLy8gd2F0Y2hlciBiZWluZyBldmFsdWF0ZWQgYXQgYW55IHRpbWUuXG5EZXAudGFyZ2V0ID0gbnVsbDtcbnZhciB0YXJnZXRTdGFjayA9IFtdO1xuXG5mdW5jdGlvbiBwdXNoVGFyZ2V0IChfdGFyZ2V0KSB7XG4gIGlmIChEZXAudGFyZ2V0KSB7IHRhcmdldFN0YWNrLnB1c2goRGVwLnRhcmdldCk7IH1cbiAgRGVwLnRhcmdldCA9IF90YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHBvcFRhcmdldCAoKSB7XG4gIERlcC50YXJnZXQgPSB0YXJnZXRTdGFjay5wb3AoKTtcbn1cblxuLypcbiAqIG5vdCB0eXBlIGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBwbGF5IHdlbGwgd2l0aFxuICogZHluYW1pY2FsbHkgYWNjZXNzaW5nIG1ldGhvZHMgb24gQXJyYXkgcHJvdG90eXBlXG4gKi9cblxudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG52YXIgYXJyYXlNZXRob2RzID0gT2JqZWN0LmNyZWF0ZShhcnJheVByb3RvKTtbXG4gICdwdXNoJyxcbiAgJ3BvcCcsXG4gICdzaGlmdCcsXG4gICd1bnNoaWZ0JyxcbiAgJ3NwbGljZScsXG4gICdzb3J0JyxcbiAgJ3JldmVyc2UnXG5dXG4uZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG4gIC8vIGNhY2hlIG9yaWdpbmFsIG1ldGhvZFxuICB2YXIgb3JpZ2luYWwgPSBhcnJheVByb3RvW21ldGhvZF07XG4gIGRlZihhcnJheU1ldGhvZHMsIG1ldGhvZCwgZnVuY3Rpb24gbXV0YXRvciAoKSB7XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgLy8gYXZvaWQgbGVha2luZyBhcmd1bWVudHM6XG4gICAgLy8gaHR0cDovL2pzcGVyZi5jb20vY2xvc3VyZS13aXRoLWFyZ3VtZW50c1xuICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShpKTtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzJDFbaV07XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB2YXIgb2IgPSB0aGlzLl9fb2JfXztcbiAgICB2YXIgaW5zZXJ0ZWQ7XG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ3B1c2gnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3M7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd1bnNoaWZ0JzpcbiAgICAgICAgaW5zZXJ0ZWQgPSBhcmdzO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc3BsaWNlJzpcbiAgICAgICAgaW5zZXJ0ZWQgPSBhcmdzLnNsaWNlKDIpO1xuICAgICAgICBicmVha1xuICAgIH1cbiAgICBpZiAoaW5zZXJ0ZWQpIHsgb2Iub2JzZXJ2ZUFycmF5KGluc2VydGVkKTsgfVxuICAgIC8vIG5vdGlmeSBjaGFuZ2VcbiAgICBvYi5kZXAubm90aWZ5KCk7XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KTtcbn0pO1xuXG4vKiAgKi9cblxudmFyIGFycmF5S2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFycmF5TWV0aG9kcyk7XG5cbi8qKlxuICogQnkgZGVmYXVsdCwgd2hlbiBhIHJlYWN0aXZlIHByb3BlcnR5IGlzIHNldCwgdGhlIG5ldyB2YWx1ZSBpc1xuICogYWxzbyBjb252ZXJ0ZWQgdG8gYmVjb21lIHJlYWN0aXZlLiBIb3dldmVyIHdoZW4gcGFzc2luZyBkb3duIHByb3BzLFxuICogd2UgZG9uJ3Qgd2FudCB0byBmb3JjZSBjb252ZXJzaW9uIGJlY2F1c2UgdGhlIHZhbHVlIG1heSBiZSBhIG5lc3RlZCB2YWx1ZVxuICogdW5kZXIgYSBmcm96ZW4gZGF0YSBzdHJ1Y3R1cmUuIENvbnZlcnRpbmcgaXQgd291bGQgZGVmZWF0IHRoZSBvcHRpbWl6YXRpb24uXG4gKi9cbnZhciBvYnNlcnZlclN0YXRlID0ge1xuICBzaG91bGRDb252ZXJ0OiB0cnVlLFxuICBpc1NldHRpbmdQcm9wczogZmFsc2Vcbn07XG5cbi8qKlxuICogT2JzZXJ2ZXIgY2xhc3MgdGhhdCBhcmUgYXR0YWNoZWQgdG8gZWFjaCBvYnNlcnZlZFxuICogb2JqZWN0LiBPbmNlIGF0dGFjaGVkLCB0aGUgb2JzZXJ2ZXIgY29udmVydHMgdGFyZ2V0XG4gKiBvYmplY3QncyBwcm9wZXJ0eSBrZXlzIGludG8gZ2V0dGVyL3NldHRlcnMgdGhhdFxuICogY29sbGVjdCBkZXBlbmRlbmNpZXMgYW5kIGRpc3BhdGNoZXMgdXBkYXRlcy5cbiAqL1xudmFyIE9ic2VydmVyID0gZnVuY3Rpb24gT2JzZXJ2ZXIgKHZhbHVlKSB7XG4gIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgdGhpcy5kZXAgPSBuZXcgRGVwKCk7XG4gIHRoaXMudm1Db3VudCA9IDA7XG4gIGRlZih2YWx1ZSwgJ19fb2JfXycsIHRoaXMpO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YXIgYXVnbWVudCA9IGhhc1Byb3RvXG4gICAgICA/IHByb3RvQXVnbWVudFxuICAgICAgOiBjb3B5QXVnbWVudDtcbiAgICBhdWdtZW50KHZhbHVlLCBhcnJheU1ldGhvZHMsIGFycmF5S2V5cyk7XG4gICAgdGhpcy5vYnNlcnZlQXJyYXkodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMud2Fsayh2YWx1ZSk7XG4gIH1cbn07XG5cbi8qKlxuICogV2FsayB0aHJvdWdoIGVhY2ggcHJvcGVydHkgYW5kIGNvbnZlcnQgdGhlbSBpbnRvXG4gKiBnZXR0ZXIvc2V0dGVycy4gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW5cbiAqIHZhbHVlIHR5cGUgaXMgT2JqZWN0LlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIHdhbGsgKG9iaikge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKG9iaiwga2V5c1tpXSwgb2JqW2tleXNbaV1dKTtcbiAgfVxufTtcblxuLyoqXG4gKiBPYnNlcnZlIGEgbGlzdCBvZiBBcnJheSBpdGVtcy5cbiAqL1xuT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmVBcnJheSA9IGZ1bmN0aW9uIG9ic2VydmVBcnJheSAoaXRlbXMpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvYnNlcnZlKGl0ZW1zW2ldKTtcbiAgfVxufTtcblxuLy8gaGVscGVyc1xuXG4vKipcbiAqIEF1Z21lbnQgYW4gdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBpbnRlcmNlcHRpbmdcbiAqIHRoZSBwcm90b3R5cGUgY2hhaW4gdXNpbmcgX19wcm90b19fXG4gKi9cbmZ1bmN0aW9uIHByb3RvQXVnbWVudCAodGFyZ2V0LCBzcmMpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbiAgdGFyZ2V0Ll9fcHJvdG9fXyA9IHNyYztcbiAgLyogZXNsaW50LWVuYWJsZSBuby1wcm90byAqL1xufVxuXG4vKipcbiAqIEF1Z21lbnQgYW4gdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBkZWZpbmluZ1xuICogaGlkZGVuIHByb3BlcnRpZXMuXG4gKi9cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBjb3B5QXVnbWVudCAodGFyZ2V0LCBzcmMsIGtleXMpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGRlZih0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9XG59XG5cbi8qKlxuICogQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JzZXJ2ZXIgaW5zdGFuY2UgZm9yIGEgdmFsdWUsXG4gKiByZXR1cm5zIHRoZSBuZXcgb2JzZXJ2ZXIgaWYgc3VjY2Vzc2Z1bGx5IG9ic2VydmVkLFxuICogb3IgdGhlIGV4aXN0aW5nIG9ic2VydmVyIGlmIHRoZSB2YWx1ZSBhbHJlYWR5IGhhcyBvbmUuXG4gKi9cbmZ1bmN0aW9uIG9ic2VydmUgKHZhbHVlLCBhc1Jvb3REYXRhKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIG9iO1xuICBpZiAoaGFzT3duKHZhbHVlLCAnX19vYl9fJykgJiYgdmFsdWUuX19vYl9fIGluc3RhbmNlb2YgT2JzZXJ2ZXIpIHtcbiAgICBvYiA9IHZhbHVlLl9fb2JfXztcbiAgfSBlbHNlIGlmIChcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgJiZcbiAgICAhaXNTZXJ2ZXJSZW5kZXJpbmcoKSAmJlxuICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSB8fCBpc1BsYWluT2JqZWN0KHZhbHVlKSkgJiZcbiAgICBPYmplY3QuaXNFeHRlbnNpYmxlKHZhbHVlKSAmJlxuICAgICF2YWx1ZS5faXNWdWVcbiAgKSB7XG4gICAgb2IgPSBuZXcgT2JzZXJ2ZXIodmFsdWUpO1xuICB9XG4gIGlmIChhc1Jvb3REYXRhICYmIG9iKSB7XG4gICAgb2Iudm1Db3VudCsrO1xuICB9XG4gIHJldHVybiBvYlxufVxuXG4vKipcbiAqIERlZmluZSBhIHJlYWN0aXZlIHByb3BlcnR5IG9uIGFuIE9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZGVmaW5lUmVhY3RpdmUkJDEgKFxuICBvYmosXG4gIGtleSxcbiAgdmFsLFxuICBjdXN0b21TZXR0ZXJcbikge1xuICB2YXIgZGVwID0gbmV3IERlcCgpO1xuXG4gIHZhciBwcm9wZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpO1xuICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHkuY29uZmlndXJhYmxlID09PSBmYWxzZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gY2F0ZXIgZm9yIHByZS1kZWZpbmVkIGdldHRlci9zZXR0ZXJzXG4gIHZhciBnZXR0ZXIgPSBwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5nZXQ7XG4gIHZhciBzZXR0ZXIgPSBwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5zZXQ7XG5cbiAgdmFyIGNoaWxkT2IgPSBvYnNlcnZlKHZhbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gcmVhY3RpdmVHZXR0ZXIgKCkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0dGVyID8gZ2V0dGVyLmNhbGwob2JqKSA6IHZhbDtcbiAgICAgIGlmIChEZXAudGFyZ2V0KSB7XG4gICAgICAgIGRlcC5kZXBlbmQoKTtcbiAgICAgICAgaWYgKGNoaWxkT2IpIHtcbiAgICAgICAgICBjaGlsZE9iLmRlcC5kZXBlbmQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBkZXBlbmRBcnJheSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiByZWFjdGl2ZVNldHRlciAobmV3VmFsKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFsO1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovXG4gICAgICBpZiAobmV3VmFsID09PSB2YWx1ZSB8fCAobmV3VmFsICE9PSBuZXdWYWwgJiYgdmFsdWUgIT09IHZhbHVlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1jb21wYXJlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjdXN0b21TZXR0ZXIpIHtcbiAgICAgICAgY3VzdG9tU2V0dGVyKCk7XG4gICAgICB9XG4gICAgICBpZiAoc2V0dGVyKSB7XG4gICAgICAgIHNldHRlci5jYWxsKG9iaiwgbmV3VmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbCA9IG5ld1ZhbDtcbiAgICAgIH1cbiAgICAgIGNoaWxkT2IgPSBvYnNlcnZlKG5ld1ZhbCk7XG4gICAgICBkZXAubm90aWZ5KCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuIEFkZHMgdGhlIG5ldyBwcm9wZXJ0eSBhbmRcbiAqIHRyaWdnZXJzIGNoYW5nZSBub3RpZmljYXRpb24gaWYgdGhlIHByb3BlcnR5IGRvZXNuJ3RcbiAqIGFscmVhZHkgZXhpc3QuXG4gKi9cbmZ1bmN0aW9uIHNldCAodGFyZ2V0LCBrZXksIHZhbCkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmIHR5cGVvZiBrZXkgPT09ICdudW1iZXInKSB7XG4gICAgdGFyZ2V0Lmxlbmd0aCA9IE1hdGgubWF4KHRhcmdldC5sZW5ndGgsIGtleSk7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEsIHZhbCk7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGlmIChoYXNPd24odGFyZ2V0LCBrZXkpKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQgKS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9pZCBhZGRpbmcgcmVhY3RpdmUgcHJvcGVydGllcyB0byBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAkZGF0YSAnICtcbiAgICAgICdhdCBydW50aW1lIC0gZGVjbGFyZSBpdCB1cGZyb250IGluIHRoZSBkYXRhIG9wdGlvbi4nXG4gICAgKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYgKCFvYikge1xuICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBkZWZpbmVSZWFjdGl2ZSQkMShvYi52YWx1ZSwga2V5LCB2YWwpO1xuICBvYi5kZXAubm90aWZ5KCk7XG4gIHJldHVybiB2YWxcbn1cblxuLyoqXG4gKiBEZWxldGUgYSBwcm9wZXJ0eSBhbmQgdHJpZ2dlciBjaGFuZ2UgaWYgbmVjZXNzYXJ5LlxuICovXG5mdW5jdGlvbiBkZWwgKHRhcmdldCwga2V5KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgdHlwZW9mIGtleSA9PT0gJ251bWJlcicpIHtcbiAgICB0YXJnZXQuc3BsaWNlKGtleSwgMSk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIG9iID0gKHRhcmdldCApLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGRlbGV0aW5nIHByb3BlcnRpZXMgb24gYSBWdWUgaW5zdGFuY2Ugb3IgaXRzIHJvb3QgJGRhdGEgJyArXG4gICAgICAnLSBqdXN0IHNldCBpdCB0byBudWxsLidcbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICghaGFzT3duKHRhcmdldCwga2V5KSkge1xuICAgIHJldHVyblxuICB9XG4gIGRlbGV0ZSB0YXJnZXRba2V5XTtcbiAgaWYgKCFvYikge1xuICAgIHJldHVyblxuICB9XG4gIG9iLmRlcC5ub3RpZnkoKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0IGRlcGVuZGVuY2llcyBvbiBhcnJheSBlbGVtZW50cyB3aGVuIHRoZSBhcnJheSBpcyB0b3VjaGVkLCBzaW5jZVxuICogd2UgY2Fubm90IGludGVyY2VwdCBhcnJheSBlbGVtZW50IGFjY2VzcyBsaWtlIHByb3BlcnR5IGdldHRlcnMuXG4gKi9cbmZ1bmN0aW9uIGRlcGVuZEFycmF5ICh2YWx1ZSkge1xuICBmb3IgKHZhciBlID0gKHZvaWQgMCksIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZSA9IHZhbHVlW2ldO1xuICAgIGUgJiYgZS5fX29iX18gJiYgZS5fX29iX18uZGVwLmRlcGVuZCgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICBkZXBlbmRBcnJheShlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogT3B0aW9uIG92ZXJ3cml0aW5nIHN0cmF0ZWdpZXMgYXJlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZVxuICogaG93IHRvIG1lcmdlIGEgcGFyZW50IG9wdGlvbiB2YWx1ZSBhbmQgYSBjaGlsZCBvcHRpb25cbiAqIHZhbHVlIGludG8gdGhlIGZpbmFsIHZhbHVlLlxuICovXG52YXIgc3RyYXRzID0gY29uZmlnLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztcblxuLyoqXG4gKiBPcHRpb25zIHdpdGggcmVzdHJpY3Rpb25zXG4gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHN0cmF0cy5lbCA9IHN0cmF0cy5wcm9wc0RhdGEgPSBmdW5jdGlvbiAocGFyZW50LCBjaGlsZCwgdm0sIGtleSkge1xuICAgIGlmICghdm0pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwib3B0aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnN0YW5jZSBcIiArXG4gICAgICAgICdjcmVhdGlvbiB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0U3RyYXQocGFyZW50LCBjaGlsZClcbiAgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdGhhdCByZWN1cnNpdmVseSBtZXJnZXMgdHdvIGRhdGEgb2JqZWN0cyB0b2dldGhlci5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhICh0bywgZnJvbSkge1xuICBpZiAoIWZyb20pIHsgcmV0dXJuIHRvIH1cbiAgdmFyIGtleSwgdG9WYWwsIGZyb21WYWw7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJvbSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07XG4gICAgdG9WYWwgPSB0b1trZXldO1xuICAgIGZyb21WYWwgPSBmcm9tW2tleV07XG4gICAgaWYgKCFoYXNPd24odG8sIGtleSkpIHtcbiAgICAgIHNldCh0bywga2V5LCBmcm9tVmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodG9WYWwpICYmIGlzUGxhaW5PYmplY3QoZnJvbVZhbCkpIHtcbiAgICAgIG1lcmdlRGF0YSh0b1ZhbCwgZnJvbVZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIERhdGFcbiAqL1xuc3RyYXRzLmRhdGEgPSBmdW5jdGlvbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAgIC8vIGluIGEgVnVlLmV4dGVuZCBtZXJnZSwgYm90aCBzaG91bGQgYmUgZnVuY3Rpb25zXG4gICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAodHlwZW9mIGNoaWxkVmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdUaGUgXCJkYXRhXCIgb3B0aW9uIHNob3VsZCBiZSBhIGZ1bmN0aW9uICcgK1xuICAgICAgICAndGhhdCByZXR1cm5zIGEgcGVyLWluc3RhbmNlIHZhbHVlIGluIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2RlZmluaXRpb25zLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAoIXBhcmVudFZhbCkge1xuICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgfVxuICAgIC8vIHdoZW4gcGFyZW50VmFsICYgY2hpbGRWYWwgYXJlIGJvdGggcHJlc2VudCxcbiAgICAvLyB3ZSBuZWVkIHRvIHJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgICAvLyBtZXJnZWQgcmVzdWx0IG9mIGJvdGggZnVuY3Rpb25zLi4uIG5vIG5lZWQgdG9cbiAgICAvLyBjaGVjayBpZiBwYXJlbnRWYWwgaXMgYSBmdW5jdGlvbiBoZXJlIGJlY2F1c2VcbiAgICAvLyBpdCBoYXMgdG8gYmUgYSBmdW5jdGlvbiB0byBwYXNzIHByZXZpb3VzIG1lcmdlcy5cbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkRGF0YUZuICgpIHtcbiAgICAgIHJldHVybiBtZXJnZURhdGEoXG4gICAgICAgIGNoaWxkVmFsLmNhbGwodGhpcyksXG4gICAgICAgIHBhcmVudFZhbC5jYWxsKHRoaXMpXG4gICAgICApXG4gICAgfVxuICB9IGVsc2UgaWYgKHBhcmVudFZhbCB8fCBjaGlsZFZhbCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRJbnN0YW5jZURhdGFGbiAoKSB7XG4gICAgICAvLyBpbnN0YW5jZSBtZXJnZVxuICAgICAgdmFyIGluc3RhbmNlRGF0YSA9IHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGNoaWxkVmFsLmNhbGwodm0pXG4gICAgICAgIDogY2hpbGRWYWw7XG4gICAgICB2YXIgZGVmYXVsdERhdGEgPSB0eXBlb2YgcGFyZW50VmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gcGFyZW50VmFsLmNhbGwodm0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGluc3RhbmNlRGF0YSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEYXRhKGluc3RhbmNlRGF0YSwgZGVmYXVsdERhdGEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdERhdGFcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogSG9va3MgYW5kIHByb3BzIGFyZSBtZXJnZWQgYXMgYXJyYXlzLlxuICovXG5mdW5jdGlvbiBtZXJnZUhvb2sgKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsXG4pIHtcbiAgcmV0dXJuIGNoaWxkVmFsXG4gICAgPyBwYXJlbnRWYWxcbiAgICAgID8gcGFyZW50VmFsLmNvbmNhdChjaGlsZFZhbClcbiAgICAgIDogQXJyYXkuaXNBcnJheShjaGlsZFZhbClcbiAgICAgICAgPyBjaGlsZFZhbFxuICAgICAgICA6IFtjaGlsZFZhbF1cbiAgICA6IHBhcmVudFZhbFxufVxuXG5MSUZFQ1lDTEVfSE9PS1MuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICBzdHJhdHNbaG9va10gPSBtZXJnZUhvb2s7XG59KTtcblxuLyoqXG4gKiBBc3NldHNcbiAqXG4gKiBXaGVuIGEgdm0gaXMgcHJlc2VudCAoaW5zdGFuY2UgY3JlYXRpb24pLCB3ZSBuZWVkIHRvIGRvXG4gKiBhIHRocmVlLXdheSBtZXJnZSBiZXR3ZWVuIGNvbnN0cnVjdG9yIG9wdGlvbnMsIGluc3RhbmNlXG4gKiBvcHRpb25zIGFuZCBwYXJlbnQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VBc3NldHMgKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpO1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/IGV4dGVuZChyZXMsIGNoaWxkVmFsKVxuICAgIDogcmVzXG59XG5cbkFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgc3RyYXRzW3R5cGUgKyAncyddID0gbWVyZ2VBc3NldHM7XG59KTtcblxuLyoqXG4gKiBXYXRjaGVycy5cbiAqXG4gKiBXYXRjaGVycyBoYXNoZXMgc2hvdWxkIG5vdCBvdmVyd3JpdGUgb25lXG4gKiBhbm90aGVyLCBzbyB3ZSBtZXJnZSB0aGVtIGFzIGFycmF5cy5cbiAqL1xuc3RyYXRzLndhdGNoID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2hpbGRWYWwpIHsgcmV0dXJuIE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IHt9O1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBmb3IgKHZhciBrZXkgaW4gY2hpbGRWYWwpIHtcbiAgICB2YXIgcGFyZW50ID0gcmV0W2tleV07XG4gICAgdmFyIGNoaWxkID0gY2hpbGRWYWxba2V5XTtcbiAgICBpZiAocGFyZW50ICYmICFBcnJheS5pc0FycmF5KHBhcmVudCkpIHtcbiAgICAgIHBhcmVudCA9IFtwYXJlbnRdO1xuICAgIH1cbiAgICByZXRba2V5XSA9IHBhcmVudFxuICAgICAgPyBwYXJlbnQuY29uY2F0KGNoaWxkKVxuICAgICAgOiBbY2hpbGRdO1xuICB9XG4gIHJldHVybiByZXRcbn07XG5cbi8qKlxuICogT3RoZXIgb2JqZWN0IGhhc2hlcy5cbiAqL1xuc3RyYXRzLnByb3BzID1cbnN0cmF0cy5tZXRob2RzID1cbnN0cmF0cy5jb21wdXRlZCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gIGlmICghY2hpbGRWYWwpIHsgcmV0dXJuIE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGV4dGVuZChyZXQsIGNoaWxkVmFsKTtcbiAgcmV0dXJuIHJldFxufTtcblxuLyoqXG4gKiBEZWZhdWx0IHN0cmF0ZWd5LlxuICovXG52YXIgZGVmYXVsdFN0cmF0ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgcmV0dXJuIGNoaWxkVmFsID09PSB1bmRlZmluZWRcbiAgICA/IHBhcmVudFZhbFxuICAgIDogY2hpbGRWYWxcbn07XG5cbi8qKlxuICogVmFsaWRhdGUgY29tcG9uZW50IG5hbWVzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ29tcG9uZW50cyAob3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucy5jb21wb25lbnRzKSB7XG4gICAgdmFyIGxvd2VyID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGlzQnVpbHRJblRhZyhsb3dlcikgfHwgY29uZmlnLmlzUmVzZXJ2ZWRUYWcobG93ZXIpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNlcnZlZCBIVE1MIGVsZW1lbnRzIGFzIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2lkOiAnICsga2V5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEVuc3VyZSBhbGwgcHJvcHMgb3B0aW9uIHN5bnRheCBhcmUgbm9ybWFsaXplZCBpbnRvIHRoZVxuICogT2JqZWN0LWJhc2VkIGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMgKG9wdGlvbnMpIHtcbiAgdmFyIHByb3BzID0gb3B0aW9ucy5wcm9wcztcbiAgaWYgKCFwcm9wcykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBpLCB2YWwsIG5hbWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgIGkgPSBwcm9wcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdmFsID0gcHJvcHNbaV07XG4gICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmFtZSA9IGNhbWVsaXplKHZhbCk7XG4gICAgICAgIHJlc1tuYW1lXSA9IHsgdHlwZTogbnVsbCB9O1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oJ3Byb3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5nIGFycmF5IHN5bnRheC4nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChwcm9wcykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICAgIHZhbCA9IHByb3BzW2tleV07XG4gICAgICBuYW1lID0gY2FtZWxpemUoa2V5KTtcbiAgICAgIHJlc1tuYW1lXSA9IGlzUGxhaW5PYmplY3QodmFsKVxuICAgICAgICA/IHZhbFxuICAgICAgICA6IHsgdHlwZTogdmFsIH07XG4gICAgfVxuICB9XG4gIG9wdGlvbnMucHJvcHMgPSByZXM7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIHJhdyBmdW5jdGlvbiBkaXJlY3RpdmVzIGludG8gb2JqZWN0IGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyAob3B0aW9ucykge1xuICB2YXIgZGlycyA9IG9wdGlvbnMuZGlyZWN0aXZlcztcbiAgaWYgKGRpcnMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gZGlycykge1xuICAgICAgdmFyIGRlZiA9IGRpcnNba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgZGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGRpcnNba2V5XSA9IHsgYmluZDogZGVmLCB1cGRhdGU6IGRlZiB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIHR3byBvcHRpb24gb2JqZWN0cyBpbnRvIGEgbmV3IG9uZS5cbiAqIENvcmUgdXRpbGl0eSB1c2VkIGluIGJvdGggaW5zdGFudGlhdGlvbiBhbmQgaW5oZXJpdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlT3B0aW9ucyAoXG4gIHBhcmVudCxcbiAgY2hpbGQsXG4gIHZtXG4pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaGVja0NvbXBvbmVudHMoY2hpbGQpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNoaWxkID0gY2hpbGQub3B0aW9ucztcbiAgfVxuXG4gIG5vcm1hbGl6ZVByb3BzKGNoaWxkKTtcbiAgbm9ybWFsaXplRGlyZWN0aXZlcyhjaGlsZCk7XG4gIHZhciBleHRlbmRzRnJvbSA9IGNoaWxkLmV4dGVuZHM7XG4gIGlmIChleHRlbmRzRnJvbSkge1xuICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGV4dGVuZHNGcm9tLCB2bSk7XG4gIH1cbiAgaWYgKGNoaWxkLm1peGlucykge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGQubWl4aW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAgfVxuICB9XG4gIHZhciBvcHRpb25zID0ge307XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIHBhcmVudCkge1xuICAgIG1lcmdlRmllbGQoa2V5KTtcbiAgfVxuICBmb3IgKGtleSBpbiBjaGlsZCkge1xuICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5KSkge1xuICAgICAgbWVyZ2VGaWVsZChrZXkpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtZXJnZUZpZWxkIChrZXkpIHtcbiAgICB2YXIgc3RyYXQgPSBzdHJhdHNba2V5XSB8fCBkZWZhdWx0U3RyYXQ7XG4gICAgb3B0aW9uc1trZXldID0gc3RyYXQocGFyZW50W2tleV0sIGNoaWxkW2tleV0sIHZtLCBrZXkpO1xuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbi8qKlxuICogUmVzb2x2ZSBhbiBhc3NldC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBiZWNhdXNlIGNoaWxkIGluc3RhbmNlcyBuZWVkIGFjY2Vzc1xuICogdG8gYXNzZXRzIGRlZmluZWQgaW4gaXRzIGFuY2VzdG9yIGNoYWluLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQgKFxuICBvcHRpb25zLFxuICB0eXBlLFxuICBpZCxcbiAgd2Fybk1pc3Npbmdcbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgYXNzZXRzID0gb3B0aW9uc1t0eXBlXTtcbiAgLy8gY2hlY2sgbG9jYWwgcmVnaXN0cmF0aW9uIHZhcmlhdGlvbnMgZmlyc3RcbiAgaWYgKGhhc093bihhc3NldHMsIGlkKSkgeyByZXR1cm4gYXNzZXRzW2lkXSB9XG4gIHZhciBjYW1lbGl6ZWRJZCA9IGNhbWVsaXplKGlkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIGNhbWVsaXplZElkKSkgeyByZXR1cm4gYXNzZXRzW2NhbWVsaXplZElkXSB9XG4gIHZhciBQYXNjYWxDYXNlSWQgPSBjYXBpdGFsaXplKGNhbWVsaXplZElkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIFBhc2NhbENhc2VJZCkpIHsgcmV0dXJuIGFzc2V0c1tQYXNjYWxDYXNlSWRdIH1cbiAgLy8gZmFsbGJhY2sgdG8gcHJvdG90eXBlIGNoYWluXG4gIHZhciByZXMgPSBhc3NldHNbaWRdIHx8IGFzc2V0c1tjYW1lbGl6ZWRJZF0gfHwgYXNzZXRzW1Bhc2NhbENhc2VJZF07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm5NaXNzaW5nICYmICFyZXMpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ZhaWxlZCB0byByZXNvbHZlICcgKyB0eXBlLnNsaWNlKDAsIC0xKSArICc6ICcgKyBpZCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcCAoXG4gIGtleSxcbiAgcHJvcE9wdGlvbnMsXG4gIHByb3BzRGF0YSxcbiAgdm1cbikge1xuICB2YXIgcHJvcCA9IHByb3BPcHRpb25zW2tleV07XG4gIHZhciBhYnNlbnQgPSAhaGFzT3duKHByb3BzRGF0YSwga2V5KTtcbiAgdmFyIHZhbHVlID0gcHJvcHNEYXRhW2tleV07XG4gIC8vIGhhbmRsZSBib29sZWFuIHByb3BzXG4gIGlmIChpc1R5cGUoQm9vbGVhbiwgcHJvcC50eXBlKSkge1xuICAgIGlmIChhYnNlbnQgJiYgIWhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgICB2YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIWlzVHlwZShTdHJpbmcsIHByb3AudHlwZSkgJiYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gaHlwaGVuYXRlKGtleSkpKSB7XG4gICAgICB2YWx1ZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIC8vIGNoZWNrIGRlZmF1bHQgdmFsdWVcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICB2YWx1ZSA9IGdldFByb3BEZWZhdWx0VmFsdWUodm0sIHByb3AsIGtleSk7XG4gICAgLy8gc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBmcmVzaCBjb3B5LFxuICAgIC8vIG1ha2Ugc3VyZSB0byBvYnNlcnZlIGl0LlxuICAgIHZhciBwcmV2U2hvdWxkQ29udmVydCA9IG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydDtcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xuICAgIG9ic2VydmUodmFsdWUpO1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHByZXZTaG91bGRDb252ZXJ0O1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0UHJvcChwcm9wLCBrZXksIHZhbHVlLCB2bSwgYWJzZW50KTtcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBwcm9wLlxuICovXG5mdW5jdGlvbiBnZXRQcm9wRGVmYXVsdFZhbHVlICh2bSwgcHJvcCwga2V5KSB7XG4gIC8vIG5vIGRlZmF1bHQsIHJldHVybiB1bmRlZmluZWRcbiAgaWYgKCFoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICB2YXIgZGVmID0gcHJvcC5kZWZhdWx0O1xuICAvLyB3YXJuIGFnYWluc3Qgbm9uLWZhY3RvcnkgZGVmYXVsdHMgZm9yIE9iamVjdCAmIEFycmF5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzT2JqZWN0KGRlZikpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ludmFsaWQgZGVmYXVsdCB2YWx1ZSBmb3IgcHJvcCBcIicgKyBrZXkgKyAnXCI6ICcgK1xuICAgICAgJ1Byb3BzIHdpdGggdHlwZSBPYmplY3QvQXJyYXkgbXVzdCB1c2UgYSBmYWN0b3J5IGZ1bmN0aW9uICcgK1xuICAgICAgJ3RvIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZS4nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHRoZSByYXcgcHJvcCB2YWx1ZSB3YXMgYWxzbyB1bmRlZmluZWQgZnJvbSBwcmV2aW91cyByZW5kZXIsXG4gIC8vIHJldHVybiBwcmV2aW91cyBkZWZhdWx0IHZhbHVlIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHdhdGNoZXIgdHJpZ2dlclxuICBpZiAodm0gJiYgdm0uJG9wdGlvbnMucHJvcHNEYXRhICYmXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhW2tleV0gPT09IHVuZGVmaW5lZCAmJlxuICAgIHZtLl9wcm9wc1trZXldICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHZtLl9wcm9wc1trZXldXG4gIH1cbiAgLy8gY2FsbCBmYWN0b3J5IGZ1bmN0aW9uIGZvciBub24tRnVuY3Rpb24gdHlwZXNcbiAgLy8gYSB2YWx1ZSBpcyBGdW5jdGlvbiBpZiBpdHMgcHJvdG90eXBlIGlzIGZ1bmN0aW9uIGV2ZW4gYWNyb3NzIGRpZmZlcmVudCBleGVjdXRpb24gY29udGV4dFxuICByZXR1cm4gdHlwZW9mIGRlZiA9PT0gJ2Z1bmN0aW9uJyAmJiBnZXRUeXBlKHByb3AudHlwZSkgIT09ICdGdW5jdGlvbidcbiAgICA/IGRlZi5jYWxsKHZtKVxuICAgIDogZGVmXG59XG5cbi8qKlxuICogQXNzZXJ0IHdoZXRoZXIgYSBwcm9wIGlzIHZhbGlkLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQcm9wIChcbiAgcHJvcCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIHZtLFxuICBhYnNlbnRcbikge1xuICBpZiAocHJvcC5yZXF1aXJlZCAmJiBhYnNlbnQpIHtcbiAgICB3YXJuKFxuICAgICAgJ01pc3NpbmcgcmVxdWlyZWQgcHJvcDogXCInICsgbmFtZSArICdcIicsXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgJiYgIXByb3AucmVxdWlyZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdHlwZSA9IHByb3AudHlwZTtcbiAgdmFyIHZhbGlkID0gIXR5cGUgfHwgdHlwZSA9PT0gdHJ1ZTtcbiAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgaWYgKHR5cGUpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgIHR5cGUgPSBbdHlwZV07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZS5sZW5ndGggJiYgIXZhbGlkOyBpKyspIHtcbiAgICAgIHZhciBhc3NlcnRlZFR5cGUgPSBhc3NlcnRUeXBlKHZhbHVlLCB0eXBlW2ldKTtcbiAgICAgIGV4cGVjdGVkVHlwZXMucHVzaChhc3NlcnRlZFR5cGUuZXhwZWN0ZWRUeXBlIHx8ICcnKTtcbiAgICAgIHZhbGlkID0gYXNzZXJ0ZWRUeXBlLnZhbGlkO1xuICAgIH1cbiAgfVxuICBpZiAoIXZhbGlkKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIHByb3A6IHR5cGUgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyArXG4gICAgICAnIEV4cGVjdGVkICcgKyBleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcsICcpICtcbiAgICAgICcsIGdvdCAnICsgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSkgKyAnLicsXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHZhbGlkYXRvciA9IHByb3AudmFsaWRhdG9yO1xuICBpZiAodmFsaWRhdG9yKSB7XG4gICAgaWYgKCF2YWxpZGF0b3IodmFsdWUpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnSW52YWxpZCBwcm9wOiBjdXN0b20gdmFsaWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc2ltcGxlQ2hlY2tSRSA9IC9eKFN0cmluZ3xOdW1iZXJ8Qm9vbGVhbnxGdW5jdGlvbnxTeW1ib2wpJC87XG5cbmZ1bmN0aW9uIGFzc2VydFR5cGUgKHZhbHVlLCB0eXBlKSB7XG4gIHZhciB2YWxpZDtcbiAgdmFyIGV4cGVjdGVkVHlwZSA9IGdldFR5cGUodHlwZSk7XG4gIGlmIChzaW1wbGVDaGVja1JFLnRlc3QoZXhwZWN0ZWRUeXBlKSkge1xuICAgIHZhbGlkID0gdHlwZW9mIHZhbHVlID09PSBleHBlY3RlZFR5cGUudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdPYmplY3QnKSB7XG4gICAgdmFsaWQgPSBpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdBcnJheScpIHtcbiAgICB2YWxpZCA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xuICB9XG4gIHJldHVybiB7XG4gICAgdmFsaWQ6IHZhbGlkLFxuICAgIGV4cGVjdGVkVHlwZTogZXhwZWN0ZWRUeXBlXG4gIH1cbn1cblxuLyoqXG4gKiBVc2UgZnVuY3Rpb24gc3RyaW5nIG5hbWUgdG8gY2hlY2sgYnVpbHQtaW4gdHlwZXMsXG4gKiBiZWNhdXNlIGEgc2ltcGxlIGVxdWFsaXR5IGNoZWNrIHdpbGwgZmFpbCB3aGVuIHJ1bm5pbmdcbiAqIGFjcm9zcyBkaWZmZXJlbnQgdm1zIC8gaWZyYW1lcy5cbiAqL1xuZnVuY3Rpb24gZ2V0VHlwZSAoZm4pIHtcbiAgdmFyIG1hdGNoID0gZm4gJiYgZm4udG9TdHJpbmcoKS5tYXRjaCgvXlxccypmdW5jdGlvbiAoXFx3KykvKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiAnJ1xufVxuXG5mdW5jdGlvbiBpc1R5cGUgKHR5cGUsIGZuKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShmbikpIHtcbiAgICByZXR1cm4gZ2V0VHlwZShmbikgPT09IGdldFR5cGUodHlwZSlcbiAgfVxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZm4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoZ2V0VHlwZShmbltpXSkgPT09IGdldFR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKiAgKi9cblxuLyogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoIFByb3h5ICovXG5cbnZhciBpbml0UHJveHk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBhbGxvd2VkR2xvYmFscyA9IG1ha2VNYXAoXG4gICAgJ0luZmluaXR5LHVuZGVmaW5lZCxOYU4saXNGaW5pdGUsaXNOYU4sJyArXG4gICAgJ3BhcnNlRmxvYXQscGFyc2VJbnQsZGVjb2RlVVJJLGRlY29kZVVSSUNvbXBvbmVudCxlbmNvZGVVUkksZW5jb2RlVVJJQ29tcG9uZW50LCcgK1xuICAgICdNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsJyArXG4gICAgJ3JlcXVpcmUnIC8vIGZvciBXZWJwYWNrL0Jyb3dzZXJpZnlcbiAgKTtcblxuICB2YXIgd2Fybk5vblByZXNlbnQgPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICB3YXJuKFxuICAgICAgXCJQcm9wZXJ0eSBvciBtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIG5vdCBkZWZpbmVkIG9uIHRoZSBpbnN0YW5jZSBidXQgXCIgK1xuICAgICAgXCJyZWZlcmVuY2VkIGR1cmluZyByZW5kZXIuIE1ha2Ugc3VyZSB0byBkZWNsYXJlIHJlYWN0aXZlIGRhdGEgXCIgK1xuICAgICAgXCJwcm9wZXJ0aWVzIGluIHRoZSBkYXRhIG9wdGlvbi5cIixcbiAgICAgIHRhcmdldFxuICAgICk7XG4gIH07XG5cbiAgdmFyIGhhc1Byb3h5ID1cbiAgICB0eXBlb2YgUHJveHkgIT09ICd1bmRlZmluZWQnICYmXG4gICAgUHJveHkudG9TdHJpbmcoKS5tYXRjaCgvbmF0aXZlIGNvZGUvKTtcblxuICBpZiAoaGFzUHJveHkpIHtcbiAgICB2YXIgaXNCdWlsdEluTW9kaWZpZXIgPSBtYWtlTWFwKCdzdG9wLHByZXZlbnQsc2VsZixjdHJsLHNoaWZ0LGFsdCxtZXRhJyk7XG4gICAgY29uZmlnLmtleUNvZGVzID0gbmV3IFByb3h5KGNvbmZpZy5rZXlDb2Rlcywge1xuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNCdWlsdEluTW9kaWZpZXIoa2V5KSkge1xuICAgICAgICAgIHdhcm4oKFwiQXZvaWQgb3ZlcndyaXRpbmcgYnVpbHQtaW4gbW9kaWZpZXIgaW4gY29uZmlnLmtleUNvZGVzOiAuXCIgKyBrZXkpKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBoYXNIYW5kbGVyID0ge1xuICAgIGhhczogZnVuY3Rpb24gaGFzICh0YXJnZXQsIGtleSkge1xuICAgICAgdmFyIGhhcyA9IGtleSBpbiB0YXJnZXQ7XG4gICAgICB2YXIgaXNBbGxvd2VkID0gYWxsb3dlZEdsb2JhbHMoa2V5KSB8fCBrZXkuY2hhckF0KDApID09PSAnXyc7XG4gICAgICBpZiAoIWhhcyAmJiAhaXNBbGxvd2VkKSB7XG4gICAgICAgIHdhcm5Ob25QcmVzZW50KHRhcmdldCwga2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXMgfHwgIWlzQWxsb3dlZFxuICAgIH1cbiAgfTtcblxuICB2YXIgZ2V0SGFuZGxlciA9IHtcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiAhKGtleSBpbiB0YXJnZXQpKSB7XG4gICAgICAgIHdhcm5Ob25QcmVzZW50KHRhcmdldCwga2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRba2V5XVxuICAgIH1cbiAgfTtcblxuICBpbml0UHJveHkgPSBmdW5jdGlvbiBpbml0UHJveHkgKHZtKSB7XG4gICAgaWYgKGhhc1Byb3h5KSB7XG4gICAgICAvLyBkZXRlcm1pbmUgd2hpY2ggcHJveHkgaGFuZGxlciB0byB1c2VcbiAgICAgIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gICAgICB2YXIgaGFuZGxlcnMgPSBvcHRpb25zLnJlbmRlciAmJiBvcHRpb25zLnJlbmRlci5fd2l0aFN0cmlwcGVkXG4gICAgICAgID8gZ2V0SGFuZGxlclxuICAgICAgICA6IGhhc0hhbmRsZXI7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSBuZXcgUHJveHkodm0sIGhhbmRsZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICB9O1xufVxuXG52YXIgbWFyaztcbnZhciBtZWFzdXJlO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgcGVyZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucGVyZm9ybWFuY2U7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgcGVyZiAmJlxuICAgIHBlcmYubWFyayAmJlxuICAgIHBlcmYubWVhc3VyZSAmJlxuICAgIHBlcmYuY2xlYXJNYXJrcyAmJlxuICAgIHBlcmYuY2xlYXJNZWFzdXJlc1xuICApIHtcbiAgICBtYXJrID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gcGVyZi5tYXJrKHRhZyk7IH07XG4gICAgbWVhc3VyZSA9IGZ1bmN0aW9uIChuYW1lLCBzdGFydFRhZywgZW5kVGFnKSB7XG4gICAgICBwZXJmLm1lYXN1cmUobmFtZSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWFya3Moc3RhcnRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKGVuZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWVhc3VyZXMobmFtZSk7XG4gICAgfTtcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIFZOb2RlID0gZnVuY3Rpb24gVk5vZGUgKFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICB0ZXh0LFxuICBlbG0sXG4gIGNvbnRleHQsXG4gIGNvbXBvbmVudE9wdGlvbnNcbikge1xuICB0aGlzLnRhZyA9IHRhZztcbiAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlzLnRleHQgPSB0ZXh0O1xuICB0aGlzLmVsbSA9IGVsbTtcbiAgdGhpcy5ucyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5mdW5jdGlvbmFsQ29udGV4dCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5rZXkgPSBkYXRhICYmIGRhdGEua2V5O1xuICB0aGlzLmNvbXBvbmVudE9wdGlvbnMgPSBjb21wb25lbnRPcHRpb25zO1xuICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gdW5kZWZpbmVkO1xuICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5yYXcgPSBmYWxzZTtcbiAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xuICB0aGlzLmlzUm9vdEluc2VydCA9IHRydWU7XG4gIHRoaXMuaXNDb21tZW50ID0gZmFsc2U7XG4gIHRoaXMuaXNDbG9uZWQgPSBmYWxzZTtcbiAgdGhpcy5pc09uY2UgPSBmYWxzZTtcbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IGNoaWxkOiB7fSB9O1xuXG4vLyBERVBSRUNBVEVEOiBhbGlhcyBmb3IgY29tcG9uZW50SW5zdGFuY2UgZm9yIGJhY2t3YXJkcyBjb21wYXQuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucHJvdG90eXBlQWNjZXNzb3JzLmNoaWxkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2Vcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBWTm9kZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG52YXIgY3JlYXRlRW1wdHlWTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5vZGUgPSBuZXcgVk5vZGUoKTtcbiAgbm9kZS50ZXh0ID0gJyc7XG4gIG5vZGUuaXNDb21tZW50ID0gdHJ1ZTtcbiAgcmV0dXJuIG5vZGVcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSAodmFsKSB7XG4gIHJldHVybiBuZXcgVk5vZGUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgU3RyaW5nKHZhbCkpXG59XG5cbi8vIG9wdGltaXplZCBzaGFsbG93IGNsb25lXG4vLyB1c2VkIGZvciBzdGF0aWMgbm9kZXMgYW5kIHNsb3Qgbm9kZXMgYmVjYXVzZSB0aGV5IG1heSBiZSByZXVzZWQgYWNyb3NzXG4vLyBtdWx0aXBsZSByZW5kZXJzLCBjbG9uaW5nIHRoZW0gYXZvaWRzIGVycm9ycyB3aGVuIERPTSBtYW5pcHVsYXRpb25zIHJlbHlcbi8vIG9uIHRoZWlyIGVsbSByZWZlcmVuY2UuXG5mdW5jdGlvbiBjbG9uZVZOb2RlICh2bm9kZSkge1xuICB2YXIgY2xvbmVkID0gbmV3IFZOb2RlKFxuICAgIHZub2RlLnRhZyxcbiAgICB2bm9kZS5kYXRhLFxuICAgIHZub2RlLmNoaWxkcmVuLFxuICAgIHZub2RlLnRleHQsXG4gICAgdm5vZGUuZWxtLFxuICAgIHZub2RlLmNvbnRleHQsXG4gICAgdm5vZGUuY29tcG9uZW50T3B0aW9uc1xuICApO1xuICBjbG9uZWQubnMgPSB2bm9kZS5ucztcbiAgY2xvbmVkLmlzU3RhdGljID0gdm5vZGUuaXNTdGF0aWM7XG4gIGNsb25lZC5rZXkgPSB2bm9kZS5rZXk7XG4gIGNsb25lZC5pc0NvbW1lbnQgPSB2bm9kZS5pc0NvbW1lbnQ7XG4gIGNsb25lZC5pc0Nsb25lZCA9IHRydWU7XG4gIHJldHVybiBjbG9uZWRcbn1cblxuZnVuY3Rpb24gY2xvbmVWTm9kZXMgKHZub2Rlcykge1xuICB2YXIgbGVuID0gdm5vZGVzLmxlbmd0aDtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcmVzW2ldID0gY2xvbmVWTm9kZSh2bm9kZXNbaV0pO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBub3JtYWxpemVFdmVudCA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgcGFzc2l2ZSA9IG5hbWUuY2hhckF0KDApID09PSAnJic7XG4gIG5hbWUgPSBwYXNzaXZlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBvbmNlJCQxID0gbmFtZS5jaGFyQXQoMCkgPT09ICd+JzsgLy8gUHJlZml4ZWQgbGFzdCwgY2hlY2tlZCBmaXJzdFxuICBuYW1lID0gb25jZSQkMSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIgY2FwdHVyZSA9IG5hbWUuY2hhckF0KDApID09PSAnISc7XG4gIG5hbWUgPSBjYXB0dXJlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBvbmNlOiBvbmNlJCQxLFxuICAgIGNhcHR1cmU6IGNhcHR1cmUsXG4gICAgcGFzc2l2ZTogcGFzc2l2ZVxuICB9XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlRm5JbnZva2VyIChmbnMpIHtcbiAgZnVuY3Rpb24gaW52b2tlciAoKSB7XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgdmFyIGZucyA9IGludm9rZXIuZm5zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZucykpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZuc1tpXS5hcHBseShudWxsLCBhcmd1bWVudHMkMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJldHVybiBoYW5kbGVyIHJldHVybiB2YWx1ZSBmb3Igc2luZ2xlIGhhbmRsZXJzXG4gICAgICByZXR1cm4gZm5zLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cbiAgaW52b2tlci5mbnMgPSBmbnM7XG4gIHJldHVybiBpbnZva2VyXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUxpc3RlbmVycyAoXG4gIG9uLFxuICBvbGRPbixcbiAgYWRkLFxuICByZW1vdmUkJDEsXG4gIHZtXG4pIHtcbiAgdmFyIG5hbWUsIGN1ciwgb2xkLCBldmVudDtcbiAgZm9yIChuYW1lIGluIG9uKSB7XG4gICAgY3VyID0gb25bbmFtZV07XG4gICAgb2xkID0gb2xkT25bbmFtZV07XG4gICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICBpZiAoaXNVbmRlZihjdXIpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiSW52YWxpZCBoYW5kbGVyIGZvciBldmVudCBcXFwiXCIgKyAoZXZlbnQubmFtZSkgKyBcIlxcXCI6IGdvdCBcIiArIFN0cmluZyhjdXIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5kZWYob2xkKSkge1xuICAgICAgaWYgKGlzVW5kZWYoY3VyLmZucykpIHtcbiAgICAgICAgY3VyID0gb25bbmFtZV0gPSBjcmVhdGVGbkludm9rZXIoY3VyKTtcbiAgICAgIH1cbiAgICAgIGFkZChldmVudC5uYW1lLCBjdXIsIGV2ZW50Lm9uY2UsIGV2ZW50LmNhcHR1cmUsIGV2ZW50LnBhc3NpdmUpO1xuICAgIH0gZWxzZSBpZiAoY3VyICE9PSBvbGQpIHtcbiAgICAgIG9sZC5mbnMgPSBjdXI7XG4gICAgICBvbltuYW1lXSA9IG9sZDtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIG9sZE9uKSB7XG4gICAgaWYgKGlzVW5kZWYob25bbmFtZV0pKSB7XG4gICAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAgICAgcmVtb3ZlJCQxKGV2ZW50Lm5hbWUsIG9sZE9uW25hbWVdLCBldmVudC5jYXB0dXJlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG1lcmdlVk5vZGVIb29rIChkZWYsIGhvb2tLZXksIGhvb2spIHtcbiAgdmFyIGludm9rZXI7XG4gIHZhciBvbGRIb29rID0gZGVmW2hvb2tLZXldO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRIb29rICgpIHtcbiAgICBob29rLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgLy8gaW1wb3J0YW50OiByZW1vdmUgbWVyZ2VkIGhvb2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIG9ubHkgb25jZVxuICAgIC8vIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gICAgcmVtb3ZlKGludm9rZXIuZm5zLCB3cmFwcGVkSG9vayk7XG4gIH1cblxuICBpZiAoaXNVbmRlZihvbGRIb29rKSkge1xuICAgIC8vIG5vIGV4aXN0aW5nIGhvb2tcbiAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFt3cmFwcGVkSG9va10pO1xuICB9IGVsc2Uge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc0RlZihvbGRIb29rLmZucykgJiYgaXNUcnVlKG9sZEhvb2subWVyZ2VkKSkge1xuICAgICAgLy8gYWxyZWFkeSBhIG1lcmdlZCBpbnZva2VyXG4gICAgICBpbnZva2VyID0gb2xkSG9vaztcbiAgICAgIGludm9rZXIuZm5zLnB1c2god3JhcHBlZEhvb2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBwbGFpbiBob29rXG4gICAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFtvbGRIb29rLCB3cmFwcGVkSG9va10pO1xuICAgIH1cbiAgfVxuXG4gIGludm9rZXIubWVyZ2VkID0gdHJ1ZTtcbiAgZGVmW2hvb2tLZXldID0gaW52b2tlcjtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEgKFxuICBkYXRhLFxuICBDdG9yLFxuICB0YWdcbikge1xuICAvLyB3ZSBhcmUgb25seSBleHRyYWN0aW5nIHJhdyB2YWx1ZXMgaGVyZS5cbiAgLy8gdmFsaWRhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGhhbmRsZWQgaW4gdGhlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCBpdHNlbGYuXG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzVW5kZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgYXR0cnMgPSBkYXRhLmF0dHJzO1xuICB2YXIgcHJvcHMgPSBkYXRhLnByb3BzO1xuICBpZiAoaXNEZWYoYXR0cnMpIHx8IGlzRGVmKHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgdmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGtleUluTG93ZXJDYXNlID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgIT09IGtleUluTG93ZXJDYXNlICYmXG4gICAgICAgICAgYXR0cnMgJiYgaGFzT3duKGF0dHJzLCBrZXlJbkxvd2VyQ2FzZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGlwKFxuICAgICAgICAgICAgXCJQcm9wIFxcXCJcIiArIGtleUluTG93ZXJDYXNlICsgXCJcXFwiIGlzIHBhc3NlZCB0byBjb21wb25lbnQgXCIgK1xuICAgICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodGFnIHx8IEN0b3IpKSArIFwiLCBidXQgdGhlIGRlY2xhcmVkIHByb3AgbmFtZSBpc1wiICtcbiAgICAgICAgICAgIFwiIFxcXCJcIiArIGtleSArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgICAgXCJOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCBjYW1lbENhc2VkIFwiICtcbiAgICAgICAgICAgIFwicHJvcHMgbmVlZCB0byB1c2UgdGhlaXIga2ViYWItY2FzZSBlcXVpdmFsZW50cyB3aGVuIHVzaW5nIGluLURPTSBcIiArXG4gICAgICAgICAgICBcInRlbXBsYXRlcy4gWW91IHNob3VsZCBwcm9iYWJseSB1c2UgXFxcIlwiICsgYWx0S2V5ICsgXCJcXFwiIGluc3RlYWQgb2YgXFxcIlwiICsga2V5ICsgXCJcXFwiLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2hlY2tQcm9wKHJlcywgcHJvcHMsIGtleSwgYWx0S2V5LCB0cnVlKSB8fFxuICAgICAgY2hlY2tQcm9wKHJlcywgYXR0cnMsIGtleSwgYWx0S2V5LCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wIChcbiAgcmVzLFxuICBoYXNoLFxuICBrZXksXG4gIGFsdEtleSxcbiAgcHJlc2VydmVcbikge1xuICBpZiAoaXNEZWYoaGFzaCkpIHtcbiAgICBpZiAoaGFzT3duKGhhc2gsIGtleSkpIHtcbiAgICAgIHJlc1trZXldID0gaGFzaFtrZXldO1xuICAgICAgaWYgKCFwcmVzZXJ2ZSkge1xuICAgICAgICBkZWxldGUgaGFzaFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKGhhc093bihoYXNoLCBhbHRLZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hbYWx0S2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hbYWx0S2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG4vKiAgKi9cblxuLy8gVGhlIHRlbXBsYXRlIGNvbXBpbGVyIGF0dGVtcHRzIHRvIG1pbmltaXplIHRoZSBuZWVkIGZvciBub3JtYWxpemF0aW9uIGJ5XG4vLyBzdGF0aWNhbGx5IGFuYWx5emluZyB0aGUgdGVtcGxhdGUgYXQgY29tcGlsZSB0aW1lLlxuLy9cbi8vIEZvciBwbGFpbiBIVE1MIG1hcmt1cCwgbm9ybWFsaXphdGlvbiBjYW4gYmUgY29tcGxldGVseSBza2lwcGVkIGJlY2F1c2UgdGhlXG4vLyBnZW5lcmF0ZWQgcmVuZGVyIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIEFycmF5PFZOb2RlPi4gVGhlcmUgYXJlXG4vLyB0d28gY2FzZXMgd2hlcmUgZXh0cmEgbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQ6XG5cbi8vIDEuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbXBvbmVudHMgLSBiZWNhdXNlIGEgZnVuY3Rpb25hbCBjb21wb25lbnRcbi8vIG1heSByZXR1cm4gYW4gQXJyYXkgaW5zdGVhZCBvZiBhIHNpbmdsZSByb290LiBJbiB0aGlzIGNhc2UsIGp1c3QgYSBzaW1wbGVcbi8vIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkIC0gaWYgYW55IGNoaWxkIGlzIGFuIEFycmF5LCB3ZSBmbGF0dGVuIHRoZSB3aG9sZVxuLy8gdGhpbmcgd2l0aCBBcnJheS5wcm90b3R5cGUuY29uY2F0LiBJdCBpcyBndWFyYW50ZWVkIHRvIGJlIG9ubHkgMS1sZXZlbCBkZWVwXG4vLyBiZWNhdXNlIGZ1bmN0aW9uYWwgY29tcG9uZW50cyBhbHJlYWR5IG5vcm1hbGl6ZSB0aGVpciBvd24gY2hpbGRyZW4uXG5mdW5jdGlvbiBzaW1wbGVOb3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuW2ldKSkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGNoaWxkcmVuKVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuLy8gMi4gV2hlbiB0aGUgY2hpbGRyZW4gY29udGFpbnMgY29uc3RydWN0cyB0aGF0IGFsd2F5cyBnZW5lcmF0ZWQgbmVzdGVkIEFycmF5cyxcbi8vIGUuZy4gPHRlbXBsYXRlPiwgPHNsb3Q+LCB2LWZvciwgb3Igd2hlbiB0aGUgY2hpbGRyZW4gaXMgcHJvdmlkZWQgYnkgdXNlclxuLy8gd2l0aCBoYW5kLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucyAvIEpTWC4gSW4gc3VjaCBjYXNlcyBhIGZ1bGwgbm9ybWFsaXphdGlvblxuLy8gaXMgbmVlZGVkIHRvIGNhdGVyIHRvIGFsbCBwb3NzaWJsZSB0eXBlcyBvZiBjaGlsZHJlbiB2YWx1ZXMuXG5mdW5jdGlvbiBub3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGlzUHJpbWl0aXZlKGNoaWxkcmVuKVxuICAgID8gW2NyZWF0ZVRleHRWTm9kZShjaGlsZHJlbildXG4gICAgOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKVxuICAgICAgPyBub3JtYWxpemVBcnJheUNoaWxkcmVuKGNoaWxkcmVuKVxuICAgICAgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gaXNUZXh0Tm9kZSAobm9kZSkge1xuICByZXR1cm4gaXNEZWYobm9kZSkgJiYgaXNEZWYobm9kZS50ZXh0KSAmJiBpc0ZhbHNlKG5vZGUuaXNDb21tZW50KVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheUNoaWxkcmVuIChjaGlsZHJlbiwgbmVzdGVkSW5kZXgpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICB2YXIgaSwgYywgbGFzdDtcbiAgZm9yIChpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgYyA9IGNoaWxkcmVuW2ldO1xuICAgIGlmIChpc1VuZGVmKGMpIHx8IHR5cGVvZiBjID09PSAnYm9vbGVhbicpIHsgY29udGludWUgfVxuICAgIGxhc3QgPSByZXNbcmVzLmxlbmd0aCAtIDFdO1xuICAgIC8vICBuZXN0ZWRcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjKSkge1xuICAgICAgcmVzLnB1c2guYXBwbHkocmVzLCBub3JtYWxpemVBcnJheUNoaWxkcmVuKGMsICgobmVzdGVkSW5kZXggfHwgJycpICsgXCJfXCIgKyBpKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUoYykpIHtcbiAgICAgIGlmIChpc1RleHROb2RlKGxhc3QpKSB7XG4gICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgICAgLy8gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIFNTUiBoeWRyYXRpb24gYmVjYXVzZSB0ZXh0IG5vZGVzIGFyZVxuICAgICAgICAvLyBlc3NlbnRpYWxseSBtZXJnZWQgd2hlbiByZW5kZXJlZCB0byBIVE1MIHN0cmluZ3NcbiAgICAgICAgKGxhc3QpLnRleHQgKz0gU3RyaW5nKGMpO1xuICAgICAgfSBlbHNlIGlmIChjICE9PSAnJykge1xuICAgICAgICAvLyBjb252ZXJ0IHByaW1pdGl2ZSB0byB2bm9kZVxuICAgICAgICByZXMucHVzaChjcmVhdGVUZXh0Vk5vZGUoYykpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShjKSAmJiBpc1RleHROb2RlKGxhc3QpKSB7XG4gICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgICAgcmVzW3Jlcy5sZW5ndGggLSAxXSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyBjLnRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGVmYXVsdCBrZXkgZm9yIG5lc3RlZCBhcnJheSBjaGlsZHJlbiAobGlrZWx5IGdlbmVyYXRlZCBieSB2LWZvcilcbiAgICAgICAgaWYgKGlzVHJ1ZShjaGlsZHJlbi5faXNWTGlzdCkgJiZcbiAgICAgICAgICBpc0RlZihjLnRhZykgJiZcbiAgICAgICAgICBpc1VuZGVmKGMua2V5KSAmJlxuICAgICAgICAgIGlzRGVmKG5lc3RlZEluZGV4KSkge1xuICAgICAgICAgIGMua2V5ID0gXCJfX3ZsaXN0XCIgKyBuZXN0ZWRJbmRleCArIFwiX1wiICsgaSArIFwiX19cIjtcbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaChjKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZW5zdXJlQ3RvciAoY29tcCwgYmFzZSkge1xuICByZXR1cm4gaXNPYmplY3QoY29tcClcbiAgICA/IGJhc2UuZXh0ZW5kKGNvbXApXG4gICAgOiBjb21wXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBc3luY0NvbXBvbmVudCAoXG4gIGZhY3RvcnksXG4gIGJhc2VDdG9yLFxuICBjb250ZXh0XG4pIHtcbiAgaWYgKGlzVHJ1ZShmYWN0b3J5LmVycm9yKSAmJiBpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5lcnJvckNvbXBcbiAgfVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgIHJldHVybiBmYWN0b3J5LnJlc29sdmVkXG4gIH1cblxuICBpZiAoaXNUcnVlKGZhY3RvcnkubG9hZGluZykgJiYgaXNEZWYoZmFjdG9yeS5sb2FkaW5nQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5sb2FkaW5nQ29tcFxuICB9XG5cbiAgaWYgKGlzRGVmKGZhY3RvcnkuY29udGV4dHMpKSB7XG4gICAgLy8gYWxyZWFkeSBwZW5kaW5nXG4gICAgZmFjdG9yeS5jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBjb250ZXh0cyA9IGZhY3RvcnkuY29udGV4dHMgPSBbY29udGV4dF07XG4gICAgdmFyIHN5bmMgPSB0cnVlO1xuXG4gICAgdmFyIGZvcmNlUmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjb250ZXh0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29udGV4dHNbaV0uJGZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciByZXNvbHZlID0gb25jZShmdW5jdGlvbiAocmVzKSB7XG4gICAgICAvLyBjYWNoZSByZXNvbHZlZFxuICAgICAgZmFjdG9yeS5yZXNvbHZlZCA9IGVuc3VyZUN0b3IocmVzLCBiYXNlQ3Rvcik7XG4gICAgICAvLyBpbnZva2UgY2FsbGJhY2tzIG9ubHkgaWYgdGhpcyBpcyBub3QgYSBzeW5jaHJvbm91cyByZXNvbHZlXG4gICAgICAvLyAoYXN5bmMgcmVzb2x2ZXMgYXJlIHNoaW1tZWQgYXMgc3luY2hyb25vdXMgZHVyaW5nIFNTUilcbiAgICAgIGlmICghc3luYykge1xuICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlamVjdCA9IG9uY2UoZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB0byByZXNvbHZlIGFzeW5jIGNvbXBvbmVudDogXCIgKyAoU3RyaW5nKGZhY3RvcnkpKSArXG4gICAgICAgIChyZWFzb24gPyAoXCJcXG5SZWFzb246IFwiICsgcmVhc29uKSA6ICcnKVxuICAgICAgKTtcbiAgICAgIGlmIChpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICAgICAgZmFjdG9yeS5lcnJvciA9IHRydWU7XG4gICAgICAgIGZvcmNlUmVuZGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVzID0gZmFjdG9yeShyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgaWYgKGlzT2JqZWN0KHJlcykpIHtcbiAgICAgIGlmICh0eXBlb2YgcmVzLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gKCkgPT4gUHJvbWlzZVxuICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgICAgICAgIHJlcy50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYocmVzLmNvbXBvbmVudCkgJiYgdHlwZW9mIHJlcy5jb21wb25lbnQudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXMuY29tcG9uZW50LnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgICAgICBpZiAoaXNEZWYocmVzLmVycm9yKSkge1xuICAgICAgICAgIGZhY3RvcnkuZXJyb3JDb21wID0gZW5zdXJlQ3RvcihyZXMuZXJyb3IsIGJhc2VDdG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0RlZihyZXMubG9hZGluZykpIHtcbiAgICAgICAgICBmYWN0b3J5LmxvYWRpbmdDb21wID0gZW5zdXJlQ3RvcihyZXMubG9hZGluZywgYmFzZUN0b3IpO1xuICAgICAgICAgIGlmIChyZXMuZGVsYXkgPT09IDApIHtcbiAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSAmJiBpc1VuZGVmKGZhY3RvcnkuZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgZmFjdG9yeS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCByZXMuZGVsYXkgfHwgMjAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLnRpbWVvdXQpKSB7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJ1xuICAgICAgICAgICAgICAgICAgPyAoXCJ0aW1lb3V0IChcIiArIChyZXMudGltZW91dCkgKyBcIm1zKVwiKVxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVzLnRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3luYyA9IGZhbHNlO1xuICAgIC8vIHJldHVybiBpbiBjYXNlIHJlc29sdmVkIHN5bmNocm9ub3VzbHlcbiAgICByZXR1cm4gZmFjdG9yeS5sb2FkaW5nXG4gICAgICA/IGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgICAgIDogZmFjdG9yeS5yZXNvbHZlZFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZXRGaXJzdENvbXBvbmVudENoaWxkIChjaGlsZHJlbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IGNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGMpICYmIGlzRGVmKGMuY29tcG9uZW50T3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGNcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0RXZlbnRzICh2bSkge1xuICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdm0uX2hhc0hvb2tFdmVudCA9IGZhbHNlO1xuICAvLyBpbml0IHBhcmVudCBhdHRhY2hlZCBldmVudHNcbiAgdmFyIGxpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGlmIChsaXN0ZW5lcnMpIHtcbiAgICB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycyk7XG4gIH1cbn1cblxudmFyIHRhcmdldDtcblxuZnVuY3Rpb24gYWRkIChldmVudCwgZm4sIG9uY2UkJDEpIHtcbiAgaWYgKG9uY2UkJDEpIHtcbiAgICB0YXJnZXQuJG9uY2UoZXZlbnQsIGZuKTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQuJG9uKGV2ZW50LCBmbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDEgKGV2ZW50LCBmbikge1xuICB0YXJnZXQuJG9mZihldmVudCwgZm4pO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnMgKFxuICB2bSxcbiAgbGlzdGVuZXJzLFxuICBvbGRMaXN0ZW5lcnNcbikge1xuICB0YXJnZXQgPSB2bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzIHx8IHt9LCBhZGQsIHJlbW92ZSQxLCB2bSk7XG59XG5cbmZ1bmN0aW9uIGV2ZW50c01peGluIChWdWUpIHtcbiAgdmFyIGhvb2tSRSA9IC9eaG9vazovO1xuICBWdWUucHJvdG90eXBlLiRvbiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB0aGlzJDEuJG9uKGV2ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICh2bS5fZXZlbnRzW2V2ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xuICAgICAgLy8gb3B0aW1pemUgaG9vazpldmVudCBjb3N0IGJ5IHVzaW5nIGEgYm9vbGVhbiBmbGFnIG1hcmtlZCBhdCByZWdpc3RyYXRpb25cbiAgICAgIC8vIGluc3RlYWQgb2YgYSBoYXNoIGxvb2t1cFxuICAgICAgaWYgKGhvb2tSRS50ZXN0KGV2ZW50KSkge1xuICAgICAgICB2bS5faGFzSG9va0V2ZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb25jZSA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGZ1bmN0aW9uIG9uICgpIHtcbiAgICAgIHZtLiRvZmYoZXZlbnQsIG9uKTtcbiAgICAgIGZuLmFwcGx5KHZtLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICBvbi5mbiA9IGZuO1xuICAgIHZtLiRvbihldmVudCwgb24pO1xuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9mZiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgLy8gYWxsXG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBhcnJheSBvZiBldmVudHNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkkMSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkkMSA8IGw7IGkkMSsrKSB7XG4gICAgICAgIHRoaXMkMS4kb2ZmKGV2ZW50W2kkMV0sIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBldmVudFxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoIWNicykge1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICB2bS5fZXZlbnRzW2V2ZW50XSA9IG51bGw7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMgaGFuZGxlclxuICAgIHZhciBjYjtcbiAgICB2YXIgaSA9IGNicy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY2IgPSBjYnNbaV07XG4gICAgICBpZiAoY2IgPT09IGZuIHx8IGNiLmZuID09PSBmbikge1xuICAgICAgICBjYnMuc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRlbWl0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGxvd2VyQ2FzZUV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlckNhc2VFdmVudCAhPT0gZXZlbnQgJiYgdm0uX2V2ZW50c1tsb3dlckNhc2VFdmVudF0pIHtcbiAgICAgICAgdGlwKFxuICAgICAgICAgIFwiRXZlbnQgXFxcIlwiICsgbG93ZXJDYXNlRXZlbnQgKyBcIlxcXCIgaXMgZW1pdHRlZCBpbiBjb21wb25lbnQgXCIgK1xuICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkgKyBcIiBidXQgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBmb3IgXFxcIlwiICsgZXZlbnQgKyBcIlxcXCIuIFwiICtcbiAgICAgICAgICBcIk5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHlvdSBjYW5ub3QgdXNlIFwiICtcbiAgICAgICAgICBcInYtb24gdG8gbGlzdGVuIHRvIGNhbWVsQ2FzZSBldmVudHMgd2hlbiB1c2luZyBpbi1ET00gdGVtcGxhdGVzLiBcIiArXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcXFwiXCIgKyAoaHlwaGVuYXRlKGV2ZW50KSkgKyBcIlxcXCIgaW5zdGVhZCBvZiBcXFwiXCIgKyBldmVudCArIFwiXFxcIi5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4gICAgaWYgKGNicykge1xuICAgICAgY2JzID0gY2JzLmxlbmd0aCA+IDEgPyB0b0FycmF5KGNicykgOiBjYnM7XG4gICAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRzLCAxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2JzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBjYnNbaV0uYXBwbHkodm0sIGFyZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlc29sdmluZyByYXcgY2hpbGRyZW4gVk5vZGVzIGludG8gYSBzbG90IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNsb3RzIChcbiAgY2hpbGRyZW4sXG4gIGNvbnRleHRcbikge1xuICB2YXIgc2xvdHMgPSB7fTtcbiAgaWYgKCFjaGlsZHJlbikge1xuICAgIHJldHVybiBzbG90c1xuICB9XG4gIHZhciBkZWZhdWx0U2xvdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIC8vIG5hbWVkIHNsb3RzIHNob3VsZCBvbmx5IGJlIHJlc3BlY3RlZCBpZiB0aGUgdm5vZGUgd2FzIHJlbmRlcmVkIGluIHRoZVxuICAgIC8vIHNhbWUgY29udGV4dC5cbiAgICBpZiAoKGNoaWxkLmNvbnRleHQgPT09IGNvbnRleHQgfHwgY2hpbGQuZnVuY3Rpb25hbENvbnRleHQgPT09IGNvbnRleHQpICYmXG4gICAgICBjaGlsZC5kYXRhICYmIGNoaWxkLmRhdGEuc2xvdCAhPSBudWxsXG4gICAgKSB7XG4gICAgICB2YXIgbmFtZSA9IGNoaWxkLmRhdGEuc2xvdDtcbiAgICAgIHZhciBzbG90ID0gKHNsb3RzW25hbWVdIHx8IChzbG90c1tuYW1lXSA9IFtdKSk7XG4gICAgICBpZiAoY2hpbGQudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgIHNsb3QucHVzaC5hcHBseShzbG90LCBjaGlsZC5jaGlsZHJlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbG90LnB1c2goY2hpbGQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWZhdWx0U2xvdC5wdXNoKGNoaWxkKTtcbiAgICB9XG4gIH1cbiAgLy8gaWdub3JlIHdoaXRlc3BhY2VcbiAgaWYgKCFkZWZhdWx0U2xvdC5ldmVyeShpc1doaXRlc3BhY2UpKSB7XG4gICAgc2xvdHMuZGVmYXVsdCA9IGRlZmF1bHRTbG90O1xuICB9XG4gIHJldHVybiBzbG90c1xufVxuXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuaXNDb21tZW50IHx8IG5vZGUudGV4dCA9PT0gJyAnXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVTY29wZWRTbG90cyAoXG4gIGZucywgLy8gc2VlIGZsb3cvdm5vZGVcbiAgcmVzXG4pIHtcbiAgcmVzID0gcmVzIHx8IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHtcbiAgICAgIHJlc29sdmVTY29wZWRTbG90cyhmbnNbaV0sIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1tmbnNbaV0ua2V5XSA9IGZuc1tpXS5mbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGFjdGl2ZUluc3RhbmNlID0gbnVsbDtcblxuZnVuY3Rpb24gaW5pdExpZmVjeWNsZSAodm0pIHtcbiAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcblxuICAvLyBsb2NhdGUgZmlyc3Qgbm9uLWFic3RyYWN0IHBhcmVudFxuICB2YXIgcGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIGlmIChwYXJlbnQgJiYgIW9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICB3aGlsZSAocGFyZW50LiRvcHRpb25zLmFic3RyYWN0ICYmIHBhcmVudC4kcGFyZW50KSB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICB9XG4gICAgcGFyZW50LiRjaGlsZHJlbi5wdXNoKHZtKTtcbiAgfVxuXG4gIHZtLiRwYXJlbnQgPSBwYXJlbnQ7XG4gIHZtLiRyb290ID0gcGFyZW50ID8gcGFyZW50LiRyb290IDogdm07XG5cbiAgdm0uJGNoaWxkcmVuID0gW107XG4gIHZtLiRyZWZzID0ge307XG5cbiAgdm0uX3dhdGNoZXIgPSBudWxsO1xuICB2bS5faW5hY3RpdmUgPSBudWxsO1xuICB2bS5fZGlyZWN0SW5hY3RpdmUgPSBmYWxzZTtcbiAgdm0uX2lzTW91bnRlZCA9IGZhbHNlO1xuICB2bS5faXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbGlmZWN5Y2xlTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAodm5vZGUsIGh5ZHJhdGluZykge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc01vdW50ZWQpIHtcbiAgICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlVXBkYXRlJyk7XG4gICAgfVxuICAgIHZhciBwcmV2RWwgPSB2bS4kZWw7XG4gICAgdmFyIHByZXZWbm9kZSA9IHZtLl92bm9kZTtcbiAgICB2YXIgcHJldkFjdGl2ZUluc3RhbmNlID0gYWN0aXZlSW5zdGFuY2U7XG4gICAgYWN0aXZlSW5zdGFuY2UgPSB2bTtcbiAgICB2bS5fdm5vZGUgPSB2bm9kZTtcbiAgICAvLyBWdWUucHJvdG90eXBlLl9fcGF0Y2hfXyBpcyBpbmplY3RlZCBpbiBlbnRyeSBwb2ludHNcbiAgICAvLyBiYXNlZCBvbiB0aGUgcmVuZGVyaW5nIGJhY2tlbmQgdXNlZC5cbiAgICBpZiAoIXByZXZWbm9kZSkge1xuICAgICAgLy8gaW5pdGlhbCByZW5kZXJcbiAgICAgIHZtLiRlbCA9IHZtLl9fcGF0Y2hfXyhcbiAgICAgICAgdm0uJGVsLCB2bm9kZSwgaHlkcmF0aW5nLCBmYWxzZSAvKiByZW1vdmVPbmx5ICovLFxuICAgICAgICB2bS4kb3B0aW9ucy5fcGFyZW50RWxtLFxuICAgICAgICB2bS4kb3B0aW9ucy5fcmVmRWxtXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGVzXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18ocHJldlZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIGFjdGl2ZUluc3RhbmNlID0gcHJldkFjdGl2ZUluc3RhbmNlO1xuICAgIC8vIHVwZGF0ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmIChwcmV2RWwpIHtcbiAgICAgIHByZXZFbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHZtLiRlbCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSB2bTtcbiAgICB9XG4gICAgLy8gaWYgcGFyZW50IGlzIGFuIEhPQywgdXBkYXRlIGl0cyAkZWwgYXMgd2VsbFxuICAgIGlmICh2bS4kdm5vZGUgJiYgdm0uJHBhcmVudCAmJiB2bS4kdm5vZGUgPT09IHZtLiRwYXJlbnQuX3Zub2RlKSB7XG4gICAgICB2bS4kcGFyZW50LiRlbCA9IHZtLiRlbDtcbiAgICB9XG4gICAgLy8gdXBkYXRlZCBob29rIGlzIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyIHRvIGVuc3VyZSB0aGF0IGNoaWxkcmVuIGFyZVxuICAgIC8vIHVwZGF0ZWQgaW4gYSBwYXJlbnQncyB1cGRhdGVkIGhvb2suXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnVwZGF0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0cm95Jyk7XG4gICAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gcGFyZW50XG4gICAgdmFyIHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBhcmVudCAmJiAhcGFyZW50Ll9pc0JlaW5nRGVzdHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgICAgcmVtb3ZlKHBhcmVudC4kY2hpbGRyZW4sIHZtKTtcbiAgICB9XG4gICAgLy8gdGVhcmRvd24gd2F0Y2hlcnNcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIHZhciBpID0gdm0uX3dhdGNoZXJzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2bS5fd2F0Y2hlcnNbaV0udGVhcmRvd24oKTtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSBmcm9tIGRhdGEgb2JcbiAgICAvLyBmcm96ZW4gb2JqZWN0IG1heSBub3QgaGF2ZSBvYnNlcnZlci5cbiAgICBpZiAodm0uX2RhdGEuX19vYl9fKSB7XG4gICAgICB2bS5fZGF0YS5fX29iX18udm1Db3VudC0tO1xuICAgIH1cbiAgICAvLyBjYWxsIHRoZSBsYXN0IGhvb2suLi5cbiAgICB2bS5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIGludm9rZSBkZXN0cm95IGhvb2tzIG9uIGN1cnJlbnQgcmVuZGVyZWQgdHJlZVxuICAgIHZtLl9fcGF0Y2hfXyh2bS5fdm5vZGUsIG51bGwpO1xuICAgIC8vIGZpcmUgZGVzdHJveWVkIGhvb2tcbiAgICBjYWxsSG9vayh2bSwgJ2Rlc3Ryb3llZCcpO1xuICAgIC8vIHR1cm4gb2ZmIGFsbCBpbnN0YW5jZSBsaXN0ZW5lcnMuXG4gICAgdm0uJG9mZigpO1xuICAgIC8vIHJlbW92ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSB0byBET00gbm9kZXMgKHByZXZlbnRzIGxlYWspXG4gICAgdm0uJG9wdGlvbnMuX3BhcmVudEVsbSA9IHZtLiRvcHRpb25zLl9yZWZFbG0gPSBudWxsO1xuICB9O1xufVxuXG5mdW5jdGlvbiBtb3VudENvbXBvbmVudCAoXG4gIHZtLFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgdm0uJGVsID0gZWw7XG4gIGlmICghdm0uJG9wdGlvbnMucmVuZGVyKSB7XG4gICAgdm0uJG9wdGlvbnMucmVuZGVyID0gY3JlYXRlRW1wdHlWTm9kZTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoKHZtLiRvcHRpb25zLnRlbXBsYXRlICYmIHZtLiRvcHRpb25zLnRlbXBsYXRlLmNoYXJBdCgwKSAhPT0gJyMnKSB8fFxuICAgICAgICB2bS4kb3B0aW9ucy5lbCB8fCBlbCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkgYnVpbGQgb2YgVnVlIHdoZXJlIHRoZSB0ZW1wbGF0ZSAnICtcbiAgICAgICAgICAnY29tcGlsZXIgaXMgbm90IGF2YWlsYWJsZS4gRWl0aGVyIHByZS1jb21waWxlIHRoZSB0ZW1wbGF0ZXMgaW50byAnICtcbiAgICAgICAgICAncmVuZGVyIGZ1bmN0aW9ucywgb3IgdXNlIHRoZSBjb21waWxlci1pbmNsdWRlZCBidWlsZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdGYWlsZWQgdG8gbW91bnQgY29tcG9uZW50OiB0ZW1wbGF0ZSBvciByZW5kZXIgZnVuY3Rpb24gbm90IGRlZmluZWQuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYWxsSG9vayh2bSwgJ2JlZm9yZU1vdW50Jyk7XG5cbiAgdmFyIHVwZGF0ZUNvbXBvbmVudDtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG5hbWUgPSB2bS5fbmFtZTtcbiAgICAgIHZhciBpZCA9IHZtLl91aWQ7XG4gICAgICB2YXIgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgaWQ7XG4gICAgICB2YXIgZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyBpZDtcblxuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgICB2YXIgdm5vZGUgPSB2bS5fcmVuZGVyKCk7XG4gICAgICBtYXJrKGVuZFRhZyk7XG4gICAgICBtZWFzdXJlKChuYW1lICsgXCIgcmVuZGVyXCIpLCBzdGFydFRhZywgZW5kVGFnKTtcblxuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgICB2bS5fdXBkYXRlKHZub2RlLCBoeWRyYXRpbmcpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgobmFtZSArIFwiIHBhdGNoXCIpLCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZtLl91cGRhdGUodm0uX3JlbmRlcigpLCBoeWRyYXRpbmcpO1xuICAgIH07XG4gIH1cblxuICB2bS5fd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCB1cGRhdGVDb21wb25lbnQsIG5vb3ApO1xuICBoeWRyYXRpbmcgPSBmYWxzZTtcblxuICAvLyBtYW51YWxseSBtb3VudGVkIGluc3RhbmNlLCBjYWxsIG1vdW50ZWQgb24gc2VsZlxuICAvLyBtb3VudGVkIGlzIGNhbGxlZCBmb3IgcmVuZGVyLWNyZWF0ZWQgY2hpbGQgY29tcG9uZW50cyBpbiBpdHMgaW5zZXJ0ZWQgaG9va1xuICBpZiAodm0uJHZub2RlID09IG51bGwpIHtcbiAgICB2bS5faXNNb3VudGVkID0gdHJ1ZTtcbiAgICBjYWxsSG9vayh2bSwgJ21vdW50ZWQnKTtcbiAgfVxuICByZXR1cm4gdm1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQ2hpbGRDb21wb25lbnQgKFxuICB2bSxcbiAgcHJvcHNEYXRhLFxuICBsaXN0ZW5lcnMsXG4gIHBhcmVudFZub2RlLFxuICByZW5kZXJDaGlsZHJlblxuKSB7XG4gIC8vIGRldGVybWluZSB3aGV0aGVyIGNvbXBvbmVudCBoYXMgc2xvdCBjaGlsZHJlblxuICAvLyB3ZSBuZWVkIHRvIGRvIHRoaXMgYmVmb3JlIG92ZXJ3cml0aW5nICRvcHRpb25zLl9yZW5kZXJDaGlsZHJlblxuICB2YXIgaGFzQ2hpbGRyZW4gPSAhIShcbiAgICByZW5kZXJDaGlsZHJlbiB8fCAgICAgICAgICAgICAgIC8vIGhhcyBuZXcgc3RhdGljIHNsb3RzXG4gICAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuIHx8ICAvLyBoYXMgb2xkIHN0YXRpYyBzbG90c1xuICAgIHBhcmVudFZub2RlLmRhdGEuc2NvcGVkU2xvdHMgfHwgLy8gaGFzIG5ldyBzY29wZWQgc2xvdHNcbiAgICB2bS4kc2NvcGVkU2xvdHMgIT09IGVtcHR5T2JqZWN0IC8vIGhhcyBvbGQgc2NvcGVkIHNsb3RzXG4gICk7XG5cbiAgdm0uJG9wdGlvbnMuX3BhcmVudFZub2RlID0gcGFyZW50Vm5vZGU7XG4gIHZtLiR2bm9kZSA9IHBhcmVudFZub2RlOyAvLyB1cGRhdGUgdm0ncyBwbGFjZWhvbGRlciBub2RlIHdpdGhvdXQgcmUtcmVuZGVyXG4gIGlmICh2bS5fdm5vZGUpIHsgLy8gdXBkYXRlIGNoaWxkIHRyZWUncyBwYXJlbnRcbiAgICB2bS5fdm5vZGUucGFyZW50ID0gcGFyZW50Vm5vZGU7XG4gIH1cbiAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuID0gcmVuZGVyQ2hpbGRyZW47XG5cbiAgLy8gdXBkYXRlIHByb3BzXG4gIGlmIChwcm9wc0RhdGEgJiYgdm0uJG9wdGlvbnMucHJvcHMpIHtcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSBmYWxzZTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgb2JzZXJ2ZXJTdGF0ZS5pc1NldHRpbmdQcm9wcyA9IHRydWU7XG4gICAgfVxuICAgIHZhciBwcm9wcyA9IHZtLl9wcm9wcztcbiAgICB2YXIgcHJvcEtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IHByb3BLZXlzW2ldO1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHZtLiRvcHRpb25zLnByb3BzLCBwcm9wc0RhdGEsIHZtKTtcbiAgICB9XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgb2JzZXJ2ZXJTdGF0ZS5pc1NldHRpbmdQcm9wcyA9IGZhbHNlO1xuICAgIH1cbiAgICAvLyBrZWVwIGEgY29weSBvZiByYXcgcHJvcHNEYXRhXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhID0gcHJvcHNEYXRhO1xuICB9XG4gIC8vIHVwZGF0ZSBsaXN0ZW5lcnNcbiAgaWYgKGxpc3RlbmVycykge1xuICAgIHZhciBvbGRMaXN0ZW5lcnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICAgIHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG4gICAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMsIG9sZExpc3RlbmVycyk7XG4gIH1cbiAgLy8gcmVzb2x2ZSBzbG90cyArIGZvcmNlIHVwZGF0ZSBpZiBoYXMgY2hpbGRyZW5cbiAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHJlbmRlckNoaWxkcmVuLCBwYXJlbnRWbm9kZS5jb250ZXh0KTtcbiAgICB2bS4kZm9yY2VVcGRhdGUoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0luSW5hY3RpdmVUcmVlICh2bSkge1xuICB3aGlsZSAodm0gJiYgKHZtID0gdm0uJHBhcmVudCkpIHtcbiAgICBpZiAodm0uX2luYWN0aXZlKSB7IHJldHVybiB0cnVlIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0gZWxzZSBpZiAodm0uX2RpcmVjdEluYWN0aXZlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZtLl9pbmFjdGl2ZSB8fCB2bS5faW5hY3RpdmUgPT09IG51bGwpIHtcbiAgICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2FjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gdHJ1ZTtcbiAgICBpZiAoaXNJbkluYWN0aXZlVHJlZSh2bSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuICBpZiAoIXZtLl9pbmFjdGl2ZSkge1xuICAgIHZtLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2RlYWN0aXZhdGVkJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbEhvb2sgKHZtLCBob29rKSB7XG4gIHZhciBoYW5kbGVycyA9IHZtLiRvcHRpb25zW2hvb2tdO1xuICBpZiAoaGFuZGxlcnMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IGhhbmRsZXJzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaGFuZGxlcnNbaV0uY2FsbCh2bSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCAoaG9vayArIFwiIGhvb2tcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAodm0uX2hhc0hvb2tFdmVudCkge1xuICAgIHZtLiRlbWl0KCdob29rOicgKyBob29rKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuXG52YXIgTUFYX1VQREFURV9DT1VOVCA9IDEwMDtcblxudmFyIHF1ZXVlID0gW107XG52YXIgYWN0aXZhdGVkQ2hpbGRyZW4gPSBbXTtcbnZhciBoYXMgPSB7fTtcbnZhciBjaXJjdWxhciA9IHt9O1xudmFyIHdhaXRpbmcgPSBmYWxzZTtcbnZhciBmbHVzaGluZyA9IGZhbHNlO1xudmFyIGluZGV4ID0gMDtcblxuLyoqXG4gKiBSZXNldCB0aGUgc2NoZWR1bGVyJ3Mgc3RhdGUuXG4gKi9cbmZ1bmN0aW9uIHJlc2V0U2NoZWR1bGVyU3RhdGUgKCkge1xuICBpbmRleCA9IHF1ZXVlLmxlbmd0aCA9IGFjdGl2YXRlZENoaWxkcmVuLmxlbmd0aCA9IDA7XG4gIGhhcyA9IHt9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNpcmN1bGFyID0ge307XG4gIH1cbiAgd2FpdGluZyA9IGZsdXNoaW5nID0gZmFsc2U7XG59XG5cbi8qKlxuICogRmx1c2ggYm90aCBxdWV1ZXMgYW5kIHJ1biB0aGUgd2F0Y2hlcnMuXG4gKi9cbmZ1bmN0aW9uIGZsdXNoU2NoZWR1bGVyUXVldWUgKCkge1xuICBmbHVzaGluZyA9IHRydWU7XG4gIHZhciB3YXRjaGVyLCBpZDtcblxuICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQ6XG4gIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcbiAgLy8gICAgY3JlYXRlZCBiZWZvcmUgdGhlIGNoaWxkKVxuICAvLyAyLiBBIGNvbXBvbmVudCdzIHVzZXIgd2F0Y2hlcnMgYXJlIHJ1biBiZWZvcmUgaXRzIHJlbmRlciB3YXRjaGVyIChiZWNhdXNlXG4gIC8vICAgIHVzZXIgd2F0Y2hlcnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRoZSByZW5kZXIgd2F0Y2hlcilcbiAgLy8gMy4gSWYgYSBjb21wb25lbnQgaXMgZGVzdHJveWVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQncyB3YXRjaGVyIHJ1bixcbiAgLy8gICAgaXRzIHdhdGNoZXJzIGNhbiBiZSBza2lwcGVkLlxuICBxdWV1ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG5cbiAgLy8gZG8gbm90IGNhY2hlIGxlbmd0aCBiZWNhdXNlIG1vcmUgd2F0Y2hlcnMgbWlnaHQgYmUgcHVzaGVkXG4gIC8vIGFzIHdlIHJ1biBleGlzdGluZyB3YXRjaGVyc1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBxdWV1ZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICB3YXRjaGVyID0gcXVldWVbaW5kZXhdO1xuICAgIGlkID0gd2F0Y2hlci5pZDtcbiAgICBoYXNbaWRdID0gbnVsbDtcbiAgICB3YXRjaGVyLnJ1bigpO1xuICAgIC8vIGluIGRldiBidWlsZCwgY2hlY2sgYW5kIHN0b3AgY2lyY3VsYXIgdXBkYXRlcy5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBoYXNbaWRdICE9IG51bGwpIHtcbiAgICAgIGNpcmN1bGFyW2lkXSA9IChjaXJjdWxhcltpZF0gfHwgMCkgKyAxO1xuICAgICAgaWYgKGNpcmN1bGFyW2lkXSA+IE1BWF9VUERBVEVfQ09VTlQpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IG1heSBoYXZlIGFuIGluZmluaXRlIHVwZGF0ZSBsb29wICcgKyAoXG4gICAgICAgICAgICB3YXRjaGVyLnVzZXJcbiAgICAgICAgICAgICAgPyAoXCJpbiB3YXRjaGVyIHdpdGggZXhwcmVzc2lvbiBcXFwiXCIgKyAod2F0Y2hlci5leHByZXNzaW9uKSArIFwiXFxcIlwiKVxuICAgICAgICAgICAgICA6IFwiaW4gYSBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9uLlwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3YXRjaGVyLnZtXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8ga2VlcCBjb3BpZXMgb2YgcG9zdCBxdWV1ZXMgYmVmb3JlIHJlc2V0dGluZyBzdGF0ZVxuICB2YXIgYWN0aXZhdGVkUXVldWUgPSBhY3RpdmF0ZWRDaGlsZHJlbi5zbGljZSgpO1xuICB2YXIgdXBkYXRlZFF1ZXVlID0gcXVldWUuc2xpY2UoKTtcblxuICByZXNldFNjaGVkdWxlclN0YXRlKCk7XG5cbiAgLy8gY2FsbCBjb21wb25lbnQgdXBkYXRlZCBhbmQgYWN0aXZhdGVkIGhvb2tzXG4gIGNhbGxBY3RpdmF0ZWRIb29rcyhhY3RpdmF0ZWRRdWV1ZSk7XG4gIGNhbGxVcGRhdGVIb29rcyh1cGRhdGVkUXVldWUpO1xuXG4gIC8vIGRldnRvb2wgaG9va1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGRldnRvb2xzICYmIGNvbmZpZy5kZXZ0b29scykge1xuICAgIGRldnRvb2xzLmVtaXQoJ2ZsdXNoJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZUhvb2tzIChxdWV1ZSkge1xuICB2YXIgaSA9IHF1ZXVlLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciB3YXRjaGVyID0gcXVldWVbaV07XG4gICAgdmFyIHZtID0gd2F0Y2hlci52bTtcbiAgICBpZiAodm0uX3dhdGNoZXIgPT09IHdhdGNoZXIgJiYgdm0uX2lzTW91bnRlZCkge1xuICAgICAgY2FsbEhvb2sodm0sICd1cGRhdGVkJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUXVldWUgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCB0aGF0IHdhcyBhY3RpdmF0ZWQgZHVyaW5nIHBhdGNoLlxuICogVGhlIHF1ZXVlIHdpbGwgYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSBlbnRpcmUgdHJlZSBoYXMgYmVlbiBwYXRjaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudCAodm0pIHtcbiAgLy8gc2V0dGluZyBfaW5hY3RpdmUgdG8gZmFsc2UgaGVyZSBzbyB0aGF0IGEgcmVuZGVyIGZ1bmN0aW9uIGNhblxuICAvLyByZWx5IG9uIGNoZWNraW5nIHdoZXRoZXIgaXQncyBpbiBhbiBpbmFjdGl2ZSB0cmVlIChlLmcuIHJvdXRlci12aWV3KVxuICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgYWN0aXZhdGVkQ2hpbGRyZW4ucHVzaCh2bSk7XG59XG5cbmZ1bmN0aW9uIGNhbGxBY3RpdmF0ZWRIb29rcyAocXVldWUpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgIHF1ZXVlW2ldLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChxdWV1ZVtpXSwgdHJ1ZSAvKiB0cnVlICovKTtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2ggYSB3YXRjaGVyIGludG8gdGhlIHdhdGNoZXIgcXVldWUuXG4gKiBKb2JzIHdpdGggZHVwbGljYXRlIElEcyB3aWxsIGJlIHNraXBwZWQgdW5sZXNzIGl0J3NcbiAqIHB1c2hlZCB3aGVuIHRoZSBxdWV1ZSBpcyBiZWluZyBmbHVzaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZVdhdGNoZXIgKHdhdGNoZXIpIHtcbiAgdmFyIGlkID0gd2F0Y2hlci5pZDtcbiAgaWYgKGhhc1tpZF0gPT0gbnVsbCkge1xuICAgIGhhc1tpZF0gPSB0cnVlO1xuICAgIGlmICghZmx1c2hpbmcpIHtcbiAgICAgIHF1ZXVlLnB1c2god2F0Y2hlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGFscmVhZHkgZmx1c2hpbmcsIHNwbGljZSB0aGUgd2F0Y2hlciBiYXNlZCBvbiBpdHMgaWRcbiAgICAgIC8vIGlmIGFscmVhZHkgcGFzdCBpdHMgaWQsIGl0IHdpbGwgYmUgcnVuIG5leHQgaW1tZWRpYXRlbHkuXG4gICAgICB2YXIgaSA9IHF1ZXVlLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaSA+IGluZGV4ICYmIHF1ZXVlW2ldLmlkID4gd2F0Y2hlci5pZCkge1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgICBxdWV1ZS5zcGxpY2UoaSArIDEsIDAsIHdhdGNoZXIpO1xuICAgIH1cbiAgICAvLyBxdWV1ZSB0aGUgZmx1c2hcbiAgICBpZiAoIXdhaXRpbmcpIHtcbiAgICAgIHdhaXRpbmcgPSB0cnVlO1xuICAgICAgbmV4dFRpY2soZmx1c2hTY2hlZHVsZXJRdWV1ZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDIgPSAwO1xuXG4vKipcbiAqIEEgd2F0Y2hlciBwYXJzZXMgYW4gZXhwcmVzc2lvbiwgY29sbGVjdHMgZGVwZW5kZW5jaWVzLFxuICogYW5kIGZpcmVzIGNhbGxiYWNrIHdoZW4gdGhlIGV4cHJlc3Npb24gdmFsdWUgY2hhbmdlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgYm90aCB0aGUgJHdhdGNoKCkgYXBpIGFuZCBkaXJlY3RpdmVzLlxuICovXG52YXIgV2F0Y2hlciA9IGZ1bmN0aW9uIFdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JGbixcbiAgY2IsXG4gIG9wdGlvbnNcbikge1xuICB0aGlzLnZtID0gdm07XG4gIHZtLl93YXRjaGVycy5wdXNoKHRoaXMpO1xuICAvLyBvcHRpb25zXG4gIGlmIChvcHRpb25zKSB7XG4gICAgdGhpcy5kZWVwID0gISFvcHRpb25zLmRlZXA7XG4gICAgdGhpcy51c2VyID0gISFvcHRpb25zLnVzZXI7XG4gICAgdGhpcy5sYXp5ID0gISFvcHRpb25zLmxhenk7XG4gICAgdGhpcy5zeW5jID0gISFvcHRpb25zLnN5bmM7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5kZWVwID0gdGhpcy51c2VyID0gdGhpcy5sYXp5ID0gdGhpcy5zeW5jID0gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYiA9IGNiO1xuICB0aGlzLmlkID0gKyt1aWQkMjsgLy8gdWlkIGZvciBiYXRjaGluZ1xuICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIHRoaXMuZGlydHkgPSB0aGlzLmxhenk7IC8vIGZvciBsYXp5IHdhdGNoZXJzXG4gIHRoaXMuZGVwcyA9IFtdO1xuICB0aGlzLm5ld0RlcHMgPSBbXTtcbiAgdGhpcy5kZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0aGlzLm5ld0RlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMuZXhwcmVzc2lvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICA/IGV4cE9yRm4udG9TdHJpbmcoKVxuICAgIDogJyc7XG4gIC8vIHBhcnNlIGV4cHJlc3Npb24gZm9yIGdldHRlclxuICBpZiAodHlwZW9mIGV4cE9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLmdldHRlciA9IGV4cE9yRm47XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBwYXJzZVBhdGgoZXhwT3JGbik7XG4gICAgaWYgKCF0aGlzLmdldHRlcikge1xuICAgICAgdGhpcy5nZXR0ZXIgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJGYWlsZWQgd2F0Y2hpbmcgcGF0aDogXFxcIlwiICsgZXhwT3JGbiArIFwiXFxcIiBcIiArXG4gICAgICAgICdXYXRjaGVyIG9ubHkgYWNjZXB0cyBzaW1wbGUgZG90LWRlbGltaXRlZCBwYXRocy4gJyArXG4gICAgICAgICdGb3IgZnVsbCBjb250cm9sLCB1c2UgYSBmdW5jdGlvbiBpbnN0ZWFkLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0aGlzLnZhbHVlID0gdGhpcy5sYXp5XG4gICAgPyB1bmRlZmluZWRcbiAgICA6IHRoaXMuZ2V0KCk7XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIHRoZSBnZXR0ZXIsIGFuZCByZS1jb2xsZWN0IGRlcGVuZGVuY2llcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0ICgpIHtcbiAgcHVzaFRhcmdldCh0aGlzKTtcbiAgdmFyIHZhbHVlO1xuICB2YXIgdm0gPSB0aGlzLnZtO1xuICBpZiAodGhpcy51c2VyKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbHVlID0gdGhpcy5nZXR0ZXIuY2FsbCh2bSwgdm0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCAoXCJnZXR0ZXIgZm9yIHdhdGNoZXIgXFxcIlwiICsgKHRoaXMuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IHRoaXMuZ2V0dGVyLmNhbGwodm0sIHZtKTtcbiAgfVxuICAvLyBcInRvdWNoXCIgZXZlcnkgcHJvcGVydHkgc28gdGhleSBhcmUgYWxsIHRyYWNrZWQgYXNcbiAgLy8gZGVwZW5kZW5jaWVzIGZvciBkZWVwIHdhdGNoaW5nXG4gIGlmICh0aGlzLmRlZXApIHtcbiAgICB0cmF2ZXJzZSh2YWx1ZSk7XG4gIH1cbiAgcG9wVGFyZ2V0KCk7XG4gIHRoaXMuY2xlYW51cERlcHMoKTtcbiAgcmV0dXJuIHZhbHVlXG59O1xuXG4vKipcbiAqIEFkZCBhIGRlcGVuZGVuY3kgdG8gdGhpcyBkaXJlY3RpdmUuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmFkZERlcCA9IGZ1bmN0aW9uIGFkZERlcCAoZGVwKSB7XG4gIHZhciBpZCA9IGRlcC5pZDtcbiAgaWYgKCF0aGlzLm5ld0RlcElkcy5oYXMoaWQpKSB7XG4gICAgdGhpcy5uZXdEZXBJZHMuYWRkKGlkKTtcbiAgICB0aGlzLm5ld0RlcHMucHVzaChkZXApO1xuICAgIGlmICghdGhpcy5kZXBJZHMuaGFzKGlkKSkge1xuICAgICAgZGVwLmFkZFN1Yih0aGlzKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ2xlYW4gdXAgZm9yIGRlcGVuZGVuY3kgY29sbGVjdGlvbi5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuY2xlYW51cERlcHMgPSBmdW5jdGlvbiBjbGVhbnVwRGVwcyAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIGRlcCA9IHRoaXMkMS5kZXBzW2ldO1xuICAgIGlmICghdGhpcyQxLm5ld0RlcElkcy5oYXMoZGVwLmlkKSkge1xuICAgICAgZGVwLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1cbiAgfVxuICB2YXIgdG1wID0gdGhpcy5kZXBJZHM7XG4gIHRoaXMuZGVwSWRzID0gdGhpcy5uZXdEZXBJZHM7XG4gIHRoaXMubmV3RGVwSWRzID0gdG1wO1xuICB0aGlzLm5ld0RlcElkcy5jbGVhcigpO1xuICB0bXAgPSB0aGlzLmRlcHM7XG4gIHRoaXMuZGVwcyA9IHRoaXMubmV3RGVwcztcbiAgdGhpcy5uZXdEZXBzID0gdG1wO1xuICB0aGlzLm5ld0RlcHMubGVuZ3RoID0gMDtcbn07XG5cbi8qKlxuICogU3Vic2NyaWJlciBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCB3aGVuIGEgZGVwZW5kZW5jeSBjaGFuZ2VzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodGhpcy5sYXp5KSB7XG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gIH0gZWxzZSBpZiAodGhpcy5zeW5jKSB7XG4gICAgdGhpcy5ydW4oKTtcbiAgfSBlbHNlIHtcbiAgICBxdWV1ZVdhdGNoZXIodGhpcyk7XG4gIH1cbn07XG5cbi8qKlxuICogU2NoZWR1bGVyIGpvYiBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiBydW4gKCkge1xuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldCgpO1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB0aGlzLnZhbHVlIHx8XG4gICAgICAvLyBEZWVwIHdhdGNoZXJzIGFuZCB3YXRjaGVycyBvbiBPYmplY3QvQXJyYXlzIHNob3VsZCBmaXJlIGV2ZW5cbiAgICAgIC8vIHdoZW4gdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCBiZWNhdXNlIHRoZSB2YWx1ZSBtYXlcbiAgICAgIC8vIGhhdmUgbXV0YXRlZC5cbiAgICAgIGlzT2JqZWN0KHZhbHVlKSB8fFxuICAgICAgdGhpcy5kZWVwXG4gICAgKSB7XG4gICAgICAvLyBzZXQgbmV3IHZhbHVlXG4gICAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdGhpcy52bSwgKFwiY2FsbGJhY2sgZm9yIHdhdGNoZXIgXFxcIlwiICsgKHRoaXMuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIHZhbHVlIG9mIHRoZSB3YXRjaGVyLlxuICogVGhpcyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdhdGNoZXJzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIGV2YWx1YXRlICgpIHtcbiAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gIHRoaXMuZGlydHkgPSBmYWxzZTtcbn07XG5cbi8qKlxuICogRGVwZW5kIG9uIGFsbCBkZXBzIGNvbGxlY3RlZCBieSB0aGlzIHdhdGNoZXIuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdGhpcyQxLmRlcHNbaV0uZGVwZW5kKCk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlIHNlbGYgZnJvbSBhbGwgZGVwZW5kZW5jaWVzJyBzdWJzY3JpYmVyIGxpc3QuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnRlYXJkb3duID0gZnVuY3Rpb24gdGVhcmRvd24gKCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gdm0ncyB3YXRjaGVyIGxpc3RcbiAgICAvLyB0aGlzIGlzIGEgc29tZXdoYXQgZXhwZW5zaXZlIG9wZXJhdGlvbiBzbyB3ZSBza2lwIGl0XG4gICAgLy8gaWYgdGhlIHZtIGlzIGJlaW5nIGRlc3Ryb3llZC5cbiAgICBpZiAoIXRoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgIHJlbW92ZSh0aGlzLnZtLl93YXRjaGVycywgdGhpcyk7XG4gICAgfVxuICAgIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzJDEuZGVwc1tpXS5yZW1vdmVTdWIodGhpcyQxKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBhbiBvYmplY3QgdG8gZXZva2UgYWxsIGNvbnZlcnRlZFxuICogZ2V0dGVycywgc28gdGhhdCBldmVyeSBuZXN0ZWQgcHJvcGVydHkgaW5zaWRlIHRoZSBvYmplY3RcbiAqIGlzIGNvbGxlY3RlZCBhcyBhIFwiZGVlcFwiIGRlcGVuZGVuY3kuXG4gKi9cbnZhciBzZWVuT2JqZWN0cyA9IG5ldyBfU2V0KCk7XG5mdW5jdGlvbiB0cmF2ZXJzZSAodmFsKSB7XG4gIHNlZW5PYmplY3RzLmNsZWFyKCk7XG4gIF90cmF2ZXJzZSh2YWwsIHNlZW5PYmplY3RzKTtcbn1cblxuZnVuY3Rpb24gX3RyYXZlcnNlICh2YWwsIHNlZW4pIHtcbiAgdmFyIGksIGtleXM7XG4gIHZhciBpc0EgPSBBcnJheS5pc0FycmF5KHZhbCk7XG4gIGlmICgoIWlzQSAmJiAhaXNPYmplY3QodmFsKSkgfHwgIU9iamVjdC5pc0V4dGVuc2libGUodmFsKSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWwuX19vYl9fKSB7XG4gICAgdmFyIGRlcElkID0gdmFsLl9fb2JfXy5kZXAuaWQ7XG4gICAgaWYgKHNlZW4uaGFzKGRlcElkKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNlZW4uYWRkKGRlcElkKTtcbiAgfVxuICBpZiAoaXNBKSB7XG4gICAgaSA9IHZhbC5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2ldLCBzZWVuKTsgfVxuICB9IGVsc2Uge1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIGkgPSBrZXlzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxba2V5c1tpXV0sIHNlZW4pOyB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBub29wLFxuICBzZXQ6IG5vb3Bcbn07XG5cbmZ1bmN0aW9uIHByb3h5ICh0YXJnZXQsIHNvdXJjZUtleSwga2V5KSB7XG4gIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBmdW5jdGlvbiBwcm94eUdldHRlciAoKSB7XG4gICAgcmV0dXJuIHRoaXNbc291cmNlS2V5XVtrZXldXG4gIH07XG4gIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBmdW5jdGlvbiBwcm94eVNldHRlciAodmFsKSB7XG4gICAgdGhpc1tzb3VyY2VLZXldW2tleV0gPSB2YWw7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gaW5pdFN0YXRlICh2bSkge1xuICB2bS5fd2F0Y2hlcnMgPSBbXTtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucztcbiAgaWYgKG9wdHMucHJvcHMpIHsgaW5pdFByb3BzKHZtLCBvcHRzLnByb3BzKTsgfVxuICBpZiAob3B0cy5tZXRob2RzKSB7IGluaXRNZXRob2RzKHZtLCBvcHRzLm1ldGhvZHMpOyB9XG4gIGlmIChvcHRzLmRhdGEpIHtcbiAgICBpbml0RGF0YSh2bSk7XG4gIH0gZWxzZSB7XG4gICAgb2JzZXJ2ZSh2bS5fZGF0YSA9IHt9LCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xuICB9XG4gIGlmIChvcHRzLmNvbXB1dGVkKSB7IGluaXRDb21wdXRlZCh2bSwgb3B0cy5jb21wdXRlZCk7IH1cbiAgaWYgKG9wdHMud2F0Y2gpIHsgaW5pdFdhdGNoKHZtLCBvcHRzLndhdGNoKTsgfVxufVxuXG52YXIgaXNSZXNlcnZlZFByb3AgPSB7XG4gIGtleTogMSxcbiAgcmVmOiAxLFxuICBzbG90OiAxXG59O1xuXG5mdW5jdGlvbiBpbml0UHJvcHMgKHZtLCBwcm9wc09wdGlvbnMpIHtcbiAgdmFyIHByb3BzRGF0YSA9IHZtLiRvcHRpb25zLnByb3BzRGF0YSB8fCB7fTtcbiAgdmFyIHByb3BzID0gdm0uX3Byb3BzID0ge307XG4gIC8vIGNhY2hlIHByb3Aga2V5cyBzbyB0aGF0IGZ1dHVyZSBwcm9wcyB1cGRhdGVzIGNhbiBpdGVyYXRlIHVzaW5nIEFycmF5XG4gIC8vIGluc3RlYWQgb2YgZHluYW1pYyBvYmplY3Qga2V5IGVudW1lcmF0aW9uLlxuICB2YXIga2V5cyA9IHZtLiRvcHRpb25zLl9wcm9wS2V5cyA9IFtdO1xuICB2YXIgaXNSb290ID0gIXZtLiRwYXJlbnQ7XG4gIC8vIHJvb3QgaW5zdGFuY2UgcHJvcHMgc2hvdWxkIGJlIGNvbnZlcnRlZFxuICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSBpc1Jvb3Q7XG4gIHZhciBsb29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAga2V5cy5wdXNoKGtleSk7XG4gICAgdmFyIHZhbHVlID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcHNPcHRpb25zLCBwcm9wc0RhdGEsIHZtKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoaXNSZXNlcnZlZFByb3Bba2V5XSB8fCBjb25maWcuaXNSZXNlcnZlZEF0dHIoa2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIlxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBhbmQgY2Fubm90IGJlIHVzZWQgYXMgY29tcG9uZW50IHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodm0uJHBhcmVudCAmJiAhb2JzZXJ2ZXJTdGF0ZS5pc1NldHRpbmdQcm9wcykge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11dGF0aW5nIGEgcHJvcCBkaXJlY3RseSBzaW5jZSB0aGUgdmFsdWUgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBcIm92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiSW5zdGVhZCwgdXNlIGEgZGF0YSBvciBjb21wdXRlZCBwcm9wZXJ0eSBiYXNlZCBvbiB0aGUgcHJvcCdzIFwiICtcbiAgICAgICAgICAgIFwidmFsdWUuIFByb3AgYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIC8vIHN0YXRpYyBwcm9wcyBhcmUgYWxyZWFkeSBwcm94aWVkIG9uIHRoZSBjb21wb25lbnQncyBwcm90b3R5cGVcbiAgICAvLyBkdXJpbmcgVnVlLmV4dGVuZCgpLiBXZSBvbmx5IG5lZWQgdG8gcHJveHkgcHJvcHMgZGVmaW5lZCBhdFxuICAgIC8vIGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAoIShrZXkgaW4gdm0pKSB7XG4gICAgICBwcm94eSh2bSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIga2V5IGluIHByb3BzT3B0aW9ucykgbG9vcCgga2V5ICk7XG4gIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhICh2bSkge1xuICB2YXIgZGF0YSA9IHZtLiRvcHRpb25zLmRhdGE7XG4gIGRhdGEgPSB2bS5fZGF0YSA9IHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nXG4gICAgPyBnZXREYXRhKGRhdGEsIHZtKVxuICAgIDogZGF0YSB8fCB7fTtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgZGF0YSA9IHt9O1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdkYXRhIGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdDpcXG4nICtcbiAgICAgICdodHRwczovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9jb21wb25lbnRzLmh0bWwjZGF0YS1NdXN0LUJlLWEtRnVuY3Rpb24nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHByb3h5IGRhdGEgb24gaW5zdGFuY2VcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXlzW2ldKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIlRoZSBkYXRhIHByb3BlcnR5IFxcXCJcIiArIChrZXlzW2ldKSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlY2xhcmVkIGFzIGEgcHJvcC4gXCIgK1xuICAgICAgICBcIlVzZSBwcm9wIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5cIixcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghaXNSZXNlcnZlZChrZXlzW2ldKSkge1xuICAgICAgcHJveHkodm0sIFwiX2RhdGFcIiwga2V5c1tpXSk7XG4gICAgfVxuICB9XG4gIC8vIG9ic2VydmUgZGF0YVxuICBvYnNlcnZlKGRhdGEsIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG59XG5cbmZ1bmN0aW9uIGdldERhdGEgKGRhdGEsIHZtKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRhdGEuY2FsbCh2bSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcImRhdGEoKVwiKTtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG52YXIgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyA9IHsgbGF6eTogdHJ1ZSB9O1xuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQgKHZtLCBjb21wdXRlZCkge1xuICB2YXIgd2F0Y2hlcnMgPSB2bS5fY29tcHV0ZWRXYXRjaGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4gICAgdmFyIHVzZXJEZWYgPSBjb21wdXRlZFtrZXldO1xuICAgIHZhciBnZXR0ZXIgPSB0eXBlb2YgdXNlckRlZiA9PT0gJ2Z1bmN0aW9uJyA/IHVzZXJEZWYgOiB1c2VyRGVmLmdldDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiTm8gZ2V0dGVyIGZ1bmN0aW9uIGhhcyBiZWVuIGRlZmluZWQgZm9yIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIi5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgICAgZ2V0dGVyID0gbm9vcDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gY3JlYXRlIGludGVybmFsIHdhdGNoZXIgZm9yIHRoZSBjb21wdXRlZCBwcm9wZXJ0eS5cbiAgICB3YXRjaGVyc1trZXldID0gbmV3IFdhdGNoZXIodm0sIGdldHRlciwgbm9vcCwgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyk7XG5cbiAgICAvLyBjb21wb25lbnQtZGVmaW5lZCBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBhbHJlYWR5IGRlZmluZWQgb24gdGhlXG4gICAgLy8gY29tcG9uZW50IHByb3RvdHlwZS4gV2Ugb25seSBuZWVkIHRvIGRlZmluZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGRlZmluZWRcbiAgICAvLyBhdCBpbnN0YW50aWF0aW9uIGhlcmUuXG4gICAgaWYgKCEoa2V5IGluIHZtKSkge1xuICAgICAgZGVmaW5lQ29tcHV0ZWQodm0sIGtleSwgdXNlckRlZik7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoa2V5IGluIHZtLiRkYXRhKSB7XG4gICAgICAgIHdhcm4oKFwiVGhlIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZGF0YS5cIiksIHZtKTtcbiAgICAgIH0gZWxzZSBpZiAodm0uJG9wdGlvbnMucHJvcHMgJiYga2V5IGluIHZtLiRvcHRpb25zLnByb3BzKSB7XG4gICAgICAgIHdhcm4oKFwiVGhlIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlZmluZWQgYXMgYSBwcm9wLlwiKSwgdm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVDb21wdXRlZCAodGFyZ2V0LCBrZXksIHVzZXJEZWYpIHtcbiAgaWYgKHR5cGVvZiB1c2VyRGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSk7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IG5vb3A7XG4gIH0gZWxzZSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IHVzZXJEZWYuZ2V0XG4gICAgICA/IHVzZXJEZWYuY2FjaGUgIT09IGZhbHNlXG4gICAgICAgID8gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KVxuICAgICAgICA6IHVzZXJEZWYuZ2V0XG4gICAgICA6IG5vb3A7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IHVzZXJEZWYuc2V0XG4gICAgICA/IHVzZXJEZWYuc2V0XG4gICAgICA6IG5vb3A7XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wdXRlZEdldHRlciAoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbiBjb21wdXRlZEdldHRlciAoKSB7XG4gICAgdmFyIHdhdGNoZXIgPSB0aGlzLl9jb21wdXRlZFdhdGNoZXJzICYmIHRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNba2V5XTtcbiAgICBpZiAod2F0Y2hlcikge1xuICAgICAgaWYgKHdhdGNoZXIuZGlydHkpIHtcbiAgICAgICAgd2F0Y2hlci5ldmFsdWF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgd2F0Y2hlci5kZXBlbmQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3YXRjaGVyLnZhbHVlXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRNZXRob2RzICh2bSwgbWV0aG9kcykge1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHtcbiAgICB2bVtrZXldID0gbWV0aG9kc1trZXldID09IG51bGwgPyBub29wIDogYmluZChtZXRob2RzW2tleV0sIHZtKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKG1ldGhvZHNba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbiB1bmRlZmluZWQgdmFsdWUgaW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uLiBcIiArXG4gICAgICAgICAgXCJEaWQgeW91IHJlZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVjdGx5P1wiLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwibWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBwcm9wLlwiKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0V2F0Y2ggKHZtLCB3YXRjaCkge1xuICBmb3IgKHZhciBrZXkgaW4gd2F0Y2gpIHtcbiAgICB2YXIgaGFuZGxlciA9IHdhdGNoW2tleV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXJbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXIpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVXYXRjaGVyICh2bSwga2V5LCBoYW5kbGVyKSB7XG4gIHZhciBvcHRpb25zO1xuICBpZiAoaXNQbGFpbk9iamVjdChoYW5kbGVyKSkge1xuICAgIG9wdGlvbnMgPSBoYW5kbGVyO1xuICAgIGhhbmRsZXIgPSBoYW5kbGVyLmhhbmRsZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnc3RyaW5nJykge1xuICAgIGhhbmRsZXIgPSB2bVtoYW5kbGVyXTtcbiAgfVxuICB2bS4kd2F0Y2goa2V5LCBoYW5kbGVyLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAoVnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNsYXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVjdCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHByb3BzRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZGF0YURlZi5zZXQgPSBmdW5jdGlvbiAobmV3RGF0YSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0F2b2lkIHJlcGxhY2luZyBpbnN0YW5jZSByb290ICRkYXRhLiAnICtcbiAgICAgICAgJ1VzZSBuZXN0ZWQgZGF0YSBwcm9wZXJ0aWVzIGluc3RlYWQuJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9O1xuICAgIHByb3BzRGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXCIkcHJvcHMgaXMgcmVhZG9ubHkuXCIsIHRoaXMpO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckZGF0YScsIGRhdGFEZWYpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRwcm9wcycsIHByb3BzRGVmKTtcblxuICBWdWUucHJvdG90eXBlLiRzZXQgPSBzZXQ7XG4gIFZ1ZS5wcm90b3R5cGUuJGRlbGV0ZSA9IGRlbDtcblxuICBWdWUucHJvdG90eXBlLiR3YXRjaCA9IGZ1bmN0aW9uIChcbiAgICBleHBPckZuLFxuICAgIGNiLFxuICAgIG9wdGlvbnNcbiAgKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLnVzZXIgPSB0cnVlO1xuICAgIHZhciB3YXRjaGVyID0gbmV3IFdhdGNoZXIodm0sIGV4cE9yRm4sIGNiLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5pbW1lZGlhdGUpIHtcbiAgICAgIGNiLmNhbGwodm0sIHdhdGNoZXIudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gdW53YXRjaEZuICgpIHtcbiAgICAgIHdhdGNoZXIudGVhcmRvd24oKTtcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UHJvdmlkZSAodm0pIHtcbiAgdmFyIHByb3ZpZGUgPSB2bS4kb3B0aW9ucy5wcm92aWRlO1xuICBpZiAocHJvdmlkZSkge1xuICAgIHZtLl9wcm92aWRlZCA9IHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHByb3ZpZGUuY2FsbCh2bSlcbiAgICAgIDogcHJvdmlkZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0SW5qZWN0aW9ucyAodm0pIHtcbiAgdmFyIHJlc3VsdCA9IHJlc29sdmVJbmplY3Qodm0uJG9wdGlvbnMuaW5qZWN0LCB2bSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYW4gaW5qZWN0ZWQgdmFsdWUgZGlyZWN0bHkgc2luY2UgdGhlIGNoYW5nZXMgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBcIm92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwcm92aWRlZCBjb21wb25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAgICAgICAgICAgXCJpbmplY3Rpb24gYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0W2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVJbmplY3QgKGluamVjdCwgdm0pIHtcbiAgaWYgKGluamVjdCkge1xuICAgIC8vIGluamVjdCBpcyA6YW55IGJlY2F1c2UgZmxvdyBpcyBub3Qgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgY2FjaGVkXG4gICAgLy8gaXNBcnJheSBoZXJlXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGluamVjdCk7XG4gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIGtleXMgPSBpc0FycmF5XG4gICAgICA/IGluamVjdFxuICAgICAgOiBoYXNTeW1ib2xcbiAgICAgICAgPyBSZWZsZWN0Lm93bktleXMoaW5qZWN0KVxuICAgICAgICA6IE9iamVjdC5rZXlzKGluamVjdCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIHByb3ZpZGVLZXkgPSBpc0FycmF5ID8ga2V5IDogaW5qZWN0W2tleV07XG4gICAgICB2YXIgc291cmNlID0gdm07XG4gICAgICB3aGlsZSAoc291cmNlKSB7XG4gICAgICAgIGlmIChzb3VyY2UuX3Byb3ZpZGVkICYmIHByb3ZpZGVLZXkgaW4gc291cmNlLl9wcm92aWRlZCkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlLl9wcm92aWRlZFtwcm92aWRlS2V5XTtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZSA9IHNvdXJjZS4kcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQgKFxuICBDdG9yLFxuICBwcm9wc0RhdGEsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuXG4pIHtcbiAgdmFyIHByb3BzID0ge307XG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzRGVmKHByb3BPcHRpb25zKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BPcHRpb25zLCBwcm9wc0RhdGEgfHwge30pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNEZWYoZGF0YS5hdHRycykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5hdHRycyk7IH1cbiAgICBpZiAoaXNEZWYoZGF0YS5wcm9wcykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5wcm9wcyk7IH1cbiAgfVxuICAvLyBlbnN1cmUgdGhlIGNyZWF0ZUVsZW1lbnQgZnVuY3Rpb24gaW4gZnVuY3Rpb25hbCBjb21wb25lbnRzXG4gIC8vIGdldHMgYSB1bmlxdWUgY29udGV4dCAtIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0IG5hbWVkIHNsb3QgY2hlY2tcbiAgdmFyIF9jb250ZXh0ID0gT2JqZWN0LmNyZWF0ZShjb250ZXh0KTtcbiAgdmFyIGggPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudChfY29udGV4dCwgYSwgYiwgYywgZCwgdHJ1ZSk7IH07XG4gIHZhciB2bm9kZSA9IEN0b3Iub3B0aW9ucy5yZW5kZXIuY2FsbChudWxsLCBoLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBwcm9wczogcHJvcHMsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIHBhcmVudDogY29udGV4dCxcbiAgICBsaXN0ZW5lcnM6IGRhdGEub24gfHwge30sXG4gICAgaW5qZWN0aW9uczogcmVzb2x2ZUluamVjdChDdG9yLm9wdGlvbnMuaW5qZWN0LCBjb250ZXh0KSxcbiAgICBzbG90czogZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVzb2x2ZVNsb3RzKGNoaWxkcmVuLCBjb250ZXh0KTsgfVxuICB9KTtcbiAgaWYgKHZub2RlIGluc3RhbmNlb2YgVk5vZGUpIHtcbiAgICB2bm9kZS5mdW5jdGlvbmFsQ29udGV4dCA9IGNvbnRleHQ7XG4gICAgdm5vZGUuZnVuY3Rpb25hbE9wdGlvbnMgPSBDdG9yLm9wdGlvbnM7XG4gICAgaWYgKGRhdGEuc2xvdCkge1xuICAgICAgKHZub2RlLmRhdGEgfHwgKHZub2RlLmRhdGEgPSB7fSkpLnNsb3QgPSBkYXRhLnNsb3Q7XG4gICAgfVxuICB9XG4gIHJldHVybiB2bm9kZVxufVxuXG5mdW5jdGlvbiBtZXJnZVByb3BzICh0bywgZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuICAgIHRvW2NhbWVsaXplKGtleSldID0gZnJvbVtrZXldO1xuICB9XG59XG5cbi8qICAqL1xuXG4vLyBob29rcyB0byBiZSBpbnZva2VkIG9uIGNvbXBvbmVudCBWTm9kZXMgZHVyaW5nIHBhdGNoXG52YXIgY29tcG9uZW50Vk5vZGVIb29rcyA9IHtcbiAgaW5pdDogZnVuY3Rpb24gaW5pdCAoXG4gICAgdm5vZGUsXG4gICAgaHlkcmF0aW5nLFxuICAgIHBhcmVudEVsbSxcbiAgICByZWZFbG1cbiAgKSB7XG4gICAgaWYgKCF2bm9kZS5jb21wb25lbnRJbnN0YW5jZSB8fCB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIHZhciBjaGlsZCA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VGb3JWbm9kZShcbiAgICAgICAgdm5vZGUsXG4gICAgICAgIGFjdGl2ZUluc3RhbmNlLFxuICAgICAgICBwYXJlbnRFbG0sXG4gICAgICAgIHJlZkVsbVxuICAgICAgKTtcbiAgICAgIGNoaWxkLiRtb3VudChoeWRyYXRpbmcgPyB2bm9kZS5lbG0gOiB1bmRlZmluZWQsIGh5ZHJhdGluZyk7XG4gICAgfSBlbHNlIGlmICh2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgLy8ga2VwdC1hbGl2ZSBjb21wb25lbnRzLCB0cmVhdCBhcyBhIHBhdGNoXG4gICAgICB2YXIgbW91bnRlZE5vZGUgPSB2bm9kZTsgLy8gd29yayBhcm91bmQgZmxvd1xuICAgICAgY29tcG9uZW50Vk5vZGVIb29rcy5wcmVwYXRjaChtb3VudGVkTm9kZSwgbW91bnRlZE5vZGUpO1xuICAgIH1cbiAgfSxcblxuICBwcmVwYXRjaDogZnVuY3Rpb24gcHJlcGF0Y2ggKG9sZFZub2RlLCB2bm9kZSkge1xuICAgIHZhciBvcHRpb25zID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIHVwZGF0ZUNoaWxkQ29tcG9uZW50KFxuICAgICAgY2hpbGQsXG4gICAgICBvcHRpb25zLnByb3BzRGF0YSwgLy8gdXBkYXRlZCBwcm9wc1xuICAgICAgb3B0aW9ucy5saXN0ZW5lcnMsIC8vIHVwZGF0ZWQgbGlzdGVuZXJzXG4gICAgICB2bm9kZSwgLy8gbmV3IHBhcmVudCB2bm9kZVxuICAgICAgb3B0aW9ucy5jaGlsZHJlbiAvLyBuZXcgY2hpbGRyZW5cbiAgICApO1xuICB9LFxuXG4gIGluc2VydDogZnVuY3Rpb24gaW5zZXJ0ICh2bm9kZSkge1xuICAgIHZhciBjb250ZXh0ID0gdm5vZGUuY29udGV4dDtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQpIHtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQgPSB0cnVlO1xuICAgICAgY2FsbEhvb2soY29tcG9uZW50SW5zdGFuY2UsICdtb3VudGVkJyk7XG4gICAgfVxuICAgIGlmICh2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgaWYgKGNvbnRleHQuX2lzTW91bnRlZCkge1xuICAgICAgICAvLyB2dWUtcm91dGVyIzEyMTJcbiAgICAgICAgLy8gRHVyaW5nIHVwZGF0ZXMsIGEga2VwdC1hbGl2ZSBjb21wb25lbnQncyBjaGlsZCBjb21wb25lbnRzIG1heVxuICAgICAgICAvLyBjaGFuZ2UsIHNvIGRpcmVjdGx5IHdhbGtpbmcgdGhlIHRyZWUgaGVyZSBtYXkgY2FsbCBhY3RpdmF0ZWQgaG9va3NcbiAgICAgICAgLy8gb24gaW5jb3JyZWN0IGNoaWxkcmVuLiBJbnN0ZWFkIHdlIHB1c2ggdGhlbSBpbnRvIGEgcXVldWUgd2hpY2ggd2lsbFxuICAgICAgICAvLyBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIHdob2xlIHBhdGNoIHByb2Nlc3MgZW5kZWQuXG4gICAgICAgIHF1ZXVlQWN0aXZhdGVkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgaWYgKCF2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgICBjb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgaG9va3NUb01lcmdlID0gT2JqZWN0LmtleXMoY29tcG9uZW50Vk5vZGVIb29rcyk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAoXG4gIEN0b3IsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuLFxuICB0YWdcbikge1xuICBpZiAoaXNVbmRlZihDdG9yKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGJhc2VDdG9yID0gY29udGV4dC4kb3B0aW9ucy5fYmFzZTtcblxuICAvLyBwbGFpbiBvcHRpb25zIG9iamVjdDogdHVybiBpdCBpbnRvIGEgY29uc3RydWN0b3JcbiAgaWYgKGlzT2JqZWN0KEN0b3IpKSB7XG4gICAgQ3RvciA9IGJhc2VDdG9yLmV4dGVuZChDdG9yKTtcbiAgfVxuXG4gIC8vIGlmIGF0IHRoaXMgc3RhZ2UgaXQncyBub3QgYSBjb25zdHJ1Y3RvciBvciBhbiBhc3luYyBjb21wb25lbnQgZmFjdG9yeSxcbiAgLy8gcmVqZWN0LlxuICBpZiAodHlwZW9mIEN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJJbnZhbGlkIENvbXBvbmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAgIEN0b3IgPSByZXNvbHZlQXN5bmNDb21wb25lbnQoQ3RvciwgYmFzZUN0b3IsIGNvbnRleHQpO1xuICAgIGlmIChDdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIHJldHVybiBub3RoaW5nIGlmIHRoaXMgaXMgaW5kZWVkIGFuIGFzeW5jIGNvbXBvbmVudFxuICAgICAgLy8gd2FpdCBmb3IgdGhlIGNhbGxiYWNrIHRvIHRyaWdnZXIgcGFyZW50IHVwZGF0ZS5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIC8vIHJlc29sdmUgY29uc3RydWN0b3Igb3B0aW9ucyBpbiBjYXNlIGdsb2JhbCBtaXhpbnMgYXJlIGFwcGxpZWQgYWZ0ZXJcbiAgLy8gY29tcG9uZW50IGNvbnN0cnVjdG9yIGNyZWF0aW9uXG4gIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvcik7XG5cbiAgZGF0YSA9IGRhdGEgfHwge307XG5cbiAgLy8gdHJhbnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGRhdGEgaW50byBwcm9wcyAmIGV2ZW50c1xuICBpZiAoaXNEZWYoZGF0YS5tb2RlbCkpIHtcbiAgICB0cmFuc2Zvcm1Nb2RlbChDdG9yLm9wdGlvbnMsIGRhdGEpO1xuICB9XG5cbiAgLy8gZXh0cmFjdCBwcm9wc1xuICB2YXIgcHJvcHNEYXRhID0gZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0YShkYXRhLCBDdG9yLCB0YWcpO1xuXG4gIC8vIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmZ1bmN0aW9uYWwpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQoQ3RvciwgcHJvcHNEYXRhLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbilcbiAgfVxuXG4gIC8vIGV4dHJhY3QgbGlzdGVuZXJzLCBzaW5jZSB0aGVzZSBuZWVkcyB0byBiZSB0cmVhdGVkIGFzXG4gIC8vIGNoaWxkIGNvbXBvbmVudCBsaXN0ZW5lcnMgaW5zdGVhZCBvZiBET00gbGlzdGVuZXJzXG4gIHZhciBsaXN0ZW5lcnMgPSBkYXRhLm9uO1xuICAvLyByZXBsYWNlIHdpdGggbGlzdGVuZXJzIHdpdGggLm5hdGl2ZSBtb2RpZmllclxuICBkYXRhLm9uID0gZGF0YS5uYXRpdmVPbjtcblxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5hYnN0cmFjdCkpIHtcbiAgICAvLyBhYnN0cmFjdCBjb21wb25lbnRzIGRvIG5vdCBrZWVwIGFueXRoaW5nXG4gICAgLy8gb3RoZXIgdGhhbiBwcm9wcyAmIGxpc3RlbmVyc1xuICAgIGRhdGEgPSB7fTtcbiAgfVxuXG4gIC8vIG1lcmdlIGNvbXBvbmVudCBtYW5hZ2VtZW50IGhvb2tzIG9udG8gdGhlIHBsYWNlaG9sZGVyIG5vZGVcbiAgbWVyZ2VIb29rcyhkYXRhKTtcblxuICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciB2bm9kZVxuICB2YXIgbmFtZSA9IEN0b3Iub3B0aW9ucy5uYW1lIHx8IHRhZztcbiAgdmFyIHZub2RlID0gbmV3IFZOb2RlKFxuICAgIChcInZ1ZS1jb21wb25lbnQtXCIgKyAoQ3Rvci5jaWQpICsgKG5hbWUgPyAoXCItXCIgKyBuYW1lKSA6ICcnKSksXG4gICAgZGF0YSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dCxcbiAgICB7IEN0b3I6IEN0b3IsIHByb3BzRGF0YTogcHJvcHNEYXRhLCBsaXN0ZW5lcnM6IGxpc3RlbmVycywgdGFnOiB0YWcsIGNoaWxkcmVuOiBjaGlsZHJlbiB9XG4gICk7XG4gIHJldHVybiB2bm9kZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlIChcbiAgdm5vZGUsIC8vIHdlIGtub3cgaXQncyBNb3VudGVkQ29tcG9uZW50Vk5vZGUgYnV0IGZsb3cgZG9lc24ndFxuICBwYXJlbnQsIC8vIGFjdGl2ZUluc3RhbmNlIGluIGxpZmVjeWNsZSBzdGF0ZVxuICBwYXJlbnRFbG0sXG4gIHJlZkVsbVxuKSB7XG4gIHZhciB2bm9kZUNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBfaXNDb21wb25lbnQ6IHRydWUsXG4gICAgcGFyZW50OiBwYXJlbnQsXG4gICAgcHJvcHNEYXRhOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMucHJvcHNEYXRhLFxuICAgIF9jb21wb25lbnRUYWc6IHZub2RlQ29tcG9uZW50T3B0aW9ucy50YWcsXG4gICAgX3BhcmVudFZub2RlOiB2bm9kZSxcbiAgICBfcGFyZW50TGlzdGVuZXJzOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMubGlzdGVuZXJzLFxuICAgIF9yZW5kZXJDaGlsZHJlbjogdm5vZGVDb21wb25lbnRPcHRpb25zLmNoaWxkcmVuLFxuICAgIF9wYXJlbnRFbG06IHBhcmVudEVsbSB8fCBudWxsLFxuICAgIF9yZWZFbG06IHJlZkVsbSB8fCBudWxsXG4gIH07XG4gIC8vIGNoZWNrIGlubGluZS10ZW1wbGF0ZSByZW5kZXIgZnVuY3Rpb25zXG4gIHZhciBpbmxpbmVUZW1wbGF0ZSA9IHZub2RlLmRhdGEuaW5saW5lVGVtcGxhdGU7XG4gIGlmIChpc0RlZihpbmxpbmVUZW1wbGF0ZSkpIHtcbiAgICBvcHRpb25zLnJlbmRlciA9IGlubGluZVRlbXBsYXRlLnJlbmRlcjtcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IGlubGluZVRlbXBsYXRlLnN0YXRpY1JlbmRlckZucztcbiAgfVxuICByZXR1cm4gbmV3IHZub2RlQ29tcG9uZW50T3B0aW9ucy5DdG9yKG9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIG1lcmdlSG9va3MgKGRhdGEpIHtcbiAgaWYgKCFkYXRhLmhvb2spIHtcbiAgICBkYXRhLmhvb2sgPSB7fTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzVG9NZXJnZS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBob29rc1RvTWVyZ2VbaV07XG4gICAgdmFyIGZyb21QYXJlbnQgPSBkYXRhLmhvb2tba2V5XTtcbiAgICB2YXIgb3VycyA9IGNvbXBvbmVudFZOb2RlSG9va3Nba2V5XTtcbiAgICBkYXRhLmhvb2tba2V5XSA9IGZyb21QYXJlbnQgPyBtZXJnZUhvb2skMShvdXJzLCBmcm9tUGFyZW50KSA6IG91cnM7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rJDEgKG9uZSwgdHdvKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgIG9uZShhLCBiLCBjLCBkKTtcbiAgICB0d28oYSwgYiwgYywgZCk7XG4gIH1cbn1cblxuLy8gdHJhbnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGluZm8gKHZhbHVlIGFuZCBjYWxsYmFjaykgaW50b1xuLy8gcHJvcCBhbmQgZXZlbnQgaGFuZGxlciByZXNwZWN0aXZlbHkuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Nb2RlbCAob3B0aW9ucywgZGF0YSkge1xuICB2YXIgcHJvcCA9IChvcHRpb25zLm1vZGVsICYmIG9wdGlvbnMubW9kZWwucHJvcCkgfHwgJ3ZhbHVlJztcbiAgdmFyIGV2ZW50ID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5ldmVudCkgfHwgJ2lucHV0JzsoZGF0YS5wcm9wcyB8fCAoZGF0YS5wcm9wcyA9IHt9KSlbcHJvcF0gPSBkYXRhLm1vZGVsLnZhbHVlO1xuICB2YXIgb24gPSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICBpZiAoaXNEZWYob25bZXZlbnRdKSkge1xuICAgIG9uW2V2ZW50XSA9IFtkYXRhLm1vZGVsLmNhbGxiYWNrXS5jb25jYXQob25bZXZlbnRdKTtcbiAgfSBlbHNlIHtcbiAgICBvbltldmVudF0gPSBkYXRhLm1vZGVsLmNhbGxiYWNrO1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgU0lNUExFX05PUk1BTElaRSA9IDE7XG52YXIgQUxXQVlTX05PUk1BTElaRSA9IDI7XG5cbi8vIHdyYXBwZXIgZnVuY3Rpb24gZm9yIHByb3ZpZGluZyBhIG1vcmUgZmxleGlibGUgaW50ZXJmYWNlXG4vLyB3aXRob3V0IGdldHRpbmcgeWVsbGVkIGF0IGJ5IGZsb3dcbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3JtYWxpemF0aW9uVHlwZSxcbiAgYWx3YXlzTm9ybWFsaXplXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgaXNQcmltaXRpdmUoZGF0YSkpIHtcbiAgICBub3JtYWxpemF0aW9uVHlwZSA9IGNoaWxkcmVuO1xuICAgIGNoaWxkcmVuID0gZGF0YTtcbiAgICBkYXRhID0gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChpc1RydWUoYWx3YXlzTm9ybWFsaXplKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBlID0gQUxXQVlTX05PUk1BTElaRTtcbiAgfVxuICByZXR1cm4gX2NyZWF0ZUVsZW1lbnQoY29udGV4dCwgdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlvblR5cGUpXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVFbGVtZW50IChcbiAgY29udGV4dCxcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgbm9ybWFsaXphdGlvblR5cGVcbikge1xuICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoKGRhdGEpLl9fb2JfXykpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIkF2b2lkIHVzaW5nIG9ic2VydmVkIGRhdGEgb2JqZWN0IGFzIHZub2RlIGRhdGE6IFwiICsgKEpTT04uc3RyaW5naWZ5KGRhdGEpKSArIFwiXFxuXCIgK1xuICAgICAgJ0Fsd2F5cyBjcmVhdGUgZnJlc2ggdm5vZGUgZGF0YSBvYmplY3RzIGluIGVhY2ggcmVuZGVyIScsXG4gICAgICBjb250ZXh0XG4gICAgKTtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbiAgaWYgKCF0YWcpIHtcbiAgICAvLyBpbiBjYXNlIG9mIGNvbXBvbmVudCA6aXMgc2V0IHRvIGZhbHN5IHZhbHVlXG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIC8vIHN1cHBvcnQgc2luZ2xlIGZ1bmN0aW9uIGNoaWxkcmVuIGFzIGRlZmF1bHQgc2NvcGVkIHNsb3RcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4gICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgIGRhdGEuc2NvcGVkU2xvdHMgPSB7IGRlZmF1bHQ6IGNoaWxkcmVuWzBdIH07XG4gICAgY2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgfVxuICBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IEFMV0FZU19OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uVHlwZSA9PT0gU0lNUExFX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVuID0gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9XG4gIHZhciB2bm9kZSwgbnM7XG4gIGlmICh0eXBlb2YgdGFnID09PSAnc3RyaW5nJykge1xuICAgIHZhciBDdG9yO1xuICAgIG5zID0gY29uZmlnLmdldFRhZ05hbWVzcGFjZSh0YWcpO1xuICAgIGlmIChjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgICAvLyBwbGF0Zm9ybSBidWlsdC1pbiBlbGVtZW50c1xuICAgICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgICAgIGNvbmZpZy5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0YWcpLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChpc0RlZihDdG9yID0gcmVzb2x2ZUFzc2V0KGNvbnRleHQuJG9wdGlvbnMsICdjb21wb25lbnRzJywgdGFnKSkpIHtcbiAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQoQ3RvciwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4sIHRhZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVua25vd24gb3IgdW5saXN0ZWQgbmFtZXNwYWNlZCBlbGVtZW50c1xuICAgICAgLy8gY2hlY2sgYXQgcnVudGltZSBiZWNhdXNlIGl0IG1heSBnZXQgYXNzaWduZWQgYSBuYW1lc3BhY2Ugd2hlbiBpdHNcbiAgICAgIC8vIHBhcmVudCBub3JtYWxpemVzIGNoaWxkcmVuXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgdGFnLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIGRpcmVjdCBjb21wb25lbnQgb3B0aW9ucyAvIGNvbnN0cnVjdG9yXG4gICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQodGFnLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbik7XG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlKSkge1xuICAgIGlmIChucykgeyBhcHBseU5TKHZub2RlLCBucyk7IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlOUyAodm5vZGUsIG5zKSB7XG4gIHZub2RlLm5zID0gbnM7XG4gIGlmICh2bm9kZS50YWcgPT09ICdmb3JlaWduT2JqZWN0Jykge1xuICAgIC8vIHVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpbnNpZGUgZm9yZWlnbk9iamVjdFxuICAgIHJldHVyblxuICB9XG4gIGlmIChpc0RlZih2bm9kZS5jaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY2hpbGRyZW5baV07XG4gICAgICBpZiAoaXNEZWYoY2hpbGQudGFnKSAmJiBpc1VuZGVmKGNoaWxkLm5zKSkge1xuICAgICAgICBhcHBseU5TKGNoaWxkLCBucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgdi1mb3IgbGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlckxpc3QgKFxuICB2YWwsXG4gIHJlbmRlclxuKSB7XG4gIHZhciByZXQsIGksIGwsIGtleXMsIGtleTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHJldCA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdmFsLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtpXSwgaSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHZhbDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIoaSArIDEsIGkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgcmV0ID0gbmV3IEFycmF5KGtleXMubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICByZXRbaV0gPSByZW5kZXIodmFsW2tleV0sIGtleSwgaSk7XG4gICAgfVxuICB9XG4gIGlmIChpc0RlZihyZXQpKSB7XG4gICAgKHJldCkuX2lzVkxpc3QgPSB0cnVlO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyA8c2xvdD5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyU2xvdCAoXG4gIG5hbWUsXG4gIGZhbGxiYWNrLFxuICBwcm9wcyxcbiAgYmluZE9iamVjdFxuKSB7XG4gIHZhciBzY29wZWRTbG90Rm4gPSB0aGlzLiRzY29wZWRTbG90c1tuYW1lXTtcbiAgaWYgKHNjb3BlZFNsb3RGbikgeyAvLyBzY29wZWQgc2xvdFxuICAgIHByb3BzID0gcHJvcHMgfHwge307XG4gICAgaWYgKGJpbmRPYmplY3QpIHtcbiAgICAgIGV4dGVuZChwcm9wcywgYmluZE9iamVjdCk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZWRTbG90Rm4ocHJvcHMpIHx8IGZhbGxiYWNrXG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsb3ROb2RlcyA9IHRoaXMuJHNsb3RzW25hbWVdO1xuICAgIC8vIHdhcm4gZHVwbGljYXRlIHNsb3QgdXNhZ2VcbiAgICBpZiAoc2xvdE5vZGVzICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHNsb3ROb2Rlcy5fcmVuZGVyZWQgJiYgd2FybihcbiAgICAgICAgXCJEdXBsaWNhdGUgcHJlc2VuY2Ugb2Ygc2xvdCBcXFwiXCIgKyBuYW1lICsgXCJcXFwiIGZvdW5kIGluIHRoZSBzYW1lIHJlbmRlciB0cmVlIFwiICtcbiAgICAgICAgXCItIHRoaXMgd2lsbCBsaWtlbHkgY2F1c2UgcmVuZGVyIGVycm9ycy5cIixcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICAgIHNsb3ROb2Rlcy5fcmVuZGVyZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gc2xvdE5vZGVzIHx8IGZhbGxiYWNrXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlc29sdmluZyBmaWx0ZXJzXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWx0ZXIgKGlkKSB7XG4gIHJldHVybiByZXNvbHZlQXNzZXQodGhpcy4kb3B0aW9ucywgJ2ZpbHRlcnMnLCBpZCwgdHJ1ZSkgfHwgaWRlbnRpdHlcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIGNoZWNraW5nIGtleUNvZGVzIGZyb20gY29uZmlnLlxuICovXG5mdW5jdGlvbiBjaGVja0tleUNvZGVzIChcbiAgZXZlbnRLZXlDb2RlLFxuICBrZXksXG4gIGJ1aWx0SW5BbGlhc1xuKSB7XG4gIHZhciBrZXlDb2RlcyA9IGNvbmZpZy5rZXlDb2Rlc1trZXldIHx8IGJ1aWx0SW5BbGlhcztcbiAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Q29kZXMpKSB7XG4gICAgcmV0dXJuIGtleUNvZGVzLmluZGV4T2YoZXZlbnRLZXlDb2RlKSA9PT0gLTFcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ga2V5Q29kZXMgIT09IGV2ZW50S2V5Q29kZVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBtZXJnaW5nIHYtYmluZD1cIm9iamVjdFwiIGludG8gYSBWTm9kZSdzIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGJpbmRPYmplY3RQcm9wcyAoXG4gIGRhdGEsXG4gIHRhZyxcbiAgdmFsdWUsXG4gIGFzUHJvcFxuKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICd2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBleHBlY3RzIGFuIE9iamVjdCBvciBBcnJheSB2YWx1ZScsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IHRvT2JqZWN0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHZhciBoYXNoO1xuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycgfHwga2V5ID09PSAnc3R5bGUnKSB7XG4gICAgICAgICAgaGFzaCA9IGRhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHR5cGUgPSBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMudHlwZTtcbiAgICAgICAgICBoYXNoID0gYXNQcm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0YWcsIHR5cGUsIGtleSlcbiAgICAgICAgICAgID8gZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9IHt9KVxuICAgICAgICAgICAgOiBkYXRhLmF0dHJzIHx8IChkYXRhLmF0dHJzID0ge30pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKGtleSBpbiBoYXNoKSkge1xuICAgICAgICAgIGhhc2hba2V5XSA9IHZhbHVlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyBzdGF0aWMgdHJlZXMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclN0YXRpYyAoXG4gIGluZGV4LFxuICBpc0luRm9yXG4pIHtcbiAgdmFyIHRyZWUgPSB0aGlzLl9zdGF0aWNUcmVlc1tpbmRleF07XG4gIC8vIGlmIGhhcyBhbHJlYWR5LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBub3QgaW5zaWRlIHYtZm9yLFxuICAvLyB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgdHJlZSBieSBkb2luZyBhIHNoYWxsb3cgY2xvbmUuXG4gIGlmICh0cmVlICYmICFpc0luRm9yKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHJlZSlcbiAgICAgID8gY2xvbmVWTm9kZXModHJlZSlcbiAgICAgIDogY2xvbmVWTm9kZSh0cmVlKVxuICB9XG4gIC8vIG90aGVyd2lzZSwgcmVuZGVyIGEgZnJlc2ggdHJlZS5cbiAgdHJlZSA9IHRoaXMuX3N0YXRpY1RyZWVzW2luZGV4XSA9XG4gICAgdGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNbaW5kZXhdLmNhbGwodGhpcy5fcmVuZGVyUHJveHkpO1xuICBtYXJrU3RhdGljKHRyZWUsIChcIl9fc3RhdGljX19cIiArIGluZGV4KSwgZmFsc2UpO1xuICByZXR1cm4gdHJlZVxufVxuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciB2LW9uY2UuXG4gKiBFZmZlY3RpdmVseSBpdCBtZWFucyBtYXJraW5nIHRoZSBub2RlIGFzIHN0YXRpYyB3aXRoIGEgdW5pcXVlIGtleS5cbiAqL1xuZnVuY3Rpb24gbWFya09uY2UgKFxuICB0cmVlLFxuICBpbmRleCxcbiAga2V5XG4pIHtcbiAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX29uY2VfX1wiICsgaW5kZXggKyAoa2V5ID8gKFwiX1wiICsga2V5KSA6IFwiXCIpKSwgdHJ1ZSk7XG4gIHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMgKFxuICB0cmVlLFxuICBrZXksXG4gIGlzT25jZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRyZWUpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodHJlZVtpXSAmJiB0eXBlb2YgdHJlZVtpXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgbWFya1N0YXRpY05vZGUodHJlZVtpXSwgKGtleSArIFwiX1wiICsgaSksIGlzT25jZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG1hcmtTdGF0aWNOb2RlKHRyZWUsIGtleSwgaXNPbmNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljTm9kZSAobm9kZSwga2V5LCBpc09uY2UpIHtcbiAgbm9kZS5pc1N0YXRpYyA9IHRydWU7XG4gIG5vZGUua2V5ID0ga2V5O1xuICBub2RlLmlzT25jZSA9IGlzT25jZTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRSZW5kZXIgKHZtKSB7XG4gIHZtLl92bm9kZSA9IG51bGw7IC8vIHRoZSByb290IG9mIHRoZSBjaGlsZCB0cmVlXG4gIHZtLl9zdGF0aWNUcmVlcyA9IG51bGw7XG4gIHZhciBwYXJlbnRWbm9kZSA9IHZtLiR2bm9kZSA9IHZtLiRvcHRpb25zLl9wYXJlbnRWbm9kZTsgLy8gdGhlIHBsYWNlaG9sZGVyIG5vZGUgaW4gcGFyZW50IHRyZWVcbiAgdmFyIHJlbmRlckNvbnRleHQgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9kZS5jb250ZXh0O1xuICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHModm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLCByZW5kZXJDb250ZXh0KTtcbiAgdm0uJHNjb3BlZFNsb3RzID0gZW1wdHlPYmplY3Q7XG4gIC8vIGJpbmQgdGhlIGNyZWF0ZUVsZW1lbnQgZm4gdG8gdGhpcyBpbnN0YW5jZVxuICAvLyBzbyB0aGF0IHdlIGdldCBwcm9wZXIgcmVuZGVyIGNvbnRleHQgaW5zaWRlIGl0LlxuICAvLyBhcmdzIG9yZGVyOiB0YWcsIGRhdGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSwgYWx3YXlzTm9ybWFsaXplXG4gIC8vIGludGVybmFsIHZlcnNpb24gaXMgdXNlZCBieSByZW5kZXIgZnVuY3Rpb25zIGNvbXBpbGVkIGZyb20gdGVtcGxhdGVzXG4gIHZtLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIGZhbHNlKTsgfTtcbiAgLy8gbm9ybWFsaXphdGlvbiBpcyBhbHdheXMgYXBwbGllZCBmb3IgdGhlIHB1YmxpYyB2ZXJzaW9uLCB1c2VkIGluXG4gIC8vIHVzZXItd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zLlxuICB2bS4kY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCB0cnVlKTsgfTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLiRuZXh0VGljayA9IGZ1bmN0aW9uIChmbikge1xuICAgIHJldHVybiBuZXh0VGljayhmbiwgdGhpcylcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLl9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICB2YXIgcmVmID0gdm0uJG9wdGlvbnM7XG4gICAgdmFyIHJlbmRlciA9IHJlZi5yZW5kZXI7XG4gICAgdmFyIHN0YXRpY1JlbmRlckZucyA9IHJlZi5zdGF0aWNSZW5kZXJGbnM7XG4gICAgdmFyIF9wYXJlbnRWbm9kZSA9IHJlZi5fcGFyZW50Vm5vZGU7XG5cbiAgICBpZiAodm0uX2lzTW91bnRlZCkge1xuICAgICAgLy8gY2xvbmUgc2xvdCBub2RlcyBvbiByZS1yZW5kZXJzXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdm0uJHNsb3RzKSB7XG4gICAgICAgIHZtLiRzbG90c1trZXldID0gY2xvbmVWTm9kZXModm0uJHNsb3RzW2tleV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZtLiRzY29wZWRTbG90cyA9IChfcGFyZW50Vm5vZGUgJiYgX3BhcmVudFZub2RlLmRhdGEuc2NvcGVkU2xvdHMpIHx8IGVtcHR5T2JqZWN0O1xuXG4gICAgaWYgKHN0YXRpY1JlbmRlckZucyAmJiAhdm0uX3N0YXRpY1RyZWVzKSB7XG4gICAgICB2bS5fc3RhdGljVHJlZXMgPSBbXTtcbiAgICB9XG4gICAgLy8gc2V0IHBhcmVudCB2bm9kZS4gdGhpcyBhbGxvd3MgcmVuZGVyIGZ1bmN0aW9ucyB0byBoYXZlIGFjY2Vzc1xuICAgIC8vIHRvIHRoZSBkYXRhIG9uIHRoZSBwbGFjZWhvbGRlciBub2RlLlxuICAgIHZtLiR2bm9kZSA9IF9wYXJlbnRWbm9kZTtcbiAgICAvLyByZW5kZXIgc2VsZlxuICAgIHZhciB2bm9kZTtcbiAgICB0cnkge1xuICAgICAgdm5vZGUgPSByZW5kZXIuY2FsbCh2bS5fcmVuZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bSwgXCJyZW5kZXIgZnVuY3Rpb25cIik7XG4gICAgICAvLyByZXR1cm4gZXJyb3IgcmVuZGVyIHJlc3VsdCxcbiAgICAgIC8vIG9yIHByZXZpb3VzIHZub2RlIHRvIHByZXZlbnQgcmVuZGVyIGVycm9yIGNhdXNpbmcgYmxhbmsgY29tcG9uZW50XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdm5vZGUgPSB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvclxuICAgICAgICAgID8gdm0uJG9wdGlvbnMucmVuZGVyRXJyb3IuY2FsbCh2bS5fcmVuZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50LCBlKVxuICAgICAgICAgIDogdm0uX3Zub2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiBlbXB0eSB2bm9kZSBpbiBjYXNlIHRoZSByZW5kZXIgZnVuY3Rpb24gZXJyb3JlZCBvdXRcbiAgICBpZiAoISh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnTXVsdGlwbGUgcm9vdCBub2RlcyByZXR1cm5lZCBmcm9tIHJlbmRlciBmdW5jdGlvbi4gUmVuZGVyIGZ1bmN0aW9uICcgK1xuICAgICAgICAgICdzaG91bGQgcmV0dXJuIGEgc2luZ2xlIHJvb3Qgbm9kZS4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB2bm9kZSA9IGNyZWF0ZUVtcHR5Vk5vZGUoKTtcbiAgICB9XG4gICAgLy8gc2V0IHBhcmVudFxuICAgIHZub2RlLnBhcmVudCA9IF9wYXJlbnRWbm9kZTtcbiAgICByZXR1cm4gdm5vZGVcbiAgfTtcblxuICAvLyBpbnRlcm5hbCByZW5kZXIgaGVscGVycy5cbiAgLy8gdGhlc2UgYXJlIGV4cG9zZWQgb24gdGhlIGluc3RhbmNlIHByb3RvdHlwZSB0byByZWR1Y2UgZ2VuZXJhdGVkIHJlbmRlclxuICAvLyBjb2RlIHNpemUuXG4gIFZ1ZS5wcm90b3R5cGUuX28gPSBtYXJrT25jZTtcbiAgVnVlLnByb3RvdHlwZS5fbiA9IHRvTnVtYmVyO1xuICBWdWUucHJvdG90eXBlLl9zID0gdG9TdHJpbmc7XG4gIFZ1ZS5wcm90b3R5cGUuX2wgPSByZW5kZXJMaXN0O1xuICBWdWUucHJvdG90eXBlLl90ID0gcmVuZGVyU2xvdDtcbiAgVnVlLnByb3RvdHlwZS5fcSA9IGxvb3NlRXF1YWw7XG4gIFZ1ZS5wcm90b3R5cGUuX2kgPSBsb29zZUluZGV4T2Y7XG4gIFZ1ZS5wcm90b3R5cGUuX20gPSByZW5kZXJTdGF0aWM7XG4gIFZ1ZS5wcm90b3R5cGUuX2YgPSByZXNvbHZlRmlsdGVyO1xuICBWdWUucHJvdG90eXBlLl9rID0gY2hlY2tLZXlDb2RlcztcbiAgVnVlLnByb3RvdHlwZS5fYiA9IGJpbmRPYmplY3RQcm9wcztcbiAgVnVlLnByb3RvdHlwZS5fdiA9IGNyZWF0ZVRleHRWTm9kZTtcbiAgVnVlLnByb3RvdHlwZS5fZSA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gIFZ1ZS5wcm90b3R5cGUuX3UgPSByZXNvbHZlU2NvcGVkU2xvdHM7XG59XG5cbi8qICAqL1xuXG52YXIgdWlkID0gMDtcblxuZnVuY3Rpb24gaW5pdE1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhIHVpZFxuICAgIHZtLl91aWQgPSB1aWQrKztcblxuICAgIHZhciBzdGFydFRhZywgZW5kVGFnO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICBzdGFydFRhZyA9IFwidnVlLXBlcmYtaW5pdDpcIiArICh2bS5fdWlkKTtcbiAgICAgIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsgKHZtLl91aWQpO1xuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgfVxuXG4gICAgLy8gYSBmbGFnIHRvIGF2b2lkIHRoaXMgYmVpbmcgb2JzZXJ2ZWRcbiAgICB2bS5faXNWdWUgPSB0cnVlO1xuICAgIC8vIG1lcmdlIG9wdGlvbnNcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLl9pc0NvbXBvbmVudCkge1xuICAgICAgLy8gb3B0aW1pemUgaW50ZXJuYWwgY29tcG9uZW50IGluc3RhbnRpYXRpb25cbiAgICAgIC8vIHNpbmNlIGR5bmFtaWMgb3B0aW9ucyBtZXJnaW5nIGlzIHByZXR0eSBzbG93LCBhbmQgbm9uZSBvZiB0aGVcbiAgICAgIC8vIGludGVybmFsIGNvbXBvbmVudCBvcHRpb25zIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50LlxuICAgICAgaW5pdEludGVybmFsQ29tcG9uZW50KHZtLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uJG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnModm0uY29uc3RydWN0b3IpLFxuICAgICAgICBvcHRpb25zIHx8IHt9LFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaW5pdFByb3h5KHZtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICAgIC8vIGV4cG9zZSByZWFsIHNlbGZcbiAgICB2bS5fc2VsZiA9IHZtO1xuICAgIGluaXRMaWZlY3ljbGUodm0pO1xuICAgIGluaXRFdmVudHModm0pO1xuICAgIGluaXRSZW5kZXIodm0pO1xuICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlQ3JlYXRlJyk7XG4gICAgaW5pdEluamVjdGlvbnModm0pOyAvLyByZXNvbHZlIGluamVjdGlvbnMgYmVmb3JlIGRhdGEvcHJvcHNcbiAgICBpbml0U3RhdGUodm0pO1xuICAgIGluaXRQcm92aWRlKHZtKTsgLy8gcmVzb2x2ZSBwcm92aWRlIGFmdGVyIGRhdGEvcHJvcHNcbiAgICBjYWxsSG9vayh2bSwgJ2NyZWF0ZWQnKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICB2bS5fbmFtZSA9IGZvcm1hdENvbXBvbmVudE5hbWUodm0sIGZhbHNlKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKCh2bS5fbmFtZSkgKyBcIiBpbml0XCIpLCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICB9XG5cbiAgICBpZiAodm0uJG9wdGlvbnMuZWwpIHtcbiAgICAgIHZtLiRtb3VudCh2bS4kb3B0aW9ucy5lbCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpbml0SW50ZXJuYWxDb21wb25lbnQgKHZtLCBvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gdm0uJG9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKHZtLmNvbnN0cnVjdG9yLm9wdGlvbnMpO1xuICAvLyBkb2luZyB0aGlzIGJlY2F1c2UgaXQncyBmYXN0ZXIgdGhhbiBkeW5hbWljIGVudW1lcmF0aW9uLlxuICBvcHRzLnBhcmVudCA9IG9wdGlvbnMucGFyZW50O1xuICBvcHRzLnByb3BzRGF0YSA9IG9wdGlvbnMucHJvcHNEYXRhO1xuICBvcHRzLl9wYXJlbnRWbm9kZSA9IG9wdGlvbnMuX3BhcmVudFZub2RlO1xuICBvcHRzLl9wYXJlbnRMaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIG9wdHMuX3JlbmRlckNoaWxkcmVuID0gb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW47XG4gIG9wdHMuX2NvbXBvbmVudFRhZyA9IG9wdGlvbnMuX2NvbXBvbmVudFRhZztcbiAgb3B0cy5fcGFyZW50RWxtID0gb3B0aW9ucy5fcGFyZW50RWxtO1xuICBvcHRzLl9yZWZFbG0gPSBvcHRpb25zLl9yZWZFbG07XG4gIGlmIChvcHRpb25zLnJlbmRlcikge1xuICAgIG9wdHMucmVuZGVyID0gb3B0aW9ucy5yZW5kZXI7XG4gICAgb3B0cy5zdGF0aWNSZW5kZXJGbnMgPSBvcHRpb25zLnN0YXRpY1JlbmRlckZucztcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zIChDdG9yKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICBpZiAoQ3Rvci5zdXBlcikge1xuICAgIHZhciBzdXBlck9wdGlvbnMgPSByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3Iuc3VwZXIpO1xuICAgIHZhciBjYWNoZWRTdXBlck9wdGlvbnMgPSBDdG9yLnN1cGVyT3B0aW9ucztcbiAgICBpZiAoc3VwZXJPcHRpb25zICE9PSBjYWNoZWRTdXBlck9wdGlvbnMpIHtcbiAgICAgIC8vIHN1cGVyIG9wdGlvbiBjaGFuZ2VkLFxuICAgICAgLy8gbmVlZCB0byByZXNvbHZlIG5ldyBvcHRpb25zLlxuICAgICAgQ3Rvci5zdXBlck9wdGlvbnMgPSBzdXBlck9wdGlvbnM7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGxhdGUtbW9kaWZpZWQvYXR0YWNoZWQgb3B0aW9ucyAoIzQ5NzYpXG4gICAgICB2YXIgbW9kaWZpZWRPcHRpb25zID0gcmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyhDdG9yKTtcbiAgICAgIC8vIHVwZGF0ZSBiYXNlIGV4dGVuZCBvcHRpb25zXG4gICAgICBpZiAobW9kaWZpZWRPcHRpb25zKSB7XG4gICAgICAgIGV4dGVuZChDdG9yLmV4dGVuZE9wdGlvbnMsIG1vZGlmaWVkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBvcHRpb25zID0gQ3Rvci5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHN1cGVyT3B0aW9ucywgQ3Rvci5leHRlbmRPcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgb3B0aW9ucy5jb21wb25lbnRzW29wdGlvbnMubmFtZV0gPSBDdG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiByZXNvbHZlTW9kaWZpZWRPcHRpb25zIChDdG9yKSB7XG4gIHZhciBtb2RpZmllZDtcbiAgdmFyIGxhdGVzdCA9IEN0b3Iub3B0aW9ucztcbiAgdmFyIGV4dGVuZGVkID0gQ3Rvci5leHRlbmRPcHRpb25zO1xuICB2YXIgc2VhbGVkID0gQ3Rvci5zZWFsZWRPcHRpb25zO1xuICBmb3IgKHZhciBrZXkgaW4gbGF0ZXN0KSB7XG4gICAgaWYgKGxhdGVzdFtrZXldICE9PSBzZWFsZWRba2V5XSkge1xuICAgICAgaWYgKCFtb2RpZmllZCkgeyBtb2RpZmllZCA9IHt9OyB9XG4gICAgICBtb2RpZmllZFtrZXldID0gZGVkdXBlKGxhdGVzdFtrZXldLCBleHRlbmRlZFtrZXldLCBzZWFsZWRba2V5XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RpZmllZFxufVxuXG5mdW5jdGlvbiBkZWR1cGUgKGxhdGVzdCwgZXh0ZW5kZWQsIHNlYWxlZCkge1xuICAvLyBjb21wYXJlIGxhdGVzdCBhbmQgc2VhbGVkIHRvIGVuc3VyZSBsaWZlY3ljbGUgaG9va3Mgd29uJ3QgYmUgZHVwbGljYXRlZFxuICAvLyBiZXR3ZWVuIG1lcmdlc1xuICBpZiAoQXJyYXkuaXNBcnJheShsYXRlc3QpKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHNlYWxlZCA9IEFycmF5LmlzQXJyYXkoc2VhbGVkKSA/IHNlYWxlZCA6IFtzZWFsZWRdO1xuICAgIGV4dGVuZGVkID0gQXJyYXkuaXNBcnJheShleHRlbmRlZCkgPyBleHRlbmRlZCA6IFtleHRlbmRlZF07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXRlc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIHB1c2ggb3JpZ2luYWwgb3B0aW9ucyBhbmQgbm90IHNlYWxlZCBvcHRpb25zIHRvIGV4Y2x1ZGUgZHVwbGljYXRlZCBvcHRpb25zXG4gICAgICBpZiAoZXh0ZW5kZWQuaW5kZXhPZihsYXRlc3RbaV0pID49IDAgfHwgc2VhbGVkLmluZGV4T2YobGF0ZXN0W2ldKSA8IDApIHtcbiAgICAgICAgcmVzLnB1c2gobGF0ZXN0W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsYXRlc3RcbiAgfVxufVxuXG5mdW5jdGlvbiBWdWUkMyAob3B0aW9ucykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICEodGhpcyBpbnN0YW5jZW9mIFZ1ZSQzKVxuICApIHtcbiAgICB3YXJuKCdWdWUgaXMgYSBjb25zdHJ1Y3RvciBhbmQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkJyk7XG4gIH1cbiAgdGhpcy5faW5pdChvcHRpb25zKTtcbn1cblxuaW5pdE1peGluKFZ1ZSQzKTtcbnN0YXRlTWl4aW4oVnVlJDMpO1xuZXZlbnRzTWl4aW4oVnVlJDMpO1xubGlmZWN5Y2xlTWl4aW4oVnVlJDMpO1xucmVuZGVyTWl4aW4oVnVlJDMpO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFVzZSAoVnVlKSB7XG4gIFZ1ZS51c2UgPSBmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHBsdWdpbi5pbnN0YWxsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIC8vIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBpZiAodHlwZW9mIHBsdWdpbi5pbnN0YWxsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwbHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH1cbiAgICBwbHVnaW4uaW5zdGFsbGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdE1peGluJDEgKFZ1ZSkge1xuICBWdWUubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLCBtaXhpbik7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFeHRlbmQgKFZ1ZSkge1xuICAvKipcbiAgICogRWFjaCBpbnN0YW5jZSBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEgdW5pcXVlXG4gICAqIGNpZC4gVGhpcyBlbmFibGVzIHVzIHRvIGNyZWF0ZSB3cmFwcGVkIFwiY2hpbGRcbiAgICogY29uc3RydWN0b3JzXCIgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UgYW5kIGNhY2hlIHRoZW0uXG4gICAqL1xuICBWdWUuY2lkID0gMDtcbiAgdmFyIGNpZCA9IDE7XG5cbiAgLyoqXG4gICAqIENsYXNzIGluaGVyaXRhbmNlXG4gICAqL1xuICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24gKGV4dGVuZE9wdGlvbnMpIHtcbiAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgU3VwZXIgPSB0aGlzO1xuICAgIHZhciBTdXBlcklkID0gU3VwZXIuY2lkO1xuICAgIHZhciBjYWNoZWRDdG9ycyA9IGV4dGVuZE9wdGlvbnMuX0N0b3IgfHwgKGV4dGVuZE9wdGlvbnMuX0N0b3IgPSB7fSk7XG4gICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG4gICAgICByZXR1cm4gY2FjaGVkQ3RvcnNbU3VwZXJJZF1cbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IGV4dGVuZE9wdGlvbnMubmFtZSB8fCBTdXBlci5vcHRpb25zLm5hbWU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghL15bYS16QS1aXVtcXHctXSokLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ludmFsaWQgY29tcG9uZW50IG5hbWU6IFwiJyArIG5hbWUgKyAnXCIuIENvbXBvbmVudCBuYW1lcyAnICtcbiAgICAgICAgICAnY2FuIG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdGhlIGh5cGhlbiwgJyArXG4gICAgICAgICAgJ2FuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBTdWIgPSBmdW5jdGlvbiBWdWVDb21wb25lbnQgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcbiAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgIFN1Yi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWI7XG4gICAgU3ViLmNpZCA9IGNpZCsrO1xuICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAgU3VwZXIub3B0aW9ucyxcbiAgICAgIGV4dGVuZE9wdGlvbnNcbiAgICApO1xuICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuXG4gICAgLy8gRm9yIHByb3BzIGFuZCBjb21wdXRlZCBwcm9wZXJ0aWVzLCB3ZSBkZWZpbmUgdGhlIHByb3h5IGdldHRlcnMgb25cbiAgICAvLyB0aGUgVnVlIGluc3RhbmNlcyBhdCBleHRlbnNpb24gdGltZSwgb24gdGhlIGV4dGVuZGVkIHByb3RvdHlwZS4gVGhpc1xuICAgIC8vIGF2b2lkcyBPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbHMgZm9yIGVhY2ggaW5zdGFuY2UgY3JlYXRlZC5cbiAgICBpZiAoU3ViLm9wdGlvbnMucHJvcHMpIHtcbiAgICAgIGluaXRQcm9wcyQxKFN1Yik7XG4gICAgfVxuICAgIGlmIChTdWIub3B0aW9ucy5jb21wdXRlZCkge1xuICAgICAgaW5pdENvbXB1dGVkJDEoU3ViKTtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyBmdXJ0aGVyIGV4dGVuc2lvbi9taXhpbi9wbHVnaW4gdXNhZ2VcbiAgICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kO1xuICAgIFN1Yi5taXhpbiA9IFN1cGVyLm1peGluO1xuICAgIFN1Yi51c2UgPSBTdXBlci51c2U7XG5cbiAgICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0ZXJzLCBzbyBleHRlbmRlZCBjbGFzc2VzXG4gICAgLy8gY2FuIGhhdmUgdGhlaXIgcHJpdmF0ZSBhc3NldHMgdG9vLlxuICAgIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIFN1Ylt0eXBlXSA9IFN1cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1cnNpdmUgc2VsZi1sb29rdXBcbiAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29tcG9uZW50c1tuYW1lXSA9IFN1YjtcbiAgICB9XG5cbiAgICAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdXBlciBvcHRpb25zIGF0IGV4dGVuc2lvbiB0aW1lLlxuICAgIC8vIGxhdGVyIGF0IGluc3RhbnRpYXRpb24gd2UgY2FuIGNoZWNrIGlmIFN1cGVyJ3Mgb3B0aW9ucyBoYXZlXG4gICAgLy8gYmVlbiB1cGRhdGVkLlxuICAgIFN1Yi5zdXBlck9wdGlvbnMgPSBTdXBlci5vcHRpb25zO1xuICAgIFN1Yi5leHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucztcbiAgICBTdWIuc2VhbGVkT3B0aW9ucyA9IGV4dGVuZCh7fSwgU3ViLm9wdGlvbnMpO1xuXG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3JcbiAgICBjYWNoZWRDdG9yc1tTdXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyQxIChDb21wKSB7XG4gIHZhciBwcm9wcyA9IENvbXAub3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgcHJveHkoQ29tcC5wcm90b3R5cGUsIFwiX3Byb3BzXCIsIGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkJDEgKENvbXApIHtcbiAgdmFyIGNvbXB1dGVkID0gQ29tcC5vcHRpb25zLmNvbXB1dGVkO1xuICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICBkZWZpbmVDb21wdXRlZChDb21wLnByb3RvdHlwZSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEFzc2V0UmVnaXN0ZXJzIChWdWUpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhc3NldCByZWdpc3RyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWVbdHlwZV0gPSBmdW5jdGlvbiAoXG4gICAgICBpZCxcbiAgICAgIGRlZmluaXRpb25cbiAgICApIHtcbiAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdjb21wb25lbnQnICYmIGNvbmZpZy5pc1Jlc2VydmVkVGFnKGlkKSkge1xuICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAgICAgICAgICdpZDogJyArIGlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZpbml0aW9uKSkge1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcbiAgICAgICAgICBkZWZpbml0aW9uID0gdGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChkZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9mIGRlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uID0geyBiaW5kOiBkZWZpbml0aW9uLCB1cGRhdGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyogICovXG5cbnZhciBwYXR0ZXJuVHlwZXMgPSBbU3RyaW5nLCBSZWdFeHBdO1xuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lIChvcHRzKSB7XG4gIHJldHVybiBvcHRzICYmIChvcHRzLkN0b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMudGFnKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVzIChwYXR0ZXJuLCBuYW1lKSB7XG4gIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGF0dGVybi5zcGxpdCgnLCcpLmluZGV4T2YobmFtZSkgPiAtMVxuICB9IGVsc2UgaWYgKGlzUmVnRXhwKHBhdHRlcm4pKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdChuYW1lKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlIChjYWNoZSwgY3VycmVudCwgZmlsdGVyKSB7XG4gIGZvciAodmFyIGtleSBpbiBjYWNoZSkge1xuICAgIHZhciBjYWNoZWROb2RlID0gY2FjaGVba2V5XTtcbiAgICBpZiAoY2FjaGVkTm9kZSkge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNhY2hlZE5vZGUuY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAmJiAhZmlsdGVyKG5hbWUpKSB7XG4gICAgICAgIGlmIChjYWNoZWROb2RlICE9PSBjdXJyZW50KSB7XG4gICAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGNhY2hlZE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhY2hlW2tleV0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlRW50cnkgKHZub2RlKSB7XG4gIGlmICh2bm9kZSkge1xuICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gIH1cbn1cblxudmFyIEtlZXBBbGl2ZSA9IHtcbiAgbmFtZTogJ2tlZXAtYWxpdmUnLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICBwcm9wczoge1xuICAgIGluY2x1ZGU6IHBhdHRlcm5UeXBlcyxcbiAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXNcbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkICgpIHtcbiAgICB0aGlzLmNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfSxcblxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcyQxLmNhY2hlKSB7XG4gICAgICBwcnVuZUNhY2hlRW50cnkodGhpcyQxLmNhY2hlW2tleV0pO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGluY2x1ZGU6IGZ1bmN0aW9uIGluY2x1ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzLmNhY2hlLCB0aGlzLl92bm9kZSwgZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIG1hdGNoZXModmFsLCBuYW1lKTsgfSk7XG4gICAgfSxcbiAgICBleGNsdWRlOiBmdW5jdGlvbiBleGNsdWRlICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcy5jYWNoZSwgdGhpcy5fdm5vZGUsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiAhbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKCkge1xuICAgIHZhciB2bm9kZSA9IGdldEZpcnN0Q29tcG9uZW50Q2hpbGQodGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gICAgdmFyIGNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAgIGlmIChjb21wb25lbnRPcHRpb25zKSB7XG4gICAgICAvLyBjaGVjayBwYXR0ZXJuXG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAmJiAoXG4gICAgICAgICh0aGlzLmluY2x1ZGUgJiYgIW1hdGNoZXModGhpcy5pbmNsdWRlLCBuYW1lKSkgfHxcbiAgICAgICAgKHRoaXMuZXhjbHVkZSAmJiBtYXRjaGVzKHRoaXMuZXhjbHVkZSwgbmFtZSkpXG4gICAgICApKSB7XG4gICAgICAgIHJldHVybiB2bm9kZVxuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHZub2RlLmtleSA9PSBudWxsXG4gICAgICAgIC8vIHNhbWUgY29uc3RydWN0b3IgbWF5IGdldCByZWdpc3RlcmVkIGFzIGRpZmZlcmVudCBsb2NhbCBjb21wb25lbnRzXG4gICAgICAgIC8vIHNvIGNpZCBhbG9uZSBpcyBub3QgZW5vdWdoICgjMzI2OSlcbiAgICAgICAgPyBjb21wb25lbnRPcHRpb25zLkN0b3IuY2lkICsgKGNvbXBvbmVudE9wdGlvbnMudGFnID8gKFwiOjpcIiArIChjb21wb25lbnRPcHRpb25zLnRhZykpIDogJycpXG4gICAgICAgIDogdm5vZGUua2V5O1xuICAgICAgaWYgKHRoaXMuY2FjaGVba2V5XSkge1xuICAgICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IHRoaXMuY2FjaGVba2V5XS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FjaGVba2V5XSA9IHZub2RlO1xuICAgICAgfVxuICAgICAgdm5vZGUuZGF0YS5rZWVwQWxpdmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfVxufTtcblxudmFyIGJ1aWx0SW5Db21wb25lbnRzID0ge1xuICBLZWVwQWxpdmU6IEtlZXBBbGl2ZVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRHbG9iYWxBUEkgKFZ1ZSkge1xuICAvLyBjb25maWdcbiAgdmFyIGNvbmZpZ0RlZiA9IHt9O1xuICBjb25maWdEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gY29uZmlnOyB9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbmZpZ0RlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnRG8gbm90IHJlcGxhY2UgdGhlIFZ1ZS5jb25maWcgb2JqZWN0LCBzZXQgaW5kaXZpZHVhbCBmaWVsZHMgaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSwgJ2NvbmZpZycsIGNvbmZpZ0RlZik7XG5cbiAgLy8gZXhwb3NlZCB1dGlsIG1ldGhvZHMuXG4gIC8vIE5PVEU6IHRoZXNlIGFyZSBub3QgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIC0gYXZvaWQgcmVseWluZyBvblxuICAvLyB0aGVtIHVubGVzcyB5b3UgYXJlIGF3YXJlIG9mIHRoZSByaXNrLlxuICBWdWUudXRpbCA9IHtcbiAgICB3YXJuOiB3YXJuLFxuICAgIGV4dGVuZDogZXh0ZW5kLFxuICAgIG1lcmdlT3B0aW9uczogbWVyZ2VPcHRpb25zLFxuICAgIGRlZmluZVJlYWN0aXZlOiBkZWZpbmVSZWFjdGl2ZSQkMVxuICB9O1xuXG4gIFZ1ZS5zZXQgPSBzZXQ7XG4gIFZ1ZS5kZWxldGUgPSBkZWw7XG4gIFZ1ZS5uZXh0VGljayA9IG5leHRUaWNrO1xuXG4gIFZ1ZS5vcHRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgIFZ1ZS5vcHRpb25zW3R5cGUgKyAncyddID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfSk7XG5cbiAgLy8gdGhpcyBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBcImJhc2VcIiBjb25zdHJ1Y3RvciB0byBleHRlbmQgYWxsIHBsYWluLW9iamVjdFxuICAvLyBjb21wb25lbnRzIHdpdGggaW4gV2VleCdzIG11bHRpLWluc3RhbmNlIHNjZW5hcmlvcy5cbiAgVnVlLm9wdGlvbnMuX2Jhc2UgPSBWdWU7XG5cbiAgZXh0ZW5kKFZ1ZS5vcHRpb25zLmNvbXBvbmVudHMsIGJ1aWx0SW5Db21wb25lbnRzKTtcblxuICBpbml0VXNlKFZ1ZSk7XG4gIGluaXRNaXhpbiQxKFZ1ZSk7XG4gIGluaXRFeHRlbmQoVnVlKTtcbiAgaW5pdEFzc2V0UmVnaXN0ZXJzKFZ1ZSk7XG59XG5cbmluaXRHbG9iYWxBUEkoVnVlJDMpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlJDMucHJvdG90eXBlLCAnJGlzU2VydmVyJywge1xuICBnZXQ6IGlzU2VydmVyUmVuZGVyaW5nXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSQzLnByb3RvdHlwZSwgJyRzc3JDb250ZXh0Jywge1xuICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy4kdm5vZGUuc3NyQ29udGV4dFxuICB9XG59KTtcblxuVnVlJDMudmVyc2lvbiA9ICcyLjMuMyc7XG5cbi8qICAqL1xuXG4vLyB0aGVzZSBhcmUgcmVzZXJ2ZWQgZm9yIHdlYiBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IGNvbXBpbGVkIGF3YXlcbi8vIGR1cmluZyB0ZW1wbGF0ZSBjb21waWxhdGlvblxudmFyIGlzUmVzZXJ2ZWRBdHRyID0gbWFrZU1hcCgnc3R5bGUsY2xhc3MnKTtcblxuLy8gYXR0cmlidXRlcyB0aGF0IHNob3VsZCBiZSB1c2luZyBwcm9wcyBmb3IgYmluZGluZ1xudmFyIGFjY2VwdFZhbHVlID0gbWFrZU1hcCgnaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCcpO1xudmFyIG11c3RVc2VQcm9wID0gZnVuY3Rpb24gKHRhZywgdHlwZSwgYXR0cikge1xuICByZXR1cm4gKFxuICAgIChhdHRyID09PSAndmFsdWUnICYmIGFjY2VwdFZhbHVlKHRhZykpICYmIHR5cGUgIT09ICdidXR0b24nIHx8XG4gICAgKGF0dHIgPT09ICdzZWxlY3RlZCcgJiYgdGFnID09PSAnb3B0aW9uJykgfHxcbiAgICAoYXR0ciA9PT0gJ2NoZWNrZWQnICYmIHRhZyA9PT0gJ2lucHV0JykgfHxcbiAgICAoYXR0ciA9PT0gJ211dGVkJyAmJiB0YWcgPT09ICd2aWRlbycpXG4gIClcbn07XG5cbnZhciBpc0VudW1lcmF0ZWRBdHRyID0gbWFrZU1hcCgnY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrJyk7XG5cbnZhciBpc0Jvb2xlYW5BdHRyID0gbWFrZU1hcChcbiAgJ2FsbG93ZnVsbHNjcmVlbixhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY2hlY2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsJyArXG4gICdkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsJyArXG4gICdlbmFibGVkLGZvcm1ub3ZhbGlkYXRlLGhpZGRlbixpbmRldGVybWluYXRlLGluZXJ0LGlzbWFwLGl0ZW1zY29wZSxsb29wLG11bHRpcGxlLCcgK1xuICAnbXV0ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3BlbixwYXVzZW9uZXhpdCxyZWFkb25seSwnICtcbiAgJ3JlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsJyArXG4gICd0cnVlc3BlZWQsdHlwZW11c3RtYXRjaCx2aXNpYmxlJ1xuKTtcblxudmFyIHhsaW5rTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG5cbnZhciBpc1hsaW5rID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUuY2hhckF0KDUpID09PSAnOicgJiYgbmFtZS5zbGljZSgwLCA1KSA9PT0gJ3hsaW5rJ1xufTtcblxudmFyIGdldFhsaW5rUHJvcCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBpc1hsaW5rKG5hbWUpID8gbmFtZS5zbGljZSg2LCBuYW1lLmxlbmd0aCkgOiAnJ1xufTtcblxudmFyIGlzRmFsc3lBdHRyVmFsdWUgPSBmdW5jdGlvbiAodmFsKSB7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCB2YWwgPT09IGZhbHNlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gZ2VuQ2xhc3NGb3JWbm9kZSAodm5vZGUpIHtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgcGFyZW50Tm9kZSA9IHZub2RlO1xuICB2YXIgY2hpbGROb2RlID0gdm5vZGU7XG4gIHdoaWxlIChpc0RlZihjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICBpZiAoY2hpbGROb2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0YShjaGlsZE5vZGUuZGF0YSwgZGF0YSk7XG4gICAgfVxuICB9XG4gIHdoaWxlIChpc0RlZihwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUuZGF0YSkge1xuICAgICAgZGF0YSA9IG1lcmdlQ2xhc3NEYXRhKGRhdGEsIHBhcmVudE5vZGUuZGF0YSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBnZW5DbGFzc0Zyb21EYXRhKGRhdGEpXG59XG5cbmZ1bmN0aW9uIG1lcmdlQ2xhc3NEYXRhIChjaGlsZCwgcGFyZW50KSB7XG4gIHJldHVybiB7XG4gICAgc3RhdGljQ2xhc3M6IGNvbmNhdChjaGlsZC5zdGF0aWNDbGFzcywgcGFyZW50LnN0YXRpY0NsYXNzKSxcbiAgICBjbGFzczogaXNEZWYoY2hpbGQuY2xhc3MpXG4gICAgICA/IFtjaGlsZC5jbGFzcywgcGFyZW50LmNsYXNzXVxuICAgICAgOiBwYXJlbnQuY2xhc3NcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5DbGFzc0Zyb21EYXRhIChkYXRhKSB7XG4gIHZhciBkeW5hbWljQ2xhc3MgPSBkYXRhLmNsYXNzO1xuICB2YXIgc3RhdGljQ2xhc3MgPSBkYXRhLnN0YXRpY0NsYXNzO1xuICBpZiAoaXNEZWYoc3RhdGljQ2xhc3MpIHx8IGlzRGVmKGR5bmFtaWNDbGFzcykpIHtcbiAgICByZXR1cm4gY29uY2F0KHN0YXRpY0NsYXNzLCBzdHJpbmdpZnlDbGFzcyhkeW5hbWljQ2xhc3MpKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBjb25jYXQgKGEsIGIpIHtcbiAgcmV0dXJuIGEgPyBiID8gKGEgKyAnICcgKyBiKSA6IGEgOiAoYiB8fCAnJylcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5Q2xhc3MgKHZhbHVlKSB7XG4gIGlmIChpc1VuZGVmKHZhbHVlKSkge1xuICAgIHJldHVybiAnJ1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgdmFyIHJlcyA9ICcnO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YXIgc3RyaW5naWZpZWQ7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChpc0RlZih2YWx1ZVtpXSkpIHtcbiAgICAgICAgaWYgKGlzRGVmKHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5Q2xhc3ModmFsdWVbaV0pKSAmJiBzdHJpbmdpZmllZCAhPT0gJycpIHtcbiAgICAgICAgICByZXMgKz0gc3RyaW5naWZpZWQgKyAnICc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSlcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWVba2V5XSkgeyByZXMgKz0ga2V5ICsgJyAnOyB9XG4gICAgfVxuICAgIHJldHVybiByZXMuc2xpY2UoMCwgLTEpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIG5hbWVzcGFjZU1hcCA9IHtcbiAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICBtYXRoOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCdcbn07XG5cbnZhciBpc0hUTUxUYWcgPSBtYWtlTWFwKFxuICAnaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsJyArXG4gICdhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoMSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNlY3Rpb24sJyArXG4gICdkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsJyArXG4gICdhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnRjLHJ1YnksJyArXG4gICdzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1cCx0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbywnICtcbiAgJ2VtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLCcgK1xuICAnY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsJyArXG4gICdidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAsb3B0aW9uLCcgK1xuICAnb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSwnICtcbiAgJ2RldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSwnICtcbiAgJ2NvbnRlbnQsZWxlbWVudCxzaGFkb3csdGVtcGxhdGUnXG4pO1xuXG4vLyB0aGlzIG1hcCBpcyBpbnRlbnRpb25hbGx5IHNlbGVjdGl2ZSwgb25seSBjb3ZlcmluZyBTVkcgZWxlbWVudHMgdGhhdCBtYXlcbi8vIGNvbnRhaW4gY2hpbGQgZWxlbWVudHMuXG52YXIgaXNTVkcgPSBtYWtlTWFwKFxuICAnc3ZnLGFuaW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udC1mYWNlLCcgK1xuICAnZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4sJyArXG4gICdwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3JyxcbiAgdHJ1ZVxuKTtcblxuXG5cbnZhciBpc1Jlc2VydmVkVGFnID0gZnVuY3Rpb24gKHRhZykge1xuICByZXR1cm4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkcodGFnKVxufTtcblxuZnVuY3Rpb24gZ2V0VGFnTmFtZXNwYWNlICh0YWcpIHtcbiAgaWYgKGlzU1ZHKHRhZykpIHtcbiAgICByZXR1cm4gJ3N2ZydcbiAgfVxuICAvLyBiYXNpYyBzdXBwb3J0IGZvciBNYXRoTUxcbiAgLy8gbm90ZSBpdCBkb2Vzbid0IHN1cHBvcnQgb3RoZXIgTWF0aE1MIGVsZW1lbnRzIGJlaW5nIGNvbXBvbmVudCByb290c1xuICBpZiAodGFnID09PSAnbWF0aCcpIHtcbiAgICByZXR1cm4gJ21hdGgnXG4gIH1cbn1cblxudmFyIHVua25vd25FbGVtZW50Q2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuZnVuY3Rpb24gaXNVbmtub3duRWxlbWVudCAodGFnKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWluQnJvd3Nlcikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKGlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHRhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHVua25vd25FbGVtZW50Q2FjaGVbdGFnXVxuICB9XG4gIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKHRhZy5pbmRleE9mKCctJykgPiAtMSkge1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4MjEwMzY0LzEwNzAyNDRcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IChcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTFVua25vd25FbGVtZW50IHx8XG4gICAgICBlbC5jb25zdHJ1Y3RvciA9PT0gd2luZG93LkhUTUxFbGVtZW50XG4gICAgKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IC9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QoZWwudG9TdHJpbmcoKSkpXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUXVlcnkgYW4gZWxlbWVudCBzZWxlY3RvciBpZiBpdCdzIG5vdCBhbiBlbGVtZW50IGFscmVhZHkuXG4gKi9cbmZ1bmN0aW9uIHF1ZXJ5IChlbCkge1xuICBpZiAodHlwZW9mIGVsID09PSAnc3RyaW5nJykge1xuICAgIHZhciBzZWxlY3RlZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWwpO1xuICAgIGlmICghc2VsZWN0ZWQpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ0Nhbm5vdCBmaW5kIGVsZW1lbnQ6ICcgKyBlbFxuICAgICAgKTtcbiAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0ZWRcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZWxcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCQxICh0YWdOYW1lLCB2bm9kZSkge1xuICB2YXIgZWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcbiAgaWYgKHRhZ05hbWUgIT09ICdzZWxlY3QnKSB7XG4gICAgcmV0dXJuIGVsbVxuICB9XG4gIC8vIGZhbHNlIG9yIG51bGwgd2lsbCByZW1vdmUgdGhlIGF0dHJpYnV0ZSBidXQgdW5kZWZpbmVkIHdpbGwgbm90XG4gIGlmICh2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEuYXR0cnMgJiYgdm5vZGUuZGF0YS5hdHRycy5tdWx0aXBsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZWxtLnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnbXVsdGlwbGUnKTtcbiAgfVxuICByZXR1cm4gZWxtXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnROUyAobmFtZXNwYWNlLCB0YWdOYW1lKSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlTWFwW25hbWVzcGFjZV0sIHRhZ05hbWUpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHROb2RlICh0ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21tZW50ICh0ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHRleHQpXG59XG5cbmZ1bmN0aW9uIGluc2VydEJlZm9yZSAocGFyZW50Tm9kZSwgbmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShuZXdOb2RlLCByZWZlcmVuY2VOb2RlKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2hpbGQgKG5vZGUsIGNoaWxkKSB7XG4gIG5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5hcHBlbmRDaGlsZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9uIHBhcmVudE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZVxufVxuXG5mdW5jdGlvbiBuZXh0U2libGluZyAobm9kZSkge1xuICByZXR1cm4gbm9kZS5uZXh0U2libGluZ1xufVxuXG5mdW5jdGlvbiB0YWdOYW1lIChub2RlKSB7XG4gIHJldHVybiBub2RlLnRhZ05hbWVcbn1cblxuZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQgKG5vZGUsIHRleHQpIHtcbiAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZSAobm9kZSwga2V5LCB2YWwpIHtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoa2V5LCB2YWwpO1xufVxuXG5cbnZhciBub2RlT3BzID0gT2JqZWN0LmZyZWV6ZSh7XG5cdGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQkMSxcblx0Y3JlYXRlRWxlbWVudE5TOiBjcmVhdGVFbGVtZW50TlMsXG5cdGNyZWF0ZVRleHROb2RlOiBjcmVhdGVUZXh0Tm9kZSxcblx0Y3JlYXRlQ29tbWVudDogY3JlYXRlQ29tbWVudCxcblx0aW5zZXJ0QmVmb3JlOiBpbnNlcnRCZWZvcmUsXG5cdHJlbW92ZUNoaWxkOiByZW1vdmVDaGlsZCxcblx0YXBwZW5kQ2hpbGQ6IGFwcGVuZENoaWxkLFxuXHRwYXJlbnROb2RlOiBwYXJlbnROb2RlLFxuXHRuZXh0U2libGluZzogbmV4dFNpYmxpbmcsXG5cdHRhZ05hbWU6IHRhZ05hbWUsXG5cdHNldFRleHRDb250ZW50OiBzZXRUZXh0Q29udGVudCxcblx0c2V0QXR0cmlidXRlOiBzZXRBdHRyaWJ1dGVcbn0pO1xuXG4vKiAgKi9cblxudmFyIHJlZiA9IHtcbiAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUgKF8sIHZub2RlKSB7XG4gICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgaWYgKG9sZFZub2RlLmRhdGEucmVmICE9PSB2bm9kZS5kYXRhLnJlZikge1xuICAgICAgcmVnaXN0ZXJSZWYob2xkVm5vZGUsIHRydWUpO1xuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgIH1cbiAgfSxcbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSwgdHJ1ZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyUmVmICh2bm9kZSwgaXNSZW1vdmFsKSB7XG4gIHZhciBrZXkgPSB2bm9kZS5kYXRhLnJlZjtcbiAgaWYgKCFrZXkpIHsgcmV0dXJuIH1cblxuICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICB2YXIgcmVmID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgfHwgdm5vZGUuZWxtO1xuICB2YXIgcmVmcyA9IHZtLiRyZWZzO1xuICBpZiAoaXNSZW1vdmFsKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgcmVtb3ZlKHJlZnNba2V5XSwgcmVmKTtcbiAgICB9IGVsc2UgaWYgKHJlZnNba2V5XSA9PT0gcmVmKSB7XG4gICAgICByZWZzW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh2bm9kZS5kYXRhLnJlZkluRm9yKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzW2tleV0pICYmIHJlZnNba2V5XS5pbmRleE9mKHJlZikgPCAwKSB7XG4gICAgICAgIHJlZnNba2V5XS5wdXNoKHJlZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWZzW2tleV0gPSBbcmVmXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVmc1trZXldID0gcmVmO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZpcnR1YWwgRE9NIHBhdGNoaW5nIGFsZ29yaXRobSBiYXNlZCBvbiBTbmFiYmRvbSBieVxuICogU2ltb24gRnJpaXMgVmluZHVtIChAcGFsZGVwaW5kKVxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGFsZGVwaW5kL3NuYWJiZG9tL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqXG4gKiBtb2RpZmllZCBieSBFdmFuIFlvdSAoQHl5eDk5MDgwMylcbiAqXG5cbi8qXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGJlY2F1c2UgdGhpcyBmaWxlIGlzIHBlcmYtY3JpdGljYWwgYW5kIHRoZSBjb3N0XG4gKiBvZiBtYWtpbmcgZmxvdyB1bmRlcnN0YW5kIGl0IGlzIG5vdCB3b3J0aCBpdC5cbiAqL1xuXG52YXIgZW1wdHlOb2RlID0gbmV3IFZOb2RlKCcnLCB7fSwgW10pO1xuXG52YXIgaG9va3MgPSBbJ2NyZWF0ZScsICdhY3RpdmF0ZScsICd1cGRhdGUnLCAncmVtb3ZlJywgJ2Rlc3Ryb3knXTtcblxuZnVuY3Rpb24gc2FtZVZub2RlIChhLCBiKSB7XG4gIHJldHVybiAoXG4gICAgYS5rZXkgPT09IGIua2V5ICYmXG4gICAgYS50YWcgPT09IGIudGFnICYmXG4gICAgYS5pc0NvbW1lbnQgPT09IGIuaXNDb21tZW50ICYmXG4gICAgaXNEZWYoYS5kYXRhKSA9PT0gaXNEZWYoYi5kYXRhKSAmJlxuICAgIHNhbWVJbnB1dFR5cGUoYSwgYilcbiAgKVxufVxuXG4vLyBTb21lIGJyb3dzZXJzIGRvIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5IGNoYW5naW5nIHR5cGUgZm9yIDxpbnB1dD5cbi8vIHNvIHRoZXkgbmVlZCB0byBiZSB0cmVhdGVkIGFzIGRpZmZlcmVudCBub2Rlc1xuZnVuY3Rpb24gc2FtZUlucHV0VHlwZSAoYSwgYikge1xuICBpZiAoYS50YWcgIT09ICdpbnB1dCcpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaTtcbiAgdmFyIHR5cGVBID0gaXNEZWYoaSA9IGEuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgdmFyIHR5cGVCID0gaXNEZWYoaSA9IGIuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgcmV0dXJuIHR5cGVBID09PSB0eXBlQlxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlUb09sZElkeCAoY2hpbGRyZW4sIGJlZ2luSWR4LCBlbmRJZHgpIHtcbiAgdmFyIGksIGtleTtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKGkgPSBiZWdpbklkeDsgaSA8PSBlbmRJZHg7ICsraSkge1xuICAgIGtleSA9IGNoaWxkcmVuW2ldLmtleTtcbiAgICBpZiAoaXNEZWYoa2V5KSkgeyBtYXBba2V5XSA9IGk7IH1cbiAgfVxuICByZXR1cm4gbWFwXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhdGNoRnVuY3Rpb24gKGJhY2tlbmQpIHtcbiAgdmFyIGksIGo7XG4gIHZhciBjYnMgPSB7fTtcblxuICB2YXIgbW9kdWxlcyA9IGJhY2tlbmQubW9kdWxlcztcbiAgdmFyIG5vZGVPcHMgPSBiYWNrZW5kLm5vZGVPcHM7XG5cbiAgZm9yIChpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgKytpKSB7XG4gICAgY2JzW2hvb2tzW2ldXSA9IFtdO1xuICAgIGZvciAoaiA9IDA7IGogPCBtb2R1bGVzLmxlbmd0aDsgKytqKSB7XG4gICAgICBpZiAoaXNEZWYobW9kdWxlc1tqXVtob29rc1tpXV0pKSB7XG4gICAgICAgIGNic1tob29rc1tpXV0ucHVzaChtb2R1bGVzW2pdW2hvb2tzW2ldXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1wdHlOb2RlQXQgKGVsbSkge1xuICAgIHJldHVybiBuZXcgVk5vZGUobm9kZU9wcy50YWdOYW1lKGVsbSkudG9Mb3dlckNhc2UoKSwge30sIFtdLCB1bmRlZmluZWQsIGVsbSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJtQ2IgKGNoaWxkRWxtLCBsaXN0ZW5lcnMpIHtcbiAgICBmdW5jdGlvbiByZW1vdmUkJDEgKCkge1xuICAgICAgaWYgKC0tcmVtb3ZlJCQxLmxpc3RlbmVycyA9PT0gMCkge1xuICAgICAgICByZW1vdmVOb2RlKGNoaWxkRWxtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlJCQxLmxpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICByZXR1cm4gcmVtb3ZlJCQxXG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVOb2RlIChlbCkge1xuICAgIHZhciBwYXJlbnQgPSBub2RlT3BzLnBhcmVudE5vZGUoZWwpO1xuICAgIC8vIGVsZW1lbnQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZHVlIHRvIHYtaHRtbCAvIHYtdGV4dFxuICAgIGlmIChpc0RlZihwYXJlbnQpKSB7XG4gICAgICBub2RlT3BzLnJlbW92ZUNoaWxkKHBhcmVudCwgZWwpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBpblByZSA9IDA7XG4gIGZ1bmN0aW9uIGNyZWF0ZUVsbSAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0sIG5lc3RlZCkge1xuICAgIHZub2RlLmlzUm9vdEluc2VydCA9ICFuZXN0ZWQ7IC8vIGZvciB0cmFuc2l0aW9uIGVudGVyIGNoZWNrXG4gICAgaWYgKGNyZWF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgdGFnID0gdm5vZGUudGFnO1xuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnByZSkge1xuICAgICAgICAgIGluUHJlKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFpblByZSAmJlxuICAgICAgICAgICF2bm9kZS5ucyAmJlxuICAgICAgICAgICEoY29uZmlnLmlnbm9yZWRFbGVtZW50cy5sZW5ndGggJiYgY29uZmlnLmlnbm9yZWRFbGVtZW50cy5pbmRleE9mKHRhZykgPiAtMSkgJiZcbiAgICAgICAgICBjb25maWcuaXNVbmtub3duRWxlbWVudCh0YWcpXG4gICAgICAgICkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAnVW5rbm93biBjdXN0b20gZWxlbWVudDogPCcgKyB0YWcgKyAnPiAtIGRpZCB5b3UgJyArXG4gICAgICAgICAgICAncmVnaXN0ZXIgdGhlIGNvbXBvbmVudCBjb3JyZWN0bHk/IEZvciByZWN1cnNpdmUgY29tcG9uZW50cywgJyArXG4gICAgICAgICAgICAnbWFrZSBzdXJlIHRvIHByb3ZpZGUgdGhlIFwibmFtZVwiIG9wdGlvbi4nLFxuICAgICAgICAgICAgdm5vZGUuY29udGV4dFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZub2RlLmVsbSA9IHZub2RlLm5zXG4gICAgICAgID8gbm9kZU9wcy5jcmVhdGVFbGVtZW50TlModm5vZGUubnMsIHRhZylcbiAgICAgICAgOiBub2RlT3BzLmNyZWF0ZUVsZW1lbnQodGFnLCB2bm9kZSk7XG4gICAgICBzZXRTY29wZSh2bm9kZSk7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAge1xuICAgICAgICBjcmVhdGVDaGlsZHJlbih2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZGF0YSAmJiBkYXRhLnByZSkge1xuICAgICAgICBpblByZS0tO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUcnVlKHZub2RlLmlzQ29tbWVudCkpIHtcbiAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMuY3JlYXRlQ29tbWVudCh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm5vZGUuZWxtID0gbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgdmFyIGkgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgdmFyIGlzUmVhY3RpdmF0ZWQgPSBpc0RlZih2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaS5rZWVwQWxpdmU7XG4gICAgICBpZiAoaXNEZWYoaSA9IGkuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIHtcbiAgICAgICAgaSh2bm9kZSwgZmFsc2UgLyogaHlkcmF0aW5nICovLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgICB9XG4gICAgICAvLyBhZnRlciBjYWxsaW5nIHRoZSBpbml0IGhvb2ssIGlmIHRoZSB2bm9kZSBpcyBhIGNoaWxkIGNvbXBvbmVudFxuICAgICAgLy8gaXQgc2hvdWxkJ3ZlIGNyZWF0ZWQgYSBjaGlsZCBpbnN0YW5jZSBhbmQgbW91bnRlZCBpdC4gdGhlIGNoaWxkXG4gICAgICAvLyBjb21wb25lbnQgYWxzbyBoYXMgc2V0IHRoZSBwbGFjZWhvbGRlciB2bm9kZSdzIGVsbS5cbiAgICAgIC8vIGluIHRoYXQgY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gdGhlIGVsZW1lbnQgYW5kIGJlIGRvbmUuXG4gICAgICBpZiAoaXNEZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGlmIChpc1RydWUoaXNSZWFjdGl2YXRlZCkpIHtcbiAgICAgICAgICByZWFjdGl2YXRlQ29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSkge1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2guYXBwbHkoaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpO1xuICAgIH1cbiAgICB2bm9kZS5lbG0gPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kZWw7XG4gICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICBzZXRTY29wZSh2bm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVtcHR5IGNvbXBvbmVudCByb290LlxuICAgICAgLy8gc2tpcCBhbGwgZWxlbWVudC1yZWxhdGVkIG1vZHVsZXMgZXhjZXB0IGZvciByZWYgKCMzNDU1KVxuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgICAgLy8gbWFrZSBzdXJlIHRvIGludm9rZSB0aGUgaW5zZXJ0IGhvb2tcbiAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKHZub2RlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFjdGl2YXRlQ29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIHZhciBpO1xuICAgIC8vIGhhY2sgZm9yICM0MzM5OiBhIHJlYWN0aXZhdGVkIGNvbXBvbmVudCB3aXRoIGlubmVyIHRyYW5zaXRpb25cbiAgICAvLyBkb2VzIG5vdCB0cmlnZ2VyIGJlY2F1c2UgdGhlIGlubmVyIG5vZGUncyBjcmVhdGVkIGhvb2tzIGFyZSBub3QgY2FsbGVkXG4gICAgLy8gYWdhaW4uIEl0J3Mgbm90IGlkZWFsIHRvIGludm9sdmUgbW9kdWxlLXNwZWNpZmljIGxvZ2ljIGluIGhlcmUgYnV0XG4gICAgLy8gdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgYmV0dGVyIHdheSB0byBkbyBpdC5cbiAgICB2YXIgaW5uZXJOb2RlID0gdm5vZGU7XG4gICAgd2hpbGUgKGlubmVyTm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgaW5uZXJOb2RlID0gaW5uZXJOb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICAgIGlmIChpc0RlZihpID0gaW5uZXJOb2RlLmRhdGEpICYmIGlzRGVmKGkgPSBpLnRyYW5zaXRpb24pKSB7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuYWN0aXZhdGUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBjYnMuYWN0aXZhdGVbaV0oZW1wdHlOb2RlLCBpbm5lck5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKGlubmVyTm9kZSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVubGlrZSBhIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50LFxuICAgIC8vIGEgcmVhY3RpdmF0ZWQga2VlcC1hbGl2ZSBjb21wb25lbnQgZG9lc24ndCBpbnNlcnQgaXRzZWxmXG4gICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5zZXJ0IChwYXJlbnQsIGVsbSwgcmVmKSB7XG4gICAgaWYgKGlzRGVmKHBhcmVudCkpIHtcbiAgICAgIGlmIChpc0RlZihyZWYpKSB7XG4gICAgICAgIGlmIChyZWYucGFyZW50Tm9kZSA9PT0gcGFyZW50KSB7XG4gICAgICAgICAgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50LCBlbG0sIHJlZik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQocGFyZW50LCBlbG0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuICh2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAgICAgICBjcmVhdGVFbG0oY2hpbGRyZW5baV0sIGluc2VydGVkVm5vZGVRdWV1ZSwgdm5vZGUuZWxtLCBudWxsLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzUHJpbWl0aXZlKHZub2RlLnRleHQpKSB7XG4gICAgICBub2RlT3BzLmFwcGVuZENoaWxkKHZub2RlLmVsbSwgbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNQYXRjaGFibGUgKHZub2RlKSB7XG4gICAgd2hpbGUgKHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICB2bm9kZSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRGVmKHZub2RlLnRhZylcbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUNyZWF0ZUhvb2tzICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgY2JzLmNyZWF0ZS5sZW5ndGg7ICsraSQxKSB7XG4gICAgICBjYnMuY3JlYXRlW2kkMV0oZW1wdHlOb2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIGkgPSB2bm9kZS5kYXRhLmhvb2s7IC8vIFJldXNlIHZhcmlhYmxlXG4gICAgaWYgKGlzRGVmKGkpKSB7XG4gICAgICBpZiAoaXNEZWYoaS5jcmVhdGUpKSB7IGkuY3JlYXRlKGVtcHR5Tm9kZSwgdm5vZGUpOyB9XG4gICAgICBpZiAoaXNEZWYoaS5pbnNlcnQpKSB7IGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKHZub2RlKTsgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHNldCBzY29wZSBpZCBhdHRyaWJ1dGUgZm9yIHNjb3BlZCBDU1MuXG4gIC8vIHRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYSBzcGVjaWFsIGNhc2UgdG8gYXZvaWQgdGhlIG92ZXJoZWFkXG4gIC8vIG9mIGdvaW5nIHRocm91Z2ggdGhlIG5vcm1hbCBhdHRyaWJ1dGUgcGF0Y2hpbmcgcHJvY2Vzcy5cbiAgZnVuY3Rpb24gc2V0U2NvcGUgKHZub2RlKSB7XG4gICAgdmFyIGk7XG4gICAgdmFyIGFuY2VzdG9yID0gdm5vZGU7XG4gICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGFuY2VzdG9yLmNvbnRleHQpICYmIGlzRGVmKGkgPSBpLiRvcHRpb25zLl9zY29wZUlkKSkge1xuICAgICAgICBub2RlT3BzLnNldEF0dHJpYnV0ZSh2bm9kZS5lbG0sIGksICcnKTtcbiAgICAgIH1cbiAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50O1xuICAgIH1cbiAgICAvLyBmb3Igc2xvdCBjb250ZW50IHRoZXkgc2hvdWxkIGFsc28gZ2V0IHRoZSBzY29wZUlkIGZyb20gdGhlIGhvc3QgaW5zdGFuY2UuXG4gICAgaWYgKGlzRGVmKGkgPSBhY3RpdmVJbnN0YW5jZSkgJiZcbiAgICAgIGkgIT09IHZub2RlLmNvbnRleHQgJiZcbiAgICAgIGlzRGVmKGkgPSBpLiRvcHRpb25zLl9zY29wZUlkKVxuICAgICkge1xuICAgICAgbm9kZU9wcy5zZXRBdHRyaWJ1dGUodm5vZGUuZWxtLCBpLCAnJyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkVm5vZGVzIChwYXJlbnRFbG0sIHJlZkVsbSwgdm5vZGVzLCBzdGFydElkeCwgZW5kSWR4LCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBmb3IgKDsgc3RhcnRJZHggPD0gZW5kSWR4OyArK3N0YXJ0SWR4KSB7XG4gICAgICBjcmVhdGVFbG0odm5vZGVzW3N0YXJ0SWR4XSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRGVzdHJveUhvb2sgKHZub2RlKSB7XG4gICAgdmFyIGksIGo7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLmRlc3Ryb3kpKSB7IGkodm5vZGUpOyB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLmRlc3Ryb3kubGVuZ3RoOyArK2kpIHsgY2JzLmRlc3Ryb3lbaV0odm5vZGUpOyB9XG4gICAgfVxuICAgIGlmIChpc0RlZihpID0gdm5vZGUuY2hpbGRyZW4pKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyArK2opIHtcbiAgICAgICAgaW52b2tlRGVzdHJveUhvb2sodm5vZGUuY2hpbGRyZW5bal0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZVZub2RlcyAocGFyZW50RWxtLCB2bm9kZXMsIHN0YXJ0SWR4LCBlbmRJZHgpIHtcbiAgICBmb3IgKDsgc3RhcnRJZHggPD0gZW5kSWR4OyArK3N0YXJ0SWR4KSB7XG4gICAgICB2YXIgY2ggPSB2bm9kZXNbc3RhcnRJZHhdO1xuICAgICAgaWYgKGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAoaXNEZWYoY2gudGFnKSkge1xuICAgICAgICAgIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2soY2gpO1xuICAgICAgICAgIGludm9rZURlc3Ryb3lIb29rKGNoKTtcbiAgICAgICAgfSBlbHNlIHsgLy8gVGV4dCBub2RlXG4gICAgICAgICAgcmVtb3ZlTm9kZShjaC5lbG0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayAodm5vZGUsIHJtKSB7XG4gICAgaWYgKGlzRGVmKHJtKSB8fCBpc0RlZih2bm9kZS5kYXRhKSkge1xuICAgICAgdmFyIGk7XG4gICAgICB2YXIgbGlzdGVuZXJzID0gY2JzLnJlbW92ZS5sZW5ndGggKyAxO1xuICAgICAgaWYgKGlzRGVmKHJtKSkge1xuICAgICAgICAvLyB3ZSBoYXZlIGEgcmVjdXJzaXZlbHkgcGFzc2VkIGRvd24gcm0gY2FsbGJhY2tcbiAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGxpc3RlbmVycyBjb3VudFxuICAgICAgICBybS5saXN0ZW5lcnMgKz0gbGlzdGVuZXJzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGlyZWN0bHkgcmVtb3ZpbmdcbiAgICAgICAgcm0gPSBjcmVhdGVSbUNiKHZub2RlLmVsbSwgbGlzdGVuZXJzKTtcbiAgICAgIH1cbiAgICAgIC8vIHJlY3Vyc2l2ZWx5IGludm9rZSBob29rcyBvbiBjaGlsZCBjb21wb25lbnQgcm9vdCBub2RlXG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSAmJiBpc0RlZihpID0gaS5fdm5vZGUpICYmIGlzRGVmKGkuZGF0YSkpIHtcbiAgICAgICAgcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayhpLCBybSk7XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLnJlbW92ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBjYnMucmVtb3ZlW2ldKHZub2RlLCBybSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkucmVtb3ZlKSkge1xuICAgICAgICBpKHZub2RlLCBybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBybSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmVOb2RlKHZub2RlLmVsbSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlQ2hpbGRyZW4gKHBhcmVudEVsbSwgb2xkQ2gsIG5ld0NoLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpIHtcbiAgICB2YXIgb2xkU3RhcnRJZHggPSAwO1xuICAgIHZhciBuZXdTdGFydElkeCA9IDA7XG4gICAgdmFyIG9sZEVuZElkeCA9IG9sZENoLmxlbmd0aCAtIDE7XG4gICAgdmFyIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFswXTtcbiAgICB2YXIgb2xkRW5kVm5vZGUgPSBvbGRDaFtvbGRFbmRJZHhdO1xuICAgIHZhciBuZXdFbmRJZHggPSBuZXdDaC5sZW5ndGggLSAxO1xuICAgIHZhciBuZXdTdGFydFZub2RlID0gbmV3Q2hbMF07XG4gICAgdmFyIG5ld0VuZFZub2RlID0gbmV3Q2hbbmV3RW5kSWR4XTtcbiAgICB2YXIgb2xkS2V5VG9JZHgsIGlkeEluT2xkLCBlbG1Ub01vdmUsIHJlZkVsbTtcblxuICAgIC8vIHJlbW92ZU9ubHkgaXMgYSBzcGVjaWFsIGZsYWcgdXNlZCBvbmx5IGJ5IDx0cmFuc2l0aW9uLWdyb3VwPlxuICAgIC8vIHRvIGVuc3VyZSByZW1vdmVkIGVsZW1lbnRzIHN0YXkgaW4gY29ycmVjdCByZWxhdGl2ZSBwb3NpdGlvbnNcbiAgICAvLyBkdXJpbmcgbGVhdmluZyB0cmFuc2l0aW9uc1xuICAgIHZhciBjYW5Nb3ZlID0gIXJlbW92ZU9ubHk7XG5cbiAgICB3aGlsZSAob2xkU3RhcnRJZHggPD0gb2xkRW5kSWR4ICYmIG5ld1N0YXJ0SWR4IDw9IG5ld0VuZElkeCkge1xuICAgICAgaWYgKGlzVW5kZWYob2xkU3RhcnRWbm9kZSkpIHtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdOyAvLyBWbm9kZSBoYXMgYmVlbiBtb3ZlZCBsZWZ0XG4gICAgICB9IGVsc2UgaWYgKGlzVW5kZWYob2xkRW5kVm5vZGUpKSB7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRWbm9kZSkpIHtcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZEVuZFZub2RlLCBuZXdFbmRWbm9kZSkpIHtcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZub2RlKSkgeyAvLyBWbm9kZSBtb3ZlZCByaWdodFxuICAgICAgICBwYXRjaFZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0sIG5vZGVPcHMubmV4dFNpYmxpbmcob2xkRW5kVm5vZGUuZWxtKSk7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgbGVmdFxuICAgICAgICBwYXRjaFZub2RlKG9sZEVuZFZub2RlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkRW5kVm5vZGUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNVbmRlZihvbGRLZXlUb0lkeCkpIHsgb2xkS2V5VG9JZHggPSBjcmVhdGVLZXlUb09sZElkeChvbGRDaCwgb2xkU3RhcnRJZHgsIG9sZEVuZElkeCk7IH1cbiAgICAgICAgaWR4SW5PbGQgPSBpc0RlZihuZXdTdGFydFZub2RlLmtleSkgPyBvbGRLZXlUb0lkeFtuZXdTdGFydFZub2RlLmtleV0gOiBudWxsO1xuICAgICAgICBpZiAoaXNVbmRlZihpZHhJbk9sZCkpIHsgLy8gTmV3IGVsZW1lbnRcbiAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxtVG9Nb3ZlID0gb2xkQ2hbaWR4SW5PbGRdO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFlbG1Ub01vdmUpIHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICdJdCBzZWVtcyB0aGVyZSBhcmUgZHVwbGljYXRlIGtleXMgdGhhdCBpcyBjYXVzaW5nIGFuIHVwZGF0ZSBlcnJvci4gJyArXG4gICAgICAgICAgICAgICdNYWtlIHN1cmUgZWFjaCB2LWZvciBpdGVtIGhhcyBhIHVuaXF1ZSBrZXkuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNhbWVWbm9kZShlbG1Ub01vdmUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgICAgICBwYXRjaFZub2RlKGVsbVRvTW92ZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgICAgIG9sZENoW2lkeEluT2xkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBuZXdTdGFydFZub2RlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzYW1lIGtleSBidXQgZGlmZmVyZW50IGVsZW1lbnQuIHRyZWF0IGFzIG5ldyBlbGVtZW50XG4gICAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9sZFN0YXJ0SWR4ID4gb2xkRW5kSWR4KSB7XG4gICAgICByZWZFbG0gPSBpc1VuZGVmKG5ld0NoW25ld0VuZElkeCArIDFdKSA/IG51bGwgOiBuZXdDaFtuZXdFbmRJZHggKyAxXS5lbG07XG4gICAgICBhZGRWbm9kZXMocGFyZW50RWxtLCByZWZFbG0sIG5ld0NoLCBuZXdTdGFydElkeCwgbmV3RW5kSWR4LCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgIH0gZWxzZSBpZiAobmV3U3RhcnRJZHggPiBuZXdFbmRJZHgpIHtcbiAgICAgIHJlbW92ZVZub2RlcyhwYXJlbnRFbG0sIG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXRjaFZub2RlIChvbGRWbm9kZSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSkge1xuICAgIGlmIChvbGRWbm9kZSA9PT0gdm5vZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyByZXVzZSBlbGVtZW50IGZvciBzdGF0aWMgdHJlZXMuXG4gICAgLy8gbm90ZSB3ZSBvbmx5IGRvIHRoaXMgaWYgdGhlIHZub2RlIGlzIGNsb25lZCAtXG4gICAgLy8gaWYgdGhlIG5ldyBub2RlIGlzIG5vdCBjbG9uZWQgaXQgbWVhbnMgdGhlIHJlbmRlciBmdW5jdGlvbnMgaGF2ZSBiZWVuXG4gICAgLy8gcmVzZXQgYnkgdGhlIGhvdC1yZWxvYWQtYXBpIGFuZCB3ZSBuZWVkIHRvIGRvIGEgcHJvcGVyIHJlLXJlbmRlci5cbiAgICBpZiAoaXNUcnVlKHZub2RlLmlzU3RhdGljKSAmJlxuICAgICAgaXNUcnVlKG9sZFZub2RlLmlzU3RhdGljKSAmJlxuICAgICAgdm5vZGUua2V5ID09PSBvbGRWbm9kZS5rZXkgJiZcbiAgICAgIChpc1RydWUodm5vZGUuaXNDbG9uZWQpIHx8IGlzVHJ1ZSh2bm9kZS5pc09uY2UpKVxuICAgICkge1xuICAgICAgdm5vZGUuZWxtID0gb2xkVm5vZGUuZWxtO1xuICAgICAgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBvbGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB2YXIgaTtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnByZXBhdGNoKSkge1xuICAgICAgaShvbGRWbm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICB2YXIgZWxtID0gdm5vZGUuZWxtID0gb2xkVm5vZGUuZWxtO1xuICAgIHZhciBvbGRDaCA9IG9sZFZub2RlLmNoaWxkcmVuO1xuICAgIHZhciBjaCA9IHZub2RlLmNoaWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSAmJiBpc1BhdGNoYWJsZSh2bm9kZSkpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMudXBkYXRlLmxlbmd0aDsgKytpKSB7IGNicy51cGRhdGVbaV0ob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnVwZGF0ZSkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgfVxuICAgIGlmIChpc1VuZGVmKHZub2RlLnRleHQpKSB7XG4gICAgICBpZiAoaXNEZWYob2xkQ2gpICYmIGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAob2xkQ2ggIT09IGNoKSB7IHVwZGF0ZUNoaWxkcmVuKGVsbSwgb2xkQ2gsIGNoLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpOyB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAoaXNEZWYob2xkVm5vZGUudGV4dCkpIHsgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sICcnKTsgfVxuICAgICAgICBhZGRWbm9kZXMoZWxtLCBudWxsLCBjaCwgMCwgY2gubGVuZ3RoIC0gMSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYob2xkQ2gpKSB7XG4gICAgICAgIHJlbW92ZVZub2RlcyhlbG0sIG9sZENoLCAwLCBvbGRDaC5sZW5ndGggLSAxKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYob2xkVm5vZGUudGV4dCkpIHtcbiAgICAgICAgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sICcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9sZFZub2RlLnRleHQgIT09IHZub2RlLnRleHQpIHtcbiAgICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCB2bm9kZS50ZXh0KTtcbiAgICB9XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkucG9zdHBhdGNoKSkgeyBpKG9sZFZub2RlLCB2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VJbnNlcnRIb29rICh2bm9kZSwgcXVldWUsIGluaXRpYWwpIHtcbiAgICAvLyBkZWxheSBpbnNlcnQgaG9va3MgZm9yIGNvbXBvbmVudCByb290IG5vZGVzLCBpbnZva2UgdGhlbSBhZnRlciB0aGVcbiAgICAvLyBlbGVtZW50IGlzIHJlYWxseSBpbnNlcnRlZFxuICAgIGlmIChpc1RydWUoaW5pdGlhbCkgJiYgaXNEZWYodm5vZGUucGFyZW50KSkge1xuICAgICAgdm5vZGUucGFyZW50LmRhdGEucGVuZGluZ0luc2VydCA9IHF1ZXVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHF1ZXVlW2ldLmRhdGEuaG9vay5pbnNlcnQocXVldWVbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBiYWlsZWQgPSBmYWxzZTtcbiAgLy8gbGlzdCBvZiBtb2R1bGVzIHRoYXQgY2FuIHNraXAgY3JlYXRlIGhvb2sgZHVyaW5nIGh5ZHJhdGlvbiBiZWNhdXNlIHRoZXlcbiAgLy8gYXJlIGFscmVhZHkgcmVuZGVyZWQgb24gdGhlIGNsaWVudCBvciBoYXMgbm8gbmVlZCBmb3IgaW5pdGlhbGl6YXRpb25cbiAgdmFyIGlzUmVuZGVyZWRNb2R1bGUgPSBtYWtlTWFwKCdhdHRycyxzdHlsZSxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHlsZSxrZXknKTtcblxuICAvLyBOb3RlOiB0aGlzIGlzIGEgYnJvd3Nlci1vbmx5IGZ1bmN0aW9uIHNvIHdlIGNhbiBhc3N1bWUgZWxtcyBhcmUgRE9NIG5vZGVzLlxuICBmdW5jdGlvbiBoeWRyYXRlIChlbG0sIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFhc3NlcnROb2RlTWF0Y2goZWxtLCB2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIHZub2RlLmVsbSA9IGVsbTtcbiAgICB2YXIgdGFnID0gdm5vZGUudGFnO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5pbml0KSkgeyBpKHZub2RlLCB0cnVlIC8qIGh5ZHJhdGluZyAqLyk7IH1cbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIC8vIGNoaWxkIGNvbXBvbmVudC4gaXQgc2hvdWxkIGhhdmUgaHlkcmF0ZWQgaXRzIG93biB0cmVlLlxuICAgICAgICBpbml0Q29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYodGFnKSkge1xuICAgICAgaWYgKGlzRGVmKGNoaWxkcmVuKSkge1xuICAgICAgICAvLyBlbXB0eSBlbGVtZW50LCBhbGxvdyBjbGllbnQgdG8gcGljayB1cCBhbmQgcG9wdWxhdGUgY2hpbGRyZW5cbiAgICAgICAgaWYgKCFlbG0uaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBjaGlsZHJlbk1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICB2YXIgY2hpbGROb2RlID0gZWxtLmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgY2hpbGRyZW4ubGVuZ3RoOyBpJDErKykge1xuICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUgfHwgIWh5ZHJhdGUoY2hpbGROb2RlLCBjaGlsZHJlbltpJDFdLCBpbnNlcnRlZFZub2RlUXVldWUpKSB7XG4gICAgICAgICAgICAgIGNoaWxkcmVuTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gaWYgY2hpbGROb2RlIGlzIG5vdCBudWxsLCBpdCBtZWFucyB0aGUgYWN0dWFsIGNoaWxkTm9kZXMgbGlzdCBpc1xuICAgICAgICAgIC8vIGxvbmdlciB0aGFuIHRoZSB2aXJ0dWFsIGNoaWxkcmVuIGxpc3QuXG4gICAgICAgICAgaWYgKCFjaGlsZHJlbk1hdGNoIHx8IGNoaWxkTm9kZSkge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgICAgICAgICAgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICAgICFiYWlsZWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBiYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BhcmVudDogJywgZWxtKTtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdNaXNtYXRjaGluZyBjaGlsZE5vZGVzIHZzLiBWTm9kZXM6ICcsIGVsbS5jaGlsZE5vZGVzLCBjaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkge1xuICAgICAgICAgIGlmICghaXNSZW5kZXJlZE1vZHVsZShrZXkpKSB7XG4gICAgICAgICAgICBpbnZva2VDcmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbG0uZGF0YSAhPT0gdm5vZGUudGV4dCkge1xuICAgICAgZWxtLmRhdGEgPSB2bm9kZS50ZXh0O1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZnVuY3Rpb24gYXNzZXJ0Tm9kZU1hdGNoIChub2RlLCB2bm9kZSkge1xuICAgIGlmIChpc0RlZih2bm9kZS50YWcpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB2bm9kZS50YWcuaW5kZXhPZigndnVlLWNvbXBvbmVudCcpID09PSAwIHx8XG4gICAgICAgIHZub2RlLnRhZy50b0xvd2VyQ2FzZSgpID09PSAobm9kZS50YWdOYW1lICYmIG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gKHZub2RlLmlzQ29tbWVudCA/IDggOiAzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBwYXRjaCAob2xkVm5vZGUsIHZub2RlLCBoeWRyYXRpbmcsIHJlbW92ZU9ubHksIHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgaWYgKGlzVW5kZWYodm5vZGUpKSB7XG4gICAgICBpZiAoaXNEZWYob2xkVm5vZGUpKSB7IGludm9rZURlc3Ryb3lIb29rKG9sZFZub2RlKTsgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGlzSW5pdGlhbFBhdGNoID0gZmFsc2U7XG4gICAgdmFyIGluc2VydGVkVm5vZGVRdWV1ZSA9IFtdO1xuXG4gICAgaWYgKGlzVW5kZWYob2xkVm5vZGUpKSB7XG4gICAgICAvLyBlbXB0eSBtb3VudCAobGlrZWx5IGFzIGNvbXBvbmVudCksIGNyZWF0ZSBuZXcgcm9vdCBlbGVtZW50XG4gICAgICBpc0luaXRpYWxQYXRjaCA9IHRydWU7XG4gICAgICBjcmVhdGVFbG0odm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgaXNSZWFsRWxlbWVudCA9IGlzRGVmKG9sZFZub2RlLm5vZGVUeXBlKTtcbiAgICAgIGlmICghaXNSZWFsRWxlbWVudCAmJiBzYW1lVm5vZGUob2xkVm5vZGUsIHZub2RlKSkge1xuICAgICAgICAvLyBwYXRjaCBleGlzdGluZyByb290IG5vZGVcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRWbm9kZSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNSZWFsRWxlbWVudCkge1xuICAgICAgICAgIC8vIG1vdW50aW5nIHRvIGEgcmVhbCBlbGVtZW50XG4gICAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyBpcyBzZXJ2ZXItcmVuZGVyZWQgY29udGVudCBhbmQgaWYgd2UgY2FuIHBlcmZvcm1cbiAgICAgICAgICAvLyBhIHN1Y2Nlc3NmdWwgaHlkcmF0aW9uLlxuICAgICAgICAgIGlmIChvbGRWbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBvbGRWbm9kZS5oYXNBdHRyaWJ1dGUoU1NSX0FUVFIpKSB7XG4gICAgICAgICAgICBvbGRWbm9kZS5yZW1vdmVBdHRyaWJ1dGUoU1NSX0FUVFIpO1xuICAgICAgICAgICAgaHlkcmF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzVHJ1ZShoeWRyYXRpbmcpKSB7XG4gICAgICAgICAgICBpZiAoaHlkcmF0ZShvbGRWbm9kZSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkpIHtcbiAgICAgICAgICAgICAgaW52b2tlSW5zZXJ0SG9vayh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9sZFZub2RlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgICAnVGhlIGNsaWVudC1zaWRlIHJlbmRlcmVkIHZpcnR1YWwgRE9NIHRyZWUgaXMgbm90IG1hdGNoaW5nICcgK1xuICAgICAgICAgICAgICAgICdzZXJ2ZXItcmVuZGVyZWQgY29udGVudC4gVGhpcyBpcyBsaWtlbHkgY2F1c2VkIGJ5IGluY29ycmVjdCAnICtcbiAgICAgICAgICAgICAgICAnSFRNTCBtYXJrdXAsIGZvciBleGFtcGxlIG5lc3RpbmcgYmxvY2stbGV2ZWwgZWxlbWVudHMgaW5zaWRlICcgK1xuICAgICAgICAgICAgICAgICc8cD4sIG9yIG1pc3NpbmcgPHRib2R5Pi4gQmFpbGluZyBoeWRyYXRpb24gYW5kIHBlcmZvcm1pbmcgJyArXG4gICAgICAgICAgICAgICAgJ2Z1bGwgY2xpZW50LXNpZGUgcmVuZGVyLidcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZWl0aGVyIG5vdCBzZXJ2ZXItcmVuZGVyZWQsIG9yIGh5ZHJhdGlvbiBmYWlsZWQuXG4gICAgICAgICAgLy8gY3JlYXRlIGFuIGVtcHR5IG5vZGUgYW5kIHJlcGxhY2UgaXRcbiAgICAgICAgICBvbGRWbm9kZSA9IGVtcHR5Tm9kZUF0KG9sZFZub2RlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXBsYWNpbmcgZXhpc3RpbmcgZWxlbWVudFxuICAgICAgICB2YXIgb2xkRWxtID0gb2xkVm5vZGUuZWxtO1xuICAgICAgICB2YXIgcGFyZW50RWxtJDEgPSBub2RlT3BzLnBhcmVudE5vZGUob2xkRWxtKTtcbiAgICAgICAgY3JlYXRlRWxtKFxuICAgICAgICAgIHZub2RlLFxuICAgICAgICAgIGluc2VydGVkVm5vZGVRdWV1ZSxcbiAgICAgICAgICAvLyBleHRyZW1lbHkgcmFyZSBlZGdlIGNhc2U6IGRvIG5vdCBpbnNlcnQgaWYgb2xkIGVsZW1lbnQgaXMgaW4gYVxuICAgICAgICAgIC8vIGxlYXZpbmcgdHJhbnNpdGlvbi4gT25seSBoYXBwZW5zIHdoZW4gY29tYmluaW5nIHRyYW5zaXRpb24gK1xuICAgICAgICAgIC8vIGtlZXAtYWxpdmUgKyBIT0NzLiAoIzQ1OTApXG4gICAgICAgICAgb2xkRWxtLl9sZWF2ZUNiID8gbnVsbCA6IHBhcmVudEVsbSQxLFxuICAgICAgICAgIG5vZGVPcHMubmV4dFNpYmxpbmcob2xkRWxtKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0RlZih2bm9kZS5wYXJlbnQpKSB7XG4gICAgICAgICAgLy8gY29tcG9uZW50IHJvb3QgZWxlbWVudCByZXBsYWNlZC5cbiAgICAgICAgICAvLyB1cGRhdGUgcGFyZW50IHBsYWNlaG9sZGVyIG5vZGUgZWxlbWVudCwgcmVjdXJzaXZlbHlcbiAgICAgICAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZS5wYXJlbnQ7XG4gICAgICAgICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICAgICAgICBhbmNlc3Rvci5lbG0gPSB2bm9kZS5lbG07XG4gICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgIGNicy5jcmVhdGVbaV0oZW1wdHlOb2RlLCB2bm9kZS5wYXJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0RlZihwYXJlbnRFbG0kMSkpIHtcbiAgICAgICAgICByZW1vdmVWbm9kZXMocGFyZW50RWxtJDEsIFtvbGRWbm9kZV0sIDAsIDApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRhZykpIHtcbiAgICAgICAgICBpbnZva2VEZXN0cm95SG9vayhvbGRWbm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIGlzSW5pdGlhbFBhdGNoKTtcbiAgICByZXR1cm4gdm5vZGUuZWxtXG4gIH1cbn1cblxuLyogICovXG5cbnZhciBkaXJlY3RpdmVzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIHVwZGF0ZTogdXBkYXRlRGlyZWN0aXZlcyxcbiAgZGVzdHJveTogZnVuY3Rpb24gdW5iaW5kRGlyZWN0aXZlcyAodm5vZGUpIHtcbiAgICB1cGRhdGVEaXJlY3RpdmVzKHZub2RlLCBlbXB0eU5vZGUpO1xuICB9XG59O1xuXG5mdW5jdGlvbiB1cGRhdGVEaXJlY3RpdmVzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKG9sZFZub2RlLmRhdGEuZGlyZWN0aXZlcyB8fCB2bm9kZS5kYXRhLmRpcmVjdGl2ZXMpIHtcbiAgICBfdXBkYXRlKG9sZFZub2RlLCB2bm9kZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX3VwZGF0ZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBpc0NyZWF0ZSA9IG9sZFZub2RlID09PSBlbXB0eU5vZGU7XG4gIHZhciBpc0Rlc3Ryb3kgPSB2bm9kZSA9PT0gZW1wdHlOb2RlO1xuICB2YXIgb2xkRGlycyA9IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMShvbGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMsIG9sZFZub2RlLmNvbnRleHQpO1xuICB2YXIgbmV3RGlycyA9IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSh2bm9kZS5kYXRhLmRpcmVjdGl2ZXMsIHZub2RlLmNvbnRleHQpO1xuXG4gIHZhciBkaXJzV2l0aEluc2VydCA9IFtdO1xuICB2YXIgZGlyc1dpdGhQb3N0cGF0Y2ggPSBbXTtcblxuICB2YXIga2V5LCBvbGREaXIsIGRpcjtcbiAgZm9yIChrZXkgaW4gbmV3RGlycykge1xuICAgIG9sZERpciA9IG9sZERpcnNba2V5XTtcbiAgICBkaXIgPSBuZXdEaXJzW2tleV07XG4gICAgaWYgKCFvbGREaXIpIHtcbiAgICAgIC8vIG5ldyBkaXJlY3RpdmUsIGJpbmRcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAnYmluZCcsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmluc2VydGVkKSB7XG4gICAgICAgIGRpcnNXaXRoSW5zZXJ0LnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXhpc3RpbmcgZGlyZWN0aXZlLCB1cGRhdGVcbiAgICAgIGRpci5vbGRWYWx1ZSA9IG9sZERpci52YWx1ZTtcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAndXBkYXRlJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChkaXIuZGVmICYmIGRpci5kZWYuY29tcG9uZW50VXBkYXRlZCkge1xuICAgICAgICBkaXJzV2l0aFBvc3RwYXRjaC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aCkge1xuICAgIHZhciBjYWxsSW5zZXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aEluc2VydC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoSW5zZXJ0W2ldLCAnaW5zZXJ0ZWQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGlzQ3JlYXRlKSB7XG4gICAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ2luc2VydCcsIGNhbGxJbnNlcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsSW5zZXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoUG9zdHBhdGNoLmxlbmd0aCkge1xuICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLmRhdGEuaG9vayB8fCAodm5vZGUuZGF0YS5ob29rID0ge30pLCAncG9zdHBhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aFBvc3RwYXRjaC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoUG9zdHBhdGNoW2ldLCAnY29tcG9uZW50VXBkYXRlZCcsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIWlzQ3JlYXRlKSB7XG4gICAgZm9yIChrZXkgaW4gb2xkRGlycykge1xuICAgICAgaWYgKCFuZXdEaXJzW2tleV0pIHtcbiAgICAgICAgLy8gbm8gbG9uZ2VyIHByZXNlbnQsIHVuYmluZFxuICAgICAgICBjYWxsSG9vayQxKG9sZERpcnNba2V5XSwgJ3VuYmluZCcsIG9sZFZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGVtcHR5TW9kaWZpZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyQxIChcbiAgZGlycyxcbiAgdm1cbikge1xuICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKCFkaXJzKSB7XG4gICAgcmV0dXJuIHJlc1xuICB9XG4gIHZhciBpLCBkaXI7XG4gIGZvciAoaSA9IDA7IGkgPCBkaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGlyID0gZGlyc1tpXTtcbiAgICBpZiAoIWRpci5tb2RpZmllcnMpIHtcbiAgICAgIGRpci5tb2RpZmllcnMgPSBlbXB0eU1vZGlmaWVycztcbiAgICB9XG4gICAgcmVzW2dldFJhd0Rpck5hbWUoZGlyKV0gPSBkaXI7XG4gICAgZGlyLmRlZiA9IHJlc29sdmVBc3NldCh2bS4kb3B0aW9ucywgJ2RpcmVjdGl2ZXMnLCBkaXIubmFtZSwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBnZXRSYXdEaXJOYW1lIChkaXIpIHtcbiAgcmV0dXJuIGRpci5yYXdOYW1lIHx8ICgoZGlyLm5hbWUpICsgXCIuXCIgKyAoT2JqZWN0LmtleXMoZGlyLm1vZGlmaWVycyB8fCB7fSkuam9pbignLicpKSlcbn1cblxuZnVuY3Rpb24gY2FsbEhvb2skMSAoZGlyLCBob29rLCB2bm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSkge1xuICB2YXIgZm4gPSBkaXIuZGVmICYmIGRpci5kZWZbaG9va107XG4gIGlmIChmbikge1xuICAgIHRyeSB7XG4gICAgICBmbih2bm9kZS5lbG0sIGRpciwgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZub2RlLmNvbnRleHQsIChcImRpcmVjdGl2ZSBcIiArIChkaXIubmFtZSkgKyBcIiBcIiArIGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGJhc2VNb2R1bGVzID0gW1xuICByZWYsXG4gIGRpcmVjdGl2ZXNcbl07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVBdHRycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEuYXR0cnMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5hdHRycykpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIga2V5LCBjdXIsIG9sZDtcbiAgdmFyIGVsbSA9IHZub2RlLmVsbTtcbiAgdmFyIG9sZEF0dHJzID0gb2xkVm5vZGUuZGF0YS5hdHRycyB8fCB7fTtcbiAgdmFyIGF0dHJzID0gdm5vZGUuZGF0YS5hdHRycyB8fCB7fTtcbiAgLy8gY2xvbmUgb2JzZXJ2ZWQgb2JqZWN0cywgYXMgdGhlIHVzZXIgcHJvYmFibHkgd2FudHMgdG8gbXV0YXRlIGl0XG4gIGlmIChpc0RlZihhdHRycy5fX29iX18pKSB7XG4gICAgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJzID0gZXh0ZW5kKHt9LCBhdHRycyk7XG4gIH1cblxuICBmb3IgKGtleSBpbiBhdHRycykge1xuICAgIGN1ciA9IGF0dHJzW2tleV07XG4gICAgb2xkID0gb2xkQXR0cnNba2V5XTtcbiAgICBpZiAob2xkICE9PSBjdXIpIHtcbiAgICAgIHNldEF0dHIoZWxtLCBrZXksIGN1cik7XG4gICAgfVxuICB9XG4gIC8vICM0MzkxOiBpbiBJRTksIHNldHRpbmcgdHlwZSBjYW4gcmVzZXQgdmFsdWUgZm9yIGlucHV0W3R5cGU9cmFkaW9dXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNJRTkgJiYgYXR0cnMudmFsdWUgIT09IG9sZEF0dHJzLnZhbHVlKSB7XG4gICAgc2V0QXR0cihlbG0sICd2YWx1ZScsIGF0dHJzLnZhbHVlKTtcbiAgfVxuICBmb3IgKGtleSBpbiBvbGRBdHRycykge1xuICAgIGlmIChpc1VuZGVmKGF0dHJzW2tleV0pKSB7XG4gICAgICBpZiAoaXNYbGluayhrZXkpKSB7XG4gICAgICAgIGVsbS5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Aoa2V5KSk7XG4gICAgICB9IGVsc2UgaWYgKCFpc0VudW1lcmF0ZWRBdHRyKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRBdHRyIChlbCwga2V5LCB2YWx1ZSkge1xuICBpZiAoaXNCb29sZWFuQXR0cihrZXkpKSB7XG4gICAgLy8gc2V0IGF0dHJpYnV0ZSBmb3IgYmxhbmsgdmFsdWVcbiAgICAvLyBlLmcuIDxvcHRpb24gZGlzYWJsZWQ+U2VsZWN0IG9uZTwvb3B0aW9uPlxuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGtleSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpIHx8IHZhbHVlID09PSAnZmFsc2UnID8gJ2ZhbHNlJyA6ICd0cnVlJyk7XG4gIH0gZWxzZSBpZiAoaXNYbGluayhrZXkpKSB7XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Aoa2V5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZU5TKHhsaW5rTlMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBhdHRycyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVBdHRycyxcbiAgdXBkYXRlOiB1cGRhdGVBdHRyc1xufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUNsYXNzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBvbGREYXRhID0gb2xkVm5vZGUuZGF0YTtcbiAgaWYgKFxuICAgIGlzVW5kZWYoZGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICBpc1VuZGVmKGRhdGEuY2xhc3MpICYmIChcbiAgICAgIGlzVW5kZWYob2xkRGF0YSkgfHwgKFxuICAgICAgICBpc1VuZGVmKG9sZERhdGEuc3RhdGljQ2xhc3MpICYmXG4gICAgICAgIGlzVW5kZWYob2xkRGF0YS5jbGFzcylcbiAgICAgIClcbiAgICApXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNscyA9IGdlbkNsYXNzRm9yVm5vZGUodm5vZGUpO1xuXG4gIC8vIGhhbmRsZSB0cmFuc2l0aW9uIGNsYXNzZXNcbiAgdmFyIHRyYW5zaXRpb25DbGFzcyA9IGVsLl90cmFuc2l0aW9uQ2xhc3NlcztcbiAgaWYgKGlzRGVmKHRyYW5zaXRpb25DbGFzcykpIHtcbiAgICBjbHMgPSBjb25jYXQoY2xzLCBzdHJpbmdpZnlDbGFzcyh0cmFuc2l0aW9uQ2xhc3MpKTtcbiAgfVxuXG4gIC8vIHNldCB0aGUgY2xhc3NcbiAgaWYgKGNscyAhPT0gZWwuX3ByZXZDbGFzcykge1xuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjbHMpO1xuICAgIGVsLl9wcmV2Q2xhc3MgPSBjbHM7XG4gIH1cbn1cblxudmFyIGtsYXNzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUNsYXNzLFxuICB1cGRhdGU6IHVwZGF0ZUNsYXNzXG59O1xuXG4vKiAgKi9cblxudmFyIHZhbGlkRGl2aXNpb25DaGFyUkUgPSAvW1xcdykuK1xcLV8kXFxdXS87XG5cblxuXG5mdW5jdGlvbiB3cmFwRmlsdGVyIChleHAsIGZpbHRlcikge1xuICB2YXIgaSA9IGZpbHRlci5pbmRleE9mKCcoJyk7XG4gIGlmIChpIDwgMCkge1xuICAgIC8vIF9mOiByZXNvbHZlRmlsdGVyXG4gICAgcmV0dXJuIChcIl9mKFxcXCJcIiArIGZpbHRlciArIFwiXFxcIikoXCIgKyBleHAgKyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICB2YXIgbmFtZSA9IGZpbHRlci5zbGljZSgwLCBpKTtcbiAgICB2YXIgYXJncyA9IGZpbHRlci5zbGljZShpICsgMSk7XG4gICAgcmV0dXJuIChcIl9mKFxcXCJcIiArIG5hbWUgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIsXCIgKyBhcmdzKVxuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuLyoqXG4gKiBDcm9zcy1wbGF0Zm9ybSBjb2RlIGdlbmVyYXRpb24gZm9yIGNvbXBvbmVudCB2LW1vZGVsXG4gKi9cblxuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGNvZGVnZW4gaGVscGVyIGZvciBnZW5lcmF0aW5nIHYtbW9kZWwgdmFsdWUgYXNzaWdubWVudCBjb2RlLlxuICovXG5cblxuLyoqXG4gKiBwYXJzZSBkaXJlY3RpdmUgbW9kZWwgdG8gZG8gdGhlIGFycmF5IHVwZGF0ZSB0cmFuc2Zvcm0uIGFbaWR4XSA9IHZhbCA9PiAkJGEuc3BsaWNlKCQkaWR4LCAxLCB2YWwpXG4gKlxuICogZm9yIGxvb3AgcG9zc2libGUgY2FzZXM6XG4gKlxuICogLSB0ZXN0XG4gKiAtIHRlc3RbaWR4XVxuICogLSB0ZXN0W3Rlc3QxW2lkeF1dXG4gKiAtIHRlc3RbXCJhXCJdW2lkeF1cbiAqIC0geHh4LnRlc3RbYVthXS50ZXN0MVtpZHhdXVxuICogLSB0ZXN0Lnh4eC5hW1wiYXNhXCJdW3Rlc3QxW2lkeF1dXG4gKlxuICovXG5cbnZhciBzdHI7XG52YXIgaW5kZXgkMTtcblxuLyogICovXG5cbi8vIGluIHNvbWUgY2FzZXMsIHRoZSBldmVudCB1c2VkIGhhcyB0byBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWVcbi8vIHNvIHdlIHVzZWQgc29tZSByZXNlcnZlZCB0b2tlbnMgZHVyaW5nIGNvbXBpbGUuXG52YXIgUkFOR0VfVE9LRU4gPSAnX19yJztcbnZhciBDSEVDS0JPWF9SQURJT19UT0tFTiA9ICdfX2MnO1xuXG4vKiAgKi9cblxuLy8gbm9ybWFsaXplIHYtbW9kZWwgZXZlbnQgdG9rZW5zIHRoYXQgY2FuIG9ubHkgYmUgZGV0ZXJtaW5lZCBhdCBydW50aW1lLlxuLy8gaXQncyBpbXBvcnRhbnQgdG8gcGxhY2UgdGhlIGV2ZW50IGFzIHRoZSBmaXJzdCBpbiB0aGUgYXJyYXkgYmVjYXVzZVxuLy8gdGhlIHdob2xlIHBvaW50IGlzIGVuc3VyaW5nIHRoZSB2LW1vZGVsIGNhbGxiYWNrIGdldHMgY2FsbGVkIGJlZm9yZVxuLy8gdXNlci1hdHRhY2hlZCBoYW5kbGVycy5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50cyAob24pIHtcbiAgdmFyIGV2ZW50O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKG9uW1JBTkdFX1RPS0VOXSkpIHtcbiAgICAvLyBJRSBpbnB1dFt0eXBlPXJhbmdlXSBvbmx5IHN1cHBvcnRzIGBjaGFuZ2VgIGV2ZW50XG4gICAgZXZlbnQgPSBpc0lFID8gJ2NoYW5nZScgOiAnaW5wdXQnO1xuICAgIG9uW2V2ZW50XSA9IFtdLmNvbmNhdChvbltSQU5HRV9UT0tFTl0sIG9uW2V2ZW50XSB8fCBbXSk7XG4gICAgZGVsZXRlIG9uW1JBTkdFX1RPS0VOXTtcbiAgfVxuICBpZiAoaXNEZWYob25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dKSkge1xuICAgIC8vIENocm9tZSBmaXJlcyBtaWNyb3Rhc2tzIGluIGJldHdlZW4gY2xpY2svY2hhbmdlLCBsZWFkcyB0byAjNDUyMVxuICAgIGV2ZW50ID0gaXNDaHJvbWUgPyAnY2xpY2snIDogJ2NoYW5nZSc7XG4gICAgb25bZXZlbnRdID0gW10uY29uY2F0KG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtdKTtcbiAgICBkZWxldGUgb25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dO1xuICB9XG59XG5cbnZhciB0YXJnZXQkMTtcblxuZnVuY3Rpb24gYWRkJDEgKFxuICBldmVudCxcbiAgaGFuZGxlcixcbiAgb25jZSQkMSxcbiAgY2FwdHVyZSxcbiAgcGFzc2l2ZVxuKSB7XG4gIGlmIChvbmNlJCQxKSB7XG4gICAgdmFyIG9sZEhhbmRsZXIgPSBoYW5kbGVyO1xuICAgIHZhciBfdGFyZ2V0ID0gdGFyZ2V0JDE7IC8vIHNhdmUgY3VycmVudCB0YXJnZXQgZWxlbWVudCBpbiBjbG9zdXJlXG4gICAgaGFuZGxlciA9IGZ1bmN0aW9uIChldikge1xuICAgICAgdmFyIHJlcyA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICAgICAgPyBvbGRIYW5kbGVyKGV2KVxuICAgICAgICA6IG9sZEhhbmRsZXIuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgIGlmIChyZXMgIT09IG51bGwpIHtcbiAgICAgICAgcmVtb3ZlJDIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUsIF90YXJnZXQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAgdGFyZ2V0JDEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICBldmVudCxcbiAgICBoYW5kbGVyLFxuICAgIHN1cHBvcnRzUGFzc2l2ZVxuICAgICAgPyB7IGNhcHR1cmU6IGNhcHR1cmUsIHBhc3NpdmU6IHBhc3NpdmUgfVxuICAgICAgOiBjYXB0dXJlXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSQyIChcbiAgZXZlbnQsXG4gIGhhbmRsZXIsXG4gIGNhcHR1cmUsXG4gIF90YXJnZXRcbikge1xuICAoX3RhcmdldCB8fCB0YXJnZXQkMSkucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgY2FwdHVyZSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZURPTUxpc3RlbmVycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEub24pICYmIGlzVW5kZWYodm5vZGUuZGF0YS5vbikpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb24gPSB2bm9kZS5kYXRhLm9uIHx8IHt9O1xuICB2YXIgb2xkT24gPSBvbGRWbm9kZS5kYXRhLm9uIHx8IHt9O1xuICB0YXJnZXQkMSA9IHZub2RlLmVsbTtcbiAgbm9ybWFsaXplRXZlbnRzKG9uKTtcbiAgdXBkYXRlTGlzdGVuZXJzKG9uLCBvbGRPbiwgYWRkJDEsIHJlbW92ZSQyLCB2bm9kZS5jb250ZXh0KTtcbn1cblxudmFyIGV2ZW50cyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01MaXN0ZW5lcnMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NTGlzdGVuZXJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlRE9NUHJvcHMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmRvbVByb3BzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEuZG9tUHJvcHMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkUHJvcHMgPSBvbGRWbm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKHByb3BzLl9fb2JfXykpIHtcbiAgICBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgPSBleHRlbmQoe30sIHByb3BzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIG9sZFByb3BzKSB7XG4gICAgaWYgKGlzVW5kZWYocHJvcHNba2V5XSkpIHtcbiAgICAgIGVsbVtrZXldID0gJyc7XG4gICAgfVxuICB9XG4gIGZvciAoa2V5IGluIHByb3BzKSB7XG4gICAgY3VyID0gcHJvcHNba2V5XTtcbiAgICAvLyBpZ25vcmUgY2hpbGRyZW4gaWYgdGhlIG5vZGUgaGFzIHRleHRDb250ZW50IG9yIGlubmVySFRNTCxcbiAgICAvLyBhcyB0aGVzZSB3aWxsIHRocm93IGF3YXkgZXhpc3RpbmcgRE9NIG5vZGVzIGFuZCBjYXVzZSByZW1vdmFsIGVycm9yc1xuICAgIC8vIG9uIHN1YnNlcXVlbnQgcGF0Y2hlcyAoIzMzNjApXG4gICAgaWYgKGtleSA9PT0gJ3RleHRDb250ZW50JyB8fCBrZXkgPT09ICdpbm5lckhUTUwnKSB7XG4gICAgICBpZiAodm5vZGUuY2hpbGRyZW4pIHsgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDsgfVxuICAgICAgaWYgKGN1ciA9PT0gb2xkUHJvcHNba2V5XSkgeyBjb250aW51ZSB9XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ3ZhbHVlJykge1xuICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgX3ZhbHVlIGFzIHdlbGwgc2luY2VcbiAgICAgIC8vIG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWRcbiAgICAgIGVsbS5fdmFsdWUgPSBjdXI7XG4gICAgICAvLyBhdm9pZCByZXNldHRpbmcgY3Vyc29yIHBvc2l0aW9uIHdoZW4gdmFsdWUgaXMgdGhlIHNhbWVcbiAgICAgIHZhciBzdHJDdXIgPSBpc1VuZGVmKGN1cikgPyAnJyA6IFN0cmluZyhjdXIpO1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZVZhbHVlKGVsbSwgdm5vZGUsIHN0ckN1cikpIHtcbiAgICAgICAgZWxtLnZhbHVlID0gc3RyQ3VyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbG1ba2V5XSA9IGN1cjtcbiAgICB9XG4gIH1cbn1cblxuLy8gY2hlY2sgcGxhdGZvcm1zL3dlYi91dGlsL2F0dHJzLmpzIGFjY2VwdFZhbHVlXG5cblxuZnVuY3Rpb24gc2hvdWxkVXBkYXRlVmFsdWUgKFxuICBlbG0sXG4gIHZub2RlLFxuICBjaGVja1ZhbFxuKSB7XG4gIHJldHVybiAoIWVsbS5jb21wb3NpbmcgJiYgKFxuICAgIHZub2RlLnRhZyA9PT0gJ29wdGlvbicgfHxcbiAgICBpc0RpcnR5KGVsbSwgY2hlY2tWYWwpIHx8XG4gICAgaXNJbnB1dENoYW5nZWQoZWxtLCBjaGVja1ZhbClcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNEaXJ0eSAoZWxtLCBjaGVja1ZhbCkge1xuICAvLyByZXR1cm4gdHJ1ZSB3aGVuIHRleHRib3ggKC5udW1iZXIgYW5kIC50cmltKSBsb3NlcyBmb2N1cyBhbmQgaXRzIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBkYXRlZCB2YWx1ZVxuICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZWxtICYmIGVsbS52YWx1ZSAhPT0gY2hlY2tWYWxcbn1cblxuZnVuY3Rpb24gaXNJbnB1dENoYW5nZWQgKGVsbSwgbmV3VmFsKSB7XG4gIHZhciB2YWx1ZSA9IGVsbS52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGVsbS5fdk1vZGlmaWVyczsgLy8gaW5qZWN0ZWQgYnkgdi1tb2RlbCBydW50aW1lXG4gIGlmICgoaXNEZWYobW9kaWZpZXJzKSAmJiBtb2RpZmllcnMubnVtYmVyKSB8fCBlbG0udHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdG9OdW1iZXIodmFsdWUpICE9PSB0b051bWJlcihuZXdWYWwpXG4gIH1cbiAgaWYgKGlzRGVmKG1vZGlmaWVycykgJiYgbW9kaWZpZXJzLnRyaW0pIHtcbiAgICByZXR1cm4gdmFsdWUudHJpbSgpICE9PSBuZXdWYWwudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHZhbHVlICE9PSBuZXdWYWxcbn1cblxudmFyIGRvbVByb3BzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTVByb3BzLFxuICB1cGRhdGU6IHVwZGF0ZURPTVByb3BzXG59O1xuXG4vKiAgKi9cblxudmFyIHBhcnNlU3R5bGVUZXh0ID0gY2FjaGVkKGZ1bmN0aW9uIChjc3NUZXh0KSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGxpc3REZWxpbWl0ZXIgPSAvOyg/IVteKF0qXFwpKS9nO1xuICB2YXIgcHJvcGVydHlEZWxpbWl0ZXIgPSAvOiguKykvO1xuICBjc3NUZXh0LnNwbGl0KGxpc3REZWxpbWl0ZXIpLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlEZWxpbWl0ZXIpO1xuICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJlc1t0bXBbMF0udHJpbSgpXSA9IHRtcFsxXS50cmltKCkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vLyBtZXJnZSBzdGF0aWMgYW5kIGR5bmFtaWMgc3R5bGUgZGF0YSBvbiB0aGUgc2FtZSB2bm9kZVxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGVEYXRhIChkYXRhKSB7XG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyhkYXRhLnN0eWxlKTtcbiAgLy8gc3RhdGljIHN0eWxlIGlzIHByZS1wcm9jZXNzZWQgaW50byBhbiBvYmplY3QgZHVyaW5nIGNvbXBpbGF0aW9uXG4gIC8vIGFuZCBpcyBhbHdheXMgYSBmcmVzaCBvYmplY3QsIHNvIGl0J3Mgc2FmZSB0byBtZXJnZSBpbnRvIGl0XG4gIHJldHVybiBkYXRhLnN0YXRpY1N0eWxlXG4gICAgPyBleHRlbmQoZGF0YS5zdGF0aWNTdHlsZSwgc3R5bGUpXG4gICAgOiBzdHlsZVxufVxuXG4vLyBub3JtYWxpemUgcG9zc2libGUgYXJyYXkgLyBzdHJpbmcgdmFsdWVzIGludG8gT2JqZWN0XG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZUJpbmRpbmcgKGJpbmRpbmdTdHlsZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShiaW5kaW5nU3R5bGUpKSB7XG4gICAgcmV0dXJuIHRvT2JqZWN0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICBpZiAodHlwZW9mIGJpbmRpbmdTdHlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyc2VTdHlsZVRleHQoYmluZGluZ1N0eWxlKVxuICB9XG4gIHJldHVybiBiaW5kaW5nU3R5bGVcbn1cblxuLyoqXG4gKiBwYXJlbnQgY29tcG9uZW50IHN0eWxlIHNob3VsZCBiZSBhZnRlciBjaGlsZCdzXG4gKiBzbyB0aGF0IHBhcmVudCBjb21wb25lbnQncyBzdHlsZSBjb3VsZCBvdmVycmlkZSBpdFxuICovXG5mdW5jdGlvbiBnZXRTdHlsZSAodm5vZGUsIGNoZWNrQ2hpbGQpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgc3R5bGVEYXRhO1xuXG4gIGlmIChjaGVja0NoaWxkKSB7XG4gICAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoY2hpbGROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGlsZE5vZGUuZGF0YSkpKSB7XG4gICAgICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEodm5vZGUuZGF0YSkpKSB7XG4gICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgfVxuXG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG4gIHdoaWxlICgocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChwYXJlbnROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShwYXJlbnROb2RlLmRhdGEpKSkge1xuICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGNzc1ZhclJFID0gL14tLS87XG52YXIgaW1wb3J0YW50UkUgPSAvXFxzKiFpbXBvcnRhbnQkLztcbnZhciBzZXRQcm9wID0gZnVuY3Rpb24gKGVsLCBuYW1lLCB2YWwpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjc3NWYXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsKTtcbiAgfSBlbHNlIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcbiAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgJycpLCAnaW1wb3J0YW50Jyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplKG5hbWUpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIC8vIFN1cHBvcnQgdmFsdWVzIGFycmF5IGNyZWF0ZWQgYnkgYXV0b3ByZWZpeGVyLCBlLmcuXG4gICAgICAvLyB7ZGlzcGxheTogW1wiLXdlYmtpdC1ib3hcIiwgXCItbXMtZmxleGJveFwiLCBcImZsZXhcIl19XG4gICAgICAvLyBTZXQgdGhlbSBvbmUgYnkgb25lLCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBvbmx5IHNldCB0aG9zZSBpdCBjYW4gcmVjb2duaXplXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdmFsLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbFtpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVdID0gdmFsO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHByZWZpeGVzID0gWydXZWJraXQnLCAnTW96JywgJ21zJ107XG5cbnZhciB0ZXN0RWw7XG52YXIgbm9ybWFsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChwcm9wKSB7XG4gIHRlc3RFbCA9IHRlc3RFbCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgcHJvcCA9IGNhbWVsaXplKHByb3ApO1xuICBpZiAocHJvcCAhPT0gJ2ZpbHRlcicgJiYgKHByb3AgaW4gdGVzdEVsLnN0eWxlKSkge1xuICAgIHJldHVybiBwcm9wXG4gIH1cbiAgdmFyIHVwcGVyID0gcHJvcC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3Auc2xpY2UoMSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJlZml4ZWQgPSBwcmVmaXhlc1tpXSArIHVwcGVyO1xuICAgIGlmIChwcmVmaXhlZCBpbiB0ZXN0RWwuc3R5bGUpIHtcbiAgICAgIHJldHVybiBwcmVmaXhlZFxuICAgIH1cbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG5cbiAgaWYgKGlzVW5kZWYoZGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihkYXRhLnN0eWxlKSAmJlxuICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihvbGREYXRhLnN0eWxlKVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjdXIsIG5hbWU7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcbiAgdmFyIG9sZFN0YXRpY1N0eWxlID0gb2xkRGF0YS5zdGF0aWNTdHlsZTtcbiAgdmFyIG9sZFN0eWxlQmluZGluZyA9IG9sZERhdGEubm9ybWFsaXplZFN0eWxlIHx8IG9sZERhdGEuc3R5bGUgfHwge307XG5cbiAgLy8gaWYgc3RhdGljIHN0eWxlIGV4aXN0cywgc3R5bGViaW5kaW5nIGFscmVhZHkgbWVyZ2VkIGludG8gaXQgd2hlbiBkb2luZyBub3JtYWxpemVTdHlsZURhdGFcbiAgdmFyIG9sZFN0eWxlID0gb2xkU3RhdGljU3R5bGUgfHwgb2xkU3R5bGVCaW5kaW5nO1xuXG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyh2bm9kZS5kYXRhLnN0eWxlKSB8fCB7fTtcblxuICAvLyBzdG9yZSBub3JtYWxpemVkIHN0eWxlIHVuZGVyIGEgZGlmZmVyZW50IGtleSBmb3IgbmV4dCBkaWZmXG4gIC8vIG1ha2Ugc3VyZSB0byBjbG9uZSBpdCBpZiBpdCdzIHJlYWN0aXZlLCBzaW5jZSB0aGUgdXNlciBsaWtsZXkgd2FudHNcbiAgLy8gdG8gbXV0YXRlIGl0LlxuICB2bm9kZS5kYXRhLm5vcm1hbGl6ZWRTdHlsZSA9IGlzRGVmKHN0eWxlLl9fb2JfXylcbiAgICA/IGV4dGVuZCh7fSwgc3R5bGUpXG4gICAgOiBzdHlsZTtcblxuICB2YXIgbmV3U3R5bGUgPSBnZXRTdHlsZSh2bm9kZSwgdHJ1ZSk7XG5cbiAgZm9yIChuYW1lIGluIG9sZFN0eWxlKSB7XG4gICAgaWYgKGlzVW5kZWYobmV3U3R5bGVbbmFtZV0pKSB7XG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCAnJyk7XG4gICAgfVxuICB9XG4gIGZvciAobmFtZSBpbiBuZXdTdHlsZSkge1xuICAgIGN1ciA9IG5ld1N0eWxlW25hbWVdO1xuICAgIGlmIChjdXIgIT09IG9sZFN0eWxlW25hbWVdKSB7XG4gICAgICAvLyBpZTkgc2V0dGluZyB0byBudWxsIGhhcyBubyBlZmZlY3QsIG11c3QgdXNlIGVtcHR5IHN0cmluZ1xuICAgICAgc2V0UHJvcChlbCwgbmFtZSwgY3VyID09IG51bGwgPyAnJyA6IGN1cik7XG4gICAgfVxuICB9XG59XG5cbnZhciBzdHlsZSA9IHtcbiAgY3JlYXRlOiB1cGRhdGVTdHlsZSxcbiAgdXBkYXRlOiB1cGRhdGVTdHlsZVxufTtcblxuLyogICovXG5cbi8qKlxuICogQWRkIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gYWRkQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3QuYWRkKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZChjbHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIGlmIChjdXIuaW5kZXhPZignICcgKyBjbHMgKyAnICcpIDwgMCkge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIChjdXIgKyBjbHMpLnRyaW0oKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShjbHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIHZhciB0YXIgPSAnICcgKyBjbHMgKyAnICc7XG4gICAgd2hpbGUgKGN1ci5pbmRleE9mKHRhcikgPj0gMCkge1xuICAgICAgY3VyID0gY3VyLnJlcGxhY2UodGFyLCAnICcpO1xuICAgIH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY3VyLnRyaW0oKSk7XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uIChkZWYkJDEpIHtcbiAgaWYgKCFkZWYkJDEpIHtcbiAgICByZXR1cm5cbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcmVzID0ge307XG4gICAgaWYgKGRlZiQkMS5jc3MgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbmQocmVzLCBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEubmFtZSB8fCAndicpKTtcbiAgICB9XG4gICAgZXh0ZW5kKHJlcywgZGVmJCQxKTtcbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXV0b0Nzc1RyYW5zaXRpb24oZGVmJCQxKVxuICB9XG59XG5cbnZhciBhdXRvQ3NzVHJhbnNpdGlvbiA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4ge1xuICAgIGVudGVyQ2xhc3M6IChuYW1lICsgXCItZW50ZXJcIiksXG4gICAgZW50ZXJUb0NsYXNzOiAobmFtZSArIFwiLWVudGVyLXRvXCIpLFxuICAgIGVudGVyQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItZW50ZXItYWN0aXZlXCIpLFxuICAgIGxlYXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmVcIiksXG4gICAgbGVhdmVUb0NsYXNzOiAobmFtZSArIFwiLWxlYXZlLXRvXCIpLFxuICAgIGxlYXZlQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmUtYWN0aXZlXCIpXG4gIH1cbn0pO1xuXG52YXIgaGFzVHJhbnNpdGlvbiA9IGluQnJvd3NlciAmJiAhaXNJRTk7XG52YXIgVFJBTlNJVElPTiA9ICd0cmFuc2l0aW9uJztcbnZhciBBTklNQVRJT04gPSAnYW5pbWF0aW9uJztcblxuLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eS9ldmVudCBzbmlmZmluZ1xudmFyIHRyYW5zaXRpb25Qcm9wID0gJ3RyYW5zaXRpb24nO1xudmFyIHRyYW5zaXRpb25FbmRFdmVudCA9ICd0cmFuc2l0aW9uZW5kJztcbnZhciBhbmltYXRpb25Qcm9wID0gJ2FuaW1hdGlvbic7XG52YXIgYW5pbWF0aW9uRW5kRXZlbnQgPSAnYW5pbWF0aW9uZW5kJztcbmlmIChoYXNUcmFuc2l0aW9uKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAod2luZG93Lm9udHJhbnNpdGlvbmVuZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgd2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHRyYW5zaXRpb25Qcm9wID0gJ1dlYmtpdFRyYW5zaXRpb24nO1xuICAgIHRyYW5zaXRpb25FbmRFdmVudCA9ICd3ZWJraXRUcmFuc2l0aW9uRW5kJztcbiAgfVxuICBpZiAod2luZG93Lm9uYW5pbWF0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQgIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICBhbmltYXRpb25Qcm9wID0gJ1dlYmtpdEFuaW1hdGlvbic7XG4gICAgYW5pbWF0aW9uRW5kRXZlbnQgPSAnd2Via2l0QW5pbWF0aW9uRW5kJztcbiAgfVxufVxuXG4vLyBiaW5kaW5nIHRvIHdpbmRvdyBpcyBuZWNlc3NhcnkgdG8gbWFrZSBob3QgcmVsb2FkIHdvcmsgaW4gSUUgaW4gc3RyaWN0IG1vZGVcbnZhciByYWYgPSBpbkJyb3dzZXIgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpXG4gIDogc2V0VGltZW91dDtcblxuZnVuY3Rpb24gbmV4dEZyYW1lIChmbikge1xuICByYWYoZnVuY3Rpb24gKCkge1xuICAgIHJhZihmbik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgKGVsLl90cmFuc2l0aW9uQ2xhc3NlcyB8fCAoZWwuX3RyYW5zaXRpb25DbGFzc2VzID0gW10pKS5wdXNoKGNscyk7XG4gIGFkZENsYXNzKGVsLCBjbHMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgaWYgKGVsLl90cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgIHJlbW92ZShlbC5fdHJhbnNpdGlvbkNsYXNzZXMsIGNscyk7XG4gIH1cbiAgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7XG59XG5cbmZ1bmN0aW9uIHdoZW5UcmFuc2l0aW9uRW5kcyAoXG4gIGVsLFxuICBleHBlY3RlZFR5cGUsXG4gIGNiXG4pIHtcbiAgdmFyIHJlZiA9IGdldFRyYW5zaXRpb25JbmZvKGVsLCBleHBlY3RlZFR5cGUpO1xuICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICB2YXIgdGltZW91dCA9IHJlZi50aW1lb3V0O1xuICB2YXIgcHJvcENvdW50ID0gcmVmLnByb3BDb3VudDtcbiAgaWYgKCF0eXBlKSB7IHJldHVybiBjYigpIH1cbiAgdmFyIGV2ZW50ID0gdHlwZSA9PT0gVFJBTlNJVElPTiA/IHRyYW5zaXRpb25FbmRFdmVudCA6IGFuaW1hdGlvbkVuZEV2ZW50O1xuICB2YXIgZW5kZWQgPSAwO1xuICB2YXIgZW5kID0gZnVuY3Rpb24gKCkge1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbiAgICBjYigpO1xuICB9O1xuICB2YXIgb25FbmQgPSBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZWwpIHtcbiAgICAgIGlmICgrK2VuZGVkID49IHByb3BDb3VudCkge1xuICAgICAgICBlbmQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmIChlbmRlZCA8IHByb3BDb3VudCkge1xuICAgICAgZW5kKCk7XG4gICAgfVxuICB9LCB0aW1lb3V0ICsgMSk7XG4gIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbn1cblxudmFyIHRyYW5zZm9ybVJFID0gL1xcYih0cmFuc2Zvcm18YWxsKSgsfCQpLztcblxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkluZm8gKGVsLCBleHBlY3RlZFR5cGUpIHtcbiAgdmFyIHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKTtcbiAgdmFyIHRyYW5zaXRpb25EZWxheXMgPSBzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRGVsYXknXS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbnMgPSBzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uRGVsYXlzLCB0cmFuc2l0aW9uRHVyYXRpb25zKTtcbiAgdmFyIGFuaW1hdGlvbkRlbGF5cyA9IHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0RlbGF5J10uc3BsaXQoJywgJyk7XG4gIHZhciBhbmltYXRpb25EdXJhdGlvbnMgPSBzdHlsZXNbYW5pbWF0aW9uUHJvcCArICdEdXJhdGlvbiddLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uVGltZW91dCA9IGdldFRpbWVvdXQoYW5pbWF0aW9uRGVsYXlzLCBhbmltYXRpb25EdXJhdGlvbnMpO1xuXG4gIHZhciB0eXBlO1xuICB2YXIgdGltZW91dCA9IDA7XG4gIHZhciBwcm9wQ291bnQgPSAwO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGV4cGVjdGVkVHlwZSA9PT0gVFJBTlNJVElPTikge1xuICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBUUkFOU0lUSU9OO1xuICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0O1xuICAgICAgcHJvcENvdW50ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gQU5JTUFUSU9OKSB7XG4gICAgaWYgKGFuaW1hdGlvblRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gQU5JTUFUSU9OO1xuICAgICAgdGltZW91dCA9IGFuaW1hdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRpbWVvdXQpO1xuICAgIHR5cGUgPSB0aW1lb3V0ID4gMFxuICAgICAgPyB0cmFuc2l0aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcbiAgICAgICAgPyBUUkFOU0lUSU9OXG4gICAgICAgIDogQU5JTUFUSU9OXG4gICAgICA6IG51bGw7XG4gICAgcHJvcENvdW50ID0gdHlwZVxuICAgICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXG4gICAgICAgID8gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGhcbiAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoXG4gICAgICA6IDA7XG4gIH1cbiAgdmFyIGhhc1RyYW5zZm9ybSA9XG4gICAgdHlwZSA9PT0gVFJBTlNJVElPTiAmJlxuICAgIHRyYW5zZm9ybVJFLnRlc3Qoc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ1Byb3BlcnR5J10pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgdGltZW91dDogdGltZW91dCxcbiAgICBwcm9wQ291bnQ6IHByb3BDb3VudCxcbiAgICBoYXNUcmFuc2Zvcm06IGhhc1RyYW5zZm9ybVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRpbWVvdXQgKGRlbGF5cywgZHVyYXRpb25zKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHdoaWxlIChkZWxheXMubGVuZ3RoIDwgZHVyYXRpb25zLmxlbmd0aCkge1xuICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQoZGVsYXlzKTtcbiAgfVxuXG4gIHJldHVybiBNYXRoLm1heC5hcHBseShudWxsLCBkdXJhdGlvbnMubWFwKGZ1bmN0aW9uIChkLCBpKSB7XG4gICAgcmV0dXJuIHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSlcbiAgfSkpXG59XG5cbmZ1bmN0aW9uIHRvTXMgKHMpIHtcbiAgcmV0dXJuIE51bWJlcihzLnNsaWNlKDAsIC0xKSkgKiAxMDAwXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnRlciAodm5vZGUsIHRvZ2dsZURpc3BsYXkpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuXG4gIC8vIGNhbGwgbGVhdmUgY2FsbGJhY2sgbm93XG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikpIHtcbiAgICBlbC5fbGVhdmVDYi5jYW5jZWxsZWQgPSB0cnVlO1xuICAgIGVsLl9sZWF2ZUNiKCk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmIChpc1VuZGVmKGRhdGEpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSB8fCBlbC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNzcyA9IGRhdGEuY3NzO1xuICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGVudGVyQ2xhc3MgPSBkYXRhLmVudGVyQ2xhc3M7XG4gIHZhciBlbnRlclRvQ2xhc3MgPSBkYXRhLmVudGVyVG9DbGFzcztcbiAgdmFyIGVudGVyQWN0aXZlQ2xhc3MgPSBkYXRhLmVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciBhcHBlYXJDbGFzcyA9IGRhdGEuYXBwZWFyQ2xhc3M7XG4gIHZhciBhcHBlYXJUb0NsYXNzID0gZGF0YS5hcHBlYXJUb0NsYXNzO1xuICB2YXIgYXBwZWFyQWN0aXZlQ2xhc3MgPSBkYXRhLmFwcGVhckFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlRW50ZXIgPSBkYXRhLmJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXIgPSBkYXRhLmVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlciA9IGRhdGEuYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkID0gZGF0YS5lbnRlckNhbmNlbGxlZDtcbiAgdmFyIGJlZm9yZUFwcGVhciA9IGRhdGEuYmVmb3JlQXBwZWFyO1xuICB2YXIgYXBwZWFyID0gZGF0YS5hcHBlYXI7XG4gIHZhciBhZnRlckFwcGVhciA9IGRhdGEuYWZ0ZXJBcHBlYXI7XG4gIHZhciBhcHBlYXJDYW5jZWxsZWQgPSBkYXRhLmFwcGVhckNhbmNlbGxlZDtcbiAgdmFyIGR1cmF0aW9uID0gZGF0YS5kdXJhdGlvbjtcblxuICAvLyBhY3RpdmVJbnN0YW5jZSB3aWxsIGFsd2F5cyBiZSB0aGUgPHRyYW5zaXRpb24+IGNvbXBvbmVudCBtYW5hZ2luZyB0aGlzXG4gIC8vIHRyYW5zaXRpb24uIE9uZSBlZGdlIGNhc2UgdG8gY2hlY2sgaXMgd2hlbiB0aGUgPHRyYW5zaXRpb24+IGlzIHBsYWNlZFxuICAvLyBhcyB0aGUgcm9vdCBub2RlIG9mIGEgY2hpbGQgY29tcG9uZW50LiBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjaGVja1xuICAvLyA8dHJhbnNpdGlvbj4ncyBwYXJlbnQgZm9yIGFwcGVhciBjaGVjay5cbiAgdmFyIGNvbnRleHQgPSBhY3RpdmVJbnN0YW5jZTtcbiAgdmFyIHRyYW5zaXRpb25Ob2RlID0gYWN0aXZlSW5zdGFuY2UuJHZub2RlO1xuICB3aGlsZSAodHJhbnNpdGlvbk5vZGUgJiYgdHJhbnNpdGlvbk5vZGUucGFyZW50KSB7XG4gICAgdHJhbnNpdGlvbk5vZGUgPSB0cmFuc2l0aW9uTm9kZS5wYXJlbnQ7XG4gICAgY29udGV4dCA9IHRyYW5zaXRpb25Ob2RlLmNvbnRleHQ7XG4gIH1cblxuICB2YXIgaXNBcHBlYXIgPSAhY29udGV4dC5faXNNb3VudGVkIHx8ICF2bm9kZS5pc1Jvb3RJbnNlcnQ7XG5cbiAgaWYgKGlzQXBwZWFyICYmICFhcHBlYXIgJiYgYXBwZWFyICE9PSAnJykge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHN0YXJ0Q2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJDbGFzc1xuICAgID8gYXBwZWFyQ2xhc3NcbiAgICA6IGVudGVyQ2xhc3M7XG4gIHZhciBhY3RpdmVDbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhckFjdGl2ZUNsYXNzXG4gICAgPyBhcHBlYXJBY3RpdmVDbGFzc1xuICAgIDogZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFyIHRvQ2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJUb0NsYXNzXG4gICAgPyBhcHBlYXJUb0NsYXNzXG4gICAgOiBlbnRlclRvQ2xhc3M7XG5cbiAgdmFyIGJlZm9yZUVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYmVmb3JlQXBwZWFyIHx8IGJlZm9yZUVudGVyKVxuICAgIDogYmVmb3JlRW50ZXI7XG4gIHZhciBlbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKHR5cGVvZiBhcHBlYXIgPT09ICdmdW5jdGlvbicgPyBhcHBlYXIgOiBlbnRlcilcbiAgICA6IGVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGFmdGVyQXBwZWFyIHx8IGFmdGVyRW50ZXIpXG4gICAgOiBhZnRlckVudGVyO1xuICB2YXIgZW50ZXJDYW5jZWxsZWRIb29rID0gaXNBcHBlYXJcbiAgICA/IChhcHBlYXJDYW5jZWxsZWQgfHwgZW50ZXJDYW5jZWxsZWQpXG4gICAgOiBlbnRlckNhbmNlbGxlZDtcblxuICB2YXIgZXhwbGljaXRFbnRlckR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmVudGVyXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZXhwbGljaXRFbnRlckR1cmF0aW9uICE9IG51bGwpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlvbiwgJ2VudGVyJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGVudGVySG9vayk7XG5cbiAgdmFyIGNiID0gZWwuX2VudGVyQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgfVxuICAgICAgZW50ZXJDYW5jZWxsZWRIb29rICYmIGVudGVyQ2FuY2VsbGVkSG9vayhlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyRW50ZXJIb29rICYmIGFmdGVyRW50ZXJIb29rKGVsKTtcbiAgICB9XG4gICAgZWwuX2VudGVyQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAgIC8vIHJlbW92ZSBwZW5kaW5nIGxlYXZlIGVsZW1lbnQgb24gZW50ZXIgYnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29rXG4gICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdpbnNlcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICAgIHZhciBwZW5kaW5nTm9kZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRpbmcgJiYgcGFyZW50Ll9wZW5kaW5nW3Zub2RlLmtleV07XG4gICAgICBpZiAocGVuZGluZ05vZGUgJiZcbiAgICAgICAgcGVuZGluZ05vZGUudGFnID09PSB2bm9kZS50YWcgJiZcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiXG4gICAgICApIHtcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiKCk7XG4gICAgICB9XG4gICAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzdGFydCBlbnRlciB0cmFuc2l0aW9uXG4gIGJlZm9yZUVudGVySG9vayAmJiBiZWZvcmVFbnRlckhvb2soZWwpO1xuICBpZiAoZXhwZWN0c0NTUykge1xuICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgdG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24pKSB7XG4gICAgICAgICAgc2V0VGltZW91dChjYiwgZXhwbGljaXRFbnRlckR1cmF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZub2RlLmRhdGEuc2hvdykge1xuICAgIHRvZ2dsZURpc3BsYXkgJiYgdG9nZ2xlRGlzcGxheSgpO1xuICAgIGVudGVySG9vayAmJiBlbnRlckhvb2soZWwsIGNiKTtcbiAgfVxuXG4gIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgIGNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVhdmUgKHZub2RlLCBybSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8gY2FsbCBlbnRlciBjYWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSkge1xuICAgIGVsLl9lbnRlckNiLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2VudGVyQ2IoKTtcbiAgfVxuXG4gIHZhciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtcbiAgaWYgKGlzVW5kZWYoZGF0YSkpIHtcbiAgICByZXR1cm4gcm0oKVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBsZWF2ZUNsYXNzID0gZGF0YS5sZWF2ZUNsYXNzO1xuICB2YXIgbGVhdmVUb0NsYXNzID0gZGF0YS5sZWF2ZVRvQ2xhc3M7XG4gIHZhciBsZWF2ZUFjdGl2ZUNsYXNzID0gZGF0YS5sZWF2ZUFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlTGVhdmUgPSBkYXRhLmJlZm9yZUxlYXZlO1xuICB2YXIgbGVhdmUgPSBkYXRhLmxlYXZlO1xuICB2YXIgYWZ0ZXJMZWF2ZSA9IGRhdGEuYWZ0ZXJMZWF2ZTtcbiAgdmFyIGxlYXZlQ2FuY2VsbGVkID0gZGF0YS5sZWF2ZUNhbmNlbGxlZDtcbiAgdmFyIGRlbGF5TGVhdmUgPSBkYXRhLmRlbGF5TGVhdmU7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGxlYXZlKTtcblxuICB2YXIgZXhwbGljaXRMZWF2ZUR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmxlYXZlXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNEZWYoZXhwbGljaXRMZWF2ZUR1cmF0aW9uKSkge1xuICAgIGNoZWNrRHVyYXRpb24oZXhwbGljaXRMZWF2ZUR1cmF0aW9uLCAnbGVhdmUnLCB2bm9kZSk7XG4gIH1cblxuICB2YXIgY2IgPSBlbC5fbGVhdmVDYiA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChlbC5wYXJlbnROb2RlICYmIGVsLnBhcmVudE5vZGUuX3BlbmRpbmcpIHtcbiAgICAgIGVsLnBhcmVudE5vZGUuX3BlbmRpbmdbdm5vZGUua2V5XSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgfVxuICAgICAgbGVhdmVDYW5jZWxsZWQgJiYgbGVhdmVDYW5jZWxsZWQoZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgICAgYWZ0ZXJMZWF2ZSAmJiBhZnRlckxlYXZlKGVsKTtcbiAgICB9XG4gICAgZWwuX2xlYXZlQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoZGVsYXlMZWF2ZSkge1xuICAgIGRlbGF5TGVhdmUocGVyZm9ybUxlYXZlKTtcbiAgfSBlbHNlIHtcbiAgICBwZXJmb3JtTGVhdmUoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlcmZvcm1MZWF2ZSAoKSB7XG4gICAgLy8gdGhlIGRlbGF5ZWQgbGVhdmUgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZFxuICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyByZWNvcmQgbGVhdmluZyBlbGVtZW50XG4gICAgaWYgKCF2bm9kZS5kYXRhLnNob3cpIHtcbiAgICAgIChlbC5wYXJlbnROb2RlLl9wZW5kaW5nIHx8IChlbC5wYXJlbnROb2RlLl9wZW5kaW5nID0ge30pKVsodm5vZGUua2V5KV0gPSB2bm9kZTtcbiAgICB9XG4gICAgYmVmb3JlTGVhdmUgJiYgYmVmb3JlTGVhdmUoZWwpO1xuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgICBpZiAoaXNWYWxpZER1cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbikpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIGV4cGxpY2l0TGVhdmVEdXJhdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxlYXZlICYmIGxlYXZlKGVsLCBjYik7XG4gICAgaWYgKCFleHBlY3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICBjYigpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBvbmx5IHVzZWQgaW4gZGV2IG1vZGVcbmZ1bmN0aW9uIGNoZWNrRHVyYXRpb24gKHZhbCwgbmFtZSwgdm5vZGUpIHtcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIG5vdCBhIHZhbGlkIG51bWJlciAtIFwiICtcbiAgICAgIFwiZ290IFwiICsgKEpTT04uc3RyaW5naWZ5KHZhbCkpICsgXCIuXCIsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAgfSBlbHNlIGlmIChpc05hTih2YWwpKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIE5hTiAtIFwiICtcbiAgICAgICd0aGUgZHVyYXRpb24gZXhwcmVzc2lvbiBtaWdodCBiZSBpbmNvcnJlY3QuJyxcbiAgICAgIHZub2RlLmNvbnRleHRcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWREdXJhdGlvbiAodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHRyYW5zaXRpb24gaG9vaydzIGFyZ3VtZW50IGxlbmd0aC4gVGhlIGhvb2sgbWF5IGJlOlxuICogLSBhIG1lcmdlZCBob29rIChpbnZva2VyKSB3aXRoIHRoZSBvcmlnaW5hbCBpbiAuZm5zXG4gKiAtIGEgd3JhcHBlZCBjb21wb25lbnQgbWV0aG9kIChjaGVjayAuX2xlbmd0aClcbiAqIC0gYSBwbGFpbiBmdW5jdGlvbiAoLmxlbmd0aClcbiAqL1xuZnVuY3Rpb24gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aCAoZm4pIHtcbiAgaWYgKGlzVW5kZWYoZm4pKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdmFyIGludm9rZXJGbnMgPSBmbi5mbnM7XG4gIGlmIChpc0RlZihpbnZva2VyRm5zKSkge1xuICAgIC8vIGludm9rZXJcbiAgICByZXR1cm4gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChcbiAgICAgIEFycmF5LmlzQXJyYXkoaW52b2tlckZucylcbiAgICAgICAgPyBpbnZva2VyRm5zWzBdXG4gICAgICAgIDogaW52b2tlckZuc1xuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKGZuLl9sZW5ndGggfHwgZm4ubGVuZ3RoKSA+IDFcbiAgfVxufVxuXG5mdW5jdGlvbiBfZW50ZXIgKF8sIHZub2RlKSB7XG4gIGlmICh2bm9kZS5kYXRhLnNob3cgIT09IHRydWUpIHtcbiAgICBlbnRlcih2bm9kZSk7XG4gIH1cbn1cblxudmFyIHRyYW5zaXRpb24gPSBpbkJyb3dzZXIgPyB7XG4gIGNyZWF0ZTogX2VudGVyLFxuICBhY3RpdmF0ZTogX2VudGVyLFxuICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSQkMSAodm5vZGUsIHJtKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgICBsZWF2ZSh2bm9kZSwgcm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgIH1cbiAgfVxufSA6IHt9O1xuXG52YXIgcGxhdGZvcm1Nb2R1bGVzID0gW1xuICBhdHRycyxcbiAga2xhc3MsXG4gIGV2ZW50cyxcbiAgZG9tUHJvcHMsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uXG5dO1xuXG4vKiAgKi9cblxuLy8gdGhlIGRpcmVjdGl2ZSBtb2R1bGUgc2hvdWxkIGJlIGFwcGxpZWQgbGFzdCwgYWZ0ZXIgYWxsXG4vLyBidWlsdC1pbiBtb2R1bGVzIGhhdmUgYmVlbiBhcHBsaWVkLlxudmFyIG1vZHVsZXMgPSBwbGF0Zm9ybU1vZHVsZXMuY29uY2F0KGJhc2VNb2R1bGVzKTtcblxudmFyIHBhdGNoID0gY3JlYXRlUGF0Y2hGdW5jdGlvbih7IG5vZGVPcHM6IG5vZGVPcHMsIG1vZHVsZXM6IG1vZHVsZXMgfSk7XG5cbi8qKlxuICogTm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IGxpa2UgYXR0YWNoaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIEVsZW1lbnRzLlxuICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKGlzSUU5KSB7XG4gIC8vIGh0dHA6Ly93d3cubWF0dHM0MTEuY29tL3Bvc3QvaW50ZXJuZXQtZXhwbG9yZXItOS1vbmlucHV0L1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBpZiAoZWwgJiYgZWwudm1vZGVsKSB7XG4gICAgICB0cmlnZ2VyKGVsLCAnaW5wdXQnKTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgbW9kZWwkMSA9IHtcbiAgaW5zZXJ0ZWQ6IGZ1bmN0aW9uIGluc2VydGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgdmFyIGNiID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm5vZGUuY29udGV4dCk7XG4gICAgICB9O1xuICAgICAgY2IoKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgfHwgaXNFZGdlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSAndGV4dGFyZWEnIHx8IGVsLnR5cGUgPT09ICd0ZXh0JyB8fCBlbC50eXBlID09PSAncGFzc3dvcmQnKSB7XG4gICAgICBlbC5fdk1vZGlmaWVycyA9IGJpbmRpbmcubW9kaWZpZXJzO1xuICAgICAgaWYgKCFiaW5kaW5nLm1vZGlmaWVycy5sYXp5KSB7XG4gICAgICAgIC8vIFNhZmFyaSA8IDEwLjIgJiBVSVdlYlZpZXcgZG9lc24ndCBmaXJlIGNvbXBvc2l0aW9uZW5kIHdoZW5cbiAgICAgICAgLy8gc3dpdGNoaW5nIGZvY3VzIGJlZm9yZSBjb25maXJtaW5nIGNvbXBvc2l0aW9uIGNob2ljZVxuICAgICAgICAvLyB0aGlzIGFsc28gZml4ZXMgdGhlIGlzc3VlIHdoZXJlIHNvbWUgYnJvd3NlcnMgZS5nLiBpT1MgQ2hyb21lXG4gICAgICAgIC8vIGZpcmVzIFwiY2hhbmdlXCIgaW5zdGVhZCBvZiBcImlucHV0XCIgb24gYXV0b2NvbXBsZXRlLlxuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgICAgaWYgKCFpc0FuZHJvaWQpIHtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbmVuZCcsIG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXNJRTkpIHtcbiAgICAgICAgICBlbC52bW9kZWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRVcGRhdGVkOiBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgLy8gaW4gY2FzZSB0aGUgb3B0aW9ucyByZW5kZXJlZCBieSB2LWZvciBoYXZlIGNoYW5nZWQsXG4gICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHZhbHVlIGlzIG91dC1vZi1zeW5jIHdpdGggdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gICAgICAvLyBkZXRlY3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2YWx1ZXMgdGhhdCBubyBsb25nZXIgaGFzIGEgbWF0Y2hpbmdcbiAgICAgIC8vIG9wdGlvbiBpbiB0aGUgRE9NLlxuICAgICAgdmFyIG5lZWRSZXNldCA9IGVsLm11bHRpcGxlXG4gICAgICAgID8gYmluZGluZy52YWx1ZS5zb21lKGZ1bmN0aW9uICh2KSB7IHJldHVybiBoYXNOb01hdGNoaW5nT3B0aW9uKHYsIGVsLm9wdGlvbnMpOyB9KVxuICAgICAgICA6IGJpbmRpbmcudmFsdWUgIT09IGJpbmRpbmcub2xkVmFsdWUgJiYgaGFzTm9NYXRjaGluZ09wdGlvbihiaW5kaW5nLnZhbHVlLCBlbC5vcHRpb25zKTtcbiAgICAgIGlmIChuZWVkUmVzZXQpIHtcbiAgICAgICAgdHJpZ2dlcihlbCwgJ2NoYW5nZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gc2V0U2VsZWN0ZWQgKGVsLCBiaW5kaW5nLCB2bSkge1xuICB2YXIgdmFsdWUgPSBiaW5kaW5nLnZhbHVlO1xuICB2YXIgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xuICBpZiAoaXNNdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIjxzZWxlY3QgbXVsdGlwbGUgdi1tb2RlbD1cXFwiXCIgKyAoYmluZGluZy5leHByZXNzaW9uKSArIFwiXFxcIj4gXCIgK1xuICAgICAgXCJleHBlY3RzIGFuIEFycmF5IHZhbHVlIGZvciBpdHMgYmluZGluZywgYnV0IGdvdCBcIiArIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSksXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlbGVjdGVkLCBvcHRpb247XG4gIGZvciAodmFyIGkgPSAwLCBsID0gZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvcHRpb24gPSBlbC5vcHRpb25zW2ldO1xuICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICBzZWxlY3RlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgZ2V0VmFsdWUob3B0aW9uKSkgPiAtMTtcbiAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG4gICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb24pLCB2YWx1ZSkpIHtcbiAgICAgICAgaWYgKGVsLnNlbGVjdGVkSW5kZXggIT09IGkpIHtcbiAgICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgZWwuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc05vTWF0Y2hpbmdPcHRpb24gKHZhbHVlLCBvcHRpb25zKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gb3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb25zW2ldKSwgdmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUgKG9wdGlvbikge1xuICByZXR1cm4gJ192YWx1ZScgaW4gb3B0aW9uXG4gICAgPyBvcHRpb24uX3ZhbHVlXG4gICAgOiBvcHRpb24udmFsdWVcbn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvblN0YXJ0IChlKSB7XG4gIGUudGFyZ2V0LmNvbXBvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQgKGUpIHtcbiAgLy8gcHJldmVudCB0cmlnZ2VyaW5nIGFuIGlucHV0IGV2ZW50IGZvciBubyByZWFzb25cbiAgaWYgKCFlLnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuIH1cbiAgZS50YXJnZXQuY29tcG9zaW5nID0gZmFsc2U7XG4gIHRyaWdnZXIoZS50YXJnZXQsICdpbnB1dCcpO1xufVxuXG5mdW5jdGlvbiB0cmlnZ2VyIChlbCwgdHlwZSkge1xuICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gIGUuaW5pdEV2ZW50KHR5cGUsIHRydWUsIHRydWUpO1xuICBlbC5kaXNwYXRjaEV2ZW50KGUpO1xufVxuXG4vKiAgKi9cblxuLy8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBwb3NzaWJsZSB0cmFuc2l0aW9uIGRlZmluZWQgaW5zaWRlIHRoZSBjb21wb25lbnQgcm9vdFxuZnVuY3Rpb24gbG9jYXRlTm9kZSAodm5vZGUpIHtcbiAgcmV0dXJuIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICYmICghdm5vZGUuZGF0YSB8fCAhdm5vZGUuZGF0YS50cmFuc2l0aW9uKVxuICAgID8gbG9jYXRlTm9kZSh2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpXG4gICAgOiB2bm9kZVxufVxuXG52YXIgc2hvdyA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZCAoZWwsIHJlZiwgdm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSByZWYudmFsdWU7XG5cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAgdmFyIG9yaWdpbmFsRGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA9XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnJyA6IGVsLnN0eWxlLmRpc3BsYXk7XG4gICAgaWYgKHZhbHVlICYmIHRyYW5zaXRpb24gJiYgIWlzSUU5KSB7XG4gICAgICB2bm9kZS5kYXRhLnNob3cgPSB0cnVlO1xuICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IG9yaWdpbmFsRGlzcGxheTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBvcmlnaW5hbERpc3BsYXkgOiAnbm9uZSc7XG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChlbCwgcmVmLCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcbiAgICB2YXIgb2xkVmFsdWUgPSByZWYub2xkVmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodmFsdWUgPT09IG9sZFZhbHVlKSB7IHJldHVybiB9XG4gICAgdm5vZGUgPSBsb2NhdGVOb2RlKHZub2RlKTtcbiAgICB2YXIgdHJhbnNpdGlvbiA9IHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS50cmFuc2l0aW9uO1xuICAgIGlmICh0cmFuc2l0aW9uICYmICFpc0lFOSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVhdmUodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gZWwuX192T3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1bmJpbmQ6IGZ1bmN0aW9uIHVuYmluZCAoXG4gICAgZWwsXG4gICAgYmluZGluZyxcbiAgICB2bm9kZSxcbiAgICBvbGRWbm9kZSxcbiAgICBpc0Rlc3Ryb3lcbiAgKSB7XG4gICAgaWYgKCFpc0Rlc3Ryb3kpIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0ge1xuICBtb2RlbDogbW9kZWwkMSxcbiAgc2hvdzogc2hvd1xufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgYSBzaW5nbGUgZWxlbWVudC9jb21wb25lbnQuXG4vLyBzdXBwb3J0cyB0cmFuc2l0aW9uIG1vZGUgKG91dC1pbiAvIGluLW91dClcblxudmFyIHRyYW5zaXRpb25Qcm9wcyA9IHtcbiAgbmFtZTogU3RyaW5nLFxuICBhcHBlYXI6IEJvb2xlYW4sXG4gIGNzczogQm9vbGVhbixcbiAgbW9kZTogU3RyaW5nLFxuICB0eXBlOiBTdHJpbmcsXG4gIGVudGVyQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVDbGFzczogU3RyaW5nLFxuICBlbnRlclRvQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVUb0NsYXNzOiBTdHJpbmcsXG4gIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJDbGFzczogU3RyaW5nLFxuICBhcHBlYXJBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXG4gIGR1cmF0aW9uOiBbTnVtYmVyLCBTdHJpbmcsIE9iamVjdF1cbn07XG5cbi8vIGluIGNhc2UgdGhlIGNoaWxkIGlzIGFsc28gYW4gYWJzdHJhY3QgY29tcG9uZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxuLy8gd2Ugd2FudCB0byByZWN1cnNpdmVseSByZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWRcbmZ1bmN0aW9uIGdldFJlYWxDaGlsZCAodm5vZGUpIHtcbiAgdmFyIGNvbXBPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGNvbXBPcHRpb25zICYmIGNvbXBPcHRpb25zLkN0b3Iub3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHJldHVybiBnZXRSZWFsQ2hpbGQoZ2V0Rmlyc3RDb21wb25lbnRDaGlsZChjb21wT3B0aW9ucy5jaGlsZHJlbikpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZub2RlXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zaXRpb25EYXRhIChjb21wKSB7XG4gIHZhciBkYXRhID0ge307XG4gIHZhciBvcHRpb25zID0gY29tcC4kb3B0aW9ucztcbiAgLy8gcHJvcHNcbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMucHJvcHNEYXRhKSB7XG4gICAgZGF0YVtrZXldID0gY29tcFtrZXldO1xuICB9XG4gIC8vIGV2ZW50cy5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMgYW5kIHBhc3MgdGhlbSBkaXJlY3RseSB0byB0aGUgdHJhbnNpdGlvbiBtZXRob2RzXG4gIHZhciBsaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGZvciAodmFyIGtleSQxIGluIGxpc3RlbmVycykge1xuICAgIGRhdGFbY2FtZWxpemUoa2V5JDEpXSA9IGxpc3RlbmVyc1trZXkkMV07XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gcGxhY2Vob2xkZXIgKGgsIHJhd0NoaWxkKSB7XG4gIGlmICgvXFxkLWtlZXAtYWxpdmUkLy50ZXN0KHJhd0NoaWxkLnRhZykpIHtcbiAgICByZXR1cm4gaCgna2VlcC1hbGl2ZScsIHtcbiAgICAgIHByb3BzOiByYXdDaGlsZC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzUGFyZW50VHJhbnNpdGlvbiAodm5vZGUpIHtcbiAgd2hpbGUgKCh2bm9kZSA9IHZub2RlLnBhcmVudCkpIHtcbiAgICBpZiAodm5vZGUuZGF0YS50cmFuc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1NhbWVDaGlsZCAoY2hpbGQsIG9sZENoaWxkKSB7XG4gIHJldHVybiBvbGRDaGlsZC5rZXkgPT09IGNoaWxkLmtleSAmJiBvbGRDaGlsZC50YWcgPT09IGNoaWxkLnRhZ1xufVxuXG52YXIgVHJhbnNpdGlvbiA9IHtcbiAgbmFtZTogJ3RyYW5zaXRpb24nLFxuICBwcm9wczogdHJhbnNpdGlvblByb3BzLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBmaWx0ZXIgb3V0IHRleHQgbm9kZXMgKHBvc3NpYmxlIHdoaXRlc3BhY2VzKVxuICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRhZzsgfSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdhcm4gbXVsdGlwbGUgZWxlbWVudHNcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnPHRyYW5zaXRpb24+IGNhbiBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgZWxlbWVudC4gVXNlICcgK1xuICAgICAgICAnPHRyYW5zaXRpb24tZ3JvdXA+IGZvciBsaXN0cy4nLFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIG1vZGUgPSB0aGlzLm1vZGU7XG5cbiAgICAvLyB3YXJuIGludmFsaWQgbW9kZVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBtb2RlICYmIG1vZGUgIT09ICdpbi1vdXQnICYmIG1vZGUgIT09ICdvdXQtaW4nXG4gICAgKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnaW52YWxpZCA8dHJhbnNpdGlvbj4gbW9kZTogJyArIG1vZGUsXG4gICAgICAgIHRoaXMuJHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgcmF3Q2hpbGQgPSBjaGlsZHJlblswXTtcblxuICAgIC8vIGlmIHRoaXMgaXMgYSBjb21wb25lbnQgcm9vdCBub2RlIGFuZCB0aGUgY29tcG9uZW50J3NcbiAgICAvLyBwYXJlbnQgY29udGFpbmVyIG5vZGUgYWxzbyBoYXMgdHJhbnNpdGlvbiwgc2tpcC5cbiAgICBpZiAoaGFzUGFyZW50VHJhbnNpdGlvbih0aGlzLiR2bm9kZSkpIHtcbiAgICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAgIC8vIGFwcGx5IHRyYW5zaXRpb24gZGF0YSB0byBjaGlsZFxuICAgIC8vIHVzZSBnZXRSZWFsQ2hpbGQoKSB0byBpZ25vcmUgYWJzdHJhY3QgY29tcG9uZW50cyBlLmcuIGtlZXAtYWxpdmVcbiAgICB2YXIgY2hpbGQgPSBnZXRSZWFsQ2hpbGQocmF3Q2hpbGQpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9sZWF2aW5nKSB7XG4gICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4gICAgfVxuXG4gICAgLy8gZW5zdXJlIGEga2V5IHRoYXQgaXMgdW5pcXVlIHRvIHRoZSB2bm9kZSB0eXBlIGFuZCB0byB0aGlzIHRyYW5zaXRpb25cbiAgICAvLyBjb21wb25lbnQgaW5zdGFuY2UuIFRoaXMga2V5IHdpbGwgYmUgdXNlZCB0byByZW1vdmUgcGVuZGluZyBsZWF2aW5nIG5vZGVzXG4gICAgLy8gZHVyaW5nIGVudGVyaW5nLlxuICAgIHZhciBpZCA9IFwiX190cmFuc2l0aW9uLVwiICsgKHRoaXMuX3VpZCkgKyBcIi1cIjtcbiAgICBjaGlsZC5rZXkgPSBjaGlsZC5rZXkgPT0gbnVsbFxuICAgICAgPyBpZCArIGNoaWxkLnRhZ1xuICAgICAgOiBpc1ByaW1pdGl2ZShjaGlsZC5rZXkpXG4gICAgICAgID8gKFN0cmluZyhjaGlsZC5rZXkpLmluZGV4T2YoaWQpID09PSAwID8gY2hpbGQua2V5IDogaWQgKyBjaGlsZC5rZXkpXG4gICAgICAgIDogY2hpbGQua2V5O1xuXG4gICAgdmFyIGRhdGEgPSAoY2hpbGQuZGF0YSB8fCAoY2hpbGQuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcbiAgICB2YXIgb2xkUmF3Q2hpbGQgPSB0aGlzLl92bm9kZTtcbiAgICB2YXIgb2xkQ2hpbGQgPSBnZXRSZWFsQ2hpbGQob2xkUmF3Q2hpbGQpO1xuXG4gICAgLy8gbWFyayB2LXNob3dcbiAgICAvLyBzbyB0aGF0IHRoZSB0cmFuc2l0aW9uIG1vZHVsZSBjYW4gaGFuZCBvdmVyIHRoZSBjb250cm9sIHRvIHRoZSBkaXJlY3RpdmVcbiAgICBpZiAoY2hpbGQuZGF0YS5kaXJlY3RpdmVzICYmIGNoaWxkLmRhdGEuZGlyZWN0aXZlcy5zb21lKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLm5hbWUgPT09ICdzaG93JzsgfSkpIHtcbiAgICAgIGNoaWxkLmRhdGEuc2hvdyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG9sZENoaWxkICYmIG9sZENoaWxkLmRhdGEgJiYgIWlzU2FtZUNoaWxkKGNoaWxkLCBvbGRDaGlsZCkpIHtcbiAgICAgIC8vIHJlcGxhY2Ugb2xkIGNoaWxkIHRyYW5zaXRpb24gZGF0YSB3aXRoIGZyZXNoIG9uZVxuICAgICAgLy8gaW1wb3J0YW50IGZvciBkeW5hbWljIHRyYW5zaXRpb25zIVxuICAgICAgdmFyIG9sZERhdGEgPSBvbGRDaGlsZCAmJiAob2xkQ2hpbGQuZGF0YS50cmFuc2l0aW9uID0gZXh0ZW5kKHt9LCBkYXRhKSk7XG4gICAgICAvLyBoYW5kbGUgdHJhbnNpdGlvbiBtb2RlXG4gICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcbiAgICAgICAgLy8gcmV0dXJuIHBsYWNlaG9sZGVyIG5vZGUgYW5kIHF1ZXVlIHVwZGF0ZSB3aGVuIGxlYXZlIGZpbmlzaGVzXG4gICAgICAgIHRoaXMuX2xlYXZpbmcgPSB0cnVlO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAnYWZ0ZXJMZWF2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzJDEuX2xlYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzJDEuJGZvcmNlVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4gICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdpbi1vdXQnKSB7XG4gICAgICAgIHZhciBkZWxheWVkTGVhdmU7XG4gICAgICAgIHZhciBwZXJmb3JtTGVhdmUgPSBmdW5jdGlvbiAoKSB7IGRlbGF5ZWRMZWF2ZSgpOyB9O1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnYWZ0ZXJFbnRlcicsIHBlcmZvcm1MZWF2ZSk7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKGRhdGEsICdlbnRlckNhbmNlbGxlZCcsIHBlcmZvcm1MZWF2ZSk7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdkZWxheUxlYXZlJywgZnVuY3Rpb24gKGxlYXZlKSB7IGRlbGF5ZWRMZWF2ZSA9IGxlYXZlOyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmF3Q2hpbGRcbiAgfVxufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgbGlzdCBpdGVtcy5cbi8vIHN1cHBvcnRzIG1vdmUgdHJhbnNpdGlvbnMgdXNpbmcgdGhlIEZMSVAgdGVjaG5pcXVlLlxuXG4vLyBCZWNhdXNlIHRoZSB2ZG9tJ3MgY2hpbGRyZW4gdXBkYXRlIGFsZ29yaXRobSBpcyBcInVuc3RhYmxlXCIgLSBpLmUuXG4vLyBpdCBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgcmVsYXRpdmUgcG9zaXRpb25pbmcgb2YgcmVtb3ZlZCBlbGVtZW50cyxcbi8vIHdlIGZvcmNlIHRyYW5zaXRpb24tZ3JvdXAgdG8gdXBkYXRlIGl0cyBjaGlsZHJlbiBpbnRvIHR3byBwYXNzZXM6XG4vLyBpbiB0aGUgZmlyc3QgcGFzcywgd2UgcmVtb3ZlIGFsbCBub2RlcyB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCxcbi8vIHRyaWdnZXJpbmcgdGhlaXIgbGVhdmluZyB0cmFuc2l0aW9uOyBpbiB0aGUgc2Vjb25kIHBhc3MsIHdlIGluc2VydC9tb3ZlXG4vLyBpbnRvIHRoZSBmaW5hbCBkZXNpcmVkIHN0YXRlLiBUaGlzIHdheSBpbiB0aGUgc2Vjb25kIHBhc3MgcmVtb3ZlZFxuLy8gbm9kZXMgd2lsbCByZW1haW4gd2hlcmUgdGhleSBzaG91bGQgYmUuXG5cbnZhciBwcm9wcyA9IGV4dGVuZCh7XG4gIHRhZzogU3RyaW5nLFxuICBtb3ZlQ2xhc3M6IFN0cmluZ1xufSwgdHJhbnNpdGlvblByb3BzKTtcblxuZGVsZXRlIHByb3BzLm1vZGU7XG5cbnZhciBUcmFuc2l0aW9uR3JvdXAgPSB7XG4gIHByb3BzOiBwcm9wcyxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0YWcgPSB0aGlzLnRhZyB8fCB0aGlzLiR2bm9kZS5kYXRhLnRhZyB8fCAnc3Bhbic7XG4gICAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICB2YXIgcmF3Q2hpbGRyZW4gPSB0aGlzLiRzbG90cy5kZWZhdWx0IHx8IFtdO1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICB2YXIgdHJhbnNpdGlvbkRhdGEgPSBleHRyYWN0VHJhbnNpdGlvbkRhdGEodGhpcyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhd0NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHJhd0NoaWxkcmVuW2ldO1xuICAgICAgaWYgKGMudGFnKSB7XG4gICAgICAgIGlmIChjLmtleSAhPSBudWxsICYmIFN0cmluZyhjLmtleSkuaW5kZXhPZignX192bGlzdCcpICE9PSAwKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaChjKTtcbiAgICAgICAgICBtYXBbYy5rZXldID0gY1xuICAgICAgICAgIDsoYy5kYXRhIHx8IChjLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRGF0YTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgdmFyIG9wdHMgPSBjLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgICAgICAgdmFyIG5hbWUgPSBvcHRzID8gKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWcgfHwgJycpIDogYy50YWc7XG4gICAgICAgICAgd2FybigoXCI8dHJhbnNpdGlvbi1ncm91cD4gY2hpbGRyZW4gbXVzdCBiZSBrZXllZDogPFwiICsgbmFtZSArIFwiPlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJldkNoaWxkcmVuKSB7XG4gICAgICB2YXIga2VwdCA9IFtdO1xuICAgICAgdmFyIHJlbW92ZWQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHByZXZDaGlsZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgIHZhciBjJDEgPSBwcmV2Q2hpbGRyZW5baSQxXTtcbiAgICAgICAgYyQxLmRhdGEudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuICAgICAgICBjJDEuZGF0YS5wb3MgPSBjJDEuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAobWFwW2MkMS5rZXldKSB7XG4gICAgICAgICAga2VwdC5wdXNoKGMkMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVtb3ZlZC5wdXNoKGMkMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMua2VwdCA9IGgodGFnLCBudWxsLCBrZXB0KTtcbiAgICAgIHRoaXMucmVtb3ZlZCA9IHJlbW92ZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgodGFnLCBudWxsLCBjaGlsZHJlbilcbiAgfSxcblxuICBiZWZvcmVVcGRhdGU6IGZ1bmN0aW9uIGJlZm9yZVVwZGF0ZSAoKSB7XG4gICAgLy8gZm9yY2UgcmVtb3ZpbmcgcGFzc1xuICAgIHRoaXMuX19wYXRjaF9fKFxuICAgICAgdGhpcy5fdm5vZGUsXG4gICAgICB0aGlzLmtlcHQsXG4gICAgICBmYWxzZSwgLy8gaHlkcmF0aW5nXG4gICAgICB0cnVlIC8vIHJlbW92ZU9ubHkgKCFpbXBvcnRhbnQsIGF2b2lkcyB1bm5lY2Vzc2FyeSBtb3ZlcylcbiAgICApO1xuICAgIHRoaXMuX3Zub2RlID0gdGhpcy5rZXB0O1xuICB9LFxuXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQgKCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuO1xuICAgIHZhciBtb3ZlQ2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMubmFtZSB8fCAndicpICsgJy1tb3ZlJyk7XG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGggfHwgIXRoaXMuaGFzTW92ZShjaGlsZHJlblswXS5lbG0sIG1vdmVDbGFzcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdlIGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1peGluZyBET00gcmVhZHMgYW5kIHdyaXRlc1xuICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuICAgIGNoaWxkcmVuLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpO1xuICAgIGNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRpb24pO1xuICAgIGNoaWxkcmVuLmZvckVhY2goYXBwbHlUcmFuc2xhdGlvbik7XG5cbiAgICAvLyBmb3JjZSByZWZsb3cgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cbiAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIGYgPSBib2R5Lm9mZnNldEhlaWdodDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgaWYgKGMuZGF0YS5tb3ZlZCkge1xuICAgICAgICB2YXIgZWwgPSBjLmVsbTtcbiAgICAgICAgdmFyIHMgPSBlbC5zdHlsZTtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnJztcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGVsLl9tb3ZlQ2IgPSBmdW5jdGlvbiBjYiAoZSkge1xuICAgICAgICAgIGlmICghZSB8fCAvdHJhbnNmb3JtJC8udGVzdChlLnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIodHJhbnNpdGlvbkVuZEV2ZW50LCBjYik7XG4gICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVsbDtcbiAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChlbCwgbW92ZUNsYXNzKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghaGFzVHJhbnNpdGlvbikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9oYXNNb3ZlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01vdmVcbiAgICAgIH1cbiAgICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xuICAgICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXG4gICAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXG4gICAgICAvLyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3NcbiAgICAgIC8vIGlzIGFwcGxpZWQuXG4gICAgICB2YXIgY2xvbmUgPSBlbC5jbG9uZU5vZGUoKTtcbiAgICAgIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICAgICAgZWwuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZW1vdmVDbGFzcyhjbG9uZSwgY2xzKTsgfSk7XG4gICAgICB9XG4gICAgICBhZGRDbGFzcyhjbG9uZSwgbW92ZUNsYXNzKTtcbiAgICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLiRlbC5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRpb25JbmZvKGNsb25lKTtcbiAgICAgIHRoaXMuJGVsLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgIHJldHVybiAodGhpcy5faGFzTW92ZSA9IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fbW92ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAgICBjLmVsbS5fZW50ZXJDYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChjKSB7XG4gIGMuZGF0YS5uZXdQb3MgPSBjLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztcbiAgdmFyIG5ld1BvcyA9IGMuZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XG4gIHZhciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuICBpZiAoZHggfHwgZHkpIHtcbiAgICBjLmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0gYy5lbG0uc3R5bGU7XG4gICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiICsgZHggKyBcInB4LFwiICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcbiAgfVxufVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25Hcm91cFxufTtcblxuLyogICovXG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNcblZ1ZSQzLmNvbmZpZy5tdXN0VXNlUHJvcCA9IG11c3RVc2VQcm9wO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRUYWcgPSBpc1Jlc2VydmVkVGFnO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRBdHRyID0gaXNSZXNlcnZlZEF0dHI7XG5WdWUkMy5jb25maWcuZ2V0VGFnTmFtZXNwYWNlID0gZ2V0VGFnTmFtZXNwYWNlO1xuVnVlJDMuY29uZmlnLmlzVW5rbm93bkVsZW1lbnQgPSBpc1Vua25vd25FbGVtZW50O1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHJ1bnRpbWUgZGlyZWN0aXZlcyAmIGNvbXBvbmVudHNcbmV4dGVuZChWdWUkMy5vcHRpb25zLmRpcmVjdGl2ZXMsIHBsYXRmb3JtRGlyZWN0aXZlcyk7XG5leHRlbmQoVnVlJDMub3B0aW9ucy5jb21wb25lbnRzLCBwbGF0Zm9ybUNvbXBvbmVudHMpO1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHBhdGNoIGZ1bmN0aW9uXG5WdWUkMy5wcm90b3R5cGUuX19wYXRjaF9fID0gaW5Ccm93c2VyID8gcGF0Y2ggOiBub29wO1xuXG4vLyBwdWJsaWMgbW91bnQgbWV0aG9kXG5WdWUkMy5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBlbCAmJiBpbkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBtb3VudENvbXBvbmVudCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8gZGV2dG9vbHMgZ2xvYmFsIGhvb2tcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgaWYgKGNvbmZpZy5kZXZ0b29scykge1xuICAgIGlmIChkZXZ0b29scykge1xuICAgICAgZGV2dG9vbHMuZW1pdCgnaW5pdCcsIFZ1ZSQzKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNDaHJvbWUpIHtcbiAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgICAnRG93bmxvYWQgdGhlIFZ1ZSBEZXZ0b29scyBleHRlbnNpb24gZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6XFxuJyArXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLWRldnRvb2xzJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBjb25maWcucHJvZHVjdGlvblRpcCAhPT0gZmFsc2UgJiZcbiAgICBpbkJyb3dzZXIgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnXG4gICkge1xuICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgXCJZb3UgYXJlIHJ1bm5pbmcgVnVlIGluIGRldmVsb3BtZW50IG1vZGUuXFxuXCIgK1xuICAgICAgXCJNYWtlIHN1cmUgdG8gdHVybiBvbiBwcm9kdWN0aW9uIG1vZGUgd2hlbiBkZXBsb3lpbmcgZm9yIHByb2R1Y3Rpb24uXFxuXCIgK1xuICAgICAgXCJTZWUgbW9yZSB0aXBzIGF0IGh0dHBzOi8vdnVlanMub3JnL2d1aWRlL2RlcGxveW1lbnQuaHRtbFwiXG4gICAgKTtcbiAgfVxufSwgMCk7XG5cbi8qICAqL1xuXG5leHBvcnQgZGVmYXVsdCBWdWUkMztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-backtotop/node_modules/vue/dist/vue.runtime.esm.js\n");

/***/ }),

/***/ "./node_modules/vue-backtotop/src/BackToTop.vue":
/*!******************************************************!*\
  !*** ./node_modules/vue-backtotop/src/BackToTop.vue ***!
  \******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _BackToTop_vue_vue_type_template_id_58c5690e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BackToTop.vue?vue&type=template&id=58c5690e& */ \"./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e&\");\n/* harmony import */ var _BackToTop_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BackToTop.vue?vue&type=script&lang=js& */ \"./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _styles_css_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styles.css?vue&type=style&index=0&lang=css& */ \"./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&\");\n/* harmony import */ var _vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _BackToTop_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _BackToTop_vue_vue_type_template_id_58c5690e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _BackToTop_vue_vue_type_template_id_58c5690e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue-backtotop/node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('58c5690e')) {\n      api.createRecord('58c5690e', component.options)\n    } else {\n      api.reload('58c5690e', component.options)\n    }\n    module.hot.accept(/*! ./BackToTop.vue?vue&type=template&id=58c5690e& */ \"./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _BackToTop_vue_vue_type_template_id_58c5690e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BackToTop.vue?vue&type=template&id=58c5690e& */ \"./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e&\");\n(function () {\n      api.rerender('58c5690e', {\n        render: _BackToTop_vue_vue_type_template_id_58c5690e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _BackToTop_vue_vue_type_template_id_58c5690e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"node_modules/vue-backtotop/src/BackToTop.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWJhY2t0b3RvcC9zcmMvQmFja1RvVG9wLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtYmFja3RvdG9wL3NyYy9CYWNrVG9Ub3AudnVlP2Q3ZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9CYWNrVG9Ub3AudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU4YzU2OTBlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0JhY2tUb1RvcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0JhY2tUb1RvcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vc3R5bGVzLmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzU4YzU2OTBlJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzU4YzU2OTBlJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzU4YzU2OTBlJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CYWNrVG9Ub3AudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU4YzU2OTBlJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzU4YzU2OTBlJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJub2RlX21vZHVsZXMvdnVlLWJhY2t0b3RvcC9zcmMvQmFja1RvVG9wLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-backtotop/src/BackToTop.vue\n");

/***/ }),

/***/ "./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=script&lang=js&":
/*!*******************************************************************************!*\
  !*** ./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_dist_cjs_js_ref_12_0_babel_loader_lib_index_js_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_BackToTop_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../cache-loader/dist/cjs.js??ref--12-0!../../babel-loader/lib!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib??vue-loader-options!./BackToTop.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_cache_loader_dist_cjs_js_ref_12_0_babel_loader_lib_index_js_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_BackToTop_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWJhY2t0b3RvcC9zcmMvQmFja1RvVG9wLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLWJhY2t0b3RvcC9zcmMvQmFja1RvVG9wLnZ1ZT9lNzAyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9CYWNrVG9Ub3AudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQmFja1RvVG9wLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e&":
/*!*************************************************************************************!*\
  !*** ./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e& ***!
  \*************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_BackToTop_vue_vue_type_template_id_58c5690e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib??vue-loader-options!./BackToTop.vue?vue&type=template&id=58c5690e& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_BackToTop_vue_vue_type_template_id_58c5690e___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_BackToTop_vue_vue_type_template_id_58c5690e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWJhY2t0b3RvcC9zcmMvQmFja1RvVG9wLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01OGM1NjkwZSYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLWJhY2t0b3RvcC9zcmMvQmFja1RvVG9wLnZ1ZT81NzFjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9CYWNrVG9Ub3AudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU4YzU2OTBlJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-backtotop/src/BackToTop.vue?vue&type=template&id=58c5690e&\n");

/***/ }),

/***/ "./node_modules/vue-backtotop/src/main.js":
/*!************************************************!*\
  !*** ./node_modules/vue-backtotop/src/main.js ***!
  \************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _BackToTop_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BackToTop.vue */ \"./node_modules/vue-backtotop/src/BackToTop.vue\");\n \n\n/**\n * Check why can't use () => {}\n */\n_BackToTop_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"].install = function (Vue, options) {\n  Vue.component(_BackToTop_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"].name, _BackToTop_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_BackToTop_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWJhY2t0b3RvcC9zcmMvbWFpbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtYmFja3RvdG9wL3NyYy9tYWluLmpzPzZhZmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhY2tUb1RvcCBmcm9tICcuL0JhY2tUb1RvcC52dWUnIFxuXG4vKipcbiAqIENoZWNrIHdoeSBjYW4ndCB1c2UgKCkgPT4ge31cbiAqL1xuQmFja1RvVG9wLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlLCBvcHRpb25zKSB7XG4gIFZ1ZS5jb21wb25lbnQoQmFja1RvVG9wLm5hbWUsIEJhY2tUb1RvcClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQmFja1RvVG9wXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-backtotop/src/main.js\n");

/***/ }),

/***/ "./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&":
/*!************************************************************************************!*\
  !*** ./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css& ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vue_style_loader_index_js_ref_6_oneOf_1_0_css_loader_index_js_ref_6_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_6_oneOf_1_2_styles_css_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../vue-style-loader??ref--6-oneOf-1-0!../../css-loader??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src??ref--6-oneOf-1-2!./styles.css?vue&type=style&index=0&lang=css& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&\");\n/* harmony import */ var _vue_style_loader_index_js_ref_6_oneOf_1_0_css_loader_index_js_ref_6_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_6_oneOf_1_2_styles_css_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_vue_style_loader_index_js_ref_6_oneOf_1_0_css_loader_index_js_ref_6_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_6_oneOf_1_2_styles_css_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _vue_style_loader_index_js_ref_6_oneOf_1_0_css_loader_index_js_ref_6_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_6_oneOf_1_2_styles_css_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _vue_style_loader_index_js_ref_6_oneOf_1_0_css_loader_index_js_ref_6_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_6_oneOf_1_2_styles_css_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_vue_style_loader_index_js_ref_6_oneOf_1_0_css_loader_index_js_ref_6_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_6_oneOf_1_2_styles_css_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWJhY2t0b3RvcC9zcmMvc3R5bGVzLmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtYmFja3RvdG9wL3NyYy9zdHlsZXMuY3NzP2I0ZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi92dWUtc3R5bGUtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMS0wIS4uLy4uL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0xLTEhLi4vLi4vdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMS0yIS4vc3R5bGVzLmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0xLTAhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTEtMSEuLi8uLi92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0xLTIhLi9zdHlsZXMuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3MmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&\n");

/***/ }),

/***/ "./node_modules/vue-clipboard2/vue-clipboard.js":
/*!******************************************************!*\
  !*** ./node_modules/vue-clipboard2/vue-clipboard.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var Clipboard = __webpack_require__(/*! clipboard/dist/clipboard.min.js */ \"./node_modules/clipboard/dist/clipboard.min.js\") // FIXME: workaround for browserify\n\nvar VueClipboardConfig = {\n  autoSetContainer: false,\n  appendToBody: true // This fixes IE, see #50\n}\n\nvar VueClipboard = {\n  install: function (Vue) {\n    Vue.prototype.$clipboardConfig = VueClipboardConfig\n    Vue.prototype.$copyText = function (text, container) {\n      return new Promise(function (resolve, reject) {\n        var fakeElement = document.createElement('button')\n        var clipboard = new Clipboard(fakeElement, {\n          text: function () { return text },\n          action: function () { return 'copy' },\n          container: typeof container === 'object' ? container : document.body\n        })\n        clipboard.on('success', function (e) {\n          clipboard.destroy()\n          resolve(e)\n        })\n        clipboard.on('error', function (e) {\n          clipboard.destroy()\n          reject(e)\n        })\n        if (VueClipboardConfig.appendToBody) document.body.appendChild(fakeElement)\n        fakeElement.click()\n        if (VueClipboardConfig.appendToBody) document.body.removeChild(fakeElement)\n      })\n    }\n\n    Vue.directive('clipboard', {\n      bind: function (el, binding, vnode) {\n        if (binding.arg === 'success') {\n          el._vClipboard_success = binding.value\n        } else if (binding.arg === 'error') {\n          el._vClipboard_error = binding.value\n        } else {\n          var clipboard = new Clipboard(el, {\n            text: function () { return binding.value },\n            action: function () { return binding.arg === 'cut' ? 'cut' : 'copy' },\n            container: VueClipboardConfig.autoSetContainer ? el : undefined\n          })\n          clipboard.on('success', function (e) {\n            var callback = el._vClipboard_success\n            callback && callback(e)\n          })\n          clipboard.on('error', function (e) {\n            var callback = el._vClipboard_error\n            callback && callback(e)\n          })\n          el._vClipboard = clipboard\n        }\n      },\n      update: function (el, binding) {\n        if (binding.arg === 'success') {\n          el._vClipboard_success = binding.value\n        } else if (binding.arg === 'error') {\n          el._vClipboard_error = binding.value\n        } else {\n          el._vClipboard.text = function () { return binding.value }\n          el._vClipboard.action = function () { return binding.arg === 'cut' ? 'cut' : 'copy' }\n        }\n      },\n      unbind: function (el, binding) {\n        if (binding.arg === 'success') {\n          delete el._vClipboard_success\n        } else if (binding.arg === 'error') {\n          delete el._vClipboard_error\n        } else {\n          el._vClipboard.destroy()\n          delete el._vClipboard\n        }\n      }\n    })\n  },\n  config: VueClipboardConfig\n}\n\nif (true) {\n  module.exports = VueClipboard\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWNsaXBib2FyZDIvdnVlLWNsaXBib2FyZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtY2xpcGJvYXJkMi92dWUtY2xpcGJvYXJkLmpzPzRlYjUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIENsaXBib2FyZCA9IHJlcXVpcmUoJ2NsaXBib2FyZC9kaXN0L2NsaXBib2FyZC5taW4uanMnKSAvLyBGSVhNRTogd29ya2Fyb3VuZCBmb3IgYnJvd3NlcmlmeVxuXG52YXIgVnVlQ2xpcGJvYXJkQ29uZmlnID0ge1xuICBhdXRvU2V0Q29udGFpbmVyOiBmYWxzZSxcbiAgYXBwZW5kVG9Cb2R5OiB0cnVlIC8vIFRoaXMgZml4ZXMgSUUsIHNlZSAjNTBcbn1cblxudmFyIFZ1ZUNsaXBib2FyZCA9IHtcbiAgaW5zdGFsbDogZnVuY3Rpb24gKFZ1ZSkge1xuICAgIFZ1ZS5wcm90b3R5cGUuJGNsaXBib2FyZENvbmZpZyA9IFZ1ZUNsaXBib2FyZENvbmZpZ1xuICAgIFZ1ZS5wcm90b3R5cGUuJGNvcHlUZXh0ID0gZnVuY3Rpb24gKHRleHQsIGNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIGZha2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJylcbiAgICAgICAgdmFyIGNsaXBib2FyZCA9IG5ldyBDbGlwYm9hcmQoZmFrZUVsZW1lbnQsIHtcbiAgICAgICAgICB0ZXh0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0ZXh0IH0sXG4gICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnY29weScgfSxcbiAgICAgICAgICBjb250YWluZXI6IHR5cGVvZiBjb250YWluZXIgPT09ICdvYmplY3QnID8gY29udGFpbmVyIDogZG9jdW1lbnQuYm9keVxuICAgICAgICB9KVxuICAgICAgICBjbGlwYm9hcmQub24oJ3N1Y2Nlc3MnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIGNsaXBib2FyZC5kZXN0cm95KClcbiAgICAgICAgICByZXNvbHZlKGUpXG4gICAgICAgIH0pXG4gICAgICAgIGNsaXBib2FyZC5vbignZXJyb3InLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIGNsaXBib2FyZC5kZXN0cm95KClcbiAgICAgICAgICByZWplY3QoZSlcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKFZ1ZUNsaXBib2FyZENvbmZpZy5hcHBlbmRUb0JvZHkpIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZmFrZUVsZW1lbnQpXG4gICAgICAgIGZha2VFbGVtZW50LmNsaWNrKClcbiAgICAgICAgaWYgKFZ1ZUNsaXBib2FyZENvbmZpZy5hcHBlbmRUb0JvZHkpIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZmFrZUVsZW1lbnQpXG4gICAgICB9KVxuICAgIH1cblxuICAgIFZ1ZS5kaXJlY3RpdmUoJ2NsaXBib2FyZCcsIHtcbiAgICAgIGJpbmQ6IGZ1bmN0aW9uIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICAgICAgaWYgKGJpbmRpbmcuYXJnID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICBlbC5fdkNsaXBib2FyZF9zdWNjZXNzID0gYmluZGluZy52YWx1ZVxuICAgICAgICB9IGVsc2UgaWYgKGJpbmRpbmcuYXJnID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgZWwuX3ZDbGlwYm9hcmRfZXJyb3IgPSBiaW5kaW5nLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGNsaXBib2FyZCA9IG5ldyBDbGlwYm9hcmQoZWwsIHtcbiAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJpbmRpbmcudmFsdWUgfSxcbiAgICAgICAgICAgIGFjdGlvbjogZnVuY3Rpb24gKCkgeyByZXR1cm4gYmluZGluZy5hcmcgPT09ICdjdXQnID8gJ2N1dCcgOiAnY29weScgfSxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogVnVlQ2xpcGJvYXJkQ29uZmlnLmF1dG9TZXRDb250YWluZXIgPyBlbCA6IHVuZGVmaW5lZFxuICAgICAgICAgIH0pXG4gICAgICAgICAgY2xpcGJvYXJkLm9uKCdzdWNjZXNzJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBjYWxsYmFjayA9IGVsLl92Q2xpcGJvYXJkX3N1Y2Nlc3NcbiAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKGUpXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjbGlwYm9hcmQub24oJ2Vycm9yJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBjYWxsYmFjayA9IGVsLl92Q2xpcGJvYXJkX2Vycm9yXG4gICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhlKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgZWwuX3ZDbGlwYm9hcmQgPSBjbGlwYm9hcmRcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gKGVsLCBiaW5kaW5nKSB7XG4gICAgICAgIGlmIChiaW5kaW5nLmFyZyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgZWwuX3ZDbGlwYm9hcmRfc3VjY2VzcyA9IGJpbmRpbmcudmFsdWVcbiAgICAgICAgfSBlbHNlIGlmIChiaW5kaW5nLmFyZyA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgIGVsLl92Q2xpcGJvYXJkX2Vycm9yID0gYmluZGluZy52YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsLl92Q2xpcGJvYXJkLnRleHQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBiaW5kaW5nLnZhbHVlIH1cbiAgICAgICAgICBlbC5fdkNsaXBib2FyZC5hY3Rpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBiaW5kaW5nLmFyZyA9PT0gJ2N1dCcgPyAnY3V0JyA6ICdjb3B5JyB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1bmJpbmQ6IGZ1bmN0aW9uIChlbCwgYmluZGluZykge1xuICAgICAgICBpZiAoYmluZGluZy5hcmcgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgIGRlbGV0ZSBlbC5fdkNsaXBib2FyZF9zdWNjZXNzXG4gICAgICAgIH0gZWxzZSBpZiAoYmluZGluZy5hcmcgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICBkZWxldGUgZWwuX3ZDbGlwYm9hcmRfZXJyb3JcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbC5fdkNsaXBib2FyZC5kZXN0cm95KClcbiAgICAgICAgICBkZWxldGUgZWwuX3ZDbGlwYm9hcmRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGNvbmZpZzogVnVlQ2xpcGJvYXJkQ29uZmlnXG59XG5cbmlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBWdWVDbGlwYm9hcmRcbn0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gIGRlZmluZShbXSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBWdWVDbGlwYm9hcmRcbiAgfSlcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUlBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-clipboard2/vue-clipboard.js\n");

/***/ }),

/***/ "./node_modules/vue-feather-icons/dist/vue-feather-icons.es.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vue-feather-icons/dist/vue-feather-icons.es.js ***!
  \*********************************************************************/
/*! exports provided: ActivityIcon, AirplayIcon, AlertCircleIcon, AlertOctagonIcon, AlertTriangleIcon, AlignCenterIcon, AlignJustifyIcon, AlignLeftIcon, AlignRightIcon, AnchorIcon, ApertureIcon, ArchiveIcon, ArrowDownCircleIcon, ArrowDownLeftIcon, ArrowDownRightIcon, ArrowDownIcon, ArrowLeftCircleIcon, ArrowLeftIcon, ArrowRightCircleIcon, ArrowRightIcon, ArrowUpCircleIcon, ArrowUpLeftIcon, ArrowUpRightIcon, ArrowUpIcon, AtSignIcon, AwardIcon, BarChart2Icon, BarChartIcon, BatteryChargingIcon, BatteryIcon, BellOffIcon, BellIcon, BluetoothIcon, BoldIcon, BookOpenIcon, BookIcon, BookmarkIcon, BoxIcon, BriefcaseIcon, CalendarIcon, CameraOffIcon, CameraIcon, CastIcon, CheckCircleIcon, CheckSquareIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsDownIcon, ChevronsLeftIcon, ChevronsRightIcon, ChevronsUpIcon, ChromeIcon, CircleIcon, ClipboardIcon, ClockIcon, CloudDrizzleIcon, CloudLightningIcon, CloudOffIcon, CloudRainIcon, CloudSnowIcon, CloudIcon, CodeIcon, CodepenIcon, CodesandboxIcon, CoffeeIcon, ColumnsIcon, CommandIcon, CompassIcon, CopyIcon, CornerDownLeftIcon, CornerDownRightIcon, CornerLeftDownIcon, CornerLeftUpIcon, CornerRightDownIcon, CornerRightUpIcon, CornerUpLeftIcon, CornerUpRightIcon, CpuIcon, CreditCardIcon, CropIcon, CrosshairIcon, DatabaseIcon, DeleteIcon, DiscIcon, DollarSignIcon, DownloadCloudIcon, DownloadIcon, DropletIcon, Edit2Icon, Edit3Icon, EditIcon, ExternalLinkIcon, EyeOffIcon, EyeIcon, FacebookIcon, FastForwardIcon, FeatherIcon, FigmaIcon, FileMinusIcon, FilePlusIcon, FileTextIcon, FileIcon, FilmIcon, FilterIcon, FlagIcon, FolderMinusIcon, FolderPlusIcon, FolderIcon, FramerIcon, FrownIcon, GiftIcon, GitBranchIcon, GitCommitIcon, GitMergeIcon, GitPullRequestIcon, GithubIcon, GitlabIcon, GlobeIcon, GridIcon, HardDriveIcon, HashIcon, HeadphonesIcon, HeartIcon, HelpCircleIcon, HexagonIcon, HomeIcon, ImageIcon, InboxIcon, InfoIcon, InstagramIcon, ItalicIcon, KeyIcon, LayersIcon, LayoutIcon, LifeBuoyIcon, Link2Icon, LinkIcon, LinkedinIcon, ListIcon, LoaderIcon, LockIcon, LogInIcon, LogOutIcon, MailIcon, MapPinIcon, MapIcon, Maximize2Icon, MaximizeIcon, MehIcon, MenuIcon, MessageCircleIcon, MessageSquareIcon, MicOffIcon, MicIcon, Minimize2Icon, MinimizeIcon, MinusCircleIcon, MinusSquareIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoreVerticalIcon, MousePointerIcon, MoveIcon, MusicIcon, Navigation2Icon, NavigationIcon, OctagonIcon, PackageIcon, PaperclipIcon, PauseCircleIcon, PauseIcon, PenToolIcon, PercentIcon, PhoneCallIcon, PhoneForwardedIcon, PhoneIncomingIcon, PhoneMissedIcon, PhoneOffIcon, PhoneOutgoingIcon, PhoneIcon, PieChartIcon, PlayCircleIcon, PlayIcon, PlusCircleIcon, PlusSquareIcon, PlusIcon, PocketIcon, PowerIcon, PrinterIcon, RadioIcon, RefreshCcwIcon, RefreshCwIcon, RepeatIcon, RewindIcon, RotateCcwIcon, RotateCwIcon, RssIcon, SaveIcon, ScissorsIcon, SearchIcon, SendIcon, ServerIcon, SettingsIcon, Share2Icon, ShareIcon, ShieldOffIcon, ShieldIcon, ShoppingBagIcon, ShoppingCartIcon, ShuffleIcon, SidebarIcon, SkipBackIcon, SkipForwardIcon, SlackIcon, SlashIcon, SlidersIcon, SmartphoneIcon, SmileIcon, SpeakerIcon, SquareIcon, StarIcon, StopCircleIcon, SunIcon, SunriseIcon, SunsetIcon, TabletIcon, TagIcon, TargetIcon, TerminalIcon, ThermometerIcon, ThumbsDownIcon, ThumbsUpIcon, ToggleLeftIcon, ToggleRightIcon, Trash2Icon, TrashIcon, TrelloIcon, TrendingDownIcon, TrendingUpIcon, TriangleIcon, TruckIcon, TvIcon, TwitterIcon, TypeIcon, UmbrellaIcon, UnderlineIcon, UnlockIcon, UploadCloudIcon, UploadIcon, UserCheckIcon, UserMinusIcon, UserPlusIcon, UserXIcon, UserIcon, UsersIcon, VideoOffIcon, VideoIcon, VoicemailIcon, Volume1Icon, Volume2Icon, VolumeXIcon, VolumeIcon, WatchIcon, WifiOffIcon, WifiIcon, WindIcon, XCircleIcon, XOctagonIcon, XSquareIcon, XIcon, YoutubeIcon, ZapOffIcon, ZapIcon, ZoomInIcon, ZoomOutIcon */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ActivityIcon\", function() { return ActivityIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AirplayIcon\", function() { return AirplayIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlertCircleIcon\", function() { return AlertCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlertOctagonIcon\", function() { return AlertOctagonIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlertTriangleIcon\", function() { return AlertTriangleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignCenterIcon\", function() { return AlignCenterIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignJustifyIcon\", function() { return AlignJustifyIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignLeftIcon\", function() { return AlignLeftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignRightIcon\", function() { return AlignRightIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AnchorIcon\", function() { return AnchorIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ApertureIcon\", function() { return ApertureIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArchiveIcon\", function() { return ArchiveIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowDownCircleIcon\", function() { return ArrowDownCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowDownLeftIcon\", function() { return ArrowDownLeftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowDownRightIcon\", function() { return ArrowDownRightIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowDownIcon\", function() { return ArrowDownIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowLeftCircleIcon\", function() { return ArrowLeftCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowLeftIcon\", function() { return ArrowLeftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowRightCircleIcon\", function() { return ArrowRightCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowRightIcon\", function() { return ArrowRightIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowUpCircleIcon\", function() { return ArrowUpCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowUpLeftIcon\", function() { return ArrowUpLeftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowUpRightIcon\", function() { return ArrowUpRightIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrowUpIcon\", function() { return ArrowUpIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AtSignIcon\", function() { return AtSignIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AwardIcon\", function() { return AwardIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BarChart2Icon\", function() { return BarChart2Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BarChartIcon\", function() { return BarChartIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BatteryChargingIcon\", function() { return BatteryChargingIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BatteryIcon\", function() { return BatteryIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BellOffIcon\", function() { return BellOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BellIcon\", function() { return BellIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BluetoothIcon\", function() { return BluetoothIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoldIcon\", function() { return BoldIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BookOpenIcon\", function() { return BookOpenIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BookIcon\", function() { return BookIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BookmarkIcon\", function() { return BookmarkIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoxIcon\", function() { return BoxIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BriefcaseIcon\", function() { return BriefcaseIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CalendarIcon\", function() { return CalendarIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CameraOffIcon\", function() { return CameraOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CameraIcon\", function() { return CameraIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CastIcon\", function() { return CastIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CheckCircleIcon\", function() { return CheckCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CheckSquareIcon\", function() { return CheckSquareIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CheckIcon\", function() { return CheckIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChevronDownIcon\", function() { return ChevronDownIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChevronLeftIcon\", function() { return ChevronLeftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChevronRightIcon\", function() { return ChevronRightIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChevronUpIcon\", function() { return ChevronUpIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChevronsDownIcon\", function() { return ChevronsDownIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChevronsLeftIcon\", function() { return ChevronsLeftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChevronsRightIcon\", function() { return ChevronsRightIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChevronsUpIcon\", function() { return ChevronsUpIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChromeIcon\", function() { return ChromeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CircleIcon\", function() { return CircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClipboardIcon\", function() { return ClipboardIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClockIcon\", function() { return ClockIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CloudDrizzleIcon\", function() { return CloudDrizzleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CloudLightningIcon\", function() { return CloudLightningIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CloudOffIcon\", function() { return CloudOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CloudRainIcon\", function() { return CloudRainIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CloudSnowIcon\", function() { return CloudSnowIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CloudIcon\", function() { return CloudIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CodeIcon\", function() { return CodeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CodepenIcon\", function() { return CodepenIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CodesandboxIcon\", function() { return CodesandboxIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CoffeeIcon\", function() { return CoffeeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ColumnsIcon\", function() { return ColumnsIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CommandIcon\", function() { return CommandIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CompassIcon\", function() { return CompassIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CopyIcon\", function() { return CopyIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CornerDownLeftIcon\", function() { return CornerDownLeftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CornerDownRightIcon\", function() { return CornerDownRightIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CornerLeftDownIcon\", function() { return CornerLeftDownIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CornerLeftUpIcon\", function() { return CornerLeftUpIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CornerRightDownIcon\", function() { return CornerRightDownIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CornerRightUpIcon\", function() { return CornerRightUpIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CornerUpLeftIcon\", function() { return CornerUpLeftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CornerUpRightIcon\", function() { return CornerUpRightIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CpuIcon\", function() { return CpuIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CreditCardIcon\", function() { return CreditCardIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CropIcon\", function() { return CropIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CrosshairIcon\", function() { return CrosshairIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DatabaseIcon\", function() { return DatabaseIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DeleteIcon\", function() { return DeleteIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DiscIcon\", function() { return DiscIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DollarSignIcon\", function() { return DollarSignIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DownloadCloudIcon\", function() { return DownloadCloudIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DownloadIcon\", function() { return DownloadIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DropletIcon\", function() { return DropletIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Edit2Icon\", function() { return Edit2Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Edit3Icon\", function() { return Edit3Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EditIcon\", function() { return EditIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExternalLinkIcon\", function() { return ExternalLinkIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EyeOffIcon\", function() { return EyeOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EyeIcon\", function() { return EyeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FacebookIcon\", function() { return FacebookIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FastForwardIcon\", function() { return FastForwardIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FeatherIcon\", function() { return FeatherIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FigmaIcon\", function() { return FigmaIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FileMinusIcon\", function() { return FileMinusIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FilePlusIcon\", function() { return FilePlusIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FileTextIcon\", function() { return FileTextIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FileIcon\", function() { return FileIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FilmIcon\", function() { return FilmIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FilterIcon\", function() { return FilterIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FlagIcon\", function() { return FlagIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FolderMinusIcon\", function() { return FolderMinusIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FolderPlusIcon\", function() { return FolderPlusIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FolderIcon\", function() { return FolderIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FramerIcon\", function() { return FramerIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrownIcon\", function() { return FrownIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GiftIcon\", function() { return GiftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GitBranchIcon\", function() { return GitBranchIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GitCommitIcon\", function() { return GitCommitIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GitMergeIcon\", function() { return GitMergeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GitPullRequestIcon\", function() { return GitPullRequestIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GithubIcon\", function() { return GithubIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GitlabIcon\", function() { return GitlabIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GlobeIcon\", function() { return GlobeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GridIcon\", function() { return GridIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HardDriveIcon\", function() { return HardDriveIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HashIcon\", function() { return HashIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HeadphonesIcon\", function() { return HeadphonesIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HeartIcon\", function() { return HeartIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HelpCircleIcon\", function() { return HelpCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HexagonIcon\", function() { return HexagonIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HomeIcon\", function() { return HomeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImageIcon\", function() { return ImageIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InboxIcon\", function() { return InboxIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InfoIcon\", function() { return InfoIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InstagramIcon\", function() { return InstagramIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ItalicIcon\", function() { return ItalicIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KeyIcon\", function() { return KeyIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LayersIcon\", function() { return LayersIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LayoutIcon\", function() { return LayoutIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LifeBuoyIcon\", function() { return LifeBuoyIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Link2Icon\", function() { return Link2Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkIcon\", function() { return LinkIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkedinIcon\", function() { return LinkedinIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ListIcon\", function() { return ListIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoaderIcon\", function() { return LoaderIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LockIcon\", function() { return LockIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogInIcon\", function() { return LogInIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogOutIcon\", function() { return LogOutIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MailIcon\", function() { return MailIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MapPinIcon\", function() { return MapPinIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MapIcon\", function() { return MapIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Maximize2Icon\", function() { return Maximize2Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaximizeIcon\", function() { return MaximizeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MehIcon\", function() { return MehIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MenuIcon\", function() { return MenuIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MessageCircleIcon\", function() { return MessageCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MessageSquareIcon\", function() { return MessageSquareIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MicOffIcon\", function() { return MicOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MicIcon\", function() { return MicIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Minimize2Icon\", function() { return Minimize2Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MinimizeIcon\", function() { return MinimizeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MinusCircleIcon\", function() { return MinusCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MinusSquareIcon\", function() { return MinusSquareIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MinusIcon\", function() { return MinusIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MonitorIcon\", function() { return MonitorIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MoonIcon\", function() { return MoonIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MoreHorizontalIcon\", function() { return MoreHorizontalIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MoreVerticalIcon\", function() { return MoreVerticalIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MousePointerIcon\", function() { return MousePointerIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MoveIcon\", function() { return MoveIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MusicIcon\", function() { return MusicIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Navigation2Icon\", function() { return Navigation2Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NavigationIcon\", function() { return NavigationIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OctagonIcon\", function() { return OctagonIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PackageIcon\", function() { return PackageIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PaperclipIcon\", function() { return PaperclipIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PauseCircleIcon\", function() { return PauseCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PauseIcon\", function() { return PauseIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PenToolIcon\", function() { return PenToolIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PercentIcon\", function() { return PercentIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PhoneCallIcon\", function() { return PhoneCallIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PhoneForwardedIcon\", function() { return PhoneForwardedIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PhoneIncomingIcon\", function() { return PhoneIncomingIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PhoneMissedIcon\", function() { return PhoneMissedIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PhoneOffIcon\", function() { return PhoneOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PhoneOutgoingIcon\", function() { return PhoneOutgoingIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PhoneIcon\", function() { return PhoneIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PieChartIcon\", function() { return PieChartIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlayCircleIcon\", function() { return PlayCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlayIcon\", function() { return PlayIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlusCircleIcon\", function() { return PlusCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlusSquareIcon\", function() { return PlusSquareIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlusIcon\", function() { return PlusIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PocketIcon\", function() { return PocketIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PowerIcon\", function() { return PowerIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PrinterIcon\", function() { return PrinterIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RadioIcon\", function() { return RadioIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RefreshCcwIcon\", function() { return RefreshCcwIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RefreshCwIcon\", function() { return RefreshCwIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RepeatIcon\", function() { return RepeatIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RewindIcon\", function() { return RewindIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RotateCcwIcon\", function() { return RotateCcwIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RotateCwIcon\", function() { return RotateCwIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RssIcon\", function() { return RssIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SaveIcon\", function() { return SaveIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScissorsIcon\", function() { return ScissorsIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SearchIcon\", function() { return SearchIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SendIcon\", function() { return SendIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ServerIcon\", function() { return ServerIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SettingsIcon\", function() { return SettingsIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Share2Icon\", function() { return Share2Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShareIcon\", function() { return ShareIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShieldOffIcon\", function() { return ShieldOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShieldIcon\", function() { return ShieldIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShoppingBagIcon\", function() { return ShoppingBagIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShoppingCartIcon\", function() { return ShoppingCartIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShuffleIcon\", function() { return ShuffleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SidebarIcon\", function() { return SidebarIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SkipBackIcon\", function() { return SkipBackIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SkipForwardIcon\", function() { return SkipForwardIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SlackIcon\", function() { return SlackIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SlashIcon\", function() { return SlashIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SlidersIcon\", function() { return SlidersIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SmartphoneIcon\", function() { return SmartphoneIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SmileIcon\", function() { return SmileIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SpeakerIcon\", function() { return SpeakerIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SquareIcon\", function() { return SquareIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StarIcon\", function() { return StarIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StopCircleIcon\", function() { return StopCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SunIcon\", function() { return SunIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SunriseIcon\", function() { return SunriseIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SunsetIcon\", function() { return SunsetIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TabletIcon\", function() { return TabletIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TagIcon\", function() { return TagIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TargetIcon\", function() { return TargetIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TerminalIcon\", function() { return TerminalIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ThermometerIcon\", function() { return ThermometerIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ThumbsDownIcon\", function() { return ThumbsDownIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ThumbsUpIcon\", function() { return ThumbsUpIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToggleLeftIcon\", function() { return ToggleLeftIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToggleRightIcon\", function() { return ToggleRightIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Trash2Icon\", function() { return Trash2Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TrashIcon\", function() { return TrashIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TrelloIcon\", function() { return TrelloIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TrendingDownIcon\", function() { return TrendingDownIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TrendingUpIcon\", function() { return TrendingUpIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TriangleIcon\", function() { return TriangleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TruckIcon\", function() { return TruckIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TvIcon\", function() { return TvIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TwitterIcon\", function() { return TwitterIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TypeIcon\", function() { return TypeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UmbrellaIcon\", function() { return UmbrellaIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnderlineIcon\", function() { return UnderlineIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnlockIcon\", function() { return UnlockIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UploadCloudIcon\", function() { return UploadCloudIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UploadIcon\", function() { return UploadIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UserCheckIcon\", function() { return UserCheckIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UserMinusIcon\", function() { return UserMinusIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UserPlusIcon\", function() { return UserPlusIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UserXIcon\", function() { return UserXIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UserIcon\", function() { return UserIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UsersIcon\", function() { return UsersIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VideoOffIcon\", function() { return VideoOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VideoIcon\", function() { return VideoIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VoicemailIcon\", function() { return VoicemailIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Volume1Icon\", function() { return Volume1Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Volume2Icon\", function() { return Volume2Icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VolumeXIcon\", function() { return VolumeXIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VolumeIcon\", function() { return VolumeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WatchIcon\", function() { return WatchIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WifiOffIcon\", function() { return WifiOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WifiIcon\", function() { return WifiIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WindIcon\", function() { return WindIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"XCircleIcon\", function() { return XCircleIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"XOctagonIcon\", function() { return XOctagonIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"XSquareIcon\", function() { return XSquareIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"XIcon\", function() { return XIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"YoutubeIcon\", function() { return YoutubeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZapOffIcon\", function() { return ZapOffIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZapIcon\", function() { return ZapIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZoomInIcon\", function() { return ZoomInIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZoomOutIcon\", function() { return ZoomOutIcon; });\n/* harmony import */ var babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-helper-vue-jsx-merge-props */ \"./node_modules/babel-helper-vue-jsx-merge-props/index.js\");\n/* harmony import */ var babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar ActivityIcon = {\n  name: 'ActivityIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-activity\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"22 12 18 12 15 21 9 3 6 12 2 12\"\n      }\n    })]);\n  }\n};\n\nvar AirplayIcon = {\n  name: 'AirplayIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-airplay\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\"\n      }\n    }), h(\"polygon\", {\n      attrs: {\n        points: \"12 15 17 21 7 21 12 15\"\n      }\n    })]);\n  }\n};\n\nvar AlertCircleIcon = {\n  name: 'AlertCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-alert-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"8\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"16\",\n        x2: \"12\",\n        y2: \"16\"\n      }\n    })]);\n  }\n};\n\nvar AlertOctagonIcon = {\n  name: 'AlertOctagonIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-alert-octagon\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"8\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"16\",\n        x2: \"12\",\n        y2: \"16\"\n      }\n    })]);\n  }\n};\n\nvar AlertTriangleIcon = {\n  name: 'AlertTriangleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-alert-triangle\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"9\",\n        x2: \"12\",\n        y2: \"13\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"17\",\n        x2: \"12\",\n        y2: \"17\"\n      }\n    })]);\n  }\n};\n\nvar AlignCenterIcon = {\n  name: 'AlignCenterIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-align-center\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"18\",\n        y1: \"10\",\n        x2: \"6\",\n        y2: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"6\",\n        x2: \"3\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"14\",\n        x2: \"3\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"18\",\n        y1: \"18\",\n        x2: \"6\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar AlignJustifyIcon = {\n  name: 'AlignJustifyIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-align-justify\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"10\",\n        x2: \"3\",\n        y2: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"6\",\n        x2: \"3\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"14\",\n        x2: \"3\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"18\",\n        x2: \"3\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar AlignLeftIcon = {\n  name: 'AlignLeftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-align-left\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"10\",\n        x2: \"3\",\n        y2: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"6\",\n        x2: \"3\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"14\",\n        x2: \"3\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"18\",\n        x2: \"3\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar AlignRightIcon = {\n  name: 'AlignRightIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-align-right\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"10\",\n        x2: \"7\",\n        y2: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"6\",\n        x2: \"3\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"14\",\n        x2: \"3\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"18\",\n        x2: \"7\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar AnchorIcon = {\n  name: 'AnchorIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-anchor\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"5\",\n        r: \"3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"22\",\n        x2: \"12\",\n        y2: \"8\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M5 12H2a10 10 0 0 0 20 0h-3\"\n      }\n    })]);\n  }\n};\n\nvar ApertureIcon = {\n  name: 'ApertureIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-aperture\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14.31\",\n        y1: \"8\",\n        x2: \"20.05\",\n        y2: \"17.94\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9.69\",\n        y1: \"8\",\n        x2: \"21.17\",\n        y2: \"8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"7.38\",\n        y1: \"12\",\n        x2: \"13.12\",\n        y2: \"2.06\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9.69\",\n        y1: \"16\",\n        x2: \"3.95\",\n        y2: \"6.06\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14.31\",\n        y1: \"16\",\n        x2: \"2.83\",\n        y2: \"16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16.62\",\n        y1: \"12\",\n        x2: \"10.88\",\n        y2: \"21.94\"\n      }\n    })]);\n  }\n};\n\nvar ArchiveIcon = {\n  name: 'ArchiveIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-archive\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"21 8 21 21 3 21 3 8\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"1\",\n        y: \"3\",\n        width: \"22\",\n        height: \"5\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"10\",\n        y1: \"12\",\n        x2: \"14\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar ArrowDownCircleIcon = {\n  name: 'ArrowDownCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-down-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"8 12 12 16 16 12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"8\",\n        x2: \"12\",\n        y2: \"16\"\n      }\n    })]);\n  }\n};\n\nvar ArrowDownLeftIcon = {\n  name: 'ArrowDownLeftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-down-left\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"7\",\n        x2: \"7\",\n        y2: \"17\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"17 17 7 17 7 7\"\n      }\n    })]);\n  }\n};\n\nvar ArrowDownRightIcon = {\n  name: 'ArrowDownRightIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-down-right\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"7\",\n        y1: \"7\",\n        x2: \"17\",\n        y2: \"17\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"17 7 17 17 7 17\"\n      }\n    })]);\n  }\n};\n\nvar ArrowDownIcon = {\n  name: 'ArrowDownIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-down\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"5\",\n        x2: \"12\",\n        y2: \"19\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"19 12 12 19 5 12\"\n      }\n    })]);\n  }\n};\n\nvar ArrowLeftCircleIcon = {\n  name: 'ArrowLeftCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-left-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"12 8 8 12 12 16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"12\",\n        x2: \"8\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar ArrowLeftIcon = {\n  name: 'ArrowLeftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-left\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"19\",\n        y1: \"12\",\n        x2: \"5\",\n        y2: \"12\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"12 19 5 12 12 5\"\n      }\n    })]);\n  }\n};\n\nvar ArrowRightCircleIcon = {\n  name: 'ArrowRightCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-right-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"12 16 16 12 12 8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"12\",\n        x2: \"16\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar ArrowRightIcon = {\n  name: 'ArrowRightIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-right\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"5\",\n        y1: \"12\",\n        x2: \"19\",\n        y2: \"12\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"12 5 19 12 12 19\"\n      }\n    })]);\n  }\n};\n\nvar ArrowUpCircleIcon = {\n  name: 'ArrowUpCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-up-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"16 12 12 8 8 12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"16\",\n        x2: \"12\",\n        y2: \"8\"\n      }\n    })]);\n  }\n};\n\nvar ArrowUpLeftIcon = {\n  name: 'ArrowUpLeftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-up-left\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"17\",\n        x2: \"7\",\n        y2: \"7\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"7 17 7 7 17 7\"\n      }\n    })]);\n  }\n};\n\nvar ArrowUpRightIcon = {\n  name: 'ArrowUpRightIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-up-right\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"7\",\n        y1: \"17\",\n        x2: \"17\",\n        y2: \"7\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"7 7 17 7 17 17\"\n      }\n    })]);\n  }\n};\n\nvar ArrowUpIcon = {\n  name: 'ArrowUpIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-arrow-up\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"19\",\n        x2: \"12\",\n        y2: \"5\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"5 12 12 5 19 12\"\n      }\n    })]);\n  }\n};\n\nvar AtSignIcon = {\n  name: 'AtSignIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-at-sign\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"4\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\"\n      }\n    })]);\n  }\n};\n\nvar AwardIcon = {\n  name: 'AwardIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-award\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"8\",\n        r: \"7\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"8.21 13.89 7 23 12 20 17 23 15.79 13.88\"\n      }\n    })]);\n  }\n};\n\nvar BarChart2Icon = {\n  name: 'BarChart2Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-bar-chart-2\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"18\",\n        y1: \"20\",\n        x2: \"18\",\n        y2: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"20\",\n        x2: \"12\",\n        y2: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"20\",\n        x2: \"6\",\n        y2: \"14\"\n      }\n    })]);\n  }\n};\n\nvar BarChartIcon = {\n  name: 'BarChartIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-bar-chart\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"20\",\n        x2: \"12\",\n        y2: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"18\",\n        y1: \"20\",\n        x2: \"18\",\n        y2: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"20\",\n        x2: \"6\",\n        y2: \"16\"\n      }\n    })]);\n  }\n};\n\nvar BatteryChargingIcon = {\n  name: 'BatteryChargingIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-battery-charging\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"13\",\n        x2: \"23\",\n        y2: \"11\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"11 6 7 12 13 12 9 18\"\n      }\n    })]);\n  }\n};\n\nvar BatteryIcon = {\n  name: 'BatteryIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-battery\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"1\",\n        y: \"6\",\n        width: \"18\",\n        height: \"12\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"13\",\n        x2: \"23\",\n        y2: \"11\"\n      }\n    })]);\n  }\n};\n\nvar BellOffIcon = {\n  name: 'BellOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-bell-off\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M13.73 21a2 2 0 0 1-3.46 0\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M18.63 13A17.89 17.89 0 0 1 18 8\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M18 8a6 6 0 0 0-9.33-5\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"23\"\n      }\n    })]);\n  }\n};\n\nvar BellIcon = {\n  name: 'BellIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-bell\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M13.73 21a2 2 0 0 1-3.46 0\"\n      }\n    })]);\n  }\n};\n\nvar BluetoothIcon = {\n  name: 'BluetoothIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-bluetooth\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5\"\n      }\n    })]);\n  }\n};\n\nvar BoldIcon = {\n  name: 'BoldIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-bold\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\"\n      }\n    })]);\n  }\n};\n\nvar BookOpenIcon = {\n  name: 'BookOpenIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-book-open\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"\n      }\n    })]);\n  }\n};\n\nvar BookIcon = {\n  name: 'BookIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-book\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"\n      }\n    })]);\n  }\n};\n\nvar BookmarkIcon = {\n  name: 'BookmarkIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-bookmark\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\"\n      }\n    })]);\n  }\n};\n\nvar BoxIcon = {\n  name: 'BoxIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-box\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"3.27 6.96 12 12.01 20.73 6.96\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"22.08\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar BriefcaseIcon = {\n  name: 'BriefcaseIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-briefcase\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"2\",\n        y: \"7\",\n        width: \"20\",\n        height: \"14\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"\n      }\n    })]);\n  }\n};\n\nvar CalendarIcon = {\n  name: 'CalendarIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-calendar\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"4\",\n        width: \"18\",\n        height: \"18\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"2\",\n        x2: \"16\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"2\",\n        x2: \"8\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"10\",\n        x2: \"21\",\n        y2: \"10\"\n      }\n    })]);\n  }\n};\n\nvar CameraOffIcon = {\n  name: 'CameraOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-camera-off\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"23\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56\"\n      }\n    })]);\n  }\n};\n\nvar CameraIcon = {\n  name: 'CameraIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-camera\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"13\",\n        r: \"4\"\n      }\n    })]);\n  }\n};\n\nvar CastIcon = {\n  name: 'CastIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-cast\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"2\",\n        y1: \"20\",\n        x2: \"2\",\n        y2: \"20\"\n      }\n    })]);\n  }\n};\n\nvar CheckCircleIcon = {\n  name: 'CheckCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-check-circle\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M22 11.08V12a10 10 0 1 1-5.93-9.14\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"22 4 12 14.01 9 11.01\"\n      }\n    })]);\n  }\n};\n\nvar CheckSquareIcon = {\n  name: 'CheckSquareIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-check-square\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"9 11 12 14 22 4\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"\n      }\n    })]);\n  }\n};\n\nvar CheckIcon = {\n  name: 'CheckIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-check\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"20 6 9 17 4 12\"\n      }\n    })]);\n  }\n};\n\nvar ChevronDownIcon = {\n  name: 'ChevronDownIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-chevron-down\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"6 9 12 15 18 9\"\n      }\n    })]);\n  }\n};\n\nvar ChevronLeftIcon = {\n  name: 'ChevronLeftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-chevron-left\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"15 18 9 12 15 6\"\n      }\n    })]);\n  }\n};\n\nvar ChevronRightIcon = {\n  name: 'ChevronRightIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-chevron-right\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"9 18 15 12 9 6\"\n      }\n    })]);\n  }\n};\n\nvar ChevronUpIcon = {\n  name: 'ChevronUpIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-chevron-up\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"18 15 12 9 6 15\"\n      }\n    })]);\n  }\n};\n\nvar ChevronsDownIcon = {\n  name: 'ChevronsDownIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-chevrons-down\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"7 13 12 18 17 13\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"7 6 12 11 17 6\"\n      }\n    })]);\n  }\n};\n\nvar ChevronsLeftIcon = {\n  name: 'ChevronsLeftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-chevrons-left\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"11 17 6 12 11 7\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"18 17 13 12 18 7\"\n      }\n    })]);\n  }\n};\n\nvar ChevronsRightIcon = {\n  name: 'ChevronsRightIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-chevrons-right\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"13 17 18 12 13 7\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"6 17 11 12 6 7\"\n      }\n    })]);\n  }\n};\n\nvar ChevronsUpIcon = {\n  name: 'ChevronsUpIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-chevrons-up\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"17 11 12 6 7 11\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"17 18 12 13 7 18\"\n      }\n    })]);\n  }\n};\n\nvar ChromeIcon = {\n  name: 'ChromeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-chrome\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21.17\",\n        y1: \"8\",\n        x2: \"12\",\n        y2: \"8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3.95\",\n        y1: \"6.06\",\n        x2: \"8.54\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"10.88\",\n        y1: \"21.94\",\n        x2: \"15.46\",\n        y2: \"14\"\n      }\n    })]);\n  }\n};\n\nvar CircleIcon = {\n  name: 'CircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    })]);\n  }\n};\n\nvar ClipboardIcon = {\n  name: 'ClipboardIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-clipboard\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"8\",\n        y: \"2\",\n        width: \"8\",\n        height: \"4\",\n        rx: \"1\",\n        ry: \"1\"\n      }\n    })]);\n  }\n};\n\nvar ClockIcon = {\n  name: 'ClockIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-clock\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"12 6 12 12 16 14\"\n      }\n    })]);\n  }\n};\n\nvar CloudDrizzleIcon = {\n  name: 'CloudDrizzleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-cloud-drizzle\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"19\",\n        x2: \"8\",\n        y2: \"21\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"13\",\n        x2: \"8\",\n        y2: \"15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"19\",\n        x2: \"16\",\n        y2: \"21\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"13\",\n        x2: \"16\",\n        y2: \"15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"21\",\n        x2: \"12\",\n        y2: \"23\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"15\",\n        x2: \"12\",\n        y2: \"17\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\"\n      }\n    })]);\n  }\n};\n\nvar CloudLightningIcon = {\n  name: 'CloudLightningIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-cloud-lightning\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"13 11 9 17 15 17 11 23\"\n      }\n    })]);\n  }\n};\n\nvar CloudOffIcon = {\n  name: 'CloudOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-cloud-off\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"23\"\n      }\n    })]);\n  }\n};\n\nvar CloudRainIcon = {\n  name: 'CloudRainIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-cloud-rain\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"13\",\n        x2: \"16\",\n        y2: \"21\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"13\",\n        x2: \"8\",\n        y2: \"21\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"15\",\n        x2: \"12\",\n        y2: \"23\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\"\n      }\n    })]);\n  }\n};\n\nvar CloudSnowIcon = {\n  name: 'CloudSnowIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-cloud-snow\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"16\",\n        x2: \"8\",\n        y2: \"16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"20\",\n        x2: \"8\",\n        y2: \"20\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"18\",\n        x2: \"12\",\n        y2: \"18\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"22\",\n        x2: \"12\",\n        y2: \"22\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"16\",\n        x2: \"16\",\n        y2: \"16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"20\",\n        x2: \"16\",\n        y2: \"20\"\n      }\n    })]);\n  }\n};\n\nvar CloudIcon = {\n  name: 'CloudIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-cloud\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\"\n      }\n    })]);\n  }\n};\n\nvar CodeIcon = {\n  name: 'CodeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-code\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"16 18 22 12 16 6\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"8 6 2 12 8 18\"\n      }\n    })]);\n  }\n};\n\nvar CodepenIcon = {\n  name: 'CodepenIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-codepen\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"22\",\n        x2: \"12\",\n        y2: \"15.5\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"22 8.5 12 15.5 2 8.5\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"2 15.5 12 8.5 22 15.5\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"2\",\n        x2: \"12\",\n        y2: \"8.5\"\n      }\n    })]);\n  }\n};\n\nvar CodesandboxIcon = {\n  name: 'CodesandboxIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-codesandbox\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"7.5 4.21 12 6.81 16.5 4.21\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"7.5 19.79 7.5 14.6 3 12\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"21 12 16.5 14.6 16.5 19.79\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"3.27 6.96 12 12.01 20.73 6.96\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"22.08\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar CoffeeIcon = {\n  name: 'CoffeeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-coffee\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M18 8h1a4 4 0 0 1 0 8h-1\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"1\",\n        x2: \"6\",\n        y2: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"10\",\n        y1: \"1\",\n        x2: \"10\",\n        y2: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14\",\n        y1: \"1\",\n        x2: \"14\",\n        y2: \"4\"\n      }\n    })]);\n  }\n};\n\nvar ColumnsIcon = {\n  name: 'ColumnsIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-columns\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\"\n      }\n    })]);\n  }\n};\n\nvar CommandIcon = {\n  name: 'CommandIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-command\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\"\n      }\n    })]);\n  }\n};\n\nvar CompassIcon = {\n  name: 'CompassIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-compass\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"polygon\", {\n      attrs: {\n        points: \"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"\n      }\n    })]);\n  }\n};\n\nvar CopyIcon = {\n  name: 'CopyIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-copy\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"9\",\n        y: \"9\",\n        width: \"13\",\n        height: \"13\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\n      }\n    })]);\n  }\n};\n\nvar CornerDownLeftIcon = {\n  name: 'CornerDownLeftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-corner-down-left\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"9 10 4 15 9 20\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20 4v7a4 4 0 0 1-4 4H4\"\n      }\n    })]);\n  }\n};\n\nvar CornerDownRightIcon = {\n  name: 'CornerDownRightIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-corner-down-right\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"15 10 20 15 15 20\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M4 4v7a4 4 0 0 0 4 4h12\"\n      }\n    })]);\n  }\n};\n\nvar CornerLeftDownIcon = {\n  name: 'CornerLeftDownIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-corner-left-down\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"14 15 9 20 4 15\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20 4h-7a4 4 0 0 0-4 4v12\"\n      }\n    })]);\n  }\n};\n\nvar CornerLeftUpIcon = {\n  name: 'CornerLeftUpIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-corner-left-up\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"14 9 9 4 4 9\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20 20h-7a4 4 0 0 1-4-4V4\"\n      }\n    })]);\n  }\n};\n\nvar CornerRightDownIcon = {\n  name: 'CornerRightDownIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-corner-right-down\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"10 15 15 20 20 15\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M4 4h7a4 4 0 0 1 4 4v12\"\n      }\n    })]);\n  }\n};\n\nvar CornerRightUpIcon = {\n  name: 'CornerRightUpIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-corner-right-up\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"10 9 15 4 20 9\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M4 20h7a4 4 0 0 0 4-4V4\"\n      }\n    })]);\n  }\n};\n\nvar CornerUpLeftIcon = {\n  name: 'CornerUpLeftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-corner-up-left\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"9 14 4 9 9 4\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20 20v-7a4 4 0 0 0-4-4H4\"\n      }\n    })]);\n  }\n};\n\nvar CornerUpRightIcon = {\n  name: 'CornerUpRightIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-corner-up-right\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"15 14 20 9 15 4\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M4 20v-7a4 4 0 0 1 4-4h12\"\n      }\n    })]);\n  }\n};\n\nvar CpuIcon = {\n  name: 'CpuIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-cpu\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"4\",\n        y: \"4\",\n        width: \"16\",\n        height: \"16\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"9\",\n        y: \"9\",\n        width: \"6\",\n        height: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"1\",\n        x2: \"9\",\n        y2: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"1\",\n        x2: \"15\",\n        y2: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"20\",\n        x2: \"9\",\n        y2: \"23\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"20\",\n        x2: \"15\",\n        y2: \"23\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"20\",\n        y1: \"9\",\n        x2: \"23\",\n        y2: \"9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"20\",\n        y1: \"14\",\n        x2: \"23\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"9\",\n        x2: \"4\",\n        y2: \"9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"14\",\n        x2: \"4\",\n        y2: \"14\"\n      }\n    })]);\n  }\n};\n\nvar CreditCardIcon = {\n  name: 'CreditCardIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-credit-card\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"1\",\n        y: \"4\",\n        width: \"22\",\n        height: \"16\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"10\",\n        x2: \"23\",\n        y2: \"10\"\n      }\n    })]);\n  }\n};\n\nvar CropIcon = {\n  name: 'CropIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-crop\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M6.13 1L6 16a2 2 0 0 0 2 2h15\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M1 6.13L16 6a2 2 0 0 1 2 2v15\"\n      }\n    })]);\n  }\n};\n\nvar CrosshairIcon = {\n  name: 'CrosshairIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-crosshair\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"22\",\n        y1: \"12\",\n        x2: \"18\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"12\",\n        x2: \"2\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"6\",\n        x2: \"12\",\n        y2: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"22\",\n        x2: \"12\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar DatabaseIcon = {\n  name: 'DatabaseIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-database\"\n    }, ctx.data]), [h(\"ellipse\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"5\",\n        rx: \"9\",\n        ry: \"3\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\"\n      }\n    })]);\n  }\n};\n\nvar DeleteIcon = {\n  name: 'DeleteIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-delete\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"18\",\n        y1: \"9\",\n        x2: \"12\",\n        y2: \"15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"9\",\n        x2: \"18\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar DiscIcon = {\n  name: 'DiscIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-disc\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"3\"\n      }\n    })]);\n  }\n};\n\nvar DollarSignIcon = {\n  name: 'DollarSignIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-dollar-sign\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"1\",\n        x2: \"12\",\n        y2: \"23\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"\n      }\n    })]);\n  }\n};\n\nvar DownloadCloudIcon = {\n  name: 'DownloadCloudIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-download-cloud\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"8 17 12 21 16 17\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"12\",\n        x2: \"12\",\n        y2: \"21\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"\n      }\n    })]);\n  }\n};\n\nvar DownloadIcon = {\n  name: 'DownloadIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-download\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"7 10 12 15 17 10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"15\",\n        x2: \"12\",\n        y2: \"3\"\n      }\n    })]);\n  }\n};\n\nvar DropletIcon = {\n  name: 'DropletIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-droplet\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\"\n      }\n    })]);\n  }\n};\n\nvar Edit2Icon = {\n  name: 'Edit2Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-edit-2\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\"\n      }\n    })]);\n  }\n};\n\nvar Edit3Icon = {\n  name: 'Edit3Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-edit-3\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M12 20h9\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\"\n      }\n    })]);\n  }\n};\n\nvar EditIcon = {\n  name: 'EditIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-edit\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"\n      }\n    })]);\n  }\n};\n\nvar ExternalLinkIcon = {\n  name: 'ExternalLinkIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-external-link\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"15 3 21 3 21 9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"10\",\n        y1: \"14\",\n        x2: \"21\",\n        y2: \"3\"\n      }\n    })]);\n  }\n};\n\nvar EyeOffIcon = {\n  name: 'EyeOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-eye-off\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"23\"\n      }\n    })]);\n  }\n};\n\nvar EyeIcon = {\n  name: 'EyeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-eye\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"3\"\n      }\n    })]);\n  }\n};\n\nvar FacebookIcon = {\n  name: 'FacebookIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-facebook\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\"\n      }\n    })]);\n  }\n};\n\nvar FastForwardIcon = {\n  name: 'FastForwardIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-fast-forward\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"13 19 22 12 13 5 13 19\"\n      }\n    }), h(\"polygon\", {\n      attrs: {\n        points: \"2 19 11 12 2 5 2 19\"\n      }\n    })]);\n  }\n};\n\nvar FeatherIcon = {\n  name: 'FeatherIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-feather\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"8\",\n        x2: \"2\",\n        y2: \"22\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17.5\",\n        y1: \"15\",\n        x2: \"9\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar FigmaIcon = {\n  name: 'FigmaIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-figma\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\"\n      }\n    })]);\n  }\n};\n\nvar FileMinusIcon = {\n  name: 'FileMinusIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-file-minus\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"14 2 14 8 20 8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"15\",\n        x2: \"15\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar FilePlusIcon = {\n  name: 'FilePlusIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-file-plus\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"14 2 14 8 20 8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"18\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"15\",\n        x2: \"15\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar FileTextIcon = {\n  name: 'FileTextIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-file-text\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"14 2 14 8 20 8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"13\",\n        x2: \"8\",\n        y2: \"13\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"17\",\n        x2: \"8\",\n        y2: \"17\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"10 9 9 9 8 9\"\n      }\n    })]);\n  }\n};\n\nvar FileIcon = {\n  name: 'FileIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-file\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"13 2 13 9 20 9\"\n      }\n    })]);\n  }\n};\n\nvar FilmIcon = {\n  name: 'FilmIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-film\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"2\",\n        y: \"2\",\n        width: \"20\",\n        height: \"20\",\n        rx: \"2.18\",\n        ry: \"2.18\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"7\",\n        y1: \"2\",\n        x2: \"7\",\n        y2: \"22\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"2\",\n        x2: \"17\",\n        y2: \"22\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"2\",\n        y1: \"12\",\n        x2: \"22\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"2\",\n        y1: \"7\",\n        x2: \"7\",\n        y2: \"7\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"2\",\n        y1: \"17\",\n        x2: \"7\",\n        y2: \"17\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"17\",\n        x2: \"22\",\n        y2: \"17\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"7\",\n        x2: \"22\",\n        y2: \"7\"\n      }\n    })]);\n  }\n};\n\nvar FilterIcon = {\n  name: 'FilterIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-filter\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"\n      }\n    })]);\n  }\n};\n\nvar FlagIcon = {\n  name: 'FlagIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-flag\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4\",\n        y1: \"22\",\n        x2: \"4\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar FolderMinusIcon = {\n  name: 'FolderMinusIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-folder-minus\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"14\",\n        x2: \"15\",\n        y2: \"14\"\n      }\n    })]);\n  }\n};\n\nvar FolderPlusIcon = {\n  name: 'FolderPlusIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-folder-plus\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"11\",\n        x2: \"12\",\n        y2: \"17\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"14\",\n        x2: \"15\",\n        y2: \"14\"\n      }\n    })]);\n  }\n};\n\nvar FolderIcon = {\n  name: 'FolderIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-folder\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"\n      }\n    })]);\n  }\n};\n\nvar FramerIcon = {\n  name: 'FramerIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-framer\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\"\n      }\n    })]);\n  }\n};\n\nvar FrownIcon = {\n  name: 'FrownIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-frown\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16 16s-1.5-2-4-2-4 2-4 2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"9\",\n        x2: \"9.01\",\n        y2: \"9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"9\",\n        x2: \"15.01\",\n        y2: \"9\"\n      }\n    })]);\n  }\n};\n\nvar GiftIcon = {\n  name: 'GiftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-gift\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"20 12 20 22 4 22 4 12\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"2\",\n        y: \"7\",\n        width: \"20\",\n        height: \"5\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"22\",\n        x2: \"12\",\n        y2: \"7\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\"\n      }\n    })]);\n  }\n};\n\nvar GitBranchIcon = {\n  name: 'GitBranchIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-git-branch\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"3\",\n        x2: \"6\",\n        y2: \"15\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"18\",\n        cy: \"6\",\n        r: \"3\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"6\",\n        cy: \"18\",\n        r: \"3\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M18 9a9 9 0 0 1-9 9\"\n      }\n    })]);\n  }\n};\n\nvar GitCommitIcon = {\n  name: 'GitCommitIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-git-commit\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1.05\",\n        y1: \"12\",\n        x2: \"7\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17.01\",\n        y1: \"12\",\n        x2: \"22.96\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar GitMergeIcon = {\n  name: 'GitMergeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-git-merge\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"18\",\n        cy: \"18\",\n        r: \"3\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"6\",\n        cy: \"6\",\n        r: \"3\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M6 21V9a9 9 0 0 0 9 9\"\n      }\n    })]);\n  }\n};\n\nvar GitPullRequestIcon = {\n  name: 'GitPullRequestIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-git-pull-request\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"18\",\n        cy: \"18\",\n        r: \"3\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"6\",\n        cy: \"6\",\n        r: \"3\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M13 6h3a2 2 0 0 1 2 2v7\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"9\",\n        x2: \"6\",\n        y2: \"21\"\n      }\n    })]);\n  }\n};\n\nvar GithubIcon = {\n  name: 'GithubIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-github\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"\n      }\n    })]);\n  }\n};\n\nvar GitlabIcon = {\n  name: 'GitlabIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-gitlab\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z\"\n      }\n    })]);\n  }\n};\n\nvar GlobeIcon = {\n  name: 'GlobeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-globe\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"2\",\n        y1: \"12\",\n        x2: \"22\",\n        y2: \"12\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"\n      }\n    })]);\n  }\n};\n\nvar GridIcon = {\n  name: 'GridIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-grid\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"3\",\n        width: \"7\",\n        height: \"7\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"14\",\n        y: \"3\",\n        width: \"7\",\n        height: \"7\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"14\",\n        y: \"14\",\n        width: \"7\",\n        height: \"7\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"14\",\n        width: \"7\",\n        height: \"7\"\n      }\n    })]);\n  }\n};\n\nvar HardDriveIcon = {\n  name: 'HardDriveIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-hard-drive\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"22\",\n        y1: \"12\",\n        x2: \"2\",\n        y2: \"12\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"16\",\n        x2: \"6\",\n        y2: \"16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"10\",\n        y1: \"16\",\n        x2: \"10\",\n        y2: \"16\"\n      }\n    })]);\n  }\n};\n\nvar HashIcon = {\n  name: 'HashIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-hash\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"4\",\n        y1: \"9\",\n        x2: \"20\",\n        y2: \"9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4\",\n        y1: \"15\",\n        x2: \"20\",\n        y2: \"15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"10\",\n        y1: \"3\",\n        x2: \"8\",\n        y2: \"21\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"3\",\n        x2: \"14\",\n        y2: \"21\"\n      }\n    })]);\n  }\n};\n\nvar HeadphonesIcon = {\n  name: 'HeadphonesIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-headphones\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M3 18v-6a9 9 0 0 1 18 0v6\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\"\n      }\n    })]);\n  }\n};\n\nvar HeartIcon = {\n  name: 'HeartIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-heart\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"\n      }\n    })]);\n  }\n};\n\nvar HelpCircleIcon = {\n  name: 'HelpCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-help-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"17\",\n        x2: \"12\",\n        y2: \"17\"\n      }\n    })]);\n  }\n};\n\nvar HexagonIcon = {\n  name: 'HexagonIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-hexagon\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\n      }\n    })]);\n  }\n};\n\nvar HomeIcon = {\n  name: 'HomeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-home\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"9 22 9 12 15 12 15 22\"\n      }\n    })]);\n  }\n};\n\nvar ImageIcon = {\n  name: 'ImageIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-image\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"3\",\n        width: \"18\",\n        height: \"18\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"8.5\",\n        cy: \"8.5\",\n        r: \"1.5\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"21 15 16 10 5 21\"\n      }\n    })]);\n  }\n};\n\nvar InboxIcon = {\n  name: 'InboxIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-inbox\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"22 12 16 12 14 15 10 15 8 12 2 12\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"\n      }\n    })]);\n  }\n};\n\nvar InfoIcon = {\n  name: 'InfoIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-info\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"16\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"8\",\n        x2: \"12\",\n        y2: \"8\"\n      }\n    })]);\n  }\n};\n\nvar InstagramIcon = {\n  name: 'InstagramIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-instagram\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"2\",\n        y: \"2\",\n        width: \"20\",\n        height: \"20\",\n        rx: \"5\",\n        ry: \"5\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17.5\",\n        y1: \"6.5\",\n        x2: \"17.5\",\n        y2: \"6.5\"\n      }\n    })]);\n  }\n};\n\nvar ItalicIcon = {\n  name: 'ItalicIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-italic\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"19\",\n        y1: \"4\",\n        x2: \"10\",\n        y2: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14\",\n        y1: \"20\",\n        x2: \"5\",\n        y2: \"20\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"4\",\n        x2: \"9\",\n        y2: \"20\"\n      }\n    })]);\n  }\n};\n\nvar KeyIcon = {\n  name: 'KeyIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-key\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"\n      }\n    })]);\n  }\n};\n\nvar LayersIcon = {\n  name: 'LayersIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-layers\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"12 2 2 7 12 12 22 7 12 2\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"2 17 12 22 22 17\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"2 12 12 17 22 12\"\n      }\n    })]);\n  }\n};\n\nvar LayoutIcon = {\n  name: 'LayoutIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-layout\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"3\",\n        width: \"18\",\n        height: \"18\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"9\",\n        x2: \"21\",\n        y2: \"9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"21\",\n        x2: \"9\",\n        y2: \"9\"\n      }\n    })]);\n  }\n};\n\nvar LifeBuoyIcon = {\n  name: 'LifeBuoyIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-life-buoy\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4.93\",\n        y1: \"4.93\",\n        x2: \"9.17\",\n        y2: \"9.17\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14.83\",\n        y1: \"14.83\",\n        x2: \"19.07\",\n        y2: \"19.07\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14.83\",\n        y1: \"9.17\",\n        x2: \"19.07\",\n        y2: \"4.93\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14.83\",\n        y1: \"9.17\",\n        x2: \"18.36\",\n        y2: \"5.64\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4.93\",\n        y1: \"19.07\",\n        x2: \"9.17\",\n        y2: \"14.83\"\n      }\n    })]);\n  }\n};\n\nvar Link2Icon = {\n  name: 'Link2Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-link-2\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"12\",\n        x2: \"16\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar LinkIcon = {\n  name: 'LinkIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-link\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"\n      }\n    })]);\n  }\n};\n\nvar LinkedinIcon = {\n  name: 'LinkedinIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-linkedin\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"2\",\n        y: \"9\",\n        width: \"4\",\n        height: \"12\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"4\",\n        cy: \"4\",\n        r: \"2\"\n      }\n    })]);\n  }\n};\n\nvar ListIcon = {\n  name: 'ListIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-list\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"6\",\n        x2: \"21\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"12\",\n        x2: \"21\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"18\",\n        x2: \"21\",\n        y2: \"18\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"6\",\n        x2: \"3\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"12\",\n        x2: \"3\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"18\",\n        x2: \"3\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar LoaderIcon = {\n  name: 'LoaderIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-loader\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"2\",\n        x2: \"12\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"18\",\n        x2: \"12\",\n        y2: \"22\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4.93\",\n        y1: \"4.93\",\n        x2: \"7.76\",\n        y2: \"7.76\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16.24\",\n        y1: \"16.24\",\n        x2: \"19.07\",\n        y2: \"19.07\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"2\",\n        y1: \"12\",\n        x2: \"6\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"18\",\n        y1: \"12\",\n        x2: \"22\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4.93\",\n        y1: \"19.07\",\n        x2: \"7.76\",\n        y2: \"16.24\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16.24\",\n        y1: \"7.76\",\n        x2: \"19.07\",\n        y2: \"4.93\"\n      }\n    })]);\n  }\n};\n\nvar LockIcon = {\n  name: 'LockIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-lock\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"11\",\n        width: \"18\",\n        height: \"11\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M7 11V7a5 5 0 0 1 10 0v4\"\n      }\n    })]);\n  }\n};\n\nvar LogInIcon = {\n  name: 'LogInIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-log-in\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"10 17 15 12 10 7\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"12\",\n        x2: \"3\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar LogOutIcon = {\n  name: 'LogOutIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-log-out\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"16 17 21 12 16 7\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"12\",\n        x2: \"9\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar MailIcon = {\n  name: 'MailIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-mail\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"22,6 12,13 2,6\"\n      }\n    })]);\n  }\n};\n\nvar MapPinIcon = {\n  name: 'MapPinIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-map-pin\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"10\",\n        r: \"3\"\n      }\n    })]);\n  }\n};\n\nvar MapIcon = {\n  name: 'MapIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-map\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"2\",\n        x2: \"8\",\n        y2: \"18\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"6\",\n        x2: \"16\",\n        y2: \"22\"\n      }\n    })]);\n  }\n};\n\nvar Maximize2Icon = {\n  name: 'Maximize2Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-maximize-2\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"15 3 21 3 21 9\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"9 21 3 21 3 15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"3\",\n        x2: \"14\",\n        y2: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"21\",\n        x2: \"10\",\n        y2: \"14\"\n      }\n    })]);\n  }\n};\n\nvar MaximizeIcon = {\n  name: 'MaximizeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-maximize\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"\n      }\n    })]);\n  }\n};\n\nvar MehIcon = {\n  name: 'MehIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-meh\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"15\",\n        x2: \"16\",\n        y2: \"15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"9\",\n        x2: \"9.01\",\n        y2: \"9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"9\",\n        x2: \"15.01\",\n        y2: \"9\"\n      }\n    })]);\n  }\n};\n\nvar MenuIcon = {\n  name: 'MenuIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-menu\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"12\",\n        x2: \"21\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"6\",\n        x2: \"21\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"18\",\n        x2: \"21\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar MessageCircleIcon = {\n  name: 'MessageCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-message-circle\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"\n      }\n    })]);\n  }\n};\n\nvar MessageSquareIcon = {\n  name: 'MessageSquareIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-message-square\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\n      }\n    })]);\n  }\n};\n\nvar MicOffIcon = {\n  name: 'MicOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-mic-off\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"23\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"19\",\n        x2: \"12\",\n        y2: \"23\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"23\",\n        x2: \"16\",\n        y2: \"23\"\n      }\n    })]);\n  }\n};\n\nvar MicIcon = {\n  name: 'MicIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-mic\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M19 10v2a7 7 0 0 1-14 0v-2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"19\",\n        x2: \"12\",\n        y2: \"23\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"23\",\n        x2: \"16\",\n        y2: \"23\"\n      }\n    })]);\n  }\n};\n\nvar Minimize2Icon = {\n  name: 'Minimize2Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-minimize-2\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"4 14 10 14 10 20\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"20 10 14 10 14 4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14\",\n        y1: \"10\",\n        x2: \"21\",\n        y2: \"3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"21\",\n        x2: \"10\",\n        y2: \"14\"\n      }\n    })]);\n  }\n};\n\nvar MinimizeIcon = {\n  name: 'MinimizeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-minimize\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\"\n      }\n    })]);\n  }\n};\n\nvar MinusCircleIcon = {\n  name: 'MinusCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-minus-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"12\",\n        x2: \"16\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar MinusSquareIcon = {\n  name: 'MinusSquareIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-minus-square\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"3\",\n        width: \"18\",\n        height: \"18\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"12\",\n        x2: \"16\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar MinusIcon = {\n  name: 'MinusIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-minus\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"5\",\n        y1: \"12\",\n        x2: \"19\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar MonitorIcon = {\n  name: 'MonitorIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-monitor\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"2\",\n        y: \"3\",\n        width: \"20\",\n        height: \"14\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"21\",\n        x2: \"16\",\n        y2: \"21\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"17\",\n        x2: \"12\",\n        y2: \"21\"\n      }\n    })]);\n  }\n};\n\nvar MoonIcon = {\n  name: 'MoonIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-moon\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"\n      }\n    })]);\n  }\n};\n\nvar MoreHorizontalIcon = {\n  name: 'MoreHorizontalIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-more-horizontal\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"1\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"19\",\n        cy: \"12\",\n        r: \"1\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"5\",\n        cy: \"12\",\n        r: \"1\"\n      }\n    })]);\n  }\n};\n\nvar MoreVerticalIcon = {\n  name: 'MoreVerticalIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-more-vertical\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"1\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"5\",\n        r: \"1\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"19\",\n        r: \"1\"\n      }\n    })]);\n  }\n};\n\nvar MousePointerIcon = {\n  name: 'MousePointerIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-mouse-pointer\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M13 13l6 6\"\n      }\n    })]);\n  }\n};\n\nvar MoveIcon = {\n  name: 'MoveIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-move\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"5 9 2 12 5 15\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"9 5 12 2 15 5\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"15 19 12 22 9 19\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"19 9 22 12 19 15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"2\",\n        y1: \"12\",\n        x2: \"22\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"2\",\n        x2: \"12\",\n        y2: \"22\"\n      }\n    })]);\n  }\n};\n\nvar MusicIcon = {\n  name: 'MusicIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-music\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M9 18V5l12-2v13\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"6\",\n        cy: \"18\",\n        r: \"3\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"18\",\n        cy: \"16\",\n        r: \"3\"\n      }\n    })]);\n  }\n};\n\nvar Navigation2Icon = {\n  name: 'Navigation2Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-navigation-2\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"12 2 19 21 12 17 5 21 12 2\"\n      }\n    })]);\n  }\n};\n\nvar NavigationIcon = {\n  name: 'NavigationIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-navigation\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"3 11 22 2 13 21 11 13 3 11\"\n      }\n    })]);\n  }\n};\n\nvar OctagonIcon = {\n  name: 'OctagonIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-octagon\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"\n      }\n    })]);\n  }\n};\n\nvar PackageIcon = {\n  name: 'PackageIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-package\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"16.5\",\n        y1: \"9.4\",\n        x2: \"7.5\",\n        y2: \"4.21\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"3.27 6.96 12 12.01 20.73 6.96\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"22.08\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar PaperclipIcon = {\n  name: 'PaperclipIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-paperclip\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"\n      }\n    })]);\n  }\n};\n\nvar PauseCircleIcon = {\n  name: 'PauseCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-pause-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"10\",\n        y1: \"15\",\n        x2: \"10\",\n        y2: \"9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14\",\n        y1: \"15\",\n        x2: \"14\",\n        y2: \"9\"\n      }\n    })]);\n  }\n};\n\nvar PauseIcon = {\n  name: 'PauseIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-pause\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"6\",\n        y: \"4\",\n        width: \"4\",\n        height: \"16\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"14\",\n        y: \"4\",\n        width: \"4\",\n        height: \"16\"\n      }\n    })]);\n  }\n};\n\nvar PenToolIcon = {\n  name: 'PenToolIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-pen-tool\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M12 19l7-7 3 3-7 7-3-3z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M2 2l7.586 7.586\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"11\",\n        cy: \"11\",\n        r: \"2\"\n      }\n    })]);\n  }\n};\n\nvar PercentIcon = {\n  name: 'PercentIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-percent\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"19\",\n        y1: \"5\",\n        x2: \"5\",\n        y2: \"19\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"6.5\",\n        cy: \"6.5\",\n        r: \"2.5\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"17.5\",\n        cy: \"17.5\",\n        r: \"2.5\"\n      }\n    })]);\n  }\n};\n\nvar PhoneCallIcon = {\n  name: 'PhoneCallIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-phone-call\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\n      }\n    })]);\n  }\n};\n\nvar PhoneForwardedIcon = {\n  name: 'PhoneForwardedIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-phone-forwarded\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"19 1 23 5 19 9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"5\",\n        x2: \"23\",\n        y2: \"5\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\n      }\n    })]);\n  }\n};\n\nvar PhoneIncomingIcon = {\n  name: 'PhoneIncomingIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-phone-incoming\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"16 2 16 8 22 8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"1\",\n        x2: \"16\",\n        y2: \"8\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\n      }\n    })]);\n  }\n};\n\nvar PhoneMissedIcon = {\n  name: 'PhoneMissedIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-phone-missed\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"1\",\n        x2: \"17\",\n        y2: \"7\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"7\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\n      }\n    })]);\n  }\n};\n\nvar PhoneOffIcon = {\n  name: 'PhoneOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-phone-off\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"1\",\n        x2: \"1\",\n        y2: \"23\"\n      }\n    })]);\n  }\n};\n\nvar PhoneOutgoingIcon = {\n  name: 'PhoneOutgoingIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-phone-outgoing\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"23 7 23 1 17 1\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"16\",\n        y1: \"8\",\n        x2: \"23\",\n        y2: \"1\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\n      }\n    })]);\n  }\n};\n\nvar PhoneIcon = {\n  name: 'PhoneIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-phone\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\n      }\n    })]);\n  }\n};\n\nvar PieChartIcon = {\n  name: 'PieChartIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-pie-chart\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21.21 15.89A10 10 0 1 1 8 2.83\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M22 12A10 10 0 0 0 12 2v10z\"\n      }\n    })]);\n  }\n};\n\nvar PlayCircleIcon = {\n  name: 'PlayCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-play-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"polygon\", {\n      attrs: {\n        points: \"10 8 16 12 10 16 10 8\"\n      }\n    })]);\n  }\n};\n\nvar PlayIcon = {\n  name: 'PlayIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-play\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"5 3 19 12 5 21 5 3\"\n      }\n    })]);\n  }\n};\n\nvar PlusCircleIcon = {\n  name: 'PlusCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-plus-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"8\",\n        x2: \"12\",\n        y2: \"16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"12\",\n        x2: \"16\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar PlusSquareIcon = {\n  name: 'PlusSquareIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-plus-square\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"3\",\n        width: \"18\",\n        height: \"18\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"8\",\n        x2: \"12\",\n        y2: \"16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"12\",\n        x2: \"16\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar PlusIcon = {\n  name: 'PlusIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-plus\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"5\",\n        x2: \"12\",\n        y2: \"19\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"5\",\n        y1: \"12\",\n        x2: \"19\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar PocketIcon = {\n  name: 'PocketIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-pocket\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"8 10 12 14 16 10\"\n      }\n    })]);\n  }\n};\n\nvar PowerIcon = {\n  name: 'PowerIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-power\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M18.36 6.64a9 9 0 1 1-12.73 0\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"2\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar PrinterIcon = {\n  name: 'PrinterIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-printer\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"6 9 6 2 18 2 18 9\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"6\",\n        y: \"14\",\n        width: \"12\",\n        height: \"8\"\n      }\n    })]);\n  }\n};\n\nvar RadioIcon = {\n  name: 'RadioIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-radio\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"2\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14\"\n      }\n    })]);\n  }\n};\n\nvar RefreshCcwIcon = {\n  name: 'RefreshCcwIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-refresh-ccw\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"1 4 1 10 7 10\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"23 20 23 14 17 14\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\"\n      }\n    })]);\n  }\n};\n\nvar RefreshCwIcon = {\n  name: 'RefreshCwIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-refresh-cw\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"23 4 23 10 17 10\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"1 20 1 14 7 14\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"\n      }\n    })]);\n  }\n};\n\nvar RepeatIcon = {\n  name: 'RepeatIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-repeat\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"17 1 21 5 17 9\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M3 11V9a4 4 0 0 1 4-4h14\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"7 23 3 19 7 15\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M21 13v2a4 4 0 0 1-4 4H3\"\n      }\n    })]);\n  }\n};\n\nvar RewindIcon = {\n  name: 'RewindIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-rewind\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"11 19 2 12 11 5 11 19\"\n      }\n    }), h(\"polygon\", {\n      attrs: {\n        points: \"22 19 13 12 22 5 22 19\"\n      }\n    })]);\n  }\n};\n\nvar RotateCcwIcon = {\n  name: 'RotateCcwIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-rotate-ccw\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"1 4 1 10 7 10\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\"\n      }\n    })]);\n  }\n};\n\nvar RotateCwIcon = {\n  name: 'RotateCwIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-rotate-cw\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"23 4 23 10 17 10\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"\n      }\n    })]);\n  }\n};\n\nvar RssIcon = {\n  name: 'RssIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-rss\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M4 11a9 9 0 0 1 9 9\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M4 4a16 16 0 0 1 16 16\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"5\",\n        cy: \"19\",\n        r: \"1\"\n      }\n    })]);\n  }\n};\n\nvar SaveIcon = {\n  name: 'SaveIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-save\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"17 21 17 13 7 13 7 21\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"7 3 7 8 15 8\"\n      }\n    })]);\n  }\n};\n\nvar ScissorsIcon = {\n  name: 'ScissorsIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-scissors\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"6\",\n        cy: \"6\",\n        r: \"3\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"6\",\n        cy: \"18\",\n        r: \"3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"20\",\n        y1: \"4\",\n        x2: \"8.12\",\n        y2: \"15.88\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14.47\",\n        y1: \"14.48\",\n        x2: \"20\",\n        y2: \"20\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8.12\",\n        y1: \"8.12\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    })]);\n  }\n};\n\nvar SearchIcon = {\n  name: 'SearchIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-search\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"11\",\n        cy: \"11\",\n        r: \"8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"21\",\n        x2: \"16.65\",\n        y2: \"16.65\"\n      }\n    })]);\n  }\n};\n\nvar SendIcon = {\n  name: 'SendIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-send\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"22\",\n        y1: \"2\",\n        x2: \"11\",\n        y2: \"13\"\n      }\n    }), h(\"polygon\", {\n      attrs: {\n        points: \"22 2 15 22 11 13 2 9 22 2\"\n      }\n    })]);\n  }\n};\n\nvar ServerIcon = {\n  name: 'ServerIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-server\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"2\",\n        y: \"2\",\n        width: \"20\",\n        height: \"8\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"2\",\n        y: \"14\",\n        width: \"20\",\n        height: \"8\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"6\",\n        x2: \"6\",\n        y2: \"6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"18\",\n        x2: \"6\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar SettingsIcon = {\n  name: 'SettingsIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-settings\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"3\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"\n      }\n    })]);\n  }\n};\n\nvar Share2Icon = {\n  name: 'Share2Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-share-2\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"18\",\n        cy: \"5\",\n        r: \"3\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"6\",\n        cy: \"12\",\n        r: \"3\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"18\",\n        cy: \"19\",\n        r: \"3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8.59\",\n        y1: \"13.51\",\n        x2: \"15.42\",\n        y2: \"17.49\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15.41\",\n        y1: \"6.51\",\n        x2: \"8.59\",\n        y2: \"10.49\"\n      }\n    })]);\n  }\n};\n\nvar ShareIcon = {\n  name: 'ShareIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-share\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"16 6 12 2 8 6\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"2\",\n        x2: \"12\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar ShieldOffIcon = {\n  name: 'ShieldOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-shield-off\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"23\"\n      }\n    })]);\n  }\n};\n\nvar ShieldIcon = {\n  name: 'ShieldIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-shield\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\n      }\n    })]);\n  }\n};\n\nvar ShoppingBagIcon = {\n  name: 'ShoppingBagIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-shopping-bag\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"3\",\n        y1: \"6\",\n        x2: \"21\",\n        y2: \"6\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16 10a4 4 0 0 1-8 0\"\n      }\n    })]);\n  }\n};\n\nvar ShoppingCartIcon = {\n  name: 'ShoppingCartIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-shopping-cart\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"9\",\n        cy: \"21\",\n        r: \"1\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"20\",\n        cy: \"21\",\n        r: \"1\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\"\n      }\n    })]);\n  }\n};\n\nvar ShuffleIcon = {\n  name: 'ShuffleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-shuffle\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"16 3 21 3 21 8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4\",\n        y1: \"20\",\n        x2: \"21\",\n        y2: \"3\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"21 16 21 21 16 21\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"15\",\n        x2: \"21\",\n        y2: \"21\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4\",\n        y1: \"4\",\n        x2: \"9\",\n        y2: \"9\"\n      }\n    })]);\n  }\n};\n\nvar SidebarIcon = {\n  name: 'SidebarIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-sidebar\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"3\",\n        width: \"18\",\n        height: \"18\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"3\",\n        x2: \"9\",\n        y2: \"21\"\n      }\n    })]);\n  }\n};\n\nvar SkipBackIcon = {\n  name: 'SkipBackIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-skip-back\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"19 20 9 12 19 4 19 20\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"5\",\n        y1: \"19\",\n        x2: \"5\",\n        y2: \"5\"\n      }\n    })]);\n  }\n};\n\nvar SkipForwardIcon = {\n  name: 'SkipForwardIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-skip-forward\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"5 4 15 12 5 20 5 4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"19\",\n        y1: \"5\",\n        x2: \"19\",\n        y2: \"19\"\n      }\n    })]);\n  }\n};\n\nvar SlackIcon = {\n  name: 'SlackIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-slack\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\"\n      }\n    })]);\n  }\n};\n\nvar SlashIcon = {\n  name: 'SlashIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-slash\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4.93\",\n        y1: \"4.93\",\n        x2: \"19.07\",\n        y2: \"19.07\"\n      }\n    })]);\n  }\n};\n\nvar SlidersIcon = {\n  name: 'SlidersIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-sliders\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"4\",\n        y1: \"21\",\n        x2: \"4\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4\",\n        y1: \"10\",\n        x2: \"4\",\n        y2: \"3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"21\",\n        x2: \"12\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"8\",\n        x2: \"12\",\n        y2: \"3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"20\",\n        y1: \"21\",\n        x2: \"20\",\n        y2: \"16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"20\",\n        y1: \"12\",\n        x2: \"20\",\n        y2: \"3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"14\",\n        x2: \"7\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"8\",\n        x2: \"15\",\n        y2: \"8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"16\",\n        x2: \"23\",\n        y2: \"16\"\n      }\n    })]);\n  }\n};\n\nvar SmartphoneIcon = {\n  name: 'SmartphoneIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-smartphone\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"5\",\n        y: \"2\",\n        width: \"14\",\n        height: \"20\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"18\",\n        x2: \"12\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar SmileIcon = {\n  name: 'SmileIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-smile\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M8 14s1.5 2 4 2 4-2 4-2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"9\",\n        x2: \"9.01\",\n        y2: \"9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"9\",\n        x2: \"15.01\",\n        y2: \"9\"\n      }\n    })]);\n  }\n};\n\nvar SpeakerIcon = {\n  name: 'SpeakerIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-speaker\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"4\",\n        y: \"2\",\n        width: \"16\",\n        height: \"20\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"14\",\n        r: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"6\",\n        x2: \"12\",\n        y2: \"6\"\n      }\n    })]);\n  }\n};\n\nvar SquareIcon = {\n  name: 'SquareIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-square\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"3\",\n        width: \"18\",\n        height: \"18\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    })]);\n  }\n};\n\nvar StarIcon = {\n  name: 'StarIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-star\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"\n      }\n    })]);\n  }\n};\n\nvar StopCircleIcon = {\n  name: 'StopCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-stop-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"9\",\n        y: \"9\",\n        width: \"6\",\n        height: \"6\"\n      }\n    })]);\n  }\n};\n\nvar SunIcon = {\n  name: 'SunIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-sun\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"5\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"1\",\n        x2: \"12\",\n        y2: \"3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"21\",\n        x2: \"12\",\n        y2: \"23\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4.22\",\n        y1: \"4.22\",\n        x2: \"5.64\",\n        y2: \"5.64\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"18.36\",\n        y1: \"18.36\",\n        x2: \"19.78\",\n        y2: \"19.78\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"12\",\n        x2: \"3\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"12\",\n        x2: \"23\",\n        y2: \"12\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4.22\",\n        y1: \"19.78\",\n        x2: \"5.64\",\n        y2: \"18.36\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"18.36\",\n        y1: \"5.64\",\n        x2: \"19.78\",\n        y2: \"4.22\"\n      }\n    })]);\n  }\n};\n\nvar SunriseIcon = {\n  name: 'SunriseIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-sunrise\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M17 18a5 5 0 0 0-10 0\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"2\",\n        x2: \"12\",\n        y2: \"9\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4.22\",\n        y1: \"10.22\",\n        x2: \"5.64\",\n        y2: \"11.64\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"18\",\n        x2: \"3\",\n        y2: \"18\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"18\",\n        x2: \"23\",\n        y2: \"18\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"18.36\",\n        y1: \"11.64\",\n        x2: \"19.78\",\n        y2: \"10.22\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"22\",\n        x2: \"1\",\n        y2: \"22\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"8 6 12 2 16 6\"\n      }\n    })]);\n  }\n};\n\nvar SunsetIcon = {\n  name: 'SunsetIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-sunset\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M17 18a5 5 0 0 0-10 0\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"9\",\n        x2: \"12\",\n        y2: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4.22\",\n        y1: \"10.22\",\n        x2: \"5.64\",\n        y2: \"11.64\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"18\",\n        x2: \"3\",\n        y2: \"18\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"18\",\n        x2: \"23\",\n        y2: \"18\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"18.36\",\n        y1: \"11.64\",\n        x2: \"19.78\",\n        y2: \"10.22\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"22\",\n        x2: \"1\",\n        y2: \"22\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"16 5 12 9 8 5\"\n      }\n    })]);\n  }\n};\n\nvar TabletIcon = {\n  name: 'TabletIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-tablet\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"4\",\n        y: \"2\",\n        width: \"16\",\n        height: \"20\",\n        rx: \"2\",\n        ry: \"2\",\n        transform: \"rotate(180 12 12)\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"18\",\n        x2: \"12\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar TagIcon = {\n  name: 'TagIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-tag\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"7\",\n        y1: \"7\",\n        x2: \"7\",\n        y2: \"7\"\n      }\n    })]);\n  }\n};\n\nvar TargetIcon = {\n  name: 'TargetIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-target\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"6\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"2\"\n      }\n    })]);\n  }\n};\n\nvar TerminalIcon = {\n  name: 'TerminalIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-terminal\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"4 17 10 11 4 5\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"19\",\n        x2: \"20\",\n        y2: \"19\"\n      }\n    })]);\n  }\n};\n\nvar ThermometerIcon = {\n  name: 'ThermometerIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-thermometer\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\"\n      }\n    })]);\n  }\n};\n\nvar ThumbsDownIcon = {\n  name: 'ThumbsDownIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-thumbs-down\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n      }\n    })]);\n  }\n};\n\nvar ThumbsUpIcon = {\n  name: 'ThumbsUpIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-thumbs-up\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n      }\n    })]);\n  }\n};\n\nvar ToggleLeftIcon = {\n  name: 'ToggleLeftIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-toggle-left\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"1\",\n        y: \"5\",\n        width: \"22\",\n        height: \"14\",\n        rx: \"7\",\n        ry: \"7\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"8\",\n        cy: \"12\",\n        r: \"3\"\n      }\n    })]);\n  }\n};\n\nvar ToggleRightIcon = {\n  name: 'ToggleRightIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-toggle-right\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"1\",\n        y: \"5\",\n        width: \"22\",\n        height: \"14\",\n        rx: \"7\",\n        ry: \"7\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"16\",\n        cy: \"12\",\n        r: \"3\"\n      }\n    })]);\n  }\n};\n\nvar Trash2Icon = {\n  name: 'Trash2Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-trash-2\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"3 6 5 6 21 6\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"10\",\n        y1: \"11\",\n        x2: \"10\",\n        y2: \"17\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"14\",\n        y1: \"11\",\n        x2: \"14\",\n        y2: \"17\"\n      }\n    })]);\n  }\n};\n\nvar TrashIcon = {\n  name: 'TrashIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-trash\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"3 6 5 6 21 6\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"\n      }\n    })]);\n  }\n};\n\nvar TrelloIcon = {\n  name: 'TrelloIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-trello\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"3\",\n        width: \"18\",\n        height: \"18\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"7\",\n        y: \"7\",\n        width: \"3\",\n        height: \"9\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"14\",\n        y: \"7\",\n        width: \"3\",\n        height: \"5\"\n      }\n    })]);\n  }\n};\n\nvar TrendingDownIcon = {\n  name: 'TrendingDownIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-trending-down\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"23 18 13.5 8.5 8.5 13.5 1 6\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"17 18 23 18 23 12\"\n      }\n    })]);\n  }\n};\n\nvar TrendingUpIcon = {\n  name: 'TrendingUpIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-trending-up\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"23 6 13.5 15.5 8.5 10.5 1 18\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"17 6 23 6 23 12\"\n      }\n    })]);\n  }\n};\n\nvar TriangleIcon = {\n  name: 'TriangleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-triangle\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\n      }\n    })]);\n  }\n};\n\nvar TruckIcon = {\n  name: 'TruckIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-truck\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"1\",\n        y: \"3\",\n        width: \"15\",\n        height: \"13\"\n      }\n    }), h(\"polygon\", {\n      attrs: {\n        points: \"16 8 20 8 23 11 23 16 16 16 16 8\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"5.5\",\n        cy: \"18.5\",\n        r: \"2.5\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"18.5\",\n        cy: \"18.5\",\n        r: \"2.5\"\n      }\n    })]);\n  }\n};\n\nvar TvIcon = {\n  name: 'TvIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-tv\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"2\",\n        y: \"7\",\n        width: \"20\",\n        height: \"15\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"17 2 12 7 7 2\"\n      }\n    })]);\n  }\n};\n\nvar TwitterIcon = {\n  name: 'TwitterIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-twitter\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\"\n      }\n    })]);\n  }\n};\n\nvar TypeIcon = {\n  name: 'TypeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-type\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"4 7 4 4 20 4 20 7\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"20\",\n        x2: \"15\",\n        y2: \"20\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"4\",\n        x2: \"12\",\n        y2: \"20\"\n      }\n    })]);\n  }\n};\n\nvar UmbrellaIcon = {\n  name: 'UmbrellaIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-umbrella\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7\"\n      }\n    })]);\n  }\n};\n\nvar UnderlineIcon = {\n  name: 'UnderlineIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-underline\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"4\",\n        y1: \"21\",\n        x2: \"20\",\n        y2: \"21\"\n      }\n    })]);\n  }\n};\n\nvar UnlockIcon = {\n  name: 'UnlockIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-unlock\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"11\",\n        width: \"18\",\n        height: \"11\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M7 11V7a5 5 0 0 1 9.9-1\"\n      }\n    })]);\n  }\n};\n\nvar UploadCloudIcon = {\n  name: 'UploadCloudIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-upload-cloud\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"16 16 12 12 8 16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"12\",\n        x2: \"12\",\n        y2: \"21\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"16 16 12 12 8 16\"\n      }\n    })]);\n  }\n};\n\nvar UploadIcon = {\n  name: 'UploadIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-upload\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"17 8 12 3 7 8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"3\",\n        x2: \"12\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar UserCheckIcon = {\n  name: 'UserCheckIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-user-check\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"8.5\",\n        cy: \"7\",\n        r: \"4\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"17 11 19 13 23 9\"\n      }\n    })]);\n  }\n};\n\nvar UserMinusIcon = {\n  name: 'UserMinusIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-user-minus\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"8.5\",\n        cy: \"7\",\n        r: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"11\",\n        x2: \"17\",\n        y2: \"11\"\n      }\n    })]);\n  }\n};\n\nvar UserPlusIcon = {\n  name: 'UserPlusIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-user-plus\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"8.5\",\n        cy: \"7\",\n        r: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"20\",\n        y1: \"8\",\n        x2: \"20\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"11\",\n        x2: \"17\",\n        y2: \"11\"\n      }\n    })]);\n  }\n};\n\nvar UserXIcon = {\n  name: 'UserXIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-user-x\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"8.5\",\n        cy: \"7\",\n        r: \"4\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"18\",\n        y1: \"8\",\n        x2: \"23\",\n        y2: \"13\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"8\",\n        x2: \"18\",\n        y2: \"13\"\n      }\n    })]);\n  }\n};\n\nvar UserIcon = {\n  name: 'UserIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-user\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"7\",\n        r: \"4\"\n      }\n    })]);\n  }\n};\n\nvar UsersIcon = {\n  name: 'UsersIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-users\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"9\",\n        cy: \"7\",\n        r: \"4\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M23 21v-2a4 4 0 0 0-3-3.87\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16 3.13a4 4 0 0 1 0 7.75\"\n      }\n    })]);\n  }\n};\n\nvar VideoOffIcon = {\n  name: 'VideoOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-video-off\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"23\"\n      }\n    })]);\n  }\n};\n\nvar VideoIcon = {\n  name: 'VideoIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-video\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"23 7 16 12 23 17 23 7\"\n      }\n    }), h(\"rect\", {\n      attrs: {\n        x: \"1\",\n        y: \"5\",\n        width: \"15\",\n        height: \"14\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    })]);\n  }\n};\n\nvar VoicemailIcon = {\n  name: 'VoicemailIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-voicemail\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"5.5\",\n        cy: \"11.5\",\n        r: \"4.5\"\n      }\n    }), h(\"circle\", {\n      attrs: {\n        cx: \"18.5\",\n        cy: \"11.5\",\n        r: \"4.5\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"5.5\",\n        y1: \"16\",\n        x2: \"18.5\",\n        y2: \"16\"\n      }\n    })]);\n  }\n};\n\nvar Volume1Icon = {\n  name: 'Volume1Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-volume-1\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M15.54 8.46a5 5 0 0 1 0 7.07\"\n      }\n    })]);\n  }\n};\n\nvar Volume2Icon = {\n  name: 'Volume2Icon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-volume-2\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07\"\n      }\n    })]);\n  }\n};\n\nvar VolumeXIcon = {\n  name: 'VolumeXIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-volume-x\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"23\",\n        y1: \"9\",\n        x2: \"17\",\n        y2: \"15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"17\",\n        y1: \"9\",\n        x2: \"23\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar VolumeIcon = {\n  name: 'VolumeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-volume\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"\n      }\n    })]);\n  }\n};\n\nvar WatchIcon = {\n  name: 'WatchIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-watch\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"7\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"12 9 12 12 13.5 13.5\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83\"\n      }\n    })]);\n  }\n};\n\nvar WifiOffIcon = {\n  name: 'WifiOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-wifi-off\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"23\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M16.72 11.06A10.94 10.94 0 0 1 19 12.55\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M5 12.55a10.94 10.94 0 0 1 5.17-2.39\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M10.71 5.05A16 16 0 0 1 22.58 9\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M1.42 9a15.91 15.91 0 0 1 4.7-2.88\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M8.53 16.11a6 6 0 0 1 6.95 0\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"20\",\n        x2: \"12\",\n        y2: \"20\"\n      }\n    })]);\n  }\n};\n\nvar WifiIcon = {\n  name: 'WifiIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-wifi\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M5 12.55a11 11 0 0 1 14.08 0\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M1.42 9a16 16 0 0 1 21.16 0\"\n      }\n    }), h(\"path\", {\n      attrs: {\n        d: \"M8.53 16.11a6 6 0 0 1 6.95 0\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"12\",\n        y1: \"20\",\n        x2: \"12\",\n        y2: \"20\"\n      }\n    })]);\n  }\n};\n\nvar WindIcon = {\n  name: 'WindIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-wind\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2\"\n      }\n    })]);\n  }\n};\n\nvar XCircleIcon = {\n  name: 'XCircleIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-x-circle\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"10\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"9\",\n        x2: \"9\",\n        y2: \"15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"9\",\n        x2: \"15\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar XOctagonIcon = {\n  name: 'XOctagonIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-x-octagon\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"9\",\n        x2: \"9\",\n        y2: \"15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"9\",\n        x2: \"15\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar XSquareIcon = {\n  name: 'XSquareIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-x-square\"\n    }, ctx.data]), [h(\"rect\", {\n      attrs: {\n        x: \"3\",\n        y: \"3\",\n        width: \"18\",\n        height: \"18\",\n        rx: \"2\",\n        ry: \"2\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"9\",\n        y1: \"9\",\n        x2: \"15\",\n        y2: \"15\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"15\",\n        y1: \"9\",\n        x2: \"9\",\n        y2: \"15\"\n      }\n    })]);\n  }\n};\n\nvar XIcon = {\n  name: 'XIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-x\"\n    }, ctx.data]), [h(\"line\", {\n      attrs: {\n        x1: \"18\",\n        y1: \"6\",\n        x2: \"6\",\n        y2: \"18\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"6\",\n        y1: \"6\",\n        x2: \"18\",\n        y2: \"18\"\n      }\n    })]);\n  }\n};\n\nvar YoutubeIcon = {\n  name: 'YoutubeIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-youtube\"\n    }, ctx.data]), [h(\"path\", {\n      attrs: {\n        d: \"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\"\n      }\n    }), h(\"polygon\", {\n      attrs: {\n        points: \"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02\"\n      }\n    })]);\n  }\n};\n\nvar ZapOffIcon = {\n  name: 'ZapOffIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-zap-off\"\n    }, ctx.data]), [h(\"polyline\", {\n      attrs: {\n        points: \"12.41 6.75 13 2 10.57 4.92\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"18.57 12.91 21 10 15.66 10\"\n      }\n    }), h(\"polyline\", {\n      attrs: {\n        points: \"8 8 3 14 12 14 11 22 16 16\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"1\",\n        y1: \"1\",\n        x2: \"23\",\n        y2: \"23\"\n      }\n    })]);\n  }\n};\n\nvar ZapIcon = {\n  name: 'ZapIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-zap\"\n    }, ctx.data]), [h(\"polygon\", {\n      attrs: {\n        points: \"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\n      }\n    })]);\n  }\n};\n\nvar ZoomInIcon = {\n  name: 'ZoomInIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-zoom-in\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"11\",\n        cy: \"11\",\n        r: \"8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"21\",\n        x2: \"16.65\",\n        y2: \"16.65\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"11\",\n        y1: \"8\",\n        x2: \"11\",\n        y2: \"14\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"11\",\n        x2: \"14\",\n        y2: \"11\"\n      }\n    })]);\n  }\n};\n\nvar ZoomOutIcon = {\n  name: 'ZoomOutIcon',\n  props: {\n    size: {\n      type: String,\n      default: '24',\n      validator: function validator(s) {\n        return !isNaN(s) || s.length >= 2 && !isNaN(s.slice(0, s.length - 1)) && s.slice(-1) === 'x';\n      }\n    }\n  },\n  functional: true,\n  render: function render(h, ctx) {\n    var size = ctx.props.size.slice(-1) === 'x' ? ctx.props.size.slice(0, ctx.props.size.length - 1) + 'em' : parseInt(ctx.props.size) + 'px';\n    var attrs = ctx.data.attrs || {};\n    attrs.width = attrs.width || size;\n    attrs.height = attrs.height || size;\n    ctx.data.attrs = attrs;\n    return h(\"svg\", babel_helper_vue_jsx_merge_props__WEBPACK_IMPORTED_MODULE_0___default()([{\n      attrs: {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"24\",\n        height: \"24\",\n        viewBox: \"0 0 24 24\",\n        fill: \"none\",\n        stroke: \"currentColor\",\n        \"stroke-width\": \"2\",\n        \"stroke-linecap\": \"round\",\n        \"stroke-linejoin\": \"round\"\n      },\n      \"class\": \"feather feather-zoom-out\"\n    }, ctx.data]), [h(\"circle\", {\n      attrs: {\n        cx: \"11\",\n        cy: \"11\",\n        r: \"8\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"21\",\n        y1: \"21\",\n        x2: \"16.65\",\n        y2: \"16.65\"\n      }\n    }), h(\"line\", {\n      attrs: {\n        x1: \"8\",\n        y1: \"11\",\n        x2: \"14\",\n        y2: \"11\"\n      }\n    })]);\n  }\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWZlYXRoZXItaWNvbnMvZGlzdC92dWUtZmVhdGhlci1pY29ucy5lcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtZmVhdGhlci1pY29ucy9kaXN0L3Z1ZS1mZWF0aGVyLWljb25zLmVzLmpzPzBhMzUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9tZXJnZUpTWFByb3BzIGZyb20gJ2JhYmVsLWhlbHBlci12dWUtanN4LW1lcmdlLXByb3BzJztcblxudmFyIEFjdGl2aXR5SWNvbiA9IHtcbiAgbmFtZTogJ0FjdGl2aXR5SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hY3Rpdml0eVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjIgMTIgMTggMTIgMTUgMjEgOSAzIDYgMTIgMiAxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFpcnBsYXlJY29uID0ge1xuICBuYW1lOiAnQWlycGxheUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYWlycGxheVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTUgMTdINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDJoLTFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTIgMTUgMTcgMjEgNyAyMSAxMiAxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFsZXJ0Q2lyY2xlSWNvbiA9IHtcbiAgbmFtZTogJ0FsZXJ0Q2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hbGVydC1jaXJjbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBbGVydE9jdGFnb25JY29uID0ge1xuICBuYW1lOiAnQWxlcnRPY3RhZ29uSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hbGVydC1vY3RhZ29uXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcuODYgMiAxNi4xNCAyIDIyIDcuODYgMjIgMTYuMTQgMTYuMTQgMjIgNy44NiAyMiAyIDE2LjE0IDIgNy44NiA3Ljg2IDJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBbGVydFRyaWFuZ2xlSWNvbiA9IHtcbiAgbmFtZTogJ0FsZXJ0VHJpYW5nbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFsZXJ0LXRyaWFuZ2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTAuMjkgMy44NkwxLjgyIDE4YTIgMiAwIDAgMCAxLjcxIDNoMTYuOTRhMiAyIDAgMCAwIDEuNzEtM0wxMy43MSAzLjg2YTIgMiAwIDAgMC0zLjQyIDB6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE3XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQWxpZ25DZW50ZXJJY29uID0ge1xuICBuYW1lOiAnQWxpZ25DZW50ZXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFsaWduLWNlbnRlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE4XCIsXG4gICAgICAgIHkxOiBcIjEwXCIsXG4gICAgICAgIHgyOiBcIjZcIixcbiAgICAgICAgeTI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCI2XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjE0XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOFwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCI2XCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQWxpZ25KdXN0aWZ5SWNvbiA9IHtcbiAgbmFtZTogJ0FsaWduSnVzdGlmeUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYWxpZ24tanVzdGlmeVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjEwXCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCI2XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjE0XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQWxpZ25MZWZ0SWNvbiA9IHtcbiAgbmFtZTogJ0FsaWduTGVmdEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYWxpZ24tbGVmdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3XCIsXG4gICAgICAgIHkxOiBcIjEwXCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCI2XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjE0XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxN1wiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQWxpZ25SaWdodEljb24gPSB7XG4gIG5hbWU6ICdBbGlnblJpZ2h0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hbGlnbi1yaWdodFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjEwXCIsXG4gICAgICAgIHgyOiBcIjdcIixcbiAgICAgICAgeTI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCI2XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjE0XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCI3XCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQW5jaG9ySWNvbiA9IHtcbiAgbmFtZTogJ0FuY2hvckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYW5jaG9yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCI1XCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk01IDEySDJhMTAgMTAgMCAwIDAgMjAgMGgtM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFwZXJ0dXJlSWNvbiA9IHtcbiAgbmFtZTogJ0FwZXJ0dXJlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcGVydHVyZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE0LjMxXCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMjAuMDVcIixcbiAgICAgICAgeTI6IFwiMTcuOTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5LjY5XCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMjEuMTdcIixcbiAgICAgICAgeTI6IFwiOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjcuMzhcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTMuMTJcIixcbiAgICAgICAgeTI6IFwiMi4wNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjkuNjlcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiMy45NVwiLFxuICAgICAgICB5MjogXCI2LjA2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTQuMzFcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiMi44M1wiLFxuICAgICAgICB5MjogXCIxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2LjYyXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjEwLjg4XCIsXG4gICAgICAgIHkyOiBcIjIxLjk0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJjaGl2ZUljb24gPSB7XG4gIG5hbWU6ICdBcmNoaXZlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcmNoaXZlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMSA4IDIxIDIxIDMgMjEgMyA4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIxXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIyMlwiLFxuICAgICAgICBoZWlnaHQ6IFwiNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEwXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjE0XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dEb3duQ2lyY2xlSWNvbiA9IHtcbiAgbmFtZTogJ0Fycm93RG93bkNpcmNsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJyb3ctZG93bi1jaXJjbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjggMTIgMTIgMTYgMTYgMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dEb3duTGVmdEljb24gPSB7XG4gIG5hbWU6ICdBcnJvd0Rvd25MZWZ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcnJvdy1kb3duLWxlZnRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxN1wiLFxuICAgICAgICB5MTogXCI3XCIsXG4gICAgICAgIHgyOiBcIjdcIixcbiAgICAgICAgeTI6IFwiMTdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE3IDE3IDcgMTcgNyA3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dEb3duUmlnaHRJY29uID0ge1xuICBuYW1lOiAnQXJyb3dEb3duUmlnaHRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFycm93LWRvd24tcmlnaHRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI3XCIsXG4gICAgICAgIHkxOiBcIjdcIixcbiAgICAgICAgeDI6IFwiMTdcIixcbiAgICAgICAgeTI6IFwiMTdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE3IDcgMTcgMTcgNyAxN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93RG93bkljb24gPSB7XG4gIG5hbWU6ICdBcnJvd0Rvd25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFycm93LWRvd25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCI1XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxOSAxMiAxMiAxOSA1IDEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dMZWZ0Q2lyY2xlSWNvbiA9IHtcbiAgbmFtZTogJ0Fycm93TGVmdENpcmNsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJyb3ctbGVmdC1jaXJjbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDggOCAxMiAxMiAxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjhcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBcnJvd0xlZnRJY29uID0ge1xuICBuYW1lOiAnQXJyb3dMZWZ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcnJvdy1sZWZ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTlcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiNVwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTIgMTkgNSAxMiAxMiA1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dSaWdodENpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdBcnJvd1JpZ2h0Q2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcnJvdy1yaWdodC1jaXJjbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDE2IDE2IDEyIDEyIDhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dSaWdodEljb24gPSB7XG4gIG5hbWU6ICdBcnJvd1JpZ2h0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcnJvdy1yaWdodFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjVcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTlcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDUgMTkgMTIgMTIgMTlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBcnJvd1VwQ2lyY2xlSWNvbiA9IHtcbiAgbmFtZTogJ0Fycm93VXBDaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFycm93LXVwLWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTYgMTIgMTIgOCA4IDEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93VXBMZWZ0SWNvbiA9IHtcbiAgbmFtZTogJ0Fycm93VXBMZWZ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcnJvdy11cC1sZWZ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTdcIixcbiAgICAgICAgeTE6IFwiMTdcIixcbiAgICAgICAgeDI6IFwiN1wiLFxuICAgICAgICB5MjogXCI3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3IDE3IDcgNyAxNyA3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dVcFJpZ2h0SWNvbiA9IHtcbiAgbmFtZTogJ0Fycm93VXBSaWdodEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJyb3ctdXAtcmlnaHRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI3XCIsXG4gICAgICAgIHkxOiBcIjE3XCIsXG4gICAgICAgIHgyOiBcIjE3XCIsXG4gICAgICAgIHkyOiBcIjdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcgNyAxNyA3IDE3IDE3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dVcEljb24gPSB7XG4gIG5hbWU6ICdBcnJvd1VwSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcnJvdy11cFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE5XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjUgMTIgMTIgNSAxOSAxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEF0U2lnbkljb24gPSB7XG4gIG5hbWU6ICdBdFNpZ25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWF0LXNpZ25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2IDh2NWEzIDMgMCAwIDAgNiAwdi0xYTEwIDEwIDAgMSAwLTMuOTIgNy45NFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEF3YXJkSWNvbiA9IHtcbiAgbmFtZTogJ0F3YXJkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hd2FyZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiOFwiLFxuICAgICAgICByOiBcIjdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjguMjEgMTMuODkgNyAyMyAxMiAyMCAxNyAyMyAxNS43OSAxMy44OFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJhckNoYXJ0Mkljb24gPSB7XG4gIG5hbWU6ICdCYXJDaGFydDJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJhci1jaGFydC0yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMThcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiMThcIixcbiAgICAgICAgeTI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNlwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCI2XCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQmFyQ2hhcnRJY29uID0ge1xuICBuYW1lOiAnQmFyQ2hhcnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJhci1jaGFydFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjIwXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMThcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiMThcIixcbiAgICAgICAgeTI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjZcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiNlwiLFxuICAgICAgICB5MjogXCIxNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJhdHRlcnlDaGFyZ2luZ0ljb24gPSB7XG4gIG5hbWU6ICdCYXR0ZXJ5Q2hhcmdpbmdJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJhdHRlcnktY2hhcmdpbmdcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk01IDE4SDNhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoMy4xOU0xNSA2aDJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJoLTMuMTlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyM1wiLFxuICAgICAgICB5MTogXCIxM1wiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIxMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTEgNiA3IDEyIDEzIDEyIDkgMThcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBCYXR0ZXJ5SWNvbiA9IHtcbiAgbmFtZTogJ0JhdHRlcnlJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJhdHRlcnlcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjFcIixcbiAgICAgICAgeTogXCI2XCIsXG4gICAgICAgIHdpZHRoOiBcIjE4XCIsXG4gICAgICAgIGhlaWdodDogXCIxMlwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyM1wiLFxuICAgICAgICB5MTogXCIxM1wiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIxMVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJlbGxPZmZJY29uID0ge1xuICBuYW1lOiAnQmVsbE9mZkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYmVsbC1vZmZcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMy43MyAyMWEyIDIgMCAwIDEtMy40NiAwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTguNjMgMTNBMTcuODkgMTcuODkgMCAwIDEgMTggOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTYuMjYgNi4yNkE1Ljg2IDUuODYgMCAwIDAgNiA4YzAgNy0zIDktMyA5aDE0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTggOGE2IDYgMCAwIDAtOS4zMy01XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQmVsbEljb24gPSB7XG4gIG5hbWU6ICdCZWxsSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1iZWxsXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTggOEE2IDYgMCAwIDAgNiA4YzAgNy0zIDktMyA5aDE4cy0zLTItMy05XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTMuNzMgMjFhMiAyIDAgMCAxLTMuNDYgMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJsdWV0b290aEljb24gPSB7XG4gIG5hbWU6ICdCbHVldG9vdGhJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJsdWV0b290aFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNi41IDYuNSAxNy41IDE3LjUgMTIgMjMgMTIgMSAxNy41IDYuNSA2LjUgMTcuNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJvbGRJY29uID0ge1xuICBuYW1lOiAnQm9sZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYm9sZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTYgNGg4YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxLTQgNEg2elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTYgMTJoOWE0IDQgMCAwIDEgNCA0IDQgNCAwIDAgMS00IDRINnpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBCb29rT3Blbkljb24gPSB7XG4gIG5hbWU6ICdCb29rT3Blbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYm9vay1vcGVuXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMiAzaDZhNCA0IDAgMCAxIDQgNHYxNGEzIDMgMCAwIDAtMy0zSDJ6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjIgM2gtNmE0IDQgMCAwIDAtNCA0djE0YTMgMyAwIDAgMSAzLTNoN3pcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBCb29rSWNvbiA9IHtcbiAgbmFtZTogJ0Jvb2tJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJvb2tcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk00IDE5LjVBMi41IDIuNSAwIDAgMSA2LjUgMTdIMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk02LjUgMkgyMHYyMEg2LjVBMi41IDIuNSAwIDAgMSA0IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQm9va21hcmtJY29uID0ge1xuICBuYW1lOiAnQm9va21hcmtJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJvb2ttYXJrXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTkgMjFsLTctNS03IDVWNWEyIDIgMCAwIDEgMi0yaDEwYTIgMiAwIDAgMSAyIDJ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQm94SWNvbiA9IHtcbiAgbmFtZTogJ0JveEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYm94XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIzLjI3IDYuOTYgMTIgMTIuMDEgMjAuNzMgNi45NlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjIyLjA4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQnJpZWZjYXNlSWNvbiA9IHtcbiAgbmFtZTogJ0JyaWVmY2FzZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYnJpZWZjYXNlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIyXCIsXG4gICAgICAgIHk6IFwiN1wiLFxuICAgICAgICB3aWR0aDogXCIyMFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTRcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYgMjFWNWEyIDIgMCAwIDAtMi0yaC00YTIgMiAwIDAgMC0yIDJ2MTZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDYWxlbmRhckljb24gPSB7XG4gIG5hbWU6ICdDYWxlbmRhckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2FsZW5kYXJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjNcIixcbiAgICAgICAgeTogXCI0XCIsXG4gICAgICAgIHdpZHRoOiBcIjE4XCIsXG4gICAgICAgIGhlaWdodDogXCIxOFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNlwiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiOFwiLFxuICAgICAgICB5MjogXCI2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCIxMFwiLFxuICAgICAgICB4MjogXCIyMVwiLFxuICAgICAgICB5MjogXCIxMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENhbWVyYU9mZkljb24gPSB7XG4gIG5hbWU6ICdDYW1lcmFPZmZJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNhbWVyYS1vZmZcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxXCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiMjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMSAyMUgzYTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDNtMy0zaDZsMiAzaDRhMiAyIDAgMCAxIDIgMnY5LjM0bS03LjcyLTIuMDZhNCA0IDAgMSAxLTUuNTYtNS41NlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENhbWVyYUljb24gPSB7XG4gIG5hbWU6ICdDYW1lcmFJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNhbWVyYVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIzIDE5YTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmg0bDItM2g2bDIgM2g0YTIgMiAwIDAgMSAyIDJ6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxM1wiLFxuICAgICAgICByOiBcIjRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDYXN0SWNvbiA9IHtcbiAgbmFtZTogJ0Nhc3RJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNhc3RcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yIDE2LjFBNSA1IDAgMCAxIDUuOSAyME0yIDEyLjA1QTkgOSAwIDAgMSA5Ljk1IDIwTTIgOFY2YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAyaC02XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMlwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCIyXCIsXG4gICAgICAgIHkyOiBcIjIwXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hlY2tDaXJjbGVJY29uID0ge1xuICBuYW1lOiAnQ2hlY2tDaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNoZWNrLWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDExLjA4VjEyYTEwIDEwIDAgMSAxLTUuOTMtOS4xNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjIgNCAxMiAxNC4wMSA5IDExLjAxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hlY2tTcXVhcmVJY29uID0ge1xuICBuYW1lOiAnQ2hlY2tTcXVhcmVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNoZWNrLXNxdWFyZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOSAxMSAxMiAxNCAyMiA0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjEgMTJ2N2EyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDaGVja0ljb24gPSB7XG4gIG5hbWU6ICdDaGVja0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2hlY2tcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIwIDYgOSAxNyA0IDEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hldnJvbkRvd25JY29uID0ge1xuICBuYW1lOiAnQ2hldnJvbkRvd25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNoZXZyb24tZG93blwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNiA5IDEyIDE1IDE4IDlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDaGV2cm9uTGVmdEljb24gPSB7XG4gIG5hbWU6ICdDaGV2cm9uTGVmdEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2hldnJvbi1sZWZ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNSAxOCA5IDEyIDE1IDZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDaGV2cm9uUmlnaHRJY29uID0ge1xuICBuYW1lOiAnQ2hldnJvblJpZ2h0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaGV2cm9uLXJpZ2h0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI5IDE4IDE1IDEyIDkgNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENoZXZyb25VcEljb24gPSB7XG4gIG5hbWU6ICdDaGV2cm9uVXBJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNoZXZyb24tdXBcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE4IDE1IDEyIDkgNiAxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENoZXZyb25zRG93bkljb24gPSB7XG4gIG5hbWU6ICdDaGV2cm9uc0Rvd25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNoZXZyb25zLWRvd25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcgMTMgMTIgMTggMTcgMTNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcgNiAxMiAxMSAxNyA2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hldnJvbnNMZWZ0SWNvbiA9IHtcbiAgbmFtZTogJ0NoZXZyb25zTGVmdEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2hldnJvbnMtbGVmdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTEgMTcgNiAxMiAxMSA3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxOCAxNyAxMyAxMiAxOCA3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hldnJvbnNSaWdodEljb24gPSB7XG4gIG5hbWU6ICdDaGV2cm9uc1JpZ2h0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaGV2cm9ucy1yaWdodFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTMgMTcgMTggMTIgMTMgN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNiAxNyAxMSAxMiA2IDdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDaGV2cm9uc1VwSWNvbiA9IHtcbiAgbmFtZTogJ0NoZXZyb25zVXBJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNoZXZyb25zLXVwXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNyAxMSAxMiA2IDcgMTFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE3IDE4IDEyIDEzIDcgMThcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDaHJvbWVJY29uID0ge1xuICBuYW1lOiAnQ2hyb21lSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaHJvbWVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxLjE3XCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjMuOTVcIixcbiAgICAgICAgeTE6IFwiNi4wNlwiLFxuICAgICAgICB4MjogXCI4LjU0XCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTAuODhcIixcbiAgICAgICAgeTE6IFwiMjEuOTRcIixcbiAgICAgICAgeDI6IFwiMTUuNDZcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDaXJjbGVJY29uID0ge1xuICBuYW1lOiAnQ2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaXJjbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDbGlwYm9hcmRJY29uID0ge1xuICBuYW1lOiAnQ2xpcGJvYXJkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jbGlwYm9hcmRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiOFwiLFxuICAgICAgICB5OiBcIjJcIixcbiAgICAgICAgd2lkdGg6IFwiOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiNFwiLFxuICAgICAgICByeDogXCIxXCIsXG4gICAgICAgIHJ5OiBcIjFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDbG9ja0ljb24gPSB7XG4gIG5hbWU6ICdDbG9ja0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2xvY2tcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDYgMTIgMTIgMTYgMTRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDbG91ZERyaXp6bGVJY29uID0ge1xuICBuYW1lOiAnQ2xvdWREcml6emxlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jbG91ZC1kcml6emxlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxOVwiLFxuICAgICAgICB4MjogXCI4XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxM1wiLFxuICAgICAgICB4MjogXCI4XCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTZcIixcbiAgICAgICAgeTE6IFwiMTlcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNlwiLFxuICAgICAgICB5MTogXCIxM1wiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjIxXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTVcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMCAxNi41OEE1IDUgMCAwIDAgMTggN2gtMS4yNkE4IDggMCAxIDAgNCAxNS4yNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENsb3VkTGlnaHRuaW5nSWNvbiA9IHtcbiAgbmFtZTogJ0Nsb3VkTGlnaHRuaW5nSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jbG91ZC1saWdodG5pbmdcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOSAxNi45QTUgNSAwIDAgMCAxOCA3aC0xLjI2YTggOCAwIDEgMC0xMS42MiA5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMyAxMSA5IDE3IDE1IDE3IDExIDIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2xvdWRPZmZJY29uID0ge1xuICBuYW1lOiAnQ2xvdWRPZmZJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNsb3VkLW9mZlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyLjYxIDE2Ljk1QTUgNSAwIDAgMCAxOCAxMGgtMS4yNmE4IDggMCAwIDAtNy4wNS02TTUgNWE4IDggMCAwIDAgNCAxNWg5YTUgNSAwIDAgMCAxLjctLjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxXCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiMjNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDbG91ZFJhaW5JY29uID0ge1xuICBuYW1lOiAnQ2xvdWRSYWluSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jbG91ZC1yYWluXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTZcIixcbiAgICAgICAgeTE6IFwiMTNcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjEzXCIsXG4gICAgICAgIHgyOiBcIjhcIixcbiAgICAgICAgeTI6IFwiMjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxNVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIwIDE2LjU4QTUgNSAwIDAgMCAxOCA3aC0xLjI2QTggOCAwIDEgMCA0IDE1LjI1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2xvdWRTbm93SWNvbiA9IHtcbiAgbmFtZTogJ0Nsb3VkU25vd0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2xvdWQtc25vd1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIwIDE3LjU4QTUgNSAwIDAgMCAxOCA4aC0xLjI2QTggOCAwIDEgMCA0IDE2LjI1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxNlwiLFxuICAgICAgICB4MjogXCI4XCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCI4XCIsXG4gICAgICAgIHkyOiBcIjIwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMlwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTZcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMjBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDbG91ZEljb24gPSB7XG4gIG5hbWU6ICdDbG91ZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2xvdWRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOCAxMGgtMS4yNkE4IDggMCAxIDAgOSAyMGg5YTUgNSAwIDAgMCAwLTEwelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvZGVJY29uID0ge1xuICBuYW1lOiAnQ29kZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29kZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTYgMTggMjIgMTIgMTYgNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOCA2IDIgMTIgOCAxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvZGVwZW5JY29uID0ge1xuICBuYW1lOiAnQ29kZXBlbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29kZXBlblwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMiAyIDIyIDguNSAyMiAxNS41IDEyIDIyIDIgMTUuNSAyIDguNSAxMiAyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMjJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTUuNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjIgOC41IDEyIDE1LjUgMiA4LjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIgMTUuNSAxMiA4LjUgMjIgMTUuNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiOC41XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29kZXNhbmRib3hJY29uID0ge1xuICBuYW1lOiAnQ29kZXNhbmRib3hJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvZGVzYW5kYm94XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3LjUgNC4yMSAxMiA2LjgxIDE2LjUgNC4yMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNy41IDE5Ljc5IDcuNSAxNC42IDMgMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIxIDEyIDE2LjUgMTQuNiAxNi41IDE5Ljc5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIzLjI3IDYuOTYgMTIgMTIuMDEgMjAuNzMgNi45NlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjIyLjA4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29mZmVlSWNvbiA9IHtcbiAgbmFtZTogJ0NvZmZlZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29mZmVlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTggOGgxYTQgNCAwIDAgMSAwIDhoLTFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yIDhoMTZ2OWE0IDQgMCAwIDEtNCA0SDZhNCA0IDAgMCAxLTQtNFY4elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjZcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCI2XCIsXG4gICAgICAgIHkyOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMFwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjEwXCIsXG4gICAgICAgIHkyOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNFwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjE0XCIsXG4gICAgICAgIHkyOiBcIjRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb2x1bW5zSWNvbiA9IHtcbiAgbmFtZTogJ0NvbHVtbnNJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvbHVtbnNcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMiAzaDdhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAyaC03bTAtMThINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoN20wLTE4djE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29tbWFuZEljb24gPSB7XG4gIG5hbWU6ICdDb21tYW5kSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb21tYW5kXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTggM2EzIDMgMCAwIDAtMyAzdjEyYTMgMyAwIDAgMCAzIDMgMyAzIDAgMCAwIDMtMyAzIDMgMCAwIDAtMy0zSDZhMyAzIDAgMCAwLTMgMyAzIDMgMCAwIDAgMyAzIDMgMyAwIDAgMCAzLTNWNmEzIDMgMCAwIDAtMy0zIDMgMyAwIDAgMC0zIDMgMyAzIDAgMCAwIDMgM2gxMmEzIDMgMCAwIDAgMy0zIDMgMyAwIDAgMC0zLTN6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29tcGFzc0ljb24gPSB7XG4gIG5hbWU6ICdDb21wYXNzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb21wYXNzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE2LjI0IDcuNzYgMTQuMTIgMTQuMTIgNy43NiAxNi4yNCA5Ljg4IDkuODggMTYuMjQgNy43NlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvcHlJY29uID0ge1xuICBuYW1lOiAnQ29weUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29weVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiOVwiLFxuICAgICAgICB5OiBcIjlcIixcbiAgICAgICAgd2lkdGg6IFwiMTNcIixcbiAgICAgICAgaGVpZ2h0OiBcIjEzXCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTUgMTVINGEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg5YTIgMiAwIDAgMSAyIDJ2MVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvcm5lckRvd25MZWZ0SWNvbiA9IHtcbiAgbmFtZTogJ0Nvcm5lckRvd25MZWZ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb3JuZXItZG93bi1sZWZ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI5IDEwIDQgMTUgOSAyMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb3JuZXJEb3duUmlnaHRJY29uID0ge1xuICBuYW1lOiAnQ29ybmVyRG93blJpZ2h0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb3JuZXItZG93bi1yaWdodFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTUgMTAgMjAgMTUgMTUgMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk00IDR2N2E0IDQgMCAwIDAgNCA0aDEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29ybmVyTGVmdERvd25JY29uID0ge1xuICBuYW1lOiAnQ29ybmVyTGVmdERvd25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvcm5lci1sZWZ0LWRvd25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE0IDE1IDkgMjAgNCAxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIwIDRoLTdhNCA0IDAgMCAwLTQgNHYxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvcm5lckxlZnRVcEljb24gPSB7XG4gIG5hbWU6ICdDb3JuZXJMZWZ0VXBJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvcm5lci1sZWZ0LXVwXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNCA5IDkgNCA0IDlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMCAyMGgtN2E0IDQgMCAwIDEtNC00VjRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb3JuZXJSaWdodERvd25JY29uID0ge1xuICBuYW1lOiAnQ29ybmVyUmlnaHREb3duSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb3JuZXItcmlnaHQtZG93blwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTAgMTUgMTUgMjAgMjAgMTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk00IDRoN2E0IDQgMCAwIDEgNCA0djEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29ybmVyUmlnaHRVcEljb24gPSB7XG4gIG5hbWU6ICdDb3JuZXJSaWdodFVwSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb3JuZXItcmlnaHQtdXBcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEwIDkgMTUgNCAyMCA5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCAyMGg3YTQgNCAwIDAgMCA0LTRWNFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvcm5lclVwTGVmdEljb24gPSB7XG4gIG5hbWU6ICdDb3JuZXJVcExlZnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvcm5lci11cC1sZWZ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI5IDE0IDQgOSA5IDRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMCAyMHYtN2E0IDQgMCAwIDAtNC00SDRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb3JuZXJVcFJpZ2h0SWNvbiA9IHtcbiAgbmFtZTogJ0Nvcm5lclVwUmlnaHRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvcm5lci11cC1yaWdodFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTUgMTQgMjAgOSAxNSA0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCAyMHYtN2E0IDQgMCAwIDEgNC00aDEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ3B1SWNvbiA9IHtcbiAgbmFtZTogJ0NwdUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY3B1XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCI0XCIsXG4gICAgICAgIHk6IFwiNFwiLFxuICAgICAgICB3aWR0aDogXCIxNlwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTZcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCI5XCIsXG4gICAgICAgIHk6IFwiOVwiLFxuICAgICAgICB3aWR0aDogXCI2XCIsXG4gICAgICAgIGhlaWdodDogXCI2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjlcIixcbiAgICAgICAgeTI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMTVcIixcbiAgICAgICAgeTI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiOVwiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjIwXCIsXG4gICAgICAgIHgyOiBcIjE1XCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjBcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCI5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjBcIixcbiAgICAgICAgeTE6IFwiMTRcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxXCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiNFwiLFxuICAgICAgICB5MjogXCI5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxNFwiLFxuICAgICAgICB4MjogXCI0XCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ3JlZGl0Q2FyZEljb24gPSB7XG4gIG5hbWU6ICdDcmVkaXRDYXJkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jcmVkaXQtY2FyZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMVwiLFxuICAgICAgICB5OiBcIjRcIixcbiAgICAgICAgd2lkdGg6IFwiMjJcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE2XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjFcIixcbiAgICAgICAgeTE6IFwiMTBcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDcm9wSWNvbiA9IHtcbiAgbmFtZTogJ0Nyb3BJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNyb3BcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk02LjEzIDFMNiAxNmEyIDIgMCAwIDAgMiAyaDE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMSA2LjEzTDE2IDZhMiAyIDAgMCAxIDIgMnYxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENyb3NzaGFpckljb24gPSB7XG4gIG5hbWU6ICdDcm9zc2hhaXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNyb3NzaGFpclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIyXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjE4XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNlwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiNlwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMjJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBEYXRhYmFzZUljb24gPSB7XG4gIG5hbWU6ICdEYXRhYmFzZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZGF0YWJhc2VcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiZWxsaXBzZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCI1XCIsXG4gICAgICAgIHJ4OiBcIjlcIixcbiAgICAgICAgcnk6IFwiM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDEyYzAgMS42Ni00IDMtOSAzcy05LTEuMzQtOS0zXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMyA1djE0YzAgMS42NiA0IDMgOSAzczktMS4zNCA5LTNWNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIERlbGV0ZUljb24gPSB7XG4gIG5hbWU6ICdEZWxldGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWRlbGV0ZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDRIOGwtNyA4IDcgOGgxM2EyIDIgMCAwIDAgMi0yVjZhMiAyIDAgMCAwLTItMnpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOFwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIxOFwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIERpc2NJY29uID0ge1xuICBuYW1lOiAnRGlzY0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZGlzY1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRG9sbGFyU2lnbkljb24gPSB7XG4gIG5hbWU6ICdEb2xsYXJTaWduSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1kb2xsYXItc2lnblwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNyA1SDkuNWEzLjUgMy41IDAgMCAwIDAgN2g1YTMuNSAzLjUgMCAwIDEgMCA3SDZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBEb3dubG9hZENsb3VkSWNvbiA9IHtcbiAgbmFtZTogJ0Rvd25sb2FkQ2xvdWRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkLWNsb3VkXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI4IDE3IDEyIDIxIDE2IDE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMC44OCAxOC4wOUE1IDUgMCAwIDAgMTggOWgtMS4yNkE4IDggMCAxIDAgMyAxNi4yOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIERvd25sb2FkSWNvbiA9IHtcbiAgbmFtZTogJ0Rvd25sb2FkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1kb3dubG9hZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcgMTAgMTIgMTUgMTcgMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxNVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRHJvcGxldEljb24gPSB7XG4gIG5hbWU6ICdEcm9wbGV0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1kcm9wbGV0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgMi42OWw1LjY2IDUuNjZhOCA4IDAgMSAxLTExLjMxIDB6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRWRpdDJJY29uID0ge1xuICBuYW1lOiAnRWRpdDJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWVkaXQtMlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE3IDNhMi44MjggMi44MjggMCAxIDEgNCA0TDcuNSAyMC41IDIgMjJsMS41LTUuNUwxNyAzelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEVkaXQzSWNvbiA9IHtcbiAgbmFtZTogJ0VkaXQzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1lZGl0LTNcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMiAyMGg5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYuNSAzLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTRMMTYuNSAzLjV6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRWRpdEljb24gPSB7XG4gIG5hbWU6ICdFZGl0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1lZGl0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTEgNEg0YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi03XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTguNSAyLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDEyIDE1bC00IDEgMS00IDkuNS05LjV6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRXh0ZXJuYWxMaW5rSWNvbiA9IHtcbiAgbmFtZTogJ0V4dGVybmFsTGlua0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZXh0ZXJuYWwtbGlua1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE1IDMgMjEgMyAyMSA5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTBcIixcbiAgICAgICAgeTE6IFwiMTRcIixcbiAgICAgICAgeDI6IFwiMjFcIixcbiAgICAgICAgeTI6IFwiM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEV5ZU9mZkljb24gPSB7XG4gIG5hbWU6ICdFeWVPZmZJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWV5ZS1vZmZcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNy45NCAxNy45NEExMC4wNyAxMC4wNyAwIDAgMSAxMiAyMGMtNyAwLTExLTgtMTEtOGExOC40NSAxOC40NSAwIDAgMSA1LjA2LTUuOTRNOS45IDQuMjRBOS4xMiA5LjEyIDAgMCAxIDEyIDRjNyAwIDExIDggMTEgOGExOC41IDE4LjUgMCAwIDEtMi4xNiAzLjE5bS02LjcyLTEuMDdhMyAzIDAgMSAxLTQuMjQtNC4yNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjFcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEV5ZUljb24gPSB7XG4gIG5hbWU6ICdFeWVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWV5ZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEgMTJzNC04IDExLTggMTEgOCAxMSA4LTQgOC0xMSA4LTExLTgtMTEtOHpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZhY2Vib29rSWNvbiA9IHtcbiAgbmFtZTogJ0ZhY2Vib29rSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1mYWNlYm9va1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4IDJoLTNhNSA1IDAgMCAwLTUgNXYzSDd2NGgzdjhoNHYtOGgzbDEtNGgtNFY3YTEgMSAwIDAgMSAxLTFoM3pcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGYXN0Rm9yd2FyZEljb24gPSB7XG4gIG5hbWU6ICdGYXN0Rm9yd2FyZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZmFzdC1mb3J3YXJkXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEzIDE5IDIyIDEyIDEzIDUgMTMgMTlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMiAxOSAxMSAxMiAyIDUgMiAxOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZlYXRoZXJJY29uID0ge1xuICBuYW1lOiAnRmVhdGhlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZmVhdGhlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIwLjI0IDEyLjI0YTYgNiAwIDAgMC04LjQ5LTguNDlMNSAxMC41VjE5aDguNXpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjJcIixcbiAgICAgICAgeTI6IFwiMjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNy41XCIsXG4gICAgICAgIHkxOiBcIjE1XCIsXG4gICAgICAgIHgyOiBcIjlcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGaWdtYUljb24gPSB7XG4gIG5hbWU6ICdGaWdtYUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZmlnbWFcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk01IDUuNUEzLjUgMy41IDAgMCAxIDguNSAySDEydjdIOC41QTMuNSAzLjUgMCAwIDEgNSA1LjV6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgMmgzLjVhMy41IDMuNSAwIDEgMSAwIDdIMTJWMnpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMiAxMi41YTMuNSAzLjUgMCAxIDEgNyAwIDMuNSAzLjUgMCAxIDEtNyAwelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTUgMTkuNUEzLjUgMy41IDAgMCAxIDguNSAxNkgxMnYzLjVhMy41IDMuNSAwIDEgMS03IDB6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNSAxMi41QTMuNSAzLjUgMCAwIDEgOC41IDlIMTJ2N0g4LjVBMy41IDMuNSAwIDAgMSA1IDEyLjV6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRmlsZU1pbnVzSWNvbiA9IHtcbiAgbmFtZTogJ0ZpbGVNaW51c0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZmlsZS1taW51c1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTQgMiAxNCA4IDIwIDhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjE1XCIsXG4gICAgICAgIHgyOiBcIjE1XCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRmlsZVBsdXNJY29uID0ge1xuICBuYW1lOiAnRmlsZVBsdXNJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWZpbGUtcGx1c1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTQgMiAxNCA4IDIwIDhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiMTVcIixcbiAgICAgICAgeDI6IFwiMTVcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGaWxlVGV4dEljb24gPSB7XG4gIG5hbWU6ICdGaWxlVGV4dEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZmlsZS10ZXh0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNCAyIDE0IDggMjAgOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjEzXCIsXG4gICAgICAgIHgyOiBcIjhcIixcbiAgICAgICAgeTI6IFwiMTNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNlwiLFxuICAgICAgICB5MTogXCIxN1wiLFxuICAgICAgICB4MjogXCI4XCIsXG4gICAgICAgIHkyOiBcIjE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMCA5IDkgOSA4IDlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGaWxlSWNvbiA9IHtcbiAgbmFtZTogJ0ZpbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWZpbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMyAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOXpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEzIDIgMTMgOSAyMCA5XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRmlsbUljb24gPSB7XG4gIG5hbWU6ICdGaWxtSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1maWxtXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIyXCIsXG4gICAgICAgIHk6IFwiMlwiLFxuICAgICAgICB3aWR0aDogXCIyMFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjBcIixcbiAgICAgICAgcng6IFwiMi4xOFwiLFxuICAgICAgICByeTogXCIyLjE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiN1wiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjdcIixcbiAgICAgICAgeTI6IFwiMjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxN1wiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjE3XCIsXG4gICAgICAgIHkyOiBcIjIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMlwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIyMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjJcIixcbiAgICAgICAgeTE6IFwiN1wiLFxuICAgICAgICB4MjogXCI3XCIsXG4gICAgICAgIHkyOiBcIjdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyXCIsXG4gICAgICAgIHkxOiBcIjE3XCIsXG4gICAgICAgIHgyOiBcIjdcIixcbiAgICAgICAgeTI6IFwiMTdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxN1wiLFxuICAgICAgICB5MTogXCIxN1wiLFxuICAgICAgICB4MjogXCIyMlwiLFxuICAgICAgICB5MjogXCIxN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3XCIsXG4gICAgICAgIHkxOiBcIjdcIixcbiAgICAgICAgeDI6IFwiMjJcIixcbiAgICAgICAgeTI6IFwiN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZpbHRlckljb24gPSB7XG4gIG5hbWU6ICdGaWx0ZXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWZpbHRlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRmxhZ0ljb24gPSB7XG4gIG5hbWU6ICdGbGFnSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1mbGFnXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCAxNXMxLTEgNC0xIDUgMiA4IDIgNC0xIDQtMVYzcy0xIDEtNCAxLTUtMi04LTItNCAxLTQgMXpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI0XCIsXG4gICAgICAgIHkxOiBcIjIyXCIsXG4gICAgICAgIHgyOiBcIjRcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGb2xkZXJNaW51c0ljb24gPSB7XG4gIG5hbWU6ICdGb2xkZXJNaW51c0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZm9sZGVyLW1pbnVzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjE0XCIsXG4gICAgICAgIHgyOiBcIjE1XCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRm9sZGVyUGx1c0ljb24gPSB7XG4gIG5hbWU6ICdGb2xkZXJQbHVzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1mb2xkZXItcGx1c1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTFcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjE0XCIsXG4gICAgICAgIHgyOiBcIjE1XCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRm9sZGVySWNvbiA9IHtcbiAgbmFtZTogJ0ZvbGRlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZm9sZGVyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGcmFtZXJJY29uID0ge1xuICBuYW1lOiAnRnJhbWVySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1mcmFtZXJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk01IDE2VjloMTRWMkg1bDE0IDE0aC03bS03IDBsNyA3di03bS03IDBoN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZyb3duSWNvbiA9IHtcbiAgbmFtZTogJ0Zyb3duSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1mcm93blwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2IDE2cy0xLjUtMi00LTItNCAyLTQgMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCI5LjAxXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjE1LjAxXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBHaWZ0SWNvbiA9IHtcbiAgbmFtZTogJ0dpZnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWdpZnRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIwIDEyIDIwIDIyIDQgMjIgNCAxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMlwiLFxuICAgICAgICB5OiBcIjdcIixcbiAgICAgICAgd2lkdGg6IFwiMjBcIixcbiAgICAgICAgaGVpZ2h0OiBcIjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMlwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCI3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgN0g3LjVhMi41IDIuNSAwIDAgMSAwLTVDMTEgMiAxMiA3IDEyIDd6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgN2g0LjVhMi41IDIuNSAwIDAgMCAwLTVDMTMgMiAxMiA3IDEyIDd6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgR2l0QnJhbmNoSWNvbiA9IHtcbiAgbmFtZTogJ0dpdEJyYW5jaEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZ2l0LWJyYW5jaFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjZcIixcbiAgICAgICAgeTE6IFwiM1wiLFxuICAgICAgICB4MjogXCI2XCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxOFwiLFxuICAgICAgICBjeTogXCI2XCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiNlwiLFxuICAgICAgICBjeTogXCIxOFwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOCA5YTkgOSAwIDAgMS05IDlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBHaXRDb21taXRJY29uID0ge1xuICBuYW1lOiAnR2l0Q29tbWl0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1naXQtY29tbWl0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxLjA1XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjdcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNy4wMVwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIyMi45NlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEdpdE1lcmdlSWNvbiA9IHtcbiAgbmFtZTogJ0dpdE1lcmdlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1naXQtbWVyZ2VcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjE4XCIsXG4gICAgICAgIGN5OiBcIjE4XCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiNlwiLFxuICAgICAgICBjeTogXCI2XCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTYgMjFWOWE5IDkgMCAwIDAgOSA5XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgR2l0UHVsbFJlcXVlc3RJY29uID0ge1xuICBuYW1lOiAnR2l0UHVsbFJlcXVlc3RJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWdpdC1wdWxsLXJlcXVlc3RcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjE4XCIsXG4gICAgICAgIGN5OiBcIjE4XCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiNlwiLFxuICAgICAgICBjeTogXCI2XCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEzIDZoM2EyIDIgMCAwIDEgMiAydjdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI2XCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiNlwiLFxuICAgICAgICB5MjogXCIyMVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEdpdGh1Ykljb24gPSB7XG4gIG5hbWU6ICdHaXRodWJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWdpdGh1YlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTkgMTljLTUgMS41LTUtMi41LTctM20xNCA2di0zLjg3YTMuMzcgMy4zNyAwIDAgMC0uOTQtMi42MWMzLjE0LS4zNSA2LjQ0LTEuNTQgNi40NC03QTUuNDQgNS40NCAwIDAgMCAyMCA0Ljc3IDUuMDcgNS4wNyAwIDAgMCAxOS45MSAxUzE4LjczLjY1IDE2IDIuNDhhMTMuMzggMTMuMzggMCAwIDAtNyAwQzYuMjcuNjUgNS4wOSAxIDUuMDkgMUE1LjA3IDUuMDcgMCAwIDAgNSA0Ljc3YTUuNDQgNS40NCAwIDAgMC0xLjUgMy43OGMwIDUuNDIgMy4zIDYuNjEgNi40NCA3QTMuMzcgMy4zNyAwIDAgMCA5IDE4LjEzVjIyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgR2l0bGFiSWNvbiA9IHtcbiAgbmFtZTogJ0dpdGxhYkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZ2l0bGFiXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjIuNjUgMTQuMzlMMTIgMjIuMTMgMS4zNSAxNC4zOWEuODQuODQgMCAwIDEtLjMtLjk0bDEuMjItMy43OCAyLjQ0LTcuNTFBLjQyLjQyIDAgMCAxIDQuODIgMmEuNDMuNDMgMCAwIDEgLjU4IDAgLjQyLjQyIDAgMCAxIC4xMS4xOGwyLjQ0IDcuNDloOC4xbDIuNDQtNy41MUEuNDIuNDIgMCAwIDEgMTguNiAyYS40My40MyAwIDAgMSAuNTggMCAuNDIuNDIgMCAwIDEgLjExLjE4bDIuNDQgNy41MUwyMyAxMy40NWEuODQuODQgMCAwIDEtLjM1Ljk0elwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEdsb2JlSWNvbiA9IHtcbiAgbmFtZTogJ0dsb2JlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1nbG9iZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjJcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMjJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMiAyYTE1LjMgMTUuMyAwIDAgMSA0IDEwIDE1LjMgMTUuMyAwIDAgMS00IDEwIDE1LjMgMTUuMyAwIDAgMS00LTEwIDE1LjMgMTUuMyAwIDAgMSA0LTEwelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEdyaWRJY29uID0ge1xuICBuYW1lOiAnR3JpZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZ3JpZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiM1wiLFxuICAgICAgICB5OiBcIjNcIixcbiAgICAgICAgd2lkdGg6IFwiN1wiLFxuICAgICAgICBoZWlnaHQ6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMTRcIixcbiAgICAgICAgeTogXCIzXCIsXG4gICAgICAgIHdpZHRoOiBcIjdcIixcbiAgICAgICAgaGVpZ2h0OiBcIjdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjE0XCIsXG4gICAgICAgIHk6IFwiMTRcIixcbiAgICAgICAgd2lkdGg6IFwiN1wiLFxuICAgICAgICBoZWlnaHQ6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiM1wiLFxuICAgICAgICB5OiBcIjE0XCIsXG4gICAgICAgIHdpZHRoOiBcIjdcIixcbiAgICAgICAgaGVpZ2h0OiBcIjdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBIYXJkRHJpdmVJY29uID0ge1xuICBuYW1lOiAnSGFyZERyaXZlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1oYXJkLWRyaXZlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjJcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTUuNDUgNS4xMUwyIDEydjZhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi02bC0zLjQ1LTYuODlBMiAyIDAgMCAwIDE2Ljc2IDRINy4yNGEyIDIgMCAwIDAtMS43OSAxLjExelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjZcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiNlwiLFxuICAgICAgICB5MjogXCIxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEwXCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjEwXCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSGFzaEljb24gPSB7XG4gIG5hbWU6ICdIYXNoSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1oYXNoXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNFwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjIwXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI0XCIsXG4gICAgICAgIHkxOiBcIjE1XCIsXG4gICAgICAgIHgyOiBcIjIwXCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTBcIixcbiAgICAgICAgeTE6IFwiM1wiLFxuICAgICAgICB4MjogXCI4XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTZcIixcbiAgICAgICAgeTE6IFwiM1wiLFxuICAgICAgICB4MjogXCIxNFwiLFxuICAgICAgICB5MjogXCIyMVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEhlYWRwaG9uZXNJY29uID0ge1xuICBuYW1lOiAnSGVhZHBob25lc0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItaGVhZHBob25lc1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTMgMTh2LTZhOSA5IDAgMCAxIDE4IDB2NlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDE5YTIgMiAwIDAgMS0yIDJoLTFhMiAyIDAgMCAxLTItMnYtM2EyIDIgMCAwIDEgMi0yaDN6TTMgMTlhMiAyIDAgMCAwIDIgMmgxYTIgMiAwIDAgMCAyLTJ2LTNhMiAyIDAgMCAwLTItMkgzelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEhlYXJ0SWNvbiA9IHtcbiAgbmFtZTogJ0hlYXJ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1oZWFydFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIwLjg0IDQuNjFhNS41IDUuNSAwIDAgMC03Ljc4IDBMMTIgNS42N2wtMS4wNi0xLjA2YTUuNSA1LjUgMCAwIDAtNy43OCA3Ljc4bDEuMDYgMS4wNkwxMiAyMS4yM2w3Ljc4LTcuNzggMS4wNi0xLjA2YTUuNSA1LjUgMCAwIDAgMC03Ljc4elwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEhlbHBDaXJjbGVJY29uID0ge1xuICBuYW1lOiAnSGVscENpcmNsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItaGVscC1jaXJjbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk05LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE3XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSGV4YWdvbkljb24gPSB7XG4gIG5hbWU6ICdIZXhhZ29uSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1oZXhhZ29uXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSG9tZUljb24gPSB7XG4gIG5hbWU6ICdIb21lSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1ob21lXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMyA5bDktNyA5IDd2MTFhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI5IDIyIDkgMTIgMTUgMTIgMTUgMjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBJbWFnZUljb24gPSB7XG4gIG5hbWU6ICdJbWFnZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItaW1hZ2VcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjNcIixcbiAgICAgICAgeTogXCIzXCIsXG4gICAgICAgIHdpZHRoOiBcIjE4XCIsXG4gICAgICAgIGhlaWdodDogXCIxOFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjguNVwiLFxuICAgICAgICBjeTogXCI4LjVcIixcbiAgICAgICAgcjogXCIxLjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIxIDE1IDE2IDEwIDUgMjFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBJbmJveEljb24gPSB7XG4gIG5hbWU6ICdJbmJveEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItaW5ib3hcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIyIDEyIDE2IDEyIDE0IDE1IDEwIDE1IDggMTIgMiAxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTUuNDUgNS4xMUwyIDEydjZhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi02bC0zLjQ1LTYuODlBMiAyIDAgMCAwIDE2Ljc2IDRINy4yNGEyIDIgMCAwIDAtMS43OSAxLjExelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEluZm9JY29uID0ge1xuICBuYW1lOiAnSW5mb0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItaW5mb1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCI4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSW5zdGFncmFtSWNvbiA9IHtcbiAgbmFtZTogJ0luc3RhZ3JhbUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItaW5zdGFncmFtXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIyXCIsXG4gICAgICAgIHk6IFwiMlwiLFxuICAgICAgICB3aWR0aDogXCIyMFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjBcIixcbiAgICAgICAgcng6IFwiNVwiLFxuICAgICAgICByeTogXCI1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYgMTEuMzdBNCA0IDAgMSAxIDEyLjYzIDggNCA0IDAgMCAxIDE2IDExLjM3elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3LjVcIixcbiAgICAgICAgeTE6IFwiNi41XCIsXG4gICAgICAgIHgyOiBcIjE3LjVcIixcbiAgICAgICAgeTI6IFwiNi41XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSXRhbGljSWNvbiA9IHtcbiAgbmFtZTogJ0l0YWxpY0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItaXRhbGljXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTlcIixcbiAgICAgICAgeTE6IFwiNFwiLFxuICAgICAgICB4MjogXCIxMFwiLFxuICAgICAgICB5MjogXCI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTRcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiNVwiLFxuICAgICAgICB5MjogXCIyMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjRcIixcbiAgICAgICAgeDI6IFwiOVwiLFxuICAgICAgICB5MjogXCIyMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEtleUljb24gPSB7XG4gIG5hbWU6ICdLZXlJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWtleVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDJsLTIgMm0tNy42MSA3LjYxYTUuNSA1LjUgMCAxIDEtNy43NzggNy43NzggNS41IDUuNSAwIDAgMSA3Ljc3Ny03Ljc3N3ptMCAwTDE1LjUgNy41bTAgMGwzIDNMMjIgN2wtMy0zbS0zLjUgMy41TDE5IDRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMYXllcnNJY29uID0ge1xuICBuYW1lOiAnTGF5ZXJzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1sYXllcnNcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTIgMiAyIDcgMTIgMTIgMjIgNyAxMiAyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyIDE3IDEyIDIyIDIyIDE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyIDEyIDEyIDE3IDIyIDEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTGF5b3V0SWNvbiA9IHtcbiAgbmFtZTogJ0xheW91dEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbGF5b3V0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjIxXCIsXG4gICAgICAgIHgyOiBcIjlcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIExpZmVCdW95SWNvbiA9IHtcbiAgbmFtZTogJ0xpZmVCdW95SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1saWZlLWJ1b3lcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjQuOTNcIixcbiAgICAgICAgeTE6IFwiNC45M1wiLFxuICAgICAgICB4MjogXCI5LjE3XCIsXG4gICAgICAgIHkyOiBcIjkuMTdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNC44M1wiLFxuICAgICAgICB5MTogXCIxNC44M1wiLFxuICAgICAgICB4MjogXCIxOS4wN1wiLFxuICAgICAgICB5MjogXCIxOS4wN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE0LjgzXCIsXG4gICAgICAgIHkxOiBcIjkuMTdcIixcbiAgICAgICAgeDI6IFwiMTkuMDdcIixcbiAgICAgICAgeTI6IFwiNC45M1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE0LjgzXCIsXG4gICAgICAgIHkxOiBcIjkuMTdcIixcbiAgICAgICAgeDI6IFwiMTguMzZcIixcbiAgICAgICAgeTI6IFwiNS42NFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjQuOTNcIixcbiAgICAgICAgeTE6IFwiMTkuMDdcIixcbiAgICAgICAgeDI6IFwiOS4xN1wiLFxuICAgICAgICB5MjogXCIxNC44M1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIExpbmsySWNvbiA9IHtcbiAgbmFtZTogJ0xpbmsySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1saW5rLTJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNSA3aDNhNSA1IDAgMCAxIDUgNSA1IDUgMCAwIDEtNSA1aC0zbS02IDBINmE1IDUgMCAwIDEtNS01IDUgNSAwIDAgMSA1LTVoM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMaW5rSWNvbiA9IHtcbiAgbmFtZTogJ0xpbmtJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWxpbmtcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMCAxM2E1IDUgMCAwIDAgNy41NC41NGwzLTNhNSA1IDAgMCAwLTcuMDctNy4wN2wtMS43MiAxLjcxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTQgMTFhNSA1IDAgMCAwLTcuNTQtLjU0bC0zIDNhNSA1IDAgMCAwIDcuMDcgNy4wN2wxLjcxLTEuNzFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMaW5rZWRpbkljb24gPSB7XG4gIG5hbWU6ICdMaW5rZWRpbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbGlua2VkaW5cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNiA4YTYgNiAwIDAgMSA2IDZ2N2gtNHYtN2EyIDIgMCAwIDAtMi0yIDIgMiAwIDAgMC0yIDJ2N2gtNHYtN2E2IDYgMCAwIDEgNi02elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMlwiLFxuICAgICAgICB5OiBcIjlcIixcbiAgICAgICAgd2lkdGg6IFwiNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjRcIixcbiAgICAgICAgY3k6IFwiNFwiLFxuICAgICAgICByOiBcIjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMaXN0SWNvbiA9IHtcbiAgbmFtZTogJ0xpc3RJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWxpc3RcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiMjFcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMjFcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCI2XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjNcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiM1wiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjNcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiM1wiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIExvYWRlckljb24gPSB7XG4gIG5hbWU6ICdMb2FkZXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWxvYWRlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNC45M1wiLFxuICAgICAgICB5MTogXCI0LjkzXCIsXG4gICAgICAgIHgyOiBcIjcuNzZcIixcbiAgICAgICAgeTI6IFwiNy43NlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2LjI0XCIsXG4gICAgICAgIHkxOiBcIjE2LjI0XCIsXG4gICAgICAgIHgyOiBcIjE5LjA3XCIsXG4gICAgICAgIHkyOiBcIjE5LjA3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMlwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCI2XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMThcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMjJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI0LjkzXCIsXG4gICAgICAgIHkxOiBcIjE5LjA3XCIsXG4gICAgICAgIHgyOiBcIjcuNzZcIixcbiAgICAgICAgeTI6IFwiMTYuMjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNi4yNFwiLFxuICAgICAgICB5MTogXCI3Ljc2XCIsXG4gICAgICAgIHgyOiBcIjE5LjA3XCIsXG4gICAgICAgIHkyOiBcIjQuOTNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMb2NrSWNvbiA9IHtcbiAgbmFtZTogJ0xvY2tJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWxvY2tcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjNcIixcbiAgICAgICAgeTogXCIxMVwiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTFcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNyAxMVY3YTUgNSAwIDAgMSAxMCAwdjRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMb2dJbkljb24gPSB7XG4gIG5hbWU6ICdMb2dJbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbG9nLWluXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTUgM2g0YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMmgtNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTAgMTcgMTUgMTIgMTAgN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMb2dPdXRJY29uID0ge1xuICBuYW1lOiAnTG9nT3V0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1sb2ctb3V0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE2IDE3IDIxIDEyIDE2IDdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCI5XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWFpbEljb24gPSB7XG4gIG5hbWU6ICdNYWlsSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1tYWlsXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCA0aDE2YzEuMSAwIDIgLjkgMiAydjEyYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMnpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIyLDYgMTIsMTMgMiw2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWFwUGluSWNvbiA9IHtcbiAgbmFtZTogJ01hcFBpbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWFwLXBpblwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDEwYzAgNy05IDEzLTkgMTNzLTktNi05LTEzYTkgOSAwIDAgMSAxOCAwelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTBcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWFwSWNvbiA9IHtcbiAgbmFtZTogJ01hcEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWFwXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEgNiAxIDIyIDggMTggMTYgMjIgMjMgMTggMjMgMiAxNiA2IDggMiAxIDZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiOFwiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNYXhpbWl6ZTJJY29uID0ge1xuICBuYW1lOiAnTWF4aW1pemUySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1tYXhpbWl6ZS0yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNSAzIDIxIDMgMjEgOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOSAyMSAzIDIxIDMgMTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIzXCIsXG4gICAgICAgIHgyOiBcIjE0XCIsXG4gICAgICAgIHkyOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIxMFwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1heGltaXplSWNvbiA9IHtcbiAgbmFtZTogJ01heGltaXplSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1tYXhpbWl6ZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTggM0g1YTIgMiAwIDAgMC0yIDJ2M20xOCAwVjVhMiAyIDAgMCAwLTItMmgtM20wIDE4aDNhMiAyIDAgMCAwIDItMnYtM00zIDE2djNhMiAyIDAgMCAwIDIgMmgzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWVoSWNvbiA9IHtcbiAgbmFtZTogJ01laEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWVoXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxNVwiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCI5LjAxXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjE1LjAxXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNZW51SWNvbiA9IHtcbiAgbmFtZTogJ01lbnVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1lbnVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIzXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCI2XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIzXCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWVzc2FnZUNpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdNZXNzYWdlQ2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1tZXNzYWdlLWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDExLjVhOC4zOCA4LjM4IDAgMCAxLS45IDMuOCA4LjUgOC41IDAgMCAxLTcuNiA0LjcgOC4zOCA4LjM4IDAgMCAxLTMuOC0uOUwzIDIxbDEuOS01LjdhOC4zOCA4LjM4IDAgMCAxLS45LTMuOCA4LjUgOC41IDAgMCAxIDQuNy03LjYgOC4zOCA4LjM4IDAgMCAxIDMuOC0uOWguNWE4LjQ4IDguNDggMCAwIDEgOCA4di41elwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1lc3NhZ2VTcXVhcmVJY29uID0ge1xuICBuYW1lOiAnTWVzc2FnZVNxdWFyZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWVzc2FnZS1zcXVhcmVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMSAxNWEyIDIgMCAwIDEtMiAySDdsLTQgNFY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNaWNPZmZJY29uID0ge1xuICBuYW1lOiAnTWljT2ZmSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1taWMtb2ZmXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOSA5djNhMyAzIDAgMCAwIDUuMTIgMi4xMk0xNSA5LjM0VjRhMyAzIDAgMCAwLTUuOTQtLjZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNyAxNi45NUE3IDcgMCAwIDEgNSAxMnYtMm0xNCAwdjJhNyA3IDAgMCAxLS4xMSAxLjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTlcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjIzXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWljSWNvbiA9IHtcbiAgbmFtZTogJ01pY0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWljXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgMWEzIDMgMCAwIDAtMyAzdjhhMyAzIDAgMCAwIDYgMFY0YTMgMyAwIDAgMC0zLTN6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE5XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIyM1wiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1pbmltaXplMkljb24gPSB7XG4gIG5hbWU6ICdNaW5pbWl6ZTJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1pbmltaXplLTJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjQgMTQgMTAgMTQgMTAgMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIwIDEwIDE0IDEwIDE0IDRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNFwiLFxuICAgICAgICB5MTogXCIxMFwiLFxuICAgICAgICB4MjogXCIyMVwiLFxuICAgICAgICB5MjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIxMFwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1pbmltaXplSWNvbiA9IHtcbiAgbmFtZTogJ01pbmltaXplSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1taW5pbWl6ZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTggM3YzYTIgMiAwIDAgMS0yIDJIM20xOCAwaC0zYTIgMiAwIDAgMS0yLTJWM20wIDE4di0zYTIgMiAwIDAgMSAyLTJoM00zIDE2aDNhMiAyIDAgMCAxIDIgMnYzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWludXNDaXJjbGVJY29uID0ge1xuICBuYW1lOiAnTWludXNDaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1pbnVzLWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNaW51c1NxdWFyZUljb24gPSB7XG4gIG5hbWU6ICdNaW51c1NxdWFyZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWludXMtc3F1YXJlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1pbnVzSWNvbiA9IHtcbiAgbmFtZTogJ01pbnVzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1taW51c1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjVcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTlcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNb25pdG9ySWNvbiA9IHtcbiAgbmFtZTogJ01vbml0b3JJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1vbml0b3JcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjJcIixcbiAgICAgICAgeTogXCIzXCIsXG4gICAgICAgIHdpZHRoOiBcIjIwXCIsXG4gICAgICAgIGhlaWdodDogXCIxNFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjIxXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTdcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMjFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNb29uSWNvbiA9IHtcbiAgbmFtZTogJ01vb25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1vb25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMSAxMi43OUE5IDkgMCAxIDEgMTEuMjEgMyA3IDcgMCAwIDAgMjEgMTIuNzl6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTW9yZUhvcml6b250YWxJY29uID0ge1xuICBuYW1lOiAnTW9yZUhvcml6b250YWxJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1vcmUtaG9yaXpvbnRhbFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxOVwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjVcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTW9yZVZlcnRpY2FsSWNvbiA9IHtcbiAgbmFtZTogJ01vcmVWZXJ0aWNhbEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbW9yZS12ZXJ0aWNhbFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCI1XCIsXG4gICAgICAgIHI6IFwiMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTlcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTW91c2VQb2ludGVySWNvbiA9IHtcbiAgbmFtZTogJ01vdXNlUG9pbnRlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbW91c2UtcG9pbnRlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTMgM2w3LjA3IDE2Ljk3IDIuNTEtNy4zOSA3LjM5LTIuNTFMMyAzelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEzIDEzbDYgNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1vdmVJY29uID0ge1xuICBuYW1lOiAnTW92ZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbW92ZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNSA5IDIgMTIgNSAxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOSA1IDEyIDIgMTUgNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTUgMTkgMTIgMjIgOSAxOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTkgOSAyMiAxMiAxOSAxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjJcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMjJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTXVzaWNJY29uID0ge1xuICBuYW1lOiAnTXVzaWNJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW11c2ljXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOSAxOFY1bDEyLTJ2MTNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjZcIixcbiAgICAgICAgY3k6IFwiMThcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxOFwiLFxuICAgICAgICBjeTogXCIxNlwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBOYXZpZ2F0aW9uMkljb24gPSB7XG4gIG5hbWU6ICdOYXZpZ2F0aW9uMkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbmF2aWdhdGlvbi0yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDIgMTkgMjEgMTIgMTcgNSAyMSAxMiAyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTmF2aWdhdGlvbkljb24gPSB7XG4gIG5hbWU6ICdOYXZpZ2F0aW9uSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1uYXZpZ2F0aW9uXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjMgMTEgMjIgMiAxMyAyMSAxMSAxMyAzIDExXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgT2N0YWdvbkljb24gPSB7XG4gIG5hbWU6ICdPY3RhZ29uSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1vY3RhZ29uXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcuODYgMiAxNi4xNCAyIDIyIDcuODYgMjIgMTYuMTQgMTYuMTQgMjIgNy44NiAyMiAyIDE2LjE0IDIgNy44NiA3Ljg2IDJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQYWNrYWdlSWNvbiA9IHtcbiAgbmFtZTogJ1BhY2thZ2VJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBhY2thZ2VcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNi41XCIsXG4gICAgICAgIHkxOiBcIjkuNFwiLFxuICAgICAgICB4MjogXCI3LjVcIixcbiAgICAgICAgeTI6IFwiNC4yMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMi4wOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBhcGVyY2xpcEljb24gPSB7XG4gIG5hbWU6ICdQYXBlcmNsaXBJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBhcGVyY2xpcFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDhcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQYXVzZUNpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdQYXVzZUNpcmNsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItcGF1c2UtY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTBcIixcbiAgICAgICAgeTE6IFwiMTVcIixcbiAgICAgICAgeDI6IFwiMTBcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE0XCIsXG4gICAgICAgIHkxOiBcIjE1XCIsXG4gICAgICAgIHgyOiBcIjE0XCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQYXVzZUljb24gPSB7XG4gIG5hbWU6ICdQYXVzZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItcGF1c2VcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjZcIixcbiAgICAgICAgeTogXCI0XCIsXG4gICAgICAgIHdpZHRoOiBcIjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIxNFwiLFxuICAgICAgICB5OiBcIjRcIixcbiAgICAgICAgd2lkdGg6IFwiNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQZW5Ub29sSWNvbiA9IHtcbiAgbmFtZTogJ1BlblRvb2xJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBlbi10b29sXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgMTlsNy03IDMgMy03IDctMy0zelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4IDEzbC0xLjUtNy41TDIgMmwzLjUgMTQuNUwxMyAxOGw1LTV6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMiAybDcuNTg2IDcuNTg2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMVwiLFxuICAgICAgICBjeTogXCIxMVwiLFxuICAgICAgICByOiBcIjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQZXJjZW50SWNvbiA9IHtcbiAgbmFtZTogJ1BlcmNlbnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBlcmNlbnRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOVwiLFxuICAgICAgICB5MTogXCI1XCIsXG4gICAgICAgIHgyOiBcIjVcIixcbiAgICAgICAgeTI6IFwiMTlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjYuNVwiLFxuICAgICAgICBjeTogXCI2LjVcIixcbiAgICAgICAgcjogXCIyLjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjE3LjVcIixcbiAgICAgICAgY3k6IFwiMTcuNVwiLFxuICAgICAgICByOiBcIjIuNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBob25lQ2FsbEljb24gPSB7XG4gIG5hbWU6ICdQaG9uZUNhbGxJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBob25lLWNhbGxcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNS4wNSA1QTUgNSAwIDAgMSAxOSA4Ljk1TTE1LjA1IDFBOSA5IDAgMCAxIDIzIDguOTRtLTEgNy45OHYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBob25lRm9yd2FyZGVkSWNvbiA9IHtcbiAgbmFtZTogJ1Bob25lRm9yd2FyZGVkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1waG9uZS1mb3J3YXJkZWRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE5IDEgMjMgNSAxOSA5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTVcIixcbiAgICAgICAgeTE6IFwiNVwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCI1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjIgMTYuOTJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS41IDE5LjUgMCAwIDEtNi02IDE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42N0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MiAxMi44NCAxMi44NCAwIDAgMCAuNyAyLjgxIDIgMiAwIDAgMS0uNDUgMi4xMUw4LjA5IDkuOTFhMTYgMTYgMCAwIDAgNiA2bDEuMjctMS4yN2EyIDIgMCAwIDEgMi4xMS0uNDUgMTIuODQgMTIuODQgMCAwIDAgMi44MS43QTIgMiAwIDAgMSAyMiAxNi45MnpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQaG9uZUluY29taW5nSWNvbiA9IHtcbiAgbmFtZTogJ1Bob25lSW5jb21pbmdJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBob25lLWluY29taW5nXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNiAyIDE2IDggMjIgOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIzXCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGhvbmVNaXNzZWRJY29uID0ge1xuICBuYW1lOiAnUGhvbmVNaXNzZWRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBob25lLW1pc3NlZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIzXCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMTdcIixcbiAgICAgICAgeTI6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3XCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGhvbmVPZmZJY29uID0ge1xuICBuYW1lOiAnUGhvbmVPZmZJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBob25lLW9mZlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEwLjY4IDEzLjMxYTE2IDE2IDAgMCAwIDMuNDEgMi42bDEuMjctMS4yN2EyIDIgMCAwIDEgMi4xMS0uNDUgMTIuODQgMTIuODQgMCAwIDAgMi44MS43IDIgMiAwIDAgMSAxLjcyIDJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS40MiAxOS40MiAwIDAgMS0zLjMzLTIuNjdtLTIuNjctMy4zNGExOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjNBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjNcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCIxXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGhvbmVPdXRnb2luZ0ljb24gPSB7XG4gIG5hbWU6ICdQaG9uZU91dGdvaW5nSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1waG9uZS1vdXRnb2luZ1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjMgNyAyMyAxIDE3IDFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBob25lSWNvbiA9IHtcbiAgbmFtZTogJ1Bob25lSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1waG9uZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGllQ2hhcnRJY29uID0ge1xuICBuYW1lOiAnUGllQ2hhcnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBpZS1jaGFydFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxLjIxIDE1Ljg5QTEwIDEwIDAgMSAxIDggMi44M1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDEyQTEwIDEwIDAgMCAwIDEyIDJ2MTB6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGxheUNpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdQbGF5Q2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wbGF5LWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMCA4IDE2IDEyIDEwIDE2IDEwIDhcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQbGF5SWNvbiA9IHtcbiAgbmFtZTogJ1BsYXlJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBsYXlcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNSAzIDE5IDEyIDUgMjEgNSAzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGx1c0NpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdQbHVzQ2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wbHVzLWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGx1c1NxdWFyZUljb24gPSB7XG4gIG5hbWU6ICdQbHVzU3F1YXJlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wbHVzLXNxdWFyZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiM1wiLFxuICAgICAgICB5OiBcIjNcIixcbiAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE4XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGx1c0ljb24gPSB7XG4gIG5hbWU6ICdQbHVzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wbHVzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiNVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjVcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTlcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQb2NrZXRJY29uID0ge1xuICBuYW1lOiAnUG9ja2V0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wb2NrZXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk00IDNoMTZhMiAyIDAgMCAxIDIgMnY2YTEwIDEwIDAgMCAxLTEwIDEwQTEwIDEwIDAgMCAxIDIgMTFWNWEyIDIgMCAwIDEgMi0yelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOCAxMCAxMiAxNCAxNiAxMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBvd2VySWNvbiA9IHtcbiAgbmFtZTogJ1Bvd2VySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wb3dlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4LjM2IDYuNjRhOSA5IDAgMSAxLTEyLjczIDBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUHJpbnRlckljb24gPSB7XG4gIG5hbWU6ICdQcmludGVySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wcmludGVyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI2IDkgNiAyIDE4IDIgMTggOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTYgMThINGEyIDIgMCAwIDEtMi0ydi01YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJoLTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjZcIixcbiAgICAgICAgeTogXCIxNFwiLFxuICAgICAgICB3aWR0aDogXCIxMlwiLFxuICAgICAgICBoZWlnaHQ6IFwiOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFJhZGlvSWNvbiA9IHtcbiAgbmFtZTogJ1JhZGlvSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yYWRpb1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYuMjQgNy43NmE2IDYgMCAwIDEgMCA4LjQ5bS04LjQ4LS4wMWE2IDYgMCAwIDEgMC04LjQ5bTExLjMxLTIuODJhMTAgMTAgMCAwIDEgMCAxNC4xNG0tMTQuMTQgMGExMCAxMCAwIDAgMSAwLTE0LjE0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUmVmcmVzaENjd0ljb24gPSB7XG4gIG5hbWU6ICdSZWZyZXNoQ2N3SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yZWZyZXNoLWNjd1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMSA0IDEgMTAgNyAxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjMgMjAgMjMgMTQgMTcgMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMC40OSA5QTkgOSAwIDAgMCA1LjY0IDUuNjRMMSAxMG0yMiA0bC00LjY0IDQuMzZBOSA5IDAgMCAxIDMuNTEgMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSZWZyZXNoQ3dJY29uID0ge1xuICBuYW1lOiAnUmVmcmVzaEN3SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yZWZyZXNoLWN3XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMyA0IDIzIDEwIDE3IDEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxIDIwIDEgMTQgNyAxNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTMuNTEgOWE5IDkgMCAwIDEgMTQuODUtMy4zNkwyMyAxME0xIDE0bDQuNjQgNC4zNkE5IDkgMCAwIDAgMjAuNDkgMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSZXBlYXRJY29uID0ge1xuICBuYW1lOiAnUmVwZWF0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yZXBlYXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE3IDEgMjEgNSAxNyA5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMyAxMVY5YTQgNCAwIDAgMSA0LTRoMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcgMjMgMyAxOSA3IDE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjEgMTN2MmE0IDQgMCAwIDEtNCA0SDNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSZXdpbmRJY29uID0ge1xuICBuYW1lOiAnUmV3aW5kSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yZXdpbmRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTEgMTkgMiAxMiAxMSA1IDExIDE5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIyIDE5IDEzIDEyIDIyIDUgMjIgMTlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSb3RhdGVDY3dJY29uID0ge1xuICBuYW1lOiAnUm90YXRlQ2N3SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yb3RhdGUtY2N3XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxIDQgMSAxMCA3IDEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMy41MSAxNWE5IDkgMCAxIDAgMi4xMy05LjM2TDEgMTBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSb3RhdGVDd0ljb24gPSB7XG4gIG5hbWU6ICdSb3RhdGVDd0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItcm90YXRlLWN3XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMyA0IDIzIDEwIDE3IDEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjAuNDkgMTVhOSA5IDAgMSAxLTIuMTItOS4zNkwyMyAxMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFJzc0ljb24gPSB7XG4gIG5hbWU6ICdSc3NJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXJzc1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTQgMTFhOSA5IDAgMCAxIDkgOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTQgNGExNiAxNiAwIDAgMSAxNiAxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiNVwiLFxuICAgICAgICBjeTogXCIxOVwiLFxuICAgICAgICByOiBcIjFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTYXZlSWNvbiA9IHtcbiAgbmFtZTogJ1NhdmVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNhdmVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExbDUgNXYxMWEyIDIgMCAwIDEtMiAyelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTcgMjEgMTcgMTMgNyAxMyA3IDIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3IDMgNyA4IDE1IDhcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTY2lzc29yc0ljb24gPSB7XG4gIG5hbWU6ICdTY2lzc29yc0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2Npc3NvcnNcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjZcIixcbiAgICAgICAgY3k6IFwiNlwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjZcIixcbiAgICAgICAgY3k6IFwiMThcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjBcIixcbiAgICAgICAgeTE6IFwiNFwiLFxuICAgICAgICB4MjogXCI4LjEyXCIsXG4gICAgICAgIHkyOiBcIjE1Ljg4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTQuNDdcIixcbiAgICAgICAgeTE6IFwiMTQuNDhcIixcbiAgICAgICAgeDI6IFwiMjBcIixcbiAgICAgICAgeTI6IFwiMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4LjEyXCIsXG4gICAgICAgIHkxOiBcIjguMTJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTZWFyY2hJY29uID0ge1xuICBuYW1lOiAnU2VhcmNoSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zZWFyY2hcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjExXCIsXG4gICAgICAgIGN5OiBcIjExXCIsXG4gICAgICAgIHI6IFwiOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjIxXCIsXG4gICAgICAgIHgyOiBcIjE2LjY1XCIsXG4gICAgICAgIHkyOiBcIjE2LjY1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2VuZEljb24gPSB7XG4gIG5hbWU6ICdTZW5kSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zZW5kXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjJcIixcbiAgICAgICAgeTE6IFwiMlwiLFxuICAgICAgICB4MjogXCIxMVwiLFxuICAgICAgICB5MjogXCIxM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMiAyIDE1IDIyIDExIDEzIDIgOSAyMiAyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2VydmVySWNvbiA9IHtcbiAgbmFtZTogJ1NlcnZlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2VydmVyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIyXCIsXG4gICAgICAgIHk6IFwiMlwiLFxuICAgICAgICB3aWR0aDogXCIyMFwiLFxuICAgICAgICBoZWlnaHQ6IFwiOFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjJcIixcbiAgICAgICAgeTogXCIxNFwiLFxuICAgICAgICB3aWR0aDogXCIyMFwiLFxuICAgICAgICBoZWlnaHQ6IFwiOFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI2XCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiNlwiLFxuICAgICAgICB5MjogXCI2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNlwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCI2XCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2V0dGluZ3NJY29uID0ge1xuICBuYW1lOiAnU2V0dGluZ3NJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNldHRpbmdzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOS40IDE1YTEuNjUgMS42NSAwIDAgMCAuMzMgMS44MmwuMDYuMDZhMiAyIDAgMCAxIDAgMi44MyAyIDIgMCAwIDEtMi44MyAwbC0uMDYtLjA2YTEuNjUgMS42NSAwIDAgMC0xLjgyLS4zMyAxLjY1IDEuNjUgMCAwIDAtMSAxLjUxVjIxYTIgMiAwIDAgMS0yIDIgMiAyIDAgMCAxLTItMnYtLjA5QTEuNjUgMS42NSAwIDAgMCA5IDE5LjRhMS42NSAxLjY1IDAgMCAwLTEuODIuMzNsLS4wNi4wNmEyIDIgMCAwIDEtMi44MyAwIDIgMiAwIDAgMSAwLTIuODNsLjA2LS4wNmExLjY1IDEuNjUgMCAwIDAgLjMzLTEuODIgMS42NSAxLjY1IDAgMCAwLTEuNTEtMUgzYTIgMiAwIDAgMS0yLTIgMiAyIDAgMCAxIDItMmguMDlBMS42NSAxLjY1IDAgMCAwIDQuNiA5YTEuNjUgMS42NSAwIDAgMC0uMzMtMS44MmwtLjA2LS4wNmEyIDIgMCAwIDEgMC0yLjgzIDIgMiAwIDAgMSAyLjgzIDBsLjA2LjA2YTEuNjUgMS42NSAwIDAgMCAxLjgyLjMzSDlhMS42NSAxLjY1IDAgMCAwIDEtMS41MVYzYTIgMiAwIDAgMSAyLTIgMiAyIDAgMCAxIDIgMnYuMDlhMS42NSAxLjY1IDAgMCAwIDEgMS41MSAxLjY1IDEuNjUgMCAwIDAgMS44Mi0uMzNsLjA2LS4wNmEyIDIgMCAwIDEgMi44MyAwIDIgMiAwIDAgMSAwIDIuODNsLS4wNi4wNmExLjY1IDEuNjUgMCAwIDAtLjMzIDEuODJWOWExLjY1IDEuNjUgMCAwIDAgMS41MSAxSDIxYTIgMiAwIDAgMSAyIDIgMiAyIDAgMCAxLTIgMmgtLjA5YTEuNjUgMS42NSAwIDAgMC0xLjUxIDF6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2hhcmUySWNvbiA9IHtcbiAgbmFtZTogJ1NoYXJlMkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2hhcmUtMlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMThcIixcbiAgICAgICAgY3k6IFwiNVwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjZcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxOFwiLFxuICAgICAgICBjeTogXCIxOVwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4LjU5XCIsXG4gICAgICAgIHkxOiBcIjEzLjUxXCIsXG4gICAgICAgIHgyOiBcIjE1LjQyXCIsXG4gICAgICAgIHkyOiBcIjE3LjQ5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTUuNDFcIixcbiAgICAgICAgeTE6IFwiNi41MVwiLFxuICAgICAgICB4MjogXCI4LjU5XCIsXG4gICAgICAgIHkyOiBcIjEwLjQ5XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2hhcmVJY29uID0ge1xuICBuYW1lOiAnU2hhcmVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNoYXJlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCAxMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnYtOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTYgNiAxMiAyIDggNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTaGllbGRPZmZJY29uID0ge1xuICBuYW1lOiAnU2hpZWxkT2ZmSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zaGllbGQtb2ZmXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTkuNjkgMTRhNi45IDYuOSAwIDAgMCAuMzEtMlY1bC04LTMtMy4xNiAxLjE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNC43MyA0LjczTDQgNXY3YzAgNiA4IDEwIDggMTBhMjAuMjkgMjAuMjkgMCAwIDAgNS42Mi00LjM4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2hpZWxkSWNvbiA9IHtcbiAgbmFtZTogJ1NoaWVsZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2hpZWxkXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgMjJzOC00IDgtMTBWNWwtOC0zLTggM3Y3YzAgNiA4IDEwIDggMTB6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2hvcHBpbmdCYWdJY29uID0ge1xuICBuYW1lOiAnU2hvcHBpbmdCYWdJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNob3BwaW5nLWJhZ1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTYgMkwzIDZ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjZsLTMtNHpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIzXCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiMjFcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2IDEwYTQgNCAwIDAgMS04IDBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTaG9wcGluZ0NhcnRJY29uID0ge1xuICBuYW1lOiAnU2hvcHBpbmdDYXJ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zaG9wcGluZy1jYXJ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCI5XCIsXG4gICAgICAgIGN5OiBcIjIxXCIsXG4gICAgICAgIHI6IFwiMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMjBcIixcbiAgICAgICAgY3k6IFwiMjFcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMSAxaDRsMi42OCAxMy4zOWEyIDIgMCAwIDAgMiAxLjYxaDkuNzJhMiAyIDAgMCAwIDItMS42MUwyMyA2SDZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTaHVmZmxlSWNvbiA9IHtcbiAgbmFtZTogJ1NodWZmbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNodWZmbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE2IDMgMjEgMyAyMSA4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNFwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCIyMVwiLFxuICAgICAgICB5MjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMSAxNiAyMSAyMSAxNiAyMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjE1XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNFwiLFxuICAgICAgICB5MTogXCI0XCIsXG4gICAgICAgIHgyOiBcIjlcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNpZGViYXJJY29uID0ge1xuICBuYW1lOiAnU2lkZWJhckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2lkZWJhclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiM1wiLFxuICAgICAgICB5OiBcIjNcIixcbiAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE4XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiM1wiLFxuICAgICAgICB4MjogXCI5XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2tpcEJhY2tJY29uID0ge1xuICBuYW1lOiAnU2tpcEJhY2tJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNraXAtYmFja1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxOSAyMCA5IDEyIDE5IDQgMTkgMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI1XCIsXG4gICAgICAgIHkxOiBcIjE5XCIsXG4gICAgICAgIHgyOiBcIjVcIixcbiAgICAgICAgeTI6IFwiNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNraXBGb3J3YXJkSWNvbiA9IHtcbiAgbmFtZTogJ1NraXBGb3J3YXJkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1za2lwLWZvcndhcmRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNSA0IDE1IDEyIDUgMjAgNSA0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTlcIixcbiAgICAgICAgeTE6IFwiNVwiLFxuICAgICAgICB4MjogXCIxOVwiLFxuICAgICAgICB5MjogXCIxOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNsYWNrSWNvbiA9IHtcbiAgbmFtZTogJ1NsYWNrSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zbGFja1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE0LjUgMTBjLS44MyAwLTEuNS0uNjctMS41LTEuNXYtNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXY1YzAgLjgzLS42NyAxLjUtMS41IDEuNXpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMC41IDEwSDE5VjguNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOS41IDE0Yy44MyAwIDEuNS42NyAxLjUgMS41djVjMCAuODMtLjY3IDEuNS0xLjUgMS41UzggMjEuMzMgOCAyMC41di01YzAtLjgzLjY3LTEuNSAxLjUtMS41elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTMuNSAxNEg1djEuNWMwIC44My0uNjcgMS41LTEuNSAxLjVTMiAxNi4zMyAyIDE1LjUgMi42NyAxNCAzLjUgMTR6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTQgMTQuNWMwLS44My42Ny0xLjUgMS41LTEuNWg1Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVoLTVjLS44MyAwLTEuNS0uNjctMS41LTEuNXpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNS41IDE5SDE0djEuNWMwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEwIDkuNUMxMCA4LjY3IDkuMzMgOCA4LjUgOGgtNUMyLjY3IDggMiA4LjY3IDIgOS41UzIuNjcgMTEgMy41IDExaDVjLjgzIDAgMS41LS42NyAxLjUtMS41elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTguNSA1SDEwVjMuNUMxMCAyLjY3IDkuMzMgMiA4LjUgMlM3IDIuNjcgNyAzLjUgNy42NyA1IDguNSA1elwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNsYXNoSWNvbiA9IHtcbiAgbmFtZTogJ1NsYXNoSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zbGFzaFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjQuOTNcIixcbiAgICAgICAgeTE6IFwiNC45M1wiLFxuICAgICAgICB4MjogXCIxOS4wN1wiLFxuICAgICAgICB5MjogXCIxOS4wN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNsaWRlcnNJY29uID0ge1xuICBuYW1lOiAnU2xpZGVyc0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2xpZGVyc1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjRcIixcbiAgICAgICAgeTE6IFwiMjFcIixcbiAgICAgICAgeDI6IFwiNFwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjRcIixcbiAgICAgICAgeTE6IFwiMTBcIixcbiAgICAgICAgeDI6IFwiNFwiLFxuICAgICAgICB5MjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMjFcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMFwiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIyMFwiLFxuICAgICAgICB5MjogXCIxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIwXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjIwXCIsXG4gICAgICAgIHkyOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxXCIsXG4gICAgICAgIHkxOiBcIjE0XCIsXG4gICAgICAgIHgyOiBcIjdcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMTVcIixcbiAgICAgICAgeTI6IFwiOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3XCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU21hcnRwaG9uZUljb24gPSB7XG4gIG5hbWU6ICdTbWFydHBob25lSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zbWFydHBob25lXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCI1XCIsXG4gICAgICAgIHk6IFwiMlwiLFxuICAgICAgICB3aWR0aDogXCIxNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjBcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTbWlsZUljb24gPSB7XG4gIG5hbWU6ICdTbWlsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc21pbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk04IDE0czEuNSAyIDQgMiA0LTIgNC0yXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjkuMDFcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiMTUuMDFcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNwZWFrZXJJY29uID0ge1xuICBuYW1lOiAnU3BlYWtlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc3BlYWtlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiNFwiLFxuICAgICAgICB5OiBcIjJcIixcbiAgICAgICAgd2lkdGg6IFwiMTZcIixcbiAgICAgICAgaGVpZ2h0OiBcIjIwXCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTRcIixcbiAgICAgICAgcjogXCI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiNlwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCI2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU3F1YXJlSWNvbiA9IHtcbiAgbmFtZTogJ1NxdWFyZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc3F1YXJlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU3Rhckljb24gPSB7XG4gIG5hbWU6ICdTdGFySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zdGFyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDIgMTUuMDkgOC4yNiAyMiA5LjI3IDE3IDE0LjE0IDE4LjE4IDIxLjAyIDEyIDE3Ljc3IDUuODIgMjEuMDIgNyAxNC4xNCAyIDkuMjcgOC45MSA4LjI2IDEyIDJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTdG9wQ2lyY2xlSWNvbiA9IHtcbiAgbmFtZTogJ1N0b3BDaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXN0b3AtY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCI5XCIsXG4gICAgICAgIHk6IFwiOVwiLFxuICAgICAgICB3aWR0aDogXCI2XCIsXG4gICAgICAgIGhlaWdodDogXCI2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU3VuSWNvbiA9IHtcbiAgbmFtZTogJ1N1bkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc3VuXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjQuMjJcIixcbiAgICAgICAgeTE6IFwiNC4yMlwiLFxuICAgICAgICB4MjogXCI1LjY0XCIsXG4gICAgICAgIHkyOiBcIjUuNjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOC4zNlwiLFxuICAgICAgICB5MTogXCIxOC4zNlwiLFxuICAgICAgICB4MjogXCIxOS43OFwiLFxuICAgICAgICB5MjogXCIxOS43OFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjFcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiM1wiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNC4yMlwiLFxuICAgICAgICB5MTogXCIxOS43OFwiLFxuICAgICAgICB4MjogXCI1LjY0XCIsXG4gICAgICAgIHkyOiBcIjE4LjM2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTguMzZcIixcbiAgICAgICAgeTE6IFwiNS42NFwiLFxuICAgICAgICB4MjogXCIxOS43OFwiLFxuICAgICAgICB5MjogXCI0LjIyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU3VucmlzZUljb24gPSB7XG4gIG5hbWU6ICdTdW5yaXNlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zdW5yaXNlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTcgMThhNSA1IDAgMCAwLTEwIDBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI0LjIyXCIsXG4gICAgICAgIHkxOiBcIjEwLjIyXCIsXG4gICAgICAgIHgyOiBcIjUuNjRcIixcbiAgICAgICAgeTI6IFwiMTEuNjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxXCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE4LjM2XCIsXG4gICAgICAgIHkxOiBcIjExLjY0XCIsXG4gICAgICAgIHgyOiBcIjE5Ljc4XCIsXG4gICAgICAgIHkyOiBcIjEwLjIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjNcIixcbiAgICAgICAgeTE6IFwiMjJcIixcbiAgICAgICAgeDI6IFwiMVwiLFxuICAgICAgICB5MjogXCIyMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOCA2IDEyIDIgMTYgNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFN1bnNldEljb24gPSB7XG4gIG5hbWU6ICdTdW5zZXRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXN1bnNldFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE3IDE4YTUgNSAwIDAgMC0xMCAwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNC4yMlwiLFxuICAgICAgICB5MTogXCIxMC4yMlwiLFxuICAgICAgICB4MjogXCI1LjY0XCIsXG4gICAgICAgIHkyOiBcIjExLjY0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjFcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOC4zNlwiLFxuICAgICAgICB5MTogXCIxMS42NFwiLFxuICAgICAgICB4MjogXCIxOS43OFwiLFxuICAgICAgICB5MjogXCIxMC4yMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIzXCIsXG4gICAgICAgIHkxOiBcIjIyXCIsXG4gICAgICAgIHgyOiBcIjFcIixcbiAgICAgICAgeTI6IFwiMjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE2IDUgMTIgOSA4IDVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUYWJsZXRJY29uID0ge1xuICBuYW1lOiAnVGFibGV0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10YWJsZXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjRcIixcbiAgICAgICAgeTogXCIyXCIsXG4gICAgICAgIHdpZHRoOiBcIjE2XCIsXG4gICAgICAgIGhlaWdodDogXCIyMFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIixcbiAgICAgICAgdHJhbnNmb3JtOiBcInJvdGF0ZSgxODAgMTIgMTIpXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUYWdJY29uID0ge1xuICBuYW1lOiAnVGFnSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10YWdcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMC41OSAxMy40MWwtNy4xNyA3LjE3YTIgMiAwIDAgMS0yLjgzIDBMMiAxMlYyaDEwbDguNTkgOC41OWEyIDIgMCAwIDEgMCAyLjgyelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjdcIixcbiAgICAgICAgeTE6IFwiN1wiLFxuICAgICAgICB4MjogXCI3XCIsXG4gICAgICAgIHkyOiBcIjdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUYXJnZXRJY29uID0ge1xuICBuYW1lOiAnVGFyZ2V0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10YXJnZXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVGVybWluYWxJY29uID0ge1xuICBuYW1lOiAnVGVybWluYWxJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXRlcm1pbmFsXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI0IDE3IDEwIDExIDQgNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE5XCIsXG4gICAgICAgIHgyOiBcIjIwXCIsXG4gICAgICAgIHkyOiBcIjE5XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVGhlcm1vbWV0ZXJJY29uID0ge1xuICBuYW1lOiAnVGhlcm1vbWV0ZXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXRoZXJtb21ldGVyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTQgMTQuNzZWMy41YTIuNSAyLjUgMCAwIDAtNSAwdjExLjI2YTQuNSA0LjUgMCAxIDAgNSAwelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFRodW1ic0Rvd25JY29uID0ge1xuICBuYW1lOiAnVGh1bWJzRG93bkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdGh1bWJzLWRvd25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMCAxNXY0YTMgMyAwIDAgMCAzIDNsNC05VjJINS43MmEyIDIgMCAwIDAtMiAxLjdsLTEuMzggOWEyIDIgMCAwIDAgMiAyLjN6bTctMTNoMi42N0EyLjMxIDIuMzEgMCAwIDEgMjIgNHY3YTIuMzEgMi4zMSAwIDAgMS0yLjMzIDJIMTdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUaHVtYnNVcEljb24gPSB7XG4gIG5hbWU6ICdUaHVtYnNVcEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdGh1bWJzLXVwXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTQgOVY1YTMgMyAwIDAgMC0zLTNsLTQgOXYxMWgxMS4yOGEyIDIgMCAwIDAgMi0xLjdsMS4zOC05YTIgMiAwIDAgMC0yLTIuM3pNNyAyMkg0YTIgMiAwIDAgMS0yLTJ2LTdhMiAyIDAgMCAxIDItMmgzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVG9nZ2xlTGVmdEljb24gPSB7XG4gIG5hbWU6ICdUb2dnbGVMZWZ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10b2dnbGUtbGVmdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMVwiLFxuICAgICAgICB5OiBcIjVcIixcbiAgICAgICAgd2lkdGg6IFwiMjJcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE0XCIsXG4gICAgICAgIHJ4OiBcIjdcIixcbiAgICAgICAgcnk6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiOFwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUb2dnbGVSaWdodEljb24gPSB7XG4gIG5hbWU6ICdUb2dnbGVSaWdodEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdG9nZ2xlLXJpZ2h0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIxXCIsXG4gICAgICAgIHk6IFwiNVwiLFxuICAgICAgICB3aWR0aDogXCIyMlwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTRcIixcbiAgICAgICAgcng6IFwiN1wiLFxuICAgICAgICByeTogXCI3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxNlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcmFzaDJJY29uID0ge1xuICBuYW1lOiAnVHJhc2gySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10cmFzaC0yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIzIDYgNSA2IDIxIDZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOSA2djE0YTIgMiAwIDAgMS0yIDJIN2EyIDIgMCAwIDEtMi0yVjZtMyAwVjRhMiAyIDAgMCAxIDItMmg0YTIgMiAwIDAgMSAyIDJ2MlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEwXCIsXG4gICAgICAgIHkxOiBcIjExXCIsXG4gICAgICAgIHgyOiBcIjEwXCIsXG4gICAgICAgIHkyOiBcIjE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTRcIixcbiAgICAgICAgeTE6IFwiMTFcIixcbiAgICAgICAgeDI6IFwiMTRcIixcbiAgICAgICAgeTI6IFwiMTdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcmFzaEljb24gPSB7XG4gIG5hbWU6ICdUcmFzaEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHJhc2hcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjMgNiA1IDYgMjEgNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVHJlbGxvSWNvbiA9IHtcbiAgbmFtZTogJ1RyZWxsb0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHJlbGxvXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCI3XCIsXG4gICAgICAgIHk6IFwiN1wiLFxuICAgICAgICB3aWR0aDogXCIzXCIsXG4gICAgICAgIGhlaWdodDogXCI5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIxNFwiLFxuICAgICAgICB5OiBcIjdcIixcbiAgICAgICAgd2lkdGg6IFwiM1wiLFxuICAgICAgICBoZWlnaHQ6IFwiNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFRyZW5kaW5nRG93bkljb24gPSB7XG4gIG5hbWU6ICdUcmVuZGluZ0Rvd25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXRyZW5kaW5nLWRvd25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIzIDE4IDEzLjUgOC41IDguNSAxMy41IDEgNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTcgMTggMjMgMTggMjMgMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcmVuZGluZ1VwSWNvbiA9IHtcbiAgbmFtZTogJ1RyZW5kaW5nVXBJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXRyZW5kaW5nLXVwXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMyA2IDEzLjUgMTUuNSA4LjUgMTAuNSAxIDE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNyA2IDIzIDYgMjMgMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcmlhbmdsZUljb24gPSB7XG4gIG5hbWU6ICdUcmlhbmdsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHJpYW5nbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMC4yOSAzLjg2TDEuODIgMThhMiAyIDAgMCAwIDEuNzEgM2gxNi45NGEyIDIgMCAwIDAgMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMCAwLTMuNDIgMHpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcnVja0ljb24gPSB7XG4gIG5hbWU6ICdUcnVja0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHJ1Y2tcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjFcIixcbiAgICAgICAgeTogXCIzXCIsXG4gICAgICAgIHdpZHRoOiBcIjE1XCIsXG4gICAgICAgIGhlaWdodDogXCIxM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNiA4IDIwIDggMjMgMTEgMjMgMTYgMTYgMTYgMTYgOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiNS41XCIsXG4gICAgICAgIGN5OiBcIjE4LjVcIixcbiAgICAgICAgcjogXCIyLjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjE4LjVcIixcbiAgICAgICAgY3k6IFwiMTguNVwiLFxuICAgICAgICByOiBcIjIuNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFR2SWNvbiA9IHtcbiAgbmFtZTogJ1R2SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10dlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMlwiLFxuICAgICAgICB5OiBcIjdcIixcbiAgICAgICAgd2lkdGg6IFwiMjBcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE1XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTcgMiAxMiA3IDcgMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFR3aXR0ZXJJY29uID0ge1xuICBuYW1lOiAnVHdpdHRlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHdpdHRlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIzIDNhMTAuOSAxMC45IDAgMCAxLTMuMTQgMS41MyA0LjQ4IDQuNDggMCAwIDAtNy44NiAzdjFBMTAuNjYgMTAuNjYgMCAwIDEgMyA0cy00IDkgNSAxM2ExMS42NCAxMS42NCAwIDAgMS03IDJjOSA1IDIwIDAgMjAtMTEuNWE0LjUgNC41IDAgMCAwLS4wOC0uODNBNy43MiA3LjcyIDAgMCAwIDIzIDN6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVHlwZUljb24gPSB7XG4gIG5hbWU6ICdUeXBlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10eXBlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI0IDcgNCA0IDIwIDQgMjAgN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiMTVcIixcbiAgICAgICAgeTI6IFwiMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCI0XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIwXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVW1icmVsbGFJY29uID0ge1xuICBuYW1lOiAnVW1icmVsbGFJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXVtYnJlbGxhXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjMgMTJhMTEuMDUgMTEuMDUgMCAwIDAtMjIgMHptLTUgN2EzIDMgMCAwIDEtNiAwdi03XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVW5kZXJsaW5lSWNvbiA9IHtcbiAgbmFtZTogJ1VuZGVybGluZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdW5kZXJsaW5lXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNiAzdjdhNiA2IDAgMCAwIDYgNiA2IDYgMCAwIDAgNi02VjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI0XCIsXG4gICAgICAgIHkxOiBcIjIxXCIsXG4gICAgICAgIHgyOiBcIjIwXCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVW5sb2NrSWNvbiA9IHtcbiAgbmFtZTogJ1VubG9ja0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdW5sb2NrXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiMTFcIixcbiAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgaGVpZ2h0OiBcIjExXCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTcgMTFWN2E1IDUgMCAwIDEgOS45LTFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBVcGxvYWRDbG91ZEljb24gPSB7XG4gIG5hbWU6ICdVcGxvYWRDbG91ZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdXBsb2FkLWNsb3VkXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNiAxNiAxMiAxMiA4IDE2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMC4zOSAxOC4zOUE1IDUgMCAwIDAgMTggOWgtMS4yNkE4IDggMCAxIDAgMyAxNi4zXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNiAxNiAxMiAxMiA4IDE2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVXBsb2FkSWNvbiA9IHtcbiAgbmFtZTogJ1VwbG9hZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdXBsb2FkXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTcgOCAxMiAzIDcgOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjNcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBVc2VyQ2hlY2tJY29uID0ge1xuICBuYW1lOiAnVXNlckNoZWNrSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci11c2VyLWNoZWNrXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg1YTQgNCAwIDAgMC00IDR2MlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiOC41XCIsXG4gICAgICAgIGN5OiBcIjdcIixcbiAgICAgICAgcjogXCI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNyAxMSAxOSAxMyAyMyA5XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVXNlck1pbnVzSWNvbiA9IHtcbiAgbmFtZTogJ1VzZXJNaW51c0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdXNlci1taW51c1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjguNVwiLFxuICAgICAgICBjeTogXCI3XCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIzXCIsXG4gICAgICAgIHkxOiBcIjExXCIsXG4gICAgICAgIHgyOiBcIjE3XCIsXG4gICAgICAgIHkyOiBcIjExXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVXNlclBsdXNJY29uID0ge1xuICBuYW1lOiAnVXNlclBsdXNJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXVzZXItcGx1c1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjguNVwiLFxuICAgICAgICBjeTogXCI3XCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIwXCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMjBcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyM1wiLFxuICAgICAgICB5MTogXCIxMVwiLFxuICAgICAgICB4MjogXCIxN1wiLFxuICAgICAgICB5MjogXCIxMVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFVzZXJYSWNvbiA9IHtcbiAgbmFtZTogJ1VzZXJYSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci11c2VyLXhcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNiAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCI4LjVcIixcbiAgICAgICAgY3k6IFwiN1wiLFxuICAgICAgICByOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOFwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjEzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjNcIixcbiAgICAgICAgeTE6IFwiOFwiLFxuICAgICAgICB4MjogXCIxOFwiLFxuICAgICAgICB5MjogXCIxM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFVzZXJJY29uID0ge1xuICBuYW1lOiAnVXNlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdXNlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIwIDIxdi0yYTQgNCAwIDAgMC00LTRIOGE0IDQgMCAwIDAtNCA0djJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjdcIixcbiAgICAgICAgcjogXCI0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVXNlcnNJY29uID0ge1xuICBuYW1lOiAnVXNlcnNJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXVzZXJzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTcgMjF2LTJhNCA0IDAgMCAwLTQtNEg1YTQgNCAwIDAgMC00IDR2MlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiOVwiLFxuICAgICAgICBjeTogXCI3XCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIzIDIxdi0yYTQgNCAwIDAgMC0zLTMuODdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBWaWRlb09mZkljb24gPSB7XG4gIG5hbWU6ICdWaWRlb09mZkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdmlkZW8tb2ZmXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYgMTZ2MWEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlY3YTIgMiAwIDAgMSAyLTJoMm01LjY2IDBIMTRhMiAyIDAgMCAxIDIgMnYzLjM0bDEgMUwyMyA3djEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVmlkZW9JY29uID0ge1xuICBuYW1lOiAnVmlkZW9JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXZpZGVvXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIzIDcgMTYgMTIgMjMgMTcgMjMgN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMVwiLFxuICAgICAgICB5OiBcIjVcIixcbiAgICAgICAgd2lkdGg6IFwiMTVcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE0XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFZvaWNlbWFpbEljb24gPSB7XG4gIG5hbWU6ICdWb2ljZW1haWxJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXZvaWNlbWFpbFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiNS41XCIsXG4gICAgICAgIGN5OiBcIjExLjVcIixcbiAgICAgICAgcjogXCI0LjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjE4LjVcIixcbiAgICAgICAgY3k6IFwiMTEuNVwiLFxuICAgICAgICByOiBcIjQuNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjUuNVwiLFxuICAgICAgICB5MTogXCIxNlwiLFxuICAgICAgICB4MjogXCIxOC41XCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVm9sdW1lMUljb24gPSB7XG4gIG5hbWU6ICdWb2x1bWUxSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci12b2x1bWUtMVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNS41NCA4LjQ2YTUgNSAwIDAgMSAwIDcuMDdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBWb2x1bWUySWNvbiA9IHtcbiAgbmFtZTogJ1ZvbHVtZTJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXZvbHVtZS0yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjExIDUgNiA5IDIgOSAyIDE1IDYgMTUgMTEgMTkgMTEgNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE5LjA3IDQuOTNhMTAgMTAgMCAwIDEgMCAxNC4xNE0xNS41NCA4LjQ2YTUgNSAwIDAgMSAwIDcuMDdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBWb2x1bWVYSWNvbiA9IHtcbiAgbmFtZTogJ1ZvbHVtZVhJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXZvbHVtZS14XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjExIDUgNiA5IDIgOSAyIDE1IDYgMTUgMTEgMTkgMTEgNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIzXCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiMTdcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxN1wiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVm9sdW1lSWNvbiA9IHtcbiAgbmFtZTogJ1ZvbHVtZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdm9sdW1lXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjExIDUgNiA5IDIgOSAyIDE1IDYgMTUgMTEgMTkgMTEgNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFdhdGNoSWNvbiA9IHtcbiAgbmFtZTogJ1dhdGNoSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci13YXRjaFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCI3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMiA5IDEyIDEyIDEzLjUgMTMuNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2LjUxIDE3LjM1bC0uMzUgMy44M2EyIDIgMCAwIDEtMiAxLjgySDkuODNhMiAyIDAgMCAxLTItMS44MmwtLjM1LTMuODNtLjAxLTEwLjdsLjM1LTMuODNBMiAyIDAgMCAxIDkuODMgMWg0LjM1YTIgMiAwIDAgMSAyIDEuODJsLjM1IDMuODNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBXaWZpT2ZmSWNvbiA9IHtcbiAgbmFtZTogJ1dpZmlPZmZJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXdpZmktb2ZmXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYuNzIgMTEuMDZBMTAuOTQgMTAuOTQgMCAwIDEgMTkgMTIuNTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk01IDEyLjU1YTEwLjk0IDEwLjk0IDAgMCAxIDUuMTctMi4zOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEwLjcxIDUuMDVBMTYgMTYgMCAwIDEgMjIuNTggOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEuNDIgOWExNS45MSAxNS45MSAwIDAgMSA0LjctMi44OFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTguNTMgMTYuMTFhNiA2IDAgMCAxIDYuOTUgMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjIwXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIwXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgV2lmaUljb24gPSB7XG4gIG5hbWU6ICdXaWZpSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci13aWZpXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNSAxMi41NWExMSAxMSAwIDAgMSAxNC4wOCAwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMS40MiA5YTE2IDE2IDAgMCAxIDIxLjE2IDBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk04LjUzIDE2LjExYTYgNiAwIDAgMSA2Ljk1IDBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFdpbmRJY29uID0ge1xuICBuYW1lOiAnV2luZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItd2luZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTkuNTkgNC41OUEyIDIgMCAxIDEgMTEgOEgybTEwLjU5IDExLjQxQTIgMiAwIDEgMCAxNCAxNkgybTE1LjczLTguMjdBMi41IDIuNSAwIDEgMSAxOS41IDEySDJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBYQ2lyY2xlSWNvbiA9IHtcbiAgbmFtZTogJ1hDaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXgtY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTVcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCI5XCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjE1XCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgWE9jdGFnb25JY29uID0ge1xuICBuYW1lOiAnWE9jdGFnb25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXgtb2N0YWdvblwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3Ljg2IDIgMTYuMTQgMiAyMiA3Ljg2IDIyIDE2LjE0IDE2LjE0IDIyIDcuODYgMjIgMiAxNi4xNCAyIDcuODYgNy44NiAyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTVcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCI5XCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjE1XCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgWFNxdWFyZUljb24gPSB7XG4gIG5hbWU6ICdYU3F1YXJlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci14LXNxdWFyZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiM1wiLFxuICAgICAgICB5OiBcIjNcIixcbiAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE4XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIxNVwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiOVwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFhJY29uID0ge1xuICBuYW1lOiAnWEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXIteFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE4XCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiNlwiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjZcIixcbiAgICAgICAgeTE6IFwiNlwiLFxuICAgICAgICB4MjogXCIxOFwiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFlvdXR1YmVJY29uID0ge1xuICBuYW1lOiAnWW91dHViZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXIteW91dHViZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyLjU0IDYuNDJhMi43OCAyLjc4IDAgMCAwLTEuOTQtMkMxOC44OCA0IDEyIDQgMTIgNHMtNi44OCAwLTguNi40NmEyLjc4IDIuNzggMCAwIDAtMS45NCAyQTI5IDI5IDAgMCAwIDEgMTEuNzVhMjkgMjkgMCAwIDAgLjQ2IDUuMzNBMi43OCAyLjc4IDAgMCAwIDMuNCAxOWMxLjcyLjQ2IDguNi40NiA4LjYuNDZzNi44OCAwIDguNi0uNDZhMi43OCAyLjc4IDAgMCAwIDEuOTQtMiAyOSAyOSAwIDAgMCAuNDYtNS4yNSAyOSAyOSAwIDAgMC0uNDYtNS4zM3pcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOS43NSAxNS4wMiAxNS41IDExLjc1IDkuNzUgOC40OCA5Ljc1IDE1LjAyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgWmFwT2ZmSWNvbiA9IHtcbiAgbmFtZTogJ1phcE9mZkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItemFwLW9mZlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTIuNDEgNi43NSAxMyAyIDEwLjU3IDQuOTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE4LjU3IDEyLjkxIDIxIDEwIDE1LjY2IDEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI4IDggMyAxNCAxMiAxNCAxMSAyMiAxNiAxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjFcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFphcEljb24gPSB7XG4gIG5hbWU6ICdaYXBJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXphcFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMyAyIDMgMTQgMTIgMTQgMTEgMjIgMjEgMTAgMTIgMTAgMTMgMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFpvb21Jbkljb24gPSB7XG4gIG5hbWU6ICdab29tSW5JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXpvb20taW5cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjExXCIsXG4gICAgICAgIGN5OiBcIjExXCIsXG4gICAgICAgIHI6IFwiOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjIxXCIsXG4gICAgICAgIHgyOiBcIjE2LjY1XCIsXG4gICAgICAgIHkyOiBcIjE2LjY1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTFcIixcbiAgICAgICAgeTE6IFwiOFwiLFxuICAgICAgICB4MjogXCIxMVwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTFcIixcbiAgICAgICAgeDI6IFwiMTRcIixcbiAgICAgICAgeTI6IFwiMTFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBab29tT3V0SWNvbiA9IHtcbiAgbmFtZTogJ1pvb21PdXRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXpvb20tb3V0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMVwiLFxuICAgICAgICBjeTogXCIxMVwiLFxuICAgICAgICByOiBcIjhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIxNi42NVwiLFxuICAgICAgICB5MjogXCIxNi42NVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTFcIixcbiAgICAgICAgeDI6IFwiMTRcIixcbiAgICAgICAgeTI6IFwiMTFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbmV4cG9ydCB7IEFjdGl2aXR5SWNvbiwgQWlycGxheUljb24sIEFsZXJ0Q2lyY2xlSWNvbiwgQWxlcnRPY3RhZ29uSWNvbiwgQWxlcnRUcmlhbmdsZUljb24sIEFsaWduQ2VudGVySWNvbiwgQWxpZ25KdXN0aWZ5SWNvbiwgQWxpZ25MZWZ0SWNvbiwgQWxpZ25SaWdodEljb24sIEFuY2hvckljb24sIEFwZXJ0dXJlSWNvbiwgQXJjaGl2ZUljb24sIEFycm93RG93bkNpcmNsZUljb24sIEFycm93RG93bkxlZnRJY29uLCBBcnJvd0Rvd25SaWdodEljb24sIEFycm93RG93bkljb24sIEFycm93TGVmdENpcmNsZUljb24sIEFycm93TGVmdEljb24sIEFycm93UmlnaHRDaXJjbGVJY29uLCBBcnJvd1JpZ2h0SWNvbiwgQXJyb3dVcENpcmNsZUljb24sIEFycm93VXBMZWZ0SWNvbiwgQXJyb3dVcFJpZ2h0SWNvbiwgQXJyb3dVcEljb24sIEF0U2lnbkljb24sIEF3YXJkSWNvbiwgQmFyQ2hhcnQySWNvbiwgQmFyQ2hhcnRJY29uLCBCYXR0ZXJ5Q2hhcmdpbmdJY29uLCBCYXR0ZXJ5SWNvbiwgQmVsbE9mZkljb24sIEJlbGxJY29uLCBCbHVldG9vdGhJY29uLCBCb2xkSWNvbiwgQm9va09wZW5JY29uLCBCb29rSWNvbiwgQm9va21hcmtJY29uLCBCb3hJY29uLCBCcmllZmNhc2VJY29uLCBDYWxlbmRhckljb24sIENhbWVyYU9mZkljb24sIENhbWVyYUljb24sIENhc3RJY29uLCBDaGVja0NpcmNsZUljb24sIENoZWNrU3F1YXJlSWNvbiwgQ2hlY2tJY29uLCBDaGV2cm9uRG93bkljb24sIENoZXZyb25MZWZ0SWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgQ2hldnJvblVwSWNvbiwgQ2hldnJvbnNEb3duSWNvbiwgQ2hldnJvbnNMZWZ0SWNvbiwgQ2hldnJvbnNSaWdodEljb24sIENoZXZyb25zVXBJY29uLCBDaHJvbWVJY29uLCBDaXJjbGVJY29uLCBDbGlwYm9hcmRJY29uLCBDbG9ja0ljb24sIENsb3VkRHJpenpsZUljb24sIENsb3VkTGlnaHRuaW5nSWNvbiwgQ2xvdWRPZmZJY29uLCBDbG91ZFJhaW5JY29uLCBDbG91ZFNub3dJY29uLCBDbG91ZEljb24sIENvZGVJY29uLCBDb2RlcGVuSWNvbiwgQ29kZXNhbmRib3hJY29uLCBDb2ZmZWVJY29uLCBDb2x1bW5zSWNvbiwgQ29tbWFuZEljb24sIENvbXBhc3NJY29uLCBDb3B5SWNvbiwgQ29ybmVyRG93bkxlZnRJY29uLCBDb3JuZXJEb3duUmlnaHRJY29uLCBDb3JuZXJMZWZ0RG93bkljb24sIENvcm5lckxlZnRVcEljb24sIENvcm5lclJpZ2h0RG93bkljb24sIENvcm5lclJpZ2h0VXBJY29uLCBDb3JuZXJVcExlZnRJY29uLCBDb3JuZXJVcFJpZ2h0SWNvbiwgQ3B1SWNvbiwgQ3JlZGl0Q2FyZEljb24sIENyb3BJY29uLCBDcm9zc2hhaXJJY29uLCBEYXRhYmFzZUljb24sIERlbGV0ZUljb24sIERpc2NJY29uLCBEb2xsYXJTaWduSWNvbiwgRG93bmxvYWRDbG91ZEljb24sIERvd25sb2FkSWNvbiwgRHJvcGxldEljb24sIEVkaXQySWNvbiwgRWRpdDNJY29uLCBFZGl0SWNvbiwgRXh0ZXJuYWxMaW5rSWNvbiwgRXllT2ZmSWNvbiwgRXllSWNvbiwgRmFjZWJvb2tJY29uLCBGYXN0Rm9yd2FyZEljb24sIEZlYXRoZXJJY29uLCBGaWdtYUljb24sIEZpbGVNaW51c0ljb24sIEZpbGVQbHVzSWNvbiwgRmlsZVRleHRJY29uLCBGaWxlSWNvbiwgRmlsbUljb24sIEZpbHRlckljb24sIEZsYWdJY29uLCBGb2xkZXJNaW51c0ljb24sIEZvbGRlclBsdXNJY29uLCBGb2xkZXJJY29uLCBGcmFtZXJJY29uLCBGcm93bkljb24sIEdpZnRJY29uLCBHaXRCcmFuY2hJY29uLCBHaXRDb21taXRJY29uLCBHaXRNZXJnZUljb24sIEdpdFB1bGxSZXF1ZXN0SWNvbiwgR2l0aHViSWNvbiwgR2l0bGFiSWNvbiwgR2xvYmVJY29uLCBHcmlkSWNvbiwgSGFyZERyaXZlSWNvbiwgSGFzaEljb24sIEhlYWRwaG9uZXNJY29uLCBIZWFydEljb24sIEhlbHBDaXJjbGVJY29uLCBIZXhhZ29uSWNvbiwgSG9tZUljb24sIEltYWdlSWNvbiwgSW5ib3hJY29uLCBJbmZvSWNvbiwgSW5zdGFncmFtSWNvbiwgSXRhbGljSWNvbiwgS2V5SWNvbiwgTGF5ZXJzSWNvbiwgTGF5b3V0SWNvbiwgTGlmZUJ1b3lJY29uLCBMaW5rMkljb24sIExpbmtJY29uLCBMaW5rZWRpbkljb24sIExpc3RJY29uLCBMb2FkZXJJY29uLCBMb2NrSWNvbiwgTG9nSW5JY29uLCBMb2dPdXRJY29uLCBNYWlsSWNvbiwgTWFwUGluSWNvbiwgTWFwSWNvbiwgTWF4aW1pemUySWNvbiwgTWF4aW1pemVJY29uLCBNZWhJY29uLCBNZW51SWNvbiwgTWVzc2FnZUNpcmNsZUljb24sIE1lc3NhZ2VTcXVhcmVJY29uLCBNaWNPZmZJY29uLCBNaWNJY29uLCBNaW5pbWl6ZTJJY29uLCBNaW5pbWl6ZUljb24sIE1pbnVzQ2lyY2xlSWNvbiwgTWludXNTcXVhcmVJY29uLCBNaW51c0ljb24sIE1vbml0b3JJY29uLCBNb29uSWNvbiwgTW9yZUhvcml6b250YWxJY29uLCBNb3JlVmVydGljYWxJY29uLCBNb3VzZVBvaW50ZXJJY29uLCBNb3ZlSWNvbiwgTXVzaWNJY29uLCBOYXZpZ2F0aW9uMkljb24sIE5hdmlnYXRpb25JY29uLCBPY3RhZ29uSWNvbiwgUGFja2FnZUljb24sIFBhcGVyY2xpcEljb24sIFBhdXNlQ2lyY2xlSWNvbiwgUGF1c2VJY29uLCBQZW5Ub29sSWNvbiwgUGVyY2VudEljb24sIFBob25lQ2FsbEljb24sIFBob25lRm9yd2FyZGVkSWNvbiwgUGhvbmVJbmNvbWluZ0ljb24sIFBob25lTWlzc2VkSWNvbiwgUGhvbmVPZmZJY29uLCBQaG9uZU91dGdvaW5nSWNvbiwgUGhvbmVJY29uLCBQaWVDaGFydEljb24sIFBsYXlDaXJjbGVJY29uLCBQbGF5SWNvbiwgUGx1c0NpcmNsZUljb24sIFBsdXNTcXVhcmVJY29uLCBQbHVzSWNvbiwgUG9ja2V0SWNvbiwgUG93ZXJJY29uLCBQcmludGVySWNvbiwgUmFkaW9JY29uLCBSZWZyZXNoQ2N3SWNvbiwgUmVmcmVzaEN3SWNvbiwgUmVwZWF0SWNvbiwgUmV3aW5kSWNvbiwgUm90YXRlQ2N3SWNvbiwgUm90YXRlQ3dJY29uLCBSc3NJY29uLCBTYXZlSWNvbiwgU2Npc3NvcnNJY29uLCBTZWFyY2hJY29uLCBTZW5kSWNvbiwgU2VydmVySWNvbiwgU2V0dGluZ3NJY29uLCBTaGFyZTJJY29uLCBTaGFyZUljb24sIFNoaWVsZE9mZkljb24sIFNoaWVsZEljb24sIFNob3BwaW5nQmFnSWNvbiwgU2hvcHBpbmdDYXJ0SWNvbiwgU2h1ZmZsZUljb24sIFNpZGViYXJJY29uLCBTa2lwQmFja0ljb24sIFNraXBGb3J3YXJkSWNvbiwgU2xhY2tJY29uLCBTbGFzaEljb24sIFNsaWRlcnNJY29uLCBTbWFydHBob25lSWNvbiwgU21pbGVJY29uLCBTcGVha2VySWNvbiwgU3F1YXJlSWNvbiwgU3Rhckljb24sIFN0b3BDaXJjbGVJY29uLCBTdW5JY29uLCBTdW5yaXNlSWNvbiwgU3Vuc2V0SWNvbiwgVGFibGV0SWNvbiwgVGFnSWNvbiwgVGFyZ2V0SWNvbiwgVGVybWluYWxJY29uLCBUaGVybW9tZXRlckljb24sIFRodW1ic0Rvd25JY29uLCBUaHVtYnNVcEljb24sIFRvZ2dsZUxlZnRJY29uLCBUb2dnbGVSaWdodEljb24sIFRyYXNoMkljb24sIFRyYXNoSWNvbiwgVHJlbGxvSWNvbiwgVHJlbmRpbmdEb3duSWNvbiwgVHJlbmRpbmdVcEljb24sIFRyaWFuZ2xlSWNvbiwgVHJ1Y2tJY29uLCBUdkljb24sIFR3aXR0ZXJJY29uLCBUeXBlSWNvbiwgVW1icmVsbGFJY29uLCBVbmRlcmxpbmVJY29uLCBVbmxvY2tJY29uLCBVcGxvYWRDbG91ZEljb24sIFVwbG9hZEljb24sIFVzZXJDaGVja0ljb24sIFVzZXJNaW51c0ljb24sIFVzZXJQbHVzSWNvbiwgVXNlclhJY29uLCBVc2VySWNvbiwgVXNlcnNJY29uLCBWaWRlb09mZkljb24sIFZpZGVvSWNvbiwgVm9pY2VtYWlsSWNvbiwgVm9sdW1lMUljb24sIFZvbHVtZTJJY29uLCBWb2x1bWVYSWNvbiwgVm9sdW1lSWNvbiwgV2F0Y2hJY29uLCBXaWZpT2ZmSWNvbiwgV2lmaUljb24sIFdpbmRJY29uLCBYQ2lyY2xlSWNvbiwgWE9jdGFnb25JY29uLCBYU3F1YXJlSWNvbiwgWEljb24sIFlvdXR1YmVJY29uLCBaYXBPZmZJY29uLCBaYXBJY29uLCBab29tSW5JY29uLCBab29tT3V0SWNvbiB9O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-feather-icons/dist/vue-feather-icons.es.js\n");

/***/ }),

/***/ "./node_modules/vue-hot-reload-api/dist/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/vue-hot-reload-api/dist/index.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var Vue // late bind\nvar version\nvar map = Object.create(null)\nif (typeof window !== 'undefined') {\n  window.__VUE_HOT_MAP__ = map\n}\nvar installed = false\nvar isBrowserify = false\nvar initHookName = 'beforeCreate'\n\nexports.install = function (vue, browserify) {\n  if (installed) { return }\n  installed = true\n\n  Vue = vue.__esModule ? vue.default : vue\n  version = Vue.version.split('.').map(Number)\n  isBrowserify = browserify\n\n  // compat with < 2.0.0-alpha.7\n  if (Vue.config._lifecycleHooks.indexOf('init') > -1) {\n    initHookName = 'init'\n  }\n\n  exports.compatible = version[0] >= 2\n  if (!exports.compatible) {\n    console.warn(\n      '[HMR] You are using a version of vue-hot-reload-api that is ' +\n        'only compatible with Vue.js core ^2.0.0.'\n    )\n    return\n  }\n}\n\n/**\n * Create a record for a hot module, which keeps track of its constructor\n * and instances\n *\n * @param {String} id\n * @param {Object} options\n */\n\nexports.createRecord = function (id, options) {\n  if(map[id]) { return }\n\n  var Ctor = null\n  if (typeof options === 'function') {\n    Ctor = options\n    options = Ctor.options\n  }\n  makeOptionsHot(id, options)\n  map[id] = {\n    Ctor: Ctor,\n    options: options,\n    instances: []\n  }\n}\n\n/**\n * Check if module is recorded\n *\n * @param {String} id\n */\n\nexports.isRecorded = function (id) {\n  return typeof map[id] !== 'undefined'\n}\n\n/**\n * Make a Component options object hot.\n *\n * @param {String} id\n * @param {Object} options\n */\n\nfunction makeOptionsHot(id, options) {\n  if (options.functional) {\n    var render = options.render\n    options.render = function (h, ctx) {\n      var instances = map[id].instances\n      if (ctx && instances.indexOf(ctx.parent) < 0) {\n        instances.push(ctx.parent)\n      }\n      return render(h, ctx)\n    }\n  } else {\n    injectHook(options, initHookName, function() {\n      var record = map[id]\n      if (!record.Ctor) {\n        record.Ctor = this.constructor\n      }\n      record.instances.push(this)\n    })\n    injectHook(options, 'beforeDestroy', function() {\n      var instances = map[id].instances\n      instances.splice(instances.indexOf(this), 1)\n    })\n  }\n}\n\n/**\n * Inject a hook to a hot reloadable component so that\n * we can keep track of it.\n *\n * @param {Object} options\n * @param {String} name\n * @param {Function} hook\n */\n\nfunction injectHook(options, name, hook) {\n  var existing = options[name]\n  options[name] = existing\n    ? Array.isArray(existing) ? existing.concat(hook) : [existing, hook]\n    : [hook]\n}\n\nfunction tryWrap(fn) {\n  return function (id, arg) {\n    try {\n      fn(id, arg)\n    } catch (e) {\n      console.error(e)\n      console.warn(\n        'Something went wrong during Vue component hot-reload. Full reload required.'\n      )\n    }\n  }\n}\n\nfunction updateOptions (oldOptions, newOptions) {\n  for (var key in oldOptions) {\n    if (!(key in newOptions)) {\n      delete oldOptions[key]\n    }\n  }\n  for (var key$1 in newOptions) {\n    oldOptions[key$1] = newOptions[key$1]\n  }\n}\n\nexports.rerender = tryWrap(function (id, options) {\n  var record = map[id]\n  if (!options) {\n    record.instances.slice().forEach(function (instance) {\n      instance.$forceUpdate()\n    })\n    return\n  }\n  if (typeof options === 'function') {\n    options = options.options\n  }\n  if (record.Ctor) {\n    record.Ctor.options.render = options.render\n    record.Ctor.options.staticRenderFns = options.staticRenderFns\n    record.instances.slice().forEach(function (instance) {\n      instance.$options.render = options.render\n      instance.$options.staticRenderFns = options.staticRenderFns\n      // reset static trees\n      // pre 2.5, all static trees are cached together on the instance\n      if (instance._staticTrees) {\n        instance._staticTrees = []\n      }\n      // 2.5.0\n      if (Array.isArray(record.Ctor.options.cached)) {\n        record.Ctor.options.cached = []\n      }\n      // 2.5.3\n      if (Array.isArray(instance.$options.cached)) {\n        instance.$options.cached = []\n      }\n\n      // post 2.5.4: v-once trees are cached on instance._staticTrees.\n      // Pure static trees are cached on the staticRenderFns array\n      // (both already reset above)\n\n      // 2.6: temporarily mark rendered scoped slots as unstable so that\n      // child components can be forced to update\n      var restore = patchScopedSlots(instance)\n      instance.$forceUpdate()\n      instance.$nextTick(restore)\n    })\n  } else {\n    // functional or no instance created yet\n    record.options.render = options.render\n    record.options.staticRenderFns = options.staticRenderFns\n\n    // handle functional component re-render\n    if (record.options.functional) {\n      // rerender with full options\n      if (Object.keys(options).length > 2) {\n        updateOptions(record.options, options)\n      } else {\n        // template-only rerender.\n        // need to inject the style injection code for CSS modules\n        // to work properly.\n        var injectStyles = record.options._injectStyles\n        if (injectStyles) {\n          var render = options.render\n          record.options.render = function (h, ctx) {\n            injectStyles.call(ctx)\n            return render(h, ctx)\n          }\n        }\n      }\n      record.options._Ctor = null\n      // 2.5.3\n      if (Array.isArray(record.options.cached)) {\n        record.options.cached = []\n      }\n      record.instances.slice().forEach(function (instance) {\n        instance.$forceUpdate()\n      })\n    }\n  }\n})\n\nexports.reload = tryWrap(function (id, options) {\n  var record = map[id]\n  if (options) {\n    if (typeof options === 'function') {\n      options = options.options\n    }\n    makeOptionsHot(id, options)\n    if (record.Ctor) {\n      if (version[1] < 2) {\n        // preserve pre 2.2 behavior for global mixin handling\n        record.Ctor.extendOptions = options\n      }\n      var newCtor = record.Ctor.super.extend(options)\n      record.Ctor.options = newCtor.options\n      record.Ctor.cid = newCtor.cid\n      record.Ctor.prototype = newCtor.prototype\n      if (newCtor.release) {\n        // temporary global mixin strategy used in < 2.0.0-alpha.6\n        newCtor.release()\n      }\n    } else {\n      updateOptions(record.options, options)\n    }\n  }\n  record.instances.slice().forEach(function (instance) {\n    if (instance.$vnode && instance.$vnode.context) {\n      instance.$vnode.context.$forceUpdate()\n    } else {\n      console.warn(\n        'Root or manually mounted instance modified. Full reload required.'\n      )\n    }\n  })\n})\n\n// 2.6 optimizes template-compiled scoped slots and skips updates if child\n// only uses scoped slots. We need to patch the scoped slots resolving helper\n// to temporarily mark all scoped slots as unstable in order to force child\n// updates.\nfunction patchScopedSlots (instance) {\n  if (!instance._u) { return }\n  // https://github.com/vuejs/vue/blob/dev/src/core/instance/render-helpers/resolve-scoped-slots.js\n  var original = instance._u\n  instance._u = function (slots) {\n    try {\n      // 2.6.4 ~ 2.6.6\n      return original(slots, true)\n    } catch (e) {\n      // 2.5 / >= 2.6.7\n      return original(slots, null, true)\n    }\n  }\n  return function () {\n    instance._u = original\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanM/NjQzNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVnVlIC8vIGxhdGUgYmluZFxudmFyIHZlcnNpb25cbnZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgd2luZG93Ll9fVlVFX0hPVF9NQVBfXyA9IG1hcFxufVxudmFyIGluc3RhbGxlZCA9IGZhbHNlXG52YXIgaXNCcm93c2VyaWZ5ID0gZmFsc2VcbnZhciBpbml0SG9va05hbWUgPSAnYmVmb3JlQ3JlYXRlJ1xuXG5leHBvcnRzLmluc3RhbGwgPSBmdW5jdGlvbiAodnVlLCBicm93c2VyaWZ5KSB7XG4gIGlmIChpbnN0YWxsZWQpIHsgcmV0dXJuIH1cbiAgaW5zdGFsbGVkID0gdHJ1ZVxuXG4gIFZ1ZSA9IHZ1ZS5fX2VzTW9kdWxlID8gdnVlLmRlZmF1bHQgOiB2dWVcbiAgdmVyc2lvbiA9IFZ1ZS52ZXJzaW9uLnNwbGl0KCcuJykubWFwKE51bWJlcilcbiAgaXNCcm93c2VyaWZ5ID0gYnJvd3NlcmlmeVxuXG4gIC8vIGNvbXBhdCB3aXRoIDwgMi4wLjAtYWxwaGEuN1xuICBpZiAoVnVlLmNvbmZpZy5fbGlmZWN5Y2xlSG9va3MuaW5kZXhPZignaW5pdCcpID4gLTEpIHtcbiAgICBpbml0SG9va05hbWUgPSAnaW5pdCdcbiAgfVxuXG4gIGV4cG9ydHMuY29tcGF0aWJsZSA9IHZlcnNpb25bMF0gPj0gMlxuICBpZiAoIWV4cG9ydHMuY29tcGF0aWJsZSkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdbSE1SXSBZb3UgYXJlIHVzaW5nIGEgdmVyc2lvbiBvZiB2dWUtaG90LXJlbG9hZC1hcGkgdGhhdCBpcyAnICtcbiAgICAgICAgJ29ubHkgY29tcGF0aWJsZSB3aXRoIFZ1ZS5qcyBjb3JlIF4yLjAuMC4nXG4gICAgKVxuICAgIHJldHVyblxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgcmVjb3JkIGZvciBhIGhvdCBtb2R1bGUsIHdoaWNoIGtlZXBzIHRyYWNrIG9mIGl0cyBjb25zdHJ1Y3RvclxuICogYW5kIGluc3RhbmNlc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqL1xuXG5leHBvcnRzLmNyZWF0ZVJlY29yZCA9IGZ1bmN0aW9uIChpZCwgb3B0aW9ucykge1xuICBpZihtYXBbaWRdKSB7IHJldHVybiB9XG5cbiAgdmFyIEN0b3IgPSBudWxsXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIEN0b3IgPSBvcHRpb25zXG4gICAgb3B0aW9ucyA9IEN0b3Iub3B0aW9uc1xuICB9XG4gIG1ha2VPcHRpb25zSG90KGlkLCBvcHRpb25zKVxuICBtYXBbaWRdID0ge1xuICAgIEN0b3I6IEN0b3IsXG4gICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICBpbnN0YW5jZXM6IFtdXG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBtb2R1bGUgaXMgcmVjb3JkZWRcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWRcbiAqL1xuXG5leHBvcnRzLmlzUmVjb3JkZWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYXBbaWRdICE9PSAndW5kZWZpbmVkJ1xufVxuXG4vKipcbiAqIE1ha2UgYSBDb21wb25lbnQgb3B0aW9ucyBvYmplY3QgaG90LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqL1xuXG5mdW5jdGlvbiBtYWtlT3B0aW9uc0hvdChpZCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgdmFyIHJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiAoaCwgY3R4KSB7XG4gICAgICB2YXIgaW5zdGFuY2VzID0gbWFwW2lkXS5pbnN0YW5jZXNcbiAgICAgIGlmIChjdHggJiYgaW5zdGFuY2VzLmluZGV4T2YoY3R4LnBhcmVudCkgPCAwKSB7XG4gICAgICAgIGluc3RhbmNlcy5wdXNoKGN0eC5wYXJlbnQpXG4gICAgICB9XG4gICAgICByZXR1cm4gcmVuZGVyKGgsIGN0eClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaW5qZWN0SG9vayhvcHRpb25zLCBpbml0SG9va05hbWUsIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlY29yZCA9IG1hcFtpZF1cbiAgICAgIGlmICghcmVjb3JkLkN0b3IpIHtcbiAgICAgICAgcmVjb3JkLkN0b3IgPSB0aGlzLmNvbnN0cnVjdG9yXG4gICAgICB9XG4gICAgICByZWNvcmQuaW5zdGFuY2VzLnB1c2godGhpcylcbiAgICB9KVxuICAgIGluamVjdEhvb2sob3B0aW9ucywgJ2JlZm9yZURlc3Ryb3knLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBpbnN0YW5jZXMgPSBtYXBbaWRdLmluc3RhbmNlc1xuICAgICAgaW5zdGFuY2VzLnNwbGljZShpbnN0YW5jZXMuaW5kZXhPZih0aGlzKSwgMSlcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogSW5qZWN0IGEgaG9vayB0byBhIGhvdCByZWxvYWRhYmxlIGNvbXBvbmVudCBzbyB0aGF0XG4gKiB3ZSBjYW4ga2VlcCB0cmFjayBvZiBpdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhvb2tcbiAqL1xuXG5mdW5jdGlvbiBpbmplY3RIb29rKG9wdGlvbnMsIG5hbWUsIGhvb2spIHtcbiAgdmFyIGV4aXN0aW5nID0gb3B0aW9uc1tuYW1lXVxuICBvcHRpb25zW25hbWVdID0gZXhpc3RpbmdcbiAgICA/IEFycmF5LmlzQXJyYXkoZXhpc3RpbmcpID8gZXhpc3RpbmcuY29uY2F0KGhvb2spIDogW2V4aXN0aW5nLCBob29rXVxuICAgIDogW2hvb2tdXG59XG5cbmZ1bmN0aW9uIHRyeVdyYXAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpZCwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZuKGlkLCBhcmcpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIFZ1ZSBjb21wb25lbnQgaG90LXJlbG9hZC4gRnVsbCByZWxvYWQgcmVxdWlyZWQuJ1xuICAgICAgKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVPcHRpb25zIChvbGRPcHRpb25zLCBuZXdPcHRpb25zKSB7XG4gIGZvciAodmFyIGtleSBpbiBvbGRPcHRpb25zKSB7XG4gICAgaWYgKCEoa2V5IGluIG5ld09wdGlvbnMpKSB7XG4gICAgICBkZWxldGUgb2xkT3B0aW9uc1trZXldXG4gICAgfVxuICB9XG4gIGZvciAodmFyIGtleSQxIGluIG5ld09wdGlvbnMpIHtcbiAgICBvbGRPcHRpb25zW2tleSQxXSA9IG5ld09wdGlvbnNba2V5JDFdXG4gIH1cbn1cblxuZXhwb3J0cy5yZXJlbmRlciA9IHRyeVdyYXAoZnVuY3Rpb24gKGlkLCBvcHRpb25zKSB7XG4gIHZhciByZWNvcmQgPSBtYXBbaWRdXG4gIGlmICghb3B0aW9ucykge1xuICAgIHJlY29yZC5pbnN0YW5jZXMuc2xpY2UoKS5mb3JFYWNoKGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgICAgaW5zdGFuY2UuJGZvcmNlVXBkYXRlKClcbiAgICB9KVxuICAgIHJldHVyblxuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnNcbiAgfVxuICBpZiAocmVjb3JkLkN0b3IpIHtcbiAgICByZWNvcmQuQ3Rvci5vcHRpb25zLnJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgcmVjb3JkLkN0b3Iub3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBvcHRpb25zLnN0YXRpY1JlbmRlckZuc1xuICAgIHJlY29yZC5pbnN0YW5jZXMuc2xpY2UoKS5mb3JFYWNoKGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgICAgaW5zdGFuY2UuJG9wdGlvbnMucmVuZGVyID0gb3B0aW9ucy5yZW5kZXJcbiAgICAgIGluc3RhbmNlLiRvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zXG4gICAgICAvLyByZXNldCBzdGF0aWMgdHJlZXNcbiAgICAgIC8vIHByZSAyLjUsIGFsbCBzdGF0aWMgdHJlZXMgYXJlIGNhY2hlZCB0b2dldGhlciBvbiB0aGUgaW5zdGFuY2VcbiAgICAgIGlmIChpbnN0YW5jZS5fc3RhdGljVHJlZXMpIHtcbiAgICAgICAgaW5zdGFuY2UuX3N0YXRpY1RyZWVzID0gW11cbiAgICAgIH1cbiAgICAgIC8vIDIuNS4wXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWNvcmQuQ3Rvci5vcHRpb25zLmNhY2hlZCkpIHtcbiAgICAgICAgcmVjb3JkLkN0b3Iub3B0aW9ucy5jYWNoZWQgPSBbXVxuICAgICAgfVxuICAgICAgLy8gMi41LjNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGluc3RhbmNlLiRvcHRpb25zLmNhY2hlZCkpIHtcbiAgICAgICAgaW5zdGFuY2UuJG9wdGlvbnMuY2FjaGVkID0gW11cbiAgICAgIH1cblxuICAgICAgLy8gcG9zdCAyLjUuNDogdi1vbmNlIHRyZWVzIGFyZSBjYWNoZWQgb24gaW5zdGFuY2UuX3N0YXRpY1RyZWVzLlxuICAgICAgLy8gUHVyZSBzdGF0aWMgdHJlZXMgYXJlIGNhY2hlZCBvbiB0aGUgc3RhdGljUmVuZGVyRm5zIGFycmF5XG4gICAgICAvLyAoYm90aCBhbHJlYWR5IHJlc2V0IGFib3ZlKVxuXG4gICAgICAvLyAyLjY6IHRlbXBvcmFyaWx5IG1hcmsgcmVuZGVyZWQgc2NvcGVkIHNsb3RzIGFzIHVuc3RhYmxlIHNvIHRoYXRcbiAgICAgIC8vIGNoaWxkIGNvbXBvbmVudHMgY2FuIGJlIGZvcmNlZCB0byB1cGRhdGVcbiAgICAgIHZhciByZXN0b3JlID0gcGF0Y2hTY29wZWRTbG90cyhpbnN0YW5jZSlcbiAgICAgIGluc3RhbmNlLiRmb3JjZVVwZGF0ZSgpXG4gICAgICBpbnN0YW5jZS4kbmV4dFRpY2socmVzdG9yZSlcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIC8vIGZ1bmN0aW9uYWwgb3Igbm8gaW5zdGFuY2UgY3JlYXRlZCB5ZXRcbiAgICByZWNvcmQub3B0aW9ucy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgIHJlY29yZC5vcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zXG5cbiAgICAvLyBoYW5kbGUgZnVuY3Rpb25hbCBjb21wb25lbnQgcmUtcmVuZGVyXG4gICAgaWYgKHJlY29yZC5vcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIHJlcmVuZGVyIHdpdGggZnVsbCBvcHRpb25zXG4gICAgICBpZiAoT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID4gMikge1xuICAgICAgICB1cGRhdGVPcHRpb25zKHJlY29yZC5vcHRpb25zLCBvcHRpb25zKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGVtcGxhdGUtb25seSByZXJlbmRlci5cbiAgICAgICAgLy8gbmVlZCB0byBpbmplY3QgdGhlIHN0eWxlIGluamVjdGlvbiBjb2RlIGZvciBDU1MgbW9kdWxlc1xuICAgICAgICAvLyB0byB3b3JrIHByb3Blcmx5LlxuICAgICAgICB2YXIgaW5qZWN0U3R5bGVzID0gcmVjb3JkLm9wdGlvbnMuX2luamVjdFN0eWxlc1xuICAgICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgICAgICAgdmFyIHJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICAgICAgcmVjb3JkLm9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gKGgsIGN0eCkge1xuICAgICAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwoY3R4KVxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihoLCBjdHgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZWNvcmQub3B0aW9ucy5fQ3RvciA9IG51bGxcbiAgICAgIC8vIDIuNS4zXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWNvcmQub3B0aW9ucy5jYWNoZWQpKSB7XG4gICAgICAgIHJlY29yZC5vcHRpb25zLmNhY2hlZCA9IFtdXG4gICAgICB9XG4gICAgICByZWNvcmQuaW5zdGFuY2VzLnNsaWNlKCkuZm9yRWFjaChmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICAgICAgaW5zdGFuY2UuJGZvcmNlVXBkYXRlKClcbiAgICAgIH0pXG4gICAgfVxuICB9XG59KVxuXG5leHBvcnRzLnJlbG9hZCA9IHRyeVdyYXAoZnVuY3Rpb24gKGlkLCBvcHRpb25zKSB7XG4gIHZhciByZWNvcmQgPSBtYXBbaWRdXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5vcHRpb25zXG4gICAgfVxuICAgIG1ha2VPcHRpb25zSG90KGlkLCBvcHRpb25zKVxuICAgIGlmIChyZWNvcmQuQ3Rvcikge1xuICAgICAgaWYgKHZlcnNpb25bMV0gPCAyKSB7XG4gICAgICAgIC8vIHByZXNlcnZlIHByZSAyLjIgYmVoYXZpb3IgZm9yIGdsb2JhbCBtaXhpbiBoYW5kbGluZ1xuICAgICAgICByZWNvcmQuQ3Rvci5leHRlbmRPcHRpb25zID0gb3B0aW9uc1xuICAgICAgfVxuICAgICAgdmFyIG5ld0N0b3IgPSByZWNvcmQuQ3Rvci5zdXBlci5leHRlbmQob3B0aW9ucylcbiAgICAgIHJlY29yZC5DdG9yLm9wdGlvbnMgPSBuZXdDdG9yLm9wdGlvbnNcbiAgICAgIHJlY29yZC5DdG9yLmNpZCA9IG5ld0N0b3IuY2lkXG4gICAgICByZWNvcmQuQ3Rvci5wcm90b3R5cGUgPSBuZXdDdG9yLnByb3RvdHlwZVxuICAgICAgaWYgKG5ld0N0b3IucmVsZWFzZSkge1xuICAgICAgICAvLyB0ZW1wb3JhcnkgZ2xvYmFsIG1peGluIHN0cmF0ZWd5IHVzZWQgaW4gPCAyLjAuMC1hbHBoYS42XG4gICAgICAgIG5ld0N0b3IucmVsZWFzZSgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHVwZGF0ZU9wdGlvbnMocmVjb3JkLm9wdGlvbnMsIG9wdGlvbnMpXG4gICAgfVxuICB9XG4gIHJlY29yZC5pbnN0YW5jZXMuc2xpY2UoKS5mb3JFYWNoKGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgIGlmIChpbnN0YW5jZS4kdm5vZGUgJiYgaW5zdGFuY2UuJHZub2RlLmNvbnRleHQpIHtcbiAgICAgIGluc3RhbmNlLiR2bm9kZS5jb250ZXh0LiRmb3JjZVVwZGF0ZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1Jvb3Qgb3IgbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSBtb2RpZmllZC4gRnVsbCByZWxvYWQgcmVxdWlyZWQuJ1xuICAgICAgKVxuICAgIH1cbiAgfSlcbn0pXG5cbi8vIDIuNiBvcHRpbWl6ZXMgdGVtcGxhdGUtY29tcGlsZWQgc2NvcGVkIHNsb3RzIGFuZCBza2lwcyB1cGRhdGVzIGlmIGNoaWxkXG4vLyBvbmx5IHVzZXMgc2NvcGVkIHNsb3RzLiBXZSBuZWVkIHRvIHBhdGNoIHRoZSBzY29wZWQgc2xvdHMgcmVzb2x2aW5nIGhlbHBlclxuLy8gdG8gdGVtcG9yYXJpbHkgbWFyayBhbGwgc2NvcGVkIHNsb3RzIGFzIHVuc3RhYmxlIGluIG9yZGVyIHRvIGZvcmNlIGNoaWxkXG4vLyB1cGRhdGVzLlxuZnVuY3Rpb24gcGF0Y2hTY29wZWRTbG90cyAoaW5zdGFuY2UpIHtcbiAgaWYgKCFpbnN0YW5jZS5fdSkgeyByZXR1cm4gfVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlL2Jsb2IvZGV2L3NyYy9jb3JlL2luc3RhbmNlL3JlbmRlci1oZWxwZXJzL3Jlc29sdmUtc2NvcGVkLXNsb3RzLmpzXG4gIHZhciBvcmlnaW5hbCA9IGluc3RhbmNlLl91XG4gIGluc3RhbmNlLl91ID0gZnVuY3Rpb24gKHNsb3RzKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIDIuNi40IH4gMi42LjZcbiAgICAgIHJldHVybiBvcmlnaW5hbChzbG90cywgdHJ1ZSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyAyLjUgLyA+PSAyLjYuN1xuICAgICAgcmV0dXJuIG9yaWdpbmFsKHNsb3RzLCBudWxsLCB0cnVlKVxuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGluc3RhbmNlLl91ID0gb3JpZ2luYWxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-hot-reload-api/dist/index.js\n");

/***/ }),

/***/ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js":
/*!********************************************************************!*\
  !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcz8yODc3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KSB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n");

/***/ }),

/***/ "./node_modules/vue-multiselect/dist/vue-multiselect.min.css":
/*!*******************************************************************!*\
  !*** ./node_modules/vue-multiselect/dist/vue-multiselect.min.css ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./vue-multiselect.min.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-multiselect/dist/vue-multiselect.min.css\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"454e7ed8\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./vue-multiselect.min.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-multiselect/dist/vue-multiselect.min.css\", function() {\n     var newContent = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./vue-multiselect.min.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-multiselect/dist/vue-multiselect.min.css\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLW11bHRpc2VsZWN0L2Rpc3QvdnVlLW11bHRpc2VsZWN0Lm1pbi5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLW11bHRpc2VsZWN0L2Rpc3QvdnVlLW11bHRpc2VsZWN0Lm1pbi5jc3M/OTFkMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi92dWUtbXVsdGlzZWxlY3QubWluLmNzc1wiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikuZGVmYXVsdFxudmFyIHVwZGF0ZSA9IGFkZChcIjQ1NGU3ZWQ4XCIsIGNvbnRlbnQsIGZhbHNlLCB7XCJzb3VyY2VNYXBcIjpmYWxzZSxcInNoYWRvd01vZGVcIjpmYWxzZX0pO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi92dWUtbXVsdGlzZWxlY3QubWluLmNzc1wiLCBmdW5jdGlvbigpIHtcbiAgICAgdmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0xIS4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMiEuL3Z1ZS1tdWx0aXNlbGVjdC5taW4uY3NzXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-multiselect/dist/vue-multiselect.min.css\n");

/***/ }),

/***/ "./node_modules/vue-multiselect/dist/vue-multiselect.min.js":
/*!******************************************************************!*\
  !*** ./node_modules/vue-multiselect/dist/vue-multiselect.min.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("!function(t,e){ true?module.exports=e():undefined}(this,function(){return function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=60)}([function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(t,e,n){var i=n(49)(\"wks\"),r=n(30),o=n(0).Symbol,s=\"function\"==typeof o;(t.exports=function(t){return i[t]||(i[t]=s&&o[t]||(s?o:r)(\"Symbol.\"+t))}).store=i},function(t,e,n){var i=n(5);t.exports=function(t){if(!i(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,n){var i=n(0),r=n(10),o=n(8),s=n(6),u=n(11),a=function(t,e,n){var l,c,f,p,h=t&a.F,d=t&a.G,v=t&a.S,g=t&a.P,y=t&a.B,m=d?i:v?i[e]||(i[e]={}):(i[e]||{}).prototype,b=d?r:r[e]||(r[e]={}),_=b.prototype||(b.prototype={});d&&(n=e);for(l in n)c=!h&&m&&void 0!==m[l],f=(c?m:n)[l],p=y&&c?u(f,i):g&&\"function\"==typeof f?u(Function.call,f):f,m&&s(m,l,f,t&a.U),b[l]!=f&&o(b,l,p),g&&_[l]!=f&&(_[l]=f)};i.core=r,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,e,n){t.exports=!n(7)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,e,n){var i=n(0),r=n(8),o=n(12),s=n(30)(\"src\"),u=Function.toString,a=(\"\"+u).split(\"toString\");n(10).inspectSource=function(t){return u.call(t)},(t.exports=function(t,e,n,u){var l=\"function\"==typeof n;l&&(o(n,\"name\")||r(n,\"name\",e)),t[e]!==n&&(l&&(o(n,s)||r(n,s,t[e]?\"\"+t[e]:a.join(String(e)))),t===i?t[e]=n:u?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,\"toString\",function(){return\"function\"==typeof this&&this[s]||u.call(this)})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(13),r=n(25);t.exports=n(4)?function(t,e,n){return i.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:\"2.5.7\"};\"number\"==typeof __e&&(__e=n)},function(t,e,n){var i=n(14);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var i=n(2),r=n(41),o=n(29),s=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),r)try{return s(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on  \"+t);return t}},function(t,e,n){\"use strict\";var i=n(7);t.exports=function(t,e){return!!t&&i(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e,n){var i=n(23),r=n(16);t.exports=function(t){return i(r(t))}},function(t,e,n){var i=n(53),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},function(t,e,n){var i=n(11),r=n(23),o=n(28),s=n(19),u=n(64);t.exports=function(t,e){var n=1==t,a=2==t,l=3==t,c=4==t,f=6==t,p=5==t||f,h=e||u;return function(e,u,d){for(var v,g,y=o(e),m=r(y),b=i(u,d,3),_=s(m.length),x=0,w=n?h(e,_):a?h(e,0):void 0;_>x;x++)if((p||x in m)&&(v=m[x],g=b(v,x,y),t))if(n)w[x]=g;else if(g)switch(t){case 3:return!0;case 5:return v;case 6:return x;case 2:w.push(v)}else if(c)return!1;return f?-1:l||c?c:w}}},function(t,e,n){var i=n(5),r=n(0).document,o=i(r)&&i(r.createElement);t.exports=function(t){return o?r.createElement(t):{}}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e,n){var i=n(9);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==i(t)?t.split(\"\"):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var i=n(13).f,r=n(12),o=n(1)(\"toStringTag\");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,o)&&i(t,o,{configurable:!0,value:e})}},function(t,e,n){var i=n(49)(\"keys\"),r=n(30);t.exports=function(t){return i[t]||(i[t]=r(t))}},function(t,e,n){var i=n(16);t.exports=function(t){return Object(i(t))}},function(t,e,n){var i=n(5);t.exports=function(t,e){if(!i(t))return t;var n,r;if(e&&\"function\"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;if(\"function\"==typeof(n=t.valueOf)&&!i(r=n.call(t)))return r;if(!e&&\"function\"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e){var n=0,i=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+i).toString(36))}},function(t,e,n){\"use strict\";var i=n(0),r=n(12),o=n(9),s=n(67),u=n(29),a=n(7),l=n(77).f,c=n(45).f,f=n(13).f,p=n(51).trim,h=i.Number,d=h,v=h.prototype,g=\"Number\"==o(n(44)(v)),y=\"trim\"in String.prototype,m=function(t){var e=u(t,!1);if(\"string\"==typeof e&&e.length>2){e=y?e.trim():p(e,3);var n,i,r,o=e.charCodeAt(0);if(43===o||45===o){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+e}for(var s,a=e.slice(2),l=0,c=a.length;l<c;l++)if((s=a.charCodeAt(l))<48||s>r)return NaN;return parseInt(a,i)}}return+e};if(!h(\" 0o1\")||!h(\"0b1\")||h(\"+0x1\")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(g?a(function(){v.valueOf.call(n)}):\"Number\"!=o(n))?s(new d(m(e)),n,h):m(e)};for(var b,_=n(4)?l(d):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),x=0;_.length>x;x++)r(d,b=_[x])&&!r(h,b)&&f(h,b,c(d,b));h.prototype=v,v.constructor=h,n(6)(i,\"Number\",h)}},function(t,e,n){\"use strict\";function i(t){return 0!==t&&(!(!Array.isArray(t)||0!==t.length)||!t)}function r(t){return function(){return!t.apply(void 0,arguments)}}function o(t,e){return void 0===t&&(t=\"undefined\"),null===t&&(t=\"null\"),!1===t&&(t=\"false\"),-1!==t.toString().toLowerCase().indexOf(e.trim())}function s(t,e,n,i){return t.filter(function(t){return o(i(t,n),e)})}function u(t){return t.filter(function(t){return!t.$isLabel})}function a(t,e){return function(n){return n.reduce(function(n,i){return i[t]&&i[t].length?(n.push({$groupLabel:i[e],$isLabel:!0}),n.concat(i[t])):n},[])}}function l(t,e,i,r,o){return function(u){return u.map(function(u){var a;if(!u[i])return console.warn(\"Options passed to vue-multiselect do not contain groups, despite the config.\"),[];var l=s(u[i],t,e,o);return l.length?(a={},n.i(d.a)(a,r,u[r]),n.i(d.a)(a,i,l),a):[]})}}var c=n(59),f=n(54),p=(n.n(f),n(95)),h=(n.n(p),n(31)),d=(n.n(h),n(58)),v=n(91),g=(n.n(v),n(98)),y=(n.n(g),n(92)),m=(n.n(y),n(88)),b=(n.n(m),n(97)),_=(n.n(b),n(89)),x=(n.n(_),n(96)),w=(n.n(x),n(93)),S=(n.n(w),n(90)),O=(n.n(S),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return e.reduce(function(t,e){return e(t)},t)}});e.a={data:function(){return{search:\"\",isOpen:!1,preferredOpenDirection:\"below\",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},value:{type:null,default:function(){return[]}},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:\"Select option\"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default:function(t,e){return i(t)?\"\":e?t[e]:t}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:\"Press enter to create a tag\"},tagPosition:{type:String,default:\"top\"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default:function(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1}},mounted:function(){!this.multiple&&this.max&&console.warn(\"[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false.\"),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue:function(){return this.value||0===this.value?Array.isArray(this.value)?this.value:[this.value]:[]},filteredOptions:function(){var t=this.search||\"\",e=t.toLowerCase().trim(),n=this.options.concat();return n=this.internalSearch?this.groupValues?this.filterAndFlat(n,e,this.label):s(n,e,this.label,this.customLabel):this.groupValues?a(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(r(this.isSelected)):n,this.taggable&&e.length&&!this.isExistingOption(e)&&(\"bottom\"===this.tagPosition?n.push({isTag:!0,label:t}):n.unshift({isTag:!0,label:t})),n.slice(0,this.optionsLimit)},valueKeys:function(){var t=this;return this.trackBy?this.internalValue.map(function(e){return e[t.trackBy]}):this.internalValue},optionKeys:function(){var t=this;return(this.groupValues?this.flatAndStrip(this.options):this.options).map(function(e){return t.customLabel(e,t.label).toString().toLowerCase()})},currentOptionLabel:function(){return this.multiple?this.searchable?\"\":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?\"\":this.placeholder}},watch:{internalValue:function(){this.resetAfter&&this.internalValue.length&&(this.search=\"\",this.$emit(\"input\",this.multiple?[]:null))},search:function(){this.$emit(\"search-change\",this.search,this.id)}},methods:{getValue:function(){return this.multiple?this.internalValue:0===this.internalValue.length?null:this.internalValue[0]},filterAndFlat:function(t,e,n){return O(l(e,n,this.groupValues,this.groupLabel,this.customLabel),a(this.groupValues,this.groupLabel))(t)},flatAndStrip:function(t){return O(a(this.groupValues,this.groupLabel),u)(t)},updateSearch:function(t){this.search=t},isExistingOption:function(t){return!!this.options&&this.optionKeys.indexOf(t)>-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(i(t))return\"\";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return i(e)?\"\":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)return void this.selectGroup(t);if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&(\"Tab\"!==e||this.pointerDirty)){if(t.isTag)this.$emit(\"tag\",t.label,this.id),this.search=\"\",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void(\"Tab\"!==e&&this.removeElement(t));this.$emit(\"select\",t,this.id),this.multiple?this.$emit(\"input\",this.internalValue.concat([t]),this.id):this.$emit(\"input\",t,this.id),this.clearOnSelect&&(this.search=\"\")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find(function(n){return n[e.groupLabel]===t.$groupLabel});if(n)if(this.wholeGroupSelected(n)){this.$emit(\"remove\",n[this.groupValues],this.id);var i=this.internalValue.filter(function(t){return-1===n[e.groupValues].indexOf(t)});this.$emit(\"input\",i,this.id)}else{var r=n[this.groupValues].filter(function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))});this.$emit(\"select\",r,this.id),this.$emit(\"input\",this.internalValue.concat(r),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every(function(t){return e.isSelected(t)||e.isOptionDisabled(t)})},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var i=\"object\"===n.i(c.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit(\"remove\",t,this.id),this.multiple){var r=this.internalValue.slice(0,i).concat(this.internalValue.slice(i+1));this.$emit(\"input\",r,this.id)}else this.$emit(\"input\",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf(\"Delete\")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=\"\"),this.$nextTick(function(){return t.$refs.search.focus()})):this.$el.focus(),this.$emit(\"open\",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=\"\"),this.$emit(\"close\",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if(\"undefined\"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||\"below\"===this.openDirection||\"bottom\"===this.openDirection?(this.preferredOpenDirection=\"below\",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection=\"above\",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){\"use strict\";var i=n(54),r=(n.n(i),n(31));n.n(r);e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer,\"multiselect__option--selected\":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return[\"multiselect__option--group\",\"multiselect__option--disabled\"];var i=this.options.find(function(t){return t[n.groupLabel]===e.$groupLabel});return i&&!this.wholeGroupDisabled(i)?[\"multiselect__option--group\",{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer},{\"multiselect__option--group-selected\":this.wholeGroupSelected(i)}]:\"multiselect__option--disabled\"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"Enter\",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer<this.filteredOptions.length-1&&(this.pointer++,this.$refs.list.scrollTop<=this.pointerPosition-(this.visibleElements-1)*this.optionHeight&&(this.$refs.list.scrollTop=this.pointerPosition-(this.visibleElements-1)*this.optionHeight),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()),this.pointerDirty=!0},pointerBackward:function(){this.pointer>0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){\"use strict\";var i=n(36),r=n(74),o=n(15),s=n(18);t.exports=n(72)(Array,\"Array\",function(t,e){this._t=s(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):\"keys\"==e?r(0,n):\"values\"==e?r(0,t[n]):r(0,[n,t[n]])},\"values\"),o.Arguments=o.Array,i(\"keys\"),i(\"values\"),i(\"entries\")},function(t,e,n){\"use strict\";var i=n(31),r=(n.n(i),n(32)),o=n(33);e.a={name:\"vue-multiselect\",mixins:[r.a,o.a],props:{name:{type:String,default:\"\"},selectLabel:{type:String,default:\"Press enter to select\"},selectGroupLabel:{type:String,default:\"Press enter to select group\"},selectedLabel:{type:String,default:\"Selected\"},deselectLabel:{type:String,default:\"Press enter to remove\"},deselectGroupLabel:{type:String,default:\"Press enter to deselect group\"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return\"and \".concat(t,\" more\")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:\"\"},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:\"\"},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:\"\"},selectLabelText:function(){return this.showLabels?this.selectLabel:\"\"},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:\"\"},selectedLabelText:function(){return this.showLabels?this.selectedLabel:\"\"},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:\"100%\"}:{width:\"0\",position:\"absolute\",padding:\"0\"}},contentStyle:function(){return this.options.length?{display:\"inline-block\"}:{display:\"block\"}},isAbove:function(){return\"above\"===this.openDirection||\"top\"===this.openDirection||\"below\"!==this.openDirection&&\"bottom\"!==this.openDirection&&\"above\"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var i=n(1)(\"unscopables\"),r=Array.prototype;void 0==r[i]&&n(8)(r,i,{}),t.exports=function(t){r[i][t]=!0}},function(t,e,n){var i=n(18),r=n(19),o=n(85);t.exports=function(t){return function(e,n,s){var u,a=i(e),l=r(a.length),c=o(s,l);if(t&&n!=n){for(;l>c;)if((u=a[c++])!=u)return!0}else for(;l>c;c++)if((t||c in a)&&a[c]===n)return t||c||0;return!t&&-1}}},function(t,e,n){var i=n(9),r=n(1)(\"toStringTag\"),o=\"Arguments\"==i(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=s(e=Object(t),r))?n:o?i(e):\"Object\"==(u=i(e))&&\"function\"==typeof e.callee?\"Arguments\":u}},function(t,e,n){\"use strict\";var i=n(2);t.exports=function(){var t=i(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e,n){var i=n(0).document;t.exports=i&&i.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)(function(){return 7!=Object.defineProperty(n(21)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,n){var i=n(9);t.exports=Array.isArray||function(t){return\"Array\"==i(t)}},function(t,e,n){\"use strict\";function i(t){var e,n;this.promise=new t(function(t,i){if(void 0!==e||void 0!==n)throw TypeError(\"Bad Promise constructor\");e=t,n=i}),this.resolve=r(e),this.reject=r(n)}var r=n(14);t.exports.f=function(t){return new i(t)}},function(t,e,n){var i=n(2),r=n(76),o=n(22),s=n(27)(\"IE_PROTO\"),u=function(){},a=function(){var t,e=n(21)(\"iframe\"),i=o.length;for(e.style.display=\"none\",n(40).appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(\"<script>document.F=Object<\\/script>\"),t.close(),a=t.F;i--;)delete a.prototype[o[i]];return a()};t.exports=Object.create||function(t,e){var n;return null!==t?(u.prototype=i(t),n=new u,u.prototype=null,n[s]=t):n=a(),void 0===e?n:r(n,e)}},function(t,e,n){var i=n(79),r=n(25),o=n(18),s=n(29),u=n(12),a=n(41),l=Object.getOwnPropertyDescriptor;e.f=n(4)?l:function(t,e){if(t=o(t),e=s(e,!0),a)try{return l(t,e)}catch(t){}if(u(t,e))return r(!i.f.call(t,e),t[e])}},function(t,e,n){var i=n(12),r=n(18),o=n(37)(!1),s=n(27)(\"IE_PROTO\");t.exports=function(t,e){var n,u=r(t),a=0,l=[];for(n in u)n!=s&&i(u,n)&&l.push(n);for(;e.length>a;)i(u,n=e[a++])&&(~o(l,n)||l.push(n));return l}},function(t,e,n){var i=n(46),r=n(22);t.exports=Object.keys||function(t){return i(t,r)}},function(t,e,n){var i=n(2),r=n(5),o=n(43);t.exports=function(t,e){if(i(t),r(e)&&e.constructor===t)return e;var n=o.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){var i=n(10),r=n(0),o=r[\"__core-js_shared__\"]||(r[\"__core-js_shared__\"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:i.version,mode:n(24)?\"pure\":\"global\",copyright:\"© 2018 Denis Pushkarev (zloirock.ru)\"})},function(t,e,n){var i=n(2),r=n(14),o=n(1)(\"species\");t.exports=function(t,e){var n,s=i(t).constructor;return void 0===s||void 0==(n=i(s)[o])?e:r(n)}},function(t,e,n){var i=n(3),r=n(16),o=n(7),s=n(84),u=\"[\"+s+\"]\",a=\"​…\",l=RegExp(\"^\"+u+u+\"*\"),c=RegExp(u+u+\"*$\"),f=function(t,e,n){var r={},u=o(function(){return!!s[t]()||a[t]()!=a}),l=r[t]=u?e(p):s[t];n&&(r[n]=l),i(i.P+i.F*u,\"String\",r)},p=f.trim=function(t,e){return t=String(r(t)),1&e&&(t=t.replace(l,\"\")),2&e&&(t=t.replace(c,\"\")),t};t.exports=f},function(t,e,n){var i,r,o,s=n(11),u=n(68),a=n(40),l=n(21),c=n(0),f=c.process,p=c.setImmediate,h=c.clearImmediate,d=c.MessageChannel,v=c.Dispatch,g=0,y={},m=function(){var t=+this;if(y.hasOwnProperty(t)){var e=y[t];delete y[t],e()}},b=function(t){m.call(t.data)};p&&h||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return y[++g]=function(){u(\"function\"==typeof t?t:Function(t),e)},i(g),g},h=function(t){delete y[t]},\"process\"==n(9)(f)?i=function(t){f.nextTick(s(m,t,1))}:v&&v.now?i=function(t){v.now(s(m,t,1))}:d?(r=new d,o=r.port2,r.port1.onmessage=b,i=s(o.postMessage,o,1)):c.addEventListener&&\"function\"==typeof postMessage&&!c.importScripts?(i=function(t){c.postMessage(t+\"\",\"*\")},c.addEventListener(\"message\",b,!1)):i=\"onreadystatechange\"in l(\"script\")?function(t){a.appendChild(l(\"script\")).onreadystatechange=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(s(m,t,1),0)}),t.exports={set:p,clear:h}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e,n){\"use strict\";var i=n(3),r=n(20)(5),o=!0;\"find\"in[]&&Array(1).find(function(){o=!1}),i(i.P+i.F*o,\"Array\",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),n(36)(\"find\")},function(t,e,n){\"use strict\";var i,r,o,s,u=n(24),a=n(0),l=n(11),c=n(38),f=n(3),p=n(5),h=n(14),d=n(61),v=n(66),g=n(50),y=n(52).set,m=n(75)(),b=n(43),_=n(80),x=n(86),w=n(48),S=a.TypeError,O=a.process,L=O&&O.versions,k=L&&L.v8||\"\",P=a.Promise,T=\"process\"==c(O),V=function(){},E=r=b.f,A=!!function(){try{var t=P.resolve(1),e=(t.constructor={})[n(1)(\"species\")]=function(t){t(V,V)};return(T||\"function\"==typeof PromiseRejectionEvent)&&t.then(V)instanceof e&&0!==k.indexOf(\"6.6\")&&-1===x.indexOf(\"Chrome/66\")}catch(t){}}(),C=function(t){var e;return!(!p(t)||\"function\"!=typeof(e=t.then))&&e},D=function(t,e){if(!t._n){t._n=!0;var n=t._c;m(function(){for(var i=t._v,r=1==t._s,o=0;n.length>o;)!function(e){var n,o,s,u=r?e.ok:e.fail,a=e.resolve,l=e.reject,c=e.domain;try{u?(r||(2==t._h&&$(t),t._h=1),!0===u?n=i:(c&&c.enter(),n=u(i),c&&(c.exit(),s=!0)),n===e.promise?l(S(\"Promise-chain cycle\")):(o=C(n))?o.call(n,a,l):a(n)):l(i)}catch(t){c&&!s&&c.exit(),l(t)}}(n[o++]);t._c=[],t._n=!1,e&&!t._h&&j(t)})}},j=function(t){y.call(a,function(){var e,n,i,r=t._v,o=N(t);if(o&&(e=_(function(){T?O.emit(\"unhandledRejection\",r,t):(n=a.onunhandledrejection)?n({promise:t,reason:r}):(i=a.console)&&i.error&&i.error(\"Unhandled promise rejection\",r)}),t._h=T||N(t)?2:1),t._a=void 0,o&&e.e)throw e.v})},N=function(t){return 1!==t._h&&0===(t._a||t._c).length},$=function(t){y.call(a,function(){var e;T?O.emit(\"rejectionHandled\",t):(e=a.onrejectionhandled)&&e({promise:t,reason:t._v})})},F=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),D(e,!0))},M=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw S(\"Promise can't be resolved itself\");(e=C(t))?m(function(){var i={_w:n,_d:!1};try{e.call(t,l(M,i,1),l(F,i,1))}catch(t){F.call(i,t)}}):(n._v=t,n._s=1,D(n,!1))}catch(t){F.call({_w:n,_d:!1},t)}}};A||(P=function(t){d(this,P,\"Promise\",\"_h\"),h(t),i.call(this);try{t(l(M,this,1),l(F,this,1))}catch(t){F.call(this,t)}},i=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=n(81)(P.prototype,{then:function(t,e){var n=E(g(this,P));return n.ok=\"function\"!=typeof t||t,n.fail=\"function\"==typeof e&&e,n.domain=T?O.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&D(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new i;this.promise=t,this.resolve=l(M,t,1),this.reject=l(F,t,1)},b.f=E=function(t){return t===P||t===s?new o(t):r(t)}),f(f.G+f.W+f.F*!A,{Promise:P}),n(26)(P,\"Promise\"),n(83)(\"Promise\"),s=n(10).Promise,f(f.S+f.F*!A,\"Promise\",{reject:function(t){var e=E(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(u||!A),\"Promise\",{resolve:function(t){return w(u&&this===s?P:this,t)}}),f(f.S+f.F*!(A&&n(73)(function(t){P.all(t).catch(V)})),\"Promise\",{all:function(t){var e=this,n=E(e),i=n.resolve,r=n.reject,o=_(function(){var n=[],o=0,s=1;v(t,!1,function(t){var u=o++,a=!1;n.push(void 0),s++,e.resolve(t).then(function(t){a||(a=!0,n[u]=t,--s||i(n))},r)}),--s||i(n)});return o.e&&r(o.v),n.promise},race:function(t){var e=this,n=E(e),i=n.reject,r=_(function(){v(t,!1,function(t){e.resolve(t).then(n.resolve,i)})});return r.e&&i(r.v),n.promise}})},function(t,e,n){\"use strict\";var i=n(3),r=n(10),o=n(0),s=n(50),u=n(48);i(i.P+i.R,\"Promise\",{finally:function(t){var e=s(this,r.Promise||o.Promise),n=\"function\"==typeof t;return this.then(n?function(n){return u(e,t()).then(function(){return n})}:t,n?function(n){return u(e,t()).then(function(){throw n})}:t)}})},function(t,e,n){\"use strict\";function i(t){n(99)}var r=n(35),o=n(101),s=n(100),u=i,a=s(r.a,o.a,!1,u,null,null);e.a=a.exports},function(t,e,n){\"use strict\";function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}e.a=i},function(t,e,n){\"use strict\";function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"===i(Symbol.iterator)?function(t){return i(t)}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":i(t)})(t)}e.a=r},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(34),r=(n.n(i),n(55)),o=(n.n(r),n(56)),s=(n.n(o),n(57)),u=n(32),a=n(33);n.d(e,\"Multiselect\",function(){return s.a}),n.d(e,\"multiselectMixin\",function(){return u.a}),n.d(e,\"pointerMixin\",function(){return a.a}),e.default=s.a},function(t,e){t.exports=function(t,e,n,i){if(!(t instanceof e)||void 0!==i&&i in t)throw TypeError(n+\": incorrect invocation!\");return t}},function(t,e,n){var i=n(14),r=n(28),o=n(23),s=n(19);t.exports=function(t,e,n,u,a){i(e);var l=r(t),c=o(l),f=s(l.length),p=a?f-1:0,h=a?-1:1;if(n<2)for(;;){if(p in c){u=c[p],p+=h;break}if(p+=h,a?p<0:f<=p)throw TypeError(\"Reduce of empty array with no initial value\")}for(;a?p>=0:f>p;p+=h)p in c&&(u=e(u,c[p],p,l));return u}},function(t,e,n){var i=n(5),r=n(42),o=n(1)(\"species\");t.exports=function(t){var e;return r(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!r(e.prototype)||(e=void 0),i(e)&&null===(e=e[o])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var i=n(63);t.exports=function(t,e){return new(i(t))(e)}},function(t,e,n){\"use strict\";var i=n(8),r=n(6),o=n(7),s=n(16),u=n(1);t.exports=function(t,e,n){var a=u(t),l=n(s,a,\"\"[t]),c=l[0],f=l[1];o(function(){var e={};return e[a]=function(){return 7},7!=\"\"[t](e)})&&(r(String.prototype,t,c),i(RegExp.prototype,a,2==e?function(t,e){return f.call(t,this,e)}:function(t){return f.call(t,this)}))}},function(t,e,n){var i=n(11),r=n(70),o=n(69),s=n(2),u=n(19),a=n(87),l={},c={},e=t.exports=function(t,e,n,f,p){var h,d,v,g,y=p?function(){return t}:a(t),m=i(n,f,e?2:1),b=0;if(\"function\"!=typeof y)throw TypeError(t+\" is not iterable!\");if(o(y)){for(h=u(t.length);h>b;b++)if((g=e?m(s(d=t[b])[0],d[1]):m(t[b]))===l||g===c)return g}else for(v=y.call(t);!(d=v.next()).done;)if((g=r(v,m,d.value,e))===l||g===c)return g};e.BREAK=l,e.RETURN=c},function(t,e,n){var i=n(5),r=n(82).set;t.exports=function(t,e,n){var o,s=e.constructor;return s!==n&&\"function\"==typeof s&&(o=s.prototype)!==n.prototype&&i(o)&&r&&r(t,o),t}},function(t,e){t.exports=function(t,e,n){var i=void 0===n;switch(e.length){case 0:return i?t():t.call(n);case 1:return i?t(e[0]):t.call(n,e[0]);case 2:return i?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return i?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return i?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var i=n(15),r=n(1)(\"iterator\"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||o[r]===t)}},function(t,e,n){var i=n(2);t.exports=function(t,e,n,r){try{return r?e(i(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&i(o.call(t)),e}}},function(t,e,n){\"use strict\";var i=n(44),r=n(25),o=n(26),s={};n(8)(s,n(1)(\"iterator\"),function(){return this}),t.exports=function(t,e,n){t.prototype=i(s,{next:r(1,n)}),o(t,e+\" Iterator\")}},function(t,e,n){\"use strict\";var i=n(24),r=n(3),o=n(6),s=n(8),u=n(15),a=n(71),l=n(26),c=n(78),f=n(1)(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),h=function(){return this};t.exports=function(t,e,n,d,v,g,y){a(n,e,d);var m,b,_,x=function(t){if(!p&&t in L)return L[t];switch(t){case\"keys\":case\"values\":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+\" Iterator\",S=\"values\"==v,O=!1,L=t.prototype,k=L[f]||L[\"@@iterator\"]||v&&L[v],P=k||x(v),T=v?S?x(\"entries\"):P:void 0,V=\"Array\"==e?L.entries||k:k;if(V&&(_=c(V.call(new t)))!==Object.prototype&&_.next&&(l(_,w,!0),i||\"function\"==typeof _[f]||s(_,f,h)),S&&k&&\"values\"!==k.name&&(O=!0,P=function(){return k.call(this)}),i&&!y||!p&&!O&&L[f]||s(L,f,P),u[e]=P,u[w]=h,v)if(m={values:S?P:x(\"values\"),keys:g?P:x(\"keys\"),entries:T},y)for(b in m)b in L||o(L,b,m[b]);else r(r.P+r.F*(p||O),e,m);return m}},function(t,e,n){var i=n(1)(\"iterator\"),r=!1;try{var o=[7][i]();o.return=function(){r=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var o=[7],s=o[i]();s.next=function(){return{done:n=!0}},o[i]=function(){return s},t(o)}catch(t){}return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var i=n(0),r=n(52).set,o=i.MutationObserver||i.WebKitMutationObserver,s=i.process,u=i.Promise,a=\"process\"==n(9)(s);t.exports=function(){var t,e,n,l=function(){var i,r;for(a&&(i=s.domain)&&i.exit();t;){r=t.fn,t=t.next;try{r()}catch(i){throw t?n():e=void 0,i}}e=void 0,i&&i.enter()};if(a)n=function(){s.nextTick(l)};else if(!o||i.navigator&&i.navigator.standalone)if(u&&u.resolve){var c=u.resolve(void 0);n=function(){c.then(l)}}else n=function(){r.call(i,l)};else{var f=!0,p=document.createTextNode(\"\");new o(l).observe(p,{characterData:!0}),n=function(){p.data=f=!f}}return function(i){var r={fn:i,next:void 0};e&&(e.next=r),t||(t=r,n()),e=r}}},function(t,e,n){var i=n(13),r=n(2),o=n(47);t.exports=n(4)?Object.defineProperties:function(t,e){r(t);for(var n,s=o(e),u=s.length,a=0;u>a;)i.f(t,n=s[a++],e[n]);return t}},function(t,e,n){var i=n(46),r=n(22).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return i(t,r)}},function(t,e,n){var i=n(12),r=n(28),o=n(27)(\"IE_PROTO\"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),i(t,o)?t[o]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var i=n(6);t.exports=function(t,e,n){for(var r in e)i(t,r,e[r],n);return t}},function(t,e,n){var i=n(5),r=n(2),o=function(t,e){if(r(t),!i(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,i){try{i=n(11)(Function.call,n(45).f(Object.prototype,\"__proto__\").set,2),i(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:i(t,n),t}}({},!1):void 0),check:o}},function(t,e,n){\"use strict\";var i=n(0),r=n(13),o=n(4),s=n(1)(\"species\");t.exports=function(t){var e=i[t];o&&e&&!e[s]&&r.f(e,s,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"},function(t,e,n){var i=n(53),r=Math.max,o=Math.min;t.exports=function(t,e){return t=i(t),t<0?r(t+e,0):o(t,e)}},function(t,e,n){var i=n(0),r=i.navigator;t.exports=r&&r.userAgent||\"\"},function(t,e,n){var i=n(38),r=n(1)(\"iterator\"),o=n(15);t.exports=n(10).getIteratorMethod=function(t){if(void 0!=t)return t[r]||t[\"@@iterator\"]||o[i(t)]}},function(t,e,n){\"use strict\";var i=n(3),r=n(20)(2);i(i.P+i.F*!n(17)([].filter,!0),\"Array\",{filter:function(t){return r(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),r=n(37)(!1),o=[].indexOf,s=!!o&&1/[1].indexOf(1,-0)<0;i(i.P+i.F*(s||!n(17)(o)),\"Array\",{indexOf:function(t){return s?o.apply(this,arguments)||0:r(this,t,arguments[1])}})},function(t,e,n){var i=n(3);i(i.S,\"Array\",{isArray:n(42)})},function(t,e,n){\"use strict\";var i=n(3),r=n(20)(1);i(i.P+i.F*!n(17)([].map,!0),\"Array\",{map:function(t){return r(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),r=n(62);i(i.P+i.F*!n(17)([].reduce,!0),\"Array\",{reduce:function(t){return r(this,t,arguments.length,arguments[1],!1)}})},function(t,e,n){var i=Date.prototype,r=i.toString,o=i.getTime;new Date(NaN)+\"\"!=\"Invalid Date\"&&n(6)(i,\"toString\",function(){var t=o.call(this);return t===t?r.call(this):\"Invalid Date\"})},function(t,e,n){n(4)&&\"g\"!=/./g.flags&&n(13).f(RegExp.prototype,\"flags\",{configurable:!0,get:n(39)})},function(t,e,n){n(65)(\"search\",1,function(t,e,n){return[function(n){\"use strict\";var i=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,i):new RegExp(n)[e](String(i))},n]})},function(t,e,n){\"use strict\";n(94);var i=n(2),r=n(39),o=n(4),s=/./.toString,u=function(t){n(6)(RegExp.prototype,\"toString\",t,!0)};n(7)(function(){return\"/a/b\"!=s.call({source:\"a\",flags:\"b\"})})?u(function(){var t=i(this);return\"/\".concat(t.source,\"/\",\"flags\"in t?t.flags:!o&&t instanceof RegExp?r.call(t):void 0)}):\"toString\"!=s.name&&u(function(){return s.call(this)})},function(t,e,n){\"use strict\";n(51)(\"trim\",function(t){return function(){return t(this,3)}})},function(t,e,n){for(var i=n(34),r=n(47),o=n(6),s=n(0),u=n(8),a=n(15),l=n(1),c=l(\"iterator\"),f=l(\"toStringTag\"),p=a.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=r(h),v=0;v<d.length;v++){var g,y=d[v],m=h[y],b=s[y],_=b&&b.prototype;if(_&&(_[c]||u(_,c,p),_[f]||u(_,f,y),a[y]=p,m))for(g in i)_[g]||o(_,g,i[g],!0)}},function(t,e){},function(t,e){t.exports=function(t,e,n,i,r,o){var s,u=t=t||{},a=typeof t.default;\"object\"!==a&&\"function\"!==a||(s=t,u=t.default);var l=\"function\"==typeof u?u.options:u;e&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0),n&&(l.functional=!0),r&&(l._scopeId=r);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},l._ssrRegister=c):i&&(c=i),c){var f=l.functional,p=f?l.render:l.beforeCreate;f?(l._injectStyles=c,l.render=function(t,e){return c.call(e),p(t,e)}):l.beforeCreate=p?[].concat(p,c):[c]}return{esModule:s,exports:u,options:l}}},function(t,e,n){\"use strict\";var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"multiselect\",class:{\"multiselect--active\":t.isOpen,\"multiselect--disabled\":t.disabled,\"multiselect--above\":t.isAbove},attrs:{tabindex:t.searchable?-1:t.tabindex},on:{focus:function(e){t.activate()},blur:function(e){!t.searchable&&t.deactivate()},keydown:[function(e){return\"button\"in e||!t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerForward()):null},function(e){return\"button\"in e||!t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerBackward()):null}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")||!t._k(e.keyCode,\"tab\",9,e.key,\"Tab\")?(e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()}}},[t._t(\"caret\",[n(\"div\",{staticClass:\"multiselect__select\",on:{mousedown:function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}}})],{toggle:t.toggle}),t._v(\" \"),t._t(\"clear\",null,{search:t.search}),t._v(\" \"),n(\"div\",{ref:\"tags\",staticClass:\"multiselect__tags\"},[t._t(\"selection\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.visibleValues.length>0,expression:\"visibleValues.length > 0\"}],staticClass:\"multiselect__tags-wrap\"},[t._l(t.visibleValues,function(e,i){return[t._t(\"tag\",[n(\"span\",{key:i,staticClass:\"multiselect__tag\"},[n(\"span\",{domProps:{textContent:t._s(t.getOptionLabel(e))}}),t._v(\" \"),n(\"i\",{staticClass:\"multiselect__tag-icon\",attrs:{\"aria-hidden\":\"true\",tabindex:\"1\"},on:{keypress:function(n){if(!(\"button\"in n)&&t._k(n.keyCode,\"enter\",13,n.key,\"Enter\"))return null;n.preventDefault(),t.removeElement(e)},mousedown:function(n){n.preventDefault(),t.removeElement(e)}}})])],{option:e,search:t.search,remove:t.removeElement})]})],2),t._v(\" \"),t.internalValue&&t.internalValue.length>t.limit?[t._t(\"limit\",[n(\"strong\",{staticClass:\"multiselect__strong\",domProps:{textContent:t._s(t.limitText(t.internalValue.length-t.limit))}})])]:t._e()],{search:t.search,remove:t.removeElement,values:t.visibleValues,isOpen:t.isOpen}),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect__loading\"}},[t._t(\"loading\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.loading,expression:\"loading\"}],staticClass:\"multiselect__spinner\"})])],2),t._v(\" \"),t.searchable?n(\"input\",{ref:\"search\",staticClass:\"multiselect__input\",style:t.inputStyle,attrs:{name:t.name,id:t.id,type:\"text\",autocomplete:\"nope\",placeholder:t.placeholder,disabled:t.disabled,tabindex:t.tabindex},domProps:{value:t.search},on:{input:function(e){t.updateSearch(e.target.value)},focus:function(e){e.preventDefault(),t.activate()},blur:function(e){e.preventDefault(),t.deactivate()},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()},keydown:[function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"]))return null;e.preventDefault(),t.pointerForward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"]))return null;e.preventDefault(),t.pointerBackward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"delete\",[8,46],e.key,[\"Backspace\",\"Delete\"]))return null;e.stopPropagation(),t.removeLastElement()}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")?(e.preventDefault(),e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null}}}):t._e(),t._v(\" \"),t.isSingleLabelVisible?n(\"span\",{staticClass:\"multiselect__single\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"singleLabel\",[[t._v(t._s(t.currentOptionLabel))]],{option:t.singleValue})],2):t._e(),t._v(\" \"),t.isPlaceholderVisible?n(\"span\",{staticClass:\"multiselect__placeholder\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"placeholder\",[t._v(\"\\n          \"+t._s(t.placeholder)+\"\\n        \")])],2):t._e()],2),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isOpen,expression:\"isOpen\"}],ref:\"list\",staticClass:\"multiselect__content-wrapper\",style:{maxHeight:t.optimizedHeight+\"px\"},attrs:{tabindex:\"-1\"},on:{focus:t.activate,mousedown:function(t){t.preventDefault()}}},[n(\"ul\",{staticClass:\"multiselect__content\",style:t.contentStyle},[t._t(\"beforeList\"),t._v(\" \"),t.multiple&&t.max===t.internalValue.length?n(\"li\",[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"maxElements\",[t._v(\"Maximum of \"+t._s(t.max)+\" options selected. First remove a selected option to select another.\")])],2)]):t._e(),t._v(\" \"),!t.max||t.internalValue.length<t.max?t._l(t.filteredOptions,function(e,i){return n(\"li\",{key:i,staticClass:\"multiselect__element\"},[e&&(e.$isLabel||e.$isDisabled)?t._e():n(\"span\",{staticClass:\"multiselect__option\",class:t.optionHighlight(i,e),attrs:{\"data-select\":e&&e.isTag?t.tagPlaceholder:t.selectLabelText,\"data-selected\":t.selectedLabelText,\"data-deselect\":t.deselectLabelText},on:{click:function(n){n.stopPropagation(),t.select(e)},mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.pointerSet(i)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2),t._v(\" \"),e&&(e.$isLabel||e.$isDisabled)?n(\"span\",{staticClass:\"multiselect__option\",class:t.groupHighlight(i,e),attrs:{\"data-select\":t.groupSelect&&t.selectGroupLabelText,\"data-deselect\":t.groupSelect&&t.deselectGroupLabelText},on:{mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.groupSelect&&t.pointerSet(i)},mousedown:function(n){n.preventDefault(),t.selectGroup(e)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2):t._e()])}):t._e(),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoResults&&0===t.filteredOptions.length&&t.search&&!t.loading,expression:\"showNoResults && (filteredOptions.length === 0 && search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noResult\",[t._v(\"No elements found. Consider changing the search query.\")],{search:t.search})],2)]),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoOptions&&0===t.options.length&&!t.search&&!t.loading,expression:\"showNoOptions && (options.length === 0 && !search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noOptions\",[t._v(\"List is empty.\")])],2)]),t._v(\" \"),t._t(\"afterList\")],2)])])],2)},r=[],o={render:i,staticRenderFns:r};e.a=o}])});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLW11bHRpc2VsZWN0L2Rpc3QvdnVlLW11bHRpc2VsZWN0Lm1pbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtbXVsdGlzZWxlY3QvZGlzdC92dWUtbXVsdGlzZWxlY3QubWluLmpzPzhlNWYiXSwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKHQsZSl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9ZSgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZSk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5WdWVNdWx0aXNlbGVjdD1lKCk6dC5WdWVNdWx0aXNlbGVjdD1lKCl9KHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShpKXtpZihuW2ldKXJldHVybiBuW2ldLmV4cG9ydHM7dmFyIHI9bltpXT17aTppLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIHRbaV0uY2FsbChyLmV4cG9ydHMscixyLmV4cG9ydHMsZSksci5sPSEwLHIuZXhwb3J0c312YXIgbj17fTtyZXR1cm4gZS5tPXQsZS5jPW4sZS5pPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxlLmQ9ZnVuY3Rpb24odCxuLGkpe2Uubyh0LG4pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6aX0pfSxlLm49ZnVuY3Rpb24odCl7dmFyIG49dCYmdC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIGUuZChuLFwiYVwiLG4pLG59LGUubz1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX0sZS5wPVwiL1wiLGUoZS5zPTYwKX0oW2Z1bmN0aW9uKHQsZSl7dmFyIG49dC5leHBvcnRzPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1wibnVtYmVyXCI9PXR5cGVvZiBfX2cmJihfX2c9bil9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDQ5KShcIndrc1wiKSxyPW4oMzApLG89bigwKS5TeW1ib2wscz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBvOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlbdF18fChpW3RdPXMmJm9bdF18fChzP286cikoXCJTeW1ib2wuXCIrdCkpfSkuc3RvcmU9aX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oNSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFpKHQpKXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBhbiBvYmplY3QhXCIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMCkscj1uKDEwKSxvPW4oOCkscz1uKDYpLHU9bigxMSksYT1mdW5jdGlvbih0LGUsbil7dmFyIGwsYyxmLHAsaD10JmEuRixkPXQmYS5HLHY9dCZhLlMsZz10JmEuUCx5PXQmYS5CLG09ZD9pOnY/aVtlXXx8KGlbZV09e30pOihpW2VdfHx7fSkucHJvdG90eXBlLGI9ZD9yOnJbZV18fChyW2VdPXt9KSxfPWIucHJvdG90eXBlfHwoYi5wcm90b3R5cGU9e30pO2QmJihuPWUpO2ZvcihsIGluIG4pYz0haCYmbSYmdm9pZCAwIT09bVtsXSxmPShjP206bilbbF0scD15JiZjP3UoZixpKTpnJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBmP3UoRnVuY3Rpb24uY2FsbCxmKTpmLG0mJnMobSxsLGYsdCZhLlUpLGJbbF0hPWYmJm8oYixsLHApLGcmJl9bbF0hPWYmJihfW2xdPWYpfTtpLmNvcmU9cixhLkY9MSxhLkc9MixhLlM9NCxhLlA9OCxhLkI9MTYsYS5XPTMyLGEuVT02NCxhLlI9MTI4LHQuZXhwb3J0cz1hfSxmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPSFuKDcpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgdD9udWxsIT09dDpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0fX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMCkscj1uKDgpLG89bigxMikscz1uKDMwKShcInNyY1wiKSx1PUZ1bmN0aW9uLnRvU3RyaW5nLGE9KFwiXCIrdSkuc3BsaXQoXCJ0b1N0cmluZ1wiKTtuKDEwKS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiB1LmNhbGwodCl9LCh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sdSl7dmFyIGw9XCJmdW5jdGlvblwiPT10eXBlb2YgbjtsJiYobyhuLFwibmFtZVwiKXx8cihuLFwibmFtZVwiLGUpKSx0W2VdIT09biYmKGwmJihvKG4scyl8fHIobixzLHRbZV0/XCJcIit0W2VdOmEuam9pbihTdHJpbmcoZSkpKSksdD09PWk/dFtlXT1uOnU/dFtlXT90W2VdPW46cih0LGUsbik6KGRlbGV0ZSB0W2VdLHIodCxlLG4pKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcyYmdGhpc1tzXXx8dS5jYWxsKHRoaXMpfSl9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4hIXQoKX1jYXRjaCh0KXtyZXR1cm4hMH19fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxMykscj1uKDI1KTt0LmV4cG9ydHM9big0KT9mdW5jdGlvbih0LGUsbil7cmV0dXJuIGkuZih0LGUscigxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW4sdH19LGZ1bmN0aW9uKHQsZSl7dmFyIG49e30udG9TdHJpbmc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuLmNhbGwodCkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbih0LGUpe3ZhciBuPXQuZXhwb3J0cz17dmVyc2lvbjpcIjIuNS43XCJ9O1wibnVtYmVyXCI9PXR5cGVvZiBfX2UmJihfX2U9bil9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDE0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2lmKGkodCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gobil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5jYWxsKGUsbil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gdC5jYWxsKGUsbixpKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLGkscil7cmV0dXJuIHQuY2FsbChlLG4saSxyKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKHQsZSl7dmFyIG49e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uY2FsbCh0LGUpfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMikscj1uKDQxKSxvPW4oMjkpLHM9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZj1uKDQpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUsbil7aWYoaSh0KSxlPW8oZSwhMCksaShuKSxyKXRyeXtyZXR1cm4gcyh0LGUsbil9Y2F0Y2godCl7fWlmKFwiZ2V0XCJpbiBufHxcInNldFwiaW4gbil0aHJvdyBUeXBlRXJyb3IoXCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCFcIik7cmV0dXJuXCJ2YWx1ZVwiaW4gbiYmKHRbZV09bi52YWx1ZSksdH19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGEgZnVuY3Rpb24hXCIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9e319LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09dCl0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIrdCk7cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9big3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXQmJmkoZnVuY3Rpb24oKXtlP3QuY2FsbChudWxsLGZ1bmN0aW9uKCl7fSwxKTp0LmNhbGwobnVsbCl9KX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDIzKSxyPW4oMTYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaShyKHQpKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDUzKSxyPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP3IoaSh0KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTEpLHI9bigyMyksbz1uKDI4KSxzPW4oMTkpLHU9big2NCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49MT09dCxhPTI9PXQsbD0zPT10LGM9ND09dCxmPTY9PXQscD01PT10fHxmLGg9ZXx8dTtyZXR1cm4gZnVuY3Rpb24oZSx1LGQpe2Zvcih2YXIgdixnLHk9byhlKSxtPXIoeSksYj1pKHUsZCwzKSxfPXMobS5sZW5ndGgpLHg9MCx3PW4/aChlLF8pOmE/aChlLDApOnZvaWQgMDtfPng7eCsrKWlmKChwfHx4IGluIG0pJiYodj1tW3hdLGc9Yih2LHgseSksdCkpaWYobil3W3hdPWc7ZWxzZSBpZihnKXN3aXRjaCh0KXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiB2O2Nhc2UgNjpyZXR1cm4geDtjYXNlIDI6dy5wdXNoKHYpfWVsc2UgaWYoYylyZXR1cm4hMTtyZXR1cm4gZj8tMTpsfHxjP2M6d319fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big1KSxyPW4oMCkuZG9jdW1lbnQsbz1pKHIpJiZpKHIuY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvP3IuY3JlYXRlRWxlbWVudCh0KTp7fX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPVwiY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mXCIuc3BsaXQoXCIsXCIpfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big5KTt0LmV4cG9ydHM9T2JqZWN0KFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuXCJTdHJpbmdcIj09aSh0KT90LnNwbGl0KFwiXCIpOk9iamVjdCh0KX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPSExfSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDEzKS5mLHI9bigxMiksbz1uKDEpKFwidG9TdHJpbmdUYWdcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt0JiYhcih0PW4/dDp0LnByb3RvdHlwZSxvKSYmaSh0LG8se2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTplfSl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big0OSkoXCJrZXlzXCIpLHI9bigzMCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpW3RdfHwoaVt0XT1yKHQpKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDE2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChpKHQpKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDUpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFpKHQpKXJldHVybiB0O3ZhciBuLHI7aWYoZSYmXCJmdW5jdGlvblwiPT10eXBlb2Yobj10LnRvU3RyaW5nKSYmIWkocj1uLmNhbGwodCkpKXJldHVybiByO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mKG49dC52YWx1ZU9mKSYmIWkocj1uLmNhbGwodCkpKXJldHVybiByO2lmKCFlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhaShyPW4uY2FsbCh0KSkpcmV0dXJuIHI7dGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpfX0sZnVuY3Rpb24odCxlKXt2YXIgbj0wLGk9TWF0aC5yYW5kb20oKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJTeW1ib2woXCIuY29uY2F0KHZvaWQgMD09PXQ/XCJcIjp0LFwiKV9cIiwoKytuK2kpLnRvU3RyaW5nKDM2KSl9fSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9bigwKSxyPW4oMTIpLG89big5KSxzPW4oNjcpLHU9bigyOSksYT1uKDcpLGw9big3NykuZixjPW4oNDUpLmYsZj1uKDEzKS5mLHA9big1MSkudHJpbSxoPWkuTnVtYmVyLGQ9aCx2PWgucHJvdG90eXBlLGc9XCJOdW1iZXJcIj09byhuKDQ0KSh2KSkseT1cInRyaW1cImluIFN0cmluZy5wcm90b3R5cGUsbT1mdW5jdGlvbih0KXt2YXIgZT11KHQsITEpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiZlLmxlbmd0aD4yKXtlPXk/ZS50cmltKCk6cChlLDMpO3ZhciBuLGkscixvPWUuY2hhckNvZGVBdCgwKTtpZig0Mz09PW98fDQ1PT09byl7aWYoODg9PT0obj1lLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1uKXJldHVybiBOYU59ZWxzZSBpZig0OD09PW8pe3N3aXRjaChlLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODppPTIscj00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOmk9OCxyPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK2V9Zm9yKHZhciBzLGE9ZS5zbGljZSgyKSxsPTAsYz1hLmxlbmd0aDtsPGM7bCsrKWlmKChzPWEuY2hhckNvZGVBdChsKSk8NDh8fHM+cilyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChhLGkpfX1yZXR1cm4rZX07aWYoIWgoXCIgMG8xXCIpfHwhaChcIjBiMVwiKXx8aChcIisweDFcIikpe2g9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDwxPzA6dCxuPXRoaXM7cmV0dXJuIG4gaW5zdGFuY2VvZiBoJiYoZz9hKGZ1bmN0aW9uKCl7di52YWx1ZU9mLmNhbGwobil9KTpcIk51bWJlclwiIT1vKG4pKT9zKG5ldyBkKG0oZSkpLG4saCk6bShlKX07Zm9yKHZhciBiLF89big0KT9sKGQpOlwiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXJcIi5zcGxpdChcIixcIikseD0wO18ubGVuZ3RoPng7eCsrKXIoZCxiPV9beF0pJiYhcihoLGIpJiZmKGgsYixjKGQsYikpO2gucHJvdG90eXBlPXYsdi5jb25zdHJ1Y3Rvcj1oLG4oNikoaSxcIk51bWJlclwiLGgpfX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGkodCl7cmV0dXJuIDAhPT10JiYoISghQXJyYXkuaXNBcnJheSh0KXx8MCE9PXQubGVuZ3RoKXx8IXQpfWZ1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIXQuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJ1bmRlZmluZWRcIiksbnVsbD09PXQmJih0PVwibnVsbFwiKSwhMT09PXQmJih0PVwiZmFsc2VcIiksLTEhPT10LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGUudHJpbSgpKX1mdW5jdGlvbiBzKHQsZSxuLGkpe3JldHVybiB0LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gbyhpKHQsbiksZSl9KX1mdW5jdGlvbiB1KHQpe3JldHVybiB0LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4hdC4kaXNMYWJlbH0pfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4ucmVkdWNlKGZ1bmN0aW9uKG4saSl7cmV0dXJuIGlbdF0mJmlbdF0ubGVuZ3RoPyhuLnB1c2goeyRncm91cExhYmVsOmlbZV0sJGlzTGFiZWw6ITB9KSxuLmNvbmNhdChpW3RdKSk6bn0sW10pfX1mdW5jdGlvbiBsKHQsZSxpLHIsbyl7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiB1Lm1hcChmdW5jdGlvbih1KXt2YXIgYTtpZighdVtpXSlyZXR1cm4gY29uc29sZS53YXJuKFwiT3B0aW9ucyBwYXNzZWQgdG8gdnVlLW11bHRpc2VsZWN0IGRvIG5vdCBjb250YWluIGdyb3VwcywgZGVzcGl0ZSB0aGUgY29uZmlnLlwiKSxbXTt2YXIgbD1zKHVbaV0sdCxlLG8pO3JldHVybiBsLmxlbmd0aD8oYT17fSxuLmkoZC5hKShhLHIsdVtyXSksbi5pKGQuYSkoYSxpLGwpLGEpOltdfSl9fXZhciBjPW4oNTkpLGY9big1NCkscD0obi5uKGYpLG4oOTUpKSxoPShuLm4ocCksbigzMSkpLGQ9KG4ubihoKSxuKDU4KSksdj1uKDkxKSxnPShuLm4odiksbig5OCkpLHk9KG4ubihnKSxuKDkyKSksbT0obi5uKHkpLG4oODgpKSxiPShuLm4obSksbig5NykpLF89KG4ubihiKSxuKDg5KSkseD0obi5uKF8pLG4oOTYpKSx3PShuLm4oeCksbig5MykpLFM9KG4ubih3KSxuKDkwKSksTz0obi5uKFMpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCksbj0wO248dDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiBlKHQpfSx0KX19KTtlLmE9e2RhdGE6ZnVuY3Rpb24oKXtyZXR1cm57c2VhcmNoOlwiXCIsaXNPcGVuOiExLHByZWZlcnJlZE9wZW5EaXJlY3Rpb246XCJiZWxvd1wiLG9wdGltaXplZEhlaWdodDp0aGlzLm1heEhlaWdodH19LHByb3BzOntpbnRlcm5hbFNlYXJjaDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LG9wdGlvbnM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITB9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdmFsdWU6e3R5cGU6bnVsbCxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuW119fSx0cmFja0J5Ont0eXBlOlN0cmluZ30sbGFiZWw6e3R5cGU6U3RyaW5nfSxzZWFyY2hhYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sY2xlYXJPblNlbGVjdDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGhpZGVTZWxlY3RlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiU2VsZWN0IG9wdGlvblwifSxhbGxvd0VtcHR5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0scmVzZXRBZnRlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNsb3NlT25TZWxlY3Q6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxjdXN0b21MYWJlbDp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCk/XCJcIjplP3RbZV06dH19LHRhZ2dhYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGFnUGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJQcmVzcyBlbnRlciB0byBjcmVhdGUgYSB0YWdcIn0sdGFnUG9zaXRpb246e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJ0b3BcIn0sbWF4Ont0eXBlOltOdW1iZXIsQm9vbGVhbl0sZGVmYXVsdDohMX0saWQ6e2RlZmF1bHQ6bnVsbH0sb3B0aW9uc0xpbWl0Ont0eXBlOk51bWJlcixkZWZhdWx0OjFlM30sZ3JvdXBWYWx1ZXM6e3R5cGU6U3RyaW5nfSxncm91cExhYmVsOnt0eXBlOlN0cmluZ30sZ3JvdXBTZWxlY3Q6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxibG9ja0tleXM6e3R5cGU6QXJyYXksZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybltdfX0scHJlc2VydmVTZWFyY2g6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwcmVzZWxlY3RGaXJzdDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxtb3VudGVkOmZ1bmN0aW9uKCl7IXRoaXMubXVsdGlwbGUmJnRoaXMubWF4JiZjb25zb2xlLndhcm4oXCJbVnVlLU11bHRpc2VsZWN0IHdhcm5dOiBNYXggcHJvcCBzaG91bGQgbm90IGJlIHVzZWQgd2hlbiBwcm9wIE11bHRpcGxlIGVxdWFscyBmYWxzZS5cIiksdGhpcy5wcmVzZWxlY3RGaXJzdCYmIXRoaXMuaW50ZXJuYWxWYWx1ZS5sZW5ndGgmJnRoaXMub3B0aW9ucy5sZW5ndGgmJnRoaXMuc2VsZWN0KHRoaXMuZmlsdGVyZWRPcHRpb25zWzBdKX0sY29tcHV0ZWQ6e2ludGVybmFsVmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXx8MD09PXRoaXMudmFsdWU/QXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKT90aGlzLnZhbHVlOlt0aGlzLnZhbHVlXTpbXX0sZmlsdGVyZWRPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zZWFyY2h8fFwiXCIsZT10LnRvTG93ZXJDYXNlKCkudHJpbSgpLG49dGhpcy5vcHRpb25zLmNvbmNhdCgpO3JldHVybiBuPXRoaXMuaW50ZXJuYWxTZWFyY2g/dGhpcy5ncm91cFZhbHVlcz90aGlzLmZpbHRlckFuZEZsYXQobixlLHRoaXMubGFiZWwpOnMobixlLHRoaXMubGFiZWwsdGhpcy5jdXN0b21MYWJlbCk6dGhpcy5ncm91cFZhbHVlcz9hKHRoaXMuZ3JvdXBWYWx1ZXMsdGhpcy5ncm91cExhYmVsKShuKTpuLG49dGhpcy5oaWRlU2VsZWN0ZWQ/bi5maWx0ZXIocih0aGlzLmlzU2VsZWN0ZWQpKTpuLHRoaXMudGFnZ2FibGUmJmUubGVuZ3RoJiYhdGhpcy5pc0V4aXN0aW5nT3B0aW9uKGUpJiYoXCJib3R0b21cIj09PXRoaXMudGFnUG9zaXRpb24/bi5wdXNoKHtpc1RhZzohMCxsYWJlbDp0fSk6bi51bnNoaWZ0KHtpc1RhZzohMCxsYWJlbDp0fSkpLG4uc2xpY2UoMCx0aGlzLm9wdGlvbnNMaW1pdCl9LHZhbHVlS2V5czpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMudHJhY2tCeT90aGlzLmludGVybmFsVmFsdWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlW3QudHJhY2tCeV19KTp0aGlzLmludGVybmFsVmFsdWV9LG9wdGlvbktleXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybih0aGlzLmdyb3VwVmFsdWVzP3RoaXMuZmxhdEFuZFN0cmlwKHRoaXMub3B0aW9ucyk6dGhpcy5vcHRpb25zKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY3VzdG9tTGFiZWwoZSx0LmxhYmVsKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCl9KX0sY3VycmVudE9wdGlvbkxhYmVsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsdGlwbGU/dGhpcy5zZWFyY2hhYmxlP1wiXCI6dGhpcy5wbGFjZWhvbGRlcjp0aGlzLmludGVybmFsVmFsdWUubGVuZ3RoP3RoaXMuZ2V0T3B0aW9uTGFiZWwodGhpcy5pbnRlcm5hbFZhbHVlWzBdKTp0aGlzLnNlYXJjaGFibGU/XCJcIjp0aGlzLnBsYWNlaG9sZGVyfX0sd2F0Y2g6e2ludGVybmFsVmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlc2V0QWZ0ZXImJnRoaXMuaW50ZXJuYWxWYWx1ZS5sZW5ndGgmJih0aGlzLnNlYXJjaD1cIlwiLHRoaXMuJGVtaXQoXCJpbnB1dFwiLHRoaXMubXVsdGlwbGU/W106bnVsbCkpfSxzZWFyY2g6ZnVuY3Rpb24oKXt0aGlzLiRlbWl0KFwic2VhcmNoLWNoYW5nZVwiLHRoaXMuc2VhcmNoLHRoaXMuaWQpfX0sbWV0aG9kczp7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWx0aXBsZT90aGlzLmludGVybmFsVmFsdWU6MD09PXRoaXMuaW50ZXJuYWxWYWx1ZS5sZW5ndGg/bnVsbDp0aGlzLmludGVybmFsVmFsdWVbMF19LGZpbHRlckFuZEZsYXQ6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBPKGwoZSxuLHRoaXMuZ3JvdXBWYWx1ZXMsdGhpcy5ncm91cExhYmVsLHRoaXMuY3VzdG9tTGFiZWwpLGEodGhpcy5ncm91cFZhbHVlcyx0aGlzLmdyb3VwTGFiZWwpKSh0KX0sZmxhdEFuZFN0cmlwOmZ1bmN0aW9uKHQpe3JldHVybiBPKGEodGhpcy5ncm91cFZhbHVlcyx0aGlzLmdyb3VwTGFiZWwpLHUpKHQpfSx1cGRhdGVTZWFyY2g6ZnVuY3Rpb24odCl7dGhpcy5zZWFyY2g9dH0saXNFeGlzdGluZ09wdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4hIXRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25LZXlzLmluZGV4T2YodCk+LTF9LGlzU2VsZWN0ZWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50cmFja0J5P3RbdGhpcy50cmFja0J5XTp0O3JldHVybiB0aGlzLnZhbHVlS2V5cy5pbmRleE9mKGUpPi0xfSxpc09wdGlvbkRpc2FibGVkOmZ1bmN0aW9uKHQpe3JldHVybiEhdC4kaXNEaXNhYmxlZH0sZ2V0T3B0aW9uTGFiZWw6ZnVuY3Rpb24odCl7aWYoaSh0KSlyZXR1cm5cIlwiO2lmKHQuaXNUYWcpcmV0dXJuIHQubGFiZWw7aWYodC4kaXNMYWJlbClyZXR1cm4gdC4kZ3JvdXBMYWJlbDt2YXIgZT10aGlzLmN1c3RvbUxhYmVsKHQsdGhpcy5sYWJlbCk7cmV0dXJuIGkoZSk/XCJcIjplfSxzZWxlY3Q6ZnVuY3Rpb24odCxlKXtpZih0LiRpc0xhYmVsJiZ0aGlzLmdyb3VwU2VsZWN0KXJldHVybiB2b2lkIHRoaXMuc2VsZWN0R3JvdXAodCk7aWYoISgtMSE9PXRoaXMuYmxvY2tLZXlzLmluZGV4T2YoZSl8fHRoaXMuZGlzYWJsZWR8fHQuJGlzRGlzYWJsZWR8fHQuJGlzTGFiZWwpJiYoIXRoaXMubWF4fHwhdGhpcy5tdWx0aXBsZXx8dGhpcy5pbnRlcm5hbFZhbHVlLmxlbmd0aCE9PXRoaXMubWF4KSYmKFwiVGFiXCIhPT1lfHx0aGlzLnBvaW50ZXJEaXJ0eSkpe2lmKHQuaXNUYWcpdGhpcy4kZW1pdChcInRhZ1wiLHQubGFiZWwsdGhpcy5pZCksdGhpcy5zZWFyY2g9XCJcIix0aGlzLmNsb3NlT25TZWxlY3QmJiF0aGlzLm11bHRpcGxlJiZ0aGlzLmRlYWN0aXZhdGUoKTtlbHNle2lmKHRoaXMuaXNTZWxlY3RlZCh0KSlyZXR1cm4gdm9pZChcIlRhYlwiIT09ZSYmdGhpcy5yZW1vdmVFbGVtZW50KHQpKTt0aGlzLiRlbWl0KFwic2VsZWN0XCIsdCx0aGlzLmlkKSx0aGlzLm11bHRpcGxlP3RoaXMuJGVtaXQoXCJpbnB1dFwiLHRoaXMuaW50ZXJuYWxWYWx1ZS5jb25jYXQoW3RdKSx0aGlzLmlkKTp0aGlzLiRlbWl0KFwiaW5wdXRcIix0LHRoaXMuaWQpLHRoaXMuY2xlYXJPblNlbGVjdCYmKHRoaXMuc2VhcmNoPVwiXCIpfXRoaXMuY2xvc2VPblNlbGVjdCYmdGhpcy5kZWFjdGl2YXRlKCl9fSxzZWxlY3RHcm91cDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5vcHRpb25zLmZpbmQoZnVuY3Rpb24obil7cmV0dXJuIG5bZS5ncm91cExhYmVsXT09PXQuJGdyb3VwTGFiZWx9KTtpZihuKWlmKHRoaXMud2hvbGVHcm91cFNlbGVjdGVkKG4pKXt0aGlzLiRlbWl0KFwicmVtb3ZlXCIsblt0aGlzLmdyb3VwVmFsdWVzXSx0aGlzLmlkKTt2YXIgaT10aGlzLmludGVybmFsVmFsdWUuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybi0xPT09bltlLmdyb3VwVmFsdWVzXS5pbmRleE9mKHQpfSk7dGhpcy4kZW1pdChcImlucHV0XCIsaSx0aGlzLmlkKX1lbHNle3ZhciByPW5bdGhpcy5ncm91cFZhbHVlc10uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiEoZS5pc09wdGlvbkRpc2FibGVkKHQpfHxlLmlzU2VsZWN0ZWQodCkpfSk7dGhpcy4kZW1pdChcInNlbGVjdFwiLHIsdGhpcy5pZCksdGhpcy4kZW1pdChcImlucHV0XCIsdGhpcy5pbnRlcm5hbFZhbHVlLmNvbmNhdChyKSx0aGlzLmlkKX19LHdob2xlR3JvdXBTZWxlY3RlZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0W3RoaXMuZ3JvdXBWYWx1ZXNdLmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiBlLmlzU2VsZWN0ZWQodCl8fGUuaXNPcHRpb25EaXNhYmxlZCh0KX0pfSx3aG9sZUdyb3VwRGlzYWJsZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRbdGhpcy5ncm91cFZhbHVlc10uZXZlcnkodGhpcy5pc09wdGlvbkRpc2FibGVkKX0scmVtb3ZlRWxlbWVudDpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO2lmKCF0aGlzLmRpc2FibGVkJiYhdC4kaXNEaXNhYmxlZCl7aWYoIXRoaXMuYWxsb3dFbXB0eSYmdGhpcy5pbnRlcm5hbFZhbHVlLmxlbmd0aDw9MSlyZXR1cm4gdm9pZCB0aGlzLmRlYWN0aXZhdGUoKTt2YXIgaT1cIm9iamVjdFwiPT09bi5pKGMuYSkodCk/dGhpcy52YWx1ZUtleXMuaW5kZXhPZih0W3RoaXMudHJhY2tCeV0pOnRoaXMudmFsdWVLZXlzLmluZGV4T2YodCk7aWYodGhpcy4kZW1pdChcInJlbW92ZVwiLHQsdGhpcy5pZCksdGhpcy5tdWx0aXBsZSl7dmFyIHI9dGhpcy5pbnRlcm5hbFZhbHVlLnNsaWNlKDAsaSkuY29uY2F0KHRoaXMuaW50ZXJuYWxWYWx1ZS5zbGljZShpKzEpKTt0aGlzLiRlbWl0KFwiaW5wdXRcIixyLHRoaXMuaWQpfWVsc2UgdGhpcy4kZW1pdChcImlucHV0XCIsbnVsbCx0aGlzLmlkKTt0aGlzLmNsb3NlT25TZWxlY3QmJmUmJnRoaXMuZGVhY3RpdmF0ZSgpfX0scmVtb3ZlTGFzdEVsZW1lbnQ6ZnVuY3Rpb24oKXstMT09PXRoaXMuYmxvY2tLZXlzLmluZGV4T2YoXCJEZWxldGVcIikmJjA9PT10aGlzLnNlYXJjaC5sZW5ndGgmJkFycmF5LmlzQXJyYXkodGhpcy5pbnRlcm5hbFZhbHVlKSYmdGhpcy5pbnRlcm5hbFZhbHVlLmxlbmd0aCYmdGhpcy5yZW1vdmVFbGVtZW50KHRoaXMuaW50ZXJuYWxWYWx1ZVt0aGlzLmludGVybmFsVmFsdWUubGVuZ3RoLTFdLCExKX0sYWN0aXZhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuaXNPcGVufHx0aGlzLmRpc2FibGVkfHwodGhpcy5hZGp1c3RQb3NpdGlvbigpLHRoaXMuZ3JvdXBWYWx1ZXMmJjA9PT10aGlzLnBvaW50ZXImJnRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCYmKHRoaXMucG9pbnRlcj0xKSx0aGlzLmlzT3Blbj0hMCx0aGlzLnNlYXJjaGFibGU/KHRoaXMucHJlc2VydmVTZWFyY2h8fCh0aGlzLnNlYXJjaD1cIlwiKSx0aGlzLiRuZXh0VGljayhmdW5jdGlvbigpe3JldHVybiB0LiRyZWZzLnNlYXJjaC5mb2N1cygpfSkpOnRoaXMuJGVsLmZvY3VzKCksdGhpcy4kZW1pdChcIm9wZW5cIix0aGlzLmlkKSl9LGRlYWN0aXZhdGU6ZnVuY3Rpb24oKXt0aGlzLmlzT3BlbiYmKHRoaXMuaXNPcGVuPSExLHRoaXMuc2VhcmNoYWJsZT90aGlzLiRyZWZzLnNlYXJjaC5ibHVyKCk6dGhpcy4kZWwuYmx1cigpLHRoaXMucHJlc2VydmVTZWFyY2h8fCh0aGlzLnNlYXJjaD1cIlwiKSx0aGlzLiRlbWl0KFwiY2xvc2VcIix0aGlzLmdldFZhbHVlKCksdGhpcy5pZCkpfSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzLmlzT3Blbj90aGlzLmRlYWN0aXZhdGUoKTp0aGlzLmFjdGl2YXRlKCl9LGFkanVzdFBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyl7dmFyIHQ9dGhpcy4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLGU9d2luZG93LmlubmVySGVpZ2h0LXRoaXMuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtlPnRoaXMubWF4SGVpZ2h0fHxlPnR8fFwiYmVsb3dcIj09PXRoaXMub3BlbkRpcmVjdGlvbnx8XCJib3R0b21cIj09PXRoaXMub3BlbkRpcmVjdGlvbj8odGhpcy5wcmVmZXJyZWRPcGVuRGlyZWN0aW9uPVwiYmVsb3dcIix0aGlzLm9wdGltaXplZEhlaWdodD1NYXRoLm1pbihlLTQwLHRoaXMubWF4SGVpZ2h0KSk6KHRoaXMucHJlZmVycmVkT3BlbkRpcmVjdGlvbj1cImFib3ZlXCIsdGhpcy5vcHRpbWl6ZWRIZWlnaHQ9TWF0aC5taW4odC00MCx0aGlzLm1heEhlaWdodCkpfX19fX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciBpPW4oNTQpLHI9KG4ubihpKSxuKDMxKSk7bi5uKHIpO2UuYT17ZGF0YTpmdW5jdGlvbigpe3JldHVybntwb2ludGVyOjAscG9pbnRlckRpcnR5OiExfX0scHJvcHM6e3Nob3dQb2ludGVyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sb3B0aW9uSGVpZ2h0Ont0eXBlOk51bWJlcixkZWZhdWx0OjQwfX0sY29tcHV0ZWQ6e3BvaW50ZXJQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvaW50ZXIqdGhpcy5vcHRpb25IZWlnaHR9LHZpc2libGVFbGVtZW50czpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGltaXplZEhlaWdodC90aGlzLm9wdGlvbkhlaWdodH19LHdhdGNoOntmaWx0ZXJlZE9wdGlvbnM6ZnVuY3Rpb24oKXt0aGlzLnBvaW50ZXJBZGp1c3QoKX0saXNPcGVuOmZ1bmN0aW9uKCl7dGhpcy5wb2ludGVyRGlydHk9ITF9fSxtZXRob2RzOntvcHRpb25IaWdobGlnaHQ6ZnVuY3Rpb24odCxlKXtyZXR1cm57XCJtdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHRcIjp0PT09dGhpcy5wb2ludGVyJiZ0aGlzLnNob3dQb2ludGVyLFwibXVsdGlzZWxlY3RfX29wdGlvbi0tc2VsZWN0ZWRcIjp0aGlzLmlzU2VsZWN0ZWQoZSl9fSxncm91cEhpZ2hsaWdodDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYoIXRoaXMuZ3JvdXBTZWxlY3QpcmV0dXJuW1wibXVsdGlzZWxlY3RfX29wdGlvbi0tZ3JvdXBcIixcIm11bHRpc2VsZWN0X19vcHRpb24tLWRpc2FibGVkXCJdO3ZhciBpPXRoaXMub3B0aW9ucy5maW5kKGZ1bmN0aW9uKHQpe3JldHVybiB0W24uZ3JvdXBMYWJlbF09PT1lLiRncm91cExhYmVsfSk7cmV0dXJuIGkmJiF0aGlzLndob2xlR3JvdXBEaXNhYmxlZChpKT9bXCJtdWx0aXNlbGVjdF9fb3B0aW9uLS1ncm91cFwiLHtcIm11bHRpc2VsZWN0X19vcHRpb24tLWhpZ2hsaWdodFwiOnQ9PT10aGlzLnBvaW50ZXImJnRoaXMuc2hvd1BvaW50ZXJ9LHtcIm11bHRpc2VsZWN0X19vcHRpb24tLWdyb3VwLXNlbGVjdGVkXCI6dGhpcy53aG9sZUdyb3VwU2VsZWN0ZWQoaSl9XTpcIm11bHRpc2VsZWN0X19vcHRpb24tLWRpc2FibGVkXCJ9LGFkZFBvaW50ZXJFbGVtZW50OmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwiRW50ZXJcIixlPXQua2V5O3RoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aD4wJiZ0aGlzLnNlbGVjdCh0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLnBvaW50ZXJdLGUpLHRoaXMucG9pbnRlclJlc2V0KCl9LHBvaW50ZXJGb3J3YXJkOmZ1bmN0aW9uKCl7dGhpcy5wb2ludGVyPHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aC0xJiYodGhpcy5wb2ludGVyKyssdGhpcy4kcmVmcy5saXN0LnNjcm9sbFRvcDw9dGhpcy5wb2ludGVyUG9zaXRpb24tKHRoaXMudmlzaWJsZUVsZW1lbnRzLTEpKnRoaXMub3B0aW9uSGVpZ2h0JiYodGhpcy4kcmVmcy5saXN0LnNjcm9sbFRvcD10aGlzLnBvaW50ZXJQb3NpdGlvbi0odGhpcy52aXNpYmxlRWxlbWVudHMtMSkqdGhpcy5vcHRpb25IZWlnaHQpLHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMucG9pbnRlcl0mJnRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMucG9pbnRlcl0uJGlzTGFiZWwmJiF0aGlzLmdyb3VwU2VsZWN0JiZ0aGlzLnBvaW50ZXJGb3J3YXJkKCkpLHRoaXMucG9pbnRlckRpcnR5PSEwfSxwb2ludGVyQmFja3dhcmQ6ZnVuY3Rpb24oKXt0aGlzLnBvaW50ZXI+MD8odGhpcy5wb2ludGVyLS0sdGhpcy4kcmVmcy5saXN0LnNjcm9sbFRvcD49dGhpcy5wb2ludGVyUG9zaXRpb24mJih0aGlzLiRyZWZzLmxpc3Quc2Nyb2xsVG9wPXRoaXMucG9pbnRlclBvc2l0aW9uKSx0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLnBvaW50ZXJdJiZ0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLnBvaW50ZXJdLiRpc0xhYmVsJiYhdGhpcy5ncm91cFNlbGVjdCYmdGhpcy5wb2ludGVyQmFja3dhcmQoKSk6dGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5wb2ludGVyXSYmdGhpcy5maWx0ZXJlZE9wdGlvbnNbMF0uJGlzTGFiZWwmJiF0aGlzLmdyb3VwU2VsZWN0JiZ0aGlzLnBvaW50ZXJGb3J3YXJkKCksdGhpcy5wb2ludGVyRGlydHk9ITB9LHBvaW50ZXJSZXNldDpmdW5jdGlvbigpe3RoaXMuY2xvc2VPblNlbGVjdCYmKHRoaXMucG9pbnRlcj0wLHRoaXMuJHJlZnMubGlzdCYmKHRoaXMuJHJlZnMubGlzdC5zY3JvbGxUb3A9MCkpfSxwb2ludGVyQWRqdXN0OmZ1bmN0aW9uKCl7dGhpcy5wb2ludGVyPj10aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGgtMSYmKHRoaXMucG9pbnRlcj10aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGg/dGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoLTE6MCksdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoPjAmJnRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMucG9pbnRlcl0uJGlzTGFiZWwmJiF0aGlzLmdyb3VwU2VsZWN0JiZ0aGlzLnBvaW50ZXJGb3J3YXJkKCl9LHBvaW50ZXJTZXQ6ZnVuY3Rpb24odCl7dGhpcy5wb2ludGVyPXQsdGhpcy5wb2ludGVyRGlydHk9ITB9fX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1uKDM2KSxyPW4oNzQpLG89bigxNSkscz1uKDE4KTt0LmV4cG9ydHM9big3MikoQXJyYXksXCJBcnJheVwiLGZ1bmN0aW9uKHQsZSl7dGhpcy5fdD1zKHQpLHRoaXMuX2k9MCx0aGlzLl9rPWV9LGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdCxlPXRoaXMuX2ssbj10aGlzLl9pKys7cmV0dXJuIXR8fG4+PXQubGVuZ3RoPyh0aGlzLl90PXZvaWQgMCxyKDEpKTpcImtleXNcIj09ZT9yKDAsbik6XCJ2YWx1ZXNcIj09ZT9yKDAsdFtuXSk6cigwLFtuLHRbbl1dKX0sXCJ2YWx1ZXNcIiksby5Bcmd1bWVudHM9by5BcnJheSxpKFwia2V5c1wiKSxpKFwidmFsdWVzXCIpLGkoXCJlbnRyaWVzXCIpfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9bigzMSkscj0obi5uKGkpLG4oMzIpKSxvPW4oMzMpO2UuYT17bmFtZTpcInZ1ZS1tdWx0aXNlbGVjdFwiLG1peGluczpbci5hLG8uYV0scHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0sc2VsZWN0TGFiZWw6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJQcmVzcyBlbnRlciB0byBzZWxlY3RcIn0sc2VsZWN0R3JvdXBMYWJlbDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlByZXNzIGVudGVyIHRvIHNlbGVjdCBncm91cFwifSxzZWxlY3RlZExhYmVsOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiU2VsZWN0ZWRcIn0sZGVzZWxlY3RMYWJlbDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlByZXNzIGVudGVyIHRvIHJlbW92ZVwifSxkZXNlbGVjdEdyb3VwTGFiZWw6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJQcmVzcyBlbnRlciB0byBkZXNlbGVjdCBncm91cFwifSxzaG93TGFiZWxzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sbGltaXQ6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6OTk5OTl9LG1heEhlaWdodDp7dHlwZTpOdW1iZXIsZGVmYXVsdDozMDB9LGxpbWl0VGV4dDp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OmZ1bmN0aW9uKHQpe3JldHVyblwiYW5kIFwiLmNvbmNhdCh0LFwiIG1vcmVcIil9fSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxvcGVuRGlyZWN0aW9uOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiXCJ9LHNob3dOb09wdGlvbnM6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxzaG93Tm9SZXN1bHRzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sdGFiaW5kZXg6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH19LGNvbXB1dGVkOntpc1NpbmdsZUxhYmVsVmlzaWJsZTpmdW5jdGlvbigpe3JldHVybih0aGlzLnNpbmdsZVZhbHVlfHwwPT09dGhpcy5zaW5nbGVWYWx1ZSkmJighdGhpcy5pc09wZW58fCF0aGlzLnNlYXJjaGFibGUpJiYhdGhpcy52aXNpYmxlVmFsdWVzLmxlbmd0aH0saXNQbGFjZWhvbGRlclZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4hKHRoaXMuaW50ZXJuYWxWYWx1ZS5sZW5ndGh8fHRoaXMuc2VhcmNoYWJsZSYmdGhpcy5pc09wZW4pfSx2aXNpYmxlVmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsdGlwbGU/dGhpcy5pbnRlcm5hbFZhbHVlLnNsaWNlKDAsdGhpcy5saW1pdCk6W119LHNpbmdsZVZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW50ZXJuYWxWYWx1ZVswXX0sZGVzZWxlY3RMYWJlbFRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93TGFiZWxzP3RoaXMuZGVzZWxlY3RMYWJlbDpcIlwifSxkZXNlbGVjdEdyb3VwTGFiZWxUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hvd0xhYmVscz90aGlzLmRlc2VsZWN0R3JvdXBMYWJlbDpcIlwifSxzZWxlY3RMYWJlbFRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93TGFiZWxzP3RoaXMuc2VsZWN0TGFiZWw6XCJcIn0sc2VsZWN0R3JvdXBMYWJlbFRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93TGFiZWxzP3RoaXMuc2VsZWN0R3JvdXBMYWJlbDpcIlwifSxzZWxlY3RlZExhYmVsVGV4dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNob3dMYWJlbHM/dGhpcy5zZWxlY3RlZExhYmVsOlwiXCJ9LGlucHV0U3R5bGU6ZnVuY3Rpb24oKXtpZih0aGlzLnNlYXJjaGFibGV8fHRoaXMubXVsdGlwbGUmJnRoaXMudmFsdWUmJnRoaXMudmFsdWUubGVuZ3RoKXJldHVybiB0aGlzLmlzT3Blbj97d2lkdGg6XCIxMDAlXCJ9Ont3aWR0aDpcIjBcIixwb3NpdGlvbjpcImFic29sdXRlXCIscGFkZGluZzpcIjBcIn19LGNvbnRlbnRTdHlsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMubGVuZ3RoP3tkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCJ9OntkaXNwbGF5OlwiYmxvY2tcIn19LGlzQWJvdmU6ZnVuY3Rpb24oKXtyZXR1cm5cImFib3ZlXCI9PT10aGlzLm9wZW5EaXJlY3Rpb258fFwidG9wXCI9PT10aGlzLm9wZW5EaXJlY3Rpb258fFwiYmVsb3dcIiE9PXRoaXMub3BlbkRpcmVjdGlvbiYmXCJib3R0b21cIiE9PXRoaXMub3BlbkRpcmVjdGlvbiYmXCJhYm92ZVwiPT09dGhpcy5wcmVmZXJyZWRPcGVuRGlyZWN0aW9ufSxzaG93U2VhcmNoSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWFyY2hhYmxlJiYoIXRoaXMuaGFzU2luZ2xlU2VsZWN0ZWRTbG90fHwhdGhpcy52aXNpYmxlU2luZ2xlVmFsdWUmJjAhPT10aGlzLnZpc2libGVTaW5nbGVWYWx1ZXx8dGhpcy5pc09wZW4pfX19fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxKShcInVuc2NvcGFibGVzXCIpLHI9QXJyYXkucHJvdG90eXBlO3ZvaWQgMD09cltpXSYmbig4KShyLGkse30pLHQuZXhwb3J0cz1mdW5jdGlvbih0KXtyW2ldW3RdPSEwfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTgpLHI9bigxOSksbz1uKDg1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixzKXt2YXIgdSxhPWkoZSksbD1yKGEubGVuZ3RoKSxjPW8ocyxsKTtpZih0JiZuIT1uKXtmb3IoO2w+YzspaWYoKHU9YVtjKytdKSE9dSlyZXR1cm4hMH1lbHNlIGZvcig7bD5jO2MrKylpZigodHx8YyBpbiBhKSYmYVtjXT09PW4pcmV0dXJuIHR8fGN8fDA7cmV0dXJuIXQmJi0xfX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDkpLHI9bigxKShcInRvU3RyaW5nVGFnXCIpLG89XCJBcmd1bWVudHNcIj09aShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLHM9ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbZV19Y2F0Y2godCl7fX07dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLG4sdTtyZXR1cm4gdm9pZCAwPT09dD9cIlVuZGVmaW5lZFwiOm51bGw9PT10P1wiTnVsbFwiOlwic3RyaW5nXCI9PXR5cGVvZihuPXMoZT1PYmplY3QodCkscikpP246bz9pKGUpOlwiT2JqZWN0XCI9PSh1PWkoZSkpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNhbGxlZT9cIkFyZ3VtZW50c1wiOnV9fSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9bigyKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1pKHRoaXMpLGU9XCJcIjtyZXR1cm4gdC5nbG9iYWwmJihlKz1cImdcIiksdC5pZ25vcmVDYXNlJiYoZSs9XCJpXCIpLHQubXVsdGlsaW5lJiYoZSs9XCJtXCIpLHQudW5pY29kZSYmKGUrPVwidVwiKSx0LnN0aWNreSYmKGUrPVwieVwiKSxlfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMCkuZG9jdW1lbnQ7dC5leHBvcnRzPWkmJmkuZG9jdW1lbnRFbGVtZW50fSxmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPSFuKDQpJiYhbig3KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkobigyMSkoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oOSk7dC5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVyblwiQXJyYXlcIj09aSh0KX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBpKHQpe3ZhciBlLG47dGhpcy5wcm9taXNlPW5ldyB0KGZ1bmN0aW9uKHQsaSl7aWYodm9pZCAwIT09ZXx8dm9pZCAwIT09bil0aHJvdyBUeXBlRXJyb3IoXCJCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvclwiKTtlPXQsbj1pfSksdGhpcy5yZXNvbHZlPXIoZSksdGhpcy5yZWplY3Q9cihuKX12YXIgcj1uKDE0KTt0LmV4cG9ydHMuZj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGkodCl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigyKSxyPW4oNzYpLG89bigyMikscz1uKDI3KShcIklFX1BST1RPXCIpLHU9ZnVuY3Rpb24oKXt9LGE9ZnVuY3Rpb24oKXt2YXIgdCxlPW4oMjEpKFwiaWZyYW1lXCIpLGk9by5sZW5ndGg7Zm9yKGUuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixuKDQwKS5hcHBlbmRDaGlsZChlKSxlLnNyYz1cImphdmFzY3JpcHQ6XCIsdD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQsdC5vcGVuKCksdC53cml0ZShcIjxzY3JpcHQ+ZG9jdW1lbnQuRj1PYmplY3Q8XFwvc2NyaXB0PlwiKSx0LmNsb3NlKCksYT10LkY7aS0tOylkZWxldGUgYS5wcm90b3R5cGVbb1tpXV07cmV0dXJuIGEoKX07dC5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIG51bGwhPT10Pyh1LnByb3RvdHlwZT1pKHQpLG49bmV3IHUsdS5wcm90b3R5cGU9bnVsbCxuW3NdPXQpOm49YSgpLHZvaWQgMD09PWU/bjpyKG4sZSl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big3OSkscj1uKDI1KSxvPW4oMTgpLHM9bigyOSksdT1uKDEyKSxhPW4oNDEpLGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtlLmY9big0KT9sOmZ1bmN0aW9uKHQsZSl7aWYodD1vKHQpLGU9cyhlLCEwKSxhKXRyeXtyZXR1cm4gbCh0LGUpfWNhdGNoKHQpe31pZih1KHQsZSkpcmV0dXJuIHIoIWkuZi5jYWxsKHQsZSksdFtlXSl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxMikscj1uKDE4KSxvPW4oMzcpKCExKSxzPW4oMjcpKFwiSUVfUFJPVE9cIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sdT1yKHQpLGE9MCxsPVtdO2ZvcihuIGluIHUpbiE9cyYmaSh1LG4pJiZsLnB1c2gobik7Zm9yKDtlLmxlbmd0aD5hOylpKHUsbj1lW2ErK10pJiYofm8obCxuKXx8bC5wdXNoKG4pKTtyZXR1cm4gbH19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDQ2KSxyPW4oMjIpO3QuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7cmV0dXJuIGkodCxyKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDIpLHI9big1KSxvPW4oNDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKGkodCkscihlKSYmZS5jb25zdHJ1Y3Rvcj09PXQpcmV0dXJuIGU7dmFyIG49by5mKHQpO3JldHVybigwLG4ucmVzb2x2ZSkoZSksbi5wcm9taXNlfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTApLHI9bigwKSxvPXJbXCJfX2NvcmUtanNfc2hhcmVkX19cIl18fChyW1wiX19jb3JlLWpzX3NoYXJlZF9fXCJdPXt9KTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bdF18fChvW3RdPXZvaWQgMCE9PWU/ZTp7fSl9KShcInZlcnNpb25zXCIsW10pLnB1c2goe3ZlcnNpb246aS52ZXJzaW9uLG1vZGU6bigyNCk/XCJwdXJlXCI6XCJnbG9iYWxcIixjb3B5cmlnaHQ6XCLCqSAyMDE4IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpXCJ9KX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMikscj1uKDE0KSxvPW4oMSkoXCJzcGVjaWVzXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLHM9aSh0KS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09c3x8dm9pZCAwPT0obj1pKHMpW29dKT9lOnIobil9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigzKSxyPW4oMTYpLG89big3KSxzPW4oODQpLHU9XCJbXCIrcytcIl1cIixhPVwi4oCLwoVcIixsPVJlZ0V4cChcIl5cIit1K3UrXCIqXCIpLGM9UmVnRXhwKHUrdStcIiokXCIpLGY9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXt9LHU9byhmdW5jdGlvbigpe3JldHVybiEhc1t0XSgpfHxhW3RdKCkhPWF9KSxsPXJbdF09dT9lKHApOnNbdF07biYmKHJbbl09bCksaShpLlAraS5GKnUsXCJTdHJpbmdcIixyKX0scD1mLnRyaW09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD1TdHJpbmcocih0KSksMSZlJiYodD10LnJlcGxhY2UobCxcIlwiKSksMiZlJiYodD10LnJlcGxhY2UoYyxcIlwiKSksdH07dC5leHBvcnRzPWZ9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG8scz1uKDExKSx1PW4oNjgpLGE9big0MCksbD1uKDIxKSxjPW4oMCksZj1jLnByb2Nlc3MscD1jLnNldEltbWVkaWF0ZSxoPWMuY2xlYXJJbW1lZGlhdGUsZD1jLk1lc3NhZ2VDaGFubmVsLHY9Yy5EaXNwYXRjaCxnPTAseT17fSxtPWZ1bmN0aW9uKCl7dmFyIHQ9K3RoaXM7aWYoeS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIGU9eVt0XTtkZWxldGUgeVt0XSxlKCl9fSxiPWZ1bmN0aW9uKHQpe20uY2FsbCh0LmRhdGEpfTtwJiZofHwocD1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO2FyZ3VtZW50cy5sZW5ndGg+bjspZS5wdXNoKGFyZ3VtZW50c1tuKytdKTtyZXR1cm4geVsrK2ddPWZ1bmN0aW9uKCl7dShcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6RnVuY3Rpb24odCksZSl9LGkoZyksZ30saD1mdW5jdGlvbih0KXtkZWxldGUgeVt0XX0sXCJwcm9jZXNzXCI9PW4oOSkoZik/aT1mdW5jdGlvbih0KXtmLm5leHRUaWNrKHMobSx0LDEpKX06diYmdi5ub3c/aT1mdW5jdGlvbih0KXt2Lm5vdyhzKG0sdCwxKSl9OmQ/KHI9bmV3IGQsbz1yLnBvcnQyLHIucG9ydDEub25tZXNzYWdlPWIsaT1zKG8ucG9zdE1lc3NhZ2UsbywxKSk6Yy5hZGRFdmVudExpc3RlbmVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwb3N0TWVzc2FnZSYmIWMuaW1wb3J0U2NyaXB0cz8oaT1mdW5jdGlvbih0KXtjLnBvc3RNZXNzYWdlKHQrXCJcIixcIipcIil9LGMuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixiLCExKSk6aT1cIm9ucmVhZHlzdGF0ZWNoYW5nZVwiaW4gbChcInNjcmlwdFwiKT9mdW5jdGlvbih0KXthLmFwcGVuZENoaWxkKGwoXCJzY3JpcHRcIikpLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2EucmVtb3ZlQ2hpbGQodGhpcyksbS5jYWxsKHQpfX06ZnVuY3Rpb24odCl7c2V0VGltZW91dChzKG0sdCwxKSwwKX0pLHQuZXhwb3J0cz17c2V0OnAsY2xlYXI6aH19LGZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5jZWlsLGk9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD9pOm4pKHQpfX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciBpPW4oMykscj1uKDIwKSg1KSxvPSEwO1wiZmluZFwiaW5bXSYmQXJyYXkoMSkuZmluZChmdW5jdGlvbigpe289ITF9KSxpKGkuUCtpLkYqbyxcIkFycmF5XCIse2ZpbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxuKDM2KShcImZpbmRcIil9LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgaSxyLG8scyx1PW4oMjQpLGE9bigwKSxsPW4oMTEpLGM9bigzOCksZj1uKDMpLHA9big1KSxoPW4oMTQpLGQ9big2MSksdj1uKDY2KSxnPW4oNTApLHk9big1Mikuc2V0LG09big3NSkoKSxiPW4oNDMpLF89big4MCkseD1uKDg2KSx3PW4oNDgpLFM9YS5UeXBlRXJyb3IsTz1hLnByb2Nlc3MsTD1PJiZPLnZlcnNpb25zLGs9TCYmTC52OHx8XCJcIixQPWEuUHJvbWlzZSxUPVwicHJvY2Vzc1wiPT1jKE8pLFY9ZnVuY3Rpb24oKXt9LEU9cj1iLmYsQT0hIWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PVAucmVzb2x2ZSgxKSxlPSh0LmNvbnN0cnVjdG9yPXt9KVtuKDEpKFwic3BlY2llc1wiKV09ZnVuY3Rpb24odCl7dChWLFYpfTtyZXR1cm4oVHx8XCJmdW5jdGlvblwiPT10eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50KSYmdC50aGVuKFYpaW5zdGFuY2VvZiBlJiYwIT09ay5pbmRleE9mKFwiNi42XCIpJiYtMT09PXguaW5kZXhPZihcIkNocm9tZS82NlwiKX1jYXRjaCh0KXt9fSgpLEM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuISghcCh0KXx8XCJmdW5jdGlvblwiIT10eXBlb2YoZT10LnRoZW4pKSYmZX0sRD1mdW5jdGlvbih0LGUpe2lmKCF0Ll9uKXt0Ll9uPSEwO3ZhciBuPXQuX2M7bShmdW5jdGlvbigpe2Zvcih2YXIgaT10Ll92LHI9MT09dC5fcyxvPTA7bi5sZW5ndGg+bzspIWZ1bmN0aW9uKGUpe3ZhciBuLG8scyx1PXI/ZS5vazplLmZhaWwsYT1lLnJlc29sdmUsbD1lLnJlamVjdCxjPWUuZG9tYWluO3RyeXt1PyhyfHwoMj09dC5faCYmJCh0KSx0Ll9oPTEpLCEwPT09dT9uPWk6KGMmJmMuZW50ZXIoKSxuPXUoaSksYyYmKGMuZXhpdCgpLHM9ITApKSxuPT09ZS5wcm9taXNlP2woUyhcIlByb21pc2UtY2hhaW4gY3ljbGVcIikpOihvPUMobikpP28uY2FsbChuLGEsbCk6YShuKSk6bChpKX1jYXRjaCh0KXtjJiYhcyYmYy5leGl0KCksbCh0KX19KG5bbysrXSk7dC5fYz1bXSx0Ll9uPSExLGUmJiF0Ll9oJiZqKHQpfSl9fSxqPWZ1bmN0aW9uKHQpe3kuY2FsbChhLGZ1bmN0aW9uKCl7dmFyIGUsbixpLHI9dC5fdixvPU4odCk7aWYobyYmKGU9XyhmdW5jdGlvbigpe1Q/Ty5lbWl0KFwidW5oYW5kbGVkUmVqZWN0aW9uXCIscix0KToobj1hLm9udW5oYW5kbGVkcmVqZWN0aW9uKT9uKHtwcm9taXNlOnQscmVhc29uOnJ9KTooaT1hLmNvbnNvbGUpJiZpLmVycm9yJiZpLmVycm9yKFwiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uXCIscil9KSx0Ll9oPVR8fE4odCk/MjoxKSx0Ll9hPXZvaWQgMCxvJiZlLmUpdGhyb3cgZS52fSl9LE49ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10Ll9oJiYwPT09KHQuX2F8fHQuX2MpLmxlbmd0aH0sJD1mdW5jdGlvbih0KXt5LmNhbGwoYSxmdW5jdGlvbigpe3ZhciBlO1Q/Ty5lbWl0KFwicmVqZWN0aW9uSGFuZGxlZFwiLHQpOihlPWEub25yZWplY3Rpb25oYW5kbGVkKSYmZSh7cHJvbWlzZTp0LHJlYXNvbjp0Ll92fSl9KX0sRj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2UuX2R8fChlLl9kPSEwLGU9ZS5fd3x8ZSxlLl92PXQsZS5fcz0yLGUuX2F8fChlLl9hPWUuX2Muc2xpY2UoKSksRChlLCEwKSl9LE09ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzO2lmKCFuLl9kKXtuLl9kPSEwLG49bi5fd3x8bjt0cnl7aWYobj09PXQpdGhyb3cgUyhcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpOyhlPUModCkpP20oZnVuY3Rpb24oKXt2YXIgaT17X3c6bixfZDohMX07dHJ5e2UuY2FsbCh0LGwoTSxpLDEpLGwoRixpLDEpKX1jYXRjaCh0KXtGLmNhbGwoaSx0KX19KToobi5fdj10LG4uX3M9MSxEKG4sITEpKX1jYXRjaCh0KXtGLmNhbGwoe193Om4sX2Q6ITF9LHQpfX19O0F8fChQPWZ1bmN0aW9uKHQpe2QodGhpcyxQLFwiUHJvbWlzZVwiLFwiX2hcIiksaCh0KSxpLmNhbGwodGhpcyk7dHJ5e3QobChNLHRoaXMsMSksbChGLHRoaXMsMSkpfWNhdGNoKHQpe0YuY2FsbCh0aGlzLHQpfX0saT1mdW5jdGlvbih0KXt0aGlzLl9jPVtdLHRoaXMuX2E9dm9pZCAwLHRoaXMuX3M9MCx0aGlzLl9kPSExLHRoaXMuX3Y9dm9pZCAwLHRoaXMuX2g9MCx0aGlzLl9uPSExfSxpLnByb3RvdHlwZT1uKDgxKShQLnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbih0LGUpe3ZhciBuPUUoZyh0aGlzLFApKTtyZXR1cm4gbi5vaz1cImZ1bmN0aW9uXCIhPXR5cGVvZiB0fHx0LG4uZmFpbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiZlLG4uZG9tYWluPVQ/Ty5kb21haW46dm9pZCAwLHRoaXMuX2MucHVzaChuKSx0aGlzLl9hJiZ0aGlzLl9hLnB1c2gobiksdGhpcy5fcyYmRCh0aGlzLCExKSxuLnByb21pc2V9LGNhdGNoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLHQpfX0pLG89ZnVuY3Rpb24oKXt2YXIgdD1uZXcgaTt0aGlzLnByb21pc2U9dCx0aGlzLnJlc29sdmU9bChNLHQsMSksdGhpcy5yZWplY3Q9bChGLHQsMSl9LGIuZj1FPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09UHx8dD09PXM/bmV3IG8odCk6cih0KX0pLGYoZi5HK2YuVytmLkYqIUEse1Byb21pc2U6UH0pLG4oMjYpKFAsXCJQcm9taXNlXCIpLG4oODMpKFwiUHJvbWlzZVwiKSxzPW4oMTApLlByb21pc2UsZihmLlMrZi5GKiFBLFwiUHJvbWlzZVwiLHtyZWplY3Q6ZnVuY3Rpb24odCl7dmFyIGU9RSh0aGlzKTtyZXR1cm4oMCxlLnJlamVjdCkodCksZS5wcm9taXNlfX0pLGYoZi5TK2YuRioodXx8IUEpLFwiUHJvbWlzZVwiLHtyZXNvbHZlOmZ1bmN0aW9uKHQpe3JldHVybiB3KHUmJnRoaXM9PT1zP1A6dGhpcyx0KX19KSxmKGYuUytmLkYqIShBJiZuKDczKShmdW5jdGlvbih0KXtQLmFsbCh0KS5jYXRjaChWKX0pKSxcIlByb21pc2VcIix7YWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1FKGUpLGk9bi5yZXNvbHZlLHI9bi5yZWplY3Qsbz1fKGZ1bmN0aW9uKCl7dmFyIG49W10sbz0wLHM9MTt2KHQsITEsZnVuY3Rpb24odCl7dmFyIHU9bysrLGE9ITE7bi5wdXNoKHZvaWQgMCkscysrLGUucmVzb2x2ZSh0KS50aGVuKGZ1bmN0aW9uKHQpe2F8fChhPSEwLG5bdV09dCwtLXN8fGkobikpfSxyKX0pLC0tc3x8aShuKX0pO3JldHVybiBvLmUmJnIoby52KSxuLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPUUoZSksaT1uLnJlamVjdCxyPV8oZnVuY3Rpb24oKXt2KHQsITEsZnVuY3Rpb24odCl7ZS5yZXNvbHZlKHQpLnRoZW4obi5yZXNvbHZlLGkpfSl9KTtyZXR1cm4gci5lJiZpKHIudiksbi5wcm9taXNlfX0pfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9bigzKSxyPW4oMTApLG89bigwKSxzPW4oNTApLHU9big0OCk7aShpLlAraS5SLFwiUHJvbWlzZVwiLHtmaW5hbGx5OmZ1bmN0aW9uKHQpe3ZhciBlPXModGhpcyxyLlByb21pc2V8fG8uUHJvbWlzZSksbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0O3JldHVybiB0aGlzLnRoZW4obj9mdW5jdGlvbihuKXtyZXR1cm4gdShlLHQoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBufSl9OnQsbj9mdW5jdGlvbihuKXtyZXR1cm4gdShlLHQoKSkudGhlbihmdW5jdGlvbigpe3Rocm93IG59KX06dCl9fSl9LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBpKHQpe24oOTkpfXZhciByPW4oMzUpLG89bigxMDEpLHM9bigxMDApLHU9aSxhPXMoci5hLG8uYSwhMSx1LG51bGwsbnVsbCk7ZS5hPWEuZXhwb3J0c30sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGkodCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fWUuYT1pfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gaSh0KXtyZXR1cm4oaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiB0fSkodCl9ZnVuY3Rpb24gcih0KXtyZXR1cm4ocj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PT1pKFN5bWJvbC5pdGVyYXRvcik/ZnVuY3Rpb24odCl7cmV0dXJuIGkodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6aSh0KX0pKHQpfWUuYT1yfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGk9bigzNCkscj0obi5uKGkpLG4oNTUpKSxvPShuLm4ociksbig1NikpLHM9KG4ubihvKSxuKDU3KSksdT1uKDMyKSxhPW4oMzMpO24uZChlLFwiTXVsdGlzZWxlY3RcIixmdW5jdGlvbigpe3JldHVybiBzLmF9KSxuLmQoZSxcIm11bHRpc2VsZWN0TWl4aW5cIixmdW5jdGlvbigpe3JldHVybiB1LmF9KSxuLmQoZSxcInBvaW50ZXJNaXhpblwiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuYX0pLGUuZGVmYXVsdD1zLmF9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGkpe2lmKCEodCBpbnN0YW5jZW9mIGUpfHx2b2lkIDAhPT1pJiZpIGluIHQpdGhyb3cgVHlwZUVycm9yKG4rXCI6IGluY29ycmVjdCBpbnZvY2F0aW9uIVwiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDE0KSxyPW4oMjgpLG89bigyMykscz1uKDE5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sdSxhKXtpKGUpO3ZhciBsPXIodCksYz1vKGwpLGY9cyhsLmxlbmd0aCkscD1hP2YtMTowLGg9YT8tMToxO2lmKG48Milmb3IoOzspe2lmKHAgaW4gYyl7dT1jW3BdLHArPWg7YnJlYWt9aWYocCs9aCxhP3A8MDpmPD1wKXRocm93IFR5cGVFcnJvcihcIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWVcIil9Zm9yKDthP3A+PTA6Zj5wO3ArPWgpcCBpbiBjJiYodT1lKHUsY1twXSxwLGwpKTtyZXR1cm4gdX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDUpLHI9big0Miksbz1uKDEpKFwic3BlY2llc1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHIodCkmJihlPXQuY29uc3RydWN0b3IsXCJmdW5jdGlvblwiIT10eXBlb2YgZXx8ZSE9PUFycmF5JiYhcihlLnByb3RvdHlwZSl8fChlPXZvaWQgMCksaShlKSYmbnVsbD09PShlPWVbb10pJiYoZT12b2lkIDApKSx2b2lkIDA9PT1lP0FycmF5OmV9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big2Myk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyhpKHQpKShlKX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1uKDgpLHI9big2KSxvPW4oNykscz1uKDE2KSx1PW4oMSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT11KHQpLGw9bihzLGEsXCJcIlt0XSksYz1sWzBdLGY9bFsxXTtvKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGVbYV09ZnVuY3Rpb24oKXtyZXR1cm4gN30sNyE9XCJcIlt0XShlKX0pJiYocihTdHJpbmcucHJvdG90eXBlLHQsYyksaShSZWdFeHAucHJvdG90eXBlLGEsMj09ZT9mdW5jdGlvbih0LGUpe3JldHVybiBmLmNhbGwodCx0aGlzLGUpfTpmdW5jdGlvbih0KXtyZXR1cm4gZi5jYWxsKHQsdGhpcyl9KSl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxMSkscj1uKDcwKSxvPW4oNjkpLHM9bigyKSx1PW4oMTkpLGE9big4NyksbD17fSxjPXt9LGU9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGYscCl7dmFyIGgsZCx2LGcseT1wP2Z1bmN0aW9uKCl7cmV0dXJuIHR9OmEodCksbT1pKG4sZixlPzI6MSksYj0wO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHkpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGl0ZXJhYmxlIVwiKTtpZihvKHkpKXtmb3IoaD11KHQubGVuZ3RoKTtoPmI7YisrKWlmKChnPWU/bShzKGQ9dFtiXSlbMF0sZFsxXSk6bSh0W2JdKSk9PT1sfHxnPT09YylyZXR1cm4gZ31lbHNlIGZvcih2PXkuY2FsbCh0KTshKGQ9di5uZXh0KCkpLmRvbmU7KWlmKChnPXIodixtLGQudmFsdWUsZSkpPT09bHx8Zz09PWMpcmV0dXJuIGd9O2UuQlJFQUs9bCxlLlJFVFVSTj1jfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big1KSxyPW4oODIpLnNldDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBvLHM9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gcyE9PW4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIHMmJihvPXMucHJvdG90eXBlKSE9PW4ucHJvdG90eXBlJiZpKG8pJiZyJiZyKHQsbyksdH19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT12b2lkIDA9PT1uO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBpP3QoKTp0LmNhbGwobik7Y2FzZSAxOnJldHVybiBpP3QoZVswXSk6dC5jYWxsKG4sZVswXSk7Y2FzZSAyOnJldHVybiBpP3QoZVswXSxlWzFdKTp0LmNhbGwobixlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4gaT90KGVbMF0sZVsxXSxlWzJdKTp0LmNhbGwobixlWzBdLGVbMV0sZVsyXSk7Y2FzZSA0OnJldHVybiBpP3QoZVswXSxlWzFdLGVbMl0sZVszXSk6dC5jYWxsKG4sZVswXSxlWzFdLGVbMl0sZVszXSl9cmV0dXJuIHQuYXBwbHkobixlKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDE1KSxyPW4oMSkoXCJpdGVyYXRvclwiKSxvPUFycmF5LnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihpLkFycmF5PT09dHx8b1tyXT09PXQpfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHIpe3RyeXtyZXR1cm4gcj9lKGkobilbMF0sblsxXSk6ZShuKX1jYXRjaChlKXt2YXIgbz10LnJldHVybjt0aHJvdyB2b2lkIDAhPT1vJiZpKG8uY2FsbCh0KSksZX19fSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9big0NCkscj1uKDI1KSxvPW4oMjYpLHM9e307big4KShzLG4oMSkoXCJpdGVyYXRvclwiKSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSksdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt0LnByb3RvdHlwZT1pKHMse25leHQ6cigxLG4pfSksbyh0LGUrXCIgSXRlcmF0b3JcIil9fSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9bigyNCkscj1uKDMpLG89big2KSxzPW4oOCksdT1uKDE1KSxhPW4oNzEpLGw9bigyNiksYz1uKDc4KSxmPW4oMSkoXCJpdGVyYXRvclwiKSxwPSEoW10ua2V5cyYmXCJuZXh0XCJpbltdLmtleXMoKSksaD1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sZCx2LGcseSl7YShuLGUsZCk7dmFyIG0sYixfLHg9ZnVuY3Rpb24odCl7aWYoIXAmJnQgaW4gTClyZXR1cm4gTFt0XTtzd2l0Y2godCl7Y2FzZVwia2V5c1wiOmNhc2VcInZhbHVlc1wiOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLHQpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyx0KX19LHc9ZStcIiBJdGVyYXRvclwiLFM9XCJ2YWx1ZXNcIj09dixPPSExLEw9dC5wcm90b3R5cGUsaz1MW2ZdfHxMW1wiQEBpdGVyYXRvclwiXXx8diYmTFt2XSxQPWt8fHgodiksVD12P1M/eChcImVudHJpZXNcIik6UDp2b2lkIDAsVj1cIkFycmF5XCI9PWU/TC5lbnRyaWVzfHxrOms7aWYoViYmKF89YyhWLmNhbGwobmV3IHQpKSkhPT1PYmplY3QucHJvdG90eXBlJiZfLm5leHQmJihsKF8sdywhMCksaXx8XCJmdW5jdGlvblwiPT10eXBlb2YgX1tmXXx8cyhfLGYsaCkpLFMmJmsmJlwidmFsdWVzXCIhPT1rLm5hbWUmJihPPSEwLFA9ZnVuY3Rpb24oKXtyZXR1cm4gay5jYWxsKHRoaXMpfSksaSYmIXl8fCFwJiYhTyYmTFtmXXx8cyhMLGYsUCksdVtlXT1QLHVbd109aCx2KWlmKG09e3ZhbHVlczpTP1A6eChcInZhbHVlc1wiKSxrZXlzOmc/UDp4KFwia2V5c1wiKSxlbnRyaWVzOlR9LHkpZm9yKGIgaW4gbSliIGluIEx8fG8oTCxiLG1bYl0pO2Vsc2UgcihyLlArci5GKihwfHxPKSxlLG0pO3JldHVybiBtfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMSkoXCJpdGVyYXRvclwiKSxyPSExO3RyeXt2YXIgbz1bN11baV0oKTtvLnJldHVybj1mdW5jdGlvbigpe3I9ITB9LEFycmF5LmZyb20obyxmdW5jdGlvbigpe3Rocm93IDJ9KX1jYXRjaCh0KXt9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIWUmJiFyKXJldHVybiExO3ZhciBuPSExO3RyeXt2YXIgbz1bN10scz1vW2ldKCk7cy5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6bj0hMH19LG9baV09ZnVuY3Rpb24oKXtyZXR1cm4gc30sdChvKX1jYXRjaCh0KXt9cmV0dXJuIG59fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybnt2YWx1ZTplLGRvbmU6ISF0fX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDApLHI9big1Mikuc2V0LG89aS5NdXRhdGlvbk9ic2VydmVyfHxpLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIscz1pLnByb2Nlc3MsdT1pLlByb21pc2UsYT1cInByb2Nlc3NcIj09big5KShzKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdCxlLG4sbD1mdW5jdGlvbigpe3ZhciBpLHI7Zm9yKGEmJihpPXMuZG9tYWluKSYmaS5leGl0KCk7dDspe3I9dC5mbix0PXQubmV4dDt0cnl7cigpfWNhdGNoKGkpe3Rocm93IHQ/bigpOmU9dm9pZCAwLGl9fWU9dm9pZCAwLGkmJmkuZW50ZXIoKX07aWYoYSluPWZ1bmN0aW9uKCl7cy5uZXh0VGljayhsKX07ZWxzZSBpZighb3x8aS5uYXZpZ2F0b3ImJmkubmF2aWdhdG9yLnN0YW5kYWxvbmUpaWYodSYmdS5yZXNvbHZlKXt2YXIgYz11LnJlc29sdmUodm9pZCAwKTtuPWZ1bmN0aW9uKCl7Yy50aGVuKGwpfX1lbHNlIG49ZnVuY3Rpb24oKXtyLmNhbGwoaSxsKX07ZWxzZXt2YXIgZj0hMCxwPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO25ldyBvKGwpLm9ic2VydmUocCx7Y2hhcmFjdGVyRGF0YTohMH0pLG49ZnVuY3Rpb24oKXtwLmRhdGE9Zj0hZn19cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciByPXtmbjppLG5leHQ6dm9pZCAwfTtlJiYoZS5uZXh0PXIpLHR8fCh0PXIsbigpKSxlPXJ9fX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTMpLHI9bigyKSxvPW4oNDcpO3QuZXhwb3J0cz1uKDQpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZSl7cih0KTtmb3IodmFyIG4scz1vKGUpLHU9cy5sZW5ndGgsYT0wO3U+YTspaS5mKHQsbj1zW2ErK10sZVtuXSk7cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big0Nikscj1uKDIyKS5jb25jYXQoXCJsZW5ndGhcIixcInByb3RvdHlwZVwiKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3JldHVybiBpKHQscil9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxMikscj1uKDI4KSxvPW4oMjcpKFwiSUVfUFJPVE9cIikscz1PYmplY3QucHJvdG90eXBlO3QuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQpe3JldHVybiB0PXIodCksaSh0LG8pP3Rbb106XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9zOm51bGx9fSxmdW5jdGlvbih0LGUpe2UuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybntlOiExLHY6dCgpfX1jYXRjaCh0KXtyZXR1cm57ZTohMCx2OnR9fX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDYpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciByIGluIGUpaSh0LHIsZVtyXSxuKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDUpLHI9bigyKSxvPWZ1bmN0aW9uKHQsZSl7aWYocih0KSwhaShlKSYmbnVsbCE9PWUpdGhyb3cgVHlwZUVycm9yKGUrXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpfTt0LmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fChcIl9fcHJvdG9fX1wiaW57fT9mdW5jdGlvbih0LGUsaSl7dHJ5e2k9bigxMSkoRnVuY3Rpb24uY2FsbCxuKDQ1KS5mKE9iamVjdC5wcm90b3R5cGUsXCJfX3Byb3RvX19cIikuc2V0LDIpLGkodCxbXSksZT0hKHQgaW5zdGFuY2VvZiBBcnJheSl9Y2F0Y2godCl7ZT0hMH1yZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gbyh0LG4pLGU/dC5fX3Byb3RvX189bjppKHQsbiksdH19KHt9LCExKTp2b2lkIDApLGNoZWNrOm99fSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9bigwKSxyPW4oMTMpLG89big0KSxzPW4oMSkoXCJzcGVjaWVzXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1pW3RdO28mJmUmJiFlW3NdJiZyLmYoZSxzLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1cIlxcdFxcblxcdlxcZlxcciDCoOGagOGgjuKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFxcdTIwMjhcXHUyMDI5XFx1ZmVmZlwifSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big1Mykscj1NYXRoLm1heCxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0PWkodCksdDwwP3IodCtlLDApOm8odCxlKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDApLHI9aS5uYXZpZ2F0b3I7dC5leHBvcnRzPXImJnIudXNlckFnZW50fHxcIlwifSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigzOCkscj1uKDEpKFwiaXRlcmF0b3JcIiksbz1uKDE1KTt0LmV4cG9ydHM9bigxMCkuZ2V0SXRlcmF0b3JNZXRob2Q9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT10KXJldHVybiB0W3JdfHx0W1wiQEBpdGVyYXRvclwiXXx8b1tpKHQpXX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1uKDMpLHI9bigyMCkoMik7aShpLlAraS5GKiFuKDE3KShbXS5maWx0ZXIsITApLFwiQXJyYXlcIix7ZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiByKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9bigzKSxyPW4oMzcpKCExKSxvPVtdLmluZGV4T2Yscz0hIW8mJjEvWzFdLmluZGV4T2YoMSwtMCk8MDtpKGkuUCtpLkYqKHN8fCFuKDE3KShvKSksXCJBcnJheVwiLHtpbmRleE9mOmZ1bmN0aW9uKHQpe3JldHVybiBzP28uYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwOnIodGhpcyx0LGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDMpO2koaS5TLFwiQXJyYXlcIix7aXNBcnJheTpuKDQyKX0pfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9bigzKSxyPW4oMjApKDEpO2koaS5QK2kuRiohbigxNykoW10ubWFwLCEwKSxcIkFycmF5XCIse21hcDpmdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciBpPW4oMykscj1uKDYyKTtpKGkuUCtpLkYqIW4oMTcpKFtdLnJlZHVjZSwhMCksXCJBcnJheVwiLHtyZWR1Y2U6ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCExKX19KX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPURhdGUucHJvdG90eXBlLHI9aS50b1N0cmluZyxvPWkuZ2V0VGltZTtuZXcgRGF0ZShOYU4pK1wiXCIhPVwiSW52YWxpZCBEYXRlXCImJm4oNikoaSxcInRvU3RyaW5nXCIsZnVuY3Rpb24oKXt2YXIgdD1vLmNhbGwodGhpcyk7cmV0dXJuIHQ9PT10P3IuY2FsbCh0aGlzKTpcIkludmFsaWQgRGF0ZVwifSl9LGZ1bmN0aW9uKHQsZSxuKXtuKDQpJiZcImdcIiE9Ly4vZy5mbGFncyYmbigxMykuZihSZWdFeHAucHJvdG90eXBlLFwiZmxhZ3NcIix7Y29uZmlndXJhYmxlOiEwLGdldDpuKDM5KX0pfSxmdW5jdGlvbih0LGUsbil7big2NSkoXCJzZWFyY2hcIiwxLGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24obil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9dCh0aGlzKSxyPXZvaWQgMD09bj92b2lkIDA6bltlXTtyZXR1cm4gdm9pZCAwIT09cj9yLmNhbGwobixpKTpuZXcgUmVnRXhwKG4pW2VdKFN0cmluZyhpKSl9LG5dfSl9LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtuKDk0KTt2YXIgaT1uKDIpLHI9bigzOSksbz1uKDQpLHM9Ly4vLnRvU3RyaW5nLHU9ZnVuY3Rpb24odCl7big2KShSZWdFeHAucHJvdG90eXBlLFwidG9TdHJpbmdcIix0LCEwKX07big3KShmdW5jdGlvbigpe3JldHVyblwiL2EvYlwiIT1zLmNhbGwoe3NvdXJjZTpcImFcIixmbGFnczpcImJcIn0pfSk/dShmdW5jdGlvbigpe3ZhciB0PWkodGhpcyk7cmV0dXJuXCIvXCIuY29uY2F0KHQuc291cmNlLFwiL1wiLFwiZmxhZ3NcImluIHQ/dC5mbGFnczohbyYmdCBpbnN0YW5jZW9mIFJlZ0V4cD9yLmNhbGwodCk6dm9pZCAwKX0pOlwidG9TdHJpbmdcIiE9cy5uYW1lJiZ1KGZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0pfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7big1MSkoXCJ0cmltXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcywzKX19KX0sZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaT1uKDM0KSxyPW4oNDcpLG89big2KSxzPW4oMCksdT1uKDgpLGE9bigxNSksbD1uKDEpLGM9bChcIml0ZXJhdG9yXCIpLGY9bChcInRvU3RyaW5nVGFnXCIpLHA9YS5BcnJheSxoPXtDU1NSdWxlTGlzdDohMCxDU1NTdHlsZURlY2xhcmF0aW9uOiExLENTU1ZhbHVlTGlzdDohMSxDbGllbnRSZWN0TGlzdDohMSxET01SZWN0TGlzdDohMSxET01TdHJpbmdMaXN0OiExLERPTVRva2VuTGlzdDohMCxEYXRhVHJhbnNmZXJJdGVtTGlzdDohMSxGaWxlTGlzdDohMSxIVE1MQWxsQ29sbGVjdGlvbjohMSxIVE1MQ29sbGVjdGlvbjohMSxIVE1MRm9ybUVsZW1lbnQ6ITEsSFRNTFNlbGVjdEVsZW1lbnQ6ITEsTWVkaWFMaXN0OiEwLE1pbWVUeXBlQXJyYXk6ITEsTmFtZWROb2RlTWFwOiExLE5vZGVMaXN0OiEwLFBhaW50UmVxdWVzdExpc3Q6ITEsUGx1Z2luOiExLFBsdWdpbkFycmF5OiExLFNWR0xlbmd0aExpc3Q6ITEsU1ZHTnVtYmVyTGlzdDohMSxTVkdQYXRoU2VnTGlzdDohMSxTVkdQb2ludExpc3Q6ITEsU1ZHU3RyaW5nTGlzdDohMSxTVkdUcmFuc2Zvcm1MaXN0OiExLFNvdXJjZUJ1ZmZlckxpc3Q6ITEsU3R5bGVTaGVldExpc3Q6ITAsVGV4dFRyYWNrQ3VlTGlzdDohMSxUZXh0VHJhY2tMaXN0OiExLFRvdWNoTGlzdDohMX0sZD1yKGgpLHY9MDt2PGQubGVuZ3RoO3YrKyl7dmFyIGcseT1kW3ZdLG09aFt5XSxiPXNbeV0sXz1iJiZiLnByb3RvdHlwZTtpZihfJiYoX1tjXXx8dShfLGMscCksX1tmXXx8dShfLGYseSksYVt5XT1wLG0pKWZvcihnIGluIGkpX1tnXXx8byhfLGcsaVtnXSwhMCl9fSxmdW5jdGlvbih0LGUpe30sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSxyLG8pe3ZhciBzLHU9dD10fHx7fSxhPXR5cGVvZiB0LmRlZmF1bHQ7XCJvYmplY3RcIiE9PWEmJlwiZnVuY3Rpb25cIiE9PWF8fChzPXQsdT10LmRlZmF1bHQpO3ZhciBsPVwiZnVuY3Rpb25cIj09dHlwZW9mIHU/dS5vcHRpb25zOnU7ZSYmKGwucmVuZGVyPWUucmVuZGVyLGwuc3RhdGljUmVuZGVyRm5zPWUuc3RhdGljUmVuZGVyRm5zLGwuX2NvbXBpbGVkPSEwKSxuJiYobC5mdW5jdGlvbmFsPSEwKSxyJiYobC5fc2NvcGVJZD1yKTt2YXIgYztpZihvPyhjPWZ1bmN0aW9uKHQpe3Q9dHx8dGhpcy4kdm5vZGUmJnRoaXMuJHZub2RlLnNzckNvbnRleHR8fHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC4kdm5vZGUmJnRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0LHR8fFwidW5kZWZpbmVkXCI9PXR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9ffHwodD1fX1ZVRV9TU1JfQ09OVEVYVF9fKSxpJiZpLmNhbGwodGhpcyx0KSx0JiZ0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cyYmdC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG8pfSxsLl9zc3JSZWdpc3Rlcj1jKTppJiYoYz1pKSxjKXt2YXIgZj1sLmZ1bmN0aW9uYWwscD1mP2wucmVuZGVyOmwuYmVmb3JlQ3JlYXRlO2Y/KGwuX2luamVjdFN0eWxlcz1jLGwucmVuZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGMuY2FsbChlKSxwKHQsZSl9KTpsLmJlZm9yZUNyZWF0ZT1wP1tdLmNvbmNhdChwLGMpOltjXX1yZXR1cm57ZXNNb2R1bGU6cyxleHBvcnRzOnUsb3B0aW9uczpsfX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbihcImRpdlwiLHtzdGF0aWNDbGFzczpcIm11bHRpc2VsZWN0XCIsY2xhc3M6e1wibXVsdGlzZWxlY3QtLWFjdGl2ZVwiOnQuaXNPcGVuLFwibXVsdGlzZWxlY3QtLWRpc2FibGVkXCI6dC5kaXNhYmxlZCxcIm11bHRpc2VsZWN0LS1hYm92ZVwiOnQuaXNBYm92ZX0sYXR0cnM6e3RhYmluZGV4OnQuc2VhcmNoYWJsZT8tMTp0LnRhYmluZGV4fSxvbjp7Zm9jdXM6ZnVuY3Rpb24oZSl7dC5hY3RpdmF0ZSgpfSxibHVyOmZ1bmN0aW9uKGUpeyF0LnNlYXJjaGFibGUmJnQuZGVhY3RpdmF0ZSgpfSxrZXlkb3duOltmdW5jdGlvbihlKXtyZXR1cm5cImJ1dHRvblwiaW4gZXx8IXQuX2soZS5rZXlDb2RlLFwiZG93blwiLDQwLGUua2V5LFtcIkRvd25cIixcIkFycm93RG93blwiXSk/ZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQ/bnVsbDooZS5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgdC5wb2ludGVyRm9yd2FyZCgpKTpudWxsfSxmdW5jdGlvbihlKXtyZXR1cm5cImJ1dHRvblwiaW4gZXx8IXQuX2soZS5rZXlDb2RlLFwidXBcIiwzOCxlLmtleSxbXCJVcFwiLFwiQXJyb3dVcFwiXSk/ZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQ/bnVsbDooZS5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgdC5wb2ludGVyQmFja3dhcmQoKSk6bnVsbH1dLGtleXByZXNzOmZ1bmN0aW9uKGUpe3JldHVyblwiYnV0dG9uXCJpbiBlfHwhdC5fayhlLmtleUNvZGUsXCJlbnRlclwiLDEzLGUua2V5LFwiRW50ZXJcIil8fCF0Ll9rKGUua2V5Q29kZSxcInRhYlwiLDksZS5rZXksXCJUYWJcIik/KGUuc3RvcFByb3BhZ2F0aW9uKCksZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQ/bnVsbDp2b2lkIHQuYWRkUG9pbnRlckVsZW1lbnQoZSkpOm51bGx9LGtleXVwOmZ1bmN0aW9uKGUpe2lmKCEoXCJidXR0b25cImluIGUpJiZ0Ll9rKGUua2V5Q29kZSxcImVzY1wiLDI3LGUua2V5LFwiRXNjYXBlXCIpKXJldHVybiBudWxsO3QuZGVhY3RpdmF0ZSgpfX19LFt0Ll90KFwiY2FyZXRcIixbbihcImRpdlwiLHtzdGF0aWNDbGFzczpcIm11bHRpc2VsZWN0X19zZWxlY3RcIixvbjp7bW91c2Vkb3duOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHQudG9nZ2xlKCl9fX0pXSx7dG9nZ2xlOnQudG9nZ2xlfSksdC5fdihcIiBcIiksdC5fdChcImNsZWFyXCIsbnVsbCx7c2VhcmNoOnQuc2VhcmNofSksdC5fdihcIiBcIiksbihcImRpdlwiLHtyZWY6XCJ0YWdzXCIsc3RhdGljQ2xhc3M6XCJtdWx0aXNlbGVjdF9fdGFnc1wifSxbdC5fdChcInNlbGVjdGlvblwiLFtuKFwiZGl2XCIse2RpcmVjdGl2ZXM6W3tuYW1lOlwic2hvd1wiLHJhd05hbWU6XCJ2LXNob3dcIix2YWx1ZTp0LnZpc2libGVWYWx1ZXMubGVuZ3RoPjAsZXhwcmVzc2lvbjpcInZpc2libGVWYWx1ZXMubGVuZ3RoID4gMFwifV0sc3RhdGljQ2xhc3M6XCJtdWx0aXNlbGVjdF9fdGFncy13cmFwXCJ9LFt0Ll9sKHQudmlzaWJsZVZhbHVlcyxmdW5jdGlvbihlLGkpe3JldHVyblt0Ll90KFwidGFnXCIsW24oXCJzcGFuXCIse2tleTppLHN0YXRpY0NsYXNzOlwibXVsdGlzZWxlY3RfX3RhZ1wifSxbbihcInNwYW5cIix7ZG9tUHJvcHM6e3RleHRDb250ZW50OnQuX3ModC5nZXRPcHRpb25MYWJlbChlKSl9fSksdC5fdihcIiBcIiksbihcImlcIix7c3RhdGljQ2xhc3M6XCJtdWx0aXNlbGVjdF9fdGFnLWljb25cIixhdHRyczp7XCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLHRhYmluZGV4OlwiMVwifSxvbjp7a2V5cHJlc3M6ZnVuY3Rpb24obil7aWYoIShcImJ1dHRvblwiaW4gbikmJnQuX2sobi5rZXlDb2RlLFwiZW50ZXJcIiwxMyxuLmtleSxcIkVudGVyXCIpKXJldHVybiBudWxsO24ucHJldmVudERlZmF1bHQoKSx0LnJlbW92ZUVsZW1lbnQoZSl9LG1vdXNlZG93bjpmdW5jdGlvbihuKXtuLnByZXZlbnREZWZhdWx0KCksdC5yZW1vdmVFbGVtZW50KGUpfX19KV0pXSx7b3B0aW9uOmUsc2VhcmNoOnQuc2VhcmNoLHJlbW92ZTp0LnJlbW92ZUVsZW1lbnR9KV19KV0sMiksdC5fdihcIiBcIiksdC5pbnRlcm5hbFZhbHVlJiZ0LmludGVybmFsVmFsdWUubGVuZ3RoPnQubGltaXQ/W3QuX3QoXCJsaW1pdFwiLFtuKFwic3Ryb25nXCIse3N0YXRpY0NsYXNzOlwibXVsdGlzZWxlY3RfX3N0cm9uZ1wiLGRvbVByb3BzOnt0ZXh0Q29udGVudDp0Ll9zKHQubGltaXRUZXh0KHQuaW50ZXJuYWxWYWx1ZS5sZW5ndGgtdC5saW1pdCkpfX0pXSldOnQuX2UoKV0se3NlYXJjaDp0LnNlYXJjaCxyZW1vdmU6dC5yZW1vdmVFbGVtZW50LHZhbHVlczp0LnZpc2libGVWYWx1ZXMsaXNPcGVuOnQuaXNPcGVufSksdC5fdihcIiBcIiksbihcInRyYW5zaXRpb25cIix7YXR0cnM6e25hbWU6XCJtdWx0aXNlbGVjdF9fbG9hZGluZ1wifX0sW3QuX3QoXCJsb2FkaW5nXCIsW24oXCJkaXZcIix7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOnQubG9hZGluZyxleHByZXNzaW9uOlwibG9hZGluZ1wifV0sc3RhdGljQ2xhc3M6XCJtdWx0aXNlbGVjdF9fc3Bpbm5lclwifSldKV0sMiksdC5fdihcIiBcIiksdC5zZWFyY2hhYmxlP24oXCJpbnB1dFwiLHtyZWY6XCJzZWFyY2hcIixzdGF0aWNDbGFzczpcIm11bHRpc2VsZWN0X19pbnB1dFwiLHN0eWxlOnQuaW5wdXRTdHlsZSxhdHRyczp7bmFtZTp0Lm5hbWUsaWQ6dC5pZCx0eXBlOlwidGV4dFwiLGF1dG9jb21wbGV0ZTpcIm5vcGVcIixwbGFjZWhvbGRlcjp0LnBsYWNlaG9sZGVyLGRpc2FibGVkOnQuZGlzYWJsZWQsdGFiaW5kZXg6dC50YWJpbmRleH0sZG9tUHJvcHM6e3ZhbHVlOnQuc2VhcmNofSxvbjp7aW5wdXQ6ZnVuY3Rpb24oZSl7dC51cGRhdGVTZWFyY2goZS50YXJnZXQudmFsdWUpfSxmb2N1czpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksdC5hY3RpdmF0ZSgpfSxibHVyOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSx0LmRlYWN0aXZhdGUoKX0sa2V5dXA6ZnVuY3Rpb24oZSl7aWYoIShcImJ1dHRvblwiaW4gZSkmJnQuX2soZS5rZXlDb2RlLFwiZXNjXCIsMjcsZS5rZXksXCJFc2NhcGVcIikpcmV0dXJuIG51bGw7dC5kZWFjdGl2YXRlKCl9LGtleWRvd246W2Z1bmN0aW9uKGUpe2lmKCEoXCJidXR0b25cImluIGUpJiZ0Ll9rKGUua2V5Q29kZSxcImRvd25cIiw0MCxlLmtleSxbXCJEb3duXCIsXCJBcnJvd0Rvd25cIl0pKXJldHVybiBudWxsO2UucHJldmVudERlZmF1bHQoKSx0LnBvaW50ZXJGb3J3YXJkKCl9LGZ1bmN0aW9uKGUpe2lmKCEoXCJidXR0b25cImluIGUpJiZ0Ll9rKGUua2V5Q29kZSxcInVwXCIsMzgsZS5rZXksW1wiVXBcIixcIkFycm93VXBcIl0pKXJldHVybiBudWxsO2UucHJldmVudERlZmF1bHQoKSx0LnBvaW50ZXJCYWNrd2FyZCgpfSxmdW5jdGlvbihlKXtpZighKFwiYnV0dG9uXCJpbiBlKSYmdC5fayhlLmtleUNvZGUsXCJkZWxldGVcIixbOCw0Nl0sZS5rZXksW1wiQmFja3NwYWNlXCIsXCJEZWxldGVcIl0pKXJldHVybiBudWxsO2Uuc3RvcFByb3BhZ2F0aW9uKCksdC5yZW1vdmVMYXN0RWxlbWVudCgpfV0sa2V5cHJlc3M6ZnVuY3Rpb24oZSl7cmV0dXJuXCJidXR0b25cImluIGV8fCF0Ll9rKGUua2V5Q29kZSxcImVudGVyXCIsMTMsZS5rZXksXCJFbnRlclwiKT8oZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQ/bnVsbDp2b2lkIHQuYWRkUG9pbnRlckVsZW1lbnQoZSkpOm51bGx9fX0pOnQuX2UoKSx0Ll92KFwiIFwiKSx0LmlzU2luZ2xlTGFiZWxWaXNpYmxlP24oXCJzcGFuXCIse3N0YXRpY0NsYXNzOlwibXVsdGlzZWxlY3RfX3NpbmdsZVwiLG9uOnttb3VzZWRvd246ZnVuY3Rpb24oZSl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSx0LnRvZ2dsZShlKX19fSxbdC5fdChcInNpbmdsZUxhYmVsXCIsW1t0Ll92KHQuX3ModC5jdXJyZW50T3B0aW9uTGFiZWwpKV1dLHtvcHRpb246dC5zaW5nbGVWYWx1ZX0pXSwyKTp0Ll9lKCksdC5fdihcIiBcIiksdC5pc1BsYWNlaG9sZGVyVmlzaWJsZT9uKFwic3BhblwiLHtzdGF0aWNDbGFzczpcIm11bHRpc2VsZWN0X19wbGFjZWhvbGRlclwiLG9uOnttb3VzZWRvd246ZnVuY3Rpb24oZSl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSx0LnRvZ2dsZShlKX19fSxbdC5fdChcInBsYWNlaG9sZGVyXCIsW3QuX3YoXCJcXG4gICAgICAgICAgXCIrdC5fcyh0LnBsYWNlaG9sZGVyKStcIlxcbiAgICAgICAgXCIpXSldLDIpOnQuX2UoKV0sMiksdC5fdihcIiBcIiksbihcInRyYW5zaXRpb25cIix7YXR0cnM6e25hbWU6XCJtdWx0aXNlbGVjdFwifX0sW24oXCJkaXZcIix7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOnQuaXNPcGVuLGV4cHJlc3Npb246XCJpc09wZW5cIn1dLHJlZjpcImxpc3RcIixzdGF0aWNDbGFzczpcIm11bHRpc2VsZWN0X19jb250ZW50LXdyYXBwZXJcIixzdHlsZTp7bWF4SGVpZ2h0OnQub3B0aW1pemVkSGVpZ2h0K1wicHhcIn0sYXR0cnM6e3RhYmluZGV4OlwiLTFcIn0sb246e2ZvY3VzOnQuYWN0aXZhdGUsbW91c2Vkb3duOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX19fSxbbihcInVsXCIse3N0YXRpY0NsYXNzOlwibXVsdGlzZWxlY3RfX2NvbnRlbnRcIixzdHlsZTp0LmNvbnRlbnRTdHlsZX0sW3QuX3QoXCJiZWZvcmVMaXN0XCIpLHQuX3YoXCIgXCIpLHQubXVsdGlwbGUmJnQubWF4PT09dC5pbnRlcm5hbFZhbHVlLmxlbmd0aD9uKFwibGlcIixbbihcInNwYW5cIix7c3RhdGljQ2xhc3M6XCJtdWx0aXNlbGVjdF9fb3B0aW9uXCJ9LFt0Ll90KFwibWF4RWxlbWVudHNcIixbdC5fdihcIk1heGltdW0gb2YgXCIrdC5fcyh0Lm1heCkrXCIgb3B0aW9ucyBzZWxlY3RlZC4gRmlyc3QgcmVtb3ZlIGEgc2VsZWN0ZWQgb3B0aW9uIHRvIHNlbGVjdCBhbm90aGVyLlwiKV0pXSwyKV0pOnQuX2UoKSx0Ll92KFwiIFwiKSwhdC5tYXh8fHQuaW50ZXJuYWxWYWx1ZS5sZW5ndGg8dC5tYXg/dC5fbCh0LmZpbHRlcmVkT3B0aW9ucyxmdW5jdGlvbihlLGkpe3JldHVybiBuKFwibGlcIix7a2V5Omksc3RhdGljQ2xhc3M6XCJtdWx0aXNlbGVjdF9fZWxlbWVudFwifSxbZSYmKGUuJGlzTGFiZWx8fGUuJGlzRGlzYWJsZWQpP3QuX2UoKTpuKFwic3BhblwiLHtzdGF0aWNDbGFzczpcIm11bHRpc2VsZWN0X19vcHRpb25cIixjbGFzczp0Lm9wdGlvbkhpZ2hsaWdodChpLGUpLGF0dHJzOntcImRhdGEtc2VsZWN0XCI6ZSYmZS5pc1RhZz90LnRhZ1BsYWNlaG9sZGVyOnQuc2VsZWN0TGFiZWxUZXh0LFwiZGF0YS1zZWxlY3RlZFwiOnQuc2VsZWN0ZWRMYWJlbFRleHQsXCJkYXRhLWRlc2VsZWN0XCI6dC5kZXNlbGVjdExhYmVsVGV4dH0sb246e2NsaWNrOmZ1bmN0aW9uKG4pe24uc3RvcFByb3BhZ2F0aW9uKCksdC5zZWxlY3QoZSl9LG1vdXNlZW50ZXI6ZnVuY3Rpb24oZSl7aWYoZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQpcmV0dXJuIG51bGw7dC5wb2ludGVyU2V0KGkpfX19LFt0Ll90KFwib3B0aW9uXCIsW24oXCJzcGFuXCIsW3QuX3YodC5fcyh0LmdldE9wdGlvbkxhYmVsKGUpKSldKV0se29wdGlvbjplLHNlYXJjaDp0LnNlYXJjaH0pXSwyKSx0Ll92KFwiIFwiKSxlJiYoZS4kaXNMYWJlbHx8ZS4kaXNEaXNhYmxlZCk/bihcInNwYW5cIix7c3RhdGljQ2xhc3M6XCJtdWx0aXNlbGVjdF9fb3B0aW9uXCIsY2xhc3M6dC5ncm91cEhpZ2hsaWdodChpLGUpLGF0dHJzOntcImRhdGEtc2VsZWN0XCI6dC5ncm91cFNlbGVjdCYmdC5zZWxlY3RHcm91cExhYmVsVGV4dCxcImRhdGEtZGVzZWxlY3RcIjp0Lmdyb3VwU2VsZWN0JiZ0LmRlc2VsZWN0R3JvdXBMYWJlbFRleHR9LG9uOnttb3VzZWVudGVyOmZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0IT09ZS5jdXJyZW50VGFyZ2V0KXJldHVybiBudWxsO3QuZ3JvdXBTZWxlY3QmJnQucG9pbnRlclNldChpKX0sbW91c2Vkb3duOmZ1bmN0aW9uKG4pe24ucHJldmVudERlZmF1bHQoKSx0LnNlbGVjdEdyb3VwKGUpfX19LFt0Ll90KFwib3B0aW9uXCIsW24oXCJzcGFuXCIsW3QuX3YodC5fcyh0LmdldE9wdGlvbkxhYmVsKGUpKSldKV0se29wdGlvbjplLHNlYXJjaDp0LnNlYXJjaH0pXSwyKTp0Ll9lKCldKX0pOnQuX2UoKSx0Ll92KFwiIFwiKSxuKFwibGlcIix7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOnQuc2hvd05vUmVzdWx0cyYmMD09PXQuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCYmdC5zZWFyY2gmJiF0LmxvYWRpbmcsZXhwcmVzc2lvbjpcInNob3dOb1Jlc3VsdHMgJiYgKGZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDAgJiYgc2VhcmNoICYmICFsb2FkaW5nKVwifV19LFtuKFwic3BhblwiLHtzdGF0aWNDbGFzczpcIm11bHRpc2VsZWN0X19vcHRpb25cIn0sW3QuX3QoXCJub1Jlc3VsdFwiLFt0Ll92KFwiTm8gZWxlbWVudHMgZm91bmQuIENvbnNpZGVyIGNoYW5naW5nIHRoZSBzZWFyY2ggcXVlcnkuXCIpXSx7c2VhcmNoOnQuc2VhcmNofSldLDIpXSksdC5fdihcIiBcIiksbihcImxpXCIse2RpcmVjdGl2ZXM6W3tuYW1lOlwic2hvd1wiLHJhd05hbWU6XCJ2LXNob3dcIix2YWx1ZTp0LnNob3dOb09wdGlvbnMmJjA9PT10Lm9wdGlvbnMubGVuZ3RoJiYhdC5zZWFyY2gmJiF0LmxvYWRpbmcsZXhwcmVzc2lvbjpcInNob3dOb09wdGlvbnMgJiYgKG9wdGlvbnMubGVuZ3RoID09PSAwICYmICFzZWFyY2ggJiYgIWxvYWRpbmcpXCJ9XX0sW24oXCJzcGFuXCIse3N0YXRpY0NsYXNzOlwibXVsdGlzZWxlY3RfX29wdGlvblwifSxbdC5fdChcIm5vT3B0aW9uc1wiLFt0Ll92KFwiTGlzdCBpcyBlbXB0eS5cIildKV0sMildKSx0Ll92KFwiIFwiKSx0Ll90KFwiYWZ0ZXJMaXN0XCIpXSwyKV0pXSldLDIpfSxyPVtdLG89e3JlbmRlcjppLHN0YXRpY1JlbmRlckZuczpyfTtlLmE9b31dKX0pOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-multiselect/dist/vue-multiselect.min.js\n");

/***/ }),

/***/ "./node_modules/vue-perfect-scrollbar/dist/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/vue-perfect-scrollbar/dist/index.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports=function(t){function e(o){if(r[o])return r[o].exports;var n=r[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,e),n.l=!0,n.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,o){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,\"a\",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/dist/\",e(e.s=6)}([function(t,e,r){\"use strict\";function o(t,e){function r(){t.classList.add(\"ps--focus\")}function o(){t.classList.remove(\"ps--focus\")}var n=this;n.settings=a();for(var i in e)n.settings[i]=e[i];n.containerWidth=null,n.containerHeight=null,n.contentWidth=null,n.contentHeight=null,n.isRtl=\"rtl\"===c.css(t,\"direction\"),n.isNegativeScroll=function(){var e=t.scrollLeft,r=null;return t.scrollLeft=-1,r=t.scrollLeft<0,t.scrollLeft=e,r}(),n.negativeScrollAdjustment=n.isNegativeScroll?t.scrollWidth-t.clientWidth:0,n.event=new u,n.ownerDocument=t.ownerDocument||document,n.scrollbarXRail=c.appendTo(c.create(\"div\",\"ps__scrollbar-x-rail\"),t),n.scrollbarX=c.appendTo(c.create(\"div\",\"ps__scrollbar-x\"),n.scrollbarXRail),n.scrollbarX.setAttribute(\"tabindex\",0),n.event.bind(n.scrollbarX,\"focus\",r),n.event.bind(n.scrollbarX,\"blur\",o),n.scrollbarXActive=null,n.scrollbarXWidth=null,n.scrollbarXLeft=null,n.scrollbarXBottom=s.toInt(c.css(n.scrollbarXRail,\"bottom\")),n.isScrollbarXUsingBottom=n.scrollbarXBottom===n.scrollbarXBottom,n.scrollbarXTop=n.isScrollbarXUsingBottom?null:s.toInt(c.css(n.scrollbarXRail,\"top\")),n.railBorderXWidth=s.toInt(c.css(n.scrollbarXRail,\"borderLeftWidth\"))+s.toInt(c.css(n.scrollbarXRail,\"borderRightWidth\")),c.css(n.scrollbarXRail,\"display\",\"block\"),n.railXMarginWidth=s.toInt(c.css(n.scrollbarXRail,\"marginLeft\"))+s.toInt(c.css(n.scrollbarXRail,\"marginRight\")),c.css(n.scrollbarXRail,\"display\",\"\"),n.railXWidth=null,n.railXRatio=null,n.scrollbarYRail=c.appendTo(c.create(\"div\",\"ps__scrollbar-y-rail\"),t),n.scrollbarY=c.appendTo(c.create(\"div\",\"ps__scrollbar-y\"),n.scrollbarYRail),n.scrollbarY.setAttribute(\"tabindex\",0),n.event.bind(n.scrollbarY,\"focus\",r),n.event.bind(n.scrollbarY,\"blur\",o),n.scrollbarYActive=null,n.scrollbarYHeight=null,n.scrollbarYTop=null,n.scrollbarYRight=s.toInt(c.css(n.scrollbarYRail,\"right\")),n.isScrollbarYUsingRight=n.scrollbarYRight===n.scrollbarYRight,n.scrollbarYLeft=n.isScrollbarYUsingRight?null:s.toInt(c.css(n.scrollbarYRail,\"left\")),n.scrollbarYOuterWidth=n.isRtl?s.outerWidth(n.scrollbarY):null,n.railBorderYWidth=s.toInt(c.css(n.scrollbarYRail,\"borderTopWidth\"))+s.toInt(c.css(n.scrollbarYRail,\"borderBottomWidth\")),c.css(n.scrollbarYRail,\"display\",\"block\"),n.railYMarginHeight=s.toInt(c.css(n.scrollbarYRail,\"marginTop\"))+s.toInt(c.css(n.scrollbarYRail,\"marginBottom\")),c.css(n.scrollbarYRail,\"display\",\"\"),n.railYHeight=null,n.railYRatio=null}function n(t){return t.getAttribute(\"data-ps-id\")}function i(t,e){t.setAttribute(\"data-ps-id\",e)}function l(t){t.removeAttribute(\"data-ps-id\")}var s=r(2),a=r(14),c=r(4),u=r(11),p=r(12),d={};e.add=function(t,e){var r=p();return i(t,r),d[r]=new o(t,e),d[r]},e.remove=function(t){delete d[n(t)],l(t)},e.get=function(t){return d[n(t)]}},function(t,e,r){\"use strict\";function o(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function n(t,e){var r={width:e.railXWidth};e.isRtl?r.left=e.negativeScrollAdjustment+t.scrollLeft+e.containerWidth-e.contentWidth:r.left=t.scrollLeft,e.isScrollbarXUsingBottom?r.bottom=e.scrollbarXBottom-t.scrollTop:r.top=e.scrollbarXTop+t.scrollTop,l.css(e.scrollbarXRail,r);var o={top:t.scrollTop,height:e.railYHeight};e.isScrollbarYUsingRight?e.isRtl?o.right=e.contentWidth-(e.negativeScrollAdjustment+t.scrollLeft)-e.scrollbarYRight-e.scrollbarYOuterWidth:o.right=e.scrollbarYRight-t.scrollLeft:e.isRtl?o.left=e.negativeScrollAdjustment+t.scrollLeft+2*e.containerWidth-e.contentWidth-e.scrollbarYLeft-e.scrollbarYOuterWidth:o.left=e.scrollbarYLeft+t.scrollLeft,l.css(e.scrollbarYRail,o),l.css(e.scrollbarX,{left:e.scrollbarXLeft,width:e.scrollbarXWidth-e.railBorderXWidth}),l.css(e.scrollbarY,{top:e.scrollbarYTop,height:e.scrollbarYHeight-e.railBorderYWidth})}var i=r(2),l=r(4),s=r(0),a=r(3);t.exports=function(t){var e=s.get(t);e.containerWidth=t.clientWidth,e.containerHeight=t.clientHeight,e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight;var r;t.contains(e.scrollbarXRail)||(r=l.queryChildren(t,\".ps__scrollbar-x-rail\"),r.length>0&&r.forEach(function(t){l.remove(t)}),l.appendTo(e.scrollbarXRail,t)),t.contains(e.scrollbarYRail)||(r=l.queryChildren(t,\".ps__scrollbar-y-rail\"),r.length>0&&r.forEach(function(t){l.remove(t)}),l.appendTo(e.scrollbarYRail,t)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset<e.contentWidth?(e.scrollbarXActive=!0,e.railXWidth=e.containerWidth-e.railXMarginWidth,e.railXRatio=e.containerWidth/e.railXWidth,e.scrollbarXWidth=o(e,i.toInt(e.railXWidth*e.containerWidth/e.contentWidth)),e.scrollbarXLeft=i.toInt((e.negativeScrollAdjustment+t.scrollLeft)*(e.railXWidth-e.scrollbarXWidth)/(e.contentWidth-e.containerWidth))):e.scrollbarXActive=!1,!e.settings.suppressScrollY&&e.containerHeight+e.settings.scrollYMarginOffset<e.contentHeight?(e.scrollbarYActive=!0,e.railYHeight=e.containerHeight-e.railYMarginHeight,e.railYRatio=e.containerHeight/e.railYHeight,e.scrollbarYHeight=o(e,i.toInt(e.railYHeight*e.containerHeight/e.contentHeight)),e.scrollbarYTop=i.toInt(t.scrollTop*(e.railYHeight-e.scrollbarYHeight)/(e.contentHeight-e.containerHeight))):e.scrollbarYActive=!1,e.scrollbarXLeft>=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),n(t,e),e.scrollbarXActive?t.classList.add(\"ps--active-x\"):(t.classList.remove(\"ps--active-x\"),e.scrollbarXWidth=0,e.scrollbarXLeft=0,a(t,\"left\",0)),e.scrollbarYActive?t.classList.add(\"ps--active-y\"):(t.classList.remove(\"ps--active-y\"),e.scrollbarYHeight=0,e.scrollbarYTop=0,a(t,\"top\",0))}},function(t,e,r){\"use strict\";function o(t){var e,r=[\"ps--in-scrolling\"];return e=void 0===t?[\"ps--x\",\"ps--y\"]:[\"ps--\"+t],r.concat(e)}var n=r(4),i=e.toInt=function(t){return parseInt(t,10)||0};e.isEditable=function(t){return n.matches(t,\"input,[contenteditable]\")||n.matches(t,\"select,[contenteditable]\")||n.matches(t,\"textarea,[contenteditable]\")||n.matches(t,\"button,[contenteditable]\")},e.removePsClasses=function(t){for(var e=0;e<t.classList.length;e++){var r=t.classList[e];0===r.indexOf(\"ps-\")&&t.classList.remove(r)}},e.outerWidth=function(t){return i(n.css(t,\"width\"))+i(n.css(t,\"paddingLeft\"))+i(n.css(t,\"paddingRight\"))+i(n.css(t,\"borderLeftWidth\"))+i(n.css(t,\"borderRightWidth\"))},e.startScrolling=function(t,e){for(var r=o(e),n=0;n<r.length;n++)t.classList.add(r[n])},e.stopScrolling=function(t,e){for(var r=o(e),n=0;n<r.length;n++)t.classList.remove(r[n])},e.env={isWebKit:\"undefined\"!=typeof document&&\"WebkitAppearance\"in document.documentElement.style,supportsTouch:\"undefined\"!=typeof window&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:\"undefined\"!=typeof window&&null!==window.navigator.msMaxTouchPoints}},function(t,e,r){\"use strict\";var o=r(0),n=function(t){var e=document.createEvent(\"Event\");return e.initEvent(t,!0,!0),e};t.exports=function(t,e,r){if(void 0===t)throw\"You must provide an element to the update-scroll function\";if(void 0===e)throw\"You must provide an axis to the update-scroll function\";if(void 0===r)throw\"You must provide a value to the update-scroll function\";\"top\"===e&&r<=0&&(t.scrollTop=r=0,t.dispatchEvent(n(\"ps-y-reach-start\"))),\"left\"===e&&r<=0&&(t.scrollLeft=r=0,t.dispatchEvent(n(\"ps-x-reach-start\")));var i=o.get(t);\"top\"===e&&r>=i.contentHeight-i.containerHeight&&(r=i.contentHeight-i.containerHeight,r-t.scrollTop<=2?r=t.scrollTop:t.scrollTop=r,t.dispatchEvent(n(\"ps-y-reach-end\"))),\"left\"===e&&r>=i.contentWidth-i.containerWidth&&(r=i.contentWidth-i.containerWidth,r-t.scrollLeft<=2?r=t.scrollLeft:t.scrollLeft=r,t.dispatchEvent(n(\"ps-x-reach-end\"))),void 0===i.lastTop&&(i.lastTop=t.scrollTop),void 0===i.lastLeft&&(i.lastLeft=t.scrollLeft),\"top\"===e&&r<i.lastTop&&t.dispatchEvent(n(\"ps-scroll-up\")),\"top\"===e&&r>i.lastTop&&t.dispatchEvent(n(\"ps-scroll-down\")),\"left\"===e&&r<i.lastLeft&&t.dispatchEvent(n(\"ps-scroll-left\")),\"left\"===e&&r>i.lastLeft&&t.dispatchEvent(n(\"ps-scroll-right\")),\"top\"===e&&r!==i.lastTop&&(t.scrollTop=i.lastTop=r,t.dispatchEvent(n(\"ps-scroll-y\"))),\"left\"===e&&r!==i.lastLeft&&(t.scrollLeft=i.lastLeft=r,t.dispatchEvent(n(\"ps-scroll-x\")))}},function(t,e,r){\"use strict\";function o(t,e){return window.getComputedStyle(t)[e]}function n(t,e,r){return\"number\"==typeof r&&(r=r.toString()+\"px\"),t.style[e]=r,t}function i(t,e){for(var r in e){var o=e[r];\"number\"==typeof o&&(o=o.toString()+\"px\"),t.style[r]=o}return t}var l={};l.create=function(t,e){var r=document.createElement(t);return r.className=e,r},l.appendTo=function(t,e){return e.appendChild(t),t},l.css=function(t,e,r){return\"object\"==typeof e?i(t,e):void 0===r?o(t,e):n(t,e,r)},l.matches=function(t,e){return void 0!==t.matches?t.matches(e):t.msMatchesSelector(e)},l.remove=function(t){void 0!==t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)},l.queryChildren=function(t,e){return Array.prototype.filter.call(t.childNodes,function(t){return l.matches(t,e)})},t.exports=l},function(t,e,r){r(28);var o=r(25)(r(7),r(26),null,null);t.exports=o.exports},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(5),n=r.n(o);e.default=n.a},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(10),n=r.n(o);e.default={name:\"vue-perfect-scrollbar\",props:{settings:{default:void 0},swicher:{type:Boolean,default:!0},tagname:{type:String,default:\"section\"}},methods:{scrollHanle:function(t){this.$emit(t.type,t)},update:function(){n.a.update(this.$el)},__init:function(){this.swicher&&(this._ps_inited?this.update(this.$el):(this._ps_inited=!0,n.a.initialize(this.$el,this.settings)))},__uninit:function(){n.a.destroy(this.$el),this._ps_inited=!1}},watch:{swicher:function(t){t&&!this._ps_inited&&this.__init(),!t&&this._ps_inited&&this.__uninit()},$route:function(){this.update()}},mounted:function(){this.__init()},updated:function(){this.$nextTick(this.update)},activated:function(){this.__init()},deactivated:function(){this.__uninit()},beforeDestroy:function(){this.__uninit()}}},function(t,e,r){e=t.exports=r(9)(),e.push([t.i,\".ps{-ms-touch-action:auto;touch-action:auto;overflow:hidden!important;-ms-overflow-style:none}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.ps{overflow:auto!important}}.ps.ps--active-x>.ps__scrollbar-x-rail,.ps.ps--active-y>.ps__scrollbar-y-rail{display:block;background-color:transparent}.ps.ps--in-scrolling.ps--x>.ps__scrollbar-x-rail{background-color:#eee;opacity:.9}.ps.ps--in-scrolling.ps--x>.ps__scrollbar-x-rail>.ps__scrollbar-x{background-color:#999;height:11px}.ps.ps--in-scrolling.ps--y>.ps__scrollbar-y-rail{background-color:#eee;opacity:.9}.ps.ps--in-scrolling.ps--y>.ps__scrollbar-y-rail>.ps__scrollbar-y{background-color:#999;width:11px}.ps>.ps__scrollbar-x-rail{display:none;position:absolute;opacity:0;transition:background-color .2s linear,opacity .2s linear;bottom:0;height:15px}.ps>.ps__scrollbar-x-rail>.ps__scrollbar-x{position:absolute;background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;bottom:2px;height:6px}.ps>.ps__scrollbar-x-rail:active>.ps__scrollbar-x,.ps>.ps__scrollbar-x-rail:hover>.ps__scrollbar-x{height:11px}.ps>.ps__scrollbar-y-rail{display:none;position:absolute;opacity:0;transition:background-color .2s linear,opacity .2s linear;right:0;width:15px}.ps>.ps__scrollbar-y-rail>.ps__scrollbar-y{position:absolute;background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;right:2px;width:6px}.ps>.ps__scrollbar-y-rail:active>.ps__scrollbar-y,.ps>.ps__scrollbar-y-rail:hover>.ps__scrollbar-y{width:11px}.ps:hover.ps--in-scrolling.ps--x>.ps__scrollbar-x-rail{background-color:#eee;opacity:.9}.ps:hover.ps--in-scrolling.ps--x>.ps__scrollbar-x-rail>.ps__scrollbar-x{background-color:#999;height:11px}.ps:hover.ps--in-scrolling.ps--y>.ps__scrollbar-y-rail{background-color:#eee;opacity:.9}.ps:hover.ps--in-scrolling.ps--y>.ps__scrollbar-y-rail>.ps__scrollbar-y{background-color:#999;width:11px}.ps:hover>.ps__scrollbar-x-rail,.ps:hover>.ps__scrollbar-y-rail{opacity:.6}.ps:hover>.ps__scrollbar-x-rail:hover{background-color:#eee;opacity:.9}.ps:hover>.ps__scrollbar-x-rail:hover>.ps__scrollbar-x{background-color:#999}.ps:hover>.ps__scrollbar-y-rail:hover{background-color:#eee;opacity:.9}.ps:hover>.ps__scrollbar-y-rail:hover>.ps__scrollbar-y{background-color:#999}.ps-container{position:relative}\",\"\"])},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var r=this[e];r[2]?t.push(\"@media \"+r[2]+\"{\"+r[1]+\"}\"):t.push(r[1])}return t.join(\"\")},t.i=function(e,r){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var o={},n=0;n<this.length;n++){var i=this[n][0];\"number\"==typeof i&&(o[i]=!0)}for(n=0;n<e.length;n++){var l=e[n];\"number\"==typeof l[0]&&o[l[0]]||(r&&!l[2]?l[2]=r:r&&(l[2]=\"(\"+l[2]+\") and (\"+r+\")\"),t.push(l))}},t}},function(t,e,r){\"use strict\";t.exports=r(13)},function(t,e,r){\"use strict\";var o=function(t){this.element=t,this.events={}};o.prototype.bind=function(t,e){void 0===this.events[t]&&(this.events[t]=[]),this.events[t].push(e),this.element.addEventListener(t,e,!1)},o.prototype.unbind=function(t,e){var r=void 0!==e;this.events[t]=this.events[t].filter(function(o){return!(!r||o===e)||(this.element.removeEventListener(t,o,!1),!1)},this)},o.prototype.unbindAll=function(){for(var t in this.events)this.unbind(t)};var n=function(){this.eventElements=[]};n.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return void 0===e&&(e=new o(t),this.eventElements.push(e)),e},n.prototype.bind=function(t,e,r){this.eventElement(t).bind(e,r)},n.prototype.unbind=function(t,e,r){this.eventElement(t).unbind(e,r)},n.prototype.unbindAll=function(){for(var t=0;t<this.eventElements.length;t++)this.eventElements[t].unbindAll()},n.prototype.once=function(t,e,r){var o=this.eventElement(t),n=function(t){o.unbind(e,n),r(t)};o.bind(e,n)},t.exports=n},function(t,e,r){\"use strict\";t.exports=function(){function t(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return function(){return t()+t()+\"-\"+t()+\"-\"+t()+\"-\"+t()+\"-\"+t()+t()+t()}}()},function(t,e,r){\"use strict\";var o=r(15),n=r(23),i=r(24);t.exports={initialize:n,update:i,destroy:o}},function(t,e,r){\"use strict\";t.exports=function(){return{handlers:[\"click-rail\",\"drag-scrollbar\",\"keyboard\",\"wheel\",\"touch\"],maxScrollbarLength:null,minScrollbarLength:null,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1,theme:\"default\"}}},function(t,e,r){\"use strict\";var o=r(2),n=r(4),i=r(0);t.exports=function(t){var e=i.get(t);e&&(e.event.unbindAll(),n.remove(e.scrollbarX),n.remove(e.scrollbarY),n.remove(e.scrollbarXRail),n.remove(e.scrollbarYRail),o.removePsClasses(t),i.remove(t))}},function(t,e,r){\"use strict\";function o(t,e){function r(t){return t.getBoundingClientRect()}var o=function(t){t.stopPropagation()};e.event.bind(e.scrollbarY,\"click\",o),e.event.bind(e.scrollbarYRail,\"click\",function(o){var n=o.pageY-window.pageYOffset-r(e.scrollbarYRail).top,s=n>e.scrollbarYTop?1:-1;l(t,\"top\",t.scrollTop+s*e.containerHeight),i(t),o.stopPropagation()}),e.event.bind(e.scrollbarX,\"click\",o),e.event.bind(e.scrollbarXRail,\"click\",function(o){var n=o.pageX-window.pageXOffset-r(e.scrollbarXRail).left,s=n>e.scrollbarXLeft?1:-1;l(t,\"left\",t.scrollLeft+s*e.containerWidth),i(t),o.stopPropagation()})}var n=r(0),i=r(1),l=r(3);t.exports=function(t){o(t,n.get(t))}},function(t,e,r){\"use strict\";function o(t,e){function r(r){var n=o+r*e.railXRatio,l=Math.max(0,e.scrollbarXRail.getBoundingClientRect().left)+e.railXRatio*(e.railXWidth-e.scrollbarXWidth);e.scrollbarXLeft=n<0?0:n>l?l:n;var s=i.toInt(e.scrollbarXLeft*(e.contentWidth-e.containerWidth)/(e.containerWidth-e.railXRatio*e.scrollbarXWidth))-e.negativeScrollAdjustment;c(t,\"left\",s)}var o=null,n=null,s=function(e){r(e.pageX-n),a(t),e.stopPropagation(),e.preventDefault()},u=function(){i.stopScrolling(t,\"x\"),e.event.unbind(e.ownerDocument,\"mousemove\",s)};e.event.bind(e.scrollbarX,\"mousedown\",function(r){n=r.pageX,o=i.toInt(l.css(e.scrollbarX,\"left\"))*e.railXRatio,i.startScrolling(t,\"x\"),e.event.bind(e.ownerDocument,\"mousemove\",s),e.event.once(e.ownerDocument,\"mouseup\",u),r.stopPropagation(),r.preventDefault()})}function n(t,e){function r(r){var n=o+r*e.railYRatio,l=Math.max(0,e.scrollbarYRail.getBoundingClientRect().top)+e.railYRatio*(e.railYHeight-e.scrollbarYHeight);e.scrollbarYTop=n<0?0:n>l?l:n;var s=i.toInt(e.scrollbarYTop*(e.contentHeight-e.containerHeight)/(e.containerHeight-e.railYRatio*e.scrollbarYHeight));c(t,\"top\",s)}var o=null,n=null,s=function(e){r(e.pageY-n),a(t),e.stopPropagation(),e.preventDefault()},u=function(){i.stopScrolling(t,\"y\"),e.event.unbind(e.ownerDocument,\"mousemove\",s)};e.event.bind(e.scrollbarY,\"mousedown\",function(r){n=r.pageY,o=i.toInt(l.css(e.scrollbarY,\"top\"))*e.railYRatio,i.startScrolling(t,\"y\"),e.event.bind(e.ownerDocument,\"mousemove\",s),e.event.once(e.ownerDocument,\"mouseup\",u),r.stopPropagation(),r.preventDefault()})}var i=r(2),l=r(4),s=r(0),a=r(1),c=r(3);t.exports=function(t){var e=s.get(t);o(t,e),n(t,e)}},function(t,e,r){\"use strict\";function o(t,e){function r(r,o){var n=t.scrollTop;if(0===r){if(!e.scrollbarYActive)return!1;if(0===n&&o>0||n>=e.contentHeight-e.containerHeight&&o<0)return!e.settings.wheelPropagation}var i=t.scrollLeft;if(0===o){if(!e.scrollbarXActive)return!1;if(0===i&&r<0||i>=e.contentWidth-e.containerWidth&&r>0)return!e.settings.wheelPropagation}return!0}var o=!1;e.event.bind(t,\"mouseenter\",function(){o=!0}),e.event.bind(t,\"mouseleave\",function(){o=!1});var l=!1;e.event.bind(e.ownerDocument,\"keydown\",function(c){if(!(c.isDefaultPrevented&&c.isDefaultPrevented()||c.defaultPrevented)){var u=i.matches(e.scrollbarX,\":focus\")||i.matches(e.scrollbarY,\":focus\");if(o||u){var p=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(p){if(\"IFRAME\"===p.tagName)p=p.contentDocument.activeElement;else for(;p.shadowRoot;)p=p.shadowRoot.activeElement;if(n.isEditable(p))return}var d=0,f=0;switch(c.which){case 37:d=c.metaKey?-e.contentWidth:c.altKey?-e.containerWidth:-30;break;case 38:f=c.metaKey?e.contentHeight:c.altKey?e.containerHeight:30;break;case 39:d=c.metaKey?e.contentWidth:c.altKey?e.containerWidth:30;break;case 40:f=c.metaKey?-e.contentHeight:c.altKey?-e.containerHeight:-30;break;case 33:f=90;break;case 32:f=c.shiftKey?90:-90;break;case 34:f=-90;break;case 35:f=c.ctrlKey?-e.contentHeight:-e.containerHeight;break;case 36:f=c.ctrlKey?t.scrollTop:e.containerHeight;break;default:return}a(t,\"top\",t.scrollTop-f),a(t,\"left\",t.scrollLeft+d),s(t),l=r(d,f),l&&c.preventDefault()}}})}var n=r(2),i=r(4),l=r(0),s=r(1),a=r(3);t.exports=function(t){o(t,l.get(t))}},function(t,e,r){\"use strict\";function o(t,e){function r(r,o){var n=t.scrollTop;if(0===r){if(!e.scrollbarYActive)return!1;if(0===n&&o>0||n>=e.contentHeight-e.containerHeight&&o<0)return!e.settings.wheelPropagation}var i=t.scrollLeft;if(0===o){if(!e.scrollbarXActive)return!1;if(0===i&&r<0||i>=e.contentWidth-e.containerWidth&&r>0)return!e.settings.wheelPropagation}return!0}function o(t){var e=t.deltaX,r=-1*t.deltaY;return void 0!==e&&void 0!==r||(e=-1*t.wheelDeltaX/6,r=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,r*=10),e!==e&&r!==r&&(e=0,r=t.wheelDelta),t.shiftKey?[-r,-e]:[e,r]}function n(e,r){var o=t.querySelector(\"textarea:hover, select[multiple]:hover, .ps-child:hover\");if(o){var n=window.getComputedStyle(o);if(![n.overflow,n.overflowX,n.overflowY].join(\"\").match(/(scroll|auto)/))return!1;var i=o.scrollHeight-o.clientHeight;if(i>0&&!(0===o.scrollTop&&r>0||o.scrollTop===i&&r<0))return!0;var l=o.scrollLeft-o.clientWidth;if(l>0&&!(0===o.scrollLeft&&e<0||o.scrollLeft===l&&e>0))return!0}return!1}function s(s){var c=o(s),u=c[0],p=c[1];n(u,p)||(a=!1,e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(p?l(t,\"top\",t.scrollTop-p*e.settings.wheelSpeed):l(t,\"top\",t.scrollTop+u*e.settings.wheelSpeed),a=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(u?l(t,\"left\",t.scrollLeft+u*e.settings.wheelSpeed):l(t,\"left\",t.scrollLeft-p*e.settings.wheelSpeed),a=!0):(l(t,\"top\",t.scrollTop-p*e.settings.wheelSpeed),l(t,\"left\",t.scrollLeft+u*e.settings.wheelSpeed)),i(t),(a=a||r(u,p))&&(s.stopPropagation(),s.preventDefault()))}var a=!1;void 0!==window.onwheel?e.event.bind(t,\"wheel\",s):void 0!==window.onmousewheel&&e.event.bind(t,\"mousewheel\",s)}var n=r(0),i=r(1),l=r(3);t.exports=function(t){o(t,n.get(t))}},function(t,e,r){\"use strict\";function o(t,e){e.event.bind(t,\"scroll\",function(){i(t)})}var n=r(0),i=r(1);t.exports=function(t){o(t,n.get(t))}},function(t,e,r){\"use strict\";function o(t,e){function r(){var t=window.getSelection?window.getSelection():document.getSelection?document.getSelection():\"\";return 0===t.toString().length?null:t.getRangeAt(0).commonAncestorContainer}function o(){c||(c=setInterval(function(){if(!i.get(t))return void clearInterval(c);s(t,\"top\",t.scrollTop+u.top),s(t,\"left\",t.scrollLeft+u.left),l(t)},50))}function a(){c&&(clearInterval(c),c=null),n.stopScrolling(t)}var c=null,u={top:0,left:0},p=!1;e.event.bind(e.ownerDocument,\"selectionchange\",function(){t.contains(r())?p=!0:(p=!1,a())}),e.event.bind(window,\"mouseup\",function(){p&&(p=!1,a())}),e.event.bind(window,\"keyup\",function(){p&&(p=!1,a())}),e.event.bind(window,\"mousemove\",function(e){if(p){var r={x:e.pageX,y:e.pageY},i={left:t.offsetLeft,right:t.offsetLeft+t.offsetWidth,top:t.offsetTop,bottom:t.offsetTop+t.offsetHeight};r.x<i.left+3?(u.left=-5,n.startScrolling(t,\"x\")):r.x>i.right-3?(u.left=5,n.startScrolling(t,\"x\")):u.left=0,r.y<i.top+3?(u.top=i.top+3-r.y<5?-5:-20,n.startScrolling(t,\"y\")):r.y>i.bottom-3?(u.top=r.y-i.bottom+3<5?5:20,n.startScrolling(t,\"y\")):u.top=0,0===u.top&&0===u.left?a():o()}})}var n=r(2),i=r(0),l=r(1),s=r(3);t.exports=function(t){o(t,i.get(t))}},function(t,e,r){\"use strict\";function o(t,e,r,o){function n(r,o){var n=t.scrollTop,i=t.scrollLeft,l=Math.abs(r),s=Math.abs(o);if(s>l){if(o<0&&n===e.contentHeight-e.containerHeight||o>0&&0===n)return!e.settings.swipePropagation}else if(l>s&&(r<0&&i===e.contentWidth-e.containerWidth||r>0&&0===i))return!e.settings.swipePropagation;return!0}function a(e,r){s(t,\"top\",t.scrollTop-r),s(t,\"left\",t.scrollLeft-e),l(t)}function c(){w=!0}function u(){w=!1}function p(t){return t.targetTouches?t.targetTouches[0]:t}function d(t){return(!t.pointerType||\"pen\"!==t.pointerType||0!==t.buttons)&&(!(!t.targetTouches||1!==t.targetTouches.length)||!(!t.pointerType||\"mouse\"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))}function f(t){if(d(t)){_=!0;var e=p(t);b.pageX=e.pageX,b.pageY=e.pageY,g=(new Date).getTime(),null!==y&&clearInterval(y),t.stopPropagation()}}function h(t){if(!_&&e.settings.swipePropagation&&f(t),!w&&_&&d(t)){var r=p(t),o={pageX:r.pageX,pageY:r.pageY},i=o.pageX-b.pageX,l=o.pageY-b.pageY;a(i,l),b=o;var s=(new Date).getTime(),c=s-g;c>0&&(m.x=i/c,m.y=l/c,g=s),n(i,l)&&(t.stopPropagation(),t.preventDefault())}}function v(){!w&&_&&(_=!1,e.settings.swipeEasing&&(clearInterval(y),y=setInterval(function(){return i.get(t)&&(m.x||m.y)?Math.abs(m.x)<.01&&Math.abs(m.y)<.01?void clearInterval(y):(a(30*m.x,30*m.y),m.x*=.8,void(m.y*=.8)):void clearInterval(y)},10)))}var b={},g=0,m={},y=null,w=!1,_=!1;r?(e.event.bind(window,\"touchstart\",c),e.event.bind(window,\"touchend\",u),e.event.bind(t,\"touchstart\",f),e.event.bind(t,\"touchmove\",h),e.event.bind(t,\"touchend\",v)):o&&(window.PointerEvent?(e.event.bind(window,\"pointerdown\",c),e.event.bind(window,\"pointerup\",u),e.event.bind(t,\"pointerdown\",f),e.event.bind(t,\"pointermove\",h),e.event.bind(t,\"pointerup\",v)):window.MSPointerEvent&&(e.event.bind(window,\"MSPointerDown\",c),e.event.bind(window,\"MSPointerUp\",u),e.event.bind(t,\"MSPointerDown\",f),e.event.bind(t,\"MSPointerMove\",h),e.event.bind(t,\"MSPointerUp\",v)))}var n=r(2),i=r(0),l=r(1),s=r(3);t.exports=function(t){if(n.env.supportsTouch||n.env.supportsIePointer){o(t,i.get(t),n.env.supportsTouch,n.env.supportsIePointer)}}},function(t,e,r){\"use strict\";var o=r(0),n=r(1),i={\"click-rail\":r(16),\"drag-scrollbar\":r(17),keyboard:r(18),wheel:r(19),touch:r(22),selection:r(21)},l=r(20);t.exports=function(t,e){t.classList.add(\"ps\");var r=o.add(t,\"object\"==typeof e?e:{});t.classList.add(\"ps--theme_\"+r.settings.theme),r.settings.handlers.forEach(function(e){i[e](t)}),l(t),n(t)}},function(t,e,r){\"use strict\";var o=r(2),n=r(4),i=r(0),l=r(1),s=r(3);t.exports=function(t){var e=i.get(t);e&&(e.negativeScrollAdjustment=e.isNegativeScroll?t.scrollWidth-t.clientWidth:0,n.css(e.scrollbarXRail,\"display\",\"block\"),n.css(e.scrollbarYRail,\"display\",\"block\"),e.railXMarginWidth=o.toInt(n.css(e.scrollbarXRail,\"marginLeft\"))+o.toInt(n.css(e.scrollbarXRail,\"marginRight\")),e.railYMarginHeight=o.toInt(n.css(e.scrollbarYRail,\"marginTop\"))+o.toInt(n.css(e.scrollbarYRail,\"marginBottom\")),n.css(e.scrollbarXRail,\"display\",\"none\"),n.css(e.scrollbarYRail,\"display\",\"none\"),l(t),s(t,\"top\",t.scrollTop),s(t,\"left\",t.scrollLeft),n.css(e.scrollbarXRail,\"display\",\"\"),n.css(e.scrollbarYRail,\"display\",\"\"))}},function(t,e){t.exports=function(t,e,r,o){var n,i=t=t||{},l=typeof t.default;\"object\"!==l&&\"function\"!==l||(n=t,i=t.default);var s=\"function\"==typeof i?i.options:i;if(e&&(s.render=e.render,s.staticRenderFns=e.staticRenderFns),r&&(s._scopeId=r),o){var a=s.computed||(s.computed={});Object.keys(o).forEach(function(t){var e=o[t];a[t]=function(){return e}})}return{esModule:n,exports:i,options:s}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement;return(t._self._c||e)(t.$props.tagname,{tag:\"section\",staticClass:\"ps-container\",on:{\"~mouseover\":function(e){t.update(e)},\"ps-scroll-y\":t.scrollHanle,\"ps-scroll-x\":t.scrollHanle,\"ps-scroll-up\":t.scrollHanle,\"ps-scroll-down\":t.scrollHanle,\"ps-scroll-left\":t.scrollHanle,\"ps-scroll-right\":t.scrollHanle,\"ps-y-reach-start\":t.scrollHanle,\"ps-y-reach-end\":t.scrollHanle,\"ps-x-reach-start\":t.scrollHanle,\"ps-x-reach-end\":t.scrollHanle}},[t._t(\"default\")],2)},staticRenderFns:[]}},function(t,e){function r(t,e){for(var r=0;r<t.length;r++){var o=t[r],n=u[o.id];if(n){n.refs++;for(var i=0;i<n.parts.length;i++)n.parts[i](o.parts[i]);for(;i<o.parts.length;i++)n.parts.push(s(o.parts[i],e))}else{for(var l=[],i=0;i<o.parts.length;i++)l.push(s(o.parts[i],e));u[o.id]={id:o.id,refs:1,parts:l}}}}function o(t){for(var e=[],r={},o=0;o<t.length;o++){var n=t[o],i=n[0],l=n[1],s=n[2],a=n[3],c={css:l,media:s,sourceMap:a};r[i]?r[i].parts.push(c):e.push(r[i]={id:i,parts:[c]})}return e}function n(t,e){var r=f(),o=b[b.length-1];if(\"top\"===t.insertAt)o?o.nextSibling?r.insertBefore(e,o.nextSibling):r.appendChild(e):r.insertBefore(e,r.firstChild),b.push(e);else{if(\"bottom\"!==t.insertAt)throw new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");r.appendChild(e)}}function i(t){t.parentNode.removeChild(t);var e=b.indexOf(t);e>=0&&b.splice(e,1)}function l(t){var e=document.createElement(\"style\");return e.type=\"text/css\",n(t,e),e}function s(t,e){var r,o,n;if(e.singleton){var s=v++;r=h||(h=l(e)),o=a.bind(null,r,s,!1),n=a.bind(null,r,s,!0)}else r=l(e),o=c.bind(null,r),n=function(){i(r)};return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else n()}}function a(t,e,r,o){var n=r?\"\":o.css;if(t.styleSheet)t.styleSheet.cssText=g(e,n);else{var i=document.createTextNode(n),l=t.childNodes;l[e]&&t.removeChild(l[e]),l.length?t.insertBefore(i,l[e]):t.appendChild(i)}}function c(t,e){var r=e.css,o=e.media,n=e.sourceMap;if(o&&t.setAttribute(\"media\",o),n&&(r+=\"\\n/*# sourceURL=\"+n.sources[0]+\" */\",r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+\" */\"),t.styleSheet)t.styleSheet.cssText=r;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(r))}}var u={},p=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}},d=p(function(){return/msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase())}),f=p(function(){return document.head||document.getElementsByTagName(\"head\")[0]}),h=null,v=0,b=[];t.exports=function(t,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");e=e||{},void 0===e.singleton&&(e.singleton=d()),void 0===e.insertAt&&(e.insertAt=\"bottom\");var n=o(t);return r(n,e),function(t){for(var i=[],l=0;l<n.length;l++){var s=n[l],a=u[s.id];a.refs--,i.push(a)}if(t){r(o(t),e)}for(var l=0;l<i.length;l++){var a=i[l];if(0===a.refs){for(var c=0;c<a.parts.length;c++)a.parts[c]();delete u[a.id]}}}};var g=function(){var t=[];return function(e,r){return t[e]=r,t.filter(Boolean).join(\"\\n\")}}()},function(t,e,r){var o=r(8);\"string\"==typeof o&&(o=[[t.i,o,\"\"]]);r(27)(o,{});o.locals&&(t.exports=o.locals)}]);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXBlcmZlY3Qtc2Nyb2xsYmFyL2Rpc3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXBlcmZlY3Qtc2Nyb2xsYmFyL2Rpc3QvaW5kZXguanM/OWQ2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKG8pe2lmKHJbb10pcmV0dXJuIHJbb10uZXhwb3J0czt2YXIgbj1yW29dPXtpOm8sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtvXS5jYWxsKG4uZXhwb3J0cyxuLG4uZXhwb3J0cyxlKSxuLmw9ITAsbi5leHBvcnRzfXZhciByPXt9O3JldHVybiBlLm09dCxlLmM9cixlLmk9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZD1mdW5jdGlvbih0LHIsbyl7ZS5vKHQscil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpvfSl9LGUubj1mdW5jdGlvbih0KXt2YXIgcj10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiB0fTtyZXR1cm4gZS5kKHIsXCJhXCIscikscn0sZS5vPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfSxlLnA9XCIvZGlzdC9cIixlKGUucz02KX0oW2Z1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBvKHQsZSl7ZnVuY3Rpb24gcigpe3QuY2xhc3NMaXN0LmFkZChcInBzLS1mb2N1c1wiKX1mdW5jdGlvbiBvKCl7dC5jbGFzc0xpc3QucmVtb3ZlKFwicHMtLWZvY3VzXCIpfXZhciBuPXRoaXM7bi5zZXR0aW5ncz1hKCk7Zm9yKHZhciBpIGluIGUpbi5zZXR0aW5nc1tpXT1lW2ldO24uY29udGFpbmVyV2lkdGg9bnVsbCxuLmNvbnRhaW5lckhlaWdodD1udWxsLG4uY29udGVudFdpZHRoPW51bGwsbi5jb250ZW50SGVpZ2h0PW51bGwsbi5pc1J0bD1cInJ0bFwiPT09Yy5jc3ModCxcImRpcmVjdGlvblwiKSxuLmlzTmVnYXRpdmVTY3JvbGw9ZnVuY3Rpb24oKXt2YXIgZT10LnNjcm9sbExlZnQscj1udWxsO3JldHVybiB0LnNjcm9sbExlZnQ9LTEscj10LnNjcm9sbExlZnQ8MCx0LnNjcm9sbExlZnQ9ZSxyfSgpLG4ubmVnYXRpdmVTY3JvbGxBZGp1c3RtZW50PW4uaXNOZWdhdGl2ZVNjcm9sbD90LnNjcm9sbFdpZHRoLXQuY2xpZW50V2lkdGg6MCxuLmV2ZW50PW5ldyB1LG4ub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnR8fGRvY3VtZW50LG4uc2Nyb2xsYmFyWFJhaWw9Yy5hcHBlbmRUbyhjLmNyZWF0ZShcImRpdlwiLFwicHNfX3Njcm9sbGJhci14LXJhaWxcIiksdCksbi5zY3JvbGxiYXJYPWMuYXBwZW5kVG8oYy5jcmVhdGUoXCJkaXZcIixcInBzX19zY3JvbGxiYXIteFwiKSxuLnNjcm9sbGJhclhSYWlsKSxuLnNjcm9sbGJhclguc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiwwKSxuLmV2ZW50LmJpbmQobi5zY3JvbGxiYXJYLFwiZm9jdXNcIixyKSxuLmV2ZW50LmJpbmQobi5zY3JvbGxiYXJYLFwiYmx1clwiLG8pLG4uc2Nyb2xsYmFyWEFjdGl2ZT1udWxsLG4uc2Nyb2xsYmFyWFdpZHRoPW51bGwsbi5zY3JvbGxiYXJYTGVmdD1udWxsLG4uc2Nyb2xsYmFyWEJvdHRvbT1zLnRvSW50KGMuY3NzKG4uc2Nyb2xsYmFyWFJhaWwsXCJib3R0b21cIikpLG4uaXNTY3JvbGxiYXJYVXNpbmdCb3R0b209bi5zY3JvbGxiYXJYQm90dG9tPT09bi5zY3JvbGxiYXJYQm90dG9tLG4uc2Nyb2xsYmFyWFRvcD1uLmlzU2Nyb2xsYmFyWFVzaW5nQm90dG9tP251bGw6cy50b0ludChjLmNzcyhuLnNjcm9sbGJhclhSYWlsLFwidG9wXCIpKSxuLnJhaWxCb3JkZXJYV2lkdGg9cy50b0ludChjLmNzcyhuLnNjcm9sbGJhclhSYWlsLFwiYm9yZGVyTGVmdFdpZHRoXCIpKStzLnRvSW50KGMuY3NzKG4uc2Nyb2xsYmFyWFJhaWwsXCJib3JkZXJSaWdodFdpZHRoXCIpKSxjLmNzcyhuLnNjcm9sbGJhclhSYWlsLFwiZGlzcGxheVwiLFwiYmxvY2tcIiksbi5yYWlsWE1hcmdpbldpZHRoPXMudG9JbnQoYy5jc3Mobi5zY3JvbGxiYXJYUmFpbCxcIm1hcmdpbkxlZnRcIikpK3MudG9JbnQoYy5jc3Mobi5zY3JvbGxiYXJYUmFpbCxcIm1hcmdpblJpZ2h0XCIpKSxjLmNzcyhuLnNjcm9sbGJhclhSYWlsLFwiZGlzcGxheVwiLFwiXCIpLG4ucmFpbFhXaWR0aD1udWxsLG4ucmFpbFhSYXRpbz1udWxsLG4uc2Nyb2xsYmFyWVJhaWw9Yy5hcHBlbmRUbyhjLmNyZWF0ZShcImRpdlwiLFwicHNfX3Njcm9sbGJhci15LXJhaWxcIiksdCksbi5zY3JvbGxiYXJZPWMuYXBwZW5kVG8oYy5jcmVhdGUoXCJkaXZcIixcInBzX19zY3JvbGxiYXIteVwiKSxuLnNjcm9sbGJhcllSYWlsKSxuLnNjcm9sbGJhclkuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiwwKSxuLmV2ZW50LmJpbmQobi5zY3JvbGxiYXJZLFwiZm9jdXNcIixyKSxuLmV2ZW50LmJpbmQobi5zY3JvbGxiYXJZLFwiYmx1clwiLG8pLG4uc2Nyb2xsYmFyWUFjdGl2ZT1udWxsLG4uc2Nyb2xsYmFyWUhlaWdodD1udWxsLG4uc2Nyb2xsYmFyWVRvcD1udWxsLG4uc2Nyb2xsYmFyWVJpZ2h0PXMudG9JbnQoYy5jc3Mobi5zY3JvbGxiYXJZUmFpbCxcInJpZ2h0XCIpKSxuLmlzU2Nyb2xsYmFyWVVzaW5nUmlnaHQ9bi5zY3JvbGxiYXJZUmlnaHQ9PT1uLnNjcm9sbGJhcllSaWdodCxuLnNjcm9sbGJhcllMZWZ0PW4uaXNTY3JvbGxiYXJZVXNpbmdSaWdodD9udWxsOnMudG9JbnQoYy5jc3Mobi5zY3JvbGxiYXJZUmFpbCxcImxlZnRcIikpLG4uc2Nyb2xsYmFyWU91dGVyV2lkdGg9bi5pc1J0bD9zLm91dGVyV2lkdGgobi5zY3JvbGxiYXJZKTpudWxsLG4ucmFpbEJvcmRlcllXaWR0aD1zLnRvSW50KGMuY3NzKG4uc2Nyb2xsYmFyWVJhaWwsXCJib3JkZXJUb3BXaWR0aFwiKSkrcy50b0ludChjLmNzcyhuLnNjcm9sbGJhcllSYWlsLFwiYm9yZGVyQm90dG9tV2lkdGhcIikpLGMuY3NzKG4uc2Nyb2xsYmFyWVJhaWwsXCJkaXNwbGF5XCIsXCJibG9ja1wiKSxuLnJhaWxZTWFyZ2luSGVpZ2h0PXMudG9JbnQoYy5jc3Mobi5zY3JvbGxiYXJZUmFpbCxcIm1hcmdpblRvcFwiKSkrcy50b0ludChjLmNzcyhuLnNjcm9sbGJhcllSYWlsLFwibWFyZ2luQm90dG9tXCIpKSxjLmNzcyhuLnNjcm9sbGJhcllSYWlsLFwiZGlzcGxheVwiLFwiXCIpLG4ucmFpbFlIZWlnaHQ9bnVsbCxuLnJhaWxZUmF0aW89bnVsbH1mdW5jdGlvbiBuKHQpe3JldHVybiB0LmdldEF0dHJpYnV0ZShcImRhdGEtcHMtaWRcIil9ZnVuY3Rpb24gaSh0LGUpe3Quc2V0QXR0cmlidXRlKFwiZGF0YS1wcy1pZFwiLGUpfWZ1bmN0aW9uIGwodCl7dC5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLXBzLWlkXCIpfXZhciBzPXIoMiksYT1yKDE0KSxjPXIoNCksdT1yKDExKSxwPXIoMTIpLGQ9e307ZS5hZGQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1wKCk7cmV0dXJuIGkodCxyKSxkW3JdPW5ldyBvKHQsZSksZFtyXX0sZS5yZW1vdmU9ZnVuY3Rpb24odCl7ZGVsZXRlIGRbbih0KV0sbCh0KX0sZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRbbih0KV19fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0LnNldHRpbmdzLm1pblNjcm9sbGJhckxlbmd0aCYmKGU9TWF0aC5tYXgoZSx0LnNldHRpbmdzLm1pblNjcm9sbGJhckxlbmd0aCkpLHQuc2V0dGluZ3MubWF4U2Nyb2xsYmFyTGVuZ3RoJiYoZT1NYXRoLm1pbihlLHQuc2V0dGluZ3MubWF4U2Nyb2xsYmFyTGVuZ3RoKSksZX1mdW5jdGlvbiBuKHQsZSl7dmFyIHI9e3dpZHRoOmUucmFpbFhXaWR0aH07ZS5pc1J0bD9yLmxlZnQ9ZS5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQrdC5zY3JvbGxMZWZ0K2UuY29udGFpbmVyV2lkdGgtZS5jb250ZW50V2lkdGg6ci5sZWZ0PXQuc2Nyb2xsTGVmdCxlLmlzU2Nyb2xsYmFyWFVzaW5nQm90dG9tP3IuYm90dG9tPWUuc2Nyb2xsYmFyWEJvdHRvbS10LnNjcm9sbFRvcDpyLnRvcD1lLnNjcm9sbGJhclhUb3ArdC5zY3JvbGxUb3AsbC5jc3MoZS5zY3JvbGxiYXJYUmFpbCxyKTt2YXIgbz17dG9wOnQuc2Nyb2xsVG9wLGhlaWdodDplLnJhaWxZSGVpZ2h0fTtlLmlzU2Nyb2xsYmFyWVVzaW5nUmlnaHQ/ZS5pc1J0bD9vLnJpZ2h0PWUuY29udGVudFdpZHRoLShlLm5lZ2F0aXZlU2Nyb2xsQWRqdXN0bWVudCt0LnNjcm9sbExlZnQpLWUuc2Nyb2xsYmFyWVJpZ2h0LWUuc2Nyb2xsYmFyWU91dGVyV2lkdGg6by5yaWdodD1lLnNjcm9sbGJhcllSaWdodC10LnNjcm9sbExlZnQ6ZS5pc1J0bD9vLmxlZnQ9ZS5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQrdC5zY3JvbGxMZWZ0KzIqZS5jb250YWluZXJXaWR0aC1lLmNvbnRlbnRXaWR0aC1lLnNjcm9sbGJhcllMZWZ0LWUuc2Nyb2xsYmFyWU91dGVyV2lkdGg6by5sZWZ0PWUuc2Nyb2xsYmFyWUxlZnQrdC5zY3JvbGxMZWZ0LGwuY3NzKGUuc2Nyb2xsYmFyWVJhaWwsbyksbC5jc3MoZS5zY3JvbGxiYXJYLHtsZWZ0OmUuc2Nyb2xsYmFyWExlZnQsd2lkdGg6ZS5zY3JvbGxiYXJYV2lkdGgtZS5yYWlsQm9yZGVyWFdpZHRofSksbC5jc3MoZS5zY3JvbGxiYXJZLHt0b3A6ZS5zY3JvbGxiYXJZVG9wLGhlaWdodDplLnNjcm9sbGJhcllIZWlnaHQtZS5yYWlsQm9yZGVyWVdpZHRofSl9dmFyIGk9cigyKSxsPXIoNCkscz1yKDApLGE9cigzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9cy5nZXQodCk7ZS5jb250YWluZXJXaWR0aD10LmNsaWVudFdpZHRoLGUuY29udGFpbmVySGVpZ2h0PXQuY2xpZW50SGVpZ2h0LGUuY29udGVudFdpZHRoPXQuc2Nyb2xsV2lkdGgsZS5jb250ZW50SGVpZ2h0PXQuc2Nyb2xsSGVpZ2h0O3ZhciByO3QuY29udGFpbnMoZS5zY3JvbGxiYXJYUmFpbCl8fChyPWwucXVlcnlDaGlsZHJlbih0LFwiLnBzX19zY3JvbGxiYXIteC1yYWlsXCIpLHIubGVuZ3RoPjAmJnIuZm9yRWFjaChmdW5jdGlvbih0KXtsLnJlbW92ZSh0KX0pLGwuYXBwZW5kVG8oZS5zY3JvbGxiYXJYUmFpbCx0KSksdC5jb250YWlucyhlLnNjcm9sbGJhcllSYWlsKXx8KHI9bC5xdWVyeUNoaWxkcmVuKHQsXCIucHNfX3Njcm9sbGJhci15LXJhaWxcIiksci5sZW5ndGg+MCYmci5mb3JFYWNoKGZ1bmN0aW9uKHQpe2wucmVtb3ZlKHQpfSksbC5hcHBlbmRUbyhlLnNjcm9sbGJhcllSYWlsLHQpKSwhZS5zZXR0aW5ncy5zdXBwcmVzc1Njcm9sbFgmJmUuY29udGFpbmVyV2lkdGgrZS5zZXR0aW5ncy5zY3JvbGxYTWFyZ2luT2Zmc2V0PGUuY29udGVudFdpZHRoPyhlLnNjcm9sbGJhclhBY3RpdmU9ITAsZS5yYWlsWFdpZHRoPWUuY29udGFpbmVyV2lkdGgtZS5yYWlsWE1hcmdpbldpZHRoLGUucmFpbFhSYXRpbz1lLmNvbnRhaW5lcldpZHRoL2UucmFpbFhXaWR0aCxlLnNjcm9sbGJhclhXaWR0aD1vKGUsaS50b0ludChlLnJhaWxYV2lkdGgqZS5jb250YWluZXJXaWR0aC9lLmNvbnRlbnRXaWR0aCkpLGUuc2Nyb2xsYmFyWExlZnQ9aS50b0ludCgoZS5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQrdC5zY3JvbGxMZWZ0KSooZS5yYWlsWFdpZHRoLWUuc2Nyb2xsYmFyWFdpZHRoKS8oZS5jb250ZW50V2lkdGgtZS5jb250YWluZXJXaWR0aCkpKTplLnNjcm9sbGJhclhBY3RpdmU9ITEsIWUuc2V0dGluZ3Muc3VwcHJlc3NTY3JvbGxZJiZlLmNvbnRhaW5lckhlaWdodCtlLnNldHRpbmdzLnNjcm9sbFlNYXJnaW5PZmZzZXQ8ZS5jb250ZW50SGVpZ2h0PyhlLnNjcm9sbGJhcllBY3RpdmU9ITAsZS5yYWlsWUhlaWdodD1lLmNvbnRhaW5lckhlaWdodC1lLnJhaWxZTWFyZ2luSGVpZ2h0LGUucmFpbFlSYXRpbz1lLmNvbnRhaW5lckhlaWdodC9lLnJhaWxZSGVpZ2h0LGUuc2Nyb2xsYmFyWUhlaWdodD1vKGUsaS50b0ludChlLnJhaWxZSGVpZ2h0KmUuY29udGFpbmVySGVpZ2h0L2UuY29udGVudEhlaWdodCkpLGUuc2Nyb2xsYmFyWVRvcD1pLnRvSW50KHQuc2Nyb2xsVG9wKihlLnJhaWxZSGVpZ2h0LWUuc2Nyb2xsYmFyWUhlaWdodCkvKGUuY29udGVudEhlaWdodC1lLmNvbnRhaW5lckhlaWdodCkpKTplLnNjcm9sbGJhcllBY3RpdmU9ITEsZS5zY3JvbGxiYXJYTGVmdD49ZS5yYWlsWFdpZHRoLWUuc2Nyb2xsYmFyWFdpZHRoJiYoZS5zY3JvbGxiYXJYTGVmdD1lLnJhaWxYV2lkdGgtZS5zY3JvbGxiYXJYV2lkdGgpLGUuc2Nyb2xsYmFyWVRvcD49ZS5yYWlsWUhlaWdodC1lLnNjcm9sbGJhcllIZWlnaHQmJihlLnNjcm9sbGJhcllUb3A9ZS5yYWlsWUhlaWdodC1lLnNjcm9sbGJhcllIZWlnaHQpLG4odCxlKSxlLnNjcm9sbGJhclhBY3RpdmU/dC5jbGFzc0xpc3QuYWRkKFwicHMtLWFjdGl2ZS14XCIpOih0LmNsYXNzTGlzdC5yZW1vdmUoXCJwcy0tYWN0aXZlLXhcIiksZS5zY3JvbGxiYXJYV2lkdGg9MCxlLnNjcm9sbGJhclhMZWZ0PTAsYSh0LFwibGVmdFwiLDApKSxlLnNjcm9sbGJhcllBY3RpdmU/dC5jbGFzc0xpc3QuYWRkKFwicHMtLWFjdGl2ZS15XCIpOih0LmNsYXNzTGlzdC5yZW1vdmUoXCJwcy0tYWN0aXZlLXlcIiksZS5zY3JvbGxiYXJZSGVpZ2h0PTAsZS5zY3JvbGxiYXJZVG9wPTAsYSh0LFwidG9wXCIsMCkpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG8odCl7dmFyIGUscj1bXCJwcy0taW4tc2Nyb2xsaW5nXCJdO3JldHVybiBlPXZvaWQgMD09PXQ/W1wicHMtLXhcIixcInBzLS15XCJdOltcInBzLS1cIit0XSxyLmNvbmNhdChlKX12YXIgbj1yKDQpLGk9ZS50b0ludD1mdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl8fDB9O2UuaXNFZGl0YWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gbi5tYXRjaGVzKHQsXCJpbnB1dCxbY29udGVudGVkaXRhYmxlXVwiKXx8bi5tYXRjaGVzKHQsXCJzZWxlY3QsW2NvbnRlbnRlZGl0YWJsZV1cIil8fG4ubWF0Y2hlcyh0LFwidGV4dGFyZWEsW2NvbnRlbnRlZGl0YWJsZV1cIil8fG4ubWF0Y2hlcyh0LFwiYnV0dG9uLFtjb250ZW50ZWRpdGFibGVdXCIpfSxlLnJlbW92ZVBzQ2xhc3Nlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQuY2xhc3NMaXN0Lmxlbmd0aDtlKyspe3ZhciByPXQuY2xhc3NMaXN0W2VdOzA9PT1yLmluZGV4T2YoXCJwcy1cIikmJnQuY2xhc3NMaXN0LnJlbW92ZShyKX19LGUub3V0ZXJXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gaShuLmNzcyh0LFwid2lkdGhcIikpK2kobi5jc3ModCxcInBhZGRpbmdMZWZ0XCIpKStpKG4uY3NzKHQsXCJwYWRkaW5nUmlnaHRcIikpK2kobi5jc3ModCxcImJvcmRlckxlZnRXaWR0aFwiKSkraShuLmNzcyh0LFwiYm9yZGVyUmlnaHRXaWR0aFwiKSl9LGUuc3RhcnRTY3JvbGxpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9byhlKSxuPTA7bjxyLmxlbmd0aDtuKyspdC5jbGFzc0xpc3QuYWRkKHJbbl0pfSxlLnN0b3BTY3JvbGxpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9byhlKSxuPTA7bjxyLmxlbmd0aDtuKyspdC5jbGFzc0xpc3QucmVtb3ZlKHJbbl0pfSxlLmVudj17aXNXZWJLaXQ6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50JiZcIldlYmtpdEFwcGVhcmFuY2VcImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSxzdXBwb3J0c1RvdWNoOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJihcIm9udG91Y2hzdGFydFwiaW4gd2luZG93fHx3aW5kb3cuRG9jdW1lbnRUb3VjaCYmZG9jdW1lbnQgaW5zdGFuY2VvZiB3aW5kb3cuRG9jdW1lbnRUb3VjaCksc3VwcG9ydHNJZVBvaW50ZXI6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmbnVsbCE9PXdpbmRvdy5uYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50c319LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbz1yKDApLG49ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJFdmVudFwiKTtyZXR1cm4gZS5pbml0RXZlbnQodCwhMCwhMCksZX07dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpZih2b2lkIDA9PT10KXRocm93XCJZb3UgbXVzdCBwcm92aWRlIGFuIGVsZW1lbnQgdG8gdGhlIHVwZGF0ZS1zY3JvbGwgZnVuY3Rpb25cIjtpZih2b2lkIDA9PT1lKXRocm93XCJZb3UgbXVzdCBwcm92aWRlIGFuIGF4aXMgdG8gdGhlIHVwZGF0ZS1zY3JvbGwgZnVuY3Rpb25cIjtpZih2b2lkIDA9PT1yKXRocm93XCJZb3UgbXVzdCBwcm92aWRlIGEgdmFsdWUgdG8gdGhlIHVwZGF0ZS1zY3JvbGwgZnVuY3Rpb25cIjtcInRvcFwiPT09ZSYmcjw9MCYmKHQuc2Nyb2xsVG9wPXI9MCx0LmRpc3BhdGNoRXZlbnQobihcInBzLXktcmVhY2gtc3RhcnRcIikpKSxcImxlZnRcIj09PWUmJnI8PTAmJih0LnNjcm9sbExlZnQ9cj0wLHQuZGlzcGF0Y2hFdmVudChuKFwicHMteC1yZWFjaC1zdGFydFwiKSkpO3ZhciBpPW8uZ2V0KHQpO1widG9wXCI9PT1lJiZyPj1pLmNvbnRlbnRIZWlnaHQtaS5jb250YWluZXJIZWlnaHQmJihyPWkuY29udGVudEhlaWdodC1pLmNvbnRhaW5lckhlaWdodCxyLXQuc2Nyb2xsVG9wPD0yP3I9dC5zY3JvbGxUb3A6dC5zY3JvbGxUb3A9cix0LmRpc3BhdGNoRXZlbnQobihcInBzLXktcmVhY2gtZW5kXCIpKSksXCJsZWZ0XCI9PT1lJiZyPj1pLmNvbnRlbnRXaWR0aC1pLmNvbnRhaW5lcldpZHRoJiYocj1pLmNvbnRlbnRXaWR0aC1pLmNvbnRhaW5lcldpZHRoLHItdC5zY3JvbGxMZWZ0PD0yP3I9dC5zY3JvbGxMZWZ0OnQuc2Nyb2xsTGVmdD1yLHQuZGlzcGF0Y2hFdmVudChuKFwicHMteC1yZWFjaC1lbmRcIikpKSx2b2lkIDA9PT1pLmxhc3RUb3AmJihpLmxhc3RUb3A9dC5zY3JvbGxUb3ApLHZvaWQgMD09PWkubGFzdExlZnQmJihpLmxhc3RMZWZ0PXQuc2Nyb2xsTGVmdCksXCJ0b3BcIj09PWUmJnI8aS5sYXN0VG9wJiZ0LmRpc3BhdGNoRXZlbnQobihcInBzLXNjcm9sbC11cFwiKSksXCJ0b3BcIj09PWUmJnI+aS5sYXN0VG9wJiZ0LmRpc3BhdGNoRXZlbnQobihcInBzLXNjcm9sbC1kb3duXCIpKSxcImxlZnRcIj09PWUmJnI8aS5sYXN0TGVmdCYmdC5kaXNwYXRjaEV2ZW50KG4oXCJwcy1zY3JvbGwtbGVmdFwiKSksXCJsZWZ0XCI9PT1lJiZyPmkubGFzdExlZnQmJnQuZGlzcGF0Y2hFdmVudChuKFwicHMtc2Nyb2xsLXJpZ2h0XCIpKSxcInRvcFwiPT09ZSYmciE9PWkubGFzdFRvcCYmKHQuc2Nyb2xsVG9wPWkubGFzdFRvcD1yLHQuZGlzcGF0Y2hFdmVudChuKFwicHMtc2Nyb2xsLXlcIikpKSxcImxlZnRcIj09PWUmJnIhPT1pLmxhc3RMZWZ0JiYodC5zY3JvbGxMZWZ0PWkubGFzdExlZnQ9cix0LmRpc3BhdGNoRXZlbnQobihcInBzLXNjcm9sbC14XCIpKSl9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KVtlXX1mdW5jdGlvbiBuKHQsZSxyKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgciYmKHI9ci50b1N0cmluZygpK1wicHhcIiksdC5zdHlsZVtlXT1yLHR9ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgciBpbiBlKXt2YXIgbz1lW3JdO1wibnVtYmVyXCI9PXR5cGVvZiBvJiYobz1vLnRvU3RyaW5nKCkrXCJweFwiKSx0LnN0eWxlW3JdPW99cmV0dXJuIHR9dmFyIGw9e307bC5jcmVhdGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpO3JldHVybiByLmNsYXNzTmFtZT1lLHJ9LGwuYXBwZW5kVG89ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0KSx0fSxsLmNzcz1mdW5jdGlvbih0LGUscil7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGU/aSh0LGUpOnZvaWQgMD09PXI/byh0LGUpOm4odCxlLHIpfSxsLm1hdGNoZXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwIT09dC5tYXRjaGVzP3QubWF0Y2hlcyhlKTp0Lm1zTWF0Y2hlc1NlbGVjdG9yKGUpfSxsLnJlbW92ZT1mdW5jdGlvbih0KXt2b2lkIDAhPT10LnJlbW92ZT90LnJlbW92ZSgpOnQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfSxsLnF1ZXJ5Q2hpbGRyZW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKHQuY2hpbGROb2RlcyxmdW5jdGlvbih0KXtyZXR1cm4gbC5tYXRjaGVzKHQsZSl9KX0sdC5leHBvcnRzPWx9LGZ1bmN0aW9uKHQsZSxyKXtyKDI4KTt2YXIgbz1yKDI1KShyKDcpLHIoMjYpLG51bGwsbnVsbCk7dC5leHBvcnRzPW8uZXhwb3J0c30sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBvPXIoNSksbj1yLm4obyk7ZS5kZWZhdWx0PW4uYX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBvPXIoMTApLG49ci5uKG8pO2UuZGVmYXVsdD17bmFtZTpcInZ1ZS1wZXJmZWN0LXNjcm9sbGJhclwiLHByb3BzOntzZXR0aW5nczp7ZGVmYXVsdDp2b2lkIDB9LHN3aWNoZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSx0YWduYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0Olwic2VjdGlvblwifX0sbWV0aG9kczp7c2Nyb2xsSGFubGU6ZnVuY3Rpb24odCl7dGhpcy4kZW1pdCh0LnR5cGUsdCl9LHVwZGF0ZTpmdW5jdGlvbigpe24uYS51cGRhdGUodGhpcy4kZWwpfSxfX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLnN3aWNoZXImJih0aGlzLl9wc19pbml0ZWQ/dGhpcy51cGRhdGUodGhpcy4kZWwpOih0aGlzLl9wc19pbml0ZWQ9ITAsbi5hLmluaXRpYWxpemUodGhpcy4kZWwsdGhpcy5zZXR0aW5ncykpKX0sX191bmluaXQ6ZnVuY3Rpb24oKXtuLmEuZGVzdHJveSh0aGlzLiRlbCksdGhpcy5fcHNfaW5pdGVkPSExfX0sd2F0Y2g6e3N3aWNoZXI6ZnVuY3Rpb24odCl7dCYmIXRoaXMuX3BzX2luaXRlZCYmdGhpcy5fX2luaXQoKSwhdCYmdGhpcy5fcHNfaW5pdGVkJiZ0aGlzLl9fdW5pbml0KCl9LCRyb3V0ZTpmdW5jdGlvbigpe3RoaXMudXBkYXRlKCl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy5fX2luaXQoKX0sdXBkYXRlZDpmdW5jdGlvbigpe3RoaXMuJG5leHRUaWNrKHRoaXMudXBkYXRlKX0sYWN0aXZhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fX2luaXQoKX0sZGVhY3RpdmF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fdW5pbml0KCl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9fdW5pbml0KCl9fX0sZnVuY3Rpb24odCxlLHIpe2U9dC5leHBvcnRzPXIoOSkoKSxlLnB1c2goW3QuaSxcIi5wc3stbXMtdG91Y2gtYWN0aW9uOmF1dG87dG91Y2gtYWN0aW9uOmF1dG87b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZX1Ac3VwcG9ydHMgKC1tcy1vdmVyZmxvdy1zdHlsZTpub25lKXsucHN7b3ZlcmZsb3c6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6bm9uZSksc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6YWN0aXZlKXsucHN7b3ZlcmZsb3c6YXV0byFpbXBvcnRhbnR9fS5wcy5wcy0tYWN0aXZlLXg+LnBzX19zY3JvbGxiYXIteC1yYWlsLC5wcy5wcy0tYWN0aXZlLXk+LnBzX19zY3JvbGxiYXIteS1yYWlse2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ucHMucHMtLWluLXNjcm9sbGluZy5wcy0teD4ucHNfX3Njcm9sbGJhci14LXJhaWx7YmFja2dyb3VuZC1jb2xvcjojZWVlO29wYWNpdHk6Ljl9LnBzLnBzLS1pbi1zY3JvbGxpbmcucHMtLXg+LnBzX19zY3JvbGxiYXIteC1yYWlsPi5wc19fc2Nyb2xsYmFyLXh7YmFja2dyb3VuZC1jb2xvcjojOTk5O2hlaWdodDoxMXB4fS5wcy5wcy0taW4tc2Nyb2xsaW5nLnBzLS15Pi5wc19fc2Nyb2xsYmFyLXktcmFpbHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7b3BhY2l0eTouOX0ucHMucHMtLWluLXNjcm9sbGluZy5wcy0teT4ucHNfX3Njcm9sbGJhci15LXJhaWw+LnBzX19zY3JvbGxiYXIteXtiYWNrZ3JvdW5kLWNvbG9yOiM5OTk7d2lkdGg6MTFweH0ucHM+LnBzX19zY3JvbGxiYXIteC1yYWlse2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsb3BhY2l0eSAuMnMgbGluZWFyO2JvdHRvbTowO2hlaWdodDoxNXB4fS5wcz4ucHNfX3Njcm9sbGJhci14LXJhaWw+LnBzX19zY3JvbGxiYXIteHtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7Ym9yZGVyLXJhZGl1czo2cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsaGVpZ2h0IC4ycyBsaW5lYXIsd2lkdGggLjJzIGVhc2UtaW4tb3V0LGJvcmRlci1yYWRpdXMgLjJzIGVhc2UtaW4tb3V0O2JvdHRvbToycHg7aGVpZ2h0OjZweH0ucHM+LnBzX19zY3JvbGxiYXIteC1yYWlsOmFjdGl2ZT4ucHNfX3Njcm9sbGJhci14LC5wcz4ucHNfX3Njcm9sbGJhci14LXJhaWw6aG92ZXI+LnBzX19zY3JvbGxiYXIteHtoZWlnaHQ6MTFweH0ucHM+LnBzX19zY3JvbGxiYXIteS1yYWlse2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsb3BhY2l0eSAuMnMgbGluZWFyO3JpZ2h0OjA7d2lkdGg6MTVweH0ucHM+LnBzX19zY3JvbGxiYXIteS1yYWlsPi5wc19fc2Nyb2xsYmFyLXl7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZC1jb2xvcjojYWFhO2JvcmRlci1yYWRpdXM6NnB4O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMnMgbGluZWFyLGhlaWdodCAuMnMgbGluZWFyLHdpZHRoIC4ycyBlYXNlLWluLW91dCxib3JkZXItcmFkaXVzIC4ycyBlYXNlLWluLW91dDtyaWdodDoycHg7d2lkdGg6NnB4fS5wcz4ucHNfX3Njcm9sbGJhci15LXJhaWw6YWN0aXZlPi5wc19fc2Nyb2xsYmFyLXksLnBzPi5wc19fc2Nyb2xsYmFyLXktcmFpbDpob3Zlcj4ucHNfX3Njcm9sbGJhci15e3dpZHRoOjExcHh9LnBzOmhvdmVyLnBzLS1pbi1zY3JvbGxpbmcucHMtLXg+LnBzX19zY3JvbGxiYXIteC1yYWlse2JhY2tncm91bmQtY29sb3I6I2VlZTtvcGFjaXR5Oi45fS5wczpob3Zlci5wcy0taW4tc2Nyb2xsaW5nLnBzLS14Pi5wc19fc2Nyb2xsYmFyLXgtcmFpbD4ucHNfX3Njcm9sbGJhci14e2JhY2tncm91bmQtY29sb3I6Izk5OTtoZWlnaHQ6MTFweH0ucHM6aG92ZXIucHMtLWluLXNjcm9sbGluZy5wcy0teT4ucHNfX3Njcm9sbGJhci15LXJhaWx7YmFja2dyb3VuZC1jb2xvcjojZWVlO29wYWNpdHk6Ljl9LnBzOmhvdmVyLnBzLS1pbi1zY3JvbGxpbmcucHMtLXk+LnBzX19zY3JvbGxiYXIteS1yYWlsPi5wc19fc2Nyb2xsYmFyLXl7YmFja2dyb3VuZC1jb2xvcjojOTk5O3dpZHRoOjExcHh9LnBzOmhvdmVyPi5wc19fc2Nyb2xsYmFyLXgtcmFpbCwucHM6aG92ZXI+LnBzX19zY3JvbGxiYXIteS1yYWlse29wYWNpdHk6LjZ9LnBzOmhvdmVyPi5wc19fc2Nyb2xsYmFyLXgtcmFpbDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7b3BhY2l0eTouOX0ucHM6aG92ZXI+LnBzX19zY3JvbGxiYXIteC1yYWlsOmhvdmVyPi5wc19fc2Nyb2xsYmFyLXh7YmFja2dyb3VuZC1jb2xvcjojOTk5fS5wczpob3Zlcj4ucHNfX3Njcm9sbGJhci15LXJhaWw6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWVlO29wYWNpdHk6Ljl9LnBzOmhvdmVyPi5wc19fc2Nyb2xsYmFyLXktcmFpbDpob3Zlcj4ucHNfX3Njcm9sbGJhci15e2JhY2tncm91bmQtY29sb3I6Izk5OX0ucHMtY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlfVwiLFwiXCJdKX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTx0aGlzLmxlbmd0aDtlKyspe3ZhciByPXRoaXNbZV07clsyXT90LnB1c2goXCJAbWVkaWEgXCIrclsyXStcIntcIityWzFdK1wifVwiKTp0LnB1c2goclsxXSl9cmV0dXJuIHQuam9pbihcIlwiKX0sdC5pPWZ1bmN0aW9uKGUscil7XCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPVtbbnVsbCxlLFwiXCJdXSk7Zm9yKHZhciBvPXt9LG49MDtuPHRoaXMubGVuZ3RoO24rKyl7dmFyIGk9dGhpc1tuXVswXTtcIm51bWJlclwiPT10eXBlb2YgaSYmKG9baV09ITApfWZvcihuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBsPWVbbl07XCJudW1iZXJcIj09dHlwZW9mIGxbMF0mJm9bbFswXV18fChyJiYhbFsyXT9sWzJdPXI6ciYmKGxbMl09XCIoXCIrbFsyXStcIikgYW5kIChcIityK1wiKVwiKSx0LnB1c2gobCkpfX0sdH19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9cigxMyl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbz1mdW5jdGlvbih0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmV2ZW50cz17fX07by5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PXRoaXMuZXZlbnRzW3RdJiYodGhpcy5ldmVudHNbdF09W10pLHRoaXMuZXZlbnRzW3RdLnB1c2goZSksdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodCxlLCExKX0sby5wcm90b3R5cGUudW5iaW5kPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dm9pZCAwIT09ZTt0aGlzLmV2ZW50c1t0XT10aGlzLmV2ZW50c1t0XS5maWx0ZXIoZnVuY3Rpb24obyl7cmV0dXJuISghcnx8bz09PWUpfHwodGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodCxvLCExKSwhMSl9LHRoaXMpfSxvLnByb3RvdHlwZS51bmJpbmRBbGw9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5ldmVudHMpdGhpcy51bmJpbmQodCl9O3ZhciBuPWZ1bmN0aW9uKCl7dGhpcy5ldmVudEVsZW1lbnRzPVtdfTtuLnByb3RvdHlwZS5ldmVudEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ldmVudEVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5lbGVtZW50PT09dH0pWzBdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgbyh0KSx0aGlzLmV2ZW50RWxlbWVudHMucHVzaChlKSksZX0sbi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUscil7dGhpcy5ldmVudEVsZW1lbnQodCkuYmluZChlLHIpfSxuLnByb3RvdHlwZS51bmJpbmQ9ZnVuY3Rpb24odCxlLHIpe3RoaXMuZXZlbnRFbGVtZW50KHQpLnVuYmluZChlLHIpfSxuLnByb3RvdHlwZS51bmJpbmRBbGw9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMuZXZlbnRFbGVtZW50cy5sZW5ndGg7dCsrKXRoaXMuZXZlbnRFbGVtZW50c1t0XS51bmJpbmRBbGwoKX0sbi5wcm90b3R5cGUub25jZT1mdW5jdGlvbih0LGUscil7dmFyIG89dGhpcy5ldmVudEVsZW1lbnQodCksbj1mdW5jdGlvbih0KXtvLnVuYmluZChlLG4pLHIodCl9O28uYmluZChlLG4pfSx0LmV4cG9ydHM9bn0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3QuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gTWF0aC5mbG9vcig2NTUzNiooMStNYXRoLnJhbmRvbSgpKSkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCgpK3QoKStcIi1cIit0KCkrXCItXCIrdCgpK1wiLVwiK3QoKStcIi1cIit0KCkrdCgpK3QoKX19KCl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbz1yKDE1KSxuPXIoMjMpLGk9cigyNCk7dC5leHBvcnRzPXtpbml0aWFsaXplOm4sdXBkYXRlOmksZGVzdHJveTpvfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3QuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybntoYW5kbGVyczpbXCJjbGljay1yYWlsXCIsXCJkcmFnLXNjcm9sbGJhclwiLFwia2V5Ym9hcmRcIixcIndoZWVsXCIsXCJ0b3VjaFwiXSxtYXhTY3JvbGxiYXJMZW5ndGg6bnVsbCxtaW5TY3JvbGxiYXJMZW5ndGg6bnVsbCxzY3JvbGxYTWFyZ2luT2Zmc2V0OjAsc2Nyb2xsWU1hcmdpbk9mZnNldDowLHN1cHByZXNzU2Nyb2xsWDohMSxzdXBwcmVzc1Njcm9sbFk6ITEsc3dpcGVQcm9wYWdhdGlvbjohMCxzd2lwZUVhc2luZzohMCx1c2VCb3RoV2hlZWxBeGVzOiExLHdoZWVsUHJvcGFnYXRpb246ITEsd2hlZWxTcGVlZDoxLHRoZW1lOlwiZGVmYXVsdFwifX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbz1yKDIpLG49cig0KSxpPXIoMCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWkuZ2V0KHQpO2UmJihlLmV2ZW50LnVuYmluZEFsbCgpLG4ucmVtb3ZlKGUuc2Nyb2xsYmFyWCksbi5yZW1vdmUoZS5zY3JvbGxiYXJZKSxuLnJlbW92ZShlLnNjcm9sbGJhclhSYWlsKSxuLnJlbW92ZShlLnNjcm9sbGJhcllSYWlsKSxvLnJlbW92ZVBzQ2xhc3Nlcyh0KSxpLnJlbW92ZSh0KSl9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbyh0LGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9dmFyIG89ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKX07ZS5ldmVudC5iaW5kKGUuc2Nyb2xsYmFyWSxcImNsaWNrXCIsbyksZS5ldmVudC5iaW5kKGUuc2Nyb2xsYmFyWVJhaWwsXCJjbGlja1wiLGZ1bmN0aW9uKG8pe3ZhciBuPW8ucGFnZVktd2luZG93LnBhZ2VZT2Zmc2V0LXIoZS5zY3JvbGxiYXJZUmFpbCkudG9wLHM9bj5lLnNjcm9sbGJhcllUb3A/MTotMTtsKHQsXCJ0b3BcIix0LnNjcm9sbFRvcCtzKmUuY29udGFpbmVySGVpZ2h0KSxpKHQpLG8uc3RvcFByb3BhZ2F0aW9uKCl9KSxlLmV2ZW50LmJpbmQoZS5zY3JvbGxiYXJYLFwiY2xpY2tcIixvKSxlLmV2ZW50LmJpbmQoZS5zY3JvbGxiYXJYUmFpbCxcImNsaWNrXCIsZnVuY3Rpb24obyl7dmFyIG49by5wYWdlWC13aW5kb3cucGFnZVhPZmZzZXQtcihlLnNjcm9sbGJhclhSYWlsKS5sZWZ0LHM9bj5lLnNjcm9sbGJhclhMZWZ0PzE6LTE7bCh0LFwibGVmdFwiLHQuc2Nyb2xsTGVmdCtzKmUuY29udGFpbmVyV2lkdGgpLGkodCksby5zdG9wUHJvcGFnYXRpb24oKX0pfXZhciBuPXIoMCksaT1yKDEpLGw9cigzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7byh0LG4uZ2V0KHQpKX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBvKHQsZSl7ZnVuY3Rpb24gcihyKXt2YXIgbj1vK3IqZS5yYWlsWFJhdGlvLGw9TWF0aC5tYXgoMCxlLnNjcm9sbGJhclhSYWlsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpK2UucmFpbFhSYXRpbyooZS5yYWlsWFdpZHRoLWUuc2Nyb2xsYmFyWFdpZHRoKTtlLnNjcm9sbGJhclhMZWZ0PW48MD8wOm4+bD9sOm47dmFyIHM9aS50b0ludChlLnNjcm9sbGJhclhMZWZ0KihlLmNvbnRlbnRXaWR0aC1lLmNvbnRhaW5lcldpZHRoKS8oZS5jb250YWluZXJXaWR0aC1lLnJhaWxYUmF0aW8qZS5zY3JvbGxiYXJYV2lkdGgpKS1lLm5lZ2F0aXZlU2Nyb2xsQWRqdXN0bWVudDtjKHQsXCJsZWZ0XCIscyl9dmFyIG89bnVsbCxuPW51bGwscz1mdW5jdGlvbihlKXtyKGUucGFnZVgtbiksYSh0KSxlLnN0b3BQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKX0sdT1mdW5jdGlvbigpe2kuc3RvcFNjcm9sbGluZyh0LFwieFwiKSxlLmV2ZW50LnVuYmluZChlLm93bmVyRG9jdW1lbnQsXCJtb3VzZW1vdmVcIixzKX07ZS5ldmVudC5iaW5kKGUuc2Nyb2xsYmFyWCxcIm1vdXNlZG93blwiLGZ1bmN0aW9uKHIpe249ci5wYWdlWCxvPWkudG9JbnQobC5jc3MoZS5zY3JvbGxiYXJYLFwibGVmdFwiKSkqZS5yYWlsWFJhdGlvLGkuc3RhcnRTY3JvbGxpbmcodCxcInhcIiksZS5ldmVudC5iaW5kKGUub3duZXJEb2N1bWVudCxcIm1vdXNlbW92ZVwiLHMpLGUuZXZlbnQub25jZShlLm93bmVyRG9jdW1lbnQsXCJtb3VzZXVwXCIsdSksci5zdG9wUHJvcGFnYXRpb24oKSxyLnByZXZlbnREZWZhdWx0KCl9KX1mdW5jdGlvbiBuKHQsZSl7ZnVuY3Rpb24gcihyKXt2YXIgbj1vK3IqZS5yYWlsWVJhdGlvLGw9TWF0aC5tYXgoMCxlLnNjcm9sbGJhcllSYWlsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkrZS5yYWlsWVJhdGlvKihlLnJhaWxZSGVpZ2h0LWUuc2Nyb2xsYmFyWUhlaWdodCk7ZS5zY3JvbGxiYXJZVG9wPW48MD8wOm4+bD9sOm47dmFyIHM9aS50b0ludChlLnNjcm9sbGJhcllUb3AqKGUuY29udGVudEhlaWdodC1lLmNvbnRhaW5lckhlaWdodCkvKGUuY29udGFpbmVySGVpZ2h0LWUucmFpbFlSYXRpbyplLnNjcm9sbGJhcllIZWlnaHQpKTtjKHQsXCJ0b3BcIixzKX12YXIgbz1udWxsLG49bnVsbCxzPWZ1bmN0aW9uKGUpe3IoZS5wYWdlWS1uKSxhKHQpLGUuc3RvcFByb3BhZ2F0aW9uKCksZS5wcmV2ZW50RGVmYXVsdCgpfSx1PWZ1bmN0aW9uKCl7aS5zdG9wU2Nyb2xsaW5nKHQsXCJ5XCIpLGUuZXZlbnQudW5iaW5kKGUub3duZXJEb2N1bWVudCxcIm1vdXNlbW92ZVwiLHMpfTtlLmV2ZW50LmJpbmQoZS5zY3JvbGxiYXJZLFwibW91c2Vkb3duXCIsZnVuY3Rpb24ocil7bj1yLnBhZ2VZLG89aS50b0ludChsLmNzcyhlLnNjcm9sbGJhclksXCJ0b3BcIikpKmUucmFpbFlSYXRpbyxpLnN0YXJ0U2Nyb2xsaW5nKHQsXCJ5XCIpLGUuZXZlbnQuYmluZChlLm93bmVyRG9jdW1lbnQsXCJtb3VzZW1vdmVcIixzKSxlLmV2ZW50Lm9uY2UoZS5vd25lckRvY3VtZW50LFwibW91c2V1cFwiLHUpLHIuc3RvcFByb3BhZ2F0aW9uKCksci5wcmV2ZW50RGVmYXVsdCgpfSl9dmFyIGk9cigyKSxsPXIoNCkscz1yKDApLGE9cigxKSxjPXIoMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXMuZ2V0KHQpO28odCxlKSxuKHQsZSl9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbyh0LGUpe2Z1bmN0aW9uIHIocixvKXt2YXIgbj10LnNjcm9sbFRvcDtpZigwPT09cil7aWYoIWUuc2Nyb2xsYmFyWUFjdGl2ZSlyZXR1cm4hMTtpZigwPT09biYmbz4wfHxuPj1lLmNvbnRlbnRIZWlnaHQtZS5jb250YWluZXJIZWlnaHQmJm88MClyZXR1cm4hZS5zZXR0aW5ncy53aGVlbFByb3BhZ2F0aW9ufXZhciBpPXQuc2Nyb2xsTGVmdDtpZigwPT09byl7aWYoIWUuc2Nyb2xsYmFyWEFjdGl2ZSlyZXR1cm4hMTtpZigwPT09aSYmcjwwfHxpPj1lLmNvbnRlbnRXaWR0aC1lLmNvbnRhaW5lcldpZHRoJiZyPjApcmV0dXJuIWUuc2V0dGluZ3Mud2hlZWxQcm9wYWdhdGlvbn1yZXR1cm4hMH12YXIgbz0hMTtlLmV2ZW50LmJpbmQodCxcIm1vdXNlZW50ZXJcIixmdW5jdGlvbigpe289ITB9KSxlLmV2ZW50LmJpbmQodCxcIm1vdXNlbGVhdmVcIixmdW5jdGlvbigpe289ITF9KTt2YXIgbD0hMTtlLmV2ZW50LmJpbmQoZS5vd25lckRvY3VtZW50LFwia2V5ZG93blwiLGZ1bmN0aW9uKGMpe2lmKCEoYy5pc0RlZmF1bHRQcmV2ZW50ZWQmJmMuaXNEZWZhdWx0UHJldmVudGVkKCl8fGMuZGVmYXVsdFByZXZlbnRlZCkpe3ZhciB1PWkubWF0Y2hlcyhlLnNjcm9sbGJhclgsXCI6Zm9jdXNcIil8fGkubWF0Y2hlcyhlLnNjcm9sbGJhclksXCI6Zm9jdXNcIik7aWYob3x8dSl7dmFyIHA9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD9kb2N1bWVudC5hY3RpdmVFbGVtZW50OmUub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKHApe2lmKFwiSUZSQU1FXCI9PT1wLnRhZ05hbWUpcD1wLmNvbnRlbnREb2N1bWVudC5hY3RpdmVFbGVtZW50O2Vsc2UgZm9yKDtwLnNoYWRvd1Jvb3Q7KXA9cC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7aWYobi5pc0VkaXRhYmxlKHApKXJldHVybn12YXIgZD0wLGY9MDtzd2l0Y2goYy53aGljaCl7Y2FzZSAzNzpkPWMubWV0YUtleT8tZS5jb250ZW50V2lkdGg6Yy5hbHRLZXk/LWUuY29udGFpbmVyV2lkdGg6LTMwO2JyZWFrO2Nhc2UgMzg6Zj1jLm1ldGFLZXk/ZS5jb250ZW50SGVpZ2h0OmMuYWx0S2V5P2UuY29udGFpbmVySGVpZ2h0OjMwO2JyZWFrO2Nhc2UgMzk6ZD1jLm1ldGFLZXk/ZS5jb250ZW50V2lkdGg6Yy5hbHRLZXk/ZS5jb250YWluZXJXaWR0aDozMDticmVhaztjYXNlIDQwOmY9Yy5tZXRhS2V5Py1lLmNvbnRlbnRIZWlnaHQ6Yy5hbHRLZXk/LWUuY29udGFpbmVySGVpZ2h0Oi0zMDticmVhaztjYXNlIDMzOmY9OTA7YnJlYWs7Y2FzZSAzMjpmPWMuc2hpZnRLZXk/OTA6LTkwO2JyZWFrO2Nhc2UgMzQ6Zj0tOTA7YnJlYWs7Y2FzZSAzNTpmPWMuY3RybEtleT8tZS5jb250ZW50SGVpZ2h0Oi1lLmNvbnRhaW5lckhlaWdodDticmVhaztjYXNlIDM2OmY9Yy5jdHJsS2V5P3Quc2Nyb2xsVG9wOmUuY29udGFpbmVySGVpZ2h0O2JyZWFrO2RlZmF1bHQ6cmV0dXJufWEodCxcInRvcFwiLHQuc2Nyb2xsVG9wLWYpLGEodCxcImxlZnRcIix0LnNjcm9sbExlZnQrZCkscyh0KSxsPXIoZCxmKSxsJiZjLnByZXZlbnREZWZhdWx0KCl9fX0pfXZhciBuPXIoMiksaT1yKDQpLGw9cigwKSxzPXIoMSksYT1yKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtvKHQsbC5nZXQodCkpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG8odCxlKXtmdW5jdGlvbiByKHIsbyl7dmFyIG49dC5zY3JvbGxUb3A7aWYoMD09PXIpe2lmKCFlLnNjcm9sbGJhcllBY3RpdmUpcmV0dXJuITE7aWYoMD09PW4mJm8+MHx8bj49ZS5jb250ZW50SGVpZ2h0LWUuY29udGFpbmVySGVpZ2h0JiZvPDApcmV0dXJuIWUuc2V0dGluZ3Mud2hlZWxQcm9wYWdhdGlvbn12YXIgaT10LnNjcm9sbExlZnQ7aWYoMD09PW8pe2lmKCFlLnNjcm9sbGJhclhBY3RpdmUpcmV0dXJuITE7aWYoMD09PWkmJnI8MHx8aT49ZS5jb250ZW50V2lkdGgtZS5jb250YWluZXJXaWR0aCYmcj4wKXJldHVybiFlLnNldHRpbmdzLndoZWVsUHJvcGFnYXRpb259cmV0dXJuITB9ZnVuY3Rpb24gbyh0KXt2YXIgZT10LmRlbHRhWCxyPS0xKnQuZGVsdGFZO3JldHVybiB2b2lkIDAhPT1lJiZ2b2lkIDAhPT1yfHwoZT0tMSp0LndoZWVsRGVsdGFYLzYscj10LndoZWVsRGVsdGFZLzYpLHQuZGVsdGFNb2RlJiYxPT09dC5kZWx0YU1vZGUmJihlKj0xMCxyKj0xMCksZSE9PWUmJnIhPT1yJiYoZT0wLHI9dC53aGVlbERlbHRhKSx0LnNoaWZ0S2V5P1stciwtZV06W2Uscl19ZnVuY3Rpb24gbihlLHIpe3ZhciBvPXQucXVlcnlTZWxlY3RvcihcInRleHRhcmVhOmhvdmVyLCBzZWxlY3RbbXVsdGlwbGVdOmhvdmVyLCAucHMtY2hpbGQ6aG92ZXJcIik7aWYobyl7dmFyIG49d2luZG93LmdldENvbXB1dGVkU3R5bGUobyk7aWYoIVtuLm92ZXJmbG93LG4ub3ZlcmZsb3dYLG4ub3ZlcmZsb3dZXS5qb2luKFwiXCIpLm1hdGNoKC8oc2Nyb2xsfGF1dG8pLykpcmV0dXJuITE7dmFyIGk9by5zY3JvbGxIZWlnaHQtby5jbGllbnRIZWlnaHQ7aWYoaT4wJiYhKDA9PT1vLnNjcm9sbFRvcCYmcj4wfHxvLnNjcm9sbFRvcD09PWkmJnI8MCkpcmV0dXJuITA7dmFyIGw9by5zY3JvbGxMZWZ0LW8uY2xpZW50V2lkdGg7aWYobD4wJiYhKDA9PT1vLnNjcm9sbExlZnQmJmU8MHx8by5zY3JvbGxMZWZ0PT09bCYmZT4wKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBzKHMpe3ZhciBjPW8ocyksdT1jWzBdLHA9Y1sxXTtuKHUscCl8fChhPSExLGUuc2V0dGluZ3MudXNlQm90aFdoZWVsQXhlcz9lLnNjcm9sbGJhcllBY3RpdmUmJiFlLnNjcm9sbGJhclhBY3RpdmU/KHA/bCh0LFwidG9wXCIsdC5zY3JvbGxUb3AtcCplLnNldHRpbmdzLndoZWVsU3BlZWQpOmwodCxcInRvcFwiLHQuc2Nyb2xsVG9wK3UqZS5zZXR0aW5ncy53aGVlbFNwZWVkKSxhPSEwKTplLnNjcm9sbGJhclhBY3RpdmUmJiFlLnNjcm9sbGJhcllBY3RpdmUmJih1P2wodCxcImxlZnRcIix0LnNjcm9sbExlZnQrdSplLnNldHRpbmdzLndoZWVsU3BlZWQpOmwodCxcImxlZnRcIix0LnNjcm9sbExlZnQtcCplLnNldHRpbmdzLndoZWVsU3BlZWQpLGE9ITApOihsKHQsXCJ0b3BcIix0LnNjcm9sbFRvcC1wKmUuc2V0dGluZ3Mud2hlZWxTcGVlZCksbCh0LFwibGVmdFwiLHQuc2Nyb2xsTGVmdCt1KmUuc2V0dGluZ3Mud2hlZWxTcGVlZCkpLGkodCksKGE9YXx8cih1LHApKSYmKHMuc3RvcFByb3BhZ2F0aW9uKCkscy5wcmV2ZW50RGVmYXVsdCgpKSl9dmFyIGE9ITE7dm9pZCAwIT09d2luZG93Lm9ud2hlZWw/ZS5ldmVudC5iaW5kKHQsXCJ3aGVlbFwiLHMpOnZvaWQgMCE9PXdpbmRvdy5vbm1vdXNld2hlZWwmJmUuZXZlbnQuYmluZCh0LFwibW91c2V3aGVlbFwiLHMpfXZhciBuPXIoMCksaT1yKDEpLGw9cigzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7byh0LG4uZ2V0KHQpKX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBvKHQsZSl7ZS5ldmVudC5iaW5kKHQsXCJzY3JvbGxcIixmdW5jdGlvbigpe2kodCl9KX12YXIgbj1yKDApLGk9cigxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7byh0LG4uZ2V0KHQpKX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBvKHQsZSl7ZnVuY3Rpb24gcigpe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24/d2luZG93LmdldFNlbGVjdGlvbigpOmRvY3VtZW50LmdldFNlbGVjdGlvbj9kb2N1bWVudC5nZXRTZWxlY3Rpb24oKTpcIlwiO3JldHVybiAwPT09dC50b1N0cmluZygpLmxlbmd0aD9udWxsOnQuZ2V0UmFuZ2VBdCgwKS5jb21tb25BbmNlc3RvckNvbnRhaW5lcn1mdW5jdGlvbiBvKCl7Y3x8KGM9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtpZighaS5nZXQodCkpcmV0dXJuIHZvaWQgY2xlYXJJbnRlcnZhbChjKTtzKHQsXCJ0b3BcIix0LnNjcm9sbFRvcCt1LnRvcCkscyh0LFwibGVmdFwiLHQuc2Nyb2xsTGVmdCt1LmxlZnQpLGwodCl9LDUwKSl9ZnVuY3Rpb24gYSgpe2MmJihjbGVhckludGVydmFsKGMpLGM9bnVsbCksbi5zdG9wU2Nyb2xsaW5nKHQpfXZhciBjPW51bGwsdT17dG9wOjAsbGVmdDowfSxwPSExO2UuZXZlbnQuYmluZChlLm93bmVyRG9jdW1lbnQsXCJzZWxlY3Rpb25jaGFuZ2VcIixmdW5jdGlvbigpe3QuY29udGFpbnMocigpKT9wPSEwOihwPSExLGEoKSl9KSxlLmV2ZW50LmJpbmQod2luZG93LFwibW91c2V1cFwiLGZ1bmN0aW9uKCl7cCYmKHA9ITEsYSgpKX0pLGUuZXZlbnQuYmluZCh3aW5kb3csXCJrZXl1cFwiLGZ1bmN0aW9uKCl7cCYmKHA9ITEsYSgpKX0pLGUuZXZlbnQuYmluZCh3aW5kb3csXCJtb3VzZW1vdmVcIixmdW5jdGlvbihlKXtpZihwKXt2YXIgcj17eDplLnBhZ2VYLHk6ZS5wYWdlWX0saT17bGVmdDp0Lm9mZnNldExlZnQscmlnaHQ6dC5vZmZzZXRMZWZ0K3Qub2Zmc2V0V2lkdGgsdG9wOnQub2Zmc2V0VG9wLGJvdHRvbTp0Lm9mZnNldFRvcCt0Lm9mZnNldEhlaWdodH07ci54PGkubGVmdCszPyh1LmxlZnQ9LTUsbi5zdGFydFNjcm9sbGluZyh0LFwieFwiKSk6ci54PmkucmlnaHQtMz8odS5sZWZ0PTUsbi5zdGFydFNjcm9sbGluZyh0LFwieFwiKSk6dS5sZWZ0PTAsci55PGkudG9wKzM/KHUudG9wPWkudG9wKzMtci55PDU/LTU6LTIwLG4uc3RhcnRTY3JvbGxpbmcodCxcInlcIikpOnIueT5pLmJvdHRvbS0zPyh1LnRvcD1yLnktaS5ib3R0b20rMzw1PzU6MjAsbi5zdGFydFNjcm9sbGluZyh0LFwieVwiKSk6dS50b3A9MCwwPT09dS50b3AmJjA9PT11LmxlZnQ/YSgpOm8oKX19KX12YXIgbj1yKDIpLGk9cigwKSxsPXIoMSkscz1yKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtvKHQsaS5nZXQodCkpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG8odCxlLHIsbyl7ZnVuY3Rpb24gbihyLG8pe3ZhciBuPXQuc2Nyb2xsVG9wLGk9dC5zY3JvbGxMZWZ0LGw9TWF0aC5hYnMocikscz1NYXRoLmFicyhvKTtpZihzPmwpe2lmKG88MCYmbj09PWUuY29udGVudEhlaWdodC1lLmNvbnRhaW5lckhlaWdodHx8bz4wJiYwPT09bilyZXR1cm4hZS5zZXR0aW5ncy5zd2lwZVByb3BhZ2F0aW9ufWVsc2UgaWYobD5zJiYocjwwJiZpPT09ZS5jb250ZW50V2lkdGgtZS5jb250YWluZXJXaWR0aHx8cj4wJiYwPT09aSkpcmV0dXJuIWUuc2V0dGluZ3Muc3dpcGVQcm9wYWdhdGlvbjtyZXR1cm4hMH1mdW5jdGlvbiBhKGUscil7cyh0LFwidG9wXCIsdC5zY3JvbGxUb3Atcikscyh0LFwibGVmdFwiLHQuc2Nyb2xsTGVmdC1lKSxsKHQpfWZ1bmN0aW9uIGMoKXt3PSEwfWZ1bmN0aW9uIHUoKXt3PSExfWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQudGFyZ2V0VG91Y2hlcz90LnRhcmdldFRvdWNoZXNbMF06dH1mdW5jdGlvbiBkKHQpe3JldHVybighdC5wb2ludGVyVHlwZXx8XCJwZW5cIiE9PXQucG9pbnRlclR5cGV8fDAhPT10LmJ1dHRvbnMpJiYoISghdC50YXJnZXRUb3VjaGVzfHwxIT09dC50YXJnZXRUb3VjaGVzLmxlbmd0aCl8fCEoIXQucG9pbnRlclR5cGV8fFwibW91c2VcIj09PXQucG9pbnRlclR5cGV8fHQucG9pbnRlclR5cGU9PT10Lk1TUE9JTlRFUl9UWVBFX01PVVNFKSl9ZnVuY3Rpb24gZih0KXtpZihkKHQpKXtfPSEwO3ZhciBlPXAodCk7Yi5wYWdlWD1lLnBhZ2VYLGIucGFnZVk9ZS5wYWdlWSxnPShuZXcgRGF0ZSkuZ2V0VGltZSgpLG51bGwhPT15JiZjbGVhckludGVydmFsKHkpLHQuc3RvcFByb3BhZ2F0aW9uKCl9fWZ1bmN0aW9uIGgodCl7aWYoIV8mJmUuc2V0dGluZ3Muc3dpcGVQcm9wYWdhdGlvbiYmZih0KSwhdyYmXyYmZCh0KSl7dmFyIHI9cCh0KSxvPXtwYWdlWDpyLnBhZ2VYLHBhZ2VZOnIucGFnZVl9LGk9by5wYWdlWC1iLnBhZ2VYLGw9by5wYWdlWS1iLnBhZ2VZO2EoaSxsKSxiPW87dmFyIHM9KG5ldyBEYXRlKS5nZXRUaW1lKCksYz1zLWc7Yz4wJiYobS54PWkvYyxtLnk9bC9jLGc9cyksbihpLGwpJiYodC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0KCkpfX1mdW5jdGlvbiB2KCl7IXcmJl8mJihfPSExLGUuc2V0dGluZ3Muc3dpcGVFYXNpbmcmJihjbGVhckludGVydmFsKHkpLHk9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXQodCkmJihtLnh8fG0ueSk/TWF0aC5hYnMobS54KTwuMDEmJk1hdGguYWJzKG0ueSk8LjAxP3ZvaWQgY2xlYXJJbnRlcnZhbCh5KTooYSgzMCptLngsMzAqbS55KSxtLngqPS44LHZvaWQobS55Kj0uOCkpOnZvaWQgY2xlYXJJbnRlcnZhbCh5KX0sMTApKSl9dmFyIGI9e30sZz0wLG09e30seT1udWxsLHc9ITEsXz0hMTtyPyhlLmV2ZW50LmJpbmQod2luZG93LFwidG91Y2hzdGFydFwiLGMpLGUuZXZlbnQuYmluZCh3aW5kb3csXCJ0b3VjaGVuZFwiLHUpLGUuZXZlbnQuYmluZCh0LFwidG91Y2hzdGFydFwiLGYpLGUuZXZlbnQuYmluZCh0LFwidG91Y2htb3ZlXCIsaCksZS5ldmVudC5iaW5kKHQsXCJ0b3VjaGVuZFwiLHYpKTpvJiYod2luZG93LlBvaW50ZXJFdmVudD8oZS5ldmVudC5iaW5kKHdpbmRvdyxcInBvaW50ZXJkb3duXCIsYyksZS5ldmVudC5iaW5kKHdpbmRvdyxcInBvaW50ZXJ1cFwiLHUpLGUuZXZlbnQuYmluZCh0LFwicG9pbnRlcmRvd25cIixmKSxlLmV2ZW50LmJpbmQodCxcInBvaW50ZXJtb3ZlXCIsaCksZS5ldmVudC5iaW5kKHQsXCJwb2ludGVydXBcIix2KSk6d2luZG93Lk1TUG9pbnRlckV2ZW50JiYoZS5ldmVudC5iaW5kKHdpbmRvdyxcIk1TUG9pbnRlckRvd25cIixjKSxlLmV2ZW50LmJpbmQod2luZG93LFwiTVNQb2ludGVyVXBcIix1KSxlLmV2ZW50LmJpbmQodCxcIk1TUG9pbnRlckRvd25cIixmKSxlLmV2ZW50LmJpbmQodCxcIk1TUG9pbnRlck1vdmVcIixoKSxlLmV2ZW50LmJpbmQodCxcIk1TUG9pbnRlclVwXCIsdikpKX12YXIgbj1yKDIpLGk9cigwKSxsPXIoMSkscz1yKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihuLmVudi5zdXBwb3J0c1RvdWNofHxuLmVudi5zdXBwb3J0c0llUG9pbnRlcil7byh0LGkuZ2V0KHQpLG4uZW52LnN1cHBvcnRzVG91Y2gsbi5lbnYuc3VwcG9ydHNJZVBvaW50ZXIpfX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbz1yKDApLG49cigxKSxpPXtcImNsaWNrLXJhaWxcIjpyKDE2KSxcImRyYWctc2Nyb2xsYmFyXCI6cigxNyksa2V5Ym9hcmQ6cigxOCksd2hlZWw6cigxOSksdG91Y2g6cigyMiksc2VsZWN0aW9uOnIoMjEpfSxsPXIoMjApO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LmFkZChcInBzXCIpO3ZhciByPW8uYWRkKHQsXCJvYmplY3RcIj09dHlwZW9mIGU/ZTp7fSk7dC5jbGFzc0xpc3QuYWRkKFwicHMtLXRoZW1lX1wiK3Iuc2V0dGluZ3MudGhlbWUpLHIuc2V0dGluZ3MuaGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbihlKXtpW2VdKHQpfSksbCh0KSxuKHQpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBvPXIoMiksbj1yKDQpLGk9cigwKSxsPXIoMSkscz1yKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1pLmdldCh0KTtlJiYoZS5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQ9ZS5pc05lZ2F0aXZlU2Nyb2xsP3Quc2Nyb2xsV2lkdGgtdC5jbGllbnRXaWR0aDowLG4uY3NzKGUuc2Nyb2xsYmFyWFJhaWwsXCJkaXNwbGF5XCIsXCJibG9ja1wiKSxuLmNzcyhlLnNjcm9sbGJhcllSYWlsLFwiZGlzcGxheVwiLFwiYmxvY2tcIiksZS5yYWlsWE1hcmdpbldpZHRoPW8udG9JbnQobi5jc3MoZS5zY3JvbGxiYXJYUmFpbCxcIm1hcmdpbkxlZnRcIikpK28udG9JbnQobi5jc3MoZS5zY3JvbGxiYXJYUmFpbCxcIm1hcmdpblJpZ2h0XCIpKSxlLnJhaWxZTWFyZ2luSGVpZ2h0PW8udG9JbnQobi5jc3MoZS5zY3JvbGxiYXJZUmFpbCxcIm1hcmdpblRvcFwiKSkrby50b0ludChuLmNzcyhlLnNjcm9sbGJhcllSYWlsLFwibWFyZ2luQm90dG9tXCIpKSxuLmNzcyhlLnNjcm9sbGJhclhSYWlsLFwiZGlzcGxheVwiLFwibm9uZVwiKSxuLmNzcyhlLnNjcm9sbGJhcllSYWlsLFwiZGlzcGxheVwiLFwibm9uZVwiKSxsKHQpLHModCxcInRvcFwiLHQuc2Nyb2xsVG9wKSxzKHQsXCJsZWZ0XCIsdC5zY3JvbGxMZWZ0KSxuLmNzcyhlLnNjcm9sbGJhclhSYWlsLFwiZGlzcGxheVwiLFwiXCIpLG4uY3NzKGUuc2Nyb2xsYmFyWVJhaWwsXCJkaXNwbGF5XCIsXCJcIikpfX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFyIG4saT10PXR8fHt9LGw9dHlwZW9mIHQuZGVmYXVsdDtcIm9iamVjdFwiIT09bCYmXCJmdW5jdGlvblwiIT09bHx8KG49dCxpPXQuZGVmYXVsdCk7dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgaT9pLm9wdGlvbnM6aTtpZihlJiYocy5yZW5kZXI9ZS5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9ZS5zdGF0aWNSZW5kZXJGbnMpLHImJihzLl9zY29wZUlkPXIpLG8pe3ZhciBhPXMuY29tcHV0ZWR8fChzLmNvbXB1dGVkPXt9KTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW9bdF07YVt0XT1mdW5jdGlvbigpe3JldHVybiBlfX0pfXJldHVybntlc01vZHVsZTpuLGV4cG9ydHM6aSxvcHRpb25zOnN9fX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50O3JldHVybih0Ll9zZWxmLl9jfHxlKSh0LiRwcm9wcy50YWduYW1lLHt0YWc6XCJzZWN0aW9uXCIsc3RhdGljQ2xhc3M6XCJwcy1jb250YWluZXJcIixvbjp7XCJ+bW91c2VvdmVyXCI6ZnVuY3Rpb24oZSl7dC51cGRhdGUoZSl9LFwicHMtc2Nyb2xsLXlcIjp0LnNjcm9sbEhhbmxlLFwicHMtc2Nyb2xsLXhcIjp0LnNjcm9sbEhhbmxlLFwicHMtc2Nyb2xsLXVwXCI6dC5zY3JvbGxIYW5sZSxcInBzLXNjcm9sbC1kb3duXCI6dC5zY3JvbGxIYW5sZSxcInBzLXNjcm9sbC1sZWZ0XCI6dC5zY3JvbGxIYW5sZSxcInBzLXNjcm9sbC1yaWdodFwiOnQuc2Nyb2xsSGFubGUsXCJwcy15LXJlYWNoLXN0YXJ0XCI6dC5zY3JvbGxIYW5sZSxcInBzLXktcmVhY2gtZW5kXCI6dC5zY3JvbGxIYW5sZSxcInBzLXgtcmVhY2gtc3RhcnRcIjp0LnNjcm9sbEhhbmxlLFwicHMteC1yZWFjaC1lbmRcIjp0LnNjcm9sbEhhbmxlfX0sW3QuX3QoXCJkZWZhdWx0XCIpXSwyKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl0sbj11W28uaWRdO2lmKG4pe24ucmVmcysrO2Zvcih2YXIgaT0wO2k8bi5wYXJ0cy5sZW5ndGg7aSsrKW4ucGFydHNbaV0oby5wYXJ0c1tpXSk7Zm9yKDtpPG8ucGFydHMubGVuZ3RoO2krKyluLnBhcnRzLnB1c2gocyhvLnBhcnRzW2ldLGUpKX1lbHNle2Zvcih2YXIgbD1bXSxpPTA7aTxvLnBhcnRzLmxlbmd0aDtpKyspbC5wdXNoKHMoby5wYXJ0c1tpXSxlKSk7dVtvLmlkXT17aWQ6by5pZCxyZWZzOjEscGFydHM6bH19fX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZT1bXSxyPXt9LG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIG49dFtvXSxpPW5bMF0sbD1uWzFdLHM9blsyXSxhPW5bM10sYz17Y3NzOmwsbWVkaWE6cyxzb3VyY2VNYXA6YX07cltpXT9yW2ldLnBhcnRzLnB1c2goYyk6ZS5wdXNoKHJbaV09e2lkOmkscGFydHM6W2NdfSl9cmV0dXJuIGV9ZnVuY3Rpb24gbih0LGUpe3ZhciByPWYoKSxvPWJbYi5sZW5ndGgtMV07aWYoXCJ0b3BcIj09PXQuaW5zZXJ0QXQpbz9vLm5leHRTaWJsaW5nP3IuaW5zZXJ0QmVmb3JlKGUsby5uZXh0U2libGluZyk6ci5hcHBlbmRDaGlsZChlKTpyLmluc2VydEJlZm9yZShlLHIuZmlyc3RDaGlsZCksYi5wdXNoKGUpO2Vsc2V7aWYoXCJib3R0b21cIiE9PXQuaW5zZXJ0QXQpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICdpbnNlcnRBdCcuIE11c3QgYmUgJ3RvcCcgb3IgJ2JvdHRvbScuXCIpO3IuYXBwZW5kQ2hpbGQoZSl9fWZ1bmN0aW9uIGkodCl7dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpO3ZhciBlPWIuaW5kZXhPZih0KTtlPj0wJiZiLnNwbGljZShlLDEpfWZ1bmN0aW9uIGwodCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO3JldHVybiBlLnR5cGU9XCJ0ZXh0L2Nzc1wiLG4odCxlKSxlfWZ1bmN0aW9uIHModCxlKXt2YXIgcixvLG47aWYoZS5zaW5nbGV0b24pe3ZhciBzPXYrKztyPWh8fChoPWwoZSkpLG89YS5iaW5kKG51bGwscixzLCExKSxuPWEuYmluZChudWxsLHIscywhMCl9ZWxzZSByPWwoZSksbz1jLmJpbmQobnVsbCxyKSxuPWZ1bmN0aW9uKCl7aShyKX07cmV0dXJuIG8odCksZnVuY3Rpb24oZSl7aWYoZSl7aWYoZS5jc3M9PT10LmNzcyYmZS5tZWRpYT09PXQubWVkaWEmJmUuc291cmNlTWFwPT09dC5zb3VyY2VNYXApcmV0dXJuO28odD1lKX1lbHNlIG4oKX19ZnVuY3Rpb24gYSh0LGUscixvKXt2YXIgbj1yP1wiXCI6by5jc3M7aWYodC5zdHlsZVNoZWV0KXQuc3R5bGVTaGVldC5jc3NUZXh0PWcoZSxuKTtlbHNle3ZhciBpPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pLGw9dC5jaGlsZE5vZGVzO2xbZV0mJnQucmVtb3ZlQ2hpbGQobFtlXSksbC5sZW5ndGg/dC5pbnNlcnRCZWZvcmUoaSxsW2VdKTp0LmFwcGVuZENoaWxkKGkpfX1mdW5jdGlvbiBjKHQsZSl7dmFyIHI9ZS5jc3Msbz1lLm1lZGlhLG49ZS5zb3VyY2VNYXA7aWYobyYmdC5zZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLG8pLG4mJihyKz1cIlxcbi8qIyBzb3VyY2VVUkw9XCIrbi5zb3VyY2VzWzBdK1wiICovXCIscis9XCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiK2J0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KG4pKSkpK1wiICovXCIpLHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1yO2Vsc2V7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHIpKX19dmFyIHU9e30scD1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGV9fSxkPXAoZnVuY3Rpb24oKXtyZXR1cm4vbXNpZSBbNi05XVxcYi8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKX0pLGY9cChmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF19KSxoPW51bGwsdj0wLGI9W107dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIERFQlVHJiZERUJVRyYmXCJvYmplY3RcIiE9dHlwZW9mIGRvY3VtZW50KXRocm93IG5ldyBFcnJvcihcIlRoZSBzdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudFwiKTtlPWV8fHt9LHZvaWQgMD09PWUuc2luZ2xldG9uJiYoZS5zaW5nbGV0b249ZCgpKSx2b2lkIDA9PT1lLmluc2VydEF0JiYoZS5pbnNlcnRBdD1cImJvdHRvbVwiKTt2YXIgbj1vKHQpO3JldHVybiByKG4sZSksZnVuY3Rpb24odCl7Zm9yKHZhciBpPVtdLGw9MDtsPG4ubGVuZ3RoO2wrKyl7dmFyIHM9bltsXSxhPXVbcy5pZF07YS5yZWZzLS0saS5wdXNoKGEpfWlmKHQpe3Iobyh0KSxlKX1mb3IodmFyIGw9MDtsPGkubGVuZ3RoO2wrKyl7dmFyIGE9aVtsXTtpZigwPT09YS5yZWZzKXtmb3IodmFyIGM9MDtjPGEucGFydHMubGVuZ3RoO2MrKylhLnBhcnRzW2NdKCk7ZGVsZXRlIHVbYS5pZF19fX19O3ZhciBnPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIHRbZV09cix0LmZpbHRlcihCb29sZWFuKS5qb2luKFwiXFxuXCIpfX0oKX0sZnVuY3Rpb24odCxlLHIpe3ZhciBvPXIoOCk7XCJzdHJpbmdcIj09dHlwZW9mIG8mJihvPVtbdC5pLG8sXCJcIl1dKTtyKDI3KShvLHt9KTtvLmxvY2FscyYmKHQuZXhwb3J0cz1vLmxvY2Fscyl9XSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-perfect-scrollbar/dist/index.js\n");

/***/ }),

/***/ "./node_modules/vue-prism-component/dist/vue-prism-component.common.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vue-prism-component/dist/vue-prism-component.common.js ***!
  \*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nfunction assign(obj) {\n  var arguments$1 = arguments;\n\n  for (var i = 1; i < arguments.length; i++) {\n    // eslint-disable-next-line guard-for-in, prefer-rest-params\n    for (var p in arguments[i]) { obj[p] = arguments$1[i][p]; }\n  }\n  return obj\n}\n\nvar index = {\n  functional: true,\n  props: {\n    code: {\n      type: String\n    },\n    inline: {\n      type: Boolean,\n      default: false\n    },\n    language: {\n      type: String,\n      default: 'markup'\n    }\n  },\n  render: function render(h, ctx) {\n    var code =\n      ctx.props.code ||\n      (ctx.children && ctx.children.length > 0 ? ctx.children[0].text : '');\n    var inline = ctx.props.inline;\n    var language = ctx.props.language;\n    var prismLanguage = Prism.languages[language];\n    var className = \"language-\" + language;\n\n    if (false) {}\n\n    if (inline) {\n      return h(\n        'code',\n        assign({}, ctx.data, {\n          class: [ctx.data.class, className],\n          domProps: assign({}, ctx.data.domProps, {\n            innerHTML: Prism.highlight(code, prismLanguage)\n          })\n        })\n      )\n    }\n\n    return h(\n      'pre',\n      assign({}, ctx.data, {\n        class: [ctx.data.class, className]\n      }),\n      [\n        h('code', {\n          class: className,\n          domProps: {\n            innerHTML: Prism.highlight(code, prismLanguage)\n          }\n        })\n      ]\n    )\n  }\n};\n\nmodule.exports = index;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXByaXNtLWNvbXBvbmVudC9kaXN0L3Z1ZS1wcmlzbS1jb21wb25lbnQuY29tbW9uLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1wcmlzbS1jb21wb25lbnQvZGlzdC92dWUtcHJpc20tY29tcG9uZW50LmNvbW1vbi5qcz84ZDUxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYXNzaWduKG9iaikge1xuICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ3VhcmQtZm9yLWluLCBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICBmb3IgKHZhciBwIGluIGFyZ3VtZW50c1tpXSkgeyBvYmpbcF0gPSBhcmd1bWVudHMkMVtpXVtwXTsgfVxuICB9XG4gIHJldHVybiBvYmpcbn1cblxudmFyIGluZGV4ID0ge1xuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczoge1xuICAgIGNvZGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgaW5saW5lOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGxhbmd1YWdlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnbWFya3VwJ1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIGNvZGUgPVxuICAgICAgY3R4LnByb3BzLmNvZGUgfHxcbiAgICAgIChjdHguY2hpbGRyZW4gJiYgY3R4LmNoaWxkcmVuLmxlbmd0aCA+IDAgPyBjdHguY2hpbGRyZW5bMF0udGV4dCA6ICcnKTtcbiAgICB2YXIgaW5saW5lID0gY3R4LnByb3BzLmlubGluZTtcbiAgICB2YXIgbGFuZ3VhZ2UgPSBjdHgucHJvcHMubGFuZ3VhZ2U7XG4gICAgdmFyIHByaXNtTGFuZ3VhZ2UgPSBQcmlzbS5sYW5ndWFnZXNbbGFuZ3VhZ2VdO1xuICAgIHZhciBjbGFzc05hbWUgPSBcImxhbmd1YWdlLVwiICsgbGFuZ3VhZ2U7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiYgIXByaXNtTGFuZ3VhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgKFwiUHJpc20gY29tcG9uZW50IGZvciBsYW5ndWFnZSBcXFwiXCIgKyBsYW5ndWFnZSArIFwiXFxcIiB3YXMgbm90IGZvdW5kLCBkaWQgeW91IGZvcmdldCB0byByZWdpc3RlciBpdD8gU2VlIGFsbCBhdmFpbGFibGUgb25lczogaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9wcmlzbWpzL2NvbXBvbmVudHMvXCIpXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKGlubGluZSkge1xuICAgICAgcmV0dXJuIGgoXG4gICAgICAgICdjb2RlJyxcbiAgICAgICAgYXNzaWduKHt9LCBjdHguZGF0YSwge1xuICAgICAgICAgIGNsYXNzOiBbY3R4LmRhdGEuY2xhc3MsIGNsYXNzTmFtZV0sXG4gICAgICAgICAgZG9tUHJvcHM6IGFzc2lnbih7fSwgY3R4LmRhdGEuZG9tUHJvcHMsIHtcbiAgICAgICAgICAgIGlubmVySFRNTDogUHJpc20uaGlnaGxpZ2h0KGNvZGUsIHByaXNtTGFuZ3VhZ2UpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gaChcbiAgICAgICdwcmUnLFxuICAgICAgYXNzaWduKHt9LCBjdHguZGF0YSwge1xuICAgICAgICBjbGFzczogW2N0eC5kYXRhLmNsYXNzLCBjbGFzc05hbWVdXG4gICAgICB9KSxcbiAgICAgIFtcbiAgICAgICAgaCgnY29kZScsIHtcbiAgICAgICAgICBjbGFzczogY2xhc3NOYW1lLFxuICAgICAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgICAgICBpbm5lckhUTUw6IFByaXNtLmhpZ2hsaWdodChjb2RlLCBwcmlzbUxhbmd1YWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIF1cbiAgICApXG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaW5kZXg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-prism-component/dist/vue-prism-component.common.js\n");

/***/ }),

/***/ "./node_modules/vue-router/dist/vue-router.esm.js":
/*!********************************************************!*\
  !*** ./node_modules/vue-router/dist/vue-router.esm.js ***!
  \********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/*!\n  * vue-router v3.1.3\n  * (c) 2019 Evan You\n  * @license MIT\n  */\n/*  */\n\nfunction assert (condition, message) {\n  if (!condition) {\n    throw new Error((\"[vue-router] \" + message))\n  }\n}\n\nfunction warn (condition, message) {\n  if ( true && !condition) {\n    typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n  }\n}\n\nfunction isError (err) {\n  return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isExtendedError (constructor, err) {\n  return (\n    err instanceof constructor ||\n    // _name is to support IE9 too\n    (err && (err.name === constructor.name || err._name === constructor._name))\n  )\n}\n\nfunction extend (a, b) {\n  for (var key in b) {\n    a[key] = b[key];\n  }\n  return a\n}\n\nvar View = {\n  name: 'RouterView',\n  functional: true,\n  props: {\n    name: {\n      type: String,\n      default: 'default'\n    }\n  },\n  render: function render (_, ref) {\n    var props = ref.props;\n    var children = ref.children;\n    var parent = ref.parent;\n    var data = ref.data;\n\n    // used by devtools to display a router-view badge\n    data.routerView = true;\n\n    // directly use parent context's createElement() function\n    // so that components rendered by router-view can resolve named slots\n    var h = parent.$createElement;\n    var name = props.name;\n    var route = parent.$route;\n    var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n    // determine current view depth, also check to see if the tree\n    // has been toggled inactive but kept-alive.\n    var depth = 0;\n    var inactive = false;\n    while (parent && parent._routerRoot !== parent) {\n      var vnodeData = parent.$vnode && parent.$vnode.data;\n      if (vnodeData) {\n        if (vnodeData.routerView) {\n          depth++;\n        }\n        if (vnodeData.keepAlive && parent._inactive) {\n          inactive = true;\n        }\n      }\n      parent = parent.$parent;\n    }\n    data.routerViewDepth = depth;\n\n    // render previous view if the tree is inactive and kept-alive\n    if (inactive) {\n      return h(cache[name], data, children)\n    }\n\n    var matched = route.matched[depth];\n    // render empty node if no matched route\n    if (!matched) {\n      cache[name] = null;\n      return h()\n    }\n\n    var component = cache[name] = matched.components[name];\n\n    // attach instance registration hook\n    // this will be called in the instance's injected lifecycle hooks\n    data.registerRouteInstance = function (vm, val) {\n      // val could be undefined for unregistration\n      var current = matched.instances[name];\n      if (\n        (val && current !== vm) ||\n        (!val && current === vm)\n      ) {\n        matched.instances[name] = val;\n      }\n    }\n\n    // also register instance in prepatch hook\n    // in case the same component instance is reused across different routes\n    ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n      matched.instances[name] = vnode.componentInstance;\n    };\n\n    // register instance in init hook\n    // in case kept-alive component be actived when routes changed\n    data.hook.init = function (vnode) {\n      if (vnode.data.keepAlive &&\n        vnode.componentInstance &&\n        vnode.componentInstance !== matched.instances[name]\n      ) {\n        matched.instances[name] = vnode.componentInstance;\n      }\n    };\n\n    // resolve props\n    var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]);\n    if (propsToPass) {\n      // clone to prevent mutation\n      propsToPass = data.props = extend({}, propsToPass);\n      // pass non-declared props as attrs\n      var attrs = data.attrs = data.attrs || {};\n      for (var key in propsToPass) {\n        if (!component.props || !(key in component.props)) {\n          attrs[key] = propsToPass[key];\n          delete propsToPass[key];\n        }\n      }\n    }\n\n    return h(component, data, children)\n  }\n};\n\nfunction resolveProps (route, config) {\n  switch (typeof config) {\n    case 'undefined':\n      return\n    case 'object':\n      return config\n    case 'function':\n      return config(route)\n    case 'boolean':\n      return config ? route.params : undefined\n    default:\n      if (true) {\n        warn(\n          false,\n          \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n          \"expecting an object, function or boolean.\"\n        );\n      }\n  }\n}\n\n/*  */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n  .replace(encodeReserveRE, encodeReserveReplacer)\n  .replace(commaRE, ','); };\n\nvar decode = decodeURIComponent;\n\nfunction resolveQuery (\n  query,\n  extraQuery,\n  _parseQuery\n) {\n  if ( extraQuery === void 0 ) extraQuery = {};\n\n  var parse = _parseQuery || parseQuery;\n  var parsedQuery;\n  try {\n    parsedQuery = parse(query || '');\n  } catch (e) {\n     true && warn(false, e.message);\n    parsedQuery = {};\n  }\n  for (var key in extraQuery) {\n    parsedQuery[key] = extraQuery[key];\n  }\n  return parsedQuery\n}\n\nfunction parseQuery (query) {\n  var res = {};\n\n  query = query.trim().replace(/^(\\?|#|&)/, '');\n\n  if (!query) {\n    return res\n  }\n\n  query.split('&').forEach(function (param) {\n    var parts = param.replace(/\\+/g, ' ').split('=');\n    var key = decode(parts.shift());\n    var val = parts.length > 0\n      ? decode(parts.join('='))\n      : null;\n\n    if (res[key] === undefined) {\n      res[key] = val;\n    } else if (Array.isArray(res[key])) {\n      res[key].push(val);\n    } else {\n      res[key] = [res[key], val];\n    }\n  });\n\n  return res\n}\n\nfunction stringifyQuery (obj) {\n  var res = obj ? Object.keys(obj).map(function (key) {\n    var val = obj[key];\n\n    if (val === undefined) {\n      return ''\n    }\n\n    if (val === null) {\n      return encode(key)\n    }\n\n    if (Array.isArray(val)) {\n      var result = [];\n      val.forEach(function (val2) {\n        if (val2 === undefined) {\n          return\n        }\n        if (val2 === null) {\n          result.push(encode(key));\n        } else {\n          result.push(encode(key) + '=' + encode(val2));\n        }\n      });\n      return result.join('&')\n    }\n\n    return encode(key) + '=' + encode(val)\n  }).filter(function (x) { return x.length > 0; }).join('&') : null;\n  return res ? (\"?\" + res) : ''\n}\n\n/*  */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n  record,\n  location,\n  redirectedFrom,\n  router\n) {\n  var stringifyQuery = router && router.options.stringifyQuery;\n\n  var query = location.query || {};\n  try {\n    query = clone(query);\n  } catch (e) {}\n\n  var route = {\n    name: location.name || (record && record.name),\n    meta: (record && record.meta) || {},\n    path: location.path || '/',\n    hash: location.hash || '',\n    query: query,\n    params: location.params || {},\n    fullPath: getFullPath(location, stringifyQuery),\n    matched: record ? formatMatch(record) : []\n  };\n  if (redirectedFrom) {\n    route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n  }\n  return Object.freeze(route)\n}\n\nfunction clone (value) {\n  if (Array.isArray(value)) {\n    return value.map(clone)\n  } else if (value && typeof value === 'object') {\n    var res = {};\n    for (var key in value) {\n      res[key] = clone(value[key]);\n    }\n    return res\n  } else {\n    return value\n  }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n  path: '/'\n});\n\nfunction formatMatch (record) {\n  var res = [];\n  while (record) {\n    res.unshift(record);\n    record = record.parent;\n  }\n  return res\n}\n\nfunction getFullPath (\n  ref,\n  _stringifyQuery\n) {\n  var path = ref.path;\n  var query = ref.query; if ( query === void 0 ) query = {};\n  var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n  var stringify = _stringifyQuery || stringifyQuery;\n  return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b) {\n  if (b === START) {\n    return a === b\n  } else if (!b) {\n    return false\n  } else if (a.path && b.path) {\n    return (\n      a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n      a.hash === b.hash &&\n      isObjectEqual(a.query, b.query)\n    )\n  } else if (a.name && b.name) {\n    return (\n      a.name === b.name &&\n      a.hash === b.hash &&\n      isObjectEqual(a.query, b.query) &&\n      isObjectEqual(a.params, b.params)\n    )\n  } else {\n    return false\n  }\n}\n\nfunction isObjectEqual (a, b) {\n  if ( a === void 0 ) a = {};\n  if ( b === void 0 ) b = {};\n\n  // handle null value #1566\n  if (!a || !b) { return a === b }\n  var aKeys = Object.keys(a);\n  var bKeys = Object.keys(b);\n  if (aKeys.length !== bKeys.length) {\n    return false\n  }\n  return aKeys.every(function (key) {\n    var aVal = a[key];\n    var bVal = b[key];\n    // check nested equality\n    if (typeof aVal === 'object' && typeof bVal === 'object') {\n      return isObjectEqual(aVal, bVal)\n    }\n    return String(aVal) === String(bVal)\n  })\n}\n\nfunction isIncludedRoute (current, target) {\n  return (\n    current.path.replace(trailingSlashRE, '/').indexOf(\n      target.path.replace(trailingSlashRE, '/')\n    ) === 0 &&\n    (!target.hash || current.hash === target.hash) &&\n    queryIncludes(current.query, target.query)\n  )\n}\n\nfunction queryIncludes (current, target) {\n  for (var key in target) {\n    if (!(key in current)) {\n      return false\n    }\n  }\n  return true\n}\n\n/*  */\n\nfunction resolvePath (\n  relative,\n  base,\n  append\n) {\n  var firstChar = relative.charAt(0);\n  if (firstChar === '/') {\n    return relative\n  }\n\n  if (firstChar === '?' || firstChar === '#') {\n    return base + relative\n  }\n\n  var stack = base.split('/');\n\n  // remove trailing segment if:\n  // - not appending\n  // - appending to trailing slash (last segment is empty)\n  if (!append || !stack[stack.length - 1]) {\n    stack.pop();\n  }\n\n  // resolve relative path\n  var segments = relative.replace(/^\\//, '').split('/');\n  for (var i = 0; i < segments.length; i++) {\n    var segment = segments[i];\n    if (segment === '..') {\n      stack.pop();\n    } else if (segment !== '.') {\n      stack.push(segment);\n    }\n  }\n\n  // ensure leading slash\n  if (stack[0] !== '') {\n    stack.unshift('');\n  }\n\n  return stack.join('/')\n}\n\nfunction parsePath (path) {\n  var hash = '';\n  var query = '';\n\n  var hashIndex = path.indexOf('#');\n  if (hashIndex >= 0) {\n    hash = path.slice(hashIndex);\n    path = path.slice(0, hashIndex);\n  }\n\n  var queryIndex = path.indexOf('?');\n  if (queryIndex >= 0) {\n    query = path.slice(queryIndex + 1);\n    path = path.slice(0, queryIndex);\n  }\n\n  return {\n    path: path,\n    query: query,\n    hash: hash\n  }\n}\n\nfunction cleanPath (path) {\n  return path.replace(/\\/\\//g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = [];\n  var key = 0;\n  var index = 0;\n  var path = '';\n  var defaultDelimiter = options && options.delimiter || '/';\n  var res;\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0];\n    var escaped = res[1];\n    var offset = res.index;\n    path += str.slice(index, offset);\n    index = offset + m.length;\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1];\n      continue\n    }\n\n    var next = str[index];\n    var prefix = res[2];\n    var name = res[3];\n    var capture = res[4];\n    var group = res[5];\n    var modifier = res[6];\n    var asterisk = res[7];\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path);\n      path = '';\n    }\n\n    var partial = prefix != null && next != null && next !== prefix;\n    var repeat = modifier === '+' || modifier === '*';\n    var optional = modifier === '?' || modifier === '*';\n    var delimiter = res[2] || defaultDelimiter;\n    var pattern = capture || group;\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    });\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index);\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path);\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length);\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');\n    }\n  }\n\n  return function (obj, opts) {\n    var path = '';\n    var data = obj || {};\n    var options = opts || {};\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n\n      if (typeof token === 'string') {\n        path += token;\n\n        continue\n      }\n\n      var value = data[token.name];\n      var segment;\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix;\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j]);\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment;\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment;\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys;\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g);\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      });\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = [];\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source);\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  var strict = options.strict;\n  var end = options.end !== false;\n  var route = '';\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (typeof token === 'string') {\n      route += escapeString(token);\n    } else {\n      var prefix = escapeString(token.prefix);\n      var capture = '(?:' + token.pattern + ')';\n\n      keys.push(token);\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*';\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?';\n        } else {\n          capture = prefix + '(' + capture + ')?';\n        }\n      } else {\n        capture = prefix + '(' + capture + ')';\n      }\n\n      route += capture;\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/');\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n  }\n\n  if (end) {\n    route += '$';\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/*  */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n  path,\n  params,\n  routeMsg\n) {\n  params = params || {};\n  try {\n    var filler =\n      regexpCompileCache[path] ||\n      (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n    // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n    if (params.pathMatch) { params[0] = params.pathMatch; }\n\n    return filler(params, { pretty: true })\n  } catch (e) {\n    if (true) {\n      warn(false, (\"missing param for \" + routeMsg + \": \" + (e.message)));\n    }\n    return ''\n  } finally {\n    // delete the 0 if it was added\n    delete params[0];\n  }\n}\n\n/*  */\n\nfunction normalizeLocation (\n  raw,\n  current,\n  append,\n  router\n) {\n  var next = typeof raw === 'string' ? { path: raw } : raw;\n  // named target\n  if (next._normalized) {\n    return next\n  } else if (next.name) {\n    return extend({}, raw)\n  }\n\n  // relative params\n  if (!next.path && next.params && current) {\n    next = extend({}, next);\n    next._normalized = true;\n    var params = extend(extend({}, current.params), next.params);\n    if (current.name) {\n      next.name = current.name;\n      next.params = params;\n    } else if (current.matched.length) {\n      var rawPath = current.matched[current.matched.length - 1].path;\n      next.path = fillParams(rawPath, params, (\"path \" + (current.path)));\n    } else if (true) {\n      warn(false, \"relative params navigation requires a current route.\");\n    }\n    return next\n  }\n\n  var parsedPath = parsePath(next.path || '');\n  var basePath = (current && current.path) || '/';\n  var path = parsedPath.path\n    ? resolvePath(parsedPath.path, basePath, append || next.append)\n    : basePath;\n\n  var query = resolveQuery(\n    parsedPath.query,\n    next.query,\n    router && router.options.parseQuery\n  );\n\n  var hash = next.hash || parsedPath.hash;\n  if (hash && hash.charAt(0) !== '#') {\n    hash = \"#\" + hash;\n  }\n\n  return {\n    _normalized: true,\n    path: path,\n    query: query,\n    hash: hash\n  }\n}\n\n/*  */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar Link = {\n  name: 'RouterLink',\n  props: {\n    to: {\n      type: toTypes,\n      required: true\n    },\n    tag: {\n      type: String,\n      default: 'a'\n    },\n    exact: Boolean,\n    append: Boolean,\n    replace: Boolean,\n    activeClass: String,\n    exactActiveClass: String,\n    event: {\n      type: eventTypes,\n      default: 'click'\n    }\n  },\n  render: function render (h) {\n    var this$1 = this;\n\n    var router = this.$router;\n    var current = this.$route;\n    var ref = router.resolve(\n      this.to,\n      current,\n      this.append\n    );\n    var location = ref.location;\n    var route = ref.route;\n    var href = ref.href;\n\n    var classes = {};\n    var globalActiveClass = router.options.linkActiveClass;\n    var globalExactActiveClass = router.options.linkExactActiveClass;\n    // Support global empty active class\n    var activeClassFallback =\n      globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n    var exactActiveClassFallback =\n      globalExactActiveClass == null\n        ? 'router-link-exact-active'\n        : globalExactActiveClass;\n    var activeClass =\n      this.activeClass == null ? activeClassFallback : this.activeClass;\n    var exactActiveClass =\n      this.exactActiveClass == null\n        ? exactActiveClassFallback\n        : this.exactActiveClass;\n\n    var compareTarget = route.redirectedFrom\n      ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n      : route;\n\n    classes[exactActiveClass] = isSameRoute(current, compareTarget);\n    classes[activeClass] = this.exact\n      ? classes[exactActiveClass]\n      : isIncludedRoute(current, compareTarget);\n\n    var handler = function (e) {\n      if (guardEvent(e)) {\n        if (this$1.replace) {\n          router.replace(location, noop);\n        } else {\n          router.push(location, noop);\n        }\n      }\n    };\n\n    var on = { click: guardEvent };\n    if (Array.isArray(this.event)) {\n      this.event.forEach(function (e) {\n        on[e] = handler;\n      });\n    } else {\n      on[this.event] = handler;\n    }\n\n    var data = { class: classes };\n\n    var scopedSlot =\n      !this.$scopedSlots.$hasNormal &&\n      this.$scopedSlots.default &&\n      this.$scopedSlots.default({\n        href: href,\n        route: route,\n        navigate: handler,\n        isActive: classes[activeClass],\n        isExactActive: classes[exactActiveClass]\n      });\n\n    if (scopedSlot) {\n      if (scopedSlot.length === 1) {\n        return scopedSlot[0]\n      } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n        if (true) {\n          warn(\n            false,\n            (\"RouterLink with to=\\\"\" + (this.props.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child.\")\n          );\n        }\n        return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n      }\n    }\n\n    if (this.tag === 'a') {\n      data.on = on;\n      data.attrs = { href: href };\n    } else {\n      // find the first <a> child and apply listener and href\n      var a = findAnchor(this.$slots.default);\n      if (a) {\n        // in case the <a> is a static node\n        a.isStatic = false;\n        var aData = (a.data = extend({}, a.data));\n        aData.on = aData.on || {};\n        // transform existing events in both objects into arrays so we can push later\n        for (var event in aData.on) {\n          var handler$1 = aData.on[event];\n          if (event in on) {\n            aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n          }\n        }\n        // append new listeners for router-link\n        for (var event$1 in on) {\n          if (event$1 in aData.on) {\n            // on[event] is always a function\n            aData.on[event$1].push(on[event$1]);\n          } else {\n            aData.on[event$1] = handler;\n          }\n        }\n\n        var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n        aAttrs.href = href;\n      } else {\n        // doesn't have <a> child, apply listener to self\n        data.on = on;\n      }\n    }\n\n    return h(this.tag, data, this.$slots.default)\n  }\n};\n\nfunction guardEvent (e) {\n  // don't redirect with control keys\n  if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n  // don't redirect when preventDefault called\n  if (e.defaultPrevented) { return }\n  // don't redirect on right click\n  if (e.button !== undefined && e.button !== 0) { return }\n  // don't redirect if `target=\"_blank\"`\n  if (e.currentTarget && e.currentTarget.getAttribute) {\n    var target = e.currentTarget.getAttribute('target');\n    if (/\\b_blank\\b/i.test(target)) { return }\n  }\n  // this may be a Weex event which doesn't have this method\n  if (e.preventDefault) {\n    e.preventDefault();\n  }\n  return true\n}\n\nfunction findAnchor (children) {\n  if (children) {\n    var child;\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      if (child.tag === 'a') {\n        return child\n      }\n      if (child.children && (child = findAnchor(child.children))) {\n        return child\n      }\n    }\n  }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n  if (install.installed && _Vue === Vue) { return }\n  install.installed = true;\n\n  _Vue = Vue;\n\n  var isDef = function (v) { return v !== undefined; };\n\n  var registerInstance = function (vm, callVal) {\n    var i = vm.$options._parentVnode;\n    if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n      i(vm, callVal);\n    }\n  };\n\n  Vue.mixin({\n    beforeCreate: function beforeCreate () {\n      if (isDef(this.$options.router)) {\n        this._routerRoot = this;\n        this._router = this.$options.router;\n        this._router.init(this);\n        Vue.util.defineReactive(this, '_route', this._router.history.current);\n      } else {\n        this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n      }\n      registerInstance(this, this);\n    },\n    destroyed: function destroyed () {\n      registerInstance(this);\n    }\n  });\n\n  Object.defineProperty(Vue.prototype, '$router', {\n    get: function get () { return this._routerRoot._router }\n  });\n\n  Object.defineProperty(Vue.prototype, '$route', {\n    get: function get () { return this._routerRoot._route }\n  });\n\n  Vue.component('RouterView', View);\n  Vue.component('RouterLink', Link);\n\n  var strats = Vue.config.optionMergeStrategies;\n  // use the same hook merging strategy for route hooks\n  strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/*  */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/*  */\n\nfunction createRouteMap (\n  routes,\n  oldPathList,\n  oldPathMap,\n  oldNameMap\n) {\n  // the path list is used to control path matching priority\n  var pathList = oldPathList || [];\n  // $flow-disable-line\n  var pathMap = oldPathMap || Object.create(null);\n  // $flow-disable-line\n  var nameMap = oldNameMap || Object.create(null);\n\n  routes.forEach(function (route) {\n    addRouteRecord(pathList, pathMap, nameMap, route);\n  });\n\n  // ensure wildcard routes are always at the end\n  for (var i = 0, l = pathList.length; i < l; i++) {\n    if (pathList[i] === '*') {\n      pathList.push(pathList.splice(i, 1)[0]);\n      l--;\n      i--;\n    }\n  }\n\n  if (false) { var pathNames, found; }\n\n  return {\n    pathList: pathList,\n    pathMap: pathMap,\n    nameMap: nameMap\n  }\n}\n\nfunction addRouteRecord (\n  pathList,\n  pathMap,\n  nameMap,\n  route,\n  parent,\n  matchAs\n) {\n  var path = route.path;\n  var name = route.name;\n  if (true) {\n    assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n    assert(\n      typeof route.component !== 'string',\n      \"route config \\\"component\\\" for path: \" + (String(\n        path || name\n      )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n    );\n  }\n\n  var pathToRegexpOptions =\n    route.pathToRegexpOptions || {};\n  var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n  if (typeof route.caseSensitive === 'boolean') {\n    pathToRegexpOptions.sensitive = route.caseSensitive;\n  }\n\n  var record = {\n    path: normalizedPath,\n    regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n    components: route.components || { default: route.component },\n    instances: {},\n    name: name,\n    parent: parent,\n    matchAs: matchAs,\n    redirect: route.redirect,\n    beforeEnter: route.beforeEnter,\n    meta: route.meta || {},\n    props:\n      route.props == null\n        ? {}\n        : route.components\n          ? route.props\n          : { default: route.props }\n  };\n\n  if (route.children) {\n    // Warn if route is named, does not redirect and has a default child route.\n    // If users navigate to this route by name, the default child will\n    // not be rendered (GH Issue #629)\n    if (true) {\n      if (\n        route.name &&\n        !route.redirect &&\n        route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n      ) {\n        warn(\n          false,\n          \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n            \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n            \"the default child route will not be rendered. Remove the name from \" +\n            \"this route and use the name of the default child route for named \" +\n            \"links instead.\"\n        );\n      }\n    }\n    route.children.forEach(function (child) {\n      var childMatchAs = matchAs\n        ? cleanPath((matchAs + \"/\" + (child.path)))\n        : undefined;\n      addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n    });\n  }\n\n  if (!pathMap[record.path]) {\n    pathList.push(record.path);\n    pathMap[record.path] = record;\n  }\n\n  if (route.alias !== undefined) {\n    var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n    for (var i = 0; i < aliases.length; ++i) {\n      var alias = aliases[i];\n      if ( true && alias === path) {\n        warn(\n          false,\n          (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n        );\n        // skip in dev to make it work\n        continue\n      }\n\n      var aliasRoute = {\n        path: alias,\n        children: route.children\n      };\n      addRouteRecord(\n        pathList,\n        pathMap,\n        nameMap,\n        aliasRoute,\n        parent,\n        record.path || '/' // matchAs\n      );\n    }\n  }\n\n  if (name) {\n    if (!nameMap[name]) {\n      nameMap[name] = record;\n    } else if ( true && !matchAs) {\n      warn(\n        false,\n        \"Duplicate named routes definition: \" +\n          \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n      );\n    }\n  }\n}\n\nfunction compileRouteRegex (\n  path,\n  pathToRegexpOptions\n) {\n  var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n  if (true) {\n    var keys = Object.create(null);\n    regex.keys.forEach(function (key) {\n      warn(\n        !keys[key.name],\n        (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n      );\n      keys[key.name] = true;\n    });\n  }\n  return regex\n}\n\nfunction normalizePath (\n  path,\n  parent,\n  strict\n) {\n  if (!strict) { path = path.replace(/\\/$/, ''); }\n  if (path[0] === '/') { return path }\n  if (parent == null) { return path }\n  return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/*  */\n\n\n\nfunction createMatcher (\n  routes,\n  router\n) {\n  var ref = createRouteMap(routes);\n  var pathList = ref.pathList;\n  var pathMap = ref.pathMap;\n  var nameMap = ref.nameMap;\n\n  function addRoutes (routes) {\n    createRouteMap(routes, pathList, pathMap, nameMap);\n  }\n\n  function match (\n    raw,\n    currentRoute,\n    redirectedFrom\n  ) {\n    var location = normalizeLocation(raw, currentRoute, false, router);\n    var name = location.name;\n\n    if (name) {\n      var record = nameMap[name];\n      if (true) {\n        warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n      }\n      if (!record) { return _createRoute(null, location) }\n      var paramNames = record.regex.keys\n        .filter(function (key) { return !key.optional; })\n        .map(function (key) { return key.name; });\n\n      if (typeof location.params !== 'object') {\n        location.params = {};\n      }\n\n      if (currentRoute && typeof currentRoute.params === 'object') {\n        for (var key in currentRoute.params) {\n          if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n            location.params[key] = currentRoute.params[key];\n          }\n        }\n      }\n\n      location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n      return _createRoute(record, location, redirectedFrom)\n    } else if (location.path) {\n      location.params = {};\n      for (var i = 0; i < pathList.length; i++) {\n        var path = pathList[i];\n        var record$1 = pathMap[path];\n        if (matchRoute(record$1.regex, location.path, location.params)) {\n          return _createRoute(record$1, location, redirectedFrom)\n        }\n      }\n    }\n    // no match\n    return _createRoute(null, location)\n  }\n\n  function redirect (\n    record,\n    location\n  ) {\n    var originalRedirect = record.redirect;\n    var redirect = typeof originalRedirect === 'function'\n      ? originalRedirect(createRoute(record, location, null, router))\n      : originalRedirect;\n\n    if (typeof redirect === 'string') {\n      redirect = { path: redirect };\n    }\n\n    if (!redirect || typeof redirect !== 'object') {\n      if (true) {\n        warn(\n          false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n        );\n      }\n      return _createRoute(null, location)\n    }\n\n    var re = redirect;\n    var name = re.name;\n    var path = re.path;\n    var query = location.query;\n    var hash = location.hash;\n    var params = location.params;\n    query = re.hasOwnProperty('query') ? re.query : query;\n    hash = re.hasOwnProperty('hash') ? re.hash : hash;\n    params = re.hasOwnProperty('params') ? re.params : params;\n\n    if (name) {\n      // resolved named direct\n      var targetRecord = nameMap[name];\n      if (true) {\n        assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n      }\n      return match({\n        _normalized: true,\n        name: name,\n        query: query,\n        hash: hash,\n        params: params\n      }, undefined, location)\n    } else if (path) {\n      // 1. resolve relative redirect\n      var rawPath = resolveRecordPath(path, record);\n      // 2. resolve params\n      var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n      // 3. rematch with existing query and hash\n      return match({\n        _normalized: true,\n        path: resolvedPath,\n        query: query,\n        hash: hash\n      }, undefined, location)\n    } else {\n      if (true) {\n        warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n      }\n      return _createRoute(null, location)\n    }\n  }\n\n  function alias (\n    record,\n    location,\n    matchAs\n  ) {\n    var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n    var aliasedMatch = match({\n      _normalized: true,\n      path: aliasedPath\n    });\n    if (aliasedMatch) {\n      var matched = aliasedMatch.matched;\n      var aliasedRecord = matched[matched.length - 1];\n      location.params = aliasedMatch.params;\n      return _createRoute(aliasedRecord, location)\n    }\n    return _createRoute(null, location)\n  }\n\n  function _createRoute (\n    record,\n    location,\n    redirectedFrom\n  ) {\n    if (record && record.redirect) {\n      return redirect(record, redirectedFrom || location)\n    }\n    if (record && record.matchAs) {\n      return alias(record, location, record.matchAs)\n    }\n    return createRoute(record, location, redirectedFrom, router)\n  }\n\n  return {\n    match: match,\n    addRoutes: addRoutes\n  }\n}\n\nfunction matchRoute (\n  regex,\n  path,\n  params\n) {\n  var m = path.match(regex);\n\n  if (!m) {\n    return false\n  } else if (!params) {\n    return true\n  }\n\n  for (var i = 1, len = m.length; i < len; ++i) {\n    var key = regex.keys[i - 1];\n    var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n    if (key) {\n      // Fix #1994: using * with props: true generates a param named 0\n      params[key.name || 'pathMatch'] = val;\n    }\n  }\n\n  return true\n}\n\nfunction resolveRecordPath (path, record) {\n  return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/*  */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n  inBrowser && window.performance && window.performance.now\n    ? window.performance\n    : Date;\n\nfunction genStateKey () {\n  return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n  return _key\n}\n\nfunction setStateKey (key) {\n  return (_key = key)\n}\n\n/*  */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n  // Fix for #1585 for Firefox\n  // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n  // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n  // window.location.protocol + '//' + window.location.host\n  // location.host contains the port and location.hostname doesn't\n  var protocolAndPath = window.location.protocol + '//' + window.location.host;\n  var absolutePath = window.location.href.replace(protocolAndPath, '');\n  window.history.replaceState({ key: getStateKey() }, '', absolutePath);\n  window.addEventListener('popstate', function (e) {\n    saveScrollPosition();\n    if (e.state && e.state.key) {\n      setStateKey(e.state.key);\n    }\n  });\n}\n\nfunction handleScroll (\n  router,\n  to,\n  from,\n  isPop\n) {\n  if (!router.app) {\n    return\n  }\n\n  var behavior = router.options.scrollBehavior;\n  if (!behavior) {\n    return\n  }\n\n  if (true) {\n    assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n  }\n\n  // wait until re-render finishes before scrolling\n  router.app.$nextTick(function () {\n    var position = getScrollPosition();\n    var shouldScroll = behavior.call(\n      router,\n      to,\n      from,\n      isPop ? position : null\n    );\n\n    if (!shouldScroll) {\n      return\n    }\n\n    if (typeof shouldScroll.then === 'function') {\n      shouldScroll\n        .then(function (shouldScroll) {\n          scrollToPosition((shouldScroll), position);\n        })\n        .catch(function (err) {\n          if (true) {\n            assert(false, err.toString());\n          }\n        });\n    } else {\n      scrollToPosition(shouldScroll, position);\n    }\n  });\n}\n\nfunction saveScrollPosition () {\n  var key = getStateKey();\n  if (key) {\n    positionStore[key] = {\n      x: window.pageXOffset,\n      y: window.pageYOffset\n    };\n  }\n}\n\nfunction getScrollPosition () {\n  var key = getStateKey();\n  if (key) {\n    return positionStore[key]\n  }\n}\n\nfunction getElementPosition (el, offset) {\n  var docEl = document.documentElement;\n  var docRect = docEl.getBoundingClientRect();\n  var elRect = el.getBoundingClientRect();\n  return {\n    x: elRect.left - docRect.left - offset.x,\n    y: elRect.top - docRect.top - offset.y\n  }\n}\n\nfunction isValidPosition (obj) {\n  return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n    y: isNumber(obj.y) ? obj.y : window.pageYOffset\n  }\n}\n\nfunction normalizeOffset (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : 0,\n    y: isNumber(obj.y) ? obj.y : 0\n  }\n}\n\nfunction isNumber (v) {\n  return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n  var isObject = typeof shouldScroll === 'object';\n  if (isObject && typeof shouldScroll.selector === 'string') {\n    // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n    // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n    var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n      ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n      : document.querySelector(shouldScroll.selector);\n\n    if (el) {\n      var offset =\n        shouldScroll.offset && typeof shouldScroll.offset === 'object'\n          ? shouldScroll.offset\n          : {};\n      offset = normalizeOffset(offset);\n      position = getElementPosition(el, offset);\n    } else if (isValidPosition(shouldScroll)) {\n      position = normalizePosition(shouldScroll);\n    }\n  } else if (isObject && isValidPosition(shouldScroll)) {\n    position = normalizePosition(shouldScroll);\n  }\n\n  if (position) {\n    window.scrollTo(position.x, position.y);\n  }\n}\n\n/*  */\n\nvar supportsPushState =\n  inBrowser &&\n  (function () {\n    var ua = window.navigator.userAgent;\n\n    if (\n      (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n      ua.indexOf('Mobile Safari') !== -1 &&\n      ua.indexOf('Chrome') === -1 &&\n      ua.indexOf('Windows Phone') === -1\n    ) {\n      return false\n    }\n\n    return window.history && 'pushState' in window.history\n  })();\n\nfunction pushState (url, replace) {\n  saveScrollPosition();\n  // try...catch the pushState call to get around Safari\n  // DOM Exception 18 where it limits to 100 pushState calls\n  var history = window.history;\n  try {\n    if (replace) {\n      history.replaceState({ key: getStateKey() }, '', url);\n    } else {\n      history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n    }\n  } catch (e) {\n    window.location[replace ? 'replace' : 'assign'](url);\n  }\n}\n\nfunction replaceState (url) {\n  pushState(url, true);\n}\n\n/*  */\n\nfunction runQueue (queue, fn, cb) {\n  var step = function (index) {\n    if (index >= queue.length) {\n      cb();\n    } else {\n      if (queue[index]) {\n        fn(queue[index], function () {\n          step(index + 1);\n        });\n      } else {\n        step(index + 1);\n      }\n    }\n  };\n  step(0);\n}\n\n/*  */\n\nfunction resolveAsyncComponents (matched) {\n  return function (to, from, next) {\n    var hasAsync = false;\n    var pending = 0;\n    var error = null;\n\n    flatMapComponents(matched, function (def, _, match, key) {\n      // if it's a function and doesn't have cid attached,\n      // assume it's an async component resolve function.\n      // we are not using Vue's default async resolving mechanism because\n      // we want to halt the navigation until the incoming component has been\n      // resolved.\n      if (typeof def === 'function' && def.cid === undefined) {\n        hasAsync = true;\n        pending++;\n\n        var resolve = once(function (resolvedDef) {\n          if (isESModule(resolvedDef)) {\n            resolvedDef = resolvedDef.default;\n          }\n          // save resolved on async factory in case it's used elsewhere\n          def.resolved = typeof resolvedDef === 'function'\n            ? resolvedDef\n            : _Vue.extend(resolvedDef);\n          match.components[key] = resolvedDef;\n          pending--;\n          if (pending <= 0) {\n            next();\n          }\n        });\n\n        var reject = once(function (reason) {\n          var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n           true && warn(false, msg);\n          if (!error) {\n            error = isError(reason)\n              ? reason\n              : new Error(msg);\n            next(error);\n          }\n        });\n\n        var res;\n        try {\n          res = def(resolve, reject);\n        } catch (e) {\n          reject(e);\n        }\n        if (res) {\n          if (typeof res.then === 'function') {\n            res.then(resolve, reject);\n          } else {\n            // new syntax in Vue 2.3\n            var comp = res.component;\n            if (comp && typeof comp.then === 'function') {\n              comp.then(resolve, reject);\n            }\n          }\n        }\n      }\n    });\n\n    if (!hasAsync) { next(); }\n  }\n}\n\nfunction flatMapComponents (\n  matched,\n  fn\n) {\n  return flatten(matched.map(function (m) {\n    return Object.keys(m.components).map(function (key) { return fn(\n      m.components[key],\n      m.instances[key],\n      m, key\n    ); })\n  }))\n}\n\nfunction flatten (arr) {\n  return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n  typeof Symbol === 'function' &&\n  typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n  return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n  var called = false;\n  return function () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    if (called) { return }\n    called = true;\n    return fn.apply(this, args)\n  }\n}\n\nvar NavigationDuplicated = /*@__PURE__*/(function (Error) {\n  function NavigationDuplicated (normalizedLocation) {\n    Error.call(this);\n    this.name = this._name = 'NavigationDuplicated';\n    // passing the message to super() doesn't seem to work in the transpiled version\n    this.message = \"Navigating to current location (\\\"\" + (normalizedLocation.fullPath) + \"\\\") is not allowed\";\n    // add a stack property so services like Sentry can correctly display it\n    Object.defineProperty(this, 'stack', {\n      value: new Error().stack,\n      writable: true,\n      configurable: true\n    });\n    // we could also have used\n    // Error.captureStackTrace(this, this.constructor)\n    // but it only exists on node and chrome\n  }\n\n  if ( Error ) NavigationDuplicated.__proto__ = Error;\n  NavigationDuplicated.prototype = Object.create( Error && Error.prototype );\n  NavigationDuplicated.prototype.constructor = NavigationDuplicated;\n\n  return NavigationDuplicated;\n}(Error));\n\n// support IE9\nNavigationDuplicated._name = 'NavigationDuplicated';\n\n/*  */\n\nvar History = function History (router, base) {\n  this.router = router;\n  this.base = normalizeBase(base);\n  // start with a route object that stands for \"nowhere\"\n  this.current = START;\n  this.pending = null;\n  this.ready = false;\n  this.readyCbs = [];\n  this.readyErrorCbs = [];\n  this.errorCbs = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n  this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n  if (this.ready) {\n    cb();\n  } else {\n    this.readyCbs.push(cb);\n    if (errorCb) {\n      this.readyErrorCbs.push(errorCb);\n    }\n  }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n  this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n  location,\n  onComplete,\n  onAbort\n) {\n    var this$1 = this;\n\n  var route = this.router.match(location, this.current);\n  this.confirmTransition(\n    route,\n    function () {\n      this$1.updateRoute(route);\n      onComplete && onComplete(route);\n      this$1.ensureURL();\n\n      // fire ready cbs once\n      if (!this$1.ready) {\n        this$1.ready = true;\n        this$1.readyCbs.forEach(function (cb) {\n          cb(route);\n        });\n      }\n    },\n    function (err) {\n      if (onAbort) {\n        onAbort(err);\n      }\n      if (err && !this$1.ready) {\n        this$1.ready = true;\n        this$1.readyErrorCbs.forEach(function (cb) {\n          cb(err);\n        });\n      }\n    }\n  );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n    var this$1 = this;\n\n  var current = this.current;\n  var abort = function (err) {\n    // after merging https://github.com/vuejs/vue-router/pull/2771 we\n    // When the user navigates through history through back/forward buttons\n    // we do not want to throw the error. We only throw it if directly calling\n    // push/replace. That's why it's not included in isError\n    if (!isExtendedError(NavigationDuplicated, err) && isError(err)) {\n      if (this$1.errorCbs.length) {\n        this$1.errorCbs.forEach(function (cb) {\n          cb(err);\n        });\n      } else {\n        warn(false, 'uncaught error during route navigation:');\n        console.error(err);\n      }\n    }\n    onAbort && onAbort(err);\n  };\n  if (\n    isSameRoute(route, current) &&\n    // in the case the route map has been dynamically appended to\n    route.matched.length === current.matched.length\n  ) {\n    this.ensureURL();\n    return abort(new NavigationDuplicated(route))\n  }\n\n  var ref = resolveQueue(\n    this.current.matched,\n    route.matched\n  );\n    var updated = ref.updated;\n    var deactivated = ref.deactivated;\n    var activated = ref.activated;\n\n  var queue = [].concat(\n    // in-component leave guards\n    extractLeaveGuards(deactivated),\n    // global before hooks\n    this.router.beforeHooks,\n    // in-component update hooks\n    extractUpdateHooks(updated),\n    // in-config enter guards\n    activated.map(function (m) { return m.beforeEnter; }),\n    // async components\n    resolveAsyncComponents(activated)\n  );\n\n  this.pending = route;\n  var iterator = function (hook, next) {\n    if (this$1.pending !== route) {\n      return abort()\n    }\n    try {\n      hook(route, current, function (to) {\n        if (to === false || isError(to)) {\n          // next(false) -> abort navigation, ensure current URL\n          this$1.ensureURL(true);\n          abort(to);\n        } else if (\n          typeof to === 'string' ||\n          (typeof to === 'object' &&\n            (typeof to.path === 'string' || typeof to.name === 'string'))\n        ) {\n          // next('/') or next({ path: '/' }) -> redirect\n          abort();\n          if (typeof to === 'object' && to.replace) {\n            this$1.replace(to);\n          } else {\n            this$1.push(to);\n          }\n        } else {\n          // confirm transition and pass on the value\n          next(to);\n        }\n      });\n    } catch (e) {\n      abort(e);\n    }\n  };\n\n  runQueue(queue, iterator, function () {\n    var postEnterCbs = [];\n    var isValid = function () { return this$1.current === route; };\n    // wait until async components are resolved before\n    // extracting in-component enter guards\n    var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n    var queue = enterGuards.concat(this$1.router.resolveHooks);\n    runQueue(queue, iterator, function () {\n      if (this$1.pending !== route) {\n        return abort()\n      }\n      this$1.pending = null;\n      onComplete(route);\n      if (this$1.router.app) {\n        this$1.router.app.$nextTick(function () {\n          postEnterCbs.forEach(function (cb) {\n            cb();\n          });\n        });\n      }\n    });\n  });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n  var prev = this.current;\n  this.current = route;\n  this.cb && this.cb(route);\n  this.router.afterHooks.forEach(function (hook) {\n    hook && hook(route, prev);\n  });\n};\n\nfunction normalizeBase (base) {\n  if (!base) {\n    if (inBrowser) {\n      // respect <base> tag\n      var baseEl = document.querySelector('base');\n      base = (baseEl && baseEl.getAttribute('href')) || '/';\n      // strip full URL origin\n      base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n    } else {\n      base = '/';\n    }\n  }\n  // make sure there's the starting slash\n  if (base.charAt(0) !== '/') {\n    base = '/' + base;\n  }\n  // remove trailing slash\n  return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n  current,\n  next\n) {\n  var i;\n  var max = Math.max(current.length, next.length);\n  for (i = 0; i < max; i++) {\n    if (current[i] !== next[i]) {\n      break\n    }\n  }\n  return {\n    updated: next.slice(0, i),\n    activated: next.slice(i),\n    deactivated: current.slice(i)\n  }\n}\n\nfunction extractGuards (\n  records,\n  name,\n  bind,\n  reverse\n) {\n  var guards = flatMapComponents(records, function (def, instance, match, key) {\n    var guard = extractGuard(def, name);\n    if (guard) {\n      return Array.isArray(guard)\n        ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n        : bind(guard, instance, match, key)\n    }\n  });\n  return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n  def,\n  key\n) {\n  if (typeof def !== 'function') {\n    // extend now so that global mixins are applied.\n    def = _Vue.extend(def);\n  }\n  return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n  return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n  return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n  if (instance) {\n    return function boundRouteGuard () {\n      return guard.apply(instance, arguments)\n    }\n  }\n}\n\nfunction extractEnterGuards (\n  activated,\n  cbs,\n  isValid\n) {\n  return extractGuards(\n    activated,\n    'beforeRouteEnter',\n    function (guard, _, match, key) {\n      return bindEnterGuard(guard, match, key, cbs, isValid)\n    }\n  )\n}\n\nfunction bindEnterGuard (\n  guard,\n  match,\n  key,\n  cbs,\n  isValid\n) {\n  return function routeEnterGuard (to, from, next) {\n    return guard(to, from, function (cb) {\n      if (typeof cb === 'function') {\n        cbs.push(function () {\n          // #750\n          // if a router-view is wrapped with an out-in transition,\n          // the instance may not have been registered at this time.\n          // we will need to poll for registration until current route\n          // is no longer valid.\n          poll(cb, match.instances, key, isValid);\n        });\n      }\n      next(cb);\n    })\n  }\n}\n\nfunction poll (\n  cb, // somehow flow cannot infer this is a function\n  instances,\n  key,\n  isValid\n) {\n  if (\n    instances[key] &&\n    !instances[key]._isBeingDestroyed // do not reuse being destroyed instance\n  ) {\n    cb(instances[key]);\n  } else if (isValid()) {\n    setTimeout(function () {\n      poll(cb, instances, key, isValid);\n    }, 16);\n  }\n}\n\n/*  */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n  function HTML5History (router, base) {\n    var this$1 = this;\n\n    History.call(this, router, base);\n\n    var expectScroll = router.options.scrollBehavior;\n    var supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      setupScroll();\n    }\n\n    var initLocation = getLocation(this.base);\n    window.addEventListener('popstate', function (e) {\n      var current = this$1.current;\n\n      // Avoiding first `popstate` event dispatched in some browsers but first\n      // history route not updated since async guard at the same time.\n      var location = getLocation(this$1.base);\n      if (this$1.current === START && location === initLocation) {\n        return\n      }\n\n      this$1.transitionTo(location, function (route) {\n        if (supportsScroll) {\n          handleScroll(router, route, current, true);\n        }\n      });\n    });\n  }\n\n  if ( History ) HTML5History.__proto__ = History;\n  HTML5History.prototype = Object.create( History && History.prototype );\n  HTML5History.prototype.constructor = HTML5History;\n\n  HTML5History.prototype.go = function go (n) {\n    window.history.go(n);\n  };\n\n  HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(location, function (route) {\n      pushState(cleanPath(this$1.base + route.fullPath));\n      handleScroll(this$1.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  };\n\n  HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(location, function (route) {\n      replaceState(cleanPath(this$1.base + route.fullPath));\n      handleScroll(this$1.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  };\n\n  HTML5History.prototype.ensureURL = function ensureURL (push) {\n    if (getLocation(this.base) !== this.current.fullPath) {\n      var current = cleanPath(this.base + this.current.fullPath);\n      push ? pushState(current) : replaceState(current);\n    }\n  };\n\n  HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n    return getLocation(this.base)\n  };\n\n  return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n  var path = decodeURI(window.location.pathname);\n  if (base && path.indexOf(base) === 0) {\n    path = path.slice(base.length);\n  }\n  return (path || '/') + window.location.search + window.location.hash\n}\n\n/*  */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n  function HashHistory (router, base, fallback) {\n    History.call(this, router, base);\n    // check history fallback deeplinking\n    if (fallback && checkFallback(this.base)) {\n      return\n    }\n    ensureSlash();\n  }\n\n  if ( History ) HashHistory.__proto__ = History;\n  HashHistory.prototype = Object.create( History && History.prototype );\n  HashHistory.prototype.constructor = HashHistory;\n\n  // this is delayed until the app mounts\n  // to avoid the hashchange listener being fired too early\n  HashHistory.prototype.setupListeners = function setupListeners () {\n    var this$1 = this;\n\n    var router = this.router;\n    var expectScroll = router.options.scrollBehavior;\n    var supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      setupScroll();\n    }\n\n    window.addEventListener(\n      supportsPushState ? 'popstate' : 'hashchange',\n      function () {\n        var current = this$1.current;\n        if (!ensureSlash()) {\n          return\n        }\n        this$1.transitionTo(getHash(), function (route) {\n          if (supportsScroll) {\n            handleScroll(this$1.router, route, current, true);\n          }\n          if (!supportsPushState) {\n            replaceHash(route.fullPath);\n          }\n        });\n      }\n    );\n  };\n\n  HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(\n      location,\n      function (route) {\n        pushHash(route.fullPath);\n        handleScroll(this$1.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(\n      location,\n      function (route) {\n        replaceHash(route.fullPath);\n        handleScroll(this$1.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  HashHistory.prototype.go = function go (n) {\n    window.history.go(n);\n  };\n\n  HashHistory.prototype.ensureURL = function ensureURL (push) {\n    var current = this.current.fullPath;\n    if (getHash() !== current) {\n      push ? pushHash(current) : replaceHash(current);\n    }\n  };\n\n  HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n    return getHash()\n  };\n\n  return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n  var location = getLocation(base);\n  if (!/^\\/#/.test(location)) {\n    window.location.replace(cleanPath(base + '/#' + location));\n    return true\n  }\n}\n\nfunction ensureSlash () {\n  var path = getHash();\n  if (path.charAt(0) === '/') {\n    return true\n  }\n  replaceHash('/' + path);\n  return false\n}\n\nfunction getHash () {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var index = href.indexOf('#');\n  // empty path\n  if (index < 0) { return '' }\n\n  href = href.slice(index + 1);\n  // decode the hash but not the search or hash\n  // as search(query) is already decoded\n  // https://github.com/vuejs/vue-router/issues/2708\n  var searchIndex = href.indexOf('?');\n  if (searchIndex < 0) {\n    var hashIndex = href.indexOf('#');\n    if (hashIndex > -1) {\n      href = decodeURI(href.slice(0, hashIndex)) + href.slice(hashIndex);\n    } else { href = decodeURI(href); }\n  } else {\n    if (searchIndex > -1) {\n      href = decodeURI(href.slice(0, searchIndex)) + href.slice(searchIndex);\n    }\n  }\n\n  return href\n}\n\nfunction getUrl (path) {\n  var href = window.location.href;\n  var i = href.indexOf('#');\n  var base = i >= 0 ? href.slice(0, i) : href;\n  return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n  if (supportsPushState) {\n    pushState(getUrl(path));\n  } else {\n    window.location.hash = path;\n  }\n}\n\nfunction replaceHash (path) {\n  if (supportsPushState) {\n    replaceState(getUrl(path));\n  } else {\n    window.location.replace(getUrl(path));\n  }\n}\n\n/*  */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n  function AbstractHistory (router, base) {\n    History.call(this, router, base);\n    this.stack = [];\n    this.index = -1;\n  }\n\n  if ( History ) AbstractHistory.__proto__ = History;\n  AbstractHistory.prototype = Object.create( History && History.prototype );\n  AbstractHistory.prototype.constructor = AbstractHistory;\n\n  AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    this.transitionTo(\n      location,\n      function (route) {\n        this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n        this$1.index++;\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    this.transitionTo(\n      location,\n      function (route) {\n        this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  AbstractHistory.prototype.go = function go (n) {\n    var this$1 = this;\n\n    var targetIndex = this.index + n;\n    if (targetIndex < 0 || targetIndex >= this.stack.length) {\n      return\n    }\n    var route = this.stack[targetIndex];\n    this.confirmTransition(\n      route,\n      function () {\n        this$1.index = targetIndex;\n        this$1.updateRoute(route);\n      },\n      function (err) {\n        if (isExtendedError(NavigationDuplicated, err)) {\n          this$1.index = targetIndex;\n        }\n      }\n    );\n  };\n\n  AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n    var current = this.stack[this.stack.length - 1];\n    return current ? current.fullPath : '/'\n  };\n\n  AbstractHistory.prototype.ensureURL = function ensureURL () {\n    // noop\n  };\n\n  return AbstractHistory;\n}(History));\n\n/*  */\n\n\n\nvar VueRouter = function VueRouter (options) {\n  if ( options === void 0 ) options = {};\n\n  this.app = null;\n  this.apps = [];\n  this.options = options;\n  this.beforeHooks = [];\n  this.resolveHooks = [];\n  this.afterHooks = [];\n  this.matcher = createMatcher(options.routes || [], this);\n\n  var mode = options.mode || 'hash';\n  this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n  if (this.fallback) {\n    mode = 'hash';\n  }\n  if (!inBrowser) {\n    mode = 'abstract';\n  }\n  this.mode = mode;\n\n  switch (mode) {\n    case 'history':\n      this.history = new HTML5History(this, options.base);\n      break\n    case 'hash':\n      this.history = new HashHistory(this, options.base, this.fallback);\n      break\n    case 'abstract':\n      this.history = new AbstractHistory(this, options.base);\n      break\n    default:\n      if (true) {\n        assert(false, (\"invalid mode: \" + mode));\n      }\n  }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (\n  raw,\n  current,\n  redirectedFrom\n) {\n  return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n  return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n    var this$1 = this;\n\n   true && assert(\n    install.installed,\n    \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n    \"before creating root instance.\"\n  );\n\n  this.apps.push(app);\n\n  // set up app destroyed handler\n  // https://github.com/vuejs/vue-router/issues/2639\n  app.$once('hook:destroyed', function () {\n    // clean out app from this.apps array once destroyed\n    var index = this$1.apps.indexOf(app);\n    if (index > -1) { this$1.apps.splice(index, 1); }\n    // ensure we still have a main app or null if no apps\n    // we do not release the router so it can be reused\n    if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n  });\n\n  // main app previously initialized\n  // return as we don't need to set up new history listener\n  if (this.app) {\n    return\n  }\n\n  this.app = app;\n\n  var history = this.history;\n\n  if (history instanceof HTML5History) {\n    history.transitionTo(history.getCurrentLocation());\n  } else if (history instanceof HashHistory) {\n    var setupHashListener = function () {\n      history.setupListeners();\n    };\n    history.transitionTo(\n      history.getCurrentLocation(),\n      setupHashListener,\n      setupHashListener\n    );\n  }\n\n  history.listen(function (route) {\n    this$1.apps.forEach(function (app) {\n      app._route = route;\n    });\n  });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n  return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n  return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n  return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n  this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n  this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1 = this;\n\n  // $flow-disable-line\n  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve, reject) {\n      this$1.history.push(location, resolve, reject);\n    })\n  } else {\n    this.history.push(location, onComplete, onAbort);\n  }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1 = this;\n\n  // $flow-disable-line\n  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve, reject) {\n      this$1.history.replace(location, resolve, reject);\n    })\n  } else {\n    this.history.replace(location, onComplete, onAbort);\n  }\n};\n\nVueRouter.prototype.go = function go (n) {\n  this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n  this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n  this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n  var route = to\n    ? to.matched\n      ? to\n      : this.resolve(to).route\n    : this.currentRoute;\n  if (!route) {\n    return []\n  }\n  return [].concat.apply([], route.matched.map(function (m) {\n    return Object.keys(m.components).map(function (key) {\n      return m.components[key]\n    })\n  }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n  to,\n  current,\n  append\n) {\n  current = current || this.history.current;\n  var location = normalizeLocation(\n    to,\n    current,\n    append,\n    this\n  );\n  var route = this.match(location, current);\n  var fullPath = route.redirectedFrom || route.fullPath;\n  var base = this.history.base;\n  var href = createHref(base, fullPath, this.mode);\n  return {\n    location: location,\n    route: route,\n    href: href,\n    // for backwards compat\n    normalizedTo: location,\n    resolved: route\n  }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n  this.matcher.addRoutes(routes);\n  if (this.history.current !== START) {\n    this.history.transitionTo(this.history.getCurrentLocation());\n  }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n  list.push(fn);\n  return function () {\n    var i = list.indexOf(fn);\n    if (i > -1) { list.splice(i, 1); }\n  }\n}\n\nfunction createHref (base, fullPath, mode) {\n  var path = mode === 'hash' ? '#' + fullPath : fullPath;\n  return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.1.3';\n\nif (inBrowser && window.Vue) {\n  window.Vue.use(VueRouter);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (VueRouter);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXJvdXRlci9kaXN0L3Z1ZS1yb3V0ZXIuZXNtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1yb3V0ZXIvZGlzdC92dWUtcm91dGVyLmVzbS5qcz84YzRmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICAqIHZ1ZS1yb3V0ZXIgdjMuMS4zXG4gICogKGMpIDIwMTkgRXZhbiBZb3VcbiAgKiBAbGljZW5zZSBNSVRcbiAgKi9cbi8qICAqL1xuXG5mdW5jdGlvbiBhc3NlcnQgKGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcigoXCJbdnVlLXJvdXRlcl0gXCIgKyBtZXNzYWdlKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuIChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWNvbmRpdGlvbikge1xuICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4oKFwiW3Z1ZS1yb3V0ZXJdIFwiICsgbWVzc2FnZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRXJyb3IgKGVycikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGVycikuaW5kZXhPZignRXJyb3InKSA+IC0xXG59XG5cbmZ1bmN0aW9uIGlzRXh0ZW5kZWRFcnJvciAoY29uc3RydWN0b3IsIGVycikge1xuICByZXR1cm4gKFxuICAgIGVyciBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yIHx8XG4gICAgLy8gX25hbWUgaXMgdG8gc3VwcG9ydCBJRTkgdG9vXG4gICAgKGVyciAmJiAoZXJyLm5hbWUgPT09IGNvbnN0cnVjdG9yLm5hbWUgfHwgZXJyLl9uYW1lID09PSBjb25zdHJ1Y3Rvci5fbmFtZSkpXG4gIClcbn1cblxuZnVuY3Rpb24gZXh0ZW5kIChhLCBiKSB7XG4gIGZvciAodmFyIGtleSBpbiBiKSB7XG4gICAgYVtrZXldID0gYltrZXldO1xuICB9XG4gIHJldHVybiBhXG59XG5cbnZhciBWaWV3ID0ge1xuICBuYW1lOiAnUm91dGVyVmlldycsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiB7XG4gICAgbmFtZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RlZmF1bHQnXG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoXywgcmVmKSB7XG4gICAgdmFyIHByb3BzID0gcmVmLnByb3BzO1xuICAgIHZhciBjaGlsZHJlbiA9IHJlZi5jaGlsZHJlbjtcbiAgICB2YXIgcGFyZW50ID0gcmVmLnBhcmVudDtcbiAgICB2YXIgZGF0YSA9IHJlZi5kYXRhO1xuXG4gICAgLy8gdXNlZCBieSBkZXZ0b29scyB0byBkaXNwbGF5IGEgcm91dGVyLXZpZXcgYmFkZ2VcbiAgICBkYXRhLnJvdXRlclZpZXcgPSB0cnVlO1xuXG4gICAgLy8gZGlyZWN0bHkgdXNlIHBhcmVudCBjb250ZXh0J3MgY3JlYXRlRWxlbWVudCgpIGZ1bmN0aW9uXG4gICAgLy8gc28gdGhhdCBjb21wb25lbnRzIHJlbmRlcmVkIGJ5IHJvdXRlci12aWV3IGNhbiByZXNvbHZlIG5hbWVkIHNsb3RzXG4gICAgdmFyIGggPSBwYXJlbnQuJGNyZWF0ZUVsZW1lbnQ7XG4gICAgdmFyIG5hbWUgPSBwcm9wcy5uYW1lO1xuICAgIHZhciByb3V0ZSA9IHBhcmVudC4kcm91dGU7XG4gICAgdmFyIGNhY2hlID0gcGFyZW50Ll9yb3V0ZXJWaWV3Q2FjaGUgfHwgKHBhcmVudC5fcm91dGVyVmlld0NhY2hlID0ge30pO1xuXG4gICAgLy8gZGV0ZXJtaW5lIGN1cnJlbnQgdmlldyBkZXB0aCwgYWxzbyBjaGVjayB0byBzZWUgaWYgdGhlIHRyZWVcbiAgICAvLyBoYXMgYmVlbiB0b2dnbGVkIGluYWN0aXZlIGJ1dCBrZXB0LWFsaXZlLlxuICAgIHZhciBkZXB0aCA9IDA7XG4gICAgdmFyIGluYWN0aXZlID0gZmFsc2U7XG4gICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQuX3JvdXRlclJvb3QgIT09IHBhcmVudCkge1xuICAgICAgdmFyIHZub2RlRGF0YSA9IHBhcmVudC4kdm5vZGUgJiYgcGFyZW50LiR2bm9kZS5kYXRhO1xuICAgICAgaWYgKHZub2RlRGF0YSkge1xuICAgICAgICBpZiAodm5vZGVEYXRhLnJvdXRlclZpZXcpIHtcbiAgICAgICAgICBkZXB0aCsrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2bm9kZURhdGEua2VlcEFsaXZlICYmIHBhcmVudC5faW5hY3RpdmUpIHtcbiAgICAgICAgICBpbmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgIH1cbiAgICBkYXRhLnJvdXRlclZpZXdEZXB0aCA9IGRlcHRoO1xuXG4gICAgLy8gcmVuZGVyIHByZXZpb3VzIHZpZXcgaWYgdGhlIHRyZWUgaXMgaW5hY3RpdmUgYW5kIGtlcHQtYWxpdmVcbiAgICBpZiAoaW5hY3RpdmUpIHtcbiAgICAgIHJldHVybiBoKGNhY2hlW25hbWVdLCBkYXRhLCBjaGlsZHJlbilcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2hlZCA9IHJvdXRlLm1hdGNoZWRbZGVwdGhdO1xuICAgIC8vIHJlbmRlciBlbXB0eSBub2RlIGlmIG5vIG1hdGNoZWQgcm91dGVcbiAgICBpZiAoIW1hdGNoZWQpIHtcbiAgICAgIGNhY2hlW25hbWVdID0gbnVsbDtcbiAgICAgIHJldHVybiBoKClcbiAgICB9XG5cbiAgICB2YXIgY29tcG9uZW50ID0gY2FjaGVbbmFtZV0gPSBtYXRjaGVkLmNvbXBvbmVudHNbbmFtZV07XG5cbiAgICAvLyBhdHRhY2ggaW5zdGFuY2UgcmVnaXN0cmF0aW9uIGhvb2tcbiAgICAvLyB0aGlzIHdpbGwgYmUgY2FsbGVkIGluIHRoZSBpbnN0YW5jZSdzIGluamVjdGVkIGxpZmVjeWNsZSBob29rc1xuICAgIGRhdGEucmVnaXN0ZXJSb3V0ZUluc3RhbmNlID0gZnVuY3Rpb24gKHZtLCB2YWwpIHtcbiAgICAgIC8vIHZhbCBjb3VsZCBiZSB1bmRlZmluZWQgZm9yIHVucmVnaXN0cmF0aW9uXG4gICAgICB2YXIgY3VycmVudCA9IG1hdGNoZWQuaW5zdGFuY2VzW25hbWVdO1xuICAgICAgaWYgKFxuICAgICAgICAodmFsICYmIGN1cnJlbnQgIT09IHZtKSB8fFxuICAgICAgICAoIXZhbCAmJiBjdXJyZW50ID09PSB2bSlcbiAgICAgICkge1xuICAgICAgICBtYXRjaGVkLmluc3RhbmNlc1tuYW1lXSA9IHZhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbHNvIHJlZ2lzdGVyIGluc3RhbmNlIGluIHByZXBhdGNoIGhvb2tcbiAgICAvLyBpbiBjYXNlIHRoZSBzYW1lIGNvbXBvbmVudCBpbnN0YW5jZSBpcyByZXVzZWQgYWNyb3NzIGRpZmZlcmVudCByb3V0ZXNcbiAgICA7KGRhdGEuaG9vayB8fCAoZGF0YS5ob29rID0ge30pKS5wcmVwYXRjaCA9IGZ1bmN0aW9uIChfLCB2bm9kZSkge1xuICAgICAgbWF0Y2hlZC5pbnN0YW5jZXNbbmFtZV0gPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB9O1xuXG4gICAgLy8gcmVnaXN0ZXIgaW5zdGFuY2UgaW4gaW5pdCBob29rXG4gICAgLy8gaW4gY2FzZSBrZXB0LWFsaXZlIGNvbXBvbmVudCBiZSBhY3RpdmVkIHdoZW4gcm91dGVzIGNoYW5nZWRcbiAgICBkYXRhLmhvb2suaW5pdCA9IGZ1bmN0aW9uICh2bm9kZSkge1xuICAgICAgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlICYmXG4gICAgICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICYmXG4gICAgICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICE9PSBtYXRjaGVkLmluc3RhbmNlc1tuYW1lXVxuICAgICAgKSB7XG4gICAgICAgIG1hdGNoZWQuaW5zdGFuY2VzW25hbWVdID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIHJlc29sdmUgcHJvcHNcbiAgICB2YXIgcHJvcHNUb1Bhc3MgPSBkYXRhLnByb3BzID0gcmVzb2x2ZVByb3BzKHJvdXRlLCBtYXRjaGVkLnByb3BzICYmIG1hdGNoZWQucHJvcHNbbmFtZV0pO1xuICAgIGlmIChwcm9wc1RvUGFzcykge1xuICAgICAgLy8gY2xvbmUgdG8gcHJldmVudCBtdXRhdGlvblxuICAgICAgcHJvcHNUb1Bhc3MgPSBkYXRhLnByb3BzID0gZXh0ZW5kKHt9LCBwcm9wc1RvUGFzcyk7XG4gICAgICAvLyBwYXNzIG5vbi1kZWNsYXJlZCBwcm9wcyBhcyBhdHRyc1xuICAgICAgdmFyIGF0dHJzID0gZGF0YS5hdHRycyA9IGRhdGEuYXR0cnMgfHwge307XG4gICAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHNUb1Bhc3MpIHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQucHJvcHMgfHwgIShrZXkgaW4gY29tcG9uZW50LnByb3BzKSkge1xuICAgICAgICAgIGF0dHJzW2tleV0gPSBwcm9wc1RvUGFzc1trZXldO1xuICAgICAgICAgIGRlbGV0ZSBwcm9wc1RvUGFzc1trZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoY29tcG9uZW50LCBkYXRhLCBjaGlsZHJlbilcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVzb2x2ZVByb3BzIChyb3V0ZSwgY29uZmlnKSB7XG4gIHN3aXRjaCAodHlwZW9mIGNvbmZpZykge1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICByZXR1cm5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgIHJldHVybiBjb25maWcocm91dGUpXG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gY29uZmlnID8gcm91dGUucGFyYW1zIDogdW5kZWZpbmVkXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgXCJwcm9wcyBpbiBcXFwiXCIgKyAocm91dGUucGF0aCkgKyBcIlxcXCIgaXMgYSBcIiArICh0eXBlb2YgY29uZmlnKSArIFwiLCBcIiArXG4gICAgICAgICAgXCJleHBlY3RpbmcgYW4gb2JqZWN0LCBmdW5jdGlvbiBvciBib29sZWFuLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBlbmNvZGVSZXNlcnZlUkUgPSAvWyEnKCkqXS9nO1xudmFyIGVuY29kZVJlc2VydmVSZXBsYWNlciA9IGZ1bmN0aW9uIChjKSB7IHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpOyB9O1xudmFyIGNvbW1hUkUgPSAvJTJDL2c7XG5cbi8vIGZpeGVkIGVuY29kZVVSSUNvbXBvbmVudCB3aGljaCBpcyBtb3JlIGNvbmZvcm1hbnQgdG8gUkZDMzk4Njpcbi8vIC0gZXNjYXBlcyBbIScoKSpdXG4vLyAtIHByZXNlcnZlIGNvbW1hc1xudmFyIGVuY29kZSA9IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpXG4gIC5yZXBsYWNlKGVuY29kZVJlc2VydmVSRSwgZW5jb2RlUmVzZXJ2ZVJlcGxhY2VyKVxuICAucmVwbGFjZShjb21tYVJFLCAnLCcpOyB9O1xuXG52YXIgZGVjb2RlID0gZGVjb2RlVVJJQ29tcG9uZW50O1xuXG5mdW5jdGlvbiByZXNvbHZlUXVlcnkgKFxuICBxdWVyeSxcbiAgZXh0cmFRdWVyeSxcbiAgX3BhcnNlUXVlcnlcbikge1xuICBpZiAoIGV4dHJhUXVlcnkgPT09IHZvaWQgMCApIGV4dHJhUXVlcnkgPSB7fTtcblxuICB2YXIgcGFyc2UgPSBfcGFyc2VRdWVyeSB8fCBwYXJzZVF1ZXJ5O1xuICB2YXIgcGFyc2VkUXVlcnk7XG4gIHRyeSB7XG4gICAgcGFyc2VkUXVlcnkgPSBwYXJzZShxdWVyeSB8fCAnJyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oZmFsc2UsIGUubWVzc2FnZSk7XG4gICAgcGFyc2VkUXVlcnkgPSB7fTtcbiAgfVxuICBmb3IgKHZhciBrZXkgaW4gZXh0cmFRdWVyeSkge1xuICAgIHBhcnNlZFF1ZXJ5W2tleV0gPSBleHRyYVF1ZXJ5W2tleV07XG4gIH1cbiAgcmV0dXJuIHBhcnNlZFF1ZXJ5XG59XG5cbmZ1bmN0aW9uIHBhcnNlUXVlcnkgKHF1ZXJ5KSB7XG4gIHZhciByZXMgPSB7fTtcblxuICBxdWVyeSA9IHF1ZXJ5LnRyaW0oKS5yZXBsYWNlKC9eKFxcP3wjfCYpLywgJycpO1xuXG4gIGlmICghcXVlcnkpIHtcbiAgICByZXR1cm4gcmVzXG4gIH1cblxuICBxdWVyeS5zcGxpdCgnJicpLmZvckVhY2goZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgdmFyIHBhcnRzID0gcGFyYW0ucmVwbGFjZSgvXFwrL2csICcgJykuc3BsaXQoJz0nKTtcbiAgICB2YXIga2V5ID0gZGVjb2RlKHBhcnRzLnNoaWZ0KCkpO1xuICAgIHZhciB2YWwgPSBwYXJ0cy5sZW5ndGggPiAwXG4gICAgICA/IGRlY29kZShwYXJ0cy5qb2luKCc9JykpXG4gICAgICA6IG51bGw7XG5cbiAgICBpZiAocmVzW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzW2tleV0gPSB2YWw7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc1trZXldKSkge1xuICAgICAgcmVzW2tleV0ucHVzaCh2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNba2V5XSA9IFtyZXNba2V5XSwgdmFsXTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5UXVlcnkgKG9iaikge1xuICB2YXIgcmVzID0gb2JqID8gT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWwgPSBvYmpba2V5XTtcblxuICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuXG4gICAgaWYgKHZhbCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGVuY29kZShrZXkpXG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgdmFsLmZvckVhY2goZnVuY3Rpb24gKHZhbDIpIHtcbiAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwyID09PSBudWxsKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlKGtleSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHZhbDIpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyYnKVxuICAgIH1cblxuICAgIHJldHVybiBlbmNvZGUoa2V5KSArICc9JyArIGVuY29kZSh2YWwpXG4gIH0pLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5sZW5ndGggPiAwOyB9KS5qb2luKCcmJykgOiBudWxsO1xuICByZXR1cm4gcmVzID8gKFwiP1wiICsgcmVzKSA6ICcnXG59XG5cbi8qICAqL1xuXG52YXIgdHJhaWxpbmdTbGFzaFJFID0gL1xcLz8kLztcblxuZnVuY3Rpb24gY3JlYXRlUm91dGUgKFxuICByZWNvcmQsXG4gIGxvY2F0aW9uLFxuICByZWRpcmVjdGVkRnJvbSxcbiAgcm91dGVyXG4pIHtcbiAgdmFyIHN0cmluZ2lmeVF1ZXJ5ID0gcm91dGVyICYmIHJvdXRlci5vcHRpb25zLnN0cmluZ2lmeVF1ZXJ5O1xuXG4gIHZhciBxdWVyeSA9IGxvY2F0aW9uLnF1ZXJ5IHx8IHt9O1xuICB0cnkge1xuICAgIHF1ZXJ5ID0gY2xvbmUocXVlcnkpO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByb3V0ZSA9IHtcbiAgICBuYW1lOiBsb2NhdGlvbi5uYW1lIHx8IChyZWNvcmQgJiYgcmVjb3JkLm5hbWUpLFxuICAgIG1ldGE6IChyZWNvcmQgJiYgcmVjb3JkLm1ldGEpIHx8IHt9LFxuICAgIHBhdGg6IGxvY2F0aW9uLnBhdGggfHwgJy8nLFxuICAgIGhhc2g6IGxvY2F0aW9uLmhhc2ggfHwgJycsXG4gICAgcXVlcnk6IHF1ZXJ5LFxuICAgIHBhcmFtczogbG9jYXRpb24ucGFyYW1zIHx8IHt9LFxuICAgIGZ1bGxQYXRoOiBnZXRGdWxsUGF0aChsb2NhdGlvbiwgc3RyaW5naWZ5UXVlcnkpLFxuICAgIG1hdGNoZWQ6IHJlY29yZCA/IGZvcm1hdE1hdGNoKHJlY29yZCkgOiBbXVxuICB9O1xuICBpZiAocmVkaXJlY3RlZEZyb20pIHtcbiAgICByb3V0ZS5yZWRpcmVjdGVkRnJvbSA9IGdldEZ1bGxQYXRoKHJlZGlyZWN0ZWRGcm9tLCBzdHJpbmdpZnlRdWVyeSk7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5mcmVlemUocm91dGUpXG59XG5cbmZ1bmN0aW9uIGNsb25lICh2YWx1ZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKGNsb25lKVxuICB9IGVsc2UgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcmVzID0ge307XG4gICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICByZXNba2V5XSA9IGNsb25lKHZhbHVlW2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbn1cblxuLy8gdGhlIHN0YXJ0aW5nIHJvdXRlIHRoYXQgcmVwcmVzZW50cyB0aGUgaW5pdGlhbCBzdGF0ZVxudmFyIFNUQVJUID0gY3JlYXRlUm91dGUobnVsbCwge1xuICBwYXRoOiAnLydcbn0pO1xuXG5mdW5jdGlvbiBmb3JtYXRNYXRjaCAocmVjb3JkKSB7XG4gIHZhciByZXMgPSBbXTtcbiAgd2hpbGUgKHJlY29yZCkge1xuICAgIHJlcy51bnNoaWZ0KHJlY29yZCk7XG4gICAgcmVjb3JkID0gcmVjb3JkLnBhcmVudDtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGdldEZ1bGxQYXRoIChcbiAgcmVmLFxuICBfc3RyaW5naWZ5UXVlcnlcbikge1xuICB2YXIgcGF0aCA9IHJlZi5wYXRoO1xuICB2YXIgcXVlcnkgPSByZWYucXVlcnk7IGlmICggcXVlcnkgPT09IHZvaWQgMCApIHF1ZXJ5ID0ge307XG4gIHZhciBoYXNoID0gcmVmLmhhc2g7IGlmICggaGFzaCA9PT0gdm9pZCAwICkgaGFzaCA9ICcnO1xuXG4gIHZhciBzdHJpbmdpZnkgPSBfc3RyaW5naWZ5UXVlcnkgfHwgc3RyaW5naWZ5UXVlcnk7XG4gIHJldHVybiAocGF0aCB8fCAnLycpICsgc3RyaW5naWZ5KHF1ZXJ5KSArIGhhc2hcbn1cblxuZnVuY3Rpb24gaXNTYW1lUm91dGUgKGEsIGIpIHtcbiAgaWYgKGIgPT09IFNUQVJUKSB7XG4gICAgcmV0dXJuIGEgPT09IGJcbiAgfSBlbHNlIGlmICghYikge1xuICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKGEucGF0aCAmJiBiLnBhdGgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgYS5wYXRoLnJlcGxhY2UodHJhaWxpbmdTbGFzaFJFLCAnJykgPT09IGIucGF0aC5yZXBsYWNlKHRyYWlsaW5nU2xhc2hSRSwgJycpICYmXG4gICAgICBhLmhhc2ggPT09IGIuaGFzaCAmJlxuICAgICAgaXNPYmplY3RFcXVhbChhLnF1ZXJ5LCBiLnF1ZXJ5KVxuICAgIClcbiAgfSBlbHNlIGlmIChhLm5hbWUgJiYgYi5uYW1lKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGEubmFtZSA9PT0gYi5uYW1lICYmXG4gICAgICBhLmhhc2ggPT09IGIuaGFzaCAmJlxuICAgICAgaXNPYmplY3RFcXVhbChhLnF1ZXJ5LCBiLnF1ZXJ5KSAmJlxuICAgICAgaXNPYmplY3RFcXVhbChhLnBhcmFtcywgYi5wYXJhbXMpXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0RXF1YWwgKGEsIGIpIHtcbiAgaWYgKCBhID09PSB2b2lkIDAgKSBhID0ge307XG4gIGlmICggYiA9PT0gdm9pZCAwICkgYiA9IHt9O1xuXG4gIC8vIGhhbmRsZSBudWxsIHZhbHVlICMxNTY2XG4gIGlmICghYSB8fCAhYikgeyByZXR1cm4gYSA9PT0gYiB9XG4gIHZhciBhS2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICB2YXIgYktleXMgPSBPYmplY3Qua2V5cyhiKTtcbiAgaWYgKGFLZXlzLmxlbmd0aCAhPT0gYktleXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIGFLZXlzLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgYVZhbCA9IGFba2V5XTtcbiAgICB2YXIgYlZhbCA9IGJba2V5XTtcbiAgICAvLyBjaGVjayBuZXN0ZWQgZXF1YWxpdHlcbiAgICBpZiAodHlwZW9mIGFWYWwgPT09ICdvYmplY3QnICYmIHR5cGVvZiBiVmFsID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0RXF1YWwoYVZhbCwgYlZhbClcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhhVmFsKSA9PT0gU3RyaW5nKGJWYWwpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGlzSW5jbHVkZWRSb3V0ZSAoY3VycmVudCwgdGFyZ2V0KSB7XG4gIHJldHVybiAoXG4gICAgY3VycmVudC5wYXRoLnJlcGxhY2UodHJhaWxpbmdTbGFzaFJFLCAnLycpLmluZGV4T2YoXG4gICAgICB0YXJnZXQucGF0aC5yZXBsYWNlKHRyYWlsaW5nU2xhc2hSRSwgJy8nKVxuICAgICkgPT09IDAgJiZcbiAgICAoIXRhcmdldC5oYXNoIHx8IGN1cnJlbnQuaGFzaCA9PT0gdGFyZ2V0Lmhhc2gpICYmXG4gICAgcXVlcnlJbmNsdWRlcyhjdXJyZW50LnF1ZXJ5LCB0YXJnZXQucXVlcnkpXG4gIClcbn1cblxuZnVuY3Rpb24gcXVlcnlJbmNsdWRlcyAoY3VycmVudCwgdGFyZ2V0KSB7XG4gIGZvciAodmFyIGtleSBpbiB0YXJnZXQpIHtcbiAgICBpZiAoIShrZXkgaW4gY3VycmVudCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVBhdGggKFxuICByZWxhdGl2ZSxcbiAgYmFzZSxcbiAgYXBwZW5kXG4pIHtcbiAgdmFyIGZpcnN0Q2hhciA9IHJlbGF0aXZlLmNoYXJBdCgwKTtcbiAgaWYgKGZpcnN0Q2hhciA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIHJlbGF0aXZlXG4gIH1cblxuICBpZiAoZmlyc3RDaGFyID09PSAnPycgfHwgZmlyc3RDaGFyID09PSAnIycpIHtcbiAgICByZXR1cm4gYmFzZSArIHJlbGF0aXZlXG4gIH1cblxuICB2YXIgc3RhY2sgPSBiYXNlLnNwbGl0KCcvJyk7XG5cbiAgLy8gcmVtb3ZlIHRyYWlsaW5nIHNlZ21lbnQgaWY6XG4gIC8vIC0gbm90IGFwcGVuZGluZ1xuICAvLyAtIGFwcGVuZGluZyB0byB0cmFpbGluZyBzbGFzaCAobGFzdCBzZWdtZW50IGlzIGVtcHR5KVxuICBpZiAoIWFwcGVuZCB8fCAhc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0pIHtcbiAgICBzdGFjay5wb3AoKTtcbiAgfVxuXG4gIC8vIHJlc29sdmUgcmVsYXRpdmUgcGF0aFxuICB2YXIgc2VnbWVudHMgPSByZWxhdGl2ZS5yZXBsYWNlKC9eXFwvLywgJycpLnNwbGl0KCcvJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc2VnbWVudCA9IHNlZ21lbnRzW2ldO1xuICAgIGlmIChzZWdtZW50ID09PSAnLi4nKSB7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICB9IGVsc2UgaWYgKHNlZ21lbnQgIT09ICcuJykge1xuICAgICAgc3RhY2sucHVzaChzZWdtZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBlbnN1cmUgbGVhZGluZyBzbGFzaFxuICBpZiAoc3RhY2tbMF0gIT09ICcnKSB7XG4gICAgc3RhY2sudW5zaGlmdCgnJyk7XG4gIH1cblxuICByZXR1cm4gc3RhY2suam9pbignLycpXG59XG5cbmZ1bmN0aW9uIHBhcnNlUGF0aCAocGF0aCkge1xuICB2YXIgaGFzaCA9ICcnO1xuICB2YXIgcXVlcnkgPSAnJztcblxuICB2YXIgaGFzaEluZGV4ID0gcGF0aC5pbmRleE9mKCcjJyk7XG4gIGlmIChoYXNoSW5kZXggPj0gMCkge1xuICAgIGhhc2ggPSBwYXRoLnNsaWNlKGhhc2hJbmRleCk7XG4gICAgcGF0aCA9IHBhdGguc2xpY2UoMCwgaGFzaEluZGV4KTtcbiAgfVxuXG4gIHZhciBxdWVyeUluZGV4ID0gcGF0aC5pbmRleE9mKCc/Jyk7XG4gIGlmIChxdWVyeUluZGV4ID49IDApIHtcbiAgICBxdWVyeSA9IHBhdGguc2xpY2UocXVlcnlJbmRleCArIDEpO1xuICAgIHBhdGggPSBwYXRoLnNsaWNlKDAsIHF1ZXJ5SW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICBoYXNoOiBoYXNoXG4gIH1cbn1cblxuZnVuY3Rpb24gY2xlYW5QYXRoIChwYXRoKSB7XG4gIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcL1xcLy9nLCAnLycpXG59XG5cbnZhciBpc2FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJyKSA9PSAnW29iamVjdCBBcnJheV0nO1xufTtcblxuLyoqXG4gKiBFeHBvc2UgYHBhdGhUb1JlZ2V4cGAuXG4gKi9cbnZhciBwYXRoVG9SZWdleHBfMSA9IHBhdGhUb1JlZ2V4cDtcbnZhciBwYXJzZV8xID0gcGFyc2U7XG52YXIgY29tcGlsZV8xID0gY29tcGlsZTtcbnZhciB0b2tlbnNUb0Z1bmN0aW9uXzEgPSB0b2tlbnNUb0Z1bmN0aW9uO1xudmFyIHRva2Vuc1RvUmVnRXhwXzEgPSB0b2tlbnNUb1JlZ0V4cDtcblxuLyoqXG4gKiBUaGUgbWFpbiBwYXRoIG1hdGNoaW5nIHJlZ2V4cCB1dGlsaXR5LlxuICpcbiAqIEB0eXBlIHtSZWdFeHB9XG4gKi9cbnZhciBQQVRIX1JFR0VYUCA9IG5ldyBSZWdFeHAoW1xuICAvLyBNYXRjaCBlc2NhcGVkIGNoYXJhY3RlcnMgdGhhdCB3b3VsZCBvdGhlcndpc2UgYXBwZWFyIGluIGZ1dHVyZSBtYXRjaGVzLlxuICAvLyBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHRoYXQgd29uJ3QgdHJhbnNmb3JtLlxuICAnKFxcXFxcXFxcLiknLFxuICAvLyBNYXRjaCBFeHByZXNzLXN0eWxlIHBhcmFtZXRlcnMgYW5kIHVuLW5hbWVkIHBhcmFtZXRlcnMgd2l0aCBhIHByZWZpeFxuICAvLyBhbmQgb3B0aW9uYWwgc3VmZml4ZXMuIE1hdGNoZXMgYXBwZWFyIGFzOlxuICAvL1xuICAvLyBcIi86dGVzdChcXFxcZCspP1wiID0+IFtcIi9cIiwgXCJ0ZXN0XCIsIFwiXFxkK1wiLCB1bmRlZmluZWQsIFwiP1wiLCB1bmRlZmluZWRdXG4gIC8vIFwiL3JvdXRlKFxcXFxkKylcIiAgPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFwiXFxkK1wiLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgLy8gXCIvKlwiICAgICAgICAgICAgPT4gW1wiL1wiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFwiKlwiXVxuICAnKFtcXFxcLy5dKT8oPzooPzpcXFxcOihcXFxcdyspKD86XFxcXCgoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKV0pKylcXFxcKSk/fFxcXFwoKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKCldKSspXFxcXCkpKFsrKj9dKT98KFxcXFwqKSknXG5dLmpvaW4oJ3wnKSwgJ2cnKTtcblxuLyoqXG4gKiBQYXJzZSBhIHN0cmluZyBmb3IgdGhlIHJhdyB0b2tlbnMuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgc3RyXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSBvcHRpb25zXG4gKiBAcmV0dXJuIHshQXJyYXl9XG4gKi9cbmZ1bmN0aW9uIHBhcnNlIChzdHIsIG9wdGlvbnMpIHtcbiAgdmFyIHRva2VucyA9IFtdO1xuICB2YXIga2V5ID0gMDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHBhdGggPSAnJztcbiAgdmFyIGRlZmF1bHREZWxpbWl0ZXIgPSBvcHRpb25zICYmIG9wdGlvbnMuZGVsaW1pdGVyIHx8ICcvJztcbiAgdmFyIHJlcztcblxuICB3aGlsZSAoKHJlcyA9IFBBVEhfUkVHRVhQLmV4ZWMoc3RyKSkgIT0gbnVsbCkge1xuICAgIHZhciBtID0gcmVzWzBdO1xuICAgIHZhciBlc2NhcGVkID0gcmVzWzFdO1xuICAgIHZhciBvZmZzZXQgPSByZXMuaW5kZXg7XG4gICAgcGF0aCArPSBzdHIuc2xpY2UoaW5kZXgsIG9mZnNldCk7XG4gICAgaW5kZXggPSBvZmZzZXQgKyBtLmxlbmd0aDtcblxuICAgIC8vIElnbm9yZSBhbHJlYWR5IGVzY2FwZWQgc2VxdWVuY2VzLlxuICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICBwYXRoICs9IGVzY2FwZWRbMV07XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHZhciBuZXh0ID0gc3RyW2luZGV4XTtcbiAgICB2YXIgcHJlZml4ID0gcmVzWzJdO1xuICAgIHZhciBuYW1lID0gcmVzWzNdO1xuICAgIHZhciBjYXB0dXJlID0gcmVzWzRdO1xuICAgIHZhciBncm91cCA9IHJlc1s1XTtcbiAgICB2YXIgbW9kaWZpZXIgPSByZXNbNl07XG4gICAgdmFyIGFzdGVyaXNrID0gcmVzWzddO1xuXG4gICAgLy8gUHVzaCB0aGUgY3VycmVudCBwYXRoIG9udG8gdGhlIHRva2Vucy5cbiAgICBpZiAocGF0aCkge1xuICAgICAgdG9rZW5zLnB1c2gocGF0aCk7XG4gICAgICBwYXRoID0gJyc7XG4gICAgfVxuXG4gICAgdmFyIHBhcnRpYWwgPSBwcmVmaXggIT0gbnVsbCAmJiBuZXh0ICE9IG51bGwgJiYgbmV4dCAhPT0gcHJlZml4O1xuICAgIHZhciByZXBlYXQgPSBtb2RpZmllciA9PT0gJysnIHx8IG1vZGlmaWVyID09PSAnKic7XG4gICAgdmFyIG9wdGlvbmFsID0gbW9kaWZpZXIgPT09ICc/JyB8fCBtb2RpZmllciA9PT0gJyonO1xuICAgIHZhciBkZWxpbWl0ZXIgPSByZXNbMl0gfHwgZGVmYXVsdERlbGltaXRlcjtcbiAgICB2YXIgcGF0dGVybiA9IGNhcHR1cmUgfHwgZ3JvdXA7XG5cbiAgICB0b2tlbnMucHVzaCh7XG4gICAgICBuYW1lOiBuYW1lIHx8IGtleSsrLFxuICAgICAgcHJlZml4OiBwcmVmaXggfHwgJycsXG4gICAgICBkZWxpbWl0ZXI6IGRlbGltaXRlcixcbiAgICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICAgIHJlcGVhdDogcmVwZWF0LFxuICAgICAgcGFydGlhbDogcGFydGlhbCxcbiAgICAgIGFzdGVyaXNrOiAhIWFzdGVyaXNrLFxuICAgICAgcGF0dGVybjogcGF0dGVybiA/IGVzY2FwZUdyb3VwKHBhdHRlcm4pIDogKGFzdGVyaXNrID8gJy4qJyA6ICdbXicgKyBlc2NhcGVTdHJpbmcoZGVsaW1pdGVyKSArICddKz8nKVxuICAgIH0pO1xuICB9XG5cbiAgLy8gTWF0Y2ggYW55IGNoYXJhY3RlcnMgc3RpbGwgcmVtYWluaW5nLlxuICBpZiAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgcGF0aCArPSBzdHIuc3Vic3RyKGluZGV4KTtcbiAgfVxuXG4gIC8vIElmIHRoZSBwYXRoIGV4aXN0cywgcHVzaCBpdCBvbnRvIHRoZSBlbmQuXG4gIGlmIChwYXRoKSB7XG4gICAgdG9rZW5zLnB1c2gocGF0aCk7XG4gIH1cblxuICByZXR1cm4gdG9rZW5zXG59XG5cbi8qKlxuICogQ29tcGlsZSBhIHN0cmluZyB0byBhIHRlbXBsYXRlIGZ1bmN0aW9uIGZvciB0aGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgICAgICAgIHN0clxuICogQHBhcmFtICB7T2JqZWN0PX0gICAgICAgICAgICBvcHRpb25zXG4gKiBAcmV0dXJuIHshZnVuY3Rpb24oT2JqZWN0PSwgT2JqZWN0PSl9XG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGUgKHN0ciwgb3B0aW9ucykge1xuICByZXR1cm4gdG9rZW5zVG9GdW5jdGlvbihwYXJzZShzdHIsIG9wdGlvbnMpKVxufVxuXG4vKipcbiAqIFByZXR0aWVyIGVuY29kaW5nIG9mIFVSSSBwYXRoIHNlZ21lbnRzLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ31cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50UHJldHR5IChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSShzdHIpLnJlcGxhY2UoL1tcXC8/I10vZywgZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIH0pXG59XG5cbi8qKlxuICogRW5jb2RlIHRoZSBhc3RlcmlzayBwYXJhbWV0ZXIuIFNpbWlsYXIgdG8gYHByZXR0eWAsIGJ1dCBhbGxvd3Mgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVuY29kZUFzdGVyaXNrIChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSShzdHIpLnJlcGxhY2UoL1s/I10vZywgZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIH0pXG59XG5cbi8qKlxuICogRXhwb3NlIGEgbWV0aG9kIGZvciB0cmFuc2Zvcm1pbmcgdG9rZW5zIGludG8gdGhlIHBhdGggZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHRva2Vuc1RvRnVuY3Rpb24gKHRva2Vucykge1xuICAvLyBDb21waWxlIGFsbCB0aGUgdG9rZW5zIGludG8gcmVnZXhwcy5cbiAgdmFyIG1hdGNoZXMgPSBuZXcgQXJyYXkodG9rZW5zLmxlbmd0aCk7XG5cbiAgLy8gQ29tcGlsZSBhbGwgdGhlIHBhdHRlcm5zIGJlZm9yZSBjb21waWxhdGlvbi5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodHlwZW9mIHRva2Vuc1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG1hdGNoZXNbaV0gPSBuZXcgUmVnRXhwKCdeKD86JyArIHRva2Vuc1tpXS5wYXR0ZXJuICsgJykkJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChvYmosIG9wdHMpIHtcbiAgICB2YXIgcGF0aCA9ICcnO1xuICAgIHZhciBkYXRhID0gb2JqIHx8IHt9O1xuICAgIHZhciBvcHRpb25zID0gb3B0cyB8fCB7fTtcbiAgICB2YXIgZW5jb2RlID0gb3B0aW9ucy5wcmV0dHkgPyBlbmNvZGVVUklDb21wb25lbnRQcmV0dHkgOiBlbmNvZGVVUklDb21wb25lbnQ7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRva2VuID0gdG9rZW5zW2ldO1xuXG4gICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICBwYXRoICs9IHRva2VuO1xuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IGRhdGFbdG9rZW4ubmFtZV07XG4gICAgICB2YXIgc2VnbWVudDtcblxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgICAgLy8gUHJlcGVuZCBwYXJ0aWFsIHNlZ21lbnQgcHJlZml4ZXMuXG4gICAgICAgICAgaWYgKHRva2VuLnBhcnRpYWwpIHtcbiAgICAgICAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBiZSBkZWZpbmVkJylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaXNhcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKCF0b2tlbi5yZXBlYXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG5vdCByZXBlYXQsIGJ1dCByZWNlaXZlZCBgJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSArICdgJylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBpZiAodG9rZW4ub3B0aW9uYWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbm90IGJlIGVtcHR5JylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbHVlLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgc2VnbWVudCA9IGVuY29kZSh2YWx1ZVtqXSk7XG5cbiAgICAgICAgICBpZiAoIW1hdGNoZXNbaV0udGVzdChzZWdtZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYWxsIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbWF0Y2ggXCInICsgdG9rZW4ucGF0dGVybiArICdcIiwgYnV0IHJlY2VpdmVkIGAnICsgSlNPTi5zdHJpbmdpZnkoc2VnbWVudCkgKyAnYCcpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0aCArPSAoaiA9PT0gMCA/IHRva2VuLnByZWZpeCA6IHRva2VuLmRlbGltaXRlcikgKyBzZWdtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgc2VnbWVudCA9IHRva2VuLmFzdGVyaXNrID8gZW5jb2RlQXN0ZXJpc2sodmFsdWUpIDogZW5jb2RlKHZhbHVlKTtcblxuICAgICAgaWYgKCFtYXRjaGVzW2ldLnRlc3Qoc2VnbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBtYXRjaCBcIicgKyB0b2tlbi5wYXR0ZXJuICsgJ1wiLCBidXQgcmVjZWl2ZWQgXCInICsgc2VnbWVudCArICdcIicpXG4gICAgICB9XG5cbiAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4ICsgc2VnbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aFxuICB9XG59XG5cbi8qKlxuICogRXNjYXBlIGEgcmVndWxhciBleHByZXNzaW9uIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmcgKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbLisqPz1eIToke30oKVtcXF18XFwvXFxcXF0pL2csICdcXFxcJDEnKVxufVxuXG4vKipcbiAqIEVzY2FwZSB0aGUgY2FwdHVyaW5nIGdyb3VwIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgbWVhbmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGdyb3VwXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUdyb3VwIChncm91cCkge1xuICByZXR1cm4gZ3JvdXAucmVwbGFjZSgvKFs9ITokXFwvKCldKS9nLCAnXFxcXCQxJylcbn1cblxuLyoqXG4gKiBBdHRhY2ggdGhlIGtleXMgYXMgYSBwcm9wZXJ0eSBvZiB0aGUgcmVnZXhwLlxuICpcbiAqIEBwYXJhbSAgeyFSZWdFeHB9IHJlXG4gKiBAcGFyYW0gIHtBcnJheX0gICBrZXlzXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBhdHRhY2hLZXlzIChyZSwga2V5cykge1xuICByZS5rZXlzID0ga2V5cztcbiAgcmV0dXJuIHJlXG59XG5cbi8qKlxuICogR2V0IHRoZSBmbGFncyBmb3IgYSByZWdleHAgZnJvbSB0aGUgb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0gIHtPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZmxhZ3MgKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG9wdGlvbnMuc2Vuc2l0aXZlID8gJycgOiAnaSdcbn1cblxuLyoqXG4gKiBQdWxsIG91dCBrZXlzIGZyb20gYSByZWdleHAuXG4gKlxuICogQHBhcmFtICB7IVJlZ0V4cH0gcGF0aFxuICogQHBhcmFtICB7IUFycmF5fSAga2V5c1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gcmVnZXhwVG9SZWdleHAgKHBhdGgsIGtleXMpIHtcbiAgLy8gVXNlIGEgbmVnYXRpdmUgbG9va2FoZWFkIHRvIG1hdGNoIG9ubHkgY2FwdHVyaW5nIGdyb3Vwcy5cbiAgdmFyIGdyb3VwcyA9IHBhdGguc291cmNlLm1hdGNoKC9cXCgoPyFcXD8pL2cpO1xuXG4gIGlmIChncm91cHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKykge1xuICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgbmFtZTogaSxcbiAgICAgICAgcHJlZml4OiBudWxsLFxuICAgICAgICBkZWxpbWl0ZXI6IG51bGwsXG4gICAgICAgIG9wdGlvbmFsOiBmYWxzZSxcbiAgICAgICAgcmVwZWF0OiBmYWxzZSxcbiAgICAgICAgcGFydGlhbDogZmFsc2UsXG4gICAgICAgIGFzdGVyaXNrOiBmYWxzZSxcbiAgICAgICAgcGF0dGVybjogbnVsbFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGF0dGFjaEtleXMocGF0aCwga2V5cylcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYW4gYXJyYXkgaW50byBhIHJlZ2V4cC5cbiAqXG4gKiBAcGFyYW0gIHshQXJyYXl9ICBwYXRoXG4gKiBAcGFyYW0gIHtBcnJheX0gICBrZXlzXG4gKiBAcGFyYW0gIHshT2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBhcnJheVRvUmVnZXhwIChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gIHZhciBwYXJ0cyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgIHBhcnRzLnB1c2gocGF0aFRvUmVnZXhwKHBhdGhbaV0sIGtleXMsIG9wdGlvbnMpLnNvdXJjZSk7XG4gIH1cblxuICB2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cCgnKD86JyArIHBhcnRzLmpvaW4oJ3wnKSArICcpJywgZmxhZ3Mob3B0aW9ucykpO1xuXG4gIHJldHVybiBhdHRhY2hLZXlzKHJlZ2V4cCwga2V5cylcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwYXRoIHJlZ2V4cCBmcm9tIHN0cmluZyBpbnB1dC5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICBwYXRoXG4gKiBAcGFyYW0gIHshQXJyYXl9ICBrZXlzXG4gKiBAcGFyYW0gIHshT2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBzdHJpbmdUb1JlZ2V4cCAocGF0aCwga2V5cywgb3B0aW9ucykge1xuICByZXR1cm4gdG9rZW5zVG9SZWdFeHAocGFyc2UocGF0aCwgb3B0aW9ucyksIGtleXMsIG9wdGlvbnMpXG59XG5cbi8qKlxuICogRXhwb3NlIGEgZnVuY3Rpb24gZm9yIHRha2luZyB0b2tlbnMgYW5kIHJldHVybmluZyBhIFJlZ0V4cC5cbiAqXG4gKiBAcGFyYW0gIHshQXJyYXl9ICAgICAgICAgIHRva2Vuc1xuICogQHBhcmFtICB7KEFycmF5fE9iamVjdCk9fSBrZXlzXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSAgICAgICAgIG9wdGlvbnNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIHRva2Vuc1RvUmVnRXhwICh0b2tlbnMsIGtleXMsIG9wdGlvbnMpIHtcbiAgaWYgKCFpc2FycmF5KGtleXMpKSB7XG4gICAgb3B0aW9ucyA9IC8qKiBAdHlwZSB7IU9iamVjdH0gKi8gKGtleXMgfHwgb3B0aW9ucyk7XG4gICAga2V5cyA9IFtdO1xuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgdmFyIHN0cmljdCA9IG9wdGlvbnMuc3RyaWN0O1xuICB2YXIgZW5kID0gb3B0aW9ucy5lbmQgIT09IGZhbHNlO1xuICB2YXIgcm91dGUgPSAnJztcblxuICAvLyBJdGVyYXRlIG92ZXIgdGhlIHRva2VucyBhbmQgY3JlYXRlIG91ciByZWdleHAgc3RyaW5nLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXTtcblxuICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICByb3V0ZSArPSBlc2NhcGVTdHJpbmcodG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcHJlZml4ID0gZXNjYXBlU3RyaW5nKHRva2VuLnByZWZpeCk7XG4gICAgICB2YXIgY2FwdHVyZSA9ICcoPzonICsgdG9rZW4ucGF0dGVybiArICcpJztcblxuICAgICAga2V5cy5wdXNoKHRva2VuKTtcblxuICAgICAgaWYgKHRva2VuLnJlcGVhdCkge1xuICAgICAgICBjYXB0dXJlICs9ICcoPzonICsgcHJlZml4ICsgY2FwdHVyZSArICcpKic7XG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlbi5vcHRpb25hbCkge1xuICAgICAgICBpZiAoIXRva2VuLnBhcnRpYWwpIHtcbiAgICAgICAgICBjYXB0dXJlID0gJyg/OicgKyBwcmVmaXggKyAnKCcgKyBjYXB0dXJlICsgJykpPyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FwdHVyZSA9IHByZWZpeCArICcoJyArIGNhcHR1cmUgKyAnKT8nO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXB0dXJlID0gcHJlZml4ICsgJygnICsgY2FwdHVyZSArICcpJztcbiAgICAgIH1cblxuICAgICAgcm91dGUgKz0gY2FwdHVyZTtcbiAgICB9XG4gIH1cblxuICB2YXIgZGVsaW1pdGVyID0gZXNjYXBlU3RyaW5nKG9wdGlvbnMuZGVsaW1pdGVyIHx8ICcvJyk7XG4gIHZhciBlbmRzV2l0aERlbGltaXRlciA9IHJvdXRlLnNsaWNlKC1kZWxpbWl0ZXIubGVuZ3RoKSA9PT0gZGVsaW1pdGVyO1xuXG4gIC8vIEluIG5vbi1zdHJpY3QgbW9kZSB3ZSBhbGxvdyBhIHNsYXNoIGF0IHRoZSBlbmQgb2YgbWF0Y2guIElmIHRoZSBwYXRoIHRvXG4gIC8vIG1hdGNoIGFscmVhZHkgZW5kcyB3aXRoIGEgc2xhc2gsIHdlIHJlbW92ZSBpdCBmb3IgY29uc2lzdGVuY3kuIFRoZSBzbGFzaFxuICAvLyBpcyB2YWxpZCBhdCB0aGUgZW5kIG9mIGEgcGF0aCBtYXRjaCwgbm90IGluIHRoZSBtaWRkbGUuIFRoaXMgaXMgaW1wb3J0YW50XG4gIC8vIGluIG5vbi1lbmRpbmcgbW9kZSwgd2hlcmUgXCIvdGVzdC9cIiBzaG91bGRuJ3QgbWF0Y2ggXCIvdGVzdC8vcm91dGVcIi5cbiAgaWYgKCFzdHJpY3QpIHtcbiAgICByb3V0ZSA9IChlbmRzV2l0aERlbGltaXRlciA/IHJvdXRlLnNsaWNlKDAsIC1kZWxpbWl0ZXIubGVuZ3RoKSA6IHJvdXRlKSArICcoPzonICsgZGVsaW1pdGVyICsgJyg/PSQpKT8nO1xuICB9XG5cbiAgaWYgKGVuZCkge1xuICAgIHJvdXRlICs9ICckJztcbiAgfSBlbHNlIHtcbiAgICAvLyBJbiBub24tZW5kaW5nIG1vZGUsIHdlIG5lZWQgdGhlIGNhcHR1cmluZyBncm91cHMgdG8gbWF0Y2ggYXMgbXVjaCBhc1xuICAgIC8vIHBvc3NpYmxlIGJ5IHVzaW5nIGEgcG9zaXRpdmUgbG9va2FoZWFkIHRvIHRoZSBlbmQgb3IgbmV4dCBwYXRoIHNlZ21lbnQuXG4gICAgcm91dGUgKz0gc3RyaWN0ICYmIGVuZHNXaXRoRGVsaW1pdGVyID8gJycgOiAnKD89JyArIGRlbGltaXRlciArICd8JCknO1xuICB9XG5cbiAgcmV0dXJuIGF0dGFjaEtleXMobmV3IFJlZ0V4cCgnXicgKyByb3V0ZSwgZmxhZ3Mob3B0aW9ucykpLCBrZXlzKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgZ2l2ZW4gcGF0aCBzdHJpbmcsIHJldHVybmluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBBbiBlbXB0eSBhcnJheSBjYW4gYmUgcGFzc2VkIGluIGZvciB0aGUga2V5cywgd2hpY2ggd2lsbCBob2xkIHRoZVxuICogcGxhY2Vob2xkZXIga2V5IGRlc2NyaXB0aW9ucy4gRm9yIGV4YW1wbGUsIHVzaW5nIGAvdXNlci86aWRgLCBga2V5c2Agd2lsbFxuICogY29udGFpbiBgW3sgbmFtZTogJ2lkJywgZGVsaW1pdGVyOiAnLycsIG9wdGlvbmFsOiBmYWxzZSwgcmVwZWF0OiBmYWxzZSB9XWAuXG4gKlxuICogQHBhcmFtICB7KHN0cmluZ3xSZWdFeHB8QXJyYXkpfSBwYXRoXG4gKiBAcGFyYW0gIHsoQXJyYXl8T2JqZWN0KT19ICAgICAgIGtleXNcbiAqIEBwYXJhbSAge09iamVjdD19ICAgICAgICAgICAgICAgb3B0aW9uc1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gcGF0aFRvUmVnZXhwIChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gIGlmICghaXNhcnJheShrZXlzKSkge1xuICAgIG9wdGlvbnMgPSAvKiogQHR5cGUgeyFPYmplY3R9ICovIChrZXlzIHx8IG9wdGlvbnMpO1xuICAgIGtleXMgPSBbXTtcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmIChwYXRoIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgcmV0dXJuIHJlZ2V4cFRvUmVnZXhwKHBhdGgsIC8qKiBAdHlwZSB7IUFycmF5fSAqLyAoa2V5cykpXG4gIH1cblxuICBpZiAoaXNhcnJheShwYXRoKSkge1xuICAgIHJldHVybiBhcnJheVRvUmVnZXhwKC8qKiBAdHlwZSB7IUFycmF5fSAqLyAocGF0aCksIC8qKiBAdHlwZSB7IUFycmF5fSAqLyAoa2V5cyksIG9wdGlvbnMpXG4gIH1cblxuICByZXR1cm4gc3RyaW5nVG9SZWdleHAoLyoqIEB0eXBlIHtzdHJpbmd9ICovIChwYXRoKSwgLyoqIEB0eXBlIHshQXJyYXl9ICovIChrZXlzKSwgb3B0aW9ucylcbn1cbnBhdGhUb1JlZ2V4cF8xLnBhcnNlID0gcGFyc2VfMTtcbnBhdGhUb1JlZ2V4cF8xLmNvbXBpbGUgPSBjb21waWxlXzE7XG5wYXRoVG9SZWdleHBfMS50b2tlbnNUb0Z1bmN0aW9uID0gdG9rZW5zVG9GdW5jdGlvbl8xO1xucGF0aFRvUmVnZXhwXzEudG9rZW5zVG9SZWdFeHAgPSB0b2tlbnNUb1JlZ0V4cF8xO1xuXG4vKiAgKi9cblxuLy8gJGZsb3ctZGlzYWJsZS1saW5lXG52YXIgcmVnZXhwQ29tcGlsZUNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuZnVuY3Rpb24gZmlsbFBhcmFtcyAoXG4gIHBhdGgsXG4gIHBhcmFtcyxcbiAgcm91dGVNc2dcbikge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIHRyeSB7XG4gICAgdmFyIGZpbGxlciA9XG4gICAgICByZWdleHBDb21waWxlQ2FjaGVbcGF0aF0gfHxcbiAgICAgIChyZWdleHBDb21waWxlQ2FjaGVbcGF0aF0gPSBwYXRoVG9SZWdleHBfMS5jb21waWxlKHBhdGgpKTtcblxuICAgIC8vIEZpeCAjMjUwNSByZXNvbHZpbmcgYXN0ZXJpc2sgcm91dGVzIHsgbmFtZTogJ25vdC1mb3VuZCcsIHBhcmFtczogeyBwYXRoTWF0Y2g6ICcvbm90LWZvdW5kJyB9fVxuICAgIGlmIChwYXJhbXMucGF0aE1hdGNoKSB7IHBhcmFtc1swXSA9IHBhcmFtcy5wYXRoTWF0Y2g7IH1cblxuICAgIHJldHVybiBmaWxsZXIocGFyYW1zLCB7IHByZXR0eTogdHJ1ZSB9KVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm4oZmFsc2UsIChcIm1pc3NpbmcgcGFyYW0gZm9yIFwiICsgcm91dGVNc2cgKyBcIjogXCIgKyAoZS5tZXNzYWdlKSkpO1xuICAgIH1cbiAgICByZXR1cm4gJydcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBkZWxldGUgdGhlIDAgaWYgaXQgd2FzIGFkZGVkXG4gICAgZGVsZXRlIHBhcmFtc1swXTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gbm9ybWFsaXplTG9jYXRpb24gKFxuICByYXcsXG4gIGN1cnJlbnQsXG4gIGFwcGVuZCxcbiAgcm91dGVyXG4pIHtcbiAgdmFyIG5leHQgPSB0eXBlb2YgcmF3ID09PSAnc3RyaW5nJyA/IHsgcGF0aDogcmF3IH0gOiByYXc7XG4gIC8vIG5hbWVkIHRhcmdldFxuICBpZiAobmV4dC5fbm9ybWFsaXplZCkge1xuICAgIHJldHVybiBuZXh0XG4gIH0gZWxzZSBpZiAobmV4dC5uYW1lKSB7XG4gICAgcmV0dXJuIGV4dGVuZCh7fSwgcmF3KVxuICB9XG5cbiAgLy8gcmVsYXRpdmUgcGFyYW1zXG4gIGlmICghbmV4dC5wYXRoICYmIG5leHQucGFyYW1zICYmIGN1cnJlbnQpIHtcbiAgICBuZXh0ID0gZXh0ZW5kKHt9LCBuZXh0KTtcbiAgICBuZXh0Ll9ub3JtYWxpemVkID0gdHJ1ZTtcbiAgICB2YXIgcGFyYW1zID0gZXh0ZW5kKGV4dGVuZCh7fSwgY3VycmVudC5wYXJhbXMpLCBuZXh0LnBhcmFtcyk7XG4gICAgaWYgKGN1cnJlbnQubmFtZSkge1xuICAgICAgbmV4dC5uYW1lID0gY3VycmVudC5uYW1lO1xuICAgICAgbmV4dC5wYXJhbXMgPSBwYXJhbXM7XG4gICAgfSBlbHNlIGlmIChjdXJyZW50Lm1hdGNoZWQubGVuZ3RoKSB7XG4gICAgICB2YXIgcmF3UGF0aCA9IGN1cnJlbnQubWF0Y2hlZFtjdXJyZW50Lm1hdGNoZWQubGVuZ3RoIC0gMV0ucGF0aDtcbiAgICAgIG5leHQucGF0aCA9IGZpbGxQYXJhbXMocmF3UGF0aCwgcGFyYW1zLCAoXCJwYXRoIFwiICsgKGN1cnJlbnQucGF0aCkpKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm4oZmFsc2UsIFwicmVsYXRpdmUgcGFyYW1zIG5hdmlnYXRpb24gcmVxdWlyZXMgYSBjdXJyZW50IHJvdXRlLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHRcbiAgfVxuXG4gIHZhciBwYXJzZWRQYXRoID0gcGFyc2VQYXRoKG5leHQucGF0aCB8fCAnJyk7XG4gIHZhciBiYXNlUGF0aCA9IChjdXJyZW50ICYmIGN1cnJlbnQucGF0aCkgfHwgJy8nO1xuICB2YXIgcGF0aCA9IHBhcnNlZFBhdGgucGF0aFxuICAgID8gcmVzb2x2ZVBhdGgocGFyc2VkUGF0aC5wYXRoLCBiYXNlUGF0aCwgYXBwZW5kIHx8IG5leHQuYXBwZW5kKVxuICAgIDogYmFzZVBhdGg7XG5cbiAgdmFyIHF1ZXJ5ID0gcmVzb2x2ZVF1ZXJ5KFxuICAgIHBhcnNlZFBhdGgucXVlcnksXG4gICAgbmV4dC5xdWVyeSxcbiAgICByb3V0ZXIgJiYgcm91dGVyLm9wdGlvbnMucGFyc2VRdWVyeVxuICApO1xuXG4gIHZhciBoYXNoID0gbmV4dC5oYXNoIHx8IHBhcnNlZFBhdGguaGFzaDtcbiAgaWYgKGhhc2ggJiYgaGFzaC5jaGFyQXQoMCkgIT09ICcjJykge1xuICAgIGhhc2ggPSBcIiNcIiArIGhhc2g7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIF9ub3JtYWxpemVkOiB0cnVlLFxuICAgIHBhdGg6IHBhdGgsXG4gICAgcXVlcnk6IHF1ZXJ5LFxuICAgIGhhc2g6IGhhc2hcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gd29yayBhcm91bmQgd2VpcmQgZmxvdyBidWdcbnZhciB0b1R5cGVzID0gW1N0cmluZywgT2JqZWN0XTtcbnZhciBldmVudFR5cGVzID0gW1N0cmluZywgQXJyYXldO1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHt9O1xuXG52YXIgTGluayA9IHtcbiAgbmFtZTogJ1JvdXRlckxpbmsnLFxuICBwcm9wczoge1xuICAgIHRvOiB7XG4gICAgICB0eXBlOiB0b1R5cGVzLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9LFxuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2EnXG4gICAgfSxcbiAgICBleGFjdDogQm9vbGVhbixcbiAgICBhcHBlbmQ6IEJvb2xlYW4sXG4gICAgcmVwbGFjZTogQm9vbGVhbixcbiAgICBhY3RpdmVDbGFzczogU3RyaW5nLFxuICAgIGV4YWN0QWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgICBldmVudDoge1xuICAgICAgdHlwZTogZXZlbnRUeXBlcyxcbiAgICAgIGRlZmF1bHQ6ICdjbGljaydcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgcm91dGVyID0gdGhpcy4kcm91dGVyO1xuICAgIHZhciBjdXJyZW50ID0gdGhpcy4kcm91dGU7XG4gICAgdmFyIHJlZiA9IHJvdXRlci5yZXNvbHZlKFxuICAgICAgdGhpcy50byxcbiAgICAgIGN1cnJlbnQsXG4gICAgICB0aGlzLmFwcGVuZFxuICAgICk7XG4gICAgdmFyIGxvY2F0aW9uID0gcmVmLmxvY2F0aW9uO1xuICAgIHZhciByb3V0ZSA9IHJlZi5yb3V0ZTtcbiAgICB2YXIgaHJlZiA9IHJlZi5ocmVmO1xuXG4gICAgdmFyIGNsYXNzZXMgPSB7fTtcbiAgICB2YXIgZ2xvYmFsQWN0aXZlQ2xhc3MgPSByb3V0ZXIub3B0aW9ucy5saW5rQWN0aXZlQ2xhc3M7XG4gICAgdmFyIGdsb2JhbEV4YWN0QWN0aXZlQ2xhc3MgPSByb3V0ZXIub3B0aW9ucy5saW5rRXhhY3RBY3RpdmVDbGFzcztcbiAgICAvLyBTdXBwb3J0IGdsb2JhbCBlbXB0eSBhY3RpdmUgY2xhc3NcbiAgICB2YXIgYWN0aXZlQ2xhc3NGYWxsYmFjayA9XG4gICAgICBnbG9iYWxBY3RpdmVDbGFzcyA9PSBudWxsID8gJ3JvdXRlci1saW5rLWFjdGl2ZScgOiBnbG9iYWxBY3RpdmVDbGFzcztcbiAgICB2YXIgZXhhY3RBY3RpdmVDbGFzc0ZhbGxiYWNrID1cbiAgICAgIGdsb2JhbEV4YWN0QWN0aXZlQ2xhc3MgPT0gbnVsbFxuICAgICAgICA/ICdyb3V0ZXItbGluay1leGFjdC1hY3RpdmUnXG4gICAgICAgIDogZ2xvYmFsRXhhY3RBY3RpdmVDbGFzcztcbiAgICB2YXIgYWN0aXZlQ2xhc3MgPVxuICAgICAgdGhpcy5hY3RpdmVDbGFzcyA9PSBudWxsID8gYWN0aXZlQ2xhc3NGYWxsYmFjayA6IHRoaXMuYWN0aXZlQ2xhc3M7XG4gICAgdmFyIGV4YWN0QWN0aXZlQ2xhc3MgPVxuICAgICAgdGhpcy5leGFjdEFjdGl2ZUNsYXNzID09IG51bGxcbiAgICAgICAgPyBleGFjdEFjdGl2ZUNsYXNzRmFsbGJhY2tcbiAgICAgICAgOiB0aGlzLmV4YWN0QWN0aXZlQ2xhc3M7XG5cbiAgICB2YXIgY29tcGFyZVRhcmdldCA9IHJvdXRlLnJlZGlyZWN0ZWRGcm9tXG4gICAgICA/IGNyZWF0ZVJvdXRlKG51bGwsIG5vcm1hbGl6ZUxvY2F0aW9uKHJvdXRlLnJlZGlyZWN0ZWRGcm9tKSwgbnVsbCwgcm91dGVyKVxuICAgICAgOiByb3V0ZTtcblxuICAgIGNsYXNzZXNbZXhhY3RBY3RpdmVDbGFzc10gPSBpc1NhbWVSb3V0ZShjdXJyZW50LCBjb21wYXJlVGFyZ2V0KTtcbiAgICBjbGFzc2VzW2FjdGl2ZUNsYXNzXSA9IHRoaXMuZXhhY3RcbiAgICAgID8gY2xhc3Nlc1tleGFjdEFjdGl2ZUNsYXNzXVxuICAgICAgOiBpc0luY2x1ZGVkUm91dGUoY3VycmVudCwgY29tcGFyZVRhcmdldCk7XG5cbiAgICB2YXIgaGFuZGxlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZ3VhcmRFdmVudChlKSkge1xuICAgICAgICBpZiAodGhpcyQxLnJlcGxhY2UpIHtcbiAgICAgICAgICByb3V0ZXIucmVwbGFjZShsb2NhdGlvbiwgbm9vcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcm91dGVyLnB1c2gobG9jYXRpb24sIG5vb3ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBvbiA9IHsgY2xpY2s6IGd1YXJkRXZlbnQgfTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV2ZW50KSkge1xuICAgICAgdGhpcy5ldmVudC5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIG9uW2VdID0gaGFuZGxlcjtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvblt0aGlzLmV2ZW50XSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSB7IGNsYXNzOiBjbGFzc2VzIH07XG5cbiAgICB2YXIgc2NvcGVkU2xvdCA9XG4gICAgICAhdGhpcy4kc2NvcGVkU2xvdHMuJGhhc05vcm1hbCAmJlxuICAgICAgdGhpcy4kc2NvcGVkU2xvdHMuZGVmYXVsdCAmJlxuICAgICAgdGhpcy4kc2NvcGVkU2xvdHMuZGVmYXVsdCh7XG4gICAgICAgIGhyZWY6IGhyZWYsXG4gICAgICAgIHJvdXRlOiByb3V0ZSxcbiAgICAgICAgbmF2aWdhdGU6IGhhbmRsZXIsXG4gICAgICAgIGlzQWN0aXZlOiBjbGFzc2VzW2FjdGl2ZUNsYXNzXSxcbiAgICAgICAgaXNFeGFjdEFjdGl2ZTogY2xhc3Nlc1tleGFjdEFjdGl2ZUNsYXNzXVxuICAgICAgfSk7XG5cbiAgICBpZiAoc2NvcGVkU2xvdCkge1xuICAgICAgaWYgKHNjb3BlZFNsb3QubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBzY29wZWRTbG90WzBdXG4gICAgICB9IGVsc2UgaWYgKHNjb3BlZFNsb3QubGVuZ3RoID4gMSB8fCAhc2NvcGVkU2xvdC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAoXCJSb3V0ZXJMaW5rIHdpdGggdG89XFxcIlwiICsgKHRoaXMucHJvcHMudG8pICsgXCJcXFwiIGlzIHRyeWluZyB0byB1c2UgYSBzY29wZWQgc2xvdCBidXQgaXQgZGlkbid0IHByb3ZpZGUgZXhhY3RseSBvbmUgY2hpbGQuXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NvcGVkU2xvdC5sZW5ndGggPT09IDAgPyBoKCkgOiBoKCdzcGFuJywge30sIHNjb3BlZFNsb3QpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFnID09PSAnYScpIHtcbiAgICAgIGRhdGEub24gPSBvbjtcbiAgICAgIGRhdGEuYXR0cnMgPSB7IGhyZWY6IGhyZWYgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmluZCB0aGUgZmlyc3QgPGE+IGNoaWxkIGFuZCBhcHBseSBsaXN0ZW5lciBhbmQgaHJlZlxuICAgICAgdmFyIGEgPSBmaW5kQW5jaG9yKHRoaXMuJHNsb3RzLmRlZmF1bHQpO1xuICAgICAgaWYgKGEpIHtcbiAgICAgICAgLy8gaW4gY2FzZSB0aGUgPGE+IGlzIGEgc3RhdGljIG5vZGVcbiAgICAgICAgYS5pc1N0YXRpYyA9IGZhbHNlO1xuICAgICAgICB2YXIgYURhdGEgPSAoYS5kYXRhID0gZXh0ZW5kKHt9LCBhLmRhdGEpKTtcbiAgICAgICAgYURhdGEub24gPSBhRGF0YS5vbiB8fCB7fTtcbiAgICAgICAgLy8gdHJhbnNmb3JtIGV4aXN0aW5nIGV2ZW50cyBpbiBib3RoIG9iamVjdHMgaW50byBhcnJheXMgc28gd2UgY2FuIHB1c2ggbGF0ZXJcbiAgICAgICAgZm9yICh2YXIgZXZlbnQgaW4gYURhdGEub24pIHtcbiAgICAgICAgICB2YXIgaGFuZGxlciQxID0gYURhdGEub25bZXZlbnRdO1xuICAgICAgICAgIGlmIChldmVudCBpbiBvbikge1xuICAgICAgICAgICAgYURhdGEub25bZXZlbnRdID0gQXJyYXkuaXNBcnJheShoYW5kbGVyJDEpID8gaGFuZGxlciQxIDogW2hhbmRsZXIkMV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGFwcGVuZCBuZXcgbGlzdGVuZXJzIGZvciByb3V0ZXItbGlua1xuICAgICAgICBmb3IgKHZhciBldmVudCQxIGluIG9uKSB7XG4gICAgICAgICAgaWYgKGV2ZW50JDEgaW4gYURhdGEub24pIHtcbiAgICAgICAgICAgIC8vIG9uW2V2ZW50XSBpcyBhbHdheXMgYSBmdW5jdGlvblxuICAgICAgICAgICAgYURhdGEub25bZXZlbnQkMV0ucHVzaChvbltldmVudCQxXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFEYXRhLm9uW2V2ZW50JDFdID0gaGFuZGxlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYUF0dHJzID0gKGEuZGF0YS5hdHRycyA9IGV4dGVuZCh7fSwgYS5kYXRhLmF0dHJzKSk7XG4gICAgICAgIGFBdHRycy5ocmVmID0gaHJlZjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRvZXNuJ3QgaGF2ZSA8YT4gY2hpbGQsIGFwcGx5IGxpc3RlbmVyIHRvIHNlbGZcbiAgICAgICAgZGF0YS5vbiA9IG9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoKHRoaXMudGFnLCBkYXRhLCB0aGlzLiRzbG90cy5kZWZhdWx0KVxuICB9XG59O1xuXG5mdW5jdGlvbiBndWFyZEV2ZW50IChlKSB7XG4gIC8vIGRvbid0IHJlZGlyZWN0IHdpdGggY29udHJvbCBrZXlzXG4gIGlmIChlLm1ldGFLZXkgfHwgZS5hbHRLZXkgfHwgZS5jdHJsS2V5IHx8IGUuc2hpZnRLZXkpIHsgcmV0dXJuIH1cbiAgLy8gZG9uJ3QgcmVkaXJlY3Qgd2hlbiBwcmV2ZW50RGVmYXVsdCBjYWxsZWRcbiAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkgeyByZXR1cm4gfVxuICAvLyBkb24ndCByZWRpcmVjdCBvbiByaWdodCBjbGlja1xuICBpZiAoZS5idXR0b24gIT09IHVuZGVmaW5lZCAmJiBlLmJ1dHRvbiAhPT0gMCkgeyByZXR1cm4gfVxuICAvLyBkb24ndCByZWRpcmVjdCBpZiBgdGFyZ2V0PVwiX2JsYW5rXCJgXG4gIGlmIChlLmN1cnJlbnRUYXJnZXQgJiYgZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSkge1xuICAgIHZhciB0YXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCd0YXJnZXQnKTtcbiAgICBpZiAoL1xcYl9ibGFua1xcYi9pLnRlc3QodGFyZ2V0KSkgeyByZXR1cm4gfVxuICB9XG4gIC8vIHRoaXMgbWF5IGJlIGEgV2VleCBldmVudCB3aGljaCBkb2Vzbid0IGhhdmUgdGhpcyBtZXRob2RcbiAgaWYgKGUucHJldmVudERlZmF1bHQpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZmluZEFuY2hvciAoY2hpbGRyZW4pIHtcbiAgaWYgKGNoaWxkcmVuKSB7XG4gICAgdmFyIGNoaWxkO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICBpZiAoY2hpbGQudGFnID09PSAnYScpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkXG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQuY2hpbGRyZW4gJiYgKGNoaWxkID0gZmluZEFuY2hvcihjaGlsZC5jaGlsZHJlbikpKSB7XG4gICAgICAgIHJldHVybiBjaGlsZFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52YXIgX1Z1ZTtcblxuZnVuY3Rpb24gaW5zdGFsbCAoVnVlKSB7XG4gIGlmIChpbnN0YWxsLmluc3RhbGxlZCAmJiBfVnVlID09PSBWdWUpIHsgcmV0dXJuIH1cbiAgaW5zdGFsbC5pbnN0YWxsZWQgPSB0cnVlO1xuXG4gIF9WdWUgPSBWdWU7XG5cbiAgdmFyIGlzRGVmID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYgIT09IHVuZGVmaW5lZDsgfTtcblxuICB2YXIgcmVnaXN0ZXJJbnN0YW5jZSA9IGZ1bmN0aW9uICh2bSwgY2FsbFZhbCkge1xuICAgIHZhciBpID0gdm0uJG9wdGlvbnMuX3BhcmVudFZub2RlO1xuICAgIGlmIChpc0RlZihpKSAmJiBpc0RlZihpID0gaS5kYXRhKSAmJiBpc0RlZihpID0gaS5yZWdpc3RlclJvdXRlSW5zdGFuY2UpKSB7XG4gICAgICBpKHZtLCBjYWxsVmFsKTtcbiAgICB9XG4gIH07XG5cbiAgVnVlLm1peGluKHtcbiAgICBiZWZvcmVDcmVhdGU6IGZ1bmN0aW9uIGJlZm9yZUNyZWF0ZSAoKSB7XG4gICAgICBpZiAoaXNEZWYodGhpcy4kb3B0aW9ucy5yb3V0ZXIpKSB7XG4gICAgICAgIHRoaXMuX3JvdXRlclJvb3QgPSB0aGlzO1xuICAgICAgICB0aGlzLl9yb3V0ZXIgPSB0aGlzLiRvcHRpb25zLnJvdXRlcjtcbiAgICAgICAgdGhpcy5fcm91dGVyLmluaXQodGhpcyk7XG4gICAgICAgIFZ1ZS51dGlsLmRlZmluZVJlYWN0aXZlKHRoaXMsICdfcm91dGUnLCB0aGlzLl9yb3V0ZXIuaGlzdG9yeS5jdXJyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3JvdXRlclJvb3QgPSAodGhpcy4kcGFyZW50ICYmIHRoaXMuJHBhcmVudC5fcm91dGVyUm9vdCkgfHwgdGhpcztcbiAgICAgIH1cbiAgICAgIHJlZ2lzdGVySW5zdGFuY2UodGhpcywgdGhpcyk7XG4gICAgfSxcbiAgICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCAoKSB7XG4gICAgICByZWdpc3Rlckluc3RhbmNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckcm91dGVyJywge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0ICgpIHsgcmV0dXJuIHRoaXMuX3JvdXRlclJvb3QuX3JvdXRlciB9XG4gIH0pO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJHJvdXRlJywge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0ICgpIHsgcmV0dXJuIHRoaXMuX3JvdXRlclJvb3QuX3JvdXRlIH1cbiAgfSk7XG5cbiAgVnVlLmNvbXBvbmVudCgnUm91dGVyVmlldycsIFZpZXcpO1xuICBWdWUuY29tcG9uZW50KCdSb3V0ZXJMaW5rJywgTGluayk7XG5cbiAgdmFyIHN0cmF0cyA9IFZ1ZS5jb25maWcub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO1xuICAvLyB1c2UgdGhlIHNhbWUgaG9vayBtZXJnaW5nIHN0cmF0ZWd5IGZvciByb3V0ZSBob29rc1xuICBzdHJhdHMuYmVmb3JlUm91dGVFbnRlciA9IHN0cmF0cy5iZWZvcmVSb3V0ZUxlYXZlID0gc3RyYXRzLmJlZm9yZVJvdXRlVXBkYXRlID0gc3RyYXRzLmNyZWF0ZWQ7XG59XG5cbi8qICAqL1xuXG52YXIgaW5Ccm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVSb3V0ZU1hcCAoXG4gIHJvdXRlcyxcbiAgb2xkUGF0aExpc3QsXG4gIG9sZFBhdGhNYXAsXG4gIG9sZE5hbWVNYXBcbikge1xuICAvLyB0aGUgcGF0aCBsaXN0IGlzIHVzZWQgdG8gY29udHJvbCBwYXRoIG1hdGNoaW5nIHByaW9yaXR5XG4gIHZhciBwYXRoTGlzdCA9IG9sZFBhdGhMaXN0IHx8IFtdO1xuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgdmFyIHBhdGhNYXAgPSBvbGRQYXRoTWFwIHx8IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICB2YXIgbmFtZU1hcCA9IG9sZE5hbWVNYXAgfHwgT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICByb3V0ZXMuZm9yRWFjaChmdW5jdGlvbiAocm91dGUpIHtcbiAgICBhZGRSb3V0ZVJlY29yZChwYXRoTGlzdCwgcGF0aE1hcCwgbmFtZU1hcCwgcm91dGUpO1xuICB9KTtcblxuICAvLyBlbnN1cmUgd2lsZGNhcmQgcm91dGVzIGFyZSBhbHdheXMgYXQgdGhlIGVuZFxuICBmb3IgKHZhciBpID0gMCwgbCA9IHBhdGhMaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChwYXRoTGlzdFtpXSA9PT0gJyonKSB7XG4gICAgICBwYXRoTGlzdC5wdXNoKHBhdGhMaXN0LnNwbGljZShpLCAxKVswXSk7XG4gICAgICBsLS07XG4gICAgICBpLS07XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgLy8gd2FybiBpZiByb3V0ZXMgZG8gbm90IGluY2x1ZGUgbGVhZGluZyBzbGFzaGVzXG4gICAgdmFyIGZvdW5kID0gcGF0aExpc3RcbiAgICAvLyBjaGVjayBmb3IgbWlzc2luZyBsZWFkaW5nIHNsYXNoXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChwYXRoKSB7IHJldHVybiBwYXRoICYmIHBhdGguY2hhckF0KDApICE9PSAnKicgJiYgcGF0aC5jaGFyQXQoMCkgIT09ICcvJzsgfSk7XG5cbiAgICBpZiAoZm91bmQubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIHBhdGhOYW1lcyA9IGZvdW5kLm1hcChmdW5jdGlvbiAocGF0aCkgeyByZXR1cm4gKFwiLSBcIiArIHBhdGgpOyB9KS5qb2luKCdcXG4nKTtcbiAgICAgIHdhcm4oZmFsc2UsIChcIk5vbi1uZXN0ZWQgcm91dGVzIG11c3QgaW5jbHVkZSBhIGxlYWRpbmcgc2xhc2ggY2hhcmFjdGVyLiBGaXggdGhlIGZvbGxvd2luZyByb3V0ZXM6IFxcblwiICsgcGF0aE5hbWVzKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoTGlzdDogcGF0aExpc3QsXG4gICAgcGF0aE1hcDogcGF0aE1hcCxcbiAgICBuYW1lTWFwOiBuYW1lTWFwXG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkUm91dGVSZWNvcmQgKFxuICBwYXRoTGlzdCxcbiAgcGF0aE1hcCxcbiAgbmFtZU1hcCxcbiAgcm91dGUsXG4gIHBhcmVudCxcbiAgbWF0Y2hBc1xuKSB7XG4gIHZhciBwYXRoID0gcm91dGUucGF0aDtcbiAgdmFyIG5hbWUgPSByb3V0ZS5uYW1lO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydChwYXRoICE9IG51bGwsIFwiXFxcInBhdGhcXFwiIGlzIHJlcXVpcmVkIGluIGEgcm91dGUgY29uZmlndXJhdGlvbi5cIik7XG4gICAgYXNzZXJ0KFxuICAgICAgdHlwZW9mIHJvdXRlLmNvbXBvbmVudCAhPT0gJ3N0cmluZycsXG4gICAgICBcInJvdXRlIGNvbmZpZyBcXFwiY29tcG9uZW50XFxcIiBmb3IgcGF0aDogXCIgKyAoU3RyaW5nKFxuICAgICAgICBwYXRoIHx8IG5hbWVcbiAgICAgICkpICsgXCIgY2Fubm90IGJlIGEgXCIgKyBcInN0cmluZyBpZC4gVXNlIGFuIGFjdHVhbCBjb21wb25lbnQgaW5zdGVhZC5cIlxuICAgICk7XG4gIH1cblxuICB2YXIgcGF0aFRvUmVnZXhwT3B0aW9ucyA9XG4gICAgcm91dGUucGF0aFRvUmVnZXhwT3B0aW9ucyB8fCB7fTtcbiAgdmFyIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoLCBwYXJlbnQsIHBhdGhUb1JlZ2V4cE9wdGlvbnMuc3RyaWN0KTtcblxuICBpZiAodHlwZW9mIHJvdXRlLmNhc2VTZW5zaXRpdmUgPT09ICdib29sZWFuJykge1xuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnMuc2Vuc2l0aXZlID0gcm91dGUuY2FzZVNlbnNpdGl2ZTtcbiAgfVxuXG4gIHZhciByZWNvcmQgPSB7XG4gICAgcGF0aDogbm9ybWFsaXplZFBhdGgsXG4gICAgcmVnZXg6IGNvbXBpbGVSb3V0ZVJlZ2V4KG5vcm1hbGl6ZWRQYXRoLCBwYXRoVG9SZWdleHBPcHRpb25zKSxcbiAgICBjb21wb25lbnRzOiByb3V0ZS5jb21wb25lbnRzIHx8IHsgZGVmYXVsdDogcm91dGUuY29tcG9uZW50IH0sXG4gICAgaW5zdGFuY2VzOiB7fSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHBhcmVudDogcGFyZW50LFxuICAgIG1hdGNoQXM6IG1hdGNoQXMsXG4gICAgcmVkaXJlY3Q6IHJvdXRlLnJlZGlyZWN0LFxuICAgIGJlZm9yZUVudGVyOiByb3V0ZS5iZWZvcmVFbnRlcixcbiAgICBtZXRhOiByb3V0ZS5tZXRhIHx8IHt9LFxuICAgIHByb3BzOlxuICAgICAgcm91dGUucHJvcHMgPT0gbnVsbFxuICAgICAgICA/IHt9XG4gICAgICAgIDogcm91dGUuY29tcG9uZW50c1xuICAgICAgICAgID8gcm91dGUucHJvcHNcbiAgICAgICAgICA6IHsgZGVmYXVsdDogcm91dGUucHJvcHMgfVxuICB9O1xuXG4gIGlmIChyb3V0ZS5jaGlsZHJlbikge1xuICAgIC8vIFdhcm4gaWYgcm91dGUgaXMgbmFtZWQsIGRvZXMgbm90IHJlZGlyZWN0IGFuZCBoYXMgYSBkZWZhdWx0IGNoaWxkIHJvdXRlLlxuICAgIC8vIElmIHVzZXJzIG5hdmlnYXRlIHRvIHRoaXMgcm91dGUgYnkgbmFtZSwgdGhlIGRlZmF1bHQgY2hpbGQgd2lsbFxuICAgIC8vIG5vdCBiZSByZW5kZXJlZCAoR0ggSXNzdWUgIzYyOSlcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKFxuICAgICAgICByb3V0ZS5uYW1lICYmXG4gICAgICAgICFyb3V0ZS5yZWRpcmVjdCAmJlxuICAgICAgICByb3V0ZS5jaGlsZHJlbi5zb21lKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gL15cXC8/JC8udGVzdChjaGlsZC5wYXRoKTsgfSlcbiAgICAgICkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIFwiTmFtZWQgUm91dGUgJ1wiICsgKHJvdXRlLm5hbWUpICsgXCInIGhhcyBhIGRlZmF1bHQgY2hpbGQgcm91dGUuIFwiICtcbiAgICAgICAgICAgIFwiV2hlbiBuYXZpZ2F0aW5nIHRvIHRoaXMgbmFtZWQgcm91dGUgKDp0bz1cXFwie25hbWU6ICdcIiArIChyb3V0ZS5uYW1lKSArIFwiJ1xcXCIpLCBcIiArXG4gICAgICAgICAgICBcInRoZSBkZWZhdWx0IGNoaWxkIHJvdXRlIHdpbGwgbm90IGJlIHJlbmRlcmVkLiBSZW1vdmUgdGhlIG5hbWUgZnJvbSBcIiArXG4gICAgICAgICAgICBcInRoaXMgcm91dGUgYW5kIHVzZSB0aGUgbmFtZSBvZiB0aGUgZGVmYXVsdCBjaGlsZCByb3V0ZSBmb3IgbmFtZWQgXCIgK1xuICAgICAgICAgICAgXCJsaW5rcyBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJvdXRlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICB2YXIgY2hpbGRNYXRjaEFzID0gbWF0Y2hBc1xuICAgICAgICA/IGNsZWFuUGF0aCgobWF0Y2hBcyArIFwiL1wiICsgKGNoaWxkLnBhdGgpKSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBhZGRSb3V0ZVJlY29yZChwYXRoTGlzdCwgcGF0aE1hcCwgbmFtZU1hcCwgY2hpbGQsIHJlY29yZCwgY2hpbGRNYXRjaEFzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmICghcGF0aE1hcFtyZWNvcmQucGF0aF0pIHtcbiAgICBwYXRoTGlzdC5wdXNoKHJlY29yZC5wYXRoKTtcbiAgICBwYXRoTWFwW3JlY29yZC5wYXRoXSA9IHJlY29yZDtcbiAgfVxuXG4gIGlmIChyb3V0ZS5hbGlhcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGFsaWFzZXMgPSBBcnJheS5pc0FycmF5KHJvdXRlLmFsaWFzKSA/IHJvdXRlLmFsaWFzIDogW3JvdXRlLmFsaWFzXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsaWFzZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBhbGlhcyA9IGFsaWFzZXNbaV07XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhbGlhcyA9PT0gcGF0aCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIChcIkZvdW5kIGFuIGFsaWFzIHdpdGggdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHBhdGg6IFxcXCJcIiArIHBhdGggKyBcIlxcXCIuIFlvdSBoYXZlIHRvIHJlbW92ZSB0aGF0IGFsaWFzLiBJdCB3aWxsIGJlIGlnbm9yZWQgaW4gZGV2ZWxvcG1lbnQuXCIpXG4gICAgICAgICk7XG4gICAgICAgIC8vIHNraXAgaW4gZGV2IHRvIG1ha2UgaXQgd29ya1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB2YXIgYWxpYXNSb3V0ZSA9IHtcbiAgICAgICAgcGF0aDogYWxpYXMsXG4gICAgICAgIGNoaWxkcmVuOiByb3V0ZS5jaGlsZHJlblxuICAgICAgfTtcbiAgICAgIGFkZFJvdXRlUmVjb3JkKFxuICAgICAgICBwYXRoTGlzdCxcbiAgICAgICAgcGF0aE1hcCxcbiAgICAgICAgbmFtZU1hcCxcbiAgICAgICAgYWxpYXNSb3V0ZSxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICByZWNvcmQucGF0aCB8fCAnLycgLy8gbWF0Y2hBc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAobmFtZSkge1xuICAgIGlmICghbmFtZU1hcFtuYW1lXSkge1xuICAgICAgbmFtZU1hcFtuYW1lXSA9IHJlY29yZDtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIW1hdGNoQXMpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBcIkR1cGxpY2F0ZSBuYW1lZCByb3V0ZXMgZGVmaW5pdGlvbjogXCIgK1xuICAgICAgICAgIFwieyBuYW1lOiBcXFwiXCIgKyBuYW1lICsgXCJcXFwiLCBwYXRoOiBcXFwiXCIgKyAocmVjb3JkLnBhdGgpICsgXCJcXFwiIH1cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGlsZVJvdXRlUmVnZXggKFxuICBwYXRoLFxuICBwYXRoVG9SZWdleHBPcHRpb25zXG4pIHtcbiAgdmFyIHJlZ2V4ID0gcGF0aFRvUmVnZXhwXzEocGF0aCwgW10sIHBhdGhUb1JlZ2V4cE9wdGlvbnMpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICByZWdleC5rZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgd2FybihcbiAgICAgICAgIWtleXNba2V5Lm5hbWVdLFxuICAgICAgICAoXCJEdXBsaWNhdGUgcGFyYW0ga2V5cyBpbiByb3V0ZSB3aXRoIHBhdGg6IFxcXCJcIiArIHBhdGggKyBcIlxcXCJcIilcbiAgICAgICk7XG4gICAgICBrZXlzW2tleS5uYW1lXSA9IHRydWU7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJlZ2V4XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGggKFxuICBwYXRoLFxuICBwYXJlbnQsXG4gIHN0cmljdFxuKSB7XG4gIGlmICghc3RyaWN0KSB7IHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcLyQvLCAnJyk7IH1cbiAgaWYgKHBhdGhbMF0gPT09ICcvJykgeyByZXR1cm4gcGF0aCB9XG4gIGlmIChwYXJlbnQgPT0gbnVsbCkgeyByZXR1cm4gcGF0aCB9XG4gIHJldHVybiBjbGVhblBhdGgoKChwYXJlbnQucGF0aCkgKyBcIi9cIiArIHBhdGgpKVxufVxuXG4vKiAgKi9cblxuXG5cbmZ1bmN0aW9uIGNyZWF0ZU1hdGNoZXIgKFxuICByb3V0ZXMsXG4gIHJvdXRlclxuKSB7XG4gIHZhciByZWYgPSBjcmVhdGVSb3V0ZU1hcChyb3V0ZXMpO1xuICB2YXIgcGF0aExpc3QgPSByZWYucGF0aExpc3Q7XG4gIHZhciBwYXRoTWFwID0gcmVmLnBhdGhNYXA7XG4gIHZhciBuYW1lTWFwID0gcmVmLm5hbWVNYXA7XG5cbiAgZnVuY3Rpb24gYWRkUm91dGVzIChyb3V0ZXMpIHtcbiAgICBjcmVhdGVSb3V0ZU1hcChyb3V0ZXMsIHBhdGhMaXN0LCBwYXRoTWFwLCBuYW1lTWFwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1hdGNoIChcbiAgICByYXcsXG4gICAgY3VycmVudFJvdXRlLFxuICAgIHJlZGlyZWN0ZWRGcm9tXG4gICkge1xuICAgIHZhciBsb2NhdGlvbiA9IG5vcm1hbGl6ZUxvY2F0aW9uKHJhdywgY3VycmVudFJvdXRlLCBmYWxzZSwgcm91dGVyKTtcbiAgICB2YXIgbmFtZSA9IGxvY2F0aW9uLm5hbWU7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgdmFyIHJlY29yZCA9IG5hbWVNYXBbbmFtZV07XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuKHJlY29yZCwgKFwiUm91dGUgd2l0aCBuYW1lICdcIiArIG5hbWUgKyBcIicgZG9lcyBub3QgZXhpc3RcIikpO1xuICAgICAgfVxuICAgICAgaWYgKCFyZWNvcmQpIHsgcmV0dXJuIF9jcmVhdGVSb3V0ZShudWxsLCBsb2NhdGlvbikgfVxuICAgICAgdmFyIHBhcmFtTmFtZXMgPSByZWNvcmQucmVnZXgua2V5c1xuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICFrZXkub3B0aW9uYWw7IH0pXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4ga2V5Lm5hbWU7IH0pO1xuXG4gICAgICBpZiAodHlwZW9mIGxvY2F0aW9uLnBhcmFtcyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgbG9jYXRpb24ucGFyYW1zID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50Um91dGUgJiYgdHlwZW9mIGN1cnJlbnRSb3V0ZS5wYXJhbXMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBjdXJyZW50Um91dGUucGFyYW1zKSB7XG4gICAgICAgICAgaWYgKCEoa2V5IGluIGxvY2F0aW9uLnBhcmFtcykgJiYgcGFyYW1OYW1lcy5pbmRleE9mKGtleSkgPiAtMSkge1xuICAgICAgICAgICAgbG9jYXRpb24ucGFyYW1zW2tleV0gPSBjdXJyZW50Um91dGUucGFyYW1zW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxvY2F0aW9uLnBhdGggPSBmaWxsUGFyYW1zKHJlY29yZC5wYXRoLCBsb2NhdGlvbi5wYXJhbXMsIChcIm5hbWVkIHJvdXRlIFxcXCJcIiArIG5hbWUgKyBcIlxcXCJcIikpO1xuICAgICAgcmV0dXJuIF9jcmVhdGVSb3V0ZShyZWNvcmQsIGxvY2F0aW9uLCByZWRpcmVjdGVkRnJvbSlcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLnBhdGgpIHtcbiAgICAgIGxvY2F0aW9uLnBhcmFtcyA9IHt9O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcGF0aCA9IHBhdGhMaXN0W2ldO1xuICAgICAgICB2YXIgcmVjb3JkJDEgPSBwYXRoTWFwW3BhdGhdO1xuICAgICAgICBpZiAobWF0Y2hSb3V0ZShyZWNvcmQkMS5yZWdleCwgbG9jYXRpb24ucGF0aCwgbG9jYXRpb24ucGFyYW1zKSkge1xuICAgICAgICAgIHJldHVybiBfY3JlYXRlUm91dGUocmVjb3JkJDEsIGxvY2F0aW9uLCByZWRpcmVjdGVkRnJvbSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBubyBtYXRjaFxuICAgIHJldHVybiBfY3JlYXRlUm91dGUobnVsbCwgbG9jYXRpb24pXG4gIH1cblxuICBmdW5jdGlvbiByZWRpcmVjdCAoXG4gICAgcmVjb3JkLFxuICAgIGxvY2F0aW9uXG4gICkge1xuICAgIHZhciBvcmlnaW5hbFJlZGlyZWN0ID0gcmVjb3JkLnJlZGlyZWN0O1xuICAgIHZhciByZWRpcmVjdCA9IHR5cGVvZiBvcmlnaW5hbFJlZGlyZWN0ID09PSAnZnVuY3Rpb24nXG4gICAgICA/IG9yaWdpbmFsUmVkaXJlY3QoY3JlYXRlUm91dGUocmVjb3JkLCBsb2NhdGlvbiwgbnVsbCwgcm91dGVyKSlcbiAgICAgIDogb3JpZ2luYWxSZWRpcmVjdDtcblxuICAgIGlmICh0eXBlb2YgcmVkaXJlY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZWRpcmVjdCA9IHsgcGF0aDogcmVkaXJlY3QgfTtcbiAgICB9XG5cbiAgICBpZiAoIXJlZGlyZWN0IHx8IHR5cGVvZiByZWRpcmVjdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgZmFsc2UsIChcImludmFsaWQgcmVkaXJlY3Qgb3B0aW9uOiBcIiArIChKU09OLnN0cmluZ2lmeShyZWRpcmVjdCkpKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9jcmVhdGVSb3V0ZShudWxsLCBsb2NhdGlvbilcbiAgICB9XG5cbiAgICB2YXIgcmUgPSByZWRpcmVjdDtcbiAgICB2YXIgbmFtZSA9IHJlLm5hbWU7XG4gICAgdmFyIHBhdGggPSByZS5wYXRoO1xuICAgIHZhciBxdWVyeSA9IGxvY2F0aW9uLnF1ZXJ5O1xuICAgIHZhciBoYXNoID0gbG9jYXRpb24uaGFzaDtcbiAgICB2YXIgcGFyYW1zID0gbG9jYXRpb24ucGFyYW1zO1xuICAgIHF1ZXJ5ID0gcmUuaGFzT3duUHJvcGVydHkoJ3F1ZXJ5JykgPyByZS5xdWVyeSA6IHF1ZXJ5O1xuICAgIGhhc2ggPSByZS5oYXNPd25Qcm9wZXJ0eSgnaGFzaCcpID8gcmUuaGFzaCA6IGhhc2g7XG4gICAgcGFyYW1zID0gcmUuaGFzT3duUHJvcGVydHkoJ3BhcmFtcycpID8gcmUucGFyYW1zIDogcGFyYW1zO1xuXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIC8vIHJlc29sdmVkIG5hbWVkIGRpcmVjdFxuICAgICAgdmFyIHRhcmdldFJlY29yZCA9IG5hbWVNYXBbbmFtZV07XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBhc3NlcnQodGFyZ2V0UmVjb3JkLCAoXCJyZWRpcmVjdCBmYWlsZWQ6IG5hbWVkIHJvdXRlIFxcXCJcIiArIG5hbWUgKyBcIlxcXCIgbm90IGZvdW5kLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2goe1xuICAgICAgICBfbm9ybWFsaXplZDogdHJ1ZSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgfSwgdW5kZWZpbmVkLCBsb2NhdGlvbilcbiAgICB9IGVsc2UgaWYgKHBhdGgpIHtcbiAgICAgIC8vIDEuIHJlc29sdmUgcmVsYXRpdmUgcmVkaXJlY3RcbiAgICAgIHZhciByYXdQYXRoID0gcmVzb2x2ZVJlY29yZFBhdGgocGF0aCwgcmVjb3JkKTtcbiAgICAgIC8vIDIuIHJlc29sdmUgcGFyYW1zXG4gICAgICB2YXIgcmVzb2x2ZWRQYXRoID0gZmlsbFBhcmFtcyhyYXdQYXRoLCBwYXJhbXMsIChcInJlZGlyZWN0IHJvdXRlIHdpdGggcGF0aCBcXFwiXCIgKyByYXdQYXRoICsgXCJcXFwiXCIpKTtcbiAgICAgIC8vIDMuIHJlbWF0Y2ggd2l0aCBleGlzdGluZyBxdWVyeSBhbmQgaGFzaFxuICAgICAgcmV0dXJuIG1hdGNoKHtcbiAgICAgICAgX25vcm1hbGl6ZWQ6IHRydWUsXG4gICAgICAgIHBhdGg6IHJlc29sdmVkUGF0aCxcbiAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICBoYXNoOiBoYXNoXG4gICAgICB9LCB1bmRlZmluZWQsIGxvY2F0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuKGZhbHNlLCAoXCJpbnZhbGlkIHJlZGlyZWN0IG9wdGlvbjogXCIgKyAoSlNPTi5zdHJpbmdpZnkocmVkaXJlY3QpKSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9jcmVhdGVSb3V0ZShudWxsLCBsb2NhdGlvbilcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBhbGlhcyAoXG4gICAgcmVjb3JkLFxuICAgIGxvY2F0aW9uLFxuICAgIG1hdGNoQXNcbiAgKSB7XG4gICAgdmFyIGFsaWFzZWRQYXRoID0gZmlsbFBhcmFtcyhtYXRjaEFzLCBsb2NhdGlvbi5wYXJhbXMsIChcImFsaWFzZWQgcm91dGUgd2l0aCBwYXRoIFxcXCJcIiArIG1hdGNoQXMgKyBcIlxcXCJcIikpO1xuICAgIHZhciBhbGlhc2VkTWF0Y2ggPSBtYXRjaCh7XG4gICAgICBfbm9ybWFsaXplZDogdHJ1ZSxcbiAgICAgIHBhdGg6IGFsaWFzZWRQYXRoXG4gICAgfSk7XG4gICAgaWYgKGFsaWFzZWRNYXRjaCkge1xuICAgICAgdmFyIG1hdGNoZWQgPSBhbGlhc2VkTWF0Y2gubWF0Y2hlZDtcbiAgICAgIHZhciBhbGlhc2VkUmVjb3JkID0gbWF0Y2hlZFttYXRjaGVkLmxlbmd0aCAtIDFdO1xuICAgICAgbG9jYXRpb24ucGFyYW1zID0gYWxpYXNlZE1hdGNoLnBhcmFtcztcbiAgICAgIHJldHVybiBfY3JlYXRlUm91dGUoYWxpYXNlZFJlY29yZCwgbG9jYXRpb24pXG4gICAgfVxuICAgIHJldHVybiBfY3JlYXRlUm91dGUobnVsbCwgbG9jYXRpb24pXG4gIH1cblxuICBmdW5jdGlvbiBfY3JlYXRlUm91dGUgKFxuICAgIHJlY29yZCxcbiAgICBsb2NhdGlvbixcbiAgICByZWRpcmVjdGVkRnJvbVxuICApIHtcbiAgICBpZiAocmVjb3JkICYmIHJlY29yZC5yZWRpcmVjdCkge1xuICAgICAgcmV0dXJuIHJlZGlyZWN0KHJlY29yZCwgcmVkaXJlY3RlZEZyb20gfHwgbG9jYXRpb24pXG4gICAgfVxuICAgIGlmIChyZWNvcmQgJiYgcmVjb3JkLm1hdGNoQXMpIHtcbiAgICAgIHJldHVybiBhbGlhcyhyZWNvcmQsIGxvY2F0aW9uLCByZWNvcmQubWF0Y2hBcylcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZVJvdXRlKHJlY29yZCwgbG9jYXRpb24sIHJlZGlyZWN0ZWRGcm9tLCByb3V0ZXIpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1hdGNoOiBtYXRjaCxcbiAgICBhZGRSb3V0ZXM6IGFkZFJvdXRlc1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoUm91dGUgKFxuICByZWdleCxcbiAgcGF0aCxcbiAgcGFyYW1zXG4pIHtcbiAgdmFyIG0gPSBwYXRoLm1hdGNoKHJlZ2V4KTtcblxuICBpZiAoIW0pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAxLCBsZW4gPSBtLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgdmFyIGtleSA9IHJlZ2V4LmtleXNbaSAtIDFdO1xuICAgIHZhciB2YWwgPSB0eXBlb2YgbVtpXSA9PT0gJ3N0cmluZycgPyBkZWNvZGVVUklDb21wb25lbnQobVtpXSkgOiBtW2ldO1xuICAgIGlmIChrZXkpIHtcbiAgICAgIC8vIEZpeCAjMTk5NDogdXNpbmcgKiB3aXRoIHByb3BzOiB0cnVlIGdlbmVyYXRlcyBhIHBhcmFtIG5hbWVkIDBcbiAgICAgIHBhcmFtc1trZXkubmFtZSB8fCAncGF0aE1hdGNoJ10gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVJlY29yZFBhdGggKHBhdGgsIHJlY29yZCkge1xuICByZXR1cm4gcmVzb2x2ZVBhdGgocGF0aCwgcmVjb3JkLnBhcmVudCA/IHJlY29yZC5wYXJlbnQucGF0aCA6ICcvJywgdHJ1ZSlcbn1cblxuLyogICovXG5cbi8vIHVzZSBVc2VyIFRpbWluZyBhcGkgKGlmIHByZXNlbnQpIGZvciBtb3JlIGFjY3VyYXRlIGtleSBwcmVjaXNpb25cbnZhciBUaW1lID1cbiAgaW5Ccm93c2VyICYmIHdpbmRvdy5wZXJmb3JtYW5jZSAmJiB3aW5kb3cucGVyZm9ybWFuY2Uubm93XG4gICAgPyB3aW5kb3cucGVyZm9ybWFuY2VcbiAgICA6IERhdGU7XG5cbmZ1bmN0aW9uIGdlblN0YXRlS2V5ICgpIHtcbiAgcmV0dXJuIFRpbWUubm93KCkudG9GaXhlZCgzKVxufVxuXG52YXIgX2tleSA9IGdlblN0YXRlS2V5KCk7XG5cbmZ1bmN0aW9uIGdldFN0YXRlS2V5ICgpIHtcbiAgcmV0dXJuIF9rZXlcbn1cblxuZnVuY3Rpb24gc2V0U3RhdGVLZXkgKGtleSkge1xuICByZXR1cm4gKF9rZXkgPSBrZXkpXG59XG5cbi8qICAqL1xuXG52YXIgcG9zaXRpb25TdG9yZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmZ1bmN0aW9uIHNldHVwU2Nyb2xsICgpIHtcbiAgLy8gRml4IGZvciAjMTU4NSBmb3IgRmlyZWZveFxuICAvLyBGaXggZm9yICMyMTk1IEFkZCBvcHRpb25hbCB0aGlyZCBhdHRyaWJ1dGUgdG8gd29ya2Fyb3VuZCBhIGJ1ZyBpbiBzYWZhcmkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjY3OFxuICAvLyBGaXggZm9yICMyNzc0IFN1cHBvcnQgZm9yIGFwcHMgbG9hZGVkIGZyb20gV2luZG93cyBmaWxlIHNoYXJlcyBub3QgbWFwcGVkIHRvIG5ldHdvcmsgZHJpdmVzOiByZXBsYWNlZCBsb2NhdGlvbi5vcmlnaW4gd2l0aFxuICAvLyB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RcbiAgLy8gbG9jYXRpb24uaG9zdCBjb250YWlucyB0aGUgcG9ydCBhbmQgbG9jYXRpb24uaG9zdG5hbWUgZG9lc24ndFxuICB2YXIgcHJvdG9jb2xBbmRQYXRoID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xuICB2YXIgYWJzb2x1dGVQYXRoID0gd2luZG93LmxvY2F0aW9uLmhyZWYucmVwbGFjZShwcm90b2NvbEFuZFBhdGgsICcnKTtcbiAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHsga2V5OiBnZXRTdGF0ZUtleSgpIH0sICcnLCBhYnNvbHV0ZVBhdGgpO1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBmdW5jdGlvbiAoZSkge1xuICAgIHNhdmVTY3JvbGxQb3NpdGlvbigpO1xuICAgIGlmIChlLnN0YXRlICYmIGUuc3RhdGUua2V5KSB7XG4gICAgICBzZXRTdGF0ZUtleShlLnN0YXRlLmtleSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlU2Nyb2xsIChcbiAgcm91dGVyLFxuICB0byxcbiAgZnJvbSxcbiAgaXNQb3Bcbikge1xuICBpZiAoIXJvdXRlci5hcHApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBiZWhhdmlvciA9IHJvdXRlci5vcHRpb25zLnNjcm9sbEJlaGF2aW9yO1xuICBpZiAoIWJlaGF2aW9yKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydCh0eXBlb2YgYmVoYXZpb3IgPT09ICdmdW5jdGlvbicsIFwic2Nyb2xsQmVoYXZpb3IgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgLy8gd2FpdCB1bnRpbCByZS1yZW5kZXIgZmluaXNoZXMgYmVmb3JlIHNjcm9sbGluZ1xuICByb3V0ZXIuYXBwLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBvc2l0aW9uID0gZ2V0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICB2YXIgc2hvdWxkU2Nyb2xsID0gYmVoYXZpb3IuY2FsbChcbiAgICAgIHJvdXRlcixcbiAgICAgIHRvLFxuICAgICAgZnJvbSxcbiAgICAgIGlzUG9wID8gcG9zaXRpb24gOiBudWxsXG4gICAgKTtcblxuICAgIGlmICghc2hvdWxkU2Nyb2xsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNob3VsZFNjcm9sbC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBzaG91bGRTY3JvbGxcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIHNjcm9sbFRvUG9zaXRpb24oKHNob3VsZFNjcm9sbCksIHBvc2l0aW9uKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCBlcnIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2Nyb2xsVG9Qb3NpdGlvbihzaG91bGRTY3JvbGwsIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzYXZlU2Nyb2xsUG9zaXRpb24gKCkge1xuICB2YXIga2V5ID0gZ2V0U3RhdGVLZXkoKTtcbiAgaWYgKGtleSkge1xuICAgIHBvc2l0aW9uU3RvcmVba2V5XSA9IHtcbiAgICAgIHg6IHdpbmRvdy5wYWdlWE9mZnNldCxcbiAgICAgIHk6IHdpbmRvdy5wYWdlWU9mZnNldFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsUG9zaXRpb24gKCkge1xuICB2YXIga2V5ID0gZ2V0U3RhdGVLZXkoKTtcbiAgaWYgKGtleSkge1xuICAgIHJldHVybiBwb3NpdGlvblN0b3JlW2tleV1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50UG9zaXRpb24gKGVsLCBvZmZzZXQpIHtcbiAgdmFyIGRvY0VsID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB2YXIgZG9jUmVjdCA9IGRvY0VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgZWxSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHJldHVybiB7XG4gICAgeDogZWxSZWN0LmxlZnQgLSBkb2NSZWN0LmxlZnQgLSBvZmZzZXQueCxcbiAgICB5OiBlbFJlY3QudG9wIC0gZG9jUmVjdC50b3AgLSBvZmZzZXQueVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRQb3NpdGlvbiAob2JqKSB7XG4gIHJldHVybiBpc051bWJlcihvYmoueCkgfHwgaXNOdW1iZXIob2JqLnkpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBvc2l0aW9uIChvYmopIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBpc051bWJlcihvYmoueCkgPyBvYmoueCA6IHdpbmRvdy5wYWdlWE9mZnNldCxcbiAgICB5OiBpc051bWJlcihvYmoueSkgPyBvYmoueSA6IHdpbmRvdy5wYWdlWU9mZnNldFxuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU9mZnNldCAob2JqKSB7XG4gIHJldHVybiB7XG4gICAgeDogaXNOdW1iZXIob2JqLngpID8gb2JqLnggOiAwLFxuICAgIHk6IGlzTnVtYmVyKG9iai55KSA/IG9iai55IDogMFxuICB9XG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyICh2KSB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcidcbn1cblxudmFyIGhhc2hTdGFydHNXaXRoTnVtYmVyUkUgPSAvXiNcXGQvO1xuXG5mdW5jdGlvbiBzY3JvbGxUb1Bvc2l0aW9uIChzaG91bGRTY3JvbGwsIHBvc2l0aW9uKSB7XG4gIHZhciBpc09iamVjdCA9IHR5cGVvZiBzaG91bGRTY3JvbGwgPT09ICdvYmplY3QnO1xuICBpZiAoaXNPYmplY3QgJiYgdHlwZW9mIHNob3VsZFNjcm9sbC5zZWxlY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBnZXRFbGVtZW50QnlJZCB3b3VsZCBzdGlsbCBmYWlsIGlmIHRoZSBzZWxlY3RvciBjb250YWlucyBhIG1vcmUgY29tcGxpY2F0ZWQgcXVlcnkgbGlrZSAjbWFpbltkYXRhLWF0dHJdXG4gICAgLy8gYnV0IGF0IHRoZSBzYW1lIHRpbWUsIGl0IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIHNlbGVjdCBhbiBlbGVtZW50IHdpdGggYW4gaWQgYW5kIGFuIGV4dHJhIHNlbGVjdG9yXG4gICAgdmFyIGVsID0gaGFzaFN0YXJ0c1dpdGhOdW1iZXJSRS50ZXN0KHNob3VsZFNjcm9sbC5zZWxlY3RvcikgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgICA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNob3VsZFNjcm9sbC5zZWxlY3Rvci5zbGljZSgxKSkgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgICA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2hvdWxkU2Nyb2xsLnNlbGVjdG9yKTtcblxuICAgIGlmIChlbCkge1xuICAgICAgdmFyIG9mZnNldCA9XG4gICAgICAgIHNob3VsZFNjcm9sbC5vZmZzZXQgJiYgdHlwZW9mIHNob3VsZFNjcm9sbC5vZmZzZXQgPT09ICdvYmplY3QnXG4gICAgICAgICAgPyBzaG91bGRTY3JvbGwub2Zmc2V0XG4gICAgICAgICAgOiB7fTtcbiAgICAgIG9mZnNldCA9IG5vcm1hbGl6ZU9mZnNldChvZmZzZXQpO1xuICAgICAgcG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb24oZWwsIG9mZnNldCk7XG4gICAgfSBlbHNlIGlmIChpc1ZhbGlkUG9zaXRpb24oc2hvdWxkU2Nyb2xsKSkge1xuICAgICAgcG9zaXRpb24gPSBub3JtYWxpemVQb3NpdGlvbihzaG91bGRTY3JvbGwpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCAmJiBpc1ZhbGlkUG9zaXRpb24oc2hvdWxkU2Nyb2xsKSkge1xuICAgIHBvc2l0aW9uID0gbm9ybWFsaXplUG9zaXRpb24oc2hvdWxkU2Nyb2xsKTtcbiAgfVxuXG4gIGlmIChwb3NpdGlvbikge1xuICAgIHdpbmRvdy5zY3JvbGxUbyhwb3NpdGlvbi54LCBwb3NpdGlvbi55KTtcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHN1cHBvcnRzUHVzaFN0YXRlID1cbiAgaW5Ccm93c2VyICYmXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHVhID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgICBpZiAoXG4gICAgICAodWEuaW5kZXhPZignQW5kcm9pZCAyLicpICE9PSAtMSB8fCB1YS5pbmRleE9mKCdBbmRyb2lkIDQuMCcpICE9PSAtMSkgJiZcbiAgICAgIHVhLmluZGV4T2YoJ01vYmlsZSBTYWZhcmknKSAhPT0gLTEgJiZcbiAgICAgIHVhLmluZGV4T2YoJ0Nocm9tZScpID09PSAtMSAmJlxuICAgICAgdWEuaW5kZXhPZignV2luZG93cyBQaG9uZScpID09PSAtMVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHdpbmRvdy5oaXN0b3J5ICYmICdwdXNoU3RhdGUnIGluIHdpbmRvdy5oaXN0b3J5XG4gIH0pKCk7XG5cbmZ1bmN0aW9uIHB1c2hTdGF0ZSAodXJsLCByZXBsYWNlKSB7XG4gIHNhdmVTY3JvbGxQb3NpdGlvbigpO1xuICAvLyB0cnkuLi5jYXRjaCB0aGUgcHVzaFN0YXRlIGNhbGwgdG8gZ2V0IGFyb3VuZCBTYWZhcmlcbiAgLy8gRE9NIEV4Y2VwdGlvbiAxOCB3aGVyZSBpdCBsaW1pdHMgdG8gMTAwIHB1c2hTdGF0ZSBjYWxsc1xuICB2YXIgaGlzdG9yeSA9IHdpbmRvdy5oaXN0b3J5O1xuICB0cnkge1xuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7IGtleTogZ2V0U3RhdGVLZXkoKSB9LCAnJywgdXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGlzdG9yeS5wdXNoU3RhdGUoeyBrZXk6IHNldFN0YXRlS2V5KGdlblN0YXRlS2V5KCkpIH0sICcnLCB1cmwpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHdpbmRvdy5sb2NhdGlvbltyZXBsYWNlID8gJ3JlcGxhY2UnIDogJ2Fzc2lnbiddKHVybCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZVN0YXRlICh1cmwpIHtcbiAgcHVzaFN0YXRlKHVybCwgdHJ1ZSk7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBydW5RdWV1ZSAocXVldWUsIGZuLCBjYikge1xuICB2YXIgc3RlcCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIGlmIChpbmRleCA+PSBxdWV1ZS5sZW5ndGgpIHtcbiAgICAgIGNiKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChxdWV1ZVtpbmRleF0pIHtcbiAgICAgICAgZm4ocXVldWVbaW5kZXhdLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc3RlcChpbmRleCArIDEpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ZXAoaW5kZXggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHN0ZXAoMCk7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiByZXNvbHZlQXN5bmNDb21wb25lbnRzIChtYXRjaGVkKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodG8sIGZyb20sIG5leHQpIHtcbiAgICB2YXIgaGFzQXN5bmMgPSBmYWxzZTtcbiAgICB2YXIgcGVuZGluZyA9IDA7XG4gICAgdmFyIGVycm9yID0gbnVsbDtcblxuICAgIGZsYXRNYXBDb21wb25lbnRzKG1hdGNoZWQsIGZ1bmN0aW9uIChkZWYsIF8sIG1hdGNoLCBrZXkpIHtcbiAgICAgIC8vIGlmIGl0J3MgYSBmdW5jdGlvbiBhbmQgZG9lc24ndCBoYXZlIGNpZCBhdHRhY2hlZCxcbiAgICAgIC8vIGFzc3VtZSBpdCdzIGFuIGFzeW5jIGNvbXBvbmVudCByZXNvbHZlIGZ1bmN0aW9uLlxuICAgICAgLy8gd2UgYXJlIG5vdCB1c2luZyBWdWUncyBkZWZhdWx0IGFzeW5jIHJlc29sdmluZyBtZWNoYW5pc20gYmVjYXVzZVxuICAgICAgLy8gd2Ugd2FudCB0byBoYWx0IHRoZSBuYXZpZ2F0aW9uIHVudGlsIHRoZSBpbmNvbWluZyBjb21wb25lbnQgaGFzIGJlZW5cbiAgICAgIC8vIHJlc29sdmVkLlxuICAgICAgaWYgKHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicgJiYgZGVmLmNpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGhhc0FzeW5jID0gdHJ1ZTtcbiAgICAgICAgcGVuZGluZysrO1xuXG4gICAgICAgIHZhciByZXNvbHZlID0gb25jZShmdW5jdGlvbiAocmVzb2x2ZWREZWYpIHtcbiAgICAgICAgICBpZiAoaXNFU01vZHVsZShyZXNvbHZlZERlZikpIHtcbiAgICAgICAgICAgIHJlc29sdmVkRGVmID0gcmVzb2x2ZWREZWYuZGVmYXVsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gc2F2ZSByZXNvbHZlZCBvbiBhc3luYyBmYWN0b3J5IGluIGNhc2UgaXQncyB1c2VkIGVsc2V3aGVyZVxuICAgICAgICAgIGRlZi5yZXNvbHZlZCA9IHR5cGVvZiByZXNvbHZlZERlZiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyByZXNvbHZlZERlZlxuICAgICAgICAgICAgOiBfVnVlLmV4dGVuZChyZXNvbHZlZERlZik7XG4gICAgICAgICAgbWF0Y2guY29tcG9uZW50c1trZXldID0gcmVzb2x2ZWREZWY7XG4gICAgICAgICAgcGVuZGluZy0tO1xuICAgICAgICAgIGlmIChwZW5kaW5nIDw9IDApIHtcbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHZhciByZWplY3QgPSBvbmNlKGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgICB2YXIgbXNnID0gXCJGYWlsZWQgdG8gcmVzb2x2ZSBhc3luYyBjb21wb25lbnQgXCIgKyBrZXkgKyBcIjogXCIgKyByZWFzb247XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKGZhbHNlLCBtc2cpO1xuICAgICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgICAgIGVycm9yID0gaXNFcnJvcihyZWFzb24pXG4gICAgICAgICAgICAgID8gcmVhc29uXG4gICAgICAgICAgICAgIDogbmV3IEVycm9yKG1zZyk7XG4gICAgICAgICAgICBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHZhciByZXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzID0gZGVmKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVzLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJlcy50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG5ldyBzeW50YXggaW4gVnVlIDIuM1xuICAgICAgICAgICAgdmFyIGNvbXAgPSByZXMuY29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKGNvbXAgJiYgdHlwZW9mIGNvbXAudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICBjb21wLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghaGFzQXN5bmMpIHsgbmV4dCgpOyB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxhdE1hcENvbXBvbmVudHMgKFxuICBtYXRjaGVkLFxuICBmblxuKSB7XG4gIHJldHVybiBmbGF0dGVuKG1hdGNoZWQubWFwKGZ1bmN0aW9uIChtKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG0uY29tcG9uZW50cykubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGZuKFxuICAgICAgbS5jb21wb25lbnRzW2tleV0sXG4gICAgICBtLmluc3RhbmNlc1trZXldLFxuICAgICAgbSwga2V5XG4gICAgKTsgfSlcbiAgfSkpXG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW4gKGFycikge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJyKVxufVxuXG52YXIgaGFzU3ltYm9sID1cbiAgdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcblxuZnVuY3Rpb24gaXNFU01vZHVsZSAob2JqKSB7XG4gIHJldHVybiBvYmouX19lc01vZHVsZSB8fCAoaGFzU3ltYm9sICYmIG9ialtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJylcbn1cblxuLy8gaW4gV2VicGFjayAyLCByZXF1aXJlLmVuc3VyZSBub3cgYWxzbyByZXR1cm5zIGEgUHJvbWlzZVxuLy8gc28gdGhlIHJlc29sdmUvcmVqZWN0IGZ1bmN0aW9ucyBtYXkgZ2V0IGNhbGxlZCBhbiBleHRyYSB0aW1lXG4vLyBpZiB0aGUgdXNlciB1c2VzIGFuIGFycm93IGZ1bmN0aW9uIHNob3J0aGFuZCB0aGF0IGhhcHBlbnMgdG9cbi8vIHJldHVybiB0aGF0IFByb21pc2UuXG5mdW5jdGlvbiBvbmNlIChmbikge1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgaWYgKGNhbGxlZCkgeyByZXR1cm4gfVxuICAgIGNhbGxlZCA9IHRydWU7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3MpXG4gIH1cbn1cblxudmFyIE5hdmlnYXRpb25EdXBsaWNhdGVkID0gLypAX19QVVJFX18qLyhmdW5jdGlvbiAoRXJyb3IpIHtcbiAgZnVuY3Rpb24gTmF2aWdhdGlvbkR1cGxpY2F0ZWQgKG5vcm1hbGl6ZWRMb2NhdGlvbikge1xuICAgIEVycm9yLmNhbGwodGhpcyk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5fbmFtZSA9ICdOYXZpZ2F0aW9uRHVwbGljYXRlZCc7XG4gICAgLy8gcGFzc2luZyB0aGUgbWVzc2FnZSB0byBzdXBlcigpIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIGluIHRoZSB0cmFuc3BpbGVkIHZlcnNpb25cbiAgICB0aGlzLm1lc3NhZ2UgPSBcIk5hdmlnYXRpbmcgdG8gY3VycmVudCBsb2NhdGlvbiAoXFxcIlwiICsgKG5vcm1hbGl6ZWRMb2NhdGlvbi5mdWxsUGF0aCkgKyBcIlxcXCIpIGlzIG5vdCBhbGxvd2VkXCI7XG4gICAgLy8gYWRkIGEgc3RhY2sgcHJvcGVydHkgc28gc2VydmljZXMgbGlrZSBTZW50cnkgY2FuIGNvcnJlY3RseSBkaXNwbGF5IGl0XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzdGFjaycsIHtcbiAgICAgIHZhbHVlOiBuZXcgRXJyb3IoKS5zdGFjayxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgLy8gd2UgY291bGQgYWxzbyBoYXZlIHVzZWRcbiAgICAvLyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKVxuICAgIC8vIGJ1dCBpdCBvbmx5IGV4aXN0cyBvbiBub2RlIGFuZCBjaHJvbWVcbiAgfVxuXG4gIGlmICggRXJyb3IgKSBOYXZpZ2F0aW9uRHVwbGljYXRlZC5fX3Byb3RvX18gPSBFcnJvcjtcbiAgTmF2aWdhdGlvbkR1cGxpY2F0ZWQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggRXJyb3IgJiYgRXJyb3IucHJvdG90eXBlICk7XG4gIE5hdmlnYXRpb25EdXBsaWNhdGVkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE5hdmlnYXRpb25EdXBsaWNhdGVkO1xuXG4gIHJldHVybiBOYXZpZ2F0aW9uRHVwbGljYXRlZDtcbn0oRXJyb3IpKTtcblxuLy8gc3VwcG9ydCBJRTlcbk5hdmlnYXRpb25EdXBsaWNhdGVkLl9uYW1lID0gJ05hdmlnYXRpb25EdXBsaWNhdGVkJztcblxuLyogICovXG5cbnZhciBIaXN0b3J5ID0gZnVuY3Rpb24gSGlzdG9yeSAocm91dGVyLCBiYXNlKSB7XG4gIHRoaXMucm91dGVyID0gcm91dGVyO1xuICB0aGlzLmJhc2UgPSBub3JtYWxpemVCYXNlKGJhc2UpO1xuICAvLyBzdGFydCB3aXRoIGEgcm91dGUgb2JqZWN0IHRoYXQgc3RhbmRzIGZvciBcIm5vd2hlcmVcIlxuICB0aGlzLmN1cnJlbnQgPSBTVEFSVDtcbiAgdGhpcy5wZW5kaW5nID0gbnVsbDtcbiAgdGhpcy5yZWFkeSA9IGZhbHNlO1xuICB0aGlzLnJlYWR5Q2JzID0gW107XG4gIHRoaXMucmVhZHlFcnJvckNicyA9IFtdO1xuICB0aGlzLmVycm9yQ2JzID0gW107XG59O1xuXG5IaXN0b3J5LnByb3RvdHlwZS5saXN0ZW4gPSBmdW5jdGlvbiBsaXN0ZW4gKGNiKSB7XG4gIHRoaXMuY2IgPSBjYjtcbn07XG5cbkhpc3RvcnkucHJvdG90eXBlLm9uUmVhZHkgPSBmdW5jdGlvbiBvblJlYWR5IChjYiwgZXJyb3JDYikge1xuICBpZiAodGhpcy5yZWFkeSkge1xuICAgIGNiKCk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5yZWFkeUNicy5wdXNoKGNiKTtcbiAgICBpZiAoZXJyb3JDYikge1xuICAgICAgdGhpcy5yZWFkeUVycm9yQ2JzLnB1c2goZXJyb3JDYik7XG4gICAgfVxuICB9XG59O1xuXG5IaXN0b3J5LnByb3RvdHlwZS5vbkVycm9yID0gZnVuY3Rpb24gb25FcnJvciAoZXJyb3JDYikge1xuICB0aGlzLmVycm9yQ2JzLnB1c2goZXJyb3JDYik7XG59O1xuXG5IaXN0b3J5LnByb3RvdHlwZS50cmFuc2l0aW9uVG8gPSBmdW5jdGlvbiB0cmFuc2l0aW9uVG8gKFxuICBsb2NhdGlvbixcbiAgb25Db21wbGV0ZSxcbiAgb25BYm9ydFxuKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIHJvdXRlID0gdGhpcy5yb3V0ZXIubWF0Y2gobG9jYXRpb24sIHRoaXMuY3VycmVudCk7XG4gIHRoaXMuY29uZmlybVRyYW5zaXRpb24oXG4gICAgcm91dGUsXG4gICAgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcyQxLnVwZGF0ZVJvdXRlKHJvdXRlKTtcbiAgICAgIG9uQ29tcGxldGUgJiYgb25Db21wbGV0ZShyb3V0ZSk7XG4gICAgICB0aGlzJDEuZW5zdXJlVVJMKCk7XG5cbiAgICAgIC8vIGZpcmUgcmVhZHkgY2JzIG9uY2VcbiAgICAgIGlmICghdGhpcyQxLnJlYWR5KSB7XG4gICAgICAgIHRoaXMkMS5yZWFkeSA9IHRydWU7XG4gICAgICAgIHRoaXMkMS5yZWFkeUNicy5mb3JFYWNoKGZ1bmN0aW9uIChjYikge1xuICAgICAgICAgIGNiKHJvdXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAob25BYm9ydCkge1xuICAgICAgICBvbkFib3J0KGVycik7XG4gICAgICB9XG4gICAgICBpZiAoZXJyICYmICF0aGlzJDEucmVhZHkpIHtcbiAgICAgICAgdGhpcyQxLnJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcyQxLnJlYWR5RXJyb3JDYnMuZm9yRWFjaChmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgICBjYihlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG59O1xuXG5IaXN0b3J5LnByb3RvdHlwZS5jb25maXJtVHJhbnNpdGlvbiA9IGZ1bmN0aW9uIGNvbmZpcm1UcmFuc2l0aW9uIChyb3V0ZSwgb25Db21wbGV0ZSwgb25BYm9ydCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBjdXJyZW50ID0gdGhpcy5jdXJyZW50O1xuICB2YXIgYWJvcnQgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgLy8gYWZ0ZXIgbWVyZ2luZyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLXJvdXRlci9wdWxsLzI3NzEgd2VcbiAgICAvLyBXaGVuIHRoZSB1c2VyIG5hdmlnYXRlcyB0aHJvdWdoIGhpc3RvcnkgdGhyb3VnaCBiYWNrL2ZvcndhcmQgYnV0dG9uc1xuICAgIC8vIHdlIGRvIG5vdCB3YW50IHRvIHRocm93IHRoZSBlcnJvci4gV2Ugb25seSB0aHJvdyBpdCBpZiBkaXJlY3RseSBjYWxsaW5nXG4gICAgLy8gcHVzaC9yZXBsYWNlLiBUaGF0J3Mgd2h5IGl0J3Mgbm90IGluY2x1ZGVkIGluIGlzRXJyb3JcbiAgICBpZiAoIWlzRXh0ZW5kZWRFcnJvcihOYXZpZ2F0aW9uRHVwbGljYXRlZCwgZXJyKSAmJiBpc0Vycm9yKGVycikpIHtcbiAgICAgIGlmICh0aGlzJDEuZXJyb3JDYnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMkMS5lcnJvckNicy5mb3JFYWNoKGZ1bmN0aW9uIChjYikge1xuICAgICAgICAgIGNiKGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybihmYWxzZSwgJ3VuY2F1Z2h0IGVycm9yIGR1cmluZyByb3V0ZSBuYXZpZ2F0aW9uOicpO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9XG4gICAgfVxuICAgIG9uQWJvcnQgJiYgb25BYm9ydChlcnIpO1xuICB9O1xuICBpZiAoXG4gICAgaXNTYW1lUm91dGUocm91dGUsIGN1cnJlbnQpICYmXG4gICAgLy8gaW4gdGhlIGNhc2UgdGhlIHJvdXRlIG1hcCBoYXMgYmVlbiBkeW5hbWljYWxseSBhcHBlbmRlZCB0b1xuICAgIHJvdXRlLm1hdGNoZWQubGVuZ3RoID09PSBjdXJyZW50Lm1hdGNoZWQubGVuZ3RoXG4gICkge1xuICAgIHRoaXMuZW5zdXJlVVJMKCk7XG4gICAgcmV0dXJuIGFib3J0KG5ldyBOYXZpZ2F0aW9uRHVwbGljYXRlZChyb3V0ZSkpXG4gIH1cblxuICB2YXIgcmVmID0gcmVzb2x2ZVF1ZXVlKFxuICAgIHRoaXMuY3VycmVudC5tYXRjaGVkLFxuICAgIHJvdXRlLm1hdGNoZWRcbiAgKTtcbiAgICB2YXIgdXBkYXRlZCA9IHJlZi51cGRhdGVkO1xuICAgIHZhciBkZWFjdGl2YXRlZCA9IHJlZi5kZWFjdGl2YXRlZDtcbiAgICB2YXIgYWN0aXZhdGVkID0gcmVmLmFjdGl2YXRlZDtcblxuICB2YXIgcXVldWUgPSBbXS5jb25jYXQoXG4gICAgLy8gaW4tY29tcG9uZW50IGxlYXZlIGd1YXJkc1xuICAgIGV4dHJhY3RMZWF2ZUd1YXJkcyhkZWFjdGl2YXRlZCksXG4gICAgLy8gZ2xvYmFsIGJlZm9yZSBob29rc1xuICAgIHRoaXMucm91dGVyLmJlZm9yZUhvb2tzLFxuICAgIC8vIGluLWNvbXBvbmVudCB1cGRhdGUgaG9va3NcbiAgICBleHRyYWN0VXBkYXRlSG9va3ModXBkYXRlZCksXG4gICAgLy8gaW4tY29uZmlnIGVudGVyIGd1YXJkc1xuICAgIGFjdGl2YXRlZC5tYXAoZnVuY3Rpb24gKG0pIHsgcmV0dXJuIG0uYmVmb3JlRW50ZXI7IH0pLFxuICAgIC8vIGFzeW5jIGNvbXBvbmVudHNcbiAgICByZXNvbHZlQXN5bmNDb21wb25lbnRzKGFjdGl2YXRlZClcbiAgKTtcblxuICB0aGlzLnBlbmRpbmcgPSByb3V0ZTtcbiAgdmFyIGl0ZXJhdG9yID0gZnVuY3Rpb24gKGhvb2ssIG5leHQpIHtcbiAgICBpZiAodGhpcyQxLnBlbmRpbmcgIT09IHJvdXRlKSB7XG4gICAgICByZXR1cm4gYWJvcnQoKVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgaG9vayhyb3V0ZSwgY3VycmVudCwgZnVuY3Rpb24gKHRvKSB7XG4gICAgICAgIGlmICh0byA9PT0gZmFsc2UgfHwgaXNFcnJvcih0bykpIHtcbiAgICAgICAgICAvLyBuZXh0KGZhbHNlKSAtPiBhYm9ydCBuYXZpZ2F0aW9uLCBlbnN1cmUgY3VycmVudCBVUkxcbiAgICAgICAgICB0aGlzJDEuZW5zdXJlVVJMKHRydWUpO1xuICAgICAgICAgIGFib3J0KHRvKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICB0eXBlb2YgdG8gPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgKHR5cGVvZiB0byA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICh0eXBlb2YgdG8ucGF0aCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHRvLm5hbWUgPT09ICdzdHJpbmcnKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gbmV4dCgnLycpIG9yIG5leHQoeyBwYXRoOiAnLycgfSkgLT4gcmVkaXJlY3RcbiAgICAgICAgICBhYm9ydCgpO1xuICAgICAgICAgIGlmICh0eXBlb2YgdG8gPT09ICdvYmplY3QnICYmIHRvLnJlcGxhY2UpIHtcbiAgICAgICAgICAgIHRoaXMkMS5yZXBsYWNlKHRvKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcyQxLnB1c2godG8pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25maXJtIHRyYW5zaXRpb24gYW5kIHBhc3Mgb24gdGhlIHZhbHVlXG4gICAgICAgICAgbmV4dCh0byk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGFib3J0KGUpO1xuICAgIH1cbiAgfTtcblxuICBydW5RdWV1ZShxdWV1ZSwgaXRlcmF0b3IsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcG9zdEVudGVyQ2JzID0gW107XG4gICAgdmFyIGlzVmFsaWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuY3VycmVudCA9PT0gcm91dGU7IH07XG4gICAgLy8gd2FpdCB1bnRpbCBhc3luYyBjb21wb25lbnRzIGFyZSByZXNvbHZlZCBiZWZvcmVcbiAgICAvLyBleHRyYWN0aW5nIGluLWNvbXBvbmVudCBlbnRlciBndWFyZHNcbiAgICB2YXIgZW50ZXJHdWFyZHMgPSBleHRyYWN0RW50ZXJHdWFyZHMoYWN0aXZhdGVkLCBwb3N0RW50ZXJDYnMsIGlzVmFsaWQpO1xuICAgIHZhciBxdWV1ZSA9IGVudGVyR3VhcmRzLmNvbmNhdCh0aGlzJDEucm91dGVyLnJlc29sdmVIb29rcyk7XG4gICAgcnVuUXVldWUocXVldWUsIGl0ZXJhdG9yLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcyQxLnBlbmRpbmcgIT09IHJvdXRlKSB7XG4gICAgICAgIHJldHVybiBhYm9ydCgpXG4gICAgICB9XG4gICAgICB0aGlzJDEucGVuZGluZyA9IG51bGw7XG4gICAgICBvbkNvbXBsZXRlKHJvdXRlKTtcbiAgICAgIGlmICh0aGlzJDEucm91dGVyLmFwcCkge1xuICAgICAgICB0aGlzJDEucm91dGVyLmFwcC4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBvc3RFbnRlckNicy5mb3JFYWNoKGZ1bmN0aW9uIChjYikge1xuICAgICAgICAgICAgY2IoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuSGlzdG9yeS5wcm90b3R5cGUudXBkYXRlUm91dGUgPSBmdW5jdGlvbiB1cGRhdGVSb3V0ZSAocm91dGUpIHtcbiAgdmFyIHByZXYgPSB0aGlzLmN1cnJlbnQ7XG4gIHRoaXMuY3VycmVudCA9IHJvdXRlO1xuICB0aGlzLmNiICYmIHRoaXMuY2Iocm91dGUpO1xuICB0aGlzLnJvdXRlci5hZnRlckhvb2tzLmZvckVhY2goZnVuY3Rpb24gKGhvb2spIHtcbiAgICBob29rICYmIGhvb2socm91dGUsIHByZXYpO1xuICB9KTtcbn07XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUJhc2UgKGJhc2UpIHtcbiAgaWYgKCFiYXNlKSB7XG4gICAgaWYgKGluQnJvd3Nlcikge1xuICAgICAgLy8gcmVzcGVjdCA8YmFzZT4gdGFnXG4gICAgICB2YXIgYmFzZUVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYmFzZScpO1xuICAgICAgYmFzZSA9IChiYXNlRWwgJiYgYmFzZUVsLmdldEF0dHJpYnV0ZSgnaHJlZicpKSB8fCAnLyc7XG4gICAgICAvLyBzdHJpcCBmdWxsIFVSTCBvcmlnaW5cbiAgICAgIGJhc2UgPSBiYXNlLnJlcGxhY2UoL15odHRwcz86XFwvXFwvW15cXC9dKy8sICcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZSA9ICcvJztcbiAgICB9XG4gIH1cbiAgLy8gbWFrZSBzdXJlIHRoZXJlJ3MgdGhlIHN0YXJ0aW5nIHNsYXNoXG4gIGlmIChiYXNlLmNoYXJBdCgwKSAhPT0gJy8nKSB7XG4gICAgYmFzZSA9ICcvJyArIGJhc2U7XG4gIH1cbiAgLy8gcmVtb3ZlIHRyYWlsaW5nIHNsYXNoXG4gIHJldHVybiBiYXNlLnJlcGxhY2UoL1xcLyQvLCAnJylcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVF1ZXVlIChcbiAgY3VycmVudCxcbiAgbmV4dFxuKSB7XG4gIHZhciBpO1xuICB2YXIgbWF4ID0gTWF0aC5tYXgoY3VycmVudC5sZW5ndGgsIG5leHQubGVuZ3RoKTtcbiAgZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7XG4gICAgaWYgKGN1cnJlbnRbaV0gIT09IG5leHRbaV0pIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgdXBkYXRlZDogbmV4dC5zbGljZSgwLCBpKSxcbiAgICBhY3RpdmF0ZWQ6IG5leHQuc2xpY2UoaSksXG4gICAgZGVhY3RpdmF0ZWQ6IGN1cnJlbnQuc2xpY2UoaSlcbiAgfVxufVxuXG5mdW5jdGlvbiBleHRyYWN0R3VhcmRzIChcbiAgcmVjb3JkcyxcbiAgbmFtZSxcbiAgYmluZCxcbiAgcmV2ZXJzZVxuKSB7XG4gIHZhciBndWFyZHMgPSBmbGF0TWFwQ29tcG9uZW50cyhyZWNvcmRzLCBmdW5jdGlvbiAoZGVmLCBpbnN0YW5jZSwgbWF0Y2gsIGtleSkge1xuICAgIHZhciBndWFyZCA9IGV4dHJhY3RHdWFyZChkZWYsIG5hbWUpO1xuICAgIGlmIChndWFyZCkge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZ3VhcmQpXG4gICAgICAgID8gZ3VhcmQubWFwKGZ1bmN0aW9uIChndWFyZCkgeyByZXR1cm4gYmluZChndWFyZCwgaW5zdGFuY2UsIG1hdGNoLCBrZXkpOyB9KVxuICAgICAgICA6IGJpbmQoZ3VhcmQsIGluc3RhbmNlLCBtYXRjaCwga2V5KVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmbGF0dGVuKHJldmVyc2UgPyBndWFyZHMucmV2ZXJzZSgpIDogZ3VhcmRzKVxufVxuXG5mdW5jdGlvbiBleHRyYWN0R3VhcmQgKFxuICBkZWYsXG4gIGtleVxuKSB7XG4gIGlmICh0eXBlb2YgZGVmICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gZXh0ZW5kIG5vdyBzbyB0aGF0IGdsb2JhbCBtaXhpbnMgYXJlIGFwcGxpZWQuXG4gICAgZGVmID0gX1Z1ZS5leHRlbmQoZGVmKTtcbiAgfVxuICByZXR1cm4gZGVmLm9wdGlvbnNba2V5XVxufVxuXG5mdW5jdGlvbiBleHRyYWN0TGVhdmVHdWFyZHMgKGRlYWN0aXZhdGVkKSB7XG4gIHJldHVybiBleHRyYWN0R3VhcmRzKGRlYWN0aXZhdGVkLCAnYmVmb3JlUm91dGVMZWF2ZScsIGJpbmRHdWFyZCwgdHJ1ZSlcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFVwZGF0ZUhvb2tzICh1cGRhdGVkKSB7XG4gIHJldHVybiBleHRyYWN0R3VhcmRzKHVwZGF0ZWQsICdiZWZvcmVSb3V0ZVVwZGF0ZScsIGJpbmRHdWFyZClcbn1cblxuZnVuY3Rpb24gYmluZEd1YXJkIChndWFyZCwgaW5zdGFuY2UpIHtcbiAgaWYgKGluc3RhbmNlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGJvdW5kUm91dGVHdWFyZCAoKSB7XG4gICAgICByZXR1cm4gZ3VhcmQuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdEVudGVyR3VhcmRzIChcbiAgYWN0aXZhdGVkLFxuICBjYnMsXG4gIGlzVmFsaWRcbikge1xuICByZXR1cm4gZXh0cmFjdEd1YXJkcyhcbiAgICBhY3RpdmF0ZWQsXG4gICAgJ2JlZm9yZVJvdXRlRW50ZXInLFxuICAgIGZ1bmN0aW9uIChndWFyZCwgXywgbWF0Y2gsIGtleSkge1xuICAgICAgcmV0dXJuIGJpbmRFbnRlckd1YXJkKGd1YXJkLCBtYXRjaCwga2V5LCBjYnMsIGlzVmFsaWQpXG4gICAgfVxuICApXG59XG5cbmZ1bmN0aW9uIGJpbmRFbnRlckd1YXJkIChcbiAgZ3VhcmQsXG4gIG1hdGNoLFxuICBrZXksXG4gIGNicyxcbiAgaXNWYWxpZFxuKSB7XG4gIHJldHVybiBmdW5jdGlvbiByb3V0ZUVudGVyR3VhcmQgKHRvLCBmcm9tLCBuZXh0KSB7XG4gICAgcmV0dXJuIGd1YXJkKHRvLCBmcm9tLCBmdW5jdGlvbiAoY2IpIHtcbiAgICAgIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2JzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vICM3NTBcbiAgICAgICAgICAvLyBpZiBhIHJvdXRlci12aWV3IGlzIHdyYXBwZWQgd2l0aCBhbiBvdXQtaW4gdHJhbnNpdGlvbixcbiAgICAgICAgICAvLyB0aGUgaW5zdGFuY2UgbWF5IG5vdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBhdCB0aGlzIHRpbWUuXG4gICAgICAgICAgLy8gd2Ugd2lsbCBuZWVkIHRvIHBvbGwgZm9yIHJlZ2lzdHJhdGlvbiB1bnRpbCBjdXJyZW50IHJvdXRlXG4gICAgICAgICAgLy8gaXMgbm8gbG9uZ2VyIHZhbGlkLlxuICAgICAgICAgIHBvbGwoY2IsIG1hdGNoLmluc3RhbmNlcywga2V5LCBpc1ZhbGlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBuZXh0KGNiKTtcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIHBvbGwgKFxuICBjYiwgLy8gc29tZWhvdyBmbG93IGNhbm5vdCBpbmZlciB0aGlzIGlzIGEgZnVuY3Rpb25cbiAgaW5zdGFuY2VzLFxuICBrZXksXG4gIGlzVmFsaWRcbikge1xuICBpZiAoXG4gICAgaW5zdGFuY2VzW2tleV0gJiZcbiAgICAhaW5zdGFuY2VzW2tleV0uX2lzQmVpbmdEZXN0cm95ZWQgLy8gZG8gbm90IHJldXNlIGJlaW5nIGRlc3Ryb3llZCBpbnN0YW5jZVxuICApIHtcbiAgICBjYihpbnN0YW5jZXNba2V5XSk7XG4gIH0gZWxzZSBpZiAoaXNWYWxpZCgpKSB7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBwb2xsKGNiLCBpbnN0YW5jZXMsIGtleSwgaXNWYWxpZCk7XG4gICAgfSwgMTYpO1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgSFRNTDVIaXN0b3J5ID0gLypAX19QVVJFX18qLyhmdW5jdGlvbiAoSGlzdG9yeSkge1xuICBmdW5jdGlvbiBIVE1MNUhpc3RvcnkgKHJvdXRlciwgYmFzZSkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgSGlzdG9yeS5jYWxsKHRoaXMsIHJvdXRlciwgYmFzZSk7XG5cbiAgICB2YXIgZXhwZWN0U2Nyb2xsID0gcm91dGVyLm9wdGlvbnMuc2Nyb2xsQmVoYXZpb3I7XG4gICAgdmFyIHN1cHBvcnRzU2Nyb2xsID0gc3VwcG9ydHNQdXNoU3RhdGUgJiYgZXhwZWN0U2Nyb2xsO1xuXG4gICAgaWYgKHN1cHBvcnRzU2Nyb2xsKSB7XG4gICAgICBzZXR1cFNjcm9sbCgpO1xuICAgIH1cblxuICAgIHZhciBpbml0TG9jYXRpb24gPSBnZXRMb2NhdGlvbih0aGlzLmJhc2UpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgY3VycmVudCA9IHRoaXMkMS5jdXJyZW50O1xuXG4gICAgICAvLyBBdm9pZGluZyBmaXJzdCBgcG9wc3RhdGVgIGV2ZW50IGRpc3BhdGNoZWQgaW4gc29tZSBicm93c2VycyBidXQgZmlyc3RcbiAgICAgIC8vIGhpc3Rvcnkgcm91dGUgbm90IHVwZGF0ZWQgc2luY2UgYXN5bmMgZ3VhcmQgYXQgdGhlIHNhbWUgdGltZS5cbiAgICAgIHZhciBsb2NhdGlvbiA9IGdldExvY2F0aW9uKHRoaXMkMS5iYXNlKTtcbiAgICAgIGlmICh0aGlzJDEuY3VycmVudCA9PT0gU1RBUlQgJiYgbG9jYXRpb24gPT09IGluaXRMb2NhdGlvbikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGhpcyQxLnRyYW5zaXRpb25Ubyhsb2NhdGlvbiwgZnVuY3Rpb24gKHJvdXRlKSB7XG4gICAgICAgIGlmIChzdXBwb3J0c1Njcm9sbCkge1xuICAgICAgICAgIGhhbmRsZVNjcm9sbChyb3V0ZXIsIHJvdXRlLCBjdXJyZW50LCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIEhpc3RvcnkgKSBIVE1MNUhpc3RvcnkuX19wcm90b19fID0gSGlzdG9yeTtcbiAgSFRNTDVIaXN0b3J5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEhpc3RvcnkgJiYgSGlzdG9yeS5wcm90b3R5cGUgKTtcbiAgSFRNTDVIaXN0b3J5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEhUTUw1SGlzdG9yeTtcblxuICBIVE1MNUhpc3RvcnkucHJvdG90eXBlLmdvID0gZnVuY3Rpb24gZ28gKG4pIHtcbiAgICB3aW5kb3cuaGlzdG9yeS5nbyhuKTtcbiAgfTtcblxuICBIVE1MNUhpc3RvcnkucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiBwdXNoIChsb2NhdGlvbiwgb25Db21wbGV0ZSwgb25BYm9ydCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgdmFyIGZyb21Sb3V0ZSA9IHJlZi5jdXJyZW50O1xuICAgIHRoaXMudHJhbnNpdGlvblRvKGxvY2F0aW9uLCBmdW5jdGlvbiAocm91dGUpIHtcbiAgICAgIHB1c2hTdGF0ZShjbGVhblBhdGgodGhpcyQxLmJhc2UgKyByb3V0ZS5mdWxsUGF0aCkpO1xuICAgICAgaGFuZGxlU2Nyb2xsKHRoaXMkMS5yb3V0ZXIsIHJvdXRlLCBmcm9tUm91dGUsIGZhbHNlKTtcbiAgICAgIG9uQ29tcGxldGUgJiYgb25Db21wbGV0ZShyb3V0ZSk7XG4gICAgfSwgb25BYm9ydCk7XG4gIH07XG5cbiAgSFRNTDVIaXN0b3J5LnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gcmVwbGFjZSAobG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciByZWYgPSB0aGlzO1xuICAgIHZhciBmcm9tUm91dGUgPSByZWYuY3VycmVudDtcbiAgICB0aGlzLnRyYW5zaXRpb25Ubyhsb2NhdGlvbiwgZnVuY3Rpb24gKHJvdXRlKSB7XG4gICAgICByZXBsYWNlU3RhdGUoY2xlYW5QYXRoKHRoaXMkMS5iYXNlICsgcm91dGUuZnVsbFBhdGgpKTtcbiAgICAgIGhhbmRsZVNjcm9sbCh0aGlzJDEucm91dGVyLCByb3V0ZSwgZnJvbVJvdXRlLCBmYWxzZSk7XG4gICAgICBvbkNvbXBsZXRlICYmIG9uQ29tcGxldGUocm91dGUpO1xuICAgIH0sIG9uQWJvcnQpO1xuICB9O1xuXG4gIEhUTUw1SGlzdG9yeS5wcm90b3R5cGUuZW5zdXJlVVJMID0gZnVuY3Rpb24gZW5zdXJlVVJMIChwdXNoKSB7XG4gICAgaWYgKGdldExvY2F0aW9uKHRoaXMuYmFzZSkgIT09IHRoaXMuY3VycmVudC5mdWxsUGF0aCkge1xuICAgICAgdmFyIGN1cnJlbnQgPSBjbGVhblBhdGgodGhpcy5iYXNlICsgdGhpcy5jdXJyZW50LmZ1bGxQYXRoKTtcbiAgICAgIHB1c2ggPyBwdXNoU3RhdGUoY3VycmVudCkgOiByZXBsYWNlU3RhdGUoY3VycmVudCk7XG4gICAgfVxuICB9O1xuXG4gIEhUTUw1SGlzdG9yeS5wcm90b3R5cGUuZ2V0Q3VycmVudExvY2F0aW9uID0gZnVuY3Rpb24gZ2V0Q3VycmVudExvY2F0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0TG9jYXRpb24odGhpcy5iYXNlKVxuICB9O1xuXG4gIHJldHVybiBIVE1MNUhpc3Rvcnk7XG59KEhpc3RvcnkpKTtcblxuZnVuY3Rpb24gZ2V0TG9jYXRpb24gKGJhc2UpIHtcbiAgdmFyIHBhdGggPSBkZWNvZGVVUkkod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgaWYgKGJhc2UgJiYgcGF0aC5pbmRleE9mKGJhc2UpID09PSAwKSB7XG4gICAgcGF0aCA9IHBhdGguc2xpY2UoYmFzZS5sZW5ndGgpO1xuICB9XG4gIHJldHVybiAocGF0aCB8fCAnLycpICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaCArIHdpbmRvdy5sb2NhdGlvbi5oYXNoXG59XG5cbi8qICAqL1xuXG52YXIgSGFzaEhpc3RvcnkgPSAvKkBfX1BVUkVfXyovKGZ1bmN0aW9uIChIaXN0b3J5KSB7XG4gIGZ1bmN0aW9uIEhhc2hIaXN0b3J5IChyb3V0ZXIsIGJhc2UsIGZhbGxiYWNrKSB7XG4gICAgSGlzdG9yeS5jYWxsKHRoaXMsIHJvdXRlciwgYmFzZSk7XG4gICAgLy8gY2hlY2sgaGlzdG9yeSBmYWxsYmFjayBkZWVwbGlua2luZ1xuICAgIGlmIChmYWxsYmFjayAmJiBjaGVja0ZhbGxiYWNrKHRoaXMuYmFzZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlbnN1cmVTbGFzaCgpO1xuICB9XG5cbiAgaWYgKCBIaXN0b3J5ICkgSGFzaEhpc3RvcnkuX19wcm90b19fID0gSGlzdG9yeTtcbiAgSGFzaEhpc3RvcnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggSGlzdG9yeSAmJiBIaXN0b3J5LnByb3RvdHlwZSApO1xuICBIYXNoSGlzdG9yeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBIYXNoSGlzdG9yeTtcblxuICAvLyB0aGlzIGlzIGRlbGF5ZWQgdW50aWwgdGhlIGFwcCBtb3VudHNcbiAgLy8gdG8gYXZvaWQgdGhlIGhhc2hjaGFuZ2UgbGlzdGVuZXIgYmVpbmcgZmlyZWQgdG9vIGVhcmx5XG4gIEhhc2hIaXN0b3J5LnByb3RvdHlwZS5zZXR1cExpc3RlbmVycyA9IGZ1bmN0aW9uIHNldHVwTGlzdGVuZXJzICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciByb3V0ZXIgPSB0aGlzLnJvdXRlcjtcbiAgICB2YXIgZXhwZWN0U2Nyb2xsID0gcm91dGVyLm9wdGlvbnMuc2Nyb2xsQmVoYXZpb3I7XG4gICAgdmFyIHN1cHBvcnRzU2Nyb2xsID0gc3VwcG9ydHNQdXNoU3RhdGUgJiYgZXhwZWN0U2Nyb2xsO1xuXG4gICAgaWYgKHN1cHBvcnRzU2Nyb2xsKSB7XG4gICAgICBzZXR1cFNjcm9sbCgpO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgc3VwcG9ydHNQdXNoU3RhdGUgPyAncG9wc3RhdGUnIDogJ2hhc2hjaGFuZ2UnLFxuICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMkMS5jdXJyZW50O1xuICAgICAgICBpZiAoIWVuc3VyZVNsYXNoKCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB0aGlzJDEudHJhbnNpdGlvblRvKGdldEhhc2goKSwgZnVuY3Rpb24gKHJvdXRlKSB7XG4gICAgICAgICAgaWYgKHN1cHBvcnRzU2Nyb2xsKSB7XG4gICAgICAgICAgICBoYW5kbGVTY3JvbGwodGhpcyQxLnJvdXRlciwgcm91dGUsIGN1cnJlbnQsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXN1cHBvcnRzUHVzaFN0YXRlKSB7XG4gICAgICAgICAgICByZXBsYWNlSGFzaChyb3V0ZS5mdWxsUGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuICB9O1xuXG4gIEhhc2hIaXN0b3J5LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gcHVzaCAobG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciByZWYgPSB0aGlzO1xuICAgIHZhciBmcm9tUm91dGUgPSByZWYuY3VycmVudDtcbiAgICB0aGlzLnRyYW5zaXRpb25UbyhcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgZnVuY3Rpb24gKHJvdXRlKSB7XG4gICAgICAgIHB1c2hIYXNoKHJvdXRlLmZ1bGxQYXRoKTtcbiAgICAgICAgaGFuZGxlU2Nyb2xsKHRoaXMkMS5yb3V0ZXIsIHJvdXRlLCBmcm9tUm91dGUsIGZhbHNlKTtcbiAgICAgICAgb25Db21wbGV0ZSAmJiBvbkNvbXBsZXRlKHJvdXRlKTtcbiAgICAgIH0sXG4gICAgICBvbkFib3J0XG4gICAgKTtcbiAgfTtcblxuICBIYXNoSGlzdG9yeS5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uIHJlcGxhY2UgKGxvY2F0aW9uLCBvbkNvbXBsZXRlLCBvbkFib3J0KSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgcmVmID0gdGhpcztcbiAgICB2YXIgZnJvbVJvdXRlID0gcmVmLmN1cnJlbnQ7XG4gICAgdGhpcy50cmFuc2l0aW9uVG8oXG4gICAgICBsb2NhdGlvbixcbiAgICAgIGZ1bmN0aW9uIChyb3V0ZSkge1xuICAgICAgICByZXBsYWNlSGFzaChyb3V0ZS5mdWxsUGF0aCk7XG4gICAgICAgIGhhbmRsZVNjcm9sbCh0aGlzJDEucm91dGVyLCByb3V0ZSwgZnJvbVJvdXRlLCBmYWxzZSk7XG4gICAgICAgIG9uQ29tcGxldGUgJiYgb25Db21wbGV0ZShyb3V0ZSk7XG4gICAgICB9LFxuICAgICAgb25BYm9ydFxuICAgICk7XG4gIH07XG5cbiAgSGFzaEhpc3RvcnkucHJvdG90eXBlLmdvID0gZnVuY3Rpb24gZ28gKG4pIHtcbiAgICB3aW5kb3cuaGlzdG9yeS5nbyhuKTtcbiAgfTtcblxuICBIYXNoSGlzdG9yeS5wcm90b3R5cGUuZW5zdXJlVVJMID0gZnVuY3Rpb24gZW5zdXJlVVJMIChwdXNoKSB7XG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQuZnVsbFBhdGg7XG4gICAgaWYgKGdldEhhc2goKSAhPT0gY3VycmVudCkge1xuICAgICAgcHVzaCA/IHB1c2hIYXNoKGN1cnJlbnQpIDogcmVwbGFjZUhhc2goY3VycmVudCk7XG4gICAgfVxuICB9O1xuXG4gIEhhc2hIaXN0b3J5LnByb3RvdHlwZS5nZXRDdXJyZW50TG9jYXRpb24gPSBmdW5jdGlvbiBnZXRDdXJyZW50TG9jYXRpb24gKCkge1xuICAgIHJldHVybiBnZXRIYXNoKClcbiAgfTtcblxuICByZXR1cm4gSGFzaEhpc3Rvcnk7XG59KEhpc3RvcnkpKTtcblxuZnVuY3Rpb24gY2hlY2tGYWxsYmFjayAoYmFzZSkge1xuICB2YXIgbG9jYXRpb24gPSBnZXRMb2NhdGlvbihiYXNlKTtcbiAgaWYgKCEvXlxcLyMvLnRlc3QobG9jYXRpb24pKSB7XG4gICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoY2xlYW5QYXRoKGJhc2UgKyAnLyMnICsgbG9jYXRpb24pKTtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmZ1bmN0aW9uIGVuc3VyZVNsYXNoICgpIHtcbiAgdmFyIHBhdGggPSBnZXRIYXNoKCk7XG4gIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXBsYWNlSGFzaCgnLycgKyBwYXRoKTtcbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGdldEhhc2ggKCkge1xuICAvLyBXZSBjYW4ndCB1c2Ugd2luZG93LmxvY2F0aW9uLmhhc2ggaGVyZSBiZWNhdXNlIGl0J3Mgbm90XG4gIC8vIGNvbnNpc3RlbnQgYWNyb3NzIGJyb3dzZXJzIC0gRmlyZWZveCB3aWxsIHByZS1kZWNvZGUgaXQhXG4gIHZhciBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gIHZhciBpbmRleCA9IGhyZWYuaW5kZXhPZignIycpO1xuICAvLyBlbXB0eSBwYXRoXG4gIGlmIChpbmRleCA8IDApIHsgcmV0dXJuICcnIH1cblxuICBocmVmID0gaHJlZi5zbGljZShpbmRleCArIDEpO1xuICAvLyBkZWNvZGUgdGhlIGhhc2ggYnV0IG5vdCB0aGUgc2VhcmNoIG9yIGhhc2hcbiAgLy8gYXMgc2VhcmNoKHF1ZXJ5KSBpcyBhbHJlYWR5IGRlY29kZWRcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS1yb3V0ZXIvaXNzdWVzLzI3MDhcbiAgdmFyIHNlYXJjaEluZGV4ID0gaHJlZi5pbmRleE9mKCc/Jyk7XG4gIGlmIChzZWFyY2hJbmRleCA8IDApIHtcbiAgICB2YXIgaGFzaEluZGV4ID0gaHJlZi5pbmRleE9mKCcjJyk7XG4gICAgaWYgKGhhc2hJbmRleCA+IC0xKSB7XG4gICAgICBocmVmID0gZGVjb2RlVVJJKGhyZWYuc2xpY2UoMCwgaGFzaEluZGV4KSkgKyBocmVmLnNsaWNlKGhhc2hJbmRleCk7XG4gICAgfSBlbHNlIHsgaHJlZiA9IGRlY29kZVVSSShocmVmKTsgfVxuICB9IGVsc2Uge1xuICAgIGlmIChzZWFyY2hJbmRleCA+IC0xKSB7XG4gICAgICBocmVmID0gZGVjb2RlVVJJKGhyZWYuc2xpY2UoMCwgc2VhcmNoSW5kZXgpKSArIGhyZWYuc2xpY2Uoc2VhcmNoSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBocmVmXG59XG5cbmZ1bmN0aW9uIGdldFVybCAocGF0aCkge1xuICB2YXIgaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICB2YXIgaSA9IGhyZWYuaW5kZXhPZignIycpO1xuICB2YXIgYmFzZSA9IGkgPj0gMCA/IGhyZWYuc2xpY2UoMCwgaSkgOiBocmVmO1xuICByZXR1cm4gKGJhc2UgKyBcIiNcIiArIHBhdGgpXG59XG5cbmZ1bmN0aW9uIHB1c2hIYXNoIChwYXRoKSB7XG4gIGlmIChzdXBwb3J0c1B1c2hTdGF0ZSkge1xuICAgIHB1c2hTdGF0ZShnZXRVcmwocGF0aCkpO1xuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gcGF0aDtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlSGFzaCAocGF0aCkge1xuICBpZiAoc3VwcG9ydHNQdXNoU3RhdGUpIHtcbiAgICByZXBsYWNlU3RhdGUoZ2V0VXJsKHBhdGgpKTtcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZShnZXRVcmwocGF0aCkpO1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgQWJzdHJhY3RIaXN0b3J5ID0gLypAX19QVVJFX18qLyhmdW5jdGlvbiAoSGlzdG9yeSkge1xuICBmdW5jdGlvbiBBYnN0cmFjdEhpc3RvcnkgKHJvdXRlciwgYmFzZSkge1xuICAgIEhpc3RvcnkuY2FsbCh0aGlzLCByb3V0ZXIsIGJhc2UpO1xuICAgIHRoaXMuc3RhY2sgPSBbXTtcbiAgICB0aGlzLmluZGV4ID0gLTE7XG4gIH1cblxuICBpZiAoIEhpc3RvcnkgKSBBYnN0cmFjdEhpc3RvcnkuX19wcm90b19fID0gSGlzdG9yeTtcbiAgQWJzdHJhY3RIaXN0b3J5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEhpc3RvcnkgJiYgSGlzdG9yeS5wcm90b3R5cGUgKTtcbiAgQWJzdHJhY3RIaXN0b3J5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEFic3RyYWN0SGlzdG9yeTtcblxuICBBYnN0cmFjdEhpc3RvcnkucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiBwdXNoIChsb2NhdGlvbiwgb25Db21wbGV0ZSwgb25BYm9ydCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdGhpcy50cmFuc2l0aW9uVG8oXG4gICAgICBsb2NhdGlvbixcbiAgICAgIGZ1bmN0aW9uIChyb3V0ZSkge1xuICAgICAgICB0aGlzJDEuc3RhY2sgPSB0aGlzJDEuc3RhY2suc2xpY2UoMCwgdGhpcyQxLmluZGV4ICsgMSkuY29uY2F0KHJvdXRlKTtcbiAgICAgICAgdGhpcyQxLmluZGV4Kys7XG4gICAgICAgIG9uQ29tcGxldGUgJiYgb25Db21wbGV0ZShyb3V0ZSk7XG4gICAgICB9LFxuICAgICAgb25BYm9ydFxuICAgICk7XG4gIH07XG5cbiAgQWJzdHJhY3RIaXN0b3J5LnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gcmVwbGFjZSAobG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHRoaXMudHJhbnNpdGlvblRvKFxuICAgICAgbG9jYXRpb24sXG4gICAgICBmdW5jdGlvbiAocm91dGUpIHtcbiAgICAgICAgdGhpcyQxLnN0YWNrID0gdGhpcyQxLnN0YWNrLnNsaWNlKDAsIHRoaXMkMS5pbmRleCkuY29uY2F0KHJvdXRlKTtcbiAgICAgICAgb25Db21wbGV0ZSAmJiBvbkNvbXBsZXRlKHJvdXRlKTtcbiAgICAgIH0sXG4gICAgICBvbkFib3J0XG4gICAgKTtcbiAgfTtcblxuICBBYnN0cmFjdEhpc3RvcnkucHJvdG90eXBlLmdvID0gZnVuY3Rpb24gZ28gKG4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB0YXJnZXRJbmRleCA9IHRoaXMuaW5kZXggKyBuO1xuICAgIGlmICh0YXJnZXRJbmRleCA8IDAgfHwgdGFyZ2V0SW5kZXggPj0gdGhpcy5zdGFjay5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB2YXIgcm91dGUgPSB0aGlzLnN0YWNrW3RhcmdldEluZGV4XTtcbiAgICB0aGlzLmNvbmZpcm1UcmFuc2l0aW9uKFxuICAgICAgcm91dGUsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMkMS5pbmRleCA9IHRhcmdldEluZGV4O1xuICAgICAgICB0aGlzJDEudXBkYXRlUm91dGUocm91dGUpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgaWYgKGlzRXh0ZW5kZWRFcnJvcihOYXZpZ2F0aW9uRHVwbGljYXRlZCwgZXJyKSkge1xuICAgICAgICAgIHRoaXMkMS5pbmRleCA9IHRhcmdldEluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfTtcblxuICBBYnN0cmFjdEhpc3RvcnkucHJvdG90eXBlLmdldEN1cnJlbnRMb2NhdGlvbiA9IGZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhdGlvbiAoKSB7XG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV07XG4gICAgcmV0dXJuIGN1cnJlbnQgPyBjdXJyZW50LmZ1bGxQYXRoIDogJy8nXG4gIH07XG5cbiAgQWJzdHJhY3RIaXN0b3J5LnByb3RvdHlwZS5lbnN1cmVVUkwgPSBmdW5jdGlvbiBlbnN1cmVVUkwgKCkge1xuICAgIC8vIG5vb3BcbiAgfTtcblxuICByZXR1cm4gQWJzdHJhY3RIaXN0b3J5O1xufShIaXN0b3J5KSk7XG5cbi8qICAqL1xuXG5cblxudmFyIFZ1ZVJvdXRlciA9IGZ1bmN0aW9uIFZ1ZVJvdXRlciAob3B0aW9ucykge1xuICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICB0aGlzLmFwcCA9IG51bGw7XG4gIHRoaXMuYXBwcyA9IFtdO1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB0aGlzLmJlZm9yZUhvb2tzID0gW107XG4gIHRoaXMucmVzb2x2ZUhvb2tzID0gW107XG4gIHRoaXMuYWZ0ZXJIb29rcyA9IFtdO1xuICB0aGlzLm1hdGNoZXIgPSBjcmVhdGVNYXRjaGVyKG9wdGlvbnMucm91dGVzIHx8IFtdLCB0aGlzKTtcblxuICB2YXIgbW9kZSA9IG9wdGlvbnMubW9kZSB8fCAnaGFzaCc7XG4gIHRoaXMuZmFsbGJhY2sgPSBtb2RlID09PSAnaGlzdG9yeScgJiYgIXN1cHBvcnRzUHVzaFN0YXRlICYmIG9wdGlvbnMuZmFsbGJhY2sgIT09IGZhbHNlO1xuICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgIG1vZGUgPSAnaGFzaCc7XG4gIH1cbiAgaWYgKCFpbkJyb3dzZXIpIHtcbiAgICBtb2RlID0gJ2Fic3RyYWN0JztcbiAgfVxuICB0aGlzLm1vZGUgPSBtb2RlO1xuXG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ2hpc3RvcnknOlxuICAgICAgdGhpcy5oaXN0b3J5ID0gbmV3IEhUTUw1SGlzdG9yeSh0aGlzLCBvcHRpb25zLmJhc2UpO1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdoYXNoJzpcbiAgICAgIHRoaXMuaGlzdG9yeSA9IG5ldyBIYXNoSGlzdG9yeSh0aGlzLCBvcHRpb25zLmJhc2UsIHRoaXMuZmFsbGJhY2spO1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdhYnN0cmFjdCc6XG4gICAgICB0aGlzLmhpc3RvcnkgPSBuZXcgQWJzdHJhY3RIaXN0b3J5KHRoaXMsIG9wdGlvbnMuYmFzZSk7XG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBhc3NlcnQoZmFsc2UsIChcImludmFsaWQgbW9kZTogXCIgKyBtb2RlKSk7XG4gICAgICB9XG4gIH1cbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IGN1cnJlbnRSb3V0ZTogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gbWF0Y2ggKFxuICByYXcsXG4gIGN1cnJlbnQsXG4gIHJlZGlyZWN0ZWRGcm9tXG4pIHtcbiAgcmV0dXJuIHRoaXMubWF0Y2hlci5tYXRjaChyYXcsIGN1cnJlbnQsIHJlZGlyZWN0ZWRGcm9tKVxufTtcblxucHJvdG90eXBlQWNjZXNzb3JzLmN1cnJlbnRSb3V0ZS5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmhpc3RvcnkgJiYgdGhpcy5oaXN0b3J5LmN1cnJlbnRcbn07XG5cblZ1ZVJvdXRlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIGluaXQgKGFwcCAvKiBWdWUgY29tcG9uZW50IGluc3RhbmNlICovKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhc3NlcnQoXG4gICAgaW5zdGFsbC5pbnN0YWxsZWQsXG4gICAgXCJub3QgaW5zdGFsbGVkLiBNYWtlIHN1cmUgdG8gY2FsbCBgVnVlLnVzZShWdWVSb3V0ZXIpYCBcIiArXG4gICAgXCJiZWZvcmUgY3JlYXRpbmcgcm9vdCBpbnN0YW5jZS5cIlxuICApO1xuXG4gIHRoaXMuYXBwcy5wdXNoKGFwcCk7XG5cbiAgLy8gc2V0IHVwIGFwcCBkZXN0cm95ZWQgaGFuZGxlclxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLXJvdXRlci9pc3N1ZXMvMjYzOVxuICBhcHAuJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIGNsZWFuIG91dCBhcHAgZnJvbSB0aGlzLmFwcHMgYXJyYXkgb25jZSBkZXN0cm95ZWRcbiAgICB2YXIgaW5kZXggPSB0aGlzJDEuYXBwcy5pbmRleE9mKGFwcCk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHsgdGhpcyQxLmFwcHMuc3BsaWNlKGluZGV4LCAxKTsgfVxuICAgIC8vIGVuc3VyZSB3ZSBzdGlsbCBoYXZlIGEgbWFpbiBhcHAgb3IgbnVsbCBpZiBubyBhcHBzXG4gICAgLy8gd2UgZG8gbm90IHJlbGVhc2UgdGhlIHJvdXRlciBzbyBpdCBjYW4gYmUgcmV1c2VkXG4gICAgaWYgKHRoaXMkMS5hcHAgPT09IGFwcCkgeyB0aGlzJDEuYXBwID0gdGhpcyQxLmFwcHNbMF0gfHwgbnVsbDsgfVxuICB9KTtcblxuICAvLyBtYWluIGFwcCBwcmV2aW91c2x5IGluaXRpYWxpemVkXG4gIC8vIHJldHVybiBhcyB3ZSBkb24ndCBuZWVkIHRvIHNldCB1cCBuZXcgaGlzdG9yeSBsaXN0ZW5lclxuICBpZiAodGhpcy5hcHApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHRoaXMuYXBwID0gYXBwO1xuXG4gIHZhciBoaXN0b3J5ID0gdGhpcy5oaXN0b3J5O1xuXG4gIGlmIChoaXN0b3J5IGluc3RhbmNlb2YgSFRNTDVIaXN0b3J5KSB7XG4gICAgaGlzdG9yeS50cmFuc2l0aW9uVG8oaGlzdG9yeS5nZXRDdXJyZW50TG9jYXRpb24oKSk7XG4gIH0gZWxzZSBpZiAoaGlzdG9yeSBpbnN0YW5jZW9mIEhhc2hIaXN0b3J5KSB7XG4gICAgdmFyIHNldHVwSGFzaExpc3RlbmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgaGlzdG9yeS5zZXR1cExpc3RlbmVycygpO1xuICAgIH07XG4gICAgaGlzdG9yeS50cmFuc2l0aW9uVG8oXG4gICAgICBoaXN0b3J5LmdldEN1cnJlbnRMb2NhdGlvbigpLFxuICAgICAgc2V0dXBIYXNoTGlzdGVuZXIsXG4gICAgICBzZXR1cEhhc2hMaXN0ZW5lclxuICAgICk7XG4gIH1cblxuICBoaXN0b3J5Lmxpc3RlbihmdW5jdGlvbiAocm91dGUpIHtcbiAgICB0aGlzJDEuYXBwcy5mb3JFYWNoKGZ1bmN0aW9uIChhcHApIHtcbiAgICAgIGFwcC5fcm91dGUgPSByb3V0ZTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLmJlZm9yZUVhY2ggPSBmdW5jdGlvbiBiZWZvcmVFYWNoIChmbikge1xuICByZXR1cm4gcmVnaXN0ZXJIb29rKHRoaXMuYmVmb3JlSG9va3MsIGZuKVxufTtcblxuVnVlUm91dGVyLnByb3RvdHlwZS5iZWZvcmVSZXNvbHZlID0gZnVuY3Rpb24gYmVmb3JlUmVzb2x2ZSAoZm4pIHtcbiAgcmV0dXJuIHJlZ2lzdGVySG9vayh0aGlzLnJlc29sdmVIb29rcywgZm4pXG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLmFmdGVyRWFjaCA9IGZ1bmN0aW9uIGFmdGVyRWFjaCAoZm4pIHtcbiAgcmV0dXJuIHJlZ2lzdGVySG9vayh0aGlzLmFmdGVySG9va3MsIGZuKVxufTtcblxuVnVlUm91dGVyLnByb3RvdHlwZS5vblJlYWR5ID0gZnVuY3Rpb24gb25SZWFkeSAoY2IsIGVycm9yQ2IpIHtcbiAgdGhpcy5oaXN0b3J5Lm9uUmVhZHkoY2IsIGVycm9yQ2IpO1xufTtcblxuVnVlUm91dGVyLnByb3RvdHlwZS5vbkVycm9yID0gZnVuY3Rpb24gb25FcnJvciAoZXJyb3JDYikge1xuICB0aGlzLmhpc3Rvcnkub25FcnJvcihlcnJvckNiKTtcbn07XG5cblZ1ZVJvdXRlci5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIHB1c2ggKGxvY2F0aW9uLCBvbkNvbXBsZXRlLCBvbkFib3J0KSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gIGlmICghb25Db21wbGV0ZSAmJiAhb25BYm9ydCAmJiB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdGhpcyQxLmhpc3RvcnkucHVzaChsb2NhdGlvbiwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRoaXMuaGlzdG9yeS5wdXNoKGxvY2F0aW9uLCBvbkNvbXBsZXRlLCBvbkFib3J0KTtcbiAgfVxufTtcblxuVnVlUm91dGVyLnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gcmVwbGFjZSAobG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgaWYgKCFvbkNvbXBsZXRlICYmICFvbkFib3J0ICYmIHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB0aGlzJDEuaGlzdG9yeS5yZXBsYWNlKGxvY2F0aW9uLCByZXNvbHZlLCByZWplY3QpO1xuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5oaXN0b3J5LnJlcGxhY2UobG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpO1xuICB9XG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLmdvID0gZnVuY3Rpb24gZ28gKG4pIHtcbiAgdGhpcy5oaXN0b3J5LmdvKG4pO1xufTtcblxuVnVlUm91dGVyLnByb3RvdHlwZS5iYWNrID0gZnVuY3Rpb24gYmFjayAoKSB7XG4gIHRoaXMuZ28oLTEpO1xufTtcblxuVnVlUm91dGVyLnByb3RvdHlwZS5mb3J3YXJkID0gZnVuY3Rpb24gZm9yd2FyZCAoKSB7XG4gIHRoaXMuZ28oMSk7XG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLmdldE1hdGNoZWRDb21wb25lbnRzID0gZnVuY3Rpb24gZ2V0TWF0Y2hlZENvbXBvbmVudHMgKHRvKSB7XG4gIHZhciByb3V0ZSA9IHRvXG4gICAgPyB0by5tYXRjaGVkXG4gICAgICA/IHRvXG4gICAgICA6IHRoaXMucmVzb2x2ZSh0bykucm91dGVcbiAgICA6IHRoaXMuY3VycmVudFJvdXRlO1xuICBpZiAoIXJvdXRlKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgcm91dGUubWF0Y2hlZC5tYXAoZnVuY3Rpb24gKG0pIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobS5jb21wb25lbnRzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIG0uY29tcG9uZW50c1trZXldXG4gICAgfSlcbiAgfSkpXG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlIChcbiAgdG8sXG4gIGN1cnJlbnQsXG4gIGFwcGVuZFxuKSB7XG4gIGN1cnJlbnQgPSBjdXJyZW50IHx8IHRoaXMuaGlzdG9yeS5jdXJyZW50O1xuICB2YXIgbG9jYXRpb24gPSBub3JtYWxpemVMb2NhdGlvbihcbiAgICB0byxcbiAgICBjdXJyZW50LFxuICAgIGFwcGVuZCxcbiAgICB0aGlzXG4gICk7XG4gIHZhciByb3V0ZSA9IHRoaXMubWF0Y2gobG9jYXRpb24sIGN1cnJlbnQpO1xuICB2YXIgZnVsbFBhdGggPSByb3V0ZS5yZWRpcmVjdGVkRnJvbSB8fCByb3V0ZS5mdWxsUGF0aDtcbiAgdmFyIGJhc2UgPSB0aGlzLmhpc3RvcnkuYmFzZTtcbiAgdmFyIGhyZWYgPSBjcmVhdGVIcmVmKGJhc2UsIGZ1bGxQYXRoLCB0aGlzLm1vZGUpO1xuICByZXR1cm4ge1xuICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICByb3V0ZTogcm91dGUsXG4gICAgaHJlZjogaHJlZixcbiAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdFxuICAgIG5vcm1hbGl6ZWRUbzogbG9jYXRpb24sXG4gICAgcmVzb2x2ZWQ6IHJvdXRlXG4gIH1cbn07XG5cblZ1ZVJvdXRlci5wcm90b3R5cGUuYWRkUm91dGVzID0gZnVuY3Rpb24gYWRkUm91dGVzIChyb3V0ZXMpIHtcbiAgdGhpcy5tYXRjaGVyLmFkZFJvdXRlcyhyb3V0ZXMpO1xuICBpZiAodGhpcy5oaXN0b3J5LmN1cnJlbnQgIT09IFNUQVJUKSB7XG4gICAgdGhpcy5oaXN0b3J5LnRyYW5zaXRpb25Ubyh0aGlzLmhpc3RvcnkuZ2V0Q3VycmVudExvY2F0aW9uKCkpO1xuICB9XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggVnVlUm91dGVyLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbmZ1bmN0aW9uIHJlZ2lzdGVySG9vayAobGlzdCwgZm4pIHtcbiAgbGlzdC5wdXNoKGZuKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaSA9IGxpc3QuaW5kZXhPZihmbik7XG4gICAgaWYgKGkgPiAtMSkgeyBsaXN0LnNwbGljZShpLCAxKTsgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUhyZWYgKGJhc2UsIGZ1bGxQYXRoLCBtb2RlKSB7XG4gIHZhciBwYXRoID0gbW9kZSA9PT0gJ2hhc2gnID8gJyMnICsgZnVsbFBhdGggOiBmdWxsUGF0aDtcbiAgcmV0dXJuIGJhc2UgPyBjbGVhblBhdGgoYmFzZSArICcvJyArIHBhdGgpIDogcGF0aFxufVxuXG5WdWVSb3V0ZXIuaW5zdGFsbCA9IGluc3RhbGw7XG5WdWVSb3V0ZXIudmVyc2lvbiA9ICczLjEuMyc7XG5cbmlmIChpbkJyb3dzZXIgJiYgd2luZG93LlZ1ZSkge1xuICB3aW5kb3cuVnVlLnVzZShWdWVSb3V0ZXIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBWdWVSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-router/dist/vue-router.esm.js\n");

/***/ }),

/***/ "./node_modules/vue-select/dist/vue-select.js":
/*!****************************************************!*\
  !*** ./node_modules/vue-select/dist/vue-select.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("!function(t,e){ true?module.exports=e():undefined}(\"undefined\"!=typeof self?self:this,function(){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"/\",n(n.s=9)}([function(t,e){function n(t){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(e){return\"function\"==typeof Symbol&&\"symbol\"===n(Symbol.iterator)?t.exports=o=function(t){return n(t)}:t.exports=o=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":n(t)},o(e)}t.exports=o},function(t,e,n){},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){var o=n(5),i=n(6),s=n(7);t.exports=function(t){return o(t)||i(t)||s()}},function(t,e,n){var o=n(2);t.exports=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},i=Object.keys(n);\"function\"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),i.forEach(function(e){o(t,e,n[e])})}return t}},function(t,e){t.exports=function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}},function(t,e){t.exports=function(t){if(Symbol.iterator in Object(t)||\"[object Arguments]\"===Object.prototype.toString.call(t))return Array.from(t)}},function(t,e){t.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},function(t,e,n){\"use strict\";var o=n(1);n.n(o).a},function(t,e,n){\"use strict\";n.r(e);var o=n(3),i=n.n(o),s=n(2),r=n.n(s),a=n(0),l=n.n(a),c=n(4),u=n.n(c),h={watch:{typeAheadPointer:function(){this.maybeAdjustScroll()}},methods:{maybeAdjustScroll:function(){var t=this.pixelsToPointerTop(),e=this.pixelsToPointerBottom();return t<=this.viewport().top?this.scrollTo(t):e>=this.viewport().bottom?this.scrollTo(this.viewport().top+this.pointerHeight()):void 0},pixelsToPointerTop:function(){var t=0;if(this.$refs.dropdownMenu)for(var e=0;e<this.typeAheadPointer;e++)t+=this.$refs.dropdownMenu.children[e].offsetHeight;return t},pixelsToPointerBottom:function(){return this.pixelsToPointerTop()+this.pointerHeight()},pointerHeight:function(){var t=!!this.$refs.dropdownMenu&&this.$refs.dropdownMenu.children[this.typeAheadPointer];return t?t.offsetHeight:0},viewport:function(){return{top:this.$refs.dropdownMenu?this.$refs.dropdownMenu.scrollTop:0,bottom:this.$refs.dropdownMenu?this.$refs.dropdownMenu.offsetHeight+this.$refs.dropdownMenu.scrollTop:0}},scrollTo:function(t){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.scrollTop=t:null}}},p={data:function(){return{typeAheadPointer:-1}},watch:{filteredOptions:function(){this.typeAheadPointer=0}},methods:{typeAheadUp:function(){this.typeAheadPointer>0&&(this.typeAheadPointer--,this.maybeAdjustScroll&&this.maybeAdjustScroll())},typeAheadDown:function(){this.typeAheadPointer<this.filteredOptions.length-1&&(this.typeAheadPointer++,this.maybeAdjustScroll&&this.maybeAdjustScroll())},typeAheadSelect:function(){this.filteredOptions[this.typeAheadPointer]?this.select(this.filteredOptions[this.typeAheadPointer]):this.taggable&&this.search.length&&this.select(this.search),this.clearSearchOnSelect&&(this.search=\"\")}}},d={props:{loading:{type:Boolean,default:!1}},data:function(){return{mutableLoading:!1}},watch:{search:function(){this.$emit(\"search\",this.search,this.toggleLoading)},loading:function(t){this.mutableLoading=t}},methods:{toggleLoading:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return this.mutableLoading=null==t?!this.mutableLoading:t}}};function f(t,e,n,o,i,s,r,a){var l,c=\"function\"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),o&&(c.functional=!0),s&&(c._scopeId=\"data-v-\"+s),r?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},c._ssrRegister=l):i&&(l=a?function(){i.call(this,this.$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(t,e){return l.call(e),u(t,e)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:t,options:c}}var y={Deselect:f({},function(){var t=this.$createElement,e=this._self._c||t;return e(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"10\",height:\"10\"}},[e(\"path\",{attrs:{d:\"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z\"}})])},[],!1,null,null,null).exports,OpenIndicator:f({},function(){var t=this.$createElement,e=this._self._c||t;return e(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"14\",height:\"10\"}},[e(\"path\",{attrs:{d:\"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z\"}})])},[],!1,null,null,null).exports},b={components:u()({},y),mixins:[h,p,d],props:{value:{},components:{type:Object,default:function(){return{}}},options:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},searchable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:\"\"},transition:{type:String,default:\"vs__fade\"},clearSearchOnSelect:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},label:{type:String,default:\"label\"},autocomplete:{type:String,default:\"off\"},reduce:{type:Function,default:function(t){return t}},getOptionLabel:{type:Function,default:function(t){if(\"object\"===l()(t)){if(!t.hasOwnProperty(this.label))return;return t[this.label]}return t}},onTab:{type:Function,default:function(){this.selectOnTab&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default:function(t,e,n){return(e||\"\").toLowerCase().indexOf(n.toLowerCase())>-1}},filter:{type:Function,default:function(t,e){var n=this;return t.filter(function(t){var o=n.getOptionLabel(t);return\"number\"==typeof o&&(o=o.toString()),n.filterBy(t,o,e)})}},createOption:{type:Function,default:function(t){return\"object\"===l()(this.optionList[0])&&(t=r()({},this.label,t)),this.$emit(\"option:created\",t),t}},resetOnOptionsChange:{type:Boolean,default:!1},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:\"auto\"},selectOnTab:{type:Boolean,default:!1},searchInputQuerySelector:{type:String,default:\"[type=search]\"}},data:function(){return{search:\"\",open:!1,pushedTags:[],_value:[]}},watch:{options:function(t){!this.taggable&&this.resetOnOptionsChange&&this.clearSelection()},multiple:function(){this.clearSelection()}},created:function(){var t=this;this.mutableLoading=this.loading,this.$options.propsData.hasOwnProperty(\"reduce\")&&this.value&&(Array.isArray(this.value)?this.$data._value=this.value.map(function(e){return t.findOptionFromReducedValue(e)}):this.$data._value=this.findOptionFromReducedValue(this.value)),this.$on(\"option:created\",this.maybePushTag)},methods:{select:function(t){this.isOptionSelected(t)||(this.taggable&&!this.optionExists(t)&&(t=this.createOption(t)),this.multiple&&(t=this.selectedValue.concat(t)),this.updateValue(t)),this.onAfterSelect(t)},deselect:function(t){var e=this;this.updateValue(this.selectedValue.filter(function(n){return!e.optionComparator(n,t)}))},clearSelection:function(){this.updateValue(this.multiple?[]:null)},onAfterSelect:function(t){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search=\"\")},updateValue:function(t){var e=this;this.isTrackingValues&&(this.$data._value=t),null!==t&&(t=Array.isArray(t)?t.map(function(t){return e.reduce(t)}):this.reduce(t)),this.$emit(\"input\",t)},toggleDropdown:function(t){var e=t.target,n=[this.$el,this.searchEl,this.$refs.toggle.$el];void 0!==this.$refs.openIndicator&&n.push.apply(n,[this.$refs.openIndicator.$el].concat(i()(Array.prototype.slice.call(this.$refs.openIndicator.$el.childNodes)))),(n.indexOf(e)>-1||e.classList.contains(\"vs__selected\"))&&(this.open?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus()))},isOptionSelected:function(t){var e=this;return this.selectedValue.some(function(n){return e.optionComparator(n,t)})},optionComparator:function(t,e){if(\"object\"!==l()(t)&&\"object\"!==l()(e)){if(t===e)return!0}else{if(t===this.reduce(e))return!0;if(this.getOptionLabel(t)===this.getOptionLabel(e)||this.getOptionLabel(t)===e)return!0;if(this.reduce(t)===this.reduce(e))return!0}return!1},findOptionFromReducedValue:function(t){var e=this;return this.options.find(function(n){return JSON.stringify(e.reduce(n))===JSON.stringify(t)})||t},closeSearchOptions:function(){this.open=!1,this.$emit(\"search:blur\")},maybeDeleteValue:function(){if(!this.searchEl.value.length&&this.selectedValue&&this.clearable){var t=null;this.multiple&&(t=i()(this.selectedValue.slice(0,this.selectedValue.length-1))),this.updateValue(t)}},optionExists:function(t){var e=this;return this.optionList.some(function(n){return\"object\"===l()(n)&&e.getOptionLabel(n)===t||n===t})},normalizeOptionForSlot:function(t){return\"object\"===l()(t)?t:r()({},this.label,t)},maybePushTag:function(t){this.pushTags&&this.pushedTags.push(t)},onEscape:function(){this.search.length?this.search=\"\":this.searchEl.blur()},onSearchBlur:function(){if(!this.mousedown||this.searching)return this.clearSearchOnBlur&&(this.search=\"\"),void this.closeSearchOptions();this.mousedown=!1,0!==this.search.length||0!==this.options.length||this.closeSearchOptions()},onSearchFocus:function(){this.open=!0,this.$emit(\"search:focus\")},onMousedown:function(){this.mousedown=!0},onMouseUp:function(){this.mousedown=!1},onSearchKeyDown:function(t){switch(t.keyCode){case 8:return this.maybeDeleteValue();case 9:return this.onTab()}},onSearchKeyUp:function(t){switch(t.keyCode){case 27:return this.onEscape();case 38:return t.preventDefault(),this.typeAheadUp();case 40:return t.preventDefault(),this.typeAheadDown();case 13:return t.preventDefault(),this.typeAheadSelect()}}},computed:{isTrackingValues:function(){return void 0===this.value||this.$options.propsData.hasOwnProperty(\"reduce\")},selectedValue:function(){var t=this.value;return this.isTrackingValues&&(t=this.$data._value),t?[].concat(t):[]},optionList:function(){return this.options.concat(this.pushedTags)},searchEl:function(){return this.$scopedSlots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope:function(){var t=this;return{search:{attributes:{disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,\"aria-expanded\":this.dropdownOpen,\"aria-label\":\"Search for option\",ref:\"search\",role:\"combobox\",type:\"search\",autocomplete:\"off\",value:this.search},events:{keydown:this.onSearchKeyDown,keyup:this.onSearchKeyUp,blur:this.onSearchBlur,focus:this.onSearchFocus,input:function(e){return t.search=e.target.value}}},spinner:{loading:this.mutableLoading},openIndicator:{attributes:{ref:\"openIndicator\",role:\"presentation\",class:\"vs__open-indicator\"}}}},childComponents:function(){return u()({},y,this.components)},stateClasses:function(){return{\"vs--open\":this.dropdownOpen,\"vs--single\":!this.multiple,\"vs--searching\":this.searching&&!this.noDrop,\"vs--searchable\":this.searchable&&!this.noDrop,\"vs--unsearchable\":!this.searchable,\"vs--loading\":this.mutableLoading,\"vs--disabled\":this.disabled}},clearSearchOnBlur:function(){return this.clearSearchOnSelect&&!this.multiple},searching:function(){return!!this.search},dropdownOpen:function(){return!this.noDrop&&(this.open&&!this.mutableLoading)},searchPlaceholder:function(){if(this.isValueEmpty&&this.placeholder)return this.placeholder},filteredOptions:function(){var t=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return t;var e=this.search.length?this.filter(t,this.search,this):t;return this.taggable&&this.search.length&&!this.optionExists(this.search)&&e.unshift(this.search),e},isValueEmpty:function(){return 0===this.selectedValue.length},showClearButton:function(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}}},m=(n(8),f(b,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"v-select\",class:t.stateClasses,attrs:{dir:t.dir}},[n(\"div\",{ref:\"toggle\",staticClass:\"vs__dropdown-toggle\",on:{mousedown:function(e){return e.preventDefault(),t.toggleDropdown(e)}}},[n(\"div\",{ref:\"selectedOptions\",staticClass:\"vs__selected-options\"},[t._l(t.selectedValue,function(e){return t._t(\"selected-option-container\",[n(\"span\",{key:e.index,staticClass:\"vs__selected\"},[t._t(\"selected-option\",[t._v(\"\\n            \"+t._s(t.getOptionLabel(e))+\"\\n          \")],null,t.normalizeOptionForSlot(e)),t._v(\" \"),t.multiple?n(\"button\",{staticClass:\"vs__deselect\",attrs:{disabled:t.disabled,type:\"button\",\"aria-label\":\"Deselect option\"},on:{click:function(n){return t.deselect(e)}}},[n(t.childComponents.Deselect,{tag:\"component\"})],1):t._e()],2)],{option:t.normalizeOptionForSlot(e),deselect:t.deselect,multiple:t.multiple,disabled:t.disabled})}),t._v(\" \"),t._t(\"search\",[n(\"input\",t._g(t._b({staticClass:\"vs__search\"},\"input\",t.scope.search.attributes,!1),t.scope.search.events))],null,t.scope.search)],2),t._v(\" \"),n(\"div\",{staticClass:\"vs__actions\"},[n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showClearButton,expression:\"showClearButton\"}],staticClass:\"vs__clear\",attrs:{disabled:t.disabled,type:\"button\",title:\"Clear selection\"},on:{click:t.clearSelection}},[n(t.childComponents.Deselect,{tag:\"component\"})],1),t._v(\" \"),t._t(\"open-indicator\",[t.noDrop?t._e():n(t.childComponents.OpenIndicator,t._b({tag:\"component\"},\"component\",t.scope.openIndicator.attributes,!1))],null,t.scope.openIndicator),t._v(\" \"),t._t(\"spinner\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.mutableLoading,expression:\"mutableLoading\"}],staticClass:\"vs__spinner\"},[t._v(\"Loading...\")])],null,t.scope.spinner)],2)]),t._v(\" \"),n(\"transition\",{attrs:{name:t.transition}},[t.dropdownOpen?n(\"ul\",{ref:\"dropdownMenu\",staticClass:\"vs__dropdown-menu\",attrs:{role:\"listbox\"},on:{mousedown:t.onMousedown,mouseup:t.onMouseUp}},[t._l(t.filteredOptions,function(e,o){return n(\"li\",{key:o,staticClass:\"vs__dropdown-option\",class:{\"vs__dropdown-option--selected\":t.isOptionSelected(e),\"vs__dropdown-option--highlight\":o===t.typeAheadPointer},attrs:{role:\"option\"},on:{mouseover:function(e){t.typeAheadPointer=o},mousedown:function(n){return n.preventDefault(),n.stopPropagation(),t.select(e)}}},[t._t(\"option\",[t._v(\"\\n          \"+t._s(t.getOptionLabel(e))+\"\\n        \")],null,t.normalizeOptionForSlot(e))],2)}),t._v(\" \"),t.filteredOptions.length?t._e():n(\"li\",{staticClass:\"vs__no-options\",on:{mousedown:function(t){t.stopPropagation()}}},[t._t(\"no-options\",[t._v(\"Sorry, no matching options.\")])],2)],2):t._e()])],1)},[],!1,null,null,null).exports),g={ajax:d,pointer:p,pointerScroll:h};n.d(e,\"VueSelect\",function(){return m}),n.d(e,\"mixins\",function(){return g});e.default=m}])});\n//# sourceMappingURL=vue-select.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXNlbGVjdC9kaXN0L3Z1ZS1zZWxlY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXNlbGVjdC9kaXN0L3Z1ZS1zZWxlY3QuanM/NGE3YSJdLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSxlKTpcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLlZ1ZVNlbGVjdD1lKCk6dC5WdWVTZWxlY3Q9ZSgpfShcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gbihvKXtpZihlW29dKXJldHVybiBlW29dLmV4cG9ydHM7dmFyIGk9ZVtvXT17aTpvLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIHRbb10uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsbiksaS5sPSEwLGkuZXhwb3J0c31yZXR1cm4gbi5tPXQsbi5jPWUsbi5kPWZ1bmN0aW9uKHQsZSxvKXtuLm8odCxlKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7ZW51bWVyYWJsZTohMCxnZXQ6b30pfSxuLnI9ZnVuY3Rpb24odCl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sbi50PWZ1bmN0aW9uKHQsZSl7aWYoMSZlJiYodD1uKHQpKSw4JmUpcmV0dXJuIHQ7aWYoNCZlJiZcIm9iamVjdFwiPT10eXBlb2YgdCYmdCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBvPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobi5yKG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KSwyJmUmJlwic3RyaW5nXCIhPXR5cGVvZiB0KWZvcih2YXIgaSBpbiB0KW4uZChvLGksZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19LmJpbmQobnVsbCxpKSk7cmV0dXJuIG99LG4ubj1mdW5jdGlvbih0KXt2YXIgZT10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiB0fTtyZXR1cm4gbi5kKGUsXCJhXCIsZSksZX0sbi5vPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfSxuLnA9XCIvXCIsbihuLnM9OSl9KFtmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0pKHQpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT09bihTeW1ib2wuaXRlcmF0b3IpP3QuZXhwb3J0cz1vPWZ1bmN0aW9uKHQpe3JldHVybiBuKHQpfTp0LmV4cG9ydHM9bz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOm4odCl9LG8oZSl9dC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxuKXt9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1uKDUpLGk9big2KSxzPW4oNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvKHQpfHxpKHQpfHxzKCl9fSxmdW5jdGlvbih0LGUsbil7dmFyIG89bigyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fSxpPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihpPWkuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkuZW51bWVyYWJsZX0pKSksaS5mb3JFYWNoKGZ1bmN0aW9uKGUpe28odCxlLG5bZV0pfSl9cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGU9MCxuPW5ldyBBcnJheSh0Lmxlbmd0aCk7ZTx0Lmxlbmd0aDtlKyspbltlXT10W2VdO3JldHVybiBufX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCl8fFwiW29iamVjdCBBcmd1bWVudHNdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpcmV0dXJuIEFycmF5LmZyb20odCl9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgbz1uKDEpO24ubihvKS5hfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKGUpO3ZhciBvPW4oMyksaT1uLm4obykscz1uKDIpLHI9bi5uKHMpLGE9bigwKSxsPW4ubihhKSxjPW4oNCksdT1uLm4oYyksaD17d2F0Y2g6e3R5cGVBaGVhZFBvaW50ZXI6ZnVuY3Rpb24oKXt0aGlzLm1heWJlQWRqdXN0U2Nyb2xsKCl9fSxtZXRob2RzOnttYXliZUFkanVzdFNjcm9sbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGl4ZWxzVG9Qb2ludGVyVG9wKCksZT10aGlzLnBpeGVsc1RvUG9pbnRlckJvdHRvbSgpO3JldHVybiB0PD10aGlzLnZpZXdwb3J0KCkudG9wP3RoaXMuc2Nyb2xsVG8odCk6ZT49dGhpcy52aWV3cG9ydCgpLmJvdHRvbT90aGlzLnNjcm9sbFRvKHRoaXMudmlld3BvcnQoKS50b3ArdGhpcy5wb2ludGVySGVpZ2h0KCkpOnZvaWQgMH0scGl4ZWxzVG9Qb2ludGVyVG9wOmZ1bmN0aW9uKCl7dmFyIHQ9MDtpZih0aGlzLiRyZWZzLmRyb3Bkb3duTWVudSlmb3IodmFyIGU9MDtlPHRoaXMudHlwZUFoZWFkUG9pbnRlcjtlKyspdCs9dGhpcy4kcmVmcy5kcm9wZG93bk1lbnUuY2hpbGRyZW5bZV0ub2Zmc2V0SGVpZ2h0O3JldHVybiB0fSxwaXhlbHNUb1BvaW50ZXJCb3R0b206ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5waXhlbHNUb1BvaW50ZXJUb3AoKSt0aGlzLnBvaW50ZXJIZWlnaHQoKX0scG9pbnRlckhlaWdodDpmdW5jdGlvbigpe3ZhciB0PSEhdGhpcy4kcmVmcy5kcm9wZG93bk1lbnUmJnRoaXMuJHJlZnMuZHJvcGRvd25NZW51LmNoaWxkcmVuW3RoaXMudHlwZUFoZWFkUG9pbnRlcl07cmV0dXJuIHQ/dC5vZmZzZXRIZWlnaHQ6MH0sdmlld3BvcnQ6ZnVuY3Rpb24oKXtyZXR1cm57dG9wOnRoaXMuJHJlZnMuZHJvcGRvd25NZW51P3RoaXMuJHJlZnMuZHJvcGRvd25NZW51LnNjcm9sbFRvcDowLGJvdHRvbTp0aGlzLiRyZWZzLmRyb3Bkb3duTWVudT90aGlzLiRyZWZzLmRyb3Bkb3duTWVudS5vZmZzZXRIZWlnaHQrdGhpcy4kcmVmcy5kcm9wZG93bk1lbnUuc2Nyb2xsVG9wOjB9fSxzY3JvbGxUbzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kcmVmcy5kcm9wZG93bk1lbnU/dGhpcy4kcmVmcy5kcm9wZG93bk1lbnUuc2Nyb2xsVG9wPXQ6bnVsbH19fSxwPXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3R5cGVBaGVhZFBvaW50ZXI6LTF9fSx3YXRjaDp7ZmlsdGVyZWRPcHRpb25zOmZ1bmN0aW9uKCl7dGhpcy50eXBlQWhlYWRQb2ludGVyPTB9fSxtZXRob2RzOnt0eXBlQWhlYWRVcDpmdW5jdGlvbigpe3RoaXMudHlwZUFoZWFkUG9pbnRlcj4wJiYodGhpcy50eXBlQWhlYWRQb2ludGVyLS0sdGhpcy5tYXliZUFkanVzdFNjcm9sbCYmdGhpcy5tYXliZUFkanVzdFNjcm9sbCgpKX0sdHlwZUFoZWFkRG93bjpmdW5jdGlvbigpe3RoaXMudHlwZUFoZWFkUG9pbnRlcjx0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGgtMSYmKHRoaXMudHlwZUFoZWFkUG9pbnRlcisrLHRoaXMubWF5YmVBZGp1c3RTY3JvbGwmJnRoaXMubWF5YmVBZGp1c3RTY3JvbGwoKSl9LHR5cGVBaGVhZFNlbGVjdDpmdW5jdGlvbigpe3RoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMudHlwZUFoZWFkUG9pbnRlcl0/dGhpcy5zZWxlY3QodGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy50eXBlQWhlYWRQb2ludGVyXSk6dGhpcy50YWdnYWJsZSYmdGhpcy5zZWFyY2gubGVuZ3RoJiZ0aGlzLnNlbGVjdCh0aGlzLnNlYXJjaCksdGhpcy5jbGVhclNlYXJjaE9uU2VsZWN0JiYodGhpcy5zZWFyY2g9XCJcIil9fX0sZD17cHJvcHM6e2xvYWRpbmc6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybnttdXRhYmxlTG9hZGluZzohMX19LHdhdGNoOntzZWFyY2g6ZnVuY3Rpb24oKXt0aGlzLiRlbWl0KFwic2VhcmNoXCIsdGhpcy5zZWFyY2gsdGhpcy50b2dnbGVMb2FkaW5nKX0sbG9hZGluZzpmdW5jdGlvbih0KXt0aGlzLm11dGFibGVMb2FkaW5nPXR9fSxtZXRob2RzOnt0b2dnbGVMb2FkaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7cmV0dXJuIHRoaXMubXV0YWJsZUxvYWRpbmc9bnVsbD09dD8hdGhpcy5tdXRhYmxlTG9hZGluZzp0fX19O2Z1bmN0aW9uIGYodCxlLG4sbyxpLHMscixhKXt2YXIgbCxjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dC5vcHRpb25zOnQ7aWYoZSYmKGMucmVuZGVyPWUsYy5zdGF0aWNSZW5kZXJGbnM9bixjLl9jb21waWxlZD0hMCksbyYmKGMuZnVuY3Rpb25hbD0hMCkscyYmKGMuX3Njb3BlSWQ9XCJkYXRhLXYtXCIrcykscj8obD1mdW5jdGlvbih0KXsodD10fHx0aGlzLiR2bm9kZSYmdGhpcy4kdm5vZGUuc3NyQ29udGV4dHx8dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LiR2bm9kZSYmdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpfHxcInVuZGVmaW5lZFwiPT10eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfX3x8KHQ9X19WVUVfU1NSX0NPTlRFWFRfXyksaSYmaS5jYWxsKHRoaXMsdCksdCYmdC5fcmVnaXN0ZXJlZENvbXBvbmVudHMmJnQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChyKX0sYy5fc3NyUmVnaXN0ZXI9bCk6aSYmKGw9YT9mdW5jdGlvbigpe2kuY2FsbCh0aGlzLHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCl9OmkpLGwpaWYoYy5mdW5jdGlvbmFsKXtjLl9pbmplY3RTdHlsZXM9bDt2YXIgdT1jLnJlbmRlcjtjLnJlbmRlcj1mdW5jdGlvbih0LGUpe3JldHVybiBsLmNhbGwoZSksdSh0LGUpfX1lbHNle3ZhciBoPWMuYmVmb3JlQ3JlYXRlO2MuYmVmb3JlQ3JlYXRlPWg/W10uY29uY2F0KGgsbCk6W2xdfXJldHVybntleHBvcnRzOnQsb3B0aW9uczpjfX12YXIgeT17RGVzZWxlY3Q6Zih7fSxmdW5jdGlvbigpe3ZhciB0PXRoaXMuJGNyZWF0ZUVsZW1lbnQsZT10aGlzLl9zZWxmLl9jfHx0O3JldHVybiBlKFwic3ZnXCIse2F0dHJzOnt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIxMFwiLGhlaWdodDpcIjEwXCJ9fSxbZShcInBhdGhcIix7YXR0cnM6e2Q6XCJNNi44OTU0NTUgNWwyLjg0Mjg5Ny0yLjg0Mjg5OGMuMzQ4ODY0LS4zNDg4NjMuMzQ4ODY0LS45MTQ0ODggMC0xLjI2MzYzNkw5LjEwNjUzNC4yNjE2NDhjLS4zNDg4NjQtLjM0ODg2NC0uOTE0NDg5LS4zNDg4NjQtMS4yNjM2MzYgMEw1IDMuMTA0NTQ1IDIuMTU3MTAyLjI2MTY0OGMtLjM0ODg2My0uMzQ4ODY0LS45MTQ0ODgtLjM0ODg2NC0xLjI2MzYzNiAwTC4yNjE2NDguODkzNDY2Yy0uMzQ4ODY0LjM0ODg2NC0uMzQ4ODY0LjkxNDQ4OSAwIDEuMjYzNjM2TDMuMTA0NTQ1IDUgLjI2MTY0OCA3Ljg0Mjg5OGMtLjM0ODg2NC4zNDg4NjMtLjM0ODg2NC45MTQ0ODggMCAxLjI2MzYzNmwuNjMxODE4LjYzMTgxOGMuMzQ4ODY0LjM0ODg2NC45MTQ3NzMuMzQ4ODY0IDEuMjYzNjM2IDBMNSA2Ljg5NTQ1NWwyLjg0Mjg5OCAyLjg0Mjg5N2MuMzQ4ODYzLjM0ODg2NC45MTQ3NzIuMzQ4ODY0IDEuMjYzNjM2IDBsLjYzMTgxOC0uNjMxODE4Yy4zNDg4NjQtLjM0ODg2NC4zNDg4NjQtLjkxNDQ4OSAwLTEuMjYzNjM2TDYuODk1NDU1IDV6XCJ9fSldKX0sW10sITEsbnVsbCxudWxsLG51bGwpLmV4cG9ydHMsT3BlbkluZGljYXRvcjpmKHt9LGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kY3JlYXRlRWxlbWVudCxlPXRoaXMuX3NlbGYuX2N8fHQ7cmV0dXJuIGUoXCJzdmdcIix7YXR0cnM6e3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTBcIn19LFtlKFwicGF0aFwiLHthdHRyczp7ZDpcIk05LjIxMTM2NCA3LjU5OTMxbDQuNDgzMzgtNC44NjcyMjljLjQwNzAwOC0uNDQxODU0LjQwNzAwOC0xLjE1ODI0NyAwLTEuNjAwNDZsLS43MzcxMi0uODAwMjNjLS40MDcwMDgtLjQ0MTg1NC0xLjA2NjkwNC0uNDQxODU0LTEuNDc0MjQzIDBMNyA1LjE5ODYxNyAyLjUxNjYyLjMzMTM5Yy0uNDA3MDA4LS40NDE4NTMtMS4wNjY5MDQtLjQ0MTg1My0xLjQ3NDI0MyAwbC0uNzM3MTIxLjgwMDIzYy0uNDA3MDA4LjQ0MTg1NC0uNDA3MDA4IDEuMTU4MjQ4IDAgMS42MDA0NjFsNC40ODMzOCA0Ljg2NzIyOEw3IDEwbDIuMjExMzY0LTIuNDAwNjl6XCJ9fSldKX0sW10sITEsbnVsbCxudWxsLG51bGwpLmV4cG9ydHN9LGI9e2NvbXBvbmVudHM6dSgpKHt9LHkpLG1peGluczpbaCxwLGRdLHByb3BzOnt2YWx1ZTp7fSxjb21wb25lbnRzOnt0eXBlOk9iamVjdCxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJue319fSxvcHRpb25zOnt0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2xlYXJhYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sc2VhcmNoYWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0sdHJhbnNpdGlvbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcInZzX19mYWRlXCJ9LGNsZWFyU2VhcmNoT25TZWxlY3Q6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxjbG9zZU9uU2VsZWN0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sbGFiZWw6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJsYWJlbFwifSxhdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJvZmZcIn0scmVkdWNlOnt0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxnZXRPcHRpb25MYWJlbDp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OmZ1bmN0aW9uKHQpe2lmKFwib2JqZWN0XCI9PT1sKCkodCkpe2lmKCF0Lmhhc093blByb3BlcnR5KHRoaXMubGFiZWwpKXJldHVybjtyZXR1cm4gdFt0aGlzLmxhYmVsXX1yZXR1cm4gdH19LG9uVGFiOnt0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdE9uVGFiJiZ0aGlzLnR5cGVBaGVhZFNlbGVjdCgpfX0sdGFnZ2FibGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0YWJpbmRleDp7dHlwZTpOdW1iZXIsZGVmYXVsdDpudWxsfSxwdXNoVGFnczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGZpbHRlcmFibGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxmaWx0ZXJCeTp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4oZXx8XCJcIikudG9Mb3dlckNhc2UoKS5pbmRleE9mKG4udG9Mb3dlckNhc2UoKSk+LTF9fSxmaWx0ZXI6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3ZhciBvPW4uZ2V0T3B0aW9uTGFiZWwodCk7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIG8mJihvPW8udG9TdHJpbmcoKSksbi5maWx0ZXJCeSh0LG8sZSl9KX19LGNyZWF0ZU9wdGlvbjp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OmZ1bmN0aW9uKHQpe3JldHVyblwib2JqZWN0XCI9PT1sKCkodGhpcy5vcHRpb25MaXN0WzBdKSYmKHQ9cigpKHt9LHRoaXMubGFiZWwsdCkpLHRoaXMuJGVtaXQoXCJvcHRpb246Y3JlYXRlZFwiLHQpLHR9fSxyZXNldE9uT3B0aW9uc0NoYW5nZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG5vRHJvcDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGlucHV0SWQ6e3R5cGU6U3RyaW5nfSxkaXI6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJhdXRvXCJ9LHNlbGVjdE9uVGFiOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc2VhcmNoSW5wdXRRdWVyeVNlbGVjdG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiW3R5cGU9c2VhcmNoXVwifX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntzZWFyY2g6XCJcIixvcGVuOiExLHB1c2hlZFRhZ3M6W10sX3ZhbHVlOltdfX0sd2F0Y2g6e29wdGlvbnM6ZnVuY3Rpb24odCl7IXRoaXMudGFnZ2FibGUmJnRoaXMucmVzZXRPbk9wdGlvbnNDaGFuZ2UmJnRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sbXVsdGlwbGU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyU2VsZWN0aW9uKCl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLm11dGFibGVMb2FkaW5nPXRoaXMubG9hZGluZyx0aGlzLiRvcHRpb25zLnByb3BzRGF0YS5oYXNPd25Qcm9wZXJ0eShcInJlZHVjZVwiKSYmdGhpcy52YWx1ZSYmKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSk/dGhpcy4kZGF0YS5fdmFsdWU9dGhpcy52YWx1ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmluZE9wdGlvbkZyb21SZWR1Y2VkVmFsdWUoZSl9KTp0aGlzLiRkYXRhLl92YWx1ZT10aGlzLmZpbmRPcHRpb25Gcm9tUmVkdWNlZFZhbHVlKHRoaXMudmFsdWUpKSx0aGlzLiRvbihcIm9wdGlvbjpjcmVhdGVkXCIsdGhpcy5tYXliZVB1c2hUYWcpfSxtZXRob2RzOntzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5pc09wdGlvblNlbGVjdGVkKHQpfHwodGhpcy50YWdnYWJsZSYmIXRoaXMub3B0aW9uRXhpc3RzKHQpJiYodD10aGlzLmNyZWF0ZU9wdGlvbih0KSksdGhpcy5tdWx0aXBsZSYmKHQ9dGhpcy5zZWxlY3RlZFZhbHVlLmNvbmNhdCh0KSksdGhpcy51cGRhdGVWYWx1ZSh0KSksdGhpcy5vbkFmdGVyU2VsZWN0KHQpfSxkZXNlbGVjdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMudXBkYXRlVmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4hZS5vcHRpb25Db21wYXJhdG9yKG4sdCl9KSl9LGNsZWFyU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy51cGRhdGVWYWx1ZSh0aGlzLm11bHRpcGxlP1tdOm51bGwpfSxvbkFmdGVyU2VsZWN0OmZ1bmN0aW9uKHQpe3RoaXMuY2xvc2VPblNlbGVjdCYmKHRoaXMub3Blbj0hdGhpcy5vcGVuLHRoaXMuc2VhcmNoRWwuYmx1cigpKSx0aGlzLmNsZWFyU2VhcmNoT25TZWxlY3QmJih0aGlzLnNlYXJjaD1cIlwiKX0sdXBkYXRlVmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmlzVHJhY2tpbmdWYWx1ZXMmJih0aGlzLiRkYXRhLl92YWx1ZT10KSxudWxsIT09dCYmKHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZS5yZWR1Y2UodCl9KTp0aGlzLnJlZHVjZSh0KSksdGhpcy4kZW1pdChcImlucHV0XCIsdCl9LHRvZ2dsZURyb3Bkb3duOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0LG49W3RoaXMuJGVsLHRoaXMuc2VhcmNoRWwsdGhpcy4kcmVmcy50b2dnbGUuJGVsXTt2b2lkIDAhPT10aGlzLiRyZWZzLm9wZW5JbmRpY2F0b3ImJm4ucHVzaC5hcHBseShuLFt0aGlzLiRyZWZzLm9wZW5JbmRpY2F0b3IuJGVsXS5jb25jYXQoaSgpKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuJHJlZnMub3BlbkluZGljYXRvci4kZWwuY2hpbGROb2RlcykpKSksKG4uaW5kZXhPZihlKT4tMXx8ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJ2c19fc2VsZWN0ZWRcIikpJiYodGhpcy5vcGVuP3RoaXMuc2VhcmNoRWwuYmx1cigpOnRoaXMuZGlzYWJsZWR8fCh0aGlzLm9wZW49ITAsdGhpcy5zZWFyY2hFbC5mb2N1cygpKSl9LGlzT3B0aW9uU2VsZWN0ZWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlLnNvbWUoZnVuY3Rpb24obil7cmV0dXJuIGUub3B0aW9uQ29tcGFyYXRvcihuLHQpfSl9LG9wdGlvbkNvbXBhcmF0b3I6ZnVuY3Rpb24odCxlKXtpZihcIm9iamVjdFwiIT09bCgpKHQpJiZcIm9iamVjdFwiIT09bCgpKGUpKXtpZih0PT09ZSlyZXR1cm4hMH1lbHNle2lmKHQ9PT10aGlzLnJlZHVjZShlKSlyZXR1cm4hMDtpZih0aGlzLmdldE9wdGlvbkxhYmVsKHQpPT09dGhpcy5nZXRPcHRpb25MYWJlbChlKXx8dGhpcy5nZXRPcHRpb25MYWJlbCh0KT09PWUpcmV0dXJuITA7aWYodGhpcy5yZWR1Y2UodCk9PT10aGlzLnJlZHVjZShlKSlyZXR1cm4hMH1yZXR1cm4hMX0sZmluZE9wdGlvbkZyb21SZWR1Y2VkVmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5vcHRpb25zLmZpbmQoZnVuY3Rpb24obil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUucmVkdWNlKG4pKT09PUpTT04uc3RyaW5naWZ5KHQpfSl8fHR9LGNsb3NlU2VhcmNoT3B0aW9uczpmdW5jdGlvbigpe3RoaXMub3Blbj0hMSx0aGlzLiRlbWl0KFwic2VhcmNoOmJsdXJcIil9LG1heWJlRGVsZXRlVmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5zZWFyY2hFbC52YWx1ZS5sZW5ndGgmJnRoaXMuc2VsZWN0ZWRWYWx1ZSYmdGhpcy5jbGVhcmFibGUpe3ZhciB0PW51bGw7dGhpcy5tdWx0aXBsZSYmKHQ9aSgpKHRoaXMuc2VsZWN0ZWRWYWx1ZS5zbGljZSgwLHRoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGgtMSkpKSx0aGlzLnVwZGF0ZVZhbHVlKHQpfX0sb3B0aW9uRXhpc3RzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMub3B0aW9uTGlzdC5zb21lKGZ1bmN0aW9uKG4pe3JldHVyblwib2JqZWN0XCI9PT1sKCkobikmJmUuZ2V0T3B0aW9uTGFiZWwobik9PT10fHxuPT09dH0pfSxub3JtYWxpemVPcHRpb25Gb3JTbG90OmZ1bmN0aW9uKHQpe3JldHVyblwib2JqZWN0XCI9PT1sKCkodCk/dDpyKCkoe30sdGhpcy5sYWJlbCx0KX0sbWF5YmVQdXNoVGFnOmZ1bmN0aW9uKHQpe3RoaXMucHVzaFRhZ3MmJnRoaXMucHVzaGVkVGFncy5wdXNoKHQpfSxvbkVzY2FwZTpmdW5jdGlvbigpe3RoaXMuc2VhcmNoLmxlbmd0aD90aGlzLnNlYXJjaD1cIlwiOnRoaXMuc2VhcmNoRWwuYmx1cigpfSxvblNlYXJjaEJsdXI6ZnVuY3Rpb24oKXtpZighdGhpcy5tb3VzZWRvd258fHRoaXMuc2VhcmNoaW5nKXJldHVybiB0aGlzLmNsZWFyU2VhcmNoT25CbHVyJiYodGhpcy5zZWFyY2g9XCJcIiksdm9pZCB0aGlzLmNsb3NlU2VhcmNoT3B0aW9ucygpO3RoaXMubW91c2Vkb3duPSExLDAhPT10aGlzLnNlYXJjaC5sZW5ndGh8fDAhPT10aGlzLm9wdGlvbnMubGVuZ3RofHx0aGlzLmNsb3NlU2VhcmNoT3B0aW9ucygpfSxvblNlYXJjaEZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5vcGVuPSEwLHRoaXMuJGVtaXQoXCJzZWFyY2g6Zm9jdXNcIil9LG9uTW91c2Vkb3duOmZ1bmN0aW9uKCl7dGhpcy5tb3VzZWRvd249ITB9LG9uTW91c2VVcDpmdW5jdGlvbigpe3RoaXMubW91c2Vkb3duPSExfSxvblNlYXJjaEtleURvd246ZnVuY3Rpb24odCl7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSA4OnJldHVybiB0aGlzLm1heWJlRGVsZXRlVmFsdWUoKTtjYXNlIDk6cmV0dXJuIHRoaXMub25UYWIoKX19LG9uU2VhcmNoS2V5VXA6ZnVuY3Rpb24odCl7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSAyNzpyZXR1cm4gdGhpcy5vbkVzY2FwZSgpO2Nhc2UgMzg6cmV0dXJuIHQucHJldmVudERlZmF1bHQoKSx0aGlzLnR5cGVBaGVhZFVwKCk7Y2FzZSA0MDpyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudHlwZUFoZWFkRG93bigpO2Nhc2UgMTM6cmV0dXJuIHQucHJldmVudERlZmF1bHQoKSx0aGlzLnR5cGVBaGVhZFNlbGVjdCgpfX19LGNvbXB1dGVkOntpc1RyYWNraW5nVmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMudmFsdWV8fHRoaXMuJG9wdGlvbnMucHJvcHNEYXRhLmhhc093blByb3BlcnR5KFwicmVkdWNlXCIpfSxzZWxlY3RlZFZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52YWx1ZTtyZXR1cm4gdGhpcy5pc1RyYWNraW5nVmFsdWVzJiYodD10aGlzLiRkYXRhLl92YWx1ZSksdD9bXS5jb25jYXQodCk6W119LG9wdGlvbkxpc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmNvbmNhdCh0aGlzLnB1c2hlZFRhZ3MpfSxzZWFyY2hFbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRzY29wZWRTbG90cy5zZWFyY2g/dGhpcy4kcmVmcy5zZWxlY3RlZE9wdGlvbnMucXVlcnlTZWxlY3Rvcih0aGlzLnNlYXJjaElucHV0UXVlcnlTZWxlY3Rvcik6dGhpcy4kcmVmcy5zZWFyY2h9LHNjb3BlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm57c2VhcmNoOnthdHRyaWJ1dGVzOntkaXNhYmxlZDp0aGlzLmRpc2FibGVkLHBsYWNlaG9sZGVyOnRoaXMuc2VhcmNoUGxhY2Vob2xkZXIsdGFiaW5kZXg6dGhpcy50YWJpbmRleCxyZWFkb25seTohdGhpcy5zZWFyY2hhYmxlLGlkOnRoaXMuaW5wdXRJZCxcImFyaWEtZXhwYW5kZWRcIjp0aGlzLmRyb3Bkb3duT3BlbixcImFyaWEtbGFiZWxcIjpcIlNlYXJjaCBmb3Igb3B0aW9uXCIscmVmOlwic2VhcmNoXCIscm9sZTpcImNvbWJvYm94XCIsdHlwZTpcInNlYXJjaFwiLGF1dG9jb21wbGV0ZTpcIm9mZlwiLHZhbHVlOnRoaXMuc2VhcmNofSxldmVudHM6e2tleWRvd246dGhpcy5vblNlYXJjaEtleURvd24sa2V5dXA6dGhpcy5vblNlYXJjaEtleVVwLGJsdXI6dGhpcy5vblNlYXJjaEJsdXIsZm9jdXM6dGhpcy5vblNlYXJjaEZvY3VzLGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiB0LnNlYXJjaD1lLnRhcmdldC52YWx1ZX19fSxzcGlubmVyOntsb2FkaW5nOnRoaXMubXV0YWJsZUxvYWRpbmd9LG9wZW5JbmRpY2F0b3I6e2F0dHJpYnV0ZXM6e3JlZjpcIm9wZW5JbmRpY2F0b3JcIixyb2xlOlwicHJlc2VudGF0aW9uXCIsY2xhc3M6XCJ2c19fb3Blbi1pbmRpY2F0b3JcIn19fX0sY2hpbGRDb21wb25lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHUoKSh7fSx5LHRoaXMuY29tcG9uZW50cyl9LHN0YXRlQ2xhc3NlczpmdW5jdGlvbigpe3JldHVybntcInZzLS1vcGVuXCI6dGhpcy5kcm9wZG93bk9wZW4sXCJ2cy0tc2luZ2xlXCI6IXRoaXMubXVsdGlwbGUsXCJ2cy0tc2VhcmNoaW5nXCI6dGhpcy5zZWFyY2hpbmcmJiF0aGlzLm5vRHJvcCxcInZzLS1zZWFyY2hhYmxlXCI6dGhpcy5zZWFyY2hhYmxlJiYhdGhpcy5ub0Ryb3AsXCJ2cy0tdW5zZWFyY2hhYmxlXCI6IXRoaXMuc2VhcmNoYWJsZSxcInZzLS1sb2FkaW5nXCI6dGhpcy5tdXRhYmxlTG9hZGluZyxcInZzLS1kaXNhYmxlZFwiOnRoaXMuZGlzYWJsZWR9fSxjbGVhclNlYXJjaE9uQmx1cjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsZWFyU2VhcmNoT25TZWxlY3QmJiF0aGlzLm11bHRpcGxlfSxzZWFyY2hpbmc6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc2VhcmNofSxkcm9wZG93bk9wZW46ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5ub0Ryb3AmJih0aGlzLm9wZW4mJiF0aGlzLm11dGFibGVMb2FkaW5nKX0sc2VhcmNoUGxhY2Vob2xkZXI6ZnVuY3Rpb24oKXtpZih0aGlzLmlzVmFsdWVFbXB0eSYmdGhpcy5wbGFjZWhvbGRlcilyZXR1cm4gdGhpcy5wbGFjZWhvbGRlcn0sZmlsdGVyZWRPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9W10uY29uY2F0KHRoaXMub3B0aW9uTGlzdCk7aWYoIXRoaXMuZmlsdGVyYWJsZSYmIXRoaXMudGFnZ2FibGUpcmV0dXJuIHQ7dmFyIGU9dGhpcy5zZWFyY2gubGVuZ3RoP3RoaXMuZmlsdGVyKHQsdGhpcy5zZWFyY2gsdGhpcyk6dDtyZXR1cm4gdGhpcy50YWdnYWJsZSYmdGhpcy5zZWFyY2gubGVuZ3RoJiYhdGhpcy5vcHRpb25FeGlzdHModGhpcy5zZWFyY2gpJiZlLnVuc2hpZnQodGhpcy5zZWFyY2gpLGV9LGlzVmFsdWVFbXB0eTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aH0sc2hvd0NsZWFyQnV0dG9uOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubXVsdGlwbGUmJnRoaXMuY2xlYXJhYmxlJiYhdGhpcy5vcGVuJiYhdGhpcy5pc1ZhbHVlRW1wdHl9fX0sbT0obig4KSxmKGIsZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2LXNlbGVjdFwiLGNsYXNzOnQuc3RhdGVDbGFzc2VzLGF0dHJzOntkaXI6dC5kaXJ9fSxbbihcImRpdlwiLHtyZWY6XCJ0b2dnbGVcIixzdGF0aWNDbGFzczpcInZzX19kcm9wZG93bi10b2dnbGVcIixvbjp7bW91c2Vkb3duOmZ1bmN0aW9uKGUpe3JldHVybiBlLnByZXZlbnREZWZhdWx0KCksdC50b2dnbGVEcm9wZG93bihlKX19fSxbbihcImRpdlwiLHtyZWY6XCJzZWxlY3RlZE9wdGlvbnNcIixzdGF0aWNDbGFzczpcInZzX19zZWxlY3RlZC1vcHRpb25zXCJ9LFt0Ll9sKHQuc2VsZWN0ZWRWYWx1ZSxmdW5jdGlvbihlKXtyZXR1cm4gdC5fdChcInNlbGVjdGVkLW9wdGlvbi1jb250YWluZXJcIixbbihcInNwYW5cIix7a2V5OmUuaW5kZXgsc3RhdGljQ2xhc3M6XCJ2c19fc2VsZWN0ZWRcIn0sW3QuX3QoXCJzZWxlY3RlZC1vcHRpb25cIixbdC5fdihcIlxcbiAgICAgICAgICAgIFwiK3QuX3ModC5nZXRPcHRpb25MYWJlbChlKSkrXCJcXG4gICAgICAgICAgXCIpXSxudWxsLHQubm9ybWFsaXplT3B0aW9uRm9yU2xvdChlKSksdC5fdihcIiBcIiksdC5tdWx0aXBsZT9uKFwiYnV0dG9uXCIse3N0YXRpY0NsYXNzOlwidnNfX2Rlc2VsZWN0XCIsYXR0cnM6e2Rpc2FibGVkOnQuZGlzYWJsZWQsdHlwZTpcImJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOlwiRGVzZWxlY3Qgb3B0aW9uXCJ9LG9uOntjbGljazpmdW5jdGlvbihuKXtyZXR1cm4gdC5kZXNlbGVjdChlKX19fSxbbih0LmNoaWxkQ29tcG9uZW50cy5EZXNlbGVjdCx7dGFnOlwiY29tcG9uZW50XCJ9KV0sMSk6dC5fZSgpXSwyKV0se29wdGlvbjp0Lm5vcm1hbGl6ZU9wdGlvbkZvclNsb3QoZSksZGVzZWxlY3Q6dC5kZXNlbGVjdCxtdWx0aXBsZTp0Lm11bHRpcGxlLGRpc2FibGVkOnQuZGlzYWJsZWR9KX0pLHQuX3YoXCIgXCIpLHQuX3QoXCJzZWFyY2hcIixbbihcImlucHV0XCIsdC5fZyh0Ll9iKHtzdGF0aWNDbGFzczpcInZzX19zZWFyY2hcIn0sXCJpbnB1dFwiLHQuc2NvcGUuc2VhcmNoLmF0dHJpYnV0ZXMsITEpLHQuc2NvcGUuc2VhcmNoLmV2ZW50cykpXSxudWxsLHQuc2NvcGUuc2VhcmNoKV0sMiksdC5fdihcIiBcIiksbihcImRpdlwiLHtzdGF0aWNDbGFzczpcInZzX19hY3Rpb25zXCJ9LFtuKFwiYnV0dG9uXCIse2RpcmVjdGl2ZXM6W3tuYW1lOlwic2hvd1wiLHJhd05hbWU6XCJ2LXNob3dcIix2YWx1ZTp0LnNob3dDbGVhckJ1dHRvbixleHByZXNzaW9uOlwic2hvd0NsZWFyQnV0dG9uXCJ9XSxzdGF0aWNDbGFzczpcInZzX19jbGVhclwiLGF0dHJzOntkaXNhYmxlZDp0LmRpc2FibGVkLHR5cGU6XCJidXR0b25cIix0aXRsZTpcIkNsZWFyIHNlbGVjdGlvblwifSxvbjp7Y2xpY2s6dC5jbGVhclNlbGVjdGlvbn19LFtuKHQuY2hpbGRDb21wb25lbnRzLkRlc2VsZWN0LHt0YWc6XCJjb21wb25lbnRcIn0pXSwxKSx0Ll92KFwiIFwiKSx0Ll90KFwib3Blbi1pbmRpY2F0b3JcIixbdC5ub0Ryb3A/dC5fZSgpOm4odC5jaGlsZENvbXBvbmVudHMuT3BlbkluZGljYXRvcix0Ll9iKHt0YWc6XCJjb21wb25lbnRcIn0sXCJjb21wb25lbnRcIix0LnNjb3BlLm9wZW5JbmRpY2F0b3IuYXR0cmlidXRlcywhMSkpXSxudWxsLHQuc2NvcGUub3BlbkluZGljYXRvciksdC5fdihcIiBcIiksdC5fdChcInNwaW5uZXJcIixbbihcImRpdlwiLHtkaXJlY3RpdmVzOlt7bmFtZTpcInNob3dcIixyYXdOYW1lOlwidi1zaG93XCIsdmFsdWU6dC5tdXRhYmxlTG9hZGluZyxleHByZXNzaW9uOlwibXV0YWJsZUxvYWRpbmdcIn1dLHN0YXRpY0NsYXNzOlwidnNfX3NwaW5uZXJcIn0sW3QuX3YoXCJMb2FkaW5nLi4uXCIpXSldLG51bGwsdC5zY29wZS5zcGlubmVyKV0sMildKSx0Ll92KFwiIFwiKSxuKFwidHJhbnNpdGlvblwiLHthdHRyczp7bmFtZTp0LnRyYW5zaXRpb259fSxbdC5kcm9wZG93bk9wZW4/bihcInVsXCIse3JlZjpcImRyb3Bkb3duTWVudVwiLHN0YXRpY0NsYXNzOlwidnNfX2Ryb3Bkb3duLW1lbnVcIixhdHRyczp7cm9sZTpcImxpc3Rib3hcIn0sb246e21vdXNlZG93bjp0Lm9uTW91c2Vkb3duLG1vdXNldXA6dC5vbk1vdXNlVXB9fSxbdC5fbCh0LmZpbHRlcmVkT3B0aW9ucyxmdW5jdGlvbihlLG8pe3JldHVybiBuKFwibGlcIix7a2V5Om8sc3RhdGljQ2xhc3M6XCJ2c19fZHJvcGRvd24tb3B0aW9uXCIsY2xhc3M6e1widnNfX2Ryb3Bkb3duLW9wdGlvbi0tc2VsZWN0ZWRcIjp0LmlzT3B0aW9uU2VsZWN0ZWQoZSksXCJ2c19fZHJvcGRvd24tb3B0aW9uLS1oaWdobGlnaHRcIjpvPT09dC50eXBlQWhlYWRQb2ludGVyfSxhdHRyczp7cm9sZTpcIm9wdGlvblwifSxvbjp7bW91c2VvdmVyOmZ1bmN0aW9uKGUpe3QudHlwZUFoZWFkUG9pbnRlcj1vfSxtb3VzZWRvd246ZnVuY3Rpb24obil7cmV0dXJuIG4ucHJldmVudERlZmF1bHQoKSxuLnN0b3BQcm9wYWdhdGlvbigpLHQuc2VsZWN0KGUpfX19LFt0Ll90KFwib3B0aW9uXCIsW3QuX3YoXCJcXG4gICAgICAgICAgXCIrdC5fcyh0LmdldE9wdGlvbkxhYmVsKGUpKStcIlxcbiAgICAgICAgXCIpXSxudWxsLHQubm9ybWFsaXplT3B0aW9uRm9yU2xvdChlKSldLDIpfSksdC5fdihcIiBcIiksdC5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoP3QuX2UoKTpuKFwibGlcIix7c3RhdGljQ2xhc3M6XCJ2c19fbm8tb3B0aW9uc1wiLG9uOnttb3VzZWRvd246ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKX19fSxbdC5fdChcIm5vLW9wdGlvbnNcIixbdC5fdihcIlNvcnJ5LCBubyBtYXRjaGluZyBvcHRpb25zLlwiKV0pXSwyKV0sMik6dC5fZSgpXSldLDEpfSxbXSwhMSxudWxsLG51bGwsbnVsbCkuZXhwb3J0cyksZz17YWpheDpkLHBvaW50ZXI6cCxwb2ludGVyU2Nyb2xsOmh9O24uZChlLFwiVnVlU2VsZWN0XCIsZnVuY3Rpb24oKXtyZXR1cm4gbX0pLG4uZChlLFwibWl4aW5zXCIsZnVuY3Rpb24oKXtyZXR1cm4gZ30pO2UuZGVmYXVsdD1tfV0pfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12dWUtc2VsZWN0LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-select/dist/vue-select.js\n");

/***/ }),

/***/ "./node_modules/vue-simple-calendar/dist/CalendarView.umd.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vue-simple-calendar/dist/CalendarView.umd.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"07e3\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"0a49\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(\"9b43\");\nvar IObject = __webpack_require__(\"626a\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar asc = __webpack_require__(\"cd1c\");\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"0b21\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.2.2.28 Math.sign(x)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S, 'Math', { sign: __webpack_require__(\"96fb\") });\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"0fc9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"3a38\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"1169\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(\"2d95\");\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"11e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(\"52a7\");\nvar createDesc = __webpack_require__(\"4630\");\nvar toIObject = __webpack_require__(\"6821\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar has = __webpack_require__(\"69a8\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(\"9e1e\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"13ef\":\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(\"2350\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \".cv-wrapper{display:flex;flex-direction:column;flex-grow:1;height:100%;min-height:100%;max-height:100%;overflow-x:hidden;overflow-y:hidden}.cv-wrapper,.cv-wrapper div{box-sizing:border-box;line-height:1em;font-size:1em}.cv-header-days{flex-grow:0;flex-basis:auto;border-width:0 0 0 1px}.cv-header-day,.cv-header-days{display:flex;flex-shrink:0;flex-flow:row nowrap}.cv-header-day{flex-grow:1;flex-basis:0;align-items:center;justify-content:center;text-align:center;border-width:1px 1px 0 0}.cv-weeks{flex-shrink:1;flex-basis:auto;flex-flow:column nowrap;border-width:0 0 1px 1px}.cv-week,.cv-weeks{display:flex;flex-grow:1;overflow-y:auto;-ms-overflow-style:none}.cv-week{flex-flow:row nowrap;min-height:3em;border-width:0;position:relative;width:100%}.cv-day,.cv-week{flex-shrink:0;flex-basis:0}.cv-day{display:flex;flex-grow:1;position:relative;position:-webkit-sticky;position:sticky;top:0;border-width:1px 1px 0 0}.cv-day,_:-ms-lang(x){position:relative}/ .cv-day-number{position:absolute;right:0}.cv-event{position:absolute;white-space:nowrap;overflow:hidden;background-color:#f7f7f7;border-width:1px}.cv-wrapper.wrap-event-title-on-hover .cv-event:hover{white-space:normal;z-index:1}.cv-day,.cv-event,.cv-header-day,.cv-header-days,.cv-week,.cv-weeks{border-style:solid;border-color:#ddd}.cv-event .endTime:before{content:\\\"-\\\"}.cv-day-number,.cv-event,.cv-header-day{padding:.2em}.cv-day-number:before{margin-right:.5em}.cv-event.offset0{left:0}.cv-event.offset1{left:14.28571%}.cv-event.offset2{left:28.57143%}.cv-event.offset3{left:42.85714%}.cv-event.offset4{left:57.14286%}.cv-event.offset5{left:71.42857%}.cv-event.offset6{left:85.71429%}.cv-event.span1{width:calc(14.28571% - .05em)}.cv-event.span2{width:calc(28.57143% - .05em)}.cv-event.span3{width:calc(42.85714% - .05em);text-align:center}.cv-event.span4{width:calc(57.14286% - .05em);text-align:center}.cv-event.span5{width:calc(71.42857% - .05em);text-align:center}.cv-event.span6{width:calc(85.71429% - .05em);text-align:center}.cv-event.span7{width:calc(100% - .05em);text-align:center}.cv-week::-webkit-scrollbar,.cv-weeks::-webkit-scrollbar{width:0;background:transparent}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"1654\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $at = __webpack_require__(\"71c1\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(\"30f1\")(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"1691\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"1af6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = __webpack_require__(\"63b6\");\n\n$export($export.S, 'Array', { isArray: __webpack_require__(\"9003\") });\n\n\n/***/ }),\n\n/***/ \"1bc3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"f772\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"1df8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(\"63b6\");\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(\"ead6\").set });\n\n\n/***/ }),\n\n/***/ \"1ec9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"f772\");\nvar document = __webpack_require__(\"e53d\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"20fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $defineProperty = __webpack_require__(\"d9f6\");\nvar createDesc = __webpack_require__(\"aebd\");\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"2350\":\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"241e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"25eb\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"25b0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"1df8\");\nmodule.exports = __webpack_require__(\"584a\").Object.setPrototypeOf;\n\n\n/***/ }),\n\n/***/ \"25eb\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"28a5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isRegExp = __webpack_require__(\"aae3\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar speciesConstructor = __webpack_require__(\"ebd6\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar toLength = __webpack_require__(\"9def\");\nvar callRegExpExec = __webpack_require__(\"5f1b\");\nvar regexpExec = __webpack_require__(\"520a\");\nvar fails = __webpack_require__(\"79e5\");\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\n__webpack_require__(\"214f\")('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n    ''[$SPLIT](/.?/)[LENGTH]\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(this);\n      if (separator === undefined && limit === 0) return [];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) return $split.call(string, separator, limit);\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy[LAST_INDEX];\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n          lastLength = match[0][LENGTH];\n          lastLastIndex = lastIndex;\n          if (output[LENGTH] >= splitLimit) break;\n        }\n        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string[LENGTH]) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n    };\n  // Chakra, V8\n  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n    };\n  } else {\n    internalSplit = $split;\n  }\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = defined(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n});\n\n\n/***/ }),\n\n/***/ \"294c\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"29b5\":\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(\"2350\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \".cv-header{display:flex;flex:0 1 auto;flex-flow:row nowrap;align-items:center;min-height:2.5em;border-width:1px 1px 0 1px}.cv-header .periodLabel{display:flex;flex:1 1 auto;flex-flow:row nowrap;min-height:1.5em;line-height:1;font-size:1.5em}.cv-header,.cv-header button{border-style:solid;border-color:#ddd}.cv-header-nav,.cv-header .periodLabel{margin:.1em .6em}.cv-header-nav button,.cv-header .periodLabel{padding:.4em .6em}.cv-header button{box-sizing:border-box;line-height:1em;font-size:1em;border-width:1px}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(\"230e\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(\"fab2\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2f21\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(\"79e5\");\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n\n\n/***/ }),\n\n/***/ \"3024\":\n/***/ (function(module, exports) {\n\n// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n\n\n/***/ }),\n\n/***/ \"30f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"b8e3\");\nvar $export = __webpack_require__(\"63b6\");\nvar redefine = __webpack_require__(\"9138\");\nvar hide = __webpack_require__(\"35e8\");\nvar Iterators = __webpack_require__(\"481b\");\nvar $iterCreate = __webpack_require__(\"8f60\");\nvar setToStringTag = __webpack_require__(\"45f2\");\nvar getPrototypeOf = __webpack_require__(\"53e2\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n/***/ }),\n\n/***/ \"32a6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"241e\");\nvar $keys = __webpack_require__(\"c3a1\");\n\n__webpack_require__(\"ce7e\")('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ \"32fc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"e53d\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"335c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"6b4c\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"355d\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"35e8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"d9f6\");\nvar createDesc = __webpack_require__(\"aebd\");\nmodule.exports = __webpack_require__(\"8e60\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ \"36bd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n\nvar toObject = __webpack_require__(\"4bf8\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nvar toLength = __webpack_require__(\"9def\");\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = toLength(O.length);\n  var aLen = arguments.length;\n  var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n  var end = aLen > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"36c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"335c\");\nvar defined = __webpack_require__(\"25eb\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"3702\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(\"481b\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"3a38\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"40c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"6b4c\");\nvar TAG = __webpack_require__(\"5168\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"45f2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"d9f6\").f;\nvar has = __webpack_require__(\"07e3\");\nvar TAG = __webpack_require__(\"5168\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ \"481b\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"499e\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-style-loader/lib/listToStyles.js\n/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nfunction listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n\n// CONCATENATED MODULE: ./node_modules/vue-style-loader/lib/addStylesClient.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return addStylesClient; });\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\n\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nfunction addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"4d16\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"25b0\");\n\n/***/ }),\n\n/***/ \"4ee1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n\n\n/***/ }),\n\n/***/ \"50ed\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"5168\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"dbdb\")('wks');\nvar uid = __webpack_require__(\"62a0\");\nvar Symbol = __webpack_require__(\"e53d\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"5176\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"51b6\");\n\n/***/ }),\n\n/***/ \"51b6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"a3c3\");\nmodule.exports = __webpack_require__(\"584a\").Object.assign;\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"53e2\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"07e3\");\nvar toObject = __webpack_require__(\"241e\");\nvar IE_PROTO = __webpack_require__(\"5559\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"549b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ctx = __webpack_require__(\"d864\");\nvar $export = __webpack_require__(\"63b6\");\nvar toObject = __webpack_require__(\"241e\");\nvar call = __webpack_require__(\"b0dc\");\nvar isArrayIter = __webpack_require__(\"3702\");\nvar toLength = __webpack_require__(\"b447\");\nvar createProperty = __webpack_require__(\"20fd\");\nvar getIterFn = __webpack_require__(\"7cd6\");\n\n$export($export.S + $export.F * !__webpack_require__(\"4ee1\")(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"54a1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"6c1c\");\n__webpack_require__(\"1654\");\nmodule.exports = __webpack_require__(\"95d5\");\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5559\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"dbdb\")('keys');\nvar uid = __webpack_require__(\"62a0\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"55dd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $export = __webpack_require__(\"5ca1\");\nvar aFunction = __webpack_require__(\"d8e8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar fails = __webpack_require__(\"79e5\");\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !__webpack_require__(\"2f21\")($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n\n\n/***/ }),\n\n/***/ \"584a\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"5b4e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(\"36c3\");\nvar toLength = __webpack_require__(\"b447\");\nvar toAbsoluteIndex = __webpack_require__(\"0fc9\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5dbc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar setPrototypeOf = __webpack_require__(\"8b97\").set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"608f\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarViewHeader_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"84b4\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarViewHeader_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarViewHeader_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_style_loader_index_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarViewHeader_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"62a0\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"63b6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"e53d\");\nvar core = __webpack_require__(\"584a\");\nvar ctx = __webpack_require__(\"d864\");\nvar hide = __webpack_require__(\"35e8\");\nvar has = __webpack_require__(\"07e3\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"6b4c\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"6c1c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"c367\");\nvar global = __webpack_require__(\"e53d\");\nvar hide = __webpack_require__(\"35e8\");\nvar Iterators = __webpack_require__(\"481b\");\nvar TO_STRING_TAG = __webpack_require__(\"5168\")('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n\n\n/***/ }),\n\n/***/ \"6c7b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.P, 'Array', { fill: __webpack_require__(\"36bd\") });\n\n__webpack_require__(\"9c6c\")('fill');\n\n\n/***/ }),\n\n/***/ \"71c1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"3a38\");\nvar defined = __webpack_require__(\"25eb\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"733c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = __webpack_require__(\"63b6\");\nvar create = __webpack_require__(\"a159\");\nvar aFunction = __webpack_require__(\"79aa\");\nvar anObject = __webpack_require__(\"e4ae\");\nvar isObject = __webpack_require__(\"f772\");\nvar fails = __webpack_require__(\"294c\");\nvar bind = __webpack_require__(\"c189\");\nvar rConstruct = (__webpack_require__(\"e53d\").Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n  rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n  construct: function construct(Target, args /* , newTarget */) {\n    aFunction(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      $args.push.apply($args, args);\n      return new (bind.apply(Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : Object.prototype);\n    var result = Function.apply.call(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"7514\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = __webpack_require__(\"5ca1\");\nvar $find = __webpack_require__(\"0a49\")(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n__webpack_require__(\"9c6c\")(KEY);\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"774e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"d2d5\");\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"794b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"8e60\") && !__webpack_require__(\"294c\")(function () {\n  return Object.defineProperty(__webpack_require__(\"1ec9\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"79aa\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"7cd6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"40c3\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar Iterators = __webpack_require__(\"481b\");\nmodule.exports = __webpack_require__(\"584a\").getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"7e90\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"d9f6\");\nvar anObject = __webpack_require__(\"e4ae\");\nvar getKeys = __webpack_require__(\"c3a1\");\n\nmodule.exports = __webpack_require__(\"8e60\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"8436\":\n/***/ (function(module, exports) {\n\nmodule.exports = function () { /* empty */ };\n\n\n/***/ }),\n\n/***/ \"84b4\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(\"29b5\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(\"499e\").default\nvar update = add(\"ca2b0d7e\", content, true, {\"sourceMap\":false,\"shadowMode\":false});\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"8aae\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"32a6\");\nmodule.exports = __webpack_require__(\"584a\").Object.keys;\n\n\n/***/ }),\n\n/***/ \"8b97\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(\"d3f4\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = __webpack_require__(\"9b43\")(Function.call, __webpack_require__(\"11e9\").f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n\n\n/***/ }),\n\n/***/ \"8e60\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"294c\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"8f60\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"a159\");\nvar descriptor = __webpack_require__(\"aebd\");\nvar setToStringTag = __webpack_require__(\"45f2\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"35e8\")(IteratorPrototype, __webpack_require__(\"5168\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"9003\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(\"6b4c\");\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"9093\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar hiddenKeys = __webpack_require__(\"e11e\").concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"9138\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"35e8\");\n\n\n/***/ }),\n\n/***/ \"9306\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"c3a1\");\nvar gOPS = __webpack_require__(\"9aa9\");\nvar pIE = __webpack_require__(\"355d\");\nvar toObject = __webpack_require__(\"241e\");\nvar IObject = __webpack_require__(\"335c\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"294c\")(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"95d5\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"40c3\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar Iterators = __webpack_require__(\"481b\");\nmodule.exports = __webpack_require__(\"584a\").isIterable = function (it) {\n  var O = Object(it);\n  return O[ITERATOR] !== undefined\n    || '@@iterator' in O\n    // eslint-disable-next-line no-prototype-builtins\n    || Iterators.hasOwnProperty(classof(O));\n};\n\n\n/***/ }),\n\n/***/ \"96fb\":\n/***/ (function(module, exports) {\n\n// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n  // eslint-disable-next-line no-self-compare\n  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n\n\n/***/ }),\n\n/***/ \"9aa9\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a159\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"e4ae\");\nvar dPs = __webpack_require__(\"7e90\");\nvar enumBugKeys = __webpack_require__(\"1691\");\nvar IE_PROTO = __webpack_require__(\"5559\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(\"1ec9\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(\"32fc\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"a3c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"63b6\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"9306\") });\n\n\n/***/ }),\n\n/***/ \"a45d\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarView_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"c76b\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarView_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarView_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_style_loader_index_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarView_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n/***/ }),\n\n/***/ \"a4bb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"8aae\");\n\n/***/ }),\n\n/***/ \"a5b2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"aa28\");\n\n/***/ }),\n\n/***/ \"a745\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"f410\");\n\n/***/ }),\n\n/***/ \"aa28\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"733c\");\nmodule.exports = __webpack_require__(\"584a\").Reflect.construct;\n\n\n/***/ }),\n\n/***/ \"aa77\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(\"5ca1\");\nvar defined = __webpack_require__(\"be13\");\nvar fails = __webpack_require__(\"79e5\");\nvar spaces = __webpack_require__(\"fdef\");\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"aebd\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"b0dc\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(\"e4ae\");\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"b447\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"3a38\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"b8e3\":\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"bf0b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(\"355d\");\nvar createDesc = __webpack_require__(\"aebd\");\nvar toIObject = __webpack_require__(\"36c3\");\nvar toPrimitive = __webpack_require__(\"1bc3\");\nvar has = __webpack_require__(\"07e3\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"794b\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(\"8e60\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"c189\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar aFunction = __webpack_require__(\"79aa\");\nvar isObject = __webpack_require__(\"f772\");\nvar invoke = __webpack_require__(\"3024\");\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n  if (!(len in factories)) {\n    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n    // eslint-disable-next-line no-new-func\n    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n  } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n  var fn = aFunction(this);\n  var partArgs = arraySlice.call(arguments, 1);\n  var bound = function (/* args... */) {\n    var args = partArgs.concat(arraySlice.call(arguments));\n    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n  };\n  if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n  return bound;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"c367\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"8436\");\nvar step = __webpack_require__(\"50ed\");\nvar Iterators = __webpack_require__(\"481b\");\nvar toIObject = __webpack_require__(\"36c3\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"30f1\")(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"c3a1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"e6f3\");\nvar enumBugKeys = __webpack_require__(\"1691\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"c5f6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(\"7726\");\nvar has = __webpack_require__(\"69a8\");\nvar cof = __webpack_require__(\"2d95\");\nvar inheritIfRequired = __webpack_require__(\"5dbc\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar fails = __webpack_require__(\"79e5\");\nvar gOPN = __webpack_require__(\"9093\").f;\nvar gOPD = __webpack_require__(\"11e9\").f;\nvar dP = __webpack_require__(\"86cc\").f;\nvar $trim = __webpack_require__(\"aa77\").trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(__webpack_require__(\"2aeb\")(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = __webpack_require__(\"9e1e\") ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  __webpack_require__(\"2aba\")(global, NUMBER, $Number);\n}\n\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n  return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c76b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(\"13ef\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(\"499e\").default\nvar update = add(\"9958a33e\", content, true, {\"sourceMap\":false,\"shadowMode\":false});\n\n/***/ }),\n\n/***/ \"c8bb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"54a1\");\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"cd1c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = __webpack_require__(\"e853\");\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"ce7e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"63b6\");\nvar core = __webpack_require__(\"584a\");\nvar fails = __webpack_require__(\"294c\");\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"d2d5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"1654\");\n__webpack_require__(\"549b\");\nmodule.exports = __webpack_require__(\"584a\").Array.from;\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d864\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"79aa\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"d9f6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"e4ae\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"794b\");\nvar toPrimitive = __webpack_require__(\"1bc3\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"8e60\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"dbdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"584a\");\nvar global = __webpack_require__(\"e53d\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(\"b8e3\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"e4ae\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"f772\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"e53d\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"e6f3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"07e3\");\nvar toIObject = __webpack_require__(\"36c3\");\nvar arrayIndexOf = __webpack_require__(\"5b4e\")(false);\nvar IE_PROTO = __webpack_require__(\"5559\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"e853\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar isArray = __webpack_require__(\"1169\");\nvar SPECIES = __webpack_require__(\"2b4c\")('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n\n\n/***/ }),\n\n/***/ \"ead6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(\"f772\");\nvar anObject = __webpack_require__(\"e4ae\");\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = __webpack_require__(\"d864\")(Function.call, __webpack_require__(\"bf0b\").f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n\n\n/***/ }),\n\n/***/ \"ebd6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(\"cb7c\");\nvar aFunction = __webpack_require__(\"d8e8\");\nvar SPECIES = __webpack_require__(\"2b4c\")('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n/***/ }),\n\n/***/ \"f410\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"1af6\");\nmodule.exports = __webpack_require__(\"584a\").Array.isArray;\n\n\n/***/ }),\n\n/***/ \"f772\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"fae3\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var setPublicPath_i\n  if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n    __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"d66399fa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/CalendarView.vue?vue&type=template&id=6407b870&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[\n\t\t'cv-wrapper',\n\t\t'locale-' + _vm.languageCode(_vm.displayLocale),\n\t\t'locale-' + _vm.displayLocale,\n\t\t'y' + _vm.periodStart.getFullYear(),\n\t\t'm' + _vm.paddedMonth(_vm.periodStart),\n\t\t'period-' + _vm.displayPeriodUom,\n\t\t'periodCount-' + _vm.displayPeriodCount,\n\t\t{\n\t\t\tpast: _vm.isPastMonth(_vm.periodStart),\n\t\t\tfuture: _vm.isFutureMonth(_vm.periodStart),\n\t\t\tnoIntl: !_vm.supportsIntl,\n\t\t} ]},[_vm._t(\"header\",null,{\"headerProps\":_vm.headerProps}),_c('div',{staticClass:\"cv-header-days\"},[_vm._l((_vm.weekdayNames),function(label,index){return [_vm._t(\"dayHeader\",[_c('div',{key:_vm.getColumnDOWClass(index),staticClass:\"cv-header-day\",class:_vm.getColumnDOWClass(index)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(label)+\"\\n\\t\\t\\t\\t\")])],{\"index\":_vm.getColumnDOWClass(index),\"label\":label})]})],2),_c('div',{staticClass:\"cv-weeks\"},_vm._l((_vm.weeksOfPeriod),function(weekStart,weekIndex){return _c('div',{key:(weekIndex + \"-week\"),class:[\n\t\t\t\t'cv-week',\n\t\t\t\t'week' + (weekIndex + 1),\n\t\t\t\t'ws' + _vm.isoYearMonthDay(weekStart) ]},[_vm._l((_vm.daysOfWeek(weekStart)),function(day,dayIndex){return _c('div',{key:_vm.getColumnDOWClass(dayIndex),class:[\n\t\t\t\t\t'cv-day',\n\t\t\t\t\t_vm.getColumnDOWClass(dayIndex),\n\t\t\t\t\t'd' + _vm.isoYearMonthDay(day),\n\t\t\t\t\t'd' + _vm.isoMonthDay(day),\n\t\t\t\t\t'd' + _vm.paddedDay(day),\n\t\t\t\t\t'instance' + _vm.instanceOfMonth(day),\n\t\t\t\t\t{\n\t\t\t\t\t\ttoday: _vm.isSameDate(day, _vm.today()),\n\t\t\t\t\t\toutsideOfMonth: !_vm.isSameMonth(day, _vm.defaultedShowDate),\n\t\t\t\t\t\tpast: _vm.isInPast(day),\n\t\t\t\t\t\tfuture: _vm.isInFuture(day),\n\t\t\t\t\t\tlast: _vm.isLastDayOfMonth(day),\n\t\t\t\t\t\tlastInstance: _vm.isLastInstanceOfMonth(day),\n\t\t\t\t\t} ].concat( ((_vm.dateClasses && _vm.dateClasses[_vm.isoYearMonthDay(day)]) || null) ),on:{\"click\":function($event){return _vm.onClickDay(day)},\"drop\":function($event){$event.preventDefault();return _vm.onDrop(day, $event)},\"dragover\":function($event){$event.preventDefault();return _vm.onDragOver(day)},\"dragenter\":function($event){$event.preventDefault();return _vm.onDragEnter(day, $event)},\"dragleave\":function($event){$event.preventDefault();return _vm.onDragLeave(day, $event)}}},[_c('div',{staticClass:\"cv-day-number\"},[_vm._v(_vm._s(day.getDate()))]),_vm._t(\"dayContent\",null,{\"day\":day})],2)}),_vm._l((_vm.getWeekEvents(weekStart)),function(e){return [_vm._t(\"event\",[_c('div',{key:e.id,staticClass:\"cv-event\",class:e.classes,style:((\"top:\" + (_vm.getEventTop(e)) + \";\" + (e.originalEvent.style))),attrs:{\"draggable\":_vm.enableDragDrop,\"title\":e.title},domProps:{\"innerHTML\":_vm._s(_vm.getEventTitle(e))},on:{\"dragstart\":function($event){return _vm.onDragStart(e, $event)},\"mouseenter\":function($event){return _vm.onMouseEnter(e)},\"mouseleave\":_vm.onMouseLeave,\"click\":function($event){$event.stopPropagation();return _vm.onClickEvent(e)}}})],{\"event\":e,\"weekStartDate\":weekStart,\"top\":_vm.getEventTop(e)})]})],2)}),0)],2)}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/CalendarView.vue?vue&type=template&id=6407b870&\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js\nvar is_array = __webpack_require__(\"a745\");\nvar is_array_default = /*#__PURE__*/__webpack_require__.n(is_array);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n  if (is_array_default()(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/from.js\nvar from = __webpack_require__(\"774e\");\nvar from_default = /*#__PURE__*/__webpack_require__.n(from);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/is-iterable.js\nvar is_iterable = __webpack_require__(\"c8bb\");\nvar is_iterable_default = /*#__PURE__*/__webpack_require__.n(is_iterable);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArray.js\n\n\nfunction _iterableToArray(iter) {\n  if (is_iterable_default()(Object(iter)) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return from_default()(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/toConsumableArray.js\n\n\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/assign.js\nvar object_assign = __webpack_require__(\"5176\");\nvar assign_default = /*#__PURE__*/__webpack_require__.n(object_assign);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.sort.js\nvar es6_array_sort = __webpack_require__(\"55dd\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.math.sign.js\nvar es6_math_sign = __webpack_require__(\"0b21\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.fill.js\nvar es6_array_fill = __webpack_require__(\"6c7b\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js\nvar es6_number_constructor = __webpack_require__(\"c5f6\");\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js\nvar construct = __webpack_require__(\"a5b2\");\nvar construct_default = /*#__PURE__*/__webpack_require__.n(construct);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js\nvar set_prototype_of = __webpack_require__(\"4d16\");\nvar set_prototype_of_default = /*#__PURE__*/__webpack_require__.n(set_prototype_of);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/setPrototypeOf.js\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = set_prototype_of_default.a || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/construct.js\n\n\n\nfunction isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !construct_default.a) return false;\n  if (construct_default.a.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(construct_default()(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction construct_construct(Parent, args, Class) {\n  if (isNativeReflectConstruct()) {\n    construct_construct = construct_default.a;\n  } else {\n    construct_construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return construct_construct.apply(null, arguments);\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.split.js\nvar es6_regexp_split = __webpack_require__(\"28a5\");\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/keys.js\nvar keys = __webpack_require__(\"a4bb\");\nvar keys_default = /*#__PURE__*/__webpack_require__.n(keys);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.find.js\nvar es6_array_find = __webpack_require__(\"7514\");\n\n// CONCATENATED MODULE: ./src/components/CalendarMathMixin.js\n\n\n\n\n\n\n\n\n\n/*\n***********************************************************\nThis mix-in includes a computed properties and methods that\nare useful in displaying a calendar. It has no state.\n***********************************************************\n*/\n/* harmony default export */ var CalendarMathMixin = ({\n  methods: {\n    // ******************************\n    // Series\n    // ******************************\n    today: function today() {\n      return this.dateOnly(new Date());\n    },\n    beginningOfPeriod: function beginningOfPeriod(d, periodUom, startDow) {\n      switch (periodUom) {\n        case \"year\":\n          return new Date(d.getFullYear(), 0);\n\n        case \"month\":\n          return new Date(d.getFullYear(), d.getMonth());\n\n        case \"week\":\n          return this.beginningOfWeek(d, startDow);\n\n        default:\n          return null;\n      }\n    },\n    daysOfWeek: function daysOfWeek(weekStart) {\n      var _this = this;\n\n      return Array(7).fill().map(function (_, i) {\n        return _this.addDays(weekStart, i);\n      });\n    },\n    // ********************************************\n    // Date transforms that retain time of day\n    // ********************************************\n    addDays: function addDays(d, days) {\n      return new Date(d.getFullYear(), d.getMonth(), d.getDate() + days, d.getHours(), d.getMinutes(), d.getSeconds());\n    },\n    beginningOfWeek: function beginningOfWeek(d, startDow) {\n      return this.addDays(d, (startDow - d.getDay() - 7) % -7);\n    },\n    endOfWeek: function endOfWeek(d, startDow) {\n      return this.addDays(this.beginningOfWeek(d, startDow), 7);\n    },\n    // ********************************************\n    // Date transforms that ignore/wipe time of day\n    // ********************************************\n    beginningOfMonth: function beginningOfMonth(d) {\n      return new Date(d.getFullYear(), d.getMonth());\n    },\n    instanceOfMonth: function instanceOfMonth(d) {\n      return Math.ceil(d.getDate() / 7);\n    },\n    // This function increments a date by a given number of date units. Accepted units are: year, month, week. For year and month,\n    // the day of the month is unchanged. This could cause an unexpected result if the units are \"month\" and the starting day is\n    // higher than the number of days in the destination month. The count can be positive or negative.\n    incrementPeriod: function incrementPeriod(d, uom, count) {\n      return new Date(d.getFullYear() + (uom == \"year\" ? count : 0), d.getMonth() + (uom == \"month\" ? count : 0), d.getDate() + (uom == \"week\" ? count * 7 : 0));\n    },\n    // ******************************\n    // Date formatting\n    // ******************************\n    paddedMonth: function paddedMonth(d) {\n      return (\"0\" + String(d.getMonth() + 1)).slice(-2);\n    },\n    paddedDay: function paddedDay(d) {\n      return (\"0\" + String(d.getDate())).slice(-2);\n    },\n    isoYearMonth: function isoYearMonth(d) {\n      return d.getFullYear() + \"-\" + this.paddedMonth(d);\n    },\n    isoYearMonthDay: function isoYearMonthDay(d) {\n      return this.isoYearMonth(d) + \"-\" + this.paddedDay(d);\n    },\n    isoMonthDay: function isoMonthDay(d) {\n      return this.paddedMonth(d) + \"-\" + this.paddedDay(d);\n    },\n    formattedTime: function formattedTime(d, locale, options) {\n      // Assume midnight = \"all day\" or indeterminate time\n      if (d.getHours() === 0 && d.getMinutes() === 0 && d.getSeconds() === 0) return \"\"; // If Intl is not supported, send back the 24-hour, zero-padded\n      // hours and minutes, expressed as local time.\n\n      if (!this.supportsIntl()) {\n        var ms = new Date().getTimezoneOffset() * 60000; // TZ offset in milliseconds\n\n        return new Date(d - ms).toISOString().slice(11, 16);\n      }\n\n      return d.toLocaleTimeString(locale, options);\n    },\n    // Formats a date period in long English style. Examples supported:\n    // May 2018\n    // May – June 2018\n    // December 2018 – January 2019\n    // May 6 – 26, 2018\n    // May 13 – June 2, 2018\n    // December 16, 2018 – January 5, 2019\n    formattedPeriod: function formattedPeriod(startDate, endDate, periodUom, monthNames) {\n      var singleYear = startDate.getFullYear() === endDate.getFullYear();\n      var singleMonth = this.isSameMonth(startDate, endDate);\n      var isYear = periodUom === \"year\";\n      var isMonth = periodUom === \"month\";\n      var isWeek = !isYear && !isMonth;\n      var s = [];\n      s.push(monthNames[startDate.getMonth()]);\n\n      if (isWeek) {\n        s.push(\" \");\n        s.push(startDate.getDate());\n      }\n\n      if (!singleYear) {\n        s.push(isWeek ? \", \" : \" \");\n        s.push(startDate.getFullYear());\n      }\n\n      if (!singleMonth || !singleYear) {\n        s.push(\" \\u2013 \");\n\n        if (!singleMonth) {\n          s.push(monthNames[endDate.getMonth()]);\n        }\n\n        if (isWeek) s.push(\" \");\n      } else if (isWeek) {\n        s.push(\" \\u2013 \");\n      }\n\n      if (isWeek) {\n        s.push(endDate.getDate());\n        s.push(\", \");\n      } else {\n        s.push(\" \");\n      }\n\n      s.push(endDate.getFullYear());\n      return s.join(\"\");\n    },\n    // ******************************\n    // Date comparisons\n    // ******************************\n    // Number of whole days between two dates. If present, time of day is ignored.\n    // Have to use setUTCHours to ensure that DST changes between these dates don't\n    // result in a fractional answer.\n    dayDiff: function dayDiff(d1, d2) {\n      var endDate = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate()),\n          startDate = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate());\n      endDate.setUTCHours(0, 0, 0, 0);\n      startDate.setUTCHours(0, 0, 0, 0);\n      return (endDate - startDate) / 86400000;\n    },\n    isSameDate: function isSameDate(d1, d2) {\n      // http://stackoverflow.com/questions/492994/compare-two-dates-with-javascript\n      return this.dayDiff(d1, d2) === 0;\n    },\n    isSameDateTime: function isSameDateTime(d1, d2) {\n      return d1.getTime() === d2.getTime();\n    },\n    isSameMonth: function isSameMonth(d1, d2) {\n      return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth();\n    },\n    isPastMonth: function isPastMonth(d) {\n      return this.beginningOfMonth(d) < this.beginningOfMonth(this.today());\n    },\n    isFutureMonth: function isFutureMonth(d) {\n      return this.beginningOfMonth(d) > this.beginningOfMonth(this.today());\n    },\n    isInFuture: function isInFuture(d) {\n      return this.dateOnly(d) > this.today();\n    },\n    isInPast: function isInPast(d) {\n      return this.dateOnly(d) < this.today();\n    },\n    isLastInstanceOfMonth: function isLastInstanceOfMonth(d) {\n      return d.getMonth() !== this.addDays(d, 7).getMonth();\n    },\n    isLastDayOfMonth: function isLastDayOfMonth(d) {\n      return d.getMonth() !== this.addDays(d, 1).getMonth();\n    },\n    isSelectedDay: function isSelectedDay(d) {\n      var _this2 = this;\n\n      var day = keys_default()(this.dateClasses).find(function (day) {\n        return _this2.isSameDate(_this2.fromIsoStringToLocalDate(day), d);\n      });\n\n      return day ? this.dateClasses[day] : undefined;\n    },\n    // Courtesy https://stackoverflow.com/questions/33908299/javascript-parse-a-string-to-date-as-local-time-zone/42626876#42626876\n    fromIsoStringToLocalDate: function fromIsoStringToLocalDate(s) {\n      var ds = s.split(/\\D/).map(function (s) {\n        return Number(s);\n      });\n      ds[1]--; // adjust month\n\n      return construct_construct(Date, _toConsumableArray(ds));\n    },\n    toLocalDate: function toLocalDate(d) {\n      return typeof d === \"string\" ? this.fromIsoStringToLocalDate(d) : new Date(d);\n    },\n    dateOnly: function dateOnly(d) {\n      // Always use a copy, setHours mutates argument\n      var d2 = new Date(d);\n      d2.setHours(0, 0, 0, 0);\n      return d2;\n    },\n    // ******************************\n    // Localization\n    // ******************************\n    languageCode: function languageCode(l) {\n      return l.substring(0, 2);\n    },\n    supportsIntl: function supportsIntl() {\n      return typeof Intl !== \"undefined\";\n    },\n    getFormattedMonthNames: function getFormattedMonthNames(locale, format) {\n      // Use the provided locale and format if possible to obtain the name of the month\n      if (!this.supportsIntl()) return Array(12).fill(\"\");\n      var formatter = new Intl.DateTimeFormat(locale, {\n        month: format\n      }); // The year doesn't matter, using 2017 for convenience\n\n      return Array(12).fill().map(function (_, i) {\n        return formatter.format(new Date(2017, i, 1));\n      });\n    },\n    getFormattedWeekdayNames: function getFormattedWeekdayNames(locale, format, startingDayOfWeek) {\n      // Use the provided locale and format if possible to obtain the name of the days of the week\n      if (!this.supportsIntl()) return Array(7).fill(\"\");\n      var formatter = new Intl.DateTimeFormat(locale, {\n        weekday: format\n      }); // 2017 starts on Sunday, so use it as the baseline date\n\n      return Array(7).fill().map(function (_, i) {\n        return formatter.format(new Date(2017, 0, (i + 1 + startingDayOfWeek) % 7));\n      });\n    },\n    getDefaultBrowserLocale: function getDefaultBrowserLocale() {\n      // If not running in the browser, cannot determine a default, return the code for unknown (blank is invalid)\n      if (typeof navigator === \"undefined\") return \"unk\"; // Return the browser's language setting, implementation is browser-specific\n\n      return (navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language || navigator.browserLanguage).toLowerCase();\n    },\n    // ******************************\n    // Events\n    // ******************************\n    normalizeEvent: function normalizeEvent(event, isHovered) {\n      // Classes may be a string, an array, or null. Normalize to an array\n      var eventClasses = event.classes ? is_array_default()(event.classes) ? _toConsumableArray(event.classes) : [event.classes] : []; // Provides support for pseudo-hover of entire event when one part of it is hovered\n\n      if (isHovered) eventClasses.push(\"isHovered\");\n      return {\n        originalEvent: event,\n        startDate: this.toLocalDate(event.startDate),\n        // For an event without an end date, the end date is the start date\n        endDate: this.toLocalDate(event.endDate || event.startDate),\n        classes: eventClasses,\n        // Events without a title are untitled\n        title: event.title || \"Untitled\",\n        // An ID is *required*. Auto-generating leads to weird bugs because these are used as keys and passed in events\n        id: event.id\n      };\n    }\n  }\n});\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"d66399fa-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/CalendarViewHeader.vue?vue&type=template&id=1b0c0f08&\nvar CalendarViewHeadervue_type_template_id_1b0c0f08_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cv-header\"},[_c('div',{staticClass:\"cv-header-nav\"},[_c('button',{staticClass:\"previousYear\",attrs:{\"disabled\":!_vm.headerProps.previousYear},on:{\"click\":function($event){$event.preventDefault();return _vm.onInput(_vm.headerProps.previousYear)}}},[_vm._v(\"\\n\\t\\t\\t<<\\n\\t\\t\")]),_c('button',{staticClass:\"previousPeriod\",attrs:{\"disabled\":!_vm.headerProps.previousPeriod},on:{\"click\":function($event){$event.preventDefault();return _vm.onInput(_vm.headerProps.previousPeriod)}}},[_vm._v(\"\\n\\t\\t\\t<\\n\\t\\t\")]),_c('button',{staticClass:\"currentPeriod\",on:{\"click\":function($event){$event.preventDefault();return _vm.onInput(_vm.headerProps.currentPeriod)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headerProps.currentPeriodLabel)+\"\\n\\t\\t\")]),_c('button',{staticClass:\"nextPeriod\",attrs:{\"disabled\":!_vm.headerProps.nextPeriod},on:{\"click\":function($event){$event.preventDefault();return _vm.onInput(_vm.headerProps.nextPeriod)}}},[_vm._v(\"\\n\\t\\t\\t>\\n\\t\\t\")]),_c('button',{staticClass:\"nextYear\",attrs:{\"disabled\":!_vm.headerProps.nextYear},on:{\"click\":function($event){$event.preventDefault();return _vm.onInput(_vm.headerProps.nextYear)}}},[_vm._v(\"\\n\\t\\t\\t>>\\n\\t\\t\")])]),_c('div',{staticClass:\"periodLabel\"},[_vm._t(\"label\",[_vm._v(_vm._s(_vm.headerProps.periodLabel))])],2)])}\nvar CalendarViewHeadervue_type_template_id_1b0c0f08_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/CalendarViewHeader.vue?vue&type=template&id=1b0c0f08&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/CalendarViewHeader.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var CalendarViewHeadervue_type_script_lang_js_ = ({\n  name: \"CalendarViewHeader\",\n  props: {\n    headerProps: {\n      type: Object,\n      required: true\n    }\n  },\n  methods: {\n    onInput: function onInput(d) {\n      this.$emit(\"input\", d);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/CalendarViewHeader.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_CalendarViewHeadervue_type_script_lang_js_ = (CalendarViewHeadervue_type_script_lang_js_); \n// EXTERNAL MODULE: ./src/components/CalendarViewHeader.vue?vue&type=style&index=0&lang=css&\nvar CalendarViewHeadervue_type_style_index_0_lang_css_ = __webpack_require__(\"608f\");\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n\n// CONCATENATED MODULE: ./src/components/CalendarViewHeader.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n  components_CalendarViewHeadervue_type_script_lang_js_,\n  CalendarViewHeadervue_type_template_id_1b0c0f08_render,\n  CalendarViewHeadervue_type_template_id_1b0c0f08_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* harmony default export */ var CalendarViewHeader = (component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/CalendarView.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var CalendarViewvue_type_script_lang_js_ = ({\n  name: \"CalendarView\",\n  components: {\n    CalendarViewHeader: CalendarViewHeader\n  },\n  mixins: [CalendarMathMixin],\n  props: {\n    showDate: {\n      type: Date,\n      default: undefined\n    },\n    displayPeriodUom: {\n      type: String,\n      default: \"month\"\n    },\n    displayPeriodCount: {\n      type: Number,\n      default: 1\n    },\n    locale: {\n      type: String,\n      default: undefined\n    },\n    monthNameFormat: {\n      type: String,\n      default: \"long\"\n    },\n    weekdayNameFormat: {\n      type: String,\n      default: \"short\"\n    },\n    showEventTimes: {\n      type: Boolean,\n      default: false\n    },\n    timeFormatOptions: {\n      type: Object,\n      default: function _default() {}\n    },\n    disablePast: {\n      type: Boolean,\n      default: false\n    },\n    disableFuture: {\n      type: Boolean,\n      default: false\n    },\n    enableDragDrop: {\n      type: Boolean,\n      default: false\n    },\n    startingDayOfWeek: {\n      type: Number,\n      default: 0\n    },\n    events: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    dateClasses: {\n      type: Object,\n      default: function _default() {}\n    },\n    eventTop: {\n      type: String,\n      default: \"1.4em\"\n    },\n    eventContentHeight: {\n      type: String,\n      default: \"1.4em\"\n    },\n    eventBorderHeight: {\n      type: String,\n      default: \"2px\"\n    },\n    periodChangedCallback: {\n      type: Function,\n      default: undefined\n    },\n    currentPeriodLabel: {\n      type: String,\n      default: \"\"\n    },\n    currentPeriodLabelIcons: {\n      type: String,\n      default: \"⇤-⇥\"\n    }\n  },\n  data: function data() {\n    return {\n      currentDragEvent: null,\n      currentHoveredEventId: undefined\n    };\n  },\n  computed: {\n    /*\n    Props cannot default to computed/method returns, so create defaulted version of this\n    property and use it rather than the bare prop (Vue Issue #6013).\n    */\n    displayLocale: function displayLocale() {\n      return this.locale || this.getDefaultBrowserLocale();\n    },\n\n    /*\n    ShowDate, but defaulted to today. Needed both for periodStart below and for the\n    \"outside of month\" class. Any time component passed as part of showDate is discarded.\n    */\n    defaultedShowDate: function defaultedShowDate() {\n      if (this.showDate) return this.dateOnly(this.showDate);\n      return this.today();\n    },\n\n    /*\n    Given the showDate, defaulted to today, computes the beginning and end of the period\n    that the date falls within.\n    */\n    periodStart: function periodStart() {\n      return this.beginningOfPeriod(this.defaultedShowDate, this.displayPeriodUom, this.startingDayOfWeek);\n    },\n    periodEnd: function periodEnd() {\n      return this.addDays(this.incrementPeriod(this.periodStart, this.displayPeriodUom, this.displayPeriodCount), -1);\n    },\n\n    /*\n    For month and year views, the first and last dates displayed in the grid may not\n    be the same as the intended period, since the period may not start and stop evenly\n    on the starting day of the week.\n    */\n    displayFirstDate: function displayFirstDate() {\n      return this.beginningOfWeek(this.periodStart, this.startingDayOfWeek);\n    },\n    displayLastDate: function displayLastDate() {\n      return this.endOfWeek(this.periodEnd, this.startingDayOfWeek);\n    },\n\n    /*\n    Create an array of dates, where each date represents the beginning of a week that\n    should be rendered in the view for the current period.\n    */\n    weeksOfPeriod: function weeksOfPeriod() {\n      var _this = this;\n\n      // Returns an array of object representing the date of the beginning of each week\n      // included in the view.\n      var numWeeks = Math.floor((this.dayDiff(this.displayFirstDate, this.displayLastDate) + 1) / 7);\n      return Array(numWeeks).fill().map(function (_, i) {\n        return _this.addDays(_this.displayFirstDate, i * 7);\n      });\n    },\n    // Cache the names based on current locale and format settings\n    monthNames: function monthNames() {\n      return this.getFormattedMonthNames(this.displayLocale, this.monthNameFormat);\n    },\n    weekdayNames: function weekdayNames() {\n      return this.getFormattedWeekdayNames(this.displayLocale, this.weekdayNameFormat, this.startingDayOfWeek);\n    },\n    // Ensure all event properties have suitable default\n    fixedEvents: function fixedEvents() {\n      var self = this;\n      return this.events.map(function (e) {\n        return self.normalizeEvent(e, self.currentHoveredEventId && e.id === self.currentHoveredEventId);\n      });\n    },\n    // Creates the HTML to render the date range for the calendar header.\n    periodLabel: function periodLabel() {\n      return this.formattedPeriod(this.periodStart, this.periodEnd, this.displayPeriodUom, this.monthNames);\n    },\n    // Period that today's date sits within\n    currentPeriodStart: function currentPeriodStart() {\n      return this.beginningOfPeriod(this.today(), this.displayPeriodUom, this.startingDayOfWeek);\n    },\n    currentPeriodEnd: function currentPeriodEnd() {\n      return this.addDays(this.incrementPeriod(this.currentPeriodStart, this.displayPeriodUom, this.displayPeriodCount), -1);\n    },\n    currentPeriodLabelFinal: function currentPeriodLabelFinal() {\n      var c = this.currentPeriodStart;\n      var s = this.periodStart;\n      if (!this.currentPeriodLabel) return this.formattedPeriod(c, this.currentPeriodEnd, this.displayPeriodUom, this.monthNames);\n      if (this.currentPeriodLabel === \"icons\") return this.currentPeriodLabelIcons[Math.sign(c - s) + 1];\n      return this.currentPeriodLabel;\n    },\n    headerProps: function headerProps() {\n      return {\n        // Dates for UI navigation\n        previousYear: this.getIncrementedPeriod(-12),\n        previousPeriod: this.getIncrementedPeriod(-1),\n        nextPeriod: this.getIncrementedPeriod(1),\n        previousFullPeriod: this.getIncrementedPeriod(-this.displayPeriodCount),\n        nextFullPeriod: this.getIncrementedPeriod(this.displayPeriodCount),\n        nextYear: this.getIncrementedPeriod(12),\n        currentPeriod: this.currentPeriodStart,\n        currentPeriodLabel: this.currentPeriodLabelFinal,\n        // Dates for header display\n        periodStart: this.periodStart,\n        periodEnd: this.periodEnd,\n        // Extra information that could be useful to a custom header\n        displayLocale: this.displayLocale,\n        displayFirstDate: this.displayFirstDate,\n        displayLastDate: this.displayLastDate,\n        monthNames: this.monthNames,\n        fixedEvents: this.fixedEvents,\n        periodLabel: this.periodLabel\n      };\n    },\n    periodRange: function periodRange() {\n      return {\n        periodStart: this.periodStart,\n        periodEnd: this.periodEnd,\n        displayFirstDate: this.displayFirstDate,\n        displayLastDate: this.displayLastDate\n      };\n    }\n  },\n  watch: {\n    periodRange: {\n      immediate: true,\n      handler: function handler(newVal) {\n        if (this.periodChangedCallback) {\n          this.$emit(\"period-changed\");\n          this.periodChangedCallback(newVal, \"watch\");\n        }\n      }\n    }\n  },\n  methods: {\n    // ******************************\n    // UI Events\n    // ******************************\n    onClickDay: function onClickDay(day) {\n      if (this.disablePast && this.isInPast(day)) return;\n      if (this.disableFuture && this.isInFuture(day)) return;\n      this.$emit(\"click-date\", day);\n    },\n    onClickEvent: function onClickEvent(e) {\n      this.$emit(\"click-event\", e);\n    },\n\n    /*\n    The day name header needs to know the dow for class assignment, and this value should\n    not change based on startingDayOfWeek (i.e., Sunday is always 0). This function\n    computes the dow for a given day index.\n    */\n    getColumnDOWClass: function getColumnDOWClass(dayIndex) {\n      return \"dow\" + (dayIndex + this.startingDayOfWeek) % 7;\n    },\n    // ******************************\n    // Date Periods\n    // ******************************\n\n    /*\n    Returns a date for the current display date moved forward or backward by a given\n    number of the current display units. Returns null if said move would result in a\n    disallowed display period.\n    */\n    getIncrementedPeriod: function getIncrementedPeriod(count) {\n      var newStartDate = this.incrementPeriod(this.periodStart, this.displayPeriodUom, count);\n      var newEndDate = this.incrementPeriod(newStartDate, this.displayPeriodUom, this.displayPeriodCount);\n      if (this.disablePast && newEndDate <= this.today()) return null;\n      if (this.disableFuture && newStartDate > this.today()) return null;\n      return newStartDate;\n    },\n    // ******************************\n    // Hover events (#95)\n    // ******************************\n    onMouseEnter: function onMouseEnter(calendarEvent) {\n      this.currentHoveredEventId = calendarEvent.id;\n    },\n    onMouseLeave: function onMouseLeave() {\n      this.currentHoveredEventId = undefined;\n    },\n    // ******************************\n    // Drag and drop events\n    // ******************************\n    onDragStart: function onDragStart(calendarEvent, windowEvent) {\n      if (!this.enableDragDrop) return false; // Not using dataTransfer.setData to store the event ID because it (a) doesn't allow access to the data being\n      // dragged during dragover, dragenter, and dragleave events, and because storing an ID requires an unnecessary\n      // lookup. This does limit the drop zones to areas within this instance of this component.\n\n      this.currentDragEvent = calendarEvent; // Firefox and possibly other browsers require dataTransfer to be set, even if the value is not used. IE11\n      // requires that the first argument be exactly \"text\" (not \"text/plain\", etc.).\n\n      windowEvent.dataTransfer.setData(\"text\", \"foo\");\n      this.$emit(\"drag-start\", calendarEvent);\n      return true;\n    },\n    handleDragEvent: function handleDragEvent(bubbleEventName, bubbleParam) {\n      if (!this.enableDragDrop) return false;\n\n      if (!this.currentDragEvent) {\n        // shouldn't happen\n        // If current drag event is not set, check if user has set its own slot for events\n        if (!this.$scopedSlots[\"event\"]) return false;\n      }\n\n      this.$emit(bubbleEventName, this.currentDragEvent, bubbleParam);\n      return true;\n    },\n    onDragOver: function onDragOver(day) {\n      this.handleDragEvent(\"drag-over-date\", day);\n    },\n    onDragEnter: function onDragEnter(day, windowEvent) {\n      if (!this.handleDragEvent(\"drag-enter-date\", day)) return;\n      windowEvent.target.classList.add(\"draghover\");\n    },\n    onDragLeave: function onDragLeave(day, windowEvent) {\n      if (!this.handleDragEvent(\"drag-leave-date\", day)) return;\n      windowEvent.target.classList.remove(\"draghover\");\n    },\n    onDrop: function onDrop(day, windowEvent) {\n      if (!this.handleDragEvent(\"drop-on-date\", day)) return;\n      windowEvent.target.classList.remove(\"draghover\");\n    },\n    // ******************************\n    // Calendar Events\n    // ******************************\n    findAndSortEventsInWeek: function findAndSortEventsInWeek(weekStart) {\n      var _this2 = this;\n\n      // Return a list of events that INCLUDE any day of a week starting on a\n      // particular day. Sorted so the events that start earlier are always\n      // shown first.\n      var events = this.fixedEvents.filter(function (event) {\n        return event.startDate < _this2.addDays(weekStart, 7) && event.endDate >= weekStart;\n      }, this).sort(function (a, b) {\n        if (a.startDate < b.startDate) return -1;\n        if (b.startDate < a.startDate) return 1;\n        if (a.endDate > b.endDate) return -1;\n        if (b.endDate > a.endDate) return 1;\n        return a.id < b.id ? -1 : 1;\n      });\n      return events;\n    },\n    getWeekEvents: function getWeekEvents(weekStart) {\n      // Return a list of events that CONTAIN the week starting on a day.\n      // Sorted so the events that start earlier are always shown first.\n      var events = this.findAndSortEventsInWeek(weekStart);\n      var results = [];\n      var eventRows = [[], [], [], [], [], [], []];\n\n      for (var i = 0; i < events.length; i++) {\n        var ep = assign_default()({}, events[i], {\n          classes: _toConsumableArray(events[i].classes),\n          eventRow: 0\n        });\n\n        var continued = ep.startDate < weekStart;\n        var startOffset = continued ? 0 : this.dayDiff(weekStart, ep.startDate);\n        var span = Math.min(7 - startOffset, this.dayDiff(this.addDays(weekStart, startOffset), ep.endDate) + 1);\n        if (continued) ep.classes.push(\"continued\");\n        if (this.dayDiff(weekStart, ep.endDate) > 6) ep.classes.push(\"toBeContinued\");\n        if (this.isInPast(ep.endDate)) ep.classes.push(\"past\");\n        if (ep.originalEvent.url) ep.classes.push(\"hasUrl\");\n\n        for (var d = 0; d < 7; d++) {\n          if (d === startOffset) {\n            var s = 0;\n\n            while (eventRows[d][s]) {\n              s++;\n            }\n\n            ep.eventRow = s;\n            eventRows[d][s] = true;\n          } else if (d < startOffset + span) {\n            eventRows[d][ep.eventRow] = true;\n          }\n        }\n\n        ep.classes.push(\"offset\".concat(startOffset));\n        ep.classes.push(\"span\".concat(span));\n        results.push(ep);\n      }\n\n      return results;\n    },\n\n    /*\n    Creates the HTML to prefix the event title showing the event's start and/or\n    end time. Midnight is not displayed.\n    */\n    getFormattedTimeRange: function getFormattedTimeRange(e) {\n      var startTime = this.formattedTime(e.startDate, this.displayLocale, this.timeFormatOptions);\n      var endTime = \"\";\n\n      if (!this.isSameDateTime(e.startDate, e.endDate)) {\n        endTime = this.formattedTime(e.endDate, this.displayLocale, this.timeFormatOptions);\n      }\n\n      return (startTime !== \"\" ? \"<span class=\\\"startTime\\\">\".concat(startTime, \"</span>\") : \"\") + (endTime !== \"\" ? \"<span class=\\\"endTime\\\">\".concat(endTime, \"</span>\") : \"\");\n    },\n    getEventTitle: function getEventTitle(e) {\n      if (!this.showEventTimes) return e.title;\n      return this.getFormattedTimeRange(e) + \" \" + e.title;\n    },\n    getEventTop: function getEventTop(e) {\n      // Compute the top position of the event based on its assigned row within the given week.\n      var r = e.eventRow;\n      var h = this.eventContentHeight;\n      var b = this.eventBorderHeight;\n      return \"calc(\".concat(this.eventTop, \" + \").concat(r, \"*\").concat(h, \" + \").concat(r, \"*\").concat(b, \")\");\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/CalendarView.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_CalendarViewvue_type_script_lang_js_ = (CalendarViewvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./src/components/CalendarView.vue?vue&type=style&index=0&lang=css&\nvar CalendarViewvue_type_style_index_0_lang_css_ = __webpack_require__(\"a45d\");\n\n// CONCATENATED MODULE: ./src/components/CalendarView.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar CalendarView_component = normalizeComponent(\n  components_CalendarViewvue_type_script_lang_js_,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* harmony default export */ var CalendarView = (CalendarView_component.exports);\n// CONCATENATED MODULE: ./src/components/bundle.js\n\n\n // Export the compiled Vue components, and also the mixin for those who wish to use\n// those methods in their own custom headers, etc.\n\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js\n/* concated harmony reexport CalendarView */__webpack_require__.d(__webpack_exports__, \"CalendarView\", function() { return CalendarView; });\n/* concated harmony reexport CalendarViewHeader */__webpack_require__.d(__webpack_exports__, \"CalendarViewHeader\", function() { return CalendarViewHeader; });\n/* concated harmony reexport CalendarMathMixin */__webpack_require__.d(__webpack_exports__, \"CalendarMathMixin\", function() { return CalendarMathMixin; });\n\n\n\n\n/***/ }),\n\n/***/ \"fdef\":\n/***/ (function(module, exports) {\n\nmodule.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=CalendarView.umd.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXNpbXBsZS1jYWxlbmRhci9kaXN0L0NhbGVuZGFyVmlldy51bWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXNpbXBsZS1jYWxlbmRhci9kaXN0L0NhbGVuZGFyVmlldy51bWQuanM/ODNiMCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJDYWxlbmRhclZpZXdcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiQ2FsZW5kYXJWaWV3XCJdID0gZmFjdG9yeSgpO1xufSkoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKSwgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcImZhZTNcIik7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICh7XG5cbi8qKiovIFwiMDJmNFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ1ODhcIik7XG52YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiZTEzXCIpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIwMzkwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgYXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDJmNFwiKSh0cnVlKTtcblxuIC8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYWR2YW5jZXN0cmluZ2luZGV4XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChTLCBpbmRleCwgdW5pY29kZSkge1xuICByZXR1cm4gaW5kZXggKyAodW5pY29kZSA/IGF0KFMsIGluZGV4KS5sZW5ndGggOiAxKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMDdlM1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjBhNDlcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gMCAtPiBBcnJheSNmb3JFYWNoXG4vLyAxIC0+IEFycmF5I21hcFxuLy8gMiAtPiBBcnJheSNmaWx0ZXJcbi8vIDMgLT4gQXJyYXkjc29tZVxuLy8gNCAtPiBBcnJheSNldmVyeVxuLy8gNSAtPiBBcnJheSNmaW5kXG4vLyA2IC0+IEFycmF5I2ZpbmRJbmRleFxudmFyIGN0eCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5YjQzXCIpO1xudmFyIElPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjI2YVwiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0YmY4XCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjlkZWZcIik7XG52YXIgYXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImNkMWNcIik7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgdmFyIGNyZWF0ZSA9ICRjcmVhdGUgfHwgYXNjO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsLCByZXM7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSByZXN1bHRbaW5kZXhdID0gcmVzOyAgIC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWw7ICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiByZXN1bHQucHVzaCh2YWwpOyAgICAgICAgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMGIyMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyAyMC4yLjIuMjggTWF0aC5zaWduKHgpXG52YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1Y2ExXCIpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IHNpZ246IF9fd2VicGFja19yZXF1aXJlX18oXCI5NmZiXCIpIH0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjBiZmJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIDIxLjIuNS4zIGdldCBSZWdFeHAucHJvdG90eXBlLmZsYWdzXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiY2I3Y1wiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjBkNThcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiY2UxMFwiKTtcbnZhciBlbnVtQnVnS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlMTFlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIwZmM5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiM2EzOFwiKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMTE2OVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxudmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyZDk1XCIpO1xubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxMWU5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBwSUUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTJhN1wiKTtcbnZhciBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ2MzBcIik7XG52YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjY4MjFcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmE5OVwiKTtcbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjlhOFwiKTtcbnZhciBJRThfRE9NX0RFRklORSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjNjlhXCIpO1xudmFyIGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG5leHBvcnRzLmYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWUxZVwiKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMTNlZlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjM1MFwiKShmYWxzZSk7XG4vLyBpbXBvcnRzXG5cblxuLy8gbW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pLCBcIi5jdi13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1ncm93OjE7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDoxMDAlO21heC1oZWlnaHQ6MTAwJTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmhpZGRlbn0uY3Ytd3JhcHBlciwuY3Ytd3JhcHBlciBkaXZ7Ym94LXNpemluZzpib3JkZXItYm94O2xpbmUtaGVpZ2h0OjFlbTtmb250LXNpemU6MWVtfS5jdi1oZWFkZXItZGF5c3tmbGV4LWdyb3c6MDtmbGV4LWJhc2lzOmF1dG87Ym9yZGVyLXdpZHRoOjAgMCAwIDFweH0uY3YtaGVhZGVyLWRheSwuY3YtaGVhZGVyLWRheXN7ZGlzcGxheTpmbGV4O2ZsZXgtc2hyaW5rOjA7ZmxleC1mbG93OnJvdyBub3dyYXB9LmN2LWhlYWRlci1kYXl7ZmxleC1ncm93OjE7ZmxleC1iYXNpczowO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci13aWR0aDoxcHggMXB4IDAgMH0uY3Ytd2Vla3N7ZmxleC1zaHJpbms6MTtmbGV4LWJhc2lzOmF1dG87ZmxleC1mbG93OmNvbHVtbiBub3dyYXA7Ym9yZGVyLXdpZHRoOjAgMCAxcHggMXB4fS5jdi13ZWVrLC5jdi13ZWVrc3tkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7b3ZlcmZsb3cteTphdXRvOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lfS5jdi13ZWVre2ZsZXgtZmxvdzpyb3cgbm93cmFwO21pbi1oZWlnaHQ6M2VtO2JvcmRlci13aWR0aDowO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmN2LWRheSwuY3Ytd2Vla3tmbGV4LXNocmluazowO2ZsZXgtYmFzaXM6MH0uY3YtZGF5e2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtwb3NpdGlvbjpyZWxhdGl2ZTtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7dG9wOjA7Ym9yZGVyLXdpZHRoOjFweCAxcHggMCAwfS5jdi1kYXksXzotbXMtbGFuZyh4KXtwb3NpdGlvbjpyZWxhdGl2ZX0vIC5jdi1kYXktbnVtYmVye3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9LmN2LWV2ZW50e3Bvc2l0aW9uOmFic29sdXRlO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y3O2JvcmRlci13aWR0aDoxcHh9LmN2LXdyYXBwZXIud3JhcC1ldmVudC10aXRsZS1vbi1ob3ZlciAuY3YtZXZlbnQ6aG92ZXJ7d2hpdGUtc3BhY2U6bm9ybWFsO3otaW5kZXg6MX0uY3YtZGF5LC5jdi1ldmVudCwuY3YtaGVhZGVyLWRheSwuY3YtaGVhZGVyLWRheXMsLmN2LXdlZWssLmN2LXdlZWtze2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2RkZH0uY3YtZXZlbnQgLmVuZFRpbWU6YmVmb3Jle2NvbnRlbnQ6XFxcIi1cXFwifS5jdi1kYXktbnVtYmVyLC5jdi1ldmVudCwuY3YtaGVhZGVyLWRheXtwYWRkaW5nOi4yZW19LmN2LWRheS1udW1iZXI6YmVmb3Jle21hcmdpbi1yaWdodDouNWVtfS5jdi1ldmVudC5vZmZzZXQwe2xlZnQ6MH0uY3YtZXZlbnQub2Zmc2V0MXtsZWZ0OjE0LjI4NTcxJX0uY3YtZXZlbnQub2Zmc2V0MntsZWZ0OjI4LjU3MTQzJX0uY3YtZXZlbnQub2Zmc2V0M3tsZWZ0OjQyLjg1NzE0JX0uY3YtZXZlbnQub2Zmc2V0NHtsZWZ0OjU3LjE0Mjg2JX0uY3YtZXZlbnQub2Zmc2V0NXtsZWZ0OjcxLjQyODU3JX0uY3YtZXZlbnQub2Zmc2V0NntsZWZ0Ojg1LjcxNDI5JX0uY3YtZXZlbnQuc3BhbjF7d2lkdGg6Y2FsYygxNC4yODU3MSUgLSAuMDVlbSl9LmN2LWV2ZW50LnNwYW4ye3dpZHRoOmNhbGMoMjguNTcxNDMlIC0gLjA1ZW0pfS5jdi1ldmVudC5zcGFuM3t3aWR0aDpjYWxjKDQyLjg1NzE0JSAtIC4wNWVtKTt0ZXh0LWFsaWduOmNlbnRlcn0uY3YtZXZlbnQuc3BhbjR7d2lkdGg6Y2FsYyg1Ny4xNDI4NiUgLSAuMDVlbSk7dGV4dC1hbGlnbjpjZW50ZXJ9LmN2LWV2ZW50LnNwYW41e3dpZHRoOmNhbGMoNzEuNDI4NTclIC0gLjA1ZW0pO3RleHQtYWxpZ246Y2VudGVyfS5jdi1ldmVudC5zcGFuNnt3aWR0aDpjYWxjKDg1LjcxNDI5JSAtIC4wNWVtKTt0ZXh0LWFsaWduOmNlbnRlcn0uY3YtZXZlbnQuc3Bhbjd7d2lkdGg6Y2FsYygxMDAlIC0gLjA1ZW0pO3RleHQtYWxpZ246Y2VudGVyfS5jdi13ZWVrOjotd2Via2l0LXNjcm9sbGJhciwuY3Ytd2Vla3M6Oi13ZWJraXQtc2Nyb2xsYmFye3dpZHRoOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH1cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMTQ5NVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODZjY1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjYjdjXCIpO1xudmFyIGdldEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMGQ1OFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWUxZVwiKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxNjU0XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJGF0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjcxYzFcIikodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbl9fd2VicGFja19yZXF1aXJlX18oXCIzMGYxXCIpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4vLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGluZGV4ID0gdGhpcy5faTtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMTY5MVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxYWY2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDIyLjEuMi4yIC8gMTUuNC4zLjIgQXJyYXkuaXNBcnJheShhcmcpXG52YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2M2I2XCIpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ0FycmF5JywgeyBpc0FycmF5OiBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTAwM1wiKSB9KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxYmMzXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImY3NzJcIik7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxZGY4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2M2I2XCIpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZWFkNlwiKS5zZXQgfSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMWVjOVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZjc3MlwiKTtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlNTNkXCIpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyMGZkXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ5ZjZcIik7XG52YXIgY3JlYXRlRGVzYyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhZWJkXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGluZGV4LCB2YWx1ZSkge1xuICBpZiAoaW5kZXggaW4gb2JqZWN0KSAkZGVmaW5lUHJvcGVydHkuZihvYmplY3QsIGluZGV4LCBjcmVhdGVEZXNjKDAsIHZhbHVlKSk7XG4gIGVsc2Ugb2JqZWN0W2luZGV4XSA9IHZhbHVlO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyMTRmXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjBjNVwiKTtcbnZhciByZWRlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyYWJhXCIpO1xudmFyIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzJlOVwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3OWU1XCIpO1xudmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYmUxM1wiKTtcbnZhciB3a3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmI0Y1wiKTtcbnZhciByZWdleHBFeGVjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUyMGFcIik7XG5cbnZhciBTUEVDSUVTID0gd2tzKCdzcGVjaWVzJyk7XG5cbnZhciBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vICNyZXBsYWNlIG5lZWRzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIG5hbWVkIGdyb3Vwcy5cbiAgLy8gI21hdGNoIHdvcmtzIGZpbmUgYmVjYXVzZSBpdCBqdXN0IHJldHVybiB0aGUgZXhlYyByZXN1bHRzLCBldmVuIGlmIGl0IGhhc1xuICAvLyBhIFwiZ3JvcHNcIiBwcm9wZXJ0eS5cbiAgdmFyIHJlID0gLy4vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQuZ3JvdXBzID0geyBhOiAnNycgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICByZXR1cm4gJycucmVwbGFjZShyZSwgJyQ8YT4nKSAhPT0gJzcnO1xufSk7XG5cbnZhciBTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMgPSAoZnVuY3Rpb24gKCkge1xuICAvLyBDaHJvbWUgNTEgaGFzIGEgYnVnZ3kgXCJzcGxpdFwiIGltcGxlbWVudGF0aW9uIHdoZW4gUmVnRXhwI2V4ZWMgIT09IG5hdGl2ZUV4ZWNcbiAgdmFyIHJlID0gLyg/OikvO1xuICB2YXIgb3JpZ2luYWxFeGVjID0gcmUuZXhlYztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9yaWdpbmFsRXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xuICB2YXIgcmVzdWx0ID0gJ2FiJy5zcGxpdChyZSk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoID09PSAyICYmIHJlc3VsdFswXSA9PT0gJ2EnICYmIHJlc3VsdFsxXSA9PT0gJ2InO1xufSkoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBsZW5ndGgsIGV4ZWMpIHtcbiAgdmFyIFNZTUJPTCA9IHdrcyhLRVkpO1xuXG4gIHZhciBERUxFR0FURVNfVE9fU1lNQk9MID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBTdHJpbmcgbWV0aG9kcyBjYWxsIHN5bWJvbC1uYW1lZCBSZWdFcCBtZXRob2RzXG4gICAgdmFyIE8gPSB7fTtcbiAgICBPW1NZTUJPTF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9O1xuICAgIHJldHVybiAnJ1tLRVldKE8pICE9IDc7XG4gIH0pO1xuXG4gIHZhciBERUxFR0FURVNfVE9fRVhFQyA9IERFTEVHQVRFU19UT19TWU1CT0wgPyAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN5bWJvbC1uYW1lZCBSZWdFeHAgbWV0aG9kcyBjYWxsIC5leGVjXG4gICAgdmFyIGV4ZWNDYWxsZWQgPSBmYWxzZTtcbiAgICB2YXIgcmUgPSAvYS87XG4gICAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgZXhlY0NhbGxlZCA9IHRydWU7IHJldHVybiBudWxsOyB9O1xuICAgIGlmIChLRVkgPT09ICdzcGxpdCcpIHtcbiAgICAgIC8vIFJlZ0V4cFtAQHNwbGl0XSBkb2Vzbid0IGNhbGwgdGhlIHJlZ2V4J3MgZXhlYyBtZXRob2QsIGJ1dCBmaXJzdCBjcmVhdGVzXG4gICAgICAvLyBhIG5ldyBvbmUuIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBwYXRjaGVkIHJlZ2V4IHdoZW4gY3JlYXRpbmcgdGhlIG5ldyBvbmUuXG4gICAgICByZS5jb25zdHJ1Y3RvciA9IHt9O1xuICAgICAgcmUuY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZTsgfTtcbiAgICB9XG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KSA6IHVuZGVmaW5lZDtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICAoS0VZID09PSAncmVwbGFjZScgJiYgIVJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTKSB8fFxuICAgIChLRVkgPT09ICdzcGxpdCcgJiYgIVNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQylcbiAgKSB7XG4gICAgdmFyIG5hdGl2ZVJlZ0V4cE1ldGhvZCA9IC8uL1tTWU1CT0xdO1xuICAgIHZhciBmbnMgPSBleGVjKFxuICAgICAgZGVmaW5lZCxcbiAgICAgIFNZTUJPTCxcbiAgICAgICcnW0tFWV0sXG4gICAgICBmdW5jdGlvbiBtYXliZUNhbGxOYXRpdmUobmF0aXZlTWV0aG9kLCByZWdleHAsIHN0ciwgYXJnMiwgZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgaWYgKHJlZ2V4cC5leGVjID09PSByZWdleHBFeGVjKSB7XG4gICAgICAgICAgaWYgKERFTEVHQVRFU19UT19TWU1CT0wgJiYgIWZvcmNlU3RyaW5nTWV0aG9kKSB7XG4gICAgICAgICAgICAvLyBUaGUgbmF0aXZlIFN0cmluZyBtZXRob2QgYWxyZWFkeSBkZWxlZ2F0ZXMgdG8gQEBtZXRob2QgKHRoaXNcbiAgICAgICAgICAgIC8vIHBvbHlmaWxsZWQgZnVuY3Rpb24pLCBsZWFzaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgICAgICAgICAgIC8vIFdlIGF2b2lkIGl0IGJ5IGRpcmVjdGx5IGNhbGxpbmcgdGhlIG5hdGl2ZSBAQG1ldGhvZCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlUmVnRXhwTWV0aG9kLmNhbGwocmVnZXhwLCBzdHIsIGFyZzIpIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVNZXRob2QuY2FsbChzdHIsIHJlZ2V4cCwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICk7XG4gICAgdmFyIHN0cmZuID0gZm5zWzBdO1xuICAgIHZhciByeGZuID0gZm5zWzFdO1xuXG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBzdHJmbik7XG4gICAgaGlkZShSZWdFeHAucHJvdG90eXBlLCBTWU1CT0wsIGxlbmd0aCA9PSAyXG4gICAgICAvLyAyMS4yLjUuOCBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV0oc3RyaW5nLCByZXBsYWNlVmFsdWUpXG4gICAgICAvLyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KVxuICAgICAgPyBmdW5jdGlvbiAoc3RyaW5nLCBhcmcpIHsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByeGZuLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMjMwZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDNmNFwiKTtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3NzI2XCIpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyMzUwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih1c2VTb3VyY2VNYXApIHtcblx0dmFyIGxpc3QgPSBbXTtcblxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcblx0XHRcdHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApO1xuXHRcdFx0aWYoaXRlbVsyXSkge1xuXHRcdFx0XHRyZXR1cm4gXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBjb250ZW50ICsgXCJ9XCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gY29udGVudDtcblx0XHRcdH1cblx0XHR9KS5qb2luKFwiXCIpO1xuXHR9O1xuXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG5cdFx0fVxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0cmV0dXJuIGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgJyc7XG5cdHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblx0aWYgKCFjc3NNYXBwaW5nKSB7XG5cdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdH1cblxuXHRpZiAodXNlU291cmNlTWFwICYmIHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFyIHNvdXJjZU1hcHBpbmcgPSB0b0NvbW1lbnQoY3NzTWFwcGluZyk7XG5cdFx0dmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcblx0XHRcdHJldHVybiAnLyojIHNvdXJjZVVSTD0nICsgY3NzTWFwcGluZy5zb3VyY2VSb290ICsgc291cmNlICsgJyAqLydcblx0XHR9KTtcblxuXHRcdHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuXHR9XG5cblx0cmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn1cblxuLy8gQWRhcHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlUKVxuZnVuY3Rpb24gdG9Db21tZW50KHNvdXJjZU1hcCkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcblx0dmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSk7XG5cdHZhciBkYXRhID0gJ3NvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCcgKyBiYXNlNjQ7XG5cblx0cmV0dXJuICcvKiMgJyArIGRhdGEgKyAnICovJztcbn1cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyM2M2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJkOTVcIik7XG52YXIgVEFHID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJiNGNcIikoJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIEFSRyA9IGNvZihmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgVCwgQjtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKFQgPSB0cnlHZXQoTyA9IE9iamVjdChpdCksIFRBRykpID09ICdzdHJpbmcnID8gVFxuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQVJHID8gY29mKE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyNDFlXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjI1ZWJcIik7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMjViMFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiMWRmOFwiKTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU4NGFcIikuT2JqZWN0LnNldFByb3RvdHlwZU9mO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjI1ZWJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyOGE1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBpc1JlZ0V4cCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhYWUzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImNiN2NcIik7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImViZDZcIik7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAzOTBcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWRlZlwiKTtcbnZhciBjYWxsUmVnRXhwRXhlYyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1ZjFiXCIpO1xudmFyIHJlZ2V4cEV4ZWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTIwYVwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3OWU1XCIpO1xudmFyICRtaW4gPSBNYXRoLm1pbjtcbnZhciAkcHVzaCA9IFtdLnB1c2g7XG52YXIgJFNQTElUID0gJ3NwbGl0JztcbnZhciBMRU5HVEggPSAnbGVuZ3RoJztcbnZhciBMQVNUX0lOREVYID0gJ2xhc3RJbmRleCc7XG52YXIgTUFYX1VJTlQzMiA9IDB4ZmZmZmZmZmY7XG5cbi8vIGJhYmVsLW1pbmlmeSB0cmFuc3BpbGVzIFJlZ0V4cCgneCcsICd5JykgLT4gL3gveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgU1VQUE9SVFNfWSA9ICFmYWlscyhmdW5jdGlvbiAoKSB7IFJlZ0V4cChNQVhfVUlOVDMyLCAneScpOyB9KTtcblxuLy8gQEBzcGxpdCBsb2dpY1xuX193ZWJwYWNrX3JlcXVpcmVfXyhcIjIxNGZcIikoJ3NwbGl0JywgMiwgZnVuY3Rpb24gKGRlZmluZWQsIFNQTElULCAkc3BsaXQsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICB2YXIgaW50ZXJuYWxTcGxpdDtcbiAgaWYgKFxuICAgICdhYmJjJ1skU1BMSVRdKC8oYikqLylbMV0gPT0gJ2MnIHx8XG4gICAgJ3Rlc3QnWyRTUExJVF0oLyg/OikvLCAtMSlbTEVOR1RIXSAhPSA0IHx8XG4gICAgJ2FiJ1skU1BMSVRdKC8oPzphYikqLylbTEVOR1RIXSAhPSAyIHx8XG4gICAgJy4nWyRTUExJVF0oLyguPykoLj8pLylbTEVOR1RIXSAhPSA0IHx8XG4gICAgJy4nWyRTUExJVF0oLygpKCkvKVtMRU5HVEhdID4gMSB8fFxuICAgICcnWyRTUExJVF0oLy4/LylbTEVOR1RIXVxuICApIHtcbiAgICAvLyBiYXNlZCBvbiBlczUtc2hpbSBpbXBsZW1lbnRhdGlvbiwgbmVlZCB0byByZXdvcmsgaXRcbiAgICBpbnRlcm5hbFNwbGl0ID0gZnVuY3Rpb24gKHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHZhciBzdHJpbmcgPSBTdHJpbmcodGhpcyk7XG4gICAgICBpZiAoc2VwYXJhdG9yID09PSB1bmRlZmluZWQgJiYgbGltaXQgPT09IDApIHJldHVybiBbXTtcbiAgICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgbmF0aXZlIHNwbGl0XG4gICAgICBpZiAoIWlzUmVnRXhwKHNlcGFyYXRvcikpIHJldHVybiAkc3BsaXQuY2FsbChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgICAgdmFyIG91dHB1dCA9IFtdO1xuICAgICAgdmFyIGZsYWdzID0gKHNlcGFyYXRvci5pZ25vcmVDYXNlID8gJ2knIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3IubXVsdGlsaW5lID8gJ20nIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3IudW5pY29kZSA/ICd1JyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLnN0aWNreSA/ICd5JyA6ICcnKTtcbiAgICAgIHZhciBsYXN0TGFzdEluZGV4ID0gMDtcbiAgICAgIHZhciBzcGxpdExpbWl0ID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9VSU5UMzIgOiBsaW1pdCA+Pj4gMDtcbiAgICAgIC8vIE1ha2UgYGdsb2JhbGAgYW5kIGF2b2lkIGBsYXN0SW5kZXhgIGlzc3VlcyBieSB3b3JraW5nIHdpdGggYSBjb3B5XG4gICAgICB2YXIgc2VwYXJhdG9yQ29weSA9IG5ldyBSZWdFeHAoc2VwYXJhdG9yLnNvdXJjZSwgZmxhZ3MgKyAnZycpO1xuICAgICAgdmFyIG1hdGNoLCBsYXN0SW5kZXgsIGxhc3RMZW5ndGg7XG4gICAgICB3aGlsZSAobWF0Y2ggPSByZWdleHBFeGVjLmNhbGwoc2VwYXJhdG9yQ29weSwgc3RyaW5nKSkge1xuICAgICAgICBsYXN0SW5kZXggPSBzZXBhcmF0b3JDb3B5W0xBU1RfSU5ERVhdO1xuICAgICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICAgIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAgIGlmIChtYXRjaFtMRU5HVEhdID4gMSAmJiBtYXRjaC5pbmRleCA8IHN0cmluZ1tMRU5HVEhdKSAkcHVzaC5hcHBseShvdXRwdXQsIG1hdGNoLnNsaWNlKDEpKTtcbiAgICAgICAgICBsYXN0TGVuZ3RoID0gbWF0Y2hbMF1bTEVOR1RIXTtcbiAgICAgICAgICBsYXN0TGFzdEluZGV4ID0gbGFzdEluZGV4O1xuICAgICAgICAgIGlmIChvdXRwdXRbTEVOR1RIXSA+PSBzcGxpdExpbWl0KSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VwYXJhdG9yQ29weVtMQVNUX0lOREVYXSA9PT0gbWF0Y2guaW5kZXgpIHNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF0rKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgICAgaWYgKGxhc3RMYXN0SW5kZXggPT09IHN0cmluZ1tMRU5HVEhdKSB7XG4gICAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3JDb3B5LnRlc3QoJycpKSBvdXRwdXQucHVzaCgnJyk7XG4gICAgICB9IGVsc2Ugb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICAgIHJldHVybiBvdXRwdXRbTEVOR1RIXSA+IHNwbGl0TGltaXQgPyBvdXRwdXQuc2xpY2UoMCwgc3BsaXRMaW1pdCkgOiBvdXRwdXQ7XG4gICAgfTtcbiAgLy8gQ2hha3JhLCBWOFxuICB9IGVsc2UgaWYgKCcwJ1skU1BMSVRdKHVuZGVmaW5lZCwgMClbTEVOR1RIXSkge1xuICAgIGludGVybmFsU3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwID8gW10gOiAkc3BsaXQuY2FsbCh0aGlzLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGludGVybmFsU3BsaXQgPSAkc3BsaXQ7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnNwbGl0XG4gICAgZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgICAgdmFyIHNwbGl0dGVyID0gc2VwYXJhdG9yID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNlcGFyYXRvcltTUExJVF07XG4gICAgICByZXR1cm4gc3BsaXR0ZXIgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHNwbGl0dGVyLmNhbGwoc2VwYXJhdG9yLCBPLCBsaW1pdClcbiAgICAgICAgOiBpbnRlcm5hbFNwbGl0LmNhbGwoU3RyaW5nKE8pLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAc3BsaXRcbiAgICAvL1xuICAgIC8vIE5PVEU6IFRoaXMgY2Fubm90IGJlIHByb3Blcmx5IHBvbHlmaWxsZWQgaW4gZW5naW5lcyB0aGF0IGRvbid0IHN1cHBvcnRcbiAgICAvLyB0aGUgJ3knIGZsYWcuXG4gICAgZnVuY3Rpb24gKHJlZ2V4cCwgbGltaXQpIHtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUoaW50ZXJuYWxTcGxpdCwgcmVnZXhwLCB0aGlzLCBsaW1pdCwgaW50ZXJuYWxTcGxpdCAhPT0gJHNwbGl0KTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgICAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IocngsIFJlZ0V4cCk7XG5cbiAgICAgIHZhciB1bmljb2RlTWF0Y2hpbmcgPSByeC51bmljb2RlO1xuICAgICAgdmFyIGZsYWdzID0gKHJ4Lmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJ4Lm11bHRpbGluZSA/ICdtJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAocngudW5pY29kZSA/ICd1JyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoU1VQUE9SVFNfWSA/ICd5JyA6ICdnJyk7XG5cbiAgICAgIC8vIF4oPyArIHJ4ICsgKSBpcyBuZWVkZWQsIGluIGNvbWJpbmF0aW9uIHdpdGggc29tZSBTIHNsaWNpbmcsIHRvXG4gICAgICAvLyBzaW11bGF0ZSB0aGUgJ3knIGZsYWcuXG4gICAgICB2YXIgc3BsaXR0ZXIgPSBuZXcgQyhTVVBQT1JUU19ZID8gcnggOiAnXig/OicgKyByeC5zb3VyY2UgKyAnKScsIGZsYWdzKTtcbiAgICAgIHZhciBsaW0gPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gTUFYX1VJTlQzMiA6IGxpbWl0ID4+PiAwO1xuICAgICAgaWYgKGxpbSA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgaWYgKFMubGVuZ3RoID09PSAwKSByZXR1cm4gY2FsbFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpID09PSBudWxsID8gW1NdIDogW107XG4gICAgICB2YXIgcCA9IDA7XG4gICAgICB2YXIgcSA9IDA7XG4gICAgICB2YXIgQSA9IFtdO1xuICAgICAgd2hpbGUgKHEgPCBTLmxlbmd0aCkge1xuICAgICAgICBzcGxpdHRlci5sYXN0SW5kZXggPSBTVVBQT1JUU19ZID8gcSA6IDA7XG4gICAgICAgIHZhciB6ID0gY2FsbFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFNVUFBPUlRTX1kgPyBTIDogUy5zbGljZShxKSk7XG4gICAgICAgIHZhciBlO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgeiA9PT0gbnVsbCB8fFxuICAgICAgICAgIChlID0gJG1pbih0b0xlbmd0aChzcGxpdHRlci5sYXN0SW5kZXggKyAoU1VQUE9SVFNfWSA/IDAgOiBxKSksIFMubGVuZ3RoKSkgPT09IHBcbiAgICAgICAgKSB7XG4gICAgICAgICAgcSA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIEEucHVzaChTLnNsaWNlKHAsIHEpKTtcbiAgICAgICAgICBpZiAoQS5sZW5ndGggPT09IGxpbSkgcmV0dXJuIEE7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gei5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIEEucHVzaCh6W2ldKTtcbiAgICAgICAgICAgIGlmIChBLmxlbmd0aCA9PT0gbGltKSByZXR1cm4gQTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcSA9IHAgPSBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBBLnB1c2goUy5zbGljZShwKSk7XG4gICAgICByZXR1cm4gQTtcbiAgICB9XG4gIF07XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyOTRjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyOWI1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyMzUwXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmksIFwiLmN2LWhlYWRlcntkaXNwbGF5OmZsZXg7ZmxleDowIDEgYXV0bztmbGV4LWZsb3c6cm93IG5vd3JhcDthbGlnbi1pdGVtczpjZW50ZXI7bWluLWhlaWdodDoyLjVlbTtib3JkZXItd2lkdGg6MXB4IDFweCAwIDFweH0uY3YtaGVhZGVyIC5wZXJpb2RMYWJlbHtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bztmbGV4LWZsb3c6cm93IG5vd3JhcDttaW4taGVpZ2h0OjEuNWVtO2xpbmUtaGVpZ2h0OjE7Zm9udC1zaXplOjEuNWVtfS5jdi1oZWFkZXIsLmN2LWhlYWRlciBidXR0b257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojZGRkfS5jdi1oZWFkZXItbmF2LC5jdi1oZWFkZXIgLnBlcmlvZExhYmVse21hcmdpbjouMWVtIC42ZW19LmN2LWhlYWRlci1uYXYgYnV0dG9uLC5jdi1oZWFkZXIgLnBlcmlvZExhYmVse3BhZGRpbmc6LjRlbSAuNmVtfS5jdi1oZWFkZXIgYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtsaW5lLWhlaWdodDoxZW07Zm9udC1zaXplOjFlbTtib3JkZXItd2lkdGg6MXB4fVwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyYWJhXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzcyNlwiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMyZTlcIik7XG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjY5YThcIik7XG52YXIgU1JDID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImNhNWFcIikoJ3NyYycpO1xudmFyIFRPX1NUUklORyA9ICd0b1N0cmluZyc7XG52YXIgJHRvU3RyaW5nID0gRnVuY3Rpb25bVE9fU1RSSU5HXTtcbnZhciBUUEwgPSAoJycgKyAkdG9TdHJpbmcpLnNwbGl0KFRPX1NUUklORyk7XG5cbl9fd2VicGFja19yZXF1aXJlX18oXCI4Mzc4XCIpLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuICR0b1N0cmluZy5jYWxsKGl0KTtcbn07XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbCwgc2FmZSkge1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiB2YWwgPT0gJ2Z1bmN0aW9uJztcbiAgaWYgKGlzRnVuY3Rpb24pIGhhcyh2YWwsICduYW1lJykgfHwgaGlkZSh2YWwsICduYW1lJywga2V5KTtcbiAgaWYgKE9ba2V5XSA9PT0gdmFsKSByZXR1cm47XG4gIGlmIChpc0Z1bmN0aW9uKSBoYXModmFsLCBTUkMpIHx8IGhpZGUodmFsLCBTUkMsIE9ba2V5XSA/ICcnICsgT1trZXldIDogVFBMLmpvaW4oU3RyaW5nKGtleSkpKTtcbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIE9ba2V5XSA9IHZhbDtcbiAgfSBlbHNlIGlmICghc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gICAgaGlkZShPLCBrZXksIHZhbCk7XG4gIH0gZWxzZSBpZiAoT1trZXldKSB7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2Uge1xuICAgIGhpZGUoTywga2V5LCB2YWwpO1xuICB9XG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbn0pKEZ1bmN0aW9uLnByb3RvdHlwZSwgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgJiYgdGhpc1tTUkNdIHx8ICR0b1N0cmluZy5jYWxsKHRoaXMpO1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMmFlYlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjYjdjXCIpO1xudmFyIGRQcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIxNDk1XCIpO1xudmFyIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImUxMWVcIik7XG52YXIgSUVfUFJPVE8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjEzYlwiKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjMwZVwiKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgX193ZWJwYWNrX3JlcXVpcmVfXyhcImZhYjJcIikuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjJiNGNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHN0b3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU1MzdcIikoJ3drcycpO1xudmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjYTVhXCIpO1xudmFyIFN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3NzI2XCIpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjJkMDBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyZDk1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyZjIxXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzllNVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWV0aG9kLCBhcmcpIHtcbiAgcmV0dXJuICEhbWV0aG9kICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jYWxsXG4gICAgYXJnID8gbWV0aG9kLmNhbGwobnVsbCwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAxKSA6IG1ldGhvZC5jYWxsKG51bGwpO1xuICB9KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzAyNFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBmYXN0IGFwcGx5LCBodHRwOi8vanNwZXJmLmxua2l0LmNvbS9mYXN0LWFwcGx5LzVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCBhcmdzLCB0aGF0KSB7XG4gIHZhciB1biA9IHRoYXQgPT09IHVuZGVmaW5lZDtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIHVuID8gZm4oKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcbiAgICBjYXNlIDE6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICBjYXNlIDQ6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICB9IHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmdzKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzBmMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIExJQlJBUlkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjhlM1wiKTtcbnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYzYjZcIik7XG52YXIgcmVkZWZpbmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTEzOFwiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM1ZThcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ4MWJcIik7XG52YXIgJGl0ZXJDcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOGY2MFwiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0NWYyXCIpO1xudmFyIGdldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUzZTJcIik7XG52YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE2OFwiKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIzMmE2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjI0MWVcIik7XG52YXIgJGtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzNhMVwiKTtcblxuX193ZWJwYWNrX3JlcXVpcmVfXyhcImNlN2VcIikoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIzMmU5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBkUCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NmNjXCIpO1xudmFyIGNyZWF0ZURlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDYzMFwiKTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjllMWVcIikgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIzMmZjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlNTNkXCIpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzM1Y1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2YjRjXCIpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjM1NWRcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzVlOFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDlmNlwiKTtcbnZhciBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImFlYmRcIik7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4ZTYwXCIpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzZiZFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxuXG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNGJmOFwiKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzdmMVwiKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5ZGVmXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qICwgc3RhcnQgPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBsZW5ndGgpO1xuICB2YXIgZW5kID0gYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBlbmRQb3MgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbmd0aCk7XG4gIHdoaWxlIChlbmRQb3MgPiBpbmRleCkgT1tpbmRleCsrXSA9IHZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzZjM1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMzNWNcIik7XG52YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyNWViXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIzNzAyXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDgxYlwiKTtcbnZhciBJVEVSQVRPUiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1MTY4XCIpKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG9bSVRFUkFUT1JdID09PSBpdCk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjNhMzhcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNDBjM1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2YjRjXCIpO1xudmFyIFRBRyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1MTY4XCIpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNDU4OFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI0NWYyXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBkZWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDlmNlwiKS5mO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwN2UzXCIpO1xudmFyIFRBRyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1MTY4XCIpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjQ2MzBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI0ODFiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNDk5ZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzXG4vKipcbiAqIFRyYW5zbGF0ZXMgdGhlIGxpc3QgZm9ybWF0IHByb2R1Y2VkIGJ5IGNzcy1sb2FkZXIgaW50byBzb21ldGhpbmdcbiAqIGVhc2llciB0byBtYW5pcHVsYXRlLlxuICovXG5mdW5jdGlvbiBsaXN0VG9TdHlsZXMgKHBhcmVudElkLCBsaXN0KSB7XG4gIHZhciBzdHlsZXMgPSBbXVxuICB2YXIgbmV3U3R5bGVzID0ge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgdmFyIGlkID0gaXRlbVswXVxuICAgIHZhciBjc3MgPSBpdGVtWzFdXG4gICAgdmFyIG1lZGlhID0gaXRlbVsyXVxuICAgIHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdXG4gICAgdmFyIHBhcnQgPSB7XG4gICAgICBpZDogcGFyZW50SWQgKyAnOicgKyBpLFxuICAgICAgY3NzOiBjc3MsXG4gICAgICBtZWRpYTogbWVkaWEsXG4gICAgICBzb3VyY2VNYXA6IHNvdXJjZU1hcFxuICAgIH1cbiAgICBpZiAoIW5ld1N0eWxlc1tpZF0pIHtcbiAgICAgIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7IGlkOiBpZCwgcGFydHM6IFtwYXJ0XSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2gocGFydClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0eWxlc1xufVxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJkZWZhdWx0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gYWRkU3R5bGVzQ2xpZW50OyB9KTtcbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiAgTW9kaWZpZWQgYnkgRXZhbiBZb3UgQHl5eDk5MDgwM1xuKi9cblxuXG5cbnZhciBoYXNEb2N1bWVudCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcblxuaWYgKHR5cGVvZiBERUJVRyAhPT0gJ3VuZGVmaW5lZCcgJiYgREVCVUcpIHtcbiAgaWYgKCFoYXNEb2N1bWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAndnVlLXN0eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50LiAnICtcbiAgICBcIlVzZSB7IHRhcmdldDogJ25vZGUnIH0gaW4geW91ciBXZWJwYWNrIGNvbmZpZyB0byBpbmRpY2F0ZSBhIHNlcnZlci1yZW5kZXJpbmcgZW52aXJvbm1lbnQuXCJcbiAgKSB9XG59XG5cbi8qXG50eXBlIFN0eWxlT2JqZWN0ID0ge1xuICBpZDogbnVtYmVyO1xuICBwYXJ0czogQXJyYXk8U3R5bGVPYmplY3RQYXJ0PlxufVxuXG50eXBlIFN0eWxlT2JqZWN0UGFydCA9IHtcbiAgY3NzOiBzdHJpbmc7XG4gIG1lZGlhOiBzdHJpbmc7XG4gIHNvdXJjZU1hcDogP3N0cmluZ1xufVxuKi9cblxudmFyIHN0eWxlc0luRG9tID0gey8qXG4gIFtpZDogbnVtYmVyXToge1xuICAgIGlkOiBudW1iZXIsXG4gICAgcmVmczogbnVtYmVyLFxuICAgIHBhcnRzOiBBcnJheTwob2JqPzogU3R5bGVPYmplY3RQYXJ0KSA9PiB2b2lkPlxuICB9XG4qL31cblxudmFyIGhlYWQgPSBoYXNEb2N1bWVudCAmJiAoZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdKVxudmFyIHNpbmdsZXRvbkVsZW1lbnQgPSBudWxsXG52YXIgc2luZ2xldG9uQ291bnRlciA9IDBcbnZhciBpc1Byb2R1Y3Rpb24gPSBmYWxzZVxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7fVxudmFyIG9wdGlvbnMgPSBudWxsXG52YXIgc3NySWRLZXkgPSAnZGF0YS12dWUtc3NyLWlkJ1xuXG4vLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbi8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcbnZhciBpc09sZElFID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL21zaWUgWzYtOV1cXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKVxuXG5mdW5jdGlvbiBhZGRTdHlsZXNDbGllbnQgKHBhcmVudElkLCBsaXN0LCBfaXNQcm9kdWN0aW9uLCBfb3B0aW9ucykge1xuICBpc1Byb2R1Y3Rpb24gPSBfaXNQcm9kdWN0aW9uXG5cbiAgb3B0aW9ucyA9IF9vcHRpb25zIHx8IHt9XG5cbiAgdmFyIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhwYXJlbnRJZCwgbGlzdClcbiAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuXG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUgKG5ld0xpc3QpIHtcbiAgICB2YXIgbWF5UmVtb3ZlID0gW11cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBzdHlsZXNbaV1cbiAgICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4gICAgICBkb21TdHlsZS5yZWZzLS1cbiAgICAgIG1heVJlbW92ZS5wdXNoKGRvbVN0eWxlKVxuICAgIH1cbiAgICBpZiAobmV3TGlzdCkge1xuICAgICAgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVudElkLCBuZXdMaXN0KVxuICAgICAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXMgPSBbXVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRvbVN0eWxlID0gbWF5UmVtb3ZlW2ldXG4gICAgICBpZiAoZG9tU3R5bGUucmVmcyA9PT0gMCkge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgZG9tU3R5bGUucGFydHNbal0oKVxuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBzdHlsZXNJbkRvbVtkb21TdHlsZS5pZF1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkU3R5bGVzVG9Eb20gKHN0eWxlcyAvKiBBcnJheTxTdHlsZU9iamVjdD4gKi8pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxuICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4gICAgaWYgKGRvbVN0eWxlKSB7XG4gICAgICBkb21TdHlsZS5yZWZzKytcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHNbal0oaXRlbS5wYXJ0c1tqXSlcbiAgICAgIH1cbiAgICAgIGZvciAoOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAgICAgaWYgKGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA+IGl0ZW0ucGFydHMubGVuZ3RoKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA9IGl0ZW0ucGFydHMubGVuZ3RoXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJ0cyA9IFtdXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgcGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIHN0eWxlc0luRG9tW2l0ZW0uaWRdID0geyBpZDogaXRlbS5pZCwgcmVmczogMSwgcGFydHM6IHBhcnRzIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50ICgpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJylcbiAgc3R5bGVFbGVtZW50LnR5cGUgPSAndGV4dC9jc3MnXG4gIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KVxuICByZXR1cm4gc3R5bGVFbGVtZW50XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlIChvYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gIHZhciB1cGRhdGUsIHJlbW92ZVxuICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3R5bGVbJyArIHNzcklkS2V5ICsgJ349XCInICsgb2JqLmlkICsgJ1wiXScpXG5cbiAgaWYgKHN0eWxlRWxlbWVudCkge1xuICAgIGlmIChpc1Byb2R1Y3Rpb24pIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGFuZCBpbiBwcm9kdWN0aW9uIG1vZGUuXG4gICAgICAvLyBzaW1wbHkgZG8gbm90aGluZy5cbiAgICAgIHJldHVybiBub29wXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGJ1dCBpbiBkZXYgbW9kZS5cbiAgICAgIC8vIGZvciBzb21lIHJlYXNvbiBDaHJvbWUgY2FuJ3QgaGFuZGxlIHNvdXJjZSBtYXAgaW4gc2VydmVyLXJlbmRlcmVkXG4gICAgICAvLyBzdHlsZSB0YWdzIC0gc291cmNlIG1hcHMgaW4gPHN0eWxlPiBvbmx5IHdvcmtzIGlmIHRoZSBzdHlsZSB0YWcgaXNcbiAgICAgIC8vIGNyZWF0ZWQgYW5kIGluc2VydGVkIGR5bmFtaWNhbGx5LiBTbyB3ZSByZW1vdmUgdGhlIHNlcnZlciByZW5kZXJlZFxuICAgICAgLy8gc3R5bGVzIGFuZCBpbmplY3QgbmV3IG9uZXMuXG4gICAgICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzT2xkSUUpIHtcbiAgICAvLyB1c2Ugc2luZ2xldG9uIG1vZGUgZm9yIElFOS5cbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrK1xuICAgIHN0eWxlRWxlbWVudCA9IHNpbmdsZXRvbkVsZW1lbnQgfHwgKHNpbmdsZXRvbkVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKSlcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCBmYWxzZSlcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCB0cnVlKVxuICB9IGVsc2Uge1xuICAgIC8vIHVzZSBtdWx0aS1zdHlsZS10YWcgbW9kZSBpbiBhbGwgb3RoZXIgY2FzZXNcbiAgICBzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKVxuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQpXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZShvYmopXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChuZXdPYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiZcbiAgICAgICAgICBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJlxuICAgICAgICAgIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKVxuICAgIH1cbiAgfVxufVxuXG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgdGV4dFN0b3JlID0gW11cblxuICByZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudFxuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpXG4gIH1cbn0pKClcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyAoc3R5bGVFbGVtZW50LCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLmNzc1xuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKVxuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKVxuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXNcbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSlcbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChjc3NOb2RlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnIChzdHlsZUVsZW1lbnQsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzc1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWFcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXBcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKVxuICB9XG4gIGlmIChvcHRpb25zLnNzcklkKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShzc3JJZEtleSwgb2JqLmlkKVxuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCkge1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZGV2dG9vbHMvZG9jcy9qYXZhc2NyaXB0LWRlYnVnZ2luZ1xuICAgIC8vIHRoaXMgbWFrZXMgc291cmNlIG1hcHMgaW5zaWRlIHN0eWxlIHRhZ3Mgd29yayBwcm9wZXJseSBpbiBDaHJvbWVcbiAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VVUkw9JyArIHNvdXJjZU1hcC5zb3VyY2VzWzBdICsgJyAqLydcbiAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSArICcgKi8nXG4gIH1cblxuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzXG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpXG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKVxuICB9XG59XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNGJmOFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiZTEzXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjRkMTZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjViMFwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNGVlMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE2OFwiKSgnaXRlcmF0b3InKTtcbnZhciBTQUZFX0NMT1NJTkcgPSBmYWxzZTtcblxudHJ5IHtcbiAgdmFyIHJpdGVyID0gWzddW0lURVJBVE9SXSgpO1xuICByaXRlclsncmV0dXJuJ10gPSBmdW5jdGlvbiAoKSB7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIEFycmF5LmZyb20ocml0ZXIsIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYywgc2tpcENsb3NpbmcpIHtcbiAgaWYgKCFza2lwQ2xvc2luZyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBzYWZlID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IFs3XTtcbiAgICB2YXIgaXRlciA9IGFycltJVEVSQVRPUl0oKTtcbiAgICBpdGVyLm5leHQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB7IGRvbmU6IHNhZmUgPSB0cnVlIH07IH07XG4gICAgYXJyW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXI7IH07XG4gICAgZXhlYyhhcnIpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIHNhZmU7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjUwZWRcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTE2OFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgc3RvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZGJkYlwiKSgnd2tzJyk7XG52YXIgdWlkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYyYTBcIik7XG52YXIgU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU1M2RcIikuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTE3NlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1MWI2XCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1MWI2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oXCJhM2MzXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKS5PYmplY3QuYXNzaWduO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjUyMGFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIHJlZ2V4cEZsYWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjBiZmJcIik7XG5cbnZhciBuYXRpdmVFeGVjID0gUmVnRXhwLnByb3RvdHlwZS5leGVjO1xuLy8gVGhpcyBhbHdheXMgcmVmZXJzIHRvIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb24sIGJlY2F1c2UgdGhlXG4vLyBTdHJpbmcjcmVwbGFjZSBwb2x5ZmlsbCB1c2VzIC4vZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYy5qcyxcbi8vIHdoaWNoIGxvYWRzIHRoaXMgZmlsZSBiZWZvcmUgcGF0Y2hpbmcgdGhlIG1ldGhvZC5cbnZhciBuYXRpdmVSZXBsYWNlID0gU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlO1xuXG52YXIgcGF0Y2hlZEV4ZWMgPSBuYXRpdmVFeGVjO1xuXG52YXIgTEFTVF9JTkRFWCA9ICdsYXN0SW5kZXgnO1xuXG52YXIgVVBEQVRFU19MQVNUX0lOREVYX1dST05HID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlMSA9IC9hLyxcbiAgICAgIHJlMiA9IC9iKi9nO1xuICBuYXRpdmVFeGVjLmNhbGwocmUxLCAnYScpO1xuICBuYXRpdmVFeGVjLmNhbGwocmUyLCAnYScpO1xuICByZXR1cm4gcmUxW0xBU1RfSU5ERVhdICE9PSAwIHx8IHJlMltMQVNUX0lOREVYXSAhPT0gMDtcbn0pKCk7XG5cbi8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3VwLCBjb3BpZWQgZnJvbSBlczUtc2hpbSdzIFN0cmluZyNzcGxpdCBwYXRjaC5cbnZhciBOUENHX0lOQ0xVREVEID0gLygpPz8vLmV4ZWMoJycpWzFdICE9PSB1bmRlZmluZWQ7XG5cbnZhciBQQVRDSCA9IFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyB8fCBOUENHX0lOQ0xVREVEO1xuXG5pZiAoUEFUQ0gpIHtcbiAgcGF0Y2hlZEV4ZWMgPSBmdW5jdGlvbiBleGVjKHN0cikge1xuICAgIHZhciByZSA9IHRoaXM7XG4gICAgdmFyIGxhc3RJbmRleCwgcmVDb3B5LCBtYXRjaCwgaTtcblxuICAgIGlmIChOUENHX0lOQ0xVREVEKSB7XG4gICAgICByZUNvcHkgPSBuZXcgUmVnRXhwKCdeJyArIHJlLnNvdXJjZSArICckKD8hXFxcXHMpJywgcmVnZXhwRmxhZ3MuY2FsbChyZSkpO1xuICAgIH1cbiAgICBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HKSBsYXN0SW5kZXggPSByZVtMQVNUX0lOREVYXTtcblxuICAgIG1hdGNoID0gbmF0aXZlRXhlYy5jYWxsKHJlLCBzdHIpO1xuXG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyAmJiBtYXRjaCkge1xuICAgICAgcmVbTEFTVF9JTkRFWF0gPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3AtZnVuY1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTJhN1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5leHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1M2UyXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA3ZTNcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjQxZVwiKTtcbnZhciBJRV9QUk9UTyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NTU5XCIpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTQ5YlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGN0eCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkODY0XCIpO1xudmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjNiNlwiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyNDFlXCIpO1xudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjBkY1wiKTtcbnZhciBpc0FycmF5SXRlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzNzAyXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImI0NDdcIik7XG52YXIgY3JlYXRlUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjBmZFwiKTtcbnZhciBnZXRJdGVyRm4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiN2NkNlwiKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhX193ZWJwYWNrX3JlcXVpcmVfXyhcIjRlZTFcIikoZnVuY3Rpb24gKGl0ZXIpIHsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChtYXBwaW5nKSBtYXBmbiA9IGN0eChtYXBmbiwgYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQygpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTRhMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmMxY1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18oXCIxNjU0XCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTVkNVwiKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1NTM3XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBjb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjgzNzhcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc3MjZcIik7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IF9fd2VicGFja19yZXF1aXJlX18oXCIyZDAwXCIpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1NTU5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBzaGFyZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZGJkYlwiKSgna2V5cycpO1xudmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2MmEwXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjU1ZGRcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjVjYTFcIik7XG52YXIgYUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ4ZThcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNGJmOFwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3OWU1XCIpO1xudmFyICRzb3J0ID0gW10uc29ydDtcbnZhciB0ZXN0ID0gWzEsIDIsIDNdO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIElFOC1cbiAgdGVzdC5zb3J0KHVuZGVmaW5lZCk7XG59KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBWOCBidWdcbiAgdGVzdC5zb3J0KG51bGwpO1xuICAvLyBPbGQgV2ViS2l0XG59KSB8fCAhX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJmMjFcIikoJHNvcnQpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMjUgQXJyYXkucHJvdG90eXBlLnNvcnQoY29tcGFyZWZuKVxuICBzb3J0OiBmdW5jdGlvbiBzb3J0KGNvbXBhcmVmbikge1xuICAgIHJldHVybiBjb21wYXJlZm4gPT09IHVuZGVmaW5lZFxuICAgICAgPyAkc29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpKVxuICAgICAgOiAkc29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpLCBhRnVuY3Rpb24oY29tcGFyZWZuKSk7XG4gIH1cbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjU4NGFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNi4zJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1YjRlXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM2YzNcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjQ0N1wiKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMGZjOVwiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjVjYTFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3NzI2XCIpO1xudmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODM3OFwiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMyZTlcIik7XG52YXIgcmVkZWZpbmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmFiYVwiKTtcbnZhciBjdHggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWI0M1wiKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSB8fCAoZ2xvYmFsW25hbWVdID0ge30pIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSk7XG4gIHZhciBrZXksIG93biwgb3V0LCBleHA7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSAob3duID8gdGFyZ2V0IDogc291cmNlKVtrZXldO1xuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgZXhwID0gSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIGlmICh0YXJnZXQpIHJlZGVmaW5lKHRhcmdldCwga2V5LCBvdXQsIHR5cGUgJiAkZXhwb3J0LlUpO1xuICAgIC8vIGV4cG9ydFxuICAgIGlmIChleHBvcnRzW2tleV0gIT0gb3V0KSBoaWRlKGV4cG9ydHMsIGtleSwgZXhwKTtcbiAgICBpZiAoSVNfUFJPVE8gJiYgZXhwUHJvdG9ba2V5XSAhPSBvdXQpIGV4cFByb3RvW2tleV0gPSBvdXQ7XG4gIH1cbn07XG5nbG9iYWwuY29yZSA9IGNvcmU7XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNWRiY1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDNmNFwiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4Yjk3XCIpLnNldDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRoYXQsIHRhcmdldCwgQykge1xuICB2YXIgUyA9IHRhcmdldC5jb25zdHJ1Y3RvcjtcbiAgdmFyIFA7XG4gIGlmIChTICE9PSBDICYmIHR5cGVvZiBTID09ICdmdW5jdGlvbicgJiYgKFAgPSBTLnByb3RvdHlwZSkgIT09IEMucHJvdG90eXBlICYmIGlzT2JqZWN0KFApICYmIHNldFByb3RvdHlwZU9mKSB7XG4gICAgc2V0UHJvdG90eXBlT2YodGhhdCwgUCk7XG4gIH0gcmV0dXJuIHRoYXQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjVmMWJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjNjNlwiKTtcbnZhciBidWlsdGluRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcblxuIC8vIGBSZWdFeHBFeGVjYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cGV4ZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFIsIFMpIHtcbiAgdmFyIGV4ZWMgPSBSLmV4ZWM7XG4gIGlmICh0eXBlb2YgZXhlYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBleGVjLmNhbGwoUiwgUyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZWdFeHAgZXhlYyBtZXRob2QgcmV0dXJuZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gT2JqZWN0IG9yIG51bGwnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoY2xhc3NvZihSKSAhPT0gJ1JlZ0V4cCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG4gIH1cbiAgcmV0dXJuIGJ1aWx0aW5FeGVjLmNhbGwoUiwgUyk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjYwOGZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX25vZGVfbW9kdWxlc192dWVfc3R5bGVfbG9hZGVyX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9pbmRleF9qc19yZWZfNl9vbmVPZl8xXzFfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2xvYWRlcnNfc3R5bGVQb3N0TG9hZGVyX2pzX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8yX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8zX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfaW5kZXhfanNfdnVlX2xvYWRlcl9vcHRpb25zX0NhbGVuZGFyVmlld0hlYWRlcl92dWVfdnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9sYW5nX2Nzc19fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NGI0XCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ub2RlX21vZHVsZXNfdnVlX3N0eWxlX2xvYWRlcl9pbmRleF9qc19yZWZfNl9vbmVPZl8xXzBfbm9kZV9tb2R1bGVzX2Nzc19sb2FkZXJfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8xX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9sb2FkZXJzX3N0eWxlUG9zdExvYWRlcl9qc19ub2RlX21vZHVsZXNfcG9zdGNzc19sb2FkZXJfc3JjX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMl9ub2RlX21vZHVsZXNfcG9zdGNzc19sb2FkZXJfc3JjX2luZGV4X2pzX3JlZl82X29uZU9mXzFfM19ub2RlX21vZHVsZXNfY2FjaGVfbG9hZGVyX2Rpc3RfY2pzX2pzX3JlZl8wXzBfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2luZGV4X2pzX3Z1ZV9sb2FkZXJfb3B0aW9uc19DYWxlbmRhclZpZXdIZWFkZXJfdnVlX3Z1ZV90eXBlX3N0eWxlX2luZGV4XzBfbGFuZ19jc3NfX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX25vZGVfbW9kdWxlc192dWVfc3R5bGVfbG9hZGVyX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9pbmRleF9qc19yZWZfNl9vbmVPZl8xXzFfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2xvYWRlcnNfc3R5bGVQb3N0TG9hZGVyX2pzX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8yX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8zX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfaW5kZXhfanNfdnVlX2xvYWRlcl9vcHRpb25zX0NhbGVuZGFyVmlld0hlYWRlcl92dWVfdnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9sYW5nX2Nzc19fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XG4vKiB1bnVzZWQgaGFybW9ueSByZWV4cG9ydCAqICovXG4gLyogdW51c2VkIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIF91bnVzZWRfd2VicGFja19kZWZhdWx0X2V4cG9ydCA9IChfbm9kZV9tb2R1bGVzX3Z1ZV9zdHlsZV9sb2FkZXJfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8wX25vZGVfbW9kdWxlc19jc3NfbG9hZGVyX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMV9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfbG9hZGVyc19zdHlsZVBvc3RMb2FkZXJfanNfbm9kZV9tb2R1bGVzX3Bvc3Rjc3NfbG9hZGVyX3NyY19pbmRleF9qc19yZWZfNl9vbmVPZl8xXzJfbm9kZV9tb2R1bGVzX3Bvc3Rjc3NfbG9hZGVyX3NyY19pbmRleF9qc19yZWZfNl9vbmVPZl8xXzNfbm9kZV9tb2R1bGVzX2NhY2hlX2xvYWRlcl9kaXN0X2Nqc19qc19yZWZfMF8wX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9pbmRleF9qc192dWVfbG9hZGVyX29wdGlvbnNfQ2FsZW5kYXJWaWV3SGVhZGVyX3Z1ZV92dWVfdHlwZV9zdHlsZV9pbmRleF8wX2xhbmdfY3NzX19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQuYSk7IFxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2MTNiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBzaGFyZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTUzN1wiKSgna2V5cycpO1xudmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjYTVhXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjYyNmFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmQ5NVwiKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2MmEwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjYzYjZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlNTNkXCIpO1xudmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKTtcbnZhciBjdHggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDg2NFwiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM1ZThcIik7XG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA3ZTNcIik7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjY4MjFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2MjZhXCIpO1xudmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYmUxM1wiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNjlhOFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjZhOTlcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDNmNFwiKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjZiNGNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjZjMWNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuX193ZWJwYWNrX3JlcXVpcmVfXyhcImMzNjdcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU1M2RcIik7XG52YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzNWU4XCIpO1xudmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0ODFiXCIpO1xudmFyIFRPX1NUUklOR19UQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE2OFwiKSgndG9TdHJpbmdUYWcnKTtcblxudmFyIERPTUl0ZXJhYmxlcyA9ICgnQ1NTUnVsZUxpc3QsQ1NTU3R5bGVEZWNsYXJhdGlvbixDU1NWYWx1ZUxpc3QsQ2xpZW50UmVjdExpc3QsRE9NUmVjdExpc3QsRE9NU3RyaW5nTGlzdCwnICtcbiAgJ0RPTVRva2VuTGlzdCxEYXRhVHJhbnNmZXJJdGVtTGlzdCxGaWxlTGlzdCxIVE1MQWxsQ29sbGVjdGlvbixIVE1MQ29sbGVjdGlvbixIVE1MRm9ybUVsZW1lbnQsSFRNTFNlbGVjdEVsZW1lbnQsJyArXG4gICdNZWRpYUxpc3QsTWltZVR5cGVBcnJheSxOYW1lZE5vZGVNYXAsTm9kZUxpc3QsUGFpbnRSZXF1ZXN0TGlzdCxQbHVnaW4sUGx1Z2luQXJyYXksU1ZHTGVuZ3RoTGlzdCxTVkdOdW1iZXJMaXN0LCcgK1xuICAnU1ZHUGF0aFNlZ0xpc3QsU1ZHUG9pbnRMaXN0LFNWR1N0cmluZ0xpc3QsU1ZHVHJhbnNmb3JtTGlzdCxTb3VyY2VCdWZmZXJMaXN0LFN0eWxlU2hlZXRMaXN0LFRleHRUcmFja0N1ZUxpc3QsJyArXG4gICdUZXh0VHJhY2tMaXN0LFRvdWNoTGlzdCcpLnNwbGl0KCcsJyk7XG5cbmZvciAodmFyIGkgPSAwOyBpIDwgRE9NSXRlcmFibGVzLmxlbmd0aDsgaSsrKSB7XG4gIHZhciBOQU1FID0gRE9NSXRlcmFibGVzW2ldO1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIHByb3RvID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgaWYgKHByb3RvICYmICFwcm90b1tUT19TVFJJTkdfVEFHXSkgaGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IEl0ZXJhdG9ycy5BcnJheTtcbn1cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2YzdiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxudmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWNhMVwiKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHsgZmlsbDogX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM2YmRcIikgfSk7XG5cbl9fd2VicGFja19yZXF1aXJlX18oXCI5YzZjXCIpKCdmaWxsJyk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNzFjMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjNhMzhcIik7XG52YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyNWViXCIpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI3MzNjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDI2LjEuMiBSZWZsZWN0LmNvbnN0cnVjdCh0YXJnZXQsIGFyZ3VtZW50c0xpc3QgWywgbmV3VGFyZ2V0XSlcbnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYzYjZcIik7XG52YXIgY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImExNTlcIik7XG52YXIgYUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc5YWFcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTRhZVwiKTtcbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmNzcyXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjI5NGNcIik7XG52YXIgYmluZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjMTg5XCIpO1xudmFyIHJDb25zdHJ1Y3QgPSAoX193ZWJwYWNrX3JlcXVpcmVfXyhcImU1M2RcIikuUmVmbGVjdCB8fCB7fSkuY29uc3RydWN0O1xuXG4vLyBNUyBFZGdlIHN1cHBvcnRzIG9ubHkgMiBhcmd1bWVudHMgYW5kIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbi8vIEZGIE5pZ2h0bHkgc2V0cyB0aGlyZCBhcmd1bWVudCBhcyBgbmV3LnRhcmdldGAsIGJ1dCBkb2VzIG5vdCBjcmVhdGUgYHRoaXNgIGZyb20gaXRcbnZhciBORVdfVEFSR0VUX0JVRyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gIShyQ29uc3RydWN0KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgW10sIEYpIGluc3RhbmNlb2YgRik7XG59KTtcbnZhciBBUkdTX0JVRyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJDb25zdHJ1Y3QoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChORVdfVEFSR0VUX0JVRyB8fCBBUkdTX0JVRyksICdSZWZsZWN0Jywge1xuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIGNvbnN0cnVjdChUYXJnZXQsIGFyZ3MgLyogLCBuZXdUYXJnZXQgKi8pIHtcbiAgICBhRnVuY3Rpb24oVGFyZ2V0KTtcbiAgICBhbk9iamVjdChhcmdzKTtcbiAgICB2YXIgbmV3VGFyZ2V0ID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyBUYXJnZXQgOiBhRnVuY3Rpb24oYXJndW1lbnRzWzJdKTtcbiAgICBpZiAoQVJHU19CVUcgJiYgIU5FV19UQVJHRVRfQlVHKSByZXR1cm4gckNvbnN0cnVjdChUYXJnZXQsIGFyZ3MsIG5ld1RhcmdldCk7XG4gICAgaWYgKFRhcmdldCA9PSBuZXdUYXJnZXQpIHtcbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgb3B0aW1pemF0aW9uIGZvciAwLTQgYXJndW1lbnRzXG4gICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBUYXJnZXQoKTtcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdKTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgICAgIH1cbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgbG90IG9mIGFyZ3VtZW50cyBjYXNlXG4gICAgICB2YXIgJGFyZ3MgPSBbbnVsbF07XG4gICAgICAkYXJncy5wdXNoLmFwcGx5KCRhcmdzLCBhcmdzKTtcbiAgICAgIHJldHVybiBuZXcgKGJpbmQuYXBwbHkoVGFyZ2V0LCAkYXJncykpKCk7XG4gICAgfVxuICAgIC8vIHdpdGggYWx0ZXJlZCBuZXdUYXJnZXQsIG5vdCBzdXBwb3J0IGJ1aWx0LWluIGNvbnN0cnVjdG9yc1xuICAgIHZhciBwcm90byA9IG5ld1RhcmdldC5wcm90b3R5cGU7XG4gICAgdmFyIGluc3RhbmNlID0gY3JlYXRlKGlzT2JqZWN0KHByb3RvKSA/IHByb3RvIDogT2JqZWN0LnByb3RvdHlwZSk7XG4gICAgdmFyIHJlc3VsdCA9IEZ1bmN0aW9uLmFwcGx5LmNhbGwoVGFyZ2V0LCBpbnN0YW5jZSwgYXJncyk7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiBpbnN0YW5jZTtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNzUxNFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuLy8gMjIuMS4zLjggQXJyYXkucHJvdG90eXBlLmZpbmQocHJlZGljYXRlLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxudmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWNhMVwiKTtcbnZhciAkZmluZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwYTQ5XCIpKDUpO1xudmFyIEtFWSA9ICdmaW5kJztcbnZhciBmb3JjZWQgPSB0cnVlO1xuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChLRVkgaW4gW10pIEFycmF5KDEpW0tFWV0oZnVuY3Rpb24gKCkgeyBmb3JjZWQgPSBmYWxzZTsgfSk7XG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZvcmNlZCwgJ0FycmF5Jywge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWM2Y1wiKShLRVkpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjc3MjZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjc3NGVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDJkNVwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNzdmMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ1ODhcIik7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjc5NGJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSAhX193ZWJwYWNrX3JlcXVpcmVfXyhcIjhlNjBcIikgJiYgIV9fd2VicGFja19yZXF1aXJlX18oXCIyOTRjXCIpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMWVjOVwiKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNzlhYVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNzllNVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiN2NkNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0MGMzXCIpO1xudmFyIElURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUxNjhcIikoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ4MWJcIik7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1ODRhXCIpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiN2U5MFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDlmNlwiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlNGFlXCIpO1xudmFyIGdldEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzNhMVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOGU2MFwiKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI4Mzc4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuMycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiODQzNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI4NGI0XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjliNVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmksIGNvbnRlbnQsICcnXV07XG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciBhZGQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDk5ZVwiKS5kZWZhdWx0XG52YXIgdXBkYXRlID0gYWRkKFwiY2EyYjBkN2VcIiwgY29udGVudCwgdHJ1ZSwge1wic291cmNlTWFwXCI6ZmFsc2UsXCJzaGFkb3dNb2RlXCI6ZmFsc2V9KTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiODZjY1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiY2I3Y1wiKTtcbnZhciBJRThfRE9NX0RFRklORSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjNjlhXCIpO1xudmFyIHRvUHJpbWl0aXZlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjZhOTlcIik7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5ZTFlXCIpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOGFhZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzJhNlwiKTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU4NGFcIikuT2JqZWN0LmtleXM7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOGI5N1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDNmNFwiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjYjdjXCIpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5YjQzXCIpKEZ1bmN0aW9uLmNhbGwsIF9fd2VicGFja19yZXF1aXJlX18oXCIxMWU5XCIpLmYoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLnNldCwgMik7XG4gICAgICAgIHNldCh0ZXN0LCBbXSk7XG4gICAgICAgIGJ1Z2d5ID0gISh0ZXN0IGluc3RhbmNlb2YgQXJyYXkpO1xuICAgICAgfSBjYXRjaCAoZSkgeyBidWdneSA9IHRydWU7IH1cbiAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgICAgICBjaGVjayhPLCBwcm90byk7XG4gICAgICAgIGlmIChidWdneSkgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICAgICAgZWxzZSBzZXQoTywgcHJvdG8pO1xuICAgICAgICByZXR1cm4gTztcbiAgICAgIH07XG4gICAgfSh7fSwgZmFsc2UpIDogdW5kZWZpbmVkKSxcbiAgY2hlY2s6IGNoZWNrXG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjhlNjBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhX193ZWJwYWNrX3JlcXVpcmVfXyhcIjI5NGNcIikoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjhmNjBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBjcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTE1OVwiKTtcbnZhciBkZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImFlYmRcIik7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDVmMlwiKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxuX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM1ZThcIikoSXRlcmF0b3JQcm90b3R5cGUsIF9fd2VicGFja19yZXF1aXJlX18oXCI1MTY4XCIpKCdpdGVyYXRvcicpLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5MDAzXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjZiNGNcIik7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjkwOTNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImNlMTBcIik7XG52YXIgaGlkZGVuS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlMTFlXCIpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5MTM4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM1ZThcIik7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOTMwNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIGdldEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzNhMVwiKTtcbnZhciBnT1BTID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjlhYTlcIik7XG52YXIgcElFID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM1NWRcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjQxZVwiKTtcbnZhciBJT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMzNWNcIik7XG52YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjk0Y1wiKShmdW5jdGlvbiAoKSB7XG4gIHZhciBBID0ge307XG4gIHZhciBCID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICB2YXIgUyA9IFN5bWJvbCgpO1xuICB2YXIgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7IEJba10gPSBrOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW1NdICE9IDcgfHwgT2JqZWN0LmtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IEs7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUID0gdG9PYmplY3QodGFyZ2V0KTtcbiAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICB3aGlsZSAoYUxlbiA+IGluZGV4KSB7XG4gICAgdmFyIFMgPSBJT2JqZWN0KGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgdmFyIGtleXMgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikgaWYgKGlzRW51bS5jYWxsKFMsIGtleSA9IGtleXNbaisrXSkpIFRba2V5XSA9IFNba2V5XTtcbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjk1ZDVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDBjM1wiKTtcbnZhciBJVEVSQVRPUiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1MTY4XCIpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0ODFiXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKS5pc0l0ZXJhYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPID0gT2JqZWN0KGl0KTtcbiAgcmV0dXJuIE9bSVRFUkFUT1JdICE9PSB1bmRlZmluZWRcbiAgICB8fCAnQEBpdGVyYXRvcicgaW4gT1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICB8fCBJdGVyYXRvcnMuaGFzT3duUHJvcGVydHkoY2xhc3NvZihPKSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjk2ZmJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gMjAuMi4yLjI4IE1hdGguc2lnbih4KVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnNpZ24gfHwgZnVuY3Rpb24gc2lnbih4KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgcmV0dXJuICh4ID0gK3gpID09IDAgfHwgeCAhPSB4ID8geCA6IHggPCAwID8gLTEgOiAxO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5YWE5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOWI0M1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDhlOFwiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5YzZjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDIyLjEuMy4zMSBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbnZhciBVTlNDT1BBQkxFUyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyYjRjXCIpKCd1bnNjb3BhYmxlcycpO1xudmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5pZiAoQXJyYXlQcm90b1tVTlNDT1BBQkxFU10gPT0gdW5kZWZpbmVkKSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzJlOVwiKShBcnJheVByb3RvLCBVTlNDT1BBQkxFUywge30pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5ZGVmXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0NTg4XCIpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOWUxZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzllNVwiKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYTE1OVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlNGFlXCIpO1xudmFyIGRQcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3ZTkwXCIpO1xudmFyIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjE2OTFcIik7XG52YXIgSUVfUFJPVE8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTU1OVwiKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMWVjOVwiKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMyZmNcIikuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImEzYzNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSlcbnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYzYjZcIik7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GLCAnT2JqZWN0JywgeyBhc3NpZ246IF9fd2VicGFja19yZXF1aXJlX18oXCI5MzA2XCIpIH0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImE0NWRcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX25vZGVfbW9kdWxlc192dWVfc3R5bGVfbG9hZGVyX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9pbmRleF9qc19yZWZfNl9vbmVPZl8xXzFfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2xvYWRlcnNfc3R5bGVQb3N0TG9hZGVyX2pzX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8yX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8zX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfaW5kZXhfanNfdnVlX2xvYWRlcl9vcHRpb25zX0NhbGVuZGFyVmlld192dWVfdnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9sYW5nX2Nzc19fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjNzZiXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ub2RlX21vZHVsZXNfdnVlX3N0eWxlX2xvYWRlcl9pbmRleF9qc19yZWZfNl9vbmVPZl8xXzBfbm9kZV9tb2R1bGVzX2Nzc19sb2FkZXJfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8xX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9sb2FkZXJzX3N0eWxlUG9zdExvYWRlcl9qc19ub2RlX21vZHVsZXNfcG9zdGNzc19sb2FkZXJfc3JjX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMl9ub2RlX21vZHVsZXNfcG9zdGNzc19sb2FkZXJfc3JjX2luZGV4X2pzX3JlZl82X29uZU9mXzFfM19ub2RlX21vZHVsZXNfY2FjaGVfbG9hZGVyX2Rpc3RfY2pzX2pzX3JlZl8wXzBfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2luZGV4X2pzX3Z1ZV9sb2FkZXJfb3B0aW9uc19DYWxlbmRhclZpZXdfdnVlX3Z1ZV90eXBlX3N0eWxlX2luZGV4XzBfbGFuZ19jc3NfX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX25vZGVfbW9kdWxlc192dWVfc3R5bGVfbG9hZGVyX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9pbmRleF9qc19yZWZfNl9vbmVPZl8xXzFfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2xvYWRlcnNfc3R5bGVQb3N0TG9hZGVyX2pzX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8yX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8zX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfaW5kZXhfanNfdnVlX2xvYWRlcl9vcHRpb25zX0NhbGVuZGFyVmlld192dWVfdnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9sYW5nX2Nzc19fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XG4vKiB1bnVzZWQgaGFybW9ueSByZWV4cG9ydCAqICovXG4gLyogdW51c2VkIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIF91bnVzZWRfd2VicGFja19kZWZhdWx0X2V4cG9ydCA9IChfbm9kZV9tb2R1bGVzX3Z1ZV9zdHlsZV9sb2FkZXJfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8wX25vZGVfbW9kdWxlc19jc3NfbG9hZGVyX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMV9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfbG9hZGVyc19zdHlsZVBvc3RMb2FkZXJfanNfbm9kZV9tb2R1bGVzX3Bvc3Rjc3NfbG9hZGVyX3NyY19pbmRleF9qc19yZWZfNl9vbmVPZl8xXzJfbm9kZV9tb2R1bGVzX3Bvc3Rjc3NfbG9hZGVyX3NyY19pbmRleF9qc19yZWZfNl9vbmVPZl8xXzNfbm9kZV9tb2R1bGVzX2NhY2hlX2xvYWRlcl9kaXN0X2Nqc19qc19yZWZfMF8wX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9pbmRleF9qc192dWVfbG9hZGVyX29wdGlvbnNfQ2FsZW5kYXJWaWV3X3Z1ZV92dWVfdHlwZV9zdHlsZV9pbmRleF8wX2xhbmdfY3NzX19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQuYSk7IFxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhNGJiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjhhYWVcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImE1YjJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYWEyOFwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYTc0NVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmNDEwXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhYTI4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oXCI3MzNjXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKS5SZWZsZWN0LmNvbnN0cnVjdDtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhYTc3XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjVjYTFcIik7XG52YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiZTEzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc5ZTVcIik7XG52YXIgc3BhY2VzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImZkZWZcIik7XG52YXIgc3BhY2UgPSAnWycgKyBzcGFjZXMgKyAnXSc7XG52YXIgbm9uID0gJ1xcdTIwMGJcXHUwMDg1JztcbnZhciBsdHJpbSA9IFJlZ0V4cCgnXicgKyBzcGFjZSArIHNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cChzcGFjZSArIHNwYWNlICsgJyokJyk7XG5cbnZhciBleHBvcnRlciA9IGZ1bmN0aW9uIChLRVksIGV4ZWMsIEFMSUFTKSB7XG4gIHZhciBleHAgPSB7fTtcbiAgdmFyIEZPUkNFID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXNwYWNlc1tLRVldKCkgfHwgbm9uW0tFWV0oKSAhPSBub247XG4gIH0pO1xuICB2YXIgZm4gPSBleHBbS0VZXSA9IEZPUkNFID8gZXhlYyh0cmltKSA6IHNwYWNlc1tLRVldO1xuICBpZiAoQUxJQVMpIGV4cFtBTElBU10gPSBmbjtcbiAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRSwgJ1N0cmluZycsIGV4cCk7XG59O1xuXG4vLyAxIC0+IFN0cmluZyN0cmltTGVmdFxuLy8gMiAtPiBTdHJpbmcjdHJpbVJpZ2h0XG4vLyAzIC0+IFN0cmluZyN0cmltXG52YXIgdHJpbSA9IGV4cG9ydGVyLnRyaW0gPSBmdW5jdGlvbiAoc3RyaW5nLCBUWVBFKSB7XG4gIHN0cmluZyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGx0cmltLCAnJyk7XG4gIGlmIChUWVBFICYgMikgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocnRyaW0sICcnKTtcbiAgcmV0dXJuIHN0cmluZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0ZXI7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYWFlM1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyA3LjIuOCBJc1JlZ0V4cChhcmd1bWVudClcbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkM2Y0XCIpO1xudmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyZDk1XCIpO1xudmFyIE1BVENIID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJiNGNcIikoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYWViZFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImIwYzVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciByZWdleHBFeGVjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUyMGFcIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWNhMVwiKSh7XG4gIHRhcmdldDogJ1JlZ0V4cCcsXG4gIHByb3RvOiB0cnVlLFxuICBmb3JjZWQ6IHJlZ2V4cEV4ZWMgIT09IC8uLy5leGVjXG59LCB7XG4gIGV4ZWM6IHJlZ2V4cEV4ZWNcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImIwZGNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU0YWVcIik7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVudHJpZXMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSBhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYjQ0N1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiM2EzOFwiKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImI4ZTNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImJlMTNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJiZjBiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBwSUUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzU1ZFwiKTtcbnZhciBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImFlYmRcIik7XG52YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM2YzNcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMWJjM1wiKTtcbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDdlM1wiKTtcbnZhciBJRThfRE9NX0RFRklORSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3OTRiXCIpO1xudmFyIGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG5leHBvcnRzLmYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOGU2MFwiKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzE4OVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3OWFhXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImY3NzJcIik7XG52YXIgaW52b2tlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMwMjRcIik7XG52YXIgYXJyYXlTbGljZSA9IFtdLnNsaWNlO1xudmFyIGZhY3RvcmllcyA9IHt9O1xuXG52YXIgY29uc3RydWN0ID0gZnVuY3Rpb24gKEYsIGxlbiwgYXJncykge1xuICBpZiAoIShsZW4gaW4gZmFjdG9yaWVzKSkge1xuICAgIGZvciAodmFyIG4gPSBbXSwgaSA9IDA7IGkgPCBsZW47IGkrKykgbltpXSA9ICdhWycgKyBpICsgJ10nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgIGZhY3Rvcmllc1tsZW5dID0gRnVuY3Rpb24oJ0YsYScsICdyZXR1cm4gbmV3IEYoJyArIG4uam9pbignLCcpICsgJyknKTtcbiAgfSByZXR1cm4gZmFjdG9yaWVzW2xlbl0oRiwgYXJncyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLmJpbmQgfHwgZnVuY3Rpb24gYmluZCh0aGF0IC8qICwgLi4uYXJncyAqLykge1xuICB2YXIgZm4gPSBhRnVuY3Rpb24odGhpcyk7XG4gIHZhciBwYXJ0QXJncyA9IGFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICB2YXIgYm91bmQgPSBmdW5jdGlvbiAoLyogYXJncy4uLiAqLykge1xuICAgIHZhciBhcmdzID0gcGFydEFyZ3MuY29uY2F0KGFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGJvdW5kID8gY29uc3RydWN0KGZuLCBhcmdzLmxlbmd0aCwgYXJncykgOiBpbnZva2UoZm4sIGFyZ3MsIHRoYXQpO1xuICB9O1xuICBpZiAoaXNPYmplY3QoZm4ucHJvdG90eXBlKSkgYm91bmQucHJvdG90eXBlID0gZm4ucHJvdG90eXBlO1xuICByZXR1cm4gYm91bmQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImMzNjZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjgyMVwiKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5ZGVmXCIpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3N2YxXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzM2N1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGFkZFRvVW5zY29wYWJsZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODQzNlwiKTtcbnZhciBzdGVwID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUwZWRcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ4MWJcIik7XG52YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM2YzNcIik7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMwZjFcIikoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjM2ExXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU2ZjNcIik7XG52YXIgZW51bUJ1Z0tleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMTY5MVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzVmNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3NzI2XCIpO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2OWE4XCIpO1xudmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyZDk1XCIpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjVkYmNcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmE5OVwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3OWU1XCIpO1xudmFyIGdPUE4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTA5M1wiKS5mO1xudmFyIGdPUEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMTFlOVwiKS5mO1xudmFyIGRQID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2Y2NcIikuZjtcbnZhciAkdHJpbSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhYTc3XCIpLnRyaW07XG52YXIgTlVNQkVSID0gJ051bWJlcic7XG52YXIgJE51bWJlciA9IGdsb2JhbFtOVU1CRVJdO1xudmFyIEJhc2UgPSAkTnVtYmVyO1xudmFyIHByb3RvID0gJE51bWJlci5wcm90b3R5cGU7XG4vLyBPcGVyYSB+MTIgaGFzIGJyb2tlbiBPYmplY3QjdG9TdHJpbmdcbnZhciBCUk9LRU5fQ09GID0gY29mKF9fd2VicGFja19yZXF1aXJlX18oXCIyYWViXCIpKHByb3RvKSkgPT0gTlVNQkVSO1xudmFyIFRSSU0gPSAndHJpbScgaW4gU3RyaW5nLnByb3RvdHlwZTtcblxuLy8gNy4xLjMgVG9OdW1iZXIoYXJndW1lbnQpXG52YXIgdG9OdW1iZXIgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGl0ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsIGZhbHNlKTtcbiAgaWYgKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyAmJiBpdC5sZW5ndGggPiAyKSB7XG4gICAgaXQgPSBUUklNID8gaXQudHJpbSgpIDogJHRyaW0oaXQsIDMpO1xuICAgIHZhciBmaXJzdCA9IGl0LmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIHRoaXJkLCByYWRpeCwgbWF4Q29kZTtcbiAgICBpZiAoZmlyc3QgPT09IDQzIHx8IGZpcnN0ID09PSA0NSkge1xuICAgICAgdGhpcmQgPSBpdC5jaGFyQ29kZUF0KDIpO1xuICAgICAgaWYgKHRoaXJkID09PSA4OCB8fCB0aGlyZCA9PT0gMTIwKSByZXR1cm4gTmFOOyAvLyBOdW1iZXIoJysweDEnKSBzaG91bGQgYmUgTmFOLCBvbGQgVjggZml4XG4gICAgfSBlbHNlIGlmIChmaXJzdCA9PT0gNDgpIHtcbiAgICAgIHN3aXRjaCAoaXQuY2hhckNvZGVBdCgxKSkge1xuICAgICAgICBjYXNlIDY2OiBjYXNlIDk4OiByYWRpeCA9IDI7IG1heENvZGUgPSA0OTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgL14wYlswMV0rJC9pXG4gICAgICAgIGNhc2UgNzk6IGNhc2UgMTExOiByYWRpeCA9IDg7IG1heENvZGUgPSA1NTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgL14wb1swLTddKyQvaVxuICAgICAgICBkZWZhdWx0OiByZXR1cm4gK2l0O1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgZGlnaXRzID0gaXQuc2xpY2UoMiksIGkgPSAwLCBsID0gZGlnaXRzLmxlbmd0aCwgY29kZTsgaSA8IGw7IGkrKykge1xuICAgICAgICBjb2RlID0gZGlnaXRzLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIC8vIHBhcnNlSW50IHBhcnNlcyBhIHN0cmluZyB0byBhIGZpcnN0IHVuYXZhaWxhYmxlIHN5bWJvbFxuICAgICAgICAvLyBidXQgVG9OdW1iZXIgc2hvdWxkIHJldHVybiBOYU4gaWYgYSBzdHJpbmcgY29udGFpbnMgdW5hdmFpbGFibGUgc3ltYm9sc1xuICAgICAgICBpZiAoY29kZSA8IDQ4IHx8IGNvZGUgPiBtYXhDb2RlKSByZXR1cm4gTmFOO1xuICAgICAgfSByZXR1cm4gcGFyc2VJbnQoZGlnaXRzLCByYWRpeCk7XG4gICAgfVxuICB9IHJldHVybiAraXQ7XG59O1xuXG5pZiAoISROdW1iZXIoJyAwbzEnKSB8fCAhJE51bWJlcignMGIxJykgfHwgJE51bWJlcignKzB4MScpKSB7XG4gICROdW1iZXIgPSBmdW5jdGlvbiBOdW1iZXIodmFsdWUpIHtcbiAgICB2YXIgaXQgPSBhcmd1bWVudHMubGVuZ3RoIDwgMSA/IDAgOiB2YWx1ZTtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgcmV0dXJuIHRoYXQgaW5zdGFuY2VvZiAkTnVtYmVyXG4gICAgICAvLyBjaGVjayBvbiAxLi5jb25zdHJ1Y3Rvcihmb28pIGNhc2VcbiAgICAgICYmIChCUk9LRU5fQ09GID8gZmFpbHMoZnVuY3Rpb24gKCkgeyBwcm90by52YWx1ZU9mLmNhbGwodGhhdCk7IH0pIDogY29mKHRoYXQpICE9IE5VTUJFUilcbiAgICAgICAgPyBpbmhlcml0SWZSZXF1aXJlZChuZXcgQmFzZSh0b051bWJlcihpdCkpLCB0aGF0LCAkTnVtYmVyKSA6IHRvTnVtYmVyKGl0KTtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5ZTFlXCIpID8gZ09QTihCYXNlKSA6IChcbiAgICAvLyBFUzM6XG4gICAgJ01BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLCcgK1xuICAgIC8vIEVTNiAoaW4gY2FzZSwgaWYgbW9kdWxlcyB3aXRoIEVTNiBOdW1iZXIgc3RhdGljcyByZXF1aXJlZCBiZWZvcmUpOlxuICAgICdFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsJyArXG4gICAgJ01JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXInXG4gICkuc3BsaXQoJywnKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOyBqKyspIHtcbiAgICBpZiAoaGFzKEJhc2UsIGtleSA9IGtleXNbal0pICYmICFoYXMoJE51bWJlciwga2V5KSkge1xuICAgICAgZFAoJE51bWJlciwga2V5LCBnT1BEKEJhc2UsIGtleSkpO1xuICAgIH1cbiAgfVxuICAkTnVtYmVyLnByb3RvdHlwZSA9IHByb3RvO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICROdW1iZXI7XG4gIF9fd2VicGFja19yZXF1aXJlX18oXCIyYWJhXCIpKGdsb2JhbCwgTlVNQkVSLCAkTnVtYmVyKTtcbn1cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjNjlhXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oXCI5ZTFlXCIpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzllNVwiKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoX193ZWJwYWNrX3JlcXVpcmVfXyhcIjIzMGVcIikoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImM3NmJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIxM2VmXCIpO1xuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaSwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIGFkZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0OTllXCIpLmRlZmF1bHRcbnZhciB1cGRhdGUgPSBhZGQoXCI5OTU4YTMzZVwiLCBjb250ZW50LCB0cnVlLCB7XCJzb3VyY2VNYXBcIjpmYWxzZSxcInNoYWRvd01vZGVcIjpmYWxzZX0pO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjOGJiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU0YTFcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImNhNWFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiY2I3Y1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDNmNFwiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiY2QxY1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyA5LjQuMi4zIEFycmF5U3BlY2llc0NyZWF0ZShvcmlnaW5hbEFycmF5LCBsZW5ndGgpXG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU4NTNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsKSkobGVuZ3RoKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiY2UxMFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjY5YThcIik7XG52YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjY4MjFcIik7XG52YXIgYXJyYXlJbmRleE9mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImMzNjZcIikoZmFsc2UpO1xudmFyIElFX1BST1RPID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYxM2JcIikoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImNlN2VcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2M2I2XCIpO1xudmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyOTRjXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7XG4gIHZhciBmbiA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXTtcbiAgdmFyIGV4cCA9IHt9O1xuICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZDJkNVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiMTY1NFwiKTtcbl9fd2VicGFja19yZXF1aXJlX18oXCI1NDliXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKS5BcnJheS5mcm9tO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImQzZjRcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZDg2NFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzlhYVwiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJkOGU4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJkOWY2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlNGFlXCIpO1xudmFyIElFOF9ET01fREVGSU5FID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc5NGJcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMWJjM1wiKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjhlNjBcIikgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJkYmRiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBjb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU4NGFcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU1M2RcIik7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IF9fd2VicGFja19yZXF1aXJlX18oXCJiOGUzXCIpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJlMTFlXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImU0YWVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImY3NzJcIik7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImU1M2RcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImU2ZjNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwN2UzXCIpO1xudmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzNmMzXCIpO1xudmFyIGFycmF5SW5kZXhPZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1YjRlXCIpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NTU5XCIpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSBpZiAoa2V5ICE9IElFX1BST1RPKSBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJlODUzXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkM2Y0XCIpO1xudmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMTE2OVwiKTtcbnZhciBTUEVDSUVTID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJiNGNcIikoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsKSkge1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJlYWQ2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmNzcyXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU0YWVcIik7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoTywgcHJvdG8pIHtcbiAgYW5PYmplY3QoTyk7XG4gIGlmICghaXNPYmplY3QocHJvdG8pICYmIHByb3RvICE9PSBudWxsKSB0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG59O1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBmdW5jdGlvbiAodGVzdCwgYnVnZ3ksIHNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ4NjRcIikoRnVuY3Rpb24uY2FsbCwgX193ZWJwYWNrX3JlcXVpcmVfXyhcImJmMGJcIikuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZWJkNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjYjdjXCIpO1xudmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkOGU4XCIpO1xudmFyIFNQRUNJRVMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmI0Y1wiKSgnc3BlY2llcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgRCkge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBEIDogYUZ1bmN0aW9uKFMpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJmNDEwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oXCIxYWY2XCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKS5BcnJheS5pc0FycmF5O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImY3NzJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZmFiMlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzcyNlwiKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImZhZTNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UvbGliL2NvbW1hbmRzL2J1aWxkL3NldFB1YmxpY1BhdGguanNcbi8vIFRoaXMgZmlsZSBpcyBpbXBvcnRlZCBpbnRvIGxpYi93YyBjbGllbnQgYnVuZGxlcy5cblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIHZhciBzZXRQdWJsaWNQYXRoX2lcbiAgaWYgKChzZXRQdWJsaWNQYXRoX2kgPSB3aW5kb3cuZG9jdW1lbnQuY3VycmVudFNjcmlwdCkgJiYgKHNldFB1YmxpY1BhdGhfaSA9IHNldFB1YmxpY1BhdGhfaS5zcmMubWF0Y2goLyguK1xcLylbXi9dK1xcLmpzKFxcPy4qKT8kLykpKSB7XG4gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2V0UHVibGljUGF0aF9pWzFdIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgfVxufVxuXG4vLyBJbmRpY2F0ZSB0byB3ZWJwYWNrIHRoYXQgdGhpcyBmaWxlIGNhbiBiZSBjb25jYXRlbmF0ZWRcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNldFB1YmxpY1BhdGggPSAobnVsbCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcImQ2NjM5OWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL0NhbGVuZGFyVmlldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjQwN2I4NzAmXG52YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7Y2xhc3M6W1xuXHRcdCdjdi13cmFwcGVyJyxcblx0XHQnbG9jYWxlLScgKyBfdm0ubGFuZ3VhZ2VDb2RlKF92bS5kaXNwbGF5TG9jYWxlKSxcblx0XHQnbG9jYWxlLScgKyBfdm0uZGlzcGxheUxvY2FsZSxcblx0XHQneScgKyBfdm0ucGVyaW9kU3RhcnQuZ2V0RnVsbFllYXIoKSxcblx0XHQnbScgKyBfdm0ucGFkZGVkTW9udGgoX3ZtLnBlcmlvZFN0YXJ0KSxcblx0XHQncGVyaW9kLScgKyBfdm0uZGlzcGxheVBlcmlvZFVvbSxcblx0XHQncGVyaW9kQ291bnQtJyArIF92bS5kaXNwbGF5UGVyaW9kQ291bnQsXG5cdFx0e1xuXHRcdFx0cGFzdDogX3ZtLmlzUGFzdE1vbnRoKF92bS5wZXJpb2RTdGFydCksXG5cdFx0XHRmdXR1cmU6IF92bS5pc0Z1dHVyZU1vbnRoKF92bS5wZXJpb2RTdGFydCksXG5cdFx0XHRub0ludGw6ICFfdm0uc3VwcG9ydHNJbnRsLFxuXHRcdH0gXX0sW192bS5fdChcImhlYWRlclwiLG51bGwse1wiaGVhZGVyUHJvcHNcIjpfdm0uaGVhZGVyUHJvcHN9KSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjdi1oZWFkZXItZGF5c1wifSxbX3ZtLl9sKChfdm0ud2Vla2RheU5hbWVzKSxmdW5jdGlvbihsYWJlbCxpbmRleCl7cmV0dXJuIFtfdm0uX3QoXCJkYXlIZWFkZXJcIixbX2MoJ2Rpdicse2tleTpfdm0uZ2V0Q29sdW1uRE9XQ2xhc3MoaW5kZXgpLHN0YXRpY0NsYXNzOlwiY3YtaGVhZGVyLWRheVwiLGNsYXNzOl92bS5nZXRDb2x1bW5ET1dDbGFzcyhpbmRleCl9LFtfdm0uX3YoXCJcXG5cXHRcXHRcXHRcXHRcXHRcIitfdm0uX3MobGFiZWwpK1wiXFxuXFx0XFx0XFx0XFx0XCIpXSldLHtcImluZGV4XCI6X3ZtLmdldENvbHVtbkRPV0NsYXNzKGluZGV4KSxcImxhYmVsXCI6bGFiZWx9KV19KV0sMiksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY3Ytd2Vla3NcIn0sX3ZtLl9sKChfdm0ud2Vla3NPZlBlcmlvZCksZnVuY3Rpb24od2Vla1N0YXJ0LHdlZWtJbmRleCl7cmV0dXJuIF9jKCdkaXYnLHtrZXk6KHdlZWtJbmRleCArIFwiLXdlZWtcIiksY2xhc3M6W1xuXHRcdFx0XHQnY3Ytd2VlaycsXG5cdFx0XHRcdCd3ZWVrJyArICh3ZWVrSW5kZXggKyAxKSxcblx0XHRcdFx0J3dzJyArIF92bS5pc29ZZWFyTW9udGhEYXkod2Vla1N0YXJ0KSBdfSxbX3ZtLl9sKChfdm0uZGF5c09mV2Vlayh3ZWVrU3RhcnQpKSxmdW5jdGlvbihkYXksZGF5SW5kZXgpe3JldHVybiBfYygnZGl2Jyx7a2V5Ol92bS5nZXRDb2x1bW5ET1dDbGFzcyhkYXlJbmRleCksY2xhc3M6W1xuXHRcdFx0XHRcdCdjdi1kYXknLFxuXHRcdFx0XHRcdF92bS5nZXRDb2x1bW5ET1dDbGFzcyhkYXlJbmRleCksXG5cdFx0XHRcdFx0J2QnICsgX3ZtLmlzb1llYXJNb250aERheShkYXkpLFxuXHRcdFx0XHRcdCdkJyArIF92bS5pc29Nb250aERheShkYXkpLFxuXHRcdFx0XHRcdCdkJyArIF92bS5wYWRkZWREYXkoZGF5KSxcblx0XHRcdFx0XHQnaW5zdGFuY2UnICsgX3ZtLmluc3RhbmNlT2ZNb250aChkYXkpLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRvZGF5OiBfdm0uaXNTYW1lRGF0ZShkYXksIF92bS50b2RheSgpKSxcblx0XHRcdFx0XHRcdG91dHNpZGVPZk1vbnRoOiAhX3ZtLmlzU2FtZU1vbnRoKGRheSwgX3ZtLmRlZmF1bHRlZFNob3dEYXRlKSxcblx0XHRcdFx0XHRcdHBhc3Q6IF92bS5pc0luUGFzdChkYXkpLFxuXHRcdFx0XHRcdFx0ZnV0dXJlOiBfdm0uaXNJbkZ1dHVyZShkYXkpLFxuXHRcdFx0XHRcdFx0bGFzdDogX3ZtLmlzTGFzdERheU9mTW9udGgoZGF5KSxcblx0XHRcdFx0XHRcdGxhc3RJbnN0YW5jZTogX3ZtLmlzTGFzdEluc3RhbmNlT2ZNb250aChkYXkpLFxuXHRcdFx0XHRcdH0gXS5jb25jYXQoICgoX3ZtLmRhdGVDbGFzc2VzICYmIF92bS5kYXRlQ2xhc3Nlc1tfdm0uaXNvWWVhck1vbnRoRGF5KGRheSldKSB8fCBudWxsKSApLG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLm9uQ2xpY2tEYXkoZGF5KX0sXCJkcm9wXCI6ZnVuY3Rpb24oJGV2ZW50KXskZXZlbnQucHJldmVudERlZmF1bHQoKTtyZXR1cm4gX3ZtLm9uRHJvcChkYXksICRldmVudCl9LFwiZHJhZ292ZXJcIjpmdW5jdGlvbigkZXZlbnQpeyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBfdm0ub25EcmFnT3ZlcihkYXkpfSxcImRyYWdlbnRlclwiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5vbkRyYWdFbnRlcihkYXksICRldmVudCl9LFwiZHJhZ2xlYXZlXCI6ZnVuY3Rpb24oJGV2ZW50KXskZXZlbnQucHJldmVudERlZmF1bHQoKTtyZXR1cm4gX3ZtLm9uRHJhZ0xlYXZlKGRheSwgJGV2ZW50KX19fSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY3YtZGF5LW51bWJlclwifSxbX3ZtLl92KF92bS5fcyhkYXkuZ2V0RGF0ZSgpKSldKSxfdm0uX3QoXCJkYXlDb250ZW50XCIsbnVsbCx7XCJkYXlcIjpkYXl9KV0sMil9KSxfdm0uX2woKF92bS5nZXRXZWVrRXZlbnRzKHdlZWtTdGFydCkpLGZ1bmN0aW9uKGUpe3JldHVybiBbX3ZtLl90KFwiZXZlbnRcIixbX2MoJ2Rpdicse2tleTplLmlkLHN0YXRpY0NsYXNzOlwiY3YtZXZlbnRcIixjbGFzczplLmNsYXNzZXMsc3R5bGU6KChcInRvcDpcIiArIChfdm0uZ2V0RXZlbnRUb3AoZSkpICsgXCI7XCIgKyAoZS5vcmlnaW5hbEV2ZW50LnN0eWxlKSkpLGF0dHJzOntcImRyYWdnYWJsZVwiOl92bS5lbmFibGVEcmFnRHJvcCxcInRpdGxlXCI6ZS50aXRsZX0sZG9tUHJvcHM6e1wiaW5uZXJIVE1MXCI6X3ZtLl9zKF92bS5nZXRFdmVudFRpdGxlKGUpKX0sb246e1wiZHJhZ3N0YXJ0XCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLm9uRHJhZ1N0YXJ0KGUsICRldmVudCl9LFwibW91c2VlbnRlclwiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5vbk1vdXNlRW50ZXIoZSl9LFwibW91c2VsZWF2ZVwiOl92bS5vbk1vdXNlTGVhdmUsXCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO3JldHVybiBfdm0ub25DbGlja0V2ZW50KGUpfX19KV0se1wiZXZlbnRcIjplLFwid2Vla1N0YXJ0RGF0ZVwiOndlZWtTdGFydCxcInRvcFwiOl92bS5nZXRFdmVudFRvcChlKX0pXX0pXSwyKX0pLDApXSwyKX1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvQ2FsZW5kYXJWaWV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NDA3Yjg3MCZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2NvcmUtanMvYXJyYXkvaXMtYXJyYXkuanNcbnZhciBpc19hcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhNzQ1XCIpO1xudmFyIGlzX2FycmF5X2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGlzX2FycmF5KTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9oZWxwZXJzL2VzbS9hcnJheVdpdGhvdXRIb2xlcy5qc1xuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7XG4gIGlmIChpc19hcnJheV9kZWZhdWx0KCkoYXJyKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcnIyW2ldID0gYXJyW2ldO1xuICAgIH1cblxuICAgIHJldHVybiBhcnIyO1xuICB9XG59XG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9hcnJheS9mcm9tLmpzXG52YXIgZnJvbSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3NzRlXCIpO1xudmFyIGZyb21fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZnJvbSk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL2lzLWl0ZXJhYmxlLmpzXG52YXIgaXNfaXRlcmFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzhiYlwiKTtcbnZhciBpc19pdGVyYWJsZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihpc19pdGVyYWJsZSk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzXG5cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7XG4gIGlmIChpc19pdGVyYWJsZV9kZWZhdWx0KCkoT2JqZWN0KGl0ZXIpKSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaXRlcikgPT09IFwiW29iamVjdCBBcmd1bWVudHNdXCIpIHJldHVybiBmcm9tX2RlZmF1bHQoKShpdGVyKTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9lc20vbm9uSXRlcmFibGVTcHJlYWQuanNcbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheS5qc1xuXG5cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikge1xuICByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2NvcmUtanMvb2JqZWN0L2Fzc2lnbi5qc1xudmFyIG9iamVjdF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE3NlwiKTtcbnZhciBhc3NpZ25fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4ob2JqZWN0X2Fzc2lnbik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zb3J0LmpzXG52YXIgZXM2X2FycmF5X3NvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTVkZFwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguc2lnbi5qc1xudmFyIGVzNl9tYXRoX3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMGIyMVwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbGwuanNcbnZhciBlczZfYXJyYXlfZmlsbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2YzdiXCIpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yLmpzXG52YXIgZXM2X251bWJlcl9jb25zdHJ1Y3RvciA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjNWY2XCIpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9yZWZsZWN0L2NvbnN0cnVjdC5qc1xudmFyIGNvbnN0cnVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhNWIyXCIpO1xudmFyIGNvbnN0cnVjdF9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb25zdHJ1Y3QpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xudmFyIHNldF9wcm90b3R5cGVfb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNGQxNlwiKTtcbnZhciBzZXRfcHJvdG90eXBlX29mX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHNldF9wcm90b3R5cGVfb2YpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2hlbHBlcnMvZXNtL3NldFByb3RvdHlwZU9mLmpzXG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIF9zZXRQcm90b3R5cGVPZiA9IHNldF9wcm90b3R5cGVfb2ZfZGVmYXVsdC5hIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuXG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2hlbHBlcnMvZXNtL2NvbnN0cnVjdC5qc1xuXG5cblxuZnVuY3Rpb24gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIWNvbnN0cnVjdF9kZWZhdWx0LmEpIHJldHVybiBmYWxzZTtcbiAgaWYgKGNvbnN0cnVjdF9kZWZhdWx0LmEuc2hhbSkgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlO1xuXG4gIHRyeSB7XG4gICAgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjb25zdHJ1Y3RfZGVmYXVsdCgpKERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykge1xuICBpZiAoaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkpIHtcbiAgICBjb25zdHJ1Y3RfY29uc3RydWN0ID0gY29uc3RydWN0X2RlZmF1bHQuYTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdHJ1Y3RfY29uc3RydWN0ID0gZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7XG4gICAgICB2YXIgYSA9IFtudWxsXTtcbiAgICAgIGEucHVzaC5hcHBseShhLCBhcmdzKTtcbiAgICAgIHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTtcbiAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDb25zdHJ1Y3RvcigpO1xuICAgICAgaWYgKENsYXNzKSBfc2V0UHJvdG90eXBlT2YoaW5zdGFuY2UsIENsYXNzLnByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBjb25zdHJ1Y3RfY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0LmpzXG52YXIgZXM2X3JlZ2V4cF9zcGxpdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyOGE1XCIpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9vYmplY3Qva2V5cy5qc1xudmFyIGtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTRiYlwiKTtcbnZhciBrZXlzX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGtleXMpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC5qc1xudmFyIGVzNl9hcnJheV9maW5kID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc1MTRcIik7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvQ2FsZW5kYXJNYXRoTWl4aW4uanNcblxuXG5cblxuXG5cblxuXG5cbi8qXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuVGhpcyBtaXgtaW4gaW5jbHVkZXMgYSBjb21wdXRlZCBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRoYXRcbmFyZSB1c2VmdWwgaW4gZGlzcGxheWluZyBhIGNhbGVuZGFyLiBJdCBoYXMgbm8gc3RhdGUuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKi9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIENhbGVuZGFyTWF0aE1peGluID0gKHtcbiAgbWV0aG9kczoge1xuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIC8vIFNlcmllc1xuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIHRvZGF5OiBmdW5jdGlvbiB0b2RheSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGVPbmx5KG5ldyBEYXRlKCkpO1xuICAgIH0sXG4gICAgYmVnaW5uaW5nT2ZQZXJpb2Q6IGZ1bmN0aW9uIGJlZ2lubmluZ09mUGVyaW9kKGQsIHBlcmlvZFVvbSwgc3RhcnREb3cpIHtcbiAgICAgIHN3aXRjaCAocGVyaW9kVW9tKSB7XG4gICAgICAgIGNhc2UgXCJ5ZWFyXCI6XG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCk7XG5cbiAgICAgICAgY2FzZSBcIm1vbnRoXCI6XG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpKTtcblxuICAgICAgICBjYXNlIFwid2Vla1wiOlxuICAgICAgICAgIHJldHVybiB0aGlzLmJlZ2lubmluZ09mV2VlayhkLCBzdGFydERvdyk7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRheXNPZldlZWs6IGZ1bmN0aW9uIGRheXNPZldlZWsod2Vla1N0YXJ0KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gQXJyYXkoNykuZmlsbCgpLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgICAgICByZXR1cm4gX3RoaXMuYWRkRGF5cyh3ZWVrU3RhcnQsIGkpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIC8vIERhdGUgdHJhbnNmb3JtcyB0aGF0IHJldGFpbiB0aW1lIG9mIGRheVxuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgYWRkRGF5czogZnVuY3Rpb24gYWRkRGF5cyhkLCBkYXlzKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpICsgZGF5cywgZC5nZXRIb3VycygpLCBkLmdldE1pbnV0ZXMoKSwgZC5nZXRTZWNvbmRzKCkpO1xuICAgIH0sXG4gICAgYmVnaW5uaW5nT2ZXZWVrOiBmdW5jdGlvbiBiZWdpbm5pbmdPZldlZWsoZCwgc3RhcnREb3cpIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZERheXMoZCwgKHN0YXJ0RG93IC0gZC5nZXREYXkoKSAtIDcpICUgLTcpO1xuICAgIH0sXG4gICAgZW5kT2ZXZWVrOiBmdW5jdGlvbiBlbmRPZldlZWsoZCwgc3RhcnREb3cpIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZERheXModGhpcy5iZWdpbm5pbmdPZldlZWsoZCwgc3RhcnREb3cpLCA3KTtcbiAgICB9LFxuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgLy8gRGF0ZSB0cmFuc2Zvcm1zIHRoYXQgaWdub3JlL3dpcGUgdGltZSBvZiBkYXlcbiAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIGJlZ2lubmluZ09mTW9udGg6IGZ1bmN0aW9uIGJlZ2lubmluZ09mTW9udGgoZCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpKTtcbiAgICB9LFxuICAgIGluc3RhbmNlT2ZNb250aDogZnVuY3Rpb24gaW5zdGFuY2VPZk1vbnRoKGQpIHtcbiAgICAgIHJldHVybiBNYXRoLmNlaWwoZC5nZXREYXRlKCkgLyA3KTtcbiAgICB9LFxuICAgIC8vIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50cyBhIGRhdGUgYnkgYSBnaXZlbiBudW1iZXIgb2YgZGF0ZSB1bml0cy4gQWNjZXB0ZWQgdW5pdHMgYXJlOiB5ZWFyLCBtb250aCwgd2Vlay4gRm9yIHllYXIgYW5kIG1vbnRoLFxuICAgIC8vIHRoZSBkYXkgb2YgdGhlIG1vbnRoIGlzIHVuY2hhbmdlZC4gVGhpcyBjb3VsZCBjYXVzZSBhbiB1bmV4cGVjdGVkIHJlc3VsdCBpZiB0aGUgdW5pdHMgYXJlIFwibW9udGhcIiBhbmQgdGhlIHN0YXJ0aW5nIGRheSBpc1xuICAgIC8vIGhpZ2hlciB0aGFuIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZGVzdGluYXRpb24gbW9udGguIFRoZSBjb3VudCBjYW4gYmUgcG9zaXRpdmUgb3IgbmVnYXRpdmUuXG4gICAgaW5jcmVtZW50UGVyaW9kOiBmdW5jdGlvbiBpbmNyZW1lbnRQZXJpb2QoZCwgdW9tLCBjb3VudCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSArICh1b20gPT0gXCJ5ZWFyXCIgPyBjb3VudCA6IDApLCBkLmdldE1vbnRoKCkgKyAodW9tID09IFwibW9udGhcIiA/IGNvdW50IDogMCksIGQuZ2V0RGF0ZSgpICsgKHVvbSA9PSBcIndlZWtcIiA/IGNvdW50ICogNyA6IDApKTtcbiAgICB9LFxuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIC8vIERhdGUgZm9ybWF0dGluZ1xuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIHBhZGRlZE1vbnRoOiBmdW5jdGlvbiBwYWRkZWRNb250aChkKSB7XG4gICAgICByZXR1cm4gKFwiMFwiICsgU3RyaW5nKGQuZ2V0TW9udGgoKSArIDEpKS5zbGljZSgtMik7XG4gICAgfSxcbiAgICBwYWRkZWREYXk6IGZ1bmN0aW9uIHBhZGRlZERheShkKSB7XG4gICAgICByZXR1cm4gKFwiMFwiICsgU3RyaW5nKGQuZ2V0RGF0ZSgpKSkuc2xpY2UoLTIpO1xuICAgIH0sXG4gICAgaXNvWWVhck1vbnRoOiBmdW5jdGlvbiBpc29ZZWFyTW9udGgoZCkge1xuICAgICAgcmV0dXJuIGQuZ2V0RnVsbFllYXIoKSArIFwiLVwiICsgdGhpcy5wYWRkZWRNb250aChkKTtcbiAgICB9LFxuICAgIGlzb1llYXJNb250aERheTogZnVuY3Rpb24gaXNvWWVhck1vbnRoRGF5KGQpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzb1llYXJNb250aChkKSArIFwiLVwiICsgdGhpcy5wYWRkZWREYXkoZCk7XG4gICAgfSxcbiAgICBpc29Nb250aERheTogZnVuY3Rpb24gaXNvTW9udGhEYXkoZCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFkZGVkTW9udGgoZCkgKyBcIi1cIiArIHRoaXMucGFkZGVkRGF5KGQpO1xuICAgIH0sXG4gICAgZm9ybWF0dGVkVGltZTogZnVuY3Rpb24gZm9ybWF0dGVkVGltZShkLCBsb2NhbGUsIG9wdGlvbnMpIHtcbiAgICAgIC8vIEFzc3VtZSBtaWRuaWdodCA9IFwiYWxsIGRheVwiIG9yIGluZGV0ZXJtaW5hdGUgdGltZVxuICAgICAgaWYgKGQuZ2V0SG91cnMoKSA9PT0gMCAmJiBkLmdldE1pbnV0ZXMoKSA9PT0gMCAmJiBkLmdldFNlY29uZHMoKSA9PT0gMCkgcmV0dXJuIFwiXCI7IC8vIElmIEludGwgaXMgbm90IHN1cHBvcnRlZCwgc2VuZCBiYWNrIHRoZSAyNC1ob3VyLCB6ZXJvLXBhZGRlZFxuICAgICAgLy8gaG91cnMgYW5kIG1pbnV0ZXMsIGV4cHJlc3NlZCBhcyBsb2NhbCB0aW1lLlxuXG4gICAgICBpZiAoIXRoaXMuc3VwcG9ydHNJbnRsKCkpIHtcbiAgICAgICAgdmFyIG1zID0gbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7IC8vIFRaIG9mZnNldCBpbiBtaWxsaXNlY29uZHNcblxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZCAtIG1zKS50b0lTT1N0cmluZygpLnNsaWNlKDExLCAxNik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkLnRvTG9jYWxlVGltZVN0cmluZyhsb2NhbGUsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgLy8gRm9ybWF0cyBhIGRhdGUgcGVyaW9kIGluIGxvbmcgRW5nbGlzaCBzdHlsZS4gRXhhbXBsZXMgc3VwcG9ydGVkOlxuICAgIC8vIE1heSAyMDE4XG4gICAgLy8gTWF5IOKAkyBKdW5lIDIwMThcbiAgICAvLyBEZWNlbWJlciAyMDE4IOKAkyBKYW51YXJ5IDIwMTlcbiAgICAvLyBNYXkgNiDigJMgMjYsIDIwMThcbiAgICAvLyBNYXkgMTMg4oCTIEp1bmUgMiwgMjAxOFxuICAgIC8vIERlY2VtYmVyIDE2LCAyMDE4IOKAkyBKYW51YXJ5IDUsIDIwMTlcbiAgICBmb3JtYXR0ZWRQZXJpb2Q6IGZ1bmN0aW9uIGZvcm1hdHRlZFBlcmlvZChzdGFydERhdGUsIGVuZERhdGUsIHBlcmlvZFVvbSwgbW9udGhOYW1lcykge1xuICAgICAgdmFyIHNpbmdsZVllYXIgPSBzdGFydERhdGUuZ2V0RnVsbFllYXIoKSA9PT0gZW5kRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgdmFyIHNpbmdsZU1vbnRoID0gdGhpcy5pc1NhbWVNb250aChzdGFydERhdGUsIGVuZERhdGUpO1xuICAgICAgdmFyIGlzWWVhciA9IHBlcmlvZFVvbSA9PT0gXCJ5ZWFyXCI7XG4gICAgICB2YXIgaXNNb250aCA9IHBlcmlvZFVvbSA9PT0gXCJtb250aFwiO1xuICAgICAgdmFyIGlzV2VlayA9ICFpc1llYXIgJiYgIWlzTW9udGg7XG4gICAgICB2YXIgcyA9IFtdO1xuICAgICAgcy5wdXNoKG1vbnRoTmFtZXNbc3RhcnREYXRlLmdldE1vbnRoKCldKTtcblxuICAgICAgaWYgKGlzV2Vlaykge1xuICAgICAgICBzLnB1c2goXCIgXCIpO1xuICAgICAgICBzLnB1c2goc3RhcnREYXRlLmdldERhdGUoKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghc2luZ2xlWWVhcikge1xuICAgICAgICBzLnB1c2goaXNXZWVrID8gXCIsIFwiIDogXCIgXCIpO1xuICAgICAgICBzLnB1c2goc3RhcnREYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNpbmdsZU1vbnRoIHx8ICFzaW5nbGVZZWFyKSB7XG4gICAgICAgIHMucHVzaChcIiBcXHUyMDEzIFwiKTtcblxuICAgICAgICBpZiAoIXNpbmdsZU1vbnRoKSB7XG4gICAgICAgICAgcy5wdXNoKG1vbnRoTmFtZXNbZW5kRGF0ZS5nZXRNb250aCgpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNXZWVrKSBzLnB1c2goXCIgXCIpO1xuICAgICAgfSBlbHNlIGlmIChpc1dlZWspIHtcbiAgICAgICAgcy5wdXNoKFwiIFxcdTIwMTMgXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNXZWVrKSB7XG4gICAgICAgIHMucHVzaChlbmREYXRlLmdldERhdGUoKSk7XG4gICAgICAgIHMucHVzaChcIiwgXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5wdXNoKFwiIFwiKTtcbiAgICAgIH1cblxuICAgICAgcy5wdXNoKGVuZERhdGUuZ2V0RnVsbFllYXIoKSk7XG4gICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgIH0sXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgLy8gRGF0ZSBjb21wYXJpc29uc1xuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIC8vIE51bWJlciBvZiB3aG9sZSBkYXlzIGJldHdlZW4gdHdvIGRhdGVzLiBJZiBwcmVzZW50LCB0aW1lIG9mIGRheSBpcyBpZ25vcmVkLlxuICAgIC8vIEhhdmUgdG8gdXNlIHNldFVUQ0hvdXJzIHRvIGVuc3VyZSB0aGF0IERTVCBjaGFuZ2VzIGJldHdlZW4gdGhlc2UgZGF0ZXMgZG9uJ3RcbiAgICAvLyByZXN1bHQgaW4gYSBmcmFjdGlvbmFsIGFuc3dlci5cbiAgICBkYXlEaWZmOiBmdW5jdGlvbiBkYXlEaWZmKGQxLCBkMikge1xuICAgICAgdmFyIGVuZERhdGUgPSBuZXcgRGF0ZShkMi5nZXRGdWxsWWVhcigpLCBkMi5nZXRNb250aCgpLCBkMi5nZXREYXRlKCkpLFxuICAgICAgICAgIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKGQxLmdldEZ1bGxZZWFyKCksIGQxLmdldE1vbnRoKCksIGQxLmdldERhdGUoKSk7XG4gICAgICBlbmREYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgc3RhcnREYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIChlbmREYXRlIC0gc3RhcnREYXRlKSAvIDg2NDAwMDAwO1xuICAgIH0sXG4gICAgaXNTYW1lRGF0ZTogZnVuY3Rpb24gaXNTYW1lRGF0ZShkMSwgZDIpIHtcbiAgICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDkyOTk0L2NvbXBhcmUtdHdvLWRhdGVzLXdpdGgtamF2YXNjcmlwdFxuICAgICAgcmV0dXJuIHRoaXMuZGF5RGlmZihkMSwgZDIpID09PSAwO1xuICAgIH0sXG4gICAgaXNTYW1lRGF0ZVRpbWU6IGZ1bmN0aW9uIGlzU2FtZURhdGVUaW1lKGQxLCBkMikge1xuICAgICAgcmV0dXJuIGQxLmdldFRpbWUoKSA9PT0gZDIuZ2V0VGltZSgpO1xuICAgIH0sXG4gICAgaXNTYW1lTW9udGg6IGZ1bmN0aW9uIGlzU2FtZU1vbnRoKGQxLCBkMikge1xuICAgICAgcmV0dXJuIGQxLmdldEZ1bGxZZWFyKCkgPT09IGQyLmdldEZ1bGxZZWFyKCkgJiYgZDEuZ2V0TW9udGgoKSA9PT0gZDIuZ2V0TW9udGgoKTtcbiAgICB9LFxuICAgIGlzUGFzdE1vbnRoOiBmdW5jdGlvbiBpc1Bhc3RNb250aChkKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWdpbm5pbmdPZk1vbnRoKGQpIDwgdGhpcy5iZWdpbm5pbmdPZk1vbnRoKHRoaXMudG9kYXkoKSk7XG4gICAgfSxcbiAgICBpc0Z1dHVyZU1vbnRoOiBmdW5jdGlvbiBpc0Z1dHVyZU1vbnRoKGQpIHtcbiAgICAgIHJldHVybiB0aGlzLmJlZ2lubmluZ09mTW9udGgoZCkgPiB0aGlzLmJlZ2lubmluZ09mTW9udGgodGhpcy50b2RheSgpKTtcbiAgICB9LFxuICAgIGlzSW5GdXR1cmU6IGZ1bmN0aW9uIGlzSW5GdXR1cmUoZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZU9ubHkoZCkgPiB0aGlzLnRvZGF5KCk7XG4gICAgfSxcbiAgICBpc0luUGFzdDogZnVuY3Rpb24gaXNJblBhc3QoZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZU9ubHkoZCkgPCB0aGlzLnRvZGF5KCk7XG4gICAgfSxcbiAgICBpc0xhc3RJbnN0YW5jZU9mTW9udGg6IGZ1bmN0aW9uIGlzTGFzdEluc3RhbmNlT2ZNb250aChkKSB7XG4gICAgICByZXR1cm4gZC5nZXRNb250aCgpICE9PSB0aGlzLmFkZERheXMoZCwgNykuZ2V0TW9udGgoKTtcbiAgICB9LFxuICAgIGlzTGFzdERheU9mTW9udGg6IGZ1bmN0aW9uIGlzTGFzdERheU9mTW9udGgoZCkge1xuICAgICAgcmV0dXJuIGQuZ2V0TW9udGgoKSAhPT0gdGhpcy5hZGREYXlzKGQsIDEpLmdldE1vbnRoKCk7XG4gICAgfSxcbiAgICBpc1NlbGVjdGVkRGF5OiBmdW5jdGlvbiBpc1NlbGVjdGVkRGF5KGQpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgZGF5ID0ga2V5c19kZWZhdWx0KCkodGhpcy5kYXRlQ2xhc3NlcykuZmluZChmdW5jdGlvbiAoZGF5KSB7XG4gICAgICAgIHJldHVybiBfdGhpczIuaXNTYW1lRGF0ZShfdGhpczIuZnJvbUlzb1N0cmluZ1RvTG9jYWxEYXRlKGRheSksIGQpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkYXkgPyB0aGlzLmRhdGVDbGFzc2VzW2RheV0gOiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICAvLyBDb3VydGVzeSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMzkwODI5OS9qYXZhc2NyaXB0LXBhcnNlLWEtc3RyaW5nLXRvLWRhdGUtYXMtbG9jYWwtdGltZS16b25lLzQyNjI2ODc2IzQyNjI2ODc2XG4gICAgZnJvbUlzb1N0cmluZ1RvTG9jYWxEYXRlOiBmdW5jdGlvbiBmcm9tSXNvU3RyaW5nVG9Mb2NhbERhdGUocykge1xuICAgICAgdmFyIGRzID0gcy5zcGxpdCgvXFxELykubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIocyk7XG4gICAgICB9KTtcbiAgICAgIGRzWzFdLS07IC8vIGFkanVzdCBtb250aFxuXG4gICAgICByZXR1cm4gY29uc3RydWN0X2NvbnN0cnVjdChEYXRlLCBfdG9Db25zdW1hYmxlQXJyYXkoZHMpKTtcbiAgICB9LFxuICAgIHRvTG9jYWxEYXRlOiBmdW5jdGlvbiB0b0xvY2FsRGF0ZShkKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGQgPT09IFwic3RyaW5nXCIgPyB0aGlzLmZyb21Jc29TdHJpbmdUb0xvY2FsRGF0ZShkKSA6IG5ldyBEYXRlKGQpO1xuICAgIH0sXG4gICAgZGF0ZU9ubHk6IGZ1bmN0aW9uIGRhdGVPbmx5KGQpIHtcbiAgICAgIC8vIEFsd2F5cyB1c2UgYSBjb3B5LCBzZXRIb3VycyBtdXRhdGVzIGFyZ3VtZW50XG4gICAgICB2YXIgZDIgPSBuZXcgRGF0ZShkKTtcbiAgICAgIGQyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGQyO1xuICAgIH0sXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgLy8gTG9jYWxpemF0aW9uXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgbGFuZ3VhZ2VDb2RlOiBmdW5jdGlvbiBsYW5ndWFnZUNvZGUobCkge1xuICAgICAgcmV0dXJuIGwuc3Vic3RyaW5nKDAsIDIpO1xuICAgIH0sXG4gICAgc3VwcG9ydHNJbnRsOiBmdW5jdGlvbiBzdXBwb3J0c0ludGwoKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09IFwidW5kZWZpbmVkXCI7XG4gICAgfSxcbiAgICBnZXRGb3JtYXR0ZWRNb250aE5hbWVzOiBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRNb250aE5hbWVzKGxvY2FsZSwgZm9ybWF0KSB7XG4gICAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIGxvY2FsZSBhbmQgZm9ybWF0IGlmIHBvc3NpYmxlIHRvIG9idGFpbiB0aGUgbmFtZSBvZiB0aGUgbW9udGhcbiAgICAgIGlmICghdGhpcy5zdXBwb3J0c0ludGwoKSkgcmV0dXJuIEFycmF5KDEyKS5maWxsKFwiXCIpO1xuICAgICAgdmFyIGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwge1xuICAgICAgICBtb250aDogZm9ybWF0XG4gICAgICB9KTsgLy8gVGhlIHllYXIgZG9lc24ndCBtYXR0ZXIsIHVzaW5nIDIwMTcgZm9yIGNvbnZlbmllbmNlXG5cbiAgICAgIHJldHVybiBBcnJheSgxMikuZmlsbCgpLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCBpLCAxKSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldEZvcm1hdHRlZFdlZWtkYXlOYW1lczogZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkV2Vla2RheU5hbWVzKGxvY2FsZSwgZm9ybWF0LCBzdGFydGluZ0RheU9mV2Vlaykge1xuICAgICAgLy8gVXNlIHRoZSBwcm92aWRlZCBsb2NhbGUgYW5kIGZvcm1hdCBpZiBwb3NzaWJsZSB0byBvYnRhaW4gdGhlIG5hbWUgb2YgdGhlIGRheXMgb2YgdGhlIHdlZWtcbiAgICAgIGlmICghdGhpcy5zdXBwb3J0c0ludGwoKSkgcmV0dXJuIEFycmF5KDcpLmZpbGwoXCJcIik7XG4gICAgICB2YXIgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7XG4gICAgICAgIHdlZWtkYXk6IGZvcm1hdFxuICAgICAgfSk7IC8vIDIwMTcgc3RhcnRzIG9uIFN1bmRheSwgc28gdXNlIGl0IGFzIHRoZSBiYXNlbGluZSBkYXRlXG5cbiAgICAgIHJldHVybiBBcnJheSg3KS5maWxsKCkubWFwKGZ1bmN0aW9uIChfLCBpKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDAsIChpICsgMSArIHN0YXJ0aW5nRGF5T2ZXZWVrKSAlIDcpKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0RGVmYXVsdEJyb3dzZXJMb2NhbGU6IGZ1bmN0aW9uIGdldERlZmF1bHRCcm93c2VyTG9jYWxlKCkge1xuICAgICAgLy8gSWYgbm90IHJ1bm5pbmcgaW4gdGhlIGJyb3dzZXIsIGNhbm5vdCBkZXRlcm1pbmUgYSBkZWZhdWx0LCByZXR1cm4gdGhlIGNvZGUgZm9yIHVua25vd24gKGJsYW5rIGlzIGludmFsaWQpXG4gICAgICBpZiAodHlwZW9mIG5hdmlnYXRvciA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIFwidW5rXCI7IC8vIFJldHVybiB0aGUgYnJvd3NlcidzIGxhbmd1YWdlIHNldHRpbmcsIGltcGxlbWVudGF0aW9uIGlzIGJyb3dzZXItc3BlY2lmaWNcblxuICAgICAgcmV0dXJuIChuYXZpZ2F0b3IubGFuZ3VhZ2VzICYmIG5hdmlnYXRvci5sYW5ndWFnZXMubGVuZ3RoID8gbmF2aWdhdG9yLmxhbmd1YWdlc1swXSA6IG5hdmlnYXRvci5sYW5ndWFnZSB8fCBuYXZpZ2F0b3IuYnJvd3Nlckxhbmd1YWdlKS50b0xvd2VyQ2FzZSgpO1xuICAgIH0sXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgLy8gRXZlbnRzXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgbm9ybWFsaXplRXZlbnQ6IGZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50KGV2ZW50LCBpc0hvdmVyZWQpIHtcbiAgICAgIC8vIENsYXNzZXMgbWF5IGJlIGEgc3RyaW5nLCBhbiBhcnJheSwgb3IgbnVsbC4gTm9ybWFsaXplIHRvIGFuIGFycmF5XG4gICAgICB2YXIgZXZlbnRDbGFzc2VzID0gZXZlbnQuY2xhc3NlcyA/IGlzX2FycmF5X2RlZmF1bHQoKShldmVudC5jbGFzc2VzKSA/IF90b0NvbnN1bWFibGVBcnJheShldmVudC5jbGFzc2VzKSA6IFtldmVudC5jbGFzc2VzXSA6IFtdOyAvLyBQcm92aWRlcyBzdXBwb3J0IGZvciBwc2V1ZG8taG92ZXIgb2YgZW50aXJlIGV2ZW50IHdoZW4gb25lIHBhcnQgb2YgaXQgaXMgaG92ZXJlZFxuXG4gICAgICBpZiAoaXNIb3ZlcmVkKSBldmVudENsYXNzZXMucHVzaChcImlzSG92ZXJlZFwiKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICBzdGFydERhdGU6IHRoaXMudG9Mb2NhbERhdGUoZXZlbnQuc3RhcnREYXRlKSxcbiAgICAgICAgLy8gRm9yIGFuIGV2ZW50IHdpdGhvdXQgYW4gZW5kIGRhdGUsIHRoZSBlbmQgZGF0ZSBpcyB0aGUgc3RhcnQgZGF0ZVxuICAgICAgICBlbmREYXRlOiB0aGlzLnRvTG9jYWxEYXRlKGV2ZW50LmVuZERhdGUgfHwgZXZlbnQuc3RhcnREYXRlKSxcbiAgICAgICAgY2xhc3NlczogZXZlbnRDbGFzc2VzLFxuICAgICAgICAvLyBFdmVudHMgd2l0aG91dCBhIHRpdGxlIGFyZSB1bnRpdGxlZFxuICAgICAgICB0aXRsZTogZXZlbnQudGl0bGUgfHwgXCJVbnRpdGxlZFwiLFxuICAgICAgICAvLyBBbiBJRCBpcyAqcmVxdWlyZWQqLiBBdXRvLWdlbmVyYXRpbmcgbGVhZHMgdG8gd2VpcmQgYnVncyBiZWNhdXNlIHRoZXNlIGFyZSB1c2VkIGFzIGtleXMgYW5kIHBhc3NlZCBpbiBldmVudHNcbiAgICAgICAgaWQ6IGV2ZW50LmlkXG4gICAgICB9O1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCJkNjYzOTlmYS12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy9DYWxlbmRhclZpZXdIZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFiMGMwZjA4JlxudmFyIENhbGVuZGFyVmlld0hlYWRlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzFiMGMwZjA4X3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY3YtaGVhZGVyXCJ9LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjdi1oZWFkZXItbmF2XCJ9LFtfYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJwcmV2aW91c1llYXJcIixhdHRyczp7XCJkaXNhYmxlZFwiOiFfdm0uaGVhZGVyUHJvcHMucHJldmlvdXNZZWFyfSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5vbklucHV0KF92bS5oZWFkZXJQcm9wcy5wcmV2aW91c1llYXIpfX19LFtfdm0uX3YoXCJcXG5cXHRcXHRcXHQ8PFxcblxcdFxcdFwiKV0pLF9jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcInByZXZpb3VzUGVyaW9kXCIsYXR0cnM6e1wiZGlzYWJsZWRcIjohX3ZtLmhlYWRlclByb3BzLnByZXZpb3VzUGVyaW9kfSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5vbklucHV0KF92bS5oZWFkZXJQcm9wcy5wcmV2aW91c1BlcmlvZCl9fX0sW192bS5fdihcIlxcblxcdFxcdFxcdDxcXG5cXHRcXHRcIildKSxfYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJjdXJyZW50UGVyaW9kXCIsb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpeyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBfdm0ub25JbnB1dChfdm0uaGVhZGVyUHJvcHMuY3VycmVudFBlcmlvZCl9fX0sW192bS5fdihcIlxcblxcdFxcdFxcdFwiK192bS5fcyhfdm0uaGVhZGVyUHJvcHMuY3VycmVudFBlcmlvZExhYmVsKStcIlxcblxcdFxcdFwiKV0pLF9jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcIm5leHRQZXJpb2RcIixhdHRyczp7XCJkaXNhYmxlZFwiOiFfdm0uaGVhZGVyUHJvcHMubmV4dFBlcmlvZH0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpeyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBfdm0ub25JbnB1dChfdm0uaGVhZGVyUHJvcHMubmV4dFBlcmlvZCl9fX0sW192bS5fdihcIlxcblxcdFxcdFxcdD5cXG5cXHRcXHRcIildKSxfYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJuZXh0WWVhclwiLGF0dHJzOntcImRpc2FibGVkXCI6IV92bS5oZWFkZXJQcm9wcy5uZXh0WWVhcn0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpeyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBfdm0ub25JbnB1dChfdm0uaGVhZGVyUHJvcHMubmV4dFllYXIpfX19LFtfdm0uX3YoXCJcXG5cXHRcXHRcXHQ+PlxcblxcdFxcdFwiKV0pXSksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwicGVyaW9kTGFiZWxcIn0sW192bS5fdChcImxhYmVsXCIsW192bS5fdihfdm0uX3MoX3ZtLmhlYWRlclByb3BzLnBlcmlvZExhYmVsKSldKV0sMildKX1cbnZhciBDYWxlbmRhclZpZXdIZWFkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xYjBjMGYwOF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvQ2FsZW5kYXJWaWV3SGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYjBjMGYwOCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL0NhbGVuZGFyVmlld0hlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgQ2FsZW5kYXJWaWV3SGVhZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogXCJDYWxlbmRhclZpZXdIZWFkZXJcIixcbiAgcHJvcHM6IHtcbiAgICBoZWFkZXJQcm9wczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvbklucHV0OiBmdW5jdGlvbiBvbklucHV0KGQpIHtcbiAgICAgIHRoaXMuJGVtaXQoXCJpbnB1dFwiLCBkKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy9DYWxlbmRhclZpZXdIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbXBvbmVudHNfQ2FsZW5kYXJWaWV3SGVhZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKENhbGVuZGFyVmlld0hlYWRlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL0NhbGVuZGFyVmlld0hlYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzcyZcbnZhciBDYWxlbmRhclZpZXdIZWFkZXJ2dWVfdHlwZV9zdHlsZV9pbmRleF8wX2xhbmdfY3NzXyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2MDhmXCIpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcbi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KSB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvQ2FsZW5kYXJWaWV3SGVhZGVyLnZ1ZVxuXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBjb21wb25lbnRzX0NhbGVuZGFyVmlld0hlYWRlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgQ2FsZW5kYXJWaWV3SGVhZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMWIwYzBmMDhfcmVuZGVyLFxuICBDYWxlbmRhclZpZXdIZWFkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xYjBjMGYwOF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBDYWxlbmRhclZpZXdIZWFkZXIgPSAoY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL0NhbGVuZGFyVmlldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIENhbGVuZGFyVmlld3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6IFwiQ2FsZW5kYXJWaWV3XCIsXG4gIGNvbXBvbmVudHM6IHtcbiAgICBDYWxlbmRhclZpZXdIZWFkZXI6IENhbGVuZGFyVmlld0hlYWRlclxuICB9LFxuICBtaXhpbnM6IFtDYWxlbmRhck1hdGhNaXhpbl0sXG4gIHByb3BzOiB7XG4gICAgc2hvd0RhdGU6IHtcbiAgICAgIHR5cGU6IERhdGUsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIGRpc3BsYXlQZXJpb2RVb206IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwibW9udGhcIlxuICAgIH0sXG4gICAgZGlzcGxheVBlcmlvZENvdW50OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAxXG4gICAgfSxcbiAgICBsb2NhbGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgbW9udGhOYW1lRm9ybWF0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcImxvbmdcIlxuICAgIH0sXG4gICAgd2Vla2RheU5hbWVGb3JtYXQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwic2hvcnRcIlxuICAgIH0sXG4gICAgc2hvd0V2ZW50VGltZXM6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgdGltZUZvcm1hdE9wdGlvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge31cbiAgICB9LFxuICAgIGRpc2FibGVQYXN0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGRpc2FibGVGdXR1cmU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZW5hYmxlRHJhZ0Ryb3A6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc3RhcnRpbmdEYXlPZldlZWs6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgZGF0ZUNsYXNzZXM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge31cbiAgICB9LFxuICAgIGV2ZW50VG9wOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIjEuNGVtXCJcbiAgICB9LFxuICAgIGV2ZW50Q29udGVudEhlaWdodDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCIxLjRlbVwiXG4gICAgfSxcbiAgICBldmVudEJvcmRlckhlaWdodDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCIycHhcIlxuICAgIH0sXG4gICAgcGVyaW9kQ2hhbmdlZENhbGxiYWNrOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgY3VycmVudFBlcmlvZExhYmVsOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIlwiXG4gICAgfSxcbiAgICBjdXJyZW50UGVyaW9kTGFiZWxJY29uczoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCLih6Qt4oelXCJcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1cnJlbnREcmFnRXZlbnQ6IG51bGwsXG4gICAgICBjdXJyZW50SG92ZXJlZEV2ZW50SWQ6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgLypcbiAgICBQcm9wcyBjYW5ub3QgZGVmYXVsdCB0byBjb21wdXRlZC9tZXRob2QgcmV0dXJucywgc28gY3JlYXRlIGRlZmF1bHRlZCB2ZXJzaW9uIG9mIHRoaXNcbiAgICBwcm9wZXJ0eSBhbmQgdXNlIGl0IHJhdGhlciB0aGFuIHRoZSBiYXJlIHByb3AgKFZ1ZSBJc3N1ZSAjNjAxMykuXG4gICAgKi9cbiAgICBkaXNwbGF5TG9jYWxlOiBmdW5jdGlvbiBkaXNwbGF5TG9jYWxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlIHx8IHRoaXMuZ2V0RGVmYXVsdEJyb3dzZXJMb2NhbGUoKTtcbiAgICB9LFxuXG4gICAgLypcbiAgICBTaG93RGF0ZSwgYnV0IGRlZmF1bHRlZCB0byB0b2RheS4gTmVlZGVkIGJvdGggZm9yIHBlcmlvZFN0YXJ0IGJlbG93IGFuZCBmb3IgdGhlXG4gICAgXCJvdXRzaWRlIG9mIG1vbnRoXCIgY2xhc3MuIEFueSB0aW1lIGNvbXBvbmVudCBwYXNzZWQgYXMgcGFydCBvZiBzaG93RGF0ZSBpcyBkaXNjYXJkZWQuXG4gICAgKi9cbiAgICBkZWZhdWx0ZWRTaG93RGF0ZTogZnVuY3Rpb24gZGVmYXVsdGVkU2hvd0RhdGUoKSB7XG4gICAgICBpZiAodGhpcy5zaG93RGF0ZSkgcmV0dXJuIHRoaXMuZGF0ZU9ubHkodGhpcy5zaG93RGF0ZSk7XG4gICAgICByZXR1cm4gdGhpcy50b2RheSgpO1xuICAgIH0sXG5cbiAgICAvKlxuICAgIEdpdmVuIHRoZSBzaG93RGF0ZSwgZGVmYXVsdGVkIHRvIHRvZGF5LCBjb21wdXRlcyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIHBlcmlvZFxuICAgIHRoYXQgdGhlIGRhdGUgZmFsbHMgd2l0aGluLlxuICAgICovXG4gICAgcGVyaW9kU3RhcnQ6IGZ1bmN0aW9uIHBlcmlvZFN0YXJ0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYmVnaW5uaW5nT2ZQZXJpb2QodGhpcy5kZWZhdWx0ZWRTaG93RGF0ZSwgdGhpcy5kaXNwbGF5UGVyaW9kVW9tLCB0aGlzLnN0YXJ0aW5nRGF5T2ZXZWVrKTtcbiAgICB9LFxuICAgIHBlcmlvZEVuZDogZnVuY3Rpb24gcGVyaW9kRW5kKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRGF5cyh0aGlzLmluY3JlbWVudFBlcmlvZCh0aGlzLnBlcmlvZFN0YXJ0LCB0aGlzLmRpc3BsYXlQZXJpb2RVb20sIHRoaXMuZGlzcGxheVBlcmlvZENvdW50KSwgLTEpO1xuICAgIH0sXG5cbiAgICAvKlxuICAgIEZvciBtb250aCBhbmQgeWVhciB2aWV3cywgdGhlIGZpcnN0IGFuZCBsYXN0IGRhdGVzIGRpc3BsYXllZCBpbiB0aGUgZ3JpZCBtYXkgbm90XG4gICAgYmUgdGhlIHNhbWUgYXMgdGhlIGludGVuZGVkIHBlcmlvZCwgc2luY2UgdGhlIHBlcmlvZCBtYXkgbm90IHN0YXJ0IGFuZCBzdG9wIGV2ZW5seVxuICAgIG9uIHRoZSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsuXG4gICAgKi9cbiAgICBkaXNwbGF5Rmlyc3REYXRlOiBmdW5jdGlvbiBkaXNwbGF5Rmlyc3REYXRlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYmVnaW5uaW5nT2ZXZWVrKHRoaXMucGVyaW9kU3RhcnQsIHRoaXMuc3RhcnRpbmdEYXlPZldlZWspO1xuICAgIH0sXG4gICAgZGlzcGxheUxhc3REYXRlOiBmdW5jdGlvbiBkaXNwbGF5TGFzdERhdGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmRPZldlZWsodGhpcy5wZXJpb2RFbmQsIHRoaXMuc3RhcnRpbmdEYXlPZldlZWspO1xuICAgIH0sXG5cbiAgICAvKlxuICAgIENyZWF0ZSBhbiBhcnJheSBvZiBkYXRlcywgd2hlcmUgZWFjaCBkYXRlIHJlcHJlc2VudHMgdGhlIGJlZ2lubmluZyBvZiBhIHdlZWsgdGhhdFxuICAgIHNob3VsZCBiZSByZW5kZXJlZCBpbiB0aGUgdmlldyBmb3IgdGhlIGN1cnJlbnQgcGVyaW9kLlxuICAgICovXG4gICAgd2Vla3NPZlBlcmlvZDogZnVuY3Rpb24gd2Vla3NPZlBlcmlvZCgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIFJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZGF0ZSBvZiB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggd2Vla1xuICAgICAgLy8gaW5jbHVkZWQgaW4gdGhlIHZpZXcuXG4gICAgICB2YXIgbnVtV2Vla3MgPSBNYXRoLmZsb29yKCh0aGlzLmRheURpZmYodGhpcy5kaXNwbGF5Rmlyc3REYXRlLCB0aGlzLmRpc3BsYXlMYXN0RGF0ZSkgKyAxKSAvIDcpO1xuICAgICAgcmV0dXJuIEFycmF5KG51bVdlZWtzKS5maWxsKCkubWFwKGZ1bmN0aW9uIChfLCBpKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5hZGREYXlzKF90aGlzLmRpc3BsYXlGaXJzdERhdGUsIGkgKiA3KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLy8gQ2FjaGUgdGhlIG5hbWVzIGJhc2VkIG9uIGN1cnJlbnQgbG9jYWxlIGFuZCBmb3JtYXQgc2V0dGluZ3NcbiAgICBtb250aE5hbWVzOiBmdW5jdGlvbiBtb250aE5hbWVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkTW9udGhOYW1lcyh0aGlzLmRpc3BsYXlMb2NhbGUsIHRoaXMubW9udGhOYW1lRm9ybWF0KTtcbiAgICB9LFxuICAgIHdlZWtkYXlOYW1lczogZnVuY3Rpb24gd2Vla2RheU5hbWVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkV2Vla2RheU5hbWVzKHRoaXMuZGlzcGxheUxvY2FsZSwgdGhpcy53ZWVrZGF5TmFtZUZvcm1hdCwgdGhpcy5zdGFydGluZ0RheU9mV2Vlayk7XG4gICAgfSxcbiAgICAvLyBFbnN1cmUgYWxsIGV2ZW50IHByb3BlcnRpZXMgaGF2ZSBzdWl0YWJsZSBkZWZhdWx0XG4gICAgZml4ZWRFdmVudHM6IGZ1bmN0aW9uIGZpeGVkRXZlbnRzKCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gc2VsZi5ub3JtYWxpemVFdmVudChlLCBzZWxmLmN1cnJlbnRIb3ZlcmVkRXZlbnRJZCAmJiBlLmlkID09PSBzZWxmLmN1cnJlbnRIb3ZlcmVkRXZlbnRJZCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8vIENyZWF0ZXMgdGhlIEhUTUwgdG8gcmVuZGVyIHRoZSBkYXRlIHJhbmdlIGZvciB0aGUgY2FsZW5kYXIgaGVhZGVyLlxuICAgIHBlcmlvZExhYmVsOiBmdW5jdGlvbiBwZXJpb2RMYWJlbCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlZFBlcmlvZCh0aGlzLnBlcmlvZFN0YXJ0LCB0aGlzLnBlcmlvZEVuZCwgdGhpcy5kaXNwbGF5UGVyaW9kVW9tLCB0aGlzLm1vbnRoTmFtZXMpO1xuICAgIH0sXG4gICAgLy8gUGVyaW9kIHRoYXQgdG9kYXkncyBkYXRlIHNpdHMgd2l0aGluXG4gICAgY3VycmVudFBlcmlvZFN0YXJ0OiBmdW5jdGlvbiBjdXJyZW50UGVyaW9kU3RhcnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWdpbm5pbmdPZlBlcmlvZCh0aGlzLnRvZGF5KCksIHRoaXMuZGlzcGxheVBlcmlvZFVvbSwgdGhpcy5zdGFydGluZ0RheU9mV2Vlayk7XG4gICAgfSxcbiAgICBjdXJyZW50UGVyaW9kRW5kOiBmdW5jdGlvbiBjdXJyZW50UGVyaW9kRW5kKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRGF5cyh0aGlzLmluY3JlbWVudFBlcmlvZCh0aGlzLmN1cnJlbnRQZXJpb2RTdGFydCwgdGhpcy5kaXNwbGF5UGVyaW9kVW9tLCB0aGlzLmRpc3BsYXlQZXJpb2RDb3VudCksIC0xKTtcbiAgICB9LFxuICAgIGN1cnJlbnRQZXJpb2RMYWJlbEZpbmFsOiBmdW5jdGlvbiBjdXJyZW50UGVyaW9kTGFiZWxGaW5hbCgpIHtcbiAgICAgIHZhciBjID0gdGhpcy5jdXJyZW50UGVyaW9kU3RhcnQ7XG4gICAgICB2YXIgcyA9IHRoaXMucGVyaW9kU3RhcnQ7XG4gICAgICBpZiAoIXRoaXMuY3VycmVudFBlcmlvZExhYmVsKSByZXR1cm4gdGhpcy5mb3JtYXR0ZWRQZXJpb2QoYywgdGhpcy5jdXJyZW50UGVyaW9kRW5kLCB0aGlzLmRpc3BsYXlQZXJpb2RVb20sIHRoaXMubW9udGhOYW1lcyk7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UGVyaW9kTGFiZWwgPT09IFwiaWNvbnNcIikgcmV0dXJuIHRoaXMuY3VycmVudFBlcmlvZExhYmVsSWNvbnNbTWF0aC5zaWduKGMgLSBzKSArIDFdO1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFBlcmlvZExhYmVsO1xuICAgIH0sXG4gICAgaGVhZGVyUHJvcHM6IGZ1bmN0aW9uIGhlYWRlclByb3BzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8gRGF0ZXMgZm9yIFVJIG5hdmlnYXRpb25cbiAgICAgICAgcHJldmlvdXNZZWFyOiB0aGlzLmdldEluY3JlbWVudGVkUGVyaW9kKC0xMiksXG4gICAgICAgIHByZXZpb3VzUGVyaW9kOiB0aGlzLmdldEluY3JlbWVudGVkUGVyaW9kKC0xKSxcbiAgICAgICAgbmV4dFBlcmlvZDogdGhpcy5nZXRJbmNyZW1lbnRlZFBlcmlvZCgxKSxcbiAgICAgICAgcHJldmlvdXNGdWxsUGVyaW9kOiB0aGlzLmdldEluY3JlbWVudGVkUGVyaW9kKC10aGlzLmRpc3BsYXlQZXJpb2RDb3VudCksXG4gICAgICAgIG5leHRGdWxsUGVyaW9kOiB0aGlzLmdldEluY3JlbWVudGVkUGVyaW9kKHRoaXMuZGlzcGxheVBlcmlvZENvdW50KSxcbiAgICAgICAgbmV4dFllYXI6IHRoaXMuZ2V0SW5jcmVtZW50ZWRQZXJpb2QoMTIpLFxuICAgICAgICBjdXJyZW50UGVyaW9kOiB0aGlzLmN1cnJlbnRQZXJpb2RTdGFydCxcbiAgICAgICAgY3VycmVudFBlcmlvZExhYmVsOiB0aGlzLmN1cnJlbnRQZXJpb2RMYWJlbEZpbmFsLFxuICAgICAgICAvLyBEYXRlcyBmb3IgaGVhZGVyIGRpc3BsYXlcbiAgICAgICAgcGVyaW9kU3RhcnQ6IHRoaXMucGVyaW9kU3RhcnQsXG4gICAgICAgIHBlcmlvZEVuZDogdGhpcy5wZXJpb2RFbmQsXG4gICAgICAgIC8vIEV4dHJhIGluZm9ybWF0aW9uIHRoYXQgY291bGQgYmUgdXNlZnVsIHRvIGEgY3VzdG9tIGhlYWRlclxuICAgICAgICBkaXNwbGF5TG9jYWxlOiB0aGlzLmRpc3BsYXlMb2NhbGUsXG4gICAgICAgIGRpc3BsYXlGaXJzdERhdGU6IHRoaXMuZGlzcGxheUZpcnN0RGF0ZSxcbiAgICAgICAgZGlzcGxheUxhc3REYXRlOiB0aGlzLmRpc3BsYXlMYXN0RGF0ZSxcbiAgICAgICAgbW9udGhOYW1lczogdGhpcy5tb250aE5hbWVzLFxuICAgICAgICBmaXhlZEV2ZW50czogdGhpcy5maXhlZEV2ZW50cyxcbiAgICAgICAgcGVyaW9kTGFiZWw6IHRoaXMucGVyaW9kTGFiZWxcbiAgICAgIH07XG4gICAgfSxcbiAgICBwZXJpb2RSYW5nZTogZnVuY3Rpb24gcGVyaW9kUmFuZ2UoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwZXJpb2RTdGFydDogdGhpcy5wZXJpb2RTdGFydCxcbiAgICAgICAgcGVyaW9kRW5kOiB0aGlzLnBlcmlvZEVuZCxcbiAgICAgICAgZGlzcGxheUZpcnN0RGF0ZTogdGhpcy5kaXNwbGF5Rmlyc3REYXRlLFxuICAgICAgICBkaXNwbGF5TGFzdERhdGU6IHRoaXMuZGlzcGxheUxhc3REYXRlXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBwZXJpb2RSYW5nZToge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWwpIHtcbiAgICAgICAgaWYgKHRoaXMucGVyaW9kQ2hhbmdlZENhbGxiYWNrKSB7XG4gICAgICAgICAgdGhpcy4kZW1pdChcInBlcmlvZC1jaGFuZ2VkXCIpO1xuICAgICAgICAgIHRoaXMucGVyaW9kQ2hhbmdlZENhbGxiYWNrKG5ld1ZhbCwgXCJ3YXRjaFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIC8vIFVJIEV2ZW50c1xuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIG9uQ2xpY2tEYXk6IGZ1bmN0aW9uIG9uQ2xpY2tEYXkoZGF5KSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlUGFzdCAmJiB0aGlzLmlzSW5QYXN0KGRheSkpIHJldHVybjtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVGdXR1cmUgJiYgdGhpcy5pc0luRnV0dXJlKGRheSkpIHJldHVybjtcbiAgICAgIHRoaXMuJGVtaXQoXCJjbGljay1kYXRlXCIsIGRheSk7XG4gICAgfSxcbiAgICBvbkNsaWNrRXZlbnQ6IGZ1bmN0aW9uIG9uQ2xpY2tFdmVudChlKSB7XG4gICAgICB0aGlzLiRlbWl0KFwiY2xpY2stZXZlbnRcIiwgZSk7XG4gICAgfSxcblxuICAgIC8qXG4gICAgVGhlIGRheSBuYW1lIGhlYWRlciBuZWVkcyB0byBrbm93IHRoZSBkb3cgZm9yIGNsYXNzIGFzc2lnbm1lbnQsIGFuZCB0aGlzIHZhbHVlIHNob3VsZFxuICAgIG5vdCBjaGFuZ2UgYmFzZWQgb24gc3RhcnRpbmdEYXlPZldlZWsgKGkuZS4sIFN1bmRheSBpcyBhbHdheXMgMCkuIFRoaXMgZnVuY3Rpb25cbiAgICBjb21wdXRlcyB0aGUgZG93IGZvciBhIGdpdmVuIGRheSBpbmRleC5cbiAgICAqL1xuICAgIGdldENvbHVtbkRPV0NsYXNzOiBmdW5jdGlvbiBnZXRDb2x1bW5ET1dDbGFzcyhkYXlJbmRleCkge1xuICAgICAgcmV0dXJuIFwiZG93XCIgKyAoZGF5SW5kZXggKyB0aGlzLnN0YXJ0aW5nRGF5T2ZXZWVrKSAlIDc7XG4gICAgfSxcbiAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAvLyBEYXRlIFBlcmlvZHNcbiAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgIC8qXG4gICAgUmV0dXJucyBhIGRhdGUgZm9yIHRoZSBjdXJyZW50IGRpc3BsYXkgZGF0ZSBtb3ZlZCBmb3J3YXJkIG9yIGJhY2t3YXJkIGJ5IGEgZ2l2ZW5cbiAgICBudW1iZXIgb2YgdGhlIGN1cnJlbnQgZGlzcGxheSB1bml0cy4gUmV0dXJucyBudWxsIGlmIHNhaWQgbW92ZSB3b3VsZCByZXN1bHQgaW4gYVxuICAgIGRpc2FsbG93ZWQgZGlzcGxheSBwZXJpb2QuXG4gICAgKi9cbiAgICBnZXRJbmNyZW1lbnRlZFBlcmlvZDogZnVuY3Rpb24gZ2V0SW5jcmVtZW50ZWRQZXJpb2QoY291bnQpIHtcbiAgICAgIHZhciBuZXdTdGFydERhdGUgPSB0aGlzLmluY3JlbWVudFBlcmlvZCh0aGlzLnBlcmlvZFN0YXJ0LCB0aGlzLmRpc3BsYXlQZXJpb2RVb20sIGNvdW50KTtcbiAgICAgIHZhciBuZXdFbmREYXRlID0gdGhpcy5pbmNyZW1lbnRQZXJpb2QobmV3U3RhcnREYXRlLCB0aGlzLmRpc3BsYXlQZXJpb2RVb20sIHRoaXMuZGlzcGxheVBlcmlvZENvdW50KTtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVQYXN0ICYmIG5ld0VuZERhdGUgPD0gdGhpcy50b2RheSgpKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVGdXR1cmUgJiYgbmV3U3RhcnREYXRlID4gdGhpcy50b2RheSgpKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBuZXdTdGFydERhdGU7XG4gICAgfSxcbiAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAvLyBIb3ZlciBldmVudHMgKCM5NSlcbiAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICBvbk1vdXNlRW50ZXI6IGZ1bmN0aW9uIG9uTW91c2VFbnRlcihjYWxlbmRhckV2ZW50KSB7XG4gICAgICB0aGlzLmN1cnJlbnRIb3ZlcmVkRXZlbnRJZCA9IGNhbGVuZGFyRXZlbnQuaWQ7XG4gICAgfSxcbiAgICBvbk1vdXNlTGVhdmU6IGZ1bmN0aW9uIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgIHRoaXMuY3VycmVudEhvdmVyZWRFdmVudElkID0gdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgLy8gRHJhZyBhbmQgZHJvcCBldmVudHNcbiAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICBvbkRyYWdTdGFydDogZnVuY3Rpb24gb25EcmFnU3RhcnQoY2FsZW5kYXJFdmVudCwgd2luZG93RXZlbnQpIHtcbiAgICAgIGlmICghdGhpcy5lbmFibGVEcmFnRHJvcCkgcmV0dXJuIGZhbHNlOyAvLyBOb3QgdXNpbmcgZGF0YVRyYW5zZmVyLnNldERhdGEgdG8gc3RvcmUgdGhlIGV2ZW50IElEIGJlY2F1c2UgaXQgKGEpIGRvZXNuJ3QgYWxsb3cgYWNjZXNzIHRvIHRoZSBkYXRhIGJlaW5nXG4gICAgICAvLyBkcmFnZ2VkIGR1cmluZyBkcmFnb3ZlciwgZHJhZ2VudGVyLCBhbmQgZHJhZ2xlYXZlIGV2ZW50cywgYW5kIGJlY2F1c2Ugc3RvcmluZyBhbiBJRCByZXF1aXJlcyBhbiB1bm5lY2Vzc2FyeVxuICAgICAgLy8gbG9va3VwLiBUaGlzIGRvZXMgbGltaXQgdGhlIGRyb3Agem9uZXMgdG8gYXJlYXMgd2l0aGluIHRoaXMgaW5zdGFuY2Ugb2YgdGhpcyBjb21wb25lbnQuXG5cbiAgICAgIHRoaXMuY3VycmVudERyYWdFdmVudCA9IGNhbGVuZGFyRXZlbnQ7IC8vIEZpcmVmb3ggYW5kIHBvc3NpYmx5IG90aGVyIGJyb3dzZXJzIHJlcXVpcmUgZGF0YVRyYW5zZmVyIHRvIGJlIHNldCwgZXZlbiBpZiB0aGUgdmFsdWUgaXMgbm90IHVzZWQuIElFMTFcbiAgICAgIC8vIHJlcXVpcmVzIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGV4YWN0bHkgXCJ0ZXh0XCIgKG5vdCBcInRleHQvcGxhaW5cIiwgZXRjLikuXG5cbiAgICAgIHdpbmRvd0V2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dFwiLCBcImZvb1wiKTtcbiAgICAgIHRoaXMuJGVtaXQoXCJkcmFnLXN0YXJ0XCIsIGNhbGVuZGFyRXZlbnQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBoYW5kbGVEcmFnRXZlbnQ6IGZ1bmN0aW9uIGhhbmRsZURyYWdFdmVudChidWJibGVFdmVudE5hbWUsIGJ1YmJsZVBhcmFtKSB7XG4gICAgICBpZiAoIXRoaXMuZW5hYmxlRHJhZ0Ryb3ApIHJldHVybiBmYWxzZTtcblxuICAgICAgaWYgKCF0aGlzLmN1cnJlbnREcmFnRXZlbnQpIHtcbiAgICAgICAgLy8gc2hvdWxkbid0IGhhcHBlblxuICAgICAgICAvLyBJZiBjdXJyZW50IGRyYWcgZXZlbnQgaXMgbm90IHNldCwgY2hlY2sgaWYgdXNlciBoYXMgc2V0IGl0cyBvd24gc2xvdCBmb3IgZXZlbnRzXG4gICAgICAgIGlmICghdGhpcy4kc2NvcGVkU2xvdHNbXCJldmVudFwiXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRlbWl0KGJ1YmJsZUV2ZW50TmFtZSwgdGhpcy5jdXJyZW50RHJhZ0V2ZW50LCBidWJibGVQYXJhbSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIG9uRHJhZ092ZXI6IGZ1bmN0aW9uIG9uRHJhZ092ZXIoZGF5KSB7XG4gICAgICB0aGlzLmhhbmRsZURyYWdFdmVudChcImRyYWctb3Zlci1kYXRlXCIsIGRheSk7XG4gICAgfSxcbiAgICBvbkRyYWdFbnRlcjogZnVuY3Rpb24gb25EcmFnRW50ZXIoZGF5LCB3aW5kb3dFdmVudCkge1xuICAgICAgaWYgKCF0aGlzLmhhbmRsZURyYWdFdmVudChcImRyYWctZW50ZXItZGF0ZVwiLCBkYXkpKSByZXR1cm47XG4gICAgICB3aW5kb3dFdmVudC50YXJnZXQuY2xhc3NMaXN0LmFkZChcImRyYWdob3ZlclwiKTtcbiAgICB9LFxuICAgIG9uRHJhZ0xlYXZlOiBmdW5jdGlvbiBvbkRyYWdMZWF2ZShkYXksIHdpbmRvd0V2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuaGFuZGxlRHJhZ0V2ZW50KFwiZHJhZy1sZWF2ZS1kYXRlXCIsIGRheSkpIHJldHVybjtcbiAgICAgIHdpbmRvd0V2ZW50LnRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKFwiZHJhZ2hvdmVyXCIpO1xuICAgIH0sXG4gICAgb25Ecm9wOiBmdW5jdGlvbiBvbkRyb3AoZGF5LCB3aW5kb3dFdmVudCkge1xuICAgICAgaWYgKCF0aGlzLmhhbmRsZURyYWdFdmVudChcImRyb3Atb24tZGF0ZVwiLCBkYXkpKSByZXR1cm47XG4gICAgICB3aW5kb3dFdmVudC50YXJnZXQuY2xhc3NMaXN0LnJlbW92ZShcImRyYWdob3ZlclwiKTtcbiAgICB9LFxuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIC8vIENhbGVuZGFyIEV2ZW50c1xuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIGZpbmRBbmRTb3J0RXZlbnRzSW5XZWVrOiBmdW5jdGlvbiBmaW5kQW5kU29ydEV2ZW50c0luV2Vlayh3ZWVrU3RhcnQpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAvLyBSZXR1cm4gYSBsaXN0IG9mIGV2ZW50cyB0aGF0IElOQ0xVREUgYW55IGRheSBvZiBhIHdlZWsgc3RhcnRpbmcgb24gYVxuICAgICAgLy8gcGFydGljdWxhciBkYXkuIFNvcnRlZCBzbyB0aGUgZXZlbnRzIHRoYXQgc3RhcnQgZWFybGllciBhcmUgYWx3YXlzXG4gICAgICAvLyBzaG93biBmaXJzdC5cbiAgICAgIHZhciBldmVudHMgPSB0aGlzLmZpeGVkRXZlbnRzLmZpbHRlcihmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LnN0YXJ0RGF0ZSA8IF90aGlzMi5hZGREYXlzKHdlZWtTdGFydCwgNykgJiYgZXZlbnQuZW5kRGF0ZSA+PSB3ZWVrU3RhcnQ7XG4gICAgICB9LCB0aGlzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIGlmIChhLnN0YXJ0RGF0ZSA8IGIuc3RhcnREYXRlKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChiLnN0YXJ0RGF0ZSA8IGEuc3RhcnREYXRlKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEuZW5kRGF0ZSA+IGIuZW5kRGF0ZSkgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYi5lbmREYXRlID4gYS5lbmREYXRlKSByZXR1cm4gMTtcbiAgICAgICAgcmV0dXJuIGEuaWQgPCBiLmlkID8gLTEgOiAxO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXZlbnRzO1xuICAgIH0sXG4gICAgZ2V0V2Vla0V2ZW50czogZnVuY3Rpb24gZ2V0V2Vla0V2ZW50cyh3ZWVrU3RhcnQpIHtcbiAgICAgIC8vIFJldHVybiBhIGxpc3Qgb2YgZXZlbnRzIHRoYXQgQ09OVEFJTiB0aGUgd2VlayBzdGFydGluZyBvbiBhIGRheS5cbiAgICAgIC8vIFNvcnRlZCBzbyB0aGUgZXZlbnRzIHRoYXQgc3RhcnQgZWFybGllciBhcmUgYWx3YXlzIHNob3duIGZpcnN0LlxuICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZmluZEFuZFNvcnRFdmVudHNJbldlZWsod2Vla1N0YXJ0KTtcbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB2YXIgZXZlbnRSb3dzID0gW1tdLCBbXSwgW10sIFtdLCBbXSwgW10sIFtdXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVwID0gYXNzaWduX2RlZmF1bHQoKSh7fSwgZXZlbnRzW2ldLCB7XG4gICAgICAgICAgY2xhc3NlczogX3RvQ29uc3VtYWJsZUFycmF5KGV2ZW50c1tpXS5jbGFzc2VzKSxcbiAgICAgICAgICBldmVudFJvdzogMFxuICAgICAgICB9KTtcblxuICAgICAgICB2YXIgY29udGludWVkID0gZXAuc3RhcnREYXRlIDwgd2Vla1N0YXJ0O1xuICAgICAgICB2YXIgc3RhcnRPZmZzZXQgPSBjb250aW51ZWQgPyAwIDogdGhpcy5kYXlEaWZmKHdlZWtTdGFydCwgZXAuc3RhcnREYXRlKTtcbiAgICAgICAgdmFyIHNwYW4gPSBNYXRoLm1pbig3IC0gc3RhcnRPZmZzZXQsIHRoaXMuZGF5RGlmZih0aGlzLmFkZERheXMod2Vla1N0YXJ0LCBzdGFydE9mZnNldCksIGVwLmVuZERhdGUpICsgMSk7XG4gICAgICAgIGlmIChjb250aW51ZWQpIGVwLmNsYXNzZXMucHVzaChcImNvbnRpbnVlZFwiKTtcbiAgICAgICAgaWYgKHRoaXMuZGF5RGlmZih3ZWVrU3RhcnQsIGVwLmVuZERhdGUpID4gNikgZXAuY2xhc3Nlcy5wdXNoKFwidG9CZUNvbnRpbnVlZFwiKTtcbiAgICAgICAgaWYgKHRoaXMuaXNJblBhc3QoZXAuZW5kRGF0ZSkpIGVwLmNsYXNzZXMucHVzaChcInBhc3RcIik7XG4gICAgICAgIGlmIChlcC5vcmlnaW5hbEV2ZW50LnVybCkgZXAuY2xhc3Nlcy5wdXNoKFwiaGFzVXJsXCIpO1xuXG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgNzsgZCsrKSB7XG4gICAgICAgICAgaWYgKGQgPT09IHN0YXJ0T2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcyA9IDA7XG5cbiAgICAgICAgICAgIHdoaWxlIChldmVudFJvd3NbZF1bc10pIHtcbiAgICAgICAgICAgICAgcysrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlcC5ldmVudFJvdyA9IHM7XG4gICAgICAgICAgICBldmVudFJvd3NbZF1bc10gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZCA8IHN0YXJ0T2Zmc2V0ICsgc3Bhbikge1xuICAgICAgICAgICAgZXZlbnRSb3dzW2RdW2VwLmV2ZW50Um93XSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXAuY2xhc3Nlcy5wdXNoKFwib2Zmc2V0XCIuY29uY2F0KHN0YXJ0T2Zmc2V0KSk7XG4gICAgICAgIGVwLmNsYXNzZXMucHVzaChcInNwYW5cIi5jb25jYXQoc3BhbikpO1xuICAgICAgICByZXN1bHRzLnB1c2goZXApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9LFxuXG4gICAgLypcbiAgICBDcmVhdGVzIHRoZSBIVE1MIHRvIHByZWZpeCB0aGUgZXZlbnQgdGl0bGUgc2hvd2luZyB0aGUgZXZlbnQncyBzdGFydCBhbmQvb3JcbiAgICBlbmQgdGltZS4gTWlkbmlnaHQgaXMgbm90IGRpc3BsYXllZC5cbiAgICAqL1xuICAgIGdldEZvcm1hdHRlZFRpbWVSYW5nZTogZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkVGltZVJhbmdlKGUpIHtcbiAgICAgIHZhciBzdGFydFRpbWUgPSB0aGlzLmZvcm1hdHRlZFRpbWUoZS5zdGFydERhdGUsIHRoaXMuZGlzcGxheUxvY2FsZSwgdGhpcy50aW1lRm9ybWF0T3B0aW9ucyk7XG4gICAgICB2YXIgZW5kVGltZSA9IFwiXCI7XG5cbiAgICAgIGlmICghdGhpcy5pc1NhbWVEYXRlVGltZShlLnN0YXJ0RGF0ZSwgZS5lbmREYXRlKSkge1xuICAgICAgICBlbmRUaW1lID0gdGhpcy5mb3JtYXR0ZWRUaW1lKGUuZW5kRGF0ZSwgdGhpcy5kaXNwbGF5TG9jYWxlLCB0aGlzLnRpbWVGb3JtYXRPcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChzdGFydFRpbWUgIT09IFwiXCIgPyBcIjxzcGFuIGNsYXNzPVxcXCJzdGFydFRpbWVcXFwiPlwiLmNvbmNhdChzdGFydFRpbWUsIFwiPC9zcGFuPlwiKSA6IFwiXCIpICsgKGVuZFRpbWUgIT09IFwiXCIgPyBcIjxzcGFuIGNsYXNzPVxcXCJlbmRUaW1lXFxcIj5cIi5jb25jYXQoZW5kVGltZSwgXCI8L3NwYW4+XCIpIDogXCJcIik7XG4gICAgfSxcbiAgICBnZXRFdmVudFRpdGxlOiBmdW5jdGlvbiBnZXRFdmVudFRpdGxlKGUpIHtcbiAgICAgIGlmICghdGhpcy5zaG93RXZlbnRUaW1lcykgcmV0dXJuIGUudGl0bGU7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGb3JtYXR0ZWRUaW1lUmFuZ2UoZSkgKyBcIiBcIiArIGUudGl0bGU7XG4gICAgfSxcbiAgICBnZXRFdmVudFRvcDogZnVuY3Rpb24gZ2V0RXZlbnRUb3AoZSkge1xuICAgICAgLy8gQ29tcHV0ZSB0aGUgdG9wIHBvc2l0aW9uIG9mIHRoZSBldmVudCBiYXNlZCBvbiBpdHMgYXNzaWduZWQgcm93IHdpdGhpbiB0aGUgZ2l2ZW4gd2Vlay5cbiAgICAgIHZhciByID0gZS5ldmVudFJvdztcbiAgICAgIHZhciBoID0gdGhpcy5ldmVudENvbnRlbnRIZWlnaHQ7XG4gICAgICB2YXIgYiA9IHRoaXMuZXZlbnRCb3JkZXJIZWlnaHQ7XG4gICAgICByZXR1cm4gXCJjYWxjKFwiLmNvbmNhdCh0aGlzLmV2ZW50VG9wLCBcIiArIFwiKS5jb25jYXQociwgXCIqXCIpLmNvbmNhdChoLCBcIiArIFwiKS5jb25jYXQociwgXCIqXCIpLmNvbmNhdChiLCBcIilcIik7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvQ2FsZW5kYXJWaWV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX0NhbGVuZGFyVmlld3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChDYWxlbmRhclZpZXd2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy9DYWxlbmRhclZpZXcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3MmXG52YXIgQ2FsZW5kYXJWaWV3dnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9sYW5nX2Nzc18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTQ1ZFwiKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy9DYWxlbmRhclZpZXcudnVlXG5cblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBDYWxlbmRhclZpZXdfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBjb21wb25lbnRzX0NhbGVuZGFyVmlld3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBDYWxlbmRhclZpZXcgPSAoQ2FsZW5kYXJWaWV3X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvYnVuZGxlLmpzXG5cblxuIC8vIEV4cG9ydCB0aGUgY29tcGlsZWQgVnVlIGNvbXBvbmVudHMsIGFuZCBhbHNvIHRoZSBtaXhpbiBmb3IgdGhvc2Ugd2hvIHdpc2ggdG8gdXNlXG4vLyB0aG9zZSBtZXRob2RzIGluIHRoZWlyIG93biBjdXN0b20gaGVhZGVycywgZXRjLlxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UvbGliL2NvbW1hbmRzL2J1aWxkL2VudHJ5LWxpYi1uby1kZWZhdWx0LmpzXG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IENhbGVuZGFyVmlldyAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIkNhbGVuZGFyVmlld1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIENhbGVuZGFyVmlldzsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IENhbGVuZGFyVmlld0hlYWRlciAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIkNhbGVuZGFyVmlld0hlYWRlclwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIENhbGVuZGFyVmlld0hlYWRlcjsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IENhbGVuZGFyTWF0aE1peGluICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiQ2FsZW5kYXJNYXRoTWl4aW5cIiwgZnVuY3Rpb24oKSB7IHJldHVybiBDYWxlbmRhck1hdGhNaXhpbjsgfSk7XG5cblxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImZkZWZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSAnXFx4MDlcXHgwQVxceDBCXFx4MENcXHgwRFxceDIwXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDMnICtcbiAgJ1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkYnO1xuXG5cbi8qKiovIH0pXG5cbi8qKioqKiovIH0pO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DYWxlbmRhclZpZXcudW1kLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-simple-calendar/dist/CalendarView.umd.js\n");

/***/ }),

/***/ "./node_modules/vue-simple-suggest/dist/es6.js":
/*!*****************************************************!*\
  !*** ./node_modules/vue-simple-suggest/dist/es6.js ***!
  \*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(process) {const defaultControls = {\n  selectionUp: [38],\n  selectionDown: [40],\n  select: [13],\n  hideList: [27],\n  autocomplete: [32, 13]\n};\n\nconst modes = {\n  input: String,\n  select: Object\n};\n\nfunction fromPath(obj, path) {\n  return path.split('.').reduce((o, i) => o === Object(o) ? o[i] : o, obj);\n}\n\nfunction hasKeyCode(arr, event) {\n  if (arr.length <= 0) return false;\n\n  const has = arr => arr.some(code => code === event.keyCode);\n  if (Array.isArray(arr[0])) {\n    return arr.some(array => has(array));\n  } else {\n    return has(arr);\n  }\n}\n\nfunction _finally(body, finalizer) {\n  try {\n    var result = body();\n  } catch (e) {\n    return finalizer();\n  }if (result && result.then) {\n    return result.then(finalizer, finalizer);\n  }\n  return finalizer();\n}function _catch(body, recover) {\n  try {\n    var result = body();\n  } catch (e) {\n    return recover(e);\n  }if (result && result.then) {\n    return result.then(void 0, recover);\n  }return result;\n}function _invokeIgnored(body) {\n  var result = body();if (result && result.then) {\n    return result.then(_empty);\n  }\n}function _await(value, then, direct) {\n  if (direct) {\n    return then ? then(value) : value;\n  }value = Promise.resolve(value);return then ? value.then(then) : value;\n}const _async = function () {\n  try {\n    if (isNaN.apply(null, {})) {\n      return function (f) {\n        return function () {\n          try {\n            return Promise.resolve(f.apply(this, arguments));\n          } catch (e) {\n            return Promise.reject(e);\n          }\n        };\n      };\n    }\n  } catch (e) {}return function (f) {\n    // Pre-ES5.1 JavaScript runtimes don't accept array-likes in Function.apply\n    return function () {\n      try {\n        return Promise.resolve(f.apply(this, Array.prototype.slice.call(arguments)));\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    };\n  };\n}();function _invoke(body, then) {\n  var result = body();if (result && result.then) {\n    return result.then(then);\n  }return then(result);\n}function _awaitIgnored(value, direct) {\n  if (!direct) {\n    return Promise.resolve(value).then(_empty);\n  }\n}function _empty() {}\nvar VueSimpleSuggest = {\n  render: function () {\n    var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: \"vue-simple-suggest\", class: [_vm.styles.vueSimpleSuggest, { designed: !_vm.destyled, focus: _vm.isInFocus }], on: { \"keydown\": function ($event) {\n          if (!('button' in $event) && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) {\n            return null;\n          }_vm.isTabbed = true;\n        } } }, [_c('div', { ref: \"inputSlot\", staticClass: \"input-wrapper\", class: _vm.styles.inputWrapper, attrs: { \"role\": \"combobox\", \"aria-haspopup\": \"listbox\", \"aria-owns\": _vm.listId, \"aria-expanded\": !!_vm.listShown && !_vm.removeList ? 'true' : 'false' } }, [_vm._t(\"default\", [_c('input', _vm._b({ staticClass: \"default-input\", class: _vm.styles.defaultInput, domProps: { \"value\": _vm.text || '' } }, 'input', _vm.$attrs, false))])], 2), _vm._v(\" \"), _c('transition', { attrs: { \"name\": \"vue-simple-suggest\" } }, [!!_vm.listShown && !_vm.removeList ? _c('ul', { staticClass: \"suggestions\", class: _vm.styles.suggestions, attrs: { \"id\": _vm.listId, \"role\": \"listbox\", \"aria-labelledby\": _vm.listId }, on: { \"mouseenter\": function ($event) {\n          _vm.hoverList(true);\n        }, \"mouseleave\": function ($event) {\n          _vm.hoverList(false);\n        } } }, [!!this.$scopedSlots['misc-item-above'] ? _c('li', [_vm._t(\"misc-item-above\", null, { suggestions: _vm.suggestions, query: _vm.text })], 2) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.suggestions, function (suggestion, index) {\n      return _c('li', { key: _vm.getId(suggestion, index), staticClass: \"suggest-item\", class: [_vm.styles.suggestItem, {\n          selected: _vm.isSelected(suggestion),\n          hover: _vm.isHovered(suggestion)\n        }], attrs: { \"role\": \"option\", \"aria-selected\": _vm.isHovered(suggestion) || _vm.isSelected(suggestion) ? 'true' : 'false', \"id\": _vm.getId(suggestion, index) }, on: { \"mouseenter\": function ($event) {\n            _vm.hover(suggestion, $event.target);\n          }, \"mouseleave\": function ($event) {\n            _vm.hover(undefined);\n          }, \"click\": function ($event) {\n            _vm.suggestionClick(suggestion, $event);\n          } } }, [_vm._t(\"suggestion-item\", [_c('span', [_vm._v(_vm._s(_vm.displayProperty(suggestion)))])], { autocomplete: function () {\n          return _vm.setText(_vm.displayProperty(suggestion));\n        }, suggestion: suggestion, query: _vm.text })], 2);\n    }), _vm._v(\" \"), !!this.$scopedSlots['misc-item-below'] ? _c('li', [_vm._t(\"misc-item-below\", null, { suggestions: _vm.suggestions, query: _vm.text })], 2) : _vm._e()], 2) : _vm._e()])], 1);\n  },\n  staticRenderFns: [],\n  name: 'vue-simple-suggest',\n  inheritAttrs: false,\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    styles: {\n      type: Object,\n      default: () => ({})\n    },\n    controls: {\n      type: Object,\n      default: () => defaultControls\n    },\n    minLength: {\n      type: Number,\n      default: 1\n    },\n    maxSuggestions: {\n      type: Number,\n      default: 10\n    },\n    displayAttribute: {\n      type: String,\n      default: 'title'\n    },\n    valueAttribute: {\n      type: String,\n      default: 'id'\n    },\n    list: {\n      type: [Function, Array],\n      default: () => []\n    },\n    removeList: {\n      type: Boolean,\n      default: false\n    },\n    destyled: {\n      type: Boolean,\n      default: false\n    },\n    preventSubmit: {\n      type: Boolean,\n      default: true\n    },\n    filterByQuery: {\n      type: Boolean,\n      default: false\n    },\n    filter: {\n      type: Function,\n      default(el, value) {\n        return value ? ~this.displayProperty(el).toLowerCase().indexOf(value.toLowerCase()) : true;\n      }\n    },\n    debounce: {\n      type: Number,\n      default: 0\n    },\n    nullableSelect: {\n      type: Boolean,\n      default: false\n    },\n    value: {},\n    mode: {\n      type: String,\n      default: 'input',\n      validator: value => !!~Object.keys(modes).indexOf(value.toLowerCase())\n    }\n  },\n  // Handle run-time mode changes (now working):\n  watch: {\n    mode: {\n      handler(current, old) {\n        this.constructor.options.model.event = current;\n\n        // Can be null if the component is root\n        this.$parent && this.$parent.$forceUpdate();\n\n        this.$nextTick(() => {\n          if (current === 'input') {\n            this.$emit('input', this.text);\n          } else {\n            this.$emit('select', this.selected);\n          }\n        });\n      },\n      immediate: true\n    },\n    value: {\n      handler(current) {\n        if (typeof current === 'string') {\n          this.text = current;\n        } else if (current) {\n          this.text = this.displayProperty(current);\n        }\n      },\n      immediate: true\n    }\n  },\n  //\n  data() {\n    return {\n      selected: null,\n      hovered: null,\n      suggestions: [],\n      listShown: false,\n      inputElement: null,\n      canSend: true,\n      timeoutInstance: null,\n      text: this.value,\n      isPlainSuggestion: false,\n      isClicking: false,\n      isOverList: false,\n      isInFocus: false,\n      isFalseFocus: false,\n      isTabbed: false,\n      controlScheme: {},\n      listId: `${this._uid}-suggestions`\n    };\n  },\n  computed: {\n    listIsRequest() {\n      return typeof this.list === 'function';\n    },\n    inputIsComponent() {\n      return this.$slots.default && this.$slots.default.length > 0 && !!this.$slots.default[0].componentInstance;\n    },\n    input() {\n      return this.inputIsComponent ? this.$slots.default[0].componentInstance : this.inputElement;\n    },\n    on() {\n      return this.inputIsComponent ? '$on' : 'addEventListener';\n    },\n    off() {\n      return this.inputIsComponent ? '$off' : 'removeEventListener';\n    },\n    hoveredIndex() {\n      return this.suggestions.findIndex(el => this.hovered && this.valueProperty(this.hovered) == this.valueProperty(el));\n    },\n    textLength() {\n      return this.text && this.text.length || this.inputElement.value.length || 0;\n    },\n    isSelectedUpToDate() {\n      return !!this.selected && this.displayProperty(this.selected) === this.text;\n    }\n  },\n  created() {\n    this.controlScheme = Object.assign({}, defaultControls, this.controls);\n  },\n  mounted() {\n    this.inputElement = this.$refs['inputSlot'].querySelector('input');\n\n    this.setInputAriaAttributes();\n    this.prepareEventHandlers(true);\n  },\n  beforeDestroy() {\n    this.prepareEventHandlers(false);\n  },\n  methods: {\n    isEqual(suggestion, item) {\n      return item && this.valueProperty(suggestion) == this.valueProperty(item);\n    },\n    isSelected(suggestion) {\n      return this.isEqual(suggestion, this.selected);\n    },\n    isHovered(suggestion) {\n      return this.isEqual(suggestion, this.hovered);\n    },\n    onSubmit(e) {\n      if (this.preventSubmit && e.key === 'Enter') {\n        e.stopPropagation();\n        e.preventDefault();\n      }\n    },\n    setInputAriaAttributes() {\n      this.inputElement.setAttribute('aria-activedescendant', '');\n      this.inputElement.setAttribute('aria-autocomplete', 'list');\n      this.inputElement.setAttribute('aria-controls', this.listId);\n    },\n    prepareEventHandlers(enable) {\n      const binder = this[enable ? 'on' : 'off'];\n      const keyEventsList = {\n        click: this.showSuggestions,\n        keydown: $event => (this.moveSelection($event), this.onAutocomplete($event)),\n        keyup: this.onListKeyUp\n      };\n      const eventsList = Object.assign({\n        blur: this.onBlur,\n        focus: this.onFocus,\n        input: this.onInput\n      }, keyEventsList);\n\n      for (const event in eventsList) {\n        this.input[binder](event, eventsList[event]);\n      }\n\n      const listenerBinder = enable ? 'addEventListener' : 'removeEventListener';\n\n      for (const event in keyEventsList) {\n        this.inputElement[listenerBinder](event, keyEventsList[event]);\n      }\n\n      if (this.preventSubmit === true) {\n        let form = this.$el.closest('form');\n        if (form) {\n          form[listenerBinder]('keydown', this.onSubmit);\n        }\n      }\n    },\n    isScopedSlotEmpty(slot) {\n      if (slot) {\n        const vNode = slot(this);\n        return !(Array.isArray(vNode) || vNode && (vNode.tag || vNode.context || vNode.text || vNode.children));\n      }\n\n      return true;\n    },\n    miscSlotsAreEmpty() {\n      const slots = ['misc-item-above', 'misc-item-below'].map(s => this.$scopedSlots[s]);\n\n      if (slots.every(s => !!s)) {\n        return slots.every(this.isScopedSlotEmpty.bind(this));\n      }\n\n      const slot = slots.find(s => !!s);\n\n      return this.isScopedSlotEmpty.call(this, slot);\n    },\n    getPropertyByAttribute(obj, attr) {\n      return this.isPlainSuggestion ? obj : typeof obj !== undefined ? fromPath(obj, attr) : obj;\n    },\n    displayProperty(obj) {\n      if (this.isPlainSuggestion) {\n        return obj;\n      }\n\n      let display = this.getPropertyByAttribute(obj, this.displayAttribute);\n\n      if (typeof display === 'undefined') {\n        display = JSON.stringify(obj);\n\n        if (process && ~\"staging\".indexOf('dev')) {\n          console.warn('[vue-simple-suggest]: Please, provide `display-attribute` as a key or a dotted path for a property from your object.');\n        }\n      }\n\n      return String(display);\n    },\n    valueProperty(obj) {\n      if (this.isPlainSuggestion) {\n        return obj;\n      }\n\n      const value = this.getPropertyByAttribute(obj, this.valueAttribute);\n\n      if (typeof value === 'undefined') {\n        console.error(`[vue-simple-suggest]: Please, check if you passed 'value-attribute' (default is 'id') and 'display-attribute' (default is 'title') props correctly.\n        Your list objects should always contain a unique identifier.`);\n      }\n\n      return value;\n    },\n\n    /**\n     * @deprecated remove on the next release\n     */\n    autocompleteText(text) {\n      this.setText(text);\n    },\n    setText(text) {\n      this.$nextTick(() => {\n        this.$emit('input', text);\n        this.inputElement.value = text;\n        this.text = text;\n      });\n    },\n    select(item) {\n      if (this.selected !== item || this.nullableSelect && !item) {\n        this.selected = item;\n        this.$emit('select', item);\n\n        if (item) {\n          this.setText(this.displayProperty(item));\n        }\n      }\n\n      this.hover(null);\n    },\n    hover(item, elem) {\n      const elemId = !!item ? this.getId(item, this.hoveredIndex) : '';\n\n      this.inputElement.setAttribute('aria-activedescendant', elemId);\n\n      if (item && item !== this.hovered) {\n        this.$emit('hover', item, elem);\n      }\n\n      this.hovered = item;\n    },\n    hoverList(isOverList) {\n      this.isOverList = isOverList;\n    },\n    hideList() {\n      if (this.listShown) {\n        this.listShown = false;\n        this.hover(null);\n        this.$emit('hide-list');\n      }\n    },\n    showList() {\n      if (!this.listShown) {\n        if (this.textLength >= this.minLength && (this.suggestions.length > 0 || !this.miscSlotsAreEmpty())) {\n          this.listShown = true;\n          this.$emit('show-list');\n        }\n      }\n    },\n    showSuggestions: _async(function () {\n      var _this = this;\n\n      return _invoke(function () {\n        if (_this.suggestions.length === 0 && _this.minLength === _this.textLength) {\n          return _awaitIgnored(_this.research());\n        }\n      }, function () {\n        _this.showList();\n      });\n    }),\n\n    moveSelection(e) {\n      if (!this.listShown || !this.suggestions.length) return;\n      if (hasKeyCode([this.controlScheme.selectionUp, this.controlScheme.selectionDown], e)) {\n        e.preventDefault();\n        this.showSuggestions();\n\n        const isMovingDown = hasKeyCode(this.controlScheme.selectionDown, e);\n        const direction = isMovingDown * 2 - 1;\n        const listEdge = isMovingDown ? 0 : this.suggestions.length - 1;\n        const hoversBetweenEdges = isMovingDown ? this.hoveredIndex < this.suggestions.length - 1 : this.hoveredIndex > 0;\n\n        let item = null;\n\n        if (!this.hovered) {\n          item = this.selected || this.suggestions[listEdge];\n        } else if (hoversBetweenEdges) {\n          item = this.suggestions[this.hoveredIndex + direction];\n        } else /* if hovers on edge */{\n            item = this.suggestions[listEdge];\n          }\n        this.hover(item);\n      }\n    },\n    onListKeyUp(e) {\n      const select = this.controlScheme.select,\n            hideList = this.controlScheme.hideList;\n\n      if (hasKeyCode([select, hideList], e)) {\n        e.preventDefault();\n        if (this.listShown) {\n          if (hasKeyCode(select, e)) {\n            this.select(this.hovered);\n          }\n\n          this.hideList();\n        } else if (hasKeyCode(select, e)) {\n          this.research();\n        }\n      }\n    },\n    onAutocomplete(e) {\n      if (hasKeyCode(this.controlScheme.autocomplete, e) && (e.ctrlKey || e.shiftKey) && this.suggestions.length > 0 && this.suggestions[0] && this.listShown) {\n        e.preventDefault();\n        this.hover(this.suggestions[0]);\n        this.setText(this.displayProperty(this.suggestions[0]));\n      }\n    },\n    suggestionClick(suggestion, e) {\n      this.$emit('suggestion-click', suggestion, e);\n      this.select(suggestion);\n\n      /// Ensure, that all needed flags are off before finishing the click.\n      this.isClicking = this.isOverList = false;\n\n      this.$nextTick(() => {\n        this.hideList();\n      });\n    },\n    onBlur(e) {\n      if (this.isInFocus) {\n\n        /// Clicking starts here, because input's blur occurs before the suggestionClick\n        /// and exactly when the user clicks the mouse button or taps the screen.\n        this.isClicking = this.isOverList && !this.isTabbed;\n\n        if (!this.isClicking) {\n          this.isInFocus = false;\n          this.hideList();\n\n          this.$emit('blur', e);\n        } else if (e && e.isTrusted && !this.isTabbed) {\n          this.isFalseFocus = true;\n          this.$nextTick(() => {\n            this.inputElement.focus();\n          });\n        }\n      } else {\n        this.inputElement.blur();\n        console.error(`This should never happen!\n          If you encountered this error, please make sure that your input component emits 'focus' events properly.\n          For more info see https://github.com/KazanExpress/vue-simple-suggest#custom-input.\n\n          If your 'vue-simple-suggest' setup does not include a custom input component - please,\n          report to https://github.com/KazanExpress/vue-simple-suggest/issues/new`);\n      }\n\n      this.isTabbed = false;\n    },\n    onFocus(e) {\n      this.isInFocus = true;\n\n      // Only emit, if it was a native input focus\n      if (e && !this.isFalseFocus) {\n        this.$emit('focus', e);\n      }\n      this.isFalseFocus = false;\n\n      // Show list only if the item has not been clicked\n      if (!this.isClicking) {\n        this.showSuggestions();\n      }\n    },\n    onInput(inputEvent) {\n      const value = !inputEvent.target ? inputEvent : inputEvent.target.value;\n\n      if (this.text === value) {\n        return;\n      }\n\n      this.text = value;\n      this.$emit('input', this.text);\n\n      if (this.hovered) this.hover(null);\n\n      if (this.debounce) {\n        clearTimeout(this.timeoutInstance);\n        this.timeoutInstance = setTimeout(this.research, this.debounce);\n      } else {\n        this.research();\n      }\n    },\n    research: _async(function () {\n      var _this2 = this;\n\n      return _finally(function () {\n        return _catch(function () {\n          return _invokeIgnored(function () {\n            if (_this2.canSend) {\n              _this2.canSend = false;\n              // @TODO: fix when promises will be cancelable (never :D)\n              let textBeforeRequest = _this2.text;\n              return _await(_this2.getSuggestions(_this2.text), function (newList) {\n                if (textBeforeRequest === _this2.text) {\n                  _this2.$set(_this2, 'suggestions', newList);\n                }\n              });\n            }\n          });\n        }, function (e) {\n          _this2.clearSuggestions();\n          throw e;\n        });\n      }, function () {\n        _this2.canSend = true;\n\n        if (_this2.suggestions.length === 0 && _this2.miscSlotsAreEmpty()) {\n          _this2.hideList();\n        } else {\n          _this2.showList();\n        }\n\n        return _this2.suggestions;\n      });\n    }),\n    getSuggestions: _async(function (value) {\n      var _this3 = this;\n\n      value = value || '';\n\n      if (value.length < _this3.minLength) {\n        if (_this3.listShown) {\n          _this3.hideList();\n          return [];\n        }\n\n        return _this3.suggestions;\n      }\n\n      _this3.selected = null;\n\n      // Start request if can\n      if (_this3.listIsRequest) {\n        _this3.$emit('request-start', value);\n\n        if (_this3.suggestions.length > 0 || !_this3.miscSlotsAreEmpty()) {\n          _this3.showList();\n        }\n      }\n\n      let result = [];\n      return _finally(function () {\n        return _catch(function () {\n          return _invoke(function () {\n            if (_this3.listIsRequest) {\n              return _await(_this3.list(value), function (_this3$list) {\n                result = _this3$list || [];\n              });\n            } else {\n              result = _this3.list;\n            }\n          }, function () {\n            // IFF the result is not an array (just in case!) - make it an array\n            if (!Array.isArray(result)) {\n              result = [result];\n            }\n\n            _this3.isPlainSuggestion = typeof result[0] !== 'object' || Array.isArray(result[0]);\n\n            if (_this3.filterByQuery) {\n              result = result.filter(el => _this3.filter(el, value));\n            }\n\n            if (_this3.listIsRequest) {\n              _this3.$emit('request-done', result);\n            }\n          });\n        }, function (e) {\n          if (_this3.listIsRequest) {\n            _this3.$emit('request-failed', e);\n          } else {\n            throw e;\n          }\n        });\n      }, function () {\n        if (_this3.maxSuggestions) {\n          result.splice(_this3.maxSuggestions);\n        }\n\n        return result;\n      });\n    }),\n\n    clearSuggestions() {\n      this.suggestions.splice(0);\n    },\n    getId(value, i) {\n      return `${this.listId}-suggestion-${this.isPlainSuggestion ? i : this.valueProperty(value) || i}`;\n    }\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (VueSimpleSuggest);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXNpbXBsZS1zdWdnZXN0L2Rpc3QvZXM2LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1zaW1wbGUtc3VnZ2VzdC9kaXN0L2VzNi5qcz81MTExIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRlZmF1bHRDb250cm9scyA9IHtcbiAgc2VsZWN0aW9uVXA6IFszOF0sXG4gIHNlbGVjdGlvbkRvd246IFs0MF0sXG4gIHNlbGVjdDogWzEzXSxcbiAgaGlkZUxpc3Q6IFsyN10sXG4gIGF1dG9jb21wbGV0ZTogWzMyLCAxM11cbn07XG5cbmNvbnN0IG1vZGVzID0ge1xuICBpbnB1dDogU3RyaW5nLFxuICBzZWxlY3Q6IE9iamVjdFxufTtcblxuZnVuY3Rpb24gZnJvbVBhdGgob2JqLCBwYXRoKSB7XG4gIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChvLCBpKSA9PiBvID09PSBPYmplY3QobykgPyBvW2ldIDogbywgb2JqKTtcbn1cblxuZnVuY3Rpb24gaGFzS2V5Q29kZShhcnIsIGV2ZW50KSB7XG4gIGlmIChhcnIubGVuZ3RoIDw9IDApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBoYXMgPSBhcnIgPT4gYXJyLnNvbWUoY29kZSA9PiBjb2RlID09PSBldmVudC5rZXlDb2RlKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyWzBdKSkge1xuICAgIHJldHVybiBhcnIuc29tZShhcnJheSA9PiBoYXMoYXJyYXkpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaGFzKGFycik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2ZpbmFsbHkoYm9keSwgZmluYWxpemVyKSB7XG4gIHRyeSB7XG4gICAgdmFyIHJlc3VsdCA9IGJvZHkoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmaW5hbGl6ZXIoKTtcbiAgfWlmIChyZXN1bHQgJiYgcmVzdWx0LnRoZW4pIHtcbiAgICByZXR1cm4gcmVzdWx0LnRoZW4oZmluYWxpemVyLCBmaW5hbGl6ZXIpO1xuICB9XG4gIHJldHVybiBmaW5hbGl6ZXIoKTtcbn1mdW5jdGlvbiBfY2F0Y2goYm9keSwgcmVjb3Zlcikge1xuICB0cnkge1xuICAgIHZhciByZXN1bHQgPSBib2R5KCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gcmVjb3ZlcihlKTtcbiAgfWlmIChyZXN1bHQgJiYgcmVzdWx0LnRoZW4pIHtcbiAgICByZXR1cm4gcmVzdWx0LnRoZW4odm9pZCAwLCByZWNvdmVyKTtcbiAgfXJldHVybiByZXN1bHQ7XG59ZnVuY3Rpb24gX2ludm9rZUlnbm9yZWQoYm9keSkge1xuICB2YXIgcmVzdWx0ID0gYm9keSgpO2lmIChyZXN1bHQgJiYgcmVzdWx0LnRoZW4pIHtcbiAgICByZXR1cm4gcmVzdWx0LnRoZW4oX2VtcHR5KTtcbiAgfVxufWZ1bmN0aW9uIF9hd2FpdCh2YWx1ZSwgdGhlbiwgZGlyZWN0KSB7XG4gIGlmIChkaXJlY3QpIHtcbiAgICByZXR1cm4gdGhlbiA/IHRoZW4odmFsdWUpIDogdmFsdWU7XG4gIH12YWx1ZSA9IFByb21pc2UucmVzb2x2ZSh2YWx1ZSk7cmV0dXJuIHRoZW4gPyB2YWx1ZS50aGVuKHRoZW4pIDogdmFsdWU7XG59Y29uc3QgX2FzeW5jID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIGlmIChpc05hTi5hcHBseShudWxsLCB7fSkpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGYuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfVxuICB9IGNhdGNoIChlKSB7fXJldHVybiBmdW5jdGlvbiAoZikge1xuICAgIC8vIFByZS1FUzUuMSBKYXZhU2NyaXB0IHJ1bnRpbWVzIGRvbid0IGFjY2VwdCBhcnJheS1saWtlcyBpbiBGdW5jdGlvbi5hcHBseVxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGYuYXBwbHkodGhpcywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn0oKTtmdW5jdGlvbiBfaW52b2tlKGJvZHksIHRoZW4pIHtcbiAgdmFyIHJlc3VsdCA9IGJvZHkoKTtpZiAocmVzdWx0ICYmIHJlc3VsdC50aGVuKSB7XG4gICAgcmV0dXJuIHJlc3VsdC50aGVuKHRoZW4pO1xuICB9cmV0dXJuIHRoZW4ocmVzdWx0KTtcbn1mdW5jdGlvbiBfYXdhaXRJZ25vcmVkKHZhbHVlLCBkaXJlY3QpIHtcbiAgaWYgKCFkaXJlY3QpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9lbXB0eSk7XG4gIH1cbn1mdW5jdGlvbiBfZW1wdHkoKSB7fVxudmFyIFZ1ZVNpbXBsZVN1Z2dlc3QgPSB7XG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdm0gPSB0aGlzO3ZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2g7cmV0dXJuIF9jKCdkaXYnLCB7IHN0YXRpY0NsYXNzOiBcInZ1ZS1zaW1wbGUtc3VnZ2VzdFwiLCBjbGFzczogW192bS5zdHlsZXMudnVlU2ltcGxlU3VnZ2VzdCwgeyBkZXNpZ25lZDogIV92bS5kZXN0eWxlZCwgZm9jdXM6IF92bS5pc0luRm9jdXMgfV0sIG9uOiB7IFwia2V5ZG93blwiOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgaWYgKCEoJ2J1dHRvbicgaW4gJGV2ZW50KSAmJiBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwidGFiXCIsIDksICRldmVudC5rZXksIFwiVGFiXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9X3ZtLmlzVGFiYmVkID0gdHJ1ZTtcbiAgICAgICAgfSB9IH0sIFtfYygnZGl2JywgeyByZWY6IFwiaW5wdXRTbG90XCIsIHN0YXRpY0NsYXNzOiBcImlucHV0LXdyYXBwZXJcIiwgY2xhc3M6IF92bS5zdHlsZXMuaW5wdXRXcmFwcGVyLCBhdHRyczogeyBcInJvbGVcIjogXCJjb21ib2JveFwiLCBcImFyaWEtaGFzcG9wdXBcIjogXCJsaXN0Ym94XCIsIFwiYXJpYS1vd25zXCI6IF92bS5saXN0SWQsIFwiYXJpYS1leHBhbmRlZFwiOiAhIV92bS5saXN0U2hvd24gJiYgIV92bS5yZW1vdmVMaXN0ID8gJ3RydWUnIDogJ2ZhbHNlJyB9IH0sIFtfdm0uX3QoXCJkZWZhdWx0XCIsIFtfYygnaW5wdXQnLCBfdm0uX2IoeyBzdGF0aWNDbGFzczogXCJkZWZhdWx0LWlucHV0XCIsIGNsYXNzOiBfdm0uc3R5bGVzLmRlZmF1bHRJbnB1dCwgZG9tUHJvcHM6IHsgXCJ2YWx1ZVwiOiBfdm0udGV4dCB8fCAnJyB9IH0sICdpbnB1dCcsIF92bS4kYXR0cnMsIGZhbHNlKSldKV0sIDIpLCBfdm0uX3YoXCIgXCIpLCBfYygndHJhbnNpdGlvbicsIHsgYXR0cnM6IHsgXCJuYW1lXCI6IFwidnVlLXNpbXBsZS1zdWdnZXN0XCIgfSB9LCBbISFfdm0ubGlzdFNob3duICYmICFfdm0ucmVtb3ZlTGlzdCA/IF9jKCd1bCcsIHsgc3RhdGljQ2xhc3M6IFwic3VnZ2VzdGlvbnNcIiwgY2xhc3M6IF92bS5zdHlsZXMuc3VnZ2VzdGlvbnMsIGF0dHJzOiB7IFwiaWRcIjogX3ZtLmxpc3RJZCwgXCJyb2xlXCI6IFwibGlzdGJveFwiLCBcImFyaWEtbGFiZWxsZWRieVwiOiBfdm0ubGlzdElkIH0sIG9uOiB7IFwibW91c2VlbnRlclwiOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLmhvdmVyTGlzdCh0cnVlKTtcbiAgICAgICAgfSwgXCJtb3VzZWxlYXZlXCI6IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICBfdm0uaG92ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgfSB9IH0sIFshIXRoaXMuJHNjb3BlZFNsb3RzWydtaXNjLWl0ZW0tYWJvdmUnXSA/IF9jKCdsaScsIFtfdm0uX3QoXCJtaXNjLWl0ZW0tYWJvdmVcIiwgbnVsbCwgeyBzdWdnZXN0aW9uczogX3ZtLnN1Z2dlc3Rpb25zLCBxdWVyeTogX3ZtLnRleHQgfSldLCAyKSA6IF92bS5fZSgpLCBfdm0uX3YoXCIgXCIpLCBfdm0uX2woX3ZtLnN1Z2dlc3Rpb25zLCBmdW5jdGlvbiAoc3VnZ2VzdGlvbiwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBfYygnbGknLCB7IGtleTogX3ZtLmdldElkKHN1Z2dlc3Rpb24sIGluZGV4KSwgc3RhdGljQ2xhc3M6IFwic3VnZ2VzdC1pdGVtXCIsIGNsYXNzOiBbX3ZtLnN0eWxlcy5zdWdnZXN0SXRlbSwge1xuICAgICAgICAgIHNlbGVjdGVkOiBfdm0uaXNTZWxlY3RlZChzdWdnZXN0aW9uKSxcbiAgICAgICAgICBob3ZlcjogX3ZtLmlzSG92ZXJlZChzdWdnZXN0aW9uKVxuICAgICAgICB9XSwgYXR0cnM6IHsgXCJyb2xlXCI6IFwib3B0aW9uXCIsIFwiYXJpYS1zZWxlY3RlZFwiOiBfdm0uaXNIb3ZlcmVkKHN1Z2dlc3Rpb24pIHx8IF92bS5pc1NlbGVjdGVkKHN1Z2dlc3Rpb24pID8gJ3RydWUnIDogJ2ZhbHNlJywgXCJpZFwiOiBfdm0uZ2V0SWQoc3VnZ2VzdGlvbiwgaW5kZXgpIH0sIG9uOiB7IFwibW91c2VlbnRlclwiOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICBfdm0uaG92ZXIoc3VnZ2VzdGlvbiwgJGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgfSwgXCJtb3VzZWxlYXZlXCI6IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgIF92bS5ob3Zlcih1bmRlZmluZWQpO1xuICAgICAgICAgIH0sIFwiY2xpY2tcIjogZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAgICAgX3ZtLnN1Z2dlc3Rpb25DbGljayhzdWdnZXN0aW9uLCAkZXZlbnQpO1xuICAgICAgICAgIH0gfSB9LCBbX3ZtLl90KFwic3VnZ2VzdGlvbi1pdGVtXCIsIFtfYygnc3BhbicsIFtfdm0uX3YoX3ZtLl9zKF92bS5kaXNwbGF5UHJvcGVydHkoc3VnZ2VzdGlvbikpKV0pXSwgeyBhdXRvY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3ZtLnNldFRleHQoX3ZtLmRpc3BsYXlQcm9wZXJ0eShzdWdnZXN0aW9uKSk7XG4gICAgICAgIH0sIHN1Z2dlc3Rpb246IHN1Z2dlc3Rpb24sIHF1ZXJ5OiBfdm0udGV4dCB9KV0sIDIpO1xuICAgIH0pLCBfdm0uX3YoXCIgXCIpLCAhIXRoaXMuJHNjb3BlZFNsb3RzWydtaXNjLWl0ZW0tYmVsb3cnXSA/IF9jKCdsaScsIFtfdm0uX3QoXCJtaXNjLWl0ZW0tYmVsb3dcIiwgbnVsbCwgeyBzdWdnZXN0aW9uczogX3ZtLnN1Z2dlc3Rpb25zLCBxdWVyeTogX3ZtLnRleHQgfSldLCAyKSA6IF92bS5fZSgpXSwgMikgOiBfdm0uX2UoKV0pXSwgMSk7XG4gIH0sXG4gIHN0YXRpY1JlbmRlckZuczogW10sXG4gIG5hbWU6ICd2dWUtc2ltcGxlLXN1Z2dlc3QnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICd2YWx1ZScsXG4gICAgZXZlbnQ6ICdpbnB1dCdcbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBzdHlsZXM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcbiAgICB9LFxuICAgIGNvbnRyb2xzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiBkZWZhdWx0Q29udHJvbHNcbiAgICB9LFxuICAgIG1pbkxlbmd0aDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMVxuICAgIH0sXG4gICAgbWF4U3VnZ2VzdGlvbnM6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDEwXG4gICAgfSxcbiAgICBkaXNwbGF5QXR0cmlidXRlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAndGl0bGUnXG4gICAgfSxcbiAgICB2YWx1ZUF0dHJpYnV0ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2lkJ1xuICAgIH0sXG4gICAgbGlzdDoge1xuICAgICAgdHlwZTogW0Z1bmN0aW9uLCBBcnJheV0sXG4gICAgICBkZWZhdWx0OiAoKSA9PiBbXVxuICAgIH0sXG4gICAgcmVtb3ZlTGlzdDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBkZXN0eWxlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwcmV2ZW50U3VibWl0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgZmlsdGVyQnlRdWVyeToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBmaWx0ZXI6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdChlbCwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID8gfnRoaXMuZGlzcGxheVByb3BlcnR5KGVsKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodmFsdWUudG9Mb3dlckNhc2UoKSkgOiB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgZGVib3VuY2U6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIG51bGxhYmxlU2VsZWN0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHZhbHVlOiB7fSxcbiAgICBtb2RlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnaW5wdXQnLFxuICAgICAgdmFsaWRhdG9yOiB2YWx1ZSA9PiAhIX5PYmplY3Qua2V5cyhtb2RlcykuaW5kZXhPZih2YWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgIH1cbiAgfSxcbiAgLy8gSGFuZGxlIHJ1bi10aW1lIG1vZGUgY2hhbmdlcyAobm93IHdvcmtpbmcpOlxuICB3YXRjaDoge1xuICAgIG1vZGU6IHtcbiAgICAgIGhhbmRsZXIoY3VycmVudCwgb2xkKSB7XG4gICAgICAgIHRoaXMuY29uc3RydWN0b3Iub3B0aW9ucy5tb2RlbC5ldmVudCA9IGN1cnJlbnQ7XG5cbiAgICAgICAgLy8gQ2FuIGJlIG51bGwgaWYgdGhlIGNvbXBvbmVudCBpcyByb290XG4gICAgICAgIHRoaXMuJHBhcmVudCAmJiB0aGlzLiRwYXJlbnQuJGZvcmNlVXBkYXRlKCk7XG5cbiAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIGlmIChjdXJyZW50ID09PSAnaW5wdXQnKSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMudGV4dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdCcsIHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgfSxcbiAgICB2YWx1ZToge1xuICAgICAgaGFuZGxlcihjdXJyZW50KSB7XG4gICAgICAgIGlmICh0eXBlb2YgY3VycmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLnRleHQgPSBjdXJyZW50O1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLmRpc3BsYXlQcm9wZXJ0eShjdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgLy9cbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWQ6IG51bGwsXG4gICAgICBob3ZlcmVkOiBudWxsLFxuICAgICAgc3VnZ2VzdGlvbnM6IFtdLFxuICAgICAgbGlzdFNob3duOiBmYWxzZSxcbiAgICAgIGlucHV0RWxlbWVudDogbnVsbCxcbiAgICAgIGNhblNlbmQ6IHRydWUsXG4gICAgICB0aW1lb3V0SW5zdGFuY2U6IG51bGwsXG4gICAgICB0ZXh0OiB0aGlzLnZhbHVlLFxuICAgICAgaXNQbGFpblN1Z2dlc3Rpb246IGZhbHNlLFxuICAgICAgaXNDbGlja2luZzogZmFsc2UsXG4gICAgICBpc092ZXJMaXN0OiBmYWxzZSxcbiAgICAgIGlzSW5Gb2N1czogZmFsc2UsXG4gICAgICBpc0ZhbHNlRm9jdXM6IGZhbHNlLFxuICAgICAgaXNUYWJiZWQ6IGZhbHNlLFxuICAgICAgY29udHJvbFNjaGVtZToge30sXG4gICAgICBsaXN0SWQ6IGAke3RoaXMuX3VpZH0tc3VnZ2VzdGlvbnNgXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBsaXN0SXNSZXF1ZXN0KCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmxpc3QgPT09ICdmdW5jdGlvbic7XG4gICAgfSxcbiAgICBpbnB1dElzQ29tcG9uZW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHNsb3RzLmRlZmF1bHQgJiYgdGhpcy4kc2xvdHMuZGVmYXVsdC5sZW5ndGggPiAwICYmICEhdGhpcy4kc2xvdHMuZGVmYXVsdFswXS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB9LFxuICAgIGlucHV0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5wdXRJc0NvbXBvbmVudCA/IHRoaXMuJHNsb3RzLmRlZmF1bHRbMF0uY29tcG9uZW50SW5zdGFuY2UgOiB0aGlzLmlucHV0RWxlbWVudDtcbiAgICB9LFxuICAgIG9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5wdXRJc0NvbXBvbmVudCA/ICckb24nIDogJ2FkZEV2ZW50TGlzdGVuZXInO1xuICAgIH0sXG4gICAgb2ZmKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5wdXRJc0NvbXBvbmVudCA/ICckb2ZmJyA6ICdyZW1vdmVFdmVudExpc3RlbmVyJztcbiAgICB9LFxuICAgIGhvdmVyZWRJbmRleCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnN1Z2dlc3Rpb25zLmZpbmRJbmRleChlbCA9PiB0aGlzLmhvdmVyZWQgJiYgdGhpcy52YWx1ZVByb3BlcnR5KHRoaXMuaG92ZXJlZCkgPT0gdGhpcy52YWx1ZVByb3BlcnR5KGVsKSk7XG4gICAgfSxcbiAgICB0ZXh0TGVuZ3RoKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCAmJiB0aGlzLnRleHQubGVuZ3RoIHx8IHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLmxlbmd0aCB8fCAwO1xuICAgIH0sXG4gICAgaXNTZWxlY3RlZFVwVG9EYXRlKCkge1xuICAgICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZCAmJiB0aGlzLmRpc3BsYXlQcm9wZXJ0eSh0aGlzLnNlbGVjdGVkKSA9PT0gdGhpcy50ZXh0O1xuICAgIH1cbiAgfSxcbiAgY3JlYXRlZCgpIHtcbiAgICB0aGlzLmNvbnRyb2xTY2hlbWUgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q29udHJvbHMsIHRoaXMuY29udHJvbHMpO1xuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMuaW5wdXRFbGVtZW50ID0gdGhpcy4kcmVmc1snaW5wdXRTbG90J10ucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcblxuICAgIHRoaXMuc2V0SW5wdXRBcmlhQXR0cmlidXRlcygpO1xuICAgIHRoaXMucHJlcGFyZUV2ZW50SGFuZGxlcnModHJ1ZSk7XG4gIH0sXG4gIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgdGhpcy5wcmVwYXJlRXZlbnRIYW5kbGVycyhmYWxzZSk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBpc0VxdWFsKHN1Z2dlc3Rpb24sIGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtICYmIHRoaXMudmFsdWVQcm9wZXJ0eShzdWdnZXN0aW9uKSA9PSB0aGlzLnZhbHVlUHJvcGVydHkoaXRlbSk7XG4gICAgfSxcbiAgICBpc1NlbGVjdGVkKHN1Z2dlc3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmlzRXF1YWwoc3VnZ2VzdGlvbiwgdGhpcy5zZWxlY3RlZCk7XG4gICAgfSxcbiAgICBpc0hvdmVyZWQoc3VnZ2VzdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuaXNFcXVhbChzdWdnZXN0aW9uLCB0aGlzLmhvdmVyZWQpO1xuICAgIH0sXG4gICAgb25TdWJtaXQoZSkge1xuICAgICAgaWYgKHRoaXMucHJldmVudFN1Ym1pdCAmJiBlLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXRJbnB1dEFyaWFBdHRyaWJ1dGVzKCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCAnJyk7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtYXV0b2NvbXBsZXRlJywgJ2xpc3QnKTtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIHRoaXMubGlzdElkKTtcbiAgICB9LFxuICAgIHByZXBhcmVFdmVudEhhbmRsZXJzKGVuYWJsZSkge1xuICAgICAgY29uc3QgYmluZGVyID0gdGhpc1tlbmFibGUgPyAnb24nIDogJ29mZiddO1xuICAgICAgY29uc3Qga2V5RXZlbnRzTGlzdCA9IHtcbiAgICAgICAgY2xpY2s6IHRoaXMuc2hvd1N1Z2dlc3Rpb25zLFxuICAgICAgICBrZXlkb3duOiAkZXZlbnQgPT4gKHRoaXMubW92ZVNlbGVjdGlvbigkZXZlbnQpLCB0aGlzLm9uQXV0b2NvbXBsZXRlKCRldmVudCkpLFxuICAgICAgICBrZXl1cDogdGhpcy5vbkxpc3RLZXlVcFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV2ZW50c0xpc3QgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgYmx1cjogdGhpcy5vbkJsdXIsXG4gICAgICAgIGZvY3VzOiB0aGlzLm9uRm9jdXMsXG4gICAgICAgIGlucHV0OiB0aGlzLm9uSW5wdXRcbiAgICAgIH0sIGtleUV2ZW50c0xpc3QpO1xuXG4gICAgICBmb3IgKGNvbnN0IGV2ZW50IGluIGV2ZW50c0xpc3QpIHtcbiAgICAgICAgdGhpcy5pbnB1dFtiaW5kZXJdKGV2ZW50LCBldmVudHNMaXN0W2V2ZW50XSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxpc3RlbmVyQmluZGVyID0gZW5hYmxlID8gJ2FkZEV2ZW50TGlzdGVuZXInIDogJ3JlbW92ZUV2ZW50TGlzdGVuZXInO1xuXG4gICAgICBmb3IgKGNvbnN0IGV2ZW50IGluIGtleUV2ZW50c0xpc3QpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnRbbGlzdGVuZXJCaW5kZXJdKGV2ZW50LCBrZXlFdmVudHNMaXN0W2V2ZW50XSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByZXZlbnRTdWJtaXQgPT09IHRydWUpIHtcbiAgICAgICAgbGV0IGZvcm0gPSB0aGlzLiRlbC5jbG9zZXN0KCdmb3JtJyk7XG4gICAgICAgIGlmIChmb3JtKSB7XG4gICAgICAgICAgZm9ybVtsaXN0ZW5lckJpbmRlcl0oJ2tleWRvd24nLCB0aGlzLm9uU3VibWl0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgaXNTY29wZWRTbG90RW1wdHkoc2xvdCkge1xuICAgICAgaWYgKHNsb3QpIHtcbiAgICAgICAgY29uc3Qgdk5vZGUgPSBzbG90KHRoaXMpO1xuICAgICAgICByZXR1cm4gIShBcnJheS5pc0FycmF5KHZOb2RlKSB8fCB2Tm9kZSAmJiAodk5vZGUudGFnIHx8IHZOb2RlLmNvbnRleHQgfHwgdk5vZGUudGV4dCB8fCB2Tm9kZS5jaGlsZHJlbikpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIG1pc2NTbG90c0FyZUVtcHR5KCkge1xuICAgICAgY29uc3Qgc2xvdHMgPSBbJ21pc2MtaXRlbS1hYm92ZScsICdtaXNjLWl0ZW0tYmVsb3cnXS5tYXAocyA9PiB0aGlzLiRzY29wZWRTbG90c1tzXSk7XG5cbiAgICAgIGlmIChzbG90cy5ldmVyeShzID0+ICEhcykpIHtcbiAgICAgICAgcmV0dXJuIHNsb3RzLmV2ZXJ5KHRoaXMuaXNTY29wZWRTbG90RW1wdHkuYmluZCh0aGlzKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNsb3QgPSBzbG90cy5maW5kKHMgPT4gISFzKTtcblxuICAgICAgcmV0dXJuIHRoaXMuaXNTY29wZWRTbG90RW1wdHkuY2FsbCh0aGlzLCBzbG90KTtcbiAgICB9LFxuICAgIGdldFByb3BlcnR5QnlBdHRyaWJ1dGUob2JqLCBhdHRyKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1BsYWluU3VnZ2VzdGlvbiA/IG9iaiA6IHR5cGVvZiBvYmogIT09IHVuZGVmaW5lZCA/IGZyb21QYXRoKG9iaiwgYXR0cikgOiBvYmo7XG4gICAgfSxcbiAgICBkaXNwbGF5UHJvcGVydHkob2JqKSB7XG4gICAgICBpZiAodGhpcy5pc1BsYWluU3VnZ2VzdGlvbikge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGlzcGxheSA9IHRoaXMuZ2V0UHJvcGVydHlCeUF0dHJpYnV0ZShvYmosIHRoaXMuZGlzcGxheUF0dHJpYnV0ZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgZGlzcGxheSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZGlzcGxheSA9IEpTT04uc3RyaW5naWZ5KG9iaik7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MgJiYgfnByb2Nlc3MuZW52Lk5PREVfRU5WLmluZGV4T2YoJ2RldicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdbdnVlLXNpbXBsZS1zdWdnZXN0XTogUGxlYXNlLCBwcm92aWRlIGBkaXNwbGF5LWF0dHJpYnV0ZWAgYXMgYSBrZXkgb3IgYSBkb3R0ZWQgcGF0aCBmb3IgYSBwcm9wZXJ0eSBmcm9tIHlvdXIgb2JqZWN0LicpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBTdHJpbmcoZGlzcGxheSk7XG4gICAgfSxcbiAgICB2YWx1ZVByb3BlcnR5KG9iaikge1xuICAgICAgaWYgKHRoaXMuaXNQbGFpblN1Z2dlc3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFByb3BlcnR5QnlBdHRyaWJ1dGUob2JqLCB0aGlzLnZhbHVlQXR0cmlidXRlKTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW3Z1ZS1zaW1wbGUtc3VnZ2VzdF06IFBsZWFzZSwgY2hlY2sgaWYgeW91IHBhc3NlZCAndmFsdWUtYXR0cmlidXRlJyAoZGVmYXVsdCBpcyAnaWQnKSBhbmQgJ2Rpc3BsYXktYXR0cmlidXRlJyAoZGVmYXVsdCBpcyAndGl0bGUnKSBwcm9wcyBjb3JyZWN0bHkuXG4gICAgICAgIFlvdXIgbGlzdCBvYmplY3RzIHNob3VsZCBhbHdheXMgY29udGFpbiBhIHVuaXF1ZSBpZGVudGlmaWVyLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHJlbW92ZSBvbiB0aGUgbmV4dCByZWxlYXNlXG4gICAgICovXG4gICAgYXV0b2NvbXBsZXRlVGV4dCh0ZXh0KSB7XG4gICAgICB0aGlzLnNldFRleHQodGV4dCk7XG4gICAgfSxcbiAgICBzZXRUZXh0KHRleHQpIHtcbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0ZXh0KTtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB0ZXh0O1xuICAgICAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBzZWxlY3QoaXRlbSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgIT09IGl0ZW0gfHwgdGhpcy5udWxsYWJsZVNlbGVjdCAmJiAhaXRlbSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gaXRlbTtcbiAgICAgICAgdGhpcy4kZW1pdCgnc2VsZWN0JywgaXRlbSk7XG5cbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICB0aGlzLnNldFRleHQodGhpcy5kaXNwbGF5UHJvcGVydHkoaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaG92ZXIobnVsbCk7XG4gICAgfSxcbiAgICBob3ZlcihpdGVtLCBlbGVtKSB7XG4gICAgICBjb25zdCBlbGVtSWQgPSAhIWl0ZW0gPyB0aGlzLmdldElkKGl0ZW0sIHRoaXMuaG92ZXJlZEluZGV4KSA6ICcnO1xuXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIGVsZW1JZCk7XG5cbiAgICAgIGlmIChpdGVtICYmIGl0ZW0gIT09IHRoaXMuaG92ZXJlZCkge1xuICAgICAgICB0aGlzLiRlbWl0KCdob3ZlcicsIGl0ZW0sIGVsZW0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhvdmVyZWQgPSBpdGVtO1xuICAgIH0sXG4gICAgaG92ZXJMaXN0KGlzT3Zlckxpc3QpIHtcbiAgICAgIHRoaXMuaXNPdmVyTGlzdCA9IGlzT3Zlckxpc3Q7XG4gICAgfSxcbiAgICBoaWRlTGlzdCgpIHtcbiAgICAgIGlmICh0aGlzLmxpc3RTaG93bikge1xuICAgICAgICB0aGlzLmxpc3RTaG93biA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhvdmVyKG51bGwpO1xuICAgICAgICB0aGlzLiRlbWl0KCdoaWRlLWxpc3QnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNob3dMaXN0KCkge1xuICAgICAgaWYgKCF0aGlzLmxpc3RTaG93bikge1xuICAgICAgICBpZiAodGhpcy50ZXh0TGVuZ3RoID49IHRoaXMubWluTGVuZ3RoICYmICh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCA+IDAgfHwgIXRoaXMubWlzY1Nsb3RzQXJlRW1wdHkoKSkpIHtcbiAgICAgICAgICB0aGlzLmxpc3RTaG93biA9IHRydWU7XG4gICAgICAgICAgdGhpcy4kZW1pdCgnc2hvdy1saXN0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHNob3dTdWdnZXN0aW9uczogX2FzeW5jKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBfaW52b2tlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMCAmJiBfdGhpcy5taW5MZW5ndGggPT09IF90aGlzLnRleHRMZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gX2F3YWl0SWdub3JlZChfdGhpcy5yZXNlYXJjaCgpKTtcbiAgICAgICAgfVxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5zaG93TGlzdCgpO1xuICAgICAgfSk7XG4gICAgfSksXG5cbiAgICBtb3ZlU2VsZWN0aW9uKGUpIHtcbiAgICAgIGlmICghdGhpcy5saXN0U2hvd24gfHwgIXRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoKSByZXR1cm47XG4gICAgICBpZiAoaGFzS2V5Q29kZShbdGhpcy5jb250cm9sU2NoZW1lLnNlbGVjdGlvblVwLCB0aGlzLmNvbnRyb2xTY2hlbWUuc2VsZWN0aW9uRG93bl0sIGUpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbnMoKTtcblxuICAgICAgICBjb25zdCBpc01vdmluZ0Rvd24gPSBoYXNLZXlDb2RlKHRoaXMuY29udHJvbFNjaGVtZS5zZWxlY3Rpb25Eb3duLCBlKTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gaXNNb3ZpbmdEb3duICogMiAtIDE7XG4gICAgICAgIGNvbnN0IGxpc3RFZGdlID0gaXNNb3ZpbmdEb3duID8gMCA6IHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgaG92ZXJzQmV0d2VlbkVkZ2VzID0gaXNNb3ZpbmdEb3duID8gdGhpcy5ob3ZlcmVkSW5kZXggPCB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEgOiB0aGlzLmhvdmVyZWRJbmRleCA+IDA7XG5cbiAgICAgICAgbGV0IGl0ZW0gPSBudWxsO1xuXG4gICAgICAgIGlmICghdGhpcy5ob3ZlcmVkKSB7XG4gICAgICAgICAgaXRlbSA9IHRoaXMuc2VsZWN0ZWQgfHwgdGhpcy5zdWdnZXN0aW9uc1tsaXN0RWRnZV07XG4gICAgICAgIH0gZWxzZSBpZiAoaG92ZXJzQmV0d2VlbkVkZ2VzKSB7XG4gICAgICAgICAgaXRlbSA9IHRoaXMuc3VnZ2VzdGlvbnNbdGhpcy5ob3ZlcmVkSW5kZXggKyBkaXJlY3Rpb25dO1xuICAgICAgICB9IGVsc2UgLyogaWYgaG92ZXJzIG9uIGVkZ2UgKi97XG4gICAgICAgICAgICBpdGVtID0gdGhpcy5zdWdnZXN0aW9uc1tsaXN0RWRnZV07XG4gICAgICAgICAgfVxuICAgICAgICB0aGlzLmhvdmVyKGl0ZW0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25MaXN0S2V5VXAoZSkge1xuICAgICAgY29uc3Qgc2VsZWN0ID0gdGhpcy5jb250cm9sU2NoZW1lLnNlbGVjdCxcbiAgICAgICAgICAgIGhpZGVMaXN0ID0gdGhpcy5jb250cm9sU2NoZW1lLmhpZGVMaXN0O1xuXG4gICAgICBpZiAoaGFzS2V5Q29kZShbc2VsZWN0LCBoaWRlTGlzdF0sIGUpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMubGlzdFNob3duKSB7XG4gICAgICAgICAgaWYgKGhhc0tleUNvZGUoc2VsZWN0LCBlKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QodGhpcy5ob3ZlcmVkKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmhpZGVMaXN0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFzS2V5Q29kZShzZWxlY3QsIGUpKSB7XG4gICAgICAgICAgdGhpcy5yZXNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkF1dG9jb21wbGV0ZShlKSB7XG4gICAgICBpZiAoaGFzS2V5Q29kZSh0aGlzLmNvbnRyb2xTY2hlbWUuYXV0b2NvbXBsZXRlLCBlKSAmJiAoZS5jdHJsS2V5IHx8IGUuc2hpZnRLZXkpICYmIHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoID4gMCAmJiB0aGlzLnN1Z2dlc3Rpb25zWzBdICYmIHRoaXMubGlzdFNob3duKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5ob3Zlcih0aGlzLnN1Z2dlc3Rpb25zWzBdKTtcbiAgICAgICAgdGhpcy5zZXRUZXh0KHRoaXMuZGlzcGxheVByb3BlcnR5KHRoaXMuc3VnZ2VzdGlvbnNbMF0pKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN1Z2dlc3Rpb25DbGljayhzdWdnZXN0aW9uLCBlKSB7XG4gICAgICB0aGlzLiRlbWl0KCdzdWdnZXN0aW9uLWNsaWNrJywgc3VnZ2VzdGlvbiwgZSk7XG4gICAgICB0aGlzLnNlbGVjdChzdWdnZXN0aW9uKTtcblxuICAgICAgLy8vIEVuc3VyZSwgdGhhdCBhbGwgbmVlZGVkIGZsYWdzIGFyZSBvZmYgYmVmb3JlIGZpbmlzaGluZyB0aGUgY2xpY2suXG4gICAgICB0aGlzLmlzQ2xpY2tpbmcgPSB0aGlzLmlzT3Zlckxpc3QgPSBmYWxzZTtcblxuICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICB0aGlzLmhpZGVMaXN0KCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uQmx1cihlKSB7XG4gICAgICBpZiAodGhpcy5pc0luRm9jdXMpIHtcblxuICAgICAgICAvLy8gQ2xpY2tpbmcgc3RhcnRzIGhlcmUsIGJlY2F1c2UgaW5wdXQncyBibHVyIG9jY3VycyBiZWZvcmUgdGhlIHN1Z2dlc3Rpb25DbGlja1xuICAgICAgICAvLy8gYW5kIGV4YWN0bHkgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIG1vdXNlIGJ1dHRvbiBvciB0YXBzIHRoZSBzY3JlZW4uXG4gICAgICAgIHRoaXMuaXNDbGlja2luZyA9IHRoaXMuaXNPdmVyTGlzdCAmJiAhdGhpcy5pc1RhYmJlZDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNDbGlja2luZykge1xuICAgICAgICAgIHRoaXMuaXNJbkZvY3VzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5oaWRlTGlzdCgpO1xuXG4gICAgICAgICAgdGhpcy4kZW1pdCgnYmx1cicsIGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGUgJiYgZS5pc1RydXN0ZWQgJiYgIXRoaXMuaXNUYWJiZWQpIHtcbiAgICAgICAgICB0aGlzLmlzRmFsc2VGb2N1cyA9IHRydWU7XG4gICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuYmx1cigpO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4hXG4gICAgICAgICAgSWYgeW91IGVuY291bnRlcmVkIHRoaXMgZXJyb3IsIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCB5b3VyIGlucHV0IGNvbXBvbmVudCBlbWl0cyAnZm9jdXMnIGV2ZW50cyBwcm9wZXJseS5cbiAgICAgICAgICBGb3IgbW9yZSBpbmZvIHNlZSBodHRwczovL2dpdGh1Yi5jb20vS2F6YW5FeHByZXNzL3Z1ZS1zaW1wbGUtc3VnZ2VzdCNjdXN0b20taW5wdXQuXG5cbiAgICAgICAgICBJZiB5b3VyICd2dWUtc2ltcGxlLXN1Z2dlc3QnIHNldHVwIGRvZXMgbm90IGluY2x1ZGUgYSBjdXN0b20gaW5wdXQgY29tcG9uZW50IC0gcGxlYXNlLFxuICAgICAgICAgIHJlcG9ydCB0byBodHRwczovL2dpdGh1Yi5jb20vS2F6YW5FeHByZXNzL3Z1ZS1zaW1wbGUtc3VnZ2VzdC9pc3N1ZXMvbmV3YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaXNUYWJiZWQgPSBmYWxzZTtcbiAgICB9LFxuICAgIG9uRm9jdXMoZSkge1xuICAgICAgdGhpcy5pc0luRm9jdXMgPSB0cnVlO1xuXG4gICAgICAvLyBPbmx5IGVtaXQsIGlmIGl0IHdhcyBhIG5hdGl2ZSBpbnB1dCBmb2N1c1xuICAgICAgaWYgKGUgJiYgIXRoaXMuaXNGYWxzZUZvY3VzKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2ZvY3VzJywgZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRmFsc2VGb2N1cyA9IGZhbHNlO1xuXG4gICAgICAvLyBTaG93IGxpc3Qgb25seSBpZiB0aGUgaXRlbSBoYXMgbm90IGJlZW4gY2xpY2tlZFxuICAgICAgaWYgKCF0aGlzLmlzQ2xpY2tpbmcpIHtcbiAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uSW5wdXQoaW5wdXRFdmVudCkge1xuICAgICAgY29uc3QgdmFsdWUgPSAhaW5wdXRFdmVudC50YXJnZXQgPyBpbnB1dEV2ZW50IDogaW5wdXRFdmVudC50YXJnZXQudmFsdWU7XG5cbiAgICAgIGlmICh0aGlzLnRleHQgPT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZXh0ID0gdmFsdWU7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMudGV4dCk7XG5cbiAgICAgIGlmICh0aGlzLmhvdmVyZWQpIHRoaXMuaG92ZXIobnVsbCk7XG5cbiAgICAgIGlmICh0aGlzLmRlYm91bmNlKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJbnN0YW5jZSk7XG4gICAgICAgIHRoaXMudGltZW91dEluc3RhbmNlID0gc2V0VGltZW91dCh0aGlzLnJlc2VhcmNoLCB0aGlzLmRlYm91bmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzZWFyY2goKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc2VhcmNoOiBfYXN5bmMoZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBfZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfaW52b2tlSWdub3JlZChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMyLmNhblNlbmQpIHtcbiAgICAgICAgICAgICAgX3RoaXMyLmNhblNlbmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgLy8gQFRPRE86IGZpeCB3aGVuIHByb21pc2VzIHdpbGwgYmUgY2FuY2VsYWJsZSAobmV2ZXIgOkQpXG4gICAgICAgICAgICAgIGxldCB0ZXh0QmVmb3JlUmVxdWVzdCA9IF90aGlzMi50ZXh0O1xuICAgICAgICAgICAgICByZXR1cm4gX2F3YWl0KF90aGlzMi5nZXRTdWdnZXN0aW9ucyhfdGhpczIudGV4dCksIGZ1bmN0aW9uIChuZXdMaXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRleHRCZWZvcmVSZXF1ZXN0ID09PSBfdGhpczIudGV4dCkge1xuICAgICAgICAgICAgICAgICAgX3RoaXMyLiRzZXQoX3RoaXMyLCAnc3VnZ2VzdGlvbnMnLCBuZXdMaXN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIF90aGlzMi5jbGVhclN1Z2dlc3Rpb25zKCk7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5jYW5TZW5kID0gdHJ1ZTtcblxuICAgICAgICBpZiAoX3RoaXMyLnN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMCAmJiBfdGhpczIubWlzY1Nsb3RzQXJlRW1wdHkoKSkge1xuICAgICAgICAgIF90aGlzMi5oaWRlTGlzdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzMi5zaG93TGlzdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF90aGlzMi5zdWdnZXN0aW9ucztcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIGdldFN1Z2dlc3Rpb25zOiBfYXN5bmMoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFsdWUgPSB2YWx1ZSB8fCAnJztcblxuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA8IF90aGlzMy5taW5MZW5ndGgpIHtcbiAgICAgICAgaWYgKF90aGlzMy5saXN0U2hvd24pIHtcbiAgICAgICAgICBfdGhpczMuaGlkZUxpc3QoKTtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX3RoaXMzLnN1Z2dlc3Rpb25zO1xuICAgICAgfVxuXG4gICAgICBfdGhpczMuc2VsZWN0ZWQgPSBudWxsO1xuXG4gICAgICAvLyBTdGFydCByZXF1ZXN0IGlmIGNhblxuICAgICAgaWYgKF90aGlzMy5saXN0SXNSZXF1ZXN0KSB7XG4gICAgICAgIF90aGlzMy4kZW1pdCgncmVxdWVzdC1zdGFydCcsIHZhbHVlKTtcblxuICAgICAgICBpZiAoX3RoaXMzLnN1Z2dlc3Rpb25zLmxlbmd0aCA+IDAgfHwgIV90aGlzMy5taXNjU2xvdHNBcmVFbXB0eSgpKSB7XG4gICAgICAgICAgX3RoaXMzLnNob3dMaXN0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgcmV0dXJuIF9maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF9pbnZva2UoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKF90aGlzMy5saXN0SXNSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgIHJldHVybiBfYXdhaXQoX3RoaXMzLmxpc3QodmFsdWUpLCBmdW5jdGlvbiAoX3RoaXMzJGxpc3QpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBfdGhpczMkbGlzdCB8fCBbXTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHQgPSBfdGhpczMubGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvLyBJRkYgdGhlIHJlc3VsdCBpcyBub3QgYW4gYXJyYXkgKGp1c3QgaW4gY2FzZSEpIC0gbWFrZSBpdCBhbiBhcnJheVxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0ID0gW3Jlc3VsdF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF90aGlzMy5pc1BsYWluU3VnZ2VzdGlvbiA9IHR5cGVvZiByZXN1bHRbMF0gIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocmVzdWx0WzBdKTtcblxuICAgICAgICAgICAgaWYgKF90aGlzMy5maWx0ZXJCeVF1ZXJ5KSB7XG4gICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZWwgPT4gX3RoaXMzLmZpbHRlcihlbCwgdmFsdWUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF90aGlzMy5saXN0SXNSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgIF90aGlzMy4kZW1pdCgncmVxdWVzdC1kb25lJywgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICBpZiAoX3RoaXMzLmxpc3RJc1JlcXVlc3QpIHtcbiAgICAgICAgICAgIF90aGlzMy4kZW1pdCgncmVxdWVzdC1mYWlsZWQnLCBlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMzLm1heFN1Z2dlc3Rpb25zKSB7XG4gICAgICAgICAgcmVzdWx0LnNwbGljZShfdGhpczMubWF4U3VnZ2VzdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuICAgIH0pLFxuXG4gICAgY2xlYXJTdWdnZXN0aW9ucygpIHtcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnMuc3BsaWNlKDApO1xuICAgIH0sXG4gICAgZ2V0SWQodmFsdWUsIGkpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmxpc3RJZH0tc3VnZ2VzdGlvbi0ke3RoaXMuaXNQbGFpblN1Z2dlc3Rpb24gPyBpIDogdGhpcy52YWx1ZVByb3BlcnR5KHZhbHVlKSB8fCBpfWA7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWdWVTaW1wbGVTdWdnZXN0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-simple-suggest/dist/es6.js\n");

/***/ }),

/***/ "./node_modules/vue-simple-suggest/dist/styles.css":
/*!*********************************************************!*\
  !*** ./node_modules/vue-simple-suggest/dist/styles.css ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./styles.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-simple-suggest/dist/styles.css\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4e5fe600\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./styles.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-simple-suggest/dist/styles.css\", function() {\n     var newContent = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./styles.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-simple-suggest/dist/styles.css\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXNpbXBsZS1zdWdnZXN0L2Rpc3Qvc3R5bGVzLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtc2ltcGxlLXN1Z2dlc3QvZGlzdC9zdHlsZXMuY3NzPzU5ZDkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTEhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0yIS4vc3R5bGVzLmNzc1wiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikuZGVmYXVsdFxudmFyIHVwZGF0ZSA9IGFkZChcIjRlNWZlNjAwXCIsIGNvbnRlbnQsIGZhbHNlLCB7XCJzb3VyY2VNYXBcIjpmYWxzZSxcInNoYWRvd01vZGVcIjpmYWxzZX0pO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi9zdHlsZXMuY3NzXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTEhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0yIS4vc3R5bGVzLmNzc1wiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-simple-suggest/dist/styles.css\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Chat.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7f889d12\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Chat.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Chat.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jaGF0L0NoYXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvQ2hhdC52dWU/ZWM3MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2hhdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIpO1xuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciBhZGQgPSByZXF1aXJlKFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikuZGVmYXVsdFxudmFyIHVwZGF0ZSA9IGFkZChcIjdmODg5ZDEyXCIsIGNvbnRlbnQsIGZhbHNlLCB7XCJzb3VyY2VNYXBcIjpmYWxzZSxcInNoYWRvd01vZGVcIjpmYWxzZX0pO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2hhdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FeatherIcon.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6b4b90ae\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FeatherIcon.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FeatherIcon.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GZWF0aGVySWNvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvRmVhdGhlckljb24udnVlP2MwNzIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0ZlYXRoZXJJY29uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIGFkZCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKS5kZWZhdWx0XG52YXIgdXBkYXRlID0gYWRkKFwiNmI0YjkwYWVcIiwgY29udGVudCwgZmFsc2UsIHtcInNvdXJjZU1hcFwiOmZhbHNlLFwic2hhZG93TW9kZVwiOmZhbHNlfSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9GZWF0aGVySWNvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0ZlYXRoZXJJY29uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIik7XG4gICAgIGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuICAgICB1cGRhdGUobmV3Q29udGVudCk7XG4gICB9KTtcbiB9XG4gLy8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./VxCard.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7b7910b3\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./VxCard.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./VxCard.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9WeENhcmQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1Z4Q2FyZC52dWU/MmZiMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhDYXJkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIGFkZCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKS5kZWZhdWx0XG52YXIgdXBkYXRlID0gYWRkKFwiN2I3OTEwYjNcIiwgY29udGVudCwgZmFsc2UsIHtcInNvdXJjZU1hcFwiOmZhbHNlLFwic2hhZG93TW9kZVwiOmZhbHNlfSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeENhcmQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiLCBmdW5jdGlvbigpIHtcbiAgICAgdmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeENhcmQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebar.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"471c86db\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebar.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebar.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT83MGQyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFNpZGViYXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpLmRlZmF1bHRcbnZhciB1cGRhdGUgPSBhZGQoXCI0NzFjODZkYlwiLCBjb250ZW50LCBmYWxzZSwge1wic291cmNlTWFwXCI6ZmFsc2UsXCJzaGFkb3dNb2RlXCI6ZmFsc2V9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Z4U2lkZWJhci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Z4U2lkZWJhci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebarGroup.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6b274f2b\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebarGroup.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebarGroup.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXJHcm91cC52dWU/NzQ5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpLmRlZmF1bHRcbnZhciB1cGRhdGUgPSBhZGQoXCI2YjI3NGYyYlwiLCBjb250ZW50LCBmYWxzZSwge1wic291cmNlTWFwXCI6ZmFsc2UsXCJzaGFkb3dNb2RlXCI6ZmFsc2V9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Z4U2lkZWJhckdyb3VwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiwgZnVuY3Rpb24oKSB7XG4gICAgIHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ContactRequests.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"a20c97a8\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ContactRequests.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ContactRequests.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb250YWN0cy9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbnRhY3RzL0NvbnRhY3RSZXF1ZXN0cy52dWU/NjY4OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29udGFjdFJlcXVlc3RzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIGFkZCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKS5kZWZhdWx0XG52YXIgdXBkYXRlID0gYWRkKFwiYTIwYzk3YThcIiwgY29udGVudCwgZmFsc2UsIHtcInNvdXJjZU1hcFwiOmZhbHNlLFwic2hhZG93TW9kZVwiOmZhbHNlfSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiLCBmdW5jdGlvbigpIHtcbiAgICAgdmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./NewsLetter.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"57639f5e\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./NewsLetter.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./NewsLetter.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT9mMmNjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIGFkZCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKS5kZWZhdWx0XG52YXIgdXBkYXRlID0gYWRkKFwiNTc2MzlmNWVcIiwgY29udGVudCwgZmFsc2UsIHtcInNvdXJjZU1hcFwiOmZhbHNlLFwic2hhZG93TW9kZVwiOmZhbHNlfSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiwgZnVuY3Rpb24oKSB7XG4gICAgIHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3c0xldHRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"46a50116\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT9lZTJjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9EYXNoYm9hcmQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpLmRlZmF1bHRcbnZhciB1cGRhdGUgPSBhZGQoXCI0NmE1MDExNlwiLCBjb250ZW50LCBmYWxzZSwge1wic291cmNlTWFwXCI6ZmFsc2UsXCJzaGFkb3dNb2RlXCI6ZmFsc2V9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0Rhc2hib2FyZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0Rhc2hib2FyZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ChangePassword.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"d8b1ae72\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ChangePassword.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ChangePassword.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy91c2Vycy9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvQ2hhbmdlUGFzc3dvcmQudnVlPzJjZGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYW5nZVBhc3N3b3JkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIGFkZCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKS5kZWZhdWx0XG52YXIgdXBkYXRlID0gYWRkKFwiZDhiMWFlNzJcIiwgY29udGVudCwgZmFsc2UsIHtcInNvdXJjZU1hcFwiOmZhbHNlLFwic2hhZG93TW9kZVwiOmZhbHNlfSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYW5nZVBhc3N3b3JkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIik7XG4gICAgIGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuICAgICB1cGRhdGUobmV3Q29udGVudCk7XG4gICB9KTtcbiB9XG4gLy8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Profile.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3fdc2d93\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Profile.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Profile.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT9lNmI0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qcm9maWxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIGFkZCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKS5kZWZhdWx0XG52YXIgdXBkYXRlID0gYWRkKFwiM2ZkYzJkOTNcIiwgY29udGVudCwgZmFsc2UsIHtcInNvdXJjZU1hcFwiOmZhbHNlLFwic2hhZG93TW9kZVwiOmZhbHNlfSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qcm9maWxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiwgZnVuY3Rpb24oKSB7XG4gICAgIHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUHJvZmlsZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CompanyProfile.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ebab6f48\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CompanyProfile.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&\", function() {\n     var newContent = __webpack_require__(/*! !../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CompanyProfile.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT9lY2ZiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db21wYW55UHJvZmlsZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIpO1xuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciBhZGQgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikuZGVmYXVsdFxudmFyIHVwZGF0ZSA9IGFkZChcImViYWI2ZjQ4XCIsIGNvbnRlbnQsIGZhbHNlLCB7XCJzb3VyY2VNYXBcIjpmYWxzZSxcInNoYWRvd01vZGVcIjpmYWxzZX0pO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29tcGFueVByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiLCBmdW5jdGlvbigpIHtcbiAgICAgdmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db21wYW55UHJvZmlsZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--6-oneOf-1-0!./node_modules/css-loader??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src??ref--6-oneOf-1-2!./styles.css?vue&type=style&index=0&lang=css& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"af1d12d8\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../css-loader??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src??ref--6-oneOf-1-2!./styles.css?vue&type=style&index=0&lang=css& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&\", function() {\n     var newContent = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src??ref--6-oneOf-1-2!./styles.css?vue&type=style&index=0&lang=css& */ \"./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWUtYmFja3RvdG9wL3NyYy9zdHlsZXMuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3MmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1iYWNrdG90b3Avc3JjL3N0eWxlcy5jc3M/YTViNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTEtMSEuLi8uLi92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0xLTIhLi9zdHlsZXMuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3MmXCIpO1xuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciBhZGQgPSByZXF1aXJlKFwiIS4uLy4uL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKS5kZWZhdWx0XG52YXIgdXBkYXRlID0gYWRkKFwiYWYxZDEyZDhcIiwgY29udGVudCwgZmFsc2UsIHtcInNvdXJjZU1hcFwiOmZhbHNlLFwic2hhZG93TW9kZVwiOmZhbHNlfSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMS0xIS4uLy4uL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTEtMiEuL3N0eWxlcy5jc3M/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzcyZcIiwgZnVuY3Rpb24oKSB7XG4gICAgIHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTEtMSEuLi8uLi92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0xLTIhLi9zdHlsZXMuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3MmXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-backtotop/src/styles.css?vue&type=style&index=0&lang=css&\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/lib/addStylesClient.js":
/*!**************************************************************!*\
  !*** ./node_modules/vue-style-loader/lib/addStylesClient.js ***!
  \**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return addStylesClient; });\n/* harmony import */ var _listToStyles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./listToStyles */ \"./node_modules/vue-style-loader/lib/listToStyles.js\");\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\n\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nfunction addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qcz80OTllIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiAgTW9kaWZpZWQgYnkgRXZhbiBZb3UgQHl5eDk5MDgwM1xuKi9cblxuaW1wb3J0IGxpc3RUb1N0eWxlcyBmcm9tICcuL2xpc3RUb1N0eWxlcydcblxudmFyIGhhc0RvY3VtZW50ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuXG5pZiAodHlwZW9mIERFQlVHICE9PSAndW5kZWZpbmVkJyAmJiBERUJVRykge1xuICBpZiAoIWhhc0RvY3VtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICd2dWUtc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQuICcgK1xuICAgIFwiVXNlIHsgdGFyZ2V0OiAnbm9kZScgfSBpbiB5b3VyIFdlYnBhY2sgY29uZmlnIHRvIGluZGljYXRlIGEgc2VydmVyLXJlbmRlcmluZyBlbnZpcm9ubWVudC5cIlxuICApIH1cbn1cblxuLypcbnR5cGUgU3R5bGVPYmplY3QgPSB7XG4gIGlkOiBudW1iZXI7XG4gIHBhcnRzOiBBcnJheTxTdHlsZU9iamVjdFBhcnQ+XG59XG5cbnR5cGUgU3R5bGVPYmplY3RQYXJ0ID0ge1xuICBjc3M6IHN0cmluZztcbiAgbWVkaWE6IHN0cmluZztcbiAgc291cmNlTWFwOiA/c3RyaW5nXG59XG4qL1xuXG52YXIgc3R5bGVzSW5Eb20gPSB7LypcbiAgW2lkOiBudW1iZXJdOiB7XG4gICAgaWQ6IG51bWJlcixcbiAgICByZWZzOiBudW1iZXIsXG4gICAgcGFydHM6IEFycmF5PChvYmo/OiBTdHlsZU9iamVjdFBhcnQpID0+IHZvaWQ+XG4gIH1cbiovfVxuXG52YXIgaGVhZCA9IGhhc0RvY3VtZW50ICYmIChkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0pXG52YXIgc2luZ2xldG9uRWxlbWVudCA9IG51bGxcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMFxudmFyIGlzUHJvZHVjdGlvbiA9IGZhbHNlXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHt9XG52YXIgb3B0aW9ucyA9IG51bGxcbnZhciBzc3JJZEtleSA9ICdkYXRhLXZ1ZS1zc3ItaWQnXG5cbi8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxudmFyIGlzT2xkSUUgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvbXNpZSBbNi05XVxcYi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZFN0eWxlc0NsaWVudCAocGFyZW50SWQsIGxpc3QsIF9pc1Byb2R1Y3Rpb24sIF9vcHRpb25zKSB7XG4gIGlzUHJvZHVjdGlvbiA9IF9pc1Byb2R1Y3Rpb25cblxuICBvcHRpb25zID0gX29wdGlvbnMgfHwge31cblxuICB2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVudElkLCBsaXN0KVxuICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSAobmV3TGlzdCkge1xuICAgIHZhciBtYXlSZW1vdmUgPSBbXVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxuICAgICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICAgIGRvbVN0eWxlLnJlZnMtLVxuICAgICAgbWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpXG4gICAgfVxuICAgIGlmIChuZXdMaXN0KSB7XG4gICAgICBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIG5ld0xpc3QpXG4gICAgICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlcyA9IFtdXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF5UmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZG9tU3R5bGUgPSBtYXlSZW1vdmVbaV1cbiAgICAgIGlmIChkb21TdHlsZS5yZWZzID09PSAwKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXSgpXG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0eWxlLmlkXVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0RvbSAoc3R5bGVzIC8qIEFycmF5PFN0eWxlT2JqZWN0PiAqLykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICBpZiAoZG9tU3R5bGUpIHtcbiAgICAgIGRvbVN0eWxlLnJlZnMrK1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKVxuICAgICAgfVxuICAgICAgZm9yICg7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAgICBpZiAoZG9tU3R5bGUucGFydHMubGVuZ3RoID4gaXRlbS5wYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMubGVuZ3RoID0gaXRlbS5wYXJ0cy5sZW5ndGhcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnRzID0gW11cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBwYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAgICAgc3R5bGVzSW5Eb21baXRlbS5pZF0gPSB7IGlkOiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHMgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQgKCkge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKVxuICBzdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2NzcydcbiAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpXG4gIHJldHVybiBzdHlsZUVsZW1lbnRcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGUgKG9iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8pIHtcbiAgdmFyIHVwZGF0ZSwgcmVtb3ZlXG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVsnICsgc3NySWRLZXkgKyAnfj1cIicgKyBvYmouaWQgKyAnXCJdJylcblxuICBpZiAoc3R5bGVFbGVtZW50KSB7XG4gICAgaWYgKGlzUHJvZHVjdGlvbikge1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYW5kIGluIHByb2R1Y3Rpb24gbW9kZS5cbiAgICAgIC8vIHNpbXBseSBkbyBub3RoaW5nLlxuICAgICAgcmV0dXJuIG5vb3BcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYnV0IGluIGRldiBtb2RlLlxuICAgICAgLy8gZm9yIHNvbWUgcmVhc29uIENocm9tZSBjYW4ndCBoYW5kbGUgc291cmNlIG1hcCBpbiBzZXJ2ZXItcmVuZGVyZWRcbiAgICAgIC8vIHN0eWxlIHRhZ3MgLSBzb3VyY2UgbWFwcyBpbiA8c3R5bGU+IG9ubHkgd29ya3MgaWYgdGhlIHN0eWxlIHRhZyBpc1xuICAgICAgLy8gY3JlYXRlZCBhbmQgaW5zZXJ0ZWQgZHluYW1pY2FsbHkuIFNvIHdlIHJlbW92ZSB0aGUgc2VydmVyIHJlbmRlcmVkXG4gICAgICAvLyBzdHlsZXMgYW5kIGluamVjdCBuZXcgb25lcy5cbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICBpZiAoaXNPbGRJRSkge1xuICAgIC8vIHVzZSBzaW5nbGV0b24gbW9kZSBmb3IgSUU5LlxuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrXG4gICAgc3R5bGVFbGVtZW50ID0gc2luZ2xldG9uRWxlbWVudCB8fCAoc2luZ2xldG9uRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpKVxuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIGZhbHNlKVxuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIHRydWUpXG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlIG11bHRpLXN0eWxlLXRhZyBtb2RlIGluIGFsbCBvdGhlciBjYXNlc1xuICAgIHN0eWxlRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpXG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudClcbiAgICByZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlKG9iailcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG5ld09iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8pIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJlxuICAgICAgICAgIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmXG4gICAgICAgICAgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpXG4gICAgfVxuICB9XG59XG5cbnZhciByZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXVxuXG4gIHJldHVybiBmdW5jdGlvbiAoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJylcbiAgfVxufSkoKVxuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnIChzdHlsZUVsZW1lbnQsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmouY3NzXG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpXG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZUVsZW1lbnQuY2hpbGROb2Rlc1xuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGVFbGVtZW50Lmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGNzc05vZGUpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcgKHN0eWxlRWxlbWVudCwgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzXG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcFxuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpXG4gIH1cbiAgaWYgKG9wdGlvbnMuc3NySWQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKHNzcklkS2V5LCBvYmouaWQpXG4gIH1cblxuICBpZiAoc291cmNlTWFwKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9kZXZ0b29scy9kb2NzL2phdmFzY3JpcHQtZGVidWdnaW5nXG4gICAgLy8gdGhpcyBtYWtlcyBzb3VyY2UgbWFwcyBpbnNpZGUgc3R5bGUgdGFncyB3b3JrIHByb3Blcmx5IGluIENocm9tZVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZVVSTD0nICsgc291cmNlTWFwLnNvdXJjZXNbMF0gKyAnICovJ1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG4gICAgY3NzICs9ICdcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCcgKyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpICsgJyAqLydcbiAgfVxuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3NcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZClcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/lib/addStylesClient.js\n");

/***/ }),

/***/ "./node_modules/vue-style-loader/lib/listToStyles.js":
/*!***********************************************************!*\
  !*** ./node_modules/vue-style-loader/lib/listToStyles.js ***!
  \***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return listToStyles; });\n/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nfunction listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2xpc3RUb1N0eWxlcy5qcz85YmJjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNsYXRlcyB0aGUgbGlzdCBmb3JtYXQgcHJvZHVjZWQgYnkgY3NzLWxvYWRlciBpbnRvIHNvbWV0aGluZ1xuICogZWFzaWVyIHRvIG1hbmlwdWxhdGUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RUb1N0eWxlcyAocGFyZW50SWQsIGxpc3QpIHtcbiAgdmFyIHN0eWxlcyA9IFtdXG4gIHZhciBuZXdTdHlsZXMgPSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV1cbiAgICB2YXIgaWQgPSBpdGVtWzBdXG4gICAgdmFyIGNzcyA9IGl0ZW1bMV1cbiAgICB2YXIgbWVkaWEgPSBpdGVtWzJdXG4gICAgdmFyIHNvdXJjZU1hcCA9IGl0ZW1bM11cbiAgICB2YXIgcGFydCA9IHtcbiAgICAgIGlkOiBwYXJlbnRJZCArICc6JyArIGksXG4gICAgICBjc3M6IGNzcyxcbiAgICAgIG1lZGlhOiBtZWRpYSxcbiAgICAgIHNvdXJjZU1hcDogc291cmNlTWFwXG4gICAgfVxuICAgIGlmICghbmV3U3R5bGVzW2lkXSkge1xuICAgICAgc3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHsgaWQ6IGlkLCBwYXJ0czogW3BhcnRdIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1N0eWxlc1tpZF0ucGFydHMucHVzaChwYXJ0KVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3R5bGVzXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/lib/listToStyles.js\n");

/***/ }),

/***/ "./node_modules/vue-tour/dist/vue-tour.css":
/*!*************************************************!*\
  !*** ./node_modules/vue-tour/dist/vue-tour.css ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./vue-tour.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-tour/dist/vue-tour.css\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"77d4d8ae\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./vue-tour.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-tour/dist/vue-tour.css\", function() {\n     var newContent = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./vue-tour.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-tour/dist/vue-tour.css\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXRvdXIvZGlzdC92dWUtdG91ci5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXRvdXIvZGlzdC92dWUtdG91ci5jc3M/Njc2MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi92dWUtdG91ci5jc3NcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIGFkZCA9IHJlcXVpcmUoXCIhLi4vLi4vdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpLmRlZmF1bHRcbnZhciB1cGRhdGUgPSBhZGQoXCI3N2Q0ZDhhZVwiLCBjb250ZW50LCBmYWxzZSwge1wic291cmNlTWFwXCI6ZmFsc2UsXCJzaGFkb3dNb2RlXCI6ZmFsc2V9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTEhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0yIS4vdnVlLXRvdXIuY3NzXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTEhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0yIS4vdnVlLXRvdXIuY3NzXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-tour/dist/vue-tour.css\n");

/***/ }),

/***/ "./node_modules/vue-tour/dist/vue-tour.umd.js":
/*!****************************************************!*\
  !*** ./node_modules/vue-tour/dist/vue-tour.umd.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("(function webpackUniversalModuleDefinition(root, factory) {\r\n\tif(true)\r\n\t\tmodule.exports = factory();\r\n\telse {}\r\n})((typeof self !== 'undefined' ? self : this), function() {\r\nreturn /******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId]) {\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/ \t\t}\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\ti: moduleId,\r\n/******/ \t\t\tl: false,\r\n/******/ \t\t\texports: {}\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.l = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// define getter function for harmony exports\r\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\r\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\r\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\r\n/******/ \t\t}\r\n/******/ \t};\r\n/******/\r\n/******/ \t// define __esModule on exports\r\n/******/ \t__webpack_require__.r = function(exports) {\r\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\r\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\r\n/******/ \t\t}\r\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\r\n/******/ \t};\r\n/******/\r\n/******/ \t// create a fake namespace object\r\n/******/ \t// mode & 1: value is a module id, require it\r\n/******/ \t// mode & 2: merge all properties of value into the ns\r\n/******/ \t// mode & 4: return value when already ns object\r\n/******/ \t// mode & 8|1: behave like require\r\n/******/ \t__webpack_require__.t = function(value, mode) {\r\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\r\n/******/ \t\tif(mode & 8) return value;\r\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\r\n/******/ \t\tvar ns = Object.create(null);\r\n/******/ \t\t__webpack_require__.r(ns);\r\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\r\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\r\n/******/ \t\treturn ns;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\r\n/******/ \t__webpack_require__.n = function(module) {\r\n/******/ \t\tvar getter = module && module.__esModule ?\r\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\r\n/******/ \t\t\tfunction getModuleExports() { return module; };\r\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\r\n/******/ \t\treturn getter;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// Object.prototype.hasOwnProperty.call\r\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ({\r\n\r\n/***/ \"1eb2\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n// This file is imported into lib/wc client bundles.\r\n\r\nif (typeof window !== 'undefined') {\r\n  var i\r\n  if ((i = window.document.currentScript) && (i = i.src.match(/(.+\\/)[^/]+\\.js$/))) {\r\n    __webpack_require__.p = i[1] // eslint-disable-line\r\n  }\r\n}\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"230e\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nvar isObject = __webpack_require__(\"d3f4\");\r\nvar document = __webpack_require__(\"7726\").document;\r\n// typeof document.createElement is 'object' in old IE\r\nvar is = isObject(document) && isObject(document.createElement);\r\nmodule.exports = function (it) {\r\n  return is ? document.createElement(it) : {};\r\n};\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"5b1b\":\r\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\r\n\r\n\"use strict\";\r\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VStep_vue_vue_type_style_index_0_id_aa0cbe42_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"ae07\");\r\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VStep_vue_vue_type_style_index_0_id_aa0cbe42_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VStep_vue_vue_type_style_index_0_id_aa0cbe42_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\r\n/* unused harmony reexport * */\r\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VStep_vue_vue_type_style_index_0_id_aa0cbe42_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a); \r\n\r\n/***/ }),\r\n\r\n/***/ \"6a99\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n// 7.1.1 ToPrimitive(input [, PreferredType])\r\nvar isObject = __webpack_require__(\"d3f4\");\r\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\r\n// and the second argument - flag - preferred type is a string\r\nmodule.exports = function (it, S) {\r\n  if (!isObject(it)) return it;\r\n  var fn, val;\r\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\r\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\r\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\r\n  throw TypeError(\"Can't convert object to primitive value\");\r\n};\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"7726\":\r\n/***/ (function(module, exports) {\r\n\r\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\r\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\r\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\r\n  // eslint-disable-next-line no-new-func\r\n  : Function('return this')();\r\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"79e5\":\r\n/***/ (function(module, exports) {\r\n\r\nmodule.exports = function (exec) {\r\n  try {\r\n    return !!exec();\r\n  } catch (e) {\r\n    return true;\r\n  }\r\n};\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"7f7f\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nvar dP = __webpack_require__(\"86cc\").f;\r\nvar FProto = Function.prototype;\r\nvar nameRE = /^\\s*function ([^ (]*)/;\r\nvar NAME = 'name';\r\n\r\n// 19.2.4.2 name\r\nNAME in FProto || __webpack_require__(\"9e1e\") && dP(FProto, NAME, {\r\n  configurable: true,\r\n  get: function () {\r\n    try {\r\n      return ('' + this).match(nameRE)[1];\r\n    } catch (e) {\r\n      return '';\r\n    }\r\n  }\r\n});\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"8634\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nfunction pad (hash, len) {\r\n  while (hash.length < len) {\r\n    hash = '0' + hash;\r\n  }\r\n  return hash;\r\n}\r\n\r\nfunction fold (hash, text) {\r\n  var i;\r\n  var chr;\r\n  var len;\r\n  if (text.length === 0) {\r\n    return hash;\r\n  }\r\n  for (i = 0, len = text.length; i < len; i++) {\r\n    chr = text.charCodeAt(i);\r\n    hash = ((hash << 5) - hash) + chr;\r\n    hash |= 0;\r\n  }\r\n  return hash < 0 ? hash * -2 : hash;\r\n}\r\n\r\nfunction foldObject (hash, o, seen) {\r\n  return Object.keys(o).sort().reduce(foldKey, hash);\r\n  function foldKey (hash, key) {\r\n    return foldValue(hash, o[key], key, seen);\r\n  }\r\n}\r\n\r\nfunction foldValue (input, value, key, seen) {\r\n  var hash = fold(fold(fold(input, key), toString(value)), typeof value);\r\n  if (value === null) {\r\n    return fold(hash, 'null');\r\n  }\r\n  if (value === undefined) {\r\n    return fold(hash, 'undefined');\r\n  }\r\n  if (typeof value === 'object') {\r\n    if (seen.indexOf(value) !== -1) {\r\n      return fold(hash, '[Circular]' + key);\r\n    }\r\n    seen.push(value);\r\n    return foldObject(hash, value, seen);\r\n  }\r\n  return fold(hash, value.toString());\r\n}\r\n\r\nfunction toString (o) {\r\n  return Object.prototype.toString.call(o);\r\n}\r\n\r\nfunction sum (o) {\r\n  return pad(foldValue(0, o, '', []).toString(16), 8);\r\n}\r\n\r\nmodule.exports = sum;\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"86cc\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nvar anObject = __webpack_require__(\"cb7c\");\r\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\r\nvar toPrimitive = __webpack_require__(\"6a99\");\r\nvar dP = Object.defineProperty;\r\n\r\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\r\n  anObject(O);\r\n  P = toPrimitive(P, true);\r\n  anObject(Attributes);\r\n  if (IE8_DOM_DEFINE) try {\r\n    return dP(O, P, Attributes);\r\n  } catch (e) { /* empty */ }\r\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\r\n  if ('value' in Attributes) O[P] = Attributes.value;\r\n  return O;\r\n};\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"9e1e\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n// Thank's IE8 for his funny defineProperty\r\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\r\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\r\n});\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"ae07\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n// extracted by mini-css-extract-plugin\r\n\r\n/***/ }),\r\n\r\n/***/ \"c69a\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\r\n  return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\r\n});\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"c8ba\":\r\n/***/ (function(module, exports) {\r\n\r\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"cb7c\":\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nvar isObject = __webpack_require__(\"d3f4\");\r\nmodule.exports = function (it) {\r\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\r\n  return it;\r\n};\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"d3f4\":\r\n/***/ (function(module, exports) {\r\n\r\nmodule.exports = function (it) {\r\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\r\n};\r\n\r\n\r\n/***/ }),\r\n\r\n/***/ \"f0bd\":\r\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\r\n\r\n\"use strict\";\r\n/* WEBPACK VAR INJECTION */(function(global) {/**!\r\n * @fileOverview Kickass library to create and place poppers near their reference elements.\r\n * @version 1.14.4\r\n * @license\r\n * Copyright (c) 2016 Federico Zivolo and contributors\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\r\n\r\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\r\nvar timeoutDuration = 0;\r\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\r\n  if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\r\n    timeoutDuration = 1;\r\n    break;\r\n  }\r\n}\r\n\r\nfunction microtaskDebounce(fn) {\r\n  var called = false;\r\n  return function () {\r\n    if (called) {\r\n      return;\r\n    }\r\n    called = true;\r\n    window.Promise.resolve().then(function () {\r\n      called = false;\r\n      fn();\r\n    });\r\n  };\r\n}\r\n\r\nfunction taskDebounce(fn) {\r\n  var scheduled = false;\r\n  return function () {\r\n    if (!scheduled) {\r\n      scheduled = true;\r\n      setTimeout(function () {\r\n        scheduled = false;\r\n        fn();\r\n      }, timeoutDuration);\r\n    }\r\n  };\r\n}\r\n\r\nvar supportsMicroTasks = isBrowser && window.Promise;\r\n\r\n/**\r\n* Create a debounced version of a method, that's asynchronously deferred\r\n* but called in the minimum time possible.\r\n*\r\n* @method\r\n* @memberof Popper.Utils\r\n* @argument {Function} fn\r\n* @returns {Function}\r\n*/\r\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\r\n\r\n/**\r\n * Check if the given variable is a function\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Any} functionToCheck - variable to check\r\n * @returns {Boolean} answer to: is a function?\r\n */\r\nfunction isFunction(functionToCheck) {\r\n  var getType = {};\r\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\r\n}\r\n\r\n/**\r\n * Get CSS computed property of the given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Eement} element\r\n * @argument {String} property\r\n */\r\nfunction getStyleComputedProperty(element, property) {\r\n  if (element.nodeType !== 1) {\r\n    return [];\r\n  }\r\n  // NOTE: 1 DOM access here\r\n  var css = getComputedStyle(element, null);\r\n  return property ? css[property] : css;\r\n}\r\n\r\n/**\r\n * Returns the parentNode or the host of the element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Element} parent\r\n */\r\nfunction getParentNode(element) {\r\n  if (element.nodeName === 'HTML') {\r\n    return element;\r\n  }\r\n  return element.parentNode || element.host;\r\n}\r\n\r\n/**\r\n * Returns the scrolling parent of the given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Element} scroll parent\r\n */\r\nfunction getScrollParent(element) {\r\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\r\n  if (!element) {\r\n    return document.body;\r\n  }\r\n\r\n  switch (element.nodeName) {\r\n    case 'HTML':\r\n    case 'BODY':\r\n      return element.ownerDocument.body;\r\n    case '#document':\r\n      return element.body;\r\n  }\r\n\r\n  // Firefox want us to check `-x` and `-y` variations as well\r\n\r\n  var _getStyleComputedProp = getStyleComputedProperty(element),\r\n      overflow = _getStyleComputedProp.overflow,\r\n      overflowX = _getStyleComputedProp.overflowX,\r\n      overflowY = _getStyleComputedProp.overflowY;\r\n\r\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\r\n    return element;\r\n  }\r\n\r\n  return getScrollParent(getParentNode(element));\r\n}\r\n\r\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\r\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\r\n\r\n/**\r\n * Determines if the browser is Internet Explorer\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Number} version to check\r\n * @returns {Boolean} isIE\r\n */\r\nfunction isIE(version) {\r\n  if (version === 11) {\r\n    return isIE11;\r\n  }\r\n  if (version === 10) {\r\n    return isIE10;\r\n  }\r\n  return isIE11 || isIE10;\r\n}\r\n\r\n/**\r\n * Returns the offset parent of the given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Element} offset parent\r\n */\r\nfunction getOffsetParent(element) {\r\n  if (!element) {\r\n    return document.documentElement;\r\n  }\r\n\r\n  var noOffsetParent = isIE(10) ? document.body : null;\r\n\r\n  // NOTE: 1 DOM access here\r\n  var offsetParent = element.offsetParent;\r\n  // Skip hidden elements which don't have an offsetParent\r\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\r\n    offsetParent = (element = element.nextElementSibling).offsetParent;\r\n  }\r\n\r\n  var nodeName = offsetParent && offsetParent.nodeName;\r\n\r\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\r\n    return element ? element.ownerDocument.documentElement : document.documentElement;\r\n  }\r\n\r\n  // .offsetParent will return the closest TD or TABLE in case\r\n  // no offsetParent is present, I hate this job...\r\n  if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\r\n    return getOffsetParent(offsetParent);\r\n  }\r\n\r\n  return offsetParent;\r\n}\r\n\r\nfunction isOffsetContainer(element) {\r\n  var nodeName = element.nodeName;\r\n\r\n  if (nodeName === 'BODY') {\r\n    return false;\r\n  }\r\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\r\n}\r\n\r\n/**\r\n * Finds the root node (document, shadowDOM root) of the given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} node\r\n * @returns {Element} root node\r\n */\r\nfunction getRoot(node) {\r\n  if (node.parentNode !== null) {\r\n    return getRoot(node.parentNode);\r\n  }\r\n\r\n  return node;\r\n}\r\n\r\n/**\r\n * Finds the offset parent common to the two provided nodes\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element1\r\n * @argument {Element} element2\r\n * @returns {Element} common offset parent\r\n */\r\nfunction findCommonOffsetParent(element1, element2) {\r\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\r\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\r\n    return document.documentElement;\r\n  }\r\n\r\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\r\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\r\n  var start = order ? element1 : element2;\r\n  var end = order ? element2 : element1;\r\n\r\n  // Get common ancestor container\r\n  var range = document.createRange();\r\n  range.setStart(start, 0);\r\n  range.setEnd(end, 0);\r\n  var commonAncestorContainer = range.commonAncestorContainer;\r\n\r\n  // Both nodes are inside #document\r\n\r\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\r\n    if (isOffsetContainer(commonAncestorContainer)) {\r\n      return commonAncestorContainer;\r\n    }\r\n\r\n    return getOffsetParent(commonAncestorContainer);\r\n  }\r\n\r\n  // one of the nodes is inside shadowDOM, find which one\r\n  var element1root = getRoot(element1);\r\n  if (element1root.host) {\r\n    return findCommonOffsetParent(element1root.host, element2);\r\n  } else {\r\n    return findCommonOffsetParent(element1, getRoot(element2).host);\r\n  }\r\n}\r\n\r\n/**\r\n * Gets the scroll value of the given element in the given side (top and left)\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @argument {String} side `top` or `left`\r\n * @returns {number} amount of scrolled pixels\r\n */\r\nfunction getScroll(element) {\r\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\r\n\r\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\r\n  var nodeName = element.nodeName;\r\n\r\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\r\n    var html = element.ownerDocument.documentElement;\r\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\r\n    return scrollingElement[upperSide];\r\n  }\r\n\r\n  return element[upperSide];\r\n}\r\n\r\n/*\r\n * Sum or subtract the element scroll values (left and top) from a given rect object\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Object} rect - Rect object you want to change\r\n * @param {HTMLElement} element - The element from the function reads the scroll values\r\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\r\n * @return {Object} rect - The modifier rect object\r\n */\r\nfunction includeScroll(rect, element) {\r\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\r\n\r\n  var scrollTop = getScroll(element, 'top');\r\n  var scrollLeft = getScroll(element, 'left');\r\n  var modifier = subtract ? -1 : 1;\r\n  rect.top += scrollTop * modifier;\r\n  rect.bottom += scrollTop * modifier;\r\n  rect.left += scrollLeft * modifier;\r\n  rect.right += scrollLeft * modifier;\r\n  return rect;\r\n}\r\n\r\n/*\r\n * Helper to detect borders of a given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {CSSStyleDeclaration} styles\r\n * Result of `getStyleComputedProperty` on the given element\r\n * @param {String} axis - `x` or `y`\r\n * @return {number} borders - The borders size of the given axis\r\n */\r\n\r\nfunction getBordersSize(styles, axis) {\r\n  var sideA = axis === 'x' ? 'Left' : 'Top';\r\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\r\n\r\n  return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\r\n}\r\n\r\nfunction getSize(axis, body, html, computedStyle) {\r\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\r\n}\r\n\r\nfunction getWindowSizes(document) {\r\n  var body = document.body;\r\n  var html = document.documentElement;\r\n  var computedStyle = isIE(10) && getComputedStyle(html);\r\n\r\n  return {\r\n    height: getSize('Height', body, html, computedStyle),\r\n    width: getSize('Width', body, html, computedStyle)\r\n  };\r\n}\r\n\r\nvar classCallCheck = function (instance, Constructor) {\r\n  if (!(instance instanceof Constructor)) {\r\n    throw new TypeError(\"Cannot call a class as a function\");\r\n  }\r\n};\r\n\r\nvar createClass = function () {\r\n  function defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n      var descriptor = props[i];\r\n      descriptor.enumerable = descriptor.enumerable || false;\r\n      descriptor.configurable = true;\r\n      if (\"value\" in descriptor) descriptor.writable = true;\r\n      Object.defineProperty(target, descriptor.key, descriptor);\r\n    }\r\n  }\r\n\r\n  return function (Constructor, protoProps, staticProps) {\r\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\r\n    if (staticProps) defineProperties(Constructor, staticProps);\r\n    return Constructor;\r\n  };\r\n}();\r\n\r\n\r\n\r\n\r\n\r\nvar defineProperty = function (obj, key, value) {\r\n  if (key in obj) {\r\n    Object.defineProperty(obj, key, {\r\n      value: value,\r\n      enumerable: true,\r\n      configurable: true,\r\n      writable: true\r\n    });\r\n  } else {\r\n    obj[key] = value;\r\n  }\r\n\r\n  return obj;\r\n};\r\n\r\nvar _extends = Object.assign || function (target) {\r\n  for (var i = 1; i < arguments.length; i++) {\r\n    var source = arguments[i];\r\n\r\n    for (var key in source) {\r\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n        target[key] = source[key];\r\n      }\r\n    }\r\n  }\r\n\r\n  return target;\r\n};\r\n\r\n/**\r\n * Given element offsets, generate an output similar to getBoundingClientRect\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Object} offsets\r\n * @returns {Object} ClientRect like output\r\n */\r\nfunction getClientRect(offsets) {\r\n  return _extends({}, offsets, {\r\n    right: offsets.left + offsets.width,\r\n    bottom: offsets.top + offsets.height\r\n  });\r\n}\r\n\r\n/**\r\n * Get bounding client rect of given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {HTMLElement} element\r\n * @return {Object} client rect\r\n */\r\nfunction getBoundingClientRect(element) {\r\n  var rect = {};\r\n\r\n  // IE10 10 FIX: Please, don't ask, the element isn't\r\n  // considered in DOM in some circumstances...\r\n  // This isn't reproducible in IE10 compatibility mode of IE11\r\n  try {\r\n    if (isIE(10)) {\r\n      rect = element.getBoundingClientRect();\r\n      var scrollTop = getScroll(element, 'top');\r\n      var scrollLeft = getScroll(element, 'left');\r\n      rect.top += scrollTop;\r\n      rect.left += scrollLeft;\r\n      rect.bottom += scrollTop;\r\n      rect.right += scrollLeft;\r\n    } else {\r\n      rect = element.getBoundingClientRect();\r\n    }\r\n  } catch (e) {}\r\n\r\n  var result = {\r\n    left: rect.left,\r\n    top: rect.top,\r\n    width: rect.right - rect.left,\r\n    height: rect.bottom - rect.top\r\n  };\r\n\r\n  // subtract scrollbar size from sizes\r\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\r\n  var width = sizes.width || element.clientWidth || result.right - result.left;\r\n  var height = sizes.height || element.clientHeight || result.bottom - result.top;\r\n\r\n  var horizScrollbar = element.offsetWidth - width;\r\n  var vertScrollbar = element.offsetHeight - height;\r\n\r\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\r\n  // we make this check conditional for performance reasons\r\n  if (horizScrollbar || vertScrollbar) {\r\n    var styles = getStyleComputedProperty(element);\r\n    horizScrollbar -= getBordersSize(styles, 'x');\r\n    vertScrollbar -= getBordersSize(styles, 'y');\r\n\r\n    result.width -= horizScrollbar;\r\n    result.height -= vertScrollbar;\r\n  }\r\n\r\n  return getClientRect(result);\r\n}\r\n\r\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\r\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\r\n\r\n  var isIE10 = isIE(10);\r\n  var isHTML = parent.nodeName === 'HTML';\r\n  var childrenRect = getBoundingClientRect(children);\r\n  var parentRect = getBoundingClientRect(parent);\r\n  var scrollParent = getScrollParent(children);\r\n\r\n  var styles = getStyleComputedProperty(parent);\r\n  var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\r\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\r\n\r\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\r\n  if (fixedPosition && isHTML) {\r\n    parentRect.top = Math.max(parentRect.top, 0);\r\n    parentRect.left = Math.max(parentRect.left, 0);\r\n  }\r\n  var offsets = getClientRect({\r\n    top: childrenRect.top - parentRect.top - borderTopWidth,\r\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\r\n    width: childrenRect.width,\r\n    height: childrenRect.height\r\n  });\r\n  offsets.marginTop = 0;\r\n  offsets.marginLeft = 0;\r\n\r\n  // Subtract margins of documentElement in case it's being used as parent\r\n  // we do this only on HTML because it's the only element that behaves\r\n  // differently when margins are applied to it. The margins are included in\r\n  // the box of the documentElement, in the other cases not.\r\n  if (!isIE10 && isHTML) {\r\n    var marginTop = parseFloat(styles.marginTop, 10);\r\n    var marginLeft = parseFloat(styles.marginLeft, 10);\r\n\r\n    offsets.top -= borderTopWidth - marginTop;\r\n    offsets.bottom -= borderTopWidth - marginTop;\r\n    offsets.left -= borderLeftWidth - marginLeft;\r\n    offsets.right -= borderLeftWidth - marginLeft;\r\n\r\n    // Attach marginTop and marginLeft because in some circumstances we may need them\r\n    offsets.marginTop = marginTop;\r\n    offsets.marginLeft = marginLeft;\r\n  }\r\n\r\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\r\n    offsets = includeScroll(offsets, parent);\r\n  }\r\n\r\n  return offsets;\r\n}\r\n\r\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\r\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n\r\n  var html = element.ownerDocument.documentElement;\r\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\r\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\r\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\r\n\r\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\r\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\r\n\r\n  var offset = {\r\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\r\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\r\n    width: width,\r\n    height: height\r\n  };\r\n\r\n  return getClientRect(offset);\r\n}\r\n\r\n/**\r\n * Check if the given element is fixed or is inside a fixed parent\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @argument {Element} customContainer\r\n * @returns {Boolean} answer to \"isFixed?\"\r\n */\r\nfunction isFixed(element) {\r\n  var nodeName = element.nodeName;\r\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\r\n    return false;\r\n  }\r\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\r\n    return true;\r\n  }\r\n  return isFixed(getParentNode(element));\r\n}\r\n\r\n/**\r\n * Finds the first parent of an element that has a transformed property defined\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Element} first transformed parent or documentElement\r\n */\r\n\r\nfunction getFixedPositionOffsetParent(element) {\r\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\r\n  if (!element || !element.parentElement || isIE()) {\r\n    return document.documentElement;\r\n  }\r\n  var el = element.parentElement;\r\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\r\n    el = el.parentElement;\r\n  }\r\n  return el || document.documentElement;\r\n}\r\n\r\n/**\r\n * Computed the boundaries limits and return them\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {HTMLElement} popper\r\n * @param {HTMLElement} reference\r\n * @param {number} padding\r\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\r\n * @param {Boolean} fixedPosition - Is in fixed position mode\r\n * @returns {Object} Coordinates of the boundaries\r\n */\r\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\r\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\r\n\r\n  // NOTE: 1 DOM access here\r\n\r\n  var boundaries = { top: 0, left: 0 };\r\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\r\n\r\n  // Handle viewport case\r\n  if (boundariesElement === 'viewport') {\r\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\r\n  } else {\r\n    // Handle other cases based on DOM element used as boundaries\r\n    var boundariesNode = void 0;\r\n    if (boundariesElement === 'scrollParent') {\r\n      boundariesNode = getScrollParent(getParentNode(reference));\r\n      if (boundariesNode.nodeName === 'BODY') {\r\n        boundariesNode = popper.ownerDocument.documentElement;\r\n      }\r\n    } else if (boundariesElement === 'window') {\r\n      boundariesNode = popper.ownerDocument.documentElement;\r\n    } else {\r\n      boundariesNode = boundariesElement;\r\n    }\r\n\r\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\r\n\r\n    // In case of HTML, we need a different computation\r\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\r\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\r\n          height = _getWindowSizes.height,\r\n          width = _getWindowSizes.width;\r\n\r\n      boundaries.top += offsets.top - offsets.marginTop;\r\n      boundaries.bottom = height + offsets.top;\r\n      boundaries.left += offsets.left - offsets.marginLeft;\r\n      boundaries.right = width + offsets.left;\r\n    } else {\r\n      // for all the other DOM elements, this one is good\r\n      boundaries = offsets;\r\n    }\r\n  }\r\n\r\n  // Add paddings\r\n  padding = padding || 0;\r\n  var isPaddingNumber = typeof padding === 'number';\r\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\r\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\r\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\r\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\r\n\r\n  return boundaries;\r\n}\r\n\r\nfunction getArea(_ref) {\r\n  var width = _ref.width,\r\n      height = _ref.height;\r\n\r\n  return width * height;\r\n}\r\n\r\n/**\r\n * Utility used to transform the `auto` placement to the placement with more\r\n * available space.\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\r\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\r\n\r\n  if (placement.indexOf('auto') === -1) {\r\n    return placement;\r\n  }\r\n\r\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\r\n\r\n  var rects = {\r\n    top: {\r\n      width: boundaries.width,\r\n      height: refRect.top - boundaries.top\r\n    },\r\n    right: {\r\n      width: boundaries.right - refRect.right,\r\n      height: boundaries.height\r\n    },\r\n    bottom: {\r\n      width: boundaries.width,\r\n      height: boundaries.bottom - refRect.bottom\r\n    },\r\n    left: {\r\n      width: refRect.left - boundaries.left,\r\n      height: boundaries.height\r\n    }\r\n  };\r\n\r\n  var sortedAreas = Object.keys(rects).map(function (key) {\r\n    return _extends({\r\n      key: key\r\n    }, rects[key], {\r\n      area: getArea(rects[key])\r\n    });\r\n  }).sort(function (a, b) {\r\n    return b.area - a.area;\r\n  });\r\n\r\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\r\n    var width = _ref2.width,\r\n        height = _ref2.height;\r\n    return width >= popper.clientWidth && height >= popper.clientHeight;\r\n  });\r\n\r\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\r\n\r\n  var variation = placement.split('-')[1];\r\n\r\n  return computedPlacement + (variation ? '-' + variation : '');\r\n}\r\n\r\n/**\r\n * Get offsets to the reference element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Object} state\r\n * @param {Element} popper - the popper element\r\n * @param {Element} reference - the reference element (the popper will be relative to this)\r\n * @param {Element} fixedPosition - is in fixed position mode\r\n * @returns {Object} An object containing the offsets which will be applied to the popper\r\n */\r\nfunction getReferenceOffsets(state, popper, reference) {\r\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\r\n\r\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\r\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\r\n}\r\n\r\n/**\r\n * Get the outer sizes of the given element (offset size + margins)\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Object} object containing width and height properties\r\n */\r\nfunction getOuterSizes(element) {\r\n  var styles = getComputedStyle(element);\r\n  var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\r\n  var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\r\n  var result = {\r\n    width: element.offsetWidth + y,\r\n    height: element.offsetHeight + x\r\n  };\r\n  return result;\r\n}\r\n\r\n/**\r\n * Get the opposite placement of the given one\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {String} placement\r\n * @returns {String} flipped placement\r\n */\r\nfunction getOppositePlacement(placement) {\r\n  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\r\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\r\n    return hash[matched];\r\n  });\r\n}\r\n\r\n/**\r\n * Get offsets to the popper\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Object} position - CSS position the Popper will get applied\r\n * @param {HTMLElement} popper - the popper element\r\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\r\n * @param {String} placement - one of the valid placement options\r\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\r\n */\r\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\r\n  placement = placement.split('-')[0];\r\n\r\n  // Get popper node sizes\r\n  var popperRect = getOuterSizes(popper);\r\n\r\n  // Add position, width and height to our offsets object\r\n  var popperOffsets = {\r\n    width: popperRect.width,\r\n    height: popperRect.height\r\n  };\r\n\r\n  // depending by the popper placement we have to compute its offsets slightly differently\r\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\r\n  var mainSide = isHoriz ? 'top' : 'left';\r\n  var secondarySide = isHoriz ? 'left' : 'top';\r\n  var measurement = isHoriz ? 'height' : 'width';\r\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\r\n\r\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\r\n  if (placement === secondarySide) {\r\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\r\n  } else {\r\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\r\n  }\r\n\r\n  return popperOffsets;\r\n}\r\n\r\n/**\r\n * Mimics the `find` method of Array\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Array} arr\r\n * @argument prop\r\n * @argument value\r\n * @returns index or -1\r\n */\r\nfunction find(arr, check) {\r\n  // use native find if supported\r\n  if (Array.prototype.find) {\r\n    return arr.find(check);\r\n  }\r\n\r\n  // use `filter` to obtain the same behavior of `find`\r\n  return arr.filter(check)[0];\r\n}\r\n\r\n/**\r\n * Return the index of the matching object\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Array} arr\r\n * @argument prop\r\n * @argument value\r\n * @returns index or -1\r\n */\r\nfunction findIndex(arr, prop, value) {\r\n  // use native findIndex if supported\r\n  if (Array.prototype.findIndex) {\r\n    return arr.findIndex(function (cur) {\r\n      return cur[prop] === value;\r\n    });\r\n  }\r\n\r\n  // use `find` + `indexOf` if `findIndex` isn't supported\r\n  var match = find(arr, function (obj) {\r\n    return obj[prop] === value;\r\n  });\r\n  return arr.indexOf(match);\r\n}\r\n\r\n/**\r\n * Loop trough the list of modifiers and run them in order,\r\n * each of them will then edit the data object.\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {dataObject} data\r\n * @param {Array} modifiers\r\n * @param {String} ends - Optional modifier name used as stopper\r\n * @returns {dataObject}\r\n */\r\nfunction runModifiers(modifiers, data, ends) {\r\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\r\n\r\n  modifiersToRun.forEach(function (modifier) {\r\n    if (modifier['function']) {\r\n      // eslint-disable-line dot-notation\r\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\r\n    }\r\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\r\n    if (modifier.enabled && isFunction(fn)) {\r\n      // Add properties to offsets to make them a complete clientRect object\r\n      // we do this before each modifier to make sure the previous one doesn't\r\n      // mess with these values\r\n      data.offsets.popper = getClientRect(data.offsets.popper);\r\n      data.offsets.reference = getClientRect(data.offsets.reference);\r\n\r\n      data = fn(data, modifier);\r\n    }\r\n  });\r\n\r\n  return data;\r\n}\r\n\r\n/**\r\n * Updates the position of the popper, computing the new offsets and applying\r\n * the new style.<br />\r\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\r\n * @method\r\n * @memberof Popper\r\n */\r\nfunction update() {\r\n  // if popper is destroyed, don't perform any further update\r\n  if (this.state.isDestroyed) {\r\n    return;\r\n  }\r\n\r\n  var data = {\r\n    instance: this,\r\n    styles: {},\r\n    arrowStyles: {},\r\n    attributes: {},\r\n    flipped: false,\r\n    offsets: {}\r\n  };\r\n\r\n  // compute reference element offsets\r\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\r\n\r\n  // compute auto placement, store placement inside the data object,\r\n  // modifiers will be able to edit `placement` if needed\r\n  // and refer to originalPlacement to know the original value\r\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\r\n\r\n  // store the computed placement inside `originalPlacement`\r\n  data.originalPlacement = data.placement;\r\n\r\n  data.positionFixed = this.options.positionFixed;\r\n\r\n  // compute the popper offsets\r\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\r\n\r\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\r\n\r\n  // run the modifiers\r\n  data = runModifiers(this.modifiers, data);\r\n\r\n  // the first `update` will call `onCreate` callback\r\n  // the other ones will call `onUpdate` callback\r\n  if (!this.state.isCreated) {\r\n    this.state.isCreated = true;\r\n    this.options.onCreate(data);\r\n  } else {\r\n    this.options.onUpdate(data);\r\n  }\r\n}\r\n\r\n/**\r\n * Helper used to know if the given modifier is enabled.\r\n * @method\r\n * @memberof Popper.Utils\r\n * @returns {Boolean}\r\n */\r\nfunction isModifierEnabled(modifiers, modifierName) {\r\n  return modifiers.some(function (_ref) {\r\n    var name = _ref.name,\r\n        enabled = _ref.enabled;\r\n    return enabled && name === modifierName;\r\n  });\r\n}\r\n\r\n/**\r\n * Get the prefixed supported property name\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {String} property (camelCase)\r\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\r\n */\r\nfunction getSupportedPropertyName(property) {\r\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\r\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\r\n\r\n  for (var i = 0; i < prefixes.length; i++) {\r\n    var prefix = prefixes[i];\r\n    var toCheck = prefix ? '' + prefix + upperProp : property;\r\n    if (typeof document.body.style[toCheck] !== 'undefined') {\r\n      return toCheck;\r\n    }\r\n  }\r\n  return null;\r\n}\r\n\r\n/**\r\n * Destroys the popper.\r\n * @method\r\n * @memberof Popper\r\n */\r\nfunction destroy() {\r\n  this.state.isDestroyed = true;\r\n\r\n  // touch DOM only if `applyStyle` modifier is enabled\r\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\r\n    this.popper.removeAttribute('x-placement');\r\n    this.popper.style.position = '';\r\n    this.popper.style.top = '';\r\n    this.popper.style.left = '';\r\n    this.popper.style.right = '';\r\n    this.popper.style.bottom = '';\r\n    this.popper.style.willChange = '';\r\n    this.popper.style[getSupportedPropertyName('transform')] = '';\r\n  }\r\n\r\n  this.disableEventListeners();\r\n\r\n  // remove the popper if user explicity asked for the deletion on destroy\r\n  // do not use `remove` because IE11 doesn't support it\r\n  if (this.options.removeOnDestroy) {\r\n    this.popper.parentNode.removeChild(this.popper);\r\n  }\r\n  return this;\r\n}\r\n\r\n/**\r\n * Get the window associated with the element\r\n * @argument {Element} element\r\n * @returns {Window}\r\n */\r\nfunction getWindow(element) {\r\n  var ownerDocument = element.ownerDocument;\r\n  return ownerDocument ? ownerDocument.defaultView : window;\r\n}\r\n\r\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\r\n  var isBody = scrollParent.nodeName === 'BODY';\r\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\r\n  target.addEventListener(event, callback, { passive: true });\r\n\r\n  if (!isBody) {\r\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\r\n  }\r\n  scrollParents.push(target);\r\n}\r\n\r\n/**\r\n * Setup needed event listeners used to update the popper position\r\n * @method\r\n * @memberof Popper.Utils\r\n * @private\r\n */\r\nfunction setupEventListeners(reference, options, state, updateBound) {\r\n  // Resize event listener on window\r\n  state.updateBound = updateBound;\r\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\r\n\r\n  // Scroll event listener on scroll parents\r\n  var scrollElement = getScrollParent(reference);\r\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\r\n  state.scrollElement = scrollElement;\r\n  state.eventsEnabled = true;\r\n\r\n  return state;\r\n}\r\n\r\n/**\r\n * It will add resize/scroll events and start recalculating\r\n * position of the popper element when they are triggered.\r\n * @method\r\n * @memberof Popper\r\n */\r\nfunction enableEventListeners() {\r\n  if (!this.state.eventsEnabled) {\r\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\r\n  }\r\n}\r\n\r\n/**\r\n * Remove event listeners used to update the popper position\r\n * @method\r\n * @memberof Popper.Utils\r\n * @private\r\n */\r\nfunction removeEventListeners(reference, state) {\r\n  // Remove resize event listener on window\r\n  getWindow(reference).removeEventListener('resize', state.updateBound);\r\n\r\n  // Remove scroll event listener on scroll parents\r\n  state.scrollParents.forEach(function (target) {\r\n    target.removeEventListener('scroll', state.updateBound);\r\n  });\r\n\r\n  // Reset state\r\n  state.updateBound = null;\r\n  state.scrollParents = [];\r\n  state.scrollElement = null;\r\n  state.eventsEnabled = false;\r\n  return state;\r\n}\r\n\r\n/**\r\n * It will remove resize/scroll events and won't recalculate popper position\r\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\r\n * unless you call `update` method manually.\r\n * @method\r\n * @memberof Popper\r\n */\r\nfunction disableEventListeners() {\r\n  if (this.state.eventsEnabled) {\r\n    cancelAnimationFrame(this.scheduleUpdate);\r\n    this.state = removeEventListeners(this.reference, this.state);\r\n  }\r\n}\r\n\r\n/**\r\n * Tells if a given input is a number\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {*} input to check\r\n * @return {Boolean}\r\n */\r\nfunction isNumeric(n) {\r\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\r\n}\r\n\r\n/**\r\n * Set the style to the given popper\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element - Element to apply the style to\r\n * @argument {Object} styles\r\n * Object with a list of properties and values which will be applied to the element\r\n */\r\nfunction setStyles(element, styles) {\r\n  Object.keys(styles).forEach(function (prop) {\r\n    var unit = '';\r\n    // add unit if the value is numeric and is one of the following\r\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\r\n      unit = 'px';\r\n    }\r\n    element.style[prop] = styles[prop] + unit;\r\n  });\r\n}\r\n\r\n/**\r\n * Set the attributes to the given popper\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element - Element to apply the attributes to\r\n * @argument {Object} styles\r\n * Object with a list of properties and values which will be applied to the element\r\n */\r\nfunction setAttributes(element, attributes) {\r\n  Object.keys(attributes).forEach(function (prop) {\r\n    var value = attributes[prop];\r\n    if (value !== false) {\r\n      element.setAttribute(prop, attributes[prop]);\r\n    } else {\r\n      element.removeAttribute(prop);\r\n    }\r\n  });\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\r\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The same data object\r\n */\r\nfunction applyStyle(data) {\r\n  // any property present in `data.styles` will be applied to the popper,\r\n  // in this way we can make the 3rd party modifiers add custom styles to it\r\n  // Be aware, modifiers could override the properties defined in the previous\r\n  // lines of this modifier!\r\n  setStyles(data.instance.popper, data.styles);\r\n\r\n  // any property present in `data.attributes` will be applied to the popper,\r\n  // they will be set as HTML attributes of the element\r\n  setAttributes(data.instance.popper, data.attributes);\r\n\r\n  // if arrowElement is defined and arrowStyles has some properties\r\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\r\n    setStyles(data.arrowElement, data.arrowStyles);\r\n  }\r\n\r\n  return data;\r\n}\r\n\r\n/**\r\n * Set the x-placement attribute before everything else because it could be used\r\n * to add margins to the popper margins needs to be calculated to get the\r\n * correct popper offsets.\r\n * @method\r\n * @memberof Popper.modifiers\r\n * @param {HTMLElement} reference - The reference element used to position the popper\r\n * @param {HTMLElement} popper - The HTML element used as popper\r\n * @param {Object} options - Popper.js options\r\n */\r\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\r\n  // compute reference element offsets\r\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\r\n\r\n  // compute auto placement, store placement inside the data object,\r\n  // modifiers will be able to edit `placement` if needed\r\n  // and refer to originalPlacement to know the original value\r\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\r\n\r\n  popper.setAttribute('x-placement', placement);\r\n\r\n  // Apply `position` to popper before anything else because\r\n  // without the position applied we can't guarantee correct computations\r\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\r\n\r\n  return options;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction computeStyle(data, options) {\r\n  var x = options.x,\r\n      y = options.y;\r\n  var popper = data.offsets.popper;\r\n\r\n  // Remove this legacy support in Popper.js v2\r\n\r\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\r\n    return modifier.name === 'applyStyle';\r\n  }).gpuAcceleration;\r\n  if (legacyGpuAccelerationOption !== undefined) {\r\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\r\n  }\r\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\r\n\r\n  var offsetParent = getOffsetParent(data.instance.popper);\r\n  var offsetParentRect = getBoundingClientRect(offsetParent);\r\n\r\n  // Styles\r\n  var styles = {\r\n    position: popper.position\r\n  };\r\n\r\n  // Avoid blurry text by using full pixel integers.\r\n  // For pixel-perfect positioning, top/bottom prefers rounded\r\n  // values, while left/right prefers floored values.\r\n  var offsets = {\r\n    left: Math.floor(popper.left),\r\n    top: Math.round(popper.top),\r\n    bottom: Math.round(popper.bottom),\r\n    right: Math.floor(popper.right)\r\n  };\r\n\r\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\r\n  var sideB = y === 'right' ? 'left' : 'right';\r\n\r\n  // if gpuAcceleration is set to `true` and transform is supported,\r\n  //  we use `translate3d` to apply the position to the popper we\r\n  // automatically use the supported prefixed version if needed\r\n  var prefixedProperty = getSupportedPropertyName('transform');\r\n\r\n  // now, let's make a step back and look at this code closely (wtf?)\r\n  // If the content of the popper grows once it's been positioned, it\r\n  // may happen that the popper gets misplaced because of the new content\r\n  // overflowing its reference element\r\n  // To avoid this problem, we provide two options (x and y), which allow\r\n  // the consumer to define the offset origin.\r\n  // If we position a popper on top of a reference element, we can set\r\n  // `x` to `top` to make the popper grow towards its top instead of\r\n  // its bottom.\r\n  var left = void 0,\r\n      top = void 0;\r\n  if (sideA === 'bottom') {\r\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\r\n    // and not the bottom of the html element\r\n    if (offsetParent.nodeName === 'HTML') {\r\n      top = -offsetParent.clientHeight + offsets.bottom;\r\n    } else {\r\n      top = -offsetParentRect.height + offsets.bottom;\r\n    }\r\n  } else {\r\n    top = offsets.top;\r\n  }\r\n  if (sideB === 'right') {\r\n    if (offsetParent.nodeName === 'HTML') {\r\n      left = -offsetParent.clientWidth + offsets.right;\r\n    } else {\r\n      left = -offsetParentRect.width + offsets.right;\r\n    }\r\n  } else {\r\n    left = offsets.left;\r\n  }\r\n  if (gpuAcceleration && prefixedProperty) {\r\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\r\n    styles[sideA] = 0;\r\n    styles[sideB] = 0;\r\n    styles.willChange = 'transform';\r\n  } else {\r\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\r\n    var invertTop = sideA === 'bottom' ? -1 : 1;\r\n    var invertLeft = sideB === 'right' ? -1 : 1;\r\n    styles[sideA] = top * invertTop;\r\n    styles[sideB] = left * invertLeft;\r\n    styles.willChange = sideA + ', ' + sideB;\r\n  }\r\n\r\n  // Attributes\r\n  var attributes = {\r\n    'x-placement': data.placement\r\n  };\r\n\r\n  // Update `data` attributes, styles and arrowStyles\r\n  data.attributes = _extends({}, attributes, data.attributes);\r\n  data.styles = _extends({}, styles, data.styles);\r\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\r\n\r\n  return data;\r\n}\r\n\r\n/**\r\n * Helper used to know if the given modifier depends from another one.<br />\r\n * It checks if the needed modifier is listed and enabled.\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Array} modifiers - list of modifiers\r\n * @param {String} requestingName - name of requesting modifier\r\n * @param {String} requestedName - name of requested modifier\r\n * @returns {Boolean}\r\n */\r\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\r\n  var requesting = find(modifiers, function (_ref) {\r\n    var name = _ref.name;\r\n    return name === requestingName;\r\n  });\r\n\r\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\r\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\r\n  });\r\n\r\n  if (!isRequired) {\r\n    var _requesting = '`' + requestingName + '`';\r\n    var requested = '`' + requestedName + '`';\r\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\r\n  }\r\n  return isRequired;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction arrow(data, options) {\r\n  var _data$offsets$arrow;\r\n\r\n  // arrow depends on keepTogether in order to work\r\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\r\n    return data;\r\n  }\r\n\r\n  var arrowElement = options.element;\r\n\r\n  // if arrowElement is a string, suppose it's a CSS selector\r\n  if (typeof arrowElement === 'string') {\r\n    arrowElement = data.instance.popper.querySelector(arrowElement);\r\n\r\n    // if arrowElement is not found, don't run the modifier\r\n    if (!arrowElement) {\r\n      return data;\r\n    }\r\n  } else {\r\n    // if the arrowElement isn't a query selector we must check that the\r\n    // provided DOM node is child of its popper node\r\n    if (!data.instance.popper.contains(arrowElement)) {\r\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\r\n      return data;\r\n    }\r\n  }\r\n\r\n  var placement = data.placement.split('-')[0];\r\n  var _data$offsets = data.offsets,\r\n      popper = _data$offsets.popper,\r\n      reference = _data$offsets.reference;\r\n\r\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\r\n\r\n  var len = isVertical ? 'height' : 'width';\r\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\r\n  var side = sideCapitalized.toLowerCase();\r\n  var altSide = isVertical ? 'left' : 'top';\r\n  var opSide = isVertical ? 'bottom' : 'right';\r\n  var arrowElementSize = getOuterSizes(arrowElement)[len];\r\n\r\n  //\r\n  // extends keepTogether behavior making sure the popper and its\r\n  // reference have enough pixels in conjunction\r\n  //\r\n\r\n  // top/left side\r\n  if (reference[opSide] - arrowElementSize < popper[side]) {\r\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\r\n  }\r\n  // bottom/right side\r\n  if (reference[side] + arrowElementSize > popper[opSide]) {\r\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\r\n  }\r\n  data.offsets.popper = getClientRect(data.offsets.popper);\r\n\r\n  // compute center of the popper\r\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\r\n\r\n  // Compute the sideValue using the updated popper offsets\r\n  // take popper margin in account because we don't have this info available\r\n  var css = getStyleComputedProperty(data.instance.popper);\r\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\r\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\r\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\r\n\r\n  // prevent arrowElement from being placed not contiguously to its popper\r\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\r\n\r\n  data.arrowElement = arrowElement;\r\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\r\n\r\n  return data;\r\n}\r\n\r\n/**\r\n * Get the opposite placement variation of the given one\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {String} placement variation\r\n * @returns {String} flipped placement variation\r\n */\r\nfunction getOppositeVariation(variation) {\r\n  if (variation === 'end') {\r\n    return 'start';\r\n  } else if (variation === 'start') {\r\n    return 'end';\r\n  }\r\n  return variation;\r\n}\r\n\r\n/**\r\n * List of accepted placements to use as values of the `placement` option.<br />\r\n * Valid placements are:\r\n * - `auto`\r\n * - `top`\r\n * - `right`\r\n * - `bottom`\r\n * - `left`\r\n *\r\n * Each placement can have a variation from this list:\r\n * - `-start`\r\n * - `-end`\r\n *\r\n * Variations are interpreted easily if you think of them as the left to right\r\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\r\n * is right.<br />\r\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\r\n *\r\n * Some valid examples are:\r\n * - `top-end` (on top of reference, right aligned)\r\n * - `right-start` (on right of reference, top aligned)\r\n * - `bottom` (on bottom, centered)\r\n * - `auto-end` (on the side with more space available, alignment depends by placement)\r\n *\r\n * @static\r\n * @type {Array}\r\n * @enum {String}\r\n * @readonly\r\n * @method placements\r\n * @memberof Popper\r\n */\r\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\r\n\r\n// Get rid of `auto` `auto-start` and `auto-end`\r\nvar validPlacements = placements.slice(3);\r\n\r\n/**\r\n * Given an initial placement, returns all the subsequent placements\r\n * clockwise (or counter-clockwise).\r\n *\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {String} placement - A valid placement (it accepts variations)\r\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\r\n * @returns {Array} placements including their variations\r\n */\r\nfunction clockwise(placement) {\r\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n\r\n  var index = validPlacements.indexOf(placement);\r\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\r\n  return counter ? arr.reverse() : arr;\r\n}\r\n\r\nvar BEHAVIORS = {\r\n  FLIP: 'flip',\r\n  CLOCKWISE: 'clockwise',\r\n  COUNTERCLOCKWISE: 'counterclockwise'\r\n};\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction flip(data, options) {\r\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\r\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\r\n    return data;\r\n  }\r\n\r\n  if (data.flipped && data.placement === data.originalPlacement) {\r\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\r\n    return data;\r\n  }\r\n\r\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\r\n\r\n  var placement = data.placement.split('-')[0];\r\n  var placementOpposite = getOppositePlacement(placement);\r\n  var variation = data.placement.split('-')[1] || '';\r\n\r\n  var flipOrder = [];\r\n\r\n  switch (options.behavior) {\r\n    case BEHAVIORS.FLIP:\r\n      flipOrder = [placement, placementOpposite];\r\n      break;\r\n    case BEHAVIORS.CLOCKWISE:\r\n      flipOrder = clockwise(placement);\r\n      break;\r\n    case BEHAVIORS.COUNTERCLOCKWISE:\r\n      flipOrder = clockwise(placement, true);\r\n      break;\r\n    default:\r\n      flipOrder = options.behavior;\r\n  }\r\n\r\n  flipOrder.forEach(function (step, index) {\r\n    if (placement !== step || flipOrder.length === index + 1) {\r\n      return data;\r\n    }\r\n\r\n    placement = data.placement.split('-')[0];\r\n    placementOpposite = getOppositePlacement(placement);\r\n\r\n    var popperOffsets = data.offsets.popper;\r\n    var refOffsets = data.offsets.reference;\r\n\r\n    // using floor because the reference offsets may contain decimals we are not going to consider here\r\n    var floor = Math.floor;\r\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\r\n\r\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\r\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\r\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\r\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\r\n\r\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\r\n\r\n    // flip the variation if required\r\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\r\n    var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\r\n\r\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\r\n      // this boolean to detect any flip loop\r\n      data.flipped = true;\r\n\r\n      if (overlapsRef || overflowsBoundaries) {\r\n        placement = flipOrder[index + 1];\r\n      }\r\n\r\n      if (flippedVariation) {\r\n        variation = getOppositeVariation(variation);\r\n      }\r\n\r\n      data.placement = placement + (variation ? '-' + variation : '');\r\n\r\n      // this object contains `position`, we want to preserve it along with\r\n      // any additional property we may add in the future\r\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\r\n\r\n      data = runModifiers(data.instance.modifiers, data, 'flip');\r\n    }\r\n  });\r\n  return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction keepTogether(data) {\r\n  var _data$offsets = data.offsets,\r\n      popper = _data$offsets.popper,\r\n      reference = _data$offsets.reference;\r\n\r\n  var placement = data.placement.split('-')[0];\r\n  var floor = Math.floor;\r\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\r\n  var side = isVertical ? 'right' : 'bottom';\r\n  var opSide = isVertical ? 'left' : 'top';\r\n  var measurement = isVertical ? 'width' : 'height';\r\n\r\n  if (popper[side] < floor(reference[opSide])) {\r\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\r\n  }\r\n  if (popper[opSide] > floor(reference[side])) {\r\n    data.offsets.popper[opSide] = floor(reference[side]);\r\n  }\r\n\r\n  return data;\r\n}\r\n\r\n/**\r\n * Converts a string containing value + unit into a px value number\r\n * @function\r\n * @memberof {modifiers~offset}\r\n * @private\r\n * @argument {String} str - Value + unit string\r\n * @argument {String} measurement - `height` or `width`\r\n * @argument {Object} popperOffsets\r\n * @argument {Object} referenceOffsets\r\n * @returns {Number|String}\r\n * Value in pixels, or original string if no values were extracted\r\n */\r\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\r\n  // separate value from unit\r\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\r\n  var value = +split[1];\r\n  var unit = split[2];\r\n\r\n  // If it's not a number it's an operator, I guess\r\n  if (!value) {\r\n    return str;\r\n  }\r\n\r\n  if (unit.indexOf('%') === 0) {\r\n    var element = void 0;\r\n    switch (unit) {\r\n      case '%p':\r\n        element = popperOffsets;\r\n        break;\r\n      case '%':\r\n      case '%r':\r\n      default:\r\n        element = referenceOffsets;\r\n    }\r\n\r\n    var rect = getClientRect(element);\r\n    return rect[measurement] / 100 * value;\r\n  } else if (unit === 'vh' || unit === 'vw') {\r\n    // if is a vh or vw, we calculate the size based on the viewport\r\n    var size = void 0;\r\n    if (unit === 'vh') {\r\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\r\n    } else {\r\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\r\n    }\r\n    return size / 100 * value;\r\n  } else {\r\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\r\n    // if is an implicit unit, it's px, and we return just the value\r\n    return value;\r\n  }\r\n}\r\n\r\n/**\r\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\r\n * @function\r\n * @memberof {modifiers~offset}\r\n * @private\r\n * @argument {String} offset\r\n * @argument {Object} popperOffsets\r\n * @argument {Object} referenceOffsets\r\n * @argument {String} basePlacement\r\n * @returns {Array} a two cells array with x and y offsets in numbers\r\n */\r\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\r\n  var offsets = [0, 0];\r\n\r\n  // Use height if placement is left or right and index is 0 otherwise use width\r\n  // in this way the first offset will use an axis and the second one\r\n  // will use the other one\r\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\r\n\r\n  // Split the offset string to obtain a list of values and operands\r\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\r\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\r\n    return frag.trim();\r\n  });\r\n\r\n  // Detect if the offset string contains a pair of values or a single one\r\n  // they could be separated by comma or space\r\n  var divider = fragments.indexOf(find(fragments, function (frag) {\r\n    return frag.search(/,|\\s/) !== -1;\r\n  }));\r\n\r\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\r\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\r\n  }\r\n\r\n  // If divider is found, we divide the list of values and operands to divide\r\n  // them by ofset X and Y.\r\n  var splitRegex = /\\s*,\\s*|\\s+/;\r\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\r\n\r\n  // Convert the values with units to absolute pixels to allow our computations\r\n  ops = ops.map(function (op, index) {\r\n    // Most of the units rely on the orientation of the popper\r\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\r\n    var mergeWithPrevious = false;\r\n    return op\r\n    // This aggregates any `+` or `-` sign that aren't considered operators\r\n    // e.g.: 10 + +5 => [10, +, +5]\r\n    .reduce(function (a, b) {\r\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\r\n        a[a.length - 1] = b;\r\n        mergeWithPrevious = true;\r\n        return a;\r\n      } else if (mergeWithPrevious) {\r\n        a[a.length - 1] += b;\r\n        mergeWithPrevious = false;\r\n        return a;\r\n      } else {\r\n        return a.concat(b);\r\n      }\r\n    }, [])\r\n    // Here we convert the string values into number values (in px)\r\n    .map(function (str) {\r\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\r\n    });\r\n  });\r\n\r\n  // Loop trough the offsets arrays and execute the operations\r\n  ops.forEach(function (op, index) {\r\n    op.forEach(function (frag, index2) {\r\n      if (isNumeric(frag)) {\r\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\r\n      }\r\n    });\r\n  });\r\n  return offsets;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @argument {Number|String} options.offset=0\r\n * The offset value as described in the modifier description\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction offset(data, _ref) {\r\n  var offset = _ref.offset;\r\n  var placement = data.placement,\r\n      _data$offsets = data.offsets,\r\n      popper = _data$offsets.popper,\r\n      reference = _data$offsets.reference;\r\n\r\n  var basePlacement = placement.split('-')[0];\r\n\r\n  var offsets = void 0;\r\n  if (isNumeric(+offset)) {\r\n    offsets = [+offset, 0];\r\n  } else {\r\n    offsets = parseOffset(offset, popper, reference, basePlacement);\r\n  }\r\n\r\n  if (basePlacement === 'left') {\r\n    popper.top += offsets[0];\r\n    popper.left -= offsets[1];\r\n  } else if (basePlacement === 'right') {\r\n    popper.top += offsets[0];\r\n    popper.left += offsets[1];\r\n  } else if (basePlacement === 'top') {\r\n    popper.left += offsets[0];\r\n    popper.top -= offsets[1];\r\n  } else if (basePlacement === 'bottom') {\r\n    popper.left += offsets[0];\r\n    popper.top += offsets[1];\r\n  }\r\n\r\n  data.popper = popper;\r\n  return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction preventOverflow(data, options) {\r\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\r\n\r\n  // If offsetParent is the reference element, we really want to\r\n  // go one step up and use the next offsetParent as reference to\r\n  // avoid to make this modifier completely useless and look like broken\r\n  if (data.instance.reference === boundariesElement) {\r\n    boundariesElement = getOffsetParent(boundariesElement);\r\n  }\r\n\r\n  // NOTE: DOM access here\r\n  // resets the popper's position so that the document size can be calculated excluding\r\n  // the size of the popper element itself\r\n  var transformProp = getSupportedPropertyName('transform');\r\n  var popperStyles = data.instance.popper.style; // assignment to help minification\r\n  var top = popperStyles.top,\r\n      left = popperStyles.left,\r\n      transform = popperStyles[transformProp];\r\n\r\n  popperStyles.top = '';\r\n  popperStyles.left = '';\r\n  popperStyles[transformProp] = '';\r\n\r\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\r\n\r\n  // NOTE: DOM access here\r\n  // restores the original style properties after the offsets have been computed\r\n  popperStyles.top = top;\r\n  popperStyles.left = left;\r\n  popperStyles[transformProp] = transform;\r\n\r\n  options.boundaries = boundaries;\r\n\r\n  var order = options.priority;\r\n  var popper = data.offsets.popper;\r\n\r\n  var check = {\r\n    primary: function primary(placement) {\r\n      var value = popper[placement];\r\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\r\n        value = Math.max(popper[placement], boundaries[placement]);\r\n      }\r\n      return defineProperty({}, placement, value);\r\n    },\r\n    secondary: function secondary(placement) {\r\n      var mainSide = placement === 'right' ? 'left' : 'top';\r\n      var value = popper[mainSide];\r\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\r\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\r\n      }\r\n      return defineProperty({}, mainSide, value);\r\n    }\r\n  };\r\n\r\n  order.forEach(function (placement) {\r\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\r\n    popper = _extends({}, popper, check[side](placement));\r\n  });\r\n\r\n  data.offsets.popper = popper;\r\n\r\n  return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction shift(data) {\r\n  var placement = data.placement;\r\n  var basePlacement = placement.split('-')[0];\r\n  var shiftvariation = placement.split('-')[1];\r\n\r\n  // if shift shiftvariation is specified, run the modifier\r\n  if (shiftvariation) {\r\n    var _data$offsets = data.offsets,\r\n        reference = _data$offsets.reference,\r\n        popper = _data$offsets.popper;\r\n\r\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\r\n    var side = isVertical ? 'left' : 'top';\r\n    var measurement = isVertical ? 'width' : 'height';\r\n\r\n    var shiftOffsets = {\r\n      start: defineProperty({}, side, reference[side]),\r\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\r\n    };\r\n\r\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\r\n  }\r\n\r\n  return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction hide(data) {\r\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\r\n    return data;\r\n  }\r\n\r\n  var refRect = data.offsets.reference;\r\n  var bound = find(data.instance.modifiers, function (modifier) {\r\n    return modifier.name === 'preventOverflow';\r\n  }).boundaries;\r\n\r\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\r\n    // Avoid unnecessary DOM access if visibility hasn't changed\r\n    if (data.hide === true) {\r\n      return data;\r\n    }\r\n\r\n    data.hide = true;\r\n    data.attributes['x-out-of-boundaries'] = '';\r\n  } else {\r\n    // Avoid unnecessary DOM access if visibility hasn't changed\r\n    if (data.hide === false) {\r\n      return data;\r\n    }\r\n\r\n    data.hide = false;\r\n    data.attributes['x-out-of-boundaries'] = false;\r\n  }\r\n\r\n  return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction inner(data) {\r\n  var placement = data.placement;\r\n  var basePlacement = placement.split('-')[0];\r\n  var _data$offsets = data.offsets,\r\n      popper = _data$offsets.popper,\r\n      reference = _data$offsets.reference;\r\n\r\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\r\n\r\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\r\n\r\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\r\n\r\n  data.placement = getOppositePlacement(placement);\r\n  data.offsets.popper = getClientRect(popper);\r\n\r\n  return data;\r\n}\r\n\r\n/**\r\n * Modifier function, each modifier can have a function of this type assigned\r\n * to its `fn` property.<br />\r\n * These functions will be called on each update, this means that you must\r\n * make sure they are performant enough to avoid performance bottlenecks.\r\n *\r\n * @function ModifierFn\r\n * @argument {dataObject} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {dataObject} The data object, properly modified\r\n */\r\n\r\n/**\r\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\r\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\r\n * needed by the library.\r\n *\r\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\r\n * All the other properties are configurations that could be tweaked.\r\n * @namespace modifiers\r\n */\r\nvar modifiers = {\r\n  /**\r\n   * Modifier used to shift the popper on the start or end of its reference\r\n   * element.<br />\r\n   * It will read the variation of the `placement` property.<br />\r\n   * It can be one either `-end` or `-start`.\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  shift: {\r\n    /** @prop {number} order=100 - Index used to define the order of execution */\r\n    order: 100,\r\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n    enabled: true,\r\n    /** @prop {ModifierFn} */\r\n    fn: shift\r\n  },\r\n\r\n  /**\r\n   * The `offset` modifier can shift your popper on both its axis.\r\n   *\r\n   * It accepts the following units:\r\n   * - `px` or unit-less, interpreted as pixels\r\n   * - `%` or `%r`, percentage relative to the length of the reference element\r\n   * - `%p`, percentage relative to the length of the popper element\r\n   * - `vw`, CSS viewport width unit\r\n   * - `vh`, CSS viewport height unit\r\n   *\r\n   * For length is intended the main axis relative to the placement of the popper.<br />\r\n   * This means that if the placement is `top` or `bottom`, the length will be the\r\n   * `width`. In case of `left` or `right`, it will be the `height`.\r\n   *\r\n   * You can provide a single value (as `Number` or `String`), or a pair of values\r\n   * as `String` divided by a comma or one (or more) white spaces.<br />\r\n   * The latter is a deprecated method because it leads to confusion and will be\r\n   * removed in v2.<br />\r\n   * Additionally, it accepts additions and subtractions between different units.\r\n   * Note that multiplications and divisions aren't supported.\r\n   *\r\n   * Valid examples are:\r\n   * ```\r\n   * 10\r\n   * '10%'\r\n   * '10, 10'\r\n   * '10%, 10'\r\n   * '10 + 10%'\r\n   * '10 - 5vh + 3%'\r\n   * '-10px + 5vh, 5px - 6%'\r\n   * ```\r\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\r\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\r\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\r\n   *\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  offset: {\r\n    /** @prop {number} order=200 - Index used to define the order of execution */\r\n    order: 200,\r\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n    enabled: true,\r\n    /** @prop {ModifierFn} */\r\n    fn: offset,\r\n    /** @prop {Number|String} offset=0\r\n     * The offset value as described in the modifier description\r\n     */\r\n    offset: 0\r\n  },\r\n\r\n  /**\r\n   * Modifier used to prevent the popper from being positioned outside the boundary.\r\n   *\r\n   * A scenario exists where the reference itself is not within the boundaries.<br />\r\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\r\n   * In this case we need to decide whether the popper should either:\r\n   *\r\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\r\n   * - if it should ignore the boundary and \"escape with its reference\"\r\n   *\r\n   * When `escapeWithReference` is set to`true` and reference is completely\r\n   * outside its boundaries, the popper will overflow (or completely leave)\r\n   * the boundaries in order to remain attached to the edge of the reference.\r\n   *\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  preventOverflow: {\r\n    /** @prop {number} order=300 - Index used to define the order of execution */\r\n    order: 300,\r\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n    enabled: true,\r\n    /** @prop {ModifierFn} */\r\n    fn: preventOverflow,\r\n    /**\r\n     * @prop {Array} [priority=['left','right','top','bottom']]\r\n     * Popper will try to prevent overflow following these priorities by default,\r\n     * then, it could overflow on the left and on top of the `boundariesElement`\r\n     */\r\n    priority: ['left', 'right', 'top', 'bottom'],\r\n    /**\r\n     * @prop {number} padding=5\r\n     * Amount of pixel used to define a minimum distance between the boundaries\r\n     * and the popper. This makes sure the popper always has a little padding\r\n     * between the edges of its container\r\n     */\r\n    padding: 5,\r\n    /**\r\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\r\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\r\n     * `viewport` or any DOM element.\r\n     */\r\n    boundariesElement: 'scrollParent'\r\n  },\r\n\r\n  /**\r\n   * Modifier used to make sure the reference and its popper stay near each other\r\n   * without leaving any gap between the two. Especially useful when the arrow is\r\n   * enabled and you want to ensure that it points to its reference element.\r\n   * It cares only about the first axis. You can still have poppers with margin\r\n   * between the popper and its reference element.\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  keepTogether: {\r\n    /** @prop {number} order=400 - Index used to define the order of execution */\r\n    order: 400,\r\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n    enabled: true,\r\n    /** @prop {ModifierFn} */\r\n    fn: keepTogether\r\n  },\r\n\r\n  /**\r\n   * This modifier is used to move the `arrowElement` of the popper to make\r\n   * sure it is positioned between the reference element and its popper element.\r\n   * It will read the outer size of the `arrowElement` node to detect how many\r\n   * pixels of conjunction are needed.\r\n   *\r\n   * It has no effect if no `arrowElement` is provided.\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  arrow: {\r\n    /** @prop {number} order=500 - Index used to define the order of execution */\r\n    order: 500,\r\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n    enabled: true,\r\n    /** @prop {ModifierFn} */\r\n    fn: arrow,\r\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\r\n    element: '[x-arrow]'\r\n  },\r\n\r\n  /**\r\n   * Modifier used to flip the popper's placement when it starts to overlap its\r\n   * reference element.\r\n   *\r\n   * Requires the `preventOverflow` modifier before it in order to work.\r\n   *\r\n   * **NOTE:** this modifier will interrupt the current update cycle and will\r\n   * restart it if it detects the need to flip the placement.\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  flip: {\r\n    /** @prop {number} order=600 - Index used to define the order of execution */\r\n    order: 600,\r\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n    enabled: true,\r\n    /** @prop {ModifierFn} */\r\n    fn: flip,\r\n    /**\r\n     * @prop {String|Array} behavior='flip'\r\n     * The behavior used to change the popper's placement. It can be one of\r\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\r\n     * placements (with optional variations)\r\n     */\r\n    behavior: 'flip',\r\n    /**\r\n     * @prop {number} padding=5\r\n     * The popper will flip if it hits the edges of the `boundariesElement`\r\n     */\r\n    padding: 5,\r\n    /**\r\n     * @prop {String|HTMLElement} boundariesElement='viewport'\r\n     * The element which will define the boundaries of the popper position.\r\n     * The popper will never be placed outside of the defined boundaries\r\n     * (except if `keepTogether` is enabled)\r\n     */\r\n    boundariesElement: 'viewport'\r\n  },\r\n\r\n  /**\r\n   * Modifier used to make the popper flow toward the inner of the reference element.\r\n   * By default, when this modifier is disabled, the popper will be placed outside\r\n   * the reference element.\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  inner: {\r\n    /** @prop {number} order=700 - Index used to define the order of execution */\r\n    order: 700,\r\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\r\n    enabled: false,\r\n    /** @prop {ModifierFn} */\r\n    fn: inner\r\n  },\r\n\r\n  /**\r\n   * Modifier used to hide the popper when its reference element is outside of the\r\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\r\n   * be used to hide with a CSS selector the popper when its reference is\r\n   * out of boundaries.\r\n   *\r\n   * Requires the `preventOverflow` modifier before it in order to work.\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  hide: {\r\n    /** @prop {number} order=800 - Index used to define the order of execution */\r\n    order: 800,\r\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n    enabled: true,\r\n    /** @prop {ModifierFn} */\r\n    fn: hide\r\n  },\r\n\r\n  /**\r\n   * Computes the style that will be applied to the popper element to gets\r\n   * properly positioned.\r\n   *\r\n   * Note that this modifier will not touch the DOM, it just prepares the styles\r\n   * so that `applyStyle` modifier can apply it. This separation is useful\r\n   * in case you need to replace `applyStyle` with a custom implementation.\r\n   *\r\n   * This modifier has `850` as `order` value to maintain backward compatibility\r\n   * with previous versions of Popper.js. Expect the modifiers ordering method\r\n   * to change in future major versions of the library.\r\n   *\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  computeStyle: {\r\n    /** @prop {number} order=850 - Index used to define the order of execution */\r\n    order: 850,\r\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n    enabled: true,\r\n    /** @prop {ModifierFn} */\r\n    fn: computeStyle,\r\n    /**\r\n     * @prop {Boolean} gpuAcceleration=true\r\n     * If true, it uses the CSS 3D transformation to position the popper.\r\n     * Otherwise, it will use the `top` and `left` properties\r\n     */\r\n    gpuAcceleration: true,\r\n    /**\r\n     * @prop {string} [x='bottom']\r\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\r\n     * Change this if your popper should grow in a direction different from `bottom`\r\n     */\r\n    x: 'bottom',\r\n    /**\r\n     * @prop {string} [x='left']\r\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\r\n     * Change this if your popper should grow in a direction different from `right`\r\n     */\r\n    y: 'right'\r\n  },\r\n\r\n  /**\r\n   * Applies the computed styles to the popper element.\r\n   *\r\n   * All the DOM manipulations are limited to this modifier. This is useful in case\r\n   * you want to integrate Popper.js inside a framework or view library and you\r\n   * want to delegate all the DOM manipulations to it.\r\n   *\r\n   * Note that if you disable this modifier, you must make sure the popper element\r\n   * has its position set to `absolute` before Popper.js can do its work!\r\n   *\r\n   * Just disable this modifier and define your own to achieve the desired effect.\r\n   *\r\n   * @memberof modifiers\r\n   * @inner\r\n   */\r\n  applyStyle: {\r\n    /** @prop {number} order=900 - Index used to define the order of execution */\r\n    order: 900,\r\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n    enabled: true,\r\n    /** @prop {ModifierFn} */\r\n    fn: applyStyle,\r\n    /** @prop {Function} */\r\n    onLoad: applyStyleOnLoad,\r\n    /**\r\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\r\n     * @prop {Boolean} gpuAcceleration=true\r\n     * If true, it uses the CSS 3D transformation to position the popper.\r\n     * Otherwise, it will use the `top` and `left` properties\r\n     */\r\n    gpuAcceleration: undefined\r\n  }\r\n};\r\n\r\n/**\r\n * The `dataObject` is an object containing all the information used by Popper.js.\r\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\r\n * @name dataObject\r\n * @property {Object} data.instance The Popper.js instance\r\n * @property {String} data.placement Placement applied to popper\r\n * @property {String} data.originalPlacement Placement originally defined on init\r\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\r\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\r\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\r\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\r\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\r\n * @property {Object} data.boundaries Offsets of the popper boundaries\r\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\r\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\r\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\r\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\r\n */\r\n\r\n/**\r\n * Default options provided to Popper.js constructor.<br />\r\n * These can be overridden using the `options` argument of Popper.js.<br />\r\n * To override an option, simply pass an object with the same\r\n * structure of the `options` object, as the 3rd argument. For example:\r\n * ```\r\n * new Popper(ref, pop, {\r\n *   modifiers: {\r\n *     preventOverflow: { enabled: false }\r\n *   }\r\n * })\r\n * ```\r\n * @type {Object}\r\n * @static\r\n * @memberof Popper\r\n */\r\nvar Defaults = {\r\n  /**\r\n   * Popper's placement.\r\n   * @prop {Popper.placements} placement='bottom'\r\n   */\r\n  placement: 'bottom',\r\n\r\n  /**\r\n   * Set this to true if you want popper to position it self in 'fixed' mode\r\n   * @prop {Boolean} positionFixed=false\r\n   */\r\n  positionFixed: false,\r\n\r\n  /**\r\n   * Whether events (resize, scroll) are initially enabled.\r\n   * @prop {Boolean} eventsEnabled=true\r\n   */\r\n  eventsEnabled: true,\r\n\r\n  /**\r\n   * Set to true if you want to automatically remove the popper when\r\n   * you call the `destroy` method.\r\n   * @prop {Boolean} removeOnDestroy=false\r\n   */\r\n  removeOnDestroy: false,\r\n\r\n  /**\r\n   * Callback called when the popper is created.<br />\r\n   * By default, it is set to no-op.<br />\r\n   * Access Popper.js instance with `data.instance`.\r\n   * @prop {onCreate}\r\n   */\r\n  onCreate: function onCreate() {},\r\n\r\n  /**\r\n   * Callback called when the popper is updated. This callback is not called\r\n   * on the initialization/creation of the popper, but only on subsequent\r\n   * updates.<br />\r\n   * By default, it is set to no-op.<br />\r\n   * Access Popper.js instance with `data.instance`.\r\n   * @prop {onUpdate}\r\n   */\r\n  onUpdate: function onUpdate() {},\r\n\r\n  /**\r\n   * List of modifiers used to modify the offsets before they are applied to the popper.\r\n   * They provide most of the functionalities of Popper.js.\r\n   * @prop {modifiers}\r\n   */\r\n  modifiers: modifiers\r\n};\r\n\r\n/**\r\n * @callback onCreate\r\n * @param {dataObject} data\r\n */\r\n\r\n/**\r\n * @callback onUpdate\r\n * @param {dataObject} data\r\n */\r\n\r\n// Utils\r\n// Methods\r\nvar Popper = function () {\r\n  /**\r\n   * Creates a new Popper.js instance.\r\n   * @class Popper\r\n   * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\r\n   * @param {HTMLElement} popper - The HTML element used as the popper\r\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\r\n   * @return {Object} instance - The generated Popper.js instance\r\n   */\r\n  function Popper(reference, popper) {\r\n    var _this = this;\r\n\r\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\r\n    classCallCheck(this, Popper);\r\n\r\n    this.scheduleUpdate = function () {\r\n      return requestAnimationFrame(_this.update);\r\n    };\r\n\r\n    // make update() debounced, so that it only runs at most once-per-tick\r\n    this.update = debounce(this.update.bind(this));\r\n\r\n    // with {} we create a new object with the options inside it\r\n    this.options = _extends({}, Popper.Defaults, options);\r\n\r\n    // init state\r\n    this.state = {\r\n      isDestroyed: false,\r\n      isCreated: false,\r\n      scrollParents: []\r\n    };\r\n\r\n    // get reference and popper elements (allow jQuery wrappers)\r\n    this.reference = reference && reference.jquery ? reference[0] : reference;\r\n    this.popper = popper && popper.jquery ? popper[0] : popper;\r\n\r\n    // Deep merge modifiers options\r\n    this.options.modifiers = {};\r\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\r\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\r\n    });\r\n\r\n    // Refactoring modifiers' list (Object => Array)\r\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\r\n      return _extends({\r\n        name: name\r\n      }, _this.options.modifiers[name]);\r\n    })\r\n    // sort the modifiers by order\r\n    .sort(function (a, b) {\r\n      return a.order - b.order;\r\n    });\r\n\r\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\r\n    // such code is executed in the same order of its modifier\r\n    // they could add new properties to their options configuration\r\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\r\n    this.modifiers.forEach(function (modifierOptions) {\r\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\r\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\r\n      }\r\n    });\r\n\r\n    // fire the first update to position the popper in the right place\r\n    this.update();\r\n\r\n    var eventsEnabled = this.options.eventsEnabled;\r\n    if (eventsEnabled) {\r\n      // setup event listeners, they will take care of update the position in specific situations\r\n      this.enableEventListeners();\r\n    }\r\n\r\n    this.state.eventsEnabled = eventsEnabled;\r\n  }\r\n\r\n  // We can't use class properties because they don't get listed in the\r\n  // class prototype and break stuff like Sinon stubs\r\n\r\n\r\n  createClass(Popper, [{\r\n    key: 'update',\r\n    value: function update$$1() {\r\n      return update.call(this);\r\n    }\r\n  }, {\r\n    key: 'destroy',\r\n    value: function destroy$$1() {\r\n      return destroy.call(this);\r\n    }\r\n  }, {\r\n    key: 'enableEventListeners',\r\n    value: function enableEventListeners$$1() {\r\n      return enableEventListeners.call(this);\r\n    }\r\n  }, {\r\n    key: 'disableEventListeners',\r\n    value: function disableEventListeners$$1() {\r\n      return disableEventListeners.call(this);\r\n    }\r\n\r\n    /**\r\n     * Schedules an update. It will run on the next UI update available.\r\n     * @method scheduleUpdate\r\n     * @memberof Popper\r\n     */\r\n\r\n\r\n    /**\r\n     * Collection of utilities useful when writing custom modifiers.\r\n     * Starting from version 1.7, this method is available only if you\r\n     * include `popper-utils.js` before `popper.js`.\r\n     *\r\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\r\n     * and will be removed in v2! Use the PopperUtils module directly instead.\r\n     * Due to the high instability of the methods contained in Utils, we can't\r\n     * guarantee them to follow semver. Use them at your own risk!\r\n     * @static\r\n     * @private\r\n     * @type {Object}\r\n     * @deprecated since version 1.8\r\n     * @member Utils\r\n     * @memberof Popper\r\n     */\r\n\r\n  }]);\r\n  return Popper;\r\n}();\r\n\r\n/**\r\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\r\n * and lets you use it as replacement of a real DOM node.<br />\r\n * You can use this method to position a popper relatively to a set of coordinates\r\n * in case you don't have a DOM node to use as reference.\r\n *\r\n * ```\r\n * new Popper(referenceObject, popperNode);\r\n * ```\r\n *\r\n * NB: This feature isn't supported in Internet Explorer 10.\r\n * @name referenceObject\r\n * @property {Function} data.getBoundingClientRect\r\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\r\n * @property {number} data.clientWidth\r\n * An ES6 getter that will return the width of the virtual reference element.\r\n * @property {number} data.clientHeight\r\n * An ES6 getter that will return the height of the virtual reference element.\r\n */\r\n\r\n\r\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\r\nPopper.placements = placements;\r\nPopper.Defaults = Defaults;\r\n\r\n/* harmony default export */ __webpack_exports__[\"a\"] = (Popper);\r\n//# sourceMappingURL=popper.js.map\r\n\r\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\r\n\r\n/***/ }),\r\n\r\n/***/ \"fb15\":\r\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\r\n\r\n\"use strict\";\r\n__webpack_require__.r(__webpack_exports__);\r\n\r\n// EXTERNAL MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\r\nvar setPublicPath = __webpack_require__(\"1eb2\");\r\n\r\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js\r\nvar es6_function_name = __webpack_require__(\"7f7f\");\r\n\r\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules//.cache//vue-loader\",\"cacheIdentifier\":\"0595ba96-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/VTour.vue?vue&type=template&id=50006eb3&\r\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"v-tour\"},[_vm._t(\"default\",_vm._l((_vm.steps),function(step,index){return (_vm.currentStep === index)?_c('v-step',{key:index,attrs:{\"step\":step,\"previous-step\":_vm.previousStep,\"next-step\":_vm.nextStep,\"stop\":_vm.stop,\"is-first\":_vm.isFirst,\"is-last\":_vm.isLast,\"labels\":_vm.customOptions.labels}}):_vm._e()}),{currentStep:_vm.currentStep,steps:_vm.steps,previousStep:_vm.previousStep,nextStep:_vm.nextStep,stop:_vm.stop,isFirst:_vm.isFirst,isLast:_vm.isLast,labels:_vm.customOptions.labels})],2)}\r\nvar staticRenderFns = []\r\n\r\n\r\n// CONCATENATED MODULE: ./src/components/VTour.vue?vue&type=template&id=50006eb3&\r\n\r\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/builtin/es6/defineProperty.js\r\nfunction _defineProperty(obj, key, value) {\r\n  if (key in obj) {\r\n    Object.defineProperty(obj, key, {\r\n      value: value,\r\n      enumerable: true,\r\n      configurable: true,\r\n      writable: true\r\n    });\r\n  } else {\r\n    obj[key] = value;\r\n  }\r\n\r\n  return obj;\r\n}\r\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/builtin/es6/objectSpread.js\r\n\r\nfunction _objectSpread(target) {\r\n  for (var i = 1; i < arguments.length; i++) {\r\n    var source = arguments[i] != null ? arguments[i] : {};\r\n    var ownKeys = Object.keys(source);\r\n\r\n    if (typeof Object.getOwnPropertySymbols === 'function') {\r\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\r\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\r\n      }));\r\n    }\r\n\r\n    ownKeys.forEach(function (key) {\r\n      _defineProperty(target, key, source[key]);\r\n    });\r\n  }\r\n\r\n  return target;\r\n}\r\n// CONCATENATED MODULE: ./src/shared/constants.js\r\nvar DEFAULT_CALLBACKS = {\r\n  onStart: function onStart() {},\r\n  onPreviousStep: function onPreviousStep(currentStep) {},\r\n  onNextStep: function onNextStep(currentStep) {},\r\n  onStop: function onStop() {}\r\n};\r\nvar DEFAULT_OPTIONS = {\r\n  useKeyboardNavigation: true,\r\n  startTimeout: 0,\r\n  labels: {\r\n    buttonSkip: 'Skip tour',\r\n    buttonPrevious: 'Previous',\r\n    buttonNext: 'Next',\r\n    buttonStop: 'Finish'\r\n  }\r\n};\r\nvar DEFAULT_STEP_OPTIONS = {\r\n  placement: 'bottom',\r\n  enableScrolling: true,\r\n  modifiers: {\r\n    arrow: {\r\n      element: '.v-step__arrow'\r\n    }\r\n  }\r\n};\r\nvar KEYS = {\r\n  ARROW_RIGHT: 39,\r\n  ARROW_LEFT: 37,\r\n  ESCAPE: 27\r\n};\r\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/VTour.vue?vue&type=script&lang=js&\r\n\r\n\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n\r\n/* harmony default export */ var VTourvue_type_script_lang_js_ = ({\r\n  name: 'v-tour',\r\n  props: {\r\n    steps: {\r\n      type: Array,\r\n      default: function _default() {\r\n        return [];\r\n      }\r\n    },\r\n    name: {\r\n      type: String\r\n    },\r\n    options: {\r\n      type: Object,\r\n      default: function _default() {\r\n        return DEFAULT_OPTIONS;\r\n      }\r\n    },\r\n    callbacks: {\r\n      type: Object,\r\n      default: function _default() {\r\n        return DEFAULT_CALLBACKS;\r\n      }\r\n    }\r\n  },\r\n  data: function data() {\r\n    return {\r\n      currentStep: -1\r\n    };\r\n  },\r\n  mounted: function mounted() {\r\n    this.$tours[this.name] = this;\r\n\r\n    if (this.customOptions.useKeyboardNavigation) {\r\n      window.addEventListener('keyup', this.handleKeyup);\r\n    }\r\n  },\r\n  beforeDestroy: function beforeDestroy() {\r\n    // Remove the keyup listener if it has been defined\r\n    if (this.customOptions.useKeyboardNavigation) {\r\n      window.removeEventListener('keyup', this.handleKeyup);\r\n    }\r\n  },\r\n  computed: {\r\n    // Allow us to define custom options and merge them with the default options.\r\n    // Since options is a computed property, it is reactive and can be updated during runtime.\r\n    customOptions: function customOptions() {\r\n      return _objectSpread({}, DEFAULT_OPTIONS, this.options);\r\n    },\r\n    customCallbacks: function customCallbacks() {\r\n      return _objectSpread({}, DEFAULT_CALLBACKS, this.callbacks);\r\n    },\r\n    // Return true if the tour is active, which means that there's a VStep displayed\r\n    isRunning: function isRunning() {\r\n      return this.currentStep > -1 && this.currentStep < this.numberOfSteps;\r\n    },\r\n    isFirst: function isFirst() {\r\n      return this.currentStep === 0;\r\n    },\r\n    isLast: function isLast() {\r\n      return this.currentStep === this.steps.length - 1;\r\n    },\r\n    numberOfSteps: function numberOfSteps() {\r\n      return this.steps.length;\r\n    }\r\n  },\r\n  methods: {\r\n    start: function start(startStep) {\r\n      var _this = this;\r\n\r\n      // Wait for the DOM to be loaded, then start the tour\r\n      setTimeout(function () {\r\n        _this.customCallbacks.onStart();\r\n\r\n        _this.currentStep = typeof startStep !== 'undefined' ? parseInt(startStep, 10) : 0;\r\n      }, this.customOptions.startTimeout);\r\n    },\r\n    previousStep: function previousStep() {\r\n      if (this.currentStep > 0) {\r\n        this.customCallbacks.onPreviousStep(this.currentStep);\r\n        this.currentStep--;\r\n      }\r\n    },\r\n    nextStep: function nextStep() {\r\n      if (this.currentStep < this.numberOfSteps - 1 && this.currentStep !== -1) {\r\n        this.customCallbacks.onNextStep(this.currentStep);\r\n        this.currentStep++;\r\n      }\r\n    },\r\n    stop: function stop() {\r\n      this.customCallbacks.onStop();\r\n      this.currentStep = -1;\r\n    },\r\n    handleKeyup: function handleKeyup(e) {\r\n      // TODO: debug mode\r\n      // console.log('[Vue Tour] A keyup event occured:', e)\r\n      switch (e.keyCode) {\r\n        case KEYS.ARROW_RIGHT:\r\n          this.nextStep();\r\n          break;\r\n\r\n        case KEYS.ARROW_LEFT:\r\n          this.previousStep();\r\n          break;\r\n\r\n        case KEYS.ESCAPE:\r\n          this.stop();\r\n          break;\r\n      }\r\n    }\r\n  }\r\n});\r\n// CONCATENATED MODULE: ./src/components/VTour.vue?vue&type=script&lang=js&\r\n /* harmony default export */ var components_VTourvue_type_script_lang_js_ = (VTourvue_type_script_lang_js_); \r\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\r\n/* globals __VUE_SSR_CONTEXT__ */\r\n\r\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\r\n// This module is a runtime utility for cleaner component module output and will\r\n// be included in the final webpack user bundle.\r\n\r\nfunction normalizeComponent (\r\n  scriptExports,\r\n  render,\r\n  staticRenderFns,\r\n  functionalTemplate,\r\n  injectStyles,\r\n  scopeId,\r\n  moduleIdentifier, /* server only */\r\n  shadowMode /* vue-cli only */\r\n) {\r\n  // Vue.extend constructor export interop\r\n  var options = typeof scriptExports === 'function'\r\n    ? scriptExports.options\r\n    : scriptExports\r\n\r\n  // render functions\r\n  if (render) {\r\n    options.render = render\r\n    options.staticRenderFns = staticRenderFns\r\n    options._compiled = true\r\n  }\r\n\r\n  // functional template\r\n  if (functionalTemplate) {\r\n    options.functional = true\r\n  }\r\n\r\n  // scopedId\r\n  if (scopeId) {\r\n    options._scopeId = 'data-v-' + scopeId\r\n  }\r\n\r\n  var hook\r\n  if (moduleIdentifier) { // server build\r\n    hook = function (context) {\r\n      // 2.3 injection\r\n      context =\r\n        context || // cached call\r\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\r\n      // 2.2 with runInNewContext: true\r\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n        context = __VUE_SSR_CONTEXT__\r\n      }\r\n      // inject component styles\r\n      if (injectStyles) {\r\n        injectStyles.call(this, context)\r\n      }\r\n      // register component module identifier for async chunk inferrence\r\n      if (context && context._registeredComponents) {\r\n        context._registeredComponents.add(moduleIdentifier)\r\n      }\r\n    }\r\n    // used by ssr in case component is cached and beforeCreate\r\n    // never gets called\r\n    options._ssrRegister = hook\r\n  } else if (injectStyles) {\r\n    hook = shadowMode\r\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\r\n      : injectStyles\r\n  }\r\n\r\n  if (hook) {\r\n    if (options.functional) {\r\n      // for template-only hot-reload because in that case the render fn doesn't\r\n      // go through the normalizer\r\n      options._injectStyles = hook\r\n      // register for functioal component in vue file\r\n      var originalRender = options.render\r\n      options.render = function renderWithStyleInjection (h, context) {\r\n        hook.call(context)\r\n        return originalRender(h, context)\r\n      }\r\n    } else {\r\n      // inject component registration as beforeCreate hook\r\n      var existing = options.beforeCreate\r\n      options.beforeCreate = existing\r\n        ? [].concat(existing, hook)\r\n        : [hook]\r\n    }\r\n  }\r\n\r\n  return {\r\n    exports: scriptExports,\r\n    options: options\r\n  }\r\n}\r\n\r\n// CONCATENATED MODULE: ./src/components/VTour.vue\r\n\r\n\r\n\r\n\r\n\r\n/* normalize component */\r\n\r\nvar component = normalizeComponent(\r\n  components_VTourvue_type_script_lang_js_,\r\n  render,\r\n  staticRenderFns,\r\n  false,\r\n  null,\r\n  null,\r\n  null\r\n  \r\n)\r\n\r\ncomponent.options.__file = \"VTour.vue\"\r\n/* harmony default export */ var VTour = (component.exports);\r\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules//.cache//vue-loader\",\"cacheIdentifier\":\"0595ba96-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/VStep.vue?vue&type=template&id=aa0cbe42&scoped=true&\r\nvar VStepvue_type_template_id_aa0cbe42_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:'v-step-' + _vm.hash,staticClass:\"v-step\",attrs:{\"id\":'v-step-' + _vm.hash}},[_vm._t(\"header\",[(_vm.step.header)?_c('div',{staticClass:\"v-step__header\"},[(_vm.step.header.title)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.step.header.title)}}):_vm._e()]):_vm._e()]),_vm._t(\"content\",[_c('div',{staticClass:\"v-step__content\"},[(_vm.step.content)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.step.content)}}):_c('div',[_vm._v(\"This is a demo step! The id of this step is \"+_vm._s(_vm.hash)+\" and it targets \"+_vm._s(_vm.step.target)+\".\")])])]),_vm._t(\"actions\",[_c('div',{staticClass:\"v-step__buttons\"},[(!_vm.isLast)?_c('button',{staticClass:\"v-step__button\",on:{\"click\":function($event){$event.preventDefault();return _vm.stop($event)}}},[_vm._v(_vm._s(_vm.labels.buttonSkip))]):_vm._e(),(!_vm.isFirst)?_c('button',{staticClass:\"v-step__button\",on:{\"click\":function($event){$event.preventDefault();return _vm.previousStep($event)}}},[_vm._v(_vm._s(_vm.labels.buttonPrevious))]):_vm._e(),(!_vm.isLast)?_c('button',{staticClass:\"v-step__button\",on:{\"click\":function($event){$event.preventDefault();return _vm.nextStep($event)}}},[_vm._v(_vm._s(_vm.labels.buttonNext))]):_vm._e(),(_vm.isLast)?_c('button',{staticClass:\"v-step__button\",on:{\"click\":function($event){$event.preventDefault();return _vm.stop($event)}}},[_vm._v(_vm._s(_vm.labels.buttonStop))]):_vm._e()])]),_c('div',{staticClass:\"v-step__arrow\",class:{ 'v-step__arrow--dark': _vm.step.header && _vm.step.header.title }})],2)}\r\nvar VStepvue_type_template_id_aa0cbe42_scoped_true_staticRenderFns = []\r\n\r\n\r\n// CONCATENATED MODULE: ./src/components/VStep.vue?vue&type=template&id=aa0cbe42&scoped=true&\r\n\r\n// EXTERNAL MODULE: ./node_modules/popper.js/dist/esm/popper.js\r\nvar popper = __webpack_require__(\"f0bd\");\r\n\r\n// CONCATENATED MODULE: ./node_modules/jump.js/dist/jump.module.js\r\n// Robert Penner's easeInOutQuad\r\n\r\n// find the rest of his easing functions here: http://robertpenner.com/easing/\r\n// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\r\n\r\nvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\r\n  t /= d / 2;\r\n  if (t < 1) return c / 2 * t * t + b;\r\n  t--;\r\n  return -c / 2 * (t * (t - 2) - 1) + b;\r\n};\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\r\n  return typeof obj;\r\n} : function (obj) {\r\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\r\n};\r\n\r\nvar jumper = function jumper() {\r\n  // private variable cache\r\n  // no variables are created during a jump, preventing memory leaks\r\n\r\n  var element = void 0; // element to scroll to                   (node)\r\n\r\n  var start = void 0; // where scroll starts                    (px)\r\n  var stop = void 0; // where scroll stops                     (px)\r\n\r\n  var offset = void 0; // adjustment from the stop position      (px)\r\n  var easing = void 0; // easing function                        (function)\r\n  var a11y = void 0; // accessibility support flag             (boolean)\r\n\r\n  var distance = void 0; // distance of scroll                     (px)\r\n  var duration = void 0; // scroll duration                        (ms)\r\n\r\n  var timeStart = void 0; // time scroll started                    (ms)\r\n  var timeElapsed = void 0; // time spent scrolling thus far          (ms)\r\n\r\n  var next = void 0; // next scroll position                   (px)\r\n\r\n  var callback = void 0; // to call when done scrolling            (function)\r\n\r\n  // scroll position helper\r\n\r\n  function location() {\r\n    return window.scrollY || window.pageYOffset;\r\n  }\r\n\r\n  // element offset helper\r\n\r\n  function top(element) {\r\n    return element.getBoundingClientRect().top + start;\r\n  }\r\n\r\n  // rAF loop helper\r\n\r\n  function loop(timeCurrent) {\r\n    // store time scroll started, if not started already\r\n    if (!timeStart) {\r\n      timeStart = timeCurrent;\r\n    }\r\n\r\n    // determine time spent scrolling so far\r\n    timeElapsed = timeCurrent - timeStart;\r\n\r\n    // calculate next scroll position\r\n    next = easing(timeElapsed, start, distance, duration);\r\n\r\n    // scroll to it\r\n    window.scrollTo(0, next);\r\n\r\n    // check progress\r\n    timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop\r\n    : done(); // scrolling is done\r\n  }\r\n\r\n  // scroll finished helper\r\n\r\n  function done() {\r\n    // account for rAF time rounding inaccuracies\r\n    window.scrollTo(0, start + distance);\r\n\r\n    // if scrolling to an element, and accessibility is enabled\r\n    if (element && a11y) {\r\n      // add tabindex indicating programmatic focus\r\n      element.setAttribute('tabindex', '-1');\r\n\r\n      // focus the element\r\n      element.focus();\r\n    }\r\n\r\n    // if it exists, fire the callback\r\n    if (typeof callback === 'function') {\r\n      callback();\r\n    }\r\n\r\n    // reset time for next jump\r\n    timeStart = false;\r\n  }\r\n\r\n  // API\r\n\r\n  function jump(target) {\r\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n\r\n    // resolve options, or use defaults\r\n    duration = options.duration || 1000;\r\n    offset = options.offset || 0;\r\n    callback = options.callback; // \"undefined\" is a suitable default, and won't be called\r\n    easing = options.easing || easeInOutQuad;\r\n    a11y = options.a11y || false;\r\n\r\n    // cache starting position\r\n    start = location();\r\n\r\n    // resolve target\r\n    switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\r\n      // scroll from current position\r\n      case 'number':\r\n        element = undefined; // no element to scroll to\r\n        a11y = false; // make sure accessibility is off\r\n        stop = start + target;\r\n        break;\r\n\r\n      // scroll to element (node)\r\n      // bounding rect is relative to the viewport\r\n      case 'object':\r\n        element = target;\r\n        stop = top(element);\r\n        break;\r\n\r\n      // scroll to element (selector)\r\n      // bounding rect is relative to the viewport\r\n      case 'string':\r\n        element = document.querySelector(target);\r\n        stop = top(element);\r\n        break;\r\n    }\r\n\r\n    // resolve scroll distance, accounting for offset\r\n    distance = stop - start + offset;\r\n\r\n    // resolve duration\r\n    switch (_typeof(options.duration)) {\r\n      // number in ms\r\n      case 'number':\r\n        duration = options.duration;\r\n        break;\r\n\r\n      // function passed the distance of the scroll\r\n      case 'function':\r\n        duration = options.duration(distance);\r\n        break;\r\n    }\r\n\r\n    // start the loop\r\n    window.requestAnimationFrame(loop);\r\n  }\r\n\r\n  // expose only the jump method\r\n  return jump;\r\n};\r\n\r\n// export singleton\r\n\r\nvar singleton = jumper();\r\n\r\n/* harmony default export */ var jump_module = (singleton);\r\n\r\n// EXTERNAL MODULE: ./node_modules/hash-sum/hash-sum.js\r\nvar hash_sum = __webpack_require__(\"8634\");\r\nvar hash_sum_default = /*#__PURE__*/__webpack_require__.n(hash_sum);\r\n\r\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/VStep.vue?vue&type=script&lang=js&\r\n\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n\r\n\r\n\r\n\r\n/* harmony default export */ var VStepvue_type_script_lang_js_ = ({\r\n  name: 'v-step',\r\n  props: {\r\n    step: {\r\n      type: Object\r\n    },\r\n    previousStep: {\r\n      type: Function\r\n    },\r\n    nextStep: {\r\n      type: Function\r\n    },\r\n    stop: {\r\n      type: Function\r\n    },\r\n    isFirst: {\r\n      type: Boolean\r\n    },\r\n    isLast: {\r\n      type: Boolean\r\n    },\r\n    labels: {\r\n      type: Object\r\n    }\r\n  },\r\n  data: function data() {\r\n    return {\r\n      hash: hash_sum_default()(this.step.target)\r\n    };\r\n  },\r\n  computed: {\r\n    params: function params() {\r\n      return _objectSpread({}, DEFAULT_STEP_OPTIONS, this.step.params);\r\n    }\r\n  },\r\n  methods: {\r\n    createStep: function createStep() {\r\n      var targetElement = document.querySelector(this.step.target); // TODO: debug mode\r\n      // console.log('[Vue Tour] The target element ' + this.step.target + ' of .v-step[id=\"' + this.hash + '\"] is:', targetElement)\r\n\r\n      if (targetElement) {\r\n        if (this.params.enableScrolling) {\r\n          if (this.step.duration || this.step.offset) {\r\n            var jumpOptions = {\r\n              duration: this.step.duration || 1000,\r\n              offset: this.step.offset || 0,\r\n              callback: undefined,\r\n              a11y: false\r\n            };\r\n            jump_module(targetElement, jumpOptions);\r\n          } else {\r\n            // Use the native scroll by default if no scroll options has been defined\r\n            targetElement.scrollIntoView({\r\n              behavior: 'smooth'\r\n            });\r\n          }\r\n        }\r\n        /* eslint-disable no-new */\r\n\r\n\r\n        new popper[\"a\" /* default */](targetElement, this.$refs['v-step-' + this.hash], this.params);\r\n      } else {\r\n        console.error('[Vue Tour] The target element ' + this.step.target + ' of .v-step[id=\"' + this.hash + '\"] does not exist!');\r\n        this.$emit('targetNotFound', this.step);\r\n      }\r\n    }\r\n  },\r\n  mounted: function mounted() {\r\n    this.createStep();\r\n  }\r\n});\r\n// CONCATENATED MODULE: ./src/components/VStep.vue?vue&type=script&lang=js&\r\n /* harmony default export */ var components_VStepvue_type_script_lang_js_ = (VStepvue_type_script_lang_js_); \r\n// EXTERNAL MODULE: ./src/components/VStep.vue?vue&type=style&index=0&id=aa0cbe42&lang=scss&scoped=true&\r\nvar VStepvue_type_style_index_0_id_aa0cbe42_lang_scss_scoped_true_ = __webpack_require__(\"5b1b\");\r\n\r\n// CONCATENATED MODULE: ./src/components/VStep.vue\r\n\r\n\r\n\r\n\r\n\r\n\r\n/* normalize component */\r\n\r\nvar VStep_component = normalizeComponent(\r\n  components_VStepvue_type_script_lang_js_,\r\n  VStepvue_type_template_id_aa0cbe42_scoped_true_render,\r\n  VStepvue_type_template_id_aa0cbe42_scoped_true_staticRenderFns,\r\n  false,\r\n  null,\r\n  \"aa0cbe42\",\r\n  null\r\n  \r\n)\r\n\r\nVStep_component.options.__file = \"VStep.vue\"\r\n/* harmony default export */ var VStep = (VStep_component.exports);\r\n// CONCATENATED MODULE: ./src/main.js\r\n\r\n\r\n\r\nvar VueTour = {\r\n  install: function install(Vue, options) {\r\n    Vue.component(VTour.name, VTour);\r\n    Vue.component(VStep.name, VStep); // Object containing Tour objects (see VTour.vue) where the tour name is used as key\r\n\r\n    Vue.prototype.$tours = {};\r\n  }\r\n};\r\n/* harmony default export */ var main = (VueTour);\r\n\r\nif (typeof window !== 'undefined' && window.Vue) {\r\n  window.Vue.use(VueTour);\r\n}\r\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\r\n\r\n\r\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (main);\r\n\r\n\r\n\r\n/***/ })\r\n\r\n/******/ });\r\n});\r\n//# sourceMappingURL=vue-tour.umd.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXRvdXIvZGlzdC92dWUtdG91ci51bWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXRvdXIvZGlzdC92dWUtdG91ci51bWQuanM/MjUzNiJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xyXG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JylcclxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xyXG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxyXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcclxuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JylcclxuXHRcdGV4cG9ydHNbXCJ2dWUtdG91clwiXSA9IGZhY3RvcnkoKTtcclxuXHRlbHNlXHJcblx0XHRyb290W1widnVlLXRvdXJcIl0gPSBmYWN0b3J5KCk7XHJcbn0pKCh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcyksIGZ1bmN0aW9uKCkge1xyXG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxyXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcclxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xyXG4vKioqKioqL1xyXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXHJcbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xyXG4vKioqKioqL1xyXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXHJcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xyXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcclxuLyoqKioqKi8gXHRcdH1cclxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXHJcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XHJcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxyXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcclxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cclxuLyoqKioqKi8gXHRcdH07XHJcbi8qKioqKiovXHJcbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cclxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xyXG4vKioqKioqL1xyXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxyXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xyXG4vKioqKioqL1xyXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcclxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcclxuLyoqKioqKi8gXHR9XHJcbi8qKioqKiovXHJcbi8qKioqKiovXHJcbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcclxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xyXG4vKioqKioqL1xyXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXHJcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcclxuLyoqKioqKi9cclxuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcclxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcclxuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcclxuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XHJcbi8qKioqKiovIFx0XHR9XHJcbi8qKioqKiovIFx0fTtcclxuLyoqKioqKi9cclxuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXHJcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xyXG4vKioqKioqLyBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XHJcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xyXG4vKioqKioqLyBcdFx0fVxyXG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuLyoqKioqKi8gXHR9O1xyXG4vKioqKioqL1xyXG4vKioqKioqLyBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxyXG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxyXG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xyXG4vKioqKioqLyBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxyXG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcclxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xyXG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XHJcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xyXG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcclxuLyoqKioqKi8gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xyXG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xyXG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xyXG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xyXG4vKioqKioqLyBcdH07XHJcbi8qKioqKiovXHJcbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcclxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcclxuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xyXG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxyXG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xyXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xyXG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcclxuLyoqKioqKi8gXHR9O1xyXG4vKioqKioqL1xyXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxyXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcclxuLyoqKioqKi9cclxuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xyXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XHJcbi8qKioqKiovXHJcbi8qKioqKiovXHJcbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXHJcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCJmYjE1XCIpO1xyXG4vKioqKioqLyB9KVxyXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4vKioqKioqLyAoe1xyXG5cclxuLyoqKi8gXCIxZWIyXCI6XHJcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcclxuXHJcbi8vIFRoaXMgZmlsZSBpcyBpbXBvcnRlZCBpbnRvIGxpYi93YyBjbGllbnQgYnVuZGxlcy5cclxuXHJcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gIHZhciBpXHJcbiAgaWYgKChpID0gd2luZG93LmRvY3VtZW50LmN1cnJlbnRTY3JpcHQpICYmIChpID0gaS5zcmMubWF0Y2goLyguK1xcLylbXi9dK1xcLmpzJC8pKSkge1xyXG4gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gaVsxXSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqKi8gfSksXHJcblxyXG4vKioqLyBcIjIzMGVcIjpcclxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xyXG5cclxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQzZjRcIik7XHJcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3NzI2XCIpLmRvY3VtZW50O1xyXG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcclxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xyXG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XHJcbn07XHJcblxyXG5cclxuLyoqKi8gfSksXHJcblxyXG4vKioqLyBcIjViMWJcIjpcclxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xyXG5cclxuXCJ1c2Ugc3RyaWN0XCI7XHJcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfbm9kZV9tb2R1bGVzX21pbmlfY3NzX2V4dHJhY3RfcGx1Z2luX2Rpc3RfbG9hZGVyX2pzX3JlZl84X29uZU9mXzFfMF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9pbmRleF9qc19yZWZfOF9vbmVPZl8xXzFfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2xvYWRlcnNfc3R5bGVQb3N0TG9hZGVyX2pzX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9saWJfaW5kZXhfanNfcmVmXzhfb25lT2ZfMV8yX25vZGVfbW9kdWxlc19zYXNzX2xvYWRlcl9saWJfbG9hZGVyX2pzX3JlZl84X29uZU9mXzFfM19ub2RlX21vZHVsZXNfY2FjaGVfbG9hZGVyX2Rpc3RfY2pzX2pzX3JlZl8wXzBfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2luZGV4X2pzX3Z1ZV9sb2FkZXJfb3B0aW9uc19WU3RlcF92dWVfdnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9pZF9hYTBjYmU0Ml9sYW5nX3Njc3Nfc2NvcGVkX3RydWVfX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYWUwN1wiKTtcclxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ub2RlX21vZHVsZXNfbWluaV9jc3NfZXh0cmFjdF9wbHVnaW5fZGlzdF9sb2FkZXJfanNfcmVmXzhfb25lT2ZfMV8wX25vZGVfbW9kdWxlc19jc3NfbG9hZGVyX2luZGV4X2pzX3JlZl84X29uZU9mXzFfMV9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfbG9hZGVyc19zdHlsZVBvc3RMb2FkZXJfanNfbm9kZV9tb2R1bGVzX3Bvc3Rjc3NfbG9hZGVyX2xpYl9pbmRleF9qc19yZWZfOF9vbmVPZl8xXzJfbm9kZV9tb2R1bGVzX3Nhc3NfbG9hZGVyX2xpYl9sb2FkZXJfanNfcmVmXzhfb25lT2ZfMV8zX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfaW5kZXhfanNfdnVlX2xvYWRlcl9vcHRpb25zX1ZTdGVwX3Z1ZV92dWVfdHlwZV9zdHlsZV9pbmRleF8wX2lkX2FhMGNiZTQyX2xhbmdfc2Nzc19zY29wZWRfdHJ1ZV9fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihfbm9kZV9tb2R1bGVzX21pbmlfY3NzX2V4dHJhY3RfcGx1Z2luX2Rpc3RfbG9hZGVyX2pzX3JlZl84X29uZU9mXzFfMF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9pbmRleF9qc19yZWZfOF9vbmVPZl8xXzFfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2xvYWRlcnNfc3R5bGVQb3N0TG9hZGVyX2pzX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9saWJfaW5kZXhfanNfcmVmXzhfb25lT2ZfMV8yX25vZGVfbW9kdWxlc19zYXNzX2xvYWRlcl9saWJfbG9hZGVyX2pzX3JlZl84X29uZU9mXzFfM19ub2RlX21vZHVsZXNfY2FjaGVfbG9hZGVyX2Rpc3RfY2pzX2pzX3JlZl8wXzBfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2luZGV4X2pzX3Z1ZV9sb2FkZXJfb3B0aW9uc19WU3RlcF92dWVfdnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9pZF9hYTBjYmU0Ml9sYW5nX3Njc3Nfc2NvcGVkX3RydWVfX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18pO1xyXG4vKiB1bnVzZWQgaGFybW9ueSByZWV4cG9ydCAqICovXHJcbiAvKiB1bnVzZWQgaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgX3VudXNlZF93ZWJwYWNrX2RlZmF1bHRfZXhwb3J0ID0gKF9ub2RlX21vZHVsZXNfbWluaV9jc3NfZXh0cmFjdF9wbHVnaW5fZGlzdF9sb2FkZXJfanNfcmVmXzhfb25lT2ZfMV8wX25vZGVfbW9kdWxlc19jc3NfbG9hZGVyX2luZGV4X2pzX3JlZl84X29uZU9mXzFfMV9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfbG9hZGVyc19zdHlsZVBvc3RMb2FkZXJfanNfbm9kZV9tb2R1bGVzX3Bvc3Rjc3NfbG9hZGVyX2xpYl9pbmRleF9qc19yZWZfOF9vbmVPZl8xXzJfbm9kZV9tb2R1bGVzX3Nhc3NfbG9hZGVyX2xpYl9sb2FkZXJfanNfcmVmXzhfb25lT2ZfMV8zX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfaW5kZXhfanNfdnVlX2xvYWRlcl9vcHRpb25zX1ZTdGVwX3Z1ZV92dWVfdHlwZV9zdHlsZV9pbmRleF8wX2lkX2FhMGNiZTQyX2xhbmdfc2Nzc19zY29wZWRfdHJ1ZV9fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0LmEpOyBcclxuXHJcbi8qKiovIH0pLFxyXG5cclxuLyoqKi8gXCI2YTk5XCI6XHJcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcclxuXHJcbi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxyXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDNmNFwiKTtcclxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2VcclxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcclxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xyXG4gIHZhciBmbiwgdmFsO1xyXG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xyXG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xyXG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcclxuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XHJcbn07XHJcblxyXG5cclxuLyoqKi8gfSksXHJcblxyXG4vKioqLyBcIjc3MjZcIjpcclxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xyXG5cclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcclxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXHJcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcclxuICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XHJcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcclxuXHJcblxyXG4vKioqLyB9KSxcclxuXHJcbi8qKiovIFwiNzllNVwiOlxyXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiAhIWV4ZWMoKTtcclxuICB9IGNhdGNoIChlKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn07XHJcblxyXG5cclxuLyoqKi8gfSksXHJcblxyXG4vKioqLyBcIjdmN2ZcIjpcclxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xyXG5cclxudmFyIGRQID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2Y2NcIikuZjtcclxudmFyIEZQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcclxudmFyIG5hbWVSRSA9IC9eXFxzKmZ1bmN0aW9uIChbXiAoXSopLztcclxudmFyIE5BTUUgPSAnbmFtZSc7XHJcblxyXG4vLyAxOS4yLjQuMiBuYW1lXHJcbk5BTUUgaW4gRlByb3RvIHx8IF9fd2VicGFja19yZXF1aXJlX18oXCI5ZTFlXCIpICYmIGRQKEZQcm90bywgTkFNRSwge1xyXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiAoJycgKyB0aGlzKS5tYXRjaChuYW1lUkUpWzFdO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG59KTtcclxuXHJcblxyXG4vKioqLyB9KSxcclxuXHJcbi8qKiovIFwiODYzNFwiOlxyXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XHJcblxyXG5cInVzZSBzdHJpY3RcIjtcclxuXHJcblxyXG5mdW5jdGlvbiBwYWQgKGhhc2gsIGxlbikge1xyXG4gIHdoaWxlIChoYXNoLmxlbmd0aCA8IGxlbikge1xyXG4gICAgaGFzaCA9ICcwJyArIGhhc2g7XHJcbiAgfVxyXG4gIHJldHVybiBoYXNoO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmb2xkIChoYXNoLCB0ZXh0KSB7XHJcbiAgdmFyIGk7XHJcbiAgdmFyIGNocjtcclxuICB2YXIgbGVuO1xyXG4gIGlmICh0ZXh0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgcmV0dXJuIGhhc2g7XHJcbiAgfVxyXG4gIGZvciAoaSA9IDAsIGxlbiA9IHRleHQubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgIGNociA9IHRleHQuY2hhckNvZGVBdChpKTtcclxuICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIGNocjtcclxuICAgIGhhc2ggfD0gMDtcclxuICB9XHJcbiAgcmV0dXJuIGhhc2ggPCAwID8gaGFzaCAqIC0yIDogaGFzaDtcclxufVxyXG5cclxuZnVuY3Rpb24gZm9sZE9iamVjdCAoaGFzaCwgbywgc2Vlbikge1xyXG4gIHJldHVybiBPYmplY3Qua2V5cyhvKS5zb3J0KCkucmVkdWNlKGZvbGRLZXksIGhhc2gpO1xyXG4gIGZ1bmN0aW9uIGZvbGRLZXkgKGhhc2gsIGtleSkge1xyXG4gICAgcmV0dXJuIGZvbGRWYWx1ZShoYXNoLCBvW2tleV0sIGtleSwgc2Vlbik7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBmb2xkVmFsdWUgKGlucHV0LCB2YWx1ZSwga2V5LCBzZWVuKSB7XHJcbiAgdmFyIGhhc2ggPSBmb2xkKGZvbGQoZm9sZChpbnB1dCwga2V5KSwgdG9TdHJpbmcodmFsdWUpKSwgdHlwZW9mIHZhbHVlKTtcclxuICBpZiAodmFsdWUgPT09IG51bGwpIHtcclxuICAgIHJldHVybiBmb2xkKGhhc2gsICdudWxsJyk7XHJcbiAgfVxyXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICByZXR1cm4gZm9sZChoYXNoLCAndW5kZWZpbmVkJyk7XHJcbiAgfVxyXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICBpZiAoc2Vlbi5pbmRleE9mKHZhbHVlKSAhPT0gLTEpIHtcclxuICAgICAgcmV0dXJuIGZvbGQoaGFzaCwgJ1tDaXJjdWxhcl0nICsga2V5KTtcclxuICAgIH1cclxuICAgIHNlZW4ucHVzaCh2YWx1ZSk7XHJcbiAgICByZXR1cm4gZm9sZE9iamVjdChoYXNoLCB2YWx1ZSwgc2Vlbik7XHJcbiAgfVxyXG4gIHJldHVybiBmb2xkKGhhc2gsIHZhbHVlLnRvU3RyaW5nKCkpO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b1N0cmluZyAobykge1xyXG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN1bSAobykge1xyXG4gIHJldHVybiBwYWQoZm9sZFZhbHVlKDAsIG8sICcnLCBbXSkudG9TdHJpbmcoMTYpLCA4KTtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBzdW07XHJcblxyXG5cclxuLyoqKi8gfSksXHJcblxyXG4vKioqLyBcIjg2Y2NcIjpcclxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xyXG5cclxudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImNiN2NcIik7XHJcbnZhciBJRThfRE9NX0RFRklORSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjNjlhXCIpO1xyXG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmE5OVwiKTtcclxudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xyXG5cclxuZXhwb3J0cy5mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjllMWVcIikgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XHJcbiAgYW5PYmplY3QoTyk7XHJcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xyXG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xyXG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcclxuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcclxuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cclxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xyXG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xyXG4gIHJldHVybiBPO1xyXG59O1xyXG5cclxuXHJcbi8qKiovIH0pLFxyXG5cclxuLyoqKi8gXCI5ZTFlXCI6XHJcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcclxuXHJcbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcclxubW9kdWxlLmV4cG9ydHMgPSAhX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc5ZTVcIikoZnVuY3Rpb24gKCkge1xyXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xyXG59KTtcclxuXHJcblxyXG4vKioqLyB9KSxcclxuXHJcbi8qKiovIFwiYWUwN1wiOlxyXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XHJcblxyXG4vLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cclxuXHJcbi8qKiovIH0pLFxyXG5cclxuLyoqKi8gXCJjNjlhXCI6XHJcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oXCI5ZTFlXCIpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzllNVwiKShmdW5jdGlvbiAoKSB7XHJcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjMwZVwiKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xyXG59KTtcclxuXHJcblxyXG4vKioqLyB9KSxcclxuXHJcbi8qKiovIFwiYzhiYVwiOlxyXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XHJcblxyXG52YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSwgZXZhbCkoXCJ0aGlzXCIpO1xyXG59IGNhdGNoIChlKSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcclxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcclxufVxyXG5cclxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxyXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xyXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGc7XHJcblxyXG5cclxuLyoqKi8gfSksXHJcblxyXG4vKioqLyBcImNiN2NcIjpcclxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xyXG5cclxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQzZjRcIik7XHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XHJcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcclxuICByZXR1cm4gaXQ7XHJcbn07XHJcblxyXG5cclxuLyoqKi8gfSksXHJcblxyXG4vKioqLyBcImQzZjRcIjpcclxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcclxuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xyXG59O1xyXG5cclxuXHJcbi8qKiovIH0pLFxyXG5cclxuLyoqKi8gXCJmMGJkXCI6XHJcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcclxuXHJcblwidXNlIHN0cmljdFwiO1xyXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7LyoqIVxyXG4gKiBAZmlsZU92ZXJ2aWV3IEtpY2thc3MgbGlicmFyeSB0byBjcmVhdGUgYW5kIHBsYWNlIHBvcHBlcnMgbmVhciB0aGVpciByZWZlcmVuY2UgZWxlbWVudHMuXHJcbiAqIEB2ZXJzaW9uIDEuMTQuNFxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgRmVkZXJpY28gWml2b2xvIGFuZCBjb250cmlidXRvcnNcclxuICpcclxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxyXG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXHJcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcclxuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxyXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcclxuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcclxuICpcclxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXHJcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXHJcbiAqXHJcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcclxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXHJcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxyXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXHJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXHJcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXHJcbiAqIFNPRlRXQVJFLlxyXG4gKi9cclxudmFyIGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCc7XHJcblxyXG52YXIgbG9uZ2VyVGltZW91dEJyb3dzZXJzID0gWydFZGdlJywgJ1RyaWRlbnQnLCAnRmlyZWZveCddO1xyXG52YXIgdGltZW91dER1cmF0aW9uID0gMDtcclxuZm9yICh2YXIgaSA9IDA7IGkgPCBsb25nZXJUaW1lb3V0QnJvd3NlcnMubGVuZ3RoOyBpICs9IDEpIHtcclxuICBpZiAoaXNCcm93c2VyICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihsb25nZXJUaW1lb3V0QnJvd3NlcnNbaV0pID49IDApIHtcclxuICAgIHRpbWVvdXREdXJhdGlvbiA9IDE7XHJcbiAgICBicmVhaztcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1pY3JvdGFza0RlYm91bmNlKGZuKSB7XHJcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xyXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoY2FsbGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNhbGxlZCA9IHRydWU7XHJcbiAgICB3aW5kb3cuUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGNhbGxlZCA9IGZhbHNlO1xyXG4gICAgICBmbigpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gdGFza0RlYm91bmNlKGZuKSB7XHJcbiAgdmFyIHNjaGVkdWxlZCA9IGZhbHNlO1xyXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoIXNjaGVkdWxlZCkge1xyXG4gICAgICBzY2hlZHVsZWQgPSB0cnVlO1xyXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBzY2hlZHVsZWQgPSBmYWxzZTtcclxuICAgICAgICBmbigpO1xyXG4gICAgICB9LCB0aW1lb3V0RHVyYXRpb24pO1xyXG4gICAgfVxyXG4gIH07XHJcbn1cclxuXHJcbnZhciBzdXBwb3J0c01pY3JvVGFza3MgPSBpc0Jyb3dzZXIgJiYgd2luZG93LlByb21pc2U7XHJcblxyXG4vKipcclxuKiBDcmVhdGUgYSBkZWJvdW5jZWQgdmVyc2lvbiBvZiBhIG1ldGhvZCwgdGhhdCdzIGFzeW5jaHJvbm91c2x5IGRlZmVycmVkXHJcbiogYnV0IGNhbGxlZCBpbiB0aGUgbWluaW11bSB0aW1lIHBvc3NpYmxlLlxyXG4qXHJcbiogQG1ldGhvZFxyXG4qIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcclxuKiBAYXJndW1lbnQge0Z1bmN0aW9ufSBmblxyXG4qIEByZXR1cm5zIHtGdW5jdGlvbn1cclxuKi9cclxudmFyIGRlYm91bmNlID0gc3VwcG9ydHNNaWNyb1Rhc2tzID8gbWljcm90YXNrRGVib3VuY2UgOiB0YXNrRGVib3VuY2U7XHJcblxyXG4vKipcclxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHZhcmlhYmxlIGlzIGEgZnVuY3Rpb25cclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7QW55fSBmdW5jdGlvblRvQ2hlY2sgLSB2YXJpYWJsZSB0byBjaGVja1xyXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gYW5zd2VyIHRvOiBpcyBhIGZ1bmN0aW9uP1xyXG4gKi9cclxuZnVuY3Rpb24gaXNGdW5jdGlvbihmdW5jdGlvblRvQ2hlY2spIHtcclxuICB2YXIgZ2V0VHlwZSA9IHt9O1xyXG4gIHJldHVybiBmdW5jdGlvblRvQ2hlY2sgJiYgZ2V0VHlwZS50b1N0cmluZy5jYWxsKGZ1bmN0aW9uVG9DaGVjaykgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgQ1NTIGNvbXB1dGVkIHByb3BlcnR5IG9mIHRoZSBnaXZlbiBlbGVtZW50XHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAYXJndW1lbnQge0VlbWVudH0gZWxlbWVudFxyXG4gKiBAYXJndW1lbnQge1N0cmluZ30gcHJvcGVydHlcclxuICovXHJcbmZ1bmN0aW9uIGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSkge1xyXG4gIGlmIChlbGVtZW50Lm5vZGVUeXBlICE9PSAxKSB7XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG4gIC8vIE5PVEU6IDEgRE9NIGFjY2VzcyBoZXJlXHJcbiAgdmFyIGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCk7XHJcbiAgcmV0dXJuIHByb3BlcnR5ID8gY3NzW3Byb3BlcnR5XSA6IGNzcztcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIHBhcmVudE5vZGUgb3IgdGhlIGhvc3Qgb2YgdGhlIGVsZW1lbnRcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxyXG4gKiBAcmV0dXJucyB7RWxlbWVudH0gcGFyZW50XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcclxuICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0hUTUwnKSB7XHJcbiAgICByZXR1cm4gZWxlbWVudDtcclxuICB9XHJcbiAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSB8fCBlbGVtZW50Lmhvc3Q7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBzY3JvbGxpbmcgcGFyZW50IG9mIHRoZSBnaXZlbiBlbGVtZW50XHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnRcclxuICogQHJldHVybnMge0VsZW1lbnR9IHNjcm9sbCBwYXJlbnRcclxuICovXHJcbmZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChlbGVtZW50KSB7XHJcbiAgLy8gUmV0dXJuIGJvZHksIGBnZXRTY3JvbGxgIHdpbGwgdGFrZSBjYXJlIHRvIGdldCB0aGUgY29ycmVjdCBgc2Nyb2xsVG9wYCBmcm9tIGl0XHJcbiAgaWYgKCFlbGVtZW50KSB7XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcclxuICB9XHJcblxyXG4gIHN3aXRjaCAoZWxlbWVudC5ub2RlTmFtZSkge1xyXG4gICAgY2FzZSAnSFRNTCc6XHJcbiAgICBjYXNlICdCT0RZJzpcclxuICAgICAgcmV0dXJuIGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xyXG4gICAgY2FzZSAnI2RvY3VtZW50JzpcclxuICAgICAgcmV0dXJuIGVsZW1lbnQuYm9keTtcclxuICB9XHJcblxyXG4gIC8vIEZpcmVmb3ggd2FudCB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxyXG5cclxuICB2YXIgX2dldFN0eWxlQ29tcHV0ZWRQcm9wID0gZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KGVsZW1lbnQpLFxyXG4gICAgICBvdmVyZmxvdyA9IF9nZXRTdHlsZUNvbXB1dGVkUHJvcC5vdmVyZmxvdyxcclxuICAgICAgb3ZlcmZsb3dYID0gX2dldFN0eWxlQ29tcHV0ZWRQcm9wLm92ZXJmbG93WCxcclxuICAgICAgb3ZlcmZsb3dZID0gX2dldFN0eWxlQ29tcHV0ZWRQcm9wLm92ZXJmbG93WTtcclxuXHJcbiAgaWYgKC8oYXV0b3xzY3JvbGx8b3ZlcmxheSkvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpKSB7XHJcbiAgICByZXR1cm4gZWxlbWVudDtcclxuICB9XHJcblxyXG4gIHJldHVybiBnZXRTY3JvbGxQYXJlbnQoZ2V0UGFyZW50Tm9kZShlbGVtZW50KSk7XHJcbn1cclxuXHJcbnZhciBpc0lFMTEgPSBpc0Jyb3dzZXIgJiYgISEod2luZG93Lk1TSW5wdXRNZXRob2RDb250ZXh0ICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSk7XHJcbnZhciBpc0lFMTAgPSBpc0Jyb3dzZXIgJiYgL01TSUUgMTAvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lcyBpZiB0aGUgYnJvd3NlciBpcyBJbnRlcm5ldCBFeHBsb3JlclxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcclxuICogQHBhcmFtIHtOdW1iZXJ9IHZlcnNpb24gdG8gY2hlY2tcclxuICogQHJldHVybnMge0Jvb2xlYW59IGlzSUVcclxuICovXHJcbmZ1bmN0aW9uIGlzSUUodmVyc2lvbikge1xyXG4gIGlmICh2ZXJzaW9uID09PSAxMSkge1xyXG4gICAgcmV0dXJuIGlzSUUxMTtcclxuICB9XHJcbiAgaWYgKHZlcnNpb24gPT09IDEwKSB7XHJcbiAgICByZXR1cm4gaXNJRTEwO1xyXG4gIH1cclxuICByZXR1cm4gaXNJRTExIHx8IGlzSUUxMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIG9mZnNldCBwYXJlbnQgb2YgdGhlIGdpdmVuIGVsZW1lbnRcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxyXG4gKiBAcmV0dXJucyB7RWxlbWVudH0gb2Zmc2V0IHBhcmVudFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcclxuICBpZiAoIWVsZW1lbnQpIHtcclxuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICB2YXIgbm9PZmZzZXRQYXJlbnQgPSBpc0lFKDEwKSA/IGRvY3VtZW50LmJvZHkgOiBudWxsO1xyXG5cclxuICAvLyBOT1RFOiAxIERPTSBhY2Nlc3MgaGVyZVxyXG4gIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcclxuICAvLyBTa2lwIGhpZGRlbiBlbGVtZW50cyB3aGljaCBkb24ndCBoYXZlIGFuIG9mZnNldFBhcmVudFxyXG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgPT09IG5vT2Zmc2V0UGFyZW50ICYmIGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKSB7XHJcbiAgICBvZmZzZXRQYXJlbnQgPSAoZWxlbWVudCA9IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKS5vZmZzZXRQYXJlbnQ7XHJcbiAgfVxyXG5cclxuICB2YXIgbm9kZU5hbWUgPSBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0UGFyZW50Lm5vZGVOYW1lO1xyXG5cclxuICBpZiAoIW5vZGVOYW1lIHx8IG5vZGVOYW1lID09PSAnQk9EWScgfHwgbm9kZU5hbWUgPT09ICdIVE1MJykge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgLy8gLm9mZnNldFBhcmVudCB3aWxsIHJldHVybiB0aGUgY2xvc2VzdCBURCBvciBUQUJMRSBpbiBjYXNlXHJcbiAgLy8gbm8gb2Zmc2V0UGFyZW50IGlzIHByZXNlbnQsIEkgaGF0ZSB0aGlzIGpvYi4uLlxyXG4gIGlmIChbJ1REJywgJ1RBQkxFJ10uaW5kZXhPZihvZmZzZXRQYXJlbnQubm9kZU5hbWUpICE9PSAtMSAmJiBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkob2Zmc2V0UGFyZW50LCAncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycpIHtcclxuICAgIHJldHVybiBnZXRPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBvZmZzZXRQYXJlbnQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzT2Zmc2V0Q29udGFpbmVyKGVsZW1lbnQpIHtcclxuICB2YXIgbm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lO1xyXG5cclxuICBpZiAobm9kZU5hbWUgPT09ICdCT0RZJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gbm9kZU5hbWUgPT09ICdIVE1MJyB8fCBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCkgPT09IGVsZW1lbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaW5kcyB0aGUgcm9vdCBub2RlIChkb2N1bWVudCwgc2hhZG93RE9NIHJvb3QpIG9mIHRoZSBnaXZlbiBlbGVtZW50XHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IG5vZGVcclxuICogQHJldHVybnMge0VsZW1lbnR9IHJvb3Qgbm9kZVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0Um9vdChub2RlKSB7XHJcbiAgaWYgKG5vZGUucGFyZW50Tm9kZSAhPT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIGdldFJvb3Qobm9kZS5wYXJlbnROb2RlKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBub2RlO1xyXG59XHJcblxyXG4vKipcclxuICogRmluZHMgdGhlIG9mZnNldCBwYXJlbnQgY29tbW9uIHRvIHRoZSB0d28gcHJvdmlkZWQgbm9kZXNcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudDFcclxuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50MlxyXG4gKiBAcmV0dXJucyB7RWxlbWVudH0gY29tbW9uIG9mZnNldCBwYXJlbnRcclxuICovXHJcbmZ1bmN0aW9uIGZpbmRDb21tb25PZmZzZXRQYXJlbnQoZWxlbWVudDEsIGVsZW1lbnQyKSB7XHJcbiAgLy8gVGhpcyBjaGVjayBpcyBuZWVkZWQgdG8gYXZvaWQgZXJyb3JzIGluIGNhc2Ugb25lIG9mIHRoZSBlbGVtZW50cyBpc24ndCBkZWZpbmVkIGZvciBhbnkgcmVhc29uXHJcbiAgaWYgKCFlbGVtZW50MSB8fCAhZWxlbWVudDEubm9kZVR5cGUgfHwgIWVsZW1lbnQyIHx8ICFlbGVtZW50Mi5ub2RlVHlwZSkge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuICB9XHJcblxyXG4gIC8vIEhlcmUgd2UgbWFrZSBzdXJlIHRvIGdpdmUgYXMgXCJzdGFydFwiIHRoZSBlbGVtZW50IHRoYXQgY29tZXMgZmlyc3QgaW4gdGhlIERPTVxyXG4gIHZhciBvcmRlciA9IGVsZW1lbnQxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQyKSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HO1xyXG4gIHZhciBzdGFydCA9IG9yZGVyID8gZWxlbWVudDEgOiBlbGVtZW50MjtcclxuICB2YXIgZW5kID0gb3JkZXIgPyBlbGVtZW50MiA6IGVsZW1lbnQxO1xyXG5cclxuICAvLyBHZXQgY29tbW9uIGFuY2VzdG9yIGNvbnRhaW5lclxyXG4gIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XHJcbiAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnQsIDApO1xyXG4gIHJhbmdlLnNldEVuZChlbmQsIDApO1xyXG4gIHZhciBjb21tb25BbmNlc3RvckNvbnRhaW5lciA9IHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO1xyXG5cclxuICAvLyBCb3RoIG5vZGVzIGFyZSBpbnNpZGUgI2RvY3VtZW50XHJcblxyXG4gIGlmIChlbGVtZW50MSAhPT0gY29tbW9uQW5jZXN0b3JDb250YWluZXIgJiYgZWxlbWVudDIgIT09IGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyIHx8IHN0YXJ0LmNvbnRhaW5zKGVuZCkpIHtcclxuICAgIGlmIChpc09mZnNldENvbnRhaW5lcihjb21tb25BbmNlc3RvckNvbnRhaW5lcikpIHtcclxuICAgICAgcmV0dXJuIGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBnZXRPZmZzZXRQYXJlbnQoY29tbW9uQW5jZXN0b3JDb250YWluZXIpO1xyXG4gIH1cclxuXHJcbiAgLy8gb25lIG9mIHRoZSBub2RlcyBpcyBpbnNpZGUgc2hhZG93RE9NLCBmaW5kIHdoaWNoIG9uZVxyXG4gIHZhciBlbGVtZW50MXJvb3QgPSBnZXRSb290KGVsZW1lbnQxKTtcclxuICBpZiAoZWxlbWVudDFyb290Lmhvc3QpIHtcclxuICAgIHJldHVybiBmaW5kQ29tbW9uT2Zmc2V0UGFyZW50KGVsZW1lbnQxcm9vdC5ob3N0LCBlbGVtZW50Mik7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBmaW5kQ29tbW9uT2Zmc2V0UGFyZW50KGVsZW1lbnQxLCBnZXRSb290KGVsZW1lbnQyKS5ob3N0KTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSBzY3JvbGwgdmFsdWUgb2YgdGhlIGdpdmVuIGVsZW1lbnQgaW4gdGhlIGdpdmVuIHNpZGUgKHRvcCBhbmQgbGVmdClcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxyXG4gKiBAYXJndW1lbnQge1N0cmluZ30gc2lkZSBgdG9wYCBvciBgbGVmdGBcclxuICogQHJldHVybnMge251bWJlcn0gYW1vdW50IG9mIHNjcm9sbGVkIHBpeGVsc1xyXG4gKi9cclxuZnVuY3Rpb24gZ2V0U2Nyb2xsKGVsZW1lbnQpIHtcclxuICB2YXIgc2lkZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJ3RvcCc7XHJcblxyXG4gIHZhciB1cHBlclNpZGUgPSBzaWRlID09PSAndG9wJyA/ICdzY3JvbGxUb3AnIDogJ3Njcm9sbExlZnQnO1xyXG4gIHZhciBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWU7XHJcblxyXG4gIGlmIChub2RlTmFtZSA9PT0gJ0JPRFknIHx8IG5vZGVOYW1lID09PSAnSFRNTCcpIHtcclxuICAgIHZhciBodG1sID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuICAgIHZhciBzY3JvbGxpbmdFbGVtZW50ID0gZWxlbWVudC5vd25lckRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQgfHwgaHRtbDtcclxuICAgIHJldHVybiBzY3JvbGxpbmdFbGVtZW50W3VwcGVyU2lkZV07XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZWxlbWVudFt1cHBlclNpZGVdO1xyXG59XHJcblxyXG4vKlxyXG4gKiBTdW0gb3Igc3VidHJhY3QgdGhlIGVsZW1lbnQgc2Nyb2xsIHZhbHVlcyAobGVmdCBhbmQgdG9wKSBmcm9tIGEgZ2l2ZW4gcmVjdCBvYmplY3RcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWN0IC0gUmVjdCBvYmplY3QgeW91IHdhbnQgdG8gY2hhbmdlXHJcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZWxlbWVudCBmcm9tIHRoZSBmdW5jdGlvbiByZWFkcyB0aGUgc2Nyb2xsIHZhbHVlc1xyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IHN1YnRyYWN0IC0gc2V0IHRvIHRydWUgaWYgeW91IHdhbnQgdG8gc3VidHJhY3QgdGhlIHNjcm9sbCB2YWx1ZXNcclxuICogQHJldHVybiB7T2JqZWN0fSByZWN0IC0gVGhlIG1vZGlmaWVyIHJlY3Qgb2JqZWN0XHJcbiAqL1xyXG5mdW5jdGlvbiBpbmNsdWRlU2Nyb2xsKHJlY3QsIGVsZW1lbnQpIHtcclxuICB2YXIgc3VidHJhY3QgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGZhbHNlO1xyXG5cclxuICB2YXIgc2Nyb2xsVG9wID0gZ2V0U2Nyb2xsKGVsZW1lbnQsICd0b3AnKTtcclxuICB2YXIgc2Nyb2xsTGVmdCA9IGdldFNjcm9sbChlbGVtZW50LCAnbGVmdCcpO1xyXG4gIHZhciBtb2RpZmllciA9IHN1YnRyYWN0ID8gLTEgOiAxO1xyXG4gIHJlY3QudG9wICs9IHNjcm9sbFRvcCAqIG1vZGlmaWVyO1xyXG4gIHJlY3QuYm90dG9tICs9IHNjcm9sbFRvcCAqIG1vZGlmaWVyO1xyXG4gIHJlY3QubGVmdCArPSBzY3JvbGxMZWZ0ICogbW9kaWZpZXI7XHJcbiAgcmVjdC5yaWdodCArPSBzY3JvbGxMZWZ0ICogbW9kaWZpZXI7XHJcbiAgcmV0dXJuIHJlY3Q7XHJcbn1cclxuXHJcbi8qXHJcbiAqIEhlbHBlciB0byBkZXRlY3QgYm9yZGVycyBvZiBhIGdpdmVuIGVsZW1lbnRcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBwYXJhbSB7Q1NTU3R5bGVEZWNsYXJhdGlvbn0gc3R5bGVzXHJcbiAqIFJlc3VsdCBvZiBgZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5YCBvbiB0aGUgZ2l2ZW4gZWxlbWVudFxyXG4gKiBAcGFyYW0ge1N0cmluZ30gYXhpcyAtIGB4YCBvciBgeWBcclxuICogQHJldHVybiB7bnVtYmVyfSBib3JkZXJzIC0gVGhlIGJvcmRlcnMgc2l6ZSBvZiB0aGUgZ2l2ZW4gYXhpc1xyXG4gKi9cclxuXHJcbmZ1bmN0aW9uIGdldEJvcmRlcnNTaXplKHN0eWxlcywgYXhpcykge1xyXG4gIHZhciBzaWRlQSA9IGF4aXMgPT09ICd4JyA/ICdMZWZ0JyA6ICdUb3AnO1xyXG4gIHZhciBzaWRlQiA9IHNpZGVBID09PSAnTGVmdCcgPyAnUmlnaHQnIDogJ0JvdHRvbSc7XHJcblxyXG4gIHJldHVybiBwYXJzZUZsb2F0KHN0eWxlc1snYm9yZGVyJyArIHNpZGVBICsgJ1dpZHRoJ10sIDEwKSArIHBhcnNlRmxvYXQoc3R5bGVzWydib3JkZXInICsgc2lkZUIgKyAnV2lkdGgnXSwgMTApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTaXplKGF4aXMsIGJvZHksIGh0bWwsIGNvbXB1dGVkU3R5bGUpIHtcclxuICByZXR1cm4gTWF0aC5tYXgoYm9keVsnb2Zmc2V0JyArIGF4aXNdLCBib2R5WydzY3JvbGwnICsgYXhpc10sIGh0bWxbJ2NsaWVudCcgKyBheGlzXSwgaHRtbFsnb2Zmc2V0JyArIGF4aXNdLCBodG1sWydzY3JvbGwnICsgYXhpc10sIGlzSUUoMTApID8gcGFyc2VJbnQoaHRtbFsnb2Zmc2V0JyArIGF4aXNdKSArIHBhcnNlSW50KGNvbXB1dGVkU3R5bGVbJ21hcmdpbicgKyAoYXhpcyA9PT0gJ0hlaWdodCcgPyAnVG9wJyA6ICdMZWZ0JyldKSArIHBhcnNlSW50KGNvbXB1dGVkU3R5bGVbJ21hcmdpbicgKyAoYXhpcyA9PT0gJ0hlaWdodCcgPyAnQm90dG9tJyA6ICdSaWdodCcpXSkgOiAwKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0V2luZG93U2l6ZXMoZG9jdW1lbnQpIHtcclxuICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7XHJcbiAgdmFyIGh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbiAgdmFyIGNvbXB1dGVkU3R5bGUgPSBpc0lFKDEwKSAmJiBnZXRDb21wdXRlZFN0eWxlKGh0bWwpO1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgaGVpZ2h0OiBnZXRTaXplKCdIZWlnaHQnLCBib2R5LCBodG1sLCBjb21wdXRlZFN0eWxlKSxcclxuICAgIHdpZHRoOiBnZXRTaXplKCdXaWR0aCcsIGJvZHksIGh0bWwsIGNvbXB1dGVkU3R5bGUpXHJcbiAgfTtcclxufVxyXG5cclxudmFyIGNsYXNzQ2FsbENoZWNrID0gZnVuY3Rpb24gKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xyXG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xyXG4gIH1cclxufTtcclxuXHJcbnZhciBjcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHtcclxuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcclxuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xyXG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XHJcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XHJcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xyXG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XHJcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XHJcbiAgfTtcclxufSgpO1xyXG5cclxuXHJcblxyXG5cclxuXHJcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvYmosIGtleSwgdmFsdWUpIHtcclxuICBpZiAoa2V5IGluIG9iaikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XHJcbiAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICB3cml0YWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIG9ialtrZXldID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gb2JqO1xyXG59O1xyXG5cclxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XHJcblxyXG4gICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xyXG4gICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB0YXJnZXQ7XHJcbn07XHJcblxyXG4vKipcclxuICogR2l2ZW4gZWxlbWVudCBvZmZzZXRzLCBnZW5lcmF0ZSBhbiBvdXRwdXQgc2ltaWxhciB0byBnZXRCb3VuZGluZ0NsaWVudFJlY3RcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvZmZzZXRzXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IENsaWVudFJlY3QgbGlrZSBvdXRwdXRcclxuICovXHJcbmZ1bmN0aW9uIGdldENsaWVudFJlY3Qob2Zmc2V0cykge1xyXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb2Zmc2V0cywge1xyXG4gICAgcmlnaHQ6IG9mZnNldHMubGVmdCArIG9mZnNldHMud2lkdGgsXHJcbiAgICBib3R0b206IG9mZnNldHMudG9wICsgb2Zmc2V0cy5oZWlnaHRcclxuICB9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCBib3VuZGluZyBjbGllbnQgcmVjdCBvZiBnaXZlbiBlbGVtZW50XHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XHJcbiAqIEByZXR1cm4ge09iamVjdH0gY2xpZW50IHJlY3RcclxuICovXHJcbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KSB7XHJcbiAgdmFyIHJlY3QgPSB7fTtcclxuXHJcbiAgLy8gSUUxMCAxMCBGSVg6IFBsZWFzZSwgZG9uJ3QgYXNrLCB0aGUgZWxlbWVudCBpc24ndFxyXG4gIC8vIGNvbnNpZGVyZWQgaW4gRE9NIGluIHNvbWUgY2lyY3Vtc3RhbmNlcy4uLlxyXG4gIC8vIFRoaXMgaXNuJ3QgcmVwcm9kdWNpYmxlIGluIElFMTAgY29tcGF0aWJpbGl0eSBtb2RlIG9mIElFMTFcclxuICB0cnkge1xyXG4gICAgaWYgKGlzSUUoMTApKSB7XHJcbiAgICAgIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICB2YXIgc2Nyb2xsVG9wID0gZ2V0U2Nyb2xsKGVsZW1lbnQsICd0b3AnKTtcclxuICAgICAgdmFyIHNjcm9sbExlZnQgPSBnZXRTY3JvbGwoZWxlbWVudCwgJ2xlZnQnKTtcclxuICAgICAgcmVjdC50b3AgKz0gc2Nyb2xsVG9wO1xyXG4gICAgICByZWN0LmxlZnQgKz0gc2Nyb2xsTGVmdDtcclxuICAgICAgcmVjdC5ib3R0b20gKz0gc2Nyb2xsVG9wO1xyXG4gICAgICByZWN0LnJpZ2h0ICs9IHNjcm9sbExlZnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlKSB7fVxyXG5cclxuICB2YXIgcmVzdWx0ID0ge1xyXG4gICAgbGVmdDogcmVjdC5sZWZ0LFxyXG4gICAgdG9wOiByZWN0LnRvcCxcclxuICAgIHdpZHRoOiByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LFxyXG4gICAgaGVpZ2h0OiByZWN0LmJvdHRvbSAtIHJlY3QudG9wXHJcbiAgfTtcclxuXHJcbiAgLy8gc3VidHJhY3Qgc2Nyb2xsYmFyIHNpemUgZnJvbSBzaXplc1xyXG4gIHZhciBzaXplcyA9IGVsZW1lbnQubm9kZU5hbWUgPT09ICdIVE1MJyA/IGdldFdpbmRvd1NpemVzKGVsZW1lbnQub3duZXJEb2N1bWVudCkgOiB7fTtcclxuICB2YXIgd2lkdGggPSBzaXplcy53aWR0aCB8fCBlbGVtZW50LmNsaWVudFdpZHRoIHx8IHJlc3VsdC5yaWdodCAtIHJlc3VsdC5sZWZ0O1xyXG4gIHZhciBoZWlnaHQgPSBzaXplcy5oZWlnaHQgfHwgZWxlbWVudC5jbGllbnRIZWlnaHQgfHwgcmVzdWx0LmJvdHRvbSAtIHJlc3VsdC50b3A7XHJcblxyXG4gIHZhciBob3JpelNjcm9sbGJhciA9IGVsZW1lbnQub2Zmc2V0V2lkdGggLSB3aWR0aDtcclxuICB2YXIgdmVydFNjcm9sbGJhciA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gaGVpZ2h0O1xyXG5cclxuICAvLyBpZiBhbiBoeXBvdGhldGljYWwgc2Nyb2xsYmFyIGlzIGRldGVjdGVkLCB3ZSBtdXN0IGJlIHN1cmUgaXQncyBub3QgYSBgYm9yZGVyYFxyXG4gIC8vIHdlIG1ha2UgdGhpcyBjaGVjayBjb25kaXRpb25hbCBmb3IgcGVyZm9ybWFuY2UgcmVhc29uc1xyXG4gIGlmIChob3JpelNjcm9sbGJhciB8fCB2ZXJ0U2Nyb2xsYmFyKSB7XHJcbiAgICB2YXIgc3R5bGVzID0gZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KGVsZW1lbnQpO1xyXG4gICAgaG9yaXpTY3JvbGxiYXIgLT0gZ2V0Qm9yZGVyc1NpemUoc3R5bGVzLCAneCcpO1xyXG4gICAgdmVydFNjcm9sbGJhciAtPSBnZXRCb3JkZXJzU2l6ZShzdHlsZXMsICd5Jyk7XHJcblxyXG4gICAgcmVzdWx0LndpZHRoIC09IGhvcml6U2Nyb2xsYmFyO1xyXG4gICAgcmVzdWx0LmhlaWdodCAtPSB2ZXJ0U2Nyb2xsYmFyO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGdldENsaWVudFJlY3QocmVzdWx0KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0T2Zmc2V0UmVjdFJlbGF0aXZlVG9BcmJpdHJhcnlOb2RlKGNoaWxkcmVuLCBwYXJlbnQpIHtcclxuICB2YXIgZml4ZWRQb3NpdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZmFsc2U7XHJcblxyXG4gIHZhciBpc0lFMTAgPSBpc0lFKDEwKTtcclxuICB2YXIgaXNIVE1MID0gcGFyZW50Lm5vZGVOYW1lID09PSAnSFRNTCc7XHJcbiAgdmFyIGNoaWxkcmVuUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChjaGlsZHJlbik7XHJcbiAgdmFyIHBhcmVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocGFyZW50KTtcclxuICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KGNoaWxkcmVuKTtcclxuXHJcbiAgdmFyIHN0eWxlcyA9IGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShwYXJlbnQpO1xyXG4gIHZhciBib3JkZXJUb3BXaWR0aCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlclRvcFdpZHRoLCAxMCk7XHJcbiAgdmFyIGJvcmRlckxlZnRXaWR0aCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlckxlZnRXaWR0aCwgMTApO1xyXG5cclxuICAvLyBJbiBjYXNlcyB3aGVyZSB0aGUgcGFyZW50IGlzIGZpeGVkLCB3ZSBtdXN0IGlnbm9yZSBuZWdhdGl2ZSBzY3JvbGwgaW4gb2Zmc2V0IGNhbGNcclxuICBpZiAoZml4ZWRQb3NpdGlvbiAmJiBpc0hUTUwpIHtcclxuICAgIHBhcmVudFJlY3QudG9wID0gTWF0aC5tYXgocGFyZW50UmVjdC50b3AsIDApO1xyXG4gICAgcGFyZW50UmVjdC5sZWZ0ID0gTWF0aC5tYXgocGFyZW50UmVjdC5sZWZ0LCAwKTtcclxuICB9XHJcbiAgdmFyIG9mZnNldHMgPSBnZXRDbGllbnRSZWN0KHtcclxuICAgIHRvcDogY2hpbGRyZW5SZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wIC0gYm9yZGVyVG9wV2lkdGgsXHJcbiAgICBsZWZ0OiBjaGlsZHJlblJlY3QubGVmdCAtIHBhcmVudFJlY3QubGVmdCAtIGJvcmRlckxlZnRXaWR0aCxcclxuICAgIHdpZHRoOiBjaGlsZHJlblJlY3Qud2lkdGgsXHJcbiAgICBoZWlnaHQ6IGNoaWxkcmVuUmVjdC5oZWlnaHRcclxuICB9KTtcclxuICBvZmZzZXRzLm1hcmdpblRvcCA9IDA7XHJcbiAgb2Zmc2V0cy5tYXJnaW5MZWZ0ID0gMDtcclxuXHJcbiAgLy8gU3VidHJhY3QgbWFyZ2lucyBvZiBkb2N1bWVudEVsZW1lbnQgaW4gY2FzZSBpdCdzIGJlaW5nIHVzZWQgYXMgcGFyZW50XHJcbiAgLy8gd2UgZG8gdGhpcyBvbmx5IG9uIEhUTUwgYmVjYXVzZSBpdCdzIHRoZSBvbmx5IGVsZW1lbnQgdGhhdCBiZWhhdmVzXHJcbiAgLy8gZGlmZmVyZW50bHkgd2hlbiBtYXJnaW5zIGFyZSBhcHBsaWVkIHRvIGl0LiBUaGUgbWFyZ2lucyBhcmUgaW5jbHVkZWQgaW5cclxuICAvLyB0aGUgYm94IG9mIHRoZSBkb2N1bWVudEVsZW1lbnQsIGluIHRoZSBvdGhlciBjYXNlcyBub3QuXHJcbiAgaWYgKCFpc0lFMTAgJiYgaXNIVE1MKSB7XHJcbiAgICB2YXIgbWFyZ2luVG9wID0gcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luVG9wLCAxMCk7XHJcbiAgICB2YXIgbWFyZ2luTGVmdCA9IHBhcnNlRmxvYXQoc3R5bGVzLm1hcmdpbkxlZnQsIDEwKTtcclxuXHJcbiAgICBvZmZzZXRzLnRvcCAtPSBib3JkZXJUb3BXaWR0aCAtIG1hcmdpblRvcDtcclxuICAgIG9mZnNldHMuYm90dG9tIC09IGJvcmRlclRvcFdpZHRoIC0gbWFyZ2luVG9wO1xyXG4gICAgb2Zmc2V0cy5sZWZ0IC09IGJvcmRlckxlZnRXaWR0aCAtIG1hcmdpbkxlZnQ7XHJcbiAgICBvZmZzZXRzLnJpZ2h0IC09IGJvcmRlckxlZnRXaWR0aCAtIG1hcmdpbkxlZnQ7XHJcblxyXG4gICAgLy8gQXR0YWNoIG1hcmdpblRvcCBhbmQgbWFyZ2luTGVmdCBiZWNhdXNlIGluIHNvbWUgY2lyY3Vtc3RhbmNlcyB3ZSBtYXkgbmVlZCB0aGVtXHJcbiAgICBvZmZzZXRzLm1hcmdpblRvcCA9IG1hcmdpblRvcDtcclxuICAgIG9mZnNldHMubWFyZ2luTGVmdCA9IG1hcmdpbkxlZnQ7XHJcbiAgfVxyXG5cclxuICBpZiAoaXNJRTEwICYmICFmaXhlZFBvc2l0aW9uID8gcGFyZW50LmNvbnRhaW5zKHNjcm9sbFBhcmVudCkgOiBwYXJlbnQgPT09IHNjcm9sbFBhcmVudCAmJiBzY3JvbGxQYXJlbnQubm9kZU5hbWUgIT09ICdCT0RZJykge1xyXG4gICAgb2Zmc2V0cyA9IGluY2x1ZGVTY3JvbGwob2Zmc2V0cywgcGFyZW50KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBvZmZzZXRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRWaWV3cG9ydE9mZnNldFJlY3RSZWxhdGl2ZVRvQXJ0Yml0cmFyeU5vZGUoZWxlbWVudCkge1xyXG4gIHZhciBleGNsdWRlU2Nyb2xsID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcclxuXHJcbiAgdmFyIGh0bWwgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gIHZhciByZWxhdGl2ZU9mZnNldCA9IGdldE9mZnNldFJlY3RSZWxhdGl2ZVRvQXJiaXRyYXJ5Tm9kZShlbGVtZW50LCBodG1sKTtcclxuICB2YXIgd2lkdGggPSBNYXRoLm1heChodG1sLmNsaWVudFdpZHRoLCB3aW5kb3cuaW5uZXJXaWR0aCB8fCAwKTtcclxuICB2YXIgaGVpZ2h0ID0gTWF0aC5tYXgoaHRtbC5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCB8fCAwKTtcclxuXHJcbiAgdmFyIHNjcm9sbFRvcCA9ICFleGNsdWRlU2Nyb2xsID8gZ2V0U2Nyb2xsKGh0bWwpIDogMDtcclxuICB2YXIgc2Nyb2xsTGVmdCA9ICFleGNsdWRlU2Nyb2xsID8gZ2V0U2Nyb2xsKGh0bWwsICdsZWZ0JykgOiAwO1xyXG5cclxuICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgdG9wOiBzY3JvbGxUb3AgLSByZWxhdGl2ZU9mZnNldC50b3AgKyByZWxhdGl2ZU9mZnNldC5tYXJnaW5Ub3AsXHJcbiAgICBsZWZ0OiBzY3JvbGxMZWZ0IC0gcmVsYXRpdmVPZmZzZXQubGVmdCArIHJlbGF0aXZlT2Zmc2V0Lm1hcmdpbkxlZnQsXHJcbiAgICB3aWR0aDogd2lkdGgsXHJcbiAgICBoZWlnaHQ6IGhlaWdodFxyXG4gIH07XHJcblxyXG4gIHJldHVybiBnZXRDbGllbnRSZWN0KG9mZnNldCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBmaXhlZCBvciBpcyBpbnNpZGUgYSBmaXhlZCBwYXJlbnRcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxyXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGN1c3RvbUNvbnRhaW5lclxyXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gYW5zd2VyIHRvIFwiaXNGaXhlZD9cIlxyXG4gKi9cclxuZnVuY3Rpb24gaXNGaXhlZChlbGVtZW50KSB7XHJcbiAgdmFyIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcclxuICBpZiAobm9kZU5hbWUgPT09ICdCT0RZJyB8fCBub2RlTmFtZSA9PT0gJ0hUTUwnKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICByZXR1cm4gaXNGaXhlZChnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZpbmRzIHRoZSBmaXJzdCBwYXJlbnQgb2YgYW4gZWxlbWVudCB0aGF0IGhhcyBhIHRyYW5zZm9ybWVkIHByb3BlcnR5IGRlZmluZWRcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxyXG4gKiBAcmV0dXJucyB7RWxlbWVudH0gZmlyc3QgdHJhbnNmb3JtZWQgcGFyZW50IG9yIGRvY3VtZW50RWxlbWVudFxyXG4gKi9cclxuXHJcbmZ1bmN0aW9uIGdldEZpeGVkUG9zaXRpb25PZmZzZXRQYXJlbnQoZWxlbWVudCkge1xyXG4gIC8vIFRoaXMgY2hlY2sgaXMgbmVlZGVkIHRvIGF2b2lkIGVycm9ycyBpbiBjYXNlIG9uZSBvZiB0aGUgZWxlbWVudHMgaXNuJ3QgZGVmaW5lZCBmb3IgYW55IHJlYXNvblxyXG4gIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5wYXJlbnRFbGVtZW50IHx8IGlzSUUoKSkge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuICB9XHJcbiAgdmFyIGVsID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gIHdoaWxlIChlbCAmJiBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkoZWwsICd0cmFuc2Zvcm0nKSA9PT0gJ25vbmUnKSB7XHJcbiAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XHJcbiAgfVxyXG4gIHJldHVybiBlbCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb21wdXRlZCB0aGUgYm91bmRhcmllcyBsaW1pdHMgYW5kIHJldHVybiB0aGVtXHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwb3BwZXJcclxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcmVmZXJlbmNlXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwYWRkaW5nXHJcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGJvdW5kYXJpZXNFbGVtZW50IC0gRWxlbWVudCB1c2VkIHRvIGRlZmluZSB0aGUgYm91bmRhcmllc1xyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGZpeGVkUG9zaXRpb24gLSBJcyBpbiBmaXhlZCBwb3NpdGlvbiBtb2RlXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IENvb3JkaW5hdGVzIG9mIHRoZSBib3VuZGFyaWVzXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRCb3VuZGFyaWVzKHBvcHBlciwgcmVmZXJlbmNlLCBwYWRkaW5nLCBib3VuZGFyaWVzRWxlbWVudCkge1xyXG4gIHZhciBmaXhlZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiBmYWxzZTtcclxuXHJcbiAgLy8gTk9URTogMSBET00gYWNjZXNzIGhlcmVcclxuXHJcbiAgdmFyIGJvdW5kYXJpZXMgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xyXG4gIHZhciBvZmZzZXRQYXJlbnQgPSBmaXhlZFBvc2l0aW9uID8gZ2V0Rml4ZWRQb3NpdGlvbk9mZnNldFBhcmVudChwb3BwZXIpIDogZmluZENvbW1vbk9mZnNldFBhcmVudChwb3BwZXIsIHJlZmVyZW5jZSk7XHJcblxyXG4gIC8vIEhhbmRsZSB2aWV3cG9ydCBjYXNlXHJcbiAgaWYgKGJvdW5kYXJpZXNFbGVtZW50ID09PSAndmlld3BvcnQnKSB7XHJcbiAgICBib3VuZGFyaWVzID0gZ2V0Vmlld3BvcnRPZmZzZXRSZWN0UmVsYXRpdmVUb0FydGJpdHJhcnlOb2RlKG9mZnNldFBhcmVudCwgZml4ZWRQb3NpdGlvbik7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIEhhbmRsZSBvdGhlciBjYXNlcyBiYXNlZCBvbiBET00gZWxlbWVudCB1c2VkIGFzIGJvdW5kYXJpZXNcclxuICAgIHZhciBib3VuZGFyaWVzTm9kZSA9IHZvaWQgMDtcclxuICAgIGlmIChib3VuZGFyaWVzRWxlbWVudCA9PT0gJ3Njcm9sbFBhcmVudCcpIHtcclxuICAgICAgYm91bmRhcmllc05vZGUgPSBnZXRTY3JvbGxQYXJlbnQoZ2V0UGFyZW50Tm9kZShyZWZlcmVuY2UpKTtcclxuICAgICAgaWYgKGJvdW5kYXJpZXNOb2RlLm5vZGVOYW1lID09PSAnQk9EWScpIHtcclxuICAgICAgICBib3VuZGFyaWVzTm9kZSA9IHBvcHBlci5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChib3VuZGFyaWVzRWxlbWVudCA9PT0gJ3dpbmRvdycpIHtcclxuICAgICAgYm91bmRhcmllc05vZGUgPSBwb3BwZXIub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBib3VuZGFyaWVzTm9kZSA9IGJvdW5kYXJpZXNFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBvZmZzZXRzID0gZ2V0T2Zmc2V0UmVjdFJlbGF0aXZlVG9BcmJpdHJhcnlOb2RlKGJvdW5kYXJpZXNOb2RlLCBvZmZzZXRQYXJlbnQsIGZpeGVkUG9zaXRpb24pO1xyXG5cclxuICAgIC8vIEluIGNhc2Ugb2YgSFRNTCwgd2UgbmVlZCBhIGRpZmZlcmVudCBjb21wdXRhdGlvblxyXG4gICAgaWYgKGJvdW5kYXJpZXNOb2RlLm5vZGVOYW1lID09PSAnSFRNTCcgJiYgIWlzRml4ZWQob2Zmc2V0UGFyZW50KSkge1xyXG4gICAgICB2YXIgX2dldFdpbmRvd1NpemVzID0gZ2V0V2luZG93U2l6ZXMocG9wcGVyLm93bmVyRG9jdW1lbnQpLFxyXG4gICAgICAgICAgaGVpZ2h0ID0gX2dldFdpbmRvd1NpemVzLmhlaWdodCxcclxuICAgICAgICAgIHdpZHRoID0gX2dldFdpbmRvd1NpemVzLndpZHRoO1xyXG5cclxuICAgICAgYm91bmRhcmllcy50b3AgKz0gb2Zmc2V0cy50b3AgLSBvZmZzZXRzLm1hcmdpblRvcDtcclxuICAgICAgYm91bmRhcmllcy5ib3R0b20gPSBoZWlnaHQgKyBvZmZzZXRzLnRvcDtcclxuICAgICAgYm91bmRhcmllcy5sZWZ0ICs9IG9mZnNldHMubGVmdCAtIG9mZnNldHMubWFyZ2luTGVmdDtcclxuICAgICAgYm91bmRhcmllcy5yaWdodCA9IHdpZHRoICsgb2Zmc2V0cy5sZWZ0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gZm9yIGFsbCB0aGUgb3RoZXIgRE9NIGVsZW1lbnRzLCB0aGlzIG9uZSBpcyBnb29kXHJcbiAgICAgIGJvdW5kYXJpZXMgPSBvZmZzZXRzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQWRkIHBhZGRpbmdzXHJcbiAgcGFkZGluZyA9IHBhZGRpbmcgfHwgMDtcclxuICB2YXIgaXNQYWRkaW5nTnVtYmVyID0gdHlwZW9mIHBhZGRpbmcgPT09ICdudW1iZXInO1xyXG4gIGJvdW5kYXJpZXMubGVmdCArPSBpc1BhZGRpbmdOdW1iZXIgPyBwYWRkaW5nIDogcGFkZGluZy5sZWZ0IHx8IDA7XHJcbiAgYm91bmRhcmllcy50b3AgKz0gaXNQYWRkaW5nTnVtYmVyID8gcGFkZGluZyA6IHBhZGRpbmcudG9wIHx8IDA7XHJcbiAgYm91bmRhcmllcy5yaWdodCAtPSBpc1BhZGRpbmdOdW1iZXIgPyBwYWRkaW5nIDogcGFkZGluZy5yaWdodCB8fCAwO1xyXG4gIGJvdW5kYXJpZXMuYm90dG9tIC09IGlzUGFkZGluZ051bWJlciA/IHBhZGRpbmcgOiBwYWRkaW5nLmJvdHRvbSB8fCAwO1xyXG5cclxuICByZXR1cm4gYm91bmRhcmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QXJlYShfcmVmKSB7XHJcbiAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcclxuICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XHJcblxyXG4gIHJldHVybiB3aWR0aCAqIGhlaWdodDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFV0aWxpdHkgdXNlZCB0byB0cmFuc2Zvcm0gdGhlIGBhdXRvYCBwbGFjZW1lbnQgdG8gdGhlIHBsYWNlbWVudCB3aXRoIG1vcmVcclxuICogYXZhaWxhYmxlIHNwYWNlLlxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IHVwZGF0ZSBtZXRob2RcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXHJcbiAqL1xyXG5mdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChwbGFjZW1lbnQsIHJlZlJlY3QsIHBvcHBlciwgcmVmZXJlbmNlLCBib3VuZGFyaWVzRWxlbWVudCkge1xyXG4gIHZhciBwYWRkaW5nID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiAwO1xyXG5cclxuICBpZiAocGxhY2VtZW50LmluZGV4T2YoJ2F1dG8nKSA9PT0gLTEpIHtcclxuICAgIHJldHVybiBwbGFjZW1lbnQ7XHJcbiAgfVxyXG5cclxuICB2YXIgYm91bmRhcmllcyA9IGdldEJvdW5kYXJpZXMocG9wcGVyLCByZWZlcmVuY2UsIHBhZGRpbmcsIGJvdW5kYXJpZXNFbGVtZW50KTtcclxuXHJcbiAgdmFyIHJlY3RzID0ge1xyXG4gICAgdG9wOiB7XHJcbiAgICAgIHdpZHRoOiBib3VuZGFyaWVzLndpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHJlZlJlY3QudG9wIC0gYm91bmRhcmllcy50b3BcclxuICAgIH0sXHJcbiAgICByaWdodDoge1xyXG4gICAgICB3aWR0aDogYm91bmRhcmllcy5yaWdodCAtIHJlZlJlY3QucmlnaHQsXHJcbiAgICAgIGhlaWdodDogYm91bmRhcmllcy5oZWlnaHRcclxuICAgIH0sXHJcbiAgICBib3R0b206IHtcclxuICAgICAgd2lkdGg6IGJvdW5kYXJpZXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogYm91bmRhcmllcy5ib3R0b20gLSByZWZSZWN0LmJvdHRvbVxyXG4gICAgfSxcclxuICAgIGxlZnQ6IHtcclxuICAgICAgd2lkdGg6IHJlZlJlY3QubGVmdCAtIGJvdW5kYXJpZXMubGVmdCxcclxuICAgICAgaGVpZ2h0OiBib3VuZGFyaWVzLmhlaWdodFxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHZhciBzb3J0ZWRBcmVhcyA9IE9iamVjdC5rZXlzKHJlY3RzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xyXG4gICAgcmV0dXJuIF9leHRlbmRzKHtcclxuICAgICAga2V5OiBrZXlcclxuICAgIH0sIHJlY3RzW2tleV0sIHtcclxuICAgICAgYXJlYTogZ2V0QXJlYShyZWN0c1trZXldKVxyXG4gICAgfSk7XHJcbiAgfSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgcmV0dXJuIGIuYXJlYSAtIGEuYXJlYTtcclxuICB9KTtcclxuXHJcbiAgdmFyIGZpbHRlcmVkQXJlYXMgPSBzb3J0ZWRBcmVhcy5maWx0ZXIoZnVuY3Rpb24gKF9yZWYyKSB7XHJcbiAgICB2YXIgd2lkdGggPSBfcmVmMi53aWR0aCxcclxuICAgICAgICBoZWlnaHQgPSBfcmVmMi5oZWlnaHQ7XHJcbiAgICByZXR1cm4gd2lkdGggPj0gcG9wcGVyLmNsaWVudFdpZHRoICYmIGhlaWdodCA+PSBwb3BwZXIuY2xpZW50SGVpZ2h0O1xyXG4gIH0pO1xyXG5cclxuICB2YXIgY29tcHV0ZWRQbGFjZW1lbnQgPSBmaWx0ZXJlZEFyZWFzLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZEFyZWFzWzBdLmtleSA6IHNvcnRlZEFyZWFzWzBdLmtleTtcclxuXHJcbiAgdmFyIHZhcmlhdGlvbiA9IHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xyXG5cclxuICByZXR1cm4gY29tcHV0ZWRQbGFjZW1lbnQgKyAodmFyaWF0aW9uID8gJy0nICsgdmFyaWF0aW9uIDogJycpO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IG9mZnNldHMgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50XHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhdGVcclxuICogQHBhcmFtIHtFbGVtZW50fSBwb3BwZXIgLSB0aGUgcG9wcGVyIGVsZW1lbnRcclxuICogQHBhcmFtIHtFbGVtZW50fSByZWZlcmVuY2UgLSB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgKHRoZSBwb3BwZXIgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGlzKVxyXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGZpeGVkUG9zaXRpb24gLSBpcyBpbiBmaXhlZCBwb3NpdGlvbiBtb2RlXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBvZmZzZXRzIHdoaWNoIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9wcGVyXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRSZWZlcmVuY2VPZmZzZXRzKHN0YXRlLCBwb3BwZXIsIHJlZmVyZW5jZSkge1xyXG4gIHZhciBmaXhlZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBudWxsO1xyXG5cclxuICB2YXIgY29tbW9uT2Zmc2V0UGFyZW50ID0gZml4ZWRQb3NpdGlvbiA/IGdldEZpeGVkUG9zaXRpb25PZmZzZXRQYXJlbnQocG9wcGVyKSA6IGZpbmRDb21tb25PZmZzZXRQYXJlbnQocG9wcGVyLCByZWZlcmVuY2UpO1xyXG4gIHJldHVybiBnZXRPZmZzZXRSZWN0UmVsYXRpdmVUb0FyYml0cmFyeU5vZGUocmVmZXJlbmNlLCBjb21tb25PZmZzZXRQYXJlbnQsIGZpeGVkUG9zaXRpb24pO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBvdXRlciBzaXplcyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCAob2Zmc2V0IHNpemUgKyBtYXJnaW5zKVxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcclxuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IG9iamVjdCBjb250YWluaW5nIHdpZHRoIGFuZCBoZWlnaHQgcHJvcGVydGllc1xyXG4gKi9cclxuZnVuY3Rpb24gZ2V0T3V0ZXJTaXplcyhlbGVtZW50KSB7XHJcbiAgdmFyIHN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XHJcbiAgdmFyIHggPSBwYXJzZUZsb2F0KHN0eWxlcy5tYXJnaW5Ub3ApICsgcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luQm90dG9tKTtcclxuICB2YXIgeSA9IHBhcnNlRmxvYXQoc3R5bGVzLm1hcmdpbkxlZnQpICsgcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luUmlnaHQpO1xyXG4gIHZhciByZXN1bHQgPSB7XHJcbiAgICB3aWR0aDogZWxlbWVudC5vZmZzZXRXaWR0aCArIHksXHJcbiAgICBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgeFxyXG4gIH07XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgb3Bwb3NpdGUgcGxhY2VtZW50IG9mIHRoZSBnaXZlbiBvbmVcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBwbGFjZW1lbnRcclxuICogQHJldHVybnMge1N0cmluZ30gZmxpcHBlZCBwbGFjZW1lbnRcclxuICovXHJcbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xyXG4gIHZhciBoYXNoID0geyBsZWZ0OiAncmlnaHQnLCByaWdodDogJ2xlZnQnLCBib3R0b206ICd0b3AnLCB0b3A6ICdib3R0b20nIH07XHJcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcclxuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IG9mZnNldHMgdG8gdGhlIHBvcHBlclxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcclxuICogQHBhcmFtIHtPYmplY3R9IHBvc2l0aW9uIC0gQ1NTIHBvc2l0aW9uIHRoZSBQb3BwZXIgd2lsbCBnZXQgYXBwbGllZFxyXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwb3BwZXIgLSB0aGUgcG9wcGVyIGVsZW1lbnRcclxuICogQHBhcmFtIHtPYmplY3R9IHJlZmVyZW5jZU9mZnNldHMgLSB0aGUgcmVmZXJlbmNlIG9mZnNldHMgKHRoZSBwb3BwZXIgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGlzKVxyXG4gKiBAcGFyYW0ge1N0cmluZ30gcGxhY2VtZW50IC0gb25lIG9mIHRoZSB2YWxpZCBwbGFjZW1lbnQgb3B0aW9uc1xyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBwb3BwZXJPZmZzZXRzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9mZnNldHMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXJcclxuICovXHJcbmZ1bmN0aW9uIGdldFBvcHBlck9mZnNldHMocG9wcGVyLCByZWZlcmVuY2VPZmZzZXRzLCBwbGFjZW1lbnQpIHtcclxuICBwbGFjZW1lbnQgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcclxuXHJcbiAgLy8gR2V0IHBvcHBlciBub2RlIHNpemVzXHJcbiAgdmFyIHBvcHBlclJlY3QgPSBnZXRPdXRlclNpemVzKHBvcHBlcik7XHJcblxyXG4gIC8vIEFkZCBwb3NpdGlvbiwgd2lkdGggYW5kIGhlaWdodCB0byBvdXIgb2Zmc2V0cyBvYmplY3RcclxuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHtcclxuICAgIHdpZHRoOiBwb3BwZXJSZWN0LndpZHRoLFxyXG4gICAgaGVpZ2h0OiBwb3BwZXJSZWN0LmhlaWdodFxyXG4gIH07XHJcblxyXG4gIC8vIGRlcGVuZGluZyBieSB0aGUgcG9wcGVyIHBsYWNlbWVudCB3ZSBoYXZlIHRvIGNvbXB1dGUgaXRzIG9mZnNldHMgc2xpZ2h0bHkgZGlmZmVyZW50bHlcclxuICB2YXIgaXNIb3JpeiA9IFsncmlnaHQnLCAnbGVmdCddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTE7XHJcbiAgdmFyIG1haW5TaWRlID0gaXNIb3JpeiA/ICd0b3AnIDogJ2xlZnQnO1xyXG4gIHZhciBzZWNvbmRhcnlTaWRlID0gaXNIb3JpeiA/ICdsZWZ0JyA6ICd0b3AnO1xyXG4gIHZhciBtZWFzdXJlbWVudCA9IGlzSG9yaXogPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XHJcbiAgdmFyIHNlY29uZGFyeU1lYXN1cmVtZW50ID0gIWlzSG9yaXogPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XHJcblxyXG4gIHBvcHBlck9mZnNldHNbbWFpblNpZGVdID0gcmVmZXJlbmNlT2Zmc2V0c1ttYWluU2lkZV0gKyByZWZlcmVuY2VPZmZzZXRzW21lYXN1cmVtZW50XSAvIDIgLSBwb3BwZXJSZWN0W21lYXN1cmVtZW50XSAvIDI7XHJcbiAgaWYgKHBsYWNlbWVudCA9PT0gc2Vjb25kYXJ5U2lkZSkge1xyXG4gICAgcG9wcGVyT2Zmc2V0c1tzZWNvbmRhcnlTaWRlXSA9IHJlZmVyZW5jZU9mZnNldHNbc2Vjb25kYXJ5U2lkZV0gLSBwb3BwZXJSZWN0W3NlY29uZGFyeU1lYXN1cmVtZW50XTtcclxuICB9IGVsc2Uge1xyXG4gICAgcG9wcGVyT2Zmc2V0c1tzZWNvbmRhcnlTaWRlXSA9IHJlZmVyZW5jZU9mZnNldHNbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoc2Vjb25kYXJ5U2lkZSldO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHBvcHBlck9mZnNldHM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNaW1pY3MgdGhlIGBmaW5kYCBtZXRob2Qgb2YgQXJyYXlcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7QXJyYXl9IGFyclxyXG4gKiBAYXJndW1lbnQgcHJvcFxyXG4gKiBAYXJndW1lbnQgdmFsdWVcclxuICogQHJldHVybnMgaW5kZXggb3IgLTFcclxuICovXHJcbmZ1bmN0aW9uIGZpbmQoYXJyLCBjaGVjaykge1xyXG4gIC8vIHVzZSBuYXRpdmUgZmluZCBpZiBzdXBwb3J0ZWRcclxuICBpZiAoQXJyYXkucHJvdG90eXBlLmZpbmQpIHtcclxuICAgIHJldHVybiBhcnIuZmluZChjaGVjayk7XHJcbiAgfVxyXG5cclxuICAvLyB1c2UgYGZpbHRlcmAgdG8gb2J0YWluIHRoZSBzYW1lIGJlaGF2aW9yIG9mIGBmaW5kYFxyXG4gIHJldHVybiBhcnIuZmlsdGVyKGNoZWNrKVswXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIG1hdGNoaW5nIG9iamVjdFxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcclxuICogQGFyZ3VtZW50IHtBcnJheX0gYXJyXHJcbiAqIEBhcmd1bWVudCBwcm9wXHJcbiAqIEBhcmd1bWVudCB2YWx1ZVxyXG4gKiBAcmV0dXJucyBpbmRleCBvciAtMVxyXG4gKi9cclxuZnVuY3Rpb24gZmluZEluZGV4KGFyciwgcHJvcCwgdmFsdWUpIHtcclxuICAvLyB1c2UgbmF0aXZlIGZpbmRJbmRleCBpZiBzdXBwb3J0ZWRcclxuICBpZiAoQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleCkge1xyXG4gICAgcmV0dXJuIGFyci5maW5kSW5kZXgoZnVuY3Rpb24gKGN1cikge1xyXG4gICAgICByZXR1cm4gY3VyW3Byb3BdID09PSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gdXNlIGBmaW5kYCArIGBpbmRleE9mYCBpZiBgZmluZEluZGV4YCBpc24ndCBzdXBwb3J0ZWRcclxuICB2YXIgbWF0Y2ggPSBmaW5kKGFyciwgZnVuY3Rpb24gKG9iaikge1xyXG4gICAgcmV0dXJuIG9ialtwcm9wXSA9PT0gdmFsdWU7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGFyci5pbmRleE9mKG1hdGNoKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIExvb3AgdHJvdWdoIHRoZSBsaXN0IG9mIG1vZGlmaWVycyBhbmQgcnVuIHRoZW0gaW4gb3JkZXIsXHJcbiAqIGVhY2ggb2YgdGhlbSB3aWxsIHRoZW4gZWRpdCB0aGUgZGF0YSBvYmplY3QuXHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAcGFyYW0ge2RhdGFPYmplY3R9IGRhdGFcclxuICogQHBhcmFtIHtBcnJheX0gbW9kaWZpZXJzXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBlbmRzIC0gT3B0aW9uYWwgbW9kaWZpZXIgbmFtZSB1c2VkIGFzIHN0b3BwZXJcclxuICogQHJldHVybnMge2RhdGFPYmplY3R9XHJcbiAqL1xyXG5mdW5jdGlvbiBydW5Nb2RpZmllcnMobW9kaWZpZXJzLCBkYXRhLCBlbmRzKSB7XHJcbiAgdmFyIG1vZGlmaWVyc1RvUnVuID0gZW5kcyA9PT0gdW5kZWZpbmVkID8gbW9kaWZpZXJzIDogbW9kaWZpZXJzLnNsaWNlKDAsIGZpbmRJbmRleChtb2RpZmllcnMsICduYW1lJywgZW5kcykpO1xyXG5cclxuICBtb2RpZmllcnNUb1J1bi5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xyXG4gICAgaWYgKG1vZGlmaWVyWydmdW5jdGlvbiddKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZG90LW5vdGF0aW9uXHJcbiAgICAgIGNvbnNvbGUud2FybignYG1vZGlmaWVyLmZ1bmN0aW9uYCBpcyBkZXByZWNhdGVkLCB1c2UgYG1vZGlmaWVyLmZuYCEnKTtcclxuICAgIH1cclxuICAgIHZhciBmbiA9IG1vZGlmaWVyWydmdW5jdGlvbiddIHx8IG1vZGlmaWVyLmZuOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRvdC1ub3RhdGlvblxyXG4gICAgaWYgKG1vZGlmaWVyLmVuYWJsZWQgJiYgaXNGdW5jdGlvbihmbikpIHtcclxuICAgICAgLy8gQWRkIHByb3BlcnRpZXMgdG8gb2Zmc2V0cyB0byBtYWtlIHRoZW0gYSBjb21wbGV0ZSBjbGllbnRSZWN0IG9iamVjdFxyXG4gICAgICAvLyB3ZSBkbyB0aGlzIGJlZm9yZSBlYWNoIG1vZGlmaWVyIHRvIG1ha2Ugc3VyZSB0aGUgcHJldmlvdXMgb25lIGRvZXNuJ3RcclxuICAgICAgLy8gbWVzcyB3aXRoIHRoZXNlIHZhbHVlc1xyXG4gICAgICBkYXRhLm9mZnNldHMucG9wcGVyID0gZ2V0Q2xpZW50UmVjdChkYXRhLm9mZnNldHMucG9wcGVyKTtcclxuICAgICAgZGF0YS5vZmZzZXRzLnJlZmVyZW5jZSA9IGdldENsaWVudFJlY3QoZGF0YS5vZmZzZXRzLnJlZmVyZW5jZSk7XHJcblxyXG4gICAgICBkYXRhID0gZm4oZGF0YSwgbW9kaWZpZXIpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3BwZXIsIGNvbXB1dGluZyB0aGUgbmV3IG9mZnNldHMgYW5kIGFwcGx5aW5nXHJcbiAqIHRoZSBuZXcgc3R5bGUuPGJyIC8+XHJcbiAqIFByZWZlciBgc2NoZWR1bGVVcGRhdGVgIG92ZXIgYHVwZGF0ZWAgYmVjYXVzZSBvZiBwZXJmb3JtYW5jZSByZWFzb25zLlxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXJcclxuICovXHJcbmZ1bmN0aW9uIHVwZGF0ZSgpIHtcclxuICAvLyBpZiBwb3BwZXIgaXMgZGVzdHJveWVkLCBkb24ndCBwZXJmb3JtIGFueSBmdXJ0aGVyIHVwZGF0ZVxyXG4gIGlmICh0aGlzLnN0YXRlLmlzRGVzdHJveWVkKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB2YXIgZGF0YSA9IHtcclxuICAgIGluc3RhbmNlOiB0aGlzLFxyXG4gICAgc3R5bGVzOiB7fSxcclxuICAgIGFycm93U3R5bGVzOiB7fSxcclxuICAgIGF0dHJpYnV0ZXM6IHt9LFxyXG4gICAgZmxpcHBlZDogZmFsc2UsXHJcbiAgICBvZmZzZXRzOiB7fVxyXG4gIH07XHJcblxyXG4gIC8vIGNvbXB1dGUgcmVmZXJlbmNlIGVsZW1lbnQgb2Zmc2V0c1xyXG4gIGRhdGEub2Zmc2V0cy5yZWZlcmVuY2UgPSBnZXRSZWZlcmVuY2VPZmZzZXRzKHRoaXMuc3RhdGUsIHRoaXMucG9wcGVyLCB0aGlzLnJlZmVyZW5jZSwgdGhpcy5vcHRpb25zLnBvc2l0aW9uRml4ZWQpO1xyXG5cclxuICAvLyBjb21wdXRlIGF1dG8gcGxhY2VtZW50LCBzdG9yZSBwbGFjZW1lbnQgaW5zaWRlIHRoZSBkYXRhIG9iamVjdCxcclxuICAvLyBtb2RpZmllcnMgd2lsbCBiZSBhYmxlIHRvIGVkaXQgYHBsYWNlbWVudGAgaWYgbmVlZGVkXHJcbiAgLy8gYW5kIHJlZmVyIHRvIG9yaWdpbmFsUGxhY2VtZW50IHRvIGtub3cgdGhlIG9yaWdpbmFsIHZhbHVlXHJcbiAgZGF0YS5wbGFjZW1lbnQgPSBjb21wdXRlQXV0b1BsYWNlbWVudCh0aGlzLm9wdGlvbnMucGxhY2VtZW50LCBkYXRhLm9mZnNldHMucmVmZXJlbmNlLCB0aGlzLnBvcHBlciwgdGhpcy5yZWZlcmVuY2UsIHRoaXMub3B0aW9ucy5tb2RpZmllcnMuZmxpcC5ib3VuZGFyaWVzRWxlbWVudCwgdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpO1xyXG5cclxuICAvLyBzdG9yZSB0aGUgY29tcHV0ZWQgcGxhY2VtZW50IGluc2lkZSBgb3JpZ2luYWxQbGFjZW1lbnRgXHJcbiAgZGF0YS5vcmlnaW5hbFBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50O1xyXG5cclxuICBkYXRhLnBvc2l0aW9uRml4ZWQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZDtcclxuXHJcbiAgLy8gY29tcHV0ZSB0aGUgcG9wcGVyIG9mZnNldHNcclxuICBkYXRhLm9mZnNldHMucG9wcGVyID0gZ2V0UG9wcGVyT2Zmc2V0cyh0aGlzLnBvcHBlciwgZGF0YS5vZmZzZXRzLnJlZmVyZW5jZSwgZGF0YS5wbGFjZW1lbnQpO1xyXG5cclxuICBkYXRhLm9mZnNldHMucG9wcGVyLnBvc2l0aW9uID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uRml4ZWQgPyAnZml4ZWQnIDogJ2Fic29sdXRlJztcclxuXHJcbiAgLy8gcnVuIHRoZSBtb2RpZmllcnNcclxuICBkYXRhID0gcnVuTW9kaWZpZXJzKHRoaXMubW9kaWZpZXJzLCBkYXRhKTtcclxuXHJcbiAgLy8gdGhlIGZpcnN0IGB1cGRhdGVgIHdpbGwgY2FsbCBgb25DcmVhdGVgIGNhbGxiYWNrXHJcbiAgLy8gdGhlIG90aGVyIG9uZXMgd2lsbCBjYWxsIGBvblVwZGF0ZWAgY2FsbGJhY2tcclxuICBpZiAoIXRoaXMuc3RhdGUuaXNDcmVhdGVkKSB7XHJcbiAgICB0aGlzLnN0YXRlLmlzQ3JlYXRlZCA9IHRydWU7XHJcbiAgICB0aGlzLm9wdGlvbnMub25DcmVhdGUoZGF0YSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMub3B0aW9ucy5vblVwZGF0ZShkYXRhKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIZWxwZXIgdXNlZCB0byBrbm93IGlmIHRoZSBnaXZlbiBtb2RpZmllciBpcyBlbmFibGVkLlxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcclxuICogQHJldHVybnMge0Jvb2xlYW59XHJcbiAqL1xyXG5mdW5jdGlvbiBpc01vZGlmaWVyRW5hYmxlZChtb2RpZmllcnMsIG1vZGlmaWVyTmFtZSkge1xyXG4gIHJldHVybiBtb2RpZmllcnMuc29tZShmdW5jdGlvbiAoX3JlZikge1xyXG4gICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXHJcbiAgICAgICAgZW5hYmxlZCA9IF9yZWYuZW5hYmxlZDtcclxuICAgIHJldHVybiBlbmFibGVkICYmIG5hbWUgPT09IG1vZGlmaWVyTmFtZTtcclxuICB9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgcHJlZml4ZWQgc3VwcG9ydGVkIHByb3BlcnR5IG5hbWVcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBwcm9wZXJ0eSAoY2FtZWxDYXNlKVxyXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBwcmVmaXhlZCBwcm9wZXJ0eSAoY2FtZWxDYXNlIG9yIFBhc2NhbENhc2UsIGRlcGVuZGluZyBvbiB0aGUgdmVuZG9yIHByZWZpeClcclxuICovXHJcbmZ1bmN0aW9uIGdldFN1cHBvcnRlZFByb3BlcnR5TmFtZShwcm9wZXJ0eSkge1xyXG4gIHZhciBwcmVmaXhlcyA9IFtmYWxzZSwgJ21zJywgJ1dlYmtpdCcsICdNb3onLCAnTyddO1xyXG4gIHZhciB1cHBlclByb3AgPSBwcm9wZXJ0eS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3BlcnR5LnNsaWNlKDEpO1xyXG5cclxuICBmb3IgKHZhciBpID0gMDsgaSA8IHByZWZpeGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICB2YXIgcHJlZml4ID0gcHJlZml4ZXNbaV07XHJcbiAgICB2YXIgdG9DaGVjayA9IHByZWZpeCA/ICcnICsgcHJlZml4ICsgdXBwZXJQcm9wIDogcHJvcGVydHk7XHJcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50LmJvZHkuc3R5bGVbdG9DaGVja10gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHJldHVybiB0b0NoZWNrO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIERlc3Ryb3lzIHRoZSBwb3BwZXIuXHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlclxyXG4gKi9cclxuZnVuY3Rpb24gZGVzdHJveSgpIHtcclxuICB0aGlzLnN0YXRlLmlzRGVzdHJveWVkID0gdHJ1ZTtcclxuXHJcbiAgLy8gdG91Y2ggRE9NIG9ubHkgaWYgYGFwcGx5U3R5bGVgIG1vZGlmaWVyIGlzIGVuYWJsZWRcclxuICBpZiAoaXNNb2RpZmllckVuYWJsZWQodGhpcy5tb2RpZmllcnMsICdhcHBseVN0eWxlJykpIHtcclxuICAgIHRoaXMucG9wcGVyLnJlbW92ZUF0dHJpYnV0ZSgneC1wbGFjZW1lbnQnKTtcclxuICAgIHRoaXMucG9wcGVyLnN0eWxlLnBvc2l0aW9uID0gJyc7XHJcbiAgICB0aGlzLnBvcHBlci5zdHlsZS50b3AgPSAnJztcclxuICAgIHRoaXMucG9wcGVyLnN0eWxlLmxlZnQgPSAnJztcclxuICAgIHRoaXMucG9wcGVyLnN0eWxlLnJpZ2h0ID0gJyc7XHJcbiAgICB0aGlzLnBvcHBlci5zdHlsZS5ib3R0b20gPSAnJztcclxuICAgIHRoaXMucG9wcGVyLnN0eWxlLndpbGxDaGFuZ2UgPSAnJztcclxuICAgIHRoaXMucG9wcGVyLnN0eWxlW2dldFN1cHBvcnRlZFByb3BlcnR5TmFtZSgndHJhbnNmb3JtJyldID0gJyc7XHJcbiAgfVxyXG5cclxuICB0aGlzLmRpc2FibGVFdmVudExpc3RlbmVycygpO1xyXG5cclxuICAvLyByZW1vdmUgdGhlIHBvcHBlciBpZiB1c2VyIGV4cGxpY2l0eSBhc2tlZCBmb3IgdGhlIGRlbGV0aW9uIG9uIGRlc3Ryb3lcclxuICAvLyBkbyBub3QgdXNlIGByZW1vdmVgIGJlY2F1c2UgSUUxMSBkb2Vzbid0IHN1cHBvcnQgaXRcclxuICBpZiAodGhpcy5vcHRpb25zLnJlbW92ZU9uRGVzdHJveSkge1xyXG4gICAgdGhpcy5wb3BwZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBvcHBlcik7XHJcbiAgfVxyXG4gIHJldHVybiB0aGlzO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSB3aW5kb3cgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50XHJcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxyXG4gKiBAcmV0dXJucyB7V2luZG93fVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0V2luZG93KGVsZW1lbnQpIHtcclxuICB2YXIgb3duZXJEb2N1bWVudCA9IGVsZW1lbnQub3duZXJEb2N1bWVudDtcclxuICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgOiB3aW5kb3c7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGF0dGFjaFRvU2Nyb2xsUGFyZW50cyhzY3JvbGxQYXJlbnQsIGV2ZW50LCBjYWxsYmFjaywgc2Nyb2xsUGFyZW50cykge1xyXG4gIHZhciBpc0JvZHkgPSBzY3JvbGxQYXJlbnQubm9kZU5hbWUgPT09ICdCT0RZJztcclxuICB2YXIgdGFyZ2V0ID0gaXNCb2R5ID8gc2Nyb2xsUGFyZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgOiBzY3JvbGxQYXJlbnQ7XHJcbiAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbGxiYWNrLCB7IHBhc3NpdmU6IHRydWUgfSk7XHJcblxyXG4gIGlmICghaXNCb2R5KSB7XHJcbiAgICBhdHRhY2hUb1Njcm9sbFBhcmVudHMoZ2V0U2Nyb2xsUGFyZW50KHRhcmdldC5wYXJlbnROb2RlKSwgZXZlbnQsIGNhbGxiYWNrLCBzY3JvbGxQYXJlbnRzKTtcclxuICB9XHJcbiAgc2Nyb2xsUGFyZW50cy5wdXNoKHRhcmdldCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXR1cCBuZWVkZWQgZXZlbnQgbGlzdGVuZXJzIHVzZWQgdG8gdXBkYXRlIHRoZSBwb3BwZXIgcG9zaXRpb25cclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXR1cEV2ZW50TGlzdGVuZXJzKHJlZmVyZW5jZSwgb3B0aW9ucywgc3RhdGUsIHVwZGF0ZUJvdW5kKSB7XHJcbiAgLy8gUmVzaXplIGV2ZW50IGxpc3RlbmVyIG9uIHdpbmRvd1xyXG4gIHN0YXRlLnVwZGF0ZUJvdW5kID0gdXBkYXRlQm91bmQ7XHJcbiAgZ2V0V2luZG93KHJlZmVyZW5jZSkuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgc3RhdGUudXBkYXRlQm91bmQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcclxuXHJcbiAgLy8gU2Nyb2xsIGV2ZW50IGxpc3RlbmVyIG9uIHNjcm9sbCBwYXJlbnRzXHJcbiAgdmFyIHNjcm9sbEVsZW1lbnQgPSBnZXRTY3JvbGxQYXJlbnQocmVmZXJlbmNlKTtcclxuICBhdHRhY2hUb1Njcm9sbFBhcmVudHMoc2Nyb2xsRWxlbWVudCwgJ3Njcm9sbCcsIHN0YXRlLnVwZGF0ZUJvdW5kLCBzdGF0ZS5zY3JvbGxQYXJlbnRzKTtcclxuICBzdGF0ZS5zY3JvbGxFbGVtZW50ID0gc2Nyb2xsRWxlbWVudDtcclxuICBzdGF0ZS5ldmVudHNFbmFibGVkID0gdHJ1ZTtcclxuXHJcbiAgcmV0dXJuIHN0YXRlO1xyXG59XHJcblxyXG4vKipcclxuICogSXQgd2lsbCBhZGQgcmVzaXplL3Njcm9sbCBldmVudHMgYW5kIHN0YXJ0IHJlY2FsY3VsYXRpbmdcclxuICogcG9zaXRpb24gb2YgdGhlIHBvcHBlciBlbGVtZW50IHdoZW4gdGhleSBhcmUgdHJpZ2dlcmVkLlxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXJcclxuICovXHJcbmZ1bmN0aW9uIGVuYWJsZUV2ZW50TGlzdGVuZXJzKCkge1xyXG4gIGlmICghdGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkKSB7XHJcbiAgICB0aGlzLnN0YXRlID0gc2V0dXBFdmVudExpc3RlbmVycyh0aGlzLnJlZmVyZW5jZSwgdGhpcy5vcHRpb25zLCB0aGlzLnN0YXRlLCB0aGlzLnNjaGVkdWxlVXBkYXRlKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgZXZlbnQgbGlzdGVuZXJzIHVzZWQgdG8gdXBkYXRlIHRoZSBwb3BwZXIgcG9zaXRpb25cclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycyhyZWZlcmVuY2UsIHN0YXRlKSB7XHJcbiAgLy8gUmVtb3ZlIHJlc2l6ZSBldmVudCBsaXN0ZW5lciBvbiB3aW5kb3dcclxuICBnZXRXaW5kb3cocmVmZXJlbmNlKS5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBzdGF0ZS51cGRhdGVCb3VuZCk7XHJcblxyXG4gIC8vIFJlbW92ZSBzY3JvbGwgZXZlbnQgbGlzdGVuZXIgb24gc2Nyb2xsIHBhcmVudHNcclxuICBzdGF0ZS5zY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xyXG4gICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHN0YXRlLnVwZGF0ZUJvdW5kKTtcclxuICB9KTtcclxuXHJcbiAgLy8gUmVzZXQgc3RhdGVcclxuICBzdGF0ZS51cGRhdGVCb3VuZCA9IG51bGw7XHJcbiAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IFtdO1xyXG4gIHN0YXRlLnNjcm9sbEVsZW1lbnQgPSBudWxsO1xyXG4gIHN0YXRlLmV2ZW50c0VuYWJsZWQgPSBmYWxzZTtcclxuICByZXR1cm4gc3RhdGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJdCB3aWxsIHJlbW92ZSByZXNpemUvc2Nyb2xsIGV2ZW50cyBhbmQgd29uJ3QgcmVjYWxjdWxhdGUgcG9wcGVyIHBvc2l0aW9uXHJcbiAqIHdoZW4gdGhleSBhcmUgdHJpZ2dlcmVkLiBJdCBhbHNvIHdvbid0IHRyaWdnZXIgYG9uVXBkYXRlYCBjYWxsYmFjayBhbnltb3JlLFxyXG4gKiB1bmxlc3MgeW91IGNhbGwgYHVwZGF0ZWAgbWV0aG9kIG1hbnVhbGx5LlxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXJcclxuICovXHJcbmZ1bmN0aW9uIGRpc2FibGVFdmVudExpc3RlbmVycygpIHtcclxuICBpZiAodGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkKSB7XHJcbiAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnNjaGVkdWxlVXBkYXRlKTtcclxuICAgIHRoaXMuc3RhdGUgPSByZW1vdmVFdmVudExpc3RlbmVycyh0aGlzLnJlZmVyZW5jZSwgdGhpcy5zdGF0ZSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVGVsbHMgaWYgYSBnaXZlbiBpbnB1dCBpcyBhIG51bWJlclxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcclxuICogQHBhcmFtIHsqfSBpbnB1dCB0byBjaGVja1xyXG4gKiBAcmV0dXJuIHtCb29sZWFufVxyXG4gKi9cclxuZnVuY3Rpb24gaXNOdW1lcmljKG4pIHtcclxuICByZXR1cm4gbiAhPT0gJycgJiYgIWlzTmFOKHBhcnNlRmxvYXQobikpICYmIGlzRmluaXRlKG4pO1xyXG59XHJcblxyXG4vKipcclxuICogU2V0IHRoZSBzdHlsZSB0byB0aGUgZ2l2ZW4gcG9wcGVyXHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGFwcGx5IHRoZSBzdHlsZSB0b1xyXG4gKiBAYXJndW1lbnQge09iamVjdH0gc3R5bGVzXHJcbiAqIE9iamVjdCB3aXRoIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50XHJcbiAqL1xyXG5mdW5jdGlvbiBzZXRTdHlsZXMoZWxlbWVudCwgc3R5bGVzKSB7XHJcbiAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XHJcbiAgICB2YXIgdW5pdCA9ICcnO1xyXG4gICAgLy8gYWRkIHVuaXQgaWYgdGhlIHZhbHVlIGlzIG51bWVyaWMgYW5kIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nXHJcbiAgICBpZiAoWyd3aWR0aCcsICdoZWlnaHQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uaW5kZXhPZihwcm9wKSAhPT0gLTEgJiYgaXNOdW1lcmljKHN0eWxlc1twcm9wXSkpIHtcclxuICAgICAgdW5pdCA9ICdweCc7XHJcbiAgICB9XHJcbiAgICBlbGVtZW50LnN0eWxlW3Byb3BdID0gc3R5bGVzW3Byb3BdICsgdW5pdDtcclxuICB9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNldCB0aGUgYXR0cmlidXRlcyB0byB0aGUgZ2l2ZW4gcG9wcGVyXHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGFwcGx5IHRoZSBhdHRyaWJ1dGVzIHRvXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBzdHlsZXNcclxuICogT2JqZWN0IHdpdGggYSBsaXN0IG9mIHByb3BlcnRpZXMgYW5kIHZhbHVlcyB3aGljaCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnRcclxuICovXHJcbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXMoZWxlbWVudCwgYXR0cmlidXRlcykge1xyXG4gIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcclxuICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXNbcHJvcF07XHJcbiAgICBpZiAodmFsdWUgIT09IGZhbHNlKSB7XHJcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKHByb3AsIGF0dHJpYnV0ZXNbcHJvcF0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUocHJvcCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAZnVuY3Rpb25cclxuICogQG1lbWJlcm9mIE1vZGlmaWVyc1xyXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgYHVwZGF0ZWAgbWV0aG9kXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhLnN0eWxlcyAtIExpc3Qgb2Ygc3R5bGUgcHJvcGVydGllcyAtIHZhbHVlcyB0byBhcHBseSB0byBwb3BwZXIgZWxlbWVudFxyXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YS5hdHRyaWJ1dGVzIC0gTGlzdCBvZiBhdHRyaWJ1dGUgcHJvcGVydGllcyAtIHZhbHVlcyB0byBhcHBseSB0byBwb3BwZXIgZWxlbWVudFxyXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBzYW1lIGRhdGEgb2JqZWN0XHJcbiAqL1xyXG5mdW5jdGlvbiBhcHBseVN0eWxlKGRhdGEpIHtcclxuICAvLyBhbnkgcHJvcGVydHkgcHJlc2VudCBpbiBgZGF0YS5zdHlsZXNgIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9wcGVyLFxyXG4gIC8vIGluIHRoaXMgd2F5IHdlIGNhbiBtYWtlIHRoZSAzcmQgcGFydHkgbW9kaWZpZXJzIGFkZCBjdXN0b20gc3R5bGVzIHRvIGl0XHJcbiAgLy8gQmUgYXdhcmUsIG1vZGlmaWVycyBjb3VsZCBvdmVycmlkZSB0aGUgcHJvcGVydGllcyBkZWZpbmVkIGluIHRoZSBwcmV2aW91c1xyXG4gIC8vIGxpbmVzIG9mIHRoaXMgbW9kaWZpZXIhXHJcbiAgc2V0U3R5bGVzKGRhdGEuaW5zdGFuY2UucG9wcGVyLCBkYXRhLnN0eWxlcyk7XHJcblxyXG4gIC8vIGFueSBwcm9wZXJ0eSBwcmVzZW50IGluIGBkYXRhLmF0dHJpYnV0ZXNgIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9wcGVyLFxyXG4gIC8vIHRoZXkgd2lsbCBiZSBzZXQgYXMgSFRNTCBhdHRyaWJ1dGVzIG9mIHRoZSBlbGVtZW50XHJcbiAgc2V0QXR0cmlidXRlcyhkYXRhLmluc3RhbmNlLnBvcHBlciwgZGF0YS5hdHRyaWJ1dGVzKTtcclxuXHJcbiAgLy8gaWYgYXJyb3dFbGVtZW50IGlzIGRlZmluZWQgYW5kIGFycm93U3R5bGVzIGhhcyBzb21lIHByb3BlcnRpZXNcclxuICBpZiAoZGF0YS5hcnJvd0VsZW1lbnQgJiYgT2JqZWN0LmtleXMoZGF0YS5hcnJvd1N0eWxlcykubGVuZ3RoKSB7XHJcbiAgICBzZXRTdHlsZXMoZGF0YS5hcnJvd0VsZW1lbnQsIGRhdGEuYXJyb3dTdHlsZXMpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGRhdGE7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXQgdGhlIHgtcGxhY2VtZW50IGF0dHJpYnV0ZSBiZWZvcmUgZXZlcnl0aGluZyBlbHNlIGJlY2F1c2UgaXQgY291bGQgYmUgdXNlZFxyXG4gKiB0byBhZGQgbWFyZ2lucyB0byB0aGUgcG9wcGVyIG1hcmdpbnMgbmVlZHMgdG8gYmUgY2FsY3VsYXRlZCB0byBnZXQgdGhlXHJcbiAqIGNvcnJlY3QgcG9wcGVyIG9mZnNldHMuXHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5tb2RpZmllcnNcclxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSBlbGVtZW50IHVzZWQgdG8gcG9zaXRpb24gdGhlIHBvcHBlclxyXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwb3BwZXIgLSBUaGUgSFRNTCBlbGVtZW50IHVzZWQgYXMgcG9wcGVyXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gUG9wcGVyLmpzIG9wdGlvbnNcclxuICovXHJcbmZ1bmN0aW9uIGFwcGx5U3R5bGVPbkxvYWQocmVmZXJlbmNlLCBwb3BwZXIsIG9wdGlvbnMsIG1vZGlmaWVyT3B0aW9ucywgc3RhdGUpIHtcclxuICAvLyBjb21wdXRlIHJlZmVyZW5jZSBlbGVtZW50IG9mZnNldHNcclxuICB2YXIgcmVmZXJlbmNlT2Zmc2V0cyA9IGdldFJlZmVyZW5jZU9mZnNldHMoc3RhdGUsIHBvcHBlciwgcmVmZXJlbmNlLCBvcHRpb25zLnBvc2l0aW9uRml4ZWQpO1xyXG5cclxuICAvLyBjb21wdXRlIGF1dG8gcGxhY2VtZW50LCBzdG9yZSBwbGFjZW1lbnQgaW5zaWRlIHRoZSBkYXRhIG9iamVjdCxcclxuICAvLyBtb2RpZmllcnMgd2lsbCBiZSBhYmxlIHRvIGVkaXQgYHBsYWNlbWVudGAgaWYgbmVlZGVkXHJcbiAgLy8gYW5kIHJlZmVyIHRvIG9yaWdpbmFsUGxhY2VtZW50IHRvIGtub3cgdGhlIG9yaWdpbmFsIHZhbHVlXHJcbiAgdmFyIHBsYWNlbWVudCA9IGNvbXB1dGVBdXRvUGxhY2VtZW50KG9wdGlvbnMucGxhY2VtZW50LCByZWZlcmVuY2VPZmZzZXRzLCBwb3BwZXIsIHJlZmVyZW5jZSwgb3B0aW9ucy5tb2RpZmllcnMuZmxpcC5ib3VuZGFyaWVzRWxlbWVudCwgb3B0aW9ucy5tb2RpZmllcnMuZmxpcC5wYWRkaW5nKTtcclxuXHJcbiAgcG9wcGVyLnNldEF0dHJpYnV0ZSgneC1wbGFjZW1lbnQnLCBwbGFjZW1lbnQpO1xyXG5cclxuICAvLyBBcHBseSBgcG9zaXRpb25gIHRvIHBvcHBlciBiZWZvcmUgYW55dGhpbmcgZWxzZSBiZWNhdXNlXHJcbiAgLy8gd2l0aG91dCB0aGUgcG9zaXRpb24gYXBwbGllZCB3ZSBjYW4ndCBndWFyYW50ZWUgY29ycmVjdCBjb21wdXRhdGlvbnNcclxuICBzZXRTdHlsZXMocG9wcGVyLCB7IHBvc2l0aW9uOiBvcHRpb25zLnBvc2l0aW9uRml4ZWQgPyAnZml4ZWQnIDogJ2Fic29sdXRlJyB9KTtcclxuXHJcbiAgcmV0dXJuIG9wdGlvbnM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAZnVuY3Rpb25cclxuICogQG1lbWJlcm9mIE1vZGlmaWVyc1xyXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgYHVwZGF0ZWAgbWV0aG9kXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcclxuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxyXG4gKi9cclxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlKGRhdGEsIG9wdGlvbnMpIHtcclxuICB2YXIgeCA9IG9wdGlvbnMueCxcclxuICAgICAgeSA9IG9wdGlvbnMueTtcclxuICB2YXIgcG9wcGVyID0gZGF0YS5vZmZzZXRzLnBvcHBlcjtcclxuXHJcbiAgLy8gUmVtb3ZlIHRoaXMgbGVnYWN5IHN1cHBvcnQgaW4gUG9wcGVyLmpzIHYyXHJcblxyXG4gIHZhciBsZWdhY3lHcHVBY2NlbGVyYXRpb25PcHRpb24gPSBmaW5kKGRhdGEuaW5zdGFuY2UubW9kaWZpZXJzLCBmdW5jdGlvbiAobW9kaWZpZXIpIHtcclxuICAgIHJldHVybiBtb2RpZmllci5uYW1lID09PSAnYXBwbHlTdHlsZSc7XHJcbiAgfSkuZ3B1QWNjZWxlcmF0aW9uO1xyXG4gIGlmIChsZWdhY3lHcHVBY2NlbGVyYXRpb25PcHRpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc29sZS53YXJuKCdXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzIScpO1xyXG4gIH1cclxuICB2YXIgZ3B1QWNjZWxlcmF0aW9uID0gbGVnYWN5R3B1QWNjZWxlcmF0aW9uT3B0aW9uICE9PSB1bmRlZmluZWQgPyBsZWdhY3lHcHVBY2NlbGVyYXRpb25PcHRpb24gOiBvcHRpb25zLmdwdUFjY2VsZXJhdGlvbjtcclxuXHJcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChkYXRhLmluc3RhbmNlLnBvcHBlcik7XHJcbiAgdmFyIG9mZnNldFBhcmVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcclxuXHJcbiAgLy8gU3R5bGVzXHJcbiAgdmFyIHN0eWxlcyA9IHtcclxuICAgIHBvc2l0aW9uOiBwb3BwZXIucG9zaXRpb25cclxuICB9O1xyXG5cclxuICAvLyBBdm9pZCBibHVycnkgdGV4dCBieSB1c2luZyBmdWxsIHBpeGVsIGludGVnZXJzLlxyXG4gIC8vIEZvciBwaXhlbC1wZXJmZWN0IHBvc2l0aW9uaW5nLCB0b3AvYm90dG9tIHByZWZlcnMgcm91bmRlZFxyXG4gIC8vIHZhbHVlcywgd2hpbGUgbGVmdC9yaWdodCBwcmVmZXJzIGZsb29yZWQgdmFsdWVzLlxyXG4gIHZhciBvZmZzZXRzID0ge1xyXG4gICAgbGVmdDogTWF0aC5mbG9vcihwb3BwZXIubGVmdCksXHJcbiAgICB0b3A6IE1hdGgucm91bmQocG9wcGVyLnRvcCksXHJcbiAgICBib3R0b206IE1hdGgucm91bmQocG9wcGVyLmJvdHRvbSksXHJcbiAgICByaWdodDogTWF0aC5mbG9vcihwb3BwZXIucmlnaHQpXHJcbiAgfTtcclxuXHJcbiAgdmFyIHNpZGVBID0geCA9PT0gJ2JvdHRvbScgPyAndG9wJyA6ICdib3R0b20nO1xyXG4gIHZhciBzaWRlQiA9IHkgPT09ICdyaWdodCcgPyAnbGVmdCcgOiAncmlnaHQnO1xyXG5cclxuICAvLyBpZiBncHVBY2NlbGVyYXRpb24gaXMgc2V0IHRvIGB0cnVlYCBhbmQgdHJhbnNmb3JtIGlzIHN1cHBvcnRlZCxcclxuICAvLyAgd2UgdXNlIGB0cmFuc2xhdGUzZGAgdG8gYXBwbHkgdGhlIHBvc2l0aW9uIHRvIHRoZSBwb3BwZXIgd2VcclxuICAvLyBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgc3VwcG9ydGVkIHByZWZpeGVkIHZlcnNpb24gaWYgbmVlZGVkXHJcbiAgdmFyIHByZWZpeGVkUHJvcGVydHkgPSBnZXRTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUoJ3RyYW5zZm9ybScpO1xyXG5cclxuICAvLyBub3csIGxldCdzIG1ha2UgYSBzdGVwIGJhY2sgYW5kIGxvb2sgYXQgdGhpcyBjb2RlIGNsb3NlbHkgKHd0Zj8pXHJcbiAgLy8gSWYgdGhlIGNvbnRlbnQgb2YgdGhlIHBvcHBlciBncm93cyBvbmNlIGl0J3MgYmVlbiBwb3NpdGlvbmVkLCBpdFxyXG4gIC8vIG1heSBoYXBwZW4gdGhhdCB0aGUgcG9wcGVyIGdldHMgbWlzcGxhY2VkIGJlY2F1c2Ugb2YgdGhlIG5ldyBjb250ZW50XHJcbiAgLy8gb3ZlcmZsb3dpbmcgaXRzIHJlZmVyZW5jZSBlbGVtZW50XHJcbiAgLy8gVG8gYXZvaWQgdGhpcyBwcm9ibGVtLCB3ZSBwcm92aWRlIHR3byBvcHRpb25zICh4IGFuZCB5KSwgd2hpY2ggYWxsb3dcclxuICAvLyB0aGUgY29uc3VtZXIgdG8gZGVmaW5lIHRoZSBvZmZzZXQgb3JpZ2luLlxyXG4gIC8vIElmIHdlIHBvc2l0aW9uIGEgcG9wcGVyIG9uIHRvcCBvZiBhIHJlZmVyZW5jZSBlbGVtZW50LCB3ZSBjYW4gc2V0XHJcbiAgLy8gYHhgIHRvIGB0b3BgIHRvIG1ha2UgdGhlIHBvcHBlciBncm93IHRvd2FyZHMgaXRzIHRvcCBpbnN0ZWFkIG9mXHJcbiAgLy8gaXRzIGJvdHRvbS5cclxuICB2YXIgbGVmdCA9IHZvaWQgMCxcclxuICAgICAgdG9wID0gdm9pZCAwO1xyXG4gIGlmIChzaWRlQSA9PT0gJ2JvdHRvbScpIHtcclxuICAgIC8vIHdoZW4gb2Zmc2V0UGFyZW50IGlzIDxodG1sPiB0aGUgcG9zaXRpb25pbmcgaXMgcmVsYXRpdmUgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuIChleGNsdWRpbmcgdGhlIHNjcm9sbGJhcilcclxuICAgIC8vIGFuZCBub3QgdGhlIGJvdHRvbSBvZiB0aGUgaHRtbCBlbGVtZW50XHJcbiAgICBpZiAob2Zmc2V0UGFyZW50Lm5vZGVOYW1lID09PSAnSFRNTCcpIHtcclxuICAgICAgdG9wID0gLW9mZnNldFBhcmVudC5jbGllbnRIZWlnaHQgKyBvZmZzZXRzLmJvdHRvbTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvcCA9IC1vZmZzZXRQYXJlbnRSZWN0LmhlaWdodCArIG9mZnNldHMuYm90dG9tO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICB0b3AgPSBvZmZzZXRzLnRvcDtcclxuICB9XHJcbiAgaWYgKHNpZGVCID09PSAncmlnaHQnKSB7XHJcbiAgICBpZiAob2Zmc2V0UGFyZW50Lm5vZGVOYW1lID09PSAnSFRNTCcpIHtcclxuICAgICAgbGVmdCA9IC1vZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggKyBvZmZzZXRzLnJpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGVmdCA9IC1vZmZzZXRQYXJlbnRSZWN0LndpZHRoICsgb2Zmc2V0cy5yaWdodDtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgbGVmdCA9IG9mZnNldHMubGVmdDtcclxuICB9XHJcbiAgaWYgKGdwdUFjY2VsZXJhdGlvbiAmJiBwcmVmaXhlZFByb3BlcnR5KSB7XHJcbiAgICBzdHlsZXNbcHJlZml4ZWRQcm9wZXJ0eV0gPSAndHJhbnNsYXRlM2QoJyArIGxlZnQgKyAncHgsICcgKyB0b3AgKyAncHgsIDApJztcclxuICAgIHN0eWxlc1tzaWRlQV0gPSAwO1xyXG4gICAgc3R5bGVzW3NpZGVCXSA9IDA7XHJcbiAgICBzdHlsZXMud2lsbENoYW5nZSA9ICd0cmFuc2Zvcm0nO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBvdGh3ZXJpc2UsIHdlIHVzZSB0aGUgc3RhbmRhcmQgYHRvcGAsIGBsZWZ0YCwgYGJvdHRvbWAgYW5kIGByaWdodGAgcHJvcGVydGllc1xyXG4gICAgdmFyIGludmVydFRvcCA9IHNpZGVBID09PSAnYm90dG9tJyA/IC0xIDogMTtcclxuICAgIHZhciBpbnZlcnRMZWZ0ID0gc2lkZUIgPT09ICdyaWdodCcgPyAtMSA6IDE7XHJcbiAgICBzdHlsZXNbc2lkZUFdID0gdG9wICogaW52ZXJ0VG9wO1xyXG4gICAgc3R5bGVzW3NpZGVCXSA9IGxlZnQgKiBpbnZlcnRMZWZ0O1xyXG4gICAgc3R5bGVzLndpbGxDaGFuZ2UgPSBzaWRlQSArICcsICcgKyBzaWRlQjtcclxuICB9XHJcblxyXG4gIC8vIEF0dHJpYnV0ZXNcclxuICB2YXIgYXR0cmlidXRlcyA9IHtcclxuICAgICd4LXBsYWNlbWVudCc6IGRhdGEucGxhY2VtZW50XHJcbiAgfTtcclxuXHJcbiAgLy8gVXBkYXRlIGBkYXRhYCBhdHRyaWJ1dGVzLCBzdHlsZXMgYW5kIGFycm93U3R5bGVzXHJcbiAgZGF0YS5hdHRyaWJ1dGVzID0gX2V4dGVuZHMoe30sIGF0dHJpYnV0ZXMsIGRhdGEuYXR0cmlidXRlcyk7XHJcbiAgZGF0YS5zdHlsZXMgPSBfZXh0ZW5kcyh7fSwgc3R5bGVzLCBkYXRhLnN0eWxlcyk7XHJcbiAgZGF0YS5hcnJvd1N0eWxlcyA9IF9leHRlbmRzKHt9LCBkYXRhLm9mZnNldHMuYXJyb3csIGRhdGEuYXJyb3dTdHlsZXMpO1xyXG5cclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEhlbHBlciB1c2VkIHRvIGtub3cgaWYgdGhlIGdpdmVuIG1vZGlmaWVyIGRlcGVuZHMgZnJvbSBhbm90aGVyIG9uZS48YnIgLz5cclxuICogSXQgY2hlY2tzIGlmIHRoZSBuZWVkZWQgbW9kaWZpZXIgaXMgbGlzdGVkIGFuZCBlbmFibGVkLlxyXG4gKiBAbWV0aG9kXHJcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcclxuICogQHBhcmFtIHtBcnJheX0gbW9kaWZpZXJzIC0gbGlzdCBvZiBtb2RpZmllcnNcclxuICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RpbmdOYW1lIC0gbmFtZSBvZiByZXF1ZXN0aW5nIG1vZGlmaWVyXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0ZWROYW1lIC0gbmFtZSBvZiByZXF1ZXN0ZWQgbW9kaWZpZXJcclxuICogQHJldHVybnMge0Jvb2xlYW59XHJcbiAqL1xyXG5mdW5jdGlvbiBpc01vZGlmaWVyUmVxdWlyZWQobW9kaWZpZXJzLCByZXF1ZXN0aW5nTmFtZSwgcmVxdWVzdGVkTmFtZSkge1xyXG4gIHZhciByZXF1ZXN0aW5nID0gZmluZChtb2RpZmllcnMsIGZ1bmN0aW9uIChfcmVmKSB7XHJcbiAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcclxuICAgIHJldHVybiBuYW1lID09PSByZXF1ZXN0aW5nTmFtZTtcclxuICB9KTtcclxuXHJcbiAgdmFyIGlzUmVxdWlyZWQgPSAhIXJlcXVlc3RpbmcgJiYgbW9kaWZpZXJzLnNvbWUoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XHJcbiAgICByZXR1cm4gbW9kaWZpZXIubmFtZSA9PT0gcmVxdWVzdGVkTmFtZSAmJiBtb2RpZmllci5lbmFibGVkICYmIG1vZGlmaWVyLm9yZGVyIDwgcmVxdWVzdGluZy5vcmRlcjtcclxuICB9KTtcclxuXHJcbiAgaWYgKCFpc1JlcXVpcmVkKSB7XHJcbiAgICB2YXIgX3JlcXVlc3RpbmcgPSAnYCcgKyByZXF1ZXN0aW5nTmFtZSArICdgJztcclxuICAgIHZhciByZXF1ZXN0ZWQgPSAnYCcgKyByZXF1ZXN0ZWROYW1lICsgJ2AnO1xyXG4gICAgY29uc29sZS53YXJuKHJlcXVlc3RlZCArICcgbW9kaWZpZXIgaXMgcmVxdWlyZWQgYnkgJyArIF9yZXF1ZXN0aW5nICsgJyBtb2RpZmllciBpbiBvcmRlciB0byB3b3JrLCBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgYmVmb3JlICcgKyBfcmVxdWVzdGluZyArICchJyk7XHJcbiAgfVxyXG4gIHJldHVybiBpc1JlcXVpcmVkO1xyXG59XHJcblxyXG4vKipcclxuICogQGZ1bmN0aW9uXHJcbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IHVwZGF0ZSBtZXRob2RcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXHJcbiAqL1xyXG5mdW5jdGlvbiBhcnJvdyhkYXRhLCBvcHRpb25zKSB7XHJcbiAgdmFyIF9kYXRhJG9mZnNldHMkYXJyb3c7XHJcblxyXG4gIC8vIGFycm93IGRlcGVuZHMgb24ga2VlcFRvZ2V0aGVyIGluIG9yZGVyIHRvIHdvcmtcclxuICBpZiAoIWlzTW9kaWZpZXJSZXF1aXJlZChkYXRhLmluc3RhbmNlLm1vZGlmaWVycywgJ2Fycm93JywgJ2tlZXBUb2dldGhlcicpKSB7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHZhciBhcnJvd0VsZW1lbnQgPSBvcHRpb25zLmVsZW1lbnQ7XHJcblxyXG4gIC8vIGlmIGFycm93RWxlbWVudCBpcyBhIHN0cmluZywgc3VwcG9zZSBpdCdzIGEgQ1NTIHNlbGVjdG9yXHJcbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICBhcnJvd0VsZW1lbnQgPSBkYXRhLmluc3RhbmNlLnBvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93RWxlbWVudCk7XHJcblxyXG4gICAgLy8gaWYgYXJyb3dFbGVtZW50IGlzIG5vdCBmb3VuZCwgZG9uJ3QgcnVuIHRoZSBtb2RpZmllclxyXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIGlmIHRoZSBhcnJvd0VsZW1lbnQgaXNuJ3QgYSBxdWVyeSBzZWxlY3RvciB3ZSBtdXN0IGNoZWNrIHRoYXQgdGhlXHJcbiAgICAvLyBwcm92aWRlZCBET00gbm9kZSBpcyBjaGlsZCBvZiBpdHMgcG9wcGVyIG5vZGVcclxuICAgIGlmICghZGF0YS5pbnN0YW5jZS5wb3BwZXIuY29udGFpbnMoYXJyb3dFbGVtZW50KSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1dBUk5JTkc6IGBhcnJvdy5lbGVtZW50YCBtdXN0IGJlIGNoaWxkIG9mIGl0cyBwb3BwZXIgZWxlbWVudCEnKTtcclxuICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcclxuICB2YXIgX2RhdGEkb2Zmc2V0cyA9IGRhdGEub2Zmc2V0cyxcclxuICAgICAgcG9wcGVyID0gX2RhdGEkb2Zmc2V0cy5wb3BwZXIsXHJcbiAgICAgIHJlZmVyZW5jZSA9IF9kYXRhJG9mZnNldHMucmVmZXJlbmNlO1xyXG5cclxuICB2YXIgaXNWZXJ0aWNhbCA9IFsnbGVmdCcsICdyaWdodCddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTE7XHJcblxyXG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xyXG4gIHZhciBzaWRlQ2FwaXRhbGl6ZWQgPSBpc1ZlcnRpY2FsID8gJ1RvcCcgOiAnTGVmdCc7XHJcbiAgdmFyIHNpZGUgPSBzaWRlQ2FwaXRhbGl6ZWQudG9Mb3dlckNhc2UoKTtcclxuICB2YXIgYWx0U2lkZSA9IGlzVmVydGljYWwgPyAnbGVmdCcgOiAndG9wJztcclxuICB2YXIgb3BTaWRlID0gaXNWZXJ0aWNhbCA/ICdib3R0b20nIDogJ3JpZ2h0JztcclxuICB2YXIgYXJyb3dFbGVtZW50U2l6ZSA9IGdldE91dGVyU2l6ZXMoYXJyb3dFbGVtZW50KVtsZW5dO1xyXG5cclxuICAvL1xyXG4gIC8vIGV4dGVuZHMga2VlcFRvZ2V0aGVyIGJlaGF2aW9yIG1ha2luZyBzdXJlIHRoZSBwb3BwZXIgYW5kIGl0c1xyXG4gIC8vIHJlZmVyZW5jZSBoYXZlIGVub3VnaCBwaXhlbHMgaW4gY29uanVuY3Rpb25cclxuICAvL1xyXG5cclxuICAvLyB0b3AvbGVmdCBzaWRlXHJcbiAgaWYgKHJlZmVyZW5jZVtvcFNpZGVdIC0gYXJyb3dFbGVtZW50U2l6ZSA8IHBvcHBlcltzaWRlXSkge1xyXG4gICAgZGF0YS5vZmZzZXRzLnBvcHBlcltzaWRlXSAtPSBwb3BwZXJbc2lkZV0gLSAocmVmZXJlbmNlW29wU2lkZV0gLSBhcnJvd0VsZW1lbnRTaXplKTtcclxuICB9XHJcbiAgLy8gYm90dG9tL3JpZ2h0IHNpZGVcclxuICBpZiAocmVmZXJlbmNlW3NpZGVdICsgYXJyb3dFbGVtZW50U2l6ZSA+IHBvcHBlcltvcFNpZGVdKSB7XHJcbiAgICBkYXRhLm9mZnNldHMucG9wcGVyW3NpZGVdICs9IHJlZmVyZW5jZVtzaWRlXSArIGFycm93RWxlbWVudFNpemUgLSBwb3BwZXJbb3BTaWRlXTtcclxuICB9XHJcbiAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IGdldENsaWVudFJlY3QoZGF0YS5vZmZzZXRzLnBvcHBlcik7XHJcblxyXG4gIC8vIGNvbXB1dGUgY2VudGVyIG9mIHRoZSBwb3BwZXJcclxuICB2YXIgY2VudGVyID0gcmVmZXJlbmNlW3NpZGVdICsgcmVmZXJlbmNlW2xlbl0gLyAyIC0gYXJyb3dFbGVtZW50U2l6ZSAvIDI7XHJcblxyXG4gIC8vIENvbXB1dGUgdGhlIHNpZGVWYWx1ZSB1c2luZyB0aGUgdXBkYXRlZCBwb3BwZXIgb2Zmc2V0c1xyXG4gIC8vIHRha2UgcG9wcGVyIG1hcmdpbiBpbiBhY2NvdW50IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGlzIGluZm8gYXZhaWxhYmxlXHJcbiAgdmFyIGNzcyA9IGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShkYXRhLmluc3RhbmNlLnBvcHBlcik7XHJcbiAgdmFyIHBvcHBlck1hcmdpblNpZGUgPSBwYXJzZUZsb2F0KGNzc1snbWFyZ2luJyArIHNpZGVDYXBpdGFsaXplZF0sIDEwKTtcclxuICB2YXIgcG9wcGVyQm9yZGVyU2lkZSA9IHBhcnNlRmxvYXQoY3NzWydib3JkZXInICsgc2lkZUNhcGl0YWxpemVkICsgJ1dpZHRoJ10sIDEwKTtcclxuICB2YXIgc2lkZVZhbHVlID0gY2VudGVyIC0gZGF0YS5vZmZzZXRzLnBvcHBlcltzaWRlXSAtIHBvcHBlck1hcmdpblNpZGUgLSBwb3BwZXJCb3JkZXJTaWRlO1xyXG5cclxuICAvLyBwcmV2ZW50IGFycm93RWxlbWVudCBmcm9tIGJlaW5nIHBsYWNlZCBub3QgY29udGlndW91c2x5IHRvIGl0cyBwb3BwZXJcclxuICBzaWRlVmFsdWUgPSBNYXRoLm1heChNYXRoLm1pbihwb3BwZXJbbGVuXSAtIGFycm93RWxlbWVudFNpemUsIHNpZGVWYWx1ZSksIDApO1xyXG5cclxuICBkYXRhLmFycm93RWxlbWVudCA9IGFycm93RWxlbWVudDtcclxuICBkYXRhLm9mZnNldHMuYXJyb3cgPSAoX2RhdGEkb2Zmc2V0cyRhcnJvdyA9IHt9LCBkZWZpbmVQcm9wZXJ0eShfZGF0YSRvZmZzZXRzJGFycm93LCBzaWRlLCBNYXRoLnJvdW5kKHNpZGVWYWx1ZSkpLCBkZWZpbmVQcm9wZXJ0eShfZGF0YSRvZmZzZXRzJGFycm93LCBhbHRTaWRlLCAnJyksIF9kYXRhJG9mZnNldHMkYXJyb3cpO1xyXG5cclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgb3Bwb3NpdGUgcGxhY2VtZW50IHZhcmlhdGlvbiBvZiB0aGUgZ2l2ZW4gb25lXHJcbiAqIEBtZXRob2RcclxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xyXG4gKiBAYXJndW1lbnQge1N0cmluZ30gcGxhY2VtZW50IHZhcmlhdGlvblxyXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBmbGlwcGVkIHBsYWNlbWVudCB2YXJpYXRpb25cclxuICovXHJcbmZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uKHZhcmlhdGlvbikge1xyXG4gIGlmICh2YXJpYXRpb24gPT09ICdlbmQnKSB7XHJcbiAgICByZXR1cm4gJ3N0YXJ0JztcclxuICB9IGVsc2UgaWYgKHZhcmlhdGlvbiA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgcmV0dXJuICdlbmQnO1xyXG4gIH1cclxuICByZXR1cm4gdmFyaWF0aW9uO1xyXG59XHJcblxyXG4vKipcclxuICogTGlzdCBvZiBhY2NlcHRlZCBwbGFjZW1lbnRzIHRvIHVzZSBhcyB2YWx1ZXMgb2YgdGhlIGBwbGFjZW1lbnRgIG9wdGlvbi48YnIgLz5cclxuICogVmFsaWQgcGxhY2VtZW50cyBhcmU6XHJcbiAqIC0gYGF1dG9gXHJcbiAqIC0gYHRvcGBcclxuICogLSBgcmlnaHRgXHJcbiAqIC0gYGJvdHRvbWBcclxuICogLSBgbGVmdGBcclxuICpcclxuICogRWFjaCBwbGFjZW1lbnQgY2FuIGhhdmUgYSB2YXJpYXRpb24gZnJvbSB0aGlzIGxpc3Q6XHJcbiAqIC0gYC1zdGFydGBcclxuICogLSBgLWVuZGBcclxuICpcclxuICogVmFyaWF0aW9ucyBhcmUgaW50ZXJwcmV0ZWQgZWFzaWx5IGlmIHlvdSB0aGluayBvZiB0aGVtIGFzIHRoZSBsZWZ0IHRvIHJpZ2h0XHJcbiAqIHdyaXR0ZW4gbGFuZ3VhZ2VzLiBIb3Jpem9udGFsbHkgKGB0b3BgIGFuZCBgYm90dG9tYCksIGBzdGFydGAgaXMgbGVmdCBhbmQgYGVuZGBcclxuICogaXMgcmlnaHQuPGJyIC8+XHJcbiAqIFZlcnRpY2FsbHkgKGBsZWZ0YCBhbmQgYHJpZ2h0YCksIGBzdGFydGAgaXMgdG9wIGFuZCBgZW5kYCBpcyBib3R0b20uXHJcbiAqXHJcbiAqIFNvbWUgdmFsaWQgZXhhbXBsZXMgYXJlOlxyXG4gKiAtIGB0b3AtZW5kYCAob24gdG9wIG9mIHJlZmVyZW5jZSwgcmlnaHQgYWxpZ25lZClcclxuICogLSBgcmlnaHQtc3RhcnRgIChvbiByaWdodCBvZiByZWZlcmVuY2UsIHRvcCBhbGlnbmVkKVxyXG4gKiAtIGBib3R0b21gIChvbiBib3R0b20sIGNlbnRlcmVkKVxyXG4gKiAtIGBhdXRvLWVuZGAgKG9uIHRoZSBzaWRlIHdpdGggbW9yZSBzcGFjZSBhdmFpbGFibGUsIGFsaWdubWVudCBkZXBlbmRzIGJ5IHBsYWNlbWVudClcclxuICpcclxuICogQHN0YXRpY1xyXG4gKiBAdHlwZSB7QXJyYXl9XHJcbiAqIEBlbnVtIHtTdHJpbmd9XHJcbiAqIEByZWFkb25seVxyXG4gKiBAbWV0aG9kIHBsYWNlbWVudHNcclxuICogQG1lbWJlcm9mIFBvcHBlclxyXG4gKi9cclxudmFyIHBsYWNlbWVudHMgPSBbJ2F1dG8tc3RhcnQnLCAnYXV0bycsICdhdXRvLWVuZCcsICd0b3Atc3RhcnQnLCAndG9wJywgJ3RvcC1lbmQnLCAncmlnaHQtc3RhcnQnLCAncmlnaHQnLCAncmlnaHQtZW5kJywgJ2JvdHRvbS1lbmQnLCAnYm90dG9tJywgJ2JvdHRvbS1zdGFydCcsICdsZWZ0LWVuZCcsICdsZWZ0JywgJ2xlZnQtc3RhcnQnXTtcclxuXHJcbi8vIEdldCByaWQgb2YgYGF1dG9gIGBhdXRvLXN0YXJ0YCBhbmQgYGF1dG8tZW5kYFxyXG52YXIgdmFsaWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cy5zbGljZSgzKTtcclxuXHJcbi8qKlxyXG4gKiBHaXZlbiBhbiBpbml0aWFsIHBsYWNlbWVudCwgcmV0dXJucyBhbGwgdGhlIHN1YnNlcXVlbnQgcGxhY2VtZW50c1xyXG4gKiBjbG9ja3dpc2UgKG9yIGNvdW50ZXItY2xvY2t3aXNlKS5cclxuICpcclxuICogQG1ldGhvZFxyXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXHJcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBwbGFjZW1lbnQgLSBBIHZhbGlkIHBsYWNlbWVudCAoaXQgYWNjZXB0cyB2YXJpYXRpb25zKVxyXG4gKiBAYXJndW1lbnQge0Jvb2xlYW59IGNvdW50ZXIgLSBTZXQgdG8gdHJ1ZSB0byB3YWxrIHRoZSBwbGFjZW1lbnRzIGNvdW50ZXJjbG9ja3dpc2VcclxuICogQHJldHVybnMge0FycmF5fSBwbGFjZW1lbnRzIGluY2x1ZGluZyB0aGVpciB2YXJpYXRpb25zXHJcbiAqL1xyXG5mdW5jdGlvbiBjbG9ja3dpc2UocGxhY2VtZW50KSB7XHJcbiAgdmFyIGNvdW50ZXIgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xyXG5cclxuICB2YXIgaW5kZXggPSB2YWxpZFBsYWNlbWVudHMuaW5kZXhPZihwbGFjZW1lbnQpO1xyXG4gIHZhciBhcnIgPSB2YWxpZFBsYWNlbWVudHMuc2xpY2UoaW5kZXggKyAxKS5jb25jYXQodmFsaWRQbGFjZW1lbnRzLnNsaWNlKDAsIGluZGV4KSk7XHJcbiAgcmV0dXJuIGNvdW50ZXIgPyBhcnIucmV2ZXJzZSgpIDogYXJyO1xyXG59XHJcblxyXG52YXIgQkVIQVZJT1JTID0ge1xyXG4gIEZMSVA6ICdmbGlwJyxcclxuICBDTE9DS1dJU0U6ICdjbG9ja3dpc2UnLFxyXG4gIENPVU5URVJDTE9DS1dJU0U6ICdjb3VudGVyY2xvY2t3aXNlJ1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSB1cGRhdGUgbWV0aG9kXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcclxuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxyXG4gKi9cclxuZnVuY3Rpb24gZmxpcChkYXRhLCBvcHRpb25zKSB7XHJcbiAgLy8gaWYgYGlubmVyYCBtb2RpZmllciBpcyBlbmFibGVkLCB3ZSBjYW4ndCB1c2UgdGhlIGBmbGlwYCBtb2RpZmllclxyXG4gIGlmIChpc01vZGlmaWVyRW5hYmxlZChkYXRhLmluc3RhbmNlLm1vZGlmaWVycywgJ2lubmVyJykpIHtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgaWYgKGRhdGEuZmxpcHBlZCAmJiBkYXRhLnBsYWNlbWVudCA9PT0gZGF0YS5vcmlnaW5hbFBsYWNlbWVudCkge1xyXG4gICAgLy8gc2VlbXMgbGlrZSBmbGlwIGlzIHRyeWluZyB0byBsb29wLCBwcm9iYWJseSB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2Ugb24gYW55IG9mIHRoZSBmbGlwcGFibGUgc2lkZXNcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgdmFyIGJvdW5kYXJpZXMgPSBnZXRCb3VuZGFyaWVzKGRhdGEuaW5zdGFuY2UucG9wcGVyLCBkYXRhLmluc3RhbmNlLnJlZmVyZW5jZSwgb3B0aW9ucy5wYWRkaW5nLCBvcHRpb25zLmJvdW5kYXJpZXNFbGVtZW50LCBkYXRhLnBvc2l0aW9uRml4ZWQpO1xyXG5cclxuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcclxuICB2YXIgcGxhY2VtZW50T3Bwb3NpdGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xyXG4gIHZhciB2YXJpYXRpb24gPSBkYXRhLnBsYWNlbWVudC5zcGxpdCgnLScpWzFdIHx8ICcnO1xyXG5cclxuICB2YXIgZmxpcE9yZGVyID0gW107XHJcblxyXG4gIHN3aXRjaCAob3B0aW9ucy5iZWhhdmlvcikge1xyXG4gICAgY2FzZSBCRUhBVklPUlMuRkxJUDpcclxuICAgICAgZmxpcE9yZGVyID0gW3BsYWNlbWVudCwgcGxhY2VtZW50T3Bwb3NpdGVdO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgQkVIQVZJT1JTLkNMT0NLV0lTRTpcclxuICAgICAgZmxpcE9yZGVyID0gY2xvY2t3aXNlKHBsYWNlbWVudCk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBCRUhBVklPUlMuQ09VTlRFUkNMT0NLV0lTRTpcclxuICAgICAgZmxpcE9yZGVyID0gY2xvY2t3aXNlKHBsYWNlbWVudCwgdHJ1ZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgZmxpcE9yZGVyID0gb3B0aW9ucy5iZWhhdmlvcjtcclxuICB9XHJcblxyXG4gIGZsaXBPcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChzdGVwLCBpbmRleCkge1xyXG4gICAgaWYgKHBsYWNlbWVudCAhPT0gc3RlcCB8fCBmbGlwT3JkZXIubGVuZ3RoID09PSBpbmRleCArIDEpIHtcclxuICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcclxuICAgIHBsYWNlbWVudE9wcG9zaXRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcclxuXHJcbiAgICB2YXIgcG9wcGVyT2Zmc2V0cyA9IGRhdGEub2Zmc2V0cy5wb3BwZXI7XHJcbiAgICB2YXIgcmVmT2Zmc2V0cyA9IGRhdGEub2Zmc2V0cy5yZWZlcmVuY2U7XHJcblxyXG4gICAgLy8gdXNpbmcgZmxvb3IgYmVjYXVzZSB0aGUgcmVmZXJlbmNlIG9mZnNldHMgbWF5IGNvbnRhaW4gZGVjaW1hbHMgd2UgYXJlIG5vdCBnb2luZyB0byBjb25zaWRlciBoZXJlXHJcbiAgICB2YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xyXG4gICAgdmFyIG92ZXJsYXBzUmVmID0gcGxhY2VtZW50ID09PSAnbGVmdCcgJiYgZmxvb3IocG9wcGVyT2Zmc2V0cy5yaWdodCkgPiBmbG9vcihyZWZPZmZzZXRzLmxlZnQpIHx8IHBsYWNlbWVudCA9PT0gJ3JpZ2h0JyAmJiBmbG9vcihwb3BwZXJPZmZzZXRzLmxlZnQpIDwgZmxvb3IocmVmT2Zmc2V0cy5yaWdodCkgfHwgcGxhY2VtZW50ID09PSAndG9wJyAmJiBmbG9vcihwb3BwZXJPZmZzZXRzLmJvdHRvbSkgPiBmbG9vcihyZWZPZmZzZXRzLnRvcCkgfHwgcGxhY2VtZW50ID09PSAnYm90dG9tJyAmJiBmbG9vcihwb3BwZXJPZmZzZXRzLnRvcCkgPCBmbG9vcihyZWZPZmZzZXRzLmJvdHRvbSk7XHJcblxyXG4gICAgdmFyIG92ZXJmbG93c0xlZnQgPSBmbG9vcihwb3BwZXJPZmZzZXRzLmxlZnQpIDwgZmxvb3IoYm91bmRhcmllcy5sZWZ0KTtcclxuICAgIHZhciBvdmVyZmxvd3NSaWdodCA9IGZsb29yKHBvcHBlck9mZnNldHMucmlnaHQpID4gZmxvb3IoYm91bmRhcmllcy5yaWdodCk7XHJcbiAgICB2YXIgb3ZlcmZsb3dzVG9wID0gZmxvb3IocG9wcGVyT2Zmc2V0cy50b3ApIDwgZmxvb3IoYm91bmRhcmllcy50b3ApO1xyXG4gICAgdmFyIG92ZXJmbG93c0JvdHRvbSA9IGZsb29yKHBvcHBlck9mZnNldHMuYm90dG9tKSA+IGZsb29yKGJvdW5kYXJpZXMuYm90dG9tKTtcclxuXHJcbiAgICB2YXIgb3ZlcmZsb3dzQm91bmRhcmllcyA9IHBsYWNlbWVudCA9PT0gJ2xlZnQnICYmIG92ZXJmbG93c0xlZnQgfHwgcGxhY2VtZW50ID09PSAncmlnaHQnICYmIG92ZXJmbG93c1JpZ2h0IHx8IHBsYWNlbWVudCA9PT0gJ3RvcCcgJiYgb3ZlcmZsb3dzVG9wIHx8IHBsYWNlbWVudCA9PT0gJ2JvdHRvbScgJiYgb3ZlcmZsb3dzQm90dG9tO1xyXG5cclxuICAgIC8vIGZsaXAgdGhlIHZhcmlhdGlvbiBpZiByZXF1aXJlZFxyXG4gICAgdmFyIGlzVmVydGljYWwgPSBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBsYWNlbWVudCkgIT09IC0xO1xyXG4gICAgdmFyIGZsaXBwZWRWYXJpYXRpb24gPSAhIW9wdGlvbnMuZmxpcFZhcmlhdGlvbnMgJiYgKGlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnc3RhcnQnICYmIG92ZXJmbG93c0xlZnQgfHwgaXNWZXJ0aWNhbCAmJiB2YXJpYXRpb24gPT09ICdlbmQnICYmIG92ZXJmbG93c1JpZ2h0IHx8ICFpc1ZlcnRpY2FsICYmIHZhcmlhdGlvbiA9PT0gJ3N0YXJ0JyAmJiBvdmVyZmxvd3NUb3AgfHwgIWlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnZW5kJyAmJiBvdmVyZmxvd3NCb3R0b20pO1xyXG5cclxuICAgIGlmIChvdmVybGFwc1JlZiB8fCBvdmVyZmxvd3NCb3VuZGFyaWVzIHx8IGZsaXBwZWRWYXJpYXRpb24pIHtcclxuICAgICAgLy8gdGhpcyBib29sZWFuIHRvIGRldGVjdCBhbnkgZmxpcCBsb29wXHJcbiAgICAgIGRhdGEuZmxpcHBlZCA9IHRydWU7XHJcblxyXG4gICAgICBpZiAob3ZlcmxhcHNSZWYgfHwgb3ZlcmZsb3dzQm91bmRhcmllcykge1xyXG4gICAgICAgIHBsYWNlbWVudCA9IGZsaXBPcmRlcltpbmRleCArIDFdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZmxpcHBlZFZhcmlhdGlvbikge1xyXG4gICAgICAgIHZhcmlhdGlvbiA9IGdldE9wcG9zaXRlVmFyaWF0aW9uKHZhcmlhdGlvbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRhdGEucGxhY2VtZW50ID0gcGxhY2VtZW50ICsgKHZhcmlhdGlvbiA/ICctJyArIHZhcmlhdGlvbiA6ICcnKTtcclxuXHJcbiAgICAgIC8vIHRoaXMgb2JqZWN0IGNvbnRhaW5zIGBwb3NpdGlvbmAsIHdlIHdhbnQgdG8gcHJlc2VydmUgaXQgYWxvbmcgd2l0aFxyXG4gICAgICAvLyBhbnkgYWRkaXRpb25hbCBwcm9wZXJ0eSB3ZSBtYXkgYWRkIGluIHRoZSBmdXR1cmVcclxuICAgICAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IF9leHRlbmRzKHt9LCBkYXRhLm9mZnNldHMucG9wcGVyLCBnZXRQb3BwZXJPZmZzZXRzKGRhdGEuaW5zdGFuY2UucG9wcGVyLCBkYXRhLm9mZnNldHMucmVmZXJlbmNlLCBkYXRhLnBsYWNlbWVudCkpO1xyXG5cclxuICAgICAgZGF0YSA9IHJ1bk1vZGlmaWVycyhkYXRhLmluc3RhbmNlLm1vZGlmaWVycywgZGF0YSwgJ2ZsaXAnKTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSB1cGRhdGUgbWV0aG9kXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcclxuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxyXG4gKi9cclxuZnVuY3Rpb24ga2VlcFRvZ2V0aGVyKGRhdGEpIHtcclxuICB2YXIgX2RhdGEkb2Zmc2V0cyA9IGRhdGEub2Zmc2V0cyxcclxuICAgICAgcG9wcGVyID0gX2RhdGEkb2Zmc2V0cy5wb3BwZXIsXHJcbiAgICAgIHJlZmVyZW5jZSA9IF9kYXRhJG9mZnNldHMucmVmZXJlbmNlO1xyXG5cclxuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcclxuICB2YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xyXG4gIHZhciBpc1ZlcnRpY2FsID0gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpICE9PSAtMTtcclxuICB2YXIgc2lkZSA9IGlzVmVydGljYWwgPyAncmlnaHQnIDogJ2JvdHRvbSc7XHJcbiAgdmFyIG9wU2lkZSA9IGlzVmVydGljYWwgPyAnbGVmdCcgOiAndG9wJztcclxuICB2YXIgbWVhc3VyZW1lbnQgPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xyXG5cclxuICBpZiAocG9wcGVyW3NpZGVdIDwgZmxvb3IocmVmZXJlbmNlW29wU2lkZV0pKSB7XHJcbiAgICBkYXRhLm9mZnNldHMucG9wcGVyW29wU2lkZV0gPSBmbG9vcihyZWZlcmVuY2Vbb3BTaWRlXSkgLSBwb3BwZXJbbWVhc3VyZW1lbnRdO1xyXG4gIH1cclxuICBpZiAocG9wcGVyW29wU2lkZV0gPiBmbG9vcihyZWZlcmVuY2Vbc2lkZV0pKSB7XHJcbiAgICBkYXRhLm9mZnNldHMucG9wcGVyW29wU2lkZV0gPSBmbG9vcihyZWZlcmVuY2Vbc2lkZV0pO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGRhdGE7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBjb250YWluaW5nIHZhbHVlICsgdW5pdCBpbnRvIGEgcHggdmFsdWUgbnVtYmVyXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAbWVtYmVyb2Yge21vZGlmaWVyc35vZmZzZXR9XHJcbiAqIEBwcml2YXRlXHJcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBzdHIgLSBWYWx1ZSArIHVuaXQgc3RyaW5nXHJcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBtZWFzdXJlbWVudCAtIGBoZWlnaHRgIG9yIGB3aWR0aGBcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IHBvcHBlck9mZnNldHNcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IHJlZmVyZW5jZU9mZnNldHNcclxuICogQHJldHVybnMge051bWJlcnxTdHJpbmd9XHJcbiAqIFZhbHVlIGluIHBpeGVscywgb3Igb3JpZ2luYWwgc3RyaW5nIGlmIG5vIHZhbHVlcyB3ZXJlIGV4dHJhY3RlZFxyXG4gKi9cclxuZnVuY3Rpb24gdG9WYWx1ZShzdHIsIG1lYXN1cmVtZW50LCBwb3BwZXJPZmZzZXRzLCByZWZlcmVuY2VPZmZzZXRzKSB7XHJcbiAgLy8gc2VwYXJhdGUgdmFsdWUgZnJvbSB1bml0XHJcbiAgdmFyIHNwbGl0ID0gc3RyLm1hdGNoKC8oKD86XFwtfFxcKyk/XFxkKlxcLj9cXGQqKSguKikvKTtcclxuICB2YXIgdmFsdWUgPSArc3BsaXRbMV07XHJcbiAgdmFyIHVuaXQgPSBzcGxpdFsyXTtcclxuXHJcbiAgLy8gSWYgaXQncyBub3QgYSBudW1iZXIgaXQncyBhbiBvcGVyYXRvciwgSSBndWVzc1xyXG4gIGlmICghdmFsdWUpIHtcclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuICBpZiAodW5pdC5pbmRleE9mKCclJykgPT09IDApIHtcclxuICAgIHZhciBlbGVtZW50ID0gdm9pZCAwO1xyXG4gICAgc3dpdGNoICh1bml0KSB7XHJcbiAgICAgIGNhc2UgJyVwJzpcclxuICAgICAgICBlbGVtZW50ID0gcG9wcGVyT2Zmc2V0cztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnJSc6XHJcbiAgICAgIGNhc2UgJyVyJzpcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBlbGVtZW50ID0gcmVmZXJlbmNlT2Zmc2V0cztcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3QoZWxlbWVudCk7XHJcbiAgICByZXR1cm4gcmVjdFttZWFzdXJlbWVudF0gLyAxMDAgKiB2YWx1ZTtcclxuICB9IGVsc2UgaWYgKHVuaXQgPT09ICd2aCcgfHwgdW5pdCA9PT0gJ3Z3Jykge1xyXG4gICAgLy8gaWYgaXMgYSB2aCBvciB2dywgd2UgY2FsY3VsYXRlIHRoZSBzaXplIGJhc2VkIG9uIHRoZSB2aWV3cG9ydFxyXG4gICAgdmFyIHNpemUgPSB2b2lkIDA7XHJcbiAgICBpZiAodW5pdCA9PT0gJ3ZoJykge1xyXG4gICAgICBzaXplID0gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCwgd2luZG93LmlubmVySGVpZ2h0IHx8IDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2l6ZSA9IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCwgd2luZG93LmlubmVyV2lkdGggfHwgMCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2l6ZSAvIDEwMCAqIHZhbHVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBpZiBpcyBhbiBleHBsaWNpdCBwaXhlbCB1bml0LCB3ZSBnZXQgcmlkIG9mIHRoZSB1bml0IGFuZCBrZWVwIHRoZSB2YWx1ZVxyXG4gICAgLy8gaWYgaXMgYW4gaW1wbGljaXQgdW5pdCwgaXQncyBweCwgYW5kIHdlIHJldHVybiBqdXN0IHRoZSB2YWx1ZVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFBhcnNlIGFuIGBvZmZzZXRgIHN0cmluZyB0byBleHRyYXBvbGF0ZSBgeGAgYW5kIGB5YCBudW1lcmljIG9mZnNldHMuXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAbWVtYmVyb2Yge21vZGlmaWVyc35vZmZzZXR9XHJcbiAqIEBwcml2YXRlXHJcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBvZmZzZXRcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IHBvcHBlck9mZnNldHNcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IHJlZmVyZW5jZU9mZnNldHNcclxuICogQGFyZ3VtZW50IHtTdHJpbmd9IGJhc2VQbGFjZW1lbnRcclxuICogQHJldHVybnMge0FycmF5fSBhIHR3byBjZWxscyBhcnJheSB3aXRoIHggYW5kIHkgb2Zmc2V0cyBpbiBudW1iZXJzXHJcbiAqL1xyXG5mdW5jdGlvbiBwYXJzZU9mZnNldChvZmZzZXQsIHBvcHBlck9mZnNldHMsIHJlZmVyZW5jZU9mZnNldHMsIGJhc2VQbGFjZW1lbnQpIHtcclxuICB2YXIgb2Zmc2V0cyA9IFswLCAwXTtcclxuXHJcbiAgLy8gVXNlIGhlaWdodCBpZiBwbGFjZW1lbnQgaXMgbGVmdCBvciByaWdodCBhbmQgaW5kZXggaXMgMCBvdGhlcndpc2UgdXNlIHdpZHRoXHJcbiAgLy8gaW4gdGhpcyB3YXkgdGhlIGZpcnN0IG9mZnNldCB3aWxsIHVzZSBhbiBheGlzIGFuZCB0aGUgc2Vjb25kIG9uZVxyXG4gIC8vIHdpbGwgdXNlIHRoZSBvdGhlciBvbmVcclxuICB2YXIgdXNlSGVpZ2h0ID0gWydyaWdodCcsICdsZWZ0J10uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XHJcblxyXG4gIC8vIFNwbGl0IHRoZSBvZmZzZXQgc3RyaW5nIHRvIG9idGFpbiBhIGxpc3Qgb2YgdmFsdWVzIGFuZCBvcGVyYW5kc1xyXG4gIC8vIFRoZSByZWdleCBhZGRyZXNzZXMgdmFsdWVzIHdpdGggdGhlIHBsdXMgb3IgbWludXMgc2lnbiBpbiBmcm9udCAoKzEwLCAtMjAsIGV0YylcclxuICB2YXIgZnJhZ21lbnRzID0gb2Zmc2V0LnNwbGl0KC8oXFwrfFxcLSkvKS5tYXAoZnVuY3Rpb24gKGZyYWcpIHtcclxuICAgIHJldHVybiBmcmFnLnRyaW0oKTtcclxuICB9KTtcclxuXHJcbiAgLy8gRGV0ZWN0IGlmIHRoZSBvZmZzZXQgc3RyaW5nIGNvbnRhaW5zIGEgcGFpciBvZiB2YWx1ZXMgb3IgYSBzaW5nbGUgb25lXHJcbiAgLy8gdGhleSBjb3VsZCBiZSBzZXBhcmF0ZWQgYnkgY29tbWEgb3Igc3BhY2VcclxuICB2YXIgZGl2aWRlciA9IGZyYWdtZW50cy5pbmRleE9mKGZpbmQoZnJhZ21lbnRzLCBmdW5jdGlvbiAoZnJhZykge1xyXG4gICAgcmV0dXJuIGZyYWcuc2VhcmNoKC8sfFxccy8pICE9PSAtMTtcclxuICB9KSk7XHJcblxyXG4gIGlmIChmcmFnbWVudHNbZGl2aWRlcl0gJiYgZnJhZ21lbnRzW2RpdmlkZXJdLmluZGV4T2YoJywnKSA9PT0gLTEpIHtcclxuICAgIGNvbnNvbGUud2FybignT2Zmc2V0cyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UocykgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIGNvbW1hICgsKSBpbnN0ZWFkLicpO1xyXG4gIH1cclxuXHJcbiAgLy8gSWYgZGl2aWRlciBpcyBmb3VuZCwgd2UgZGl2aWRlIHRoZSBsaXN0IG9mIHZhbHVlcyBhbmQgb3BlcmFuZHMgdG8gZGl2aWRlXHJcbiAgLy8gdGhlbSBieSBvZnNldCBYIGFuZCBZLlxyXG4gIHZhciBzcGxpdFJlZ2V4ID0gL1xccyosXFxzKnxcXHMrLztcclxuICB2YXIgb3BzID0gZGl2aWRlciAhPT0gLTEgPyBbZnJhZ21lbnRzLnNsaWNlKDAsIGRpdmlkZXIpLmNvbmNhdChbZnJhZ21lbnRzW2RpdmlkZXJdLnNwbGl0KHNwbGl0UmVnZXgpWzBdXSksIFtmcmFnbWVudHNbZGl2aWRlcl0uc3BsaXQoc3BsaXRSZWdleClbMV1dLmNvbmNhdChmcmFnbWVudHMuc2xpY2UoZGl2aWRlciArIDEpKV0gOiBbZnJhZ21lbnRzXTtcclxuXHJcbiAgLy8gQ29udmVydCB0aGUgdmFsdWVzIHdpdGggdW5pdHMgdG8gYWJzb2x1dGUgcGl4ZWxzIHRvIGFsbG93IG91ciBjb21wdXRhdGlvbnNcclxuICBvcHMgPSBvcHMubWFwKGZ1bmN0aW9uIChvcCwgaW5kZXgpIHtcclxuICAgIC8vIE1vc3Qgb2YgdGhlIHVuaXRzIHJlbHkgb24gdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBwb3BwZXJcclxuICAgIHZhciBtZWFzdXJlbWVudCA9IChpbmRleCA9PT0gMSA/ICF1c2VIZWlnaHQgOiB1c2VIZWlnaHQpID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xyXG4gICAgdmFyIG1lcmdlV2l0aFByZXZpb3VzID0gZmFsc2U7XHJcbiAgICByZXR1cm4gb3BcclxuICAgIC8vIFRoaXMgYWdncmVnYXRlcyBhbnkgYCtgIG9yIGAtYCBzaWduIHRoYXQgYXJlbid0IGNvbnNpZGVyZWQgb3BlcmF0b3JzXHJcbiAgICAvLyBlLmcuOiAxMCArICs1ID0+IFsxMCwgKywgKzVdXHJcbiAgICAucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICAgIGlmIChhW2EubGVuZ3RoIC0gMV0gPT09ICcnICYmIFsnKycsICctJ10uaW5kZXhPZihiKSAhPT0gLTEpIHtcclxuICAgICAgICBhW2EubGVuZ3RoIC0gMV0gPSBiO1xyXG4gICAgICAgIG1lcmdlV2l0aFByZXZpb3VzID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gYTtcclxuICAgICAgfSBlbHNlIGlmIChtZXJnZVdpdGhQcmV2aW91cykge1xyXG4gICAgICAgIGFbYS5sZW5ndGggLSAxXSArPSBiO1xyXG4gICAgICAgIG1lcmdlV2l0aFByZXZpb3VzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGEuY29uY2F0KGIpO1xyXG4gICAgICB9XHJcbiAgICB9LCBbXSlcclxuICAgIC8vIEhlcmUgd2UgY29udmVydCB0aGUgc3RyaW5nIHZhbHVlcyBpbnRvIG51bWJlciB2YWx1ZXMgKGluIHB4KVxyXG4gICAgLm1hcChmdW5jdGlvbiAoc3RyKSB7XHJcbiAgICAgIHJldHVybiB0b1ZhbHVlKHN0ciwgbWVhc3VyZW1lbnQsIHBvcHBlck9mZnNldHMsIHJlZmVyZW5jZU9mZnNldHMpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIC8vIExvb3AgdHJvdWdoIHRoZSBvZmZzZXRzIGFycmF5cyBhbmQgZXhlY3V0ZSB0aGUgb3BlcmF0aW9uc1xyXG4gIG9wcy5mb3JFYWNoKGZ1bmN0aW9uIChvcCwgaW5kZXgpIHtcclxuICAgIG9wLmZvckVhY2goZnVuY3Rpb24gKGZyYWcsIGluZGV4Mikge1xyXG4gICAgICBpZiAoaXNOdW1lcmljKGZyYWcpKSB7XHJcbiAgICAgICAgb2Zmc2V0c1tpbmRleF0gKz0gZnJhZyAqIChvcFtpbmRleDIgLSAxXSA9PT0gJy0nID8gLTEgOiAxKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG9mZnNldHM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAZnVuY3Rpb25cclxuICogQG1lbWJlcm9mIE1vZGlmaWVyc1xyXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgdXBkYXRlIG1ldGhvZFxyXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXHJcbiAqIEBhcmd1bWVudCB7TnVtYmVyfFN0cmluZ30gb3B0aW9ucy5vZmZzZXQ9MFxyXG4gKiBUaGUgb2Zmc2V0IHZhbHVlIGFzIGRlc2NyaWJlZCBpbiB0aGUgbW9kaWZpZXIgZGVzY3JpcHRpb25cclxuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxyXG4gKi9cclxuZnVuY3Rpb24gb2Zmc2V0KGRhdGEsIF9yZWYpIHtcclxuICB2YXIgb2Zmc2V0ID0gX3JlZi5vZmZzZXQ7XHJcbiAgdmFyIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50LFxyXG4gICAgICBfZGF0YSRvZmZzZXRzID0gZGF0YS5vZmZzZXRzLFxyXG4gICAgICBwb3BwZXIgPSBfZGF0YSRvZmZzZXRzLnBvcHBlcixcclxuICAgICAgcmVmZXJlbmNlID0gX2RhdGEkb2Zmc2V0cy5yZWZlcmVuY2U7XHJcblxyXG4gIHZhciBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XHJcblxyXG4gIHZhciBvZmZzZXRzID0gdm9pZCAwO1xyXG4gIGlmIChpc051bWVyaWMoK29mZnNldCkpIHtcclxuICAgIG9mZnNldHMgPSBbK29mZnNldCwgMF07XHJcbiAgfSBlbHNlIHtcclxuICAgIG9mZnNldHMgPSBwYXJzZU9mZnNldChvZmZzZXQsIHBvcHBlciwgcmVmZXJlbmNlLCBiYXNlUGxhY2VtZW50KTtcclxuICB9XHJcblxyXG4gIGlmIChiYXNlUGxhY2VtZW50ID09PSAnbGVmdCcpIHtcclxuICAgIHBvcHBlci50b3AgKz0gb2Zmc2V0c1swXTtcclxuICAgIHBvcHBlci5sZWZ0IC09IG9mZnNldHNbMV07XHJcbiAgfSBlbHNlIGlmIChiYXNlUGxhY2VtZW50ID09PSAncmlnaHQnKSB7XHJcbiAgICBwb3BwZXIudG9wICs9IG9mZnNldHNbMF07XHJcbiAgICBwb3BwZXIubGVmdCArPSBvZmZzZXRzWzFdO1xyXG4gIH0gZWxzZSBpZiAoYmFzZVBsYWNlbWVudCA9PT0gJ3RvcCcpIHtcclxuICAgIHBvcHBlci5sZWZ0ICs9IG9mZnNldHNbMF07XHJcbiAgICBwb3BwZXIudG9wIC09IG9mZnNldHNbMV07XHJcbiAgfSBlbHNlIGlmIChiYXNlUGxhY2VtZW50ID09PSAnYm90dG9tJykge1xyXG4gICAgcG9wcGVyLmxlZnQgKz0gb2Zmc2V0c1swXTtcclxuICAgIHBvcHBlci50b3AgKz0gb2Zmc2V0c1sxXTtcclxuICB9XHJcblxyXG4gIGRhdGEucG9wcGVyID0gcG9wcGVyO1xyXG4gIHJldHVybiBkYXRhO1xyXG59XHJcblxyXG4vKipcclxuICogQGZ1bmN0aW9uXHJcbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IGB1cGRhdGVgIG1ldGhvZFxyXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBkYXRhIG9iamVjdCwgcHJvcGVybHkgbW9kaWZpZWRcclxuICovXHJcbmZ1bmN0aW9uIHByZXZlbnRPdmVyZmxvdyhkYXRhLCBvcHRpb25zKSB7XHJcbiAgdmFyIGJvdW5kYXJpZXNFbGVtZW50ID0gb3B0aW9ucy5ib3VuZGFyaWVzRWxlbWVudCB8fCBnZXRPZmZzZXRQYXJlbnQoZGF0YS5pbnN0YW5jZS5wb3BwZXIpO1xyXG5cclxuICAvLyBJZiBvZmZzZXRQYXJlbnQgaXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LCB3ZSByZWFsbHkgd2FudCB0b1xyXG4gIC8vIGdvIG9uZSBzdGVwIHVwIGFuZCB1c2UgdGhlIG5leHQgb2Zmc2V0UGFyZW50IGFzIHJlZmVyZW5jZSB0b1xyXG4gIC8vIGF2b2lkIHRvIG1ha2UgdGhpcyBtb2RpZmllciBjb21wbGV0ZWx5IHVzZWxlc3MgYW5kIGxvb2sgbGlrZSBicm9rZW5cclxuICBpZiAoZGF0YS5pbnN0YW5jZS5yZWZlcmVuY2UgPT09IGJvdW5kYXJpZXNFbGVtZW50KSB7XHJcbiAgICBib3VuZGFyaWVzRWxlbWVudCA9IGdldE9mZnNldFBhcmVudChib3VuZGFyaWVzRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICAvLyBOT1RFOiBET00gYWNjZXNzIGhlcmVcclxuICAvLyByZXNldHMgdGhlIHBvcHBlcidzIHBvc2l0aW9uIHNvIHRoYXQgdGhlIGRvY3VtZW50IHNpemUgY2FuIGJlIGNhbGN1bGF0ZWQgZXhjbHVkaW5nXHJcbiAgLy8gdGhlIHNpemUgb2YgdGhlIHBvcHBlciBlbGVtZW50IGl0c2VsZlxyXG4gIHZhciB0cmFuc2Zvcm1Qcm9wID0gZ2V0U3VwcG9ydGVkUHJvcGVydHlOYW1lKCd0cmFuc2Zvcm0nKTtcclxuICB2YXIgcG9wcGVyU3R5bGVzID0gZGF0YS5pbnN0YW5jZS5wb3BwZXIuc3R5bGU7IC8vIGFzc2lnbm1lbnQgdG8gaGVscCBtaW5pZmljYXRpb25cclxuICB2YXIgdG9wID0gcG9wcGVyU3R5bGVzLnRvcCxcclxuICAgICAgbGVmdCA9IHBvcHBlclN0eWxlcy5sZWZ0LFxyXG4gICAgICB0cmFuc2Zvcm0gPSBwb3BwZXJTdHlsZXNbdHJhbnNmb3JtUHJvcF07XHJcblxyXG4gIHBvcHBlclN0eWxlcy50b3AgPSAnJztcclxuICBwb3BwZXJTdHlsZXMubGVmdCA9ICcnO1xyXG4gIHBvcHBlclN0eWxlc1t0cmFuc2Zvcm1Qcm9wXSA9ICcnO1xyXG5cclxuICB2YXIgYm91bmRhcmllcyA9IGdldEJvdW5kYXJpZXMoZGF0YS5pbnN0YW5jZS5wb3BwZXIsIGRhdGEuaW5zdGFuY2UucmVmZXJlbmNlLCBvcHRpb25zLnBhZGRpbmcsIGJvdW5kYXJpZXNFbGVtZW50LCBkYXRhLnBvc2l0aW9uRml4ZWQpO1xyXG5cclxuICAvLyBOT1RFOiBET00gYWNjZXNzIGhlcmVcclxuICAvLyByZXN0b3JlcyB0aGUgb3JpZ2luYWwgc3R5bGUgcHJvcGVydGllcyBhZnRlciB0aGUgb2Zmc2V0cyBoYXZlIGJlZW4gY29tcHV0ZWRcclxuICBwb3BwZXJTdHlsZXMudG9wID0gdG9wO1xyXG4gIHBvcHBlclN0eWxlcy5sZWZ0ID0gbGVmdDtcclxuICBwb3BwZXJTdHlsZXNbdHJhbnNmb3JtUHJvcF0gPSB0cmFuc2Zvcm07XHJcblxyXG4gIG9wdGlvbnMuYm91bmRhcmllcyA9IGJvdW5kYXJpZXM7XHJcblxyXG4gIHZhciBvcmRlciA9IG9wdGlvbnMucHJpb3JpdHk7XHJcbiAgdmFyIHBvcHBlciA9IGRhdGEub2Zmc2V0cy5wb3BwZXI7XHJcblxyXG4gIHZhciBjaGVjayA9IHtcclxuICAgIHByaW1hcnk6IGZ1bmN0aW9uIHByaW1hcnkocGxhY2VtZW50KSB7XHJcbiAgICAgIHZhciB2YWx1ZSA9IHBvcHBlcltwbGFjZW1lbnRdO1xyXG4gICAgICBpZiAocG9wcGVyW3BsYWNlbWVudF0gPCBib3VuZGFyaWVzW3BsYWNlbWVudF0gJiYgIW9wdGlvbnMuZXNjYXBlV2l0aFJlZmVyZW5jZSkge1xyXG4gICAgICAgIHZhbHVlID0gTWF0aC5tYXgocG9wcGVyW3BsYWNlbWVudF0sIGJvdW5kYXJpZXNbcGxhY2VtZW50XSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KHt9LCBwbGFjZW1lbnQsIHZhbHVlKTtcclxuICAgIH0sXHJcbiAgICBzZWNvbmRhcnk6IGZ1bmN0aW9uIHNlY29uZGFyeShwbGFjZW1lbnQpIHtcclxuICAgICAgdmFyIG1haW5TaWRlID0gcGxhY2VtZW50ID09PSAncmlnaHQnID8gJ2xlZnQnIDogJ3RvcCc7XHJcbiAgICAgIHZhciB2YWx1ZSA9IHBvcHBlclttYWluU2lkZV07XHJcbiAgICAgIGlmIChwb3BwZXJbcGxhY2VtZW50XSA+IGJvdW5kYXJpZXNbcGxhY2VtZW50XSAmJiAhb3B0aW9ucy5lc2NhcGVXaXRoUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbihwb3BwZXJbbWFpblNpZGVdLCBib3VuZGFyaWVzW3BsYWNlbWVudF0gLSAocGxhY2VtZW50ID09PSAncmlnaHQnID8gcG9wcGVyLndpZHRoIDogcG9wcGVyLmhlaWdodCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBkZWZpbmVQcm9wZXJ0eSh7fSwgbWFpblNpZGUsIHZhbHVlKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBvcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcclxuICAgIHZhciBzaWRlID0gWydsZWZ0JywgJ3RvcCddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTEgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5JztcclxuICAgIHBvcHBlciA9IF9leHRlbmRzKHt9LCBwb3BwZXIsIGNoZWNrW3NpZGVdKHBsYWNlbWVudCkpO1xyXG4gIH0pO1xyXG5cclxuICBkYXRhLm9mZnNldHMucG9wcGVyID0gcG9wcGVyO1xyXG5cclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBgdXBkYXRlYCBtZXRob2RcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXHJcbiAqL1xyXG5mdW5jdGlvbiBzaGlmdChkYXRhKSB7XHJcbiAgdmFyIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50O1xyXG4gIHZhciBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XHJcbiAgdmFyIHNoaWZ0dmFyaWF0aW9uID0gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XHJcblxyXG4gIC8vIGlmIHNoaWZ0IHNoaWZ0dmFyaWF0aW9uIGlzIHNwZWNpZmllZCwgcnVuIHRoZSBtb2RpZmllclxyXG4gIGlmIChzaGlmdHZhcmlhdGlvbikge1xyXG4gICAgdmFyIF9kYXRhJG9mZnNldHMgPSBkYXRhLm9mZnNldHMsXHJcbiAgICAgICAgcmVmZXJlbmNlID0gX2RhdGEkb2Zmc2V0cy5yZWZlcmVuY2UsXHJcbiAgICAgICAgcG9wcGVyID0gX2RhdGEkb2Zmc2V0cy5wb3BwZXI7XHJcblxyXG4gICAgdmFyIGlzVmVydGljYWwgPSBbJ2JvdHRvbScsICd0b3AnXS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpICE9PSAtMTtcclxuICAgIHZhciBzaWRlID0gaXNWZXJ0aWNhbCA/ICdsZWZ0JyA6ICd0b3AnO1xyXG4gICAgdmFyIG1lYXN1cmVtZW50ID0gaXNWZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcclxuXHJcbiAgICB2YXIgc2hpZnRPZmZzZXRzID0ge1xyXG4gICAgICBzdGFydDogZGVmaW5lUHJvcGVydHkoe30sIHNpZGUsIHJlZmVyZW5jZVtzaWRlXSksXHJcbiAgICAgIGVuZDogZGVmaW5lUHJvcGVydHkoe30sIHNpZGUsIHJlZmVyZW5jZVtzaWRlXSArIHJlZmVyZW5jZVttZWFzdXJlbWVudF0gLSBwb3BwZXJbbWVhc3VyZW1lbnRdKVxyXG4gICAgfTtcclxuXHJcbiAgICBkYXRhLm9mZnNldHMucG9wcGVyID0gX2V4dGVuZHMoe30sIHBvcHBlciwgc2hpZnRPZmZzZXRzW3NoaWZ0dmFyaWF0aW9uXSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSB1cGRhdGUgbWV0aG9kXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcclxuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxyXG4gKi9cclxuZnVuY3Rpb24gaGlkZShkYXRhKSB7XHJcbiAgaWYgKCFpc01vZGlmaWVyUmVxdWlyZWQoZGF0YS5pbnN0YW5jZS5tb2RpZmllcnMsICdoaWRlJywgJ3ByZXZlbnRPdmVyZmxvdycpKSB7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHZhciByZWZSZWN0ID0gZGF0YS5vZmZzZXRzLnJlZmVyZW5jZTtcclxuICB2YXIgYm91bmQgPSBmaW5kKGRhdGEuaW5zdGFuY2UubW9kaWZpZXJzLCBmdW5jdGlvbiAobW9kaWZpZXIpIHtcclxuICAgIHJldHVybiBtb2RpZmllci5uYW1lID09PSAncHJldmVudE92ZXJmbG93JztcclxuICB9KS5ib3VuZGFyaWVzO1xyXG5cclxuICBpZiAocmVmUmVjdC5ib3R0b20gPCBib3VuZC50b3AgfHwgcmVmUmVjdC5sZWZ0ID4gYm91bmQucmlnaHQgfHwgcmVmUmVjdC50b3AgPiBib3VuZC5ib3R0b20gfHwgcmVmUmVjdC5yaWdodCA8IGJvdW5kLmxlZnQpIHtcclxuICAgIC8vIEF2b2lkIHVubmVjZXNzYXJ5IERPTSBhY2Nlc3MgaWYgdmlzaWJpbGl0eSBoYXNuJ3QgY2hhbmdlZFxyXG4gICAgaWYgKGRhdGEuaGlkZSA9PT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBkYXRhLmhpZGUgPSB0cnVlO1xyXG4gICAgZGF0YS5hdHRyaWJ1dGVzWyd4LW91dC1vZi1ib3VuZGFyaWVzJ10gPSAnJztcclxuICB9IGVsc2Uge1xyXG4gICAgLy8gQXZvaWQgdW5uZWNlc3NhcnkgRE9NIGFjY2VzcyBpZiB2aXNpYmlsaXR5IGhhc24ndCBjaGFuZ2VkXHJcbiAgICBpZiAoZGF0YS5oaWRlID09PSBmYWxzZSkge1xyXG4gICAgICByZXR1cm4gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBkYXRhLmhpZGUgPSBmYWxzZTtcclxuICAgIGRhdGEuYXR0cmlidXRlc1sneC1vdXQtb2YtYm91bmRhcmllcyddID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXHJcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBgdXBkYXRlYCBtZXRob2RcclxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXHJcbiAqL1xyXG5mdW5jdGlvbiBpbm5lcihkYXRhKSB7XHJcbiAgdmFyIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50O1xyXG4gIHZhciBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XHJcbiAgdmFyIF9kYXRhJG9mZnNldHMgPSBkYXRhLm9mZnNldHMsXHJcbiAgICAgIHBvcHBlciA9IF9kYXRhJG9mZnNldHMucG9wcGVyLFxyXG4gICAgICByZWZlcmVuY2UgPSBfZGF0YSRvZmZzZXRzLnJlZmVyZW5jZTtcclxuXHJcbiAgdmFyIGlzSG9yaXogPSBbJ2xlZnQnLCAncmlnaHQnXS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpICE9PSAtMTtcclxuXHJcbiAgdmFyIHN1YnRyYWN0TGVuZ3RoID0gWyd0b3AnLCAnbGVmdCddLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPT09IC0xO1xyXG5cclxuICBwb3BwZXJbaXNIb3JpeiA/ICdsZWZ0JyA6ICd0b3AnXSA9IHJlZmVyZW5jZVtiYXNlUGxhY2VtZW50XSAtIChzdWJ0cmFjdExlbmd0aCA/IHBvcHBlcltpc0hvcml6ID8gJ3dpZHRoJyA6ICdoZWlnaHQnXSA6IDApO1xyXG5cclxuICBkYXRhLnBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XHJcbiAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IGdldENsaWVudFJlY3QocG9wcGVyKTtcclxuXHJcbiAgcmV0dXJuIGRhdGE7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNb2RpZmllciBmdW5jdGlvbiwgZWFjaCBtb2RpZmllciBjYW4gaGF2ZSBhIGZ1bmN0aW9uIG9mIHRoaXMgdHlwZSBhc3NpZ25lZFxyXG4gKiB0byBpdHMgYGZuYCBwcm9wZXJ0eS48YnIgLz5cclxuICogVGhlc2UgZnVuY3Rpb25zIHdpbGwgYmUgY2FsbGVkIG9uIGVhY2ggdXBkYXRlLCB0aGlzIG1lYW5zIHRoYXQgeW91IG11c3RcclxuICogbWFrZSBzdXJlIHRoZXkgYXJlIHBlcmZvcm1hbnQgZW5vdWdoIHRvIGF2b2lkIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gTW9kaWZpZXJGblxyXG4gKiBAYXJndW1lbnQge2RhdGFPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IGB1cGRhdGVgIG1ldGhvZFxyXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXHJcbiAqIEByZXR1cm5zIHtkYXRhT2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIE1vZGlmaWVycyBhcmUgcGx1Z2lucyB1c2VkIHRvIGFsdGVyIHRoZSBiZWhhdmlvciBvZiB5b3VyIHBvcHBlcnMuPGJyIC8+XHJcbiAqIFBvcHBlci5qcyB1c2VzIGEgc2V0IG9mIDkgbW9kaWZpZXJzIHRvIHByb3ZpZGUgYWxsIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXRpZXNcclxuICogbmVlZGVkIGJ5IHRoZSBsaWJyYXJ5LlxyXG4gKlxyXG4gKiBVc3VhbGx5IHlvdSBkb24ndCB3YW50IHRvIG92ZXJyaWRlIHRoZSBgb3JkZXJgLCBgZm5gIGFuZCBgb25Mb2FkYCBwcm9wcy5cclxuICogQWxsIHRoZSBvdGhlciBwcm9wZXJ0aWVzIGFyZSBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGJlIHR3ZWFrZWQuXHJcbiAqIEBuYW1lc3BhY2UgbW9kaWZpZXJzXHJcbiAqL1xyXG52YXIgbW9kaWZpZXJzID0ge1xyXG4gIC8qKlxyXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gc2hpZnQgdGhlIHBvcHBlciBvbiB0aGUgc3RhcnQgb3IgZW5kIG9mIGl0cyByZWZlcmVuY2VcclxuICAgKiBlbGVtZW50LjxiciAvPlxyXG4gICAqIEl0IHdpbGwgcmVhZCB0aGUgdmFyaWF0aW9uIG9mIHRoZSBgcGxhY2VtZW50YCBwcm9wZXJ0eS48YnIgLz5cclxuICAgKiBJdCBjYW4gYmUgb25lIGVpdGhlciBgLWVuZGAgb3IgYC1zdGFydGAuXHJcbiAgICogQG1lbWJlcm9mIG1vZGlmaWVyc1xyXG4gICAqIEBpbm5lclxyXG4gICAqL1xyXG4gIHNoaWZ0OiB7XHJcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9MTAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xyXG4gICAgb3JkZXI6IDEwMCxcclxuICAgIC8qKiBAcHJvcCB7Qm9vbGVhbn0gZW5hYmxlZD10cnVlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cclxuICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXHJcbiAgICBmbjogc2hpZnRcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBUaGUgYG9mZnNldGAgbW9kaWZpZXIgY2FuIHNoaWZ0IHlvdXIgcG9wcGVyIG9uIGJvdGggaXRzIGF4aXMuXHJcbiAgICpcclxuICAgKiBJdCBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgdW5pdHM6XHJcbiAgICogLSBgcHhgIG9yIHVuaXQtbGVzcywgaW50ZXJwcmV0ZWQgYXMgcGl4ZWxzXHJcbiAgICogLSBgJWAgb3IgYCVyYCwgcGVyY2VudGFnZSByZWxhdGl2ZSB0byB0aGUgbGVuZ3RoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudFxyXG4gICAqIC0gYCVwYCwgcGVyY2VudGFnZSByZWxhdGl2ZSB0byB0aGUgbGVuZ3RoIG9mIHRoZSBwb3BwZXIgZWxlbWVudFxyXG4gICAqIC0gYHZ3YCwgQ1NTIHZpZXdwb3J0IHdpZHRoIHVuaXRcclxuICAgKiAtIGB2aGAsIENTUyB2aWV3cG9ydCBoZWlnaHQgdW5pdFxyXG4gICAqXHJcbiAgICogRm9yIGxlbmd0aCBpcyBpbnRlbmRlZCB0aGUgbWFpbiBheGlzIHJlbGF0aXZlIHRvIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHBvcHBlci48YnIgLz5cclxuICAgKiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIHBsYWNlbWVudCBpcyBgdG9wYCBvciBgYm90dG9tYCwgdGhlIGxlbmd0aCB3aWxsIGJlIHRoZVxyXG4gICAqIGB3aWR0aGAuIEluIGNhc2Ugb2YgYGxlZnRgIG9yIGByaWdodGAsIGl0IHdpbGwgYmUgdGhlIGBoZWlnaHRgLlxyXG4gICAqXHJcbiAgICogWW91IGNhbiBwcm92aWRlIGEgc2luZ2xlIHZhbHVlIChhcyBgTnVtYmVyYCBvciBgU3RyaW5nYCksIG9yIGEgcGFpciBvZiB2YWx1ZXNcclxuICAgKiBhcyBgU3RyaW5nYCBkaXZpZGVkIGJ5IGEgY29tbWEgb3Igb25lIChvciBtb3JlKSB3aGl0ZSBzcGFjZXMuPGJyIC8+XHJcbiAgICogVGhlIGxhdHRlciBpcyBhIGRlcHJlY2F0ZWQgbWV0aG9kIGJlY2F1c2UgaXQgbGVhZHMgdG8gY29uZnVzaW9uIGFuZCB3aWxsIGJlXHJcbiAgICogcmVtb3ZlZCBpbiB2Mi48YnIgLz5cclxuICAgKiBBZGRpdGlvbmFsbHksIGl0IGFjY2VwdHMgYWRkaXRpb25zIGFuZCBzdWJ0cmFjdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgdW5pdHMuXHJcbiAgICogTm90ZSB0aGF0IG11bHRpcGxpY2F0aW9ucyBhbmQgZGl2aXNpb25zIGFyZW4ndCBzdXBwb3J0ZWQuXHJcbiAgICpcclxuICAgKiBWYWxpZCBleGFtcGxlcyBhcmU6XHJcbiAgICogYGBgXHJcbiAgICogMTBcclxuICAgKiAnMTAlJ1xyXG4gICAqICcxMCwgMTAnXHJcbiAgICogJzEwJSwgMTAnXHJcbiAgICogJzEwICsgMTAlJ1xyXG4gICAqICcxMCAtIDV2aCArIDMlJ1xyXG4gICAqICctMTBweCArIDV2aCwgNXB4IC0gNiUnXHJcbiAgICogYGBgXHJcbiAgICogPiAqKk5CKio6IElmIHlvdSBkZXNpcmUgdG8gYXBwbHkgb2Zmc2V0cyB0byB5b3VyIHBvcHBlcnMgaW4gYSB3YXkgdGhhdCBtYXkgbWFrZSB0aGVtIG92ZXJsYXBcclxuICAgKiA+IHdpdGggdGhlaXIgcmVmZXJlbmNlIGVsZW1lbnQsIHVuZm9ydHVuYXRlbHksIHlvdSB3aWxsIGhhdmUgdG8gZGlzYWJsZSB0aGUgYGZsaXBgIG1vZGlmaWVyLlxyXG4gICAqID4gWW91IGNhbiByZWFkIG1vcmUgb24gdGhpcyBhdCB0aGlzIFtpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL0ZlelZyYXN0YS9wb3BwZXIuanMvaXNzdWVzLzM3MykuXHJcbiAgICpcclxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXHJcbiAgICogQGlubmVyXHJcbiAgICovXHJcbiAgb2Zmc2V0OiB7XHJcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9MjAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xyXG4gICAgb3JkZXI6IDIwMCxcclxuICAgIC8qKiBAcHJvcCB7Qm9vbGVhbn0gZW5hYmxlZD10cnVlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cclxuICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXHJcbiAgICBmbjogb2Zmc2V0LFxyXG4gICAgLyoqIEBwcm9wIHtOdW1iZXJ8U3RyaW5nfSBvZmZzZXQ9MFxyXG4gICAgICogVGhlIG9mZnNldCB2YWx1ZSBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZGlmaWVyIGRlc2NyaXB0aW9uXHJcbiAgICAgKi9cclxuICAgIG9mZnNldDogMFxyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gcHJldmVudCB0aGUgcG9wcGVyIGZyb20gYmVpbmcgcG9zaXRpb25lZCBvdXRzaWRlIHRoZSBib3VuZGFyeS5cclxuICAgKlxyXG4gICAqIEEgc2NlbmFyaW8gZXhpc3RzIHdoZXJlIHRoZSByZWZlcmVuY2UgaXRzZWxmIGlzIG5vdCB3aXRoaW4gdGhlIGJvdW5kYXJpZXMuPGJyIC8+XHJcbiAgICogV2UgY2FuIHNheSBpdCBoYXMgXCJlc2NhcGVkIHRoZSBib3VuZGFyaWVzXCIg4oCUIG9yIGp1c3QgXCJlc2NhcGVkXCIuPGJyIC8+XHJcbiAgICogSW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgdGhlIHBvcHBlciBzaG91bGQgZWl0aGVyOlxyXG4gICAqXHJcbiAgICogLSBkZXRhY2ggZnJvbSB0aGUgcmVmZXJlbmNlIGFuZCByZW1haW4gXCJ0cmFwcGVkXCIgaW4gdGhlIGJvdW5kYXJpZXMsIG9yXHJcbiAgICogLSBpZiBpdCBzaG91bGQgaWdub3JlIHRoZSBib3VuZGFyeSBhbmQgXCJlc2NhcGUgd2l0aCBpdHMgcmVmZXJlbmNlXCJcclxuICAgKlxyXG4gICAqIFdoZW4gYGVzY2FwZVdpdGhSZWZlcmVuY2VgIGlzIHNldCB0b2B0cnVlYCBhbmQgcmVmZXJlbmNlIGlzIGNvbXBsZXRlbHlcclxuICAgKiBvdXRzaWRlIGl0cyBib3VuZGFyaWVzLCB0aGUgcG9wcGVyIHdpbGwgb3ZlcmZsb3cgKG9yIGNvbXBsZXRlbHkgbGVhdmUpXHJcbiAgICogdGhlIGJvdW5kYXJpZXMgaW4gb3JkZXIgdG8gcmVtYWluIGF0dGFjaGVkIHRvIHRoZSBlZGdlIG9mIHRoZSByZWZlcmVuY2UuXHJcbiAgICpcclxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXHJcbiAgICogQGlubmVyXHJcbiAgICovXHJcbiAgcHJldmVudE92ZXJmbG93OiB7XHJcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9MzAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xyXG4gICAgb3JkZXI6IDMwMCxcclxuICAgIC8qKiBAcHJvcCB7Qm9vbGVhbn0gZW5hYmxlZD10cnVlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cclxuICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXHJcbiAgICBmbjogcHJldmVudE92ZXJmbG93LFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcCB7QXJyYXl9IFtwcmlvcml0eT1bJ2xlZnQnLCdyaWdodCcsJ3RvcCcsJ2JvdHRvbSddXVxyXG4gICAgICogUG9wcGVyIHdpbGwgdHJ5IHRvIHByZXZlbnQgb3ZlcmZsb3cgZm9sbG93aW5nIHRoZXNlIHByaW9yaXRpZXMgYnkgZGVmYXVsdCxcclxuICAgICAqIHRoZW4sIGl0IGNvdWxkIG92ZXJmbG93IG9uIHRoZSBsZWZ0IGFuZCBvbiB0b3Agb2YgdGhlIGBib3VuZGFyaWVzRWxlbWVudGBcclxuICAgICAqL1xyXG4gICAgcHJpb3JpdHk6IFsnbGVmdCcsICdyaWdodCcsICd0b3AnLCAnYm90dG9tJ10sXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wIHtudW1iZXJ9IHBhZGRpbmc9NVxyXG4gICAgICogQW1vdW50IG9mIHBpeGVsIHVzZWQgdG8gZGVmaW5lIGEgbWluaW11bSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBib3VuZGFyaWVzXHJcbiAgICAgKiBhbmQgdGhlIHBvcHBlci4gVGhpcyBtYWtlcyBzdXJlIHRoZSBwb3BwZXIgYWx3YXlzIGhhcyBhIGxpdHRsZSBwYWRkaW5nXHJcbiAgICAgKiBiZXR3ZWVuIHRoZSBlZGdlcyBvZiBpdHMgY29udGFpbmVyXHJcbiAgICAgKi9cclxuICAgIHBhZGRpbmc6IDUsXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wIHtTdHJpbmd8SFRNTEVsZW1lbnR9IGJvdW5kYXJpZXNFbGVtZW50PSdzY3JvbGxQYXJlbnQnXHJcbiAgICAgKiBCb3VuZGFyaWVzIHVzZWQgYnkgdGhlIG1vZGlmaWVyLiBDYW4gYmUgYHNjcm9sbFBhcmVudGAsIGB3aW5kb3dgLFxyXG4gICAgICogYHZpZXdwb3J0YCBvciBhbnkgRE9NIGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIGJvdW5kYXJpZXNFbGVtZW50OiAnc2Nyb2xsUGFyZW50J1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gbWFrZSBzdXJlIHRoZSByZWZlcmVuY2UgYW5kIGl0cyBwb3BwZXIgc3RheSBuZWFyIGVhY2ggb3RoZXJcclxuICAgKiB3aXRob3V0IGxlYXZpbmcgYW55IGdhcCBiZXR3ZWVuIHRoZSB0d28uIEVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gdGhlIGFycm93IGlzXHJcbiAgICogZW5hYmxlZCBhbmQgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgaXQgcG9pbnRzIHRvIGl0cyByZWZlcmVuY2UgZWxlbWVudC5cclxuICAgKiBJdCBjYXJlcyBvbmx5IGFib3V0IHRoZSBmaXJzdCBheGlzLiBZb3UgY2FuIHN0aWxsIGhhdmUgcG9wcGVycyB3aXRoIG1hcmdpblxyXG4gICAqIGJldHdlZW4gdGhlIHBvcHBlciBhbmQgaXRzIHJlZmVyZW5jZSBlbGVtZW50LlxyXG4gICAqIEBtZW1iZXJvZiBtb2RpZmllcnNcclxuICAgKiBAaW5uZXJcclxuICAgKi9cclxuICBrZWVwVG9nZXRoZXI6IHtcclxuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj00MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXHJcbiAgICBvcmRlcjogNDAwLFxyXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPXRydWUgLSBXaGV0aGVyIHRoZSBtb2RpZmllciBpcyBlbmFibGVkIG9yIG5vdCAqL1xyXG4gICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgIC8qKiBAcHJvcCB7TW9kaWZpZXJGbn0gKi9cclxuICAgIGZuOiBrZWVwVG9nZXRoZXJcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1vZGlmaWVyIGlzIHVzZWQgdG8gbW92ZSB0aGUgYGFycm93RWxlbWVudGAgb2YgdGhlIHBvcHBlciB0byBtYWtlXHJcbiAgICogc3VyZSBpdCBpcyBwb3NpdGlvbmVkIGJldHdlZW4gdGhlIHJlZmVyZW5jZSBlbGVtZW50IGFuZCBpdHMgcG9wcGVyIGVsZW1lbnQuXHJcbiAgICogSXQgd2lsbCByZWFkIHRoZSBvdXRlciBzaXplIG9mIHRoZSBgYXJyb3dFbGVtZW50YCBub2RlIHRvIGRldGVjdCBob3cgbWFueVxyXG4gICAqIHBpeGVscyBvZiBjb25qdW5jdGlvbiBhcmUgbmVlZGVkLlxyXG4gICAqXHJcbiAgICogSXQgaGFzIG5vIGVmZmVjdCBpZiBubyBgYXJyb3dFbGVtZW50YCBpcyBwcm92aWRlZC5cclxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXHJcbiAgICogQGlubmVyXHJcbiAgICovXHJcbiAgYXJyb3c6IHtcclxuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj01MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXHJcbiAgICBvcmRlcjogNTAwLFxyXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPXRydWUgLSBXaGV0aGVyIHRoZSBtb2RpZmllciBpcyBlbmFibGVkIG9yIG5vdCAqL1xyXG4gICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgIC8qKiBAcHJvcCB7TW9kaWZpZXJGbn0gKi9cclxuICAgIGZuOiBhcnJvdyxcclxuICAgIC8qKiBAcHJvcCB7U3RyaW5nfEhUTUxFbGVtZW50fSBlbGVtZW50PSdbeC1hcnJvd10nIC0gU2VsZWN0b3Igb3Igbm9kZSB1c2VkIGFzIGFycm93ICovXHJcbiAgICBlbGVtZW50OiAnW3gtYXJyb3ddJ1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gZmxpcCB0aGUgcG9wcGVyJ3MgcGxhY2VtZW50IHdoZW4gaXQgc3RhcnRzIHRvIG92ZXJsYXAgaXRzXHJcbiAgICogcmVmZXJlbmNlIGVsZW1lbnQuXHJcbiAgICpcclxuICAgKiBSZXF1aXJlcyB0aGUgYHByZXZlbnRPdmVyZmxvd2AgbW9kaWZpZXIgYmVmb3JlIGl0IGluIG9yZGVyIHRvIHdvcmsuXHJcbiAgICpcclxuICAgKiAqKk5PVEU6KiogdGhpcyBtb2RpZmllciB3aWxsIGludGVycnVwdCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUgYW5kIHdpbGxcclxuICAgKiByZXN0YXJ0IGl0IGlmIGl0IGRldGVjdHMgdGhlIG5lZWQgdG8gZmxpcCB0aGUgcGxhY2VtZW50LlxyXG4gICAqIEBtZW1iZXJvZiBtb2RpZmllcnNcclxuICAgKiBAaW5uZXJcclxuICAgKi9cclxuICBmbGlwOiB7XHJcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9NjAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xyXG4gICAgb3JkZXI6IDYwMCxcclxuICAgIC8qKiBAcHJvcCB7Qm9vbGVhbn0gZW5hYmxlZD10cnVlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cclxuICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXHJcbiAgICBmbjogZmxpcCxcclxuICAgIC8qKlxyXG4gICAgICogQHByb3Age1N0cmluZ3xBcnJheX0gYmVoYXZpb3I9J2ZsaXAnXHJcbiAgICAgKiBUaGUgYmVoYXZpb3IgdXNlZCB0byBjaGFuZ2UgdGhlIHBvcHBlcidzIHBsYWNlbWVudC4gSXQgY2FuIGJlIG9uZSBvZlxyXG4gICAgICogYGZsaXBgLCBgY2xvY2t3aXNlYCwgYGNvdW50ZXJjbG9ja3dpc2VgIG9yIGFuIGFycmF5IHdpdGggYSBsaXN0IG9mIHZhbGlkXHJcbiAgICAgKiBwbGFjZW1lbnRzICh3aXRoIG9wdGlvbmFsIHZhcmlhdGlvbnMpXHJcbiAgICAgKi9cclxuICAgIGJlaGF2aW9yOiAnZmxpcCcsXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wIHtudW1iZXJ9IHBhZGRpbmc9NVxyXG4gICAgICogVGhlIHBvcHBlciB3aWxsIGZsaXAgaWYgaXQgaGl0cyB0aGUgZWRnZXMgb2YgdGhlIGBib3VuZGFyaWVzRWxlbWVudGBcclxuICAgICAqL1xyXG4gICAgcGFkZGluZzogNSxcclxuICAgIC8qKlxyXG4gICAgICogQHByb3Age1N0cmluZ3xIVE1MRWxlbWVudH0gYm91bmRhcmllc0VsZW1lbnQ9J3ZpZXdwb3J0J1xyXG4gICAgICogVGhlIGVsZW1lbnQgd2hpY2ggd2lsbCBkZWZpbmUgdGhlIGJvdW5kYXJpZXMgb2YgdGhlIHBvcHBlciBwb3NpdGlvbi5cclxuICAgICAqIFRoZSBwb3BwZXIgd2lsbCBuZXZlciBiZSBwbGFjZWQgb3V0c2lkZSBvZiB0aGUgZGVmaW5lZCBib3VuZGFyaWVzXHJcbiAgICAgKiAoZXhjZXB0IGlmIGBrZWVwVG9nZXRoZXJgIGlzIGVuYWJsZWQpXHJcbiAgICAgKi9cclxuICAgIGJvdW5kYXJpZXNFbGVtZW50OiAndmlld3BvcnQnXHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogTW9kaWZpZXIgdXNlZCB0byBtYWtlIHRoZSBwb3BwZXIgZmxvdyB0b3dhcmQgdGhlIGlubmVyIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cclxuICAgKiBCeSBkZWZhdWx0LCB3aGVuIHRoaXMgbW9kaWZpZXIgaXMgZGlzYWJsZWQsIHRoZSBwb3BwZXIgd2lsbCBiZSBwbGFjZWQgb3V0c2lkZVxyXG4gICAqIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cclxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXHJcbiAgICogQGlubmVyXHJcbiAgICovXHJcbiAgaW5uZXI6IHtcclxuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj03MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXHJcbiAgICBvcmRlcjogNzAwLFxyXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPWZhbHNlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cclxuICAgIGVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgLyoqIEBwcm9wIHtNb2RpZmllckZufSAqL1xyXG4gICAgZm46IGlubmVyXHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogTW9kaWZpZXIgdXNlZCB0byBoaWRlIHRoZSBwb3BwZXIgd2hlbiBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgaXMgb3V0c2lkZSBvZiB0aGVcclxuICAgKiBwb3BwZXIgYm91bmRhcmllcy4gSXQgd2lsbCBzZXQgYSBgeC1vdXQtb2YtYm91bmRhcmllc2AgYXR0cmlidXRlIHdoaWNoIGNhblxyXG4gICAqIGJlIHVzZWQgdG8gaGlkZSB3aXRoIGEgQ1NTIHNlbGVjdG9yIHRoZSBwb3BwZXIgd2hlbiBpdHMgcmVmZXJlbmNlIGlzXHJcbiAgICogb3V0IG9mIGJvdW5kYXJpZXMuXHJcbiAgICpcclxuICAgKiBSZXF1aXJlcyB0aGUgYHByZXZlbnRPdmVyZmxvd2AgbW9kaWZpZXIgYmVmb3JlIGl0IGluIG9yZGVyIHRvIHdvcmsuXHJcbiAgICogQG1lbWJlcm9mIG1vZGlmaWVyc1xyXG4gICAqIEBpbm5lclxyXG4gICAqL1xyXG4gIGhpZGU6IHtcclxuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj04MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXHJcbiAgICBvcmRlcjogODAwLFxyXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPXRydWUgLSBXaGV0aGVyIHRoZSBtb2RpZmllciBpcyBlbmFibGVkIG9yIG5vdCAqL1xyXG4gICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgIC8qKiBAcHJvcCB7TW9kaWZpZXJGbn0gKi9cclxuICAgIGZuOiBoaWRlXHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHV0ZXMgdGhlIHN0eWxlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXIgZWxlbWVudCB0byBnZXRzXHJcbiAgICogcHJvcGVybHkgcG9zaXRpb25lZC5cclxuICAgKlxyXG4gICAqIE5vdGUgdGhhdCB0aGlzIG1vZGlmaWVyIHdpbGwgbm90IHRvdWNoIHRoZSBET00sIGl0IGp1c3QgcHJlcGFyZXMgdGhlIHN0eWxlc1xyXG4gICAqIHNvIHRoYXQgYGFwcGx5U3R5bGVgIG1vZGlmaWVyIGNhbiBhcHBseSBpdC4gVGhpcyBzZXBhcmF0aW9uIGlzIHVzZWZ1bFxyXG4gICAqIGluIGNhc2UgeW91IG5lZWQgdG8gcmVwbGFjZSBgYXBwbHlTdHlsZWAgd2l0aCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi5cclxuICAgKlxyXG4gICAqIFRoaXMgbW9kaWZpZXIgaGFzIGA4NTBgIGFzIGBvcmRlcmAgdmFsdWUgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxyXG4gICAqIHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgUG9wcGVyLmpzLiBFeHBlY3QgdGhlIG1vZGlmaWVycyBvcmRlcmluZyBtZXRob2RcclxuICAgKiB0byBjaGFuZ2UgaW4gZnV0dXJlIG1ham9yIHZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5LlxyXG4gICAqXHJcbiAgICogQG1lbWJlcm9mIG1vZGlmaWVyc1xyXG4gICAqIEBpbm5lclxyXG4gICAqL1xyXG4gIGNvbXB1dGVTdHlsZToge1xyXG4gICAgLyoqIEBwcm9wIHtudW1iZXJ9IG9yZGVyPTg1MCAtIEluZGV4IHVzZWQgdG8gZGVmaW5lIHRoZSBvcmRlciBvZiBleGVjdXRpb24gKi9cclxuICAgIG9yZGVyOiA4NTAsXHJcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXHJcbiAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgLyoqIEBwcm9wIHtNb2RpZmllckZufSAqL1xyXG4gICAgZm46IGNvbXB1dGVTdHlsZSxcclxuICAgIC8qKlxyXG4gICAgICogQHByb3Age0Jvb2xlYW59IGdwdUFjY2VsZXJhdGlvbj10cnVlXHJcbiAgICAgKiBJZiB0cnVlLCBpdCB1c2VzIHRoZSBDU1MgM0QgdHJhbnNmb3JtYXRpb24gdG8gcG9zaXRpb24gdGhlIHBvcHBlci5cclxuICAgICAqIE90aGVyd2lzZSwgaXQgd2lsbCB1c2UgdGhlIGB0b3BgIGFuZCBgbGVmdGAgcHJvcGVydGllc1xyXG4gICAgICovXHJcbiAgICBncHVBY2NlbGVyYXRpb246IHRydWUsXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wIHtzdHJpbmd9IFt4PSdib3R0b20nXVxyXG4gICAgICogV2hlcmUgdG8gYW5jaG9yIHRoZSBYIGF4aXMgKGBib3R0b21gIG9yIGB0b3BgKS4gQUtBIFggb2Zmc2V0IG9yaWdpbi5cclxuICAgICAqIENoYW5nZSB0aGlzIGlmIHlvdXIgcG9wcGVyIHNob3VsZCBncm93IGluIGEgZGlyZWN0aW9uIGRpZmZlcmVudCBmcm9tIGBib3R0b21gXHJcbiAgICAgKi9cclxuICAgIHg6ICdib3R0b20nLFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcCB7c3RyaW5nfSBbeD0nbGVmdCddXHJcbiAgICAgKiBXaGVyZSB0byBhbmNob3IgdGhlIFkgYXhpcyAoYGxlZnRgIG9yIGByaWdodGApLiBBS0EgWSBvZmZzZXQgb3JpZ2luLlxyXG4gICAgICogQ2hhbmdlIHRoaXMgaWYgeW91ciBwb3BwZXIgc2hvdWxkIGdyb3cgaW4gYSBkaXJlY3Rpb24gZGlmZmVyZW50IGZyb20gYHJpZ2h0YFxyXG4gICAgICovXHJcbiAgICB5OiAncmlnaHQnXHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbGllcyB0aGUgY29tcHV0ZWQgc3R5bGVzIHRvIHRoZSBwb3BwZXIgZWxlbWVudC5cclxuICAgKlxyXG4gICAqIEFsbCB0aGUgRE9NIG1hbmlwdWxhdGlvbnMgYXJlIGxpbWl0ZWQgdG8gdGhpcyBtb2RpZmllci4gVGhpcyBpcyB1c2VmdWwgaW4gY2FzZVxyXG4gICAqIHlvdSB3YW50IHRvIGludGVncmF0ZSBQb3BwZXIuanMgaW5zaWRlIGEgZnJhbWV3b3JrIG9yIHZpZXcgbGlicmFyeSBhbmQgeW91XHJcbiAgICogd2FudCB0byBkZWxlZ2F0ZSBhbGwgdGhlIERPTSBtYW5pcHVsYXRpb25zIHRvIGl0LlxyXG4gICAqXHJcbiAgICogTm90ZSB0aGF0IGlmIHlvdSBkaXNhYmxlIHRoaXMgbW9kaWZpZXIsIHlvdSBtdXN0IG1ha2Ugc3VyZSB0aGUgcG9wcGVyIGVsZW1lbnRcclxuICAgKiBoYXMgaXRzIHBvc2l0aW9uIHNldCB0byBgYWJzb2x1dGVgIGJlZm9yZSBQb3BwZXIuanMgY2FuIGRvIGl0cyB3b3JrIVxyXG4gICAqXHJcbiAgICogSnVzdCBkaXNhYmxlIHRoaXMgbW9kaWZpZXIgYW5kIGRlZmluZSB5b3VyIG93biB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIGVmZmVjdC5cclxuICAgKlxyXG4gICAqIEBtZW1iZXJvZiBtb2RpZmllcnNcclxuICAgKiBAaW5uZXJcclxuICAgKi9cclxuICBhcHBseVN0eWxlOiB7XHJcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9OTAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xyXG4gICAgb3JkZXI6IDkwMCxcclxuICAgIC8qKiBAcHJvcCB7Qm9vbGVhbn0gZW5hYmxlZD10cnVlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cclxuICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXHJcbiAgICBmbjogYXBwbHlTdHlsZSxcclxuICAgIC8qKiBAcHJvcCB7RnVuY3Rpb259ICovXHJcbiAgICBvbkxvYWQ6IGFwcGx5U3R5bGVPbkxvYWQsXHJcbiAgICAvKipcclxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMS4xMC4wLCB0aGUgcHJvcGVydHkgbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXJcclxuICAgICAqIEBwcm9wIHtCb29sZWFufSBncHVBY2NlbGVyYXRpb249dHJ1ZVxyXG4gICAgICogSWYgdHJ1ZSwgaXQgdXNlcyB0aGUgQ1NTIDNEIHRyYW5zZm9ybWF0aW9uIHRvIHBvc2l0aW9uIHRoZSBwb3BwZXIuXHJcbiAgICAgKiBPdGhlcndpc2UsIGl0IHdpbGwgdXNlIHRoZSBgdG9wYCBhbmQgYGxlZnRgIHByb3BlcnRpZXNcclxuICAgICAqL1xyXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiB1bmRlZmluZWRcclxuICB9XHJcbn07XHJcblxyXG4vKipcclxuICogVGhlIGBkYXRhT2JqZWN0YCBpcyBhbiBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIGluZm9ybWF0aW9uIHVzZWQgYnkgUG9wcGVyLmpzLlxyXG4gKiBUaGlzIG9iamVjdCBpcyBwYXNzZWQgdG8gbW9kaWZpZXJzIGFuZCB0byB0aGUgYG9uQ3JlYXRlYCBhbmQgYG9uVXBkYXRlYCBjYWxsYmFja3MuXHJcbiAqIEBuYW1lIGRhdGFPYmplY3RcclxuICogQHByb3BlcnR5IHtPYmplY3R9IGRhdGEuaW5zdGFuY2UgVGhlIFBvcHBlci5qcyBpbnN0YW5jZVxyXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZGF0YS5wbGFjZW1lbnQgUGxhY2VtZW50IGFwcGxpZWQgdG8gcG9wcGVyXHJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBkYXRhLm9yaWdpbmFsUGxhY2VtZW50IFBsYWNlbWVudCBvcmlnaW5hbGx5IGRlZmluZWQgb24gaW5pdFxyXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGRhdGEuZmxpcHBlZCBUcnVlIGlmIHBvcHBlciBoYXMgYmVlbiBmbGlwcGVkIGJ5IGZsaXAgbW9kaWZpZXJcclxuICogQHByb3BlcnR5IHtCb29sZWFufSBkYXRhLmhpZGUgVHJ1ZSBpZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgaXMgb3V0IG9mIGJvdW5kYXJpZXMsIHVzZWZ1bCB0byBrbm93IHdoZW4gdG8gaGlkZSB0aGUgcG9wcGVyXHJcbiAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IGRhdGEuYXJyb3dFbGVtZW50IE5vZGUgdXNlZCBhcyBhcnJvdyBieSBhcnJvdyBtb2RpZmllclxyXG4gKiBAcHJvcGVydHkge09iamVjdH0gZGF0YS5zdHlsZXMgQW55IENTUyBwcm9wZXJ0eSBkZWZpbmVkIGhlcmUgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXIuIEl0IGV4cGVjdHMgdGhlIEphdmFTY3JpcHQgbm9tZW5jbGF0dXJlIChlZy4gYG1hcmdpbkJvdHRvbWApXHJcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBkYXRhLmFycm93U3R5bGVzIEFueSBDU1MgcHJvcGVydHkgZGVmaW5lZCBoZXJlIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9wcGVyIGFycm93LiBJdCBleHBlY3RzIHRoZSBKYXZhU2NyaXB0IG5vbWVuY2xhdHVyZSAoZWcuIGBtYXJnaW5Cb3R0b21gKVxyXG4gKiBAcHJvcGVydHkge09iamVjdH0gZGF0YS5ib3VuZGFyaWVzIE9mZnNldHMgb2YgdGhlIHBvcHBlciBib3VuZGFyaWVzXHJcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBkYXRhLm9mZnNldHMgVGhlIG1lYXN1cmVtZW50cyBvZiBwb3BwZXIsIHJlZmVyZW5jZSBhbmQgYXJyb3cgZWxlbWVudHNcclxuICogQHByb3BlcnR5IHtPYmplY3R9IGRhdGEub2Zmc2V0cy5wb3BwZXIgYHRvcGAsIGBsZWZ0YCwgYHdpZHRoYCwgYGhlaWdodGAgdmFsdWVzXHJcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBkYXRhLm9mZnNldHMucmVmZXJlbmNlIGB0b3BgLCBgbGVmdGAsIGB3aWR0aGAsIGBoZWlnaHRgIHZhbHVlc1xyXG4gKiBAcHJvcGVydHkge09iamVjdH0gZGF0YS5vZmZzZXRzLmFycm93XSBgdG9wYCBhbmQgYGxlZnRgIG9mZnNldHMsIG9ubHkgb25lIG9mIHRoZW0gd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSAwXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgb3B0aW9ucyBwcm92aWRlZCB0byBQb3BwZXIuanMgY29uc3RydWN0b3IuPGJyIC8+XHJcbiAqIFRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBgb3B0aW9uc2AgYXJndW1lbnQgb2YgUG9wcGVyLmpzLjxiciAvPlxyXG4gKiBUbyBvdmVycmlkZSBhbiBvcHRpb24sIHNpbXBseSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lXHJcbiAqIHN0cnVjdHVyZSBvZiB0aGUgYG9wdGlvbnNgIG9iamVjdCwgYXMgdGhlIDNyZCBhcmd1bWVudC4gRm9yIGV4YW1wbGU6XHJcbiAqIGBgYFxyXG4gKiBuZXcgUG9wcGVyKHJlZiwgcG9wLCB7XHJcbiAqICAgbW9kaWZpZXJzOiB7XHJcbiAqICAgICBwcmV2ZW50T3ZlcmZsb3c6IHsgZW5hYmxlZDogZmFsc2UgfVxyXG4gKiAgIH1cclxuICogfSlcclxuICogYGBgXHJcbiAqIEB0eXBlIHtPYmplY3R9XHJcbiAqIEBzdGF0aWNcclxuICogQG1lbWJlcm9mIFBvcHBlclxyXG4gKi9cclxudmFyIERlZmF1bHRzID0ge1xyXG4gIC8qKlxyXG4gICAqIFBvcHBlcidzIHBsYWNlbWVudC5cclxuICAgKiBAcHJvcCB7UG9wcGVyLnBsYWNlbWVudHN9IHBsYWNlbWVudD0nYm90dG9tJ1xyXG4gICAqL1xyXG4gIHBsYWNlbWVudDogJ2JvdHRvbScsXHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGlzIHRvIHRydWUgaWYgeW91IHdhbnQgcG9wcGVyIHRvIHBvc2l0aW9uIGl0IHNlbGYgaW4gJ2ZpeGVkJyBtb2RlXHJcbiAgICogQHByb3Age0Jvb2xlYW59IHBvc2l0aW9uRml4ZWQ9ZmFsc2VcclxuICAgKi9cclxuICBwb3NpdGlvbkZpeGVkOiBmYWxzZSxcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBldmVudHMgKHJlc2l6ZSwgc2Nyb2xsKSBhcmUgaW5pdGlhbGx5IGVuYWJsZWQuXHJcbiAgICogQHByb3Age0Jvb2xlYW59IGV2ZW50c0VuYWJsZWQ9dHJ1ZVxyXG4gICAqL1xyXG4gIGV2ZW50c0VuYWJsZWQ6IHRydWUsXHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0byB0cnVlIGlmIHlvdSB3YW50IHRvIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHRoZSBwb3BwZXIgd2hlblxyXG4gICAqIHlvdSBjYWxsIHRoZSBgZGVzdHJveWAgbWV0aG9kLlxyXG4gICAqIEBwcm9wIHtCb29sZWFufSByZW1vdmVPbkRlc3Ryb3k9ZmFsc2VcclxuICAgKi9cclxuICByZW1vdmVPbkRlc3Ryb3k6IGZhbHNlLFxyXG5cclxuICAvKipcclxuICAgKiBDYWxsYmFjayBjYWxsZWQgd2hlbiB0aGUgcG9wcGVyIGlzIGNyZWF0ZWQuPGJyIC8+XHJcbiAgICogQnkgZGVmYXVsdCwgaXQgaXMgc2V0IHRvIG5vLW9wLjxiciAvPlxyXG4gICAqIEFjY2VzcyBQb3BwZXIuanMgaW5zdGFuY2Ugd2l0aCBgZGF0YS5pbnN0YW5jZWAuXHJcbiAgICogQHByb3Age29uQ3JlYXRlfVxyXG4gICAqL1xyXG4gIG9uQ3JlYXRlOiBmdW5jdGlvbiBvbkNyZWF0ZSgpIHt9LFxyXG5cclxuICAvKipcclxuICAgKiBDYWxsYmFjayBjYWxsZWQgd2hlbiB0aGUgcG9wcGVyIGlzIHVwZGF0ZWQuIFRoaXMgY2FsbGJhY2sgaXMgbm90IGNhbGxlZFxyXG4gICAqIG9uIHRoZSBpbml0aWFsaXphdGlvbi9jcmVhdGlvbiBvZiB0aGUgcG9wcGVyLCBidXQgb25seSBvbiBzdWJzZXF1ZW50XHJcbiAgICogdXBkYXRlcy48YnIgLz5cclxuICAgKiBCeSBkZWZhdWx0LCBpdCBpcyBzZXQgdG8gbm8tb3AuPGJyIC8+XHJcbiAgICogQWNjZXNzIFBvcHBlci5qcyBpbnN0YW5jZSB3aXRoIGBkYXRhLmluc3RhbmNlYC5cclxuICAgKiBAcHJvcCB7b25VcGRhdGV9XHJcbiAgICovXHJcbiAgb25VcGRhdGU6IGZ1bmN0aW9uIG9uVXBkYXRlKCkge30sXHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2YgbW9kaWZpZXJzIHVzZWQgdG8gbW9kaWZ5IHRoZSBvZmZzZXRzIGJlZm9yZSB0aGV5IGFyZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXIuXHJcbiAgICogVGhleSBwcm92aWRlIG1vc3Qgb2YgdGhlIGZ1bmN0aW9uYWxpdGllcyBvZiBQb3BwZXIuanMuXHJcbiAgICogQHByb3Age21vZGlmaWVyc31cclxuICAgKi9cclxuICBtb2RpZmllcnM6IG1vZGlmaWVyc1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEBjYWxsYmFjayBvbkNyZWF0ZVxyXG4gKiBAcGFyYW0ge2RhdGFPYmplY3R9IGRhdGFcclxuICovXHJcblxyXG4vKipcclxuICogQGNhbGxiYWNrIG9uVXBkYXRlXHJcbiAqIEBwYXJhbSB7ZGF0YU9iamVjdH0gZGF0YVxyXG4gKi9cclxuXHJcbi8vIFV0aWxzXHJcbi8vIE1ldGhvZHNcclxudmFyIFBvcHBlciA9IGZ1bmN0aW9uICgpIHtcclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IFBvcHBlci5qcyBpbnN0YW5jZS5cclxuICAgKiBAY2xhc3MgUG9wcGVyXHJcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudHxyZWZlcmVuY2VPYmplY3R9IHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgZWxlbWVudCB1c2VkIHRvIHBvc2l0aW9uIHRoZSBwb3BwZXJcclxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwb3BwZXIgLSBUaGUgSFRNTCBlbGVtZW50IHVzZWQgYXMgdGhlIHBvcHBlclxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gWW91ciBjdXN0b20gb3B0aW9ucyB0byBvdmVycmlkZSB0aGUgb25lcyBkZWZpbmVkIGluIFtEZWZhdWx0c10oI2RlZmF1bHRzKVxyXG4gICAqIEByZXR1cm4ge09iamVjdH0gaW5zdGFuY2UgLSBUaGUgZ2VuZXJhdGVkIFBvcHBlci5qcyBpbnN0YW5jZVxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIFBvcHBlcihyZWZlcmVuY2UsIHBvcHBlcikge1xyXG4gICAgdmFyIF90aGlzID0gdGhpcztcclxuXHJcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XHJcbiAgICBjbGFzc0NhbGxDaGVjayh0aGlzLCBQb3BwZXIpO1xyXG5cclxuICAgIHRoaXMuc2NoZWR1bGVVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoX3RoaXMudXBkYXRlKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gbWFrZSB1cGRhdGUoKSBkZWJvdW5jZWQsIHNvIHRoYXQgaXQgb25seSBydW5zIGF0IG1vc3Qgb25jZS1wZXItdGlja1xyXG4gICAgdGhpcy51cGRhdGUgPSBkZWJvdW5jZSh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpKTtcclxuXHJcbiAgICAvLyB3aXRoIHt9IHdlIGNyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgb3B0aW9ucyBpbnNpZGUgaXRcclxuICAgIHRoaXMub3B0aW9ucyA9IF9leHRlbmRzKHt9LCBQb3BwZXIuRGVmYXVsdHMsIG9wdGlvbnMpO1xyXG5cclxuICAgIC8vIGluaXQgc3RhdGVcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGlzRGVzdHJveWVkOiBmYWxzZSxcclxuICAgICAgaXNDcmVhdGVkOiBmYWxzZSxcclxuICAgICAgc2Nyb2xsUGFyZW50czogW11cclxuICAgIH07XHJcblxyXG4gICAgLy8gZ2V0IHJlZmVyZW5jZSBhbmQgcG9wcGVyIGVsZW1lbnRzIChhbGxvdyBqUXVlcnkgd3JhcHBlcnMpXHJcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZSAmJiByZWZlcmVuY2UuanF1ZXJ5ID8gcmVmZXJlbmNlWzBdIDogcmVmZXJlbmNlO1xyXG4gICAgdGhpcy5wb3BwZXIgPSBwb3BwZXIgJiYgcG9wcGVyLmpxdWVyeSA/IHBvcHBlclswXSA6IHBvcHBlcjtcclxuXHJcbiAgICAvLyBEZWVwIG1lcmdlIG1vZGlmaWVycyBvcHRpb25zXHJcbiAgICB0aGlzLm9wdGlvbnMubW9kaWZpZXJzID0ge307XHJcbiAgICBPYmplY3Qua2V5cyhfZXh0ZW5kcyh7fSwgUG9wcGVyLkRlZmF1bHRzLm1vZGlmaWVycywgb3B0aW9ucy5tb2RpZmllcnMpKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgIF90aGlzLm9wdGlvbnMubW9kaWZpZXJzW25hbWVdID0gX2V4dGVuZHMoe30sIFBvcHBlci5EZWZhdWx0cy5tb2RpZmllcnNbbmFtZV0gfHwge30sIG9wdGlvbnMubW9kaWZpZXJzID8gb3B0aW9ucy5tb2RpZmllcnNbbmFtZV0gOiB7fSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBSZWZhY3RvcmluZyBtb2RpZmllcnMnIGxpc3QgKE9iamVjdCA9PiBBcnJheSlcclxuICAgIHRoaXMubW9kaWZpZXJzID0gT2JqZWN0LmtleXModGhpcy5vcHRpb25zLm1vZGlmaWVycykubWFwKGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgIHJldHVybiBfZXh0ZW5kcyh7XHJcbiAgICAgICAgbmFtZTogbmFtZVxyXG4gICAgICB9LCBfdGhpcy5vcHRpb25zLm1vZGlmaWVyc1tuYW1lXSk7XHJcbiAgICB9KVxyXG4gICAgLy8gc29ydCB0aGUgbW9kaWZpZXJzIGJ5IG9yZGVyXHJcbiAgICAuc29ydChmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBtb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byBleGVjdXRlIGFyYml0cmFyeSBjb2RlIHdoZW4gUG9wcGVyLmpzIGdldCBpbml0ZWRcclxuICAgIC8vIHN1Y2ggY29kZSBpcyBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBvZiBpdHMgbW9kaWZpZXJcclxuICAgIC8vIHRoZXkgY291bGQgYWRkIG5ldyBwcm9wZXJ0aWVzIHRvIHRoZWlyIG9wdGlvbnMgY29uZmlndXJhdGlvblxyXG4gICAgLy8gQkUgQVdBUkU6IGRvbid0IGFkZCBvcHRpb25zIHRvIGBvcHRpb25zLm1vZGlmaWVycy5uYW1lYCBidXQgdG8gYG1vZGlmaWVyT3B0aW9uc2AhXHJcbiAgICB0aGlzLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllck9wdGlvbnMpIHtcclxuICAgICAgaWYgKG1vZGlmaWVyT3B0aW9ucy5lbmFibGVkICYmIGlzRnVuY3Rpb24obW9kaWZpZXJPcHRpb25zLm9uTG9hZCkpIHtcclxuICAgICAgICBtb2RpZmllck9wdGlvbnMub25Mb2FkKF90aGlzLnJlZmVyZW5jZSwgX3RoaXMucG9wcGVyLCBfdGhpcy5vcHRpb25zLCBtb2RpZmllck9wdGlvbnMsIF90aGlzLnN0YXRlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gZmlyZSB0aGUgZmlyc3QgdXBkYXRlIHRvIHBvc2l0aW9uIHRoZSBwb3BwZXIgaW4gdGhlIHJpZ2h0IHBsYWNlXHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG5cclxuICAgIHZhciBldmVudHNFbmFibGVkID0gdGhpcy5vcHRpb25zLmV2ZW50c0VuYWJsZWQ7XHJcbiAgICBpZiAoZXZlbnRzRW5hYmxlZCkge1xyXG4gICAgICAvLyBzZXR1cCBldmVudCBsaXN0ZW5lcnMsIHRoZXkgd2lsbCB0YWtlIGNhcmUgb2YgdXBkYXRlIHRoZSBwb3NpdGlvbiBpbiBzcGVjaWZpYyBzaXR1YXRpb25zXHJcbiAgICAgIHRoaXMuZW5hYmxlRXZlbnRMaXN0ZW5lcnMoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0YXRlLmV2ZW50c0VuYWJsZWQgPSBldmVudHNFbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgLy8gV2UgY2FuJ3QgdXNlIGNsYXNzIHByb3BlcnRpZXMgYmVjYXVzZSB0aGV5IGRvbid0IGdldCBsaXN0ZWQgaW4gdGhlXHJcbiAgLy8gY2xhc3MgcHJvdG90eXBlIGFuZCBicmVhayBzdHVmZiBsaWtlIFNpbm9uIHN0dWJzXHJcblxyXG5cclxuICBjcmVhdGVDbGFzcyhQb3BwZXIsIFt7XHJcbiAgICBrZXk6ICd1cGRhdGUnLFxyXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZSQkMSgpIHtcclxuICAgICAgcmV0dXJuIHVwZGF0ZS5jYWxsKHRoaXMpO1xyXG4gICAgfVxyXG4gIH0sIHtcclxuICAgIGtleTogJ2Rlc3Ryb3knLFxyXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3kkJDEoKSB7XHJcbiAgICAgIHJldHVybiBkZXN0cm95LmNhbGwodGhpcyk7XHJcbiAgICB9XHJcbiAgfSwge1xyXG4gICAga2V5OiAnZW5hYmxlRXZlbnRMaXN0ZW5lcnMnLFxyXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuYWJsZUV2ZW50TGlzdGVuZXJzJCQxKCkge1xyXG4gICAgICByZXR1cm4gZW5hYmxlRXZlbnRMaXN0ZW5lcnMuY2FsbCh0aGlzKTtcclxuICAgIH1cclxuICB9LCB7XHJcbiAgICBrZXk6ICdkaXNhYmxlRXZlbnRMaXN0ZW5lcnMnLFxyXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpc2FibGVFdmVudExpc3RlbmVycyQkMSgpIHtcclxuICAgICAgcmV0dXJuIGRpc2FibGVFdmVudExpc3RlbmVycy5jYWxsKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2NoZWR1bGVzIGFuIHVwZGF0ZS4gSXQgd2lsbCBydW4gb24gdGhlIG5leHQgVUkgdXBkYXRlIGF2YWlsYWJsZS5cclxuICAgICAqIEBtZXRob2Qgc2NoZWR1bGVVcGRhdGVcclxuICAgICAqIEBtZW1iZXJvZiBQb3BwZXJcclxuICAgICAqL1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIHVzZWZ1bCB3aGVuIHdyaXRpbmcgY3VzdG9tIG1vZGlmaWVycy5cclxuICAgICAqIFN0YXJ0aW5nIGZyb20gdmVyc2lvbiAxLjcsIHRoaXMgbWV0aG9kIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHlvdVxyXG4gICAgICogaW5jbHVkZSBgcG9wcGVyLXV0aWxzLmpzYCBiZWZvcmUgYHBvcHBlci5qc2AuXHJcbiAgICAgKlxyXG4gICAgICogKipERVBSRUNBVElPTioqOiBUaGlzIHdheSB0byBhY2Nlc3MgUG9wcGVyVXRpbHMgaXMgZGVwcmVjYXRlZFxyXG4gICAgICogYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MiEgVXNlIHRoZSBQb3BwZXJVdGlscyBtb2R1bGUgZGlyZWN0bHkgaW5zdGVhZC5cclxuICAgICAqIER1ZSB0byB0aGUgaGlnaCBpbnN0YWJpbGl0eSBvZiB0aGUgbWV0aG9kcyBjb250YWluZWQgaW4gVXRpbHMsIHdlIGNhbid0XHJcbiAgICAgKiBndWFyYW50ZWUgdGhlbSB0byBmb2xsb3cgc2VtdmVyLiBVc2UgdGhlbSBhdCB5b3VyIG93biByaXNrIVxyXG4gICAgICogQHN0YXRpY1xyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEB0eXBlIHtPYmplY3R9XHJcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDEuOFxyXG4gICAgICogQG1lbWJlciBVdGlsc1xyXG4gICAgICogQG1lbWJlcm9mIFBvcHBlclxyXG4gICAgICovXHJcblxyXG4gIH1dKTtcclxuICByZXR1cm4gUG9wcGVyO1xyXG59KCk7XHJcblxyXG4vKipcclxuICogVGhlIGByZWZlcmVuY2VPYmplY3RgIGlzIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIGFuIGludGVyZmFjZSBjb21wYXRpYmxlIHdpdGggUG9wcGVyLmpzXHJcbiAqIGFuZCBsZXRzIHlvdSB1c2UgaXQgYXMgcmVwbGFjZW1lbnQgb2YgYSByZWFsIERPTSBub2RlLjxiciAvPlxyXG4gKiBZb3UgY2FuIHVzZSB0aGlzIG1ldGhvZCB0byBwb3NpdGlvbiBhIHBvcHBlciByZWxhdGl2ZWx5IHRvIGEgc2V0IG9mIGNvb3JkaW5hdGVzXHJcbiAqIGluIGNhc2UgeW91IGRvbid0IGhhdmUgYSBET00gbm9kZSB0byB1c2UgYXMgcmVmZXJlbmNlLlxyXG4gKlxyXG4gKiBgYGBcclxuICogbmV3IFBvcHBlcihyZWZlcmVuY2VPYmplY3QsIHBvcHBlck5vZGUpO1xyXG4gKiBgYGBcclxuICpcclxuICogTkI6IFRoaXMgZmVhdHVyZSBpc24ndCBzdXBwb3J0ZWQgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAuXHJcbiAqIEBuYW1lIHJlZmVyZW5jZU9iamVjdFxyXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBkYXRhLmdldEJvdW5kaW5nQ2xpZW50UmVjdFxyXG4gKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHNldCBvZiBjb29yZGluYXRlcyBjb21wYXRpYmxlIHdpdGggdGhlIG5hdGl2ZSBgZ2V0Qm91bmRpbmdDbGllbnRSZWN0YCBtZXRob2QuXHJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBkYXRhLmNsaWVudFdpZHRoXHJcbiAqIEFuIEVTNiBnZXR0ZXIgdGhhdCB3aWxsIHJldHVybiB0aGUgd2lkdGggb2YgdGhlIHZpcnR1YWwgcmVmZXJlbmNlIGVsZW1lbnQuXHJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBkYXRhLmNsaWVudEhlaWdodFxyXG4gKiBBbiBFUzYgZ2V0dGVyIHRoYXQgd2lsbCByZXR1cm4gdGhlIGhlaWdodCBvZiB0aGUgdmlydHVhbCByZWZlcmVuY2UgZWxlbWVudC5cclxuICovXHJcblxyXG5cclxuUG9wcGVyLlV0aWxzID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogZ2xvYmFsKS5Qb3BwZXJVdGlscztcclxuUG9wcGVyLnBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xyXG5Qb3BwZXIuRGVmYXVsdHMgPSBEZWZhdWx0cztcclxuXHJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoUG9wcGVyKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9wcGVyLmpzLm1hcFxyXG5cclxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKHRoaXMsIF9fd2VicGFja19yZXF1aXJlX18oXCJjOGJhXCIpKSlcclxuXHJcbi8qKiovIH0pLFxyXG5cclxuLyoqKi8gXCJmYjE1XCI6XHJcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcclxuXHJcblwidXNlIHN0cmljdFwiO1xyXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XHJcblxyXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UvbGliL2NvbW1hbmRzL2J1aWxkL3NldFB1YmxpY1BhdGguanNcclxudmFyIHNldFB1YmxpY1BhdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMWViMlwiKTtcclxuXHJcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lLmpzXHJcbnZhciBlczZfZnVuY3Rpb25fbmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3ZjdmXCIpO1xyXG5cclxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLy5jYWNoZS8vdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCIwNTk1YmE5Ni12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy9WVG91ci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTAwMDZlYjMmXHJcbnZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInYtdG91clwifSxbX3ZtLl90KFwiZGVmYXVsdFwiLF92bS5fbCgoX3ZtLnN0ZXBzKSxmdW5jdGlvbihzdGVwLGluZGV4KXtyZXR1cm4gKF92bS5jdXJyZW50U3RlcCA9PT0gaW5kZXgpP19jKCd2LXN0ZXAnLHtrZXk6aW5kZXgsYXR0cnM6e1wic3RlcFwiOnN0ZXAsXCJwcmV2aW91cy1zdGVwXCI6X3ZtLnByZXZpb3VzU3RlcCxcIm5leHQtc3RlcFwiOl92bS5uZXh0U3RlcCxcInN0b3BcIjpfdm0uc3RvcCxcImlzLWZpcnN0XCI6X3ZtLmlzRmlyc3QsXCJpcy1sYXN0XCI6X3ZtLmlzTGFzdCxcImxhYmVsc1wiOl92bS5jdXN0b21PcHRpb25zLmxhYmVsc319KTpfdm0uX2UoKX0pLHtjdXJyZW50U3RlcDpfdm0uY3VycmVudFN0ZXAsc3RlcHM6X3ZtLnN0ZXBzLHByZXZpb3VzU3RlcDpfdm0ucHJldmlvdXNTdGVwLG5leHRTdGVwOl92bS5uZXh0U3RlcCxzdG9wOl92bS5zdG9wLGlzRmlyc3Q6X3ZtLmlzRmlyc3QsaXNMYXN0Ol92bS5pc0xhc3QsbGFiZWxzOl92bS5jdXN0b21PcHRpb25zLmxhYmVsc30pXSwyKX1cclxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXHJcblxyXG5cclxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy9WVG91ci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTAwMDZlYjMmXHJcblxyXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2J1aWx0aW4vZXM2L2RlZmluZVByb3BlcnR5LmpzXHJcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcclxuICBpZiAoa2V5IGluIG9iaikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XHJcbiAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICB3cml0YWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIG9ialtrZXldID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gb2JqO1xyXG59XHJcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYnVpbHRpbi9lczYvb2JqZWN0U3ByZWFkLmpzXHJcblxyXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkge1xyXG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcclxuICAgIHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcclxuXHJcbiAgICBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgb3duS2V5cyA9IG93bktleXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgc3ltKS5lbnVtZXJhYmxlO1xyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3duS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldHVybiB0YXJnZXQ7XHJcbn1cclxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvc2hhcmVkL2NvbnN0YW50cy5qc1xyXG52YXIgREVGQVVMVF9DQUxMQkFDS1MgPSB7XHJcbiAgb25TdGFydDogZnVuY3Rpb24gb25TdGFydCgpIHt9LFxyXG4gIG9uUHJldmlvdXNTdGVwOiBmdW5jdGlvbiBvblByZXZpb3VzU3RlcChjdXJyZW50U3RlcCkge30sXHJcbiAgb25OZXh0U3RlcDogZnVuY3Rpb24gb25OZXh0U3RlcChjdXJyZW50U3RlcCkge30sXHJcbiAgb25TdG9wOiBmdW5jdGlvbiBvblN0b3AoKSB7fVxyXG59O1xyXG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xyXG4gIHVzZUtleWJvYXJkTmF2aWdhdGlvbjogdHJ1ZSxcclxuICBzdGFydFRpbWVvdXQ6IDAsXHJcbiAgbGFiZWxzOiB7XHJcbiAgICBidXR0b25Ta2lwOiAnU2tpcCB0b3VyJyxcclxuICAgIGJ1dHRvblByZXZpb3VzOiAnUHJldmlvdXMnLFxyXG4gICAgYnV0dG9uTmV4dDogJ05leHQnLFxyXG4gICAgYnV0dG9uU3RvcDogJ0ZpbmlzaCdcclxuICB9XHJcbn07XHJcbnZhciBERUZBVUxUX1NURVBfT1BUSU9OUyA9IHtcclxuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxyXG4gIGVuYWJsZVNjcm9sbGluZzogdHJ1ZSxcclxuICBtb2RpZmllcnM6IHtcclxuICAgIGFycm93OiB7XHJcbiAgICAgIGVsZW1lbnQ6ICcudi1zdGVwX19hcnJvdydcclxuICAgIH1cclxuICB9XHJcbn07XHJcbnZhciBLRVlTID0ge1xyXG4gIEFSUk9XX1JJR0hUOiAzOSxcclxuICBBUlJPV19MRUZUOiAzNyxcclxuICBFU0NBUEU6IDI3XHJcbn07XHJcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4vbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvVlRvdXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxyXG5cclxuXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcblxyXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBWVG91cnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XHJcbiAgbmFtZTogJ3YtdG91cicsXHJcbiAgcHJvcHM6IHtcclxuICAgIHN0ZXBzOiB7XHJcbiAgICAgIHR5cGU6IEFycmF5LFxyXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBuYW1lOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIG9wdGlvbnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4gREVGQVVMVF9PUFRJT05TO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgY2FsbGJhY2tzOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfQ0FMTEJBQ0tTO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY3VycmVudFN0ZXA6IC0xXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcclxuICAgIHRoaXMuJHRvdXJzW3RoaXMubmFtZV0gPSB0aGlzO1xyXG5cclxuICAgIGlmICh0aGlzLmN1c3RvbU9wdGlvbnMudXNlS2V5Ym9hcmROYXZpZ2F0aW9uKSB7XHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuaGFuZGxlS2V5dXApO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcclxuICAgIC8vIFJlbW92ZSB0aGUga2V5dXAgbGlzdGVuZXIgaWYgaXQgaGFzIGJlZW4gZGVmaW5lZFxyXG4gICAgaWYgKHRoaXMuY3VzdG9tT3B0aW9ucy51c2VLZXlib2FyZE5hdmlnYXRpb24pIHtcclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5oYW5kbGVLZXl1cCk7XHJcbiAgICB9XHJcbiAgfSxcclxuICBjb21wdXRlZDoge1xyXG4gICAgLy8gQWxsb3cgdXMgdG8gZGVmaW5lIGN1c3RvbSBvcHRpb25zIGFuZCBtZXJnZSB0aGVtIHdpdGggdGhlIGRlZmF1bHQgb3B0aW9ucy5cclxuICAgIC8vIFNpbmNlIG9wdGlvbnMgaXMgYSBjb21wdXRlZCBwcm9wZXJ0eSwgaXQgaXMgcmVhY3RpdmUgYW5kIGNhbiBiZSB1cGRhdGVkIGR1cmluZyBydW50aW1lLlxyXG4gICAgY3VzdG9tT3B0aW9uczogZnVuY3Rpb24gY3VzdG9tT3B0aW9ucygpIHtcclxuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe30sIERFRkFVTFRfT1BUSU9OUywgdGhpcy5vcHRpb25zKTtcclxuICAgIH0sXHJcbiAgICBjdXN0b21DYWxsYmFja3M6IGZ1bmN0aW9uIGN1c3RvbUNhbGxiYWNrcygpIHtcclxuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe30sIERFRkFVTFRfQ0FMTEJBQ0tTLCB0aGlzLmNhbGxiYWNrcyk7XHJcbiAgICB9LFxyXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIHRvdXIgaXMgYWN0aXZlLCB3aGljaCBtZWFucyB0aGF0IHRoZXJlJ3MgYSBWU3RlcCBkaXNwbGF5ZWRcclxuICAgIGlzUnVubmluZzogZnVuY3Rpb24gaXNSdW5uaW5nKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcCA+IC0xICYmIHRoaXMuY3VycmVudFN0ZXAgPCB0aGlzLm51bWJlck9mU3RlcHM7XHJcbiAgICB9LFxyXG4gICAgaXNGaXJzdDogZnVuY3Rpb24gaXNGaXJzdCgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFN0ZXAgPT09IDA7XHJcbiAgICB9LFxyXG4gICAgaXNMYXN0OiBmdW5jdGlvbiBpc0xhc3QoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGVwID09PSB0aGlzLnN0ZXBzLmxlbmd0aCAtIDE7XHJcbiAgICB9LFxyXG4gICAgbnVtYmVyT2ZTdGVwczogZnVuY3Rpb24gbnVtYmVyT2ZTdGVwcygpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RlcHMubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KHN0YXJ0U3RlcCkge1xyXG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgICAgLy8gV2FpdCBmb3IgdGhlIERPTSB0byBiZSBsb2FkZWQsIHRoZW4gc3RhcnQgdGhlIHRvdXJcclxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgX3RoaXMuY3VzdG9tQ2FsbGJhY2tzLm9uU3RhcnQoKTtcclxuXHJcbiAgICAgICAgX3RoaXMuY3VycmVudFN0ZXAgPSB0eXBlb2Ygc3RhcnRTdGVwICE9PSAndW5kZWZpbmVkJyA/IHBhcnNlSW50KHN0YXJ0U3RlcCwgMTApIDogMDtcclxuICAgICAgfSwgdGhpcy5jdXN0b21PcHRpb25zLnN0YXJ0VGltZW91dCk7XHJcbiAgICB9LFxyXG4gICAgcHJldmlvdXNTdGVwOiBmdW5jdGlvbiBwcmV2aW91c1N0ZXAoKSB7XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGVwID4gMCkge1xyXG4gICAgICAgIHRoaXMuY3VzdG9tQ2FsbGJhY2tzLm9uUHJldmlvdXNTdGVwKHRoaXMuY3VycmVudFN0ZXApO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFN0ZXAtLTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIG5leHRTdGVwOiBmdW5jdGlvbiBuZXh0U3RlcCgpIHtcclxuICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXAgPCB0aGlzLm51bWJlck9mU3RlcHMgLSAxICYmIHRoaXMuY3VycmVudFN0ZXAgIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5jdXN0b21DYWxsYmFja3Mub25OZXh0U3RlcCh0aGlzLmN1cnJlbnRTdGVwKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwKys7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge1xyXG4gICAgICB0aGlzLmN1c3RvbUNhbGxiYWNrcy5vblN0b3AoKTtcclxuICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IC0xO1xyXG4gICAgfSxcclxuICAgIGhhbmRsZUtleXVwOiBmdW5jdGlvbiBoYW5kbGVLZXl1cChlKSB7XHJcbiAgICAgIC8vIFRPRE86IGRlYnVnIG1vZGVcclxuICAgICAgLy8gY29uc29sZS5sb2coJ1tWdWUgVG91cl0gQSBrZXl1cCBldmVudCBvY2N1cmVkOicsIGUpXHJcbiAgICAgIHN3aXRjaCAoZS5rZXlDb2RlKSB7XHJcbiAgICAgICAgY2FzZSBLRVlTLkFSUk9XX1JJR0hUOlxyXG4gICAgICAgICAgdGhpcy5uZXh0U3RlcCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgS0VZUy5BUlJPV19MRUZUOlxyXG4gICAgICAgICAgdGhpcy5wcmV2aW91c1N0ZXAoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEtFWVMuRVNDQVBFOlxyXG4gICAgICAgICAgdGhpcy5zdG9wKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSk7XHJcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvVlRvdXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxyXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c19WVG91cnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChWVG91cnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxyXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcclxuLyogZ2xvYmFscyBfX1ZVRV9TU1JfQ09OVEVYVF9fICovXHJcblxyXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cclxuLy8gVGhpcyBtb2R1bGUgaXMgYSBydW50aW1lIHV0aWxpdHkgZm9yIGNsZWFuZXIgY29tcG9uZW50IG1vZHVsZSBvdXRwdXQgYW5kIHdpbGxcclxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXHJcblxyXG5mdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxyXG4gIHNjcmlwdEV4cG9ydHMsXHJcbiAgcmVuZGVyLFxyXG4gIHN0YXRpY1JlbmRlckZucyxcclxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXHJcbiAgaW5qZWN0U3R5bGVzLFxyXG4gIHNjb3BlSWQsXHJcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cclxuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xyXG4pIHtcclxuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXHJcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnNcclxuICAgIDogc2NyaXB0RXhwb3J0c1xyXG5cclxuICAvLyByZW5kZXIgZnVuY3Rpb25zXHJcbiAgaWYgKHJlbmRlcikge1xyXG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zXHJcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcclxuICB9XHJcblxyXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcclxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XHJcbiAgICBvcHRpb25zLmZ1bmN0aW9uYWwgPSB0cnVlXHJcbiAgfVxyXG5cclxuICAvLyBzY29wZWRJZFxyXG4gIGlmIChzY29wZUlkKSB7XHJcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxyXG4gIH1cclxuXHJcbiAgdmFyIGhvb2tcclxuICBpZiAobW9kdWxlSWRlbnRpZmllcikgeyAvLyBzZXJ2ZXIgYnVpbGRcclxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xyXG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXHJcbiAgICAgIGNvbnRleHQgPVxyXG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcclxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcclxuICAgICAgICAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuJHZub2RlICYmIHRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0KSAvLyBmdW5jdGlvbmFsXHJcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxyXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX19cclxuICAgICAgfVxyXG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xyXG4gICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XHJcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcclxuICAgICAgfVxyXG4gICAgICAvLyByZWdpc3RlciBjb21wb25lbnQgbW9kdWxlIGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVycmVuY2VcclxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcclxuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcclxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXHJcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcclxuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xyXG4gICAgaG9vayA9IHNoYWRvd01vZGVcclxuICAgICAgPyBmdW5jdGlvbiAoKSB7IGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCkgfVxyXG4gICAgICA6IGluamVjdFN0eWxlc1xyXG4gIH1cclxuXHJcbiAgaWYgKGhvb2spIHtcclxuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcclxuICAgICAgLy8gZm9yIHRlbXBsYXRlLW9ubHkgaG90LXJlbG9hZCBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcmVuZGVyIGZuIGRvZXNuJ3RcclxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxyXG4gICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rXHJcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXHJcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXHJcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uIChoLCBjb250ZXh0KSB7XHJcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXHJcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXHJcbiAgICAgIHZhciBleGlzdGluZyA9IG9wdGlvbnMuYmVmb3JlQ3JlYXRlXHJcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcclxuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcclxuICAgICAgICA6IFtob29rXVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXHJcbiAgICBvcHRpb25zOiBvcHRpb25zXHJcbiAgfVxyXG59XHJcblxyXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL1ZUb3VyLnZ1ZVxyXG5cclxuXHJcblxyXG5cclxuXHJcbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cclxuXHJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXHJcbiAgY29tcG9uZW50c19WVG91cnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcclxuICByZW5kZXIsXHJcbiAgc3RhdGljUmVuZGVyRm5zLFxyXG4gIGZhbHNlLFxyXG4gIG51bGwsXHJcbiAgbnVsbCxcclxuICBudWxsXHJcbiAgXHJcbilcclxuXHJcbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwiVlRvdXIudnVlXCJcclxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgVlRvdXIgPSAoY29tcG9uZW50LmV4cG9ydHMpO1xyXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8vLmNhY2hlLy92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjA1OTViYTk2LXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL1ZTdGVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hYTBjYmU0MiZzY29wZWQ9dHJ1ZSZcclxudmFyIFZTdGVwdnVlX3R5cGVfdGVtcGxhdGVfaWRfYWEwY2JlNDJfc2NvcGVkX3RydWVfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7cmVmOid2LXN0ZXAtJyArIF92bS5oYXNoLHN0YXRpY0NsYXNzOlwidi1zdGVwXCIsYXR0cnM6e1wiaWRcIjondi1zdGVwLScgKyBfdm0uaGFzaH19LFtfdm0uX3QoXCJoZWFkZXJcIixbKF92bS5zdGVwLmhlYWRlcik/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidi1zdGVwX19oZWFkZXJcIn0sWyhfdm0uc3RlcC5oZWFkZXIudGl0bGUpP19jKCdkaXYnLHtkb21Qcm9wczp7XCJpbm5lckhUTUxcIjpfdm0uX3MoX3ZtLnN0ZXAuaGVhZGVyLnRpdGxlKX19KTpfdm0uX2UoKV0pOl92bS5fZSgpXSksX3ZtLl90KFwiY29udGVudFwiLFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2LXN0ZXBfX2NvbnRlbnRcIn0sWyhfdm0uc3RlcC5jb250ZW50KT9fYygnZGl2Jyx7ZG9tUHJvcHM6e1wiaW5uZXJIVE1MXCI6X3ZtLl9zKF92bS5zdGVwLmNvbnRlbnQpfX0pOl9jKCdkaXYnLFtfdm0uX3YoXCJUaGlzIGlzIGEgZGVtbyBzdGVwISBUaGUgaWQgb2YgdGhpcyBzdGVwIGlzIFwiK192bS5fcyhfdm0uaGFzaCkrXCIgYW5kIGl0IHRhcmdldHMgXCIrX3ZtLl9zKF92bS5zdGVwLnRhcmdldCkrXCIuXCIpXSldKV0pLF92bS5fdChcImFjdGlvbnNcIixbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidi1zdGVwX19idXR0b25zXCJ9LFsoIV92bS5pc0xhc3QpP19jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcInYtc3RlcF9fYnV0dG9uXCIsb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpeyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBfdm0uc3RvcCgkZXZlbnQpfX19LFtfdm0uX3YoX3ZtLl9zKF92bS5sYWJlbHMuYnV0dG9uU2tpcCkpXSk6X3ZtLl9lKCksKCFfdm0uaXNGaXJzdCk/X2MoJ2J1dHRvbicse3N0YXRpY0NsYXNzOlwidi1zdGVwX19idXR0b25cIixvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5wcmV2aW91c1N0ZXAoJGV2ZW50KX19fSxbX3ZtLl92KF92bS5fcyhfdm0ubGFiZWxzLmJ1dHRvblByZXZpb3VzKSldKTpfdm0uX2UoKSwoIV92bS5pc0xhc3QpP19jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcInYtc3RlcF9fYnV0dG9uXCIsb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpeyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBfdm0ubmV4dFN0ZXAoJGV2ZW50KX19fSxbX3ZtLl92KF92bS5fcyhfdm0ubGFiZWxzLmJ1dHRvbk5leHQpKV0pOl92bS5fZSgpLChfdm0uaXNMYXN0KT9fYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJ2LXN0ZXBfX2J1dHRvblwiLG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXskZXZlbnQucHJldmVudERlZmF1bHQoKTtyZXR1cm4gX3ZtLnN0b3AoJGV2ZW50KX19fSxbX3ZtLl92KF92bS5fcyhfdm0ubGFiZWxzLmJ1dHRvblN0b3ApKV0pOl92bS5fZSgpXSldKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2LXN0ZXBfX2Fycm93XCIsY2xhc3M6eyAndi1zdGVwX19hcnJvdy0tZGFyayc6IF92bS5zdGVwLmhlYWRlciAmJiBfdm0uc3RlcC5oZWFkZXIudGl0bGUgfX0pXSwyKX1cclxudmFyIFZTdGVwdnVlX3R5cGVfdGVtcGxhdGVfaWRfYWEwY2JlNDJfc2NvcGVkX3RydWVfc3RhdGljUmVuZGVyRm5zID0gW11cclxuXHJcblxyXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL1ZTdGVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hYTBjYmU0MiZzY29wZWQ9dHJ1ZSZcclxuXHJcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvcG9wcGVyLmpzL2Rpc3QvZXNtL3BvcHBlci5qc1xyXG52YXIgcG9wcGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImYwYmRcIik7XHJcblxyXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9qdW1wLmpzL2Rpc3QvanVtcC5tb2R1bGUuanNcclxuLy8gUm9iZXJ0IFBlbm5lcidzIGVhc2VJbk91dFF1YWRcclxuXHJcbi8vIGZpbmQgdGhlIHJlc3Qgb2YgaGlzIGVhc2luZyBmdW5jdGlvbnMgaGVyZTogaHR0cDovL3JvYmVydHBlbm5lci5jb20vZWFzaW5nL1xyXG4vLyBmaW5kIHRoZW0gZXhwb3J0ZWQgZm9yIEVTNiBjb25zdW1wdGlvbiBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vamF4Z2VsbGVyL2V6LmpzXHJcblxyXG52YXIgZWFzZUluT3V0UXVhZCA9IGZ1bmN0aW9uIGVhc2VJbk91dFF1YWQodCwgYiwgYywgZCkge1xyXG4gIHQgLz0gZCAvIDI7XHJcbiAgaWYgKHQgPCAxKSByZXR1cm4gYyAvIDIgKiB0ICogdCArIGI7XHJcbiAgdC0tO1xyXG4gIHJldHVybiAtYyAvIDIgKiAodCAqICh0IC0gMikgLSAxKSArIGI7XHJcbn07XHJcblxyXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xyXG4gIHJldHVybiB0eXBlb2Ygb2JqO1xyXG59IDogZnVuY3Rpb24gKG9iaikge1xyXG4gIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xyXG59O1xyXG5cclxudmFyIGp1bXBlciA9IGZ1bmN0aW9uIGp1bXBlcigpIHtcclxuICAvLyBwcml2YXRlIHZhcmlhYmxlIGNhY2hlXHJcbiAgLy8gbm8gdmFyaWFibGVzIGFyZSBjcmVhdGVkIGR1cmluZyBhIGp1bXAsIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzXHJcblxyXG4gIHZhciBlbGVtZW50ID0gdm9pZCAwOyAvLyBlbGVtZW50IHRvIHNjcm9sbCB0byAgICAgICAgICAgICAgICAgICAobm9kZSlcclxuXHJcbiAgdmFyIHN0YXJ0ID0gdm9pZCAwOyAvLyB3aGVyZSBzY3JvbGwgc3RhcnRzICAgICAgICAgICAgICAgICAgICAocHgpXHJcbiAgdmFyIHN0b3AgPSB2b2lkIDA7IC8vIHdoZXJlIHNjcm9sbCBzdG9wcyAgICAgICAgICAgICAgICAgICAgIChweClcclxuXHJcbiAgdmFyIG9mZnNldCA9IHZvaWQgMDsgLy8gYWRqdXN0bWVudCBmcm9tIHRoZSBzdG9wIHBvc2l0aW9uICAgICAgKHB4KVxyXG4gIHZhciBlYXNpbmcgPSB2b2lkIDA7IC8vIGVhc2luZyBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbilcclxuICB2YXIgYTExeSA9IHZvaWQgMDsgLy8gYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGZsYWcgICAgICAgICAgICAgKGJvb2xlYW4pXHJcblxyXG4gIHZhciBkaXN0YW5jZSA9IHZvaWQgMDsgLy8gZGlzdGFuY2Ugb2Ygc2Nyb2xsICAgICAgICAgICAgICAgICAgICAgKHB4KVxyXG4gIHZhciBkdXJhdGlvbiA9IHZvaWQgMDsgLy8gc2Nyb2xsIGR1cmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgKG1zKVxyXG5cclxuICB2YXIgdGltZVN0YXJ0ID0gdm9pZCAwOyAvLyB0aW1lIHNjcm9sbCBzdGFydGVkICAgICAgICAgICAgICAgICAgICAobXMpXHJcbiAgdmFyIHRpbWVFbGFwc2VkID0gdm9pZCAwOyAvLyB0aW1lIHNwZW50IHNjcm9sbGluZyB0aHVzIGZhciAgICAgICAgICAobXMpXHJcblxyXG4gIHZhciBuZXh0ID0gdm9pZCAwOyAvLyBuZXh0IHNjcm9sbCBwb3NpdGlvbiAgICAgICAgICAgICAgICAgICAocHgpXHJcblxyXG4gIHZhciBjYWxsYmFjayA9IHZvaWQgMDsgLy8gdG8gY2FsbCB3aGVuIGRvbmUgc2Nyb2xsaW5nICAgICAgICAgICAgKGZ1bmN0aW9uKVxyXG5cclxuICAvLyBzY3JvbGwgcG9zaXRpb24gaGVscGVyXHJcblxyXG4gIGZ1bmN0aW9uIGxvY2F0aW9uKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5zY3JvbGxZIHx8IHdpbmRvdy5wYWdlWU9mZnNldDtcclxuICB9XHJcblxyXG4gIC8vIGVsZW1lbnQgb2Zmc2V0IGhlbHBlclxyXG5cclxuICBmdW5jdGlvbiB0b3AoZWxlbWVudCkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgc3RhcnQ7XHJcbiAgfVxyXG5cclxuICAvLyByQUYgbG9vcCBoZWxwZXJcclxuXHJcbiAgZnVuY3Rpb24gbG9vcCh0aW1lQ3VycmVudCkge1xyXG4gICAgLy8gc3RvcmUgdGltZSBzY3JvbGwgc3RhcnRlZCwgaWYgbm90IHN0YXJ0ZWQgYWxyZWFkeVxyXG4gICAgaWYgKCF0aW1lU3RhcnQpIHtcclxuICAgICAgdGltZVN0YXJ0ID0gdGltZUN1cnJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGV0ZXJtaW5lIHRpbWUgc3BlbnQgc2Nyb2xsaW5nIHNvIGZhclxyXG4gICAgdGltZUVsYXBzZWQgPSB0aW1lQ3VycmVudCAtIHRpbWVTdGFydDtcclxuXHJcbiAgICAvLyBjYWxjdWxhdGUgbmV4dCBzY3JvbGwgcG9zaXRpb25cclxuICAgIG5leHQgPSBlYXNpbmcodGltZUVsYXBzZWQsIHN0YXJ0LCBkaXN0YW5jZSwgZHVyYXRpb24pO1xyXG5cclxuICAgIC8vIHNjcm9sbCB0byBpdFxyXG4gICAgd2luZG93LnNjcm9sbFRvKDAsIG5leHQpO1xyXG5cclxuICAgIC8vIGNoZWNrIHByb2dyZXNzXHJcbiAgICB0aW1lRWxhcHNlZCA8IGR1cmF0aW9uID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShsb29wKSAvLyBjb250aW51ZSBzY3JvbGwgbG9vcFxyXG4gICAgOiBkb25lKCk7IC8vIHNjcm9sbGluZyBpcyBkb25lXHJcbiAgfVxyXG5cclxuICAvLyBzY3JvbGwgZmluaXNoZWQgaGVscGVyXHJcblxyXG4gIGZ1bmN0aW9uIGRvbmUoKSB7XHJcbiAgICAvLyBhY2NvdW50IGZvciByQUYgdGltZSByb3VuZGluZyBpbmFjY3VyYWNpZXNcclxuICAgIHdpbmRvdy5zY3JvbGxUbygwLCBzdGFydCArIGRpc3RhbmNlKTtcclxuXHJcbiAgICAvLyBpZiBzY3JvbGxpbmcgdG8gYW4gZWxlbWVudCwgYW5kIGFjY2Vzc2liaWxpdHkgaXMgZW5hYmxlZFxyXG4gICAgaWYgKGVsZW1lbnQgJiYgYTExeSkge1xyXG4gICAgICAvLyBhZGQgdGFiaW5kZXggaW5kaWNhdGluZyBwcm9ncmFtbWF0aWMgZm9jdXNcclxuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XHJcblxyXG4gICAgICAvLyBmb2N1cyB0aGUgZWxlbWVudFxyXG4gICAgICBlbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgaXQgZXhpc3RzLCBmaXJlIHRoZSBjYWxsYmFja1xyXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHJlc2V0IHRpbWUgZm9yIG5leHQganVtcFxyXG4gICAgdGltZVN0YXJ0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBBUElcclxuXHJcbiAgZnVuY3Rpb24ganVtcCh0YXJnZXQpIHtcclxuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcclxuXHJcbiAgICAvLyByZXNvbHZlIG9wdGlvbnMsIG9yIHVzZSBkZWZhdWx0c1xyXG4gICAgZHVyYXRpb24gPSBvcHRpb25zLmR1cmF0aW9uIHx8IDEwMDA7XHJcbiAgICBvZmZzZXQgPSBvcHRpb25zLm9mZnNldCB8fCAwO1xyXG4gICAgY2FsbGJhY2sgPSBvcHRpb25zLmNhbGxiYWNrOyAvLyBcInVuZGVmaW5lZFwiIGlzIGEgc3VpdGFibGUgZGVmYXVsdCwgYW5kIHdvbid0IGJlIGNhbGxlZFxyXG4gICAgZWFzaW5nID0gb3B0aW9ucy5lYXNpbmcgfHwgZWFzZUluT3V0UXVhZDtcclxuICAgIGExMXkgPSBvcHRpb25zLmExMXkgfHwgZmFsc2U7XHJcblxyXG4gICAgLy8gY2FjaGUgc3RhcnRpbmcgcG9zaXRpb25cclxuICAgIHN0YXJ0ID0gbG9jYXRpb24oKTtcclxuXHJcbiAgICAvLyByZXNvbHZlIHRhcmdldFxyXG4gICAgc3dpdGNoICh0eXBlb2YgdGFyZ2V0ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZih0YXJnZXQpKSB7XHJcbiAgICAgIC8vIHNjcm9sbCBmcm9tIGN1cnJlbnQgcG9zaXRpb25cclxuICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICBlbGVtZW50ID0gdW5kZWZpbmVkOyAvLyBubyBlbGVtZW50IHRvIHNjcm9sbCB0b1xyXG4gICAgICAgIGExMXkgPSBmYWxzZTsgLy8gbWFrZSBzdXJlIGFjY2Vzc2liaWxpdHkgaXMgb2ZmXHJcbiAgICAgICAgc3RvcCA9IHN0YXJ0ICsgdGFyZ2V0O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgLy8gc2Nyb2xsIHRvIGVsZW1lbnQgKG5vZGUpXHJcbiAgICAgIC8vIGJvdW5kaW5nIHJlY3QgaXMgcmVsYXRpdmUgdG8gdGhlIHZpZXdwb3J0XHJcbiAgICAgIGNhc2UgJ29iamVjdCc6XHJcbiAgICAgICAgZWxlbWVudCA9IHRhcmdldDtcclxuICAgICAgICBzdG9wID0gdG9wKGVsZW1lbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgLy8gc2Nyb2xsIHRvIGVsZW1lbnQgKHNlbGVjdG9yKVxyXG4gICAgICAvLyBib3VuZGluZyByZWN0IGlzIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydFxyXG4gICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7XHJcbiAgICAgICAgc3RvcCA9IHRvcChlbGVtZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICAvLyByZXNvbHZlIHNjcm9sbCBkaXN0YW5jZSwgYWNjb3VudGluZyBmb3Igb2Zmc2V0XHJcbiAgICBkaXN0YW5jZSA9IHN0b3AgLSBzdGFydCArIG9mZnNldDtcclxuXHJcbiAgICAvLyByZXNvbHZlIGR1cmF0aW9uXHJcbiAgICBzd2l0Y2ggKF90eXBlb2Yob3B0aW9ucy5kdXJhdGlvbikpIHtcclxuICAgICAgLy8gbnVtYmVyIGluIG1zXHJcbiAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgZHVyYXRpb24gPSBvcHRpb25zLmR1cmF0aW9uO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgLy8gZnVuY3Rpb24gcGFzc2VkIHRoZSBkaXN0YW5jZSBvZiB0aGUgc2Nyb2xsXHJcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcclxuICAgICAgICBkdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb24oZGlzdGFuY2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHN0YXJ0IHRoZSBsb29wXHJcbiAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO1xyXG4gIH1cclxuXHJcbiAgLy8gZXhwb3NlIG9ubHkgdGhlIGp1bXAgbWV0aG9kXHJcbiAgcmV0dXJuIGp1bXA7XHJcbn07XHJcblxyXG4vLyBleHBvcnQgc2luZ2xldG9uXHJcblxyXG52YXIgc2luZ2xldG9uID0ganVtcGVyKCk7XHJcblxyXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBqdW1wX21vZHVsZSA9IChzaW5nbGV0b24pO1xyXG5cclxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9oYXNoLXN1bS9oYXNoLXN1bS5qc1xyXG52YXIgaGFzaF9zdW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODYzNFwiKTtcclxudmFyIGhhc2hfc3VtX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGhhc2hfc3VtKTtcclxuXHJcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4vbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvVlN0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxyXG5cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuXHJcblxyXG5cclxuXHJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIFZTdGVwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcclxuICBuYW1lOiAndi1zdGVwJyxcclxuICBwcm9wczoge1xyXG4gICAgc3RlcDoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICBwcmV2aW91c1N0ZXA6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb25cclxuICAgIH0sXHJcbiAgICBuZXh0U3RlcDoge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvblxyXG4gICAgfSxcclxuICAgIHN0b3A6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb25cclxuICAgIH0sXHJcbiAgICBpc0ZpcnN0OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW5cclxuICAgIH0sXHJcbiAgICBpc0xhc3Q6IHtcclxuICAgICAgdHlwZTogQm9vbGVhblxyXG4gICAgfSxcclxuICAgIGxhYmVsczoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH1cclxuICB9LFxyXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBoYXNoOiBoYXNoX3N1bV9kZWZhdWx0KCkodGhpcy5zdGVwLnRhcmdldClcclxuICAgIH07XHJcbiAgfSxcclxuICBjb21wdXRlZDoge1xyXG4gICAgcGFyYW1zOiBmdW5jdGlvbiBwYXJhbXMoKSB7XHJcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCBERUZBVUxUX1NURVBfT1BUSU9OUywgdGhpcy5zdGVwLnBhcmFtcyk7XHJcbiAgICB9XHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBjcmVhdGVTdGVwOiBmdW5jdGlvbiBjcmVhdGVTdGVwKCkge1xyXG4gICAgICB2YXIgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5zdGVwLnRhcmdldCk7IC8vIFRPRE86IGRlYnVnIG1vZGVcclxuICAgICAgLy8gY29uc29sZS5sb2coJ1tWdWUgVG91cl0gVGhlIHRhcmdldCBlbGVtZW50ICcgKyB0aGlzLnN0ZXAudGFyZ2V0ICsgJyBvZiAudi1zdGVwW2lkPVwiJyArIHRoaXMuaGFzaCArICdcIl0gaXM6JywgdGFyZ2V0RWxlbWVudClcclxuXHJcbiAgICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGFyYW1zLmVuYWJsZVNjcm9sbGluZykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc3RlcC5kdXJhdGlvbiB8fCB0aGlzLnN0ZXAub2Zmc2V0KSB7XHJcbiAgICAgICAgICAgIHZhciBqdW1wT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5zdGVwLmR1cmF0aW9uIHx8IDEwMDAsXHJcbiAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLnN0ZXAub2Zmc2V0IHx8IDAsXHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICBhMTF5OiBmYWxzZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBqdW1wX21vZHVsZSh0YXJnZXRFbGVtZW50LCBqdW1wT3B0aW9ucyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBzY3JvbGwgYnkgZGVmYXVsdCBpZiBubyBzY3JvbGwgb3B0aW9ucyBoYXMgYmVlbiBkZWZpbmVkXHJcbiAgICAgICAgICAgIHRhcmdldEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tbmV3ICovXHJcblxyXG5cclxuICAgICAgICBuZXcgcG9wcGVyW1wiYVwiIC8qIGRlZmF1bHQgKi9dKHRhcmdldEVsZW1lbnQsIHRoaXMuJHJlZnNbJ3Ytc3RlcC0nICsgdGhpcy5oYXNoXSwgdGhpcy5wYXJhbXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tWdWUgVG91cl0gVGhlIHRhcmdldCBlbGVtZW50ICcgKyB0aGlzLnN0ZXAudGFyZ2V0ICsgJyBvZiAudi1zdGVwW2lkPVwiJyArIHRoaXMuaGFzaCArICdcIl0gZG9lcyBub3QgZXhpc3QhJyk7XHJcbiAgICAgICAgdGhpcy4kZW1pdCgndGFyZ2V0Tm90Rm91bmQnLCB0aGlzLnN0ZXApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xyXG4gICAgdGhpcy5jcmVhdGVTdGVwKCk7XHJcbiAgfVxyXG59KTtcclxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy9WU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXHJcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX1ZTdGVwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKFZTdGVwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXHJcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy9WU3RlcC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1hYTBjYmU0MiZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXHJcbnZhciBWU3RlcHZ1ZV90eXBlX3N0eWxlX2luZGV4XzBfaWRfYWEwY2JlNDJfbGFuZ19zY3NzX3Njb3BlZF90cnVlXyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1YjFiXCIpO1xyXG5cclxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy9WU3RlcC52dWVcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xyXG5cclxudmFyIFZTdGVwX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcclxuICBjb21wb25lbnRzX1ZTdGVwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxyXG4gIFZTdGVwdnVlX3R5cGVfdGVtcGxhdGVfaWRfYWEwY2JlNDJfc2NvcGVkX3RydWVfcmVuZGVyLFxyXG4gIFZTdGVwdnVlX3R5cGVfdGVtcGxhdGVfaWRfYWEwY2JlNDJfc2NvcGVkX3RydWVfc3RhdGljUmVuZGVyRm5zLFxyXG4gIGZhbHNlLFxyXG4gIG51bGwsXHJcbiAgXCJhYTBjYmU0MlwiLFxyXG4gIG51bGxcclxuICBcclxuKVxyXG5cclxuVlN0ZXBfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJWU3RlcC52dWVcIlxyXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBWU3RlcCA9IChWU3RlcF9jb21wb25lbnQuZXhwb3J0cyk7XHJcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL21haW4uanNcclxuXHJcblxyXG5cclxudmFyIFZ1ZVRvdXIgPSB7XHJcbiAgaW5zdGFsbDogZnVuY3Rpb24gaW5zdGFsbChWdWUsIG9wdGlvbnMpIHtcclxuICAgIFZ1ZS5jb21wb25lbnQoVlRvdXIubmFtZSwgVlRvdXIpO1xyXG4gICAgVnVlLmNvbXBvbmVudChWU3RlcC5uYW1lLCBWU3RlcCk7IC8vIE9iamVjdCBjb250YWluaW5nIFRvdXIgb2JqZWN0cyAoc2VlIFZUb3VyLnZ1ZSkgd2hlcmUgdGhlIHRvdXIgbmFtZSBpcyB1c2VkIGFzIGtleVxyXG5cclxuICAgIFZ1ZS5wcm90b3R5cGUuJHRvdXJzID0ge307XHJcbiAgfVxyXG59O1xyXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYWluID0gKFZ1ZVRvdXIpO1xyXG5cclxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WdWUpIHtcclxuICB3aW5kb3cuVnVlLnVzZShWdWVUb3VyKTtcclxufVxyXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlL2xpYi9jb21tYW5kcy9idWlsZC9lbnRyeS1saWIuanNcclxuXHJcblxyXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBlbnRyeV9saWIgPSBfX3dlYnBhY2tfZXhwb3J0c19fW1wiZGVmYXVsdFwiXSA9IChtYWluKTtcclxuXHJcblxyXG5cclxuLyoqKi8gfSlcclxuXHJcbi8qKioqKiovIH0pO1xyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dnVlLXRvdXIudW1kLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-tour/dist/vue-tour.umd.js\n");

/***/ }),

/***/ "./node_modules/vue/dist/vue.runtime.esm.js":
/*!**************************************************!*\
  !*** ./node_modules/vue/dist/vue.runtime.esm.js ***!
  \**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/*  */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n  return v === undefined || v === null\n}\n\nfunction isDef (v) {\n  return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n  return v === true\n}\n\nfunction isFalse (v) {\n  return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n  return (\n    typeof value === 'string' ||\n    typeof value === 'number' ||\n    // $flow-disable-line\n    typeof value === 'symbol' ||\n    typeof value === 'boolean'\n  )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n  return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n  return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n  return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n  var n = parseFloat(String(val));\n  return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n  return (\n    isDef(val) &&\n    typeof val.then === 'function' &&\n    typeof val.catch === 'function'\n  )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n  return val == null\n    ? ''\n    : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n      ? JSON.stringify(val, null, 2)\n      : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n  var n = parseFloat(val);\n  return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n  str,\n  expectsLowerCase\n) {\n  var map = Object.create(null);\n  var list = str.split(',');\n  for (var i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n  return expectsLowerCase\n    ? function (val) { return map[val.toLowerCase()]; }\n    : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n  if (arr.length) {\n    var index = arr.indexOf(item);\n    if (index > -1) {\n      return arr.splice(index, 1)\n    }\n  }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n  var cache = Object.create(null);\n  return (function cachedFn (str) {\n    var hit = cache[str];\n    return hit || (cache[str] = fn(str))\n  })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n  return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n  return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n  return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n  function boundFn (a) {\n    var l = arguments.length;\n    return l\n      ? l > 1\n        ? fn.apply(ctx, arguments)\n        : fn.call(ctx, a)\n      : fn.call(ctx)\n  }\n\n  boundFn._length = fn.length;\n  return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n  return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n  ? nativeBind\n  : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n  start = start || 0;\n  var i = list.length - start;\n  var ret = new Array(i);\n  while (i--) {\n    ret[i] = list[i + start];\n  }\n  return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n  for (var key in _from) {\n    to[key] = _from[key];\n  }\n  return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n  var res = {};\n  for (var i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n  return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n  if (a === b) { return true }\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = Array.isArray(a);\n      var isArrayB = Array.isArray(b);\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i])\n        })\n      } else if (a instanceof Date && b instanceof Date) {\n        return a.getTime() === b.getTime()\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key])\n        })\n      } else {\n        /* istanbul ignore next */\n        return false\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n  for (var i = 0; i < arr.length; i++) {\n    if (looseEqual(arr[i], val)) { return i }\n  }\n  return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n  var called = false;\n  return function () {\n    if (!called) {\n      called = true;\n      fn.apply(this, arguments);\n    }\n  }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n  'component',\n  'directive',\n  'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n  'beforeCreate',\n  'created',\n  'beforeMount',\n  'mounted',\n  'beforeUpdate',\n  'updated',\n  'beforeDestroy',\n  'destroyed',\n  'activated',\n  'deactivated',\n  'errorCaptured',\n  'serverPrefetch'\n];\n\n/*  */\n\n\n\nvar config = ({\n  /**\n   * Option merge strategies (used in core/util/options)\n   */\n  // $flow-disable-line\n  optionMergeStrategies: Object.create(null),\n\n  /**\n   * Whether to suppress warnings.\n   */\n  silent: false,\n\n  /**\n   * Show production mode tip message on boot?\n   */\n  productionTip: \"staging\" !== 'production',\n\n  /**\n   * Whether to enable devtools\n   */\n  devtools: \"staging\" !== 'production',\n\n  /**\n   * Whether to record perf\n   */\n  performance: false,\n\n  /**\n   * Error handler for watcher errors\n   */\n  errorHandler: null,\n\n  /**\n   * Warn handler for watcher warns\n   */\n  warnHandler: null,\n\n  /**\n   * Ignore certain custom elements\n   */\n  ignoredElements: [],\n\n  /**\n   * Custom user key aliases for v-on\n   */\n  // $flow-disable-line\n  keyCodes: Object.create(null),\n\n  /**\n   * Check if a tag is reserved so that it cannot be registered as a\n   * component. This is platform-dependent and may be overwritten.\n   */\n  isReservedTag: no,\n\n  /**\n   * Check if an attribute is reserved so that it cannot be used as a component\n   * prop. This is platform-dependent and may be overwritten.\n   */\n  isReservedAttr: no,\n\n  /**\n   * Check if a tag is an unknown element.\n   * Platform-dependent.\n   */\n  isUnknownElement: no,\n\n  /**\n   * Get the namespace of an element\n   */\n  getTagNamespace: noop,\n\n  /**\n   * Parse the real tag name for the specific platform.\n   */\n  parsePlatformTagName: identity,\n\n  /**\n   * Check if an attribute must be bound using property, e.g. value\n   * Platform-dependent.\n   */\n  mustUseProp: no,\n\n  /**\n   * Perform updates asynchronously. Intended to be used by Vue Test Utils\n   * This will significantly reduce performance if set to false.\n   */\n  async: true,\n\n  /**\n   * Exposed for legacy reasons\n   */\n  _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/*  */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n  var c = (str + '').charCodeAt(0);\n  return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n  Object.defineProperty(obj, key, {\n    value: val,\n    enumerable: !!enumerable,\n    writable: true,\n    configurable: true\n  });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n  if (bailRE.test(path)) {\n    return\n  }\n  var segments = path.split('.');\n  return function (obj) {\n    for (var i = 0; i < segments.length; i++) {\n      if (!obj) { return }\n      obj = obj[segments[i]];\n    }\n    return obj\n  }\n}\n\n/*  */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n  try {\n    var opts = {};\n    Object.defineProperty(opts, 'passive', ({\n      get: function get () {\n        /* istanbul ignore next */\n        supportsPassive = true;\n      }\n    })); // https://github.com/facebook/flow/issues/285\n    window.addEventListener('test-passive', null, opts);\n  } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n  if (_isServer === undefined) {\n    /* istanbul ignore if */\n    if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n      // detect presence of vue-server-renderer and avoid\n      // Webpack shimming the process\n      _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n    } else {\n      _isServer = false;\n    }\n  }\n  return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n  return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n  typeof Symbol !== 'undefined' && isNative(Symbol) &&\n  typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n  // use native Set when available.\n  _Set = Set;\n} else {\n  // a non-standard Set polyfill that only works with primitive keys.\n  _Set = /*@__PURE__*/(function () {\n    function Set () {\n      this.set = Object.create(null);\n    }\n    Set.prototype.has = function has (key) {\n      return this.set[key] === true\n    };\n    Set.prototype.add = function add (key) {\n      this.set[key] = true;\n    };\n    Set.prototype.clear = function clear () {\n      this.set = Object.create(null);\n    };\n\n    return Set;\n  }());\n}\n\n/*  */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (true) {\n  var hasConsole = typeof console !== 'undefined';\n  var classifyRE = /(?:^|[-_])(\\w)/g;\n  var classify = function (str) { return str\n    .replace(classifyRE, function (c) { return c.toUpperCase(); })\n    .replace(/[-_]/g, ''); };\n\n  warn = function (msg, vm) {\n    var trace = vm ? generateComponentTrace(vm) : '';\n\n    if (config.warnHandler) {\n      config.warnHandler.call(null, msg, vm, trace);\n    } else if (hasConsole && (!config.silent)) {\n      console.error((\"[Vue warn]: \" + msg + trace));\n    }\n  };\n\n  tip = function (msg, vm) {\n    if (hasConsole && (!config.silent)) {\n      console.warn(\"[Vue tip]: \" + msg + (\n        vm ? generateComponentTrace(vm) : ''\n      ));\n    }\n  };\n\n  formatComponentName = function (vm, includeFile) {\n    if (vm.$root === vm) {\n      return '<Root>'\n    }\n    var options = typeof vm === 'function' && vm.cid != null\n      ? vm.options\n      : vm._isVue\n        ? vm.$options || vm.constructor.options\n        : vm;\n    var name = options.name || options._componentTag;\n    var file = options.__file;\n    if (!name && file) {\n      var match = file.match(/([^/\\\\]+)\\.vue$/);\n      name = match && match[1];\n    }\n\n    return (\n      (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n      (file && includeFile !== false ? (\" at \" + file) : '')\n    )\n  };\n\n  var repeat = function (str, n) {\n    var res = '';\n    while (n) {\n      if (n % 2 === 1) { res += str; }\n      if (n > 1) { str += str; }\n      n >>= 1;\n    }\n    return res\n  };\n\n  generateComponentTrace = function (vm) {\n    if (vm._isVue && vm.$parent) {\n      var tree = [];\n      var currentRecursiveSequence = 0;\n      while (vm) {\n        if (tree.length > 0) {\n          var last = tree[tree.length - 1];\n          if (last.constructor === vm.constructor) {\n            currentRecursiveSequence++;\n            vm = vm.$parent;\n            continue\n          } else if (currentRecursiveSequence > 0) {\n            tree[tree.length - 1] = [last, currentRecursiveSequence];\n            currentRecursiveSequence = 0;\n          }\n        }\n        tree.push(vm);\n        vm = vm.$parent;\n      }\n      return '\\n\\nfound in\\n\\n' + tree\n        .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n            ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n            : formatComponentName(vm))); })\n        .join('\\n')\n    } else {\n      return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n    }\n  };\n}\n\n/*  */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n  this.id = uid++;\n  this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n  this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n  remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n  if (Dep.target) {\n    Dep.target.addDep(this);\n  }\n};\n\nDep.prototype.notify = function notify () {\n  // stabilize the subscriber list first\n  var subs = this.subs.slice();\n  if ( true && !config.async) {\n    // subs aren't sorted in scheduler if not running async\n    // we need to sort them now to make sure they fire in correct\n    // order\n    subs.sort(function (a, b) { return a.id - b.id; });\n  }\n  for (var i = 0, l = subs.length; i < l; i++) {\n    subs[i].update();\n  }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n  targetStack.push(target);\n  Dep.target = target;\n}\n\nfunction popTarget () {\n  targetStack.pop();\n  Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*  */\n\nvar VNode = function VNode (\n  tag,\n  data,\n  children,\n  text,\n  elm,\n  context,\n  componentOptions,\n  asyncFactory\n) {\n  this.tag = tag;\n  this.data = data;\n  this.children = children;\n  this.text = text;\n  this.elm = elm;\n  this.ns = undefined;\n  this.context = context;\n  this.fnContext = undefined;\n  this.fnOptions = undefined;\n  this.fnScopeId = undefined;\n  this.key = data && data.key;\n  this.componentOptions = componentOptions;\n  this.componentInstance = undefined;\n  this.parent = undefined;\n  this.raw = false;\n  this.isStatic = false;\n  this.isRootInsert = true;\n  this.isComment = false;\n  this.isCloned = false;\n  this.isOnce = false;\n  this.asyncFactory = asyncFactory;\n  this.asyncMeta = undefined;\n  this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n  return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n  if ( text === void 0 ) text = '';\n\n  var node = new VNode();\n  node.text = text;\n  node.isComment = true;\n  return node\n};\n\nfunction createTextVNode (val) {\n  return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n  var cloned = new VNode(\n    vnode.tag,\n    vnode.data,\n    // #7975\n    // clone children array to avoid mutating original in case of cloning\n    // a child.\n    vnode.children && vnode.children.slice(),\n    vnode.text,\n    vnode.elm,\n    vnode.context,\n    vnode.componentOptions,\n    vnode.asyncFactory\n  );\n  cloned.ns = vnode.ns;\n  cloned.isStatic = vnode.isStatic;\n  cloned.key = vnode.key;\n  cloned.isComment = vnode.isComment;\n  cloned.fnContext = vnode.fnContext;\n  cloned.fnOptions = vnode.fnOptions;\n  cloned.fnScopeId = vnode.fnScopeId;\n  cloned.asyncMeta = vnode.asyncMeta;\n  cloned.isCloned = true;\n  return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n  'push',\n  'pop',\n  'shift',\n  'unshift',\n  'splice',\n  'sort',\n  'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n  // cache original method\n  var original = arrayProto[method];\n  def(arrayMethods, method, function mutator () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var result = original.apply(this, args);\n    var ob = this.__ob__;\n    var inserted;\n    switch (method) {\n      case 'push':\n      case 'unshift':\n        inserted = args;\n        break\n      case 'splice':\n        inserted = args.slice(2);\n        break\n    }\n    if (inserted) { ob.observeArray(inserted); }\n    // notify change\n    ob.dep.notify();\n    return result\n  });\n});\n\n/*  */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n  shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n  this.value = value;\n  this.dep = new Dep();\n  this.vmCount = 0;\n  def(value, '__ob__', this);\n  if (Array.isArray(value)) {\n    if (hasProto) {\n      protoAugment(value, arrayMethods);\n    } else {\n      copyAugment(value, arrayMethods, arrayKeys);\n    }\n    this.observeArray(value);\n  } else {\n    this.walk(value);\n  }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n  var keys = Object.keys(obj);\n  for (var i = 0; i < keys.length; i++) {\n    defineReactive$$1(obj, keys[i]);\n  }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n  for (var i = 0, l = items.length; i < l; i++) {\n    observe(items[i]);\n  }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n  /* eslint-disable no-proto */\n  target.__proto__ = src;\n  /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n  for (var i = 0, l = keys.length; i < l; i++) {\n    var key = keys[i];\n    def(target, key, src[key]);\n  }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n  if (!isObject(value) || value instanceof VNode) {\n    return\n  }\n  var ob;\n  if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n    ob = value.__ob__;\n  } else if (\n    shouldObserve &&\n    !isServerRendering() &&\n    (Array.isArray(value) || isPlainObject(value)) &&\n    Object.isExtensible(value) &&\n    !value._isVue\n  ) {\n    ob = new Observer(value);\n  }\n  if (asRootData && ob) {\n    ob.vmCount++;\n  }\n  return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n  obj,\n  key,\n  val,\n  customSetter,\n  shallow\n) {\n  var dep = new Dep();\n\n  var property = Object.getOwnPropertyDescriptor(obj, key);\n  if (property && property.configurable === false) {\n    return\n  }\n\n  // cater for pre-defined getter/setters\n  var getter = property && property.get;\n  var setter = property && property.set;\n  if ((!getter || setter) && arguments.length === 2) {\n    val = obj[key];\n  }\n\n  var childOb = !shallow && observe(val);\n  Object.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    get: function reactiveGetter () {\n      var value = getter ? getter.call(obj) : val;\n      if (Dep.target) {\n        dep.depend();\n        if (childOb) {\n          childOb.dep.depend();\n          if (Array.isArray(value)) {\n            dependArray(value);\n          }\n        }\n      }\n      return value\n    },\n    set: function reactiveSetter (newVal) {\n      var value = getter ? getter.call(obj) : val;\n      /* eslint-disable no-self-compare */\n      if (newVal === value || (newVal !== newVal && value !== value)) {\n        return\n      }\n      /* eslint-enable no-self-compare */\n      if ( true && customSetter) {\n        customSetter();\n      }\n      // #7981: for accessor properties without setter\n      if (getter && !setter) { return }\n      if (setter) {\n        setter.call(obj, newVal);\n      } else {\n        val = newVal;\n      }\n      childOb = !shallow && observe(newVal);\n      dep.notify();\n    }\n  });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n  if ( true &&\n    (isUndef(target) || isPrimitive(target))\n  ) {\n    warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n  }\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.length = Math.max(target.length, key);\n    target.splice(key, 1, val);\n    return val\n  }\n  if (key in target && !(key in Object.prototype)) {\n    target[key] = val;\n    return val\n  }\n  var ob = (target).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n     true && warn(\n      'Avoid adding reactive properties to a Vue instance or its root $data ' +\n      'at runtime - declare it upfront in the data option.'\n    );\n    return val\n  }\n  if (!ob) {\n    target[key] = val;\n    return val\n  }\n  defineReactive$$1(ob.value, key, val);\n  ob.dep.notify();\n  return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n  if ( true &&\n    (isUndef(target) || isPrimitive(target))\n  ) {\n    warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n  }\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.splice(key, 1);\n    return\n  }\n  var ob = (target).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n     true && warn(\n      'Avoid deleting properties on a Vue instance or its root $data ' +\n      '- just set it to null.'\n    );\n    return\n  }\n  if (!hasOwn(target, key)) {\n    return\n  }\n  delete target[key];\n  if (!ob) {\n    return\n  }\n  ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n  for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n    e = value[i];\n    e && e.__ob__ && e.__ob__.dep.depend();\n    if (Array.isArray(e)) {\n      dependArray(e);\n    }\n  }\n}\n\n/*  */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (true) {\n  strats.el = strats.propsData = function (parent, child, vm, key) {\n    if (!vm) {\n      warn(\n        \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n        'creation with the `new` keyword.'\n      );\n    }\n    return defaultStrat(parent, child)\n  };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n  if (!from) { return to }\n  var key, toVal, fromVal;\n\n  var keys = hasSymbol\n    ? Reflect.ownKeys(from)\n    : Object.keys(from);\n\n  for (var i = 0; i < keys.length; i++) {\n    key = keys[i];\n    // in case the object is already observed...\n    if (key === '__ob__') { continue }\n    toVal = to[key];\n    fromVal = from[key];\n    if (!hasOwn(to, key)) {\n      set(to, key, fromVal);\n    } else if (\n      toVal !== fromVal &&\n      isPlainObject(toVal) &&\n      isPlainObject(fromVal)\n    ) {\n      mergeData(toVal, fromVal);\n    }\n  }\n  return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n  parentVal,\n  childVal,\n  vm\n) {\n  if (!vm) {\n    // in a Vue.extend merge, both should be functions\n    if (!childVal) {\n      return parentVal\n    }\n    if (!parentVal) {\n      return childVal\n    }\n    // when parentVal & childVal are both present,\n    // we need to return a function that returns the\n    // merged result of both functions... no need to\n    // check if parentVal is a function here because\n    // it has to be a function to pass previous merges.\n    return function mergedDataFn () {\n      return mergeData(\n        typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n        typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n      )\n    }\n  } else {\n    return function mergedInstanceDataFn () {\n      // instance merge\n      var instanceData = typeof childVal === 'function'\n        ? childVal.call(vm, vm)\n        : childVal;\n      var defaultData = typeof parentVal === 'function'\n        ? parentVal.call(vm, vm)\n        : parentVal;\n      if (instanceData) {\n        return mergeData(instanceData, defaultData)\n      } else {\n        return defaultData\n      }\n    }\n  }\n}\n\nstrats.data = function (\n  parentVal,\n  childVal,\n  vm\n) {\n  if (!vm) {\n    if (childVal && typeof childVal !== 'function') {\n       true && warn(\n        'The \"data\" option should be a function ' +\n        'that returns a per-instance value in component ' +\n        'definitions.',\n        vm\n      );\n\n      return parentVal\n    }\n    return mergeDataOrFn(parentVal, childVal)\n  }\n\n  return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n  parentVal,\n  childVal\n) {\n  var res = childVal\n    ? parentVal\n      ? parentVal.concat(childVal)\n      : Array.isArray(childVal)\n        ? childVal\n        : [childVal]\n    : parentVal;\n  return res\n    ? dedupeHooks(res)\n    : res\n}\n\nfunction dedupeHooks (hooks) {\n  var res = [];\n  for (var i = 0; i < hooks.length; i++) {\n    if (res.indexOf(hooks[i]) === -1) {\n      res.push(hooks[i]);\n    }\n  }\n  return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n  strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  var res = Object.create(parentVal || null);\n  if (childVal) {\n     true && assertObjectType(key, childVal, vm);\n    return extend(res, childVal)\n  } else {\n    return res\n  }\n}\n\nASSET_TYPES.forEach(function (type) {\n  strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  // work around Firefox's Object.prototype.watch...\n  if (parentVal === nativeWatch) { parentVal = undefined; }\n  if (childVal === nativeWatch) { childVal = undefined; }\n  /* istanbul ignore if */\n  if (!childVal) { return Object.create(parentVal || null) }\n  if (true) {\n    assertObjectType(key, childVal, vm);\n  }\n  if (!parentVal) { return childVal }\n  var ret = {};\n  extend(ret, parentVal);\n  for (var key$1 in childVal) {\n    var parent = ret[key$1];\n    var child = childVal[key$1];\n    if (parent && !Array.isArray(parent)) {\n      parent = [parent];\n    }\n    ret[key$1] = parent\n      ? parent.concat(child)\n      : Array.isArray(child) ? child : [child];\n  }\n  return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  if (childVal && \"staging\" !== 'production') {\n    assertObjectType(key, childVal, vm);\n  }\n  if (!parentVal) { return childVal }\n  var ret = Object.create(null);\n  extend(ret, parentVal);\n  if (childVal) { extend(ret, childVal); }\n  return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n  return childVal === undefined\n    ? parentVal\n    : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n  for (var key in options.components) {\n    validateComponentName(key);\n  }\n}\n\nfunction validateComponentName (name) {\n  if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n    warn(\n      'Invalid component name: \"' + name + '\". Component names ' +\n      'should conform to valid custom element name in html5 specification.'\n    );\n  }\n  if (isBuiltInTag(name) || config.isReservedTag(name)) {\n    warn(\n      'Do not use built-in or reserved HTML elements as component ' +\n      'id: ' + name\n    );\n  }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n  var props = options.props;\n  if (!props) { return }\n  var res = {};\n  var i, val, name;\n  if (Array.isArray(props)) {\n    i = props.length;\n    while (i--) {\n      val = props[i];\n      if (typeof val === 'string') {\n        name = camelize(val);\n        res[name] = { type: null };\n      } else if (true) {\n        warn('props must be strings when using array syntax.');\n      }\n    }\n  } else if (isPlainObject(props)) {\n    for (var key in props) {\n      val = props[key];\n      name = camelize(key);\n      res[name] = isPlainObject(val)\n        ? val\n        : { type: val };\n    }\n  } else if (true) {\n    warn(\n      \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n      \"but got \" + (toRawType(props)) + \".\",\n      vm\n    );\n  }\n  options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n  var inject = options.inject;\n  if (!inject) { return }\n  var normalized = options.inject = {};\n  if (Array.isArray(inject)) {\n    for (var i = 0; i < inject.length; i++) {\n      normalized[inject[i]] = { from: inject[i] };\n    }\n  } else if (isPlainObject(inject)) {\n    for (var key in inject) {\n      var val = inject[key];\n      normalized[key] = isPlainObject(val)\n        ? extend({ from: key }, val)\n        : { from: val };\n    }\n  } else if (true) {\n    warn(\n      \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n      \"but got \" + (toRawType(inject)) + \".\",\n      vm\n    );\n  }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n  var dirs = options.directives;\n  if (dirs) {\n    for (var key in dirs) {\n      var def$$1 = dirs[key];\n      if (typeof def$$1 === 'function') {\n        dirs[key] = { bind: def$$1, update: def$$1 };\n      }\n    }\n  }\n}\n\nfunction assertObjectType (name, value, vm) {\n  if (!isPlainObject(value)) {\n    warn(\n      \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n      \"but got \" + (toRawType(value)) + \".\",\n      vm\n    );\n  }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n  parent,\n  child,\n  vm\n) {\n  if (true) {\n    checkComponents(child);\n  }\n\n  if (typeof child === 'function') {\n    child = child.options;\n  }\n\n  normalizeProps(child, vm);\n  normalizeInject(child, vm);\n  normalizeDirectives(child);\n\n  // Apply extends and mixins on the child options,\n  // but only if it is a raw options object that isn't\n  // the result of another mergeOptions call.\n  // Only merged options has the _base property.\n  if (!child._base) {\n    if (child.extends) {\n      parent = mergeOptions(parent, child.extends, vm);\n    }\n    if (child.mixins) {\n      for (var i = 0, l = child.mixins.length; i < l; i++) {\n        parent = mergeOptions(parent, child.mixins[i], vm);\n      }\n    }\n  }\n\n  var options = {};\n  var key;\n  for (key in parent) {\n    mergeField(key);\n  }\n  for (key in child) {\n    if (!hasOwn(parent, key)) {\n      mergeField(key);\n    }\n  }\n  function mergeField (key) {\n    var strat = strats[key] || defaultStrat;\n    options[key] = strat(parent[key], child[key], vm, key);\n  }\n  return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n  options,\n  type,\n  id,\n  warnMissing\n) {\n  /* istanbul ignore if */\n  if (typeof id !== 'string') {\n    return\n  }\n  var assets = options[type];\n  // check local registration variations first\n  if (hasOwn(assets, id)) { return assets[id] }\n  var camelizedId = camelize(id);\n  if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n  var PascalCaseId = capitalize(camelizedId);\n  if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n  // fallback to prototype chain\n  var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n  if ( true && warnMissing && !res) {\n    warn(\n      'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n      options\n    );\n  }\n  return res\n}\n\n/*  */\n\n\n\nfunction validateProp (\n  key,\n  propOptions,\n  propsData,\n  vm\n) {\n  var prop = propOptions[key];\n  var absent = !hasOwn(propsData, key);\n  var value = propsData[key];\n  // boolean casting\n  var booleanIndex = getTypeIndex(Boolean, prop.type);\n  if (booleanIndex > -1) {\n    if (absent && !hasOwn(prop, 'default')) {\n      value = false;\n    } else if (value === '' || value === hyphenate(key)) {\n      // only cast empty string / same name to boolean if\n      // boolean has higher priority\n      var stringIndex = getTypeIndex(String, prop.type);\n      if (stringIndex < 0 || booleanIndex < stringIndex) {\n        value = true;\n      }\n    }\n  }\n  // check default value\n  if (value === undefined) {\n    value = getPropDefaultValue(vm, prop, key);\n    // since the default value is a fresh copy,\n    // make sure to observe it.\n    var prevShouldObserve = shouldObserve;\n    toggleObserving(true);\n    observe(value);\n    toggleObserving(prevShouldObserve);\n  }\n  if (\n    true\n  ) {\n    assertProp(prop, key, value, vm, absent);\n  }\n  return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n  // no default, return undefined\n  if (!hasOwn(prop, 'default')) {\n    return undefined\n  }\n  var def = prop.default;\n  // warn against non-factory defaults for Object & Array\n  if ( true && isObject(def)) {\n    warn(\n      'Invalid default value for prop \"' + key + '\": ' +\n      'Props with type Object/Array must use a factory function ' +\n      'to return the default value.',\n      vm\n    );\n  }\n  // the raw prop value was also undefined from previous render,\n  // return previous default value to avoid unnecessary watcher trigger\n  if (vm && vm.$options.propsData &&\n    vm.$options.propsData[key] === undefined &&\n    vm._props[key] !== undefined\n  ) {\n    return vm._props[key]\n  }\n  // call factory function for non-Function types\n  // a value is Function if its prototype is function even across different execution context\n  return typeof def === 'function' && getType(prop.type) !== 'Function'\n    ? def.call(vm)\n    : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n  prop,\n  name,\n  value,\n  vm,\n  absent\n) {\n  if (prop.required && absent) {\n    warn(\n      'Missing required prop: \"' + name + '\"',\n      vm\n    );\n    return\n  }\n  if (value == null && !prop.required) {\n    return\n  }\n  var type = prop.type;\n  var valid = !type || type === true;\n  var expectedTypes = [];\n  if (type) {\n    if (!Array.isArray(type)) {\n      type = [type];\n    }\n    for (var i = 0; i < type.length && !valid; i++) {\n      var assertedType = assertType(value, type[i]);\n      expectedTypes.push(assertedType.expectedType || '');\n      valid = assertedType.valid;\n    }\n  }\n\n  if (!valid) {\n    warn(\n      getInvalidTypeMessage(name, value, expectedTypes),\n      vm\n    );\n    return\n  }\n  var validator = prop.validator;\n  if (validator) {\n    if (!validator(value)) {\n      warn(\n        'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n        vm\n      );\n    }\n  }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n  var valid;\n  var expectedType = getType(type);\n  if (simpleCheckRE.test(expectedType)) {\n    var t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    // for primitive wrapper objects\n    if (!valid && t === 'object') {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === 'Object') {\n    valid = isPlainObject(value);\n  } else if (expectedType === 'Array') {\n    valid = Array.isArray(value);\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid: valid,\n    expectedType: expectedType\n  }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n  var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n  return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n  return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n  if (!Array.isArray(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1\n  }\n  for (var i = 0, len = expectedTypes.length; i < len; i++) {\n    if (isSameType(expectedTypes[i], type)) {\n      return i\n    }\n  }\n  return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n  var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n    \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n  var expectedType = expectedTypes[0];\n  var receivedType = toRawType(value);\n  var expectedValue = styleValue(value, expectedType);\n  var receivedValue = styleValue(value, receivedType);\n  // check if we need to specify expected value\n  if (expectedTypes.length === 1 &&\n      isExplicable(expectedType) &&\n      !isBoolean(expectedType, receivedType)) {\n    message += \" with value \" + expectedValue;\n  }\n  message += \", got \" + receivedType + \" \";\n  // check if we need to specify received value\n  if (isExplicable(receivedType)) {\n    message += \"with value \" + receivedValue + \".\";\n  }\n  return message\n}\n\nfunction styleValue (value, type) {\n  if (type === 'String') {\n    return (\"\\\"\" + value + \"\\\"\")\n  } else if (type === 'Number') {\n    return (\"\" + (Number(value)))\n  } else {\n    return (\"\" + value)\n  }\n}\n\nfunction isExplicable (value) {\n  var explicitTypes = ['string', 'number', 'boolean'];\n  return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/*  */\n\nfunction handleError (err, vm, info) {\n  // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n  // See: https://github.com/vuejs/vuex/issues/1505\n  pushTarget();\n  try {\n    if (vm) {\n      var cur = vm;\n      while ((cur = cur.$parent)) {\n        var hooks = cur.$options.errorCaptured;\n        if (hooks) {\n          for (var i = 0; i < hooks.length; i++) {\n            try {\n              var capture = hooks[i].call(cur, err, vm, info) === false;\n              if (capture) { return }\n            } catch (e) {\n              globalHandleError(e, cur, 'errorCaptured hook');\n            }\n          }\n        }\n      }\n    }\n    globalHandleError(err, vm, info);\n  } finally {\n    popTarget();\n  }\n}\n\nfunction invokeWithErrorHandling (\n  handler,\n  context,\n  args,\n  vm,\n  info\n) {\n  var res;\n  try {\n    res = args ? handler.apply(context, args) : handler.call(context);\n    if (res && !res._isVue && isPromise(res) && !res._handled) {\n      res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n      // issue #9511\n      // avoid catch triggering multiple times when nested calls\n      res._handled = true;\n    }\n  } catch (e) {\n    handleError(e, vm, info);\n  }\n  return res\n}\n\nfunction globalHandleError (err, vm, info) {\n  if (config.errorHandler) {\n    try {\n      return config.errorHandler.call(null, err, vm, info)\n    } catch (e) {\n      // if the user intentionally throws the original error in the handler,\n      // do not log it twice\n      if (e !== err) {\n        logError(e, null, 'config.errorHandler');\n      }\n    }\n  }\n  logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n  if (true) {\n    warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n  }\n  /* istanbul ignore else */\n  if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n    console.error(err);\n  } else {\n    throw err\n  }\n}\n\n/*  */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n  pending = false;\n  var copies = callbacks.slice(0);\n  callbacks.length = 0;\n  for (var i = 0; i < copies.length; i++) {\n    copies[i]();\n  }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n  var p = Promise.resolve();\n  timerFunc = function () {\n    p.then(flushCallbacks);\n    // In problematic UIWebViews, Promise.then doesn't completely break, but\n    // it can get stuck in a weird state where callbacks are pushed into the\n    // microtask queue but the queue isn't being flushed, until the browser\n    // needs to do some other work, e.g. handle a timer. Therefore we can\n    // \"force\" the microtask queue to be flushed by adding an empty timer.\n    if (isIOS) { setTimeout(noop); }\n  };\n  isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n  isNative(MutationObserver) ||\n  // PhantomJS and iOS 7.x\n  MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n  // Use MutationObserver where native Promise is not available,\n  // e.g. PhantomJS, iOS7, Android 4.4\n  // (#6466 MutationObserver is unreliable in IE11)\n  var counter = 1;\n  var observer = new MutationObserver(flushCallbacks);\n  var textNode = document.createTextNode(String(counter));\n  observer.observe(textNode, {\n    characterData: true\n  });\n  timerFunc = function () {\n    counter = (counter + 1) % 2;\n    textNode.data = String(counter);\n  };\n  isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n  // Fallback to setImmediate.\n  // Techinically it leverages the (macro) task queue,\n  // but it is still a better choice than setTimeout.\n  timerFunc = function () {\n    setImmediate(flushCallbacks);\n  };\n} else {\n  // Fallback to setTimeout.\n  timerFunc = function () {\n    setTimeout(flushCallbacks, 0);\n  };\n}\n\nfunction nextTick (cb, ctx) {\n  var _resolve;\n  callbacks.push(function () {\n    if (cb) {\n      try {\n        cb.call(ctx);\n      } catch (e) {\n        handleError(e, ctx, 'nextTick');\n      }\n    } else if (_resolve) {\n      _resolve(ctx);\n    }\n  });\n  if (!pending) {\n    pending = true;\n    timerFunc();\n  }\n  // $flow-disable-line\n  if (!cb && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve) {\n      _resolve = resolve;\n    })\n  }\n}\n\n/*  */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (true) {\n  var allowedGlobals = makeMap(\n    'Infinity,undefined,NaN,isFinite,isNaN,' +\n    'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n    'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n    'require' // for Webpack/Browserify\n  );\n\n  var warnNonPresent = function (target, key) {\n    warn(\n      \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n      'referenced during render. Make sure that this property is reactive, ' +\n      'either in the data option, or for class-based components, by ' +\n      'initializing the property. ' +\n      'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n      target\n    );\n  };\n\n  var warnReservedPrefix = function (target, key) {\n    warn(\n      \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n      'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n      'prevent conflicts with Vue internals' +\n      'See: https://vuejs.org/v2/api/#data',\n      target\n    );\n  };\n\n  var hasProxy =\n    typeof Proxy !== 'undefined' && isNative(Proxy);\n\n  if (hasProxy) {\n    var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n    config.keyCodes = new Proxy(config.keyCodes, {\n      set: function set (target, key, value) {\n        if (isBuiltInModifier(key)) {\n          warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n          return false\n        } else {\n          target[key] = value;\n          return true\n        }\n      }\n    });\n  }\n\n  var hasHandler = {\n    has: function has (target, key) {\n      var has = key in target;\n      var isAllowed = allowedGlobals(key) ||\n        (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n      if (!has && !isAllowed) {\n        if (key in target.$data) { warnReservedPrefix(target, key); }\n        else { warnNonPresent(target, key); }\n      }\n      return has || !isAllowed\n    }\n  };\n\n  var getHandler = {\n    get: function get (target, key) {\n      if (typeof key === 'string' && !(key in target)) {\n        if (key in target.$data) { warnReservedPrefix(target, key); }\n        else { warnNonPresent(target, key); }\n      }\n      return target[key]\n    }\n  };\n\n  initProxy = function initProxy (vm) {\n    if (hasProxy) {\n      // determine which proxy handler to use\n      var options = vm.$options;\n      var handlers = options.render && options.render._withStripped\n        ? getHandler\n        : hasHandler;\n      vm._renderProxy = new Proxy(vm, handlers);\n    } else {\n      vm._renderProxy = vm;\n    }\n  };\n}\n\n/*  */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n  _traverse(val, seenObjects);\n  seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n  var i, keys;\n  var isA = Array.isArray(val);\n  if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n    return\n  }\n  if (val.__ob__) {\n    var depId = val.__ob__.dep.id;\n    if (seen.has(depId)) {\n      return\n    }\n    seen.add(depId);\n  }\n  if (isA) {\n    i = val.length;\n    while (i--) { _traverse(val[i], seen); }\n  } else {\n    keys = Object.keys(val);\n    i = keys.length;\n    while (i--) { _traverse(val[keys[i]], seen); }\n  }\n}\n\nvar mark;\nvar measure;\n\nif (true) {\n  var perf = inBrowser && window.performance;\n  /* istanbul ignore if */\n  if (\n    perf &&\n    perf.mark &&\n    perf.measure &&\n    perf.clearMarks &&\n    perf.clearMeasures\n  ) {\n    mark = function (tag) { return perf.mark(tag); };\n    measure = function (name, startTag, endTag) {\n      perf.measure(name, startTag, endTag);\n      perf.clearMarks(startTag);\n      perf.clearMarks(endTag);\n      // perf.clearMeasures(name)\n    };\n  }\n}\n\n/*  */\n\nvar normalizeEvent = cached(function (name) {\n  var passive = name.charAt(0) === '&';\n  name = passive ? name.slice(1) : name;\n  var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n  name = once$$1 ? name.slice(1) : name;\n  var capture = name.charAt(0) === '!';\n  name = capture ? name.slice(1) : name;\n  return {\n    name: name,\n    once: once$$1,\n    capture: capture,\n    passive: passive\n  }\n});\n\nfunction createFnInvoker (fns, vm) {\n  function invoker () {\n    var arguments$1 = arguments;\n\n    var fns = invoker.fns;\n    if (Array.isArray(fns)) {\n      var cloned = fns.slice();\n      for (var i = 0; i < cloned.length; i++) {\n        invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n      }\n    } else {\n      // return handler return value for single handlers\n      return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n    }\n  }\n  invoker.fns = fns;\n  return invoker\n}\n\nfunction updateListeners (\n  on,\n  oldOn,\n  add,\n  remove$$1,\n  createOnceHandler,\n  vm\n) {\n  var name, def$$1, cur, old, event;\n  for (name in on) {\n    def$$1 = cur = on[name];\n    old = oldOn[name];\n    event = normalizeEvent(name);\n    if (isUndef(cur)) {\n       true && warn(\n        \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n        vm\n      );\n    } else if (isUndef(old)) {\n      if (isUndef(cur.fns)) {\n        cur = on[name] = createFnInvoker(cur, vm);\n      }\n      if (isTrue(event.once)) {\n        cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n      }\n      add(event.name, cur, event.capture, event.passive, event.params);\n    } else if (cur !== old) {\n      old.fns = cur;\n      on[name] = old;\n    }\n  }\n  for (name in oldOn) {\n    if (isUndef(on[name])) {\n      event = normalizeEvent(name);\n      remove$$1(event.name, oldOn[name], event.capture);\n    }\n  }\n}\n\n/*  */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n  if (def instanceof VNode) {\n    def = def.data.hook || (def.data.hook = {});\n  }\n  var invoker;\n  var oldHook = def[hookKey];\n\n  function wrappedHook () {\n    hook.apply(this, arguments);\n    // important: remove merged hook to ensure it's called only once\n    // and prevent memory leak\n    remove(invoker.fns, wrappedHook);\n  }\n\n  if (isUndef(oldHook)) {\n    // no existing hook\n    invoker = createFnInvoker([wrappedHook]);\n  } else {\n    /* istanbul ignore if */\n    if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n      // already a merged invoker\n      invoker = oldHook;\n      invoker.fns.push(wrappedHook);\n    } else {\n      // existing plain hook\n      invoker = createFnInvoker([oldHook, wrappedHook]);\n    }\n  }\n\n  invoker.merged = true;\n  def[hookKey] = invoker;\n}\n\n/*  */\n\nfunction extractPropsFromVNodeData (\n  data,\n  Ctor,\n  tag\n) {\n  // we are only extracting raw values here.\n  // validation and default values are handled in the child\n  // component itself.\n  var propOptions = Ctor.options.props;\n  if (isUndef(propOptions)) {\n    return\n  }\n  var res = {};\n  var attrs = data.attrs;\n  var props = data.props;\n  if (isDef(attrs) || isDef(props)) {\n    for (var key in propOptions) {\n      var altKey = hyphenate(key);\n      if (true) {\n        var keyInLowerCase = key.toLowerCase();\n        if (\n          key !== keyInLowerCase &&\n          attrs && hasOwn(attrs, keyInLowerCase)\n        ) {\n          tip(\n            \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n            (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n            \" \\\"\" + key + \"\\\". \" +\n            \"Note that HTML attributes are case-insensitive and camelCased \" +\n            \"props need to use their kebab-case equivalents when using in-DOM \" +\n            \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n          );\n        }\n      }\n      checkProp(res, props, key, altKey, true) ||\n      checkProp(res, attrs, key, altKey, false);\n    }\n  }\n  return res\n}\n\nfunction checkProp (\n  res,\n  hash,\n  key,\n  altKey,\n  preserve\n) {\n  if (isDef(hash)) {\n    if (hasOwn(hash, key)) {\n      res[key] = hash[key];\n      if (!preserve) {\n        delete hash[key];\n      }\n      return true\n    } else if (hasOwn(hash, altKey)) {\n      res[key] = hash[altKey];\n      if (!preserve) {\n        delete hash[altKey];\n      }\n      return true\n    }\n  }\n  return false\n}\n\n/*  */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n  for (var i = 0; i < children.length; i++) {\n    if (Array.isArray(children[i])) {\n      return Array.prototype.concat.apply([], children)\n    }\n  }\n  return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n  return isPrimitive(children)\n    ? [createTextVNode(children)]\n    : Array.isArray(children)\n      ? normalizeArrayChildren(children)\n      : undefined\n}\n\nfunction isTextNode (node) {\n  return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n  var res = [];\n  var i, c, lastIndex, last;\n  for (i = 0; i < children.length; i++) {\n    c = children[i];\n    if (isUndef(c) || typeof c === 'boolean') { continue }\n    lastIndex = res.length - 1;\n    last = res[lastIndex];\n    //  nested\n    if (Array.isArray(c)) {\n      if (c.length > 0) {\n        c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n        // merge adjacent text nodes\n        if (isTextNode(c[0]) && isTextNode(last)) {\n          res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n          c.shift();\n        }\n        res.push.apply(res, c);\n      }\n    } else if (isPrimitive(c)) {\n      if (isTextNode(last)) {\n        // merge adjacent text nodes\n        // this is necessary for SSR hydration because text nodes are\n        // essentially merged when rendered to HTML strings\n        res[lastIndex] = createTextVNode(last.text + c);\n      } else if (c !== '') {\n        // convert primitive to vnode\n        res.push(createTextVNode(c));\n      }\n    } else {\n      if (isTextNode(c) && isTextNode(last)) {\n        // merge adjacent text nodes\n        res[lastIndex] = createTextVNode(last.text + c.text);\n      } else {\n        // default key for nested array children (likely generated by v-for)\n        if (isTrue(children._isVList) &&\n          isDef(c.tag) &&\n          isUndef(c.key) &&\n          isDef(nestedIndex)) {\n          c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n        }\n        res.push(c);\n      }\n    }\n  }\n  return res\n}\n\n/*  */\n\nfunction initProvide (vm) {\n  var provide = vm.$options.provide;\n  if (provide) {\n    vm._provided = typeof provide === 'function'\n      ? provide.call(vm)\n      : provide;\n  }\n}\n\nfunction initInjections (vm) {\n  var result = resolveInject(vm.$options.inject, vm);\n  if (result) {\n    toggleObserving(false);\n    Object.keys(result).forEach(function (key) {\n      /* istanbul ignore else */\n      if (true) {\n        defineReactive$$1(vm, key, result[key], function () {\n          warn(\n            \"Avoid mutating an injected value directly since the changes will be \" +\n            \"overwritten whenever the provided component re-renders. \" +\n            \"injection being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        });\n      } else {}\n    });\n    toggleObserving(true);\n  }\n}\n\nfunction resolveInject (inject, vm) {\n  if (inject) {\n    // inject is :any because flow is not smart enough to figure out cached\n    var result = Object.create(null);\n    var keys = hasSymbol\n      ? Reflect.ownKeys(inject)\n      : Object.keys(inject);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      // #6574 in case the inject object is observed...\n      if (key === '__ob__') { continue }\n      var provideKey = inject[key].from;\n      var source = vm;\n      while (source) {\n        if (source._provided && hasOwn(source._provided, provideKey)) {\n          result[key] = source._provided[provideKey];\n          break\n        }\n        source = source.$parent;\n      }\n      if (!source) {\n        if ('default' in inject[key]) {\n          var provideDefault = inject[key].default;\n          result[key] = typeof provideDefault === 'function'\n            ? provideDefault.call(vm)\n            : provideDefault;\n        } else if (true) {\n          warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n        }\n      }\n    }\n    return result\n  }\n}\n\n/*  */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n  children,\n  context\n) {\n  if (!children || !children.length) {\n    return {}\n  }\n  var slots = {};\n  for (var i = 0, l = children.length; i < l; i++) {\n    var child = children[i];\n    var data = child.data;\n    // remove slot attribute if the node is resolved as a Vue slot node\n    if (data && data.attrs && data.attrs.slot) {\n      delete data.attrs.slot;\n    }\n    // named slots should only be respected if the vnode was rendered in the\n    // same context.\n    if ((child.context === context || child.fnContext === context) &&\n      data && data.slot != null\n    ) {\n      var name = data.slot;\n      var slot = (slots[name] || (slots[name] = []));\n      if (child.tag === 'template') {\n        slot.push.apply(slot, child.children || []);\n      } else {\n        slot.push(child);\n      }\n    } else {\n      (slots.default || (slots.default = [])).push(child);\n    }\n  }\n  // ignore slots that contains only whitespace\n  for (var name$1 in slots) {\n    if (slots[name$1].every(isWhitespace)) {\n      delete slots[name$1];\n    }\n  }\n  return slots\n}\n\nfunction isWhitespace (node) {\n  return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/*  */\n\nfunction normalizeScopedSlots (\n  slots,\n  normalSlots,\n  prevSlots\n) {\n  var res;\n  var hasNormalSlots = Object.keys(normalSlots).length > 0;\n  var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n  var key = slots && slots.$key;\n  if (!slots) {\n    res = {};\n  } else if (slots._normalized) {\n    // fast path 1: child component re-render only, parent did not change\n    return slots._normalized\n  } else if (\n    isStable &&\n    prevSlots &&\n    prevSlots !== emptyObject &&\n    key === prevSlots.$key &&\n    !hasNormalSlots &&\n    !prevSlots.$hasNormal\n  ) {\n    // fast path 2: stable scoped slots w/ no normal slots to proxy,\n    // only need to normalize once\n    return prevSlots\n  } else {\n    res = {};\n    for (var key$1 in slots) {\n      if (slots[key$1] && key$1[0] !== '$') {\n        res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n      }\n    }\n  }\n  // expose normal slots on scopedSlots\n  for (var key$2 in normalSlots) {\n    if (!(key$2 in res)) {\n      res[key$2] = proxyNormalSlot(normalSlots, key$2);\n    }\n  }\n  // avoriaz seems to mock a non-extensible $scopedSlots object\n  // and when that is passed down this would cause an error\n  if (slots && Object.isExtensible(slots)) {\n    (slots)._normalized = res;\n  }\n  def(res, '$stable', isStable);\n  def(res, '$key', key);\n  def(res, '$hasNormal', hasNormalSlots);\n  return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n  var normalized = function () {\n    var res = arguments.length ? fn.apply(null, arguments) : fn({});\n    res = res && typeof res === 'object' && !Array.isArray(res)\n      ? [res] // single vnode\n      : normalizeChildren(res);\n    return res && (\n      res.length === 0 ||\n      (res.length === 1 && res[0].isComment) // #9658\n    ) ? undefined\n      : res\n  };\n  // this is a slot using the new v-slot syntax without scope. although it is\n  // compiled as a scoped slot, render fn users would expect it to be present\n  // on this.$slots because the usage is semantically a normal slot.\n  if (fn.proxy) {\n    Object.defineProperty(normalSlots, key, {\n      get: normalized,\n      enumerable: true,\n      configurable: true\n    });\n  }\n  return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n  return function () { return slots[key]; }\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n  val,\n  render\n) {\n  var ret, i, l, keys, key;\n  if (Array.isArray(val) || typeof val === 'string') {\n    ret = new Array(val.length);\n    for (i = 0, l = val.length; i < l; i++) {\n      ret[i] = render(val[i], i);\n    }\n  } else if (typeof val === 'number') {\n    ret = new Array(val);\n    for (i = 0; i < val; i++) {\n      ret[i] = render(i + 1, i);\n    }\n  } else if (isObject(val)) {\n    if (hasSymbol && val[Symbol.iterator]) {\n      ret = [];\n      var iterator = val[Symbol.iterator]();\n      var result = iterator.next();\n      while (!result.done) {\n        ret.push(render(result.value, ret.length));\n        result = iterator.next();\n      }\n    } else {\n      keys = Object.keys(val);\n      ret = new Array(keys.length);\n      for (i = 0, l = keys.length; i < l; i++) {\n        key = keys[i];\n        ret[i] = render(val[key], key, i);\n      }\n    }\n  }\n  if (!isDef(ret)) {\n    ret = [];\n  }\n  (ret)._isVList = true;\n  return ret\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n  name,\n  fallback,\n  props,\n  bindObject\n) {\n  var scopedSlotFn = this.$scopedSlots[name];\n  var nodes;\n  if (scopedSlotFn) { // scoped slot\n    props = props || {};\n    if (bindObject) {\n      if ( true && !isObject(bindObject)) {\n        warn(\n          'slot v-bind without argument expects an Object',\n          this\n        );\n      }\n      props = extend(extend({}, bindObject), props);\n    }\n    nodes = scopedSlotFn(props) || fallback;\n  } else {\n    nodes = this.$slots[name] || fallback;\n  }\n\n  var target = props && props.slot;\n  if (target) {\n    return this.$createElement('template', { slot: target }, nodes)\n  } else {\n    return nodes\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n  return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/*  */\n\nfunction isKeyNotMatch (expect, actual) {\n  if (Array.isArray(expect)) {\n    return expect.indexOf(actual) === -1\n  } else {\n    return expect !== actual\n  }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n  eventKeyCode,\n  key,\n  builtInKeyCode,\n  eventKeyName,\n  builtInKeyName\n) {\n  var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n  if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n    return isKeyNotMatch(builtInKeyName, eventKeyName)\n  } else if (mappedKeyCode) {\n    return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n  } else if (eventKeyName) {\n    return hyphenate(eventKeyName) !== key\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n  data,\n  tag,\n  value,\n  asProp,\n  isSync\n) {\n  if (value) {\n    if (!isObject(value)) {\n       true && warn(\n        'v-bind without argument expects an Object or Array value',\n        this\n      );\n    } else {\n      if (Array.isArray(value)) {\n        value = toObject(value);\n      }\n      var hash;\n      var loop = function ( key ) {\n        if (\n          key === 'class' ||\n          key === 'style' ||\n          isReservedAttribute(key)\n        ) {\n          hash = data;\n        } else {\n          var type = data.attrs && data.attrs.type;\n          hash = asProp || config.mustUseProp(tag, type, key)\n            ? data.domProps || (data.domProps = {})\n            : data.attrs || (data.attrs = {});\n        }\n        var camelizedKey = camelize(key);\n        var hyphenatedKey = hyphenate(key);\n        if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n          hash[key] = value[key];\n\n          if (isSync) {\n            var on = data.on || (data.on = {});\n            on[(\"update:\" + key)] = function ($event) {\n              value[key] = $event;\n            };\n          }\n        }\n      };\n\n      for (var key in value) loop( key );\n    }\n  }\n  return data\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n  index,\n  isInFor\n) {\n  var cached = this._staticTrees || (this._staticTrees = []);\n  var tree = cached[index];\n  // if has already-rendered static tree and not inside v-for,\n  // we can reuse the same tree.\n  if (tree && !isInFor) {\n    return tree\n  }\n  // otherwise, render a fresh tree.\n  tree = cached[index] = this.$options.staticRenderFns[index].call(\n    this._renderProxy,\n    null,\n    this // for render fns generated for functional component templates\n  );\n  markStatic(tree, (\"__static__\" + index), false);\n  return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n  tree,\n  index,\n  key\n) {\n  markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n  return tree\n}\n\nfunction markStatic (\n  tree,\n  key,\n  isOnce\n) {\n  if (Array.isArray(tree)) {\n    for (var i = 0; i < tree.length; i++) {\n      if (tree[i] && typeof tree[i] !== 'string') {\n        markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n      }\n    }\n  } else {\n    markStaticNode(tree, key, isOnce);\n  }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n  node.isStatic = true;\n  node.key = key;\n  node.isOnce = isOnce;\n}\n\n/*  */\n\nfunction bindObjectListeners (data, value) {\n  if (value) {\n    if (!isPlainObject(value)) {\n       true && warn(\n        'v-on without argument expects an Object value',\n        this\n      );\n    } else {\n      var on = data.on = data.on ? extend({}, data.on) : {};\n      for (var key in value) {\n        var existing = on[key];\n        var ours = value[key];\n        on[key] = existing ? [].concat(existing, ours) : ours;\n      }\n    }\n  }\n  return data\n}\n\n/*  */\n\nfunction resolveScopedSlots (\n  fns, // see flow/vnode\n  res,\n  // the following are added in 2.6\n  hasDynamicKeys,\n  contentHashKey\n) {\n  res = res || { $stable: !hasDynamicKeys };\n  for (var i = 0; i < fns.length; i++) {\n    var slot = fns[i];\n    if (Array.isArray(slot)) {\n      resolveScopedSlots(slot, res, hasDynamicKeys);\n    } else if (slot) {\n      // marker for reverse proxying v-slot without scope on this.$slots\n      if (slot.proxy) {\n        slot.fn.proxy = true;\n      }\n      res[slot.key] = slot.fn;\n    }\n  }\n  if (contentHashKey) {\n    (res).$key = contentHashKey;\n  }\n  return res\n}\n\n/*  */\n\nfunction bindDynamicKeys (baseObj, values) {\n  for (var i = 0; i < values.length; i += 2) {\n    var key = values[i];\n    if (typeof key === 'string' && key) {\n      baseObj[values[i]] = values[i + 1];\n    } else if ( true && key !== '' && key !== null) {\n      // null is a speical value for explicitly removing a binding\n      warn(\n        (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n        this\n      );\n    }\n  }\n  return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n  return typeof value === 'string' ? symbol + value : value\n}\n\n/*  */\n\nfunction installRenderHelpers (target) {\n  target._o = markOnce;\n  target._n = toNumber;\n  target._s = toString;\n  target._l = renderList;\n  target._t = renderSlot;\n  target._q = looseEqual;\n  target._i = looseIndexOf;\n  target._m = renderStatic;\n  target._f = resolveFilter;\n  target._k = checkKeyCodes;\n  target._b = bindObjectProps;\n  target._v = createTextVNode;\n  target._e = createEmptyVNode;\n  target._u = resolveScopedSlots;\n  target._g = bindObjectListeners;\n  target._d = bindDynamicKeys;\n  target._p = prependModifier;\n}\n\n/*  */\n\nfunction FunctionalRenderContext (\n  data,\n  props,\n  children,\n  parent,\n  Ctor\n) {\n  var this$1 = this;\n\n  var options = Ctor.options;\n  // ensure the createElement function in functional components\n  // gets a unique context - this is necessary for correct named slot check\n  var contextVm;\n  if (hasOwn(parent, '_uid')) {\n    contextVm = Object.create(parent);\n    // $flow-disable-line\n    contextVm._original = parent;\n  } else {\n    // the context vm passed in is a functional context as well.\n    // in this case we want to make sure we are able to get a hold to the\n    // real context instance.\n    contextVm = parent;\n    // $flow-disable-line\n    parent = parent._original;\n  }\n  var isCompiled = isTrue(options._compiled);\n  var needNormalization = !isCompiled;\n\n  this.data = data;\n  this.props = props;\n  this.children = children;\n  this.parent = parent;\n  this.listeners = data.on || emptyObject;\n  this.injections = resolveInject(options.inject, parent);\n  this.slots = function () {\n    if (!this$1.$slots) {\n      normalizeScopedSlots(\n        data.scopedSlots,\n        this$1.$slots = resolveSlots(children, parent)\n      );\n    }\n    return this$1.$slots\n  };\n\n  Object.defineProperty(this, 'scopedSlots', ({\n    enumerable: true,\n    get: function get () {\n      return normalizeScopedSlots(data.scopedSlots, this.slots())\n    }\n  }));\n\n  // support for compiled functional template\n  if (isCompiled) {\n    // exposing $options for renderStatic()\n    this.$options = options;\n    // pre-resolve slots for renderSlot()\n    this.$slots = this.slots();\n    this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n  }\n\n  if (options._scopeId) {\n    this._c = function (a, b, c, d) {\n      var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n      if (vnode && !Array.isArray(vnode)) {\n        vnode.fnScopeId = options._scopeId;\n        vnode.fnContext = parent;\n      }\n      return vnode\n    };\n  } else {\n    this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n  }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n  Ctor,\n  propsData,\n  data,\n  contextVm,\n  children\n) {\n  var options = Ctor.options;\n  var props = {};\n  var propOptions = options.props;\n  if (isDef(propOptions)) {\n    for (var key in propOptions) {\n      props[key] = validateProp(key, propOptions, propsData || emptyObject);\n    }\n  } else {\n    if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n    if (isDef(data.props)) { mergeProps(props, data.props); }\n  }\n\n  var renderContext = new FunctionalRenderContext(\n    data,\n    props,\n    children,\n    contextVm,\n    Ctor\n  );\n\n  var vnode = options.render.call(null, renderContext._c, renderContext);\n\n  if (vnode instanceof VNode) {\n    return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n  } else if (Array.isArray(vnode)) {\n    var vnodes = normalizeChildren(vnode) || [];\n    var res = new Array(vnodes.length);\n    for (var i = 0; i < vnodes.length; i++) {\n      res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n    }\n    return res\n  }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n  // #7817 clone node before setting fnContext, otherwise if the node is reused\n  // (e.g. it was from a cached normal slot) the fnContext causes named slots\n  // that should not be matched to match.\n  var clone = cloneVNode(vnode);\n  clone.fnContext = contextVm;\n  clone.fnOptions = options;\n  if (true) {\n    (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n  }\n  if (data.slot) {\n    (clone.data || (clone.data = {})).slot = data.slot;\n  }\n  return clone\n}\n\nfunction mergeProps (to, from) {\n  for (var key in from) {\n    to[camelize(key)] = from[key];\n  }\n}\n\n/*  */\n\n/*  */\n\n/*  */\n\n/*  */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n  init: function init (vnode, hydrating) {\n    if (\n      vnode.componentInstance &&\n      !vnode.componentInstance._isDestroyed &&\n      vnode.data.keepAlive\n    ) {\n      // kept-alive components, treat as a patch\n      var mountedNode = vnode; // work around flow\n      componentVNodeHooks.prepatch(mountedNode, mountedNode);\n    } else {\n      var child = vnode.componentInstance = createComponentInstanceForVnode(\n        vnode,\n        activeInstance\n      );\n      child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n    }\n  },\n\n  prepatch: function prepatch (oldVnode, vnode) {\n    var options = vnode.componentOptions;\n    var child = vnode.componentInstance = oldVnode.componentInstance;\n    updateChildComponent(\n      child,\n      options.propsData, // updated props\n      options.listeners, // updated listeners\n      vnode, // new parent vnode\n      options.children // new children\n    );\n  },\n\n  insert: function insert (vnode) {\n    var context = vnode.context;\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isMounted) {\n      componentInstance._isMounted = true;\n      callHook(componentInstance, 'mounted');\n    }\n    if (vnode.data.keepAlive) {\n      if (context._isMounted) {\n        // vue-router#1212\n        // During updates, a kept-alive component's child components may\n        // change, so directly walking the tree here may call activated hooks\n        // on incorrect children. Instead we push them into a queue which will\n        // be processed after the whole patch process ended.\n        queueActivatedComponent(componentInstance);\n      } else {\n        activateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  },\n\n  destroy: function destroy (vnode) {\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isDestroyed) {\n      if (!vnode.data.keepAlive) {\n        componentInstance.$destroy();\n      } else {\n        deactivateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n  Ctor,\n  data,\n  context,\n  children,\n  tag\n) {\n  if (isUndef(Ctor)) {\n    return\n  }\n\n  var baseCtor = context.$options._base;\n\n  // plain options object: turn it into a constructor\n  if (isObject(Ctor)) {\n    Ctor = baseCtor.extend(Ctor);\n  }\n\n  // if at this stage it's not a constructor or an async component factory,\n  // reject.\n  if (typeof Ctor !== 'function') {\n    if (true) {\n      warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n    }\n    return\n  }\n\n  // async component\n  var asyncFactory;\n  if (isUndef(Ctor.cid)) {\n    asyncFactory = Ctor;\n    Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n    if (Ctor === undefined) {\n      // return a placeholder node for async component, which is rendered\n      // as a comment node but preserves all the raw information for the node.\n      // the information will be used for async server-rendering and hydration.\n      return createAsyncPlaceholder(\n        asyncFactory,\n        data,\n        context,\n        children,\n        tag\n      )\n    }\n  }\n\n  data = data || {};\n\n  // resolve constructor options in case global mixins are applied after\n  // component constructor creation\n  resolveConstructorOptions(Ctor);\n\n  // transform component v-model data into props & events\n  if (isDef(data.model)) {\n    transformModel(Ctor.options, data);\n  }\n\n  // extract props\n  var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n  // functional component\n  if (isTrue(Ctor.options.functional)) {\n    return createFunctionalComponent(Ctor, propsData, data, context, children)\n  }\n\n  // extract listeners, since these needs to be treated as\n  // child component listeners instead of DOM listeners\n  var listeners = data.on;\n  // replace with listeners with .native modifier\n  // so it gets processed during parent component patch.\n  data.on = data.nativeOn;\n\n  if (isTrue(Ctor.options.abstract)) {\n    // abstract components do not keep anything\n    // other than props & listeners & slot\n\n    // work around flow\n    var slot = data.slot;\n    data = {};\n    if (slot) {\n      data.slot = slot;\n    }\n  }\n\n  // install component management hooks onto the placeholder node\n  installComponentHooks(data);\n\n  // return a placeholder vnode\n  var name = Ctor.options.name || tag;\n  var vnode = new VNode(\n    (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n    data, undefined, undefined, undefined, context,\n    { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n    asyncFactory\n  );\n\n  return vnode\n}\n\nfunction createComponentInstanceForVnode (\n  vnode, // we know it's MountedComponentVNode but flow doesn't\n  parent // activeInstance in lifecycle state\n) {\n  var options = {\n    _isComponent: true,\n    _parentVnode: vnode,\n    parent: parent\n  };\n  // check inline-template render functions\n  var inlineTemplate = vnode.data.inlineTemplate;\n  if (isDef(inlineTemplate)) {\n    options.render = inlineTemplate.render;\n    options.staticRenderFns = inlineTemplate.staticRenderFns;\n  }\n  return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n  var hooks = data.hook || (data.hook = {});\n  for (var i = 0; i < hooksToMerge.length; i++) {\n    var key = hooksToMerge[i];\n    var existing = hooks[key];\n    var toMerge = componentVNodeHooks[key];\n    if (existing !== toMerge && !(existing && existing._merged)) {\n      hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n    }\n  }\n}\n\nfunction mergeHook$1 (f1, f2) {\n  var merged = function (a, b) {\n    // flow complains about extra args which is why we use any\n    f1(a, b);\n    f2(a, b);\n  };\n  merged._merged = true;\n  return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n  var prop = (options.model && options.model.prop) || 'value';\n  var event = (options.model && options.model.event) || 'input'\n  ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n  var on = data.on || (data.on = {});\n  var existing = on[event];\n  var callback = data.model.callback;\n  if (isDef(existing)) {\n    if (\n      Array.isArray(existing)\n        ? existing.indexOf(callback) === -1\n        : existing !== callback\n    ) {\n      on[event] = [callback].concat(existing);\n    }\n  } else {\n    on[event] = callback;\n  }\n}\n\n/*  */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType,\n  alwaysNormalize\n) {\n  if (Array.isArray(data) || isPrimitive(data)) {\n    normalizationType = children;\n    children = data;\n    data = undefined;\n  }\n  if (isTrue(alwaysNormalize)) {\n    normalizationType = ALWAYS_NORMALIZE;\n  }\n  return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType\n) {\n  if (isDef(data) && isDef((data).__ob__)) {\n     true && warn(\n      \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n      'Always create fresh vnode data objects in each render!',\n      context\n    );\n    return createEmptyVNode()\n  }\n  // object syntax in v-bind\n  if (isDef(data) && isDef(data.is)) {\n    tag = data.is;\n  }\n  if (!tag) {\n    // in case of component :is set to falsy value\n    return createEmptyVNode()\n  }\n  // warn against non-primitive key\n  if ( true &&\n    isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n  ) {\n    {\n      warn(\n        'Avoid using non-primitive value as key, ' +\n        'use string/number value instead.',\n        context\n      );\n    }\n  }\n  // support single function children as default scoped slot\n  if (Array.isArray(children) &&\n    typeof children[0] === 'function'\n  ) {\n    data = data || {};\n    data.scopedSlots = { default: children[0] };\n    children.length = 0;\n  }\n  if (normalizationType === ALWAYS_NORMALIZE) {\n    children = normalizeChildren(children);\n  } else if (normalizationType === SIMPLE_NORMALIZE) {\n    children = simpleNormalizeChildren(children);\n  }\n  var vnode, ns;\n  if (typeof tag === 'string') {\n    var Ctor;\n    ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n    if (config.isReservedTag(tag)) {\n      // platform built-in elements\n      vnode = new VNode(\n        config.parsePlatformTagName(tag), data, children,\n        undefined, undefined, context\n      );\n    } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n      // component\n      vnode = createComponent(Ctor, data, context, children, tag);\n    } else {\n      // unknown or unlisted namespaced elements\n      // check at runtime because it may get assigned a namespace when its\n      // parent normalizes children\n      vnode = new VNode(\n        tag, data, children,\n        undefined, undefined, context\n      );\n    }\n  } else {\n    // direct component options / constructor\n    vnode = createComponent(tag, data, context, children);\n  }\n  if (Array.isArray(vnode)) {\n    return vnode\n  } else if (isDef(vnode)) {\n    if (isDef(ns)) { applyNS(vnode, ns); }\n    if (isDef(data)) { registerDeepBindings(data); }\n    return vnode\n  } else {\n    return createEmptyVNode()\n  }\n}\n\nfunction applyNS (vnode, ns, force) {\n  vnode.ns = ns;\n  if (vnode.tag === 'foreignObject') {\n    // use default namespace inside foreignObject\n    ns = undefined;\n    force = true;\n  }\n  if (isDef(vnode.children)) {\n    for (var i = 0, l = vnode.children.length; i < l; i++) {\n      var child = vnode.children[i];\n      if (isDef(child.tag) && (\n        isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n        applyNS(child, ns, force);\n      }\n    }\n  }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n  if (isObject(data.style)) {\n    traverse(data.style);\n  }\n  if (isObject(data.class)) {\n    traverse(data.class);\n  }\n}\n\n/*  */\n\nfunction initRender (vm) {\n  vm._vnode = null; // the root of the child tree\n  vm._staticTrees = null; // v-once cached trees\n  var options = vm.$options;\n  var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n  var renderContext = parentVnode && parentVnode.context;\n  vm.$slots = resolveSlots(options._renderChildren, renderContext);\n  vm.$scopedSlots = emptyObject;\n  // bind the createElement fn to this instance\n  // so that we get proper render context inside it.\n  // args order: tag, data, children, normalizationType, alwaysNormalize\n  // internal version is used by render functions compiled from templates\n  vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n  // normalization is always applied for the public version, used in\n  // user-written render functions.\n  vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n  // $attrs & $listeners are exposed for easier HOC creation.\n  // they need to be reactive so that HOCs using them are always updated\n  var parentData = parentVnode && parentVnode.data;\n\n  /* istanbul ignore else */\n  if (true) {\n    defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n    }, true);\n    defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n    }, true);\n  } else {}\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n  // install runtime convenience helpers\n  installRenderHelpers(Vue.prototype);\n\n  Vue.prototype.$nextTick = function (fn) {\n    return nextTick(fn, this)\n  };\n\n  Vue.prototype._render = function () {\n    var vm = this;\n    var ref = vm.$options;\n    var render = ref.render;\n    var _parentVnode = ref._parentVnode;\n\n    if (_parentVnode) {\n      vm.$scopedSlots = normalizeScopedSlots(\n        _parentVnode.data.scopedSlots,\n        vm.$slots,\n        vm.$scopedSlots\n      );\n    }\n\n    // set parent vnode. this allows render functions to have access\n    // to the data on the placeholder node.\n    vm.$vnode = _parentVnode;\n    // render self\n    var vnode;\n    try {\n      // There's no need to maintain a stack becaues all render fns are called\n      // separately from one another. Nested component's render fns are called\n      // when parent component is patched.\n      currentRenderingInstance = vm;\n      vnode = render.call(vm._renderProxy, vm.$createElement);\n    } catch (e) {\n      handleError(e, vm, \"render\");\n      // return error render result,\n      // or previous vnode to prevent render error causing blank component\n      /* istanbul ignore else */\n      if ( true && vm.$options.renderError) {\n        try {\n          vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n        } catch (e) {\n          handleError(e, vm, \"renderError\");\n          vnode = vm._vnode;\n        }\n      } else {\n        vnode = vm._vnode;\n      }\n    } finally {\n      currentRenderingInstance = null;\n    }\n    // if the returned array contains only a single node, allow it\n    if (Array.isArray(vnode) && vnode.length === 1) {\n      vnode = vnode[0];\n    }\n    // return empty vnode in case the render function errored out\n    if (!(vnode instanceof VNode)) {\n      if ( true && Array.isArray(vnode)) {\n        warn(\n          'Multiple root nodes returned from render function. Render function ' +\n          'should return a single root node.',\n          vm\n        );\n      }\n      vnode = createEmptyVNode();\n    }\n    // set parent\n    vnode.parent = _parentVnode;\n    return vnode\n  };\n}\n\n/*  */\n\nfunction ensureCtor (comp, base) {\n  if (\n    comp.__esModule ||\n    (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n  ) {\n    comp = comp.default;\n  }\n  return isObject(comp)\n    ? base.extend(comp)\n    : comp\n}\n\nfunction createAsyncPlaceholder (\n  factory,\n  data,\n  context,\n  children,\n  tag\n) {\n  var node = createEmptyVNode();\n  node.asyncFactory = factory;\n  node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n  return node\n}\n\nfunction resolveAsyncComponent (\n  factory,\n  baseCtor\n) {\n  if (isTrue(factory.error) && isDef(factory.errorComp)) {\n    return factory.errorComp\n  }\n\n  if (isDef(factory.resolved)) {\n    return factory.resolved\n  }\n\n  var owner = currentRenderingInstance;\n  if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n    // already pending\n    factory.owners.push(owner);\n  }\n\n  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n    return factory.loadingComp\n  }\n\n  if (owner && !isDef(factory.owners)) {\n    var owners = factory.owners = [owner];\n    var sync = true;\n    var timerLoading = null;\n    var timerTimeout = null\n\n    ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n    var forceRender = function (renderCompleted) {\n      for (var i = 0, l = owners.length; i < l; i++) {\n        (owners[i]).$forceUpdate();\n      }\n\n      if (renderCompleted) {\n        owners.length = 0;\n        if (timerLoading !== null) {\n          clearTimeout(timerLoading);\n          timerLoading = null;\n        }\n        if (timerTimeout !== null) {\n          clearTimeout(timerTimeout);\n          timerTimeout = null;\n        }\n      }\n    };\n\n    var resolve = once(function (res) {\n      // cache resolved\n      factory.resolved = ensureCtor(res, baseCtor);\n      // invoke callbacks only if this is not a synchronous resolve\n      // (async resolves are shimmed as synchronous during SSR)\n      if (!sync) {\n        forceRender(true);\n      } else {\n        owners.length = 0;\n      }\n    });\n\n    var reject = once(function (reason) {\n       true && warn(\n        \"Failed to resolve async component: \" + (String(factory)) +\n        (reason ? (\"\\nReason: \" + reason) : '')\n      );\n      if (isDef(factory.errorComp)) {\n        factory.error = true;\n        forceRender(true);\n      }\n    });\n\n    var res = factory(resolve, reject);\n\n    if (isObject(res)) {\n      if (isPromise(res)) {\n        // () => Promise\n        if (isUndef(factory.resolved)) {\n          res.then(resolve, reject);\n        }\n      } else if (isPromise(res.component)) {\n        res.component.then(resolve, reject);\n\n        if (isDef(res.error)) {\n          factory.errorComp = ensureCtor(res.error, baseCtor);\n        }\n\n        if (isDef(res.loading)) {\n          factory.loadingComp = ensureCtor(res.loading, baseCtor);\n          if (res.delay === 0) {\n            factory.loading = true;\n          } else {\n            timerLoading = setTimeout(function () {\n              timerLoading = null;\n              if (isUndef(factory.resolved) && isUndef(factory.error)) {\n                factory.loading = true;\n                forceRender(false);\n              }\n            }, res.delay || 200);\n          }\n        }\n\n        if (isDef(res.timeout)) {\n          timerTimeout = setTimeout(function () {\n            timerTimeout = null;\n            if (isUndef(factory.resolved)) {\n              reject(\n                 true\n                  ? (\"timeout (\" + (res.timeout) + \"ms)\")\n                  : undefined\n              );\n            }\n          }, res.timeout);\n        }\n      }\n    }\n\n    sync = false;\n    // return in case resolved synchronously\n    return factory.loading\n      ? factory.loadingComp\n      : factory.resolved\n  }\n}\n\n/*  */\n\nfunction isAsyncPlaceholder (node) {\n  return node.isComment && node.asyncFactory\n}\n\n/*  */\n\nfunction getFirstComponentChild (children) {\n  if (Array.isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      var c = children[i];\n      if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n        return c\n      }\n    }\n  }\n}\n\n/*  */\n\n/*  */\n\nfunction initEvents (vm) {\n  vm._events = Object.create(null);\n  vm._hasHookEvent = false;\n  // init parent attached events\n  var listeners = vm.$options._parentListeners;\n  if (listeners) {\n    updateComponentListeners(vm, listeners);\n  }\n}\n\nvar target;\n\nfunction add (event, fn) {\n  target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n  target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n  var _target = target;\n  return function onceHandler () {\n    var res = fn.apply(null, arguments);\n    if (res !== null) {\n      _target.$off(event, onceHandler);\n    }\n  }\n}\n\nfunction updateComponentListeners (\n  vm,\n  listeners,\n  oldListeners\n) {\n  target = vm;\n  updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n  target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n  var hookRE = /^hook:/;\n  Vue.prototype.$on = function (event, fn) {\n    var vm = this;\n    if (Array.isArray(event)) {\n      for (var i = 0, l = event.length; i < l; i++) {\n        vm.$on(event[i], fn);\n      }\n    } else {\n      (vm._events[event] || (vm._events[event] = [])).push(fn);\n      // optimize hook:event cost by using a boolean flag marked at registration\n      // instead of a hash lookup\n      if (hookRE.test(event)) {\n        vm._hasHookEvent = true;\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$once = function (event, fn) {\n    var vm = this;\n    function on () {\n      vm.$off(event, on);\n      fn.apply(vm, arguments);\n    }\n    on.fn = fn;\n    vm.$on(event, on);\n    return vm\n  };\n\n  Vue.prototype.$off = function (event, fn) {\n    var vm = this;\n    // all\n    if (!arguments.length) {\n      vm._events = Object.create(null);\n      return vm\n    }\n    // array of events\n    if (Array.isArray(event)) {\n      for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n        vm.$off(event[i$1], fn);\n      }\n      return vm\n    }\n    // specific event\n    var cbs = vm._events[event];\n    if (!cbs) {\n      return vm\n    }\n    if (!fn) {\n      vm._events[event] = null;\n      return vm\n    }\n    // specific handler\n    var cb;\n    var i = cbs.length;\n    while (i--) {\n      cb = cbs[i];\n      if (cb === fn || cb.fn === fn) {\n        cbs.splice(i, 1);\n        break\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$emit = function (event) {\n    var vm = this;\n    if (true) {\n      var lowerCaseEvent = event.toLowerCase();\n      if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n        tip(\n          \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n          (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n          \"Note that HTML attributes are case-insensitive and you cannot use \" +\n          \"v-on to listen to camelCase events when using in-DOM templates. \" +\n          \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n        );\n      }\n    }\n    var cbs = vm._events[event];\n    if (cbs) {\n      cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n      var args = toArray(arguments, 1);\n      var info = \"event handler for \\\"\" + event + \"\\\"\";\n      for (var i = 0, l = cbs.length; i < l; i++) {\n        invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n      }\n    }\n    return vm\n  };\n}\n\n/*  */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n  var prevActiveInstance = activeInstance;\n  activeInstance = vm;\n  return function () {\n    activeInstance = prevActiveInstance;\n  }\n}\n\nfunction initLifecycle (vm) {\n  var options = vm.$options;\n\n  // locate first non-abstract parent\n  var parent = options.parent;\n  if (parent && !options.abstract) {\n    while (parent.$options.abstract && parent.$parent) {\n      parent = parent.$parent;\n    }\n    parent.$children.push(vm);\n  }\n\n  vm.$parent = parent;\n  vm.$root = parent ? parent.$root : vm;\n\n  vm.$children = [];\n  vm.$refs = {};\n\n  vm._watcher = null;\n  vm._inactive = null;\n  vm._directInactive = false;\n  vm._isMounted = false;\n  vm._isDestroyed = false;\n  vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n  Vue.prototype._update = function (vnode, hydrating) {\n    var vm = this;\n    var prevEl = vm.$el;\n    var prevVnode = vm._vnode;\n    var restoreActiveInstance = setActiveInstance(vm);\n    vm._vnode = vnode;\n    // Vue.prototype.__patch__ is injected in entry points\n    // based on the rendering backend used.\n    if (!prevVnode) {\n      // initial render\n      vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n    } else {\n      // updates\n      vm.$el = vm.__patch__(prevVnode, vnode);\n    }\n    restoreActiveInstance();\n    // update __vue__ reference\n    if (prevEl) {\n      prevEl.__vue__ = null;\n    }\n    if (vm.$el) {\n      vm.$el.__vue__ = vm;\n    }\n    // if parent is an HOC, update its $el as well\n    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n      vm.$parent.$el = vm.$el;\n    }\n    // updated hook is called by the scheduler to ensure that children are\n    // updated in a parent's updated hook.\n  };\n\n  Vue.prototype.$forceUpdate = function () {\n    var vm = this;\n    if (vm._watcher) {\n      vm._watcher.update();\n    }\n  };\n\n  Vue.prototype.$destroy = function () {\n    var vm = this;\n    if (vm._isBeingDestroyed) {\n      return\n    }\n    callHook(vm, 'beforeDestroy');\n    vm._isBeingDestroyed = true;\n    // remove self from parent\n    var parent = vm.$parent;\n    if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n      remove(parent.$children, vm);\n    }\n    // teardown watchers\n    if (vm._watcher) {\n      vm._watcher.teardown();\n    }\n    var i = vm._watchers.length;\n    while (i--) {\n      vm._watchers[i].teardown();\n    }\n    // remove reference from data ob\n    // frozen object may not have observer.\n    if (vm._data.__ob__) {\n      vm._data.__ob__.vmCount--;\n    }\n    // call the last hook...\n    vm._isDestroyed = true;\n    // invoke destroy hooks on current rendered tree\n    vm.__patch__(vm._vnode, null);\n    // fire destroyed hook\n    callHook(vm, 'destroyed');\n    // turn off all instance listeners.\n    vm.$off();\n    // remove __vue__ reference\n    if (vm.$el) {\n      vm.$el.__vue__ = null;\n    }\n    // release circular reference (#6759)\n    if (vm.$vnode) {\n      vm.$vnode.parent = null;\n    }\n  };\n}\n\nfunction mountComponent (\n  vm,\n  el,\n  hydrating\n) {\n  vm.$el = el;\n  if (!vm.$options.render) {\n    vm.$options.render = createEmptyVNode;\n    if (true) {\n      /* istanbul ignore if */\n      if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n        vm.$options.el || el) {\n        warn(\n          'You are using the runtime-only build of Vue where the template ' +\n          'compiler is not available. Either pre-compile the templates into ' +\n          'render functions, or use the compiler-included build.',\n          vm\n        );\n      } else {\n        warn(\n          'Failed to mount component: template or render function not defined.',\n          vm\n        );\n      }\n    }\n  }\n  callHook(vm, 'beforeMount');\n\n  var updateComponent;\n  /* istanbul ignore if */\n  if ( true && config.performance && mark) {\n    updateComponent = function () {\n      var name = vm._name;\n      var id = vm._uid;\n      var startTag = \"vue-perf-start:\" + id;\n      var endTag = \"vue-perf-end:\" + id;\n\n      mark(startTag);\n      var vnode = vm._render();\n      mark(endTag);\n      measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n      mark(startTag);\n      vm._update(vnode, hydrating);\n      mark(endTag);\n      measure((\"vue \" + name + \" patch\"), startTag, endTag);\n    };\n  } else {\n    updateComponent = function () {\n      vm._update(vm._render(), hydrating);\n    };\n  }\n\n  // we set this to vm._watcher inside the watcher's constructor\n  // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n  // component's mounted hook), which relies on vm._watcher being already defined\n  new Watcher(vm, updateComponent, noop, {\n    before: function before () {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook(vm, 'beforeUpdate');\n      }\n    }\n  }, true /* isRenderWatcher */);\n  hydrating = false;\n\n  // manually mounted instance, call mounted on self\n  // mounted is called for render-created child components in its inserted hook\n  if (vm.$vnode == null) {\n    vm._isMounted = true;\n    callHook(vm, 'mounted');\n  }\n  return vm\n}\n\nfunction updateChildComponent (\n  vm,\n  propsData,\n  listeners,\n  parentVnode,\n  renderChildren\n) {\n  if (true) {\n    isUpdatingChildComponent = true;\n  }\n\n  // determine whether component has slot children\n  // we need to do this before overwriting $options._renderChildren.\n\n  // check if there are dynamic scopedSlots (hand-written or compiled but with\n  // dynamic slot names). Static scoped slots compiled from template has the\n  // \"$stable\" marker.\n  var newScopedSlots = parentVnode.data.scopedSlots;\n  var oldScopedSlots = vm.$scopedSlots;\n  var hasDynamicScopedSlot = !!(\n    (newScopedSlots && !newScopedSlots.$stable) ||\n    (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n    (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n  );\n\n  // Any static slot children from the parent may have changed during parent's\n  // update. Dynamic scoped slots may also have changed. In such cases, a forced\n  // update is necessary to ensure correctness.\n  var needsForceUpdate = !!(\n    renderChildren ||               // has new static slots\n    vm.$options._renderChildren ||  // has old static slots\n    hasDynamicScopedSlot\n  );\n\n  vm.$options._parentVnode = parentVnode;\n  vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n  if (vm._vnode) { // update child tree's parent\n    vm._vnode.parent = parentVnode;\n  }\n  vm.$options._renderChildren = renderChildren;\n\n  // update $attrs and $listeners hash\n  // these are also reactive so they may trigger child update if the child\n  // used them during render\n  vm.$attrs = parentVnode.data.attrs || emptyObject;\n  vm.$listeners = listeners || emptyObject;\n\n  // update props\n  if (propsData && vm.$options.props) {\n    toggleObserving(false);\n    var props = vm._props;\n    var propKeys = vm.$options._propKeys || [];\n    for (var i = 0; i < propKeys.length; i++) {\n      var key = propKeys[i];\n      var propOptions = vm.$options.props; // wtf flow?\n      props[key] = validateProp(key, propOptions, propsData, vm);\n    }\n    toggleObserving(true);\n    // keep a copy of raw propsData\n    vm.$options.propsData = propsData;\n  }\n\n  // update listeners\n  listeners = listeners || emptyObject;\n  var oldListeners = vm.$options._parentListeners;\n  vm.$options._parentListeners = listeners;\n  updateComponentListeners(vm, listeners, oldListeners);\n\n  // resolve slots + force update if has children\n  if (needsForceUpdate) {\n    vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n    vm.$forceUpdate();\n  }\n\n  if (true) {\n    isUpdatingChildComponent = false;\n  }\n}\n\nfunction isInInactiveTree (vm) {\n  while (vm && (vm = vm.$parent)) {\n    if (vm._inactive) { return true }\n  }\n  return false\n}\n\nfunction activateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = false;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  } else if (vm._directInactive) {\n    return\n  }\n  if (vm._inactive || vm._inactive === null) {\n    vm._inactive = false;\n    for (var i = 0; i < vm.$children.length; i++) {\n      activateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'activated');\n  }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = true;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  }\n  if (!vm._inactive) {\n    vm._inactive = true;\n    for (var i = 0; i < vm.$children.length; i++) {\n      deactivateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'deactivated');\n  }\n}\n\nfunction callHook (vm, hook) {\n  // #7573 disable dep collection when invoking lifecycle hooks\n  pushTarget();\n  var handlers = vm.$options[hook];\n  var info = hook + \" hook\";\n  if (handlers) {\n    for (var i = 0, j = handlers.length; i < j; i++) {\n      invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n    }\n  }\n  if (vm._hasHookEvent) {\n    vm.$emit('hook:' + hook);\n  }\n  popTarget();\n}\n\n/*  */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n  index = queue.length = activatedChildren.length = 0;\n  has = {};\n  if (true) {\n    circular = {};\n  }\n  waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n  var performance = window.performance;\n  if (\n    performance &&\n    typeof performance.now === 'function' &&\n    getNow() > document.createEvent('Event').timeStamp\n  ) {\n    // if the event timestamp, although evaluated AFTER the Date.now(), is\n    // smaller than it, it means the event is using a hi-res timestamp,\n    // and we need to use the hi-res version for event listener timestamps as\n    // well.\n    getNow = function () { return performance.now(); };\n  }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n  currentFlushTimestamp = getNow();\n  flushing = true;\n  var watcher, id;\n\n  // Sort queue before flush.\n  // This ensures that:\n  // 1. Components are updated from parent to child. (because parent is always\n  //    created before the child)\n  // 2. A component's user watchers are run before its render watcher (because\n  //    user watchers are created before the render watcher)\n  // 3. If a component is destroyed during a parent component's watcher run,\n  //    its watchers can be skipped.\n  queue.sort(function (a, b) { return a.id - b.id; });\n\n  // do not cache length because more watchers might be pushed\n  // as we run existing watchers\n  for (index = 0; index < queue.length; index++) {\n    watcher = queue[index];\n    if (watcher.before) {\n      watcher.before();\n    }\n    id = watcher.id;\n    has[id] = null;\n    watcher.run();\n    // in dev build, check and stop circular updates.\n    if ( true && has[id] != null) {\n      circular[id] = (circular[id] || 0) + 1;\n      if (circular[id] > MAX_UPDATE_COUNT) {\n        warn(\n          'You may have an infinite update loop ' + (\n            watcher.user\n              ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n              : \"in a component render function.\"\n          ),\n          watcher.vm\n        );\n        break\n      }\n    }\n  }\n\n  // keep copies of post queues before resetting state\n  var activatedQueue = activatedChildren.slice();\n  var updatedQueue = queue.slice();\n\n  resetSchedulerState();\n\n  // call component updated and activated hooks\n  callActivatedHooks(activatedQueue);\n  callUpdatedHooks(updatedQueue);\n\n  // devtool hook\n  /* istanbul ignore if */\n  if (devtools && config.devtools) {\n    devtools.emit('flush');\n  }\n}\n\nfunction callUpdatedHooks (queue) {\n  var i = queue.length;\n  while (i--) {\n    var watcher = queue[i];\n    var vm = watcher.vm;\n    if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n      callHook(vm, 'updated');\n    }\n  }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n  // setting _inactive to false here so that a render function can\n  // rely on checking whether it's in an inactive tree (e.g. router-view)\n  vm._inactive = false;\n  activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n  for (var i = 0; i < queue.length; i++) {\n    queue[i]._inactive = true;\n    activateChildComponent(queue[i], true /* true */);\n  }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n  var id = watcher.id;\n  if (has[id] == null) {\n    has[id] = true;\n    if (!flushing) {\n      queue.push(watcher);\n    } else {\n      // if already flushing, splice the watcher based on its id\n      // if already past its id, it will be run next immediately.\n      var i = queue.length - 1;\n      while (i > index && queue[i].id > watcher.id) {\n        i--;\n      }\n      queue.splice(i + 1, 0, watcher);\n    }\n    // queue the flush\n    if (!waiting) {\n      waiting = true;\n\n      if ( true && !config.async) {\n        flushSchedulerQueue();\n        return\n      }\n      nextTick(flushSchedulerQueue);\n    }\n  }\n}\n\n/*  */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n  vm,\n  expOrFn,\n  cb,\n  options,\n  isRenderWatcher\n) {\n  this.vm = vm;\n  if (isRenderWatcher) {\n    vm._watcher = this;\n  }\n  vm._watchers.push(this);\n  // options\n  if (options) {\n    this.deep = !!options.deep;\n    this.user = !!options.user;\n    this.lazy = !!options.lazy;\n    this.sync = !!options.sync;\n    this.before = options.before;\n  } else {\n    this.deep = this.user = this.lazy = this.sync = false;\n  }\n  this.cb = cb;\n  this.id = ++uid$2; // uid for batching\n  this.active = true;\n  this.dirty = this.lazy; // for lazy watchers\n  this.deps = [];\n  this.newDeps = [];\n  this.depIds = new _Set();\n  this.newDepIds = new _Set();\n  this.expression =  true\n    ? expOrFn.toString()\n    : undefined;\n  // parse expression for getter\n  if (typeof expOrFn === 'function') {\n    this.getter = expOrFn;\n  } else {\n    this.getter = parsePath(expOrFn);\n    if (!this.getter) {\n      this.getter = noop;\n       true && warn(\n        \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n        'Watcher only accepts simple dot-delimited paths. ' +\n        'For full control, use a function instead.',\n        vm\n      );\n    }\n  }\n  this.value = this.lazy\n    ? undefined\n    : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n  pushTarget(this);\n  var value;\n  var vm = this.vm;\n  try {\n    value = this.getter.call(vm, vm);\n  } catch (e) {\n    if (this.user) {\n      handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n    } else {\n      throw e\n    }\n  } finally {\n    // \"touch\" every property so they are all tracked as\n    // dependencies for deep watching\n    if (this.deep) {\n      traverse(value);\n    }\n    popTarget();\n    this.cleanupDeps();\n  }\n  return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n  var id = dep.id;\n  if (!this.newDepIds.has(id)) {\n    this.newDepIds.add(id);\n    this.newDeps.push(dep);\n    if (!this.depIds.has(id)) {\n      dep.addSub(this);\n    }\n  }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n  var i = this.deps.length;\n  while (i--) {\n    var dep = this.deps[i];\n    if (!this.newDepIds.has(dep.id)) {\n      dep.removeSub(this);\n    }\n  }\n  var tmp = this.depIds;\n  this.depIds = this.newDepIds;\n  this.newDepIds = tmp;\n  this.newDepIds.clear();\n  tmp = this.deps;\n  this.deps = this.newDeps;\n  this.newDeps = tmp;\n  this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n  /* istanbul ignore else */\n  if (this.lazy) {\n    this.dirty = true;\n  } else if (this.sync) {\n    this.run();\n  } else {\n    queueWatcher(this);\n  }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n  if (this.active) {\n    var value = this.get();\n    if (\n      value !== this.value ||\n      // Deep watchers and watchers on Object/Arrays should fire even\n      // when the value is the same, because the value may\n      // have mutated.\n      isObject(value) ||\n      this.deep\n    ) {\n      // set new value\n      var oldValue = this.value;\n      this.value = value;\n      if (this.user) {\n        try {\n          this.cb.call(this.vm, value, oldValue);\n        } catch (e) {\n          handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n        }\n      } else {\n        this.cb.call(this.vm, value, oldValue);\n      }\n    }\n  }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n  this.value = this.get();\n  this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n  var i = this.deps.length;\n  while (i--) {\n    this.deps[i].depend();\n  }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n  if (this.active) {\n    // remove self from vm's watcher list\n    // this is a somewhat expensive operation so we skip it\n    // if the vm is being destroyed.\n    if (!this.vm._isBeingDestroyed) {\n      remove(this.vm._watchers, this);\n    }\n    var i = this.deps.length;\n    while (i--) {\n      this.deps[i].removeSub(this);\n    }\n    this.active = false;\n  }\n};\n\n/*  */\n\nvar sharedPropertyDefinition = {\n  enumerable: true,\n  configurable: true,\n  get: noop,\n  set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n  sharedPropertyDefinition.get = function proxyGetter () {\n    return this[sourceKey][key]\n  };\n  sharedPropertyDefinition.set = function proxySetter (val) {\n    this[sourceKey][key] = val;\n  };\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n  vm._watchers = [];\n  var opts = vm.$options;\n  if (opts.props) { initProps(vm, opts.props); }\n  if (opts.methods) { initMethods(vm, opts.methods); }\n  if (opts.data) {\n    initData(vm);\n  } else {\n    observe(vm._data = {}, true /* asRootData */);\n  }\n  if (opts.computed) { initComputed(vm, opts.computed); }\n  if (opts.watch && opts.watch !== nativeWatch) {\n    initWatch(vm, opts.watch);\n  }\n}\n\nfunction initProps (vm, propsOptions) {\n  var propsData = vm.$options.propsData || {};\n  var props = vm._props = {};\n  // cache prop keys so that future props updates can iterate using Array\n  // instead of dynamic object key enumeration.\n  var keys = vm.$options._propKeys = [];\n  var isRoot = !vm.$parent;\n  // root instance props should be converted\n  if (!isRoot) {\n    toggleObserving(false);\n  }\n  var loop = function ( key ) {\n    keys.push(key);\n    var value = validateProp(key, propsOptions, propsData, vm);\n    /* istanbul ignore else */\n    if (true) {\n      var hyphenatedKey = hyphenate(key);\n      if (isReservedAttribute(hyphenatedKey) ||\n          config.isReservedAttr(hyphenatedKey)) {\n        warn(\n          (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n          vm\n        );\n      }\n      defineReactive$$1(props, key, value, function () {\n        if (!isRoot && !isUpdatingChildComponent) {\n          warn(\n            \"Avoid mutating a prop directly since the value will be \" +\n            \"overwritten whenever the parent component re-renders. \" +\n            \"Instead, use a data or computed property based on the prop's \" +\n            \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        }\n      });\n    } else {}\n    // static props are already proxied on the component's prototype\n    // during Vue.extend(). We only need to proxy props defined at\n    // instantiation here.\n    if (!(key in vm)) {\n      proxy(vm, \"_props\", key);\n    }\n  };\n\n  for (var key in propsOptions) loop( key );\n  toggleObserving(true);\n}\n\nfunction initData (vm) {\n  var data = vm.$options.data;\n  data = vm._data = typeof data === 'function'\n    ? getData(data, vm)\n    : data || {};\n  if (!isPlainObject(data)) {\n    data = {};\n     true && warn(\n      'data functions should return an object:\\n' +\n      'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n      vm\n    );\n  }\n  // proxy data on instance\n  var keys = Object.keys(data);\n  var props = vm.$options.props;\n  var methods = vm.$options.methods;\n  var i = keys.length;\n  while (i--) {\n    var key = keys[i];\n    if (true) {\n      if (methods && hasOwn(methods, key)) {\n        warn(\n          (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n          vm\n        );\n      }\n    }\n    if (props && hasOwn(props, key)) {\n       true && warn(\n        \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n        \"Use prop default value instead.\",\n        vm\n      );\n    } else if (!isReserved(key)) {\n      proxy(vm, \"_data\", key);\n    }\n  }\n  // observe data\n  observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n  // #7573 disable dep collection when invoking data getters\n  pushTarget();\n  try {\n    return data.call(vm, vm)\n  } catch (e) {\n    handleError(e, vm, \"data()\");\n    return {}\n  } finally {\n    popTarget();\n  }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n  // $flow-disable-line\n  var watchers = vm._computedWatchers = Object.create(null);\n  // computed properties are just getters during SSR\n  var isSSR = isServerRendering();\n\n  for (var key in computed) {\n    var userDef = computed[key];\n    var getter = typeof userDef === 'function' ? userDef : userDef.get;\n    if ( true && getter == null) {\n      warn(\n        (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n        vm\n      );\n    }\n\n    if (!isSSR) {\n      // create internal watcher for the computed property.\n      watchers[key] = new Watcher(\n        vm,\n        getter || noop,\n        noop,\n        computedWatcherOptions\n      );\n    }\n\n    // component-defined computed properties are already defined on the\n    // component prototype. We only need to define computed properties defined\n    // at instantiation here.\n    if (!(key in vm)) {\n      defineComputed(vm, key, userDef);\n    } else if (true) {\n      if (key in vm.$data) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n      } else if (vm.$options.props && key in vm.$options.props) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n      }\n    }\n  }\n}\n\nfunction defineComputed (\n  target,\n  key,\n  userDef\n) {\n  var shouldCache = !isServerRendering();\n  if (typeof userDef === 'function') {\n    sharedPropertyDefinition.get = shouldCache\n      ? createComputedGetter(key)\n      : createGetterInvoker(userDef);\n    sharedPropertyDefinition.set = noop;\n  } else {\n    sharedPropertyDefinition.get = userDef.get\n      ? shouldCache && userDef.cache !== false\n        ? createComputedGetter(key)\n        : createGetterInvoker(userDef.get)\n      : noop;\n    sharedPropertyDefinition.set = userDef.set || noop;\n  }\n  if ( true &&\n      sharedPropertyDefinition.set === noop) {\n    sharedPropertyDefinition.set = function () {\n      warn(\n        (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n        this\n      );\n    };\n  }\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n  return function computedGetter () {\n    var watcher = this._computedWatchers && this._computedWatchers[key];\n    if (watcher) {\n      if (watcher.dirty) {\n        watcher.evaluate();\n      }\n      if (Dep.target) {\n        watcher.depend();\n      }\n      return watcher.value\n    }\n  }\n}\n\nfunction createGetterInvoker(fn) {\n  return function computedGetter () {\n    return fn.call(this, this)\n  }\n}\n\nfunction initMethods (vm, methods) {\n  var props = vm.$options.props;\n  for (var key in methods) {\n    if (true) {\n      if (typeof methods[key] !== 'function') {\n        warn(\n          \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n          \"Did you reference the function correctly?\",\n          vm\n        );\n      }\n      if (props && hasOwn(props, key)) {\n        warn(\n          (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n          vm\n        );\n      }\n      if ((key in vm) && isReserved(key)) {\n        warn(\n          \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n          \"Avoid defining component methods that start with _ or $.\"\n        );\n      }\n    }\n    vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n  }\n}\n\nfunction initWatch (vm, watch) {\n  for (var key in watch) {\n    var handler = watch[key];\n    if (Array.isArray(handler)) {\n      for (var i = 0; i < handler.length; i++) {\n        createWatcher(vm, key, handler[i]);\n      }\n    } else {\n      createWatcher(vm, key, handler);\n    }\n  }\n}\n\nfunction createWatcher (\n  vm,\n  expOrFn,\n  handler,\n  options\n) {\n  if (isPlainObject(handler)) {\n    options = handler;\n    handler = handler.handler;\n  }\n  if (typeof handler === 'string') {\n    handler = vm[handler];\n  }\n  return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n  // flow somehow has problems with directly declared definition object\n  // when using Object.defineProperty, so we have to procedurally build up\n  // the object here.\n  var dataDef = {};\n  dataDef.get = function () { return this._data };\n  var propsDef = {};\n  propsDef.get = function () { return this._props };\n  if (true) {\n    dataDef.set = function () {\n      warn(\n        'Avoid replacing instance root $data. ' +\n        'Use nested data properties instead.',\n        this\n      );\n    };\n    propsDef.set = function () {\n      warn(\"$props is readonly.\", this);\n    };\n  }\n  Object.defineProperty(Vue.prototype, '$data', dataDef);\n  Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n  Vue.prototype.$set = set;\n  Vue.prototype.$delete = del;\n\n  Vue.prototype.$watch = function (\n    expOrFn,\n    cb,\n    options\n  ) {\n    var vm = this;\n    if (isPlainObject(cb)) {\n      return createWatcher(vm, expOrFn, cb, options)\n    }\n    options = options || {};\n    options.user = true;\n    var watcher = new Watcher(vm, expOrFn, cb, options);\n    if (options.immediate) {\n      try {\n        cb.call(vm, watcher.value);\n      } catch (error) {\n        handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n      }\n    }\n    return function unwatchFn () {\n      watcher.teardown();\n    }\n  };\n}\n\n/*  */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n  Vue.prototype._init = function (options) {\n    var vm = this;\n    // a uid\n    vm._uid = uid$3++;\n\n    var startTag, endTag;\n    /* istanbul ignore if */\n    if ( true && config.performance && mark) {\n      startTag = \"vue-perf-start:\" + (vm._uid);\n      endTag = \"vue-perf-end:\" + (vm._uid);\n      mark(startTag);\n    }\n\n    // a flag to avoid this being observed\n    vm._isVue = true;\n    // merge options\n    if (options && options._isComponent) {\n      // optimize internal component instantiation\n      // since dynamic options merging is pretty slow, and none of the\n      // internal component options needs special treatment.\n      initInternalComponent(vm, options);\n    } else {\n      vm.$options = mergeOptions(\n        resolveConstructorOptions(vm.constructor),\n        options || {},\n        vm\n      );\n    }\n    /* istanbul ignore else */\n    if (true) {\n      initProxy(vm);\n    } else {}\n    // expose real self\n    vm._self = vm;\n    initLifecycle(vm);\n    initEvents(vm);\n    initRender(vm);\n    callHook(vm, 'beforeCreate');\n    initInjections(vm); // resolve injections before data/props\n    initState(vm);\n    initProvide(vm); // resolve provide after data/props\n    callHook(vm, 'created');\n\n    /* istanbul ignore if */\n    if ( true && config.performance && mark) {\n      vm._name = formatComponentName(vm, false);\n      mark(endTag);\n      measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n    }\n\n    if (vm.$options.el) {\n      vm.$mount(vm.$options.el);\n    }\n  };\n}\n\nfunction initInternalComponent (vm, options) {\n  var opts = vm.$options = Object.create(vm.constructor.options);\n  // doing this because it's faster than dynamic enumeration.\n  var parentVnode = options._parentVnode;\n  opts.parent = options.parent;\n  opts._parentVnode = parentVnode;\n\n  var vnodeComponentOptions = parentVnode.componentOptions;\n  opts.propsData = vnodeComponentOptions.propsData;\n  opts._parentListeners = vnodeComponentOptions.listeners;\n  opts._renderChildren = vnodeComponentOptions.children;\n  opts._componentTag = vnodeComponentOptions.tag;\n\n  if (options.render) {\n    opts.render = options.render;\n    opts.staticRenderFns = options.staticRenderFns;\n  }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n  var options = Ctor.options;\n  if (Ctor.super) {\n    var superOptions = resolveConstructorOptions(Ctor.super);\n    var cachedSuperOptions = Ctor.superOptions;\n    if (superOptions !== cachedSuperOptions) {\n      // super option changed,\n      // need to resolve new options.\n      Ctor.superOptions = superOptions;\n      // check if there are any late-modified/attached options (#4976)\n      var modifiedOptions = resolveModifiedOptions(Ctor);\n      // update base extend options\n      if (modifiedOptions) {\n        extend(Ctor.extendOptions, modifiedOptions);\n      }\n      options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n      if (options.name) {\n        options.components[options.name] = Ctor;\n      }\n    }\n  }\n  return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n  var modified;\n  var latest = Ctor.options;\n  var sealed = Ctor.sealedOptions;\n  for (var key in latest) {\n    if (latest[key] !== sealed[key]) {\n      if (!modified) { modified = {}; }\n      modified[key] = latest[key];\n    }\n  }\n  return modified\n}\n\nfunction Vue (options) {\n  if ( true &&\n    !(this instanceof Vue)\n  ) {\n    warn('Vue is a constructor and should be called with the `new` keyword');\n  }\n  this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/*  */\n\nfunction initUse (Vue) {\n  Vue.use = function (plugin) {\n    var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n    if (installedPlugins.indexOf(plugin) > -1) {\n      return this\n    }\n\n    // additional parameters\n    var args = toArray(arguments, 1);\n    args.unshift(this);\n    if (typeof plugin.install === 'function') {\n      plugin.install.apply(plugin, args);\n    } else if (typeof plugin === 'function') {\n      plugin.apply(null, args);\n    }\n    installedPlugins.push(plugin);\n    return this\n  };\n}\n\n/*  */\n\nfunction initMixin$1 (Vue) {\n  Vue.mixin = function (mixin) {\n    this.options = mergeOptions(this.options, mixin);\n    return this\n  };\n}\n\n/*  */\n\nfunction initExtend (Vue) {\n  /**\n   * Each instance constructor, including Vue, has a unique\n   * cid. This enables us to create wrapped \"child\n   * constructors\" for prototypal inheritance and cache them.\n   */\n  Vue.cid = 0;\n  var cid = 1;\n\n  /**\n   * Class inheritance\n   */\n  Vue.extend = function (extendOptions) {\n    extendOptions = extendOptions || {};\n    var Super = this;\n    var SuperId = Super.cid;\n    var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n    if (cachedCtors[SuperId]) {\n      return cachedCtors[SuperId]\n    }\n\n    var name = extendOptions.name || Super.options.name;\n    if ( true && name) {\n      validateComponentName(name);\n    }\n\n    var Sub = function VueComponent (options) {\n      this._init(options);\n    };\n    Sub.prototype = Object.create(Super.prototype);\n    Sub.prototype.constructor = Sub;\n    Sub.cid = cid++;\n    Sub.options = mergeOptions(\n      Super.options,\n      extendOptions\n    );\n    Sub['super'] = Super;\n\n    // For props and computed properties, we define the proxy getters on\n    // the Vue instances at extension time, on the extended prototype. This\n    // avoids Object.defineProperty calls for each instance created.\n    if (Sub.options.props) {\n      initProps$1(Sub);\n    }\n    if (Sub.options.computed) {\n      initComputed$1(Sub);\n    }\n\n    // allow further extension/mixin/plugin usage\n    Sub.extend = Super.extend;\n    Sub.mixin = Super.mixin;\n    Sub.use = Super.use;\n\n    // create asset registers, so extended classes\n    // can have their private assets too.\n    ASSET_TYPES.forEach(function (type) {\n      Sub[type] = Super[type];\n    });\n    // enable recursive self-lookup\n    if (name) {\n      Sub.options.components[name] = Sub;\n    }\n\n    // keep a reference to the super options at extension time.\n    // later at instantiation we can check if Super's options have\n    // been updated.\n    Sub.superOptions = Super.options;\n    Sub.extendOptions = extendOptions;\n    Sub.sealedOptions = extend({}, Sub.options);\n\n    // cache constructor\n    cachedCtors[SuperId] = Sub;\n    return Sub\n  };\n}\n\nfunction initProps$1 (Comp) {\n  var props = Comp.options.props;\n  for (var key in props) {\n    proxy(Comp.prototype, \"_props\", key);\n  }\n}\n\nfunction initComputed$1 (Comp) {\n  var computed = Comp.options.computed;\n  for (var key in computed) {\n    defineComputed(Comp.prototype, key, computed[key]);\n  }\n}\n\n/*  */\n\nfunction initAssetRegisters (Vue) {\n  /**\n   * Create asset registration methods.\n   */\n  ASSET_TYPES.forEach(function (type) {\n    Vue[type] = function (\n      id,\n      definition\n    ) {\n      if (!definition) {\n        return this.options[type + 's'][id]\n      } else {\n        /* istanbul ignore if */\n        if ( true && type === 'component') {\n          validateComponentName(id);\n        }\n        if (type === 'component' && isPlainObject(definition)) {\n          definition.name = definition.name || id;\n          definition = this.options._base.extend(definition);\n        }\n        if (type === 'directive' && typeof definition === 'function') {\n          definition = { bind: definition, update: definition };\n        }\n        this.options[type + 's'][id] = definition;\n        return definition\n      }\n    };\n  });\n}\n\n/*  */\n\n\n\nfunction getComponentName (opts) {\n  return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n  if (Array.isArray(pattern)) {\n    return pattern.indexOf(name) > -1\n  } else if (typeof pattern === 'string') {\n    return pattern.split(',').indexOf(name) > -1\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name)\n  }\n  /* istanbul ignore next */\n  return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n  var cache = keepAliveInstance.cache;\n  var keys = keepAliveInstance.keys;\n  var _vnode = keepAliveInstance._vnode;\n  for (var key in cache) {\n    var cachedNode = cache[key];\n    if (cachedNode) {\n      var name = getComponentName(cachedNode.componentOptions);\n      if (name && !filter(name)) {\n        pruneCacheEntry(cache, key, keys, _vnode);\n      }\n    }\n  }\n}\n\nfunction pruneCacheEntry (\n  cache,\n  key,\n  keys,\n  current\n) {\n  var cached$$1 = cache[key];\n  if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n    cached$$1.componentInstance.$destroy();\n  }\n  cache[key] = null;\n  remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n  name: 'keep-alive',\n  abstract: true,\n\n  props: {\n    include: patternTypes,\n    exclude: patternTypes,\n    max: [String, Number]\n  },\n\n  created: function created () {\n    this.cache = Object.create(null);\n    this.keys = [];\n  },\n\n  destroyed: function destroyed () {\n    for (var key in this.cache) {\n      pruneCacheEntry(this.cache, key, this.keys);\n    }\n  },\n\n  mounted: function mounted () {\n    var this$1 = this;\n\n    this.$watch('include', function (val) {\n      pruneCache(this$1, function (name) { return matches(val, name); });\n    });\n    this.$watch('exclude', function (val) {\n      pruneCache(this$1, function (name) { return !matches(val, name); });\n    });\n  },\n\n  render: function render () {\n    var slot = this.$slots.default;\n    var vnode = getFirstComponentChild(slot);\n    var componentOptions = vnode && vnode.componentOptions;\n    if (componentOptions) {\n      // check pattern\n      var name = getComponentName(componentOptions);\n      var ref = this;\n      var include = ref.include;\n      var exclude = ref.exclude;\n      if (\n        // not included\n        (include && (!name || !matches(include, name))) ||\n        // excluded\n        (exclude && name && matches(exclude, name))\n      ) {\n        return vnode\n      }\n\n      var ref$1 = this;\n      var cache = ref$1.cache;\n      var keys = ref$1.keys;\n      var key = vnode.key == null\n        // same constructor may get registered as different local components\n        // so cid alone is not enough (#3269)\n        ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n        : vnode.key;\n      if (cache[key]) {\n        vnode.componentInstance = cache[key].componentInstance;\n        // make current key freshest\n        remove(keys, key);\n        keys.push(key);\n      } else {\n        cache[key] = vnode;\n        keys.push(key);\n        // prune oldest entry\n        if (this.max && keys.length > parseInt(this.max)) {\n          pruneCacheEntry(cache, keys[0], keys, this._vnode);\n        }\n      }\n\n      vnode.data.keepAlive = true;\n    }\n    return vnode || (slot && slot[0])\n  }\n};\n\nvar builtInComponents = {\n  KeepAlive: KeepAlive\n};\n\n/*  */\n\nfunction initGlobalAPI (Vue) {\n  // config\n  var configDef = {};\n  configDef.get = function () { return config; };\n  if (true) {\n    configDef.set = function () {\n      warn(\n        'Do not replace the Vue.config object, set individual fields instead.'\n      );\n    };\n  }\n  Object.defineProperty(Vue, 'config', configDef);\n\n  // exposed util methods.\n  // NOTE: these are not considered part of the public API - avoid relying on\n  // them unless you are aware of the risk.\n  Vue.util = {\n    warn: warn,\n    extend: extend,\n    mergeOptions: mergeOptions,\n    defineReactive: defineReactive$$1\n  };\n\n  Vue.set = set;\n  Vue.delete = del;\n  Vue.nextTick = nextTick;\n\n  // 2.6 explicit observable API\n  Vue.observable = function (obj) {\n    observe(obj);\n    return obj\n  };\n\n  Vue.options = Object.create(null);\n  ASSET_TYPES.forEach(function (type) {\n    Vue.options[type + 's'] = Object.create(null);\n  });\n\n  // this is used to identify the \"base\" constructor to extend all plain-object\n  // components with in Weex's multi-instance scenarios.\n  Vue.options._base = Vue;\n\n  extend(Vue.options.components, builtInComponents);\n\n  initUse(Vue);\n  initMixin$1(Vue);\n  initExtend(Vue);\n  initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n  get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n  get: function get () {\n    /* istanbul ignore next */\n    return this.$vnode && this.$vnode.ssrContext\n  }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n  value: FunctionalRenderContext\n});\n\nVue.version = '2.6.10';\n\n/*  */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n  return (\n    (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n    (attr === 'selected' && tag === 'option') ||\n    (attr === 'checked' && tag === 'input') ||\n    (attr === 'muted' && tag === 'video')\n  )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n  return isFalsyAttrValue(value) || value === 'false'\n    ? 'false'\n    // allow arbitrary string value for contenteditable\n    : key === 'contenteditable' && isValidContentEditableValue(value)\n      ? value\n      : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n  'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n  'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n  'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n  'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n  'required,reversed,scoped,seamless,selected,sortable,translate,' +\n  'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n  return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n  return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n  return val == null || val === false\n};\n\n/*  */\n\nfunction genClassForVnode (vnode) {\n  var data = vnode.data;\n  var parentNode = vnode;\n  var childNode = vnode;\n  while (isDef(childNode.componentInstance)) {\n    childNode = childNode.componentInstance._vnode;\n    if (childNode && childNode.data) {\n      data = mergeClassData(childNode.data, data);\n    }\n  }\n  while (isDef(parentNode = parentNode.parent)) {\n    if (parentNode && parentNode.data) {\n      data = mergeClassData(data, parentNode.data);\n    }\n  }\n  return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n  return {\n    staticClass: concat(child.staticClass, parent.staticClass),\n    class: isDef(child.class)\n      ? [child.class, parent.class]\n      : parent.class\n  }\n}\n\nfunction renderClass (\n  staticClass,\n  dynamicClass\n) {\n  if (isDef(staticClass) || isDef(dynamicClass)) {\n    return concat(staticClass, stringifyClass(dynamicClass))\n  }\n  /* istanbul ignore next */\n  return ''\n}\n\nfunction concat (a, b) {\n  return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n  if (Array.isArray(value)) {\n    return stringifyArray(value)\n  }\n  if (isObject(value)) {\n    return stringifyObject(value)\n  }\n  if (typeof value === 'string') {\n    return value\n  }\n  /* istanbul ignore next */\n  return ''\n}\n\nfunction stringifyArray (value) {\n  var res = '';\n  var stringified;\n  for (var i = 0, l = value.length; i < l; i++) {\n    if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n      if (res) { res += ' '; }\n      res += stringified;\n    }\n  }\n  return res\n}\n\nfunction stringifyObject (value) {\n  var res = '';\n  for (var key in value) {\n    if (value[key]) {\n      if (res) { res += ' '; }\n      res += key;\n    }\n  }\n  return res\n}\n\n/*  */\n\nvar namespaceMap = {\n  svg: 'http://www.w3.org/2000/svg',\n  math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n  'html,body,base,head,link,meta,style,title,' +\n  'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n  'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n  'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n  's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n  'embed,object,param,source,canvas,script,noscript,del,ins,' +\n  'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n  'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n  'output,progress,select,textarea,' +\n  'details,dialog,menu,menuitem,summary,' +\n  'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n  'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n  'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n  'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n  true\n);\n\nvar isReservedTag = function (tag) {\n  return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n  if (isSVG(tag)) {\n    return 'svg'\n  }\n  // basic support for MathML\n  // note it doesn't support other MathML elements being component roots\n  if (tag === 'math') {\n    return 'math'\n  }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n  /* istanbul ignore if */\n  if (!inBrowser) {\n    return true\n  }\n  if (isReservedTag(tag)) {\n    return false\n  }\n  tag = tag.toLowerCase();\n  /* istanbul ignore if */\n  if (unknownElementCache[tag] != null) {\n    return unknownElementCache[tag]\n  }\n  var el = document.createElement(tag);\n  if (tag.indexOf('-') > -1) {\n    // http://stackoverflow.com/a/28210364/1070244\n    return (unknownElementCache[tag] = (\n      el.constructor === window.HTMLUnknownElement ||\n      el.constructor === window.HTMLElement\n    ))\n  } else {\n    return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n  }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/*  */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n  if (typeof el === 'string') {\n    var selected = document.querySelector(el);\n    if (!selected) {\n       true && warn(\n        'Cannot find element: ' + el\n      );\n      return document.createElement('div')\n    }\n    return selected\n  } else {\n    return el\n  }\n}\n\n/*  */\n\nfunction createElement$1 (tagName, vnode) {\n  var elm = document.createElement(tagName);\n  if (tagName !== 'select') {\n    return elm\n  }\n  // false or null will remove the attribute but undefined will not\n  if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n    elm.setAttribute('multiple', 'multiple');\n  }\n  return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n  return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n  return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n  return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n  parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n  node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n  node.appendChild(child);\n}\n\nfunction parentNode (node) {\n  return node.parentNode\n}\n\nfunction nextSibling (node) {\n  return node.nextSibling\n}\n\nfunction tagName (node) {\n  return node.tagName\n}\n\nfunction setTextContent (node, text) {\n  node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n  node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n  createElement: createElement$1,\n  createElementNS: createElementNS,\n  createTextNode: createTextNode,\n  createComment: createComment,\n  insertBefore: insertBefore,\n  removeChild: removeChild,\n  appendChild: appendChild,\n  parentNode: parentNode,\n  nextSibling: nextSibling,\n  tagName: tagName,\n  setTextContent: setTextContent,\n  setStyleScope: setStyleScope\n});\n\n/*  */\n\nvar ref = {\n  create: function create (_, vnode) {\n    registerRef(vnode);\n  },\n  update: function update (oldVnode, vnode) {\n    if (oldVnode.data.ref !== vnode.data.ref) {\n      registerRef(oldVnode, true);\n      registerRef(vnode);\n    }\n  },\n  destroy: function destroy (vnode) {\n    registerRef(vnode, true);\n  }\n};\n\nfunction registerRef (vnode, isRemoval) {\n  var key = vnode.data.ref;\n  if (!isDef(key)) { return }\n\n  var vm = vnode.context;\n  var ref = vnode.componentInstance || vnode.elm;\n  var refs = vm.$refs;\n  if (isRemoval) {\n    if (Array.isArray(refs[key])) {\n      remove(refs[key], ref);\n    } else if (refs[key] === ref) {\n      refs[key] = undefined;\n    }\n  } else {\n    if (vnode.data.refInFor) {\n      if (!Array.isArray(refs[key])) {\n        refs[key] = [ref];\n      } else if (refs[key].indexOf(ref) < 0) {\n        // $flow-disable-line\n        refs[key].push(ref);\n      }\n    } else {\n      refs[key] = ref;\n    }\n  }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n  return (\n    a.key === b.key && (\n      (\n        a.tag === b.tag &&\n        a.isComment === b.isComment &&\n        isDef(a.data) === isDef(b.data) &&\n        sameInputType(a, b)\n      ) || (\n        isTrue(a.isAsyncPlaceholder) &&\n        a.asyncFactory === b.asyncFactory &&\n        isUndef(b.asyncFactory.error)\n      )\n    )\n  )\n}\n\nfunction sameInputType (a, b) {\n  if (a.tag !== 'input') { return true }\n  var i;\n  var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n  var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n  return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n  var i, key;\n  var map = {};\n  for (i = beginIdx; i <= endIdx; ++i) {\n    key = children[i].key;\n    if (isDef(key)) { map[key] = i; }\n  }\n  return map\n}\n\nfunction createPatchFunction (backend) {\n  var i, j;\n  var cbs = {};\n\n  var modules = backend.modules;\n  var nodeOps = backend.nodeOps;\n\n  for (i = 0; i < hooks.length; ++i) {\n    cbs[hooks[i]] = [];\n    for (j = 0; j < modules.length; ++j) {\n      if (isDef(modules[j][hooks[i]])) {\n        cbs[hooks[i]].push(modules[j][hooks[i]]);\n      }\n    }\n  }\n\n  function emptyNodeAt (elm) {\n    return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n  }\n\n  function createRmCb (childElm, listeners) {\n    function remove$$1 () {\n      if (--remove$$1.listeners === 0) {\n        removeNode(childElm);\n      }\n    }\n    remove$$1.listeners = listeners;\n    return remove$$1\n  }\n\n  function removeNode (el) {\n    var parent = nodeOps.parentNode(el);\n    // element may have already been removed due to v-html / v-text\n    if (isDef(parent)) {\n      nodeOps.removeChild(parent, el);\n    }\n  }\n\n  function isUnknownElement$$1 (vnode, inVPre) {\n    return (\n      !inVPre &&\n      !vnode.ns &&\n      !(\n        config.ignoredElements.length &&\n        config.ignoredElements.some(function (ignore) {\n          return isRegExp(ignore)\n            ? ignore.test(vnode.tag)\n            : ignore === vnode.tag\n        })\n      ) &&\n      config.isUnknownElement(vnode.tag)\n    )\n  }\n\n  var creatingElmInVPre = 0;\n\n  function createElm (\n    vnode,\n    insertedVnodeQueue,\n    parentElm,\n    refElm,\n    nested,\n    ownerArray,\n    index\n  ) {\n    if (isDef(vnode.elm) && isDef(ownerArray)) {\n      // This vnode was used in a previous render!\n      // now it's used as a new node, overwriting its elm would cause\n      // potential patch errors down the road when it's used as an insertion\n      // reference node. Instead, we clone the node on-demand before creating\n      // associated DOM element for it.\n      vnode = ownerArray[index] = cloneVNode(vnode);\n    }\n\n    vnode.isRootInsert = !nested; // for transition enter check\n    if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n      return\n    }\n\n    var data = vnode.data;\n    var children = vnode.children;\n    var tag = vnode.tag;\n    if (isDef(tag)) {\n      if (true) {\n        if (data && data.pre) {\n          creatingElmInVPre++;\n        }\n        if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n          warn(\n            'Unknown custom element: <' + tag + '> - did you ' +\n            'register the component correctly? For recursive components, ' +\n            'make sure to provide the \"name\" option.',\n            vnode.context\n          );\n        }\n      }\n\n      vnode.elm = vnode.ns\n        ? nodeOps.createElementNS(vnode.ns, tag)\n        : nodeOps.createElement(tag, vnode);\n      setScope(vnode);\n\n      /* istanbul ignore if */\n      {\n        createChildren(vnode, children, insertedVnodeQueue);\n        if (isDef(data)) {\n          invokeCreateHooks(vnode, insertedVnodeQueue);\n        }\n        insert(parentElm, vnode.elm, refElm);\n      }\n\n      if ( true && data && data.pre) {\n        creatingElmInVPre--;\n      }\n    } else if (isTrue(vnode.isComment)) {\n      vnode.elm = nodeOps.createComment(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    } else {\n      vnode.elm = nodeOps.createTextNode(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    }\n  }\n\n  function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i = vnode.data;\n    if (isDef(i)) {\n      var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n      if (isDef(i = i.hook) && isDef(i = i.init)) {\n        i(vnode, false /* hydrating */);\n      }\n      // after calling the init hook, if the vnode is a child component\n      // it should've created a child instance and mounted it. the child\n      // component also has set the placeholder vnode's elm.\n      // in that case we can just return the element and be done.\n      if (isDef(vnode.componentInstance)) {\n        initComponent(vnode, insertedVnodeQueue);\n        insert(parentElm, vnode.elm, refElm);\n        if (isTrue(isReactivated)) {\n          reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n        }\n        return true\n      }\n    }\n  }\n\n  function initComponent (vnode, insertedVnodeQueue) {\n    if (isDef(vnode.data.pendingInsert)) {\n      insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n      vnode.data.pendingInsert = null;\n    }\n    vnode.elm = vnode.componentInstance.$el;\n    if (isPatchable(vnode)) {\n      invokeCreateHooks(vnode, insertedVnodeQueue);\n      setScope(vnode);\n    } else {\n      // empty component root.\n      // skip all element-related modules except for ref (#3455)\n      registerRef(vnode);\n      // make sure to invoke the insert hook\n      insertedVnodeQueue.push(vnode);\n    }\n  }\n\n  function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i;\n    // hack for #4339: a reactivated component with inner transition\n    // does not trigger because the inner node's created hooks are not called\n    // again. It's not ideal to involve module-specific logic in here but\n    // there doesn't seem to be a better way to do it.\n    var innerNode = vnode;\n    while (innerNode.componentInstance) {\n      innerNode = innerNode.componentInstance._vnode;\n      if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n        for (i = 0; i < cbs.activate.length; ++i) {\n          cbs.activate[i](emptyNode, innerNode);\n        }\n        insertedVnodeQueue.push(innerNode);\n        break\n      }\n    }\n    // unlike a newly created component,\n    // a reactivated keep-alive component doesn't insert itself\n    insert(parentElm, vnode.elm, refElm);\n  }\n\n  function insert (parent, elm, ref$$1) {\n    if (isDef(parent)) {\n      if (isDef(ref$$1)) {\n        if (nodeOps.parentNode(ref$$1) === parent) {\n          nodeOps.insertBefore(parent, elm, ref$$1);\n        }\n      } else {\n        nodeOps.appendChild(parent, elm);\n      }\n    }\n  }\n\n  function createChildren (vnode, children, insertedVnodeQueue) {\n    if (Array.isArray(children)) {\n      if (true) {\n        checkDuplicateKeys(children);\n      }\n      for (var i = 0; i < children.length; ++i) {\n        createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n      }\n    } else if (isPrimitive(vnode.text)) {\n      nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n    }\n  }\n\n  function isPatchable (vnode) {\n    while (vnode.componentInstance) {\n      vnode = vnode.componentInstance._vnode;\n    }\n    return isDef(vnode.tag)\n  }\n\n  function invokeCreateHooks (vnode, insertedVnodeQueue) {\n    for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n      cbs.create[i$1](emptyNode, vnode);\n    }\n    i = vnode.data.hook; // Reuse variable\n    if (isDef(i)) {\n      if (isDef(i.create)) { i.create(emptyNode, vnode); }\n      if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n    }\n  }\n\n  // set scope id attribute for scoped CSS.\n  // this is implemented as a special case to avoid the overhead\n  // of going through the normal attribute patching process.\n  function setScope (vnode) {\n    var i;\n    if (isDef(i = vnode.fnScopeId)) {\n      nodeOps.setStyleScope(vnode.elm, i);\n    } else {\n      var ancestor = vnode;\n      while (ancestor) {\n        if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n          nodeOps.setStyleScope(vnode.elm, i);\n        }\n        ancestor = ancestor.parent;\n      }\n    }\n    // for slot content they should also get the scopeId from the host instance.\n    if (isDef(i = activeInstance) &&\n      i !== vnode.context &&\n      i !== vnode.fnContext &&\n      isDef(i = i.$options._scopeId)\n    ) {\n      nodeOps.setStyleScope(vnode.elm, i);\n    }\n  }\n\n  function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n    }\n  }\n\n  function invokeDestroyHook (vnode) {\n    var i, j;\n    var data = vnode.data;\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n      for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n    }\n    if (isDef(i = vnode.children)) {\n      for (j = 0; j < vnode.children.length; ++j) {\n        invokeDestroyHook(vnode.children[j]);\n      }\n    }\n  }\n\n  function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      var ch = vnodes[startIdx];\n      if (isDef(ch)) {\n        if (isDef(ch.tag)) {\n          removeAndInvokeRemoveHook(ch);\n          invokeDestroyHook(ch);\n        } else { // Text node\n          removeNode(ch.elm);\n        }\n      }\n    }\n  }\n\n  function removeAndInvokeRemoveHook (vnode, rm) {\n    if (isDef(rm) || isDef(vnode.data)) {\n      var i;\n      var listeners = cbs.remove.length + 1;\n      if (isDef(rm)) {\n        // we have a recursively passed down rm callback\n        // increase the listeners count\n        rm.listeners += listeners;\n      } else {\n        // directly removing\n        rm = createRmCb(vnode.elm, listeners);\n      }\n      // recursively invoke hooks on child component root node\n      if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n        removeAndInvokeRemoveHook(i, rm);\n      }\n      for (i = 0; i < cbs.remove.length; ++i) {\n        cbs.remove[i](vnode, rm);\n      }\n      if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n        i(vnode, rm);\n      } else {\n        rm();\n      }\n    } else {\n      removeNode(vnode.elm);\n    }\n  }\n\n  function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n    var oldStartIdx = 0;\n    var newStartIdx = 0;\n    var oldEndIdx = oldCh.length - 1;\n    var oldStartVnode = oldCh[0];\n    var oldEndVnode = oldCh[oldEndIdx];\n    var newEndIdx = newCh.length - 1;\n    var newStartVnode = newCh[0];\n    var newEndVnode = newCh[newEndIdx];\n    var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n    // removeOnly is a special flag used only by <transition-group>\n    // to ensure removed elements stay in correct relative positions\n    // during leaving transitions\n    var canMove = !removeOnly;\n\n    if (true) {\n      checkDuplicateKeys(newCh);\n    }\n\n    while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n      if (isUndef(oldStartVnode)) {\n        oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n      } else if (isUndef(oldEndVnode)) {\n        oldEndVnode = oldCh[--oldEndIdx];\n      } else if (sameVnode(oldStartVnode, newStartVnode)) {\n        patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n        oldStartVnode = oldCh[++oldStartIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else if (sameVnode(oldEndVnode, newEndVnode)) {\n        patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n        patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n        canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n        oldStartVnode = oldCh[++oldStartIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n        patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n        canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else {\n        if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n        idxInOld = isDef(newStartVnode.key)\n          ? oldKeyToIdx[newStartVnode.key]\n          : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n        if (isUndef(idxInOld)) { // New element\n          createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n        } else {\n          vnodeToMove = oldCh[idxInOld];\n          if (sameVnode(vnodeToMove, newStartVnode)) {\n            patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n            oldCh[idxInOld] = undefined;\n            canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n          } else {\n            // same key but different element. treat as new element\n            createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n          }\n        }\n        newStartVnode = newCh[++newStartIdx];\n      }\n    }\n    if (oldStartIdx > oldEndIdx) {\n      refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n      addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n    } else if (newStartIdx > newEndIdx) {\n      removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n    }\n  }\n\n  function checkDuplicateKeys (children) {\n    var seenKeys = {};\n    for (var i = 0; i < children.length; i++) {\n      var vnode = children[i];\n      var key = vnode.key;\n      if (isDef(key)) {\n        if (seenKeys[key]) {\n          warn(\n            (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n            vnode.context\n          );\n        } else {\n          seenKeys[key] = true;\n        }\n      }\n    }\n  }\n\n  function findIdxInOld (node, oldCh, start, end) {\n    for (var i = start; i < end; i++) {\n      var c = oldCh[i];\n      if (isDef(c) && sameVnode(node, c)) { return i }\n    }\n  }\n\n  function patchVnode (\n    oldVnode,\n    vnode,\n    insertedVnodeQueue,\n    ownerArray,\n    index,\n    removeOnly\n  ) {\n    if (oldVnode === vnode) {\n      return\n    }\n\n    if (isDef(vnode.elm) && isDef(ownerArray)) {\n      // clone reused vnode\n      vnode = ownerArray[index] = cloneVNode(vnode);\n    }\n\n    var elm = vnode.elm = oldVnode.elm;\n\n    if (isTrue(oldVnode.isAsyncPlaceholder)) {\n      if (isDef(vnode.asyncFactory.resolved)) {\n        hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n      } else {\n        vnode.isAsyncPlaceholder = true;\n      }\n      return\n    }\n\n    // reuse element for static trees.\n    // note we only do this if the vnode is cloned -\n    // if the new node is not cloned it means the render functions have been\n    // reset by the hot-reload-api and we need to do a proper re-render.\n    if (isTrue(vnode.isStatic) &&\n      isTrue(oldVnode.isStatic) &&\n      vnode.key === oldVnode.key &&\n      (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n    ) {\n      vnode.componentInstance = oldVnode.componentInstance;\n      return\n    }\n\n    var i;\n    var data = vnode.data;\n    if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n      i(oldVnode, vnode);\n    }\n\n    var oldCh = oldVnode.children;\n    var ch = vnode.children;\n    if (isDef(data) && isPatchable(vnode)) {\n      for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n      if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n    }\n    if (isUndef(vnode.text)) {\n      if (isDef(oldCh) && isDef(ch)) {\n        if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n      } else if (isDef(ch)) {\n        if (true) {\n          checkDuplicateKeys(ch);\n        }\n        if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n        addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n      } else if (isDef(oldCh)) {\n        removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n      } else if (isDef(oldVnode.text)) {\n        nodeOps.setTextContent(elm, '');\n      }\n    } else if (oldVnode.text !== vnode.text) {\n      nodeOps.setTextContent(elm, vnode.text);\n    }\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n    }\n  }\n\n  function invokeInsertHook (vnode, queue, initial) {\n    // delay insert hooks for component root nodes, invoke them after the\n    // element is really inserted\n    if (isTrue(initial) && isDef(vnode.parent)) {\n      vnode.parent.data.pendingInsert = queue;\n    } else {\n      for (var i = 0; i < queue.length; ++i) {\n        queue[i].data.hook.insert(queue[i]);\n      }\n    }\n  }\n\n  var hydrationBailed = false;\n  // list of modules that can skip create hook during hydration because they\n  // are already rendered on the client or has no need for initialization\n  // Note: style is excluded because it relies on initial clone for future\n  // deep updates (#7063).\n  var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n  // Note: this is a browser-only function so we can assume elms are DOM nodes.\n  function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n    var i;\n    var tag = vnode.tag;\n    var data = vnode.data;\n    var children = vnode.children;\n    inVPre = inVPre || (data && data.pre);\n    vnode.elm = elm;\n\n    if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n      vnode.isAsyncPlaceholder = true;\n      return true\n    }\n    // assert node match\n    if (true) {\n      if (!assertNodeMatch(elm, vnode, inVPre)) {\n        return false\n      }\n    }\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n      if (isDef(i = vnode.componentInstance)) {\n        // child component. it should have hydrated its own tree.\n        initComponent(vnode, insertedVnodeQueue);\n        return true\n      }\n    }\n    if (isDef(tag)) {\n      if (isDef(children)) {\n        // empty element, allow client to pick up and populate children\n        if (!elm.hasChildNodes()) {\n          createChildren(vnode, children, insertedVnodeQueue);\n        } else {\n          // v-html and domProps: innerHTML\n          if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n            if (i !== elm.innerHTML) {\n              /* istanbul ignore if */\n              if ( true &&\n                typeof console !== 'undefined' &&\n                !hydrationBailed\n              ) {\n                hydrationBailed = true;\n                console.warn('Parent: ', elm);\n                console.warn('server innerHTML: ', i);\n                console.warn('client innerHTML: ', elm.innerHTML);\n              }\n              return false\n            }\n          } else {\n            // iterate and compare children lists\n            var childrenMatch = true;\n            var childNode = elm.firstChild;\n            for (var i$1 = 0; i$1 < children.length; i$1++) {\n              if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n                childrenMatch = false;\n                break\n              }\n              childNode = childNode.nextSibling;\n            }\n            // if childNode is not null, it means the actual childNodes list is\n            // longer than the virtual children list.\n            if (!childrenMatch || childNode) {\n              /* istanbul ignore if */\n              if ( true &&\n                typeof console !== 'undefined' &&\n                !hydrationBailed\n              ) {\n                hydrationBailed = true;\n                console.warn('Parent: ', elm);\n                console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n              }\n              return false\n            }\n          }\n        }\n      }\n      if (isDef(data)) {\n        var fullInvoke = false;\n        for (var key in data) {\n          if (!isRenderedModule(key)) {\n            fullInvoke = true;\n            invokeCreateHooks(vnode, insertedVnodeQueue);\n            break\n          }\n        }\n        if (!fullInvoke && data['class']) {\n          // ensure collecting deps for deep class bindings for future updates\n          traverse(data['class']);\n        }\n      }\n    } else if (elm.data !== vnode.text) {\n      elm.data = vnode.text;\n    }\n    return true\n  }\n\n  function assertNodeMatch (node, vnode, inVPre) {\n    if (isDef(vnode.tag)) {\n      return vnode.tag.indexOf('vue-component') === 0 || (\n        !isUnknownElement$$1(vnode, inVPre) &&\n        vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n      )\n    } else {\n      return node.nodeType === (vnode.isComment ? 8 : 3)\n    }\n  }\n\n  return function patch (oldVnode, vnode, hydrating, removeOnly) {\n    if (isUndef(vnode)) {\n      if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n      return\n    }\n\n    var isInitialPatch = false;\n    var insertedVnodeQueue = [];\n\n    if (isUndef(oldVnode)) {\n      // empty mount (likely as component), create new root element\n      isInitialPatch = true;\n      createElm(vnode, insertedVnodeQueue);\n    } else {\n      var isRealElement = isDef(oldVnode.nodeType);\n      if (!isRealElement && sameVnode(oldVnode, vnode)) {\n        // patch existing root node\n        patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n      } else {\n        if (isRealElement) {\n          // mounting to a real element\n          // check if this is server-rendered content and if we can perform\n          // a successful hydration.\n          if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n            oldVnode.removeAttribute(SSR_ATTR);\n            hydrating = true;\n          }\n          if (isTrue(hydrating)) {\n            if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n              invokeInsertHook(vnode, insertedVnodeQueue, true);\n              return oldVnode\n            } else if (true) {\n              warn(\n                'The client-side rendered virtual DOM tree is not matching ' +\n                'server-rendered content. This is likely caused by incorrect ' +\n                'HTML markup, for example nesting block-level elements inside ' +\n                '<p>, or missing <tbody>. Bailing hydration and performing ' +\n                'full client-side render.'\n              );\n            }\n          }\n          // either not server-rendered, or hydration failed.\n          // create an empty node and replace it\n          oldVnode = emptyNodeAt(oldVnode);\n        }\n\n        // replacing existing element\n        var oldElm = oldVnode.elm;\n        var parentElm = nodeOps.parentNode(oldElm);\n\n        // create new node\n        createElm(\n          vnode,\n          insertedVnodeQueue,\n          // extremely rare edge case: do not insert if old element is in a\n          // leaving transition. Only happens when combining transition +\n          // keep-alive + HOCs. (#4590)\n          oldElm._leaveCb ? null : parentElm,\n          nodeOps.nextSibling(oldElm)\n        );\n\n        // update parent placeholder node element, recursively\n        if (isDef(vnode.parent)) {\n          var ancestor = vnode.parent;\n          var patchable = isPatchable(vnode);\n          while (ancestor) {\n            for (var i = 0; i < cbs.destroy.length; ++i) {\n              cbs.destroy[i](ancestor);\n            }\n            ancestor.elm = vnode.elm;\n            if (patchable) {\n              for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n                cbs.create[i$1](emptyNode, ancestor);\n              }\n              // #6513\n              // invoke insert hooks that may have been merged by create hooks.\n              // e.g. for directives that uses the \"inserted\" hook.\n              var insert = ancestor.data.hook.insert;\n              if (insert.merged) {\n                // start at index 1 to avoid re-invoking component mounted hook\n                for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n                  insert.fns[i$2]();\n                }\n              }\n            } else {\n              registerRef(ancestor);\n            }\n            ancestor = ancestor.parent;\n          }\n        }\n\n        // destroy old node\n        if (isDef(parentElm)) {\n          removeVnodes(parentElm, [oldVnode], 0, 0);\n        } else if (isDef(oldVnode.tag)) {\n          invokeDestroyHook(oldVnode);\n        }\n      }\n    }\n\n    invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n    return vnode.elm\n  }\n}\n\n/*  */\n\nvar directives = {\n  create: updateDirectives,\n  update: updateDirectives,\n  destroy: function unbindDirectives (vnode) {\n    updateDirectives(vnode, emptyNode);\n  }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n  if (oldVnode.data.directives || vnode.data.directives) {\n    _update(oldVnode, vnode);\n  }\n}\n\nfunction _update (oldVnode, vnode) {\n  var isCreate = oldVnode === emptyNode;\n  var isDestroy = vnode === emptyNode;\n  var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n  var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n  var dirsWithInsert = [];\n  var dirsWithPostpatch = [];\n\n  var key, oldDir, dir;\n  for (key in newDirs) {\n    oldDir = oldDirs[key];\n    dir = newDirs[key];\n    if (!oldDir) {\n      // new directive, bind\n      callHook$1(dir, 'bind', vnode, oldVnode);\n      if (dir.def && dir.def.inserted) {\n        dirsWithInsert.push(dir);\n      }\n    } else {\n      // existing directive, update\n      dir.oldValue = oldDir.value;\n      dir.oldArg = oldDir.arg;\n      callHook$1(dir, 'update', vnode, oldVnode);\n      if (dir.def && dir.def.componentUpdated) {\n        dirsWithPostpatch.push(dir);\n      }\n    }\n  }\n\n  if (dirsWithInsert.length) {\n    var callInsert = function () {\n      for (var i = 0; i < dirsWithInsert.length; i++) {\n        callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n      }\n    };\n    if (isCreate) {\n      mergeVNodeHook(vnode, 'insert', callInsert);\n    } else {\n      callInsert();\n    }\n  }\n\n  if (dirsWithPostpatch.length) {\n    mergeVNodeHook(vnode, 'postpatch', function () {\n      for (var i = 0; i < dirsWithPostpatch.length; i++) {\n        callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n      }\n    });\n  }\n\n  if (!isCreate) {\n    for (key in oldDirs) {\n      if (!newDirs[key]) {\n        // no longer present, unbind\n        callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n      }\n    }\n  }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n  dirs,\n  vm\n) {\n  var res = Object.create(null);\n  if (!dirs) {\n    // $flow-disable-line\n    return res\n  }\n  var i, dir;\n  for (i = 0; i < dirs.length; i++) {\n    dir = dirs[i];\n    if (!dir.modifiers) {\n      // $flow-disable-line\n      dir.modifiers = emptyModifiers;\n    }\n    res[getRawDirName(dir)] = dir;\n    dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n  }\n  // $flow-disable-line\n  return res\n}\n\nfunction getRawDirName (dir) {\n  return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n  var fn = dir.def && dir.def[hook];\n  if (fn) {\n    try {\n      fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n    } catch (e) {\n      handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n    }\n  }\n}\n\nvar baseModules = [\n  ref,\n  directives\n];\n\n/*  */\n\nfunction updateAttrs (oldVnode, vnode) {\n  var opts = vnode.componentOptions;\n  if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n    return\n  }\n  if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n    return\n  }\n  var key, cur, old;\n  var elm = vnode.elm;\n  var oldAttrs = oldVnode.data.attrs || {};\n  var attrs = vnode.data.attrs || {};\n  // clone observed objects, as the user probably wants to mutate it\n  if (isDef(attrs.__ob__)) {\n    attrs = vnode.data.attrs = extend({}, attrs);\n  }\n\n  for (key in attrs) {\n    cur = attrs[key];\n    old = oldAttrs[key];\n    if (old !== cur) {\n      setAttr(elm, key, cur);\n    }\n  }\n  // #4391: in IE9, setting type can reset value for input[type=radio]\n  // #6666: IE/Edge forces progress value down to 1 before setting a max\n  /* istanbul ignore if */\n  if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n    setAttr(elm, 'value', attrs.value);\n  }\n  for (key in oldAttrs) {\n    if (isUndef(attrs[key])) {\n      if (isXlink(key)) {\n        elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n      } else if (!isEnumeratedAttr(key)) {\n        elm.removeAttribute(key);\n      }\n    }\n  }\n}\n\nfunction setAttr (el, key, value) {\n  if (el.tagName.indexOf('-') > -1) {\n    baseSetAttr(el, key, value);\n  } else if (isBooleanAttr(key)) {\n    // set attribute for blank value\n    // e.g. <option disabled>Select one</option>\n    if (isFalsyAttrValue(value)) {\n      el.removeAttribute(key);\n    } else {\n      // technically allowfullscreen is a boolean attribute for <iframe>,\n      // but Flash expects a value of \"true\" when used on <embed> tag\n      value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n        ? 'true'\n        : key;\n      el.setAttribute(key, value);\n    }\n  } else if (isEnumeratedAttr(key)) {\n    el.setAttribute(key, convertEnumeratedValue(key, value));\n  } else if (isXlink(key)) {\n    if (isFalsyAttrValue(value)) {\n      el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    baseSetAttr(el, key, value);\n  }\n}\n\nfunction baseSetAttr (el, key, value) {\n  if (isFalsyAttrValue(value)) {\n    el.removeAttribute(key);\n  } else {\n    // #7138: IE10 & 11 fires input event when setting placeholder on\n    // <textarea>... block the first input event and remove the blocker\n    // immediately.\n    /* istanbul ignore if */\n    if (\n      isIE && !isIE9 &&\n      el.tagName === 'TEXTAREA' &&\n      key === 'placeholder' && value !== '' && !el.__ieph\n    ) {\n      var blocker = function (e) {\n        e.stopImmediatePropagation();\n        el.removeEventListener('input', blocker);\n      };\n      el.addEventListener('input', blocker);\n      // $flow-disable-line\n      el.__ieph = true; /* IE placeholder patched */\n    }\n    el.setAttribute(key, value);\n  }\n}\n\nvar attrs = {\n  create: updateAttrs,\n  update: updateAttrs\n};\n\n/*  */\n\nfunction updateClass (oldVnode, vnode) {\n  var el = vnode.elm;\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n  if (\n    isUndef(data.staticClass) &&\n    isUndef(data.class) && (\n      isUndef(oldData) || (\n        isUndef(oldData.staticClass) &&\n        isUndef(oldData.class)\n      )\n    )\n  ) {\n    return\n  }\n\n  var cls = genClassForVnode(vnode);\n\n  // handle transition classes\n  var transitionClass = el._transitionClasses;\n  if (isDef(transitionClass)) {\n    cls = concat(cls, stringifyClass(transitionClass));\n  }\n\n  // set the class\n  if (cls !== el._prevClass) {\n    el.setAttribute('class', cls);\n    el._prevClass = cls;\n  }\n}\n\nvar klass = {\n  create: updateClass,\n  update: updateClass\n};\n\n/*  */\n\n/*  */\n\n/*  */\n\n/*  */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/*  */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n  /* istanbul ignore if */\n  if (isDef(on[RANGE_TOKEN])) {\n    // IE input[type=range] only supports `change` event\n    var event = isIE ? 'change' : 'input';\n    on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n    delete on[RANGE_TOKEN];\n  }\n  // This was originally intended to fix #4521 but no longer necessary\n  // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n  /* istanbul ignore if */\n  if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n    on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n    delete on[CHECKBOX_RADIO_TOKEN];\n  }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n  var _target = target$1; // save current target element in closure\n  return function onceHandler () {\n    var res = handler.apply(null, arguments);\n    if (res !== null) {\n      remove$2(event, onceHandler, capture, _target);\n    }\n  }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n  name,\n  handler,\n  capture,\n  passive\n) {\n  // async edge case #6566: inner click event triggers patch, event handler\n  // attached to outer element during patch, and triggered again. This\n  // happens because browsers fire microtask ticks between event propagation.\n  // the solution is simple: we save the timestamp when a handler is attached,\n  // and the handler would only fire if the event passed to it was fired\n  // AFTER it was attached.\n  if (useMicrotaskFix) {\n    var attachedTimestamp = currentFlushTimestamp;\n    var original = handler;\n    handler = original._wrapper = function (e) {\n      if (\n        // no bubbling, should always fire.\n        // this is just a safety net in case event.timeStamp is unreliable in\n        // certain weird environments...\n        e.target === e.currentTarget ||\n        // event is fired after handler attachment\n        e.timeStamp >= attachedTimestamp ||\n        // bail for environments that have buggy event.timeStamp implementations\n        // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n        // #9681 QtWebEngine event.timeStamp is negative value\n        e.timeStamp <= 0 ||\n        // #9448 bail if event is fired in another document in a multi-page\n        // electron/nw.js app, since event.timeStamp will be using a different\n        // starting reference\n        e.target.ownerDocument !== document\n      ) {\n        return original.apply(this, arguments)\n      }\n    };\n  }\n  target$1.addEventListener(\n    name,\n    handler,\n    supportsPassive\n      ? { capture: capture, passive: passive }\n      : capture\n  );\n}\n\nfunction remove$2 (\n  name,\n  handler,\n  capture,\n  _target\n) {\n  (_target || target$1).removeEventListener(\n    name,\n    handler._wrapper || handler,\n    capture\n  );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n  if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n    return\n  }\n  var on = vnode.data.on || {};\n  var oldOn = oldVnode.data.on || {};\n  target$1 = vnode.elm;\n  normalizeEvents(on);\n  updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n  target$1 = undefined;\n}\n\nvar events = {\n  create: updateDOMListeners,\n  update: updateDOMListeners\n};\n\n/*  */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n  if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n    return\n  }\n  var key, cur;\n  var elm = vnode.elm;\n  var oldProps = oldVnode.data.domProps || {};\n  var props = vnode.data.domProps || {};\n  // clone observed objects, as the user probably wants to mutate it\n  if (isDef(props.__ob__)) {\n    props = vnode.data.domProps = extend({}, props);\n  }\n\n  for (key in oldProps) {\n    if (!(key in props)) {\n      elm[key] = '';\n    }\n  }\n\n  for (key in props) {\n    cur = props[key];\n    // ignore children if the node has textContent or innerHTML,\n    // as these will throw away existing DOM nodes and cause removal errors\n    // on subsequent patches (#3360)\n    if (key === 'textContent' || key === 'innerHTML') {\n      if (vnode.children) { vnode.children.length = 0; }\n      if (cur === oldProps[key]) { continue }\n      // #6601 work around Chrome version <= 55 bug where single textNode\n      // replaced by innerHTML/textContent retains its parentNode property\n      if (elm.childNodes.length === 1) {\n        elm.removeChild(elm.childNodes[0]);\n      }\n    }\n\n    if (key === 'value' && elm.tagName !== 'PROGRESS') {\n      // store value as _value as well since\n      // non-string values will be stringified\n      elm._value = cur;\n      // avoid resetting cursor position when value is the same\n      var strCur = isUndef(cur) ? '' : String(cur);\n      if (shouldUpdateValue(elm, strCur)) {\n        elm.value = strCur;\n      }\n    } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n      // IE doesn't support innerHTML for SVG elements\n      svgContainer = svgContainer || document.createElement('div');\n      svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n      var svg = svgContainer.firstChild;\n      while (elm.firstChild) {\n        elm.removeChild(elm.firstChild);\n      }\n      while (svg.firstChild) {\n        elm.appendChild(svg.firstChild);\n      }\n    } else if (\n      // skip the update if old and new VDOM state is the same.\n      // `value` is handled separately because the DOM value may be temporarily\n      // out of sync with VDOM state due to focus, composition and modifiers.\n      // This  #4521 by skipping the unnecesarry `checked` update.\n      cur !== oldProps[key]\n    ) {\n      // some property updates can throw\n      // e.g. `value` on <progress> w/ non-finite value\n      try {\n        elm[key] = cur;\n      } catch (e) {}\n    }\n  }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n  return (!elm.composing && (\n    elm.tagName === 'OPTION' ||\n    isNotInFocusAndDirty(elm, checkVal) ||\n    isDirtyWithModifiers(elm, checkVal)\n  ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n  // return true when textbox (.number and .trim) loses focus and its value is\n  // not equal to the updated value\n  var notInFocus = true;\n  // #6157\n  // work around IE bug when accessing document.activeElement in an iframe\n  try { notInFocus = document.activeElement !== elm; } catch (e) {}\n  return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n  var value = elm.value;\n  var modifiers = elm._vModifiers; // injected by v-model runtime\n  if (isDef(modifiers)) {\n    if (modifiers.number) {\n      return toNumber(value) !== toNumber(newVal)\n    }\n    if (modifiers.trim) {\n      return value.trim() !== newVal.trim()\n    }\n  }\n  return value !== newVal\n}\n\nvar domProps = {\n  create: updateDOMProps,\n  update: updateDOMProps\n};\n\n/*  */\n\nvar parseStyleText = cached(function (cssText) {\n  var res = {};\n  var listDelimiter = /;(?![^(]*\\))/g;\n  var propertyDelimiter = /:(.+)/;\n  cssText.split(listDelimiter).forEach(function (item) {\n    if (item) {\n      var tmp = item.split(propertyDelimiter);\n      tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n  var style = normalizeStyleBinding(data.style);\n  // static style is pre-processed into an object during compilation\n  // and is always a fresh object, so it's safe to merge into it\n  return data.staticStyle\n    ? extend(data.staticStyle, style)\n    : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n  if (Array.isArray(bindingStyle)) {\n    return toObject(bindingStyle)\n  }\n  if (typeof bindingStyle === 'string') {\n    return parseStyleText(bindingStyle)\n  }\n  return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n  var res = {};\n  var styleData;\n\n  if (checkChild) {\n    var childNode = vnode;\n    while (childNode.componentInstance) {\n      childNode = childNode.componentInstance._vnode;\n      if (\n        childNode && childNode.data &&\n        (styleData = normalizeStyleData(childNode.data))\n      ) {\n        extend(res, styleData);\n      }\n    }\n  }\n\n  if ((styleData = normalizeStyleData(vnode.data))) {\n    extend(res, styleData);\n  }\n\n  var parentNode = vnode;\n  while ((parentNode = parentNode.parent)) {\n    if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n      extend(res, styleData);\n    }\n  }\n  return res\n}\n\n/*  */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n  /* istanbul ignore if */\n  if (cssVarRE.test(name)) {\n    el.style.setProperty(name, val);\n  } else if (importantRE.test(val)) {\n    el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n  } else {\n    var normalizedName = normalize(name);\n    if (Array.isArray(val)) {\n      // Support values array created by autoprefixer, e.g.\n      // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n      // Set them one by one, and the browser will only set those it can recognize\n      for (var i = 0, len = val.length; i < len; i++) {\n        el.style[normalizedName] = val[i];\n      }\n    } else {\n      el.style[normalizedName] = val;\n    }\n  }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n  emptyStyle = emptyStyle || document.createElement('div').style;\n  prop = camelize(prop);\n  if (prop !== 'filter' && (prop in emptyStyle)) {\n    return prop\n  }\n  var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n  for (var i = 0; i < vendorNames.length; i++) {\n    var name = vendorNames[i] + capName;\n    if (name in emptyStyle) {\n      return name\n    }\n  }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n\n  if (isUndef(data.staticStyle) && isUndef(data.style) &&\n    isUndef(oldData.staticStyle) && isUndef(oldData.style)\n  ) {\n    return\n  }\n\n  var cur, name;\n  var el = vnode.elm;\n  var oldStaticStyle = oldData.staticStyle;\n  var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n  // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n  var oldStyle = oldStaticStyle || oldStyleBinding;\n\n  var style = normalizeStyleBinding(vnode.data.style) || {};\n\n  // store normalized style under a different key for next diff\n  // make sure to clone it if it's reactive, since the user likely wants\n  // to mutate it.\n  vnode.data.normalizedStyle = isDef(style.__ob__)\n    ? extend({}, style)\n    : style;\n\n  var newStyle = getStyle(vnode, true);\n\n  for (name in oldStyle) {\n    if (isUndef(newStyle[name])) {\n      setProp(el, name, '');\n    }\n  }\n  for (name in newStyle) {\n    cur = newStyle[name];\n    if (cur !== oldStyle[name]) {\n      // ie9 setting to null has no effect, must use empty string\n      setProp(el, name, cur == null ? '' : cur);\n    }\n  }\n}\n\nvar style = {\n  create: updateStyle,\n  update: updateStyle\n};\n\n/*  */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return\n  }\n\n  /* istanbul ignore else */\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n    } else {\n      el.classList.add(cls);\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n    if (cur.indexOf(' ' + cls + ' ') < 0) {\n      el.setAttribute('class', (cur + cls).trim());\n    }\n  }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return\n  }\n\n  /* istanbul ignore else */\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n    } else {\n      el.classList.remove(cls);\n    }\n    if (!el.classList.length) {\n      el.removeAttribute('class');\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n    var tar = ' ' + cls + ' ';\n    while (cur.indexOf(tar) >= 0) {\n      cur = cur.replace(tar, ' ');\n    }\n    cur = cur.trim();\n    if (cur) {\n      el.setAttribute('class', cur);\n    } else {\n      el.removeAttribute('class');\n    }\n  }\n}\n\n/*  */\n\nfunction resolveTransition (def$$1) {\n  if (!def$$1) {\n    return\n  }\n  /* istanbul ignore else */\n  if (typeof def$$1 === 'object') {\n    var res = {};\n    if (def$$1.css !== false) {\n      extend(res, autoCssTransition(def$$1.name || 'v'));\n    }\n    extend(res, def$$1);\n    return res\n  } else if (typeof def$$1 === 'string') {\n    return autoCssTransition(def$$1)\n  }\n}\n\nvar autoCssTransition = cached(function (name) {\n  return {\n    enterClass: (name + \"-enter\"),\n    enterToClass: (name + \"-enter-to\"),\n    enterActiveClass: (name + \"-enter-active\"),\n    leaveClass: (name + \"-leave\"),\n    leaveToClass: (name + \"-leave-to\"),\n    leaveActiveClass: (name + \"-leave-active\")\n  }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n  /* istanbul ignore if */\n  if (window.ontransitionend === undefined &&\n    window.onwebkittransitionend !== undefined\n  ) {\n    transitionProp = 'WebkitTransition';\n    transitionEndEvent = 'webkitTransitionEnd';\n  }\n  if (window.onanimationend === undefined &&\n    window.onwebkitanimationend !== undefined\n  ) {\n    animationProp = 'WebkitAnimation';\n    animationEndEvent = 'webkitAnimationEnd';\n  }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n  ? window.requestAnimationFrame\n    ? window.requestAnimationFrame.bind(window)\n    : setTimeout\n  : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n  raf(function () {\n    raf(fn);\n  });\n}\n\nfunction addTransitionClass (el, cls) {\n  var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n  if (transitionClasses.indexOf(cls) < 0) {\n    transitionClasses.push(cls);\n    addClass(el, cls);\n  }\n}\n\nfunction removeTransitionClass (el, cls) {\n  if (el._transitionClasses) {\n    remove(el._transitionClasses, cls);\n  }\n  removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n  el,\n  expectedType,\n  cb\n) {\n  var ref = getTransitionInfo(el, expectedType);\n  var type = ref.type;\n  var timeout = ref.timeout;\n  var propCount = ref.propCount;\n  if (!type) { return cb() }\n  var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n  var ended = 0;\n  var end = function () {\n    el.removeEventListener(event, onEnd);\n    cb();\n  };\n  var onEnd = function (e) {\n    if (e.target === el) {\n      if (++ended >= propCount) {\n        end();\n      }\n    }\n  };\n  setTimeout(function () {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n  var styles = window.getComputedStyle(el);\n  // JSDOM may return undefined for transition properties\n  var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n  var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n  var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n  var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n  var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n  var type;\n  var timeout = 0;\n  var propCount = 0;\n  /* istanbul ignore if */\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0\n      ? transitionTimeout > animationTimeout\n        ? TRANSITION\n        : ANIMATION\n      : null;\n    propCount = type\n      ? type === TRANSITION\n        ? transitionDurations.length\n        : animationDurations.length\n      : 0;\n  }\n  var hasTransform =\n    type === TRANSITION &&\n    transformRE.test(styles[transitionProp + 'Property']);\n  return {\n    type: type,\n    timeout: timeout,\n    propCount: propCount,\n    hasTransform: hasTransform\n  }\n}\n\nfunction getTimeout (delays, durations) {\n  /* istanbul ignore next */\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n\n  return Math.max.apply(null, durations.map(function (d, i) {\n    return toMs(d) + toMs(delays[i])\n  }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n  return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/*  */\n\nfunction enter (vnode, toggleDisplay) {\n  var el = vnode.elm;\n\n  // call leave callback now\n  if (isDef(el._leaveCb)) {\n    el._leaveCb.cancelled = true;\n    el._leaveCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n  if (isUndef(data)) {\n    return\n  }\n\n  /* istanbul ignore if */\n  if (isDef(el._enterCb) || el.nodeType !== 1) {\n    return\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var enterClass = data.enterClass;\n  var enterToClass = data.enterToClass;\n  var enterActiveClass = data.enterActiveClass;\n  var appearClass = data.appearClass;\n  var appearToClass = data.appearToClass;\n  var appearActiveClass = data.appearActiveClass;\n  var beforeEnter = data.beforeEnter;\n  var enter = data.enter;\n  var afterEnter = data.afterEnter;\n  var enterCancelled = data.enterCancelled;\n  var beforeAppear = data.beforeAppear;\n  var appear = data.appear;\n  var afterAppear = data.afterAppear;\n  var appearCancelled = data.appearCancelled;\n  var duration = data.duration;\n\n  // activeInstance will always be the <transition> component managing this\n  // transition. One edge case to check is when the <transition> is placed\n  // as the root node of a child component. In that case we need to check\n  // <transition>'s parent for appear check.\n  var context = activeInstance;\n  var transitionNode = activeInstance.$vnode;\n  while (transitionNode && transitionNode.parent) {\n    context = transitionNode.context;\n    transitionNode = transitionNode.parent;\n  }\n\n  var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n  if (isAppear && !appear && appear !== '') {\n    return\n  }\n\n  var startClass = isAppear && appearClass\n    ? appearClass\n    : enterClass;\n  var activeClass = isAppear && appearActiveClass\n    ? appearActiveClass\n    : enterActiveClass;\n  var toClass = isAppear && appearToClass\n    ? appearToClass\n    : enterToClass;\n\n  var beforeEnterHook = isAppear\n    ? (beforeAppear || beforeEnter)\n    : beforeEnter;\n  var enterHook = isAppear\n    ? (typeof appear === 'function' ? appear : enter)\n    : enter;\n  var afterEnterHook = isAppear\n    ? (afterAppear || afterEnter)\n    : afterEnter;\n  var enterCancelledHook = isAppear\n    ? (appearCancelled || enterCancelled)\n    : enterCancelled;\n\n  var explicitEnterDuration = toNumber(\n    isObject(duration)\n      ? duration.enter\n      : duration\n  );\n\n  if ( true && explicitEnterDuration != null) {\n    checkDuration(explicitEnterDuration, 'enter', vnode);\n  }\n\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(enterHook);\n\n  var cb = el._enterCb = once(function () {\n    if (expectsCSS) {\n      removeTransitionClass(el, toClass);\n      removeTransitionClass(el, activeClass);\n    }\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, startClass);\n      }\n      enterCancelledHook && enterCancelledHook(el);\n    } else {\n      afterEnterHook && afterEnterHook(el);\n    }\n    el._enterCb = null;\n  });\n\n  if (!vnode.data.show) {\n    // remove pending leave element on enter by injecting an insert hook\n    mergeVNodeHook(vnode, 'insert', function () {\n      var parent = el.parentNode;\n      var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n      if (pendingNode &&\n        pendingNode.tag === vnode.tag &&\n        pendingNode.elm._leaveCb\n      ) {\n        pendingNode.elm._leaveCb();\n      }\n      enterHook && enterHook(el, cb);\n    });\n  }\n\n  // start enter transition\n  beforeEnterHook && beforeEnterHook(el);\n  if (expectsCSS) {\n    addTransitionClass(el, startClass);\n    addTransitionClass(el, activeClass);\n    nextFrame(function () {\n      removeTransitionClass(el, startClass);\n      if (!cb.cancelled) {\n        addTransitionClass(el, toClass);\n        if (!userWantsControl) {\n          if (isValidDuration(explicitEnterDuration)) {\n            setTimeout(cb, explicitEnterDuration);\n          } else {\n            whenTransitionEnds(el, type, cb);\n          }\n        }\n      }\n    });\n  }\n\n  if (vnode.data.show) {\n    toggleDisplay && toggleDisplay();\n    enterHook && enterHook(el, cb);\n  }\n\n  if (!expectsCSS && !userWantsControl) {\n    cb();\n  }\n}\n\nfunction leave (vnode, rm) {\n  var el = vnode.elm;\n\n  // call enter callback now\n  if (isDef(el._enterCb)) {\n    el._enterCb.cancelled = true;\n    el._enterCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n  if (isUndef(data) || el.nodeType !== 1) {\n    return rm()\n  }\n\n  /* istanbul ignore if */\n  if (isDef(el._leaveCb)) {\n    return\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var leaveClass = data.leaveClass;\n  var leaveToClass = data.leaveToClass;\n  var leaveActiveClass = data.leaveActiveClass;\n  var beforeLeave = data.beforeLeave;\n  var leave = data.leave;\n  var afterLeave = data.afterLeave;\n  var leaveCancelled = data.leaveCancelled;\n  var delayLeave = data.delayLeave;\n  var duration = data.duration;\n\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(leave);\n\n  var explicitLeaveDuration = toNumber(\n    isObject(duration)\n      ? duration.leave\n      : duration\n  );\n\n  if ( true && isDef(explicitLeaveDuration)) {\n    checkDuration(explicitLeaveDuration, 'leave', vnode);\n  }\n\n  var cb = el._leaveCb = once(function () {\n    if (el.parentNode && el.parentNode._pending) {\n      el.parentNode._pending[vnode.key] = null;\n    }\n    if (expectsCSS) {\n      removeTransitionClass(el, leaveToClass);\n      removeTransitionClass(el, leaveActiveClass);\n    }\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, leaveClass);\n      }\n      leaveCancelled && leaveCancelled(el);\n    } else {\n      rm();\n      afterLeave && afterLeave(el);\n    }\n    el._leaveCb = null;\n  });\n\n  if (delayLeave) {\n    delayLeave(performLeave);\n  } else {\n    performLeave();\n  }\n\n  function performLeave () {\n    // the delayed leave may have already been cancelled\n    if (cb.cancelled) {\n      return\n    }\n    // record leaving element\n    if (!vnode.data.show && el.parentNode) {\n      (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n    }\n    beforeLeave && beforeLeave(el);\n    if (expectsCSS) {\n      addTransitionClass(el, leaveClass);\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(function () {\n        removeTransitionClass(el, leaveClass);\n        if (!cb.cancelled) {\n          addTransitionClass(el, leaveToClass);\n          if (!userWantsControl) {\n            if (isValidDuration(explicitLeaveDuration)) {\n              setTimeout(cb, explicitLeaveDuration);\n            } else {\n              whenTransitionEnds(el, type, cb);\n            }\n          }\n        }\n      });\n    }\n    leave && leave(el, cb);\n    if (!expectsCSS && !userWantsControl) {\n      cb();\n    }\n  }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n  if (typeof val !== 'number') {\n    warn(\n      \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n      \"got \" + (JSON.stringify(val)) + \".\",\n      vnode.context\n    );\n  } else if (isNaN(val)) {\n    warn(\n      \"<transition> explicit \" + name + \" duration is NaN - \" +\n      'the duration expression might be incorrect.',\n      vnode.context\n    );\n  }\n}\n\nfunction isValidDuration (val) {\n  return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n  if (isUndef(fn)) {\n    return false\n  }\n  var invokerFns = fn.fns;\n  if (isDef(invokerFns)) {\n    // invoker\n    return getHookArgumentsLength(\n      Array.isArray(invokerFns)\n        ? invokerFns[0]\n        : invokerFns\n    )\n  } else {\n    return (fn._length || fn.length) > 1\n  }\n}\n\nfunction _enter (_, vnode) {\n  if (vnode.data.show !== true) {\n    enter(vnode);\n  }\n}\n\nvar transition = inBrowser ? {\n  create: _enter,\n  activate: _enter,\n  remove: function remove$$1 (vnode, rm) {\n    /* istanbul ignore else */\n    if (vnode.data.show !== true) {\n      leave(vnode, rm);\n    } else {\n      rm();\n    }\n  }\n} : {};\n\nvar platformModules = [\n  attrs,\n  klass,\n  events,\n  domProps,\n  style,\n  transition\n];\n\n/*  */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n  // http://www.matts411.com/post/internet-explorer-9-oninput/\n  document.addEventListener('selectionchange', function () {\n    var el = document.activeElement;\n    if (el && el.vmodel) {\n      trigger(el, 'input');\n    }\n  });\n}\n\nvar directive = {\n  inserted: function inserted (el, binding, vnode, oldVnode) {\n    if (vnode.tag === 'select') {\n      // #6903\n      if (oldVnode.elm && !oldVnode.elm._vOptions) {\n        mergeVNodeHook(vnode, 'postpatch', function () {\n          directive.componentUpdated(el, binding, vnode);\n        });\n      } else {\n        setSelected(el, binding, vnode.context);\n      }\n      el._vOptions = [].map.call(el.options, getValue);\n    } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n      el._vModifiers = binding.modifiers;\n      if (!binding.modifiers.lazy) {\n        el.addEventListener('compositionstart', onCompositionStart);\n        el.addEventListener('compositionend', onCompositionEnd);\n        // Safari < 10.2 & UIWebView doesn't fire compositionend when\n        // switching focus before confirming composition choice\n        // this also fixes the issue where some browsers e.g. iOS Chrome\n        // fires \"change\" instead of \"input\" on autocomplete.\n        el.addEventListener('change', onCompositionEnd);\n        /* istanbul ignore if */\n        if (isIE9) {\n          el.vmodel = true;\n        }\n      }\n    }\n  },\n\n  componentUpdated: function componentUpdated (el, binding, vnode) {\n    if (vnode.tag === 'select') {\n      setSelected(el, binding, vnode.context);\n      // in case the options rendered by v-for have changed,\n      // it's possible that the value is out-of-sync with the rendered options.\n      // detect such cases and filter out values that no longer has a matching\n      // option in the DOM.\n      var prevOptions = el._vOptions;\n      var curOptions = el._vOptions = [].map.call(el.options, getValue);\n      if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n        // trigger change event if\n        // no matching option found for at least one value\n        var needReset = el.multiple\n          ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n          : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n        if (needReset) {\n          trigger(el, 'change');\n        }\n      }\n    }\n  }\n};\n\nfunction setSelected (el, binding, vm) {\n  actuallySetSelected(el, binding, vm);\n  /* istanbul ignore if */\n  if (isIE || isEdge) {\n    setTimeout(function () {\n      actuallySetSelected(el, binding, vm);\n    }, 0);\n  }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n  var value = binding.value;\n  var isMultiple = el.multiple;\n  if (isMultiple && !Array.isArray(value)) {\n     true && warn(\n      \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n      \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n      vm\n    );\n    return\n  }\n  var selected, option;\n  for (var i = 0, l = el.options.length; i < l; i++) {\n    option = el.options[i];\n    if (isMultiple) {\n      selected = looseIndexOf(value, getValue(option)) > -1;\n      if (option.selected !== selected) {\n        option.selected = selected;\n      }\n    } else {\n      if (looseEqual(getValue(option), value)) {\n        if (el.selectedIndex !== i) {\n          el.selectedIndex = i;\n        }\n        return\n      }\n    }\n  }\n  if (!isMultiple) {\n    el.selectedIndex = -1;\n  }\n}\n\nfunction hasNoMatchingOption (value, options) {\n  return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n  return '_value' in option\n    ? option._value\n    : option.value\n}\n\nfunction onCompositionStart (e) {\n  e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n  // prevent triggering an input event for no reason\n  if (!e.target.composing) { return }\n  e.target.composing = false;\n  trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n  var e = document.createEvent('HTMLEvents');\n  e.initEvent(type, true, true);\n  el.dispatchEvent(e);\n}\n\n/*  */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n  return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n    ? locateNode(vnode.componentInstance._vnode)\n    : vnode\n}\n\nvar show = {\n  bind: function bind (el, ref, vnode) {\n    var value = ref.value;\n\n    vnode = locateNode(vnode);\n    var transition$$1 = vnode.data && vnode.data.transition;\n    var originalDisplay = el.__vOriginalDisplay =\n      el.style.display === 'none' ? '' : el.style.display;\n    if (value && transition$$1) {\n      vnode.data.show = true;\n      enter(vnode, function () {\n        el.style.display = originalDisplay;\n      });\n    } else {\n      el.style.display = value ? originalDisplay : 'none';\n    }\n  },\n\n  update: function update (el, ref, vnode) {\n    var value = ref.value;\n    var oldValue = ref.oldValue;\n\n    /* istanbul ignore if */\n    if (!value === !oldValue) { return }\n    vnode = locateNode(vnode);\n    var transition$$1 = vnode.data && vnode.data.transition;\n    if (transition$$1) {\n      vnode.data.show = true;\n      if (value) {\n        enter(vnode, function () {\n          el.style.display = el.__vOriginalDisplay;\n        });\n      } else {\n        leave(vnode, function () {\n          el.style.display = 'none';\n        });\n      }\n    } else {\n      el.style.display = value ? el.__vOriginalDisplay : 'none';\n    }\n  },\n\n  unbind: function unbind (\n    el,\n    binding,\n    vnode,\n    oldVnode,\n    isDestroy\n  ) {\n    if (!isDestroy) {\n      el.style.display = el.__vOriginalDisplay;\n    }\n  }\n};\n\nvar platformDirectives = {\n  model: directive,\n  show: show\n};\n\n/*  */\n\nvar transitionProps = {\n  name: String,\n  appear: Boolean,\n  css: Boolean,\n  mode: String,\n  type: String,\n  enterClass: String,\n  leaveClass: String,\n  enterToClass: String,\n  leaveToClass: String,\n  enterActiveClass: String,\n  leaveActiveClass: String,\n  appearClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n  var compOptions = vnode && vnode.componentOptions;\n  if (compOptions && compOptions.Ctor.options.abstract) {\n    return getRealChild(getFirstComponentChild(compOptions.children))\n  } else {\n    return vnode\n  }\n}\n\nfunction extractTransitionData (comp) {\n  var data = {};\n  var options = comp.$options;\n  // props\n  for (var key in options.propsData) {\n    data[key] = comp[key];\n  }\n  // events.\n  // extract listeners and pass them directly to the transition methods\n  var listeners = options._parentListeners;\n  for (var key$1 in listeners) {\n    data[camelize(key$1)] = listeners[key$1];\n  }\n  return data\n}\n\nfunction placeholder (h, rawChild) {\n  if (/\\d-keep-alive$/.test(rawChild.tag)) {\n    return h('keep-alive', {\n      props: rawChild.componentOptions.propsData\n    })\n  }\n}\n\nfunction hasParentTransition (vnode) {\n  while ((vnode = vnode.parent)) {\n    if (vnode.data.transition) {\n      return true\n    }\n  }\n}\n\nfunction isSameChild (child, oldChild) {\n  return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n  name: 'transition',\n  props: transitionProps,\n  abstract: true,\n\n  render: function render (h) {\n    var this$1 = this;\n\n    var children = this.$slots.default;\n    if (!children) {\n      return\n    }\n\n    // filter out text nodes (possible whitespaces)\n    children = children.filter(isNotTextNode);\n    /* istanbul ignore if */\n    if (!children.length) {\n      return\n    }\n\n    // warn multiple elements\n    if ( true && children.length > 1) {\n      warn(\n        '<transition> can only be used on a single element. Use ' +\n        '<transition-group> for lists.',\n        this.$parent\n      );\n    }\n\n    var mode = this.mode;\n\n    // warn invalid mode\n    if ( true &&\n      mode && mode !== 'in-out' && mode !== 'out-in'\n    ) {\n      warn(\n        'invalid <transition> mode: ' + mode,\n        this.$parent\n      );\n    }\n\n    var rawChild = children[0];\n\n    // if this is a component root node and the component's\n    // parent container node also has transition, skip.\n    if (hasParentTransition(this.$vnode)) {\n      return rawChild\n    }\n\n    // apply transition data to child\n    // use getRealChild() to ignore abstract components e.g. keep-alive\n    var child = getRealChild(rawChild);\n    /* istanbul ignore if */\n    if (!child) {\n      return rawChild\n    }\n\n    if (this._leaving) {\n      return placeholder(h, rawChild)\n    }\n\n    // ensure a key that is unique to the vnode type and to this transition\n    // component instance. This key will be used to remove pending leaving nodes\n    // during entering.\n    var id = \"__transition-\" + (this._uid) + \"-\";\n    child.key = child.key == null\n      ? child.isComment\n        ? id + 'comment'\n        : id + child.tag\n      : isPrimitive(child.key)\n        ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n        : child.key;\n\n    var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n    var oldRawChild = this._vnode;\n    var oldChild = getRealChild(oldRawChild);\n\n    // mark v-show\n    // so that the transition module can hand over the control to the directive\n    if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n      child.data.show = true;\n    }\n\n    if (\n      oldChild &&\n      oldChild.data &&\n      !isSameChild(child, oldChild) &&\n      !isAsyncPlaceholder(oldChild) &&\n      // #6687 component root is a comment node\n      !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n    ) {\n      // replace old child transition data with fresh one\n      // important for dynamic transitions!\n      var oldData = oldChild.data.transition = extend({}, data);\n      // handle transition mode\n      if (mode === 'out-in') {\n        // return placeholder node and queue update when leave finishes\n        this._leaving = true;\n        mergeVNodeHook(oldData, 'afterLeave', function () {\n          this$1._leaving = false;\n          this$1.$forceUpdate();\n        });\n        return placeholder(h, rawChild)\n      } else if (mode === 'in-out') {\n        if (isAsyncPlaceholder(child)) {\n          return oldRawChild\n        }\n        var delayedLeave;\n        var performLeave = function () { delayedLeave(); };\n        mergeVNodeHook(data, 'afterEnter', performLeave);\n        mergeVNodeHook(data, 'enterCancelled', performLeave);\n        mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n      }\n    }\n\n    return rawChild\n  }\n};\n\n/*  */\n\nvar props = extend({\n  tag: String,\n  moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n  props: props,\n\n  beforeMount: function beforeMount () {\n    var this$1 = this;\n\n    var update = this._update;\n    this._update = function (vnode, hydrating) {\n      var restoreActiveInstance = setActiveInstance(this$1);\n      // force removing pass\n      this$1.__patch__(\n        this$1._vnode,\n        this$1.kept,\n        false, // hydrating\n        true // removeOnly (!important, avoids unnecessary moves)\n      );\n      this$1._vnode = this$1.kept;\n      restoreActiveInstance();\n      update.call(this$1, vnode, hydrating);\n    };\n  },\n\n  render: function render (h) {\n    var tag = this.tag || this.$vnode.data.tag || 'span';\n    var map = Object.create(null);\n    var prevChildren = this.prevChildren = this.children;\n    var rawChildren = this.$slots.default || [];\n    var children = this.children = [];\n    var transitionData = extractTransitionData(this);\n\n    for (var i = 0; i < rawChildren.length; i++) {\n      var c = rawChildren[i];\n      if (c.tag) {\n        if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n          children.push(c);\n          map[c.key] = c\n          ;(c.data || (c.data = {})).transition = transitionData;\n        } else if (true) {\n          var opts = c.componentOptions;\n          var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n          warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n        }\n      }\n    }\n\n    if (prevChildren) {\n      var kept = [];\n      var removed = [];\n      for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n        var c$1 = prevChildren[i$1];\n        c$1.data.transition = transitionData;\n        c$1.data.pos = c$1.elm.getBoundingClientRect();\n        if (map[c$1.key]) {\n          kept.push(c$1);\n        } else {\n          removed.push(c$1);\n        }\n      }\n      this.kept = h(tag, null, kept);\n      this.removed = removed;\n    }\n\n    return h(tag, null, children)\n  },\n\n  updated: function updated () {\n    var children = this.prevChildren;\n    var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n    if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n      return\n    }\n\n    // we divide the work into three loops to avoid mixing DOM reads and writes\n    // in each iteration - which helps prevent layout thrashing.\n    children.forEach(callPendingCbs);\n    children.forEach(recordPosition);\n    children.forEach(applyTranslation);\n\n    // force reflow to put everything in position\n    // assign to this to avoid being removed in tree-shaking\n    // $flow-disable-line\n    this._reflow = document.body.offsetHeight;\n\n    children.forEach(function (c) {\n      if (c.data.moved) {\n        var el = c.elm;\n        var s = el.style;\n        addTransitionClass(el, moveClass);\n        s.transform = s.WebkitTransform = s.transitionDuration = '';\n        el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n          if (e && e.target !== el) {\n            return\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(transitionEndEvent, cb);\n            el._moveCb = null;\n            removeTransitionClass(el, moveClass);\n          }\n        });\n      }\n    });\n  },\n\n  methods: {\n    hasMove: function hasMove (el, moveClass) {\n      /* istanbul ignore if */\n      if (!hasTransition) {\n        return false\n      }\n      /* istanbul ignore if */\n      if (this._hasMove) {\n        return this._hasMove\n      }\n      // Detect whether an element with the move class applied has\n      // CSS transitions. Since the element may be inside an entering\n      // transition at this very moment, we make a clone of it and remove\n      // all other transition classes applied to ensure only the move class\n      // is applied.\n      var clone = el.cloneNode();\n      if (el._transitionClasses) {\n        el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n      }\n      addClass(clone, moveClass);\n      clone.style.display = 'none';\n      this.$el.appendChild(clone);\n      var info = getTransitionInfo(clone);\n      this.$el.removeChild(clone);\n      return (this._hasMove = info.hasTransform)\n    }\n  }\n};\n\nfunction callPendingCbs (c) {\n  /* istanbul ignore if */\n  if (c.elm._moveCb) {\n    c.elm._moveCb();\n  }\n  /* istanbul ignore if */\n  if (c.elm._enterCb) {\n    c.elm._enterCb();\n  }\n}\n\nfunction recordPosition (c) {\n  c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n  var oldPos = c.data.pos;\n  var newPos = c.data.newPos;\n  var dx = oldPos.left - newPos.left;\n  var dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    c.data.moved = true;\n    var s = c.elm.style;\n    s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n    s.transitionDuration = '0s';\n  }\n}\n\nvar platformComponents = {\n  Transition: Transition,\n  TransitionGroup: TransitionGroup\n};\n\n/*  */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n  el,\n  hydrating\n) {\n  el = el && inBrowser ? query(el) : undefined;\n  return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n  setTimeout(function () {\n    if (config.devtools) {\n      if (devtools) {\n        devtools.emit('init', Vue);\n      } else if (\n        true\n      ) {\n        console[console.info ? 'info' : 'log'](\n          'Download the Vue Devtools extension for a better development experience:\\n' +\n          'https://github.com/vuejs/vue-devtools'\n        );\n      }\n    }\n    if ( true &&\n      config.productionTip !== false &&\n      typeof console !== 'undefined'\n    ) {\n      console[console.info ? 'info' : 'log'](\n        \"You are running Vue in development mode.\\n\" +\n        \"Make sure to turn on production mode when deploying for production.\\n\" +\n        \"See more tips at https://vuejs.org/guide/deployment.html\"\n      );\n    }\n  }, 0);\n}\n\n/*  */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vue);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLnJ1bnRpbWUuZXNtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS9kaXN0L3Z1ZS5ydW50aW1lLmVzbS5qcz8yYjBlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogVnVlLmpzIHYyLjYuMTBcbiAqIChjKSAyMDE0LTIwMTkgRXZhbiBZb3VcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuLyogICovXG5cbnZhciBlbXB0eU9iamVjdCA9IE9iamVjdC5mcmVlemUoe30pO1xuXG4vLyBUaGVzZSBoZWxwZXJzIHByb2R1Y2UgYmV0dGVyIFZNIGNvZGUgaW4gSlMgZW5naW5lcyBkdWUgdG8gdGhlaXJcbi8vIGV4cGxpY2l0bmVzcyBhbmQgZnVuY3Rpb24gaW5saW5pbmcuXG5mdW5jdGlvbiBpc1VuZGVmICh2KSB7XG4gIHJldHVybiB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbFxufVxuXG5mdW5jdGlvbiBpc0RlZiAodikge1xuICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNUcnVlICh2KSB7XG4gIHJldHVybiB2ID09PSB0cnVlXG59XG5cbmZ1bmN0aW9uIGlzRmFsc2UgKHYpIHtcbiAgcmV0dXJuIHYgPT09IGZhbHNlXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdmFsdWUgaXMgcHJpbWl0aXZlLlxuICovXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZSAodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fFxuICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCcgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJ1xuICApXG59XG5cbi8qKlxuICogUXVpY2sgb2JqZWN0IGNoZWNrIC0gdGhpcyBpcyBwcmltYXJpbHkgdXNlZCB0byB0ZWxsXG4gKiBPYmplY3RzIGZyb20gcHJpbWl0aXZlIHZhbHVlcyB3aGVuIHdlIGtub3cgdGhlIHZhbHVlXG4gKiBpcyBhIEpTT04tY29tcGxpYW50IHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0J1xufVxuXG4vKipcbiAqIEdldCB0aGUgcmF3IHR5cGUgc3RyaW5nIG9mIGEgdmFsdWUsIGUuZy4sIFtvYmplY3QgT2JqZWN0XS5cbiAqL1xudmFyIF90b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmZ1bmN0aW9uIHRvUmF3VHlwZSAodmFsdWUpIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSlcbn1cblxuLyoqXG4gKiBTdHJpY3Qgb2JqZWN0IHR5cGUgY2hlY2suIE9ubHkgcmV0dXJucyB0cnVlXG4gKiBmb3IgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nXG59XG5cbmZ1bmN0aW9uIGlzUmVnRXhwICh2KSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbCh2KSA9PT0gJ1tvYmplY3QgUmVnRXhwXSdcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB2YWwgaXMgYSB2YWxpZCBhcnJheSBpbmRleC5cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEFycmF5SW5kZXggKHZhbCkge1xuICB2YXIgbiA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbCkpO1xuICByZXR1cm4gbiA+PSAwICYmIE1hdGguZmxvb3IobikgPT09IG4gJiYgaXNGaW5pdGUodmFsKVxufVxuXG5mdW5jdGlvbiBpc1Byb21pc2UgKHZhbCkge1xuICByZXR1cm4gKFxuICAgIGlzRGVmKHZhbCkgJiZcbiAgICB0eXBlb2YgdmFsLnRoZW4gPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgdmFsLmNhdGNoID09PSAnZnVuY3Rpb24nXG4gIClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgdmFsdWUgdG8gYSBzdHJpbmcgdGhhdCBpcyBhY3R1YWxseSByZW5kZXJlZC5cbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcgKHZhbCkge1xuICByZXR1cm4gdmFsID09IG51bGxcbiAgICA/ICcnXG4gICAgOiBBcnJheS5pc0FycmF5KHZhbCkgfHwgKGlzUGxhaW5PYmplY3QodmFsKSAmJiB2YWwudG9TdHJpbmcgPT09IF90b1N0cmluZylcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkodmFsLCBudWxsLCAyKVxuICAgICAgOiBTdHJpbmcodmFsKVxufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gaW5wdXQgdmFsdWUgdG8gYSBudW1iZXIgZm9yIHBlcnNpc3RlbmNlLlxuICogSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KHZhbCk7XG4gIHJldHVybiBpc05hTihuKSA/IHZhbCA6IG5cbn1cblxuLyoqXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYSBrZXlcbiAqIGlzIGluIHRoYXQgbWFwLlxuICovXG5mdW5jdGlvbiBtYWtlTWFwIChcbiAgc3RyLFxuICBleHBlY3RzTG93ZXJDYXNlXG4pIHtcbiAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIG1hcFtsaXN0W2ldXSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2VcbiAgICA/IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWwudG9Mb3dlckNhc2UoKV07IH1cbiAgICA6IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWxdOyB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0YWcgaXMgYSBidWlsdC1pbiB0YWcuXG4gKi9cbnZhciBpc0J1aWx0SW5UYWcgPSBtYWtlTWFwKCdzbG90LGNvbXBvbmVudCcsIHRydWUpO1xuXG4vKipcbiAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZS5cbiAqL1xudmFyIGlzUmVzZXJ2ZWRBdHRyaWJ1dGUgPSBtYWtlTWFwKCdrZXkscmVmLHNsb3Qsc2xvdC1zY29wZSxpcycpO1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpdGVtIGZyb20gYW4gYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZSAoYXJyLCBpdGVtKSB7XG4gIGlmIChhcnIubGVuZ3RoKSB7XG4gICAgdmFyIGluZGV4ID0gYXJyLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBhcnIuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyB0aGUgcHJvcGVydHkuXG4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBoYXNPd24gKG9iaiwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlZCB2ZXJzaW9uIG9mIGEgcHVyZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FjaGVkIChmbikge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gKGZ1bmN0aW9uIGNhY2hlZEZuIChzdHIpIHtcbiAgICB2YXIgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSlcbiAgfSlcbn1cblxuLyoqXG4gKiBDYW1lbGl6ZSBhIGh5cGhlbi1kZWxpbWl0ZWQgc3RyaW5nLlxuICovXG52YXIgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcbnZhciBjYW1lbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCBmdW5jdGlvbiAoXywgYykgeyByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnOyB9KVxufSk7XG5cbi8qKlxuICogQ2FwaXRhbGl6ZSBhIHN0cmluZy5cbiAqL1xudmFyIGNhcGl0YWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpXG59KTtcblxuLyoqXG4gKiBIeXBoZW5hdGUgYSBjYW1lbENhc2Ugc3RyaW5nLlxuICovXG52YXIgaHlwaGVuYXRlUkUgPSAvXFxCKFtBLVpdKS9nO1xudmFyIGh5cGhlbmF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShoeXBoZW5hdGVSRSwgJy0kMScpLnRvTG93ZXJDYXNlKClcbn0pO1xuXG4vKipcbiAqIFNpbXBsZSBiaW5kIHBvbHlmaWxsIGZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3Qgc3VwcG9ydCBpdCxcbiAqIGUuZy4sIFBoYW50b21KUyAxLnguIFRlY2huaWNhbGx5LCB3ZSBkb24ndCBuZWVkIHRoaXMgYW55bW9yZVxuICogc2luY2UgbmF0aXZlIGJpbmQgaXMgbm93IHBlcmZvcm1hbnQgZW5vdWdoIGluIG1vc3QgYnJvd3NlcnMuXG4gKiBCdXQgcmVtb3ZpbmcgaXQgd291bGQgbWVhbiBicmVha2luZyBjb2RlIHRoYXQgd2FzIGFibGUgdG8gcnVuIGluXG4gKiBQaGFudG9tSlMgMS54LCBzbyB0aGlzIG11c3QgYmUga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gcG9seWZpbGxCaW5kIChmbiwgY3R4KSB7XG4gIGZ1bmN0aW9uIGJvdW5kRm4gKGEpIHtcbiAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIGxcbiAgICAgID8gbCA+IDFcbiAgICAgICAgPyBmbi5hcHBseShjdHgsIGFyZ3VtZW50cylcbiAgICAgICAgOiBmbi5jYWxsKGN0eCwgYSlcbiAgICAgIDogZm4uY2FsbChjdHgpXG4gIH1cblxuICBib3VuZEZuLl9sZW5ndGggPSBmbi5sZW5ndGg7XG4gIHJldHVybiBib3VuZEZuXG59XG5cbmZ1bmN0aW9uIG5hdGl2ZUJpbmQgKGZuLCBjdHgpIHtcbiAgcmV0dXJuIGZuLmJpbmQoY3R4KVxufVxuXG52YXIgYmluZCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kXG4gID8gbmF0aXZlQmluZFxuICA6IHBvbHlmaWxsQmluZDtcblxuLyoqXG4gKiBDb252ZXJ0IGFuIEFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgcmVhbCBBcnJheS5cbiAqL1xuZnVuY3Rpb24gdG9BcnJheSAobGlzdCwgc3RhcnQpIHtcbiAgc3RhcnQgPSBzdGFydCB8fCAwO1xuICB2YXIgaSA9IGxpc3QubGVuZ3RoIC0gc3RhcnQ7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoaSk7XG4gIHdoaWxlIChpLS0pIHtcbiAgICByZXRbaV0gPSBsaXN0W2kgKyBzdGFydF07XG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG4vKipcbiAqIE1peCBwcm9wZXJ0aWVzIGludG8gdGFyZ2V0IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZXh0ZW5kICh0bywgX2Zyb20pIHtcbiAgZm9yICh2YXIga2V5IGluIF9mcm9tKSB7XG4gICAgdG9ba2V5XSA9IF9mcm9tW2tleV07XG4gIH1cbiAgcmV0dXJuIHRvXG59XG5cbi8qKlxuICogTWVyZ2UgYW4gQXJyYXkgb2YgT2JqZWN0cyBpbnRvIGEgc2luZ2xlIE9iamVjdC5cbiAqL1xuZnVuY3Rpb24gdG9PYmplY3QgKGFycikge1xuICB2YXIgcmVzID0ge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGFycltpXSkge1xuICAgICAgZXh0ZW5kKHJlcywgYXJyW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG4vKipcbiAqIFBlcmZvcm0gbm8gb3BlcmF0aW9uLlxuICogU3R1YmJpbmcgYXJncyB0byBtYWtlIEZsb3cgaGFwcHkgd2l0aG91dCBsZWF2aW5nIHVzZWxlc3MgdHJhbnNwaWxlZCBjb2RlXG4gKiB3aXRoIC4uLnJlc3QgKGh0dHBzOi8vZmxvdy5vcmcvYmxvZy8yMDE3LzA1LzA3L1N0cmljdC1GdW5jdGlvbi1DYWxsLUFyaXR5LykuXG4gKi9cbmZ1bmN0aW9uIG5vb3AgKGEsIGIsIGMpIHt9XG5cbi8qKlxuICogQWx3YXlzIHJldHVybiBmYWxzZS5cbiAqL1xudmFyIG5vID0gZnVuY3Rpb24gKGEsIGIsIGMpIHsgcmV0dXJuIGZhbHNlOyB9O1xuXG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG5cbi8qKlxuICogUmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuICovXG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbiAoXykgeyByZXR1cm4gXzsgfTtcblxuLyoqXG4gKiBDaGVjayBpZiB0d28gdmFsdWVzIGFyZSBsb29zZWx5IGVxdWFsIC0gdGhhdCBpcyxcbiAqIGlmIHRoZXkgYXJlIHBsYWluIG9iamVjdHMsIGRvIHRoZXkgaGF2ZSB0aGUgc2FtZSBzaGFwZT9cbiAqL1xuZnVuY3Rpb24gbG9vc2VFcXVhbCAoYSwgYikge1xuICBpZiAoYSA9PT0gYikgeyByZXR1cm4gdHJ1ZSB9XG4gIHZhciBpc09iamVjdEEgPSBpc09iamVjdChhKTtcbiAgdmFyIGlzT2JqZWN0QiA9IGlzT2JqZWN0KGIpO1xuICBpZiAoaXNPYmplY3RBICYmIGlzT2JqZWN0Qikge1xuICAgIHRyeSB7XG4gICAgICB2YXIgaXNBcnJheUEgPSBBcnJheS5pc0FycmF5KGEpO1xuICAgICAgdmFyIGlzQXJyYXlCID0gQXJyYXkuaXNBcnJheShiKTtcbiAgICAgIGlmIChpc0FycmF5QSAmJiBpc0FycmF5Qikge1xuICAgICAgICByZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuZXZlcnkoZnVuY3Rpb24gKGUsIGkpIHtcbiAgICAgICAgICByZXR1cm4gbG9vc2VFcXVhbChlLCBiW2ldKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpXG4gICAgICB9IGVsc2UgaWYgKCFpc0FycmF5QSAmJiAhaXNBcnJheUIpIHtcbiAgICAgICAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG4gICAgICAgIHZhciBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuICAgICAgICByZXR1cm4ga2V5c0EubGVuZ3RoID09PSBrZXlzQi5sZW5ndGggJiYga2V5c0EuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIHJldHVybiBsb29zZUVxdWFsKGFba2V5XSwgYltrZXldKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfSBlbHNlIGlmICghaXNPYmplY3RBICYmICFpc09iamVjdEIpIHtcbiAgICByZXR1cm4gU3RyaW5nKGEpID09PSBTdHJpbmcoYilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgZmlyc3QgaW5kZXggYXQgd2hpY2ggYSBsb29zZWx5IGVxdWFsIHZhbHVlIGNhbiBiZVxuICogZm91bmQgaW4gdGhlIGFycmF5IChpZiB2YWx1ZSBpcyBhIHBsYWluIG9iamVjdCwgdGhlIGFycmF5IG11c3RcbiAqIGNvbnRhaW4gYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHNoYXBlKSwgb3IgLTEgaWYgaXQgaXMgbm90IHByZXNlbnQuXG4gKi9cbmZ1bmN0aW9uIGxvb3NlSW5kZXhPZiAoYXJyLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChhcnJbaV0sIHZhbCkpIHsgcmV0dXJuIGkgfVxuICB9XG4gIHJldHVybiAtMVxufVxuXG4vKipcbiAqIEVuc3VyZSBhIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uY2UuXG4gKi9cbmZ1bmN0aW9uIG9uY2UgKGZuKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG59XG5cbnZhciBTU1JfQVRUUiA9ICdkYXRhLXNlcnZlci1yZW5kZXJlZCc7XG5cbnZhciBBU1NFVF9UWVBFUyA9IFtcbiAgJ2NvbXBvbmVudCcsXG4gICdkaXJlY3RpdmUnLFxuICAnZmlsdGVyJ1xuXTtcblxudmFyIExJRkVDWUNMRV9IT09LUyA9IFtcbiAgJ2JlZm9yZUNyZWF0ZScsXG4gICdjcmVhdGVkJyxcbiAgJ2JlZm9yZU1vdW50JyxcbiAgJ21vdW50ZWQnLFxuICAnYmVmb3JlVXBkYXRlJyxcbiAgJ3VwZGF0ZWQnLFxuICAnYmVmb3JlRGVzdHJveScsXG4gICdkZXN0cm95ZWQnLFxuICAnYWN0aXZhdGVkJyxcbiAgJ2RlYWN0aXZhdGVkJyxcbiAgJ2Vycm9yQ2FwdHVyZWQnLFxuICAnc2VydmVyUHJlZmV0Y2gnXG5dO1xuXG4vKiAgKi9cblxuXG5cbnZhciBjb25maWcgPSAoe1xuICAvKipcbiAgICogT3B0aW9uIG1lcmdlIHN0cmF0ZWdpZXMgKHVzZWQgaW4gY29yZS91dGlsL29wdGlvbnMpXG4gICAqL1xuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHN1cHByZXNzIHdhcm5pbmdzLlxuICAgKi9cbiAgc2lsZW50OiBmYWxzZSxcblxuICAvKipcbiAgICogU2hvdyBwcm9kdWN0aW9uIG1vZGUgdGlwIG1lc3NhZ2Ugb24gYm9vdD9cbiAgICovXG4gIHByb2R1Y3Rpb25UaXA6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIGRldnRvb2xzXG4gICAqL1xuICBkZXZ0b29sczogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byByZWNvcmQgcGVyZlxuICAgKi9cbiAgcGVyZm9ybWFuY2U6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBFcnJvciBoYW5kbGVyIGZvciB3YXRjaGVyIGVycm9yc1xuICAgKi9cbiAgZXJyb3JIYW5kbGVyOiBudWxsLFxuXG4gIC8qKlxuICAgKiBXYXJuIGhhbmRsZXIgZm9yIHdhdGNoZXIgd2FybnNcbiAgICovXG4gIHdhcm5IYW5kbGVyOiBudWxsLFxuXG4gIC8qKlxuICAgKiBJZ25vcmUgY2VydGFpbiBjdXN0b20gZWxlbWVudHNcbiAgICovXG4gIGlnbm9yZWRFbGVtZW50czogW10sXG5cbiAgLyoqXG4gICAqIEN1c3RvbSB1c2VyIGtleSBhbGlhc2VzIGZvciB2LW9uXG4gICAqL1xuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAga2V5Q29kZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgdGFnIGlzIHJlc2VydmVkIHNvIHRoYXQgaXQgY2Fubm90IGJlIHJlZ2lzdGVyZWQgYXMgYVxuICAgKiBjb21wb25lbnQuIFRoaXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xuICBpc1Jlc2VydmVkVGFnOiBubyxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXR0cmlidXRlIGlzIHJlc2VydmVkIHNvIHRoYXQgaXQgY2Fubm90IGJlIHVzZWQgYXMgYSBjb21wb25lbnRcbiAgICogcHJvcC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRBdHRyOiBubyxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0YWcgaXMgYW4gdW5rbm93biBlbGVtZW50LlxuICAgKiBQbGF0Zm9ybS1kZXBlbmRlbnQuXG4gICAqL1xuICBpc1Vua25vd25FbGVtZW50OiBubyxcblxuICAvKipcbiAgICogR2V0IHRoZSBuYW1lc3BhY2Ugb2YgYW4gZWxlbWVudFxuICAgKi9cbiAgZ2V0VGFnTmFtZXNwYWNlOiBub29wLFxuXG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgcmVhbCB0YWcgbmFtZSBmb3IgdGhlIHNwZWNpZmljIHBsYXRmb3JtLlxuICAgKi9cbiAgcGFyc2VQbGF0Zm9ybVRhZ05hbWU6IGlkZW50aXR5LFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgbXVzdCBiZSBib3VuZCB1c2luZyBwcm9wZXJ0eSwgZS5nLiB2YWx1ZVxuICAgKiBQbGF0Zm9ybS1kZXBlbmRlbnQuXG4gICAqL1xuICBtdXN0VXNlUHJvcDogbm8sXG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gdXBkYXRlcyBhc3luY2hyb25vdXNseS4gSW50ZW5kZWQgdG8gYmUgdXNlZCBieSBWdWUgVGVzdCBVdGlsc1xuICAgKiBUaGlzIHdpbGwgc2lnbmlmaWNhbnRseSByZWR1Y2UgcGVyZm9ybWFuY2UgaWYgc2V0IHRvIGZhbHNlLlxuICAgKi9cbiAgYXN5bmM6IHRydWUsXG5cbiAgLyoqXG4gICAqIEV4cG9zZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICAqL1xuICBfbGlmZWN5Y2xlSG9va3M6IExJRkVDWUNMRV9IT09LU1xufSk7XG5cbi8qICAqL1xuXG4vKipcbiAqIHVuaWNvZGUgbGV0dGVycyB1c2VkIGZvciBwYXJzaW5nIGh0bWwgdGFncywgY29tcG9uZW50IG5hbWVzIGFuZCBwcm9wZXJ0eSBwYXRocy5cbiAqIHVzaW5nIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sNTMvc2VtYW50aWNzLXNjcmlwdGluZy5odG1sI3BvdGVudGlhbGN1c3RvbWVsZW1lbnRuYW1lXG4gKiBza2lwcGluZyBcXHUxMDAwMC1cXHVFRkZGRiBkdWUgdG8gaXQgZnJlZXppbmcgdXAgUGhhbnRvbUpTXG4gKi9cbnZhciB1bmljb2RlUmVnRXhwID0gL2EtekEtWlxcdTAwQjdcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDNGLVxcdTIwNDBcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkQvO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgc3RyaW5nIHN0YXJ0cyB3aXRoICQgb3IgX1xuICovXG5mdW5jdGlvbiBpc1Jlc2VydmVkIChzdHIpIHtcbiAgdmFyIGMgPSAoc3RyICsgJycpLmNoYXJDb2RlQXQoMCk7XG4gIHJldHVybiBjID09PSAweDI0IHx8IGMgPT09IDB4NUZcbn1cblxuLyoqXG4gKiBEZWZpbmUgYSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZGVmIChvYmosIGtleSwgdmFsLCBlbnVtZXJhYmxlKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIHZhbHVlOiB2YWwsXG4gICAgZW51bWVyYWJsZTogISFlbnVtZXJhYmxlLFxuICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBQYXJzZSBzaW1wbGUgcGF0aC5cbiAqL1xudmFyIGJhaWxSRSA9IG5ldyBSZWdFeHAoKFwiW15cIiArICh1bmljb2RlUmVnRXhwLnNvdXJjZSkgKyBcIi4kX1xcXFxkXVwiKSk7XG5mdW5jdGlvbiBwYXJzZVBhdGggKHBhdGgpIHtcbiAgaWYgKGJhaWxSRS50ZXN0KHBhdGgpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICByZXR1cm4gZnVuY3Rpb24gKG9iaikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghb2JqKSB7IHJldHVybiB9XG4gICAgICBvYmogPSBvYmpbc2VnbWVudHNbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gb2JqXG4gIH1cbn1cblxuLyogICovXG5cbi8vIGNhbiB3ZSB1c2UgX19wcm90b19fP1xudmFyIGhhc1Byb3RvID0gJ19fcHJvdG9fXycgaW4ge307XG5cbi8vIEJyb3dzZXIgZW52aXJvbm1lbnQgc25pZmZpbmdcbnZhciBpbkJyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbnZhciBpbldlZXggPSB0eXBlb2YgV1hFbnZpcm9ubWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgISFXWEVudmlyb25tZW50LnBsYXRmb3JtO1xudmFyIHdlZXhQbGF0Zm9ybSA9IGluV2VleCAmJiBXWEVudmlyb25tZW50LnBsYXRmb3JtLnRvTG93ZXJDYXNlKCk7XG52YXIgVUEgPSBpbkJyb3dzZXIgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbnZhciBpc0lFID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG52YXIgaXNJRTkgPSBVQSAmJiBVQS5pbmRleE9mKCdtc2llIDkuMCcpID4gMDtcbnZhciBpc0VkZ2UgPSBVQSAmJiBVQS5pbmRleE9mKCdlZGdlLycpID4gMDtcbnZhciBpc0FuZHJvaWQgPSAoVUEgJiYgVUEuaW5kZXhPZignYW5kcm9pZCcpID4gMCkgfHwgKHdlZXhQbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnKTtcbnZhciBpc0lPUyA9IChVQSAmJiAvaXBob25lfGlwYWR8aXBvZHxpb3MvLnRlc3QoVUEpKSB8fCAod2VleFBsYXRmb3JtID09PSAnaW9zJyk7XG52YXIgaXNDaHJvbWUgPSBVQSAmJiAvY2hyb21lXFwvXFxkKy8udGVzdChVQSkgJiYgIWlzRWRnZTtcbnZhciBpc1BoYW50b21KUyA9IFVBICYmIC9waGFudG9tanMvLnRlc3QoVUEpO1xudmFyIGlzRkYgPSBVQSAmJiBVQS5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pO1xuXG4vLyBGaXJlZm94IGhhcyBhIFwid2F0Y2hcIiBmdW5jdGlvbiBvbiBPYmplY3QucHJvdG90eXBlLi4uXG52YXIgbmF0aXZlV2F0Y2ggPSAoe30pLndhdGNoO1xuXG52YXIgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG5pZiAoaW5Ccm93c2VyKSB7XG4gIHRyeSB7XG4gICAgdmFyIG9wdHMgPSB7fTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0cywgJ3Bhc3NpdmUnLCAoe1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzI4NVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0LXBhc3NpdmUnLCBudWxsLCBvcHRzKTtcbiAgfSBjYXRjaCAoZSkge31cbn1cblxuLy8gdGhpcyBuZWVkcyB0byBiZSBsYXp5LWV2YWxlZCBiZWNhdXNlIHZ1ZSBtYXkgYmUgcmVxdWlyZWQgYmVmb3JlXG4vLyB2dWUtc2VydmVyLXJlbmRlcmVyIGNhbiBzZXQgVlVFX0VOVlxudmFyIF9pc1NlcnZlcjtcbnZhciBpc1NlcnZlclJlbmRlcmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKF9pc1NlcnZlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFpbkJyb3dzZXIgJiYgIWluV2VleCAmJiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gZGV0ZWN0IHByZXNlbmNlIG9mIHZ1ZS1zZXJ2ZXItcmVuZGVyZXIgYW5kIGF2b2lkXG4gICAgICAvLyBXZWJwYWNrIHNoaW1taW5nIHRoZSBwcm9jZXNzXG4gICAgICBfaXNTZXJ2ZXIgPSBnbG9iYWxbJ3Byb2Nlc3MnXSAmJiBnbG9iYWxbJ3Byb2Nlc3MnXS5lbnYuVlVFX0VOViA9PT0gJ3NlcnZlcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9pc1NlcnZlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gX2lzU2VydmVyXG59O1xuXG4vLyBkZXRlY3QgZGV2dG9vbHNcbnZhciBkZXZ0b29scyA9IGluQnJvd3NlciAmJiB3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGlzTmF0aXZlIChDdG9yKSB7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PT0gJ2Z1bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoQ3Rvci50b1N0cmluZygpKVxufVxuXG52YXIgaGFzU3ltYm9sID1cbiAgdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoU3ltYm9sKSAmJlxuICB0eXBlb2YgUmVmbGVjdCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUmVmbGVjdC5vd25LZXlzKTtcblxudmFyIF9TZXQ7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8gLy8gJGZsb3ctZGlzYWJsZS1saW5lXG5pZiAodHlwZW9mIFNldCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoU2V0KSkge1xuICAvLyB1c2UgbmF0aXZlIFNldCB3aGVuIGF2YWlsYWJsZS5cbiAgX1NldCA9IFNldDtcbn0gZWxzZSB7XG4gIC8vIGEgbm9uLXN0YW5kYXJkIFNldCBwb2x5ZmlsbCB0aGF0IG9ubHkgd29ya3Mgd2l0aCBwcmltaXRpdmUga2V5cy5cbiAgX1NldCA9IC8qQF9fUFVSRV9fKi8oZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNldCAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfVxuICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFtrZXldID09PSB0cnVlXG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoa2V5KSB7XG4gICAgICB0aGlzLnNldFtrZXldID0gdHJ1ZTtcbiAgICB9O1xuICAgIFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBjbGVhciAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfTtcblxuICAgIHJldHVybiBTZXQ7XG4gIH0oKSk7XG59XG5cbi8qICAqL1xuXG52YXIgd2FybiA9IG5vb3A7XG52YXIgdGlwID0gbm9vcDtcbnZhciBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlID0gKG5vb3ApOyAvLyB3b3JrIGFyb3VuZCBmbG93IGNoZWNrXG52YXIgZm9ybWF0Q29tcG9uZW50TmFtZSA9IChub29wKTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGhhc0NvbnNvbGUgPSB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBjbGFzc2lmeVJFID0gLyg/Ol58Wy1fXSkoXFx3KS9nO1xuICB2YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiBzdHJcbiAgICAucmVwbGFjZShjbGFzc2lmeVJFLCBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50b1VwcGVyQ2FzZSgpOyB9KVxuICAgIC5yZXBsYWNlKC9bLV9dL2csICcnKTsgfTtcblxuICB3YXJuID0gZnVuY3Rpb24gKG1zZywgdm0pIHtcbiAgICB2YXIgdHJhY2UgPSB2bSA/IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0pIDogJyc7XG5cbiAgICBpZiAoY29uZmlnLndhcm5IYW5kbGVyKSB7XG4gICAgICBjb25maWcud2FybkhhbmRsZXIuY2FsbChudWxsLCBtc2csIHZtLCB0cmFjZSk7XG4gICAgfSBlbHNlIGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW1Z1ZSB3YXJuXTogXCIgKyBtc2cgKyB0cmFjZSkpO1xuICAgIH1cbiAgfTtcblxuICB0aXAgPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIltWdWUgdGlwXTogXCIgKyBtc2cgKyAoXG4gICAgICAgIHZtID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxuICB9O1xuXG4gIGZvcm1hdENvbXBvbmVudE5hbWUgPSBmdW5jdGlvbiAodm0sIGluY2x1ZGVGaWxlKSB7XG4gICAgaWYgKHZtLiRyb290ID09PSB2bSkge1xuICAgICAgcmV0dXJuICc8Um9vdD4nXG4gICAgfVxuICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHZtID09PSAnZnVuY3Rpb24nICYmIHZtLmNpZCAhPSBudWxsXG4gICAgICA/IHZtLm9wdGlvbnNcbiAgICAgIDogdm0uX2lzVnVlXG4gICAgICAgID8gdm0uJG9wdGlvbnMgfHwgdm0uY29uc3RydWN0b3Iub3B0aW9uc1xuICAgICAgICA6IHZtO1xuICAgIHZhciBuYW1lID0gb3B0aW9ucy5uYW1lIHx8IG9wdGlvbnMuX2NvbXBvbmVudFRhZztcbiAgICB2YXIgZmlsZSA9IG9wdGlvbnMuX19maWxlO1xuICAgIGlmICghbmFtZSAmJiBmaWxlKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBmaWxlLm1hdGNoKC8oW14vXFxcXF0rKVxcLnZ1ZSQvKTtcbiAgICAgIG5hbWUgPSBtYXRjaCAmJiBtYXRjaFsxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgKG5hbWUgPyAoXCI8XCIgKyAoY2xhc3NpZnkobmFtZSkpICsgXCI+XCIpIDogXCI8QW5vbnltb3VzPlwiKSArXG4gICAgICAoZmlsZSAmJiBpbmNsdWRlRmlsZSAhPT0gZmFsc2UgPyAoXCIgYXQgXCIgKyBmaWxlKSA6ICcnKVxuICAgIClcbiAgfTtcblxuICB2YXIgcmVwZWF0ID0gZnVuY3Rpb24gKHN0ciwgbikge1xuICAgIHZhciByZXMgPSAnJztcbiAgICB3aGlsZSAobikge1xuICAgICAgaWYgKG4gJSAyID09PSAxKSB7IHJlcyArPSBzdHI7IH1cbiAgICAgIGlmIChuID4gMSkgeyBzdHIgKz0gc3RyOyB9XG4gICAgICBuID4+PSAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH07XG5cbiAgZ2VuZXJhdGVDb21wb25lbnRUcmFjZSA9IGZ1bmN0aW9uICh2bSkge1xuICAgIGlmICh2bS5faXNWdWUgJiYgdm0uJHBhcmVudCkge1xuICAgICAgdmFyIHRyZWUgPSBbXTtcbiAgICAgIHZhciBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPSAwO1xuICAgICAgd2hpbGUgKHZtKSB7XG4gICAgICAgIGlmICh0cmVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgbGFzdCA9IHRyZWVbdHJlZS5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZiAobGFzdC5jb25zdHJ1Y3RvciA9PT0gdm0uY29uc3RydWN0b3IpIHtcbiAgICAgICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSsrO1xuICAgICAgICAgICAgdm0gPSB2bS4kcGFyZW50O1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA+IDApIHtcbiAgICAgICAgICAgIHRyZWVbdHJlZS5sZW5ndGggLSAxXSA9IFtsYXN0LCBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2VdO1xuICAgICAgICAgICAgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJlZS5wdXNoKHZtKTtcbiAgICAgICAgdm0gPSB2bS4kcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuICdcXG5cXG5mb3VuZCBpblxcblxcbicgKyB0cmVlXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKHZtLCBpKSB7IHJldHVybiAoXCJcIiArIChpID09PSAwID8gJy0tLT4gJyA6IHJlcGVhdCgnICcsIDUgKyBpICogMikpICsgKEFycmF5LmlzQXJyYXkodm0pXG4gICAgICAgICAgICA/ICgoZm9ybWF0Q29tcG9uZW50TmFtZSh2bVswXSkpICsgXCIuLi4gKFwiICsgKHZtWzFdKSArIFwiIHJlY3Vyc2l2ZSBjYWxscylcIilcbiAgICAgICAgICAgIDogZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpKTsgfSlcbiAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoXCJcXG5cXG4oZm91bmQgaW4gXCIgKyAoZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpICsgXCIpXCIpXG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIHVpZCA9IDA7XG5cbi8qKlxuICogQSBkZXAgaXMgYW4gb2JzZXJ2YWJsZSB0aGF0IGNhbiBoYXZlIG11bHRpcGxlXG4gKiBkaXJlY3RpdmVzIHN1YnNjcmliaW5nIHRvIGl0LlxuICovXG52YXIgRGVwID0gZnVuY3Rpb24gRGVwICgpIHtcbiAgdGhpcy5pZCA9IHVpZCsrO1xuICB0aGlzLnN1YnMgPSBbXTtcbn07XG5cbkRlcC5wcm90b3R5cGUuYWRkU3ViID0gZnVuY3Rpb24gYWRkU3ViIChzdWIpIHtcbiAgdGhpcy5zdWJzLnB1c2goc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUucmVtb3ZlU3ViID0gZnVuY3Rpb24gcmVtb3ZlU3ViIChzdWIpIHtcbiAgcmVtb3ZlKHRoaXMuc3Vicywgc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUuZGVwZW5kID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcbiAgaWYgKERlcC50YXJnZXQpIHtcbiAgICBEZXAudGFyZ2V0LmFkZERlcCh0aGlzKTtcbiAgfVxufTtcblxuRGVwLnByb3RvdHlwZS5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkgKCkge1xuICAvLyBzdGFiaWxpemUgdGhlIHN1YnNjcmliZXIgbGlzdCBmaXJzdFxuICB2YXIgc3VicyA9IHRoaXMuc3Vicy5zbGljZSgpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhY29uZmlnLmFzeW5jKSB7XG4gICAgLy8gc3VicyBhcmVuJ3Qgc29ydGVkIGluIHNjaGVkdWxlciBpZiBub3QgcnVubmluZyBhc3luY1xuICAgIC8vIHdlIG5lZWQgdG8gc29ydCB0aGVtIG5vdyB0byBtYWtlIHN1cmUgdGhleSBmaXJlIGluIGNvcnJlY3RcbiAgICAvLyBvcmRlclxuICAgIHN1YnMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5pZCAtIGIuaWQ7IH0pO1xuICB9XG4gIGZvciAodmFyIGkgPSAwLCBsID0gc3Vicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBzdWJzW2ldLnVwZGF0ZSgpO1xuICB9XG59O1xuXG4vLyBUaGUgY3VycmVudCB0YXJnZXQgd2F0Y2hlciBiZWluZyBldmFsdWF0ZWQuXG4vLyBUaGlzIGlzIGdsb2JhbGx5IHVuaXF1ZSBiZWNhdXNlIG9ubHkgb25lIHdhdGNoZXJcbi8vIGNhbiBiZSBldmFsdWF0ZWQgYXQgYSB0aW1lLlxuRGVwLnRhcmdldCA9IG51bGw7XG52YXIgdGFyZ2V0U3RhY2sgPSBbXTtcblxuZnVuY3Rpb24gcHVzaFRhcmdldCAodGFyZ2V0KSB7XG4gIHRhcmdldFN0YWNrLnB1c2godGFyZ2V0KTtcbiAgRGVwLnRhcmdldCA9IHRhcmdldDtcbn1cblxuZnVuY3Rpb24gcG9wVGFyZ2V0ICgpIHtcbiAgdGFyZ2V0U3RhY2sucG9wKCk7XG4gIERlcC50YXJnZXQgPSB0YXJnZXRTdGFja1t0YXJnZXRTdGFjay5sZW5ndGggLSAxXTtcbn1cblxuLyogICovXG5cbnZhciBWTm9kZSA9IGZ1bmN0aW9uIFZOb2RlIChcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgdGV4dCxcbiAgZWxtLFxuICBjb250ZXh0LFxuICBjb21wb25lbnRPcHRpb25zLFxuICBhc3luY0ZhY3Rvcnlcbikge1xuICB0aGlzLnRhZyA9IHRhZztcbiAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlzLnRleHQgPSB0ZXh0O1xuICB0aGlzLmVsbSA9IGVsbTtcbiAgdGhpcy5ucyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5mbkNvbnRleHQgPSB1bmRlZmluZWQ7XG4gIHRoaXMuZm5PcHRpb25zID0gdW5kZWZpbmVkO1xuICB0aGlzLmZuU2NvcGVJZCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5rZXkgPSBkYXRhICYmIGRhdGEua2V5O1xuICB0aGlzLmNvbXBvbmVudE9wdGlvbnMgPSBjb21wb25lbnRPcHRpb25zO1xuICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gdW5kZWZpbmVkO1xuICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5yYXcgPSBmYWxzZTtcbiAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xuICB0aGlzLmlzUm9vdEluc2VydCA9IHRydWU7XG4gIHRoaXMuaXNDb21tZW50ID0gZmFsc2U7XG4gIHRoaXMuaXNDbG9uZWQgPSBmYWxzZTtcbiAgdGhpcy5pc09uY2UgPSBmYWxzZTtcbiAgdGhpcy5hc3luY0ZhY3RvcnkgPSBhc3luY0ZhY3Rvcnk7XG4gIHRoaXMuYXN5bmNNZXRhID0gdW5kZWZpbmVkO1xuICB0aGlzLmlzQXN5bmNQbGFjZWhvbGRlciA9IGZhbHNlO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgY2hpbGQ6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxuLy8gREVQUkVDQVRFRDogYWxpYXMgZm9yIGNvbXBvbmVudEluc3RhbmNlIGZvciBiYWNrd2FyZHMgY29tcGF0LlxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnByb3RvdHlwZUFjY2Vzc29ycy5jaGlsZC5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlXG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggVk5vZGUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxudmFyIGNyZWF0ZUVtcHR5Vk5vZGUgPSBmdW5jdGlvbiAodGV4dCkge1xuICBpZiAoIHRleHQgPT09IHZvaWQgMCApIHRleHQgPSAnJztcblxuICB2YXIgbm9kZSA9IG5ldyBWTm9kZSgpO1xuICBub2RlLnRleHQgPSB0ZXh0O1xuICBub2RlLmlzQ29tbWVudCA9IHRydWU7XG4gIHJldHVybiBub2RlXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Vk5vZGUgKHZhbCkge1xuICByZXR1cm4gbmV3IFZOb2RlKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFN0cmluZyh2YWwpKVxufVxuXG4vLyBvcHRpbWl6ZWQgc2hhbGxvdyBjbG9uZVxuLy8gdXNlZCBmb3Igc3RhdGljIG5vZGVzIGFuZCBzbG90IG5vZGVzIGJlY2F1c2UgdGhleSBtYXkgYmUgcmV1c2VkIGFjcm9zc1xuLy8gbXVsdGlwbGUgcmVuZGVycywgY2xvbmluZyB0aGVtIGF2b2lkcyBlcnJvcnMgd2hlbiBET00gbWFuaXB1bGF0aW9ucyByZWx5XG4vLyBvbiB0aGVpciBlbG0gcmVmZXJlbmNlLlxuZnVuY3Rpb24gY2xvbmVWTm9kZSAodm5vZGUpIHtcbiAgdmFyIGNsb25lZCA9IG5ldyBWTm9kZShcbiAgICB2bm9kZS50YWcsXG4gICAgdm5vZGUuZGF0YSxcbiAgICAvLyAjNzk3NVxuICAgIC8vIGNsb25lIGNoaWxkcmVuIGFycmF5IHRvIGF2b2lkIG11dGF0aW5nIG9yaWdpbmFsIGluIGNhc2Ugb2YgY2xvbmluZ1xuICAgIC8vIGEgY2hpbGQuXG4gICAgdm5vZGUuY2hpbGRyZW4gJiYgdm5vZGUuY2hpbGRyZW4uc2xpY2UoKSxcbiAgICB2bm9kZS50ZXh0LFxuICAgIHZub2RlLmVsbSxcbiAgICB2bm9kZS5jb250ZXh0LFxuICAgIHZub2RlLmNvbXBvbmVudE9wdGlvbnMsXG4gICAgdm5vZGUuYXN5bmNGYWN0b3J5XG4gICk7XG4gIGNsb25lZC5ucyA9IHZub2RlLm5zO1xuICBjbG9uZWQuaXNTdGF0aWMgPSB2bm9kZS5pc1N0YXRpYztcbiAgY2xvbmVkLmtleSA9IHZub2RlLmtleTtcbiAgY2xvbmVkLmlzQ29tbWVudCA9IHZub2RlLmlzQ29tbWVudDtcbiAgY2xvbmVkLmZuQ29udGV4dCA9IHZub2RlLmZuQ29udGV4dDtcbiAgY2xvbmVkLmZuT3B0aW9ucyA9IHZub2RlLmZuT3B0aW9ucztcbiAgY2xvbmVkLmZuU2NvcGVJZCA9IHZub2RlLmZuU2NvcGVJZDtcbiAgY2xvbmVkLmFzeW5jTWV0YSA9IHZub2RlLmFzeW5jTWV0YTtcbiAgY2xvbmVkLmlzQ2xvbmVkID0gdHJ1ZTtcbiAgcmV0dXJuIGNsb25lZFxufVxuXG4vKlxuICogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gKiBkeW5hbWljYWxseSBhY2Nlc3NpbmcgbWV0aG9kcyBvbiBBcnJheSBwcm90b3R5cGVcbiAqL1xuXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbnZhciBhcnJheU1ldGhvZHMgPSBPYmplY3QuY3JlYXRlKGFycmF5UHJvdG8pO1xuXG52YXIgbWV0aG9kc1RvUGF0Y2ggPSBbXG4gICdwdXNoJyxcbiAgJ3BvcCcsXG4gICdzaGlmdCcsXG4gICd1bnNoaWZ0JyxcbiAgJ3NwbGljZScsXG4gICdzb3J0JyxcbiAgJ3JldmVyc2UnXG5dO1xuXG4vKipcbiAqIEludGVyY2VwdCBtdXRhdGluZyBtZXRob2RzIGFuZCBlbWl0IGV2ZW50c1xuICovXG5tZXRob2RzVG9QYXRjaC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgLy8gY2FjaGUgb3JpZ2luYWwgbWV0aG9kXG4gIHZhciBvcmlnaW5hbCA9IGFycmF5UHJvdG9bbWV0aG9kXTtcbiAgZGVmKGFycmF5TWV0aG9kcywgbWV0aG9kLCBmdW5jdGlvbiBtdXRhdG9yICgpIHtcbiAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICB2YXIgcmVzdWx0ID0gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgdmFyIG9iID0gdGhpcy5fX29iX187XG4gICAgdmFyIGluc2VydGVkO1xuICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlICdwdXNoJzpcbiAgICAgIGNhc2UgJ3Vuc2hpZnQnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3M7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzcGxpY2UnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3Muc2xpY2UoMik7XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlmIChpbnNlcnRlZCkgeyBvYi5vYnNlcnZlQXJyYXkoaW5zZXJ0ZWQpOyB9XG4gICAgLy8gbm90aWZ5IGNoYW5nZVxuICAgIG9iLmRlcC5ub3RpZnkoKTtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0pO1xufSk7XG5cbi8qICAqL1xuXG52YXIgYXJyYXlLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYXJyYXlNZXRob2RzKTtcblxuLyoqXG4gKiBJbiBzb21lIGNhc2VzIHdlIG1heSB3YW50IHRvIGRpc2FibGUgb2JzZXJ2YXRpb24gaW5zaWRlIGEgY29tcG9uZW50J3NcbiAqIHVwZGF0ZSBjb21wdXRhdGlvbi5cbiAqL1xudmFyIHNob3VsZE9ic2VydmUgPSB0cnVlO1xuXG5mdW5jdGlvbiB0b2dnbGVPYnNlcnZpbmcgKHZhbHVlKSB7XG4gIHNob3VsZE9ic2VydmUgPSB2YWx1ZTtcbn1cblxuLyoqXG4gKiBPYnNlcnZlciBjbGFzcyB0aGF0IGlzIGF0dGFjaGVkIHRvIGVhY2ggb2JzZXJ2ZWRcbiAqIG9iamVjdC4gT25jZSBhdHRhY2hlZCwgdGhlIG9ic2VydmVyIGNvbnZlcnRzIHRoZSB0YXJnZXRcbiAqIG9iamVjdCdzIHByb3BlcnR5IGtleXMgaW50byBnZXR0ZXIvc2V0dGVycyB0aGF0XG4gKiBjb2xsZWN0IGRlcGVuZGVuY2llcyBhbmQgZGlzcGF0Y2ggdXBkYXRlcy5cbiAqL1xudmFyIE9ic2VydmVyID0gZnVuY3Rpb24gT2JzZXJ2ZXIgKHZhbHVlKSB7XG4gIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgdGhpcy5kZXAgPSBuZXcgRGVwKCk7XG4gIHRoaXMudm1Db3VudCA9IDA7XG4gIGRlZih2YWx1ZSwgJ19fb2JfXycsIHRoaXMpO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoaGFzUHJvdG8pIHtcbiAgICAgIHByb3RvQXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29weUF1Z21lbnQodmFsdWUsIGFycmF5TWV0aG9kcywgYXJyYXlLZXlzKTtcbiAgICB9XG4gICAgdGhpcy5vYnNlcnZlQXJyYXkodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMud2Fsayh2YWx1ZSk7XG4gIH1cbn07XG5cbi8qKlxuICogV2FsayB0aHJvdWdoIGFsbCBwcm9wZXJ0aWVzIGFuZCBjb252ZXJ0IHRoZW0gaW50b1xuICogZ2V0dGVyL3NldHRlcnMuIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuXG4gKiB2YWx1ZSB0eXBlIGlzIE9iamVjdC5cbiAqL1xuT2JzZXJ2ZXIucHJvdG90eXBlLndhbGsgPSBmdW5jdGlvbiB3YWxrIChvYmopIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMShvYmosIGtleXNbaV0pO1xuICB9XG59O1xuXG4vKipcbiAqIE9ic2VydmUgYSBsaXN0IG9mIEFycmF5IGl0ZW1zLlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZUFycmF5ID0gZnVuY3Rpb24gb2JzZXJ2ZUFycmF5IChpdGVtcykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG9ic2VydmUoaXRlbXNbaV0pO1xuICB9XG59O1xuXG4vLyBoZWxwZXJzXG5cbi8qKlxuICogQXVnbWVudCBhIHRhcmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgaW50ZXJjZXB0aW5nXG4gKiB0aGUgcHJvdG90eXBlIGNoYWluIHVzaW5nIF9fcHJvdG9fX1xuICovXG5mdW5jdGlvbiBwcm90b0F1Z21lbnQgKHRhcmdldCwgc3JjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG4gIHRhcmdldC5fX3Byb3RvX18gPSBzcmM7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tcHJvdG8gKi9cbn1cblxuLyoqXG4gKiBBdWdtZW50IGEgdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBkZWZpbmluZ1xuICogaGlkZGVuIHByb3BlcnRpZXMuXG4gKi9cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBjb3B5QXVnbWVudCAodGFyZ2V0LCBzcmMsIGtleXMpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGRlZih0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9XG59XG5cbi8qKlxuICogQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JzZXJ2ZXIgaW5zdGFuY2UgZm9yIGEgdmFsdWUsXG4gKiByZXR1cm5zIHRoZSBuZXcgb2JzZXJ2ZXIgaWYgc3VjY2Vzc2Z1bGx5IG9ic2VydmVkLFxuICogb3IgdGhlIGV4aXN0aW5nIG9ic2VydmVyIGlmIHRoZSB2YWx1ZSBhbHJlYWR5IGhhcyBvbmUuXG4gKi9cbmZ1bmN0aW9uIG9ic2VydmUgKHZhbHVlLCBhc1Jvb3REYXRhKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IHZhbHVlIGluc3RhbmNlb2YgVk5vZGUpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2I7XG4gIGlmIChoYXNPd24odmFsdWUsICdfX29iX18nKSAmJiB2YWx1ZS5fX29iX18gaW5zdGFuY2VvZiBPYnNlcnZlcikge1xuICAgIG9iID0gdmFsdWUuX19vYl9fO1xuICB9IGVsc2UgaWYgKFxuICAgIHNob3VsZE9ic2VydmUgJiZcbiAgICAhaXNTZXJ2ZXJSZW5kZXJpbmcoKSAmJlxuICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSB8fCBpc1BsYWluT2JqZWN0KHZhbHVlKSkgJiZcbiAgICBPYmplY3QuaXNFeHRlbnNpYmxlKHZhbHVlKSAmJlxuICAgICF2YWx1ZS5faXNWdWVcbiAgKSB7XG4gICAgb2IgPSBuZXcgT2JzZXJ2ZXIodmFsdWUpO1xuICB9XG4gIGlmIChhc1Jvb3REYXRhICYmIG9iKSB7XG4gICAgb2Iudm1Db3VudCsrO1xuICB9XG4gIHJldHVybiBvYlxufVxuXG4vKipcbiAqIERlZmluZSBhIHJlYWN0aXZlIHByb3BlcnR5IG9uIGFuIE9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZGVmaW5lUmVhY3RpdmUkJDEgKFxuICBvYmosXG4gIGtleSxcbiAgdmFsLFxuICBjdXN0b21TZXR0ZXIsXG4gIHNoYWxsb3dcbikge1xuICB2YXIgZGVwID0gbmV3IERlcCgpO1xuXG4gIHZhciBwcm9wZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpO1xuICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHkuY29uZmlndXJhYmxlID09PSBmYWxzZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gY2F0ZXIgZm9yIHByZS1kZWZpbmVkIGdldHRlci9zZXR0ZXJzXG4gIHZhciBnZXR0ZXIgPSBwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5nZXQ7XG4gIHZhciBzZXR0ZXIgPSBwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5zZXQ7XG4gIGlmICgoIWdldHRlciB8fCBzZXR0ZXIpICYmIGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICB2YWwgPSBvYmpba2V5XTtcbiAgfVxuXG4gIHZhciBjaGlsZE9iID0gIXNoYWxsb3cgJiYgb2JzZXJ2ZSh2YWwpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlR2V0dGVyICgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICBpZiAoRGVwLnRhcmdldCkge1xuICAgICAgICBkZXAuZGVwZW5kKCk7XG4gICAgICAgIGlmIChjaGlsZE9iKSB7XG4gICAgICAgICAgY2hpbGRPYi5kZXAuZGVwZW5kKCk7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBkZXBlbmRBcnJheSh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gcmVhY3RpdmVTZXR0ZXIgKG5ld1ZhbCkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0dGVyID8gZ2V0dGVyLmNhbGwob2JqKSA6IHZhbDtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuICAgICAgaWYgKG5ld1ZhbCA9PT0gdmFsdWUgfHwgKG5ld1ZhbCAhPT0gbmV3VmFsICYmIHZhbHVlICE9PSB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY3VzdG9tU2V0dGVyKSB7XG4gICAgICAgIGN1c3RvbVNldHRlcigpO1xuICAgICAgfVxuICAgICAgLy8gIzc5ODE6IGZvciBhY2Nlc3NvciBwcm9wZXJ0aWVzIHdpdGhvdXQgc2V0dGVyXG4gICAgICBpZiAoZ2V0dGVyICYmICFzZXR0ZXIpIHsgcmV0dXJuIH1cbiAgICAgIGlmIChzZXR0ZXIpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwob2JqLCBuZXdWYWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgICAgY2hpbGRPYiA9ICFzaGFsbG93ICYmIG9ic2VydmUobmV3VmFsKTtcbiAgICAgIGRlcC5ub3RpZnkoKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5IG9uIGFuIG9iamVjdC4gQWRkcyB0aGUgbmV3IHByb3BlcnR5IGFuZFxuICogdHJpZ2dlcnMgY2hhbmdlIG5vdGlmaWNhdGlvbiBpZiB0aGUgcHJvcGVydHkgZG9lc24ndFxuICogYWxyZWFkeSBleGlzdC5cbiAqL1xuZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgKGlzVW5kZWYodGFyZ2V0KSB8fCBpc1ByaW1pdGl2ZSh0YXJnZXQpKVxuICApIHtcbiAgICB3YXJuKChcIkNhbm5vdCBzZXQgcmVhY3RpdmUgcHJvcGVydHkgb24gdW5kZWZpbmVkLCBudWxsLCBvciBwcmltaXRpdmUgdmFsdWU6IFwiICsgKCh0YXJnZXQpKSkpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgaXNWYWxpZEFycmF5SW5kZXgoa2V5KSkge1xuICAgIHRhcmdldC5sZW5ndGggPSBNYXRoLm1heCh0YXJnZXQubGVuZ3RoLCBrZXkpO1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxLCB2YWwpO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoa2V5IGluIHRhcmdldCAmJiAhKGtleSBpbiBPYmplY3QucHJvdG90eXBlKSkge1xuICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0KS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9pZCBhZGRpbmcgcmVhY3RpdmUgcHJvcGVydGllcyB0byBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAkZGF0YSAnICtcbiAgICAgICdhdCBydW50aW1lIC0gZGVjbGFyZSBpdCB1cGZyb250IGluIHRoZSBkYXRhIG9wdGlvbi4nXG4gICAgKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYgKCFvYikge1xuICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBkZWZpbmVSZWFjdGl2ZSQkMShvYi52YWx1ZSwga2V5LCB2YWwpO1xuICBvYi5kZXAubm90aWZ5KCk7XG4gIHJldHVybiB2YWxcbn1cblxuLyoqXG4gKiBEZWxldGUgYSBwcm9wZXJ0eSBhbmQgdHJpZ2dlciBjaGFuZ2UgaWYgbmVjZXNzYXJ5LlxuICovXG5mdW5jdGlvbiBkZWwgKHRhcmdldCwga2V5KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgKGlzVW5kZWYodGFyZ2V0KSB8fCBpc1ByaW1pdGl2ZSh0YXJnZXQpKVxuICApIHtcbiAgICB3YXJuKChcIkNhbm5vdCBkZWxldGUgcmVhY3RpdmUgcHJvcGVydHkgb24gdW5kZWZpbmVkLCBudWxsLCBvciBwcmltaXRpdmUgdmFsdWU6IFwiICsgKCh0YXJnZXQpKSkpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgaXNWYWxpZEFycmF5SW5kZXgoa2V5KSkge1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0KS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9pZCBkZWxldGluZyBwcm9wZXJ0aWVzIG9uIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJy0ganVzdCBzZXQgaXQgdG8gbnVsbC4nXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkpIHtcbiAgICByZXR1cm5cbiAgfVxuICBkZWxldGUgdGFyZ2V0W2tleV07XG4gIGlmICghb2IpIHtcbiAgICByZXR1cm5cbiAgfVxuICBvYi5kZXAubm90aWZ5KCk7XG59XG5cbi8qKlxuICogQ29sbGVjdCBkZXBlbmRlbmNpZXMgb24gYXJyYXkgZWxlbWVudHMgd2hlbiB0aGUgYXJyYXkgaXMgdG91Y2hlZCwgc2luY2VcbiAqIHdlIGNhbm5vdCBpbnRlcmNlcHQgYXJyYXkgZWxlbWVudCBhY2Nlc3MgbGlrZSBwcm9wZXJ0eSBnZXR0ZXJzLlxuICovXG5mdW5jdGlvbiBkZXBlbmRBcnJheSAodmFsdWUpIHtcbiAgZm9yICh2YXIgZSA9ICh2b2lkIDApLCBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGUgPSB2YWx1ZVtpXTtcbiAgICBlICYmIGUuX19vYl9fICYmIGUuX19vYl9fLmRlcC5kZXBlbmQoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgZGVwZW5kQXJyYXkoZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIE9wdGlvbiBvdmVyd3JpdGluZyBzdHJhdGVnaWVzIGFyZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGVcbiAqIGhvdyB0byBtZXJnZSBhIHBhcmVudCBvcHRpb24gdmFsdWUgYW5kIGEgY2hpbGQgb3B0aW9uXG4gKiB2YWx1ZSBpbnRvIHRoZSBmaW5hbCB2YWx1ZS5cbiAqL1xudmFyIHN0cmF0cyA9IGNvbmZpZy5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7XG5cbi8qKlxuICogT3B0aW9ucyB3aXRoIHJlc3RyaWN0aW9uc1xuICovXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBzdHJhdHMuZWwgPSBzdHJhdHMucHJvcHNEYXRhID0gZnVuY3Rpb24gKHBhcmVudCwgY2hpbGQsIHZtLCBrZXkpIHtcbiAgICBpZiAoIXZtKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIm9wdGlvbiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgaW5zdGFuY2UgXCIgK1xuICAgICAgICAnY3JlYXRpb24gd2l0aCB0aGUgYG5ld2Aga2V5d29yZC4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdFN0cmF0KHBhcmVudCwgY2hpbGQpXG4gIH07XG59XG5cbi8qKlxuICogSGVscGVyIHRoYXQgcmVjdXJzaXZlbHkgbWVyZ2VzIHR3byBkYXRhIG9iamVjdHMgdG9nZXRoZXIuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlRGF0YSAodG8sIGZyb20pIHtcbiAgaWYgKCFmcm9tKSB7IHJldHVybiB0byB9XG4gIHZhciBrZXksIHRvVmFsLCBmcm9tVmFsO1xuXG4gIHZhciBrZXlzID0gaGFzU3ltYm9sXG4gICAgPyBSZWZsZWN0Lm93bktleXMoZnJvbSlcbiAgICA6IE9iamVjdC5rZXlzKGZyb20pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07XG4gICAgLy8gaW4gY2FzZSB0aGUgb2JqZWN0IGlzIGFscmVhZHkgb2JzZXJ2ZWQuLi5cbiAgICBpZiAoa2V5ID09PSAnX19vYl9fJykgeyBjb250aW51ZSB9XG4gICAgdG9WYWwgPSB0b1trZXldO1xuICAgIGZyb21WYWwgPSBmcm9tW2tleV07XG4gICAgaWYgKCFoYXNPd24odG8sIGtleSkpIHtcbiAgICAgIHNldCh0bywga2V5LCBmcm9tVmFsKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdG9WYWwgIT09IGZyb21WYWwgJiZcbiAgICAgIGlzUGxhaW5PYmplY3QodG9WYWwpICYmXG4gICAgICBpc1BsYWluT2JqZWN0KGZyb21WYWwpXG4gICAgKSB7XG4gICAgICBtZXJnZURhdGEodG9WYWwsIGZyb21WYWwpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBEYXRhXG4gKi9cbmZ1bmN0aW9uIG1lcmdlRGF0YU9yRm4gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bVxuKSB7XG4gIGlmICghdm0pIHtcbiAgICAvLyBpbiBhIFZ1ZS5leHRlbmQgbWVyZ2UsIGJvdGggc2hvdWxkIGJlIGZ1bmN0aW9uc1xuICAgIGlmICghY2hpbGRWYWwpIHtcbiAgICAgIHJldHVybiBwYXJlbnRWYWxcbiAgICB9XG4gICAgaWYgKCFwYXJlbnRWYWwpIHtcbiAgICAgIHJldHVybiBjaGlsZFZhbFxuICAgIH1cbiAgICAvLyB3aGVuIHBhcmVudFZhbCAmIGNoaWxkVmFsIGFyZSBib3RoIHByZXNlbnQsXG4gICAgLy8gd2UgbmVlZCB0byByZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlXG4gICAgLy8gbWVyZ2VkIHJlc3VsdCBvZiBib3RoIGZ1bmN0aW9ucy4uLiBubyBuZWVkIHRvXG4gICAgLy8gY2hlY2sgaWYgcGFyZW50VmFsIGlzIGEgZnVuY3Rpb24gaGVyZSBiZWNhdXNlXG4gICAgLy8gaXQgaGFzIHRvIGJlIGEgZnVuY3Rpb24gdG8gcGFzcyBwcmV2aW91cyBtZXJnZXMuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZERhdGFGbiAoKSB7XG4gICAgICByZXR1cm4gbWVyZ2VEYXRhKFxuICAgICAgICB0eXBlb2YgY2hpbGRWYWwgPT09ICdmdW5jdGlvbicgPyBjaGlsZFZhbC5jYWxsKHRoaXMsIHRoaXMpIDogY2hpbGRWYWwsXG4gICAgICAgIHR5cGVvZiBwYXJlbnRWYWwgPT09ICdmdW5jdGlvbicgPyBwYXJlbnRWYWwuY2FsbCh0aGlzLCB0aGlzKSA6IHBhcmVudFZhbFxuICAgICAgKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkSW5zdGFuY2VEYXRhRm4gKCkge1xuICAgICAgLy8gaW5zdGFuY2UgbWVyZ2VcbiAgICAgIHZhciBpbnN0YW5jZURhdGEgPSB0eXBlb2YgY2hpbGRWYWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjaGlsZFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgOiBjaGlsZFZhbDtcbiAgICAgIHZhciBkZWZhdWx0RGF0YSA9IHR5cGVvZiBwYXJlbnRWYWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBwYXJlbnRWYWwuY2FsbCh2bSwgdm0pXG4gICAgICAgIDogcGFyZW50VmFsO1xuICAgICAgaWYgKGluc3RhbmNlRGF0YSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEYXRhKGluc3RhbmNlRGF0YSwgZGVmYXVsdERhdGEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdERhdGFcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuc3RyYXRzLmRhdGEgPSBmdW5jdGlvbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAgIGlmIChjaGlsZFZhbCAmJiB0eXBlb2YgY2hpbGRWYWwgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ1RoZSBcImRhdGFcIiBvcHRpb24gc2hvdWxkIGJlIGEgZnVuY3Rpb24gJyArXG4gICAgICAgICd0aGF0IHJldHVybnMgYSBwZXItaW5zdGFuY2UgdmFsdWUgaW4gY29tcG9uZW50ICcgK1xuICAgICAgICAnZGVmaW5pdGlvbnMuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBwYXJlbnRWYWxcbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlRGF0YU9yRm4ocGFyZW50VmFsLCBjaGlsZFZhbClcbiAgfVxuXG4gIHJldHVybiBtZXJnZURhdGFPckZuKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKVxufTtcblxuLyoqXG4gKiBIb29rcyBhbmQgcHJvcHMgYXJlIG1lcmdlZCBhcyBhcnJheXMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlSG9vayAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWxcbikge1xuICB2YXIgcmVzID0gY2hpbGRWYWxcbiAgICA/IHBhcmVudFZhbFxuICAgICAgPyBwYXJlbnRWYWwuY29uY2F0KGNoaWxkVmFsKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkVmFsKVxuICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgIDogW2NoaWxkVmFsXVxuICAgIDogcGFyZW50VmFsO1xuICByZXR1cm4gcmVzXG4gICAgPyBkZWR1cGVIb29rcyhyZXMpXG4gICAgOiByZXNcbn1cblxuZnVuY3Rpb24gZGVkdXBlSG9va3MgKGhvb2tzKSB7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyZXMuaW5kZXhPZihob29rc1tpXSkgPT09IC0xKSB7XG4gICAgICByZXMucHVzaChob29rc1tpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuTElGRUNZQ0xFX0hPT0tTLmZvckVhY2goZnVuY3Rpb24gKGhvb2spIHtcbiAgc3RyYXRzW2hvb2tdID0gbWVyZ2VIb29rO1xufSk7XG5cbi8qKlxuICogQXNzZXRzXG4gKlxuICogV2hlbiBhIHZtIGlzIHByZXNlbnQgKGluc3RhbmNlIGNyZWF0aW9uKSwgd2UgbmVlZCB0byBkb1xuICogYSB0aHJlZS13YXkgbWVyZ2UgYmV0d2VlbiBjb25zdHJ1Y3RvciBvcHRpb25zLCBpbnN0YW5jZVxuICogb3B0aW9ucyBhbmQgcGFyZW50IG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlQXNzZXRzIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm0sXG4gIGtleVxuKSB7XG4gIHZhciByZXMgPSBPYmplY3QuY3JlYXRlKHBhcmVudFZhbCB8fCBudWxsKTtcbiAgaWYgKGNoaWxkVmFsKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhc3NlcnRPYmplY3RUeXBlKGtleSwgY2hpbGRWYWwsIHZtKTtcbiAgICByZXR1cm4gZXh0ZW5kKHJlcywgY2hpbGRWYWwpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc1xuICB9XG59XG5cbkFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgc3RyYXRzW3R5cGUgKyAncyddID0gbWVyZ2VBc3NldHM7XG59KTtcblxuLyoqXG4gKiBXYXRjaGVycy5cbiAqXG4gKiBXYXRjaGVycyBoYXNoZXMgc2hvdWxkIG5vdCBvdmVyd3JpdGUgb25lXG4gKiBhbm90aGVyLCBzbyB3ZSBtZXJnZSB0aGVtIGFzIGFycmF5cy5cbiAqL1xuc3RyYXRzLndhdGNoID0gZnVuY3Rpb24gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bSxcbiAga2V5XG4pIHtcbiAgLy8gd29yayBhcm91bmQgRmlyZWZveCdzIE9iamVjdC5wcm90b3R5cGUud2F0Y2guLi5cbiAgaWYgKHBhcmVudFZhbCA9PT0gbmF0aXZlV2F0Y2gpIHsgcGFyZW50VmFsID0gdW5kZWZpbmVkOyB9XG4gIGlmIChjaGlsZFZhbCA9PT0gbmF0aXZlV2F0Y2gpIHsgY2hpbGRWYWwgPSB1bmRlZmluZWQ7IH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2hpbGRWYWwpIHsgcmV0dXJuIE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBhc3NlcnRPYmplY3RUeXBlKGtleSwgY2hpbGRWYWwsIHZtKTtcbiAgfVxuICBpZiAoIXBhcmVudFZhbCkgeyByZXR1cm4gY2hpbGRWYWwgfVxuICB2YXIgcmV0ID0ge307XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGZvciAodmFyIGtleSQxIGluIGNoaWxkVmFsKSB7XG4gICAgdmFyIHBhcmVudCA9IHJldFtrZXkkMV07XG4gICAgdmFyIGNoaWxkID0gY2hpbGRWYWxba2V5JDFdO1xuICAgIGlmIChwYXJlbnQgJiYgIUFycmF5LmlzQXJyYXkocGFyZW50KSkge1xuICAgICAgcGFyZW50ID0gW3BhcmVudF07XG4gICAgfVxuICAgIHJldFtrZXkkMV0gPSBwYXJlbnRcbiAgICAgID8gcGFyZW50LmNvbmNhdChjaGlsZClcbiAgICAgIDogQXJyYXkuaXNBcnJheShjaGlsZCkgPyBjaGlsZCA6IFtjaGlsZF07XG4gIH1cbiAgcmV0dXJuIHJldFxufTtcblxuLyoqXG4gKiBPdGhlciBvYmplY3QgaGFzaGVzLlxuICovXG5zdHJhdHMucHJvcHMgPVxuc3RyYXRzLm1ldGhvZHMgPVxuc3RyYXRzLmluamVjdCA9XG5zdHJhdHMuY29tcHV0ZWQgPSBmdW5jdGlvbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtLFxuICBrZXlcbikge1xuICBpZiAoY2hpbGRWYWwgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydE9iamVjdFR5cGUoa2V5LCBjaGlsZFZhbCwgdm0pO1xuICB9XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9XG4gIHZhciByZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBpZiAoY2hpbGRWYWwpIHsgZXh0ZW5kKHJldCwgY2hpbGRWYWwpOyB9XG4gIHJldHVybiByZXRcbn07XG5zdHJhdHMucHJvdmlkZSA9IG1lcmdlRGF0YU9yRm47XG5cbi8qKlxuICogRGVmYXVsdCBzdHJhdGVneS5cbiAqL1xudmFyIGRlZmF1bHRTdHJhdCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gIHJldHVybiBjaGlsZFZhbCA9PT0gdW5kZWZpbmVkXG4gICAgPyBwYXJlbnRWYWxcbiAgICA6IGNoaWxkVmFsXG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGNvbXBvbmVudCBuYW1lc1xuICovXG5mdW5jdGlvbiBjaGVja0NvbXBvbmVudHMgKG9wdGlvbnMpIHtcbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMuY29tcG9uZW50cykge1xuICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShrZXkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ29tcG9uZW50TmFtZSAobmFtZSkge1xuICBpZiAoIW5ldyBSZWdFeHAoKFwiXlthLXpBLVpdW1xcXFwtXFxcXC4wLTlfXCIgKyAodW5pY29kZVJlZ0V4cC5zb3VyY2UpICsgXCJdKiRcIikpLnRlc3QobmFtZSkpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ludmFsaWQgY29tcG9uZW50IG5hbWU6IFwiJyArIG5hbWUgKyAnXCIuIENvbXBvbmVudCBuYW1lcyAnICtcbiAgICAgICdzaG91bGQgY29uZm9ybSB0byB2YWxpZCBjdXN0b20gZWxlbWVudCBuYW1lIGluIGh0bWw1IHNwZWNpZmljYXRpb24uJ1xuICAgICk7XG4gIH1cbiAgaWYgKGlzQnVpbHRJblRhZyhuYW1lKSB8fCBjb25maWcuaXNSZXNlcnZlZFRhZyhuYW1lKSkge1xuICAgIHdhcm4oXG4gICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNlcnZlZCBIVE1MIGVsZW1lbnRzIGFzIGNvbXBvbmVudCAnICtcbiAgICAgICdpZDogJyArIG5hbWVcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogRW5zdXJlIGFsbCBwcm9wcyBvcHRpb24gc3ludGF4IGFyZSBub3JtYWxpemVkIGludG8gdGhlXG4gKiBPYmplY3QtYmFzZWQgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVQcm9wcyAob3B0aW9ucywgdm0pIHtcbiAgdmFyIHByb3BzID0gb3B0aW9ucy5wcm9wcztcbiAgaWYgKCFwcm9wcykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBpLCB2YWwsIG5hbWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgIGkgPSBwcm9wcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdmFsID0gcHJvcHNbaV07XG4gICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmFtZSA9IGNhbWVsaXplKHZhbCk7XG4gICAgICAgIHJlc1tuYW1lXSA9IHsgdHlwZTogbnVsbCB9O1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oJ3Byb3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5nIGFycmF5IHN5bnRheC4nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChwcm9wcykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICAgIHZhbCA9IHByb3BzW2tleV07XG4gICAgICBuYW1lID0gY2FtZWxpemUoa2V5KTtcbiAgICAgIHJlc1tuYW1lXSA9IGlzUGxhaW5PYmplY3QodmFsKVxuICAgICAgICA/IHZhbFxuICAgICAgICA6IHsgdHlwZTogdmFsIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuKFxuICAgICAgXCJJbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gXFxcInByb3BzXFxcIjogZXhwZWN0ZWQgYW4gQXJyYXkgb3IgYW4gT2JqZWN0LCBcIiArXG4gICAgICBcImJ1dCBnb3QgXCIgKyAodG9SYXdUeXBlKHByb3BzKSkgKyBcIi5cIixcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICBvcHRpb25zLnByb3BzID0gcmVzO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhbGwgaW5qZWN0aW9ucyBpbnRvIE9iamVjdC1iYXNlZCBmb3JtYXRcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplSW5qZWN0IChvcHRpb25zLCB2bSkge1xuICB2YXIgaW5qZWN0ID0gb3B0aW9ucy5pbmplY3Q7XG4gIGlmICghaW5qZWN0KSB7IHJldHVybiB9XG4gIHZhciBub3JtYWxpemVkID0gb3B0aW9ucy5pbmplY3QgPSB7fTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5qZWN0KSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5qZWN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBub3JtYWxpemVkW2luamVjdFtpXV0gPSB7IGZyb206IGluamVjdFtpXSB9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGluamVjdCkpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gaW5qZWN0KSB7XG4gICAgICB2YXIgdmFsID0gaW5qZWN0W2tleV07XG4gICAgICBub3JtYWxpemVkW2tleV0gPSBpc1BsYWluT2JqZWN0KHZhbClcbiAgICAgICAgPyBleHRlbmQoeyBmcm9tOiBrZXkgfSwgdmFsKVxuICAgICAgICA6IHsgZnJvbTogdmFsIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuKFxuICAgICAgXCJJbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gXFxcImluamVjdFxcXCI6IGV4cGVjdGVkIGFuIEFycmF5IG9yIGFuIE9iamVjdCwgXCIgK1xuICAgICAgXCJidXQgZ290IFwiICsgKHRvUmF3VHlwZShpbmplY3QpKSArIFwiLlwiLFxuICAgICAgdm1cbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogTm9ybWFsaXplIHJhdyBmdW5jdGlvbiBkaXJlY3RpdmVzIGludG8gb2JqZWN0IGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyAob3B0aW9ucykge1xuICB2YXIgZGlycyA9IG9wdGlvbnMuZGlyZWN0aXZlcztcbiAgaWYgKGRpcnMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gZGlycykge1xuICAgICAgdmFyIGRlZiQkMSA9IGRpcnNba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgZGVmJCQxID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGRpcnNba2V5XSA9IHsgYmluZDogZGVmJCQxLCB1cGRhdGU6IGRlZiQkMSB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRPYmplY3RUeXBlIChuYW1lLCB2YWx1ZSwgdm0pIHtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgIHdhcm4oXG4gICAgICBcIkludmFsaWQgdmFsdWUgZm9yIG9wdGlvbiBcXFwiXCIgKyBuYW1lICsgXCJcXFwiOiBleHBlY3RlZCBhbiBPYmplY3QsIFwiICtcbiAgICAgIFwiYnV0IGdvdCBcIiArICh0b1Jhd1R5cGUodmFsdWUpKSArIFwiLlwiLFxuICAgICAgdm1cbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogTWVyZ2UgdHdvIG9wdGlvbiBvYmplY3RzIGludG8gYSBuZXcgb25lLlxuICogQ29yZSB1dGlsaXR5IHVzZWQgaW4gYm90aCBpbnN0YW50aWF0aW9uIGFuZCBpbmhlcml0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VPcHRpb25zIChcbiAgcGFyZW50LFxuICBjaGlsZCxcbiAgdm1cbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNoZWNrQ29tcG9uZW50cyhjaGlsZCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGNoaWxkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2hpbGQgPSBjaGlsZC5vcHRpb25zO1xuICB9XG5cbiAgbm9ybWFsaXplUHJvcHMoY2hpbGQsIHZtKTtcbiAgbm9ybWFsaXplSW5qZWN0KGNoaWxkLCB2bSk7XG4gIG5vcm1hbGl6ZURpcmVjdGl2ZXMoY2hpbGQpO1xuXG4gIC8vIEFwcGx5IGV4dGVuZHMgYW5kIG1peGlucyBvbiB0aGUgY2hpbGQgb3B0aW9ucyxcbiAgLy8gYnV0IG9ubHkgaWYgaXQgaXMgYSByYXcgb3B0aW9ucyBvYmplY3QgdGhhdCBpc24ndFxuICAvLyB0aGUgcmVzdWx0IG9mIGFub3RoZXIgbWVyZ2VPcHRpb25zIGNhbGwuXG4gIC8vIE9ubHkgbWVyZ2VkIG9wdGlvbnMgaGFzIHRoZSBfYmFzZSBwcm9wZXJ0eS5cbiAgaWYgKCFjaGlsZC5fYmFzZSkge1xuICAgIGlmIChjaGlsZC5leHRlbmRzKSB7XG4gICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5leHRlbmRzLCB2bSk7XG4gICAgfVxuICAgIGlmIChjaGlsZC5taXhpbnMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGQubWl4aW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5taXhpbnNbaV0sIHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgb3B0aW9ucyA9IHt9O1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBwYXJlbnQpIHtcbiAgICBtZXJnZUZpZWxkKGtleSk7XG4gIH1cbiAgZm9yIChrZXkgaW4gY2hpbGQpIHtcbiAgICBpZiAoIWhhc093bihwYXJlbnQsIGtleSkpIHtcbiAgICAgIG1lcmdlRmllbGQoa2V5KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gbWVyZ2VGaWVsZCAoa2V5KSB7XG4gICAgdmFyIHN0cmF0ID0gc3RyYXRzW2tleV0gfHwgZGVmYXVsdFN0cmF0O1xuICAgIG9wdGlvbnNba2V5XSA9IHN0cmF0KHBhcmVudFtrZXldLCBjaGlsZFtrZXldLCB2bSwga2V5KTtcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW4gYXNzZXQuXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYmVjYXVzZSBjaGlsZCBpbnN0YW5jZXMgbmVlZCBhY2Nlc3NcbiAqIHRvIGFzc2V0cyBkZWZpbmVkIGluIGl0cyBhbmNlc3RvciBjaGFpbi5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUFzc2V0IChcbiAgb3B0aW9ucyxcbiAgdHlwZSxcbiAgaWQsXG4gIHdhcm5NaXNzaW5nXG4pIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh0eXBlb2YgaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGFzc2V0cyA9IG9wdGlvbnNbdHlwZV07XG4gIC8vIGNoZWNrIGxvY2FsIHJlZ2lzdHJhdGlvbiB2YXJpYXRpb25zIGZpcnN0XG4gIGlmIChoYXNPd24oYXNzZXRzLCBpZCkpIHsgcmV0dXJuIGFzc2V0c1tpZF0gfVxuICB2YXIgY2FtZWxpemVkSWQgPSBjYW1lbGl6ZShpZCk7XG4gIGlmIChoYXNPd24oYXNzZXRzLCBjYW1lbGl6ZWRJZCkpIHsgcmV0dXJuIGFzc2V0c1tjYW1lbGl6ZWRJZF0gfVxuICB2YXIgUGFzY2FsQ2FzZUlkID0gY2FwaXRhbGl6ZShjYW1lbGl6ZWRJZCk7XG4gIGlmIChoYXNPd24oYXNzZXRzLCBQYXNjYWxDYXNlSWQpKSB7IHJldHVybiBhc3NldHNbUGFzY2FsQ2FzZUlkXSB9XG4gIC8vIGZhbGxiYWNrIHRvIHByb3RvdHlwZSBjaGFpblxuICB2YXIgcmVzID0gYXNzZXRzW2lkXSB8fCBhc3NldHNbY2FtZWxpemVkSWRdIHx8IGFzc2V0c1tQYXNjYWxDYXNlSWRdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuTWlzc2luZyAmJiAhcmVzKSB7XG4gICAgd2FybihcbiAgICAgICdGYWlsZWQgdG8gcmVzb2x2ZSAnICsgdHlwZS5zbGljZSgwLCAtMSkgKyAnOiAnICsgaWQsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wIChcbiAga2V5LFxuICBwcm9wT3B0aW9ucyxcbiAgcHJvcHNEYXRhLFxuICB2bVxuKSB7XG4gIHZhciBwcm9wID0gcHJvcE9wdGlvbnNba2V5XTtcbiAgdmFyIGFic2VudCA9ICFoYXNPd24ocHJvcHNEYXRhLCBrZXkpO1xuICB2YXIgdmFsdWUgPSBwcm9wc0RhdGFba2V5XTtcbiAgLy8gYm9vbGVhbiBjYXN0aW5nXG4gIHZhciBib29sZWFuSW5kZXggPSBnZXRUeXBlSW5kZXgoQm9vbGVhbiwgcHJvcC50eXBlKTtcbiAgaWYgKGJvb2xlYW5JbmRleCA+IC0xKSB7XG4gICAgaWYgKGFic2VudCAmJiAhaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICAgIHZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IGh5cGhlbmF0ZShrZXkpKSB7XG4gICAgICAvLyBvbmx5IGNhc3QgZW1wdHkgc3RyaW5nIC8gc2FtZSBuYW1lIHRvIGJvb2xlYW4gaWZcbiAgICAgIC8vIGJvb2xlYW4gaGFzIGhpZ2hlciBwcmlvcml0eVxuICAgICAgdmFyIHN0cmluZ0luZGV4ID0gZ2V0VHlwZUluZGV4KFN0cmluZywgcHJvcC50eXBlKTtcbiAgICAgIGlmIChzdHJpbmdJbmRleCA8IDAgfHwgYm9vbGVhbkluZGV4IDwgc3RyaW5nSW5kZXgpIHtcbiAgICAgICAgdmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBjaGVjayBkZWZhdWx0IHZhbHVlXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsdWUgPSBnZXRQcm9wRGVmYXVsdFZhbHVlKHZtLCBwcm9wLCBrZXkpO1xuICAgIC8vIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGEgZnJlc2ggY29weSxcbiAgICAvLyBtYWtlIHN1cmUgdG8gb2JzZXJ2ZSBpdC5cbiAgICB2YXIgcHJldlNob3VsZE9ic2VydmUgPSBzaG91bGRPYnNlcnZlO1xuICAgIHRvZ2dsZU9ic2VydmluZyh0cnVlKTtcbiAgICBvYnNlcnZlKHZhbHVlKTtcbiAgICB0b2dnbGVPYnNlcnZpbmcocHJldlNob3VsZE9ic2VydmUpO1xuICB9XG4gIGlmIChcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgLy8gc2tpcCB2YWxpZGF0aW9uIGZvciB3ZWV4IHJlY3ljbGUtbGlzdCBjaGlsZCBjb21wb25lbnQgcHJvcHNcbiAgICAhKGZhbHNlKVxuICApIHtcbiAgICBhc3NlcnRQcm9wKHByb3AsIGtleSwgdmFsdWUsIHZtLCBhYnNlbnQpO1xuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vKipcbiAqIEdldCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIHByb3AuXG4gKi9cbmZ1bmN0aW9uIGdldFByb3BEZWZhdWx0VmFsdWUgKHZtLCBwcm9wLCBrZXkpIHtcbiAgLy8gbm8gZGVmYXVsdCwgcmV0dXJuIHVuZGVmaW5lZFxuICBpZiAoIWhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHZhciBkZWYgPSBwcm9wLmRlZmF1bHQ7XG4gIC8vIHdhcm4gYWdhaW5zdCBub24tZmFjdG9yeSBkZWZhdWx0cyBmb3IgT2JqZWN0ICYgQXJyYXlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNPYmplY3QoZGVmKSkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBkZWZhdWx0IHZhbHVlIGZvciBwcm9wIFwiJyArIGtleSArICdcIjogJyArXG4gICAgICAnUHJvcHMgd2l0aCB0eXBlIE9iamVjdC9BcnJheSBtdXN0IHVzZSBhIGZhY3RvcnkgZnVuY3Rpb24gJyArXG4gICAgICAndG8gcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlLicsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbiAgLy8gdGhlIHJhdyBwcm9wIHZhbHVlIHdhcyBhbHNvIHVuZGVmaW5lZCBmcm9tIHByZXZpb3VzIHJlbmRlcixcbiAgLy8gcmV0dXJuIHByZXZpb3VzIGRlZmF1bHQgdmFsdWUgdG8gYXZvaWQgdW5uZWNlc3Nhcnkgd2F0Y2hlciB0cmlnZ2VyXG4gIGlmICh2bSAmJiB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgJiZcbiAgICB2bS4kb3B0aW9ucy5wcm9wc0RhdGFba2V5XSA9PT0gdW5kZWZpbmVkICYmXG4gICAgdm0uX3Byb3BzW2tleV0gIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdm0uX3Byb3BzW2tleV1cbiAgfVxuICAvLyBjYWxsIGZhY3RvcnkgZnVuY3Rpb24gZm9yIG5vbi1GdW5jdGlvbiB0eXBlc1xuICAvLyBhIHZhbHVlIGlzIEZ1bmN0aW9uIGlmIGl0cyBwcm90b3R5cGUgaXMgZnVuY3Rpb24gZXZlbiBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBjb250ZXh0XG4gIHJldHVybiB0eXBlb2YgZGVmID09PSAnZnVuY3Rpb24nICYmIGdldFR5cGUocHJvcC50eXBlKSAhPT0gJ0Z1bmN0aW9uJ1xuICAgID8gZGVmLmNhbGwodm0pXG4gICAgOiBkZWZcbn1cblxuLyoqXG4gKiBBc3NlcnQgd2hldGhlciBhIHByb3AgaXMgdmFsaWQuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFByb3AgKFxuICBwcm9wLFxuICBuYW1lLFxuICB2YWx1ZSxcbiAgdm0sXG4gIGFic2VudFxuKSB7XG4gIGlmIChwcm9wLnJlcXVpcmVkICYmIGFic2VudCkge1xuICAgIHdhcm4oXG4gICAgICAnTWlzc2luZyByZXF1aXJlZCBwcm9wOiBcIicgKyBuYW1lICsgJ1wiJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCAmJiAhcHJvcC5yZXF1aXJlZCkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciB0eXBlID0gcHJvcC50eXBlO1xuICB2YXIgdmFsaWQgPSAhdHlwZSB8fCB0eXBlID09PSB0cnVlO1xuICB2YXIgZXhwZWN0ZWRUeXBlcyA9IFtdO1xuICBpZiAodHlwZSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgdHlwZSA9IFt0eXBlXTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlLmxlbmd0aCAmJiAhdmFsaWQ7IGkrKykge1xuICAgICAgdmFyIGFzc2VydGVkVHlwZSA9IGFzc2VydFR5cGUodmFsdWUsIHR5cGVbaV0pO1xuICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGFzc2VydGVkVHlwZS5leHBlY3RlZFR5cGUgfHwgJycpO1xuICAgICAgdmFsaWQgPSBhc3NlcnRlZFR5cGUudmFsaWQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF2YWxpZCkge1xuICAgIHdhcm4oXG4gICAgICBnZXRJbnZhbGlkVHlwZU1lc3NhZ2UobmFtZSwgdmFsdWUsIGV4cGVjdGVkVHlwZXMpLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIHZhciB2YWxpZGF0b3IgPSBwcm9wLnZhbGlkYXRvcjtcbiAgaWYgKHZhbGlkYXRvcikge1xuICAgIGlmICghdmFsaWRhdG9yKHZhbHVlKSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0ludmFsaWQgcHJvcDogY3VzdG9tIHZhbGlkYXRvciBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCInICsgbmFtZSArICdcIi4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHNpbXBsZUNoZWNrUkUgPSAvXihTdHJpbmd8TnVtYmVyfEJvb2xlYW58RnVuY3Rpb258U3ltYm9sKSQvO1xuXG5mdW5jdGlvbiBhc3NlcnRUeXBlICh2YWx1ZSwgdHlwZSkge1xuICB2YXIgdmFsaWQ7XG4gIHZhciBleHBlY3RlZFR5cGUgPSBnZXRUeXBlKHR5cGUpO1xuICBpZiAoc2ltcGxlQ2hlY2tSRS50ZXN0KGV4cGVjdGVkVHlwZSkpIHtcbiAgICB2YXIgdCA9IHR5cGVvZiB2YWx1ZTtcbiAgICB2YWxpZCA9IHQgPT09IGV4cGVjdGVkVHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIC8vIGZvciBwcmltaXRpdmUgd3JhcHBlciBvYmplY3RzXG4gICAgaWYgKCF2YWxpZCAmJiB0ID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ09iamVjdCcpIHtcbiAgICB2YWxpZCA9IGlzUGxhaW5PYmplY3QodmFsdWUpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ0FycmF5Jykge1xuICAgIHZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB2YWxpZDogdmFsaWQsXG4gICAgZXhwZWN0ZWRUeXBlOiBleHBlY3RlZFR5cGVcbiAgfVxufVxuXG4vKipcbiAqIFVzZSBmdW5jdGlvbiBzdHJpbmcgbmFtZSB0byBjaGVjayBidWlsdC1pbiB0eXBlcyxcbiAqIGJlY2F1c2UgYSBzaW1wbGUgZXF1YWxpdHkgY2hlY2sgd2lsbCBmYWlsIHdoZW4gcnVubmluZ1xuICogYWNyb3NzIGRpZmZlcmVudCB2bXMgLyBpZnJhbWVzLlxuICovXG5mdW5jdGlvbiBnZXRUeXBlIChmbikge1xuICB2YXIgbWF0Y2ggPSBmbiAmJiBmbi50b1N0cmluZygpLm1hdGNoKC9eXFxzKmZ1bmN0aW9uIChcXHcrKS8pO1xuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6ICcnXG59XG5cbmZ1bmN0aW9uIGlzU2FtZVR5cGUgKGEsIGIpIHtcbiAgcmV0dXJuIGdldFR5cGUoYSkgPT09IGdldFR5cGUoYilcbn1cblxuZnVuY3Rpb24gZ2V0VHlwZUluZGV4ICh0eXBlLCBleHBlY3RlZFR5cGVzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFR5cGVzKSkge1xuICAgIHJldHVybiBpc1NhbWVUeXBlKGV4cGVjdGVkVHlwZXMsIHR5cGUpID8gMCA6IC0xXG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGV4cGVjdGVkVHlwZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoaXNTYW1lVHlwZShleHBlY3RlZFR5cGVzW2ldLCB0eXBlKSkge1xuICAgICAgcmV0dXJuIGlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xXG59XG5cbmZ1bmN0aW9uIGdldEludmFsaWRUeXBlTWVzc2FnZSAobmFtZSwgdmFsdWUsIGV4cGVjdGVkVHlwZXMpIHtcbiAgdmFyIG1lc3NhZ2UgPSBcIkludmFsaWQgcHJvcDogdHlwZSBjaGVjayBmYWlsZWQgZm9yIHByb3AgXFxcIlwiICsgbmFtZSArIFwiXFxcIi5cIiArXG4gICAgXCIgRXhwZWN0ZWQgXCIgKyAoZXhwZWN0ZWRUeXBlcy5tYXAoY2FwaXRhbGl6ZSkuam9pbignLCAnKSk7XG4gIHZhciBleHBlY3RlZFR5cGUgPSBleHBlY3RlZFR5cGVzWzBdO1xuICB2YXIgcmVjZWl2ZWRUeXBlID0gdG9SYXdUeXBlKHZhbHVlKTtcbiAgdmFyIGV4cGVjdGVkVmFsdWUgPSBzdHlsZVZhbHVlKHZhbHVlLCBleHBlY3RlZFR5cGUpO1xuICB2YXIgcmVjZWl2ZWRWYWx1ZSA9IHN0eWxlVmFsdWUodmFsdWUsIHJlY2VpdmVkVHlwZSk7XG4gIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gc3BlY2lmeSBleHBlY3RlZCB2YWx1ZVxuICBpZiAoZXhwZWN0ZWRUeXBlcy5sZW5ndGggPT09IDEgJiZcbiAgICAgIGlzRXhwbGljYWJsZShleHBlY3RlZFR5cGUpICYmXG4gICAgICAhaXNCb29sZWFuKGV4cGVjdGVkVHlwZSwgcmVjZWl2ZWRUeXBlKSkge1xuICAgIG1lc3NhZ2UgKz0gXCIgd2l0aCB2YWx1ZSBcIiArIGV4cGVjdGVkVmFsdWU7XG4gIH1cbiAgbWVzc2FnZSArPSBcIiwgZ290IFwiICsgcmVjZWl2ZWRUeXBlICsgXCIgXCI7XG4gIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gc3BlY2lmeSByZWNlaXZlZCB2YWx1ZVxuICBpZiAoaXNFeHBsaWNhYmxlKHJlY2VpdmVkVHlwZSkpIHtcbiAgICBtZXNzYWdlICs9IFwid2l0aCB2YWx1ZSBcIiArIHJlY2VpdmVkVmFsdWUgKyBcIi5cIjtcbiAgfVxuICByZXR1cm4gbWVzc2FnZVxufVxuXG5mdW5jdGlvbiBzdHlsZVZhbHVlICh2YWx1ZSwgdHlwZSkge1xuICBpZiAodHlwZSA9PT0gJ1N0cmluZycpIHtcbiAgICByZXR1cm4gKFwiXFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIilcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnTnVtYmVyJykge1xuICAgIHJldHVybiAoXCJcIiArIChOdW1iZXIodmFsdWUpKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFwiXCIgKyB2YWx1ZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0V4cGxpY2FibGUgKHZhbHVlKSB7XG4gIHZhciBleHBsaWNpdFR5cGVzID0gWydzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nXTtcbiAgcmV0dXJuIGV4cGxpY2l0VHlwZXMuc29tZShmdW5jdGlvbiAoZWxlbSkgeyByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gZWxlbTsgfSlcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuICgpIHtcbiAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICByZXR1cm4gYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtKSB7IHJldHVybiBlbGVtLnRvTG93ZXJDYXNlKCkgPT09ICdib29sZWFuJzsgfSlcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGhhbmRsZUVycm9yIChlcnIsIHZtLCBpbmZvKSB7XG4gIC8vIERlYWN0aXZhdGUgZGVwcyB0cmFja2luZyB3aGlsZSBwcm9jZXNzaW5nIGVycm9yIGhhbmRsZXIgdG8gYXZvaWQgcG9zc2libGUgaW5maW5pdGUgcmVuZGVyaW5nLlxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWV4L2lzc3Vlcy8xNTA1XG4gIHB1c2hUYXJnZXQoKTtcbiAgdHJ5IHtcbiAgICBpZiAodm0pIHtcbiAgICAgIHZhciBjdXIgPSB2bTtcbiAgICAgIHdoaWxlICgoY3VyID0gY3VyLiRwYXJlbnQpKSB7XG4gICAgICAgIHZhciBob29rcyA9IGN1ci4kb3B0aW9ucy5lcnJvckNhcHR1cmVkO1xuICAgICAgICBpZiAoaG9va3MpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB2YXIgY2FwdHVyZSA9IGhvb2tzW2ldLmNhbGwoY3VyLCBlcnIsIHZtLCBpbmZvKSA9PT0gZmFsc2U7XG4gICAgICAgICAgICAgIGlmIChjYXB0dXJlKSB7IHJldHVybiB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGdsb2JhbEhhbmRsZUVycm9yKGUsIGN1ciwgJ2Vycm9yQ2FwdHVyZWQgaG9vaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBnbG9iYWxIYW5kbGVFcnJvcihlcnIsIHZtLCBpbmZvKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBwb3BUYXJnZXQoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnZva2VXaXRoRXJyb3JIYW5kbGluZyAoXG4gIGhhbmRsZXIsXG4gIGNvbnRleHQsXG4gIGFyZ3MsXG4gIHZtLFxuICBpbmZvXG4pIHtcbiAgdmFyIHJlcztcbiAgdHJ5IHtcbiAgICByZXMgPSBhcmdzID8gaGFuZGxlci5hcHBseShjb250ZXh0LCBhcmdzKSA6IGhhbmRsZXIuY2FsbChjb250ZXh0KTtcbiAgICBpZiAocmVzICYmICFyZXMuX2lzVnVlICYmIGlzUHJvbWlzZShyZXMpICYmICFyZXMuX2hhbmRsZWQpIHtcbiAgICAgIHJlcy5jYXRjaChmdW5jdGlvbiAoZSkgeyByZXR1cm4gaGFuZGxlRXJyb3IoZSwgdm0sIGluZm8gKyBcIiAoUHJvbWlzZS9hc3luYylcIik7IH0pO1xuICAgICAgLy8gaXNzdWUgIzk1MTFcbiAgICAgIC8vIGF2b2lkIGNhdGNoIHRyaWdnZXJpbmcgbXVsdGlwbGUgdGltZXMgd2hlbiBuZXN0ZWQgY2FsbHNcbiAgICAgIHJlcy5faGFuZGxlZCA9IHRydWU7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaGFuZGxlRXJyb3IoZSwgdm0sIGluZm8pO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gZ2xvYmFsSGFuZGxlRXJyb3IgKGVyciwgdm0sIGluZm8pIHtcbiAgaWYgKGNvbmZpZy5lcnJvckhhbmRsZXIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNvbmZpZy5lcnJvckhhbmRsZXIuY2FsbChudWxsLCBlcnIsIHZtLCBpbmZvKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGlmIHRoZSB1c2VyIGludGVudGlvbmFsbHkgdGhyb3dzIHRoZSBvcmlnaW5hbCBlcnJvciBpbiB0aGUgaGFuZGxlcixcbiAgICAgIC8vIGRvIG5vdCBsb2cgaXQgdHdpY2VcbiAgICAgIGlmIChlICE9PSBlcnIpIHtcbiAgICAgICAgbG9nRXJyb3IoZSwgbnVsbCwgJ2NvbmZpZy5lcnJvckhhbmRsZXInKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgbG9nRXJyb3IoZXJyLCB2bSwgaW5mbyk7XG59XG5cbmZ1bmN0aW9uIGxvZ0Vycm9yIChlcnIsIHZtLCBpbmZvKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgd2FybigoXCJFcnJvciBpbiBcIiArIGluZm8gKyBcIjogXFxcIlwiICsgKGVyci50b1N0cmluZygpKSArIFwiXFxcIlwiKSwgdm0pO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICgoaW5Ccm93c2VyIHx8IGluV2VleCkgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgaXNVc2luZ01pY3JvVGFzayA9IGZhbHNlO1xuXG52YXIgY2FsbGJhY2tzID0gW107XG52YXIgcGVuZGluZyA9IGZhbHNlO1xuXG5mdW5jdGlvbiBmbHVzaENhbGxiYWNrcyAoKSB7XG4gIHBlbmRpbmcgPSBmYWxzZTtcbiAgdmFyIGNvcGllcyA9IGNhbGxiYWNrcy5zbGljZSgwKTtcbiAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY29waWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29waWVzW2ldKCk7XG4gIH1cbn1cblxuLy8gSGVyZSB3ZSBoYXZlIGFzeW5jIGRlZmVycmluZyB3cmFwcGVycyB1c2luZyBtaWNyb3Rhc2tzLlxuLy8gSW4gMi41IHdlIHVzZWQgKG1hY3JvKSB0YXNrcyAoaW4gY29tYmluYXRpb24gd2l0aCBtaWNyb3Rhc2tzKS5cbi8vIEhvd2V2ZXIsIGl0IGhhcyBzdWJ0bGUgcHJvYmxlbXMgd2hlbiBzdGF0ZSBpcyBjaGFuZ2VkIHJpZ2h0IGJlZm9yZSByZXBhaW50XG4vLyAoZS5nLiAjNjgxMywgb3V0LWluIHRyYW5zaXRpb25zKS5cbi8vIEFsc28sIHVzaW5nIChtYWNybykgdGFza3MgaW4gZXZlbnQgaGFuZGxlciB3b3VsZCBjYXVzZSBzb21lIHdlaXJkIGJlaGF2aW9yc1xuLy8gdGhhdCBjYW5ub3QgYmUgY2lyY3VtdmVudGVkIChlLmcuICM3MTA5LCAjNzE1MywgIzc1NDYsICM3ODM0LCAjODEwOSkuXG4vLyBTbyB3ZSBub3cgdXNlIG1pY3JvdGFza3MgZXZlcnl3aGVyZSwgYWdhaW4uXG4vLyBBIG1ham9yIGRyYXdiYWNrIG9mIHRoaXMgdHJhZGVvZmYgaXMgdGhhdCB0aGVyZSBhcmUgc29tZSBzY2VuYXJpb3Ncbi8vIHdoZXJlIG1pY3JvdGFza3MgaGF2ZSB0b28gaGlnaCBhIHByaW9yaXR5IGFuZCBmaXJlIGluIGJldHdlZW4gc3VwcG9zZWRseVxuLy8gc2VxdWVudGlhbCBldmVudHMgKGUuZy4gIzQ1MjEsICM2NjkwLCB3aGljaCBoYXZlIHdvcmthcm91bmRzKVxuLy8gb3IgZXZlbiBiZXR3ZWVuIGJ1YmJsaW5nIG9mIHRoZSBzYW1lIGV2ZW50ICgjNjU2NikuXG52YXIgdGltZXJGdW5jO1xuXG4vLyBUaGUgbmV4dFRpY2sgYmVoYXZpb3IgbGV2ZXJhZ2VzIHRoZSBtaWNyb3Rhc2sgcXVldWUsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZFxuLy8gdmlhIGVpdGhlciBuYXRpdmUgUHJvbWlzZS50aGVuIG9yIE11dGF0aW9uT2JzZXJ2ZXIuXG4vLyBNdXRhdGlvbk9ic2VydmVyIGhhcyB3aWRlciBzdXBwb3J0LCBob3dldmVyIGl0IGlzIHNlcmlvdXNseSBidWdnZWQgaW5cbi8vIFVJV2ViVmlldyBpbiBpT1MgPj0gOS4zLjMgd2hlbiB0cmlnZ2VyZWQgaW4gdG91Y2ggZXZlbnQgaGFuZGxlcnMuIEl0XG4vLyBjb21wbGV0ZWx5IHN0b3BzIHdvcmtpbmcgYWZ0ZXIgdHJpZ2dlcmluZyBhIGZldyB0aW1lcy4uLiBzbywgaWYgbmF0aXZlXG4vLyBQcm9taXNlIGlzIGF2YWlsYWJsZSwgd2Ugd2lsbCB1c2UgaXQ6XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCwgJGZsb3ctZGlzYWJsZS1saW5lICovXG5pZiAodHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFByb21pc2UpKSB7XG4gIHZhciBwID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICBwLnRoZW4oZmx1c2hDYWxsYmFja3MpO1xuICAgIC8vIEluIHByb2JsZW1hdGljIFVJV2ViVmlld3MsIFByb21pc2UudGhlbiBkb2Vzbid0IGNvbXBsZXRlbHkgYnJlYWssIGJ1dFxuICAgIC8vIGl0IGNhbiBnZXQgc3R1Y2sgaW4gYSB3ZWlyZCBzdGF0ZSB3aGVyZSBjYWxsYmFja3MgYXJlIHB1c2hlZCBpbnRvIHRoZVxuICAgIC8vIG1pY3JvdGFzayBxdWV1ZSBidXQgdGhlIHF1ZXVlIGlzbid0IGJlaW5nIGZsdXNoZWQsIHVudGlsIHRoZSBicm93c2VyXG4gICAgLy8gbmVlZHMgdG8gZG8gc29tZSBvdGhlciB3b3JrLCBlLmcuIGhhbmRsZSBhIHRpbWVyLiBUaGVyZWZvcmUgd2UgY2FuXG4gICAgLy8gXCJmb3JjZVwiIHRoZSBtaWNyb3Rhc2sgcXVldWUgdG8gYmUgZmx1c2hlZCBieSBhZGRpbmcgYW4gZW1wdHkgdGltZXIuXG4gICAgaWYgKGlzSU9TKSB7IHNldFRpbWVvdXQobm9vcCk7IH1cbiAgfTtcbiAgaXNVc2luZ01pY3JvVGFzayA9IHRydWU7XG59IGVsc2UgaWYgKCFpc0lFICYmIHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gIGlzTmF0aXZlKE11dGF0aW9uT2JzZXJ2ZXIpIHx8XG4gIC8vIFBoYW50b21KUyBhbmQgaU9TIDcueFxuICBNdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0nXG4pKSB7XG4gIC8vIFVzZSBNdXRhdGlvbk9ic2VydmVyIHdoZXJlIG5hdGl2ZSBQcm9taXNlIGlzIG5vdCBhdmFpbGFibGUsXG4gIC8vIGUuZy4gUGhhbnRvbUpTLCBpT1M3LCBBbmRyb2lkIDQuNFxuICAvLyAoIzY0NjYgTXV0YXRpb25PYnNlcnZlciBpcyB1bnJlbGlhYmxlIGluIElFMTEpXG4gIHZhciBjb3VudGVyID0gMTtcbiAgdmFyIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZmx1c2hDYWxsYmFja3MpO1xuICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoY291bnRlcikpO1xuICBvYnNlcnZlci5vYnNlcnZlKHRleHROb2RlLCB7XG4gICAgY2hhcmFjdGVyRGF0YTogdHJ1ZVxuICB9KTtcbiAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIGNvdW50ZXIgPSAoY291bnRlciArIDEpICUgMjtcbiAgICB0ZXh0Tm9kZS5kYXRhID0gU3RyaW5nKGNvdW50ZXIpO1xuICB9O1xuICBpc1VzaW5nTWljcm9UYXNrID0gdHJ1ZTtcbn0gZWxzZSBpZiAodHlwZW9mIHNldEltbWVkaWF0ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoc2V0SW1tZWRpYXRlKSkge1xuICAvLyBGYWxsYmFjayB0byBzZXRJbW1lZGlhdGUuXG4gIC8vIFRlY2hpbmljYWxseSBpdCBsZXZlcmFnZXMgdGhlIChtYWNybykgdGFzayBxdWV1ZSxcbiAgLy8gYnV0IGl0IGlzIHN0aWxsIGEgYmV0dGVyIGNob2ljZSB0aGFuIHNldFRpbWVvdXQuXG4gIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICBzZXRJbW1lZGlhdGUoZmx1c2hDYWxsYmFja3MpO1xuICB9O1xufSBlbHNlIHtcbiAgLy8gRmFsbGJhY2sgdG8gc2V0VGltZW91dC5cbiAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIHNldFRpbWVvdXQoZmx1c2hDYWxsYmFja3MsIDApO1xuICB9O1xufVxuXG5mdW5jdGlvbiBuZXh0VGljayAoY2IsIGN0eCkge1xuICB2YXIgX3Jlc29sdmU7XG4gIGNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY2IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNiLmNhbGwoY3R4KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZSwgY3R4LCAnbmV4dFRpY2snKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKF9yZXNvbHZlKSB7XG4gICAgICBfcmVzb2x2ZShjdHgpO1xuICAgIH1cbiAgfSk7XG4gIGlmICghcGVuZGluZykge1xuICAgIHBlbmRpbmcgPSB0cnVlO1xuICAgIHRpbWVyRnVuYygpO1xuICB9XG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICBpZiAoIWNiICYmIHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgIH0pXG4gIH1cbn1cblxuLyogICovXG5cbi8qIG5vdCB0eXBlIGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBwbGF5IHdlbGwgd2l0aCBQcm94eSAqL1xuXG52YXIgaW5pdFByb3h5O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgYWxsb3dlZEdsb2JhbHMgPSBtYWtlTWFwKFxuICAgICdJbmZpbml0eSx1bmRlZmluZWQsTmFOLGlzRmluaXRlLGlzTmFOLCcgK1xuICAgICdwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSxkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCwnICtcbiAgICAnTWF0aCxOdW1iZXIsRGF0ZSxBcnJheSxPYmplY3QsQm9vbGVhbixTdHJpbmcsUmVnRXhwLE1hcCxTZXQsSlNPTixJbnRsLCcgK1xuICAgICdyZXF1aXJlJyAvLyBmb3IgV2VicGFjay9Ccm93c2VyaWZ5XG4gICk7XG5cbiAgdmFyIHdhcm5Ob25QcmVzZW50ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gICAgd2FybihcbiAgICAgIFwiUHJvcGVydHkgb3IgbWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBub3QgZGVmaW5lZCBvbiB0aGUgaW5zdGFuY2UgYnV0IFwiICtcbiAgICAgICdyZWZlcmVuY2VkIGR1cmluZyByZW5kZXIuIE1ha2Ugc3VyZSB0aGF0IHRoaXMgcHJvcGVydHkgaXMgcmVhY3RpdmUsICcgK1xuICAgICAgJ2VpdGhlciBpbiB0aGUgZGF0YSBvcHRpb24sIG9yIGZvciBjbGFzcy1iYXNlZCBjb21wb25lbnRzLCBieSAnICtcbiAgICAgICdpbml0aWFsaXppbmcgdGhlIHByb3BlcnR5LiAnICtcbiAgICAgICdTZWU6IGh0dHBzOi8vdnVlanMub3JnL3YyL2d1aWRlL3JlYWN0aXZpdHkuaHRtbCNEZWNsYXJpbmctUmVhY3RpdmUtUHJvcGVydGllcy4nLFxuICAgICAgdGFyZ2V0XG4gICAgKTtcbiAgfTtcblxuICB2YXIgd2FyblJlc2VydmVkUHJlZml4ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gICAgd2FybihcbiAgICAgIFwiUHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIG11c3QgYmUgYWNjZXNzZWQgd2l0aCBcXFwiJGRhdGEuXCIgKyBrZXkgKyBcIlxcXCIgYmVjYXVzZSBcIiArXG4gICAgICAncHJvcGVydGllcyBzdGFydGluZyB3aXRoIFwiJFwiIG9yIFwiX1wiIGFyZSBub3QgcHJveGllZCBpbiB0aGUgVnVlIGluc3RhbmNlIHRvICcgK1xuICAgICAgJ3ByZXZlbnQgY29uZmxpY3RzIHdpdGggVnVlIGludGVybmFscycgK1xuICAgICAgJ1NlZTogaHR0cHM6Ly92dWVqcy5vcmcvdjIvYXBpLyNkYXRhJyxcbiAgICAgIHRhcmdldFxuICAgICk7XG4gIH07XG5cbiAgdmFyIGhhc1Byb3h5ID1cbiAgICB0eXBlb2YgUHJveHkgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFByb3h5KTtcblxuICBpZiAoaGFzUHJveHkpIHtcbiAgICB2YXIgaXNCdWlsdEluTW9kaWZpZXIgPSBtYWtlTWFwKCdzdG9wLHByZXZlbnQsc2VsZixjdHJsLHNoaWZ0LGFsdCxtZXRhLGV4YWN0Jyk7XG4gICAgY29uZmlnLmtleUNvZGVzID0gbmV3IFByb3h5KGNvbmZpZy5rZXlDb2Rlcywge1xuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNCdWlsdEluTW9kaWZpZXIoa2V5KSkge1xuICAgICAgICAgIHdhcm4oKFwiQXZvaWQgb3ZlcndyaXRpbmcgYnVpbHQtaW4gbW9kaWZpZXIgaW4gY29uZmlnLmtleUNvZGVzOiAuXCIgKyBrZXkpKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBoYXNIYW5kbGVyID0ge1xuICAgIGhhczogZnVuY3Rpb24gaGFzICh0YXJnZXQsIGtleSkge1xuICAgICAgdmFyIGhhcyA9IGtleSBpbiB0YXJnZXQ7XG4gICAgICB2YXIgaXNBbGxvd2VkID0gYWxsb3dlZEdsb2JhbHMoa2V5KSB8fFxuICAgICAgICAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYga2V5LmNoYXJBdCgwKSA9PT0gJ18nICYmICEoa2V5IGluIHRhcmdldC4kZGF0YSkpO1xuICAgICAgaWYgKCFoYXMgJiYgIWlzQWxsb3dlZCkge1xuICAgICAgICBpZiAoa2V5IGluIHRhcmdldC4kZGF0YSkgeyB3YXJuUmVzZXJ2ZWRQcmVmaXgodGFyZ2V0LCBrZXkpOyB9XG4gICAgICAgIGVsc2UgeyB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7IH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXMgfHwgIWlzQWxsb3dlZFxuICAgIH1cbiAgfTtcblxuICB2YXIgZ2V0SGFuZGxlciA9IHtcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiAhKGtleSBpbiB0YXJnZXQpKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0LiRkYXRhKSB7IHdhcm5SZXNlcnZlZFByZWZpeCh0YXJnZXQsIGtleSk7IH1cbiAgICAgICAgZWxzZSB7IHdhcm5Ob25QcmVzZW50KHRhcmdldCwga2V5KTsgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldFtrZXldXG4gICAgfVxuICB9O1xuXG4gIGluaXRQcm94eSA9IGZ1bmN0aW9uIGluaXRQcm94eSAodm0pIHtcbiAgICBpZiAoaGFzUHJveHkpIHtcbiAgICAgIC8vIGRldGVybWluZSB3aGljaCBwcm94eSBoYW5kbGVyIHRvIHVzZVxuICAgICAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcbiAgICAgIHZhciBoYW5kbGVycyA9IG9wdGlvbnMucmVuZGVyICYmIG9wdGlvbnMucmVuZGVyLl93aXRoU3RyaXBwZWRcbiAgICAgICAgPyBnZXRIYW5kbGVyXG4gICAgICAgIDogaGFzSGFuZGxlcjtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IG5ldyBQcm94eSh2bSwgaGFuZGxlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgc2Vlbk9iamVjdHMgPSBuZXcgX1NldCgpO1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIGFuIG9iamVjdCB0byBldm9rZSBhbGwgY29udmVydGVkXG4gKiBnZXR0ZXJzLCBzbyB0aGF0IGV2ZXJ5IG5lc3RlZCBwcm9wZXJ0eSBpbnNpZGUgdGhlIG9iamVjdFxuICogaXMgY29sbGVjdGVkIGFzIGEgXCJkZWVwXCIgZGVwZW5kZW5jeS5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2UgKHZhbCkge1xuICBfdHJhdmVyc2UodmFsLCBzZWVuT2JqZWN0cyk7XG4gIHNlZW5PYmplY3RzLmNsZWFyKCk7XG59XG5cbmZ1bmN0aW9uIF90cmF2ZXJzZSAodmFsLCBzZWVuKSB7XG4gIHZhciBpLCBrZXlzO1xuICB2YXIgaXNBID0gQXJyYXkuaXNBcnJheSh2YWwpO1xuICBpZiAoKCFpc0EgJiYgIWlzT2JqZWN0KHZhbCkpIHx8IE9iamVjdC5pc0Zyb3plbih2YWwpIHx8IHZhbCBpbnN0YW5jZW9mIFZOb2RlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbC5fX29iX18pIHtcbiAgICB2YXIgZGVwSWQgPSB2YWwuX19vYl9fLmRlcC5pZDtcbiAgICBpZiAoc2Vlbi5oYXMoZGVwSWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2Vlbi5hZGQoZGVwSWQpO1xuICB9XG4gIGlmIChpc0EpIHtcbiAgICBpID0gdmFsLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxbaV0sIHNlZW4pOyB9XG4gIH0gZWxzZSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgaSA9IGtleXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNlKHZhbFtrZXlzW2ldXSwgc2Vlbik7IH1cbiAgfVxufVxuXG52YXIgbWFyaztcbnZhciBtZWFzdXJlO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgcGVyZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucGVyZm9ybWFuY2U7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgcGVyZiAmJlxuICAgIHBlcmYubWFyayAmJlxuICAgIHBlcmYubWVhc3VyZSAmJlxuICAgIHBlcmYuY2xlYXJNYXJrcyAmJlxuICAgIHBlcmYuY2xlYXJNZWFzdXJlc1xuICApIHtcbiAgICBtYXJrID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gcGVyZi5tYXJrKHRhZyk7IH07XG4gICAgbWVhc3VyZSA9IGZ1bmN0aW9uIChuYW1lLCBzdGFydFRhZywgZW5kVGFnKSB7XG4gICAgICBwZXJmLm1lYXN1cmUobmFtZSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWFya3Moc3RhcnRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKGVuZFRhZyk7XG4gICAgICAvLyBwZXJmLmNsZWFyTWVhc3VyZXMobmFtZSlcbiAgICB9O1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgbm9ybWFsaXplRXZlbnQgPSBjYWNoZWQoZnVuY3Rpb24gKG5hbWUpIHtcbiAgdmFyIHBhc3NpdmUgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJyYnO1xuICBuYW1lID0gcGFzc2l2ZSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIgb25jZSQkMSA9IG5hbWUuY2hhckF0KDApID09PSAnfic7IC8vIFByZWZpeGVkIGxhc3QsIGNoZWNrZWQgZmlyc3RcbiAgbmFtZSA9IG9uY2UkJDEgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgdmFyIGNhcHR1cmUgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJyEnO1xuICBuYW1lID0gY2FwdHVyZSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgb25jZTogb25jZSQkMSxcbiAgICBjYXB0dXJlOiBjYXB0dXJlLFxuICAgIHBhc3NpdmU6IHBhc3NpdmVcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUZuSW52b2tlciAoZm5zLCB2bSkge1xuICBmdW5jdGlvbiBpbnZva2VyICgpIHtcbiAgICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAgICB2YXIgZm5zID0gaW52b2tlci5mbnM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm5zKSkge1xuICAgICAgdmFyIGNsb25lZCA9IGZucy5zbGljZSgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbG9uZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoY2xvbmVkW2ldLCBudWxsLCBhcmd1bWVudHMkMSwgdm0sIFwidi1vbiBoYW5kbGVyXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyByZXR1cm4gaGFuZGxlciByZXR1cm4gdmFsdWUgZm9yIHNpbmdsZSBoYW5kbGVyc1xuICAgICAgcmV0dXJuIGludm9rZVdpdGhFcnJvckhhbmRsaW5nKGZucywgbnVsbCwgYXJndW1lbnRzLCB2bSwgXCJ2LW9uIGhhbmRsZXJcIilcbiAgICB9XG4gIH1cbiAgaW52b2tlci5mbnMgPSBmbnM7XG4gIHJldHVybiBpbnZva2VyXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUxpc3RlbmVycyAoXG4gIG9uLFxuICBvbGRPbixcbiAgYWRkLFxuICByZW1vdmUkJDEsXG4gIGNyZWF0ZU9uY2VIYW5kbGVyLFxuICB2bVxuKSB7XG4gIHZhciBuYW1lLCBkZWYkJDEsIGN1ciwgb2xkLCBldmVudDtcbiAgZm9yIChuYW1lIGluIG9uKSB7XG4gICAgZGVmJCQxID0gY3VyID0gb25bbmFtZV07XG4gICAgb2xkID0gb2xkT25bbmFtZV07XG4gICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICBpZiAoaXNVbmRlZihjdXIpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiSW52YWxpZCBoYW5kbGVyIGZvciBldmVudCBcXFwiXCIgKyAoZXZlbnQubmFtZSkgKyBcIlxcXCI6IGdvdCBcIiArIFN0cmluZyhjdXIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5kZWYob2xkKSkge1xuICAgICAgaWYgKGlzVW5kZWYoY3VyLmZucykpIHtcbiAgICAgICAgY3VyID0gb25bbmFtZV0gPSBjcmVhdGVGbkludm9rZXIoY3VyLCB2bSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNUcnVlKGV2ZW50Lm9uY2UpKSB7XG4gICAgICAgIGN1ciA9IG9uW25hbWVdID0gY3JlYXRlT25jZUhhbmRsZXIoZXZlbnQubmFtZSwgY3VyLCBldmVudC5jYXB0dXJlKTtcbiAgICAgIH1cbiAgICAgIGFkZChldmVudC5uYW1lLCBjdXIsIGV2ZW50LmNhcHR1cmUsIGV2ZW50LnBhc3NpdmUsIGV2ZW50LnBhcmFtcyk7XG4gICAgfSBlbHNlIGlmIChjdXIgIT09IG9sZCkge1xuICAgICAgb2xkLmZucyA9IGN1cjtcbiAgICAgIG9uW25hbWVdID0gb2xkO1xuICAgIH1cbiAgfVxuICBmb3IgKG5hbWUgaW4gb2xkT24pIHtcbiAgICBpZiAoaXNVbmRlZihvbltuYW1lXSkpIHtcbiAgICAgIGV2ZW50ID0gbm9ybWFsaXplRXZlbnQobmFtZSk7XG4gICAgICByZW1vdmUkJDEoZXZlbnQubmFtZSwgb2xkT25bbmFtZV0sIGV2ZW50LmNhcHR1cmUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gbWVyZ2VWTm9kZUhvb2sgKGRlZiwgaG9va0tleSwgaG9vaykge1xuICBpZiAoZGVmIGluc3RhbmNlb2YgVk5vZGUpIHtcbiAgICBkZWYgPSBkZWYuZGF0YS5ob29rIHx8IChkZWYuZGF0YS5ob29rID0ge30pO1xuICB9XG4gIHZhciBpbnZva2VyO1xuICB2YXIgb2xkSG9vayA9IGRlZltob29rS2V5XTtcblxuICBmdW5jdGlvbiB3cmFwcGVkSG9vayAoKSB7XG4gICAgaG9vay5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIC8vIGltcG9ydGFudDogcmVtb3ZlIG1lcmdlZCBob29rIHRvIGVuc3VyZSBpdCdzIGNhbGxlZCBvbmx5IG9uY2VcbiAgICAvLyBhbmQgcHJldmVudCBtZW1vcnkgbGVha1xuICAgIHJlbW92ZShpbnZva2VyLmZucywgd3JhcHBlZEhvb2spO1xuICB9XG5cbiAgaWYgKGlzVW5kZWYob2xkSG9vaykpIHtcbiAgICAvLyBubyBleGlzdGluZyBob29rXG4gICAgaW52b2tlciA9IGNyZWF0ZUZuSW52b2tlcihbd3JhcHBlZEhvb2tdKTtcbiAgfSBlbHNlIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXNEZWYob2xkSG9vay5mbnMpICYmIGlzVHJ1ZShvbGRIb29rLm1lcmdlZCkpIHtcbiAgICAgIC8vIGFscmVhZHkgYSBtZXJnZWQgaW52b2tlclxuICAgICAgaW52b2tlciA9IG9sZEhvb2s7XG4gICAgICBpbnZva2VyLmZucy5wdXNoKHdyYXBwZWRIb29rKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXhpc3RpbmcgcGxhaW4gaG9va1xuICAgICAgaW52b2tlciA9IGNyZWF0ZUZuSW52b2tlcihbb2xkSG9vaywgd3JhcHBlZEhvb2tdKTtcbiAgICB9XG4gIH1cblxuICBpbnZva2VyLm1lcmdlZCA9IHRydWU7XG4gIGRlZltob29rS2V5XSA9IGludm9rZXI7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBleHRyYWN0UHJvcHNGcm9tVk5vZGVEYXRhIChcbiAgZGF0YSxcbiAgQ3RvcixcbiAgdGFnXG4pIHtcbiAgLy8gd2UgYXJlIG9ubHkgZXh0cmFjdGluZyByYXcgdmFsdWVzIGhlcmUuXG4gIC8vIHZhbGlkYXRpb24gYW5kIGRlZmF1bHQgdmFsdWVzIGFyZSBoYW5kbGVkIGluIHRoZSBjaGlsZFxuICAvLyBjb21wb25lbnQgaXRzZWxmLlxuICB2YXIgcHJvcE9wdGlvbnMgPSBDdG9yLm9wdGlvbnMucHJvcHM7XG4gIGlmIChpc1VuZGVmKHByb3BPcHRpb25zKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGF0dHJzID0gZGF0YS5hdHRycztcbiAgdmFyIHByb3BzID0gZGF0YS5wcm9wcztcbiAgaWYgKGlzRGVmKGF0dHJzKSB8fCBpc0RlZihwcm9wcykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHZhciBhbHRLZXkgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhciBrZXlJbkxvd2VyQ2FzZSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAga2V5ICE9PSBrZXlJbkxvd2VyQ2FzZSAmJlxuICAgICAgICAgIGF0dHJzICYmIGhhc093bihhdHRycywga2V5SW5Mb3dlckNhc2UpXG4gICAgICAgICkge1xuICAgICAgICAgIHRpcChcbiAgICAgICAgICAgIFwiUHJvcCBcXFwiXCIgKyBrZXlJbkxvd2VyQ2FzZSArIFwiXFxcIiBpcyBwYXNzZWQgdG8gY29tcG9uZW50IFwiICtcbiAgICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHRhZyB8fCBDdG9yKSkgKyBcIiwgYnV0IHRoZSBkZWNsYXJlZCBwcm9wIG5hbWUgaXNcIiArXG4gICAgICAgICAgICBcIiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuIFwiICtcbiAgICAgICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgY2FtZWxDYXNlZCBcIiArXG4gICAgICAgICAgICBcInByb3BzIG5lZWQgdG8gdXNlIHRoZWlyIGtlYmFiLWNhc2UgZXF1aXZhbGVudHMgd2hlbiB1c2luZyBpbi1ET00gXCIgK1xuICAgICAgICAgICAgXCJ0ZW1wbGF0ZXMuIFlvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIGFsdEtleSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGtleSArIFwiXFxcIi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNoZWNrUHJvcChyZXMsIHByb3BzLCBrZXksIGFsdEtleSwgdHJ1ZSkgfHxcbiAgICAgIGNoZWNrUHJvcChyZXMsIGF0dHJzLCBrZXksIGFsdEtleSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvcCAoXG4gIHJlcyxcbiAgaGFzaCxcbiAga2V5LFxuICBhbHRLZXksXG4gIHByZXNlcnZlXG4pIHtcbiAgaWYgKGlzRGVmKGhhc2gpKSB7XG4gICAgaWYgKGhhc093bihoYXNoLCBrZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hba2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChoYXNPd24oaGFzaCwgYWx0S2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2FsdEtleV07XG4gICAgICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2FsdEtleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbi8vIFRoZSB0ZW1wbGF0ZSBjb21waWxlciBhdHRlbXB0cyB0byBtaW5pbWl6ZSB0aGUgbmVlZCBmb3Igbm9ybWFsaXphdGlvbiBieVxuLy8gc3RhdGljYWxseSBhbmFseXppbmcgdGhlIHRlbXBsYXRlIGF0IGNvbXBpbGUgdGltZS5cbi8vXG4vLyBGb3IgcGxhaW4gSFRNTCBtYXJrdXAsIG5vcm1hbGl6YXRpb24gY2FuIGJlIGNvbXBsZXRlbHkgc2tpcHBlZCBiZWNhdXNlIHRoZVxuLy8gZ2VuZXJhdGVkIHJlbmRlciBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBBcnJheTxWTm9kZT4uIFRoZXJlIGFyZVxuLy8gdHdvIGNhc2VzIHdoZXJlIGV4dHJhIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkOlxuXG4vLyAxLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlucyBjb21wb25lbnRzIC0gYmVjYXVzZSBhIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4vLyBtYXkgcmV0dXJuIGFuIEFycmF5IGluc3RlYWQgb2YgYSBzaW5nbGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBqdXN0IGEgc2ltcGxlXG4vLyBub3JtYWxpemF0aW9uIGlzIG5lZWRlZCAtIGlmIGFueSBjaGlsZCBpcyBhbiBBcnJheSwgd2UgZmxhdHRlbiB0aGUgd2hvbGVcbi8vIHRoaW5nIHdpdGggQXJyYXkucHJvdG90eXBlLmNvbmNhdC4gSXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvbmx5IDEtbGV2ZWwgZGVlcFxuLy8gYmVjYXVzZSBmdW5jdGlvbmFsIGNvbXBvbmVudHMgYWxyZWFkeSBub3JtYWxpemUgdGhlaXIgb3duIGNoaWxkcmVuLlxuZnVuY3Rpb24gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbltpXSkpIHtcbiAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBjaGlsZHJlbilcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuXG59XG5cbi8vIDIuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbnN0cnVjdHMgdGhhdCBhbHdheXMgZ2VuZXJhdGVkIG5lc3RlZCBBcnJheXMsXG4vLyBlLmcuIDx0ZW1wbGF0ZT4sIDxzbG90Piwgdi1mb3IsIG9yIHdoZW4gdGhlIGNoaWxkcmVuIGlzIHByb3ZpZGVkIGJ5IHVzZXJcbi8vIHdpdGggaGFuZC13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMgLyBKU1guIEluIHN1Y2ggY2FzZXMgYSBmdWxsIG5vcm1hbGl6YXRpb25cbi8vIGlzIG5lZWRlZCB0byBjYXRlciB0byBhbGwgcG9zc2libGUgdHlwZXMgb2YgY2hpbGRyZW4gdmFsdWVzLlxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIHJldHVybiBpc1ByaW1pdGl2ZShjaGlsZHJlbilcbiAgICA/IFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXVxuICAgIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbilcbiAgICAgID8gbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjaGlsZHJlbilcbiAgICAgIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGlzVGV4dE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIGlzRGVmKG5vZGUpICYmIGlzRGVmKG5vZGUudGV4dCkgJiYgaXNGYWxzZShub2RlLmlzQ29tbWVudClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXlDaGlsZHJlbiAoY2hpbGRyZW4sIG5lc3RlZEluZGV4KSB7XG4gIHZhciByZXMgPSBbXTtcbiAgdmFyIGksIGMsIGxhc3RJbmRleCwgbGFzdDtcbiAgZm9yIChpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgYyA9IGNoaWxkcmVuW2ldO1xuICAgIGlmIChpc1VuZGVmKGMpIHx8IHR5cGVvZiBjID09PSAnYm9vbGVhbicpIHsgY29udGludWUgfVxuICAgIGxhc3RJbmRleCA9IHJlcy5sZW5ndGggLSAxO1xuICAgIGxhc3QgPSByZXNbbGFzdEluZGV4XTtcbiAgICAvLyAgbmVzdGVkXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYykpIHtcbiAgICAgIGlmIChjLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYyA9IG5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4oYywgKChuZXN0ZWRJbmRleCB8fCAnJykgKyBcIl9cIiArIGkpKTtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICBpZiAoaXNUZXh0Tm9kZShjWzBdKSAmJiBpc1RleHROb2RlKGxhc3QpKSB7XG4gICAgICAgICAgcmVzW2xhc3RJbmRleF0gPSBjcmVhdGVUZXh0Vk5vZGUobGFzdC50ZXh0ICsgKGNbMF0pLnRleHQpO1xuICAgICAgICAgIGMuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaC5hcHBseShyZXMsIGMpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUoYykpIHtcbiAgICAgIGlmIChpc1RleHROb2RlKGxhc3QpKSB7XG4gICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgICAgLy8gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIFNTUiBoeWRyYXRpb24gYmVjYXVzZSB0ZXh0IG5vZGVzIGFyZVxuICAgICAgICAvLyBlc3NlbnRpYWxseSBtZXJnZWQgd2hlbiByZW5kZXJlZCB0byBIVE1MIHN0cmluZ3NcbiAgICAgICAgcmVzW2xhc3RJbmRleF0gPSBjcmVhdGVUZXh0Vk5vZGUobGFzdC50ZXh0ICsgYyk7XG4gICAgICB9IGVsc2UgaWYgKGMgIT09ICcnKSB7XG4gICAgICAgIC8vIGNvbnZlcnQgcHJpbWl0aXZlIHRvIHZub2RlXG4gICAgICAgIHJlcy5wdXNoKGNyZWF0ZVRleHRWTm9kZShjKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1RleHROb2RlKGMpICYmIGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICByZXNbbGFzdEluZGV4XSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyBjLnRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGVmYXVsdCBrZXkgZm9yIG5lc3RlZCBhcnJheSBjaGlsZHJlbiAobGlrZWx5IGdlbmVyYXRlZCBieSB2LWZvcilcbiAgICAgICAgaWYgKGlzVHJ1ZShjaGlsZHJlbi5faXNWTGlzdCkgJiZcbiAgICAgICAgICBpc0RlZihjLnRhZykgJiZcbiAgICAgICAgICBpc1VuZGVmKGMua2V5KSAmJlxuICAgICAgICAgIGlzRGVmKG5lc3RlZEluZGV4KSkge1xuICAgICAgICAgIGMua2V5ID0gXCJfX3ZsaXN0XCIgKyBuZXN0ZWRJbmRleCArIFwiX1wiICsgaSArIFwiX19cIjtcbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaChjKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFByb3ZpZGUgKHZtKSB7XG4gIHZhciBwcm92aWRlID0gdm0uJG9wdGlvbnMucHJvdmlkZTtcbiAgaWYgKHByb3ZpZGUpIHtcbiAgICB2bS5fcHJvdmlkZWQgPSB0eXBlb2YgcHJvdmlkZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBwcm92aWRlLmNhbGwodm0pXG4gICAgICA6IHByb3ZpZGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdEluamVjdGlvbnMgKHZtKSB7XG4gIHZhciByZXN1bHQgPSByZXNvbHZlSW5qZWN0KHZtLiRvcHRpb25zLmluamVjdCwgdm0pO1xuICBpZiAocmVzdWx0KSB7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKGZhbHNlKTtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYW4gaW5qZWN0ZWQgdmFsdWUgZGlyZWN0bHkgc2luY2UgdGhlIGNoYW5nZXMgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBcIm92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwcm92aWRlZCBjb21wb25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAgICAgICAgICAgXCJpbmplY3Rpb24gYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0W2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRvZ2dsZU9ic2VydmluZyh0cnVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlSW5qZWN0IChpbmplY3QsIHZtKSB7XG4gIGlmIChpbmplY3QpIHtcbiAgICAvLyBpbmplY3QgaXMgOmFueSBiZWNhdXNlIGZsb3cgaXMgbm90IHNtYXJ0IGVub3VnaCB0byBmaWd1cmUgb3V0IGNhY2hlZFxuICAgIHZhciByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBrZXlzID0gaGFzU3ltYm9sXG4gICAgICA/IFJlZmxlY3Qub3duS2V5cyhpbmplY3QpXG4gICAgICA6IE9iamVjdC5rZXlzKGluamVjdCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgLy8gIzY1NzQgaW4gY2FzZSB0aGUgaW5qZWN0IG9iamVjdCBpcyBvYnNlcnZlZC4uLlxuICAgICAgaWYgKGtleSA9PT0gJ19fb2JfXycpIHsgY29udGludWUgfVxuICAgICAgdmFyIHByb3ZpZGVLZXkgPSBpbmplY3Rba2V5XS5mcm9tO1xuICAgICAgdmFyIHNvdXJjZSA9IHZtO1xuICAgICAgd2hpbGUgKHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLl9wcm92aWRlZCAmJiBoYXNPd24oc291cmNlLl9wcm92aWRlZCwgcHJvdmlkZUtleSkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHNvdXJjZS5fcHJvdmlkZWRbcHJvdmlkZUtleV07XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgPSBzb3VyY2UuJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIGlmICghc291cmNlKSB7XG4gICAgICAgIGlmICgnZGVmYXVsdCcgaW4gaW5qZWN0W2tleV0pIHtcbiAgICAgICAgICB2YXIgcHJvdmlkZURlZmF1bHQgPSBpbmplY3Rba2V5XS5kZWZhdWx0O1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gdHlwZW9mIHByb3ZpZGVEZWZhdWx0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHByb3ZpZGVEZWZhdWx0LmNhbGwodm0pXG4gICAgICAgICAgICA6IHByb3ZpZGVEZWZhdWx0O1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKChcIkluamVjdGlvbiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgbm90IGZvdW5kXCIpLCB2bSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbi8qICAqL1xuXG5cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVzb2x2aW5nIHJhdyBjaGlsZHJlbiBWTm9kZXMgaW50byBhIHNsb3Qgb2JqZWN0LlxuICovXG5mdW5jdGlvbiByZXNvbHZlU2xvdHMgKFxuICBjaGlsZHJlbixcbiAgY29udGV4dFxuKSB7XG4gIGlmICghY2hpbGRyZW4gfHwgIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgIHJldHVybiB7fVxuICB9XG4gIHZhciBzbG90cyA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIHZhciBkYXRhID0gY2hpbGQuZGF0YTtcbiAgICAvLyByZW1vdmUgc2xvdCBhdHRyaWJ1dGUgaWYgdGhlIG5vZGUgaXMgcmVzb2x2ZWQgYXMgYSBWdWUgc2xvdCBub2RlXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5hdHRycyAmJiBkYXRhLmF0dHJzLnNsb3QpIHtcbiAgICAgIGRlbGV0ZSBkYXRhLmF0dHJzLnNsb3Q7XG4gICAgfVxuICAgIC8vIG5hbWVkIHNsb3RzIHNob3VsZCBvbmx5IGJlIHJlc3BlY3RlZCBpZiB0aGUgdm5vZGUgd2FzIHJlbmRlcmVkIGluIHRoZVxuICAgIC8vIHNhbWUgY29udGV4dC5cbiAgICBpZiAoKGNoaWxkLmNvbnRleHQgPT09IGNvbnRleHQgfHwgY2hpbGQuZm5Db250ZXh0ID09PSBjb250ZXh0KSAmJlxuICAgICAgZGF0YSAmJiBkYXRhLnNsb3QgIT0gbnVsbFxuICAgICkge1xuICAgICAgdmFyIG5hbWUgPSBkYXRhLnNsb3Q7XG4gICAgICB2YXIgc2xvdCA9IChzbG90c1tuYW1lXSB8fCAoc2xvdHNbbmFtZV0gPSBbXSkpO1xuICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgICBzbG90LnB1c2guYXBwbHkoc2xvdCwgY2hpbGQuY2hpbGRyZW4gfHwgW10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xvdC5wdXNoKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgKHNsb3RzLmRlZmF1bHQgfHwgKHNsb3RzLmRlZmF1bHQgPSBbXSkpLnB1c2goY2hpbGQpO1xuICAgIH1cbiAgfVxuICAvLyBpZ25vcmUgc2xvdHMgdGhhdCBjb250YWlucyBvbmx5IHdoaXRlc3BhY2VcbiAgZm9yICh2YXIgbmFtZSQxIGluIHNsb3RzKSB7XG4gICAgaWYgKHNsb3RzW25hbWUkMV0uZXZlcnkoaXNXaGl0ZXNwYWNlKSkge1xuICAgICAgZGVsZXRlIHNsb3RzW25hbWUkMV07XG4gICAgfVxuICB9XG4gIHJldHVybiBzbG90c1xufVxuXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UgKG5vZGUpIHtcbiAgcmV0dXJuIChub2RlLmlzQ29tbWVudCAmJiAhbm9kZS5hc3luY0ZhY3RvcnkpIHx8IG5vZGUudGV4dCA9PT0gJyAnXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBub3JtYWxpemVTY29wZWRTbG90cyAoXG4gIHNsb3RzLFxuICBub3JtYWxTbG90cyxcbiAgcHJldlNsb3RzXG4pIHtcbiAgdmFyIHJlcztcbiAgdmFyIGhhc05vcm1hbFNsb3RzID0gT2JqZWN0LmtleXMobm9ybWFsU2xvdHMpLmxlbmd0aCA+IDA7XG4gIHZhciBpc1N0YWJsZSA9IHNsb3RzID8gISFzbG90cy4kc3RhYmxlIDogIWhhc05vcm1hbFNsb3RzO1xuICB2YXIga2V5ID0gc2xvdHMgJiYgc2xvdHMuJGtleTtcbiAgaWYgKCFzbG90cykge1xuICAgIHJlcyA9IHt9O1xuICB9IGVsc2UgaWYgKHNsb3RzLl9ub3JtYWxpemVkKSB7XG4gICAgLy8gZmFzdCBwYXRoIDE6IGNoaWxkIGNvbXBvbmVudCByZS1yZW5kZXIgb25seSwgcGFyZW50IGRpZCBub3QgY2hhbmdlXG4gICAgcmV0dXJuIHNsb3RzLl9ub3JtYWxpemVkXG4gIH0gZWxzZSBpZiAoXG4gICAgaXNTdGFibGUgJiZcbiAgICBwcmV2U2xvdHMgJiZcbiAgICBwcmV2U2xvdHMgIT09IGVtcHR5T2JqZWN0ICYmXG4gICAga2V5ID09PSBwcmV2U2xvdHMuJGtleSAmJlxuICAgICFoYXNOb3JtYWxTbG90cyAmJlxuICAgICFwcmV2U2xvdHMuJGhhc05vcm1hbFxuICApIHtcbiAgICAvLyBmYXN0IHBhdGggMjogc3RhYmxlIHNjb3BlZCBzbG90cyB3LyBubyBub3JtYWwgc2xvdHMgdG8gcHJveHksXG4gICAgLy8gb25seSBuZWVkIHRvIG5vcm1hbGl6ZSBvbmNlXG4gICAgcmV0dXJuIHByZXZTbG90c1xuICB9IGVsc2Uge1xuICAgIHJlcyA9IHt9O1xuICAgIGZvciAodmFyIGtleSQxIGluIHNsb3RzKSB7XG4gICAgICBpZiAoc2xvdHNba2V5JDFdICYmIGtleSQxWzBdICE9PSAnJCcpIHtcbiAgICAgICAgcmVzW2tleSQxXSA9IG5vcm1hbGl6ZVNjb3BlZFNsb3Qobm9ybWFsU2xvdHMsIGtleSQxLCBzbG90c1trZXkkMV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBleHBvc2Ugbm9ybWFsIHNsb3RzIG9uIHNjb3BlZFNsb3RzXG4gIGZvciAodmFyIGtleSQyIGluIG5vcm1hbFNsb3RzKSB7XG4gICAgaWYgKCEoa2V5JDIgaW4gcmVzKSkge1xuICAgICAgcmVzW2tleSQyXSA9IHByb3h5Tm9ybWFsU2xvdChub3JtYWxTbG90cywga2V5JDIpO1xuICAgIH1cbiAgfVxuICAvLyBhdm9yaWF6IHNlZW1zIHRvIG1vY2sgYSBub24tZXh0ZW5zaWJsZSAkc2NvcGVkU2xvdHMgb2JqZWN0XG4gIC8vIGFuZCB3aGVuIHRoYXQgaXMgcGFzc2VkIGRvd24gdGhpcyB3b3VsZCBjYXVzZSBhbiBlcnJvclxuICBpZiAoc2xvdHMgJiYgT2JqZWN0LmlzRXh0ZW5zaWJsZShzbG90cykpIHtcbiAgICAoc2xvdHMpLl9ub3JtYWxpemVkID0gcmVzO1xuICB9XG4gIGRlZihyZXMsICckc3RhYmxlJywgaXNTdGFibGUpO1xuICBkZWYocmVzLCAnJGtleScsIGtleSk7XG4gIGRlZihyZXMsICckaGFzTm9ybWFsJywgaGFzTm9ybWFsU2xvdHMpO1xuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNjb3BlZFNsb3Qobm9ybWFsU2xvdHMsIGtleSwgZm4pIHtcbiAgdmFyIG5vcm1hbGl6ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IGFyZ3VtZW50cy5sZW5ndGggPyBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpIDogZm4oe30pO1xuICAgIHJlcyA9IHJlcyAmJiB0eXBlb2YgcmVzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXMpXG4gICAgICA/IFtyZXNdIC8vIHNpbmdsZSB2bm9kZVxuICAgICAgOiBub3JtYWxpemVDaGlsZHJlbihyZXMpO1xuICAgIHJldHVybiByZXMgJiYgKFxuICAgICAgcmVzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgKHJlcy5sZW5ndGggPT09IDEgJiYgcmVzWzBdLmlzQ29tbWVudCkgLy8gIzk2NThcbiAgICApID8gdW5kZWZpbmVkXG4gICAgICA6IHJlc1xuICB9O1xuICAvLyB0aGlzIGlzIGEgc2xvdCB1c2luZyB0aGUgbmV3IHYtc2xvdCBzeW50YXggd2l0aG91dCBzY29wZS4gYWx0aG91Z2ggaXQgaXNcbiAgLy8gY29tcGlsZWQgYXMgYSBzY29wZWQgc2xvdCwgcmVuZGVyIGZuIHVzZXJzIHdvdWxkIGV4cGVjdCBpdCB0byBiZSBwcmVzZW50XG4gIC8vIG9uIHRoaXMuJHNsb3RzIGJlY2F1c2UgdGhlIHVzYWdlIGlzIHNlbWFudGljYWxseSBhIG5vcm1hbCBzbG90LlxuICBpZiAoZm4ucHJveHkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobm9ybWFsU2xvdHMsIGtleSwge1xuICAgICAgZ2V0OiBub3JtYWxpemVkLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBub3JtYWxpemVkXG59XG5cbmZ1bmN0aW9uIHByb3h5Tm9ybWFsU2xvdChzbG90cywga2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBzbG90c1trZXldOyB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgdi1mb3IgbGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlckxpc3QgKFxuICB2YWwsXG4gIHJlbmRlclxuKSB7XG4gIHZhciByZXQsIGksIGwsIGtleXMsIGtleTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHJldCA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdmFsLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtpXSwgaSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHZhbDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIoaSArIDEsIGkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgaWYgKGhhc1N5bWJvbCAmJiB2YWxbU3ltYm9sLml0ZXJhdG9yXSkge1xuICAgICAgcmV0ID0gW107XG4gICAgICB2YXIgaXRlcmF0b3IgPSB2YWxbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgICAgdmFyIHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgIHdoaWxlICghcmVzdWx0LmRvbmUpIHtcbiAgICAgICAgcmV0LnB1c2gocmVuZGVyKHJlc3VsdC52YWx1ZSwgcmV0Lmxlbmd0aCkpO1xuICAgICAgICByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgICAgcmV0ID0gbmV3IEFycmF5KGtleXMubGVuZ3RoKTtcbiAgICAgIGZvciAoaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICByZXRbaV0gPSByZW5kZXIodmFsW2tleV0sIGtleSwgaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghaXNEZWYocmV0KSkge1xuICAgIHJldCA9IFtdO1xuICB9XG4gIChyZXQpLl9pc1ZMaXN0ID0gdHJ1ZTtcbiAgcmV0dXJuIHJldFxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIDxzbG90PlxuICovXG5mdW5jdGlvbiByZW5kZXJTbG90IChcbiAgbmFtZSxcbiAgZmFsbGJhY2ssXG4gIHByb3BzLFxuICBiaW5kT2JqZWN0XG4pIHtcbiAgdmFyIHNjb3BlZFNsb3RGbiA9IHRoaXMuJHNjb3BlZFNsb3RzW25hbWVdO1xuICB2YXIgbm9kZXM7XG4gIGlmIChzY29wZWRTbG90Rm4pIHsgLy8gc2NvcGVkIHNsb3RcbiAgICBwcm9wcyA9IHByb3BzIHx8IHt9O1xuICAgIGlmIChiaW5kT2JqZWN0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhaXNPYmplY3QoYmluZE9iamVjdCkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnc2xvdCB2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBleHBlY3RzIGFuIE9iamVjdCcsXG4gICAgICAgICAgdGhpc1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcHJvcHMgPSBleHRlbmQoZXh0ZW5kKHt9LCBiaW5kT2JqZWN0KSwgcHJvcHMpO1xuICAgIH1cbiAgICBub2RlcyA9IHNjb3BlZFNsb3RGbihwcm9wcykgfHwgZmFsbGJhY2s7XG4gIH0gZWxzZSB7XG4gICAgbm9kZXMgPSB0aGlzLiRzbG90c1tuYW1lXSB8fCBmYWxsYmFjaztcbiAgfVxuXG4gIHZhciB0YXJnZXQgPSBwcm9wcyAmJiBwcm9wcy5zbG90O1xuICBpZiAodGFyZ2V0KSB7XG4gICAgcmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJywgeyBzbG90OiB0YXJnZXQgfSwgbm9kZXMpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5vZGVzXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlc29sdmluZyBmaWx0ZXJzXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWx0ZXIgKGlkKSB7XG4gIHJldHVybiByZXNvbHZlQXNzZXQodGhpcy4kb3B0aW9ucywgJ2ZpbHRlcnMnLCBpZCwgdHJ1ZSkgfHwgaWRlbnRpdHlcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGlzS2V5Tm90TWF0Y2ggKGV4cGVjdCwgYWN0dWFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGV4cGVjdCkpIHtcbiAgICByZXR1cm4gZXhwZWN0LmluZGV4T2YoYWN0dWFsKSA9PT0gLTFcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZXhwZWN0ICE9PSBhY3R1YWxcbiAgfVxufVxuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBjaGVja2luZyBrZXlDb2RlcyBmcm9tIGNvbmZpZy5cbiAqIGV4cG9zZWQgYXMgVnVlLnByb3RvdHlwZS5fa1xuICogcGFzc2luZyBpbiBldmVudEtleU5hbWUgYXMgbGFzdCBhcmd1bWVudCBzZXBhcmF0ZWx5IGZvciBiYWNrd2FyZHMgY29tcGF0XG4gKi9cbmZ1bmN0aW9uIGNoZWNrS2V5Q29kZXMgKFxuICBldmVudEtleUNvZGUsXG4gIGtleSxcbiAgYnVpbHRJbktleUNvZGUsXG4gIGV2ZW50S2V5TmFtZSxcbiAgYnVpbHRJbktleU5hbWVcbikge1xuICB2YXIgbWFwcGVkS2V5Q29kZSA9IGNvbmZpZy5rZXlDb2Rlc1trZXldIHx8IGJ1aWx0SW5LZXlDb2RlO1xuICBpZiAoYnVpbHRJbktleU5hbWUgJiYgZXZlbnRLZXlOYW1lICYmICFjb25maWcua2V5Q29kZXNba2V5XSkge1xuICAgIHJldHVybiBpc0tleU5vdE1hdGNoKGJ1aWx0SW5LZXlOYW1lLCBldmVudEtleU5hbWUpXG4gIH0gZWxzZSBpZiAobWFwcGVkS2V5Q29kZSkge1xuICAgIHJldHVybiBpc0tleU5vdE1hdGNoKG1hcHBlZEtleUNvZGUsIGV2ZW50S2V5Q29kZSlcbiAgfSBlbHNlIGlmIChldmVudEtleU5hbWUpIHtcbiAgICByZXR1cm4gaHlwaGVuYXRlKGV2ZW50S2V5TmFtZSkgIT09IGtleVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBtZXJnaW5nIHYtYmluZD1cIm9iamVjdFwiIGludG8gYSBWTm9kZSdzIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGJpbmRPYmplY3RQcm9wcyAoXG4gIGRhdGEsXG4gIHRhZyxcbiAgdmFsdWUsXG4gIGFzUHJvcCxcbiAgaXNTeW5jXG4pIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ3YtYmluZCB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0IG9yIEFycmF5IHZhbHVlJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gdG9PYmplY3QodmFsdWUpO1xuICAgICAgfVxuICAgICAgdmFyIGhhc2g7XG4gICAgICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAga2V5ID09PSAnY2xhc3MnIHx8XG4gICAgICAgICAga2V5ID09PSAnc3R5bGUnIHx8XG4gICAgICAgICAgaXNSZXNlcnZlZEF0dHJpYnV0ZShrZXkpXG4gICAgICAgICkge1xuICAgICAgICAgIGhhc2ggPSBkYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciB0eXBlID0gZGF0YS5hdHRycyAmJiBkYXRhLmF0dHJzLnR5cGU7XG4gICAgICAgICAgaGFzaCA9IGFzUHJvcCB8fCBjb25maWcubXVzdFVzZVByb3AodGFnLCB0eXBlLCBrZXkpXG4gICAgICAgICAgICA/IGRhdGEuZG9tUHJvcHMgfHwgKGRhdGEuZG9tUHJvcHMgPSB7fSlcbiAgICAgICAgICAgIDogZGF0YS5hdHRycyB8fCAoZGF0YS5hdHRycyA9IHt9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2FtZWxpemVkS2V5ID0gY2FtZWxpemUoa2V5KTtcbiAgICAgICAgdmFyIGh5cGhlbmF0ZWRLZXkgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgICAgaWYgKCEoY2FtZWxpemVkS2V5IGluIGhhc2gpICYmICEoaHlwaGVuYXRlZEtleSBpbiBoYXNoKSkge1xuICAgICAgICAgIGhhc2hba2V5XSA9IHZhbHVlW2tleV07XG5cbiAgICAgICAgICBpZiAoaXNTeW5jKSB7XG4gICAgICAgICAgICB2YXIgb24gPSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICAgICAgICAgICAgb25bKFwidXBkYXRlOlwiICsga2V5KV0gPSBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgIHZhbHVlW2tleV0gPSAkZXZlbnQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSBsb29wKCBrZXkgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyBzdGF0aWMgdHJlZXMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclN0YXRpYyAoXG4gIGluZGV4LFxuICBpc0luRm9yXG4pIHtcbiAgdmFyIGNhY2hlZCA9IHRoaXMuX3N0YXRpY1RyZWVzIHx8ICh0aGlzLl9zdGF0aWNUcmVlcyA9IFtdKTtcbiAgdmFyIHRyZWUgPSBjYWNoZWRbaW5kZXhdO1xuICAvLyBpZiBoYXMgYWxyZWFkeS1yZW5kZXJlZCBzdGF0aWMgdHJlZSBhbmQgbm90IGluc2lkZSB2LWZvcixcbiAgLy8gd2UgY2FuIHJldXNlIHRoZSBzYW1lIHRyZWUuXG4gIGlmICh0cmVlICYmICFpc0luRm9yKSB7XG4gICAgcmV0dXJuIHRyZWVcbiAgfVxuICAvLyBvdGhlcndpc2UsIHJlbmRlciBhIGZyZXNoIHRyZWUuXG4gIHRyZWUgPSBjYWNoZWRbaW5kZXhdID0gdGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNbaW5kZXhdLmNhbGwoXG4gICAgdGhpcy5fcmVuZGVyUHJveHksXG4gICAgbnVsbCxcbiAgICB0aGlzIC8vIGZvciByZW5kZXIgZm5zIGdlbmVyYXRlZCBmb3IgZnVuY3Rpb25hbCBjb21wb25lbnQgdGVtcGxhdGVzXG4gICk7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19zdGF0aWNfX1wiICsgaW5kZXgpLCBmYWxzZSk7XG4gIHJldHVybiB0cmVlXG59XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHYtb25jZS5cbiAqIEVmZmVjdGl2ZWx5IGl0IG1lYW5zIG1hcmtpbmcgdGhlIG5vZGUgYXMgc3RhdGljIHdpdGggYSB1bmlxdWUga2V5LlxuICovXG5mdW5jdGlvbiBtYXJrT25jZSAoXG4gIHRyZWUsXG4gIGluZGV4LFxuICBrZXlcbikge1xuICBtYXJrU3RhdGljKHRyZWUsIChcIl9fb25jZV9fXCIgKyBpbmRleCArIChrZXkgPyAoXCJfXCIgKyBrZXkpIDogXCJcIikpLCB0cnVlKTtcbiAgcmV0dXJuIHRyZWVcbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpYyAoXG4gIHRyZWUsXG4gIGtleSxcbiAgaXNPbmNlXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0cmVlW2ldICYmIHR5cGVvZiB0cmVlW2ldICE9PSAnc3RyaW5nJykge1xuICAgICAgICBtYXJrU3RhdGljTm9kZSh0cmVlW2ldLCAoa2V5ICsgXCJfXCIgKyBpKSwgaXNPbmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbWFya1N0YXRpY05vZGUodHJlZSwga2V5LCBpc09uY2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWNOb2RlIChub2RlLCBrZXksIGlzT25jZSkge1xuICBub2RlLmlzU3RhdGljID0gdHJ1ZTtcbiAgbm9kZS5rZXkgPSBrZXk7XG4gIG5vZGUuaXNPbmNlID0gaXNPbmNlO1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmluZE9iamVjdExpc3RlbmVycyAoZGF0YSwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAndi1vbiB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0IHZhbHVlJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG9uID0gZGF0YS5vbiA9IGRhdGEub24gPyBleHRlbmQoe30sIGRhdGEub24pIDoge307XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgdmFyIGV4aXN0aW5nID0gb25ba2V5XTtcbiAgICAgICAgdmFyIG91cnMgPSB2YWx1ZVtrZXldO1xuICAgICAgICBvbltrZXldID0gZXhpc3RpbmcgPyBbXS5jb25jYXQoZXhpc3RpbmcsIG91cnMpIDogb3VycztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlc29sdmVTY29wZWRTbG90cyAoXG4gIGZucywgLy8gc2VlIGZsb3cvdm5vZGVcbiAgcmVzLFxuICAvLyB0aGUgZm9sbG93aW5nIGFyZSBhZGRlZCBpbiAyLjZcbiAgaGFzRHluYW1pY0tleXMsXG4gIGNvbnRlbnRIYXNoS2V5XG4pIHtcbiAgcmVzID0gcmVzIHx8IHsgJHN0YWJsZTogIWhhc0R5bmFtaWNLZXlzIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNsb3QgPSBmbnNbaV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2xvdCkpIHtcbiAgICAgIHJlc29sdmVTY29wZWRTbG90cyhzbG90LCByZXMsIGhhc0R5bmFtaWNLZXlzKTtcbiAgICB9IGVsc2UgaWYgKHNsb3QpIHtcbiAgICAgIC8vIG1hcmtlciBmb3IgcmV2ZXJzZSBwcm94eWluZyB2LXNsb3Qgd2l0aG91dCBzY29wZSBvbiB0aGlzLiRzbG90c1xuICAgICAgaWYgKHNsb3QucHJveHkpIHtcbiAgICAgICAgc2xvdC5mbi5wcm94eSA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXNbc2xvdC5rZXldID0gc2xvdC5mbjtcbiAgICB9XG4gIH1cbiAgaWYgKGNvbnRlbnRIYXNoS2V5KSB7XG4gICAgKHJlcykuJGtleSA9IGNvbnRlbnRIYXNoS2V5O1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJpbmREeW5hbWljS2V5cyAoYmFzZU9iaiwgdmFsdWVzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGtleSA9IHZhbHVlc1tpXTtcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYga2V5KSB7XG4gICAgICBiYXNlT2JqW3ZhbHVlc1tpXV0gPSB2YWx1ZXNbaSArIDFdO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBrZXkgIT09ICcnICYmIGtleSAhPT0gbnVsbCkge1xuICAgICAgLy8gbnVsbCBpcyBhIHNwZWljYWwgdmFsdWUgZm9yIGV4cGxpY2l0bHkgcmVtb3ZpbmcgYSBiaW5kaW5nXG4gICAgICB3YXJuKFxuICAgICAgICAoXCJJbnZhbGlkIHZhbHVlIGZvciBkeW5hbWljIGRpcmVjdGl2ZSBhcmd1bWVudCAoZXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwpOiBcIiArIGtleSksXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiYXNlT2JqXG59XG5cbi8vIGhlbHBlciB0byBkeW5hbWljYWxseSBhcHBlbmQgbW9kaWZpZXIgcnVudGltZSBtYXJrZXJzIHRvIGV2ZW50IG5hbWVzLlxuLy8gZW5zdXJlIG9ubHkgYXBwZW5kIHdoZW4gdmFsdWUgaXMgYWxyZWFkeSBzdHJpbmcsIG90aGVyd2lzZSBpdCB3aWxsIGJlIGNhc3Rcbi8vIHRvIHN0cmluZyBhbmQgY2F1c2UgdGhlIHR5cGUgY2hlY2sgdG8gbWlzcy5cbmZ1bmN0aW9uIHByZXBlbmRNb2RpZmllciAodmFsdWUsIHN5bWJvbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHN5bWJvbCArIHZhbHVlIDogdmFsdWVcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluc3RhbGxSZW5kZXJIZWxwZXJzICh0YXJnZXQpIHtcbiAgdGFyZ2V0Ll9vID0gbWFya09uY2U7XG4gIHRhcmdldC5fbiA9IHRvTnVtYmVyO1xuICB0YXJnZXQuX3MgPSB0b1N0cmluZztcbiAgdGFyZ2V0Ll9sID0gcmVuZGVyTGlzdDtcbiAgdGFyZ2V0Ll90ID0gcmVuZGVyU2xvdDtcbiAgdGFyZ2V0Ll9xID0gbG9vc2VFcXVhbDtcbiAgdGFyZ2V0Ll9pID0gbG9vc2VJbmRleE9mO1xuICB0YXJnZXQuX20gPSByZW5kZXJTdGF0aWM7XG4gIHRhcmdldC5fZiA9IHJlc29sdmVGaWx0ZXI7XG4gIHRhcmdldC5fayA9IGNoZWNrS2V5Q29kZXM7XG4gIHRhcmdldC5fYiA9IGJpbmRPYmplY3RQcm9wcztcbiAgdGFyZ2V0Ll92ID0gY3JlYXRlVGV4dFZOb2RlO1xuICB0YXJnZXQuX2UgPSBjcmVhdGVFbXB0eVZOb2RlO1xuICB0YXJnZXQuX3UgPSByZXNvbHZlU2NvcGVkU2xvdHM7XG4gIHRhcmdldC5fZyA9IGJpbmRPYmplY3RMaXN0ZW5lcnM7XG4gIHRhcmdldC5fZCA9IGJpbmREeW5hbWljS2V5cztcbiAgdGFyZ2V0Ll9wID0gcHJlcGVuZE1vZGlmaWVyO1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gRnVuY3Rpb25hbFJlbmRlckNvbnRleHQgKFxuICBkYXRhLFxuICBwcm9wcyxcbiAgY2hpbGRyZW4sXG4gIHBhcmVudCxcbiAgQ3RvclxuKSB7XG4gIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICAvLyBlbnN1cmUgdGhlIGNyZWF0ZUVsZW1lbnQgZnVuY3Rpb24gaW4gZnVuY3Rpb25hbCBjb21wb25lbnRzXG4gIC8vIGdldHMgYSB1bmlxdWUgY29udGV4dCAtIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0IG5hbWVkIHNsb3QgY2hlY2tcbiAgdmFyIGNvbnRleHRWbTtcbiAgaWYgKGhhc093bihwYXJlbnQsICdfdWlkJykpIHtcbiAgICBjb250ZXh0Vm0gPSBPYmplY3QuY3JlYXRlKHBhcmVudCk7XG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgY29udGV4dFZtLl9vcmlnaW5hbCA9IHBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICAvLyB0aGUgY29udGV4dCB2bSBwYXNzZWQgaW4gaXMgYSBmdW5jdGlvbmFsIGNvbnRleHQgYXMgd2VsbC5cbiAgICAvLyBpbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgYXJlIGFibGUgdG8gZ2V0IGEgaG9sZCB0byB0aGVcbiAgICAvLyByZWFsIGNvbnRleHQgaW5zdGFuY2UuXG4gICAgY29udGV4dFZtID0gcGFyZW50O1xuICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgIHBhcmVudCA9IHBhcmVudC5fb3JpZ2luYWw7XG4gIH1cbiAgdmFyIGlzQ29tcGlsZWQgPSBpc1RydWUob3B0aW9ucy5fY29tcGlsZWQpO1xuICB2YXIgbmVlZE5vcm1hbGl6YXRpb24gPSAhaXNDb21waWxlZDtcblxuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gIHRoaXMubGlzdGVuZXJzID0gZGF0YS5vbiB8fCBlbXB0eU9iamVjdDtcbiAgdGhpcy5pbmplY3Rpb25zID0gcmVzb2x2ZUluamVjdChvcHRpb25zLmluamVjdCwgcGFyZW50KTtcbiAgdGhpcy5zbG90cyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMkMS4kc2xvdHMpIHtcbiAgICAgIG5vcm1hbGl6ZVNjb3BlZFNsb3RzKFxuICAgICAgICBkYXRhLnNjb3BlZFNsb3RzLFxuICAgICAgICB0aGlzJDEuJHNsb3RzID0gcmVzb2x2ZVNsb3RzKGNoaWxkcmVuLCBwYXJlbnQpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcyQxLiRzbG90c1xuICB9O1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc2NvcGVkU2xvdHMnLCAoe1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZVNjb3BlZFNsb3RzKGRhdGEuc2NvcGVkU2xvdHMsIHRoaXMuc2xvdHMoKSlcbiAgICB9XG4gIH0pKTtcblxuICAvLyBzdXBwb3J0IGZvciBjb21waWxlZCBmdW5jdGlvbmFsIHRlbXBsYXRlXG4gIGlmIChpc0NvbXBpbGVkKSB7XG4gICAgLy8gZXhwb3NpbmcgJG9wdGlvbnMgZm9yIHJlbmRlclN0YXRpYygpXG4gICAgdGhpcy4kb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgLy8gcHJlLXJlc29sdmUgc2xvdHMgZm9yIHJlbmRlclNsb3QoKVxuICAgIHRoaXMuJHNsb3RzID0gdGhpcy5zbG90cygpO1xuICAgIHRoaXMuJHNjb3BlZFNsb3RzID0gbm9ybWFsaXplU2NvcGVkU2xvdHMoZGF0YS5zY29wZWRTbG90cywgdGhpcy4kc2xvdHMpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuX3Njb3BlSWQpIHtcbiAgICB0aGlzLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICAgIHZhciB2bm9kZSA9IGNyZWF0ZUVsZW1lbnQoY29udGV4dFZtLCBhLCBiLCBjLCBkLCBuZWVkTm9ybWFsaXphdGlvbik7XG4gICAgICBpZiAodm5vZGUgJiYgIUFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgICAgIHZub2RlLmZuU2NvcGVJZCA9IG9wdGlvbnMuX3Njb3BlSWQ7XG4gICAgICAgIHZub2RlLmZuQ29udGV4dCA9IHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2bm9kZVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fYyA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KGNvbnRleHRWbSwgYSwgYiwgYywgZCwgbmVlZE5vcm1hbGl6YXRpb24pOyB9O1xuICB9XG59XG5cbmluc3RhbGxSZW5kZXJIZWxwZXJzKEZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0LnByb3RvdHlwZSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQgKFxuICBDdG9yLFxuICBwcm9wc0RhdGEsXG4gIGRhdGEsXG4gIGNvbnRleHRWbSxcbiAgY2hpbGRyZW5cbikge1xuICB2YXIgb3B0aW9ucyA9IEN0b3Iub3B0aW9ucztcbiAgdmFyIHByb3BzID0ge307XG4gIHZhciBwcm9wT3B0aW9ucyA9IG9wdGlvbnMucHJvcHM7XG4gIGlmIChpc0RlZihwcm9wT3B0aW9ucykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wT3B0aW9ucywgcHJvcHNEYXRhIHx8IGVtcHR5T2JqZWN0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzRGVmKGRhdGEuYXR0cnMpKSB7IG1lcmdlUHJvcHMocHJvcHMsIGRhdGEuYXR0cnMpOyB9XG4gICAgaWYgKGlzRGVmKGRhdGEucHJvcHMpKSB7IG1lcmdlUHJvcHMocHJvcHMsIGRhdGEucHJvcHMpOyB9XG4gIH1cblxuICB2YXIgcmVuZGVyQ29udGV4dCA9IG5ldyBGdW5jdGlvbmFsUmVuZGVyQ29udGV4dChcbiAgICBkYXRhLFxuICAgIHByb3BzLFxuICAgIGNoaWxkcmVuLFxuICAgIGNvbnRleHRWbSxcbiAgICBDdG9yXG4gICk7XG5cbiAgdmFyIHZub2RlID0gb3B0aW9ucy5yZW5kZXIuY2FsbChudWxsLCByZW5kZXJDb250ZXh0Ll9jLCByZW5kZXJDb250ZXh0KTtcblxuICBpZiAodm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHJldHVybiBjbG9uZUFuZE1hcmtGdW5jdGlvbmFsUmVzdWx0KHZub2RlLCBkYXRhLCByZW5kZXJDb250ZXh0LnBhcmVudCwgb3B0aW9ucywgcmVuZGVyQ29udGV4dClcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZub2RlKSkge1xuICAgIHZhciB2bm9kZXMgPSBub3JtYWxpemVDaGlsZHJlbih2bm9kZSkgfHwgW107XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheSh2bm9kZXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzW2ldID0gY2xvbmVBbmRNYXJrRnVuY3Rpb25hbFJlc3VsdCh2bm9kZXNbaV0sIGRhdGEsIHJlbmRlckNvbnRleHQucGFyZW50LCBvcHRpb25zLCByZW5kZXJDb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsb25lQW5kTWFya0Z1bmN0aW9uYWxSZXN1bHQgKHZub2RlLCBkYXRhLCBjb250ZXh0Vm0sIG9wdGlvbnMsIHJlbmRlckNvbnRleHQpIHtcbiAgLy8gIzc4MTcgY2xvbmUgbm9kZSBiZWZvcmUgc2V0dGluZyBmbkNvbnRleHQsIG90aGVyd2lzZSBpZiB0aGUgbm9kZSBpcyByZXVzZWRcbiAgLy8gKGUuZy4gaXQgd2FzIGZyb20gYSBjYWNoZWQgbm9ybWFsIHNsb3QpIHRoZSBmbkNvbnRleHQgY2F1c2VzIG5hbWVkIHNsb3RzXG4gIC8vIHRoYXQgc2hvdWxkIG5vdCBiZSBtYXRjaGVkIHRvIG1hdGNoLlxuICB2YXIgY2xvbmUgPSBjbG9uZVZOb2RlKHZub2RlKTtcbiAgY2xvbmUuZm5Db250ZXh0ID0gY29udGV4dFZtO1xuICBjbG9uZS5mbk9wdGlvbnMgPSBvcHRpb25zO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIChjbG9uZS5kZXZ0b29sc01ldGEgPSBjbG9uZS5kZXZ0b29sc01ldGEgfHwge30pLnJlbmRlckNvbnRleHQgPSByZW5kZXJDb250ZXh0O1xuICB9XG4gIGlmIChkYXRhLnNsb3QpIHtcbiAgICAoY2xvbmUuZGF0YSB8fCAoY2xvbmUuZGF0YSA9IHt9KSkuc2xvdCA9IGRhdGEuc2xvdDtcbiAgfVxuICByZXR1cm4gY2xvbmVcbn1cblxuZnVuY3Rpb24gbWVyZ2VQcm9wcyAodG8sIGZyb20pIHtcbiAgZm9yICh2YXIga2V5IGluIGZyb20pIHtcbiAgICB0b1tjYW1lbGl6ZShrZXkpXSA9IGZyb21ba2V5XTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLyogICovXG5cbi8qICAqL1xuXG4vKiAgKi9cblxuLy8gaW5saW5lIGhvb2tzIHRvIGJlIGludm9rZWQgb24gY29tcG9uZW50IFZOb2RlcyBkdXJpbmcgcGF0Y2hcbnZhciBjb21wb25lbnRWTm9kZUhvb2tzID0ge1xuICBpbml0OiBmdW5jdGlvbiBpbml0ICh2bm9kZSwgaHlkcmF0aW5nKSB7XG4gICAgaWYgKFxuICAgICAgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgJiZcbiAgICAgICF2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQgJiZcbiAgICAgIHZub2RlLmRhdGEua2VlcEFsaXZlXG4gICAgKSB7XG4gICAgICAvLyBrZXB0LWFsaXZlIGNvbXBvbmVudHMsIHRyZWF0IGFzIGEgcGF0Y2hcbiAgICAgIHZhciBtb3VudGVkTm9kZSA9IHZub2RlOyAvLyB3b3JrIGFyb3VuZCBmbG93XG4gICAgICBjb21wb25lbnRWTm9kZUhvb2tzLnByZXBhdGNoKG1vdW50ZWROb2RlLCBtb3VudGVkTm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjaGlsZCA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VGb3JWbm9kZShcbiAgICAgICAgdm5vZGUsXG4gICAgICAgIGFjdGl2ZUluc3RhbmNlXG4gICAgICApO1xuICAgICAgY2hpbGQuJG1vdW50KGh5ZHJhdGluZyA/IHZub2RlLmVsbSA6IHVuZGVmaW5lZCwgaHlkcmF0aW5nKTtcbiAgICB9XG4gIH0sXG5cbiAgcHJlcGF0Y2g6IGZ1bmN0aW9uIHByZXBhdGNoIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBvbGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB1cGRhdGVDaGlsZENvbXBvbmVudChcbiAgICAgIGNoaWxkLFxuICAgICAgb3B0aW9ucy5wcm9wc0RhdGEsIC8vIHVwZGF0ZWQgcHJvcHNcbiAgICAgIG9wdGlvbnMubGlzdGVuZXJzLCAvLyB1cGRhdGVkIGxpc3RlbmVyc1xuICAgICAgdm5vZGUsIC8vIG5ldyBwYXJlbnQgdm5vZGVcbiAgICAgIG9wdGlvbnMuY2hpbGRyZW4gLy8gbmV3IGNoaWxkcmVuXG4gICAgKTtcbiAgfSxcblxuICBpbnNlcnQ6IGZ1bmN0aW9uIGluc2VydCAodm5vZGUpIHtcbiAgICB2YXIgY29udGV4dCA9IHZub2RlLmNvbnRleHQ7XG4gICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaWYgKCFjb21wb25lbnRJbnN0YW5jZS5faXNNb3VudGVkKSB7XG4gICAgICBjb21wb25lbnRJbnN0YW5jZS5faXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIGNhbGxIb29rKGNvbXBvbmVudEluc3RhbmNlLCAnbW91bnRlZCcpO1xuICAgIH1cbiAgICBpZiAodm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcbiAgICAgIGlmIChjb250ZXh0Ll9pc01vdW50ZWQpIHtcbiAgICAgICAgLy8gdnVlLXJvdXRlciMxMjEyXG4gICAgICAgIC8vIER1cmluZyB1cGRhdGVzLCBhIGtlcHQtYWxpdmUgY29tcG9uZW50J3MgY2hpbGQgY29tcG9uZW50cyBtYXlcbiAgICAgICAgLy8gY2hhbmdlLCBzbyBkaXJlY3RseSB3YWxraW5nIHRoZSB0cmVlIGhlcmUgbWF5IGNhbGwgYWN0aXZhdGVkIGhvb2tzXG4gICAgICAgIC8vIG9uIGluY29ycmVjdCBjaGlsZHJlbi4gSW5zdGVhZCB3ZSBwdXNoIHRoZW0gaW50byBhIHF1ZXVlIHdoaWNoIHdpbGxcbiAgICAgICAgLy8gYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSB3aG9sZSBwYXRjaCBwcm9jZXNzIGVuZGVkLlxuICAgICAgICBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3kgKHZub2RlKSB7XG4gICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaWYgKCFjb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIGlmICghdm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcbiAgICAgICAgY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSwgdHJ1ZSAvKiBkaXJlY3QgKi8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxudmFyIGhvb2tzVG9NZXJnZSA9IE9iamVjdC5rZXlzKGNvbXBvbmVudFZOb2RlSG9va3MpO1xuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnQgKFxuICBDdG9yLFxuICBkYXRhLFxuICBjb250ZXh0LFxuICBjaGlsZHJlbixcbiAgdGFnXG4pIHtcbiAgaWYgKGlzVW5kZWYoQ3RvcikpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBiYXNlQ3RvciA9IGNvbnRleHQuJG9wdGlvbnMuX2Jhc2U7XG5cbiAgLy8gcGxhaW4gb3B0aW9ucyBvYmplY3Q6IHR1cm4gaXQgaW50byBhIGNvbnN0cnVjdG9yXG4gIGlmIChpc09iamVjdChDdG9yKSkge1xuICAgIEN0b3IgPSBiYXNlQ3Rvci5leHRlbmQoQ3Rvcik7XG4gIH1cblxuICAvLyBpZiBhdCB0aGlzIHN0YWdlIGl0J3Mgbm90IGEgY29uc3RydWN0b3Igb3IgYW4gYXN5bmMgY29tcG9uZW50IGZhY3RvcnksXG4gIC8vIHJlamVjdC5cbiAgaWYgKHR5cGVvZiBDdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm4oKFwiSW52YWxpZCBDb21wb25lbnQgZGVmaW5pdGlvbjogXCIgKyAoU3RyaW5nKEN0b3IpKSksIGNvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIGFzeW5jIGNvbXBvbmVudFxuICB2YXIgYXN5bmNGYWN0b3J5O1xuICBpZiAoaXNVbmRlZihDdG9yLmNpZCkpIHtcbiAgICBhc3luY0ZhY3RvcnkgPSBDdG9yO1xuICAgIEN0b3IgPSByZXNvbHZlQXN5bmNDb21wb25lbnQoYXN5bmNGYWN0b3J5LCBiYXNlQ3Rvcik7XG4gICAgaWYgKEN0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gcmV0dXJuIGEgcGxhY2Vob2xkZXIgbm9kZSBmb3IgYXN5bmMgY29tcG9uZW50LCB3aGljaCBpcyByZW5kZXJlZFxuICAgICAgLy8gYXMgYSBjb21tZW50IG5vZGUgYnV0IHByZXNlcnZlcyBhbGwgdGhlIHJhdyBpbmZvcm1hdGlvbiBmb3IgdGhlIG5vZGUuXG4gICAgICAvLyB0aGUgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIGZvciBhc3luYyBzZXJ2ZXItcmVuZGVyaW5nIGFuZCBoeWRyYXRpb24uXG4gICAgICByZXR1cm4gY3JlYXRlQXN5bmNQbGFjZWhvbGRlcihcbiAgICAgICAgYXN5bmNGYWN0b3J5LFxuICAgICAgICBkYXRhLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgdGFnXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgZGF0YSA9IGRhdGEgfHwge307XG5cbiAgLy8gcmVzb2x2ZSBjb25zdHJ1Y3RvciBvcHRpb25zIGluIGNhc2UgZ2xvYmFsIG1peGlucyBhcmUgYXBwbGllZCBhZnRlclxuICAvLyBjb21wb25lbnQgY29uc3RydWN0b3IgY3JlYXRpb25cbiAgcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyhDdG9yKTtcblxuICAvLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgZGF0YSBpbnRvIHByb3BzICYgZXZlbnRzXG4gIGlmIChpc0RlZihkYXRhLm1vZGVsKSkge1xuICAgIHRyYW5zZm9ybU1vZGVsKEN0b3Iub3B0aW9ucywgZGF0YSk7XG4gIH1cblxuICAvLyBleHRyYWN0IHByb3BzXG4gIHZhciBwcm9wc0RhdGEgPSBleHRyYWN0UHJvcHNGcm9tVk5vZGVEYXRhKGRhdGEsIEN0b3IsIHRhZyk7XG5cbiAgLy8gZnVuY3Rpb25hbCBjb21wb25lbnRcbiAgaWYgKGlzVHJ1ZShDdG9yLm9wdGlvbnMuZnVuY3Rpb25hbCkpIHtcbiAgICByZXR1cm4gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudChDdG9yLCBwcm9wc0RhdGEsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKVxuICB9XG5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMsIHNpbmNlIHRoZXNlIG5lZWRzIHRvIGJlIHRyZWF0ZWQgYXNcbiAgLy8gY2hpbGQgY29tcG9uZW50IGxpc3RlbmVycyBpbnN0ZWFkIG9mIERPTSBsaXN0ZW5lcnNcbiAgdmFyIGxpc3RlbmVycyA9IGRhdGEub247XG4gIC8vIHJlcGxhY2Ugd2l0aCBsaXN0ZW5lcnMgd2l0aCAubmF0aXZlIG1vZGlmaWVyXG4gIC8vIHNvIGl0IGdldHMgcHJvY2Vzc2VkIGR1cmluZyBwYXJlbnQgY29tcG9uZW50IHBhdGNoLlxuICBkYXRhLm9uID0gZGF0YS5uYXRpdmVPbjtcblxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5hYnN0cmFjdCkpIHtcbiAgICAvLyBhYnN0cmFjdCBjb21wb25lbnRzIGRvIG5vdCBrZWVwIGFueXRoaW5nXG4gICAgLy8gb3RoZXIgdGhhbiBwcm9wcyAmIGxpc3RlbmVycyAmIHNsb3RcblxuICAgIC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICB2YXIgc2xvdCA9IGRhdGEuc2xvdDtcbiAgICBkYXRhID0ge307XG4gICAgaWYgKHNsb3QpIHtcbiAgICAgIGRhdGEuc2xvdCA9IHNsb3Q7XG4gICAgfVxuICB9XG5cbiAgLy8gaW5zdGFsbCBjb21wb25lbnQgbWFuYWdlbWVudCBob29rcyBvbnRvIHRoZSBwbGFjZWhvbGRlciBub2RlXG4gIGluc3RhbGxDb21wb25lbnRIb29rcyhkYXRhKTtcblxuICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciB2bm9kZVxuICB2YXIgbmFtZSA9IEN0b3Iub3B0aW9ucy5uYW1lIHx8IHRhZztcbiAgdmFyIHZub2RlID0gbmV3IFZOb2RlKFxuICAgIChcInZ1ZS1jb21wb25lbnQtXCIgKyAoQ3Rvci5jaWQpICsgKG5hbWUgPyAoXCItXCIgKyBuYW1lKSA6ICcnKSksXG4gICAgZGF0YSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dCxcbiAgICB7IEN0b3I6IEN0b3IsIHByb3BzRGF0YTogcHJvcHNEYXRhLCBsaXN0ZW5lcnM6IGxpc3RlbmVycywgdGFnOiB0YWcsIGNoaWxkcmVuOiBjaGlsZHJlbiB9LFxuICAgIGFzeW5jRmFjdG9yeVxuICApO1xuXG4gIHJldHVybiB2bm9kZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlIChcbiAgdm5vZGUsIC8vIHdlIGtub3cgaXQncyBNb3VudGVkQ29tcG9uZW50Vk5vZGUgYnV0IGZsb3cgZG9lc24ndFxuICBwYXJlbnQgLy8gYWN0aXZlSW5zdGFuY2UgaW4gbGlmZWN5Y2xlIHN0YXRlXG4pIHtcbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgX2lzQ29tcG9uZW50OiB0cnVlLFxuICAgIF9wYXJlbnRWbm9kZTogdm5vZGUsXG4gICAgcGFyZW50OiBwYXJlbnRcbiAgfTtcbiAgLy8gY2hlY2sgaW5saW5lLXRlbXBsYXRlIHJlbmRlciBmdW5jdGlvbnNcbiAgdmFyIGlubGluZVRlbXBsYXRlID0gdm5vZGUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtcbiAgaWYgKGlzRGVmKGlubGluZVRlbXBsYXRlKSkge1xuICAgIG9wdGlvbnMucmVuZGVyID0gaW5saW5lVGVtcGxhdGUucmVuZGVyO1xuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gaW5saW5lVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zO1xuICB9XG4gIHJldHVybiBuZXcgdm5vZGUuY29tcG9uZW50T3B0aW9ucy5DdG9yKG9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIGluc3RhbGxDb21wb25lbnRIb29rcyAoZGF0YSkge1xuICB2YXIgaG9va3MgPSBkYXRhLmhvb2sgfHwgKGRhdGEuaG9vayA9IHt9KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBob29rc1RvTWVyZ2UubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gaG9va3NUb01lcmdlW2ldO1xuICAgIHZhciBleGlzdGluZyA9IGhvb2tzW2tleV07XG4gICAgdmFyIHRvTWVyZ2UgPSBjb21wb25lbnRWTm9kZUhvb2tzW2tleV07XG4gICAgaWYgKGV4aXN0aW5nICE9PSB0b01lcmdlICYmICEoZXhpc3RpbmcgJiYgZXhpc3RpbmcuX21lcmdlZCkpIHtcbiAgICAgIGhvb2tzW2tleV0gPSBleGlzdGluZyA/IG1lcmdlSG9vayQxKHRvTWVyZ2UsIGV4aXN0aW5nKSA6IHRvTWVyZ2U7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlSG9vayQxIChmMSwgZjIpIHtcbiAgdmFyIG1lcmdlZCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgLy8gZmxvdyBjb21wbGFpbnMgYWJvdXQgZXh0cmEgYXJncyB3aGljaCBpcyB3aHkgd2UgdXNlIGFueVxuICAgIGYxKGEsIGIpO1xuICAgIGYyKGEsIGIpO1xuICB9O1xuICBtZXJnZWQuX21lcmdlZCA9IHRydWU7XG4gIHJldHVybiBtZXJnZWRcbn1cblxuLy8gdHJhbnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGluZm8gKHZhbHVlIGFuZCBjYWxsYmFjaykgaW50b1xuLy8gcHJvcCBhbmQgZXZlbnQgaGFuZGxlciByZXNwZWN0aXZlbHkuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Nb2RlbCAob3B0aW9ucywgZGF0YSkge1xuICB2YXIgcHJvcCA9IChvcHRpb25zLm1vZGVsICYmIG9wdGlvbnMubW9kZWwucHJvcCkgfHwgJ3ZhbHVlJztcbiAgdmFyIGV2ZW50ID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5ldmVudCkgfHwgJ2lucHV0J1xuICA7KGRhdGEuYXR0cnMgfHwgKGRhdGEuYXR0cnMgPSB7fSkpW3Byb3BdID0gZGF0YS5tb2RlbC52YWx1ZTtcbiAgdmFyIG9uID0gZGF0YS5vbiB8fCAoZGF0YS5vbiA9IHt9KTtcbiAgdmFyIGV4aXN0aW5nID0gb25bZXZlbnRdO1xuICB2YXIgY2FsbGJhY2sgPSBkYXRhLm1vZGVsLmNhbGxiYWNrO1xuICBpZiAoaXNEZWYoZXhpc3RpbmcpKSB7XG4gICAgaWYgKFxuICAgICAgQXJyYXkuaXNBcnJheShleGlzdGluZylcbiAgICAgICAgPyBleGlzdGluZy5pbmRleE9mKGNhbGxiYWNrKSA9PT0gLTFcbiAgICAgICAgOiBleGlzdGluZyAhPT0gY2FsbGJhY2tcbiAgICApIHtcbiAgICAgIG9uW2V2ZW50XSA9IFtjYWxsYmFja10uY29uY2F0KGV4aXN0aW5nKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb25bZXZlbnRdID0gY2FsbGJhY2s7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBTSU1QTEVfTk9STUFMSVpFID0gMTtcbnZhciBBTFdBWVNfTk9STUFMSVpFID0gMjtcblxuLy8gd3JhcHBlciBmdW5jdGlvbiBmb3IgcHJvdmlkaW5nIGEgbW9yZSBmbGV4aWJsZSBpbnRlcmZhY2Vcbi8vIHdpdGhvdXQgZ2V0dGluZyB5ZWxsZWQgYXQgYnkgZmxvd1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBlLFxuICBhbHdheXNOb3JtYWxpemVcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBpc1ByaW1pdGl2ZShkYXRhKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBlID0gY2hpbGRyZW47XG4gICAgY2hpbGRyZW4gPSBkYXRhO1xuICAgIGRhdGEgPSB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGlzVHJ1ZShhbHdheXNOb3JtYWxpemUpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBBTFdBWVNfTk9STUFMSVpFO1xuICB9XG4gIHJldHVybiBfY3JlYXRlRWxlbWVudChjb250ZXh0LCB0YWcsIGRhdGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSlcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3JtYWxpemF0aW9uVHlwZVxuKSB7XG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZigoZGF0YSkuX19vYl9fKSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiQXZvaWQgdXNpbmcgb2JzZXJ2ZWQgZGF0YSBvYmplY3QgYXMgdm5vZGUgZGF0YTogXCIgKyAoSlNPTi5zdHJpbmdpZnkoZGF0YSkpICsgXCJcXG5cIiArXG4gICAgICAnQWx3YXlzIGNyZWF0ZSBmcmVzaCB2bm9kZSBkYXRhIG9iamVjdHMgaW4gZWFjaCByZW5kZXIhJyxcbiAgICAgIGNvbnRleHRcbiAgICApO1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyBvYmplY3Qgc3ludGF4IGluIHYtYmluZFxuICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoZGF0YS5pcykpIHtcbiAgICB0YWcgPSBkYXRhLmlzO1xuICB9XG4gIGlmICghdGFnKSB7XG4gICAgLy8gaW4gY2FzZSBvZiBjb21wb25lbnQgOmlzIHNldCB0byBmYWxzeSB2YWx1ZVxuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyB3YXJuIGFnYWluc3Qgbm9uLXByaW1pdGl2ZSBrZXlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBpc0RlZihkYXRhKSAmJiBpc0RlZihkYXRhLmtleSkgJiYgIWlzUHJpbWl0aXZlKGRhdGEua2V5KVxuICApIHtcbiAgICB7XG4gICAgICB3YXJuKFxuICAgICAgICAnQXZvaWQgdXNpbmcgbm9uLXByaW1pdGl2ZSB2YWx1ZSBhcyBrZXksICcgK1xuICAgICAgICAndXNlIHN0cmluZy9udW1iZXIgdmFsdWUgaW5zdGVhZC4nLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgIH1cbiAgfVxuICAvLyBzdXBwb3J0IHNpbmdsZSBmdW5jdGlvbiBjaGlsZHJlbiBhcyBkZWZhdWx0IHNjb3BlZCBzbG90XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJlxuICAgIHR5cGVvZiBjaGlsZHJlblswXSA9PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICBkYXRhID0gZGF0YSB8fCB7fTtcbiAgICBkYXRhLnNjb3BlZFNsb3RzID0geyBkZWZhdWx0OiBjaGlsZHJlblswXSB9O1xuICAgIGNoaWxkcmVuLmxlbmd0aCA9IDA7XG4gIH1cbiAgaWYgKG5vcm1hbGl6YXRpb25UeXBlID09PSBBTFdBWVNfTk9STUFMSVpFKSB7XG4gICAgY2hpbGRyZW4gPSBub3JtYWxpemVDaGlsZHJlbihjaGlsZHJlbik7XG4gIH0gZWxzZSBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IFNJTVBMRV9OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IHNpbXBsZU5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfVxuICB2YXIgdm5vZGUsIG5zO1xuICBpZiAodHlwZW9mIHRhZyA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgQ3RvcjtcbiAgICBucyA9IChjb250ZXh0LiR2bm9kZSAmJiBjb250ZXh0LiR2bm9kZS5ucykgfHwgY29uZmlnLmdldFRhZ05hbWVzcGFjZSh0YWcpO1xuICAgIGlmIChjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgICAvLyBwbGF0Zm9ybSBidWlsdC1pbiBlbGVtZW50c1xuICAgICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgICAgIGNvbmZpZy5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0YWcpLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICgoIWRhdGEgfHwgIWRhdGEucHJlKSAmJiBpc0RlZihDdG9yID0gcmVzb2x2ZUFzc2V0KGNvbnRleHQuJG9wdGlvbnMsICdjb21wb25lbnRzJywgdGFnKSkpIHtcbiAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQoQ3RvciwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4sIHRhZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVua25vd24gb3IgdW5saXN0ZWQgbmFtZXNwYWNlZCBlbGVtZW50c1xuICAgICAgLy8gY2hlY2sgYXQgcnVudGltZSBiZWNhdXNlIGl0IG1heSBnZXQgYXNzaWduZWQgYSBuYW1lc3BhY2Ugd2hlbiBpdHNcbiAgICAgIC8vIHBhcmVudCBub3JtYWxpemVzIGNoaWxkcmVuXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgdGFnLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIGRpcmVjdCBjb21wb25lbnQgb3B0aW9ucyAvIGNvbnN0cnVjdG9yXG4gICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQodGFnLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbik7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgcmV0dXJuIHZub2RlXG4gIH0gZWxzZSBpZiAoaXNEZWYodm5vZGUpKSB7XG4gICAgaWYgKGlzRGVmKG5zKSkgeyBhcHBseU5TKHZub2RlLCBucyk7IH1cbiAgICBpZiAoaXNEZWYoZGF0YSkpIHsgcmVnaXN0ZXJEZWVwQmluZGluZ3MoZGF0YSk7IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlOUyAodm5vZGUsIG5zLCBmb3JjZSkge1xuICB2bm9kZS5ucyA9IG5zO1xuICBpZiAodm5vZGUudGFnID09PSAnZm9yZWlnbk9iamVjdCcpIHtcbiAgICAvLyB1c2UgZGVmYXVsdCBuYW1lc3BhY2UgaW5zaWRlIGZvcmVpZ25PYmplY3RcbiAgICBucyA9IHVuZGVmaW5lZDtcbiAgICBmb3JjZSA9IHRydWU7XG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlLmNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSB2bm9kZS5jaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjaGlsZC50YWcpICYmIChcbiAgICAgICAgaXNVbmRlZihjaGlsZC5ucykgfHwgKGlzVHJ1ZShmb3JjZSkgJiYgY2hpbGQudGFnICE9PSAnc3ZnJykpKSB7XG4gICAgICAgIGFwcGx5TlMoY2hpbGQsIG5zLCBmb3JjZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIHJlZiAjNTMxOFxuLy8gbmVjZXNzYXJ5IHRvIGVuc3VyZSBwYXJlbnQgcmUtcmVuZGVyIHdoZW4gZGVlcCBiaW5kaW5ncyBsaWtlIDpzdHlsZSBhbmRcbi8vIDpjbGFzcyBhcmUgdXNlZCBvbiBzbG90IG5vZGVzXG5mdW5jdGlvbiByZWdpc3RlckRlZXBCaW5kaW5ncyAoZGF0YSkge1xuICBpZiAoaXNPYmplY3QoZGF0YS5zdHlsZSkpIHtcbiAgICB0cmF2ZXJzZShkYXRhLnN0eWxlKTtcbiAgfVxuICBpZiAoaXNPYmplY3QoZGF0YS5jbGFzcykpIHtcbiAgICB0cmF2ZXJzZShkYXRhLmNsYXNzKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFJlbmRlciAodm0pIHtcbiAgdm0uX3Zub2RlID0gbnVsbDsgLy8gdGhlIHJvb3Qgb2YgdGhlIGNoaWxkIHRyZWVcbiAgdm0uX3N0YXRpY1RyZWVzID0gbnVsbDsgLy8gdi1vbmNlIGNhY2hlZCB0cmVlc1xuICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuICB2YXIgcGFyZW50Vm5vZGUgPSB2bS4kdm5vZGUgPSBvcHRpb25zLl9wYXJlbnRWbm9kZTsgLy8gdGhlIHBsYWNlaG9sZGVyIG5vZGUgaW4gcGFyZW50IHRyZWVcbiAgdmFyIHJlbmRlckNvbnRleHQgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9kZS5jb250ZXh0O1xuICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMob3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4sIHJlbmRlckNvbnRleHQpO1xuICB2bS4kc2NvcGVkU2xvdHMgPSBlbXB0eU9iamVjdDtcbiAgLy8gYmluZCB0aGUgY3JlYXRlRWxlbWVudCBmbiB0byB0aGlzIGluc3RhbmNlXG4gIC8vIHNvIHRoYXQgd2UgZ2V0IHByb3BlciByZW5kZXIgY29udGV4dCBpbnNpZGUgaXQuXG4gIC8vIGFyZ3Mgb3JkZXI6IHRhZywgZGF0YSwgY2hpbGRyZW4sIG5vcm1hbGl6YXRpb25UeXBlLCBhbHdheXNOb3JtYWxpemVcbiAgLy8gaW50ZXJuYWwgdmVyc2lvbiBpcyB1c2VkIGJ5IHJlbmRlciBmdW5jdGlvbnMgY29tcGlsZWQgZnJvbSB0ZW1wbGF0ZXNcbiAgdm0uX2MgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2bSwgYSwgYiwgYywgZCwgZmFsc2UpOyB9O1xuICAvLyBub3JtYWxpemF0aW9uIGlzIGFsd2F5cyBhcHBsaWVkIGZvciB0aGUgcHVibGljIHZlcnNpb24sIHVzZWQgaW5cbiAgLy8gdXNlci13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMuXG4gIHZtLiRjcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIHRydWUpOyB9O1xuXG4gIC8vICRhdHRycyAmICRsaXN0ZW5lcnMgYXJlIGV4cG9zZWQgZm9yIGVhc2llciBIT0MgY3JlYXRpb24uXG4gIC8vIHRoZXkgbmVlZCB0byBiZSByZWFjdGl2ZSBzbyB0aGF0IEhPQ3MgdXNpbmcgdGhlbSBhcmUgYWx3YXlzIHVwZGF0ZWRcbiAgdmFyIHBhcmVudERhdGEgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9kZS5kYXRhO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sICckYXR0cnMnLCBwYXJlbnREYXRhICYmIHBhcmVudERhdGEuYXR0cnMgfHwgZW1wdHlPYmplY3QsIGZ1bmN0aW9uICgpIHtcbiAgICAgICFpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgJiYgd2FybihcIiRhdHRycyBpcyByZWFkb25seS5cIiwgdm0pO1xuICAgIH0sIHRydWUpO1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGxpc3RlbmVycycsIG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyB8fCBlbXB0eU9iamVjdCwgZnVuY3Rpb24gKCkge1xuICAgICAgIWlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCAmJiB3YXJuKFwiJGxpc3RlbmVycyBpcyByZWFkb25seS5cIiwgdm0pO1xuICAgIH0sIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGF0dHJzJywgcGFyZW50RGF0YSAmJiBwYXJlbnREYXRhLmF0dHJzIHx8IGVtcHR5T2JqZWN0LCBudWxsLCB0cnVlKTtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwgJyRsaXN0ZW5lcnMnLCBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMgfHwgZW1wdHlPYmplY3QsIG51bGwsIHRydWUpO1xuICB9XG59XG5cbnZhciBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSBudWxsO1xuXG5mdW5jdGlvbiByZW5kZXJNaXhpbiAoVnVlKSB7XG4gIC8vIGluc3RhbGwgcnVudGltZSBjb252ZW5pZW5jZSBoZWxwZXJzXG4gIGluc3RhbGxSZW5kZXJIZWxwZXJzKFZ1ZS5wcm90b3R5cGUpO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG5leHRUaWNrID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIG5leHRUaWNrKGZuLCB0aGlzKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuX3JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIHZhciByZWYgPSB2bS4kb3B0aW9ucztcbiAgICB2YXIgcmVuZGVyID0gcmVmLnJlbmRlcjtcbiAgICB2YXIgX3BhcmVudFZub2RlID0gcmVmLl9wYXJlbnRWbm9kZTtcblxuICAgIGlmIChfcGFyZW50Vm5vZGUpIHtcbiAgICAgIHZtLiRzY29wZWRTbG90cyA9IG5vcm1hbGl6ZVNjb3BlZFNsb3RzKFxuICAgICAgICBfcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cyxcbiAgICAgICAgdm0uJHNsb3RzLFxuICAgICAgICB2bS4kc2NvcGVkU2xvdHNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gc2V0IHBhcmVudCB2bm9kZS4gdGhpcyBhbGxvd3MgcmVuZGVyIGZ1bmN0aW9ucyB0byBoYXZlIGFjY2Vzc1xuICAgIC8vIHRvIHRoZSBkYXRhIG9uIHRoZSBwbGFjZWhvbGRlciBub2RlLlxuICAgIHZtLiR2bm9kZSA9IF9wYXJlbnRWbm9kZTtcbiAgICAvLyByZW5kZXIgc2VsZlxuICAgIHZhciB2bm9kZTtcbiAgICB0cnkge1xuICAgICAgLy8gVGhlcmUncyBubyBuZWVkIHRvIG1haW50YWluIGEgc3RhY2sgYmVjYXVlcyBhbGwgcmVuZGVyIGZucyBhcmUgY2FsbGVkXG4gICAgICAvLyBzZXBhcmF0ZWx5IGZyb20gb25lIGFub3RoZXIuIE5lc3RlZCBjb21wb25lbnQncyByZW5kZXIgZm5zIGFyZSBjYWxsZWRcbiAgICAgIC8vIHdoZW4gcGFyZW50IGNvbXBvbmVudCBpcyBwYXRjaGVkLlxuICAgICAgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlID0gdm07XG4gICAgICB2bm9kZSA9IHJlbmRlci5jYWxsKHZtLl9yZW5kZXJQcm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcInJlbmRlclwiKTtcbiAgICAgIC8vIHJldHVybiBlcnJvciByZW5kZXIgcmVzdWx0LFxuICAgICAgLy8gb3IgcHJldmlvdXMgdm5vZGUgdG8gcHJldmVudCByZW5kZXIgZXJyb3IgY2F1c2luZyBibGFuayBjb21wb25lbnRcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZub2RlID0gdm0uJG9wdGlvbnMucmVuZGVyRXJyb3IuY2FsbCh2bS5fcmVuZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50LCBlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcInJlbmRlckVycm9yXCIpO1xuICAgICAgICAgIHZub2RlID0gdm0uX3Zub2RlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZSA9IHZtLl92bm9kZTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlID0gbnVsbDtcbiAgICB9XG4gICAgLy8gaWYgdGhlIHJldHVybmVkIGFycmF5IGNvbnRhaW5zIG9ubHkgYSBzaW5nbGUgbm9kZSwgYWxsb3cgaXRcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2bm9kZSkgJiYgdm5vZGUubGVuZ3RoID09PSAxKSB7XG4gICAgICB2bm9kZSA9IHZub2RlWzBdO1xuICAgIH1cbiAgICAvLyByZXR1cm4gZW1wdHkgdm5vZGUgaW4gY2FzZSB0aGUgcmVuZGVyIGZ1bmN0aW9uIGVycm9yZWQgb3V0XG4gICAgaWYgKCEodm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ011bHRpcGxlIHJvb3Qgbm9kZXMgcmV0dXJuZWQgZnJvbSByZW5kZXIgZnVuY3Rpb24uIFJlbmRlciBmdW5jdGlvbiAnICtcbiAgICAgICAgICAnc2hvdWxkIHJldHVybiBhIHNpbmdsZSByb290IG5vZGUuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdm5vZGUgPSBjcmVhdGVFbXB0eVZOb2RlKCk7XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnRcbiAgICB2bm9kZS5wYXJlbnQgPSBfcGFyZW50Vm5vZGU7XG4gICAgcmV0dXJuIHZub2RlXG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnN1cmVDdG9yIChjb21wLCBiYXNlKSB7XG4gIGlmIChcbiAgICBjb21wLl9fZXNNb2R1bGUgfHxcbiAgICAoaGFzU3ltYm9sICYmIGNvbXBbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ01vZHVsZScpXG4gICkge1xuICAgIGNvbXAgPSBjb21wLmRlZmF1bHQ7XG4gIH1cbiAgcmV0dXJuIGlzT2JqZWN0KGNvbXApXG4gICAgPyBiYXNlLmV4dGVuZChjb21wKVxuICAgIDogY29tcFxufVxuXG5mdW5jdGlvbiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyIChcbiAgZmFjdG9yeSxcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW4sXG4gIHRhZ1xuKSB7XG4gIHZhciBub2RlID0gY3JlYXRlRW1wdHlWTm9kZSgpO1xuICBub2RlLmFzeW5jRmFjdG9yeSA9IGZhY3Rvcnk7XG4gIG5vZGUuYXN5bmNNZXRhID0geyBkYXRhOiBkYXRhLCBjb250ZXh0OiBjb250ZXh0LCBjaGlsZHJlbjogY2hpbGRyZW4sIHRhZzogdGFnIH07XG4gIHJldHVybiBub2RlXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBc3luY0NvbXBvbmVudCAoXG4gIGZhY3RvcnksXG4gIGJhc2VDdG9yXG4pIHtcbiAgaWYgKGlzVHJ1ZShmYWN0b3J5LmVycm9yKSAmJiBpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5lcnJvckNvbXBcbiAgfVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgIHJldHVybiBmYWN0b3J5LnJlc29sdmVkXG4gIH1cblxuICB2YXIgb3duZXIgPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XG4gIGlmIChvd25lciAmJiBpc0RlZihmYWN0b3J5Lm93bmVycykgJiYgZmFjdG9yeS5vd25lcnMuaW5kZXhPZihvd25lcikgPT09IC0xKSB7XG4gICAgLy8gYWxyZWFkeSBwZW5kaW5nXG4gICAgZmFjdG9yeS5vd25lcnMucHVzaChvd25lcik7XG4gIH1cblxuICBpZiAoaXNUcnVlKGZhY3RvcnkubG9hZGluZykgJiYgaXNEZWYoZmFjdG9yeS5sb2FkaW5nQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5sb2FkaW5nQ29tcFxuICB9XG5cbiAgaWYgKG93bmVyICYmICFpc0RlZihmYWN0b3J5Lm93bmVycykpIHtcbiAgICB2YXIgb3duZXJzID0gZmFjdG9yeS5vd25lcnMgPSBbb3duZXJdO1xuICAgIHZhciBzeW5jID0gdHJ1ZTtcbiAgICB2YXIgdGltZXJMb2FkaW5nID0gbnVsbDtcbiAgICB2YXIgdGltZXJUaW1lb3V0ID0gbnVsbFxuXG4gICAgOyhvd25lcikuJG9uKCdob29rOmRlc3Ryb3llZCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZShvd25lcnMsIG93bmVyKTsgfSk7XG5cbiAgICB2YXIgZm9yY2VSZW5kZXIgPSBmdW5jdGlvbiAocmVuZGVyQ29tcGxldGVkKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG93bmVycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgKG93bmVyc1tpXSkuJGZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZW5kZXJDb21wbGV0ZWQpIHtcbiAgICAgICAgb3duZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIGlmICh0aW1lckxvYWRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJMb2FkaW5nKTtcbiAgICAgICAgICB0aW1lckxvYWRpbmcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lclRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJUaW1lb3V0KTtcbiAgICAgICAgICB0aW1lclRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciByZXNvbHZlID0gb25jZShmdW5jdGlvbiAocmVzKSB7XG4gICAgICAvLyBjYWNoZSByZXNvbHZlZFxuICAgICAgZmFjdG9yeS5yZXNvbHZlZCA9IGVuc3VyZUN0b3IocmVzLCBiYXNlQ3Rvcik7XG4gICAgICAvLyBpbnZva2UgY2FsbGJhY2tzIG9ubHkgaWYgdGhpcyBpcyBub3QgYSBzeW5jaHJvbm91cyByZXNvbHZlXG4gICAgICAvLyAoYXN5bmMgcmVzb2x2ZXMgYXJlIHNoaW1tZWQgYXMgc3luY2hyb25vdXMgZHVyaW5nIFNTUilcbiAgICAgIGlmICghc3luYykge1xuICAgICAgICBmb3JjZVJlbmRlcih0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG93bmVycy5sZW5ndGggPSAwO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlamVjdCA9IG9uY2UoZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB0byByZXNvbHZlIGFzeW5jIGNvbXBvbmVudDogXCIgKyAoU3RyaW5nKGZhY3RvcnkpKSArXG4gICAgICAgIChyZWFzb24gPyAoXCJcXG5SZWFzb246IFwiICsgcmVhc29uKSA6ICcnKVxuICAgICAgKTtcbiAgICAgIGlmIChpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICAgICAgZmFjdG9yeS5lcnJvciA9IHRydWU7XG4gICAgICAgIGZvcmNlUmVuZGVyKHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlcyA9IGZhY3RvcnkocmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgIGlmIChpc09iamVjdChyZXMpKSB7XG4gICAgICBpZiAoaXNQcm9taXNlKHJlcykpIHtcbiAgICAgICAgLy8gKCkgPT4gUHJvbWlzZVxuICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgICAgICAgIHJlcy50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNQcm9taXNlKHJlcy5jb21wb25lbnQpKSB7XG4gICAgICAgIHJlcy5jb21wb25lbnQudGhlbihyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgICAgIGlmIChpc0RlZihyZXMuZXJyb3IpKSB7XG4gICAgICAgICAgZmFjdG9yeS5lcnJvckNvbXAgPSBlbnN1cmVDdG9yKHJlcy5lcnJvciwgYmFzZUN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5sb2FkaW5nKSkge1xuICAgICAgICAgIGZhY3RvcnkubG9hZGluZ0NvbXAgPSBlbnN1cmVDdG9yKHJlcy5sb2FkaW5nLCBiYXNlQ3Rvcik7XG4gICAgICAgICAgaWYgKHJlcy5kZWxheSA9PT0gMCkge1xuICAgICAgICAgICAgZmFjdG9yeS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGltZXJMb2FkaW5nID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHRpbWVyTG9hZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpICYmIGlzVW5kZWYoZmFjdG9yeS5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGZvcmNlUmVuZGVyKGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgcmVzLmRlbGF5IHx8IDIwMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy50aW1lb3V0KSkge1xuICAgICAgICAgIHRpbWVyVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGltZXJUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nXG4gICAgICAgICAgICAgICAgICA/IChcInRpbWVvdXQgKFwiICsgKHJlcy50aW1lb3V0KSArIFwibXMpXCIpXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCByZXMudGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzeW5jID0gZmFsc2U7XG4gICAgLy8gcmV0dXJuIGluIGNhc2UgcmVzb2x2ZWQgc3luY2hyb25vdXNseVxuICAgIHJldHVybiBmYWN0b3J5LmxvYWRpbmdcbiAgICAgID8gZmFjdG9yeS5sb2FkaW5nQ29tcFxuICAgICAgOiBmYWN0b3J5LnJlc29sdmVkXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGlzQXN5bmNQbGFjZWhvbGRlciAobm9kZSkge1xuICByZXR1cm4gbm9kZS5pc0NvbW1lbnQgJiYgbm9kZS5hc3luY0ZhY3Rvcnlcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGdldEZpcnN0Q29tcG9uZW50Q2hpbGQgKGNoaWxkcmVuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gY2hpbGRyZW5baV07XG4gICAgICBpZiAoaXNEZWYoYykgJiYgKGlzRGVmKGMuY29tcG9uZW50T3B0aW9ucykgfHwgaXNBc3luY1BsYWNlaG9sZGVyKGMpKSkge1xuICAgICAgICByZXR1cm4gY1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFdmVudHMgKHZtKSB7XG4gIHZtLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2bS5faGFzSG9va0V2ZW50ID0gZmFsc2U7XG4gIC8vIGluaXQgcGFyZW50IGF0dGFjaGVkIGV2ZW50c1xuICB2YXIgbGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgaWYgKGxpc3RlbmVycykge1xuICAgIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyh2bSwgbGlzdGVuZXJzKTtcbiAgfVxufVxuXG52YXIgdGFyZ2V0O1xuXG5mdW5jdGlvbiBhZGQgKGV2ZW50LCBmbikge1xuICB0YXJnZXQuJG9uKGV2ZW50LCBmbik7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSQxIChldmVudCwgZm4pIHtcbiAgdGFyZ2V0LiRvZmYoZXZlbnQsIGZuKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlT25jZUhhbmRsZXIgKGV2ZW50LCBmbikge1xuICB2YXIgX3RhcmdldCA9IHRhcmdldDtcbiAgcmV0dXJuIGZ1bmN0aW9uIG9uY2VIYW5kbGVyICgpIHtcbiAgICB2YXIgcmVzID0gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICBpZiAocmVzICE9PSBudWxsKSB7XG4gICAgICBfdGFyZ2V0LiRvZmYoZXZlbnQsIG9uY2VIYW5kbGVyKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzIChcbiAgdm0sXG4gIGxpc3RlbmVycyxcbiAgb2xkTGlzdGVuZXJzXG4pIHtcbiAgdGFyZ2V0ID0gdm07XG4gIHVwZGF0ZUxpc3RlbmVycyhsaXN0ZW5lcnMsIG9sZExpc3RlbmVycyB8fCB7fSwgYWRkLCByZW1vdmUkMSwgY3JlYXRlT25jZUhhbmRsZXIsIHZtKTtcbiAgdGFyZ2V0ID0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBldmVudHNNaXhpbiAoVnVlKSB7XG4gIHZhciBob29rUkUgPSAvXmhvb2s6LztcbiAgVnVlLnByb3RvdHlwZS4kb24gPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gZXZlbnQubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZtLiRvbihldmVudFtpXSwgZm4pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAodm0uX2V2ZW50c1tldmVudF0gfHwgKHZtLl9ldmVudHNbZXZlbnRdID0gW10pKS5wdXNoKGZuKTtcbiAgICAgIC8vIG9wdGltaXplIGhvb2s6ZXZlbnQgY29zdCBieSB1c2luZyBhIGJvb2xlYW4gZmxhZyBtYXJrZWQgYXQgcmVnaXN0cmF0aW9uXG4gICAgICAvLyBpbnN0ZWFkIG9mIGEgaGFzaCBsb29rdXBcbiAgICAgIGlmIChob29rUkUudGVzdChldmVudCkpIHtcbiAgICAgICAgdm0uX2hhc0hvb2tFdmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9uY2UgPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBmdW5jdGlvbiBvbiAoKSB7XG4gICAgICB2bS4kb2ZmKGV2ZW50LCBvbik7XG4gICAgICBmbi5hcHBseSh2bSwgYXJndW1lbnRzKTtcbiAgICB9XG4gICAgb24uZm4gPSBmbjtcbiAgICB2bS4kb24oZXZlbnQsIG9uKTtcbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRvZmYgPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhbGxcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIHZtLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIC8vIGFycmF5IG9mIGV2ZW50c1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAgICAgZm9yICh2YXIgaSQxID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSQxIDwgbDsgaSQxKyspIHtcbiAgICAgICAgdm0uJG9mZihldmVudFtpJDFdLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMgZXZlbnRcbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4gICAgaWYgKCFjYnMpIHtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICBpZiAoIWZuKSB7XG4gICAgICB2bS5fZXZlbnRzW2V2ZW50XSA9IG51bGw7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMgaGFuZGxlclxuICAgIHZhciBjYjtcbiAgICB2YXIgaSA9IGNicy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY2IgPSBjYnNbaV07XG4gICAgICBpZiAoY2IgPT09IGZuIHx8IGNiLmZuID09PSBmbikge1xuICAgICAgICBjYnMuc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRlbWl0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGxvd2VyQ2FzZUV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlckNhc2VFdmVudCAhPT0gZXZlbnQgJiYgdm0uX2V2ZW50c1tsb3dlckNhc2VFdmVudF0pIHtcbiAgICAgICAgdGlwKFxuICAgICAgICAgIFwiRXZlbnQgXFxcIlwiICsgbG93ZXJDYXNlRXZlbnQgKyBcIlxcXCIgaXMgZW1pdHRlZCBpbiBjb21wb25lbnQgXCIgK1xuICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkgKyBcIiBidXQgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBmb3IgXFxcIlwiICsgZXZlbnQgKyBcIlxcXCIuIFwiICtcbiAgICAgICAgICBcIk5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHlvdSBjYW5ub3QgdXNlIFwiICtcbiAgICAgICAgICBcInYtb24gdG8gbGlzdGVuIHRvIGNhbWVsQ2FzZSBldmVudHMgd2hlbiB1c2luZyBpbi1ET00gdGVtcGxhdGVzLiBcIiArXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcXFwiXCIgKyAoaHlwaGVuYXRlKGV2ZW50KSkgKyBcIlxcXCIgaW5zdGVhZCBvZiBcXFwiXCIgKyBldmVudCArIFwiXFxcIi5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4gICAgaWYgKGNicykge1xuICAgICAgY2JzID0gY2JzLmxlbmd0aCA+IDEgPyB0b0FycmF5KGNicykgOiBjYnM7XG4gICAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRzLCAxKTtcbiAgICAgIHZhciBpbmZvID0gXCJldmVudCBoYW5kbGVyIGZvciBcXFwiXCIgKyBldmVudCArIFwiXFxcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjYnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGludm9rZVdpdGhFcnJvckhhbmRsaW5nKGNic1tpXSwgdm0sIGFyZ3MsIHZtLCBpbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgYWN0aXZlSW5zdGFuY2UgPSBudWxsO1xudmFyIGlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBzZXRBY3RpdmVJbnN0YW5jZSh2bSkge1xuICB2YXIgcHJldkFjdGl2ZUluc3RhbmNlID0gYWN0aXZlSW5zdGFuY2U7XG4gIGFjdGl2ZUluc3RhbmNlID0gdm07XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgYWN0aXZlSW5zdGFuY2UgPSBwcmV2QWN0aXZlSW5zdGFuY2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdExpZmVjeWNsZSAodm0pIHtcbiAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcblxuICAvLyBsb2NhdGUgZmlyc3Qgbm9uLWFic3RyYWN0IHBhcmVudFxuICB2YXIgcGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIGlmIChwYXJlbnQgJiYgIW9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICB3aGlsZSAocGFyZW50LiRvcHRpb25zLmFic3RyYWN0ICYmIHBhcmVudC4kcGFyZW50KSB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICB9XG4gICAgcGFyZW50LiRjaGlsZHJlbi5wdXNoKHZtKTtcbiAgfVxuXG4gIHZtLiRwYXJlbnQgPSBwYXJlbnQ7XG4gIHZtLiRyb290ID0gcGFyZW50ID8gcGFyZW50LiRyb290IDogdm07XG5cbiAgdm0uJGNoaWxkcmVuID0gW107XG4gIHZtLiRyZWZzID0ge307XG5cbiAgdm0uX3dhdGNoZXIgPSBudWxsO1xuICB2bS5faW5hY3RpdmUgPSBudWxsO1xuICB2bS5fZGlyZWN0SW5hY3RpdmUgPSBmYWxzZTtcbiAgdm0uX2lzTW91bnRlZCA9IGZhbHNlO1xuICB2bS5faXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbGlmZWN5Y2xlTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAodm5vZGUsIGh5ZHJhdGluZykge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgdmFyIHByZXZFbCA9IHZtLiRlbDtcbiAgICB2YXIgcHJldlZub2RlID0gdm0uX3Zub2RlO1xuICAgIHZhciByZXN0b3JlQWN0aXZlSW5zdGFuY2UgPSBzZXRBY3RpdmVJbnN0YW5jZSh2bSk7XG4gICAgdm0uX3Zub2RlID0gdm5vZGU7XG4gICAgLy8gVnVlLnByb3RvdHlwZS5fX3BhdGNoX18gaXMgaW5qZWN0ZWQgaW4gZW50cnkgcG9pbnRzXG4gICAgLy8gYmFzZWQgb24gdGhlIHJlbmRlcmluZyBiYWNrZW5kIHVzZWQuXG4gICAgaWYgKCFwcmV2Vm5vZGUpIHtcbiAgICAgIC8vIGluaXRpYWwgcmVuZGVyXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18odm0uJGVsLCB2bm9kZSwgaHlkcmF0aW5nLCBmYWxzZSAvKiByZW1vdmVPbmx5ICovKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdXBkYXRlc1xuICAgICAgdm0uJGVsID0gdm0uX19wYXRjaF9fKHByZXZWbm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICByZXN0b3JlQWN0aXZlSW5zdGFuY2UoKTtcbiAgICAvLyB1cGRhdGUgX192dWVfXyByZWZlcmVuY2VcbiAgICBpZiAocHJldkVsKSB7XG4gICAgICBwcmV2RWwuX192dWVfXyA9IG51bGw7XG4gICAgfVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gdm07XG4gICAgfVxuICAgIC8vIGlmIHBhcmVudCBpcyBhbiBIT0MsIHVwZGF0ZSBpdHMgJGVsIGFzIHdlbGxcbiAgICBpZiAodm0uJHZub2RlICYmIHZtLiRwYXJlbnQgJiYgdm0uJHZub2RlID09PSB2bS4kcGFyZW50Ll92bm9kZSkge1xuICAgICAgdm0uJHBhcmVudC4kZWwgPSB2bS4kZWw7XG4gICAgfVxuICAgIC8vIHVwZGF0ZWQgaG9vayBpcyBjYWxsZWQgYnkgdGhlIHNjaGVkdWxlciB0byBlbnN1cmUgdGhhdCBjaGlsZHJlbiBhcmVcbiAgICAvLyB1cGRhdGVkIGluIGEgcGFyZW50J3MgdXBkYXRlZCBob29rLlxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAgICB2bS5fd2F0Y2hlci51cGRhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlRGVzdHJveScpO1xuICAgIHZtLl9pc0JlaW5nRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAvLyByZW1vdmUgc2VsZiBmcm9tIHBhcmVudFxuICAgIHZhciBwYXJlbnQgPSB2bS4kcGFyZW50O1xuICAgIGlmIChwYXJlbnQgJiYgIXBhcmVudC5faXNCZWluZ0Rlc3Ryb3llZCAmJiAhdm0uJG9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICAgIHJlbW92ZShwYXJlbnQuJGNoaWxkcmVuLCB2bSk7XG4gICAgfVxuICAgIC8vIHRlYXJkb3duIHdhdGNoZXJzXG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAgICB2bS5fd2F0Y2hlci50ZWFyZG93bigpO1xuICAgIH1cbiAgICB2YXIgaSA9IHZtLl93YXRjaGVycy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdm0uX3dhdGNoZXJzW2ldLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgZnJvbSBkYXRhIG9iXG4gICAgLy8gZnJvemVuIG9iamVjdCBtYXkgbm90IGhhdmUgb2JzZXJ2ZXIuXG4gICAgaWYgKHZtLl9kYXRhLl9fb2JfXykge1xuICAgICAgdm0uX2RhdGEuX19vYl9fLnZtQ291bnQtLTtcbiAgICB9XG4gICAgLy8gY2FsbCB0aGUgbGFzdCBob29rLi4uXG4gICAgdm0uX2lzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAvLyBpbnZva2UgZGVzdHJveSBob29rcyBvbiBjdXJyZW50IHJlbmRlcmVkIHRyZWVcbiAgICB2bS5fX3BhdGNoX18odm0uX3Zub2RlLCBudWxsKTtcbiAgICAvLyBmaXJlIGRlc3Ryb3llZCBob29rXG4gICAgY2FsbEhvb2sodm0sICdkZXN0cm95ZWQnKTtcbiAgICAvLyB0dXJuIG9mZiBhbGwgaW5zdGFuY2UgbGlzdGVuZXJzLlxuICAgIHZtLiRvZmYoKTtcbiAgICAvLyByZW1vdmUgX192dWVfXyByZWZlcmVuY2VcbiAgICBpZiAodm0uJGVsKSB7XG4gICAgICB2bS4kZWwuX192dWVfXyA9IG51bGw7XG4gICAgfVxuICAgIC8vIHJlbGVhc2UgY2lyY3VsYXIgcmVmZXJlbmNlICgjNjc1OSlcbiAgICBpZiAodm0uJHZub2RlKSB7XG4gICAgICB2bS4kdm5vZGUucGFyZW50ID0gbnVsbDtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIG1vdW50Q29tcG9uZW50IChcbiAgdm0sXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICB2bS4kZWwgPSBlbDtcbiAgaWYgKCF2bS4kb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2bS4kb3B0aW9ucy5yZW5kZXIgPSBjcmVhdGVFbXB0eVZOb2RlO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICgodm0uJG9wdGlvbnMudGVtcGxhdGUgJiYgdm0uJG9wdGlvbnMudGVtcGxhdGUuY2hhckF0KDApICE9PSAnIycpIHx8XG4gICAgICAgIHZtLiRvcHRpb25zLmVsIHx8IGVsKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ1lvdSBhcmUgdXNpbmcgdGhlIHJ1bnRpbWUtb25seSBidWlsZCBvZiBWdWUgd2hlcmUgdGhlIHRlbXBsYXRlICcgK1xuICAgICAgICAgICdjb21waWxlciBpcyBub3QgYXZhaWxhYmxlLiBFaXRoZXIgcHJlLWNvbXBpbGUgdGhlIHRlbXBsYXRlcyBpbnRvICcgK1xuICAgICAgICAgICdyZW5kZXIgZnVuY3Rpb25zLCBvciB1c2UgdGhlIGNvbXBpbGVyLWluY2x1ZGVkIGJ1aWxkLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ZhaWxlZCB0byBtb3VudCBjb21wb25lbnQ6IHRlbXBsYXRlIG9yIHJlbmRlciBmdW5jdGlvbiBub3QgZGVmaW5lZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbGxIb29rKHZtLCAnYmVmb3JlTW91bnQnKTtcblxuICB2YXIgdXBkYXRlQ29tcG9uZW50O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICB1cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgbmFtZSA9IHZtLl9uYW1lO1xuICAgICAgdmFyIGlkID0gdm0uX3VpZDtcbiAgICAgIHZhciBzdGFydFRhZyA9IFwidnVlLXBlcmYtc3RhcnQ6XCIgKyBpZDtcbiAgICAgIHZhciBlbmRUYWcgPSBcInZ1ZS1wZXJmLWVuZDpcIiArIGlkO1xuXG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICAgIHZhciB2bm9kZSA9IHZtLl9yZW5kZXIoKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKFwidnVlIFwiICsgbmFtZSArIFwiIHJlbmRlclwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG5cbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgICAgdm0uX3VwZGF0ZSh2bm9kZSwgaHlkcmF0aW5nKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKFwidnVlIFwiICsgbmFtZSArIFwiIHBhdGNoXCIpLCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZtLl91cGRhdGUodm0uX3JlbmRlcigpLCBoeWRyYXRpbmcpO1xuICAgIH07XG4gIH1cblxuICAvLyB3ZSBzZXQgdGhpcyB0byB2bS5fd2F0Y2hlciBpbnNpZGUgdGhlIHdhdGNoZXIncyBjb25zdHJ1Y3RvclxuICAvLyBzaW5jZSB0aGUgd2F0Y2hlcidzIGluaXRpYWwgcGF0Y2ggbWF5IGNhbGwgJGZvcmNlVXBkYXRlIChlLmcuIGluc2lkZSBjaGlsZFxuICAvLyBjb21wb25lbnQncyBtb3VudGVkIGhvb2spLCB3aGljaCByZWxpZXMgb24gdm0uX3dhdGNoZXIgYmVpbmcgYWxyZWFkeSBkZWZpbmVkXG4gIG5ldyBXYXRjaGVyKHZtLCB1cGRhdGVDb21wb25lbnQsIG5vb3AsIHtcbiAgICBiZWZvcmU6IGZ1bmN0aW9uIGJlZm9yZSAoKSB7XG4gICAgICBpZiAodm0uX2lzTW91bnRlZCAmJiAhdm0uX2lzRGVzdHJveWVkKSB7XG4gICAgICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlVXBkYXRlJyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB0cnVlIC8qIGlzUmVuZGVyV2F0Y2hlciAqLyk7XG4gIGh5ZHJhdGluZyA9IGZhbHNlO1xuXG4gIC8vIG1hbnVhbGx5IG1vdW50ZWQgaW5zdGFuY2UsIGNhbGwgbW91bnRlZCBvbiBzZWxmXG4gIC8vIG1vdW50ZWQgaXMgY2FsbGVkIGZvciByZW5kZXItY3JlYXRlZCBjaGlsZCBjb21wb25lbnRzIGluIGl0cyBpbnNlcnRlZCBob29rXG4gIGlmICh2bS4kdm5vZGUgPT0gbnVsbCkge1xuICAgIHZtLl9pc01vdW50ZWQgPSB0cnVlO1xuICAgIGNhbGxIb29rKHZtLCAnbW91bnRlZCcpO1xuICB9XG4gIHJldHVybiB2bVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDaGlsZENvbXBvbmVudCAoXG4gIHZtLFxuICBwcm9wc0RhdGEsXG4gIGxpc3RlbmVycyxcbiAgcGFyZW50Vm5vZGUsXG4gIHJlbmRlckNoaWxkcmVuXG4pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgPSB0cnVlO1xuICB9XG5cbiAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgY29tcG9uZW50IGhhcyBzbG90IGNoaWxkcmVuXG4gIC8vIHdlIG5lZWQgdG8gZG8gdGhpcyBiZWZvcmUgb3ZlcndyaXRpbmcgJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLlxuXG4gIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBkeW5hbWljIHNjb3BlZFNsb3RzIChoYW5kLXdyaXR0ZW4gb3IgY29tcGlsZWQgYnV0IHdpdGhcbiAgLy8gZHluYW1pYyBzbG90IG5hbWVzKS4gU3RhdGljIHNjb3BlZCBzbG90cyBjb21waWxlZCBmcm9tIHRlbXBsYXRlIGhhcyB0aGVcbiAgLy8gXCIkc3RhYmxlXCIgbWFya2VyLlxuICB2YXIgbmV3U2NvcGVkU2xvdHMgPSBwYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzO1xuICB2YXIgb2xkU2NvcGVkU2xvdHMgPSB2bS4kc2NvcGVkU2xvdHM7XG4gIHZhciBoYXNEeW5hbWljU2NvcGVkU2xvdCA9ICEhKFxuICAgIChuZXdTY29wZWRTbG90cyAmJiAhbmV3U2NvcGVkU2xvdHMuJHN0YWJsZSkgfHxcbiAgICAob2xkU2NvcGVkU2xvdHMgIT09IGVtcHR5T2JqZWN0ICYmICFvbGRTY29wZWRTbG90cy4kc3RhYmxlKSB8fFxuICAgIChuZXdTY29wZWRTbG90cyAmJiB2bS4kc2NvcGVkU2xvdHMuJGtleSAhPT0gbmV3U2NvcGVkU2xvdHMuJGtleSlcbiAgKTtcblxuICAvLyBBbnkgc3RhdGljIHNsb3QgY2hpbGRyZW4gZnJvbSB0aGUgcGFyZW50IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHBhcmVudCdzXG4gIC8vIHVwZGF0ZS4gRHluYW1pYyBzY29wZWQgc2xvdHMgbWF5IGFsc28gaGF2ZSBjaGFuZ2VkLiBJbiBzdWNoIGNhc2VzLCBhIGZvcmNlZFxuICAvLyB1cGRhdGUgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSBjb3JyZWN0bmVzcy5cbiAgdmFyIG5lZWRzRm9yY2VVcGRhdGUgPSAhIShcbiAgICByZW5kZXJDaGlsZHJlbiB8fCAgICAgICAgICAgICAgIC8vIGhhcyBuZXcgc3RhdGljIHNsb3RzXG4gICAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuIHx8ICAvLyBoYXMgb2xkIHN0YXRpYyBzbG90c1xuICAgIGhhc0R5bmFtaWNTY29wZWRTbG90XG4gICk7XG5cbiAgdm0uJG9wdGlvbnMuX3BhcmVudFZub2RlID0gcGFyZW50Vm5vZGU7XG4gIHZtLiR2bm9kZSA9IHBhcmVudFZub2RlOyAvLyB1cGRhdGUgdm0ncyBwbGFjZWhvbGRlciBub2RlIHdpdGhvdXQgcmUtcmVuZGVyXG5cbiAgaWYgKHZtLl92bm9kZSkgeyAvLyB1cGRhdGUgY2hpbGQgdHJlZSdzIHBhcmVudFxuICAgIHZtLl92bm9kZS5wYXJlbnQgPSBwYXJlbnRWbm9kZTtcbiAgfVxuICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gPSByZW5kZXJDaGlsZHJlbjtcblxuICAvLyB1cGRhdGUgJGF0dHJzIGFuZCAkbGlzdGVuZXJzIGhhc2hcbiAgLy8gdGhlc2UgYXJlIGFsc28gcmVhY3RpdmUgc28gdGhleSBtYXkgdHJpZ2dlciBjaGlsZCB1cGRhdGUgaWYgdGhlIGNoaWxkXG4gIC8vIHVzZWQgdGhlbSBkdXJpbmcgcmVuZGVyXG4gIHZtLiRhdHRycyA9IHBhcmVudFZub2RlLmRhdGEuYXR0cnMgfHwgZW1wdHlPYmplY3Q7XG4gIHZtLiRsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMgfHwgZW1wdHlPYmplY3Q7XG5cbiAgLy8gdXBkYXRlIHByb3BzXG4gIGlmIChwcm9wc0RhdGEgJiYgdm0uJG9wdGlvbnMucHJvcHMpIHtcbiAgICB0b2dnbGVPYnNlcnZpbmcoZmFsc2UpO1xuICAgIHZhciBwcm9wcyA9IHZtLl9wcm9wcztcbiAgICB2YXIgcHJvcEtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IHByb3BLZXlzW2ldO1xuICAgICAgdmFyIHByb3BPcHRpb25zID0gdm0uJG9wdGlvbnMucHJvcHM7IC8vIHd0ZiBmbG93P1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BPcHRpb25zLCBwcm9wc0RhdGEsIHZtKTtcbiAgICB9XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKHRydWUpO1xuICAgIC8vIGtlZXAgYSBjb3B5IG9mIHJhdyBwcm9wc0RhdGFcbiAgICB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgPSBwcm9wc0RhdGE7XG4gIH1cblxuICAvLyB1cGRhdGUgbGlzdGVuZXJzXG4gIGxpc3RlbmVycyA9IGxpc3RlbmVycyB8fCBlbXB0eU9iamVjdDtcbiAgdmFyIG9sZExpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG4gIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyh2bSwgbGlzdGVuZXJzLCBvbGRMaXN0ZW5lcnMpO1xuXG4gIC8vIHJlc29sdmUgc2xvdHMgKyBmb3JjZSB1cGRhdGUgaWYgaGFzIGNoaWxkcmVuXG4gIGlmIChuZWVkc0ZvcmNlVXBkYXRlKSB7XG4gICAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHJlbmRlckNoaWxkcmVuLCBwYXJlbnRWbm9kZS5jb250ZXh0KTtcbiAgICB2bS4kZm9yY2VVcGRhdGUoKTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNJbkluYWN0aXZlVHJlZSAodm0pIHtcbiAgd2hpbGUgKHZtICYmICh2bSA9IHZtLiRwYXJlbnQpKSB7XG4gICAgaWYgKHZtLl9pbmFjdGl2ZSkgeyByZXR1cm4gdHJ1ZSB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZtKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9IGVsc2UgaWYgKHZtLl9kaXJlY3RJbmFjdGl2ZSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2bS5faW5hY3RpdmUgfHwgdm0uX2luYWN0aXZlID09PSBudWxsKSB7XG4gICAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdhY3RpdmF0ZWQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IHRydWU7XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cbiAgaWYgKCF2bS5faW5hY3RpdmUpIHtcbiAgICB2bS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdkZWFjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rICh2bSwgaG9vaykge1xuICAvLyAjNzU3MyBkaXNhYmxlIGRlcCBjb2xsZWN0aW9uIHdoZW4gaW52b2tpbmcgbGlmZWN5Y2xlIGhvb2tzXG4gIHB1c2hUYXJnZXQoKTtcbiAgdmFyIGhhbmRsZXJzID0gdm0uJG9wdGlvbnNbaG9va107XG4gIHZhciBpbmZvID0gaG9vayArIFwiIGhvb2tcIjtcbiAgaWYgKGhhbmRsZXJzKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSBoYW5kbGVycy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgIGludm9rZVdpdGhFcnJvckhhbmRsaW5nKGhhbmRsZXJzW2ldLCB2bSwgbnVsbCwgdm0sIGluZm8pO1xuICAgIH1cbiAgfVxuICBpZiAodm0uX2hhc0hvb2tFdmVudCkge1xuICAgIHZtLiRlbWl0KCdob29rOicgKyBob29rKTtcbiAgfVxuICBwb3BUYXJnZXQoKTtcbn1cblxuLyogICovXG5cbnZhciBNQVhfVVBEQVRFX0NPVU5UID0gMTAwO1xuXG52YXIgcXVldWUgPSBbXTtcbnZhciBhY3RpdmF0ZWRDaGlsZHJlbiA9IFtdO1xudmFyIGhhcyA9IHt9O1xudmFyIGNpcmN1bGFyID0ge307XG52YXIgd2FpdGluZyA9IGZhbHNlO1xudmFyIGZsdXNoaW5nID0gZmFsc2U7XG52YXIgaW5kZXggPSAwO1xuXG4vKipcbiAqIFJlc2V0IHRoZSBzY2hlZHVsZXIncyBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gcmVzZXRTY2hlZHVsZXJTdGF0ZSAoKSB7XG4gIGluZGV4ID0gcXVldWUubGVuZ3RoID0gYWN0aXZhdGVkQ2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgaGFzID0ge307XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2lyY3VsYXIgPSB7fTtcbiAgfVxuICB3YWl0aW5nID0gZmx1c2hpbmcgPSBmYWxzZTtcbn1cblxuLy8gQXN5bmMgZWRnZSBjYXNlICM2NTY2IHJlcXVpcmVzIHNhdmluZyB0aGUgdGltZXN0YW1wIHdoZW4gZXZlbnQgbGlzdGVuZXJzIGFyZVxuLy8gYXR0YWNoZWQuIEhvd2V2ZXIsIGNhbGxpbmcgcGVyZm9ybWFuY2Uubm93KCkgaGFzIGEgcGVyZiBvdmVyaGVhZCBlc3BlY2lhbGx5XG4vLyBpZiB0aGUgcGFnZSBoYXMgdGhvdXNhbmRzIG9mIGV2ZW50IGxpc3RlbmVycy4gSW5zdGVhZCwgd2UgdGFrZSBhIHRpbWVzdGFtcFxuLy8gZXZlcnkgdGltZSB0aGUgc2NoZWR1bGVyIGZsdXNoZXMgYW5kIHVzZSB0aGF0IGZvciBhbGwgZXZlbnQgbGlzdGVuZXJzXG4vLyBhdHRhY2hlZCBkdXJpbmcgdGhhdCBmbHVzaC5cbnZhciBjdXJyZW50Rmx1c2hUaW1lc3RhbXAgPSAwO1xuXG4vLyBBc3luYyBlZGdlIGNhc2UgZml4IHJlcXVpcmVzIHN0b3JpbmcgYW4gZXZlbnQgbGlzdGVuZXIncyBhdHRhY2ggdGltZXN0YW1wLlxudmFyIGdldE5vdyA9IERhdGUubm93O1xuXG4vLyBEZXRlcm1pbmUgd2hhdCBldmVudCB0aW1lc3RhbXAgdGhlIGJyb3dzZXIgaXMgdXNpbmcuIEFubm95aW5nbHksIHRoZVxuLy8gdGltZXN0YW1wIGNhbiBlaXRoZXIgYmUgaGktcmVzIChyZWxhdGl2ZSB0byBwYWdlIGxvYWQpIG9yIGxvdy1yZXNcbi8vIChyZWxhdGl2ZSB0byBVTklYIGVwb2NoKSwgc28gaW4gb3JkZXIgdG8gY29tcGFyZSB0aW1lIHdlIGhhdmUgdG8gdXNlIHRoZVxuLy8gc2FtZSB0aW1lc3RhbXAgdHlwZSB3aGVuIHNhdmluZyB0aGUgZmx1c2ggdGltZXN0YW1wLlxuLy8gQWxsIElFIHZlcnNpb25zIHVzZSBsb3ctcmVzIGV2ZW50IHRpbWVzdGFtcHMsIGFuZCBoYXZlIHByb2JsZW1hdGljIGNsb2NrXG4vLyBpbXBsZW1lbnRhdGlvbnMgKCM5NjMyKVxuaWYgKGluQnJvd3NlciAmJiAhaXNJRSkge1xuICB2YXIgcGVyZm9ybWFuY2UgPSB3aW5kb3cucGVyZm9ybWFuY2U7XG4gIGlmIChcbiAgICBwZXJmb3JtYW5jZSAmJlxuICAgIHR5cGVvZiBwZXJmb3JtYW5jZS5ub3cgPT09ICdmdW5jdGlvbicgJiZcbiAgICBnZXROb3coKSA+IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpLnRpbWVTdGFtcFxuICApIHtcbiAgICAvLyBpZiB0aGUgZXZlbnQgdGltZXN0YW1wLCBhbHRob3VnaCBldmFsdWF0ZWQgQUZURVIgdGhlIERhdGUubm93KCksIGlzXG4gICAgLy8gc21hbGxlciB0aGFuIGl0LCBpdCBtZWFucyB0aGUgZXZlbnQgaXMgdXNpbmcgYSBoaS1yZXMgdGltZXN0YW1wLFxuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHVzZSB0aGUgaGktcmVzIHZlcnNpb24gZm9yIGV2ZW50IGxpc3RlbmVyIHRpbWVzdGFtcHMgYXNcbiAgICAvLyB3ZWxsLlxuICAgIGdldE5vdyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpOyB9O1xuICB9XG59XG5cbi8qKlxuICogRmx1c2ggYm90aCBxdWV1ZXMgYW5kIHJ1biB0aGUgd2F0Y2hlcnMuXG4gKi9cbmZ1bmN0aW9uIGZsdXNoU2NoZWR1bGVyUXVldWUgKCkge1xuICBjdXJyZW50Rmx1c2hUaW1lc3RhbXAgPSBnZXROb3coKTtcbiAgZmx1c2hpbmcgPSB0cnVlO1xuICB2YXIgd2F0Y2hlciwgaWQ7XG5cbiAgLy8gU29ydCBxdWV1ZSBiZWZvcmUgZmx1c2guXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0OlxuICAvLyAxLiBDb21wb25lbnRzIGFyZSB1cGRhdGVkIGZyb20gcGFyZW50IHRvIGNoaWxkLiAoYmVjYXVzZSBwYXJlbnQgaXMgYWx3YXlzXG4gIC8vICAgIGNyZWF0ZWQgYmVmb3JlIHRoZSBjaGlsZClcbiAgLy8gMi4gQSBjb21wb25lbnQncyB1c2VyIHdhdGNoZXJzIGFyZSBydW4gYmVmb3JlIGl0cyByZW5kZXIgd2F0Y2hlciAoYmVjYXVzZVxuICAvLyAgICB1c2VyIHdhdGNoZXJzIGFyZSBjcmVhdGVkIGJlZm9yZSB0aGUgcmVuZGVyIHdhdGNoZXIpXG4gIC8vIDMuIElmIGEgY29tcG9uZW50IGlzIGRlc3Ryb3llZCBkdXJpbmcgYSBwYXJlbnQgY29tcG9uZW50J3Mgd2F0Y2hlciBydW4sXG4gIC8vICAgIGl0cyB3YXRjaGVycyBjYW4gYmUgc2tpcHBlZC5cbiAgcXVldWUuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5pZCAtIGIuaWQ7IH0pO1xuXG4gIC8vIGRvIG5vdCBjYWNoZSBsZW5ndGggYmVjYXVzZSBtb3JlIHdhdGNoZXJzIG1pZ2h0IGJlIHB1c2hlZFxuICAvLyBhcyB3ZSBydW4gZXhpc3Rpbmcgd2F0Y2hlcnNcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcXVldWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgd2F0Y2hlciA9IHF1ZXVlW2luZGV4XTtcbiAgICBpZiAod2F0Y2hlci5iZWZvcmUpIHtcbiAgICAgIHdhdGNoZXIuYmVmb3JlKCk7XG4gICAgfVxuICAgIGlkID0gd2F0Y2hlci5pZDtcbiAgICBoYXNbaWRdID0gbnVsbDtcbiAgICB3YXRjaGVyLnJ1bigpO1xuICAgIC8vIGluIGRldiBidWlsZCwgY2hlY2sgYW5kIHN0b3AgY2lyY3VsYXIgdXBkYXRlcy5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBoYXNbaWRdICE9IG51bGwpIHtcbiAgICAgIGNpcmN1bGFyW2lkXSA9IChjaXJjdWxhcltpZF0gfHwgMCkgKyAxO1xuICAgICAgaWYgKGNpcmN1bGFyW2lkXSA+IE1BWF9VUERBVEVfQ09VTlQpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IG1heSBoYXZlIGFuIGluZmluaXRlIHVwZGF0ZSBsb29wICcgKyAoXG4gICAgICAgICAgICB3YXRjaGVyLnVzZXJcbiAgICAgICAgICAgICAgPyAoXCJpbiB3YXRjaGVyIHdpdGggZXhwcmVzc2lvbiBcXFwiXCIgKyAod2F0Y2hlci5leHByZXNzaW9uKSArIFwiXFxcIlwiKVxuICAgICAgICAgICAgICA6IFwiaW4gYSBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9uLlwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3YXRjaGVyLnZtXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8ga2VlcCBjb3BpZXMgb2YgcG9zdCBxdWV1ZXMgYmVmb3JlIHJlc2V0dGluZyBzdGF0ZVxuICB2YXIgYWN0aXZhdGVkUXVldWUgPSBhY3RpdmF0ZWRDaGlsZHJlbi5zbGljZSgpO1xuICB2YXIgdXBkYXRlZFF1ZXVlID0gcXVldWUuc2xpY2UoKTtcblxuICByZXNldFNjaGVkdWxlclN0YXRlKCk7XG5cbiAgLy8gY2FsbCBjb21wb25lbnQgdXBkYXRlZCBhbmQgYWN0aXZhdGVkIGhvb2tzXG4gIGNhbGxBY3RpdmF0ZWRIb29rcyhhY3RpdmF0ZWRRdWV1ZSk7XG4gIGNhbGxVcGRhdGVkSG9va3ModXBkYXRlZFF1ZXVlKTtcblxuICAvLyBkZXZ0b29sIGhvb2tcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChkZXZ0b29scyAmJiBjb25maWcuZGV2dG9vbHMpIHtcbiAgICBkZXZ0b29scy5lbWl0KCdmbHVzaCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxVcGRhdGVkSG9va3MgKHF1ZXVlKSB7XG4gIHZhciBpID0gcXVldWUubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIHdhdGNoZXIgPSBxdWV1ZVtpXTtcbiAgICB2YXIgdm0gPSB3YXRjaGVyLnZtO1xuICAgIGlmICh2bS5fd2F0Y2hlciA9PT0gd2F0Y2hlciAmJiB2bS5faXNNb3VudGVkICYmICF2bS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIGNhbGxIb29rKHZtLCAndXBkYXRlZCcpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFF1ZXVlIGEga2VwdC1hbGl2ZSBjb21wb25lbnQgdGhhdCB3YXMgYWN0aXZhdGVkIGR1cmluZyBwYXRjaC5cbiAqIFRoZSBxdWV1ZSB3aWxsIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUgZW50aXJlIHRyZWUgaGFzIGJlZW4gcGF0Y2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVldWVBY3RpdmF0ZWRDb21wb25lbnQgKHZtKSB7XG4gIC8vIHNldHRpbmcgX2luYWN0aXZlIHRvIGZhbHNlIGhlcmUgc28gdGhhdCBhIHJlbmRlciBmdW5jdGlvbiBjYW5cbiAgLy8gcmVseSBvbiBjaGVja2luZyB3aGV0aGVyIGl0J3MgaW4gYW4gaW5hY3RpdmUgdHJlZSAoZS5nLiByb3V0ZXItdmlldylcbiAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gIGFjdGl2YXRlZENoaWxkcmVuLnB1c2godm0pO1xufVxuXG5mdW5jdGlvbiBjYWxsQWN0aXZhdGVkSG9va3MgKHF1ZXVlKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBxdWV1ZVtpXS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQocXVldWVbaV0sIHRydWUgLyogdHJ1ZSAqLyk7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXNoIGEgd2F0Y2hlciBpbnRvIHRoZSB3YXRjaGVyIHF1ZXVlLlxuICogSm9icyB3aXRoIGR1cGxpY2F0ZSBJRHMgd2lsbCBiZSBza2lwcGVkIHVubGVzcyBpdCdzXG4gKiBwdXNoZWQgd2hlbiB0aGUgcXVldWUgaXMgYmVpbmcgZmx1c2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVldWVXYXRjaGVyICh3YXRjaGVyKSB7XG4gIHZhciBpZCA9IHdhdGNoZXIuaWQ7XG4gIGlmIChoYXNbaWRdID09IG51bGwpIHtcbiAgICBoYXNbaWRdID0gdHJ1ZTtcbiAgICBpZiAoIWZsdXNoaW5nKSB7XG4gICAgICBxdWV1ZS5wdXNoKHdhdGNoZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiBhbHJlYWR5IGZsdXNoaW5nLCBzcGxpY2UgdGhlIHdhdGNoZXIgYmFzZWQgb24gaXRzIGlkXG4gICAgICAvLyBpZiBhbHJlYWR5IHBhc3QgaXRzIGlkLCBpdCB3aWxsIGJlIHJ1biBuZXh0IGltbWVkaWF0ZWx5LlxuICAgICAgdmFyIGkgPSBxdWV1ZS5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKGkgPiBpbmRleCAmJiBxdWV1ZVtpXS5pZCA+IHdhdGNoZXIuaWQpIHtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuICAgICAgcXVldWUuc3BsaWNlKGkgKyAxLCAwLCB3YXRjaGVyKTtcbiAgICB9XG4gICAgLy8gcXVldWUgdGhlIGZsdXNoXG4gICAgaWYgKCF3YWl0aW5nKSB7XG4gICAgICB3YWl0aW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWNvbmZpZy5hc3luYykge1xuICAgICAgICBmbHVzaFNjaGVkdWxlclF1ZXVlKCk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgbmV4dFRpY2soZmx1c2hTY2hlZHVsZXJRdWV1ZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG5cblxudmFyIHVpZCQyID0gMDtcblxuLyoqXG4gKiBBIHdhdGNoZXIgcGFyc2VzIGFuIGV4cHJlc3Npb24sIGNvbGxlY3RzIGRlcGVuZGVuY2llcyxcbiAqIGFuZCBmaXJlcyBjYWxsYmFjayB3aGVuIHRoZSBleHByZXNzaW9uIHZhbHVlIGNoYW5nZXMuXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGJvdGggdGhlICR3YXRjaCgpIGFwaSBhbmQgZGlyZWN0aXZlcy5cbiAqL1xudmFyIFdhdGNoZXIgPSBmdW5jdGlvbiBXYXRjaGVyIChcbiAgdm0sXG4gIGV4cE9yRm4sXG4gIGNiLFxuICBvcHRpb25zLFxuICBpc1JlbmRlcldhdGNoZXJcbikge1xuICB0aGlzLnZtID0gdm07XG4gIGlmIChpc1JlbmRlcldhdGNoZXIpIHtcbiAgICB2bS5fd2F0Y2hlciA9IHRoaXM7XG4gIH1cbiAgdm0uX3dhdGNoZXJzLnB1c2godGhpcyk7XG4gIC8vIG9wdGlvbnNcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICB0aGlzLmRlZXAgPSAhIW9wdGlvbnMuZGVlcDtcbiAgICB0aGlzLnVzZXIgPSAhIW9wdGlvbnMudXNlcjtcbiAgICB0aGlzLmxhenkgPSAhIW9wdGlvbnMubGF6eTtcbiAgICB0aGlzLnN5bmMgPSAhIW9wdGlvbnMuc3luYztcbiAgICB0aGlzLmJlZm9yZSA9IG9wdGlvbnMuYmVmb3JlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZGVlcCA9IHRoaXMudXNlciA9IHRoaXMubGF6eSA9IHRoaXMuc3luYyA9IGZhbHNlO1xuICB9XG4gIHRoaXMuY2IgPSBjYjtcbiAgdGhpcy5pZCA9ICsrdWlkJDI7IC8vIHVpZCBmb3IgYmF0Y2hpbmdcbiAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICB0aGlzLmRpcnR5ID0gdGhpcy5sYXp5OyAvLyBmb3IgbGF6eSB3YXRjaGVyc1xuICB0aGlzLmRlcHMgPSBbXTtcbiAgdGhpcy5uZXdEZXBzID0gW107XG4gIHRoaXMuZGVwSWRzID0gbmV3IF9TZXQoKTtcbiAgdGhpcy5uZXdEZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0aGlzLmV4cHJlc3Npb24gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nXG4gICAgPyBleHBPckZuLnRvU3RyaW5nKClcbiAgICA6ICcnO1xuICAvLyBwYXJzZSBleHByZXNzaW9uIGZvciBnZXR0ZXJcbiAgaWYgKHR5cGVvZiBleHBPckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBleHBPckZuO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZ2V0dGVyID0gcGFyc2VQYXRoKGV4cE9yRm4pO1xuICAgIGlmICghdGhpcy5nZXR0ZXIpIHtcbiAgICAgIHRoaXMuZ2V0dGVyID0gbm9vcDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJGYWlsZWQgd2F0Y2hpbmcgcGF0aDogXFxcIlwiICsgZXhwT3JGbiArIFwiXFxcIiBcIiArXG4gICAgICAgICdXYXRjaGVyIG9ubHkgYWNjZXB0cyBzaW1wbGUgZG90LWRlbGltaXRlZCBwYXRocy4gJyArXG4gICAgICAgICdGb3IgZnVsbCBjb250cm9sLCB1c2UgYSBmdW5jdGlvbiBpbnN0ZWFkLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0aGlzLnZhbHVlID0gdGhpcy5sYXp5XG4gICAgPyB1bmRlZmluZWRcbiAgICA6IHRoaXMuZ2V0KCk7XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIHRoZSBnZXR0ZXIsIGFuZCByZS1jb2xsZWN0IGRlcGVuZGVuY2llcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0ICgpIHtcbiAgcHVzaFRhcmdldCh0aGlzKTtcbiAgdmFyIHZhbHVlO1xuICB2YXIgdm0gPSB0aGlzLnZtO1xuICB0cnkge1xuICAgIHZhbHVlID0gdGhpcy5nZXR0ZXIuY2FsbCh2bSwgdm0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIChcImdldHRlciBmb3Igd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgLy8gXCJ0b3VjaFwiIGV2ZXJ5IHByb3BlcnR5IHNvIHRoZXkgYXJlIGFsbCB0cmFja2VkIGFzXG4gICAgLy8gZGVwZW5kZW5jaWVzIGZvciBkZWVwIHdhdGNoaW5nXG4gICAgaWYgKHRoaXMuZGVlcCkge1xuICAgICAgdHJhdmVyc2UodmFsdWUpO1xuICAgIH1cbiAgICBwb3BUYXJnZXQoKTtcbiAgICB0aGlzLmNsZWFudXBEZXBzKCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59O1xuXG4vKipcbiAqIEFkZCBhIGRlcGVuZGVuY3kgdG8gdGhpcyBkaXJlY3RpdmUuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmFkZERlcCA9IGZ1bmN0aW9uIGFkZERlcCAoZGVwKSB7XG4gIHZhciBpZCA9IGRlcC5pZDtcbiAgaWYgKCF0aGlzLm5ld0RlcElkcy5oYXMoaWQpKSB7XG4gICAgdGhpcy5uZXdEZXBJZHMuYWRkKGlkKTtcbiAgICB0aGlzLm5ld0RlcHMucHVzaChkZXApO1xuICAgIGlmICghdGhpcy5kZXBJZHMuaGFzKGlkKSkge1xuICAgICAgZGVwLmFkZFN1Yih0aGlzKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ2xlYW4gdXAgZm9yIGRlcGVuZGVuY3kgY29sbGVjdGlvbi5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuY2xlYW51cERlcHMgPSBmdW5jdGlvbiBjbGVhbnVwRGVwcyAoKSB7XG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciBkZXAgPSB0aGlzLmRlcHNbaV07XG4gICAgaWYgKCF0aGlzLm5ld0RlcElkcy5oYXMoZGVwLmlkKSkge1xuICAgICAgZGVwLnJlbW92ZVN1Yih0aGlzKTtcbiAgICB9XG4gIH1cbiAgdmFyIHRtcCA9IHRoaXMuZGVwSWRzO1xuICB0aGlzLmRlcElkcyA9IHRoaXMubmV3RGVwSWRzO1xuICB0aGlzLm5ld0RlcElkcyA9IHRtcDtcbiAgdGhpcy5uZXdEZXBJZHMuY2xlYXIoKTtcbiAgdG1wID0gdGhpcy5kZXBzO1xuICB0aGlzLmRlcHMgPSB0aGlzLm5ld0RlcHM7XG4gIHRoaXMubmV3RGVwcyA9IHRtcDtcbiAgdGhpcy5uZXdEZXBzLmxlbmd0aCA9IDA7XG59O1xuXG4vKipcbiAqIFN1YnNjcmliZXIgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQgd2hlbiBhIGRlcGVuZGVuY3kgY2hhbmdlcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlICgpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHRoaXMubGF6eSkge1xuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHRoaXMuc3luYykge1xuICAgIHRoaXMucnVuKCk7XG4gIH0gZWxzZSB7XG4gICAgcXVldWVXYXRjaGVyKHRoaXMpO1xuICB9XG59O1xuXG4vKipcbiAqIFNjaGVkdWxlciBqb2IgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQgYnkgdGhlIHNjaGVkdWxlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gcnVuICgpIHtcbiAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5nZXQoKTtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSAhPT0gdGhpcy52YWx1ZSB8fFxuICAgICAgLy8gRGVlcCB3YXRjaGVycyBhbmQgd2F0Y2hlcnMgb24gT2JqZWN0L0FycmF5cyBzaG91bGQgZmlyZSBldmVuXG4gICAgICAvLyB3aGVuIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSwgYmVjYXVzZSB0aGUgdmFsdWUgbWF5XG4gICAgICAvLyBoYXZlIG11dGF0ZWQuXG4gICAgICBpc09iamVjdCh2YWx1ZSkgfHxcbiAgICAgIHRoaXMuZGVlcFxuICAgICkge1xuICAgICAgLy8gc2V0IG5ldyB2YWx1ZVxuICAgICAgdmFyIG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLnVzZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIHRoaXMudm0sIChcImNhbGxiYWNrIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIHRoZSB2YWx1ZSBvZiB0aGUgd2F0Y2hlci5cbiAqIFRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgbGF6eSB3YXRjaGVycy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZXZhbHVhdGUgPSBmdW5jdGlvbiBldmFsdWF0ZSAoKSB7XG4gIHRoaXMudmFsdWUgPSB0aGlzLmdldCgpO1xuICB0aGlzLmRpcnR5ID0gZmFsc2U7XG59O1xuXG4vKipcbiAqIERlcGVuZCBvbiBhbGwgZGVwcyBjb2xsZWN0ZWQgYnkgdGhpcyB3YXRjaGVyLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBkZXBlbmQgKCkge1xuICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB0aGlzLmRlcHNbaV0uZGVwZW5kKCk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlIHNlbGYgZnJvbSBhbGwgZGVwZW5kZW5jaWVzJyBzdWJzY3JpYmVyIGxpc3QuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnRlYXJkb3duID0gZnVuY3Rpb24gdGVhcmRvd24gKCkge1xuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAvLyByZW1vdmUgc2VsZiBmcm9tIHZtJ3Mgd2F0Y2hlciBsaXN0XG4gICAgLy8gdGhpcyBpcyBhIHNvbWV3aGF0IGV4cGVuc2l2ZSBvcGVyYXRpb24gc28gd2Ugc2tpcCBpdFxuICAgIC8vIGlmIHRoZSB2bSBpcyBiZWluZyBkZXN0cm95ZWQuXG4gICAgaWYgKCF0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICByZW1vdmUodGhpcy52bS5fd2F0Y2hlcnMsIHRoaXMpO1xuICAgIH1cbiAgICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5kZXBzW2ldLnJlbW92ZVN1Yih0aGlzKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxufTtcblxuLyogICovXG5cbnZhciBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBub29wLFxuICBzZXQ6IG5vb3Bcbn07XG5cbmZ1bmN0aW9uIHByb3h5ICh0YXJnZXQsIHNvdXJjZUtleSwga2V5KSB7XG4gIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBmdW5jdGlvbiBwcm94eUdldHRlciAoKSB7XG4gICAgcmV0dXJuIHRoaXNbc291cmNlS2V5XVtrZXldXG4gIH07XG4gIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBmdW5jdGlvbiBwcm94eVNldHRlciAodmFsKSB7XG4gICAgdGhpc1tzb3VyY2VLZXldW2tleV0gPSB2YWw7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gaW5pdFN0YXRlICh2bSkge1xuICB2bS5fd2F0Y2hlcnMgPSBbXTtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucztcbiAgaWYgKG9wdHMucHJvcHMpIHsgaW5pdFByb3BzKHZtLCBvcHRzLnByb3BzKTsgfVxuICBpZiAob3B0cy5tZXRob2RzKSB7IGluaXRNZXRob2RzKHZtLCBvcHRzLm1ldGhvZHMpOyB9XG4gIGlmIChvcHRzLmRhdGEpIHtcbiAgICBpbml0RGF0YSh2bSk7XG4gIH0gZWxzZSB7XG4gICAgb2JzZXJ2ZSh2bS5fZGF0YSA9IHt9LCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xuICB9XG4gIGlmIChvcHRzLmNvbXB1dGVkKSB7IGluaXRDb21wdXRlZCh2bSwgb3B0cy5jb21wdXRlZCk7IH1cbiAgaWYgKG9wdHMud2F0Y2ggJiYgb3B0cy53YXRjaCAhPT0gbmF0aXZlV2F0Y2gpIHtcbiAgICBpbml0V2F0Y2godm0sIG9wdHMud2F0Y2gpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyAodm0sIHByb3BzT3B0aW9ucykge1xuICB2YXIgcHJvcHNEYXRhID0gdm0uJG9wdGlvbnMucHJvcHNEYXRhIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bS5fcHJvcHMgPSB7fTtcbiAgLy8gY2FjaGUgcHJvcCBrZXlzIHNvIHRoYXQgZnV0dXJlIHByb3BzIHVwZGF0ZXMgY2FuIGl0ZXJhdGUgdXNpbmcgQXJyYXlcbiAgLy8gaW5zdGVhZCBvZiBkeW5hbWljIG9iamVjdCBrZXkgZW51bWVyYXRpb24uXG4gIHZhciBrZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzID0gW107XG4gIHZhciBpc1Jvb3QgPSAhdm0uJHBhcmVudDtcbiAgLy8gcm9vdCBpbnN0YW5jZSBwcm9wcyBzaG91bGQgYmUgY29udmVydGVkXG4gIGlmICghaXNSb290KSB7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKGZhbHNlKTtcbiAgfVxuICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgIGtleXMucHVzaChrZXkpO1xuICAgIHZhciB2YWx1ZSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BzT3B0aW9ucywgcHJvcHNEYXRhLCB2bSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGh5cGhlbmF0ZWRLZXkgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgIGlmIChpc1Jlc2VydmVkQXR0cmlidXRlKGh5cGhlbmF0ZWRLZXkpIHx8XG4gICAgICAgICAgY29uZmlnLmlzUmVzZXJ2ZWRBdHRyKGh5cGhlbmF0ZWRLZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiXFxcIlwiICsgaHlwaGVuYXRlZEtleSArIFwiXFxcIiBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBhbmQgY2Fubm90IGJlIHVzZWQgYXMgY29tcG9uZW50IHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWlzUm9vdCAmJiAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50KSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYSBwcm9wIGRpcmVjdGx5IHNpbmNlIHRoZSB2YWx1ZSB3aWxsIGJlIFwiICtcbiAgICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIgdGhlIHBhcmVudCBjb21wb25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAgICAgICAgICAgXCJJbnN0ZWFkLCB1c2UgYSBkYXRhIG9yIGNvbXB1dGVkIHByb3BlcnR5IGJhc2VkIG9uIHRoZSBwcm9wJ3MgXCIgK1xuICAgICAgICAgICAgXCJ2YWx1ZS4gUHJvcCBiZWluZyBtdXRhdGVkOiBcXFwiXCIgKyBrZXkgKyBcIlxcXCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHByb3BzLCBrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgLy8gc3RhdGljIHByb3BzIGFyZSBhbHJlYWR5IHByb3hpZWQgb24gdGhlIGNvbXBvbmVudCdzIHByb3RvdHlwZVxuICAgIC8vIGR1cmluZyBWdWUuZXh0ZW5kKCkuIFdlIG9ubHkgbmVlZCB0byBwcm94eSBwcm9wcyBkZWZpbmVkIGF0XG4gICAgLy8gaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIHByb3h5KHZtLCBcIl9wcm9wc1wiLCBrZXkpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBrZXkgaW4gcHJvcHNPcHRpb25zKSBsb29wKCBrZXkgKTtcbiAgdG9nZ2xlT2JzZXJ2aW5nKHRydWUpO1xufVxuXG5mdW5jdGlvbiBpbml0RGF0YSAodm0pIHtcbiAgdmFyIGRhdGEgPSB2bS4kb3B0aW9ucy5kYXRhO1xuICBkYXRhID0gdm0uX2RhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gZ2V0RGF0YShkYXRhLCB2bSlcbiAgICA6IGRhdGEgfHwge307XG4gIGlmICghaXNQbGFpbk9iamVjdChkYXRhKSkge1xuICAgIGRhdGEgPSB7fTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAnZGF0YSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBhbiBvYmplY3Q6XFxuJyArXG4gICAgICAnaHR0cHM6Ly92dWVqcy5vcmcvdjIvZ3VpZGUvY29tcG9uZW50cy5odG1sI2RhdGEtTXVzdC1CZS1hLUZ1bmN0aW9uJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyBwcm94eSBkYXRhIG9uIGluc3RhbmNlXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZGF0YSk7XG4gIHZhciBwcm9wcyA9IHZtLiRvcHRpb25zLnByb3BzO1xuICB2YXIgbWV0aG9kcyA9IHZtLiRvcHRpb25zLm1ldGhvZHM7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKG1ldGhvZHMgJiYgaGFzT3duKG1ldGhvZHMsIGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJNZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBhcyBhIGRhdGEgcHJvcGVydHkuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wcyAmJiBoYXNPd24ocHJvcHMsIGtleSkpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJUaGUgZGF0YSBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWNsYXJlZCBhcyBhIHByb3AuIFwiICtcbiAgICAgICAgXCJVc2UgcHJvcCBkZWZhdWx0IHZhbHVlIGluc3RlYWQuXCIsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoIWlzUmVzZXJ2ZWQoa2V5KSkge1xuICAgICAgcHJveHkodm0sIFwiX2RhdGFcIiwga2V5KTtcbiAgICB9XG4gIH1cbiAgLy8gb2JzZXJ2ZSBkYXRhXG4gIG9ic2VydmUoZGF0YSwgdHJ1ZSAvKiBhc1Jvb3REYXRhICovKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGF0YSAoZGF0YSwgdm0pIHtcbiAgLy8gIzc1NzMgZGlzYWJsZSBkZXAgY29sbGVjdGlvbiB3aGVuIGludm9raW5nIGRhdGEgZ2V0dGVyc1xuICBwdXNoVGFyZ2V0KCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRhdGEuY2FsbCh2bSwgdm0pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGVFcnJvcihlLCB2bSwgXCJkYXRhKClcIik7XG4gICAgcmV0dXJuIHt9XG4gIH0gZmluYWxseSB7XG4gICAgcG9wVGFyZ2V0KCk7XG4gIH1cbn1cblxudmFyIGNvbXB1dGVkV2F0Y2hlck9wdGlvbnMgPSB7IGxhenk6IHRydWUgfTtcblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkICh2bSwgY29tcHV0ZWQpIHtcbiAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gIHZhciB3YXRjaGVycyA9IHZtLl9jb21wdXRlZFdhdGNoZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gY29tcHV0ZWQgcHJvcGVydGllcyBhcmUganVzdCBnZXR0ZXJzIGR1cmluZyBTU1JcbiAgdmFyIGlzU1NSID0gaXNTZXJ2ZXJSZW5kZXJpbmcoKTtcblxuICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICB2YXIgdXNlckRlZiA9IGNvbXB1dGVkW2tleV07XG4gICAgdmFyIGdldHRlciA9IHR5cGVvZiB1c2VyRGVmID09PSAnZnVuY3Rpb24nID8gdXNlckRlZiA6IHVzZXJEZWYuZ2V0O1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGdldHRlciA9PSBudWxsKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAoXCJHZXR0ZXIgaXMgbWlzc2luZyBmb3IgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiLlwiKSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1NTUikge1xuICAgICAgLy8gY3JlYXRlIGludGVybmFsIHdhdGNoZXIgZm9yIHRoZSBjb21wdXRlZCBwcm9wZXJ0eS5cbiAgICAgIHdhdGNoZXJzW2tleV0gPSBuZXcgV2F0Y2hlcihcbiAgICAgICAgdm0sXG4gICAgICAgIGdldHRlciB8fCBub29wLFxuICAgICAgICBub29wLFxuICAgICAgICBjb21wdXRlZFdhdGNoZXJPcHRpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGNvbXBvbmVudC1kZWZpbmVkIGNvbXB1dGVkIHByb3BlcnRpZXMgYXJlIGFscmVhZHkgZGVmaW5lZCBvbiB0aGVcbiAgICAvLyBjb21wb25lbnQgcHJvdG90eXBlLiBXZSBvbmx5IG5lZWQgdG8gZGVmaW5lIGNvbXB1dGVkIHByb3BlcnRpZXMgZGVmaW5lZFxuICAgIC8vIGF0IGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAoIShrZXkgaW4gdm0pKSB7XG4gICAgICBkZWZpbmVDb21wdXRlZCh2bSwga2V5LCB1c2VyRGVmKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChrZXkgaW4gdm0uJGRhdGEpIHtcbiAgICAgICAgd2FybigoXCJUaGUgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBkYXRhLlwiKSwgdm0pO1xuICAgICAgfSBlbHNlIGlmICh2bS4kb3B0aW9ucy5wcm9wcyAmJiBrZXkgaW4gdm0uJG9wdGlvbnMucHJvcHMpIHtcbiAgICAgICAgd2FybigoXCJUaGUgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVmaW5lZCBhcyBhIHByb3AuXCIpLCB2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlZmluZUNvbXB1dGVkIChcbiAgdGFyZ2V0LFxuICBrZXksXG4gIHVzZXJEZWZcbikge1xuICB2YXIgc2hvdWxkQ2FjaGUgPSAhaXNTZXJ2ZXJSZW5kZXJpbmcoKTtcbiAgaWYgKHR5cGVvZiB1c2VyRGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IHNob3VsZENhY2hlXG4gICAgICA/IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSlcbiAgICAgIDogY3JlYXRlR2V0dGVySW52b2tlcih1c2VyRGVmKTtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gbm9vcDtcbiAgfSBlbHNlIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gdXNlckRlZi5nZXRcbiAgICAgID8gc2hvdWxkQ2FjaGUgJiYgdXNlckRlZi5jYWNoZSAhPT0gZmFsc2VcbiAgICAgICAgPyBjcmVhdGVDb21wdXRlZEdldHRlcihrZXkpXG4gICAgICAgIDogY3JlYXRlR2V0dGVySW52b2tlcih1c2VyRGVmLmdldClcbiAgICAgIDogbm9vcDtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gdXNlckRlZi5zZXQgfHwgbm9vcDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9PT0gbm9vcCkge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAoXCJDb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2FzIGFzc2lnbmVkIHRvIGJ1dCBpdCBoYXMgbm8gc2V0dGVyLlwiKSxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIgKGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24gY29tcHV0ZWRHZXR0ZXIgKCkge1xuICAgIHZhciB3YXRjaGVyID0gdGhpcy5fY29tcHV0ZWRXYXRjaGVycyAmJiB0aGlzLl9jb21wdXRlZFdhdGNoZXJzW2tleV07XG4gICAgaWYgKHdhdGNoZXIpIHtcbiAgICAgIGlmICh3YXRjaGVyLmRpcnR5KSB7XG4gICAgICAgIHdhdGNoZXIuZXZhbHVhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChEZXAudGFyZ2V0KSB7XG4gICAgICAgIHdhdGNoZXIuZGVwZW5kKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd2F0Y2hlci52YWx1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVHZXR0ZXJJbnZva2VyKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBjb21wdXRlZEdldHRlciAoKSB7XG4gICAgcmV0dXJuIGZuLmNhbGwodGhpcywgdGhpcylcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TWV0aG9kcyAodm0sIG1ldGhvZHMpIHtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIGZvciAodmFyIGtleSBpbiBtZXRob2RzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICh0eXBlb2YgbWV0aG9kc1trZXldICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJNZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyB0eXBlIFxcXCJcIiArICh0eXBlb2YgbWV0aG9kc1trZXldKSArIFwiXFxcIiBpbiB0aGUgY29tcG9uZW50IGRlZmluaXRpb24uIFwiICtcbiAgICAgICAgICBcIkRpZCB5b3UgcmVmZXJlbmNlIHRoZSBmdW5jdGlvbiBjb3JyZWN0bHk/XCIsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcyAmJiBoYXNPd24ocHJvcHMsIGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJNZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBhcyBhIHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoKGtleSBpbiB2bSkgJiYgaXNSZXNlcnZlZChrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJNZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGNvbmZsaWN0cyB3aXRoIGFuIGV4aXN0aW5nIFZ1ZSBpbnN0YW5jZSBtZXRob2QuIFwiICtcbiAgICAgICAgICBcIkF2b2lkIGRlZmluaW5nIGNvbXBvbmVudCBtZXRob2RzIHRoYXQgc3RhcnQgd2l0aCBfIG9yICQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdm1ba2V5XSA9IHR5cGVvZiBtZXRob2RzW2tleV0gIT09ICdmdW5jdGlvbicgPyBub29wIDogYmluZChtZXRob2RzW2tleV0sIHZtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0V2F0Y2ggKHZtLCB3YXRjaCkge1xuICBmb3IgKHZhciBrZXkgaW4gd2F0Y2gpIHtcbiAgICB2YXIgaGFuZGxlciA9IHdhdGNoW2tleV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXJbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXIpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVXYXRjaGVyIChcbiAgdm0sXG4gIGV4cE9yRm4sXG4gIGhhbmRsZXIsXG4gIG9wdGlvbnNcbikge1xuICBpZiAoaXNQbGFpbk9iamVjdChoYW5kbGVyKSkge1xuICAgIG9wdGlvbnMgPSBoYW5kbGVyO1xuICAgIGhhbmRsZXIgPSBoYW5kbGVyLmhhbmRsZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnc3RyaW5nJykge1xuICAgIGhhbmRsZXIgPSB2bVtoYW5kbGVyXTtcbiAgfVxuICByZXR1cm4gdm0uJHdhdGNoKGV4cE9yRm4sIGhhbmRsZXIsIG9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIHN0YXRlTWl4aW4gKFZ1ZSkge1xuICAvLyBmbG93IHNvbWVob3cgaGFzIHByb2JsZW1zIHdpdGggZGlyZWN0bHkgZGVjbGFyZWQgZGVmaW5pdGlvbiBvYmplY3RcbiAgLy8gd2hlbiB1c2luZyBPYmplY3QuZGVmaW5lUHJvcGVydHksIHNvIHdlIGhhdmUgdG8gcHJvY2VkdXJhbGx5IGJ1aWxkIHVwXG4gIC8vIHRoZSBvYmplY3QgaGVyZS5cbiAgdmFyIGRhdGFEZWYgPSB7fTtcbiAgZGF0YURlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9kYXRhIH07XG4gIHZhciBwcm9wc0RlZiA9IHt9O1xuICBwcm9wc0RlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9wcm9wcyB9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGRhdGFEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0F2b2lkIHJlcGxhY2luZyBpbnN0YW5jZSByb290ICRkYXRhLiAnICtcbiAgICAgICAgJ1VzZSBuZXN0ZWQgZGF0YSBwcm9wZXJ0aWVzIGluc3RlYWQuJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9O1xuICAgIHByb3BzRGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXCIkcHJvcHMgaXMgcmVhZG9ubHkuXCIsIHRoaXMpO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckZGF0YScsIGRhdGFEZWYpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRwcm9wcycsIHByb3BzRGVmKTtcblxuICBWdWUucHJvdG90eXBlLiRzZXQgPSBzZXQ7XG4gIFZ1ZS5wcm90b3R5cGUuJGRlbGV0ZSA9IGRlbDtcblxuICBWdWUucHJvdG90eXBlLiR3YXRjaCA9IGZ1bmN0aW9uIChcbiAgICBleHBPckZuLFxuICAgIGNiLFxuICAgIG9wdGlvbnNcbiAgKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAoaXNQbGFpbk9iamVjdChjYikpIHtcbiAgICAgIHJldHVybiBjcmVhdGVXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucylcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0aW9ucy51c2VyID0gdHJ1ZTtcbiAgICB2YXIgd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjYi5jYWxsKHZtLCB3YXRjaGVyLnZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCB2bSwgKFwiY2FsbGJhY2sgZm9yIGltbWVkaWF0ZSB3YXRjaGVyIFxcXCJcIiArICh3YXRjaGVyLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVud2F0Y2hGbiAoKSB7XG4gICAgICB3YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIHVpZCQzID0gMDtcblxuZnVuY3Rpb24gaW5pdE1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhIHVpZFxuICAgIHZtLl91aWQgPSB1aWQkMysrO1xuXG4gICAgdmFyIHN0YXJ0VGFnLCBlbmRUYWc7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgIHN0YXJ0VGFnID0gXCJ2dWUtcGVyZi1zdGFydDpcIiArICh2bS5fdWlkKTtcbiAgICAgIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsgKHZtLl91aWQpO1xuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgfVxuXG4gICAgLy8gYSBmbGFnIHRvIGF2b2lkIHRoaXMgYmVpbmcgb2JzZXJ2ZWRcbiAgICB2bS5faXNWdWUgPSB0cnVlO1xuICAgIC8vIG1lcmdlIG9wdGlvbnNcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLl9pc0NvbXBvbmVudCkge1xuICAgICAgLy8gb3B0aW1pemUgaW50ZXJuYWwgY29tcG9uZW50IGluc3RhbnRpYXRpb25cbiAgICAgIC8vIHNpbmNlIGR5bmFtaWMgb3B0aW9ucyBtZXJnaW5nIGlzIHByZXR0eSBzbG93LCBhbmQgbm9uZSBvZiB0aGVcbiAgICAgIC8vIGludGVybmFsIGNvbXBvbmVudCBvcHRpb25zIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50LlxuICAgICAgaW5pdEludGVybmFsQ29tcG9uZW50KHZtLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uJG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnModm0uY29uc3RydWN0b3IpLFxuICAgICAgICBvcHRpb25zIHx8IHt9LFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaW5pdFByb3h5KHZtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICAgIC8vIGV4cG9zZSByZWFsIHNlbGZcbiAgICB2bS5fc2VsZiA9IHZtO1xuICAgIGluaXRMaWZlY3ljbGUodm0pO1xuICAgIGluaXRFdmVudHModm0pO1xuICAgIGluaXRSZW5kZXIodm0pO1xuICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlQ3JlYXRlJyk7XG4gICAgaW5pdEluamVjdGlvbnModm0pOyAvLyByZXNvbHZlIGluamVjdGlvbnMgYmVmb3JlIGRhdGEvcHJvcHNcbiAgICBpbml0U3RhdGUodm0pO1xuICAgIGluaXRQcm92aWRlKHZtKTsgLy8gcmVzb2x2ZSBwcm92aWRlIGFmdGVyIGRhdGEvcHJvcHNcbiAgICBjYWxsSG9vayh2bSwgJ2NyZWF0ZWQnKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICB2bS5fbmFtZSA9IGZvcm1hdENvbXBvbmVudE5hbWUodm0sIGZhbHNlKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKFwidnVlIFwiICsgKHZtLl9uYW1lKSArIFwiIGluaXRcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgIH1cblxuICAgIGlmICh2bS4kb3B0aW9ucy5lbCkge1xuICAgICAgdm0uJG1vdW50KHZtLiRvcHRpb25zLmVsKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRJbnRlcm5hbENvbXBvbmVudCAodm0sIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucyA9IE9iamVjdC5jcmVhdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucyk7XG4gIC8vIGRvaW5nIHRoaXMgYmVjYXVzZSBpdCdzIGZhc3RlciB0aGFuIGR5bmFtaWMgZW51bWVyYXRpb24uXG4gIHZhciBwYXJlbnRWbm9kZSA9IG9wdGlvbnMuX3BhcmVudFZub2RlO1xuICBvcHRzLnBhcmVudCA9IG9wdGlvbnMucGFyZW50O1xuICBvcHRzLl9wYXJlbnRWbm9kZSA9IHBhcmVudFZub2RlO1xuXG4gIHZhciB2bm9kZUNvbXBvbmVudE9wdGlvbnMgPSBwYXJlbnRWbm9kZS5jb21wb25lbnRPcHRpb25zO1xuICBvcHRzLnByb3BzRGF0YSA9IHZub2RlQ29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGE7XG4gIG9wdHMuX3BhcmVudExpc3RlbmVycyA9IHZub2RlQ29tcG9uZW50T3B0aW9ucy5saXN0ZW5lcnM7XG4gIG9wdHMuX3JlbmRlckNoaWxkcmVuID0gdm5vZGVDb21wb25lbnRPcHRpb25zLmNoaWxkcmVuO1xuICBvcHRzLl9jb21wb25lbnRUYWcgPSB2bm9kZUNvbXBvbmVudE9wdGlvbnMudGFnO1xuXG4gIGlmIChvcHRpb25zLnJlbmRlcikge1xuICAgIG9wdHMucmVuZGVyID0gb3B0aW9ucy5yZW5kZXI7XG4gICAgb3B0cy5zdGF0aWNSZW5kZXJGbnMgPSBvcHRpb25zLnN0YXRpY1JlbmRlckZucztcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zIChDdG9yKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICBpZiAoQ3Rvci5zdXBlcikge1xuICAgIHZhciBzdXBlck9wdGlvbnMgPSByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3Iuc3VwZXIpO1xuICAgIHZhciBjYWNoZWRTdXBlck9wdGlvbnMgPSBDdG9yLnN1cGVyT3B0aW9ucztcbiAgICBpZiAoc3VwZXJPcHRpb25zICE9PSBjYWNoZWRTdXBlck9wdGlvbnMpIHtcbiAgICAgIC8vIHN1cGVyIG9wdGlvbiBjaGFuZ2VkLFxuICAgICAgLy8gbmVlZCB0byByZXNvbHZlIG5ldyBvcHRpb25zLlxuICAgICAgQ3Rvci5zdXBlck9wdGlvbnMgPSBzdXBlck9wdGlvbnM7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGxhdGUtbW9kaWZpZWQvYXR0YWNoZWQgb3B0aW9ucyAoIzQ5NzYpXG4gICAgICB2YXIgbW9kaWZpZWRPcHRpb25zID0gcmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyhDdG9yKTtcbiAgICAgIC8vIHVwZGF0ZSBiYXNlIGV4dGVuZCBvcHRpb25zXG4gICAgICBpZiAobW9kaWZpZWRPcHRpb25zKSB7XG4gICAgICAgIGV4dGVuZChDdG9yLmV4dGVuZE9wdGlvbnMsIG1vZGlmaWVkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBvcHRpb25zID0gQ3Rvci5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHN1cGVyT3B0aW9ucywgQ3Rvci5leHRlbmRPcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgb3B0aW9ucy5jb21wb25lbnRzW29wdGlvbnMubmFtZV0gPSBDdG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiByZXNvbHZlTW9kaWZpZWRPcHRpb25zIChDdG9yKSB7XG4gIHZhciBtb2RpZmllZDtcbiAgdmFyIGxhdGVzdCA9IEN0b3Iub3B0aW9ucztcbiAgdmFyIHNlYWxlZCA9IEN0b3Iuc2VhbGVkT3B0aW9ucztcbiAgZm9yICh2YXIga2V5IGluIGxhdGVzdCkge1xuICAgIGlmIChsYXRlc3Rba2V5XSAhPT0gc2VhbGVkW2tleV0pIHtcbiAgICAgIGlmICghbW9kaWZpZWQpIHsgbW9kaWZpZWQgPSB7fTsgfVxuICAgICAgbW9kaWZpZWRba2V5XSA9IGxhdGVzdFtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbW9kaWZpZWRcbn1cblxuZnVuY3Rpb24gVnVlIChvcHRpb25zKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgISh0aGlzIGluc3RhbmNlb2YgVnVlKVxuICApIHtcbiAgICB3YXJuKCdWdWUgaXMgYSBjb25zdHJ1Y3RvciBhbmQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkJyk7XG4gIH1cbiAgdGhpcy5faW5pdChvcHRpb25zKTtcbn1cblxuaW5pdE1peGluKFZ1ZSk7XG5zdGF0ZU1peGluKFZ1ZSk7XG5ldmVudHNNaXhpbihWdWUpO1xubGlmZWN5Y2xlTWl4aW4oVnVlKTtcbnJlbmRlck1peGluKFZ1ZSk7XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0VXNlIChWdWUpIHtcbiAgVnVlLnVzZSA9IGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICB2YXIgaW5zdGFsbGVkUGx1Z2lucyA9ICh0aGlzLl9pbnN0YWxsZWRQbHVnaW5zIHx8ICh0aGlzLl9pbnN0YWxsZWRQbHVnaW5zID0gW10pKTtcbiAgICBpZiAoaW5zdGFsbGVkUGx1Z2lucy5pbmRleE9mKHBsdWdpbikgPiAtMSkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvLyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRzLCAxKTtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7XG4gICAgaWYgKHR5cGVvZiBwbHVnaW4uaW5zdGFsbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmluc3RhbGwuYXBwbHkocGx1Z2luLCBhcmdzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBwbHVnaW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBsdWdpbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9XG4gICAgaW5zdGFsbGVkUGx1Z2lucy5wdXNoKHBsdWdpbik7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRNaXhpbiQxIChWdWUpIHtcbiAgVnVlLm1peGluID0gZnVuY3Rpb24gKG1peGluKSB7XG4gICAgdGhpcy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHRoaXMub3B0aW9ucywgbWl4aW4pO1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0RXh0ZW5kIChWdWUpIHtcbiAgLyoqXG4gICAqIEVhY2ggaW5zdGFuY2UgY29uc3RydWN0b3IsIGluY2x1ZGluZyBWdWUsIGhhcyBhIHVuaXF1ZVxuICAgKiBjaWQuIFRoaXMgZW5hYmxlcyB1cyB0byBjcmVhdGUgd3JhcHBlZCBcImNoaWxkXG4gICAqIGNvbnN0cnVjdG9yc1wiIGZvciBwcm90b3R5cGFsIGluaGVyaXRhbmNlIGFuZCBjYWNoZSB0aGVtLlxuICAgKi9cbiAgVnVlLmNpZCA9IDA7XG4gIHZhciBjaWQgPSAxO1xuXG4gIC8qKlxuICAgKiBDbGFzcyBpbmhlcml0YW5jZVxuICAgKi9cbiAgVnVlLmV4dGVuZCA9IGZ1bmN0aW9uIChleHRlbmRPcHRpb25zKSB7XG4gICAgZXh0ZW5kT3B0aW9ucyA9IGV4dGVuZE9wdGlvbnMgfHwge307XG4gICAgdmFyIFN1cGVyID0gdGhpcztcbiAgICB2YXIgU3VwZXJJZCA9IFN1cGVyLmNpZDtcbiAgICB2YXIgY2FjaGVkQ3RvcnMgPSBleHRlbmRPcHRpb25zLl9DdG9yIHx8IChleHRlbmRPcHRpb25zLl9DdG9yID0ge30pO1xuICAgIGlmIChjYWNoZWRDdG9yc1tTdXBlcklkXSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEN0b3JzW1N1cGVySWRdXG4gICAgfVxuXG4gICAgdmFyIG5hbWUgPSBleHRlbmRPcHRpb25zLm5hbWUgfHwgU3VwZXIub3B0aW9ucy5uYW1lO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5hbWUpIHtcbiAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lKTtcbiAgICB9XG5cbiAgICB2YXIgU3ViID0gZnVuY3Rpb24gVnVlQ29tcG9uZW50IChvcHRpb25zKSB7XG4gICAgICB0aGlzLl9pbml0KG9wdGlvbnMpO1xuICAgIH07XG4gICAgU3ViLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3VwZXIucHJvdG90eXBlKTtcbiAgICBTdWIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ViO1xuICAgIFN1Yi5jaWQgPSBjaWQrKztcbiAgICBTdWIub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhcbiAgICAgIFN1cGVyLm9wdGlvbnMsXG4gICAgICBleHRlbmRPcHRpb25zXG4gICAgKTtcbiAgICBTdWJbJ3N1cGVyJ10gPSBTdXBlcjtcblxuICAgIC8vIEZvciBwcm9wcyBhbmQgY29tcHV0ZWQgcHJvcGVydGllcywgd2UgZGVmaW5lIHRoZSBwcm94eSBnZXR0ZXJzIG9uXG4gICAgLy8gdGhlIFZ1ZSBpbnN0YW5jZXMgYXQgZXh0ZW5zaW9uIHRpbWUsIG9uIHRoZSBleHRlbmRlZCBwcm90b3R5cGUuIFRoaXNcbiAgICAvLyBhdm9pZHMgT2JqZWN0LmRlZmluZVByb3BlcnR5IGNhbGxzIGZvciBlYWNoIGluc3RhbmNlIGNyZWF0ZWQuXG4gICAgaWYgKFN1Yi5vcHRpb25zLnByb3BzKSB7XG4gICAgICBpbml0UHJvcHMkMShTdWIpO1xuICAgIH1cbiAgICBpZiAoU3ViLm9wdGlvbnMuY29tcHV0ZWQpIHtcbiAgICAgIGluaXRDb21wdXRlZCQxKFN1Yik7XG4gICAgfVxuXG4gICAgLy8gYWxsb3cgZnVydGhlciBleHRlbnNpb24vbWl4aW4vcGx1Z2luIHVzYWdlXG4gICAgU3ViLmV4dGVuZCA9IFN1cGVyLmV4dGVuZDtcbiAgICBTdWIubWl4aW4gPSBTdXBlci5taXhpbjtcbiAgICBTdWIudXNlID0gU3VwZXIudXNlO1xuXG4gICAgLy8gY3JlYXRlIGFzc2V0IHJlZ2lzdGVycywgc28gZXh0ZW5kZWQgY2xhc3Nlc1xuICAgIC8vIGNhbiBoYXZlIHRoZWlyIHByaXZhdGUgYXNzZXRzIHRvby5cbiAgICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICBTdWJbdHlwZV0gPSBTdXBlclt0eXBlXTtcbiAgICB9KTtcbiAgICAvLyBlbmFibGUgcmVjdXJzaXZlIHNlbGYtbG9va3VwXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIFN1Yi5vcHRpb25zLmNvbXBvbmVudHNbbmFtZV0gPSBTdWI7XG4gICAgfVxuXG4gICAgLy8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc3VwZXIgb3B0aW9ucyBhdCBleHRlbnNpb24gdGltZS5cbiAgICAvLyBsYXRlciBhdCBpbnN0YW50aWF0aW9uIHdlIGNhbiBjaGVjayBpZiBTdXBlcidzIG9wdGlvbnMgaGF2ZVxuICAgIC8vIGJlZW4gdXBkYXRlZC5cbiAgICBTdWIuc3VwZXJPcHRpb25zID0gU3VwZXIub3B0aW9ucztcbiAgICBTdWIuZXh0ZW5kT3B0aW9ucyA9IGV4dGVuZE9wdGlvbnM7XG4gICAgU3ViLnNlYWxlZE9wdGlvbnMgPSBleHRlbmQoe30sIFN1Yi5vcHRpb25zKTtcblxuICAgIC8vIGNhY2hlIGNvbnN0cnVjdG9yXG4gICAgY2FjaGVkQ3RvcnNbU3VwZXJJZF0gPSBTdWI7XG4gICAgcmV0dXJuIFN1YlxuICB9O1xufVxuXG5mdW5jdGlvbiBpbml0UHJvcHMkMSAoQ29tcCkge1xuICB2YXIgcHJvcHMgPSBDb21wLm9wdGlvbnMucHJvcHM7XG4gIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgIHByb3h5KENvbXAucHJvdG90eXBlLCBcIl9wcm9wc1wiLCBrZXkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRDb21wdXRlZCQxIChDb21wKSB7XG4gIHZhciBjb21wdXRlZCA9IENvbXAub3B0aW9ucy5jb21wdXRlZDtcbiAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4gICAgZGVmaW5lQ29tcHV0ZWQoQ29tcC5wcm90b3R5cGUsIGtleSwgY29tcHV0ZWRba2V5XSk7XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRBc3NldFJlZ2lzdGVycyAoVnVlKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYXNzZXQgcmVnaXN0cmF0aW9uIG1ldGhvZHMuXG4gICAqL1xuICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgVnVlW3R5cGVdID0gZnVuY3Rpb24gKFxuICAgICAgaWQsXG4gICAgICBkZWZpbml0aW9uXG4gICAgKSB7XG4gICAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1t0eXBlICsgJ3MnXVtpZF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlID09PSAnY29tcG9uZW50Jykge1xuICAgICAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShpZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09ICdjb21wb25lbnQnICYmIGlzUGxhaW5PYmplY3QoZGVmaW5pdGlvbikpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBkZWZpbml0aW9uLm5hbWUgfHwgaWQ7XG4gICAgICAgICAgZGVmaW5pdGlvbiA9IHRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQoZGVmaW5pdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09ICdkaXJlY3RpdmUnICYmIHR5cGVvZiBkZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbiA9IHsgYmluZDogZGVmaW5pdGlvbiwgdXBkYXRlOiBkZWZpbml0aW9uIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXSA9IGRlZmluaXRpb247XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uXG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG5cbi8qICAqL1xuXG5cblxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZSAob3B0cykge1xuICByZXR1cm4gb3B0cyAmJiAob3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRzLnRhZylcbn1cblxuZnVuY3Rpb24gbWF0Y2hlcyAocGF0dGVybiwgbmFtZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLmluZGV4T2YobmFtZSkgPiAtMVxuICB9IGVsc2UgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXR0ZXJuLnNwbGl0KCcsJykuaW5kZXhPZihuYW1lKSA+IC0xXG4gIH0gZWxzZSBpZiAoaXNSZWdFeHAocGF0dGVybikpIHtcbiAgICByZXR1cm4gcGF0dGVybi50ZXN0KG5hbWUpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIHBydW5lQ2FjaGUgKGtlZXBBbGl2ZUluc3RhbmNlLCBmaWx0ZXIpIHtcbiAgdmFyIGNhY2hlID0ga2VlcEFsaXZlSW5zdGFuY2UuY2FjaGU7XG4gIHZhciBrZXlzID0ga2VlcEFsaXZlSW5zdGFuY2Uua2V5cztcbiAgdmFyIF92bm9kZSA9IGtlZXBBbGl2ZUluc3RhbmNlLl92bm9kZTtcbiAgZm9yICh2YXIga2V5IGluIGNhY2hlKSB7XG4gICAgdmFyIGNhY2hlZE5vZGUgPSBjYWNoZVtrZXldO1xuICAgIGlmIChjYWNoZWROb2RlKSB7XG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY2FjaGVkTm9kZS5jb21wb25lbnRPcHRpb25zKTtcbiAgICAgIGlmIChuYW1lICYmICFmaWx0ZXIobmFtZSkpIHtcbiAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGNhY2hlLCBrZXksIGtleXMsIF92bm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lQ2FjaGVFbnRyeSAoXG4gIGNhY2hlLFxuICBrZXksXG4gIGtleXMsXG4gIGN1cnJlbnRcbikge1xuICB2YXIgY2FjaGVkJCQxID0gY2FjaGVba2V5XTtcbiAgaWYgKGNhY2hlZCQkMSAmJiAoIWN1cnJlbnQgfHwgY2FjaGVkJCQxLnRhZyAhPT0gY3VycmVudC50YWcpKSB7XG4gICAgY2FjaGVkJCQxLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gIH1cbiAgY2FjaGVba2V5XSA9IG51bGw7XG4gIHJlbW92ZShrZXlzLCBrZXkpO1xufVxuXG52YXIgcGF0dGVyblR5cGVzID0gW1N0cmluZywgUmVnRXhwLCBBcnJheV07XG5cbnZhciBLZWVwQWxpdmUgPSB7XG4gIG5hbWU6ICdrZWVwLWFsaXZlJyxcbiAgYWJzdHJhY3Q6IHRydWUsXG5cbiAgcHJvcHM6IHtcbiAgICBpbmNsdWRlOiBwYXR0ZXJuVHlwZXMsXG4gICAgZXhjbHVkZTogcGF0dGVyblR5cGVzLFxuICAgIG1heDogW1N0cmluZywgTnVtYmVyXVxuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQgKCkge1xuICAgIHRoaXMuY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMua2V5cyA9IFtdO1xuICB9LFxuXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkICgpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5jYWNoZSkge1xuICAgICAgcHJ1bmVDYWNoZUVudHJ5KHRoaXMuY2FjaGUsIGtleSwgdGhpcy5rZXlzKTtcbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB0aGlzLiR3YXRjaCgnaW5jbHVkZScsIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcyQxLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9KTtcbiAgICB0aGlzLiR3YXRjaCgnZXhjbHVkZScsIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcyQxLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gIW1hdGNoZXModmFsLCBuYW1lKTsgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKCkge1xuICAgIHZhciBzbG90ID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICB2YXIgdm5vZGUgPSBnZXRGaXJzdENvbXBvbmVudENoaWxkKHNsb3QpO1xuICAgIHZhciBjb21wb25lbnRPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgICBpZiAoY29tcG9uZW50T3B0aW9ucykge1xuICAgICAgLy8gY2hlY2sgcGF0dGVyblxuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNvbXBvbmVudE9wdGlvbnMpO1xuICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICB2YXIgaW5jbHVkZSA9IHJlZi5pbmNsdWRlO1xuICAgICAgdmFyIGV4Y2x1ZGUgPSByZWYuZXhjbHVkZTtcbiAgICAgIGlmIChcbiAgICAgICAgLy8gbm90IGluY2x1ZGVkXG4gICAgICAgIChpbmNsdWRlICYmICghbmFtZSB8fCAhbWF0Y2hlcyhpbmNsdWRlLCBuYW1lKSkpIHx8XG4gICAgICAgIC8vIGV4Y2x1ZGVkXG4gICAgICAgIChleGNsdWRlICYmIG5hbWUgJiYgbWF0Y2hlcyhleGNsdWRlLCBuYW1lKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdm5vZGVcbiAgICAgIH1cblxuICAgICAgdmFyIHJlZiQxID0gdGhpcztcbiAgICAgIHZhciBjYWNoZSA9IHJlZiQxLmNhY2hlO1xuICAgICAgdmFyIGtleXMgPSByZWYkMS5rZXlzO1xuICAgICAgdmFyIGtleSA9IHZub2RlLmtleSA9PSBudWxsXG4gICAgICAgIC8vIHNhbWUgY29uc3RydWN0b3IgbWF5IGdldCByZWdpc3RlcmVkIGFzIGRpZmZlcmVudCBsb2NhbCBjb21wb25lbnRzXG4gICAgICAgIC8vIHNvIGNpZCBhbG9uZSBpcyBub3QgZW5vdWdoICgjMzI2OSlcbiAgICAgICAgPyBjb21wb25lbnRPcHRpb25zLkN0b3IuY2lkICsgKGNvbXBvbmVudE9wdGlvbnMudGFnID8gKFwiOjpcIiArIChjb21wb25lbnRPcHRpb25zLnRhZykpIDogJycpXG4gICAgICAgIDogdm5vZGUua2V5O1xuICAgICAgaWYgKGNhY2hlW2tleV0pIHtcbiAgICAgICAgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBjYWNoZVtrZXldLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgICAvLyBtYWtlIGN1cnJlbnQga2V5IGZyZXNoZXN0XG4gICAgICAgIHJlbW92ZShrZXlzLCBrZXkpO1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhY2hlW2tleV0gPSB2bm9kZTtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIC8vIHBydW5lIG9sZGVzdCBlbnRyeVxuICAgICAgICBpZiAodGhpcy5tYXggJiYga2V5cy5sZW5ndGggPiBwYXJzZUludCh0aGlzLm1heCkpIHtcbiAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoY2FjaGUsIGtleXNbMF0sIGtleXMsIHRoaXMuX3Zub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2bm9kZS5kYXRhLmtlZXBBbGl2ZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB2bm9kZSB8fCAoc2xvdCAmJiBzbG90WzBdKVxuICB9XG59O1xuXG52YXIgYnVpbHRJbkNvbXBvbmVudHMgPSB7XG4gIEtlZXBBbGl2ZTogS2VlcEFsaXZlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEdsb2JhbEFQSSAoVnVlKSB7XG4gIC8vIGNvbmZpZ1xuICB2YXIgY29uZmlnRGVmID0ge307XG4gIGNvbmZpZ0RlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25maWc7IH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uZmlnRGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdEbyBub3QgcmVwbGFjZSB0aGUgVnVlLmNvbmZpZyBvYmplY3QsIHNldCBpbmRpdmlkdWFsIGZpZWxkcyBpbnN0ZWFkLidcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLCAnY29uZmlnJywgY29uZmlnRGVmKTtcblxuICAvLyBleHBvc2VkIHV0aWwgbWV0aG9kcy5cbiAgLy8gTk9URTogdGhlc2UgYXJlIG5vdCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgLSBhdm9pZCByZWx5aW5nIG9uXG4gIC8vIHRoZW0gdW5sZXNzIHlvdSBhcmUgYXdhcmUgb2YgdGhlIHJpc2suXG4gIFZ1ZS51dGlsID0ge1xuICAgIHdhcm46IHdhcm4sXG4gICAgZXh0ZW5kOiBleHRlbmQsXG4gICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsXG4gICAgZGVmaW5lUmVhY3RpdmU6IGRlZmluZVJlYWN0aXZlJCQxXG4gIH07XG5cbiAgVnVlLnNldCA9IHNldDtcbiAgVnVlLmRlbGV0ZSA9IGRlbDtcbiAgVnVlLm5leHRUaWNrID0gbmV4dFRpY2s7XG5cbiAgLy8gMi42IGV4cGxpY2l0IG9ic2VydmFibGUgQVBJXG4gIFZ1ZS5vYnNlcnZhYmxlID0gZnVuY3Rpb24gKG9iaikge1xuICAgIG9ic2VydmUob2JqKTtcbiAgICByZXR1cm4gb2JqXG4gIH07XG5cbiAgVnVlLm9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgVnVlLm9wdGlvbnNbdHlwZSArICdzJ10gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9KTtcblxuICAvLyB0aGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFwiYmFzZVwiIGNvbnN0cnVjdG9yIHRvIGV4dGVuZCBhbGwgcGxhaW4tb2JqZWN0XG4gIC8vIGNvbXBvbmVudHMgd2l0aCBpbiBXZWV4J3MgbXVsdGktaW5zdGFuY2Ugc2NlbmFyaW9zLlxuICBWdWUub3B0aW9ucy5fYmFzZSA9IFZ1ZTtcblxuICBleHRlbmQoVnVlLm9wdGlvbnMuY29tcG9uZW50cywgYnVpbHRJbkNvbXBvbmVudHMpO1xuXG4gIGluaXRVc2UoVnVlKTtcbiAgaW5pdE1peGluJDEoVnVlKTtcbiAgaW5pdEV4dGVuZChWdWUpO1xuICBpbml0QXNzZXRSZWdpc3RlcnMoVnVlKTtcbn1cblxuaW5pdEdsb2JhbEFQSShWdWUpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRpc1NlcnZlcicsIHtcbiAgZ2V0OiBpc1NlcnZlclJlbmRlcmluZ1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJHNzckNvbnRleHQnLCB7XG4gIGdldDogZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0XG4gIH1cbn0pO1xuXG4vLyBleHBvc2UgRnVuY3Rpb25hbFJlbmRlckNvbnRleHQgZm9yIHNzciBydW50aW1lIGhlbHBlciBpbnN0YWxsYXRpb25cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUsICdGdW5jdGlvbmFsUmVuZGVyQ29udGV4dCcsIHtcbiAgdmFsdWU6IEZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0XG59KTtcblxuVnVlLnZlcnNpb24gPSAnMi42LjEwJztcblxuLyogICovXG5cbi8vIHRoZXNlIGFyZSByZXNlcnZlZCBmb3Igd2ViIGJlY2F1c2UgdGhleSBhcmUgZGlyZWN0bHkgY29tcGlsZWQgYXdheVxuLy8gZHVyaW5nIHRlbXBsYXRlIGNvbXBpbGF0aW9uXG52YXIgaXNSZXNlcnZlZEF0dHIgPSBtYWtlTWFwKCdzdHlsZSxjbGFzcycpO1xuXG4vLyBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIHVzaW5nIHByb3BzIGZvciBiaW5kaW5nXG52YXIgYWNjZXB0VmFsdWUgPSBtYWtlTWFwKCdpbnB1dCx0ZXh0YXJlYSxvcHRpb24sc2VsZWN0LHByb2dyZXNzJyk7XG52YXIgbXVzdFVzZVByb3AgPSBmdW5jdGlvbiAodGFnLCB0eXBlLCBhdHRyKSB7XG4gIHJldHVybiAoXG4gICAgKGF0dHIgPT09ICd2YWx1ZScgJiYgYWNjZXB0VmFsdWUodGFnKSkgJiYgdHlwZSAhPT0gJ2J1dHRvbicgfHxcbiAgICAoYXR0ciA9PT0gJ3NlbGVjdGVkJyAmJiB0YWcgPT09ICdvcHRpb24nKSB8fFxuICAgIChhdHRyID09PSAnY2hlY2tlZCcgJiYgdGFnID09PSAnaW5wdXQnKSB8fFxuICAgIChhdHRyID09PSAnbXV0ZWQnICYmIHRhZyA9PT0gJ3ZpZGVvJylcbiAgKVxufTtcblxudmFyIGlzRW51bWVyYXRlZEF0dHIgPSBtYWtlTWFwKCdjb250ZW50ZWRpdGFibGUsZHJhZ2dhYmxlLHNwZWxsY2hlY2snKTtcblxudmFyIGlzVmFsaWRDb250ZW50RWRpdGFibGVWYWx1ZSA9IG1ha2VNYXAoJ2V2ZW50cyxjYXJldCx0eXBpbmcscGxhaW50ZXh0LW9ubHknKTtcblxudmFyIGNvbnZlcnRFbnVtZXJhdGVkVmFsdWUgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkgfHwgdmFsdWUgPT09ICdmYWxzZSdcbiAgICA/ICdmYWxzZSdcbiAgICAvLyBhbGxvdyBhcmJpdHJhcnkgc3RyaW5nIHZhbHVlIGZvciBjb250ZW50ZWRpdGFibGVcbiAgICA6IGtleSA9PT0gJ2NvbnRlbnRlZGl0YWJsZScgJiYgaXNWYWxpZENvbnRlbnRFZGl0YWJsZVZhbHVlKHZhbHVlKVxuICAgICAgPyB2YWx1ZVxuICAgICAgOiAndHJ1ZSdcbn07XG5cbnZhciBpc0Jvb2xlYW5BdHRyID0gbWFrZU1hcChcbiAgJ2FsbG93ZnVsbHNjcmVlbixhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY2hlY2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsJyArXG4gICdkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsJyArXG4gICdlbmFibGVkLGZvcm1ub3ZhbGlkYXRlLGhpZGRlbixpbmRldGVybWluYXRlLGluZXJ0LGlzbWFwLGl0ZW1zY29wZSxsb29wLG11bHRpcGxlLCcgK1xuICAnbXV0ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3BlbixwYXVzZW9uZXhpdCxyZWFkb25seSwnICtcbiAgJ3JlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsJyArXG4gICd0cnVlc3BlZWQsdHlwZW11c3RtYXRjaCx2aXNpYmxlJ1xuKTtcblxudmFyIHhsaW5rTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG5cbnZhciBpc1hsaW5rID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUuY2hhckF0KDUpID09PSAnOicgJiYgbmFtZS5zbGljZSgwLCA1KSA9PT0gJ3hsaW5rJ1xufTtcblxudmFyIGdldFhsaW5rUHJvcCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBpc1hsaW5rKG5hbWUpID8gbmFtZS5zbGljZSg2LCBuYW1lLmxlbmd0aCkgOiAnJ1xufTtcblxudmFyIGlzRmFsc3lBdHRyVmFsdWUgPSBmdW5jdGlvbiAodmFsKSB7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCB2YWwgPT09IGZhbHNlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gZ2VuQ2xhc3NGb3JWbm9kZSAodm5vZGUpIHtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgcGFyZW50Tm9kZSA9IHZub2RlO1xuICB2YXIgY2hpbGROb2RlID0gdm5vZGU7XG4gIHdoaWxlIChpc0RlZihjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICBpZiAoY2hpbGROb2RlICYmIGNoaWxkTm9kZS5kYXRhKSB7XG4gICAgICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoY2hpbGROb2RlLmRhdGEsIGRhdGEpO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoaXNEZWYocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChwYXJlbnROb2RlICYmIHBhcmVudE5vZGUuZGF0YSkge1xuICAgICAgZGF0YSA9IG1lcmdlQ2xhc3NEYXRhKGRhdGEsIHBhcmVudE5vZGUuZGF0YSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZW5kZXJDbGFzcyhkYXRhLnN0YXRpY0NsYXNzLCBkYXRhLmNsYXNzKVxufVxuXG5mdW5jdGlvbiBtZXJnZUNsYXNzRGF0YSAoY2hpbGQsIHBhcmVudCkge1xuICByZXR1cm4ge1xuICAgIHN0YXRpY0NsYXNzOiBjb25jYXQoY2hpbGQuc3RhdGljQ2xhc3MsIHBhcmVudC5zdGF0aWNDbGFzcyksXG4gICAgY2xhc3M6IGlzRGVmKGNoaWxkLmNsYXNzKVxuICAgICAgPyBbY2hpbGQuY2xhc3MsIHBhcmVudC5jbGFzc11cbiAgICAgIDogcGFyZW50LmNsYXNzXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyQ2xhc3MgKFxuICBzdGF0aWNDbGFzcyxcbiAgZHluYW1pY0NsYXNzXG4pIHtcbiAgaWYgKGlzRGVmKHN0YXRpY0NsYXNzKSB8fCBpc0RlZihkeW5hbWljQ2xhc3MpKSB7XG4gICAgcmV0dXJuIGNvbmNhdChzdGF0aWNDbGFzcywgc3RyaW5naWZ5Q2xhc3MoZHluYW1pY0NsYXNzKSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gJydcbn1cblxuZnVuY3Rpb24gY29uY2F0IChhLCBiKSB7XG4gIHJldHVybiBhID8gYiA/IChhICsgJyAnICsgYikgOiBhIDogKGIgfHwgJycpXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUNsYXNzICh2YWx1ZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3RyaW5naWZ5QXJyYXkodmFsdWUpXG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBzdHJpbmdpZnlPYmplY3QodmFsdWUpXG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gJydcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5QXJyYXkgKHZhbHVlKSB7XG4gIHZhciByZXMgPSAnJztcbiAgdmFyIHN0cmluZ2lmaWVkO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChpc0RlZihzdHJpbmdpZmllZCA9IHN0cmluZ2lmeUNsYXNzKHZhbHVlW2ldKSkgJiYgc3RyaW5naWZpZWQgIT09ICcnKSB7XG4gICAgICBpZiAocmVzKSB7IHJlcyArPSAnICc7IH1cbiAgICAgIHJlcyArPSBzdHJpbmdpZmllZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlPYmplY3QgKHZhbHVlKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlW2tleV0pIHtcbiAgICAgIGlmIChyZXMpIHsgcmVzICs9ICcgJzsgfVxuICAgICAgcmVzICs9IGtleTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIG5hbWVzcGFjZU1hcCA9IHtcbiAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICBtYXRoOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCdcbn07XG5cbnZhciBpc0hUTUxUYWcgPSBtYWtlTWFwKFxuICAnaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsJyArXG4gICdhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoMSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNlY3Rpb24sJyArXG4gICdkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUscGljdHVyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1bCwnICtcbiAgJ2EsYixhYmJyLGJkaSxiZG8sYnIsY2l0ZSxjb2RlLGRhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydGMscnVieSwnICtcbiAgJ3Msc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLCcgK1xuICAnZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsJyArXG4gICdjYXB0aW9uLGNvbCxjb2xncm91cCx0YWJsZSx0aGVhZCx0Ym9keSx0ZCx0aCx0ciwnICtcbiAgJ2J1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sJyArXG4gICdvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLCcgK1xuICAnZGV0YWlscyxkaWFsb2csbWVudSxtZW51aXRlbSxzdW1tYXJ5LCcgK1xuICAnY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdCdcbik7XG5cbi8vIHRoaXMgbWFwIGlzIGludGVudGlvbmFsbHkgc2VsZWN0aXZlLCBvbmx5IGNvdmVyaW5nIFNWRyBlbGVtZW50cyB0aGF0IG1heVxuLy8gY29udGFpbiBjaGlsZCBlbGVtZW50cy5cbnZhciBpc1NWRyA9IG1ha2VNYXAoXG4gICdzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LWZhY2UsJyArXG4gICdmb3JlaWduT2JqZWN0LGcsZ2x5cGgsaW1hZ2UsbGluZSxtYXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVybiwnICtcbiAgJ3BvbHlnb24scG9seWxpbmUscmVjdCxzd2l0Y2gsc3ltYm9sLHRleHQsdGV4dHBhdGgsdHNwYW4sdXNlLHZpZXcnLFxuICB0cnVlXG4pO1xuXG52YXIgaXNSZXNlcnZlZFRhZyA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgcmV0dXJuIGlzSFRNTFRhZyh0YWcpIHx8IGlzU1ZHKHRhZylcbn07XG5cbmZ1bmN0aW9uIGdldFRhZ05hbWVzcGFjZSAodGFnKSB7XG4gIGlmIChpc1NWRyh0YWcpKSB7XG4gICAgcmV0dXJuICdzdmcnXG4gIH1cbiAgLy8gYmFzaWMgc3VwcG9ydCBmb3IgTWF0aE1MXG4gIC8vIG5vdGUgaXQgZG9lc24ndCBzdXBwb3J0IG90aGVyIE1hdGhNTCBlbGVtZW50cyBiZWluZyBjb21wb25lbnQgcm9vdHNcbiAgaWYgKHRhZyA9PT0gJ21hdGgnKSB7XG4gICAgcmV0dXJuICdtYXRoJ1xuICB9XG59XG5cbnZhciB1bmtub3duRWxlbWVudENhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmZ1bmN0aW9uIGlzVW5rbm93bkVsZW1lbnQgKHRhZykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFpbkJyb3dzZXIpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIGlmIChpc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICB0YWcgPSB0YWcudG9Mb3dlckNhc2UoKTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh1bmtub3duRWxlbWVudENhY2hlW3RhZ10gIT0gbnVsbCkge1xuICAgIHJldHVybiB1bmtub3duRWxlbWVudENhY2hlW3RhZ11cbiAgfVxuICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gIGlmICh0YWcuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yODIxMDM2NC8xMDcwMjQ0XG4gICAgcmV0dXJuICh1bmtub3duRWxlbWVudENhY2hlW3RhZ10gPSAoXG4gICAgICBlbC5jb25zdHJ1Y3RvciA9PT0gd2luZG93LkhUTUxVbmtub3duRWxlbWVudCB8fFxuICAgICAgZWwuY29uc3RydWN0b3IgPT09IHdpbmRvdy5IVE1MRWxlbWVudFxuICAgICkpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICh1bmtub3duRWxlbWVudENhY2hlW3RhZ10gPSAvSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KGVsLnRvU3RyaW5nKCkpKVxuICB9XG59XG5cbnZhciBpc1RleHRJbnB1dFR5cGUgPSBtYWtlTWFwKCd0ZXh0LG51bWJlcixwYXNzd29yZCxzZWFyY2gsZW1haWwsdGVsLHVybCcpO1xuXG4vKiAgKi9cblxuLyoqXG4gKiBRdWVyeSBhbiBlbGVtZW50IHNlbGVjdG9yIGlmIGl0J3Mgbm90IGFuIGVsZW1lbnQgYWxyZWFkeS5cbiAqL1xuZnVuY3Rpb24gcXVlcnkgKGVsKSB7XG4gIGlmICh0eXBlb2YgZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHNlbGVjdGVkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbCk7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnQ2Fubm90IGZpbmQgZWxlbWVudDogJyArIGVsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFxuICB9IGVsc2Uge1xuICAgIHJldHVybiBlbFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50JDEgKHRhZ05hbWUsIHZub2RlKSB7XG4gIHZhciBlbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xuICBpZiAodGFnTmFtZSAhPT0gJ3NlbGVjdCcpIHtcbiAgICByZXR1cm4gZWxtXG4gIH1cbiAgLy8gZmFsc2Ugb3IgbnVsbCB3aWxsIHJlbW92ZSB0aGUgYXR0cmlidXRlIGJ1dCB1bmRlZmluZWQgd2lsbCBub3RcbiAgaWYgKHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS5hdHRycyAmJiB2bm9kZS5kYXRhLmF0dHJzLm11bHRpcGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbG0uc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xuICB9XG4gIHJldHVybiBlbG1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TIChuYW1lc3BhY2UsIHRhZ05hbWUpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSwgdGFnTmFtZSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUgKHRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQgKHRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodGV4dClcbn1cblxuZnVuY3Rpb24gaW5zZXJ0QmVmb3JlIChwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5yZW1vdmVDaGlsZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkIChub2RlLCBjaGlsZCkge1xuICBub2RlLmFwcGVuZENoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gcGFyZW50Tm9kZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS5wYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIG5leHRTaWJsaW5nIChub2RlKSB7XG4gIHJldHVybiBub2RlLm5leHRTaWJsaW5nXG59XG5cbmZ1bmN0aW9uIHRhZ05hbWUgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUudGFnTmFtZVxufVxuXG5mdW5jdGlvbiBzZXRUZXh0Q29udGVudCAobm9kZSwgdGV4dCkge1xuICBub2RlLnRleHRDb250ZW50ID0gdGV4dDtcbn1cblxuZnVuY3Rpb24gc2V0U3R5bGVTY29wZSAobm9kZSwgc2NvcGVJZCkge1xuICBub2RlLnNldEF0dHJpYnV0ZShzY29wZUlkLCAnJyk7XG59XG5cbnZhciBub2RlT3BzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50JDEsXG4gIGNyZWF0ZUVsZW1lbnROUzogY3JlYXRlRWxlbWVudE5TLFxuICBjcmVhdGVUZXh0Tm9kZTogY3JlYXRlVGV4dE5vZGUsXG4gIGNyZWF0ZUNvbW1lbnQ6IGNyZWF0ZUNvbW1lbnQsXG4gIGluc2VydEJlZm9yZTogaW5zZXJ0QmVmb3JlLFxuICByZW1vdmVDaGlsZDogcmVtb3ZlQ2hpbGQsXG4gIGFwcGVuZENoaWxkOiBhcHBlbmRDaGlsZCxcbiAgcGFyZW50Tm9kZTogcGFyZW50Tm9kZSxcbiAgbmV4dFNpYmxpbmc6IG5leHRTaWJsaW5nLFxuICB0YWdOYW1lOiB0YWdOYW1lLFxuICBzZXRUZXh0Q29udGVudDogc2V0VGV4dENvbnRlbnQsXG4gIHNldFN0eWxlU2NvcGU6IHNldFN0eWxlU2NvcGVcbn0pO1xuXG4vKiAgKi9cblxudmFyIHJlZiA9IHtcbiAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUgKF8sIHZub2RlKSB7XG4gICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgaWYgKG9sZFZub2RlLmRhdGEucmVmICE9PSB2bm9kZS5kYXRhLnJlZikge1xuICAgICAgcmVnaXN0ZXJSZWYob2xkVm5vZGUsIHRydWUpO1xuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgIH1cbiAgfSxcbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSwgdHJ1ZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyUmVmICh2bm9kZSwgaXNSZW1vdmFsKSB7XG4gIHZhciBrZXkgPSB2bm9kZS5kYXRhLnJlZjtcbiAgaWYgKCFpc0RlZihrZXkpKSB7IHJldHVybiB9XG5cbiAgdmFyIHZtID0gdm5vZGUuY29udGV4dDtcbiAgdmFyIHJlZiA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlIHx8IHZub2RlLmVsbTtcbiAgdmFyIHJlZnMgPSB2bS4kcmVmcztcbiAgaWYgKGlzUmVtb3ZhbCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlZnNba2V5XSkpIHtcbiAgICAgIHJlbW92ZShyZWZzW2tleV0sIHJlZik7XG4gICAgfSBlbHNlIGlmIChyZWZzW2tleV0gPT09IHJlZikge1xuICAgICAgcmVmc1trZXldID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodm5vZGUuZGF0YS5yZWZJbkZvcikge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlZnNba2V5XSkpIHtcbiAgICAgICAgcmVmc1trZXldID0gW3JlZl07XG4gICAgICB9IGVsc2UgaWYgKHJlZnNba2V5XS5pbmRleE9mKHJlZikgPCAwKSB7XG4gICAgICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgICAgICByZWZzW2tleV0ucHVzaChyZWYpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWZzW2tleV0gPSByZWY7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVmlydHVhbCBET00gcGF0Y2hpbmcgYWxnb3JpdGhtIGJhc2VkIG9uIFNuYWJiZG9tIGJ5XG4gKiBTaW1vbiBGcmlpcyBWaW5kdW0gKEBwYWxkZXBpbmQpXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxkZXBpbmQvc25hYmJkb20vYmxvYi9tYXN0ZXIvTElDRU5TRVxuICpcbiAqIG1vZGlmaWVkIGJ5IEV2YW4gWW91IChAeXl4OTkwODAzKVxuICpcbiAqIE5vdCB0eXBlLWNoZWNraW5nIHRoaXMgYmVjYXVzZSB0aGlzIGZpbGUgaXMgcGVyZi1jcml0aWNhbCBhbmQgdGhlIGNvc3RcbiAqIG9mIG1ha2luZyBmbG93IHVuZGVyc3RhbmQgaXQgaXMgbm90IHdvcnRoIGl0LlxuICovXG5cbnZhciBlbXB0eU5vZGUgPSBuZXcgVk5vZGUoJycsIHt9LCBbXSk7XG5cbnZhciBob29rcyA9IFsnY3JlYXRlJywgJ2FjdGl2YXRlJywgJ3VwZGF0ZScsICdyZW1vdmUnLCAnZGVzdHJveSddO1xuXG5mdW5jdGlvbiBzYW1lVm5vZGUgKGEsIGIpIHtcbiAgcmV0dXJuIChcbiAgICBhLmtleSA9PT0gYi5rZXkgJiYgKFxuICAgICAgKFxuICAgICAgICBhLnRhZyA9PT0gYi50YWcgJiZcbiAgICAgICAgYS5pc0NvbW1lbnQgPT09IGIuaXNDb21tZW50ICYmXG4gICAgICAgIGlzRGVmKGEuZGF0YSkgPT09IGlzRGVmKGIuZGF0YSkgJiZcbiAgICAgICAgc2FtZUlucHV0VHlwZShhLCBiKVxuICAgICAgKSB8fCAoXG4gICAgICAgIGlzVHJ1ZShhLmlzQXN5bmNQbGFjZWhvbGRlcikgJiZcbiAgICAgICAgYS5hc3luY0ZhY3RvcnkgPT09IGIuYXN5bmNGYWN0b3J5ICYmXG4gICAgICAgIGlzVW5kZWYoYi5hc3luY0ZhY3RvcnkuZXJyb3IpXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmZ1bmN0aW9uIHNhbWVJbnB1dFR5cGUgKGEsIGIpIHtcbiAgaWYgKGEudGFnICE9PSAnaW5wdXQnKSB7IHJldHVybiB0cnVlIH1cbiAgdmFyIGk7XG4gIHZhciB0eXBlQSA9IGlzRGVmKGkgPSBhLmRhdGEpICYmIGlzRGVmKGkgPSBpLmF0dHJzKSAmJiBpLnR5cGU7XG4gIHZhciB0eXBlQiA9IGlzRGVmKGkgPSBiLmRhdGEpICYmIGlzRGVmKGkgPSBpLmF0dHJzKSAmJiBpLnR5cGU7XG4gIHJldHVybiB0eXBlQSA9PT0gdHlwZUIgfHwgaXNUZXh0SW5wdXRUeXBlKHR5cGVBKSAmJiBpc1RleHRJbnB1dFR5cGUodHlwZUIpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleVRvT2xkSWR4IChjaGlsZHJlbiwgYmVnaW5JZHgsIGVuZElkeCkge1xuICB2YXIgaSwga2V5O1xuICB2YXIgbWFwID0ge307XG4gIGZvciAoaSA9IGJlZ2luSWR4OyBpIDw9IGVuZElkeDsgKytpKSB7XG4gICAga2V5ID0gY2hpbGRyZW5baV0ua2V5O1xuICAgIGlmIChpc0RlZihrZXkpKSB7IG1hcFtrZXldID0gaTsgfVxuICB9XG4gIHJldHVybiBtYXBcbn1cblxuZnVuY3Rpb24gY3JlYXRlUGF0Y2hGdW5jdGlvbiAoYmFja2VuZCkge1xuICB2YXIgaSwgajtcbiAgdmFyIGNicyA9IHt9O1xuXG4gIHZhciBtb2R1bGVzID0gYmFja2VuZC5tb2R1bGVzO1xuICB2YXIgbm9kZU9wcyA9IGJhY2tlbmQubm9kZU9wcztcblxuICBmb3IgKGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyArK2kpIHtcbiAgICBjYnNbaG9va3NbaV1dID0gW107XG4gICAgZm9yIChqID0gMDsgaiA8IG1vZHVsZXMubGVuZ3RoOyArK2opIHtcbiAgICAgIGlmIChpc0RlZihtb2R1bGVzW2pdW2hvb2tzW2ldXSkpIHtcbiAgICAgICAgY2JzW2hvb2tzW2ldXS5wdXNoKG1vZHVsZXNbal1baG9va3NbaV1dKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbXB0eU5vZGVBdCAoZWxtKSB7XG4gICAgcmV0dXJuIG5ldyBWTm9kZShub2RlT3BzLnRhZ05hbWUoZWxtKS50b0xvd2VyQ2FzZSgpLCB7fSwgW10sIHVuZGVmaW5lZCwgZWxtKVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUm1DYiAoY2hpbGRFbG0sIGxpc3RlbmVycykge1xuICAgIGZ1bmN0aW9uIHJlbW92ZSQkMSAoKSB7XG4gICAgICBpZiAoLS1yZW1vdmUkJDEubGlzdGVuZXJzID09PSAwKSB7XG4gICAgICAgIHJlbW92ZU5vZGUoY2hpbGRFbG0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZW1vdmUkJDEubGlzdGVuZXJzID0gbGlzdGVuZXJzO1xuICAgIHJldHVybiByZW1vdmUkJDFcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZU5vZGUgKGVsKSB7XG4gICAgdmFyIHBhcmVudCA9IG5vZGVPcHMucGFyZW50Tm9kZShlbCk7XG4gICAgLy8gZWxlbWVudCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBkdWUgdG8gdi1odG1sIC8gdi10ZXh0XG4gICAgaWYgKGlzRGVmKHBhcmVudCkpIHtcbiAgICAgIG5vZGVPcHMucmVtb3ZlQ2hpbGQocGFyZW50LCBlbCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNVbmtub3duRWxlbWVudCQkMSAodm5vZGUsIGluVlByZSkge1xuICAgIHJldHVybiAoXG4gICAgICAhaW5WUHJlICYmXG4gICAgICAhdm5vZGUubnMgJiZcbiAgICAgICEoXG4gICAgICAgIGNvbmZpZy5pZ25vcmVkRWxlbWVudHMubGVuZ3RoICYmXG4gICAgICAgIGNvbmZpZy5pZ25vcmVkRWxlbWVudHMuc29tZShmdW5jdGlvbiAoaWdub3JlKSB7XG4gICAgICAgICAgcmV0dXJuIGlzUmVnRXhwKGlnbm9yZSlcbiAgICAgICAgICAgID8gaWdub3JlLnRlc3Qodm5vZGUudGFnKVxuICAgICAgICAgICAgOiBpZ25vcmUgPT09IHZub2RlLnRhZ1xuICAgICAgICB9KVxuICAgICAgKSAmJlxuICAgICAgY29uZmlnLmlzVW5rbm93bkVsZW1lbnQodm5vZGUudGFnKVxuICAgIClcbiAgfVxuXG4gIHZhciBjcmVhdGluZ0VsbUluVlByZSA9IDA7XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxtIChcbiAgICB2bm9kZSxcbiAgICBpbnNlcnRlZFZub2RlUXVldWUsXG4gICAgcGFyZW50RWxtLFxuICAgIHJlZkVsbSxcbiAgICBuZXN0ZWQsXG4gICAgb3duZXJBcnJheSxcbiAgICBpbmRleFxuICApIHtcbiAgICBpZiAoaXNEZWYodm5vZGUuZWxtKSAmJiBpc0RlZihvd25lckFycmF5KSkge1xuICAgICAgLy8gVGhpcyB2bm9kZSB3YXMgdXNlZCBpbiBhIHByZXZpb3VzIHJlbmRlciFcbiAgICAgIC8vIG5vdyBpdCdzIHVzZWQgYXMgYSBuZXcgbm9kZSwgb3ZlcndyaXRpbmcgaXRzIGVsbSB3b3VsZCBjYXVzZVxuICAgICAgLy8gcG90ZW50aWFsIHBhdGNoIGVycm9ycyBkb3duIHRoZSByb2FkIHdoZW4gaXQncyB1c2VkIGFzIGFuIGluc2VydGlvblxuICAgICAgLy8gcmVmZXJlbmNlIG5vZGUuIEluc3RlYWQsIHdlIGNsb25lIHRoZSBub2RlIG9uLWRlbWFuZCBiZWZvcmUgY3JlYXRpbmdcbiAgICAgIC8vIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnQgZm9yIGl0LlxuICAgICAgdm5vZGUgPSBvd25lckFycmF5W2luZGV4XSA9IGNsb25lVk5vZGUodm5vZGUpO1xuICAgIH1cblxuICAgIHZub2RlLmlzUm9vdEluc2VydCA9ICFuZXN0ZWQ7IC8vIGZvciB0cmFuc2l0aW9uIGVudGVyIGNoZWNrXG4gICAgaWYgKGNyZWF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgdGFnID0gdm5vZGUudGFnO1xuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnByZSkge1xuICAgICAgICAgIGNyZWF0aW5nRWxtSW5WUHJlKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVW5rbm93bkVsZW1lbnQkJDEodm5vZGUsIGNyZWF0aW5nRWxtSW5WUHJlKSkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAnVW5rbm93biBjdXN0b20gZWxlbWVudDogPCcgKyB0YWcgKyAnPiAtIGRpZCB5b3UgJyArXG4gICAgICAgICAgICAncmVnaXN0ZXIgdGhlIGNvbXBvbmVudCBjb3JyZWN0bHk/IEZvciByZWN1cnNpdmUgY29tcG9uZW50cywgJyArXG4gICAgICAgICAgICAnbWFrZSBzdXJlIHRvIHByb3ZpZGUgdGhlIFwibmFtZVwiIG9wdGlvbi4nLFxuICAgICAgICAgICAgdm5vZGUuY29udGV4dFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdm5vZGUuZWxtID0gdm5vZGUubnNcbiAgICAgICAgPyBub2RlT3BzLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5ucywgdGFnKVxuICAgICAgICA6IG5vZGVPcHMuY3JlYXRlRWxlbWVudCh0YWcsIHZub2RlKTtcbiAgICAgIHNldFNjb3BlKHZub2RlKTtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICB7XG4gICAgICAgIGNyZWF0ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBkYXRhICYmIGRhdGEucHJlKSB7XG4gICAgICAgIGNyZWF0aW5nRWxtSW5WUHJlLS07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RydWUodm5vZGUuaXNDb21tZW50KSkge1xuICAgICAgdm5vZGUuZWxtID0gbm9kZU9wcy5jcmVhdGVDb21tZW50KHZub2RlLnRleHQpO1xuICAgICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpO1xuICAgICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICB2YXIgaSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGkpKSB7XG4gICAgICB2YXIgaXNSZWFjdGl2YXRlZCA9IGlzRGVmKHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSAmJiBpLmtlZXBBbGl2ZTtcbiAgICAgIGlmIChpc0RlZihpID0gaS5ob29rKSAmJiBpc0RlZihpID0gaS5pbml0KSkge1xuICAgICAgICBpKHZub2RlLCBmYWxzZSAvKiBoeWRyYXRpbmcgKi8pO1xuICAgICAgfVxuICAgICAgLy8gYWZ0ZXIgY2FsbGluZyB0aGUgaW5pdCBob29rLCBpZiB0aGUgdm5vZGUgaXMgYSBjaGlsZCBjb21wb25lbnRcbiAgICAgIC8vIGl0IHNob3VsZCd2ZSBjcmVhdGVkIGEgY2hpbGQgaW5zdGFuY2UgYW5kIG1vdW50ZWQgaXQuIHRoZSBjaGlsZFxuICAgICAgLy8gY29tcG9uZW50IGFsc28gaGFzIHNldCB0aGUgcGxhY2Vob2xkZXIgdm5vZGUncyBlbG0uXG4gICAgICAvLyBpbiB0aGF0IGNhc2Ugd2UgY2FuIGp1c3QgcmV0dXJuIHRoZSBlbGVtZW50IGFuZCBiZSBkb25lLlxuICAgICAgaWYgKGlzRGVmKHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgICAgICBpbml0Q29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgICAgIGlmIChpc1RydWUoaXNSZWFjdGl2YXRlZCkpIHtcbiAgICAgICAgICByZWFjdGl2YXRlQ29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSkge1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2guYXBwbHkoaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpO1xuICAgICAgdm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0ID0gbnVsbDtcbiAgICB9XG4gICAgdm5vZGUuZWxtID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGVsO1xuICAgIGlmIChpc1BhdGNoYWJsZSh2bm9kZSkpIHtcbiAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgc2V0U2NvcGUodm5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlbXB0eSBjb21wb25lbnQgcm9vdC5cbiAgICAgIC8vIHNraXAgYWxsIGVsZW1lbnQtcmVsYXRlZCBtb2R1bGVzIGV4Y2VwdCBmb3IgcmVmICgjMzQ1NSlcbiAgICAgIHJlZ2lzdGVyUmVmKHZub2RlKTtcbiAgICAgIC8vIG1ha2Ugc3VyZSB0byBpbnZva2UgdGhlIGluc2VydCBob29rXG4gICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhY3RpdmF0ZUNvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICB2YXIgaTtcbiAgICAvLyBoYWNrIGZvciAjNDMzOTogYSByZWFjdGl2YXRlZCBjb21wb25lbnQgd2l0aCBpbm5lciB0cmFuc2l0aW9uXG4gICAgLy8gZG9lcyBub3QgdHJpZ2dlciBiZWNhdXNlIHRoZSBpbm5lciBub2RlJ3MgY3JlYXRlZCBob29rcyBhcmUgbm90IGNhbGxlZFxuICAgIC8vIGFnYWluLiBJdCdzIG5vdCBpZGVhbCB0byBpbnZvbHZlIG1vZHVsZS1zcGVjaWZpYyBsb2dpYyBpbiBoZXJlIGJ1dFxuICAgIC8vIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGJldHRlciB3YXkgdG8gZG8gaXQuXG4gICAgdmFyIGlubmVyTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChpbm5lck5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGlubmVyTm9kZSA9IGlubmVyTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoaXNEZWYoaSA9IGlubmVyTm9kZS5kYXRhKSAmJiBpc0RlZihpID0gaS50cmFuc2l0aW9uKSkge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLmFjdGl2YXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY2JzLmFjdGl2YXRlW2ldKGVtcHR5Tm9kZSwgaW5uZXJOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaChpbm5lck5vZGUpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB1bmxpa2UgYSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudCxcbiAgICAvLyBhIHJlYWN0aXZhdGVkIGtlZXAtYWxpdmUgY29tcG9uZW50IGRvZXNuJ3QgaW5zZXJ0IGl0c2VsZlxuICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluc2VydCAocGFyZW50LCBlbG0sIHJlZiQkMSkge1xuICAgIGlmIChpc0RlZihwYXJlbnQpKSB7XG4gICAgICBpZiAoaXNEZWYocmVmJCQxKSkge1xuICAgICAgICBpZiAobm9kZU9wcy5wYXJlbnROb2RlKHJlZiQkMSkgPT09IHBhcmVudCkge1xuICAgICAgICAgIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgZWxtLCByZWYkJDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlT3BzLmFwcGVuZENoaWxkKHBhcmVudCwgZWxtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVDaGlsZHJlbiAodm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGNoZWNrRHVwbGljYXRlS2V5cyhjaGlsZHJlbik7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNyZWF0ZUVsbShjaGlsZHJlbltpXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5lbG0sIG51bGwsIHRydWUsIGNoaWxkcmVuLCBpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzUHJpbWl0aXZlKHZub2RlLnRleHQpKSB7XG4gICAgICBub2RlT3BzLmFwcGVuZENoaWxkKHZub2RlLmVsbSwgbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZShTdHJpbmcodm5vZGUudGV4dCkpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1BhdGNoYWJsZSAodm5vZGUpIHtcbiAgICB3aGlsZSAodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIHZub2RlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgIH1cbiAgICByZXR1cm4gaXNEZWYodm5vZGUudGFnKVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlQ3JlYXRlSG9va3MgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpJDEpIHtcbiAgICAgIGNicy5jcmVhdGVbaSQxXShlbXB0eU5vZGUsIHZub2RlKTtcbiAgICB9XG4gICAgaSA9IHZub2RlLmRhdGEuaG9vazsgLy8gUmV1c2UgdmFyaWFibGVcbiAgICBpZiAoaXNEZWYoaSkpIHtcbiAgICAgIGlmIChpc0RlZihpLmNyZWF0ZSkpIHsgaS5jcmVhdGUoZW1wdHlOb2RlLCB2bm9kZSk7IH1cbiAgICAgIGlmIChpc0RlZihpLmluc2VydCkpIHsgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2godm5vZGUpOyB9XG4gICAgfVxuICB9XG5cbiAgLy8gc2V0IHNjb3BlIGlkIGF0dHJpYnV0ZSBmb3Igc2NvcGVkIENTUy5cbiAgLy8gdGhpcyBpcyBpbXBsZW1lbnRlZCBhcyBhIHNwZWNpYWwgY2FzZSB0byBhdm9pZCB0aGUgb3ZlcmhlYWRcbiAgLy8gb2YgZ29pbmcgdGhyb3VnaCB0aGUgbm9ybWFsIGF0dHJpYnV0ZSBwYXRjaGluZyBwcm9jZXNzLlxuICBmdW5jdGlvbiBzZXRTY29wZSAodm5vZGUpIHtcbiAgICB2YXIgaTtcbiAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmZuU2NvcGVJZCkpIHtcbiAgICAgIG5vZGVPcHMuc2V0U3R5bGVTY29wZSh2bm9kZS5lbG0sIGkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZTtcbiAgICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgICBpZiAoaXNEZWYoaSA9IGFuY2VzdG9yLmNvbnRleHQpICYmIGlzRGVmKGkgPSBpLiRvcHRpb25zLl9zY29wZUlkKSkge1xuICAgICAgICAgIG5vZGVPcHMuc2V0U3R5bGVTY29wZSh2bm9kZS5lbG0sIGkpO1xuICAgICAgICB9XG4gICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBmb3Igc2xvdCBjb250ZW50IHRoZXkgc2hvdWxkIGFsc28gZ2V0IHRoZSBzY29wZUlkIGZyb20gdGhlIGhvc3QgaW5zdGFuY2UuXG4gICAgaWYgKGlzRGVmKGkgPSBhY3RpdmVJbnN0YW5jZSkgJiZcbiAgICAgIGkgIT09IHZub2RlLmNvbnRleHQgJiZcbiAgICAgIGkgIT09IHZub2RlLmZuQ29udGV4dCAmJlxuICAgICAgaXNEZWYoaSA9IGkuJG9wdGlvbnMuX3Njb3BlSWQpXG4gICAgKSB7XG4gICAgICBub2RlT3BzLnNldFN0eWxlU2NvcGUodm5vZGUuZWxtLCBpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBhZGRWbm9kZXMgKHBhcmVudEVsbSwgcmVmRWxtLCB2bm9kZXMsIHN0YXJ0SWR4LCBlbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZXNbc3RhcnRJZHhdLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtLCBmYWxzZSwgdm5vZGVzLCBzdGFydElkeCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRGVzdHJveUhvb2sgKHZub2RlKSB7XG4gICAgdmFyIGksIGo7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLmRlc3Ryb3kpKSB7IGkodm5vZGUpOyB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLmRlc3Ryb3kubGVuZ3RoOyArK2kpIHsgY2JzLmRlc3Ryb3lbaV0odm5vZGUpOyB9XG4gICAgfVxuICAgIGlmIChpc0RlZihpID0gdm5vZGUuY2hpbGRyZW4pKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyArK2opIHtcbiAgICAgICAgaW52b2tlRGVzdHJveUhvb2sodm5vZGUuY2hpbGRyZW5bal0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZVZub2RlcyAocGFyZW50RWxtLCB2bm9kZXMsIHN0YXJ0SWR4LCBlbmRJZHgpIHtcbiAgICBmb3IgKDsgc3RhcnRJZHggPD0gZW5kSWR4OyArK3N0YXJ0SWR4KSB7XG4gICAgICB2YXIgY2ggPSB2bm9kZXNbc3RhcnRJZHhdO1xuICAgICAgaWYgKGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAoaXNEZWYoY2gudGFnKSkge1xuICAgICAgICAgIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2soY2gpO1xuICAgICAgICAgIGludm9rZURlc3Ryb3lIb29rKGNoKTtcbiAgICAgICAgfSBlbHNlIHsgLy8gVGV4dCBub2RlXG4gICAgICAgICAgcmVtb3ZlTm9kZShjaC5lbG0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayAodm5vZGUsIHJtKSB7XG4gICAgaWYgKGlzRGVmKHJtKSB8fCBpc0RlZih2bm9kZS5kYXRhKSkge1xuICAgICAgdmFyIGk7XG4gICAgICB2YXIgbGlzdGVuZXJzID0gY2JzLnJlbW92ZS5sZW5ndGggKyAxO1xuICAgICAgaWYgKGlzRGVmKHJtKSkge1xuICAgICAgICAvLyB3ZSBoYXZlIGEgcmVjdXJzaXZlbHkgcGFzc2VkIGRvd24gcm0gY2FsbGJhY2tcbiAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGxpc3RlbmVycyBjb3VudFxuICAgICAgICBybS5saXN0ZW5lcnMgKz0gbGlzdGVuZXJzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGlyZWN0bHkgcmVtb3ZpbmdcbiAgICAgICAgcm0gPSBjcmVhdGVSbUNiKHZub2RlLmVsbSwgbGlzdGVuZXJzKTtcbiAgICAgIH1cbiAgICAgIC8vIHJlY3Vyc2l2ZWx5IGludm9rZSBob29rcyBvbiBjaGlsZCBjb21wb25lbnQgcm9vdCBub2RlXG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSAmJiBpc0RlZihpID0gaS5fdm5vZGUpICYmIGlzRGVmKGkuZGF0YSkpIHtcbiAgICAgICAgcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayhpLCBybSk7XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLnJlbW92ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBjYnMucmVtb3ZlW2ldKHZub2RlLCBybSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkucmVtb3ZlKSkge1xuICAgICAgICBpKHZub2RlLCBybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBybSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmVOb2RlKHZub2RlLmVsbSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlQ2hpbGRyZW4gKHBhcmVudEVsbSwgb2xkQ2gsIG5ld0NoLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpIHtcbiAgICB2YXIgb2xkU3RhcnRJZHggPSAwO1xuICAgIHZhciBuZXdTdGFydElkeCA9IDA7XG4gICAgdmFyIG9sZEVuZElkeCA9IG9sZENoLmxlbmd0aCAtIDE7XG4gICAgdmFyIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFswXTtcbiAgICB2YXIgb2xkRW5kVm5vZGUgPSBvbGRDaFtvbGRFbmRJZHhdO1xuICAgIHZhciBuZXdFbmRJZHggPSBuZXdDaC5sZW5ndGggLSAxO1xuICAgIHZhciBuZXdTdGFydFZub2RlID0gbmV3Q2hbMF07XG4gICAgdmFyIG5ld0VuZFZub2RlID0gbmV3Q2hbbmV3RW5kSWR4XTtcbiAgICB2YXIgb2xkS2V5VG9JZHgsIGlkeEluT2xkLCB2bm9kZVRvTW92ZSwgcmVmRWxtO1xuXG4gICAgLy8gcmVtb3ZlT25seSBpcyBhIHNwZWNpYWwgZmxhZyB1c2VkIG9ubHkgYnkgPHRyYW5zaXRpb24tZ3JvdXA+XG4gICAgLy8gdG8gZW5zdXJlIHJlbW92ZWQgZWxlbWVudHMgc3RheSBpbiBjb3JyZWN0IHJlbGF0aXZlIHBvc2l0aW9uc1xuICAgIC8vIGR1cmluZyBsZWF2aW5nIHRyYW5zaXRpb25zXG4gICAgdmFyIGNhbk1vdmUgPSAhcmVtb3ZlT25seTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjaGVja0R1cGxpY2F0ZUtleXMobmV3Q2gpO1xuICAgIH1cblxuICAgIHdoaWxlIChvbGRTdGFydElkeCA8PSBvbGRFbmRJZHggJiYgbmV3U3RhcnRJZHggPD0gbmV3RW5kSWR4KSB7XG4gICAgICBpZiAoaXNVbmRlZihvbGRTdGFydFZub2RlKSkge1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07IC8vIFZub2RlIGhhcyBiZWVuIG1vdmVkIGxlZnRcbiAgICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGRFbmRWbm9kZSkpIHtcbiAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdTdGFydFZub2RlKSkge1xuICAgICAgICBwYXRjaFZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgbmV3Q2gsIG5ld1N0YXJ0SWR4KTtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIG5ld0NoLCBuZXdFbmRJZHgpO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgcmlnaHRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBuZXdDaCwgbmV3RW5kSWR4KTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBub2RlT3BzLm5leHRTaWJsaW5nKG9sZEVuZFZub2RlLmVsbSkpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICAgIG5ld0VuZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7IC8vIFZub2RlIG1vdmVkIGxlZnRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBuZXdDaCwgbmV3U3RhcnRJZHgpO1xuICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkRW5kVm5vZGUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNVbmRlZihvbGRLZXlUb0lkeCkpIHsgb2xkS2V5VG9JZHggPSBjcmVhdGVLZXlUb09sZElkeChvbGRDaCwgb2xkU3RhcnRJZHgsIG9sZEVuZElkeCk7IH1cbiAgICAgICAgaWR4SW5PbGQgPSBpc0RlZihuZXdTdGFydFZub2RlLmtleSlcbiAgICAgICAgICA/IG9sZEtleVRvSWR4W25ld1N0YXJ0Vm5vZGUua2V5XVxuICAgICAgICAgIDogZmluZElkeEluT2xkKG5ld1N0YXJ0Vm5vZGUsIG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTtcbiAgICAgICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQpKSB7IC8vIE5ldyBlbGVtZW50XG4gICAgICAgICAgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVsbSwgZmFsc2UsIG5ld0NoLCBuZXdTdGFydElkeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdm5vZGVUb01vdmUgPSBvbGRDaFtpZHhJbk9sZF07XG4gICAgICAgICAgaWYgKHNhbWVWbm9kZSh2bm9kZVRvTW92ZSwgbmV3U3RhcnRWbm9kZSkpIHtcbiAgICAgICAgICAgIHBhdGNoVm5vZGUodm5vZGVUb01vdmUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgbmV3Q2gsIG5ld1N0YXJ0SWR4KTtcbiAgICAgICAgICAgIG9sZENoW2lkeEluT2xkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCB2bm9kZVRvTW92ZS5lbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc2FtZSBrZXkgYnV0IGRpZmZlcmVudCBlbGVtZW50LiB0cmVhdCBhcyBuZXcgZWxlbWVudFxuICAgICAgICAgICAgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVsbSwgZmFsc2UsIG5ld0NoLCBuZXdTdGFydElkeCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9sZFN0YXJ0SWR4ID4gb2xkRW5kSWR4KSB7XG4gICAgICByZWZFbG0gPSBpc1VuZGVmKG5ld0NoW25ld0VuZElkeCArIDFdKSA/IG51bGwgOiBuZXdDaFtuZXdFbmRJZHggKyAxXS5lbG07XG4gICAgICBhZGRWbm9kZXMocGFyZW50RWxtLCByZWZFbG0sIG5ld0NoLCBuZXdTdGFydElkeCwgbmV3RW5kSWR4LCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgIH0gZWxzZSBpZiAobmV3U3RhcnRJZHggPiBuZXdFbmRJZHgpIHtcbiAgICAgIHJlbW92ZVZub2RlcyhwYXJlbnRFbG0sIG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjaGVja0R1cGxpY2F0ZUtleXMgKGNoaWxkcmVuKSB7XG4gICAgdmFyIHNlZW5LZXlzID0ge307XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZub2RlID0gY2hpbGRyZW5baV07XG4gICAgICB2YXIga2V5ID0gdm5vZGUua2V5O1xuICAgICAgaWYgKGlzRGVmKGtleSkpIHtcbiAgICAgICAgaWYgKHNlZW5LZXlzW2tleV0pIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgKFwiRHVwbGljYXRlIGtleXMgZGV0ZWN0ZWQ6ICdcIiArIGtleSArIFwiJy4gVGhpcyBtYXkgY2F1c2UgYW4gdXBkYXRlIGVycm9yLlwiKSxcbiAgICAgICAgICAgIHZub2RlLmNvbnRleHRcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlZW5LZXlzW2tleV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZmluZElkeEluT2xkIChub2RlLCBvbGRDaCwgc3RhcnQsIGVuZCkge1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IG9sZENoW2ldO1xuICAgICAgaWYgKGlzRGVmKGMpICYmIHNhbWVWbm9kZShub2RlLCBjKSkgeyByZXR1cm4gaSB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGF0Y2hWbm9kZSAoXG4gICAgb2xkVm5vZGUsXG4gICAgdm5vZGUsXG4gICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLFxuICAgIG93bmVyQXJyYXksXG4gICAgaW5kZXgsXG4gICAgcmVtb3ZlT25seVxuICApIHtcbiAgICBpZiAob2xkVm5vZGUgPT09IHZub2RlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaXNEZWYodm5vZGUuZWxtKSAmJiBpc0RlZihvd25lckFycmF5KSkge1xuICAgICAgLy8gY2xvbmUgcmV1c2VkIHZub2RlXG4gICAgICB2bm9kZSA9IG93bmVyQXJyYXlbaW5kZXhdID0gY2xvbmVWTm9kZSh2bm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIGVsbSA9IHZub2RlLmVsbSA9IG9sZFZub2RlLmVsbTtcblxuICAgIGlmIChpc1RydWUob2xkVm5vZGUuaXNBc3luY1BsYWNlaG9sZGVyKSkge1xuICAgICAgaWYgKGlzRGVmKHZub2RlLmFzeW5jRmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgaHlkcmF0ZShvbGRWbm9kZS5lbG0sIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm5vZGUuaXNBc3luY1BsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHJldXNlIGVsZW1lbnQgZm9yIHN0YXRpYyB0cmVlcy5cbiAgICAvLyBub3RlIHdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgdm5vZGUgaXMgY2xvbmVkIC1cbiAgICAvLyBpZiB0aGUgbmV3IG5vZGUgaXMgbm90IGNsb25lZCBpdCBtZWFucyB0aGUgcmVuZGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW5cbiAgICAvLyByZXNldCBieSB0aGUgaG90LXJlbG9hZC1hcGkgYW5kIHdlIG5lZWQgdG8gZG8gYSBwcm9wZXIgcmUtcmVuZGVyLlxuICAgIGlmIChpc1RydWUodm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICBpc1RydWUob2xkVm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICB2bm9kZS5rZXkgPT09IG9sZFZub2RlLmtleSAmJlxuICAgICAgKGlzVHJ1ZSh2bm9kZS5pc0Nsb25lZCkgfHwgaXNUcnVlKHZub2RlLmlzT25jZSkpXG4gICAgKSB7XG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGk7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5wcmVwYXRjaCkpIHtcbiAgICAgIGkob2xkVm5vZGUsIHZub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgb2xkQ2ggPSBvbGRWbm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgY2ggPSB2bm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLnVwZGF0ZS5sZW5ndGg7ICsraSkgeyBjYnMudXBkYXRlW2ldKG9sZFZub2RlLCB2bm9kZSk7IH1cbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS51cGRhdGUpKSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNVbmRlZih2bm9kZS50ZXh0KSkge1xuICAgICAgaWYgKGlzRGVmKG9sZENoKSAmJiBpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKG9sZENoICE9PSBjaCkgeyB1cGRhdGVDaGlsZHJlbihlbG0sIG9sZENoLCBjaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTsgfVxuICAgICAgfSBlbHNlIGlmIChpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBjaGVja0R1cGxpY2F0ZUtleXMoY2gpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkgeyBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpOyB9XG4gICAgICAgIGFkZFZub2RlcyhlbG0sIG51bGwsIGNoLCAwLCBjaC5sZW5ndGggLSAxLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRDaCkpIHtcbiAgICAgICAgcmVtb3ZlVm5vZGVzKGVsbSwgb2xkQ2gsIDAsIG9sZENoLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkge1xuICAgICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob2xkVm5vZGUudGV4dCAhPT0gdm5vZGUudGV4dCkge1xuICAgICAgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sIHZub2RlLnRleHQpO1xuICAgIH1cbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5wb3N0cGF0Y2gpKSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUluc2VydEhvb2sgKHZub2RlLCBxdWV1ZSwgaW5pdGlhbCkge1xuICAgIC8vIGRlbGF5IGluc2VydCBob29rcyBmb3IgY29tcG9uZW50IHJvb3Qgbm9kZXMsIGludm9rZSB0aGVtIGFmdGVyIHRoZVxuICAgIC8vIGVsZW1lbnQgaXMgcmVhbGx5IGluc2VydGVkXG4gICAgaWYgKGlzVHJ1ZShpbml0aWFsKSAmJiBpc0RlZih2bm9kZS5wYXJlbnQpKSB7XG4gICAgICB2bm9kZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0ID0gcXVldWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgcXVldWVbaV0uZGF0YS5ob29rLmluc2VydChxdWV1ZVtpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGh5ZHJhdGlvbkJhaWxlZCA9IGZhbHNlO1xuICAvLyBsaXN0IG9mIG1vZHVsZXMgdGhhdCBjYW4gc2tpcCBjcmVhdGUgaG9vayBkdXJpbmcgaHlkcmF0aW9uIGJlY2F1c2UgdGhleVxuICAvLyBhcmUgYWxyZWFkeSByZW5kZXJlZCBvbiB0aGUgY2xpZW50IG9yIGhhcyBubyBuZWVkIGZvciBpbml0aWFsaXphdGlvblxuICAvLyBOb3RlOiBzdHlsZSBpcyBleGNsdWRlZCBiZWNhdXNlIGl0IHJlbGllcyBvbiBpbml0aWFsIGNsb25lIGZvciBmdXR1cmVcbiAgLy8gZGVlcCB1cGRhdGVzICgjNzA2MykuXG4gIHZhciBpc1JlbmRlcmVkTW9kdWxlID0gbWFrZU1hcCgnYXR0cnMsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGljU3R5bGUsa2V5Jyk7XG5cbiAgLy8gTm90ZTogdGhpcyBpcyBhIGJyb3dzZXItb25seSBmdW5jdGlvbiBzbyB3ZSBjYW4gYXNzdW1lIGVsbXMgYXJlIERPTSBub2Rlcy5cbiAgZnVuY3Rpb24gaHlkcmF0ZSAoZWxtLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBpblZQcmUpIHtcbiAgICB2YXIgaTtcbiAgICB2YXIgdGFnID0gdm5vZGUudGFnO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICBpblZQcmUgPSBpblZQcmUgfHwgKGRhdGEgJiYgZGF0YS5wcmUpO1xuICAgIHZub2RlLmVsbSA9IGVsbTtcblxuICAgIGlmIChpc1RydWUodm5vZGUuaXNDb21tZW50KSAmJiBpc0RlZih2bm9kZS5hc3luY0ZhY3RvcnkpKSB7XG4gICAgICB2bm9kZS5pc0FzeW5jUGxhY2Vob2xkZXIgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgLy8gYXNzZXJ0IG5vZGUgbWF0Y2hcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFhc3NlcnROb2RlTWF0Y2goZWxtLCB2bm9kZSwgaW5WUHJlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIHsgaSh2bm9kZSwgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8pOyB9XG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgICAgICAvLyBjaGlsZCBjb21wb25lbnQuIGl0IHNob3VsZCBoYXZlIGh5ZHJhdGVkIGl0cyBvd24gdHJlZS5cbiAgICAgICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAgIGlmIChpc0RlZihjaGlsZHJlbikpIHtcbiAgICAgICAgLy8gZW1wdHkgZWxlbWVudCwgYWxsb3cgY2xpZW50IHRvIHBpY2sgdXAgYW5kIHBvcHVsYXRlIGNoaWxkcmVuXG4gICAgICAgIGlmICghZWxtLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgIGNyZWF0ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB2LWh0bWwgYW5kIGRvbVByb3BzOiBpbm5lckhUTUxcbiAgICAgICAgICBpZiAoaXNEZWYoaSA9IGRhdGEpICYmIGlzRGVmKGkgPSBpLmRvbVByb3BzKSAmJiBpc0RlZihpID0gaS5pbm5lckhUTUwpKSB7XG4gICAgICAgICAgICBpZiAoaSAhPT0gZWxtLmlubmVySFRNTCkge1xuICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICAhaHlkcmF0aW9uQmFpbGVkXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGh5ZHJhdGlvbkJhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYXJlbnQ6ICcsIGVsbSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdzZXJ2ZXIgaW5uZXJIVE1MOiAnLCBpKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ2NsaWVudCBpbm5lckhUTUw6ICcsIGVsbS5pbm5lckhUTUwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpdGVyYXRlIGFuZCBjb21wYXJlIGNoaWxkcmVuIGxpc3RzXG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5NYXRjaCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgY2hpbGROb2RlID0gZWxtLmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBjaGlsZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgICAgIGlmICghY2hpbGROb2RlIHx8ICFoeWRyYXRlKGNoaWxkTm9kZSwgY2hpbGRyZW5baSQxXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBpblZQcmUpKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW5NYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgY2hpbGROb2RlIGlzIG5vdCBudWxsLCBpdCBtZWFucyB0aGUgYWN0dWFsIGNoaWxkTm9kZXMgbGlzdCBpc1xuICAgICAgICAgICAgLy8gbG9uZ2VyIHRoYW4gdGhlIHZpcnR1YWwgY2hpbGRyZW4gbGlzdC5cbiAgICAgICAgICAgIGlmICghY2hpbGRyZW5NYXRjaCB8fCBjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICAgICAgIWh5ZHJhdGlvbkJhaWxlZFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBoeWRyYXRpb25CYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignUGFyZW50OiAnLCBlbG0pO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTWlzbWF0Y2hpbmcgY2hpbGROb2RlcyB2cy4gVk5vZGVzOiAnLCBlbG0uY2hpbGROb2RlcywgY2hpbGRyZW4pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAgIHZhciBmdWxsSW52b2tlID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRlcmVkTW9kdWxlKGtleSkpIHtcbiAgICAgICAgICAgIGZ1bGxJbnZva2UgPSB0cnVlO1xuICAgICAgICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZ1bGxJbnZva2UgJiYgZGF0YVsnY2xhc3MnXSkge1xuICAgICAgICAgIC8vIGVuc3VyZSBjb2xsZWN0aW5nIGRlcHMgZm9yIGRlZXAgY2xhc3MgYmluZGluZ3MgZm9yIGZ1dHVyZSB1cGRhdGVzXG4gICAgICAgICAgdHJhdmVyc2UoZGF0YVsnY2xhc3MnXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsbS5kYXRhICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBlbG0uZGF0YSA9IHZub2RlLnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBhc3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2RlLCBpblZQcmUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUudGFnKSkge1xuICAgICAgcmV0dXJuIHZub2RlLnRhZy5pbmRleE9mKCd2dWUtY29tcG9uZW50JykgPT09IDAgfHwgKFxuICAgICAgICAhaXNVbmtub3duRWxlbWVudCQkMSh2bm9kZSwgaW5WUHJlKSAmJlxuICAgICAgICB2bm9kZS50YWcudG9Mb3dlckNhc2UoKSA9PT0gKG5vZGUudGFnTmFtZSAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09ICh2bm9kZS5pc0NvbW1lbnQgPyA4IDogMylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gcGF0Y2ggKG9sZFZub2RlLCB2bm9kZSwgaHlkcmF0aW5nLCByZW1vdmVPbmx5KSB7XG4gICAgaWYgKGlzVW5kZWYodm5vZGUpKSB7XG4gICAgICBpZiAoaXNEZWYob2xkVm5vZGUpKSB7IGludm9rZURlc3Ryb3lIb29rKG9sZFZub2RlKTsgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGlzSW5pdGlhbFBhdGNoID0gZmFsc2U7XG4gICAgdmFyIGluc2VydGVkVm5vZGVRdWV1ZSA9IFtdO1xuXG4gICAgaWYgKGlzVW5kZWYob2xkVm5vZGUpKSB7XG4gICAgICAvLyBlbXB0eSBtb3VudCAobGlrZWx5IGFzIGNvbXBvbmVudCksIGNyZWF0ZSBuZXcgcm9vdCBlbGVtZW50XG4gICAgICBpc0luaXRpYWxQYXRjaCA9IHRydWU7XG4gICAgICBjcmVhdGVFbG0odm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpc1JlYWxFbGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuICAgICAgaWYgKCFpc1JlYWxFbGVtZW50ICYmIHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4gICAgICAgIC8vIHBhdGNoIGV4aXN0aW5nIHJvb3Qgbm9kZVxuICAgICAgICBwYXRjaFZub2RlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBudWxsLCBudWxsLCByZW1vdmVPbmx5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1JlYWxFbGVtZW50KSB7XG4gICAgICAgICAgLy8gbW91bnRpbmcgdG8gYSByZWFsIGVsZW1lbnRcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHNlcnZlci1yZW5kZXJlZCBjb250ZW50IGFuZCBpZiB3ZSBjYW4gcGVyZm9ybVxuICAgICAgICAgIC8vIGEgc3VjY2Vzc2Z1bCBoeWRyYXRpb24uXG4gICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09PSAxICYmIG9sZFZub2RlLmhhc0F0dHJpYnV0ZShTU1JfQVRUUikpIHtcbiAgICAgICAgICAgIG9sZFZub2RlLnJlbW92ZUF0dHJpYnV0ZShTU1JfQVRUUik7XG4gICAgICAgICAgICBoeWRyYXRpbmcgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNUcnVlKGh5ZHJhdGluZykpIHtcbiAgICAgICAgICAgIGlmIChoeWRyYXRlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAgICAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHRydWUpO1xuICAgICAgICAgICAgICByZXR1cm4gb2xkVm5vZGVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAgICdUaGUgY2xpZW50LXNpZGUgcmVuZGVyZWQgdmlydHVhbCBET00gdHJlZSBpcyBub3QgbWF0Y2hpbmcgJyArXG4gICAgICAgICAgICAgICAgJ3NlcnZlci1yZW5kZXJlZCBjb250ZW50LiBUaGlzIGlzIGxpa2VseSBjYXVzZWQgYnkgaW5jb3JyZWN0ICcgK1xuICAgICAgICAgICAgICAgICdIVE1MIG1hcmt1cCwgZm9yIGV4YW1wbGUgbmVzdGluZyBibG9jay1sZXZlbCBlbGVtZW50cyBpbnNpZGUgJyArXG4gICAgICAgICAgICAgICAgJzxwPiwgb3IgbWlzc2luZyA8dGJvZHk+LiBCYWlsaW5nIGh5ZHJhdGlvbiBhbmQgcGVyZm9ybWluZyAnICtcbiAgICAgICAgICAgICAgICAnZnVsbCBjbGllbnQtc2lkZSByZW5kZXIuJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlaXRoZXIgbm90IHNlcnZlci1yZW5kZXJlZCwgb3IgaHlkcmF0aW9uIGZhaWxlZC5cbiAgICAgICAgICAvLyBjcmVhdGUgYW4gZW1wdHkgbm9kZSBhbmQgcmVwbGFjZSBpdFxuICAgICAgICAgIG9sZFZub2RlID0gZW1wdHlOb2RlQXQob2xkVm5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVwbGFjaW5nIGV4aXN0aW5nIGVsZW1lbnRcbiAgICAgICAgdmFyIG9sZEVsbSA9IG9sZFZub2RlLmVsbTtcbiAgICAgICAgdmFyIHBhcmVudEVsbSA9IG5vZGVPcHMucGFyZW50Tm9kZShvbGRFbG0pO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgbm9kZVxuICAgICAgICBjcmVhdGVFbG0oXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLFxuICAgICAgICAgIC8vIGV4dHJlbWVseSByYXJlIGVkZ2UgY2FzZTogZG8gbm90IGluc2VydCBpZiBvbGQgZWxlbWVudCBpcyBpbiBhXG4gICAgICAgICAgLy8gbGVhdmluZyB0cmFuc2l0aW9uLiBPbmx5IGhhcHBlbnMgd2hlbiBjb21iaW5pbmcgdHJhbnNpdGlvbiArXG4gICAgICAgICAgLy8ga2VlcC1hbGl2ZSArIEhPQ3MuICgjNDU5MClcbiAgICAgICAgICBvbGRFbG0uX2xlYXZlQ2IgPyBudWxsIDogcGFyZW50RWxtLFxuICAgICAgICAgIG5vZGVPcHMubmV4dFNpYmxpbmcob2xkRWxtKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBwYXJlbnQgcGxhY2Vob2xkZXIgbm9kZSBlbGVtZW50LCByZWN1cnNpdmVseVxuICAgICAgICBpZiAoaXNEZWYodm5vZGUucGFyZW50KSkge1xuICAgICAgICAgIHZhciBhbmNlc3RvciA9IHZub2RlLnBhcmVudDtcbiAgICAgICAgICB2YXIgcGF0Y2hhYmxlID0gaXNQYXRjaGFibGUodm5vZGUpO1xuICAgICAgICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYnMuZGVzdHJveS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICBjYnMuZGVzdHJveVtpXShhbmNlc3Rvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmNlc3Rvci5lbG0gPSB2bm9kZS5lbG07XG4gICAgICAgICAgICBpZiAocGF0Y2hhYmxlKSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kkMSkge1xuICAgICAgICAgICAgICAgIGNicy5jcmVhdGVbaSQxXShlbXB0eU5vZGUsIGFuY2VzdG9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyAjNjUxM1xuICAgICAgICAgICAgICAvLyBpbnZva2UgaW5zZXJ0IGhvb2tzIHRoYXQgbWF5IGhhdmUgYmVlbiBtZXJnZWQgYnkgY3JlYXRlIGhvb2tzLlxuICAgICAgICAgICAgICAvLyBlLmcuIGZvciBkaXJlY3RpdmVzIHRoYXQgdXNlcyB0aGUgXCJpbnNlcnRlZFwiIGhvb2suXG4gICAgICAgICAgICAgIHZhciBpbnNlcnQgPSBhbmNlc3Rvci5kYXRhLmhvb2suaW5zZXJ0O1xuICAgICAgICAgICAgICBpZiAoaW5zZXJ0Lm1lcmdlZCkge1xuICAgICAgICAgICAgICAgIC8vIHN0YXJ0IGF0IGluZGV4IDEgdG8gYXZvaWQgcmUtaW52b2tpbmcgY29tcG9uZW50IG1vdW50ZWQgaG9va1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkkMiA9IDE7IGkkMiA8IGluc2VydC5mbnMubGVuZ3RoOyBpJDIrKykge1xuICAgICAgICAgICAgICAgICAgaW5zZXJ0LmZuc1tpJDJdKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWdpc3RlclJlZihhbmNlc3Rvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkZXN0cm95IG9sZCBub2RlXG4gICAgICAgIGlmIChpc0RlZihwYXJlbnRFbG0pKSB7XG4gICAgICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSwgW29sZFZub2RlXSwgMCwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZWYob2xkVm5vZGUudGFnKSkge1xuICAgICAgICAgIGludm9rZURlc3Ryb3lIb29rKG9sZFZub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGludm9rZUluc2VydEhvb2sodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgaXNJbml0aWFsUGF0Y2gpO1xuICAgIHJldHVybiB2bm9kZS5lbG1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGRpcmVjdGl2ZXMgPSB7XG4gIGNyZWF0ZTogdXBkYXRlRGlyZWN0aXZlcyxcbiAgdXBkYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICBkZXN0cm95OiBmdW5jdGlvbiB1bmJpbmREaXJlY3RpdmVzICh2bm9kZSkge1xuICAgIHVwZGF0ZURpcmVjdGl2ZXModm5vZGUsIGVtcHR5Tm9kZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHVwZGF0ZURpcmVjdGl2ZXMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAob2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzIHx8IHZub2RlLmRhdGEuZGlyZWN0aXZlcykge1xuICAgIF91cGRhdGUob2xkVm5vZGUsIHZub2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGlzQ3JlYXRlID0gb2xkVm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFyIGlzRGVzdHJveSA9IHZub2RlID09PSBlbXB0eU5vZGU7XG4gIHZhciBvbGREaXJzID0gbm9ybWFsaXplRGlyZWN0aXZlcyQxKG9sZFZub2RlLmRhdGEuZGlyZWN0aXZlcywgb2xkVm5vZGUuY29udGV4dCk7XG4gIHZhciBuZXdEaXJzID0gbm9ybWFsaXplRGlyZWN0aXZlcyQxKHZub2RlLmRhdGEuZGlyZWN0aXZlcywgdm5vZGUuY29udGV4dCk7XG5cbiAgdmFyIGRpcnNXaXRoSW5zZXJ0ID0gW107XG4gIHZhciBkaXJzV2l0aFBvc3RwYXRjaCA9IFtdO1xuXG4gIHZhciBrZXksIG9sZERpciwgZGlyO1xuICBmb3IgKGtleSBpbiBuZXdEaXJzKSB7XG4gICAgb2xkRGlyID0gb2xkRGlyc1trZXldO1xuICAgIGRpciA9IG5ld0RpcnNba2V5XTtcbiAgICBpZiAoIW9sZERpcikge1xuICAgICAgLy8gbmV3IGRpcmVjdGl2ZSwgYmluZFxuICAgICAgY2FsbEhvb2skMShkaXIsICdiaW5kJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChkaXIuZGVmICYmIGRpci5kZWYuaW5zZXJ0ZWQpIHtcbiAgICAgICAgZGlyc1dpdGhJbnNlcnQucHVzaChkaXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBkaXJlY3RpdmUsIHVwZGF0ZVxuICAgICAgZGlyLm9sZFZhbHVlID0gb2xkRGlyLnZhbHVlO1xuICAgICAgZGlyLm9sZEFyZyA9IG9sZERpci5hcmc7XG4gICAgICBjYWxsSG9vayQxKGRpciwgJ3VwZGF0ZScsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmNvbXBvbmVudFVwZGF0ZWQpIHtcbiAgICAgICAgZGlyc1dpdGhQb3N0cGF0Y2gucHVzaChkaXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkaXJzV2l0aEluc2VydC5sZW5ndGgpIHtcbiAgICB2YXIgY2FsbEluc2VydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlyc1dpdGhJbnNlcnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2FsbEhvb2skMShkaXJzV2l0aEluc2VydFtpXSwgJ2luc2VydGVkJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChpc0NyZWF0ZSkge1xuICAgICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUsICdpbnNlcnQnLCBjYWxsSW5zZXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbEluc2VydCgpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkaXJzV2l0aFBvc3RwYXRjaC5sZW5ndGgpIHtcbiAgICBtZXJnZVZOb2RlSG9vayh2bm9kZSwgJ3Bvc3RwYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2FsbEhvb2skMShkaXJzV2l0aFBvc3RwYXRjaFtpXSwgJ2NvbXBvbmVudFVwZGF0ZWQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFpc0NyZWF0ZSkge1xuICAgIGZvciAoa2V5IGluIG9sZERpcnMpIHtcbiAgICAgIGlmICghbmV3RGlyc1trZXldKSB7XG4gICAgICAgIC8vIG5vIGxvbmdlciBwcmVzZW50LCB1bmJpbmRcbiAgICAgICAgY2FsbEhvb2skMShvbGREaXJzW2tleV0sICd1bmJpbmQnLCBvbGRWbm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBlbXB0eU1vZGlmaWVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSAoXG4gIGRpcnMsXG4gIHZtXG4pIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGlmICghZGlycykge1xuICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgIHJldHVybiByZXNcbiAgfVxuICB2YXIgaSwgZGlyO1xuICBmb3IgKGkgPSAwOyBpIDwgZGlycy5sZW5ndGg7IGkrKykge1xuICAgIGRpciA9IGRpcnNbaV07XG4gICAgaWYgKCFkaXIubW9kaWZpZXJzKSB7XG4gICAgICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgICAgIGRpci5tb2RpZmllcnMgPSBlbXB0eU1vZGlmaWVycztcbiAgICB9XG4gICAgcmVzW2dldFJhd0Rpck5hbWUoZGlyKV0gPSBkaXI7XG4gICAgZGlyLmRlZiA9IHJlc29sdmVBc3NldCh2bS4kb3B0aW9ucywgJ2RpcmVjdGl2ZXMnLCBkaXIubmFtZSwgdHJ1ZSk7XG4gIH1cbiAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gZ2V0UmF3RGlyTmFtZSAoZGlyKSB7XG4gIHJldHVybiBkaXIucmF3TmFtZSB8fCAoKGRpci5uYW1lKSArIFwiLlwiICsgKE9iamVjdC5rZXlzKGRpci5tb2RpZmllcnMgfHwge30pLmpvaW4oJy4nKSkpXG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rJDEgKGRpciwgaG9vaywgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpIHtcbiAgdmFyIGZuID0gZGlyLmRlZiAmJiBkaXIuZGVmW2hvb2tdO1xuICBpZiAoZm4pIHtcbiAgICB0cnkge1xuICAgICAgZm4odm5vZGUuZWxtLCBkaXIsIHZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bm9kZS5jb250ZXh0LCAoXCJkaXJlY3RpdmUgXCIgKyAoZGlyLm5hbWUpICsgXCIgXCIgKyBob29rICsgXCIgaG9va1wiKSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBiYXNlTW9kdWxlcyA9IFtcbiAgcmVmLFxuICBkaXJlY3RpdmVzXG5dO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQXR0cnMgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgb3B0cyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIGlmIChpc0RlZihvcHRzKSAmJiBvcHRzLkN0b3Iub3B0aW9ucy5pbmhlcml0QXR0cnMgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5hdHRycykgJiYgaXNVbmRlZih2bm9kZS5kYXRhLmF0dHJzKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBrZXksIGN1ciwgb2xkO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkQXR0cnMgPSBvbGRWbm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICB2YXIgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKGF0dHJzLl9fb2JfXykpIHtcbiAgICBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgPSBleHRlbmQoe30sIGF0dHJzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIGF0dHJzKSB7XG4gICAgY3VyID0gYXR0cnNba2V5XTtcbiAgICBvbGQgPSBvbGRBdHRyc1trZXldO1xuICAgIGlmIChvbGQgIT09IGN1cikge1xuICAgICAgc2V0QXR0cihlbG0sIGtleSwgY3VyKTtcbiAgICB9XG4gIH1cbiAgLy8gIzQzOTE6IGluIElFOSwgc2V0dGluZyB0eXBlIGNhbiByZXNldCB2YWx1ZSBmb3IgaW5wdXRbdHlwZT1yYWRpb11cbiAgLy8gIzY2NjY6IElFL0VkZ2UgZm9yY2VzIHByb2dyZXNzIHZhbHVlIGRvd24gdG8gMSBiZWZvcmUgc2V0dGluZyBhIG1heFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKChpc0lFIHx8IGlzRWRnZSkgJiYgYXR0cnMudmFsdWUgIT09IG9sZEF0dHJzLnZhbHVlKSB7XG4gICAgc2V0QXR0cihlbG0sICd2YWx1ZScsIGF0dHJzLnZhbHVlKTtcbiAgfVxuICBmb3IgKGtleSBpbiBvbGRBdHRycykge1xuICAgIGlmIChpc1VuZGVmKGF0dHJzW2tleV0pKSB7XG4gICAgICBpZiAoaXNYbGluayhrZXkpKSB7XG4gICAgICAgIGVsbS5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Aoa2V5KSk7XG4gICAgICB9IGVsc2UgaWYgKCFpc0VudW1lcmF0ZWRBdHRyKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRBdHRyIChlbCwga2V5LCB2YWx1ZSkge1xuICBpZiAoZWwudGFnTmFtZS5pbmRleE9mKCctJykgPiAtMSkge1xuICAgIGJhc2VTZXRBdHRyKGVsLCBrZXksIHZhbHVlKTtcbiAgfSBlbHNlIGlmIChpc0Jvb2xlYW5BdHRyKGtleSkpIHtcbiAgICAvLyBzZXQgYXR0cmlidXRlIGZvciBibGFuayB2YWx1ZVxuICAgIC8vIGUuZy4gPG9wdGlvbiBkaXNhYmxlZD5TZWxlY3Qgb25lPC9vcHRpb24+XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGVjaG5pY2FsbHkgYWxsb3dmdWxsc2NyZWVuIGlzIGEgYm9vbGVhbiBhdHRyaWJ1dGUgZm9yIDxpZnJhbWU+LFxuICAgICAgLy8gYnV0IEZsYXNoIGV4cGVjdHMgYSB2YWx1ZSBvZiBcInRydWVcIiB3aGVuIHVzZWQgb24gPGVtYmVkPiB0YWdcbiAgICAgIHZhbHVlID0ga2V5ID09PSAnYWxsb3dmdWxsc2NyZWVuJyAmJiBlbC50YWdOYW1lID09PSAnRU1CRUQnXG4gICAgICAgID8gJ3RydWUnXG4gICAgICAgIDoga2V5O1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0VudW1lcmF0ZWRBdHRyKGtleSkpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCBjb252ZXJ0RW51bWVyYXRlZFZhbHVlKGtleSwgdmFsdWUpKTtcbiAgfSBlbHNlIGlmIChpc1hsaW5rKGtleSkpIHtcbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJhc2VTZXRBdHRyKGVsLCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlU2V0QXR0ciAoZWwsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gIzcxMzg6IElFMTAgJiAxMSBmaXJlcyBpbnB1dCBldmVudCB3aGVuIHNldHRpbmcgcGxhY2Vob2xkZXIgb25cbiAgICAvLyA8dGV4dGFyZWE+Li4uIGJsb2NrIHRoZSBmaXJzdCBpbnB1dCBldmVudCBhbmQgcmVtb3ZlIHRoZSBibG9ja2VyXG4gICAgLy8gaW1tZWRpYXRlbHkuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKFxuICAgICAgaXNJRSAmJiAhaXNJRTkgJiZcbiAgICAgIGVsLnRhZ05hbWUgPT09ICdURVhUQVJFQScgJiZcbiAgICAgIGtleSA9PT0gJ3BsYWNlaG9sZGVyJyAmJiB2YWx1ZSAhPT0gJycgJiYgIWVsLl9faWVwaFxuICAgICkge1xuICAgICAgdmFyIGJsb2NrZXIgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdpbnB1dCcsIGJsb2NrZXIpO1xuICAgICAgfTtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgYmxvY2tlcik7XG4gICAgICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgICAgIGVsLl9faWVwaCA9IHRydWU7IC8qIElFIHBsYWNlaG9sZGVyIHBhdGNoZWQgKi9cbiAgICB9XG4gICAgZWwuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuICB9XG59XG5cbnZhciBhdHRycyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVBdHRycyxcbiAgdXBkYXRlOiB1cGRhdGVBdHRyc1xufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUNsYXNzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBvbGREYXRhID0gb2xkVm5vZGUuZGF0YTtcbiAgaWYgKFxuICAgIGlzVW5kZWYoZGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICBpc1VuZGVmKGRhdGEuY2xhc3MpICYmIChcbiAgICAgIGlzVW5kZWYob2xkRGF0YSkgfHwgKFxuICAgICAgICBpc1VuZGVmKG9sZERhdGEuc3RhdGljQ2xhc3MpICYmXG4gICAgICAgIGlzVW5kZWYob2xkRGF0YS5jbGFzcylcbiAgICAgIClcbiAgICApXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNscyA9IGdlbkNsYXNzRm9yVm5vZGUodm5vZGUpO1xuXG4gIC8vIGhhbmRsZSB0cmFuc2l0aW9uIGNsYXNzZXNcbiAgdmFyIHRyYW5zaXRpb25DbGFzcyA9IGVsLl90cmFuc2l0aW9uQ2xhc3NlcztcbiAgaWYgKGlzRGVmKHRyYW5zaXRpb25DbGFzcykpIHtcbiAgICBjbHMgPSBjb25jYXQoY2xzLCBzdHJpbmdpZnlDbGFzcyh0cmFuc2l0aW9uQ2xhc3MpKTtcbiAgfVxuXG4gIC8vIHNldCB0aGUgY2xhc3NcbiAgaWYgKGNscyAhPT0gZWwuX3ByZXZDbGFzcykge1xuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjbHMpO1xuICAgIGVsLl9wcmV2Q2xhc3MgPSBjbHM7XG4gIH1cbn1cblxudmFyIGtsYXNzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUNsYXNzLFxuICB1cGRhdGU6IHVwZGF0ZUNsYXNzXG59O1xuXG4vKiAgKi9cblxuLyogICovXG5cbi8qICAqL1xuXG4vKiAgKi9cblxuLy8gaW4gc29tZSBjYXNlcywgdGhlIGV2ZW50IHVzZWQgaGFzIHRvIGJlIGRldGVybWluZWQgYXQgcnVudGltZVxuLy8gc28gd2UgdXNlZCBzb21lIHJlc2VydmVkIHRva2VucyBkdXJpbmcgY29tcGlsZS5cbnZhciBSQU5HRV9UT0tFTiA9ICdfX3InO1xudmFyIENIRUNLQk9YX1JBRElPX1RPS0VOID0gJ19fYyc7XG5cbi8qICAqL1xuXG4vLyBub3JtYWxpemUgdi1tb2RlbCBldmVudCB0b2tlbnMgdGhhdCBjYW4gb25seSBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUuXG4vLyBpdCdzIGltcG9ydGFudCB0byBwbGFjZSB0aGUgZXZlbnQgYXMgdGhlIGZpcnN0IGluIHRoZSBhcnJheSBiZWNhdXNlXG4vLyB0aGUgd2hvbGUgcG9pbnQgaXMgZW5zdXJpbmcgdGhlIHYtbW9kZWwgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgYmVmb3JlXG4vLyB1c2VyLWF0dGFjaGVkIGhhbmRsZXJzLlxuZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRzIChvbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKG9uW1JBTkdFX1RPS0VOXSkpIHtcbiAgICAvLyBJRSBpbnB1dFt0eXBlPXJhbmdlXSBvbmx5IHN1cHBvcnRzIGBjaGFuZ2VgIGV2ZW50XG4gICAgdmFyIGV2ZW50ID0gaXNJRSA/ICdjaGFuZ2UnIDogJ2lucHV0JztcbiAgICBvbltldmVudF0gPSBbXS5jb25jYXQob25bUkFOR0VfVE9LRU5dLCBvbltldmVudF0gfHwgW10pO1xuICAgIGRlbGV0ZSBvbltSQU5HRV9UT0tFTl07XG4gIH1cbiAgLy8gVGhpcyB3YXMgb3JpZ2luYWxseSBpbnRlbmRlZCB0byBmaXggIzQ1MjEgYnV0IG5vIGxvbmdlciBuZWNlc3NhcnlcbiAgLy8gYWZ0ZXIgMi41LiBLZWVwaW5nIGl0IGZvciBiYWNrd2FyZHMgY29tcGF0IHdpdGggZ2VuZXJhdGVkIGNvZGUgZnJvbSA8IDIuNFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXSkpIHtcbiAgICBvbi5jaGFuZ2UgPSBbXS5jb25jYXQob25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dLCBvbi5jaGFuZ2UgfHwgW10pO1xuICAgIGRlbGV0ZSBvbltDSEVDS0JPWF9SQURJT19UT0tFTl07XG4gIH1cbn1cblxudmFyIHRhcmdldCQxO1xuXG5mdW5jdGlvbiBjcmVhdGVPbmNlSGFuZGxlciQxIChldmVudCwgaGFuZGxlciwgY2FwdHVyZSkge1xuICB2YXIgX3RhcmdldCA9IHRhcmdldCQxOyAvLyBzYXZlIGN1cnJlbnQgdGFyZ2V0IGVsZW1lbnQgaW4gY2xvc3VyZVxuICByZXR1cm4gZnVuY3Rpb24gb25jZUhhbmRsZXIgKCkge1xuICAgIHZhciByZXMgPSBoYW5kbGVyLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHJlcyAhPT0gbnVsbCkge1xuICAgICAgcmVtb3ZlJDIoZXZlbnQsIG9uY2VIYW5kbGVyLCBjYXB0dXJlLCBfdGFyZ2V0KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gIzk0NDY6IEZpcmVmb3ggPD0gNTMgKGluIHBhcnRpY3VsYXIsIEVTUiA1MikgaGFzIGluY29ycmVjdCBFdmVudC50aW1lU3RhbXBcbi8vIGltcGxlbWVudGF0aW9uIGFuZCBkb2VzIG5vdCBmaXJlIG1pY3JvdGFza3MgaW4gYmV0d2VlbiBldmVudCBwcm9wYWdhdGlvbiwgc29cbi8vIHNhZmUgdG8gZXhjbHVkZS5cbnZhciB1c2VNaWNyb3Rhc2tGaXggPSBpc1VzaW5nTWljcm9UYXNrICYmICEoaXNGRiAmJiBOdW1iZXIoaXNGRlsxXSkgPD0gNTMpO1xuXG5mdW5jdGlvbiBhZGQkMSAoXG4gIG5hbWUsXG4gIGhhbmRsZXIsXG4gIGNhcHR1cmUsXG4gIHBhc3NpdmVcbikge1xuICAvLyBhc3luYyBlZGdlIGNhc2UgIzY1NjY6IGlubmVyIGNsaWNrIGV2ZW50IHRyaWdnZXJzIHBhdGNoLCBldmVudCBoYW5kbGVyXG4gIC8vIGF0dGFjaGVkIHRvIG91dGVyIGVsZW1lbnQgZHVyaW5nIHBhdGNoLCBhbmQgdHJpZ2dlcmVkIGFnYWluLiBUaGlzXG4gIC8vIGhhcHBlbnMgYmVjYXVzZSBicm93c2VycyBmaXJlIG1pY3JvdGFzayB0aWNrcyBiZXR3ZWVuIGV2ZW50IHByb3BhZ2F0aW9uLlxuICAvLyB0aGUgc29sdXRpb24gaXMgc2ltcGxlOiB3ZSBzYXZlIHRoZSB0aW1lc3RhbXAgd2hlbiBhIGhhbmRsZXIgaXMgYXR0YWNoZWQsXG4gIC8vIGFuZCB0aGUgaGFuZGxlciB3b3VsZCBvbmx5IGZpcmUgaWYgdGhlIGV2ZW50IHBhc3NlZCB0byBpdCB3YXMgZmlyZWRcbiAgLy8gQUZURVIgaXQgd2FzIGF0dGFjaGVkLlxuICBpZiAodXNlTWljcm90YXNrRml4KSB7XG4gICAgdmFyIGF0dGFjaGVkVGltZXN0YW1wID0gY3VycmVudEZsdXNoVGltZXN0YW1wO1xuICAgIHZhciBvcmlnaW5hbCA9IGhhbmRsZXI7XG4gICAgaGFuZGxlciA9IG9yaWdpbmFsLl93cmFwcGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgLy8gbm8gYnViYmxpbmcsIHNob3VsZCBhbHdheXMgZmlyZS5cbiAgICAgICAgLy8gdGhpcyBpcyBqdXN0IGEgc2FmZXR5IG5ldCBpbiBjYXNlIGV2ZW50LnRpbWVTdGFtcCBpcyB1bnJlbGlhYmxlIGluXG4gICAgICAgIC8vIGNlcnRhaW4gd2VpcmQgZW52aXJvbm1lbnRzLi4uXG4gICAgICAgIGUudGFyZ2V0ID09PSBlLmN1cnJlbnRUYXJnZXQgfHxcbiAgICAgICAgLy8gZXZlbnQgaXMgZmlyZWQgYWZ0ZXIgaGFuZGxlciBhdHRhY2htZW50XG4gICAgICAgIGUudGltZVN0YW1wID49IGF0dGFjaGVkVGltZXN0YW1wIHx8XG4gICAgICAgIC8vIGJhaWwgZm9yIGVudmlyb25tZW50cyB0aGF0IGhhdmUgYnVnZ3kgZXZlbnQudGltZVN0YW1wIGltcGxlbWVudGF0aW9uc1xuICAgICAgICAvLyAjOTQ2MiBpT1MgOSBidWc6IGV2ZW50LnRpbWVTdGFtcCBpcyAwIGFmdGVyIGhpc3RvcnkucHVzaFN0YXRlXG4gICAgICAgIC8vICM5NjgxIFF0V2ViRW5naW5lIGV2ZW50LnRpbWVTdGFtcCBpcyBuZWdhdGl2ZSB2YWx1ZVxuICAgICAgICBlLnRpbWVTdGFtcCA8PSAwIHx8XG4gICAgICAgIC8vICM5NDQ4IGJhaWwgaWYgZXZlbnQgaXMgZmlyZWQgaW4gYW5vdGhlciBkb2N1bWVudCBpbiBhIG11bHRpLXBhZ2VcbiAgICAgICAgLy8gZWxlY3Ryb24vbncuanMgYXBwLCBzaW5jZSBldmVudC50aW1lU3RhbXAgd2lsbCBiZSB1c2luZyBhIGRpZmZlcmVudFxuICAgICAgICAvLyBzdGFydGluZyByZWZlcmVuY2VcbiAgICAgICAgZS50YXJnZXQub3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnRcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgdGFyZ2V0JDEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICBuYW1lLFxuICAgIGhhbmRsZXIsXG4gICAgc3VwcG9ydHNQYXNzaXZlXG4gICAgICA/IHsgY2FwdHVyZTogY2FwdHVyZSwgcGFzc2l2ZTogcGFzc2l2ZSB9XG4gICAgICA6IGNhcHR1cmVcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDIgKFxuICBuYW1lLFxuICBoYW5kbGVyLFxuICBjYXB0dXJlLFxuICBfdGFyZ2V0XG4pIHtcbiAgKF90YXJnZXQgfHwgdGFyZ2V0JDEpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgbmFtZSxcbiAgICBoYW5kbGVyLl93cmFwcGVyIHx8IGhhbmRsZXIsXG4gICAgY2FwdHVyZVxuICApO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVET01MaXN0ZW5lcnMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLm9uKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEub24pKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIG9uID0gdm5vZGUuZGF0YS5vbiB8fCB7fTtcbiAgdmFyIG9sZE9uID0gb2xkVm5vZGUuZGF0YS5vbiB8fCB7fTtcbiAgdGFyZ2V0JDEgPSB2bm9kZS5lbG07XG4gIG5vcm1hbGl6ZUV2ZW50cyhvbik7XG4gIHVwZGF0ZUxpc3RlbmVycyhvbiwgb2xkT24sIGFkZCQxLCByZW1vdmUkMiwgY3JlYXRlT25jZUhhbmRsZXIkMSwgdm5vZGUuY29udGV4dCk7XG4gIHRhcmdldCQxID0gdW5kZWZpbmVkO1xufVxuXG52YXIgZXZlbnRzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTUxpc3RlbmVycyxcbiAgdXBkYXRlOiB1cGRhdGVET01MaXN0ZW5lcnNcbn07XG5cbi8qICAqL1xuXG52YXIgc3ZnQ29udGFpbmVyO1xuXG5mdW5jdGlvbiB1cGRhdGVET01Qcm9wcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEuZG9tUHJvcHMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5kb21Qcm9wcykpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIga2V5LCBjdXI7XG4gIHZhciBlbG0gPSB2bm9kZS5lbG07XG4gIHZhciBvbGRQcm9wcyA9IG9sZFZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIHZhciBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIC8vIGNsb25lIG9ic2VydmVkIG9iamVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBpdFxuICBpZiAoaXNEZWYocHJvcHMuX19vYl9fKSkge1xuICAgIHByb3BzID0gdm5vZGUuZGF0YS5kb21Qcm9wcyA9IGV4dGVuZCh7fSwgcHJvcHMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gb2xkUHJvcHMpIHtcbiAgICBpZiAoIShrZXkgaW4gcHJvcHMpKSB7XG4gICAgICBlbG1ba2V5XSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoa2V5IGluIHByb3BzKSB7XG4gICAgY3VyID0gcHJvcHNba2V5XTtcbiAgICAvLyBpZ25vcmUgY2hpbGRyZW4gaWYgdGhlIG5vZGUgaGFzIHRleHRDb250ZW50IG9yIGlubmVySFRNTCxcbiAgICAvLyBhcyB0aGVzZSB3aWxsIHRocm93IGF3YXkgZXhpc3RpbmcgRE9NIG5vZGVzIGFuZCBjYXVzZSByZW1vdmFsIGVycm9yc1xuICAgIC8vIG9uIHN1YnNlcXVlbnQgcGF0Y2hlcyAoIzMzNjApXG4gICAgaWYgKGtleSA9PT0gJ3RleHRDb250ZW50JyB8fCBrZXkgPT09ICdpbm5lckhUTUwnKSB7XG4gICAgICBpZiAodm5vZGUuY2hpbGRyZW4pIHsgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDsgfVxuICAgICAgaWYgKGN1ciA9PT0gb2xkUHJvcHNba2V5XSkgeyBjb250aW51ZSB9XG4gICAgICAvLyAjNjYwMSB3b3JrIGFyb3VuZCBDaHJvbWUgdmVyc2lvbiA8PSA1NSBidWcgd2hlcmUgc2luZ2xlIHRleHROb2RlXG4gICAgICAvLyByZXBsYWNlZCBieSBpbm5lckhUTUwvdGV4dENvbnRlbnQgcmV0YWlucyBpdHMgcGFyZW50Tm9kZSBwcm9wZXJ0eVxuICAgICAgaWYgKGVsbS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBlbG0ucmVtb3ZlQ2hpbGQoZWxtLmNoaWxkTm9kZXNbMF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICd2YWx1ZScgJiYgZWxtLnRhZ05hbWUgIT09ICdQUk9HUkVTUycpIHtcbiAgICAgIC8vIHN0b3JlIHZhbHVlIGFzIF92YWx1ZSBhcyB3ZWxsIHNpbmNlXG4gICAgICAvLyBub24tc3RyaW5nIHZhbHVlcyB3aWxsIGJlIHN0cmluZ2lmaWVkXG4gICAgICBlbG0uX3ZhbHVlID0gY3VyO1xuICAgICAgLy8gYXZvaWQgcmVzZXR0aW5nIGN1cnNvciBwb3NpdGlvbiB3aGVuIHZhbHVlIGlzIHRoZSBzYW1lXG4gICAgICB2YXIgc3RyQ3VyID0gaXNVbmRlZihjdXIpID8gJycgOiBTdHJpbmcoY3VyKTtcbiAgICAgIGlmIChzaG91bGRVcGRhdGVWYWx1ZShlbG0sIHN0ckN1cikpIHtcbiAgICAgICAgZWxtLnZhbHVlID0gc3RyQ3VyO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaW5uZXJIVE1MJyAmJiBpc1NWRyhlbG0udGFnTmFtZSkgJiYgaXNVbmRlZihlbG0uaW5uZXJIVE1MKSkge1xuICAgICAgLy8gSUUgZG9lc24ndCBzdXBwb3J0IGlubmVySFRNTCBmb3IgU1ZHIGVsZW1lbnRzXG4gICAgICBzdmdDb250YWluZXIgPSBzdmdDb250YWluZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBzdmdDb250YWluZXIuaW5uZXJIVE1MID0gXCI8c3ZnPlwiICsgY3VyICsgXCI8L3N2Zz5cIjtcbiAgICAgIHZhciBzdmcgPSBzdmdDb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgIHdoaWxlIChlbG0uZmlyc3RDaGlsZCkge1xuICAgICAgICBlbG0ucmVtb3ZlQ2hpbGQoZWxtLmZpcnN0Q2hpbGQpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHN2Zy5maXJzdENoaWxkKSB7XG4gICAgICAgIGVsbS5hcHBlbmRDaGlsZChzdmcuZmlyc3RDaGlsZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIC8vIHNraXAgdGhlIHVwZGF0ZSBpZiBvbGQgYW5kIG5ldyBWRE9NIHN0YXRlIGlzIHRoZSBzYW1lLlxuICAgICAgLy8gYHZhbHVlYCBpcyBoYW5kbGVkIHNlcGFyYXRlbHkgYmVjYXVzZSB0aGUgRE9NIHZhbHVlIG1heSBiZSB0ZW1wb3JhcmlseVxuICAgICAgLy8gb3V0IG9mIHN5bmMgd2l0aCBWRE9NIHN0YXRlIGR1ZSB0byBmb2N1cywgY29tcG9zaXRpb24gYW5kIG1vZGlmaWVycy5cbiAgICAgIC8vIFRoaXMgICM0NTIxIGJ5IHNraXBwaW5nIHRoZSB1bm5lY2VzYXJyeSBgY2hlY2tlZGAgdXBkYXRlLlxuICAgICAgY3VyICE9PSBvbGRQcm9wc1trZXldXG4gICAgKSB7XG4gICAgICAvLyBzb21lIHByb3BlcnR5IHVwZGF0ZXMgY2FuIHRocm93XG4gICAgICAvLyBlLmcuIGB2YWx1ZWAgb24gPHByb2dyZXNzPiB3LyBub24tZmluaXRlIHZhbHVlXG4gICAgICB0cnkge1xuICAgICAgICBlbG1ba2V5XSA9IGN1cjtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfVxuICB9XG59XG5cbi8vIGNoZWNrIHBsYXRmb3Jtcy93ZWIvdXRpbC9hdHRycy5qcyBhY2NlcHRWYWx1ZVxuXG5cbmZ1bmN0aW9uIHNob3VsZFVwZGF0ZVZhbHVlIChlbG0sIGNoZWNrVmFsKSB7XG4gIHJldHVybiAoIWVsbS5jb21wb3NpbmcgJiYgKFxuICAgIGVsbS50YWdOYW1lID09PSAnT1BUSU9OJyB8fFxuICAgIGlzTm90SW5Gb2N1c0FuZERpcnR5KGVsbSwgY2hlY2tWYWwpIHx8XG4gICAgaXNEaXJ0eVdpdGhNb2RpZmllcnMoZWxtLCBjaGVja1ZhbClcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNOb3RJbkZvY3VzQW5kRGlydHkgKGVsbSwgY2hlY2tWYWwpIHtcbiAgLy8gcmV0dXJuIHRydWUgd2hlbiB0ZXh0Ym94ICgubnVtYmVyIGFuZCAudHJpbSkgbG9zZXMgZm9jdXMgYW5kIGl0cyB2YWx1ZSBpc1xuICAvLyBub3QgZXF1YWwgdG8gdGhlIHVwZGF0ZWQgdmFsdWVcbiAgdmFyIG5vdEluRm9jdXMgPSB0cnVlO1xuICAvLyAjNjE1N1xuICAvLyB3b3JrIGFyb3VuZCBJRSBidWcgd2hlbiBhY2Nlc3NpbmcgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbiBhbiBpZnJhbWVcbiAgdHJ5IHsgbm90SW5Gb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGVsbTsgfSBjYXRjaCAoZSkge31cbiAgcmV0dXJuIG5vdEluRm9jdXMgJiYgZWxtLnZhbHVlICE9PSBjaGVja1ZhbFxufVxuXG5mdW5jdGlvbiBpc0RpcnR5V2l0aE1vZGlmaWVycyAoZWxtLCBuZXdWYWwpIHtcbiAgdmFyIHZhbHVlID0gZWxtLnZhbHVlO1xuICB2YXIgbW9kaWZpZXJzID0gZWxtLl92TW9kaWZpZXJzOyAvLyBpbmplY3RlZCBieSB2LW1vZGVsIHJ1bnRpbWVcbiAgaWYgKGlzRGVmKG1vZGlmaWVycykpIHtcbiAgICBpZiAobW9kaWZpZXJzLm51bWJlcikge1xuICAgICAgcmV0dXJuIHRvTnVtYmVyKHZhbHVlKSAhPT0gdG9OdW1iZXIobmV3VmFsKVxuICAgIH1cbiAgICBpZiAobW9kaWZpZXJzLnRyaW0pIHtcbiAgICAgIHJldHVybiB2YWx1ZS50cmltKCkgIT09IG5ld1ZhbC50cmltKClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbHVlICE9PSBuZXdWYWxcbn1cblxudmFyIGRvbVByb3BzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTVByb3BzLFxuICB1cGRhdGU6IHVwZGF0ZURPTVByb3BzXG59O1xuXG4vKiAgKi9cblxudmFyIHBhcnNlU3R5bGVUZXh0ID0gY2FjaGVkKGZ1bmN0aW9uIChjc3NUZXh0KSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGxpc3REZWxpbWl0ZXIgPSAvOyg/IVteKF0qXFwpKS9nO1xuICB2YXIgcHJvcGVydHlEZWxpbWl0ZXIgPSAvOiguKykvO1xuICBjc3NUZXh0LnNwbGl0KGxpc3REZWxpbWl0ZXIpLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlEZWxpbWl0ZXIpO1xuICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJlc1t0bXBbMF0udHJpbSgpXSA9IHRtcFsxXS50cmltKCkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vLyBtZXJnZSBzdGF0aWMgYW5kIGR5bmFtaWMgc3R5bGUgZGF0YSBvbiB0aGUgc2FtZSB2bm9kZVxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGVEYXRhIChkYXRhKSB7XG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyhkYXRhLnN0eWxlKTtcbiAgLy8gc3RhdGljIHN0eWxlIGlzIHByZS1wcm9jZXNzZWQgaW50byBhbiBvYmplY3QgZHVyaW5nIGNvbXBpbGF0aW9uXG4gIC8vIGFuZCBpcyBhbHdheXMgYSBmcmVzaCBvYmplY3QsIHNvIGl0J3Mgc2FmZSB0byBtZXJnZSBpbnRvIGl0XG4gIHJldHVybiBkYXRhLnN0YXRpY1N0eWxlXG4gICAgPyBleHRlbmQoZGF0YS5zdGF0aWNTdHlsZSwgc3R5bGUpXG4gICAgOiBzdHlsZVxufVxuXG4vLyBub3JtYWxpemUgcG9zc2libGUgYXJyYXkgLyBzdHJpbmcgdmFsdWVzIGludG8gT2JqZWN0XG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZUJpbmRpbmcgKGJpbmRpbmdTdHlsZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShiaW5kaW5nU3R5bGUpKSB7XG4gICAgcmV0dXJuIHRvT2JqZWN0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICBpZiAodHlwZW9mIGJpbmRpbmdTdHlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyc2VTdHlsZVRleHQoYmluZGluZ1N0eWxlKVxuICB9XG4gIHJldHVybiBiaW5kaW5nU3R5bGVcbn1cblxuLyoqXG4gKiBwYXJlbnQgY29tcG9uZW50IHN0eWxlIHNob3VsZCBiZSBhZnRlciBjaGlsZCdzXG4gKiBzbyB0aGF0IHBhcmVudCBjb21wb25lbnQncyBzdHlsZSBjb3VsZCBvdmVycmlkZSBpdFxuICovXG5mdW5jdGlvbiBnZXRTdHlsZSAodm5vZGUsIGNoZWNrQ2hpbGQpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgc3R5bGVEYXRhO1xuXG4gIGlmIChjaGVja0NoaWxkKSB7XG4gICAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoXG4gICAgICAgIGNoaWxkTm9kZSAmJiBjaGlsZE5vZGUuZGF0YSAmJlxuICAgICAgICAoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKGNoaWxkTm9kZS5kYXRhKSlcbiAgICAgICkge1xuICAgICAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICgoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKHZub2RlLmRhdGEpKSkge1xuICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gIH1cblxuICB2YXIgcGFyZW50Tm9kZSA9IHZub2RlO1xuICB3aGlsZSAoKHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudCkpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5kYXRhICYmIChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEocGFyZW50Tm9kZS5kYXRhKSkpIHtcbiAgICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBjc3NWYXJSRSA9IC9eLS0vO1xudmFyIGltcG9ydGFudFJFID0gL1xccyohaW1wb3J0YW50JC87XG52YXIgc2V0UHJvcCA9IGZ1bmN0aW9uIChlbCwgbmFtZSwgdmFsKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoY3NzVmFyUkUudGVzdChuYW1lKSkge1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbCk7XG4gIH0gZWxzZSBpZiAoaW1wb3J0YW50UkUudGVzdCh2YWwpKSB7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoaHlwaGVuYXRlKG5hbWUpLCB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgJycpLCAnaW1wb3J0YW50Jyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplKG5hbWUpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIC8vIFN1cHBvcnQgdmFsdWVzIGFycmF5IGNyZWF0ZWQgYnkgYXV0b3ByZWZpeGVyLCBlLmcuXG4gICAgICAvLyB7ZGlzcGxheTogW1wiLXdlYmtpdC1ib3hcIiwgXCItbXMtZmxleGJveFwiLCBcImZsZXhcIl19XG4gICAgICAvLyBTZXQgdGhlbSBvbmUgYnkgb25lLCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBvbmx5IHNldCB0aG9zZSBpdCBjYW4gcmVjb2duaXplXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdmFsLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbFtpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVdID0gdmFsO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHZlbmRvck5hbWVzID0gWydXZWJraXQnLCAnTW96JywgJ21zJ107XG5cbnZhciBlbXB0eVN0eWxlO1xudmFyIG5vcm1hbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAocHJvcCkge1xuICBlbXB0eVN0eWxlID0gZW1wdHlTdHlsZSB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTtcbiAgcHJvcCA9IGNhbWVsaXplKHByb3ApO1xuICBpZiAocHJvcCAhPT0gJ2ZpbHRlcicgJiYgKHByb3AgaW4gZW1wdHlTdHlsZSkpIHtcbiAgICByZXR1cm4gcHJvcFxuICB9XG4gIHZhciBjYXBOYW1lID0gcHJvcC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3Auc2xpY2UoMSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmVuZG9yTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbmFtZSA9IHZlbmRvck5hbWVzW2ldICsgY2FwTmFtZTtcbiAgICBpZiAobmFtZSBpbiBlbXB0eVN0eWxlKSB7XG4gICAgICByZXR1cm4gbmFtZVxuICAgIH1cbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG5cbiAgaWYgKGlzVW5kZWYoZGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihkYXRhLnN0eWxlKSAmJlxuICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihvbGREYXRhLnN0eWxlKVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjdXIsIG5hbWU7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcbiAgdmFyIG9sZFN0YXRpY1N0eWxlID0gb2xkRGF0YS5zdGF0aWNTdHlsZTtcbiAgdmFyIG9sZFN0eWxlQmluZGluZyA9IG9sZERhdGEubm9ybWFsaXplZFN0eWxlIHx8IG9sZERhdGEuc3R5bGUgfHwge307XG5cbiAgLy8gaWYgc3RhdGljIHN0eWxlIGV4aXN0cywgc3R5bGViaW5kaW5nIGFscmVhZHkgbWVyZ2VkIGludG8gaXQgd2hlbiBkb2luZyBub3JtYWxpemVTdHlsZURhdGFcbiAgdmFyIG9sZFN0eWxlID0gb2xkU3RhdGljU3R5bGUgfHwgb2xkU3R5bGVCaW5kaW5nO1xuXG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyh2bm9kZS5kYXRhLnN0eWxlKSB8fCB7fTtcblxuICAvLyBzdG9yZSBub3JtYWxpemVkIHN0eWxlIHVuZGVyIGEgZGlmZmVyZW50IGtleSBmb3IgbmV4dCBkaWZmXG4gIC8vIG1ha2Ugc3VyZSB0byBjbG9uZSBpdCBpZiBpdCdzIHJlYWN0aXZlLCBzaW5jZSB0aGUgdXNlciBsaWtlbHkgd2FudHNcbiAgLy8gdG8gbXV0YXRlIGl0LlxuICB2bm9kZS5kYXRhLm5vcm1hbGl6ZWRTdHlsZSA9IGlzRGVmKHN0eWxlLl9fb2JfXylcbiAgICA/IGV4dGVuZCh7fSwgc3R5bGUpXG4gICAgOiBzdHlsZTtcblxuICB2YXIgbmV3U3R5bGUgPSBnZXRTdHlsZSh2bm9kZSwgdHJ1ZSk7XG5cbiAgZm9yIChuYW1lIGluIG9sZFN0eWxlKSB7XG4gICAgaWYgKGlzVW5kZWYobmV3U3R5bGVbbmFtZV0pKSB7XG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCAnJyk7XG4gICAgfVxuICB9XG4gIGZvciAobmFtZSBpbiBuZXdTdHlsZSkge1xuICAgIGN1ciA9IG5ld1N0eWxlW25hbWVdO1xuICAgIGlmIChjdXIgIT09IG9sZFN0eWxlW25hbWVdKSB7XG4gICAgICAvLyBpZTkgc2V0dGluZyB0byBudWxsIGhhcyBubyBlZmZlY3QsIG11c3QgdXNlIGVtcHR5IHN0cmluZ1xuICAgICAgc2V0UHJvcChlbCwgbmFtZSwgY3VyID09IG51bGwgPyAnJyA6IGN1cik7XG4gICAgfVxuICB9XG59XG5cbnZhciBzdHlsZSA9IHtcbiAgY3JlYXRlOiB1cGRhdGVTdHlsZSxcbiAgdXBkYXRlOiB1cGRhdGVTdHlsZVxufTtcblxuLyogICovXG5cbnZhciB3aGl0ZXNwYWNlUkUgPSAvXFxzKy87XG5cbi8qKlxuICogQWRkIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gYWRkQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQod2hpdGVzcGFjZVJFKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3QuYWRkKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZChjbHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIGlmIChjdXIuaW5kZXhPZignICcgKyBjbHMgKyAnICcpIDwgMCkge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIChjdXIgKyBjbHMpLnRyaW0oKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQod2hpdGVzcGFjZVJFKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShjbHMpO1xuICAgIH1cbiAgICBpZiAoIWVsLmNsYXNzTGlzdC5sZW5ndGgpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGN1ciA9IFwiIFwiICsgKGVsLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJykgKyBcIiBcIjtcbiAgICB2YXIgdGFyID0gJyAnICsgY2xzICsgJyAnO1xuICAgIHdoaWxlIChjdXIuaW5kZXhPZih0YXIpID49IDApIHtcbiAgICAgIGN1ciA9IGN1ci5yZXBsYWNlKHRhciwgJyAnKTtcbiAgICB9XG4gICAgY3VyID0gY3VyLnRyaW0oKTtcbiAgICBpZiAoY3VyKSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY3VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVRyYW5zaXRpb24gKGRlZiQkMSkge1xuICBpZiAoIWRlZiQkMSkge1xuICAgIHJldHVyblxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICh0eXBlb2YgZGVmJCQxID09PSAnb2JqZWN0Jykge1xuICAgIHZhciByZXMgPSB7fTtcbiAgICBpZiAoZGVmJCQxLmNzcyAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuZChyZXMsIGF1dG9Dc3NUcmFuc2l0aW9uKGRlZiQkMS5uYW1lIHx8ICd2JykpO1xuICAgIH1cbiAgICBleHRlbmQocmVzLCBkZWYkJDEpO1xuICAgIHJldHVybiByZXNcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGVmJCQxID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEpXG4gIH1cbn1cblxudmFyIGF1dG9Dc3NUcmFuc2l0aW9uID0gY2FjaGVkKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiB7XG4gICAgZW50ZXJDbGFzczogKG5hbWUgKyBcIi1lbnRlclwiKSxcbiAgICBlbnRlclRvQ2xhc3M6IChuYW1lICsgXCItZW50ZXItdG9cIiksXG4gICAgZW50ZXJBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1lbnRlci1hY3RpdmVcIiksXG4gICAgbGVhdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZVwiKSxcbiAgICBsZWF2ZVRvQ2xhc3M6IChuYW1lICsgXCItbGVhdmUtdG9cIiksXG4gICAgbGVhdmVBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZS1hY3RpdmVcIilcbiAgfVxufSk7XG5cbnZhciBoYXNUcmFuc2l0aW9uID0gaW5Ccm93c2VyICYmICFpc0lFOTtcbnZhciBUUkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nO1xudmFyIEFOSU1BVElPTiA9ICdhbmltYXRpb24nO1xuXG4vLyBUcmFuc2l0aW9uIHByb3BlcnR5L2V2ZW50IHNuaWZmaW5nXG52YXIgdHJhbnNpdGlvblByb3AgPSAndHJhbnNpdGlvbic7XG52YXIgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3RyYW5zaXRpb25lbmQnO1xudmFyIGFuaW1hdGlvblByb3AgPSAnYW5pbWF0aW9uJztcbnZhciBhbmltYXRpb25FbmRFdmVudCA9ICdhbmltYXRpb25lbmQnO1xuaWYgKGhhc1RyYW5zaXRpb24pIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh3aW5kb3cub250cmFuc2l0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgdHJhbnNpdGlvblByb3AgPSAnV2Via2l0VHJhbnNpdGlvbic7XG4gICAgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3dlYmtpdFRyYW5zaXRpb25FbmQnO1xuICB9XG4gIGlmICh3aW5kb3cub25hbmltYXRpb25lbmQgPT09IHVuZGVmaW5lZCAmJlxuICAgIHdpbmRvdy5vbndlYmtpdGFuaW1hdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIGFuaW1hdGlvblByb3AgPSAnV2Via2l0QW5pbWF0aW9uJztcbiAgICBhbmltYXRpb25FbmRFdmVudCA9ICd3ZWJraXRBbmltYXRpb25FbmQnO1xuICB9XG59XG5cbi8vIGJpbmRpbmcgdG8gd2luZG93IGlzIG5lY2Vzc2FyeSB0byBtYWtlIGhvdCByZWxvYWQgd29yayBpbiBJRSBpbiBzdHJpY3QgbW9kZVxudmFyIHJhZiA9IGluQnJvd3NlclxuICA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpXG4gICAgOiBzZXRUaW1lb3V0XG4gIDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gZnVuY3Rpb24gKGZuKSB7IHJldHVybiBmbigpOyB9O1xuXG5mdW5jdGlvbiBuZXh0RnJhbWUgKGZuKSB7XG4gIHJhZihmdW5jdGlvbiAoKSB7XG4gICAgcmFmKGZuKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZFRyYW5zaXRpb25DbGFzcyAoZWwsIGNscykge1xuICB2YXIgdHJhbnNpdGlvbkNsYXNzZXMgPSBlbC5fdHJhbnNpdGlvbkNsYXNzZXMgfHwgKGVsLl90cmFuc2l0aW9uQ2xhc3NlcyA9IFtdKTtcbiAgaWYgKHRyYW5zaXRpb25DbGFzc2VzLmluZGV4T2YoY2xzKSA8IDApIHtcbiAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5wdXNoKGNscyk7XG4gICAgYWRkQ2xhc3MoZWwsIGNscyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlVHJhbnNpdGlvbkNsYXNzIChlbCwgY2xzKSB7XG4gIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICByZW1vdmUoZWwuX3RyYW5zaXRpb25DbGFzc2VzLCBjbHMpO1xuICB9XG4gIHJlbW92ZUNsYXNzKGVsLCBjbHMpO1xufVxuXG5mdW5jdGlvbiB3aGVuVHJhbnNpdGlvbkVuZHMgKFxuICBlbCxcbiAgZXhwZWN0ZWRUeXBlLFxuICBjYlxuKSB7XG4gIHZhciByZWYgPSBnZXRUcmFuc2l0aW9uSW5mbyhlbCwgZXhwZWN0ZWRUeXBlKTtcbiAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgdmFyIHRpbWVvdXQgPSByZWYudGltZW91dDtcbiAgdmFyIHByb3BDb3VudCA9IHJlZi5wcm9wQ291bnQ7XG4gIGlmICghdHlwZSkgeyByZXR1cm4gY2IoKSB9XG4gIHZhciBldmVudCA9IHR5cGUgPT09IFRSQU5TSVRJT04gPyB0cmFuc2l0aW9uRW5kRXZlbnQgOiBhbmltYXRpb25FbmRFdmVudDtcbiAgdmFyIGVuZGVkID0gMDtcbiAgdmFyIGVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBvbkVuZCk7XG4gICAgY2IoKTtcbiAgfTtcbiAgdmFyIG9uRW5kID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZS50YXJnZXQgPT09IGVsKSB7XG4gICAgICBpZiAoKytlbmRlZCA+PSBwcm9wQ291bnQpIHtcbiAgICAgICAgZW5kKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZW5kZWQgPCBwcm9wQ291bnQpIHtcbiAgICAgIGVuZCgpO1xuICAgIH1cbiAgfSwgdGltZW91dCArIDEpO1xuICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBvbkVuZCk7XG59XG5cbnZhciB0cmFuc2Zvcm1SRSA9IC9cXGIodHJhbnNmb3JtfGFsbCkoLHwkKS87XG5cbmZ1bmN0aW9uIGdldFRyYW5zaXRpb25JbmZvIChlbCwgZXhwZWN0ZWRUeXBlKSB7XG4gIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gIC8vIEpTRE9NIG1heSByZXR1cm4gdW5kZWZpbmVkIGZvciB0cmFuc2l0aW9uIHByb3BlcnRpZXNcbiAgdmFyIHRyYW5zaXRpb25EZWxheXMgPSAoc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ0RlbGF5J10gfHwgJycpLnNwbGl0KCcsICcpO1xuICB2YXIgdHJhbnNpdGlvbkR1cmF0aW9ucyA9IChzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRHVyYXRpb24nXSB8fCAnJykuc3BsaXQoJywgJyk7XG4gIHZhciB0cmFuc2l0aW9uVGltZW91dCA9IGdldFRpbWVvdXQodHJhbnNpdGlvbkRlbGF5cywgdHJhbnNpdGlvbkR1cmF0aW9ucyk7XG4gIHZhciBhbmltYXRpb25EZWxheXMgPSAoc3R5bGVzW2FuaW1hdGlvblByb3AgKyAnRGVsYXknXSB8fCAnJykuc3BsaXQoJywgJyk7XG4gIHZhciBhbmltYXRpb25EdXJhdGlvbnMgPSAoc3R5bGVzW2FuaW1hdGlvblByb3AgKyAnRHVyYXRpb24nXSB8fCAnJykuc3BsaXQoJywgJyk7XG4gIHZhciBhbmltYXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dChhbmltYXRpb25EZWxheXMsIGFuaW1hdGlvbkR1cmF0aW9ucyk7XG5cbiAgdmFyIHR5cGU7XG4gIHZhciB0aW1lb3V0ID0gMDtcbiAgdmFyIHByb3BDb3VudCA9IDA7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZXhwZWN0ZWRUeXBlID09PSBUUkFOU0lUSU9OKSB7XG4gICAgaWYgKHRyYW5zaXRpb25UaW1lb3V0ID4gMCkge1xuICAgICAgdHlwZSA9IFRSQU5TSVRJT047XG4gICAgICB0aW1lb3V0ID0gdHJhbnNpdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBBTklNQVRJT04pIHtcbiAgICBpZiAoYW5pbWF0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBBTklNQVRJT047XG4gICAgICB0aW1lb3V0ID0gYW5pbWF0aW9uVGltZW91dDtcbiAgICAgIHByb3BDb3VudCA9IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRpbWVvdXQgPSBNYXRoLm1heCh0cmFuc2l0aW9uVGltZW91dCwgYW5pbWF0aW9uVGltZW91dCk7XG4gICAgdHlwZSA9IHRpbWVvdXQgPiAwXG4gICAgICA/IHRyYW5zaXRpb25UaW1lb3V0ID4gYW5pbWF0aW9uVGltZW91dFxuICAgICAgICA/IFRSQU5TSVRJT05cbiAgICAgICAgOiBBTklNQVRJT05cbiAgICAgIDogbnVsbDtcbiAgICBwcm9wQ291bnQgPSB0eXBlXG4gICAgICA/IHR5cGUgPT09IFRSQU5TSVRJT05cbiAgICAgICAgPyB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aFxuICAgICAgICA6IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGhcbiAgICAgIDogMDtcbiAgfVxuICB2YXIgaGFzVHJhbnNmb3JtID1cbiAgICB0eXBlID09PSBUUkFOU0lUSU9OICYmXG4gICAgdHJhbnNmb3JtUkUudGVzdChzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnUHJvcGVydHknXSk7XG4gIHJldHVybiB7XG4gICAgdHlwZTogdHlwZSxcbiAgICB0aW1lb3V0OiB0aW1lb3V0LFxuICAgIHByb3BDb3VudDogcHJvcENvdW50LFxuICAgIGhhc1RyYW5zZm9ybTogaGFzVHJhbnNmb3JtXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VGltZW91dCAoZGVsYXlzLCBkdXJhdGlvbnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgd2hpbGUgKGRlbGF5cy5sZW5ndGggPCBkdXJhdGlvbnMubGVuZ3RoKSB7XG4gICAgZGVsYXlzID0gZGVsYXlzLmNvbmNhdChkZWxheXMpO1xuICB9XG5cbiAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsIGR1cmF0aW9ucy5tYXAoZnVuY3Rpb24gKGQsIGkpIHtcbiAgICByZXR1cm4gdG9NcyhkKSArIHRvTXMoZGVsYXlzW2ldKVxuICB9KSlcbn1cblxuLy8gT2xkIHZlcnNpb25zIG9mIENocm9taXVtIChiZWxvdyA2MS4wLjMxNjMuMTAwKSBmb3JtYXRzIGZsb2F0aW5nIHBvaW50ZXIgbnVtYmVyc1xuLy8gaW4gYSBsb2NhbGUtZGVwZW5kZW50IHdheSwgdXNpbmcgYSBjb21tYSBpbnN0ZWFkIG9mIGEgZG90LlxuLy8gSWYgY29tbWEgaXMgbm90IHJlcGxhY2VkIHdpdGggYSBkb3QsIHRoZSBpbnB1dCB3aWxsIGJlIHJvdW5kZWQgZG93biAoaS5lLiBhY3Rpbmdcbi8vIGFzIGEgZmxvb3IgZnVuY3Rpb24pIGNhdXNpbmcgdW5leHBlY3RlZCBiZWhhdmlvcnNcbmZ1bmN0aW9uIHRvTXMgKHMpIHtcbiAgcmV0dXJuIE51bWJlcihzLnNsaWNlKDAsIC0xKS5yZXBsYWNlKCcsJywgJy4nKSkgKiAxMDAwXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnRlciAodm5vZGUsIHRvZ2dsZURpc3BsYXkpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuXG4gIC8vIGNhbGwgbGVhdmUgY2FsbGJhY2sgbm93XG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikpIHtcbiAgICBlbC5fbGVhdmVDYi5jYW5jZWxsZWQgPSB0cnVlO1xuICAgIGVsLl9sZWF2ZUNiKCk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmIChpc1VuZGVmKGRhdGEpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSB8fCBlbC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNzcyA9IGRhdGEuY3NzO1xuICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGVudGVyQ2xhc3MgPSBkYXRhLmVudGVyQ2xhc3M7XG4gIHZhciBlbnRlclRvQ2xhc3MgPSBkYXRhLmVudGVyVG9DbGFzcztcbiAgdmFyIGVudGVyQWN0aXZlQ2xhc3MgPSBkYXRhLmVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciBhcHBlYXJDbGFzcyA9IGRhdGEuYXBwZWFyQ2xhc3M7XG4gIHZhciBhcHBlYXJUb0NsYXNzID0gZGF0YS5hcHBlYXJUb0NsYXNzO1xuICB2YXIgYXBwZWFyQWN0aXZlQ2xhc3MgPSBkYXRhLmFwcGVhckFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlRW50ZXIgPSBkYXRhLmJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXIgPSBkYXRhLmVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlciA9IGRhdGEuYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkID0gZGF0YS5lbnRlckNhbmNlbGxlZDtcbiAgdmFyIGJlZm9yZUFwcGVhciA9IGRhdGEuYmVmb3JlQXBwZWFyO1xuICB2YXIgYXBwZWFyID0gZGF0YS5hcHBlYXI7XG4gIHZhciBhZnRlckFwcGVhciA9IGRhdGEuYWZ0ZXJBcHBlYXI7XG4gIHZhciBhcHBlYXJDYW5jZWxsZWQgPSBkYXRhLmFwcGVhckNhbmNlbGxlZDtcbiAgdmFyIGR1cmF0aW9uID0gZGF0YS5kdXJhdGlvbjtcblxuICAvLyBhY3RpdmVJbnN0YW5jZSB3aWxsIGFsd2F5cyBiZSB0aGUgPHRyYW5zaXRpb24+IGNvbXBvbmVudCBtYW5hZ2luZyB0aGlzXG4gIC8vIHRyYW5zaXRpb24uIE9uZSBlZGdlIGNhc2UgdG8gY2hlY2sgaXMgd2hlbiB0aGUgPHRyYW5zaXRpb24+IGlzIHBsYWNlZFxuICAvLyBhcyB0aGUgcm9vdCBub2RlIG9mIGEgY2hpbGQgY29tcG9uZW50LiBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjaGVja1xuICAvLyA8dHJhbnNpdGlvbj4ncyBwYXJlbnQgZm9yIGFwcGVhciBjaGVjay5cbiAgdmFyIGNvbnRleHQgPSBhY3RpdmVJbnN0YW5jZTtcbiAgdmFyIHRyYW5zaXRpb25Ob2RlID0gYWN0aXZlSW5zdGFuY2UuJHZub2RlO1xuICB3aGlsZSAodHJhbnNpdGlvbk5vZGUgJiYgdHJhbnNpdGlvbk5vZGUucGFyZW50KSB7XG4gICAgY29udGV4dCA9IHRyYW5zaXRpb25Ob2RlLmNvbnRleHQ7XG4gICAgdHJhbnNpdGlvbk5vZGUgPSB0cmFuc2l0aW9uTm9kZS5wYXJlbnQ7XG4gIH1cblxuICB2YXIgaXNBcHBlYXIgPSAhY29udGV4dC5faXNNb3VudGVkIHx8ICF2bm9kZS5pc1Jvb3RJbnNlcnQ7XG5cbiAgaWYgKGlzQXBwZWFyICYmICFhcHBlYXIgJiYgYXBwZWFyICE9PSAnJykge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHN0YXJ0Q2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJDbGFzc1xuICAgID8gYXBwZWFyQ2xhc3NcbiAgICA6IGVudGVyQ2xhc3M7XG4gIHZhciBhY3RpdmVDbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhckFjdGl2ZUNsYXNzXG4gICAgPyBhcHBlYXJBY3RpdmVDbGFzc1xuICAgIDogZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFyIHRvQ2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJUb0NsYXNzXG4gICAgPyBhcHBlYXJUb0NsYXNzXG4gICAgOiBlbnRlclRvQ2xhc3M7XG5cbiAgdmFyIGJlZm9yZUVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYmVmb3JlQXBwZWFyIHx8IGJlZm9yZUVudGVyKVxuICAgIDogYmVmb3JlRW50ZXI7XG4gIHZhciBlbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKHR5cGVvZiBhcHBlYXIgPT09ICdmdW5jdGlvbicgPyBhcHBlYXIgOiBlbnRlcilcbiAgICA6IGVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGFmdGVyQXBwZWFyIHx8IGFmdGVyRW50ZXIpXG4gICAgOiBhZnRlckVudGVyO1xuICB2YXIgZW50ZXJDYW5jZWxsZWRIb29rID0gaXNBcHBlYXJcbiAgICA/IChhcHBlYXJDYW5jZWxsZWQgfHwgZW50ZXJDYW5jZWxsZWQpXG4gICAgOiBlbnRlckNhbmNlbGxlZDtcblxuICB2YXIgZXhwbGljaXRFbnRlckR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmVudGVyXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZXhwbGljaXRFbnRlckR1cmF0aW9uICE9IG51bGwpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlvbiwgJ2VudGVyJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGVudGVySG9vayk7XG5cbiAgdmFyIGNiID0gZWwuX2VudGVyQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgfVxuICAgICAgZW50ZXJDYW5jZWxsZWRIb29rICYmIGVudGVyQ2FuY2VsbGVkSG9vayhlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyRW50ZXJIb29rICYmIGFmdGVyRW50ZXJIb29rKGVsKTtcbiAgICB9XG4gICAgZWwuX2VudGVyQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAgIC8vIHJlbW92ZSBwZW5kaW5nIGxlYXZlIGVsZW1lbnQgb24gZW50ZXIgYnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29rXG4gICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUsICdpbnNlcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICAgIHZhciBwZW5kaW5nTm9kZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRpbmcgJiYgcGFyZW50Ll9wZW5kaW5nW3Zub2RlLmtleV07XG4gICAgICBpZiAocGVuZGluZ05vZGUgJiZcbiAgICAgICAgcGVuZGluZ05vZGUudGFnID09PSB2bm9kZS50YWcgJiZcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiXG4gICAgICApIHtcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiKCk7XG4gICAgICB9XG4gICAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzdGFydCBlbnRlciB0cmFuc2l0aW9uXG4gIGJlZm9yZUVudGVySG9vayAmJiBiZWZvcmVFbnRlckhvb2soZWwpO1xuICBpZiAoZXhwZWN0c0NTUykge1xuICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgICBpZiAoIWNiLmNhbmNlbGxlZCkge1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIHRvQ2xhc3MpO1xuICAgICAgICBpZiAoIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgICBpZiAoaXNWYWxpZER1cmF0aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlvbikpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIGV4cGxpY2l0RW50ZXJEdXJhdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZub2RlLmRhdGEuc2hvdykge1xuICAgIHRvZ2dsZURpc3BsYXkgJiYgdG9nZ2xlRGlzcGxheSgpO1xuICAgIGVudGVySG9vayAmJiBlbnRlckhvb2soZWwsIGNiKTtcbiAgfVxuXG4gIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgIGNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVhdmUgKHZub2RlLCBybSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8gY2FsbCBlbnRlciBjYWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSkge1xuICAgIGVsLl9lbnRlckNiLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2VudGVyQ2IoKTtcbiAgfVxuXG4gIHZhciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtcbiAgaWYgKGlzVW5kZWYoZGF0YSkgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm4gcm0oKVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBsZWF2ZUNsYXNzID0gZGF0YS5sZWF2ZUNsYXNzO1xuICB2YXIgbGVhdmVUb0NsYXNzID0gZGF0YS5sZWF2ZVRvQ2xhc3M7XG4gIHZhciBsZWF2ZUFjdGl2ZUNsYXNzID0gZGF0YS5sZWF2ZUFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlTGVhdmUgPSBkYXRhLmJlZm9yZUxlYXZlO1xuICB2YXIgbGVhdmUgPSBkYXRhLmxlYXZlO1xuICB2YXIgYWZ0ZXJMZWF2ZSA9IGRhdGEuYWZ0ZXJMZWF2ZTtcbiAgdmFyIGxlYXZlQ2FuY2VsbGVkID0gZGF0YS5sZWF2ZUNhbmNlbGxlZDtcbiAgdmFyIGRlbGF5TGVhdmUgPSBkYXRhLmRlbGF5TGVhdmU7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGxlYXZlKTtcblxuICB2YXIgZXhwbGljaXRMZWF2ZUR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmxlYXZlXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNEZWYoZXhwbGljaXRMZWF2ZUR1cmF0aW9uKSkge1xuICAgIGNoZWNrRHVyYXRpb24oZXhwbGljaXRMZWF2ZUR1cmF0aW9uLCAnbGVhdmUnLCB2bm9kZSk7XG4gIH1cblxuICB2YXIgY2IgPSBlbC5fbGVhdmVDYiA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChlbC5wYXJlbnROb2RlICYmIGVsLnBhcmVudE5vZGUuX3BlbmRpbmcpIHtcbiAgICAgIGVsLnBhcmVudE5vZGUuX3BlbmRpbmdbdm5vZGUua2V5XSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgfVxuICAgICAgbGVhdmVDYW5jZWxsZWQgJiYgbGVhdmVDYW5jZWxsZWQoZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgICAgYWZ0ZXJMZWF2ZSAmJiBhZnRlckxlYXZlKGVsKTtcbiAgICB9XG4gICAgZWwuX2xlYXZlQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoZGVsYXlMZWF2ZSkge1xuICAgIGRlbGF5TGVhdmUocGVyZm9ybUxlYXZlKTtcbiAgfSBlbHNlIHtcbiAgICBwZXJmb3JtTGVhdmUoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlcmZvcm1MZWF2ZSAoKSB7XG4gICAgLy8gdGhlIGRlbGF5ZWQgbGVhdmUgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZFxuICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyByZWNvcmQgbGVhdmluZyBlbGVtZW50XG4gICAgaWYgKCF2bm9kZS5kYXRhLnNob3cgJiYgZWwucGFyZW50Tm9kZSkge1xuICAgICAgKGVsLnBhcmVudE5vZGUuX3BlbmRpbmcgfHwgKGVsLnBhcmVudE5vZGUuX3BlbmRpbmcgPSB7fSkpWyh2bm9kZS5rZXkpXSA9IHZub2RlO1xuICAgIH1cbiAgICBiZWZvcmVMZWF2ZSAmJiBiZWZvcmVMZWF2ZShlbCk7XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgICAgaWYgKCFjYi5jYW5jZWxsZWQpIHtcbiAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgICAgICAgaWYgKCF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZER1cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbikpIHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dChjYiwgZXhwbGljaXRMZWF2ZUR1cmF0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxlYXZlICYmIGxlYXZlKGVsLCBjYik7XG4gICAgaWYgKCFleHBlY3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICBjYigpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBvbmx5IHVzZWQgaW4gZGV2IG1vZGVcbmZ1bmN0aW9uIGNoZWNrRHVyYXRpb24gKHZhbCwgbmFtZSwgdm5vZGUpIHtcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIG5vdCBhIHZhbGlkIG51bWJlciAtIFwiICtcbiAgICAgIFwiZ290IFwiICsgKEpTT04uc3RyaW5naWZ5KHZhbCkpICsgXCIuXCIsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAgfSBlbHNlIGlmIChpc05hTih2YWwpKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIE5hTiAtIFwiICtcbiAgICAgICd0aGUgZHVyYXRpb24gZXhwcmVzc2lvbiBtaWdodCBiZSBpbmNvcnJlY3QuJyxcbiAgICAgIHZub2RlLmNvbnRleHRcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWREdXJhdGlvbiAodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHRyYW5zaXRpb24gaG9vaydzIGFyZ3VtZW50IGxlbmd0aC4gVGhlIGhvb2sgbWF5IGJlOlxuICogLSBhIG1lcmdlZCBob29rIChpbnZva2VyKSB3aXRoIHRoZSBvcmlnaW5hbCBpbiAuZm5zXG4gKiAtIGEgd3JhcHBlZCBjb21wb25lbnQgbWV0aG9kIChjaGVjayAuX2xlbmd0aClcbiAqIC0gYSBwbGFpbiBmdW5jdGlvbiAoLmxlbmd0aClcbiAqL1xuZnVuY3Rpb24gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aCAoZm4pIHtcbiAgaWYgKGlzVW5kZWYoZm4pKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdmFyIGludm9rZXJGbnMgPSBmbi5mbnM7XG4gIGlmIChpc0RlZihpbnZva2VyRm5zKSkge1xuICAgIC8vIGludm9rZXJcbiAgICByZXR1cm4gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChcbiAgICAgIEFycmF5LmlzQXJyYXkoaW52b2tlckZucylcbiAgICAgICAgPyBpbnZva2VyRm5zWzBdXG4gICAgICAgIDogaW52b2tlckZuc1xuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKGZuLl9sZW5ndGggfHwgZm4ubGVuZ3RoKSA+IDFcbiAgfVxufVxuXG5mdW5jdGlvbiBfZW50ZXIgKF8sIHZub2RlKSB7XG4gIGlmICh2bm9kZS5kYXRhLnNob3cgIT09IHRydWUpIHtcbiAgICBlbnRlcih2bm9kZSk7XG4gIH1cbn1cblxudmFyIHRyYW5zaXRpb24gPSBpbkJyb3dzZXIgPyB7XG4gIGNyZWF0ZTogX2VudGVyLFxuICBhY3RpdmF0ZTogX2VudGVyLFxuICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSQkMSAodm5vZGUsIHJtKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgICBsZWF2ZSh2bm9kZSwgcm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgIH1cbiAgfVxufSA6IHt9O1xuXG52YXIgcGxhdGZvcm1Nb2R1bGVzID0gW1xuICBhdHRycyxcbiAga2xhc3MsXG4gIGV2ZW50cyxcbiAgZG9tUHJvcHMsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uXG5dO1xuXG4vKiAgKi9cblxuLy8gdGhlIGRpcmVjdGl2ZSBtb2R1bGUgc2hvdWxkIGJlIGFwcGxpZWQgbGFzdCwgYWZ0ZXIgYWxsXG4vLyBidWlsdC1pbiBtb2R1bGVzIGhhdmUgYmVlbiBhcHBsaWVkLlxudmFyIG1vZHVsZXMgPSBwbGF0Zm9ybU1vZHVsZXMuY29uY2F0KGJhc2VNb2R1bGVzKTtcblxudmFyIHBhdGNoID0gY3JlYXRlUGF0Y2hGdW5jdGlvbih7IG5vZGVPcHM6IG5vZGVPcHMsIG1vZHVsZXM6IG1vZHVsZXMgfSk7XG5cbi8qKlxuICogTm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IGxpa2UgYXR0YWNoaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIEVsZW1lbnRzLlxuICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKGlzSUU5KSB7XG4gIC8vIGh0dHA6Ly93d3cubWF0dHM0MTEuY29tL3Bvc3QvaW50ZXJuZXQtZXhwbG9yZXItOS1vbmlucHV0L1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBpZiAoZWwgJiYgZWwudm1vZGVsKSB7XG4gICAgICB0cmlnZ2VyKGVsLCAnaW5wdXQnKTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgZGlyZWN0aXZlID0ge1xuICBpbnNlcnRlZDogZnVuY3Rpb24gaW5zZXJ0ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSwgb2xkVm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgLy8gIzY5MDNcbiAgICAgIGlmIChvbGRWbm9kZS5lbG0gJiYgIW9sZFZub2RlLmVsbS5fdk9wdGlvbnMpIHtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUsICdwb3N0cGF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZGlyZWN0aXZlLmNvbXBvbmVudFVwZGF0ZWQoZWwsIGJpbmRpbmcsIHZub2RlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm5vZGUuY29udGV4dCk7XG4gICAgICB9XG4gICAgICBlbC5fdk9wdGlvbnMgPSBbXS5tYXAuY2FsbChlbC5vcHRpb25zLCBnZXRWYWx1ZSk7XG4gICAgfSBlbHNlIGlmICh2bm9kZS50YWcgPT09ICd0ZXh0YXJlYScgfHwgaXNUZXh0SW5wdXRUeXBlKGVsLnR5cGUpKSB7XG4gICAgICBlbC5fdk1vZGlmaWVycyA9IGJpbmRpbmcubW9kaWZpZXJzO1xuICAgICAgaWYgKCFiaW5kaW5nLm1vZGlmaWVycy5sYXp5KSB7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCBvbkNvbXBvc2l0aW9uU3RhcnQpO1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbmVuZCcsIG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgICAvLyBTYWZhcmkgPCAxMC4yICYgVUlXZWJWaWV3IGRvZXNuJ3QgZmlyZSBjb21wb3NpdGlvbmVuZCB3aGVuXG4gICAgICAgIC8vIHN3aXRjaGluZyBmb2N1cyBiZWZvcmUgY29uZmlybWluZyBjb21wb3NpdGlvbiBjaG9pY2VcbiAgICAgICAgLy8gdGhpcyBhbHNvIGZpeGVzIHRoZSBpc3N1ZSB3aGVyZSBzb21lIGJyb3dzZXJzIGUuZy4gaU9TIENocm9tZVxuICAgICAgICAvLyBmaXJlcyBcImNoYW5nZVwiIGluc3RlYWQgb2YgXCJpbnB1dFwiIG9uIGF1dG9jb21wbGV0ZS5cbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgb25Db21wb3NpdGlvbkVuZCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXNJRTkpIHtcbiAgICAgICAgICBlbC52bW9kZWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGNvbXBvbmVudFVwZGF0ZWQ6IGZ1bmN0aW9uIGNvbXBvbmVudFVwZGF0ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIGlmICh2bm9kZS50YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgICBzZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm5vZGUuY29udGV4dCk7XG4gICAgICAvLyBpbiBjYXNlIHRoZSBvcHRpb25zIHJlbmRlcmVkIGJ5IHYtZm9yIGhhdmUgY2hhbmdlZCxcbiAgICAgIC8vIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgdmFsdWUgaXMgb3V0LW9mLXN5bmMgd2l0aCB0aGUgcmVuZGVyZWQgb3B0aW9ucy5cbiAgICAgIC8vIGRldGVjdCBzdWNoIGNhc2VzIGFuZCBmaWx0ZXIgb3V0IHZhbHVlcyB0aGF0IG5vIGxvbmdlciBoYXMgYSBtYXRjaGluZ1xuICAgICAgLy8gb3B0aW9uIGluIHRoZSBET00uXG4gICAgICB2YXIgcHJldk9wdGlvbnMgPSBlbC5fdk9wdGlvbnM7XG4gICAgICB2YXIgY3VyT3B0aW9ucyA9IGVsLl92T3B0aW9ucyA9IFtdLm1hcC5jYWxsKGVsLm9wdGlvbnMsIGdldFZhbHVlKTtcbiAgICAgIGlmIChjdXJPcHRpb25zLnNvbWUoZnVuY3Rpb24gKG8sIGkpIHsgcmV0dXJuICFsb29zZUVxdWFsKG8sIHByZXZPcHRpb25zW2ldKTsgfSkpIHtcbiAgICAgICAgLy8gdHJpZ2dlciBjaGFuZ2UgZXZlbnQgaWZcbiAgICAgICAgLy8gbm8gbWF0Y2hpbmcgb3B0aW9uIGZvdW5kIGZvciBhdCBsZWFzdCBvbmUgdmFsdWVcbiAgICAgICAgdmFyIG5lZWRSZXNldCA9IGVsLm11bHRpcGxlXG4gICAgICAgICAgPyBiaW5kaW5nLnZhbHVlLnNvbWUoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIGhhc05vTWF0Y2hpbmdPcHRpb24odiwgY3VyT3B0aW9ucyk7IH0pXG4gICAgICAgICAgOiBiaW5kaW5nLnZhbHVlICE9PSBiaW5kaW5nLm9sZFZhbHVlICYmIGhhc05vTWF0Y2hpbmdPcHRpb24oYmluZGluZy52YWx1ZSwgY3VyT3B0aW9ucyk7XG4gICAgICAgIGlmIChuZWVkUmVzZXQpIHtcbiAgICAgICAgICB0cmlnZ2VyKGVsLCAnY2hhbmdlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHNldFNlbGVjdGVkIChlbCwgYmluZGluZywgdm0pIHtcbiAgYWN0dWFsbHlTZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm0pO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzSUUgfHwgaXNFZGdlKSB7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBhY3R1YWxseVNldFNlbGVjdGVkKGVsLCBiaW5kaW5nLCB2bSk7XG4gICAgfSwgMCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWN0dWFsbHlTZXRTZWxlY3RlZCAoZWwsIGJpbmRpbmcsIHZtKSB7XG4gIHZhciB2YWx1ZSA9IGJpbmRpbmcudmFsdWU7XG4gIHZhciBpc011bHRpcGxlID0gZWwubXVsdGlwbGU7XG4gIGlmIChpc011bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiPHNlbGVjdCBtdWx0aXBsZSB2LW1vZGVsPVxcXCJcIiArIChiaW5kaW5nLmV4cHJlc3Npb24pICsgXCJcXFwiPiBcIiArXG4gICAgICBcImV4cGVjdHMgYW4gQXJyYXkgdmFsdWUgZm9yIGl0cyBiaW5kaW5nLCBidXQgZ290IFwiICsgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpKSxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2VsZWN0ZWQsIG9wdGlvbjtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBlbC5vcHRpb25zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG9wdGlvbiA9IGVsLm9wdGlvbnNbaV07XG4gICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgIHNlbGVjdGVkID0gbG9vc2VJbmRleE9mKHZhbHVlLCBnZXRWYWx1ZShvcHRpb24pKSA+IC0xO1xuICAgICAgaWYgKG9wdGlvbi5zZWxlY3RlZCAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChsb29zZUVxdWFsKGdldFZhbHVlKG9wdGlvbiksIHZhbHVlKSkge1xuICAgICAgICBpZiAoZWwuc2VsZWN0ZWRJbmRleCAhPT0gaSkge1xuICAgICAgICAgIGVsLnNlbGVjdGVkSW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoIWlzTXVsdGlwbGUpIHtcbiAgICBlbC5zZWxlY3RlZEluZGV4ID0gLTE7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzTm9NYXRjaGluZ09wdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIG9wdGlvbnMuZXZlcnkoZnVuY3Rpb24gKG8pIHsgcmV0dXJuICFsb29zZUVxdWFsKG8sIHZhbHVlKTsgfSlcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUgKG9wdGlvbikge1xuICByZXR1cm4gJ192YWx1ZScgaW4gb3B0aW9uXG4gICAgPyBvcHRpb24uX3ZhbHVlXG4gICAgOiBvcHRpb24udmFsdWVcbn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvblN0YXJ0IChlKSB7XG4gIGUudGFyZ2V0LmNvbXBvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQgKGUpIHtcbiAgLy8gcHJldmVudCB0cmlnZ2VyaW5nIGFuIGlucHV0IGV2ZW50IGZvciBubyByZWFzb25cbiAgaWYgKCFlLnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuIH1cbiAgZS50YXJnZXQuY29tcG9zaW5nID0gZmFsc2U7XG4gIHRyaWdnZXIoZS50YXJnZXQsICdpbnB1dCcpO1xufVxuXG5mdW5jdGlvbiB0cmlnZ2VyIChlbCwgdHlwZSkge1xuICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gIGUuaW5pdEV2ZW50KHR5cGUsIHRydWUsIHRydWUpO1xuICBlbC5kaXNwYXRjaEV2ZW50KGUpO1xufVxuXG4vKiAgKi9cblxuLy8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBwb3NzaWJsZSB0cmFuc2l0aW9uIGRlZmluZWQgaW5zaWRlIHRoZSBjb21wb25lbnQgcm9vdFxuZnVuY3Rpb24gbG9jYXRlTm9kZSAodm5vZGUpIHtcbiAgcmV0dXJuIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICYmICghdm5vZGUuZGF0YSB8fCAhdm5vZGUuZGF0YS50cmFuc2l0aW9uKVxuICAgID8gbG9jYXRlTm9kZSh2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpXG4gICAgOiB2bm9kZVxufVxuXG52YXIgc2hvdyA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZCAoZWwsIHJlZiwgdm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSByZWYudmFsdWU7XG5cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uJCQxID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAgdmFyIG9yaWdpbmFsRGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA9XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnJyA6IGVsLnN0eWxlLmRpc3BsYXk7XG4gICAgaWYgKHZhbHVlICYmIHRyYW5zaXRpb24kJDEpIHtcbiAgICAgIHZub2RlLmRhdGEuc2hvdyA9IHRydWU7XG4gICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gb3JpZ2luYWxEaXNwbGF5O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IG9yaWdpbmFsRGlzcGxheSA6ICdub25lJztcbiAgICB9XG4gIH0sXG5cbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUgKGVsLCByZWYsIHZub2RlKSB7XG4gICAgdmFyIHZhbHVlID0gcmVmLnZhbHVlO1xuICAgIHZhciBvbGRWYWx1ZSA9IHJlZi5vbGRWYWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdmFsdWUgPT09ICFvbGRWYWx1ZSkgeyByZXR1cm4gfVxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5zaXRpb24kJDEgPSB2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICBpZiAodHJhbnNpdGlvbiQkMSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVhdmUodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gZWwuX192T3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1bmJpbmQ6IGZ1bmN0aW9uIHVuYmluZCAoXG4gICAgZWwsXG4gICAgYmluZGluZyxcbiAgICB2bm9kZSxcbiAgICBvbGRWbm9kZSxcbiAgICBpc0Rlc3Ryb3lcbiAgKSB7XG4gICAgaWYgKCFpc0Rlc3Ryb3kpIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0ge1xuICBtb2RlbDogZGlyZWN0aXZlLFxuICBzaG93OiBzaG93XG59O1xuXG4vKiAgKi9cblxudmFyIHRyYW5zaXRpb25Qcm9wcyA9IHtcbiAgbmFtZTogU3RyaW5nLFxuICBhcHBlYXI6IEJvb2xlYW4sXG4gIGNzczogQm9vbGVhbixcbiAgbW9kZTogU3RyaW5nLFxuICB0eXBlOiBTdHJpbmcsXG4gIGVudGVyQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVDbGFzczogU3RyaW5nLFxuICBlbnRlclRvQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVUb0NsYXNzOiBTdHJpbmcsXG4gIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJDbGFzczogU3RyaW5nLFxuICBhcHBlYXJBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXG4gIGR1cmF0aW9uOiBbTnVtYmVyLCBTdHJpbmcsIE9iamVjdF1cbn07XG5cbi8vIGluIGNhc2UgdGhlIGNoaWxkIGlzIGFsc28gYW4gYWJzdHJhY3QgY29tcG9uZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxuLy8gd2Ugd2FudCB0byByZWN1cnNpdmVseSByZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWRcbmZ1bmN0aW9uIGdldFJlYWxDaGlsZCAodm5vZGUpIHtcbiAgdmFyIGNvbXBPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGNvbXBPcHRpb25zICYmIGNvbXBPcHRpb25zLkN0b3Iub3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHJldHVybiBnZXRSZWFsQ2hpbGQoZ2V0Rmlyc3RDb21wb25lbnRDaGlsZChjb21wT3B0aW9ucy5jaGlsZHJlbikpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZub2RlXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zaXRpb25EYXRhIChjb21wKSB7XG4gIHZhciBkYXRhID0ge307XG4gIHZhciBvcHRpb25zID0gY29tcC4kb3B0aW9ucztcbiAgLy8gcHJvcHNcbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMucHJvcHNEYXRhKSB7XG4gICAgZGF0YVtrZXldID0gY29tcFtrZXldO1xuICB9XG4gIC8vIGV2ZW50cy5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMgYW5kIHBhc3MgdGhlbSBkaXJlY3RseSB0byB0aGUgdHJhbnNpdGlvbiBtZXRob2RzXG4gIHZhciBsaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGZvciAodmFyIGtleSQxIGluIGxpc3RlbmVycykge1xuICAgIGRhdGFbY2FtZWxpemUoa2V5JDEpXSA9IGxpc3RlbmVyc1trZXkkMV07XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gcGxhY2Vob2xkZXIgKGgsIHJhd0NoaWxkKSB7XG4gIGlmICgvXFxkLWtlZXAtYWxpdmUkLy50ZXN0KHJhd0NoaWxkLnRhZykpIHtcbiAgICByZXR1cm4gaCgna2VlcC1hbGl2ZScsIHtcbiAgICAgIHByb3BzOiByYXdDaGlsZC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzUGFyZW50VHJhbnNpdGlvbiAodm5vZGUpIHtcbiAgd2hpbGUgKCh2bm9kZSA9IHZub2RlLnBhcmVudCkpIHtcbiAgICBpZiAodm5vZGUuZGF0YS50cmFuc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1NhbWVDaGlsZCAoY2hpbGQsIG9sZENoaWxkKSB7XG4gIHJldHVybiBvbGRDaGlsZC5rZXkgPT09IGNoaWxkLmtleSAmJiBvbGRDaGlsZC50YWcgPT09IGNoaWxkLnRhZ1xufVxuXG52YXIgaXNOb3RUZXh0Tm9kZSA9IGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRhZyB8fCBpc0FzeW5jUGxhY2Vob2xkZXIoYyk7IH07XG5cbnZhciBpc1ZTaG93RGlyZWN0aXZlID0gZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQubmFtZSA9PT0gJ3Nob3cnOyB9O1xuXG52YXIgVHJhbnNpdGlvbiA9IHtcbiAgbmFtZTogJ3RyYW5zaXRpb24nLFxuICBwcm9wczogdHJhbnNpdGlvblByb3BzLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBmaWx0ZXIgb3V0IHRleHQgbm9kZXMgKHBvc3NpYmxlIHdoaXRlc3BhY2VzKVxuICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGlzTm90VGV4dE5vZGUpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB3YXJuIG11bHRpcGxlIGVsZW1lbnRzXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgd2FybihcbiAgICAgICAgJzx0cmFuc2l0aW9uPiBjYW4gb25seSBiZSB1c2VkIG9uIGEgc2luZ2xlIGVsZW1lbnQuIFVzZSAnICtcbiAgICAgICAgJzx0cmFuc2l0aW9uLWdyb3VwPiBmb3IgbGlzdHMuJyxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAgICApO1xuICAgIH1cblxuICAgIHZhciBtb2RlID0gdGhpcy5tb2RlO1xuXG4gICAgLy8gd2FybiBpbnZhbGlkIG1vZGVcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgbW9kZSAmJiBtb2RlICE9PSAnaW4tb3V0JyAmJiBtb2RlICE9PSAnb3V0LWluJ1xuICAgICkge1xuICAgICAgd2FybihcbiAgICAgICAgJ2ludmFsaWQgPHRyYW5zaXRpb24+IG1vZGU6ICcgKyBtb2RlLFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIHJhd0NoaWxkID0gY2hpbGRyZW5bMF07XG5cbiAgICAvLyBpZiB0aGlzIGlzIGEgY29tcG9uZW50IHJvb3Qgbm9kZSBhbmQgdGhlIGNvbXBvbmVudCdzXG4gICAgLy8gcGFyZW50IGNvbnRhaW5lciBub2RlIGFsc28gaGFzIHRyYW5zaXRpb24sIHNraXAuXG4gICAgaWYgKGhhc1BhcmVudFRyYW5zaXRpb24odGhpcy4kdm5vZGUpKSB7XG4gICAgICByZXR1cm4gcmF3Q2hpbGRcbiAgICB9XG5cbiAgICAvLyBhcHBseSB0cmFuc2l0aW9uIGRhdGEgdG8gY2hpbGRcbiAgICAvLyB1c2UgZ2V0UmVhbENoaWxkKCkgdG8gaWdub3JlIGFic3RyYWN0IGNvbXBvbmVudHMgZS5nLiBrZWVwLWFsaXZlXG4gICAgdmFyIGNoaWxkID0gZ2V0UmVhbENoaWxkKHJhd0NoaWxkKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWNoaWxkKSB7XG4gICAgICByZXR1cm4gcmF3Q2hpbGRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGVhdmluZykge1xuICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyKGgsIHJhd0NoaWxkKVxuICAgIH1cblxuICAgIC8vIGVuc3VyZSBhIGtleSB0aGF0IGlzIHVuaXF1ZSB0byB0aGUgdm5vZGUgdHlwZSBhbmQgdG8gdGhpcyB0cmFuc2l0aW9uXG4gICAgLy8gY29tcG9uZW50IGluc3RhbmNlLiBUaGlzIGtleSB3aWxsIGJlIHVzZWQgdG8gcmVtb3ZlIHBlbmRpbmcgbGVhdmluZyBub2Rlc1xuICAgIC8vIGR1cmluZyBlbnRlcmluZy5cbiAgICB2YXIgaWQgPSBcIl9fdHJhbnNpdGlvbi1cIiArICh0aGlzLl91aWQpICsgXCItXCI7XG4gICAgY2hpbGQua2V5ID0gY2hpbGQua2V5ID09IG51bGxcbiAgICAgID8gY2hpbGQuaXNDb21tZW50XG4gICAgICAgID8gaWQgKyAnY29tbWVudCdcbiAgICAgICAgOiBpZCArIGNoaWxkLnRhZ1xuICAgICAgOiBpc1ByaW1pdGl2ZShjaGlsZC5rZXkpXG4gICAgICAgID8gKFN0cmluZyhjaGlsZC5rZXkpLmluZGV4T2YoaWQpID09PSAwID8gY2hpbGQua2V5IDogaWQgKyBjaGlsZC5rZXkpXG4gICAgICAgIDogY2hpbGQua2V5O1xuXG4gICAgdmFyIGRhdGEgPSAoY2hpbGQuZGF0YSB8fCAoY2hpbGQuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcbiAgICB2YXIgb2xkUmF3Q2hpbGQgPSB0aGlzLl92bm9kZTtcbiAgICB2YXIgb2xkQ2hpbGQgPSBnZXRSZWFsQ2hpbGQob2xkUmF3Q2hpbGQpO1xuXG4gICAgLy8gbWFyayB2LXNob3dcbiAgICAvLyBzbyB0aGF0IHRoZSB0cmFuc2l0aW9uIG1vZHVsZSBjYW4gaGFuZCBvdmVyIHRoZSBjb250cm9sIHRvIHRoZSBkaXJlY3RpdmVcbiAgICBpZiAoY2hpbGQuZGF0YS5kaXJlY3RpdmVzICYmIGNoaWxkLmRhdGEuZGlyZWN0aXZlcy5zb21lKGlzVlNob3dEaXJlY3RpdmUpKSB7XG4gICAgICBjaGlsZC5kYXRhLnNob3cgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG9sZENoaWxkICYmXG4gICAgICBvbGRDaGlsZC5kYXRhICYmXG4gICAgICAhaXNTYW1lQ2hpbGQoY2hpbGQsIG9sZENoaWxkKSAmJlxuICAgICAgIWlzQXN5bmNQbGFjZWhvbGRlcihvbGRDaGlsZCkgJiZcbiAgICAgIC8vICM2Njg3IGNvbXBvbmVudCByb290IGlzIGEgY29tbWVudCBub2RlXG4gICAgICAhKG9sZENoaWxkLmNvbXBvbmVudEluc3RhbmNlICYmIG9sZENoaWxkLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZS5pc0NvbW1lbnQpXG4gICAgKSB7XG4gICAgICAvLyByZXBsYWNlIG9sZCBjaGlsZCB0cmFuc2l0aW9uIGRhdGEgd2l0aCBmcmVzaCBvbmVcbiAgICAgIC8vIGltcG9ydGFudCBmb3IgZHluYW1pYyB0cmFuc2l0aW9ucyFcbiAgICAgIHZhciBvbGREYXRhID0gb2xkQ2hpbGQuZGF0YS50cmFuc2l0aW9uID0gZXh0ZW5kKHt9LCBkYXRhKTtcbiAgICAgIC8vIGhhbmRsZSB0cmFuc2l0aW9uIG1vZGVcbiAgICAgIGlmIChtb2RlID09PSAnb3V0LWluJykge1xuICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIgbm9kZSBhbmQgcXVldWUgdXBkYXRlIHdoZW4gbGVhdmUgZmluaXNoZXNcbiAgICAgICAgdGhpcy5fbGVhdmluZyA9IHRydWU7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdhZnRlckxlYXZlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRoaXMkMS5fbGVhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMkMS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwbGFjZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2luLW91dCcpIHtcbiAgICAgICAgaWYgKGlzQXN5bmNQbGFjZWhvbGRlcihjaGlsZCkpIHtcbiAgICAgICAgICByZXR1cm4gb2xkUmF3Q2hpbGRcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVsYXllZExlYXZlO1xuICAgICAgICB2YXIgcGVyZm9ybUxlYXZlID0gZnVuY3Rpb24gKCkgeyBkZWxheWVkTGVhdmUoKTsgfTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2soZGF0YSwgJ2FmdGVyRW50ZXInLCBwZXJmb3JtTGVhdmUpO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnZW50ZXJDYW5jZWxsZWQnLCBwZXJmb3JtTGVhdmUpO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAnZGVsYXlMZWF2ZScsIGZ1bmN0aW9uIChsZWF2ZSkgeyBkZWxheWVkTGVhdmUgPSBsZWF2ZTsgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJhd0NoaWxkXG4gIH1cbn07XG5cbi8qICAqL1xuXG52YXIgcHJvcHMgPSBleHRlbmQoe1xuICB0YWc6IFN0cmluZyxcbiAgbW92ZUNsYXNzOiBTdHJpbmdcbn0sIHRyYW5zaXRpb25Qcm9wcyk7XG5cbmRlbGV0ZSBwcm9wcy5tb2RlO1xuXG52YXIgVHJhbnNpdGlvbkdyb3VwID0ge1xuICBwcm9wczogcHJvcHMsXG5cbiAgYmVmb3JlTW91bnQ6IGZ1bmN0aW9uIGJlZm9yZU1vdW50ICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB1cGRhdGUgPSB0aGlzLl91cGRhdGU7XG4gICAgdGhpcy5fdXBkYXRlID0gZnVuY3Rpb24gKHZub2RlLCBoeWRyYXRpbmcpIHtcbiAgICAgIHZhciByZXN0b3JlQWN0aXZlSW5zdGFuY2UgPSBzZXRBY3RpdmVJbnN0YW5jZSh0aGlzJDEpO1xuICAgICAgLy8gZm9yY2UgcmVtb3ZpbmcgcGFzc1xuICAgICAgdGhpcyQxLl9fcGF0Y2hfXyhcbiAgICAgICAgdGhpcyQxLl92bm9kZSxcbiAgICAgICAgdGhpcyQxLmtlcHQsXG4gICAgICAgIGZhbHNlLCAvLyBoeWRyYXRpbmdcbiAgICAgICAgdHJ1ZSAvLyByZW1vdmVPbmx5ICghaW1wb3J0YW50LCBhdm9pZHMgdW5uZWNlc3NhcnkgbW92ZXMpXG4gICAgICApO1xuICAgICAgdGhpcyQxLl92bm9kZSA9IHRoaXMkMS5rZXB0O1xuICAgICAgcmVzdG9yZUFjdGl2ZUluc3RhbmNlKCk7XG4gICAgICB1cGRhdGUuY2FsbCh0aGlzJDEsIHZub2RlLCBoeWRyYXRpbmcpO1xuICAgIH07XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKGgpIHtcbiAgICB2YXIgdGFnID0gdGhpcy50YWcgfHwgdGhpcy4kdm5vZGUuZGF0YS50YWcgfHwgJ3NwYW4nO1xuICAgIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLnByZXZDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAgdmFyIHJhd0NoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdCB8fCBbXTtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgdmFyIHRyYW5zaXRpb25EYXRhID0gZXh0cmFjdFRyYW5zaXRpb25EYXRhKHRoaXMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYXdDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSByYXdDaGlsZHJlbltpXTtcbiAgICAgIGlmIChjLnRhZykge1xuICAgICAgICBpZiAoYy5rZXkgIT0gbnVsbCAmJiBTdHJpbmcoYy5rZXkpLmluZGV4T2YoJ19fdmxpc3QnKSAhPT0gMCkge1xuICAgICAgICAgIGNoaWxkcmVuLnB1c2goYyk7XG4gICAgICAgICAgbWFwW2Mua2V5XSA9IGNcbiAgICAgICAgICA7KGMuZGF0YSB8fCAoYy5kYXRhID0ge30pKS50cmFuc2l0aW9uID0gdHJhbnNpdGlvbkRhdGE7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHZhciBvcHRzID0gYy5jb21wb25lbnRPcHRpb25zO1xuICAgICAgICAgIHZhciBuYW1lID0gb3B0cyA/IChvcHRzLkN0b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMudGFnIHx8ICcnKSA6IGMudGFnO1xuICAgICAgICAgIHdhcm4oKFwiPHRyYW5zaXRpb24tZ3JvdXA+IGNoaWxkcmVuIG11c3QgYmUga2V5ZWQ6IDxcIiArIG5hbWUgKyBcIj5cIikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByZXZDaGlsZHJlbikge1xuICAgICAgdmFyIGtlcHQgPSBbXTtcbiAgICAgIHZhciByZW1vdmVkID0gW107XG4gICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBwcmV2Q2hpbGRyZW4ubGVuZ3RoOyBpJDErKykge1xuICAgICAgICB2YXIgYyQxID0gcHJldkNoaWxkcmVuW2kkMV07XG4gICAgICAgIGMkMS5kYXRhLnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRGF0YTtcbiAgICAgICAgYyQxLmRhdGEucG9zID0gYyQxLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKG1hcFtjJDEua2V5XSkge1xuICAgICAgICAgIGtlcHQucHVzaChjJDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbW92ZWQucHVzaChjJDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmtlcHQgPSBoKHRhZywgbnVsbCwga2VwdCk7XG4gICAgICB0aGlzLnJlbW92ZWQgPSByZW1vdmVkO1xuICAgIH1cblxuICAgIHJldHVybiBoKHRhZywgbnVsbCwgY2hpbGRyZW4pXG4gIH0sXG5cbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCAoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRyZW47XG4gICAgdmFyIG1vdmVDbGFzcyA9IHRoaXMubW92ZUNsYXNzIHx8ICgodGhpcy5uYW1lIHx8ICd2JykgKyAnLW1vdmUnKTtcbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCB8fCAhdGhpcy5oYXNNb3ZlKGNoaWxkcmVuWzBdLmVsbSwgbW92ZUNsYXNzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2UgZGl2aWRlIHRoZSB3b3JrIGludG8gdGhyZWUgbG9vcHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVzXG4gICAgLy8gaW4gZWFjaCBpdGVyYXRpb24gLSB3aGljaCBoZWxwcyBwcmV2ZW50IGxheW91dCB0aHJhc2hpbmcuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChyZWNvcmRQb3NpdGlvbik7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChhcHBseVRyYW5zbGF0aW9uKTtcblxuICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBpbiBwb3NpdGlvblxuICAgIC8vIGFzc2lnbiB0byB0aGlzIHRvIGF2b2lkIGJlaW5nIHJlbW92ZWQgaW4gdHJlZS1zaGFraW5nXG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgdGhpcy5fcmVmbG93ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7XG5cbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICBpZiAoYy5kYXRhLm1vdmVkKSB7XG4gICAgICAgIHZhciBlbCA9IGMuZWxtO1xuICAgICAgICB2YXIgcyA9IGVsLnN0eWxlO1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XG4gICAgICAgIHMudHJhbnNmb3JtID0gcy5XZWJraXRUcmFuc2Zvcm0gPSBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcnO1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKHRyYW5zaXRpb25FbmRFdmVudCwgZWwuX21vdmVDYiA9IGZ1bmN0aW9uIGNiIChlKSB7XG4gICAgICAgICAgaWYgKGUgJiYgZS50YXJnZXQgIT09IGVsKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFlIHx8IC90cmFuc2Zvcm0kLy50ZXN0KGUucHJvcGVydHlOYW1lKSkge1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGNiKTtcbiAgICAgICAgICAgIGVsLl9tb3ZlQ2IgPSBudWxsO1xuICAgICAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhc01vdmU6IGZ1bmN0aW9uIGhhc01vdmUgKGVsLCBtb3ZlQ2xhc3MpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCFoYXNUcmFuc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAodGhpcy5faGFzTW92ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzTW92ZVxuICAgICAgfVxuICAgICAgLy8gRGV0ZWN0IHdoZXRoZXIgYW4gZWxlbWVudCB3aXRoIHRoZSBtb3ZlIGNsYXNzIGFwcGxpZWQgaGFzXG4gICAgICAvLyBDU1MgdHJhbnNpdGlvbnMuIFNpbmNlIHRoZSBlbGVtZW50IG1heSBiZSBpbnNpZGUgYW4gZW50ZXJpbmdcbiAgICAgIC8vIHRyYW5zaXRpb24gYXQgdGhpcyB2ZXJ5IG1vbWVudCwgd2UgbWFrZSBhIGNsb25lIG9mIGl0IGFuZCByZW1vdmVcbiAgICAgIC8vIGFsbCBvdGhlciB0cmFuc2l0aW9uIGNsYXNzZXMgYXBwbGllZCB0byBlbnN1cmUgb25seSB0aGUgbW92ZSBjbGFzc1xuICAgICAgLy8gaXMgYXBwbGllZC5cbiAgICAgIHZhciBjbG9uZSA9IGVsLmNsb25lTm9kZSgpO1xuICAgICAgaWYgKGVsLl90cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgICAgICBlbC5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7IHJlbW92ZUNsYXNzKGNsb25lLCBjbHMpOyB9KTtcbiAgICAgIH1cbiAgICAgIGFkZENsYXNzKGNsb25lLCBtb3ZlQ2xhc3MpO1xuICAgICAgY2xvbmUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIHRoaXMuJGVsLmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICAgIHZhciBpbmZvID0gZ2V0VHJhbnNpdGlvbkluZm8oY2xvbmUpO1xuICAgICAgdGhpcy4kZWwucmVtb3ZlQ2hpbGQoY2xvbmUpO1xuICAgICAgcmV0dXJuICh0aGlzLl9oYXNNb3ZlID0gaW5mby5oYXNUcmFuc2Zvcm0pXG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBjYWxsUGVuZGluZ0NicyAoYykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGMuZWxtLl9tb3ZlQ2IpIHtcbiAgICBjLmVsbS5fbW92ZUNiKCk7XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fZW50ZXJDYikge1xuICAgIGMuZWxtLl9lbnRlckNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVjb3JkUG9zaXRpb24gKGMpIHtcbiAgYy5kYXRhLm5ld1BvcyA9IGMuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuXG5mdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uIChjKSB7XG4gIHZhciBvbGRQb3MgPSBjLmRhdGEucG9zO1xuICB2YXIgbmV3UG9zID0gYy5kYXRhLm5ld1BvcztcbiAgdmFyIGR4ID0gb2xkUG9zLmxlZnQgLSBuZXdQb3MubGVmdDtcbiAgdmFyIGR5ID0gb2xkUG9zLnRvcCAtIG5ld1Bvcy50b3A7XG4gIGlmIChkeCB8fCBkeSkge1xuICAgIGMuZGF0YS5tb3ZlZCA9IHRydWU7XG4gICAgdmFyIHMgPSBjLmVsbS5zdHlsZTtcbiAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoXCIgKyBkeCArIFwicHgsXCIgKyBkeSArIFwicHgpXCI7XG4gICAgcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnMHMnO1xuICB9XG59XG5cbnZhciBwbGF0Zm9ybUNvbXBvbmVudHMgPSB7XG4gIFRyYW5zaXRpb246IFRyYW5zaXRpb24sXG4gIFRyYW5zaXRpb25Hcm91cDogVHJhbnNpdGlvbkdyb3VwXG59O1xuXG4vKiAgKi9cblxuLy8gaW5zdGFsbCBwbGF0Zm9ybSBzcGVjaWZpYyB1dGlsc1xuVnVlLmNvbmZpZy5tdXN0VXNlUHJvcCA9IG11c3RVc2VQcm9wO1xuVnVlLmNvbmZpZy5pc1Jlc2VydmVkVGFnID0gaXNSZXNlcnZlZFRhZztcblZ1ZS5jb25maWcuaXNSZXNlcnZlZEF0dHIgPSBpc1Jlc2VydmVkQXR0cjtcblZ1ZS5jb25maWcuZ2V0VGFnTmFtZXNwYWNlID0gZ2V0VGFnTmFtZXNwYWNlO1xuVnVlLmNvbmZpZy5pc1Vua25vd25FbGVtZW50ID0gaXNVbmtub3duRWxlbWVudDtcblxuLy8gaW5zdGFsbCBwbGF0Zm9ybSBydW50aW1lIGRpcmVjdGl2ZXMgJiBjb21wb25lbnRzXG5leHRlbmQoVnVlLm9wdGlvbnMuZGlyZWN0aXZlcywgcGxhdGZvcm1EaXJlY3RpdmVzKTtcbmV4dGVuZChWdWUub3B0aW9ucy5jb21wb25lbnRzLCBwbGF0Zm9ybUNvbXBvbmVudHMpO1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHBhdGNoIGZ1bmN0aW9uXG5WdWUucHJvdG90eXBlLl9fcGF0Y2hfXyA9IGluQnJvd3NlciA/IHBhdGNoIDogbm9vcDtcblxuLy8gcHVibGljIG1vdW50IG1ldGhvZFxuVnVlLnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9IGVsICYmIGluQnJvd3NlciA/IHF1ZXJ5KGVsKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG1vdW50Q29tcG9uZW50KHRoaXMsIGVsLCBoeWRyYXRpbmcpXG59O1xuXG4vLyBkZXZ0b29scyBnbG9iYWwgaG9va1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpbkJyb3dzZXIpIHtcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNvbmZpZy5kZXZ0b29scykge1xuICAgICAgaWYgKGRldnRvb2xzKSB7XG4gICAgICAgIGRldnRvb2xzLmVtaXQoJ2luaXQnLCBWdWUpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZVtjb25zb2xlLmluZm8gPyAnaW5mbycgOiAnbG9nJ10oXG4gICAgICAgICAgJ0Rvd25sb2FkIHRoZSBWdWUgRGV2dG9vbHMgZXh0ZW5zaW9uIGZvciBhIGJldHRlciBkZXZlbG9wbWVudCBleHBlcmllbmNlOlxcbicgK1xuICAgICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLWRldnRvb2xzJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0JyAmJlxuICAgICAgY29uZmlnLnByb2R1Y3Rpb25UaXAgIT09IGZhbHNlICYmXG4gICAgICB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICApIHtcbiAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgICBcIllvdSBhcmUgcnVubmluZyBWdWUgaW4gZGV2ZWxvcG1lbnQgbW9kZS5cXG5cIiArXG4gICAgICAgIFwiTWFrZSBzdXJlIHRvIHR1cm4gb24gcHJvZHVjdGlvbiBtb2RlIHdoZW4gZGVwbG95aW5nIGZvciBwcm9kdWN0aW9uLlxcblwiICtcbiAgICAgICAgXCJTZWUgbW9yZSB0aXBzIGF0IGh0dHBzOi8vdnVlanMub3JnL2d1aWRlL2RlcGxveW1lbnQuaHRtbFwiXG4gICAgICApO1xuICAgIH1cbiAgfSwgMCk7XG59XG5cbi8qICAqL1xuXG5leHBvcnQgZGVmYXVsdCBWdWU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue/dist/vue.runtime.esm.js\n");

/***/ }),

/***/ "./node_modules/vue2-hammer/index.min.js":
/*!***********************************************!*\
  !*** ./node_modules/vue2-hammer/index.min.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("Object.defineProperty(exports,\"__esModule\",{value:true});exports.VueHammer=undefined;var _keys=__webpack_require__(/*! babel-runtime/core-js/object/keys */ \"./node_modules/babel-runtime/core-js/object/keys.js\");var _keys2=_interopRequireDefault(_keys);var _hammerjs=__webpack_require__(/*! hammerjs */ \"./node_modules/hammerjs/hammer.js\");var _hammerjs2=_interopRequireDefault(_hammerjs);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var gestures=[\"tap\",\"pan\",\"pinch\",\"press\",\"rotate\",\"swipe\"];var subGestures=[\"panstart\",\"panend\",\"panmove\",\"pancancel\",\"pinchstart\",\"pinchmove\",\"pinchend\",\"pinchcancel\",\"pinchin\",\"pinchout\",\"pressup\",\"rotatestart\",\"rotatemove\",\"rotateend\",\"rotatecancel\"];var directions=[\"up\",\"down\",\"left\",\"right\",\"horizontal\",\"vertical\",\"all\"];var VueHammer=exports.VueHammer={config:{},customEvents:{},install:function install(Vue){var _this=this;Vue.directive(\"hammer\",{bind:function bind(el,binding){if(!el.hammer){el.hammer=new _hammerjs2.default.Manager(el)}var mc=el.hammer;var event=binding.arg;if(!event){console.warn(\"[vue-hammer] event type argument is required.\")}el.__hammerConfig=el.__hammerConfig||{};el.__hammerConfig[event]={};var direction=binding.modifiers;el.__hammerConfig[event].direction=el.__hammerConfig[event].direction||[];if((0,_keys2.default)(direction).length){(0,_keys2.default)(direction).filter(function(keyName){return binding.modifiers[keyName]}).forEach(function(keyName){var elDirectionArray=el.__hammerConfig[event].direction;if(elDirectionArray.indexOf(keyName)===-1){elDirectionArray.push(String(keyName))}})}var recognizerType=void 0,recognizer=void 0;if(_this.customEvents[event]){var custom=_this.customEvents[event];recognizerType=custom.type;recognizer=new(_hammerjs2.default[_this.capitalize(recognizerType)])(custom);recognizer.recognizeWith(mc.recognizers);mc.add(recognizer)}else{recognizerType=gestures.find(function(gesture){return gesture===event});var subGesturesType=subGestures.find(function(gesture){return gesture===event});if(!recognizerType&&!subGesturesType){console.warn(\"[vue-hammer] invalid event type: \"+event);return}if(subGesturesType&&el.__hammerConfig[subGesturesType].direction.length!==0){console.warn(\"[vue-hammer] \"+subGesturesType+\" should not have directions\")}if(!recognizerType){return}if(recognizerType===\"tap\"||recognizerType===\"pinch\"||recognizerType===\"press\"||recognizerType===\"rotate\"){if(el.__hammerConfig[recognizerType].direction.length!==0){throw Error(\"[vue-hammer] \"+recognizerType+\" should not have directions\")}}recognizer=mc.get(recognizerType);if(!recognizer){recognizer=new(_hammerjs2.default[_this.capitalize(recognizerType)]);recognizer.recognizeWith(mc.recognizers);mc.add(recognizer)}var globalOptions=_this.config[recognizerType];if(globalOptions){_this.guardDirections(globalOptions);recognizer.set(globalOptions)}var localOptions=el.hammerOptions&&el.hammerOptions[recognizerType];if(localOptions){_this.guardDirections(localOptions);recognizer.set(localOptions)}}},inserted:function inserted(el,binding){var mc=el.hammer;var event=binding.arg;var eventWithDir=subGestures.find(function(subGes){return subGes===event})?event:_this.buildEventWithDirections(event,el.__hammerConfig[event].direction);if(mc.handler){mc.off(eventWithDir,mc.handler)}if(typeof binding.value!==\"function\"){mc.handler=null;console.warn(\"[vue-hammer] invalid handler function for v-hammer: \"+binding.arg)}else{mc.on(eventWithDir,mc.handler=binding.value)}},componentUpdated:function componentUpdated(el,binding){var mc=el.hammer;var event=binding.arg;var eventWithDir=subGestures.find(function(subGes){return subGes===event})?event:_this.buildEventWithDirections(event,el.__hammerConfig[event].direction);if(mc.handler){mc.off(eventWithDir,mc.handler)}if(typeof binding.value!==\"function\"){mc.handler=null;console.warn(\"[vue-hammer] invalid handler function for v-hammer: \"+binding.arg)}else{mc.on(eventWithDir,mc.handler=binding.value)}},unbind:function unbind(el,binding){var mc=el.hammer;var event=binding.arg;var eventWithDir=subGestures.find(function(subGes){return subGes===event})?event:_this.buildEventWithDirections(event,el.__hammerConfig[event].direction);if(mc.handler){el.hammer.off(eventWithDir,mc.handler)}if(!(0,_keys2.default)(mc.handlers).length){el.hammer.destroy();el.hammer=null}}})},guardDirections:function guardDirections(options){var dir=options.direction;if(typeof dir===\"string\"){var hammerDirection=\"DIRECTION_\"+dir.toUpperCase();if(directions.indexOf(dir)>-1&&_hammerjs2.default.hasOwnProperty(hammerDirection)){options.direction=_hammerjs2.default[hammerDirection]}else{console.warn(\"[vue-hammer] invalid direction: \"+dir)}}},buildEventWithDirections:function buildEventWithDirections(eventName,directionArray){var f={};directionArray.forEach(function(dir){dir=dir.toLowerCase();if(dir===\"horizontal\"){f.left=1;f.right=1}else if(dir===\"vertical\"){f.up=1;f.down=1}else if(dir===\"all\"){f.left=1;f.right=1;f.up=1;f.down=1}else{f[dir]=1}});var _directionArray=(0,_keys2.default)(f);if(_directionArray.length===0){return eventName}var eventWithDirArray=_directionArray.map(function(dir){return eventName+dir});return eventWithDirArray.join(\" \")},capitalize:function capitalize(str){return str.charAt(0).toUpperCase()+str.slice(1)}};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlMi1oYW1tZXIvaW5kZXgubWluLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZTItaGFtbWVyL2luZGV4Lm1pbi5qcz82NTkxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5WdWVIYW1tZXI9dW5kZWZpbmVkO3ZhciBfa2V5cz1yZXF1aXJlKFwiYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzXCIpO3ZhciBfa2V5czI9X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfa2V5cyk7dmFyIF9oYW1tZXJqcz1yZXF1aXJlKFwiaGFtbWVyanNcIik7dmFyIF9oYW1tZXJqczI9X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFtbWVyanMpO2Z1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKXtyZXR1cm4gb2JqJiZvYmouX19lc01vZHVsZT9vYmo6e2RlZmF1bHQ6b2JqfX12YXIgZ2VzdHVyZXM9W1widGFwXCIsXCJwYW5cIixcInBpbmNoXCIsXCJwcmVzc1wiLFwicm90YXRlXCIsXCJzd2lwZVwiXTt2YXIgc3ViR2VzdHVyZXM9W1wicGFuc3RhcnRcIixcInBhbmVuZFwiLFwicGFubW92ZVwiLFwicGFuY2FuY2VsXCIsXCJwaW5jaHN0YXJ0XCIsXCJwaW5jaG1vdmVcIixcInBpbmNoZW5kXCIsXCJwaW5jaGNhbmNlbFwiLFwicGluY2hpblwiLFwicGluY2hvdXRcIixcInByZXNzdXBcIixcInJvdGF0ZXN0YXJ0XCIsXCJyb3RhdGVtb3ZlXCIsXCJyb3RhdGVlbmRcIixcInJvdGF0ZWNhbmNlbFwiXTt2YXIgZGlyZWN0aW9ucz1bXCJ1cFwiLFwiZG93blwiLFwibGVmdFwiLFwicmlnaHRcIixcImhvcml6b250YWxcIixcInZlcnRpY2FsXCIsXCJhbGxcIl07dmFyIFZ1ZUhhbW1lcj1leHBvcnRzLlZ1ZUhhbW1lcj17Y29uZmlnOnt9LGN1c3RvbUV2ZW50czp7fSxpbnN0YWxsOmZ1bmN0aW9uIGluc3RhbGwoVnVlKXt2YXIgX3RoaXM9dGhpcztWdWUuZGlyZWN0aXZlKFwiaGFtbWVyXCIse2JpbmQ6ZnVuY3Rpb24gYmluZChlbCxiaW5kaW5nKXtpZighZWwuaGFtbWVyKXtlbC5oYW1tZXI9bmV3IF9oYW1tZXJqczIuZGVmYXVsdC5NYW5hZ2VyKGVsKX12YXIgbWM9ZWwuaGFtbWVyO3ZhciBldmVudD1iaW5kaW5nLmFyZztpZighZXZlbnQpe2NvbnNvbGUud2FybihcIlt2dWUtaGFtbWVyXSBldmVudCB0eXBlIGFyZ3VtZW50IGlzIHJlcXVpcmVkLlwiKX1lbC5fX2hhbW1lckNvbmZpZz1lbC5fX2hhbW1lckNvbmZpZ3x8e307ZWwuX19oYW1tZXJDb25maWdbZXZlbnRdPXt9O3ZhciBkaXJlY3Rpb249YmluZGluZy5tb2RpZmllcnM7ZWwuX19oYW1tZXJDb25maWdbZXZlbnRdLmRpcmVjdGlvbj1lbC5fX2hhbW1lckNvbmZpZ1tldmVudF0uZGlyZWN0aW9ufHxbXTtpZigoMCxfa2V5czIuZGVmYXVsdCkoZGlyZWN0aW9uKS5sZW5ndGgpeygwLF9rZXlzMi5kZWZhdWx0KShkaXJlY3Rpb24pLmZpbHRlcihmdW5jdGlvbihrZXlOYW1lKXtyZXR1cm4gYmluZGluZy5tb2RpZmllcnNba2V5TmFtZV19KS5mb3JFYWNoKGZ1bmN0aW9uKGtleU5hbWUpe3ZhciBlbERpcmVjdGlvbkFycmF5PWVsLl9faGFtbWVyQ29uZmlnW2V2ZW50XS5kaXJlY3Rpb247aWYoZWxEaXJlY3Rpb25BcnJheS5pbmRleE9mKGtleU5hbWUpPT09LTEpe2VsRGlyZWN0aW9uQXJyYXkucHVzaChTdHJpbmcoa2V5TmFtZSkpfX0pfXZhciByZWNvZ25pemVyVHlwZT12b2lkIDAscmVjb2duaXplcj12b2lkIDA7aWYoX3RoaXMuY3VzdG9tRXZlbnRzW2V2ZW50XSl7dmFyIGN1c3RvbT1fdGhpcy5jdXN0b21FdmVudHNbZXZlbnRdO3JlY29nbml6ZXJUeXBlPWN1c3RvbS50eXBlO3JlY29nbml6ZXI9bmV3KF9oYW1tZXJqczIuZGVmYXVsdFtfdGhpcy5jYXBpdGFsaXplKHJlY29nbml6ZXJUeXBlKV0pKGN1c3RvbSk7cmVjb2duaXplci5yZWNvZ25pemVXaXRoKG1jLnJlY29nbml6ZXJzKTttYy5hZGQocmVjb2duaXplcil9ZWxzZXtyZWNvZ25pemVyVHlwZT1nZXN0dXJlcy5maW5kKGZ1bmN0aW9uKGdlc3R1cmUpe3JldHVybiBnZXN0dXJlPT09ZXZlbnR9KTt2YXIgc3ViR2VzdHVyZXNUeXBlPXN1Ykdlc3R1cmVzLmZpbmQoZnVuY3Rpb24oZ2VzdHVyZSl7cmV0dXJuIGdlc3R1cmU9PT1ldmVudH0pO2lmKCFyZWNvZ25pemVyVHlwZSYmIXN1Ykdlc3R1cmVzVHlwZSl7Y29uc29sZS53YXJuKFwiW3Z1ZS1oYW1tZXJdIGludmFsaWQgZXZlbnQgdHlwZTogXCIrZXZlbnQpO3JldHVybn1pZihzdWJHZXN0dXJlc1R5cGUmJmVsLl9faGFtbWVyQ29uZmlnW3N1Ykdlc3R1cmVzVHlwZV0uZGlyZWN0aW9uLmxlbmd0aCE9PTApe2NvbnNvbGUud2FybihcIlt2dWUtaGFtbWVyXSBcIitzdWJHZXN0dXJlc1R5cGUrXCIgc2hvdWxkIG5vdCBoYXZlIGRpcmVjdGlvbnNcIil9aWYoIXJlY29nbml6ZXJUeXBlKXtyZXR1cm59aWYocmVjb2duaXplclR5cGU9PT1cInRhcFwifHxyZWNvZ25pemVyVHlwZT09PVwicGluY2hcInx8cmVjb2duaXplclR5cGU9PT1cInByZXNzXCJ8fHJlY29nbml6ZXJUeXBlPT09XCJyb3RhdGVcIil7aWYoZWwuX19oYW1tZXJDb25maWdbcmVjb2duaXplclR5cGVdLmRpcmVjdGlvbi5sZW5ndGghPT0wKXt0aHJvdyBFcnJvcihcIlt2dWUtaGFtbWVyXSBcIityZWNvZ25pemVyVHlwZStcIiBzaG91bGQgbm90IGhhdmUgZGlyZWN0aW9uc1wiKX19cmVjb2duaXplcj1tYy5nZXQocmVjb2duaXplclR5cGUpO2lmKCFyZWNvZ25pemVyKXtyZWNvZ25pemVyPW5ldyhfaGFtbWVyanMyLmRlZmF1bHRbX3RoaXMuY2FwaXRhbGl6ZShyZWNvZ25pemVyVHlwZSldKTtyZWNvZ25pemVyLnJlY29nbml6ZVdpdGgobWMucmVjb2duaXplcnMpO21jLmFkZChyZWNvZ25pemVyKX12YXIgZ2xvYmFsT3B0aW9ucz1fdGhpcy5jb25maWdbcmVjb2duaXplclR5cGVdO2lmKGdsb2JhbE9wdGlvbnMpe190aGlzLmd1YXJkRGlyZWN0aW9ucyhnbG9iYWxPcHRpb25zKTtyZWNvZ25pemVyLnNldChnbG9iYWxPcHRpb25zKX12YXIgbG9jYWxPcHRpb25zPWVsLmhhbW1lck9wdGlvbnMmJmVsLmhhbW1lck9wdGlvbnNbcmVjb2duaXplclR5cGVdO2lmKGxvY2FsT3B0aW9ucyl7X3RoaXMuZ3VhcmREaXJlY3Rpb25zKGxvY2FsT3B0aW9ucyk7cmVjb2duaXplci5zZXQobG9jYWxPcHRpb25zKX19fSxpbnNlcnRlZDpmdW5jdGlvbiBpbnNlcnRlZChlbCxiaW5kaW5nKXt2YXIgbWM9ZWwuaGFtbWVyO3ZhciBldmVudD1iaW5kaW5nLmFyZzt2YXIgZXZlbnRXaXRoRGlyPXN1Ykdlc3R1cmVzLmZpbmQoZnVuY3Rpb24oc3ViR2VzKXtyZXR1cm4gc3ViR2VzPT09ZXZlbnR9KT9ldmVudDpfdGhpcy5idWlsZEV2ZW50V2l0aERpcmVjdGlvbnMoZXZlbnQsZWwuX19oYW1tZXJDb25maWdbZXZlbnRdLmRpcmVjdGlvbik7aWYobWMuaGFuZGxlcil7bWMub2ZmKGV2ZW50V2l0aERpcixtYy5oYW5kbGVyKX1pZih0eXBlb2YgYmluZGluZy52YWx1ZSE9PVwiZnVuY3Rpb25cIil7bWMuaGFuZGxlcj1udWxsO2NvbnNvbGUud2FybihcIlt2dWUtaGFtbWVyXSBpbnZhbGlkIGhhbmRsZXIgZnVuY3Rpb24gZm9yIHYtaGFtbWVyOiBcIitiaW5kaW5nLmFyZyl9ZWxzZXttYy5vbihldmVudFdpdGhEaXIsbWMuaGFuZGxlcj1iaW5kaW5nLnZhbHVlKX19LGNvbXBvbmVudFVwZGF0ZWQ6ZnVuY3Rpb24gY29tcG9uZW50VXBkYXRlZChlbCxiaW5kaW5nKXt2YXIgbWM9ZWwuaGFtbWVyO3ZhciBldmVudD1iaW5kaW5nLmFyZzt2YXIgZXZlbnRXaXRoRGlyPXN1Ykdlc3R1cmVzLmZpbmQoZnVuY3Rpb24oc3ViR2VzKXtyZXR1cm4gc3ViR2VzPT09ZXZlbnR9KT9ldmVudDpfdGhpcy5idWlsZEV2ZW50V2l0aERpcmVjdGlvbnMoZXZlbnQsZWwuX19oYW1tZXJDb25maWdbZXZlbnRdLmRpcmVjdGlvbik7aWYobWMuaGFuZGxlcil7bWMub2ZmKGV2ZW50V2l0aERpcixtYy5oYW5kbGVyKX1pZih0eXBlb2YgYmluZGluZy52YWx1ZSE9PVwiZnVuY3Rpb25cIil7bWMuaGFuZGxlcj1udWxsO2NvbnNvbGUud2FybihcIlt2dWUtaGFtbWVyXSBpbnZhbGlkIGhhbmRsZXIgZnVuY3Rpb24gZm9yIHYtaGFtbWVyOiBcIitiaW5kaW5nLmFyZyl9ZWxzZXttYy5vbihldmVudFdpdGhEaXIsbWMuaGFuZGxlcj1iaW5kaW5nLnZhbHVlKX19LHVuYmluZDpmdW5jdGlvbiB1bmJpbmQoZWwsYmluZGluZyl7dmFyIG1jPWVsLmhhbW1lcjt2YXIgZXZlbnQ9YmluZGluZy5hcmc7dmFyIGV2ZW50V2l0aERpcj1zdWJHZXN0dXJlcy5maW5kKGZ1bmN0aW9uKHN1Ykdlcyl7cmV0dXJuIHN1Ykdlcz09PWV2ZW50fSk/ZXZlbnQ6X3RoaXMuYnVpbGRFdmVudFdpdGhEaXJlY3Rpb25zKGV2ZW50LGVsLl9faGFtbWVyQ29uZmlnW2V2ZW50XS5kaXJlY3Rpb24pO2lmKG1jLmhhbmRsZXIpe2VsLmhhbW1lci5vZmYoZXZlbnRXaXRoRGlyLG1jLmhhbmRsZXIpfWlmKCEoMCxfa2V5czIuZGVmYXVsdCkobWMuaGFuZGxlcnMpLmxlbmd0aCl7ZWwuaGFtbWVyLmRlc3Ryb3koKTtlbC5oYW1tZXI9bnVsbH19fSl9LGd1YXJkRGlyZWN0aW9uczpmdW5jdGlvbiBndWFyZERpcmVjdGlvbnMob3B0aW9ucyl7dmFyIGRpcj1vcHRpb25zLmRpcmVjdGlvbjtpZih0eXBlb2YgZGlyPT09XCJzdHJpbmdcIil7dmFyIGhhbW1lckRpcmVjdGlvbj1cIkRJUkVDVElPTl9cIitkaXIudG9VcHBlckNhc2UoKTtpZihkaXJlY3Rpb25zLmluZGV4T2YoZGlyKT4tMSYmX2hhbW1lcmpzMi5kZWZhdWx0Lmhhc093blByb3BlcnR5KGhhbW1lckRpcmVjdGlvbikpe29wdGlvbnMuZGlyZWN0aW9uPV9oYW1tZXJqczIuZGVmYXVsdFtoYW1tZXJEaXJlY3Rpb25dfWVsc2V7Y29uc29sZS53YXJuKFwiW3Z1ZS1oYW1tZXJdIGludmFsaWQgZGlyZWN0aW9uOiBcIitkaXIpfX19LGJ1aWxkRXZlbnRXaXRoRGlyZWN0aW9uczpmdW5jdGlvbiBidWlsZEV2ZW50V2l0aERpcmVjdGlvbnMoZXZlbnROYW1lLGRpcmVjdGlvbkFycmF5KXt2YXIgZj17fTtkaXJlY3Rpb25BcnJheS5mb3JFYWNoKGZ1bmN0aW9uKGRpcil7ZGlyPWRpci50b0xvd2VyQ2FzZSgpO2lmKGRpcj09PVwiaG9yaXpvbnRhbFwiKXtmLmxlZnQ9MTtmLnJpZ2h0PTF9ZWxzZSBpZihkaXI9PT1cInZlcnRpY2FsXCIpe2YudXA9MTtmLmRvd249MX1lbHNlIGlmKGRpcj09PVwiYWxsXCIpe2YubGVmdD0xO2YucmlnaHQ9MTtmLnVwPTE7Zi5kb3duPTF9ZWxzZXtmW2Rpcl09MX19KTt2YXIgX2RpcmVjdGlvbkFycmF5PSgwLF9rZXlzMi5kZWZhdWx0KShmKTtpZihfZGlyZWN0aW9uQXJyYXkubGVuZ3RoPT09MCl7cmV0dXJuIGV2ZW50TmFtZX12YXIgZXZlbnRXaXRoRGlyQXJyYXk9X2RpcmVjdGlvbkFycmF5Lm1hcChmdW5jdGlvbihkaXIpe3JldHVybiBldmVudE5hbWUrZGlyfSk7cmV0dXJuIGV2ZW50V2l0aERpckFycmF5LmpvaW4oXCIgXCIpfSxjYXBpdGFsaXplOmZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyKXtyZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3N0ci5zbGljZSgxKX19OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue2-hammer/index.min.js\n");

/***/ }),

/***/ "./node_modules/vuedraggable/dist/vuedraggable.common.js":
/*!***************************************************************!*\
  !*** ./node_modules/vuedraggable/dist/vuedraggable.common.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"07e3\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"0fc9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"3a38\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"1654\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $at = __webpack_require__(\"71c1\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(\"30f1\")(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"1691\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"1af6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = __webpack_require__(\"63b6\");\n\n$export($export.S, 'Array', { isArray: __webpack_require__(\"9003\") });\n\n\n/***/ }),\n\n/***/ \"1bc3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"f772\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"1ec9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"f772\");\nvar document = __webpack_require__(\"e53d\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"20fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $defineProperty = __webpack_require__(\"d9f6\");\nvar createDesc = __webpack_require__(\"aebd\");\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"241e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"25eb\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"25eb\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"294c\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"30f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"b8e3\");\nvar $export = __webpack_require__(\"63b6\");\nvar redefine = __webpack_require__(\"9138\");\nvar hide = __webpack_require__(\"35e8\");\nvar Iterators = __webpack_require__(\"481b\");\nvar $iterCreate = __webpack_require__(\"8f60\");\nvar setToStringTag = __webpack_require__(\"45f2\");\nvar getPrototypeOf = __webpack_require__(\"53e2\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n/***/ }),\n\n/***/ \"32a6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"241e\");\nvar $keys = __webpack_require__(\"c3a1\");\n\n__webpack_require__(\"ce7e\")('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ \"32fc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"e53d\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"335c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"6b4c\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"355d\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"35e8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"d9f6\");\nvar createDesc = __webpack_require__(\"aebd\");\nmodule.exports = __webpack_require__(\"8e60\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ \"36c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"335c\");\nvar defined = __webpack_require__(\"25eb\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"3702\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(\"481b\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"3a38\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"40c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"6b4c\");\nvar TAG = __webpack_require__(\"5168\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"45f2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"d9f6\").f;\nvar has = __webpack_require__(\"07e3\");\nvar TAG = __webpack_require__(\"5168\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ \"469f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"6c1c\");\n__webpack_require__(\"1654\");\nmodule.exports = __webpack_require__(\"7d7b\");\n\n\n/***/ }),\n\n/***/ \"481b\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"4aa6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"dc62\");\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"4ee1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n\n\n/***/ }),\n\n/***/ \"50ed\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n\n\n/***/ }),\n\n/***/ \"5168\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"dbdb\")('wks');\nvar uid = __webpack_require__(\"62a0\");\nvar Symbol = __webpack_require__(\"e53d\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"5176\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"51b6\");\n\n/***/ }),\n\n/***/ \"51b6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"a3c3\");\nmodule.exports = __webpack_require__(\"584a\").Object.assign;\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"53e2\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"07e3\");\nvar toObject = __webpack_require__(\"241e\");\nvar IE_PROTO = __webpack_require__(\"5559\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"549b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ctx = __webpack_require__(\"d864\");\nvar $export = __webpack_require__(\"63b6\");\nvar toObject = __webpack_require__(\"241e\");\nvar call = __webpack_require__(\"b0dc\");\nvar isArrayIter = __webpack_require__(\"3702\");\nvar toLength = __webpack_require__(\"b447\");\nvar createProperty = __webpack_require__(\"20fd\");\nvar getIterFn = __webpack_require__(\"7cd6\");\n\n$export($export.S + $export.F * !__webpack_require__(\"4ee1\")(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"54a1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"6c1c\");\n__webpack_require__(\"1654\");\nmodule.exports = __webpack_require__(\"95d5\");\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5559\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"dbdb\")('keys');\nvar uid = __webpack_require__(\"62a0\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"584a\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"5b4e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(\"36c3\");\nvar toLength = __webpack_require__(\"b447\");\nvar toAbsoluteIndex = __webpack_require__(\"0fc9\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5d73\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"469f\");\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"62a0\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"63b6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"e53d\");\nvar core = __webpack_require__(\"584a\");\nvar ctx = __webpack_require__(\"d864\");\nvar hide = __webpack_require__(\"35e8\");\nvar has = __webpack_require__(\"07e3\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"6b4c\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"6c1c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"c367\");\nvar global = __webpack_require__(\"e53d\");\nvar hide = __webpack_require__(\"35e8\");\nvar Iterators = __webpack_require__(\"481b\");\nvar TO_STRING_TAG = __webpack_require__(\"5168\")('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n\n\n/***/ }),\n\n/***/ \"71c1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"3a38\");\nvar defined = __webpack_require__(\"25eb\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"774e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"d2d5\");\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"794b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"8e60\") && !__webpack_require__(\"294c\")(function () {\n  return Object.defineProperty(__webpack_require__(\"1ec9\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"79aa\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"7cd6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"40c3\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar Iterators = __webpack_require__(\"481b\");\nmodule.exports = __webpack_require__(\"584a\").getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"7d7b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"e4ae\");\nvar get = __webpack_require__(\"7cd6\");\nmodule.exports = __webpack_require__(\"584a\").getIterator = function (it) {\n  var iterFn = get(it);\n  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n  return anObject(iterFn.call(it));\n};\n\n\n/***/ }),\n\n/***/ \"7e90\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"d9f6\");\nvar anObject = __webpack_require__(\"e4ae\");\nvar getKeys = __webpack_require__(\"c3a1\");\n\nmodule.exports = __webpack_require__(\"8e60\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"8436\":\n/***/ (function(module, exports) {\n\nmodule.exports = function () { /* empty */ };\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"8aae\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"32a6\");\nmodule.exports = __webpack_require__(\"584a\").Object.keys;\n\n\n/***/ }),\n\n/***/ \"8e60\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"294c\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"8f60\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"a159\");\nvar descriptor = __webpack_require__(\"aebd\");\nvar setToStringTag = __webpack_require__(\"45f2\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"35e8\")(IteratorPrototype, __webpack_require__(\"5168\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"9003\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(\"6b4c\");\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"9138\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"35e8\");\n\n\n/***/ }),\n\n/***/ \"9306\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"c3a1\");\nvar gOPS = __webpack_require__(\"9aa9\");\nvar pIE = __webpack_require__(\"355d\");\nvar toObject = __webpack_require__(\"241e\");\nvar IObject = __webpack_require__(\"335c\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"294c\")(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"9427\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(\"63b6\");\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(\"a159\") });\n\n\n/***/ }),\n\n/***/ \"95d5\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"40c3\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar Iterators = __webpack_require__(\"481b\");\nmodule.exports = __webpack_require__(\"584a\").isIterable = function (it) {\n  var O = Object(it);\n  return O[ITERATOR] !== undefined\n    || '@@iterator' in O\n    // eslint-disable-next-line no-prototype-builtins\n    || Iterators.hasOwnProperty(classof(O));\n};\n\n\n/***/ }),\n\n/***/ \"9aa9\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a159\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"e4ae\");\nvar dPs = __webpack_require__(\"7e90\");\nvar enumBugKeys = __webpack_require__(\"1691\");\nvar IE_PROTO = __webpack_require__(\"5559\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(\"1ec9\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(\"32fc\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"a352\":\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! sortablejs */ \"./node_modules/sortablejs/Sortable.js\");\n\n/***/ }),\n\n/***/ \"a3c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"63b6\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"9306\") });\n\n\n/***/ }),\n\n/***/ \"a481\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar toInteger = __webpack_require__(\"4588\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar regExpExec = __webpack_require__(\"5f1b\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(\"214f\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n\n\n/***/ }),\n\n/***/ \"a4bb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"8aae\");\n\n/***/ }),\n\n/***/ \"a745\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"f410\");\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"aebd\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"b0dc\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(\"e4ae\");\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"b447\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"3a38\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"b8e3\":\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"c367\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"8436\");\nvar step = __webpack_require__(\"50ed\");\nvar Iterators = __webpack_require__(\"481b\");\nvar toIObject = __webpack_require__(\"36c3\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"30f1\")(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"c3a1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"e6f3\");\nvar enumBugKeys = __webpack_require__(\"1691\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"c649\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return insertNodeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return console; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return removeNode; });\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"a481\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var F_source_vuedraggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"4aa6\");\n/* harmony import */ var F_source_vuedraggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(F_source_vuedraggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nfunction getConsole() {\n  if (typeof window !== \"undefined\") {\n    return window.console;\n  }\n\n  return global.console;\n}\n\nvar console = getConsole();\n\nfunction cached(fn) {\n  var cache = F_source_vuedraggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1___default()(null);\n\n  return function cachedFn(str) {\n    var hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n}\n\nvar regex = /-(\\w)/g;\nvar camelize = cached(function (str) {\n  return str.replace(regex, function (_, c) {\n    return c ? c.toUpperCase() : \"\";\n  });\n});\n\nfunction removeNode(node) {\n  if (node.parentElement !== null) {\n    node.parentElement.removeChild(node);\n  }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n  var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n  fatherNode.insertBefore(node, refNode);\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n  return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"c8bb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"54a1\");\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"ce7e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"63b6\");\nvar core = __webpack_require__(\"584a\");\nvar fails = __webpack_require__(\"294c\");\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d2d5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"1654\");\n__webpack_require__(\"549b\");\nmodule.exports = __webpack_require__(\"584a\").Array.from;\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d864\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"79aa\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"d9f6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"e4ae\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"794b\");\nvar toPrimitive = __webpack_require__(\"1bc3\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"8e60\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"dbdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"584a\");\nvar global = __webpack_require__(\"e53d\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(\"b8e3\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"dc62\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"9427\");\nvar $Object = __webpack_require__(\"584a\").Object;\nmodule.exports = function create(P, D) {\n  return $Object.create(P, D);\n};\n\n\n/***/ }),\n\n/***/ \"e4ae\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"f772\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"e53d\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"e6f3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"07e3\");\nvar toIObject = __webpack_require__(\"36c3\");\nvar arrayIndexOf = __webpack_require__(\"5b4e\")(false);\nvar IE_PROTO = __webpack_require__(\"5559\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"f410\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"1af6\");\nmodule.exports = __webpack_require__(\"584a\").Array.isArray;\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = context(this, searchString, STARTS_WITH);\n    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = String(searchString);\n    return $startsWith\n      ? $startsWith.call(that, search, index)\n      : that.slice(index, index + search.length) === search;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"f772\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var setPublicPath_i\n  if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n    __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/assign.js\nvar object_assign = __webpack_require__(\"5176\");\nvar assign_default = /*#__PURE__*/__webpack_require__.n(object_assign);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/keys.js\nvar keys = __webpack_require__(\"a4bb\");\nvar keys_default = /*#__PURE__*/__webpack_require__.n(keys);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js\nvar is_array = __webpack_require__(\"a745\");\nvar is_array_default = /*#__PURE__*/__webpack_require__.n(is_array);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithHoles.js\n\nfunction _arrayWithHoles(arr) {\n  if (is_array_default()(arr)) return arr;\n}\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/get-iterator.js\nvar get_iterator = __webpack_require__(\"5d73\");\nvar get_iterator_default = /*#__PURE__*/__webpack_require__.n(get_iterator);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArrayLimit.js\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = get_iterator_default()(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/slicedToArray.js\n\n\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n  if (is_array_default()(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/from.js\nvar from = __webpack_require__(\"774e\");\nvar from_default = /*#__PURE__*/__webpack_require__.n(from);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/is-iterable.js\nvar is_iterable = __webpack_require__(\"c8bb\");\nvar is_iterable_default = /*#__PURE__*/__webpack_require__.n(is_iterable);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArray.js\n\n\nfunction _iterableToArray(iter) {\n  if (is_iterable_default()(Object(iter)) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return from_default()(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/toConsumableArray.js\n\n\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external {\"commonjs\":\"sortablejs\",\"commonjs2\":\"sortablejs\",\"amd\":\"sortablejs\",\"root\":\"Sortable\"}\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_ = __webpack_require__(\"a352\");\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_);\n\n// EXTERNAL MODULE: ./src/util/helper.js\nvar helper = __webpack_require__(\"c649\");\n\n// CONCATENATED MODULE: ./src/vuedraggable.js\n\n\n\n\n\n\n\n\n\n\nfunction buildAttribute(object, propName, value) {\n  if (value === undefined) {\n    return object;\n  }\n\n  object = object || {};\n  object[propName] = value;\n  return object;\n}\n\nfunction computeVmIndex(vnodes, element) {\n  return vnodes.map(function (elt) {\n    return elt.elm;\n  }).indexOf(element);\n}\n\nfunction _computeIndexes(slots, children, isTransition, footerOffset) {\n  if (!slots) {\n    return [];\n  }\n\n  var elmFromNodes = slots.map(function (elt) {\n    return elt.elm;\n  });\n  var footerIndex = children.length - footerOffset;\n\n  var rawIndexes = _toConsumableArray(children).map(function (elt, idx) {\n    return idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt);\n  });\n\n  return isTransition ? rawIndexes.filter(function (ind) {\n    return ind !== -1;\n  }) : rawIndexes;\n}\n\nfunction emit(evtName, evtData) {\n  var _this = this;\n\n  this.$nextTick(function () {\n    return _this.$emit(evtName.toLowerCase(), evtData);\n  });\n}\n\nfunction delegateAndEmit(evtName) {\n  var _this2 = this;\n\n  return function (evtData) {\n    if (_this2.realList !== null) {\n      _this2[\"onDrag\" + evtName](evtData);\n    }\n\n    emit.call(_this2, evtName, evtData);\n  };\n}\n\nfunction isTransitionName(name) {\n  return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction vuedraggable_isTransition(slots) {\n  if (!slots || slots.length !== 1) {\n    return false;\n  }\n\n  var _slots = _slicedToArray(slots, 1),\n      componentOptions = _slots[0].componentOptions;\n\n  if (!componentOptions) {\n    return false;\n  }\n\n  return isTransitionName(componentOptions.tag);\n}\n\nfunction getSlot(slot, scopedSlot, key) {\n  return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);\n}\n\nfunction computeChildrenAndOffsets(children, slot, scopedSlot) {\n  var headerOffset = 0;\n  var footerOffset = 0;\n  var header = getSlot(slot, scopedSlot, \"header\");\n\n  if (header) {\n    headerOffset = header.length;\n    children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);\n  }\n\n  var footer = getSlot(slot, scopedSlot, \"footer\");\n\n  if (footer) {\n    footerOffset = footer.length;\n    children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);\n  }\n\n  return {\n    children: children,\n    headerOffset: headerOffset,\n    footerOffset: footerOffset\n  };\n}\n\nfunction getComponentAttributes($attrs, componentData) {\n  var attributes = null;\n\n  var update = function update(name, value) {\n    attributes = buildAttribute(attributes, name, value);\n  };\n\n  var attrs = keys_default()($attrs).filter(function (key) {\n    return key === \"id\" || key.startsWith(\"data-\");\n  }).reduce(function (res, key) {\n    res[key] = $attrs[key];\n    return res;\n  }, {});\n\n  update(\"attrs\", attrs);\n\n  if (!componentData) {\n    return attributes;\n  }\n\n  var on = componentData.on,\n      props = componentData.props,\n      componentDataAttrs = componentData.attrs;\n  update(\"on\", on);\n  update(\"props\", props);\n\n  assign_default()(attributes.attrs, componentDataAttrs);\n\n  return attributes;\n}\n\nvar eventsListened = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nvar eventsToEmit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nvar readonlyProperties = [\"Move\"].concat(eventsListened, eventsToEmit).map(function (evt) {\n  return \"on\" + evt;\n});\nvar draggingElement = null;\nvar vuedraggable_props = {\n  options: Object,\n  list: {\n    type: Array,\n    required: false,\n    default: null\n  },\n  value: {\n    type: Array,\n    required: false,\n    default: null\n  },\n  noTransitionOnDrag: {\n    type: Boolean,\n    default: false\n  },\n  clone: {\n    type: Function,\n    default: function _default(original) {\n      return original;\n    }\n  },\n  element: {\n    type: String,\n    default: \"div\"\n  },\n  tag: {\n    type: String,\n    default: null\n  },\n  move: {\n    type: Function,\n    default: null\n  },\n  componentData: {\n    type: Object,\n    required: false,\n    default: null\n  }\n};\nvar draggableComponent = {\n  name: \"draggable\",\n  inheritAttrs: false,\n  props: vuedraggable_props,\n  data: function data() {\n    return {\n      transitionMode: false,\n      noneFunctionalComponentMode: false\n    };\n  },\n  render: function render(h) {\n    var slots = this.$slots.default;\n    this.transitionMode = vuedraggable_isTransition(slots);\n\n    var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),\n        children = _computeChildrenAndOf.children,\n        headerOffset = _computeChildrenAndOf.headerOffset,\n        footerOffset = _computeChildrenAndOf.footerOffset;\n\n    this.headerOffset = headerOffset;\n    this.footerOffset = footerOffset;\n    var attributes = getComponentAttributes(this.$attrs, this.componentData);\n    return h(this.getTag(), attributes, children);\n  },\n  created: function created() {\n    if (this.list !== null && this.value !== null) {\n      helper[\"b\" /* console */].error(\"Value and list props are mutually exclusive! Please set one or another.\");\n    }\n\n    if (this.element !== \"div\") {\n      helper[\"b\" /* console */].warn(\"Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props\");\n    }\n\n    if (this.options !== undefined) {\n      helper[\"b\" /* console */].warn(\"Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props\");\n    }\n  },\n  mounted: function mounted() {\n    var _this3 = this;\n\n    this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();\n\n    if (this.noneFunctionalComponentMode && this.transitionMode) {\n      throw new Error(\"Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: \".concat(this.getTag()));\n    }\n\n    var optionsAdded = {};\n    eventsListened.forEach(function (elt) {\n      optionsAdded[\"on\" + elt] = delegateAndEmit.call(_this3, elt);\n    });\n    eventsToEmit.forEach(function (elt) {\n      optionsAdded[\"on\" + elt] = emit.bind(_this3, elt);\n    });\n\n    var attributes = keys_default()(this.$attrs).reduce(function (res, key) {\n      res[Object(helper[\"a\" /* camelize */])(key)] = _this3.$attrs[key];\n      return res;\n    }, {});\n\n    var options = assign_default()({}, this.options, attributes, optionsAdded, {\n      onMove: function onMove(evt, originalEvent) {\n        return _this3.onDragMove(evt, originalEvent);\n      }\n    });\n\n    !(\"draggable\" in options) && (options.draggable = \">*\");\n    this._sortable = new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer, options);\n    this.computeIndexes();\n  },\n  beforeDestroy: function beforeDestroy() {\n    if (this._sortable !== undefined) this._sortable.destroy();\n  },\n  computed: {\n    rootContainer: function rootContainer() {\n      return this.transitionMode ? this.$el.children[0] : this.$el;\n    },\n    realList: function realList() {\n      return this.list ? this.list : this.value;\n    }\n  },\n  watch: {\n    options: {\n      handler: function handler(newOptionValue) {\n        this.updateOptions(newOptionValue);\n      },\n      deep: true\n    },\n    $attrs: {\n      handler: function handler(newOptionValue) {\n        this.updateOptions(newOptionValue);\n      },\n      deep: true\n    },\n    realList: function realList() {\n      this.computeIndexes();\n    }\n  },\n  methods: {\n    getIsFunctional: function getIsFunctional() {\n      var fnOptions = this._vnode.fnOptions;\n      return fnOptions && fnOptions.functional;\n    },\n    getTag: function getTag() {\n      return this.tag || this.element;\n    },\n    updateOptions: function updateOptions(newOptionValue) {\n      for (var property in newOptionValue) {\n        var value = Object(helper[\"a\" /* camelize */])(property);\n\n        if (readonlyProperties.indexOf(value) === -1) {\n          this._sortable.option(value, newOptionValue[property]);\n        }\n      }\n    },\n    getChildrenNodes: function getChildrenNodes() {\n      if (this.noneFunctionalComponentMode) {\n        return this.$children[0].$slots.default;\n      }\n\n      var rawNodes = this.$slots.default;\n      return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;\n    },\n    computeIndexes: function computeIndexes() {\n      var _this4 = this;\n\n      this.$nextTick(function () {\n        _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode, _this4.footerOffset);\n      });\n    },\n    getUnderlyingVm: function getUnderlyingVm(htmlElt) {\n      var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);\n\n      if (index === -1) {\n        //Edge case during move callback: related element might be\n        //an element different from collection\n        return null;\n      }\n\n      var element = this.realList[index];\n      return {\n        index: index,\n        element: element\n      };\n    },\n    getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {\n      var vue = _ref.__vue__;\n\n      if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {\n        if (!(\"realList\" in vue) && vue.$children.length === 1 && \"realList\" in vue.$children[0]) return vue.$children[0];\n        return vue;\n      }\n\n      return vue.$parent;\n    },\n    emitChanges: function emitChanges(evt) {\n      var _this5 = this;\n\n      this.$nextTick(function () {\n        _this5.$emit(\"change\", evt);\n      });\n    },\n    alterList: function alterList(onList) {\n      if (this.list) {\n        onList(this.list);\n        return;\n      }\n\n      var newList = _toConsumableArray(this.value);\n\n      onList(newList);\n      this.$emit(\"input\", newList);\n    },\n    spliceList: function spliceList() {\n      var _arguments = arguments;\n\n      var spliceList = function spliceList(list) {\n        return list.splice.apply(list, _toConsumableArray(_arguments));\n      };\n\n      this.alterList(spliceList);\n    },\n    updatePosition: function updatePosition(oldIndex, newIndex) {\n      var updatePosition = function updatePosition(list) {\n        return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n      };\n\n      this.alterList(updatePosition);\n    },\n    getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {\n      var to = _ref2.to,\n          related = _ref2.related;\n      var component = this.getUnderlyingPotencialDraggableComponent(to);\n\n      if (!component) {\n        return {\n          component: component\n        };\n      }\n\n      var list = component.realList;\n      var context = {\n        list: list,\n        component: component\n      };\n\n      if (to !== related && list && component.getUnderlyingVm) {\n        var destination = component.getUnderlyingVm(related);\n\n        if (destination) {\n          return assign_default()(destination, context);\n        }\n      }\n\n      return context;\n    },\n    getVmIndex: function getVmIndex(domIndex) {\n      var indexes = this.visibleIndexes;\n      var numberIndexes = indexes.length;\n      return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n    },\n    getComponent: function getComponent() {\n      return this.$slots.default[0].componentInstance;\n    },\n    resetTransitionData: function resetTransitionData(index) {\n      if (!this.noTransitionOnDrag || !this.transitionMode) {\n        return;\n      }\n\n      var nodes = this.getChildrenNodes();\n      nodes[index].data = null;\n      var transitionContainer = this.getComponent();\n      transitionContainer.children = [];\n      transitionContainer.kept = undefined;\n    },\n    onDragStart: function onDragStart(evt) {\n      this.context = this.getUnderlyingVm(evt.item);\n      evt.item._underlying_vm_ = this.clone(this.context.element);\n      draggingElement = evt.item;\n    },\n    onDragAdd: function onDragAdd(evt) {\n      var element = evt.item._underlying_vm_;\n\n      if (element === undefined) {\n        return;\n      }\n\n      Object(helper[\"d\" /* removeNode */])(evt.item);\n      var newIndex = this.getVmIndex(evt.newIndex);\n      this.spliceList(newIndex, 0, element);\n      this.computeIndexes();\n      var added = {\n        element: element,\n        newIndex: newIndex\n      };\n      this.emitChanges({\n        added: added\n      });\n    },\n    onDragRemove: function onDragRemove(evt) {\n      Object(helper[\"c\" /* insertNodeAt */])(this.rootContainer, evt.item, evt.oldIndex);\n\n      if (evt.pullMode === \"clone\") {\n        Object(helper[\"d\" /* removeNode */])(evt.clone);\n        return;\n      }\n\n      var oldIndex = this.context.index;\n      this.spliceList(oldIndex, 1);\n      var removed = {\n        element: this.context.element,\n        oldIndex: oldIndex\n      };\n      this.resetTransitionData(oldIndex);\n      this.emitChanges({\n        removed: removed\n      });\n    },\n    onDragUpdate: function onDragUpdate(evt) {\n      Object(helper[\"d\" /* removeNode */])(evt.item);\n      Object(helper[\"c\" /* insertNodeAt */])(evt.from, evt.item, evt.oldIndex);\n      var oldIndex = this.context.index;\n      var newIndex = this.getVmIndex(evt.newIndex);\n      this.updatePosition(oldIndex, newIndex);\n      var moved = {\n        element: this.context.element,\n        oldIndex: oldIndex,\n        newIndex: newIndex\n      };\n      this.emitChanges({\n        moved: moved\n      });\n    },\n    updateProperty: function updateProperty(evt, propertyName) {\n      evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);\n    },\n    computeFutureIndex: function computeFutureIndex(relatedContext, evt) {\n      if (!relatedContext.element) {\n        return 0;\n      }\n\n      var domChildren = _toConsumableArray(evt.to.children).filter(function (el) {\n        return el.style[\"display\"] !== \"none\";\n      });\n\n      var currentDOMIndex = domChildren.indexOf(evt.related);\n      var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n      var draggedInList = domChildren.indexOf(draggingElement) !== -1;\n      return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;\n    },\n    onDragMove: function onDragMove(evt, originalEvent) {\n      var onMove = this.move;\n\n      if (!onMove || !this.realList) {\n        return true;\n      }\n\n      var relatedContext = this.getRelatedContextFromMoveEvent(evt);\n      var draggedContext = this.context;\n      var futureIndex = this.computeFutureIndex(relatedContext, evt);\n\n      assign_default()(draggedContext, {\n        futureIndex: futureIndex\n      });\n\n      var sendEvt = assign_default()({}, evt, {\n        relatedContext: relatedContext,\n        draggedContext: draggedContext\n      });\n\n      return onMove(sendEvt, originalEvent);\n    },\n    onDragEnd: function onDragEnd() {\n      this.computeIndexes();\n      draggingElement = null;\n    }\n  }\n};\n\nif (typeof window !== \"undefined\" && \"Vue\" in window) {\n  window.Vue.component(\"draggable\", draggableComponent);\n}\n\n/* harmony default export */ var vuedraggable = (draggableComponent);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (vuedraggable);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n//# sourceMappingURL=vuedraggable.common.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlZHJhZ2dhYmxlL2Rpc3QvdnVlZHJhZ2dhYmxlLmNvbW1vbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWVkcmFnZ2FibGUvZGlzdC92dWVkcmFnZ2FibGUuY29tbW9uLmpzPzMxMGUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcImZiMTVcIik7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICh7XG5cbi8qKiovIFwiMDJmNFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ1ODhcIik7XG52YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiZTEzXCIpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIwMzkwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgYXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDJmNFwiKSh0cnVlKTtcblxuIC8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYWR2YW5jZXN0cmluZ2luZGV4XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChTLCBpbmRleCwgdW5pY29kZSkge1xuICByZXR1cm4gaW5kZXggKyAodW5pY29kZSA/IGF0KFMsIGluZGV4KS5sZW5ndGggOiAxKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMDdlM1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjBiZmJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIDIxLjIuNS4zIGdldCBSZWdFeHAucHJvdG90eXBlLmZsYWdzXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiY2I3Y1wiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjBmYzlcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzYTM4XCIpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxNjU0XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJGF0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjcxYzFcIikodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbl9fd2VicGFja19yZXF1aXJlX18oXCIzMGYxXCIpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4vLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGluZGV4ID0gdGhpcy5faTtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMTY5MVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxYWY2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDIyLjEuMi4yIC8gMTUuNC4zLjIgQXJyYXkuaXNBcnJheShhcmcpXG52YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2M2I2XCIpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ0FycmF5JywgeyBpc0FycmF5OiBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTAwM1wiKSB9KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxYmMzXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImY3NzJcIik7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxZWM5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmNzcyXCIpO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU1M2RcIikuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjIwZmRcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDlmNlwiKTtcbnZhciBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImFlYmRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCBpbiBvYmplY3QpICRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjIxNGZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbl9fd2VicGFja19yZXF1aXJlX18oXCJiMGM1XCIpO1xudmFyIHJlZGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJhYmFcIik7XG52YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzMmU5XCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc5ZTVcIik7XG52YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiZTEzXCIpO1xudmFyIHdrcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyYjRjXCIpO1xudmFyIHJlZ2V4cEV4ZWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTIwYVwiKTtcblxudmFyIFNQRUNJRVMgPSB3a3MoJ3NwZWNpZXMnKTtcblxudmFyIFJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gI3JlcGxhY2UgbmVlZHMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgbmFtZWQgZ3JvdXBzLlxuICAvLyAjbWF0Y2ggd29ya3MgZmluZSBiZWNhdXNlIGl0IGp1c3QgcmV0dXJuIHRoZSBleGVjIHJlc3VsdHMsIGV2ZW4gaWYgaXQgaGFzXG4gIC8vIGEgXCJncm9wc1wiIHByb3BlcnR5LlxuICB2YXIgcmUgPSAvLi87XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHJlc3VsdC5ncm91cHMgPSB7IGE6ICc3JyB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIHJldHVybiAnJy5yZXBsYWNlKHJlLCAnJDxhPicpICE9PSAnNyc7XG59KTtcblxudmFyIFNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQyA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIENocm9tZSA1MSBoYXMgYSBidWdneSBcInNwbGl0XCIgaW1wbGVtZW50YXRpb24gd2hlbiBSZWdFeHAjZXhlYyAhPT0gbmF0aXZlRXhlY1xuICB2YXIgcmUgPSAvKD86KS87XG4gIHZhciBvcmlnaW5hbEV4ZWMgPSByZS5leGVjO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gb3JpZ2luYWxFeGVjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH07XG4gIHZhciByZXN1bHQgPSAnYWInLnNwbGl0KHJlKTtcbiAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPT09IDIgJiYgcmVzdWx0WzBdID09PSAnYScgJiYgcmVzdWx0WzFdID09PSAnYic7XG59KSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGxlbmd0aCwgZXhlYykge1xuICB2YXIgU1lNQk9MID0gd2tzKEtFWSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19TWU1CT0wgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN0cmluZyBtZXRob2RzIGNhbGwgc3ltYm9sLW5hbWVkIFJlZ0VwIG1ldGhvZHNcbiAgICB2YXIgTyA9IHt9O1xuICAgIE9bU1lNQk9MXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH07XG4gICAgcmV0dXJuICcnW0tFWV0oTykgIT0gNztcbiAgfSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19FWEVDID0gREVMRUdBVEVTX1RPX1NZTUJPTCA/ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3ltYm9sLW5hbWVkIFJlZ0V4cCBtZXRob2RzIGNhbGwgLmV4ZWNcbiAgICB2YXIgZXhlY0NhbGxlZCA9IGZhbHNlO1xuICAgIHZhciByZSA9IC9hLztcbiAgICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyBleGVjQ2FsbGVkID0gdHJ1ZTsgcmV0dXJuIG51bGw7IH07XG4gICAgaWYgKEtFWSA9PT0gJ3NwbGl0Jykge1xuICAgICAgLy8gUmVnRXhwW0BAc3BsaXRdIGRvZXNuJ3QgY2FsbCB0aGUgcmVnZXgncyBleGVjIG1ldGhvZCwgYnV0IGZpcnN0IGNyZWF0ZXNcbiAgICAgIC8vIGEgbmV3IG9uZS4gV2UgbmVlZCB0byByZXR1cm4gdGhlIHBhdGNoZWQgcmVnZXggd2hlbiBjcmVhdGluZyB0aGUgbmV3IG9uZS5cbiAgICAgIHJlLmNvbnN0cnVjdG9yID0ge307XG4gICAgICByZS5jb25zdHJ1Y3RvcltTUEVDSUVTXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlOyB9O1xuICAgIH1cbiAgICByZVtTWU1CT0xdKCcnKTtcbiAgICByZXR1cm4gIWV4ZWNDYWxsZWQ7XG4gIH0pIDogdW5kZWZpbmVkO1xuXG4gIGlmIChcbiAgICAhREVMRUdBVEVTX1RPX1NZTUJPTCB8fFxuICAgICFERUxFR0FURVNfVE9fRVhFQyB8fFxuICAgIChLRVkgPT09ICdyZXBsYWNlJyAmJiAhUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMpIHx8XG4gICAgKEtFWSA9PT0gJ3NwbGl0JyAmJiAhU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDKVxuICApIHtcbiAgICB2YXIgbmF0aXZlUmVnRXhwTWV0aG9kID0gLy4vW1NZTUJPTF07XG4gICAgdmFyIGZucyA9IGV4ZWMoXG4gICAgICBkZWZpbmVkLFxuICAgICAgU1lNQk9MLFxuICAgICAgJydbS0VZXSxcbiAgICAgIGZ1bmN0aW9uIG1heWJlQ2FsbE5hdGl2ZShuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgICBpZiAocmVnZXhwLmV4ZWMgPT09IHJlZ2V4cEV4ZWMpIHtcbiAgICAgICAgICBpZiAoREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgICAgIC8vIFRoZSBuYXRpdmUgU3RyaW5nIG1ldGhvZCBhbHJlYWR5IGRlbGVnYXRlcyB0byBAQG1ldGhvZCAodGhpc1xuICAgICAgICAgICAgLy8gcG9seWZpbGxlZCBmdW5jdGlvbiksIGxlYXNpbmcgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAgICAgICAgICAgLy8gV2UgYXZvaWQgaXQgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgbmF0aXZlIEBAbWV0aG9kIG1ldGhvZC5cbiAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVSZWdFeHBNZXRob2QuY2FsbChyZWdleHAsIHN0ciwgYXJnMikgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG5hdGl2ZU1ldGhvZC5jYWxsKHN0ciwgcmVnZXhwLCBhcmcyKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlIH07XG4gICAgICB9XG4gICAgKTtcbiAgICB2YXIgc3RyZm4gPSBmbnNbMF07XG4gICAgdmFyIHJ4Zm4gPSBmbnNbMV07XG5cbiAgICByZWRlZmluZShTdHJpbmcucHJvdG90eXBlLCBLRVksIHN0cmZuKTtcbiAgICBoaWRlKFJlZ0V4cC5wcm90b3R5cGUsIFNZTUJPTCwgbGVuZ3RoID09IDJcbiAgICAgIC8vIDIxLjIuNS44IFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXShzdHJpbmcsIHJlcGxhY2VWYWx1ZSlcbiAgICAgIC8vIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdKHN0cmluZywgbGltaXQpXG4gICAgICA/IGZ1bmN0aW9uIChzdHJpbmcsIGFyZykgeyByZXR1cm4gcnhmbi5jYWxsKHN0cmluZywgdGhpcywgYXJnKTsgfVxuICAgICAgLy8gMjEuMi41LjYgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXShzdHJpbmcpXG4gICAgICAvLyAyMS4yLjUuOSBSZWdFeHAucHJvdG90eXBlW0BAc2VhcmNoXShzdHJpbmcpXG4gICAgICA6IGZ1bmN0aW9uIChzdHJpbmcpIHsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMpOyB9XG4gICAgKTtcbiAgfVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyMzBlXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkM2Y0XCIpO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc3MjZcIikuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjIzYzZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmQ5NVwiKTtcbnZhciBUQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmI0Y1wiKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjI0MWVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjVlYlwiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyNWViXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMjk0Y1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMmFiYVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc3MjZcIik7XG52YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzMmU5XCIpO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2OWE4XCIpO1xudmFyIFNSQyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjYTVhXCIpKCdzcmMnKTtcbnZhciAkdG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZmE1YlwiKTtcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyIFRQTCA9ICgnJyArICR0b1N0cmluZykuc3BsaXQoVE9fU1RSSU5HKTtcblxuX193ZWJwYWNrX3JlcXVpcmVfXyhcIjgzNzhcIikuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gJHRvU3RyaW5nLmNhbGwoaXQpO1xufTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsLCBzYWZlKSB7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHZhbCA9PSAnZnVuY3Rpb24nO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgJ25hbWUnKSB8fCBoaWRlKHZhbCwgJ25hbWUnLCBrZXkpO1xuICBpZiAoT1trZXldID09PSB2YWwpIHJldHVybjtcbiAgaWYgKGlzRnVuY3Rpb24pIGhhcyh2YWwsIFNSQykgfHwgaGlkZSh2YWwsIFNSQywgT1trZXldID8gJycgKyBPW2tleV0gOiBUUEwuam9pbihTdHJpbmcoa2V5KSkpO1xuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2UgaWYgKCFzYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfSBlbHNlIGlmIChPW2tleV0pIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSB7XG4gICAgaGlkZShPLCBrZXksIHZhbCk7XG4gIH1cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiB0aGlzW1NSQ10gfHwgJHRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyYjRjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBzdG9yZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NTM3XCIpKCd3a3MnKTtcbnZhciB1aWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiY2E1YVwiKTtcbnZhciBTeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzcyNlwiKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyZDAwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMmQ5NVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMmZkYlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8vIDIxLjEuMy43IFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMoc2VhcmNoU3RyaW5nLCBwb3NpdGlvbiA9IDApXG5cbnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjVjYTFcIik7XG52YXIgY29udGV4dCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkMmM4XCIpO1xudmFyIElOQ0xVREVTID0gJ2luY2x1ZGVzJztcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE0N1wiKShJTkNMVURFUyksICdTdHJpbmcnLCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhzZWFyY2hTdHJpbmcgLyogLCBwb3NpdGlvbiA9IDAgKi8pIHtcbiAgICByZXR1cm4gISF+Y29udGV4dCh0aGlzLCBzZWFyY2hTdHJpbmcsIElOQ0xVREVTKVxuICAgICAgLmluZGV4T2Yoc2VhcmNoU3RyaW5nLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjMwZjFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBMSUJSQVJZID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImI4ZTNcIik7XG52YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2M2I2XCIpO1xudmFyIHJlZGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjkxMzhcIik7XG52YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzNWU4XCIpO1xudmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0ODFiXCIpO1xudmFyICRpdGVyQ3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjhmNjBcIik7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDVmMlwiKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1M2UyXCIpO1xudmFyIElURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUxNjhcIikoJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbnZhciBGRl9JVEVSQVRPUiA9ICdAQGl0ZXJhdG9yJztcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkge1xuICAgIGlmICghQlVHR1kgJiYga2luZCBpbiBwcm90bykgcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVM7XG4gIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7XG4gIHZhciBwcm90byA9IEJhc2UucHJvdG90eXBlO1xuICB2YXIgJG5hdGl2ZSA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXTtcbiAgdmFyICRkZWZhdWx0ID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVCk7XG4gIHZhciAkZW50cmllcyA9IERFRkFVTFQgPyAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJykgOiB1bmRlZmluZWQ7XG4gIHZhciAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZTtcbiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYgKCRhbnlOYXRpdmUpIHtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZiAoIUxJQlJBUlkgJiYgdHlwZW9mIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgfVxuICB9XG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykge1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gJG5hdGl2ZS5jYWxsKHRoaXMpOyB9O1xuICB9XG4gIC8vIERlZmluZSBpdGVyYXRvclxuICBpZiAoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpIHtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddID0gcmV0dXJuVGhpcztcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoa2V5IGluIG1ldGhvZHMpIHtcbiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzJhNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyAxOS4xLjIuMTQgT2JqZWN0LmtleXMoTylcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyNDFlXCIpO1xudmFyICRrZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImMzYTFcIik7XG5cbl9fd2VicGFja19yZXF1aXJlX18oXCJjZTdlXCIpKCdrZXlzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCkge1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzJlOVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODZjY1wiKTtcbnZhciBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ2MzBcIik7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5ZTFlXCIpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzJmY1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTUzZFwiKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjMzNWNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmI0Y1wiKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIzNTVkXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbmV4cG9ydHMuZiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjM1ZThcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGRQID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ5ZjZcIik7XG52YXIgY3JlYXRlRGVzYyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhZWJkXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOGU2MFwiKSA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjM2YzNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzMzVjXCIpO1xudmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjVlYlwiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzcwMlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ4MWJcIik7XG52YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE2OFwiKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIzYTM4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIDcuMS40IFRvSW50ZWdlclxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjQwYzNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmI0Y1wiKTtcbnZhciBUQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE2OFwiKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjQ1ODhcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNDVmMlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZGVmID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ5ZjZcIikuZjtcbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDdlM1wiKTtcbnZhciBUQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE2OFwiKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHRhZywgc3RhdCkge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI0NjMwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNDY5ZlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmMxY1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18oXCIxNjU0XCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiN2Q3YlwiKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI0ODFiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNGFhNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkYzYyXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI0YmY4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImJlMTNcIik7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNGVlMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE2OFwiKSgnaXRlcmF0b3InKTtcbnZhciBTQUZFX0NMT1NJTkcgPSBmYWxzZTtcblxudHJ5IHtcbiAgdmFyIHJpdGVyID0gWzddW0lURVJBVE9SXSgpO1xuICByaXRlclsncmV0dXJuJ10gPSBmdW5jdGlvbiAoKSB7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIEFycmF5LmZyb20ocml0ZXIsIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYywgc2tpcENsb3NpbmcpIHtcbiAgaWYgKCFza2lwQ2xvc2luZyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBzYWZlID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IFs3XTtcbiAgICB2YXIgaXRlciA9IGFycltJVEVSQVRPUl0oKTtcbiAgICBpdGVyLm5leHQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB7IGRvbmU6IHNhZmUgPSB0cnVlIH07IH07XG4gICAgYXJyW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXI7IH07XG4gICAgZXhlYyhhcnIpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIHNhZmU7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjUwZWRcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTE0N1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgTUFUQ0ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmI0Y1wiKSgnbWF0Y2gnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgcmUgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbS0VZXShyZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0cnkge1xuICAgICAgcmVbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gIScvLi8nW0tFWV0ocmUpO1xuICAgIH0gY2F0Y2ggKGYpIHsgLyogZW1wdHkgKi8gfVxuICB9IHJldHVybiB0cnVlO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1MTY4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBzdG9yZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkYmRiXCIpKCd3a3MnKTtcbnZhciB1aWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjJhMFwiKTtcbnZhciBTeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTUzZFwiKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1MTc2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUxYjZcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjUxYjZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuX193ZWJwYWNrX3JlcXVpcmVfXyhcImEzYzNcIik7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1ODRhXCIpLk9iamVjdC5hc3NpZ247XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTIwYVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgcmVnZXhwRmxhZ3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMGJmYlwiKTtcblxudmFyIG5hdGl2ZUV4ZWMgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWM7XG4vLyBUaGlzIGFsd2F5cyByZWZlcnMgdG8gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGVcbi8vIFN0cmluZyNyZXBsYWNlIHBvbHlmaWxsIHVzZXMgLi9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzLFxuLy8gd2hpY2ggbG9hZHMgdGhpcyBmaWxlIGJlZm9yZSBwYXRjaGluZyB0aGUgbWV0aG9kLlxudmFyIG5hdGl2ZVJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBMQVNUX0lOREVYID0gJ2xhc3RJbmRleCc7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvLFxuICAgICAgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTFbTEFTVF9JTkRFWF0gIT09IDAgfHwgcmUyW0xBU1RfSU5ERVhdICE9PSAwO1xufSkoKTtcblxuLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXAsIGNvcGllZCBmcm9tIGVzNS1zaGltJ3MgU3RyaW5nI3NwbGl0IHBhdGNoLlxudmFyIE5QQ0dfSU5DTFVERUQgPSAvKCk/Py8uZXhlYygnJylbMV0gIT09IHVuZGVmaW5lZDtcblxudmFyIFBBVENIID0gVVBEQVRFU19MQVNUX0lOREVYX1dST05HIHx8IE5QQ0dfSU5DTFVERUQ7XG5cbmlmIChQQVRDSCkge1xuICBwYXRjaGVkRXhlYyA9IGZ1bmN0aW9uIGV4ZWMoc3RyKSB7XG4gICAgdmFyIHJlID0gdGhpcztcbiAgICB2YXIgbGFzdEluZGV4LCByZUNvcHksIG1hdGNoLCBpO1xuXG4gICAgaWYgKE5QQ0dfSU5DTFVERUQpIHtcbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14nICsgcmUuc291cmNlICsgJyQoPyFcXFxccyknLCByZWdleHBGbGFncy5jYWxsKHJlKSk7XG4gICAgfVxuICAgIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcpIGxhc3RJbmRleCA9IHJlW0xBU1RfSU5ERVhdO1xuXG4gICAgbWF0Y2ggPSBuYXRpdmVFeGVjLmNhbGwocmUsIHN0cik7XG5cbiAgICBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZVtMQVNUX0lOREVYXSA9IHJlLmdsb2JhbCA/IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoIDogbGFzdEluZGV4O1xuICAgIH1cbiAgICBpZiAoTlBDR19JTkNMVURFRCAmJiBtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYFxuICAgICAgLy8gZm9yIE5QQ0csIGxpa2UgSUU4LiBOT1RFOiBUaGlzIGRvZXNuJyB3b3JrIGZvciAvKC4/KT8vXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9vcC1mdW5jXG4gICAgICBuYXRpdmVSZXBsYWNlLmNhbGwobWF0Y2hbMF0sIHJlQ29weSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDI7IGkrKykge1xuICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmaW5lZCkgbWF0Y2hbaV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXRjaGVkRXhlYztcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1M2UyXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA3ZTNcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjQxZVwiKTtcbnZhciBJRV9QUk9UTyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NTU5XCIpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTQ5YlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGN0eCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkODY0XCIpO1xudmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjNiNlwiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyNDFlXCIpO1xudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjBkY1wiKTtcbnZhciBpc0FycmF5SXRlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzNzAyXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImI0NDdcIik7XG52YXIgY3JlYXRlUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjBmZFwiKTtcbnZhciBnZXRJdGVyRm4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiN2NkNlwiKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhX193ZWJwYWNrX3JlcXVpcmVfXyhcIjRlZTFcIikoZnVuY3Rpb24gKGl0ZXIpIHsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChtYXBwaW5nKSBtYXBmbiA9IGN0eChtYXBmbiwgYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQygpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTRhMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmMxY1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18oXCIxNjU0XCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTVkNVwiKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1NTM3XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBjb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjgzNzhcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc3MjZcIik7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IF9fd2VicGFja19yZXF1aXJlX18oXCIyZDAwXCIpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1NTU5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBzaGFyZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZGJkYlwiKSgna2V5cycpO1xudmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2MmEwXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjU4NGFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNi41JyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1YjRlXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM2YzNcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjQ0N1wiKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMGZjOVwiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjVjYTFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3NzI2XCIpO1xudmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODM3OFwiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMyZTlcIik7XG52YXIgcmVkZWZpbmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmFiYVwiKTtcbnZhciBjdHggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWI0M1wiKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSB8fCAoZ2xvYmFsW25hbWVdID0ge30pIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSk7XG4gIHZhciBrZXksIG93biwgb3V0LCBleHA7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSAob3duID8gdGFyZ2V0IDogc291cmNlKVtrZXldO1xuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgZXhwID0gSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIGlmICh0YXJnZXQpIHJlZGVmaW5lKHRhcmdldCwga2V5LCBvdXQsIHR5cGUgJiAkZXhwb3J0LlUpO1xuICAgIC8vIGV4cG9ydFxuICAgIGlmIChleHBvcnRzW2tleV0gIT0gb3V0KSBoaWRlKGV4cG9ydHMsIGtleSwgZXhwKTtcbiAgICBpZiAoSVNfUFJPVE8gJiYgZXhwUHJvdG9ba2V5XSAhPSBvdXQpIGV4cFByb3RvW2tleV0gPSBvdXQ7XG4gIH1cbn07XG5nbG9iYWwuY29yZSA9IGNvcmU7XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNWQ3M1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0NjlmXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1ZjFiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjIzYzZcIik7XG52YXIgYnVpbHRpbkV4ZWMgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWM7XG5cbiAvLyBgUmVnRXhwRXhlY2AgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHBleGVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChSLCBTKSB7XG4gIHZhciBleGVjID0gUi5leGVjO1xuICBpZiAodHlwZW9mIGV4ZWMgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgcmVzdWx0ID0gZXhlYy5jYWxsKFIsIFMpO1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKGNsYXNzb2YoUikgIT09ICdSZWdFeHAnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlcicpO1xuICB9XG4gIHJldHVybiBidWlsdGluRXhlYy5jYWxsKFIsIFMpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2MjZhXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJkOTVcIik7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNjJhMFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2M2I2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTUzZFwiKTtcbnZhciBjb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU4NGFcIik7XG52YXIgY3R4ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ4NjRcIik7XG52YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzNWU4XCIpO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwN2UzXCIpO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCBzb3VyY2UpIHtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkY7XG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xuICB2YXIgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUztcbiAgdmFyIElTX1BST1RPID0gdHlwZSAmICRleHBvcnQuUDtcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xuICB2YXIgSVNfV1JBUCA9IHR5cGUgJiAkZXhwb3J0Llc7XG4gIHZhciBleHBvcnRzID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSk7XG4gIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXTtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV07XG4gIHZhciBrZXksIG93biwgb3V0O1xuICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lO1xuICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIGlmIChvd24gJiYgaGFzKGV4cG9ydHMsIGtleSkpIGNvbnRpbnVlO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTtcbiAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcbiAgICBleHBvcnRzW2tleV0gPSBJU19HTE9CQUwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5jdGlvbicgPyBzb3VyY2Vba2V5XVxuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgOiBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbClcbiAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFyeVxuICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24gKEMpIHtcbiAgICAgIHZhciBGID0gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBDKSB7XG4gICAgICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgQygpO1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEMoYSk7XG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTtcbiAgICAgICAgICB9IHJldHVybiBuZXcgQyhhLCBiLCBjKTtcbiAgICAgICAgfSByZXR1cm4gQy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICAgIEZbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcbiAgICAgIHJldHVybiBGO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIH0pKG91dCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUubWV0aG9kcy4lTkFNRSVcbiAgICBpZiAoSVNfUFJPVE8pIHtcbiAgICAgIChleHBvcnRzLnZpcnR1YWwgfHwgKGV4cG9ydHMudmlydHVhbCA9IHt9KSlba2V5XSA9IG91dDtcbiAgICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5wcm90b3R5cGUuJU5BTUUlXG4gICAgICBpZiAodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSkgaGlkZShleHBQcm90bywga2V5LCBvdXQpO1xuICAgIH1cbiAgfVxufTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2NzYyXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9BcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjVjYTFcIik7XG52YXIgJGluY2x1ZGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImMzNjZcIikodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhlbCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWM2Y1wiKSgnaW5jbHVkZXMnKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2ODIxXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjI2YVwiKTtcbnZhciBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImJlMTNcIik7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjY5YThcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2YTk5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQzZjRcIik7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2YjRjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2YzFjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oXCJjMzY3XCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlNTNkXCIpO1xudmFyIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzVlOFwiKTtcbnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDgxYlwiKTtcbnZhciBUT19TVFJJTkdfVEFHID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUxNjhcIikoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNzFjMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjNhMzhcIik7XG52YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyNWViXCIpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI3NzI2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI3NzRlXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQyZDVcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjc3ZjFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0NTg4XCIpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI3OTRiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oXCI4ZTYwXCIpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjk0Y1wiKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoX193ZWJwYWNrX3JlcXVpcmVfXyhcIjFlYzlcIikoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjc5YWFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjc5ZTVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjdjZDZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDBjM1wiKTtcbnZhciBJVEVSQVRPUiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1MTY4XCIpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0ODFiXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjdkN2JcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU0YWVcIik7XG52YXIgZ2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjdjZDZcIik7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1ODRhXCIpLmdldEl0ZXJhdG9yID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpdGVyRm4gPSBnZXQoaXQpO1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgcmV0dXJuIGFuT2JqZWN0KGl0ZXJGbi5jYWxsKGl0KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjdlOTBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGRQID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ5ZjZcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTRhZVwiKTtcbnZhciBnZXRLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImMzYTFcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjhlNjBcIikgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiODM3OFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjUnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjg0MzZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiODZjY1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiY2I3Y1wiKTtcbnZhciBJRThfRE9NX0RFRklORSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjNjlhXCIpO1xudmFyIHRvUHJpbWl0aXZlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjZhOTlcIik7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5ZTFlXCIpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOGFhZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzJhNlwiKTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU4NGFcIikuT2JqZWN0LmtleXM7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOGU2MFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjk0Y1wiKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOGY2MFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGNyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhMTU5XCIpO1xudmFyIGRlc2NyaXB0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYWViZFwiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0NWYyXCIpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzVlOFwiKShJdGVyYXRvclByb3RvdHlwZSwgX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUxNjhcIikoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjkwMDNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmI0Y1wiKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOTEzOFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzNWU4XCIpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjkzMDZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIDE5LjEuMi4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UsIC4uLilcbnZhciBnZXRLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImMzYTFcIik7XG52YXIgZ09QUyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5YWE5XCIpO1xudmFyIHBJRSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzNTVkXCIpO1xudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjI0MWVcIik7XG52YXIgSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzMzVjXCIpO1xudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgX193ZWJwYWNrX3JlcXVpcmVfXyhcIjI5NGNcIikoZnVuY3Rpb24gKCkge1xuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgdmFyIFMgPSBTeW1ib2woKTtcbiAgdmFyIEsgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW1NdID0gNztcbiAgSy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoaykgeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgd2hpbGUgKGFMZW4gPiBpbmRleCkge1xuICAgIHZhciBTID0gSU9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0U3ltYm9scyA/IGdldEtleXMoUykuY29uY2F0KGdldFN5bWJvbHMoUykpIDogZ2V0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIGlmIChpc0VudW0uY2FsbChTLCBrZXkgPSBrZXlzW2orK10pKSBUW2tleV0gPSBTW2tleV07XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5NDI3XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYzYjZcIik7XG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBjcmVhdGU6IF9fd2VicGFja19yZXF1aXJlX18oXCJhMTU5XCIpIH0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjk1ZDVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDBjM1wiKTtcbnZhciBJVEVSQVRPUiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1MTY4XCIpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0ODFiXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKS5pc0l0ZXJhYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPID0gT2JqZWN0KGl0KTtcbiAgcmV0dXJuIE9bSVRFUkFUT1JdICE9PSB1bmRlZmluZWRcbiAgICB8fCAnQEBpdGVyYXRvcicgaW4gT1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICB8fCBJdGVyYXRvcnMuaGFzT3duUHJvcGVydHkoY2xhc3NvZihPKSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjlhYTlcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5YjQzXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkOGU4XCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjljNmNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gMjIuMS4zLjMxIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxudmFyIFVOU0NPUEFCTEVTID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJiNGNcIikoJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbmlmIChBcnJheVByb3RvW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIF9fd2VicGFja19yZXF1aXJlX18oXCIzMmU5XCIpKEFycmF5UHJvdG8sIFVOU0NPUEFCTEVTLCB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b1tVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjlkZWZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjQ1ODhcIik7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5ZTFlXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oXCI3OWU1XCIpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhMTU5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU0YWVcIik7XG52YXIgZFBzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjdlOTBcIik7XG52YXIgZW51bUJ1Z0tleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMTY5MVwiKTtcbnZhciBJRV9QUk9UTyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NTU5XCIpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIxZWM5XCIpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzJmY1wiKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYTM1MlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzb3J0YWJsZWpzXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhM2MzXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMy4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpXG52YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2M2I2XCIpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiwgJ09iamVjdCcsIHsgYXNzaWduOiBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTMwNlwiKSB9KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhNDgxXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjYjdjXCIpO1xudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjRiZjhcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWRlZlwiKTtcbnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNDU4OFwiKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDM5MFwiKTtcbnZhciByZWdFeHBFeGVjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjVmMWJcIik7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTID0gL1xcJChbJCZgJ118XFxkXFxkP3w8W14+XSo+KS9nO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEID0gL1xcJChbJCZgJ118XFxkXFxkPykvZztcblxudmFyIG1heWJlVG9TdHJpbmcgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyBpdCA6IFN0cmluZyhpdCk7XG59O1xuXG4vLyBAQHJlcGxhY2UgbG9naWNcbl9fd2VicGFja19yZXF1aXJlX18oXCIyMTRmXCIpKCdyZXBsYWNlJywgMiwgZnVuY3Rpb24gKGRlZmluZWQsIFJFUExBQ0UsICRyZXBsYWNlLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnJlcGxhY2VcbiAgICBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICAgIHZhciBmbiA9IHNlYXJjaFZhbHVlID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNlYXJjaFZhbHVlW1JFUExBQ0VdO1xuICAgICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBmbi5jYWxsKHNlYXJjaFZhbHVlLCBPLCByZXBsYWNlVmFsdWUpXG4gICAgICAgIDogJHJlcGxhY2UuY2FsbChTdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHJlcGxhY2VcbiAgICBmdW5jdGlvbiAocmVnZXhwLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUoJHJlcGxhY2UsIHJlZ2V4cCwgdGhpcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIGlmICghZnVuY3Rpb25hbFJlcGxhY2UpIHJlcGxhY2VWYWx1ZSA9IFN0cmluZyhyZXBsYWNlVmFsdWUpO1xuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgaWYgKCFnbG9iYWwpIGJyZWFrO1xuICAgICAgICB2YXIgbWF0Y2hTdHIgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgIH1cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcbiAgICAgICAgdmFyIG1hdGNoZWQgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gbWF4KG1pbih0b0ludGVnZXIocmVzdWx0LmluZGV4KSwgUy5sZW5ndGgpLCAwKTtcbiAgICAgICAgdmFyIGNhcHR1cmVzID0gW107XG4gICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICAvLyAgIGNhcHR1cmVzID0gcmVzdWx0LnNsaWNlKDEpLm1hcChtYXliZVRvU3RyaW5nKVxuICAgICAgICAvLyBidXQgZm9yIHNvbWUgcmVhc29uIGBuYXRpdmVTbGljZS5jYWxsKHJlc3VsdCwgMSwgcmVzdWx0Lmxlbmd0aClgIChjYWxsZWQgaW5cbiAgICAgICAgLy8gdGhlIHNsaWNlIHBvbHlmaWxsIHdoZW4gc2xpY2luZyBuYXRpdmUgYXJyYXlzKSBcImRvZXNuJ3Qgd29ya1wiIGluIHNhZmFyaSA5IGFuZFxuICAgICAgICAvLyBjYXVzZXMgYSBjcmFzaCAoaHR0cHM6Ly9wYXN0ZWJpbi5jb20vTjIxUXplUUEpIHdoZW4gdHJ5aW5nIHRvIGRlYnVnIGl0LlxuICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHJlc3VsdC5sZW5ndGg7IGorKykgY2FwdHVyZXMucHVzaChtYXliZVRvU3RyaW5nKHJlc3VsdFtqXSkpO1xuICAgICAgICB2YXIgbmFtZWRDYXB0dXJlcyA9IHJlc3VsdC5ncm91cHM7XG4gICAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkge1xuICAgICAgICAgIHZhciByZXBsYWNlckFyZ3MgPSBbbWF0Y2hlZF0uY29uY2F0KGNhcHR1cmVzLCBwb3NpdGlvbiwgUyk7XG4gICAgICAgICAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IHVuZGVmaW5lZCkgcmVwbGFjZXJBcmdzLnB1c2gobmFtZWRDYXB0dXJlcyk7XG4gICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gU3RyaW5nKHJlcGxhY2VWYWx1ZS5hcHBseSh1bmRlZmluZWQsIHJlcGxhY2VyQXJncykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcGxhY2VtZW50ID0gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIFMsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zaXRpb24gPj0gbmV4dFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgICAgICAgYWNjdW11bGF0ZWRSZXN1bHQgKz0gUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24sIHBvc2l0aW9uKSArIHJlcGxhY2VtZW50O1xuICAgICAgICAgIG5leHRTb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZFJlc3VsdCArIFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uKTtcbiAgICB9XG4gIF07XG5cbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRzdWJzdGl0dXRpb25cbiAgZnVuY3Rpb24gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlbWVudCkge1xuICAgIHZhciB0YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICB2YXIgbSA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgICB2YXIgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEO1xuICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5hbWVkQ2FwdHVyZXMgPSB0b09iamVjdChuYW1lZENhcHR1cmVzKTtcbiAgICAgIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MUztcbiAgICB9XG4gICAgcmV0dXJuICRyZXBsYWNlLmNhbGwocmVwbGFjZW1lbnQsIHN5bWJvbHMsIGZ1bmN0aW9uIChtYXRjaCwgY2gpIHtcbiAgICAgIHZhciBjYXB0dXJlO1xuICAgICAgc3dpdGNoIChjaC5jaGFyQXQoMCkpIHtcbiAgICAgICAgY2FzZSAnJCc6IHJldHVybiAnJCc7XG4gICAgICAgIGNhc2UgJyYnOiByZXR1cm4gbWF0Y2hlZDtcbiAgICAgICAgY2FzZSAnYCc6IHJldHVybiBzdHIuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgICBjYXNlIFwiJ1wiOiByZXR1cm4gc3RyLnNsaWNlKHRhaWxQb3MpO1xuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICBjYXB0dXJlID0gbmFtZWRDYXB0dXJlc1tjaC5zbGljZSgxLCAtMSldO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiAvLyBcXGRcXGQ/XG4gICAgICAgICAgdmFyIG4gPSArY2g7XG4gICAgICAgICAgaWYgKG4gPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICBpZiAobiA+IG0pIHtcbiAgICAgICAgICAgIHZhciBmID0gZmxvb3IobiAvIDEwKTtcbiAgICAgICAgICAgIGlmIChmID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICBpZiAoZiA8PSBtKSByZXR1cm4gY2FwdHVyZXNbZiAtIDFdID09PSB1bmRlZmluZWQgPyBjaC5jaGFyQXQoMSkgOiBjYXB0dXJlc1tmIC0gMV0gKyBjaC5jaGFyQXQoMSk7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tuIC0gMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FwdHVyZSA9PT0gdW5kZWZpbmVkID8gJycgOiBjYXB0dXJlO1xuICAgIH0pO1xuICB9XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhNGJiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjhhYWVcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImE3NDVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZjQxMFwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYWFlM1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyA3LjIuOCBJc1JlZ0V4cChhcmd1bWVudClcbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkM2Y0XCIpO1xudmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyZDk1XCIpO1xudmFyIE1BVENIID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJiNGNcIikoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYWViZFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImIwYzVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciByZWdleHBFeGVjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUyMGFcIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWNhMVwiKSh7XG4gIHRhcmdldDogJ1JlZ0V4cCcsXG4gIHByb3RvOiB0cnVlLFxuICBmb3JjZWQ6IHJlZ2V4cEV4ZWMgIT09IC8uLy5leGVjXG59LCB7XG4gIGV4ZWM6IHJlZ2V4cEV4ZWNcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImIwZGNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU0YWVcIik7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVudHJpZXMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSBhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYjQ0N1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiM2EzOFwiKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImI4ZTNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImJlMTNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjMzY2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjY4MjFcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWRlZlwiKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzdmMVwiKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImMzNjdcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg0MzZcIik7XG52YXIgc3RlcCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1MGVkXCIpO1xudmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0ODFiXCIpO1xudmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzNmMzXCIpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzMGYxXCIpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGtpbmQgPSB0aGlzLl9rO1xuICB2YXIgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmICghTyB8fCBpbmRleCA+PSBPLmxlbmd0aCkge1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzNhMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlNmYzXCIpO1xudmFyIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjE2OTFcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImM2NDlcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7LyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBpbnNlcnROb2RlQXQ7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjYW1lbGl6ZTsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYlwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbnNvbGU7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiByZW1vdmVOb2RlOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXM2X3JlZ2V4cF9yZXBsYWNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTQ4MVwiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXM2X3JlZ2V4cF9yZXBsYWNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzNl9yZWdleHBfcmVwbGFjZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBGX3NvdXJjZV92dWVkcmFnZ2FibGVfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfY29yZWpzMl9jb3JlX2pzX29iamVjdF9jcmVhdGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0YWE2XCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIEZfc291cmNlX3Z1ZWRyYWdnYWJsZV9ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9jb3JlanMyX2NvcmVfanNfb2JqZWN0X2NyZWF0ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKEZfc291cmNlX3Z1ZWRyYWdnYWJsZV9ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9jb3JlanMyX2NvcmVfanNfb2JqZWN0X2NyZWF0ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fKTtcblxuXG5cbmZ1bmN0aW9uIGdldENvbnNvbGUoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5jb25zb2xlO1xuICB9XG5cbiAgcmV0dXJuIGdsb2JhbC5jb25zb2xlO1xufVxuXG52YXIgY29uc29sZSA9IGdldENvbnNvbGUoKTtcblxuZnVuY3Rpb24gY2FjaGVkKGZuKSB7XG4gIHZhciBjYWNoZSA9IEZfc291cmNlX3Z1ZWRyYWdnYWJsZV9ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9jb3JlanMyX2NvcmVfanNfb2JqZWN0X2NyZWF0ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQoKShudWxsKTtcblxuICByZXR1cm4gZnVuY3Rpb24gY2FjaGVkRm4oc3RyKSB7XG4gICAgdmFyIGhpdCA9IGNhY2hlW3N0cl07XG4gICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpO1xuICB9O1xufVxuXG52YXIgcmVnZXggPSAvLShcXHcpL2c7XG52YXIgY2FtZWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UocmVnZXgsIGZ1bmN0aW9uIChfLCBjKSB7XG4gICAgcmV0dXJuIGMgPyBjLnRvVXBwZXJDYXNlKCkgOiBcIlwiO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiByZW1vdmVOb2RlKG5vZGUpIHtcbiAgaWYgKG5vZGUucGFyZW50RWxlbWVudCAhPT0gbnVsbCkge1xuICAgIG5vZGUucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChub2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnNlcnROb2RlQXQoZmF0aGVyTm9kZSwgbm9kZSwgcG9zaXRpb24pIHtcbiAgdmFyIHJlZk5vZGUgPSBwb3NpdGlvbiA9PT0gMCA/IGZhdGhlck5vZGUuY2hpbGRyZW5bMF0gOiBmYXRoZXJOb2RlLmNoaWxkcmVuW3Bvc2l0aW9uIC0gMV0ubmV4dFNpYmxpbmc7XG4gIGZhdGhlck5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZk5vZGUpO1xufVxuXG5cbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbCh0aGlzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzhiYVwiKSkpXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImM2OWFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSAhX193ZWJwYWNrX3JlcXVpcmVfXyhcIjllMWVcIikgJiYgIV9fd2VicGFja19yZXF1aXJlX18oXCI3OWU1XCIpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjMwZVwiKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzhiYVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzhiYlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NGExXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjYTVhXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImNiN2NcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQzZjRcIik7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImNlN2VcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2M2I2XCIpO1xudmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyOTRjXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7XG4gIHZhciBmbiA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXTtcbiAgdmFyIGV4cCA9IHt9O1xuICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZDJjOFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBoZWxwZXIgZm9yIFN0cmluZyN7c3RhcnRzV2l0aCwgZW5kc1dpdGgsIGluY2x1ZGVzfVxudmFyIGlzUmVnRXhwID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImFhZTNcIik7XG52YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiZTEzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBzZWFyY2hTdHJpbmcsIE5BTUUpIHtcbiAgaWYgKGlzUmVnRXhwKHNlYXJjaFN0cmluZykpIHRocm93IFR5cGVFcnJvcignU3RyaW5nIycgKyBOQU1FICsgXCIgZG9lc24ndCBhY2NlcHQgcmVnZXghXCIpO1xuICByZXR1cm4gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJkMmQ1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oXCIxNjU0XCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU0OWJcIik7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1ODRhXCIpLkFycmF5LmZyb207XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZDNmNFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJkODY0XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3OWFhXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImQ4ZThcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImQ5ZjZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImU0YWVcIik7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzk0YlwiKTtcbnZhciB0b1ByaW1pdGl2ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIxYmMzXCIpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOGU2MFwiKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImRiZGJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTg0YVwiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTUzZFwiKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogX193ZWJwYWNrX3JlcXVpcmVfXyhcImI4ZTNcIikgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImRjNjJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuX193ZWJwYWNrX3JlcXVpcmVfXyhcIjk0MjdcIik7XG52YXIgJE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1ODRhXCIpLk9iamVjdDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlKFAsIEQpIHtcbiAgcmV0dXJuICRPYmplY3QuY3JlYXRlKFAsIEQpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJlNGFlXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmNzcyXCIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJlNTNkXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJlNmYzXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDdlM1wiKTtcbnZhciB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzZjM1wiKTtcbnZhciBhcnJheUluZGV4T2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWI0ZVwiKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTU1OVwiKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZjQxMFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKFwiMWFmNlwiKTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU4NGFcIikuQXJyYXkuaXNBcnJheTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJmNTU5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLy8gMjEuMS4zLjE4IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgWywgcG9zaXRpb24gXSlcblxudmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWNhMVwiKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5ZGVmXCIpO1xudmFyIGNvbnRleHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDJjOFwiKTtcbnZhciBTVEFSVFNfV0lUSCA9ICdzdGFydHNXaXRoJztcbnZhciAkc3RhcnRzV2l0aCA9ICcnW1NUQVJUU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTE0N1wiKShTVEFSVFNfV0lUSCksICdTdHJpbmcnLCB7XG4gIHN0YXJ0c1dpdGg6IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgdmFyIHRoYXQgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgU1RBUlRTX1dJVEgpO1xuICAgIHZhciBpbmRleCA9IHRvTGVuZ3RoKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0aGF0Lmxlbmd0aCkpO1xuICAgIHZhciBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJHN0YXJ0c1dpdGhcbiAgICAgID8gJHN0YXJ0c1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGluZGV4KVxuICAgICAgOiB0aGF0LnNsaWNlKGluZGV4LCBpbmRleCArIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImY3NzJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZmE1YlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NTM3XCIpKCduYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nJywgRnVuY3Rpb24udG9TdHJpbmcpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImZiMTVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UvbGliL2NvbW1hbmRzL2J1aWxkL3NldFB1YmxpY1BhdGguanNcbi8vIFRoaXMgZmlsZSBpcyBpbXBvcnRlZCBpbnRvIGxpYi93YyBjbGllbnQgYnVuZGxlcy5cblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIHZhciBzZXRQdWJsaWNQYXRoX2lcbiAgaWYgKChzZXRQdWJsaWNQYXRoX2kgPSB3aW5kb3cuZG9jdW1lbnQuY3VycmVudFNjcmlwdCkgJiYgKHNldFB1YmxpY1BhdGhfaSA9IHNldFB1YmxpY1BhdGhfaS5zcmMubWF0Y2goLyguK1xcLylbXi9dK1xcLmpzKFxcPy4qKT8kLykpKSB7XG4gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2V0UHVibGljUGF0aF9pWzFdIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgfVxufVxuXG4vLyBJbmRpY2F0ZSB0byB3ZWJwYWNrIHRoYXQgdGhpcyBmaWxlIGNhbiBiZSBjb25jYXRlbmF0ZWRcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNldFB1YmxpY1BhdGggPSAobnVsbCk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL29iamVjdC9hc3NpZ24uanNcbnZhciBvYmplY3RfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUxNzZcIik7XG52YXIgYXNzaWduX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKG9iamVjdF9hc3NpZ24pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoLmpzXG52YXIgZXM2X3N0cmluZ19zdGFydHNfd2l0aCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmNTU5XCIpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9vYmplY3Qva2V5cy5qc1xudmFyIGtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTRiYlwiKTtcbnZhciBrZXlzX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGtleXMpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9hcnJheS9pcy1hcnJheS5qc1xudmFyIGlzX2FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE3NDVcIik7XG52YXIgaXNfYXJyYXlfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oaXNfYXJyYXkpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2hlbHBlcnMvZXNtL2FycmF5V2l0aEhvbGVzLmpzXG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHtcbiAgaWYgKGlzX2FycmF5X2RlZmF1bHQoKShhcnIpKSByZXR1cm4gYXJyO1xufVxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2NvcmUtanMvZ2V0LWl0ZXJhdG9yLmpzXG52YXIgZ2V0X2l0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjVkNzNcIik7XG52YXIgZ2V0X2l0ZXJhdG9yX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGdldF9pdGVyYXRvcik7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanNcblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcbiAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgZm9yICh2YXIgX2kgPSBnZXRfaXRlcmF0b3JfZGVmYXVsdCgpKGFyciksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7XG4gICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfZCA9IHRydWU7XG4gICAgX2UgPSBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gX2Fycjtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qc1xuXG5cblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7XG4gIHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7XG59XG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMuanNcbnZhciBlczdfYXJyYXlfaW5jbHVkZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjc2MlwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pbmNsdWRlcy5qc1xudmFyIGVzNl9zdHJpbmdfaW5jbHVkZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmZkYlwiKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9oZWxwZXJzL2VzbS9hcnJheVdpdGhvdXRIb2xlcy5qc1xuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7XG4gIGlmIChpc19hcnJheV9kZWZhdWx0KCkoYXJyKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcnIyW2ldID0gYXJyW2ldO1xuICAgIH1cblxuICAgIHJldHVybiBhcnIyO1xuICB9XG59XG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9hcnJheS9mcm9tLmpzXG52YXIgZnJvbSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3NzRlXCIpO1xudmFyIGZyb21fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZnJvbSk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL2lzLWl0ZXJhYmxlLmpzXG52YXIgaXNfaXRlcmFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzhiYlwiKTtcbnZhciBpc19pdGVyYWJsZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihpc19pdGVyYWJsZSk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzXG5cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7XG4gIGlmIChpc19pdGVyYWJsZV9kZWZhdWx0KCkoT2JqZWN0KGl0ZXIpKSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaXRlcikgPT09IFwiW29iamVjdCBBcmd1bWVudHNdXCIpIHJldHVybiBmcm9tX2RlZmF1bHQoKShpdGVyKTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9lc20vbm9uSXRlcmFibGVTcHJlYWQuanNcbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheS5qc1xuXG5cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikge1xuICByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCB7XCJjb21tb25qc1wiOlwic29ydGFibGVqc1wiLFwiY29tbW9uanMyXCI6XCJzb3J0YWJsZWpzXCIsXCJhbWRcIjpcInNvcnRhYmxlanNcIixcInJvb3RcIjpcIlNvcnRhYmxlXCJ9XG52YXIgZXh0ZXJuYWxfY29tbW9uanNfc29ydGFibGVqc19jb21tb25qczJfc29ydGFibGVqc19hbWRfc29ydGFibGVqc19yb290X1NvcnRhYmxlXyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhMzUyXCIpO1xudmFyIGV4dGVybmFsX2NvbW1vbmpzX3NvcnRhYmxlanNfY29tbW9uanMyX3NvcnRhYmxlanNfYW1kX3NvcnRhYmxlanNfcm9vdF9Tb3J0YWJsZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihleHRlcm5hbF9jb21tb25qc19zb3J0YWJsZWpzX2NvbW1vbmpzMl9zb3J0YWJsZWpzX2FtZF9zb3J0YWJsZWpzX3Jvb3RfU29ydGFibGVfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL3NyYy91dGlsL2hlbHBlci5qc1xudmFyIGhlbHBlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjNjQ5XCIpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy92dWVkcmFnZ2FibGUuanNcblxuXG5cblxuXG5cblxuXG5cblxuZnVuY3Rpb24gYnVpbGRBdHRyaWJ1dGUob2JqZWN0LCBwcm9wTmFtZSwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgb2JqZWN0ID0gb2JqZWN0IHx8IHt9O1xuICBvYmplY3RbcHJvcE5hbWVdID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVWbUluZGV4KHZub2RlcywgZWxlbWVudCkge1xuICByZXR1cm4gdm5vZGVzLm1hcChmdW5jdGlvbiAoZWx0KSB7XG4gICAgcmV0dXJuIGVsdC5lbG07XG4gIH0pLmluZGV4T2YoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIF9jb21wdXRlSW5kZXhlcyhzbG90cywgY2hpbGRyZW4sIGlzVHJhbnNpdGlvbiwgZm9vdGVyT2Zmc2V0KSB7XG4gIGlmICghc2xvdHMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgZWxtRnJvbU5vZGVzID0gc2xvdHMubWFwKGZ1bmN0aW9uIChlbHQpIHtcbiAgICByZXR1cm4gZWx0LmVsbTtcbiAgfSk7XG4gIHZhciBmb290ZXJJbmRleCA9IGNoaWxkcmVuLmxlbmd0aCAtIGZvb3Rlck9mZnNldDtcblxuICB2YXIgcmF3SW5kZXhlcyA9IF90b0NvbnN1bWFibGVBcnJheShjaGlsZHJlbikubWFwKGZ1bmN0aW9uIChlbHQsIGlkeCkge1xuICAgIHJldHVybiBpZHggPj0gZm9vdGVySW5kZXggPyBlbG1Gcm9tTm9kZXMubGVuZ3RoIDogZWxtRnJvbU5vZGVzLmluZGV4T2YoZWx0KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGlzVHJhbnNpdGlvbiA/IHJhd0luZGV4ZXMuZmlsdGVyKGZ1bmN0aW9uIChpbmQpIHtcbiAgICByZXR1cm4gaW5kICE9PSAtMTtcbiAgfSkgOiByYXdJbmRleGVzO1xufVxuXG5mdW5jdGlvbiBlbWl0KGV2dE5hbWUsIGV2dERhdGEpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF90aGlzLiRlbWl0KGV2dE5hbWUudG9Mb3dlckNhc2UoKSwgZXZ0RGF0YSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBkZWxlZ2F0ZUFuZEVtaXQoZXZ0TmFtZSkge1xuICB2YXIgX3RoaXMyID0gdGhpcztcblxuICByZXR1cm4gZnVuY3Rpb24gKGV2dERhdGEpIHtcbiAgICBpZiAoX3RoaXMyLnJlYWxMaXN0ICE9PSBudWxsKSB7XG4gICAgICBfdGhpczJbXCJvbkRyYWdcIiArIGV2dE5hbWVdKGV2dERhdGEpO1xuICAgIH1cblxuICAgIGVtaXQuY2FsbChfdGhpczIsIGV2dE5hbWUsIGV2dERhdGEpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpc1RyYW5zaXRpb25OYW1lKG5hbWUpIHtcbiAgcmV0dXJuIFtcInRyYW5zaXRpb24tZ3JvdXBcIiwgXCJUcmFuc2l0aW9uR3JvdXBcIl0uaW5jbHVkZXMobmFtZSk7XG59XG5cbmZ1bmN0aW9uIHZ1ZWRyYWdnYWJsZV9pc1RyYW5zaXRpb24oc2xvdHMpIHtcbiAgaWYgKCFzbG90cyB8fCBzbG90cy5sZW5ndGggIT09IDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgX3Nsb3RzID0gX3NsaWNlZFRvQXJyYXkoc2xvdHMsIDEpLFxuICAgICAgY29tcG9uZW50T3B0aW9ucyA9IF9zbG90c1swXS5jb21wb25lbnRPcHRpb25zO1xuXG4gIGlmICghY29tcG9uZW50T3B0aW9ucykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc1RyYW5zaXRpb25OYW1lKGNvbXBvbmVudE9wdGlvbnMudGFnKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2xvdChzbG90LCBzY29wZWRTbG90LCBrZXkpIHtcbiAgcmV0dXJuIHNsb3Rba2V5XSB8fCAoc2NvcGVkU2xvdFtrZXldID8gc2NvcGVkU2xvdFtrZXldKCkgOiB1bmRlZmluZWQpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlQ2hpbGRyZW5BbmRPZmZzZXRzKGNoaWxkcmVuLCBzbG90LCBzY29wZWRTbG90KSB7XG4gIHZhciBoZWFkZXJPZmZzZXQgPSAwO1xuICB2YXIgZm9vdGVyT2Zmc2V0ID0gMDtcbiAgdmFyIGhlYWRlciA9IGdldFNsb3Qoc2xvdCwgc2NvcGVkU2xvdCwgXCJoZWFkZXJcIik7XG5cbiAgaWYgKGhlYWRlcikge1xuICAgIGhlYWRlck9mZnNldCA9IGhlYWRlci5sZW5ndGg7XG4gICAgY2hpbGRyZW4gPSBjaGlsZHJlbiA/IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoaGVhZGVyKSwgX3RvQ29uc3VtYWJsZUFycmF5KGNoaWxkcmVuKSkgOiBfdG9Db25zdW1hYmxlQXJyYXkoaGVhZGVyKTtcbiAgfVxuXG4gIHZhciBmb290ZXIgPSBnZXRTbG90KHNsb3QsIHNjb3BlZFNsb3QsIFwiZm9vdGVyXCIpO1xuXG4gIGlmIChmb290ZXIpIHtcbiAgICBmb290ZXJPZmZzZXQgPSBmb290ZXIubGVuZ3RoO1xuICAgIGNoaWxkcmVuID0gY2hpbGRyZW4gPyBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGNoaWxkcmVuKSwgX3RvQ29uc3VtYWJsZUFycmF5KGZvb3RlcikpIDogX3RvQ29uc3VtYWJsZUFycmF5KGZvb3Rlcik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBoZWFkZXJPZmZzZXQ6IGhlYWRlck9mZnNldCxcbiAgICBmb290ZXJPZmZzZXQ6IGZvb3Rlck9mZnNldFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnRBdHRyaWJ1dGVzKCRhdHRycywgY29tcG9uZW50RGF0YSkge1xuICB2YXIgYXR0cmlidXRlcyA9IG51bGw7XG5cbiAgdmFyIHVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShuYW1lLCB2YWx1ZSkge1xuICAgIGF0dHJpYnV0ZXMgPSBidWlsZEF0dHJpYnV0ZShhdHRyaWJ1dGVzLCBuYW1lLCB2YWx1ZSk7XG4gIH07XG5cbiAgdmFyIGF0dHJzID0ga2V5c19kZWZhdWx0KCkoJGF0dHJzKS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXkgPT09IFwiaWRcIiB8fCBrZXkuc3RhcnRzV2l0aChcImRhdGEtXCIpO1xuICB9KS5yZWR1Y2UoZnVuY3Rpb24gKHJlcywga2V5KSB7XG4gICAgcmVzW2tleV0gPSAkYXR0cnNba2V5XTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgdXBkYXRlKFwiYXR0cnNcIiwgYXR0cnMpO1xuXG4gIGlmICghY29tcG9uZW50RGF0YSkge1xuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgdmFyIG9uID0gY29tcG9uZW50RGF0YS5vbixcbiAgICAgIHByb3BzID0gY29tcG9uZW50RGF0YS5wcm9wcyxcbiAgICAgIGNvbXBvbmVudERhdGFBdHRycyA9IGNvbXBvbmVudERhdGEuYXR0cnM7XG4gIHVwZGF0ZShcIm9uXCIsIG9uKTtcbiAgdXBkYXRlKFwicHJvcHNcIiwgcHJvcHMpO1xuXG4gIGFzc2lnbl9kZWZhdWx0KCkoYXR0cmlidXRlcy5hdHRycywgY29tcG9uZW50RGF0YUF0dHJzKTtcblxuICByZXR1cm4gYXR0cmlidXRlcztcbn1cblxudmFyIGV2ZW50c0xpc3RlbmVkID0gW1wiU3RhcnRcIiwgXCJBZGRcIiwgXCJSZW1vdmVcIiwgXCJVcGRhdGVcIiwgXCJFbmRcIl07XG52YXIgZXZlbnRzVG9FbWl0ID0gW1wiQ2hvb3NlXCIsIFwiVW5jaG9vc2VcIiwgXCJTb3J0XCIsIFwiRmlsdGVyXCIsIFwiQ2xvbmVcIl07XG52YXIgcmVhZG9ubHlQcm9wZXJ0aWVzID0gW1wiTW92ZVwiXS5jb25jYXQoZXZlbnRzTGlzdGVuZWQsIGV2ZW50c1RvRW1pdCkubWFwKGZ1bmN0aW9uIChldnQpIHtcbiAgcmV0dXJuIFwib25cIiArIGV2dDtcbn0pO1xudmFyIGRyYWdnaW5nRWxlbWVudCA9IG51bGw7XG52YXIgdnVlZHJhZ2dhYmxlX3Byb3BzID0ge1xuICBvcHRpb25zOiBPYmplY3QsXG4gIGxpc3Q6IHtcbiAgICB0eXBlOiBBcnJheSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICB2YWx1ZToge1xuICAgIHR5cGU6IEFycmF5LFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIG5vVHJhbnNpdGlvbk9uRHJhZzoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgY2xvbmU6IHtcbiAgICB0eXBlOiBGdW5jdGlvbixcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdChvcmlnaW5hbCkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsO1xuICAgIH1cbiAgfSxcbiAgZWxlbWVudDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBcImRpdlwiXG4gIH0sXG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIG1vdmU6IHtcbiAgICB0eXBlOiBGdW5jdGlvbixcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIGNvbXBvbmVudERhdGE6IHtcbiAgICB0eXBlOiBPYmplY3QsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfVxufTtcbnZhciBkcmFnZ2FibGVDb21wb25lbnQgPSB7XG4gIG5hbWU6IFwiZHJhZ2dhYmxlXCIsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB2dWVkcmFnZ2FibGVfcHJvcHMsXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zaXRpb25Nb2RlOiBmYWxzZSxcbiAgICAgIG5vbmVGdW5jdGlvbmFsQ29tcG9uZW50TW9kZTogZmFsc2VcbiAgICB9O1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIHNsb3RzID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICB0aGlzLnRyYW5zaXRpb25Nb2RlID0gdnVlZHJhZ2dhYmxlX2lzVHJhbnNpdGlvbihzbG90cyk7XG5cbiAgICB2YXIgX2NvbXB1dGVDaGlsZHJlbkFuZE9mID0gY29tcHV0ZUNoaWxkcmVuQW5kT2Zmc2V0cyhzbG90cywgdGhpcy4kc2xvdHMsIHRoaXMuJHNjb3BlZFNsb3RzKSxcbiAgICAgICAgY2hpbGRyZW4gPSBfY29tcHV0ZUNoaWxkcmVuQW5kT2YuY2hpbGRyZW4sXG4gICAgICAgIGhlYWRlck9mZnNldCA9IF9jb21wdXRlQ2hpbGRyZW5BbmRPZi5oZWFkZXJPZmZzZXQsXG4gICAgICAgIGZvb3Rlck9mZnNldCA9IF9jb21wdXRlQ2hpbGRyZW5BbmRPZi5mb290ZXJPZmZzZXQ7XG5cbiAgICB0aGlzLmhlYWRlck9mZnNldCA9IGhlYWRlck9mZnNldDtcbiAgICB0aGlzLmZvb3Rlck9mZnNldCA9IGZvb3Rlck9mZnNldDtcbiAgICB2YXIgYXR0cmlidXRlcyA9IGdldENvbXBvbmVudEF0dHJpYnV0ZXModGhpcy4kYXR0cnMsIHRoaXMuY29tcG9uZW50RGF0YSk7XG4gICAgcmV0dXJuIGgodGhpcy5nZXRUYWcoKSwgYXR0cmlidXRlcywgY2hpbGRyZW4pO1xuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIGlmICh0aGlzLmxpc3QgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaGVscGVyW1wiYlwiIC8qIGNvbnNvbGUgKi9dLmVycm9yKFwiVmFsdWUgYW5kIGxpc3QgcHJvcHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSEgUGxlYXNlIHNldCBvbmUgb3IgYW5vdGhlci5cIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWxlbWVudCAhPT0gXCJkaXZcIikge1xuICAgICAgaGVscGVyW1wiYlwiIC8qIGNvbnNvbGUgKi9dLndhcm4oXCJFbGVtZW50IHByb3BzIGlzIGRlcHJlY2F0ZWQgcGxlYXNlIHVzZSB0YWcgcHJvcHMgaW5zdGVhZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9Tb3J0YWJsZUpTL1Z1ZS5EcmFnZ2FibGUvYmxvYi9tYXN0ZXIvZG9jdW1lbnRhdGlvbi9taWdyYXRlLm1kI2VsZW1lbnQtcHJvcHNcIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoZWxwZXJbXCJiXCIgLyogY29uc29sZSAqL10ud2FybihcIk9wdGlvbnMgcHJvcHMgaXMgZGVwcmVjYXRlZCwgYWRkIHNvcnRhYmxlIG9wdGlvbnMgZGlyZWN0bHkgYXMgdnVlLmRyYWdnYWJsZSBpdGVtLCBvciB1c2Ugdi1iaW5kLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL1NvcnRhYmxlSlMvVnVlLkRyYWdnYWJsZS9ibG9iL21hc3Rlci9kb2N1bWVudGF0aW9uL21pZ3JhdGUubWQjb3B0aW9ucy1wcm9wc1wiKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICB0aGlzLm5vbmVGdW5jdGlvbmFsQ29tcG9uZW50TW9kZSA9IHRoaXMuZ2V0VGFnKCkudG9Mb3dlckNhc2UoKSAhPT0gdGhpcy4kZWwubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAmJiAhdGhpcy5nZXRJc0Z1bmN0aW9uYWwoKTtcblxuICAgIGlmICh0aGlzLm5vbmVGdW5jdGlvbmFsQ29tcG9uZW50TW9kZSAmJiB0aGlzLnRyYW5zaXRpb25Nb2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmFuc2l0aW9uLWdyb3VwIGluc2lkZSBjb21wb25lbnQgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIGFsdGVyIHRhZyB2YWx1ZSBvciByZW1vdmUgdHJhbnNpdGlvbi1ncm91cC4gQ3VycmVudCB0YWcgdmFsdWU6IFwiLmNvbmNhdCh0aGlzLmdldFRhZygpKSk7XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbnNBZGRlZCA9IHt9O1xuICAgIGV2ZW50c0xpc3RlbmVkLmZvckVhY2goZnVuY3Rpb24gKGVsdCkge1xuICAgICAgb3B0aW9uc0FkZGVkW1wib25cIiArIGVsdF0gPSBkZWxlZ2F0ZUFuZEVtaXQuY2FsbChfdGhpczMsIGVsdCk7XG4gICAgfSk7XG4gICAgZXZlbnRzVG9FbWl0LmZvckVhY2goZnVuY3Rpb24gKGVsdCkge1xuICAgICAgb3B0aW9uc0FkZGVkW1wib25cIiArIGVsdF0gPSBlbWl0LmJpbmQoX3RoaXMzLCBlbHQpO1xuICAgIH0pO1xuXG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBrZXlzX2RlZmF1bHQoKSh0aGlzLiRhdHRycykucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGtleSkge1xuICAgICAgcmVzW09iamVjdChoZWxwZXJbXCJhXCIgLyogY2FtZWxpemUgKi9dKShrZXkpXSA9IF90aGlzMy4kYXR0cnNba2V5XTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwge30pO1xuXG4gICAgdmFyIG9wdGlvbnMgPSBhc3NpZ25fZGVmYXVsdCgpKHt9LCB0aGlzLm9wdGlvbnMsIGF0dHJpYnV0ZXMsIG9wdGlvbnNBZGRlZCwge1xuICAgICAgb25Nb3ZlOiBmdW5jdGlvbiBvbk1vdmUoZXZ0LCBvcmlnaW5hbEV2ZW50KSB7XG4gICAgICAgIHJldHVybiBfdGhpczMub25EcmFnTW92ZShldnQsIG9yaWdpbmFsRXZlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgIShcImRyYWdnYWJsZVwiIGluIG9wdGlvbnMpICYmIChvcHRpb25zLmRyYWdnYWJsZSA9IFwiPipcIik7XG4gICAgdGhpcy5fc29ydGFibGUgPSBuZXcgZXh0ZXJuYWxfY29tbW9uanNfc29ydGFibGVqc19jb21tb25qczJfc29ydGFibGVqc19hbWRfc29ydGFibGVqc19yb290X1NvcnRhYmxlX2RlZmF1bHQuYSh0aGlzLnJvb3RDb250YWluZXIsIG9wdGlvbnMpO1xuICAgIHRoaXMuY29tcHV0ZUluZGV4ZXMoKTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fc29ydGFibGUgIT09IHVuZGVmaW5lZCkgdGhpcy5fc29ydGFibGUuZGVzdHJveSgpO1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHJvb3RDb250YWluZXI6IGZ1bmN0aW9uIHJvb3RDb250YWluZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uTW9kZSA/IHRoaXMuJGVsLmNoaWxkcmVuWzBdIDogdGhpcy4kZWw7XG4gICAgfSxcbiAgICByZWFsTGlzdDogZnVuY3Rpb24gcmVhbExpc3QoKSB7XG4gICAgICByZXR1cm4gdGhpcy5saXN0ID8gdGhpcy5saXN0IDogdGhpcy52YWx1ZTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgb3B0aW9uczoge1xuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdPcHRpb25WYWx1ZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMobmV3T3B0aW9uVmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGRlZXA6IHRydWVcbiAgICB9LFxuICAgICRhdHRyczoge1xuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdPcHRpb25WYWx1ZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMobmV3T3B0aW9uVmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGRlZXA6IHRydWVcbiAgICB9LFxuICAgIHJlYWxMaXN0OiBmdW5jdGlvbiByZWFsTGlzdCgpIHtcbiAgICAgIHRoaXMuY29tcHV0ZUluZGV4ZXMoKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRJc0Z1bmN0aW9uYWw6IGZ1bmN0aW9uIGdldElzRnVuY3Rpb25hbCgpIHtcbiAgICAgIHZhciBmbk9wdGlvbnMgPSB0aGlzLl92bm9kZS5mbk9wdGlvbnM7XG4gICAgICByZXR1cm4gZm5PcHRpb25zICYmIGZuT3B0aW9ucy5mdW5jdGlvbmFsO1xuICAgIH0sXG4gICAgZ2V0VGFnOiBmdW5jdGlvbiBnZXRUYWcoKSB7XG4gICAgICByZXR1cm4gdGhpcy50YWcgfHwgdGhpcy5lbGVtZW50O1xuICAgIH0sXG4gICAgdXBkYXRlT3B0aW9uczogZnVuY3Rpb24gdXBkYXRlT3B0aW9ucyhuZXdPcHRpb25WYWx1ZSkge1xuICAgICAgZm9yICh2YXIgcHJvcGVydHkgaW4gbmV3T3B0aW9uVmFsdWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gT2JqZWN0KGhlbHBlcltcImFcIiAvKiBjYW1lbGl6ZSAqL10pKHByb3BlcnR5KTtcblxuICAgICAgICBpZiAocmVhZG9ubHlQcm9wZXJ0aWVzLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuICAgICAgICAgIHRoaXMuX3NvcnRhYmxlLm9wdGlvbih2YWx1ZSwgbmV3T3B0aW9uVmFsdWVbcHJvcGVydHldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0Q2hpbGRyZW5Ob2RlczogZnVuY3Rpb24gZ2V0Q2hpbGRyZW5Ob2RlcygpIHtcbiAgICAgIGlmICh0aGlzLm5vbmVGdW5jdGlvbmFsQ29tcG9uZW50TW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy4kY2hpbGRyZW5bMF0uJHNsb3RzLmRlZmF1bHQ7XG4gICAgICB9XG5cbiAgICAgIHZhciByYXdOb2RlcyA9IHRoaXMuJHNsb3RzLmRlZmF1bHQ7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uTW9kZSA/IHJhd05vZGVzWzBdLmNoaWxkLiRzbG90cy5kZWZhdWx0IDogcmF3Tm9kZXM7XG4gICAgfSxcbiAgICBjb21wdXRlSW5kZXhlczogZnVuY3Rpb24gY29tcHV0ZUluZGV4ZXMoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczQudmlzaWJsZUluZGV4ZXMgPSBfY29tcHV0ZUluZGV4ZXMoX3RoaXM0LmdldENoaWxkcmVuTm9kZXMoKSwgX3RoaXM0LnJvb3RDb250YWluZXIuY2hpbGRyZW4sIF90aGlzNC50cmFuc2l0aW9uTW9kZSwgX3RoaXM0LmZvb3Rlck9mZnNldCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldFVuZGVybHlpbmdWbTogZnVuY3Rpb24gZ2V0VW5kZXJseWluZ1ZtKGh0bWxFbHQpIHtcbiAgICAgIHZhciBpbmRleCA9IGNvbXB1dGVWbUluZGV4KHRoaXMuZ2V0Q2hpbGRyZW5Ob2RlcygpIHx8IFtdLCBodG1sRWx0KTtcblxuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAvL0VkZ2UgY2FzZSBkdXJpbmcgbW92ZSBjYWxsYmFjazogcmVsYXRlZCBlbGVtZW50IG1pZ2h0IGJlXG4gICAgICAgIC8vYW4gZWxlbWVudCBkaWZmZXJlbnQgZnJvbSBjb2xsZWN0aW9uXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWxlbWVudCA9IHRoaXMucmVhbExpc3RbaW5kZXhdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBlbGVtZW50OiBlbGVtZW50XG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0VW5kZXJseWluZ1BvdGVuY2lhbERyYWdnYWJsZUNvbXBvbmVudDogZnVuY3Rpb24gZ2V0VW5kZXJseWluZ1BvdGVuY2lhbERyYWdnYWJsZUNvbXBvbmVudChfcmVmKSB7XG4gICAgICB2YXIgdnVlID0gX3JlZi5fX3Z1ZV9fO1xuXG4gICAgICBpZiAoIXZ1ZSB8fCAhdnVlLiRvcHRpb25zIHx8ICFpc1RyYW5zaXRpb25OYW1lKHZ1ZS4kb3B0aW9ucy5fY29tcG9uZW50VGFnKSkge1xuICAgICAgICBpZiAoIShcInJlYWxMaXN0XCIgaW4gdnVlKSAmJiB2dWUuJGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBcInJlYWxMaXN0XCIgaW4gdnVlLiRjaGlsZHJlblswXSkgcmV0dXJuIHZ1ZS4kY2hpbGRyZW5bMF07XG4gICAgICAgIHJldHVybiB2dWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2dWUuJHBhcmVudDtcbiAgICB9LFxuICAgIGVtaXRDaGFuZ2VzOiBmdW5jdGlvbiBlbWl0Q2hhbmdlcyhldnQpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzNS4kZW1pdChcImNoYW5nZVwiLCBldnQpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBhbHRlckxpc3Q6IGZ1bmN0aW9uIGFsdGVyTGlzdChvbkxpc3QpIHtcbiAgICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgICAgb25MaXN0KHRoaXMubGlzdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG5ld0xpc3QgPSBfdG9Db25zdW1hYmxlQXJyYXkodGhpcy52YWx1ZSk7XG5cbiAgICAgIG9uTGlzdChuZXdMaXN0KTtcbiAgICAgIHRoaXMuJGVtaXQoXCJpbnB1dFwiLCBuZXdMaXN0KTtcbiAgICB9LFxuICAgIHNwbGljZUxpc3Q6IGZ1bmN0aW9uIHNwbGljZUxpc3QoKSB7XG4gICAgICB2YXIgX2FyZ3VtZW50cyA9IGFyZ3VtZW50cztcblxuICAgICAgdmFyIHNwbGljZUxpc3QgPSBmdW5jdGlvbiBzcGxpY2VMaXN0KGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIGxpc3Quc3BsaWNlLmFwcGx5KGxpc3QsIF90b0NvbnN1bWFibGVBcnJheShfYXJndW1lbnRzKSk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLmFsdGVyTGlzdChzcGxpY2VMaXN0KTtcbiAgICB9LFxuICAgIHVwZGF0ZVBvc2l0aW9uOiBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbihvbGRJbmRleCwgbmV3SW5kZXgpIHtcbiAgICAgIHZhciB1cGRhdGVQb3NpdGlvbiA9IGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIGxpc3Quc3BsaWNlKG5ld0luZGV4LCAwLCBsaXN0LnNwbGljZShvbGRJbmRleCwgMSlbMF0pO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5hbHRlckxpc3QodXBkYXRlUG9zaXRpb24pO1xuICAgIH0sXG4gICAgZ2V0UmVsYXRlZENvbnRleHRGcm9tTW92ZUV2ZW50OiBmdW5jdGlvbiBnZXRSZWxhdGVkQ29udGV4dEZyb21Nb3ZlRXZlbnQoX3JlZjIpIHtcbiAgICAgIHZhciB0byA9IF9yZWYyLnRvLFxuICAgICAgICAgIHJlbGF0ZWQgPSBfcmVmMi5yZWxhdGVkO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuZ2V0VW5kZXJseWluZ1BvdGVuY2lhbERyYWdnYWJsZUNvbXBvbmVudCh0byk7XG5cbiAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tcG9uZW50OiBjb21wb25lbnRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdmFyIGxpc3QgPSBjb21wb25lbnQucmVhbExpc3Q7XG4gICAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgICAgbGlzdDogbGlzdCxcbiAgICAgICAgY29tcG9uZW50OiBjb21wb25lbnRcbiAgICAgIH07XG5cbiAgICAgIGlmICh0byAhPT0gcmVsYXRlZCAmJiBsaXN0ICYmIGNvbXBvbmVudC5nZXRVbmRlcmx5aW5nVm0pIHtcbiAgICAgICAgdmFyIGRlc3RpbmF0aW9uID0gY29tcG9uZW50LmdldFVuZGVybHlpbmdWbShyZWxhdGVkKTtcblxuICAgICAgICBpZiAoZGVzdGluYXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYXNzaWduX2RlZmF1bHQoKShkZXN0aW5hdGlvbiwgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfSxcbiAgICBnZXRWbUluZGV4OiBmdW5jdGlvbiBnZXRWbUluZGV4KGRvbUluZGV4KSB7XG4gICAgICB2YXIgaW5kZXhlcyA9IHRoaXMudmlzaWJsZUluZGV4ZXM7XG4gICAgICB2YXIgbnVtYmVySW5kZXhlcyA9IGluZGV4ZXMubGVuZ3RoO1xuICAgICAgcmV0dXJuIGRvbUluZGV4ID4gbnVtYmVySW5kZXhlcyAtIDEgPyBudW1iZXJJbmRleGVzIDogaW5kZXhlc1tkb21JbmRleF07XG4gICAgfSxcbiAgICBnZXRDb21wb25lbnQ6IGZ1bmN0aW9uIGdldENvbXBvbmVudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzbG90cy5kZWZhdWx0WzBdLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIH0sXG4gICAgcmVzZXRUcmFuc2l0aW9uRGF0YTogZnVuY3Rpb24gcmVzZXRUcmFuc2l0aW9uRGF0YShpbmRleCkge1xuICAgICAgaWYgKCF0aGlzLm5vVHJhbnNpdGlvbk9uRHJhZyB8fCAhdGhpcy50cmFuc2l0aW9uTW9kZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBub2RlcyA9IHRoaXMuZ2V0Q2hpbGRyZW5Ob2RlcygpO1xuICAgICAgbm9kZXNbaW5kZXhdLmRhdGEgPSBudWxsO1xuICAgICAgdmFyIHRyYW5zaXRpb25Db250YWluZXIgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgdHJhbnNpdGlvbkNvbnRhaW5lci5jaGlsZHJlbiA9IFtdO1xuICAgICAgdHJhbnNpdGlvbkNvbnRhaW5lci5rZXB0ID0gdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgb25EcmFnU3RhcnQ6IGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGV2dCkge1xuICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5nZXRVbmRlcmx5aW5nVm0oZXZ0Lml0ZW0pO1xuICAgICAgZXZ0Lml0ZW0uX3VuZGVybHlpbmdfdm1fID0gdGhpcy5jbG9uZSh0aGlzLmNvbnRleHQuZWxlbWVudCk7XG4gICAgICBkcmFnZ2luZ0VsZW1lbnQgPSBldnQuaXRlbTtcbiAgICB9LFxuICAgIG9uRHJhZ0FkZDogZnVuY3Rpb24gb25EcmFnQWRkKGV2dCkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBldnQuaXRlbS5fdW5kZXJseWluZ192bV87XG5cbiAgICAgIGlmIChlbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QoaGVscGVyW1wiZFwiIC8qIHJlbW92ZU5vZGUgKi9dKShldnQuaXRlbSk7XG4gICAgICB2YXIgbmV3SW5kZXggPSB0aGlzLmdldFZtSW5kZXgoZXZ0Lm5ld0luZGV4KTtcbiAgICAgIHRoaXMuc3BsaWNlTGlzdChuZXdJbmRleCwgMCwgZWxlbWVudCk7XG4gICAgICB0aGlzLmNvbXB1dGVJbmRleGVzKCk7XG4gICAgICB2YXIgYWRkZWQgPSB7XG4gICAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICAgIG5ld0luZGV4OiBuZXdJbmRleFxuICAgICAgfTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZXMoe1xuICAgICAgICBhZGRlZDogYWRkZWRcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25EcmFnUmVtb3ZlOiBmdW5jdGlvbiBvbkRyYWdSZW1vdmUoZXZ0KSB7XG4gICAgICBPYmplY3QoaGVscGVyW1wiY1wiIC8qIGluc2VydE5vZGVBdCAqL10pKHRoaXMucm9vdENvbnRhaW5lciwgZXZ0Lml0ZW0sIGV2dC5vbGRJbmRleCk7XG5cbiAgICAgIGlmIChldnQucHVsbE1vZGUgPT09IFwiY2xvbmVcIikge1xuICAgICAgICBPYmplY3QoaGVscGVyW1wiZFwiIC8qIHJlbW92ZU5vZGUgKi9dKShldnQuY2xvbmUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBvbGRJbmRleCA9IHRoaXMuY29udGV4dC5pbmRleDtcbiAgICAgIHRoaXMuc3BsaWNlTGlzdChvbGRJbmRleCwgMSk7XG4gICAgICB2YXIgcmVtb3ZlZCA9IHtcbiAgICAgICAgZWxlbWVudDogdGhpcy5jb250ZXh0LmVsZW1lbnQsXG4gICAgICAgIG9sZEluZGV4OiBvbGRJbmRleFxuICAgICAgfTtcbiAgICAgIHRoaXMucmVzZXRUcmFuc2l0aW9uRGF0YShvbGRJbmRleCk7XG4gICAgICB0aGlzLmVtaXRDaGFuZ2VzKHtcbiAgICAgICAgcmVtb3ZlZDogcmVtb3ZlZFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbkRyYWdVcGRhdGU6IGZ1bmN0aW9uIG9uRHJhZ1VwZGF0ZShldnQpIHtcbiAgICAgIE9iamVjdChoZWxwZXJbXCJkXCIgLyogcmVtb3ZlTm9kZSAqL10pKGV2dC5pdGVtKTtcbiAgICAgIE9iamVjdChoZWxwZXJbXCJjXCIgLyogaW5zZXJ0Tm9kZUF0ICovXSkoZXZ0LmZyb20sIGV2dC5pdGVtLCBldnQub2xkSW5kZXgpO1xuICAgICAgdmFyIG9sZEluZGV4ID0gdGhpcy5jb250ZXh0LmluZGV4O1xuICAgICAgdmFyIG5ld0luZGV4ID0gdGhpcy5nZXRWbUluZGV4KGV2dC5uZXdJbmRleCk7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICB2YXIgbW92ZWQgPSB7XG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuY29udGV4dC5lbGVtZW50LFxuICAgICAgICBvbGRJbmRleDogb2xkSW5kZXgsXG4gICAgICAgIG5ld0luZGV4OiBuZXdJbmRleFxuICAgICAgfTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZXMoe1xuICAgICAgICBtb3ZlZDogbW92ZWRcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBkYXRlUHJvcGVydHk6IGZ1bmN0aW9uIHVwZGF0ZVByb3BlcnR5KGV2dCwgcHJvcGVydHlOYW1lKSB7XG4gICAgICBldnQuaGFzT3duUHJvcGVydHkocHJvcGVydHlOYW1lKSAmJiAoZXZ0W3Byb3BlcnR5TmFtZV0gKz0gdGhpcy5oZWFkZXJPZmZzZXQpO1xuICAgIH0sXG4gICAgY29tcHV0ZUZ1dHVyZUluZGV4OiBmdW5jdGlvbiBjb21wdXRlRnV0dXJlSW5kZXgocmVsYXRlZENvbnRleHQsIGV2dCkge1xuICAgICAgaWYgKCFyZWxhdGVkQ29udGV4dC5lbGVtZW50KSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICB2YXIgZG9tQ2hpbGRyZW4gPSBfdG9Db25zdW1hYmxlQXJyYXkoZXZ0LnRvLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBlbC5zdHlsZVtcImRpc3BsYXlcIl0gIT09IFwibm9uZVwiO1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBjdXJyZW50RE9NSW5kZXggPSBkb21DaGlsZHJlbi5pbmRleE9mKGV2dC5yZWxhdGVkKTtcbiAgICAgIHZhciBjdXJyZW50SW5kZXggPSByZWxhdGVkQ29udGV4dC5jb21wb25lbnQuZ2V0Vm1JbmRleChjdXJyZW50RE9NSW5kZXgpO1xuICAgICAgdmFyIGRyYWdnZWRJbkxpc3QgPSBkb21DaGlsZHJlbi5pbmRleE9mKGRyYWdnaW5nRWxlbWVudCkgIT09IC0xO1xuICAgICAgcmV0dXJuIGRyYWdnZWRJbkxpc3QgfHwgIWV2dC53aWxsSW5zZXJ0QWZ0ZXIgPyBjdXJyZW50SW5kZXggOiBjdXJyZW50SW5kZXggKyAxO1xuICAgIH0sXG4gICAgb25EcmFnTW92ZTogZnVuY3Rpb24gb25EcmFnTW92ZShldnQsIG9yaWdpbmFsRXZlbnQpIHtcbiAgICAgIHZhciBvbk1vdmUgPSB0aGlzLm1vdmU7XG5cbiAgICAgIGlmICghb25Nb3ZlIHx8ICF0aGlzLnJlYWxMaXN0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVsYXRlZENvbnRleHQgPSB0aGlzLmdldFJlbGF0ZWRDb250ZXh0RnJvbU1vdmVFdmVudChldnQpO1xuICAgICAgdmFyIGRyYWdnZWRDb250ZXh0ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGZ1dHVyZUluZGV4ID0gdGhpcy5jb21wdXRlRnV0dXJlSW5kZXgocmVsYXRlZENvbnRleHQsIGV2dCk7XG5cbiAgICAgIGFzc2lnbl9kZWZhdWx0KCkoZHJhZ2dlZENvbnRleHQsIHtcbiAgICAgICAgZnV0dXJlSW5kZXg6IGZ1dHVyZUluZGV4XG4gICAgICB9KTtcblxuICAgICAgdmFyIHNlbmRFdnQgPSBhc3NpZ25fZGVmYXVsdCgpKHt9LCBldnQsIHtcbiAgICAgICAgcmVsYXRlZENvbnRleHQ6IHJlbGF0ZWRDb250ZXh0LFxuICAgICAgICBkcmFnZ2VkQ29udGV4dDogZHJhZ2dlZENvbnRleHRcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gb25Nb3ZlKHNlbmRFdnQsIG9yaWdpbmFsRXZlbnQpO1xuICAgIH0sXG4gICAgb25EcmFnRW5kOiBmdW5jdGlvbiBvbkRyYWdFbmQoKSB7XG4gICAgICB0aGlzLmNvbXB1dGVJbmRleGVzKCk7XG4gICAgICBkcmFnZ2luZ0VsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgfVxufTtcblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgXCJWdWVcIiBpbiB3aW5kb3cpIHtcbiAgd2luZG93LlZ1ZS5jb21wb25lbnQoXCJkcmFnZ2FibGVcIiwgZHJhZ2dhYmxlQ29tcG9uZW50KTtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnVlZHJhZ2dhYmxlID0gKGRyYWdnYWJsZUNvbXBvbmVudCk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlL2xpYi9jb21tYW5kcy9idWlsZC9lbnRyeS1saWIuanNcblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBlbnRyeV9saWIgPSBfX3dlYnBhY2tfZXhwb3J0c19fW1wiZGVmYXVsdFwiXSA9ICh2dWVkcmFnZ2FibGUpO1xuXG5cblxuLyoqKi8gfSlcblxuLyoqKioqKi8gfSlbXCJkZWZhdWx0XCJdO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dnVlZHJhZ2dhYmxlLmNvbW1vbi5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vuedraggable/dist/vuedraggable.common.js\n");

/***/ }),

/***/ "./node_modules/vuejs-datepicker/dist/vuejs-datepicker.esm.js":
/*!********************************************************************!*\
  !*** ./node_modules/vuejs-datepicker/dist/vuejs-datepicker.esm.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}\n\nvar Language =\n/*#__PURE__*/\nfunction () {\n  function Language(language, months, monthsAbbr, days) {\n    _classCallCheck(this, Language);\n\n    this.language = language;\n    this.months = months;\n    this.monthsAbbr = monthsAbbr;\n    this.days = days;\n    this.rtl = false;\n    this.ymd = false;\n    this.yearSuffix = '';\n  }\n\n  _createClass(Language, [{\n    key: \"language\",\n    get: function get() {\n      return this._language;\n    },\n    set: function set(language) {\n      if (typeof language !== 'string') {\n        throw new TypeError('Language must be a string');\n      }\n\n      this._language = language;\n    }\n  }, {\n    key: \"months\",\n    get: function get() {\n      return this._months;\n    },\n    set: function set(months) {\n      if (months.length !== 12) {\n        throw new RangeError(\"There must be 12 months for \".concat(this.language, \" language\"));\n      }\n\n      this._months = months;\n    }\n  }, {\n    key: \"monthsAbbr\",\n    get: function get() {\n      return this._monthsAbbr;\n    },\n    set: function set(monthsAbbr) {\n      if (monthsAbbr.length !== 12) {\n        throw new RangeError(\"There must be 12 abbreviated months for \".concat(this.language, \" language\"));\n      }\n\n      this._monthsAbbr = monthsAbbr;\n    }\n  }, {\n    key: \"days\",\n    get: function get() {\n      return this._days;\n    },\n    set: function set(days) {\n      if (days.length !== 7) {\n        throw new RangeError(\"There must be 7 days for \".concat(this.language, \" language\"));\n      }\n\n      this._days = days;\n    }\n  }]);\n\n  return Language;\n}(); // eslint-disable-next-line\n\nvar en = new Language('English', ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']) // eslint-disable-next-line\n;\n\nvar utils = {\n  /**\n   * @type {Boolean}\n   */\n  useUtc: false,\n\n  /**\n   * Returns the full year, using UTC or not\n   * @param {Date} date\n   */\n  getFullYear: function getFullYear(date) {\n    return this.useUtc ? date.getUTCFullYear() : date.getFullYear();\n  },\n\n  /**\n   * Returns the month, using UTC or not\n   * @param {Date} date\n   */\n  getMonth: function getMonth(date) {\n    return this.useUtc ? date.getUTCMonth() : date.getMonth();\n  },\n\n  /**\n   * Returns the date, using UTC or not\n   * @param {Date} date\n   */\n  getDate: function getDate(date) {\n    return this.useUtc ? date.getUTCDate() : date.getDate();\n  },\n\n  /**\n   * Returns the day, using UTC or not\n   * @param {Date} date\n   */\n  getDay: function getDay(date) {\n    return this.useUtc ? date.getUTCDay() : date.getDay();\n  },\n\n  /**\n   * Returns the hours, using UTC or not\n   * @param {Date} date\n   */\n  getHours: function getHours(date) {\n    return this.useUtc ? date.getUTCHours() : date.getHours();\n  },\n\n  /**\n   * Returns the minutes, using UTC or not\n   * @param {Date} date\n   */\n  getMinutes: function getMinutes(date) {\n    return this.useUtc ? date.getUTCMinutes() : date.getMinutes();\n  },\n\n  /**\n   * Sets the full year, using UTC or not\n   * @param {Date} date\n   */\n  setFullYear: function setFullYear(date, value, useUtc) {\n    return this.useUtc ? date.setUTCFullYear(value) : date.setFullYear(value);\n  },\n\n  /**\n   * Sets the month, using UTC or not\n   * @param {Date} date\n   */\n  setMonth: function setMonth(date, value, useUtc) {\n    return this.useUtc ? date.setUTCMonth(value) : date.setMonth(value);\n  },\n\n  /**\n   * Sets the date, using UTC or not\n   * @param {Date} date\n   * @param {Number} value\n   */\n  setDate: function setDate(date, value, useUtc) {\n    return this.useUtc ? date.setUTCDate(value) : date.setDate(value);\n  },\n\n  /**\n   * Check if date1 is equivalent to date2, without comparing the time\n   * @see https://stackoverflow.com/a/6202196/4455925\n   * @param {Date} date1\n   * @param {Date} date2\n   */\n  compareDates: function compareDates(date1, date2) {\n    var d1 = new Date(date1.getTime());\n    var d2 = new Date(date2.getTime());\n\n    if (this.useUtc) {\n      d1.setUTCHours(0, 0, 0, 0);\n      d2.setUTCHours(0, 0, 0, 0);\n    } else {\n      d1.setHours(0, 0, 0, 0);\n      d2.setHours(0, 0, 0, 0);\n    }\n\n    return d1.getTime() === d2.getTime();\n  },\n\n  /**\n   * Validates a date object\n   * @param {Date} date - an object instantiated with the new Date constructor\n   * @return {Boolean}\n   */\n  isValidDate: function isValidDate(date) {\n    if (Object.prototype.toString.call(date) !== '[object Date]') {\n      return false;\n    }\n\n    return !isNaN(date.getTime());\n  },\n\n  /**\n   * Return abbreviated week day name\n   * @param {Date}\n   * @param {Array}\n   * @return {String}\n   */\n  getDayNameAbbr: function getDayNameAbbr(date, days) {\n    if (_typeof(date) !== 'object') {\n      throw TypeError('Invalid Type');\n    }\n\n    return days[this.getDay(date)];\n  },\n\n  /**\n   * Return name of the month\n   * @param {Number|Date}\n   * @param {Array}\n   * @return {String}\n   */\n  getMonthName: function getMonthName(month, months) {\n    if (!months) {\n      throw Error('missing 2nd parameter Months array');\n    }\n\n    if (_typeof(month) === 'object') {\n      return months[this.getMonth(month)];\n    }\n\n    if (typeof month === 'number') {\n      return months[month];\n    }\n\n    throw TypeError('Invalid type');\n  },\n\n  /**\n   * Return an abbreviated version of the month\n   * @param {Number|Date}\n   * @return {String}\n   */\n  getMonthNameAbbr: function getMonthNameAbbr(month, monthsAbbr) {\n    if (!monthsAbbr) {\n      throw Error('missing 2nd paramter Months array');\n    }\n\n    if (_typeof(month) === 'object') {\n      return monthsAbbr[this.getMonth(month)];\n    }\n\n    if (typeof month === 'number') {\n      return monthsAbbr[month];\n    }\n\n    throw TypeError('Invalid type');\n  },\n\n  /**\n   * Alternative get total number of days in month\n   * @param {Number} year\n   * @param {Number} m\n   * @return {Number}\n   */\n  daysInMonth: function daysInMonth(year, month) {\n    return /8|3|5|10/.test(month) ? 30 : month === 1 ? !(year % 4) && year % 100 || !(year % 400) ? 29 : 28 : 31;\n  },\n\n  /**\n   * Get nth suffix for date\n   * @param {Number} day\n   * @return {String}\n   */\n  getNthSuffix: function getNthSuffix(day) {\n    switch (day) {\n      case 1:\n      case 21:\n      case 31:\n        return 'st';\n\n      case 2:\n      case 22:\n        return 'nd';\n\n      case 3:\n      case 23:\n        return 'rd';\n\n      default:\n        return 'th';\n    }\n  },\n\n  /**\n   * Formats date object\n   * @param {Date}\n   * @param {String}\n   * @param {Object}\n   * @return {String}\n   */\n  formatDate: function formatDate(date, format, translation) {\n    translation = !translation ? en : translation;\n    var year = this.getFullYear(date);\n    var month = this.getMonth(date) + 1;\n    var day = this.getDate(date);\n    var str = format.replace(/dd/, ('0' + day).slice(-2)).replace(/d/, day).replace(/yyyy/, year).replace(/yy/, String(year).slice(2)).replace(/MMMM/, this.getMonthName(this.getMonth(date), translation.months)).replace(/MMM/, this.getMonthNameAbbr(this.getMonth(date), translation.monthsAbbr)).replace(/MM/, ('0' + month).slice(-2)).replace(/M(?!a|ä|e)/, month).replace(/su/, this.getNthSuffix(this.getDate(date))).replace(/D(?!e|é|i)/, this.getDayNameAbbr(date, translation.days));\n    return str;\n  },\n\n  /**\n   * Creates an array of dates for each day in between two dates.\n   * @param {Date} start\n   * @param {Date} end\n   * @return {Array}\n   */\n  createDateArray: function createDateArray(start, end) {\n    var dates = [];\n\n    while (start <= end) {\n      dates.push(new Date(start));\n      start = this.setDate(new Date(start), this.getDate(new Date(start)) + 1);\n    }\n\n    return dates;\n  },\n\n  /**\n   * method used as a prop validator for input values\n   * @param {*} val\n   * @return {Boolean}\n   */\n  validateDateInput: function validateDateInput(val) {\n    return val === null || val instanceof Date || typeof val === 'string' || typeof val === 'number';\n  }\n};\nvar makeDateUtils = function makeDateUtils(useUtc) {\n  return _objectSpread({}, utils, {\n    useUtc: useUtc\n  });\n};\nvar utils$1 = _objectSpread({}, utils) // eslint-disable-next-line\n;\n\nvar script = {\n  props: {\n    selectedDate: Date,\n    resetTypedDate: [Date],\n    format: [String, Function],\n    translation: Object,\n    inline: Boolean,\n    id: String,\n    name: String,\n    refName: String,\n    openDate: Date,\n    placeholder: String,\n    inputClass: [String, Object, Array],\n    clearButton: Boolean,\n    clearButtonIcon: String,\n    calendarButton: Boolean,\n    calendarButtonIcon: String,\n    calendarButtonIconContent: String,\n    disabled: Boolean,\n    required: Boolean,\n    typeable: Boolean,\n    bootstrapStyling: Boolean,\n    useUtc: Boolean\n  },\n  data: function data() {\n    var constructedDateUtils = makeDateUtils(this.useUtc);\n    return {\n      input: null,\n      typedDate: false,\n      utils: constructedDateUtils\n    };\n  },\n  computed: {\n    formattedValue: function formattedValue() {\n      if (!this.selectedDate) {\n        return null;\n      }\n\n      if (this.typedDate) {\n        return this.typedDate;\n      }\n\n      return typeof this.format === 'function' ? this.format(this.selectedDate) : this.utils.formatDate(new Date(this.selectedDate), this.format, this.translation);\n    },\n    computedInputClass: function computedInputClass() {\n      if (this.bootstrapStyling) {\n        if (typeof this.inputClass === 'string') {\n          return [this.inputClass, 'form-control'].join(' ');\n        }\n\n        return _objectSpread({\n          'form-control': true\n        }, this.inputClass);\n      }\n\n      return this.inputClass;\n    }\n  },\n  watch: {\n    resetTypedDate: function resetTypedDate() {\n      this.typedDate = false;\n    }\n  },\n  methods: {\n    showCalendar: function showCalendar() {\n      this.$emit('showCalendar');\n    },\n\n    /**\n     * Attempt to parse a typed date\n     * @param {Event} event\n     */\n    parseTypedDate: function parseTypedDate(event) {\n      // close calendar if escape or enter are pressed\n      if ([27, // escape\n      13 // enter\n      ].includes(event.keyCode)) {\n        this.input.blur();\n      }\n\n      if (this.typeable) {\n        var typedDate = Date.parse(this.input.value);\n\n        if (!isNaN(typedDate)) {\n          this.typedDate = this.input.value;\n          this.$emit('typedDate', new Date(this.typedDate));\n        }\n      }\n    },\n\n    /**\n     * nullify the typed date to defer to regular formatting\n     * called once the input is blurred\n     */\n    inputBlurred: function inputBlurred() {\n      if (this.typeable && isNaN(Date.parse(this.input.value))) {\n        this.clearDate();\n        this.input.value = null;\n        this.typedDate = null;\n      }\n\n      this.$emit('closeCalendar');\n    },\n\n    /**\n     * emit a clearDate event\n     */\n    clearDate: function clearDate() {\n      this.$emit('clearDate');\n    }\n  },\n  mounted: function mounted() {\n    this.input = this.$el.querySelector('input');\n  }\n} // eslint-disable-next-line\n;\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n  if (typeof shadowMode !== 'boolean') {\n    createInjectorSSR = createInjector;\n    createInjector = shadowMode;\n    shadowMode = false;\n  } // Vue.extend constructor export interop.\n\n\n  var options = typeof script === 'function' ? script.options : script; // render functions\n\n  if (template && template.render) {\n    options.render = template.render;\n    options.staticRenderFns = template.staticRenderFns;\n    options._compiled = true; // functional template\n\n    if (isFunctionalTemplate) {\n      options.functional = true;\n    }\n  } // scopedId\n\n\n  if (scopeId) {\n    options._scopeId = scopeId;\n  }\n\n  var hook;\n\n  if (moduleIdentifier) {\n    // server build\n    hook = function hook(context) {\n      // 2.3 injection\n      context = context || // cached call\n      this.$vnode && this.$vnode.ssrContext || // stateful\n      this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n      // 2.2 with runInNewContext: true\n\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__;\n      } // inject component styles\n\n\n      if (style) {\n        style.call(this, createInjectorSSR(context));\n      } // register component module identifier for async chunk inference\n\n\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier);\n      }\n    }; // used by ssr in case component is cached and beforeCreate\n    // never gets called\n\n\n    options._ssrRegister = hook;\n  } else if (style) {\n    hook = shadowMode ? function () {\n      style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n    } : function (context) {\n      style.call(this, createInjector(context));\n    };\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // register for functional component in vue file\n      var originalRender = options.render;\n\n      options.render = function renderWithStyleInjection(h, context) {\n        hook.call(context);\n        return originalRender(h, context);\n      };\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate;\n      options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n    }\n  }\n\n  return script;\n}\n\nvar normalizeComponent_1 = normalizeComponent;\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    { class: { \"input-group\": _vm.bootstrapStyling } },\n    [\n      _vm.calendarButton\n        ? _c(\n            \"span\",\n            {\n              staticClass: \"vdp-datepicker__calendar-button\",\n              class: { \"input-group-prepend\": _vm.bootstrapStyling },\n              style: { \"cursor:not-allowed;\": _vm.disabled },\n              on: { click: _vm.showCalendar }\n            },\n            [\n              _c(\n                \"span\",\n                { class: { \"input-group-text\": _vm.bootstrapStyling } },\n                [\n                  _c(\"i\", { class: _vm.calendarButtonIcon }, [\n                    _vm._v(\n                      \"\\n        \" +\n                        _vm._s(_vm.calendarButtonIconContent) +\n                        \"\\n        \"\n                    ),\n                    !_vm.calendarButtonIcon\n                      ? _c(\"span\", [_vm._v(\"…\")])\n                      : _vm._e()\n                  ])\n                ]\n              )\n            ]\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\"input\", {\n        ref: _vm.refName,\n        class: _vm.computedInputClass,\n        attrs: {\n          type: _vm.inline ? \"hidden\" : \"text\",\n          name: _vm.name,\n          id: _vm.id,\n          \"open-date\": _vm.openDate,\n          placeholder: _vm.placeholder,\n          \"clear-button\": _vm.clearButton,\n          disabled: _vm.disabled,\n          required: _vm.required,\n          readonly: !_vm.typeable,\n          autocomplete: \"off\"\n        },\n        domProps: { value: _vm.formattedValue },\n        on: {\n          click: _vm.showCalendar,\n          keyup: _vm.parseTypedDate,\n          blur: _vm.inputBlurred\n        }\n      }),\n      _vm._v(\" \"),\n      _vm.clearButton && _vm.selectedDate\n        ? _c(\n            \"span\",\n            {\n              staticClass: \"vdp-datepicker__clear-button\",\n              class: { \"input-group-append\": _vm.bootstrapStyling },\n              on: {\n                click: function($event) {\n                  return _vm.clearDate()\n                }\n              }\n            },\n            [\n              _c(\n                \"span\",\n                { class: { \"input-group-text\": _vm.bootstrapStyling } },\n                [\n                  _c(\"i\", { class: _vm.clearButtonIcon }, [\n                    !_vm.clearButtonIcon ? _c(\"span\", [_vm._v(\"×\")]) : _vm._e()\n                  ])\n                ]\n              )\n            ]\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm._t(\"afterDateInput\")\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n\n  \n  var DateInput = normalizeComponent_1(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    undefined,\n    undefined\n  );\n\n//\nvar script$1 = {\n  props: {\n    showDayView: Boolean,\n    selectedDate: Date,\n    pageDate: Date,\n    pageTimestamp: Number,\n    fullMonthName: Boolean,\n    allowedToShowView: Function,\n    dayCellContent: {\n      type: Function,\n      \"default\": function _default(day) {\n        return day.date;\n      }\n    },\n    disabledDates: Object,\n    highlighted: Object,\n    calendarClass: [String, Object, Array],\n    calendarStyle: Object,\n    translation: Object,\n    isRtl: Boolean,\n    mondayFirst: Boolean,\n    useUtc: Boolean\n  },\n  data: function data() {\n    var constructedDateUtils = makeDateUtils(this.useUtc);\n    return {\n      utils: constructedDateUtils\n    };\n  },\n  computed: {\n    /**\n     * Returns an array of day names\n     * @return {String[]}\n     */\n    daysOfWeek: function daysOfWeek() {\n      if (this.mondayFirst) {\n        var tempDays = this.translation.days.slice();\n        tempDays.push(tempDays.shift());\n        return tempDays;\n      }\n\n      return this.translation.days;\n    },\n\n    /**\n     * Returns the day number of the week less one for the first of the current month\n     * Used to show amount of empty cells before the first in the day calendar layout\n     * @return {Number}\n     */\n    blankDays: function blankDays() {\n      var d = this.pageDate;\n      var dObj = this.useUtc ? new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), 1)) : new Date(d.getFullYear(), d.getMonth(), 1, d.getHours(), d.getMinutes());\n\n      if (this.mondayFirst) {\n        return this.utils.getDay(dObj) > 0 ? this.utils.getDay(dObj) - 1 : 6;\n      }\n\n      return this.utils.getDay(dObj);\n    },\n\n    /**\n     * @return {Object[]}\n     */\n    days: function days() {\n      var d = this.pageDate;\n      var days = []; // set up a new date object to the beginning of the current 'page'\n\n      var dObj = this.useUtc ? new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), 1)) : new Date(d.getFullYear(), d.getMonth(), 1, d.getHours(), d.getMinutes());\n      var daysInMonth = this.utils.daysInMonth(this.utils.getFullYear(dObj), this.utils.getMonth(dObj));\n\n      for (var i = 0; i < daysInMonth; i++) {\n        days.push({\n          date: this.utils.getDate(dObj),\n          timestamp: dObj.getTime(),\n          isSelected: this.isSelectedDate(dObj),\n          isDisabled: this.isDisabledDate(dObj),\n          isHighlighted: this.isHighlightedDate(dObj),\n          isHighlightStart: this.isHighlightStart(dObj),\n          isHighlightEnd: this.isHighlightEnd(dObj),\n          isToday: this.utils.compareDates(dObj, new Date()),\n          isWeekend: this.utils.getDay(dObj) === 0 || this.utils.getDay(dObj) === 6,\n          isSaturday: this.utils.getDay(dObj) === 6,\n          isSunday: this.utils.getDay(dObj) === 0\n        });\n        this.utils.setDate(dObj, this.utils.getDate(dObj) + 1);\n      }\n\n      return days;\n    },\n\n    /**\n     * Gets the name of the month the current page is on\n     * @return {String}\n     */\n    currMonthName: function currMonthName() {\n      var monthName = this.fullMonthName ? this.translation.months : this.translation.monthsAbbr;\n      return this.utils.getMonthNameAbbr(this.utils.getMonth(this.pageDate), monthName);\n    },\n\n    /**\n     * Gets the name of the year that current page is on\n     * @return {Number}\n     */\n    currYearName: function currYearName() {\n      var yearSuffix = this.translation.yearSuffix;\n      return \"\".concat(this.utils.getFullYear(this.pageDate)).concat(yearSuffix);\n    },\n\n    /**\n     * Is this translation using year/month/day format?\n     * @return {Boolean}\n     */\n    isYmd: function isYmd() {\n      return this.translation.ymd && this.translation.ymd === true;\n    },\n\n    /**\n     * Is the left hand navigation button disabled?\n     * @return {Boolean}\n     */\n    isLeftNavDisabled: function isLeftNavDisabled() {\n      return this.isRtl ? this.isNextMonthDisabled(this.pageTimestamp) : this.isPreviousMonthDisabled(this.pageTimestamp);\n    },\n\n    /**\n     * Is the right hand navigation button disabled?\n     * @return {Boolean}\n     */\n    isRightNavDisabled: function isRightNavDisabled() {\n      return this.isRtl ? this.isPreviousMonthDisabled(this.pageTimestamp) : this.isNextMonthDisabled(this.pageTimestamp);\n    }\n  },\n  methods: {\n    selectDate: function selectDate(date) {\n      if (date.isDisabled) {\n        this.$emit('selectedDisabled', date);\n        return false;\n      }\n\n      this.$emit('selectDate', date);\n    },\n\n    /**\n     * @return {Number}\n     */\n    getPageMonth: function getPageMonth() {\n      return this.utils.getMonth(this.pageDate);\n    },\n\n    /**\n     * Emit an event to show the month picker\n     */\n    showMonthCalendar: function showMonthCalendar() {\n      this.$emit('showMonthCalendar');\n    },\n\n    /**\n     * Change the page month\n     * @param {Number} incrementBy\n     */\n    changeMonth: function changeMonth(incrementBy) {\n      var date = this.pageDate;\n      this.utils.setMonth(date, this.utils.getMonth(date) + incrementBy);\n      this.$emit('changedMonth', date);\n    },\n\n    /**\n     * Decrement the page month\n     */\n    previousMonth: function previousMonth() {\n      if (!this.isPreviousMonthDisabled()) {\n        this.changeMonth(-1);\n      }\n    },\n\n    /**\n     * Is the previous month disabled?\n     * @return {Boolean}\n     */\n    isPreviousMonthDisabled: function isPreviousMonthDisabled() {\n      if (!this.disabledDates || !this.disabledDates.to) {\n        return false;\n      }\n\n      var d = this.pageDate;\n      return this.utils.getMonth(this.disabledDates.to) >= this.utils.getMonth(d) && this.utils.getFullYear(this.disabledDates.to) >= this.utils.getFullYear(d);\n    },\n\n    /**\n     * Increment the current page month\n     */\n    nextMonth: function nextMonth() {\n      if (!this.isNextMonthDisabled()) {\n        this.changeMonth(+1);\n      }\n    },\n\n    /**\n     * Is the next month disabled?\n     * @return {Boolean}\n     */\n    isNextMonthDisabled: function isNextMonthDisabled() {\n      if (!this.disabledDates || !this.disabledDates.from) {\n        return false;\n      }\n\n      var d = this.pageDate;\n      return this.utils.getMonth(this.disabledDates.from) <= this.utils.getMonth(d) && this.utils.getFullYear(this.disabledDates.from) <= this.utils.getFullYear(d);\n    },\n\n    /**\n     * Whether a day is selected\n     * @param {Date}\n     * @return {Boolean}\n     */\n    isSelectedDate: function isSelectedDate(dObj) {\n      return this.selectedDate && this.utils.compareDates(this.selectedDate, dObj);\n    },\n\n    /**\n     * Whether a day is disabled\n     * @param {Date}\n     * @return {Boolean}\n     */\n    isDisabledDate: function isDisabledDate(date) {\n      var _this = this;\n\n      var disabledDates = false;\n\n      if (typeof this.disabledDates === 'undefined') {\n        return false;\n      }\n\n      if (typeof this.disabledDates.dates !== 'undefined') {\n        this.disabledDates.dates.forEach(function (d) {\n          if (_this.utils.compareDates(date, d)) {\n            disabledDates = true;\n            return true;\n          }\n        });\n      }\n\n      if (typeof this.disabledDates.to !== 'undefined' && this.disabledDates.to && date < this.disabledDates.to) {\n        disabledDates = true;\n      }\n\n      if (typeof this.disabledDates.from !== 'undefined' && this.disabledDates.from && date > this.disabledDates.from) {\n        disabledDates = true;\n      }\n\n      if (typeof this.disabledDates.ranges !== 'undefined') {\n        this.disabledDates.ranges.forEach(function (range) {\n          if (typeof range.from !== 'undefined' && range.from && typeof range.to !== 'undefined' && range.to) {\n            if (date < range.to && date > range.from) {\n              disabledDates = true;\n              return true;\n            }\n          }\n        });\n      }\n\n      if (typeof this.disabledDates.days !== 'undefined' && this.disabledDates.days.indexOf(this.utils.getDay(date)) !== -1) {\n        disabledDates = true;\n      }\n\n      if (typeof this.disabledDates.daysOfMonth !== 'undefined' && this.disabledDates.daysOfMonth.indexOf(this.utils.getDate(date)) !== -1) {\n        disabledDates = true;\n      }\n\n      if (typeof this.disabledDates.customPredictor === 'function' && this.disabledDates.customPredictor(date)) {\n        disabledDates = true;\n      }\n\n      return disabledDates;\n    },\n\n    /**\n     * Whether a day is highlighted (only if it is not disabled already except when highlighted.includeDisabled is true)\n     * @param {Date}\n     * @return {Boolean}\n     */\n    isHighlightedDate: function isHighlightedDate(date) {\n      var _this2 = this;\n\n      if (!(this.highlighted && this.highlighted.includeDisabled) && this.isDisabledDate(date)) {\n        return false;\n      }\n\n      var highlighted = false;\n\n      if (typeof this.highlighted === 'undefined') {\n        return false;\n      }\n\n      if (typeof this.highlighted.dates !== 'undefined') {\n        this.highlighted.dates.forEach(function (d) {\n          if (_this2.utils.compareDates(date, d)) {\n            highlighted = true;\n            return true;\n          }\n        });\n      }\n\n      if (this.isDefined(this.highlighted.from) && this.isDefined(this.highlighted.to)) {\n        highlighted = date >= this.highlighted.from && date <= this.highlighted.to;\n      }\n\n      if (typeof this.highlighted.days !== 'undefined' && this.highlighted.days.indexOf(this.utils.getDay(date)) !== -1) {\n        highlighted = true;\n      }\n\n      if (typeof this.highlighted.daysOfMonth !== 'undefined' && this.highlighted.daysOfMonth.indexOf(this.utils.getDate(date)) !== -1) {\n        highlighted = true;\n      }\n\n      if (typeof this.highlighted.customPredictor === 'function' && this.highlighted.customPredictor(date)) {\n        highlighted = true;\n      }\n\n      return highlighted;\n    },\n    dayClasses: function dayClasses(day) {\n      return {\n        'selected': day.isSelected,\n        'disabled': day.isDisabled,\n        'highlighted': day.isHighlighted,\n        'today': day.isToday,\n        'weekend': day.isWeekend,\n        'sat': day.isSaturday,\n        'sun': day.isSunday,\n        'highlight-start': day.isHighlightStart,\n        'highlight-end': day.isHighlightEnd\n      };\n    },\n\n    /**\n     * Whether a day is highlighted and it is the first date\n     * in the highlighted range of dates\n     * @param {Date}\n     * @return {Boolean}\n     */\n    isHighlightStart: function isHighlightStart(date) {\n      return this.isHighlightedDate(date) && this.highlighted.from instanceof Date && this.utils.getFullYear(this.highlighted.from) === this.utils.getFullYear(date) && this.utils.getMonth(this.highlighted.from) === this.utils.getMonth(date) && this.utils.getDate(this.highlighted.from) === this.utils.getDate(date);\n    },\n\n    /**\n     * Whether a day is highlighted and it is the first date\n     * in the highlighted range of dates\n     * @param {Date}\n     * @return {Boolean}\n     */\n    isHighlightEnd: function isHighlightEnd(date) {\n      return this.isHighlightedDate(date) && this.highlighted.to instanceof Date && this.utils.getFullYear(this.highlighted.to) === this.utils.getFullYear(date) && this.utils.getMonth(this.highlighted.to) === this.utils.getMonth(date) && this.utils.getDate(this.highlighted.to) === this.utils.getDate(date);\n    },\n\n    /**\n     * Helper\n     * @param  {mixed}  prop\n     * @return {Boolean}\n     */\n    isDefined: function isDefined(prop) {\n      return typeof prop !== 'undefined' && prop;\n    }\n  } // eslint-disable-next-line\n\n};\n\n/* script */\nconst __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__$1 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      directives: [\n        {\n          name: \"show\",\n          rawName: \"v-show\",\n          value: _vm.showDayView,\n          expression: \"showDayView\"\n        }\n      ],\n      class: [_vm.calendarClass, \"vdp-datepicker__calendar\"],\n      style: _vm.calendarStyle,\n      on: {\n        mousedown: function($event) {\n          $event.preventDefault();\n        }\n      }\n    },\n    [\n      _vm._t(\"beforeCalendarHeader\"),\n      _vm._v(\" \"),\n      _c(\"header\", [\n        _c(\n          \"span\",\n          {\n            staticClass: \"prev\",\n            class: { disabled: _vm.isLeftNavDisabled },\n            on: {\n              click: function($event) {\n                _vm.isRtl ? _vm.nextMonth() : _vm.previousMonth();\n              }\n            }\n          },\n          [_vm._v(\"<\")]\n        ),\n        _vm._v(\" \"),\n        _c(\n          \"span\",\n          {\n            staticClass: \"day__month_btn\",\n            class: _vm.allowedToShowView(\"month\") ? \"up\" : \"\",\n            on: { click: _vm.showMonthCalendar }\n          },\n          [\n            _vm._v(\n              _vm._s(_vm.isYmd ? _vm.currYearName : _vm.currMonthName) +\n                \" \" +\n                _vm._s(_vm.isYmd ? _vm.currMonthName : _vm.currYearName)\n            )\n          ]\n        ),\n        _vm._v(\" \"),\n        _c(\n          \"span\",\n          {\n            staticClass: \"next\",\n            class: { disabled: _vm.isRightNavDisabled },\n            on: {\n              click: function($event) {\n                _vm.isRtl ? _vm.previousMonth() : _vm.nextMonth();\n              }\n            }\n          },\n          [_vm._v(\">\")]\n        )\n      ]),\n      _vm._v(\" \"),\n      _c(\n        \"div\",\n        { class: _vm.isRtl ? \"flex-rtl\" : \"\" },\n        [\n          _vm._l(_vm.daysOfWeek, function(d) {\n            return _c(\n              \"span\",\n              { key: d.timestamp, staticClass: \"cell day-header\" },\n              [_vm._v(_vm._s(d))]\n            )\n          }),\n          _vm._v(\" \"),\n          _vm.blankDays > 0\n            ? _vm._l(_vm.blankDays, function(d) {\n                return _c(\"span\", {\n                  key: d.timestamp,\n                  staticClass: \"cell day blank\"\n                })\n              })\n            : _vm._e(),\n          _vm._l(_vm.days, function(day) {\n            return _c(\"span\", {\n              key: day.timestamp,\n              staticClass: \"cell day\",\n              class: _vm.dayClasses(day),\n              domProps: { innerHTML: _vm._s(_vm.dayCellContent(day)) },\n              on: {\n                click: function($event) {\n                  return _vm.selectDate(day)\n                }\n              }\n            })\n          })\n        ],\n        2\n      )\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n  /* style */\n  const __vue_inject_styles__$1 = undefined;\n  /* scoped */\n  const __vue_scope_id__$1 = undefined;\n  /* module identifier */\n  const __vue_module_identifier__$1 = undefined;\n  /* functional template */\n  const __vue_is_functional_template__$1 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n\n  \n  var PickerDay = normalizeComponent_1(\n    { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\n    __vue_inject_styles__$1,\n    __vue_script__$1,\n    __vue_scope_id__$1,\n    __vue_is_functional_template__$1,\n    __vue_module_identifier__$1,\n    undefined,\n    undefined\n  );\n\n//\nvar script$2 = {\n  props: {\n    showMonthView: Boolean,\n    selectedDate: Date,\n    pageDate: Date,\n    pageTimestamp: Number,\n    disabledDates: Object,\n    calendarClass: [String, Object, Array],\n    calendarStyle: Object,\n    translation: Object,\n    isRtl: Boolean,\n    allowedToShowView: Function,\n    useUtc: Boolean\n  },\n  data: function data() {\n    var constructedDateUtils = makeDateUtils(this.useUtc);\n    return {\n      utils: constructedDateUtils\n    };\n  },\n  computed: {\n    months: function months() {\n      var d = this.pageDate;\n      var months = []; // set up a new date object to the beginning of the current 'page'\n\n      var dObj = this.useUtc ? new Date(Date.UTC(d.getUTCFullYear(), 0, d.getUTCDate())) : new Date(d.getFullYear(), 0, d.getDate(), d.getHours(), d.getMinutes());\n\n      for (var i = 0; i < 12; i++) {\n        months.push({\n          month: this.utils.getMonthName(i, this.translation.months),\n          timestamp: dObj.getTime(),\n          isSelected: this.isSelectedMonth(dObj),\n          isDisabled: this.isDisabledMonth(dObj)\n        });\n        this.utils.setMonth(dObj, this.utils.getMonth(dObj) + 1);\n      }\n\n      return months;\n    },\n\n    /**\n     * Get year name on current page.\n     * @return {String}\n     */\n    pageYearName: function pageYearName() {\n      var yearSuffix = this.translation.yearSuffix;\n      return \"\".concat(this.utils.getFullYear(this.pageDate)).concat(yearSuffix);\n    },\n\n    /**\n     * Is the left hand navigation disabled\n     * @return {Boolean}\n     */\n    isLeftNavDisabled: function isLeftNavDisabled() {\n      return this.isRtl ? this.isNextYearDisabled(this.pageTimestamp) : this.isPreviousYearDisabled(this.pageTimestamp);\n    },\n\n    /**\n     * Is the right hand navigation disabled\n     * @return {Boolean}\n     */\n    isRightNavDisabled: function isRightNavDisabled() {\n      return this.isRtl ? this.isPreviousYearDisabled(this.pageTimestamp) : this.isNextYearDisabled(this.pageTimestamp);\n    }\n  },\n  methods: {\n    /**\n     * Emits a selectMonth event\n     * @param {Object} month\n     */\n    selectMonth: function selectMonth(month) {\n      if (month.isDisabled) {\n        return false;\n      }\n\n      this.$emit('selectMonth', month);\n    },\n\n    /**\n     * Changes the year up or down\n     * @param {Number} incrementBy\n     */\n    changeYear: function changeYear(incrementBy) {\n      var date = this.pageDate;\n      this.utils.setFullYear(date, this.utils.getFullYear(date) + incrementBy);\n      this.$emit('changedYear', date);\n    },\n\n    /**\n     * Decrements the year\n     */\n    previousYear: function previousYear() {\n      if (!this.isPreviousYearDisabled()) {\n        this.changeYear(-1);\n      }\n    },\n\n    /**\n     * Checks if the previous year is disabled or not\n     * @return {Boolean}\n     */\n    isPreviousYearDisabled: function isPreviousYearDisabled() {\n      if (!this.disabledDates || !this.disabledDates.to) {\n        return false;\n      }\n\n      return this.utils.getFullYear(this.disabledDates.to) >= this.utils.getFullYear(this.pageDate);\n    },\n\n    /**\n     * Increments the year\n     */\n    nextYear: function nextYear() {\n      if (!this.isNextYearDisabled()) {\n        this.changeYear(1);\n      }\n    },\n\n    /**\n     * Checks if the next year is disabled or not\n     * @return {Boolean}\n     */\n    isNextYearDisabled: function isNextYearDisabled() {\n      if (!this.disabledDates || !this.disabledDates.from) {\n        return false;\n      }\n\n      return this.utils.getFullYear(this.disabledDates.from) <= this.utils.getFullYear(this.pageDate);\n    },\n\n    /**\n     * Emits an event that shows the year calendar\n     */\n    showYearCalendar: function showYearCalendar() {\n      this.$emit('showYearCalendar');\n    },\n\n    /**\n     * Whether the selected date is in this month\n     * @param {Date}\n     * @return {Boolean}\n     */\n    isSelectedMonth: function isSelectedMonth(date) {\n      return this.selectedDate && this.utils.getFullYear(this.selectedDate) === this.utils.getFullYear(date) && this.utils.getMonth(this.selectedDate) === this.utils.getMonth(date);\n    },\n\n    /**\n     * Whether a month is disabled\n     * @param {Date}\n     * @return {Boolean}\n     */\n    isDisabledMonth: function isDisabledMonth(date) {\n      var disabledDates = false;\n\n      if (typeof this.disabledDates === 'undefined') {\n        return false;\n      }\n\n      if (typeof this.disabledDates.to !== 'undefined' && this.disabledDates.to) {\n        if (this.utils.getMonth(date) < this.utils.getMonth(this.disabledDates.to) && this.utils.getFullYear(date) <= this.utils.getFullYear(this.disabledDates.to) || this.utils.getFullYear(date) < this.utils.getFullYear(this.disabledDates.to)) {\n          disabledDates = true;\n        }\n      }\n\n      if (typeof this.disabledDates.from !== 'undefined' && this.disabledDates.from) {\n        if (this.utils.getMonth(date) > this.utils.getMonth(this.disabledDates.from) && this.utils.getFullYear(date) >= this.utils.getFullYear(this.disabledDates.from) || this.utils.getFullYear(date) > this.utils.getFullYear(this.disabledDates.from)) {\n          disabledDates = true;\n        }\n      }\n\n      if (typeof this.disabledDates.customPredictor === 'function' && this.disabledDates.customPredictor(date)) {\n        disabledDates = true;\n      }\n\n      return disabledDates;\n    }\n  } // eslint-disable-next-line\n\n};\n\n/* script */\nconst __vue_script__$2 = script$2;\n\n/* template */\nvar __vue_render__$2 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      directives: [\n        {\n          name: \"show\",\n          rawName: \"v-show\",\n          value: _vm.showMonthView,\n          expression: \"showMonthView\"\n        }\n      ],\n      class: [_vm.calendarClass, \"vdp-datepicker__calendar\"],\n      style: _vm.calendarStyle,\n      on: {\n        mousedown: function($event) {\n          $event.preventDefault();\n        }\n      }\n    },\n    [\n      _vm._t(\"beforeCalendarHeader\"),\n      _vm._v(\" \"),\n      _c(\"header\", [\n        _c(\n          \"span\",\n          {\n            staticClass: \"prev\",\n            class: { disabled: _vm.isLeftNavDisabled },\n            on: {\n              click: function($event) {\n                _vm.isRtl ? _vm.nextYear() : _vm.previousYear();\n              }\n            }\n          },\n          [_vm._v(\"<\")]\n        ),\n        _vm._v(\" \"),\n        _c(\n          \"span\",\n          {\n            staticClass: \"month__year_btn\",\n            class: _vm.allowedToShowView(\"year\") ? \"up\" : \"\",\n            on: { click: _vm.showYearCalendar }\n          },\n          [_vm._v(_vm._s(_vm.pageYearName))]\n        ),\n        _vm._v(\" \"),\n        _c(\n          \"span\",\n          {\n            staticClass: \"next\",\n            class: { disabled: _vm.isRightNavDisabled },\n            on: {\n              click: function($event) {\n                _vm.isRtl ? _vm.previousYear() : _vm.nextYear();\n              }\n            }\n          },\n          [_vm._v(\">\")]\n        )\n      ]),\n      _vm._v(\" \"),\n      _vm._l(_vm.months, function(month) {\n        return _c(\n          \"span\",\n          {\n            key: month.timestamp,\n            staticClass: \"cell month\",\n            class: { selected: month.isSelected, disabled: month.isDisabled },\n            on: {\n              click: function($event) {\n                $event.stopPropagation();\n                return _vm.selectMonth(month)\n              }\n            }\n          },\n          [_vm._v(_vm._s(month.month))]\n        )\n      })\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$2 = [];\n__vue_render__$2._withStripped = true;\n\n  /* style */\n  const __vue_inject_styles__$2 = undefined;\n  /* scoped */\n  const __vue_scope_id__$2 = undefined;\n  /* module identifier */\n  const __vue_module_identifier__$2 = undefined;\n  /* functional template */\n  const __vue_is_functional_template__$2 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n\n  \n  var PickerMonth = normalizeComponent_1(\n    { render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 },\n    __vue_inject_styles__$2,\n    __vue_script__$2,\n    __vue_scope_id__$2,\n    __vue_is_functional_template__$2,\n    __vue_module_identifier__$2,\n    undefined,\n    undefined\n  );\n\n//\nvar script$3 = {\n  props: {\n    showYearView: Boolean,\n    selectedDate: Date,\n    pageDate: Date,\n    pageTimestamp: Number,\n    disabledDates: Object,\n    highlighted: Object,\n    calendarClass: [String, Object, Array],\n    calendarStyle: Object,\n    translation: Object,\n    isRtl: Boolean,\n    allowedToShowView: Function,\n    useUtc: Boolean\n  },\n  computed: {\n    years: function years() {\n      var d = this.pageDate;\n      var years = []; // set up a new date object to the beginning of the current 'page'7\n\n      var dObj = this.useUtc ? new Date(Date.UTC(Math.floor(d.getUTCFullYear() / 10) * 10, d.getUTCMonth(), d.getUTCDate())) : new Date(Math.floor(d.getFullYear() / 10) * 10, d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n\n      for (var i = 0; i < 10; i++) {\n        years.push({\n          year: this.utils.getFullYear(dObj),\n          timestamp: dObj.getTime(),\n          isSelected: this.isSelectedYear(dObj),\n          isDisabled: this.isDisabledYear(dObj)\n        });\n        this.utils.setFullYear(dObj, this.utils.getFullYear(dObj) + 1);\n      }\n\n      return years;\n    },\n\n    /**\n     * @return {String}\n     */\n    getPageDecade: function getPageDecade() {\n      var decadeStart = Math.floor(this.utils.getFullYear(this.pageDate) / 10) * 10;\n      var decadeEnd = decadeStart + 9;\n      var yearSuffix = this.translation.yearSuffix;\n      return \"\".concat(decadeStart, \" - \").concat(decadeEnd).concat(yearSuffix);\n    },\n\n    /**\n     * Is the left hand navigation button disabled?\n     * @return {Boolean}\n     */\n    isLeftNavDisabled: function isLeftNavDisabled() {\n      return this.isRtl ? this.isNextDecadeDisabled(this.pageTimestamp) : this.isPreviousDecadeDisabled(this.pageTimestamp);\n    },\n\n    /**\n     * Is the right hand navigation button disabled?\n     * @return {Boolean}\n     */\n    isRightNavDisabled: function isRightNavDisabled() {\n      return this.isRtl ? this.isPreviousDecadeDisabled(this.pageTimestamp) : this.isNextDecadeDisabled(this.pageTimestamp);\n    }\n  },\n  data: function data() {\n    var constructedDateUtils = makeDateUtils(this.useUtc);\n    return {\n      utils: constructedDateUtils\n    };\n  },\n  methods: {\n    selectYear: function selectYear(year) {\n      if (year.isDisabled) {\n        return false;\n      }\n\n      this.$emit('selectYear', year);\n    },\n    changeYear: function changeYear(incrementBy) {\n      var date = this.pageDate;\n      this.utils.setFullYear(date, this.utils.getFullYear(date) + incrementBy);\n      this.$emit('changedDecade', date);\n    },\n    previousDecade: function previousDecade() {\n      if (this.isPreviousDecadeDisabled()) {\n        return false;\n      }\n\n      this.changeYear(-10);\n    },\n    isPreviousDecadeDisabled: function isPreviousDecadeDisabled() {\n      if (!this.disabledDates || !this.disabledDates.to) {\n        return false;\n      }\n\n      var disabledYear = this.utils.getFullYear(this.disabledDates.to);\n      var lastYearInPreviousPage = Math.floor(this.utils.getFullYear(this.pageDate) / 10) * 10 - 1;\n      return disabledYear > lastYearInPreviousPage;\n    },\n    nextDecade: function nextDecade() {\n      if (this.isNextDecadeDisabled()) {\n        return false;\n      }\n\n      this.changeYear(10);\n    },\n    isNextDecadeDisabled: function isNextDecadeDisabled() {\n      if (!this.disabledDates || !this.disabledDates.from) {\n        return false;\n      }\n\n      var disabledYear = this.utils.getFullYear(this.disabledDates.from);\n      var firstYearInNextPage = Math.ceil(this.utils.getFullYear(this.pageDate) / 10) * 10;\n      return disabledYear < firstYearInNextPage;\n    },\n\n    /**\n     * Whether the selected date is in this year\n     * @param {Date}\n     * @return {Boolean}\n     */\n    isSelectedYear: function isSelectedYear(date) {\n      return this.selectedDate && this.utils.getFullYear(this.selectedDate) === this.utils.getFullYear(date);\n    },\n\n    /**\n     * Whether a year is disabled\n     * @param {Date}\n     * @return {Boolean}\n     */\n    isDisabledYear: function isDisabledYear(date) {\n      var disabledDates = false;\n\n      if (typeof this.disabledDates === 'undefined' || !this.disabledDates) {\n        return false;\n      }\n\n      if (typeof this.disabledDates.to !== 'undefined' && this.disabledDates.to) {\n        if (this.utils.getFullYear(date) < this.utils.getFullYear(this.disabledDates.to)) {\n          disabledDates = true;\n        }\n      }\n\n      if (typeof this.disabledDates.from !== 'undefined' && this.disabledDates.from) {\n        if (this.utils.getFullYear(date) > this.utils.getFullYear(this.disabledDates.from)) {\n          disabledDates = true;\n        }\n      }\n\n      if (typeof this.disabledDates.customPredictor === 'function' && this.disabledDates.customPredictor(date)) {\n        disabledDates = true;\n      }\n\n      return disabledDates;\n    }\n  } // eslint-disable-next-line\n\n};\n\n/* script */\nconst __vue_script__$3 = script$3;\n\n/* template */\nvar __vue_render__$3 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      directives: [\n        {\n          name: \"show\",\n          rawName: \"v-show\",\n          value: _vm.showYearView,\n          expression: \"showYearView\"\n        }\n      ],\n      class: [_vm.calendarClass, \"vdp-datepicker__calendar\"],\n      style: _vm.calendarStyle,\n      on: {\n        mousedown: function($event) {\n          $event.preventDefault();\n        }\n      }\n    },\n    [\n      _vm._t(\"beforeCalendarHeader\"),\n      _vm._v(\" \"),\n      _c(\"header\", [\n        _c(\n          \"span\",\n          {\n            staticClass: \"prev\",\n            class: { disabled: _vm.isLeftNavDisabled },\n            on: {\n              click: function($event) {\n                _vm.isRtl ? _vm.nextDecade() : _vm.previousDecade();\n              }\n            }\n          },\n          [_vm._v(\"<\")]\n        ),\n        _vm._v(\" \"),\n        _c(\"span\", [_vm._v(_vm._s(_vm.getPageDecade))]),\n        _vm._v(\" \"),\n        _c(\n          \"span\",\n          {\n            staticClass: \"next\",\n            class: { disabled: _vm.isRightNavDisabled },\n            on: {\n              click: function($event) {\n                _vm.isRtl ? _vm.previousDecade() : _vm.nextDecade();\n              }\n            }\n          },\n          [_vm._v(\">\")]\n        )\n      ]),\n      _vm._v(\" \"),\n      _vm._l(_vm.years, function(year) {\n        return _c(\n          \"span\",\n          {\n            key: year.timestamp,\n            staticClass: \"cell year\",\n            class: { selected: year.isSelected, disabled: year.isDisabled },\n            on: {\n              click: function($event) {\n                $event.stopPropagation();\n                return _vm.selectYear(year)\n              }\n            }\n          },\n          [_vm._v(_vm._s(year.year))]\n        )\n      })\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$3 = [];\n__vue_render__$3._withStripped = true;\n\n  /* style */\n  const __vue_inject_styles__$3 = undefined;\n  /* scoped */\n  const __vue_scope_id__$3 = undefined;\n  /* module identifier */\n  const __vue_module_identifier__$3 = undefined;\n  /* functional template */\n  const __vue_is_functional_template__$3 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n\n  \n  var PickerYear = normalizeComponent_1(\n    { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 },\n    __vue_inject_styles__$3,\n    __vue_script__$3,\n    __vue_scope_id__$3,\n    __vue_is_functional_template__$3,\n    __vue_module_identifier__$3,\n    undefined,\n    undefined\n  );\n\n//\nvar script$4 = {\n  components: {\n    DateInput: DateInput,\n    PickerDay: PickerDay,\n    PickerMonth: PickerMonth,\n    PickerYear: PickerYear\n  },\n  props: {\n    value: {\n      validator: function validator(val) {\n        return utils$1.validateDateInput(val);\n      }\n    },\n    name: String,\n    refName: String,\n    id: String,\n    format: {\n      type: [String, Function],\n      \"default\": 'dd MMM yyyy'\n    },\n    language: {\n      type: Object,\n      \"default\": function _default() {\n        return en;\n      }\n    },\n    openDate: {\n      validator: function validator(val) {\n        return utils$1.validateDateInput(val);\n      }\n    },\n    dayCellContent: Function,\n    fullMonthName: Boolean,\n    disabledDates: Object,\n    highlighted: Object,\n    placeholder: String,\n    inline: Boolean,\n    calendarClass: [String, Object, Array],\n    inputClass: [String, Object, Array],\n    wrapperClass: [String, Object, Array],\n    mondayFirst: Boolean,\n    clearButton: Boolean,\n    clearButtonIcon: String,\n    calendarButton: Boolean,\n    calendarButtonIcon: String,\n    calendarButtonIconContent: String,\n    bootstrapStyling: Boolean,\n    initialView: String,\n    disabled: Boolean,\n    required: Boolean,\n    typeable: Boolean,\n    useUtc: Boolean,\n    minimumView: {\n      type: String,\n      \"default\": 'day'\n    },\n    maximumView: {\n      type: String,\n      \"default\": 'year'\n    }\n  },\n  data: function data() {\n    var startDate = this.openDate ? new Date(this.openDate) : new Date();\n    var constructedDateUtils = makeDateUtils(this.useUtc);\n    var pageTimestamp = constructedDateUtils.setDate(startDate, 1);\n    return {\n      /*\n       * Vue cannot observe changes to a Date Object so date must be stored as a timestamp\n       * This represents the first day of the current viewing month\n       * {Number}\n       */\n      pageTimestamp: pageTimestamp,\n\n      /*\n       * Selected Date\n       * {Date}\n       */\n      selectedDate: null,\n\n      /*\n       * Flags to show calendar views\n       * {Boolean}\n       */\n      showDayView: false,\n      showMonthView: false,\n      showYearView: false,\n\n      /*\n       * Positioning\n       */\n      calendarHeight: 0,\n      resetTypedDate: new Date(),\n      utils: constructedDateUtils\n    };\n  },\n  watch: {\n    value: function value(_value) {\n      this.setValue(_value);\n    },\n    openDate: function openDate() {\n      this.setPageDate();\n    },\n    initialView: function initialView() {\n      this.setInitialView();\n    }\n  },\n  computed: {\n    computedInitialView: function computedInitialView() {\n      if (!this.initialView) {\n        return this.minimumView;\n      }\n\n      return this.initialView;\n    },\n    pageDate: function pageDate() {\n      return new Date(this.pageTimestamp);\n    },\n    translation: function translation() {\n      return this.language;\n    },\n    calendarStyle: function calendarStyle() {\n      return {\n        position: this.isInline ? 'static' : undefined\n      };\n    },\n    isOpen: function isOpen() {\n      return this.showDayView || this.showMonthView || this.showYearView;\n    },\n    isInline: function isInline() {\n      return !!this.inline;\n    },\n    isRtl: function isRtl() {\n      return this.translation.rtl === true;\n    }\n  },\n  methods: {\n    /**\n     * Called in the event that the user navigates to date pages and\n     * closes the picker without selecting a date.\n     */\n    resetDefaultPageDate: function resetDefaultPageDate() {\n      if (this.selectedDate === null) {\n        this.setPageDate();\n        return;\n      }\n\n      this.setPageDate(this.selectedDate);\n    },\n\n    /**\n     * Effectively a toggle to show/hide the calendar\n     * @return {mixed}\n     */\n    showCalendar: function showCalendar() {\n      if (this.disabled || this.isInline) {\n        return false;\n      }\n\n      if (this.isOpen) {\n        return this.close(true);\n      }\n\n      this.setInitialView();\n    },\n\n    /**\n     * Sets the initial picker page view: day, month or year\n     */\n    setInitialView: function setInitialView() {\n      var initialView = this.computedInitialView;\n\n      if (!this.allowedToShowView(initialView)) {\n        throw new Error(\"initialView '\".concat(this.initialView, \"' cannot be rendered based on minimum '\").concat(this.minimumView, \"' and maximum '\").concat(this.maximumView, \"'\"));\n      }\n\n      switch (initialView) {\n        case 'year':\n          this.showYearCalendar();\n          break;\n\n        case 'month':\n          this.showMonthCalendar();\n          break;\n\n        default:\n          this.showDayCalendar();\n          break;\n      }\n    },\n\n    /**\n     * Are we allowed to show a specific picker view?\n     * @param {String} view\n     * @return {Boolean}\n     */\n    allowedToShowView: function allowedToShowView(view) {\n      var views = ['day', 'month', 'year'];\n      var minimumViewIndex = views.indexOf(this.minimumView);\n      var maximumViewIndex = views.indexOf(this.maximumView);\n      var viewIndex = views.indexOf(view);\n      return viewIndex >= minimumViewIndex && viewIndex <= maximumViewIndex;\n    },\n\n    /**\n     * Show the day picker\n     * @return {Boolean}\n     */\n    showDayCalendar: function showDayCalendar() {\n      if (!this.allowedToShowView('day')) {\n        return false;\n      }\n\n      this.close();\n      this.showDayView = true;\n      return true;\n    },\n\n    /**\n     * Show the month picker\n     * @return {Boolean}\n     */\n    showMonthCalendar: function showMonthCalendar() {\n      if (!this.allowedToShowView('month')) {\n        return false;\n      }\n\n      this.close();\n      this.showMonthView = true;\n      return true;\n    },\n\n    /**\n     * Show the year picker\n     * @return {Boolean}\n     */\n    showYearCalendar: function showYearCalendar() {\n      if (!this.allowedToShowView('year')) {\n        return false;\n      }\n\n      this.close();\n      this.showYearView = true;\n      return true;\n    },\n\n    /**\n     * Set the selected date\n     * @param {Number} timestamp\n     */\n    setDate: function setDate(timestamp) {\n      var date = new Date(timestamp);\n      this.selectedDate = date;\n      this.setPageDate(date);\n      this.$emit('selected', date);\n      this.$emit('input', date);\n    },\n\n    /**\n     * Clear the selected date\n     */\n    clearDate: function clearDate() {\n      this.selectedDate = null;\n      this.setPageDate();\n      this.$emit('selected', null);\n      this.$emit('input', null);\n      this.$emit('cleared');\n    },\n\n    /**\n     * @param {Object} date\n     */\n    selectDate: function selectDate(date) {\n      this.setDate(date.timestamp);\n\n      if (!this.isInline) {\n        this.close(true);\n      }\n\n      this.resetTypedDate = new Date();\n    },\n\n    /**\n     * @param {Object} date\n     */\n    selectDisabledDate: function selectDisabledDate(date) {\n      this.$emit('selectedDisabled', date);\n    },\n\n    /**\n     * @param {Object} month\n     */\n    selectMonth: function selectMonth(month) {\n      var date = new Date(month.timestamp);\n\n      if (this.allowedToShowView('day')) {\n        this.setPageDate(date);\n        this.$emit('changedMonth', month);\n        this.showDayCalendar();\n      } else {\n        this.selectDate(month);\n      }\n    },\n\n    /**\n     * @param {Object} year\n     */\n    selectYear: function selectYear(year) {\n      var date = new Date(year.timestamp);\n\n      if (this.allowedToShowView('month')) {\n        this.setPageDate(date);\n        this.$emit('changedYear', year);\n        this.showMonthCalendar();\n      } else {\n        this.selectDate(year);\n      }\n    },\n\n    /**\n     * Set the datepicker value\n     * @param {Date|String|Number|null} date\n     */\n    setValue: function setValue(date) {\n      if (typeof date === 'string' || typeof date === 'number') {\n        var parsed = new Date(date);\n        date = isNaN(parsed.valueOf()) ? null : parsed;\n      }\n\n      if (!date) {\n        this.setPageDate();\n        this.selectedDate = null;\n        return;\n      }\n\n      this.selectedDate = date;\n      this.setPageDate(date);\n    },\n\n    /**\n     * Sets the date that the calendar should open on\n     */\n    setPageDate: function setPageDate(date) {\n      if (!date) {\n        if (this.openDate) {\n          date = new Date(this.openDate);\n        } else {\n          date = new Date();\n        }\n      }\n\n      this.pageTimestamp = this.utils.setDate(new Date(date), 1);\n    },\n\n    /**\n     * Handles a month change from the day picker\n     */\n    handleChangedMonthFromDayPicker: function handleChangedMonthFromDayPicker(date) {\n      this.setPageDate(date);\n      this.$emit('changedMonth', date);\n    },\n\n    /**\n     * Set the date from a typedDate event\n     */\n    setTypedDate: function setTypedDate(date) {\n      this.setDate(date.getTime());\n    },\n\n    /**\n     * Close all calendar layers\n     * @param {Boolean} emitEvent - emit close event\n     */\n    close: function close(emitEvent) {\n      this.showDayView = this.showMonthView = this.showYearView = false;\n\n      if (!this.isInline) {\n        if (emitEvent) {\n          this.$emit('closed');\n        }\n\n        document.removeEventListener('click', this.clickOutside, false);\n      }\n    },\n\n    /**\n     * Initiate the component\n     */\n    init: function init() {\n      if (this.value) {\n        this.setValue(this.value);\n      }\n\n      if (this.isInline) {\n        this.setInitialView();\n      }\n    }\n  },\n  mounted: function mounted() {\n    this.init();\n  }\n} // eslint-disable-next-line\n;\n\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\nfunction createInjector(context) {\n  return function (id, style) {\n    return addStyle(id, style);\n  };\n}\nvar HEAD = document.head || document.getElementsByTagName('head')[0];\nvar styles = {};\n\nfunction addStyle(id, css) {\n  var group = isOldIE ? css.media || 'default' : id;\n  var style = styles[group] || (styles[group] = {\n    ids: new Set(),\n    styles: []\n  });\n\n  if (!style.ids.has(id)) {\n    style.ids.add(id);\n    var code = css.source;\n\n    if (css.map) {\n      // https://developer.chrome.com/devtools/docs/javascript-debugging\n      // this makes source maps inside style tags work properly in Chrome\n      code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */'; // http://stackoverflow.com/a/26603875\n\n      code += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';\n    }\n\n    if (!style.element) {\n      style.element = document.createElement('style');\n      style.element.type = 'text/css';\n      if (css.media) style.element.setAttribute('media', css.media);\n      HEAD.appendChild(style.element);\n    }\n\n    if ('styleSheet' in style.element) {\n      style.styles.push(code);\n      style.element.styleSheet.cssText = style.styles.filter(Boolean).join('\\n');\n    } else {\n      var index = style.ids.size - 1;\n      var textNode = document.createTextNode(code);\n      var nodes = style.element.childNodes;\n      if (nodes[index]) style.element.removeChild(nodes[index]);\n      if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n    }\n  }\n}\n\nvar browser = createInjector;\n\n/* script */\nconst __vue_script__$4 = script$4;\n\n/* template */\nvar __vue_render__$4 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      staticClass: \"vdp-datepicker\",\n      class: [_vm.wrapperClass, _vm.isRtl ? \"rtl\" : \"\"]\n    },\n    [\n      _c(\n        \"date-input\",\n        {\n          attrs: {\n            selectedDate: _vm.selectedDate,\n            resetTypedDate: _vm.resetTypedDate,\n            format: _vm.format,\n            translation: _vm.translation,\n            inline: _vm.inline,\n            id: _vm.id,\n            name: _vm.name,\n            refName: _vm.refName,\n            openDate: _vm.openDate,\n            placeholder: _vm.placeholder,\n            inputClass: _vm.inputClass,\n            typeable: _vm.typeable,\n            clearButton: _vm.clearButton,\n            clearButtonIcon: _vm.clearButtonIcon,\n            calendarButton: _vm.calendarButton,\n            calendarButtonIcon: _vm.calendarButtonIcon,\n            calendarButtonIconContent: _vm.calendarButtonIconContent,\n            disabled: _vm.disabled,\n            required: _vm.required,\n            bootstrapStyling: _vm.bootstrapStyling,\n            \"use-utc\": _vm.useUtc\n          },\n          on: {\n            showCalendar: _vm.showCalendar,\n            closeCalendar: _vm.close,\n            typedDate: _vm.setTypedDate,\n            clearDate: _vm.clearDate\n          }\n        },\n        [_vm._t(\"afterDateInput\", null, { slot: \"afterDateInput\" })],\n        2\n      ),\n      _vm._v(\" \"),\n      _vm.allowedToShowView(\"day\")\n        ? _c(\n            \"picker-day\",\n            {\n              attrs: {\n                pageDate: _vm.pageDate,\n                selectedDate: _vm.selectedDate,\n                showDayView: _vm.showDayView,\n                fullMonthName: _vm.fullMonthName,\n                allowedToShowView: _vm.allowedToShowView,\n                disabledDates: _vm.disabledDates,\n                highlighted: _vm.highlighted,\n                calendarClass: _vm.calendarClass,\n                calendarStyle: _vm.calendarStyle,\n                translation: _vm.translation,\n                pageTimestamp: _vm.pageTimestamp,\n                isRtl: _vm.isRtl,\n                mondayFirst: _vm.mondayFirst,\n                dayCellContent: _vm.dayCellContent,\n                \"use-utc\": _vm.useUtc\n              },\n              on: {\n                changedMonth: _vm.handleChangedMonthFromDayPicker,\n                selectDate: _vm.selectDate,\n                showMonthCalendar: _vm.showMonthCalendar,\n                selectedDisabled: _vm.selectDisabledDate\n              }\n            },\n            [\n              _vm._t(\"beforeCalendarHeader\", null, {\n                slot: \"beforeCalendarHeader\"\n              })\n            ],\n            2\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.allowedToShowView(\"month\")\n        ? _c(\n            \"picker-month\",\n            {\n              attrs: {\n                pageDate: _vm.pageDate,\n                selectedDate: _vm.selectedDate,\n                showMonthView: _vm.showMonthView,\n                allowedToShowView: _vm.allowedToShowView,\n                disabledDates: _vm.disabledDates,\n                calendarClass: _vm.calendarClass,\n                calendarStyle: _vm.calendarStyle,\n                translation: _vm.translation,\n                isRtl: _vm.isRtl,\n                \"use-utc\": _vm.useUtc\n              },\n              on: {\n                selectMonth: _vm.selectMonth,\n                showYearCalendar: _vm.showYearCalendar,\n                changedYear: _vm.setPageDate\n              }\n            },\n            [\n              _vm._t(\"beforeCalendarHeader\", null, {\n                slot: \"beforeCalendarHeader\"\n              })\n            ],\n            2\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.allowedToShowView(\"year\")\n        ? _c(\n            \"picker-year\",\n            {\n              attrs: {\n                pageDate: _vm.pageDate,\n                selectedDate: _vm.selectedDate,\n                showYearView: _vm.showYearView,\n                allowedToShowView: _vm.allowedToShowView,\n                disabledDates: _vm.disabledDates,\n                calendarClass: _vm.calendarClass,\n                calendarStyle: _vm.calendarStyle,\n                translation: _vm.translation,\n                isRtl: _vm.isRtl,\n                \"use-utc\": _vm.useUtc\n              },\n              on: { selectYear: _vm.selectYear, changedDecade: _vm.setPageDate }\n            },\n            [\n              _vm._t(\"beforeCalendarHeader\", null, {\n                slot: \"beforeCalendarHeader\"\n              })\n            ],\n            2\n          )\n        : _vm._e()\n    ],\n    1\n  )\n};\nvar __vue_staticRenderFns__$4 = [];\n__vue_render__$4._withStripped = true;\n\n  /* style */\n  const __vue_inject_styles__$4 = function (inject) {\n    if (!inject) return\n    inject(\"data-v-64ca2bb5_0\", { source: \".rtl {\\n  direction: rtl;\\n}\\n.vdp-datepicker {\\n  position: relative;\\n  text-align: left;\\n}\\n.vdp-datepicker * {\\n  box-sizing: border-box;\\n}\\n.vdp-datepicker__calendar {\\n  position: absolute;\\n  z-index: 100;\\n  background: #fff;\\n  width: 300px;\\n  border: 1px solid #ccc;\\n}\\n.vdp-datepicker__calendar header {\\n  display: block;\\n  line-height: 40px;\\n}\\n.vdp-datepicker__calendar header span {\\n  display: inline-block;\\n  text-align: center;\\n  width: 71.42857142857143%;\\n  float: left;\\n}\\n.vdp-datepicker__calendar header .prev,\\n.vdp-datepicker__calendar header .next {\\n  width: 14.285714285714286%;\\n  float: left;\\n  text-indent: -10000px;\\n  position: relative;\\n}\\n.vdp-datepicker__calendar header .prev:after,\\n.vdp-datepicker__calendar header .next:after {\\n  content: '';\\n  position: absolute;\\n  left: 50%;\\n  top: 50%;\\n  transform: translateX(-50%) translateY(-50%);\\n  border: 6px solid transparent;\\n}\\n.vdp-datepicker__calendar header .prev:after {\\n  border-right: 10px solid #000;\\n  margin-left: -5px;\\n}\\n.vdp-datepicker__calendar header .prev.disabled:after {\\n  border-right: 10px solid #ddd;\\n}\\n.vdp-datepicker__calendar header .next:after {\\n  border-left: 10px solid #000;\\n  margin-left: 5px;\\n}\\n.vdp-datepicker__calendar header .next.disabled:after {\\n  border-left: 10px solid #ddd;\\n}\\n.vdp-datepicker__calendar header .prev:not(.disabled),\\n.vdp-datepicker__calendar header .next:not(.disabled),\\n.vdp-datepicker__calendar header .up:not(.disabled) {\\n  cursor: pointer;\\n}\\n.vdp-datepicker__calendar header .prev:not(.disabled):hover,\\n.vdp-datepicker__calendar header .next:not(.disabled):hover,\\n.vdp-datepicker__calendar header .up:not(.disabled):hover {\\n  background: #eee;\\n}\\n.vdp-datepicker__calendar .disabled {\\n  color: #ddd;\\n  cursor: default;\\n}\\n.vdp-datepicker__calendar .flex-rtl {\\n  display: flex;\\n  width: inherit;\\n  flex-wrap: wrap;\\n}\\n.vdp-datepicker__calendar .cell {\\n  display: inline-block;\\n  padding: 0 5px;\\n  width: 14.285714285714286%;\\n  height: 40px;\\n  line-height: 40px;\\n  text-align: center;\\n  vertical-align: middle;\\n  border: 1px solid transparent;\\n}\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day,\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month,\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year {\\n  cursor: pointer;\\n}\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day:hover,\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month:hover,\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year:hover {\\n  border: 1px solid #4bd;\\n}\\n.vdp-datepicker__calendar .cell.selected {\\n  background: #4bd;\\n}\\n.vdp-datepicker__calendar .cell.selected:hover {\\n  background: #4bd;\\n}\\n.vdp-datepicker__calendar .cell.selected.highlighted {\\n  background: #4bd;\\n}\\n.vdp-datepicker__calendar .cell.highlighted {\\n  background: #cae5ed;\\n}\\n.vdp-datepicker__calendar .cell.highlighted.disabled {\\n  color: #a3a3a3;\\n}\\n.vdp-datepicker__calendar .cell.grey {\\n  color: #888;\\n}\\n.vdp-datepicker__calendar .cell.grey:hover {\\n  background: inherit;\\n}\\n.vdp-datepicker__calendar .cell.day-header {\\n  font-size: 75%;\\n  white-space: nowrap;\\n  cursor: inherit;\\n}\\n.vdp-datepicker__calendar .cell.day-header:hover {\\n  background: inherit;\\n}\\n.vdp-datepicker__calendar .month,\\n.vdp-datepicker__calendar .year {\\n  width: 33.333%;\\n}\\n.vdp-datepicker__clear-button,\\n.vdp-datepicker__calendar-button {\\n  cursor: pointer;\\n  font-style: normal;\\n}\\n.vdp-datepicker__clear-button.disabled,\\n.vdp-datepicker__calendar-button.disabled {\\n  color: #999;\\n  cursor: default;\\n}\\n\", map: {\"version\":3,\"sources\":[\"Datepicker.vue\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;AAChB;AACA;EACE,kBAAkB;EAClB,gBAAgB;AAClB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,kBAAkB;EAClB,YAAY;EACZ,gBAAgB;EAChB,YAAY;EACZ,sBAAsB;AACxB;AACA;EACE,cAAc;EACd,iBAAiB;AACnB;AACA;EACE,qBAAqB;EACrB,kBAAkB;EAClB,yBAAyB;EACzB,WAAW;AACb;AACA;;EAEE,0BAA0B;EAC1B,WAAW;EACX,qBAAqB;EACrB,kBAAkB;AACpB;AACA;;EAEE,WAAW;EACX,kBAAkB;EAClB,SAAS;EACT,QAAQ;EACR,4CAA4C;EAC5C,6BAA6B;AAC/B;AACA;EACE,6BAA6B;EAC7B,iBAAiB;AACnB;AACA;EACE,6BAA6B;AAC/B;AACA;EACE,4BAA4B;EAC5B,gBAAgB;AAClB;AACA;EACE,4BAA4B;AAC9B;AACA;;;EAGE,eAAe;AACjB;AACA;;;EAGE,gBAAgB;AAClB;AACA;EACE,WAAW;EACX,eAAe;AACjB;AACA;EACE,aAAa;EACb,cAAc;EACd,eAAe;AACjB;AACA;EACE,qBAAqB;EACrB,cAAc;EACd,0BAA0B;EAC1B,YAAY;EACZ,iBAAiB;EACjB,kBAAkB;EAClB,sBAAsB;EACtB,6BAA6B;AAC/B;AACA;;;EAGE,eAAe;AACjB;AACA;;;EAGE,sBAAsB;AACxB;AACA;EACE,gBAAgB;AAClB;AACA;EACE,gBAAgB;AAClB;AACA;EACE,gBAAgB;AAClB;AACA;EACE,mBAAmB;AACrB;AACA;EACE,cAAc;AAChB;AACA;EACE,WAAW;AACb;AACA;EACE,mBAAmB;AACrB;AACA;EACE,cAAc;EACd,mBAAmB;EACnB,eAAe;AACjB;AACA;EACE,mBAAmB;AACrB;AACA;;EAEE,cAAc;AAChB;AACA;;EAEE,eAAe;EACf,kBAAkB;AACpB;AACA;;EAEE,WAAW;EACX,eAAe;AACjB\",\"file\":\"Datepicker.vue\",\"sourcesContent\":[\".rtl {\\n  direction: rtl;\\n}\\n.vdp-datepicker {\\n  position: relative;\\n  text-align: left;\\n}\\n.vdp-datepicker * {\\n  box-sizing: border-box;\\n}\\n.vdp-datepicker__calendar {\\n  position: absolute;\\n  z-index: 100;\\n  background: #fff;\\n  width: 300px;\\n  border: 1px solid #ccc;\\n}\\n.vdp-datepicker__calendar header {\\n  display: block;\\n  line-height: 40px;\\n}\\n.vdp-datepicker__calendar header span {\\n  display: inline-block;\\n  text-align: center;\\n  width: 71.42857142857143%;\\n  float: left;\\n}\\n.vdp-datepicker__calendar header .prev,\\n.vdp-datepicker__calendar header .next {\\n  width: 14.285714285714286%;\\n  float: left;\\n  text-indent: -10000px;\\n  position: relative;\\n}\\n.vdp-datepicker__calendar header .prev:after,\\n.vdp-datepicker__calendar header .next:after {\\n  content: '';\\n  position: absolute;\\n  left: 50%;\\n  top: 50%;\\n  transform: translateX(-50%) translateY(-50%);\\n  border: 6px solid transparent;\\n}\\n.vdp-datepicker__calendar header .prev:after {\\n  border-right: 10px solid #000;\\n  margin-left: -5px;\\n}\\n.vdp-datepicker__calendar header .prev.disabled:after {\\n  border-right: 10px solid #ddd;\\n}\\n.vdp-datepicker__calendar header .next:after {\\n  border-left: 10px solid #000;\\n  margin-left: 5px;\\n}\\n.vdp-datepicker__calendar header .next.disabled:after {\\n  border-left: 10px solid #ddd;\\n}\\n.vdp-datepicker__calendar header .prev:not(.disabled),\\n.vdp-datepicker__calendar header .next:not(.disabled),\\n.vdp-datepicker__calendar header .up:not(.disabled) {\\n  cursor: pointer;\\n}\\n.vdp-datepicker__calendar header .prev:not(.disabled):hover,\\n.vdp-datepicker__calendar header .next:not(.disabled):hover,\\n.vdp-datepicker__calendar header .up:not(.disabled):hover {\\n  background: #eee;\\n}\\n.vdp-datepicker__calendar .disabled {\\n  color: #ddd;\\n  cursor: default;\\n}\\n.vdp-datepicker__calendar .flex-rtl {\\n  display: flex;\\n  width: inherit;\\n  flex-wrap: wrap;\\n}\\n.vdp-datepicker__calendar .cell {\\n  display: inline-block;\\n  padding: 0 5px;\\n  width: 14.285714285714286%;\\n  height: 40px;\\n  line-height: 40px;\\n  text-align: center;\\n  vertical-align: middle;\\n  border: 1px solid transparent;\\n}\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day,\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month,\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year {\\n  cursor: pointer;\\n}\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day:hover,\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month:hover,\\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year:hover {\\n  border: 1px solid #4bd;\\n}\\n.vdp-datepicker__calendar .cell.selected {\\n  background: #4bd;\\n}\\n.vdp-datepicker__calendar .cell.selected:hover {\\n  background: #4bd;\\n}\\n.vdp-datepicker__calendar .cell.selected.highlighted {\\n  background: #4bd;\\n}\\n.vdp-datepicker__calendar .cell.highlighted {\\n  background: #cae5ed;\\n}\\n.vdp-datepicker__calendar .cell.highlighted.disabled {\\n  color: #a3a3a3;\\n}\\n.vdp-datepicker__calendar .cell.grey {\\n  color: #888;\\n}\\n.vdp-datepicker__calendar .cell.grey:hover {\\n  background: inherit;\\n}\\n.vdp-datepicker__calendar .cell.day-header {\\n  font-size: 75%;\\n  white-space: nowrap;\\n  cursor: inherit;\\n}\\n.vdp-datepicker__calendar .cell.day-header:hover {\\n  background: inherit;\\n}\\n.vdp-datepicker__calendar .month,\\n.vdp-datepicker__calendar .year {\\n  width: 33.333%;\\n}\\n.vdp-datepicker__clear-button,\\n.vdp-datepicker__calendar-button {\\n  cursor: pointer;\\n  font-style: normal;\\n}\\n.vdp-datepicker__clear-button.disabled,\\n.vdp-datepicker__calendar-button.disabled {\\n  color: #999;\\n  cursor: default;\\n}\\n\"]}, media: undefined });\n\n  };\n  /* scoped */\n  const __vue_scope_id__$4 = undefined;\n  /* module identifier */\n  const __vue_module_identifier__$4 = undefined;\n  /* functional template */\n  const __vue_is_functional_template__$4 = false;\n  /* style inject SSR */\n  \n\n  \n  var Datepicker = normalizeComponent_1(\n    { render: __vue_render__$4, staticRenderFns: __vue_staticRenderFns__$4 },\n    __vue_inject_styles__$4,\n    __vue_script__$4,\n    __vue_scope_id__$4,\n    __vue_is_functional_template__$4,\n    __vue_module_identifier__$4,\n    browser,\n    undefined\n  );\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Datepicker);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlanMtZGF0ZXBpY2tlci9kaXN0L3Z1ZWpzLWRhdGVwaWNrZXIuZXNtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZWpzLWRhdGVwaWNrZXIvZGlzdC92dWVqcy1kYXRlcGlja2VyLmVzbS5qcz9mYTMzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gIGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iajtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIF90eXBlb2Yob2JqKTtcbn1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcbiAgICB2YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG5cbiAgICBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBzeW0pLmVudW1lcmFibGU7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgb3duS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxudmFyIExhbmd1YWdlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGFuZ3VhZ2UobGFuZ3VhZ2UsIG1vbnRocywgbW9udGhzQWJiciwgZGF5cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMYW5ndWFnZSk7XG5cbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgdGhpcy5tb250aHMgPSBtb250aHM7XG4gICAgdGhpcy5tb250aHNBYmJyID0gbW9udGhzQWJicjtcbiAgICB0aGlzLmRheXMgPSBkYXlzO1xuICAgIHRoaXMucnRsID0gZmFsc2U7XG4gICAgdGhpcy55bWQgPSBmYWxzZTtcbiAgICB0aGlzLnllYXJTdWZmaXggPSAnJztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMYW5ndWFnZSwgW3tcbiAgICBrZXk6IFwibGFuZ3VhZ2VcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZTtcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KGxhbmd1YWdlKSB7XG4gICAgICBpZiAodHlwZW9mIGxhbmd1YWdlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMYW5ndWFnZSBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm1vbnRoc1wiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX21vbnRocztcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KG1vbnRocykge1xuICAgICAgaWYgKG1vbnRocy5sZW5ndGggIT09IDEyKSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVGhlcmUgbXVzdCBiZSAxMiBtb250aHMgZm9yIFwiLmNvbmNhdCh0aGlzLmxhbmd1YWdlLCBcIiBsYW5ndWFnZVwiKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX21vbnRocyA9IG1vbnRocztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibW9udGhzQWJiclwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc0FiYnI7XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHNldChtb250aHNBYmJyKSB7XG4gICAgICBpZiAobW9udGhzQWJici5sZW5ndGggIT09IDEyKSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVGhlcmUgbXVzdCBiZSAxMiBhYmJyZXZpYXRlZCBtb250aHMgZm9yIFwiLmNvbmNhdCh0aGlzLmxhbmd1YWdlLCBcIiBsYW5ndWFnZVwiKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX21vbnRoc0FiYnIgPSBtb250aHNBYmJyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkYXlzXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGF5cztcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KGRheXMpIHtcbiAgICAgIGlmIChkYXlzLmxlbmd0aCAhPT0gNykge1xuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlRoZXJlIG11c3QgYmUgNyBkYXlzIGZvciBcIi5jb25jYXQodGhpcy5sYW5ndWFnZSwgXCIgbGFuZ3VhZ2VcIikpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9kYXlzID0gZGF5cztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGFuZ3VhZ2U7XG59KCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXG52YXIgZW4gPSBuZXcgTGFuZ3VhZ2UoJ0VuZ2xpc2gnLCBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSwgWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLCBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddKSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbjtcblxudmFyIHV0aWxzID0ge1xuICAvKipcbiAgICogQHR5cGUge0Jvb2xlYW59XG4gICAqL1xuICB1c2VVdGM6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmdWxsIHllYXIsIHVzaW5nIFVUQyBvciBub3RcbiAgICogQHBhcmFtIHtEYXRlfSBkYXRlXG4gICAqL1xuICBnZXRGdWxsWWVhcjogZnVuY3Rpb24gZ2V0RnVsbFllYXIoZGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnVzZVV0YyA/IGRhdGUuZ2V0VVRDRnVsbFllYXIoKSA6IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfSxcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbW9udGgsIHVzaW5nIFVUQyBvciBub3RcbiAgICogQHBhcmFtIHtEYXRlfSBkYXRlXG4gICAqL1xuICBnZXRNb250aDogZnVuY3Rpb24gZ2V0TW9udGgoZGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnVzZVV0YyA/IGRhdGUuZ2V0VVRDTW9udGgoKSA6IGRhdGUuZ2V0TW9udGgoKTtcbiAgfSxcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGF0ZSwgdXNpbmcgVVRDIG9yIG5vdFxuICAgKiBAcGFyYW0ge0RhdGV9IGRhdGVcbiAgICovXG4gIGdldERhdGU6IGZ1bmN0aW9uIGdldERhdGUoZGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnVzZVV0YyA/IGRhdGUuZ2V0VVRDRGF0ZSgpIDogZGF0ZS5nZXREYXRlKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRheSwgdXNpbmcgVVRDIG9yIG5vdFxuICAgKiBAcGFyYW0ge0RhdGV9IGRhdGVcbiAgICovXG4gIGdldERheTogZnVuY3Rpb24gZ2V0RGF5KGRhdGUpIHtcbiAgICByZXR1cm4gdGhpcy51c2VVdGMgPyBkYXRlLmdldFVUQ0RheSgpIDogZGF0ZS5nZXREYXkoKTtcbiAgfSxcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaG91cnMsIHVzaW5nIFVUQyBvciBub3RcbiAgICogQHBhcmFtIHtEYXRlfSBkYXRlXG4gICAqL1xuICBnZXRIb3VyczogZnVuY3Rpb24gZ2V0SG91cnMoZGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnVzZVV0YyA/IGRhdGUuZ2V0VVRDSG91cnMoKSA6IGRhdGUuZ2V0SG91cnMoKTtcbiAgfSxcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbWludXRlcywgdXNpbmcgVVRDIG9yIG5vdFxuICAgKiBAcGFyYW0ge0RhdGV9IGRhdGVcbiAgICovXG4gIGdldE1pbnV0ZXM6IGZ1bmN0aW9uIGdldE1pbnV0ZXMoZGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnVzZVV0YyA/IGRhdGUuZ2V0VVRDTWludXRlcygpIDogZGF0ZS5nZXRNaW51dGVzKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZ1bGwgeWVhciwgdXNpbmcgVVRDIG9yIG5vdFxuICAgKiBAcGFyYW0ge0RhdGV9IGRhdGVcbiAgICovXG4gIHNldEZ1bGxZZWFyOiBmdW5jdGlvbiBzZXRGdWxsWWVhcihkYXRlLCB2YWx1ZSwgdXNlVXRjKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlVXRjID8gZGF0ZS5zZXRVVENGdWxsWWVhcih2YWx1ZSkgOiBkYXRlLnNldEZ1bGxZZWFyKHZhbHVlKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyB0aGUgbW9udGgsIHVzaW5nIFVUQyBvciBub3RcbiAgICogQHBhcmFtIHtEYXRlfSBkYXRlXG4gICAqL1xuICBzZXRNb250aDogZnVuY3Rpb24gc2V0TW9udGgoZGF0ZSwgdmFsdWUsIHVzZVV0Yykge1xuICAgIHJldHVybiB0aGlzLnVzZVV0YyA/IGRhdGUuc2V0VVRDTW9udGgodmFsdWUpIDogZGF0ZS5zZXRNb250aCh2YWx1ZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRhdGUsIHVzaW5nIFVUQyBvciBub3RcbiAgICogQHBhcmFtIHtEYXRlfSBkYXRlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZVxuICAgKi9cbiAgc2V0RGF0ZTogZnVuY3Rpb24gc2V0RGF0ZShkYXRlLCB2YWx1ZSwgdXNlVXRjKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlVXRjID8gZGF0ZS5zZXRVVENEYXRlKHZhbHVlKSA6IGRhdGUuc2V0RGF0ZSh2YWx1ZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGRhdGUxIGlzIGVxdWl2YWxlbnQgdG8gZGF0ZTIsIHdpdGhvdXQgY29tcGFyaW5nIHRoZSB0aW1lXG4gICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzYyMDIxOTYvNDQ1NTkyNVxuICAgKiBAcGFyYW0ge0RhdGV9IGRhdGUxXG4gICAqIEBwYXJhbSB7RGF0ZX0gZGF0ZTJcbiAgICovXG4gIGNvbXBhcmVEYXRlczogZnVuY3Rpb24gY29tcGFyZURhdGVzKGRhdGUxLCBkYXRlMikge1xuICAgIHZhciBkMSA9IG5ldyBEYXRlKGRhdGUxLmdldFRpbWUoKSk7XG4gICAgdmFyIGQyID0gbmV3IERhdGUoZGF0ZTIuZ2V0VGltZSgpKTtcblxuICAgIGlmICh0aGlzLnVzZVV0Yykge1xuICAgICAgZDEuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICBkMi5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZDEuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICBkMi5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZDEuZ2V0VGltZSgpID09PSBkMi5nZXRUaW1lKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIGRhdGUgb2JqZWN0XG4gICAqIEBwYXJhbSB7RGF0ZX0gZGF0ZSAtIGFuIG9iamVjdCBpbnN0YW50aWF0ZWQgd2l0aCB0aGUgbmV3IERhdGUgY29uc3RydWN0b3JcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICovXG4gIGlzVmFsaWREYXRlOiBmdW5jdGlvbiBpc1ZhbGlkRGF0ZShkYXRlKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkYXRlKSAhPT0gJ1tvYmplY3QgRGF0ZV0nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICFpc05hTihkYXRlLmdldFRpbWUoKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJldHVybiBhYmJyZXZpYXRlZCB3ZWVrIGRheSBuYW1lXG4gICAqIEBwYXJhbSB7RGF0ZX1cbiAgICogQHBhcmFtIHtBcnJheX1cbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKi9cbiAgZ2V0RGF5TmFtZUFiYnI6IGZ1bmN0aW9uIGdldERheU5hbWVBYmJyKGRhdGUsIGRheXMpIHtcbiAgICBpZiAoX3R5cGVvZihkYXRlKSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSW52YWxpZCBUeXBlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRheXNbdGhpcy5nZXREYXkoZGF0ZSldO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1cm4gbmFtZSBvZiB0aGUgbW9udGhcbiAgICogQHBhcmFtIHtOdW1iZXJ8RGF0ZX1cbiAgICogQHBhcmFtIHtBcnJheX1cbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKi9cbiAgZ2V0TW9udGhOYW1lOiBmdW5jdGlvbiBnZXRNb250aE5hbWUobW9udGgsIG1vbnRocykge1xuICAgIGlmICghbW9udGhzKSB7XG4gICAgICB0aHJvdyBFcnJvcignbWlzc2luZyAybmQgcGFyYW1ldGVyIE1vbnRocyBhcnJheScpO1xuICAgIH1cblxuICAgIGlmIChfdHlwZW9mKG1vbnRoKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBtb250aHNbdGhpcy5nZXRNb250aChtb250aCldO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbW9udGggPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gbW9udGhzW21vbnRoXTtcbiAgICB9XG5cbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0ludmFsaWQgdHlwZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYWJicmV2aWF0ZWQgdmVyc2lvbiBvZiB0aGUgbW9udGhcbiAgICogQHBhcmFtIHtOdW1iZXJ8RGF0ZX1cbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKi9cbiAgZ2V0TW9udGhOYW1lQWJicjogZnVuY3Rpb24gZ2V0TW9udGhOYW1lQWJicihtb250aCwgbW9udGhzQWJicikge1xuICAgIGlmICghbW9udGhzQWJicikge1xuICAgICAgdGhyb3cgRXJyb3IoJ21pc3NpbmcgMm5kIHBhcmFtdGVyIE1vbnRocyBhcnJheScpO1xuICAgIH1cblxuICAgIGlmIChfdHlwZW9mKG1vbnRoKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBtb250aHNBYmJyW3RoaXMuZ2V0TW9udGgobW9udGgpXTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1vbnRoID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG1vbnRoc0FiYnJbbW9udGhdO1xuICAgIH1cblxuICAgIHRocm93IFR5cGVFcnJvcignSW52YWxpZCB0eXBlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFsdGVybmF0aXZlIGdldCB0b3RhbCBudW1iZXIgb2YgZGF5cyBpbiBtb250aFxuICAgKiBAcGFyYW0ge051bWJlcn0geWVhclxuICAgKiBAcGFyYW0ge051bWJlcn0gbVxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9XG4gICAqL1xuICBkYXlzSW5Nb250aDogZnVuY3Rpb24gZGF5c0luTW9udGgoeWVhciwgbW9udGgpIHtcbiAgICByZXR1cm4gLzh8M3w1fDEwLy50ZXN0KG1vbnRoKSA/IDMwIDogbW9udGggPT09IDEgPyAhKHllYXIgJSA0KSAmJiB5ZWFyICUgMTAwIHx8ICEoeWVhciAlIDQwMCkgPyAyOSA6IDI4IDogMzE7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBudGggc3VmZml4IGZvciBkYXRlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBkYXlcbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKi9cbiAgZ2V0TnRoU3VmZml4OiBmdW5jdGlvbiBnZXROdGhTdWZmaXgoZGF5KSB7XG4gICAgc3dpdGNoIChkYXkpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgIGNhc2UgMjE6XG4gICAgICBjYXNlIDMxOlxuICAgICAgICByZXR1cm4gJ3N0JztcblxuICAgICAgY2FzZSAyOlxuICAgICAgY2FzZSAyMjpcbiAgICAgICAgcmV0dXJuICduZCc7XG5cbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgMjM6XG4gICAgICAgIHJldHVybiAncmQnO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3RoJztcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgZGF0ZSBvYmplY3RcbiAgICogQHBhcmFtIHtEYXRlfVxuICAgKiBAcGFyYW0ge1N0cmluZ31cbiAgICogQHBhcmFtIHtPYmplY3R9XG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICovXG4gIGZvcm1hdERhdGU6IGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSwgZm9ybWF0LCB0cmFuc2xhdGlvbikge1xuICAgIHRyYW5zbGF0aW9uID0gIXRyYW5zbGF0aW9uID8gZW4gOiB0cmFuc2xhdGlvbjtcbiAgICB2YXIgeWVhciA9IHRoaXMuZ2V0RnVsbFllYXIoZGF0ZSk7XG4gICAgdmFyIG1vbnRoID0gdGhpcy5nZXRNb250aChkYXRlKSArIDE7XG4gICAgdmFyIGRheSA9IHRoaXMuZ2V0RGF0ZShkYXRlKTtcbiAgICB2YXIgc3RyID0gZm9ybWF0LnJlcGxhY2UoL2RkLywgKCcwJyArIGRheSkuc2xpY2UoLTIpKS5yZXBsYWNlKC9kLywgZGF5KS5yZXBsYWNlKC95eXl5LywgeWVhcikucmVwbGFjZSgveXkvLCBTdHJpbmcoeWVhcikuc2xpY2UoMikpLnJlcGxhY2UoL01NTU0vLCB0aGlzLmdldE1vbnRoTmFtZSh0aGlzLmdldE1vbnRoKGRhdGUpLCB0cmFuc2xhdGlvbi5tb250aHMpKS5yZXBsYWNlKC9NTU0vLCB0aGlzLmdldE1vbnRoTmFtZUFiYnIodGhpcy5nZXRNb250aChkYXRlKSwgdHJhbnNsYXRpb24ubW9udGhzQWJicikpLnJlcGxhY2UoL01NLywgKCcwJyArIG1vbnRoKS5zbGljZSgtMikpLnJlcGxhY2UoL00oPyFhfMOkfGUpLywgbW9udGgpLnJlcGxhY2UoL3N1LywgdGhpcy5nZXROdGhTdWZmaXgodGhpcy5nZXREYXRlKGRhdGUpKSkucmVwbGFjZSgvRCg/IWV8w6l8aSkvLCB0aGlzLmdldERheU5hbWVBYmJyKGRhdGUsIHRyYW5zbGF0aW9uLmRheXMpKTtcbiAgICByZXR1cm4gc3RyO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGRhdGVzIGZvciBlYWNoIGRheSBpbiBiZXR3ZWVuIHR3byBkYXRlcy5cbiAgICogQHBhcmFtIHtEYXRlfSBzdGFydFxuICAgKiBAcGFyYW0ge0RhdGV9IGVuZFxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIGNyZWF0ZURhdGVBcnJheTogZnVuY3Rpb24gY3JlYXRlRGF0ZUFycmF5KHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgZGF0ZXMgPSBbXTtcblxuICAgIHdoaWxlIChzdGFydCA8PSBlbmQpIHtcbiAgICAgIGRhdGVzLnB1c2gobmV3IERhdGUoc3RhcnQpKTtcbiAgICAgIHN0YXJ0ID0gdGhpcy5zZXREYXRlKG5ldyBEYXRlKHN0YXJ0KSwgdGhpcy5nZXREYXRlKG5ldyBEYXRlKHN0YXJ0KSkgKyAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZXM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIG1ldGhvZCB1c2VkIGFzIGEgcHJvcCB2YWxpZGF0b3IgZm9yIGlucHV0IHZhbHVlc1xuICAgKiBAcGFyYW0geyp9IHZhbFxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgdmFsaWRhdGVEYXRlSW5wdXQ6IGZ1bmN0aW9uIHZhbGlkYXRlRGF0ZUlucHV0KHZhbCkge1xuICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJztcbiAgfVxufTtcbnZhciBtYWtlRGF0ZVV0aWxzID0gZnVuY3Rpb24gbWFrZURhdGVVdGlscyh1c2VVdGMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe30sIHV0aWxzLCB7XG4gICAgdXNlVXRjOiB1c2VVdGNcbiAgfSk7XG59O1xudmFyIHV0aWxzJDEgPSBfb2JqZWN0U3ByZWFkKHt9LCB1dGlscykgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG47XG5cbnZhciBzY3JpcHQgPSB7XG4gIHByb3BzOiB7XG4gICAgc2VsZWN0ZWREYXRlOiBEYXRlLFxuICAgIHJlc2V0VHlwZWREYXRlOiBbRGF0ZV0sXG4gICAgZm9ybWF0OiBbU3RyaW5nLCBGdW5jdGlvbl0sXG4gICAgdHJhbnNsYXRpb246IE9iamVjdCxcbiAgICBpbmxpbmU6IEJvb2xlYW4sXG4gICAgaWQ6IFN0cmluZyxcbiAgICBuYW1lOiBTdHJpbmcsXG4gICAgcmVmTmFtZTogU3RyaW5nLFxuICAgIG9wZW5EYXRlOiBEYXRlLFxuICAgIHBsYWNlaG9sZGVyOiBTdHJpbmcsXG4gICAgaW5wdXRDbGFzczogW1N0cmluZywgT2JqZWN0LCBBcnJheV0sXG4gICAgY2xlYXJCdXR0b246IEJvb2xlYW4sXG4gICAgY2xlYXJCdXR0b25JY29uOiBTdHJpbmcsXG4gICAgY2FsZW5kYXJCdXR0b246IEJvb2xlYW4sXG4gICAgY2FsZW5kYXJCdXR0b25JY29uOiBTdHJpbmcsXG4gICAgY2FsZW5kYXJCdXR0b25JY29uQ29udGVudDogU3RyaW5nLFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIHJlcXVpcmVkOiBCb29sZWFuLFxuICAgIHR5cGVhYmxlOiBCb29sZWFuLFxuICAgIGJvb3RzdHJhcFN0eWxpbmc6IEJvb2xlYW4sXG4gICAgdXNlVXRjOiBCb29sZWFuXG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgdmFyIGNvbnN0cnVjdGVkRGF0ZVV0aWxzID0gbWFrZURhdGVVdGlscyh0aGlzLnVzZVV0Yyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlucHV0OiBudWxsLFxuICAgICAgdHlwZWREYXRlOiBmYWxzZSxcbiAgICAgIHV0aWxzOiBjb25zdHJ1Y3RlZERhdGVVdGlsc1xuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgZm9ybWF0dGVkVmFsdWU6IGZ1bmN0aW9uIGZvcm1hdHRlZFZhbHVlKCkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZWREYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGVkRGF0ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmZvcm1hdCA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuZm9ybWF0KHRoaXMuc2VsZWN0ZWREYXRlKSA6IHRoaXMudXRpbHMuZm9ybWF0RGF0ZShuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSksIHRoaXMuZm9ybWF0LCB0aGlzLnRyYW5zbGF0aW9uKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkSW5wdXRDbGFzczogZnVuY3Rpb24gY29tcHV0ZWRJbnB1dENsYXNzKCkge1xuICAgICAgaWYgKHRoaXMuYm9vdHN0cmFwU3R5bGluZykge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW5wdXRDbGFzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gW3RoaXMuaW5wdXRDbGFzcywgJ2Zvcm0tY29udHJvbCddLmpvaW4oJyAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICAnZm9ybS1jb250cm9sJzogdHJ1ZVxuICAgICAgICB9LCB0aGlzLmlucHV0Q2xhc3MpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5pbnB1dENsYXNzO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICByZXNldFR5cGVkRGF0ZTogZnVuY3Rpb24gcmVzZXRUeXBlZERhdGUoKSB7XG4gICAgICB0aGlzLnR5cGVkRGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHNob3dDYWxlbmRhcjogZnVuY3Rpb24gc2hvd0NhbGVuZGFyKCkge1xuICAgICAgdGhpcy4kZW1pdCgnc2hvd0NhbGVuZGFyJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEF0dGVtcHQgdG8gcGFyc2UgYSB0eXBlZCBkYXRlXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICAgKi9cbiAgICBwYXJzZVR5cGVkRGF0ZTogZnVuY3Rpb24gcGFyc2VUeXBlZERhdGUoZXZlbnQpIHtcbiAgICAgIC8vIGNsb3NlIGNhbGVuZGFyIGlmIGVzY2FwZSBvciBlbnRlciBhcmUgcHJlc3NlZFxuICAgICAgaWYgKFsyNywgLy8gZXNjYXBlXG4gICAgICAxMyAvLyBlbnRlclxuICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXlDb2RlKSkge1xuICAgICAgICB0aGlzLmlucHV0LmJsdXIoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZWFibGUpIHtcbiAgICAgICAgdmFyIHR5cGVkRGF0ZSA9IERhdGUucGFyc2UodGhpcy5pbnB1dC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKCFpc05hTih0eXBlZERhdGUpKSB7XG4gICAgICAgICAgdGhpcy50eXBlZERhdGUgPSB0aGlzLmlucHV0LnZhbHVlO1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ3R5cGVkRGF0ZScsIG5ldyBEYXRlKHRoaXMudHlwZWREYXRlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogbnVsbGlmeSB0aGUgdHlwZWQgZGF0ZSB0byBkZWZlciB0byByZWd1bGFyIGZvcm1hdHRpbmdcbiAgICAgKiBjYWxsZWQgb25jZSB0aGUgaW5wdXQgaXMgYmx1cnJlZFxuICAgICAqL1xuICAgIGlucHV0Qmx1cnJlZDogZnVuY3Rpb24gaW5wdXRCbHVycmVkKCkge1xuICAgICAgaWYgKHRoaXMudHlwZWFibGUgJiYgaXNOYU4oRGF0ZS5wYXJzZSh0aGlzLmlucHV0LnZhbHVlKSkpIHtcbiAgICAgICAgdGhpcy5jbGVhckRhdGUoKTtcbiAgICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMudHlwZWREYXRlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy4kZW1pdCgnY2xvc2VDYWxlbmRhcicpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBlbWl0IGEgY2xlYXJEYXRlIGV2ZW50XG4gICAgICovXG4gICAgY2xlYXJEYXRlOiBmdW5jdGlvbiBjbGVhckRhdGUoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdjbGVhckRhdGUnKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5pbnB1dCA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gIH1cbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG47XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCh0ZW1wbGF0ZSwgc3R5bGUsIHNjcmlwdCwgc2NvcGVJZCwgaXNGdW5jdGlvbmFsVGVtcGxhdGUsIG1vZHVsZUlkZW50aWZpZXJcbi8qIHNlcnZlciBvbmx5ICovXG4sIHNoYWRvd01vZGUsIGNyZWF0ZUluamVjdG9yLCBjcmVhdGVJbmplY3RvclNTUiwgY3JlYXRlSW5qZWN0b3JTaGFkb3cpIHtcbiAgaWYgKHR5cGVvZiBzaGFkb3dNb2RlICE9PSAnYm9vbGVhbicpIHtcbiAgICBjcmVhdGVJbmplY3RvclNTUiA9IGNyZWF0ZUluamVjdG9yO1xuICAgIGNyZWF0ZUluamVjdG9yID0gc2hhZG93TW9kZTtcbiAgICBzaGFkb3dNb2RlID0gZmFsc2U7XG4gIH0gLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcC5cblxuXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdCA9PT0gJ2Z1bmN0aW9uJyA/IHNjcmlwdC5vcHRpb25zIDogc2NyaXB0OyAvLyByZW5kZXIgZnVuY3Rpb25zXG5cbiAgaWYgKHRlbXBsYXRlICYmIHRlbXBsYXRlLnJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gdGVtcGxhdGUucmVuZGVyO1xuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gdGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zO1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZTsgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuXG4gICAgaWYgKGlzRnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgICBvcHRpb25zLmZ1bmN0aW9uYWwgPSB0cnVlO1xuICAgIH1cbiAgfSAvLyBzY29wZWRJZFxuXG5cbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gc2NvcGVJZDtcbiAgfVxuXG4gIHZhciBob29rO1xuXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7XG4gICAgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIGhvb2soY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgIHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQgfHwgLy8gc3RhdGVmdWxcbiAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dDsgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG5cbiAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX187XG4gICAgICB9IC8vIGluamVjdCBjb21wb25lbnQgc3R5bGVzXG5cblxuICAgICAgaWYgKHN0eWxlKSB7XG4gICAgICAgIHN0eWxlLmNhbGwodGhpcywgY3JlYXRlSW5qZWN0b3JTU1IoY29udGV4dCkpO1xuICAgICAgfSAvLyByZWdpc3RlciBjb21wb25lbnQgbW9kdWxlIGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVyZW5jZVxuXG5cbiAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7XG4gICAgICAgIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVyKTtcbiAgICAgIH1cbiAgICB9OyAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZVxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXG5cblxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9vaztcbiAgfSBlbHNlIGlmIChzdHlsZSkge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlID8gZnVuY3Rpb24gKCkge1xuICAgICAgc3R5bGUuY2FsbCh0aGlzLCBjcmVhdGVJbmplY3RvclNoYWRvdyh0aGlzLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3QpKTtcbiAgICB9IDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIHN0eWxlLmNhbGwodGhpcywgY3JlYXRlSW5qZWN0b3IoY29udGV4dCkpO1xuICAgIH07XG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvbmFsIGNvbXBvbmVudCBpbiB2dWUgZmlsZVxuICAgICAgdmFyIG9yaWdpbmFsUmVuZGVyID0gb3B0aW9ucy5yZW5kZXI7XG5cbiAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpO1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZW5kZXIoaCwgY29udGV4dCk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGU7XG4gICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKSA6IFtob29rXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NyaXB0O1xufVxuXG52YXIgbm9ybWFsaXplQ29tcG9uZW50XzEgPSBub3JtYWxpemVDb21wb25lbnQ7XG5cbi8qIHNjcmlwdCAqL1xuY29uc3QgX192dWVfc2NyaXB0X18gPSBzY3JpcHQ7XG5cbi8qIHRlbXBsYXRlICovXG52YXIgX192dWVfcmVuZGVyX18gPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXM7XG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudDtcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oO1xuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IGNsYXNzOiB7IFwiaW5wdXQtZ3JvdXBcIjogX3ZtLmJvb3RzdHJhcFN0eWxpbmcgfSB9LFxuICAgIFtcbiAgICAgIF92bS5jYWxlbmRhckJ1dHRvblxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInZkcC1kYXRlcGlja2VyX19jYWxlbmRhci1idXR0b25cIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpbnB1dC1ncm91cC1wcmVwZW5kXCI6IF92bS5ib290c3RyYXBTdHlsaW5nIH0sXG4gICAgICAgICAgICAgIHN0eWxlOiB7IFwiY3Vyc29yOm5vdC1hbGxvd2VkO1wiOiBfdm0uZGlzYWJsZWQgfSxcbiAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5zaG93Q2FsZW5kYXIgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgeyBjbGFzczogeyBcImlucHV0LWdyb3VwLXRleHRcIjogX3ZtLmJvb3RzdHJhcFN0eWxpbmcgfSB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7IGNsYXNzOiBfdm0uY2FsZW5kYXJCdXR0b25JY29uIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmNhbGVuZGFyQnV0dG9uSWNvbkNvbnRlbnQpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAhX3ZtLmNhbGVuZGFyQnV0dG9uSWNvblxuICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCLigKZcIildKVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICByZWY6IF92bS5yZWZOYW1lLFxuICAgICAgICBjbGFzczogX3ZtLmNvbXB1dGVkSW5wdXRDbGFzcyxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICB0eXBlOiBfdm0uaW5saW5lID8gXCJoaWRkZW5cIiA6IFwidGV4dFwiLFxuICAgICAgICAgIG5hbWU6IF92bS5uYW1lLFxuICAgICAgICAgIGlkOiBfdm0uaWQsXG4gICAgICAgICAgXCJvcGVuLWRhdGVcIjogX3ZtLm9wZW5EYXRlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgXCJjbGVhci1idXR0b25cIjogX3ZtLmNsZWFyQnV0dG9uLFxuICAgICAgICAgIGRpc2FibGVkOiBfdm0uZGlzYWJsZWQsXG4gICAgICAgICAgcmVxdWlyZWQ6IF92bS5yZXF1aXJlZCxcbiAgICAgICAgICByZWFkb25seTogIV92bS50eXBlYWJsZSxcbiAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCJcbiAgICAgICAgfSxcbiAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5mb3JtYXR0ZWRWYWx1ZSB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgIGNsaWNrOiBfdm0uc2hvd0NhbGVuZGFyLFxuICAgICAgICAgIGtleXVwOiBfdm0ucGFyc2VUeXBlZERhdGUsXG4gICAgICAgICAgYmx1cjogX3ZtLmlucHV0Qmx1cnJlZFxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uY2xlYXJCdXR0b24gJiYgX3ZtLnNlbGVjdGVkRGF0ZVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInZkcC1kYXRlcGlja2VyX19jbGVhci1idXR0b25cIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpbnB1dC1ncm91cC1hcHBlbmRcIjogX3ZtLmJvb3RzdHJhcFN0eWxpbmcgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmNsZWFyRGF0ZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICB7IGNsYXNzOiB7IFwiaW5wdXQtZ3JvdXAtdGV4dFwiOiBfdm0uYm9vdHN0cmFwU3R5bGluZyB9IH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJpXCIsIHsgY2xhc3M6IF92bS5jbGVhckJ1dHRvbkljb24gfSwgW1xuICAgICAgICAgICAgICAgICAgICAhX3ZtLmNsZWFyQnV0dG9uSWNvbiA/IF9jKFwic3BhblwiLCBbX3ZtLl92KFwiw5dcIildKSA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uX3QoXCJhZnRlckRhdGVJbnB1dFwiKVxuICAgIF0sXG4gICAgMlxuICApXG59O1xudmFyIF9fdnVlX3N0YXRpY1JlbmRlckZuc19fID0gW107XG5fX3Z1ZV9yZW5kZXJfXy5fd2l0aFN0cmlwcGVkID0gdHJ1ZTtcblxuICAvKiBzdHlsZSAqL1xuICBjb25zdCBfX3Z1ZV9pbmplY3Rfc3R5bGVzX18gPSB1bmRlZmluZWQ7XG4gIC8qIHNjb3BlZCAqL1xuICBjb25zdCBfX3Z1ZV9zY29wZV9pZF9fID0gdW5kZWZpbmVkO1xuICAvKiBtb2R1bGUgaWRlbnRpZmllciAqL1xuICBjb25zdCBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fID0gdW5kZWZpbmVkO1xuICAvKiBmdW5jdGlvbmFsIHRlbXBsYXRlICovXG4gIGNvbnN0IF9fdnVlX2lzX2Z1bmN0aW9uYWxfdGVtcGxhdGVfXyA9IGZhbHNlO1xuICAvKiBzdHlsZSBpbmplY3QgKi9cbiAgXG4gIC8qIHN0eWxlIGluamVjdCBTU1IgKi9cbiAgXG5cbiAgXG4gIHZhciBEYXRlSW5wdXQgPSBub3JtYWxpemVDb21wb25lbnRfMShcbiAgICB7IHJlbmRlcjogX192dWVfcmVuZGVyX18sIHN0YXRpY1JlbmRlckZuczogX192dWVfc3RhdGljUmVuZGVyRm5zX18gfSxcbiAgICBfX3Z1ZV9pbmplY3Rfc3R5bGVzX18sXG4gICAgX192dWVfc2NyaXB0X18sXG4gICAgX192dWVfc2NvcGVfaWRfXyxcbiAgICBfX3Z1ZV9pc19mdW5jdGlvbmFsX3RlbXBsYXRlX18sXG4gICAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyxcbiAgICB1bmRlZmluZWQsXG4gICAgdW5kZWZpbmVkXG4gICk7XG5cbi8vXG52YXIgc2NyaXB0JDEgPSB7XG4gIHByb3BzOiB7XG4gICAgc2hvd0RheVZpZXc6IEJvb2xlYW4sXG4gICAgc2VsZWN0ZWREYXRlOiBEYXRlLFxuICAgIHBhZ2VEYXRlOiBEYXRlLFxuICAgIHBhZ2VUaW1lc3RhbXA6IE51bWJlcixcbiAgICBmdWxsTW9udGhOYW1lOiBCb29sZWFuLFxuICAgIGFsbG93ZWRUb1Nob3dWaWV3OiBGdW5jdGlvbixcbiAgICBkYXlDZWxsQ29udGVudDoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBcImRlZmF1bHRcIjogZnVuY3Rpb24gX2RlZmF1bHQoZGF5KSB7XG4gICAgICAgIHJldHVybiBkYXkuZGF0ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRpc2FibGVkRGF0ZXM6IE9iamVjdCxcbiAgICBoaWdobGlnaHRlZDogT2JqZWN0LFxuICAgIGNhbGVuZGFyQ2xhc3M6IFtTdHJpbmcsIE9iamVjdCwgQXJyYXldLFxuICAgIGNhbGVuZGFyU3R5bGU6IE9iamVjdCxcbiAgICB0cmFuc2xhdGlvbjogT2JqZWN0LFxuICAgIGlzUnRsOiBCb29sZWFuLFxuICAgIG1vbmRheUZpcnN0OiBCb29sZWFuLFxuICAgIHVzZVV0YzogQm9vbGVhblxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHZhciBjb25zdHJ1Y3RlZERhdGVVdGlscyA9IG1ha2VEYXRlVXRpbHModGhpcy51c2VVdGMpO1xuICAgIHJldHVybiB7XG4gICAgICB1dGlsczogY29uc3RydWN0ZWREYXRlVXRpbHNcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgZGF5IG5hbWVzXG4gICAgICogQHJldHVybiB7U3RyaW5nW119XG4gICAgICovXG4gICAgZGF5c09mV2VlazogZnVuY3Rpb24gZGF5c09mV2VlaygpIHtcbiAgICAgIGlmICh0aGlzLm1vbmRheUZpcnN0KSB7XG4gICAgICAgIHZhciB0ZW1wRGF5cyA9IHRoaXMudHJhbnNsYXRpb24uZGF5cy5zbGljZSgpO1xuICAgICAgICB0ZW1wRGF5cy5wdXNoKHRlbXBEYXlzLnNoaWZ0KCkpO1xuICAgICAgICByZXR1cm4gdGVtcERheXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLmRheXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRheSBudW1iZXIgb2YgdGhlIHdlZWsgbGVzcyBvbmUgZm9yIHRoZSBmaXJzdCBvZiB0aGUgY3VycmVudCBtb250aFxuICAgICAqIFVzZWQgdG8gc2hvdyBhbW91bnQgb2YgZW1wdHkgY2VsbHMgYmVmb3JlIHRoZSBmaXJzdCBpbiB0aGUgZGF5IGNhbGVuZGFyIGxheW91dFxuICAgICAqIEByZXR1cm4ge051bWJlcn1cbiAgICAgKi9cbiAgICBibGFua0RheXM6IGZ1bmN0aW9uIGJsYW5rRGF5cygpIHtcbiAgICAgIHZhciBkID0gdGhpcy5wYWdlRGF0ZTtcbiAgICAgIHZhciBkT2JqID0gdGhpcy51c2VVdGMgPyBuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIGQuZ2V0VVRDTW9udGgoKSwgMSkpIDogbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIDEsIGQuZ2V0SG91cnMoKSwgZC5nZXRNaW51dGVzKCkpO1xuXG4gICAgICBpZiAodGhpcy5tb25kYXlGaXJzdCkge1xuICAgICAgICByZXR1cm4gdGhpcy51dGlscy5nZXREYXkoZE9iaikgPiAwID8gdGhpcy51dGlscy5nZXREYXkoZE9iaikgLSAxIDogNjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMudXRpbHMuZ2V0RGF5KGRPYmopO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAgICAgKi9cbiAgICBkYXlzOiBmdW5jdGlvbiBkYXlzKCkge1xuICAgICAgdmFyIGQgPSB0aGlzLnBhZ2VEYXRlO1xuICAgICAgdmFyIGRheXMgPSBbXTsgLy8gc2V0IHVwIGEgbmV3IGRhdGUgb2JqZWN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGN1cnJlbnQgJ3BhZ2UnXG5cbiAgICAgIHZhciBkT2JqID0gdGhpcy51c2VVdGMgPyBuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIGQuZ2V0VVRDTW9udGgoKSwgMSkpIDogbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIDEsIGQuZ2V0SG91cnMoKSwgZC5nZXRNaW51dGVzKCkpO1xuICAgICAgdmFyIGRheXNJbk1vbnRoID0gdGhpcy51dGlscy5kYXlzSW5Nb250aCh0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKGRPYmopLCB0aGlzLnV0aWxzLmdldE1vbnRoKGRPYmopKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXlzSW5Nb250aDsgaSsrKSB7XG4gICAgICAgIGRheXMucHVzaCh7XG4gICAgICAgICAgZGF0ZTogdGhpcy51dGlscy5nZXREYXRlKGRPYmopLFxuICAgICAgICAgIHRpbWVzdGFtcDogZE9iai5nZXRUaW1lKCksXG4gICAgICAgICAgaXNTZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkRGF0ZShkT2JqKSxcbiAgICAgICAgICBpc0Rpc2FibGVkOiB0aGlzLmlzRGlzYWJsZWREYXRlKGRPYmopLFxuICAgICAgICAgIGlzSGlnaGxpZ2h0ZWQ6IHRoaXMuaXNIaWdobGlnaHRlZERhdGUoZE9iaiksXG4gICAgICAgICAgaXNIaWdobGlnaHRTdGFydDogdGhpcy5pc0hpZ2hsaWdodFN0YXJ0KGRPYmopLFxuICAgICAgICAgIGlzSGlnaGxpZ2h0RW5kOiB0aGlzLmlzSGlnaGxpZ2h0RW5kKGRPYmopLFxuICAgICAgICAgIGlzVG9kYXk6IHRoaXMudXRpbHMuY29tcGFyZURhdGVzKGRPYmosIG5ldyBEYXRlKCkpLFxuICAgICAgICAgIGlzV2Vla2VuZDogdGhpcy51dGlscy5nZXREYXkoZE9iaikgPT09IDAgfHwgdGhpcy51dGlscy5nZXREYXkoZE9iaikgPT09IDYsXG4gICAgICAgICAgaXNTYXR1cmRheTogdGhpcy51dGlscy5nZXREYXkoZE9iaikgPT09IDYsXG4gICAgICAgICAgaXNTdW5kYXk6IHRoaXMudXRpbHMuZ2V0RGF5KGRPYmopID09PSAwXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnV0aWxzLnNldERhdGUoZE9iaiwgdGhpcy51dGlscy5nZXREYXRlKGRPYmopICsgMSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXlzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBtb250aCB0aGUgY3VycmVudCBwYWdlIGlzIG9uXG4gICAgICogQHJldHVybiB7U3RyaW5nfVxuICAgICAqL1xuICAgIGN1cnJNb250aE5hbWU6IGZ1bmN0aW9uIGN1cnJNb250aE5hbWUoKSB7XG4gICAgICB2YXIgbW9udGhOYW1lID0gdGhpcy5mdWxsTW9udGhOYW1lID8gdGhpcy50cmFuc2xhdGlvbi5tb250aHMgOiB0aGlzLnRyYW5zbGF0aW9uLm1vbnRoc0FiYnI7XG4gICAgICByZXR1cm4gdGhpcy51dGlscy5nZXRNb250aE5hbWVBYmJyKHRoaXMudXRpbHMuZ2V0TW9udGgodGhpcy5wYWdlRGF0ZSksIG1vbnRoTmFtZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIHllYXIgdGhhdCBjdXJyZW50IHBhZ2UgaXMgb25cbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9XG4gICAgICovXG4gICAgY3VyclllYXJOYW1lOiBmdW5jdGlvbiBjdXJyWWVhck5hbWUoKSB7XG4gICAgICB2YXIgeWVhclN1ZmZpeCA9IHRoaXMudHJhbnNsYXRpb24ueWVhclN1ZmZpeDtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKHRoaXMucGFnZURhdGUpKS5jb25jYXQoeWVhclN1ZmZpeCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIElzIHRoaXMgdHJhbnNsYXRpb24gdXNpbmcgeWVhci9tb250aC9kYXkgZm9ybWF0P1xuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNZbWQ6IGZ1bmN0aW9uIGlzWW1kKCkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24ueW1kICYmIHRoaXMudHJhbnNsYXRpb24ueW1kID09PSB0cnVlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBJcyB0aGUgbGVmdCBoYW5kIG5hdmlnYXRpb24gYnV0dG9uIGRpc2FibGVkP1xuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNMZWZ0TmF2RGlzYWJsZWQ6IGZ1bmN0aW9uIGlzTGVmdE5hdkRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSdGwgPyB0aGlzLmlzTmV4dE1vbnRoRGlzYWJsZWQodGhpcy5wYWdlVGltZXN0YW1wKSA6IHRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQodGhpcy5wYWdlVGltZXN0YW1wKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSXMgdGhlIHJpZ2h0IGhhbmQgbmF2aWdhdGlvbiBidXR0b24gZGlzYWJsZWQ/XG4gICAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBpc1JpZ2h0TmF2RGlzYWJsZWQ6IGZ1bmN0aW9uIGlzUmlnaHROYXZEaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzUnRsID8gdGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZCh0aGlzLnBhZ2VUaW1lc3RhbXApIDogdGhpcy5pc05leHRNb250aERpc2FibGVkKHRoaXMucGFnZVRpbWVzdGFtcCk7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgc2VsZWN0RGF0ZTogZnVuY3Rpb24gc2VsZWN0RGF0ZShkYXRlKSB7XG4gICAgICBpZiAoZGF0ZS5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdGVkRGlzYWJsZWQnLCBkYXRlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRlbWl0KCdzZWxlY3REYXRlJywgZGF0ZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn1cbiAgICAgKi9cbiAgICBnZXRQYWdlTW9udGg6IGZ1bmN0aW9uIGdldFBhZ2VNb250aCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnV0aWxzLmdldE1vbnRoKHRoaXMucGFnZURhdGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBFbWl0IGFuIGV2ZW50IHRvIHNob3cgdGhlIG1vbnRoIHBpY2tlclxuICAgICAqL1xuICAgIHNob3dNb250aENhbGVuZGFyOiBmdW5jdGlvbiBzaG93TW9udGhDYWxlbmRhcigpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ3Nob3dNb250aENhbGVuZGFyJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoYW5nZSB0aGUgcGFnZSBtb250aFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBpbmNyZW1lbnRCeVxuICAgICAqL1xuICAgIGNoYW5nZU1vbnRoOiBmdW5jdGlvbiBjaGFuZ2VNb250aChpbmNyZW1lbnRCeSkge1xuICAgICAgdmFyIGRhdGUgPSB0aGlzLnBhZ2VEYXRlO1xuICAgICAgdGhpcy51dGlscy5zZXRNb250aChkYXRlLCB0aGlzLnV0aWxzLmdldE1vbnRoKGRhdGUpICsgaW5jcmVtZW50QnkpO1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlZE1vbnRoJywgZGF0ZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIERlY3JlbWVudCB0aGUgcGFnZSBtb250aFxuICAgICAqL1xuICAgIHByZXZpb3VzTW9udGg6IGZ1bmN0aW9uIHByZXZpb3VzTW9udGgoKSB7XG4gICAgICBpZiAoIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSkge1xuICAgICAgICB0aGlzLmNoYW5nZU1vbnRoKC0xKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSXMgdGhlIHByZXZpb3VzIG1vbnRoIGRpc2FibGVkP1xuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQ6IGZ1bmN0aW9uIGlzUHJldmlvdXNNb250aERpc2FibGVkKCkge1xuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkRGF0ZXMgfHwgIXRoaXMuZGlzYWJsZWREYXRlcy50bykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciBkID0gdGhpcy5wYWdlRGF0ZTtcbiAgICAgIHJldHVybiB0aGlzLnV0aWxzLmdldE1vbnRoKHRoaXMuZGlzYWJsZWREYXRlcy50bykgPj0gdGhpcy51dGlscy5nZXRNb250aChkKSAmJiB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKHRoaXMuZGlzYWJsZWREYXRlcy50bykgPj0gdGhpcy51dGlscy5nZXRGdWxsWWVhcihkKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSW5jcmVtZW50IHRoZSBjdXJyZW50IHBhZ2UgbW9udGhcbiAgICAgKi9cbiAgICBuZXh0TW9udGg6IGZ1bmN0aW9uIG5leHRNb250aCgpIHtcbiAgICAgIGlmICghdGhpcy5pc05leHRNb250aERpc2FibGVkKCkpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VNb250aCgrMSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIElzIHRoZSBuZXh0IG1vbnRoIGRpc2FibGVkP1xuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNOZXh0TW9udGhEaXNhYmxlZDogZnVuY3Rpb24gaXNOZXh0TW9udGhEaXNhYmxlZCgpIHtcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZERhdGVzIHx8ICF0aGlzLmRpc2FibGVkRGF0ZXMuZnJvbSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciBkID0gdGhpcy5wYWdlRGF0ZTtcbiAgICAgIHJldHVybiB0aGlzLnV0aWxzLmdldE1vbnRoKHRoaXMuZGlzYWJsZWREYXRlcy5mcm9tKSA8PSB0aGlzLnV0aWxzLmdldE1vbnRoKGQpICYmIHRoaXMudXRpbHMuZ2V0RnVsbFllYXIodGhpcy5kaXNhYmxlZERhdGVzLmZyb20pIDw9IHRoaXMudXRpbHMuZ2V0RnVsbFllYXIoZCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgYSBkYXkgaXMgc2VsZWN0ZWRcbiAgICAgKiBAcGFyYW0ge0RhdGV9XG4gICAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBpc1NlbGVjdGVkRGF0ZTogZnVuY3Rpb24gaXNTZWxlY3RlZERhdGUoZE9iaikge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlICYmIHRoaXMudXRpbHMuY29tcGFyZURhdGVzKHRoaXMuc2VsZWN0ZWREYXRlLCBkT2JqKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBhIGRheSBpcyBkaXNhYmxlZFxuICAgICAqIEBwYXJhbSB7RGF0ZX1cbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAqL1xuICAgIGlzRGlzYWJsZWREYXRlOiBmdW5jdGlvbiBpc0Rpc2FibGVkRGF0ZShkYXRlKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgZGlzYWJsZWREYXRlcyA9IGZhbHNlO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlcyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlcy5kYXRlcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZERhdGVzLmRhdGVzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICBpZiAoX3RoaXMudXRpbHMuY29tcGFyZURhdGVzKGRhdGUsIGQpKSB7XG4gICAgICAgICAgICBkaXNhYmxlZERhdGVzID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzLnRvICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRpc2FibGVkRGF0ZXMudG8gJiYgZGF0ZSA8IHRoaXMuZGlzYWJsZWREYXRlcy50bykge1xuICAgICAgICBkaXNhYmxlZERhdGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZXMuZnJvbSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmZyb20gJiYgZGF0ZSA+IHRoaXMuZGlzYWJsZWREYXRlcy5mcm9tKSB7XG4gICAgICAgIGRpc2FibGVkRGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlcy5yYW5nZXMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWREYXRlcy5yYW5nZXMuZm9yRWFjaChmdW5jdGlvbiAocmFuZ2UpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJhbmdlLmZyb20gIT09ICd1bmRlZmluZWQnICYmIHJhbmdlLmZyb20gJiYgdHlwZW9mIHJhbmdlLnRvICE9PSAndW5kZWZpbmVkJyAmJiByYW5nZS50bykge1xuICAgICAgICAgICAgaWYgKGRhdGUgPCByYW5nZS50byAmJiBkYXRlID4gcmFuZ2UuZnJvbSkge1xuICAgICAgICAgICAgICBkaXNhYmxlZERhdGVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZXMuZGF5cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmRheXMuaW5kZXhPZih0aGlzLnV0aWxzLmdldERheShkYXRlKSkgIT09IC0xKSB7XG4gICAgICAgIGRpc2FibGVkRGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlcy5kYXlzT2ZNb250aCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmRheXNPZk1vbnRoLmluZGV4T2YodGhpcy51dGlscy5nZXREYXRlKGRhdGUpKSAhPT0gLTEpIHtcbiAgICAgICAgZGlzYWJsZWREYXRlcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzLmN1c3RvbVByZWRpY3RvciA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLmRpc2FibGVkRGF0ZXMuY3VzdG9tUHJlZGljdG9yKGRhdGUpKSB7XG4gICAgICAgIGRpc2FibGVkRGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGlzYWJsZWREYXRlcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBhIGRheSBpcyBoaWdobGlnaHRlZCAob25seSBpZiBpdCBpcyBub3QgZGlzYWJsZWQgYWxyZWFkeSBleGNlcHQgd2hlbiBoaWdobGlnaHRlZC5pbmNsdWRlRGlzYWJsZWQgaXMgdHJ1ZSlcbiAgICAgKiBAcGFyYW0ge0RhdGV9XG4gICAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBpc0hpZ2hsaWdodGVkRGF0ZTogZnVuY3Rpb24gaXNIaWdobGlnaHRlZERhdGUoZGF0ZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICghKHRoaXMuaGlnaGxpZ2h0ZWQgJiYgdGhpcy5oaWdobGlnaHRlZC5pbmNsdWRlRGlzYWJsZWQpICYmIHRoaXMuaXNEaXNhYmxlZERhdGUoZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgaGlnaGxpZ2h0ZWQgPSBmYWxzZTtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmhpZ2hsaWdodGVkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5oaWdobGlnaHRlZC5kYXRlcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZC5kYXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgaWYgKF90aGlzMi51dGlscy5jb21wYXJlRGF0ZXMoZGF0ZSwgZCkpIHtcbiAgICAgICAgICAgIGhpZ2hsaWdodGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzRGVmaW5lZCh0aGlzLmhpZ2hsaWdodGVkLmZyb20pICYmIHRoaXMuaXNEZWZpbmVkKHRoaXMuaGlnaGxpZ2h0ZWQudG8pKSB7XG4gICAgICAgIGhpZ2hsaWdodGVkID0gZGF0ZSA+PSB0aGlzLmhpZ2hsaWdodGVkLmZyb20gJiYgZGF0ZSA8PSB0aGlzLmhpZ2hsaWdodGVkLnRvO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuaGlnaGxpZ2h0ZWQuZGF5cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5oaWdobGlnaHRlZC5kYXlzLmluZGV4T2YodGhpcy51dGlscy5nZXREYXkoZGF0ZSkpICE9PSAtMSkge1xuICAgICAgICBoaWdobGlnaHRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5oaWdobGlnaHRlZC5kYXlzT2ZNb250aCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5oaWdobGlnaHRlZC5kYXlzT2ZNb250aC5pbmRleE9mKHRoaXMudXRpbHMuZ2V0RGF0ZShkYXRlKSkgIT09IC0xKSB7XG4gICAgICAgIGhpZ2hsaWdodGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmhpZ2hsaWdodGVkLmN1c3RvbVByZWRpY3RvciA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLmhpZ2hsaWdodGVkLmN1c3RvbVByZWRpY3RvcihkYXRlKSkge1xuICAgICAgICBoaWdobGlnaHRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBoaWdobGlnaHRlZDtcbiAgICB9LFxuICAgIGRheUNsYXNzZXM6IGZ1bmN0aW9uIGRheUNsYXNzZXMoZGF5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnc2VsZWN0ZWQnOiBkYXkuaXNTZWxlY3RlZCxcbiAgICAgICAgJ2Rpc2FibGVkJzogZGF5LmlzRGlzYWJsZWQsXG4gICAgICAgICdoaWdobGlnaHRlZCc6IGRheS5pc0hpZ2hsaWdodGVkLFxuICAgICAgICAndG9kYXknOiBkYXkuaXNUb2RheSxcbiAgICAgICAgJ3dlZWtlbmQnOiBkYXkuaXNXZWVrZW5kLFxuICAgICAgICAnc2F0JzogZGF5LmlzU2F0dXJkYXksXG4gICAgICAgICdzdW4nOiBkYXkuaXNTdW5kYXksXG4gICAgICAgICdoaWdobGlnaHQtc3RhcnQnOiBkYXkuaXNIaWdobGlnaHRTdGFydCxcbiAgICAgICAgJ2hpZ2hsaWdodC1lbmQnOiBkYXkuaXNIaWdobGlnaHRFbmRcbiAgICAgIH07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgYSBkYXkgaXMgaGlnaGxpZ2h0ZWQgYW5kIGl0IGlzIHRoZSBmaXJzdCBkYXRlXG4gICAgICogaW4gdGhlIGhpZ2hsaWdodGVkIHJhbmdlIG9mIGRhdGVzXG4gICAgICogQHBhcmFtIHtEYXRlfVxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNIaWdobGlnaHRTdGFydDogZnVuY3Rpb24gaXNIaWdobGlnaHRTdGFydChkYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0hpZ2hsaWdodGVkRGF0ZShkYXRlKSAmJiB0aGlzLmhpZ2hsaWdodGVkLmZyb20gaW5zdGFuY2VvZiBEYXRlICYmIHRoaXMudXRpbHMuZ2V0RnVsbFllYXIodGhpcy5oaWdobGlnaHRlZC5mcm9tKSA9PT0gdGhpcy51dGlscy5nZXRGdWxsWWVhcihkYXRlKSAmJiB0aGlzLnV0aWxzLmdldE1vbnRoKHRoaXMuaGlnaGxpZ2h0ZWQuZnJvbSkgPT09IHRoaXMudXRpbHMuZ2V0TW9udGgoZGF0ZSkgJiYgdGhpcy51dGlscy5nZXREYXRlKHRoaXMuaGlnaGxpZ2h0ZWQuZnJvbSkgPT09IHRoaXMudXRpbHMuZ2V0RGF0ZShkYXRlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBhIGRheSBpcyBoaWdobGlnaHRlZCBhbmQgaXQgaXMgdGhlIGZpcnN0IGRhdGVcbiAgICAgKiBpbiB0aGUgaGlnaGxpZ2h0ZWQgcmFuZ2Ugb2YgZGF0ZXNcbiAgICAgKiBAcGFyYW0ge0RhdGV9XG4gICAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBpc0hpZ2hsaWdodEVuZDogZnVuY3Rpb24gaXNIaWdobGlnaHRFbmQoZGF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNIaWdobGlnaHRlZERhdGUoZGF0ZSkgJiYgdGhpcy5oaWdobGlnaHRlZC50byBpbnN0YW5jZW9mIERhdGUgJiYgdGhpcy51dGlscy5nZXRGdWxsWWVhcih0aGlzLmhpZ2hsaWdodGVkLnRvKSA9PT0gdGhpcy51dGlscy5nZXRGdWxsWWVhcihkYXRlKSAmJiB0aGlzLnV0aWxzLmdldE1vbnRoKHRoaXMuaGlnaGxpZ2h0ZWQudG8pID09PSB0aGlzLnV0aWxzLmdldE1vbnRoKGRhdGUpICYmIHRoaXMudXRpbHMuZ2V0RGF0ZSh0aGlzLmhpZ2hsaWdodGVkLnRvKSA9PT0gdGhpcy51dGlscy5nZXREYXRlKGRhdGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXJcbiAgICAgKiBAcGFyYW0gIHttaXhlZH0gIHByb3BcbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAqL1xuICAgIGlzRGVmaW5lZDogZnVuY3Rpb24gaXNEZWZpbmVkKHByb3ApIHtcbiAgICAgIHJldHVybiB0eXBlb2YgcHJvcCAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvcDtcbiAgICB9XG4gIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbn07XG5cbi8qIHNjcmlwdCAqL1xuY29uc3QgX192dWVfc2NyaXB0X18kMSA9IHNjcmlwdCQxO1xuXG4vKiB0ZW1wbGF0ZSAqL1xudmFyIF9fdnVlX3JlbmRlcl9fJDEgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXM7XG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudDtcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oO1xuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd0RheVZpZXcsXG4gICAgICAgICAgZXhwcmVzc2lvbjogXCJzaG93RGF5Vmlld1wiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBjbGFzczogW192bS5jYWxlbmRhckNsYXNzLCBcInZkcC1kYXRlcGlja2VyX19jYWxlbmRhclwiXSxcbiAgICAgIHN0eWxlOiBfdm0uY2FsZW5kYXJTdHlsZSxcbiAgICAgIG9uOiB7XG4gICAgICAgIG1vdXNlZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF92bS5fdChcImJlZm9yZUNhbGVuZGFySGVhZGVyXCIpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFwiaGVhZGVyXCIsIFtcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicHJldlwiLFxuICAgICAgICAgICAgY2xhc3M6IHsgZGlzYWJsZWQ6IF92bS5pc0xlZnROYXZEaXNhYmxlZCB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5pc1J0bCA/IF92bS5uZXh0TW9udGgoKSA6IF92bS5wcmV2aW91c01vbnRoKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtfdm0uX3YoXCI8XCIpXVxuICAgICAgICApLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcbiAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJkYXlfX21vbnRoX2J0blwiLFxuICAgICAgICAgICAgY2xhc3M6IF92bS5hbGxvd2VkVG9TaG93VmlldyhcIm1vbnRoXCIpID8gXCJ1cFwiIDogXCJcIixcbiAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uc2hvd01vbnRoQ2FsZW5kYXIgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmlzWW1kID8gX3ZtLmN1cnJZZWFyTmFtZSA6IF92bS5jdXJyTW9udGhOYW1lKSArXG4gICAgICAgICAgICAgICAgXCIgXCIgK1xuICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uaXNZbWQgPyBfdm0uY3Vyck1vbnRoTmFtZSA6IF92bS5jdXJyWWVhck5hbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcbiAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJuZXh0XCIsXG4gICAgICAgICAgICBjbGFzczogeyBkaXNhYmxlZDogX3ZtLmlzUmlnaHROYXZEaXNhYmxlZCB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5pc1J0bCA/IF92bS5wcmV2aW91c01vbnRoKCkgOiBfdm0ubmV4dE1vbnRoKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtfdm0uX3YoXCI+XCIpXVxuICAgICAgICApXG4gICAgICBdKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBjbGFzczogX3ZtLmlzUnRsID8gXCJmbGV4LXJ0bFwiIDogXCJcIiB9LFxuICAgICAgICBbXG4gICAgICAgICAgX3ZtLl9sKF92bS5kYXlzT2ZXZWVrLCBmdW5jdGlvbihkKSB7XG4gICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICB7IGtleTogZC50aW1lc3RhbXAsIHN0YXRpY0NsYXNzOiBcImNlbGwgZGF5LWhlYWRlclwiIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKGQpKV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5ibGFua0RheXMgPiAwXG4gICAgICAgICAgICA/IF92bS5fbChfdm0uYmxhbmtEYXlzLCBmdW5jdGlvbihkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICBrZXk6IGQudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiY2VsbCBkYXkgYmxhbmtcIlxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fbChfdm0uZGF5cywgZnVuY3Rpb24oZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gX2MoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAga2V5OiBkYXkudGltZXN0YW1wLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjZWxsIGRheVwiLFxuICAgICAgICAgICAgICBjbGFzczogX3ZtLmRheUNsYXNzZXMoZGF5KSxcbiAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgaW5uZXJIVE1MOiBfdm0uX3MoX3ZtLmRheUNlbGxDb250ZW50KGRheSkpIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5zZWxlY3REYXRlKGRheSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKVxuICAgIF0sXG4gICAgMlxuICApXG59O1xudmFyIF9fdnVlX3N0YXRpY1JlbmRlckZuc19fJDEgPSBbXTtcbl9fdnVlX3JlbmRlcl9fJDEuX3dpdGhTdHJpcHBlZCA9IHRydWU7XG5cbiAgLyogc3R5bGUgKi9cbiAgY29uc3QgX192dWVfaW5qZWN0X3N0eWxlc19fJDEgPSB1bmRlZmluZWQ7XG4gIC8qIHNjb3BlZCAqL1xuICBjb25zdCBfX3Z1ZV9zY29wZV9pZF9fJDEgPSB1bmRlZmluZWQ7XG4gIC8qIG1vZHVsZSBpZGVudGlmaWVyICovXG4gIGNvbnN0IF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX18kMSA9IHVuZGVmaW5lZDtcbiAgLyogZnVuY3Rpb25hbCB0ZW1wbGF0ZSAqL1xuICBjb25zdCBfX3Z1ZV9pc19mdW5jdGlvbmFsX3RlbXBsYXRlX18kMSA9IGZhbHNlO1xuICAvKiBzdHlsZSBpbmplY3QgKi9cbiAgXG4gIC8qIHN0eWxlIGluamVjdCBTU1IgKi9cbiAgXG5cbiAgXG4gIHZhciBQaWNrZXJEYXkgPSBub3JtYWxpemVDb21wb25lbnRfMShcbiAgICB7IHJlbmRlcjogX192dWVfcmVuZGVyX18kMSwgc3RhdGljUmVuZGVyRm5zOiBfX3Z1ZV9zdGF0aWNSZW5kZXJGbnNfXyQxIH0sXG4gICAgX192dWVfaW5qZWN0X3N0eWxlc19fJDEsXG4gICAgX192dWVfc2NyaXB0X18kMSxcbiAgICBfX3Z1ZV9zY29wZV9pZF9fJDEsXG4gICAgX192dWVfaXNfZnVuY3Rpb25hbF90ZW1wbGF0ZV9fJDEsXG4gICAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyQxLFxuICAgIHVuZGVmaW5lZCxcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuLy9cbnZhciBzY3JpcHQkMiA9IHtcbiAgcHJvcHM6IHtcbiAgICBzaG93TW9udGhWaWV3OiBCb29sZWFuLFxuICAgIHNlbGVjdGVkRGF0ZTogRGF0ZSxcbiAgICBwYWdlRGF0ZTogRGF0ZSxcbiAgICBwYWdlVGltZXN0YW1wOiBOdW1iZXIsXG4gICAgZGlzYWJsZWREYXRlczogT2JqZWN0LFxuICAgIGNhbGVuZGFyQ2xhc3M6IFtTdHJpbmcsIE9iamVjdCwgQXJyYXldLFxuICAgIGNhbGVuZGFyU3R5bGU6IE9iamVjdCxcbiAgICB0cmFuc2xhdGlvbjogT2JqZWN0LFxuICAgIGlzUnRsOiBCb29sZWFuLFxuICAgIGFsbG93ZWRUb1Nob3dWaWV3OiBGdW5jdGlvbixcbiAgICB1c2VVdGM6IEJvb2xlYW5cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICB2YXIgY29uc3RydWN0ZWREYXRlVXRpbHMgPSBtYWtlRGF0ZVV0aWxzKHRoaXMudXNlVXRjKTtcbiAgICByZXR1cm4ge1xuICAgICAgdXRpbHM6IGNvbnN0cnVjdGVkRGF0ZVV0aWxzXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBtb250aHM6IGZ1bmN0aW9uIG1vbnRocygpIHtcbiAgICAgIHZhciBkID0gdGhpcy5wYWdlRGF0ZTtcbiAgICAgIHZhciBtb250aHMgPSBbXTsgLy8gc2V0IHVwIGEgbmV3IGRhdGUgb2JqZWN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGN1cnJlbnQgJ3BhZ2UnXG5cbiAgICAgIHZhciBkT2JqID0gdGhpcy51c2VVdGMgPyBuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIGQuZ2V0VVRDRGF0ZSgpKSkgOiBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIGQuZ2V0RGF0ZSgpLCBkLmdldEhvdXJzKCksIGQuZ2V0TWludXRlcygpKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgIG1vbnRocy5wdXNoKHtcbiAgICAgICAgICBtb250aDogdGhpcy51dGlscy5nZXRNb250aE5hbWUoaSwgdGhpcy50cmFuc2xhdGlvbi5tb250aHMpLFxuICAgICAgICAgIHRpbWVzdGFtcDogZE9iai5nZXRUaW1lKCksXG4gICAgICAgICAgaXNTZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkTW9udGgoZE9iaiksXG4gICAgICAgICAgaXNEaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkTW9udGgoZE9iailcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXRpbHMuc2V0TW9udGgoZE9iaiwgdGhpcy51dGlscy5nZXRNb250aChkT2JqKSArIDEpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbW9udGhzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgeWVhciBuYW1lIG9uIGN1cnJlbnQgcGFnZS5cbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAgICovXG4gICAgcGFnZVllYXJOYW1lOiBmdW5jdGlvbiBwYWdlWWVhck5hbWUoKSB7XG4gICAgICB2YXIgeWVhclN1ZmZpeCA9IHRoaXMudHJhbnNsYXRpb24ueWVhclN1ZmZpeDtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKHRoaXMucGFnZURhdGUpKS5jb25jYXQoeWVhclN1ZmZpeCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIElzIHRoZSBsZWZ0IGhhbmQgbmF2aWdhdGlvbiBkaXNhYmxlZFxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNMZWZ0TmF2RGlzYWJsZWQ6IGZ1bmN0aW9uIGlzTGVmdE5hdkRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSdGwgPyB0aGlzLmlzTmV4dFllYXJEaXNhYmxlZCh0aGlzLnBhZ2VUaW1lc3RhbXApIDogdGhpcy5pc1ByZXZpb3VzWWVhckRpc2FibGVkKHRoaXMucGFnZVRpbWVzdGFtcCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIElzIHRoZSByaWdodCBoYW5kIG5hdmlnYXRpb24gZGlzYWJsZWRcbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAqL1xuICAgIGlzUmlnaHROYXZEaXNhYmxlZDogZnVuY3Rpb24gaXNSaWdodE5hdkRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSdGwgPyB0aGlzLmlzUHJldmlvdXNZZWFyRGlzYWJsZWQodGhpcy5wYWdlVGltZXN0YW1wKSA6IHRoaXMuaXNOZXh0WWVhckRpc2FibGVkKHRoaXMucGFnZVRpbWVzdGFtcCk7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgLyoqXG4gICAgICogRW1pdHMgYSBzZWxlY3RNb250aCBldmVudFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBtb250aFxuICAgICAqL1xuICAgIHNlbGVjdE1vbnRoOiBmdW5jdGlvbiBzZWxlY3RNb250aChtb250aCkge1xuICAgICAgaWYgKG1vbnRoLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRlbWl0KCdzZWxlY3RNb250aCcsIG1vbnRoKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgeWVhciB1cCBvciBkb3duXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGluY3JlbWVudEJ5XG4gICAgICovXG4gICAgY2hhbmdlWWVhcjogZnVuY3Rpb24gY2hhbmdlWWVhcihpbmNyZW1lbnRCeSkge1xuICAgICAgdmFyIGRhdGUgPSB0aGlzLnBhZ2VEYXRlO1xuICAgICAgdGhpcy51dGlscy5zZXRGdWxsWWVhcihkYXRlLCB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKGRhdGUpICsgaW5jcmVtZW50QnkpO1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlZFllYXInLCBkYXRlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRGVjcmVtZW50cyB0aGUgeWVhclxuICAgICAqL1xuICAgIHByZXZpb3VzWWVhcjogZnVuY3Rpb24gcHJldmlvdXNZZWFyKCkge1xuICAgICAgaWYgKCF0aGlzLmlzUHJldmlvdXNZZWFyRGlzYWJsZWQoKSkge1xuICAgICAgICB0aGlzLmNoYW5nZVllYXIoLTEpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHByZXZpb3VzIHllYXIgaXMgZGlzYWJsZWQgb3Igbm90XG4gICAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBpc1ByZXZpb3VzWWVhckRpc2FibGVkOiBmdW5jdGlvbiBpc1ByZXZpb3VzWWVhckRpc2FibGVkKCkge1xuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkRGF0ZXMgfHwgIXRoaXMuZGlzYWJsZWREYXRlcy50bykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKHRoaXMuZGlzYWJsZWREYXRlcy50bykgPj0gdGhpcy51dGlscy5nZXRGdWxsWWVhcih0aGlzLnBhZ2VEYXRlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSW5jcmVtZW50cyB0aGUgeWVhclxuICAgICAqL1xuICAgIG5leHRZZWFyOiBmdW5jdGlvbiBuZXh0WWVhcigpIHtcbiAgICAgIGlmICghdGhpcy5pc05leHRZZWFyRGlzYWJsZWQoKSkge1xuICAgICAgICB0aGlzLmNoYW5nZVllYXIoMSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgbmV4dCB5ZWFyIGlzIGRpc2FibGVkIG9yIG5vdFxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNOZXh0WWVhckRpc2FibGVkOiBmdW5jdGlvbiBpc05leHRZZWFyRGlzYWJsZWQoKSB7XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWREYXRlcyB8fCAhdGhpcy5kaXNhYmxlZERhdGVzLmZyb20pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy51dGlscy5nZXRGdWxsWWVhcih0aGlzLmRpc2FibGVkRGF0ZXMuZnJvbSkgPD0gdGhpcy51dGlscy5nZXRGdWxsWWVhcih0aGlzLnBhZ2VEYXRlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgdGhhdCBzaG93cyB0aGUgeWVhciBjYWxlbmRhclxuICAgICAqL1xuICAgIHNob3dZZWFyQ2FsZW5kYXI6IGZ1bmN0aW9uIHNob3dZZWFyQ2FsZW5kYXIoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdzaG93WWVhckNhbGVuZGFyJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHNlbGVjdGVkIGRhdGUgaXMgaW4gdGhpcyBtb250aFxuICAgICAqIEBwYXJhbSB7RGF0ZX1cbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAqL1xuICAgIGlzU2VsZWN0ZWRNb250aDogZnVuY3Rpb24gaXNTZWxlY3RlZE1vbnRoKGRhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZSAmJiB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKHRoaXMuc2VsZWN0ZWREYXRlKSA9PT0gdGhpcy51dGlscy5nZXRGdWxsWWVhcihkYXRlKSAmJiB0aGlzLnV0aWxzLmdldE1vbnRoKHRoaXMuc2VsZWN0ZWREYXRlKSA9PT0gdGhpcy51dGlscy5nZXRNb250aChkYXRlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBhIG1vbnRoIGlzIGRpc2FibGVkXG4gICAgICogQHBhcmFtIHtEYXRlfVxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNEaXNhYmxlZE1vbnRoOiBmdW5jdGlvbiBpc0Rpc2FibGVkTW9udGgoZGF0ZSkge1xuICAgICAgdmFyIGRpc2FibGVkRGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZXMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZXMudG8gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZGlzYWJsZWREYXRlcy50bykge1xuICAgICAgICBpZiAodGhpcy51dGlscy5nZXRNb250aChkYXRlKSA8IHRoaXMudXRpbHMuZ2V0TW9udGgodGhpcy5kaXNhYmxlZERhdGVzLnRvKSAmJiB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKGRhdGUpIDw9IHRoaXMudXRpbHMuZ2V0RnVsbFllYXIodGhpcy5kaXNhYmxlZERhdGVzLnRvKSB8fCB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKGRhdGUpIDwgdGhpcy51dGlscy5nZXRGdWxsWWVhcih0aGlzLmRpc2FibGVkRGF0ZXMudG8pKSB7XG4gICAgICAgICAgZGlzYWJsZWREYXRlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZXMuZnJvbSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmZyb20pIHtcbiAgICAgICAgaWYgKHRoaXMudXRpbHMuZ2V0TW9udGgoZGF0ZSkgPiB0aGlzLnV0aWxzLmdldE1vbnRoKHRoaXMuZGlzYWJsZWREYXRlcy5mcm9tKSAmJiB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKGRhdGUpID49IHRoaXMudXRpbHMuZ2V0RnVsbFllYXIodGhpcy5kaXNhYmxlZERhdGVzLmZyb20pIHx8IHRoaXMudXRpbHMuZ2V0RnVsbFllYXIoZGF0ZSkgPiB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKHRoaXMuZGlzYWJsZWREYXRlcy5mcm9tKSkge1xuICAgICAgICAgIGRpc2FibGVkRGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzLmN1c3RvbVByZWRpY3RvciA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLmRpc2FibGVkRGF0ZXMuY3VzdG9tUHJlZGljdG9yKGRhdGUpKSB7XG4gICAgICAgIGRpc2FibGVkRGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGlzYWJsZWREYXRlcztcbiAgICB9XG4gIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbn07XG5cbi8qIHNjcmlwdCAqL1xuY29uc3QgX192dWVfc2NyaXB0X18kMiA9IHNjcmlwdCQyO1xuXG4vKiB0ZW1wbGF0ZSAqL1xudmFyIF9fdnVlX3JlbmRlcl9fJDIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXM7XG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudDtcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oO1xuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd01vbnRoVmlldyxcbiAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dNb250aFZpZXdcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgY2xhc3M6IFtfdm0uY2FsZW5kYXJDbGFzcywgXCJ2ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXJcIl0sXG4gICAgICBzdHlsZTogX3ZtLmNhbGVuZGFyU3R5bGUsXG4gICAgICBvbjoge1xuICAgICAgICBtb3VzZWRvd246IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfdm0uX3QoXCJiZWZvcmVDYWxlbmRhckhlYWRlclwiKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcImhlYWRlclwiLCBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInByZXZcIixcbiAgICAgICAgICAgIGNsYXNzOiB7IGRpc2FibGVkOiBfdm0uaXNMZWZ0TmF2RGlzYWJsZWQgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBfdm0uaXNSdGwgPyBfdm0ubmV4dFllYXIoKSA6IF92bS5wcmV2aW91c1llYXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW192bS5fdihcIjxcIildXG4gICAgICAgICksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1vbnRoX195ZWFyX2J0blwiLFxuICAgICAgICAgICAgY2xhc3M6IF92bS5hbGxvd2VkVG9TaG93VmlldyhcInllYXJcIikgPyBcInVwXCIgOiBcIlwiLFxuICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5zaG93WWVhckNhbGVuZGFyIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5wYWdlWWVhck5hbWUpKV1cbiAgICAgICAgKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibmV4dFwiLFxuICAgICAgICAgICAgY2xhc3M6IHsgZGlzYWJsZWQ6IF92bS5pc1JpZ2h0TmF2RGlzYWJsZWQgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBfdm0uaXNSdGwgPyBfdm0ucHJldmlvdXNZZWFyKCkgOiBfdm0ubmV4dFllYXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW192bS5fdihcIj5cIildXG4gICAgICAgIClcbiAgICAgIF0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5fbChfdm0ubW9udGhzLCBmdW5jdGlvbihtb250aCkge1xuICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBtb250aC50aW1lc3RhbXAsXG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjZWxsIG1vbnRoXCIsXG4gICAgICAgICAgICBjbGFzczogeyBzZWxlY3RlZDogbW9udGguaXNTZWxlY3RlZCwgZGlzYWJsZWQ6IG1vbnRoLmlzRGlzYWJsZWQgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF92bS5zZWxlY3RNb250aChtb250aClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW192bS5fdihfdm0uX3MobW9udGgubW9udGgpKV1cbiAgICAgICAgKVxuICAgICAgfSlcbiAgICBdLFxuICAgIDJcbiAgKVxufTtcbnZhciBfX3Z1ZV9zdGF0aWNSZW5kZXJGbnNfXyQyID0gW107XG5fX3Z1ZV9yZW5kZXJfXyQyLl93aXRoU3RyaXBwZWQgPSB0cnVlO1xuXG4gIC8qIHN0eWxlICovXG4gIGNvbnN0IF9fdnVlX2luamVjdF9zdHlsZXNfXyQyID0gdW5kZWZpbmVkO1xuICAvKiBzY29wZWQgKi9cbiAgY29uc3QgX192dWVfc2NvcGVfaWRfXyQyID0gdW5kZWZpbmVkO1xuICAvKiBtb2R1bGUgaWRlbnRpZmllciAqL1xuICBjb25zdCBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fJDIgPSB1bmRlZmluZWQ7XG4gIC8qIGZ1bmN0aW9uYWwgdGVtcGxhdGUgKi9cbiAgY29uc3QgX192dWVfaXNfZnVuY3Rpb25hbF90ZW1wbGF0ZV9fJDIgPSBmYWxzZTtcbiAgLyogc3R5bGUgaW5qZWN0ICovXG4gIFxuICAvKiBzdHlsZSBpbmplY3QgU1NSICovXG4gIFxuXG4gIFxuICB2YXIgUGlja2VyTW9udGggPSBub3JtYWxpemVDb21wb25lbnRfMShcbiAgICB7IHJlbmRlcjogX192dWVfcmVuZGVyX18kMiwgc3RhdGljUmVuZGVyRm5zOiBfX3Z1ZV9zdGF0aWNSZW5kZXJGbnNfXyQyIH0sXG4gICAgX192dWVfaW5qZWN0X3N0eWxlc19fJDIsXG4gICAgX192dWVfc2NyaXB0X18kMixcbiAgICBfX3Z1ZV9zY29wZV9pZF9fJDIsXG4gICAgX192dWVfaXNfZnVuY3Rpb25hbF90ZW1wbGF0ZV9fJDIsXG4gICAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyQyLFxuICAgIHVuZGVmaW5lZCxcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuLy9cbnZhciBzY3JpcHQkMyA9IHtcbiAgcHJvcHM6IHtcbiAgICBzaG93WWVhclZpZXc6IEJvb2xlYW4sXG4gICAgc2VsZWN0ZWREYXRlOiBEYXRlLFxuICAgIHBhZ2VEYXRlOiBEYXRlLFxuICAgIHBhZ2VUaW1lc3RhbXA6IE51bWJlcixcbiAgICBkaXNhYmxlZERhdGVzOiBPYmplY3QsXG4gICAgaGlnaGxpZ2h0ZWQ6IE9iamVjdCxcbiAgICBjYWxlbmRhckNsYXNzOiBbU3RyaW5nLCBPYmplY3QsIEFycmF5XSxcbiAgICBjYWxlbmRhclN0eWxlOiBPYmplY3QsXG4gICAgdHJhbnNsYXRpb246IE9iamVjdCxcbiAgICBpc1J0bDogQm9vbGVhbixcbiAgICBhbGxvd2VkVG9TaG93VmlldzogRnVuY3Rpb24sXG4gICAgdXNlVXRjOiBCb29sZWFuXG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgeWVhcnM6IGZ1bmN0aW9uIHllYXJzKCkge1xuICAgICAgdmFyIGQgPSB0aGlzLnBhZ2VEYXRlO1xuICAgICAgdmFyIHllYXJzID0gW107IC8vIHNldCB1cCBhIG5ldyBkYXRlIG9iamVjdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50ICdwYWdlJzdcblxuICAgICAgdmFyIGRPYmogPSB0aGlzLnVzZVV0YyA/IG5ldyBEYXRlKERhdGUuVVRDKE1hdGguZmxvb3IoZC5nZXRVVENGdWxsWWVhcigpIC8gMTApICogMTAsIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENEYXRlKCkpKSA6IG5ldyBEYXRlKE1hdGguZmxvb3IoZC5nZXRGdWxsWWVhcigpIC8gMTApICogMTAsIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCksIGQuZ2V0SG91cnMoKSwgZC5nZXRNaW51dGVzKCkpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcbiAgICAgICAgeWVhcnMucHVzaCh7XG4gICAgICAgICAgeWVhcjogdGhpcy51dGlscy5nZXRGdWxsWWVhcihkT2JqKSxcbiAgICAgICAgICB0aW1lc3RhbXA6IGRPYmouZ2V0VGltZSgpLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IHRoaXMuaXNTZWxlY3RlZFllYXIoZE9iaiksXG4gICAgICAgICAgaXNEaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkWWVhcihkT2JqKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy51dGlscy5zZXRGdWxsWWVhcihkT2JqLCB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKGRPYmopICsgMSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB5ZWFycztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7U3RyaW5nfVxuICAgICAqL1xuICAgIGdldFBhZ2VEZWNhZGU6IGZ1bmN0aW9uIGdldFBhZ2VEZWNhZGUoKSB7XG4gICAgICB2YXIgZGVjYWRlU3RhcnQgPSBNYXRoLmZsb29yKHRoaXMudXRpbHMuZ2V0RnVsbFllYXIodGhpcy5wYWdlRGF0ZSkgLyAxMCkgKiAxMDtcbiAgICAgIHZhciBkZWNhZGVFbmQgPSBkZWNhZGVTdGFydCArIDk7XG4gICAgICB2YXIgeWVhclN1ZmZpeCA9IHRoaXMudHJhbnNsYXRpb24ueWVhclN1ZmZpeDtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChkZWNhZGVTdGFydCwgXCIgLSBcIikuY29uY2F0KGRlY2FkZUVuZCkuY29uY2F0KHllYXJTdWZmaXgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBJcyB0aGUgbGVmdCBoYW5kIG5hdmlnYXRpb24gYnV0dG9uIGRpc2FibGVkP1xuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNMZWZ0TmF2RGlzYWJsZWQ6IGZ1bmN0aW9uIGlzTGVmdE5hdkRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSdGwgPyB0aGlzLmlzTmV4dERlY2FkZURpc2FibGVkKHRoaXMucGFnZVRpbWVzdGFtcCkgOiB0aGlzLmlzUHJldmlvdXNEZWNhZGVEaXNhYmxlZCh0aGlzLnBhZ2VUaW1lc3RhbXApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBJcyB0aGUgcmlnaHQgaGFuZCBuYXZpZ2F0aW9uIGJ1dHRvbiBkaXNhYmxlZD9cbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAqL1xuICAgIGlzUmlnaHROYXZEaXNhYmxlZDogZnVuY3Rpb24gaXNSaWdodE5hdkRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSdGwgPyB0aGlzLmlzUHJldmlvdXNEZWNhZGVEaXNhYmxlZCh0aGlzLnBhZ2VUaW1lc3RhbXApIDogdGhpcy5pc05leHREZWNhZGVEaXNhYmxlZCh0aGlzLnBhZ2VUaW1lc3RhbXApO1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICB2YXIgY29uc3RydWN0ZWREYXRlVXRpbHMgPSBtYWtlRGF0ZVV0aWxzKHRoaXMudXNlVXRjKTtcbiAgICByZXR1cm4ge1xuICAgICAgdXRpbHM6IGNvbnN0cnVjdGVkRGF0ZVV0aWxzXG4gICAgfTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHNlbGVjdFllYXI6IGZ1bmN0aW9uIHNlbGVjdFllYXIoeWVhcikge1xuICAgICAgaWYgKHllYXIuaXNEaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdFllYXInLCB5ZWFyKTtcbiAgICB9LFxuICAgIGNoYW5nZVllYXI6IGZ1bmN0aW9uIGNoYW5nZVllYXIoaW5jcmVtZW50QnkpIHtcbiAgICAgIHZhciBkYXRlID0gdGhpcy5wYWdlRGF0ZTtcbiAgICAgIHRoaXMudXRpbHMuc2V0RnVsbFllYXIoZGF0ZSwgdGhpcy51dGlscy5nZXRGdWxsWWVhcihkYXRlKSArIGluY3JlbWVudEJ5KTtcbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZWREZWNhZGUnLCBkYXRlKTtcbiAgICB9LFxuICAgIHByZXZpb3VzRGVjYWRlOiBmdW5jdGlvbiBwcmV2aW91c0RlY2FkZSgpIHtcbiAgICAgIGlmICh0aGlzLmlzUHJldmlvdXNEZWNhZGVEaXNhYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFuZ2VZZWFyKC0xMCk7XG4gICAgfSxcbiAgICBpc1ByZXZpb3VzRGVjYWRlRGlzYWJsZWQ6IGZ1bmN0aW9uIGlzUHJldmlvdXNEZWNhZGVEaXNhYmxlZCgpIHtcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZERhdGVzIHx8ICF0aGlzLmRpc2FibGVkRGF0ZXMudG8pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGlzYWJsZWRZZWFyID0gdGhpcy51dGlscy5nZXRGdWxsWWVhcih0aGlzLmRpc2FibGVkRGF0ZXMudG8pO1xuICAgICAgdmFyIGxhc3RZZWFySW5QcmV2aW91c1BhZ2UgPSBNYXRoLmZsb29yKHRoaXMudXRpbHMuZ2V0RnVsbFllYXIodGhpcy5wYWdlRGF0ZSkgLyAxMCkgKiAxMCAtIDE7XG4gICAgICByZXR1cm4gZGlzYWJsZWRZZWFyID4gbGFzdFllYXJJblByZXZpb3VzUGFnZTtcbiAgICB9LFxuICAgIG5leHREZWNhZGU6IGZ1bmN0aW9uIG5leHREZWNhZGUoKSB7XG4gICAgICBpZiAodGhpcy5pc05leHREZWNhZGVEaXNhYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFuZ2VZZWFyKDEwKTtcbiAgICB9LFxuICAgIGlzTmV4dERlY2FkZURpc2FibGVkOiBmdW5jdGlvbiBpc05leHREZWNhZGVEaXNhYmxlZCgpIHtcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZERhdGVzIHx8ICF0aGlzLmRpc2FibGVkRGF0ZXMuZnJvbSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciBkaXNhYmxlZFllYXIgPSB0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKHRoaXMuZGlzYWJsZWREYXRlcy5mcm9tKTtcbiAgICAgIHZhciBmaXJzdFllYXJJbk5leHRQYWdlID0gTWF0aC5jZWlsKHRoaXMudXRpbHMuZ2V0RnVsbFllYXIodGhpcy5wYWdlRGF0ZSkgLyAxMCkgKiAxMDtcbiAgICAgIHJldHVybiBkaXNhYmxlZFllYXIgPCBmaXJzdFllYXJJbk5leHRQYWdlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBzZWxlY3RlZCBkYXRlIGlzIGluIHRoaXMgeWVhclxuICAgICAqIEBwYXJhbSB7RGF0ZX1cbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAqL1xuICAgIGlzU2VsZWN0ZWRZZWFyOiBmdW5jdGlvbiBpc1NlbGVjdGVkWWVhcihkYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGUgJiYgdGhpcy51dGlscy5nZXRGdWxsWWVhcih0aGlzLnNlbGVjdGVkRGF0ZSkgPT09IHRoaXMudXRpbHMuZ2V0RnVsbFllYXIoZGF0ZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgYSB5ZWFyIGlzIGRpc2FibGVkXG4gICAgICogQHBhcmFtIHtEYXRlfVxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNEaXNhYmxlZFllYXI6IGZ1bmN0aW9uIGlzRGlzYWJsZWRZZWFyKGRhdGUpIHtcbiAgICAgIHZhciBkaXNhYmxlZERhdGVzID0gZmFsc2U7XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzID09PSAndW5kZWZpbmVkJyB8fCAhdGhpcy5kaXNhYmxlZERhdGVzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZXMudG8gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZGlzYWJsZWREYXRlcy50bykge1xuICAgICAgICBpZiAodGhpcy51dGlscy5nZXRGdWxsWWVhcihkYXRlKSA8IHRoaXMudXRpbHMuZ2V0RnVsbFllYXIodGhpcy5kaXNhYmxlZERhdGVzLnRvKSkge1xuICAgICAgICAgIGRpc2FibGVkRGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzLmZyb20gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZGlzYWJsZWREYXRlcy5mcm9tKSB7XG4gICAgICAgIGlmICh0aGlzLnV0aWxzLmdldEZ1bGxZZWFyKGRhdGUpID4gdGhpcy51dGlscy5nZXRGdWxsWWVhcih0aGlzLmRpc2FibGVkRGF0ZXMuZnJvbSkpIHtcbiAgICAgICAgICBkaXNhYmxlZERhdGVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlcy5jdXN0b21QcmVkaWN0b3IgPT09ICdmdW5jdGlvbicgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmN1c3RvbVByZWRpY3RvcihkYXRlKSkge1xuICAgICAgICBkaXNhYmxlZERhdGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRpc2FibGVkRGF0ZXM7XG4gICAgfVxuICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXG59O1xuXG4vKiBzY3JpcHQgKi9cbmNvbnN0IF9fdnVlX3NjcmlwdF9fJDMgPSBzY3JpcHQkMztcblxuLyogdGVtcGxhdGUgKi9cbnZhciBfX3Z1ZV9yZW5kZXJfXyQzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzO1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnQ7XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaDtcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dZZWFyVmlldyxcbiAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dZZWFyVmlld1wiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBjbGFzczogW192bS5jYWxlbmRhckNsYXNzLCBcInZkcC1kYXRlcGlja2VyX19jYWxlbmRhclwiXSxcbiAgICAgIHN0eWxlOiBfdm0uY2FsZW5kYXJTdHlsZSxcbiAgICAgIG9uOiB7XG4gICAgICAgIG1vdXNlZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF92bS5fdChcImJlZm9yZUNhbGVuZGFySGVhZGVyXCIpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFwiaGVhZGVyXCIsIFtcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicHJldlwiLFxuICAgICAgICAgICAgY2xhc3M6IHsgZGlzYWJsZWQ6IF92bS5pc0xlZnROYXZEaXNhYmxlZCB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5pc1J0bCA/IF92bS5uZXh0RGVjYWRlKCkgOiBfdm0ucHJldmlvdXNEZWNhZGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW192bS5fdihcIjxcIildXG4gICAgICAgICksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwic3BhblwiLCBbX3ZtLl92KF92bS5fcyhfdm0uZ2V0UGFnZURlY2FkZSkpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm5leHRcIixcbiAgICAgICAgICAgIGNsYXNzOiB7IGRpc2FibGVkOiBfdm0uaXNSaWdodE5hdkRpc2FibGVkIH0sXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgX3ZtLmlzUnRsID8gX3ZtLnByZXZpb3VzRGVjYWRlKCkgOiBfdm0ubmV4dERlY2FkZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbX3ZtLl92KFwiPlwiKV1cbiAgICAgICAgKVxuICAgICAgXSksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLl9sKF92bS55ZWFycywgZnVuY3Rpb24oeWVhcikge1xuICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiB5ZWFyLnRpbWVzdGFtcCxcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImNlbGwgeWVhclwiLFxuICAgICAgICAgICAgY2xhc3M6IHsgc2VsZWN0ZWQ6IHllYXIuaXNTZWxlY3RlZCwgZGlzYWJsZWQ6IHllYXIuaXNEaXNhYmxlZCB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnNlbGVjdFllYXIoeWVhcilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW192bS5fdihfdm0uX3MoeWVhci55ZWFyKSldXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgXSxcbiAgICAyXG4gIClcbn07XG52YXIgX192dWVfc3RhdGljUmVuZGVyRm5zX18kMyA9IFtdO1xuX192dWVfcmVuZGVyX18kMy5fd2l0aFN0cmlwcGVkID0gdHJ1ZTtcblxuICAvKiBzdHlsZSAqL1xuICBjb25zdCBfX3Z1ZV9pbmplY3Rfc3R5bGVzX18kMyA9IHVuZGVmaW5lZDtcbiAgLyogc2NvcGVkICovXG4gIGNvbnN0IF9fdnVlX3Njb3BlX2lkX18kMyA9IHVuZGVmaW5lZDtcbiAgLyogbW9kdWxlIGlkZW50aWZpZXIgKi9cbiAgY29uc3QgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyQzID0gdW5kZWZpbmVkO1xuICAvKiBmdW5jdGlvbmFsIHRlbXBsYXRlICovXG4gIGNvbnN0IF9fdnVlX2lzX2Z1bmN0aW9uYWxfdGVtcGxhdGVfXyQzID0gZmFsc2U7XG4gIC8qIHN0eWxlIGluamVjdCAqL1xuICBcbiAgLyogc3R5bGUgaW5qZWN0IFNTUiAqL1xuICBcblxuICBcbiAgdmFyIFBpY2tlclllYXIgPSBub3JtYWxpemVDb21wb25lbnRfMShcbiAgICB7IHJlbmRlcjogX192dWVfcmVuZGVyX18kMywgc3RhdGljUmVuZGVyRm5zOiBfX3Z1ZV9zdGF0aWNSZW5kZXJGbnNfXyQzIH0sXG4gICAgX192dWVfaW5qZWN0X3N0eWxlc19fJDMsXG4gICAgX192dWVfc2NyaXB0X18kMyxcbiAgICBfX3Z1ZV9zY29wZV9pZF9fJDMsXG4gICAgX192dWVfaXNfZnVuY3Rpb25hbF90ZW1wbGF0ZV9fJDMsXG4gICAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyQzLFxuICAgIHVuZGVmaW5lZCxcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuLy9cbnZhciBzY3JpcHQkNCA9IHtcbiAgY29tcG9uZW50czoge1xuICAgIERhdGVJbnB1dDogRGF0ZUlucHV0LFxuICAgIFBpY2tlckRheTogUGlja2VyRGF5LFxuICAgIFBpY2tlck1vbnRoOiBQaWNrZXJNb250aCxcbiAgICBQaWNrZXJZZWFyOiBQaWNrZXJZZWFyXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gdXRpbHMkMS52YWxpZGF0ZURhdGVJbnB1dCh2YWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbmFtZTogU3RyaW5nLFxuICAgIHJlZk5hbWU6IFN0cmluZyxcbiAgICBpZDogU3RyaW5nLFxuICAgIGZvcm1hdDoge1xuICAgICAgdHlwZTogW1N0cmluZywgRnVuY3Rpb25dLFxuICAgICAgXCJkZWZhdWx0XCI6ICdkZCBNTU0geXl5eSdcbiAgICB9LFxuICAgIGxhbmd1YWdlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBcImRlZmF1bHRcIjogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBlbjtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9wZW5EYXRlOiB7XG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWwpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzJDEudmFsaWRhdGVEYXRlSW5wdXQodmFsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRheUNlbGxDb250ZW50OiBGdW5jdGlvbixcbiAgICBmdWxsTW9udGhOYW1lOiBCb29sZWFuLFxuICAgIGRpc2FibGVkRGF0ZXM6IE9iamVjdCxcbiAgICBoaWdobGlnaHRlZDogT2JqZWN0LFxuICAgIHBsYWNlaG9sZGVyOiBTdHJpbmcsXG4gICAgaW5saW5lOiBCb29sZWFuLFxuICAgIGNhbGVuZGFyQ2xhc3M6IFtTdHJpbmcsIE9iamVjdCwgQXJyYXldLFxuICAgIGlucHV0Q2xhc3M6IFtTdHJpbmcsIE9iamVjdCwgQXJyYXldLFxuICAgIHdyYXBwZXJDbGFzczogW1N0cmluZywgT2JqZWN0LCBBcnJheV0sXG4gICAgbW9uZGF5Rmlyc3Q6IEJvb2xlYW4sXG4gICAgY2xlYXJCdXR0b246IEJvb2xlYW4sXG4gICAgY2xlYXJCdXR0b25JY29uOiBTdHJpbmcsXG4gICAgY2FsZW5kYXJCdXR0b246IEJvb2xlYW4sXG4gICAgY2FsZW5kYXJCdXR0b25JY29uOiBTdHJpbmcsXG4gICAgY2FsZW5kYXJCdXR0b25JY29uQ29udGVudDogU3RyaW5nLFxuICAgIGJvb3RzdHJhcFN0eWxpbmc6IEJvb2xlYW4sXG4gICAgaW5pdGlhbFZpZXc6IFN0cmluZyxcbiAgICBkaXNhYmxlZDogQm9vbGVhbixcbiAgICByZXF1aXJlZDogQm9vbGVhbixcbiAgICB0eXBlYWJsZTogQm9vbGVhbixcbiAgICB1c2VVdGM6IEJvb2xlYW4sXG4gICAgbWluaW11bVZpZXc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIFwiZGVmYXVsdFwiOiAnZGF5J1xuICAgIH0sXG4gICAgbWF4aW11bVZpZXc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIFwiZGVmYXVsdFwiOiAneWVhcidcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgdmFyIHN0YXJ0RGF0ZSA9IHRoaXMub3BlbkRhdGUgPyBuZXcgRGF0ZSh0aGlzLm9wZW5EYXRlKSA6IG5ldyBEYXRlKCk7XG4gICAgdmFyIGNvbnN0cnVjdGVkRGF0ZVV0aWxzID0gbWFrZURhdGVVdGlscyh0aGlzLnVzZVV0Yyk7XG4gICAgdmFyIHBhZ2VUaW1lc3RhbXAgPSBjb25zdHJ1Y3RlZERhdGVVdGlscy5zZXREYXRlKHN0YXJ0RGF0ZSwgMSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8qXG4gICAgICAgKiBWdWUgY2Fubm90IG9ic2VydmUgY2hhbmdlcyB0byBhIERhdGUgT2JqZWN0IHNvIGRhdGUgbXVzdCBiZSBzdG9yZWQgYXMgYSB0aW1lc3RhbXBcbiAgICAgICAqIFRoaXMgcmVwcmVzZW50cyB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjdXJyZW50IHZpZXdpbmcgbW9udGhcbiAgICAgICAqIHtOdW1iZXJ9XG4gICAgICAgKi9cbiAgICAgIHBhZ2VUaW1lc3RhbXA6IHBhZ2VUaW1lc3RhbXAsXG5cbiAgICAgIC8qXG4gICAgICAgKiBTZWxlY3RlZCBEYXRlXG4gICAgICAgKiB7RGF0ZX1cbiAgICAgICAqL1xuICAgICAgc2VsZWN0ZWREYXRlOiBudWxsLFxuXG4gICAgICAvKlxuICAgICAgICogRmxhZ3MgdG8gc2hvdyBjYWxlbmRhciB2aWV3c1xuICAgICAgICoge0Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIHNob3dEYXlWaWV3OiBmYWxzZSxcbiAgICAgIHNob3dNb250aFZpZXc6IGZhbHNlLFxuICAgICAgc2hvd1llYXJWaWV3OiBmYWxzZSxcblxuICAgICAgLypcbiAgICAgICAqIFBvc2l0aW9uaW5nXG4gICAgICAgKi9cbiAgICAgIGNhbGVuZGFySGVpZ2h0OiAwLFxuICAgICAgcmVzZXRUeXBlZERhdGU6IG5ldyBEYXRlKCksXG4gICAgICB1dGlsczogY29uc3RydWN0ZWREYXRlVXRpbHNcbiAgICB9O1xuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShfdmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUoX3ZhbHVlKTtcbiAgICB9LFxuICAgIG9wZW5EYXRlOiBmdW5jdGlvbiBvcGVuRGF0ZSgpIHtcbiAgICAgIHRoaXMuc2V0UGFnZURhdGUoKTtcbiAgICB9LFxuICAgIGluaXRpYWxWaWV3OiBmdW5jdGlvbiBpbml0aWFsVmlldygpIHtcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFZpZXcoKTtcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY29tcHV0ZWRJbml0aWFsVmlldzogZnVuY3Rpb24gY29tcHV0ZWRJbml0aWFsVmlldygpIHtcbiAgICAgIGlmICghdGhpcy5pbml0aWFsVmlldykge1xuICAgICAgICByZXR1cm4gdGhpcy5taW5pbXVtVmlldztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbFZpZXc7XG4gICAgfSxcbiAgICBwYWdlRGF0ZTogZnVuY3Rpb24gcGFnZURhdGUoKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5wYWdlVGltZXN0YW1wKTtcbiAgICB9LFxuICAgIHRyYW5zbGF0aW9uOiBmdW5jdGlvbiB0cmFuc2xhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlO1xuICAgIH0sXG4gICAgY2FsZW5kYXJTdHlsZTogZnVuY3Rpb24gY2FsZW5kYXJTdHlsZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBvc2l0aW9uOiB0aGlzLmlzSW5saW5lID8gJ3N0YXRpYycgOiB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgfSxcbiAgICBpc09wZW46IGZ1bmN0aW9uIGlzT3BlbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3dEYXlWaWV3IHx8IHRoaXMuc2hvd01vbnRoVmlldyB8fCB0aGlzLnNob3dZZWFyVmlldztcbiAgICB9LFxuICAgIGlzSW5saW5lOiBmdW5jdGlvbiBpc0lubGluZSgpIHtcbiAgICAgIHJldHVybiAhIXRoaXMuaW5saW5lO1xuICAgIH0sXG4gICAgaXNSdGw6IGZ1bmN0aW9uIGlzUnRsKCkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24ucnRsID09PSB0cnVlO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8qKlxuICAgICAqIENhbGxlZCBpbiB0aGUgZXZlbnQgdGhhdCB0aGUgdXNlciBuYXZpZ2F0ZXMgdG8gZGF0ZSBwYWdlcyBhbmRcbiAgICAgKiBjbG9zZXMgdGhlIHBpY2tlciB3aXRob3V0IHNlbGVjdGluZyBhIGRhdGUuXG4gICAgICovXG4gICAgcmVzZXREZWZhdWx0UGFnZURhdGU6IGZ1bmN0aW9uIHJlc2V0RGVmYXVsdFBhZ2VEYXRlKCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuc2V0UGFnZURhdGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFBhZ2VEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRWZmZWN0aXZlbHkgYSB0b2dnbGUgdG8gc2hvdy9oaWRlIHRoZSBjYWxlbmRhclxuICAgICAqIEByZXR1cm4ge21peGVkfVxuICAgICAqL1xuICAgIHNob3dDYWxlbmRhcjogZnVuY3Rpb24gc2hvd0NhbGVuZGFyKCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc0lubGluZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9zZSh0cnVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRJbml0aWFsVmlldygpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBpbml0aWFsIHBpY2tlciBwYWdlIHZpZXc6IGRheSwgbW9udGggb3IgeWVhclxuICAgICAqL1xuICAgIHNldEluaXRpYWxWaWV3OiBmdW5jdGlvbiBzZXRJbml0aWFsVmlldygpIHtcbiAgICAgIHZhciBpbml0aWFsVmlldyA9IHRoaXMuY29tcHV0ZWRJbml0aWFsVmlldztcblxuICAgICAgaWYgKCF0aGlzLmFsbG93ZWRUb1Nob3dWaWV3KGluaXRpYWxWaWV3KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbml0aWFsVmlldyAnXCIuY29uY2F0KHRoaXMuaW5pdGlhbFZpZXcsIFwiJyBjYW5ub3QgYmUgcmVuZGVyZWQgYmFzZWQgb24gbWluaW11bSAnXCIpLmNvbmNhdCh0aGlzLm1pbmltdW1WaWV3LCBcIicgYW5kIG1heGltdW0gJ1wiKS5jb25jYXQodGhpcy5tYXhpbXVtVmlldywgXCInXCIpKTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChpbml0aWFsVmlldykge1xuICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICB0aGlzLnNob3dZZWFyQ2FsZW5kYXIoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgdGhpcy5zaG93TW9udGhDYWxlbmRhcigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhpcy5zaG93RGF5Q2FsZW5kYXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQXJlIHdlIGFsbG93ZWQgdG8gc2hvdyBhIHNwZWNpZmljIHBpY2tlciB2aWV3P1xuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2aWV3XG4gICAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBhbGxvd2VkVG9TaG93VmlldzogZnVuY3Rpb24gYWxsb3dlZFRvU2hvd1ZpZXcodmlldykge1xuICAgICAgdmFyIHZpZXdzID0gWydkYXknLCAnbW9udGgnLCAneWVhciddO1xuICAgICAgdmFyIG1pbmltdW1WaWV3SW5kZXggPSB2aWV3cy5pbmRleE9mKHRoaXMubWluaW11bVZpZXcpO1xuICAgICAgdmFyIG1heGltdW1WaWV3SW5kZXggPSB2aWV3cy5pbmRleE9mKHRoaXMubWF4aW11bVZpZXcpO1xuICAgICAgdmFyIHZpZXdJbmRleCA9IHZpZXdzLmluZGV4T2Yodmlldyk7XG4gICAgICByZXR1cm4gdmlld0luZGV4ID49IG1pbmltdW1WaWV3SW5kZXggJiYgdmlld0luZGV4IDw9IG1heGltdW1WaWV3SW5kZXg7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIGRheSBwaWNrZXJcbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAqL1xuICAgIHNob3dEYXlDYWxlbmRhcjogZnVuY3Rpb24gc2hvd0RheUNhbGVuZGFyKCkge1xuICAgICAgaWYgKCF0aGlzLmFsbG93ZWRUb1Nob3dWaWV3KCdkYXknKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHRoaXMuc2hvd0RheVZpZXcgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIG1vbnRoIHBpY2tlclxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgc2hvd01vbnRoQ2FsZW5kYXI6IGZ1bmN0aW9uIHNob3dNb250aENhbGVuZGFyKCkge1xuICAgICAgaWYgKCF0aGlzLmFsbG93ZWRUb1Nob3dWaWV3KCdtb250aCcpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgdGhpcy5zaG93TW9udGhWaWV3ID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRoZSB5ZWFyIHBpY2tlclxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgc2hvd1llYXJDYWxlbmRhcjogZnVuY3Rpb24gc2hvd1llYXJDYWxlbmRhcigpIHtcbiAgICAgIGlmICghdGhpcy5hbGxvd2VkVG9TaG93VmlldygneWVhcicpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgdGhpcy5zaG93WWVhclZpZXcgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgc2VsZWN0ZWQgZGF0ZVxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB0aW1lc3RhbXBcbiAgICAgKi9cbiAgICBzZXREYXRlOiBmdW5jdGlvbiBzZXREYXRlKHRpbWVzdGFtcCkge1xuICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuICAgICAgdGhpcy5zZXRQYWdlRGF0ZShkYXRlKTtcbiAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdGVkJywgZGF0ZSk7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIGRhdGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDbGVhciB0aGUgc2VsZWN0ZWQgZGF0ZVxuICAgICAqL1xuICAgIGNsZWFyRGF0ZTogZnVuY3Rpb24gY2xlYXJEYXRlKCkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBudWxsO1xuICAgICAgdGhpcy5zZXRQYWdlRGF0ZSgpO1xuICAgICAgdGhpcy4kZW1pdCgnc2VsZWN0ZWQnLCBudWxsKTtcbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgbnVsbCk7XG4gICAgICB0aGlzLiRlbWl0KCdjbGVhcmVkJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRlXG4gICAgICovXG4gICAgc2VsZWN0RGF0ZTogZnVuY3Rpb24gc2VsZWN0RGF0ZShkYXRlKSB7XG4gICAgICB0aGlzLnNldERhdGUoZGF0ZS50aW1lc3RhbXApO1xuXG4gICAgICBpZiAoIXRoaXMuaXNJbmxpbmUpIHtcbiAgICAgICAgdGhpcy5jbG9zZSh0cnVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXNldFR5cGVkRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRlXG4gICAgICovXG4gICAgc2VsZWN0RGlzYWJsZWREYXRlOiBmdW5jdGlvbiBzZWxlY3REaXNhYmxlZERhdGUoZGF0ZSkge1xuICAgICAgdGhpcy4kZW1pdCgnc2VsZWN0ZWREaXNhYmxlZCcsIGRhdGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gbW9udGhcbiAgICAgKi9cbiAgICBzZWxlY3RNb250aDogZnVuY3Rpb24gc2VsZWN0TW9udGgobW9udGgpIHtcbiAgICAgIHZhciBkYXRlID0gbmV3IERhdGUobW9udGgudGltZXN0YW1wKTtcblxuICAgICAgaWYgKHRoaXMuYWxsb3dlZFRvU2hvd1ZpZXcoJ2RheScpKSB7XG4gICAgICAgIHRoaXMuc2V0UGFnZURhdGUoZGF0ZSk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZWRNb250aCcsIG1vbnRoKTtcbiAgICAgICAgdGhpcy5zaG93RGF5Q2FsZW5kYXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0RGF0ZShtb250aCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB5ZWFyXG4gICAgICovXG4gICAgc2VsZWN0WWVhcjogZnVuY3Rpb24gc2VsZWN0WWVhcih5ZWFyKSB7XG4gICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHllYXIudGltZXN0YW1wKTtcblxuICAgICAgaWYgKHRoaXMuYWxsb3dlZFRvU2hvd1ZpZXcoJ21vbnRoJykpIHtcbiAgICAgICAgdGhpcy5zZXRQYWdlRGF0ZShkYXRlKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlZFllYXInLCB5ZWFyKTtcbiAgICAgICAgdGhpcy5zaG93TW9udGhDYWxlbmRhcigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3REYXRlKHllYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGRhdGVwaWNrZXIgdmFsdWVcbiAgICAgKiBAcGFyYW0ge0RhdGV8U3RyaW5nfE51bWJlcnxudWxsfSBkYXRlXG4gICAgICovXG4gICAgc2V0VmFsdWU6IGZ1bmN0aW9uIHNldFZhbHVlKGRhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHZhciBwYXJzZWQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgZGF0ZSA9IGlzTmFOKHBhcnNlZC52YWx1ZU9mKCkpID8gbnVsbCA6IHBhcnNlZDtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgIHRoaXMuc2V0UGFnZURhdGUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBudWxsO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0ZTtcbiAgICAgIHRoaXMuc2V0UGFnZURhdGUoZGF0ZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGRhdGUgdGhhdCB0aGUgY2FsZW5kYXIgc2hvdWxkIG9wZW4gb25cbiAgICAgKi9cbiAgICBzZXRQYWdlRGF0ZTogZnVuY3Rpb24gc2V0UGFnZURhdGUoZGF0ZSkge1xuICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5EYXRlKSB7XG4gICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKHRoaXMub3BlbkRhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMucGFnZVRpbWVzdGFtcCA9IHRoaXMudXRpbHMuc2V0RGF0ZShuZXcgRGF0ZShkYXRlKSwgMSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYSBtb250aCBjaGFuZ2UgZnJvbSB0aGUgZGF5IHBpY2tlclxuICAgICAqL1xuICAgIGhhbmRsZUNoYW5nZWRNb250aEZyb21EYXlQaWNrZXI6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZWRNb250aEZyb21EYXlQaWNrZXIoZGF0ZSkge1xuICAgICAgdGhpcy5zZXRQYWdlRGF0ZShkYXRlKTtcbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZWRNb250aCcsIGRhdGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGRhdGUgZnJvbSBhIHR5cGVkRGF0ZSBldmVudFxuICAgICAqL1xuICAgIHNldFR5cGVkRGF0ZTogZnVuY3Rpb24gc2V0VHlwZWREYXRlKGRhdGUpIHtcbiAgICAgIHRoaXMuc2V0RGF0ZShkYXRlLmdldFRpbWUoKSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENsb3NlIGFsbCBjYWxlbmRhciBsYXllcnNcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGVtaXRFdmVudCAtIGVtaXQgY2xvc2UgZXZlbnRcbiAgICAgKi9cbiAgICBjbG9zZTogZnVuY3Rpb24gY2xvc2UoZW1pdEV2ZW50KSB7XG4gICAgICB0aGlzLnNob3dEYXlWaWV3ID0gdGhpcy5zaG93TW9udGhWaWV3ID0gdGhpcy5zaG93WWVhclZpZXcgPSBmYWxzZTtcblxuICAgICAgaWYgKCF0aGlzLmlzSW5saW5lKSB7XG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdjbG9zZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgdGhlIGNvbXBvbmVudFxuICAgICAqL1xuICAgIGluaXQ6IGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0lubGluZSkge1xuICAgICAgICB0aGlzLnNldEluaXRpYWxWaWV3KCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuO1xuXG52YXIgaXNPbGRJRSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9tc2llIFs2LTldXFxcXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTtcbmZ1bmN0aW9uIGNyZWF0ZUluamVjdG9yKGNvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpZCwgc3R5bGUpIHtcbiAgICByZXR1cm4gYWRkU3R5bGUoaWQsIHN0eWxlKTtcbiAgfTtcbn1cbnZhciBIRUFEID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xudmFyIHN0eWxlcyA9IHt9O1xuXG5mdW5jdGlvbiBhZGRTdHlsZShpZCwgY3NzKSB7XG4gIHZhciBncm91cCA9IGlzT2xkSUUgPyBjc3MubWVkaWEgfHwgJ2RlZmF1bHQnIDogaWQ7XG4gIHZhciBzdHlsZSA9IHN0eWxlc1tncm91cF0gfHwgKHN0eWxlc1tncm91cF0gPSB7XG4gICAgaWRzOiBuZXcgU2V0KCksXG4gICAgc3R5bGVzOiBbXVxuICB9KTtcblxuICBpZiAoIXN0eWxlLmlkcy5oYXMoaWQpKSB7XG4gICAgc3R5bGUuaWRzLmFkZChpZCk7XG4gICAgdmFyIGNvZGUgPSBjc3Muc291cmNlO1xuXG4gICAgaWYgKGNzcy5tYXApIHtcbiAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZGV2dG9vbHMvZG9jcy9qYXZhc2NyaXB0LWRlYnVnZ2luZ1xuICAgICAgLy8gdGhpcyBtYWtlcyBzb3VyY2UgbWFwcyBpbnNpZGUgc3R5bGUgdGFncyB3b3JrIHByb3Blcmx5IGluIENocm9tZVxuICAgICAgY29kZSArPSAnXFxuLyojIHNvdXJjZVVSTD0nICsgY3NzLm1hcC5zb3VyY2VzWzBdICsgJyAqLyc7IC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG5cbiAgICAgIGNvZGUgKz0gJ1xcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJyArIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzcy5tYXApKSkpICsgJyAqLyc7XG4gICAgfVxuXG4gICAgaWYgKCFzdHlsZS5lbGVtZW50KSB7XG4gICAgICBzdHlsZS5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgIHN0eWxlLmVsZW1lbnQudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICBpZiAoY3NzLm1lZGlhKSBzdHlsZS5lbGVtZW50LnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBjc3MubWVkaWEpO1xuICAgICAgSEVBRC5hcHBlbmRDaGlsZChzdHlsZS5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAoJ3N0eWxlU2hlZXQnIGluIHN0eWxlLmVsZW1lbnQpIHtcbiAgICAgIHN0eWxlLnN0eWxlcy5wdXNoKGNvZGUpO1xuICAgICAgc3R5bGUuZWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBzdHlsZS5zdHlsZXMuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgaW5kZXggPSBzdHlsZS5pZHMuc2l6ZSAtIDE7XG4gICAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb2RlKTtcbiAgICAgIHZhciBub2RlcyA9IHN0eWxlLmVsZW1lbnQuY2hpbGROb2RlcztcbiAgICAgIGlmIChub2Rlc1tpbmRleF0pIHN0eWxlLmVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZXNbaW5kZXhdKTtcbiAgICAgIGlmIChub2Rlcy5sZW5ndGgpIHN0eWxlLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRleHROb2RlLCBub2Rlc1tpbmRleF0pO2Vsc2Ugc3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBicm93c2VyID0gY3JlYXRlSW5qZWN0b3I7XG5cbi8qIHNjcmlwdCAqL1xuY29uc3QgX192dWVfc2NyaXB0X18kNCA9IHNjcmlwdCQ0O1xuXG4vKiB0ZW1wbGF0ZSAqL1xudmFyIF9fdnVlX3JlbmRlcl9fJDQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXM7XG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudDtcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oO1xuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJ2ZHAtZGF0ZXBpY2tlclwiLFxuICAgICAgY2xhc3M6IFtfdm0ud3JhcHBlckNsYXNzLCBfdm0uaXNSdGwgPyBcInJ0bFwiIDogXCJcIl1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRhdGUtaW5wdXRcIixcbiAgICAgICAge1xuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGU6IF92bS5zZWxlY3RlZERhdGUsXG4gICAgICAgICAgICByZXNldFR5cGVkRGF0ZTogX3ZtLnJlc2V0VHlwZWREYXRlLFxuICAgICAgICAgICAgZm9ybWF0OiBfdm0uZm9ybWF0LFxuICAgICAgICAgICAgdHJhbnNsYXRpb246IF92bS50cmFuc2xhdGlvbixcbiAgICAgICAgICAgIGlubGluZTogX3ZtLmlubGluZSxcbiAgICAgICAgICAgIGlkOiBfdm0uaWQsXG4gICAgICAgICAgICBuYW1lOiBfdm0ubmFtZSxcbiAgICAgICAgICAgIHJlZk5hbWU6IF92bS5yZWZOYW1lLFxuICAgICAgICAgICAgb3BlbkRhdGU6IF92bS5vcGVuRGF0ZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBpbnB1dENsYXNzOiBfdm0uaW5wdXRDbGFzcyxcbiAgICAgICAgICAgIHR5cGVhYmxlOiBfdm0udHlwZWFibGUsXG4gICAgICAgICAgICBjbGVhckJ1dHRvbjogX3ZtLmNsZWFyQnV0dG9uLFxuICAgICAgICAgICAgY2xlYXJCdXR0b25JY29uOiBfdm0uY2xlYXJCdXR0b25JY29uLFxuICAgICAgICAgICAgY2FsZW5kYXJCdXR0b246IF92bS5jYWxlbmRhckJ1dHRvbixcbiAgICAgICAgICAgIGNhbGVuZGFyQnV0dG9uSWNvbjogX3ZtLmNhbGVuZGFyQnV0dG9uSWNvbixcbiAgICAgICAgICAgIGNhbGVuZGFyQnV0dG9uSWNvbkNvbnRlbnQ6IF92bS5jYWxlbmRhckJ1dHRvbkljb25Db250ZW50LFxuICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5kaXNhYmxlZCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBfdm0ucmVxdWlyZWQsXG4gICAgICAgICAgICBib290c3RyYXBTdHlsaW5nOiBfdm0uYm9vdHN0cmFwU3R5bGluZyxcbiAgICAgICAgICAgIFwidXNlLXV0Y1wiOiBfdm0udXNlVXRjXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgc2hvd0NhbGVuZGFyOiBfdm0uc2hvd0NhbGVuZGFyLFxuICAgICAgICAgICAgY2xvc2VDYWxlbmRhcjogX3ZtLmNsb3NlLFxuICAgICAgICAgICAgdHlwZWREYXRlOiBfdm0uc2V0VHlwZWREYXRlLFxuICAgICAgICAgICAgY2xlYXJEYXRlOiBfdm0uY2xlYXJEYXRlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbX3ZtLl90KFwiYWZ0ZXJEYXRlSW5wdXRcIiwgbnVsbCwgeyBzbG90OiBcImFmdGVyRGF0ZUlucHV0XCIgfSldLFxuICAgICAgICAyXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5hbGxvd2VkVG9TaG93VmlldyhcImRheVwiKVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJwaWNrZXItZGF5XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgcGFnZURhdGU6IF92bS5wYWdlRGF0ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGU6IF92bS5zZWxlY3RlZERhdGUsXG4gICAgICAgICAgICAgICAgc2hvd0RheVZpZXc6IF92bS5zaG93RGF5VmlldyxcbiAgICAgICAgICAgICAgICBmdWxsTW9udGhOYW1lOiBfdm0uZnVsbE1vbnRoTmFtZSxcbiAgICAgICAgICAgICAgICBhbGxvd2VkVG9TaG93VmlldzogX3ZtLmFsbG93ZWRUb1Nob3dWaWV3LFxuICAgICAgICAgICAgICAgIGRpc2FibGVkRGF0ZXM6IF92bS5kaXNhYmxlZERhdGVzLFxuICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkOiBfdm0uaGlnaGxpZ2h0ZWQsXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJDbGFzczogX3ZtLmNhbGVuZGFyQ2xhc3MsXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJTdHlsZTogX3ZtLmNhbGVuZGFyU3R5bGUsXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb246IF92bS50cmFuc2xhdGlvbixcbiAgICAgICAgICAgICAgICBwYWdlVGltZXN0YW1wOiBfdm0ucGFnZVRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICBpc1J0bDogX3ZtLmlzUnRsLFxuICAgICAgICAgICAgICAgIG1vbmRheUZpcnN0OiBfdm0ubW9uZGF5Rmlyc3QsXG4gICAgICAgICAgICAgICAgZGF5Q2VsbENvbnRlbnQ6IF92bS5kYXlDZWxsQ29udGVudCxcbiAgICAgICAgICAgICAgICBcInVzZS11dGNcIjogX3ZtLnVzZVV0Y1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGNoYW5nZWRNb250aDogX3ZtLmhhbmRsZUNoYW5nZWRNb250aEZyb21EYXlQaWNrZXIsXG4gICAgICAgICAgICAgICAgc2VsZWN0RGF0ZTogX3ZtLnNlbGVjdERhdGUsXG4gICAgICAgICAgICAgICAgc2hvd01vbnRoQ2FsZW5kYXI6IF92bS5zaG93TW9udGhDYWxlbmRhcixcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERpc2FibGVkOiBfdm0uc2VsZWN0RGlzYWJsZWREYXRlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5fdChcImJlZm9yZUNhbGVuZGFySGVhZGVyXCIsIG51bGwsIHtcbiAgICAgICAgICAgICAgICBzbG90OiBcImJlZm9yZUNhbGVuZGFySGVhZGVyXCJcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5hbGxvd2VkVG9TaG93VmlldyhcIm1vbnRoXCIpXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcInBpY2tlci1tb250aFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHBhZ2VEYXRlOiBfdm0ucGFnZURhdGUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlOiBfdm0uc2VsZWN0ZWREYXRlLFxuICAgICAgICAgICAgICAgIHNob3dNb250aFZpZXc6IF92bS5zaG93TW9udGhWaWV3LFxuICAgICAgICAgICAgICAgIGFsbG93ZWRUb1Nob3dWaWV3OiBfdm0uYWxsb3dlZFRvU2hvd1ZpZXcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWREYXRlczogX3ZtLmRpc2FibGVkRGF0ZXMsXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJDbGFzczogX3ZtLmNhbGVuZGFyQ2xhc3MsXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJTdHlsZTogX3ZtLmNhbGVuZGFyU3R5bGUsXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb246IF92bS50cmFuc2xhdGlvbixcbiAgICAgICAgICAgICAgICBpc1J0bDogX3ZtLmlzUnRsLFxuICAgICAgICAgICAgICAgIFwidXNlLXV0Y1wiOiBfdm0udXNlVXRjXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgc2VsZWN0TW9udGg6IF92bS5zZWxlY3RNb250aCxcbiAgICAgICAgICAgICAgICBzaG93WWVhckNhbGVuZGFyOiBfdm0uc2hvd1llYXJDYWxlbmRhcixcbiAgICAgICAgICAgICAgICBjaGFuZ2VkWWVhcjogX3ZtLnNldFBhZ2VEYXRlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5fdChcImJlZm9yZUNhbGVuZGFySGVhZGVyXCIsIG51bGwsIHtcbiAgICAgICAgICAgICAgICBzbG90OiBcImJlZm9yZUNhbGVuZGFySGVhZGVyXCJcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5hbGxvd2VkVG9TaG93VmlldyhcInllYXJcIilcbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwicGlja2VyLXllYXJcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBwYWdlRGF0ZTogX3ZtLnBhZ2VEYXRlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZTogX3ZtLnNlbGVjdGVkRGF0ZSxcbiAgICAgICAgICAgICAgICBzaG93WWVhclZpZXc6IF92bS5zaG93WWVhclZpZXcsXG4gICAgICAgICAgICAgICAgYWxsb3dlZFRvU2hvd1ZpZXc6IF92bS5hbGxvd2VkVG9TaG93VmlldyxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZERhdGVzOiBfdm0uZGlzYWJsZWREYXRlcyxcbiAgICAgICAgICAgICAgICBjYWxlbmRhckNsYXNzOiBfdm0uY2FsZW5kYXJDbGFzcyxcbiAgICAgICAgICAgICAgICBjYWxlbmRhclN0eWxlOiBfdm0uY2FsZW5kYXJTdHlsZSxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbjogX3ZtLnRyYW5zbGF0aW9uLFxuICAgICAgICAgICAgICAgIGlzUnRsOiBfdm0uaXNSdGwsXG4gICAgICAgICAgICAgICAgXCJ1c2UtdXRjXCI6IF92bS51c2VVdGNcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb246IHsgc2VsZWN0WWVhcjogX3ZtLnNlbGVjdFllYXIsIGNoYW5nZWREZWNhZGU6IF92bS5zZXRQYWdlRGF0ZSB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0uX3QoXCJiZWZvcmVDYWxlbmRhckhlYWRlclwiLCBudWxsLCB7XG4gICAgICAgICAgICAgICAgc2xvdDogXCJiZWZvcmVDYWxlbmRhckhlYWRlclwiXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF0sXG4gICAgMVxuICApXG59O1xudmFyIF9fdnVlX3N0YXRpY1JlbmRlckZuc19fJDQgPSBbXTtcbl9fdnVlX3JlbmRlcl9fJDQuX3dpdGhTdHJpcHBlZCA9IHRydWU7XG5cbiAgLyogc3R5bGUgKi9cbiAgY29uc3QgX192dWVfaW5qZWN0X3N0eWxlc19fJDQgPSBmdW5jdGlvbiAoaW5qZWN0KSB7XG4gICAgaWYgKCFpbmplY3QpIHJldHVyblxuICAgIGluamVjdChcImRhdGEtdi02NGNhMmJiNV8wXCIsIHsgc291cmNlOiBcIi5ydGwge1xcbiAgZGlyZWN0aW9uOiBydGw7XFxufVxcbi52ZHAtZGF0ZXBpY2tlciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbn1cXG4udmRwLWRhdGVwaWNrZXIgKiB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDEwMDtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICB3aWR0aDogMzAwcHg7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciBzcGFuIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdpZHRoOiA3MS40Mjg1NzE0Mjg1NzE0MyU7XFxuICBmbG9hdDogbGVmdDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnByZXYsXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLm5leHQge1xcbiAgd2lkdGg6IDE0LjI4NTcxNDI4NTcxNDI4NiU7XFxuICBmbG9hdDogbGVmdDtcXG4gIHRleHQtaW5kZW50OiAtMTAwMDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnByZXY6YWZ0ZXIsXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLm5leHQ6YWZ0ZXIge1xcbiAgY29udGVudDogJyc7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiA1MCU7XFxuICB0b3A6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpO1xcbiAgYm9yZGVyOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgaGVhZGVyIC5wcmV2OmFmdGVyIHtcXG4gIGJvcmRlci1yaWdodDogMTBweCBzb2xpZCAjMDAwO1xcbiAgbWFyZ2luLWxlZnQ6IC01cHg7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgaGVhZGVyIC5wcmV2LmRpc2FibGVkOmFmdGVyIHtcXG4gIGJvcmRlci1yaWdodDogMTBweCBzb2xpZCAjZGRkO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAubmV4dDphZnRlciB7XFxuICBib3JkZXItbGVmdDogMTBweCBzb2xpZCAjMDAwO1xcbiAgbWFyZ2luLWxlZnQ6IDVweDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLm5leHQuZGlzYWJsZWQ6YWZ0ZXIge1xcbiAgYm9yZGVyLWxlZnQ6IDEwcHggc29saWQgI2RkZDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnByZXY6bm90KC5kaXNhYmxlZCksXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLm5leHQ6bm90KC5kaXNhYmxlZCksXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnVwOm5vdCguZGlzYWJsZWQpIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnByZXY6bm90KC5kaXNhYmxlZCk6aG92ZXIsXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLm5leHQ6bm90KC5kaXNhYmxlZCk6aG92ZXIsXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnVwOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6ICNlZWU7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmRpc2FibGVkIHtcXG4gIGNvbG9yOiAjZGRkO1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5mbGV4LXJ0bCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IGluaGVyaXQ7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGwge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcGFkZGluZzogMCA1cHg7XFxuICB3aWR0aDogMTQuMjg1NzE0Mjg1NzE0Mjg2JTtcXG4gIGhlaWdodDogNDBweDtcXG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsOm5vdCguYmxhbmspOm5vdCguZGlzYWJsZWQpLmRheSxcXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsOm5vdCguYmxhbmspOm5vdCguZGlzYWJsZWQpLm1vbnRoLFxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGw6bm90KC5ibGFuayk6bm90KC5kaXNhYmxlZCkueWVhciB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGw6bm90KC5ibGFuayk6bm90KC5kaXNhYmxlZCkuZGF5OmhvdmVyLFxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGw6bm90KC5ibGFuayk6bm90KC5kaXNhYmxlZCkubW9udGg6aG92ZXIsXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbDpub3QoLmJsYW5rKTpub3QoLmRpc2FibGVkKS55ZWFyOmhvdmVyIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICM0YmQ7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGwuc2VsZWN0ZWQge1xcbiAgYmFja2dyb3VuZDogIzRiZDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbC5zZWxlY3RlZDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiAjNGJkO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsLnNlbGVjdGVkLmhpZ2hsaWdodGVkIHtcXG4gIGJhY2tncm91bmQ6ICM0YmQ7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGwuaGlnaGxpZ2h0ZWQge1xcbiAgYmFja2dyb3VuZDogI2NhZTVlZDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbC5oaWdobGlnaHRlZC5kaXNhYmxlZCB7XFxuICBjb2xvcjogI2EzYTNhMztcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbC5ncmV5IHtcXG4gIGNvbG9yOiAjODg4O1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsLmdyZXk6aG92ZXIge1xcbiAgYmFja2dyb3VuZDogaW5oZXJpdDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbC5kYXktaGVhZGVyIHtcXG4gIGZvbnQtc2l6ZTogNzUlO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIGN1cnNvcjogaW5oZXJpdDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbC5kYXktaGVhZGVyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6IGluaGVyaXQ7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLm1vbnRoLFxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLnllYXIge1xcbiAgd2lkdGg6IDMzLjMzMyU7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2xlYXItYnV0dG9uLFxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXItYnV0dG9uIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jbGVhci1idXR0b24uZGlzYWJsZWQsXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhci1idXR0b24uZGlzYWJsZWQge1xcbiAgY29sb3I6ICM5OTk7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxufVxcblwiLCBtYXA6IHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIkRhdGVwaWNrZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0UsY0FBYztBQUNoQjtBQUNBO0VBQ0Usa0JBQWtCO0VBQ2xCLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0Usc0JBQXNCO0FBQ3hCO0FBQ0E7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixZQUFZO0VBQ1osc0JBQXNCO0FBQ3hCO0FBQ0E7RUFDRSxjQUFjO0VBQ2QsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLHlCQUF5QjtFQUN6QixXQUFXO0FBQ2I7QUFDQTs7RUFFRSwwQkFBMEI7RUFDMUIsV0FBVztFQUNYLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7QUFDQTs7RUFFRSxXQUFXO0VBQ1gsa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCxRQUFRO0VBQ1IsNENBQTRDO0VBQzVDLDZCQUE2QjtBQUMvQjtBQUNBO0VBQ0UsNkJBQTZCO0VBQzdCLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0UsNkJBQTZCO0FBQy9CO0FBQ0E7RUFDRSw0QkFBNEI7RUFDNUIsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSw0QkFBNEI7QUFDOUI7QUFDQTs7O0VBR0UsZUFBZTtBQUNqQjtBQUNBOzs7RUFHRSxnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLFdBQVc7RUFDWCxlQUFlO0FBQ2pCO0FBQ0E7RUFDRSxhQUFhO0VBQ2IsY0FBYztFQUNkLGVBQWU7QUFDakI7QUFDQTtFQUNFLHFCQUFxQjtFQUNyQixjQUFjO0VBQ2QsMEJBQTBCO0VBQzFCLFlBQVk7RUFDWixpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLHNCQUFzQjtFQUN0Qiw2QkFBNkI7QUFDL0I7QUFDQTs7O0VBR0UsZUFBZTtBQUNqQjtBQUNBOzs7RUFHRSxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0UsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSxnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLG1CQUFtQjtBQUNyQjtBQUNBO0VBQ0UsY0FBYztBQUNoQjtBQUNBO0VBQ0UsV0FBVztBQUNiO0FBQ0E7RUFDRSxtQkFBbUI7QUFDckI7QUFDQTtFQUNFLGNBQWM7RUFDZCxtQkFBbUI7RUFDbkIsZUFBZTtBQUNqQjtBQUNBO0VBQ0UsbUJBQW1CO0FBQ3JCO0FBQ0E7O0VBRUUsY0FBYztBQUNoQjtBQUNBOztFQUVFLGVBQWU7RUFDZixrQkFBa0I7QUFDcEI7QUFDQTs7RUFFRSxXQUFXO0VBQ1gsZUFBZTtBQUNqQlwiLFwiZmlsZVwiOlwiRGF0ZXBpY2tlci52dWVcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnJ0bCB7XFxuICBkaXJlY3Rpb246IHJ0bDtcXG59XFxuLnZkcC1kYXRlcGlja2VyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxufVxcbi52ZHAtZGF0ZXBpY2tlciAqIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTAwO1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIHdpZHRoOiAzMDBweDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgaGVhZGVyIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgaGVhZGVyIHNwYW4ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd2lkdGg6IDcxLjQyODU3MTQyODU3MTQzJTtcXG4gIGZsb2F0OiBsZWZ0O1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAucHJldixcXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAubmV4dCB7XFxuICB3aWR0aDogMTQuMjg1NzE0Mjg1NzE0Mjg2JTtcXG4gIGZsb2F0OiBsZWZ0O1xcbiAgdGV4dC1pbmRlbnQ6IC0xMDAwMHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAucHJldjphZnRlcixcXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAubmV4dDphZnRlciB7XFxuICBjb250ZW50OiAnJztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRvcDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7XFxuICBib3JkZXI6IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnByZXY6YWZ0ZXIge1xcbiAgYm9yZGVyLXJpZ2h0OiAxMHB4IHNvbGlkICMwMDA7XFxuICBtYXJnaW4tbGVmdDogLTVweDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciBoZWFkZXIgLnByZXYuZGlzYWJsZWQ6YWZ0ZXIge1xcbiAgYm9yZGVyLXJpZ2h0OiAxMHB4IHNvbGlkICNkZGQ7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgaGVhZGVyIC5uZXh0OmFmdGVyIHtcXG4gIGJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkICMwMDA7XFxuICBtYXJnaW4tbGVmdDogNXB4O1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAubmV4dC5kaXNhYmxlZDphZnRlciB7XFxuICBib3JkZXItbGVmdDogMTBweCBzb2xpZCAjZGRkO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAucHJldjpub3QoLmRpc2FibGVkKSxcXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAubmV4dDpub3QoLmRpc2FibGVkKSxcXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAudXA6bm90KC5kaXNhYmxlZCkge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAucHJldjpub3QoLmRpc2FibGVkKTpob3ZlcixcXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAubmV4dDpub3QoLmRpc2FibGVkKTpob3ZlcixcXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIGhlYWRlciAudXA6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xcbiAgYmFja2dyb3VuZDogI2VlZTtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuZGlzYWJsZWQge1xcbiAgY29sb3I6ICNkZGQ7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmZsZXgtcnRsIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogaW5oZXJpdDtcXG4gIGZsZXgtd3JhcDogd3JhcDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBwYWRkaW5nOiAwIDVweDtcXG4gIHdpZHRoOiAxNC4yODU3MTQyODU3MTQyODYlO1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGw6bm90KC5ibGFuayk6bm90KC5kaXNhYmxlZCkuZGF5LFxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGw6bm90KC5ibGFuayk6bm90KC5kaXNhYmxlZCkubW9udGgsXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbDpub3QoLmJsYW5rKTpub3QoLmRpc2FibGVkKS55ZWFyIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbDpub3QoLmJsYW5rKTpub3QoLmRpc2FibGVkKS5kYXk6aG92ZXIsXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbDpub3QoLmJsYW5rKTpub3QoLmRpc2FibGVkKS5tb250aDpob3ZlcixcXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsOm5vdCguYmxhbmspOm5vdCguZGlzYWJsZWQpLnllYXI6aG92ZXIge1xcbiAgYm9yZGVyOiAxcHggc29saWQgIzRiZDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbC5zZWxlY3RlZCB7XFxuICBiYWNrZ3JvdW5kOiAjNGJkO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsLnNlbGVjdGVkOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6ICM0YmQ7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGwuc2VsZWN0ZWQuaGlnaGxpZ2h0ZWQge1xcbiAgYmFja2dyb3VuZDogIzRiZDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAuY2VsbC5oaWdobGlnaHRlZCB7XFxuICBiYWNrZ3JvdW5kOiAjY2FlNWVkO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsLmhpZ2hsaWdodGVkLmRpc2FibGVkIHtcXG4gIGNvbG9yOiAjYTNhM2EzO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsLmdyZXkge1xcbiAgY29sb3I6ICM4ODg7XFxufVxcbi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGwuZ3JleTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiBpbmhlcml0O1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsLmRheS1oZWFkZXIge1xcbiAgZm9udC1zaXplOiA3NSU7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgY3Vyc29yOiBpbmhlcml0O1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyIC5jZWxsLmRheS1oZWFkZXI6aG92ZXIge1xcbiAgYmFja2dyb3VuZDogaW5oZXJpdDtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAubW9udGgsXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhciAueWVhciB7XFxuICB3aWR0aDogMzMuMzMzJTtcXG59XFxuLnZkcC1kYXRlcGlja2VyX19jbGVhci1idXR0b24sXFxuLnZkcC1kYXRlcGlja2VyX19jYWxlbmRhci1idXR0b24ge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbn1cXG4udmRwLWRhdGVwaWNrZXJfX2NsZWFyLWJ1dHRvbi5kaXNhYmxlZCxcXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyLWJ1dHRvbi5kaXNhYmxlZCB7XFxuICBjb2xvcjogIzk5OTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG59XFxuXCJdfSwgbWVkaWE6IHVuZGVmaW5lZCB9KTtcblxuICB9O1xuICAvKiBzY29wZWQgKi9cbiAgY29uc3QgX192dWVfc2NvcGVfaWRfXyQ0ID0gdW5kZWZpbmVkO1xuICAvKiBtb2R1bGUgaWRlbnRpZmllciAqL1xuICBjb25zdCBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fJDQgPSB1bmRlZmluZWQ7XG4gIC8qIGZ1bmN0aW9uYWwgdGVtcGxhdGUgKi9cbiAgY29uc3QgX192dWVfaXNfZnVuY3Rpb25hbF90ZW1wbGF0ZV9fJDQgPSBmYWxzZTtcbiAgLyogc3R5bGUgaW5qZWN0IFNTUiAqL1xuICBcblxuICBcbiAgdmFyIERhdGVwaWNrZXIgPSBub3JtYWxpemVDb21wb25lbnRfMShcbiAgICB7IHJlbmRlcjogX192dWVfcmVuZGVyX18kNCwgc3RhdGljUmVuZGVyRm5zOiBfX3Z1ZV9zdGF0aWNSZW5kZXJGbnNfXyQ0IH0sXG4gICAgX192dWVfaW5qZWN0X3N0eWxlc19fJDQsXG4gICAgX192dWVfc2NyaXB0X18kNCxcbiAgICBfX3Z1ZV9zY29wZV9pZF9fJDQsXG4gICAgX192dWVfaXNfZnVuY3Rpb25hbF90ZW1wbGF0ZV9fJDQsXG4gICAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyQ0LFxuICAgIGJyb3dzZXIsXG4gICAgdW5kZWZpbmVkXG4gICk7XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVwaWNrZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vuejs-datepicker/dist/vuejs-datepicker.esm.js\n");

/***/ }),

/***/ "./node_modules/vuesax/dist/vuesax.common.js":
/*!***************************************************!*\
  !*** ./node_modules/vuesax/dist/vuesax.common.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"366d\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"000d\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar shared = __webpack_require__(\"de86\");\nvar has = __webpack_require__(\"8034\");\nvar uid = __webpack_require__(\"99d8\");\nvar NATIVE_SYMBOL = __webpack_require__(\"9398\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(\"d5af\");\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name)) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ \"0033\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"c7e1\");\nvar classof = __webpack_require__(\"7e27\");\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ \"0293\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isRegExp = __webpack_require__(\"2c17\");\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"064c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line no-undef\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func\n  Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"a157\")))\n\n/***/ }),\n\n/***/ \"068d\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar DOMIterables = __webpack_require__(\"c0c3\");\nvar forEach = __webpack_require__(\"e30c1\");\nvar createNonEnumerableProperty = __webpack_require__(\"b4be\");\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n}\n\n\n/***/ }),\n\n/***/ \"069f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c33f\");\nvar anObject = __webpack_require__(\"a865\");\nvar toPrimitive = __webpack_require__(\"2d7b\");\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"097e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(\"cd75\");\nvar global = __webpack_require__(\"064c\");\nvar isObject = __webpack_require__(\"883a\");\nvar createNonEnumerableProperty = __webpack_require__(\"b4be\");\nvar objectHas = __webpack_require__(\"8034\");\nvar sharedKey = __webpack_require__(\"cebd\");\nvar hiddenKeys = __webpack_require__(\"83fd\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP) {\n  var store = new WeakMap();\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ \"0988\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d65a\");\nvar anObject = __webpack_require__(\"a865\");\nvar toObject = __webpack_require__(\"b8d1\");\nvar toLength = __webpack_require__(\"d17d\");\nvar toInteger = __webpack_require__(\"d22e\");\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\nvar advanceStringIndex = __webpack_require__(\"d7d7\");\nvar regExpExec = __webpack_require__(\"80e9\");\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      if (reason.REPLACE_KEEPS_$0 || (typeof replaceValue === 'string' && replaceValue.indexOf('$0') === -1)) {\n        var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n  // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return nativeReplace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n\n\n/***/ }),\n\n/***/ \"0a5f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar aFunction = __webpack_require__(\"7067\");\nvar toObject = __webpack_require__(\"b8d1\");\nvar fails = __webpack_require__(\"c7e1\");\nvar sloppyArrayMethod = __webpack_require__(\"3934\");\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? nativeSort.call(toObject(this))\n      : nativeSort.call(toObject(this), aFunction(comparefn));\n  }\n});\n\n\n/***/ }),\n\n/***/ \"0a87\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"883a\");\nvar setPrototypeOf = __webpack_require__(\"6476\");\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    typeof (NewTarget = dummy.constructor) == 'function' &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n\n\n/***/ }),\n\n/***/ \"0ca8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"861f\");\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.github.io/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n  trunc: function trunc(it) {\n    return (it > 0 ? floor : ceil)(it);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"0d18\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"0d67\":\n/***/ (function(module, exports) {\n\nexports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n    if (typeof location !== 'undefined') {\n        return location.hostname\n    }\n    else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n    return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n    return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n    if (typeof navigator !== 'undefined') {\n        return navigator.appVersion;\n    }\n    return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n    return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n\n\n/***/ }),\n\n/***/ \"11e2\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(\"7628\");\nvar toObject = __webpack_require__(\"b8d1\");\nvar callWithSafeIterationClosing = __webpack_require__(\"b311\");\nvar isArrayIteratorMethod = __webpack_require__(\"9fa8\");\nvar toLength = __webpack_require__(\"d17d\");\nvar createProperty = __webpack_require__(\"54b8\");\nvar getIteratorMethod = __webpack_require__(\"330e\");\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var C = typeof this == 'function' ? this : Array;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var index = 0;\n  var iteratorMethod = getIteratorMethod(O);\n  var length, result, step, iterator, next;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    result = new C();\n    for (;!(step = next.call(iterator)).done; index++) {\n      createProperty(result, index, mapping\n        ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)\n        : step.value\n      );\n    }\n  } else {\n    length = toLength(O.length);\n    result = new C(length);\n    for (;length > index; index++) {\n      createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n    }\n  }\n  result.length = index;\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"1597\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar trim = __webpack_require__(\"1865\").trim;\nvar whitespaces = __webpack_require__(\"61e8\");\n\nvar nativeParseFloat = global.parseFloat;\nvar FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(String(string));\n  var result = nativeParseFloat(trimmedString);\n  return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n\n\n/***/ }),\n\n/***/ \"1865\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\nvar whitespaces = __webpack_require__(\"61e8\");\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = String(requireObjectCoercible($this));\n    if (TYPE & 1) string = string.replace(ltrim, '');\n    if (TYPE & 2) string = string.replace(rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n\n\n/***/ }),\n\n/***/ \"1be2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"861f\");\nvar $values = __webpack_require__(\"93ae\").values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"2136\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(\"f107\").charAt;\nvar InternalStateModule = __webpack_require__(\"097e\");\nvar defineIterator = __webpack_require__(\"5ff7\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"2320\":\n/***/ (function(module, exports) {\n\n// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n  // eslint-disable-next-line no-self-compare\n  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n\n\n/***/ }),\n\n/***/ \"23b0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d65a\");\nvar isRegExp = __webpack_require__(\"2c17\");\nvar anObject = __webpack_require__(\"a865\");\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\nvar speciesConstructor = __webpack_require__(\"f1a2\");\nvar advanceStringIndex = __webpack_require__(\"d7d7\");\nvar toLength = __webpack_require__(\"d17d\");\nvar callRegExpExec = __webpack_require__(\"80e9\");\nvar regexpExec = __webpack_require__(\"bdde\");\nvar fails = __webpack_require__(\"c7e1\");\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, !SUPPORTS_Y);\n\n\n/***/ }),\n\n/***/ \"28d5\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"291d\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"861f\");\nvar sign = __webpack_require__(\"2320\");\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n  sign: sign\n});\n\n\n/***/ }),\n\n/***/ \"2995\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"000d\");\nvar create = __webpack_require__(\"d709\");\nvar definePropertyModule = __webpack_require__(\"069f\");\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"2c17\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"883a\");\nvar classof = __webpack_require__(\"7e27\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"2d7b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"883a\");\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"2ea4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(\"f1d8\");\nvar global = __webpack_require__(\"064c\");\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ \"2fe0\":\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"32c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar createNonEnumerableProperty = __webpack_require__(\"b4be\");\nvar has = __webpack_require__(\"8034\");\nvar setGlobal = __webpack_require__(\"bcbc\");\nvar inspectSource = __webpack_require__(\"6ac0\");\nvar InternalStateModule = __webpack_require__(\"097e\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n\n/***/ \"330e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"eb28\");\nvar Iterators = __webpack_require__(\"0d18\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"366d\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar components_namespaceObject = {};\n__webpack_require__.r(components_namespaceObject);\n__webpack_require__.d(components_namespaceObject, \"vsButton\", function() { return components_vsButton; });\n__webpack_require__.d(components_namespaceObject, \"vsSelect\", function() { return components_vsSelect; });\n__webpack_require__.d(components_namespaceObject, \"vsSwitch\", function() { return components_vsSwitch; });\n__webpack_require__.d(components_namespaceObject, \"vsCheckbox\", function() { return components_vsCheckBox; });\n__webpack_require__.d(components_namespaceObject, \"vsRadio\", function() { return components_vsRadio; });\n__webpack_require__.d(components_namespaceObject, \"vsInput\", function() { return components_vsInput; });\n__webpack_require__.d(components_namespaceObject, \"vsTabs\", function() { return components_vsTabs; });\n__webpack_require__.d(components_namespaceObject, \"vsSlider\", function() { return components_vsSlider; });\n__webpack_require__.d(components_namespaceObject, \"vsInputNumber\", function() { return components_vsInputNumber; });\n__webpack_require__.d(components_namespaceObject, \"vsTooltip\", function() { return components_vsTooltip; });\n__webpack_require__.d(components_namespaceObject, \"vsUpload\", function() { return components_vsUpload; });\n__webpack_require__.d(components_namespaceObject, \"vsPopup\", function() { return components_vsPopup; });\n__webpack_require__.d(components_namespaceObject, \"vsAlert\", function() { return components_vsAlert; });\n__webpack_require__.d(components_namespaceObject, \"vsChip\", function() { return components_vsChip; });\n__webpack_require__.d(components_namespaceObject, \"vsProgress\", function() { return components_vsProgress; });\n__webpack_require__.d(components_namespaceObject, \"vsCard\", function() { return components_vsCard; });\n__webpack_require__.d(components_namespaceObject, \"vsList\", function() { return components_vsList; });\n__webpack_require__.d(components_namespaceObject, \"vsAvatar\", function() { return components_vsAvatar; });\n__webpack_require__.d(components_namespaceObject, \"vsPagination\", function() { return components_vsPagination; });\n__webpack_require__.d(components_namespaceObject, \"vsBreadcrumb\", function() { return components_vsBreadcrumb; });\n__webpack_require__.d(components_namespaceObject, \"vsPrompt\", function() { return vsPrompt; });\n__webpack_require__.d(components_namespaceObject, \"vsDivider\", function() { return components_vsDivider; });\n__webpack_require__.d(components_namespaceObject, \"vsSpacer\", function() { return components_vsSpacer; });\n__webpack_require__.d(components_namespaceObject, \"vsIcon\", function() { return components_vsIcon; });\n__webpack_require__.d(components_namespaceObject, \"vsNavbar\", function() { return components_vsNavbar; });\n__webpack_require__.d(components_namespaceObject, \"vsSideBar\", function() { return vsSideBar; });\n__webpack_require__.d(components_namespaceObject, \"vsDropDown\", function() { return components_vsDropDown; });\n__webpack_require__.d(components_namespaceObject, \"vsTable\", function() { return components_vsTable; });\n__webpack_require__.d(components_namespaceObject, \"vsTextarea\", function() { return components_vsTextarea; });\n__webpack_require__.d(components_namespaceObject, \"vsCollapse\", function() { return components_vsCollapse; });\n__webpack_require__.d(components_namespaceObject, \"vsImages\", function() { return components_vsImages; });\n__webpack_require__.d(components_namespaceObject, \"vsRow\", function() { return layout_vsRow; });\n__webpack_require__.d(components_namespaceObject, \"vsCol\", function() { return layout_vsCol; });\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  if (true) {\n    __webpack_require__(\"a5d0\")\n  }\n\n  var setPublicPath_i\n  if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n    __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.object.values.js\nvar es_object_values = __webpack_require__(\"1be2\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/web.dom-collections.for-each.js\nvar web_dom_collections_for_each = __webpack_require__(\"068d\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(\"bc6d\");\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsButton/vsButton.vue?vue&type=template&id=f09ba514&lang=html&\nvar render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',_vm._g(_vm._b({ref:\"btn\",staticClass:\"vs-component vs-button\",class:[(\"vs-button-\" + (_vm.isColor()?_vm.color:null)),(\"vs-button-\" + _vm.type),{\n    'isActive':_vm.isActive,\n    'includeIcon':_vm.icon,\n    'includeIconOnly':_vm.icon && !_vm.$slots.default,\n    'vs-radius':_vm.radius\n  }, _vm.size],style:([_vm.styles,{\n    'width':/[px]/.test(_vm.size)?(\"\" + _vm.size):null,\n    'height':/[px]/.test(_vm.size)?(\"\" + _vm.size):null\n  }]),attrs:{\"type\":_vm.button,\"name\":\"button\"}},'button',_vm.$attrs,false),_vm.listeners),[(!_vm.is('line')&&!_vm.is('gradient')&&!_vm.is('relief'))?_c('span',{ref:\"backgroundx\",staticClass:\"vs-button-backgroundx vs-button--background\",style:(_vm.stylesBackGround)}):_vm._e(),(_vm.icon)?_c('vs-icon',{staticClass:\"vs-button--icon \",style:(( _obj = {\n      'order':_vm.iconAfter?2:0\n    }, _obj['margin-' + _vm.isRTL('left')] = _vm.$slots.default&&!_vm.iconAfter?'5px':'0px', _obj['margin-' + _vm.isRTL('right')] = _vm.$slots.default&&_vm.iconAfter?'5px':'0px', _obj )),attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon}}):_vm._e(),(_vm.$slots.default)?_c('span',{staticClass:\"vs-button-text vs-button--text\"},[_vm._t(\"default\")],2):_vm._e(),_c('span',{ref:\"linex\",staticClass:\"vs-button-linex\",style:(_vm.styleLine)})],1)}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsButton/vsButton.vue?vue&type=template&id=f09ba514&lang=html&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.symbol.js\nvar es_symbol = __webpack_require__(\"7dda\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(\"6cb6\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(\"8e2c\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.object.get-own-property-descriptor.js\nvar es_object_get_own_property_descriptor = __webpack_require__(\"4a74\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.object.get-own-property-descriptors.js\nvar es_object_get_own_property_descriptors = __webpack_require__(\"da4f\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.object.keys.js\nvar es_object_keys = __webpack_require__(\"f2c3\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.includes.js\nvar es_array_includes = __webpack_require__(\"a437\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(\"5ac6\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.parse-int.js\nvar es_parse_int = __webpack_require__(\"ba4d\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(\"c37f\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(\"0988\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.string.search.js\nvar es_string_search = __webpack_require__(\"56b6\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(\"23b0\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.string.trim.js\nvar es_string_trim = __webpack_require__(\"e010\");\n\n// CONCATENATED MODULE: ./src/utils/color.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var utils_color = ({\n  darken: function darken(color, percent) {\n    var f = color.split(\",\"),\n        t = percent < 0 ? 0 : 255,\n        p = percent < 0 ? percent * -1 : percent,\n        R = parseInt(f[0].slice(4)),\n        G = parseInt(f[1]),\n        B = parseInt(f[2]);\n    return \"rgb(\" + (Math.round((t - R) * p) + R) + \",\" + (Math.round((t - G) * p) + G) + \",\" + (Math.round((t - B) * p) + B) + \")\";\n  },\n  getColor: function getColor(colorx) {\n    var alphax = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    var defaultx = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n    // change color hex to RGB\n    if (/^[#]/.test(colorx)) {\n      var c = this.hexToRgb(colorx);\n\n      if (alphax == 1) {\n        colorx = \"rgb(\".concat(c.r, \",\").concat(c.g, \",\").concat(c.b, \")\");\n      } else {\n        colorx = \"rgba(\".concat(c.r, \",\").concat(c.g, \",\").concat(c.b, \",\").concat(alphax, \")\");\n      }\n    } else if (/^rgba/.test(colorx)) {\n      if (colorx.search(/.([0-9]\\))$/) == -1 && !defaultx) {\n        colorx = colorx.replace(/.?([0-9]\\))$/, \"\".concat(alphax, \")\"));\n      }\n    } else if (/^(rgb)/.test(colorx)) {\n      // change rgb and rgba\n      if (alphax != 1) {\n        colorx = colorx.replace(/^(rgb)/, \"rgba\");\n        colorx = colorx.replace(/\\)$/, \",\".concat(alphax, \")\"));\n      }\n    }\n\n    return colorx;\n  },\n  isColor: function isColor(colorx) {\n    var vscolors = ['primary', 'secondary', 'success', 'danger', 'warning', 'dark', 'light'];\n    return vscolors.includes(colorx);\n  },\n  RandomColor: function RandomColor() {\n    function getRandomInt(min, max) {\n      return Math.floor(Math.random() * (max - min)) + min;\n    }\n\n    return \"rgb(\".concat(getRandomInt(0, 255), \",\").concat(getRandomInt(0, 255), \",\").concat(getRandomInt(0, 255), \")\");\n  },\n  rColor: function rColor(colorx) {\n    var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n    if (/^[#]/.test(colorx)) {\n      var c = this.hexToRgb(colorx);\n      colorx = \"rgba(\".concat(c.r, \",\").concat(c.g, \",\").concat(c.b, \",\").concat(opacity, \")\");\n    } else if (/^[rgb]/.test(colorx)) {\n      var colorSplit = colorx.split(')')[0];\n\n      if (!/^[rgba]/.test(colorx)) {\n        colorSplit.replace('rgb', 'rgba');\n        colorSplit += \",\".concat(opacity, \")\");\n      } else {\n        // colorSplit.replace('rgb','rgba')\n        colorSplit += \")\";\n      }\n\n      colorx = colorSplit;\n    }\n\n    var vscolors = ['primary', 'success', 'danger', 'warning', 'dark'];\n\n    if (colorx) {\n      if (/[#()]/.test(colorx)) {\n        return colorx;\n      } else {\n        if (vscolors.includes(colorx)) {\n          return \"rgba(var(--vs-\".concat(colorx, \"),\").concat(opacity, \")\");\n        } else {\n          return \"rgba(var(--vs-primary),\".concat(opacity, \")\");\n        }\n      }\n    } else {\n      return \"rgba(var(--vs-primary),\".concat(opacity, \")\");\n    }\n  },\n  contrastColor: function contrastColor(elementx) {\n    var c = elementx;\n\n    if (/[#]/g.test(elementx)) {\n      var rgbx = this.hexToRgb(elementx);\n      c = \"rgb(\".concat(rgbx.r, \",\").concat(rgbx.g, \",\").concat(rgbx.b, \")\");\n    }\n\n    var rgb = c.replace(/^(rgb|rgba)\\(/, '').replace(/\\)$/, '').replace(/\\s/g, '').split(',');\n    var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\n    if (yiq >= 128) {\n      return true;\n    } else {\n      return false;\n    }\n  },\n  setCssVariable: function setCssVariable(propertyName, value) {\n    if (typeof window !== 'undefined') {\n      document.documentElement.style.setProperty(propertyName, value);\n    }\n  },\n  hexToRgb: function hexToRgb(hex) {\n    // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n    var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n    hex = hex.replace(shorthandRegex, function (m, r, g, b) {\n      return r + r + g + g + b + b;\n    });\n    var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n    return result ? {\n      r: parseInt(result[1], 16),\n      g: parseInt(result[2], 16),\n      b: parseInt(result[3], 16)\n    } : null;\n  },\n  getVariable: function getVariable(styles, propertyName) {\n    return String(styles.getPropertyValue(propertyName)).trim();\n  },\n  changeColor: function changeColor(colorInicial) {\n    var colores = ['primary', 'success', 'danger', 'warning', 'dark'];\n    var colorx;\n\n    if (colores.includes(colorInicial)) {\n      var style = getComputedStyle(document.documentElement);\n      colorx = this.getVariable(style, '--vs-' + colorInicial);\n    } else {\n      if (/[rgb()]/g.test(colorInicial)) {\n        colorx = colorInicial.replace(/[rgb()]/g, '');\n      } else if (/[#]/g.test(colorInicial)) {\n        var rgbx = this.hexToRgb(colorInicial);\n        colorx = \"\".concat(rgbx.r, \",\").concat(rgbx.g, \",\").concat(rgbx.b);\n      } else {\n        colorx = '--vs-' + colorInicial;\n      }\n    }\n\n    return colorx; // this.setCssVariable('--vs-'+clave,colorx)\n  }\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsButton/vsButton.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsButtonvue_type_script_lang_js_ = ({\n  name: 'VsButton',\n  inheritAttrs: false,\n  props: {\n    type: {\n      default: 'filled',\n      type: String\n    },\n    color: {\n      default: 'primary',\n      type: String\n    },\n    textColor: {\n      default: null,\n      type: String\n    },\n    lineOrigin: {\n      default: 'center',\n      type: String\n    },\n    linePosition: {\n      default: 'bottom',\n      type: String\n    },\n    gradientDirection: {\n      default: '30deg',\n      type: String\n    },\n    gradientColorSecondary: {\n      default: 'primary',\n      type: String\n    },\n    size: {\n      type: String,\n      default: null\n    },\n    icon: {\n      type: String,\n      default: null\n    },\n    iconPack: {\n      type: String,\n      default: 'material-icons'\n    },\n    iconAfter: {\n      default: false,\n      type: Boolean\n    },\n    radius: {\n      default: false,\n      type: Boolean\n    },\n    to: {\n      default: false,\n      type: String | Object\n    },\n    href: {\n      default: '',\n      type: String | Object\n    },\n    target: {\n      default: false,\n      type: [Boolean, String]\n    },\n    button: {\n      default: 'button',\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      isActive: false,\n      hoverx: false,\n      leftBackgorund: 20,\n      topBackgorund: 20,\n      radio: 0,\n      time: 0.3,\n      timeOpacity: 0.3,\n      opacity: 1\n    };\n  },\n  computed: {\n    listeners: function listeners() {\n      var _this = this;\n\n      return _objectSpread({}, this.$listeners, {\n        click: function click(event) {\n          return _this.clickButton(event);\n        },\n        blur: function blur(event) {\n          return _this.blurButton(event);\n        },\n        mouseover: function mouseover(event) {\n          return _this.mouseoverx(event);\n        },\n        mouseout: function mouseout(event) {\n          return _this.mouseoutx(event);\n        }\n      });\n    },\n    styles: function styles() {\n      if (this.is('filled')) {\n        return {\n          color: utils_color.getColor(this.textColor, 1),\n          background: utils_color.getColor(this.color, 1),\n          boxShadow: this.hoverx ? \"0px 8px 25px -8px \".concat(utils_color.getColor(this.color, 1)) : null\n        };\n      } else if (this.is('border') || this.is('flat')) {\n        return {\n          border: \"\".concat(this.is('flat') ? 0 : 1, \"px solid \").concat(utils_color.getColor(this.color, 1)),\n          background: this.hoverx ? utils_color.getColor(this.color, .1) : 'transparent',\n          color: utils_color.getColor(this.textColor, 1) || utils_color.getColor(this.color, 1)\n        };\n      } else if (this.is('line')) {\n        return {\n          color: utils_color.getColor(this.textColor, 1) || utils_color.getColor(this.color, 1),\n          borderBottomWidth: this.linePosition == 'bottom' ? \"2px\" : null,\n          borderColor: \"\".concat(utils_color.getColor(this.color, .2)),\n          borderTopWidth: this.linePosition == 'top' ? \"2px\" : null\n        };\n      } else if (this.is('gradient')) {\n        var backgroundx = \"linear-gradient(\".concat(this.gradientDirection, \", \").concat(utils_color.getColor(this.color), \" 0%, \").concat(utils_color.getColor(this.gradientColorSecondary, 1), \" 100%)\");\n        return {\n          background: backgroundx\n        };\n      } else if (this.is('relief')) {\n        var color = utils_color.getColor(this.color, 1);\n\n        return {\n          background: utils_color.getColor(this.color, 1),\n          boxShadow: \"0 3px 0 0 \".concat(utils_color.darken(color, -0.4))\n        };\n      }\n    },\n    stylesBackGround: function stylesBackGround() {\n      var styles = {\n        background: this.is('flat') || this.is('border') ? utils_color.getColor(this.color, 1, false) : null,\n        opacity: this.opacity,\n        left: \"\".concat(this.leftBackgorund, \"px\"),\n        top: \"\".concat(this.topBackgorund, \"px\"),\n        width: \"\".concat(this.radio, \"px\"),\n        height: \"\".concat(this.radio, \"px\"),\n        transition: \"width \".concat(this.time, \"s ease, height \").concat(this.time, \"s ease, opacity \").concat(this.timeOpacity, \"s ease\")\n      };\n      return styles;\n    },\n    styleLine: function styleLine() {\n      var lineOrigin = '50%';\n\n      if (this.lineOrigin == 'left') {\n        lineOrigin = '0%';\n      } else if (this.lineOrigin == 'right') {\n        lineOrigin = 'auto';\n      }\n\n      var styles = {\n        top: this.linePosition == 'top' ? '-2px' : 'auto',\n        bottom: this.linePosition == 'bottom' ? '-2px' : 'auto',\n        background: utils_color.getColor(this.color, 1),\n        left: lineOrigin,\n        right: lineOrigin == 'auto' ? '0px' : null,\n        transform: lineOrigin == '50%' ? 'translate(-50%)' : null\n      };\n      return styles;\n    }\n  },\n  methods: {\n    isRTL: function isRTL(value) {\n      if (this.$vs.rtl) {\n        return value;\n      } else {\n        if (value === 'right') {\n          return 'left';\n        }\n\n        if (value === 'left') {\n          return 'right';\n        }\n      }\n    },\n    routerPush: function routerPush() {\n      var _this2 = this;\n\n      this.$router.push(this.to).catch(function (err) {\n        _this2.$emit(\"routeErr\", err);\n      });\n    },\n    is: function is(which) {\n      var type = this.type;\n      return type == which;\n    },\n    mouseoverx: function mouseoverx(event) {\n      this.$emit('mouseover', event);\n      this.hoverx = true;\n    },\n    mouseoutx: function mouseoutx(event) {\n      this.$emit('mouseout', event);\n      this.hoverx = false;\n    },\n    blurButton: function blurButton(event) {\n      var _this3 = this;\n\n      this.$emit('blur', event);\n\n      if (this.type == 'border' || this.type == 'flat') {\n        this.opacity = 0;\n        setTimeout(function () {\n          _this3.radio = 0;\n        }, 150);\n        this.isActive = false;\n      }\n    },\n    clickButton: function clickButton(event) {\n      var _this4 = this;\n\n      this.$emit('click', event);\n\n      if (this.isActive) {\n        return;\n      }\n\n      if (this.to) {\n        this.routerPush();\n      }\n\n      if (this.href) {\n        if (typeof this.href == 'string') {\n          this.target ? window.open(this.href) : window.location.href = this.href;\n        } else {\n          this.target ? window.open(this.href.url) : window.location.href = this.href.url;\n        }\n      }\n\n      this.isActive = true;\n      var btn = this.$refs.btn;\n      var xEvent = event.offsetX;\n      var yEvent = event.offsetY;\n      var radio = btn.clientWidth * 3;\n      this.time = btn.clientWidth / (btn.clientWidth + (this.is('border') || this.is('flat') ? 70 : 20));\n\n      if (this.is('filled')) {\n        this.timeOpacity = this.time;\n      }\n\n      if (event.srcElement ? event.srcElement != btn : false) {\n        xEvent += event.target.offsetLeft;\n        yEvent += event.target.offsetTop;\n      }\n\n      this.leftBackgorund = xEvent;\n      this.topBackgorund = yEvent;\n      this.radio = radio;\n\n      if (this.is('filled')) {\n        this.opacity = 0;\n      } else {\n        this.opacity = 1;\n      }\n\n      if (this.is('filled')) {\n        setTimeout(function () {\n          _this4.time = _this4.timeOpacity = _this4.radio = 0;\n          _this4.opacity = 1;\n          _this4.isActive = false;\n        }, this.time * 1100);\n      } else {\n        setTimeout(function () {\n          _this4.timeOpacity = .15;\n        }, this.time * 1100);\n      }\n    },\n    isColor: function isColor() {\n      return utils_color.isColor(this.color);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsButton/vsButton.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsButton_vsButtonvue_type_script_lang_js_ = (vsButtonvue_type_script_lang_js_);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n\n// CONCATENATED MODULE: ./src/components/vsButton/vsButton.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n  vsButton_vsButtonvue_type_script_lang_js_,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsButton = (component.exports);\n// CONCATENATED MODULE: ./src/components/vsButton/index.js\n\n\n\n/* harmony default export */ var components_vsButton = (function (Vue) {\n  Vue.component(vsButton.name, vsButton);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSelect/vsSelect.vue?vue&type=template&id=0339310e&lang=html&\nvar vsSelectvue_type_template_id_0339310e_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"con-select\",class:{\n    'autocompletex':_vm.autocomplete,\n    'activeOptions':_vm.active,\n    'input-select-validate-success':_vm.success,\n    'input-select-validate-danger':_vm.danger,\n    'input-select-validate-warning':_vm.warning},style:(_vm.getWidth)},[(_vm.label)?_c('label',{ref:\"inputSelectLabel\",staticClass:\"vs-select--label\",attrs:{\"for\":\"\"}},[_vm._v(_vm._s(_vm.label))]):_vm._e(),_c('div',{staticClass:\"input-select-con\"},[_c('input',_vm._g(_vm._b({ref:\"inputselect\",staticClass:\"input-select vs-select--input\",attrs:{\"readonly\":!_vm.autocomplete,\"type\":\"text\"},on:{\"click\":function($event){$event.stopPropagation();},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.closeOptions($event)}}},'input',_vm.$attrs,false),_vm.listeners)),_c('button',{staticClass:\"icon-select-clear vs-select--icon-clear\",class:{'activeBtnClear': _vm.activeBtnClear},on:{\"click\":_vm.clearValue}},[_c('i',{staticClass:\"material-icons\"},[_vm._v(\" close \")])]),(!_vm.activeBtnClear)?_c('vs-icon',{staticClass:\"icon-select vs-select--icon\",attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon},on:{\"~click\":function($event){}}}):_vm._e(),_c('transition',{attrs:{\"name\":\"fadeselect\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}],ref:\"vsSelectOptions\",staticClass:\"vs-select--options\",class:[(\"vs-select-\" + _vm.color),{'scrollx':_vm.scrollx}],style:(_vm.cords)},[_c('ul',{ref:\"ulx\"},[_vm._t(\"default\")],2),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.clear),expression:\"clear\"}]},[_c('li',{on:{\"click\":function($event){_vm.filterItems(''),_vm.changeValue()}}},[_vm._v(\" \"+_vm._s(_vm.noData)+\" \")])])])])],1),_c('transition-group',{on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"leave\":_vm.leave}},[(_vm.success)?_c('div',{key:\"success\",staticClass:\"con-text-validation\"},[_c('span',{staticClass:\"span-text-validation span-text-validation-success\"},[_vm._v(\" \"+_vm._s(_vm.successText)+\" \")])]):(_vm.danger)?_c('div',{key:\"danger\",staticClass:\"con-text-validation span-text-validation-danger\"},[_c('span',{staticClass:\"span-text-validation\"},[_vm._v(\" \"+_vm._s(_vm.dangerText)+\" \")])]):(_vm.warning)?_c('div',{key:\"warning\",staticClass:\"con-text-validation span-text-validation-warning\"},[_c('span',{staticClass:\"span-text-validation\"},[_vm._v(\" \"+_vm._s(_vm.warningText)+\" \")])]):_vm._e(),(_vm.descriptionText)?_c('div',{key:\"description\",staticClass:\"con-text-validation span-text-validation\"},[_c('span',{staticClass:\"span-text-validation\"},[_vm._v(\" \"+_vm._s(_vm.descriptionText)+\" \")])]):_vm._e()])],1)}\nvar vsSelectvue_type_template_id_0339310e_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsSelect/vsSelect.vue?vue&type=template&id=0339310e&lang=html&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.index-of.js\nvar es_array_index_of = __webpack_require__(\"8caa\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(\"956b\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.splice.js\nvar es_array_splice = __webpack_require__(\"4665\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.number.constructor.js\nvar es_number_constructor = __webpack_require__(\"7011\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(\"9428\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.string.includes.js\nvar es_string_includes = __webpack_require__(\"c18c\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n    return;\n  }\n\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n// CONCATENATED MODULE: ./src/utils/index.js\n/* harmony default export */ var utils = ({\n  insertBody: function insertBody(elx, parent) {\n    var bodyx = parent ? parent : document.body;\n    bodyx.insertBefore(elx, bodyx.firstChild);\n  },\n  removeBody: function removeBody(element, parent) {\n    var bodyx = parent ? parent : document.body;\n    bodyx.removeChild(element);\n  },\n  changePosition: function changePosition(elx, content, conditional) {\n    var topx = 0;\n    var leftx = 0;\n    var widthx = 0;\n    var scrollTopx = window.pageYOffset || document.documentElement.scrollTop;\n\n    if (elx.getBoundingClientRect().top + 300 >= window.innerHeight) {\n      setTimeout(function () {\n        if (conditional) {\n          topx = elx.getBoundingClientRect().top - content.clientHeight + scrollTopx;\n        } else {\n          topx = elx.getBoundingClientRect().top - content.clientHeight + elx.clientHeight + scrollTopx;\n        }\n      }, 1);\n    } else {\n      topx = conditional ? elx.getBoundingClientRect().top + elx.clientHeight + scrollTopx + 5 : elx.getBoundingClientRect().top + scrollTopx;\n    }\n\n    leftx = elx.getBoundingClientRect().left;\n    widthx = elx.offsetWidth;\n    var cords = {\n      left: \"\".concat(leftx, \"px\"),\n      top: \"\".concat(topx, \"px\"),\n      width: \"\".concat(widthx, \"px\")\n    };\n    return cords;\n  }\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSelect/vsSelect.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsSelectvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsSelectvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsSelectvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsSelectvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsSelectvue_type_script_lang_js_ = ({\n  name: \"VsSelect\",\n  props: {\n    value: {},\n    noData: {\n      default: \"data no available\",\n      type: String\n    },\n    maxSelected: {\n      default: null,\n      type: [Number, String]\n    },\n    autocomplete: {\n      default: false,\n      type: Boolean\n    },\n    color: {\n      default: \"primary\",\n      type: String\n    },\n    multiple: {\n      default: false,\n      type: Boolean\n    },\n    label: {\n      default: null,\n      type: [String]\n    },\n    success: {\n      default: false,\n      type: Boolean\n    },\n    danger: {\n      default: false,\n      type: Boolean\n    },\n    warning: {\n      default: false,\n      type: Boolean\n    },\n    successText: {\n      default: null,\n      type: String\n    },\n    dangerText: {\n      default: null,\n      type: String\n    },\n    warningText: {\n      default: null,\n      type: String\n    },\n    descriptionText: {\n      default: null,\n      type: String\n    },\n    iconPack: {\n      default: \"material-icons\",\n      type: String\n    },\n    icon: {\n      default: \"keyboard_arrow_down\",\n      type: String\n    },\n    iconClear: {\n      default: \"close\",\n      type: String\n    },\n    width: {\n      default: null,\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      valueFilter: \"\",\n      active: false,\n      valuex: \"\",\n      clear: false,\n      scrollx: false,\n      cords: {},\n      filterx: false\n    };\n  },\n  computed: {\n    activeBtnClear: function activeBtnClear() {\n      return this.autocomplete && this.filterx;\n    },\n    getWidth: function getWidth() {\n      return this.width ? \"width:\".concat(this.width, \";\") : null;\n    },\n    parent: function parent() {\n      return this;\n    },\n    listeners: function listeners() {\n      var _this = this;\n\n      return vsSelectvue_type_script_lang_js_objectSpread({}, this.$listeners, {\n        blur: function blur(event) {\n          if (_this.autocomplete && event.relatedTarget ? !event.relatedTarget.closest(\".vs-select--options\") : false) {\n            _this.closeOptions();\n          }\n\n          _this.$emit(\"blur\", event);\n        },\n        focus: function focus(event) {\n          _this.$emit(\"focus\", event); //document.removeEventListener('click',this.clickBlur)\n\n\n          _this.focus(event);\n        },\n        input: function input(event) {\n          if (_this.autocomplete) {\n            _this.$emit(\"input-change\", event);\n          }\n        },\n        keyup: function keyup(event) {\n          if (event.key == \"ArrowDown\" || event.key == \"ArrowUp\") {\n            event.preventDefault();\n\n            var childrens = _this.$children.filter(function (item) {\n              return item.visible;\n            });\n\n            childrens[0].$el.querySelector(\".vs-select--item\").focus();\n          } else {\n            if (_this.autocomplete) {\n              _this.filterItems(event.target.value);\n            }\n          }\n\n          _this.$children.map(function (item) {\n            item.valueInputx = _this.$refs.inputselect.value;\n          });\n        }\n      });\n    }\n  },\n  watch: {\n    value: function value(event) {\n      this.valuex = this.value;\n      this.$emit(\"change\", event);\n    },\n    active: function active() {\n      var _this2 = this;\n\n      this.$nextTick(function () {\n        if (_this2.active) {\n          utils.insertBody(_this2.$refs.vsSelectOptions);\n          setTimeout(function () {\n            _this2.$children.forEach(function (item) {\n              if (item.focusValue) {\n                item.focusValue();\n              }\n            });\n\n            if (_this2.$refs.ulx.scrollHeight >= 260) _this2.scrollx = true;\n          }, 100);\n        } else {\n          var _document$getElements = document.getElementsByTagName(\"body\"),\n              _document$getElements2 = _slicedToArray(_document$getElements, 1),\n              parent = _document$getElements2[0];\n\n          parent.removeChild(_this2.$refs.vsSelectOptions);\n        }\n      });\n    }\n  },\n  mounted: function mounted() {\n    // this.$refs.inputselect.value = this.value\n    this.changeValue();\n\n    if (this.active) {\n      utils.insertBody(this.$refs.vsSelectOptions);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    var _document$getElements3 = document.getElementsByTagName(\"body\"),\n        _document$getElements4 = _slicedToArray(_document$getElements3, 1),\n        parent = _document$getElements4[0];\n\n    if (parent && this.$refs.vsSelectOptions && this.$refs.vsSelectOptions.parentNode === parent) {\n      parent.removeChild(this.$refs.vsSelectOptions);\n    }\n  },\n  updated: function updated() {\n    if (!this.active) {\n      this.changeValue();\n    }\n  },\n  methods: {\n    clearValue: function clearValue() {\n      this.focus();\n      this.filterItems(\"\");\n      this.changeValue();\n    },\n    addMultiple: function addMultiple(value) {\n      var currentValues = this.value ? this.value : [];\n\n      if (currentValues.includes(value)) {\n        currentValues.splice(currentValues.indexOf(value), 1);\n        this.$emit(\"input\", currentValues);\n        this.changeValue();\n\n        if (this.autocomplete) {\n          this.$refs.inputselect.focus();\n        }\n      } else {\n        if (this.autocomplete) {\n          currentValues.push(value);\n          this.$emit(\"input\", currentValues);\n          this.filterItems(\"\");\n          this.changeValue(); // this.$refs.inputselect.value += ','\n\n          this.$refs.inputselect.focus();\n        } else {\n          currentValues.push(value);\n          this.$emit(\"input\", currentValues);\n          this.changeValue();\n        }\n      }\n    },\n    filterItems: function filterItems(value) {\n      var _this3 = this;\n\n      if (value) {\n        this.filterx = true;\n      } else {\n        this.filterx = false;\n      }\n\n      var items = this.$children;\n      items.forEach(function (item) {\n        if (item.$children.length > 0) {\n          items = [].concat(_toConsumableArray(items), _toConsumableArray(item.$children));\n        }\n      });\n      items.map(function (item) {\n        if (!(\"text\" in item)) return;\n        var text = item.text;\n\n        if (_this3.multiple) {\n          var valuesx = value.split(\",\");\n          valuesx.forEach(function (value_multi) {\n            if (text.toUpperCase().indexOf(value_multi.toUpperCase()) == -1) {\n              item.visible = false;\n            } else {\n              item.visible = true;\n            }\n          });\n        } else {\n          if (text.toUpperCase().indexOf(value.toUpperCase()) == -1) {\n            item.visible = false;\n          } else {\n            item.visible = true;\n          }\n        }\n      });\n      var lengthx = items.filter(function (item) {\n        return item.visible;\n      });\n\n      if (lengthx.length == 0) {\n        this.clear = true;\n      } else {\n        this.clear = false;\n      }\n\n      this.$nextTick(function () {\n        _this3.cords = _this3.changePosition();\n      });\n    },\n    changeValue: function changeValue() {\n      this.filterx = false;\n\n      if (this.multiple) {\n        var values = this.value ? this.value : [];\n        var options = this.$children;\n        options.forEach(function (item) {\n          if (item.$children.length > 0) {\n            options = [].concat(_toConsumableArray(options), _toConsumableArray(item.$children));\n          }\n        });\n        var optionsValues = [];\n        values.forEach(function (item) {\n          options.forEach(function (item_option) {\n            if (item_option.value == item) {\n              var text = item_option.text;\n              text = text.replace(\"check_circle\", \"\");\n              optionsValues.push(text.trim());\n            }\n          });\n        });\n        this.$refs.inputselect.value = optionsValues.toString();\n      } else {\n        if (this.$refs.inputselect) {\n          this.$refs.inputselect.value = this.valuex;\n        }\n      }\n    },\n    focus: function focus() {\n      var _this4 = this;\n\n      this.active = true;\n      this.setLabelClass(this.$refs.inputSelectLabel, true);\n      var inputx = this.$refs.inputselect;\n      setTimeout(function () {\n        document.addEventListener(\"click\", _this4.clickBlur);\n      }, 100);\n\n      if (this.autocomplete && this.multiple) {\n        setTimeout(function () {\n          if (inputx.value) {\n            _this4.$refs.inputselect.value = inputx.value += \",\";\n          }\n\n          inputx.selectionStart = inputx.selectionEnd = 10000;\n        }, 10);\n      } else if (this.autocomplete && !this.multiple) {\n        this.$refs.inputselect.select();\n      }\n\n      if (!this.autocomplete) {\n        if (this.multiple ? this.value.length == 0 : !this.value || this.multiple) {\n          setTimeout(function () {\n            var el = _this4.$children[0].$el.querySelector(\".vs-select--item\");\n\n            if (el) el.focus();\n          }, 50);\n        }\n      }\n\n      this.$nextTick(function () {\n        _this4.cords = _this4.changePosition();\n      });\n    },\n    clickBlur: function clickBlur(event) {\n      var closestx = event.target.closest(\".vs-select--options\");\n\n      if (!closestx) {\n        this.closeOptions();\n\n        if (this.autocomplete) {\n          this.filterItems(\"\");\n        }\n\n        this.changeValue();\n      }\n    },\n    closeOptions: function closeOptions() {\n      // this.$refs.inputselect.blur()\n      this.active = false;\n      this.setLabelClass(this.$refs.inputSelectLabel, false);\n      document.removeEventListener(\"click\", this.clickBlur);\n    },\n    changePosition: function changePosition() {\n      var elx = this.$refs.inputselect;\n      var content = this.$refs.vsSelectOptions;\n      var conditional = this.autocomplete;\n      var topx = 0;\n      var leftx = 0;\n      var widthx = 0;\n      var scrollTopx = window.pageYOffset || document.documentElement.scrollTop;\n\n      if (elx.getBoundingClientRect().top + content.scrollHeight + 20 >= window.innerHeight) {\n        topx = elx.getBoundingClientRect().top + elx.clientHeight + scrollTopx - content.scrollHeight;\n\n        if (conditional) {\n          topx = topx - elx.clientHeight - 5;\n        }\n      } else {\n        topx = conditional ? elx.getBoundingClientRect().top + elx.clientHeight + scrollTopx + 5 : elx.getBoundingClientRect().top + scrollTopx;\n      }\n\n      leftx = elx.getBoundingClientRect().left;\n      widthx = elx.offsetWidth;\n      var cords = {\n        left: \"\".concat(leftx, \"px\"),\n        top: \"\".concat(topx, \"px\"),\n        width: \"\".concat(widthx, \"px\")\n      };\n      return cords;\n    },\n    beforeEnter: function beforeEnter(el) {\n      el.style.height = 0;\n    },\n    enter: function enter(el, done) {\n      var h = el.scrollHeight;\n      el.style.height = h + \"px\";\n      done();\n    },\n    leave: function leave(el) {\n      el.style.height = 0 + \"px\";\n    },\n    setLabelClass: function setLabelClass(label, focusing) {\n      if (!label) {\n        return;\n      }\n\n      if (focusing) {\n        label.classList.add(\"input-select-label-\" + this.color + \"--active\");\n        return;\n      }\n\n      label.classList.remove(\"input-select-label-\" + this.color + \"--active\");\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsSelect/vsSelect.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsSelect_vsSelectvue_type_script_lang_js_ = (vsSelectvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsSelect/vsSelect.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsSelect_component = normalizeComponent(\n  vsSelect_vsSelectvue_type_script_lang_js_,\n  vsSelectvue_type_template_id_0339310e_lang_html_render,\n  vsSelectvue_type_template_id_0339310e_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsSelect = (vsSelect_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSelect/vsSelectItem.vue?vue&type=template&id=0f2cc7a9&lang=html&\nvar vsSelectItemvue_type_template_id_0f2cc7a9_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"vs-component\",attrs:{\"data-text\":_vm.text}},_vm.listeners),[_c('button',_vm._b({ref:\"item\",staticClass:\"vs-select--item\",class:{\n      'activex':_vm.$parent.parent.multiple?_vm.getValue.indexOf(_vm.value) != -1:_vm.getValue == _vm.value,\n      'con-icon':_vm.$parent.parent.multiple,\n      'disabledx':_vm.disabledx\n    },style:(_vm.styles),attrs:{\"disabled\":_vm.disabled,\"type\":\"button\",\"name\":\"button\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"backspace\",undefined,$event.key,undefined)){ return null; }$event.preventDefault();return _vm.backspace($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.navigateOptions('next')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.navigateOptions('prev')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.clickOption()}]}},'button',_vm.$attrs,false),[(_vm.$parent.parent.multiple)?_c('vs-icon',{staticClass:\"icon-item vs-select--item-icon\",attrs:{\"icon\":\"check_circle\"}}):_vm._e(),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.getText)}})],1)])}\nvar vsSelectItemvue_type_template_id_0f2cc7a9_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsSelect/vsSelectItem.vue?vue&type=template&id=0f2cc7a9&lang=html&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.regexp.constructor.js\nvar es_regexp_constructor = __webpack_require__(\"f564\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __webpack_require__(\"e30c\");\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSelect/vsSelectItem.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsSelectItemvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsSelectItemvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsSelectItemvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsSelectItemvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsSelectItemvue_type_script_lang_js_ = ({\n  name: 'VsSelectItem',\n  inheritAttrs: false,\n  props: {\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    value: {\n      default: null\n    },\n    text: {\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      hoverx: false,\n      visible: true,\n      getText: null,\n      valueInputx: ''\n    };\n  },\n  computed: {\n    disabledx: function disabledx() {\n      if (this.$parent.parent.multiple) {\n        if (this.isActive) {\n          return false;\n        } else {\n          return this.$parent.parent.maxSelected == this.$parent.parent.value.length;\n        }\n      } else {\n        return false;\n      }\n    },\n    isActive: function isActive() {\n      return this.$parent.parent.multiple ? this.getValue.indexOf(this.value) != -1 : this.getValue == this.value;\n    },\n    listeners: function listeners() {\n      var _this = this;\n\n      return vsSelectItemvue_type_script_lang_js_objectSpread({}, this.$listeners, {\n        blur: function blur(event) {\n          if (event.relatedTarget ? !event.relatedTarget.closest('.vs-select--options') : true) {\n            _this.$parent.parent.closeOptions();\n          }\n        },\n        click: function click(event) {\n          return _this.clickOption(event);\n        },\n        mouseover: function mouseover(event) {\n          _this.$emit('mouseover', event);\n\n          _this.changeHover(true);\n        },\n        mouseout: function mouseout(event) {\n          _this.$emit('mouseover', event);\n\n          _this.changeHover(false);\n        }\n      });\n    },\n    styles: function styles() {\n      return {\n        background: this.isActive ? utils_color.getColor(this.$parent.parent.color, .1) : null,\n        color: this.isActive ? utils_color.getColor(this.$parent.parent.color, 1) : null,\n        fontWeight: this.isActive ? 'bold' : null\n      };\n    },\n    getValue: function getValue() {\n      return this.$parent.parent.value;\n    }\n  },\n  watch: {\n    '$parent.parent.active': function $parentParentActive() {\n      var _this2 = this;\n\n      this.$nextTick(function () {\n        if (_this2.$parent.parent.multiple ? _this2.getValue.indexOf(_this2.value) != -1 : _this2.getValue == _this2.value) {\n          _this2.$emit('update:isSelected', true);\n\n          _this2.getText = _this2.text;\n\n          _this2.putValue();\n        } else {\n          _this2.$emit('update:isSelected', false);\n\n          _this2.getText = _this2.text;\n\n          _this2.putValue();\n        }\n      });\n    },\n    valueInputx: function valueInputx() {\n      if (this.visible) {\n        var valueInputx = this.valueInputx.split(',');\n\n        if (valueInputx[valueInputx.length - 1] == '') {\n          this.getText = this.text;\n          return;\n        }\n\n        var valuex = valueInputx[valueInputx.length - 1];\n        var re = new RegExp(valuex, \"i\");\n\n        if (this.text.toUpperCase().indexOf(valuex.toUpperCase()) == 0) {\n          valuex = this.MaysPrimera(valuex);\n        }\n\n        var text = this.text.replace(re, \"<span class=\\\"searchx\\\">\".concat(valuex, \"</span>\"));\n        this.getText = text;\n      } else {\n        this.getText = this.text;\n      }\n    }\n  },\n  created: function created() {\n    var _this3 = this;\n\n    this.putValue();\n    this.$nextTick(function () {\n      if (_this3.$parent.parent.multiple ? _this3.getValue.indexOf(_this3.value) != -1 : _this3.getValue == _this3.value) {\n        _this3.$emit('update:isSelected', true);\n\n        _this3.getText = _this3.text;\n\n        _this3.putValue();\n      } else {\n        _this3.$emit('update:isSelected', false);\n\n        _this3.getText = _this3.text;\n\n        _this3.putValue();\n      }\n    });\n  },\n  updated: function updated() {\n    this.putValue();\n  },\n  methods: {\n    changeHover: function changeHover(booleanx) {\n      this.hoverx = booleanx;\n    },\n    MaysPrimera: function MaysPrimera(string) {\n      return string.charAt(0).toUpperCase() + string.slice(1);\n    },\n    backspace: function backspace() {\n      if (this.$parent.parent.autocomplete) {\n        var valueInput = this.$parent.parent.$refs.inputselect.value;\n        this.$parent.parent.$refs.inputselect.value = valueInput.substr(0, valueInput.length - 1);\n        this.$parent.parent.$refs.inputselect.focus();\n      }\n    },\n    navigateOptions: function navigateOptions(orientation) {\n      var orientationObject = 'nextSibling',\n          lengthx = 0;\n\n      function getNextLi(li, orientationObject) {\n        if (li && li.localName == 'li') {\n          var lix = li[orientationObject];\n\n          if (li.style) {\n            if (li.style.display == 'none') {\n              return getNextLi(lix, orientationObject);\n            } else {\n              return li;\n            }\n          } else {\n            return li;\n          }\n        } else {\n          return false;\n        }\n      }\n\n      var children = this.$parent.parent.$children;\n      children.forEach(function (item) {\n        if (item.$children.length > 0) {\n          children = [].concat(_toConsumableArray(children), _toConsumableArray(item.$children));\n        }\n      });\n      children = children.filter(function (item) {\n        return item.$children.length == 0 && item.$el.localName != 'span';\n      });\n\n      if (orientation == 'prev') {\n        orientationObject = 'previousSibling';\n        lengthx = children.length;\n      }\n\n      var nextElement = getNextLi(this.$el[orientationObject], orientationObject);\n\n      if (nextElement) {\n        nextElement.querySelector('.vs-select--item').focus();\n      } else {\n        if (lengthx === children.length) lengthx--;\n        getNextLi(children[lengthx == 0 ? 1 : lengthx].$el, orientationObject).querySelector('.vs-select--item').focus();\n      }\n    },\n    focusValue: function focusValue(index) {\n      var _this4 = this;\n\n      if (this.$parent.parent.multiple ? this.$parent.parent.value.indexOf(this.value) != -1 : this.value == this.$parent.parent.value) {\n        if (!this.$parent.parent.autocomplete) {\n          setTimeout(function () {\n            _this4.$refs.item.focus();\n          }, 50);\n        }\n      } else if (index === 0) {\n        if (!this.$parent.parent.autocomplete) {\n          setTimeout(function () {\n            _this4.$refs.item.focus();\n          }, 50);\n        }\n      }\n    },\n    putValue: function putValue() {\n      if (this.value == this.$parent.parent.value) {\n        this.$parent.parent.valuex = this.text;\n      }\n    },\n    clickOption: function clickOption() {\n      if (this.disabledx) {\n        return;\n      }\n\n      var text = this.text;\n\n      if (!this.$parent.parent.multiple) {\n        this.$parent.parent.active = false;\n        document.removeEventListener('click', this.$parent.parent.clickBlur);\n        this.$parent.parent.valuex = text;\n        this.$parent.parent.$emit('input', this.value);\n        this.$parent.parent.changeValue();\n      } else if (this.$parent.parent.multiple) {\n        this.$parent.parent.valuex = text;\n        this.$parent.parent.addMultiple(this.value);\n      }\n\n      this.$parent.parent.$children.map(function (item) {\n        item.valueInputx = '';\n      });\n    },\n    // methods colors\n    isColor: function isColor() {\n      return utils_color.isColor(this.color);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsSelect/vsSelectItem.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsSelect_vsSelectItemvue_type_script_lang_js_ = (vsSelectItemvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsSelect/vsSelectItem.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsSelectItem_component = normalizeComponent(\n  vsSelect_vsSelectItemvue_type_script_lang_js_,\n  vsSelectItemvue_type_template_id_0f2cc7a9_lang_html_render,\n  vsSelectItemvue_type_template_id_0f2cc7a9_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsSelectItem = (vsSelectItem_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSelect/vsSelectGroup.vue?vue&type=template&id=a11ab50e&\nvar vsSelectGroupvue_type_template_id_a11ab50e_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-select-group\"},[(!_vm.filterx)?_c('h4',[_vm._v(_vm._s(_vm.title))]):_vm._e(),_vm._t(\"default\")],2)}\nvar vsSelectGroupvue_type_template_id_a11ab50e_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsSelect/vsSelectGroup.vue?vue&type=template&id=a11ab50e&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSelect/vsSelectGroup.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsSelectGroupvue_type_script_lang_js_ = ({\n  name: 'VsSelectGroup',\n  props: {\n    title: {\n      default: 'Group',\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      activeTitle: true\n    };\n  },\n  computed: {\n    filterx: function filterx() {\n      return this.$parent.filterx;\n    },\n    parent: function parent() {\n      return this.$parent;\n    }\n  },\n  methods: {\n    focusValue: function focusValue(index) {\n      this.$children[0].focusValue(index);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsSelect/vsSelectGroup.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsSelect_vsSelectGroupvue_type_script_lang_js_ = (vsSelectGroupvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsSelect/vsSelectGroup.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsSelectGroup_component = normalizeComponent(\n  vsSelect_vsSelectGroupvue_type_script_lang_js_,\n  vsSelectGroupvue_type_template_id_a11ab50e_render,\n  vsSelectGroupvue_type_template_id_a11ab50e_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsSelectGroup = (vsSelectGroup_component.exports);\n// CONCATENATED MODULE: ./src/components/vsSelect/index.js\n\n\n\n\n\n/* harmony default export */ var components_vsSelect = (function (Vue) {\n  Vue.component(vsSelect.name, vsSelect);\n  Vue.component(vsSelectItem.name, vsSelectItem);\n  Vue.component(vsSelectGroup.name, vsSelectGroup);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSwitch/vsSwitch.vue?vue&type=template&id=b82d5bd0&lang=html&\nvar vsSwitchvue_type_template_id_b82d5bd0_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',_vm._b({staticClass:\"vs-component vs-switch\",class:[\n    (\"vs-switch-\" + _vm.color),\n    {\n      'vs-switch-active':_vm.isChecked || _vm.$attrs.checked\n    }\n  ],style:(_vm.style)},'button',_vm.$attrs,false),[_c('input',_vm._g(_vm._b({ref:\"inputCheckbox\",staticClass:\"input-switch vs-switch--input\",attrs:{\"disabled\":_vm.$attrs.disabled,\"type\":\"checkbox\"},domProps:{\"value\":_vm.value}},'input',_vm.$attrs,false),_vm.listeners)),_c('span',{ref:\"on\",staticClass:\"text-on text-switch vs-switch--text\",class:{'active-text':_vm.isChecked || _vm.$attrs.checked}},[_vm._t(\"on\"),_c('vs-icon',{staticClass:\"icons-switch vs-switch--icon\",attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.vsIconOn || _vm.vsIcon}})],2),_c('span',{ref:\"off\",staticClass:\"text-off text-switch vs-switch--text\",class:{'active-text':!_vm.isChecked && !_vm.$attrs.checked}},[_vm._t(\"off\"),_c('vs-icon',{staticClass:\"icons-switch vs-switch--icon\",attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.vsIconOff || _vm.vsIcon}})],2),_c('span',{staticClass:\"vs-circle-switch vs-switch--circle\"})])}\nvar vsSwitchvue_type_template_id_b82d5bd0_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsSwitch/vsSwitch.vue?vue&type=template&id=b82d5bd0&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSwitch/vsSwitch.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsSwitchvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsSwitchvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsSwitchvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsSwitchvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsSwitchvue_type_script_lang_js_ = ({\n  name: 'VsSwitch',\n  inheritAttrs: false,\n  props: {\n    value: {},\n    color: {\n      default: 'primary',\n      type: String\n    },\n    vsIcon: {\n      default: null,\n      type: String\n    },\n    vsIconOn: {\n      default: null,\n      type: String\n    },\n    vsIconOff: {\n      default: null,\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    vsValue: {}\n  },\n  data: function data() {\n    return {\n      widthx: 42,\n      checkboxClicked: false\n    };\n  },\n  computed: {\n    style: function style() {\n      return {\n        background: this.value ? utils_color.getColor(this.color, 1) : null,\n        width: \"\".concat(this.widthx, \"px\")\n      };\n    },\n    listeners: function listeners() {\n      var _this = this;\n\n      return vsSwitchvue_type_script_lang_js_objectSpread({}, this.$listeners, {\n        input: function input(evt) {\n          _this.toggleValue(evt);\n        }\n      });\n    },\n    isChecked: function isChecked() {\n      return this.isArrayx() ? this.isArrayIncludes() : this.value;\n    }\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    this.$nextTick(function () {\n      var w = _this2.$refs.on.clientWidth > _this2.$refs.off.clientWidth ? _this2.$refs.on.clientWidth : _this2.$refs.off.clientWidth;\n      _this2.widthx = w + 24;\n    });\n  },\n  methods: {\n    toggleValue: function toggleValue(evt) {\n      if (Array.isArray(this.value)) {\n        this.setArray(evt);\n      } else {\n        this.$emit('input', !this.value);\n        this.$emit('change', evt);\n      }\n    },\n    setArray: function setArray(evt) {\n      var value = this.value.slice(0); // Copy Array.\n\n      if (this.isArrayIncludes()) {\n        value.splice(value.indexOf(this.vsValue), 1); // delete value\n\n        this.$emit('input', value);\n        this.$emit('change', evt);\n      } else {\n        value.push(this.vsValue); // add value new\n\n        this.$emit('input', value);\n        this.$emit('change', evt);\n      }\n    },\n    isArrayIncludes: function isArrayIncludes() {\n      var modelx = this.value;\n      var value = this.vsValue;\n      return modelx.includes(value);\n    },\n    isArrayx: function isArrayx() {\n      return Array.isArray(this.value);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsSwitch/vsSwitch.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsSwitch_vsSwitchvue_type_script_lang_js_ = (vsSwitchvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsSwitch/vsSwitch.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsSwitch_component = normalizeComponent(\n  vsSwitch_vsSwitchvue_type_script_lang_js_,\n  vsSwitchvue_type_template_id_b82d5bd0_lang_html_render,\n  vsSwitchvue_type_template_id_b82d5bd0_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsSwitch = (vsSwitch_component.exports);\n// CONCATENATED MODULE: ./src/components/vsSwitch/index.js\n\n\n\n/* harmony default export */ var components_vsSwitch = (function (Vue) {\n  Vue.component(vsSwitch.name, vsSwitch);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsCheckBox/vsCheckBox.vue?vue&type=template&id=5410a43c&lang=html&\nvar vsCheckBoxvue_type_template_id_5410a43c_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-component con-vs-checkbox\",class:[(\"vs-checkbox-\" + _vm.color), (\"vs-checkbox-\" + _vm.size)]},[_c('input',_vm._g(_vm._b({staticClass:\"vs-checkbox--input\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isChecked || _vm.$attrs.checked,\"value\":_vm.value}},'input',_vm.$attrs,false),_vm.listeners)),_c('span',{staticClass:\"checkbox_x vs-checkbox\",style:(_vm.style)},[_c('span',{staticClass:\"vs-checkbox--check\",style:(_vm.style_check)},[_c('vs-icon',{staticClass:\"vs-checkbox--icon \",attrs:{\"icon\":_vm.icon,\"icon-pack\":_vm.iconPack}})],1)]),_c('span',{staticClass:\"con-slot-label\"},[_vm._t(\"default\")],2)])}\nvar vsCheckBoxvue_type_template_id_5410a43c_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsCheckBox/vsCheckBox.vue?vue&type=template&id=5410a43c&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsCheckBox/vsCheckBox.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsCheckBoxvue_type_script_lang_js_ = ({\n  name: 'VsCheckbox',\n  inheritAttrs: false,\n  props: {\n    color: {\n      default: 'primary',\n      type: String\n    },\n    value: {},\n    icon: {\n      default: 'check',\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    vsValue: {\n      type: [Boolean, Array, String, Number, Object],\n      default: false\n    },\n    size: {\n      default: 'default',\n      type: String\n    }\n  },\n  computed: {\n    style_check: function style_check() {\n      return {\n        background: this.isChecked ? utils_color.getColor(this.color, 1) : null\n      };\n    },\n    style: function style() {\n      return {\n        border: \"2px solid \".concat(this.isChecked ? utils_color.getColor(this.color, 1) : 'rgb(180, 180, 180)')\n      };\n    },\n    listeners: function listeners() {\n      var _this = this;\n\n      return {\n        // ...this.$listeners,\n        change: function change(evt) {\n          _this.toggleValue(evt);\n        } // input: (evt) => {\n        //   this.toggleValue(evt)\n        // }\n\n      };\n    },\n    isChecked: function isChecked() {\n      return this.isArrayx() ? this.isArrayIncludes() : this.value;\n    }\n  },\n  methods: {\n    giveColor: function giveColor(color) {\n      return utils_color.rColor(color);\n    },\n    toggleValue: function toggleValue(evt) {\n      if (this.isArrayx()) {\n        this.setArray();\n      } else if (typeof this.vsValue == 'string') {\n        this.setValueString();\n      } else {\n        this.$emit('input', !this.value);\n        this.$emit('change', evt);\n      }\n    },\n    setArray: function setArray() {\n      // Copy Array\n      var value = this.value.slice(0);\n\n      if (this.isArrayIncludes()) {\n        value.splice(value.indexOf(this.vsValue), 1);\n        this.$emit('input', value);\n        this.$emit('change', value);\n      } else {\n        value.push(this.vsValue);\n        this.$emit('input', value);\n        this.$emit('change', value);\n      }\n    },\n    setValueString: function setValueString() {\n      if (this.value == this.vsValue) {\n        this.$emit('input', null);\n        this.$emit('change', null);\n      } else {\n        this.$emit('input', this.vsValue);\n        this.$emit('change', this.vsValue);\n      }\n    },\n    isArrayIncludes: function isArrayIncludes() {\n      var modelx = this.value;\n      var value = this.vsValue;\n      return modelx.includes(value);\n    },\n    isArrayx: function isArrayx() {\n      return Array.isArray(this.value);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsCheckBox/vsCheckBox.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsCheckBox_vsCheckBoxvue_type_script_lang_js_ = (vsCheckBoxvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsCheckBox/vsCheckBox.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsCheckBox_component = normalizeComponent(\n  vsCheckBox_vsCheckBoxvue_type_script_lang_js_,\n  vsCheckBoxvue_type_template_id_5410a43c_lang_html_render,\n  vsCheckBoxvue_type_template_id_5410a43c_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsCheckBox = (vsCheckBox_component.exports);\n// CONCATENATED MODULE: ./src/components/vsCheckBox/index.js\n\n\n\n/* harmony default export */ var components_vsCheckBox = (function (Vue) {\n  Vue.component(vsCheckBox.name, vsCheckBox);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsRadio/vsRadio.vue?vue&type=template&id=0c37efa3&lang=html&\nvar vsRadiovue_type_template_id_0c37efa3_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"vs-component con-vs-radio\",class:[(\"vs-radio-\" + _vm.color)]},[_c('input',_vm._g(_vm._b({staticClass:\"vs-radio--input\",attrs:{\"name\":_vm.vsName || _vm.value,\"type\":\"radio\"},domProps:{\"checked\":_vm.isChecked,\"value\":_vm.value}},'input',_vm.$attrs,false),_vm.listeners)),_c('span',{staticClass:\"vs-radio\"},[_c('span',{staticClass:\"vs-radio--borde\",style:(_vm.styles)}),_c('span',{staticClass:\"vs-radio--circle\",style:(_vm.styleCircle)})]),_c('span',{staticClass:\"vs-radio--label\"},[_vm._t(\"default\")],2)])}\nvar vsRadiovue_type_template_id_0c37efa3_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsRadio/vsRadio.vue?vue&type=template&id=0c37efa3&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsRadio/vsRadio.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsRadiovue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsRadiovue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsRadiovue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsRadiovue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsRadiovue_type_script_lang_js_ = ({\n  name: 'VsRadio',\n  inheritAttrs: false,\n  props: {\n    value: {},\n    vsValue: {},\n    vsName: {},\n    color: {\n      default: 'primary',\n      type: String\n    }\n  },\n  computed: {\n    listeners: function listeners() {\n      var _this = this;\n\n      return vsRadiovue_type_script_lang_js_objectSpread({}, this.$listeners, {\n        input: function input() {\n          return _this.$emit('input', _this.vsValue);\n        },\n        click: function click() {\n          return _this.$emit('input', _this.vsValue);\n        }\n      });\n    },\n    attrs: function attrs() {\n      var attrsx = JSON.parse(JSON.stringify(this.$attrs));\n      return {\n        attrsx: attrsx\n      };\n    },\n    isChecked: function isChecked() {\n      return this.vsValue == this.value;\n    },\n    styles: function styles() {\n      return {\n        'border': \"2px solid \".concat(this.isChecked ? utils_color.getColor(this.color, 1) : 'rgb(200, 200, 200)')\n      };\n    },\n    styleCircle: function styleCircle() {\n      return {\n        'background': utils_color.getColor(this.color, 1),\n        'box-shadow': \"0px 3px 12px 0px \".concat(utils_color.getColor(this.color, .4))\n      };\n    }\n  },\n  methods: {\n    giveColor: function giveColor(color, opacity) {\n      return utils_color.rColor(color, opacity);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsRadio/vsRadio.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsRadio_vsRadiovue_type_script_lang_js_ = (vsRadiovue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsRadio/vsRadio.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsRadio_component = normalizeComponent(\n  vsRadio_vsRadiovue_type_script_lang_js_,\n  vsRadiovue_type_template_id_0c37efa3_lang_html_render,\n  vsRadiovue_type_template_id_0c37efa3_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsRadio = (vsRadio_component.exports);\n// CONCATENATED MODULE: ./src/components/vsRadio/index.js\n\n\n\n/* harmony default export */ var components_vsRadio = (function (Vue) {\n  Vue.component(vsRadio.name, vsRadio);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsInput/vsInput.vue?vue&type=template&id=5d9b66b3&lang=html&\nvar vsInputvue_type_template_id_5d9b66b3_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"coninput\",staticClass:\"vs-component vs-con-input-label vs-input\",class:[(\"vs-input-\" + _vm.color),{\n    'isFocus':_vm.isFocus,\n    'input-icon-validate-success':_vm.success,\n    'input-icon-validate-danger':_vm.danger,\n    'input-icon-validate-warning':_vm.warning,\n    'is-label-placeholder':_vm.labelPlaceholder\n  }],style:(_vm.styleLabel)},[(_vm.labelPlaceholder?false:_vm.label)?_c('label',{staticClass:\"vs-input--label\",attrs:{\"for\":\"\"},on:{\"click\":_vm.focusInput}},[_vm._v(_vm._s(_vm.label))]):_vm._e(),_c('div',{staticClass:\"vs-con-input\"},[_c('input',_vm._g(_vm._b({ref:\"vsinput\",staticClass:\"vs-inputx vs-input--input\",class:[_vm.size,{\n        'hasValue':_vm.value !== '',\n        'hasIcon':_vm.icon,\n        'icon-after-input':_vm.iconAfter\n      }],style:(_vm.style),attrs:{\"autofocus\":_vm.autofocus,\"placeholder\":null,\"type\":_vm.$attrs.type?_vm.$attrs.type:'text'},domProps:{\"value\":_vm.value}},'input',_vm.$attrs,false),_vm.listeners)),_c('transition',{attrs:{\"name\":\"placeholderx\"}},[(_vm.isValue&&(_vm.labelPlaceholder||_vm.$attrs.placeholder))?_c('span',{ref:\"spanplaceholder\",staticClass:\"input-span-placeholder vs-input--placeholder\",class:[\n          _vm.labelPlaceholder&&(_vm.size),\n          _vm.size,\n          {\n            'vs-placeholder-label': _vm.labelPlaceholder,\n        }],style:(_vm.styleLabel),on:{\"click\":_vm.focusInput}},[_vm._v(\" \"+_vm._s(_vm.$attrs.placeholder || _vm.labelPlaceholder)+\" \")]):_vm._e()]),(_vm.icon)?_c('vs-icon',{staticClass:\"icon-inputx notranslate vs-input--icon\",class:{'icon-after':_vm.iconAfter, 'icon-no-border':_vm.iconNoBorder},attrs:{\"iconPack\":_vm.iconPack,\"icon\":_vm.icon},on:{\"click\":_vm.focusInput}}):_vm._e(),_c('transition',{attrs:{\"name\":\"icon-validate\"}},[(_vm.success || _vm.danger || _vm.warning)?_c('span',{staticClass:\"input-icon-validate vs-input--icon-validate\",class:{'icon-before':_vm.iconAfter}},[_c('vs-icon',{class:{'icon-before':_vm.iconAfter},attrs:{\"iconPack\":_vm.valIconPack,\"icon\":_vm.getIcon}})],1):_vm._e()])],1),_c('transition-group',{on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"leave\":_vm.leave}},[(_vm.success)?_c('div',{key:\"success\",staticClass:\"con-text-validation vs-input--text-validation\"},[_c('span',{staticClass:\"span-text-validation span-text-validation-success vs-input--text-validation-span\"},[_vm._v(\" \"+_vm._s(_vm.successText)+\" \")])]):(_vm.danger)?_c('div',{key:\"danger\",staticClass:\"con-text-validation span-text-validation-danger vs-input--text-validation-span\"},[_c('span',{staticClass:\"span-text-validation\"},[_vm._v(\" \"+_vm._s(_vm.dangerText)+\" \")])]):(_vm.warning)?_c('div',{key:\"warning\",staticClass:\"con-text-validation span-text-validation-warning vs-input--text-validation-span\"},[_c('span',{staticClass:\"span-text-validation\"},[_vm._v(\" \"+_vm._s(_vm.warningText)+\" \")])]):_vm._e(),(_vm.descriptionText)?_c('div',{key:\"description\",staticClass:\"con-text-validation span-text-validation vs-input--text-validation-span\"},[_c('span',{staticClass:\"span-text-validation\"},[_vm._v(\" \"+_vm._s(_vm.descriptionText)+\" \")])]):_vm._e()])],1)}\nvar vsInputvue_type_template_id_5d9b66b3_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsInput/vsInput.vue?vue&type=template&id=5d9b66b3&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsInput/vsInput.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsInputvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsInputvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsInputvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsInputvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsInputvue_type_script_lang_js_ = ({\n  name: 'VsInput',\n  inheritAttrs: false,\n  props: {\n    value: {\n      default: '',\n      type: [String, Number]\n    },\n    labelPlaceholder: {\n      default: null,\n      type: [String, Number]\n    },\n    label: {\n      default: null,\n      type: [String, Number]\n    },\n    autofocus: {\n      default: false,\n      type: [Boolean, String]\n    },\n    icon: {\n      default: null,\n      type: String\n    },\n    iconAfter: {\n      default: false,\n      type: [Boolean, String]\n    },\n    iconNoBorder: {\n      default: false,\n      type: Boolean\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    color: {\n      default: 'primary',\n      type: String\n    },\n    success: {\n      default: false,\n      type: Boolean\n    },\n    danger: {\n      default: false,\n      type: Boolean\n    },\n    warning: {\n      default: false,\n      type: Boolean\n    },\n    successText: {\n      default: null,\n      type: String\n    },\n    dangerText: {\n      default: null,\n      type: String\n    },\n    warningText: {\n      default: null,\n      type: String\n    },\n    descriptionText: {\n      default: null,\n      type: String\n    },\n    size: {\n      default: 'normal',\n      type: String\n    },\n    valIconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    valIconSuccess: {\n      default: null,\n      type: String\n    },\n    valIconDanger: {\n      default: null,\n      type: String\n    },\n    valIconWarning: {\n      default: null,\n      type: String\n    }\n  },\n  inject: {\n    elForm: {\n      default: ''\n    },\n    elFormItem: {\n      default: ''\n    }\n  },\n  data: function data() {\n    return {\n      isFocus: false\n    };\n  },\n  computed: {\n    style: function style() {\n      return {\n        border: \"1px solid \".concat(this.isFocus ? utils_color.getColor(this.color, 1) : 'rgba(0, 0, 0,.2)')\n      };\n    },\n    styleLabel: function styleLabel() {\n      return {\n        color: this.isFocus ? utils_color.getColor(this.color, 1) : null\n      };\n    },\n    listeners: function listeners() {\n      var _this = this;\n\n      return vsInputvue_type_script_lang_js_objectSpread({}, this.$listeners, {\n        input: function input(evt) {\n          _this.$emit('input', evt.target.value);\n        },\n        focus: function focus(evt) {\n          _this.$emit('focus', evt);\n\n          _this.changeFocus(true);\n        },\n        blur: function blur(evt) {\n          _this.$emit('blur', evt);\n\n          _this.changeFocus(false);\n        }\n      });\n    },\n    isValue: function isValue() {\n      return this.labelPlaceholder ? true : !this.value;\n    },\n    getIcon: function getIcon() {\n      return this.danger ? this.valIconDanger : this.warning ? this.valIconWarning : this.success ? this.valIconSuccess : '';\n    }\n  },\n  methods: {\n    // animation\n    changeFocus: function changeFocus(booleanx) {\n      this.isFocus = booleanx;\n    },\n    beforeEnter: function beforeEnter(el) {\n      el.style.height = 0;\n    },\n    enter: function enter(el, done) {\n      var h = el.scrollHeight;\n      el.style.height = h + 'px';\n      done();\n    },\n    leave: function leave(el) {\n      el.style.height = 0 + 'px';\n    },\n    focusInput: function focusInput() {\n      this.$refs.vsinput.focus();\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsInput/vsInput.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsInput_vsInputvue_type_script_lang_js_ = (vsInputvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsInput/vsInput.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsInput_component = normalizeComponent(\n  vsInput_vsInputvue_type_script_lang_js_,\n  vsInputvue_type_template_id_5d9b66b3_lang_html_render,\n  vsInputvue_type_template_id_5d9b66b3_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsInput = (vsInput_component.exports);\n// CONCATENATED MODULE: ./src/components/vsInput/index.js\n\n\n\n/* harmony default export */ var components_vsInput = (function (Vue) {\n  Vue.component(vsInput.name, vsInput);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTabs/vsTabs.vue?vue&type=template&id=398ff2c3&lang=html&\nvar vsTabsvue_type_template_id_398ff2c3_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"con-vs-tabs vs-tabs\",class:[(\"vs-tabs-\" + _vm.color),(\"vs-tabs-position-\" + _vm.position)]},[_c('div',{staticClass:\"con-ul-tabs\"},[_c('ul',{ref:\"ul\",staticClass:\"ul-tabs vs-tabs--ul\",class:[(\"ul-tabs-\" + _vm.alignment)]},_vm._l((_vm.children),function(child,index){return _c('li',{ref:\"li\",refInFor:true,staticClass:\"vs-tabs--li\",class:{'activeChild':_vm.childActive == index},style:(_vm.childActive == index ? _vm.styleTab : {}),on:{\"mouseover\":function($event){_vm.hover = true},\"mouseout\":function($event){_vm.hover = false}}},[_c('button',_vm._g(_vm._b({staticClass:\"vs-tabs--btn\",style:(_vm.styleAlignIcon(child.icon)),attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.activeChild(index)}}},'button',child.attrs,false),child.listeners),[(child.icon)?_c('vs-icon',{staticClass:\"vs-tabs--btn-icon\",attrs:{\"icon-pack\":child.iconPack,\"icon\":child.icon,\"color\":_vm.color}}):_vm._e(),(child.label)?_c('span',[_vm._v(_vm._s(child.label))]):_vm._e()],1),(child.tag)?_c('button',{staticClass:\"vs-tabs--btn-tag\",on:{\"click\":function($event){return _vm.clickTag(child)}}},[_c('vs-icon',{attrs:{\"icon-pack\":child.iconPack,\"icon\":child.tag,\"color\":child.tagColor}})],1):_vm._e()])}),0),_c('span',{staticClass:\"line-vs-tabs\",style:(_vm.stylex)})]),_c('div',{staticClass:\"con-slot-tabs\"},[_vm._t(\"default\")],2)])}\nvar vsTabsvue_type_template_id_398ff2c3_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsTabs/vsTabs.vue?vue&type=template&id=398ff2c3&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsIcon/vsIcon.vue?vue&type=template&id=3c591b9c&\nvar vsIconvue_type_template_id_3c591b9c_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('i',_vm._g(_vm._b({staticClass:\"vs-icon notranslate icon-scale\",class:[_vm.iconPack, _vm.iconPack !='material-icons' ? _vm.icon : '',_vm.iconClass,_vm.getBg,_vm.getBgSize,{'round':_vm.round}],style:(_vm.iconStyle)},'i',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\",[_vm._v(_vm._s(_vm.iconPack == 'material-icons' ? _vm.icon : ''))])],2)}\nvar vsIconvue_type_template_id_3c591b9c_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsIcon/vsIcon.vue?vue&type=template&id=3c591b9c&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsIcon/vsIcon.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsIconvue_type_script_lang_js_ = ({\n  name: 'VsIcon',\n  props: {\n    icon: {\n      default: null,\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    color: {\n      default: null,\n      type: String\n    },\n    bg: {\n      default: null,\n      type: String\n    },\n    size: {\n      default: null,\n      type: String\n    },\n    round: {\n      default: false,\n      type: Boolean\n    }\n  },\n  computed: {\n    iconClass: function iconClass() {\n      var classes = {};\n      classes[this.size] = true;\n\n      if (utils_color.isColor(this.color)) {\n        classes[\"vs-icon-\".concat(this.color)] = true;\n      }\n\n      return classes;\n    },\n    iconStyle: function iconStyle() {\n      var style = {\n        width: /(px)/.test(this.size) ? this.size : /(em)/.test(this.size) ? this.size : null,\n        height: /(px)/.test(this.size) ? this.size : /(em)/.test(this.size) ? this.size : null,\n        'font-size': /(px)/.test(this.size) ? this.size : /(em)/.test(this.size) ? this.size : null,\n        color: this.getColor,\n        background: this.getBgColor\n      };\n      return style;\n    },\n    getBg: function getBg() {\n      var classes = {};\n\n      if (utils_color.isColor(this.bg)) {\n        classes[\"con-vs-icon-bg-\".concat(this.bg)] = true;\n      }\n\n      return classes;\n    },\n    getBgSize: function getBgSize() {\n      var classes = {};\n\n      if (['small', 'medium', 'large'].includes(this.size)) {\n        classes[\"bg-\".concat(this.size)] = true;\n        classes['vs-icon-bg'] = true;\n      }\n\n      return classes;\n    },\n    getColor: function getColor() {\n      return utils_color.isColor(this.color) ? this.color : this.color;\n    },\n    getBgColor: function getBgColor() {\n      return utils_color.isColor(this.bg) ? this.bg : this.bg;\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsIcon/vsIcon.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsIcon_vsIconvue_type_script_lang_js_ = (vsIconvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsIcon/vsIcon.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsIcon_component = normalizeComponent(\n  vsIcon_vsIconvue_type_script_lang_js_,\n  vsIconvue_type_template_id_3c591b9c_render,\n  vsIconvue_type_template_id_3c591b9c_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsIcon = (vsIcon_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTabs/vsTabs.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var vsTabsvue_type_script_lang_js_ = ({\n  name: 'VsTabs',\n  components: {\n    vsIcon: vsIcon\n  },\n  props: {\n    value: {\n      default: 0,\n      type: [Number, String]\n    },\n    color: {\n      default: 'primary',\n      type: String\n    },\n    tagColor: {\n      default: 'primary',\n      type: String\n    },\n    alignment: {\n      default: 'left',\n      type: String\n    },\n    position: {\n      default: 'top',\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      topx: 'auto',\n      heightx: 2,\n      hover: false,\n      children: [],\n      childActive: 0,\n      leftx: 0,\n      widthx: 0,\n      these: false\n    };\n  },\n  computed: {\n    styleTab: function styleTab() {\n      return {\n        color: utils_color.getColor(this.color, 1)\n      };\n    },\n    stylex: function stylex() {\n      return {\n        top: \"\".concat(this.topx, \"px\"),\n        left: \"\".concat(this.leftx, \"px\"),\n        width: \"\".concat(this.widthx, \"px\"),\n        height: \"\".concat(this.heightx, \"px\"),\n        background: \"linear-gradient(30deg, \".concat(utils_color.getColor(this.color, 1), \" 0%, \").concat(utils_color.getColor(this.color, .5), \" 100%)\"),\n        boxShadow: \"0px 0px 8px 0px \".concat(utils_color.getColor(this.color, .5)),\n        transform: \"scaleX(\".concat(this.these ? 1.3 : 1, \")\")\n      };\n    }\n  },\n  watch: {\n    value: function value(index) {\n      var activeIndex = this.parseIndex(index);\n      this.activeChild(activeIndex);\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    var activeIndex = this.parseIndex(this.value);\n    this.childActive = activeIndex;\n    this.$nextTick(function () {\n      _this.activeChild(activeIndex, true);\n    });\n  },\n  methods: {\n    clickTag: function clickTag(child) {\n      this.$emit('click-tag', child);\n    },\n    styleAlignIcon: function styleAlignIcon(icon) {\n      return icon ? 'display:flex;align-items:center' : '';\n    },\n    parseIndex: function parseIndex(index) {\n      var activeIndex = this.childActive;\n\n      if (index < 0) {\n        activeIndex = 0;\n      } else if (index >= this.$children.length) {\n        activeIndex = this.$children.length - 1;\n      } else if (typeof this.$children[index].$attrs.disabled === 'undefined') {\n        activeIndex = parseInt(index);\n      }\n\n      return activeIndex;\n    },\n    activeChild: function activeChild(index, initialAnimation) {\n      var _this2 = this;\n\n      initialAnimation = !!initialAnimation;\n      var elem = this.$refs.li[index];\n\n      if (this.childActive == index && !initialAnimation) {\n        this.these = true;\n        elem.classList.add('isActive');\n        setTimeout(function () {\n          elem.classList.remove('isActive');\n          _this2.these = false;\n        }, 200);\n      }\n\n      this.$children.map(function (item, item_index) {\n        if (item_index != index) {\n          item.active = false;\n        }\n      });\n\n      if (this.childActive > index) {\n        this.$children[index].invert = true;\n        this.$children[this.childActive].invert = false;\n      } else {\n        this.$children[this.childActive].invert = true;\n        this.$children[index].invert = false;\n      }\n\n      this.$children[index].active = true;\n      this.childActive = index;\n      this.$emit('input', this.childActive);\n\n      if (this.position == 'left' || this.position == 'right') {\n        this.$children[index].vertical = true;\n      }\n\n      this.changePositionLine(elem, initialAnimation);\n    },\n    changePositionLine: function changePositionLine(elem, initialAnimation) {\n      var _this3 = this;\n\n      if (this.position == 'left' || this.position == 'right') {\n        this.topx = elem.offsetTop;\n        this.heightx = elem.offsetHeight;\n        this.widthx = 2;\n      } else {\n        var update = function update() {\n          _this3.leftx = elem.offsetLeft;\n          _this3.widthx = elem.offsetWidth;\n          _this3.topx = elem.offsetHeight + (elem.getBoundingClientRect().top - _this3.$refs.ul.getBoundingClientRect().top);\n        };\n\n        if (!initialAnimation) {\n          update();\n        } else {\n          setTimeout(update, 100);\n        }\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsTabs/vsTabs.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsTabs_vsTabsvue_type_script_lang_js_ = (vsTabsvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsTabs/vsTabs.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsTabs_component = normalizeComponent(\n  vsTabs_vsTabsvue_type_script_lang_js_,\n  vsTabsvue_type_template_id_398ff2c3_lang_html_render,\n  vsTabsvue_type_template_id_398ff2c3_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsTabs = (vsTabs_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTabs/vsTab.vue?vue&type=template&id=b54984ae&lang=html&\nvar vsTabvue_type_template_id_b54984ae_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":_vm.invert?_vm.vertical?'fade-tab-vertical-invert':'fade-tab-invert':_vm.vertical?'fade-tab-vertical':'fade-tab'}},[(_vm.active)?_c('div',{staticClass:\"con-tab vs-tabs--content\"},[_vm._t(\"default\")],2):_vm._e()])}\nvar vsTabvue_type_template_id_b54984ae_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsTabs/vsTab.vue?vue&type=template&id=b54984ae&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTabs/vsTab.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsTabvue_type_script_lang_js_ = ({\n  name: 'VsTab',\n  inheritAttrs: false,\n  props: {\n    label: {\n      default: 'Label',\n      type: String\n    },\n    icon: {\n      default: '',\n      type: String\n    },\n    tag: {\n      default: '',\n      type: String\n    },\n    iconPack: {\n      type: String,\n      default: 'material-icons'\n    }\n  },\n  data: function data() {\n    return {\n      vertical: false,\n      active: false,\n      id: null,\n      invert: false\n    };\n  },\n  watch: {\n    label: function label(val) {\n      this.$parent.children[this.id].label = val;\n    },\n    '$attrs': function $attrs(val) {\n      console.log('chnaged attr');\n      this.$parent.children[this.id].attrs = val;\n    }\n  },\n  mounted: function mounted() {\n    this.id = this.$parent.children.length;\n    this.$parent.children.push({\n      label: this.label,\n      icon: this.icon,\n      iconPack: this.iconPack,\n      tag: this.tag,\n      id: this.$parent.children.length,\n      listeners: this.$listeners,\n      attrs: this.$attrs\n    });\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsTabs/vsTab.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsTabs_vsTabvue_type_script_lang_js_ = (vsTabvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsTabs/vsTab.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsTab_component = normalizeComponent(\n  vsTabs_vsTabvue_type_script_lang_js_,\n  vsTabvue_type_template_id_b54984ae_lang_html_render,\n  vsTabvue_type_template_id_b54984ae_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsTab = (vsTab_component.exports);\n// CONCATENATED MODULE: ./src/components/vsTabs/index.js\n\n\n\n\n/* harmony default export */ var components_vsTabs = (function (Vue) {\n  Vue.component(vsTabs.name, vsTabs);\n  Vue.component(vsTab.name, vsTab);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSlider/vsSlider.vue?vue&type=template&id=437422ca&lang=html&\nvar vsSlidervue_type_template_id_437422ca_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"con-vs-slider\",class:[\n    (\"vs-slider-\" + _vm.color),\n    {'disabledx':_vm.disabled}\n  ],on:{\"mousewheel\":function($event){$event.preventDefault();return _vm.mousewheelx($event)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }return _vm.keydownLeft($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }return _vm.keydownRight($event)}]}},[_c('button',{ref:\"slider\",staticClass:\"vs-slider\",attrs:{\"disabled\":_vm.disabled},on:{\"click\":function($event){_vm.clickSlider($event),_vm.actived = true}}},[_c('span',{staticClass:\"vs-slider-line-one\",class:{'hasTransition':_vm.effect},style:(_vm.styleLineOne)}),_c('span',{staticClass:\"vs-slider-line-two\"}),_c('span',{staticClass:\"vs-slider-line-efect\",class:{'run-effect':_vm.effect},style:(_vm.styleEfect)}),_vm._l((_vm.countTicks),function(tick,index){return (_vm.ticks&&tick)?_c('span',{staticClass:\"vs-slider--tick\",class:{'isEnd':index == _vm.countTicks-1},style:(_vm.styleTicks(index))}):_vm._e()})],2),_c('button',{ref:\"circle1\",staticClass:\"vs-circle-slider vs-circles-slider vs-slider--circles vs-slider--circle\",class:{\n      'hasTransition':_vm.effect,\n      'isEquals':_vm.isEquals,\n      'changeValue':_vm.changeValue,\n      'isEndValue':_vm.value == _vm.max\n    },style:(_vm.styleCircle),attrs:{\"disabled\":_vm.disabled},on:{\"touchstart\":function($event){_vm.activeFocus($event),_vm.actived = true},\"mousedown\":function($event){_vm.activeFocus($event),_vm.actived = true}}},[_c('span',{staticClass:\"text-circle-slider vs-slider--circle-text\",style:(_vm.styleText)},[_vm._v(\" \"+_vm._s(_vm.valueCircle1)+\" \"),(_vm.textFixed)?_c('span',[_vm._v(\" \"+_vm._s(_vm.textFixed)+\" \")]):_vm._e(),_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon}})],1)]),(Array.isArray(_vm.value))?_c('button',{ref:\"circle2\",staticClass:\"vs-circle-slider-two vs-circles-slider vs-slider--circles vs-slider--circle-two\",class:{\n      'hasTransition':_vm.effect,\n      'isEquals':_vm.isEquals,\n      'changeValue':_vm.changeValue,\n      'isEndValue':_vm.value == _vm.max\n    },style:(_vm.styleCircleTwo),attrs:{\"disabled\":_vm.disabled},on:{\"touchstart\":function($event){_vm.activeFocus($event),_vm.two = true,_vm.actived = true},\"mousedown\":function($event){_vm.activeFocus($event),_vm.two = true,_vm.actived = true}}},[_c('span',{staticClass:\"text-circle-slider vs-slider--circle-text\",style:(_vm.styleText)},[_vm._v(\" \"+_vm._s(_vm.valueCircle2)+\" \"),(_vm.textFixed)?_c('span',[_vm._v(\" \"+_vm._s(_vm.textFixed)+\" \")]):_vm._e(),(_vm.icon)?_c('i',{staticClass:\"material-icons notranslate\",attrs:{\"translate\":\"no\"}},[_vm._v(\" \"+_vm._s(_vm.icon)+\" \")]):_vm._e()])]):_vm._e()])}\nvar vsSlidervue_type_template_id_437422ca_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsSlider/vsSlider.vue?vue&type=template&id=437422ca&lang=html&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.math.sign.js\nvar es_math_sign = __webpack_require__(\"291d\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.number.to-fixed.js\nvar es_number_to_fixed = __webpack_require__(\"5650\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.parse-float.js\nvar es_parse_float = __webpack_require__(\"fadd\");\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSlider/vsSlider.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsSlidervue_type_script_lang_js_ = ({\n  name: \"VsSlider\",\n  props: {\n    value: {},\n    disabled: {\n      default: false,\n      type: [Boolean, String]\n    },\n    color: {\n      default: \"primary\",\n      type: String\n    },\n    max: {\n      default: 100,\n      type: [Number, String]\n    },\n    min: {\n      default: 0,\n      type: Number\n    },\n    ticks: {\n      default: false,\n      type: Boolean\n    },\n    step: {\n      default: 1,\n      type: [Number, String]\n    },\n    stepDecimals: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    icon: {\n      default: null,\n      type: String\n    },\n    iconPack: {\n      default: \"material-icons\",\n      type: String\n    },\n    textFixed: {\n      default: null,\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      leftx: 0,\n      leftTwo: 0,\n      effect: false,\n      two: false,\n      actived: false,\n      changeValue: false,\n      valueCircle1: 0,\n      valueCircle2: 0\n    };\n  },\n  computed: {\n    isEquals: function isEquals() {\n      return Array.isArray(this.value) ? this.value[0] == this.value[1] : false;\n    },\n    countTicks: function countTicks() {\n      return this.max + 1;\n    },\n\n    /*\n     * styles component\n     */\n    styleSlider: function styleSlider() {\n      return {\n        background: utils_color.getColor(this.color, 1)\n      };\n    },\n    styleLineOne: function styleLineOne() {\n      var widthx = this.leftTwo - this.leftx;\n      var leftx = this.leftx;\n\n      if (this.leftx > this.leftTwo) {\n        widthx = this.leftx - this.leftTwo;\n        leftx = this.leftTwo;\n      }\n\n      return {\n        width: \"\".concat(widthx, \"%\"),\n        left: \"\".concat(leftx, \"%\"),\n        background: utils_color.getColor(this.color, 1)\n      };\n    },\n    styleCircle: function styleCircle() {\n      return {\n        left: \"\".concat(this.leftx, \"%\"),\n        border: \"2px solid \".concat(utils_color.getColor(this.color, 1))\n      };\n    },\n    styleCircleTwo: function styleCircleTwo() {\n      return {\n        left: \"\".concat(this.leftTwo, \"%\"),\n        border: \"2px solid \".concat(utils_color.getColor(this.color, 1))\n      };\n    },\n    styleEfect: function styleEfect() {\n      return {\n        left: \"\".concat(this.leftx, \"%\"),\n        background: utils_color.getColor(this.color, 1)\n      };\n    },\n    styleText: function styleText() {\n      return {\n        background: utils_color.getColor(this.color, 1)\n      };\n    }\n  },\n  watch: {\n    value: function value() {\n      var _this = this;\n\n      if (!this.actived) {\n        this.changePosition();\n      }\n\n      this.changeValue = true;\n      setTimeout(function () {\n        _this.changeValue = false;\n      }, 300);\n      this.$emit(\"change\", this.value);\n    },\n    leftx: function leftx() {\n      if (Array.isArray(this.value)) {\n        if (this.leftx > this.leftTwo) {\n          this.valueCircle1 = this.value[1];\n        } else {\n          this.valueCircle1 = this.value[0];\n        }\n      } else {\n        this.valueCircle1 = this.value;\n      }\n    },\n    leftTwo: {\n      handler: function handler() {\n        if (this.leftTwo > this.leftx) {\n          this.valueCircle2 = this.value[1];\n        } else {\n          this.valueCircle2 = this.value[0];\n        }\n      },\n      deep: true\n    }\n  },\n  mounted: function mounted() {\n    this.changePosition();\n  },\n  methods: {\n    mousewheelx: function mousewheelx(evt) {\n      if (!Array.isArray(this.value)) {\n        if (evt.wheelDelta > 0) {\n          var val = parseFloat(this.value) + parseFloat(this.step);\n          val = this.stepDecimals ? this.toDecimal(val) : Math.round(val);\n\n          if (this.value >= this.max) {\n            val = this.max;\n          }\n\n          this.leftx = val;\n          this.$emit(\"input\", val);\n        } else {\n          var _val = parseFloat(this.value) - parseFloat(this.step);\n\n          _val = this.stepDecimals ? this.toDecimal(_val) : Math.round(_val);\n\n          if (this.value <= this.min) {\n            _val = this.min;\n          }\n\n          this.leftx = _val;\n          this.$emit(\"input\", _val);\n        }\n      }\n    },\n    keydownLeft: function keydownLeft() {\n      if (!Array.isArray(this.value)) {\n        var val = parseFloat(this.value) - parseFloat(this.step);\n        val = this.stepDecimals ? this.toDecimal(val) : Math.round(val);\n\n        if (this.value == this.min) {\n          val = this.min;\n        }\n\n        this.leftx = val;\n        this.$emit(\"input\", val);\n      }\n    },\n    keydownRight: function keydownRight() {\n      if (!Array.isArray(this.value)) {\n        var val = parseFloat(this.value) + parseFloat(this.step);\n        val = this.stepDecimals ? this.toDecimal(val) : Math.round(val);\n\n        if (this.value >= this.max) {\n          val = this.max;\n        }\n\n        this.leftx = val;\n        this.$emit(\"input\", val);\n      }\n    },\n    changePosition: function changePosition() {\n      if (Array.isArray(this.value)) {\n        this.leftx = (this.value[1] - this.min) / (this.max - this.min) * 100;\n        this.leftTwo = (this.value[0] - this.min) / (this.max - this.min) * 100;\n      } else {\n        this.leftx = (this.value - this.min) / (this.max - this.min) * 100;\n      }\n    },\n    styleTicks: function styleTicks(index) {\n      var lengthPerStep = 100 / ((this.max - this.min) / this.step);\n      var steps = index / lengthPerStep;\n      return {\n        left: steps * lengthPerStep + \"%\"\n      };\n    },\n    activeFocus: function activeFocus() {\n      window.addEventListener(\"mousemove\", this.mouseMovex);\n      window.addEventListener(\"mouseup\", this.removeEvents);\n      window.addEventListener(\"touchmove\", this.mouseMovex);\n      window.addEventListener(\"touchend\", this.removeEvents);\n    },\n    mouseMovex: function mouseMovex(evt) {\n      var slider = this.$refs.slider;\n      var leftx;\n      /*\n       * change position left circle and bar\n       */\n\n      if (evt.type == \"touchmove\") {\n        leftx = event.targetTouches[0].clientX - slider.getBoundingClientRect().left;\n      } else {\n        leftx = evt.clientX - slider.getBoundingClientRect().left;\n      }\n\n      if (Math.sign(leftx) == -1) {\n        leftx = 0;\n      } else if (leftx > slider.clientWidth) {\n        leftx = slider.clientWidth;\n      }\n\n      this.changeLeft(leftx);\n    },\n    removeEvents: function removeEvents() {\n      this.two = this.actived = false;\n      window.removeEventListener(\"mouseup\", this.removeEvents);\n      window.removeEventListener(\"mousemove\", this.mouseMovex);\n      window.removeEventListener(\"touchmove\", this.mouseMovex);\n      window.removeEventListener(\"touchend\", this.removeEvents);\n    },\n    clickSlider: function clickSlider(evt) {\n      var _this2 = this;\n\n      var slider = this.$refs.slider;\n      var leftx = evt.clientX - slider.getBoundingClientRect().left;\n      this.effect = true;\n      setTimeout(function () {\n        _this2.effect = false;\n      }, 200);\n      var percentX = Math.round(leftx / slider.clientWidth * 100);\n\n      if (Array.isArray(this.value)) {\n        if (Math.abs(percentX - this.leftx) > Math.abs(percentX - this.leftTwo)) {\n          this.two = true;\n        } else {\n          this.two = false;\n        }\n      }\n\n      this.changeLeft(leftx);\n    },\n    changeLeft: function changeLeft(leftx) {\n      var slider = this.$refs.slider;\n      var percentX = leftx / slider.clientWidth * 100;\n      var lengthPerStep = 100 / ((this.max - this.min) / this.step);\n      var steps = Math.round(percentX / lengthPerStep);\n      var val = steps * lengthPerStep * (this.max - this.min) * 0.01 + this.min;\n      val = this.stepDecimals ? this.toDecimal(val) : Math.round(val);\n\n      if (val > this.max) {\n        val = this.max;\n        this[this.two ? \"leftTwo\" : \"leftx\"] = 100;\n      } else {\n        this[this.two ? \"leftTwo\" : \"leftx\"] = steps * lengthPerStep;\n      }\n\n      if (Array.isArray(this.value)) {\n        var valueNew = val;\n\n        if (val == this.max) {\n          valueNew = this.max;\n        }\n\n        var vals = this.value;\n        var min = Math.round(this.leftTwo / 100 * (this.max / this.step)) * this.step;\n        var max = Math.round(this.leftx / 100 * (this.max / this.step)) * this.step;\n\n        if (this.two) {\n          if (min < max) {\n            this.$emit(\"input\", [valueNew, vals[1]]);\n          } else if (min > max) {\n            this.$emit(\"input\", [vals[0], valueNew]);\n          } else {\n            this.$emit(\"input\", [valueNew, valueNew]);\n          }\n        } else {\n          if (min > max) {\n            this.$emit(\"input\", [valueNew, vals[1]]);\n          } else if (min < max) {\n            this.$emit(\"input\", [vals[0], valueNew]);\n          } else {\n            this.$emit(\"input\", [valueNew, valueNew]);\n          }\n        }\n      } else {\n        this.$emit(\"input\", val);\n      }\n    },\n    toDecimal: function toDecimal(value) {\n      return parseFloat(value.toFixed(1));\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsSlider/vsSlider.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsSlider_vsSlidervue_type_script_lang_js_ = (vsSlidervue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsSlider/vsSlider.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsSlider_component = normalizeComponent(\n  vsSlider_vsSlidervue_type_script_lang_js_,\n  vsSlidervue_type_template_id_437422ca_lang_html_render,\n  vsSlidervue_type_template_id_437422ca_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsSlider = (vsSlider_component.exports);\n// CONCATENATED MODULE: ./src/components/vsSlider/index.js\n\n\n\n/* harmony default export */ var components_vsSlider = (function (Vue) {\n  Vue.component(vsSlider.name, vsSlider);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsInputNumber/vsInputNumber.vue?vue&type=template&id=6cf7ade4&lang=html&\nvar vsInputNumbervue_type_template_id_6cf7ade4_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-input-number\",class:[\n    (\"vs-input-number-size-\" + _vm.size),\n    (\"vs-input-number-\" + _vm.color),\n    {'isChangeValue':_vm.isChangeValue}\n  ]},[_c('button',{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:(_vm.less),expression:\"less\"}],staticClass:\"btn-less vs-input-number--button-less\",class:{\n      limit:_vm.value <= _vm.min\n    },style:({\n      background:_vm.getColor\n    }),attrs:{\"disabled\":_vm.$attrs.disabled,\"type\":\"button\"}},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.iconDec}})],1),(_vm.label)?_c('span',[_vm._v(_vm._s(_vm.label))]):_vm._e(),_c('input',_vm._g(_vm._b({ref:\"input\",staticClass:\"vs-input-number--input\",style:(_vm.styleInput),attrs:{\"disabled\":_vm.isDisabled,\"type\":\"number\",\"min\":_vm.min,\"max\":_vm.max},domProps:{\"value\":_vm.value}},'input',_vm.$attrs,false),_vm.listeners)),_c('button',{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:(_vm.plus),expression:\"plus\"}],staticClass:\"btn-plus vs-input-number--button-plus\",class:{\n      limit:_vm.value >= _vm.max && _vm.max !== null\n    },style:({\n      background:_vm.getColor\n    }),attrs:{\"disabled\":_vm.$attrs.disabled,\"type\":\"button\"}},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.iconInc}})],1)])}\nvar vsInputNumbervue_type_template_id_6cf7ade4_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsInputNumber/vsInputNumber.vue?vue&type=template&id=6cf7ade4&lang=html&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/os-browserify/browser.js\nvar browser = __webpack_require__(\"0d67\");\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsInputNumber/vsInputNumber.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsInputNumbervue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsInputNumbervue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsInputNumbervue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsInputNumbervue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var vsInputNumbervue_type_script_lang_js_ = ({\n  name: 'VsInputNumber',\n  directives: {\n    repeatClick: {\n      bind: function bind(el, binding, vnode) {\n        var intervalx = null;\n        var startT;\n\n        var functionx = function functionx() {\n          return vnode.context[binding.expression].apply();\n        };\n\n        var bucle = function bucle() {\n          if (new Date() - startT < 100) {\n            functionx();\n          }\n\n          clearInterval(intervalx);\n          intervalx = null;\n        };\n\n        var eventx = function eventx(e) {\n          if (e.button !== 0) return;\n          startT = new Date();\n\n          var escuchando = function escuchando() {\n            if (bucle) {\n              bucle.apply(this, arguments);\n            }\n\n            el.removeEventListener('mouseup', escuchando, false);\n          };\n\n          el.addEventListener('mouseleave', escuchando, false);\n          el.addEventListener('mouseup', escuchando, false);\n          clearInterval(intervalx);\n          intervalx = setInterval(functionx, 100);\n        };\n\n        el.addEventListener('mousedown', eventx, false);\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: {\n    value: {},\n    color: {\n      default: 'primary',\n      type: String\n    },\n    label: {\n      default: null,\n      type: String\n    },\n    max: {\n      default: null,\n      type: [Number, String]\n    },\n    min: {\n      default: 0,\n      type: [Number, String]\n    },\n    size: {\n      default: null,\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    iconDec: {\n      default: 'remove',\n      type: String\n    },\n    iconInc: {\n      default: 'add',\n      type: String\n    },\n    step: {\n      default: 1,\n      type: [Number, String]\n    },\n    isDisabled: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      isChangeValue: false\n    };\n  },\n  computed: {\n    styleInput: function styleInput() {\n      return {\n        width: \"\".concat(this.getLength, \"px\")\n      };\n    },\n    getLength: function getLength() {\n      if (this.value) {\n        return this.value.toString().length * 9.1;\n      } else {\n        return 0;\n      }\n    },\n    getColor: function getColor() {\n      return utils_color.getColor(this.color, 1);\n    },\n    listeners: function listeners() {\n      var _this = this;\n\n      return vsInputNumbervue_type_script_lang_js_objectSpread({}, this.$listeners, {\n        blur: function blur(evt) {\n          if (parseFloat(_this.value) > parseFloat(_this.max)) {\n            _this.$emit('input', _this.max);\n          } else if (parseFloat(_this.value) < parseFloat(_this.min)) {\n            _this.$emit('input', _this.min);\n\n            _this.$emit('blur', evt);\n          }\n        },\n        input: function input(evt) {\n          _this.$emit('input', evt.target.value);\n        }\n      });\n    }\n  },\n  watch: {\n    value: function value() {\n      var _this2 = this;\n\n      this.isChangeValue = true;\n      setTimeout(function () {\n        _this2.isChangeValue = false;\n      }, 200);\n    }\n  },\n  methods: {\n    plus: function plus() {\n      var newValue;\n\n      if (this.value === '') {\n        newValue = 0;\n        this.$emit('input', newValue);\n      } else {\n        if (this.max ? parseFloat(this.value) < parseFloat(this.max) : true) {\n          newValue = parseFloat(this.value) + parseFloat(this.step);\n          this.$emit('input', newValue);\n        }\n      }\n    },\n    less: function less() {\n      var newValue;\n\n      if (this.value === '') {\n        newValue = 0;\n        this.$emit('input', newValue);\n      } else {\n        if (this.min ? parseFloat(this.value) > parseFloat(this.min) : true) {\n          newValue = parseFloat(this.value) - parseFloat(this.step);\n          this.$emit('input', newValue);\n        }\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsInputNumber/vsInputNumber.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsInputNumber_vsInputNumbervue_type_script_lang_js_ = (vsInputNumbervue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsInputNumber/vsInputNumber.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsInputNumber_component = normalizeComponent(\n  vsInputNumber_vsInputNumbervue_type_script_lang_js_,\n  vsInputNumbervue_type_template_id_6cf7ade4_lang_html_render,\n  vsInputNumbervue_type_template_id_6cf7ade4_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsInputNumber = (vsInputNumber_component.exports);\n// CONCATENATED MODULE: ./src/components/vsInputNumber/index.js\n\n\n\n/* harmony default export */ var components_vsInputNumber = (function (Vue) {\n  Vue.component(vsInputNumber.name, vsInputNumber);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTooltip/vsTooltip.vue?vue&type=template&id=cd60883c&\nvar vsTooltipvue_type_template_id_cd60883c_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"convstooltip\",staticClass:\"con-vs-tooltip\",on:{\"mouseleave\":_vm.mouseleavex,\"mouseenter\":_vm.mouseenterx}},[_c('transition',{attrs:{\"name\":\"tooltip-fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.activeTooltip),expression:\"activeTooltip\"}],ref:\"vstooltip\",staticClass:\"vs-tooltip\",class:[(\"vs-tooltip-\" + (_vm.positionx || _vm.position)),(\"vs-tooltip-\" + _vm.color), {'after-none': _vm.noneAfter}],style:(_vm.style)},[(_vm.title)?_c('h4',[_vm._v(_vm._s(_vm.title))]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.text)+\" \")])]),_vm._t(\"default\")],2)}\nvar vsTooltipvue_type_template_id_cd60883c_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsTooltip/vsTooltip.vue?vue&type=template&id=cd60883c&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTooltip/vsTooltip.vue?vue&type=script&lang=js&\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var vsTooltipvue_type_script_lang_js_ = ({\n  name: 'VsTooltip',\n  props: {\n    title: {\n      default: null,\n      type: [String, Number]\n    },\n    text: {\n      default: null,\n      type: [String, Number]\n    },\n    color: {\n      default: null,\n      type: String\n    },\n    position: {\n      default: 'top',\n      type: String\n    },\n    delay: {\n      default: '0s',\n      type: [Number, String]\n    },\n    active: {\n      default: true,\n      type: [Boolean]\n    }\n  },\n  data: function data() {\n    return {\n      cords: {},\n      activeTooltip: false,\n      widthx: 'auto',\n      positionx: null,\n      noneAfter: false\n    };\n  },\n  computed: {\n    style: function style() {\n      return {\n        left: this.cords.left,\n        top: this.cords.top,\n        transitionDelay: this.activeTooltip ? this.delay : '0s',\n        background: utils_color.getColor(this.color, 1),\n        width: this.widthx\n      };\n    }\n  },\n  mounted: function mounted() {// utils.insertBody(this.$refs.vstooltip)\n  },\n  updated: function updated() {\n    var nodes = this.$refs.convstooltip.childNodes.length;\n\n    if (nodes === 1) {\n      this.activeTooltip = false;\n    }\n  },\n  methods: {\n    mouseenterx: function mouseenterx() {\n      var _this = this;\n\n      if (this.active) {\n        this.activeTooltip = true;\n        this.$nextTick(function () {\n          utils.insertBody(_this.$refs.vstooltip);\n\n          _this.changePosition(_this.$refs.convstooltip, _this.$refs.vstooltip);\n        });\n      }\n    },\n    mouseleavex: function mouseleavex() {\n      this.activeTooltip = false;\n\n      if (this.$refs.vstooltip) {\n        utils.removeBody(this.$refs.vstooltip);\n      }\n    },\n    changePosition: function changePosition(elxEvent, tooltip) {\n      this.noneAfter = false;\n      this.positionx = null;\n      var elx = elxEvent.closest('.con-vs-tooltip');\n      var scrollTopx = window.pageYOffset || document.documentElement.scrollTop;\n      var topx = elx.getBoundingClientRect().top + scrollTopx - tooltip.clientHeight - 4;\n      var leftx = elx.getBoundingClientRect().left - tooltip.clientWidth / 2 + elx.clientWidth / 2;\n      var widthx = elx.clientWidth;\n\n      if (this.position === 'bottom') {\n        topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight + 4;\n      } else if (this.position === 'left') {\n        leftx = elx.getBoundingClientRect().left - tooltip.clientWidth - 4;\n        topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight / 2 - tooltip.clientHeight / 2;\n\n        if (Math.sign(leftx) === -1) {\n          leftx = elx.getBoundingClientRect().left;\n          topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight + 4;\n          this.positionx = 'bottom';\n          this.noneAfter = true;\n        }\n      } else if (this.position === 'right') {\n        leftx = elx.getBoundingClientRect().left + elx.clientWidth + 4;\n        topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight / 2 - tooltip.clientHeight / 2;\n\n        if (window.innerWidth - (leftx + tooltip.clientWidth) <= 20) {\n          leftx = elx.getBoundingClientRect().left - tooltip.clientWidth / 2 - 10;\n          topx = elx.getBoundingClientRect().top + scrollTopx + elx.clientHeight + 4;\n          this.positionx = 'bottom';\n          this.noneAfter = true;\n        }\n      }\n\n      this.cords = {\n        left: \"\".concat(leftx, \"px\"),\n        top: \"\".concat(topx, \"px\"),\n        width: \"\".concat(widthx, \"px\")\n      };\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsTooltip/vsTooltip.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsTooltip_vsTooltipvue_type_script_lang_js_ = (vsTooltipvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsTooltip/vsTooltip.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsTooltip_component = normalizeComponent(\n  vsTooltip_vsTooltipvue_type_script_lang_js_,\n  vsTooltipvue_type_template_id_cd60883c_render,\n  vsTooltipvue_type_template_id_cd60883c_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsTooltip = (vsTooltip_component.exports);\n// CONCATENATED MODULE: ./src/components/vsTooltip/index.js\n\n\n\n/* harmony default export */ var components_vsTooltip = (function (Vue) {\n  Vue.component(vsTooltip.name, vsTooltip);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsUpload/vsUpload.vue?vue&type=template&id=779405ce&\nvar vsUploadvue_type_template_id_779405ce_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"con-upload\"},[(_vm.viewActive)?_c('view-upload',{attrs:{\"src\":_vm.viewSrc}}):_vm._e(),_c('div',{staticClass:\"con-img-upload\"},[_vm._l((_vm.getFilesFilter),function(img,index){return _c('div',{key:index,staticClass:\"img-upload\",class:{\n        'fileError':img.error,\n        'removeItem':_vm.itemRemove.includes(index)\n      }},[_c('button',{staticClass:\"btn-x-file\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.removeFile(index)}}},[_c('i',{staticClass:\"material-icons notranslate\",attrs:{\"translate\":\"no\"}},[_vm._v(\" clear \")])]),(_vm.showUploadButton)?_c('button',{staticClass:\"btn-upload-file\",class:{\n          'on-progress':img.percent,\n          'ready-progress':img.percent >= 100\n        },style:({\n          height: ((img.percent) + \"%\")\n        }),on:{\"click\":function($event){return _vm.upload(index)}}},[_c('i',{staticClass:\"material-icons notranslate\",attrs:{\"translate\":\"no\"}},[_vm._v(\" \"+_vm._s(img.percent >= 100?img.error?'report_problem':'cloud_done':'cloud_upload')+\" \")]),_c('span',[_vm._v(_vm._s(img.percent)+\" %\")])]):_vm._e(),(img.src)?_c('img',{key:index,style:({\n          maxWidth:img.orientation == 'h'?'100%':'none',\n          maxHeight:img.orientation == 'w'?'100%':'none'\n        }),attrs:{\"src\":img.src},on:{\"touchend\":function($event){return _vm.viewImage(img.src,$event)},\"click\":function($event){return _vm.viewImage(img.src,$event)}}}):_vm._e(),(!img.src)?_c('h4',{staticClass:\"text-archive\"},[_c('i',{staticClass:\"material-icons notranslate\",attrs:{\"translate\":\"no\"}},[_vm._v(\" description \")]),_c('span',[_vm._v(\" \"+_vm._s(img.name)+\" \")])]):_vm._e()])}),_c('div',{staticClass:\"con-input-upload\",class:{\n        'on-progress-all-upload':_vm.percent != 0,\n        'is-ready-all-upload':_vm.percent >= 100,\n        'disabled-upload':_vm.$attrs.hasOwnProperty('disabled') || _vm.limit?(_vm.srcs.length - _vm.itemRemove.length) >= Number(_vm.limit):false\n      }},[_c('input',_vm._b({ref:\"fileInput\",attrs:{\"disabled\":_vm.$attrs.disabled || _vm.limit?(_vm.srcs.length - _vm.itemRemove.length) >= Number(_vm.limit):false,\"type\":\"file\"},on:{\"change\":_vm.getFiles}},'input',_vm.$attrs,false)),_c('span',{staticClass:\"text-input\"},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]),_c('span',{staticClass:\"input-progress\",style:({\n          width:(_vm.percent + \"%\")\n        })}),(_vm.showUploadButton)?_c('button',{staticClass:\"btn-upload-all vs-upload--button-upload\",attrs:{\"disabled\":_vm.filesx.length == 0,\"type\":\"button\",\"title\":\"Upload\"},on:{\"click\":function($event){return _vm.upload('all')}}},[_c('i',{staticClass:\"material-icons notranslate\",attrs:{\"translate\":\"no\"}},[_vm._v(\" cloud_upload \")])]):_vm._e()])],2)],1)}\nvar vsUploadvue_type_template_id_779405ce_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsUpload/vsUpload.vue?vue&type=template&id=779405ce&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.math.trunc.js\nvar es_math_trunc = __webpack_require__(\"0ca8\");\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsUpload/viewUpload.vue?vue&type=template&id=59baff2a&\nvar viewUploadvue_type_template_id_59baff2a_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"view-upload\"}},[_c('div',{ref:\"view\",staticClass:\"view-upload\",on:{\"click\":_vm.closeView}},[_c('img',{attrs:{\"src\":_vm.src,\"alt\":\"image\"}})])])}\nvar viewUploadvue_type_template_id_59baff2a_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsUpload/viewUpload.vue?vue&type=template&id=59baff2a&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsUpload/viewUpload.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var viewUploadvue_type_script_lang_js_ = ({\n  name: 'ViewUpload',\n  props: {\n    active: {\n      default: false,\n      type: Boolean\n    },\n    src: {\n      default: null,\n      type: String\n    }\n  },\n  mounted: function mounted() {\n    utils.insertBody(this.$refs.view);\n  },\n  upload: function upload() {\n    utils.insertBody(this.$refs.view);\n  },\n  methods: {\n    closeView: function closeView(evt) {\n      if (evt.target.tagName != 'IMG') {\n        this.$parent.viewActive = false;\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsUpload/viewUpload.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsUpload_viewUploadvue_type_script_lang_js_ = (viewUploadvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsUpload/viewUpload.vue\n\n\n\n\n\n/* normalize component */\n\nvar viewUpload_component = normalizeComponent(\n  vsUpload_viewUploadvue_type_script_lang_js_,\n  viewUploadvue_type_template_id_59baff2a_render,\n  viewUploadvue_type_template_id_59baff2a_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var viewUpload = (viewUpload_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsUpload/vsUpload.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar lastTap = 0;\n/* harmony default export */ var vsUploadvue_type_script_lang_js_ = ({\n  name: 'VsUpload',\n  components: {\n    viewUpload: viewUpload\n  },\n  inheritAttrs: false,\n  props: {\n    fileName: {\n      default: null,\n      type: String\n    },\n    text: {\n      default: 'Upload File',\n      type: String\n    },\n    textMax: {\n      default: 'Maximum of files reached',\n      type: String\n    },\n    limit: {\n      default: null,\n      type: [Number, String]\n    },\n    action: {\n      default: null,\n      type: String\n    },\n    headers: {\n      default: null,\n      type: Object\n    },\n    data: {\n      default: null,\n      type: Object\n    },\n    automatic: {\n      default: false,\n      type: Boolean\n    },\n    showUploadButton: {\n      default: true,\n      type: Boolean\n    },\n    singleUpload: {\n      default: false,\n      type: Boolean\n    }\n  },\n  data: function data() {\n    return {\n      inputValue: null,\n      type: null,\n      srcs: [],\n      filesx: [],\n      itemRemove: [],\n      percent: 0,\n      viewActive: false,\n      viewSrc: null\n    };\n  },\n  computed: {\n    getFilesFilter: function getFilesFilter() {\n      var files = this.srcs.filter(function (item) {\n        return !item.remove;\n      });\n      return files;\n    },\n    postFiles: function postFiles() {\n      var postFiles = Array.prototype.slice.call(this.filesx);\n      postFiles = postFiles.filter(function (item) {\n        return !item.hasOwnProperty('remove');\n      });\n      return postFiles.length;\n    }\n  },\n  watch: {\n    percent: function percent() {\n      var _this2 = this;\n\n      if (this.percent >= 100) {\n        this.srcs.forEach(function (file) {\n          file.percent = 100;\n        });\n        setTimeout(function () {\n          _this2.percent = 0;\n        }, 1000);\n      }\n    }\n  },\n  methods: {\n    viewImage: function viewImage(src, evt) {\n      var timeout;\n      var eventx = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch ? 'touchstart' : 'click';\n\n      if (eventx == 'click') {\n        this.viewActive = true;\n        this.viewSrc = src;\n      } else {\n        if (evt.type == 'touchend') {\n          var currentTime = new Date().getTime();\n          var tapLength = currentTime - lastTap;\n          clearTimeout(timeout);\n\n          if (tapLength < 500 && tapLength > 0) {\n            this.viewActive = true;\n            this.viewSrc = src;\n            event.preventDefault();\n          }\n\n          lastTap = currentTime;\n        }\n      }\n    },\n    removeFile: function removeFile(index) {\n      var _this3 = this;\n\n      this.itemRemove.push(index);\n      this.$emit('on-delete', this.filesx[index]);\n      setTimeout(function () {\n        _this3.filesx[index].remove = true;\n      }, 301);\n    },\n    getFiles: function getFiles(e) {\n      this.$emit('update:vsFile', e.target.value);\n\n      var _this = this;\n\n      function uploadImage(e) {\n        var orientation = 'h';\n        var image = new Image();\n        image.src = e.target.result;\n\n        image.onload = function () {\n          if (this.width > this.height) {\n            orientation = 'w';\n          }\n\n          switchImage(this, orientation);\n        };\n      }\n\n      function switchImage(image, orientation) {\n        _this.srcs.push({\n          src: image.src,\n          orientation: orientation,\n          type: _this.typex,\n          percent: null,\n          error: false,\n          remove: null\n        });\n      }\n\n      var files = e.target.files;\n      var count = this.srcs.length - this.itemRemove.length;\n\n      for (var file in files) {\n        if (files.hasOwnProperty(file)) {\n          if (this.limit) {\n            count++;\n\n            if (count > Number(this.limit)) {\n              break;\n            }\n          }\n\n          var reader = new FileReader();\n          var filex = files[file];\n\n          if (/image.*/.test(filex.type)) {\n            this.typex = 'image';\n            this.filesx.push(filex);\n            reader.onload = uploadImage;\n            reader.readAsDataURL(filex);\n          } else if (/video.*/.test(filex.type)) {\n            this.typex = 'video';\n            this.filesx.push(filex);\n\n            _this.srcs.push({\n              src: null,\n              name: filex.name,\n              type: 'video',\n              percent: null,\n              error: false,\n              remove: null\n            });\n          } else {\n            this.filesx.push(filex);\n\n            _this.srcs.push({\n              src: null,\n              name: filex.name,\n              percent: null,\n              error: false,\n              remove: null\n            });\n          }\n\n          this.$emit('change', e.target.value, this.filesx);\n        }\n      }\n\n      var input = this.$refs.fileInput;\n      input.type = 'text';\n      input.type = 'file';\n\n      if (this.automatic) {\n        this.upload('all');\n      }\n    },\n    upload: function upload(index) {\n      var _this4 = this;\n\n      var formData = new FormData();\n      var postFiles = Array.prototype.slice.call(this.filesx);\n\n      if (typeof index == 'number') {\n        postFiles = [postFiles[index]];\n      } else if (index == 'all') {\n        postFiles = postFiles.filter(function (item) {\n          return !item.hasOwnProperty('remove');\n        });\n      }\n\n      var data = this.data || {};\n\n      for (var key in data) {\n        formData.append(key, data[key]);\n      }\n\n      if (this.singleUpload) {\n        postFiles.forEach(function (filex) {\n          var formData = new FormData();\n\n          for (var key in data) {\n            formData.append(key, data[key]);\n          }\n\n          formData.append(_this4.fileName, filex, filex.name);\n\n          _this4.uploadx(index, formData);\n        });\n      } else {\n        postFiles.forEach(function (filex) {\n          formData.append(_this4.fileName, filex, filex.name);\n        });\n        this.uploadx(index, formData);\n      }\n    },\n    uploadx: function uploadx(index, formData) {\n      var self = this;\n      var xhr = new XMLHttpRequest();\n\n      xhr.onerror = function error(e) {\n        self.$emit('on-error', e);\n\n        if (typeof index == 'number') {\n          self.srcs[index].error = true;\n        }\n      };\n\n      xhr.onload = function onload(e) {\n        if (xhr.status < 200 || xhr.status >= 300) {\n          self.$emit('on-error', e);\n\n          if (typeof index == 'number') {\n            self.srcs[index].error = true;\n          }\n        } else {\n          self.$emit('on-success', e);\n        }\n      };\n\n      if (xhr.upload) {\n        xhr.upload.onprogress = function progress(e) {\n          if (e.total > 0) {\n            var percent = e.loaded / e.total * 100;\n\n            if (typeof index == 'number') {\n              self.srcs[index].percent = Math.trunc(percent);\n            } else {\n              self.percent = Math.trunc(percent);\n            }\n          }\n        };\n      }\n\n      xhr.withCredentials = true;\n      xhr.open('POST', this.action, true);\n      var headers = this.headers || {};\n\n      for (var head in headers) {\n        if (headers.hasOwnProperty(head) && headers[head] !== null) {\n          xhr.setRequestHeader(head, headers[head]);\n        }\n      }\n\n      xhr.send(formData);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsUpload/vsUpload.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsUpload_vsUploadvue_type_script_lang_js_ = (vsUploadvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsUpload/vsUpload.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsUpload_component = normalizeComponent(\n  vsUpload_vsUploadvue_type_script_lang_js_,\n  vsUploadvue_type_template_id_779405ce_render,\n  vsUploadvue_type_template_id_779405ce_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsUpload = (vsUpload_component.exports);\n// CONCATENATED MODULE: ./src/components/vsUpload/index.js\n\n\n\n/* harmony default export */ var components_vsUpload = (function (Vue) {\n  Vue.component(vsUpload.name, vsUpload);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsPopup/vsPopup.vue?vue&type=template&id=3a9785ac&lang=html&\nvar vsPopupvue_type_template_id_3a9785ac_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"popup-t\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}],ref:\"con\",staticClass:\"vs-component con-vs-popup\",class:[(\"vs-popup-\" + _vm.color),{'fullscreen':_vm.fullscreen}],on:{\"click\":function($event){return _vm.close($event,true)}}},[_c('div',{staticClass:\"vs-popup--background\",style:(_vm.styleCon)}),_c('div',{ref:\"popupx\",staticClass:\"vs-popup\",style:(_vm.stylePopup)},[_c('header',{staticClass:\"vs-popup--header\",style:(_vm.styleHeader)},[_c('div',{staticClass:\"vs-popup--title\"},[_c('h3',[_vm._v(_vm._s(_vm.title))])]),(!_vm.buttonCloseHidden)?_c('vs-icon',{ref:\"btnclose\",staticClass:\"vs-popup--close vs-popup--close--icon\",style:(_vm.stylePopup),attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.iconClose},on:{\"click\":_vm.close}}):_vm._e()],1),_c('div',{staticClass:\"vs-popup--content\",class:_vm.classContent,style:(_vm.styleContent)},[_vm._t(\"default\")],2)])])])}\nvar vsPopupvue_type_template_id_3a9785ac_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsPopup/vsPopup.vue?vue&type=template&id=3a9785ac&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsPopup/vsPopup.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsPopupvue_type_script_lang_js_ = ({\n  name: 'VsPopup',\n  props: {\n    color: {\n      default: 'primary',\n      type: String\n    },\n    active: {\n      default: false,\n      type: Boolean\n    },\n    title: {\n      default: 'popup',\n      type: String\n    },\n    buttonCloseHidden: {\n      default: false,\n      type: Boolean\n    },\n    fullscreen: {\n      default: false,\n      type: Boolean\n    },\n    backgroundColor: {\n      default: null,\n      type: String\n    },\n    backgroundColorPopup: {\n      default: 'rgb(255,255,255)',\n      type: String\n    },\n    styleContent: {\n      default: null,\n      type: String\n    },\n    classContent: {\n      default: null,\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    iconClose: {\n      default: 'close',\n      type: String\n    }\n  },\n  computed: {\n    styleHeader: function styleHeader() {\n      return {\n        color: utils_color.getColor(this.color, 1)\n      };\n    },\n    styleAfter: function styleAfter() {\n      return {\n        background: utils_color.getColor(this.color, 1)\n      };\n    },\n    styleCon: function styleCon() {\n      return {\n        background: utils_color.getColor(this.backgroundColor, 1)\n      };\n    },\n    stylePopup: function stylePopup() {\n      return {\n        background: utils_color.getColor(this.backgroundColorPopup, 1)\n      };\n    }\n  },\n  mounted: function mounted() {\n    this.insertBody();\n  },\n  methods: {\n    giveColor: function giveColor(color) {\n      return utils_color.rColor(color);\n    },\n    close: function close(event, con) {\n      if (con) {\n        if (event.target.className && event.target.className.indexOf && event.target.className.indexOf('vs-popup--background') != -1) {\n          this.$emit('update:active', false);\n          this.$emit('close', false);\n        } else if (!this.buttonCloseHidden && event.srcElement == this.$refs.btnclose.$el) {\n          this.$emit('update:active', false);\n          this.$emit('close', false);\n        }\n      }\n    },\n    insertBody: function insertBody() {\n      var elx = this.$refs.con;\n      document.body.insertBefore(elx, document.body.firstChild);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsPopup/vsPopup.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsPopup_vsPopupvue_type_script_lang_js_ = (vsPopupvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsPopup/vsPopup.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsPopup_component = normalizeComponent(\n  vsPopup_vsPopupvue_type_script_lang_js_,\n  vsPopupvue_type_template_id_3a9785ac_lang_html_render,\n  vsPopupvue_type_template_id_3a9785ac_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsPopup = (vsPopup_component.exports);\n// CONCATENATED MODULE: ./src/components/vsPopup/index.js\n\n\n\n/* harmony default export */ var components_vsPopup = (function (Vue) {\n  Vue.component(vsPopup.name, vsPopup);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsAlert/vsAlert.vue?vue&type=template&id=863593c0&lang=html&\nvar vsAlertvue_type_template_id_863593c0_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"leave\":_vm.leave}},[(_vm.active)?_c('div',_vm._g(_vm._b({ref:\"alert\",staticClass:\"con-vs-alert\",class:[(\"con-vs-alert-\" + _vm.color),{\n      'con-icon':_vm.icon,\n    }],style:(_vm.styleAlert)},'div',_vm.$attrs,false),_vm.$listeners),[(_vm.closable)?_c('div',{staticClass:\"con-x vs-alert--close\",on:{\"click\":function($event){return _vm.$emit('update:active',false)}}},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.closeIcon}})],1):_vm._e(),(_vm.title)?_c('h4',{staticClass:\"titlex vs-alert--title\",style:(_vm.styleTitle)},[_vm._v(_vm._s(_vm.title))]):_vm._e(),_c('div',{staticClass:\"vs-alert\",class:{'con-icon': _vm.icon}},[(_vm.icon)?_c('vs-icon',{staticClass:\"icon-alert\",attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon}}):_vm._e(),_vm._t(\"default\")],2)]):_vm._e()])}\nvar vsAlertvue_type_template_id_863593c0_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsAlert/vsAlert.vue?vue&type=template&id=863593c0&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsAlert/vsAlert.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsAlertvue_type_script_lang_js_ = ({\n  name: 'VsAlert',\n  props: {\n    active: {\n      type: [Boolean, String],\n      default: true\n    },\n    title: {\n      type: String,\n      default: null\n    },\n    closable: {\n      type: Boolean,\n      default: false\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    margin: {\n      type: [String, Boolean],\n      default: '10px'\n    },\n    icon: {\n      type: String,\n      default: null\n    },\n    closeIcon: {\n      type: String,\n      default: 'close'\n    },\n    iconPack: {\n      type: String,\n      default: 'material-icons'\n    }\n  },\n  computed: {\n    styleAlert: function styleAlert() {\n      return {\n        background: utils_color.getColor(this.color, .15),\n        boxShadow: \"0px 0px 25px 0px \".concat(utils_color.getColor(this.color, .15)),\n        color: utils_color.getColor(this.color, 1)\n      };\n    },\n    styleTitle: function styleTitle() {\n      return {\n        boxShadow: \"0px 6px 15px -7px \".concat(utils_color.getColor(this.color, .4))\n      };\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    if (this.$refs.alert) {\n      this.$nextTick(function () {\n        var h = _this.$refs.alert.scrollHeight;\n        _this.$refs.alert.style.height = h + 'px';\n      });\n    }\n  },\n  methods: {\n    beforeEnter: function beforeEnter(el) {\n      el.style.height = 0;\n      el.style.opacity = 0;\n    },\n    enter: function enter(el, done) {\n      var h = this.$refs.alert.scrollHeight;\n      this.$refs.alert.style.height = h + 'px';\n      el.style.opacity = 1;\n      done();\n    },\n    leave: function leave(el) {\n      this.$refs.alert.style.height = 0 + 'px';\n      el.style.opacity = 0;\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsAlert/vsAlert.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsAlert_vsAlertvue_type_script_lang_js_ = (vsAlertvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsAlert/vsAlert.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsAlert_component = normalizeComponent(\n  vsAlert_vsAlertvue_type_script_lang_js_,\n  vsAlertvue_type_template_id_863593c0_lang_html_render,\n  vsAlertvue_type_template_id_863593c0_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsAlert = (vsAlert_component.exports);\n// CONCATENATED MODULE: ./src/components/vsAlert/index.js\n\n\n\n/* harmony default export */ var components_vsAlert = (function (Vue) {\n  Vue.component(vsAlert.name, vsAlert);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsChip/vsChip.vue?vue&type=template&id=4cec4c83&lang=html&\nvar vsChipvue_type_template_id_4cec4c83_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"con-vs-chip\",class:[\n    (\"vs-chip-\" + _vm.color),\n    {\n      'closable': _vm.closable,\n      'con-color': _vm.color,\n      'bg-chip-transparent': _vm.transparent\n    }\n  ],style:(_vm.styleChip)},[_c('span',{staticClass:\"text-chip vs-chip--text\"},[_vm._t(\"default\")],2),(_vm.closable)?_c('button',{staticClass:\"btn-close vs-chip--close\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.closeChip}},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.closeIcon}})],1):_vm._e()])}\nvar vsChipvue_type_template_id_4cec4c83_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsChip/vsChip.vue?vue&type=template&id=4cec4c83&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsChip/vsChip.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsChipvue_type_script_lang_js_ = ({\n  name: 'VsChip',\n  props: {\n    item: {\n      type: Boolean\n    },\n    value: {},\n    active: {\n      type: Boolean,\n      default: true\n    },\n    text: {\n      type: String,\n      default: null\n    },\n    closable: {\n      type: [Boolean, String],\n      default: false\n    },\n    color: {\n      type: String,\n      default: null\n    },\n    icon: {\n      type: String,\n      default: null\n    },\n    iconPack: {\n      type: String,\n      default: 'material-icons'\n    },\n    closeIcon: {\n      type: String,\n      default: 'clear'\n    },\n    transparent: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    styleChip: function styleChip() {\n      var background = this.transparent ? utils_color.getColor(this.color, .15) : utils_color.getColor(this.color, 1);\n      var color = this.transparent ? utils_color.getColor(this.color, 1) : this.color ? 'rgba(255,255,255,.9)' : 'rgba(0,0,0,.7)';\n      return {\n        background: background,\n        color: color\n      };\n    },\n    eliminado: function eliminado() {\n      if (this.item) {\n        return true;\n      } else {\n        if (this.vsClosable) {\n          return this.value;\n        } else {\n          return true;\n        }\n      }\n    }\n  },\n  methods: {\n    closeChip: function closeChip() {\n      this.$emit('input', false);\n      this.$emit('click');\n    },\n    remove: function remove() {\n      this.$emit('vs-remove', false);\n      this.$emit('input', false);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsChip/vsChip.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsChip_vsChipvue_type_script_lang_js_ = (vsChipvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsChip/vsChip.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsChip_component = normalizeComponent(\n  vsChip_vsChipvue_type_script_lang_js_,\n  vsChipvue_type_template_id_4cec4c83_lang_html_render,\n  vsChipvue_type_template_id_4cec4c83_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsChip = (vsChip_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsChip/vsChips.vue?vue&type=template&id=5a8a51d4&lang=html&\nvar vsChipsvue_type_template_id_5a8a51d4_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{},[_c('div',{staticClass:\"con-chips\",class:{'no-items':_vm.value.length==0}},[_vm._t(\"default\"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newChip),expression:\"newChip\"}],staticClass:\"con-chips--input\",attrs:{\"placeholder\":_vm.value.length>0?null:_vm.placeholder,\"type\":\"text\"},domProps:{\"value\":(_vm.newChip)},on:{\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.addItem($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.newChip=$event.target.value}}}),_c('div',{staticClass:\"x-global con-chips--remove-all\",on:{\"click\":_vm.removeTotalItems}},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.removeIcon}})],1)],2)])}\nvar vsChipsvue_type_template_id_5a8a51d4_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsChip/vsChips.vue?vue&type=template&id=5a8a51d4&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsChip/vsChips.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsChipsvue_type_script_lang_js_ = ({\n  name: 'VsChips',\n  components: {\n    vsChip: vsChip\n  },\n  props: {\n    value: {},\n    vsColor: {\n      type: String,\n      default: 'primary'\n    },\n    placeholder: {\n      type: String,\n      default: ''\n    },\n    items: {\n      type: Array\n    },\n    iconPack: {\n      type: String,\n      default: 'material-icons'\n    },\n    removeIcon: {\n      type: String,\n      default: 'close'\n    }\n  },\n  data: function data() {\n    return {\n      newChip: '',\n      chip1: true,\n      itemsx: this.items\n    };\n  },\n  methods: {\n    addItem: function addItem() {\n      // this.itemsx.push(this.newChip)\n      var valueOld = this.value;\n      valueOld.push(this.newChip);\n      this.$emit('input', valueOld);\n      this.newChip = '';\n    },\n    removeTotalItems: function removeTotalItems() {\n      var valueOld = this.value;\n      valueOld.splice(0, this.value.length);\n      this.$emit('input', valueOld);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsChip/vsChips.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsChip_vsChipsvue_type_script_lang_js_ = (vsChipsvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsChip/vsChips.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsChips_component = normalizeComponent(\n  vsChip_vsChipsvue_type_script_lang_js_,\n  vsChipsvue_type_template_id_5a8a51d4_lang_html_render,\n  vsChipsvue_type_template_id_5a8a51d4_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsChips = (vsChips_component.exports);\n// CONCATENATED MODULE: ./src/components/vsChip/index.js\n\n\n\n\n/* harmony default export */ var components_vsChip = (function (Vue) {\n  Vue.component(vsChip.name, vsChip);\n  Vue.component(vsChips.name, vsChips);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsProgress/vsProgress.vue?vue&type=template&id=4dadb927&lang=html&\nvar vsProgressvue_type_template_id_4dadb927_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-progress--background\",class:[(\"vs-progress-\" + _vm.color),{\n    'indeterminate':_vm.indeterminate,\n  }],style:(_vm.styleConProgress)},[_c('div',{staticClass:\"vs-progress--foreground\",style:(_vm.styleProgress)}),(_vm.indeterminate)?_c('div',{staticClass:\"vs-progress--indeterminate\",style:(_vm.styleProgress)}):_vm._e()])}\nvar vsProgressvue_type_template_id_4dadb927_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsProgress/vsProgress.vue?vue&type=template&id=4dadb927&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsProgress/vsProgress.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsProgressvue_type_script_lang_js_ = ({\n  name: 'VsProgress',\n  props: {\n    height: {\n      type: [Number, String],\n      default: 5\n    },\n    indeterminate: {\n      type: Boolean,\n      default: false\n    },\n    percent: {\n      type: Number,\n      default: 0\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    }\n  },\n  data: function data() {\n    return {\n      percentx: 0\n    };\n  },\n  computed: {\n    styleConProgress: function styleConProgress() {\n      return {\n        background: utils_color.getColor(this.color, .1),\n        height: \"\".concat(this.height, \"px\")\n      };\n    },\n    styleProgress: function styleProgress() {\n      return {\n        background: utils_color.getColor(this.color),\n        width: \"\".concat(this.percentx, \"%\")\n      };\n    }\n  },\n  watch: {\n    percent: function percent() {\n      this.percentx = this.percent;\n    }\n  },\n  created: function created() {\n    this.percentx = 0;\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    setTimeout(function () {\n      _this.percentx = _this.percent; // to force animation\n    }, 600);\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsProgress/vsProgress.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsProgress_vsProgressvue_type_script_lang_js_ = (vsProgressvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsProgress/vsProgress.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsProgress_component = normalizeComponent(\n  vsProgress_vsProgressvue_type_script_lang_js_,\n  vsProgressvue_type_template_id_4dadb927_lang_html_render,\n  vsProgressvue_type_template_id_4dadb927_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsProgress = (vsProgress_component.exports);\n// CONCATENATED MODULE: ./src/components/vsProgress/index.js\n\n\n\n/* harmony default export */ var components_vsProgress = (function (Vue) {\n  Vue.component(vsProgress.name, vsProgress);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsCard/vsCard.vue?vue&type=template&id=05c15e2e&\nvar vsCardvue_type_template_id_05c15e2e_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"con-vs-card\",class:{'withHover': _vm.actionable, 'fixedHeight': _vm.fixedHeight }},[(_vm.hasSlot('header'))?_c('header',{staticClass:\"vs-card--header\"},[_vm._t(\"header\")],2):_vm._e(),(_vm.hasSlot('media'))?_c('div',{staticClass:\"vs-card--media\"},[_vm._t(\"media\")],2):_vm._e(),(_vm.hasSlot('default'))?_c('div',{staticClass:\"vs-card--content\",class:{'fixedHeight': _vm.fixedHeight }},[_vm._t(\"default\")],2):_vm._e(),(_vm.hasSlot('extra-content'))?_c('div',{staticClass:\"vs-card-extra--content\"},[_vm._t(\"extra-content\")],2):_vm._e(),(_vm.hasSlot('footer'))?_c('footer',{staticClass:\"vs-card--footer\",class:{'fixedHeight': _vm.fixedHeight }},[_vm._t(\"footer\")],2):_vm._e()])}\nvar vsCardvue_type_template_id_05c15e2e_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsCard/vsCard.vue?vue&type=template&id=05c15e2e&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsCard/vsCard.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsCardvue_type_script_lang_js_ = ({\n  name: 'VsCard',\n  props: {\n    actionable: {\n      default: false,\n      type: Boolean\n    },\n    fixedHeight: {\n      default: false,\n      type: Boolean\n    }\n  },\n  methods: {\n    hasSlot: function hasSlot(slot) {\n      return this.$slots[slot];\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsCard/vsCard.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsCard_vsCardvue_type_script_lang_js_ = (vsCardvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsCard/vsCard.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsCard_component = normalizeComponent(\n  vsCard_vsCardvue_type_script_lang_js_,\n  vsCardvue_type_template_id_05c15e2e_render,\n  vsCardvue_type_template_id_05c15e2e_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsCard = (vsCard_component.exports);\n// CONCATENATED MODULE: ./src/components/vsCard/index.js\n\n\n\n/* harmony default export */ var components_vsCard = (function (Vue) {\n  Vue.component(vsCard.name, vsCard);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsList/vsList.vue?vue&type=template&id=7d090653&lang=html&\nvar vsListvue_type_template_id_7d090653_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-list\"},[_vm._t(\"default\")],2)}\nvar vsListvue_type_template_id_7d090653_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsList/vsList.vue?vue&type=template&id=7d090653&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsList/vsList.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsListvue_type_script_lang_js_ = ({\n  name: 'VsList'\n});\n// CONCATENATED MODULE: ./src/components/vsList/vsList.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsList_vsListvue_type_script_lang_js_ = (vsListvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsList/vsList.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsList_component = normalizeComponent(\n  vsList_vsListvue_type_script_lang_js_,\n  vsListvue_type_template_id_7d090653_lang_html_render,\n  vsListvue_type_template_id_7d090653_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsList = (vsList_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsList/vsListItem.vue?vue&type=template&id=1ad15fd9&lang=html&\nvar vsListItemvue_type_template_id_1ad15fd9_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-list--item\"},[(_vm.$slots.avatar)?_c('div',{staticClass:\"vs-list--avatar\"},[_vm._t(\"avatar\")],2):_vm._e(),(_vm.icon)?_c('div',{staticClass:\"vs-list--icon\"},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon}})],1):_vm._e(),_c('div',{staticClass:\"list-titles\"},[(_vm.title)?_c('div',{staticClass:\"vs-list--title\"},[_vm._v(_vm._s(_vm.title))]):_vm._e(),(_vm.subtitle)?_c('div',{staticClass:\"vs-list--subtitle\"},[_vm._v(_vm._s(_vm.subtitle))]):_vm._e()]),_c('div',{staticClass:\"vs-list--slot\"},[_vm._t(\"default\")],2)])}\nvar vsListItemvue_type_template_id_1ad15fd9_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsList/vsListItem.vue?vue&type=template&id=1ad15fd9&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsList/vsListItem.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsListItemvue_type_script_lang_js_ = ({\n  name: 'VsListItem',\n  props: {\n    vsAvatar: {\n      type: [Boolean, String],\n      default: false\n    },\n    title: {\n      type: String,\n      default: null\n    },\n    subtitle: {\n      type: String,\n      default: null\n    },\n    icon: {\n      type: String,\n      default: null\n    },\n    iconPack: {\n      type: String,\n      default: 'material-icons'\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsList/vsListItem.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsList_vsListItemvue_type_script_lang_js_ = (vsListItemvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsList/vsListItem.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsListItem_component = normalizeComponent(\n  vsList_vsListItemvue_type_script_lang_js_,\n  vsListItemvue_type_template_id_1ad15fd9_lang_html_render,\n  vsListItemvue_type_template_id_1ad15fd9_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsListItem = (vsListItem_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsList/vsListHeader.vue?vue&type=template&id=c17f0c74&lang=html&\nvar vsListHeadervue_type_template_id_c17f0c74_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-list--header\",class:[(\"vs-header-list-\" + _vm.color),{\n    'with-icon':_vm.icon,\n  }],style:(_vm.styleHeader)},[(_vm.icon)?_c('div',{staticClass:\"vs-list--icon\"},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon}})],1):_vm._e(),_c('div',{staticClass:\"list-titles\"},[(_vm.title)?_c('div',{staticClass:\"vs-list--title\"},[_vm._v(_vm._s(_vm.title))]):_vm._e()])])}\nvar vsListHeadervue_type_template_id_c17f0c74_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsList/vsListHeader.vue?vue&type=template&id=c17f0c74&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsList/vsListHeader.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsListHeadervue_type_script_lang_js_ = ({\n  name: 'VsListHeader',\n  props: {\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    title: {\n      type: String,\n      default: null\n    },\n    subtitle: {\n      type: String,\n      default: null\n    },\n    icon: {\n      type: String,\n      default: null\n    },\n    iconPack: {\n      type: String,\n      default: 'material-icons'\n    }\n  },\n  computed: {\n    styleHeader: function styleHeader() {\n      return {\n        color: utils_color.getColor(this.color)\n      };\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsList/vsListHeader.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsList_vsListHeadervue_type_script_lang_js_ = (vsListHeadervue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsList/vsListHeader.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsListHeader_component = normalizeComponent(\n  vsList_vsListHeadervue_type_script_lang_js_,\n  vsListHeadervue_type_template_id_c17f0c74_lang_html_render,\n  vsListHeadervue_type_template_id_c17f0c74_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsListHeader = (vsListHeader_component.exports);\n// CONCATENATED MODULE: ./src/components/vsList/index.js\n\n\n\n\n\n/* harmony default export */ var components_vsList = (function (Vue) {\n  Vue.component(vsList.name, vsList);\n  Vue.component(vsListItem.name, vsListItem);\n  Vue.component(vsListHeader.name, vsListHeader);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsAvatar/vsAvatar.vue?vue&type=template&id=330149ee&lang=html&\nvar vsAvatarvue_type_template_id_330149ee_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g(_vm._b({staticClass:\"con-vs-avatar\",class:_vm.avatarClass,style:(_vm.avatarStyle)},'div',_vm.$attrs,false),_vm.$listeners),[(_vm.badge && _vm.badge > 0)?_c('div',{staticClass:\"dot-count vs-avatar--count\",class:_vm.badgeClass,style:(_vm.badgeStyle)},[_vm._v(\" \"+_vm._s(typeof _vm.badge != 'boolean' ? _vm.badge : null)+\" \")]):_vm._e(),(_vm.src)?_c('div',{staticClass:\"con-img vs-avatar--con-img\"},[_c('img',{attrs:{\"src\":_vm.src,\"alt\":\"\"}})]):_c('span',{staticClass:\"vs-avatar--text notranslate\",class:[_vm.text ? '' : _vm.iconPack, _vm.text ? '' : _vm.icon, _vm.textClass],style:(_vm.textStyle),attrs:{\"title\":_vm.text,\"translate\":\"no\"}},[_vm._v(\" \"+_vm._s(_vm.text ? _vm.returnText : _vm.iconPack == 'material-icons' ? _vm.icon : '')+\" \")])])}\nvar vsAvatarvue_type_template_id_330149ee_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsAvatar/vsAvatar.vue?vue&type=template&id=330149ee&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsAvatar/vsAvatar.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsAvatarvue_type_script_lang_js_ = ({\n  name: 'VsAvatar',\n  props: {\n    badge: {\n      type: [Boolean, String, Number],\n      default: false\n    },\n    badgeColor: {\n      default: 'danger',\n      type: String\n    },\n    size: {\n      type: String,\n      default: null\n    },\n    src: {\n      type: String,\n      default: null\n    },\n    icon: {\n      type: String,\n      default: 'person'\n    },\n    iconPack: {\n      type: String,\n      default: 'material-icons'\n    },\n    textColor: {\n      type: String,\n      default: 'rgb(255, 255, 255)'\n    },\n    text: {\n      type: [String, Number],\n      default: null\n    },\n    color: {\n      type: String,\n      default: 'rgb(195, 195, 195)'\n    }\n  },\n  computed: {\n    avatarClass: function avatarClass() {\n      var classes = {};\n      classes[this.size] = true;\n\n      if (utils_color.isColor(this.color)) {\n        classes[\"con-vs-avatar-\".concat(this.color)] = true;\n      }\n\n      return classes;\n    },\n    avatarStyle: function avatarStyle() {\n      var style = {\n        width: /[px]/.test(this.size) ? this.size : null,\n        height: /[px]/.test(this.size) ? this.size : null\n      };\n\n      if (!utils_color.isColor(this.color)) {\n        style.background = utils_color.getColor(this.color);\n      }\n\n      return style;\n    },\n    badgeClass: function badgeClass() {\n      var classes = {\n        badgeNumber: typeof badge != 'boolean'\n      };\n\n      if (utils_color.isColor(this.badgeColor)) {\n        classes[\"dot-count-\".concat(this.badgeColor)] = true;\n      }\n\n      return classes;\n    },\n    badgeStyle: function badgeStyle() {\n      var style = {};\n\n      if (!utils_color.isColor(this.badgeColor)) {\n        style.background = utils_color.getColor(this.badgeColor);\n      }\n\n      return style;\n    },\n    textClass: function textClass() {\n      var classes = {\n        'material-icons': !this.text\n      };\n\n      if (utils_color.isColor(this.textColor)) {\n        classes[\"vs-avatar-text-\".concat(this.textColor)] = true;\n      }\n\n      return classes;\n    },\n    textStyle: function textStyle() {\n      var style = {\n        transform: \"translate(-50%,-50%) scale(\".concat(this.returnScale, \")\")\n      };\n\n      if (!utils_color.isColor(this.textColor)) {\n        style.color = utils_color.getColor(this.textColor);\n      }\n\n      return style;\n    },\n    returnText: function returnText() {\n      if (this.text.length <= 5) {\n        return this.text;\n      }\n\n      var exp = /\\s/g;\n      var letras = '';\n\n      if (exp.test(this.text)) {\n        this.text.split(exp).forEach(function (word) {\n          letras += word[0].toUpperCase();\n        });\n      } else {\n        letras = this.text[0].toUpperCase();\n      }\n\n      return letras.length > 5 ? letras[0] : letras;\n    },\n    returnScale: function returnScale() {\n      if (!this.text) {\n        return 1;\n      }\n\n      var lengthx = this.returnText.length;\n\n      if (lengthx <= 5 && lengthx > 1) {\n        return lengthx / (lengthx * 1.50);\n      } else {\n        return 1;\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsAvatar/vsAvatar.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsAvatar_vsAvatarvue_type_script_lang_js_ = (vsAvatarvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsAvatar/vsAvatar.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsAvatar_component = normalizeComponent(\n  vsAvatar_vsAvatarvue_type_script_lang_js_,\n  vsAvatarvue_type_template_id_330149ee_lang_html_render,\n  vsAvatarvue_type_template_id_330149ee_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsAvatar = (vsAvatar_component.exports);\n// CONCATENATED MODULE: ./src/components/vsAvatar/index.js\n\n\n\n/* harmony default export */ var components_vsAvatar = (function (Vue) {\n  Vue.component(vsAvatar.name, vsAvatar);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsPagination/vsPagination.vue?vue&type=template&id=651744f6&\nvar vsPaginationvue_type_template_id_651744f6_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vs-row',{attrs:{\"vs-type\":\"flex\",\"vs-justify\":\"space-between\",\"vs-w\":\"12\"}},[_c('vs-col',{staticClass:\"vs-pagination--mb\",attrs:{\"vs-type\":\"flex\",\"vs-justify\":\"flex-start\",\"vs-align\":\"center\",\"vs-lg\":\"6\",\"vs-sm\":\"12\",\"vs-xs\":\"12\"}},[(_vm.description)?_c('div',[_c('span',{staticStyle:{\"margin-right\":\"5px\"}},[_vm._v(\" \"+_vm._s(_vm.descriptionTitle)+\": \"+_vm._s(_vm.minRows)+\" - \"+_vm._s(_vm.maxRows)+\" \"+_vm._s(_vm.descriptionConnector)+\" \"+_vm._s(_vm.sizeArray)+\" | \"+_vm._s(_vm.descriptionBody)+\": \")]),_c('ul',{staticClass:\"vs-pagination--array\"},_vm._l((_vm.descriptionItems),function(row,index){return _c('li',{key:index},[_c('span',{class:[(\"vs-description-\" + _vm.color),{ 'vs-pagination--bold': (index==_vm.indexRows)}],style:(_vm.styleDescription),on:{\"click\":function($event){return _vm.changeRowMaxItems(index)}}},[_vm._v(\" \"+_vm._s(row)+\" \")]),(index != (_vm.descriptionItems.length - 1))?_c('span',[_vm._v(\" , \")]):_vm._e()])}),0)]):_vm._e()]),_c('vs-col',{staticClass:\"vs-pagination--mb\",attrs:{\"vs-type\":\"flex\",\"vs-justify\":\"flex-end\",\"vs-align\":\"center\",\"vs-lg\":\"6\",\"vs-sm\":\"12\",\"vs-xs\":\"12\"}},[_c('div',{staticClass:\"con-vs-pagination\",class:[(\"vs-pagination-\" + _vm.color)],style:(_vm.stylePagination)},[_c('nav',{staticClass:\"vs-pagination--nav\"},[_c('button',{staticClass:\"vs-pagination--buttons btn-prev-pagination vs-pagination--button-prev\",class:{disabled:_vm.current <= 1 ? 'disabled' : null},attrs:{\"disabled\":_vm.current === 1},on:{\"click\":_vm.prevPage}},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.prevIcon ? _vm.prevIcon : _vm.defaultPrevIcon}})],1),_c('ul',{staticClass:\"vs-pagination--ul\"},_vm._l((_vm.pages),function(page,index){return _c('li',{key:index,staticClass:\"item-pagination vs-pagination--li\",class:{'is-current': page == _vm.current},on:{\"click\":function($event){return _vm.goTo(page)}}},[_c('span',[_vm._v(\" \"+_vm._s(page)+\" \")]),_c('div',{staticClass:\"effect\"})])}),0),_c('button',{staticClass:\"vs-pagination--buttons btn-next-pagination vs-pagination--button-next\",class:{disabled:_vm.current === _vm.total ? 'disabled' : null},attrs:{\"disabled\":_vm.current === _vm.total},on:{\"click\":_vm.nextPage}},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.nextIcon ? _vm.nextIcon : _vm.defaultNextIcon}})],1),(_vm.goto)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.go),expression:\"go\"}],staticClass:\"vs-pagination--input-goto\",attrs:{\"max\":_vm.total,\"min\":\"1\",\"type\":\"number\"},domProps:{\"value\":(_vm.go)},on:{\"change\":_vm.goTo,\"input\":function($event){if($event.target.composing){ return; }_vm.go=$event.target.value}}}):_vm._e()])])])],1)}\nvar vsPaginationvue_type_template_id_651744f6_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsPagination/vsPagination.vue?vue&type=template&id=651744f6&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/regenerator-runtime/runtime.js\nvar runtime = __webpack_require__(\"a4ea\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsPagination/vsPagination.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsPaginationvue_type_script_lang_js_ = ({\n  name: 'VsPagination',\n  props: {\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    total: {\n      type: Number,\n      required: true\n    },\n    sizeArray: {\n      type: Number,\n      required: false\n    },\n    maxItems: {\n      type: [Number, String],\n      required: false\n    },\n    value: {\n      type: Number,\n      required: true,\n      default: 1\n    },\n    max: {\n      type: Number,\n      default: 9\n    },\n    goto: {\n      type: Boolean\n    },\n    type: {\n      type: String\n    },\n    prevIcon: {\n      type: String\n    },\n    nextIcon: {\n      type: String\n    },\n    iconPack: {\n      type: String,\n      default: 'material-icons'\n    },\n    description: {\n      default: false,\n      type: Boolean\n    },\n    descriptionItems: {\n      default: function _default() {\n        return [];\n      },\n      type: Array\n    },\n    descriptionTitle: {\n      type: String,\n      default: 'Registries'\n    },\n    descriptionConnector: {\n      type: String,\n      default: 'of'\n    },\n    descriptionBody: {\n      type: String,\n      default: 'Pages'\n    }\n  },\n  data: function data() {\n    return {\n      pages: [],\n      current: 0,\n      go: 0,\n      prevRange: '',\n      nextRange: '',\n      hoverBtn1: false,\n      minRows: 0,\n      maxRows: 0,\n      indexRows: 0\n    };\n  },\n  computed: {\n    defaultNextIcon: function defaultNextIcon() {\n      if (this.$vs.rtl) return 'chevron_left';\n      return 'chevron_right';\n    },\n    defaultPrevIcon: function defaultPrevIcon() {\n      if (this.$vs.rtl) return 'chevron_right';\n      return 'chevron_left';\n    },\n    stylePagination: function stylePagination() {\n      var style = {};\n\n      if (!utils_color.isColor(this.color)) {\n        style = {\n          '--vs-color-pagination': utils_color.getColor(this.color),\n          '--vs-color-pagination-alpha': utils_color.getColor(this.color, .5)\n        };\n      }\n\n      return style;\n    },\n    styleDescription: function styleDescription() {\n      return {\n        'cursor': 'pointer'\n      };\n    }\n  },\n  watch: {\n    current: function current(val) {\n      this.getPages();\n      this.calculateMinMax(val);\n      this.$emit('input', this.current);\n      this.$emit('change', this.current);\n    },\n    total: function total() {\n      this.getPages();\n    },\n    max: function max() {\n      this.getPages();\n    },\n    value: function value(val) {\n      var pageNum = val < 1 ? 1 : val <= this.total ? val : this.total;\n      this.goTo(pageNum);\n    }\n  },\n  mounted: function () {\n    var _mounted = _asyncToGenerator(\n    /*#__PURE__*/\n    regeneratorRuntime.mark(function _callee() {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              this.current = this.go = this.value;\n              _context.next = 3;\n              return this.calculateMinMax(this.current);\n\n            case 3:\n              this.indexRows = this.descriptionItems.indexOf(this.maxItems);\n              this.getPages();\n\n            case 5:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee, this);\n    }));\n\n    function mounted() {\n      return _mounted.apply(this, arguments);\n    }\n\n    return mounted;\n  }(),\n  methods: {\n    changeRowMaxItems: function () {\n      var _changeRowMaxItems = _asyncToGenerator(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee2(index) {\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                this.indexRows = index;\n                _context2.next = 3;\n                return this.$emit('changeMaxItems', index);\n\n              case 3:\n                _context2.next = 5;\n                return this.calculateMinMax(this.current);\n\n              case 5:\n                this.current = 1;\n\n              case 6:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function changeRowMaxItems(_x) {\n        return _changeRowMaxItems.apply(this, arguments);\n      }\n\n      return changeRowMaxItems;\n    }(),\n    calculateMinMax: function () {\n      var _calculateMinMax = _asyncToGenerator(\n      /*#__PURE__*/\n      regeneratorRuntime.mark(function _callee3(val) {\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                this.maxRows = val * this.maxItems <= this.sizeArray ? val * this.maxItems : this.sizeArray;\n                this.minRows = val * this.maxItems <= this.sizeArray ? this.maxRows - this.maxItems + 1 : (this.current - 1) * this.maxItems + 1;\n\n              case 2:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function calculateMinMax(_x2) {\n        return _calculateMinMax.apply(this, arguments);\n      }\n\n      return calculateMinMax;\n    }(),\n    isEllipsis: function isEllipsis(page) {\n      return page === '...';\n    },\n    goTo: function goTo(page) {\n      if (page === '...') {\n        return;\n      }\n\n      if (typeof page.target === 'undefined') {\n        this.current = page;\n      } else {\n        var value = parseInt(page.target.value, 10);\n        this.go = value < 1 ? 1 : value <= this.total ? value : this.total;\n        this.current = this.go;\n      }\n    },\n    getPages: function getPages() {\n      if (this.total <= this.max) {\n        var pages = this.setPages(1, this.total);\n        this.pages = pages;\n      }\n\n      var even = this.max % 2 === 0 ? 1 : 0;\n\n      if (this.total < 6) {\n        this.prevRange = Math.floor(this.max / (this.max / 2));\n      } else {\n        this.prevRange = Math.floor(this.max / 2);\n      }\n\n      this.nextRange = this.total - this.prevRange + 1 + even;\n\n      if (this.current >= this.prevRange && this.current <= this.nextRange) {\n        var start = this.current - this.prevRange + 2;\n        var end = this.current + this.prevRange - 2 - even;\n        this.pages = [1, '...'].concat(_toConsumableArray(this.setPages(start, end)), ['...', this.total]);\n      } else if (this.total < 6) {\n        this.pages = _toConsumableArray(this.setPages(1, this.total));\n      } else {\n        this.pages = [].concat(_toConsumableArray(this.setPages(1, this.prevRange)), ['...'], _toConsumableArray(this.setPages(this.nextRange, this.total)));\n      }\n    },\n    setPages: function setPages(start, end) {\n      var setPages = [];\n\n      for (start > 0 ? start : 1; start <= end; start++) {\n        setPages.push(start);\n      }\n\n      return setPages;\n    },\n    nextPage: function nextPage() {\n      if (this.current < this.total) {\n        this.current++;\n      }\n    },\n    prevPage: function prevPage() {\n      if (this.current > 1) {\n        this.current--;\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsPagination/vsPagination.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsPagination_vsPaginationvue_type_script_lang_js_ = (vsPaginationvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsPagination/vsPagination.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsPagination_component = normalizeComponent(\n  vsPagination_vsPaginationvue_type_script_lang_js_,\n  vsPaginationvue_type_template_id_651744f6_render,\n  vsPaginationvue_type_template_id_651744f6_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsPagination = (vsPagination_component.exports);\n// CONCATENATED MODULE: ./src/components/vsPagination/index.js\n\n\n\n/* harmony default export */ var components_vsPagination = (function (Vue) {\n  Vue.component(vsPagination.name, vsPagination);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsBreadcrumb/vsBreadcrumb.vue?vue&type=template&id=0795a63c&lang=html&\nvar vsBreadcrumbvue_type_template_id_0795a63c_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',_vm._g(_vm._b({staticClass:\"vs-breadcrumb\",class:(\"vs-align-\" + _vm.align),attrs:{\"aria-label\":\"breadcrumb\"}},'nav',_vm.$attrs,false),_vm.$listeners),[_c('ol',{staticClass:\"vs-breadcrumb--ol\"},[_vm._t(\"default\"),_vm._l((_vm.items),function(item){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hasSlot),expression:\"!hasSlot\"}],key:item.title,class:{'vs-active':item.active,'disabled-link':item.disabled},attrs:{\"aria-current\":item.active ? 'page' : null}},[(!item.active)?_c('a',{staticClass:\"vs-breadcrumb--link\",attrs:{\"href\":item.url ? item.url : '#',\"title\":item.title}},[_vm._v(\" \"+_vm._s(item.title)+\" \")]):[_c('span',{staticClass:\"vs-breadcrumb--text\",class:_vm.textClass,style:(_vm.textStyle)},[_vm._v(\" \"+_vm._s(item.title)+\" \")])],(!item.active)?_c('span',{staticClass:\"separator notranslate vs-breadcrum--separator\",class:_vm.separator.length > 1 ? 'material-icons' : null,attrs:{\"translate\":\"no\",\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.separator))]):_vm._e()],2)})],2)])}\nvar vsBreadcrumbvue_type_template_id_0795a63c_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsBreadcrumb/vsBreadcrumb.vue?vue&type=template&id=0795a63c&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsBreadcrumb/vsBreadcrumb.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsBreadcrumbvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsBreadcrumbvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsBreadcrumbvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsBreadcrumbvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsBreadcrumbvue_type_script_lang_js_ = ({\n  name: 'VsBreadcrumb',\n  props: {\n    items: {\n      type: Array\n    },\n    separator: {\n      type: String,\n      default: '/'\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    align: {\n      type: String,\n      default: 'left'\n    }\n  },\n  computed: {\n    textClass: function textClass() {\n      var classes = {};\n\n      if (utils_color.isColor(this.color)) {\n        classes[\"vs-breadcrumb-text-\".concat(this.color)] = true;\n      }\n\n      return classes;\n    },\n    textStyle: function textStyle() {\n      var style = {};\n\n      if (!utils_color.isColor(this.color)) {\n        style.color = utils_color.getColor(this.color);\n      }\n\n      return style;\n    },\n    hasSlot: function hasSlot() {\n      return !!this.$slots.default;\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    if (this.items) {\n      this.items = this.items.map(function (item) {\n        if (typeof item.title === \"function\") {\n          return vsBreadcrumbvue_type_script_lang_js_objectSpread({}, item, {\n            title: item.title(_this.$route.params)\n          });\n        }\n\n        return item;\n      });\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsBreadcrumb/vsBreadcrumb.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsBreadcrumb_vsBreadcrumbvue_type_script_lang_js_ = (vsBreadcrumbvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsBreadcrumb/vsBreadcrumb.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsBreadcrumb_component = normalizeComponent(\n  vsBreadcrumb_vsBreadcrumbvue_type_script_lang_js_,\n  vsBreadcrumbvue_type_template_id_0795a63c_lang_html_render,\n  vsBreadcrumbvue_type_template_id_0795a63c_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsBreadcrumb = (vsBreadcrumb_component.exports);\n// CONCATENATED MODULE: ./src/components/vsBreadcrumb/index.js\n\n\n\n/* harmony default export */ var components_vsBreadcrumb = (function (Vue) {\n  Vue.component(vsBreadcrumb.name, vsBreadcrumb);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/functions/vsDialog/index.vue?vue&type=template&id=d71da6fa&lang=html&\nvar vsDialogvue_type_template_id_d71da6fa_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"dialog-t\"}},[(_vm.isPrompt ? _vm.active : _vm.fActive)?_c('div',{ref:\"con\",staticClass:\"vs-component con-vs-dialog\",class:[(\"vs-dialog-\" + _vm.color)]},[_c('div',{staticClass:\"vs-dialog-dark\",on:{\"click\":function($event){return _vm.handleClose($event,true)}}}),_c('div',{ref:\"dialogx\",staticClass:\"vs-dialog\"},[_c('header',{staticClass:\"vs-dialog-header\",style:(_vm.styleHeader)},[_c('div',{staticClass:\"con-title-after\"},[_c('span',{staticClass:\"after\",style:(_vm.styleAfter)}),_c('h3',{staticClass:\"dialog-title\"},[_vm._v(_vm._s(_vm.title)+\" \")])]),(_vm.type=='alert')?_c('vs-icon',{staticClass:\"vs-dialog-cancel vs-dialog-cancel--icon notranslate\",attrs:{\"icon\":_vm.closeIcon,\"icon-pack\":_vm.iconPack},nativeOn:{\"click\":function($event){return _vm.handleClose($event)}}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"vs-dialog-text\"},[_vm._t(\"default\"),_vm._v(\" \"+_vm._s(_vm.text)+\" \")],2),(_vm.buttonsHidden?false:_vm.isPrompt||_vm.type=='confirm')?_c('footer',[_c('vs-button',{staticClass:\"vs-dialog-accept-button\",attrs:{\"disabled\":_vm.isValid=='none'?false:!_vm.isValid,\"color\":_vm.color,\"type\":_vm.buttonAccept},on:{\"click\":_vm.acceptDialog}},[_vm._v(_vm._s(_vm.acceptText))]),_c('vs-button',{staticClass:\"vs-dialog-cancel-button\",attrs:{\"text-color\":'rgba(0,0,0,.5)',\"type\":_vm.buttonCancel},on:{\"click\":_vm.cancelClose}},[_vm._v(_vm._s(_vm.cancelText))])],1):_vm._e(),(_vm.type=='alert'&&!_vm.isPrompt)?_c('footer',[_c('vs-button',{staticClass:\"vs-dialog-accept-button\",attrs:{\"color\":_vm.color,\"type\":_vm.buttonAccept},on:{\"click\":_vm.acceptDialog}},[_vm._v(_vm._s(_vm.acceptText))])],1):_vm._e()])]):_vm._e()])}\nvar vsDialogvue_type_template_id_d71da6fa_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/functions/vsDialog/index.vue?vue&type=template&id=d71da6fa&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/functions/vsDialog/index.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsDialogvue_type_script_lang_js_ = ({\n  name: 'VsPrompt',\n  props: {\n    color: {\n      default: 'primary',\n      type: String\n    },\n    active: {\n      default: false,\n      type: Boolean\n    },\n    buttonAccept: {\n      default: 'filled',\n      type: String\n    },\n    buttonCancel: {\n      default: 'flat',\n      type: String\n    },\n    isValid: {\n      default: 'none',\n      type: [Boolean, String]\n    },\n    buttonsHidden: {\n      default: false,\n      type: Boolean\n    },\n    acceptText: {\n      default: 'Accept',\n      type: String\n    },\n    cancelText: {\n      default: 'Cancel',\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    closeIcon: {\n      default: 'close',\n      type: String\n    },\n    text: {\n      default: null,\n      type: String\n    },\n    title: {\n      default: 'Dialog',\n      type: String\n    },\n    type: {\n      default: 'alert',\n      type: String\n    },\n    parent: {\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      isPrompt: true,\n      fActive: false,\n      parameters: null\n    };\n  },\n  computed: {\n    styleHeader: function styleHeader() {\n      return {\n        color: utils_color.getColor(this.color, 1)\n      };\n    },\n    styleAfter: function styleAfter() {\n      return {\n        background: utils_color.getColor(this.color, 1)\n      };\n    }\n  },\n  watch: {\n    active: function active() {\n      var _this2 = this;\n\n      this.$nextTick(function () {\n        if (_this2.active) {\n          _this2.insertBody();\n        }\n      });\n    },\n    fActive: function fActive() {\n      var _this3 = this;\n\n      this.$nextTick(function () {\n        if (_this3.fActive) {\n          _this3.insertBody();\n        }\n      });\n    }\n  },\n  mounted: function mounted() {\n    if (this.active && this.isPrompt) {\n      this.insertBody();\n    }\n\n    this.fActive = this.active;\n  },\n  methods: {\n    giveColor: function giveColor(color) {\n      return utils_color.rColor(color);\n    },\n    acceptDialog: function acceptDialog() {\n      var _this = this;\n\n      if (!this.isPrompt) {\n        this.accept ? this.accept(this.parameters) : null;\n        this.fActive = false;\n        this.$emit('update:active', false);\n        this.$emit('accept', this.parameters);\n      } else {\n        if (this.isValid || this.isValid == 'none') {\n          this.accept ? this.accept() : null;\n          this.fActive = false;\n          this.$emit('update:active', false);\n          this.$emit('accept', this.parameters);\n        }\n      }\n    },\n    rebound: function rebound() {\n      var _this4 = this;\n\n      this.$refs.dialogx.classList.add('locked');\n      setTimeout(function () {\n        _this4.$refs.dialogx.classList.remove('locked');\n      }, 200);\n    },\n    handleClose: function handleClose(event, con) {\n      if (con) {\n        if (event.target.className.indexOf('vs-dialog-dark') != -1 && this.type == 'alert') {\n          this.factive = false;\n          this.$emit('update:active', false);\n        } else if (event.target.className.indexOf('vs-dialog-dark') != -1) {\n          this.rebound();\n        }\n      } else {\n        if (event ? event.target.className.indexOf('vs-dialog-cancel') != -1 : event ? event.target.className.indexOf('vs-dialog-cancel--icon') != -1 : false) {\n          this.fActive = false;\n          this.$emit('update:active', false);\n        }\n      }\n\n      this.$emit('close');\n    },\n    cancelClose: function cancelClose() {\n      this.fActive = false;\n      this.$emit('update:active', false);\n      this.$emit('cancel'); // this.$emit('cancel')\n\n      this.cancel ? this.cancel(this.parameters) : null;\n    },\n    insertBody: function insertBody() {\n      var elx = this.$refs.con;\n      var parentx = this.parent ? this.parent : document.body;\n      parentx.insertBefore(elx, parentx.firstChild);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/functions/vsDialog/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var functions_vsDialogvue_type_script_lang_js_ = (vsDialogvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/functions/vsDialog/index.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsDialog_component = normalizeComponent(\n  functions_vsDialogvue_type_script_lang_js_,\n  vsDialogvue_type_template_id_d71da6fa_lang_html_render,\n  vsDialogvue_type_template_id_d71da6fa_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsDialog = (vsDialog_component.exports);\n// CONCATENATED MODULE: ./src/components/vsPrompt/index.js\n\n\n\n/* harmony default export */ var vsPrompt = (function (Vue) {\n  Vue.component(vsDialog.name, vsDialog);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDivider/vsDivider.vue?vue&type=template&id=372a8ee2&lang=html&\nvar vsDividervue_type_template_id_372a8ee2_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-component vs-divider\"},[_c('span',{staticClass:\"vs-divider-border after\",class:_vm.borderClass,style:(_vm.afterStyle)}),( _vm.icon || _vm.$slots.default)?_c('span',{staticClass:\"vs-divider--text\",class:_vm.textAndBackgroundClass,style:({\n      'color': _vm.textColor,\n      'background': _vm.backgroundColor\n    })},[(!_vm.icon)?[_vm._t(\"default\")]:_c('vs-icon',{staticClass:\"icon-divider notranslate vs-divider--icon\",attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon}})],2):_vm._e(),_c('span',{staticClass:\"vs-divider-border before\",class:_vm.borderClass,style:(_vm.beforeStyle)})])}\nvar vsDividervue_type_template_id_372a8ee2_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsDivider/vsDivider.vue?vue&type=template&id=372a8ee2&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDivider/vsDivider.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsDividervue_type_script_lang_js_ = ({\n  name: \"VsDivider\",\n  props: {\n    color: {\n      type: String,\n      default: 'rgba(0, 0, 0,.1)'\n    },\n    background: {\n      type: String,\n      default: 'transparent'\n    },\n    icon: {\n      default: null,\n      type: String\n    },\n    borderStyle: {\n      default: 'solid',\n      type: String\n    },\n    borderHeight: {\n      default: '1px',\n      type: String\n    },\n    position: {\n      default: 'center',\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    }\n  },\n  computed: {\n    getWidthAfter: function getWidthAfter() {\n      var widthx = '100%';\n\n      if (this.position == 'left') {\n        widthx = '0%';\n      } else if (this.position == 'left-center') {\n        widthx = '25%';\n      } else if (this.position == 'right-center') {\n        widthx = '75%';\n      } else if (this.position == 'right') {\n        widthx = '100%';\n      }\n\n      return widthx;\n    },\n    getWidthBefore: function getWidthBefore() {\n      var widthx = '100%';\n\n      if (this.position == 'left') {\n        widthx = '100%';\n      } else if (this.position == 'left-center') {\n        widthx = '75%';\n      } else if (this.position == 'right-center') {\n        widthx = '25%';\n      } else if (this.position == 'right') {\n        widthx = '0%';\n      }\n\n      return widthx;\n    },\n    borderColor: function borderColor() {\n      if (!utils_color.isColor(this.color)) {\n        return utils_color.getColor(this.color);\n      }\n    },\n    afterStyle: function afterStyle() {\n      var classes = {\n        width: this.getWidthAfter,\n        'border-top-width': this.borderHeight,\n        'border-top-style': this.borderStyle\n      };\n\n      if (!utils_color.isColor(this.color)) {\n        classes['border-top-color'] = this.borderColor;\n      }\n\n      return classes;\n    },\n    beforeStyle: function beforeStyle() {\n      var classes = {\n        width: this.getWidthBefore,\n        'border-top-width': this.borderHeight,\n        'border-top-style': this.borderStyle\n      };\n\n      if (!utils_color.isColor(this.color)) {\n        classes['border-top-color'] = this.borderColor;\n      }\n\n      return classes;\n    },\n    borderClass: function borderClass() {\n      var classes = {};\n      var borderColor = utils_color.isColor(this.color) ? this.color : \"default\";\n      classes[\"vs-divider-border-\".concat(borderColor)] = true;\n      return classes;\n    },\n    textColor: function textColor() {\n      if (!utils_color.isColor(this.color)) {\n        return utils_color.getColor(this.color !== 'rgba(0, 0, 0,.1)' ? this.color : null);\n      }\n    },\n    backgroundColor: function backgroundColor() {\n      if (!utils_color.isColor(this.background)) {\n        return utils_color.getColor(this.background);\n      }\n    },\n    textAndBackgroundClass: function textAndBackgroundClass() {\n      var classes = {};\n      var textColor = utils_color.isColor(this.color) ? this.color : \"default\";\n      classes[\"vs-divider-text-\".concat(textColor)] = true;\n      var backgroundColor = utils_color.isColor(this.background) ? this.background : \"default\";\n      classes[\"vs-divider-background-\".concat(backgroundColor)] = true;\n      return classes;\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsDivider/vsDivider.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsDivider_vsDividervue_type_script_lang_js_ = (vsDividervue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsDivider/vsDivider.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsDivider_component = normalizeComponent(\n  vsDivider_vsDividervue_type_script_lang_js_,\n  vsDividervue_type_template_id_372a8ee2_lang_html_render,\n  vsDividervue_type_template_id_372a8ee2_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsDivider = (vsDivider_component.exports);\n// CONCATENATED MODULE: ./src/components/vsDivider/index.js\n\n\n\n/* harmony default export */ var components_vsDivider = (function (Vue) {\n  Vue.component(vsDivider.name, vsDivider);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSpacer/vsSpacer.vue?vue&type=template&id=6108203a&\nvar vsSpacervue_type_template_id_6108203a_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-spacer\"})}\nvar vsSpacervue_type_template_id_6108203a_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsSpacer/vsSpacer.vue?vue&type=template&id=6108203a&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSpacer/vsSpacer.vue?vue&type=script&lang=js&\n//\n//\n//\n/* harmony default export */ var vsSpacervue_type_script_lang_js_ = ({\n  name: 'VsSpacer'\n});\n// CONCATENATED MODULE: ./src/components/vsSpacer/vsSpacer.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsSpacer_vsSpacervue_type_script_lang_js_ = (vsSpacervue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsSpacer/vsSpacer.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsSpacer_component = normalizeComponent(\n  vsSpacer_vsSpacervue_type_script_lang_js_,\n  vsSpacervue_type_template_id_6108203a_render,\n  vsSpacervue_type_template_id_6108203a_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsSpacer = (vsSpacer_component.exports);\n// CONCATENATED MODULE: ./src/components/vsSpacer/index.js\n\n\n\n/* harmony default export */ var components_vsSpacer = (function (Vue) {\n  Vue.component(vsSpacer.name, vsSpacer);\n});\n// CONCATENATED MODULE: ./src/components/vsIcon/index.js\n\n\n\n/* harmony default export */ var components_vsIcon = (function (Vue) {\n  Vue.component(vsIcon.name, vsIcon);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavbar.vue?vue&type=template&id=3b912420&lang=html&\nvar vsNavbarvue_type_template_id_3b912420_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"vs-navbar\",class:[(\"vs-navbar-\" + _vm.type), (\"vs-navbar-color-\" + _vm.color), {'collapse':_vm.collapse}],style:([_vm.styleNavbar])},[_c('div',{staticClass:\"vs-navbar--header\"},[_c('button',{staticClass:\"vs-navbar--btn-responsive\",class:{'active-menu' : _vm.activeMenuResponsive},on:{\"click\":function($event){_vm.activeMenuResponsive = !_vm.activeMenuResponsive}}},[_c('span',{staticClass:\"btn-responsive-line line--1\"}),_c('span',{staticClass:\"btn-responsive-line line--2\"}),_c('span',{staticClass:\"btn-responsive-line line--3\"})]),_vm._t(\"title\")],2),_c('div',{staticClass:\"vs-con-items\",class:{'activeMenuResponsive' : _vm.activeMenuResponsive}},[_vm._t(\"default\")],2)])}\nvar vsNavbarvue_type_template_id_3b912420_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavbar.vue?vue&type=template&id=3b912420&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavbar.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsNavbarvue_type_script_lang_js_ = ({\n  name: 'VsNavbar',\n  props: {\n    value: {},\n    type: {\n      default: null,\n      type: String\n    },\n    collapse: {\n      default: false,\n      type: Boolean\n    },\n    color: {\n      type: String,\n      default: 'transparent'\n    },\n    activeTextColor: {\n      type: String,\n      default: 'primary'\n    },\n    textColor: {\n      type: String,\n      default: 'rgb(40,40,40)'\n    }\n  },\n  data: function data() {\n    return {\n      activeMenuResponsive: false\n    };\n  },\n  computed: {\n    styleNavbar: function styleNavbar() {\n      if (utils_color.isColor(this.color)) {\n        return {\n          background: \"rgb(\".concat(utils_color.changeColor(this.color), \")\")\n        };\n      }\n\n      return {\n        background: utils_color.getColor(this.color)\n      };\n    }\n  },\n  methods: {\n    changeIndex: function changeIndex(index) {\n      this.$emit('input', index);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavbar.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsNavbar_vsNavbarvue_type_script_lang_js_ = (vsNavbarvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavbar.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsNavbar_component = normalizeComponent(\n  vsNavbar_vsNavbarvue_type_script_lang_js_,\n  vsNavbarvue_type_template_id_3b912420_lang_html_render,\n  vsNavbarvue_type_template_id_3b912420_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsNavbar = (vsNavbar_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavItem.vue?vue&type=template&id=779d00bb&\nvar vsNavItemvue_type_template_id_779d00bb_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"vs-navbar--item\",class:[{'is-active-item': _vm.isActiveItem}, (\"vs-navbar-item-\" + _vm.getActiveTextColor)],style:([_vm.styleHover]),on:{\"click\":function($event){return _vm.clickItem()},\"mouseout\":_vm.mouseout,\"mouseover\":_vm.mouseover}},[_vm._t(\"default\"),_c('span',{staticClass:\"vs-navbar-after\",style:([_vm.styleAfter])})],2)}\nvar vsNavItemvue_type_template_id_779d00bb_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavItem.vue?vue&type=template&id=779d00bb&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavItem.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsNavItemvue_type_script_lang_js_ = ({\n  name: 'VsNavbarItem',\n  props: {\n    index: {\n      type: [Number, String],\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      hover: false\n    };\n  },\n  computed: {\n    getActiveTextColor: function getActiveTextColor() {\n      return this.$parent.$props.activeTextColor;\n    },\n    isActiveItem: function isActiveItem() {\n      return this.$parent.value == this.index;\n    },\n    styleAfter: function styleAfter() {\n      return {\n        background: utils_color.getColor(this.getActiveTextColor)\n      };\n    },\n    styleHover: function styleHover() {\n      if (this.isActiveItem) {\n        return {\n          color: utils_color.getColor(this.getActiveTextColor)\n        };\n      } else {\n        return {\n          color: this.hover ? utils_color.getColor(this.getActiveTextColor) : utils_color.getColor(this.$parent.$props.textColor)\n        };\n      }\n    }\n  },\n  methods: {\n    clickItem: function clickItem() {\n      this.$parent.changeIndex(this.index);\n    },\n    mouseout: function mouseout() {\n      this.hover = false;\n    },\n    mouseover: function mouseover() {\n      this.hover = true;\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavItem.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsNavbar_vsNavItemvue_type_script_lang_js_ = (vsNavItemvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavItem.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsNavItem_component = normalizeComponent(\n  vsNavbar_vsNavItemvue_type_script_lang_js_,\n  vsNavItemvue_type_template_id_779d00bb_render,\n  vsNavItemvue_type_template_id_779d00bb_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsNavItem = (vsNavItem_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavGroup.vue?vue&type=template&id=2a595bb2&\nvar vsNavGroupvue_type_template_id_2a595bb2_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"vs-nav-item\"},[_c('div',{staticClass:\"vs-nav-item-slot\"},[_vm._t(\"default\")],2),_c('ul',{staticClass:\"vs-nav-submenu\"},[_vm._t(\"submenu\")],2)])}\nvar vsNavGroupvue_type_template_id_2a595bb2_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavGroup.vue?vue&type=template&id=2a595bb2&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavGroup.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsNavGroupvue_type_script_lang_js_ = ({\n  name: 'VsNavbarGroup'\n});\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavGroup.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsNavbar_vsNavGroupvue_type_script_lang_js_ = (vsNavGroupvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavGroup.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsNavGroup_component = normalizeComponent(\n  vsNavbar_vsNavGroupvue_type_script_lang_js_,\n  vsNavGroupvue_type_template_id_2a595bb2_render,\n  vsNavGroupvue_type_template_id_2a595bb2_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsNavGroup = (vsNavGroup_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavbarTitle.vue?vue&type=template&id=216c9b3f&\nvar vsNavbarTitlevue_type_template_id_216c9b3f_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h3',{staticClass:\"vs-navbar--title\"},[_vm._t(\"default\")],2)}\nvar vsNavbarTitlevue_type_template_id_216c9b3f_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavbarTitle.vue?vue&type=template&id=216c9b3f&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavbarTitle.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n/* harmony default export */ var vsNavbarTitlevue_type_script_lang_js_ = ({\n  name: 'VsNavbarTitle'\n});\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavbarTitle.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsNavbar_vsNavbarTitlevue_type_script_lang_js_ = (vsNavbarTitlevue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavbarTitle.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsNavbarTitle_component = normalizeComponent(\n  vsNavbar_vsNavbarTitlevue_type_script_lang_js_,\n  vsNavbarTitlevue_type_template_id_216c9b3f_render,\n  vsNavbarTitlevue_type_template_id_216c9b3f_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsNavbarTitle = (vsNavbarTitle_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavbarItems.vue?vue&type=template&id=8148bbb6&\nvar vsNavbarItemsvue_type_template_id_8148bbb6_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-navbar--items\"},[_vm._t(\"default\")],2)}\nvar vsNavbarItemsvue_type_template_id_8148bbb6_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavbarItems.vue?vue&type=template&id=8148bbb6&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsNavbar/vsNavbarItems.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n/* harmony default export */ var vsNavbarItemsvue_type_script_lang_js_ = ({\n  name: 'VsNavbarItems'\n});\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavbarItems.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsNavbar_vsNavbarItemsvue_type_script_lang_js_ = (vsNavbarItemsvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsNavbar/vsNavbarItems.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsNavbarItems_component = normalizeComponent(\n  vsNavbar_vsNavbarItemsvue_type_script_lang_js_,\n  vsNavbarItemsvue_type_template_id_8148bbb6_render,\n  vsNavbarItemsvue_type_template_id_8148bbb6_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsNavbarItems = (vsNavbarItems_component.exports);\n// CONCATENATED MODULE: ./src/components/vsNavbar/index.js\n\n\n\n\n\n\n\n/* harmony default export */ var components_vsNavbar = (function (Vue) {\n  Vue.component(vsNavbar.name, vsNavbar);\n  Vue.component(vsNavItem.name, vsNavItem);\n  Vue.component(vsNavGroup.name, vsNavGroup);\n  Vue.component(vsNavbarTitle.name, vsNavbarTitle);\n  Vue.component(vsNavbarItems.name, vsNavbarItems);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSideBar/vsSidebar.vue?vue&type=template&id=6ab76ff0&\nvar vsSidebarvue_type_template_id_6ab76ff0_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"vs-sidebar-animate\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.staticPosition || _vm.value),expression:\"staticPosition || value\"}],ref:\"sidebarbackground\",staticClass:\"vs-content-sidebar\"},[(!_vm.hiddenBackground)?_c('div',{staticClass:\"vs-sidebar--background\"}):_vm._e(),_c('div',{ref:\"sidebarContainer\",staticClass:\"vs-sidebar\",class:[\n        (\"vs-sidebar-\" + _vm.color),\n        {\n          'vs-sidebar-parent': _vm.parent != 'body',\n          'vs-sidebar-staticPosition': _vm.staticPosition,\n          'vs-sidebar-position-right': _vm.positionRight,\n          'vs-sidebar-reduce': _vm.reduce,\n          'vs-sidebar-reduceNotRebound': _vm.reduceNotRebound,\n          'vs-sidebar-reduceNotHoverExpand': _vm.reduceNotHoverExpand\n        }\n      ]},[(_vm.$slots.header)?_c('header',{staticClass:\"vs-sidebar--header\"},[_vm._t(\"header\")],2):_vm._e(),_c('div',{staticClass:\"vs-sidebar--items\"},[_vm._t(\"default\")],2),(_vm.spacer)?_c('vs-spacer'):_vm._e(),(_vm.$slots.footer)?_c('footer',{staticClass:\"vs-sidebar--footer\"},[_vm._t(\"footer\")],2):_vm._e()],1)])])}\nvar vsSidebarvue_type_template_id_6ab76ff0_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsSideBar/vsSidebar.vue?vue&type=template&id=6ab76ff0&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSideBar/vsSidebar.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsSidebarvue_type_script_lang_js_ = ({\n  name: 'VsSidebar',\n  props: {\n    value: {\n      default: false\n    },\n    defaultIndex: {\n      default: null,\n      type: [String, Number]\n    },\n    color: {\n      default: 'primary',\n      type: String\n    },\n    parent: {\n      default: null,\n      type: [String, Object]\n    },\n    spacer: {\n      default: false,\n      type: Boolean\n    },\n    staticPosition: {\n      default: false,\n      type: Boolean\n    },\n    positionRight: {\n      default: false,\n      type: Boolean\n    },\n    clickNotClose: {\n      default: false,\n      type: Boolean\n    },\n    reduce: {\n      default: false,\n      type: Boolean\n    },\n    reduceNotRebound: {\n      default: false,\n      type: Boolean\n    },\n    reduceNotHoverExpand: {\n      default: false,\n      type: Boolean\n    },\n    hiddenBackground: {\n      default: false,\n      type: Boolean\n    }\n  },\n  data: function data() {\n    return {\n      currentIndex: 0\n    };\n  },\n  created: function created() {\n    this.currentIndex = this.defaultIndex;\n  },\n  mounted: function mounted() {\n    this.insertBody();\n  },\n  watch: {\n    value: function value() {\n      if (!this.clickNotClose) this.addEventClick();\n    }\n  },\n  methods: {\n    getActive: function getActive() {\n      return this.currentIndex;\n    },\n    setIndexActive: function setIndexActive(index) {\n      this.currentIndex = index;\n    },\n    addEventClick: function addEventClick() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        var parentx = typeof _this.parent == 'string' ? document.querySelector(_this.parent) : _this.parent;\n        var element = parentx || window;\n\n        if (_this.value) {\n          setTimeout(function () {\n            element.addEventListener('click', _this.closeSidebar);\n          }, 300);\n        }\n      });\n    },\n    closeSidebar: function closeSidebar(evt) {\n      var parent = evt.target.closest('.vs-sidebar');\n\n      if (!parent) {\n        this.$emit('input', false);\n        var parentx = typeof this.parent == 'string' ? document.querySelector(this.parent) : this.parent;\n        var element = parentx || window;\n        element.removeEventListener('click', this.closeSidebar);\n      }\n    },\n    insertBody: function insertBody() {\n      if (this.parent) {\n        var elx = this.$refs.sidebarbackground;\n        var parentx = typeof this.parent == 'string' ? document.querySelector(this.parent) : this.parent;\n        parentx.insertBefore(elx, parentx.firstChild);\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsSideBar/vsSidebar.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsSideBar_vsSidebarvue_type_script_lang_js_ = (vsSidebarvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsSideBar/vsSidebar.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsSidebar_component = normalizeComponent(\n  vsSideBar_vsSidebarvue_type_script_lang_js_,\n  vsSidebarvue_type_template_id_6ab76ff0_render,\n  vsSidebarvue_type_template_id_6ab76ff0_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsSidebar = (vsSidebar_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSideBar/vsSidebarItem.vue?vue&type=template&id=74ad8ff9&\nvar vsSidebarItemvue_type_template_id_74ad8ff9_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-sidebar--item\",class:{'vs-sidebar-item-active':_vm.getActive},on:{\"click\":_vm.setIndexActive}},[(_vm.to)?_c('router-link',{attrs:{\"to\":_vm.to}},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon}}),_vm._t(\"default\")],2):_c('a',{attrs:{\"href\":_vm.href}},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon}}),_vm._t(\"default\")],2)],1)}\nvar vsSidebarItemvue_type_template_id_74ad8ff9_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsSideBar/vsSidebarItem.vue?vue&type=template&id=74ad8ff9&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSideBar/vsSidebarItem.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsSidebarItemvue_type_script_lang_js_ = ({\n  name: 'VsSidebarItem',\n  props: {\n    icon: {\n      default: null,\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    href: {\n      default: '#',\n      type: String\n    },\n    to: {\n      default: null,\n      type: [String, Object]\n    },\n    index: {\n      default: null,\n      type: [String, Number]\n    }\n  },\n  computed: {\n    getActive: function getActive() {\n      return this.$parent.getActive() == this.index;\n    }\n  },\n  methods: {\n    setIndexActive: function setIndexActive() {\n      this.$parent.setIndexActive(this.index);\n      this.$emit('click');\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsSideBar/vsSidebarItem.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsSideBar_vsSidebarItemvue_type_script_lang_js_ = (vsSidebarItemvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsSideBar/vsSidebarItem.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsSidebarItem_component = normalizeComponent(\n  vsSideBar_vsSidebarItemvue_type_script_lang_js_,\n  vsSidebarItemvue_type_template_id_74ad8ff9_render,\n  vsSidebarItemvue_type_template_id_74ad8ff9_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsSidebarItem = (vsSidebarItem_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSideBar/vsSidebarGroup.vue?vue&type=template&id=0a83ccd1&\nvar vsSidebarGroupvue_type_template_id_0a83ccd1_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-sidebar-group\",class:{'vs-sidebar-group-open' : _vm.openItems},on:{\"mouseover\":_vm.mouseover,\"mouseout\":_vm.mouseout}},[_c('h4',{on:{\"click\":_vm.clickGroup}},[_vm._v(_vm._s(_vm.title)+\" \"),_c('vs-icon',[_vm._v(\"keyboard_arrow_down\")])],1),_c('span',{staticClass:\"vs-sidebar--tooltip\"},[_vm._v(_vm._s(_vm.title))]),_c('ul',{ref:\"items\",staticClass:\"vs-sidebar--group-items\",style:(_vm.styleItems)},[_vm._t(\"default\")],2)])}\nvar vsSidebarGroupvue_type_template_id_0a83ccd1_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsSideBar/vsSidebarGroup.vue?vue&type=template&id=0a83ccd1&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsSideBar/vsSidebarGroup.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsSidebarGroupvue_type_script_lang_js_ = ({\n  name: 'VsSidebarGroup',\n  props: {\n    collapsed: {\n      default: false,\n      type: Boolean\n    },\n    title: {\n      default: null,\n      type: String\n    },\n    openHover: {\n      default: false,\n      type: Boolean\n    },\n    open: {\n      default: false,\n      type: Boolean\n    }\n  },\n  data: function data() {\n    return {\n      maxHeight: '0px',\n      openItems: false\n    };\n  },\n  computed: {\n    styleItems: function styleItems() {\n      return {\n        maxHeight: this.maxHeight\n      };\n    }\n  },\n  watch: {\n    maxHeight: function maxHeight() {\n      this.openItems = this.maxHeight != '0px';\n    }\n  },\n  mounted: function mounted() {\n    this.openItems = this.open;\n\n    if (this.open) {\n      this.maxHeight = 'none';\n    }\n  },\n  methods: {\n    getActive: function getActive() {\n      return this.$parent.getActive();\n    },\n    setIndexActive: function setIndexActive(index) {\n      this.$parent.setIndexActive(index);\n    },\n    clickGroup: function clickGroup() {\n      var _this = this;\n\n      if (!this.openHover) {\n        var scrollHeight = this.$refs.items.scrollHeight;\n\n        if (this.maxHeight == '0px') {\n          this.maxHeight = \"\".concat(scrollHeight, \"px\");\n          setTimeout(function () {\n            _this.maxHeight = 'none';\n          }, 300);\n        } else {\n          this.maxHeight = \"\".concat(scrollHeight, \"px\");\n          setTimeout(function () {\n            _this.maxHeight = \"\".concat(0, \"px\");\n          }, 50);\n        }\n      }\n    },\n    mouseover: function mouseover() {\n      if (this.openHover) {\n        var scrollHeight = this.$refs.items.scrollHeight;\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n      }\n    },\n    mouseout: function mouseout() {\n      if (this.openHover) {\n        var scrollHeight = 0;\n        this.maxHeight = \"\".concat(scrollHeight, \"px\");\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsSideBar/vsSidebarGroup.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsSideBar_vsSidebarGroupvue_type_script_lang_js_ = (vsSidebarGroupvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsSideBar/vsSidebarGroup.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsSidebarGroup_component = normalizeComponent(\n  vsSideBar_vsSidebarGroupvue_type_script_lang_js_,\n  vsSidebarGroupvue_type_template_id_0a83ccd1_render,\n  vsSidebarGroupvue_type_template_id_0a83ccd1_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsSidebarGroup = (vsSidebarGroup_component.exports);\n// CONCATENATED MODULE: ./src/components/vsSideBar/index.js\n\n\n\n\n\n/* harmony default export */ var vsSideBar = (function (Vue) {\n  Vue.component(vsSidebar.name, vsSidebar);\n  Vue.component(vsSidebarItem.name, vsSidebarItem);\n  Vue.component(vsSidebarGroup.name, vsSidebarGroup);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDropDown/vsDropDown.vue?vue&type=template&id=5eb09c5b&lang=html&\nvar vsDropDownvue_type_template_id_5eb09c5b_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',_vm._g(_vm._b({ref:\"dropdown\",staticClass:\"vs-con-dropdown parent-dropdown\",attrs:{\"type\":\"button\"}},'button',_vm.$attrs,false),_vm.listeners),[_vm._t(\"default\")],2)}\nvar vsDropDownvue_type_template_id_5eb09c5b_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDown.vue?vue&type=template&id=5eb09c5b&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDropDown/vsDropDown.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsDropDownvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsDropDownvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsDropDownvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsDropDownvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsDropDownvue_type_script_lang_js_ = ({\n  name: \"VsDropdown\",\n  inheritAttrs: false,\n  props: {\n    vsTriggerClick: {\n      default: false,\n      type: Boolean\n    },\n    vsTriggerContextmenu: {\n      default: false,\n      type: Boolean\n    },\n    color: {\n      default: 'primary',\n      type: String\n    },\n    vsCustomContent: {\n      default: false,\n      type: Boolean\n    },\n    vsDropRight: {\n      default: false,\n      type: Boolean\n    }\n  },\n  data: function data() {\n    return {\n      vsDropdownVisible: false,\n      rightx: false\n    };\n  },\n  computed: {\n    listeners: function listeners() {\n      var _this = this;\n\n      return vsDropDownvue_type_script_lang_js_objectSpread({}, this.$listeners, {\n        contextmenu: function contextmenu(evt) {\n          return _this.vsTriggerContextmenu ? _this.clickToogleMenu(evt, true) : {};\n        },\n        click: function click(evt) {\n          return _this.vsTriggerContextmenu ? {} : _this.clickToogleMenu(evt);\n        },\n        mouseout: function mouseout(evt) {\n          return _this.toggleMenu('out', evt);\n        },\n        mouseover: function mouseover(evt) {\n          return _this.toggleMenu('over', evt);\n        }\n      });\n    }\n  },\n  watch: {\n    vsDropdownVisible: function vsDropdownVisible() {\n      this.changePositionMenu();\n\n      if (this.vsDropdownVisible) {\n        this.$emit('focus');\n        document.addEventListener('click', this.clickx);\n      } else {\n        this.$emit('blur');\n      }\n    }\n  },\n  mounted: function mounted() {\n    this.changeColor();\n    document.addEventListener('click', this.clickx);\n  },\n  beforeDestroy: function beforeDestroy() {\n    document.removeEventListener('click', this.clickx);\n  },\n  methods: {\n    clickx: function clickx(evt) {\n      var _this$$children$filte = this.$children.filter(function (item) {\n        return item.hasOwnProperty('dropdownVisible');\n      }),\n          _this$$children$filte2 = _slicedToArray(_this$$children$filte, 1),\n          dropdownMenu = _this$$children$filte2[0];\n\n      dropdownMenu.vsCustomContent = this.vsCustomContent;\n      dropdownMenu.vsTriggerClick = this.vsTriggerClick;\n      dropdownMenu.vsDropRight = this.vsDropRight;\n\n      if ((this.vsTriggerClick || this.vsCustomContent) && this.vsDropdownVisible) {\n        if (evt.target !== this.$refs.dropdown && evt.target.parentNode !== this.$refs.dropdown && evt.target.parentNode.parentNode !== this.$refs.dropdown) {\n          if (!evt.target.closest('.vs-dropdown--menu')) {\n            dropdownMenu.dropdownVisible = this.vsDropdownVisible = false;\n            document.removeEventListener('click', this.clickx);\n          }\n        }\n      }\n    },\n    changeColor: function changeColor() {\n      var _this2 = this;\n\n      var child = this.$children;\n      child.forEach(function (item) {\n        if (item.$vnode.tag.indexOf('dropdown') != -1) {\n          item.color = _this2.color;\n        }\n      });\n    },\n    changePositionMenu: function changePositionMenu() {\n      var _this3 = this;\n\n      var _this$$children$filte3 = this.$children.filter(function (item) {\n        return item.hasOwnProperty('dropdownVisible');\n      }),\n          _this$$children$filte4 = _slicedToArray(_this$$children$filte3, 1),\n          dropdownMenu = _this$$children$filte4[0];\n\n      var scrollTopx = window.pageYOffset || document.documentElement.scrollTop;\n\n      if (this.$refs.dropdown.getBoundingClientRect().top + 300 >= window.innerHeight) {\n        this.$nextTick(function () {\n          dropdownMenu.topx = _this3.$refs.dropdown.getBoundingClientRect().top - dropdownMenu.$el.clientHeight - 7 + scrollTopx;\n          dropdownMenu.notHeight = true;\n        });\n      } else {\n        dropdownMenu.notHeight = false;\n        dropdownMenu.topx = this.$refs.dropdown.getBoundingClientRect().top + this.$refs.dropdown.clientHeight + scrollTopx - 5;\n      }\n\n      this.$nextTick(function () {\n        var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n\n        if (_this3.$refs.dropdown.getBoundingClientRect().left + dropdownMenu.$el.offsetWidth >= w - 25) {// this.rightx = true\n        }\n\n        if (_this3.$refs.dropdown.getBoundingClientRect().right < dropdownMenu.$el.clientWidth + 25) {\n          dropdownMenu.leftx = dropdownMenu.$el.clientWidth + _this3.$refs.dropdown.getBoundingClientRect().left;\n          _this3.rightx = true;\n          return;\n        }\n\n        dropdownMenu.leftx = _this3.$refs.dropdown.getBoundingClientRect().left + (_this3.vsDropRight ? dropdownMenu.$el.clientWidth : _this3.$refs.dropdown.clientWidth);\n      });\n    },\n    clickToogleMenu: function clickToogleMenu(evt) {\n      var _this4 = this;\n\n      if (evt.type == 'contextmenu') {\n        evt.preventDefault();\n      }\n\n      var _this$$children$filte5 = this.$children.filter(function (item) {\n        return item.hasOwnProperty('dropdownVisible');\n      }),\n          _this$$children$filte6 = _slicedToArray(_this$$children$filte5, 1),\n          dropdownMenu = _this$$children$filte6[0];\n\n      if (this.vsTriggerClick || this.vsTriggerContextmenu) {\n        if (this.vsDropdownVisible && !evt.target.closest('.vs-dropdown--menu')) {\n          dropdownMenu.dropdownVisible = this.vsDropdownVisible = false;\n        } else {\n          dropdownMenu.dropdownVisible = this.vsDropdownVisible = true;\n          window.addEventListener('click', function () {\n            if (!evt.target.closest('.vs-con-dropdown') && !evt.target.closest('.vs-dropdown--menu')) {\n              dropdownMenu.dropdownVisible = _this4.vsDropdownVisible = false;\n            }\n          });\n        }\n      }\n    },\n    toggleMenu: function toggleMenu(typex, evt) {\n      var _this$$children$filte7 = this.$children.filter(function (item) {\n        return item.hasOwnProperty('dropdownVisible');\n      }),\n          _this$$children$filte8 = _slicedToArray(_this$$children$filte7, 1),\n          dropdownMenu = _this$$children$filte8[0];\n\n      if (!this.vsTriggerClick && !this.vsTriggerContextmenu) {\n        if (typex == 'over') {\n          dropdownMenu.dropdownVisible = this.vsDropdownVisible = true;\n        } else {\n          if (!evt.relatedTarget.classList.contains('vs-dropdown-menu')) {\n            dropdownMenu.dropdownVisible = this.vsDropdownVisible = false;\n          }\n        }\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDown.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsDropDown_vsDropDownvue_type_script_lang_js_ = (vsDropDownvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDown.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsDropDown_component = normalizeComponent(\n  vsDropDown_vsDropDownvue_type_script_lang_js_,\n  vsDropDownvue_type_template_id_5eb09c5b_lang_html_render,\n  vsDropDownvue_type_template_id_5eb09c5b_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsDropDown = (vsDropDown_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDropDown/vsDropDownMenu.vue?vue&type=template&id=1e9be402&lang=html&\nvar vsDropDownMenuvue_type_template_id_1e9be402_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"dropdownx\"}},[(_vm.dropdownVisible)?_c('div',{ref:\"options\",staticClass:\"con-vs-dropdown--menu vs-dropdown-menu\",class:{'rightx':_vm.vsDropRight || _vm.$parent.rightx,'notHeight':_vm.notHeight},style:({\n      'left':_vm.leftx+'px',\n      'top':_vm.topx+'px'\n    }),on:{\"mouseleave\":_vm.mouseleavex,\"mouseenter\":_vm.mouseenterx}},[(!_vm.vsCustomContent)?_c('ul',{staticClass:\"vs-component vs-dropdown--menu\"},[_vm._t(\"default\")],2):_c('div',{staticClass:\"vs-dropdown--custom vs-dropdown--menu\"},[_vm._t(\"default\")],2),_c('div',{ref:\"menuAfter\",class:[ _vm.vsDropRight ? 'vs-dropdown-right--menu--after' : 'vs-dropdown--menu--after']})]):_vm._e()])}\nvar vsDropDownMenuvue_type_template_id_1e9be402_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDownMenu.vue?vue&type=template&id=1e9be402&lang=html&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.find.js\nvar es_array_find = __webpack_require__(\"9429\");\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDropDown/vsDropDownMenu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsDropDownMenuvue_type_script_lang_js_ = ({\n  name: \"VsDropdownMenu\",\n  data: function data() {\n    return {\n      dropdownVisible: false,\n      leftAfter: 20,\n      leftx: 0,\n      topx: 0,\n      rightx: true,\n      vsTriggerClick: false,\n      vsDropRight: false,\n      widthx: 0,\n      notHeight: false,\n      vsCustomContent: false,\n      parentNode: null\n    };\n  },\n  watch: {\n    dropdownVisible: function dropdownVisible(val) {\n      var dropdownGroup = this.$children.filter(function (item) {\n        return item.hasOwnProperty('activeGroup');\n      });\n      dropdownGroup.forEach(function (item_group) {\n        item_group.activeGroup = false;\n      });\n      this.setDirection();\n      !val ? this.$parent.rightx = false : null;\n    }\n  },\n  mounted: function mounted() {\n    this.insertBody();\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.$el.parentNode.removeChild(this.$el);\n  },\n  methods: {\n    mouseenterx: function mouseenterx() {\n      if (!this.vsTriggerClick) {\n        this.dropdownVisible = true;\n        this.widthx = this.$el.clientWidth;\n      }\n    },\n    mouseleavex: function mouseleavex() {\n      if (!this.vsTriggerClick) {\n        this.dropdownVisible = false;\n        this.widthx = this.$el.clientWidth;\n      }\n    },\n    setDirection: function setDirection() {\n      var _this = this;\n\n      setTimeout(function () {\n        var dropdown = _this.parentNode;\n        var menuAfter = _this.$refs.menuAfter;\n        if (!menuAfter) return;\n\n        if (dropdown && menuAfter && dropdown.getBoundingClientRect().top + 300 >= window.innerHeight) {\n          var hasGroup = _this.$children.find(function (it) {\n            return it.hasOwnProperty('activeGroup');\n          });\n\n          menuAfter.style.bottom = '-5px';\n          menuAfter.style.transform = 'rotate(225deg)';\n          return;\n        }\n\n        menuAfter.style.top = '10px';\n      }, 100);\n    },\n    toggleMenu: function toggleMenu(event) {\n      if (event.type == 'mouseover' && !this.vsTriggerClick) {\n        this.dropdownVisible = true;\n      } else if (!this.vsTriggerClick) {\n        this.dropdownVisible = false;\n      }\n\n      this.widthx = this.$el.clientWidth;\n    },\n    insertBody: function insertBody() {\n      var elp = this.$el;\n      this.parentNode = this.$el.parentNode;\n      document.body.insertBefore(elp, document.body.firstChild);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDownMenu.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsDropDown_vsDropDownMenuvue_type_script_lang_js_ = (vsDropDownMenuvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDownMenu.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsDropDownMenu_component = normalizeComponent(\n  vsDropDown_vsDropDownMenuvue_type_script_lang_js_,\n  vsDropDownMenuvue_type_template_id_1e9be402_lang_html_render,\n  vsDropDownMenuvue_type_template_id_1e9be402_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsDropDownMenu = (vsDropDownMenu_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDropDown/vsDropDownItem.vue?vue&type=template&id=39d056c0&lang=html&\nvar vsDropDownItemvue_type_template_id_39d056c0_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"vs-component vs-dropdown--item\",class:{'divider':_vm.divider},style:({\n    'color':_vm.hoverx?_vm.giveColor()+' !important':null,\n    'background':_vm.hoverx?_vm.giveColor(.01)+' !important':null\n  }),on:{\"click\":_vm.closeParent,\"mouseover\":function($event){_vm.hoverx=true},\"mouseout\":function($event){_vm.hoverx=false}}},[(_vm.to)?_c('router-link',_vm._g(_vm._b({staticClass:\"vs-dropdown--item-link\",class:{'disabled':_vm.disabled},attrs:{\"to\":_vm.to}},'router-link',_vm.$attrs,false),_vm.$listeners),[_vm._v(\" \"+_vm._s(_vm.$attrs.disabled)+\" \"),_vm._t(\"default\")],2):_c('a',_vm._g(_vm._b({staticClass:\"vs-dropdown--item-link\",class:{'disabled':_vm.disabled}},'a',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)],1)}\nvar vsDropDownItemvue_type_template_id_39d056c0_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDownItem.vue?vue&type=template&id=39d056c0&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDropDown/vsDropDownItem.vue?vue&type=script&lang=js&\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsDropDownItemvue_type_script_lang_js_ = ({\n  name: \"VsDropdownItem\",\n  inheritAttrs: false,\n  props: {\n    to: {},\n    disabled: {\n      default: false,\n      type: Boolean\n    },\n    divider: {\n      default: false,\n      type: Boolean\n    }\n  },\n  data: function data() {\n    return {\n      hoverx: false,\n      vsDropDownItem: true,\n      color: null\n    };\n  },\n  mounted: function mounted() {\n    this.changeColor();\n  },\n  updated: function updated() {\n    this.changeColor();\n  },\n  methods: {\n    closeParent: function closeParent() {\n      if (this.disabled) {\n        return;\n      }\n\n      searchParent(this);\n\n      function searchParent(_this) {\n        var parent = _this.$parent;\n\n        if (!parent.$el.className) {\n          return;\n        }\n\n        if (parent.$el.className.indexOf('parent-dropdown') == -1) {\n          searchParent(parent);\n        } else {\n          var _parent$$children$fil = parent.$children.filter(function (item) {\n            return item.hasOwnProperty('dropdownVisible');\n          }),\n              _parent$$children$fil2 = _slicedToArray(_parent$$children$fil, 1),\n              dropdownMenu = _parent$$children$fil2[0];\n\n          dropdownMenu.dropdownVisible = parent.vsDropdownVisible = false;\n        }\n      }\n    },\n    changeColor: function changeColor() {\n      var _self = this;\n\n      searchParent(this);\n\n      function searchParent(_this) {\n        var parent = _this.$parent;\n\n        if (!parent.$el.className) {\n          return;\n        }\n\n        if (parent.$el.className.indexOf('parent-dropdown') == -1) {\n          searchParent(parent);\n        } else {\n          _self.color = parent.color;\n        }\n      }\n    },\n    giveColor: function giveColor() {\n      var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n      return utils_color.rColor(this.color, opacity);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDownItem.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsDropDown_vsDropDownItemvue_type_script_lang_js_ = (vsDropDownItemvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDownItem.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsDropDownItem_component = normalizeComponent(\n  vsDropDown_vsDropDownItemvue_type_script_lang_js_,\n  vsDropDownItemvue_type_template_id_39d056c0_lang_html_render,\n  vsDropDownItemvue_type_template_id_39d056c0_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsDropDownItem = (vsDropDownItem_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDropDown/vsDropDownGroup.vue?vue&type=template&id=a073f80e&lang=html&\nvar vsDropDownGroupvue_type_template_id_a073f80e_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{ref:\"group\",staticClass:\"vs-component vs-dropdown--group\",class:{'marginIcon':_vm.vsCollapse, 'no-cascading':!_vm.vsCollapse, 'group-rightx':_vm.rightx},on:{\"click\":_vm.clickGroup}},[(_vm.vsCollapse)?_c('span',{staticClass:\"span vs-dropdown--group-label\"},[_vm._v(_vm._s(_vm.vsLabel))]):_c('h3',[_vm._v(_vm._s(_vm.vsLabel))]),(_vm.vsCollapse)?_c('vs-icon',{staticClass:\"icon-group notranslate vs-dropdown--group-icon\",attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.vsIcon}}):_vm._e(),_c('div',{ref:\"ulx\",staticClass:\"con-dropdown--group-con-ul\",class:{'con-dropdown-group-no-cascading':!_vm.vsCollapse},style:(_vm.styleItems)},[_c('ul',{staticClass:\"con-dropdown--group-ul\"},[_vm._t(\"default\")],2)])],1)}\nvar vsDropDownGroupvue_type_template_id_a073f80e_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDownGroup.vue?vue&type=template&id=a073f80e&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsDropDown/vsDropDownGroup.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsDropDownGroupvue_type_script_lang_js_ = ({\n  name: 'VsDropdownGroup',\n  props: {\n    vsLabel: {\n      default: 'Options',\n      type: String\n    },\n    vsCollapse: {\n      default: false,\n      type: Boolean\n    },\n    vsIcon: {\n      default: 'keyboard_arrow_right',\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      activeGroup: false,\n      rightx: false,\n      widthx: 0,\n      maxHeight: '0px'\n    };\n  },\n  computed: {\n    styleItems: function styleItems() {\n      return {\n        maxHeight: this.vsCollapse ? this.maxHeight : 'auto'\n      };\n    }\n  },\n  methods: {\n    clickGroup: function clickGroup(evt) {\n      var _this2 = this;\n\n      if (evt.target != this.$refs.group) return;\n\n      if (!this.openHover) {\n        var scrollHeight = this.$refs.ulx.scrollHeight;\n\n        if (this.maxHeight == '0px') {\n          this.maxHeight = \"\".concat(scrollHeight, \"px\");\n          setTimeout(function () {\n            _this2.maxHeight = 'none';\n          }, 300);\n        } else {\n          this.maxHeight = \"\".concat(scrollHeight, \"px\");\n          setTimeout(function () {\n            _this2.maxHeight = \"\".concat(0, \"px\");\n          }, 50);\n        }\n      }\n    },\n    beforeEnter: function beforeEnter(el) {\n      el.style.height = 0;\n      el.style.opacity = 0;\n    },\n    enter: function enter(el, done) {\n      // let h = this.$refs.ulx.scrollHeight\n      // this.$refs.ulx.style.height = h + 'px'\n      // el.style.opacity = 1\n      // parents(this)\n      // function parents(_this){\n      //   if(_this.$parent.$el.className.search('vs-dropdown--group')!=-1){\n      //     // this.$parent.$el\n      //     let hp = _this.$parent.$refs.ulx.scrollHeight\n      //     _this.$parent.$refs.ulx.style.height = hp + h + 'px'\n      //     parents(_this.$parent)\n      //   }\n      // }\n      done();\n    },\n    leave: function leave(el) {\n      var __this = this;\n\n      addParents(this);\n\n      function addParents(_this) {\n        if (_this.$parent.$refs.ulx) {\n          var hp = _this.$parent.$refs.ulx.scrollHeight - __this.$refs.ulx.scrollHeight;\n          _this.$parent.$refs.ulx.style.height = hp + 'px';\n          addParents(_this.$parent);\n        }\n      }\n\n      if (!this.$parent.$refs.ulx) {\n        this.$refs.ulx.style.height = 0 + 'px';\n      }\n\n      this.$refs.ulx.style.height = 0 + 'px';\n      el.style.opacity = 0;\n    },\n    toggleGroup: function toggleGroup(evt) {\n      if (evt.target == this.$refs.group) {\n        this.activeGroup = !this.activeGroup;\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDownGroup.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsDropDown_vsDropDownGroupvue_type_script_lang_js_ = (vsDropDownGroupvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsDropDown/vsDropDownGroup.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsDropDownGroup_component = normalizeComponent(\n  vsDropDown_vsDropDownGroupvue_type_script_lang_js_,\n  vsDropDownGroupvue_type_template_id_a073f80e_lang_html_render,\n  vsDropDownGroupvue_type_template_id_a073f80e_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsDropDownGroup = (vsDropDownGroup_component.exports);\n// CONCATENATED MODULE: ./src/components/vsDropDown/index.js\n\n\n\n\n\n\n/* harmony default export */ var components_vsDropDown = (function (Vue) {\n  Vue.component(vsDropDown.name, vsDropDown);\n  Vue.component(vsDropDownMenu.name, vsDropDownMenu);\n  Vue.component(vsDropDownItem.name, vsDropDownItem);\n  Vue.component(vsDropDownGroup.name, vsDropDownGroup);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTable.vue?vue&type=template&id=d83a5f4a&\nvar vsTablevue_type_template_id_d83a5f4a_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-component vs-con-table\",class:[{'stripe': _vm.stripe, 'hoverFlat': _vm.hoverFlat}, (\"vs-table-\" + _vm.color)]},[_c('header',{staticClass:\"header-table vs-table--header\"},[_vm._t(\"header\"),(_vm.search)?_c('div',{staticClass:\"con-input-search vs-table--search\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchx),expression:\"searchx\"}],staticClass:\"input-search vs-table--search-input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.searchx)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.searchx=$event.target.value}}}),_c('vs-icon',{attrs:{\"icon\":\"search\"}})],1):_vm._e()],2),_c('div',{staticClass:\"con-tablex vs-table--content\"},[_c('div',{staticClass:\"vs-con-tbody vs-table--tbody \",style:(_vm.styleConTbody)},[_c('table',{ref:\"table\",staticClass:\"vs-table vs-table--tbody-table\"},[_c('thead',{ref:\"thead\",staticClass:\"vs-table--thead\"},[_c('tr',[(_vm.multiple || _vm.hasExpadableData)?_c('th',{staticClass:\"td-check\"},[(_vm.multiple)?_c('span',{staticClass:\"con-td-check\"},[_c('vs-checkbox',{key:_vm.isCheckedLine ? 'remove' : 'check',attrs:{\"icon\":_vm.isCheckedLine ? 'remove' : 'check',\"checked\":_vm.isCheckedMultiple,\"size\":\"small\"},on:{\"input\":_vm.changeCheckedMultiple}})],1):_vm._e()]):_vm._e(),_vm._t(\"thead\")],2)]),_vm._t(\"default\",null,{\"data\":_vm.datax})],2)]),(_vm.isNoData)?_c('div',{staticClass:\"not-data-table vs-table--not-data\"},[_vm._v(\" \"+_vm._s(_vm.noDataText)+\" \")]):_vm._e(),(_vm.pagination)?_c('div',{staticClass:\"con-pagination-table vs-table--pagination\"},[_c('vs-pagination',{attrs:{\"total\":_vm.searchx && !_vm.sst ? _vm.getTotalPagesSearch : _vm.getTotalPages,\"sizeArray\":_vm.queriedResults.length,\"maxItems\":_vm.maxItemsx,\"description\":_vm.description,\"descriptionItems\":_vm.descriptionItems},on:{\"changeMaxItems\":_vm.changeMaxItems},model:{value:(_vm.currentx),callback:function ($$v) {_vm.currentx=$$v},expression:\"currentx\"}})],1):_vm._e()])])}\nvar vsTablevue_type_template_id_d83a5f4a_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsTable/vsTable.vue?vue&type=template&id=d83a5f4a&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.sort.js\nvar es_array_sort = __webpack_require__(\"0a5f\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTable.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsTablevue_type_script_lang_js_ = ({\n  name: \"VsTable\",\n  props: {\n    value: {},\n    color: {\n      default: 'primary',\n      type: String\n    },\n    noDataText: {\n      default: 'No data Available',\n      type: String\n    },\n    stripe: {\n      default: false,\n      type: Boolean\n    },\n    hoverFlat: {\n      default: false,\n      type: Boolean\n    },\n    maxHeight: {\n      default: 'auto',\n      type: String\n    },\n    multiple: {\n      default: false,\n      type: Boolean\n    },\n    data: {\n      default: null\n    },\n    notSpacer: {\n      default: false,\n      type: Boolean\n    },\n    search: {\n      default: false,\n      type: Boolean\n    },\n    maxItems: {\n      default: 5,\n      type: [Number, String]\n    },\n    pagination: {\n      default: false,\n      type: Boolean\n    },\n    description: {\n      default: false,\n      type: Boolean\n    },\n    descriptionItems: {\n      default: function _default() {\n        return [];\n      },\n      type: Array\n    },\n    currentPage: {\n      default: 1,\n      type: Number | String\n    },\n    sst: {\n      default: false,\n      type: Boolean\n    },\n    total: {\n      type: Number,\n      default: 0\n    }\n  },\n  data: function data() {\n    return {\n      headerWidth: '100%',\n      trs: [],\n      datax: [],\n      searchx: null,\n      currentx: 1,\n      maxItemsx: 5,\n      hasExpadableData: false,\n      currentSortKey: null,\n      currentSortType: null\n    };\n  },\n  computed: {\n    getTotalPages: function getTotalPages() {\n      return Math.ceil(this.data.length / this.maxItemsx);\n    },\n    getTotalPagesSearch: function getTotalPagesSearch() {\n      var _this = this;\n\n      var search = this.normalize(this.searchx);\n      var filterx = this.data.filter(function (tr) {\n        return _this.normalize(_this.getValues(tr).toString()).indexOf(search) != -1;\n      });\n      return Math.ceil(this.queriedResults.length / this.maxItems);\n    },\n    queriedResults: function queriedResults() {\n      var _this2 = this;\n\n      var queriedResults = this.data;\n\n      if (this.searchx && this.search) {\n        var dataBase = this.data;\n        queriedResults = dataBase.filter(function (tr) {\n          var values = _this2.getValues(tr).toString().toLowerCase();\n\n          return values.indexOf(_this2.searchx.toLowerCase()) != -1;\n        });\n      }\n\n      return queriedResults;\n    },\n    isNoData: function isNoData() {\n      if (_typeof(this.datax) == Object) {\n        return this.datax ? Object.keys(this.datax).length == 0 :   false && false;\n      } else {\n        return this.datax ? this.datax.length == 0 :   false && false;\n      }\n    },\n    isCheckedLine: function isCheckedLine() {\n      var lengthx = this.data.length;\n      var lengthSelected = this.value.length;\n      return lengthx !== lengthSelected;\n    },\n    isCheckedMultiple: function isCheckedMultiple() {\n      return this.value.length > 0;\n    },\n    styleConTbody: function styleConTbody() {\n      return {\n        maxHeight: this.maxHeight,\n        overflow: this.maxHeight != 'auto' ? 'auto' : null\n      };\n    },\n    getThs: function getThs() {\n      var ths = this.$slots.thead.filter(function (item) {\n        return item.tag;\n      });\n      return ths.length;\n    },\n    tableHeaderStyle: function tableHeaderStyle() {\n      return {\n        width: this.headerWidth\n      };\n    }\n  },\n  watch: {\n    currentPage: function currentPage() {\n      this.currentx = this.currentPage;\n    },\n    currentx: function currentx() {\n      if (this.sst) {\n        this.$emit('change-page', this.currentx);\n      } else {\n        this.loadData();\n      }\n    },\n    maxItems: function maxItems(val) {\n      this.maxItemsx = val;\n      this.loadData();\n    },\n    maxItemsx: function maxItemsx() {\n      this.loadData();\n    },\n    data: function data() {\n      var _this3 = this;\n\n      this.loadData();\n      this.$nextTick(function () {\n        if (_this3.datax.length > 0) {\n          _this3.changeTdsWidth();\n        }\n      });\n    },\n    searchx: function searchx() {\n      if (this.sst) {\n        this.$emit('search', this.searchx);\n      } else {\n        this.loadData();\n        this.currentx = 1;\n      }\n    }\n  },\n  mounted: function mounted() {\n    window.addEventListener('resize', this.listenerChangeWidth);\n    this.maxItemsx = this.maxItems;\n    this.loadData(); // this.$nextTick(() => {\n    //   if(this.datax.length > 0) {\n    //     this.changeTdsWidth()\n    //   }\n    // })\n  },\n  destroyed: function destroyed() {\n    window.removeEventListener('resize', this.listenerChangeWidth);\n  },\n  methods: {\n    loadData: function loadData() {\n      var max = Math.ceil(this.currentx * this.maxItemsx);\n      var min = max - this.maxItemsx;\n\n      if (!this.searchx || this.sst) {\n        this.datax = this.pagination ? this.getItems(min, max) : this.sortItems(this.data) || [];\n      } else {\n        this.datax = this.pagination ? this.getItemsSearch(true, min, max) : this.getItemsSearch(false, min, max) || [];\n      }\n    },\n    getItems: function getItems(min, max) {\n      var dataBase = this.sortItems(this.data);\n      var items = [];\n      dataBase.forEach(function (item, index) {\n        if (index >= min && index < max) {\n          items.push(item);\n        }\n      });\n      return items;\n    },\n    sortItems: function sortItems(data) {\n      var currentSortKey = this.currentSortKey,\n          currentSortType = this.currentSortType;\n\n      function compare(a, b) {\n        if (a[currentSortKey] < b[currentSortKey]) return currentSortType == 'desc' ? 1 : -1;\n        if (a[currentSortKey] > b[currentSortKey]) return currentSortType == 'desc' ? -1 : 1;\n        return 0;\n      }\n\n      return currentSortType !== null ? _toConsumableArray(data).sort(compare) : _toConsumableArray(data);\n    },\n    getItemsSearch: function getItemsSearch() {\n      var _this4 = this;\n\n      var pagination = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var min = arguments.length > 1 ? arguments[1] : undefined;\n      var max = arguments.length > 2 ? arguments[2] : undefined;\n      var search = this.normalize(this.searchx);\n      return this.sortItems(this.data).filter(function (tr) {\n        return _this4.normalize(_this4.getValues(tr).toString()).indexOf(search) != -1;\n      }).filter(function (_, index) {\n        return index >= min && index < max;\n      });\n    },\n    sort: function sort(key, sortType) {\n      this.currentSortKey = key;\n      this.currentSortType = sortType;\n\n      if (this.sst) {\n        this.$emit('sort', key, sortType);\n        return;\n      }\n\n      this.loadData();\n    },\n    normalize: function normalize(string) {\n      return string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase();\n    },\n    getValues: function getValues(obj) {\n      function flattenDeep(val) {\n        return Object.values(val || []).reduce(function (acc, val) {\n          return _typeof(val) === 'object' ? acc.concat(flattenDeep(val)) : acc.concat(val);\n        }, []);\n      }\n\n      return flattenDeep(obj).filter(function (item) {\n        return typeof item === 'string' || typeof item === 'number';\n      });\n    },\n    changeCheckedMultiple: function changeCheckedMultiple() {\n      var lengthx = this.data.length;\n      var lengthSelected = this.value.length;\n      var selectedx = lengthx - lengthSelected;\n\n      if (selectedx == 0) {\n        this.$emit('input', []);\n      } else {\n        this.$emit('input', this.data);\n      }\n    },\n    clicktr: function clicktr(tr, isTr) {\n      if (this.multiple && isTr) {\n        var val = this.value.slice(0);\n\n        if (val.includes(tr)) {\n          val.splice(val.indexOf(tr), 1);\n        } else {\n          val.push(tr);\n        }\n\n        this.$emit('input', val);\n        this.$emit('selected', tr);\n      } else if (isTr) {\n        this.$emit('input', tr);\n        this.$emit('selected', tr);\n      }\n    },\n    dblclicktr: function dblclicktr(tr, isTr) {\n      if (isTr) {\n        this.$emit('dblSelection', tr);\n      }\n    },\n    listenerChangeWidth: function listenerChangeWidth() {\n      this.headerWidth = \"\".concat(this.$refs.table.offsetWidth, \"px\");\n      this.changeTdsWidth();\n    },\n    changeTdsWidth: function changeTdsWidth() {\n      if (!this.value) return;\n      var tbody = this.$refs.table.querySelector('tbody'); // Adding condition removes querySelector none error - if tbody isnot present\n\n      if (tbody) {\n        var trvs = tbody.querySelector('.tr-values');\n        if (trvs === undefined || trvs === null) return;\n        var tds = trvs.querySelectorAll('.td');\n        var tdsx = [];\n        tds.forEach(function (td, index) {\n          tdsx.push({\n            index: index,\n            widthx: td.offsetWidth\n          });\n        });\n        var colgrouptable = this.$refs.colgrouptable;\n\n        if (colgrouptable !== undefined && colgrouptable !== null) {\n          var colsTable = colgrouptable.querySelectorAll('.col');\n          colsTable.forEach(function (col, index) {\n            col.setAttribute('width', tdsx[index].widthx);\n          });\n        }\n      }\n    },\n    changeMaxItems: function changeMaxItems(index) {\n      this.maxItemsx = this.descriptionItems[index];\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsTable/vsTable.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsTable_vsTablevue_type_script_lang_js_ = (vsTablevue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsTable/vsTable.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsTable_component = normalizeComponent(\n  vsTable_vsTablevue_type_script_lang_js_,\n  vsTablevue_type_template_id_d83a5f4a_render,\n  vsTablevue_type_template_id_d83a5f4a_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsTable = (vsTable_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTh.vue?vue&type=template&id=6008fdf0&\nvar vsThvue_type_template_id_6008fdf0_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('th',{attrs:{\"colspan\":\"1\",\"rowspan\":\"1\"},on:{\"click\":function($event){return _vm.sortValue()}}},[_c('div',{staticClass:\"vs-table-text\"},[_vm._t(\"default\"),(_vm.isColumnSelectedForSort && _vm.currentSort != 0)?_c('span',{staticClass:\"sort-th\"},[_c('vs-icon',{staticClass:\"th-sort-icon\",attrs:{\"icon\":_vm.currentSort == 1 ? 'expand_less' : 'expand_more'}})],1):_vm._e()],2)])}\nvar vsThvue_type_template_id_6008fdf0_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsTable/vsTh.vue?vue&type=template&id=6008fdf0&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTh.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsThvue_type_script_lang_js_ = ({\n  name: 'VsTh',\n  props: {\n    sortKey: {\n      default: null,\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      thIndex: 0,\n      thwidth: '100%',\n      currentSort: 0,\n      sortStatuses: [null, 'asc', 'desc']\n    };\n  },\n  computed: {\n    styleth: function styleth() {\n      return {\n        width: this.thwidth\n      };\n    },\n    isColumnSelectedForSort: function isColumnSelectedForSort() {\n      if (!this.sortKey) {\n        return false;\n      }\n\n      if (this.$parent.currentSortKey != this.sortKey) {\n        this.resetSort();\n      }\n\n      return this.$parent.currentSortKey == this.sortKey;\n    },\n    parentSortStatus: function parentSortStatus() {\n      return this.$parent.currentSortType;\n    }\n  },\n  methods: {\n    sortValue: function sortValue() {\n      this.currentSort = this.currentSort !== 2 ? this.currentSort + 1 : 0;\n      this.$parent.sort(this.sortKey, this.sortStatuses[this.currentSort]);\n    },\n    resetSort: function resetSort() {\n      this.currentSort = 0;\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsTable/vsTh.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsTable_vsThvue_type_script_lang_js_ = (vsThvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsTable/vsTh.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsTh_component = normalizeComponent(\n  vsTable_vsThvue_type_script_lang_js_,\n  vsThvue_type_template_id_6008fdf0_render,\n  vsThvue_type_template_id_6008fdf0_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsTh = (vsTh_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTr.vue?vue&type=template&id=0fe68680&\nvar vsTrvue_type_template_id_0fe68680_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{ref:\"tableTr\",staticClass:\"tr-values vs-table--tr\",class:[(\"tr-table-state-\" + _vm.state), {'is-selected':_vm.isSelected, 'selected': _vm.data, 'is-expand': _vm.maxHeight != '0px', 'activeEdit': _vm.activeEdit, 'hoverFlat': _vm.$parent.hoverFlat}],on:{\"click\":_vm.clicktr,\"dblclick\":_vm.dblclicktr}},[(_vm.$parent.multiple || _vm.$slots.expand)?_c('td',{staticClass:\"td-check\",class:{'active-expanded': this.expanded}},[(_vm.$parent.multiple)?_c('vs-checkbox',{attrs:{\"checked\":_vm.isSelected,\"size\":\"small\"}}):_vm._e(),(_vm.$slots.expand)?_c('vs-icon',[_vm._v(\"keyboard_arrow_down\")]):_vm._e()],1):_vm._e(),_vm._t(\"default\")],2)}\nvar vsTrvue_type_template_id_0fe68680_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsTable/vsTr.vue?vue&type=template&id=0fe68680&\n\n// EXTERNAL MODULE: external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}\nvar external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(\"8bbf\");\nvar external_commonjs_vue_commonjs2_vue_root_Vue_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_vue_commonjs2_vue_root_Vue_);\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTrExpand.vue?vue&type=template&id=bfc23f06&\nvar vsTrExpandvue_type_template_id_bfc23f06_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"tr-expand\"}},[(_vm.active)?_c('tr',{staticClass:\"tr-expand\"},[_c('td',{attrs:{\"colspan\":_vm.colspan}},[_c('div',{staticClass:\"content-tr-expand\"},[_vm._t(\"default\"),(_vm.close)?_c('button',{staticClass:\"tr-expand--close\",on:{\"click\":function($event){return _vm.$emit('click', $event)}}},[_c('i',{staticClass:\"material-icons\"},[_vm._v(\" clear \")])]):_vm._e()],2)])]):_vm._e()])}\nvar vsTrExpandvue_type_template_id_bfc23f06_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsTable/vsTrExpand.vue?vue&type=template&id=bfc23f06&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTrExpand.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsTrExpandvue_type_script_lang_js_ = ({\n  props: {\n    close: {\n      type: Boolean,\n      default: false\n    },\n    colspan: {\n      default: 1,\n      type: Number\n    }\n  },\n  data: function data() {\n    return {\n      active: false\n    };\n  },\n  mounted: function mounted() {\n    this.active = true;\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsTable/vsTrExpand.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsTable_vsTrExpandvue_type_script_lang_js_ = (vsTrExpandvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsTable/vsTrExpand.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsTrExpand_component = normalizeComponent(\n  vsTable_vsTrExpandvue_type_script_lang_js_,\n  vsTrExpandvue_type_template_id_bfc23f06_render,\n  vsTrExpandvue_type_template_id_bfc23f06_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsTrExpand = (vsTrExpand_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTr.vue?vue&type=script&lang=js&\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var vsTrvue_type_script_lang_js_ = ({\n  name: 'VsTr',\n  props: {\n    state: {\n      type: String,\n      default: null\n    },\n    data: {\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      colspan: 0,\n      expanded: false,\n      maxHeight: '0px',\n      activeEdit: false\n    };\n  },\n  watch: {\n    '$parent.datax': function $parentDatax() {\n      this.collapseExpandedData();\n    }\n  },\n  computed: {\n    styleExpand: function styleExpand() {\n      return {\n        maxHeight: this.maxHeight\n      };\n    },\n    getColspanExpand: function getColspanExpand() {\n      var lengthx = this.$parent.$refs.colgroup.querySelectorAll('th').length;\n      return lengthx;\n    },\n    isSelected: function isSelected() {\n      if (this.$parent.multiple && this.$parent.value) {\n        return this.data ? this.$parent.value.includes(this.data) : false;\n      } else {\n        return this.data ? this.$parent.value == this.data : false;\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      _this.colspan = _this.$parent.$refs.thead.querySelectorAll('th').length;\n\n      if (_this.$slots.expand) {\n        _this.colspan++;\n      }\n    });\n  },\n  created: function created() {\n    if (this.$slots.expand) this.$parent.hasExpadableData = true;\n  },\n  methods: {\n    insertAfter: function insertAfter(e, i) {\n      if (e.nextSibling) {\n        e.parentNode.insertBefore(i, e.nextSibling);\n      } else {\n        e.parentNode.appendChild(i);\n      }\n    },\n    clicktr: function clicktr(evt) {\n      this.$parent.clicktr(this.data, true);\n\n      if (this.$slots.expand) {\n        this.clicktd(evt);\n      }\n    },\n    dblclicktr: function dblclicktr(evt) {\n      this.$parent.dblclicktr(this.data, true);\n    },\n    clicktd: function clicktd(evt) {\n      if (this.$parent.multiple || !this.$slots.expand) return;\n      var tr = evt.target.closest('tr');\n\n      if (this.expanded) {\n        tr.parentNode.removeChild(tr.nextSibling);\n        tr.classList.remove('tr-expandedx');\n        this.expanded = false;\n      } else {\n        tr.classList.add('tr-expandedx');\n        var trx = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend(vsTrExpand);\n        var instance = new trx();\n        instance.$props.colspan = this.colspan;\n        instance.$slots.default = this.$slots.expand;\n        instance.vm = instance.$mount();\n        var newTR = document.createElement('tr').appendChild(instance.vm.$el);\n        this.insertAfter(tr, newTR);\n        this.expanded = true;\n      } // this.$parent.clicktr(this.data, false)\n      // if(this.$parent.multiple) {\n      //   return\n      // }\n      // let scrollHeight = this.$refs.td.scrollHeight\n      // if(this.maxHeight == '0px') {\n      //   this.maxHeight = `${scrollHeight}px`\n      //   setTimeout(() => {\n      //     this.maxHeight = 'none'\n      //   },300)\n      // } else {\n      //   this.maxHeight = `${scrollHeight}px`\n      //   setTimeout(() => {\n      //     this.maxHeight = `${0}px`\n      //   }, 50)\n      // }\n\n    },\n    collapseExpandedData: function collapseExpandedData() {\n      if (this.expanded) {\n        var tr = this.$refs.tableTr;\n        tr.parentNode.removeChild(tr.nextSibling);\n        tr.classList.remove('tr-expandedx');\n        this.expanded = false;\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsTable/vsTr.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsTable_vsTrvue_type_script_lang_js_ = (vsTrvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsTable/vsTr.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsTr_component = normalizeComponent(\n  vsTable_vsTrvue_type_script_lang_js_,\n  vsTrvue_type_template_id_0fe68680_render,\n  vsTrvue_type_template_id_0fe68680_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsTr = (vsTr_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTd.vue?vue&type=template&id=41b62260&\nvar vsTdvue_type_template_id_41b62260_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',{ref:\"td\",staticClass:\"td vs-table--td\",class:{'td-edit': _vm.$slots.edit}},[_c('span',{on:{\"click\":_vm.clicktd}},[(_vm.$slots.edit)?_c('vs-icon',{staticClass:\"icon-edit\",attrs:{\"icon\":\"edit\"}}):_vm._e(),_vm._t(\"default\"),(_vm.$slots.edit)?_c('span',{staticClass:\"empty\"},[_vm._v(\" \"+_vm._s(_vm.data ? '' : 'Empty')+\" \")]):_vm._e()],2)])}\nvar vsTdvue_type_template_id_41b62260_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsTable/vsTd.vue?vue&type=template&id=41b62260&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTable/vsTd.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var vsTdvue_type_script_lang_js_ = ({\n  name: 'VsTd',\n  props: {\n    data: {\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      activeEdit: false\n    };\n  },\n  watch: {\n    activeEdit: function activeEdit() {\n      this.$parent.activeEdit = this.activeEdit;\n    }\n  },\n  methods: {\n    insertAfter: function insertAfter(e, i) {\n      if (e.nextSibling) {\n        e.parentNode.insertBefore(i, e.nextSibling);\n      } else {\n        e.parentNode.appendChild(i);\n      }\n    },\n    clicktd: function clicktd(evt) {\n      var _this = this;\n\n      if (this.$slots.edit) {\n        var tr = evt.target.closest('tr');\n\n        if (!this.activeEdit) {\n          var trx = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend(vsTrExpand);\n          var instance = new trx();\n          instance.$props.colspan = 5;\n          instance.$props.close = true;\n          instance.$slots.default = this.$slots.edit;\n          instance.vm = instance.$mount();\n          instance.$on('click', this.close);\n          var nuevo_parrafo = document.createElement('tr').appendChild(instance.vm.$el);\n          this.insertAfter(tr, nuevo_parrafo);\n          this.activeEdit = true;\n          setTimeout(function () {\n            window.addEventListener('click', _this.closeEdit);\n          }, 20);\n        }\n      }\n    },\n    closeEdit: function closeEdit(evt) {\n      if (!evt.target.closest('.tr-expand') && !evt.target.closest('.vs-select--options')) {\n        this.close();\n      }\n    },\n    close: function close() {\n      var tr = this.$refs.td.closest('tr');\n      this.activeEdit = false;\n      tr.parentNode.removeChild(tr.nextSibling);\n      window.removeEventListener('click', this.closeEdit);\n    },\n    saveEdit: function saveEdit() {\n      this.activeEdit = false;\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsTable/vsTd.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsTable_vsTdvue_type_script_lang_js_ = (vsTdvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsTable/vsTd.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsTd_component = normalizeComponent(\n  vsTable_vsTdvue_type_script_lang_js_,\n  vsTdvue_type_template_id_41b62260_render,\n  vsTdvue_type_template_id_41b62260_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsTd = (vsTd_component.exports);\n// CONCATENATED MODULE: ./src/components/vsTable/index.js\n\n\n\n\n\n\n/* harmony default export */ var components_vsTable = (function (Vue) {\n  Vue.component(vsTable.name, vsTable);\n  Vue.component(vsTh.name, vsTh);\n  Vue.component(vsTr.name, vsTr);\n  Vue.component(vsTd.name, vsTd);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTextarea/vsTextarea.vue?vue&type=template&id=9b8ba6fe&lang=html&\nvar vsTextareavue_type_template_id_9b8ba6fe_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-component vs-con-textarea\",class:[(\"vs-textarea-\" + _vm.color), {'textarea-danger': _vm.counter ? (_vm.value && _vm.value.length > _vm.counter) : false, 'focusx': _vm.isFocus}],style:(_vm.style)},[(_vm.label)?_c('h4',[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]):_vm._e(),_c('textarea',_vm._g(_vm._b({staticClass:\"vs-textarea\",domProps:{\"value\":_vm.value}},'textarea',_vm.$attrs,false),_vm.listeners)),(_vm.counter)?_c('div',{staticClass:\"count vs-textarea--count\"},[_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.length : 0)+\" / \"+_vm._s(_vm.counter)+\" \")]):_vm._e()])}\nvar vsTextareavue_type_template_id_9b8ba6fe_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsTextarea/vsTextarea.vue?vue&type=template&id=9b8ba6fe&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsTextarea/vsTextarea.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsTextareavue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsTextareavue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsTextareavue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsTextareavue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsTextareavue_type_script_lang_js_ = ({\n  name: \"VsTextarea\",\n  inheritAttrs: false,\n  props: {\n    value: {},\n    label: {\n      default: null,\n      type: String\n    },\n    color: {\n      default: 'primary',\n      type: String\n    },\n    counter: {\n      default: null,\n      type: [Number, String]\n    },\n    counterDanger: {\n      default: false,\n      type: Boolean\n    },\n    height: {\n      default: null,\n      type: String\n    },\n    width: {\n      default: null,\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      isFocus: false\n    };\n  },\n  computed: {\n    style: function style() {\n      var style = {};\n      style.border = \"1px solid \".concat(this.isFocus ? utils_color.getColor(this.color, 1) : 'rgba(0, 0, 0,.08)');\n      style.height = this.height;\n      style.width = this.width;\n      return style;\n    },\n    listeners: function listeners() {\n      var _this = this;\n\n      return vsTextareavue_type_script_lang_js_objectSpread({}, this.$listeners, {\n        input: function input(evt) {\n          _this.$emit('input', evt.target.value);\n        },\n        focus: function focus() {\n          _this.focus();\n        },\n        blur: function blur() {\n          _this.blur();\n        }\n      });\n    }\n  },\n  watch: {\n    value: function value() {\n      if (this.value && this.value.length > this.counter) {\n        this.$emit('update:counterDanger', true);\n      } else {\n        this.$emit('update:counterDanger', false);\n      }\n    }\n  },\n  methods: {\n    focus: function focus() {\n      this.isFocus = true;\n      this.$emit('focus');\n    },\n    blur: function blur() {\n      this.isFocus = false;\n      this.$emit('blur');\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsTextarea/vsTextarea.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsTextarea_vsTextareavue_type_script_lang_js_ = (vsTextareavue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsTextarea/vsTextarea.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsTextarea_component = normalizeComponent(\n  vsTextarea_vsTextareavue_type_script_lang_js_,\n  vsTextareavue_type_template_id_9b8ba6fe_lang_html_render,\n  vsTextareavue_type_template_id_9b8ba6fe_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsTextarea = (vsTextarea_component.exports);\n// CONCATENATED MODULE: ./src/components/vsTextarea/index.js\n\n\n\n/* harmony default export */ var components_vsTextarea = (function (Vue) {\n  Vue.component(vsTextarea.name, vsTextarea);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsCollapse/vsCollapse.vue?vue&type=template&id=0a380da9&\nvar vsCollapsevue_type_template_id_0a380da9_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-collapse\",class:[_vm.type]},[_vm._t(\"default\")],2)}\nvar vsCollapsevue_type_template_id_0a380da9_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsCollapse/vsCollapse.vue?vue&type=template&id=0a380da9&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsCollapse/vsCollapse.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsCollapsevue_type_script_lang_js_ = ({\n  name: 'VsCollapse',\n  props: {\n    accordion: {\n      default: false,\n      type: Boolean\n    },\n    type: {\n      default: 'default',\n      type: String\n    },\n    openHover: {\n      default: false,\n      type: Boolean\n    }\n  },\n  methods: {\n    emitChange: function emitChange() {\n      this.$emit('change');\n    },\n    closeAllItems: function closeAllItems(el) {\n      var children = this.$children;\n      children.map(function (item) {\n        if (item.$el !== el) {\n          item.maxHeight = '0px';\n        }\n      });\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsCollapse/vsCollapse.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsCollapse_vsCollapsevue_type_script_lang_js_ = (vsCollapsevue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsCollapse/vsCollapse.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsCollapse_component = normalizeComponent(\n  vsCollapse_vsCollapsevue_type_script_lang_js_,\n  vsCollapsevue_type_template_id_0a380da9_render,\n  vsCollapsevue_type_template_id_0a380da9_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsCollapse = (vsCollapse_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsCollapse/vsCollapseItem.vue?vue&type=template&id=f8e73bdc&\nvar vsCollapseItemvue_type_template_id_f8e73bdc_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-collapse-item\",class:{'open-item': _vm.maxHeight != '0px', 'disabledx': _vm.disabled},on:{\"mouseover\":_vm.mouseover,\"mouseout\":_vm.mouseout}},[_c('header',{staticClass:\"vs-collapse-item--header\",on:{\"click\":_vm.toggleContent}},[_vm._t(\"header\"),(!_vm.notArrow)?_c('span',{staticClass:\"icon-header vs-collapse-item--icon-header\"},[_c('vs-icon',{attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.iconArrow}})],1):_vm._e()],2),_c('div',{ref:\"content\",staticClass:\"vs-collapse-item--content\",style:(_vm.styleContent)},[_c('div',{staticClass:\"con-content--item\"},[_vm._t(\"default\")],2)])])}\nvar vsCollapseItemvue_type_template_id_f8e73bdc_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsCollapse/vsCollapseItem.vue?vue&type=template&id=f8e73bdc&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsCollapse/vsCollapseItem.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsCollapseItemvue_type_script_lang_js_ = ({\n  name: 'VsCollapseItem',\n  components: {\n    vsicon: components_vsIcon\n  },\n  props: {\n    open: {\n      default: false,\n      type: Boolean\n    },\n    disabled: {\n      default: false,\n      type: Boolean\n    },\n    notArrow: {\n      default: false,\n      type: Boolean\n    },\n    iconArrow: {\n      default: 'keyboard_arrow_down',\n      type: String\n    },\n    iconPack: {\n      default: 'material-icons',\n      type: String\n    },\n    sst: {\n      default: false,\n      type: Boolean\n    }\n  },\n  data: function data() {\n    return {\n      maxHeight: '0px',\n      // only used for sst\n      dataReady: false\n    };\n  },\n  computed: {\n    accordion: function accordion() {\n      return this.$parent.accordion;\n    },\n    openHover: function openHover() {\n      return this.$parent.openHover;\n    },\n    styleContent: function styleContent() {\n      return {\n        maxHeight: this.maxHeight\n      };\n    }\n  },\n  watch: {\n    maxHeight: function maxHeight() {\n      this.$parent.emitChange();\n    },\n    ready: function ready(newVal, oldVal) {\n      if (oldVal != newVal && newVal) {\n        this.initMaxHeight();\n      }\n    }\n  },\n  mounted: function mounted() {\n    window.addEventListener('resize', this.changeHeight);\n    var maxHeightx = this.$refs.content.scrollHeight;\n\n    if (this.open) {\n      this.maxHeight = \"\".concat(maxHeightx, \"px\");\n    }\n  },\n  methods: {\n    changeHeight: function changeHeight() {\n      var maxHeightx = this.$refs.content.scrollHeight;\n\n      if (this.maxHeight != '0px') {\n        this.maxHeight = \"\".concat(maxHeightx, \"px\");\n      }\n    },\n    toggleContent: function toggleContent() {\n      var _this = this;\n\n      if (this.openHover || this.disabled) {\n        return;\n      }\n\n      if (this.accordion) {\n        this.$parent.closeAllItems(this.$el);\n      }\n\n      if (this.sst && !this.dataReady) {\n        this.$emit('fetch', {\n          done: function done() {\n            _this.initMaxHeight();\n\n            _this.dataReady = true;\n          }\n        });\n      } else {\n        this.initMaxHeight();\n      }\n    },\n    initMaxHeight: function initMaxHeight() {\n      var maxHeightx = this.$refs.content.scrollHeight;\n\n      if (this.maxHeight == '0px') {\n        this.maxHeight = \"\".concat(maxHeightx, \"px\");\n      } else {\n        this.maxHeight = \"0px\";\n      }\n    },\n    mouseover: function mouseover() {\n      if (this.disabled) {\n        return;\n      }\n\n      var maxHeightx = this.$refs.content.scrollHeight;\n\n      if (this.openHover) {\n        this.maxHeight = \"\".concat(maxHeightx, \"px\");\n      }\n    },\n    mouseout: function mouseout() {\n      if (this.openHover) {\n        this.maxHeight = \"0px\";\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsCollapse/vsCollapseItem.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsCollapse_vsCollapseItemvue_type_script_lang_js_ = (vsCollapseItemvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsCollapse/vsCollapseItem.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsCollapseItem_component = normalizeComponent(\n  vsCollapse_vsCollapseItemvue_type_script_lang_js_,\n  vsCollapseItemvue_type_template_id_f8e73bdc_render,\n  vsCollapseItemvue_type_template_id_f8e73bdc_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsCollapseItem = (vsCollapseItem_component.exports);\n// CONCATENATED MODULE: ./src/components/vsCollapse/index.js\n\n\n\n\n/* harmony default export */ var components_vsCollapse = (function (Vue) {\n  Vue.component(vsCollapse.name, vsCollapse);\n  Vue.component(vsCollapseItem.name, vsCollapseItem);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsImages/vsImages.vue?vue&type=template&id=035ce50a&lang=html&\nvar vsImagesvue_type_template_id_035ce50a_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-component vs-images\",class:[(\"vs-images-hover-\" + _vm.hover), {'alternating': _vm.alternating, 'notBorderRadius': _vm.notBorderRadius, 'notMargin': _vm.notMargin}]},[_c('ul',{staticClass:\"vs-ul-images vs-images--ul\"},[_vm._t(\"default\")],2)])}\nvar vsImagesvue_type_template_id_035ce50a_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsImages/vsImages.vue?vue&type=template&id=035ce50a&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsImages/vsImages.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsImagesvue_type_script_lang_js_ = ({\n  name: \"VsImages\",\n  inheritAttrs: false,\n  props: {\n    hover: {\n      default: 'default',\n      type: String\n    },\n    alternating: {\n      default: false,\n      type: Boolean\n    },\n    notBorderRadius: {\n      default: false,\n      type: Boolean\n    },\n    notMargin: {\n      default: false,\n      type: Boolean\n    }\n  },\n  data: function data() {\n    return {};\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsImages/vsImages.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsImages_vsImagesvue_type_script_lang_js_ = (vsImagesvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsImages/vsImages.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsImages_component = normalizeComponent(\n  vsImages_vsImagesvue_type_script_lang_js_,\n  vsImagesvue_type_template_id_035ce50a_lang_html_render,\n  vsImagesvue_type_template_id_035ce50a_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsImages = (vsImages_component.exports);\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsImages/vsImage.vue?vue&type=template&id=f6a3672a&\nvar vsImagevue_type_template_id_f6a3672a_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"vs-image\"},[_c('div',{staticClass:\"con-vs-image\"},[_c('div',{staticClass:\"vs-image--img\",style:(_vm.styleImage),attrs:{\"v-bind\":_vm.$attrs}})]),_c('img',{staticClass:\"imag-blur\",attrs:{\"src\":_vm.src,\"alt\":\"\"}})])}\nvar vsImagevue_type_template_id_f6a3672a_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/vsImages/vsImage.vue?vue&type=template&id=f6a3672a&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/components/vsImages/vsImage.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsImagevue_type_script_lang_js_ = ({\n  name: 'VsImage',\n  inheritAttrs: false,\n  props: {\n    src: {\n      default: null,\n      type: String\n    }\n  },\n  computed: {\n    styleImage: function styleImage() {\n      return {\n        backgroundImage: \"url(\".concat(this.src, \")\")\n      };\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/components/vsImages/vsImage.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsImages_vsImagevue_type_script_lang_js_ = (vsImagevue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/components/vsImages/vsImage.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsImage_component = normalizeComponent(\n  vsImages_vsImagevue_type_script_lang_js_,\n  vsImagevue_type_template_id_f6a3672a_render,\n  vsImagevue_type_template_id_f6a3672a_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsImage = (vsImage_component.exports);\n// CONCATENATED MODULE: ./src/components/vsImages/index.js\n\n\n\n\n/* harmony default export */ var components_vsImages = (function (Vue) {\n  Vue.component(vsImages.name, vsImages);\n  Vue.component(vsImage.name, vsImage);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/layout/vsRow/vsRow.vue?vue&type=template&id=512757c0&lang=html&\nvar vsRowvue_type_template_id_512757c0_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-row\",style:({\n    'align-items':_vm.vsAlign,\n    'justify-content':_vm.vsJustify,\n    'display':_vm.vsType,\n    'overflow': _vm.vsType === 'block' ? 'hidden' : null,\n    'width':_vm.vsW*100/12+'%'})},[_vm._t(\"default\")],2)}\nvar vsRowvue_type_template_id_512757c0_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/layout/vsRow/vsRow.vue?vue&type=template&id=512757c0&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/layout/vsRow/vsRow.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsRowvue_type_script_lang_js_ = ({\n  name: 'VsRow',\n  props: {\n    vsType: {\n      default: 'flex',\n      type: String\n    },\n    vsW: {\n      type: [Number, String],\n      default: 12\n    },\n    vsJustify: {\n      type: String,\n      default: null\n    },\n    vsAlign: {\n      type: String,\n      default: null\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/layout/vsRow/vsRow.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsRow_vsRowvue_type_script_lang_js_ = (vsRowvue_type_script_lang_js_);\n// EXTERNAL MODULE: ./src/layout/vsRow/vsRow.vue?vue&type=style&index=0&lang=css&\nvar vsRowvue_type_style_index_0_lang_css_ = __webpack_require__(\"dc51\");\n\n// CONCATENATED MODULE: ./src/layout/vsRow/vsRow.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar vsRow_component = normalizeComponent(\n  vsRow_vsRowvue_type_script_lang_js_,\n  vsRowvue_type_template_id_512757c0_lang_html_render,\n  vsRowvue_type_template_id_512757c0_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsRow = (vsRow_component.exports);\n// CONCATENATED MODULE: ./src/layout/vsRow/index.js\n\n\n\n/* harmony default export */ var layout_vsRow = (function (Vue) {\n  Vue.component(vsRow.name, vsRow);\n});\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/layout/vsCol/vsCol.vue?vue&type=template&id=68e4485c&lang=html&\nvar vsColvue_type_template_id_68e4485c_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vs-col\",class:[\n    'vs-xs-'+_vm.vsXs,\n    'vs-sm-'+_vm.vsSm,\n    'vs-lg-'+_vm.vsLg ],style:({\n    'order':_vm.vsOrder,\n    'justify-content':_vm.vsJustify,\n    'display':_vm.vsType,\n    'align-items':_vm.vsAlign,\n    'margin-left':_vm.vsOffset*100/12+'%',\n    'width':_vm.vsW*100/12+'%'})},[_vm._t(\"default\")],2)}\nvar vsColvue_type_template_id_68e4485c_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/layout/vsCol/vsCol.vue?vue&type=template&id=68e4485c&lang=html&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/layout/vsCol/vsCol.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsColvue_type_script_lang_js_ = ({\n  name: 'VsCol',\n  props: {\n    vsW: {\n      type: [Number, String],\n      default: 12\n    },\n    vsXs: {\n      type: [Number, String],\n      default: ''\n    },\n    vsSm: {\n      type: [Number, String],\n      default: ''\n    },\n    vsLg: {\n      type: [Number, String],\n      default: ''\n    },\n    vsOffset: {\n      type: [Number, String],\n      default: 0\n    },\n    vsType: {\n      type: String,\n      default: null\n    },\n    vsJustify: {\n      type: String,\n      default: null\n    },\n    vsAlign: {\n      type: String,\n      default: null\n    },\n    vsOrder: {\n      default: null,\n      type: [String, Number]\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/layout/vsCol/vsCol.vue?vue&type=script&lang=js&\n /* harmony default export */ var vsCol_vsColvue_type_script_lang_js_ = (vsColvue_type_script_lang_js_);\n// EXTERNAL MODULE: ./src/layout/vsCol/vsCol.vue?vue&type=style&index=0&lang=css&\nvar vsColvue_type_style_index_0_lang_css_ = __webpack_require__(\"f2fe\");\n\n// CONCATENATED MODULE: ./src/layout/vsCol/vsCol.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar vsCol_component = normalizeComponent(\n  vsCol_vsColvue_type_script_lang_js_,\n  vsColvue_type_template_id_68e4485c_lang_html_render,\n  vsColvue_type_template_id_68e4485c_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsCol = (vsCol_component.exports);\n// CONCATENATED MODULE: ./src/layout/vsCol/index.js\n\n\n\n/* harmony default export */ var layout_vsCol = (function (Vue) {\n  Vue.component(vsCol.name, vsCol);\n});\n// CONCATENATED MODULE: ./src/components/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n //New Component import\n//layout\n\n\n\n// EXTERNAL MODULE: ./src/style/vuesax.styl\nvar vuesax = __webpack_require__(\"99c0\");\n\n// CONCATENATED MODULE: ./src/utils/theme.js\n\n\n\n\n\n\n\n/* harmony default export */ var theme = ({\n  name: 'theme',\n  vsfunction: function vsfunction(json) {\n    for (var clave in json) {\n      var colorx = void 0;\n\n      if (/^[rgb(]/g.test(json[clave])) {\n        colorx = json[clave].replace(/[rgb()]/g, '');\n      } else if (/[#]/g.test(json[clave])) {\n        var rgbx = utils_color.hexToRgb(json[clave]);\n        colorx = \"\".concat(rgbx.r, \",\").concat(rgbx.g, \",\").concat(rgbx.b);\n      } else {\n        colorx = json[clave];\n      }\n\n      utils_color.setCssVariable('--vs-' + clave, colorx);\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/utils/rtl.js\n/**\n * @injectDirectionClass\n * will inject 'vuesax-app-is-ltr' (ltr case) or 'vuexsax-app-is-rtl' (rtl case) in the html tag\n */\nvar injectDirectionClass = function injectDirectionClass(dir) {\n  if (document) {\n    if (dir) {\n      document.documentElement.classList.remove(\"vuesax-app-is-ltr\");\n      document.documentElement.classList.add(\"vuesax-app-is-rtl\");\n    } else {\n      document.documentElement.classList.add(\"vuesax-app-is-ltr\");\n      document.documentElement.classList.remove(\"vuesax-app-is-rtl\");\n    }\n  }\n};\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/functions/vsNotifications/index.vue?vue&type=template&id=1ed524c6&lang=html&\nvar vsNotificationsvue_type_template_id_1ed524c6_lang_html_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"noti\"},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"leave\":_vm.leave}},[(_vm.active)?_c('div',{ref:\"noti\",staticClass:\"vs-component vs-notifications\",class:[(\"vs-noti-\" + _vm.position),(\"vs-noti-\" + _vm.color),{'activeNoti':_vm.active}],style:(_vm.stylex),on:{\"click\":_vm.clickNoti}},[_c('div',{staticClass:\"content-noti\"},[_c('div',{staticClass:\"con-text-noti\"},[_c('h3',{domProps:{\"innerHTML\":_vm._s(_vm.title)}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.text)}}),_vm._t(\"default\")],2),(_vm.icon)?_c('vs-icon',{staticClass:\"vs-icon-noti\",attrs:{\"icon-pack\":_vm.iconPack,\"icon\":_vm.icon}}):_vm._e()],1),_c('span',{staticClass:\"filling\",style:(_vm.fillingStyle)})]):_vm._e()])}\nvar vsNotificationsvue_type_template_id_1ed524c6_lang_html_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/functions/vsNotifications/index.vue?vue&type=template&id=1ed524c6&lang=html&\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.string.fixed.js\nvar es_string_fixed = __webpack_require__(\"3eb1\");\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/functions/vsNotifications/index.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction vsNotificationsvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction vsNotificationsvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { vsNotificationsvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { vsNotificationsvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var vsNotificationsvue_type_script_lang_js_ = ({\n  data: function data() {\n    return {\n      fullWidth: false,\n      icon: null,\n      iconPack: 'material-icons',\n      color: 'primary',\n      colorText: 'rgb(255, 255, 255)',\n      active: true,\n      text: null,\n      title: null,\n      position: 'bottom-right',\n      time: 3000,\n      cords: {\n        top: null,\n        left: null,\n        right: null,\n        bottom: null\n      },\n      widthx: 0,\n      fixed: false\n    };\n  },\n  computed: {\n    fillingStyle: function fillingStyle() {\n      return {\n        left: this.cords.left ? '-100px' : null,\n        right: this.cords.right ? '-100px' : null,\n        background: this.color,\n        height: \"\".concat(this.widthx * 2, \"px\"),\n        width: \"\".concat(this.widthx * 2, \"px\")\n      };\n    },\n    stylex: function stylex() {\n      return vsNotificationsvue_type_script_lang_js_objectSpread({}, this.cords, {\n        color: this.colorText,\n        width: this.fullWidth ? \"calc(100% - 14px)\" : \"\",\n        maxWidth: this.fullWidth ? 'none' : \"350px\"\n      });\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    setTimeout(function () {\n      _this.moverNotis();\n    }, 0);\n    this.changeCords();\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    setTimeout(function () {\n      _this2.widthx = _this2.$refs.noti.clientWidth;\n    }, 0);\n\n    if (!this.fixed) {\n      setTimeout(function () {\n        _this2.closeNoti();\n      }, this.time);\n    }\n  },\n  methods: {\n    clickNoti: function clickNoti() {\n      this.active = false;\n      this.click ? this.click() : null;\n    },\n    beforeEnter: function beforeEnter(el) {\n      el.style.opacity = 0;\n    },\n    enter: function enter(el, done) {\n      el.style.opacity = 1;\n      done();\n    },\n    leave: function leave(el, done) {\n      var _this3 = this;\n\n      el.style.opacity = 0;\n      var transformx = el.style.transform;\n\n      if (this.cords.left == '50%' || this.fullWidth) {\n        transformx += \" translateY(\".concat(this.cords.top ? '-' : '', \"100%)\");\n      } else {\n        transformx += \" translateX(\".concat(this.cords.left ? '-' : '', \"100%)\");\n      }\n\n      el.style.transform = transformx;\n      setTimeout(function () {\n        done();\n\n        _this3.moverNotis();\n      }, 150);\n    },\n    closeNoti: function closeNoti() {\n      this.active = false;\n    },\n    changeCords: function changeCords() {\n      var positions = this.position.split('-');\n\n      var search = function search(text) {\n        return positions.indexOf(text) != -1;\n      };\n\n      if (search('top')) {\n        this.cords.top = '0px';\n      }\n\n      if (search('bottom')) {\n        this.cords.bottom = '0px';\n      }\n\n      if (search('right')) {\n        this.cords.right = '0px';\n      }\n\n      if (search('left')) {\n        this.cords.left = '0px';\n      }\n\n      if (search('center')) {\n        this.cords.left = '50%';\n      }\n    },\n    moverNotis: function moverNotis() {\n      var notisx = document.querySelectorAll('.vs-noti-' + this.position);\n\n      for (var i = 0; i < notisx.length; i++) {\n        var hx = 10;\n\n        for (var i2 = 0; i2 < i; i2++) {\n          hx += notisx[i2].clientHeight + 6;\n        }\n\n        if (this.position.search('center') == -1) {\n          if (this.position.search('top') != -1) {\n            notisx[i].style.transform = \"translatey(\".concat(hx, \"px)\");\n          } else if (this.position.search('bottom') != -1) {\n            notisx[i].style.transform = \"translatey(-\".concat(hx, \"px)\");\n          }\n        }\n\n        if (this.position.search('top') != -1 && this.position.search('center') != -1) {\n          notisx[i].style.transform = \"translate(-50%,\".concat(hx, \"px)\");\n          notisx[i].style.zIndex = 10000 - i;\n        }\n\n        if (this.position.search('bottom') != -1 && this.position.search('center') != -1) {\n          notisx[i].style.transform = \"translate(-50%,-\".concat(hx, \"px)\");\n          notisx[i].style.zIndex = 10000 - i;\n        }\n      }\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/functions/vsNotifications/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var functions_vsNotificationsvue_type_script_lang_js_ = (vsNotificationsvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/functions/vsNotifications/index.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsNotifications_component = normalizeComponent(\n  functions_vsNotificationsvue_type_script_lang_js_,\n  vsNotificationsvue_type_template_id_1ed524c6_lang_html_render,\n  vsNotificationsvue_type_template_id_1ed524c6_lang_html_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsNotifications = (vsNotifications_component.exports);\n// CONCATENATED MODULE: ./src/functions/vsNotifications/index.js\n\n\n\n\n\n\n\nvar NotiConstructor = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend(vsNotifications);\nvar vsNotifications_instance;\n/* harmony default export */ var functions_vsNotifications = ({\n  name: 'notify',\n  vsfunction: function vsfunction(parameters) {\n    if (parameters.fullWidth) {\n      if (parameters.position) {\n        parameters.position = parameters.position.replace('right', 'left');\n      }\n    }\n\n    vsNotifications_instance = new NotiConstructor({\n      data: parameters\n    });\n    vsNotifications_instance.vm = vsNotifications_instance.$mount();\n    parameters.click ? vsNotifications_instance.vm.$on('click', parameters.click) : null;\n    utils.insertBody(vsNotifications_instance.vm.$el);\n  }\n});\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.array.from.js\nvar es_array_from = __webpack_require__(\"80c1\");\n\n// EXTERNAL MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(\"2136\");\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"56f9cf73-vue-loader-template\"}!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/functions/vsLoading/index.vue?vue&type=template&id=5ba0e5fe&\nvar vsLoadingvue_type_template_id_5ba0e5fe_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.active)?_c('div',{staticClass:\"con-vs-loading\",class:[(\"vs-loading-background-\" + _vm.background),(\"vs-loading-color-\" + _vm.color),{'textAfter':_vm.textAfter}],style:(_vm.style),on:{\"click\":_vm.effectClick}},[_c('transition',{attrs:{\"name\":\"effect-click\"}},[(_vm.activeEffectClick&&_vm.clickEffect)?_c('div',{staticClass:\"effect-click\",style:(_vm.styleEffectClick)}):_vm._e()]),(_vm.text)?_c('h4',{staticClass:\"title-loading\"},[_vm._v(_vm._s(_vm.text))]):_vm._e(),_c('div',{staticClass:\"vs-loading\",class:[_vm.type],style:({\n        transform:(\"scale(\" + _vm.scale + \")\")\n      })},[(_vm.type!='material')?_c('div',{staticClass:\"effect-1 effects\",style:(_vm.styleEffect1)}):_vm._e(),(_vm.type!='material')?_c('div',{staticClass:\"effect-2 effects\",style:(_vm.styleEffect2)}):_vm._e(),(_vm.type!='material')?_c('div',{staticClass:\"effect-3 effects\",style:(_vm.styleEffect3)}):_vm._e(),_c('img',{attrs:{\"src\":_vm.src}}),(_vm.type=='material')?_c('svg',{staticClass:\"spinner\",attrs:{\"width\":\"50px\",\"height\":\"50px\",\"viewBox\":\"0 0 66 66\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('circle',{staticClass:\"path\",attrs:{\"fill\":\"none\",\"stroke-width\":\"5\",\"stroke-linecap\":\"round\",\"cx\":\"33\",\"cy\":\"33\",\"r\":\"30\"}})]):_vm._e()])],1):_vm._e()])}\nvar vsLoadingvue_type_template_id_5ba0e5fe_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/functions/vsLoading/index.vue?vue&type=template&id=5ba0e5fe&\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/thread-loader/dist/cjs.js!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/babel-loader/lib??ref--12-1!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/cache-loader/dist/cjs.js??ref--0-0!C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/vue-loader/lib??vue-loader-options!./src/functions/vsLoading/index.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var vsLoadingvue_type_script_lang_js_ = ({\n  data: function data() {\n    return {\n      active: false,\n      type: 'default',\n      color: null,\n      background: 'rgba(255,255,255,.6)',\n      src: '',\n      leftx: 0,\n      topx: 0,\n      clickEffect: false,\n      activeEffectClick: false,\n      scale: 1,\n      textAfter: false,\n      text: null\n    };\n  },\n  computed: {\n    styleEffectClick: function styleEffectClick() {\n      return {\n        left: \"\".concat(this.leftx, \"px\"),\n        top: \"\".concat(this.topx, \"px\")\n      };\n    },\n    styleEffect1: function styleEffect1() {\n      var style = {\n        borderLeft: \"3px solid \".concat(utils_color.getColor(this.color, 1))\n      };\n\n      if (this.type == 'border') {\n        style = {\n          borderLeft: \"1px solid \".concat(utils_color.getColor(this.color, 1))\n        };\n      }\n\n      if (this.type == 'point') {\n        style = {\n          background: utils_color.getColor(this.color, .4)\n        };\n      }\n\n      if (this.type == 'radius') {\n        style = {\n          border: \"3px solid \".concat(utils_color.getColor(this.color, 1))\n        };\n      }\n\n      if (this.type == 'corners') {\n        style = {\n          border: \"3px solid \".concat(utils_color.getColor(this.color, 1))\n        };\n      }\n\n      if (this.type == 'sound') {\n        style = {\n          background: utils_color.getColor(this.color, 1)\n        };\n      }\n\n      return style;\n    },\n    styleEffect2: function styleEffect2() {\n      var style = {\n        borderLeft: \"3px solid \".concat(utils_color.getColor(this.color, 1))\n      };\n\n      if (this.type == 'border') {\n        style = {\n          borderLeft: \"1px solid \".concat(utils_color.getColor(this.color, 1))\n        };\n      }\n\n      if (this.type == 'point') {\n        style = {\n          background: utils_color.getColor(this.color, .4)\n        };\n      }\n\n      if (this.type == 'radius') {\n        style = {\n          border: \"3px solid \".concat(utils_color.getColor(this.color, 1))\n        };\n      }\n\n      if (this.type == 'corners') {\n        style = {};\n      }\n\n      if (this.type == 'sound') {\n        style = {\n          background: utils_color.getColor(this.color, 1)\n        };\n      }\n\n      return style;\n    },\n    styleEffect3: function styleEffect3() {\n      var style = {\n        borderLeft: \"3px solid \".concat(utils_color.getColor(this.color, 1))\n      };\n\n      if (this.type == 'border') {\n        style = {\n          borderLeft: \"1px solid \".concat(utils_color.getColor(this.color, 1))\n        };\n      }\n\n      if (this.type == 'point') {\n        style = {\n          background: utils_color.getColor(this.color, .4)\n        };\n      }\n\n      if (this.type == 'radius') {\n        style = {\n          border: \"3px solid \".concat(utils_color.getColor(this.color, 1))\n        };\n      }\n\n      if (this.type == 'corners') {\n        style = {};\n      }\n\n      if (this.type == 'sound') {\n        style = {\n          background: utils_color.getColor(this.color, 1)\n        };\n      }\n\n      return style;\n    },\n    style: function style() {\n      return {\n        background: utils_color.getColor(this.background, 1)\n      };\n    }\n  },\n  mounted: function mounted() {\n    this.active = true;\n  },\n  methods: {\n    effectClick: function effectClick(evt) {\n      var _this = this;\n\n      this.leftx = evt.offsetX;\n      this.topx = evt.offsetY;\n      this.activeEffectClick = true;\n      setTimeout(function () {\n        _this.activeEffectClick = false;\n      }, 50);\n    },\n    close: function close() {\n      this.active = false;\n    }\n  }\n});\n// CONCATENATED MODULE: ./src/functions/vsLoading/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var functions_vsLoadingvue_type_script_lang_js_ = (vsLoadingvue_type_script_lang_js_);\n// CONCATENATED MODULE: ./src/functions/vsLoading/index.vue\n\n\n\n\n\n/* normalize component */\n\nvar vsLoading_component = normalizeComponent(\n  functions_vsLoadingvue_type_script_lang_js_,\n  vsLoadingvue_type_template_id_5ba0e5fe_render,\n  vsLoadingvue_type_template_id_5ba0e5fe_staticRenderFns,\n  false,\n  null,\n  null,\n  null\n\n)\n\n/* harmony default export */ var vsLoading = (vsLoading_component.exports);\n// CONCATENATED MODULE: ./src/functions/vsLoading/index.js\n\n\n\n\n\n\n\n\n\n\nvar loadingConstructor = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend(vsLoading);\n/* harmony default export */ var functions_vsLoading = ({\n  name: 'loading',\n  vsfunction: function vsfunction(parameters) {\n    var instance = new loadingConstructor();\n    var containerx = document.body;\n\n    if (parameters) {\n      instance.$data.type = parameters.type || 'default';\n      instance.$data.background = parameters.background;\n      instance.$data.color = parameters.color;\n      instance.$data.scale = parameters.scale;\n      instance.$data.text = parameters.text;\n      instance.$data.clickEffect = parameters.clickEffect;\n\n      if (parameters.container) {\n        containerx = parameters.container instanceof Element ? parameters.container : document.querySelector(parameters.container);\n      }\n    }\n\n    instance.vm = instance.$mount();\n    containerx.insertBefore(instance.vm.$el, containerx.firstChild);\n  },\n  close: function close(elx) {\n    var loadings;\n\n    if (elx instanceof Element) {\n      // Mimicking the behavior of doing `elx.querySelectorAll('> con-vs-loading')` but `>` is not well supported.\n      // We are doing this because we can only add the respective classes to .con-vs-loading\n      loadings = Array.from(elx.children).filter(function (el) {\n        return el.classList.contains('con-vs-loading');\n      });\n    } else {\n      loadings = document.querySelectorAll(elx || 'body > .con-vs-loading');\n    }\n\n    loadings.forEach(function (loading) {\n      loading.classList.add('beforeRemove');\n      setTimeout(function () {\n        loading.remove();\n      }, 300);\n    });\n  }\n});\n// CONCATENATED MODULE: ./src/functions/vsDialog/index.js\n\n\n\nvar dialogConstructor = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend(vsDialog);\nvar vsDialog_instance;\n/* harmony default export */ var functions_vsDialog = ({\n  name: 'dialog',\n  vsfunction: function vsfunction(props) {\n    vsDialog_instance = new dialogConstructor();\n    vsDialog_instance.$props.text = props.text;\n    vsDialog_instance.$props.title = props.title || 'Dialog';\n    vsDialog_instance.$props.color = props.color;\n    vsDialog_instance.$props.type = props.type || 'alert';\n    vsDialog_instance.$props.buttonAccept = props.buttonAccept || 'filled';\n    vsDialog_instance.$props.buttonCancel = props.buttonCancel || 'flat';\n    vsDialog_instance.$props.acceptText = props.acceptText || 'Accept';\n    vsDialog_instance.$props.cancelText = props.cancelText || 'Cancel';\n    vsDialog_instance.$props.closeIcon = props.closeIcon || 'close';\n    vsDialog_instance.$props.iconPack = props.iconPack || 'material-icons';\n    vsDialog_instance.$props.isValid = props.isValid || 'none';\n    vsDialog_instance.$data.isPrompt = false;\n    vsDialog_instance.vm = vsDialog_instance.$mount();\n    props.accept ? vsDialog_instance.vm.$on('accept', props.accept) : null;\n    props.cancel ? vsDialog_instance.vm.$on('cancel', props.cancel) : null;\n    utils.insertBody(vsDialog_instance.vm.$el, props.parent);\n    external_commonjs_vue_commonjs2_vue_root_Vue_default.a.nextTick(function () {\n      vsDialog_instance.$data.fActive = true;\n      vsDialog_instance.$data.parameters = props.parameters;\n    });\n  }\n});\n// CONCATENATED MODULE: ./src/functions/index.js\n\n\n\n\n\n\n// Functions\n\n\n //theme\n\n\nvar vsFunctions = {\n  vsNotifications: functions_vsNotifications,\n  vsLoading: functions_vsLoading,\n  vsTheme: theme,\n  vsDialog: functions_vsDialog\n};\n/* harmony default export */ var functions = (function (vm) {\n  Object.values(vsFunctions).forEach(function (vsFunctions) {\n    if (vsFunctions.hasOwnProperty('subName')) {\n      vm.$vs[vsFunctions.name][vsFunctions.subName] = vsFunctions.vsfunction;\n    } else {\n      vm.$vs[vsFunctions.name] = vsFunctions.vsfunction;\n    }\n  });\n  vm.$vs.loading.close = functions_vsLoading.close;\n});\n// CONCATENATED MODULE: ./src/defineGlobalMixin.js\n\n\n/**\n * Vuesax global mixin, all vueasx functions and properties injected\n * in the @beforeCreate hook.\n */\n\n/* harmony default export */ var defineGlobalMixin = (function (Vue, options) {\n  Vue.mixin({\n    watch: {\n      '$vs.rtl': {\n        handler: function handler(val) {\n          injectDirectionClass(val);\n        }\n      }\n    },\n    beforeCreate: function beforeCreate() {\n      // create $vs property if not exist\n      if (!this.$vs) {\n        // define $vs reactive properties\n        this.$vs = Vue.observable(options); // define $vs functions\n\n        functions(this);\n      }\n    },\n    mounted: function mounted() {\n      // inject the direction class for the initial options\n      injectDirectionClass(this.$vs.rtl);\n    }\n  });\n});\n// CONCATENATED MODULE: ./src/utils/options.js\n/**\n * All vuesax framework options listed here\n * all options listed here are reactive\n */\n/* harmony default export */ var utils_options = ({\n  rtl: false\n});\n// CONCATENATED MODULE: ./src/index.js\n\n\n\n\n\n\n\n\n\n\nvar src_install = function install(Vue) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  // set default options\n  for (var prop in utils_options) {\n    if (!options[prop]) {\n      options[prop] = utils_options[prop];\n    }\n  } // Use Components\n\n\n  Object.values(components_namespaceObject).forEach(function (vsComponent) {\n    Vue.use(vsComponent);\n  });\n\n  if (options) {\n    if (options.hasOwnProperty('theme')) {\n      if (options.theme.hasOwnProperty('colors')) {\n        if (typeof window !== 'undefined') {\n          theme.vsfunction(options.theme.colors, options.server);\n        }\n      }\n    }\n  } // Define vuesax functions and properties ($vs)\n\n\n  defineGlobalMixin(Vue, options);\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n  src_install(window.Vue);\n}\n\n/* harmony default export */ var src = (src_install);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n //New Component import\n//layout\n\n\n\n// CONCATENATED MODULE: C:/Users/Usuario/AppData/Roaming/npm/node_modules/@vue/cli-service-global/node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n/* concated harmony reexport vsButton */__webpack_require__.d(__webpack_exports__, \"vsButton\", function() { return components_vsButton; });\n/* concated harmony reexport vsSelect */__webpack_require__.d(__webpack_exports__, \"vsSelect\", function() { return components_vsSelect; });\n/* concated harmony reexport vsSwitch */__webpack_require__.d(__webpack_exports__, \"vsSwitch\", function() { return components_vsSwitch; });\n/* concated harmony reexport vsCheckbox */__webpack_require__.d(__webpack_exports__, \"vsCheckbox\", function() { return components_vsCheckBox; });\n/* concated harmony reexport vsRadio */__webpack_require__.d(__webpack_exports__, \"vsRadio\", function() { return components_vsRadio; });\n/* concated harmony reexport vsInput */__webpack_require__.d(__webpack_exports__, \"vsInput\", function() { return components_vsInput; });\n/* concated harmony reexport vsTabs */__webpack_require__.d(__webpack_exports__, \"vsTabs\", function() { return components_vsTabs; });\n/* concated harmony reexport vsSlider */__webpack_require__.d(__webpack_exports__, \"vsSlider\", function() { return components_vsSlider; });\n/* concated harmony reexport vsInputNumber */__webpack_require__.d(__webpack_exports__, \"vsInputNumber\", function() { return components_vsInputNumber; });\n/* concated harmony reexport vsTooltip */__webpack_require__.d(__webpack_exports__, \"vsTooltip\", function() { return components_vsTooltip; });\n/* concated harmony reexport vsUpload */__webpack_require__.d(__webpack_exports__, \"vsUpload\", function() { return components_vsUpload; });\n/* concated harmony reexport vsPopup */__webpack_require__.d(__webpack_exports__, \"vsPopup\", function() { return components_vsPopup; });\n/* concated harmony reexport vsAlert */__webpack_require__.d(__webpack_exports__, \"vsAlert\", function() { return components_vsAlert; });\n/* concated harmony reexport vsChip */__webpack_require__.d(__webpack_exports__, \"vsChip\", function() { return components_vsChip; });\n/* concated harmony reexport vsProgress */__webpack_require__.d(__webpack_exports__, \"vsProgress\", function() { return components_vsProgress; });\n/* concated harmony reexport vsCard */__webpack_require__.d(__webpack_exports__, \"vsCard\", function() { return components_vsCard; });\n/* concated harmony reexport vsList */__webpack_require__.d(__webpack_exports__, \"vsList\", function() { return components_vsList; });\n/* concated harmony reexport vsAvatar */__webpack_require__.d(__webpack_exports__, \"vsAvatar\", function() { return components_vsAvatar; });\n/* concated harmony reexport vsPagination */__webpack_require__.d(__webpack_exports__, \"vsPagination\", function() { return components_vsPagination; });\n/* concated harmony reexport vsBreadcrumb */__webpack_require__.d(__webpack_exports__, \"vsBreadcrumb\", function() { return components_vsBreadcrumb; });\n/* concated harmony reexport vsPrompt */__webpack_require__.d(__webpack_exports__, \"vsPrompt\", function() { return vsPrompt; });\n/* concated harmony reexport vsDivider */__webpack_require__.d(__webpack_exports__, \"vsDivider\", function() { return components_vsDivider; });\n/* concated harmony reexport vsSpacer */__webpack_require__.d(__webpack_exports__, \"vsSpacer\", function() { return components_vsSpacer; });\n/* concated harmony reexport vsIcon */__webpack_require__.d(__webpack_exports__, \"vsIcon\", function() { return components_vsIcon; });\n/* concated harmony reexport vsNavbar */__webpack_require__.d(__webpack_exports__, \"vsNavbar\", function() { return components_vsNavbar; });\n/* concated harmony reexport vsSideBar */__webpack_require__.d(__webpack_exports__, \"vsSideBar\", function() { return vsSideBar; });\n/* concated harmony reexport vsDropDown */__webpack_require__.d(__webpack_exports__, \"vsDropDown\", function() { return components_vsDropDown; });\n/* concated harmony reexport vsTable */__webpack_require__.d(__webpack_exports__, \"vsTable\", function() { return components_vsTable; });\n/* concated harmony reexport vsTextarea */__webpack_require__.d(__webpack_exports__, \"vsTextarea\", function() { return components_vsTextarea; });\n/* concated harmony reexport vsCollapse */__webpack_require__.d(__webpack_exports__, \"vsCollapse\", function() { return components_vsCollapse; });\n/* concated harmony reexport vsImages */__webpack_require__.d(__webpack_exports__, \"vsImages\", function() { return components_vsImages; });\n/* concated harmony reexport vsRow */__webpack_require__.d(__webpack_exports__, \"vsRow\", function() { return layout_vsRow; });\n/* concated harmony reexport vsCol */__webpack_require__.d(__webpack_exports__, \"vsCol\", function() { return layout_vsCol; });\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (src);\n\n\n\n/***/ }),\n\n/***/ \"3934\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(\"c7e1\");\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !method || !fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n\n\n/***/ }),\n\n/***/ \"3e22\":\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\n\n/***/ }),\n\n/***/ \"3eb1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar createHTML = __webpack_require__(\"cf30\");\nvar forcedStringHTMLMethod = __webpack_require__(\"8cf6\");\n\n// `String.prototype.fixed` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n  fixed: function fixed() {\n    return createHTML(this, 'tt', '', '');\n  }\n});\n\n\n/***/ }),\n\n/***/ \"4665\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar toAbsoluteIndex = __webpack_require__(\"7019\");\nvar toInteger = __webpack_require__(\"d22e\");\nvar toLength = __webpack_require__(\"d17d\");\nvar toObject = __webpack_require__(\"b8d1\");\nvar arraySpeciesCreate = __webpack_require__(\"726f\");\nvar createProperty = __webpack_require__(\"54b8\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"af3d\");\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"4a74\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"861f\");\nvar fails = __webpack_require__(\"c7e1\");\nvar toIndexedObject = __webpack_require__(\"d72c\");\nvar nativeGetOwnPropertyDescriptor = __webpack_require__(\"a3fe\").f;\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"4b76\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"2ea4\");\nvar getOwnPropertyNamesModule = __webpack_require__(\"aee4\");\nvar getOwnPropertySymbolsModule = __webpack_require__(\"28d5\");\nvar anObject = __webpack_require__(\"a865\");\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"4cce\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"4ec2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"8034\");\nvar toIndexedObject = __webpack_require__(\"d72c\");\nvar indexOf = __webpack_require__(\"e724\").indexOf;\nvar hiddenKeys = __webpack_require__(\"83fd\");\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"4ff1\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"53f7\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __webpack_require__(\"a534\");\nvar createNonEnumerableProperty = __webpack_require__(\"b4be\");\nvar has = __webpack_require__(\"8034\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\nvar IS_PURE = __webpack_require__(\"4ff1\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ \"54b8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(\"2d7b\");\nvar definePropertyModule = __webpack_require__(\"069f\");\nvar createPropertyDescriptor = __webpack_require__(\"88b5\");\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ \"5650\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar toInteger = __webpack_require__(\"d22e\");\nvar thisNumberValue = __webpack_require__(\"a930\");\nvar repeat = __webpack_require__(\"68b6\");\nvar fails = __webpack_require__(\"c7e1\");\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n  var n = 0;\n  var x2 = x;\n  while (x2 >= 4096) {\n    n += 12;\n    x2 /= 4096;\n  }\n  while (x2 >= 2) {\n    n += 1;\n    x2 /= 2;\n  } return n;\n};\n\nvar FORCED = nativeToFixed && (\n  0.00008.toFixed(3) !== '0.000' ||\n  0.9.toFixed(0) !== '1' ||\n  1.255.toFixed(2) !== '1.25' ||\n  1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  // eslint-disable-next-line max-statements\n  toFixed: function toFixed(fractionDigits) {\n    var number = thisNumberValue(this);\n    var fractDigits = toInteger(fractionDigits);\n    var data = [0, 0, 0, 0, 0, 0];\n    var sign = '';\n    var result = '0';\n    var e, z, j, k;\n\n    var multiply = function (n, c) {\n      var index = -1;\n      var c2 = c;\n      while (++index < 6) {\n        c2 += n * data[index];\n        data[index] = c2 % 1e7;\n        c2 = floor(c2 / 1e7);\n      }\n    };\n\n    var divide = function (n) {\n      var index = 6;\n      var c = 0;\n      while (--index >= 0) {\n        c += data[index];\n        data[index] = floor(c / n);\n        c = (c % n) * 1e7;\n      }\n    };\n\n    var dataToString = function () {\n      var index = 6;\n      var s = '';\n      while (--index >= 0) {\n        if (s !== '' || index === 0 || data[index] !== 0) {\n          var t = String(data[index]);\n          s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n        }\n      } return s;\n    };\n\n    if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n    // eslint-disable-next-line no-self-compare\n    if (number != number) return 'NaN';\n    if (number <= -1e21 || number >= 1e21) return String(number);\n    if (number < 0) {\n      sign = '-';\n      number = -number;\n    }\n    if (number > 1e-21) {\n      e = log(number * pow(2, 69, 1)) - 69;\n      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n      z *= 0x10000000000000;\n      e = 52 - e;\n      if (e > 0) {\n        multiply(0, z);\n        j = fractDigits;\n        while (j >= 7) {\n          multiply(1e7, 0);\n          j -= 7;\n        }\n        multiply(pow(10, j, 1), 0);\n        j = e - 1;\n        while (j >= 23) {\n          divide(1 << 23);\n          j -= 23;\n        }\n        divide(1 << j);\n        multiply(1, 1);\n        divide(2);\n        result = dataToString();\n      } else {\n        multiply(0, z);\n        multiply(1 << -e, 0);\n        result = dataToString() + repeat.call('0', fractDigits);\n      }\n    }\n    if (fractDigits > 0) {\n      k = result.length;\n      result = sign + (k <= fractDigits\n        ? '0.' + repeat.call('0', fractDigits - k) + result\n        : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n    } else {\n      result = sign + result;\n    } return result;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"56b6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d65a\");\nvar anObject = __webpack_require__(\"a865\");\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\nvar sameValue = __webpack_require__(\"d3ff\");\nvar regExpExec = __webpack_require__(\"80e9\");\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n      return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative(nativeSearch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n\n\n/***/ }),\n\n/***/ \"581c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(\"d72c\");\nvar nativeGetOwnPropertyNames = __webpack_require__(\"aee4\").f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return nativeGetOwnPropertyNames(it);\n  } catch (error) {\n    return windowNames.slice();\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]'\n    ? getWindowNames(it)\n    : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n\n\n/***/ }),\n\n/***/ \"5a93\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(\"53f7\").IteratorPrototype;\nvar create = __webpack_require__(\"d709\");\nvar createPropertyDescriptor = __webpack_require__(\"88b5\");\nvar setToStringTag = __webpack_require__(\"74d6\");\nvar Iterators = __webpack_require__(\"0d18\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ \"5ac6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar isObject = __webpack_require__(\"883a\");\nvar isArray = __webpack_require__(\"9ce0\");\nvar toAbsoluteIndex = __webpack_require__(\"7019\");\nvar toLength = __webpack_require__(\"d17d\");\nvar toIndexedObject = __webpack_require__(\"d72c\");\nvar createProperty = __webpack_require__(\"54b8\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"af3d\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = toLength(O.length);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return nativeSlice.call(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"5cd4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(\"4ec2\");\nvar enumBugKeys = __webpack_require__(\"3e22\");\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"5ff7\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar createIteratorConstructor = __webpack_require__(\"5a93\");\nvar getPrototypeOf = __webpack_require__(\"a534\");\nvar setPrototypeOf = __webpack_require__(\"6476\");\nvar setToStringTag = __webpack_require__(\"74d6\");\nvar createNonEnumerableProperty = __webpack_require__(\"b4be\");\nvar redefine = __webpack_require__(\"32c6\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\nvar IS_PURE = __webpack_require__(\"4ff1\");\nvar Iterators = __webpack_require__(\"0d18\");\nvar IteratorsCore = __webpack_require__(\"53f7\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n\n\n/***/ }),\n\n/***/ \"601c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"608d\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"c7e1\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ \"60e5\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nexports.f = wellKnownSymbol;\n\n\n/***/ }),\n\n/***/ \"61e8\":\n/***/ (function(module, exports) {\n\n// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ \"61eb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar setGlobal = __webpack_require__(\"bcbc\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n\n/***/ \"6476\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"a865\");\nvar aPossiblePrototype = __webpack_require__(\"88fe\");\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ \"68b6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toInteger = __webpack_require__(\"d22e\");\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n  var str = String(requireObjectCoercible(this));\n  var result = '';\n  var n = toInteger(count);\n  if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"6ac0\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"61eb\");\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ \"6cb6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar fails = __webpack_require__(\"c7e1\");\nvar isArray = __webpack_require__(\"9ce0\");\nvar isObject = __webpack_require__(\"883a\");\nvar toObject = __webpack_require__(\"b8d1\");\nvar toLength = __webpack_require__(\"d17d\");\nvar createProperty = __webpack_require__(\"54b8\");\nvar arraySpeciesCreate = __webpack_require__(\"726f\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"af3d\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\nvar V8_VERSION = __webpack_require__(\"d41b\");\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  concat: function concat(arg) { // eslint-disable-line no-unused-vars\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = toLength(E.length);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"6ec3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar definePropertyModule = __webpack_require__(\"069f\");\nvar anObject = __webpack_require__(\"a865\");\nvar objectKeys = __webpack_require__(\"5cd4\");\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"7011\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar global = __webpack_require__(\"064c\");\nvar isForced = __webpack_require__(\"608d\");\nvar redefine = __webpack_require__(\"32c6\");\nvar has = __webpack_require__(\"8034\");\nvar classof = __webpack_require__(\"7e27\");\nvar inheritIfRequired = __webpack_require__(\"0a87\");\nvar toPrimitive = __webpack_require__(\"2d7b\");\nvar fails = __webpack_require__(\"c7e1\");\nvar create = __webpack_require__(\"d709\");\nvar getOwnPropertyNames = __webpack_require__(\"aee4\").f;\nvar getOwnPropertyDescriptor = __webpack_require__(\"a3fe\").f;\nvar defineProperty = __webpack_require__(\"069f\").f;\nvar trim = __webpack_require__(\"1865\").trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = it.charCodeAt(0);\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = it.slice(2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = digits.charCodeAt(index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var dummy = this;\n    return dummy instanceof NumberWrapper\n      // check on 1..constructor(foo) case\n      && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n        ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global, NUMBER, NumberWrapper);\n}\n\n\n/***/ }),\n\n/***/ \"7019\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"d22e\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ \"7067\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"726f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"883a\");\nvar isArray = __webpack_require__(\"9ce0\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n\n/***/ \"74d6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(\"069f\").f;\nvar has = __webpack_require__(\"8034\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n\n\n/***/ }),\n\n/***/ \"7628\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(\"7067\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ \"770a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"2ea4\");\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ \"77e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"7b45\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar trim = __webpack_require__(\"1865\").trim;\nvar whitespaces = __webpack_require__(\"61e8\");\n\nvar nativeParseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(String(string));\n  return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : nativeParseInt;\n\n\n/***/ }),\n\n/***/ \"7dda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar global = __webpack_require__(\"064c\");\nvar getBuiltIn = __webpack_require__(\"2ea4\");\nvar IS_PURE = __webpack_require__(\"4ff1\");\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar NATIVE_SYMBOL = __webpack_require__(\"9398\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(\"d5af\");\nvar fails = __webpack_require__(\"c7e1\");\nvar has = __webpack_require__(\"8034\");\nvar isArray = __webpack_require__(\"9ce0\");\nvar isObject = __webpack_require__(\"883a\");\nvar anObject = __webpack_require__(\"a865\");\nvar toObject = __webpack_require__(\"b8d1\");\nvar toIndexedObject = __webpack_require__(\"d72c\");\nvar toPrimitive = __webpack_require__(\"2d7b\");\nvar createPropertyDescriptor = __webpack_require__(\"88b5\");\nvar nativeObjectCreate = __webpack_require__(\"d709\");\nvar objectKeys = __webpack_require__(\"5cd4\");\nvar getOwnPropertyNamesModule = __webpack_require__(\"aee4\");\nvar getOwnPropertyNamesExternal = __webpack_require__(\"581c\");\nvar getOwnPropertySymbolsModule = __webpack_require__(\"28d5\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(\"a3fe\");\nvar definePropertyModule = __webpack_require__(\"069f\");\nvar propertyIsEnumerableModule = __webpack_require__(\"77e9\");\nvar createNonEnumerableProperty = __webpack_require__(\"b4be\");\nvar redefine = __webpack_require__(\"32c6\");\nvar shared = __webpack_require__(\"de86\");\nvar sharedKey = __webpack_require__(\"cebd\");\nvar hiddenKeys = __webpack_require__(\"83fd\");\nvar uid = __webpack_require__(\"99d8\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\nvar wrappedWellKnownSymbolModule = __webpack_require__(\"60e5\");\nvar defineWellKnownSymbol = __webpack_require__(\"c8bf\");\nvar setToStringTag = __webpack_require__(\"74d6\");\nvar InternalStateModule = __webpack_require__(\"097e\");\nvar $forEach = __webpack_require__(\"a55c\").forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPrimitive(P, true);\n  anObject(Attributes);\n  if (has(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPrimitive(V, true);\n  var enumerable = nativePropertyIsEnumerable.call(this, P);\n  if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPrimitive(P, true);\n  if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n      result.push(AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.github.io/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = String(key);\n    if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.github.io/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars\n    stringify: function stringify(it, replacer, space) {\n      var args = [it];\n      var index = 1;\n      var $replacer;\n      while (arguments.length > index) args.push(arguments[index++]);\n      $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return $stringify.apply(null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n  createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n/***/ }),\n\n/***/ \"7e27\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"8034\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"80c1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"861f\");\nvar from = __webpack_require__(\"11e2\");\nvar checkCorrectnessOfIteration = __webpack_require__(\"e78c\");\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n\n\n/***/ }),\n\n/***/ \"80e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"7e27\");\nvar regexpExec = __webpack_require__(\"bdde\");\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classof(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\n\n\n/***/ }),\n\n/***/ \"83fd\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"861f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar getOwnPropertyDescriptor = __webpack_require__(\"a3fe\").f;\nvar createNonEnumerableProperty = __webpack_require__(\"b4be\");\nvar redefine = __webpack_require__(\"32c6\");\nvar setGlobal = __webpack_require__(\"bcbc\");\nvar copyConstructorProperties = __webpack_require__(\"c91e\");\nvar isForced = __webpack_require__(\"608d\");\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n\n\n/***/ }),\n\n/***/ \"883a\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"88b5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ \"88fe\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"883a\");\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"8bbf\":\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n\n/***/ }),\n\n/***/ \"8caa\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar $indexOf = __webpack_require__(\"e724\").indexOf;\nvar sloppyArrayMethod = __webpack_require__(\"3934\");\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"8cf6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"c7e1\");\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    var test = ''[METHOD_NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  });\n};\n\n\n/***/ }),\n\n/***/ \"8e2c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar $filter = __webpack_require__(\"a55c\").filter;\nvar fails = __webpack_require__(\"c7e1\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"af3d\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = HAS_SPECIES_SUPPORT && !fails(function () {\n  [].filter.call({ length: -1, 0: 1 }, function (it) { throw it; });\n});\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"9398\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"c7e1\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  // eslint-disable-next-line no-undef\n  return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ \"93ae\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar objectKeys = __webpack_require__(\"5cd4\");\nvar toIndexedObject = __webpack_require__(\"d72c\");\nvar propertyIsEnumerable = __webpack_require__(\"77e9\").f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n        result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.github.io/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.github.io/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ \"9428\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(\"a016\");\nvar redefine = __webpack_require__(\"32c6\");\nvar toString = __webpack_require__(\"c504\");\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ \"9429\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar $find = __webpack_require__(\"a55c\").find;\nvar addToUnscopables = __webpack_require__(\"2995\");\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n\n\n/***/ }),\n\n/***/ \"956b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar $map = __webpack_require__(\"a55c\").map;\nvar fails = __webpack_require__(\"c7e1\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"af3d\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = HAS_SPECIES_SUPPORT && !fails(function () {\n  [].map.call({ length: -1, 0: 1 }, function (it) { throw it; });\n});\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"966c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar isObject = __webpack_require__(\"883a\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"96c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(\"2ea4\");\nvar definePropertyModule = __webpack_require__(\"069f\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n\n\n/***/ }),\n\n/***/ \"9760\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"2ea4\");\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ \"99c0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"99d8\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n/***/ }),\n\n/***/ \"9ce0\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"7e27\");\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"9fa8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"000d\");\nvar Iterators = __webpack_require__(\"0d18\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"a016\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ \"a157\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"a1b1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"c7e1\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a3fe\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar propertyIsEnumerableModule = __webpack_require__(\"77e9\");\nvar createPropertyDescriptor = __webpack_require__(\"88b5\");\nvar toIndexedObject = __webpack_require__(\"d72c\");\nvar toPrimitive = __webpack_require__(\"2d7b\");\nvar has = __webpack_require__(\"8034\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c33f\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"a437\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar $includes = __webpack_require__(\"e724\").includes;\nvar addToUnscopables = __webpack_require__(\"2995\");\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\n\n/***/ }),\n\n/***/ \"a4ea\":\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] =\n    GeneratorFunction.displayName = \"GeneratorFunction\";\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      prototype[method] = function(arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return Promise.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList)\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  Gp[toStringTagSymbol] = \"Generator\";\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n   true ? module.exports : undefined\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n\n\n/***/ }),\n\n/***/ \"a534\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"8034\");\nvar toObject = __webpack_require__(\"b8d1\");\nvar sharedKey = __webpack_require__(\"cebd\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(\"aa83\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ \"a55c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(\"7628\");\nvar IndexedObject = __webpack_require__(\"0033\");\nvar toObject = __webpack_require__(\"b8d1\");\nvar toLength = __webpack_require__(\"d17d\");\nvar arraySpeciesCreate = __webpack_require__(\"726f\");\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else if (IS_EVERY) return false;  // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6)\n};\n\n\n/***/ }),\n\n/***/ \"a5d0\":\n/***/ (function(module, exports) {\n\n// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n  var currentScript = \"currentScript\",\n      scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n  // If browser needs currentScript polyfill, add get currentScript() to the document object\n  if (!(currentScript in document)) {\n    Object.defineProperty(document, currentScript, {\n      get: function(){\n\n        // IE 6-10 supports script readyState\n        // IE 10+ support stack trace\n        try { throw new Error(); }\n        catch (err) {\n\n          // Find the second match for the \"at\" string to get file src url from stack.\n          // Specifically works with the format of stack traces in IE.\n          var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n          // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n          for(i in scripts){\n            if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n              return scripts[i];\n            }\n          }\n\n          // If no match, return null\n          return null;\n        }\n      }\n    });\n  }\n})(document);\n\n\n/***/ }),\n\n/***/ \"a865\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"883a\");\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"a930\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"7e27\");\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n  if (typeof value != 'number' && classof(value) != 'Number') {\n    throw TypeError('Incorrect invocation');\n  }\n  return +value;\n};\n\n\n/***/ }),\n\n/***/ \"aa83\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"c7e1\");\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ \"aee4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(\"4ec2\");\nvar enumBugKeys = __webpack_require__(\"3e22\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"af3d\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"c7e1\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\nvar V8_VERSION = __webpack_require__(\"d41b\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n\n\n/***/ }),\n\n/***/ \"b311\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"a865\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (error) {\n    var returnMethod = iterator['return'];\n    if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n    throw error;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"b4be\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar definePropertyModule = __webpack_require__(\"069f\");\nvar createPropertyDescriptor = __webpack_require__(\"88b5\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ \"b8d1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ \"ba1f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (e) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (f) { /* empty */ }\n  } return false;\n};\n\n\n/***/ }),\n\n/***/ \"ba4d\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"861f\");\nvar parseIntImplementation = __webpack_require__(\"7b45\");\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n  parseInt: parseIntImplementation\n});\n\n\n/***/ }),\n\n/***/ \"bb18\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar anObject = __webpack_require__(\"a865\");\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"bc6d\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar defineProperty = __webpack_require__(\"069f\").f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return FunctionPrototypeToString.call(this).match(nameRE)[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n\n\n/***/ }),\n\n/***/ \"bcbc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar createNonEnumerableProperty = __webpack_require__(\"b4be\");\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n\n/***/ }),\n\n/***/ \"bdde\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpFlags = __webpack_require__(\"bb18\");\nvar stickyHelpers = __webpack_require__(\"cc2b\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = regexpFlags.call(re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = flags.replace('y', '');\n      if (flags.indexOf('g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = String(str).slice(re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = match.input.slice(charsAdded);\n        match[0] = match[0].slice(charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"c0c3\":\n/***/ (function(module, exports) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n\n\n/***/ }),\n\n/***/ \"c18c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar notARegExp = __webpack_require__(\"0293\");\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\nvar correctIsRegExpLogic = __webpack_require__(\"ba1f\");\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~String(requireObjectCoercible(this))\n      .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"c33f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar fails = __webpack_require__(\"c7e1\");\nvar createElement = __webpack_require__(\"966c\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c37f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar exec = __webpack_require__(\"bdde\");\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n\n\n/***/ }),\n\n/***/ \"c504\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(\"a016\");\nvar classof = __webpack_require__(\"eb28\");\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n\n/***/ \"c6ee\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"c7e1\");\nvar whitespaces = __webpack_require__(\"61e8\");\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n\n\n/***/ }),\n\n/***/ \"c7e1\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"c8bf\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(\"f1d8\");\nvar has = __webpack_require__(\"8034\");\nvar wrappedWellKnownSymbolModule = __webpack_require__(\"60e5\");\nvar defineProperty = __webpack_require__(\"069f\").f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n\n\n/***/ }),\n\n/***/ \"c91e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"8034\");\nvar ownKeys = __webpack_require__(\"4b76\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(\"a3fe\");\nvar definePropertyModule = __webpack_require__(\"069f\");\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n\n\n/***/ }),\n\n/***/ \"cc2b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar fails = __webpack_require__(\"c7e1\");\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n  return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n  // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n  var re = RE('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = RE('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n\n\n/***/ }),\n\n/***/ \"cd75\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar inspectSource = __webpack_require__(\"6ac0\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ \"cebd\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"de86\");\nvar uid = __webpack_require__(\"99d8\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"cf30\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n  var S = String(requireObjectCoercible(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\n\n\n/***/ }),\n\n/***/ \"d17d\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"d22e\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"d22e\":\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ \"d3ff\":\n/***/ (function(module, exports) {\n\n// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n\n\n/***/ }),\n\n/***/ \"d41b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\nvar userAgent = __webpack_require__(\"770a\");\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n\n\n/***/ }),\n\n/***/ \"d5af\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(\"9398\");\n\nmodule.exports = NATIVE_SYMBOL\n  // eslint-disable-next-line no-undef\n  && !Symbol.sham\n  // eslint-disable-next-line no-undef\n  && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ \"d65a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefine = __webpack_require__(\"32c6\");\nvar fails = __webpack_require__(\"c7e1\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\nvar regexpExec = __webpack_require__(\"bdde\");\nvar createNonEnumerableProperty = __webpack_require__(\"b4be\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !(REPLACE_SUPPORTS_NAMED_GROUPS && REPLACE_KEEPS_$0)) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      if (regexp.exec === regexpExec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    }, { REPLACE_KEEPS_$0: REPLACE_KEEPS_$0 });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n  }\n\n  if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n\n\n/***/ }),\n\n/***/ \"d709\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"a865\");\nvar defineProperties = __webpack_require__(\"6ec3\");\nvar enumBugKeys = __webpack_require__(\"3e22\");\nvar hiddenKeys = __webpack_require__(\"83fd\");\nvar html = __webpack_require__(\"9760\");\nvar documentCreateElement = __webpack_require__(\"966c\");\nvar sharedKey = __webpack_require__(\"cebd\");\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"d72c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(\"0033\");\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ \"d7d7\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(\"f107\").charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"da4f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"861f\");\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar ownKeys = __webpack_require__(\"4b76\");\nvar toIndexedObject = __webpack_require__(\"d72c\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(\"a3fe\");\nvar createProperty = __webpack_require__(\"54b8\");\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"dc51\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_loaders_stylePostLoader_js_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_cache_loader_dist_cjs_js_ref_0_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_index_js_vue_loader_options_vsRow_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"4cce\");\n/* harmony import */ var _AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_loaders_stylePostLoader_js_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_cache_loader_dist_cjs_js_ref_0_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_index_js_vue_loader_options_vsRow_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_loaders_stylePostLoader_js_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_cache_loader_dist_cjs_js_ref_0_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_index_js_vue_loader_options_vsRow_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_loaders_stylePostLoader_js_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_cache_loader_dist_cjs_js_ref_0_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_index_js_vue_loader_options_vsRow_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a);\n\n/***/ }),\n\n/***/ \"de86\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(\"4ff1\");\nvar store = __webpack_require__(\"61eb\");\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.6.1',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"e010\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"861f\");\nvar $trim = __webpack_require__(\"1865\").trim;\nvar forcedStringTrimMethod = __webpack_require__(\"c6ee\");\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"e30c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefine = __webpack_require__(\"32c6\");\nvar anObject = __webpack_require__(\"a865\");\nvar fails = __webpack_require__(\"c7e1\");\nvar flags = __webpack_require__(\"bb18\");\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = String(R.source);\n    var rf = R.flags;\n    var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ \"e30c1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $forEach = __webpack_require__(\"a55c\").forEach;\nvar sloppyArrayMethod = __webpack_require__(\"3934\");\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ \"e724\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(\"d72c\");\nvar toLength = __webpack_require__(\"d17d\");\nvar toAbsoluteIndex = __webpack_require__(\"7019\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ \"e78c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ \"eb28\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(\"a016\");\nvar classofRaw = __webpack_require__(\"7e27\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ \"f107\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"d22e\");\nvar requireObjectCoercible = __webpack_require__(\"2fe0\");\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ \"f1a2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"a865\");\nvar aFunction = __webpack_require__(\"7067\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n\n/***/ }),\n\n/***/ \"f1d8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"064c\");\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ \"f2c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"861f\");\nvar toObject = __webpack_require__(\"b8d1\");\nvar nativeKeys = __webpack_require__(\"5cd4\");\nvar fails = __webpack_require__(\"c7e1\");\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n\n\n/***/ }),\n\n/***/ \"f2fe\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_loaders_stylePostLoader_js_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_cache_loader_dist_cjs_js_ref_0_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_index_js_vue_loader_options_vsCol_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"601c\");\n/* harmony import */ var _AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_loaders_stylePostLoader_js_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_cache_loader_dist_cjs_js_ref_0_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_index_js_vue_loader_options_vsCol_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_loaders_stylePostLoader_js_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_cache_loader_dist_cjs_js_ref_0_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_index_js_vue_loader_options_vsCol_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_loaders_stylePostLoader_js_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_cache_loader_dist_cjs_js_ref_0_0_AppData_Roaming_npm_node_modules_vue_cli_service_global_node_modules_vue_loader_lib_index_js_vue_loader_options_vsCol_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a);\n\n/***/ }),\n\n/***/ \"f564\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"a1b1\");\nvar global = __webpack_require__(\"064c\");\nvar isForced = __webpack_require__(\"608d\");\nvar inheritIfRequired = __webpack_require__(\"0a87\");\nvar defineProperty = __webpack_require__(\"069f\").f;\nvar getOwnPropertyNames = __webpack_require__(\"aee4\").f;\nvar isRegExp = __webpack_require__(\"2c17\");\nvar getFlags = __webpack_require__(\"bb18\");\nvar stickyHelpers = __webpack_require__(\"cc2b\");\nvar redefine = __webpack_require__(\"32c6\");\nvar fails = __webpack_require__(\"c7e1\");\nvar setInternalState = __webpack_require__(\"097e\").set;\nvar setSpecies = __webpack_require__(\"96c5\");\nvar wellKnownSymbol = __webpack_require__(\"000d\");\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n  re2[MATCH] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = this instanceof RegExpWrapper;\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var sticky;\n\n    if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n      return pattern;\n    }\n\n    if (CORRECT_NEW) {\n      if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n    } else if (pattern instanceof RegExpWrapper) {\n      if (flagsAreUndefined) flags = getFlags.call(pattern);\n      pattern = pattern.source;\n    }\n\n    if (UNSUPPORTED_Y) {\n      sticky = !!flags && flags.indexOf('y') > -1;\n      if (sticky) flags = flags.replace(/y/g, '');\n    }\n\n    var result = inheritIfRequired(\n      CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n      thisIsRegExp ? this : RegExpPrototype,\n      RegExpWrapper\n    );\n\n    if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n    return result;\n  };\n  var proxy = function (key) {\n    key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n      configurable: true,\n      get: function () { return NativeRegExp[key]; },\n      set: function (it) { NativeRegExp[key] = it; }\n    });\n  };\n  var keys = getOwnPropertyNames(NativeRegExp);\n  var index = 0;\n  while (keys.length > index) proxy(keys[index++]);\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n\n\n/***/ }),\n\n/***/ \"fadd\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"861f\");\nvar parseFloatImplementation = __webpack_require__(\"1597\");\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n  parseFloat: parseFloatImplementation\n});\n\n\n/***/ })\n\n/******/ });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlc2F4L2Rpc3QvdnVlc2F4LmNvbW1vbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWVzYXgvZGlzdC92dWVzYXguY29tbW9uLmpzP2ZiOWEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIjM2NmRcIik7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICh7XG5cbi8qKiovIFwiMDAwZFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA2NGNcIik7XG52YXIgc2hhcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImRlODZcIik7XG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjgwMzRcIik7XG52YXIgdWlkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjk5ZDhcIik7XG52YXIgTkFUSVZFX1NZTUJPTCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5Mzk4XCIpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ1YWZcIik7XG5cbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBpZiAoTkFUSVZFX1NZTUJPTCAmJiBoYXMoU3ltYm9sLCBuYW1lKSkgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gU3ltYm9sW25hbWVdO1xuICAgIGVsc2UgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gY3JlYXRlV2VsbEtub3duU3ltYm9sKCdTeW1ib2wuJyArIG5hbWUpO1xuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjAwMzNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImM3ZTFcIik7XG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3ZTI3XCIpO1xuXG52YXIgc3BsaXQgPSAnJy5zcGxpdDtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgcmV0dXJuICFPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PSAnU3RyaW5nJyA/IHNwbGl0LmNhbGwoaXQsICcnKSA6IE9iamVjdChpdCk7XG59IDogT2JqZWN0O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjAyOTNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGlzUmVnRXhwID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJjMTdcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc1JlZ0V4cChpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJUaGUgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHJlZ3VsYXIgZXhwcmVzc2lvbnNcIik7XG4gIH0gcmV0dXJuIGl0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIwNjRjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHt2YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwodGhpcywgX193ZWJwYWNrX3JlcXVpcmVfXyhcImExNTdcIikpKVxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIwNjhkXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY0Y1wiKTtcbnZhciBET01JdGVyYWJsZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzBjM1wiKTtcbnZhciBmb3JFYWNoID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImUzMGMxXCIpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiNGJlXCIpO1xuXG5mb3IgKHZhciBDT0xMRUNUSU9OX05BTUUgaW4gRE9NSXRlcmFibGVzKSB7XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW0NPTExFQ1RJT05fTkFNRV07XG4gIHZhciBDb2xsZWN0aW9uUHJvdG90eXBlID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgLy8gc29tZSBDaHJvbWUgdmVyc2lvbnMgaGF2ZSBub24tY29uZmlndXJhYmxlIG1ldGhvZHMgb24gRE9NVG9rZW5MaXN0XG4gIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlICYmIENvbGxlY3Rpb25Qcm90b3R5cGUuZm9yRWFjaCAhPT0gZm9yRWFjaCkgdHJ5IHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoQ29sbGVjdGlvblByb3RvdHlwZSwgJ2ZvckVhY2gnLCBmb3JFYWNoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBDb2xsZWN0aW9uUHJvdG90eXBlLmZvckVhY2ggPSBmb3JFYWNoO1xuICB9XG59XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMDY5ZlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTFiMVwiKTtcbnZhciBJRThfRE9NX0RFRklORSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjMzNmXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE4NjVcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmQ3YlwiKTtcblxudmFyIG5hdGl2ZURlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjA5N2VcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIE5BVElWRV9XRUFLX01BUCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjZDc1XCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjRjXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg4M2FcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImI0YmVcIik7XG52YXIgb2JqZWN0SGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjgwMzRcIik7XG52YXIgc2hhcmVkS2V5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImNlYmRcIik7XG52YXIgaGlkZGVuS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4M2ZkXCIpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCkge1xuICB2YXIgc3RvcmUgPSBuZXcgV2Vha01hcCgpO1xuICB2YXIgd21nZXQgPSBzdG9yZS5nZXQ7XG4gIHZhciB3bWhhcyA9IHN0b3JlLmhhcztcbiAgdmFyIHdtc2V0ID0gc3RvcmUuc2V0O1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgd21zZXQuY2FsbChzdG9yZSwgaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWdldC5jYWxsKHN0b3JlLCBpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWhhcy5jYWxsKHN0b3JlLCBpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIwOTg4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDY1YVwiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhODY1XCIpO1xudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImI4ZDFcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDE3ZFwiKTtcbnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDIyZVwiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJmZTBcIik7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ3ZDdcIik7XG52YXIgcmVnRXhwRXhlYyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4MGU5XCIpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTID0gL1xcJChbJCYnYF18XFxkXFxkP3w8W14+XSo+KS9nO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEID0gL1xcJChbJCYnYF18XFxkXFxkPykvZztcblxudmFyIG1heWJlVG9TdHJpbmcgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyBpdCA6IFN0cmluZyhpdCk7XG59O1xuXG4vLyBAQHJlcGxhY2UgbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdyZXBsYWNlJywgMiwgZnVuY3Rpb24gKFJFUExBQ0UsIG5hdGl2ZVJlcGxhY2UsIG1heWJlQ2FsbE5hdGl2ZSwgcmVhc29uKSB7XG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUucmVwbGFjZWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlXG4gICAgZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgcmVwbGFjZXIgPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZWFyY2hWYWx1ZVtSRVBMQUNFXTtcbiAgICAgIHJldHVybiByZXBsYWNlciAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcmVwbGFjZXIuY2FsbChzZWFyY2hWYWx1ZSwgTywgcmVwbGFjZVZhbHVlKVxuICAgICAgICA6IG5hdGl2ZVJlcGxhY2UuY2FsbChTdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHJlcGxhY2VcbiAgICBmdW5jdGlvbiAocmVnZXhwLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIGlmIChyZWFzb24uUkVQTEFDRV9LRUVQU18kMCB8fCAodHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ3N0cmluZycgJiYgcmVwbGFjZVZhbHVlLmluZGV4T2YoJyQwJykgPT09IC0xKSkge1xuICAgICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKG5hdGl2ZVJlcGxhY2UsIHJlZ2V4cCwgdGhpcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG5cbiAgICAgIHZhciBmdW5jdGlvbmFsUmVwbGFjZSA9IHR5cGVvZiByZXBsYWNlVmFsdWUgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoIWZ1bmN0aW9uYWxSZXBsYWNlKSByZXBsYWNlVmFsdWUgPSBTdHJpbmcocmVwbGFjZVZhbHVlKTtcblxuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICBpZiAoIWdsb2JhbCkgYnJlYWs7XG5cbiAgICAgICAgdmFyIG1hdGNoU3RyID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcblxuICAgICAgICB2YXIgbWF0Y2hlZCA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICB2YXIgcG9zaXRpb24gPSBtYXgobWluKHRvSW50ZWdlcihyZXN1bHQuaW5kZXgpLCBTLmxlbmd0aCksIDApO1xuICAgICAgICB2YXIgY2FwdHVyZXMgPSBbXTtcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgIC8vICAgY2FwdHVyZXMgPSByZXN1bHQuc2xpY2UoMSkubWFwKG1heWJlVG9TdHJpbmcpXG4gICAgICAgIC8vIGJ1dCBmb3Igc29tZSByZWFzb24gYG5hdGl2ZVNsaWNlLmNhbGwocmVzdWx0LCAxLCByZXN1bHQubGVuZ3RoKWAgKGNhbGxlZCBpblxuICAgICAgICAvLyB0aGUgc2xpY2UgcG9seWZpbGwgd2hlbiBzbGljaW5nIG5hdGl2ZSBhcnJheXMpIFwiZG9lc24ndCB3b3JrXCIgaW4gc2FmYXJpIDkgYW5kXG4gICAgICAgIC8vIGNhdXNlcyBhIGNyYXNoIChodHRwczovL3Bhc3RlYmluLmNvbS9OMjFRemVRQSkgd2hlbiB0cnlpbmcgdG8gZGVidWcgaXQuXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcmVzdWx0Lmxlbmd0aDsgaisrKSBjYXB0dXJlcy5wdXNoKG1heWJlVG9TdHJpbmcocmVzdWx0W2pdKSk7XG4gICAgICAgIHZhciBuYW1lZENhcHR1cmVzID0gcmVzdWx0Lmdyb3VwcztcbiAgICAgICAgaWYgKGZ1bmN0aW9uYWxSZXBsYWNlKSB7XG4gICAgICAgICAgdmFyIHJlcGxhY2VyQXJncyA9IFttYXRjaGVkXS5jb25jYXQoY2FwdHVyZXMsIHBvc2l0aW9uLCBTKTtcbiAgICAgICAgICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSByZXBsYWNlckFyZ3MucHVzaChuYW1lZENhcHR1cmVzKTtcbiAgICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBTdHJpbmcocmVwbGFjZVZhbHVlLmFwcGx5KHVuZGVmaW5lZCwgcmVwbGFjZXJBcmdzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVwbGFjZW1lbnQgPSBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgUywgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSBuZXh0U291cmNlUG9zaXRpb24pIHtcbiAgICAgICAgICBhY2N1bXVsYXRlZFJlc3VsdCArPSBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24pICsgcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgbmV4dFNvdXJjZVBvc2l0aW9uID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkUmVzdWx0ICsgUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24pO1xuICAgIH1cbiAgXTtcblxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRzdWJzdGl0dXRpb25cbiAgZnVuY3Rpb24gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlbWVudCkge1xuICAgIHZhciB0YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICB2YXIgbSA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgICB2YXIgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEO1xuICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5hbWVkQ2FwdHVyZXMgPSB0b09iamVjdChuYW1lZENhcHR1cmVzKTtcbiAgICAgIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MUztcbiAgICB9XG4gICAgcmV0dXJuIG5hdGl2ZVJlcGxhY2UuY2FsbChyZXBsYWNlbWVudCwgc3ltYm9scywgZnVuY3Rpb24gKG1hdGNoLCBjaCkge1xuICAgICAgdmFyIGNhcHR1cmU7XG4gICAgICBzd2l0Y2ggKGNoLmNoYXJBdCgwKSkge1xuICAgICAgICBjYXNlICckJzogcmV0dXJuICckJztcbiAgICAgICAgY2FzZSAnJic6IHJldHVybiBtYXRjaGVkO1xuICAgICAgICBjYXNlICdgJzogcmV0dXJuIHN0ci5zbGljZSgwLCBwb3NpdGlvbik7XG4gICAgICAgIGNhc2UgXCInXCI6IHJldHVybiBzdHIuc2xpY2UodGFpbFBvcyk7XG4gICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgIGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2NoLnNsaWNlKDEsIC0xKV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IC8vIFxcZFxcZD9cbiAgICAgICAgICB2YXIgbiA9ICtjaDtcbiAgICAgICAgICBpZiAobiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgIGlmIChuID4gbSkge1xuICAgICAgICAgICAgdmFyIGYgPSBmbG9vcihuIC8gMTApO1xuICAgICAgICAgICAgaWYgKGYgPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIGlmIChmIDw9IG0pIHJldHVybiBjYXB0dXJlc1tmIC0gMV0gPT09IHVuZGVmaW5lZCA/IGNoLmNoYXJBdCgxKSA6IGNhcHR1cmVzW2YgLSAxXSArIGNoLmNoYXJBdCgxKTtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW24gLSAxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYXB0dXJlID09PSB1bmRlZmluZWQgPyAnJyA6IGNhcHR1cmU7XG4gICAgfSk7XG4gIH1cbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjBhNWZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2MWZcIik7XG52YXIgYUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjcwNjdcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjhkMVwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xudmFyIHNsb3BweUFycmF5TWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM5MzRcIik7XG5cbnZhciB0ZXN0ID0gW107XG52YXIgbmF0aXZlU29ydCA9IHRlc3Quc29ydDtcblxuLy8gSUU4LVxudmFyIEZBSUxTX09OX1VOREVGSU5FRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdGVzdC5zb3J0KHVuZGVmaW5lZCk7XG59KTtcbi8vIFY4IGJ1Z1xudmFyIEZBSUxTX09OX05VTEwgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHRlc3Quc29ydChudWxsKTtcbn0pO1xuLy8gT2xkIFdlYktpdFxudmFyIFNMT1BQWV9NRVRIT0QgPSBzbG9wcHlBcnJheU1ldGhvZCgnc29ydCcpO1xuXG52YXIgRk9SQ0VEID0gRkFJTFNfT05fVU5ERUZJTkVEIHx8ICFGQUlMU19PTl9OVUxMIHx8IFNMT1BQWV9NRVRIT0Q7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuc29ydGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc29ydFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgICByZXR1cm4gY29tcGFyZWZuID09PSB1bmRlZmluZWRcbiAgICAgID8gbmF0aXZlU29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpKVxuICAgICAgOiBuYXRpdmVTb3J0LmNhbGwodG9PYmplY3QodGhpcyksIGFGdW5jdGlvbihjb21wYXJlZm4pKTtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMGE4N1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODgzYVwiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2NDc2XCIpO1xuXG4vLyBtYWtlcyBzdWJjbGFzc2luZyB3b3JrIGNvcnJlY3QgZm9yIHdyYXBwZWQgYnVpbHQtaW5zXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgkdGhpcywgZHVtbXksIFdyYXBwZXIpIHtcbiAgdmFyIE5ld1RhcmdldCwgTmV3VGFyZ2V0UHJvdG90eXBlO1xuICBpZiAoXG4gICAgLy8gaXQgY2FuIHdvcmsgb25seSB3aXRoIG5hdGl2ZSBgc2V0UHJvdG90eXBlT2ZgXG4gICAgc2V0UHJvdG90eXBlT2YgJiZcbiAgICAvLyB3ZSBoYXZlbid0IGNvbXBsZXRlbHkgY29ycmVjdCBwcmUtRVM2IHdheSBmb3IgZ2V0dGluZyBgbmV3LnRhcmdldGAsIHNvIHVzZSB0aGlzXG4gICAgdHlwZW9mIChOZXdUYXJnZXQgPSBkdW1teS5jb25zdHJ1Y3RvcikgPT0gJ2Z1bmN0aW9uJyAmJlxuICAgIE5ld1RhcmdldCAhPT0gV3JhcHBlciAmJlxuICAgIGlzT2JqZWN0KE5ld1RhcmdldFByb3RvdHlwZSA9IE5ld1RhcmdldC5wcm90b3R5cGUpICYmXG4gICAgTmV3VGFyZ2V0UHJvdG90eXBlICE9PSBXcmFwcGVyLnByb3RvdHlwZVxuICApIHNldFByb3RvdHlwZU9mKCR0aGlzLCBOZXdUYXJnZXRQcm90b3R5cGUpO1xuICByZXR1cm4gJHRoaXM7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjBjYThcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODYxZlwiKTtcblxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgTWF0aC50cnVuY2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1tYXRoLnRydW5jXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICB0cnVuYzogZnVuY3Rpb24gdHJ1bmMoaXQpIHtcbiAgICByZXR1cm4gKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xuICB9XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIwZDE4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMGQ2N1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5leHBvcnRzLmVuZGlhbm5lc3MgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnTEUnIH07XG5cbmV4cG9ydHMuaG9zdG5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBsb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhvc3RuYW1lXG4gICAgfVxuICAgIGVsc2UgcmV0dXJuICcnO1xufTtcblxuZXhwb3J0cy5sb2FkYXZnID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gW10gfTtcblxuZXhwb3J0cy51cHRpbWUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwIH07XG5cbmV4cG9ydHMuZnJlZW1lbSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gTnVtYmVyLk1BWF9WQUxVRTtcbn07XG5cbmV4cG9ydHMudG90YWxtZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7XG59O1xuXG5leHBvcnRzLmNwdXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBbXSB9O1xuXG5leHBvcnRzLnR5cGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnQnJvd3NlcicgfTtcblxuZXhwb3J0cy5yZWxlYXNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmFwcFZlcnNpb247XG4gICAgfVxuICAgIHJldHVybiAnJztcbn07XG5cbmV4cG9ydHMubmV0d29ya0ludGVyZmFjZXNcbj0gZXhwb3J0cy5nZXROZXR3b3JrSW50ZXJmYWNlc1xuPSBmdW5jdGlvbiAoKSB7IHJldHVybiB7fSB9O1xuXG5leHBvcnRzLmFyY2ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnamF2YXNjcmlwdCcgfTtcblxuZXhwb3J0cy5wbGF0Zm9ybSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdicm93c2VyJyB9O1xuXG5leHBvcnRzLnRtcGRpciA9IGV4cG9ydHMudG1wRGlyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAnL3RtcCc7XG59O1xuXG5leHBvcnRzLkVPTCA9ICdcXG4nO1xuXG5leHBvcnRzLmhvbWVkaXIgPSBmdW5jdGlvbiAoKSB7XG5cdHJldHVybiAnLydcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMTFlMlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGJpbmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzYyOFwiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiOGQxXCIpO1xudmFyIGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjMxMVwiKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWZhOFwiKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkMTdkXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU0YjhcIik7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzMwZVwiKTtcblxuLy8gYEFycmF5LmZyb21gIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkuZnJvbVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5O1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIG1hcGZuID0gYXJndW1lbnRzTGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBnZXRJdGVyYXRvck1ldGhvZChPKTtcbiAgdmFyIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvciwgbmV4dDtcbiAgaWYgKG1hcHBpbmcpIG1hcGZuID0gYmluZChtYXBmbiwgYXJndW1lbnRzTGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7XG4gIC8vIGlmIHRoZSB0YXJnZXQgaXMgbm90IGl0ZXJhYmxlIG9yIGl0J3MgYW4gYXJyYXkgd2l0aCB0aGUgZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBhIHNpbXBsZSBjYXNlXG4gIGlmIChpdGVyYXRvck1ldGhvZCAhPSB1bmRlZmluZWQgJiYgIShDID09IEFycmF5ICYmIGlzQXJyYXlJdGVyYXRvck1ldGhvZChpdGVyYXRvck1ldGhvZCkpKSB7XG4gICAgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5jYWxsKE8pO1xuICAgIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICAgIHJlc3VsdCA9IG5ldyBDKCk7XG4gICAgZm9yICg7IShzdGVwID0gbmV4dC5jYWxsKGl0ZXJhdG9yKSkuZG9uZTsgaW5kZXgrKykge1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZ1xuICAgICAgICA/IGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKVxuICAgICAgICA6IHN0ZXAudmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICByZXN1bHQgPSBuZXcgQyhsZW5ndGgpO1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gbWFwZm4oT1tpbmRleF0sIGluZGV4KSA6IE9baW5kZXhdKTtcbiAgICB9XG4gIH1cbiAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxNTk3XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY0Y1wiKTtcbnZhciB0cmltID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjE4NjVcIikudHJpbTtcbnZhciB3aGl0ZXNwYWNlcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2MWU4XCIpO1xuXG52YXIgbmF0aXZlUGFyc2VGbG9hdCA9IGdsb2JhbC5wYXJzZUZsb2F0O1xudmFyIEZPUkNFRCA9IDEgLyBuYXRpdmVQYXJzZUZsb2F0KHdoaXRlc3BhY2VzICsgJy0wJykgIT09IC1JbmZpbml0eTtcblxuLy8gYHBhcnNlRmxvYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcGFyc2VmbG9hdC1zdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gRk9SQ0VEID8gZnVuY3Rpb24gcGFyc2VGbG9hdChzdHJpbmcpIHtcbiAgdmFyIHRyaW1tZWRTdHJpbmcgPSB0cmltKFN0cmluZyhzdHJpbmcpKTtcbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZVBhcnNlRmxvYXQodHJpbW1lZFN0cmluZyk7XG4gIHJldHVybiByZXN1bHQgPT09IDAgJiYgdHJpbW1lZFN0cmluZy5jaGFyQXQoMCkgPT0gJy0nID8gLTAgOiByZXN1bHQ7XG59IDogbmF0aXZlUGFyc2VGbG9hdDtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIxODY1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJmZTBcIik7XG52YXIgd2hpdGVzcGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjFlOFwiKTtcblxudmFyIHdoaXRlc3BhY2UgPSAnWycgKyB3aGl0ZXNwYWNlcyArICddJztcbnZhciBsdHJpbSA9IFJlZ0V4cCgnXicgKyB3aGl0ZXNwYWNlICsgd2hpdGVzcGFjZSArICcqJyk7XG52YXIgcnRyaW0gPSBSZWdFeHAod2hpdGVzcGFjZSArIHdoaXRlc3BhY2UgKyAnKiQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltLCB0cmltU3RhcnQsIHRyaW1FbmQsIHRyaW1MZWZ0LCB0cmltUmlnaHQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMpIHtcbiAgICB2YXIgc3RyaW5nID0gU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJHRoaXMpKTtcbiAgICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGx0cmltLCAnJyk7XG4gICAgaWYgKFRZUEUgJiAyKSBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShydHJpbSwgJycpO1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltTGVmdCwgdHJpbVN0YXJ0IH1gIG1ldGhvZHNcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltc3RhcnRcbiAgc3RhcnQ6IGNyZWF0ZU1ldGhvZCgxKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltUmlnaHQsIHRyaW1FbmQgfWAgbWV0aG9kc1xuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1lbmRcbiAgZW5kOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnRyaW1gIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1cbiAgdHJpbTogY3JlYXRlTWV0aG9kKDMpXG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjFiZTJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODYxZlwiKTtcbnZhciAkdmFsdWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjkzYWVcIikudmFsdWVzO1xuXG4vLyBgT2JqZWN0LnZhbHVlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QudmFsdWVzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKE8pIHtcbiAgICByZXR1cm4gJHZhbHVlcyhPKTtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMjEzNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGNoYXJBdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmMTA3XCIpLmNoYXJBdDtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA5N2VcIik7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWZmN1wiKTtcblxudmFyIFNUUklOR19JVEVSQVRPUiA9ICdTdHJpbmcgSXRlcmF0b3InO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoU1RSSU5HX0lURVJBVE9SKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS1AQGl0ZXJhdG9yXG5kZWZpbmVJdGVyYXRvcihTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogU1RSSU5HX0lURVJBVE9SLFxuICAgIHN0cmluZzogU3RyaW5nKGl0ZXJhdGVkKSxcbiAgICBpbmRleDogMFxuICB9KTtcbi8vIGAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXN0cmluZ2l0ZXJhdG9ycHJvdG90eXBlJS5uZXh0XG59LCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgc3RyaW5nID0gc3RhdGUuc3RyaW5nO1xuICB2YXIgaW5kZXggPSBzdGF0ZS5pbmRleDtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gc3RyaW5nLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9IGNoYXJBdChzdHJpbmcsIGluZGV4KTtcbiAgc3RhdGUuaW5kZXggKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyMzIwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIGBNYXRoLnNpZ25gIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtbWF0aC5zaWduXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguc2lnbiB8fCBmdW5jdGlvbiBzaWduKHgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICByZXR1cm4gKHggPSAreCkgPT0gMCB8fCB4ICE9IHggPyB4IDogeCA8IDAgPyAtMSA6IDE7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjIzYjBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkNjVhXCIpO1xudmFyIGlzUmVnRXhwID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJjMTdcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTg2NVwiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJmZTBcIik7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImYxYTJcIik7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ3ZDdcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDE3ZFwiKTtcbnZhciBjYWxsUmVnRXhwRXhlYyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4MGU5XCIpO1xudmFyIHJlZ2V4cEV4ZWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYmRkZVwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xuXG52YXIgYXJyYXlQdXNoID0gW10ucHVzaDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBNQVhfVUlOVDMyID0gMHhGRkZGRkZGRjtcblxuLy8gYmFiZWwtbWluaWZ5IHRyYW5zcGlsZXMgUmVnRXhwKCd4JywgJ3knKSAtPiAveC95IGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciBTVVBQT1JUU19ZID0gIWZhaWxzKGZ1bmN0aW9uICgpIHsgcmV0dXJuICFSZWdFeHAoTUFYX1VJTlQzMiwgJ3knKTsgfSk7XG5cbi8vIEBAc3BsaXQgbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdzcGxpdCcsIDIsIGZ1bmN0aW9uIChTUExJVCwgbmF0aXZlU3BsaXQsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICB2YXIgaW50ZXJuYWxTcGxpdDtcbiAgaWYgKFxuICAgICdhYmJjJy5zcGxpdCgvKGIpKi8pWzFdID09ICdjJyB8fFxuICAgICd0ZXN0Jy5zcGxpdCgvKD86KS8sIC0xKS5sZW5ndGggIT0gNCB8fFxuICAgICdhYicuc3BsaXQoLyg/OmFiKSovKS5sZW5ndGggIT0gMiB8fFxuICAgICcuJy5zcGxpdCgvKC4/KSguPykvKS5sZW5ndGggIT0gNCB8fFxuICAgICcuJy5zcGxpdCgvKCkoKS8pLmxlbmd0aCA+IDEgfHxcbiAgICAnJy5zcGxpdCgvLj8vKS5sZW5ndGhcbiAgKSB7XG4gICAgLy8gYmFzZWQgb24gZXM1LXNoaW0gaW1wbGVtZW50YXRpb24sIG5lZWQgdG8gcmV3b3JrIGl0XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgc3RyaW5nID0gU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpO1xuICAgICAgdmFyIGxpbSA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfVUlOVDMyIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAobGltID09PSAwKSByZXR1cm4gW107XG4gICAgICBpZiAoc2VwYXJhdG9yID09PSB1bmRlZmluZWQpIHJldHVybiBbc3RyaW5nXTtcbiAgICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgbmF0aXZlIHNwbGl0XG4gICAgICBpZiAoIWlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbSk7XG4gICAgICB9XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICAgIHdoaWxlIChtYXRjaCA9IHJlZ2V4cEV4ZWMuY2FsbChzZXBhcmF0b3JDb3B5LCBzdHJpbmcpKSB7XG4gICAgICAgIGxhc3RJbmRleCA9IHNlcGFyYXRvckNvcHkubGFzdEluZGV4O1xuICAgICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICAgIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyaW5nLmxlbmd0aCkgYXJyYXlQdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCA+PSBsaW0pIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXBhcmF0b3JDb3B5Lmxhc3RJbmRleCA9PT0gbWF0Y2guaW5kZXgpIHNlcGFyYXRvckNvcHkubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3JDb3B5LnRlc3QoJycpKSBvdXRwdXQucHVzaCgnJyk7XG4gICAgICB9IGVsc2Ugb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICAgIHJldHVybiBvdXRwdXQubGVuZ3RoID4gbGltID8gb3V0cHV0LnNsaWNlKDAsIGxpbSkgOiBvdXRwdXQ7XG4gICAgfTtcbiAgLy8gQ2hha3JhLCBWOFxuICB9IGVsc2UgaWYgKCcwJy5zcGxpdCh1bmRlZmluZWQsIDApLmxlbmd0aCkge1xuICAgIGludGVybmFsU3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwID8gW10gOiBuYXRpdmVTcGxpdC5jYWxsKHRoaXMsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH07XG4gIH0gZWxzZSBpbnRlcm5hbFNwbGl0ID0gbmF0aXZlU3BsaXQ7XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zcGxpdFxuICAgIGZ1bmN0aW9uIHNwbGl0KHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHZhciBPID0gcmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKTtcbiAgICAgIHZhciBzcGxpdHRlciA9IHNlcGFyYXRvciA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZXBhcmF0b3JbU1BMSVRdO1xuICAgICAgcmV0dXJuIHNwbGl0dGVyICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBzcGxpdHRlci5jYWxsKHNlcGFyYXRvciwgTywgbGltaXQpXG4gICAgICAgIDogaW50ZXJuYWxTcGxpdC5jYWxsKFN0cmluZyhPKSwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHNwbGl0XG4gICAgLy9cbiAgICAvLyBOT1RFOiBUaGlzIGNhbm5vdCBiZSBwcm9wZXJseSBwb2x5ZmlsbGVkIGluIGVuZ2luZXMgdGhhdCBkb24ndCBzdXBwb3J0XG4gICAgLy8gdGhlICd5JyBmbGFnLlxuICAgIGZ1bmN0aW9uIChyZWdleHAsIGxpbWl0KSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKGludGVybmFsU3BsaXQsIHJlZ2V4cCwgdGhpcywgbGltaXQsIGludGVybmFsU3BsaXQgIT09IG5hdGl2ZVNwbGl0KTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgICAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IocngsIFJlZ0V4cCk7XG5cbiAgICAgIHZhciB1bmljb2RlTWF0Y2hpbmcgPSByeC51bmljb2RlO1xuICAgICAgdmFyIGZsYWdzID0gKHJ4Lmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJ4Lm11bHRpbGluZSA/ICdtJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAocngudW5pY29kZSA/ICd1JyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoU1VQUE9SVFNfWSA/ICd5JyA6ICdnJyk7XG5cbiAgICAgIC8vIF4oPyArIHJ4ICsgKSBpcyBuZWVkZWQsIGluIGNvbWJpbmF0aW9uIHdpdGggc29tZSBTIHNsaWNpbmcsIHRvXG4gICAgICAvLyBzaW11bGF0ZSB0aGUgJ3knIGZsYWcuXG4gICAgICB2YXIgc3BsaXR0ZXIgPSBuZXcgQyhTVVBQT1JUU19ZID8gcnggOiAnXig/OicgKyByeC5zb3VyY2UgKyAnKScsIGZsYWdzKTtcbiAgICAgIHZhciBsaW0gPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gTUFYX1VJTlQzMiA6IGxpbWl0ID4+PiAwO1xuICAgICAgaWYgKGxpbSA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgaWYgKFMubGVuZ3RoID09PSAwKSByZXR1cm4gY2FsbFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpID09PSBudWxsID8gW1NdIDogW107XG4gICAgICB2YXIgcCA9IDA7XG4gICAgICB2YXIgcSA9IDA7XG4gICAgICB2YXIgQSA9IFtdO1xuICAgICAgd2hpbGUgKHEgPCBTLmxlbmd0aCkge1xuICAgICAgICBzcGxpdHRlci5sYXN0SW5kZXggPSBTVVBQT1JUU19ZID8gcSA6IDA7XG4gICAgICAgIHZhciB6ID0gY2FsbFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFNVUFBPUlRTX1kgPyBTIDogUy5zbGljZShxKSk7XG4gICAgICAgIHZhciBlO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgeiA9PT0gbnVsbCB8fFxuICAgICAgICAgIChlID0gbWluKHRvTGVuZ3RoKHNwbGl0dGVyLmxhc3RJbmRleCArIChTVVBQT1JUU19ZID8gMCA6IHEpKSwgUy5sZW5ndGgpKSA9PT0gcFxuICAgICAgICApIHtcbiAgICAgICAgICBxID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVuaWNvZGVNYXRjaGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQS5wdXNoKFMuc2xpY2UocCwgcSkpO1xuICAgICAgICAgIGlmIChBLmxlbmd0aCA9PT0gbGltKSByZXR1cm4gQTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSB6Lmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgQS5wdXNoKHpbaV0pO1xuICAgICAgICAgICAgaWYgKEEubGVuZ3RoID09PSBsaW0pIHJldHVybiBBO1xuICAgICAgICAgIH1cbiAgICAgICAgICBxID0gcCA9IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEEucHVzaChTLnNsaWNlKHApKTtcbiAgICAgIHJldHVybiBBO1xuICAgIH1cbiAgXTtcbn0sICFTVVBQT1JUU19ZKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIyOGQ1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMjkxZFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyIHNpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjMyMFwiKTtcblxuLy8gYE1hdGguc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1tYXRoLnNpZ25cbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIHNpZ246IHNpZ25cbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjI5OTVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwMDBkXCIpO1xudmFyIGNyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkNzA5XCIpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA2OWZcIik7XG5cbnZhciBVTlNDT1BBQkxFUyA9IHdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuaWYgKEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHtcbiAgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihBcnJheVByb3RvdHlwZSwgVU5TQ09QQUJMRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6IGNyZWF0ZShudWxsKVxuICB9KTtcbn1cblxuLy8gYWRkIGEga2V5IHRvIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXVtrZXldID0gdHJ1ZTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMmMxN1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODgzYVwiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjdlMjdcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAwMGRcIik7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcblxuLy8gYElzUmVnRXhwYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzcmVnZXhwXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjbGFzc29mKGl0KSA9PSAnUmVnRXhwJyk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjJkN2JcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg4M2FcIik7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgUFJFRkVSUkVEX1NUUklORykge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaW5wdXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMmVhNFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgcGF0aCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmMWQ4XCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjRjXCIpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKHZhcmlhYmxlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFyaWFibGUgPT0gJ2Z1bmN0aW9uJyA/IHZhcmlhYmxlIDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKHBhdGhbbmFtZXNwYWNlXSkgfHwgYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKVxuICAgIDogcGF0aFtuYW1lc3BhY2VdICYmIHBhdGhbbmFtZXNwYWNlXVttZXRob2RdIHx8IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjJmZTBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzJjNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA2NGNcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImI0YmVcIik7XG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjgwMzRcIik7XG52YXIgc2V0R2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImJjYmNcIik7XG52YXIgaW5zcGVjdFNvdXJjZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2YWMwXCIpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDk3ZVwiKTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHVuc2FmZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMudW5zYWZlIDogZmFsc2U7XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zID8gISFvcHRpb25zLmVudW1lcmFibGUgOiBmYWxzZTtcbiAgdmFyIG5vVGFyZ2V0R2V0ID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5ub1RhcmdldEdldCA6IGZhbHNlO1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAodHlwZW9mIGtleSA9PSAnc3RyaW5nJyAmJiAhaGFzKHZhbHVlLCAnbmFtZScpKSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodmFsdWUsICduYW1lJywga2V5KTtcbiAgICBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSkuc291cmNlID0gVEVNUExBVEUuam9pbih0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8ga2V5IDogJycpO1xuICB9XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIHNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gIH0gZWxzZSBpZiAoIW5vVGFyZ2V0R2V0ICYmIE9ba2V5XSkge1xuICAgIHNpbXBsZSA9IHRydWU7XG4gIH1cbiAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gIGVsc2UgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzMwZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlYjI4XCIpO1xudmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwZDE4XCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwMDBkXCIpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiMzY2ZFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTtcbnZhciBjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCA9IHt9O1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yKGNvbXBvbmVudHNfbmFtZXNwYWNlT2JqZWN0KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0J1dHRvblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNCdXR0b247IH0pO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kKGNvbXBvbmVudHNfbmFtZXNwYWNlT2JqZWN0LCBcInZzU2VsZWN0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c1NlbGVjdDsgfSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQoY29tcG9uZW50c19uYW1lc3BhY2VPYmplY3QsIFwidnNTd2l0Y2hcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzU3dpdGNoOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0NoZWNrYm94XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0NoZWNrQm94OyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c1JhZGlvXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c1JhZGlvOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0lucHV0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0lucHV0OyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c1RhYnNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzVGFiczsgfSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQoY29tcG9uZW50c19uYW1lc3BhY2VPYmplY3QsIFwidnNTbGlkZXJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzU2xpZGVyOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0lucHV0TnVtYmVyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0lucHV0TnVtYmVyOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c1Rvb2x0aXBcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzVG9vbHRpcDsgfSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQoY29tcG9uZW50c19uYW1lc3BhY2VPYmplY3QsIFwidnNVcGxvYWRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzVXBsb2FkOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c1BvcHVwXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c1BvcHVwOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0FsZXJ0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0FsZXJ0OyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0NoaXBcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzQ2hpcDsgfSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQoY29tcG9uZW50c19uYW1lc3BhY2VPYmplY3QsIFwidnNQcm9ncmVzc1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNQcm9ncmVzczsgfSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQoY29tcG9uZW50c19uYW1lc3BhY2VPYmplY3QsIFwidnNDYXJkXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0NhcmQ7IH0pO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kKGNvbXBvbmVudHNfbmFtZXNwYWNlT2JqZWN0LCBcInZzTGlzdFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNMaXN0OyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0F2YXRhclwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNBdmF0YXI7IH0pO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kKGNvbXBvbmVudHNfbmFtZXNwYWNlT2JqZWN0LCBcInZzUGFnaW5hdGlvblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNQYWdpbmF0aW9uOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0JyZWFkY3J1bWJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzQnJlYWRjcnVtYjsgfSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQoY29tcG9uZW50c19uYW1lc3BhY2VPYmplY3QsIFwidnNQcm9tcHRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiB2c1Byb21wdDsgfSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQoY29tcG9uZW50c19uYW1lc3BhY2VPYmplY3QsIFwidnNEaXZpZGVyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0RpdmlkZXI7IH0pO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kKGNvbXBvbmVudHNfbmFtZXNwYWNlT2JqZWN0LCBcInZzU3BhY2VyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c1NwYWNlcjsgfSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQoY29tcG9uZW50c19uYW1lc3BhY2VPYmplY3QsIFwidnNJY29uXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0ljb247IH0pO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kKGNvbXBvbmVudHNfbmFtZXNwYWNlT2JqZWN0LCBcInZzTmF2YmFyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c05hdmJhcjsgfSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQoY29tcG9uZW50c19uYW1lc3BhY2VPYmplY3QsIFwidnNTaWRlQmFyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gdnNTaWRlQmFyOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0Ryb3BEb3duXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0Ryb3BEb3duOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c1RhYmxlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c1RhYmxlOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c1RleHRhcmVhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c1RleHRhcmVhOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0NvbGxhcHNlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0NvbGxhcHNlOyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0ltYWdlc1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNJbWFnZXM7IH0pO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kKGNvbXBvbmVudHNfbmFtZXNwYWNlT2JqZWN0LCBcInZzUm93XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gbGF5b3V0X3ZzUm93OyB9KTtcbl9fd2VicGFja19yZXF1aXJlX18uZChjb21wb25lbnRzX25hbWVzcGFjZU9iamVjdCwgXCJ2c0NvbFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGxheW91dF92c0NvbDsgfSk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UvbGliL2NvbW1hbmRzL2J1aWxkL3NldFB1YmxpY1BhdGguanNcbi8vIFRoaXMgZmlsZSBpcyBpbXBvcnRlZCBpbnRvIGxpYi93YyBjbGllbnQgYnVuZGxlcy5cblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIGlmICh0cnVlKSB7XG4gICAgX193ZWJwYWNrX3JlcXVpcmVfXyhcImE1ZDBcIilcbiAgfVxuXG4gIHZhciBzZXRQdWJsaWNQYXRoX2lcbiAgaWYgKChzZXRQdWJsaWNQYXRoX2kgPSB3aW5kb3cuZG9jdW1lbnQuY3VycmVudFNjcmlwdCkgJiYgKHNldFB1YmxpY1BhdGhfaSA9IHNldFB1YmxpY1BhdGhfaS5zcmMubWF0Y2goLyguK1xcLylbXi9dK1xcLmpzKFxcPy4qKT8kLykpKSB7XG4gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2V0UHVibGljUGF0aF9pWzFdIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgfVxufVxuXG4vLyBJbmRpY2F0ZSB0byB3ZWJwYWNrIHRoYXQgdGhpcyBmaWxlIGNhbiBiZSBjb25jYXRlbmF0ZWRcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNldFB1YmxpY1BhdGggPSAobnVsbCk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC52YWx1ZXMuanNcbnZhciBlc19vYmplY3RfdmFsdWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjFiZTJcIik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanNcbnZhciB3ZWJfZG9tX2NvbGxlY3Rpb25zX2Zvcl9lYWNoID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA2OGRcIik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanNcbnZhciBlc19mdW5jdGlvbl9uYW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImJjNmRcIik7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQnV0dG9uL3ZzQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mMDliYTUxNCZsYW5nPWh0bWwmXG52YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge1xudmFyIF9vYmo7XG52YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2J1dHRvbicsX3ZtLl9nKF92bS5fYih7cmVmOlwiYnRuXCIsc3RhdGljQ2xhc3M6XCJ2cy1jb21wb25lbnQgdnMtYnV0dG9uXCIsY2xhc3M6WyhcInZzLWJ1dHRvbi1cIiArIChfdm0uaXNDb2xvcigpP192bS5jb2xvcjpudWxsKSksKFwidnMtYnV0dG9uLVwiICsgX3ZtLnR5cGUpLHtcbiAgICAnaXNBY3RpdmUnOl92bS5pc0FjdGl2ZSxcbiAgICAnaW5jbHVkZUljb24nOl92bS5pY29uLFxuICAgICdpbmNsdWRlSWNvbk9ubHknOl92bS5pY29uICYmICFfdm0uJHNsb3RzLmRlZmF1bHQsXG4gICAgJ3ZzLXJhZGl1cyc6X3ZtLnJhZGl1c1xuICB9LCBfdm0uc2l6ZV0sc3R5bGU6KFtfdm0uc3R5bGVzLHtcbiAgICAnd2lkdGgnOi9bcHhdLy50ZXN0KF92bS5zaXplKT8oXCJcIiArIF92bS5zaXplKTpudWxsLFxuICAgICdoZWlnaHQnOi9bcHhdLy50ZXN0KF92bS5zaXplKT8oXCJcIiArIF92bS5zaXplKTpudWxsXG4gIH1dKSxhdHRyczp7XCJ0eXBlXCI6X3ZtLmJ1dHRvbixcIm5hbWVcIjpcImJ1dHRvblwifX0sJ2J1dHRvbicsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLmxpc3RlbmVycyksWyghX3ZtLmlzKCdsaW5lJykmJiFfdm0uaXMoJ2dyYWRpZW50JykmJiFfdm0uaXMoJ3JlbGllZicpKT9fYygnc3Bhbicse3JlZjpcImJhY2tncm91bmR4XCIsc3RhdGljQ2xhc3M6XCJ2cy1idXR0b24tYmFja2dyb3VuZHggdnMtYnV0dG9uLS1iYWNrZ3JvdW5kXCIsc3R5bGU6KF92bS5zdHlsZXNCYWNrR3JvdW5kKX0pOl92bS5fZSgpLChfdm0uaWNvbik/X2MoJ3ZzLWljb24nLHtzdGF0aWNDbGFzczpcInZzLWJ1dHRvbi0taWNvbiBcIixzdHlsZTooKCBfb2JqID0ge1xuICAgICAgJ29yZGVyJzpfdm0uaWNvbkFmdGVyPzI6MFxuICAgIH0sIF9vYmpbJ21hcmdpbi0nICsgX3ZtLmlzUlRMKCdsZWZ0JyldID0gX3ZtLiRzbG90cy5kZWZhdWx0JiYhX3ZtLmljb25BZnRlcj8nNXB4JzonMHB4JywgX29ialsnbWFyZ2luLScgKyBfdm0uaXNSVEwoJ3JpZ2h0JyldID0gX3ZtLiRzbG90cy5kZWZhdWx0JiZfdm0uaWNvbkFmdGVyPyc1cHgnOicwcHgnLCBfb2JqICkpLGF0dHJzOntcImljb24tcGFja1wiOl92bS5pY29uUGFjayxcImljb25cIjpfdm0uaWNvbn19KTpfdm0uX2UoKSwoX3ZtLiRzbG90cy5kZWZhdWx0KT9fYygnc3Bhbicse3N0YXRpY0NsYXNzOlwidnMtYnV0dG9uLXRleHQgdnMtYnV0dG9uLS10ZXh0XCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKTpfdm0uX2UoKSxfYygnc3Bhbicse3JlZjpcImxpbmV4XCIsc3RhdGljQ2xhc3M6XCJ2cy1idXR0b24tbGluZXhcIixzdHlsZTooX3ZtLnN0eWxlTGluZSl9KV0sMSl9XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQnV0dG9uL3ZzQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mMDliYTUxNCZsYW5nPWh0bWwmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qc1xudmFyIGVzX3N5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3ZGRhXCIpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanNcbnZhciBlc19hcnJheV9jb25jYXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmNiNlwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzXG52YXIgZXNfYXJyYXlfZmlsdGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjhlMmNcIik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcbnZhciBlc19vYmplY3RfZ2V0X293bl9wcm9wZXJ0eV9kZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjRhNzRcIik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzLmpzXG52YXIgZXNfb2JqZWN0X2dldF9vd25fcHJvcGVydHlfZGVzY3JpcHRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZGE0ZlwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanNcbnZhciBlc19vYmplY3Rfa2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmMmMzXCIpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qc1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG4vLyBFWFRFUk5BTCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcy5qc1xudmFyIGVzX2FycmF5X2luY2x1ZGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE0MzdcIik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNsaWNlLmpzXG52YXIgZXNfYXJyYXlfc2xpY2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWFjNlwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucGFyc2UtaW50LmpzXG52YXIgZXNfcGFyc2VfaW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImJhNGRcIik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzXG52YXIgZXNfcmVnZXhwX2V4ZWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzM3ZlwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanNcbnZhciBlc19zdHJpbmdfcmVwbGFjZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwOTg4XCIpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc2VhcmNoLmpzXG52YXIgZXNfc3RyaW5nX3NlYXJjaCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NmI2XCIpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3BsaXQuanNcbnZhciBlc19zdHJpbmdfc3BsaXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjNiMFwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanNcbnZhciBlc19zdHJpbmdfdHJpbSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlMDEwXCIpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy91dGlscy9jb2xvci5qc1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdXRpbHNfY29sb3IgPSAoe1xuICBkYXJrZW46IGZ1bmN0aW9uIGRhcmtlbihjb2xvciwgcGVyY2VudCkge1xuICAgIHZhciBmID0gY29sb3Iuc3BsaXQoXCIsXCIpLFxuICAgICAgICB0ID0gcGVyY2VudCA8IDAgPyAwIDogMjU1LFxuICAgICAgICBwID0gcGVyY2VudCA8IDAgPyBwZXJjZW50ICogLTEgOiBwZXJjZW50LFxuICAgICAgICBSID0gcGFyc2VJbnQoZlswXS5zbGljZSg0KSksXG4gICAgICAgIEcgPSBwYXJzZUludChmWzFdKSxcbiAgICAgICAgQiA9IHBhcnNlSW50KGZbMl0pO1xuICAgIHJldHVybiBcInJnYihcIiArIChNYXRoLnJvdW5kKCh0IC0gUikgKiBwKSArIFIpICsgXCIsXCIgKyAoTWF0aC5yb3VuZCgodCAtIEcpICogcCkgKyBHKSArIFwiLFwiICsgKE1hdGgucm91bmQoKHQgLSBCKSAqIHApICsgQikgKyBcIilcIjtcbiAgfSxcbiAgZ2V0Q29sb3I6IGZ1bmN0aW9uIGdldENvbG9yKGNvbG9yeCkge1xuICAgIHZhciBhbHBoYXggPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDE7XG4gICAgdmFyIGRlZmF1bHR4ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB0cnVlO1xuXG4gICAgLy8gY2hhbmdlIGNvbG9yIGhleCB0byBSR0JcbiAgICBpZiAoL15bI10vLnRlc3QoY29sb3J4KSkge1xuICAgICAgdmFyIGMgPSB0aGlzLmhleFRvUmdiKGNvbG9yeCk7XG5cbiAgICAgIGlmIChhbHBoYXggPT0gMSkge1xuICAgICAgICBjb2xvcnggPSBcInJnYihcIi5jb25jYXQoYy5yLCBcIixcIikuY29uY2F0KGMuZywgXCIsXCIpLmNvbmNhdChjLmIsIFwiKVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbG9yeCA9IFwicmdiYShcIi5jb25jYXQoYy5yLCBcIixcIikuY29uY2F0KGMuZywgXCIsXCIpLmNvbmNhdChjLmIsIFwiLFwiKS5jb25jYXQoYWxwaGF4LCBcIilcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgvXnJnYmEvLnRlc3QoY29sb3J4KSkge1xuICAgICAgaWYgKGNvbG9yeC5zZWFyY2goLy4oWzAtOV1cXCkpJC8pID09IC0xICYmICFkZWZhdWx0eCkge1xuICAgICAgICBjb2xvcnggPSBjb2xvcngucmVwbGFjZSgvLj8oWzAtOV1cXCkpJC8sIFwiXCIuY29uY2F0KGFscGhheCwgXCIpXCIpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKC9eKHJnYikvLnRlc3QoY29sb3J4KSkge1xuICAgICAgLy8gY2hhbmdlIHJnYiBhbmQgcmdiYVxuICAgICAgaWYgKGFscGhheCAhPSAxKSB7XG4gICAgICAgIGNvbG9yeCA9IGNvbG9yeC5yZXBsYWNlKC9eKHJnYikvLCBcInJnYmFcIik7XG4gICAgICAgIGNvbG9yeCA9IGNvbG9yeC5yZXBsYWNlKC9cXCkkLywgXCIsXCIuY29uY2F0KGFscGhheCwgXCIpXCIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29sb3J4O1xuICB9LFxuICBpc0NvbG9yOiBmdW5jdGlvbiBpc0NvbG9yKGNvbG9yeCkge1xuICAgIHZhciB2c2NvbG9ycyA9IFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAnc3VjY2VzcycsICdkYW5nZXInLCAnd2FybmluZycsICdkYXJrJywgJ2xpZ2h0J107XG4gICAgcmV0dXJuIHZzY29sb3JzLmluY2x1ZGVzKGNvbG9yeCk7XG4gIH0sXG4gIFJhbmRvbUNvbG9yOiBmdW5jdGlvbiBSYW5kb21Db2xvcigpIHtcbiAgICBmdW5jdGlvbiBnZXRSYW5kb21JbnQobWluLCBtYXgpIHtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgcmV0dXJuIFwicmdiKFwiLmNvbmNhdChnZXRSYW5kb21JbnQoMCwgMjU1KSwgXCIsXCIpLmNvbmNhdChnZXRSYW5kb21JbnQoMCwgMjU1KSwgXCIsXCIpLmNvbmNhdChnZXRSYW5kb21JbnQoMCwgMjU1KSwgXCIpXCIpO1xuICB9LFxuICByQ29sb3I6IGZ1bmN0aW9uIHJDb2xvcihjb2xvcngpIHtcbiAgICB2YXIgb3BhY2l0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMTtcblxuICAgIGlmICgvXlsjXS8udGVzdChjb2xvcngpKSB7XG4gICAgICB2YXIgYyA9IHRoaXMuaGV4VG9SZ2IoY29sb3J4KTtcbiAgICAgIGNvbG9yeCA9IFwicmdiYShcIi5jb25jYXQoYy5yLCBcIixcIikuY29uY2F0KGMuZywgXCIsXCIpLmNvbmNhdChjLmIsIFwiLFwiKS5jb25jYXQob3BhY2l0eSwgXCIpXCIpO1xuICAgIH0gZWxzZSBpZiAoL15bcmdiXS8udGVzdChjb2xvcngpKSB7XG4gICAgICB2YXIgY29sb3JTcGxpdCA9IGNvbG9yeC5zcGxpdCgnKScpWzBdO1xuXG4gICAgICBpZiAoIS9eW3JnYmFdLy50ZXN0KGNvbG9yeCkpIHtcbiAgICAgICAgY29sb3JTcGxpdC5yZXBsYWNlKCdyZ2InLCAncmdiYScpO1xuICAgICAgICBjb2xvclNwbGl0ICs9IFwiLFwiLmNvbmNhdChvcGFjaXR5LCBcIilcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb2xvclNwbGl0LnJlcGxhY2UoJ3JnYicsJ3JnYmEnKVxuICAgICAgICBjb2xvclNwbGl0ICs9IFwiKVwiO1xuICAgICAgfVxuXG4gICAgICBjb2xvcnggPSBjb2xvclNwbGl0O1xuICAgIH1cblxuICAgIHZhciB2c2NvbG9ycyA9IFsncHJpbWFyeScsICdzdWNjZXNzJywgJ2RhbmdlcicsICd3YXJuaW5nJywgJ2RhcmsnXTtcblxuICAgIGlmIChjb2xvcngpIHtcbiAgICAgIGlmICgvWyMoKV0vLnRlc3QoY29sb3J4KSkge1xuICAgICAgICByZXR1cm4gY29sb3J4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZzY29sb3JzLmluY2x1ZGVzKGNvbG9yeCkpIHtcbiAgICAgICAgICByZXR1cm4gXCJyZ2JhKHZhcigtLXZzLVwiLmNvbmNhdChjb2xvcngsIFwiKSxcIikuY29uY2F0KG9wYWNpdHksIFwiKVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJyZ2JhKHZhcigtLXZzLXByaW1hcnkpLFwiLmNvbmNhdChvcGFjaXR5LCBcIilcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwicmdiYSh2YXIoLS12cy1wcmltYXJ5KSxcIi5jb25jYXQob3BhY2l0eSwgXCIpXCIpO1xuICAgIH1cbiAgfSxcbiAgY29udHJhc3RDb2xvcjogZnVuY3Rpb24gY29udHJhc3RDb2xvcihlbGVtZW50eCkge1xuICAgIHZhciBjID0gZWxlbWVudHg7XG5cbiAgICBpZiAoL1sjXS9nLnRlc3QoZWxlbWVudHgpKSB7XG4gICAgICB2YXIgcmdieCA9IHRoaXMuaGV4VG9SZ2IoZWxlbWVudHgpO1xuICAgICAgYyA9IFwicmdiKFwiLmNvbmNhdChyZ2J4LnIsIFwiLFwiKS5jb25jYXQocmdieC5nLCBcIixcIikuY29uY2F0KHJnYnguYiwgXCIpXCIpO1xuICAgIH1cblxuICAgIHZhciByZ2IgPSBjLnJlcGxhY2UoL14ocmdifHJnYmEpXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJykucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpO1xuICAgIHZhciB5aXEgPSAocmdiWzBdICogMjk5ICsgcmdiWzFdICogNTg3ICsgcmdiWzJdICogMTE0KSAvIDEwMDA7XG5cbiAgICBpZiAoeWlxID49IDEyOCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIHNldENzc1ZhcmlhYmxlOiBmdW5jdGlvbiBzZXRDc3NWYXJpYWJsZShwcm9wZXJ0eU5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSk7XG4gICAgfVxuICB9LFxuICBoZXhUb1JnYjogZnVuY3Rpb24gaGV4VG9SZ2IoaGV4KSB7XG4gICAgLy8gRXhwYW5kIHNob3J0aGFuZCBmb3JtIChlLmcuIFwiMDNGXCIpIHRvIGZ1bGwgZm9ybSAoZS5nLiBcIjAwMzNGRlwiKVxuICAgIHZhciBzaG9ydGhhbmRSZWdleCA9IC9eIz8oW2EtZlxcZF0pKFthLWZcXGRdKShbYS1mXFxkXSkkL2k7XG4gICAgaGV4ID0gaGV4LnJlcGxhY2Uoc2hvcnRoYW5kUmVnZXgsIGZ1bmN0aW9uIChtLCByLCBnLCBiKSB7XG4gICAgICByZXR1cm4gciArIHIgKyBnICsgZyArIGIgKyBiO1xuICAgIH0pO1xuICAgIHZhciByZXN1bHQgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KTtcbiAgICByZXR1cm4gcmVzdWx0ID8ge1xuICAgICAgcjogcGFyc2VJbnQocmVzdWx0WzFdLCAxNiksXG4gICAgICBnOiBwYXJzZUludChyZXN1bHRbMl0sIDE2KSxcbiAgICAgIGI6IHBhcnNlSW50KHJlc3VsdFszXSwgMTYpXG4gICAgfSA6IG51bGw7XG4gIH0sXG4gIGdldFZhcmlhYmxlOiBmdW5jdGlvbiBnZXRWYXJpYWJsZShzdHlsZXMsIHByb3BlcnR5TmFtZSkge1xuICAgIHJldHVybiBTdHJpbmcoc3R5bGVzLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKSkudHJpbSgpO1xuICB9LFxuICBjaGFuZ2VDb2xvcjogZnVuY3Rpb24gY2hhbmdlQ29sb3IoY29sb3JJbmljaWFsKSB7XG4gICAgdmFyIGNvbG9yZXMgPSBbJ3ByaW1hcnknLCAnc3VjY2VzcycsICdkYW5nZXInLCAnd2FybmluZycsICdkYXJrJ107XG4gICAgdmFyIGNvbG9yeDtcblxuICAgIGlmIChjb2xvcmVzLmluY2x1ZGVzKGNvbG9ySW5pY2lhbCkpIHtcbiAgICAgIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgICAgIGNvbG9yeCA9IHRoaXMuZ2V0VmFyaWFibGUoc3R5bGUsICctLXZzLScgKyBjb2xvckluaWNpYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoL1tyZ2IoKV0vZy50ZXN0KGNvbG9ySW5pY2lhbCkpIHtcbiAgICAgICAgY29sb3J4ID0gY29sb3JJbmljaWFsLnJlcGxhY2UoL1tyZ2IoKV0vZywgJycpO1xuICAgICAgfSBlbHNlIGlmICgvWyNdL2cudGVzdChjb2xvckluaWNpYWwpKSB7XG4gICAgICAgIHZhciByZ2J4ID0gdGhpcy5oZXhUb1JnYihjb2xvckluaWNpYWwpO1xuICAgICAgICBjb2xvcnggPSBcIlwiLmNvbmNhdChyZ2J4LnIsIFwiLFwiKS5jb25jYXQocmdieC5nLCBcIixcIikuY29uY2F0KHJnYnguYik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xvcnggPSAnLS12cy0nICsgY29sb3JJbmljaWFsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb2xvcng7IC8vIHRoaXMuc2V0Q3NzVmFyaWFibGUoJy0tdnMtJytjbGF2ZSxjb2xvcngpXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNCdXR0b24vdnNCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0J1dHRvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc0J1dHRvbicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgdHlwZToge1xuICAgICAgZGVmYXVsdDogJ2ZpbGxlZCcsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGNvbG9yOiB7XG4gICAgICBkZWZhdWx0OiAncHJpbWFyeScsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHRleHRDb2xvcjoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgbGluZU9yaWdpbjoge1xuICAgICAgZGVmYXVsdDogJ2NlbnRlcicsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGxpbmVQb3NpdGlvbjoge1xuICAgICAgZGVmYXVsdDogJ2JvdHRvbScsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGdyYWRpZW50RGlyZWN0aW9uOiB7XG4gICAgICBkZWZhdWx0OiAnMzBkZWcnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBncmFkaWVudENvbG9yU2Vjb25kYXJ5OiB7XG4gICAgICBkZWZhdWx0OiAncHJpbWFyeScsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGljb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnXG4gICAgfSxcbiAgICBpY29uQWZ0ZXI6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgcmFkaXVzOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHRvOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IFN0cmluZyB8IE9iamVjdFxuICAgIH0sXG4gICAgaHJlZjoge1xuICAgICAgZGVmYXVsdDogJycsXG4gICAgICB0eXBlOiBTdHJpbmcgfCBPYmplY3RcbiAgICB9LFxuICAgIHRhcmdldDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXVxuICAgIH0sXG4gICAgYnV0dG9uOiB7XG4gICAgICBkZWZhdWx0OiAnYnV0dG9uJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNBY3RpdmU6IGZhbHNlLFxuICAgICAgaG92ZXJ4OiBmYWxzZSxcbiAgICAgIGxlZnRCYWNrZ29ydW5kOiAyMCxcbiAgICAgIHRvcEJhY2tnb3J1bmQ6IDIwLFxuICAgICAgcmFkaW86IDAsXG4gICAgICB0aW1lOiAwLjMsXG4gICAgICB0aW1lT3BhY2l0eTogMC4zLFxuICAgICAgb3BhY2l0eTogMVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgbGlzdGVuZXJzOiBmdW5jdGlvbiBsaXN0ZW5lcnMoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7fSwgdGhpcy4kbGlzdGVuZXJzLCB7XG4gICAgICAgIGNsaWNrOiBmdW5jdGlvbiBjbGljayhldmVudCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5jbGlja0J1dHRvbihldmVudCk7XG4gICAgICAgIH0sXG4gICAgICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoZXZlbnQpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuYmx1ckJ1dHRvbihldmVudCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1vdXNlb3ZlcjogZnVuY3Rpb24gbW91c2VvdmVyKGV2ZW50KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLm1vdXNlb3ZlcngoZXZlbnQpO1xuICAgICAgICB9LFxuICAgICAgICBtb3VzZW91dDogZnVuY3Rpb24gbW91c2VvdXQoZXZlbnQpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMubW91c2VvdXR4KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBzdHlsZXM6IGZ1bmN0aW9uIHN0eWxlcygpIHtcbiAgICAgIGlmICh0aGlzLmlzKCdmaWxsZWQnKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbG9yOiB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLnRleHRDb2xvciwgMSksXG4gICAgICAgICAgYmFja2dyb3VuZDogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSksXG4gICAgICAgICAgYm94U2hhZG93OiB0aGlzLmhvdmVyeCA/IFwiMHB4IDhweCAyNXB4IC04cHggXCIuY29uY2F0KHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpKSA6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pcygnYm9yZGVyJykgfHwgdGhpcy5pcygnZmxhdCcpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYm9yZGVyOiBcIlwiLmNvbmNhdCh0aGlzLmlzKCdmbGF0JykgPyAwIDogMSwgXCJweCBzb2xpZCBcIikuY29uY2F0KHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpKSxcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLmhvdmVyeCA/IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIC4xKSA6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgY29sb3I6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMudGV4dENvbG9yLCAxKSB8fCB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzKCdsaW5lJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xvcjogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy50ZXh0Q29sb3IsIDEpIHx8IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpLFxuICAgICAgICAgIGJvcmRlckJvdHRvbVdpZHRoOiB0aGlzLmxpbmVQb3NpdGlvbiA9PSAnYm90dG9tJyA/IFwiMnB4XCIgOiBudWxsLFxuICAgICAgICAgIGJvcmRlckNvbG9yOiBcIlwiLmNvbmNhdCh1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAuMikpLFxuICAgICAgICAgIGJvcmRlclRvcFdpZHRoOiB0aGlzLmxpbmVQb3NpdGlvbiA9PSAndG9wJyA/IFwiMnB4XCIgOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXMoJ2dyYWRpZW50JykpIHtcbiAgICAgICAgdmFyIGJhY2tncm91bmR4ID0gXCJsaW5lYXItZ3JhZGllbnQoXCIuY29uY2F0KHRoaXMuZ3JhZGllbnREaXJlY3Rpb24sIFwiLCBcIikuY29uY2F0KHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IpLCBcIiAwJSwgXCIpLmNvbmNhdCh1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmdyYWRpZW50Q29sb3JTZWNvbmRhcnksIDEpLCBcIiAxMDAlKVwiKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5keFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzKCdyZWxpZWYnKSkge1xuICAgICAgICB2YXIgY29sb3IgPSB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpLFxuICAgICAgICAgIGJveFNoYWRvdzogXCIwIDNweCAwIDAgXCIuY29uY2F0KHV0aWxzX2NvbG9yLmRhcmtlbihjb2xvciwgLTAuNCkpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBzdHlsZXNCYWNrR3JvdW5kOiBmdW5jdGlvbiBzdHlsZXNCYWNrR3JvdW5kKCkge1xuICAgICAgdmFyIHN0eWxlcyA9IHtcbiAgICAgICAgYmFja2dyb3VuZDogdGhpcy5pcygnZmxhdCcpIHx8IHRoaXMuaXMoJ2JvcmRlcicpID8gdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSwgZmFsc2UpIDogbnVsbCxcbiAgICAgICAgb3BhY2l0eTogdGhpcy5vcGFjaXR5LFxuICAgICAgICBsZWZ0OiBcIlwiLmNvbmNhdCh0aGlzLmxlZnRCYWNrZ29ydW5kLCBcInB4XCIpLFxuICAgICAgICB0b3A6IFwiXCIuY29uY2F0KHRoaXMudG9wQmFja2dvcnVuZCwgXCJweFwiKSxcbiAgICAgICAgd2lkdGg6IFwiXCIuY29uY2F0KHRoaXMucmFkaW8sIFwicHhcIiksXG4gICAgICAgIGhlaWdodDogXCJcIi5jb25jYXQodGhpcy5yYWRpbywgXCJweFwiKSxcbiAgICAgICAgdHJhbnNpdGlvbjogXCJ3aWR0aCBcIi5jb25jYXQodGhpcy50aW1lLCBcInMgZWFzZSwgaGVpZ2h0IFwiKS5jb25jYXQodGhpcy50aW1lLCBcInMgZWFzZSwgb3BhY2l0eSBcIikuY29uY2F0KHRoaXMudGltZU9wYWNpdHksIFwicyBlYXNlXCIpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHN0eWxlcztcbiAgICB9LFxuICAgIHN0eWxlTGluZTogZnVuY3Rpb24gc3R5bGVMaW5lKCkge1xuICAgICAgdmFyIGxpbmVPcmlnaW4gPSAnNTAlJztcblxuICAgICAgaWYgKHRoaXMubGluZU9yaWdpbiA9PSAnbGVmdCcpIHtcbiAgICAgICAgbGluZU9yaWdpbiA9ICcwJSc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGluZU9yaWdpbiA9PSAncmlnaHQnKSB7XG4gICAgICAgIGxpbmVPcmlnaW4gPSAnYXV0byc7XG4gICAgICB9XG5cbiAgICAgIHZhciBzdHlsZXMgPSB7XG4gICAgICAgIHRvcDogdGhpcy5saW5lUG9zaXRpb24gPT0gJ3RvcCcgPyAnLTJweCcgOiAnYXV0bycsXG4gICAgICAgIGJvdHRvbTogdGhpcy5saW5lUG9zaXRpb24gPT0gJ2JvdHRvbScgPyAnLTJweCcgOiAnYXV0bycsXG4gICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpLFxuICAgICAgICBsZWZ0OiBsaW5lT3JpZ2luLFxuICAgICAgICByaWdodDogbGluZU9yaWdpbiA9PSAnYXV0bycgPyAnMHB4JyA6IG51bGwsXG4gICAgICAgIHRyYW5zZm9ybTogbGluZU9yaWdpbiA9PSAnNTAlJyA/ICd0cmFuc2xhdGUoLTUwJSknIDogbnVsbFxuICAgICAgfTtcbiAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgaXNSVEw6IGZ1bmN0aW9uIGlzUlRMKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcy4kdnMucnRsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgPT09ICdsZWZ0Jykge1xuICAgICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICByb3V0ZXJQdXNoOiBmdW5jdGlvbiByb3V0ZXJQdXNoKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHRoaXMudG8pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgX3RoaXMyLiRlbWl0KFwicm91dGVFcnJcIiwgZXJyKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgaXM6IGZ1bmN0aW9uIGlzKHdoaWNoKSB7XG4gICAgICB2YXIgdHlwZSA9IHRoaXMudHlwZTtcbiAgICAgIHJldHVybiB0eXBlID09IHdoaWNoO1xuICAgIH0sXG4gICAgbW91c2VvdmVyeDogZnVuY3Rpb24gbW91c2VvdmVyeChldmVudCkge1xuICAgICAgdGhpcy4kZW1pdCgnbW91c2VvdmVyJywgZXZlbnQpO1xuICAgICAgdGhpcy5ob3ZlcnggPSB0cnVlO1xuICAgIH0sXG4gICAgbW91c2VvdXR4OiBmdW5jdGlvbiBtb3VzZW91dHgoZXZlbnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ21vdXNlb3V0JywgZXZlbnQpO1xuICAgICAgdGhpcy5ob3ZlcnggPSBmYWxzZTtcbiAgICB9LFxuICAgIGJsdXJCdXR0b246IGZ1bmN0aW9uIGJsdXJCdXR0b24oZXZlbnQpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRlbWl0KCdibHVyJywgZXZlbnQpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09ICdib3JkZXInIHx8IHRoaXMudHlwZSA9PSAnZmxhdCcpIHtcbiAgICAgICAgdGhpcy5vcGFjaXR5ID0gMDtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLnJhZGlvID0gMDtcbiAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xpY2tCdXR0b246IGZ1bmN0aW9uIGNsaWNrQnV0dG9uKGV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgdGhpcy4kZW1pdCgnY2xpY2snLCBldmVudCk7XG5cbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudG8pIHtcbiAgICAgICAgdGhpcy5yb3V0ZXJQdXNoKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhyZWYpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhyZWYgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLnRhcmdldCA/IHdpbmRvdy5vcGVuKHRoaXMuaHJlZikgOiB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuaHJlZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnRhcmdldCA/IHdpbmRvdy5vcGVuKHRoaXMuaHJlZi51cmwpIDogd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmhyZWYudXJsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgdmFyIGJ0biA9IHRoaXMuJHJlZnMuYnRuO1xuICAgICAgdmFyIHhFdmVudCA9IGV2ZW50Lm9mZnNldFg7XG4gICAgICB2YXIgeUV2ZW50ID0gZXZlbnQub2Zmc2V0WTtcbiAgICAgIHZhciByYWRpbyA9IGJ0bi5jbGllbnRXaWR0aCAqIDM7XG4gICAgICB0aGlzLnRpbWUgPSBidG4uY2xpZW50V2lkdGggLyAoYnRuLmNsaWVudFdpZHRoICsgKHRoaXMuaXMoJ2JvcmRlcicpIHx8IHRoaXMuaXMoJ2ZsYXQnKSA/IDcwIDogMjApKTtcblxuICAgICAgaWYgKHRoaXMuaXMoJ2ZpbGxlZCcpKSB7XG4gICAgICAgIHRoaXMudGltZU9wYWNpdHkgPSB0aGlzLnRpbWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5zcmNFbGVtZW50ID8gZXZlbnQuc3JjRWxlbWVudCAhPSBidG4gOiBmYWxzZSkge1xuICAgICAgICB4RXZlbnQgKz0gZXZlbnQudGFyZ2V0Lm9mZnNldExlZnQ7XG4gICAgICAgIHlFdmVudCArPSBldmVudC50YXJnZXQub2Zmc2V0VG9wO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlZnRCYWNrZ29ydW5kID0geEV2ZW50O1xuICAgICAgdGhpcy50b3BCYWNrZ29ydW5kID0geUV2ZW50O1xuICAgICAgdGhpcy5yYWRpbyA9IHJhZGlvO1xuXG4gICAgICBpZiAodGhpcy5pcygnZmlsbGVkJykpIHtcbiAgICAgICAgdGhpcy5vcGFjaXR5ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3BhY2l0eSA9IDE7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzKCdmaWxsZWQnKSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczQudGltZSA9IF90aGlzNC50aW1lT3BhY2l0eSA9IF90aGlzNC5yYWRpbyA9IDA7XG4gICAgICAgICAgX3RoaXM0Lm9wYWNpdHkgPSAxO1xuICAgICAgICAgIF90aGlzNC5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLnRpbWUgKiAxMTAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzNC50aW1lT3BhY2l0eSA9IC4xNTtcbiAgICAgICAgfSwgdGhpcy50aW1lICogMTEwMCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpc0NvbG9yOiBmdW5jdGlvbiBpc0NvbG9yKCkge1xuICAgICAgcmV0dXJuIHV0aWxzX2NvbG9yLmlzQ29sb3IodGhpcy5jb2xvcik7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNCdXR0b24vdnNCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQnV0dG9uX3ZzQnV0dG9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzQnV0dG9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1xuLyogZ2xvYmFscyBfX1ZVRV9TU1JfQ09OVEVYVF9fICovXG5cbi8vIElNUE9SVEFOVDogRG8gTk9UIHVzZSBFUzIwMTUgZmVhdHVyZXMgaW4gdGhpcyBmaWxlIChleGNlcHQgZm9yIG1vZHVsZXMpLlxuLy8gVGhpcyBtb2R1bGUgaXMgYSBydW50aW1lIHV0aWxpdHkgZm9yIGNsZWFuZXIgY29tcG9uZW50IG1vZHVsZSBvdXRwdXQgYW5kIHdpbGxcbi8vIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCB3ZWJwYWNrIHVzZXIgYnVuZGxlLlxuXG5mdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICBzY3JpcHRFeHBvcnRzLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZnVuY3Rpb25hbFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIsIC8qIHNlcnZlciBvbmx5ICovXG4gIHNoYWRvd01vZGUgLyogdnVlLWNsaSBvbmx5ICovXG4pIHtcbiAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnNcbiAgICA6IHNjcmlwdEV4cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChyZW5kZXIpIHtcbiAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zXG4gICAgb3B0aW9ucy5fY29tcGlsZWQgPSB0cnVlXG4gIH1cblxuICAvLyBmdW5jdGlvbmFsIHRlbXBsYXRlXG4gIGlmIChmdW5jdGlvbmFsVGVtcGxhdGUpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uYWwgPSB0cnVlXG4gIH1cblxuICAvLyBzY29wZWRJZFxuICBpZiAoc2NvcGVJZCkge1xuICAgIG9wdGlvbnMuX3Njb3BlSWQgPSAnZGF0YS12LScgKyBzY29wZUlkXG4gIH1cblxuICB2YXIgaG9va1xuICBpZiAobW9kdWxlSWRlbnRpZmllcikgeyAvLyBzZXJ2ZXIgYnVpbGRcbiAgICBob29rID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIC8vIDIuMyBpbmplY3Rpb25cbiAgICAgIGNvbnRleHQgPVxuICAgICAgICBjb250ZXh0IHx8IC8vIGNhY2hlZCBjYWxsXG4gICAgICAgICh0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0KSB8fCAvLyBzdGF0ZWZ1bFxuICAgICAgICAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuJHZub2RlICYmIHRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0KSAvLyBmdW5jdGlvbmFsXG4gICAgICAvLyAyLjIgd2l0aCBydW5Jbk5ld0NvbnRleHQ6IHRydWVcbiAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX19cbiAgICAgIH1cbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgc3R5bGVzXG4gICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIGNvbnRleHQpXG4gICAgICB9XG4gICAgICAvLyByZWdpc3RlciBjb21wb25lbnQgbW9kdWxlIGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVycmVuY2VcbiAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7XG4gICAgICAgIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVyKVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZVxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXG4gICAgb3B0aW9ucy5fc3NyUmVnaXN0ZXIgPSBob29rXG4gIH0gZWxzZSBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgaG9vayA9IHNoYWRvd01vZGVcbiAgICAgID8gZnVuY3Rpb24gKCkgeyBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCB0aGlzLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3QpIH1cbiAgICAgIDogaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIGZvciB0ZW1wbGF0ZS1vbmx5IGhvdC1yZWxvYWQgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHJlbmRlciBmbiBkb2Vzbid0XG4gICAgICAvLyBnbyB0aHJvdWdoIHRoZSBub3JtYWxpemVyXG4gICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rXG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb2FsIGNvbXBvbmVudCBpbiB2dWUgZmlsZVxuICAgICAgdmFyIG9yaWdpbmFsUmVuZGVyID0gb3B0aW9ucy5yZW5kZXJcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uIChoLCBjb250ZXh0KSB7XG4gICAgICAgIGhvb2suY2FsbChjb250ZXh0KVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZW5kZXIoaCwgY29udGV4dClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIHZhciBleGlzdGluZyA9IG9wdGlvbnMuYmVmb3JlQ3JlYXRlXG4gICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nXG4gICAgICAgID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKVxuICAgICAgICA6IFtob29rXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0J1dHRvbi92c0J1dHRvbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzQnV0dG9uX3ZzQnV0dG9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0J1dHRvbiA9IChjb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQnV0dG9uL2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzQnV0dG9uID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c0J1dHRvbi5uYW1lLCB2c0J1dHRvbik7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzU2VsZWN0L3ZzU2VsZWN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMzM5MzEwZSZsYW5nPWh0bWwmXG52YXIgdnNTZWxlY3R2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMzM5MzEwZV9sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24tc2VsZWN0XCIsY2xhc3M6e1xuICAgICdhdXRvY29tcGxldGV4Jzpfdm0uYXV0b2NvbXBsZXRlLFxuICAgICdhY3RpdmVPcHRpb25zJzpfdm0uYWN0aXZlLFxuICAgICdpbnB1dC1zZWxlY3QtdmFsaWRhdGUtc3VjY2Vzcyc6X3ZtLnN1Y2Nlc3MsXG4gICAgJ2lucHV0LXNlbGVjdC12YWxpZGF0ZS1kYW5nZXInOl92bS5kYW5nZXIsXG4gICAgJ2lucHV0LXNlbGVjdC12YWxpZGF0ZS13YXJuaW5nJzpfdm0ud2FybmluZ30sc3R5bGU6KF92bS5nZXRXaWR0aCl9LFsoX3ZtLmxhYmVsKT9fYygnbGFiZWwnLHtyZWY6XCJpbnB1dFNlbGVjdExhYmVsXCIsc3RhdGljQ2xhc3M6XCJ2cy1zZWxlY3QtLWxhYmVsXCIsYXR0cnM6e1wiZm9yXCI6XCJcIn19LFtfdm0uX3YoX3ZtLl9zKF92bS5sYWJlbCkpXSk6X3ZtLl9lKCksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiaW5wdXQtc2VsZWN0LWNvblwifSxbX2MoJ2lucHV0Jyxfdm0uX2coX3ZtLl9iKHtyZWY6XCJpbnB1dHNlbGVjdFwiLHN0YXRpY0NsYXNzOlwiaW5wdXQtc2VsZWN0IHZzLXNlbGVjdC0taW5wdXRcIixhdHRyczp7XCJyZWFkb25seVwiOiFfdm0uYXV0b2NvbXBsZXRlLFwidHlwZVwiOlwidGV4dFwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO30sXCJrZXlkb3duXCI6ZnVuY3Rpb24oJGV2ZW50KXtpZighJGV2ZW50LnR5cGUuaW5kZXhPZigna2V5JykmJl92bS5faygkZXZlbnQua2V5Q29kZSxcImVzY1wiLDI3LCRldmVudC5rZXksW1wiRXNjXCIsXCJFc2NhcGVcIl0pKXsgcmV0dXJuIG51bGw7IH0kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5jbG9zZU9wdGlvbnMoJGV2ZW50KX19fSwnaW5wdXQnLF92bS4kYXR0cnMsZmFsc2UpLF92bS5saXN0ZW5lcnMpKSxfYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJpY29uLXNlbGVjdC1jbGVhciB2cy1zZWxlY3QtLWljb24tY2xlYXJcIixjbGFzczp7J2FjdGl2ZUJ0bkNsZWFyJzogX3ZtLmFjdGl2ZUJ0bkNsZWFyfSxvbjp7XCJjbGlja1wiOl92bS5jbGVhclZhbHVlfX0sW19jKCdpJyx7c3RhdGljQ2xhc3M6XCJtYXRlcmlhbC1pY29uc1wifSxbX3ZtLl92KFwiIGNsb3NlIFwiKV0pXSksKCFfdm0uYWN0aXZlQnRuQ2xlYXIpP19jKCd2cy1pY29uJyx7c3RhdGljQ2xhc3M6XCJpY29uLXNlbGVjdCB2cy1zZWxlY3QtLWljb25cIixhdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLmljb259LG9uOntcIn5jbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7fX19KTpfdm0uX2UoKSxfYygndHJhbnNpdGlvbicse2F0dHJzOntcIm5hbWVcIjpcImZhZGVzZWxlY3RcIn19LFtfYygnZGl2Jyx7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOihfdm0uYWN0aXZlKSxleHByZXNzaW9uOlwiYWN0aXZlXCJ9XSxyZWY6XCJ2c1NlbGVjdE9wdGlvbnNcIixzdGF0aWNDbGFzczpcInZzLXNlbGVjdC0tb3B0aW9uc1wiLGNsYXNzOlsoXCJ2cy1zZWxlY3QtXCIgKyBfdm0uY29sb3IpLHsnc2Nyb2xseCc6X3ZtLnNjcm9sbHh9XSxzdHlsZTooX3ZtLmNvcmRzKX0sW19jKCd1bCcse3JlZjpcInVseFwifSxbX3ZtLl90KFwiZGVmYXVsdFwiKV0sMiksX2MoJ3VsJyx7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOihfdm0uY2xlYXIpLGV4cHJlc3Npb246XCJjbGVhclwifV19LFtfYygnbGknLHtvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLmZpbHRlckl0ZW1zKCcnKSxfdm0uY2hhbmdlVmFsdWUoKX19fSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0ubm9EYXRhKStcIiBcIildKV0pXSldKV0sMSksX2MoJ3RyYW5zaXRpb24tZ3JvdXAnLHtvbjp7XCJiZWZvcmUtZW50ZXJcIjpfdm0uYmVmb3JlRW50ZXIsXCJlbnRlclwiOl92bS5lbnRlcixcImxlYXZlXCI6X3ZtLmxlYXZlfX0sWyhfdm0uc3VjY2Vzcyk/X2MoJ2Rpdicse2tleTpcInN1Y2Nlc3NcIixzdGF0aWNDbGFzczpcImNvbi10ZXh0LXZhbGlkYXRpb25cIn0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJzcGFuLXRleHQtdmFsaWRhdGlvbiBzcGFuLXRleHQtdmFsaWRhdGlvbi1zdWNjZXNzXCJ9LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS5zdWNjZXNzVGV4dCkrXCIgXCIpXSldKTooX3ZtLmRhbmdlcik/X2MoJ2Rpdicse2tleTpcImRhbmdlclwiLHN0YXRpY0NsYXNzOlwiY29uLXRleHQtdmFsaWRhdGlvbiBzcGFuLXRleHQtdmFsaWRhdGlvbi1kYW5nZXJcIn0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJzcGFuLXRleHQtdmFsaWRhdGlvblwifSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0uZGFuZ2VyVGV4dCkrXCIgXCIpXSldKTooX3ZtLndhcm5pbmcpP19jKCdkaXYnLHtrZXk6XCJ3YXJuaW5nXCIsc3RhdGljQ2xhc3M6XCJjb24tdGV4dC12YWxpZGF0aW9uIHNwYW4tdGV4dC12YWxpZGF0aW9uLXdhcm5pbmdcIn0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJzcGFuLXRleHQtdmFsaWRhdGlvblwifSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0ud2FybmluZ1RleHQpK1wiIFwiKV0pXSk6X3ZtLl9lKCksKF92bS5kZXNjcmlwdGlvblRleHQpP19jKCdkaXYnLHtrZXk6XCJkZXNjcmlwdGlvblwiLHN0YXRpY0NsYXNzOlwiY29uLXRleHQtdmFsaWRhdGlvbiBzcGFuLXRleHQtdmFsaWRhdGlvblwifSxbX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInNwYW4tdGV4dC12YWxpZGF0aW9uXCJ9LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS5kZXNjcmlwdGlvblRleHQpK1wiIFwiKV0pXSk6X3ZtLl9lKCldKV0sMSl9XG52YXIgdnNTZWxlY3R2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMzM5MzEwZV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2VsZWN0L3ZzU2VsZWN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMzM5MzEwZSZsYW5nPWh0bWwmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluZGV4LW9mLmpzXG52YXIgZXNfYXJyYXlfaW5kZXhfb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOGNhYVwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzXG52YXIgZXNfYXJyYXlfbWFwID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjk1NmJcIik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qc1xudmFyIGVzX2FycmF5X3NwbGljZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0NjY1XCIpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanNcbnZhciBlc19udW1iZXJfY29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzAxMVwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qc1xudmFyIGVzX29iamVjdF90b19zdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTQyOFwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzXG52YXIgZXNfc3RyaW5nX2luY2x1ZGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImMxOGNcIik7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aG91dEhvbGVzLmpzXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyMltpXSA9IGFycltpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfVxufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzXG5cblxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gIHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qc1xuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanNcbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHtcbiAgaWYgKCEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcnIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBfYXJyID0gW107XG4gIHZhciBfbiA9IHRydWU7XG4gIHZhciBfZCA9IGZhbHNlO1xuICB2YXIgX2UgPSB1bmRlZmluZWQ7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7XG4gICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfZCA9IHRydWU7XG4gICAgX2UgPSBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gX2Fycjtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlUmVzdC5qc1xuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG59XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5LmpzXG5cblxuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3V0aWxzL2luZGV4LmpzXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB1dGlscyA9ICh7XG4gIGluc2VydEJvZHk6IGZ1bmN0aW9uIGluc2VydEJvZHkoZWx4LCBwYXJlbnQpIHtcbiAgICB2YXIgYm9keXggPSBwYXJlbnQgPyBwYXJlbnQgOiBkb2N1bWVudC5ib2R5O1xuICAgIGJvZHl4Lmluc2VydEJlZm9yZShlbHgsIGJvZHl4LmZpcnN0Q2hpbGQpO1xuICB9LFxuICByZW1vdmVCb2R5OiBmdW5jdGlvbiByZW1vdmVCb2R5KGVsZW1lbnQsIHBhcmVudCkge1xuICAgIHZhciBib2R5eCA9IHBhcmVudCA/IHBhcmVudCA6IGRvY3VtZW50LmJvZHk7XG4gICAgYm9keXgucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gIH0sXG4gIGNoYW5nZVBvc2l0aW9uOiBmdW5jdGlvbiBjaGFuZ2VQb3NpdGlvbihlbHgsIGNvbnRlbnQsIGNvbmRpdGlvbmFsKSB7XG4gICAgdmFyIHRvcHggPSAwO1xuICAgIHZhciBsZWZ0eCA9IDA7XG4gICAgdmFyIHdpZHRoeCA9IDA7XG4gICAgdmFyIHNjcm9sbFRvcHggPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcblxuICAgIGlmIChlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgMzAwID49IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChjb25kaXRpb25hbCkge1xuICAgICAgICAgIHRvcHggPSBlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gY29udGVudC5jbGllbnRIZWlnaHQgKyBzY3JvbGxUb3B4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRvcHggPSBlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gY29udGVudC5jbGllbnRIZWlnaHQgKyBlbHguY2xpZW50SGVpZ2h0ICsgc2Nyb2xsVG9weDtcbiAgICAgICAgfVxuICAgICAgfSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvcHggPSBjb25kaXRpb25hbCA/IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBlbHguY2xpZW50SGVpZ2h0ICsgc2Nyb2xsVG9weCArIDUgOiBlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgc2Nyb2xsVG9weDtcbiAgICB9XG5cbiAgICBsZWZ0eCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgIHdpZHRoeCA9IGVseC5vZmZzZXRXaWR0aDtcbiAgICB2YXIgY29yZHMgPSB7XG4gICAgICBsZWZ0OiBcIlwiLmNvbmNhdChsZWZ0eCwgXCJweFwiKSxcbiAgICAgIHRvcDogXCJcIi5jb25jYXQodG9weCwgXCJweFwiKSxcbiAgICAgIHdpZHRoOiBcIlwiLmNvbmNhdCh3aWR0aHgsIFwicHhcIilcbiAgICB9O1xuICAgIHJldHVybiBjb3JkcztcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1NlbGVjdC92c1NlbGVjdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmZ1bmN0aW9uIHZzU2VsZWN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gdnNTZWxlY3R2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgdnNTZWxlY3R2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IHZzU2VsZWN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTZWxlY3R2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiBcIlZzU2VsZWN0XCIsXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHt9LFxuICAgIG5vRGF0YToge1xuICAgICAgZGVmYXVsdDogXCJkYXRhIG5vIGF2YWlsYWJsZVwiLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBtYXhTZWxlY3RlZDoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ11cbiAgICB9LFxuICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgZGVmYXVsdDogXCJwcmltYXJ5XCIsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIG11bHRpcGxlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIGxhYmVsOiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogW1N0cmluZ11cbiAgICB9LFxuICAgIHN1Y2Nlc3M6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgZGFuZ2VyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHdhcm5pbmc6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgc3VjY2Vzc1RleHQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGRhbmdlclRleHQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHdhcm5pbmdUZXh0OiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvblRleHQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICBkZWZhdWx0OiBcIm1hdGVyaWFsLWljb25zXCIsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHQ6IFwia2V5Ym9hcmRfYXJyb3dfZG93blwiLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBpY29uQ2xlYXI6IHtcbiAgICAgIGRlZmF1bHQ6IFwiY2xvc2VcIixcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgd2lkdGg6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlRmlsdGVyOiBcIlwiLFxuICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgIHZhbHVleDogXCJcIixcbiAgICAgIGNsZWFyOiBmYWxzZSxcbiAgICAgIHNjcm9sbHg6IGZhbHNlLFxuICAgICAgY29yZHM6IHt9LFxuICAgICAgZmlsdGVyeDogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGFjdGl2ZUJ0bkNsZWFyOiBmdW5jdGlvbiBhY3RpdmVCdG5DbGVhcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZSAmJiB0aGlzLmZpbHRlcng7XG4gICAgfSxcbiAgICBnZXRXaWR0aDogZnVuY3Rpb24gZ2V0V2lkdGgoKSB7XG4gICAgICByZXR1cm4gdGhpcy53aWR0aCA/IFwid2lkdGg6XCIuY29uY2F0KHRoaXMud2lkdGgsIFwiO1wiKSA6IG51bGw7XG4gICAgfSxcbiAgICBwYXJlbnQ6IGZ1bmN0aW9uIHBhcmVudCgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgbGlzdGVuZXJzOiBmdW5jdGlvbiBsaXN0ZW5lcnMoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gdnNTZWxlY3R2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vYmplY3RTcHJlYWQoe30sIHRoaXMuJGxpc3RlbmVycywge1xuICAgICAgICBibHVyOiBmdW5jdGlvbiBibHVyKGV2ZW50KSB7XG4gICAgICAgICAgaWYgKF90aGlzLmF1dG9jb21wbGV0ZSAmJiBldmVudC5yZWxhdGVkVGFyZ2V0ID8gIWV2ZW50LnJlbGF0ZWRUYXJnZXQuY2xvc2VzdChcIi52cy1zZWxlY3QtLW9wdGlvbnNcIikgOiBmYWxzZSkge1xuICAgICAgICAgICAgX3RoaXMuY2xvc2VPcHRpb25zKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMuJGVtaXQoXCJibHVyXCIsIGV2ZW50KTtcbiAgICAgICAgfSxcbiAgICAgICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKGV2ZW50KSB7XG4gICAgICAgICAgX3RoaXMuJGVtaXQoXCJmb2N1c1wiLCBldmVudCk7IC8vZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLHRoaXMuY2xpY2tCbHVyKVxuXG5cbiAgICAgICAgICBfdGhpcy5mb2N1cyhldmVudCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlucHV0OiBmdW5jdGlvbiBpbnB1dChldmVudCkge1xuICAgICAgICAgIGlmIChfdGhpcy5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgICAgIF90aGlzLiRlbWl0KFwiaW5wdXQtY2hhbmdlXCIsIGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGtleXVwOiBmdW5jdGlvbiBrZXl1cChldmVudCkge1xuICAgICAgICAgIGlmIChldmVudC5rZXkgPT0gXCJBcnJvd0Rvd25cIiB8fCBldmVudC5rZXkgPT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZHJlbnMgPSBfdGhpcy4kY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtLnZpc2libGU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2hpbGRyZW5zWzBdLiRlbC5xdWVyeVNlbGVjdG9yKFwiLnZzLXNlbGVjdC0taXRlbVwiKS5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMuYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgICAgICAgIF90aGlzLmZpbHRlckl0ZW1zKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMuJGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgaXRlbS52YWx1ZUlucHV0eCA9IF90aGlzLiRyZWZzLmlucHV0c2VsZWN0LnZhbHVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKGV2ZW50KSB7XG4gICAgICB0aGlzLnZhbHVleCA9IHRoaXMudmFsdWU7XG4gICAgICB0aGlzLiRlbWl0KFwiY2hhbmdlXCIsIGV2ZW50KTtcbiAgICB9LFxuICAgIGFjdGl2ZTogZnVuY3Rpb24gYWN0aXZlKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzMi5hY3RpdmUpIHtcbiAgICAgICAgICB1dGlscy5pbnNlcnRCb2R5KF90aGlzMi4kcmVmcy52c1NlbGVjdE9wdGlvbnMpO1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMyLiRjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgIGlmIChpdGVtLmZvY3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpdGVtLmZvY3VzVmFsdWUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChfdGhpczIuJHJlZnMudWx4LnNjcm9sbEhlaWdodCA+PSAyNjApIF90aGlzMi5zY3JvbGx4ID0gdHJ1ZTtcbiAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBfZG9jdW1lbnQkZ2V0RWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIiksXG4gICAgICAgICAgICAgIF9kb2N1bWVudCRnZXRFbGVtZW50czIgPSBfc2xpY2VkVG9BcnJheShfZG9jdW1lbnQkZ2V0RWxlbWVudHMsIDEpLFxuICAgICAgICAgICAgICBwYXJlbnQgPSBfZG9jdW1lbnQkZ2V0RWxlbWVudHMyWzBdO1xuXG4gICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKF90aGlzMi4kcmVmcy52c1NlbGVjdE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgLy8gdGhpcy4kcmVmcy5pbnB1dHNlbGVjdC52YWx1ZSA9IHRoaXMudmFsdWVcbiAgICB0aGlzLmNoYW5nZVZhbHVlKCk7XG5cbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgIHV0aWxzLmluc2VydEJvZHkodGhpcy4kcmVmcy52c1NlbGVjdE9wdGlvbnMpO1xuICAgIH1cbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB2YXIgX2RvY3VtZW50JGdldEVsZW1lbnRzMyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKSxcbiAgICAgICAgX2RvY3VtZW50JGdldEVsZW1lbnRzNCA9IF9zbGljZWRUb0FycmF5KF9kb2N1bWVudCRnZXRFbGVtZW50czMsIDEpLFxuICAgICAgICBwYXJlbnQgPSBfZG9jdW1lbnQkZ2V0RWxlbWVudHM0WzBdO1xuXG4gICAgaWYgKHBhcmVudCAmJiB0aGlzLiRyZWZzLnZzU2VsZWN0T3B0aW9ucyAmJiB0aGlzLiRyZWZzLnZzU2VsZWN0T3B0aW9ucy5wYXJlbnROb2RlID09PSBwYXJlbnQpIHtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLiRyZWZzLnZzU2VsZWN0T3B0aW9ucyk7XG4gICAgfVxuICB9LFxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmUpIHtcbiAgICAgIHRoaXMuY2hhbmdlVmFsdWUoKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBjbGVhclZhbHVlOiBmdW5jdGlvbiBjbGVhclZhbHVlKCkge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgdGhpcy5maWx0ZXJJdGVtcyhcIlwiKTtcbiAgICAgIHRoaXMuY2hhbmdlVmFsdWUoKTtcbiAgICB9LFxuICAgIGFkZE11bHRpcGxlOiBmdW5jdGlvbiBhZGRNdWx0aXBsZSh2YWx1ZSkge1xuICAgICAgdmFyIGN1cnJlbnRWYWx1ZXMgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IFtdO1xuXG4gICAgICBpZiAoY3VycmVudFZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgY3VycmVudFZhbHVlcy5zcGxpY2UoY3VycmVudFZhbHVlcy5pbmRleE9mKHZhbHVlKSwgMSk7XG4gICAgICAgIHRoaXMuJGVtaXQoXCJpbnB1dFwiLCBjdXJyZW50VmFsdWVzKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VWYWx1ZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICAgIHRoaXMuJHJlZnMuaW5wdXRzZWxlY3QuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgICAgY3VycmVudFZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB0aGlzLiRlbWl0KFwiaW5wdXRcIiwgY3VycmVudFZhbHVlcyk7XG4gICAgICAgICAgdGhpcy5maWx0ZXJJdGVtcyhcIlwiKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZVZhbHVlKCk7IC8vIHRoaXMuJHJlZnMuaW5wdXRzZWxlY3QudmFsdWUgKz0gJywnXG5cbiAgICAgICAgICB0aGlzLiRyZWZzLmlucHV0c2VsZWN0LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB0aGlzLiRlbWl0KFwiaW5wdXRcIiwgY3VycmVudFZhbHVlcyk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBmaWx0ZXJJdGVtczogZnVuY3Rpb24gZmlsdGVySXRlbXModmFsdWUpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJ4ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsdGVyeCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgaXRlbXMgPSB0aGlzLiRjaGlsZHJlbjtcbiAgICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaWYgKGl0ZW0uJGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpdGVtcyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoaXRlbXMpLCBfdG9Db25zdW1hYmxlQXJyYXkoaXRlbS4kY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaWYgKCEoXCJ0ZXh0XCIgaW4gaXRlbSkpIHJldHVybjtcbiAgICAgICAgdmFyIHRleHQgPSBpdGVtLnRleHQ7XG5cbiAgICAgICAgaWYgKF90aGlzMy5tdWx0aXBsZSkge1xuICAgICAgICAgIHZhciB2YWx1ZXN4ID0gdmFsdWUuc3BsaXQoXCIsXCIpO1xuICAgICAgICAgIHZhbHVlc3guZm9yRWFjaChmdW5jdGlvbiAodmFsdWVfbXVsdGkpIHtcbiAgICAgICAgICAgIGlmICh0ZXh0LnRvVXBwZXJDYXNlKCkuaW5kZXhPZih2YWx1ZV9tdWx0aS50b1VwcGVyQ2FzZSgpKSA9PSAtMSkge1xuICAgICAgICAgICAgICBpdGVtLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGl0ZW0udmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRleHQudG9VcHBlckNhc2UoKS5pbmRleE9mKHZhbHVlLnRvVXBwZXJDYXNlKCkpID09IC0xKSB7XG4gICAgICAgICAgICBpdGVtLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbS52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIGxlbmd0aHggPSBpdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udmlzaWJsZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobGVuZ3RoeC5sZW5ndGggPT0gMCkge1xuICAgICAgICB0aGlzLmNsZWFyID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2xlYXIgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczMuY29yZHMgPSBfdGhpczMuY2hhbmdlUG9zaXRpb24oKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2hhbmdlVmFsdWU6IGZ1bmN0aW9uIGNoYW5nZVZhbHVlKCkge1xuICAgICAgdGhpcy5maWx0ZXJ4ID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IFtdO1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMuJGNoaWxkcmVuO1xuICAgICAgICBvcHRpb25zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICBpZiAoaXRlbS4kY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkob3B0aW9ucyksIF90b0NvbnN1bWFibGVBcnJheShpdGVtLiRjaGlsZHJlbikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBvcHRpb25zVmFsdWVzID0gW107XG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgb3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtX29wdGlvbikge1xuICAgICAgICAgICAgaWYgKGl0ZW1fb3B0aW9uLnZhbHVlID09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgdmFyIHRleHQgPSBpdGVtX29wdGlvbi50ZXh0O1xuICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKFwiY2hlY2tfY2lyY2xlXCIsIFwiXCIpO1xuICAgICAgICAgICAgICBvcHRpb25zVmFsdWVzLnB1c2godGV4dC50cmltKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy4kcmVmcy5pbnB1dHNlbGVjdC52YWx1ZSA9IG9wdGlvbnNWYWx1ZXMudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLiRyZWZzLmlucHV0c2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy4kcmVmcy5pbnB1dHNlbGVjdC52YWx1ZSA9IHRoaXMudmFsdWV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBmb2N1czogZnVuY3Rpb24gZm9jdXMoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy5zZXRMYWJlbENsYXNzKHRoaXMuJHJlZnMuaW5wdXRTZWxlY3RMYWJlbCwgdHJ1ZSk7XG4gICAgICB2YXIgaW5wdXR4ID0gdGhpcy4kcmVmcy5pbnB1dHNlbGVjdDtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgX3RoaXM0LmNsaWNrQmx1cik7XG4gICAgICB9LCAxMDApO1xuXG4gICAgICBpZiAodGhpcy5hdXRvY29tcGxldGUgJiYgdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXR4LnZhbHVlKSB7XG4gICAgICAgICAgICBfdGhpczQuJHJlZnMuaW5wdXRzZWxlY3QudmFsdWUgPSBpbnB1dHgudmFsdWUgKz0gXCIsXCI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaW5wdXR4LnNlbGVjdGlvblN0YXJ0ID0gaW5wdXR4LnNlbGVjdGlvbkVuZCA9IDEwMDAwO1xuICAgICAgICB9LCAxMCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYXV0b2NvbXBsZXRlICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXRzZWxlY3Quc2VsZWN0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgPyB0aGlzLnZhbHVlLmxlbmd0aCA9PSAwIDogIXRoaXMudmFsdWUgfHwgdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVsID0gX3RoaXM0LiRjaGlsZHJlblswXS4kZWwucXVlcnlTZWxlY3RvcihcIi52cy1zZWxlY3QtLWl0ZW1cIik7XG5cbiAgICAgICAgICAgIGlmIChlbCkgZWwuZm9jdXMoKTtcbiAgICAgICAgICB9LCA1MCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczQuY29yZHMgPSBfdGhpczQuY2hhbmdlUG9zaXRpb24oKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2xpY2tCbHVyOiBmdW5jdGlvbiBjbGlja0JsdXIoZXZlbnQpIHtcbiAgICAgIHZhciBjbG9zZXN0eCA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KFwiLnZzLXNlbGVjdC0tb3B0aW9uc1wiKTtcblxuICAgICAgaWYgKCFjbG9zZXN0eCkge1xuICAgICAgICB0aGlzLmNsb3NlT3B0aW9ucygpO1xuXG4gICAgICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICAgIHRoaXMuZmlsdGVySXRlbXMoXCJcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZVZhbHVlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbG9zZU9wdGlvbnM6IGZ1bmN0aW9uIGNsb3NlT3B0aW9ucygpIHtcbiAgICAgIC8vIHRoaXMuJHJlZnMuaW5wdXRzZWxlY3QuYmx1cigpXG4gICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRMYWJlbENsYXNzKHRoaXMuJHJlZnMuaW5wdXRTZWxlY3RMYWJlbCwgZmFsc2UpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuY2xpY2tCbHVyKTtcbiAgICB9LFxuICAgIGNoYW5nZVBvc2l0aW9uOiBmdW5jdGlvbiBjaGFuZ2VQb3NpdGlvbigpIHtcbiAgICAgIHZhciBlbHggPSB0aGlzLiRyZWZzLmlucHV0c2VsZWN0O1xuICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLiRyZWZzLnZzU2VsZWN0T3B0aW9ucztcbiAgICAgIHZhciBjb25kaXRpb25hbCA9IHRoaXMuYXV0b2NvbXBsZXRlO1xuICAgICAgdmFyIHRvcHggPSAwO1xuICAgICAgdmFyIGxlZnR4ID0gMDtcbiAgICAgIHZhciB3aWR0aHggPSAwO1xuICAgICAgdmFyIHNjcm9sbFRvcHggPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcblxuICAgICAgaWYgKGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBjb250ZW50LnNjcm9sbEhlaWdodCArIDIwID49IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgICB0b3B4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIGVseC5jbGllbnRIZWlnaHQgKyBzY3JvbGxUb3B4IC0gY29udGVudC5zY3JvbGxIZWlnaHQ7XG5cbiAgICAgICAgaWYgKGNvbmRpdGlvbmFsKSB7XG4gICAgICAgICAgdG9weCA9IHRvcHggLSBlbHguY2xpZW50SGVpZ2h0IC0gNTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9weCA9IGNvbmRpdGlvbmFsID8gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIGVseC5jbGllbnRIZWlnaHQgKyBzY3JvbGxUb3B4ICsgNSA6IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxUb3B4O1xuICAgICAgfVxuXG4gICAgICBsZWZ0eCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgd2lkdGh4ID0gZWx4Lm9mZnNldFdpZHRoO1xuICAgICAgdmFyIGNvcmRzID0ge1xuICAgICAgICBsZWZ0OiBcIlwiLmNvbmNhdChsZWZ0eCwgXCJweFwiKSxcbiAgICAgICAgdG9wOiBcIlwiLmNvbmNhdCh0b3B4LCBcInB4XCIpLFxuICAgICAgICB3aWR0aDogXCJcIi5jb25jYXQod2lkdGh4LCBcInB4XCIpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGNvcmRzO1xuICAgIH0sXG4gICAgYmVmb3JlRW50ZXI6IGZ1bmN0aW9uIGJlZm9yZUVudGVyKGVsKSB7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAwO1xuICAgIH0sXG4gICAgZW50ZXI6IGZ1bmN0aW9uIGVudGVyKGVsLCBkb25lKSB7XG4gICAgICB2YXIgaCA9IGVsLnNjcm9sbEhlaWdodDtcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IGggKyBcInB4XCI7XG4gICAgICBkb25lKCk7XG4gICAgfSxcbiAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoZWwpIHtcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IDAgKyBcInB4XCI7XG4gICAgfSxcbiAgICBzZXRMYWJlbENsYXNzOiBmdW5jdGlvbiBzZXRMYWJlbENsYXNzKGxhYmVsLCBmb2N1c2luZykge1xuICAgICAgaWYgKCFsYWJlbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChmb2N1c2luZykge1xuICAgICAgICBsYWJlbC5jbGFzc0xpc3QuYWRkKFwiaW5wdXQtc2VsZWN0LWxhYmVsLVwiICsgdGhpcy5jb2xvciArIFwiLS1hY3RpdmVcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGFiZWwuY2xhc3NMaXN0LnJlbW92ZShcImlucHV0LXNlbGVjdC1sYWJlbC1cIiArIHRoaXMuY29sb3IgKyBcIi0tYWN0aXZlXCIpO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2VsZWN0L3ZzU2VsZWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1NlbGVjdF92c1NlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c1NlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2VsZWN0L3ZzU2VsZWN0LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzU2VsZWN0X2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNTZWxlY3RfdnNTZWxlY3R2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzU2VsZWN0dnVlX3R5cGVfdGVtcGxhdGVfaWRfMDMzOTMxMGVfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNTZWxlY3R2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMzM5MzEwZV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzU2VsZWN0ID0gKHZzU2VsZWN0X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzU2VsZWN0L3ZzU2VsZWN0SXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGYyY2M3YTkmbGFuZz1odG1sJlxudmFyIHZzU2VsZWN0SXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzBmMmNjN2E5X2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdsaScsX3ZtLl9nKHtkaXJlY3RpdmVzOlt7bmFtZTpcInNob3dcIixyYXdOYW1lOlwidi1zaG93XCIsdmFsdWU6KF92bS52aXNpYmxlKSxleHByZXNzaW9uOlwidmlzaWJsZVwifV0sc3RhdGljQ2xhc3M6XCJ2cy1jb21wb25lbnRcIixhdHRyczp7XCJkYXRhLXRleHRcIjpfdm0udGV4dH19LF92bS5saXN0ZW5lcnMpLFtfYygnYnV0dG9uJyxfdm0uX2Ioe3JlZjpcIml0ZW1cIixzdGF0aWNDbGFzczpcInZzLXNlbGVjdC0taXRlbVwiLGNsYXNzOntcbiAgICAgICdhY3RpdmV4Jzpfdm0uJHBhcmVudC5wYXJlbnQubXVsdGlwbGU/X3ZtLmdldFZhbHVlLmluZGV4T2YoX3ZtLnZhbHVlKSAhPSAtMTpfdm0uZ2V0VmFsdWUgPT0gX3ZtLnZhbHVlLFxuICAgICAgJ2Nvbi1pY29uJzpfdm0uJHBhcmVudC5wYXJlbnQubXVsdGlwbGUsXG4gICAgICAnZGlzYWJsZWR4Jzpfdm0uZGlzYWJsZWR4XG4gICAgfSxzdHlsZTooX3ZtLnN0eWxlcyksYXR0cnM6e1wiZGlzYWJsZWRcIjpfdm0uZGlzYWJsZWQsXCJ0eXBlXCI6XCJidXR0b25cIixcIm5hbWVcIjpcImJ1dHRvblwifSxvbjp7XCJrZXlkb3duXCI6W2Z1bmN0aW9uKCRldmVudCl7aWYoISRldmVudC50eXBlLmluZGV4T2YoJ2tleScpJiZfdm0uX2soJGV2ZW50LmtleUNvZGUsXCJiYWNrc3BhY2VcIix1bmRlZmluZWQsJGV2ZW50LmtleSx1bmRlZmluZWQpKXsgcmV0dXJuIG51bGw7IH0kZXZlbnQucHJldmVudERlZmF1bHQoKTtyZXR1cm4gX3ZtLmJhY2tzcGFjZSgkZXZlbnQpfSxmdW5jdGlvbigkZXZlbnQpe2lmKCEkZXZlbnQudHlwZS5pbmRleE9mKCdrZXknKSYmX3ZtLl9rKCRldmVudC5rZXlDb2RlLFwiZG93blwiLDQwLCRldmVudC5rZXksW1wiRG93blwiLFwiQXJyb3dEb3duXCJdKSl7IHJldHVybiBudWxsOyB9JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5uYXZpZ2F0ZU9wdGlvbnMoJ25leHQnKX0sZnVuY3Rpb24oJGV2ZW50KXtpZighJGV2ZW50LnR5cGUuaW5kZXhPZigna2V5JykmJl92bS5faygkZXZlbnQua2V5Q29kZSxcInVwXCIsMzgsJGV2ZW50LmtleSxbXCJVcFwiLFwiQXJyb3dVcFwiXSkpeyByZXR1cm4gbnVsbDsgfSRldmVudC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBfdm0ubmF2aWdhdGVPcHRpb25zKCdwcmV2Jyl9LGZ1bmN0aW9uKCRldmVudCl7aWYoISRldmVudC50eXBlLmluZGV4T2YoJ2tleScpJiZfdm0uX2soJGV2ZW50LmtleUNvZGUsXCJlbnRlclwiLDEzLCRldmVudC5rZXksXCJFbnRlclwiKSl7IHJldHVybiBudWxsOyB9JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5jbGlja09wdGlvbigpfV19fSwnYnV0dG9uJyxfdm0uJGF0dHJzLGZhbHNlKSxbKF92bS4kcGFyZW50LnBhcmVudC5tdWx0aXBsZSk/X2MoJ3ZzLWljb24nLHtzdGF0aWNDbGFzczpcImljb24taXRlbSB2cy1zZWxlY3QtLWl0ZW0taWNvblwiLGF0dHJzOntcImljb25cIjpcImNoZWNrX2NpcmNsZVwifX0pOl92bS5fZSgpLF9jKCdzcGFuJyx7ZG9tUHJvcHM6e1wiaW5uZXJIVE1MXCI6X3ZtLl9zKF92bS5nZXRUZXh0KX19KV0sMSldKX1cbnZhciB2c1NlbGVjdEl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8wZjJjYzdhOV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2VsZWN0L3ZzU2VsZWN0SXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGYyY2M3YTkmbGFuZz1odG1sJlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuY29uc3RydWN0b3IuanNcbnZhciBlc19yZWdleHBfY29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZjU2NFwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qc1xudmFyIGVzX3JlZ2V4cF90b19zdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTMwY1wiKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNTZWxlY3QvdnNTZWxlY3RJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmZ1bmN0aW9uIHZzU2VsZWN0SXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIHZzU2VsZWN0SXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyB2c1NlbGVjdEl0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IHZzU2VsZWN0SXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTZWxlY3RJdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzU2VsZWN0SXRlbScsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgdmFsdWU6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdmVyeDogZmFsc2UsXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgZ2V0VGV4dDogbnVsbCxcbiAgICAgIHZhbHVlSW5wdXR4OiAnJ1xuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgZGlzYWJsZWR4OiBmdW5jdGlvbiBkaXNhYmxlZHgoKSB7XG4gICAgICBpZiAodGhpcy4kcGFyZW50LnBhcmVudC5tdWx0aXBsZSkge1xuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy4kcGFyZW50LnBhcmVudC5tYXhTZWxlY3RlZCA9PSB0aGlzLiRwYXJlbnQucGFyZW50LnZhbHVlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNBY3RpdmU6IGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC5wYXJlbnQubXVsdGlwbGUgPyB0aGlzLmdldFZhbHVlLmluZGV4T2YodGhpcy52YWx1ZSkgIT0gLTEgOiB0aGlzLmdldFZhbHVlID09IHRoaXMudmFsdWU7XG4gICAgfSxcbiAgICBsaXN0ZW5lcnM6IGZ1bmN0aW9uIGxpc3RlbmVycygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB2c1NlbGVjdEl0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vYmplY3RTcHJlYWQoe30sIHRoaXMuJGxpc3RlbmVycywge1xuICAgICAgICBibHVyOiBmdW5jdGlvbiBibHVyKGV2ZW50KSB7XG4gICAgICAgICAgaWYgKGV2ZW50LnJlbGF0ZWRUYXJnZXQgPyAhZXZlbnQucmVsYXRlZFRhcmdldC5jbG9zZXN0KCcudnMtc2VsZWN0LS1vcHRpb25zJykgOiB0cnVlKSB7XG4gICAgICAgICAgICBfdGhpcy4kcGFyZW50LnBhcmVudC5jbG9zZU9wdGlvbnMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNsaWNrOiBmdW5jdGlvbiBjbGljayhldmVudCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5jbGlja09wdGlvbihldmVudCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1vdXNlb3ZlcjogZnVuY3Rpb24gbW91c2VvdmVyKGV2ZW50KSB7XG4gICAgICAgICAgX3RoaXMuJGVtaXQoJ21vdXNlb3ZlcicsIGV2ZW50KTtcblxuICAgICAgICAgIF90aGlzLmNoYW5nZUhvdmVyKHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICBtb3VzZW91dDogZnVuY3Rpb24gbW91c2VvdXQoZXZlbnQpIHtcbiAgICAgICAgICBfdGhpcy4kZW1pdCgnbW91c2VvdmVyJywgZXZlbnQpO1xuXG4gICAgICAgICAgX3RoaXMuY2hhbmdlSG92ZXIoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHN0eWxlczogZnVuY3Rpb24gc3R5bGVzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdGhpcy5pc0FjdGl2ZSA/IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuJHBhcmVudC5wYXJlbnQuY29sb3IsIC4xKSA6IG51bGwsXG4gICAgICAgIGNvbG9yOiB0aGlzLmlzQWN0aXZlID8gdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy4kcGFyZW50LnBhcmVudC5jb2xvciwgMSkgOiBudWxsLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLmlzQWN0aXZlID8gJ2JvbGQnIDogbnVsbFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldFZhbHVlOiBmdW5jdGlvbiBnZXRWYWx1ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQucGFyZW50LnZhbHVlO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICAnJHBhcmVudC5wYXJlbnQuYWN0aXZlJzogZnVuY3Rpb24gJHBhcmVudFBhcmVudEFjdGl2ZSgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpczIuJHBhcmVudC5wYXJlbnQubXVsdGlwbGUgPyBfdGhpczIuZ2V0VmFsdWUuaW5kZXhPZihfdGhpczIudmFsdWUpICE9IC0xIDogX3RoaXMyLmdldFZhbHVlID09IF90aGlzMi52YWx1ZSkge1xuICAgICAgICAgIF90aGlzMi4kZW1pdCgndXBkYXRlOmlzU2VsZWN0ZWQnLCB0cnVlKTtcblxuICAgICAgICAgIF90aGlzMi5nZXRUZXh0ID0gX3RoaXMyLnRleHQ7XG5cbiAgICAgICAgICBfdGhpczIucHV0VmFsdWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpczIuJGVtaXQoJ3VwZGF0ZTppc1NlbGVjdGVkJywgZmFsc2UpO1xuXG4gICAgICAgICAgX3RoaXMyLmdldFRleHQgPSBfdGhpczIudGV4dDtcblxuICAgICAgICAgIF90aGlzMi5wdXRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHZhbHVlSW5wdXR4OiBmdW5jdGlvbiB2YWx1ZUlucHV0eCgpIHtcbiAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgdmFyIHZhbHVlSW5wdXR4ID0gdGhpcy52YWx1ZUlucHV0eC5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGlmICh2YWx1ZUlucHV0eFt2YWx1ZUlucHV0eC5sZW5ndGggLSAxXSA9PSAnJykge1xuICAgICAgICAgIHRoaXMuZ2V0VGV4dCA9IHRoaXMudGV4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdmFsdWV4ID0gdmFsdWVJbnB1dHhbdmFsdWVJbnB1dHgubGVuZ3RoIC0gMV07XG4gICAgICAgIHZhciByZSA9IG5ldyBSZWdFeHAodmFsdWV4LCBcImlcIik7XG5cbiAgICAgICAgaWYgKHRoaXMudGV4dC50b1VwcGVyQ2FzZSgpLmluZGV4T2YodmFsdWV4LnRvVXBwZXJDYXNlKCkpID09IDApIHtcbiAgICAgICAgICB2YWx1ZXggPSB0aGlzLk1heXNQcmltZXJhKHZhbHVleCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGV4dCA9IHRoaXMudGV4dC5yZXBsYWNlKHJlLCBcIjxzcGFuIGNsYXNzPVxcXCJzZWFyY2h4XFxcIj5cIi5jb25jYXQodmFsdWV4LCBcIjwvc3Bhbj5cIikpO1xuICAgICAgICB0aGlzLmdldFRleHQgPSB0ZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5nZXRUZXh0ID0gdGhpcy50ZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHRoaXMucHV0VmFsdWUoKTtcbiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMzLiRwYXJlbnQucGFyZW50Lm11bHRpcGxlID8gX3RoaXMzLmdldFZhbHVlLmluZGV4T2YoX3RoaXMzLnZhbHVlKSAhPSAtMSA6IF90aGlzMy5nZXRWYWx1ZSA9PSBfdGhpczMudmFsdWUpIHtcbiAgICAgICAgX3RoaXMzLiRlbWl0KCd1cGRhdGU6aXNTZWxlY3RlZCcsIHRydWUpO1xuXG4gICAgICAgIF90aGlzMy5nZXRUZXh0ID0gX3RoaXMzLnRleHQ7XG5cbiAgICAgICAgX3RoaXMzLnB1dFZhbHVlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpczMuJGVtaXQoJ3VwZGF0ZTppc1NlbGVjdGVkJywgZmFsc2UpO1xuXG4gICAgICAgIF90aGlzMy5nZXRUZXh0ID0gX3RoaXMzLnRleHQ7XG5cbiAgICAgICAgX3RoaXMzLnB1dFZhbHVlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQoKSB7XG4gICAgdGhpcy5wdXRWYWx1ZSgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY2hhbmdlSG92ZXI6IGZ1bmN0aW9uIGNoYW5nZUhvdmVyKGJvb2xlYW54KSB7XG4gICAgICB0aGlzLmhvdmVyeCA9IGJvb2xlYW54O1xuICAgIH0sXG4gICAgTWF5c1ByaW1lcmE6IGZ1bmN0aW9uIE1heXNQcmltZXJhKHN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zbGljZSgxKTtcbiAgICB9LFxuICAgIGJhY2tzcGFjZTogZnVuY3Rpb24gYmFja3NwYWNlKCkge1xuICAgICAgaWYgKHRoaXMuJHBhcmVudC5wYXJlbnQuYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgIHZhciB2YWx1ZUlucHV0ID0gdGhpcy4kcGFyZW50LnBhcmVudC4kcmVmcy5pbnB1dHNlbGVjdC52YWx1ZTtcbiAgICAgICAgdGhpcy4kcGFyZW50LnBhcmVudC4kcmVmcy5pbnB1dHNlbGVjdC52YWx1ZSA9IHZhbHVlSW5wdXQuc3Vic3RyKDAsIHZhbHVlSW5wdXQubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMuJHBhcmVudC5wYXJlbnQuJHJlZnMuaW5wdXRzZWxlY3QuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG5hdmlnYXRlT3B0aW9uczogZnVuY3Rpb24gbmF2aWdhdGVPcHRpb25zKG9yaWVudGF0aW9uKSB7XG4gICAgICB2YXIgb3JpZW50YXRpb25PYmplY3QgPSAnbmV4dFNpYmxpbmcnLFxuICAgICAgICAgIGxlbmd0aHggPSAwO1xuXG4gICAgICBmdW5jdGlvbiBnZXROZXh0TGkobGksIG9yaWVudGF0aW9uT2JqZWN0KSB7XG4gICAgICAgIGlmIChsaSAmJiBsaS5sb2NhbE5hbWUgPT0gJ2xpJykge1xuICAgICAgICAgIHZhciBsaXggPSBsaVtvcmllbnRhdGlvbk9iamVjdF07XG5cbiAgICAgICAgICBpZiAobGkuc3R5bGUpIHtcbiAgICAgICAgICAgIGlmIChsaS5zdHlsZS5kaXNwbGF5ID09ICdub25lJykge1xuICAgICAgICAgICAgICByZXR1cm4gZ2V0TmV4dExpKGxpeCwgb3JpZW50YXRpb25PYmplY3QpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGxpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbGk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLiRwYXJlbnQucGFyZW50LiRjaGlsZHJlbjtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaWYgKGl0ZW0uJGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjaGlsZHJlbiA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoY2hpbGRyZW4pLCBfdG9Db25zdW1hYmxlQXJyYXkoaXRlbS4kY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS4kY2hpbGRyZW4ubGVuZ3RoID09IDAgJiYgaXRlbS4kZWwubG9jYWxOYW1lICE9ICdzcGFuJztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob3JpZW50YXRpb24gPT0gJ3ByZXYnKSB7XG4gICAgICAgIG9yaWVudGF0aW9uT2JqZWN0ID0gJ3ByZXZpb3VzU2libGluZyc7XG4gICAgICAgIGxlbmd0aHggPSBjaGlsZHJlbi5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHZhciBuZXh0RWxlbWVudCA9IGdldE5leHRMaSh0aGlzLiRlbFtvcmllbnRhdGlvbk9iamVjdF0sIG9yaWVudGF0aW9uT2JqZWN0KTtcblxuICAgICAgaWYgKG5leHRFbGVtZW50KSB7XG4gICAgICAgIG5leHRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy52cy1zZWxlY3QtLWl0ZW0nKS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxlbmd0aHggPT09IGNoaWxkcmVuLmxlbmd0aCkgbGVuZ3RoeC0tO1xuICAgICAgICBnZXROZXh0TGkoY2hpbGRyZW5bbGVuZ3RoeCA9PSAwID8gMSA6IGxlbmd0aHhdLiRlbCwgb3JpZW50YXRpb25PYmplY3QpLnF1ZXJ5U2VsZWN0b3IoJy52cy1zZWxlY3QtLWl0ZW0nKS5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZm9jdXNWYWx1ZTogZnVuY3Rpb24gZm9jdXNWYWx1ZShpbmRleCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLiRwYXJlbnQucGFyZW50Lm11bHRpcGxlID8gdGhpcy4kcGFyZW50LnBhcmVudC52YWx1ZS5pbmRleE9mKHRoaXMudmFsdWUpICE9IC0xIDogdGhpcy52YWx1ZSA9PSB0aGlzLiRwYXJlbnQucGFyZW50LnZhbHVlKSB7XG4gICAgICAgIGlmICghdGhpcy4kcGFyZW50LnBhcmVudC5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzNC4kcmVmcy5pdGVtLmZvY3VzKCk7XG4gICAgICAgICAgfSwgNTApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgIGlmICghdGhpcy4kcGFyZW50LnBhcmVudC5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzNC4kcmVmcy5pdGVtLmZvY3VzKCk7XG4gICAgICAgICAgfSwgNTApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBwdXRWYWx1ZTogZnVuY3Rpb24gcHV0VmFsdWUoKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZSA9PSB0aGlzLiRwYXJlbnQucGFyZW50LnZhbHVlKSB7XG4gICAgICAgIHRoaXMuJHBhcmVudC5wYXJlbnQudmFsdWV4ID0gdGhpcy50ZXh0O1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xpY2tPcHRpb246IGZ1bmN0aW9uIGNsaWNrT3B0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWR4KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHRleHQgPSB0aGlzLnRleHQ7XG5cbiAgICAgIGlmICghdGhpcy4kcGFyZW50LnBhcmVudC5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLiRwYXJlbnQucGFyZW50LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuJHBhcmVudC5wYXJlbnQuY2xpY2tCbHVyKTtcbiAgICAgICAgdGhpcy4kcGFyZW50LnBhcmVudC52YWx1ZXggPSB0ZXh0O1xuICAgICAgICB0aGlzLiRwYXJlbnQucGFyZW50LiRlbWl0KCdpbnB1dCcsIHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLiRwYXJlbnQucGFyZW50LmNoYW5nZVZhbHVlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuJHBhcmVudC5wYXJlbnQubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy4kcGFyZW50LnBhcmVudC52YWx1ZXggPSB0ZXh0O1xuICAgICAgICB0aGlzLiRwYXJlbnQucGFyZW50LmFkZE11bHRpcGxlKHRoaXMudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRwYXJlbnQucGFyZW50LiRjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaXRlbS52YWx1ZUlucHV0eCA9ICcnO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICAvLyBtZXRob2RzIGNvbG9yc1xuICAgIGlzQ29sb3I6IGZ1bmN0aW9uIGlzQ29sb3IoKSB7XG4gICAgICByZXR1cm4gdXRpbHNfY29sb3IuaXNDb2xvcih0aGlzLmNvbG9yKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NlbGVjdC92c1NlbGVjdEl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzU2VsZWN0X3ZzU2VsZWN0SXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c1NlbGVjdEl0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NlbGVjdC92c1NlbGVjdEl0ZW0udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNTZWxlY3RJdGVtX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNTZWxlY3RfdnNTZWxlY3RJdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1NlbGVjdEl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8wZjJjYzdhOV9sYW5nX2h0bWxfcmVuZGVyLFxuICB2c1NlbGVjdEl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8wZjJjYzdhOV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzU2VsZWN0SXRlbSA9ICh2c1NlbGVjdEl0ZW1fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNTZWxlY3QvdnNTZWxlY3RHcm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTExYWI1MGUmXG52YXIgdnNTZWxlY3RHcm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2ExMWFiNTBlX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtc2VsZWN0LWdyb3VwXCJ9LFsoIV92bS5maWx0ZXJ4KT9fYygnaDQnLFtfdm0uX3YoX3ZtLl9zKF92bS50aXRsZSkpXSk6X3ZtLl9lKCksX3ZtLl90KFwiZGVmYXVsdFwiKV0sMil9XG52YXIgdnNTZWxlY3RHcm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2ExMWFiNTBlX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NlbGVjdC92c1NlbGVjdEdyb3VwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hMTFhYjUwZSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNTZWxlY3QvdnNTZWxlY3RHcm91cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1NlbGVjdEdyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzU2VsZWN0R3JvdXAnLFxuICBwcm9wczoge1xuICAgIHRpdGxlOiB7XG4gICAgICBkZWZhdWx0OiAnR3JvdXAnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3RpdmVUaXRsZTogdHJ1ZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgZmlsdGVyeDogZnVuY3Rpb24gZmlsdGVyeCgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQuZmlsdGVyeDtcbiAgICB9LFxuICAgIHBhcmVudDogZnVuY3Rpb24gcGFyZW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudDtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBmb2N1c1ZhbHVlOiBmdW5jdGlvbiBmb2N1c1ZhbHVlKGluZGV4KSB7XG4gICAgICB0aGlzLiRjaGlsZHJlblswXS5mb2N1c1ZhbHVlKGluZGV4KTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NlbGVjdC92c1NlbGVjdEdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1NlbGVjdF92c1NlbGVjdEdyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzU2VsZWN0R3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NlbGVjdC92c1NlbGVjdEdyb3VwLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzU2VsZWN0R3JvdXBfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c1NlbGVjdF92c1NlbGVjdEdyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1NlbGVjdEdyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfYTExYWI1MGVfcmVuZGVyLFxuICB2c1NlbGVjdEdyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfYTExYWI1MGVfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzU2VsZWN0R3JvdXAgPSAodnNTZWxlY3RHcm91cF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2VsZWN0L2luZGV4LmpzXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c1NlbGVjdCA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNTZWxlY3QubmFtZSwgdnNTZWxlY3QpO1xuICBWdWUuY29tcG9uZW50KHZzU2VsZWN0SXRlbS5uYW1lLCB2c1NlbGVjdEl0ZW0pO1xuICBWdWUuY29tcG9uZW50KHZzU2VsZWN0R3JvdXAubmFtZSwgdnNTZWxlY3RHcm91cCk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzU3dpdGNoL3ZzU3dpdGNoLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iODJkNWJkMCZsYW5nPWh0bWwmXG52YXIgdnNTd2l0Y2h2dWVfdHlwZV90ZW1wbGF0ZV9pZF9iODJkNWJkMF9sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnYnV0dG9uJyxfdm0uX2Ioe3N0YXRpY0NsYXNzOlwidnMtY29tcG9uZW50IHZzLXN3aXRjaFwiLGNsYXNzOltcbiAgICAoXCJ2cy1zd2l0Y2gtXCIgKyBfdm0uY29sb3IpLFxuICAgIHtcbiAgICAgICd2cy1zd2l0Y2gtYWN0aXZlJzpfdm0uaXNDaGVja2VkIHx8IF92bS4kYXR0cnMuY2hlY2tlZFxuICAgIH1cbiAgXSxzdHlsZTooX3ZtLnN0eWxlKX0sJ2J1dHRvbicsX3ZtLiRhdHRycyxmYWxzZSksW19jKCdpbnB1dCcsX3ZtLl9nKF92bS5fYih7cmVmOlwiaW5wdXRDaGVja2JveFwiLHN0YXRpY0NsYXNzOlwiaW5wdXQtc3dpdGNoIHZzLXN3aXRjaC0taW5wdXRcIixhdHRyczp7XCJkaXNhYmxlZFwiOl92bS4kYXR0cnMuZGlzYWJsZWQsXCJ0eXBlXCI6XCJjaGVja2JveFwifSxkb21Qcm9wczp7XCJ2YWx1ZVwiOl92bS52YWx1ZX19LCdpbnB1dCcsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLmxpc3RlbmVycykpLF9jKCdzcGFuJyx7cmVmOlwib25cIixzdGF0aWNDbGFzczpcInRleHQtb24gdGV4dC1zd2l0Y2ggdnMtc3dpdGNoLS10ZXh0XCIsY2xhc3M6eydhY3RpdmUtdGV4dCc6X3ZtLmlzQ2hlY2tlZCB8fCBfdm0uJGF0dHJzLmNoZWNrZWR9fSxbX3ZtLl90KFwib25cIiksX2MoJ3ZzLWljb24nLHtzdGF0aWNDbGFzczpcImljb25zLXN3aXRjaCB2cy1zd2l0Y2gtLWljb25cIixhdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLnZzSWNvbk9uIHx8IF92bS52c0ljb259fSldLDIpLF9jKCdzcGFuJyx7cmVmOlwib2ZmXCIsc3RhdGljQ2xhc3M6XCJ0ZXh0LW9mZiB0ZXh0LXN3aXRjaCB2cy1zd2l0Y2gtLXRleHRcIixjbGFzczp7J2FjdGl2ZS10ZXh0JzohX3ZtLmlzQ2hlY2tlZCAmJiAhX3ZtLiRhdHRycy5jaGVja2VkfX0sW192bS5fdChcIm9mZlwiKSxfYygndnMtaWNvbicse3N0YXRpY0NsYXNzOlwiaWNvbnMtc3dpdGNoIHZzLXN3aXRjaC0taWNvblwiLGF0dHJzOntcImljb24tcGFja1wiOl92bS5pY29uUGFjayxcImljb25cIjpfdm0udnNJY29uT2ZmIHx8IF92bS52c0ljb259fSldLDIpLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1jaXJjbGUtc3dpdGNoIHZzLXN3aXRjaC0tY2lyY2xlXCJ9KV0pfVxudmFyIHZzU3dpdGNodnVlX3R5cGVfdGVtcGxhdGVfaWRfYjgyZDViZDBfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1N3aXRjaC92c1N3aXRjaC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YjgyZDViZDAmbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1N3aXRjaC92c1N3aXRjaC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5mdW5jdGlvbiB2c1N3aXRjaHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIHZzU3dpdGNodnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IHZzU3dpdGNodnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyB2c1N3aXRjaHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTd2l0Y2h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNTd2l0Y2gnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7fSxcbiAgICBjb2xvcjoge1xuICAgICAgZGVmYXVsdDogJ3ByaW1hcnknLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB2c0ljb246IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHZzSWNvbk9uOiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB2c0ljb25PZmY6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB2c1ZhbHVlOiB7fVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aHg6IDQyLFxuICAgICAgY2hlY2tib3hDbGlja2VkOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgc3R5bGU6IGZ1bmN0aW9uIHN0eWxlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdGhpcy52YWx1ZSA/IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpIDogbnVsbCxcbiAgICAgICAgd2lkdGg6IFwiXCIuY29uY2F0KHRoaXMud2lkdGh4LCBcInB4XCIpXG4gICAgICB9O1xuICAgIH0sXG4gICAgbGlzdGVuZXJzOiBmdW5jdGlvbiBsaXN0ZW5lcnMoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gdnNTd2l0Y2h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vYmplY3RTcHJlYWQoe30sIHRoaXMuJGxpc3RlbmVycywge1xuICAgICAgICBpbnB1dDogZnVuY3Rpb24gaW5wdXQoZXZ0KSB7XG4gICAgICAgICAgX3RoaXMudG9nZ2xlVmFsdWUoZXZ0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBpc0NoZWNrZWQ6IGZ1bmN0aW9uIGlzQ2hlY2tlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzQXJyYXl4KCkgPyB0aGlzLmlzQXJyYXlJbmNsdWRlcygpIDogdGhpcy52YWx1ZTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdyA9IF90aGlzMi4kcmVmcy5vbi5jbGllbnRXaWR0aCA+IF90aGlzMi4kcmVmcy5vZmYuY2xpZW50V2lkdGggPyBfdGhpczIuJHJlZnMub24uY2xpZW50V2lkdGggOiBfdGhpczIuJHJlZnMub2ZmLmNsaWVudFdpZHRoO1xuICAgICAgX3RoaXMyLndpZHRoeCA9IHcgKyAyNDtcbiAgICB9KTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHRvZ2dsZVZhbHVlOiBmdW5jdGlvbiB0b2dnbGVWYWx1ZShldnQpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHRoaXMuc2V0QXJyYXkoZXZ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgIXRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBldnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0QXJyYXk6IGZ1bmN0aW9uIHNldEFycmF5KGV2dCkge1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZS5zbGljZSgwKTsgLy8gQ29weSBBcnJheS5cblxuICAgICAgaWYgKHRoaXMuaXNBcnJheUluY2x1ZGVzKCkpIHtcbiAgICAgICAgdmFsdWUuc3BsaWNlKHZhbHVlLmluZGV4T2YodGhpcy52c1ZhbHVlKSwgMSk7IC8vIGRlbGV0ZSB2YWx1ZVxuXG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsdWUpO1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBldnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUucHVzaCh0aGlzLnZzVmFsdWUpOyAvLyBhZGQgdmFsdWUgbmV3XG5cbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIGV2dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpc0FycmF5SW5jbHVkZXM6IGZ1bmN0aW9uIGlzQXJyYXlJbmNsdWRlcygpIHtcbiAgICAgIHZhciBtb2RlbHggPSB0aGlzLnZhbHVlO1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy52c1ZhbHVlO1xuICAgICAgcmV0dXJuIG1vZGVseC5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgfSxcbiAgICBpc0FycmF5eDogZnVuY3Rpb24gaXNBcnJheXgoKSB7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1N3aXRjaC92c1N3aXRjaC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTd2l0Y2hfdnNTd2l0Y2h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNTd2l0Y2h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1N3aXRjaC92c1N3aXRjaC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1N3aXRjaF9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzU3dpdGNoX3ZzU3dpdGNodnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1N3aXRjaHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2I4MmQ1YmQwX2xhbmdfaHRtbF9yZW5kZXIsXG4gIHZzU3dpdGNodnVlX3R5cGVfdGVtcGxhdGVfaWRfYjgyZDViZDBfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1N3aXRjaCA9ICh2c1N3aXRjaF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU3dpdGNoL2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzU3dpdGNoID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c1N3aXRjaC5uYW1lLCB2c1N3aXRjaCk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQ2hlY2tCb3gvdnNDaGVja0JveC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTQxMGE0M2MmbGFuZz1odG1sJlxudmFyIHZzQ2hlY2tCb3h2dWVfdHlwZV90ZW1wbGF0ZV9pZF81NDEwYTQzY19sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1jb21wb25lbnQgY29uLXZzLWNoZWNrYm94XCIsY2xhc3M6WyhcInZzLWNoZWNrYm94LVwiICsgX3ZtLmNvbG9yKSwgKFwidnMtY2hlY2tib3gtXCIgKyBfdm0uc2l6ZSldfSxbX2MoJ2lucHV0Jyxfdm0uX2coX3ZtLl9iKHtzdGF0aWNDbGFzczpcInZzLWNoZWNrYm94LS1pbnB1dFwiLGF0dHJzOntcInR5cGVcIjpcImNoZWNrYm94XCJ9LGRvbVByb3BzOntcImNoZWNrZWRcIjpfdm0uaXNDaGVja2VkIHx8IF92bS4kYXR0cnMuY2hlY2tlZCxcInZhbHVlXCI6X3ZtLnZhbHVlfX0sJ2lucHV0Jyxfdm0uJGF0dHJzLGZhbHNlKSxfdm0ubGlzdGVuZXJzKSksX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcImNoZWNrYm94X3ggdnMtY2hlY2tib3hcIixzdHlsZTooX3ZtLnN0eWxlKX0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1jaGVja2JveC0tY2hlY2tcIixzdHlsZTooX3ZtLnN0eWxlX2NoZWNrKX0sW19jKCd2cy1pY29uJyx7c3RhdGljQ2xhc3M6XCJ2cy1jaGVja2JveC0taWNvbiBcIixhdHRyczp7XCJpY29uXCI6X3ZtLmljb24sXCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2t9fSldLDEpXSksX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcImNvbi1zbG90LWxhYmVsXCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKV0pfVxudmFyIHZzQ2hlY2tCb3h2dWVfdHlwZV90ZW1wbGF0ZV9pZF81NDEwYTQzY19sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQ2hlY2tCb3gvdnNDaGVja0JveC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTQxMGE0M2MmbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0NoZWNrQm94L3ZzQ2hlY2tCb3gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQ2hlY2tCb3h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNDaGVja2JveCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgY29sb3I6IHtcbiAgICAgIGRlZmF1bHQ6ICdwcmltYXJ5JyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdmFsdWU6IHt9LFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHQ6ICdjaGVjaycsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB2c1ZhbHVlOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgQXJyYXksIFN0cmluZywgTnVtYmVyLCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHNpemU6IHtcbiAgICAgIGRlZmF1bHQ6ICdkZWZhdWx0JyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZV9jaGVjazogZnVuY3Rpb24gc3R5bGVfY2hlY2soKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLmlzQ2hlY2tlZCA/IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpIDogbnVsbFxuICAgICAgfTtcbiAgICB9LFxuICAgIHN0eWxlOiBmdW5jdGlvbiBzdHlsZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJvcmRlcjogXCIycHggc29saWQgXCIuY29uY2F0KHRoaXMuaXNDaGVja2VkID8gdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSkgOiAncmdiKDE4MCwgMTgwLCAxODApJylcbiAgICAgIH07XG4gICAgfSxcbiAgICBsaXN0ZW5lcnM6IGZ1bmN0aW9uIGxpc3RlbmVycygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIC4uLnRoaXMuJGxpc3RlbmVycyxcbiAgICAgICAgY2hhbmdlOiBmdW5jdGlvbiBjaGFuZ2UoZXZ0KSB7XG4gICAgICAgICAgX3RoaXMudG9nZ2xlVmFsdWUoZXZ0KTtcbiAgICAgICAgfSAvLyBpbnB1dDogKGV2dCkgPT4ge1xuICAgICAgICAvLyAgIHRoaXMudG9nZ2xlVmFsdWUoZXZ0KVxuICAgICAgICAvLyB9XG5cbiAgICAgIH07XG4gICAgfSxcbiAgICBpc0NoZWNrZWQ6IGZ1bmN0aW9uIGlzQ2hlY2tlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzQXJyYXl4KCkgPyB0aGlzLmlzQXJyYXlJbmNsdWRlcygpIDogdGhpcy52YWx1ZTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBnaXZlQ29sb3I6IGZ1bmN0aW9uIGdpdmVDb2xvcihjb2xvcikge1xuICAgICAgcmV0dXJuIHV0aWxzX2NvbG9yLnJDb2xvcihjb2xvcik7XG4gICAgfSxcbiAgICB0b2dnbGVWYWx1ZTogZnVuY3Rpb24gdG9nZ2xlVmFsdWUoZXZ0KSB7XG4gICAgICBpZiAodGhpcy5pc0FycmF5eCgpKSB7XG4gICAgICAgIHRoaXMuc2V0QXJyYXkoKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMudnNWYWx1ZSA9PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLnNldFZhbHVlU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsICF0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgZXZ0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldEFycmF5OiBmdW5jdGlvbiBzZXRBcnJheSgpIHtcbiAgICAgIC8vIENvcHkgQXJyYXlcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUuc2xpY2UoMCk7XG5cbiAgICAgIGlmICh0aGlzLmlzQXJyYXlJbmNsdWRlcygpKSB7XG4gICAgICAgIHZhbHVlLnNwbGljZSh2YWx1ZS5pbmRleE9mKHRoaXMudnNWYWx1ZSksIDEpO1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbHVlKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUucHVzaCh0aGlzLnZzVmFsdWUpO1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbHVlKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0VmFsdWVTdHJpbmc6IGZ1bmN0aW9uIHNldFZhbHVlU3RyaW5nKCkge1xuICAgICAgaWYgKHRoaXMudmFsdWUgPT0gdGhpcy52c1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgbnVsbCk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLnZzVmFsdWUpO1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCB0aGlzLnZzVmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNBcnJheUluY2x1ZGVzOiBmdW5jdGlvbiBpc0FycmF5SW5jbHVkZXMoKSB7XG4gICAgICB2YXIgbW9kZWx4ID0gdGhpcy52YWx1ZTtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudnNWYWx1ZTtcbiAgICAgIHJldHVybiBtb2RlbHguaW5jbHVkZXModmFsdWUpO1xuICAgIH0sXG4gICAgaXNBcnJheXg6IGZ1bmN0aW9uIGlzQXJyYXl4KCkge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNDaGVja0JveC92c0NoZWNrQm94LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0NoZWNrQm94X3ZzQ2hlY2tCb3h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNDaGVja0JveHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQ2hlY2tCb3gvdnNDaGVja0JveC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0NoZWNrQm94X2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNDaGVja0JveF92c0NoZWNrQm94dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0NoZWNrQm94dnVlX3R5cGVfdGVtcGxhdGVfaWRfNTQxMGE0M2NfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNDaGVja0JveHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU0MTBhNDNjX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNDaGVja0JveCA9ICh2c0NoZWNrQm94X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNDaGVja0JveC9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c0NoZWNrQm94ID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c0NoZWNrQm94Lm5hbWUsIHZzQ2hlY2tCb3gpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1JhZGlvL3ZzUmFkaW8udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBjMzdlZmEzJmxhbmc9aHRtbCZcbnZhciB2c1JhZGlvdnVlX3R5cGVfdGVtcGxhdGVfaWRfMGMzN2VmYTNfbGFuZ19odG1sX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2xhYmVsJyx7c3RhdGljQ2xhc3M6XCJ2cy1jb21wb25lbnQgY29uLXZzLXJhZGlvXCIsY2xhc3M6WyhcInZzLXJhZGlvLVwiICsgX3ZtLmNvbG9yKV19LFtfYygnaW5wdXQnLF92bS5fZyhfdm0uX2Ioe3N0YXRpY0NsYXNzOlwidnMtcmFkaW8tLWlucHV0XCIsYXR0cnM6e1wibmFtZVwiOl92bS52c05hbWUgfHwgX3ZtLnZhbHVlLFwidHlwZVwiOlwicmFkaW9cIn0sZG9tUHJvcHM6e1wiY2hlY2tlZFwiOl92bS5pc0NoZWNrZWQsXCJ2YWx1ZVwiOl92bS52YWx1ZX19LCdpbnB1dCcsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLmxpc3RlbmVycykpLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1yYWRpb1wifSxbX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInZzLXJhZGlvLS1ib3JkZVwiLHN0eWxlOihfdm0uc3R5bGVzKX0pLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1yYWRpby0tY2lyY2xlXCIsc3R5bGU6KF92bS5zdHlsZUNpcmNsZSl9KV0pLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1yYWRpby0tbGFiZWxcIn0sW192bS5fdChcImRlZmF1bHRcIildLDIpXSl9XG52YXIgdnNSYWRpb3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzBjMzdlZmEzX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNSYWRpby92c1JhZGlvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYzM3ZWZhMyZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzUmFkaW8vdnNSYWRpby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuZnVuY3Rpb24gdnNSYWRpb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIHZzUmFkaW92dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgdnNSYWRpb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgdnNSYWRpb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNSYWRpb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc1JhZGlvJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge30sXG4gICAgdnNWYWx1ZToge30sXG4gICAgdnNOYW1lOiB7fSxcbiAgICBjb2xvcjoge1xuICAgICAgZGVmYXVsdDogJ3ByaW1hcnknLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGxpc3RlbmVyczogZnVuY3Rpb24gbGlzdGVuZXJzKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgcmV0dXJuIHZzUmFkaW92dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vYmplY3RTcHJlYWQoe30sIHRoaXMuJGxpc3RlbmVycywge1xuICAgICAgICBpbnB1dDogZnVuY3Rpb24gaW5wdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLiRlbWl0KCdpbnB1dCcsIF90aGlzLnZzVmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBjbGljazogZnVuY3Rpb24gY2xpY2soKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLiRlbWl0KCdpbnB1dCcsIF90aGlzLnZzVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGF0dHJzOiBmdW5jdGlvbiBhdHRycygpIHtcbiAgICAgIHZhciBhdHRyc3ggPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGF0dHJzKSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhdHRyc3g6IGF0dHJzeFxuICAgICAgfTtcbiAgICB9LFxuICAgIGlzQ2hlY2tlZDogZnVuY3Rpb24gaXNDaGVja2VkKCkge1xuICAgICAgcmV0dXJuIHRoaXMudnNWYWx1ZSA9PSB0aGlzLnZhbHVlO1xuICAgIH0sXG4gICAgc3R5bGVzOiBmdW5jdGlvbiBzdHlsZXMoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnYm9yZGVyJzogXCIycHggc29saWQgXCIuY29uY2F0KHRoaXMuaXNDaGVja2VkID8gdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSkgOiAncmdiKDIwMCwgMjAwLCAyMDApJylcbiAgICAgIH07XG4gICAgfSxcbiAgICBzdHlsZUNpcmNsZTogZnVuY3Rpb24gc3R5bGVDaXJjbGUoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnYmFja2dyb3VuZCc6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpLFxuICAgICAgICAnYm94LXNoYWRvdyc6IFwiMHB4IDNweCAxMnB4IDBweCBcIi5jb25jYXQodXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgLjQpKVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBnaXZlQ29sb3I6IGZ1bmN0aW9uIGdpdmVDb2xvcihjb2xvciwgb3BhY2l0eSkge1xuICAgICAgcmV0dXJuIHV0aWxzX2NvbG9yLnJDb2xvcihjb2xvciwgb3BhY2l0eSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNSYWRpby92c1JhZGlvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1JhZGlvX3ZzUmFkaW92dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNSYWRpb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzUmFkaW8vdnNSYWRpby52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1JhZGlvX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNSYWRpb192c1JhZGlvdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1JhZGlvdnVlX3R5cGVfdGVtcGxhdGVfaWRfMGMzN2VmYTNfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNSYWRpb3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzBjMzdlZmEzX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNSYWRpbyA9ICh2c1JhZGlvX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNSYWRpby9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c1JhZGlvID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c1JhZGlvLm5hbWUsIHZzUmFkaW8pO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0lucHV0L3ZzSW5wdXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkOWI2NmIzJmxhbmc9aHRtbCZcbnZhciB2c0lucHV0dnVlX3R5cGVfdGVtcGxhdGVfaWRfNWQ5YjY2YjNfbGFuZ19odG1sX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2Rpdicse3JlZjpcImNvbmlucHV0XCIsc3RhdGljQ2xhc3M6XCJ2cy1jb21wb25lbnQgdnMtY29uLWlucHV0LWxhYmVsIHZzLWlucHV0XCIsY2xhc3M6WyhcInZzLWlucHV0LVwiICsgX3ZtLmNvbG9yKSx7XG4gICAgJ2lzRm9jdXMnOl92bS5pc0ZvY3VzLFxuICAgICdpbnB1dC1pY29uLXZhbGlkYXRlLXN1Y2Nlc3MnOl92bS5zdWNjZXNzLFxuICAgICdpbnB1dC1pY29uLXZhbGlkYXRlLWRhbmdlcic6X3ZtLmRhbmdlcixcbiAgICAnaW5wdXQtaWNvbi12YWxpZGF0ZS13YXJuaW5nJzpfdm0ud2FybmluZyxcbiAgICAnaXMtbGFiZWwtcGxhY2Vob2xkZXInOl92bS5sYWJlbFBsYWNlaG9sZGVyXG4gIH1dLHN0eWxlOihfdm0uc3R5bGVMYWJlbCl9LFsoX3ZtLmxhYmVsUGxhY2Vob2xkZXI/ZmFsc2U6X3ZtLmxhYmVsKT9fYygnbGFiZWwnLHtzdGF0aWNDbGFzczpcInZzLWlucHV0LS1sYWJlbFwiLGF0dHJzOntcImZvclwiOlwiXCJ9LG9uOntcImNsaWNrXCI6X3ZtLmZvY3VzSW5wdXR9fSxbX3ZtLl92KF92bS5fcyhfdm0ubGFiZWwpKV0pOl92bS5fZSgpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWNvbi1pbnB1dFwifSxbX2MoJ2lucHV0Jyxfdm0uX2coX3ZtLl9iKHtyZWY6XCJ2c2lucHV0XCIsc3RhdGljQ2xhc3M6XCJ2cy1pbnB1dHggdnMtaW5wdXQtLWlucHV0XCIsY2xhc3M6W192bS5zaXplLHtcbiAgICAgICAgJ2hhc1ZhbHVlJzpfdm0udmFsdWUgIT09ICcnLFxuICAgICAgICAnaGFzSWNvbic6X3ZtLmljb24sXG4gICAgICAgICdpY29uLWFmdGVyLWlucHV0Jzpfdm0uaWNvbkFmdGVyXG4gICAgICB9XSxzdHlsZTooX3ZtLnN0eWxlKSxhdHRyczp7XCJhdXRvZm9jdXNcIjpfdm0uYXV0b2ZvY3VzLFwicGxhY2Vob2xkZXJcIjpudWxsLFwidHlwZVwiOl92bS4kYXR0cnMudHlwZT9fdm0uJGF0dHJzLnR5cGU6J3RleHQnfSxkb21Qcm9wczp7XCJ2YWx1ZVwiOl92bS52YWx1ZX19LCdpbnB1dCcsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLmxpc3RlbmVycykpLF9jKCd0cmFuc2l0aW9uJyx7YXR0cnM6e1wibmFtZVwiOlwicGxhY2Vob2xkZXJ4XCJ9fSxbKF92bS5pc1ZhbHVlJiYoX3ZtLmxhYmVsUGxhY2Vob2xkZXJ8fF92bS4kYXR0cnMucGxhY2Vob2xkZXIpKT9fYygnc3Bhbicse3JlZjpcInNwYW5wbGFjZWhvbGRlclwiLHN0YXRpY0NsYXNzOlwiaW5wdXQtc3Bhbi1wbGFjZWhvbGRlciB2cy1pbnB1dC0tcGxhY2Vob2xkZXJcIixjbGFzczpbXG4gICAgICAgICAgX3ZtLmxhYmVsUGxhY2Vob2xkZXImJihfdm0uc2l6ZSksXG4gICAgICAgICAgX3ZtLnNpemUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ3ZzLXBsYWNlaG9sZGVyLWxhYmVsJzogX3ZtLmxhYmVsUGxhY2Vob2xkZXIsXG4gICAgICAgIH1dLHN0eWxlOihfdm0uc3R5bGVMYWJlbCksb246e1wiY2xpY2tcIjpfdm0uZm9jdXNJbnB1dH19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS4kYXR0cnMucGxhY2Vob2xkZXIgfHwgX3ZtLmxhYmVsUGxhY2Vob2xkZXIpK1wiIFwiKV0pOl92bS5fZSgpXSksKF92bS5pY29uKT9fYygndnMtaWNvbicse3N0YXRpY0NsYXNzOlwiaWNvbi1pbnB1dHggbm90cmFuc2xhdGUgdnMtaW5wdXQtLWljb25cIixjbGFzczp7J2ljb24tYWZ0ZXInOl92bS5pY29uQWZ0ZXIsICdpY29uLW5vLWJvcmRlcic6X3ZtLmljb25Ob0JvcmRlcn0sYXR0cnM6e1wiaWNvblBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLmljb259LG9uOntcImNsaWNrXCI6X3ZtLmZvY3VzSW5wdXR9fSk6X3ZtLl9lKCksX2MoJ3RyYW5zaXRpb24nLHthdHRyczp7XCJuYW1lXCI6XCJpY29uLXZhbGlkYXRlXCJ9fSxbKF92bS5zdWNjZXNzIHx8IF92bS5kYW5nZXIgfHwgX3ZtLndhcm5pbmcpP19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJpbnB1dC1pY29uLXZhbGlkYXRlIHZzLWlucHV0LS1pY29uLXZhbGlkYXRlXCIsY2xhc3M6eydpY29uLWJlZm9yZSc6X3ZtLmljb25BZnRlcn19LFtfYygndnMtaWNvbicse2NsYXNzOnsnaWNvbi1iZWZvcmUnOl92bS5pY29uQWZ0ZXJ9LGF0dHJzOntcImljb25QYWNrXCI6X3ZtLnZhbEljb25QYWNrLFwiaWNvblwiOl92bS5nZXRJY29ufX0pXSwxKTpfdm0uX2UoKV0pXSwxKSxfYygndHJhbnNpdGlvbi1ncm91cCcse29uOntcImJlZm9yZS1lbnRlclwiOl92bS5iZWZvcmVFbnRlcixcImVudGVyXCI6X3ZtLmVudGVyLFwibGVhdmVcIjpfdm0ubGVhdmV9fSxbKF92bS5zdWNjZXNzKT9fYygnZGl2Jyx7a2V5Olwic3VjY2Vzc1wiLHN0YXRpY0NsYXNzOlwiY29uLXRleHQtdmFsaWRhdGlvbiB2cy1pbnB1dC0tdGV4dC12YWxpZGF0aW9uXCJ9LFtfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwic3Bhbi10ZXh0LXZhbGlkYXRpb24gc3Bhbi10ZXh0LXZhbGlkYXRpb24tc3VjY2VzcyB2cy1pbnB1dC0tdGV4dC12YWxpZGF0aW9uLXNwYW5cIn0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLnN1Y2Nlc3NUZXh0KStcIiBcIildKV0pOihfdm0uZGFuZ2VyKT9fYygnZGl2Jyx7a2V5OlwiZGFuZ2VyXCIsc3RhdGljQ2xhc3M6XCJjb24tdGV4dC12YWxpZGF0aW9uIHNwYW4tdGV4dC12YWxpZGF0aW9uLWRhbmdlciB2cy1pbnB1dC0tdGV4dC12YWxpZGF0aW9uLXNwYW5cIn0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJzcGFuLXRleHQtdmFsaWRhdGlvblwifSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0uZGFuZ2VyVGV4dCkrXCIgXCIpXSldKTooX3ZtLndhcm5pbmcpP19jKCdkaXYnLHtrZXk6XCJ3YXJuaW5nXCIsc3RhdGljQ2xhc3M6XCJjb24tdGV4dC12YWxpZGF0aW9uIHNwYW4tdGV4dC12YWxpZGF0aW9uLXdhcm5pbmcgdnMtaW5wdXQtLXRleHQtdmFsaWRhdGlvbi1zcGFuXCJ9LFtfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwic3Bhbi10ZXh0LXZhbGlkYXRpb25cIn0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLndhcm5pbmdUZXh0KStcIiBcIildKV0pOl92bS5fZSgpLChfdm0uZGVzY3JpcHRpb25UZXh0KT9fYygnZGl2Jyx7a2V5OlwiZGVzY3JpcHRpb25cIixzdGF0aWNDbGFzczpcImNvbi10ZXh0LXZhbGlkYXRpb24gc3Bhbi10ZXh0LXZhbGlkYXRpb24gdnMtaW5wdXQtLXRleHQtdmFsaWRhdGlvbi1zcGFuXCJ9LFtfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwic3Bhbi10ZXh0LXZhbGlkYXRpb25cIn0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLmRlc2NyaXB0aW9uVGV4dCkrXCIgXCIpXSldKTpfdm0uX2UoKV0pXSwxKX1cbnZhciB2c0lucHV0dnVlX3R5cGVfdGVtcGxhdGVfaWRfNWQ5YjY2YjNfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0lucHV0L3ZzSW5wdXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkOWI2NmIzJmxhbmc9aHRtbCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNJbnB1dC92c0lucHV0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuZnVuY3Rpb24gdnNJbnB1dHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIHZzSW5wdXR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgdnNJbnB1dHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgdnNJbnB1dHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0lucHV0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzSW5wdXQnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7XG4gICAgICBkZWZhdWx0OiAnJyxcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl1cbiAgICB9LFxuICAgIGxhYmVsUGxhY2Vob2xkZXI6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl1cbiAgICB9LFxuICAgIGF1dG9mb2N1czoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXVxuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgaWNvbkFmdGVyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddXG4gICAgfSxcbiAgICBpY29uTm9Cb3JkZXI6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgaWNvblBhY2s6IHtcbiAgICAgIGRlZmF1bHQ6ICdtYXRlcmlhbC1pY29ucycsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGNvbG9yOiB7XG4gICAgICBkZWZhdWx0OiAncHJpbWFyeScsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHN1Y2Nlc3M6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgZGFuZ2VyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHdhcm5pbmc6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgc3VjY2Vzc1RleHQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGRhbmdlclRleHQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHdhcm5pbmdUZXh0OiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvblRleHQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHNpemU6IHtcbiAgICAgIGRlZmF1bHQ6ICdub3JtYWwnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB2YWxJY29uUGFjazoge1xuICAgICAgZGVmYXVsdDogJ21hdGVyaWFsLWljb25zJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdmFsSWNvblN1Y2Nlc3M6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHZhbEljb25EYW5nZXI6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHZhbEljb25XYXJuaW5nOiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxuICB9LFxuICBpbmplY3Q6IHtcbiAgICBlbEZvcm06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBlbEZvcm1JdGVtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNGb2N1czogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHN0eWxlOiBmdW5jdGlvbiBzdHlsZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgXCIuY29uY2F0KHRoaXMuaXNGb2N1cyA/IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpIDogJ3JnYmEoMCwgMCwgMCwuMiknKVxuICAgICAgfTtcbiAgICB9LFxuICAgIHN0eWxlTGFiZWw6IGZ1bmN0aW9uIHN0eWxlTGFiZWwoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogdGhpcy5pc0ZvY3VzID8gdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSkgOiBudWxsXG4gICAgICB9O1xuICAgIH0sXG4gICAgbGlzdGVuZXJzOiBmdW5jdGlvbiBsaXN0ZW5lcnMoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gdnNJbnB1dHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX29iamVjdFNwcmVhZCh7fSwgdGhpcy4kbGlzdGVuZXJzLCB7XG4gICAgICAgIGlucHV0OiBmdW5jdGlvbiBpbnB1dChldnQpIHtcbiAgICAgICAgICBfdGhpcy4kZW1pdCgnaW5wdXQnLCBldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKGV2dCkge1xuICAgICAgICAgIF90aGlzLiRlbWl0KCdmb2N1cycsIGV2dCk7XG5cbiAgICAgICAgICBfdGhpcy5jaGFuZ2VGb2N1cyh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgYmx1cjogZnVuY3Rpb24gYmx1cihldnQpIHtcbiAgICAgICAgICBfdGhpcy4kZW1pdCgnYmx1cicsIGV2dCk7XG5cbiAgICAgICAgICBfdGhpcy5jaGFuZ2VGb2N1cyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgaXNWYWx1ZTogZnVuY3Rpb24gaXNWYWx1ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhYmVsUGxhY2Vob2xkZXIgPyB0cnVlIDogIXRoaXMudmFsdWU7XG4gICAgfSxcbiAgICBnZXRJY29uOiBmdW5jdGlvbiBnZXRJY29uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGFuZ2VyID8gdGhpcy52YWxJY29uRGFuZ2VyIDogdGhpcy53YXJuaW5nID8gdGhpcy52YWxJY29uV2FybmluZyA6IHRoaXMuc3VjY2VzcyA/IHRoaXMudmFsSWNvblN1Y2Nlc3MgOiAnJztcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBhbmltYXRpb25cbiAgICBjaGFuZ2VGb2N1czogZnVuY3Rpb24gY2hhbmdlRm9jdXMoYm9vbGVhbngpIHtcbiAgICAgIHRoaXMuaXNGb2N1cyA9IGJvb2xlYW54O1xuICAgIH0sXG4gICAgYmVmb3JlRW50ZXI6IGZ1bmN0aW9uIGJlZm9yZUVudGVyKGVsKSB7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAwO1xuICAgIH0sXG4gICAgZW50ZXI6IGZ1bmN0aW9uIGVudGVyKGVsLCBkb25lKSB7XG4gICAgICB2YXIgaCA9IGVsLnNjcm9sbEhlaWdodDtcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IGggKyAncHgnO1xuICAgICAgZG9uZSgpO1xuICAgIH0sXG4gICAgbGVhdmU6IGZ1bmN0aW9uIGxlYXZlKGVsKSB7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAwICsgJ3B4JztcbiAgICB9LFxuICAgIGZvY3VzSW5wdXQ6IGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7XG4gICAgICB0aGlzLiRyZWZzLnZzaW5wdXQuZm9jdXMoKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0lucHV0L3ZzSW5wdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzSW5wdXRfdnNJbnB1dHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0lucHV0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNJbnB1dC92c0lucHV0LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzSW5wdXRfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c0lucHV0X3ZzSW5wdXR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzSW5wdXR2dWVfdHlwZV90ZW1wbGF0ZV9pZF81ZDliNjZiM19sYW5nX2h0bWxfcmVuZGVyLFxuICB2c0lucHV0dnVlX3R5cGVfdGVtcGxhdGVfaWRfNWQ5YjY2YjNfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0lucHV0ID0gKHZzSW5wdXRfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0lucHV0L2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzSW5wdXQgPSAoZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHZzSW5wdXQubmFtZSwgdnNJbnB1dCk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzVGFicy92c1RhYnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM5OGZmMmMzJmxhbmc9aHRtbCZcbnZhciB2c1RhYnN2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zOThmZjJjM19sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24tdnMtdGFicyB2cy10YWJzXCIsY2xhc3M6WyhcInZzLXRhYnMtXCIgKyBfdm0uY29sb3IpLChcInZzLXRhYnMtcG9zaXRpb24tXCIgKyBfdm0ucG9zaXRpb24pXX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbi11bC10YWJzXCJ9LFtfYygndWwnLHtyZWY6XCJ1bFwiLHN0YXRpY0NsYXNzOlwidWwtdGFicyB2cy10YWJzLS11bFwiLGNsYXNzOlsoXCJ1bC10YWJzLVwiICsgX3ZtLmFsaWdubWVudCldfSxfdm0uX2woKF92bS5jaGlsZHJlbiksZnVuY3Rpb24oY2hpbGQsaW5kZXgpe3JldHVybiBfYygnbGknLHtyZWY6XCJsaVwiLHJlZkluRm9yOnRydWUsc3RhdGljQ2xhc3M6XCJ2cy10YWJzLS1saVwiLGNsYXNzOnsnYWN0aXZlQ2hpbGQnOl92bS5jaGlsZEFjdGl2ZSA9PSBpbmRleH0sc3R5bGU6KF92bS5jaGlsZEFjdGl2ZSA9PSBpbmRleCA/IF92bS5zdHlsZVRhYiA6IHt9KSxvbjp7XCJtb3VzZW92ZXJcIjpmdW5jdGlvbigkZXZlbnQpe192bS5ob3ZlciA9IHRydWV9LFwibW91c2VvdXRcIjpmdW5jdGlvbigkZXZlbnQpe192bS5ob3ZlciA9IGZhbHNlfX19LFtfYygnYnV0dG9uJyxfdm0uX2coX3ZtLl9iKHtzdGF0aWNDbGFzczpcInZzLXRhYnMtLWJ0blwiLHN0eWxlOihfdm0uc3R5bGVBbGlnbkljb24oY2hpbGQuaWNvbikpLGF0dHJzOntcInR5cGVcIjpcImJ1dHRvblwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5hY3RpdmVDaGlsZChpbmRleCl9fX0sJ2J1dHRvbicsY2hpbGQuYXR0cnMsZmFsc2UpLGNoaWxkLmxpc3RlbmVycyksWyhjaGlsZC5pY29uKT9fYygndnMtaWNvbicse3N0YXRpY0NsYXNzOlwidnMtdGFicy0tYnRuLWljb25cIixhdHRyczp7XCJpY29uLXBhY2tcIjpjaGlsZC5pY29uUGFjayxcImljb25cIjpjaGlsZC5pY29uLFwiY29sb3JcIjpfdm0uY29sb3J9fSk6X3ZtLl9lKCksKGNoaWxkLmxhYmVsKT9fYygnc3BhbicsW192bS5fdihfdm0uX3MoY2hpbGQubGFiZWwpKV0pOl92bS5fZSgpXSwxKSwoY2hpbGQudGFnKT9fYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJ2cy10YWJzLS1idG4tdGFnXCIsb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0uY2xpY2tUYWcoY2hpbGQpfX19LFtfYygndnMtaWNvbicse2F0dHJzOntcImljb24tcGFja1wiOmNoaWxkLmljb25QYWNrLFwiaWNvblwiOmNoaWxkLnRhZyxcImNvbG9yXCI6Y2hpbGQudGFnQ29sb3J9fSldLDEpOl92bS5fZSgpXSl9KSwwKSxfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwibGluZS12cy10YWJzXCIsc3R5bGU6KF92bS5zdHlsZXgpfSldKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24tc2xvdC10YWJzXCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKV0pfVxudmFyIHZzVGFic3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzM5OGZmMmMzX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUYWJzL3ZzVGFicy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzk4ZmYyYzMmbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0ljb24vdnNJY29uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYzU5MWI5YyZcbnZhciB2c0ljb252dWVfdHlwZV90ZW1wbGF0ZV9pZF8zYzU5MWI5Y19yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdpJyxfdm0uX2coX3ZtLl9iKHtzdGF0aWNDbGFzczpcInZzLWljb24gbm90cmFuc2xhdGUgaWNvbi1zY2FsZVwiLGNsYXNzOltfdm0uaWNvblBhY2ssIF92bS5pY29uUGFjayAhPSdtYXRlcmlhbC1pY29ucycgPyBfdm0uaWNvbiA6ICcnLF92bS5pY29uQ2xhc3MsX3ZtLmdldEJnLF92bS5nZXRCZ1NpemUseydyb3VuZCc6X3ZtLnJvdW5kfV0sc3R5bGU6KF92bS5pY29uU3R5bGUpfSwnaScsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLiRsaXN0ZW5lcnMpLFtfdm0uX3QoXCJkZWZhdWx0XCIsW192bS5fdihfdm0uX3MoX3ZtLmljb25QYWNrID09ICdtYXRlcmlhbC1pY29ucycgPyBfdm0uaWNvbiA6ICcnKSldKV0sMil9XG52YXIgdnNJY29udnVlX3R5cGVfdGVtcGxhdGVfaWRfM2M1OTFiOWNfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzSWNvbi92c0ljb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjNTkxYjljJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0ljb24vdnNJY29uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNJY29udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgaWNvbjoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgaWNvblBhY2s6IHtcbiAgICAgIGRlZmF1bHQ6ICdtYXRlcmlhbC1pY29ucycsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGNvbG9yOiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBiZzoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgc2l6ZToge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgcm91bmQ6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBpY29uQ2xhc3M6IGZ1bmN0aW9uIGljb25DbGFzcygpIHtcbiAgICAgIHZhciBjbGFzc2VzID0ge307XG4gICAgICBjbGFzc2VzW3RoaXMuc2l6ZV0gPSB0cnVlO1xuXG4gICAgICBpZiAodXRpbHNfY29sb3IuaXNDb2xvcih0aGlzLmNvbG9yKSkge1xuICAgICAgICBjbGFzc2VzW1widnMtaWNvbi1cIi5jb25jYXQodGhpcy5jb2xvcildID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfSxcbiAgICBpY29uU3R5bGU6IGZ1bmN0aW9uIGljb25TdHlsZSgpIHtcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IC8ocHgpLy50ZXN0KHRoaXMuc2l6ZSkgPyB0aGlzLnNpemUgOiAvKGVtKS8udGVzdCh0aGlzLnNpemUpID8gdGhpcy5zaXplIDogbnVsbCxcbiAgICAgICAgaGVpZ2h0OiAvKHB4KS8udGVzdCh0aGlzLnNpemUpID8gdGhpcy5zaXplIDogLyhlbSkvLnRlc3QodGhpcy5zaXplKSA/IHRoaXMuc2l6ZSA6IG51bGwsXG4gICAgICAgICdmb250LXNpemUnOiAvKHB4KS8udGVzdCh0aGlzLnNpemUpID8gdGhpcy5zaXplIDogLyhlbSkvLnRlc3QodGhpcy5zaXplKSA/IHRoaXMuc2l6ZSA6IG51bGwsXG4gICAgICAgIGNvbG9yOiB0aGlzLmdldENvbG9yLFxuICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLmdldEJnQ29sb3JcbiAgICAgIH07XG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfSxcbiAgICBnZXRCZzogZnVuY3Rpb24gZ2V0QmcoKSB7XG4gICAgICB2YXIgY2xhc3NlcyA9IHt9O1xuXG4gICAgICBpZiAodXRpbHNfY29sb3IuaXNDb2xvcih0aGlzLmJnKSkge1xuICAgICAgICBjbGFzc2VzW1wiY29uLXZzLWljb24tYmctXCIuY29uY2F0KHRoaXMuYmcpXSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbGFzc2VzO1xuICAgIH0sXG4gICAgZ2V0QmdTaXplOiBmdW5jdGlvbiBnZXRCZ1NpemUoKSB7XG4gICAgICB2YXIgY2xhc3NlcyA9IHt9O1xuXG4gICAgICBpZiAoWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnXS5pbmNsdWRlcyh0aGlzLnNpemUpKSB7XG4gICAgICAgIGNsYXNzZXNbXCJiZy1cIi5jb25jYXQodGhpcy5zaXplKV0gPSB0cnVlO1xuICAgICAgICBjbGFzc2VzWyd2cy1pY29uLWJnJ10gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9LFxuICAgIGdldENvbG9yOiBmdW5jdGlvbiBnZXRDb2xvcigpIHtcbiAgICAgIHJldHVybiB1dGlsc19jb2xvci5pc0NvbG9yKHRoaXMuY29sb3IpID8gdGhpcy5jb2xvciA6IHRoaXMuY29sb3I7XG4gICAgfSxcbiAgICBnZXRCZ0NvbG9yOiBmdW5jdGlvbiBnZXRCZ0NvbG9yKCkge1xuICAgICAgcmV0dXJuIHV0aWxzX2NvbG9yLmlzQ29sb3IodGhpcy5iZykgPyB0aGlzLmJnIDogdGhpcy5iZztcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0ljb24vdnNJY29uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0ljb25fdnNJY29udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzSWNvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzSWNvbi92c0ljb24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNJY29uX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNJY29uX3ZzSWNvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNJY29udnVlX3R5cGVfdGVtcGxhdGVfaWRfM2M1OTFiOWNfcmVuZGVyLFxuICB2c0ljb252dWVfdHlwZV90ZW1wbGF0ZV9pZF8zYzU5MWI5Y19zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNJY29uID0gKHZzSWNvbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1RhYnMvdnNUYWJzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG5cblxuXG5cblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1RhYnN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNUYWJzJyxcbiAgY29tcG9uZW50czoge1xuICAgIHZzSWNvbjogdnNJY29uXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgZGVmYXVsdDogJ3ByaW1hcnknLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB0YWdDb2xvcjoge1xuICAgICAgZGVmYXVsdDogJ3ByaW1hcnknLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBhbGlnbm1lbnQ6IHtcbiAgICAgIGRlZmF1bHQ6ICdsZWZ0JyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgcG9zaXRpb246IHtcbiAgICAgIGRlZmF1bHQ6ICd0b3AnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0b3B4OiAnYXV0bycsXG4gICAgICBoZWlnaHR4OiAyLFxuICAgICAgaG92ZXI6IGZhbHNlLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgY2hpbGRBY3RpdmU6IDAsXG4gICAgICBsZWZ0eDogMCxcbiAgICAgIHdpZHRoeDogMCxcbiAgICAgIHRoZXNlOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgc3R5bGVUYWI6IGZ1bmN0aW9uIHN0eWxlVGFiKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpXG4gICAgICB9O1xuICAgIH0sXG4gICAgc3R5bGV4OiBmdW5jdGlvbiBzdHlsZXgoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b3A6IFwiXCIuY29uY2F0KHRoaXMudG9weCwgXCJweFwiKSxcbiAgICAgICAgbGVmdDogXCJcIi5jb25jYXQodGhpcy5sZWZ0eCwgXCJweFwiKSxcbiAgICAgICAgd2lkdGg6IFwiXCIuY29uY2F0KHRoaXMud2lkdGh4LCBcInB4XCIpLFxuICAgICAgICBoZWlnaHQ6IFwiXCIuY29uY2F0KHRoaXMuaGVpZ2h0eCwgXCJweFwiKSxcbiAgICAgICAgYmFja2dyb3VuZDogXCJsaW5lYXItZ3JhZGllbnQoMzBkZWcsIFwiLmNvbmNhdCh1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKSwgXCIgMCUsIFwiKS5jb25jYXQodXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgLjUpLCBcIiAxMDAlKVwiKSxcbiAgICAgICAgYm94U2hhZG93OiBcIjBweCAwcHggOHB4IDBweCBcIi5jb25jYXQodXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgLjUpKSxcbiAgICAgICAgdHJhbnNmb3JtOiBcInNjYWxlWChcIi5jb25jYXQodGhpcy50aGVzZSA/IDEuMyA6IDEsIFwiKVwiKVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKGluZGV4KSB7XG4gICAgICB2YXIgYWN0aXZlSW5kZXggPSB0aGlzLnBhcnNlSW5kZXgoaW5kZXgpO1xuICAgICAgdGhpcy5hY3RpdmVDaGlsZChhY3RpdmVJbmRleCk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgYWN0aXZlSW5kZXggPSB0aGlzLnBhcnNlSW5kZXgodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5jaGlsZEFjdGl2ZSA9IGFjdGl2ZUluZGV4O1xuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmFjdGl2ZUNoaWxkKGFjdGl2ZUluZGV4LCB0cnVlKTtcbiAgICB9KTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGNsaWNrVGFnOiBmdW5jdGlvbiBjbGlja1RhZyhjaGlsZCkge1xuICAgICAgdGhpcy4kZW1pdCgnY2xpY2stdGFnJywgY2hpbGQpO1xuICAgIH0sXG4gICAgc3R5bGVBbGlnbkljb246IGZ1bmN0aW9uIHN0eWxlQWxpZ25JY29uKGljb24pIHtcbiAgICAgIHJldHVybiBpY29uID8gJ2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXInIDogJyc7XG4gICAgfSxcbiAgICBwYXJzZUluZGV4OiBmdW5jdGlvbiBwYXJzZUluZGV4KGluZGV4KSB7XG4gICAgICB2YXIgYWN0aXZlSW5kZXggPSB0aGlzLmNoaWxkQWN0aXZlO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPj0gdGhpcy4kY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy4kY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuJGNoaWxkcmVuW2luZGV4XS4kYXR0cnMuZGlzYWJsZWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gcGFyc2VJbnQoaW5kZXgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWN0aXZlSW5kZXg7XG4gICAgfSxcbiAgICBhY3RpdmVDaGlsZDogZnVuY3Rpb24gYWN0aXZlQ2hpbGQoaW5kZXgsIGluaXRpYWxBbmltYXRpb24pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpbml0aWFsQW5pbWF0aW9uID0gISFpbml0aWFsQW5pbWF0aW9uO1xuICAgICAgdmFyIGVsZW0gPSB0aGlzLiRyZWZzLmxpW2luZGV4XTtcblxuICAgICAgaWYgKHRoaXMuY2hpbGRBY3RpdmUgPT0gaW5kZXggJiYgIWluaXRpYWxBbmltYXRpb24pIHtcbiAgICAgICAgdGhpcy50aGVzZSA9IHRydWU7XG4gICAgICAgIGVsZW0uY2xhc3NMaXN0LmFkZCgnaXNBY3RpdmUnKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZWxlbS5jbGFzc0xpc3QucmVtb3ZlKCdpc0FjdGl2ZScpO1xuICAgICAgICAgIF90aGlzMi50aGVzZSA9IGZhbHNlO1xuICAgICAgICB9LCAyMDApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0sIGl0ZW1faW5kZXgpIHtcbiAgICAgICAgaWYgKGl0ZW1faW5kZXggIT0gaW5kZXgpIHtcbiAgICAgICAgICBpdGVtLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuY2hpbGRBY3RpdmUgPiBpbmRleCkge1xuICAgICAgICB0aGlzLiRjaGlsZHJlbltpbmRleF0uaW52ZXJ0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy4kY2hpbGRyZW5bdGhpcy5jaGlsZEFjdGl2ZV0uaW52ZXJ0ID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRjaGlsZHJlblt0aGlzLmNoaWxkQWN0aXZlXS5pbnZlcnQgPSB0cnVlO1xuICAgICAgICB0aGlzLiRjaGlsZHJlbltpbmRleF0uaW52ZXJ0ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGNoaWxkcmVuW2luZGV4XS5hY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy5jaGlsZEFjdGl2ZSA9IGluZGV4O1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLmNoaWxkQWN0aXZlKTtcblxuICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT0gJ2xlZnQnIHx8IHRoaXMucG9zaXRpb24gPT0gJ3JpZ2h0Jykge1xuICAgICAgICB0aGlzLiRjaGlsZHJlbltpbmRleF0udmVydGljYWwgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5nZVBvc2l0aW9uTGluZShlbGVtLCBpbml0aWFsQW5pbWF0aW9uKTtcbiAgICB9LFxuICAgIGNoYW5nZVBvc2l0aW9uTGluZTogZnVuY3Rpb24gY2hhbmdlUG9zaXRpb25MaW5lKGVsZW0sIGluaXRpYWxBbmltYXRpb24pIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgdGhpcy5wb3NpdGlvbiA9PSAncmlnaHQnKSB7XG4gICAgICAgIHRoaXMudG9weCA9IGVsZW0ub2Zmc2V0VG9wO1xuICAgICAgICB0aGlzLmhlaWdodHggPSBlbGVtLm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy53aWR0aHggPSAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICAgICAgICBfdGhpczMubGVmdHggPSBlbGVtLm9mZnNldExlZnQ7XG4gICAgICAgICAgX3RoaXMzLndpZHRoeCA9IGVsZW0ub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgX3RoaXMzLnRvcHggPSBlbGVtLm9mZnNldEhlaWdodCArIChlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtIF90aGlzMy4kcmVmcy51bC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghaW5pdGlhbEFuaW1hdGlvbikge1xuICAgICAgICAgIHVwZGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFRpbWVvdXQodXBkYXRlLCAxMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUYWJzL3ZzVGFicy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNUYWJzX3ZzVGFic3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c1RhYnN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1RhYnMvdnNUYWJzLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzVGFic19jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzVGFic192c1RhYnN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzVGFic3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzM5OGZmMmMzX2xhbmdfaHRtbF9yZW5kZXIsXG4gIHZzVGFic3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzM5OGZmMmMzX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNUYWJzID0gKHZzVGFic19jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1RhYnMvdnNUYWIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI1NDk4NGFlJmxhbmc9aHRtbCZcbnZhciB2c1RhYnZ1ZV90eXBlX3RlbXBsYXRlX2lkX2I1NDk4NGFlX2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCd0cmFuc2l0aW9uJyx7YXR0cnM6e1wibmFtZVwiOl92bS5pbnZlcnQ/X3ZtLnZlcnRpY2FsPydmYWRlLXRhYi12ZXJ0aWNhbC1pbnZlcnQnOidmYWRlLXRhYi1pbnZlcnQnOl92bS52ZXJ0aWNhbD8nZmFkZS10YWItdmVydGljYWwnOidmYWRlLXRhYid9fSxbKF92bS5hY3RpdmUpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbi10YWIgdnMtdGFicy0tY29udGVudFwifSxbX3ZtLl90KFwiZGVmYXVsdFwiKV0sMik6X3ZtLl9lKCldKX1cbnZhciB2c1RhYnZ1ZV90eXBlX3RlbXBsYXRlX2lkX2I1NDk4NGFlX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUYWJzL3ZzVGFiLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iNTQ5ODRhZSZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzVGFicy92c1RhYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNUYWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNUYWInLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIGxhYmVsOiB7XG4gICAgICBkZWZhdWx0OiAnTGFiZWwnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBpY29uOiB7XG4gICAgICBkZWZhdWx0OiAnJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdGFnOiB7XG4gICAgICBkZWZhdWx0OiAnJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgaWNvblBhY2s6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdtYXRlcmlhbC1pY29ucydcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZlcnRpY2FsOiBmYWxzZSxcbiAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICBpZDogbnVsbCxcbiAgICAgIGludmVydDogZmFsc2VcbiAgICB9O1xuICB9LFxuICB3YXRjaDoge1xuICAgIGxhYmVsOiBmdW5jdGlvbiBsYWJlbCh2YWwpIHtcbiAgICAgIHRoaXMuJHBhcmVudC5jaGlsZHJlblt0aGlzLmlkXS5sYWJlbCA9IHZhbDtcbiAgICB9LFxuICAgICckYXR0cnMnOiBmdW5jdGlvbiAkYXR0cnModmFsKSB7XG4gICAgICBjb25zb2xlLmxvZygnY2huYWdlZCBhdHRyJyk7XG4gICAgICB0aGlzLiRwYXJlbnQuY2hpbGRyZW5bdGhpcy5pZF0uYXR0cnMgPSB2YWw7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHRoaXMuaWQgPSB0aGlzLiRwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgIHRoaXMuJHBhcmVudC5jaGlsZHJlbi5wdXNoKHtcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxuICAgICAgaWNvbjogdGhpcy5pY29uLFxuICAgICAgaWNvblBhY2s6IHRoaXMuaWNvblBhY2ssXG4gICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgaWQ6IHRoaXMuJHBhcmVudC5jaGlsZHJlbi5sZW5ndGgsXG4gICAgICBsaXN0ZW5lcnM6IHRoaXMuJGxpc3RlbmVycyxcbiAgICAgIGF0dHJzOiB0aGlzLiRhdHRyc1xuICAgIH0pO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUYWJzL3ZzVGFiLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1RhYnNfdnNUYWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNUYWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1RhYnMvdnNUYWIudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNUYWJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c1RhYnNfdnNUYWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzVGFidnVlX3R5cGVfdGVtcGxhdGVfaWRfYjU0OTg0YWVfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNUYWJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF9iNTQ5ODRhZV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVGFiID0gKHZzVGFiX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUYWJzL2luZGV4LmpzXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbXBvbmVudHNfdnNUYWJzID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c1RhYnMubmFtZSwgdnNUYWJzKTtcbiAgVnVlLmNvbXBvbmVudCh2c1RhYi5uYW1lLCB2c1RhYik7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzU2xpZGVyL3ZzU2xpZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00Mzc0MjJjYSZsYW5nPWh0bWwmXG52YXIgdnNTbGlkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF80Mzc0MjJjYV9sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24tdnMtc2xpZGVyXCIsY2xhc3M6W1xuICAgIChcInZzLXNsaWRlci1cIiArIF92bS5jb2xvciksXG4gICAgeydkaXNhYmxlZHgnOl92bS5kaXNhYmxlZH1cbiAgXSxvbjp7XCJtb3VzZXdoZWVsXCI6ZnVuY3Rpb24oJGV2ZW50KXskZXZlbnQucHJldmVudERlZmF1bHQoKTtyZXR1cm4gX3ZtLm1vdXNld2hlZWx4KCRldmVudCl9LFwia2V5ZG93blwiOltmdW5jdGlvbigkZXZlbnQpe2lmKCEkZXZlbnQudHlwZS5pbmRleE9mKCdrZXknKSYmX3ZtLl9rKCRldmVudC5rZXlDb2RlLFwibGVmdFwiLDM3LCRldmVudC5rZXksW1wiTGVmdFwiLFwiQXJyb3dMZWZ0XCJdKSl7IHJldHVybiBudWxsOyB9aWYoJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDApeyByZXR1cm4gbnVsbDsgfXJldHVybiBfdm0ua2V5ZG93bkxlZnQoJGV2ZW50KX0sZnVuY3Rpb24oJGV2ZW50KXtpZighJGV2ZW50LnR5cGUuaW5kZXhPZigna2V5JykmJl92bS5faygkZXZlbnQua2V5Q29kZSxcInJpZ2h0XCIsMzksJGV2ZW50LmtleSxbXCJSaWdodFwiLFwiQXJyb3dSaWdodFwiXSkpeyByZXR1cm4gbnVsbDsgfWlmKCdidXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAyKXsgcmV0dXJuIG51bGw7IH1yZXR1cm4gX3ZtLmtleWRvd25SaWdodCgkZXZlbnQpfV19fSxbX2MoJ2J1dHRvbicse3JlZjpcInNsaWRlclwiLHN0YXRpY0NsYXNzOlwidnMtc2xpZGVyXCIsYXR0cnM6e1wiZGlzYWJsZWRcIjpfdm0uZGlzYWJsZWR9LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0uY2xpY2tTbGlkZXIoJGV2ZW50KSxfdm0uYWN0aXZlZCA9IHRydWV9fX0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1zbGlkZXItbGluZS1vbmVcIixjbGFzczp7J2hhc1RyYW5zaXRpb24nOl92bS5lZmZlY3R9LHN0eWxlOihfdm0uc3R5bGVMaW5lT25lKX0pLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1zbGlkZXItbGluZS10d29cIn0pLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1zbGlkZXItbGluZS1lZmVjdFwiLGNsYXNzOnsncnVuLWVmZmVjdCc6X3ZtLmVmZmVjdH0sc3R5bGU6KF92bS5zdHlsZUVmZWN0KX0pLF92bS5fbCgoX3ZtLmNvdW50VGlja3MpLGZ1bmN0aW9uKHRpY2ssaW5kZXgpe3JldHVybiAoX3ZtLnRpY2tzJiZ0aWNrKT9fYygnc3Bhbicse3N0YXRpY0NsYXNzOlwidnMtc2xpZGVyLS10aWNrXCIsY2xhc3M6eydpc0VuZCc6aW5kZXggPT0gX3ZtLmNvdW50VGlja3MtMX0sc3R5bGU6KF92bS5zdHlsZVRpY2tzKGluZGV4KSl9KTpfdm0uX2UoKX0pXSwyKSxfYygnYnV0dG9uJyx7cmVmOlwiY2lyY2xlMVwiLHN0YXRpY0NsYXNzOlwidnMtY2lyY2xlLXNsaWRlciB2cy1jaXJjbGVzLXNsaWRlciB2cy1zbGlkZXItLWNpcmNsZXMgdnMtc2xpZGVyLS1jaXJjbGVcIixjbGFzczp7XG4gICAgICAnaGFzVHJhbnNpdGlvbic6X3ZtLmVmZmVjdCxcbiAgICAgICdpc0VxdWFscyc6X3ZtLmlzRXF1YWxzLFxuICAgICAgJ2NoYW5nZVZhbHVlJzpfdm0uY2hhbmdlVmFsdWUsXG4gICAgICAnaXNFbmRWYWx1ZSc6X3ZtLnZhbHVlID09IF92bS5tYXhcbiAgICB9LHN0eWxlOihfdm0uc3R5bGVDaXJjbGUpLGF0dHJzOntcImRpc2FibGVkXCI6X3ZtLmRpc2FibGVkfSxvbjp7XCJ0b3VjaHN0YXJ0XCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0uYWN0aXZlRm9jdXMoJGV2ZW50KSxfdm0uYWN0aXZlZCA9IHRydWV9LFwibW91c2Vkb3duXCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0uYWN0aXZlRm9jdXMoJGV2ZW50KSxfdm0uYWN0aXZlZCA9IHRydWV9fX0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ0ZXh0LWNpcmNsZS1zbGlkZXIgdnMtc2xpZGVyLS1jaXJjbGUtdGV4dFwiLHN0eWxlOihfdm0uc3R5bGVUZXh0KX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLnZhbHVlQ2lyY2xlMSkrXCIgXCIpLChfdm0udGV4dEZpeGVkKT9fYygnc3BhbicsW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLnRleHRGaXhlZCkrXCIgXCIpXSk6X3ZtLl9lKCksX2MoJ3ZzLWljb24nLHthdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLmljb259fSldLDEpXSksKEFycmF5LmlzQXJyYXkoX3ZtLnZhbHVlKSk/X2MoJ2J1dHRvbicse3JlZjpcImNpcmNsZTJcIixzdGF0aWNDbGFzczpcInZzLWNpcmNsZS1zbGlkZXItdHdvIHZzLWNpcmNsZXMtc2xpZGVyIHZzLXNsaWRlci0tY2lyY2xlcyB2cy1zbGlkZXItLWNpcmNsZS10d29cIixjbGFzczp7XG4gICAgICAnaGFzVHJhbnNpdGlvbic6X3ZtLmVmZmVjdCxcbiAgICAgICdpc0VxdWFscyc6X3ZtLmlzRXF1YWxzLFxuICAgICAgJ2NoYW5nZVZhbHVlJzpfdm0uY2hhbmdlVmFsdWUsXG4gICAgICAnaXNFbmRWYWx1ZSc6X3ZtLnZhbHVlID09IF92bS5tYXhcbiAgICB9LHN0eWxlOihfdm0uc3R5bGVDaXJjbGVUd28pLGF0dHJzOntcImRpc2FibGVkXCI6X3ZtLmRpc2FibGVkfSxvbjp7XCJ0b3VjaHN0YXJ0XCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0uYWN0aXZlRm9jdXMoJGV2ZW50KSxfdm0udHdvID0gdHJ1ZSxfdm0uYWN0aXZlZCA9IHRydWV9LFwibW91c2Vkb3duXCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0uYWN0aXZlRm9jdXMoJGV2ZW50KSxfdm0udHdvID0gdHJ1ZSxfdm0uYWN0aXZlZCA9IHRydWV9fX0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ0ZXh0LWNpcmNsZS1zbGlkZXIgdnMtc2xpZGVyLS1jaXJjbGUtdGV4dFwiLHN0eWxlOihfdm0uc3R5bGVUZXh0KX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLnZhbHVlQ2lyY2xlMikrXCIgXCIpLChfdm0udGV4dEZpeGVkKT9fYygnc3BhbicsW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLnRleHRGaXhlZCkrXCIgXCIpXSk6X3ZtLl9lKCksKF92bS5pY29uKT9fYygnaScse3N0YXRpY0NsYXNzOlwibWF0ZXJpYWwtaWNvbnMgbm90cmFuc2xhdGVcIixhdHRyczp7XCJ0cmFuc2xhdGVcIjpcIm5vXCJ9fSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0uaWNvbikrXCIgXCIpXSk6X3ZtLl9lKCldKV0pOl92bS5fZSgpXSl9XG52YXIgdnNTbGlkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF80Mzc0MjJjYV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2xpZGVyL3ZzU2xpZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00Mzc0MjJjYSZsYW5nPWh0bWwmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguc2lnbi5qc1xudmFyIGVzX21hdGhfc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyOTFkXCIpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIudG8tZml4ZWQuanNcbnZhciBlc19udW1iZXJfdG9fZml4ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNTY1MFwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucGFyc2UtZmxvYXQuanNcbnZhciBlc19wYXJzZV9mbG9hdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJmYWRkXCIpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1NsaWRlci92c1NsaWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG5cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTbGlkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiBcIlZzU2xpZGVyXCIsXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHt9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgZGVmYXVsdDogXCJwcmltYXJ5XCIsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIG1heDoge1xuICAgICAgZGVmYXVsdDogMTAwLFxuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXVxuICAgIH0sXG4gICAgbWluOiB7XG4gICAgICBkZWZhdWx0OiAwLFxuICAgICAgdHlwZTogTnVtYmVyXG4gICAgfSxcbiAgICB0aWNrczoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBzdGVwOiB7XG4gICAgICBkZWZhdWx0OiAxLFxuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXVxuICAgIH0sXG4gICAgc3RlcERlY2ltYWxzOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICBkZWZhdWx0OiBcIm1hdGVyaWFsLWljb25zXCIsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHRleHRGaXhlZDoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGVmdHg6IDAsXG4gICAgICBsZWZ0VHdvOiAwLFxuICAgICAgZWZmZWN0OiBmYWxzZSxcbiAgICAgIHR3bzogZmFsc2UsXG4gICAgICBhY3RpdmVkOiBmYWxzZSxcbiAgICAgIGNoYW5nZVZhbHVlOiBmYWxzZSxcbiAgICAgIHZhbHVlQ2lyY2xlMTogMCxcbiAgICAgIHZhbHVlQ2lyY2xlMjogMFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNFcXVhbHM6IGZ1bmN0aW9uIGlzRXF1YWxzKCkge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlWzBdID09IHRoaXMudmFsdWVbMV0gOiBmYWxzZTtcbiAgICB9LFxuICAgIGNvdW50VGlja3M6IGZ1bmN0aW9uIGNvdW50VGlja3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXggKyAxO1xuICAgIH0sXG5cbiAgICAvKlxuICAgICAqIHN0eWxlcyBjb21wb25lbnRcbiAgICAgKi9cbiAgICBzdHlsZVNsaWRlcjogZnVuY3Rpb24gc3R5bGVTbGlkZXIoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKVxuICAgICAgfTtcbiAgICB9LFxuICAgIHN0eWxlTGluZU9uZTogZnVuY3Rpb24gc3R5bGVMaW5lT25lKCkge1xuICAgICAgdmFyIHdpZHRoeCA9IHRoaXMubGVmdFR3byAtIHRoaXMubGVmdHg7XG4gICAgICB2YXIgbGVmdHggPSB0aGlzLmxlZnR4O1xuXG4gICAgICBpZiAodGhpcy5sZWZ0eCA+IHRoaXMubGVmdFR3bykge1xuICAgICAgICB3aWR0aHggPSB0aGlzLmxlZnR4IC0gdGhpcy5sZWZ0VHdvO1xuICAgICAgICBsZWZ0eCA9IHRoaXMubGVmdFR3bztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IFwiXCIuY29uY2F0KHdpZHRoeCwgXCIlXCIpLFxuICAgICAgICBsZWZ0OiBcIlwiLmNvbmNhdChsZWZ0eCwgXCIlXCIpLFxuICAgICAgICBiYWNrZ3JvdW5kOiB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKVxuICAgICAgfTtcbiAgICB9LFxuICAgIHN0eWxlQ2lyY2xlOiBmdW5jdGlvbiBzdHlsZUNpcmNsZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IFwiXCIuY29uY2F0KHRoaXMubGVmdHgsIFwiJVwiKSxcbiAgICAgICAgYm9yZGVyOiBcIjJweCBzb2xpZCBcIi5jb25jYXQodXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSkpXG4gICAgICB9O1xuICAgIH0sXG4gICAgc3R5bGVDaXJjbGVUd286IGZ1bmN0aW9uIHN0eWxlQ2lyY2xlVHdvKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogXCJcIi5jb25jYXQodGhpcy5sZWZ0VHdvLCBcIiVcIiksXG4gICAgICAgIGJvcmRlcjogXCIycHggc29saWQgXCIuY29uY2F0KHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpKVxuICAgICAgfTtcbiAgICB9LFxuICAgIHN0eWxlRWZlY3Q6IGZ1bmN0aW9uIHN0eWxlRWZlY3QoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiBcIlwiLmNvbmNhdCh0aGlzLmxlZnR4LCBcIiVcIiksXG4gICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpXG4gICAgICB9O1xuICAgIH0sXG4gICAgc3R5bGVUZXh0OiBmdW5jdGlvbiBzdHlsZVRleHQoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLmFjdGl2ZWQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VQb3NpdGlvbigpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5nZVZhbHVlID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5jaGFuZ2VWYWx1ZSA9IGZhbHNlO1xuICAgICAgfSwgMzAwKTtcbiAgICAgIHRoaXMuJGVtaXQoXCJjaGFuZ2VcIiwgdGhpcy52YWx1ZSk7XG4gICAgfSxcbiAgICBsZWZ0eDogZnVuY3Rpb24gbGVmdHgoKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICBpZiAodGhpcy5sZWZ0eCA+IHRoaXMubGVmdFR3bykge1xuICAgICAgICAgIHRoaXMudmFsdWVDaXJjbGUxID0gdGhpcy52YWx1ZVsxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbHVlQ2lyY2xlMSA9IHRoaXMudmFsdWVbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVDaXJjbGUxID0gdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxlZnRUd286IHtcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmxlZnRUd28gPiB0aGlzLmxlZnR4KSB7XG4gICAgICAgICAgdGhpcy52YWx1ZUNpcmNsZTIgPSB0aGlzLnZhbHVlWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsdWVDaXJjbGUyID0gdGhpcy52YWx1ZVswXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlZXA6IHRydWVcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5jaGFuZ2VQb3NpdGlvbigpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgbW91c2V3aGVlbHg6IGZ1bmN0aW9uIG1vdXNld2hlZWx4KGV2dCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgIGlmIChldnQud2hlZWxEZWx0YSA+IDApIHtcbiAgICAgICAgICB2YXIgdmFsID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlKSArIHBhcnNlRmxvYXQodGhpcy5zdGVwKTtcbiAgICAgICAgICB2YWwgPSB0aGlzLnN0ZXBEZWNpbWFscyA/IHRoaXMudG9EZWNpbWFsKHZhbCkgOiBNYXRoLnJvdW5kKHZhbCk7XG5cbiAgICAgICAgICBpZiAodGhpcy52YWx1ZSA+PSB0aGlzLm1heCkge1xuICAgICAgICAgICAgdmFsID0gdGhpcy5tYXg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5sZWZ0eCA9IHZhbDtcbiAgICAgICAgICB0aGlzLiRlbWl0KFwiaW5wdXRcIiwgdmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX3ZhbCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgLSBwYXJzZUZsb2F0KHRoaXMuc3RlcCk7XG5cbiAgICAgICAgICBfdmFsID0gdGhpcy5zdGVwRGVjaW1hbHMgPyB0aGlzLnRvRGVjaW1hbChfdmFsKSA6IE1hdGgucm91bmQoX3ZhbCk7XG5cbiAgICAgICAgICBpZiAodGhpcy52YWx1ZSA8PSB0aGlzLm1pbikge1xuICAgICAgICAgICAgX3ZhbCA9IHRoaXMubWluO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMubGVmdHggPSBfdmFsO1xuICAgICAgICAgIHRoaXMuJGVtaXQoXCJpbnB1dFwiLCBfdmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAga2V5ZG93bkxlZnQ6IGZ1bmN0aW9uIGtleWRvd25MZWZ0KCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHZhciB2YWwgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUpIC0gcGFyc2VGbG9hdCh0aGlzLnN0ZXApO1xuICAgICAgICB2YWwgPSB0aGlzLnN0ZXBEZWNpbWFscyA/IHRoaXMudG9EZWNpbWFsKHZhbCkgOiBNYXRoLnJvdW5kKHZhbCk7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gdGhpcy5taW4pIHtcbiAgICAgICAgICB2YWwgPSB0aGlzLm1pbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGVmdHggPSB2YWw7XG4gICAgICAgIHRoaXMuJGVtaXQoXCJpbnB1dFwiLCB2YWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAga2V5ZG93blJpZ2h0OiBmdW5jdGlvbiBrZXlkb3duUmlnaHQoKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdmFyIHZhbCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgKyBwYXJzZUZsb2F0KHRoaXMuc3RlcCk7XG4gICAgICAgIHZhbCA9IHRoaXMuc3RlcERlY2ltYWxzID8gdGhpcy50b0RlY2ltYWwodmFsKSA6IE1hdGgucm91bmQodmFsKTtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZSA+PSB0aGlzLm1heCkge1xuICAgICAgICAgIHZhbCA9IHRoaXMubWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sZWZ0eCA9IHZhbDtcbiAgICAgICAgdGhpcy4kZW1pdChcImlucHV0XCIsIHZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjaGFuZ2VQb3NpdGlvbjogZnVuY3Rpb24gY2hhbmdlUG9zaXRpb24oKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICB0aGlzLmxlZnR4ID0gKHRoaXMudmFsdWVbMV0gLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbikgKiAxMDA7XG4gICAgICAgIHRoaXMubGVmdFR3byA9ICh0aGlzLnZhbHVlWzBdIC0gdGhpcy5taW4pIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pICogMTAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sZWZ0eCA9ICh0aGlzLnZhbHVlIC0gdGhpcy5taW4pIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pICogMTAwO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3R5bGVUaWNrczogZnVuY3Rpb24gc3R5bGVUaWNrcyhpbmRleCkge1xuICAgICAgdmFyIGxlbmd0aFBlclN0ZXAgPSAxMDAgLyAoKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gdGhpcy5zdGVwKTtcbiAgICAgIHZhciBzdGVwcyA9IGluZGV4IC8gbGVuZ3RoUGVyU3RlcDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IHN0ZXBzICogbGVuZ3RoUGVyU3RlcCArIFwiJVwiXG4gICAgICB9O1xuICAgIH0sXG4gICAgYWN0aXZlRm9jdXM6IGZ1bmN0aW9uIGFjdGl2ZUZvY3VzKCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5tb3VzZU1vdmV4KTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLnJlbW92ZUV2ZW50cyk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLm1vdXNlTW92ZXgpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCB0aGlzLnJlbW92ZUV2ZW50cyk7XG4gICAgfSxcbiAgICBtb3VzZU1vdmV4OiBmdW5jdGlvbiBtb3VzZU1vdmV4KGV2dCkge1xuICAgICAgdmFyIHNsaWRlciA9IHRoaXMuJHJlZnMuc2xpZGVyO1xuICAgICAgdmFyIGxlZnR4O1xuICAgICAgLypcbiAgICAgICAqIGNoYW5nZSBwb3NpdGlvbiBsZWZ0IGNpcmNsZSBhbmQgYmFyXG4gICAgICAgKi9cblxuICAgICAgaWYgKGV2dC50eXBlID09IFwidG91Y2htb3ZlXCIpIHtcbiAgICAgICAgbGVmdHggPSBldmVudC50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFggLSBzbGlkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlZnR4ID0gZXZ0LmNsaWVudFggLSBzbGlkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgIH1cblxuICAgICAgaWYgKE1hdGguc2lnbihsZWZ0eCkgPT0gLTEpIHtcbiAgICAgICAgbGVmdHggPSAwO1xuICAgICAgfSBlbHNlIGlmIChsZWZ0eCA+IHNsaWRlci5jbGllbnRXaWR0aCkge1xuICAgICAgICBsZWZ0eCA9IHNsaWRlci5jbGllbnRXaWR0aDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFuZ2VMZWZ0KGxlZnR4KTtcbiAgICB9LFxuICAgIHJlbW92ZUV2ZW50czogZnVuY3Rpb24gcmVtb3ZlRXZlbnRzKCkge1xuICAgICAgdGhpcy50d28gPSB0aGlzLmFjdGl2ZWQgPSBmYWxzZTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLnJlbW92ZUV2ZW50cyk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm1vdXNlTW92ZXgpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy5tb3VzZU1vdmV4KTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgdGhpcy5yZW1vdmVFdmVudHMpO1xuICAgIH0sXG4gICAgY2xpY2tTbGlkZXI6IGZ1bmN0aW9uIGNsaWNrU2xpZGVyKGV2dCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBzbGlkZXIgPSB0aGlzLiRyZWZzLnNsaWRlcjtcbiAgICAgIHZhciBsZWZ0eCA9IGV2dC5jbGllbnRYIC0gc2xpZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICB0aGlzLmVmZmVjdCA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLmVmZmVjdCA9IGZhbHNlO1xuICAgICAgfSwgMjAwKTtcbiAgICAgIHZhciBwZXJjZW50WCA9IE1hdGgucm91bmQobGVmdHggLyBzbGlkZXIuY2xpZW50V2lkdGggKiAxMDApO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICBpZiAoTWF0aC5hYnMocGVyY2VudFggLSB0aGlzLmxlZnR4KSA+IE1hdGguYWJzKHBlcmNlbnRYIC0gdGhpcy5sZWZ0VHdvKSkge1xuICAgICAgICAgIHRoaXMudHdvID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnR3byA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hhbmdlTGVmdChsZWZ0eCk7XG4gICAgfSxcbiAgICBjaGFuZ2VMZWZ0OiBmdW5jdGlvbiBjaGFuZ2VMZWZ0KGxlZnR4KSB7XG4gICAgICB2YXIgc2xpZGVyID0gdGhpcy4kcmVmcy5zbGlkZXI7XG4gICAgICB2YXIgcGVyY2VudFggPSBsZWZ0eCAvIHNsaWRlci5jbGllbnRXaWR0aCAqIDEwMDtcbiAgICAgIHZhciBsZW5ndGhQZXJTdGVwID0gMTAwIC8gKCh0aGlzLm1heCAtIHRoaXMubWluKSAvIHRoaXMuc3RlcCk7XG4gICAgICB2YXIgc3RlcHMgPSBNYXRoLnJvdW5kKHBlcmNlbnRYIC8gbGVuZ3RoUGVyU3RlcCk7XG4gICAgICB2YXIgdmFsID0gc3RlcHMgKiBsZW5ndGhQZXJTdGVwICogKHRoaXMubWF4IC0gdGhpcy5taW4pICogMC4wMSArIHRoaXMubWluO1xuICAgICAgdmFsID0gdGhpcy5zdGVwRGVjaW1hbHMgPyB0aGlzLnRvRGVjaW1hbCh2YWwpIDogTWF0aC5yb3VuZCh2YWwpO1xuXG4gICAgICBpZiAodmFsID4gdGhpcy5tYXgpIHtcbiAgICAgICAgdmFsID0gdGhpcy5tYXg7XG4gICAgICAgIHRoaXNbdGhpcy50d28gPyBcImxlZnRUd29cIiA6IFwibGVmdHhcIl0gPSAxMDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzW3RoaXMudHdvID8gXCJsZWZ0VHdvXCIgOiBcImxlZnR4XCJdID0gc3RlcHMgKiBsZW5ndGhQZXJTdGVwO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICB2YXIgdmFsdWVOZXcgPSB2YWw7XG5cbiAgICAgICAgaWYgKHZhbCA9PSB0aGlzLm1heCkge1xuICAgICAgICAgIHZhbHVlTmV3ID0gdGhpcy5tYXg7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdmFscyA9IHRoaXMudmFsdWU7XG4gICAgICAgIHZhciBtaW4gPSBNYXRoLnJvdW5kKHRoaXMubGVmdFR3byAvIDEwMCAqICh0aGlzLm1heCAvIHRoaXMuc3RlcCkpICogdGhpcy5zdGVwO1xuICAgICAgICB2YXIgbWF4ID0gTWF0aC5yb3VuZCh0aGlzLmxlZnR4IC8gMTAwICogKHRoaXMubWF4IC8gdGhpcy5zdGVwKSkgKiB0aGlzLnN0ZXA7XG5cbiAgICAgICAgaWYgKHRoaXMudHdvKSB7XG4gICAgICAgICAgaWYgKG1pbiA8IG1heCkge1xuICAgICAgICAgICAgdGhpcy4kZW1pdChcImlucHV0XCIsIFt2YWx1ZU5ldywgdmFsc1sxXV0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAobWluID4gbWF4KSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KFwiaW5wdXRcIiwgW3ZhbHNbMF0sIHZhbHVlTmV3XSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoXCJpbnB1dFwiLCBbdmFsdWVOZXcsIHZhbHVlTmV3XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChtaW4gPiBtYXgpIHtcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoXCJpbnB1dFwiLCBbdmFsdWVOZXcsIHZhbHNbMV1dKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1pbiA8IG1heCkge1xuICAgICAgICAgICAgdGhpcy4kZW1pdChcImlucHV0XCIsIFt2YWxzWzBdLCB2YWx1ZU5ld10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KFwiaW5wdXRcIiwgW3ZhbHVlTmV3LCB2YWx1ZU5ld10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kZW1pdChcImlucHV0XCIsIHZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0b0RlY2ltYWw6IGZ1bmN0aW9uIHRvRGVjaW1hbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUudG9GaXhlZCgxKSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNTbGlkZXIvdnNTbGlkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzU2xpZGVyX3ZzU2xpZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzU2xpZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNTbGlkZXIvdnNTbGlkZXIudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNTbGlkZXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c1NsaWRlcl92c1NsaWRlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNTbGlkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF80Mzc0MjJjYV9sYW5nX2h0bWxfcmVuZGVyLFxuICB2c1NsaWRlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQzNzQyMmNhX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTbGlkZXIgPSAodnNTbGlkZXJfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NsaWRlci9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c1NsaWRlciA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNTbGlkZXIubmFtZSwgdnNTbGlkZXIpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0lucHV0TnVtYmVyL3ZzSW5wdXROdW1iZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZjZjdhZGU0Jmxhbmc9aHRtbCZcbnZhciB2c0lucHV0TnVtYmVydnVlX3R5cGVfdGVtcGxhdGVfaWRfNmNmN2FkZTRfbGFuZ19odG1sX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtaW5wdXQtbnVtYmVyXCIsY2xhc3M6W1xuICAgIChcInZzLWlucHV0LW51bWJlci1zaXplLVwiICsgX3ZtLnNpemUpLFxuICAgIChcInZzLWlucHV0LW51bWJlci1cIiArIF92bS5jb2xvciksXG4gICAgeydpc0NoYW5nZVZhbHVlJzpfdm0uaXNDaGFuZ2VWYWx1ZX1cbiAgXX0sW19jKCdidXR0b24nLHtkaXJlY3RpdmVzOlt7bmFtZTpcInJlcGVhdC1jbGlja1wiLHJhd05hbWU6XCJ2LXJlcGVhdC1jbGlja1wiLHZhbHVlOihfdm0ubGVzcyksZXhwcmVzc2lvbjpcImxlc3NcIn1dLHN0YXRpY0NsYXNzOlwiYnRuLWxlc3MgdnMtaW5wdXQtbnVtYmVyLS1idXR0b24tbGVzc1wiLGNsYXNzOntcbiAgICAgIGxpbWl0Ol92bS52YWx1ZSA8PSBfdm0ubWluXG4gICAgfSxzdHlsZTooe1xuICAgICAgYmFja2dyb3VuZDpfdm0uZ2V0Q29sb3JcbiAgICB9KSxhdHRyczp7XCJkaXNhYmxlZFwiOl92bS4kYXR0cnMuZGlzYWJsZWQsXCJ0eXBlXCI6XCJidXR0b25cIn19LFtfYygndnMtaWNvbicse2F0dHJzOntcImljb24tcGFja1wiOl92bS5pY29uUGFjayxcImljb25cIjpfdm0uaWNvbkRlY319KV0sMSksKF92bS5sYWJlbCk/X2MoJ3NwYW4nLFtfdm0uX3YoX3ZtLl9zKF92bS5sYWJlbCkpXSk6X3ZtLl9lKCksX2MoJ2lucHV0Jyxfdm0uX2coX3ZtLl9iKHtyZWY6XCJpbnB1dFwiLHN0YXRpY0NsYXNzOlwidnMtaW5wdXQtbnVtYmVyLS1pbnB1dFwiLHN0eWxlOihfdm0uc3R5bGVJbnB1dCksYXR0cnM6e1wiZGlzYWJsZWRcIjpfdm0uaXNEaXNhYmxlZCxcInR5cGVcIjpcIm51bWJlclwiLFwibWluXCI6X3ZtLm1pbixcIm1heFwiOl92bS5tYXh9LGRvbVByb3BzOntcInZhbHVlXCI6X3ZtLnZhbHVlfX0sJ2lucHV0Jyxfdm0uJGF0dHJzLGZhbHNlKSxfdm0ubGlzdGVuZXJzKSksX2MoJ2J1dHRvbicse2RpcmVjdGl2ZXM6W3tuYW1lOlwicmVwZWF0LWNsaWNrXCIscmF3TmFtZTpcInYtcmVwZWF0LWNsaWNrXCIsdmFsdWU6KF92bS5wbHVzKSxleHByZXNzaW9uOlwicGx1c1wifV0sc3RhdGljQ2xhc3M6XCJidG4tcGx1cyB2cy1pbnB1dC1udW1iZXItLWJ1dHRvbi1wbHVzXCIsY2xhc3M6e1xuICAgICAgbGltaXQ6X3ZtLnZhbHVlID49IF92bS5tYXggJiYgX3ZtLm1heCAhPT0gbnVsbFxuICAgIH0sc3R5bGU6KHtcbiAgICAgIGJhY2tncm91bmQ6X3ZtLmdldENvbG9yXG4gICAgfSksYXR0cnM6e1wiZGlzYWJsZWRcIjpfdm0uJGF0dHJzLmRpc2FibGVkLFwidHlwZVwiOlwiYnV0dG9uXCJ9fSxbX2MoJ3ZzLWljb24nLHthdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLmljb25JbmN9fSldLDEpXSl9XG52YXIgdnNJbnB1dE51bWJlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzZjZjdhZGU0X2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNJbnB1dE51bWJlci92c0lucHV0TnVtYmVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02Y2Y3YWRlNCZsYW5nPWh0bWwmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvb3MtYnJvd3NlcmlmeS9icm93c2VyLmpzXG52YXIgYnJvd3NlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwZDY3XCIpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0lucHV0TnVtYmVyL3ZzSW5wdXROdW1iZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5mdW5jdGlvbiB2c0lucHV0TnVtYmVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gdnNJbnB1dE51bWJlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyB2c0lucHV0TnVtYmVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyB2c0lucHV0TnVtYmVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0lucHV0TnVtYmVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzSW5wdXROdW1iZXInLFxuICBkaXJlY3RpdmVzOiB7XG4gICAgcmVwZWF0Q2xpY2s6IHtcbiAgICAgIGJpbmQ6IGZ1bmN0aW9uIGJpbmQoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgICAgIHZhciBpbnRlcnZhbHggPSBudWxsO1xuICAgICAgICB2YXIgc3RhcnRUO1xuXG4gICAgICAgIHZhciBmdW5jdGlvbnggPSBmdW5jdGlvbiBmdW5jdGlvbngoKSB7XG4gICAgICAgICAgcmV0dXJuIHZub2RlLmNvbnRleHRbYmluZGluZy5leHByZXNzaW9uXS5hcHBseSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBidWNsZSA9IGZ1bmN0aW9uIGJ1Y2xlKCkge1xuICAgICAgICAgIGlmIChuZXcgRGF0ZSgpIC0gc3RhcnRUIDwgMTAwKSB7XG4gICAgICAgICAgICBmdW5jdGlvbngoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFseCk7XG4gICAgICAgICAgaW50ZXJ2YWx4ID0gbnVsbDtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZXZlbnR4ID0gZnVuY3Rpb24gZXZlbnR4KGUpIHtcbiAgICAgICAgICBpZiAoZS5idXR0b24gIT09IDApIHJldHVybjtcbiAgICAgICAgICBzdGFydFQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICAgICAgdmFyIGVzY3VjaGFuZG8gPSBmdW5jdGlvbiBlc2N1Y2hhbmRvKCkge1xuICAgICAgICAgICAgaWYgKGJ1Y2xlKSB7XG4gICAgICAgICAgICAgIGJ1Y2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBlc2N1Y2hhbmRvLCBmYWxzZSk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBlc2N1Y2hhbmRvLCBmYWxzZSk7XG4gICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGVzY3VjaGFuZG8sIGZhbHNlKTtcbiAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFseCk7XG4gICAgICAgICAgaW50ZXJ2YWx4ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb254LCAxMDApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGV2ZW50eCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge30sXG4gICAgY29sb3I6IHtcbiAgICAgIGRlZmF1bHQ6ICdwcmltYXJ5JyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIG1heDoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ11cbiAgICB9LFxuICAgIG1pbjoge1xuICAgICAgZGVmYXVsdDogMCxcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ11cbiAgICB9LFxuICAgIHNpemU6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBpY29uRGVjOiB7XG4gICAgICBkZWZhdWx0OiAncmVtb3ZlJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgaWNvbkluYzoge1xuICAgICAgZGVmYXVsdDogJ2FkZCcsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHN0ZXA6IHtcbiAgICAgIGRlZmF1bHQ6IDEsXG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddXG4gICAgfSxcbiAgICBpc0Rpc2FibGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzQ2hhbmdlVmFsdWU6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZUlucHV0OiBmdW5jdGlvbiBzdHlsZUlucHV0KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IFwiXCIuY29uY2F0KHRoaXMuZ2V0TGVuZ3RoLCBcInB4XCIpXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0TGVuZ3RoOiBmdW5jdGlvbiBnZXRMZW5ndGgoKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCAqIDkuMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0Q29sb3I6IGZ1bmN0aW9uIGdldENvbG9yKCkge1xuICAgICAgcmV0dXJuIHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpO1xuICAgIH0sXG4gICAgbGlzdGVuZXJzOiBmdW5jdGlvbiBsaXN0ZW5lcnMoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gdnNJbnB1dE51bWJlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX29iamVjdFNwcmVhZCh7fSwgdGhpcy4kbGlzdGVuZXJzLCB7XG4gICAgICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoZXZ0KSB7XG4gICAgICAgICAgaWYgKHBhcnNlRmxvYXQoX3RoaXMudmFsdWUpID4gcGFyc2VGbG9hdChfdGhpcy5tYXgpKSB7XG4gICAgICAgICAgICBfdGhpcy4kZW1pdCgnaW5wdXQnLCBfdGhpcy5tYXgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocGFyc2VGbG9hdChfdGhpcy52YWx1ZSkgPCBwYXJzZUZsb2F0KF90aGlzLm1pbikpIHtcbiAgICAgICAgICAgIF90aGlzLiRlbWl0KCdpbnB1dCcsIF90aGlzLm1pbik7XG5cbiAgICAgICAgICAgIF90aGlzLiRlbWl0KCdibHVyJywgZXZ0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGlucHV0OiBmdW5jdGlvbiBpbnB1dChldnQpIHtcbiAgICAgICAgICBfdGhpcy4kZW1pdCgnaW5wdXQnLCBldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLmlzQ2hhbmdlVmFsdWUgPSB0cnVlO1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5pc0NoYW5nZVZhbHVlID0gZmFsc2U7XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHBsdXM6IGZ1bmN0aW9uIHBsdXMoKSB7XG4gICAgICB2YXIgbmV3VmFsdWU7XG5cbiAgICAgIGlmICh0aGlzLnZhbHVlID09PSAnJykge1xuICAgICAgICBuZXdWYWx1ZSA9IDA7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgbmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMubWF4ID8gcGFyc2VGbG9hdCh0aGlzLnZhbHVlKSA8IHBhcnNlRmxvYXQodGhpcy5tYXgpIDogdHJ1ZSkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlKSArIHBhcnNlRmxvYXQodGhpcy5zdGVwKTtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGVzczogZnVuY3Rpb24gbGVzcygpIHtcbiAgICAgIHZhciBuZXdWYWx1ZTtcblxuICAgICAgaWYgKHRoaXMudmFsdWUgPT09ICcnKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gMDtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBuZXdWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5taW4gPyBwYXJzZUZsb2F0KHRoaXMudmFsdWUpID4gcGFyc2VGbG9hdCh0aGlzLm1pbikgOiB0cnVlKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUpIC0gcGFyc2VGbG9hdCh0aGlzLnN0ZXApO1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNJbnB1dE51bWJlci92c0lucHV0TnVtYmVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0lucHV0TnVtYmVyX3ZzSW5wdXROdW1iZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNJbnB1dE51bWJlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzSW5wdXROdW1iZXIvdnNJbnB1dE51bWJlci52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0lucHV0TnVtYmVyX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNJbnB1dE51bWJlcl92c0lucHV0TnVtYmVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0lucHV0TnVtYmVydnVlX3R5cGVfdGVtcGxhdGVfaWRfNmNmN2FkZTRfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNJbnB1dE51bWJlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzZjZjdhZGU0X2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNJbnB1dE51bWJlciA9ICh2c0lucHV0TnVtYmVyX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNJbnB1dE51bWJlci9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c0lucHV0TnVtYmVyID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c0lucHV0TnVtYmVyLm5hbWUsIHZzSW5wdXROdW1iZXIpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1Rvb2x0aXAvdnNUb29sdGlwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jZDYwODgzYyZcbnZhciB2c1Rvb2x0aXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF9jZDYwODgzY19yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtyZWY6XCJjb252c3Rvb2x0aXBcIixzdGF0aWNDbGFzczpcImNvbi12cy10b29sdGlwXCIsb246e1wibW91c2VsZWF2ZVwiOl92bS5tb3VzZWxlYXZleCxcIm1vdXNlZW50ZXJcIjpfdm0ubW91c2VlbnRlcnh9fSxbX2MoJ3RyYW5zaXRpb24nLHthdHRyczp7XCJuYW1lXCI6XCJ0b29sdGlwLWZhZGVcIn19LFtfYygnZGl2Jyx7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOihfdm0uYWN0aXZlVG9vbHRpcCksZXhwcmVzc2lvbjpcImFjdGl2ZVRvb2x0aXBcIn1dLHJlZjpcInZzdG9vbHRpcFwiLHN0YXRpY0NsYXNzOlwidnMtdG9vbHRpcFwiLGNsYXNzOlsoXCJ2cy10b29sdGlwLVwiICsgKF92bS5wb3NpdGlvbnggfHwgX3ZtLnBvc2l0aW9uKSksKFwidnMtdG9vbHRpcC1cIiArIF92bS5jb2xvciksIHsnYWZ0ZXItbm9uZSc6IF92bS5ub25lQWZ0ZXJ9XSxzdHlsZTooX3ZtLnN0eWxlKX0sWyhfdm0udGl0bGUpP19jKCdoNCcsW192bS5fdihfdm0uX3MoX3ZtLnRpdGxlKSldKTpfdm0uX2UoKSxfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS50ZXh0KStcIiBcIildKV0pLF92bS5fdChcImRlZmF1bHRcIildLDIpfVxudmFyIHZzVG9vbHRpcHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2NkNjA4ODNjX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1Rvb2x0aXAvdnNUb29sdGlwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jZDYwODgzYyZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNUb29sdGlwL3ZzVG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1Rvb2x0aXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNUb29sdGlwJyxcbiAgcHJvcHM6IHtcbiAgICB0aXRsZToge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl1cbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgcG9zaXRpb246IHtcbiAgICAgIGRlZmF1bHQ6ICd0b3AnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBkZWxheToge1xuICAgICAgZGVmYXVsdDogJzBzJyxcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ11cbiAgICB9LFxuICAgIGFjdGl2ZToge1xuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHR5cGU6IFtCb29sZWFuXVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29yZHM6IHt9LFxuICAgICAgYWN0aXZlVG9vbHRpcDogZmFsc2UsXG4gICAgICB3aWR0aHg6ICdhdXRvJyxcbiAgICAgIHBvc2l0aW9ueDogbnVsbCxcbiAgICAgIG5vbmVBZnRlcjogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHN0eWxlOiBmdW5jdGlvbiBzdHlsZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IHRoaXMuY29yZHMubGVmdCxcbiAgICAgICAgdG9wOiB0aGlzLmNvcmRzLnRvcCxcbiAgICAgICAgdHJhbnNpdGlvbkRlbGF5OiB0aGlzLmFjdGl2ZVRvb2x0aXAgPyB0aGlzLmRlbGF5IDogJzBzJyxcbiAgICAgICAgYmFja2dyb3VuZDogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSksXG4gICAgICAgIHdpZHRoOiB0aGlzLndpZHRoeFxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7Ly8gdXRpbHMuaW5zZXJ0Qm9keSh0aGlzLiRyZWZzLnZzdG9vbHRpcClcbiAgfSxcbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCgpIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLiRyZWZzLmNvbnZzdG9vbHRpcC5jaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChub2RlcyA9PT0gMSkge1xuICAgICAgdGhpcy5hY3RpdmVUb29sdGlwID0gZmFsc2U7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgbW91c2VlbnRlcng6IGZ1bmN0aW9uIG1vdXNlZW50ZXJ4KCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVG9vbHRpcCA9IHRydWU7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB1dGlscy5pbnNlcnRCb2R5KF90aGlzLiRyZWZzLnZzdG9vbHRpcCk7XG5cbiAgICAgICAgICBfdGhpcy5jaGFuZ2VQb3NpdGlvbihfdGhpcy4kcmVmcy5jb252c3Rvb2x0aXAsIF90aGlzLiRyZWZzLnZzdG9vbHRpcCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgbW91c2VsZWF2ZXg6IGZ1bmN0aW9uIG1vdXNlbGVhdmV4KCkge1xuICAgICAgdGhpcy5hY3RpdmVUb29sdGlwID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLiRyZWZzLnZzdG9vbHRpcCkge1xuICAgICAgICB1dGlscy5yZW1vdmVCb2R5KHRoaXMuJHJlZnMudnN0b29sdGlwKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNoYW5nZVBvc2l0aW9uOiBmdW5jdGlvbiBjaGFuZ2VQb3NpdGlvbihlbHhFdmVudCwgdG9vbHRpcCkge1xuICAgICAgdGhpcy5ub25lQWZ0ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMucG9zaXRpb254ID0gbnVsbDtcbiAgICAgIHZhciBlbHggPSBlbHhFdmVudC5jbG9zZXN0KCcuY29uLXZzLXRvb2x0aXAnKTtcbiAgICAgIHZhciBzY3JvbGxUb3B4ID0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICB2YXIgdG9weCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxUb3B4IC0gdG9vbHRpcC5jbGllbnRIZWlnaHQgLSA0O1xuICAgICAgdmFyIGxlZnR4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSB0b29sdGlwLmNsaWVudFdpZHRoIC8gMiArIGVseC5jbGllbnRXaWR0aCAvIDI7XG4gICAgICB2YXIgd2lkdGh4ID0gZWx4LmNsaWVudFdpZHRoO1xuXG4gICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgdG9weCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxUb3B4ICsgZWx4LmNsaWVudEhlaWdodCArIDQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucG9zaXRpb24gPT09ICdsZWZ0Jykge1xuICAgICAgICBsZWZ0eCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gdG9vbHRpcC5jbGllbnRXaWR0aCAtIDQ7XG4gICAgICAgIHRvcHggPSBlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgc2Nyb2xsVG9weCArIGVseC5jbGllbnRIZWlnaHQgLyAyIC0gdG9vbHRpcC5jbGllbnRIZWlnaHQgLyAyO1xuXG4gICAgICAgIGlmIChNYXRoLnNpZ24obGVmdHgpID09PSAtMSkge1xuICAgICAgICAgIGxlZnR4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgICAgdG9weCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxUb3B4ICsgZWx4LmNsaWVudEhlaWdodCArIDQ7XG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnggPSAnYm90dG9tJztcbiAgICAgICAgICB0aGlzLm5vbmVBZnRlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICBsZWZ0eCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgZWx4LmNsaWVudFdpZHRoICsgNDtcbiAgICAgICAgdG9weCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxUb3B4ICsgZWx4LmNsaWVudEhlaWdodCAvIDIgLSB0b29sdGlwLmNsaWVudEhlaWdodCAvIDI7XG5cbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIC0gKGxlZnR4ICsgdG9vbHRpcC5jbGllbnRXaWR0aCkgPD0gMjApIHtcbiAgICAgICAgICBsZWZ0eCA9IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gdG9vbHRpcC5jbGllbnRXaWR0aCAvIDIgLSAxMDtcbiAgICAgICAgICB0b3B4ID0gZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHNjcm9sbFRvcHggKyBlbHguY2xpZW50SGVpZ2h0ICsgNDtcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ueCA9ICdib3R0b20nO1xuICAgICAgICAgIHRoaXMubm9uZUFmdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmNvcmRzID0ge1xuICAgICAgICBsZWZ0OiBcIlwiLmNvbmNhdChsZWZ0eCwgXCJweFwiKSxcbiAgICAgICAgdG9wOiBcIlwiLmNvbmNhdCh0b3B4LCBcInB4XCIpLFxuICAgICAgICB3aWR0aDogXCJcIi5jb25jYXQod2lkdGh4LCBcInB4XCIpXG4gICAgICB9O1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVG9vbHRpcC92c1Rvb2x0aXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVG9vbHRpcF92c1Rvb2x0aXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNUb29sdGlwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUb29sdGlwL3ZzVG9vbHRpcC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1Rvb2x0aXBfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c1Rvb2x0aXBfdnNUb29sdGlwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1Rvb2x0aXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF9jZDYwODgzY19yZW5kZXIsXG4gIHZzVG9vbHRpcHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2NkNjA4ODNjX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1Rvb2x0aXAgPSAodnNUb29sdGlwX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUb29sdGlwL2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzVG9vbHRpcCA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNUb29sdGlwLm5hbWUsIHZzVG9vbHRpcCk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzVXBsb2FkL3ZzVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Nzk0MDVjZSZcbnZhciB2c1VwbG9hZHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzc3OTQwNWNlX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29uLXVwbG9hZFwifSxbKF92bS52aWV3QWN0aXZlKT9fYygndmlldy11cGxvYWQnLHthdHRyczp7XCJzcmNcIjpfdm0udmlld1NyY319KTpfdm0uX2UoKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24taW1nLXVwbG9hZFwifSxbX3ZtLl9sKChfdm0uZ2V0RmlsZXNGaWx0ZXIpLGZ1bmN0aW9uKGltZyxpbmRleCl7cmV0dXJuIF9jKCdkaXYnLHtrZXk6aW5kZXgsc3RhdGljQ2xhc3M6XCJpbWctdXBsb2FkXCIsY2xhc3M6e1xuICAgICAgICAnZmlsZUVycm9yJzppbWcuZXJyb3IsXG4gICAgICAgICdyZW1vdmVJdGVtJzpfdm0uaXRlbVJlbW92ZS5pbmNsdWRlcyhpbmRleClcbiAgICAgIH19LFtfYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJidG4teC1maWxlXCIsYXR0cnM6e1widHlwZVwiOlwiYnV0dG9uXCJ9LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLnJlbW92ZUZpbGUoaW5kZXgpfX19LFtfYygnaScse3N0YXRpY0NsYXNzOlwibWF0ZXJpYWwtaWNvbnMgbm90cmFuc2xhdGVcIixhdHRyczp7XCJ0cmFuc2xhdGVcIjpcIm5vXCJ9fSxbX3ZtLl92KFwiIGNsZWFyIFwiKV0pXSksKF92bS5zaG93VXBsb2FkQnV0dG9uKT9fYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJidG4tdXBsb2FkLWZpbGVcIixjbGFzczp7XG4gICAgICAgICAgJ29uLXByb2dyZXNzJzppbWcucGVyY2VudCxcbiAgICAgICAgICAncmVhZHktcHJvZ3Jlc3MnOmltZy5wZXJjZW50ID49IDEwMFxuICAgICAgICB9LHN0eWxlOih7XG4gICAgICAgICAgaGVpZ2h0OiAoKGltZy5wZXJjZW50KSArIFwiJVwiKVxuICAgICAgICB9KSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS51cGxvYWQoaW5kZXgpfX19LFtfYygnaScse3N0YXRpY0NsYXNzOlwibWF0ZXJpYWwtaWNvbnMgbm90cmFuc2xhdGVcIixhdHRyczp7XCJ0cmFuc2xhdGVcIjpcIm5vXCJ9fSxbX3ZtLl92KFwiIFwiK192bS5fcyhpbWcucGVyY2VudCA+PSAxMDA/aW1nLmVycm9yPydyZXBvcnRfcHJvYmxlbSc6J2Nsb3VkX2RvbmUnOidjbG91ZF91cGxvYWQnKStcIiBcIildKSxfYygnc3BhbicsW192bS5fdihfdm0uX3MoaW1nLnBlcmNlbnQpK1wiICVcIildKV0pOl92bS5fZSgpLChpbWcuc3JjKT9fYygnaW1nJyx7a2V5OmluZGV4LHN0eWxlOih7XG4gICAgICAgICAgbWF4V2lkdGg6aW1nLm9yaWVudGF0aW9uID09ICdoJz8nMTAwJSc6J25vbmUnLFxuICAgICAgICAgIG1heEhlaWdodDppbWcub3JpZW50YXRpb24gPT0gJ3cnPycxMDAlJzonbm9uZSdcbiAgICAgICAgfSksYXR0cnM6e1wic3JjXCI6aW1nLnNyY30sb246e1widG91Y2hlbmRcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0udmlld0ltYWdlKGltZy5zcmMsJGV2ZW50KX0sXCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS52aWV3SW1hZ2UoaW1nLnNyYywkZXZlbnQpfX19KTpfdm0uX2UoKSwoIWltZy5zcmMpP19jKCdoNCcse3N0YXRpY0NsYXNzOlwidGV4dC1hcmNoaXZlXCJ9LFtfYygnaScse3N0YXRpY0NsYXNzOlwibWF0ZXJpYWwtaWNvbnMgbm90cmFuc2xhdGVcIixhdHRyczp7XCJ0cmFuc2xhdGVcIjpcIm5vXCJ9fSxbX3ZtLl92KFwiIGRlc2NyaXB0aW9uIFwiKV0pLF9jKCdzcGFuJyxbX3ZtLl92KFwiIFwiK192bS5fcyhpbWcubmFtZSkrXCIgXCIpXSldKTpfdm0uX2UoKV0pfSksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29uLWlucHV0LXVwbG9hZFwiLGNsYXNzOntcbiAgICAgICAgJ29uLXByb2dyZXNzLWFsbC11cGxvYWQnOl92bS5wZXJjZW50ICE9IDAsXG4gICAgICAgICdpcy1yZWFkeS1hbGwtdXBsb2FkJzpfdm0ucGVyY2VudCA+PSAxMDAsXG4gICAgICAgICdkaXNhYmxlZC11cGxvYWQnOl92bS4kYXR0cnMuaGFzT3duUHJvcGVydHkoJ2Rpc2FibGVkJykgfHwgX3ZtLmxpbWl0Pyhfdm0uc3Jjcy5sZW5ndGggLSBfdm0uaXRlbVJlbW92ZS5sZW5ndGgpID49IE51bWJlcihfdm0ubGltaXQpOmZhbHNlXG4gICAgICB9fSxbX2MoJ2lucHV0Jyxfdm0uX2Ioe3JlZjpcImZpbGVJbnB1dFwiLGF0dHJzOntcImRpc2FibGVkXCI6X3ZtLiRhdHRycy5kaXNhYmxlZCB8fCBfdm0ubGltaXQ/KF92bS5zcmNzLmxlbmd0aCAtIF92bS5pdGVtUmVtb3ZlLmxlbmd0aCkgPj0gTnVtYmVyKF92bS5saW1pdCk6ZmFsc2UsXCJ0eXBlXCI6XCJmaWxlXCJ9LG9uOntcImNoYW5nZVwiOl92bS5nZXRGaWxlc319LCdpbnB1dCcsX3ZtLiRhdHRycyxmYWxzZSkpLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ0ZXh0LWlucHV0XCJ9LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS50ZXh0KStcIiBcIildKSxfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwiaW5wdXQtcHJvZ3Jlc3NcIixzdHlsZTooe1xuICAgICAgICAgIHdpZHRoOihfdm0ucGVyY2VudCArIFwiJVwiKVxuICAgICAgICB9KX0pLChfdm0uc2hvd1VwbG9hZEJ1dHRvbik/X2MoJ2J1dHRvbicse3N0YXRpY0NsYXNzOlwiYnRuLXVwbG9hZC1hbGwgdnMtdXBsb2FkLS1idXR0b24tdXBsb2FkXCIsYXR0cnM6e1wiZGlzYWJsZWRcIjpfdm0uZmlsZXN4Lmxlbmd0aCA9PSAwLFwidHlwZVwiOlwiYnV0dG9uXCIsXCJ0aXRsZVwiOlwiVXBsb2FkXCJ9LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLnVwbG9hZCgnYWxsJyl9fX0sW19jKCdpJyx7c3RhdGljQ2xhc3M6XCJtYXRlcmlhbC1pY29ucyBub3RyYW5zbGF0ZVwiLGF0dHJzOntcInRyYW5zbGF0ZVwiOlwibm9cIn19LFtfdm0uX3YoXCIgY2xvdWRfdXBsb2FkIFwiKV0pXSk6X3ZtLl9lKCldKV0sMildLDEpfVxudmFyIHZzVXBsb2FkdnVlX3R5cGVfdGVtcGxhdGVfaWRfNzc5NDA1Y2Vfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVXBsb2FkL3ZzVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Nzk0MDVjZSZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC50cnVuYy5qc1xudmFyIGVzX21hdGhfdHJ1bmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMGNhOFwiKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNVcGxvYWQvdmlld1VwbG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTliYWZmMmEmXG52YXIgdmlld1VwbG9hZHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU5YmFmZjJhX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ3RyYW5zaXRpb24nLHthdHRyczp7XCJuYW1lXCI6XCJ2aWV3LXVwbG9hZFwifX0sW19jKCdkaXYnLHtyZWY6XCJ2aWV3XCIsc3RhdGljQ2xhc3M6XCJ2aWV3LXVwbG9hZFwiLG9uOntcImNsaWNrXCI6X3ZtLmNsb3NlVmlld319LFtfYygnaW1nJyx7YXR0cnM6e1wic3JjXCI6X3ZtLnNyYyxcImFsdFwiOlwiaW1hZ2VcIn19KV0pXSl9XG52YXIgdmlld1VwbG9hZHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU5YmFmZjJhX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1VwbG9hZC92aWV3VXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01OWJhZmYyYSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNVcGxvYWQvdmlld1VwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZpZXdVcGxvYWR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVmlld1VwbG9hZCcsXG4gIHByb3BzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHNyYzoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB1dGlscy5pbnNlcnRCb2R5KHRoaXMuJHJlZnMudmlldyk7XG4gIH0sXG4gIHVwbG9hZDogZnVuY3Rpb24gdXBsb2FkKCkge1xuICAgIHV0aWxzLmluc2VydEJvZHkodGhpcy4kcmVmcy52aWV3KTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGNsb3NlVmlldzogZnVuY3Rpb24gY2xvc2VWaWV3KGV2dCkge1xuICAgICAgaWYgKGV2dC50YXJnZXQudGFnTmFtZSAhPSAnSU1HJykge1xuICAgICAgICB0aGlzLiRwYXJlbnQudmlld0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVXBsb2FkL3ZpZXdVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVXBsb2FkX3ZpZXdVcGxvYWR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodmlld1VwbG9hZHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVXBsb2FkL3ZpZXdVcGxvYWQudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdmlld1VwbG9hZF9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzVXBsb2FkX3ZpZXdVcGxvYWR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZpZXdVcGxvYWR2dWVfdHlwZV90ZW1wbGF0ZV9pZF81OWJhZmYyYV9yZW5kZXIsXG4gIHZpZXdVcGxvYWR2dWVfdHlwZV90ZW1wbGF0ZV9pZF81OWJhZmYyYV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdmlld1VwbG9hZCA9ICh2aWV3VXBsb2FkX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzVXBsb2FkL3ZzVXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbnZhciBsYXN0VGFwID0gMDtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVXBsb2FkdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzVXBsb2FkJyxcbiAgY29tcG9uZW50czoge1xuICAgIHZpZXdVcGxvYWQ6IHZpZXdVcGxvYWRcbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICBmaWxlTmFtZToge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgZGVmYXVsdDogJ1VwbG9hZCBGaWxlJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdGV4dE1heDoge1xuICAgICAgZGVmYXVsdDogJ01heGltdW0gb2YgZmlsZXMgcmVhY2hlZCcsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGxpbWl0OiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXVxuICAgIH0sXG4gICAgYWN0aW9uOiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICBkYXRhOiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICBhdXRvbWF0aWM6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgc2hvd1VwbG9hZEJ1dHRvbjoge1xuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHNpbmdsZVVwbG9hZDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dFZhbHVlOiBudWxsLFxuICAgICAgdHlwZTogbnVsbCxcbiAgICAgIHNyY3M6IFtdLFxuICAgICAgZmlsZXN4OiBbXSxcbiAgICAgIGl0ZW1SZW1vdmU6IFtdLFxuICAgICAgcGVyY2VudDogMCxcbiAgICAgIHZpZXdBY3RpdmU6IGZhbHNlLFxuICAgICAgdmlld1NyYzogbnVsbFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgZ2V0RmlsZXNGaWx0ZXI6IGZ1bmN0aW9uIGdldEZpbGVzRmlsdGVyKCkge1xuICAgICAgdmFyIGZpbGVzID0gdGhpcy5zcmNzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gIWl0ZW0ucmVtb3ZlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmlsZXM7XG4gICAgfSxcbiAgICBwb3N0RmlsZXM6IGZ1bmN0aW9uIHBvc3RGaWxlcygpIHtcbiAgICAgIHZhciBwb3N0RmlsZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmZpbGVzeCk7XG4gICAgICBwb3N0RmlsZXMgPSBwb3N0RmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiAhaXRlbS5oYXNPd25Qcm9wZXJ0eSgncmVtb3ZlJyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwb3N0RmlsZXMubGVuZ3RoO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBwZXJjZW50OiBmdW5jdGlvbiBwZXJjZW50KCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLnBlcmNlbnQgPj0gMTAwKSB7XG4gICAgICAgIHRoaXMuc3Jjcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgICAgZmlsZS5wZXJjZW50ID0gMTAwO1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLnBlcmNlbnQgPSAwO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICB2aWV3SW1hZ2U6IGZ1bmN0aW9uIHZpZXdJbWFnZShzcmMsIGV2dCkge1xuICAgICAgdmFyIHRpbWVvdXQ7XG4gICAgICB2YXIgZXZlbnR4ID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IHdpbmRvdy5Eb2N1bWVudFRvdWNoICYmIGRvY3VtZW50IGluc3RhbmNlb2Ygd2luZG93LkRvY3VtZW50VG91Y2ggPyAndG91Y2hzdGFydCcgOiAnY2xpY2snO1xuXG4gICAgICBpZiAoZXZlbnR4ID09ICdjbGljaycpIHtcbiAgICAgICAgdGhpcy52aWV3QWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy52aWV3U3JjID0gc3JjO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGV2dC50eXBlID09ICd0b3VjaGVuZCcpIHtcbiAgICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICB2YXIgdGFwTGVuZ3RoID0gY3VycmVudFRpbWUgLSBsYXN0VGFwO1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblxuICAgICAgICAgIGlmICh0YXBMZW5ndGggPCA1MDAgJiYgdGFwTGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy52aWV3QWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudmlld1NyYyA9IHNyYztcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGFzdFRhcCA9IGN1cnJlbnRUaW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICByZW1vdmVGaWxlOiBmdW5jdGlvbiByZW1vdmVGaWxlKGluZGV4KSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdGhpcy5pdGVtUmVtb3ZlLnB1c2goaW5kZXgpO1xuICAgICAgdGhpcy4kZW1pdCgnb24tZGVsZXRlJywgdGhpcy5maWxlc3hbaW5kZXhdKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczMuZmlsZXN4W2luZGV4XS5yZW1vdmUgPSB0cnVlO1xuICAgICAgfSwgMzAxKTtcbiAgICB9LFxuICAgIGdldEZpbGVzOiBmdW5jdGlvbiBnZXRGaWxlcyhlKSB7XG4gICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6dnNGaWxlJywgZS50YXJnZXQudmFsdWUpO1xuXG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBmdW5jdGlvbiB1cGxvYWRJbWFnZShlKSB7XG4gICAgICAgIHZhciBvcmllbnRhdGlvbiA9ICdoJztcbiAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltYWdlLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDtcblxuICAgICAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHRoaXMud2lkdGggPiB0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgb3JpZW50YXRpb24gPSAndyc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3dpdGNoSW1hZ2UodGhpcywgb3JpZW50YXRpb24pO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBzd2l0Y2hJbWFnZShpbWFnZSwgb3JpZW50YXRpb24pIHtcbiAgICAgICAgX3RoaXMuc3Jjcy5wdXNoKHtcbiAgICAgICAgICBzcmM6IGltYWdlLnNyYyxcbiAgICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb24sXG4gICAgICAgICAgdHlwZTogX3RoaXMudHlwZXgsXG4gICAgICAgICAgcGVyY2VudDogbnVsbCxcbiAgICAgICAgICBlcnJvcjogZmFsc2UsXG4gICAgICAgICAgcmVtb3ZlOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIgZmlsZXMgPSBlLnRhcmdldC5maWxlcztcbiAgICAgIHZhciBjb3VudCA9IHRoaXMuc3Jjcy5sZW5ndGggLSB0aGlzLml0ZW1SZW1vdmUubGVuZ3RoO1xuXG4gICAgICBmb3IgKHZhciBmaWxlIGluIGZpbGVzKSB7XG4gICAgICAgIGlmIChmaWxlcy5oYXNPd25Qcm9wZXJ0eShmaWxlKSkge1xuICAgICAgICAgIGlmICh0aGlzLmxpbWl0KSB7XG4gICAgICAgICAgICBjb3VudCsrO1xuXG4gICAgICAgICAgICBpZiAoY291bnQgPiBOdW1iZXIodGhpcy5saW1pdCkpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgdmFyIGZpbGV4ID0gZmlsZXNbZmlsZV07XG5cbiAgICAgICAgICBpZiAoL2ltYWdlLiovLnRlc3QoZmlsZXgudHlwZSkpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZXggPSAnaW1hZ2UnO1xuICAgICAgICAgICAgdGhpcy5maWxlc3gucHVzaChmaWxleCk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gdXBsb2FkSW1hZ2U7XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxleCk7XG4gICAgICAgICAgfSBlbHNlIGlmICgvdmlkZW8uKi8udGVzdChmaWxleC50eXBlKSkge1xuICAgICAgICAgICAgdGhpcy50eXBleCA9ICd2aWRlbyc7XG4gICAgICAgICAgICB0aGlzLmZpbGVzeC5wdXNoKGZpbGV4KTtcblxuICAgICAgICAgICAgX3RoaXMuc3Jjcy5wdXNoKHtcbiAgICAgICAgICAgICAgc3JjOiBudWxsLFxuICAgICAgICAgICAgICBuYW1lOiBmaWxleC5uYW1lLFxuICAgICAgICAgICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgICAgICAgICBwZXJjZW50OiBudWxsLFxuICAgICAgICAgICAgICBlcnJvcjogZmFsc2UsXG4gICAgICAgICAgICAgIHJlbW92ZTogbnVsbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXN4LnB1c2goZmlsZXgpO1xuXG4gICAgICAgICAgICBfdGhpcy5zcmNzLnB1c2goe1xuICAgICAgICAgICAgICBzcmM6IG51bGwsXG4gICAgICAgICAgICAgIG5hbWU6IGZpbGV4Lm5hbWUsXG4gICAgICAgICAgICAgIHBlcmNlbnQ6IG51bGwsXG4gICAgICAgICAgICAgIGVycm9yOiBmYWxzZSxcbiAgICAgICAgICAgICAgcmVtb3ZlOiBudWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBlLnRhcmdldC52YWx1ZSwgdGhpcy5maWxlc3gpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuJHJlZnMuZmlsZUlucHV0O1xuICAgICAgaW5wdXQudHlwZSA9ICd0ZXh0JztcbiAgICAgIGlucHV0LnR5cGUgPSAnZmlsZSc7XG5cbiAgICAgIGlmICh0aGlzLmF1dG9tYXRpYykge1xuICAgICAgICB0aGlzLnVwbG9hZCgnYWxsJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICB1cGxvYWQ6IGZ1bmN0aW9uIHVwbG9hZChpbmRleCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIHZhciBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgdmFyIHBvc3RGaWxlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuZmlsZXN4KTtcblxuICAgICAgaWYgKHR5cGVvZiBpbmRleCA9PSAnbnVtYmVyJykge1xuICAgICAgICBwb3N0RmlsZXMgPSBbcG9zdEZpbGVzW2luZGV4XV07XG4gICAgICB9IGVsc2UgaWYgKGluZGV4ID09ICdhbGwnKSB7XG4gICAgICAgIHBvc3RGaWxlcyA9IHBvc3RGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gIWl0ZW0uaGFzT3duUHJvcGVydHkoJ3JlbW92ZScpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEgfHwge307XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIGRhdGFba2V5XSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNpbmdsZVVwbG9hZCkge1xuICAgICAgICBwb3N0RmlsZXMuZm9yRWFjaChmdW5jdGlvbiAoZmlsZXgpIHtcbiAgICAgICAgICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCBkYXRhW2tleV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChfdGhpczQuZmlsZU5hbWUsIGZpbGV4LCBmaWxleC5uYW1lKTtcblxuICAgICAgICAgIF90aGlzNC51cGxvYWR4KGluZGV4LCBmb3JtRGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcG9zdEZpbGVzLmZvckVhY2goZnVuY3Rpb24gKGZpbGV4KSB7XG4gICAgICAgICAgZm9ybURhdGEuYXBwZW5kKF90aGlzNC5maWxlTmFtZSwgZmlsZXgsIGZpbGV4Lm5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy51cGxvYWR4KGluZGV4LCBmb3JtRGF0YSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB1cGxvYWR4OiBmdW5jdGlvbiB1cGxvYWR4KGluZGV4LCBmb3JtRGF0YSkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uIGVycm9yKGUpIHtcbiAgICAgICAgc2VsZi4kZW1pdCgnb24tZXJyb3InLCBlKTtcblxuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09ICdudW1iZXInKSB7XG4gICAgICAgICAgc2VsZi5zcmNzW2luZGV4XS5lcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiBvbmxvYWQoZSkge1xuICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDIwMCB8fCB4aHIuc3RhdHVzID49IDMwMCkge1xuICAgICAgICAgIHNlbGYuJGVtaXQoJ29uLWVycm9yJywgZSk7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBzZWxmLnNyY3NbaW5kZXhdLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi4kZW1pdCgnb24tc3VjY2VzcycsIGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAoeGhyLnVwbG9hZCkge1xuICAgICAgICB4aHIudXBsb2FkLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiBwcm9ncmVzcyhlKSB7XG4gICAgICAgICAgaWYgKGUudG90YWwgPiAwKSB7XG4gICAgICAgICAgICB2YXIgcGVyY2VudCA9IGUubG9hZGVkIC8gZS50b3RhbCAqIDEwMDtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbmRleCA9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICBzZWxmLnNyY3NbaW5kZXhdLnBlcmNlbnQgPSBNYXRoLnRydW5jKHBlcmNlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2VsZi5wZXJjZW50ID0gTWF0aC50cnVuYyhwZXJjZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgeGhyLm9wZW4oJ1BPU1QnLCB0aGlzLmFjdGlvbiwgdHJ1ZSk7XG4gICAgICB2YXIgaGVhZGVycyA9IHRoaXMuaGVhZGVycyB8fCB7fTtcblxuICAgICAgZm9yICh2YXIgaGVhZCBpbiBoZWFkZXJzKSB7XG4gICAgICAgIGlmIChoZWFkZXJzLmhhc093blByb3BlcnR5KGhlYWQpICYmIGhlYWRlcnNbaGVhZF0gIT09IG51bGwpIHtcbiAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkLCBoZWFkZXJzW2hlYWRdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB4aHIuc2VuZChmb3JtRGF0YSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNVcGxvYWQvdnNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVXBsb2FkX3ZzVXBsb2FkdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzVXBsb2FkdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNVcGxvYWQvdnNVcGxvYWQudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNVcGxvYWRfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c1VwbG9hZF92c1VwbG9hZHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNVcGxvYWR2dWVfdHlwZV90ZW1wbGF0ZV9pZF83Nzk0MDVjZV9yZW5kZXIsXG4gIHZzVXBsb2FkdnVlX3R5cGVfdGVtcGxhdGVfaWRfNzc5NDA1Y2Vfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVXBsb2FkID0gKHZzVXBsb2FkX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNVcGxvYWQvaW5kZXguanNcblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbXBvbmVudHNfdnNVcGxvYWQgPSAoZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHZzVXBsb2FkLm5hbWUsIHZzVXBsb2FkKTtcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNQb3B1cC92c1BvcHVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYTk3ODVhYyZsYW5nPWh0bWwmXG52YXIgdnNQb3B1cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzNhOTc4NWFjX2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCd0cmFuc2l0aW9uJyx7YXR0cnM6e1wibmFtZVwiOlwicG9wdXAtdFwifX0sW19jKCdkaXYnLHtkaXJlY3RpdmVzOlt7bmFtZTpcInNob3dcIixyYXdOYW1lOlwidi1zaG93XCIsdmFsdWU6KF92bS5hY3RpdmUpLGV4cHJlc3Npb246XCJhY3RpdmVcIn1dLHJlZjpcImNvblwiLHN0YXRpY0NsYXNzOlwidnMtY29tcG9uZW50IGNvbi12cy1wb3B1cFwiLGNsYXNzOlsoXCJ2cy1wb3B1cC1cIiArIF92bS5jb2xvcikseydmdWxsc2NyZWVuJzpfdm0uZnVsbHNjcmVlbn1dLG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLmNsb3NlKCRldmVudCx0cnVlKX19fSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtcG9wdXAtLWJhY2tncm91bmRcIixzdHlsZTooX3ZtLnN0eWxlQ29uKX0pLF9jKCdkaXYnLHtyZWY6XCJwb3B1cHhcIixzdGF0aWNDbGFzczpcInZzLXBvcHVwXCIsc3R5bGU6KF92bS5zdHlsZVBvcHVwKX0sW19jKCdoZWFkZXInLHtzdGF0aWNDbGFzczpcInZzLXBvcHVwLS1oZWFkZXJcIixzdHlsZTooX3ZtLnN0eWxlSGVhZGVyKX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLXBvcHVwLS10aXRsZVwifSxbX2MoJ2gzJyxbX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKV0pXSksKCFfdm0uYnV0dG9uQ2xvc2VIaWRkZW4pP19jKCd2cy1pY29uJyx7cmVmOlwiYnRuY2xvc2VcIixzdGF0aWNDbGFzczpcInZzLXBvcHVwLS1jbG9zZSB2cy1wb3B1cC0tY2xvc2UtLWljb25cIixzdHlsZTooX3ZtLnN0eWxlUG9wdXApLGF0dHJzOntcImljb24tcGFja1wiOl92bS5pY29uUGFjayxcImljb25cIjpfdm0uaWNvbkNsb3NlfSxvbjp7XCJjbGlja1wiOl92bS5jbG9zZX19KTpfdm0uX2UoKV0sMSksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtcG9wdXAtLWNvbnRlbnRcIixjbGFzczpfdm0uY2xhc3NDb250ZW50LHN0eWxlOihfdm0uc3R5bGVDb250ZW50KX0sW192bS5fdChcImRlZmF1bHRcIildLDIpXSldKV0pfVxudmFyIHZzUG9wdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zYTk3ODVhY19sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzUG9wdXAvdnNQb3B1cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2E5Nzg1YWMmbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1BvcHVwL3ZzUG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzUG9wdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNQb3B1cCcsXG4gIHByb3BzOiB7XG4gICAgY29sb3I6IHtcbiAgICAgIGRlZmF1bHQ6ICdwcmltYXJ5JyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgYWN0aXZlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHRpdGxlOiB7XG4gICAgICBkZWZhdWx0OiAncG9wdXAnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBidXR0b25DbG9zZUhpZGRlbjoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBmdWxsc2NyZWVuOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIGJhY2tncm91bmRDb2xvcjoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgYmFja2dyb3VuZENvbG9yUG9wdXA6IHtcbiAgICAgIGRlZmF1bHQ6ICdyZ2IoMjU1LDI1NSwyNTUpJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgc3R5bGVDb250ZW50OiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBjbGFzc0NvbnRlbnQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBpY29uQ2xvc2U6IHtcbiAgICAgIGRlZmF1bHQ6ICdjbG9zZScsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgc3R5bGVIZWFkZXI6IGZ1bmN0aW9uIHN0eWxlSGVhZGVyKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpXG4gICAgICB9O1xuICAgIH0sXG4gICAgc3R5bGVBZnRlcjogZnVuY3Rpb24gc3R5bGVBZnRlcigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpXG4gICAgICB9O1xuICAgIH0sXG4gICAgc3R5bGVDb246IGZ1bmN0aW9uIHN0eWxlQ29uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5iYWNrZ3JvdW5kQ29sb3IsIDEpXG4gICAgICB9O1xuICAgIH0sXG4gICAgc3R5bGVQb3B1cDogZnVuY3Rpb24gc3R5bGVQb3B1cCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yUG9wdXAsIDEpXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLmluc2VydEJvZHkoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGdpdmVDb2xvcjogZnVuY3Rpb24gZ2l2ZUNvbG9yKGNvbG9yKSB7XG4gICAgICByZXR1cm4gdXRpbHNfY29sb3IuckNvbG9yKGNvbG9yKTtcbiAgICB9LFxuICAgIGNsb3NlOiBmdW5jdGlvbiBjbG9zZShldmVudCwgY29uKSB7XG4gICAgICBpZiAoY29uKSB7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQuY2xhc3NOYW1lICYmIGV2ZW50LnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZiAmJiBldmVudC50YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ3ZzLXBvcHVwLS1iYWNrZ3JvdW5kJykgIT0gLTEpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6YWN0aXZlJywgZmFsc2UpO1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlJywgZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmJ1dHRvbkNsb3NlSGlkZGVuICYmIGV2ZW50LnNyY0VsZW1lbnQgPT0gdGhpcy4kcmVmcy5idG5jbG9zZS4kZWwpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6YWN0aXZlJywgZmFsc2UpO1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBpbnNlcnRCb2R5OiBmdW5jdGlvbiBpbnNlcnRCb2R5KCkge1xuICAgICAgdmFyIGVseCA9IHRoaXMuJHJlZnMuY29uO1xuICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZWx4LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzUG9wdXAvdnNQb3B1cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNQb3B1cF92c1BvcHVwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzUG9wdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1BvcHVwL3ZzUG9wdXAudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNQb3B1cF9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzUG9wdXBfdnNQb3B1cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNQb3B1cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzNhOTc4NWFjX2xhbmdfaHRtbF9yZW5kZXIsXG4gIHZzUG9wdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zYTk3ODVhY19sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzUG9wdXAgPSAodnNQb3B1cF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzUG9wdXAvaW5kZXguanNcblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbXBvbmVudHNfdnNQb3B1cCA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNQb3B1cC5uYW1lLCB2c1BvcHVwKTtcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNBbGVydC92c0FsZXJ0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04NjM1OTNjMCZsYW5nPWh0bWwmXG52YXIgdnNBbGVydHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzg2MzU5M2MwX2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCd0cmFuc2l0aW9uJyx7b246e1wiYmVmb3JlLWVudGVyXCI6X3ZtLmJlZm9yZUVudGVyLFwiZW50ZXJcIjpfdm0uZW50ZXIsXCJsZWF2ZVwiOl92bS5sZWF2ZX19LFsoX3ZtLmFjdGl2ZSk/X2MoJ2RpdicsX3ZtLl9nKF92bS5fYih7cmVmOlwiYWxlcnRcIixzdGF0aWNDbGFzczpcImNvbi12cy1hbGVydFwiLGNsYXNzOlsoXCJjb24tdnMtYWxlcnQtXCIgKyBfdm0uY29sb3IpLHtcbiAgICAgICdjb24taWNvbic6X3ZtLmljb24sXG4gICAgfV0sc3R5bGU6KF92bS5zdHlsZUFsZXJ0KX0sJ2RpdicsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLiRsaXN0ZW5lcnMpLFsoX3ZtLmNsb3NhYmxlKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24teCB2cy1hbGVydC0tY2xvc2VcIixvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS4kZW1pdCgndXBkYXRlOmFjdGl2ZScsZmFsc2UpfX19LFtfYygndnMtaWNvbicse2F0dHJzOntcImljb24tcGFja1wiOl92bS5pY29uUGFjayxcImljb25cIjpfdm0uY2xvc2VJY29ufX0pXSwxKTpfdm0uX2UoKSwoX3ZtLnRpdGxlKT9fYygnaDQnLHtzdGF0aWNDbGFzczpcInRpdGxleCB2cy1hbGVydC0tdGl0bGVcIixzdHlsZTooX3ZtLnN0eWxlVGl0bGUpfSxbX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKV0pOl92bS5fZSgpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWFsZXJ0XCIsY2xhc3M6eydjb24taWNvbic6IF92bS5pY29ufX0sWyhfdm0uaWNvbik/X2MoJ3ZzLWljb24nLHtzdGF0aWNDbGFzczpcImljb24tYWxlcnRcIixhdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLmljb259fSk6X3ZtLl9lKCksX3ZtLl90KFwiZGVmYXVsdFwiKV0sMildKTpfdm0uX2UoKV0pfVxudmFyIHZzQWxlcnR2dWVfdHlwZV90ZW1wbGF0ZV9pZF84NjM1OTNjMF9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQWxlcnQvdnNBbGVydC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODYzNTkzYzAmbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0FsZXJ0L3ZzQWxlcnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0FsZXJ0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzQWxlcnQnLFxuICBwcm9wczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICB0aXRsZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgY2xvc2FibGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgY29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdwcmltYXJ5J1xuICAgIH0sXG4gICAgbWFyZ2luOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBCb29sZWFuXSxcbiAgICAgIGRlZmF1bHQ6ICcxMHB4J1xuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgY2xvc2VJY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnY2xvc2UnXG4gICAgfSxcbiAgICBpY29uUGFjazoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ21hdGVyaWFsLWljb25zJ1xuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZUFsZXJ0OiBmdW5jdGlvbiBzdHlsZUFsZXJ0KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgLjE1KSxcbiAgICAgICAgYm94U2hhZG93OiBcIjBweCAwcHggMjVweCAwcHggXCIuY29uY2F0KHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIC4xNSkpLFxuICAgICAgICBjb2xvcjogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSlcbiAgICAgIH07XG4gICAgfSxcbiAgICBzdHlsZVRpdGxlOiBmdW5jdGlvbiBzdHlsZVRpdGxlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYm94U2hhZG93OiBcIjBweCA2cHggMTVweCAtN3B4IFwiLmNvbmNhdCh1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAuNCkpXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuJHJlZnMuYWxlcnQpIHtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGggPSBfdGhpcy4kcmVmcy5hbGVydC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIF90aGlzLiRyZWZzLmFsZXJ0LnN0eWxlLmhlaWdodCA9IGggKyAncHgnO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgYmVmb3JlRW50ZXI6IGZ1bmN0aW9uIGJlZm9yZUVudGVyKGVsKSB7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAwO1xuICAgICAgZWwuc3R5bGUub3BhY2l0eSA9IDA7XG4gICAgfSxcbiAgICBlbnRlcjogZnVuY3Rpb24gZW50ZXIoZWwsIGRvbmUpIHtcbiAgICAgIHZhciBoID0gdGhpcy4kcmVmcy5hbGVydC5zY3JvbGxIZWlnaHQ7XG4gICAgICB0aGlzLiRyZWZzLmFsZXJ0LnN0eWxlLmhlaWdodCA9IGggKyAncHgnO1xuICAgICAgZWwuc3R5bGUub3BhY2l0eSA9IDE7XG4gICAgICBkb25lKCk7XG4gICAgfSxcbiAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoZWwpIHtcbiAgICAgIHRoaXMuJHJlZnMuYWxlcnQuc3R5bGUuaGVpZ2h0ID0gMCArICdweCc7XG4gICAgICBlbC5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0FsZXJ0L3ZzQWxlcnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQWxlcnRfdnNBbGVydHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0FsZXJ0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNBbGVydC92c0FsZXJ0LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzQWxlcnRfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c0FsZXJ0X3ZzQWxlcnR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzQWxlcnR2dWVfdHlwZV90ZW1wbGF0ZV9pZF84NjM1OTNjMF9sYW5nX2h0bWxfcmVuZGVyLFxuICB2c0FsZXJ0dnVlX3R5cGVfdGVtcGxhdGVfaWRfODYzNTkzYzBfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0FsZXJ0ID0gKHZzQWxlcnRfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0FsZXJ0L2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzQWxlcnQgPSAoZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHZzQWxlcnQubmFtZSwgdnNBbGVydCk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQ2hpcC92c0NoaXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRjZWM0YzgzJmxhbmc9aHRtbCZcbnZhciB2c0NoaXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF80Y2VjNGM4M19sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24tdnMtY2hpcFwiLGNsYXNzOltcbiAgICAoXCJ2cy1jaGlwLVwiICsgX3ZtLmNvbG9yKSxcbiAgICB7XG4gICAgICAnY2xvc2FibGUnOiBfdm0uY2xvc2FibGUsXG4gICAgICAnY29uLWNvbG9yJzogX3ZtLmNvbG9yLFxuICAgICAgJ2JnLWNoaXAtdHJhbnNwYXJlbnQnOiBfdm0udHJhbnNwYXJlbnRcbiAgICB9XG4gIF0sc3R5bGU6KF92bS5zdHlsZUNoaXApfSxbX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInRleHQtY2hpcCB2cy1jaGlwLS10ZXh0XCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKSwoX3ZtLmNsb3NhYmxlKT9fYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJidG4tY2xvc2UgdnMtY2hpcC0tY2xvc2VcIixhdHRyczp7XCJ0eXBlXCI6XCJidXR0b25cIn0sb246e1wiY2xpY2tcIjpfdm0uY2xvc2VDaGlwfX0sW19jKCd2cy1pY29uJyx7YXR0cnM6e1wiaWNvbi1wYWNrXCI6X3ZtLmljb25QYWNrLFwiaWNvblwiOl92bS5jbG9zZUljb259fSldLDEpOl92bS5fZSgpXSl9XG52YXIgdnNDaGlwdnVlX3R5cGVfdGVtcGxhdGVfaWRfNGNlYzRjODNfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0NoaXAvdnNDaGlwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00Y2VjNGM4MyZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQ2hpcC92c0NoaXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNDaGlwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzQ2hpcCcsXG4gIHByb3BzOiB7XG4gICAgaXRlbToge1xuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgdmFsdWU6IHt9LFxuICAgIGFjdGl2ZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGNsb3NhYmxlOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgaWNvblBhY2s6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdtYXRlcmlhbC1pY29ucydcbiAgICB9LFxuICAgIGNsb3NlSWNvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2NsZWFyJ1xuICAgIH0sXG4gICAgdHJhbnNwYXJlbnQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZUNoaXA6IGZ1bmN0aW9uIHN0eWxlQ2hpcCgpIHtcbiAgICAgIHZhciBiYWNrZ3JvdW5kID0gdGhpcy50cmFuc3BhcmVudCA/IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIC4xNSkgOiB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKTtcbiAgICAgIHZhciBjb2xvciA9IHRoaXMudHJhbnNwYXJlbnQgPyB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKSA6IHRoaXMuY29sb3IgPyAncmdiYSgyNTUsMjU1LDI1NSwuOSknIDogJ3JnYmEoMCwwLDAsLjcpJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGJhY2tncm91bmQsXG4gICAgICAgIGNvbG9yOiBjb2xvclxuICAgICAgfTtcbiAgICB9LFxuICAgIGVsaW1pbmFkbzogZnVuY3Rpb24gZWxpbWluYWRvKCkge1xuICAgICAgaWYgKHRoaXMuaXRlbSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnZzQ2xvc2FibGUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGNsb3NlQ2hpcDogZnVuY3Rpb24gY2xvc2VDaGlwKCkge1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBmYWxzZSk7XG4gICAgICB0aGlzLiRlbWl0KCdjbGljaycpO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICB0aGlzLiRlbWl0KCd2cy1yZW1vdmUnLCBmYWxzZSk7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIGZhbHNlKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0NoaXAvdnNDaGlwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0NoaXBfdnNDaGlwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzQ2hpcHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQ2hpcC92c0NoaXAudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNDaGlwX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNDaGlwX3ZzQ2hpcHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNDaGlwdnVlX3R5cGVfdGVtcGxhdGVfaWRfNGNlYzRjODNfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNDaGlwdnVlX3R5cGVfdGVtcGxhdGVfaWRfNGNlYzRjODNfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0NoaXAgPSAodnNDaGlwX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQ2hpcC92c0NoaXBzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YThhNTFkNCZsYW5nPWh0bWwmXG52YXIgdnNDaGlwc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzVhOGE1MWQ0X2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHt9LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24tY2hpcHNcIixjbGFzczp7J25vLWl0ZW1zJzpfdm0udmFsdWUubGVuZ3RoPT0wfX0sW192bS5fdChcImRlZmF1bHRcIiksX2MoJ2lucHV0Jyx7ZGlyZWN0aXZlczpbe25hbWU6XCJtb2RlbFwiLHJhd05hbWU6XCJ2LW1vZGVsXCIsdmFsdWU6KF92bS5uZXdDaGlwKSxleHByZXNzaW9uOlwibmV3Q2hpcFwifV0sc3RhdGljQ2xhc3M6XCJjb24tY2hpcHMtLWlucHV0XCIsYXR0cnM6e1wicGxhY2Vob2xkZXJcIjpfdm0udmFsdWUubGVuZ3RoPjA/bnVsbDpfdm0ucGxhY2Vob2xkZXIsXCJ0eXBlXCI6XCJ0ZXh0XCJ9LGRvbVByb3BzOntcInZhbHVlXCI6KF92bS5uZXdDaGlwKX0sb246e1wia2V5cHJlc3NcIjpmdW5jdGlvbigkZXZlbnQpe2lmKCEkZXZlbnQudHlwZS5pbmRleE9mKCdrZXknKSYmX3ZtLl9rKCRldmVudC5rZXlDb2RlLFwiZW50ZXJcIiwxMywkZXZlbnQua2V5LFwiRW50ZXJcIikpeyByZXR1cm4gbnVsbDsgfXJldHVybiBfdm0uYWRkSXRlbSgkZXZlbnQpfSxcImlucHV0XCI6ZnVuY3Rpb24oJGV2ZW50KXtpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZyl7IHJldHVybjsgfV92bS5uZXdDaGlwPSRldmVudC50YXJnZXQudmFsdWV9fX0pLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcIngtZ2xvYmFsIGNvbi1jaGlwcy0tcmVtb3ZlLWFsbFwiLG9uOntcImNsaWNrXCI6X3ZtLnJlbW92ZVRvdGFsSXRlbXN9fSxbX2MoJ3ZzLWljb24nLHthdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLnJlbW92ZUljb259fSldLDEpXSwyKV0pfVxudmFyIHZzQ2hpcHN2dWVfdHlwZV90ZW1wbGF0ZV9pZF81YThhNTFkNF9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQ2hpcC92c0NoaXBzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YThhNTFkNCZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQ2hpcC92c0NoaXBzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNDaGlwc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc0NoaXBzJyxcbiAgY29tcG9uZW50czoge1xuICAgIHZzQ2hpcDogdnNDaGlwXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHt9LFxuICAgIHZzQ29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdwcmltYXJ5J1xuICAgIH0sXG4gICAgcGxhY2Vob2xkZXI6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBpdGVtczoge1xuICAgICAgdHlwZTogQXJyYXlcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnXG4gICAgfSxcbiAgICByZW1vdmVJY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnY2xvc2UnXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuZXdDaGlwOiAnJyxcbiAgICAgIGNoaXAxOiB0cnVlLFxuICAgICAgaXRlbXN4OiB0aGlzLml0ZW1zXG4gICAgfTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGFkZEl0ZW06IGZ1bmN0aW9uIGFkZEl0ZW0oKSB7XG4gICAgICAvLyB0aGlzLml0ZW1zeC5wdXNoKHRoaXMubmV3Q2hpcClcbiAgICAgIHZhciB2YWx1ZU9sZCA9IHRoaXMudmFsdWU7XG4gICAgICB2YWx1ZU9sZC5wdXNoKHRoaXMubmV3Q2hpcCk7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbHVlT2xkKTtcbiAgICAgIHRoaXMubmV3Q2hpcCA9ICcnO1xuICAgIH0sXG4gICAgcmVtb3ZlVG90YWxJdGVtczogZnVuY3Rpb24gcmVtb3ZlVG90YWxJdGVtcygpIHtcbiAgICAgIHZhciB2YWx1ZU9sZCA9IHRoaXMudmFsdWU7XG4gICAgICB2YWx1ZU9sZC5zcGxpY2UoMCwgdGhpcy52YWx1ZS5sZW5ndGgpO1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWx1ZU9sZCk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNDaGlwL3ZzQ2hpcHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQ2hpcF92c0NoaXBzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzQ2hpcHN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0NoaXAvdnNDaGlwcy52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0NoaXBzX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNDaGlwX3ZzQ2hpcHN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzQ2hpcHN2dWVfdHlwZV90ZW1wbGF0ZV9pZF81YThhNTFkNF9sYW5nX2h0bWxfcmVuZGVyLFxuICB2c0NoaXBzdnVlX3R5cGVfdGVtcGxhdGVfaWRfNWE4YTUxZDRfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0NoaXBzID0gKHZzQ2hpcHNfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0NoaXAvaW5kZXguanNcblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c0NoaXAgPSAoZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHZzQ2hpcC5uYW1lLCB2c0NoaXApO1xuICBWdWUuY29tcG9uZW50KHZzQ2hpcHMubmFtZSwgdnNDaGlwcyk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzUHJvZ3Jlc3MvdnNQcm9ncmVzcy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGRhZGI5MjcmbGFuZz1odG1sJlxudmFyIHZzUHJvZ3Jlc3N2dWVfdHlwZV90ZW1wbGF0ZV9pZF80ZGFkYjkyN19sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1wcm9ncmVzcy0tYmFja2dyb3VuZFwiLGNsYXNzOlsoXCJ2cy1wcm9ncmVzcy1cIiArIF92bS5jb2xvcikse1xuICAgICdpbmRldGVybWluYXRlJzpfdm0uaW5kZXRlcm1pbmF0ZSxcbiAgfV0sc3R5bGU6KF92bS5zdHlsZUNvblByb2dyZXNzKX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLXByb2dyZXNzLS1mb3JlZ3JvdW5kXCIsc3R5bGU6KF92bS5zdHlsZVByb2dyZXNzKX0pLChfdm0uaW5kZXRlcm1pbmF0ZSk/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtcHJvZ3Jlc3MtLWluZGV0ZXJtaW5hdGVcIixzdHlsZTooX3ZtLnN0eWxlUHJvZ3Jlc3MpfSk6X3ZtLl9lKCldKX1cbnZhciB2c1Byb2dyZXNzdnVlX3R5cGVfdGVtcGxhdGVfaWRfNGRhZGI5MjdfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1Byb2dyZXNzL3ZzUHJvZ3Jlc3MudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkYWRiOTI3Jmxhbmc9aHRtbCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNQcm9ncmVzcy92c1Byb2dyZXNzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNQcm9ncmVzc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc1Byb2dyZXNzJyxcbiAgcHJvcHM6IHtcbiAgICBoZWlnaHQ6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiA1XG4gICAgfSxcbiAgICBpbmRldGVybWluYXRlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHBlcmNlbnQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIGNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAncHJpbWFyeSdcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBlcmNlbnR4OiAwXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZUNvblByb2dyZXNzOiBmdW5jdGlvbiBzdHlsZUNvblByb2dyZXNzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgLjEpLFxuICAgICAgICBoZWlnaHQ6IFwiXCIuY29uY2F0KHRoaXMuaGVpZ2h0LCBcInB4XCIpXG4gICAgICB9O1xuICAgIH0sXG4gICAgc3R5bGVQcm9ncmVzczogZnVuY3Rpb24gc3R5bGVQcm9ncmVzcygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IpLFxuICAgICAgICB3aWR0aDogXCJcIi5jb25jYXQodGhpcy5wZXJjZW50eCwgXCIlXCIpXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBwZXJjZW50OiBmdW5jdGlvbiBwZXJjZW50KCkge1xuICAgICAgdGhpcy5wZXJjZW50eCA9IHRoaXMucGVyY2VudDtcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdGhpcy5wZXJjZW50eCA9IDA7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMucGVyY2VudHggPSBfdGhpcy5wZXJjZW50OyAvLyB0byBmb3JjZSBhbmltYXRpb25cbiAgICB9LCA2MDApO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNQcm9ncmVzcy92c1Byb2dyZXNzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1Byb2dyZXNzX3ZzUHJvZ3Jlc3N2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNQcm9ncmVzc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzUHJvZ3Jlc3MvdnNQcm9ncmVzcy52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1Byb2dyZXNzX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNQcm9ncmVzc192c1Byb2dyZXNzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1Byb2dyZXNzdnVlX3R5cGVfdGVtcGxhdGVfaWRfNGRhZGI5MjdfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNQcm9ncmVzc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzRkYWRiOTI3X2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNQcm9ncmVzcyA9ICh2c1Byb2dyZXNzX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNQcm9ncmVzcy9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c1Byb2dyZXNzID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c1Byb2dyZXNzLm5hbWUsIHZzUHJvZ3Jlc3MpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0NhcmQvdnNDYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNWMxNWUyZSZcbnZhciB2c0NhcmR2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNWMxNWUyZV9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbi12cy1jYXJkXCIsY2xhc3M6eyd3aXRoSG92ZXInOiBfdm0uYWN0aW9uYWJsZSwgJ2ZpeGVkSGVpZ2h0JzogX3ZtLmZpeGVkSGVpZ2h0IH19LFsoX3ZtLmhhc1Nsb3QoJ2hlYWRlcicpKT9fYygnaGVhZGVyJyx7c3RhdGljQ2xhc3M6XCJ2cy1jYXJkLS1oZWFkZXJcIn0sW192bS5fdChcImhlYWRlclwiKV0sMik6X3ZtLl9lKCksKF92bS5oYXNTbG90KCdtZWRpYScpKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1jYXJkLS1tZWRpYVwifSxbX3ZtLl90KFwibWVkaWFcIildLDIpOl92bS5fZSgpLChfdm0uaGFzU2xvdCgnZGVmYXVsdCcpKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1jYXJkLS1jb250ZW50XCIsY2xhc3M6eydmaXhlZEhlaWdodCc6IF92bS5maXhlZEhlaWdodCB9fSxbX3ZtLl90KFwiZGVmYXVsdFwiKV0sMik6X3ZtLl9lKCksKF92bS5oYXNTbG90KCdleHRyYS1jb250ZW50JykpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWNhcmQtZXh0cmEtLWNvbnRlbnRcIn0sW192bS5fdChcImV4dHJhLWNvbnRlbnRcIildLDIpOl92bS5fZSgpLChfdm0uaGFzU2xvdCgnZm9vdGVyJykpP19jKCdmb290ZXInLHtzdGF0aWNDbGFzczpcInZzLWNhcmQtLWZvb3RlclwiLGNsYXNzOnsnZml4ZWRIZWlnaHQnOiBfdm0uZml4ZWRIZWlnaHQgfX0sW192bS5fdChcImZvb3RlclwiKV0sMik6X3ZtLl9lKCldKX1cbnZhciB2c0NhcmR2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNWMxNWUyZV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNDYXJkL3ZzQ2FyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDVjMTVlMmUmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQ2FyZC92c0NhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQ2FyZHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc0NhcmQnLFxuICBwcm9wczoge1xuICAgIGFjdGlvbmFibGU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgZml4ZWRIZWlnaHQ6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGhhc1Nsb3Q6IGZ1bmN0aW9uIGhhc1Nsb3Qoc2xvdCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHNsb3RzW3Nsb3RdO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQ2FyZC92c0NhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQ2FyZF92c0NhcmR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNDYXJkdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNDYXJkL3ZzQ2FyZC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0NhcmRfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c0NhcmRfdnNDYXJkdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0NhcmR2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNWMxNWUyZV9yZW5kZXIsXG4gIHZzQ2FyZHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA1YzE1ZTJlX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0NhcmQgPSAodnNDYXJkX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNDYXJkL2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzQ2FyZCA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNDYXJkLm5hbWUsIHZzQ2FyZCk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkMDkwNjUzJmxhbmc9aHRtbCZcbnZhciB2c0xpc3R2dWVfdHlwZV90ZW1wbGF0ZV9pZF83ZDA5MDY1M19sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1saXN0XCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKX1cbnZhciB2c0xpc3R2dWVfdHlwZV90ZW1wbGF0ZV9pZF83ZDA5MDY1M19sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkMDkwNjUzJmxhbmc9aHRtbCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNMaXN0L3ZzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNMaXN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzTGlzdCdcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0xpc3QvdnNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0xpc3RfdnNMaXN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzTGlzdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3QudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNMaXN0X2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNMaXN0X3ZzTGlzdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNMaXN0dnVlX3R5cGVfdGVtcGxhdGVfaWRfN2QwOTA2NTNfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNMaXN0dnVlX3R5cGVfdGVtcGxhdGVfaWRfN2QwOTA2NTNfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0xpc3QgPSAodnNMaXN0X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3RJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYWQxNWZkOSZsYW5nPWh0bWwmXG52YXIgdnNMaXN0SXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzFhZDE1ZmQ5X2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWxpc3QtLWl0ZW1cIn0sWyhfdm0uJHNsb3RzLmF2YXRhcik/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtbGlzdC0tYXZhdGFyXCJ9LFtfdm0uX3QoXCJhdmF0YXJcIildLDIpOl92bS5fZSgpLChfdm0uaWNvbik/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtbGlzdC0taWNvblwifSxbX2MoJ3ZzLWljb24nLHthdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLmljb259fSldLDEpOl92bS5fZSgpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcImxpc3QtdGl0bGVzXCJ9LFsoX3ZtLnRpdGxlKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1saXN0LS10aXRsZVwifSxbX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKV0pOl92bS5fZSgpLChfdm0uc3VidGl0bGUpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWxpc3QtLXN1YnRpdGxlXCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS5zdWJ0aXRsZSkpXSk6X3ZtLl9lKCldKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1saXN0LS1zbG90XCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKV0pfVxudmFyIHZzTGlzdEl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8xYWQxNWZkOV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3RJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYWQxNWZkOSZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3RJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNMaXN0SXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc0xpc3RJdGVtJyxcbiAgcHJvcHM6IHtcbiAgICB2c0F2YXRhcjoge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHN1YnRpdGxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBpY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBpY29uUGFjazoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ21hdGVyaWFsLWljb25zJ1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3RJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0xpc3RfdnNMaXN0SXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0xpc3RJdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNMaXN0L3ZzTGlzdEl0ZW0udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNMaXN0SXRlbV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzTGlzdF92c0xpc3RJdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0xpc3RJdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfMWFkMTVmZDlfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNMaXN0SXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzFhZDE1ZmQ5X2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNMaXN0SXRlbSA9ICh2c0xpc3RJdGVtX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3RIZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWMxN2YwYzc0Jmxhbmc9aHRtbCZcbnZhciB2c0xpc3RIZWFkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF9jMTdmMGM3NF9sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1saXN0LS1oZWFkZXJcIixjbGFzczpbKFwidnMtaGVhZGVyLWxpc3QtXCIgKyBfdm0uY29sb3IpLHtcbiAgICAnd2l0aC1pY29uJzpfdm0uaWNvbixcbiAgfV0sc3R5bGU6KF92bS5zdHlsZUhlYWRlcil9LFsoX3ZtLmljb24pP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWxpc3QtLWljb25cIn0sW19jKCd2cy1pY29uJyx7YXR0cnM6e1wiaWNvbi1wYWNrXCI6X3ZtLmljb25QYWNrLFwiaWNvblwiOl92bS5pY29ufX0pXSwxKTpfdm0uX2UoKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJsaXN0LXRpdGxlc1wifSxbKF92bS50aXRsZSk/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtbGlzdC0tdGl0bGVcIn0sW192bS5fdihfdm0uX3MoX3ZtLnRpdGxlKSldKTpfdm0uX2UoKV0pXSl9XG52YXIgdnNMaXN0SGVhZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfYzE3ZjBjNzRfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0xpc3QvdnNMaXN0SGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jMTdmMGM3NCZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3RIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzTGlzdEhlYWRlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc0xpc3RIZWFkZXInLFxuICBwcm9wczoge1xuICAgIGNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAncHJpbWFyeSdcbiAgICB9LFxuICAgIHRpdGxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBzdWJ0aXRsZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgaWNvblBhY2s6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdtYXRlcmlhbC1pY29ucydcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgc3R5bGVIZWFkZXI6IGZ1bmN0aW9uIHN0eWxlSGVhZGVyKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IpXG4gICAgICB9O1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTGlzdC92c0xpc3RIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzTGlzdF92c0xpc3RIZWFkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNMaXN0SGVhZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNMaXN0L3ZzTGlzdEhlYWRlci52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0xpc3RIZWFkZXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c0xpc3RfdnNMaXN0SGVhZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0xpc3RIZWFkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF9jMTdmMGM3NF9sYW5nX2h0bWxfcmVuZGVyLFxuICB2c0xpc3RIZWFkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF9jMTdmMGM3NF9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzTGlzdEhlYWRlciA9ICh2c0xpc3RIZWFkZXJfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0xpc3QvaW5kZXguanNcblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzTGlzdCA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNMaXN0Lm5hbWUsIHZzTGlzdCk7XG4gIFZ1ZS5jb21wb25lbnQodnNMaXN0SXRlbS5uYW1lLCB2c0xpc3RJdGVtKTtcbiAgVnVlLmNvbXBvbmVudCh2c0xpc3RIZWFkZXIubmFtZSwgdnNMaXN0SGVhZGVyKTtcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNBdmF0YXIvdnNBdmF0YXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMzMDE0OWVlJmxhbmc9aHRtbCZcbnZhciB2c0F2YXRhcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzMzMDE0OWVlX2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLF92bS5fZyhfdm0uX2Ioe3N0YXRpY0NsYXNzOlwiY29uLXZzLWF2YXRhclwiLGNsYXNzOl92bS5hdmF0YXJDbGFzcyxzdHlsZTooX3ZtLmF2YXRhclN0eWxlKX0sJ2RpdicsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLiRsaXN0ZW5lcnMpLFsoX3ZtLmJhZGdlICYmIF92bS5iYWRnZSA+IDApP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImRvdC1jb3VudCB2cy1hdmF0YXItLWNvdW50XCIsY2xhc3M6X3ZtLmJhZGdlQ2xhc3Msc3R5bGU6KF92bS5iYWRnZVN0eWxlKX0sW192bS5fdihcIiBcIitfdm0uX3ModHlwZW9mIF92bS5iYWRnZSAhPSAnYm9vbGVhbicgPyBfdm0uYmFkZ2UgOiBudWxsKStcIiBcIildKTpfdm0uX2UoKSwoX3ZtLnNyYyk/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29uLWltZyB2cy1hdmF0YXItLWNvbi1pbWdcIn0sW19jKCdpbWcnLHthdHRyczp7XCJzcmNcIjpfdm0uc3JjLFwiYWx0XCI6XCJcIn19KV0pOl9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1hdmF0YXItLXRleHQgbm90cmFuc2xhdGVcIixjbGFzczpbX3ZtLnRleHQgPyAnJyA6IF92bS5pY29uUGFjaywgX3ZtLnRleHQgPyAnJyA6IF92bS5pY29uLCBfdm0udGV4dENsYXNzXSxzdHlsZTooX3ZtLnRleHRTdHlsZSksYXR0cnM6e1widGl0bGVcIjpfdm0udGV4dCxcInRyYW5zbGF0ZVwiOlwibm9cIn19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS50ZXh0ID8gX3ZtLnJldHVyblRleHQgOiBfdm0uaWNvblBhY2sgPT0gJ21hdGVyaWFsLWljb25zJyA/IF92bS5pY29uIDogJycpK1wiIFwiKV0pXSl9XG52YXIgdnNBdmF0YXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zMzAxNDllZV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQXZhdGFyL3ZzQXZhdGFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMzAxNDllZSZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQXZhdGFyL3ZzQXZhdGFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG5cblxuXG5cblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNBdmF0YXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNBdmF0YXInLFxuICBwcm9wczoge1xuICAgIGJhZGdlOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGJhZGdlQ29sb3I6IHtcbiAgICAgIGRlZmF1bHQ6ICdkYW5nZXInLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBzcmM6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGljb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdwZXJzb24nXG4gICAgfSxcbiAgICBpY29uUGFjazoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ21hdGVyaWFsLWljb25zJ1xuICAgIH0sXG4gICAgdGV4dENvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAncmdiKDI1NSwgMjU1LCAyNTUpJ1xuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAncmdiKDE5NSwgMTk1LCAxOTUpJ1xuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBhdmF0YXJDbGFzczogZnVuY3Rpb24gYXZhdGFyQ2xhc3MoKSB7XG4gICAgICB2YXIgY2xhc3NlcyA9IHt9O1xuICAgICAgY2xhc3Nlc1t0aGlzLnNpemVdID0gdHJ1ZTtcblxuICAgICAgaWYgKHV0aWxzX2NvbG9yLmlzQ29sb3IodGhpcy5jb2xvcikpIHtcbiAgICAgICAgY2xhc3Nlc1tcImNvbi12cy1hdmF0YXItXCIuY29uY2F0KHRoaXMuY29sb3IpXSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbGFzc2VzO1xuICAgIH0sXG4gICAgYXZhdGFyU3R5bGU6IGZ1bmN0aW9uIGF2YXRhclN0eWxlKCkge1xuICAgICAgdmFyIHN0eWxlID0ge1xuICAgICAgICB3aWR0aDogL1tweF0vLnRlc3QodGhpcy5zaXplKSA/IHRoaXMuc2l6ZSA6IG51bGwsXG4gICAgICAgIGhlaWdodDogL1tweF0vLnRlc3QodGhpcy5zaXplKSA/IHRoaXMuc2l6ZSA6IG51bGxcbiAgICAgIH07XG5cbiAgICAgIGlmICghdXRpbHNfY29sb3IuaXNDb2xvcih0aGlzLmNvbG9yKSkge1xuICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9LFxuICAgIGJhZGdlQ2xhc3M6IGZ1bmN0aW9uIGJhZGdlQ2xhc3MoKSB7XG4gICAgICB2YXIgY2xhc3NlcyA9IHtcbiAgICAgICAgYmFkZ2VOdW1iZXI6IHR5cGVvZiBiYWRnZSAhPSAnYm9vbGVhbidcbiAgICAgIH07XG5cbiAgICAgIGlmICh1dGlsc19jb2xvci5pc0NvbG9yKHRoaXMuYmFkZ2VDb2xvcikpIHtcbiAgICAgICAgY2xhc3Nlc1tcImRvdC1jb3VudC1cIi5jb25jYXQodGhpcy5iYWRnZUNvbG9yKV0gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9LFxuICAgIGJhZGdlU3R5bGU6IGZ1bmN0aW9uIGJhZGdlU3R5bGUoKSB7XG4gICAgICB2YXIgc3R5bGUgPSB7fTtcblxuICAgICAgaWYgKCF1dGlsc19jb2xvci5pc0NvbG9yKHRoaXMuYmFkZ2VDb2xvcikpIHtcbiAgICAgICAgc3R5bGUuYmFja2dyb3VuZCA9IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuYmFkZ2VDb2xvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9LFxuICAgIHRleHRDbGFzczogZnVuY3Rpb24gdGV4dENsYXNzKCkge1xuICAgICAgdmFyIGNsYXNzZXMgPSB7XG4gICAgICAgICdtYXRlcmlhbC1pY29ucyc6ICF0aGlzLnRleHRcbiAgICAgIH07XG5cbiAgICAgIGlmICh1dGlsc19jb2xvci5pc0NvbG9yKHRoaXMudGV4dENvbG9yKSkge1xuICAgICAgICBjbGFzc2VzW1widnMtYXZhdGFyLXRleHQtXCIuY29uY2F0KHRoaXMudGV4dENvbG9yKV0gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9LFxuICAgIHRleHRTdHlsZTogZnVuY3Rpb24gdGV4dFN0eWxlKCkge1xuICAgICAgdmFyIHN0eWxlID0ge1xuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoXCIuY29uY2F0KHRoaXMucmV0dXJuU2NhbGUsIFwiKVwiKVxuICAgICAgfTtcblxuICAgICAgaWYgKCF1dGlsc19jb2xvci5pc0NvbG9yKHRoaXMudGV4dENvbG9yKSkge1xuICAgICAgICBzdHlsZS5jb2xvciA9IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMudGV4dENvbG9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH0sXG4gICAgcmV0dXJuVGV4dDogZnVuY3Rpb24gcmV0dXJuVGV4dCgpIHtcbiAgICAgIGlmICh0aGlzLnRleHQubGVuZ3RoIDw9IDUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dDtcbiAgICAgIH1cblxuICAgICAgdmFyIGV4cCA9IC9cXHMvZztcbiAgICAgIHZhciBsZXRyYXMgPSAnJztcblxuICAgICAgaWYgKGV4cC50ZXN0KHRoaXMudGV4dCkpIHtcbiAgICAgICAgdGhpcy50ZXh0LnNwbGl0KGV4cCkuZm9yRWFjaChmdW5jdGlvbiAod29yZCkge1xuICAgICAgICAgIGxldHJhcyArPSB3b3JkWzBdLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0cmFzID0gdGhpcy50ZXh0WzBdLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsZXRyYXMubGVuZ3RoID4gNSA/IGxldHJhc1swXSA6IGxldHJhcztcbiAgICB9LFxuICAgIHJldHVyblNjYWxlOiBmdW5jdGlvbiByZXR1cm5TY2FsZSgpIHtcbiAgICAgIGlmICghdGhpcy50ZXh0KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGVuZ3RoeCA9IHRoaXMucmV0dXJuVGV4dC5sZW5ndGg7XG5cbiAgICAgIGlmIChsZW5ndGh4IDw9IDUgJiYgbGVuZ3RoeCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIGxlbmd0aHggLyAobGVuZ3RoeCAqIDEuNTApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNBdmF0YXIvdnNBdmF0YXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQXZhdGFyX3ZzQXZhdGFydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzQXZhdGFydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNBdmF0YXIvdnNBdmF0YXIudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNBdmF0YXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c0F2YXRhcl92c0F2YXRhcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNBdmF0YXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zMzAxNDllZV9sYW5nX2h0bWxfcmVuZGVyLFxuICB2c0F2YXRhcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzMzMDE0OWVlX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNBdmF0YXIgPSAodnNBdmF0YXJfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0F2YXRhci9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c0F2YXRhciA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNBdmF0YXIubmFtZSwgdnNBdmF0YXIpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1BhZ2luYXRpb24vdnNQYWdpbmF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NTE3NDRmNiZcbnZhciB2c1BhZ2luYXRpb252dWVfdHlwZV90ZW1wbGF0ZV9pZF82NTE3NDRmNl9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCd2cy1yb3cnLHthdHRyczp7XCJ2cy10eXBlXCI6XCJmbGV4XCIsXCJ2cy1qdXN0aWZ5XCI6XCJzcGFjZS1iZXR3ZWVuXCIsXCJ2cy13XCI6XCIxMlwifX0sW19jKCd2cy1jb2wnLHtzdGF0aWNDbGFzczpcInZzLXBhZ2luYXRpb24tLW1iXCIsYXR0cnM6e1widnMtdHlwZVwiOlwiZmxleFwiLFwidnMtanVzdGlmeVwiOlwiZmxleC1zdGFydFwiLFwidnMtYWxpZ25cIjpcImNlbnRlclwiLFwidnMtbGdcIjpcIjZcIixcInZzLXNtXCI6XCIxMlwiLFwidnMteHNcIjpcIjEyXCJ9fSxbKF92bS5kZXNjcmlwdGlvbik/X2MoJ2RpdicsW19jKCdzcGFuJyx7c3RhdGljU3R5bGU6e1wibWFyZ2luLXJpZ2h0XCI6XCI1cHhcIn19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS5kZXNjcmlwdGlvblRpdGxlKStcIjogXCIrX3ZtLl9zKF92bS5taW5Sb3dzKStcIiAtIFwiK192bS5fcyhfdm0ubWF4Um93cykrXCIgXCIrX3ZtLl9zKF92bS5kZXNjcmlwdGlvbkNvbm5lY3RvcikrXCIgXCIrX3ZtLl9zKF92bS5zaXplQXJyYXkpK1wiIHwgXCIrX3ZtLl9zKF92bS5kZXNjcmlwdGlvbkJvZHkpK1wiOiBcIildKSxfYygndWwnLHtzdGF0aWNDbGFzczpcInZzLXBhZ2luYXRpb24tLWFycmF5XCJ9LF92bS5fbCgoX3ZtLmRlc2NyaXB0aW9uSXRlbXMpLGZ1bmN0aW9uKHJvdyxpbmRleCl7cmV0dXJuIF9jKCdsaScse2tleTppbmRleH0sW19jKCdzcGFuJyx7Y2xhc3M6WyhcInZzLWRlc2NyaXB0aW9uLVwiICsgX3ZtLmNvbG9yKSx7ICd2cy1wYWdpbmF0aW9uLS1ib2xkJzogKGluZGV4PT1fdm0uaW5kZXhSb3dzKX1dLHN0eWxlOihfdm0uc3R5bGVEZXNjcmlwdGlvbiksb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0uY2hhbmdlUm93TWF4SXRlbXMoaW5kZXgpfX19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKHJvdykrXCIgXCIpXSksKGluZGV4ICE9IChfdm0uZGVzY3JpcHRpb25JdGVtcy5sZW5ndGggLSAxKSk/X2MoJ3NwYW4nLFtfdm0uX3YoXCIgLCBcIildKTpfdm0uX2UoKV0pfSksMCldKTpfdm0uX2UoKV0pLF9jKCd2cy1jb2wnLHtzdGF0aWNDbGFzczpcInZzLXBhZ2luYXRpb24tLW1iXCIsYXR0cnM6e1widnMtdHlwZVwiOlwiZmxleFwiLFwidnMtanVzdGlmeVwiOlwiZmxleC1lbmRcIixcInZzLWFsaWduXCI6XCJjZW50ZXJcIixcInZzLWxnXCI6XCI2XCIsXCJ2cy1zbVwiOlwiMTJcIixcInZzLXhzXCI6XCIxMlwifX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbi12cy1wYWdpbmF0aW9uXCIsY2xhc3M6WyhcInZzLXBhZ2luYXRpb24tXCIgKyBfdm0uY29sb3IpXSxzdHlsZTooX3ZtLnN0eWxlUGFnaW5hdGlvbil9LFtfYygnbmF2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1wYWdpbmF0aW9uLS1uYXZcIn0sW19jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcInZzLXBhZ2luYXRpb24tLWJ1dHRvbnMgYnRuLXByZXYtcGFnaW5hdGlvbiB2cy1wYWdpbmF0aW9uLS1idXR0b24tcHJldlwiLGNsYXNzOntkaXNhYmxlZDpfdm0uY3VycmVudCA8PSAxID8gJ2Rpc2FibGVkJyA6IG51bGx9LGF0dHJzOntcImRpc2FibGVkXCI6X3ZtLmN1cnJlbnQgPT09IDF9LG9uOntcImNsaWNrXCI6X3ZtLnByZXZQYWdlfX0sW19jKCd2cy1pY29uJyx7YXR0cnM6e1wiaWNvbi1wYWNrXCI6X3ZtLmljb25QYWNrLFwiaWNvblwiOl92bS5wcmV2SWNvbiA/IF92bS5wcmV2SWNvbiA6IF92bS5kZWZhdWx0UHJldkljb259fSldLDEpLF9jKCd1bCcse3N0YXRpY0NsYXNzOlwidnMtcGFnaW5hdGlvbi0tdWxcIn0sX3ZtLl9sKChfdm0ucGFnZXMpLGZ1bmN0aW9uKHBhZ2UsaW5kZXgpe3JldHVybiBfYygnbGknLHtrZXk6aW5kZXgsc3RhdGljQ2xhc3M6XCJpdGVtLXBhZ2luYXRpb24gdnMtcGFnaW5hdGlvbi0tbGlcIixjbGFzczp7J2lzLWN1cnJlbnQnOiBwYWdlID09IF92bS5jdXJyZW50fSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5nb1RvKHBhZ2UpfX19LFtfYygnc3BhbicsW192bS5fdihcIiBcIitfdm0uX3MocGFnZSkrXCIgXCIpXSksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiZWZmZWN0XCJ9KV0pfSksMCksX2MoJ2J1dHRvbicse3N0YXRpY0NsYXNzOlwidnMtcGFnaW5hdGlvbi0tYnV0dG9ucyBidG4tbmV4dC1wYWdpbmF0aW9uIHZzLXBhZ2luYXRpb24tLWJ1dHRvbi1uZXh0XCIsY2xhc3M6e2Rpc2FibGVkOl92bS5jdXJyZW50ID09PSBfdm0udG90YWwgPyAnZGlzYWJsZWQnIDogbnVsbH0sYXR0cnM6e1wiZGlzYWJsZWRcIjpfdm0uY3VycmVudCA9PT0gX3ZtLnRvdGFsfSxvbjp7XCJjbGlja1wiOl92bS5uZXh0UGFnZX19LFtfYygndnMtaWNvbicse2F0dHJzOntcImljb24tcGFja1wiOl92bS5pY29uUGFjayxcImljb25cIjpfdm0ubmV4dEljb24gPyBfdm0ubmV4dEljb24gOiBfdm0uZGVmYXVsdE5leHRJY29ufX0pXSwxKSwoX3ZtLmdvdG8pP19jKCdpbnB1dCcse2RpcmVjdGl2ZXM6W3tuYW1lOlwibW9kZWxcIixyYXdOYW1lOlwidi1tb2RlbFwiLHZhbHVlOihfdm0uZ28pLGV4cHJlc3Npb246XCJnb1wifV0sc3RhdGljQ2xhc3M6XCJ2cy1wYWdpbmF0aW9uLS1pbnB1dC1nb3RvXCIsYXR0cnM6e1wibWF4XCI6X3ZtLnRvdGFsLFwibWluXCI6XCIxXCIsXCJ0eXBlXCI6XCJudW1iZXJcIn0sZG9tUHJvcHM6e1widmFsdWVcIjooX3ZtLmdvKX0sb246e1wiY2hhbmdlXCI6X3ZtLmdvVG8sXCJpbnB1dFwiOmZ1bmN0aW9uKCRldmVudCl7aWYoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpeyByZXR1cm47IH1fdm0uZ289JGV2ZW50LnRhcmdldC52YWx1ZX19fSk6X3ZtLl9lKCldKV0pXSldLDEpfVxudmFyIHZzUGFnaW5hdGlvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzY1MTc0NGY2X3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1BhZ2luYXRpb24vdnNQYWdpbmF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NTE3NDRmNiZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanNcbnZhciBydW50aW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE0ZWFcIik7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanNcbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZWplY3QoZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpbmZvLmRvbmUpIHtcbiAgICByZXNvbHZlKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcblxuICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgfVxuXG4gICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNQYWdpbmF0aW9uL3ZzUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzUGFnaW5hdGlvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc1BhZ2luYXRpb24nLFxuICBwcm9wczoge1xuICAgIGNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAncHJpbWFyeSdcbiAgICB9LFxuICAgIHRvdGFsOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgc2l6ZUFycmF5OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogZmFsc2VcbiAgICB9LFxuICAgIG1heEl0ZW1zOiB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgfSxcbiAgICB2YWx1ZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBkZWZhdWx0OiAxXG4gICAgfSxcbiAgICBtYXg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDlcbiAgICB9LFxuICAgIGdvdG86IHtcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgcHJldkljb246IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgbmV4dEljb246IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgaWNvblBhY2s6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdtYXRlcmlhbC1pY29ucydcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uSXRlbXM6IHtcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9LFxuICAgICAgdHlwZTogQXJyYXlcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uVGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdSZWdpc3RyaWVzJ1xuICAgIH0sXG4gICAgZGVzY3JpcHRpb25Db25uZWN0b3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdvZidcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uQm9keToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ1BhZ2VzJ1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZXM6IFtdLFxuICAgICAgY3VycmVudDogMCxcbiAgICAgIGdvOiAwLFxuICAgICAgcHJldlJhbmdlOiAnJyxcbiAgICAgIG5leHRSYW5nZTogJycsXG4gICAgICBob3ZlckJ0bjE6IGZhbHNlLFxuICAgICAgbWluUm93czogMCxcbiAgICAgIG1heFJvd3M6IDAsXG4gICAgICBpbmRleFJvd3M6IDBcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGRlZmF1bHROZXh0SWNvbjogZnVuY3Rpb24gZGVmYXVsdE5leHRJY29uKCkge1xuICAgICAgaWYgKHRoaXMuJHZzLnJ0bCkgcmV0dXJuICdjaGV2cm9uX2xlZnQnO1xuICAgICAgcmV0dXJuICdjaGV2cm9uX3JpZ2h0JztcbiAgICB9LFxuICAgIGRlZmF1bHRQcmV2SWNvbjogZnVuY3Rpb24gZGVmYXVsdFByZXZJY29uKCkge1xuICAgICAgaWYgKHRoaXMuJHZzLnJ0bCkgcmV0dXJuICdjaGV2cm9uX3JpZ2h0JztcbiAgICAgIHJldHVybiAnY2hldnJvbl9sZWZ0JztcbiAgICB9LFxuICAgIHN0eWxlUGFnaW5hdGlvbjogZnVuY3Rpb24gc3R5bGVQYWdpbmF0aW9uKCkge1xuICAgICAgdmFyIHN0eWxlID0ge307XG5cbiAgICAgIGlmICghdXRpbHNfY29sb3IuaXNDb2xvcih0aGlzLmNvbG9yKSkge1xuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICAnLS12cy1jb2xvci1wYWdpbmF0aW9uJzogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciksXG4gICAgICAgICAgJy0tdnMtY29sb3ItcGFnaW5hdGlvbi1hbHBoYSc6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIC41KVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfSxcbiAgICBzdHlsZURlc2NyaXB0aW9uOiBmdW5jdGlvbiBzdHlsZURlc2NyaXB0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ2N1cnNvcic6ICdwb2ludGVyJ1xuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgY3VycmVudDogZnVuY3Rpb24gY3VycmVudCh2YWwpIHtcbiAgICAgIHRoaXMuZ2V0UGFnZXMoKTtcbiAgICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4KHZhbCk7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMuY3VycmVudCk7XG4gICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCB0aGlzLmN1cnJlbnQpO1xuICAgIH0sXG4gICAgdG90YWw6IGZ1bmN0aW9uIHRvdGFsKCkge1xuICAgICAgdGhpcy5nZXRQYWdlcygpO1xuICAgIH0sXG4gICAgbWF4OiBmdW5jdGlvbiBtYXgoKSB7XG4gICAgICB0aGlzLmdldFBhZ2VzKCk7XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsKSB7XG4gICAgICB2YXIgcGFnZU51bSA9IHZhbCA8IDEgPyAxIDogdmFsIDw9IHRoaXMudG90YWwgPyB2YWwgOiB0aGlzLnRvdGFsO1xuICAgICAgdGhpcy5nb1RvKHBhZ2VOdW0pO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBfbW91bnRlZCA9IF9hc3luY1RvR2VuZXJhdG9yKFxuICAgIC8qI19fUFVSRV9fKi9cbiAgICByZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmdvID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDM7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZU1pbk1heCh0aGlzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIHRoaXMuaW5kZXhSb3dzID0gdGhpcy5kZXNjcmlwdGlvbkl0ZW1zLmluZGV4T2YodGhpcy5tYXhJdGVtcyk7XG4gICAgICAgICAgICAgIHRoaXMuZ2V0UGFnZXMoKTtcblxuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgfSkpO1xuXG4gICAgZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICAgIHJldHVybiBfbW91bnRlZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJldHVybiBtb3VudGVkO1xuICB9KCksXG4gIG1ldGhvZHM6IHtcbiAgICBjaGFuZ2VSb3dNYXhJdGVtczogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9jaGFuZ2VSb3dNYXhJdGVtcyA9IF9hc3luY1RvR2VuZXJhdG9yKFxuICAgICAgLyojX19QVVJFX18qL1xuICAgICAgcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4Um93cyA9IGluZGV4O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZW1pdCgnY2hhbmdlTWF4SXRlbXMnLCBpbmRleCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVNaW5NYXgodGhpcy5jdXJyZW50KTtcblxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gMTtcblxuICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUyLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gY2hhbmdlUm93TWF4SXRlbXMoX3gpIHtcbiAgICAgICAgcmV0dXJuIF9jaGFuZ2VSb3dNYXhJdGVtcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hhbmdlUm93TWF4SXRlbXM7XG4gICAgfSgpLFxuICAgIGNhbGN1bGF0ZU1pbk1heDogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9jYWxjdWxhdGVNaW5NYXggPSBfYXN5bmNUb0dlbmVyYXRvcihcbiAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgIHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKHZhbCkge1xuICAgICAgICByZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMubWF4Um93cyA9IHZhbCAqIHRoaXMubWF4SXRlbXMgPD0gdGhpcy5zaXplQXJyYXkgPyB2YWwgKiB0aGlzLm1heEl0ZW1zIDogdGhpcy5zaXplQXJyYXk7XG4gICAgICAgICAgICAgICAgdGhpcy5taW5Sb3dzID0gdmFsICogdGhpcy5tYXhJdGVtcyA8PSB0aGlzLnNpemVBcnJheSA/IHRoaXMubWF4Um93cyAtIHRoaXMubWF4SXRlbXMgKyAxIDogKHRoaXMuY3VycmVudCAtIDEpICogdGhpcy5tYXhJdGVtcyArIDE7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZU1pbk1heChfeDIpIHtcbiAgICAgICAgcmV0dXJuIF9jYWxjdWxhdGVNaW5NYXguYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbGN1bGF0ZU1pbk1heDtcbiAgICB9KCksXG4gICAgaXNFbGxpcHNpczogZnVuY3Rpb24gaXNFbGxpcHNpcyhwYWdlKSB7XG4gICAgICByZXR1cm4gcGFnZSA9PT0gJy4uLic7XG4gICAgfSxcbiAgICBnb1RvOiBmdW5jdGlvbiBnb1RvKHBhZ2UpIHtcbiAgICAgIGlmIChwYWdlID09PSAnLi4uJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgcGFnZS50YXJnZXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IHBhZ2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJzZUludChwYWdlLnRhcmdldC52YWx1ZSwgMTApO1xuICAgICAgICB0aGlzLmdvID0gdmFsdWUgPCAxID8gMSA6IHZhbHVlIDw9IHRoaXMudG90YWwgPyB2YWx1ZSA6IHRoaXMudG90YWw7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMuZ287XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRQYWdlczogZnVuY3Rpb24gZ2V0UGFnZXMoKSB7XG4gICAgICBpZiAodGhpcy50b3RhbCA8PSB0aGlzLm1heCkge1xuICAgICAgICB2YXIgcGFnZXMgPSB0aGlzLnNldFBhZ2VzKDEsIHRoaXMudG90YWwpO1xuICAgICAgICB0aGlzLnBhZ2VzID0gcGFnZXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBldmVuID0gdGhpcy5tYXggJSAyID09PSAwID8gMSA6IDA7XG5cbiAgICAgIGlmICh0aGlzLnRvdGFsIDwgNikge1xuICAgICAgICB0aGlzLnByZXZSYW5nZSA9IE1hdGguZmxvb3IodGhpcy5tYXggLyAodGhpcy5tYXggLyAyKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByZXZSYW5nZSA9IE1hdGguZmxvb3IodGhpcy5tYXggLyAyKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZXh0UmFuZ2UgPSB0aGlzLnRvdGFsIC0gdGhpcy5wcmV2UmFuZ2UgKyAxICsgZXZlbjtcblxuICAgICAgaWYgKHRoaXMuY3VycmVudCA+PSB0aGlzLnByZXZSYW5nZSAmJiB0aGlzLmN1cnJlbnQgPD0gdGhpcy5uZXh0UmFuZ2UpIHtcbiAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5jdXJyZW50IC0gdGhpcy5wcmV2UmFuZ2UgKyAyO1xuICAgICAgICB2YXIgZW5kID0gdGhpcy5jdXJyZW50ICsgdGhpcy5wcmV2UmFuZ2UgLSAyIC0gZXZlbjtcbiAgICAgICAgdGhpcy5wYWdlcyA9IFsxLCAnLi4uJ10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheSh0aGlzLnNldFBhZ2VzKHN0YXJ0LCBlbmQpKSwgWycuLi4nLCB0aGlzLnRvdGFsXSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudG90YWwgPCA2KSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBfdG9Db25zdW1hYmxlQXJyYXkodGhpcy5zZXRQYWdlcygxLCB0aGlzLnRvdGFsKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZ2VzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheSh0aGlzLnNldFBhZ2VzKDEsIHRoaXMucHJldlJhbmdlKSksIFsnLi4uJ10sIF90b0NvbnN1bWFibGVBcnJheSh0aGlzLnNldFBhZ2VzKHRoaXMubmV4dFJhbmdlLCB0aGlzLnRvdGFsKSkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0UGFnZXM6IGZ1bmN0aW9uIHNldFBhZ2VzKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBzZXRQYWdlcyA9IFtdO1xuXG4gICAgICBmb3IgKHN0YXJ0ID4gMCA/IHN0YXJ0IDogMTsgc3RhcnQgPD0gZW5kOyBzdGFydCsrKSB7XG4gICAgICAgIHNldFBhZ2VzLnB1c2goc3RhcnQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2V0UGFnZXM7XG4gICAgfSxcbiAgICBuZXh0UGFnZTogZnVuY3Rpb24gbmV4dFBhZ2UoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50IDwgdGhpcy50b3RhbCkge1xuICAgICAgICB0aGlzLmN1cnJlbnQrKztcbiAgICAgIH1cbiAgICB9LFxuICAgIHByZXZQYWdlOiBmdW5jdGlvbiBwcmV2UGFnZSgpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnQgPiAxKSB7XG4gICAgICAgIHRoaXMuY3VycmVudC0tO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzUGFnaW5hdGlvbi92c1BhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzUGFnaW5hdGlvbl92c1BhZ2luYXRpb252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNQYWdpbmF0aW9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNQYWdpbmF0aW9uL3ZzUGFnaW5hdGlvbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1BhZ2luYXRpb25fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c1BhZ2luYXRpb25fdnNQYWdpbmF0aW9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1BhZ2luYXRpb252dWVfdHlwZV90ZW1wbGF0ZV9pZF82NTE3NDRmNl9yZW5kZXIsXG4gIHZzUGFnaW5hdGlvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzY1MTc0NGY2X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1BhZ2luYXRpb24gPSAodnNQYWdpbmF0aW9uX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNQYWdpbmF0aW9uL2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzUGFnaW5hdGlvbiA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNQYWdpbmF0aW9uLm5hbWUsIHZzUGFnaW5hdGlvbik7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQnJlYWRjcnVtYi92c0JyZWFkY3J1bWIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA3OTVhNjNjJmxhbmc9aHRtbCZcbnZhciB2c0JyZWFkY3J1bWJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNzk1YTYzY19sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnbmF2Jyxfdm0uX2coX3ZtLl9iKHtzdGF0aWNDbGFzczpcInZzLWJyZWFkY3J1bWJcIixjbGFzczooXCJ2cy1hbGlnbi1cIiArIF92bS5hbGlnbiksYXR0cnM6e1wiYXJpYS1sYWJlbFwiOlwiYnJlYWRjcnVtYlwifX0sJ25hdicsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLiRsaXN0ZW5lcnMpLFtfYygnb2wnLHtzdGF0aWNDbGFzczpcInZzLWJyZWFkY3J1bWItLW9sXCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpLF92bS5fbCgoX3ZtLml0ZW1zKSxmdW5jdGlvbihpdGVtKXtyZXR1cm4gX2MoJ2xpJyx7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOighX3ZtLmhhc1Nsb3QpLGV4cHJlc3Npb246XCIhaGFzU2xvdFwifV0sa2V5Oml0ZW0udGl0bGUsY2xhc3M6eyd2cy1hY3RpdmUnOml0ZW0uYWN0aXZlLCdkaXNhYmxlZC1saW5rJzppdGVtLmRpc2FibGVkfSxhdHRyczp7XCJhcmlhLWN1cnJlbnRcIjppdGVtLmFjdGl2ZSA/ICdwYWdlJyA6IG51bGx9fSxbKCFpdGVtLmFjdGl2ZSk/X2MoJ2EnLHtzdGF0aWNDbGFzczpcInZzLWJyZWFkY3J1bWItLWxpbmtcIixhdHRyczp7XCJocmVmXCI6aXRlbS51cmwgPyBpdGVtLnVybCA6ICcjJyxcInRpdGxlXCI6aXRlbS50aXRsZX19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKGl0ZW0udGl0bGUpK1wiIFwiKV0pOltfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwidnMtYnJlYWRjcnVtYi0tdGV4dFwiLGNsYXNzOl92bS50ZXh0Q2xhc3Msc3R5bGU6KF92bS50ZXh0U3R5bGUpfSxbX3ZtLl92KFwiIFwiK192bS5fcyhpdGVtLnRpdGxlKStcIiBcIildKV0sKCFpdGVtLmFjdGl2ZSk/X2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInNlcGFyYXRvciBub3RyYW5zbGF0ZSB2cy1icmVhZGNydW0tLXNlcGFyYXRvclwiLGNsYXNzOl92bS5zZXBhcmF0b3IubGVuZ3RoID4gMSA/ICdtYXRlcmlhbC1pY29ucycgOiBudWxsLGF0dHJzOntcInRyYW5zbGF0ZVwiOlwibm9cIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9fSxbX3ZtLl92KF92bS5fcyhfdm0uc2VwYXJhdG9yKSldKTpfdm0uX2UoKV0sMil9KV0sMildKX1cbnZhciB2c0JyZWFkY3J1bWJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNzk1YTYzY19sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQnJlYWRjcnVtYi92c0JyZWFkY3J1bWIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA3OTVhNjNjJmxhbmc9aHRtbCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNCcmVhZGNydW1iL3ZzQnJlYWRjcnVtYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmZ1bmN0aW9uIHZzQnJlYWRjcnVtYnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIHZzQnJlYWRjcnVtYnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyB2c0JyZWFkY3J1bWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IHZzQnJlYWRjcnVtYnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0JyZWFkY3J1bWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNCcmVhZGNydW1iJyxcbiAgcHJvcHM6IHtcbiAgICBpdGVtczoge1xuICAgICAgdHlwZTogQXJyYXlcbiAgICB9LFxuICAgIHNlcGFyYXRvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJy8nXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3ByaW1hcnknXG4gICAgfSxcbiAgICBhbGlnbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2xlZnQnXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHRleHRDbGFzczogZnVuY3Rpb24gdGV4dENsYXNzKCkge1xuICAgICAgdmFyIGNsYXNzZXMgPSB7fTtcblxuICAgICAgaWYgKHV0aWxzX2NvbG9yLmlzQ29sb3IodGhpcy5jb2xvcikpIHtcbiAgICAgICAgY2xhc3Nlc1tcInZzLWJyZWFkY3J1bWItdGV4dC1cIi5jb25jYXQodGhpcy5jb2xvcildID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfSxcbiAgICB0ZXh0U3R5bGU6IGZ1bmN0aW9uIHRleHRTdHlsZSgpIHtcbiAgICAgIHZhciBzdHlsZSA9IHt9O1xuXG4gICAgICBpZiAoIXV0aWxzX2NvbG9yLmlzQ29sb3IodGhpcy5jb2xvcikpIHtcbiAgICAgICAgc3R5bGUuY29sb3IgPSB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH0sXG4gICAgaGFzU2xvdDogZnVuY3Rpb24gaGFzU2xvdCgpIHtcbiAgICAgIHJldHVybiAhIXRoaXMuJHNsb3RzLmRlZmF1bHQ7XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbS50aXRsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgcmV0dXJuIHZzQnJlYWRjcnVtYnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX29iamVjdFNwcmVhZCh7fSwgaXRlbSwge1xuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUoX3RoaXMuJHJvdXRlLnBhcmFtcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNCcmVhZGNydW1iL3ZzQnJlYWRjcnVtYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNCcmVhZGNydW1iX3ZzQnJlYWRjcnVtYnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0JyZWFkY3J1bWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0JyZWFkY3J1bWIvdnNCcmVhZGNydW1iLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzQnJlYWRjcnVtYl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzQnJlYWRjcnVtYl92c0JyZWFkY3J1bWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzQnJlYWRjcnVtYnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA3OTVhNjNjX2xhbmdfaHRtbF9yZW5kZXIsXG4gIHZzQnJlYWRjcnVtYnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA3OTVhNjNjX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNCcmVhZGNydW1iID0gKHZzQnJlYWRjcnVtYl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQnJlYWRjcnVtYi9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c0JyZWFkY3J1bWIgPSAoZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHZzQnJlYWRjcnVtYi5uYW1lLCB2c0JyZWFkY3J1bWIpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvZnVuY3Rpb25zL3ZzRGlhbG9nL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kNzFkYTZmYSZsYW5nPWh0bWwmXG52YXIgdnNEaWFsb2d2dWVfdHlwZV90ZW1wbGF0ZV9pZF9kNzFkYTZmYV9sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygndHJhbnNpdGlvbicse2F0dHJzOntcIm5hbWVcIjpcImRpYWxvZy10XCJ9fSxbKF92bS5pc1Byb21wdCA/IF92bS5hY3RpdmUgOiBfdm0uZkFjdGl2ZSk/X2MoJ2Rpdicse3JlZjpcImNvblwiLHN0YXRpY0NsYXNzOlwidnMtY29tcG9uZW50IGNvbi12cy1kaWFsb2dcIixjbGFzczpbKFwidnMtZGlhbG9nLVwiICsgX3ZtLmNvbG9yKV19LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1kaWFsb2ctZGFya1wiLG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLmhhbmRsZUNsb3NlKCRldmVudCx0cnVlKX19fSksX2MoJ2Rpdicse3JlZjpcImRpYWxvZ3hcIixzdGF0aWNDbGFzczpcInZzLWRpYWxvZ1wifSxbX2MoJ2hlYWRlcicse3N0YXRpY0NsYXNzOlwidnMtZGlhbG9nLWhlYWRlclwiLHN0eWxlOihfdm0uc3R5bGVIZWFkZXIpfSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29uLXRpdGxlLWFmdGVyXCJ9LFtfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwiYWZ0ZXJcIixzdHlsZTooX3ZtLnN0eWxlQWZ0ZXIpfSksX2MoJ2gzJyx7c3RhdGljQ2xhc3M6XCJkaWFsb2ctdGl0bGVcIn0sW192bS5fdihfdm0uX3MoX3ZtLnRpdGxlKStcIiBcIildKV0pLChfdm0udHlwZT09J2FsZXJ0Jyk/X2MoJ3ZzLWljb24nLHtzdGF0aWNDbGFzczpcInZzLWRpYWxvZy1jYW5jZWwgdnMtZGlhbG9nLWNhbmNlbC0taWNvbiBub3RyYW5zbGF0ZVwiLGF0dHJzOntcImljb25cIjpfdm0uY2xvc2VJY29uLFwiaWNvbi1wYWNrXCI6X3ZtLmljb25QYWNrfSxuYXRpdmVPbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5oYW5kbGVDbG9zZSgkZXZlbnQpfX19KTpfdm0uX2UoKV0sMSksX3ZtLl92KFwiIFwiKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1kaWFsb2ctdGV4dFwifSxbX3ZtLl90KFwiZGVmYXVsdFwiKSxfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS50ZXh0KStcIiBcIildLDIpLChfdm0uYnV0dG9uc0hpZGRlbj9mYWxzZTpfdm0uaXNQcm9tcHR8fF92bS50eXBlPT0nY29uZmlybScpP19jKCdmb290ZXInLFtfYygndnMtYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJ2cy1kaWFsb2ctYWNjZXB0LWJ1dHRvblwiLGF0dHJzOntcImRpc2FibGVkXCI6X3ZtLmlzVmFsaWQ9PSdub25lJz9mYWxzZTohX3ZtLmlzVmFsaWQsXCJjb2xvclwiOl92bS5jb2xvcixcInR5cGVcIjpfdm0uYnV0dG9uQWNjZXB0fSxvbjp7XCJjbGlja1wiOl92bS5hY2NlcHREaWFsb2d9fSxbX3ZtLl92KF92bS5fcyhfdm0uYWNjZXB0VGV4dCkpXSksX2MoJ3ZzLWJ1dHRvbicse3N0YXRpY0NsYXNzOlwidnMtZGlhbG9nLWNhbmNlbC1idXR0b25cIixhdHRyczp7XCJ0ZXh0LWNvbG9yXCI6J3JnYmEoMCwwLDAsLjUpJyxcInR5cGVcIjpfdm0uYnV0dG9uQ2FuY2VsfSxvbjp7XCJjbGlja1wiOl92bS5jYW5jZWxDbG9zZX19LFtfdm0uX3YoX3ZtLl9zKF92bS5jYW5jZWxUZXh0KSldKV0sMSk6X3ZtLl9lKCksKF92bS50eXBlPT0nYWxlcnQnJiYhX3ZtLmlzUHJvbXB0KT9fYygnZm9vdGVyJyxbX2MoJ3ZzLWJ1dHRvbicse3N0YXRpY0NsYXNzOlwidnMtZGlhbG9nLWFjY2VwdC1idXR0b25cIixhdHRyczp7XCJjb2xvclwiOl92bS5jb2xvcixcInR5cGVcIjpfdm0uYnV0dG9uQWNjZXB0fSxvbjp7XCJjbGlja1wiOl92bS5hY2NlcHREaWFsb2d9fSxbX3ZtLl92KF92bS5fcyhfdm0uYWNjZXB0VGV4dCkpXSldLDEpOl92bS5fZSgpXSldKTpfdm0uX2UoKV0pfVxudmFyIHZzRGlhbG9ndnVlX3R5cGVfdGVtcGxhdGVfaWRfZDcxZGE2ZmFfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3ZzRGlhbG9nL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kNzFkYTZmYSZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9mdW5jdGlvbnMvdnNEaWFsb2cvaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzRGlhbG9ndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzUHJvbXB0JyxcbiAgcHJvcHM6IHtcbiAgICBjb2xvcjoge1xuICAgICAgZGVmYXVsdDogJ3ByaW1hcnknLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBhY3RpdmU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgYnV0dG9uQWNjZXB0OiB7XG4gICAgICBkZWZhdWx0OiAnZmlsbGVkJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgYnV0dG9uQ2FuY2VsOiB7XG4gICAgICBkZWZhdWx0OiAnZmxhdCcsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGlzVmFsaWQ6IHtcbiAgICAgIGRlZmF1bHQ6ICdub25lJyxcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddXG4gICAgfSxcbiAgICBidXR0b25zSGlkZGVuOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIGFjY2VwdFRleHQ6IHtcbiAgICAgIGRlZmF1bHQ6ICdBY2NlcHQnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBjYW5jZWxUZXh0OiB7XG4gICAgICBkZWZhdWx0OiAnQ2FuY2VsJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgaWNvblBhY2s6IHtcbiAgICAgIGRlZmF1bHQ6ICdtYXRlcmlhbC1pY29ucycsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGNsb3NlSWNvbjoge1xuICAgICAgZGVmYXVsdDogJ2Nsb3NlJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIGRlZmF1bHQ6ICdEaWFsb2cnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICBkZWZhdWx0OiAnYWxlcnQnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBwYXJlbnQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzUHJvbXB0OiB0cnVlLFxuICAgICAgZkFjdGl2ZTogZmFsc2UsXG4gICAgICBwYXJhbWV0ZXJzOiBudWxsXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZUhlYWRlcjogZnVuY3Rpb24gc3R5bGVIZWFkZXIoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSlcbiAgICAgIH07XG4gICAgfSxcbiAgICBzdHlsZUFmdGVyOiBmdW5jdGlvbiBzdHlsZUFmdGVyKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSlcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGFjdGl2ZTogZnVuY3Rpb24gYWN0aXZlKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzMi5hY3RpdmUpIHtcbiAgICAgICAgICBfdGhpczIuaW5zZXJ0Qm9keSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGZBY3RpdmU6IGZ1bmN0aW9uIGZBY3RpdmUoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMzLmZBY3RpdmUpIHtcbiAgICAgICAgICBfdGhpczMuaW5zZXJ0Qm9keSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlICYmIHRoaXMuaXNQcm9tcHQpIHtcbiAgICAgIHRoaXMuaW5zZXJ0Qm9keSgpO1xuICAgIH1cblxuICAgIHRoaXMuZkFjdGl2ZSA9IHRoaXMuYWN0aXZlO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2l2ZUNvbG9yOiBmdW5jdGlvbiBnaXZlQ29sb3IoY29sb3IpIHtcbiAgICAgIHJldHVybiB1dGlsc19jb2xvci5yQ29sb3IoY29sb3IpO1xuICAgIH0sXG4gICAgYWNjZXB0RGlhbG9nOiBmdW5jdGlvbiBhY2NlcHREaWFsb2coKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMuaXNQcm9tcHQpIHtcbiAgICAgICAgdGhpcy5hY2NlcHQgPyB0aGlzLmFjY2VwdCh0aGlzLnBhcmFtZXRlcnMpIDogbnVsbDtcbiAgICAgICAgdGhpcy5mQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTphY3RpdmUnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2FjY2VwdCcsIHRoaXMucGFyYW1ldGVycyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkIHx8IHRoaXMuaXNWYWxpZCA9PSAnbm9uZScpIHtcbiAgICAgICAgICB0aGlzLmFjY2VwdCA/IHRoaXMuYWNjZXB0KCkgOiBudWxsO1xuICAgICAgICAgIHRoaXMuZkFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTphY3RpdmUnLCBmYWxzZSk7XG4gICAgICAgICAgdGhpcy4kZW1pdCgnYWNjZXB0JywgdGhpcy5wYXJhbWV0ZXJzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgcmVib3VuZDogZnVuY3Rpb24gcmVib3VuZCgpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRyZWZzLmRpYWxvZ3guY2xhc3NMaXN0LmFkZCgnbG9ja2VkJyk7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXM0LiRyZWZzLmRpYWxvZ3guY2xhc3NMaXN0LnJlbW92ZSgnbG9ja2VkJyk7XG4gICAgICB9LCAyMDApO1xuICAgIH0sXG4gICAgaGFuZGxlQ2xvc2U6IGZ1bmN0aW9uIGhhbmRsZUNsb3NlKGV2ZW50LCBjb24pIHtcbiAgICAgIGlmIChjb24pIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigndnMtZGlhbG9nLWRhcmsnKSAhPSAtMSAmJiB0aGlzLnR5cGUgPT0gJ2FsZXJ0Jykge1xuICAgICAgICAgIHRoaXMuZmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTphY3RpdmUnLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCd2cy1kaWFsb2ctZGFyaycpICE9IC0xKSB7XG4gICAgICAgICAgdGhpcy5yZWJvdW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChldmVudCA/IGV2ZW50LnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigndnMtZGlhbG9nLWNhbmNlbCcpICE9IC0xIDogZXZlbnQgPyBldmVudC50YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ3ZzLWRpYWxvZy1jYW5jZWwtLWljb24nKSAhPSAtMSA6IGZhbHNlKSB7XG4gICAgICAgICAgdGhpcy5mQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOmFjdGl2ZScsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLiRlbWl0KCdjbG9zZScpO1xuICAgIH0sXG4gICAgY2FuY2VsQ2xvc2U6IGZ1bmN0aW9uIGNhbmNlbENsb3NlKCkge1xuICAgICAgdGhpcy5mQWN0aXZlID0gZmFsc2U7XG4gICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6YWN0aXZlJywgZmFsc2UpO1xuICAgICAgdGhpcy4kZW1pdCgnY2FuY2VsJyk7IC8vIHRoaXMuJGVtaXQoJ2NhbmNlbCcpXG5cbiAgICAgIHRoaXMuY2FuY2VsID8gdGhpcy5jYW5jZWwodGhpcy5wYXJhbWV0ZXJzKSA6IG51bGw7XG4gICAgfSxcbiAgICBpbnNlcnRCb2R5OiBmdW5jdGlvbiBpbnNlcnRCb2R5KCkge1xuICAgICAgdmFyIGVseCA9IHRoaXMuJHJlZnMuY29uO1xuICAgICAgdmFyIHBhcmVudHggPSB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50IDogZG9jdW1lbnQuYm9keTtcbiAgICAgIHBhcmVudHguaW5zZXJ0QmVmb3JlKGVseCwgcGFyZW50eC5maXJzdENoaWxkKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3ZzRGlhbG9nL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBmdW5jdGlvbnNfdnNEaWFsb2d2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNEaWFsb2d2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3ZzRGlhbG9nL2luZGV4LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzRGlhbG9nX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgZnVuY3Rpb25zX3ZzRGlhbG9ndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0RpYWxvZ3Z1ZV90eXBlX3RlbXBsYXRlX2lkX2Q3MWRhNmZhX2xhbmdfaHRtbF9yZW5kZXIsXG4gIHZzRGlhbG9ndnVlX3R5cGVfdGVtcGxhdGVfaWRfZDcxZGE2ZmFfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0RpYWxvZyA9ICh2c0RpYWxvZ19jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzUHJvbXB0L2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1Byb21wdCA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNEaWFsb2cubmFtZSwgdnNEaWFsb2cpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0RpdmlkZXIvdnNEaXZpZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNzJhOGVlMiZsYW5nPWh0bWwmXG52YXIgdnNEaXZpZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMzcyYThlZTJfbGFuZ19odG1sX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtY29tcG9uZW50IHZzLWRpdmlkZXJcIn0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1kaXZpZGVyLWJvcmRlciBhZnRlclwiLGNsYXNzOl92bS5ib3JkZXJDbGFzcyxzdHlsZTooX3ZtLmFmdGVyU3R5bGUpfSksKCBfdm0uaWNvbiB8fCBfdm0uJHNsb3RzLmRlZmF1bHQpP19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1kaXZpZGVyLS10ZXh0XCIsY2xhc3M6X3ZtLnRleHRBbmRCYWNrZ3JvdW5kQ2xhc3Msc3R5bGU6KHtcbiAgICAgICdjb2xvcic6IF92bS50ZXh0Q29sb3IsXG4gICAgICAnYmFja2dyb3VuZCc6IF92bS5iYWNrZ3JvdW5kQ29sb3JcbiAgICB9KX0sWyghX3ZtLmljb24pP1tfdm0uX3QoXCJkZWZhdWx0XCIpXTpfYygndnMtaWNvbicse3N0YXRpY0NsYXNzOlwiaWNvbi1kaXZpZGVyIG5vdHJhbnNsYXRlIHZzLWRpdmlkZXItLWljb25cIixhdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLmljb259fSldLDIpOl92bS5fZSgpLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1kaXZpZGVyLWJvcmRlciBiZWZvcmVcIixjbGFzczpfdm0uYm9yZGVyQ2xhc3Msc3R5bGU6KF92bS5iZWZvcmVTdHlsZSl9KV0pfVxudmFyIHZzRGl2aWRlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM3MmE4ZWUyX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNEaXZpZGVyL3ZzRGl2aWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzcyYThlZTImbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0RpdmlkZXIvdnNEaXZpZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0RpdmlkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiBcIlZzRGl2aWRlclwiLFxuICBwcm9wczoge1xuICAgIGNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAncmdiYSgwLCAwLCAwLC4xKSdcbiAgICB9LFxuICAgIGJhY2tncm91bmQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd0cmFuc3BhcmVudCdcbiAgICB9LFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGJvcmRlclN0eWxlOiB7XG4gICAgICBkZWZhdWx0OiAnc29saWQnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBib3JkZXJIZWlnaHQ6IHtcbiAgICAgIGRlZmF1bHQ6ICcxcHgnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBwb3NpdGlvbjoge1xuICAgICAgZGVmYXVsdDogJ2NlbnRlcicsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGdldFdpZHRoQWZ0ZXI6IGZ1bmN0aW9uIGdldFdpZHRoQWZ0ZXIoKSB7XG4gICAgICB2YXIgd2lkdGh4ID0gJzEwMCUnO1xuXG4gICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcbiAgICAgICAgd2lkdGh4ID0gJzAlJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbiA9PSAnbGVmdC1jZW50ZXInKSB7XG4gICAgICAgIHdpZHRoeCA9ICcyNSUnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBvc2l0aW9uID09ICdyaWdodC1jZW50ZXInKSB7XG4gICAgICAgIHdpZHRoeCA9ICc3NSUnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBvc2l0aW9uID09ICdyaWdodCcpIHtcbiAgICAgICAgd2lkdGh4ID0gJzEwMCUnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gd2lkdGh4O1xuICAgIH0sXG4gICAgZ2V0V2lkdGhCZWZvcmU6IGZ1bmN0aW9uIGdldFdpZHRoQmVmb3JlKCkge1xuICAgICAgdmFyIHdpZHRoeCA9ICcxMDAlJztcblxuICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT0gJ2xlZnQnKSB7XG4gICAgICAgIHdpZHRoeCA9ICcxMDAlJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbiA9PSAnbGVmdC1jZW50ZXInKSB7XG4gICAgICAgIHdpZHRoeCA9ICc3NSUnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBvc2l0aW9uID09ICdyaWdodC1jZW50ZXInKSB7XG4gICAgICAgIHdpZHRoeCA9ICcyNSUnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBvc2l0aW9uID09ICdyaWdodCcpIHtcbiAgICAgICAgd2lkdGh4ID0gJzAlJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHdpZHRoeDtcbiAgICB9LFxuICAgIGJvcmRlckNvbG9yOiBmdW5jdGlvbiBib3JkZXJDb2xvcigpIHtcbiAgICAgIGlmICghdXRpbHNfY29sb3IuaXNDb2xvcih0aGlzLmNvbG9yKSkge1xuICAgICAgICByZXR1cm4gdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvcik7XG4gICAgICB9XG4gICAgfSxcbiAgICBhZnRlclN0eWxlOiBmdW5jdGlvbiBhZnRlclN0eWxlKCkge1xuICAgICAgdmFyIGNsYXNzZXMgPSB7XG4gICAgICAgIHdpZHRoOiB0aGlzLmdldFdpZHRoQWZ0ZXIsXG4gICAgICAgICdib3JkZXItdG9wLXdpZHRoJzogdGhpcy5ib3JkZXJIZWlnaHQsXG4gICAgICAgICdib3JkZXItdG9wLXN0eWxlJzogdGhpcy5ib3JkZXJTdHlsZVxuICAgICAgfTtcblxuICAgICAgaWYgKCF1dGlsc19jb2xvci5pc0NvbG9yKHRoaXMuY29sb3IpKSB7XG4gICAgICAgIGNsYXNzZXNbJ2JvcmRlci10b3AtY29sb3InXSA9IHRoaXMuYm9yZGVyQ29sb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbGFzc2VzO1xuICAgIH0sXG4gICAgYmVmb3JlU3R5bGU6IGZ1bmN0aW9uIGJlZm9yZVN0eWxlKCkge1xuICAgICAgdmFyIGNsYXNzZXMgPSB7XG4gICAgICAgIHdpZHRoOiB0aGlzLmdldFdpZHRoQmVmb3JlLFxuICAgICAgICAnYm9yZGVyLXRvcC13aWR0aCc6IHRoaXMuYm9yZGVySGVpZ2h0LFxuICAgICAgICAnYm9yZGVyLXRvcC1zdHlsZSc6IHRoaXMuYm9yZGVyU3R5bGVcbiAgICAgIH07XG5cbiAgICAgIGlmICghdXRpbHNfY29sb3IuaXNDb2xvcih0aGlzLmNvbG9yKSkge1xuICAgICAgICBjbGFzc2VzWydib3JkZXItdG9wLWNvbG9yJ10gPSB0aGlzLmJvcmRlckNvbG9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9LFxuICAgIGJvcmRlckNsYXNzOiBmdW5jdGlvbiBib3JkZXJDbGFzcygpIHtcbiAgICAgIHZhciBjbGFzc2VzID0ge307XG4gICAgICB2YXIgYm9yZGVyQ29sb3IgPSB1dGlsc19jb2xvci5pc0NvbG9yKHRoaXMuY29sb3IpID8gdGhpcy5jb2xvciA6IFwiZGVmYXVsdFwiO1xuICAgICAgY2xhc3Nlc1tcInZzLWRpdmlkZXItYm9yZGVyLVwiLmNvbmNhdChib3JkZXJDb2xvcildID0gdHJ1ZTtcbiAgICAgIHJldHVybiBjbGFzc2VzO1xuICAgIH0sXG4gICAgdGV4dENvbG9yOiBmdW5jdGlvbiB0ZXh0Q29sb3IoKSB7XG4gICAgICBpZiAoIXV0aWxzX2NvbG9yLmlzQ29sb3IodGhpcy5jb2xvcikpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IgIT09ICdyZ2JhKDAsIDAsIDAsLjEpJyA/IHRoaXMuY29sb3IgOiBudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhY2tncm91bmRDb2xvcjogZnVuY3Rpb24gYmFja2dyb3VuZENvbG9yKCkge1xuICAgICAgaWYgKCF1dGlsc19jb2xvci5pc0NvbG9yKHRoaXMuYmFja2dyb3VuZCkpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuYmFja2dyb3VuZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0ZXh0QW5kQmFja2dyb3VuZENsYXNzOiBmdW5jdGlvbiB0ZXh0QW5kQmFja2dyb3VuZENsYXNzKCkge1xuICAgICAgdmFyIGNsYXNzZXMgPSB7fTtcbiAgICAgIHZhciB0ZXh0Q29sb3IgPSB1dGlsc19jb2xvci5pc0NvbG9yKHRoaXMuY29sb3IpID8gdGhpcy5jb2xvciA6IFwiZGVmYXVsdFwiO1xuICAgICAgY2xhc3Nlc1tcInZzLWRpdmlkZXItdGV4dC1cIi5jb25jYXQodGV4dENvbG9yKV0gPSB0cnVlO1xuICAgICAgdmFyIGJhY2tncm91bmRDb2xvciA9IHV0aWxzX2NvbG9yLmlzQ29sb3IodGhpcy5iYWNrZ3JvdW5kKSA/IHRoaXMuYmFja2dyb3VuZCA6IFwiZGVmYXVsdFwiO1xuICAgICAgY2xhc3Nlc1tcInZzLWRpdmlkZXItYmFja2dyb3VuZC1cIi5jb25jYXQoYmFja2dyb3VuZENvbG9yKV0gPSB0cnVlO1xuICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNEaXZpZGVyL3ZzRGl2aWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNEaXZpZGVyX3ZzRGl2aWRlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0RpdmlkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0RpdmlkZXIvdnNEaXZpZGVyLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzRGl2aWRlcl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzRGl2aWRlcl92c0RpdmlkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzRGl2aWRlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM3MmE4ZWUyX2xhbmdfaHRtbF9yZW5kZXIsXG4gIHZzRGl2aWRlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM3MmE4ZWUyX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNEaXZpZGVyID0gKHZzRGl2aWRlcl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzRGl2aWRlci9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c0RpdmlkZXIgPSAoZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHZzRGl2aWRlci5uYW1lLCB2c0RpdmlkZXIpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1NwYWNlci92c1NwYWNlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjEwODIwM2EmXG52YXIgdnNTcGFjZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF82MTA4MjAzYV9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLXNwYWNlclwifSl9XG52YXIgdnNTcGFjZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF82MTA4MjAzYV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNTcGFjZXIvdnNTcGFjZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYxMDgyMDNhJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1NwYWNlci92c1NwYWNlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1NwYWNlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc1NwYWNlcidcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NwYWNlci92c1NwYWNlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTcGFjZXJfdnNTcGFjZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNTcGFjZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NwYWNlci92c1NwYWNlci52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1NwYWNlcl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzU3BhY2VyX3ZzU3BhY2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1NwYWNlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYxMDgyMDNhX3JlbmRlcixcbiAgdnNTcGFjZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF82MTA4MjAzYV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTcGFjZXIgPSAodnNTcGFjZXJfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NwYWNlci9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c1NwYWNlciA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNTcGFjZXIubmFtZSwgdnNTcGFjZXIpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzSWNvbi9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c0ljb24gPSAoZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHZzSWNvbi5uYW1lLCB2c0ljb24pO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c05hdmJhci92c05hdmJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2I5MTI0MjAmbGFuZz1odG1sJlxudmFyIHZzTmF2YmFydnVlX3R5cGVfdGVtcGxhdGVfaWRfM2I5MTI0MjBfbGFuZ19odG1sX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2hlYWRlcicse3N0YXRpY0NsYXNzOlwidnMtbmF2YmFyXCIsY2xhc3M6WyhcInZzLW5hdmJhci1cIiArIF92bS50eXBlKSwgKFwidnMtbmF2YmFyLWNvbG9yLVwiICsgX3ZtLmNvbG9yKSwgeydjb2xsYXBzZSc6X3ZtLmNvbGxhcHNlfV0sc3R5bGU6KFtfdm0uc3R5bGVOYXZiYXJdKX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLW5hdmJhci0taGVhZGVyXCJ9LFtfYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJ2cy1uYXZiYXItLWJ0bi1yZXNwb25zaXZlXCIsY2xhc3M6eydhY3RpdmUtbWVudScgOiBfdm0uYWN0aXZlTWVudVJlc3BvbnNpdmV9LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0uYWN0aXZlTWVudVJlc3BvbnNpdmUgPSAhX3ZtLmFjdGl2ZU1lbnVSZXNwb25zaXZlfX19LFtfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwiYnRuLXJlc3BvbnNpdmUtbGluZSBsaW5lLS0xXCJ9KSxfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwiYnRuLXJlc3BvbnNpdmUtbGluZSBsaW5lLS0yXCJ9KSxfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwiYnRuLXJlc3BvbnNpdmUtbGluZSBsaW5lLS0zXCJ9KV0pLF92bS5fdChcInRpdGxlXCIpXSwyKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1jb24taXRlbXNcIixjbGFzczp7J2FjdGl2ZU1lbnVSZXNwb25zaXZlJyA6IF92bS5hY3RpdmVNZW51UmVzcG9uc2l2ZX19LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKV0pfVxudmFyIHZzTmF2YmFydnVlX3R5cGVfdGVtcGxhdGVfaWRfM2I5MTI0MjBfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c05hdmJhci92c05hdmJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2I5MTI0MjAmbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c05hdmJhci92c05hdmJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzTmF2YmFydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzTmF2YmFyJyxcbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge30sXG4gICAgdHlwZToge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgY29sbGFwc2U6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgY29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd0cmFuc3BhcmVudCdcbiAgICB9LFxuICAgIGFjdGl2ZVRleHRDb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3ByaW1hcnknXG4gICAgfSxcbiAgICB0ZXh0Q29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdyZ2IoNDAsNDAsNDApJ1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlTWVudVJlc3BvbnNpdmU6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZU5hdmJhcjogZnVuY3Rpb24gc3R5bGVOYXZiYXIoKSB7XG4gICAgICBpZiAodXRpbHNfY29sb3IuaXNDb2xvcih0aGlzLmNvbG9yKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGJhY2tncm91bmQ6IFwicmdiKFwiLmNvbmNhdCh1dGlsc19jb2xvci5jaGFuZ2VDb2xvcih0aGlzLmNvbG9yKSwgXCIpXCIpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IpXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGNoYW5nZUluZGV4OiBmdW5jdGlvbiBjaGFuZ2VJbmRleChpbmRleCkge1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBpbmRleCk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZiYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzTmF2YmFyX3ZzTmF2YmFydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzTmF2YmFydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZiYXIudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNOYXZiYXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c05hdmJhcl92c05hdmJhcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNOYXZiYXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zYjkxMjQyMF9sYW5nX2h0bWxfcmVuZGVyLFxuICB2c05hdmJhcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzNiOTEyNDIwX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNOYXZiYXIgPSAodnNOYXZiYXJfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NzlkMDBiYiZcbnZhciB2c05hdkl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF83NzlkMDBiYl9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdsaScse3N0YXRpY0NsYXNzOlwidnMtbmF2YmFyLS1pdGVtXCIsY2xhc3M6W3snaXMtYWN0aXZlLWl0ZW0nOiBfdm0uaXNBY3RpdmVJdGVtfSwgKFwidnMtbmF2YmFyLWl0ZW0tXCIgKyBfdm0uZ2V0QWN0aXZlVGV4dENvbG9yKV0sc3R5bGU6KFtfdm0uc3R5bGVIb3Zlcl0pLG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLmNsaWNrSXRlbSgpfSxcIm1vdXNlb3V0XCI6X3ZtLm1vdXNlb3V0LFwibW91c2VvdmVyXCI6X3ZtLm1vdXNlb3Zlcn19LFtfdm0uX3QoXCJkZWZhdWx0XCIpLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ2cy1uYXZiYXItYWZ0ZXJcIixzdHlsZTooW192bS5zdHlsZUFmdGVyXSl9KV0sMil9XG52YXIgdnNOYXZJdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfNzc5ZDAwYmJfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2SXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Nzc5ZDAwYmImXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2SXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzTmF2SXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc05hdmJhckl0ZW0nLFxuICBwcm9wczoge1xuICAgIGluZGV4OiB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaG92ZXI6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBnZXRBY3RpdmVUZXh0Q29sb3I6IGZ1bmN0aW9uIGdldEFjdGl2ZVRleHRDb2xvcigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQuJHByb3BzLmFjdGl2ZVRleHRDb2xvcjtcbiAgICB9LFxuICAgIGlzQWN0aXZlSXRlbTogZnVuY3Rpb24gaXNBY3RpdmVJdGVtKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC52YWx1ZSA9PSB0aGlzLmluZGV4O1xuICAgIH0sXG4gICAgc3R5bGVBZnRlcjogZnVuY3Rpb24gc3R5bGVBZnRlcigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuZ2V0QWN0aXZlVGV4dENvbG9yKVxuICAgICAgfTtcbiAgICB9LFxuICAgIHN0eWxlSG92ZXI6IGZ1bmN0aW9uIHN0eWxlSG92ZXIoKSB7XG4gICAgICBpZiAodGhpcy5pc0FjdGl2ZUl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xvcjogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5nZXRBY3RpdmVUZXh0Q29sb3IpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbG9yOiB0aGlzLmhvdmVyID8gdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5nZXRBY3RpdmVUZXh0Q29sb3IpIDogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy4kcGFyZW50LiRwcm9wcy50ZXh0Q29sb3IpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY2xpY2tJdGVtOiBmdW5jdGlvbiBjbGlja0l0ZW0oKSB7XG4gICAgICB0aGlzLiRwYXJlbnQuY2hhbmdlSW5kZXgodGhpcy5pbmRleCk7XG4gICAgfSxcbiAgICBtb3VzZW91dDogZnVuY3Rpb24gbW91c2VvdXQoKSB7XG4gICAgICB0aGlzLmhvdmVyID0gZmFsc2U7XG4gICAgfSxcbiAgICBtb3VzZW92ZXI6IGZ1bmN0aW9uIG1vdXNlb3ZlcigpIHtcbiAgICAgIHRoaXMuaG92ZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2SXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNOYXZiYXJfdnNOYXZJdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzTmF2SXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2SXRlbS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c05hdkl0ZW1fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c05hdmJhcl92c05hdkl0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzTmF2SXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzc3OWQwMGJiX3JlbmRlcixcbiAgdnNOYXZJdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfNzc5ZDAwYmJfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzTmF2SXRlbSA9ICh2c05hdkl0ZW1fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZHcm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmE1OTViYjImXG52YXIgdnNOYXZHcm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJhNTk1YmIyX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2xpJyx7c3RhdGljQ2xhc3M6XCJ2cy1uYXYtaXRlbVwifSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtbmF2LWl0ZW0tc2xvdFwifSxbX3ZtLl90KFwiZGVmYXVsdFwiKV0sMiksX2MoJ3VsJyx7c3RhdGljQ2xhc3M6XCJ2cy1uYXYtc3VibWVudVwifSxbX3ZtLl90KFwic3VibWVudVwiKV0sMildKX1cbnZhciB2c05hdkdyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfMmE1OTViYjJfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2R3JvdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJhNTk1YmIyJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c05hdmJhci92c05hdkdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c05hdkdyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzTmF2YmFyR3JvdXAnXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZHcm91cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNOYXZiYXJfdnNOYXZHcm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c05hdkdyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZHcm91cC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c05hdkdyb3VwX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNOYXZiYXJfdnNOYXZHcm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNOYXZHcm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJhNTk1YmIyX3JlbmRlcixcbiAgdnNOYXZHcm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJhNTk1YmIyX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c05hdkdyb3VwID0gKHZzTmF2R3JvdXBfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZiYXJUaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjE2YzliM2YmXG52YXIgdnNOYXZiYXJUaXRsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzIxNmM5YjNmX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2gzJyx7c3RhdGljQ2xhc3M6XCJ2cy1uYXZiYXItLXRpdGxlXCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKX1cbnZhciB2c05hdmJhclRpdGxldnVlX3R5cGVfdGVtcGxhdGVfaWRfMjE2YzliM2Zfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2YmFyVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIxNmM5YjNmJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c05hdmJhci92c05hdmJhclRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNOYXZiYXJUaXRsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc05hdmJhclRpdGxlJ1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2YmFyVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzTmF2YmFyX3ZzTmF2YmFyVGl0bGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNOYXZiYXJUaXRsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2YmFyVGl0bGUudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNOYXZiYXJUaXRsZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzTmF2YmFyX3ZzTmF2YmFyVGl0bGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzTmF2YmFyVGl0bGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yMTZjOWIzZl9yZW5kZXIsXG4gIHZzTmF2YmFyVGl0bGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yMTZjOWIzZl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNOYXZiYXJUaXRsZSA9ICh2c05hdmJhclRpdGxlX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2YmFySXRlbXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxNDhiYmI2JlxudmFyIHZzTmF2YmFySXRlbXN2dWVfdHlwZV90ZW1wbGF0ZV9pZF84MTQ4YmJiNl9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLW5hdmJhci0taXRlbXNcIn0sW192bS5fdChcImRlZmF1bHRcIildLDIpfVxudmFyIHZzTmF2YmFySXRlbXN2dWVfdHlwZV90ZW1wbGF0ZV9pZF84MTQ4YmJiNl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZiYXJJdGVtcy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODE0OGJiYjYmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzTmF2YmFyL3ZzTmF2YmFySXRlbXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c05hdmJhckl0ZW1zdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzTmF2YmFySXRlbXMnXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZiYXJJdGVtcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNOYXZiYXJfdnNOYXZiYXJJdGVtc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c05hdmJhckl0ZW1zdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNOYXZiYXIvdnNOYXZiYXJJdGVtcy52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c05hdmJhckl0ZW1zX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNOYXZiYXJfdnNOYXZiYXJJdGVtc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNOYXZiYXJJdGVtc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzgxNDhiYmI2X3JlbmRlcixcbiAgdnNOYXZiYXJJdGVtc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzgxNDhiYmI2X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c05hdmJhckl0ZW1zID0gKHZzTmF2YmFySXRlbXNfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c05hdmJhci9pbmRleC5qc1xuXG5cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzTmF2YmFyID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c05hdmJhci5uYW1lLCB2c05hdmJhcik7XG4gIFZ1ZS5jb21wb25lbnQodnNOYXZJdGVtLm5hbWUsIHZzTmF2SXRlbSk7XG4gIFZ1ZS5jb21wb25lbnQodnNOYXZHcm91cC5uYW1lLCB2c05hdkdyb3VwKTtcbiAgVnVlLmNvbXBvbmVudCh2c05hdmJhclRpdGxlLm5hbWUsIHZzTmF2YmFyVGl0bGUpO1xuICBWdWUuY29tcG9uZW50KHZzTmF2YmFySXRlbXMubmFtZSwgdnNOYXZiYXJJdGVtcyk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzU2lkZUJhci92c1NpZGViYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZhYjc2ZmYwJlxudmFyIHZzU2lkZWJhcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzZhYjc2ZmYwX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ3RyYW5zaXRpb24nLHthdHRyczp7XCJuYW1lXCI6XCJ2cy1zaWRlYmFyLWFuaW1hdGVcIn19LFtfYygnZGl2Jyx7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOihfdm0uc3RhdGljUG9zaXRpb24gfHwgX3ZtLnZhbHVlKSxleHByZXNzaW9uOlwic3RhdGljUG9zaXRpb24gfHwgdmFsdWVcIn1dLHJlZjpcInNpZGViYXJiYWNrZ3JvdW5kXCIsc3RhdGljQ2xhc3M6XCJ2cy1jb250ZW50LXNpZGViYXJcIn0sWyghX3ZtLmhpZGRlbkJhY2tncm91bmQpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLXNpZGViYXItLWJhY2tncm91bmRcIn0pOl92bS5fZSgpLF9jKCdkaXYnLHtyZWY6XCJzaWRlYmFyQ29udGFpbmVyXCIsc3RhdGljQ2xhc3M6XCJ2cy1zaWRlYmFyXCIsY2xhc3M6W1xuICAgICAgICAoXCJ2cy1zaWRlYmFyLVwiICsgX3ZtLmNvbG9yKSxcbiAgICAgICAge1xuICAgICAgICAgICd2cy1zaWRlYmFyLXBhcmVudCc6IF92bS5wYXJlbnQgIT0gJ2JvZHknLFxuICAgICAgICAgICd2cy1zaWRlYmFyLXN0YXRpY1Bvc2l0aW9uJzogX3ZtLnN0YXRpY1Bvc2l0aW9uLFxuICAgICAgICAgICd2cy1zaWRlYmFyLXBvc2l0aW9uLXJpZ2h0JzogX3ZtLnBvc2l0aW9uUmlnaHQsXG4gICAgICAgICAgJ3ZzLXNpZGViYXItcmVkdWNlJzogX3ZtLnJlZHVjZSxcbiAgICAgICAgICAndnMtc2lkZWJhci1yZWR1Y2VOb3RSZWJvdW5kJzogX3ZtLnJlZHVjZU5vdFJlYm91bmQsXG4gICAgICAgICAgJ3ZzLXNpZGViYXItcmVkdWNlTm90SG92ZXJFeHBhbmQnOiBfdm0ucmVkdWNlTm90SG92ZXJFeHBhbmRcbiAgICAgICAgfVxuICAgICAgXX0sWyhfdm0uJHNsb3RzLmhlYWRlcik/X2MoJ2hlYWRlcicse3N0YXRpY0NsYXNzOlwidnMtc2lkZWJhci0taGVhZGVyXCJ9LFtfdm0uX3QoXCJoZWFkZXJcIildLDIpOl92bS5fZSgpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLXNpZGViYXItLWl0ZW1zXCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKSwoX3ZtLnNwYWNlcik/X2MoJ3ZzLXNwYWNlcicpOl92bS5fZSgpLChfdm0uJHNsb3RzLmZvb3Rlcik/X2MoJ2Zvb3Rlcicse3N0YXRpY0NsYXNzOlwidnMtc2lkZWJhci0tZm9vdGVyXCJ9LFtfdm0uX3QoXCJmb290ZXJcIildLDIpOl92bS5fZSgpXSwxKV0pXSl9XG52YXIgdnNTaWRlYmFydnVlX3R5cGVfdGVtcGxhdGVfaWRfNmFiNzZmZjBfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2lkZUJhci92c1NpZGViYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZhYjc2ZmYwJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1NpZGVCYXIvdnNTaWRlYmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTaWRlYmFydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzU2lkZWJhcicsXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBkZWZhdWx0SW5kZXg6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgZGVmYXVsdDogJ3ByaW1hcnknLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBwYXJlbnQ6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdXG4gICAgfSxcbiAgICBzcGFjZXI6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgc3RhdGljUG9zaXRpb246IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgcG9zaXRpb25SaWdodDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBjbGlja05vdENsb3NlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHJlZHVjZToge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICByZWR1Y2VOb3RSZWJvdW5kOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHJlZHVjZU5vdEhvdmVyRXhwYW5kOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIGhpZGRlbkJhY2tncm91bmQ6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudEluZGV4OiAwXG4gICAgfTtcbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHRoaXMuZGVmYXVsdEluZGV4O1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHRoaXMuaW5zZXJ0Qm9keSgpO1xuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSgpIHtcbiAgICAgIGlmICghdGhpcy5jbGlja05vdENsb3NlKSB0aGlzLmFkZEV2ZW50Q2xpY2soKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRBY3RpdmU6IGZ1bmN0aW9uIGdldEFjdGl2ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmRleDtcbiAgICB9LFxuICAgIHNldEluZGV4QWN0aXZlOiBmdW5jdGlvbiBzZXRJbmRleEFjdGl2ZShpbmRleCkge1xuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBpbmRleDtcbiAgICB9LFxuICAgIGFkZEV2ZW50Q2xpY2s6IGZ1bmN0aW9uIGFkZEV2ZW50Q2xpY2soKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXJlbnR4ID0gdHlwZW9mIF90aGlzLnBhcmVudCA9PSAnc3RyaW5nJyA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoX3RoaXMucGFyZW50KSA6IF90aGlzLnBhcmVudDtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBwYXJlbnR4IHx8IHdpbmRvdztcblxuICAgICAgICBpZiAoX3RoaXMudmFsdWUpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBfdGhpcy5jbG9zZVNpZGViYXIpO1xuICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2xvc2VTaWRlYmFyOiBmdW5jdGlvbiBjbG9zZVNpZGViYXIoZXZ0KSB7XG4gICAgICB2YXIgcGFyZW50ID0gZXZ0LnRhcmdldC5jbG9zZXN0KCcudnMtc2lkZWJhcicpO1xuXG4gICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIGZhbHNlKTtcbiAgICAgICAgdmFyIHBhcmVudHggPSB0eXBlb2YgdGhpcy5wYXJlbnQgPT0gJ3N0cmluZycgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMucGFyZW50KSA6IHRoaXMucGFyZW50O1xuICAgICAgICB2YXIgZWxlbWVudCA9IHBhcmVudHggfHwgd2luZG93O1xuICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZVNpZGViYXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaW5zZXJ0Qm9keTogZnVuY3Rpb24gaW5zZXJ0Qm9keSgpIHtcbiAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICB2YXIgZWx4ID0gdGhpcy4kcmVmcy5zaWRlYmFyYmFja2dyb3VuZDtcbiAgICAgICAgdmFyIHBhcmVudHggPSB0eXBlb2YgdGhpcy5wYXJlbnQgPT0gJ3N0cmluZycgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMucGFyZW50KSA6IHRoaXMucGFyZW50O1xuICAgICAgICBwYXJlbnR4Lmluc2VydEJlZm9yZShlbHgsIHBhcmVudHguZmlyc3RDaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNTaWRlQmFyL3ZzU2lkZWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTaWRlQmFyX3ZzU2lkZWJhcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c1NpZGViYXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NpZGVCYXIvdnNTaWRlYmFyLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzU2lkZWJhcl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzU2lkZUJhcl92c1NpZGViYXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzU2lkZWJhcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzZhYjc2ZmYwX3JlbmRlcixcbiAgdnNTaWRlYmFydnVlX3R5cGVfdGVtcGxhdGVfaWRfNmFiNzZmZjBfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzU2lkZWJhciA9ICh2c1NpZGViYXJfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNTaWRlQmFyL3ZzU2lkZWJhckl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc0YWQ4ZmY5JlxudmFyIHZzU2lkZWJhckl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF83NGFkOGZmOV9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLXNpZGViYXItLWl0ZW1cIixjbGFzczp7J3ZzLXNpZGViYXItaXRlbS1hY3RpdmUnOl92bS5nZXRBY3RpdmV9LG9uOntcImNsaWNrXCI6X3ZtLnNldEluZGV4QWN0aXZlfX0sWyhfdm0udG8pP19jKCdyb3V0ZXItbGluaycse2F0dHJzOntcInRvXCI6X3ZtLnRvfX0sW19jKCd2cy1pY29uJyx7YXR0cnM6e1wiaWNvbi1wYWNrXCI6X3ZtLmljb25QYWNrLFwiaWNvblwiOl92bS5pY29ufX0pLF92bS5fdChcImRlZmF1bHRcIildLDIpOl9jKCdhJyx7YXR0cnM6e1wiaHJlZlwiOl92bS5ocmVmfX0sW19jKCd2cy1pY29uJyx7YXR0cnM6e1wiaWNvbi1wYWNrXCI6X3ZtLmljb25QYWNrLFwiaWNvblwiOl92bS5pY29ufX0pLF92bS5fdChcImRlZmF1bHRcIildLDIpXSwxKX1cbnZhciB2c1NpZGViYXJJdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfNzRhZDhmZjlfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2lkZUJhci92c1NpZGViYXJJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NGFkOGZmOSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNTaWRlQmFyL3ZzU2lkZWJhckl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1NpZGViYXJJdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzU2lkZWJhckl0ZW0nLFxuICBwcm9wczoge1xuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBocmVmOiB7XG4gICAgICBkZWZhdWx0OiAnIycsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHRvOiB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XVxuICAgIH0sXG4gICAgaW5kZXg6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGdldEFjdGl2ZTogZnVuY3Rpb24gZ2V0QWN0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC5nZXRBY3RpdmUoKSA9PSB0aGlzLmluZGV4O1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHNldEluZGV4QWN0aXZlOiBmdW5jdGlvbiBzZXRJbmRleEFjdGl2ZSgpIHtcbiAgICAgIHRoaXMuJHBhcmVudC5zZXRJbmRleEFjdGl2ZSh0aGlzLmluZGV4KTtcbiAgICAgIHRoaXMuJGVtaXQoJ2NsaWNrJyk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNTaWRlQmFyL3ZzU2lkZWJhckl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzU2lkZUJhcl92c1NpZGViYXJJdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzU2lkZWJhckl0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NpZGVCYXIvdnNTaWRlYmFySXRlbS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1NpZGViYXJJdGVtX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNTaWRlQmFyX3ZzU2lkZWJhckl0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzU2lkZWJhckl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF83NGFkOGZmOV9yZW5kZXIsXG4gIHZzU2lkZWJhckl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF83NGFkOGZmOV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTaWRlYmFySXRlbSA9ICh2c1NpZGViYXJJdGVtX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzU2lkZUJhci92c1NpZGViYXJHcm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGE4M2NjZDEmXG52YXIgdnNTaWRlYmFyR3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wYTgzY2NkMV9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLXNpZGViYXItZ3JvdXBcIixjbGFzczp7J3ZzLXNpZGViYXItZ3JvdXAtb3BlbicgOiBfdm0ub3Blbkl0ZW1zfSxvbjp7XCJtb3VzZW92ZXJcIjpfdm0ubW91c2VvdmVyLFwibW91c2VvdXRcIjpfdm0ubW91c2VvdXR9fSxbX2MoJ2g0Jyx7b246e1wiY2xpY2tcIjpfdm0uY2xpY2tHcm91cH19LFtfdm0uX3YoX3ZtLl9zKF92bS50aXRsZSkrXCIgXCIpLF9jKCd2cy1pY29uJyxbX3ZtLl92KFwia2V5Ym9hcmRfYXJyb3dfZG93blwiKV0pXSwxKSxfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwidnMtc2lkZWJhci0tdG9vbHRpcFwifSxbX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKV0pLF9jKCd1bCcse3JlZjpcIml0ZW1zXCIsc3RhdGljQ2xhc3M6XCJ2cy1zaWRlYmFyLS1ncm91cC1pdGVtc1wiLHN0eWxlOihfdm0uc3R5bGVJdGVtcyl9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKV0pfVxudmFyIHZzU2lkZWJhckdyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfMGE4M2NjZDFfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2lkZUJhci92c1NpZGViYXJHcm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGE4M2NjZDEmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzU2lkZUJhci92c1NpZGViYXJHcm91cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNTaWRlYmFyR3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNTaWRlYmFyR3JvdXAnLFxuICBwcm9wczoge1xuICAgIGNvbGxhcHNlZDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICB0aXRsZToge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgb3BlbkhvdmVyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIG9wZW46IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF4SGVpZ2h0OiAnMHB4JyxcbiAgICAgIG9wZW5JdGVtczogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHN0eWxlSXRlbXM6IGZ1bmN0aW9uIHN0eWxlSXRlbXMoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXhIZWlnaHQ6IHRoaXMubWF4SGVpZ2h0XG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBtYXhIZWlnaHQ6IGZ1bmN0aW9uIG1heEhlaWdodCgpIHtcbiAgICAgIHRoaXMub3Blbkl0ZW1zID0gdGhpcy5tYXhIZWlnaHQgIT0gJzBweCc7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHRoaXMub3Blbkl0ZW1zID0gdGhpcy5vcGVuO1xuXG4gICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSAnbm9uZSc7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0QWN0aXZlOiBmdW5jdGlvbiBnZXRBY3RpdmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcGFyZW50LmdldEFjdGl2ZSgpO1xuICAgIH0sXG4gICAgc2V0SW5kZXhBY3RpdmU6IGZ1bmN0aW9uIHNldEluZGV4QWN0aXZlKGluZGV4KSB7XG4gICAgICB0aGlzLiRwYXJlbnQuc2V0SW5kZXhBY3RpdmUoaW5kZXgpO1xuICAgIH0sXG4gICAgY2xpY2tHcm91cDogZnVuY3Rpb24gY2xpY2tHcm91cCgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5vcGVuSG92ZXIpIHtcbiAgICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IHRoaXMuJHJlZnMuaXRlbXMuc2Nyb2xsSGVpZ2h0O1xuXG4gICAgICAgIGlmICh0aGlzLm1heEhlaWdodCA9PSAnMHB4Jykge1xuICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gXCJcIi5jb25jYXQoc2Nyb2xsSGVpZ2h0LCBcInB4XCIpO1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMubWF4SGVpZ2h0ID0gJ25vbmUnO1xuICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBcIlwiLmNvbmNhdChzY3JvbGxIZWlnaHQsIFwicHhcIik7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5tYXhIZWlnaHQgPSBcIlwiLmNvbmNhdCgwLCBcInB4XCIpO1xuICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbW91c2VvdmVyOiBmdW5jdGlvbiBtb3VzZW92ZXIoKSB7XG4gICAgICBpZiAodGhpcy5vcGVuSG92ZXIpIHtcbiAgICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IHRoaXMuJHJlZnMuaXRlbXMuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IFwiXCIuY29uY2F0KHNjcm9sbEhlaWdodCwgXCJweFwiKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1vdXNlb3V0OiBmdW5jdGlvbiBtb3VzZW91dCgpIHtcbiAgICAgIGlmICh0aGlzLm9wZW5Ib3Zlcikge1xuICAgICAgICB2YXIgc2Nyb2xsSGVpZ2h0ID0gMDtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBcIlwiLmNvbmNhdChzY3JvbGxIZWlnaHQsIFwicHhcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNTaWRlQmFyL3ZzU2lkZWJhckdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1NpZGVCYXJfdnNTaWRlYmFyR3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNTaWRlYmFyR3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1NpZGVCYXIvdnNTaWRlYmFyR3JvdXAudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNTaWRlYmFyR3JvdXBfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c1NpZGVCYXJfdnNTaWRlYmFyR3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzU2lkZWJhckdyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfMGE4M2NjZDFfcmVuZGVyLFxuICB2c1NpZGViYXJHcm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzBhODNjY2QxX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1NpZGViYXJHcm91cCA9ICh2c1NpZGViYXJHcm91cF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzU2lkZUJhci9pbmRleC5qc1xuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzU2lkZUJhciA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNTaWRlYmFyLm5hbWUsIHZzU2lkZWJhcik7XG4gIFZ1ZS5jb21wb25lbnQodnNTaWRlYmFySXRlbS5uYW1lLCB2c1NpZGViYXJJdGVtKTtcbiAgVnVlLmNvbXBvbmVudCh2c1NpZGViYXJHcm91cC5uYW1lLCB2c1NpZGViYXJHcm91cCk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWViMDljNWImbGFuZz1odG1sJlxudmFyIHZzRHJvcERvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF81ZWIwOWM1Yl9sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnYnV0dG9uJyxfdm0uX2coX3ZtLl9iKHtyZWY6XCJkcm9wZG93blwiLHN0YXRpY0NsYXNzOlwidnMtY29uLWRyb3Bkb3duIHBhcmVudC1kcm9wZG93blwiLGF0dHJzOntcInR5cGVcIjpcImJ1dHRvblwifX0sJ2J1dHRvbicsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLmxpc3RlbmVycyksW192bS5fdChcImRlZmF1bHRcIildLDIpfVxudmFyIHZzRHJvcERvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF81ZWIwOWM1Yl9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWViMDljNWImbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0Ryb3BEb3duL3ZzRHJvcERvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmZ1bmN0aW9uIHZzRHJvcERvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiB2c0Ryb3BEb3dudnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IHZzRHJvcERvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IHZzRHJvcERvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0Ryb3BEb3dudnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogXCJWc0Ryb3Bkb3duXCIsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgdnNUcmlnZ2VyQ2xpY2s6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgdnNUcmlnZ2VyQ29udGV4dG1lbnU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgY29sb3I6IHtcbiAgICAgIGRlZmF1bHQ6ICdwcmltYXJ5JyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdnNDdXN0b21Db250ZW50OiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHZzRHJvcFJpZ2h0OiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZzRHJvcGRvd25WaXNpYmxlOiBmYWxzZSxcbiAgICAgIHJpZ2h0eDogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGxpc3RlbmVyczogZnVuY3Rpb24gbGlzdGVuZXJzKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgcmV0dXJuIHZzRHJvcERvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vYmplY3RTcHJlYWQoe30sIHRoaXMuJGxpc3RlbmVycywge1xuICAgICAgICBjb250ZXh0bWVudTogZnVuY3Rpb24gY29udGV4dG1lbnUoZXZ0KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnZzVHJpZ2dlckNvbnRleHRtZW51ID8gX3RoaXMuY2xpY2tUb29nbGVNZW51KGV2dCwgdHJ1ZSkgOiB7fTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xpY2s6IGZ1bmN0aW9uIGNsaWNrKGV2dCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy52c1RyaWdnZXJDb250ZXh0bWVudSA/IHt9IDogX3RoaXMuY2xpY2tUb29nbGVNZW51KGV2dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1vdXNlb3V0OiBmdW5jdGlvbiBtb3VzZW91dChldnQpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMudG9nZ2xlTWVudSgnb3V0JywgZXZ0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbW91c2VvdmVyOiBmdW5jdGlvbiBtb3VzZW92ZXIoZXZ0KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnRvZ2dsZU1lbnUoJ292ZXInLCBldnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdnNEcm9wZG93blZpc2libGU6IGZ1bmN0aW9uIHZzRHJvcGRvd25WaXNpYmxlKCkge1xuICAgICAgdGhpcy5jaGFuZ2VQb3NpdGlvbk1lbnUoKTtcblxuICAgICAgaWYgKHRoaXMudnNEcm9wZG93blZpc2libGUpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnZm9jdXMnKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsaWNreCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRlbWl0KCdibHVyJyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHRoaXMuY2hhbmdlQ29sb3IoKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xpY2t4KTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xpY2t4KTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGNsaWNreDogZnVuY3Rpb24gY2xpY2t4KGV2dCkge1xuICAgICAgdmFyIF90aGlzJCRjaGlsZHJlbiRmaWx0ZSA9IHRoaXMuJGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS5oYXNPd25Qcm9wZXJ0eSgnZHJvcGRvd25WaXNpYmxlJyk7XG4gICAgICB9KSxcbiAgICAgICAgICBfdGhpcyQkY2hpbGRyZW4kZmlsdGUyID0gX3NsaWNlZFRvQXJyYXkoX3RoaXMkJGNoaWxkcmVuJGZpbHRlLCAxKSxcbiAgICAgICAgICBkcm9wZG93bk1lbnUgPSBfdGhpcyQkY2hpbGRyZW4kZmlsdGUyWzBdO1xuXG4gICAgICBkcm9wZG93bk1lbnUudnNDdXN0b21Db250ZW50ID0gdGhpcy52c0N1c3RvbUNvbnRlbnQ7XG4gICAgICBkcm9wZG93bk1lbnUudnNUcmlnZ2VyQ2xpY2sgPSB0aGlzLnZzVHJpZ2dlckNsaWNrO1xuICAgICAgZHJvcGRvd25NZW51LnZzRHJvcFJpZ2h0ID0gdGhpcy52c0Ryb3BSaWdodDtcblxuICAgICAgaWYgKCh0aGlzLnZzVHJpZ2dlckNsaWNrIHx8IHRoaXMudnNDdXN0b21Db250ZW50KSAmJiB0aGlzLnZzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICAgIGlmIChldnQudGFyZ2V0ICE9PSB0aGlzLiRyZWZzLmRyb3Bkb3duICYmIGV2dC50YXJnZXQucGFyZW50Tm9kZSAhPT0gdGhpcy4kcmVmcy5kcm9wZG93biAmJiBldnQudGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZSAhPT0gdGhpcy4kcmVmcy5kcm9wZG93bikge1xuICAgICAgICAgIGlmICghZXZ0LnRhcmdldC5jbG9zZXN0KCcudnMtZHJvcGRvd24tLW1lbnUnKSkge1xuICAgICAgICAgICAgZHJvcGRvd25NZW51LmRyb3Bkb3duVmlzaWJsZSA9IHRoaXMudnNEcm9wZG93blZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbGlja3gpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2hhbmdlQ29sb3I6IGZ1bmN0aW9uIGNoYW5nZUNvbG9yKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjaGlsZCA9IHRoaXMuJGNoaWxkcmVuO1xuICAgICAgY2hpbGQuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICBpZiAoaXRlbS4kdm5vZGUudGFnLmluZGV4T2YoJ2Ryb3Bkb3duJykgIT0gLTEpIHtcbiAgICAgICAgICBpdGVtLmNvbG9yID0gX3RoaXMyLmNvbG9yO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGNoYW5nZVBvc2l0aW9uTWVudTogZnVuY3Rpb24gY2hhbmdlUG9zaXRpb25NZW51KCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyQkY2hpbGRyZW4kZmlsdGUzID0gdGhpcy4kY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmhhc093blByb3BlcnR5KCdkcm9wZG93blZpc2libGUnKTtcbiAgICAgIH0pLFxuICAgICAgICAgIF90aGlzJCRjaGlsZHJlbiRmaWx0ZTQgPSBfc2xpY2VkVG9BcnJheShfdGhpcyQkY2hpbGRyZW4kZmlsdGUzLCAxKSxcbiAgICAgICAgICBkcm9wZG93bk1lbnUgPSBfdGhpcyQkY2hpbGRyZW4kZmlsdGU0WzBdO1xuXG4gICAgICB2YXIgc2Nyb2xsVG9weCA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuXG4gICAgICBpZiAodGhpcy4kcmVmcy5kcm9wZG93bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyAzMDAgPj0gd2luZG93LmlubmVySGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkcm9wZG93bk1lbnUudG9weCA9IF90aGlzMy4kcmVmcy5kcm9wZG93bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgLSBkcm9wZG93bk1lbnUuJGVsLmNsaWVudEhlaWdodCAtIDcgKyBzY3JvbGxUb3B4O1xuICAgICAgICAgIGRyb3Bkb3duTWVudS5ub3RIZWlnaHQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyb3Bkb3duTWVudS5ub3RIZWlnaHQgPSBmYWxzZTtcbiAgICAgICAgZHJvcGRvd25NZW51LnRvcHggPSB0aGlzLiRyZWZzLmRyb3Bkb3duLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHRoaXMuJHJlZnMuZHJvcGRvd24uY2xpZW50SGVpZ2h0ICsgc2Nyb2xsVG9weCAtIDU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHcgPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDtcblxuICAgICAgICBpZiAoX3RoaXMzLiRyZWZzLmRyb3Bkb3duLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgKyBkcm9wZG93bk1lbnUuJGVsLm9mZnNldFdpZHRoID49IHcgLSAyNSkgey8vIHRoaXMucmlnaHR4ID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF90aGlzMy4kcmVmcy5kcm9wZG93bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCA8IGRyb3Bkb3duTWVudS4kZWwuY2xpZW50V2lkdGggKyAyNSkge1xuICAgICAgICAgIGRyb3Bkb3duTWVudS5sZWZ0eCA9IGRyb3Bkb3duTWVudS4kZWwuY2xpZW50V2lkdGggKyBfdGhpczMuJHJlZnMuZHJvcGRvd24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICBfdGhpczMucmlnaHR4ID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkcm9wZG93bk1lbnUubGVmdHggPSBfdGhpczMuJHJlZnMuZHJvcGRvd24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCArIChfdGhpczMudnNEcm9wUmlnaHQgPyBkcm9wZG93bk1lbnUuJGVsLmNsaWVudFdpZHRoIDogX3RoaXMzLiRyZWZzLmRyb3Bkb3duLmNsaWVudFdpZHRoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2xpY2tUb29nbGVNZW51OiBmdW5jdGlvbiBjbGlja1Rvb2dsZU1lbnUoZXZ0KSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgaWYgKGV2dC50eXBlID09ICdjb250ZXh0bWVudScpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBfdGhpcyQkY2hpbGRyZW4kZmlsdGU1ID0gdGhpcy4kY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmhhc093blByb3BlcnR5KCdkcm9wZG93blZpc2libGUnKTtcbiAgICAgIH0pLFxuICAgICAgICAgIF90aGlzJCRjaGlsZHJlbiRmaWx0ZTYgPSBfc2xpY2VkVG9BcnJheShfdGhpcyQkY2hpbGRyZW4kZmlsdGU1LCAxKSxcbiAgICAgICAgICBkcm9wZG93bk1lbnUgPSBfdGhpcyQkY2hpbGRyZW4kZmlsdGU2WzBdO1xuXG4gICAgICBpZiAodGhpcy52c1RyaWdnZXJDbGljayB8fCB0aGlzLnZzVHJpZ2dlckNvbnRleHRtZW51KSB7XG4gICAgICAgIGlmICh0aGlzLnZzRHJvcGRvd25WaXNpYmxlICYmICFldnQudGFyZ2V0LmNsb3Nlc3QoJy52cy1kcm9wZG93bi0tbWVudScpKSB7XG4gICAgICAgICAgZHJvcGRvd25NZW51LmRyb3Bkb3duVmlzaWJsZSA9IHRoaXMudnNEcm9wZG93blZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkcm9wZG93bk1lbnUuZHJvcGRvd25WaXNpYmxlID0gdGhpcy52c0Ryb3Bkb3duVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFldnQudGFyZ2V0LmNsb3Nlc3QoJy52cy1jb24tZHJvcGRvd24nKSAmJiAhZXZ0LnRhcmdldC5jbG9zZXN0KCcudnMtZHJvcGRvd24tLW1lbnUnKSkge1xuICAgICAgICAgICAgICBkcm9wZG93bk1lbnUuZHJvcGRvd25WaXNpYmxlID0gX3RoaXM0LnZzRHJvcGRvd25WaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHRvZ2dsZU1lbnU6IGZ1bmN0aW9uIHRvZ2dsZU1lbnUodHlwZXgsIGV2dCkge1xuICAgICAgdmFyIF90aGlzJCRjaGlsZHJlbiRmaWx0ZTcgPSB0aGlzLiRjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaGFzT3duUHJvcGVydHkoJ2Ryb3Bkb3duVmlzaWJsZScpO1xuICAgICAgfSksXG4gICAgICAgICAgX3RoaXMkJGNoaWxkcmVuJGZpbHRlOCA9IF9zbGljZWRUb0FycmF5KF90aGlzJCRjaGlsZHJlbiRmaWx0ZTcsIDEpLFxuICAgICAgICAgIGRyb3Bkb3duTWVudSA9IF90aGlzJCRjaGlsZHJlbiRmaWx0ZThbMF07XG5cbiAgICAgIGlmICghdGhpcy52c1RyaWdnZXJDbGljayAmJiAhdGhpcy52c1RyaWdnZXJDb250ZXh0bWVudSkge1xuICAgICAgICBpZiAodHlwZXggPT0gJ292ZXInKSB7XG4gICAgICAgICAgZHJvcGRvd25NZW51LmRyb3Bkb3duVmlzaWJsZSA9IHRoaXMudnNEcm9wZG93blZpc2libGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghZXZ0LnJlbGF0ZWRUYXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCd2cy1kcm9wZG93bi1tZW51JykpIHtcbiAgICAgICAgICAgIGRyb3Bkb3duTWVudS5kcm9wZG93blZpc2libGUgPSB0aGlzLnZzRHJvcGRvd25WaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNEcm9wRG93bi92c0Ryb3BEb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0Ryb3BEb3duX3ZzRHJvcERvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNEcm9wRG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0Ryb3BEb3duX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNEcm9wRG93bl92c0Ryb3BEb3dudnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0Ryb3BEb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfNWViMDljNWJfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNEcm9wRG93bnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVlYjA5YzViX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNEcm9wRG93biA9ICh2c0Ryb3BEb3duX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bk1lbnUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlOWJlNDAyJmxhbmc9aHRtbCZcbnZhciB2c0Ryb3BEb3duTWVudXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzFlOWJlNDAyX2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCd0cmFuc2l0aW9uJyx7YXR0cnM6e1wibmFtZVwiOlwiZHJvcGRvd254XCJ9fSxbKF92bS5kcm9wZG93blZpc2libGUpP19jKCdkaXYnLHtyZWY6XCJvcHRpb25zXCIsc3RhdGljQ2xhc3M6XCJjb24tdnMtZHJvcGRvd24tLW1lbnUgdnMtZHJvcGRvd24tbWVudVwiLGNsYXNzOnsncmlnaHR4Jzpfdm0udnNEcm9wUmlnaHQgfHwgX3ZtLiRwYXJlbnQucmlnaHR4LCdub3RIZWlnaHQnOl92bS5ub3RIZWlnaHR9LHN0eWxlOih7XG4gICAgICAnbGVmdCc6X3ZtLmxlZnR4KydweCcsXG4gICAgICAndG9wJzpfdm0udG9weCsncHgnXG4gICAgfSksb246e1wibW91c2VsZWF2ZVwiOl92bS5tb3VzZWxlYXZleCxcIm1vdXNlZW50ZXJcIjpfdm0ubW91c2VlbnRlcnh9fSxbKCFfdm0udnNDdXN0b21Db250ZW50KT9fYygndWwnLHtzdGF0aWNDbGFzczpcInZzLWNvbXBvbmVudCB2cy1kcm9wZG93bi0tbWVudVwifSxbX3ZtLl90KFwiZGVmYXVsdFwiKV0sMik6X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtZHJvcGRvd24tLWN1c3RvbSB2cy1kcm9wZG93bi0tbWVudVwifSxbX3ZtLl90KFwiZGVmYXVsdFwiKV0sMiksX2MoJ2Rpdicse3JlZjpcIm1lbnVBZnRlclwiLGNsYXNzOlsgX3ZtLnZzRHJvcFJpZ2h0ID8gJ3ZzLWRyb3Bkb3duLXJpZ2h0LS1tZW51LS1hZnRlcicgOiAndnMtZHJvcGRvd24tLW1lbnUtLWFmdGVyJ119KV0pOl92bS5fZSgpXSl9XG52YXIgdnNEcm9wRG93bk1lbnV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xZTliZTQwMl9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bk1lbnUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlOWJlNDAyJmxhbmc9aHRtbCZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qc1xudmFyIGVzX2FycmF5X2ZpbmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTQyOVwiKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNEcm9wRG93bi92c0Ryb3BEb3duTWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNEcm9wRG93bk1lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiBcIlZzRHJvcGRvd25NZW51XCIsXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRyb3Bkb3duVmlzaWJsZTogZmFsc2UsXG4gICAgICBsZWZ0QWZ0ZXI6IDIwLFxuICAgICAgbGVmdHg6IDAsXG4gICAgICB0b3B4OiAwLFxuICAgICAgcmlnaHR4OiB0cnVlLFxuICAgICAgdnNUcmlnZ2VyQ2xpY2s6IGZhbHNlLFxuICAgICAgdnNEcm9wUmlnaHQ6IGZhbHNlLFxuICAgICAgd2lkdGh4OiAwLFxuICAgICAgbm90SGVpZ2h0OiBmYWxzZSxcbiAgICAgIHZzQ3VzdG9tQ29udGVudDogZmFsc2UsXG4gICAgICBwYXJlbnROb2RlOiBudWxsXG4gICAgfTtcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBkcm9wZG93blZpc2libGU6IGZ1bmN0aW9uIGRyb3Bkb3duVmlzaWJsZSh2YWwpIHtcbiAgICAgIHZhciBkcm9wZG93bkdyb3VwID0gdGhpcy4kY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmhhc093blByb3BlcnR5KCdhY3RpdmVHcm91cCcpO1xuICAgICAgfSk7XG4gICAgICBkcm9wZG93bkdyb3VwLmZvckVhY2goZnVuY3Rpb24gKGl0ZW1fZ3JvdXApIHtcbiAgICAgICAgaXRlbV9ncm91cC5hY3RpdmVHcm91cCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNldERpcmVjdGlvbigpO1xuICAgICAgIXZhbCA/IHRoaXMuJHBhcmVudC5yaWdodHggPSBmYWxzZSA6IG51bGw7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHRoaXMuaW5zZXJ0Qm9keSgpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMuJGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy4kZWwpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgbW91c2VlbnRlcng6IGZ1bmN0aW9uIG1vdXNlZW50ZXJ4KCkge1xuICAgICAgaWYgKCF0aGlzLnZzVHJpZ2dlckNsaWNrKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25WaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy53aWR0aHggPSB0aGlzLiRlbC5jbGllbnRXaWR0aDtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1vdXNlbGVhdmV4OiBmdW5jdGlvbiBtb3VzZWxlYXZleCgpIHtcbiAgICAgIGlmICghdGhpcy52c1RyaWdnZXJDbGljaykge1xuICAgICAgICB0aGlzLmRyb3Bkb3duVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLndpZHRoeCA9IHRoaXMuJGVsLmNsaWVudFdpZHRoO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0RGlyZWN0aW9uOiBmdW5jdGlvbiBzZXREaXJlY3Rpb24oKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRyb3Bkb3duID0gX3RoaXMucGFyZW50Tm9kZTtcbiAgICAgICAgdmFyIG1lbnVBZnRlciA9IF90aGlzLiRyZWZzLm1lbnVBZnRlcjtcbiAgICAgICAgaWYgKCFtZW51QWZ0ZXIpIHJldHVybjtcblxuICAgICAgICBpZiAoZHJvcGRvd24gJiYgbWVudUFmdGVyICYmIGRyb3Bkb3duLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIDMwMCA+PSB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICAgICAgICB2YXIgaGFzR3JvdXAgPSBfdGhpcy4kY2hpbGRyZW4uZmluZChmdW5jdGlvbiAoaXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlR3JvdXAnKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1lbnVBZnRlci5zdHlsZS5ib3R0b20gPSAnLTVweCc7XG4gICAgICAgICAgbWVudUFmdGVyLnN0eWxlLnRyYW5zZm9ybSA9ICdyb3RhdGUoMjI1ZGVnKSc7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbWVudUFmdGVyLnN0eWxlLnRvcCA9ICcxMHB4JztcbiAgICAgIH0sIDEwMCk7XG4gICAgfSxcbiAgICB0b2dnbGVNZW51OiBmdW5jdGlvbiB0b2dnbGVNZW51KGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PSAnbW91c2VvdmVyJyAmJiAhdGhpcy52c1RyaWdnZXJDbGljaykge1xuICAgICAgICB0aGlzLmRyb3Bkb3duVmlzaWJsZSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnZzVHJpZ2dlckNsaWNrKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25WaXNpYmxlID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2lkdGh4ID0gdGhpcy4kZWwuY2xpZW50V2lkdGg7XG4gICAgfSxcbiAgICBpbnNlcnRCb2R5OiBmdW5jdGlvbiBpbnNlcnRCb2R5KCkge1xuICAgICAgdmFyIGVscCA9IHRoaXMuJGVsO1xuICAgICAgdGhpcy5wYXJlbnROb2RlID0gdGhpcy4kZWwucGFyZW50Tm9kZTtcbiAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGVscCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0Ryb3BEb3duL3ZzRHJvcERvd25NZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0Ryb3BEb3duX3ZzRHJvcERvd25NZW51dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzRHJvcERvd25NZW51dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNEcm9wRG93bi92c0Ryb3BEb3duTWVudS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0Ryb3BEb3duTWVudV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzRHJvcERvd25fdnNEcm9wRG93bk1lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzRHJvcERvd25NZW51dnVlX3R5cGVfdGVtcGxhdGVfaWRfMWU5YmU0MDJfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNEcm9wRG93bk1lbnV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xZTliZTQwMl9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzRHJvcERvd25NZW51ID0gKHZzRHJvcERvd25NZW51X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bkl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM5ZDA1NmMwJmxhbmc9aHRtbCZcbnZhciB2c0Ryb3BEb3duSXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM5ZDA1NmMwX2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdsaScse3N0YXRpY0NsYXNzOlwidnMtY29tcG9uZW50IHZzLWRyb3Bkb3duLS1pdGVtXCIsY2xhc3M6eydkaXZpZGVyJzpfdm0uZGl2aWRlcn0sc3R5bGU6KHtcbiAgICAnY29sb3InOl92bS5ob3Zlcng/X3ZtLmdpdmVDb2xvcigpKycgIWltcG9ydGFudCc6bnVsbCxcbiAgICAnYmFja2dyb3VuZCc6X3ZtLmhvdmVyeD9fdm0uZ2l2ZUNvbG9yKC4wMSkrJyAhaW1wb3J0YW50JzpudWxsXG4gIH0pLG9uOntcImNsaWNrXCI6X3ZtLmNsb3NlUGFyZW50LFwibW91c2VvdmVyXCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0uaG92ZXJ4PXRydWV9LFwibW91c2VvdXRcIjpmdW5jdGlvbigkZXZlbnQpe192bS5ob3Zlcng9ZmFsc2V9fX0sWyhfdm0udG8pP19jKCdyb3V0ZXItbGluaycsX3ZtLl9nKF92bS5fYih7c3RhdGljQ2xhc3M6XCJ2cy1kcm9wZG93bi0taXRlbS1saW5rXCIsY2xhc3M6eydkaXNhYmxlZCc6X3ZtLmRpc2FibGVkfSxhdHRyczp7XCJ0b1wiOl92bS50b319LCdyb3V0ZXItbGluaycsX3ZtLiRhdHRycyxmYWxzZSksX3ZtLiRsaXN0ZW5lcnMpLFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS4kYXR0cnMuZGlzYWJsZWQpK1wiIFwiKSxfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKTpfYygnYScsX3ZtLl9nKF92bS5fYih7c3RhdGljQ2xhc3M6XCJ2cy1kcm9wZG93bi0taXRlbS1saW5rXCIsY2xhc3M6eydkaXNhYmxlZCc6X3ZtLmRpc2FibGVkfX0sJ2EnLF92bS4kYXR0cnMsZmFsc2UpLF92bS4kbGlzdGVuZXJzKSxbX3ZtLl90KFwiZGVmYXVsdFwiKV0sMildLDEpfVxudmFyIHZzRHJvcERvd25JdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfMzlkMDU2YzBfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0Ryb3BEb3duL3ZzRHJvcERvd25JdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zOWQwNTZjMCZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bkl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0Ryb3BEb3duSXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6IFwiVnNEcm9wZG93bkl0ZW1cIixcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICB0bzoge30sXG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgZGl2aWRlcjoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBob3Zlcng6IGZhbHNlLFxuICAgICAgdnNEcm9wRG93bkl0ZW06IHRydWUsXG4gICAgICBjb2xvcjogbnVsbFxuICAgIH07XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5jaGFuZ2VDb2xvcigpO1xuICB9LFxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIHRoaXMuY2hhbmdlQ29sb3IoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGNsb3NlUGFyZW50OiBmdW5jdGlvbiBjbG9zZVBhcmVudCgpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VhcmNoUGFyZW50KHRoaXMpO1xuXG4gICAgICBmdW5jdGlvbiBzZWFyY2hQYXJlbnQoX3RoaXMpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IF90aGlzLiRwYXJlbnQ7XG5cbiAgICAgICAgaWYgKCFwYXJlbnQuJGVsLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnQuJGVsLmNsYXNzTmFtZS5pbmRleE9mKCdwYXJlbnQtZHJvcGRvd24nKSA9PSAtMSkge1xuICAgICAgICAgIHNlYXJjaFBhcmVudChwYXJlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBfcGFyZW50JCRjaGlsZHJlbiRmaWwgPSBwYXJlbnQuJGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaGFzT3duUHJvcGVydHkoJ2Ryb3Bkb3duVmlzaWJsZScpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfcGFyZW50JCRjaGlsZHJlbiRmaWwyID0gX3NsaWNlZFRvQXJyYXkoX3BhcmVudCQkY2hpbGRyZW4kZmlsLCAxKSxcbiAgICAgICAgICAgICAgZHJvcGRvd25NZW51ID0gX3BhcmVudCQkY2hpbGRyZW4kZmlsMlswXTtcblxuICAgICAgICAgIGRyb3Bkb3duTWVudS5kcm9wZG93blZpc2libGUgPSBwYXJlbnQudnNEcm9wZG93blZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2hhbmdlQ29sb3I6IGZ1bmN0aW9uIGNoYW5nZUNvbG9yKCkge1xuICAgICAgdmFyIF9zZWxmID0gdGhpcztcblxuICAgICAgc2VhcmNoUGFyZW50KHRoaXMpO1xuXG4gICAgICBmdW5jdGlvbiBzZWFyY2hQYXJlbnQoX3RoaXMpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IF90aGlzLiRwYXJlbnQ7XG5cbiAgICAgICAgaWYgKCFwYXJlbnQuJGVsLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnQuJGVsLmNsYXNzTmFtZS5pbmRleE9mKCdwYXJlbnQtZHJvcGRvd24nKSA9PSAtMSkge1xuICAgICAgICAgIHNlYXJjaFBhcmVudChwYXJlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF9zZWxmLmNvbG9yID0gcGFyZW50LmNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBnaXZlQ29sb3I6IGZ1bmN0aW9uIGdpdmVDb2xvcigpIHtcbiAgICAgIHZhciBvcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAxO1xuICAgICAgcmV0dXJuIHV0aWxzX2NvbG9yLnJDb2xvcih0aGlzLmNvbG9yLCBvcGFjaXR5KTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0Ryb3BEb3duL3ZzRHJvcERvd25JdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0Ryb3BEb3duX3ZzRHJvcERvd25JdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzRHJvcERvd25JdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNEcm9wRG93bi92c0Ryb3BEb3duSXRlbS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0Ryb3BEb3duSXRlbV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzRHJvcERvd25fdnNEcm9wRG93bkl0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzRHJvcERvd25JdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfMzlkMDU2YzBfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNEcm9wRG93bkl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8zOWQwNTZjMF9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzRHJvcERvd25JdGVtID0gKHZzRHJvcERvd25JdGVtX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bkdyb3VwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hMDczZjgwZSZsYW5nPWh0bWwmXG52YXIgdnNEcm9wRG93bkdyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfYTA3M2Y4MGVfbGFuZ19odG1sX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2xpJyx7cmVmOlwiZ3JvdXBcIixzdGF0aWNDbGFzczpcInZzLWNvbXBvbmVudCB2cy1kcm9wZG93bi0tZ3JvdXBcIixjbGFzczp7J21hcmdpbkljb24nOl92bS52c0NvbGxhcHNlLCAnbm8tY2FzY2FkaW5nJzohX3ZtLnZzQ29sbGFwc2UsICdncm91cC1yaWdodHgnOl92bS5yaWdodHh9LG9uOntcImNsaWNrXCI6X3ZtLmNsaWNrR3JvdXB9fSxbKF92bS52c0NvbGxhcHNlKT9fYygnc3Bhbicse3N0YXRpY0NsYXNzOlwic3BhbiB2cy1kcm9wZG93bi0tZ3JvdXAtbGFiZWxcIn0sW192bS5fdihfdm0uX3MoX3ZtLnZzTGFiZWwpKV0pOl9jKCdoMycsW192bS5fdihfdm0uX3MoX3ZtLnZzTGFiZWwpKV0pLChfdm0udnNDb2xsYXBzZSk/X2MoJ3ZzLWljb24nLHtzdGF0aWNDbGFzczpcImljb24tZ3JvdXAgbm90cmFuc2xhdGUgdnMtZHJvcGRvd24tLWdyb3VwLWljb25cIixhdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLnZzSWNvbn19KTpfdm0uX2UoKSxfYygnZGl2Jyx7cmVmOlwidWx4XCIsc3RhdGljQ2xhc3M6XCJjb24tZHJvcGRvd24tLWdyb3VwLWNvbi11bFwiLGNsYXNzOnsnY29uLWRyb3Bkb3duLWdyb3VwLW5vLWNhc2NhZGluZyc6IV92bS52c0NvbGxhcHNlfSxzdHlsZTooX3ZtLnN0eWxlSXRlbXMpfSxbX2MoJ3VsJyx7c3RhdGljQ2xhc3M6XCJjb24tZHJvcGRvd24tLWdyb3VwLXVsXCJ9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKV0pXSwxKX1cbnZhciB2c0Ryb3BEb3duR3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF9hMDczZjgwZV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bkdyb3VwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hMDczZjgwZSZsYW5nPWh0bWwmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bkdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzRHJvcERvd25Hcm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc0Ryb3Bkb3duR3JvdXAnLFxuICBwcm9wczoge1xuICAgIHZzTGFiZWw6IHtcbiAgICAgIGRlZmF1bHQ6ICdPcHRpb25zJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdnNDb2xsYXBzZToge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICB2c0ljb246IHtcbiAgICAgIGRlZmF1bHQ6ICdrZXlib2FyZF9hcnJvd19yaWdodCcsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGljb25QYWNrOiB7XG4gICAgICBkZWZhdWx0OiAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3RpdmVHcm91cDogZmFsc2UsXG4gICAgICByaWdodHg6IGZhbHNlLFxuICAgICAgd2lkdGh4OiAwLFxuICAgICAgbWF4SGVpZ2h0OiAnMHB4J1xuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgc3R5bGVJdGVtczogZnVuY3Rpb24gc3R5bGVJdGVtcygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heEhlaWdodDogdGhpcy52c0NvbGxhcHNlID8gdGhpcy5tYXhIZWlnaHQgOiAnYXV0bydcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY2xpY2tHcm91cDogZnVuY3Rpb24gY2xpY2tHcm91cChldnQpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAoZXZ0LnRhcmdldCAhPSB0aGlzLiRyZWZzLmdyb3VwKSByZXR1cm47XG5cbiAgICAgIGlmICghdGhpcy5vcGVuSG92ZXIpIHtcbiAgICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IHRoaXMuJHJlZnMudWx4LnNjcm9sbEhlaWdodDtcblxuICAgICAgICBpZiAodGhpcy5tYXhIZWlnaHQgPT0gJzBweCcpIHtcbiAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IFwiXCIuY29uY2F0KHNjcm9sbEhlaWdodCwgXCJweFwiKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzMi5tYXhIZWlnaHQgPSAnbm9uZSc7XG4gICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IFwiXCIuY29uY2F0KHNjcm9sbEhlaWdodCwgXCJweFwiKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzMi5tYXhIZWlnaHQgPSBcIlwiLmNvbmNhdCgwLCBcInB4XCIpO1xuICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYmVmb3JlRW50ZXI6IGZ1bmN0aW9uIGJlZm9yZUVudGVyKGVsKSB7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAwO1xuICAgICAgZWwuc3R5bGUub3BhY2l0eSA9IDA7XG4gICAgfSxcbiAgICBlbnRlcjogZnVuY3Rpb24gZW50ZXIoZWwsIGRvbmUpIHtcbiAgICAgIC8vIGxldCBoID0gdGhpcy4kcmVmcy51bHguc2Nyb2xsSGVpZ2h0XG4gICAgICAvLyB0aGlzLiRyZWZzLnVseC5zdHlsZS5oZWlnaHQgPSBoICsgJ3B4J1xuICAgICAgLy8gZWwuc3R5bGUub3BhY2l0eSA9IDFcbiAgICAgIC8vIHBhcmVudHModGhpcylcbiAgICAgIC8vIGZ1bmN0aW9uIHBhcmVudHMoX3RoaXMpe1xuICAgICAgLy8gICBpZihfdGhpcy4kcGFyZW50LiRlbC5jbGFzc05hbWUuc2VhcmNoKCd2cy1kcm9wZG93bi0tZ3JvdXAnKSE9LTEpe1xuICAgICAgLy8gICAgIC8vIHRoaXMuJHBhcmVudC4kZWxcbiAgICAgIC8vICAgICBsZXQgaHAgPSBfdGhpcy4kcGFyZW50LiRyZWZzLnVseC5zY3JvbGxIZWlnaHRcbiAgICAgIC8vICAgICBfdGhpcy4kcGFyZW50LiRyZWZzLnVseC5zdHlsZS5oZWlnaHQgPSBocCArIGggKyAncHgnXG4gICAgICAvLyAgICAgcGFyZW50cyhfdGhpcy4kcGFyZW50KVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG4gICAgICBkb25lKCk7XG4gICAgfSxcbiAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoZWwpIHtcbiAgICAgIHZhciBfX3RoaXMgPSB0aGlzO1xuXG4gICAgICBhZGRQYXJlbnRzKHRoaXMpO1xuXG4gICAgICBmdW5jdGlvbiBhZGRQYXJlbnRzKF90aGlzKSB7XG4gICAgICAgIGlmIChfdGhpcy4kcGFyZW50LiRyZWZzLnVseCkge1xuICAgICAgICAgIHZhciBocCA9IF90aGlzLiRwYXJlbnQuJHJlZnMudWx4LnNjcm9sbEhlaWdodCAtIF9fdGhpcy4kcmVmcy51bHguc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgIF90aGlzLiRwYXJlbnQuJHJlZnMudWx4LnN0eWxlLmhlaWdodCA9IGhwICsgJ3B4JztcbiAgICAgICAgICBhZGRQYXJlbnRzKF90aGlzLiRwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy4kcGFyZW50LiRyZWZzLnVseCkge1xuICAgICAgICB0aGlzLiRyZWZzLnVseC5zdHlsZS5oZWlnaHQgPSAwICsgJ3B4JztcbiAgICAgIH1cblxuICAgICAgdGhpcy4kcmVmcy51bHguc3R5bGUuaGVpZ2h0ID0gMCArICdweCc7XG4gICAgICBlbC5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICB9LFxuICAgIHRvZ2dsZUdyb3VwOiBmdW5jdGlvbiB0b2dnbGVHcm91cChldnQpIHtcbiAgICAgIGlmIChldnQudGFyZ2V0ID09IHRoaXMuJHJlZnMuZ3JvdXApIHtcbiAgICAgICAgdGhpcy5hY3RpdmVHcm91cCA9ICF0aGlzLmFjdGl2ZUdyb3VwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzRHJvcERvd24vdnNEcm9wRG93bkdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0Ryb3BEb3duX3ZzRHJvcERvd25Hcm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0Ryb3BEb3duR3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0Ryb3BEb3duL3ZzRHJvcERvd25Hcm91cC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0Ryb3BEb3duR3JvdXBfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c0Ryb3BEb3duX3ZzRHJvcERvd25Hcm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNEcm9wRG93bkdyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfYTA3M2Y4MGVfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNEcm9wRG93bkdyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfYTA3M2Y4MGVfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0Ryb3BEb3duR3JvdXAgPSAodnNEcm9wRG93bkdyb3VwX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNEcm9wRG93bi9pbmRleC5qc1xuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c0Ryb3BEb3duID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c0Ryb3BEb3duLm5hbWUsIHZzRHJvcERvd24pO1xuICBWdWUuY29tcG9uZW50KHZzRHJvcERvd25NZW51Lm5hbWUsIHZzRHJvcERvd25NZW51KTtcbiAgVnVlLmNvbXBvbmVudCh2c0Ryb3BEb3duSXRlbS5uYW1lLCB2c0Ryb3BEb3duSXRlbSk7XG4gIFZ1ZS5jb21wb25lbnQodnNEcm9wRG93bkdyb3VwLm5hbWUsIHZzRHJvcERvd25Hcm91cCk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvdnNUYWJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDgzYTVmNGEmXG52YXIgdnNUYWJsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2Q4M2E1ZjRhX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtY29tcG9uZW50IHZzLWNvbi10YWJsZVwiLGNsYXNzOlt7J3N0cmlwZSc6IF92bS5zdHJpcGUsICdob3ZlckZsYXQnOiBfdm0uaG92ZXJGbGF0fSwgKFwidnMtdGFibGUtXCIgKyBfdm0uY29sb3IpXX0sW19jKCdoZWFkZXInLHtzdGF0aWNDbGFzczpcImhlYWRlci10YWJsZSB2cy10YWJsZS0taGVhZGVyXCJ9LFtfdm0uX3QoXCJoZWFkZXJcIiksKF92bS5zZWFyY2gpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbi1pbnB1dC1zZWFyY2ggdnMtdGFibGUtLXNlYXJjaFwifSxbX2MoJ2lucHV0Jyx7ZGlyZWN0aXZlczpbe25hbWU6XCJtb2RlbFwiLHJhd05hbWU6XCJ2LW1vZGVsXCIsdmFsdWU6KF92bS5zZWFyY2h4KSxleHByZXNzaW9uOlwic2VhcmNoeFwifV0sc3RhdGljQ2xhc3M6XCJpbnB1dC1zZWFyY2ggdnMtdGFibGUtLXNlYXJjaC1pbnB1dFwiLGF0dHJzOntcInR5cGVcIjpcInRleHRcIn0sZG9tUHJvcHM6e1widmFsdWVcIjooX3ZtLnNlYXJjaHgpfSxvbjp7XCJpbnB1dFwiOmZ1bmN0aW9uKCRldmVudCl7aWYoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpeyByZXR1cm47IH1fdm0uc2VhcmNoeD0kZXZlbnQudGFyZ2V0LnZhbHVlfX19KSxfYygndnMtaWNvbicse2F0dHJzOntcImljb25cIjpcInNlYXJjaFwifX0pXSwxKTpfdm0uX2UoKV0sMiksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29uLXRhYmxleCB2cy10YWJsZS0tY29udGVudFwifSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtY29uLXRib2R5IHZzLXRhYmxlLS10Ym9keSBcIixzdHlsZTooX3ZtLnN0eWxlQ29uVGJvZHkpfSxbX2MoJ3RhYmxlJyx7cmVmOlwidGFibGVcIixzdGF0aWNDbGFzczpcInZzLXRhYmxlIHZzLXRhYmxlLS10Ym9keS10YWJsZVwifSxbX2MoJ3RoZWFkJyx7cmVmOlwidGhlYWRcIixzdGF0aWNDbGFzczpcInZzLXRhYmxlLS10aGVhZFwifSxbX2MoJ3RyJyxbKF92bS5tdWx0aXBsZSB8fCBfdm0uaGFzRXhwYWRhYmxlRGF0YSk/X2MoJ3RoJyx7c3RhdGljQ2xhc3M6XCJ0ZC1jaGVja1wifSxbKF92bS5tdWx0aXBsZSk/X2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcImNvbi10ZC1jaGVja1wifSxbX2MoJ3ZzLWNoZWNrYm94Jyx7a2V5Ol92bS5pc0NoZWNrZWRMaW5lID8gJ3JlbW92ZScgOiAnY2hlY2snLGF0dHJzOntcImljb25cIjpfdm0uaXNDaGVja2VkTGluZSA/ICdyZW1vdmUnIDogJ2NoZWNrJyxcImNoZWNrZWRcIjpfdm0uaXNDaGVja2VkTXVsdGlwbGUsXCJzaXplXCI6XCJzbWFsbFwifSxvbjp7XCJpbnB1dFwiOl92bS5jaGFuZ2VDaGVja2VkTXVsdGlwbGV9fSldLDEpOl92bS5fZSgpXSk6X3ZtLl9lKCksX3ZtLl90KFwidGhlYWRcIildLDIpXSksX3ZtLl90KFwiZGVmYXVsdFwiLG51bGwse1wiZGF0YVwiOl92bS5kYXRheH0pXSwyKV0pLChfdm0uaXNOb0RhdGEpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcIm5vdC1kYXRhLXRhYmxlIHZzLXRhYmxlLS1ub3QtZGF0YVwifSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0ubm9EYXRhVGV4dCkrXCIgXCIpXSk6X3ZtLl9lKCksKF92bS5wYWdpbmF0aW9uKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24tcGFnaW5hdGlvbi10YWJsZSB2cy10YWJsZS0tcGFnaW5hdGlvblwifSxbX2MoJ3ZzLXBhZ2luYXRpb24nLHthdHRyczp7XCJ0b3RhbFwiOl92bS5zZWFyY2h4ICYmICFfdm0uc3N0ID8gX3ZtLmdldFRvdGFsUGFnZXNTZWFyY2ggOiBfdm0uZ2V0VG90YWxQYWdlcyxcInNpemVBcnJheVwiOl92bS5xdWVyaWVkUmVzdWx0cy5sZW5ndGgsXCJtYXhJdGVtc1wiOl92bS5tYXhJdGVtc3gsXCJkZXNjcmlwdGlvblwiOl92bS5kZXNjcmlwdGlvbixcImRlc2NyaXB0aW9uSXRlbXNcIjpfdm0uZGVzY3JpcHRpb25JdGVtc30sb246e1wiY2hhbmdlTWF4SXRlbXNcIjpfdm0uY2hhbmdlTWF4SXRlbXN9LG1vZGVsOnt2YWx1ZTooX3ZtLmN1cnJlbnR4KSxjYWxsYmFjazpmdW5jdGlvbiAoJCR2KSB7X3ZtLmN1cnJlbnR4PSQkdn0sZXhwcmVzc2lvbjpcImN1cnJlbnR4XCJ9fSldLDEpOl92bS5fZSgpXSldKX1cbnZhciB2c1RhYmxldnVlX3R5cGVfdGVtcGxhdGVfaWRfZDgzYTVmNGFfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvdnNUYWJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDgzYTVmNGEmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNvcnQuanNcbnZhciBlc19hcnJheV9zb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjBhNWZcIik7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xuZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7XG4gICAgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iajtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1RhYmxlL3ZzVGFibGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiBcIlZzVGFibGVcIixcbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge30sXG4gICAgY29sb3I6IHtcbiAgICAgIGRlZmF1bHQ6ICdwcmltYXJ5JyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgbm9EYXRhVGV4dDoge1xuICAgICAgZGVmYXVsdDogJ05vIGRhdGEgQXZhaWxhYmxlJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgc3RyaXBlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIGhvdmVyRmxhdDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBtYXhIZWlnaHQ6IHtcbiAgICAgIGRlZmF1bHQ6ICdhdXRvJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgbXVsdGlwbGU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgZGF0YToge1xuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbm90U3BhY2VyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHNlYXJjaDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBtYXhJdGVtczoge1xuICAgICAgZGVmYXVsdDogNSxcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ11cbiAgICB9LFxuICAgIHBhZ2luYXRpb246IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgZGVzY3JpcHRpb25JdGVtczoge1xuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH0sXG4gICAgICB0eXBlOiBBcnJheVxuICAgIH0sXG4gICAgY3VycmVudFBhZ2U6IHtcbiAgICAgIGRlZmF1bHQ6IDEsXG4gICAgICB0eXBlOiBOdW1iZXIgfCBTdHJpbmdcbiAgICB9LFxuICAgIHNzdDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICB0b3RhbDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVhZGVyV2lkdGg6ICcxMDAlJyxcbiAgICAgIHRyczogW10sXG4gICAgICBkYXRheDogW10sXG4gICAgICBzZWFyY2h4OiBudWxsLFxuICAgICAgY3VycmVudHg6IDEsXG4gICAgICBtYXhJdGVtc3g6IDUsXG4gICAgICBoYXNFeHBhZGFibGVEYXRhOiBmYWxzZSxcbiAgICAgIGN1cnJlbnRTb3J0S2V5OiBudWxsLFxuICAgICAgY3VycmVudFNvcnRUeXBlOiBudWxsXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBnZXRUb3RhbFBhZ2VzOiBmdW5jdGlvbiBnZXRUb3RhbFBhZ2VzKCkge1xuICAgICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmRhdGEubGVuZ3RoIC8gdGhpcy5tYXhJdGVtc3gpO1xuICAgIH0sXG4gICAgZ2V0VG90YWxQYWdlc1NlYXJjaDogZnVuY3Rpb24gZ2V0VG90YWxQYWdlc1NlYXJjaCgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBzZWFyY2ggPSB0aGlzLm5vcm1hbGl6ZSh0aGlzLnNlYXJjaHgpO1xuICAgICAgdmFyIGZpbHRlcnggPSB0aGlzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uICh0cikge1xuICAgICAgICByZXR1cm4gX3RoaXMubm9ybWFsaXplKF90aGlzLmdldFZhbHVlcyh0cikudG9TdHJpbmcoKSkuaW5kZXhPZihzZWFyY2gpICE9IC0xO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMucXVlcmllZFJlc3VsdHMubGVuZ3RoIC8gdGhpcy5tYXhJdGVtcyk7XG4gICAgfSxcbiAgICBxdWVyaWVkUmVzdWx0czogZnVuY3Rpb24gcXVlcmllZFJlc3VsdHMoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHF1ZXJpZWRSZXN1bHRzID0gdGhpcy5kYXRhO1xuXG4gICAgICBpZiAodGhpcy5zZWFyY2h4ICYmIHRoaXMuc2VhcmNoKSB7XG4gICAgICAgIHZhciBkYXRhQmFzZSA9IHRoaXMuZGF0YTtcbiAgICAgICAgcXVlcmllZFJlc3VsdHMgPSBkYXRhQmFzZS5maWx0ZXIoZnVuY3Rpb24gKHRyKSB7XG4gICAgICAgICAgdmFyIHZhbHVlcyA9IF90aGlzMi5nZXRWYWx1ZXModHIpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgIHJldHVybiB2YWx1ZXMuaW5kZXhPZihfdGhpczIuc2VhcmNoeC50b0xvd2VyQ2FzZSgpKSAhPSAtMTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBxdWVyaWVkUmVzdWx0cztcbiAgICB9LFxuICAgIGlzTm9EYXRhOiBmdW5jdGlvbiBpc05vRGF0YSgpIHtcbiAgICAgIGlmIChfdHlwZW9mKHRoaXMuZGF0YXgpID09IE9iamVjdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRheCA/IE9iamVjdC5rZXlzKHRoaXMuZGF0YXgpLmxlbmd0aCA9PSAwIDogIGZhbHNlICYmIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXggPyB0aGlzLmRhdGF4Lmxlbmd0aCA9PSAwIDogIGZhbHNlICYmIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNDaGVja2VkTGluZTogZnVuY3Rpb24gaXNDaGVja2VkTGluZSgpIHtcbiAgICAgIHZhciBsZW5ndGh4ID0gdGhpcy5kYXRhLmxlbmd0aDtcbiAgICAgIHZhciBsZW5ndGhTZWxlY3RlZCA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aHggIT09IGxlbmd0aFNlbGVjdGVkO1xuICAgIH0sXG4gICAgaXNDaGVja2VkTXVsdGlwbGU6IGZ1bmN0aW9uIGlzQ2hlY2tlZE11bHRpcGxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoID4gMDtcbiAgICB9LFxuICAgIHN0eWxlQ29uVGJvZHk6IGZ1bmN0aW9uIHN0eWxlQ29uVGJvZHkoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXhIZWlnaHQ6IHRoaXMubWF4SGVpZ2h0LFxuICAgICAgICBvdmVyZmxvdzogdGhpcy5tYXhIZWlnaHQgIT0gJ2F1dG8nID8gJ2F1dG8nIDogbnVsbFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldFRoczogZnVuY3Rpb24gZ2V0VGhzKCkge1xuICAgICAgdmFyIHRocyA9IHRoaXMuJHNsb3RzLnRoZWFkLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS50YWc7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aHMubGVuZ3RoO1xuICAgIH0sXG4gICAgdGFibGVIZWFkZXJTdHlsZTogZnVuY3Rpb24gdGFibGVIZWFkZXJTdHlsZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiB0aGlzLmhlYWRlcldpZHRoXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBjdXJyZW50UGFnZTogZnVuY3Rpb24gY3VycmVudFBhZ2UoKSB7XG4gICAgICB0aGlzLmN1cnJlbnR4ID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICB9LFxuICAgIGN1cnJlbnR4OiBmdW5jdGlvbiBjdXJyZW50eCgpIHtcbiAgICAgIGlmICh0aGlzLnNzdCkge1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UtcGFnZScsIHRoaXMuY3VycmVudHgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbWF4SXRlbXM6IGZ1bmN0aW9uIG1heEl0ZW1zKHZhbCkge1xuICAgICAgdGhpcy5tYXhJdGVtc3ggPSB2YWw7XG4gICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgfSxcbiAgICBtYXhJdGVtc3g6IGZ1bmN0aW9uIG1heEl0ZW1zeCgpIHtcbiAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICB9LFxuICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMzLmRhdGF4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBfdGhpczMuY2hhbmdlVGRzV2lkdGgoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBzZWFyY2h4OiBmdW5jdGlvbiBzZWFyY2h4KCkge1xuICAgICAgaWYgKHRoaXMuc3N0KSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3NlYXJjaCcsIHRoaXMuc2VhcmNoeCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgICAgIHRoaXMuY3VycmVudHggPSAxO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5saXN0ZW5lckNoYW5nZVdpZHRoKTtcbiAgICB0aGlzLm1heEl0ZW1zeCA9IHRoaXMubWF4SXRlbXM7XG4gICAgdGhpcy5sb2FkRGF0YSgpOyAvLyB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgLy8gICBpZih0aGlzLmRhdGF4Lmxlbmd0aCA+IDApIHtcbiAgICAvLyAgICAgdGhpcy5jaGFuZ2VUZHNXaWR0aCgpXG4gICAgLy8gICB9XG4gICAgLy8gfSlcbiAgfSxcbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMubGlzdGVuZXJDaGFuZ2VXaWR0aCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBsb2FkRGF0YTogZnVuY3Rpb24gbG9hZERhdGEoKSB7XG4gICAgICB2YXIgbWF4ID0gTWF0aC5jZWlsKHRoaXMuY3VycmVudHggKiB0aGlzLm1heEl0ZW1zeCk7XG4gICAgICB2YXIgbWluID0gbWF4IC0gdGhpcy5tYXhJdGVtc3g7XG5cbiAgICAgIGlmICghdGhpcy5zZWFyY2h4IHx8IHRoaXMuc3N0KSB7XG4gICAgICAgIHRoaXMuZGF0YXggPSB0aGlzLnBhZ2luYXRpb24gPyB0aGlzLmdldEl0ZW1zKG1pbiwgbWF4KSA6IHRoaXMuc29ydEl0ZW1zKHRoaXMuZGF0YSkgfHwgW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGF4ID0gdGhpcy5wYWdpbmF0aW9uID8gdGhpcy5nZXRJdGVtc1NlYXJjaCh0cnVlLCBtaW4sIG1heCkgOiB0aGlzLmdldEl0ZW1zU2VhcmNoKGZhbHNlLCBtaW4sIG1heCkgfHwgW107XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRJdGVtczogZnVuY3Rpb24gZ2V0SXRlbXMobWluLCBtYXgpIHtcbiAgICAgIHZhciBkYXRhQmFzZSA9IHRoaXMuc29ydEl0ZW1zKHRoaXMuZGF0YSk7XG4gICAgICB2YXIgaXRlbXMgPSBbXTtcbiAgICAgIGRhdGFCYXNlLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgIGlmIChpbmRleCA+PSBtaW4gJiYgaW5kZXggPCBtYXgpIHtcbiAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9LFxuICAgIHNvcnRJdGVtczogZnVuY3Rpb24gc29ydEl0ZW1zKGRhdGEpIHtcbiAgICAgIHZhciBjdXJyZW50U29ydEtleSA9IHRoaXMuY3VycmVudFNvcnRLZXksXG4gICAgICAgICAgY3VycmVudFNvcnRUeXBlID0gdGhpcy5jdXJyZW50U29ydFR5cGU7XG5cbiAgICAgIGZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICAgICAgICBpZiAoYVtjdXJyZW50U29ydEtleV0gPCBiW2N1cnJlbnRTb3J0S2V5XSkgcmV0dXJuIGN1cnJlbnRTb3J0VHlwZSA9PSAnZGVzYycgPyAxIDogLTE7XG4gICAgICAgIGlmIChhW2N1cnJlbnRTb3J0S2V5XSA+IGJbY3VycmVudFNvcnRLZXldKSByZXR1cm4gY3VycmVudFNvcnRUeXBlID09ICdkZXNjJyA/IC0xIDogMTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyZW50U29ydFR5cGUgIT09IG51bGwgPyBfdG9Db25zdW1hYmxlQXJyYXkoZGF0YSkuc29ydChjb21wYXJlKSA6IF90b0NvbnN1bWFibGVBcnJheShkYXRhKTtcbiAgICB9LFxuICAgIGdldEl0ZW1zU2VhcmNoOiBmdW5jdGlvbiBnZXRJdGVtc1NlYXJjaCgpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICB2YXIgcGFnaW5hdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZmFsc2U7XG4gICAgICB2YXIgbWluID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgbWF4ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgc2VhcmNoID0gdGhpcy5ub3JtYWxpemUodGhpcy5zZWFyY2h4KTtcbiAgICAgIHJldHVybiB0aGlzLnNvcnRJdGVtcyh0aGlzLmRhdGEpLmZpbHRlcihmdW5jdGlvbiAodHIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNC5ub3JtYWxpemUoX3RoaXM0LmdldFZhbHVlcyh0cikudG9TdHJpbmcoKSkuaW5kZXhPZihzZWFyY2gpICE9IC0xO1xuICAgICAgfSkuZmlsdGVyKGZ1bmN0aW9uIChfLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gaW5kZXggPj0gbWluICYmIGluZGV4IDwgbWF4O1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBzb3J0OiBmdW5jdGlvbiBzb3J0KGtleSwgc29ydFR5cGUpIHtcbiAgICAgIHRoaXMuY3VycmVudFNvcnRLZXkgPSBrZXk7XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0VHlwZSA9IHNvcnRUeXBlO1xuXG4gICAgICBpZiAodGhpcy5zc3QpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnc29ydCcsIGtleSwgc29ydFR5cGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICB9LFxuICAgIG5vcm1hbGl6ZTogZnVuY3Rpb24gbm9ybWFsaXplKHN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZy5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgfSxcbiAgICBnZXRWYWx1ZXM6IGZ1bmN0aW9uIGdldFZhbHVlcyhvYmopIHtcbiAgICAgIGZ1bmN0aW9uIGZsYXR0ZW5EZWVwKHZhbCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh2YWwgfHwgW10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCB2YWwpIHtcbiAgICAgICAgICByZXR1cm4gX3R5cGVvZih2YWwpID09PSAnb2JqZWN0JyA/IGFjYy5jb25jYXQoZmxhdHRlbkRlZXAodmFsKSkgOiBhY2MuY29uY2F0KHZhbCk7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZsYXR0ZW5EZWVwKG9iaikuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBjaGFuZ2VDaGVja2VkTXVsdGlwbGU6IGZ1bmN0aW9uIGNoYW5nZUNoZWNrZWRNdWx0aXBsZSgpIHtcbiAgICAgIHZhciBsZW5ndGh4ID0gdGhpcy5kYXRhLmxlbmd0aDtcbiAgICAgIHZhciBsZW5ndGhTZWxlY3RlZCA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgdmFyIHNlbGVjdGVkeCA9IGxlbmd0aHggLSBsZW5ndGhTZWxlY3RlZDtcblxuICAgICAgaWYgKHNlbGVjdGVkeCA9PSAwKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgW10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLmRhdGEpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xpY2t0cjogZnVuY3Rpb24gY2xpY2t0cih0ciwgaXNUcikge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgaXNUcikge1xuICAgICAgICB2YXIgdmFsID0gdGhpcy52YWx1ZS5zbGljZSgwKTtcblxuICAgICAgICBpZiAodmFsLmluY2x1ZGVzKHRyKSkge1xuICAgICAgICAgIHZhbC5zcGxpY2UodmFsLmluZGV4T2YodHIpLCAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWwucHVzaCh0cik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbCk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdGVkJywgdHIpO1xuICAgICAgfSBlbHNlIGlmIChpc1RyKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdHIpO1xuICAgICAgICB0aGlzLiRlbWl0KCdzZWxlY3RlZCcsIHRyKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRibGNsaWNrdHI6IGZ1bmN0aW9uIGRibGNsaWNrdHIodHIsIGlzVHIpIHtcbiAgICAgIGlmIChpc1RyKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2RibFNlbGVjdGlvbicsIHRyKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpc3RlbmVyQ2hhbmdlV2lkdGg6IGZ1bmN0aW9uIGxpc3RlbmVyQ2hhbmdlV2lkdGgoKSB7XG4gICAgICB0aGlzLmhlYWRlcldpZHRoID0gXCJcIi5jb25jYXQodGhpcy4kcmVmcy50YWJsZS5vZmZzZXRXaWR0aCwgXCJweFwiKTtcbiAgICAgIHRoaXMuY2hhbmdlVGRzV2lkdGgoKTtcbiAgICB9LFxuICAgIGNoYW5nZVRkc1dpZHRoOiBmdW5jdGlvbiBjaGFuZ2VUZHNXaWR0aCgpIHtcbiAgICAgIGlmICghdGhpcy52YWx1ZSkgcmV0dXJuO1xuICAgICAgdmFyIHRib2R5ID0gdGhpcy4kcmVmcy50YWJsZS5xdWVyeVNlbGVjdG9yKCd0Ym9keScpOyAvLyBBZGRpbmcgY29uZGl0aW9uIHJlbW92ZXMgcXVlcnlTZWxlY3RvciBub25lIGVycm9yIC0gaWYgdGJvZHkgaXNub3QgcHJlc2VudFxuXG4gICAgICBpZiAodGJvZHkpIHtcbiAgICAgICAgdmFyIHRydnMgPSB0Ym9keS5xdWVyeVNlbGVjdG9yKCcudHItdmFsdWVzJyk7XG4gICAgICAgIGlmICh0cnZzID09PSB1bmRlZmluZWQgfHwgdHJ2cyA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICB2YXIgdGRzID0gdHJ2cy5xdWVyeVNlbGVjdG9yQWxsKCcudGQnKTtcbiAgICAgICAgdmFyIHRkc3ggPSBbXTtcbiAgICAgICAgdGRzLmZvckVhY2goZnVuY3Rpb24gKHRkLCBpbmRleCkge1xuICAgICAgICAgIHRkc3gucHVzaCh7XG4gICAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgICB3aWR0aHg6IHRkLm9mZnNldFdpZHRoXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY29sZ3JvdXB0YWJsZSA9IHRoaXMuJHJlZnMuY29sZ3JvdXB0YWJsZTtcblxuICAgICAgICBpZiAoY29sZ3JvdXB0YWJsZSAhPT0gdW5kZWZpbmVkICYmIGNvbGdyb3VwdGFibGUgIT09IG51bGwpIHtcbiAgICAgICAgICB2YXIgY29sc1RhYmxlID0gY29sZ3JvdXB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKCcuY29sJyk7XG4gICAgICAgICAgY29sc1RhYmxlLmZvckVhY2goZnVuY3Rpb24gKGNvbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIGNvbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgdGRzeFtpbmRleF0ud2lkdGh4KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2hhbmdlTWF4SXRlbXM6IGZ1bmN0aW9uIGNoYW5nZU1heEl0ZW1zKGluZGV4KSB7XG4gICAgICB0aGlzLm1heEl0ZW1zeCA9IHRoaXMuZGVzY3JpcHRpb25JdGVtc1tpbmRleF07XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUYWJsZS92c1RhYmxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1RhYmxlX3ZzVGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNUYWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvdnNUYWJsZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1RhYmxlX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNUYWJsZV92c1RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1RhYmxldnVlX3R5cGVfdGVtcGxhdGVfaWRfZDgzYTVmNGFfcmVuZGVyLFxuICB2c1RhYmxldnVlX3R5cGVfdGVtcGxhdGVfaWRfZDgzYTVmNGFfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVGFibGUgPSAodnNUYWJsZV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1RhYmxlL3ZzVGgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYwMDhmZGYwJlxudmFyIHZzVGh2dWVfdHlwZV90ZW1wbGF0ZV9pZF82MDA4ZmRmMF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCd0aCcse2F0dHJzOntcImNvbHNwYW5cIjpcIjFcIixcInJvd3NwYW5cIjpcIjFcIn0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0uc29ydFZhbHVlKCl9fX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLXRhYmxlLXRleHRcIn0sW192bS5fdChcImRlZmF1bHRcIiksKF92bS5pc0NvbHVtblNlbGVjdGVkRm9yU29ydCAmJiBfdm0uY3VycmVudFNvcnQgIT0gMCk/X2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInNvcnQtdGhcIn0sW19jKCd2cy1pY29uJyx7c3RhdGljQ2xhc3M6XCJ0aC1zb3J0LWljb25cIixhdHRyczp7XCJpY29uXCI6X3ZtLmN1cnJlbnRTb3J0ID09IDEgPyAnZXhwYW5kX2xlc3MnIDogJ2V4cGFuZF9tb3JlJ319KV0sMSk6X3ZtLl9lKCldLDIpXSl9XG52YXIgdnNUaHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYwMDhmZGYwX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1RhYmxlL3ZzVGgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYwMDhmZGYwJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1RhYmxlL3ZzVGgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVGh2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNUaCcsXG4gIHByb3BzOiB7XG4gICAgc29ydEtleToge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGhJbmRleDogMCxcbiAgICAgIHRod2lkdGg6ICcxMDAlJyxcbiAgICAgIGN1cnJlbnRTb3J0OiAwLFxuICAgICAgc29ydFN0YXR1c2VzOiBbbnVsbCwgJ2FzYycsICdkZXNjJ11cbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHN0eWxldGg6IGZ1bmN0aW9uIHN0eWxldGgoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogdGhpcy50aHdpZHRoXG4gICAgICB9O1xuICAgIH0sXG4gICAgaXNDb2x1bW5TZWxlY3RlZEZvclNvcnQ6IGZ1bmN0aW9uIGlzQ29sdW1uU2VsZWN0ZWRGb3JTb3J0KCkge1xuICAgICAgaWYgKCF0aGlzLnNvcnRLZXkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy4kcGFyZW50LmN1cnJlbnRTb3J0S2V5ICE9IHRoaXMuc29ydEtleSkge1xuICAgICAgICB0aGlzLnJlc2V0U29ydCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy4kcGFyZW50LmN1cnJlbnRTb3J0S2V5ID09IHRoaXMuc29ydEtleTtcbiAgICB9LFxuICAgIHBhcmVudFNvcnRTdGF0dXM6IGZ1bmN0aW9uIHBhcmVudFNvcnRTdGF0dXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcGFyZW50LmN1cnJlbnRTb3J0VHlwZTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzb3J0VmFsdWU6IGZ1bmN0aW9uIHNvcnRWYWx1ZSgpIHtcbiAgICAgIHRoaXMuY3VycmVudFNvcnQgPSB0aGlzLmN1cnJlbnRTb3J0ICE9PSAyID8gdGhpcy5jdXJyZW50U29ydCArIDEgOiAwO1xuICAgICAgdGhpcy4kcGFyZW50LnNvcnQodGhpcy5zb3J0S2V5LCB0aGlzLnNvcnRTdGF0dXNlc1t0aGlzLmN1cnJlbnRTb3J0XSk7XG4gICAgfSxcbiAgICByZXNldFNvcnQ6IGZ1bmN0aW9uIHJlc2V0U29ydCgpIHtcbiAgICAgIHRoaXMuY3VycmVudFNvcnQgPSAwO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvdnNUaC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNUYWJsZV92c1RodnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzVGh2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1RhYmxlL3ZzVGgudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNUaF9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzVGFibGVfdnNUaHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNUaHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYwMDhmZGYwX3JlbmRlcixcbiAgdnNUaHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYwMDhmZGYwX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1RoID0gKHZzVGhfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNUYWJsZS92c1RyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZmU2ODY4MCZcbnZhciB2c1RydnVlX3R5cGVfdGVtcGxhdGVfaWRfMGZlNjg2ODBfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygndHInLHtyZWY6XCJ0YWJsZVRyXCIsc3RhdGljQ2xhc3M6XCJ0ci12YWx1ZXMgdnMtdGFibGUtLXRyXCIsY2xhc3M6WyhcInRyLXRhYmxlLXN0YXRlLVwiICsgX3ZtLnN0YXRlKSwgeydpcy1zZWxlY3RlZCc6X3ZtLmlzU2VsZWN0ZWQsICdzZWxlY3RlZCc6IF92bS5kYXRhLCAnaXMtZXhwYW5kJzogX3ZtLm1heEhlaWdodCAhPSAnMHB4JywgJ2FjdGl2ZUVkaXQnOiBfdm0uYWN0aXZlRWRpdCwgJ2hvdmVyRmxhdCc6IF92bS4kcGFyZW50LmhvdmVyRmxhdH1dLG9uOntcImNsaWNrXCI6X3ZtLmNsaWNrdHIsXCJkYmxjbGlja1wiOl92bS5kYmxjbGlja3RyfX0sWyhfdm0uJHBhcmVudC5tdWx0aXBsZSB8fCBfdm0uJHNsb3RzLmV4cGFuZCk/X2MoJ3RkJyx7c3RhdGljQ2xhc3M6XCJ0ZC1jaGVja1wiLGNsYXNzOnsnYWN0aXZlLWV4cGFuZGVkJzogdGhpcy5leHBhbmRlZH19LFsoX3ZtLiRwYXJlbnQubXVsdGlwbGUpP19jKCd2cy1jaGVja2JveCcse2F0dHJzOntcImNoZWNrZWRcIjpfdm0uaXNTZWxlY3RlZCxcInNpemVcIjpcInNtYWxsXCJ9fSk6X3ZtLl9lKCksKF92bS4kc2xvdHMuZXhwYW5kKT9fYygndnMtaWNvbicsW192bS5fdihcImtleWJvYXJkX2Fycm93X2Rvd25cIildKTpfdm0uX2UoKV0sMSk6X3ZtLl9lKCksX3ZtLl90KFwiZGVmYXVsdFwiKV0sMil9XG52YXIgdnNUcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzBmZTY4NjgwX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1RhYmxlL3ZzVHIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBmZTY4NjgwJlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIHtcImNvbW1vbmpzXCI6XCJ2dWVcIixcImNvbW1vbmpzMlwiOlwidnVlXCIsXCJyb290XCI6XCJWdWVcIn1cbnZhciBleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOGJiZlwiKTtcbnZhciBleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1RhYmxlL3ZzVHJFeHBhbmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJmYzIzZjA2JlxudmFyIHZzVHJFeHBhbmR2dWVfdHlwZV90ZW1wbGF0ZV9pZF9iZmMyM2YwNl9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCd0cmFuc2l0aW9uJyx7YXR0cnM6e1wibmFtZVwiOlwidHItZXhwYW5kXCJ9fSxbKF92bS5hY3RpdmUpP19jKCd0cicse3N0YXRpY0NsYXNzOlwidHItZXhwYW5kXCJ9LFtfYygndGQnLHthdHRyczp7XCJjb2xzcGFuXCI6X3ZtLmNvbHNwYW59fSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29udGVudC10ci1leHBhbmRcIn0sW192bS5fdChcImRlZmF1bHRcIiksKF92bS5jbG9zZSk/X2MoJ2J1dHRvbicse3N0YXRpY0NsYXNzOlwidHItZXhwYW5kLS1jbG9zZVwiLG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLiRlbWl0KCdjbGljaycsICRldmVudCl9fX0sW19jKCdpJyx7c3RhdGljQ2xhc3M6XCJtYXRlcmlhbC1pY29uc1wifSxbX3ZtLl92KFwiIGNsZWFyIFwiKV0pXSk6X3ZtLl9lKCldLDIpXSldKTpfdm0uX2UoKV0pfVxudmFyIHZzVHJFeHBhbmR2dWVfdHlwZV90ZW1wbGF0ZV9pZF9iZmMyM2YwNl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUYWJsZS92c1RyRXhwYW5kLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZmMyM2YwNiZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNUYWJsZS92c1RyRXhwYW5kLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNUckV4cGFuZHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIHByb3BzOiB7XG4gICAgY2xvc2U6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgY29sc3Bhbjoge1xuICAgICAgZGVmYXVsdDogMSxcbiAgICAgIHR5cGU6IE51bWJlclxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUYWJsZS92c1RyRXhwYW5kLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1RhYmxlX3ZzVHJFeHBhbmR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNUckV4cGFuZHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvdnNUckV4cGFuZC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1RyRXhwYW5kX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNUYWJsZV92c1RyRXhwYW5kdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1RyRXhwYW5kdnVlX3R5cGVfdGVtcGxhdGVfaWRfYmZjMjNmMDZfcmVuZGVyLFxuICB2c1RyRXhwYW5kdnVlX3R5cGVfdGVtcGxhdGVfaWRfYmZjMjNmMDZfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVHJFeHBhbmQgPSAodnNUckV4cGFuZF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1RhYmxlL3ZzVHIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNUcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc1RyJyxcbiAgcHJvcHM6IHtcbiAgICBzdGF0ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgZGF0YToge1xuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sc3BhbjogMCxcbiAgICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICAgIG1heEhlaWdodDogJzBweCcsXG4gICAgICBhY3RpdmVFZGl0OiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgJyRwYXJlbnQuZGF0YXgnOiBmdW5jdGlvbiAkcGFyZW50RGF0YXgoKSB7XG4gICAgICB0aGlzLmNvbGxhcHNlRXhwYW5kZWREYXRhKCk7XG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHN0eWxlRXhwYW5kOiBmdW5jdGlvbiBzdHlsZUV4cGFuZCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heEhlaWdodDogdGhpcy5tYXhIZWlnaHRcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXRDb2xzcGFuRXhwYW5kOiBmdW5jdGlvbiBnZXRDb2xzcGFuRXhwYW5kKCkge1xuICAgICAgdmFyIGxlbmd0aHggPSB0aGlzLiRwYXJlbnQuJHJlZnMuY29sZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgndGgnKS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoeDtcbiAgICB9LFxuICAgIGlzU2VsZWN0ZWQ6IGZ1bmN0aW9uIGlzU2VsZWN0ZWQoKSB7XG4gICAgICBpZiAodGhpcy4kcGFyZW50Lm11bHRpcGxlICYmIHRoaXMuJHBhcmVudC52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhID8gdGhpcy4kcGFyZW50LnZhbHVlLmluY2x1ZGVzKHRoaXMuZGF0YSkgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEgPyB0aGlzLiRwYXJlbnQudmFsdWUgPT0gdGhpcy5kYXRhIDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5jb2xzcGFuID0gX3RoaXMuJHBhcmVudC4kcmVmcy50aGVhZC5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpLmxlbmd0aDtcblxuICAgICAgaWYgKF90aGlzLiRzbG90cy5leHBhbmQpIHtcbiAgICAgICAgX3RoaXMuY29sc3BhbisrO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIGlmICh0aGlzLiRzbG90cy5leHBhbmQpIHRoaXMuJHBhcmVudC5oYXNFeHBhZGFibGVEYXRhID0gdHJ1ZTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGluc2VydEFmdGVyOiBmdW5jdGlvbiBpbnNlcnRBZnRlcihlLCBpKSB7XG4gICAgICBpZiAoZS5uZXh0U2libGluZykge1xuICAgICAgICBlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksIGUubmV4dFNpYmxpbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xpY2t0cjogZnVuY3Rpb24gY2xpY2t0cihldnQpIHtcbiAgICAgIHRoaXMuJHBhcmVudC5jbGlja3RyKHRoaXMuZGF0YSwgdHJ1ZSk7XG5cbiAgICAgIGlmICh0aGlzLiRzbG90cy5leHBhbmQpIHtcbiAgICAgICAgdGhpcy5jbGlja3RkKGV2dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkYmxjbGlja3RyOiBmdW5jdGlvbiBkYmxjbGlja3RyKGV2dCkge1xuICAgICAgdGhpcy4kcGFyZW50LmRibGNsaWNrdHIodGhpcy5kYXRhLCB0cnVlKTtcbiAgICB9LFxuICAgIGNsaWNrdGQ6IGZ1bmN0aW9uIGNsaWNrdGQoZXZ0KSB7XG4gICAgICBpZiAodGhpcy4kcGFyZW50Lm11bHRpcGxlIHx8ICF0aGlzLiRzbG90cy5leHBhbmQpIHJldHVybjtcbiAgICAgIHZhciB0ciA9IGV2dC50YXJnZXQuY2xvc2VzdCgndHInKTtcblxuICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgICAgdHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ci5uZXh0U2libGluZyk7XG4gICAgICAgIHRyLmNsYXNzTGlzdC5yZW1vdmUoJ3RyLWV4cGFuZGVkeCcpO1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ci5jbGFzc0xpc3QuYWRkKCd0ci1leHBhbmRlZHgnKTtcbiAgICAgICAgdmFyIHRyeCA9IGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX2RlZmF1bHQuYS5leHRlbmQodnNUckV4cGFuZCk7XG4gICAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyB0cngoKTtcbiAgICAgICAgaW5zdGFuY2UuJHByb3BzLmNvbHNwYW4gPSB0aGlzLmNvbHNwYW47XG4gICAgICAgIGluc3RhbmNlLiRzbG90cy5kZWZhdWx0ID0gdGhpcy4kc2xvdHMuZXhwYW5kO1xuICAgICAgICBpbnN0YW5jZS52bSA9IGluc3RhbmNlLiRtb3VudCgpO1xuICAgICAgICB2YXIgbmV3VFIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpLmFwcGVuZENoaWxkKGluc3RhbmNlLnZtLiRlbCk7XG4gICAgICAgIHRoaXMuaW5zZXJ0QWZ0ZXIodHIsIG5ld1RSKTtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XG4gICAgICB9IC8vIHRoaXMuJHBhcmVudC5jbGlja3RyKHRoaXMuZGF0YSwgZmFsc2UpXG4gICAgICAvLyBpZih0aGlzLiRwYXJlbnQubXVsdGlwbGUpIHtcbiAgICAgIC8vICAgcmV0dXJuXG4gICAgICAvLyB9XG4gICAgICAvLyBsZXQgc2Nyb2xsSGVpZ2h0ID0gdGhpcy4kcmVmcy50ZC5zY3JvbGxIZWlnaHRcbiAgICAgIC8vIGlmKHRoaXMubWF4SGVpZ2h0ID09ICcwcHgnKSB7XG4gICAgICAvLyAgIHRoaXMubWF4SGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YFxuICAgICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vICAgICB0aGlzLm1heEhlaWdodCA9ICdub25lJ1xuICAgICAgLy8gICB9LDMwMClcbiAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAvLyAgIHRoaXMubWF4SGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YFxuICAgICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vICAgICB0aGlzLm1heEhlaWdodCA9IGAkezB9cHhgXG4gICAgICAvLyAgIH0sIDUwKVxuICAgICAgLy8gfVxuXG4gICAgfSxcbiAgICBjb2xsYXBzZUV4cGFuZGVkRGF0YTogZnVuY3Rpb24gY29sbGFwc2VFeHBhbmRlZERhdGEoKSB7XG4gICAgICBpZiAodGhpcy5leHBhbmRlZCkge1xuICAgICAgICB2YXIgdHIgPSB0aGlzLiRyZWZzLnRhYmxlVHI7XG4gICAgICAgIHRyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodHIubmV4dFNpYmxpbmcpO1xuICAgICAgICB0ci5jbGFzc0xpc3QucmVtb3ZlKCd0ci1leHBhbmRlZHgnKTtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvdnNUci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNUYWJsZV92c1RydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzVHJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c1RhYmxlL3ZzVHIudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNUcl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzVGFibGVfdnNUcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNUcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzBmZTY4NjgwX3JlbmRlcixcbiAgdnNUcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzBmZTY4NjgwX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1RyID0gKHZzVHJfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNUYWJsZS92c1RkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MWI2MjI2MCZcbnZhciB2c1RkdnVlX3R5cGVfdGVtcGxhdGVfaWRfNDFiNjIyNjBfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygndGQnLHtyZWY6XCJ0ZFwiLHN0YXRpY0NsYXNzOlwidGQgdnMtdGFibGUtLXRkXCIsY2xhc3M6eyd0ZC1lZGl0JzogX3ZtLiRzbG90cy5lZGl0fX0sW19jKCdzcGFuJyx7b246e1wiY2xpY2tcIjpfdm0uY2xpY2t0ZH19LFsoX3ZtLiRzbG90cy5lZGl0KT9fYygndnMtaWNvbicse3N0YXRpY0NsYXNzOlwiaWNvbi1lZGl0XCIsYXR0cnM6e1wiaWNvblwiOlwiZWRpdFwifX0pOl92bS5fZSgpLF92bS5fdChcImRlZmF1bHRcIiksKF92bS4kc2xvdHMuZWRpdCk/X2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcImVtcHR5XCJ9LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS5kYXRhID8gJycgOiAnRW1wdHknKStcIiBcIildKTpfdm0uX2UoKV0sMildKX1cbnZhciB2c1RkdnVlX3R5cGVfdGVtcGxhdGVfaWRfNDFiNjIyNjBfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvdnNUZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDFiNjIyNjAmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvdnNUZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVGR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnVnNUZCcsXG4gIHByb3BzOiB7XG4gICAgZGF0YToge1xuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlRWRpdDogZmFsc2VcbiAgICB9O1xuICB9LFxuICB3YXRjaDoge1xuICAgIGFjdGl2ZUVkaXQ6IGZ1bmN0aW9uIGFjdGl2ZUVkaXQoKSB7XG4gICAgICB0aGlzLiRwYXJlbnQuYWN0aXZlRWRpdCA9IHRoaXMuYWN0aXZlRWRpdDtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBpbnNlcnRBZnRlcjogZnVuY3Rpb24gaW5zZXJ0QWZ0ZXIoZSwgaSkge1xuICAgICAgaWYgKGUubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLCBlLm5leHRTaWJsaW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGUucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChpKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsaWNrdGQ6IGZ1bmN0aW9uIGNsaWNrdGQoZXZ0KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy4kc2xvdHMuZWRpdCkge1xuICAgICAgICB2YXIgdHIgPSBldnQudGFyZ2V0LmNsb3Nlc3QoJ3RyJyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZUVkaXQpIHtcbiAgICAgICAgICB2YXIgdHJ4ID0gZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfZGVmYXVsdC5hLmV4dGVuZCh2c1RyRXhwYW5kKTtcbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgdHJ4KCk7XG4gICAgICAgICAgaW5zdGFuY2UuJHByb3BzLmNvbHNwYW4gPSA1O1xuICAgICAgICAgIGluc3RhbmNlLiRwcm9wcy5jbG9zZSA9IHRydWU7XG4gICAgICAgICAgaW5zdGFuY2UuJHNsb3RzLmRlZmF1bHQgPSB0aGlzLiRzbG90cy5lZGl0O1xuICAgICAgICAgIGluc3RhbmNlLnZtID0gaW5zdGFuY2UuJG1vdW50KCk7XG4gICAgICAgICAgaW5zdGFuY2UuJG9uKCdjbGljaycsIHRoaXMuY2xvc2UpO1xuICAgICAgICAgIHZhciBudWV2b19wYXJyYWZvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKS5hcHBlbmRDaGlsZChpbnN0YW5jZS52bS4kZWwpO1xuICAgICAgICAgIHRoaXMuaW5zZXJ0QWZ0ZXIodHIsIG51ZXZvX3BhcnJhZm8pO1xuICAgICAgICAgIHRoaXMuYWN0aXZlRWRpdCA9IHRydWU7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBfdGhpcy5jbG9zZUVkaXQpO1xuICAgICAgICAgIH0sIDIwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2xvc2VFZGl0OiBmdW5jdGlvbiBjbG9zZUVkaXQoZXZ0KSB7XG4gICAgICBpZiAoIWV2dC50YXJnZXQuY2xvc2VzdCgnLnRyLWV4cGFuZCcpICYmICFldnQudGFyZ2V0LmNsb3Nlc3QoJy52cy1zZWxlY3QtLW9wdGlvbnMnKSkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbG9zZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICB2YXIgdHIgPSB0aGlzLiRyZWZzLnRkLmNsb3Nlc3QoJ3RyJyk7XG4gICAgICB0aGlzLmFjdGl2ZUVkaXQgPSBmYWxzZTtcbiAgICAgIHRyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodHIubmV4dFNpYmxpbmcpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZUVkaXQpO1xuICAgIH0sXG4gICAgc2F2ZUVkaXQ6IGZ1bmN0aW9uIHNhdmVFZGl0KCkge1xuICAgICAgdGhpcy5hY3RpdmVFZGl0ID0gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUYWJsZS92c1RkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1RhYmxlX3ZzVGR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNUZHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvdnNUZC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1RkX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNUYWJsZV92c1RkdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1RkdnVlX3R5cGVfdGVtcGxhdGVfaWRfNDFiNjIyNjBfcmVuZGVyLFxuICB2c1RkdnVlX3R5cGVfdGVtcGxhdGVfaWRfNDFiNjIyNjBfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVGQgPSAodnNUZF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGFibGUvaW5kZXguanNcblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbXBvbmVudHNfdnNUYWJsZSA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNUYWJsZS5uYW1lLCB2c1RhYmxlKTtcbiAgVnVlLmNvbXBvbmVudCh2c1RoLm5hbWUsIHZzVGgpO1xuICBWdWUuY29tcG9uZW50KHZzVHIubmFtZSwgdnNUcik7XG4gIFZ1ZS5jb21wb25lbnQodnNUZC5uYW1lLCB2c1RkKTtcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNUZXh0YXJlYS92c1RleHRhcmVhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05YjhiYTZmZSZsYW5nPWh0bWwmXG52YXIgdnNUZXh0YXJlYXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzliOGJhNmZlX2xhbmdfaHRtbF9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWNvbXBvbmVudCB2cy1jb24tdGV4dGFyZWFcIixjbGFzczpbKFwidnMtdGV4dGFyZWEtXCIgKyBfdm0uY29sb3IpLCB7J3RleHRhcmVhLWRhbmdlcic6IF92bS5jb3VudGVyID8gKF92bS52YWx1ZSAmJiBfdm0udmFsdWUubGVuZ3RoID4gX3ZtLmNvdW50ZXIpIDogZmFsc2UsICdmb2N1c3gnOiBfdm0uaXNGb2N1c31dLHN0eWxlOihfdm0uc3R5bGUpfSxbKF92bS5sYWJlbCk/X2MoJ2g0JyxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0ubGFiZWwpK1wiIFwiKV0pOl92bS5fZSgpLF9jKCd0ZXh0YXJlYScsX3ZtLl9nKF92bS5fYih7c3RhdGljQ2xhc3M6XCJ2cy10ZXh0YXJlYVwiLGRvbVByb3BzOntcInZhbHVlXCI6X3ZtLnZhbHVlfX0sJ3RleHRhcmVhJyxfdm0uJGF0dHJzLGZhbHNlKSxfdm0ubGlzdGVuZXJzKSksKF92bS5jb3VudGVyKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb3VudCB2cy10ZXh0YXJlYS0tY291bnRcIn0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLnZhbHVlID8gX3ZtLnZhbHVlLmxlbmd0aCA6IDApK1wiIC8gXCIrX3ZtLl9zKF92bS5jb3VudGVyKStcIiBcIildKTpfdm0uX2UoKV0pfVxudmFyIHZzVGV4dGFyZWF2dWVfdHlwZV90ZW1wbGF0ZV9pZF85YjhiYTZmZV9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGV4dGFyZWEvdnNUZXh0YXJlYS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWI4YmE2ZmUmbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c1RleHRhcmVhL3ZzVGV4dGFyZWEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5mdW5jdGlvbiB2c1RleHRhcmVhdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gdnNUZXh0YXJlYXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyB2c1RleHRhcmVhdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyB2c1RleHRhcmVhdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzVGV4dGFyZWF2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiBcIlZzVGV4dGFyZWFcIixcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge30sXG4gICAgbGFiZWw6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGNvbG9yOiB7XG4gICAgICBkZWZhdWx0OiAncHJpbWFyeScsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGNvdW50ZXI6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddXG4gICAgfSxcbiAgICBjb3VudGVyRGFuZ2VyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIGhlaWdodDoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgd2lkdGg6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzRm9jdXM6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZTogZnVuY3Rpb24gc3R5bGUoKSB7XG4gICAgICB2YXIgc3R5bGUgPSB7fTtcbiAgICAgIHN0eWxlLmJvcmRlciA9IFwiMXB4IHNvbGlkIFwiLmNvbmNhdCh0aGlzLmlzRm9jdXMgPyB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKSA6ICdyZ2JhKDAsIDAsIDAsLjA4KScpO1xuICAgICAgc3R5bGUuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICBzdHlsZS53aWR0aCA9IHRoaXMud2lkdGg7XG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfSxcbiAgICBsaXN0ZW5lcnM6IGZ1bmN0aW9uIGxpc3RlbmVycygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB2c1RleHRhcmVhdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLiRsaXN0ZW5lcnMsIHtcbiAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uIGlucHV0KGV2dCkge1xuICAgICAgICAgIF90aGlzLiRlbWl0KCdpbnB1dCcsIGV2dC50YXJnZXQudmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBmb2N1czogZnVuY3Rpb24gZm9jdXMoKSB7XG4gICAgICAgICAgX3RoaXMuZm9jdXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgICAgICBfdGhpcy5ibHVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IHRoaXMuY291bnRlcikge1xuICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6Y291bnRlckRhbmdlcicsIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOmNvdW50ZXJEYW5nZXInLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgdGhpcy5pc0ZvY3VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuJGVtaXQoJ2ZvY3VzJyk7XG4gICAgfSxcbiAgICBibHVyOiBmdW5jdGlvbiBibHVyKCkge1xuICAgICAgdGhpcy5pc0ZvY3VzID0gZmFsc2U7XG4gICAgICB0aGlzLiRlbWl0KCdibHVyJyk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUZXh0YXJlYS92c1RleHRhcmVhLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c1RleHRhcmVhX3ZzVGV4dGFyZWF2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNUZXh0YXJlYXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzVGV4dGFyZWEvdnNUZXh0YXJlYS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c1RleHRhcmVhX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNUZXh0YXJlYV92c1RleHRhcmVhdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c1RleHRhcmVhdnVlX3R5cGVfdGVtcGxhdGVfaWRfOWI4YmE2ZmVfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNUZXh0YXJlYXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzliOGJhNmZlX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNUZXh0YXJlYSA9ICh2c1RleHRhcmVhX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNUZXh0YXJlYS9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c192c1RleHRhcmVhID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c1RleHRhcmVhLm5hbWUsIHZzVGV4dGFyZWEpO1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0NvbGxhcHNlL3ZzQ29sbGFwc2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhMzgwZGE5JlxudmFyIHZzQ29sbGFwc2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wYTM4MGRhOV9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWNvbGxhcHNlXCIsY2xhc3M6W192bS50eXBlXX0sW192bS5fdChcImRlZmF1bHRcIildLDIpfVxudmFyIHZzQ29sbGFwc2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wYTM4MGRhOV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNDb2xsYXBzZS92c0NvbGxhcHNlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTM4MGRhOSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNDb2xsYXBzZS92c0NvbGxhcHNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNDb2xsYXBzZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc0NvbGxhcHNlJyxcbiAgcHJvcHM6IHtcbiAgICBhY2NvcmRpb246IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgdHlwZToge1xuICAgICAgZGVmYXVsdDogJ2RlZmF1bHQnLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBvcGVuSG92ZXI6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGVtaXRDaGFuZ2U6IGZ1bmN0aW9uIGVtaXRDaGFuZ2UoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnKTtcbiAgICB9LFxuICAgIGNsb3NlQWxsSXRlbXM6IGZ1bmN0aW9uIGNsb3NlQWxsSXRlbXMoZWwpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuJGNoaWxkcmVuO1xuICAgICAgY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLiRlbCAhPT0gZWwpIHtcbiAgICAgICAgICBpdGVtLm1heEhlaWdodCA9ICcwcHgnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0NvbGxhcHNlL3ZzQ29sbGFwc2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQ29sbGFwc2VfdnNDb2xsYXBzZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0NvbGxhcHNldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNDb2xsYXBzZS92c0NvbGxhcHNlLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzQ29sbGFwc2VfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c0NvbGxhcHNlX3ZzQ29sbGFwc2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzQ29sbGFwc2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wYTM4MGRhOV9yZW5kZXIsXG4gIHZzQ29sbGFwc2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wYTM4MGRhOV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNDb2xsYXBzZSA9ICh2c0NvbGxhcHNlX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzQ29sbGFwc2UvdnNDb2xsYXBzZUl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY4ZTczYmRjJlxudmFyIHZzQ29sbGFwc2VJdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfZjhlNzNiZGNfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1jb2xsYXBzZS1pdGVtXCIsY2xhc3M6eydvcGVuLWl0ZW0nOiBfdm0ubWF4SGVpZ2h0ICE9ICcwcHgnLCAnZGlzYWJsZWR4JzogX3ZtLmRpc2FibGVkfSxvbjp7XCJtb3VzZW92ZXJcIjpfdm0ubW91c2VvdmVyLFwibW91c2VvdXRcIjpfdm0ubW91c2VvdXR9fSxbX2MoJ2hlYWRlcicse3N0YXRpY0NsYXNzOlwidnMtY29sbGFwc2UtaXRlbS0taGVhZGVyXCIsb246e1wiY2xpY2tcIjpfdm0udG9nZ2xlQ29udGVudH19LFtfdm0uX3QoXCJoZWFkZXJcIiksKCFfdm0ubm90QXJyb3cpP19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJpY29uLWhlYWRlciB2cy1jb2xsYXBzZS1pdGVtLS1pY29uLWhlYWRlclwifSxbX2MoJ3ZzLWljb24nLHthdHRyczp7XCJpY29uLXBhY2tcIjpfdm0uaWNvblBhY2ssXCJpY29uXCI6X3ZtLmljb25BcnJvd319KV0sMSk6X3ZtLl9lKCldLDIpLF9jKCdkaXYnLHtyZWY6XCJjb250ZW50XCIsc3RhdGljQ2xhc3M6XCJ2cy1jb2xsYXBzZS1pdGVtLS1jb250ZW50XCIsc3R5bGU6KF92bS5zdHlsZUNvbnRlbnQpfSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29uLWNvbnRlbnQtLWl0ZW1cIn0sW192bS5fdChcImRlZmF1bHRcIildLDIpXSldKX1cbnZhciB2c0NvbGxhcHNlSXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2Y4ZTczYmRjX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0NvbGxhcHNlL3ZzQ29sbGFwc2VJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mOGU3M2JkYyZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNDb2xsYXBzZS92c0NvbGxhcHNlSXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQ29sbGFwc2VJdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzQ29sbGFwc2VJdGVtJyxcbiAgY29tcG9uZW50czoge1xuICAgIHZzaWNvbjogY29tcG9uZW50c192c0ljb25cbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBvcGVuOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIG5vdEFycm93OiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIGljb25BcnJvdzoge1xuICAgICAgZGVmYXVsdDogJ2tleWJvYXJkX2Fycm93X2Rvd24nLFxuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBpY29uUGFjazoge1xuICAgICAgZGVmYXVsdDogJ21hdGVyaWFsLWljb25zJyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgc3N0OiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1heEhlaWdodDogJzBweCcsXG4gICAgICAvLyBvbmx5IHVzZWQgZm9yIHNzdFxuICAgICAgZGF0YVJlYWR5OiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgYWNjb3JkaW9uOiBmdW5jdGlvbiBhY2NvcmRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcGFyZW50LmFjY29yZGlvbjtcbiAgICB9LFxuICAgIG9wZW5Ib3ZlcjogZnVuY3Rpb24gb3BlbkhvdmVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC5vcGVuSG92ZXI7XG4gICAgfSxcbiAgICBzdHlsZUNvbnRlbnQ6IGZ1bmN0aW9uIHN0eWxlQ29udGVudCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heEhlaWdodDogdGhpcy5tYXhIZWlnaHRcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIG1heEhlaWdodDogZnVuY3Rpb24gbWF4SGVpZ2h0KCkge1xuICAgICAgdGhpcy4kcGFyZW50LmVtaXRDaGFuZ2UoKTtcbiAgICB9LFxuICAgIHJlYWR5OiBmdW5jdGlvbiByZWFkeShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgaWYgKG9sZFZhbCAhPSBuZXdWYWwgJiYgbmV3VmFsKSB7XG4gICAgICAgIHRoaXMuaW5pdE1heEhlaWdodCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5jaGFuZ2VIZWlnaHQpO1xuICAgIHZhciBtYXhIZWlnaHR4ID0gdGhpcy4kcmVmcy5jb250ZW50LnNjcm9sbEhlaWdodDtcblxuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gXCJcIi5jb25jYXQobWF4SGVpZ2h0eCwgXCJweFwiKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBjaGFuZ2VIZWlnaHQ6IGZ1bmN0aW9uIGNoYW5nZUhlaWdodCgpIHtcbiAgICAgIHZhciBtYXhIZWlnaHR4ID0gdGhpcy4kcmVmcy5jb250ZW50LnNjcm9sbEhlaWdodDtcblxuICAgICAgaWYgKHRoaXMubWF4SGVpZ2h0ICE9ICcwcHgnKSB7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gXCJcIi5jb25jYXQobWF4SGVpZ2h0eCwgXCJweFwiKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRvZ2dsZUNvbnRlbnQ6IGZ1bmN0aW9uIHRvZ2dsZUNvbnRlbnQoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5vcGVuSG92ZXIgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmFjY29yZGlvbikge1xuICAgICAgICB0aGlzLiRwYXJlbnQuY2xvc2VBbGxJdGVtcyh0aGlzLiRlbCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNzdCAmJiAhdGhpcy5kYXRhUmVhZHkpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnZmV0Y2gnLCB7XG4gICAgICAgICAgZG9uZTogZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgICAgICAgIF90aGlzLmluaXRNYXhIZWlnaHQoKTtcblxuICAgICAgICAgICAgX3RoaXMuZGF0YVJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbml0TWF4SGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpbml0TWF4SGVpZ2h0OiBmdW5jdGlvbiBpbml0TWF4SGVpZ2h0KCkge1xuICAgICAgdmFyIG1heEhlaWdodHggPSB0aGlzLiRyZWZzLmNvbnRlbnQuc2Nyb2xsSGVpZ2h0O1xuXG4gICAgICBpZiAodGhpcy5tYXhIZWlnaHQgPT0gJzBweCcpIHtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBcIlwiLmNvbmNhdChtYXhIZWlnaHR4LCBcInB4XCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBcIjBweFwiO1xuICAgICAgfVxuICAgIH0sXG4gICAgbW91c2VvdmVyOiBmdW5jdGlvbiBtb3VzZW92ZXIoKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBtYXhIZWlnaHR4ID0gdGhpcy4kcmVmcy5jb250ZW50LnNjcm9sbEhlaWdodDtcblxuICAgICAgaWYgKHRoaXMub3BlbkhvdmVyKSB7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gXCJcIi5jb25jYXQobWF4SGVpZ2h0eCwgXCJweFwiKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1vdXNlb3V0OiBmdW5jdGlvbiBtb3VzZW91dCgpIHtcbiAgICAgIGlmICh0aGlzLm9wZW5Ib3Zlcikge1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IFwiMHB4XCI7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNDb2xsYXBzZS92c0NvbGxhcHNlSXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNDb2xsYXBzZV92c0NvbGxhcHNlSXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0NvbGxhcHNlSXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9jb21wb25lbnRzL3ZzQ29sbGFwc2UvdnNDb2xsYXBzZUl0ZW0udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNDb2xsYXBzZUl0ZW1fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c0NvbGxhcHNlX3ZzQ29sbGFwc2VJdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0NvbGxhcHNlSXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2Y4ZTczYmRjX3JlbmRlcixcbiAgdnNDb2xsYXBzZUl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF9mOGU3M2JkY19zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNDb2xsYXBzZUl0ZW0gPSAodnNDb2xsYXBzZUl0ZW1fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0NvbGxhcHNlL2luZGV4LmpzXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbXBvbmVudHNfdnNDb2xsYXBzZSA9IChmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodnNDb2xsYXBzZS5uYW1lLCB2c0NvbGxhcHNlKTtcbiAgVnVlLmNvbXBvbmVudCh2c0NvbGxhcHNlSXRlbS5uYW1lLCB2c0NvbGxhcHNlSXRlbSk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzSW1hZ2VzL3ZzSW1hZ2VzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMzVjZTUwYSZsYW5nPWh0bWwmXG52YXIgdnNJbWFnZXN2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMzVjZTUwYV9sYW5nX2h0bWxfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2cy1jb21wb25lbnQgdnMtaW1hZ2VzXCIsY2xhc3M6WyhcInZzLWltYWdlcy1ob3Zlci1cIiArIF92bS5ob3ZlciksIHsnYWx0ZXJuYXRpbmcnOiBfdm0uYWx0ZXJuYXRpbmcsICdub3RCb3JkZXJSYWRpdXMnOiBfdm0ubm90Qm9yZGVyUmFkaXVzLCAnbm90TWFyZ2luJzogX3ZtLm5vdE1hcmdpbn1dfSxbX2MoJ3VsJyx7c3RhdGljQ2xhc3M6XCJ2cy11bC1pbWFnZXMgdnMtaW1hZ2VzLS11bFwifSxbX3ZtLl90KFwiZGVmYXVsdFwiKV0sMildKX1cbnZhciB2c0ltYWdlc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzAzNWNlNTBhX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNJbWFnZXMvdnNJbWFnZXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAzNWNlNTBhJmxhbmc9aHRtbCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2NvbXBvbmVudHMvdnNJbWFnZXMvdnNJbWFnZXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzSW1hZ2VzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogXCJWc0ltYWdlc1wiLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIGhvdmVyOiB7XG4gICAgICBkZWZhdWx0OiAnZGVmYXVsdCcsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGFsdGVybmF0aW5nOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIG5vdEJvcmRlclJhZGl1czoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBub3RNYXJnaW46IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0ltYWdlcy92c0ltYWdlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNJbWFnZXNfdnNJbWFnZXN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodnNJbWFnZXN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0ltYWdlcy92c0ltYWdlcy52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0ltYWdlc19jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHZzSW1hZ2VzX3ZzSW1hZ2VzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0ltYWdlc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzAzNWNlNTBhX2xhbmdfaHRtbF9yZW5kZXIsXG4gIHZzSW1hZ2VzdnVlX3R5cGVfdGVtcGxhdGVfaWRfMDM1Y2U1MGFfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0ltYWdlcyA9ICh2c0ltYWdlc19jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/e1wiY2FjaGVEaXJlY3RvcnlcIjpcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclwiLFwiY2FjaGVJZGVudGlmaWVyXCI6XCI1NmY5Y2Y3My12dWUtbG9hZGVyLXRlbXBsYXRlXCJ9IUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvY29tcG9uZW50cy92c0ltYWdlcy92c0ltYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mNmEzNjcyYSZcbnZhciB2c0ltYWdldnVlX3R5cGVfdGVtcGxhdGVfaWRfZjZhMzY3MmFfcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnbGknLHtzdGF0aWNDbGFzczpcInZzLWltYWdlXCJ9LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24tdnMtaW1hZ2VcIn0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWltYWdlLS1pbWdcIixzdHlsZTooX3ZtLnN0eWxlSW1hZ2UpLGF0dHJzOntcInYtYmluZFwiOl92bS4kYXR0cnN9fSldKSxfYygnaW1nJyx7c3RhdGljQ2xhc3M6XCJpbWFnLWJsdXJcIixhdHRyczp7XCJzcmNcIjpfdm0uc3JjLFwiYWx0XCI6XCJcIn19KV0pfVxudmFyIHZzSW1hZ2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF9mNmEzNjcyYV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNJbWFnZXMvdnNJbWFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjZhMzY3MmEmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9jb21wb25lbnRzL3ZzSW1hZ2VzL3ZzSW1hZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNJbWFnZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdWc0ltYWdlJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICBzcmM6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgc3R5bGVJbWFnZTogZnVuY3Rpb24gc3R5bGVJbWFnZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmRJbWFnZTogXCJ1cmwoXCIuY29uY2F0KHRoaXMuc3JjLCBcIilcIilcbiAgICAgIH07XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNJbWFnZXMvdnNJbWFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNJbWFnZXNfdnNJbWFnZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0ltYWdldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvdnNJbWFnZXMvdnNJbWFnZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0ltYWdlX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNJbWFnZXNfdnNJbWFnZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNJbWFnZXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2Y2YTM2NzJhX3JlbmRlcixcbiAgdnNJbWFnZXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2Y2YTM2NzJhX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0ltYWdlID0gKHZzSW1hZ2VfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvY29tcG9uZW50cy92c0ltYWdlcy9pbmRleC5qc1xuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ZzSW1hZ2VzID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c0ltYWdlcy5uYW1lLCB2c0ltYWdlcyk7XG4gIFZ1ZS5jb21wb25lbnQodnNJbWFnZS5uYW1lLCB2c0ltYWdlKTtcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2xheW91dC92c1Jvdy92c1Jvdy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTEyNzU3YzAmbGFuZz1odG1sJlxudmFyIHZzUm93dnVlX3R5cGVfdGVtcGxhdGVfaWRfNTEyNzU3YzBfbGFuZ19odG1sX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtcm93XCIsc3R5bGU6KHtcbiAgICAnYWxpZ24taXRlbXMnOl92bS52c0FsaWduLFxuICAgICdqdXN0aWZ5LWNvbnRlbnQnOl92bS52c0p1c3RpZnksXG4gICAgJ2Rpc3BsYXknOl92bS52c1R5cGUsXG4gICAgJ292ZXJmbG93JzogX3ZtLnZzVHlwZSA9PT0gJ2Jsb2NrJyA/ICdoaWRkZW4nIDogbnVsbCxcbiAgICAnd2lkdGgnOl92bS52c1cqMTAwLzEyKyclJ30pfSxbX3ZtLl90KFwiZGVmYXVsdFwiKV0sMil9XG52YXIgdnNSb3d2dWVfdHlwZV90ZW1wbGF0ZV9pZF81MTI3NTdjMF9sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zID0gW11cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9sYXlvdXQvdnNSb3cvdnNSb3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUxMjc1N2MwJmxhbmc9aHRtbCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2xheW91dC92c1Jvdy92c1Jvdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzUm93dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzUm93JyxcbiAgcHJvcHM6IHtcbiAgICB2c1R5cGU6IHtcbiAgICAgIGRlZmF1bHQ6ICdmbGV4JyxcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgdnNXOiB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogMTJcbiAgICB9LFxuICAgIHZzSnVzdGlmeToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdnNBbGlnbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9sYXlvdXQvdnNSb3cvdnNSb3cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzUm93X3ZzUm93dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzUm93dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTtcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9zcmMvbGF5b3V0L3ZzUm93L3ZzUm93LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzJlxudmFyIHZzUm93dnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9sYW5nX2Nzc18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZGM1MVwiKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvbGF5b3V0L3ZzUm93L3ZzUm93LnZ1ZVxuXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdnNSb3dfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICB2c1Jvd192c1Jvd3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdnNSb3d2dWVfdHlwZV90ZW1wbGF0ZV9pZF81MTI3NTdjMF9sYW5nX2h0bWxfcmVuZGVyLFxuICB2c1Jvd3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzUxMjc1N2MwX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNSb3cgPSAodnNSb3dfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvbGF5b3V0L3ZzUm93L2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBsYXlvdXRfdnNSb3cgPSAoZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHZzUm93Lm5hbWUsIHZzUm93KTtcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzP3tcImNhY2hlRGlyZWN0b3J5XCI6XCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcIixcImNhY2hlSWRlbnRpZmllclwiOlwiNTZmOWNmNzMtdnVlLWxvYWRlci10ZW1wbGF0ZVwifSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2xheW91dC92c0NvbC92c0NvbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjhlNDQ4NWMmbGFuZz1odG1sJlxudmFyIHZzQ29sdnVlX3R5cGVfdGVtcGxhdGVfaWRfNjhlNDQ4NWNfbGFuZ19odG1sX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidnMtY29sXCIsY2xhc3M6W1xuICAgICd2cy14cy0nK192bS52c1hzLFxuICAgICd2cy1zbS0nK192bS52c1NtLFxuICAgICd2cy1sZy0nK192bS52c0xnIF0sc3R5bGU6KHtcbiAgICAnb3JkZXInOl92bS52c09yZGVyLFxuICAgICdqdXN0aWZ5LWNvbnRlbnQnOl92bS52c0p1c3RpZnksXG4gICAgJ2Rpc3BsYXknOl92bS52c1R5cGUsXG4gICAgJ2FsaWduLWl0ZW1zJzpfdm0udnNBbGlnbixcbiAgICAnbWFyZ2luLWxlZnQnOl92bS52c09mZnNldCoxMDAvMTIrJyUnLFxuICAgICd3aWR0aCc6X3ZtLnZzVyoxMDAvMTIrJyUnfSl9LFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwyKX1cbnZhciB2c0NvbHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzY4ZTQ0ODVjX2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2xheW91dC92c0NvbC92c0NvbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjhlNDQ4NWMmbGFuZz1odG1sJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWI/P3JlZi0tMTItMSFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9zcmMvbGF5b3V0L3ZzQ29sL3ZzQ29sLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQ29sdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ1ZzQ29sJyxcbiAgcHJvcHM6IHtcbiAgICB2c1c6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiAxMlxuICAgIH0sXG4gICAgdnNYczoge1xuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICB2c1NtOiB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIHZzTGc6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgdnNPZmZzZXQ6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICB2c1R5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHZzSnVzdGlmeToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdnNBbGlnbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdnNPcmRlcjoge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl1cbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvbGF5b3V0L3ZzQ29sL3ZzQ29sLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0NvbF92c0NvbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0NvbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vc3JjL2xheW91dC92c0NvbC92c0NvbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzcyZcbnZhciB2c0NvbHZ1ZV90eXBlX3N0eWxlX2luZGV4XzBfbGFuZ19jc3NfID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImYyZmVcIik7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2xheW91dC92c0NvbC92c0NvbC52dWVcblxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzQ29sX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdnNDb2xfdnNDb2x2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzQ29sdnVlX3R5cGVfdGVtcGxhdGVfaWRfNjhlNDQ4NWNfbGFuZ19odG1sX3JlbmRlcixcbiAgdnNDb2x2dWVfdHlwZV90ZW1wbGF0ZV9pZF82OGU0NDg1Y19sYW5nX2h0bWxfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuXG4pXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzQ29sID0gKHZzQ29sX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2xheW91dC92c0NvbC9pbmRleC5qc1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbGF5b3V0X3ZzQ29sID0gKGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh2c0NvbC5uYW1lLCB2c0NvbCk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2NvbXBvbmVudHMvaW5kZXguanNcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAvL05ldyBDb21wb25lbnQgaW1wb3J0XG4vL2xheW91dFxuXG5cblxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL3NyYy9zdHlsZS92dWVzYXguc3R5bFxudmFyIHZ1ZXNheCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5OWMwXCIpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy91dGlscy90aGVtZS5qc1xuXG5cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0aGVtZSA9ICh7XG4gIG5hbWU6ICd0aGVtZScsXG4gIHZzZnVuY3Rpb246IGZ1bmN0aW9uIHZzZnVuY3Rpb24oanNvbikge1xuICAgIGZvciAodmFyIGNsYXZlIGluIGpzb24pIHtcbiAgICAgIHZhciBjb2xvcnggPSB2b2lkIDA7XG5cbiAgICAgIGlmICgvXltyZ2IoXS9nLnRlc3QoanNvbltjbGF2ZV0pKSB7XG4gICAgICAgIGNvbG9yeCA9IGpzb25bY2xhdmVdLnJlcGxhY2UoL1tyZ2IoKV0vZywgJycpO1xuICAgICAgfSBlbHNlIGlmICgvWyNdL2cudGVzdChqc29uW2NsYXZlXSkpIHtcbiAgICAgICAgdmFyIHJnYnggPSB1dGlsc19jb2xvci5oZXhUb1JnYihqc29uW2NsYXZlXSk7XG4gICAgICAgIGNvbG9yeCA9IFwiXCIuY29uY2F0KHJnYnguciwgXCIsXCIpLmNvbmNhdChyZ2J4LmcsIFwiLFwiKS5jb25jYXQocmdieC5iKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbG9yeCA9IGpzb25bY2xhdmVdO1xuICAgICAgfVxuXG4gICAgICB1dGlsc19jb2xvci5zZXRDc3NWYXJpYWJsZSgnLS12cy0nICsgY2xhdmUsIGNvbG9yeCk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3V0aWxzL3J0bC5qc1xuLyoqXG4gKiBAaW5qZWN0RGlyZWN0aW9uQ2xhc3NcbiAqIHdpbGwgaW5qZWN0ICd2dWVzYXgtYXBwLWlzLWx0cicgKGx0ciBjYXNlKSBvciAndnVleHNheC1hcHAtaXMtcnRsJyAocnRsIGNhc2UpIGluIHRoZSBodG1sIHRhZ1xuICovXG52YXIgaW5qZWN0RGlyZWN0aW9uQ2xhc3MgPSBmdW5jdGlvbiBpbmplY3REaXJlY3Rpb25DbGFzcyhkaXIpIHtcbiAgaWYgKGRvY3VtZW50KSB7XG4gICAgaWYgKGRpcikge1xuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJ2dWVzYXgtYXBwLWlzLWx0clwiKTtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwidnVlc2F4LWFwcC1pcy1ydGxcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwidnVlc2F4LWFwcC1pcy1sdHJcIik7XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcInZ1ZXNheC1hcHAtaXMtcnRsXCIpO1xuICAgIH1cbiAgfVxufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9mdW5jdGlvbnMvdnNOb3RpZmljYXRpb25zL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZWQ1MjRjNiZsYW5nPWh0bWwmXG52YXIgdnNOb3RpZmljYXRpb25zdnVlX3R5cGVfdGVtcGxhdGVfaWRfMWVkNTI0YzZfbGFuZ19odG1sX3JlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ3RyYW5zaXRpb24nLHthdHRyczp7XCJuYW1lXCI6XCJub3RpXCJ9LG9uOntcImJlZm9yZS1lbnRlclwiOl92bS5iZWZvcmVFbnRlcixcImVudGVyXCI6X3ZtLmVudGVyLFwibGVhdmVcIjpfdm0ubGVhdmV9fSxbKF92bS5hY3RpdmUpP19jKCdkaXYnLHtyZWY6XCJub3RpXCIsc3RhdGljQ2xhc3M6XCJ2cy1jb21wb25lbnQgdnMtbm90aWZpY2F0aW9uc1wiLGNsYXNzOlsoXCJ2cy1ub3RpLVwiICsgX3ZtLnBvc2l0aW9uKSwoXCJ2cy1ub3RpLVwiICsgX3ZtLmNvbG9yKSx7J2FjdGl2ZU5vdGknOl92bS5hY3RpdmV9XSxzdHlsZTooX3ZtLnN0eWxleCksb246e1wiY2xpY2tcIjpfdm0uY2xpY2tOb3RpfX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbnRlbnQtbm90aVwifSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29uLXRleHQtbm90aVwifSxbX2MoJ2gzJyx7ZG9tUHJvcHM6e1wiaW5uZXJIVE1MXCI6X3ZtLl9zKF92bS50aXRsZSl9fSksX2MoJ3AnLHtkb21Qcm9wczp7XCJpbm5lckhUTUxcIjpfdm0uX3MoX3ZtLnRleHQpfX0pLF92bS5fdChcImRlZmF1bHRcIildLDIpLChfdm0uaWNvbik/X2MoJ3ZzLWljb24nLHtzdGF0aWNDbGFzczpcInZzLWljb24tbm90aVwiLGF0dHJzOntcImljb24tcGFja1wiOl92bS5pY29uUGFjayxcImljb25cIjpfdm0uaWNvbn19KTpfdm0uX2UoKV0sMSksX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcImZpbGxpbmdcIixzdHlsZTooX3ZtLmZpbGxpbmdTdHlsZSl9KV0pOl92bS5fZSgpXSl9XG52YXIgdnNOb3RpZmljYXRpb25zdnVlX3R5cGVfdGVtcGxhdGVfaWRfMWVkNTI0YzZfbGFuZ19odG1sX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3ZzTm90aWZpY2F0aW9ucy9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWVkNTI0YzYmbGFuZz1odG1sJlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZml4ZWQuanNcbnZhciBlc19zdHJpbmdfZml4ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiM2ViMVwiKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliPz9yZWYtLTEyLTEhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCFDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vc3JjL2Z1bmN0aW9ucy92c05vdGlmaWNhdGlvbnMvaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuZnVuY3Rpb24gdnNOb3RpZmljYXRpb25zdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gdnNOb3RpZmljYXRpb25zdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IHZzTm90aWZpY2F0aW9uc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX293bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgdnNOb3RpZmljYXRpb25zdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZzTm90aWZpY2F0aW9uc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZ1bGxXaWR0aDogZmFsc2UsXG4gICAgICBpY29uOiBudWxsLFxuICAgICAgaWNvblBhY2s6ICdtYXRlcmlhbC1pY29ucycsXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgY29sb3JUZXh0OiAncmdiKDI1NSwgMjU1LCAyNTUpJyxcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgIHRleHQ6IG51bGwsXG4gICAgICB0aXRsZTogbnVsbCxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tLXJpZ2h0JyxcbiAgICAgIHRpbWU6IDMwMDAsXG4gICAgICBjb3Jkczoge1xuICAgICAgICB0b3A6IG51bGwsXG4gICAgICAgIGxlZnQ6IG51bGwsXG4gICAgICAgIHJpZ2h0OiBudWxsLFxuICAgICAgICBib3R0b206IG51bGxcbiAgICAgIH0sXG4gICAgICB3aWR0aHg6IDAsXG4gICAgICBmaXhlZDogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGZpbGxpbmdTdHlsZTogZnVuY3Rpb24gZmlsbGluZ1N0eWxlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogdGhpcy5jb3Jkcy5sZWZ0ID8gJy0xMDBweCcgOiBudWxsLFxuICAgICAgICByaWdodDogdGhpcy5jb3Jkcy5yaWdodCA/ICctMTAwcHgnIDogbnVsbCxcbiAgICAgICAgYmFja2dyb3VuZDogdGhpcy5jb2xvcixcbiAgICAgICAgaGVpZ2h0OiBcIlwiLmNvbmNhdCh0aGlzLndpZHRoeCAqIDIsIFwicHhcIiksXG4gICAgICAgIHdpZHRoOiBcIlwiLmNvbmNhdCh0aGlzLndpZHRoeCAqIDIsIFwicHhcIilcbiAgICAgIH07XG4gICAgfSxcbiAgICBzdHlsZXg6IGZ1bmN0aW9uIHN0eWxleCgpIHtcbiAgICAgIHJldHVybiB2c05vdGlmaWNhdGlvbnN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19vYmplY3RTcHJlYWQoe30sIHRoaXMuY29yZHMsIHtcbiAgICAgICAgY29sb3I6IHRoaXMuY29sb3JUZXh0LFxuICAgICAgICB3aWR0aDogdGhpcy5mdWxsV2lkdGggPyBcImNhbGMoMTAwJSAtIDE0cHgpXCIgOiBcIlwiLFxuICAgICAgICBtYXhXaWR0aDogdGhpcy5mdWxsV2lkdGggPyAnbm9uZScgOiBcIjM1MHB4XCJcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5tb3Zlck5vdGlzKCk7XG4gICAgfSwgMCk7XG4gICAgdGhpcy5jaGFuZ2VDb3JkcygpO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczIud2lkdGh4ID0gX3RoaXMyLiRyZWZzLm5vdGkuY2xpZW50V2lkdGg7XG4gICAgfSwgMCk7XG5cbiAgICBpZiAoIXRoaXMuZml4ZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIuY2xvc2VOb3RpKCk7XG4gICAgICB9LCB0aGlzLnRpbWUpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGNsaWNrTm90aTogZnVuY3Rpb24gY2xpY2tOb3RpKCkge1xuICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xpY2sgPyB0aGlzLmNsaWNrKCkgOiBudWxsO1xuICAgIH0sXG4gICAgYmVmb3JlRW50ZXI6IGZ1bmN0aW9uIGJlZm9yZUVudGVyKGVsKSB7XG4gICAgICBlbC5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICB9LFxuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihlbCwgZG9uZSkge1xuICAgICAgZWwuc3R5bGUub3BhY2l0eSA9IDE7XG4gICAgICBkb25lKCk7XG4gICAgfSxcbiAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoZWwsIGRvbmUpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICBlbC5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICAgIHZhciB0cmFuc2Zvcm14ID0gZWwuc3R5bGUudHJhbnNmb3JtO1xuXG4gICAgICBpZiAodGhpcy5jb3Jkcy5sZWZ0ID09ICc1MCUnIHx8IHRoaXMuZnVsbFdpZHRoKSB7XG4gICAgICAgIHRyYW5zZm9ybXggKz0gXCIgdHJhbnNsYXRlWShcIi5jb25jYXQodGhpcy5jb3Jkcy50b3AgPyAnLScgOiAnJywgXCIxMDAlKVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybXggKz0gXCIgdHJhbnNsYXRlWChcIi5jb25jYXQodGhpcy5jb3Jkcy5sZWZ0ID8gJy0nIDogJycsIFwiMTAwJSlcIik7XG4gICAgICB9XG5cbiAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybXg7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIF90aGlzMy5tb3Zlck5vdGlzKCk7XG4gICAgICB9LCAxNTApO1xuICAgIH0sXG4gICAgY2xvc2VOb3RpOiBmdW5jdGlvbiBjbG9zZU5vdGkoKSB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH0sXG4gICAgY2hhbmdlQ29yZHM6IGZ1bmN0aW9uIGNoYW5nZUNvcmRzKCkge1xuICAgICAgdmFyIHBvc2l0aW9ucyA9IHRoaXMucG9zaXRpb24uc3BsaXQoJy0nKTtcblxuICAgICAgdmFyIHNlYXJjaCA9IGZ1bmN0aW9uIHNlYXJjaCh0ZXh0KSB7XG4gICAgICAgIHJldHVybiBwb3NpdGlvbnMuaW5kZXhPZih0ZXh0KSAhPSAtMTtcbiAgICAgIH07XG5cbiAgICAgIGlmIChzZWFyY2goJ3RvcCcpKSB7XG4gICAgICAgIHRoaXMuY29yZHMudG9wID0gJzBweCc7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWFyY2goJ2JvdHRvbScpKSB7XG4gICAgICAgIHRoaXMuY29yZHMuYm90dG9tID0gJzBweCc7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWFyY2goJ3JpZ2h0JykpIHtcbiAgICAgICAgdGhpcy5jb3Jkcy5yaWdodCA9ICcwcHgnO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VhcmNoKCdsZWZ0JykpIHtcbiAgICAgICAgdGhpcy5jb3Jkcy5sZWZ0ID0gJzBweCc7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWFyY2goJ2NlbnRlcicpKSB7XG4gICAgICAgIHRoaXMuY29yZHMubGVmdCA9ICc1MCUnO1xuICAgICAgfVxuICAgIH0sXG4gICAgbW92ZXJOb3RpczogZnVuY3Rpb24gbW92ZXJOb3RpcygpIHtcbiAgICAgIHZhciBub3Rpc3ggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudnMtbm90aS0nICsgdGhpcy5wb3NpdGlvbik7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm90aXN4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBoeCA9IDEwO1xuXG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBpOyBpMisrKSB7XG4gICAgICAgICAgaHggKz0gbm90aXN4W2kyXS5jbGllbnRIZWlnaHQgKyA2O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24uc2VhcmNoKCdjZW50ZXInKSA9PSAtMSkge1xuICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uLnNlYXJjaCgndG9wJykgIT0gLTEpIHtcbiAgICAgICAgICAgIG5vdGlzeFtpXS5zdHlsZS50cmFuc2Zvcm0gPSBcInRyYW5zbGF0ZXkoXCIuY29uY2F0KGh4LCBcInB4KVwiKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucG9zaXRpb24uc2VhcmNoKCdib3R0b20nKSAhPSAtMSkge1xuICAgICAgICAgICAgbm90aXN4W2ldLnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRleSgtXCIuY29uY2F0KGh4LCBcInB4KVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbi5zZWFyY2goJ3RvcCcpICE9IC0xICYmIHRoaXMucG9zaXRpb24uc2VhcmNoKCdjZW50ZXInKSAhPSAtMSkge1xuICAgICAgICAgIG5vdGlzeFtpXS5zdHlsZS50cmFuc2Zvcm0gPSBcInRyYW5zbGF0ZSgtNTAlLFwiLmNvbmNhdChoeCwgXCJweClcIik7XG4gICAgICAgICAgbm90aXN4W2ldLnN0eWxlLnpJbmRleCA9IDEwMDAwIC0gaTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uLnNlYXJjaCgnYm90dG9tJykgIT0gLTEgJiYgdGhpcy5wb3NpdGlvbi5zZWFyY2goJ2NlbnRlcicpICE9IC0xKSB7XG4gICAgICAgICAgbm90aXN4W2ldLnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKC01MCUsLVwiLmNvbmNhdChoeCwgXCJweClcIik7XG4gICAgICAgICAgbm90aXN4W2ldLnN0eWxlLnpJbmRleCA9IDEwMDAwIC0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdnNOb3RpZmljYXRpb25zL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBmdW5jdGlvbnNfdnNOb3RpZmljYXRpb25zdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHZzTm90aWZpY2F0aW9uc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdnNOb3RpZmljYXRpb25zL2luZGV4LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHZzTm90aWZpY2F0aW9uc19jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIGZ1bmN0aW9uc192c05vdGlmaWNhdGlvbnN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHZzTm90aWZpY2F0aW9uc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzFlZDUyNGM2X2xhbmdfaHRtbF9yZW5kZXIsXG4gIHZzTm90aWZpY2F0aW9uc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzFlZDUyNGM2X2xhbmdfaHRtbF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG5cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNOb3RpZmljYXRpb25zID0gKHZzTm90aWZpY2F0aW9uc19jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdnNOb3RpZmljYXRpb25zL2luZGV4LmpzXG5cblxuXG5cblxuXG5cbnZhciBOb3RpQ29uc3RydWN0b3IgPSBleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9kZWZhdWx0LmEuZXh0ZW5kKHZzTm90aWZpY2F0aW9ucyk7XG52YXIgdnNOb3RpZmljYXRpb25zX2luc3RhbmNlO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZnVuY3Rpb25zX3ZzTm90aWZpY2F0aW9ucyA9ICh7XG4gIG5hbWU6ICdub3RpZnknLFxuICB2c2Z1bmN0aW9uOiBmdW5jdGlvbiB2c2Z1bmN0aW9uKHBhcmFtZXRlcnMpIHtcbiAgICBpZiAocGFyYW1ldGVycy5mdWxsV2lkdGgpIHtcbiAgICAgIGlmIChwYXJhbWV0ZXJzLnBvc2l0aW9uKSB7XG4gICAgICAgIHBhcmFtZXRlcnMucG9zaXRpb24gPSBwYXJhbWV0ZXJzLnBvc2l0aW9uLnJlcGxhY2UoJ3JpZ2h0JywgJ2xlZnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2c05vdGlmaWNhdGlvbnNfaW5zdGFuY2UgPSBuZXcgTm90aUNvbnN0cnVjdG9yKHtcbiAgICAgIGRhdGE6IHBhcmFtZXRlcnNcbiAgICB9KTtcbiAgICB2c05vdGlmaWNhdGlvbnNfaW5zdGFuY2Uudm0gPSB2c05vdGlmaWNhdGlvbnNfaW5zdGFuY2UuJG1vdW50KCk7XG4gICAgcGFyYW1ldGVycy5jbGljayA/IHZzTm90aWZpY2F0aW9uc19pbnN0YW5jZS52bS4kb24oJ2NsaWNrJywgcGFyYW1ldGVycy5jbGljaykgOiBudWxsO1xuICAgIHV0aWxzLmluc2VydEJvZHkodnNOb3RpZmljYXRpb25zX2luc3RhbmNlLnZtLiRlbCk7XG4gIH1cbn0pO1xuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZnJvbS5qc1xudmFyIGVzX2FycmF5X2Zyb20gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODBjMVwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBDOi9Vc2Vycy9Vc3VhcmlvL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UtZ2xvYmFsL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzXG52YXIgZXNfc3RyaW5nX2l0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjIxMzZcIik7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz97XCJjYWNoZURpcmVjdG9yeVwiOlwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXCIsXCJjYWNoZUlkZW50aWZpZXJcIjpcIjU2ZjljZjczLXZ1ZS1sb2FkZXItdGVtcGxhdGVcIn0hQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9mdW5jdGlvbnMvdnNMb2FkaW5nL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YmEwZTVmZSZcbnZhciB2c0xvYWRpbmd2dWVfdHlwZV90ZW1wbGF0ZV9pZF81YmEwZTVmZV9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCd0cmFuc2l0aW9uJyx7YXR0cnM6e1wibmFtZVwiOlwiZmFkZVwifX0sWyhfdm0uYWN0aXZlKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb24tdnMtbG9hZGluZ1wiLGNsYXNzOlsoXCJ2cy1sb2FkaW5nLWJhY2tncm91bmQtXCIgKyBfdm0uYmFja2dyb3VuZCksKFwidnMtbG9hZGluZy1jb2xvci1cIiArIF92bS5jb2xvcikseyd0ZXh0QWZ0ZXInOl92bS50ZXh0QWZ0ZXJ9XSxzdHlsZTooX3ZtLnN0eWxlKSxvbjp7XCJjbGlja1wiOl92bS5lZmZlY3RDbGlja319LFtfYygndHJhbnNpdGlvbicse2F0dHJzOntcIm5hbWVcIjpcImVmZmVjdC1jbGlja1wifX0sWyhfdm0uYWN0aXZlRWZmZWN0Q2xpY2smJl92bS5jbGlja0VmZmVjdCk/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiZWZmZWN0LWNsaWNrXCIsc3R5bGU6KF92bS5zdHlsZUVmZmVjdENsaWNrKX0pOl92bS5fZSgpXSksKF92bS50ZXh0KT9fYygnaDQnLHtzdGF0aWNDbGFzczpcInRpdGxlLWxvYWRpbmdcIn0sW192bS5fdihfdm0uX3MoX3ZtLnRleHQpKV0pOl92bS5fZSgpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInZzLWxvYWRpbmdcIixjbGFzczpbX3ZtLnR5cGVdLHN0eWxlOih7XG4gICAgICAgIHRyYW5zZm9ybTooXCJzY2FsZShcIiArIF92bS5zY2FsZSArIFwiKVwiKVxuICAgICAgfSl9LFsoX3ZtLnR5cGUhPSdtYXRlcmlhbCcpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImVmZmVjdC0xIGVmZmVjdHNcIixzdHlsZTooX3ZtLnN0eWxlRWZmZWN0MSl9KTpfdm0uX2UoKSwoX3ZtLnR5cGUhPSdtYXRlcmlhbCcpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImVmZmVjdC0yIGVmZmVjdHNcIixzdHlsZTooX3ZtLnN0eWxlRWZmZWN0Mil9KTpfdm0uX2UoKSwoX3ZtLnR5cGUhPSdtYXRlcmlhbCcpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImVmZmVjdC0zIGVmZmVjdHNcIixzdHlsZTooX3ZtLnN0eWxlRWZmZWN0Myl9KTpfdm0uX2UoKSxfYygnaW1nJyx7YXR0cnM6e1wic3JjXCI6X3ZtLnNyY319KSwoX3ZtLnR5cGU9PSdtYXRlcmlhbCcpP19jKCdzdmcnLHtzdGF0aWNDbGFzczpcInNwaW5uZXJcIixhdHRyczp7XCJ3aWR0aFwiOlwiNTBweFwiLFwiaGVpZ2h0XCI6XCI1MHB4XCIsXCJ2aWV3Qm94XCI6XCIwIDAgNjYgNjZcIixcInhtbG5zXCI6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifX0sW19jKCdjaXJjbGUnLHtzdGF0aWNDbGFzczpcInBhdGhcIixhdHRyczp7XCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2Utd2lkdGhcIjpcIjVcIixcInN0cm9rZS1saW5lY2FwXCI6XCJyb3VuZFwiLFwiY3hcIjpcIjMzXCIsXCJjeVwiOlwiMzNcIixcInJcIjpcIjMwXCJ9fSldKTpfdm0uX2UoKV0pXSwxKTpfdm0uX2UoKV0pfVxudmFyIHZzTG9hZGluZ3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzViYTBlNWZlX3N0YXRpY1JlbmRlckZucyA9IFtdXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3ZzTG9hZGluZy9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWJhMGU1ZmUmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYj8/cmVmLS0xMi0xIUM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhQzovVXNlcnMvVXN1YXJpby9BcHBEYXRhL1JvYW1pbmcvbnBtL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlLWdsb2JhbC9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3NyYy9mdW5jdGlvbnMvdnNMb2FkaW5nL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnNMb2FkaW5ndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgIHR5cGU6ICdkZWZhdWx0JyxcbiAgICAgIGNvbG9yOiBudWxsLFxuICAgICAgYmFja2dyb3VuZDogJ3JnYmEoMjU1LDI1NSwyNTUsLjYpJyxcbiAgICAgIHNyYzogJycsXG4gICAgICBsZWZ0eDogMCxcbiAgICAgIHRvcHg6IDAsXG4gICAgICBjbGlja0VmZmVjdDogZmFsc2UsXG4gICAgICBhY3RpdmVFZmZlY3RDbGljazogZmFsc2UsXG4gICAgICBzY2FsZTogMSxcbiAgICAgIHRleHRBZnRlcjogZmFsc2UsXG4gICAgICB0ZXh0OiBudWxsXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZUVmZmVjdENsaWNrOiBmdW5jdGlvbiBzdHlsZUVmZmVjdENsaWNrKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogXCJcIi5jb25jYXQodGhpcy5sZWZ0eCwgXCJweFwiKSxcbiAgICAgICAgdG9wOiBcIlwiLmNvbmNhdCh0aGlzLnRvcHgsIFwicHhcIilcbiAgICAgIH07XG4gICAgfSxcbiAgICBzdHlsZUVmZmVjdDE6IGZ1bmN0aW9uIHN0eWxlRWZmZWN0MSgpIHtcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgYm9yZGVyTGVmdDogXCIzcHggc29saWQgXCIuY29uY2F0KHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpKVxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnYm9yZGVyJykge1xuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICBib3JkZXJMZWZ0OiBcIjFweCBzb2xpZCBcIi5jb25jYXQodXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ3BvaW50Jykge1xuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAuNClcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAncmFkaXVzJykge1xuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICBib3JkZXI6IFwiM3B4IHNvbGlkIFwiLmNvbmNhdCh1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnY29ybmVycycpIHtcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgYm9yZGVyOiBcIjNweCBzb2xpZCBcIi5jb25jYXQodXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ3NvdW5kJykge1xuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfSxcbiAgICBzdHlsZUVmZmVjdDI6IGZ1bmN0aW9uIHN0eWxlRWZmZWN0MigpIHtcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgYm9yZGVyTGVmdDogXCIzcHggc29saWQgXCIuY29uY2F0KHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpKVxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnYm9yZGVyJykge1xuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICBib3JkZXJMZWZ0OiBcIjFweCBzb2xpZCBcIi5jb25jYXQodXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ3BvaW50Jykge1xuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAuNClcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAncmFkaXVzJykge1xuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICBib3JkZXI6IFwiM3B4IHNvbGlkIFwiLmNvbmNhdCh1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnY29ybmVycycpIHtcbiAgICAgICAgc3R5bGUgPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnc291bmQnKSB7XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9LFxuICAgIHN0eWxlRWZmZWN0MzogZnVuY3Rpb24gc3R5bGVFZmZlY3QzKCkge1xuICAgICAgdmFyIHN0eWxlID0ge1xuICAgICAgICBib3JkZXJMZWZ0OiBcIjNweCBzb2xpZCBcIi5jb25jYXQodXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSkpXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy50eXBlID09ICdib3JkZXInKSB7XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIGJvcmRlckxlZnQ6IFwiMXB4IHNvbGlkIFwiLmNvbmNhdCh1dGlsc19jb2xvci5nZXRDb2xvcih0aGlzLmNvbG9yLCAxKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAncG9pbnQnKSB7XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIC40KVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50eXBlID09ICdyYWRpdXMnKSB7XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIGJvcmRlcjogXCIzcHggc29saWQgXCIuY29uY2F0KHV0aWxzX2NvbG9yLmdldENvbG9yKHRoaXMuY29sb3IsIDEpKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50eXBlID09ICdjb3JuZXJzJykge1xuICAgICAgICBzdHlsZSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50eXBlID09ICdzb3VuZCcpIHtcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5jb2xvciwgMSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH0sXG4gICAgc3R5bGU6IGZ1bmN0aW9uIHN0eWxlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXRpbHNfY29sb3IuZ2V0Q29sb3IodGhpcy5iYWNrZ3JvdW5kLCAxKVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZWZmZWN0Q2xpY2s6IGZ1bmN0aW9uIGVmZmVjdENsaWNrKGV2dCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdGhpcy5sZWZ0eCA9IGV2dC5vZmZzZXRYO1xuICAgICAgdGhpcy50b3B4ID0gZXZ0Lm9mZnNldFk7XG4gICAgICB0aGlzLmFjdGl2ZUVmZmVjdENsaWNrID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5hY3RpdmVFZmZlY3RDbGljayA9IGZhbHNlO1xuICAgICAgfSwgNTApO1xuICAgIH0sXG4gICAgY2xvc2U6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3ZzTG9hZGluZy9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZnVuY3Rpb25zX3ZzTG9hZGluZ3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh2c0xvYWRpbmd2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3ZzTG9hZGluZy9pbmRleC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB2c0xvYWRpbmdfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBmdW5jdGlvbnNfdnNMb2FkaW5ndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB2c0xvYWRpbmd2dWVfdHlwZV90ZW1wbGF0ZV9pZF81YmEwZTVmZV9yZW5kZXIsXG4gIHZzTG9hZGluZ3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzViYTBlNWZlX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcblxuKVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB2c0xvYWRpbmcgPSAodnNMb2FkaW5nX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy92c0xvYWRpbmcvaW5kZXguanNcblxuXG5cblxuXG5cblxuXG5cblxudmFyIGxvYWRpbmdDb25zdHJ1Y3RvciA9IGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX2RlZmF1bHQuYS5leHRlbmQodnNMb2FkaW5nKTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGZ1bmN0aW9uc192c0xvYWRpbmcgPSAoe1xuICBuYW1lOiAnbG9hZGluZycsXG4gIHZzZnVuY3Rpb246IGZ1bmN0aW9uIHZzZnVuY3Rpb24ocGFyYW1ldGVycykge1xuICAgIHZhciBpbnN0YW5jZSA9IG5ldyBsb2FkaW5nQ29uc3RydWN0b3IoKTtcbiAgICB2YXIgY29udGFpbmVyeCA9IGRvY3VtZW50LmJvZHk7XG5cbiAgICBpZiAocGFyYW1ldGVycykge1xuICAgICAgaW5zdGFuY2UuJGRhdGEudHlwZSA9IHBhcmFtZXRlcnMudHlwZSB8fCAnZGVmYXVsdCc7XG4gICAgICBpbnN0YW5jZS4kZGF0YS5iYWNrZ3JvdW5kID0gcGFyYW1ldGVycy5iYWNrZ3JvdW5kO1xuICAgICAgaW5zdGFuY2UuJGRhdGEuY29sb3IgPSBwYXJhbWV0ZXJzLmNvbG9yO1xuICAgICAgaW5zdGFuY2UuJGRhdGEuc2NhbGUgPSBwYXJhbWV0ZXJzLnNjYWxlO1xuICAgICAgaW5zdGFuY2UuJGRhdGEudGV4dCA9IHBhcmFtZXRlcnMudGV4dDtcbiAgICAgIGluc3RhbmNlLiRkYXRhLmNsaWNrRWZmZWN0ID0gcGFyYW1ldGVycy5jbGlja0VmZmVjdDtcblxuICAgICAgaWYgKHBhcmFtZXRlcnMuY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lcnggPSBwYXJhbWV0ZXJzLmNvbnRhaW5lciBpbnN0YW5jZW9mIEVsZW1lbnQgPyBwYXJhbWV0ZXJzLmNvbnRhaW5lciA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocGFyYW1ldGVycy5jb250YWluZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluc3RhbmNlLnZtID0gaW5zdGFuY2UuJG1vdW50KCk7XG4gICAgY29udGFpbmVyeC5pbnNlcnRCZWZvcmUoaW5zdGFuY2Uudm0uJGVsLCBjb250YWluZXJ4LmZpcnN0Q2hpbGQpO1xuICB9LFxuICBjbG9zZTogZnVuY3Rpb24gY2xvc2UoZWx4KSB7XG4gICAgdmFyIGxvYWRpbmdzO1xuXG4gICAgaWYgKGVseCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgIC8vIE1pbWlja2luZyB0aGUgYmVoYXZpb3Igb2YgZG9pbmcgYGVseC5xdWVyeVNlbGVjdG9yQWxsKCc+IGNvbi12cy1sb2FkaW5nJylgIGJ1dCBgPmAgaXMgbm90IHdlbGwgc3VwcG9ydGVkLlxuICAgICAgLy8gV2UgYXJlIGRvaW5nIHRoaXMgYmVjYXVzZSB3ZSBjYW4gb25seSBhZGQgdGhlIHJlc3BlY3RpdmUgY2xhc3NlcyB0byAuY29uLXZzLWxvYWRpbmdcbiAgICAgIGxvYWRpbmdzID0gQXJyYXkuZnJvbShlbHguY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLmNsYXNzTGlzdC5jb250YWlucygnY29uLXZzLWxvYWRpbmcnKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkaW5ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZWx4IHx8ICdib2R5ID4gLmNvbi12cy1sb2FkaW5nJyk7XG4gICAgfVxuXG4gICAgbG9hZGluZ3MuZm9yRWFjaChmdW5jdGlvbiAobG9hZGluZykge1xuICAgICAgbG9hZGluZy5jbGFzc0xpc3QuYWRkKCdiZWZvcmVSZW1vdmUnKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBsb2FkaW5nLnJlbW92ZSgpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9KTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdnNEaWFsb2cvaW5kZXguanNcblxuXG5cbnZhciBkaWFsb2dDb25zdHJ1Y3RvciA9IGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX2RlZmF1bHQuYS5leHRlbmQodnNEaWFsb2cpO1xudmFyIHZzRGlhbG9nX2luc3RhbmNlO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZnVuY3Rpb25zX3ZzRGlhbG9nID0gKHtcbiAgbmFtZTogJ2RpYWxvZycsXG4gIHZzZnVuY3Rpb246IGZ1bmN0aW9uIHZzZnVuY3Rpb24ocHJvcHMpIHtcbiAgICB2c0RpYWxvZ19pbnN0YW5jZSA9IG5ldyBkaWFsb2dDb25zdHJ1Y3RvcigpO1xuICAgIHZzRGlhbG9nX2luc3RhbmNlLiRwcm9wcy50ZXh0ID0gcHJvcHMudGV4dDtcbiAgICB2c0RpYWxvZ19pbnN0YW5jZS4kcHJvcHMudGl0bGUgPSBwcm9wcy50aXRsZSB8fCAnRGlhbG9nJztcbiAgICB2c0RpYWxvZ19pbnN0YW5jZS4kcHJvcHMuY29sb3IgPSBwcm9wcy5jb2xvcjtcbiAgICB2c0RpYWxvZ19pbnN0YW5jZS4kcHJvcHMudHlwZSA9IHByb3BzLnR5cGUgfHwgJ2FsZXJ0JztcbiAgICB2c0RpYWxvZ19pbnN0YW5jZS4kcHJvcHMuYnV0dG9uQWNjZXB0ID0gcHJvcHMuYnV0dG9uQWNjZXB0IHx8ICdmaWxsZWQnO1xuICAgIHZzRGlhbG9nX2luc3RhbmNlLiRwcm9wcy5idXR0b25DYW5jZWwgPSBwcm9wcy5idXR0b25DYW5jZWwgfHwgJ2ZsYXQnO1xuICAgIHZzRGlhbG9nX2luc3RhbmNlLiRwcm9wcy5hY2NlcHRUZXh0ID0gcHJvcHMuYWNjZXB0VGV4dCB8fCAnQWNjZXB0JztcbiAgICB2c0RpYWxvZ19pbnN0YW5jZS4kcHJvcHMuY2FuY2VsVGV4dCA9IHByb3BzLmNhbmNlbFRleHQgfHwgJ0NhbmNlbCc7XG4gICAgdnNEaWFsb2dfaW5zdGFuY2UuJHByb3BzLmNsb3NlSWNvbiA9IHByb3BzLmNsb3NlSWNvbiB8fCAnY2xvc2UnO1xuICAgIHZzRGlhbG9nX2luc3RhbmNlLiRwcm9wcy5pY29uUGFjayA9IHByb3BzLmljb25QYWNrIHx8ICdtYXRlcmlhbC1pY29ucyc7XG4gICAgdnNEaWFsb2dfaW5zdGFuY2UuJHByb3BzLmlzVmFsaWQgPSBwcm9wcy5pc1ZhbGlkIHx8ICdub25lJztcbiAgICB2c0RpYWxvZ19pbnN0YW5jZS4kZGF0YS5pc1Byb21wdCA9IGZhbHNlO1xuICAgIHZzRGlhbG9nX2luc3RhbmNlLnZtID0gdnNEaWFsb2dfaW5zdGFuY2UuJG1vdW50KCk7XG4gICAgcHJvcHMuYWNjZXB0ID8gdnNEaWFsb2dfaW5zdGFuY2Uudm0uJG9uKCdhY2NlcHQnLCBwcm9wcy5hY2NlcHQpIDogbnVsbDtcbiAgICBwcm9wcy5jYW5jZWwgPyB2c0RpYWxvZ19pbnN0YW5jZS52bS4kb24oJ2NhbmNlbCcsIHByb3BzLmNhbmNlbCkgOiBudWxsO1xuICAgIHV0aWxzLmluc2VydEJvZHkodnNEaWFsb2dfaW5zdGFuY2Uudm0uJGVsLCBwcm9wcy5wYXJlbnQpO1xuICAgIGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX2RlZmF1bHQuYS5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICB2c0RpYWxvZ19pbnN0YW5jZS4kZGF0YS5mQWN0aXZlID0gdHJ1ZTtcbiAgICAgIHZzRGlhbG9nX2luc3RhbmNlLiRkYXRhLnBhcmFtZXRlcnMgPSBwcm9wcy5wYXJhbWV0ZXJzO1xuICAgIH0pO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9pbmRleC5qc1xuXG5cblxuXG5cblxuLy8gRnVuY3Rpb25zXG5cblxuIC8vdGhlbWVcblxuXG52YXIgdnNGdW5jdGlvbnMgPSB7XG4gIHZzTm90aWZpY2F0aW9uczogZnVuY3Rpb25zX3ZzTm90aWZpY2F0aW9ucyxcbiAgdnNMb2FkaW5nOiBmdW5jdGlvbnNfdnNMb2FkaW5nLFxuICB2c1RoZW1lOiB0aGVtZSxcbiAgdnNEaWFsb2c6IGZ1bmN0aW9uc192c0RpYWxvZ1xufTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGZ1bmN0aW9ucyA9IChmdW5jdGlvbiAodm0pIHtcbiAgT2JqZWN0LnZhbHVlcyh2c0Z1bmN0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAodnNGdW5jdGlvbnMpIHtcbiAgICBpZiAodnNGdW5jdGlvbnMuaGFzT3duUHJvcGVydHkoJ3N1Yk5hbWUnKSkge1xuICAgICAgdm0uJHZzW3ZzRnVuY3Rpb25zLm5hbWVdW3ZzRnVuY3Rpb25zLnN1Yk5hbWVdID0gdnNGdW5jdGlvbnMudnNmdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uJHZzW3ZzRnVuY3Rpb25zLm5hbWVdID0gdnNGdW5jdGlvbnMudnNmdW5jdGlvbjtcbiAgICB9XG4gIH0pO1xuICB2bS4kdnMubG9hZGluZy5jbG9zZSA9IGZ1bmN0aW9uc192c0xvYWRpbmcuY2xvc2U7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RlZmluZUdsb2JhbE1peGluLmpzXG5cblxuLyoqXG4gKiBWdWVzYXggZ2xvYmFsIG1peGluLCBhbGwgdnVlYXN4IGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBpbmplY3RlZFxuICogaW4gdGhlIEBiZWZvcmVDcmVhdGUgaG9vay5cbiAqL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkZWZpbmVHbG9iYWxNaXhpbiA9IChmdW5jdGlvbiAoVnVlLCBvcHRpb25zKSB7XG4gIFZ1ZS5taXhpbih7XG4gICAgd2F0Y2g6IHtcbiAgICAgICckdnMucnRsJzoge1xuICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHZhbCkge1xuICAgICAgICAgIGluamVjdERpcmVjdGlvbkNsYXNzKHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gYmVmb3JlQ3JlYXRlKCkge1xuICAgICAgLy8gY3JlYXRlICR2cyBwcm9wZXJ0eSBpZiBub3QgZXhpc3RcbiAgICAgIGlmICghdGhpcy4kdnMpIHtcbiAgICAgICAgLy8gZGVmaW5lICR2cyByZWFjdGl2ZSBwcm9wZXJ0aWVzXG4gICAgICAgIHRoaXMuJHZzID0gVnVlLm9ic2VydmFibGUob3B0aW9ucyk7IC8vIGRlZmluZSAkdnMgZnVuY3Rpb25zXG5cbiAgICAgICAgZnVuY3Rpb25zKHRoaXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICAgIC8vIGluamVjdCB0aGUgZGlyZWN0aW9uIGNsYXNzIGZvciB0aGUgaW5pdGlhbCBvcHRpb25zXG4gICAgICBpbmplY3REaXJlY3Rpb25DbGFzcyh0aGlzLiR2cy5ydGwpO1xuICAgIH1cbiAgfSk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3V0aWxzL29wdGlvbnMuanNcbi8qKlxuICogQWxsIHZ1ZXNheCBmcmFtZXdvcmsgb3B0aW9ucyBsaXN0ZWQgaGVyZVxuICogYWxsIG9wdGlvbnMgbGlzdGVkIGhlcmUgYXJlIHJlYWN0aXZlXG4gKi9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHV0aWxzX29wdGlvbnMgPSAoe1xuICBydGw6IGZhbHNlXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2luZGV4LmpzXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciBzcmNfaW5zdGFsbCA9IGZ1bmN0aW9uIGluc3RhbGwoVnVlKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zXG4gIGZvciAodmFyIHByb3AgaW4gdXRpbHNfb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9uc1twcm9wXSkge1xuICAgICAgb3B0aW9uc1twcm9wXSA9IHV0aWxzX29wdGlvbnNbcHJvcF07XG4gICAgfVxuICB9IC8vIFVzZSBDb21wb25lbnRzXG5cblxuICBPYmplY3QudmFsdWVzKGNvbXBvbmVudHNfbmFtZXNwYWNlT2JqZWN0KS5mb3JFYWNoKGZ1bmN0aW9uICh2c0NvbXBvbmVudCkge1xuICAgIFZ1ZS51c2UodnNDb21wb25lbnQpO1xuICB9KTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmhhc093blByb3BlcnR5KCd0aGVtZScpKSB7XG4gICAgICBpZiAob3B0aW9ucy50aGVtZS5oYXNPd25Qcm9wZXJ0eSgnY29sb3JzJykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdGhlbWUudnNmdW5jdGlvbihvcHRpb25zLnRoZW1lLmNvbG9ycywgb3B0aW9ucy5zZXJ2ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IC8vIERlZmluZSB2dWVzYXggZnVuY3Rpb25zIGFuZCBwcm9wZXJ0aWVzICgkdnMpXG5cblxuICBkZWZpbmVHbG9iYWxNaXhpbihWdWUsIG9wdGlvbnMpO1xufTtcblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WdWUpIHtcbiAgc3JjX2luc3RhbGwod2luZG93LlZ1ZSk7XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyYyA9IChzcmNfaW5zdGFsbCk7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gLy9OZXcgQ29tcG9uZW50IGltcG9ydFxuLy9sYXlvdXRcblxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IEM6L1VzZXJzL1VzdWFyaW8vQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS1nbG9iYWwvbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UvbGliL2NvbW1hbmRzL2J1aWxkL2VudHJ5LWxpYi5qc1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c0J1dHRvbiAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzQnV0dG9uXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0J1dHRvbjsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzU2VsZWN0ICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNTZWxlY3RcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzU2VsZWN0OyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNTd2l0Y2ggKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c1N3aXRjaFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNTd2l0Y2g7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c0NoZWNrYm94ICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNDaGVja2JveFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNDaGVja0JveDsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzUmFkaW8gKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c1JhZGlvXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c1JhZGlvOyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNJbnB1dCAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzSW5wdXRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzSW5wdXQ7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c1RhYnMgKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c1RhYnNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzVGFiczsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzU2xpZGVyICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNTbGlkZXJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzU2xpZGVyOyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNJbnB1dE51bWJlciAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzSW5wdXROdW1iZXJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzSW5wdXROdW1iZXI7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c1Rvb2x0aXAgKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c1Rvb2x0aXBcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzVG9vbHRpcDsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzVXBsb2FkICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNVcGxvYWRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzVXBsb2FkOyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNQb3B1cCAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzUG9wdXBcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzUG9wdXA7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c0FsZXJ0ICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNBbGVydFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNBbGVydDsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzQ2hpcCAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzQ2hpcFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNDaGlwOyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNQcm9ncmVzcyAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzUHJvZ3Jlc3NcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzUHJvZ3Jlc3M7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c0NhcmQgKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c0NhcmRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzQ2FyZDsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzTGlzdCAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzTGlzdFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNMaXN0OyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNBdmF0YXIgKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c0F2YXRhclwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNBdmF0YXI7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c1BhZ2luYXRpb24gKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c1BhZ2luYXRpb25cIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzUGFnaW5hdGlvbjsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzQnJlYWRjcnVtYiAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzQnJlYWRjcnVtYlwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNCcmVhZGNydW1iOyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNQcm9tcHQgKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c1Byb21wdFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHZzUHJvbXB0OyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNEaXZpZGVyICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNEaXZpZGVyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c0RpdmlkZXI7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c1NwYWNlciAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzU3BhY2VyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c1NwYWNlcjsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzSWNvbiAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzSWNvblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNJY29uOyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNOYXZiYXIgKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c05hdmJhclwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNOYXZiYXI7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c1NpZGVCYXIgKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c1NpZGVCYXJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiB2c1NpZGVCYXI7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c0Ryb3BEb3duICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNEcm9wRG93blwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNEcm9wRG93bjsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzVGFibGUgKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c1RhYmxlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcG9uZW50c192c1RhYmxlOyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNUZXh0YXJlYSAqL19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZzVGV4dGFyZWFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzVGV4dGFyZWE7IH0pO1xuLyogY29uY2F0ZWQgaGFybW9ueSByZWV4cG9ydCB2c0NvbGxhcHNlICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNDb2xsYXBzZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBvbmVudHNfdnNDb2xsYXBzZTsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzSW1hZ2VzICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNJbWFnZXNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21wb25lbnRzX3ZzSW1hZ2VzOyB9KTtcbi8qIGNvbmNhdGVkIGhhcm1vbnkgcmVleHBvcnQgdnNSb3cgKi9fX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2c1Jvd1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGxheW91dF92c1JvdzsgfSk7XG4vKiBjb25jYXRlZCBoYXJtb255IHJlZXhwb3J0IHZzQ29sICovX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidnNDb2xcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBsYXlvdXRfdnNDb2w7IH0pO1xuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGVudHJ5X2xpYiA9IF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKHNyYyk7XG5cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIzOTM0XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzdlMVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIGFyZ3VtZW50KSB7XG4gIHZhciBtZXRob2QgPSBbXVtNRVRIT0RfTkFNRV07XG4gIHJldHVybiAhbWV0aG9kIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbCxuby10aHJvdy1saXRlcmFsXG4gICAgbWV0aG9kLmNhbGwobnVsbCwgYXJndW1lbnQgfHwgZnVuY3Rpb24gKCkgeyB0aHJvdyAxOyB9LCAxKTtcbiAgfSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjNlMjJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiM2ViMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODYxZlwiKTtcbnZhciBjcmVhdGVIVE1MID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImNmMzBcIik7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4Y2Y2XCIpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5maXhlZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmZpeGVkXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnZml4ZWQnKSB9LCB7XG4gIGZpeGVkOiBmdW5jdGlvbiBmaXhlZCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAndHQnLCAnJywgJycpO1xuICB9XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI0NjY1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3MDE5XCIpO1xudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkMjJlXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQxN2RcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjhkMVwiKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzI2ZlwiKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NGI4XCIpO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYWYzZFwiKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFGRkZGRkZGRkZGRkZGO1xudmFyIE1BWElNVU1fQUxMT1dFRF9MRU5HVEhfRVhDRUVERUQgPSAnTWF4aW11bSBhbGxvd2VkIGxlbmd0aCBleGNlZWRlZCc7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuc3BsaWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zcGxpY2Vcbi8vIHdpdGggYWRkaW5nIHN1cHBvcnQgb2YgQEBzcGVjaWVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnc3BsaWNlJykgfSwge1xuICBzcGxpY2U6IGZ1bmN0aW9uIHNwbGljZShzdGFydCwgZGVsZXRlQ291bnQgLyogLCAuLi5pdGVtcyAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgYWN0dWFsU3RhcnQgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbik7XG4gICAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGluc2VydENvdW50LCBhY3R1YWxEZWxldGVDb3VudCwgQSwgaywgZnJvbSwgdG87XG4gICAgaWYgKGFyZ3VtZW50c0xlbmd0aCA9PT0gMCkge1xuICAgICAgaW5zZXJ0Q291bnQgPSBhY3R1YWxEZWxldGVDb3VudCA9IDA7XG4gICAgfSBlbHNlIGlmIChhcmd1bWVudHNMZW5ndGggPT09IDEpIHtcbiAgICAgIGluc2VydENvdW50ID0gMDtcbiAgICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gbGVuIC0gYWN0dWFsU3RhcnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc2VydENvdW50ID0gYXJndW1lbnRzTGVuZ3RoIC0gMjtcbiAgICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gbWluKG1heCh0b0ludGVnZXIoZGVsZXRlQ291bnQpLCAwKSwgbGVuIC0gYWN0dWFsU3RhcnQpO1xuICAgIH1cbiAgICBpZiAobGVuICsgaW5zZXJ0Q291bnQgLSBhY3R1YWxEZWxldGVDb3VudCA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcihNQVhJTVVNX0FMTE9XRURfTEVOR1RIX0VYQ0VFREVEKTtcbiAgICB9XG4gICAgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCBhY3R1YWxEZWxldGVDb3VudCk7XG4gICAgZm9yIChrID0gMDsgayA8IGFjdHVhbERlbGV0ZUNvdW50OyBrKyspIHtcbiAgICAgIGZyb20gPSBhY3R1YWxTdGFydCArIGs7XG4gICAgICBpZiAoZnJvbSBpbiBPKSBjcmVhdGVQcm9wZXJ0eShBLCBrLCBPW2Zyb21dKTtcbiAgICB9XG4gICAgQS5sZW5ndGggPSBhY3R1YWxEZWxldGVDb3VudDtcbiAgICBpZiAoaW5zZXJ0Q291bnQgPCBhY3R1YWxEZWxldGVDb3VudCkge1xuICAgICAgZm9yIChrID0gYWN0dWFsU3RhcnQ7IGsgPCBsZW4gLSBhY3R1YWxEZWxldGVDb3VudDsgaysrKSB7XG4gICAgICAgIGZyb20gPSBrICsgYWN0dWFsRGVsZXRlQ291bnQ7XG4gICAgICAgIHRvID0gayArIGluc2VydENvdW50O1xuICAgICAgICBpZiAoZnJvbSBpbiBPKSBPW3RvXSA9IE9bZnJvbV07XG4gICAgICAgIGVsc2UgZGVsZXRlIE9bdG9dO1xuICAgICAgfVxuICAgICAgZm9yIChrID0gbGVuOyBrID4gbGVuIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpbnNlcnRDb3VudDsgay0tKSBkZWxldGUgT1trIC0gMV07XG4gICAgfSBlbHNlIGlmIChpbnNlcnRDb3VudCA+IGFjdHVhbERlbGV0ZUNvdW50KSB7XG4gICAgICBmb3IgKGsgPSBsZW4gLSBhY3R1YWxEZWxldGVDb3VudDsgayA+IGFjdHVhbFN0YXJ0OyBrLS0pIHtcbiAgICAgICAgZnJvbSA9IGsgKyBhY3R1YWxEZWxldGVDb3VudCAtIDE7XG4gICAgICAgIHRvID0gayArIGluc2VydENvdW50IC0gMTtcbiAgICAgICAgaWYgKGZyb20gaW4gTykgT1t0b10gPSBPW2Zyb21dO1xuICAgICAgICBlbHNlIGRlbGV0ZSBPW3RvXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChrID0gMDsgayA8IGluc2VydENvdW50OyBrKyspIHtcbiAgICAgIE9bayArIGFjdHVhbFN0YXJ0XSA9IGFyZ3VtZW50c1trICsgMl07XG4gICAgfVxuICAgIE8ubGVuZ3RoID0gbGVuIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpbnNlcnRDb3VudDtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNGE3NFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImM3ZTFcIik7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ3MmNcIik7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImEzZmVcIikuZjtcbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhMWIxXCIpO1xuXG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKDEpOyB9KTtcbnZhciBGT1JDRUQgPSAhREVTQ1JJUFRPUlMgfHwgRkFJTFNfT05fUFJJTUlUSVZFUztcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VELCBzaGFtOiAhREVTQ1JJUFRPUlMgfSwge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcih0b0luZGV4ZWRPYmplY3QoaXQpLCBrZXkpO1xuICB9XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI0Yjc2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJlYTRcIik7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhZWU0XCIpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyOGQ1XCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE4NjVcIik7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjRjY2VcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjRlYzJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4MDM0XCIpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkNzJjXCIpO1xudmFyIGluZGV4T2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTcyNFwiKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODNmZFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhcyhoaWRkZW5LZXlzLCBrZXkpICYmIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI0ZmYxXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTNmN1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGdldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE1MzRcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImI0YmVcIik7XG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjgwMzRcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAwMGRcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0ZmYxXCIpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IGZhbHNlO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbi8vIGAlSXRlcmF0b3JQcm90b3R5cGUlYCBvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtb2JqZWN0XG52YXIgSXRlcmF0b3JQcm90b3R5cGUsIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSwgYXJyYXlJdGVyYXRvcjtcblxuaWYgKFtdLmtleXMpIHtcbiAgYXJyYXlJdGVyYXRvciA9IFtdLmtleXMoKTtcbiAgLy8gU2FmYXJpIDggaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gIGlmICghKCduZXh0JyBpbiBhcnJheUl0ZXJhdG9yKSkgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IHRydWU7XG4gIGVsc2Uge1xuICAgIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGdldFByb3RvdHlwZU9mKGFycmF5SXRlcmF0b3IpKTtcbiAgICBpZiAoUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSBJdGVyYXRvclByb3RvdHlwZSA9IFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxufVxuXG5pZiAoSXRlcmF0b3JQcm90b3R5cGUgPT0gdW5kZWZpbmVkKSBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxuaWYgKCFJU19QVVJFICYmICFoYXMoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SKSkge1xuICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEl0ZXJhdG9yUHJvdG90eXBlOiBJdGVyYXRvclByb3RvdHlwZSxcbiAgQlVHR1lfU0FGQVJJX0lURVJBVE9SUzogQlVHR1lfU0FGQVJJX0lURVJBVE9SU1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI1NGI4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmQ3YlwiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjlmXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4OGI1XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHByb3BlcnR5S2V5ID0gdG9QcmltaXRpdmUoa2V5KTtcbiAgaWYgKHByb3BlcnR5S2V5IGluIG9iamVjdCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIHByb3BlcnR5S2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbcHJvcGVydHlLZXldID0gdmFsdWU7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjU2NTBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2MWZcIik7XG52YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQyMmVcIik7XG52YXIgdGhpc051bWJlclZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE5MzBcIik7XG52YXIgcmVwZWF0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjY4YjZcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzdlMVwiKTtcblxudmFyIG5hdGl2ZVRvRml4ZWQgPSAxLjAudG9GaXhlZDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbnZhciBwb3cgPSBmdW5jdGlvbiAoeCwgbiwgYWNjKSB7XG4gIHJldHVybiBuID09PSAwID8gYWNjIDogbiAlIDIgPT09IDEgPyBwb3coeCwgbiAtIDEsIGFjYyAqIHgpIDogcG93KHggKiB4LCBuIC8gMiwgYWNjKTtcbn07XG5cbnZhciBsb2cgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbiA9IDA7XG4gIHZhciB4MiA9IHg7XG4gIHdoaWxlICh4MiA+PSA0MDk2KSB7XG4gICAgbiArPSAxMjtcbiAgICB4MiAvPSA0MDk2O1xuICB9XG4gIHdoaWxlICh4MiA+PSAyKSB7XG4gICAgbiArPSAxO1xuICAgIHgyIC89IDI7XG4gIH0gcmV0dXJuIG47XG59O1xuXG52YXIgRk9SQ0VEID0gbmF0aXZlVG9GaXhlZCAmJiAoXG4gIDAuMDAwMDgudG9GaXhlZCgzKSAhPT0gJzAuMDAwJyB8fFxuICAwLjkudG9GaXhlZCgwKSAhPT0gJzEnIHx8XG4gIDEuMjU1LnRvRml4ZWQoMikgIT09ICcxLjI1JyB8fFxuICAxMDAwMDAwMDAwMDAwMDAwMTI4LjAudG9GaXhlZCgwKSAhPT0gJzEwMDAwMDAwMDAwMDAwMDAxMjgnXG4pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIFY4IH4gQW5kcm9pZCA0LjMtXG4gIG5hdGl2ZVRvRml4ZWQuY2FsbCh7fSk7XG59KTtcblxuLy8gYE51bWJlci5wcm90b3R5cGUudG9GaXhlZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1udW1iZXIucHJvdG90eXBlLnRvZml4ZWRcbiQoeyB0YXJnZXQ6ICdOdW1iZXInLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHNcbiAgdG9GaXhlZDogZnVuY3Rpb24gdG9GaXhlZChmcmFjdGlvbkRpZ2l0cykge1xuICAgIHZhciBudW1iZXIgPSB0aGlzTnVtYmVyVmFsdWUodGhpcyk7XG4gICAgdmFyIGZyYWN0RGlnaXRzID0gdG9JbnRlZ2VyKGZyYWN0aW9uRGlnaXRzKTtcbiAgICB2YXIgZGF0YSA9IFswLCAwLCAwLCAwLCAwLCAwXTtcbiAgICB2YXIgc2lnbiA9ICcnO1xuICAgIHZhciByZXN1bHQgPSAnMCc7XG4gICAgdmFyIGUsIHosIGosIGs7XG5cbiAgICB2YXIgbXVsdGlwbHkgPSBmdW5jdGlvbiAobiwgYykge1xuICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICB2YXIgYzIgPSBjO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCA2KSB7XG4gICAgICAgIGMyICs9IG4gKiBkYXRhW2luZGV4XTtcbiAgICAgICAgZGF0YVtpbmRleF0gPSBjMiAlIDFlNztcbiAgICAgICAgYzIgPSBmbG9vcihjMiAvIDFlNyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBkaXZpZGUgPSBmdW5jdGlvbiAobikge1xuICAgICAgdmFyIGluZGV4ID0gNjtcbiAgICAgIHZhciBjID0gMDtcbiAgICAgIHdoaWxlICgtLWluZGV4ID49IDApIHtcbiAgICAgICAgYyArPSBkYXRhW2luZGV4XTtcbiAgICAgICAgZGF0YVtpbmRleF0gPSBmbG9vcihjIC8gbik7XG4gICAgICAgIGMgPSAoYyAlIG4pICogMWU3O1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgZGF0YVRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGluZGV4ID0gNjtcbiAgICAgIHZhciBzID0gJyc7XG4gICAgICB3aGlsZSAoLS1pbmRleCA+PSAwKSB7XG4gICAgICAgIGlmIChzICE9PSAnJyB8fCBpbmRleCA9PT0gMCB8fCBkYXRhW2luZGV4XSAhPT0gMCkge1xuICAgICAgICAgIHZhciB0ID0gU3RyaW5nKGRhdGFbaW5kZXhdKTtcbiAgICAgICAgICBzID0gcyA9PT0gJycgPyB0IDogcyArIHJlcGVhdC5jYWxsKCcwJywgNyAtIHQubGVuZ3RoKSArIHQ7XG4gICAgICAgIH1cbiAgICAgIH0gcmV0dXJuIHM7XG4gICAgfTtcblxuICAgIGlmIChmcmFjdERpZ2l0cyA8IDAgfHwgZnJhY3REaWdpdHMgPiAyMCkgdGhyb3cgUmFuZ2VFcnJvcignSW5jb3JyZWN0IGZyYWN0aW9uIGRpZ2l0cycpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAobnVtYmVyICE9IG51bWJlcikgcmV0dXJuICdOYU4nO1xuICAgIGlmIChudW1iZXIgPD0gLTFlMjEgfHwgbnVtYmVyID49IDFlMjEpIHJldHVybiBTdHJpbmcobnVtYmVyKTtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgc2lnbiA9ICctJztcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPiAxZS0yMSkge1xuICAgICAgZSA9IGxvZyhudW1iZXIgKiBwb3coMiwgNjksIDEpKSAtIDY5O1xuICAgICAgeiA9IGUgPCAwID8gbnVtYmVyICogcG93KDIsIC1lLCAxKSA6IG51bWJlciAvIHBvdygyLCBlLCAxKTtcbiAgICAgIHogKj0gMHgxMDAwMDAwMDAwMDAwMDtcbiAgICAgIGUgPSA1MiAtIGU7XG4gICAgICBpZiAoZSA+IDApIHtcbiAgICAgICAgbXVsdGlwbHkoMCwgeik7XG4gICAgICAgIGogPSBmcmFjdERpZ2l0cztcbiAgICAgICAgd2hpbGUgKGogPj0gNykge1xuICAgICAgICAgIG11bHRpcGx5KDFlNywgMCk7XG4gICAgICAgICAgaiAtPSA3O1xuICAgICAgICB9XG4gICAgICAgIG11bHRpcGx5KHBvdygxMCwgaiwgMSksIDApO1xuICAgICAgICBqID0gZSAtIDE7XG4gICAgICAgIHdoaWxlIChqID49IDIzKSB7XG4gICAgICAgICAgZGl2aWRlKDEgPDwgMjMpO1xuICAgICAgICAgIGogLT0gMjM7XG4gICAgICAgIH1cbiAgICAgICAgZGl2aWRlKDEgPDwgaik7XG4gICAgICAgIG11bHRpcGx5KDEsIDEpO1xuICAgICAgICBkaXZpZGUoMik7XG4gICAgICAgIHJlc3VsdCA9IGRhdGFUb1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXVsdGlwbHkoMCwgeik7XG4gICAgICAgIG11bHRpcGx5KDEgPDwgLWUsIDApO1xuICAgICAgICByZXN1bHQgPSBkYXRhVG9TdHJpbmcoKSArIHJlcGVhdC5jYWxsKCcwJywgZnJhY3REaWdpdHMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZnJhY3REaWdpdHMgPiAwKSB7XG4gICAgICBrID0gcmVzdWx0Lmxlbmd0aDtcbiAgICAgIHJlc3VsdCA9IHNpZ24gKyAoayA8PSBmcmFjdERpZ2l0c1xuICAgICAgICA/ICcwLicgKyByZXBlYXQuY2FsbCgnMCcsIGZyYWN0RGlnaXRzIC0gaykgKyByZXN1bHRcbiAgICAgICAgOiByZXN1bHQuc2xpY2UoMCwgayAtIGZyYWN0RGlnaXRzKSArICcuJyArIHJlc3VsdC5zbGljZShrIC0gZnJhY3REaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gc2lnbiArIHJlc3VsdDtcbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjU2YjZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkNjVhXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE4NjVcIik7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyZmUwXCIpO1xudmFyIHNhbWVWYWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkM2ZmXCIpO1xudmFyIHJlZ0V4cEV4ZWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODBlOVwiKTtcblxuLy8gQEBzZWFyY2ggbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdzZWFyY2gnLCAxLCBmdW5jdGlvbiAoU0VBUkNILCBuYXRpdmVTZWFyY2gsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnNlYXJjaGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zZWFyY2hcbiAgICBmdW5jdGlvbiBzZWFyY2gocmVnZXhwKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgc2VhcmNoZXIgPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmVnZXhwW1NFQVJDSF07XG4gICAgICByZXR1cm4gc2VhcmNoZXIgIT09IHVuZGVmaW5lZCA/IHNlYXJjaGVyLmNhbGwocmVnZXhwLCBPKSA6IG5ldyBSZWdFeHAocmVnZXhwKVtTRUFSQ0hdKFN0cmluZyhPKSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEBzZWFyY2hcbiAgICBmdW5jdGlvbiAocmVnZXhwKSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKG5hdGl2ZVNlYXJjaCwgcmVnZXhwLCB0aGlzKTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuXG4gICAgICB2YXIgcHJldmlvdXNMYXN0SW5kZXggPSByeC5sYXN0SW5kZXg7XG4gICAgICBpZiAoIXNhbWVWYWx1ZShwcmV2aW91c0xhc3RJbmRleCwgMCkpIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICBpZiAoIXNhbWVWYWx1ZShyeC5sYXN0SW5kZXgsIHByZXZpb3VzTGFzdEluZGV4KSkgcngubGFzdEluZGV4ID0gcHJldmlvdXNMYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSBudWxsID8gLTEgOiByZXN1bHQuaW5kZXg7XG4gICAgfVxuICBdO1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNTgxY1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdG9JbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ3MmNcIik7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhZWU0XCIpLmY7XG5cbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5TmFtZXMoaXQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuICB9XG59O1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XSdcbiAgICA/IGdldFdpbmRvd05hbWVzKGl0KVxuICAgIDogbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyh0b0luZGV4ZWRPYmplY3QoaXQpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNWE5M1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjUzZjdcIikuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ3MDlcIik7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg4YjVcIik7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzRkNlwiKTtcbnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMGQxOFwiKTtcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICBJdGVyYXRvckNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yQ29uc3RydWN0b3IsIFRPX1NUUklOR19UQUcsIGZhbHNlLCB0cnVlKTtcbiAgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgcmV0dXJuIEl0ZXJhdG9yQ29uc3RydWN0b3I7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjVhYzZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2MWZcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODgzYVwiKTtcbnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjljZTBcIik7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjcwMTlcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDE3ZFwiKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDcyY1wiKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NGI4XCIpO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYWYzZFwiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDAwZFwiKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcbnZhciBuYXRpdmVTbGljZSA9IFtdLnNsaWNlO1xudmFyIG1heCA9IE1hdGgubWF4O1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnNsaWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zbGljZVxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIEVTMyBzdHJpbmdzIGFuZCBET00gb2JqZWN0c1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIWFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ3NsaWNlJykgfSwge1xuICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGsgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbmd0aCk7XG4gICAgdmFyIGZpbiA9IHRvQWJzb2x1dGVJbmRleChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZCwgbGVuZ3RoKTtcbiAgICAvLyBpbmxpbmUgYEFycmF5U3BlY2llc0NyZWF0ZWAgZm9yIHVzYWdlIG5hdGl2ZSBgQXJyYXkjc2xpY2VgIHdoZXJlIGl0J3MgcG9zc2libGVcbiAgICB2YXIgQ29uc3RydWN0b3IsIHJlc3VsdCwgbjtcbiAgICBpZiAoaXNBcnJheShPKSkge1xuICAgICAgQ29uc3RydWN0b3IgPSBPLmNvbnN0cnVjdG9yO1xuICAgICAgLy8gY3Jvc3MtcmVhbG0gZmFsbGJhY2tcbiAgICAgIGlmICh0eXBlb2YgQ29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAoQ29uc3RydWN0b3IgPT09IEFycmF5IHx8IGlzQXJyYXkoQ29uc3RydWN0b3IucHJvdG90eXBlKSkpIHtcbiAgICAgICAgQ29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KENvbnN0cnVjdG9yKSkge1xuICAgICAgICBDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yW1NQRUNJRVNdO1xuICAgICAgICBpZiAoQ29uc3RydWN0b3IgPT09IG51bGwpIENvbnN0cnVjdG9yID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yID09PSBBcnJheSB8fCBDb25zdHJ1Y3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVTbGljZS5jYWxsKE8sIGssIGZpbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdCA9IG5ldyAoQ29uc3RydWN0b3IgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQ29uc3RydWN0b3IpKG1heChmaW4gLSBrLCAwKSk7XG4gICAgZm9yIChuID0gMDsgayA8IGZpbjsgaysrLCBuKyspIGlmIChrIGluIE8pIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgbiwgT1trXSk7XG4gICAgcmVzdWx0Lmxlbmd0aCA9IG47XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNWNkNFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjRlYzJcIik7XG52YXIgZW51bUJ1Z0tleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiM2UyMlwiKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNWZmN1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODYxZlwiKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjVhOTNcIik7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTUzNFwiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2NDc2XCIpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc0ZDZcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImI0YmVcIik7XG52YXIgcmVkZWZpbmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMzJjNlwiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDAwZFwiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjRmZjFcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjBkMThcIik7XG52YXIgSXRlcmF0b3JzQ29yZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1M2Y3XCIpO1xuXG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSBJdGVyYXRvcnNDb3JlLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBJdGVyYXRvcnNDb3JlLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlM7XG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcbnZhciBFTlRSSUVTID0gJ2VudHJpZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEl0ZXJhYmxlLCBOQU1FLCBJdGVyYXRvckNvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKEl0ZXJhdG9yQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXG4gIHZhciBnZXRJdGVyYXRpb25NZXRob2QgPSBmdW5jdGlvbiAoS0lORCkge1xuICAgIGlmIChLSU5EID09PSBERUZBVUxUICYmIGRlZmF1bHRJdGVyYXRvcikgcmV0dXJuIGRlZmF1bHRJdGVyYXRvcjtcbiAgICBpZiAoIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgS0lORCBpbiBJdGVyYWJsZVByb3RvdHlwZSkgcmV0dXJuIEl0ZXJhYmxlUHJvdG90eXBlW0tJTkRdO1xuICAgIHN3aXRjaCAoS0lORCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgRU5UUklFUzogcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzKTsgfTtcbiAgfTtcblxuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IGZhbHNlO1xuICB2YXIgSXRlcmFibGVQcm90b3R5cGUgPSBJdGVyYWJsZS5wcm90b3R5cGU7XG4gIHZhciBuYXRpdmVJdGVyYXRvciA9IEl0ZXJhYmxlUHJvdG90eXBlW0lURVJBVE9SXVxuICAgIHx8IEl0ZXJhYmxlUHJvdG90eXBlWydAQGl0ZXJhdG9yJ11cbiAgICB8fCBERUZBVUxUICYmIEl0ZXJhYmxlUHJvdG90eXBlW0RFRkFVTFRdO1xuICB2YXIgZGVmYXVsdEl0ZXJhdG9yID0gIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgbmF0aXZlSXRlcmF0b3IgfHwgZ2V0SXRlcmF0aW9uTWV0aG9kKERFRkFVTFQpO1xuICB2YXIgYW55TmF0aXZlSXRlcmF0b3IgPSBOQU1FID09ICdBcnJheScgPyBJdGVyYWJsZVByb3RvdHlwZS5lbnRyaWVzIHx8IG5hdGl2ZUl0ZXJhdG9yIDogbmF0aXZlSXRlcmF0b3I7XG4gIHZhciBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIG1ldGhvZHMsIEtFWTtcblxuICAvLyBmaXggbmF0aXZlXG4gIGlmIChhbnlOYXRpdmVJdGVyYXRvcikge1xuICAgIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGFueU5hdGl2ZUl0ZXJhdG9yLmNhbGwobmV3IEl0ZXJhYmxlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIGlmICghSVNfUFVSRSAmJiBnZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUpICE9PSBJdGVyYXRvclByb3RvdHlwZSkge1xuICAgICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgICBzZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIHRydWUsIHRydWUpO1xuICAgICAgaWYgKElTX1BVUkUpIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gICAgfVxuICB9XG5cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGQVVMVCA9PSBWQUxVRVMgJiYgbmF0aXZlSXRlcmF0b3IgJiYgbmF0aXZlSXRlcmF0b3IubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gdHJ1ZTtcbiAgICBkZWZhdWx0SXRlcmF0b3IgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuYXRpdmVJdGVyYXRvci5jYWxsKHRoaXMpOyB9O1xuICB9XG5cbiAgLy8gZGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUlTX1BVUkUgfHwgRk9SQ0VEKSAmJiBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl0gIT09IGRlZmF1bHRJdGVyYXRvcikge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShJdGVyYWJsZVByb3RvdHlwZSwgSVRFUkFUT1IsIGRlZmF1bHRJdGVyYXRvcik7XG4gIH1cbiAgSXRlcmF0b3JzW05BTUVdID0gZGVmYXVsdEl0ZXJhdG9yO1xuXG4gIC8vIGV4cG9ydCBhZGRpdGlvbmFsIG1ldGhvZHNcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBnZXRJdGVyYXRpb25NZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/IGRlZmF1bHRJdGVyYXRvciA6IGdldEl0ZXJhdGlvbk1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6IGdldEl0ZXJhdGlvbk1ldGhvZChFTlRSSUVTKVxuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChLRVkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgfHwgSU5DT1JSRUNUX1ZBTFVFU19OQU1FIHx8ICEoS0VZIGluIEl0ZXJhYmxlUHJvdG90eXBlKSkge1xuICAgICAgICByZWRlZmluZShJdGVyYWJsZVByb3RvdHlwZSwgS0VZLCBtZXRob2RzW0tFWV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSAkKHsgdGFyZ2V0OiBOQU1FLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB9LCBtZXRob2RzKTtcbiAgfVxuXG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2MDFjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2MDhkXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xuXG52YXIgcmVwbGFjZW1lbnQgPSAvI3xcXC5wcm90b3R5cGVcXC4vO1xuXG52YXIgaXNGb3JjZWQgPSBmdW5jdGlvbiAoZmVhdHVyZSwgZGV0ZWN0aW9uKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGFbbm9ybWFsaXplKGZlYXR1cmUpXTtcbiAgcmV0dXJuIHZhbHVlID09IFBPTFlGSUxMID8gdHJ1ZVxuICAgIDogdmFsdWUgPT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IHR5cGVvZiBkZXRlY3Rpb24gPT0gJ2Z1bmN0aW9uJyA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjYwZTVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwMDBkXCIpO1xuXG5leHBvcnRzLmYgPSB3ZWxsS25vd25TeW1ib2w7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNjFlOFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBhIHN0cmluZyBvZiBhbGwgdmFsaWQgdW5pY29kZSB3aGl0ZXNwYWNlc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbm1vZHVsZS5leHBvcnRzID0gJ1xcdTAwMDlcXHUwMDBBXFx1MDAwQlxcdTAwMENcXHUwMDBEXFx1MDAyMFxcdTAwQTBcXHUxNjgwXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkYnO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjYxZWJcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjRjXCIpO1xudmFyIHNldEdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiY2JjXCIpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBzZXRHbG9iYWwoU0hBUkVELCB7fSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmU7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNjQ3NlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTg2NVwiKTtcbnZhciBhUG9zc2libGVQcm90b3R5cGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODhmZVwiKTtcblxuLy8gYE9iamVjdC5zZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2Zcbi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IGZ1bmN0aW9uICgpIHtcbiAgdmFyIENPUlJFQ1RfU0VUVEVSID0gZmFsc2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHZhciBzZXR0ZXI7XG4gIHRyeSB7XG4gICAgc2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0O1xuICAgIHNldHRlci5jYWxsKHRlc3QsIFtdKTtcbiAgICBDT1JSRUNUX1NFVFRFUiA9IHRlc3QgaW5zdGFuY2VvZiBBcnJheTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICBhbk9iamVjdChPKTtcbiAgICBhUG9zc2libGVQcm90b3R5cGUocHJvdG8pO1xuICAgIGlmIChDT1JSRUNUX1NFVFRFUikgc2V0dGVyLmNhbGwoTywgcHJvdG8pO1xuICAgIGVsc2UgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICByZXR1cm4gTztcbiAgfTtcbn0oKSA6IHVuZGVmaW5lZCk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNjhiNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkMjJlXCIpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmZlMFwiKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUucmVwZWF0YCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucmVwZWF0XG5tb2R1bGUuZXhwb3J0cyA9ICcnLnJlcGVhdCB8fCBmdW5jdGlvbiByZXBlYXQoY291bnQpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgbiA9IHRvSW50ZWdlcihjb3VudCk7XG4gIGlmIChuIDwgMCB8fCBuID09IEluZmluaXR5KSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBudW1iZXIgb2YgcmVwZXRpdGlvbnMnKTtcbiAgZm9yICg7biA+IDA7IChuID4+Pj0gMSkgJiYgKHN0ciArPSBzdHIpKSBpZiAobiAmIDEpIHJlc3VsdCArPSBzdHI7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjZhYzBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHN0b3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYxZWJcIik7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gRnVuY3Rpb24udG9TdHJpbmc7XG5cbi8vIHRoaXMgaGVscGVyIGJyb2tlbiBpbiBgMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAodHlwZW9mIHN0b3JlLmluc3BlY3RTb3VyY2UgIT0gJ2Z1bmN0aW9uJykge1xuICBzdG9yZS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9TdHJpbmcuY2FsbChpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2Y2I2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImM3ZTFcIik7XG52YXIgaXNBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5Y2UwXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg4M2FcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjhkMVwiKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkMTdkXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU0YjhcIik7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjcyNmZcIik7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhZjNkXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwMDBkXCIpO1xudmFyIFY4X1ZFUlNJT04gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDQxYlwiKTtcblxudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFID0gd2VsbEtub3duU3ltYm9sKCdpc0NvbmNhdFNwcmVhZGFibGUnKTtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gMHgxRkZGRkZGRkZGRkZGRjtcbnZhciBNQVhJTVVNX0FMTE9XRURfSU5ERVhfRVhDRUVERUQgPSAnTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkJztcblxuLy8gV2UgY2FuJ3QgdXNlIHRoaXMgZmVhdHVyZSBkZXRlY3Rpb24gaW4gVjggc2luY2UgaXQgY2F1c2VzXG4vLyBkZW9wdGltaXphdGlvbiBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQgPSBWOF9WRVJTSU9OID49IDUxIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBhcnJheSA9IFtdO1xuICBhcnJheVtJU19DT05DQVRfU1BSRUFEQUJMRV0gPSBmYWxzZTtcbiAgcmV0dXJuIGFycmF5LmNvbmNhdCgpWzBdICE9PSBhcnJheTtcbn0pO1xuXG52YXIgU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnY29uY2F0Jyk7XG5cbnZhciBpc0NvbmNhdFNwcmVhZGFibGUgPSBmdW5jdGlvbiAoTykge1xuICBpZiAoIWlzT2JqZWN0KE8pKSByZXR1cm4gZmFsc2U7XG4gIHZhciBzcHJlYWRhYmxlID0gT1tJU19DT05DQVRfU1BSRUFEQUJMRV07XG4gIHJldHVybiBzcHJlYWRhYmxlICE9PSB1bmRlZmluZWQgPyAhIXNwcmVhZGFibGUgOiBpc0FycmF5KE8pO1xufTtcblxudmFyIEZPUkNFRCA9ICFJU19DT05DQVRfU1BSRUFEQUJMRV9TVVBQT1JUIHx8ICFTUEVDSUVTX1NVUFBPUlQ7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuY29uY2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5jb25jYXRcbi8vIHdpdGggYWRkaW5nIHN1cHBvcnQgb2YgQEBpc0NvbmNhdFNwcmVhZGFibGUgYW5kIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgY29uY2F0OiBmdW5jdGlvbiBjb25jYXQoYXJnKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBBID0gYXJyYXlTcGVjaWVzQ3JlYXRlKE8sIDApO1xuICAgIHZhciBuID0gMDtcbiAgICB2YXIgaSwgaywgbGVuZ3RoLCBsZW4sIEU7XG4gICAgZm9yIChpID0gLTEsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgRSA9IGkgPT09IC0xID8gTyA6IGFyZ3VtZW50c1tpXTtcbiAgICAgIGlmIChpc0NvbmNhdFNwcmVhZGFibGUoRSkpIHtcbiAgICAgICAgbGVuID0gdG9MZW5ndGgoRS5sZW5ndGgpO1xuICAgICAgICBpZiAobiArIGxlbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHRocm93IFR5cGVFcnJvcihNQVhJTVVNX0FMTE9XRURfSU5ERVhfRVhDRUVERUQpO1xuICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbGVuOyBrKyssIG4rKykgaWYgKGsgaW4gRSkgY3JlYXRlUHJvcGVydHkoQSwgbiwgRVtrXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobiA+PSBNQVhfU0FGRV9JTlRFR0VSKSB0aHJvdyBUeXBlRXJyb3IoTUFYSU1VTV9BTExPV0VEX0lOREVYX0VYQ0VFREVEKTtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkoQSwgbisrLCBFKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQS5sZW5ndGggPSBuO1xuICAgIHJldHVybiBBO1xuICB9XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI2ZWMzXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhMWIxXCIpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA2OWZcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTg2NVwiKTtcbnZhciBvYmplY3RLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjVjZDRcIik7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIFByb3BlcnRpZXNba2V5XSk7XG4gIHJldHVybiBPO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI3MDExXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTFiMVwiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY0Y1wiKTtcbnZhciBpc0ZvcmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2MDhkXCIpO1xudmFyIHJlZGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMyYzZcIik7XG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjgwMzRcIik7XG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3ZTI3XCIpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjBhODdcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmQ3YlwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xudmFyIGNyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkNzA5XCIpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYWVlNFwiKS5mO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhM2ZlXCIpLmY7XG52YXIgZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY5ZlwiKS5mO1xudmFyIHRyaW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMTg2NVwiKS50cmltO1xuXG52YXIgTlVNQkVSID0gJ051bWJlcic7XG52YXIgTmF0aXZlTnVtYmVyID0gZ2xvYmFsW05VTUJFUl07XG52YXIgTnVtYmVyUHJvdG90eXBlID0gTmF0aXZlTnVtYmVyLnByb3RvdHlwZTtcblxuLy8gT3BlcmEgfjEyIGhhcyBicm9rZW4gT2JqZWN0I3RvU3RyaW5nXG52YXIgQlJPS0VOX0NMQVNTT0YgPSBjbGFzc29mKGNyZWF0ZShOdW1iZXJQcm90b3R5cGUpKSA9PSBOVU1CRVI7XG5cbi8vIGBUb051bWJlcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b251bWJlclxudmFyIHRvTnVtYmVyID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBpdCA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCBmYWxzZSk7XG4gIHZhciBmaXJzdCwgdGhpcmQsIHJhZGl4LCBtYXhDb2RlLCBkaWdpdHMsIGxlbmd0aCwgaW5kZXgsIGNvZGU7XG4gIGlmICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgJiYgaXQubGVuZ3RoID4gMikge1xuICAgIGl0ID0gdHJpbShpdCk7XG4gICAgZmlyc3QgPSBpdC5jaGFyQ29kZUF0KDApO1xuICAgIGlmIChmaXJzdCA9PT0gNDMgfHwgZmlyc3QgPT09IDQ1KSB7XG4gICAgICB0aGlyZCA9IGl0LmNoYXJDb2RlQXQoMik7XG4gICAgICBpZiAodGhpcmQgPT09IDg4IHx8IHRoaXJkID09PSAxMjApIHJldHVybiBOYU47IC8vIE51bWJlcignKzB4MScpIHNob3VsZCBiZSBOYU4sIG9sZCBWOCBmaXhcbiAgICB9IGVsc2UgaWYgKGZpcnN0ID09PSA0OCkge1xuICAgICAgc3dpdGNoIChpdC5jaGFyQ29kZUF0KDEpKSB7XG4gICAgICAgIGNhc2UgNjY6IGNhc2UgOTg6IHJhZGl4ID0gMjsgbWF4Q29kZSA9IDQ5OyBicmVhazsgLy8gZmFzdCBlcXVhbCBvZiAvXjBiWzAxXSskL2lcbiAgICAgICAgY2FzZSA3OTogY2FzZSAxMTE6IHJhZGl4ID0gODsgbWF4Q29kZSA9IDU1OyBicmVhazsgLy8gZmFzdCBlcXVhbCBvZiAvXjBvWzAtN10rJC9pXG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAraXQ7XG4gICAgICB9XG4gICAgICBkaWdpdHMgPSBpdC5zbGljZSgyKTtcbiAgICAgIGxlbmd0aCA9IGRpZ2l0cy5sZW5ndGg7XG4gICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29kZSA9IGRpZ2l0cy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgLy8gcGFyc2VJbnQgcGFyc2VzIGEgc3RyaW5nIHRvIGEgZmlyc3QgdW5hdmFpbGFibGUgc3ltYm9sXG4gICAgICAgIC8vIGJ1dCBUb051bWJlciBzaG91bGQgcmV0dXJuIE5hTiBpZiBhIHN0cmluZyBjb250YWlucyB1bmF2YWlsYWJsZSBzeW1ib2xzXG4gICAgICAgIGlmIChjb2RlIDwgNDggfHwgY29kZSA+IG1heENvZGUpIHJldHVybiBOYU47XG4gICAgICB9IHJldHVybiBwYXJzZUludChkaWdpdHMsIHJhZGl4KTtcbiAgICB9XG4gIH0gcmV0dXJuICtpdDtcbn07XG5cbi8vIGBOdW1iZXJgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1udW1iZXItY29uc3RydWN0b3JcbmlmIChpc0ZvcmNlZChOVU1CRVIsICFOYXRpdmVOdW1iZXIoJyAwbzEnKSB8fCAhTmF0aXZlTnVtYmVyKCcwYjEnKSB8fCBOYXRpdmVOdW1iZXIoJysweDEnKSkpIHtcbiAgdmFyIE51bWJlcldyYXBwZXIgPSBmdW5jdGlvbiBOdW1iZXIodmFsdWUpIHtcbiAgICB2YXIgaXQgPSBhcmd1bWVudHMubGVuZ3RoIDwgMSA/IDAgOiB2YWx1ZTtcbiAgICB2YXIgZHVtbXkgPSB0aGlzO1xuICAgIHJldHVybiBkdW1teSBpbnN0YW5jZW9mIE51bWJlcldyYXBwZXJcbiAgICAgIC8vIGNoZWNrIG9uIDEuLmNvbnN0cnVjdG9yKGZvbykgY2FzZVxuICAgICAgJiYgKEJST0tFTl9DTEFTU09GID8gZmFpbHMoZnVuY3Rpb24gKCkgeyBOdW1iZXJQcm90b3R5cGUudmFsdWVPZi5jYWxsKGR1bW15KTsgfSkgOiBjbGFzc29mKGR1bW15KSAhPSBOVU1CRVIpXG4gICAgICAgID8gaW5oZXJpdElmUmVxdWlyZWQobmV3IE5hdGl2ZU51bWJlcih0b051bWJlcihpdCkpLCBkdW1teSwgTnVtYmVyV3JhcHBlcikgOiB0b051bWJlcihpdCk7XG4gIH07XG4gIGZvciAodmFyIGtleXMgPSBERVNDUklQVE9SUyA/IGdldE93blByb3BlcnR5TmFtZXMoTmF0aXZlTnVtYmVyKSA6IChcbiAgICAvLyBFUzM6XG4gICAgJ01BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLCcgK1xuICAgIC8vIEVTMjAxNSAoaW4gY2FzZSwgaWYgbW9kdWxlcyB3aXRoIEVTMjAxNSBOdW1iZXIgc3RhdGljcyByZXF1aXJlZCBiZWZvcmUpOlxuICAgICdFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsJyArXG4gICAgJ01JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXInXG4gICkuc3BsaXQoJywnKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOyBqKyspIHtcbiAgICBpZiAoaGFzKE5hdGl2ZU51bWJlciwga2V5ID0ga2V5c1tqXSkgJiYgIWhhcyhOdW1iZXJXcmFwcGVyLCBrZXkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eShOdW1iZXJXcmFwcGVyLCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihOYXRpdmVOdW1iZXIsIGtleSkpO1xuICAgIH1cbiAgfVxuICBOdW1iZXJXcmFwcGVyLnByb3RvdHlwZSA9IE51bWJlclByb3RvdHlwZTtcbiAgTnVtYmVyUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTnVtYmVyV3JhcHBlcjtcbiAgcmVkZWZpbmUoZ2xvYmFsLCBOVU1CRVIsIE51bWJlcldyYXBwZXIpO1xufVxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjcwMTlcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkMjJlXCIpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNzA2N1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjcyNmZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg4M2FcIik7XG52YXIgaXNBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5Y2UwXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwMDBkXCIpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSwgbGVuZ3RoKSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbEFycmF5KSkge1xuICAgIEMgPSBvcmlnaW5hbEFycmF5LmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBlbHNlIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIG5ldyAoQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDKShsZW5ndGggPT09IDAgPyAwIDogbGVuZ3RoKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNzRkNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY5ZlwiKS5mO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4MDM0XCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwMDBkXCIpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRBRywgU1RBVElDKSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gU1RBVElDID8gaXQgOiBpdC5wcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoaXQsIFRPX1NUUklOR19UQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogVEFHIH0pO1xuICB9XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjc2MjhcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3MDY3XCIpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQpO1xuICAgIH07XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjc3MGFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdldEJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmVhNFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCduYXZpZ2F0b3InLCAndXNlckFnZW50JykgfHwgJyc7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiNzdlOVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgIW5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6IG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjdiNDVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjRjXCIpO1xudmFyIHRyaW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMTg2NVwiKS50cmltO1xudmFyIHdoaXRlc3BhY2VzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYxZThcIik7XG5cbnZhciBuYXRpdmVQYXJzZUludCA9IGdsb2JhbC5wYXJzZUludDtcbnZhciBoZXggPSAvXlsrLV0/MFtYeF0vO1xudmFyIEZPUkNFRCA9IG5hdGl2ZVBhcnNlSW50KHdoaXRlc3BhY2VzICsgJzA4JykgIT09IDggfHwgbmF0aXZlUGFyc2VJbnQod2hpdGVzcGFjZXMgKyAnMHgxNicpICE9PSAyMjtcblxuLy8gYHBhcnNlSW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXBhcnNlaW50LXN0cmluZy1yYWRpeFxubW9kdWxlLmV4cG9ydHMgPSBGT1JDRUQgPyBmdW5jdGlvbiBwYXJzZUludChzdHJpbmcsIHJhZGl4KSB7XG4gIHZhciBTID0gdHJpbShTdHJpbmcoc3RyaW5nKSk7XG4gIHJldHVybiBuYXRpdmVQYXJzZUludChTLCAocmFkaXggPj4+IDApIHx8IChoZXgudGVzdChTKSA/IDE2IDogMTApKTtcbn0gOiBuYXRpdmVQYXJzZUludDtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI3ZGRhXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjRjXCIpO1xudmFyIGdldEJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmVhNFwiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjRmZjFcIik7XG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTFiMVwiKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjkzOThcIik7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDVhZlwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4MDM0XCIpO1xudmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOWNlMFwiKTtcbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4ODNhXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE4NjVcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjhkMVwiKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDcyY1wiKTtcbnZhciB0b1ByaW1pdGl2ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyZDdiXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4OGI1XCIpO1xudmFyIG5hdGl2ZU9iamVjdENyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkNzA5XCIpO1xudmFyIG9iamVjdEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWNkNFwiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImFlZTRcIik7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjU4MWNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjI4ZDVcIik7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImEzZmVcIik7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY5ZlwiKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3N2U5XCIpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiNGJlXCIpO1xudmFyIHJlZGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMyYzZcIik7XG52YXIgc2hhcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImRlODZcIik7XG52YXIgc2hhcmVkS2V5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImNlYmRcIik7XG52YXIgaGlkZGVuS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4M2ZkXCIpO1xudmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5OWQ4XCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwMDBkXCIpO1xudmFyIHdyYXBwZWRXZWxsS25vd25TeW1ib2xNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjBlNVwiKTtcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzhiZlwiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3NGQ2XCIpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDk3ZVwiKTtcbnZhciAkZm9yRWFjaCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhNTVjXCIpLmZvckVhY2g7XG5cbnZhciBISURERU4gPSBzaGFyZWRLZXkoJ2hpZGRlbicpO1xudmFyIFNZTUJPTCA9ICdTeW1ib2wnO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIFRPX1BSSU1JVElWRSA9IHdlbGxLbm93blN5bWJvbCgndG9QcmltaXRpdmUnKTtcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNZTUJPTCk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJHN0cmluZ2lmeSA9IGdldEJ1aWx0SW4oJ0pTT04nLCAnc3RyaW5naWZ5Jyk7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG52YXIgbmF0aXZlRGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xudmFyIG5hdGl2ZUdldE93blByb3BlcnR5TmFtZXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzRXh0ZXJuYWwuZjtcbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmY7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvdHlwZVN5bWJvbHMgPSBzaGFyZWQoJ29wLXN5bWJvbHMnKTtcbnZhciBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzdHJpbmctdG8tc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgU3ltYm9sVG9TdHJpbmdSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeScpO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgVVNFX1NFVFRFUiA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7XG5cbi8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xudmFyIHNldFN5bWJvbERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RDcmVhdGUobmF0aXZlRGVmaW5lUHJvcGVydHkoe30sICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24gKE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgdmFyIE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0UHJvdG90eXBlLCBQKTtcbiAgaWYgKE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IpIGRlbGV0ZSBPYmplY3RQcm90b3R5cGVbUF07XG4gIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICBpZiAoT2JqZWN0UHJvdG90eXBlRGVzY3JpcHRvciAmJiBPICE9PSBPYmplY3RQcm90b3R5cGUpIHtcbiAgICBuYXRpdmVEZWZpbmVQcm9wZXJ0eShPYmplY3RQcm90b3R5cGUsIFAsIE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IpO1xuICB9XG59IDogbmF0aXZlRGVmaW5lUHJvcGVydHk7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZywgZGVzY3JpcHRpb24pIHtcbiAgdmFyIHN5bWJvbCA9IEFsbFN5bWJvbHNbdGFnXSA9IG5hdGl2ZU9iamVjdENyZWF0ZSgkU3ltYm9sW1BST1RPVFlQRV0pO1xuICBzZXRJbnRlcm5hbFN0YXRlKHN5bWJvbCwge1xuICAgIHR5cGU6IFNZTUJPTCxcbiAgICB0YWc6IHRhZyxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25cbiAgfSk7XG4gIGlmICghREVTQ1JJUFRPUlMpIHN5bWJvbC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICByZXR1cm4gc3ltYm9sO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChpdCkgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgaWYgKE8gPT09IE9iamVjdFByb3RvdHlwZSkgJGRlZmluZVByb3BlcnR5KE9iamVjdFByb3RvdHlwZVN5bWJvbHMsIFAsIEF0dHJpYnV0ZXMpO1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFBdHRyaWJ1dGVzLmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKE8sIEhJRERFTikpIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIEhJRERFTiwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHt9KSk7XG4gICAgICBPW0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXMoTywgSElEREVOKSAmJiBPW0hJRERFTl1ba2V5XSkgT1tISURERU5dW2tleV0gPSBmYWxzZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSBuYXRpdmVPYmplY3RDcmVhdGUoQXR0cmlidXRlcywgeyBlbnVtZXJhYmxlOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2NyaXB0b3IoTywga2V5LCBBdHRyaWJ1dGVzKTtcbiAgfSByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkoTywga2V5LCBBdHRyaWJ1dGVzKTtcbn07XG5cbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIHByb3BlcnRpZXMgPSB0b0luZGV4ZWRPYmplY3QoUHJvcGVydGllcyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhwcm9wZXJ0aWVzKS5jb25jYXQoJGdldE93blByb3BlcnR5U3ltYm9scyhwcm9wZXJ0aWVzKSk7XG4gICRmb3JFYWNoKGtleXMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIURFU0NSSVBUT1JTIHx8ICRwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHByb3BlcnRpZXMsIGtleSkpICRkZWZpbmVQcm9wZXJ0eShPLCBrZXksIHByb3BlcnRpZXNba2V5XSk7XG4gIH0pO1xuICByZXR1cm4gTztcbn07XG5cbnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IG5hdGl2ZU9iamVjdENyZWF0ZShPKSA6ICRkZWZpbmVQcm9wZXJ0aWVzKG5hdGl2ZU9iamVjdENyZWF0ZShPKSwgUHJvcGVydGllcyk7XG59O1xuXG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgUCA9IHRvUHJpbWl0aXZlKFYsIHRydWUpO1xuICB2YXIgZW51bWVyYWJsZSA9IG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodGhpcywgUCk7XG4gIGlmICh0aGlzID09PSBPYmplY3RQcm90b3R5cGUgJiYgaGFzKEFsbFN5bWJvbHMsIFApICYmICFoYXMoT2JqZWN0UHJvdG90eXBlU3ltYm9scywgUCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIGVudW1lcmFibGUgfHwgIWhhcyh0aGlzLCBQKSB8fCAhaGFzKEFsbFN5bWJvbHMsIFApIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtQXSA/IGVudW1lcmFibGUgOiB0cnVlO1xufTtcblxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICB2YXIgaXQgPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90b3R5cGUgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPYmplY3RQcm90b3R5cGVTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBkZXNjcmlwdG9yID0gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpO1xuICBpZiAoZGVzY3JpcHRvciAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pKSB7XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZGVzY3JpcHRvcjtcbn07XG5cbnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICB2YXIgbmFtZXMgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eU5hbWVzKHRvSW5kZXhlZE9iamVjdChPKSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgJGZvckVhY2gobmFtZXMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoaGlkZGVuS2V5cywga2V5KSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhPKSB7XG4gIHZhciBJU19PQkpFQ1RfUFJPVE9UWVBFID0gTyA9PT0gT2JqZWN0UHJvdG90eXBlO1xuICB2YXIgbmFtZXMgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eU5hbWVzKElTX09CSkVDVF9QUk9UT1RZUEUgPyBPYmplY3RQcm90b3R5cGVTeW1ib2xzIDogdG9JbmRleGVkT2JqZWN0KE8pKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICAkZm9yRWFjaChuYW1lcywgZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5KSAmJiAoIUlTX09CSkVDVF9QUk9UT1RZUEUgfHwgaGFzKE9iamVjdFByb3RvdHlwZSwga2V5KSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIGBTeW1ib2xgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zeW1ib2wtY29uc3RydWN0b3JcbmlmICghTkFUSVZFX1NZTUJPTCkge1xuICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgJFN5bWJvbCkgdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3InKTtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSAhYXJndW1lbnRzLmxlbmd0aCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IFN0cmluZyhhcmd1bWVudHNbMF0pO1xuICAgIHZhciB0YWcgPSB1aWQoZGVzY3JpcHRpb24pO1xuICAgIHZhciBzZXR0ZXIgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzID09PSBPYmplY3RQcm90b3R5cGUpIHNldHRlci5jYWxsKE9iamVjdFByb3RvdHlwZVN5bWJvbHMsIHZhbHVlKTtcbiAgICAgIGlmIChoYXModGhpcywgSElEREVOKSAmJiBoYXModGhpc1tISURERU5dLCB0YWcpKSB0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzY3JpcHRvcih0aGlzLCB0YWcsIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xuICAgIH07XG4gICAgaWYgKERFU0NSSVBUT1JTICYmIFVTRV9TRVRURVIpIHNldFN5bWJvbERlc2NyaXB0b3IoT2JqZWN0UHJvdG90eXBlLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6IHNldHRlciB9KTtcbiAgICByZXR1cm4gd3JhcCh0YWcsIGRlc2NyaXB0aW9uKTtcbiAgfTtcblxuICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnRhZztcbiAgfSk7XG5cbiAgcmVkZWZpbmUoJFN5bWJvbCwgJ3dpdGhvdXRTZXR0ZXInLCBmdW5jdGlvbiAoZGVzY3JpcHRpb24pIHtcbiAgICByZXR1cm4gd3JhcCh1aWQoZGVzY3JpcHRpb24pLCBkZXNjcmlwdGlvbik7XG4gIH0pO1xuXG4gIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIGRlZmluZVByb3BlcnR5TW9kdWxlLmYgPSAkZGVmaW5lUHJvcGVydHk7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mID0gZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsLmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIHdyYXBwZWRXZWxsS25vd25TeW1ib2xNb2R1bGUuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2VsbEtub3duU3ltYm9sKG5hbWUpLCBuYW1lKTtcbiAgfTtcblxuICBpZiAoREVTQ1JJUFRPUlMpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1TeW1ib2wtZGVzY3JpcHRpb25cbiAgICBuYXRpdmVEZWZpbmVQcm9wZXJ0eSgkU3ltYm9sW1BST1RPVFlQRV0sICdkZXNjcmlwdGlvbicsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLmRlc2NyaXB0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghSVNfUFVSRSkge1xuICAgICAgcmVkZWZpbmUoT2JqZWN0UHJvdG90eXBlLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHsgdW5zYWZlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxufVxuXG4kKHsgZ2xvYmFsOiB0cnVlLCB3cmFwOiB0cnVlLCBmb3JjZWQ6ICFOQVRJVkVfU1lNQk9MLCBzaGFtOiAhTkFUSVZFX1NZTUJPTCB9LCB7XG4gIFN5bWJvbDogJFN5bWJvbFxufSk7XG5cbiRmb3JFYWNoKG9iamVjdEtleXMoV2VsbEtub3duU3ltYm9sc1N0b3JlKSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgZGVmaW5lV2VsbEtub3duU3ltYm9sKG5hbWUpO1xufSk7XG5cbiQoeyB0YXJnZXQ6IFNZTUJPTCwgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX1NZTUJPTCB9LCB7XG4gIC8vIGBTeW1ib2wuZm9yYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3ltYm9sLmZvclxuICAnZm9yJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBzdHJpbmcgPSBTdHJpbmcoa2V5KTtcbiAgICBpZiAoaGFzKFN0cmluZ1RvU3ltYm9sUmVnaXN0cnksIHN0cmluZykpIHJldHVybiBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5W3N0cmluZ107XG4gICAgdmFyIHN5bWJvbCA9ICRTeW1ib2woc3RyaW5nKTtcbiAgICBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5W3N0cmluZ10gPSBzeW1ib2w7XG4gICAgU3ltYm9sVG9TdHJpbmdSZWdpc3RyeVtzeW1ib2xdID0gc3RyaW5nO1xuICAgIHJldHVybiBzeW1ib2w7XG4gIH0sXG4gIC8vIGBTeW1ib2wua2V5Rm9yYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3ltYm9sLmtleWZvclxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCcpO1xuICAgIGlmIChoYXMoU3ltYm9sVG9TdHJpbmdSZWdpc3RyeSwgc3ltKSkgcmV0dXJuIFN5bWJvbFRvU3RyaW5nUmVnaXN0cnlbc3ltXTtcbiAgfSxcbiAgdXNlU2V0dGVyOiBmdW5jdGlvbiAoKSB7IFVTRV9TRVRURVIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgVVNFX1NFVFRFUiA9IGZhbHNlOyB9XG59KTtcblxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9TWU1CT0wsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIC8vIGBPYmplY3QuY3JlYXRlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxuICBjcmVhdGU6ICRjcmVhdGUsXG4gIC8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcbiAgLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnRpZXNcbiAgZGVmaW5lUHJvcGVydGllczogJGRlZmluZVByb3BlcnRpZXMsXG4gIC8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvcnNcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yXG59KTtcblxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9TWU1CT0wgfSwge1xuICAvLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcbiAgLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlzeW1ib2xzXG4gIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xufSk7XG5cbi8vIENocm9tZSAzOCBhbmQgMzkgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgIGZhaWxzIG9uIHByaW1pdGl2ZXNcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTM0NDNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IGZhaWxzKGZ1bmN0aW9uICgpIHsgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmYoMSk7IH0pIH0sIHtcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmYodG9PYmplY3QoaXQpKTtcbiAgfVxufSk7XG5cbi8vIGBKU09OLnN0cmluZ2lmeWAgbWV0aG9kIGJlaGF2aW9yIHdpdGggc3ltYm9sc1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtanNvbi5zdHJpbmdpZnlcbmlmICgkc3RyaW5naWZ5KSB7XG4gIHZhciBGT1JDRURfSlNPTl9TVFJJTkdJRlkgPSAhTkFUSVZFX1NZTUJPTCB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN5bWJvbCA9ICRTeW1ib2woKTtcbiAgICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuICAgIHJldHVybiAkc3RyaW5naWZ5KFtzeW1ib2xdKSAhPSAnW251bGxdJ1xuICAgICAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gICAgICB8fCAkc3RyaW5naWZ5KHsgYTogc3ltYm9sIH0pICE9ICd7fSdcbiAgICAgIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gICAgICB8fCAkc3RyaW5naWZ5KE9iamVjdChzeW1ib2wpKSAhPSAne30nO1xuICB9KTtcblxuICAkKHsgdGFyZ2V0OiAnSlNPTicsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEX0pTT05fU1RSSU5HSUZZIH0sIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCwgcmVwbGFjZXIsIHNwYWNlKSB7XG4gICAgICB2YXIgYXJncyA9IFtpdF07XG4gICAgICB2YXIgaW5kZXggPSAxO1xuICAgICAgdmFyICRyZXBsYWNlcjtcbiAgICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaW5kZXgpIGFyZ3MucHVzaChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgICAgJHJlcGxhY2VyID0gcmVwbGFjZXI7XG4gICAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkXG4gICAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgJHJlcGxhY2VyID09ICdmdW5jdGlvbicpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgYXJnc1sxXSA9IHJlcGxhY2VyO1xuICAgICAgcmV0dXJuICRzdHJpbmdpZnkuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gYFN5bWJvbC5wcm90b3R5cGVbQEB0b1ByaW1pdGl2ZV1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3ltYm9sLnByb3RvdHlwZS1AQHRvcHJpbWl0aXZlXG5pZiAoISRTeW1ib2xbUFJPVE9UWVBFXVtUT19QUklNSVRJVkVdKSB7XG4gIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSgkU3ltYm9sW1BST1RPVFlQRV0sIFRPX1BSSU1JVElWRSwgJFN5bWJvbFtQUk9UT1RZUEVdLnZhbHVlT2YpO1xufVxuLy8gYFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11gIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zeW1ib2wucHJvdG90eXBlLUBAdG9zdHJpbmd0YWdcbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsIFNZTUJPTCk7XG5cbmhpZGRlbktleXNbSElEREVOXSA9IHRydWU7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiN2UyN1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiODAzNFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiODBjMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyIGZyb20gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMTFlMlwiKTtcbnZhciBjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTc4Y1wiKTtcblxudmFyIElOQ09SUkVDVF9JVEVSQVRJT04gPSAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICBBcnJheS5mcm9tKGl0ZXJhYmxlKTtcbn0pO1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5mcm9tXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICBmcm9tOiBmcm9tXG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI4MGU5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjdlMjdcIik7XG52YXIgcmVnZXhwRXhlYyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiZGRlXCIpO1xuXG4vLyBgUmVnRXhwRXhlY2AgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHBleGVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChSLCBTKSB7XG4gIHZhciBleGVjID0gUi5leGVjO1xuICBpZiAodHlwZW9mIGV4ZWMgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgcmVzdWx0ID0gZXhlYy5jYWxsKFIsIFMpO1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdSZWdFeHAgZXhlYyBtZXRob2QgcmV0dXJuZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gT2JqZWN0IG9yIG51bGwnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlmIChjbGFzc29mKFIpICE9PSAnUmVnRXhwJykge1xuICAgIHRocm93IFR5cGVFcnJvcignUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlcicpO1xuICB9XG5cbiAgcmV0dXJuIHJlZ2V4cEV4ZWMuY2FsbChSLCBTKTtcbn07XG5cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI4M2ZkXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiODYxZlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA2NGNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImEzZmVcIikuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjRiZVwiKTtcbnZhciByZWRlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzMmM2XCIpO1xudmFyIHNldEdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiY2JjXCIpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzkxZVwiKTtcbnZhciBpc0ZvcmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2MDhkXCIpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLm5vVGFyZ2V0R2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBzZXRHbG9iYWwoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiODgzYVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI4OGI1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiODhmZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODgzYVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkgJiYgaXQgIT09IG51bGwpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBzZXQgXCIgKyBTdHJpbmcoaXQpICsgJyBhcyBhIHByb3RvdHlwZScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOGJiZlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjhjYWFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2MWZcIik7XG52YXIgJGluZGV4T2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZTcyNFwiKS5pbmRleE9mO1xudmFyIHNsb3BweUFycmF5TWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM5MzRcIik7XG5cbnZhciBuYXRpdmVJbmRleE9mID0gW10uaW5kZXhPZjtcblxudmFyIE5FR0FUSVZFX1pFUk8gPSAhIW5hdGl2ZUluZGV4T2YgJiYgMSAvIFsxXS5pbmRleE9mKDEsIC0wKSA8IDA7XG52YXIgU0xPUFBZX01FVEhPRCA9IHNsb3BweUFycmF5TWV0aG9kKCdpbmRleE9mJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogTkVHQVRJVkVfWkVSTyB8fCBTTE9QUFlfTUVUSE9EIH0sIHtcbiAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiBORUdBVElWRV9aRVJPXG4gICAgICAvLyBjb252ZXJ0IC0wIHRvICswXG4gICAgICA/IG5hdGl2ZUluZGV4T2YuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCAwXG4gICAgICA6ICRpbmRleE9mKHRoaXMsIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOGNmNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzdlMVwiKTtcblxuLy8gY2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBhIG1ldGhvZCwgbG93ZXJjYXNlXG4vLyBvZiBhIHRhZyBhbmQgZXNjYXBpbmcgcXVvdGVzIGluIGFyZ3VtZW50c1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUpIHtcbiAgcmV0dXJuIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGVzdCA9ICcnW01FVEhPRF9OQU1FXSgnXCInKTtcbiAgICByZXR1cm4gdGVzdCAhPT0gdGVzdC50b0xvd2VyQ2FzZSgpIHx8IHRlc3Quc3BsaXQoJ1wiJykubGVuZ3RoID4gMztcbiAgfSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjhlMmNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2MWZcIik7XG52YXIgJGZpbHRlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhNTVjXCIpLmZpbHRlcjtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYWYzZFwiKTtcblxudmFyIEhBU19TUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdmaWx0ZXInKTtcbi8vIEVkZ2UgMTQtIGlzc3VlXG52YXIgVVNFU19UT19MRU5HVEggPSBIQVNfU1BFQ0lFU19TVVBQT1JUICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIFtdLmZpbHRlci5jYWxsKHsgbGVuZ3RoOiAtMSwgMDogMSB9LCBmdW5jdGlvbiAoaXQpIHsgdGhyb3cgaXQ7IH0pO1xufSk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWx0ZXJcbi8vIHdpdGggYWRkaW5nIHN1cHBvcnQgb2YgQEBzcGVjaWVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhSEFTX1NQRUNJRVNfU1VQUE9SVCB8fCAhVVNFU19UT19MRU5HVEggfSwge1xuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZmlsdGVyKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOTM5OFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzdlMVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHJldHVybiAhU3RyaW5nKFN5bWJvbCgpKTtcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjkzYWVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImExYjFcIik7XG52YXIgb2JqZWN0S2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1Y2Q0XCIpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkNzJjXCIpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjc3ZTlcIikuZjtcblxuLy8gYE9iamVjdC57IGVudHJpZXMsIHZhbHVlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRPX0VOVFJJRVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KGl0KTtcbiAgICB2YXIga2V5cyA9IG9iamVjdEtleXMoTyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaSkge1xuICAgICAga2V5ID0ga2V5c1tpKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKE8sIGtleSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goVE9fRU5UUklFUyA/IFtrZXksIE9ba2V5XV0gOiBPW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBPYmplY3QuZW50cmllc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5lbnRyaWVzXG4gIGVudHJpZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYE9iamVjdC52YWx1ZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QudmFsdWVzXG4gIHZhbHVlczogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5NDI4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTAxNlwiKTtcbnZhciByZWRlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzMmM2XCIpO1xudmFyIHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImM1MDRcIik7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmdcbmlmICghVE9fU1RSSU5HX1RBR19TVVBQT1JUKSB7XG4gIHJlZGVmaW5lKE9iamVjdC5wcm90b3R5cGUsICd0b1N0cmluZycsIHRvU3RyaW5nLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbn1cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5NDI5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyICRmaW5kID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImE1NWNcIikuZmluZDtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjI5OTVcIik7XG5cbnZhciBGSU5EID0gJ2ZpbmQnO1xudmFyIFNLSVBTX0hPTEVTID0gdHJ1ZTtcblxuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChGSU5EIGluIFtdKSBBcnJheSgxKVtGSU5EXShmdW5jdGlvbiAoKSB7IFNLSVBTX0hPTEVTID0gZmFsc2U7IH0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFNLSVBTX0hPTEVTIH0sIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcyhGSU5EKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5NTZiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyICRtYXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTU1Y1wiKS5tYXA7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzdlMVwiKTtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImFmM2RcIik7XG5cbnZhciBIQVNfU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnbWFwJyk7XG4vLyBGRjQ5LSBpc3N1ZVxudmFyIFVTRVNfVE9fTEVOR1RIID0gSEFTX1NQRUNJRVNfU1VQUE9SVCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBbXS5tYXAuY2FsbCh7IGxlbmd0aDogLTEsIDA6IDEgfSwgZnVuY3Rpb24gKGl0KSB7IHRocm93IGl0OyB9KTtcbn0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfHwgIVVTRVNfVE9fTEVOR1RIIH0sIHtcbiAgbWFwOiBmdW5jdGlvbiBtYXAoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJG1hcCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjk2NmNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjRjXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg4M2FcIik7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjk2YzVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJlYTRcIik7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY5ZlwiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDAwZFwiKTtcbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhMWIxXCIpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT05TVFJVQ1RPUl9OQU1FKSB7XG4gIHZhciBDb25zdHJ1Y3RvciA9IGdldEJ1aWx0SW4oQ09OU1RSVUNUT1JfTkFNRSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmIENvbnN0cnVjdG9yICYmICFDb25zdHJ1Y3RvcltTUEVDSUVTXSkge1xuICAgIGRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBTUEVDSUVTLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgICB9KTtcbiAgfVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5NzYwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJlYTRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignZG9jdW1lbnQnLCAnZG9jdW1lbnRFbGVtZW50Jyk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOTljMFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOTlkOFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIFN0cmluZyhrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyAoKytpZCArIHBvc3RmaXgpLnRvU3RyaW5nKDM2KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOWNlMFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3ZTI3XCIpO1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNsYXNzb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5ZmE4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDAwZFwiKTtcbnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMGQxOFwiKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYTAxNlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAwMGRcIik7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIHRlc3QgPSB7fTtcblxudGVzdFtUT19TVFJJTkdfVEFHXSA9ICd6JztcblxubW9kdWxlLmV4cG9ydHMgPSBTdHJpbmcodGVzdCkgPT09ICdbb2JqZWN0IHpdJztcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhMTU3XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhMWIxXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYTNmZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTFiMVwiKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3N2U5XCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4OGI1XCIpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkNzJjXCIpO1xudmFyIHRvUHJpbWl0aXZlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJkN2JcIik7XG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjgwMzRcIik7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzMzZlwiKTtcblxudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhNDM3XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyICRpbmNsdWRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlNzI0XCIpLmluY2x1ZGVzO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMjk5NVwiKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiAkaW5jbHVkZXModGhpcywgZWwsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdpbmNsdWRlcycpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImE0ZWFcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG52YXIgcnVudGltZSA9IChmdW5jdGlvbiAoZXhwb3J0cykge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci5cbiAgICB2YXIgcHJvdG9HZW5lcmF0b3IgPSBvdXRlckZuICYmIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gb3V0ZXJGbiA6IEdlbmVyYXRvcjtcbiAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pO1xuXG4gICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy5cbiAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9XG4gIGV4cG9ydHMud3JhcCA9IHdyYXA7XG5cbiAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG4gIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG4gIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcbiAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG4gIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgIH1cbiAgfVxuXG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcbiAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcbiAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcblxuICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cbiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcblxuICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcbiAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyXG4gIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXRcbiAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdwLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgIGdlbkZ1blt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWYgYSByZWplY3RlZCBQcm9taXNlIHdhcyB5aWVsZGVkLCB0aHJvdyB0aGUgcmVqZWN0aW9uIGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGhhbmRsZWQgdGhlcmUuXG4gICAgICAgICAgcmV0dXJuIGludm9rZShcInRocm93XCIsIGVycm9yLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdClcbiAgICApO1xuXG4gICAgcmV0dXJuIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKVxuICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cbiAgICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICAgICAgfSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7XG4gICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVFeGVjdXRpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICB0aHJvdyBhcmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgLy8gU2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcbiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG4gICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lXG4gICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkXG4gICAgICAgICAgICA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cbiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcbiAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGVcbiAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAvLyBkZWxlZ2F0ZSBpdGVyYXRvciwgb3IgYnkgbW9kaWZ5aW5nIGNvbnRleHQubWV0aG9kIGFuZCBjb250ZXh0LmFyZyxcbiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuXG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIC8vIE5vdGU6IFtcInJldHVyblwiXSBtdXN0IGJlIHVzZWQgZm9yIEVTMyBwYXJzaW5nIGNvbXBhdGliaWxpdHkuXG4gICAgICAgIGlmIChkZWxlZ2F0ZS5pdGVyYXRvcltcInJldHVyblwiXSkge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIEdwW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgZXhwb3J0cy5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIGV4cG9ydHMudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZVxuICAvLyBvciBub3QsIHJldHVybiB0aGUgcnVudGltZSBvYmplY3Qgc28gdGhhdCB3ZSBjYW4gZGVjbGFyZSB0aGUgdmFyaWFibGVcbiAgLy8gcmVnZW5lcmF0b3JSdW50aW1lIGluIHRoZSBvdXRlciBzY29wZSwgd2hpY2ggYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlXG4gIC8vIGluamVjdGVkIGVhc2lseSBieSBgYmluL3JlZ2VuZXJhdG9yIC0taW5jbHVkZS1ydW50aW1lIHNjcmlwdC5qc2AuXG4gIHJldHVybiBleHBvcnRzO1xuXG59KFxuICAvLyBJZiB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGUsIHVzZSBtb2R1bGUuZXhwb3J0c1xuICAvLyBhcyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIG5hbWVzcGFjZS4gT3RoZXJ3aXNlIGNyZWF0ZSBhIG5ldyBlbXB0eVxuICAvLyBvYmplY3QuIEVpdGhlciB3YXksIHRoZSByZXN1bHRpbmcgb2JqZWN0IHdpbGwgYmUgdXNlZCB0byBpbml0aWFsaXplXG4gIC8vIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgdmFyaWFibGUgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuXG4gICB0cnVlID8gbW9kdWxlLmV4cG9ydHMgOiB1bmRlZmluZWRcbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhNTM0XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODAzNFwiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiOGQxXCIpO1xudmFyIHNoYXJlZEtleSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjZWJkXCIpO1xudmFyIENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhYTgzXCIpO1xuXG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLy8gYE9iamVjdC5nZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0cHJvdG90eXBlb2Zcbm1vZHVsZS5leHBvcnRzID0gQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvdHlwZSA6IG51bGw7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImE1NWNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGJpbmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzYyOFwiKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAwMzNcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYjhkMVwiKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkMTdkXCIpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3MjZmXCIpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjcmVhdGUgPSBzcGVjaWZpY0NyZWF0ZSB8fCBhcnJheVNwZWNpZXNDcmVhdGU7XG4gICAgdmFyIHRhcmdldCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHZhbHVlLCByZXN1bHQ7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWx1ZSA9IHNlbGZbaW5kZXhdO1xuICAgICAgcmVzdWx0ID0gYm91bmRGdW5jdGlvbih2YWx1ZSwgaW5kZXgsIE8pO1xuICAgICAgaWYgKFRZUEUpIHtcbiAgICAgICAgaWYgKElTX01BUCkgdGFyZ2V0W2luZGV4XSA9IHJlc3VsdDsgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWx1ZTsgICAgICAgICAgICAgLy8gZmluZFxuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIGluZGV4OyAgICAgICAgICAgICAvLyBmaW5kSW5kZXhcbiAgICAgICAgICBjYXNlIDI6IHB1c2guY2FsbCh0YXJnZXQsIHZhbHVlKTsgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgIC8vIGV2ZXJ5XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5tYXBcbiAgbWFwOiBjcmVhdGVNZXRob2QoMSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuICBmaWx0ZXI6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kKDMpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmV2ZXJ5XG4gIGV2ZXJ5OiBjcmVhdGVNZXRob2QoNCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg1KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kKDYpXG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImE1ZDBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gZG9jdW1lbnQuY3VycmVudFNjcmlwdCBwb2x5ZmlsbCBieSBBZGFtIE1pbGxlclxuXG4vLyBNSVQgbGljZW5zZVxuXG4oZnVuY3Rpb24oZG9jdW1lbnQpe1xuICB2YXIgY3VycmVudFNjcmlwdCA9IFwiY3VycmVudFNjcmlwdFwiLFxuICAgICAgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsgLy8gTGl2ZSBOb2RlTGlzdCBjb2xsZWN0aW9uXG5cbiAgLy8gSWYgYnJvd3NlciBuZWVkcyBjdXJyZW50U2NyaXB0IHBvbHlmaWxsLCBhZGQgZ2V0IGN1cnJlbnRTY3JpcHQoKSB0byB0aGUgZG9jdW1lbnQgb2JqZWN0XG4gIGlmICghKGN1cnJlbnRTY3JpcHQgaW4gZG9jdW1lbnQpKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCBjdXJyZW50U2NyaXB0LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgLy8gSUUgNi0xMCBzdXBwb3J0cyBzY3JpcHQgcmVhZHlTdGF0ZVxuICAgICAgICAvLyBJRSAxMCsgc3VwcG9ydCBzdGFjayB0cmFjZVxuICAgICAgICB0cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG5cbiAgICAgICAgICAvLyBGaW5kIHRoZSBzZWNvbmQgbWF0Y2ggZm9yIHRoZSBcImF0XCIgc3RyaW5nIHRvIGdldCBmaWxlIHNyYyB1cmwgZnJvbSBzdGFjay5cbiAgICAgICAgICAvLyBTcGVjaWZpY2FsbHkgd29ya3Mgd2l0aCB0aGUgZm9ybWF0IG9mIHN0YWNrIHRyYWNlcyBpbiBJRS5cbiAgICAgICAgICB2YXIgaSwgcmVzID0gKCgvLiphdCBbXlxcKF0qXFwoKC4qKTouKzouK1xcKSQvaWcpLmV4ZWMoZXJyLnN0YWNrKSB8fCBbZmFsc2VdKVsxXTtcblxuICAgICAgICAgIC8vIEZvciBhbGwgc2NyaXB0cyBvbiB0aGUgcGFnZSwgaWYgc3JjIG1hdGNoZXMgb3IgaWYgcmVhZHkgc3RhdGUgaXMgaW50ZXJhY3RpdmUsIHJldHVybiB0aGUgc2NyaXB0IHRhZ1xuICAgICAgICAgIGZvcihpIGluIHNjcmlwdHMpe1xuICAgICAgICAgICAgaWYoc2NyaXB0c1tpXS5zcmMgPT0gcmVzIHx8IHNjcmlwdHNbaV0ucmVhZHlTdGF0ZSA9PSBcImludGVyYWN0aXZlXCIpe1xuICAgICAgICAgICAgICByZXR1cm4gc2NyaXB0c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59KShkb2N1bWVudCk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYTg2NVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODgzYVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYTkzMFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3ZTI3XCIpO1xuXG4vLyBgdGhpc051bWJlclZhbHVlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRoaXNudW1iZXJ2YWx1ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnbnVtYmVyJyAmJiBjbGFzc29mKHZhbHVlKSAhPSAnTnVtYmVyJykge1xuICAgIHRocm93IFR5cGVFcnJvcignSW5jb3JyZWN0IGludm9jYXRpb24nKTtcbiAgfVxuICByZXR1cm4gK3ZhbHVlO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJhYTgzXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgRi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsO1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImFlZTRcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI0ZWMyXCIpO1xudmFyIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjNlMjJcIik7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImFmM2RcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImM3ZTFcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAwMGRcIik7XG52YXIgVjhfVkVSU0lPTiA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkNDFiXCIpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICAvLyBXZSBjYW4ndCB1c2UgdGhpcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3N1xuICByZXR1cm4gVjhfVkVSU0lPTiA+PSA1MSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IGFycmF5LmNvbnN0cnVjdG9yID0ge307XG4gICAgY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBmb286IDEgfTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheVtNRVRIT0RfTkFNRV0oQm9vbGVhbikuZm9vICE9PSAxO1xuICB9KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYjMxMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTg2NVwiKTtcblxuLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgRU5UUklFUykge1xuICB0cnkge1xuICAgIHJldHVybiBFTlRSSUVTID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdmFyIHJldHVybk1ldGhvZCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0dXJuTWV0aG9kICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldHVybk1ldGhvZC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYjRiZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTFiMVwiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjlmXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4OGI1XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJiOGQxXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJmZTBcIik7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImJhMWZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwMDBkXCIpO1xuXG52YXIgTUFUQ0ggPSB3ZWxsS25vd25TeW1ib2woJ21hdGNoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIHZhciByZWdleHAgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0cnkge1xuICAgICAgcmVnZXhwW01BVENIXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuICcvLi8nW01FVEhPRF9OQU1FXShyZWdleHApO1xuICAgIH0gY2F0Y2ggKGYpIHsgLyogZW1wdHkgKi8gfVxuICB9IHJldHVybiBmYWxzZTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYmE0ZFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyIHBhcnNlSW50SW1wbGVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiN2I0NVwiKTtcblxuLy8gYHBhcnNlSW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXBhcnNlaW50LXN0cmluZy1yYWRpeFxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiBwYXJzZUludCAhPSBwYXJzZUludEltcGxlbWVudGF0aW9uIH0sIHtcbiAgcGFyc2VJbnQ6IHBhcnNlSW50SW1wbGVtZW50YXRpb25cbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImJiMThcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhODY1XCIpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LmRvdEFsbCkgcmVzdWx0ICs9ICdzJztcbiAgaWYgKHRoYXQudW5pY29kZSkgcmVzdWx0ICs9ICd1JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJiYzZkXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhMWIxXCIpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA2OWZcIikuZjtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIEZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmcgPSBGdW5jdGlvblByb3RvdHlwZS50b1N0cmluZztcbnZhciBuYW1lUkUgPSAvXlxccypmdW5jdGlvbiAoW14gKF0qKS87XG52YXIgTkFNRSA9ICduYW1lJztcblxuLy8gRnVuY3Rpb24gaW5zdGFuY2VzIGAubmFtZWAgcHJvcGVydHlcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWZ1bmN0aW9uLWluc3RhbmNlcy1uYW1lXG5pZiAoREVTQ1JJUFRPUlMgJiYgIShOQU1FIGluIEZ1bmN0aW9uUHJvdG90eXBlKSkge1xuICBkZWZpbmVQcm9wZXJ0eShGdW5jdGlvblByb3RvdHlwZSwgTkFNRSwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nLmNhbGwodGhpcykubWF0Y2gobmFtZVJFKVsxXTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImJjYmNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjRjXCIpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiNGJlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGdsb2JhbCwga2V5LCB2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImJkZGVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciByZWdleHBGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiYjE4XCIpO1xudmFyIHN0aWNreUhlbHBlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiY2MyYlwiKTtcblxudmFyIG5hdGl2ZUV4ZWMgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWM7XG4vLyBUaGlzIGFsd2F5cyByZWZlcnMgdG8gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGVcbi8vIFN0cmluZyNyZXBsYWNlIHBvbHlmaWxsIHVzZXMgLi9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzLFxuLy8gd2hpY2ggbG9hZHMgdGhpcyBmaWxlIGJlZm9yZSBwYXRjaGluZyB0aGUgbWV0aG9kLlxudmFyIG5hdGl2ZVJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG52YXIgVU5TVVBQT1JURURfWSA9IHN0aWNreUhlbHBlcnMuVU5TVVBQT1JURURfWSB8fCBzdGlja3lIZWxwZXJzLkJST0tFTl9DQVJFVDtcblxuLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXAsIGNvcGllZCBmcm9tIGVzNS1zaGltJ3MgU3RyaW5nI3NwbGl0IHBhdGNoLlxudmFyIE5QQ0dfSU5DTFVERUQgPSAvKCk/Py8uZXhlYygnJylbMV0gIT09IHVuZGVmaW5lZDtcblxudmFyIFBBVENIID0gVVBEQVRFU19MQVNUX0lOREVYX1dST05HIHx8IE5QQ0dfSU5DTFVERUQgfHwgVU5TVVBQT1JURURfWTtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG4gICAgdmFyIHN0aWNreSA9IFVOU1VQUE9SVEVEX1kgJiYgcmUuc3RpY2t5O1xuICAgIHZhciBmbGFncyA9IHJlZ2V4cEZsYWdzLmNhbGwocmUpO1xuICAgIHZhciBzb3VyY2UgPSByZS5zb3VyY2U7XG4gICAgdmFyIGNoYXJzQWRkZWQgPSAwO1xuICAgIHZhciBzdHJDb3B5ID0gc3RyO1xuXG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgZmxhZ3MgPSBmbGFncy5yZXBsYWNlKCd5JywgJycpO1xuICAgICAgaWYgKGZsYWdzLmluZGV4T2YoJ2cnKSA9PT0gLTEpIHtcbiAgICAgICAgZmxhZ3MgKz0gJ2cnO1xuICAgICAgfVxuXG4gICAgICBzdHJDb3B5ID0gU3RyaW5nKHN0cikuc2xpY2UocmUubGFzdEluZGV4KTtcbiAgICAgIC8vIFN1cHBvcnQgYW5jaG9yZWQgc3RpY2t5IGJlaGF2aW9yLlxuICAgICAgaWYgKHJlLmxhc3RJbmRleCA+IDAgJiYgKCFyZS5tdWx0aWxpbmUgfHwgcmUubXVsdGlsaW5lICYmIHN0cltyZS5sYXN0SW5kZXggLSAxXSAhPT0gJ1xcbicpKSB7XG4gICAgICAgIHNvdXJjZSA9ICcoPzogJyArIHNvdXJjZSArICcpJztcbiAgICAgICAgc3RyQ29weSA9ICcgJyArIHN0ckNvcHk7XG4gICAgICAgIGNoYXJzQWRkZWQrKztcbiAgICAgIH1cbiAgICAgIC8vIF4oPyArIHJ4ICsgKSBpcyBuZWVkZWQsIGluIGNvbWJpbmF0aW9uIHdpdGggc29tZSBzdHIgc2xpY2luZywgdG9cbiAgICAgIC8vIHNpbXVsYXRlIHRoZSAneScgZmxhZy5cbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14oPzonICsgc291cmNlICsgJyknLCBmbGFncyk7XG4gICAgfVxuXG4gICAgaWYgKE5QQ0dfSU5DTFVERUQpIHtcbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14nICsgc291cmNlICsgJyQoPyFcXFxccyknLCBmbGFncyk7XG4gICAgfVxuICAgIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcpIGxhc3RJbmRleCA9IHJlLmxhc3RJbmRleDtcblxuICAgIG1hdGNoID0gbmF0aXZlRXhlYy5jYWxsKHN0aWNreSA/IHJlQ29weSA6IHJlLCBzdHJDb3B5KTtcblxuICAgIGlmIChzdGlja3kpIHtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBtYXRjaC5pbnB1dCA9IG1hdGNoLmlucHV0LnNsaWNlKGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaC5pbmRleCA9IHJlLmxhc3RJbmRleDtcbiAgICAgICAgcmUubGFzdEluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIH0gZWxzZSByZS5sYXN0SW5kZXggPSAwO1xuICAgIH0gZWxzZSBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZS5sYXN0SW5kZXggPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzBjM1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBpdGVyYWJsZSBET00gY29sbGVjdGlvbnNcbi8vIGZsYWcgLSBgaXRlcmFibGVgIGludGVyZmFjZSAtICdlbnRyaWVzJywgJ2tleXMnLCAndmFsdWVzJywgJ2ZvckVhY2gnIG1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0ge1xuICBDU1NSdWxlTGlzdDogMCxcbiAgQ1NTU3R5bGVEZWNsYXJhdGlvbjogMCxcbiAgQ1NTVmFsdWVMaXN0OiAwLFxuICBDbGllbnRSZWN0TGlzdDogMCxcbiAgRE9NUmVjdExpc3Q6IDAsXG4gIERPTVN0cmluZ0xpc3Q6IDAsXG4gIERPTVRva2VuTGlzdDogMSxcbiAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IDAsXG4gIEZpbGVMaXN0OiAwLFxuICBIVE1MQWxsQ29sbGVjdGlvbjogMCxcbiAgSFRNTENvbGxlY3Rpb246IDAsXG4gIEhUTUxGb3JtRWxlbWVudDogMCxcbiAgSFRNTFNlbGVjdEVsZW1lbnQ6IDAsXG4gIE1lZGlhTGlzdDogMCxcbiAgTWltZVR5cGVBcnJheTogMCxcbiAgTmFtZWROb2RlTWFwOiAwLFxuICBOb2RlTGlzdDogMSxcbiAgUGFpbnRSZXF1ZXN0TGlzdDogMCxcbiAgUGx1Z2luOiAwLFxuICBQbHVnaW5BcnJheTogMCxcbiAgU1ZHTGVuZ3RoTGlzdDogMCxcbiAgU1ZHTnVtYmVyTGlzdDogMCxcbiAgU1ZHUGF0aFNlZ0xpc3Q6IDAsXG4gIFNWR1BvaW50TGlzdDogMCxcbiAgU1ZHU3RyaW5nTGlzdDogMCxcbiAgU1ZHVHJhbnNmb3JtTGlzdDogMCxcbiAgU291cmNlQnVmZmVyTGlzdDogMCxcbiAgU3R5bGVTaGVldExpc3Q6IDAsXG4gIFRleHRUcmFja0N1ZUxpc3Q6IDAsXG4gIFRleHRUcmFja0xpc3Q6IDAsXG4gIFRvdWNoTGlzdDogMFxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjMThjXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4NjFmXCIpO1xudmFyIG5vdEFSZWdFeHAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDI5M1wiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJmZTBcIik7XG52YXIgY29ycmVjdElzUmVnRXhwTG9naWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYmExZlwiKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlc1xuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFjb3JyZWN0SXNSZWdFeHBMb2dpYygnaW5jbHVkZXMnKSB9LCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhzZWFyY2hTdHJpbmcgLyogLCBwb3NpdGlvbiA9IDAgKi8pIHtcbiAgICByZXR1cm4gISF+U3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpXG4gICAgICAuaW5kZXhPZihub3RBUmVnRXhwKHNlYXJjaFN0cmluZyksIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzMzZlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTFiMVwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTY2Y1wiKTtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT0gNztcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImMzN2ZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2MWZcIik7XG52YXIgZXhlYyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiZGRlXCIpO1xuXG4kKHsgdGFyZ2V0OiAnUmVnRXhwJywgcHJvdG86IHRydWUsIGZvcmNlZDogLy4vLmV4ZWMgIT09IGV4ZWMgfSwge1xuICBleGVjOiBleGVjXG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjNTA0XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImEwMTZcIik7XG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlYjI4XCIpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IHt9LnRvU3RyaW5nIDogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiAnW29iamVjdCAnICsgY2xhc3NvZih0aGlzKSArICddJztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzZlZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzdlMVwiKTtcbnZhciB3aGl0ZXNwYWNlcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI2MWU4XCIpO1xuXG52YXIgbm9uID0gJ1xcdTIwMEJcXHUwMDg1XFx1MTgwRSc7XG5cbi8vIGNoZWNrIHRoYXQgYSBtZXRob2Qgd29ya3Mgd2l0aCB0aGUgY29ycmVjdCBsaXN0XG4vLyBvZiB3aGl0ZXNwYWNlcyBhbmQgaGFzIGEgY29ycmVjdCBuYW1lXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICByZXR1cm4gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXdoaXRlc3BhY2VzW01FVEhPRF9OQU1FXSgpIHx8IG5vbltNRVRIT0RfTkFNRV0oKSAhPSBub24gfHwgd2hpdGVzcGFjZXNbTUVUSE9EX05BTUVdLm5hbWUgIT09IE1FVEhPRF9OQU1FO1xuICB9KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiYzdlMVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImM4YmZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHBhdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZjFkOFwiKTtcbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODAzNFwiKTtcbnZhciB3cmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYwZTVcIik7XG52YXIgZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY5ZlwiKS5mO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChOQU1FKSB7XG4gIHZhciBTeW1ib2wgPSBwYXRoLlN5bWJvbCB8fCAocGF0aC5TeW1ib2wgPSB7fSk7XG4gIGlmICghaGFzKFN5bWJvbCwgTkFNRSkpIGRlZmluZVByb3BlcnR5KFN5bWJvbCwgTkFNRSwge1xuICAgIHZhbHVlOiB3cmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlLmYoTkFNRSlcbiAgfSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImM5MWVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI4MDM0XCIpO1xudmFyIG93bktleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNGI3NlwiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTNmZVwiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjlmXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhcyh0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjYzJiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xuXG4vLyBiYWJlbC1taW5pZnkgdHJhbnNwaWxlcyBSZWdFeHAoJ2EnLCAneScpIC0+IC9hL3kgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvcixcbi8vIHNvIHdlIHVzZSBhbiBpbnRlcm1lZGlhdGUgZnVuY3Rpb24uXG5mdW5jdGlvbiBSRShzLCBmKSB7XG4gIHJldHVybiBSZWdFeHAocywgZik7XG59XG5cbmV4cG9ydHMuVU5TVVBQT1JURURfWSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gYmFiZWwtbWluaWZ5IHRyYW5zcGlsZXMgUmVnRXhwKCdhJywgJ3knKSAtPiAvYS95IGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbiAgdmFyIHJlID0gUkUoJ2EnLCAneScpO1xuICByZS5sYXN0SW5kZXggPSAyO1xuICByZXR1cm4gcmUuZXhlYygnYWJjZCcpICE9IG51bGw7XG59KTtcblxuZXhwb3J0cy5CUk9LRU5fQ0FSRVQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTc3MzY4N1xuICB2YXIgcmUgPSBSRSgnXnInLCAnZ3knKTtcbiAgcmUubGFzdEluZGV4ID0gMjtcbiAgcmV0dXJuIHJlLmV4ZWMoJ3N0cicpICE9IG51bGw7XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjZDc1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY0Y1wiKTtcbnZhciBpbnNwZWN0U291cmNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjZhYzBcIik7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KGluc3BlY3RTb3VyY2UoV2Vha01hcCkpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImNlYmRcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkZTg2XCIpO1xudmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5OWQ4XCIpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJjZjMwXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjJmZTBcIik7XG5cbnZhciBxdW90ID0gL1wiL2c7XG5cbi8vIEIuMi4zLjIuMSBDcmVhdGVIVE1MKHN0cmluZywgdGFnLCBhdHRyaWJ1dGUsIHZhbHVlKVxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtY3JlYXRlaHRtbFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc3RyaW5nLCB0YWcsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgdmFyIFMgPSBTdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZShzdHJpbmcpKTtcbiAgdmFyIHAxID0gJzwnICsgdGFnO1xuICBpZiAoYXR0cmlidXRlICE9PSAnJykgcDEgKz0gJyAnICsgYXR0cmlidXRlICsgJz1cIicgKyBTdHJpbmcodmFsdWUpLnJlcGxhY2UocXVvdCwgJyZxdW90OycpICsgJ1wiJztcbiAgcmV0dXJuIHAxICsgJz4nICsgUyArICc8LycgKyB0YWcgKyAnPic7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImQxN2RcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkMjJlXCIpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZDIyZVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBUb0ludGVnZXJgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9pbnRlZ2VyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNOYU4oYXJndW1lbnQgPSArYXJndW1lbnQpID8gMCA6IChhcmd1bWVudCA+IDAgPyBmbG9vciA6IGNlaWwpKGFyZ3VtZW50KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZDNmZlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBgU2FtZVZhbHVlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXNhbWV2YWx1ZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaXMgfHwgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJkNDFiXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDY0Y1wiKTtcbnZhciB1c2VyQWdlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzcwYVwiKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gKyBtYXRjaFsxXTtcbn0gZWxzZSBpZiAodXNlckFnZW50KSB7XG4gIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyk7XG4gIGlmICghbWF0Y2ggfHwgbWF0Y2hbMV0gPj0gNzQpIHtcbiAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgaWYgKG1hdGNoKSB2ZXJzaW9uID0gbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uICYmICt2ZXJzaW9uO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImQ1YWZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIE5BVElWRV9TWU1CT0wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOTM5OFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfU1lNQk9MXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAmJiAhU3ltYm9sLnNoYW1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZDY1YVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIHJlZGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMyYzZcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzdlMVwiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMDAwZFwiKTtcbnZhciByZWdleHBFeGVjID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImJkZGVcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImI0YmVcIik7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbnZhciBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vICNyZXBsYWNlIG5lZWRzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIG5hbWVkIGdyb3Vwcy5cbiAgLy8gI21hdGNoIHdvcmtzIGZpbmUgYmVjYXVzZSBpdCBqdXN0IHJldHVybiB0aGUgZXhlYyByZXN1bHRzLCBldmVuIGlmIGl0IGhhc1xuICAvLyBhIFwiZ3JvcHNcIiBwcm9wZXJ0eS5cbiAgdmFyIHJlID0gLy4vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQuZ3JvdXBzID0geyBhOiAnNycgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICByZXR1cm4gJycucmVwbGFjZShyZSwgJyQ8YT4nKSAhPT0gJzcnO1xufSk7XG5cbi8vIElFIDw9IDExIHJlcGxhY2VzICQwIHdpdGggdGhlIHdob2xlIG1hdGNoLCBhcyBpZiBpdCB3YXMgJCZcbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYwMjQ2NjYvZ2V0dGluZy1pZS10by1yZXBsYWNlLWEtcmVnZXgtd2l0aC10aGUtbGl0ZXJhbC1zdHJpbmctMFxudmFyIFJFUExBQ0VfS0VFUFNfJDAgPSAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2EnLnJlcGxhY2UoLy4vLCAnJDAnKSA9PT0gJyQwJztcbn0pKCk7XG5cbi8vIENocm9tZSA1MSBoYXMgYSBidWdneSBcInNwbGl0XCIgaW1wbGVtZW50YXRpb24gd2hlbiBSZWdFeHAjZXhlYyAhPT0gbmF0aXZlRXhlY1xuLy8gV2VleCBKUyBoYXMgZnJvemVuIGJ1aWx0LWluIHByb3RvdHlwZXMsIHNvIHVzZSB0cnkgLyBjYXRjaCB3cmFwcGVyXG52YXIgU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gLyg/OikvO1xuICB2YXIgb3JpZ2luYWxFeGVjID0gcmUuZXhlYztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9yaWdpbmFsRXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xuICB2YXIgcmVzdWx0ID0gJ2FiJy5zcGxpdChyZSk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoICE9PSAyIHx8IHJlc3VsdFswXSAhPT0gJ2EnIHx8IHJlc3VsdFsxXSAhPT0gJ2InO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgbGVuZ3RoLCBleGVjLCBzaGFtKSB7XG4gIHZhciBTWU1CT0wgPSB3ZWxsS25vd25TeW1ib2woS0VZKTtcblxuICB2YXIgREVMRUdBVEVTX1RPX1NZTUJPTCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3RyaW5nIG1ldGhvZHMgY2FsbCBzeW1ib2wtbmFtZWQgUmVnRXAgbWV0aG9kc1xuICAgIHZhciBPID0ge307XG4gICAgT1tTWU1CT0xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfTtcbiAgICByZXR1cm4gJydbS0VZXShPKSAhPSA3O1xuICB9KTtcblxuICB2YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBERUxFR0FURVNfVE9fU1lNQk9MICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3ltYm9sLW5hbWVkIFJlZ0V4cCBtZXRob2RzIGNhbGwgLmV4ZWNcbiAgICB2YXIgZXhlY0NhbGxlZCA9IGZhbHNlO1xuICAgIHZhciByZSA9IC9hLztcblxuICAgIGlmIChLRVkgPT09ICdzcGxpdCcpIHtcbiAgICAgIC8vIFdlIGNhbid0IHVzZSByZWFsIHJlZ2V4IGhlcmUgc2luY2UgaXQgY2F1c2VzIGRlb3B0aW1pemF0aW9uXG4gICAgICAvLyBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBpbiBWOFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMwNlxuICAgICAgcmUgPSB7fTtcbiAgICAgIC8vIFJlZ0V4cFtAQHNwbGl0XSBkb2Vzbid0IGNhbGwgdGhlIHJlZ2V4J3MgZXhlYyBtZXRob2QsIGJ1dCBmaXJzdCBjcmVhdGVzXG4gICAgICAvLyBhIG5ldyBvbmUuIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBwYXRjaGVkIHJlZ2V4IHdoZW4gY3JlYXRpbmcgdGhlIG5ldyBvbmUuXG4gICAgICByZS5jb25zdHJ1Y3RvciA9IHt9O1xuICAgICAgcmUuY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZTsgfTtcbiAgICAgIHJlLmZsYWdzID0gJyc7XG4gICAgICByZVtTWU1CT0xdID0gLy4vW1NZTUJPTF07XG4gICAgfVxuXG4gICAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgZXhlY0NhbGxlZCA9IHRydWU7IHJldHVybiBudWxsOyB9O1xuXG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KTtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICAoS0VZID09PSAncmVwbGFjZScgJiYgIShSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyAmJiBSRVBMQUNFX0tFRVBTXyQwKSkgfHxcbiAgICAoS0VZID09PSAnc3BsaXQnICYmICFTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMpXG4gICkge1xuICAgIHZhciBuYXRpdmVSZWdFeHBNZXRob2QgPSAvLi9bU1lNQk9MXTtcbiAgICB2YXIgbWV0aG9kcyA9IGV4ZWMoU1lNQk9MLCAnJ1tLRVldLCBmdW5jdGlvbiAobmF0aXZlTWV0aG9kLCByZWdleHAsIHN0ciwgYXJnMiwgZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgIGlmIChyZWdleHAuZXhlYyA9PT0gcmVnZXhwRXhlYykge1xuICAgICAgICBpZiAoREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgICAvLyBUaGUgbmF0aXZlIFN0cmluZyBtZXRob2QgYWxyZWFkeSBkZWxlZ2F0ZXMgdG8gQEBtZXRob2QgKHRoaXNcbiAgICAgICAgICAvLyBwb2x5ZmlsbGVkIGZ1bmN0aW9uKSwgbGVhc2luZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gICAgICAgICAgLy8gV2UgYXZvaWQgaXQgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgbmF0aXZlIEBAbWV0aG9kIG1ldGhvZC5cbiAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlUmVnRXhwTWV0aG9kLmNhbGwocmVnZXhwLCBzdHIsIGFyZzIpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG5hdGl2ZU1ldGhvZC5jYWxsKHN0ciwgcmVnZXhwLCBhcmcyKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UgfTtcbiAgICB9LCB7IFJFUExBQ0VfS0VFUFNfJDA6IFJFUExBQ0VfS0VFUFNfJDAgfSk7XG4gICAgdmFyIHN0cmluZ01ldGhvZCA9IG1ldGhvZHNbMF07XG4gICAgdmFyIHJlZ2V4TWV0aG9kID0gbWV0aG9kc1sxXTtcblxuICAgIHJlZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsIEtFWSwgc3RyaW5nTWV0aG9kKTtcbiAgICByZWRlZmluZShSZWdFeHAucHJvdG90eXBlLCBTWU1CT0wsIGxlbmd0aCA9PSAyXG4gICAgICAvLyAyMS4yLjUuOCBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV0oc3RyaW5nLCByZXBsYWNlVmFsdWUpXG4gICAgICAvLyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KVxuICAgICAgPyBmdW5jdGlvbiAoc3RyaW5nLCBhcmcpIHsgcmV0dXJuIHJlZ2V4TWV0aG9kLmNhbGwoc3RyaW5nLCB0aGlzLCBhcmcpOyB9XG4gICAgICAvLyAyMS4yLjUuNiBSZWdFeHAucHJvdG90eXBlW0BAbWF0Y2hdKHN0cmluZylcbiAgICAgIC8vIDIxLjIuNS45IFJlZ0V4cC5wcm90b3R5cGVbQEBzZWFyY2hdKHN0cmluZylcbiAgICAgIDogZnVuY3Rpb24gKHN0cmluZykgeyByZXR1cm4gcmVnZXhNZXRob2QuY2FsbChzdHJpbmcsIHRoaXMpOyB9XG4gICAgKTtcbiAgfVxuXG4gIGlmIChzaGFtKSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZVtTWU1CT0xdLCAnc2hhbScsIHRydWUpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJkNzA5XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhODY1XCIpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNmVjM1wiKTtcbnZhciBlbnVtQnVnS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzZTIyXCIpO1xudmFyIGhpZGRlbktleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODNmZFwiKTtcbnZhciBodG1sID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjk3NjBcIik7XG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjk2NmNcIik7XG52YXIgc2hhcmVkS2V5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImNlYmRcIik7XG5cbnZhciBHVCA9ICc+JztcbnZhciBMVCA9ICc8JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBTQ1JJUFQgPSAnc2NyaXB0JztcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIEVtcHR5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbnZhciBzY3JpcHRUYWcgPSBmdW5jdGlvbiAoY29udGVudCkge1xuICByZXR1cm4gTFQgKyBTQ1JJUFQgKyBHVCArIGNvbnRlbnQgKyBMVCArICcvJyArIFNDUklQVCArIEdUO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIEFjdGl2ZVggT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYID0gZnVuY3Rpb24gKGFjdGl2ZVhEb2N1bWVudCkge1xuICBhY3RpdmVYRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCcnKSk7XG4gIGFjdGl2ZVhEb2N1bWVudC5jbG9zZSgpO1xuICB2YXIgdGVtcCA9IGFjdGl2ZVhEb2N1bWVudC5wYXJlbnRXaW5kb3cuT2JqZWN0O1xuICBhY3RpdmVYRG9jdW1lbnQgPSBudWxsOyAvLyBhdm9pZCBtZW1vcnkgbGVha1xuICByZXR1cm4gdGVtcDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgSlMgPSAnamF2YScgKyBTQ1JJUFQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ3NVxuICBpZnJhbWUuc3JjID0gU3RyaW5nKEpTKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJ2RvY3VtZW50LkY9T2JqZWN0JykpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICByZXR1cm4gaWZyYW1lRG9jdW1lbnQuRjtcbn07XG5cbi8vIENoZWNrIGZvciBkb2N1bWVudC5kb21haW4gYW5kIGFjdGl2ZSB4IHN1cHBvcnRcbi8vIE5vIG5lZWQgdG8gdXNlIGFjdGl2ZSB4IGFwcHJvYWNoIHdoZW4gZG9jdW1lbnQuZG9tYWluIGlzIG5vdCBzZXRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0vaXNzdWVzLzE1MFxuLy8gdmFyaWF0aW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9raXRjYW1icmlkZ2UvZXM1LXNoaW0vY29tbWl0LzRmNzM4YWMwNjYzNDZcbi8vIGF2b2lkIElFIEdDIGJ1Z1xudmFyIGFjdGl2ZVhEb2N1bWVudDtcbnZhciBOdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLyogZ2xvYmFsIEFjdGl2ZVhPYmplY3QgKi9cbiAgICBhY3RpdmVYRG9jdW1lbnQgPSBkb2N1bWVudC5kb21haW4gJiYgbmV3IEFjdGl2ZVhPYmplY3QoJ2h0bWxmaWxlJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGlnbm9yZSAqLyB9XG4gIE51bGxQcm90b09iamVjdCA9IGFjdGl2ZVhEb2N1bWVudCA/IE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYWN0aXZlWERvY3VtZW50KSA6IE51bGxQcm90b09iamVjdFZpYUlGcmFtZSgpO1xuICB2YXIgbGVuZ3RoID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBOdWxsUHJvdG9PYmplY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tsZW5ndGhdXTtcbiAgcmV0dXJuIE51bGxQcm90b09iamVjdCgpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eUNvbnN0cnVjdG9yW1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHlDb25zdHJ1Y3RvcigpO1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gTnVsbFByb3RvT2JqZWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkZWZpbmVQcm9wZXJ0aWVzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImQ3MmNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAwMzNcIik7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIyZmUwXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImQ3ZDdcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBjaGFyQXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZjEwN1wiKS5jaGFyQXQ7XG5cbi8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYWR2YW5jZXN0cmluZ2luZGV4XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChTLCBpbmRleCwgdW5pY29kZSkge1xuICByZXR1cm4gaW5kZXggKyAodW5pY29kZSA/IGNoYXJBdChTLCBpbmRleCkubGVuZ3RoIDogMSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImRhNGZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODYxZlwiKTtcbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhMWIxXCIpO1xudmFyIG93bktleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNGI3NlwiKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDcyY1wiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTNmZVwiKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI1NGI4XCIpO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvcnNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBzaGFtOiAhREVTQ1JJUFRPUlMgfSwge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gICAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICAgIHZhciBrZXlzID0gb3duS2V5cyhPKTtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIga2V5LCBkZXNjcmlwdG9yO1xuICAgIHdoaWxlIChrZXlzLmxlbmd0aCA+IGluZGV4KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIGtleSA9IGtleXNbaW5kZXgrK10pO1xuICAgICAgaWYgKGRlc2NyaXB0b3IgIT09IHVuZGVmaW5lZCkgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJkYzUxXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19taW5pX2Nzc19leHRyYWN0X3BsdWdpbl9kaXN0X2xvYWRlcl9qc19yZWZfNl9vbmVPZl8xXzBfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9kaXN0X2Nqc19qc19yZWZfNl9vbmVPZl8xXzFfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfbG9hZGVyc19zdHlsZVBvc3RMb2FkZXJfanNfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfcG9zdGNzc19sb2FkZXJfc3JjX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMl9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9pbmRleF9qc192dWVfbG9hZGVyX29wdGlvbnNfdnNSb3dfdnVlX3Z1ZV90eXBlX3N0eWxlX2luZGV4XzBfbGFuZ19jc3NfX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNGNjZVwiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfbWluaV9jc3NfZXh0cmFjdF9wbHVnaW5fZGlzdF9sb2FkZXJfanNfcmVmXzZfb25lT2ZfMV8wX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX2Nzc19sb2FkZXJfZGlzdF9janNfanNfcmVmXzZfb25lT2ZfMV8xX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2xvYWRlcnNfc3R5bGVQb3N0TG9hZGVyX2pzX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX3Bvc3Rjc3NfbG9hZGVyX3NyY19pbmRleF9qc19yZWZfNl9vbmVPZl8xXzJfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfY2FjaGVfbG9hZGVyX2Rpc3RfY2pzX2pzX3JlZl8wXzBfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfaW5kZXhfanNfdnVlX2xvYWRlcl9vcHRpb25zX3ZzUm93X3Z1ZV92dWVfdHlwZV9zdHlsZV9pbmRleF8wX2xhbmdfY3NzX19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19taW5pX2Nzc19leHRyYWN0X3BsdWdpbl9kaXN0X2xvYWRlcl9qc19yZWZfNl9vbmVPZl8xXzBfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9kaXN0X2Nqc19qc19yZWZfNl9vbmVPZl8xXzFfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfbG9hZGVyc19zdHlsZVBvc3RMb2FkZXJfanNfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfcG9zdGNzc19sb2FkZXJfc3JjX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMl9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9pbmRleF9qc192dWVfbG9hZGVyX29wdGlvbnNfdnNSb3dfdnVlX3Z1ZV90eXBlX3N0eWxlX2luZGV4XzBfbGFuZ19jc3NfX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18pO1xuLyogdW51c2VkIGhhcm1vbnkgcmVleHBvcnQgKiAqL1xuIC8qIHVudXNlZCBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBfdW51c2VkX3dlYnBhY2tfZGVmYXVsdF9leHBvcnQgPSAoX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX21pbmlfY3NzX2V4dHJhY3RfcGx1Z2luX2Rpc3RfbG9hZGVyX2pzX3JlZl82X29uZU9mXzFfMF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19jc3NfbG9hZGVyX2Rpc3RfY2pzX2pzX3JlZl82X29uZU9mXzFfMV9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9sb2FkZXJzX3N0eWxlUG9zdExvYWRlcl9qc19BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8yX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX2NhY2hlX2xvYWRlcl9kaXN0X2Nqc19qc19yZWZfMF8wX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2luZGV4X2pzX3Z1ZV9sb2FkZXJfb3B0aW9uc192c1Jvd192dWVfdnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9sYW5nX2Nzc19fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0LmEpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJkZTg2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjRmZjFcIik7XG52YXIgc3RvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjFlYlwiKTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246ICczLjYuMScsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImUwMTBcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2MWZcIik7XG52YXIgJHRyaW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMTg2NVwiKS50cmltO1xudmFyIGZvcmNlZFN0cmluZ1RyaW1NZXRob2QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYzZlZVwiKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUudHJpbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1cbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdUcmltTWV0aG9kKCd0cmltJykgfSwge1xuICB0cmltOiBmdW5jdGlvbiB0cmltKCkge1xuICAgIHJldHVybiAkdHJpbSh0aGlzKTtcbiAgfVxufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZTMwY1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIHJlZGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjMyYzZcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTg2NVwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xudmFyIGZsYWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImJiMThcIik7XG5cbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG52YXIgbmF0aXZlVG9TdHJpbmcgPSBSZWdFeHBQcm90b3R5cGVbVE9fU1RSSU5HXTtcblxudmFyIE5PVF9HRU5FUklDID0gZmFpbHMoZnVuY3Rpb24gKCkgeyByZXR1cm4gbmF0aXZlVG9TdHJpbmcuY2FsbCh7IHNvdXJjZTogJ2EnLCBmbGFnczogJ2InIH0pICE9ICcvYS9iJzsgfSk7XG4vLyBGRjQ0LSBSZWdFeHAjdG9TdHJpbmcgaGFzIGEgd3JvbmcgbmFtZVxudmFyIElOQ09SUkVDVF9OQU1FID0gbmF0aXZlVG9TdHJpbmcubmFtZSAhPSBUT19TVFJJTkc7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbmlmIChOT1RfR0VORVJJQyB8fCBJTkNPUlJFQ1RfTkFNRSkge1xuICByZWRlZmluZShSZWdFeHAucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIHAgPSBTdHJpbmcoUi5zb3VyY2UpO1xuICAgIHZhciByZiA9IFIuZmxhZ3M7XG4gICAgdmFyIGYgPSBTdHJpbmcocmYgPT09IHVuZGVmaW5lZCAmJiBSIGluc3RhbmNlb2YgUmVnRXhwICYmICEoJ2ZsYWdzJyBpbiBSZWdFeHBQcm90b3R5cGUpID8gZmxhZ3MuY2FsbChSKSA6IHJmKTtcbiAgICByZXR1cm4gJy8nICsgcCArICcvJyArIGY7XG4gIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xufVxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImUzMGMxXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgJGZvckVhY2ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTU1Y1wiKS5mb3JFYWNoO1xudmFyIHNsb3BweUFycmF5TWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjM5MzRcIik7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxubW9kdWxlLmV4cG9ydHMgPSBzbG9wcHlBcnJheU1ldGhvZCgnZm9yRWFjaCcpID8gZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJGZvckVhY2godGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSA6IFtdLmZvckVhY2g7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZTcyNFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdG9JbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImQ3MmNcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiZDE3ZFwiKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNzAxOVwiKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZTc4Y1wiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAwMGRcIik7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBTQUZFX0NMT1NJTkcgPSBmYWxzZTtcblxudHJ5IHtcbiAgdmFyIGNhbGxlZCA9IDA7XG4gIHZhciBpdGVyYXRvcldpdGhSZXR1cm4gPSB7XG4gICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHsgZG9uZTogISFjYWxsZWQrKyB9O1xuICAgIH0sXG4gICAgJ3JldHVybic6IGZ1bmN0aW9uICgpIHtcbiAgICAgIFNBRkVfQ0xPU0lORyA9IHRydWU7XG4gICAgfVxuICB9O1xuICBpdGVyYXRvcldpdGhSZXR1cm5bSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKGl0ZXJhdG9yV2l0aFJldHVybiwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYywgU0tJUF9DTE9TSU5HKSB7XG4gIGlmICghU0tJUF9DTE9TSU5HICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIElURVJBVElPTl9TVVBQT1JUID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIG9iamVjdCA9IHt9O1xuICAgIG9iamVjdFtJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogSVRFUkFUSU9OX1NVUFBPUlQgPSB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgICBleGVjKG9iamVjdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIElURVJBVElPTl9TVVBQT1JUO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJlYjI4XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiYTAxNlwiKTtcbnZhciBjbGFzc29mUmF3ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjdlMjdcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAwMGRcIik7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBDT1JSRUNUX0FSR1VNRU5UUyA9IGNsYXNzb2ZSYXcoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gRVM2KyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2Bcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8gY2xhc3NvZlJhdyA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgdGFnLCByZXN1bHQ7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mICh0YWcgPSB0cnlHZXQoTyA9IE9iamVjdChpdCksIFRPX1NUUklOR19UQUcpKSA9PSAnc3RyaW5nJyA/IHRhZ1xuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQ09SUkVDVF9BUkdVTUVOVFMgPyBjbGFzc29mUmF3KE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKHJlc3VsdCA9IGNsYXNzb2ZSYXcoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiByZXN1bHQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImYxMDdcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oXCJkMjJlXCIpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmZlMFwiKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyBjb2RlUG9pbnRBdCwgYXQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChDT05WRVJUX1RPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBwb3MpIHtcbiAgICB2YXIgUyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgICB2YXIgZmlyc3QsIHNlY29uZDtcbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGZpcnN0ID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgICByZXR1cm4gZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwgcG9zaXRpb24gKyAxID09PSBzaXplXG4gICAgICB8fCAoc2Vjb25kID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgICA/IENPTlZFUlRfVE9fU1RSSU5HID8gUy5jaGFyQXQocG9zaXRpb24pIDogZmlyc3RcbiAgICAgICAgOiBDT05WRVJUX1RPX1NUUklORyA/IFMuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgMikgOiAoZmlyc3QgLSAweEQ4MDAgPDwgMTApICsgKHNlY29uZCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdFxuICBjb2RlQXQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxuICBjaGFyQXQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJmMWEyXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhODY1XCIpO1xudmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3MDY3XCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwMDBkXCIpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBgU3BlY2llc0NvbnN0cnVjdG9yYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXNwZWNpZXNjb25zdHJ1Y3RvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgZGVmYXVsdENvbnN0cnVjdG9yKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IGRlZmF1bHRDb25zdHJ1Y3RvciA6IGFGdW5jdGlvbihTKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZjFkOFwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjA2NGNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImYyYzNcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODYxZlwiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiOGQxXCIpO1xudmFyIG5hdGl2ZUtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNWNkNFwiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJjN2UxXCIpO1xuXG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgbmF0aXZlS2V5cygxKTsgfSk7XG5cbi8vIGBPYmplY3Qua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRkFJTFNfT05fUFJJTUlUSVZFUyB9LCB7XG4gIGtleXM6IGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyh0b09iamVjdChpdCkpO1xuICB9XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJmMmZlXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19taW5pX2Nzc19leHRyYWN0X3BsdWdpbl9kaXN0X2xvYWRlcl9qc19yZWZfNl9vbmVPZl8xXzBfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9kaXN0X2Nqc19qc19yZWZfNl9vbmVPZl8xXzFfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfbG9hZGVyc19zdHlsZVBvc3RMb2FkZXJfanNfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfcG9zdGNzc19sb2FkZXJfc3JjX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMl9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9pbmRleF9qc192dWVfbG9hZGVyX29wdGlvbnNfdnNDb2xfdnVlX3Z1ZV90eXBlX3N0eWxlX2luZGV4XzBfbGFuZ19jc3NfX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNjAxY1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfbWluaV9jc3NfZXh0cmFjdF9wbHVnaW5fZGlzdF9sb2FkZXJfanNfcmVmXzZfb25lT2ZfMV8wX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX2Nzc19sb2FkZXJfZGlzdF9janNfanNfcmVmXzZfb25lT2ZfMV8xX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2xvYWRlcnNfc3R5bGVQb3N0TG9hZGVyX2pzX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX3Bvc3Rjc3NfbG9hZGVyX3NyY19pbmRleF9qc19yZWZfNl9vbmVPZl8xXzJfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfY2FjaGVfbG9hZGVyX2Rpc3RfY2pzX2pzX3JlZl8wXzBfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfaW5kZXhfanNfdnVlX2xvYWRlcl9vcHRpb25zX3ZzQ29sX3Z1ZV92dWVfdHlwZV9zdHlsZV9pbmRleF8wX2xhbmdfY3NzX19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19taW5pX2Nzc19leHRyYWN0X3BsdWdpbl9kaXN0X2xvYWRlcl9qc19yZWZfNl9vbmVPZl8xXzBfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfY3NzX2xvYWRlcl9kaXN0X2Nqc19qc19yZWZfNl9vbmVPZl8xXzFfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfbG9hZGVyc19zdHlsZVBvc3RMb2FkZXJfanNfQXBwRGF0YV9Sb2FtaW5nX25wbV9ub2RlX21vZHVsZXNfdnVlX2NsaV9zZXJ2aWNlX2dsb2JhbF9ub2RlX21vZHVsZXNfcG9zdGNzc19sb2FkZXJfc3JjX2luZGV4X2pzX3JlZl82X29uZU9mXzFfMl9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19jYWNoZV9sb2FkZXJfZGlzdF9janNfanNfcmVmXzBfMF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9pbmRleF9qc192dWVfbG9hZGVyX29wdGlvbnNfdnNDb2xfdnVlX3Z1ZV90eXBlX3N0eWxlX2luZGV4XzBfbGFuZ19jc3NfX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18pO1xuLyogdW51c2VkIGhhcm1vbnkgcmVleHBvcnQgKiAqL1xuIC8qIHVudXNlZCBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBfdW51c2VkX3dlYnBhY2tfZGVmYXVsdF9leHBvcnQgPSAoX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX21pbmlfY3NzX2V4dHJhY3RfcGx1Z2luX2Rpc3RfbG9hZGVyX2pzX3JlZl82X29uZU9mXzFfMF9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19jc3NfbG9hZGVyX2Rpc3RfY2pzX2pzX3JlZl82X29uZU9mXzFfMV9BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9sb2FkZXJzX3N0eWxlUG9zdExvYWRlcl9qc19BcHBEYXRhX1JvYW1pbmdfbnBtX25vZGVfbW9kdWxlc192dWVfY2xpX3NlcnZpY2VfZ2xvYmFsX25vZGVfbW9kdWxlc19wb3N0Y3NzX2xvYWRlcl9zcmNfaW5kZXhfanNfcmVmXzZfb25lT2ZfMV8yX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX2NhY2hlX2xvYWRlcl9kaXN0X2Nqc19qc19yZWZfMF8wX0FwcERhdGFfUm9hbWluZ19ucG1fbm9kZV9tb2R1bGVzX3Z1ZV9jbGlfc2VydmljZV9nbG9iYWxfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX2luZGV4X2pzX3Z1ZV9sb2FkZXJfb3B0aW9uc192c0NvbF92dWVfdnVlX3R5cGVfc3R5bGVfaW5kZXhfMF9sYW5nX2Nzc19fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0LmEpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJmNTY0XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhMWIxXCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjRjXCIpO1xudmFyIGlzRm9yY2VkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjYwOGRcIik7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMGE4N1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwNjlmXCIpLmY7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJhZWU0XCIpLmY7XG52YXIgaXNSZWdFeHAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiMmMxN1wiKTtcbnZhciBnZXRGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJiYjE4XCIpO1xudmFyIHN0aWNreUhlbHBlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiY2MyYlwiKTtcbnZhciByZWRlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIzMmM2XCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcImM3ZTFcIik7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCIwOTdlXCIpLnNldDtcbnZhciBzZXRTcGVjaWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjk2YzVcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjAwMGRcIik7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcbnZhciBOYXRpdmVSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IE5hdGl2ZVJlZ0V4cC5wcm90b3R5cGU7XG52YXIgcmUxID0gL2EvZztcbnZhciByZTIgPSAvYS9nO1xuXG4vLyBcIm5ld1wiIHNob3VsZCBjcmVhdGUgYSBuZXcgb2JqZWN0LCBvbGQgd2Via2l0IGJ1Z1xudmFyIENPUlJFQ1RfTkVXID0gbmV3IE5hdGl2ZVJlZ0V4cChyZTEpICE9PSByZTE7XG5cbnZhciBVTlNVUFBPUlRFRF9ZID0gc3RpY2t5SGVscGVycy5VTlNVUFBPUlRFRF9ZO1xuXG52YXIgRk9SQ0VEID0gREVTQ1JJUFRPUlMgJiYgaXNGb3JjZWQoJ1JlZ0V4cCcsICghQ09SUkVDVF9ORVcgfHwgVU5TVVBQT1JURURfWSB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJlMltNQVRDSF0gPSBmYWxzZTtcbiAgLy8gUmVnRXhwIGNvbnN0cnVjdG9yIGNhbiBhbHRlciBmbGFncyBhbmQgSXNSZWdFeHAgd29ya3MgY29ycmVjdCB3aXRoIEBAbWF0Y2hcbiAgcmV0dXJuIE5hdGl2ZVJlZ0V4cChyZTEpICE9IHJlMSB8fCBOYXRpdmVSZWdFeHAocmUyKSA9PSByZTIgfHwgTmF0aXZlUmVnRXhwKHJlMSwgJ2knKSAhPSAnL2EvaSc7XG59KSkpO1xuXG4vLyBgUmVnRXhwYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLWNvbnN0cnVjdG9yXG5pZiAoRk9SQ0VEKSB7XG4gIHZhciBSZWdFeHBXcmFwcGVyID0gZnVuY3Rpb24gUmVnRXhwKHBhdHRlcm4sIGZsYWdzKSB7XG4gICAgdmFyIHRoaXNJc1JlZ0V4cCA9IHRoaXMgaW5zdGFuY2VvZiBSZWdFeHBXcmFwcGVyO1xuICAgIHZhciBwYXR0ZXJuSXNSZWdFeHAgPSBpc1JlZ0V4cChwYXR0ZXJuKTtcbiAgICB2YXIgZmxhZ3NBcmVVbmRlZmluZWQgPSBmbGFncyA9PT0gdW5kZWZpbmVkO1xuICAgIHZhciBzdGlja3k7XG5cbiAgICBpZiAoIXRoaXNJc1JlZ0V4cCAmJiBwYXR0ZXJuSXNSZWdFeHAgJiYgcGF0dGVybi5jb25zdHJ1Y3RvciA9PT0gUmVnRXhwV3JhcHBlciAmJiBmbGFnc0FyZVVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHBhdHRlcm47XG4gICAgfVxuXG4gICAgaWYgKENPUlJFQ1RfTkVXKSB7XG4gICAgICBpZiAocGF0dGVybklzUmVnRXhwICYmICFmbGFnc0FyZVVuZGVmaW5lZCkgcGF0dGVybiA9IHBhdHRlcm4uc291cmNlO1xuICAgIH0gZWxzZSBpZiAocGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cFdyYXBwZXIpIHtcbiAgICAgIGlmIChmbGFnc0FyZVVuZGVmaW5lZCkgZmxhZ3MgPSBnZXRGbGFncy5jYWxsKHBhdHRlcm4pO1xuICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc291cmNlO1xuICAgIH1cblxuICAgIGlmIChVTlNVUFBPUlRFRF9ZKSB7XG4gICAgICBzdGlja3kgPSAhIWZsYWdzICYmIGZsYWdzLmluZGV4T2YoJ3knKSA+IC0xO1xuICAgICAgaWYgKHN0aWNreSkgZmxhZ3MgPSBmbGFncy5yZXBsYWNlKC95L2csICcnKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0gaW5oZXJpdElmUmVxdWlyZWQoXG4gICAgICBDT1JSRUNUX05FVyA/IG5ldyBOYXRpdmVSZWdFeHAocGF0dGVybiwgZmxhZ3MpIDogTmF0aXZlUmVnRXhwKHBhdHRlcm4sIGZsYWdzKSxcbiAgICAgIHRoaXNJc1JlZ0V4cCA/IHRoaXMgOiBSZWdFeHBQcm90b3R5cGUsXG4gICAgICBSZWdFeHBXcmFwcGVyXG4gICAgKTtcblxuICAgIGlmIChVTlNVUFBPUlRFRF9ZICYmIHN0aWNreSkgc2V0SW50ZXJuYWxTdGF0ZShyZXN1bHQsIHsgc3RpY2t5OiBzdGlja3kgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICB2YXIgcHJveHkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAga2V5IGluIFJlZ0V4cFdyYXBwZXIgfHwgZGVmaW5lUHJvcGVydHkoUmVnRXhwV3JhcHBlciwga2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5hdGl2ZVJlZ0V4cFtrZXldOyB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAoaXQpIHsgTmF0aXZlUmVnRXhwW2tleV0gPSBpdDsgfVxuICAgIH0pO1xuICB9O1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoTmF0aXZlUmVnRXhwKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgd2hpbGUgKGtleXMubGVuZ3RoID4gaW5kZXgpIHByb3h5KGtleXNbaW5kZXgrK10pO1xuICBSZWdFeHBQcm90b3R5cGUuY29uc3RydWN0b3IgPSBSZWdFeHBXcmFwcGVyO1xuICBSZWdFeHBXcmFwcGVyLnByb3RvdHlwZSA9IFJlZ0V4cFByb3RvdHlwZTtcbiAgcmVkZWZpbmUoZ2xvYmFsLCAnUmVnRXhwJywgUmVnRXhwV3JhcHBlcik7XG59XG5cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAtQEBzcGVjaWVzXG5zZXRTcGVjaWVzKCdSZWdFeHAnKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJmYWRkXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg2MWZcIik7XG52YXIgcGFyc2VGbG9hdEltcGxlbWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjE1OTdcIik7XG5cbi8vIGBwYXJzZUZsb2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXBhcnNlZmxvYXQtc3RyaW5nXG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IHBhcnNlRmxvYXQgIT0gcGFyc2VGbG9hdEltcGxlbWVudGF0aW9uIH0sIHtcbiAgcGFyc2VGbG9hdDogcGFyc2VGbG9hdEltcGxlbWVudGF0aW9uXG59KTtcblxuXG4vKioqLyB9KVxuXG4vKioqKioqLyB9KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vuesax/dist/vuesax.common.js\n");

/***/ }),

/***/ "./node_modules/vuesax/dist/vuesax.css":
/*!*********************************************!*\
  !*** ./node_modules/vuesax/dist/vuesax.css ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./vuesax.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vuesax/dist/vuesax.css\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0a80fe98\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./vuesax.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vuesax/dist/vuesax.css\", function() {\n     var newContent = __webpack_require__(/*! !../../css-loader??ref--6-oneOf-3-1!../../postcss-loader/src??ref--6-oneOf-3-2!./vuesax.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vuesax/dist/vuesax.css\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlc2F4L2Rpc3QvdnVlc2F4LmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWVzYXgvZGlzdC92dWVzYXguY3NzPzQ5YzQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTEhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0yIS4vdnVlc2F4LmNzc1wiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikuZGVmYXVsdFxudmFyIHVwZGF0ZSA9IGFkZChcIjBhODBmZTk4XCIsIGNvbnRlbnQsIGZhbHNlLCB7XCJzb3VyY2VNYXBcIjpmYWxzZSxcInNoYWRvd01vZGVcIjpmYWxzZX0pO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi92dWVzYXguY3NzXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTEhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0yIS4vdnVlc2F4LmNzc1wiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vuesax/dist/vuesax.css\n");

/***/ }),

/***/ "./node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var deepmerge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! deepmerge */ \"./node_modules/deepmerge/dist/es.js\");\n/* harmony import */ var shvl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! shvl */ \"./node_modules/shvl/dist/shvl.es.js\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(n,o,u){function i(t,e,r){try{return(r=e.getItem(t))&&void 0!==r?JSON.parse(r):void 0}catch(t){}}if(o=(n=n||{}).storage||window&&window.localStorage,u=n.key||\"vuex\",!function(t){try{return t.setItem(\"@@\",1),t.removeItem(\"@@\"),!0}catch(t){}return!1}(o))throw new Error(\"Invalid storage instance given\");return function(c){var a=Object(shvl__WEBPACK_IMPORTED_MODULE_1__[\"get\"])(n,\"getState\",i)(u,o);\"object\"==typeof a&&null!==a&&c.replaceState(Object(deepmerge__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(c.state,a,{arrayMerge:n.arrayMerger||function(t,e){return e},clone:!1})),(n.subscriber||function(t){return function(e){return t.subscribe(e)}})(c)(function(t,i){(n.filter||function(){return!0})(t)&&(n.setState||function(t,e,r){return r.setItem(t,JSON.stringify(e))})(u,(n.reducer||function(t,n){return 0===n.length?t:n.reduce(function(n,o){return Object(shvl__WEBPACK_IMPORTED_MODULE_1__[\"set\"])(n,o,Object(shvl__WEBPACK_IMPORTED_MODULE_1__[\"get\"])(t,o))},{})})(i,n.paths||[]),o)})}});;\n//# sourceMappingURL=vuex-persistedstate.es.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVleC1wZXJzaXN0ZWRzdGF0ZS9kaXN0L3Z1ZXgtcGVyc2lzdGVkc3RhdGUuZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVleC1wZXJzaXN0ZWRzdGF0ZS9kaXN0L3Z1ZXgtcGVyc2lzdGVkc3RhdGUuZXMuanM/MGU0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdCBmcm9tXCJkZWVwbWVyZ2VcIjtpbXBvcnR7c2V0IGFzIGUsZ2V0IGFzIHJ9ZnJvbVwic2h2bFwiO2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG4sbyx1KXtmdW5jdGlvbiBpKHQsZSxyKXt0cnl7cmV0dXJuKHI9ZS5nZXRJdGVtKHQpKSYmdm9pZCAwIT09cj9KU09OLnBhcnNlKHIpOnZvaWQgMH1jYXRjaCh0KXt9fWlmKG89KG49bnx8e30pLnN0b3JhZ2V8fHdpbmRvdyYmd2luZG93LmxvY2FsU3RvcmFnZSx1PW4ua2V5fHxcInZ1ZXhcIiwhZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0LnNldEl0ZW0oXCJAQFwiLDEpLHQucmVtb3ZlSXRlbShcIkBAXCIpLCEwfWNhdGNoKHQpe31yZXR1cm4hMX0obykpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdG9yYWdlIGluc3RhbmNlIGdpdmVuXCIpO3JldHVybiBmdW5jdGlvbihjKXt2YXIgYT1yKG4sXCJnZXRTdGF0ZVwiLGkpKHUsbyk7XCJvYmplY3RcIj09dHlwZW9mIGEmJm51bGwhPT1hJiZjLnJlcGxhY2VTdGF0ZSh0KGMuc3RhdGUsYSx7YXJyYXlNZXJnZTpuLmFycmF5TWVyZ2VyfHxmdW5jdGlvbih0LGUpe3JldHVybiBlfSxjbG9uZTohMX0pKSwobi5zdWJzY3JpYmVyfHxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuc3Vic2NyaWJlKGUpfX0pKGMpKGZ1bmN0aW9uKHQsaSl7KG4uZmlsdGVyfHxmdW5jdGlvbigpe3JldHVybiEwfSkodCkmJihuLnNldFN0YXRlfHxmdW5jdGlvbih0LGUscil7cmV0dXJuIHIuc2V0SXRlbSh0LEpTT04uc3RyaW5naWZ5KGUpKX0pKHUsKG4ucmVkdWNlcnx8ZnVuY3Rpb24odCxuKXtyZXR1cm4gMD09PW4ubGVuZ3RoP3Q6bi5yZWR1Y2UoZnVuY3Rpb24obixvKXtyZXR1cm4gZShuLG8scih0LG8pKX0se30pfSkoaSxuLnBhdGhzfHxbXSksbyl9KX19O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dnVleC1wZXJzaXN0ZWRzdGF0ZS5lcy5qcy5tYXBcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js\n");

/***/ }),

/***/ "./node_modules/vuex/dist/vuex.esm.js":
/*!********************************************!*\
  !*** ./node_modules/vuex/dist/vuex.esm.js ***!
  \********************************************/
/*! exports provided: default, Store, install, mapState, mapMutations, mapGetters, mapActions, createNamespacedHelpers */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Store\", function() { return Store; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"install\", function() { return install; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapState\", function() { return mapState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapMutations\", function() { return mapMutations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapGetters\", function() { return mapGetters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapActions\", function() { return mapActions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createNamespacedHelpers\", function() { return createNamespacedHelpers; });\n/**\n * vuex v3.1.1\n * (c) 2019 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n  var version = Number(Vue.version.split('.')[0]);\n\n  if (version >= 2) {\n    Vue.mixin({ beforeCreate: vuexInit });\n  } else {\n    // override init and inject vuex init procedure\n    // for 1.x backwards compatibility.\n    var _init = Vue.prototype._init;\n    Vue.prototype._init = function (options) {\n      if ( options === void 0 ) options = {};\n\n      options.init = options.init\n        ? [vuexInit].concat(options.init)\n        : vuexInit;\n      _init.call(this, options);\n    };\n  }\n\n  /**\n   * Vuex init hook, injected into each instances init hooks list.\n   */\n\n  function vuexInit () {\n    var options = this.$options;\n    // store injection\n    if (options.store) {\n      this.$store = typeof options.store === 'function'\n        ? options.store()\n        : options.store;\n    } else if (options.parent && options.parent.$store) {\n      this.$store = options.parent.$store;\n    }\n  }\n}\n\nvar target = typeof window !== 'undefined'\n  ? window\n  : typeof global !== 'undefined'\n    ? global\n    : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n  if (!devtoolHook) { return }\n\n  store._devtoolHook = devtoolHook;\n\n  devtoolHook.emit('vuex:init', store);\n\n  devtoolHook.on('vuex:travel-to-state', function (targetState) {\n    store.replaceState(targetState);\n  });\n\n  store.subscribe(function (mutation, state) {\n    devtoolHook.emit('vuex:mutation', mutation, state);\n  });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n  Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n  return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n  if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n  return function () {\n    return fn(arg)\n  }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n  this.runtime = runtime;\n  // Store some children item\n  this._children = Object.create(null);\n  // Store the origin module object which passed by programmer\n  this._rawModule = rawModule;\n  var rawState = rawModule.state;\n\n  // Store the origin module's state\n  this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n  return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n  this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n  delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n  return this._children[key]\n};\n\nModule.prototype.update = function update (rawModule) {\n  this._rawModule.namespaced = rawModule.namespaced;\n  if (rawModule.actions) {\n    this._rawModule.actions = rawModule.actions;\n  }\n  if (rawModule.mutations) {\n    this._rawModule.mutations = rawModule.mutations;\n  }\n  if (rawModule.getters) {\n    this._rawModule.getters = rawModule.getters;\n  }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n  forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n  if (this._rawModule.getters) {\n    forEachValue(this._rawModule.getters, fn);\n  }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n  if (this._rawModule.actions) {\n    forEachValue(this._rawModule.actions, fn);\n  }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n  if (this._rawModule.mutations) {\n    forEachValue(this._rawModule.mutations, fn);\n  }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n  // register root module (Vuex.Store options)\n  this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n  return path.reduce(function (module, key) {\n    return module.getChild(key)\n  }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n  var module = this.root;\n  return path.reduce(function (namespace, key) {\n    module = module.getChild(key);\n    return namespace + (module.namespaced ? key + '/' : '')\n  }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n  update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n    var this$1 = this;\n    if ( runtime === void 0 ) runtime = true;\n\n  if (true) {\n    assertRawModule(path, rawModule);\n  }\n\n  var newModule = new Module(rawModule, runtime);\n  if (path.length === 0) {\n    this.root = newModule;\n  } else {\n    var parent = this.get(path.slice(0, -1));\n    parent.addChild(path[path.length - 1], newModule);\n  }\n\n  // register nested modules\n  if (rawModule.modules) {\n    forEachValue(rawModule.modules, function (rawChildModule, key) {\n      this$1.register(path.concat(key), rawChildModule, runtime);\n    });\n  }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n  var parent = this.get(path.slice(0, -1));\n  var key = path[path.length - 1];\n  if (!parent.getChild(key).runtime) { return }\n\n  parent.removeChild(key);\n};\n\nfunction update (path, targetModule, newModule) {\n  if (true) {\n    assertRawModule(path, newModule);\n  }\n\n  // update target module\n  targetModule.update(newModule);\n\n  // update nested modules\n  if (newModule.modules) {\n    for (var key in newModule.modules) {\n      if (!targetModule.getChild(key)) {\n        if (true) {\n          console.warn(\n            \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n            'manual reload is needed'\n          );\n        }\n        return\n      }\n      update(\n        path.concat(key),\n        targetModule.getChild(key),\n        newModule.modules[key]\n      );\n    }\n  }\n}\n\nvar functionAssert = {\n  assert: function (value) { return typeof value === 'function'; },\n  expected: 'function'\n};\n\nvar objectAssert = {\n  assert: function (value) { return typeof value === 'function' ||\n    (typeof value === 'object' && typeof value.handler === 'function'); },\n  expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n  getters: functionAssert,\n  mutations: functionAssert,\n  actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n  Object.keys(assertTypes).forEach(function (key) {\n    if (!rawModule[key]) { return }\n\n    var assertOptions = assertTypes[key];\n\n    forEachValue(rawModule[key], function (value, type) {\n      assert(\n        assertOptions.assert(value),\n        makeAssertionMessage(path, key, type, value, assertOptions.expected)\n      );\n    });\n  });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n  var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n  if (path.length > 0) {\n    buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n  }\n  buf += \" is \" + (JSON.stringify(value)) + \".\";\n  return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  // Auto install if it is not done yet and `window` has `Vue`.\n  // To allow users to avoid auto-installation in some cases,\n  // this code should be placed here. See #731\n  if (!Vue && typeof window !== 'undefined' && window.Vue) {\n    install(window.Vue);\n  }\n\n  if (true) {\n    assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n    assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n    assert(this instanceof Store, \"store must be called with the new operator.\");\n  }\n\n  var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n  var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n  // store internal state\n  this._committing = false;\n  this._actions = Object.create(null);\n  this._actionSubscribers = [];\n  this._mutations = Object.create(null);\n  this._wrappedGetters = Object.create(null);\n  this._modules = new ModuleCollection(options);\n  this._modulesNamespaceMap = Object.create(null);\n  this._subscribers = [];\n  this._watcherVM = new Vue();\n\n  // bind commit and dispatch to self\n  var store = this;\n  var ref = this;\n  var dispatch = ref.dispatch;\n  var commit = ref.commit;\n  this.dispatch = function boundDispatch (type, payload) {\n    return dispatch.call(store, type, payload)\n  };\n  this.commit = function boundCommit (type, payload, options) {\n    return commit.call(store, type, payload, options)\n  };\n\n  // strict mode\n  this.strict = strict;\n\n  var state = this._modules.root.state;\n\n  // init root module.\n  // this also recursively registers all sub-modules\n  // and collects all module getters inside this._wrappedGetters\n  installModule(this, state, [], this._modules.root);\n\n  // initialize the store vm, which is responsible for the reactivity\n  // (also registers _wrappedGetters as computed properties)\n  resetStoreVM(this, state);\n\n  // apply plugins\n  plugins.forEach(function (plugin) { return plugin(this$1); });\n\n  var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n  if (useDevtools) {\n    devtoolPlugin(this);\n  }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n  return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n  if (true) {\n    assert(false, \"use store.replaceState() to explicit replace store state.\");\n  }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n    var this$1 = this;\n\n  // check object-style commit\n  var ref = unifyObjectStyle(_type, _payload, _options);\n    var type = ref.type;\n    var payload = ref.payload;\n    var options = ref.options;\n\n  var mutation = { type: type, payload: payload };\n  var entry = this._mutations[type];\n  if (!entry) {\n    if (true) {\n      console.error((\"[vuex] unknown mutation type: \" + type));\n    }\n    return\n  }\n  this._withCommit(function () {\n    entry.forEach(function commitIterator (handler) {\n      handler(payload);\n    });\n  });\n  this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); });\n\n  if (\n     true &&\n    options && options.silent\n  ) {\n    console.warn(\n      \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n      'Use the filter functionality in the vue-devtools'\n    );\n  }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n    var this$1 = this;\n\n  // check object-style dispatch\n  var ref = unifyObjectStyle(_type, _payload);\n    var type = ref.type;\n    var payload = ref.payload;\n\n  var action = { type: type, payload: payload };\n  var entry = this._actions[type];\n  if (!entry) {\n    if (true) {\n      console.error((\"[vuex] unknown action type: \" + type));\n    }\n    return\n  }\n\n  try {\n    this._actionSubscribers\n      .filter(function (sub) { return sub.before; })\n      .forEach(function (sub) { return sub.before(action, this$1.state); });\n  } catch (e) {\n    if (true) {\n      console.warn(\"[vuex] error in before action subscribers: \");\n      console.error(e);\n    }\n  }\n\n  var result = entry.length > 1\n    ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n    : entry[0](payload);\n\n  return result.then(function (res) {\n    try {\n      this$1._actionSubscribers\n        .filter(function (sub) { return sub.after; })\n        .forEach(function (sub) { return sub.after(action, this$1.state); });\n    } catch (e) {\n      if (true) {\n        console.warn(\"[vuex] error in after action subscribers: \");\n        console.error(e);\n      }\n    }\n    return res\n  })\n};\n\nStore.prototype.subscribe = function subscribe (fn) {\n  return genericSubscribe(fn, this._subscribers)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn) {\n  var subs = typeof fn === 'function' ? { before: fn } : fn;\n  return genericSubscribe(subs, this._actionSubscribers)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n    var this$1 = this;\n\n  if (true) {\n    assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n  }\n  return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n    var this$1 = this;\n\n  this._withCommit(function () {\n    this$1._vm._data.$$state = state;\n  });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n    if ( options === void 0 ) options = {};\n\n  if (typeof path === 'string') { path = [path]; }\n\n  if (true) {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n    assert(path.length > 0, 'cannot register the root module by using registerModule.');\n  }\n\n  this._modules.register(path, rawModule);\n  installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n  // reset store to update getters...\n  resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n    var this$1 = this;\n\n  if (typeof path === 'string') { path = [path]; }\n\n  if (true) {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n  }\n\n  this._modules.unregister(path);\n  this._withCommit(function () {\n    var parentState = getNestedState(this$1.state, path.slice(0, -1));\n    Vue.delete(parentState, path[path.length - 1]);\n  });\n  resetStore(this);\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n  this._modules.update(newOptions);\n  resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n  var committing = this._committing;\n  this._committing = true;\n  fn();\n  this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs) {\n  if (subs.indexOf(fn) < 0) {\n    subs.push(fn);\n  }\n  return function () {\n    var i = subs.indexOf(fn);\n    if (i > -1) {\n      subs.splice(i, 1);\n    }\n  }\n}\n\nfunction resetStore (store, hot) {\n  store._actions = Object.create(null);\n  store._mutations = Object.create(null);\n  store._wrappedGetters = Object.create(null);\n  store._modulesNamespaceMap = Object.create(null);\n  var state = store.state;\n  // init all modules\n  installModule(store, state, [], store._modules.root, true);\n  // reset vm\n  resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n  var oldVm = store._vm;\n\n  // bind store public getters\n  store.getters = {};\n  var wrappedGetters = store._wrappedGetters;\n  var computed = {};\n  forEachValue(wrappedGetters, function (fn, key) {\n    // use computed to leverage its lazy-caching mechanism\n    // direct inline function use will lead to closure preserving oldVm.\n    // using partial to return function with only arguments preserved in closure enviroment.\n    computed[key] = partial(fn, store);\n    Object.defineProperty(store.getters, key, {\n      get: function () { return store._vm[key]; },\n      enumerable: true // for local getters\n    });\n  });\n\n  // use a Vue instance to store the state tree\n  // suppress warnings just in case the user has added\n  // some funky global mixins\n  var silent = Vue.config.silent;\n  Vue.config.silent = true;\n  store._vm = new Vue({\n    data: {\n      $$state: state\n    },\n    computed: computed\n  });\n  Vue.config.silent = silent;\n\n  // enable strict mode for new vm\n  if (store.strict) {\n    enableStrictMode(store);\n  }\n\n  if (oldVm) {\n    if (hot) {\n      // dispatch changes in all subscribed watchers\n      // to force getter re-evaluation for hot reloading.\n      store._withCommit(function () {\n        oldVm._data.$$state = null;\n      });\n    }\n    Vue.nextTick(function () { return oldVm.$destroy(); });\n  }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n  var isRoot = !path.length;\n  var namespace = store._modules.getNamespace(path);\n\n  // register in namespace map\n  if (module.namespaced) {\n    store._modulesNamespaceMap[namespace] = module;\n  }\n\n  // set state\n  if (!isRoot && !hot) {\n    var parentState = getNestedState(rootState, path.slice(0, -1));\n    var moduleName = path[path.length - 1];\n    store._withCommit(function () {\n      Vue.set(parentState, moduleName, module.state);\n    });\n  }\n\n  var local = module.context = makeLocalContext(store, namespace, path);\n\n  module.forEachMutation(function (mutation, key) {\n    var namespacedType = namespace + key;\n    registerMutation(store, namespacedType, mutation, local);\n  });\n\n  module.forEachAction(function (action, key) {\n    var type = action.root ? key : namespace + key;\n    var handler = action.handler || action;\n    registerAction(store, type, handler, local);\n  });\n\n  module.forEachGetter(function (getter, key) {\n    var namespacedType = namespace + key;\n    registerGetter(store, namespacedType, getter, local);\n  });\n\n  module.forEachChild(function (child, key) {\n    installModule(store, rootState, path.concat(key), child, hot);\n  });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n  var noNamespace = namespace === '';\n\n  var local = {\n    dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n      var args = unifyObjectStyle(_type, _payload, _options);\n      var payload = args.payload;\n      var options = args.options;\n      var type = args.type;\n\n      if (!options || !options.root) {\n        type = namespace + type;\n        if ( true && !store._actions[type]) {\n          console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n          return\n        }\n      }\n\n      return store.dispatch(type, payload)\n    },\n\n    commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n      var args = unifyObjectStyle(_type, _payload, _options);\n      var payload = args.payload;\n      var options = args.options;\n      var type = args.type;\n\n      if (!options || !options.root) {\n        type = namespace + type;\n        if ( true && !store._mutations[type]) {\n          console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n          return\n        }\n      }\n\n      store.commit(type, payload, options);\n    }\n  };\n\n  // getters and state object must be gotten lazily\n  // because they will be changed by vm update\n  Object.defineProperties(local, {\n    getters: {\n      get: noNamespace\n        ? function () { return store.getters; }\n        : function () { return makeLocalGetters(store, namespace); }\n    },\n    state: {\n      get: function () { return getNestedState(store.state, path); }\n    }\n  });\n\n  return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n  var gettersProxy = {};\n\n  var splitPos = namespace.length;\n  Object.keys(store.getters).forEach(function (type) {\n    // skip if the target getter is not match this namespace\n    if (type.slice(0, splitPos) !== namespace) { return }\n\n    // extract local getter type\n    var localType = type.slice(splitPos);\n\n    // Add a port to the getters proxy.\n    // Define as getter property because\n    // we do not want to evaluate the getters in this time.\n    Object.defineProperty(gettersProxy, localType, {\n      get: function () { return store.getters[type]; },\n      enumerable: true\n    });\n  });\n\n  return gettersProxy\n}\n\nfunction registerMutation (store, type, handler, local) {\n  var entry = store._mutations[type] || (store._mutations[type] = []);\n  entry.push(function wrappedMutationHandler (payload) {\n    handler.call(store, local.state, payload);\n  });\n}\n\nfunction registerAction (store, type, handler, local) {\n  var entry = store._actions[type] || (store._actions[type] = []);\n  entry.push(function wrappedActionHandler (payload, cb) {\n    var res = handler.call(store, {\n      dispatch: local.dispatch,\n      commit: local.commit,\n      getters: local.getters,\n      state: local.state,\n      rootGetters: store.getters,\n      rootState: store.state\n    }, payload, cb);\n    if (!isPromise(res)) {\n      res = Promise.resolve(res);\n    }\n    if (store._devtoolHook) {\n      return res.catch(function (err) {\n        store._devtoolHook.emit('vuex:error', err);\n        throw err\n      })\n    } else {\n      return res\n    }\n  });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n  if (store._wrappedGetters[type]) {\n    if (true) {\n      console.error((\"[vuex] duplicate getter key: \" + type));\n    }\n    return\n  }\n  store._wrappedGetters[type] = function wrappedGetter (store) {\n    return rawGetter(\n      local.state, // local state\n      local.getters, // local getters\n      store.state, // root state\n      store.getters // root getters\n    )\n  };\n}\n\nfunction enableStrictMode (store) {\n  store._vm.$watch(function () { return this._data.$$state }, function () {\n    if (true) {\n      assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n    }\n  }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n  return path.length\n    ? path.reduce(function (state, key) { return state[key]; }, state)\n    : state\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n  if (isObject(type) && type.type) {\n    options = payload;\n    payload = type;\n    type = type.type;\n  }\n\n  if (true) {\n    assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n  }\n\n  return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n  if (Vue && _Vue === Vue) {\n    if (true) {\n      console.error(\n        '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n      );\n    }\n    return\n  }\n  Vue = _Vue;\n  applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n  var res = {};\n  normalizeMap(states).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedState () {\n      var state = this.$store.state;\n      var getters = this.$store.getters;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n        if (!module) {\n          return\n        }\n        state = module.context.state;\n        getters = module.context.getters;\n      }\n      return typeof val === 'function'\n        ? val.call(this, state, getters)\n        : state[val]\n    };\n    // mark vuex getter for devtools\n    res[key].vuex = true;\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept anthor params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n  var res = {};\n  normalizeMap(mutations).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedMutation () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      // Get the commit method from store\n      var commit = this.$store.commit;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n        if (!module) {\n          return\n        }\n        commit = module.context.commit;\n      }\n      return typeof val === 'function'\n        ? val.apply(this, [commit].concat(args))\n        : commit.apply(this.$store, [val].concat(args))\n    };\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n  var res = {};\n  normalizeMap(getters).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    // The namespace has been mutated by normalizeNamespace\n    val = namespace + val;\n    res[key] = function mappedGetter () {\n      if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n        return\n      }\n      if ( true && !(val in this.$store.getters)) {\n        console.error((\"[vuex] unknown getter: \" + val));\n        return\n      }\n      return this.$store.getters[val]\n    };\n    // mark vuex getter for devtools\n    res[key].vuex = true;\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n  var res = {};\n  normalizeMap(actions).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedAction () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      // get dispatch function from store\n      var dispatch = this.$store.dispatch;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n        if (!module) {\n          return\n        }\n        dispatch = module.context.dispatch;\n      }\n      return typeof val === 'function'\n        ? val.apply(this, [dispatch].concat(args))\n        : dispatch.apply(this.$store, [val].concat(args))\n    };\n  });\n  return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n  mapState: mapState.bind(null, namespace),\n  mapGetters: mapGetters.bind(null, namespace),\n  mapMutations: mapMutations.bind(null, namespace),\n  mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n  return Array.isArray(map)\n    ? map.map(function (key) { return ({ key: key, val: key }); })\n    : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n  return function (namespace, map) {\n    if (typeof namespace !== 'string') {\n      map = namespace;\n      namespace = '';\n    } else if (namespace.charAt(namespace.length - 1) !== '/') {\n      namespace += '/';\n    }\n    return fn(namespace, map)\n  }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n  var module = store._modulesNamespaceMap[namespace];\n  if ( true && !module) {\n    console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n  }\n  return module\n}\n\nvar index_esm = {\n  Store: Store,\n  install: install,\n  version: '3.1.1',\n  mapState: mapState,\n  mapMutations: mapMutations,\n  mapGetters: mapGetters,\n  mapActions: mapActions,\n  createNamespacedHelpers: createNamespacedHelpers\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index_esm);\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVleC9kaXN0L3Z1ZXguZXNtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXgvZGlzdC92dWV4LmVzbS5qcz8yZjYyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogdnVleCB2My4xLjFcbiAqIChjKSAyMDE5IEV2YW4gWW91XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuZnVuY3Rpb24gYXBwbHlNaXhpbiAoVnVlKSB7XG4gIHZhciB2ZXJzaW9uID0gTnVtYmVyKFZ1ZS52ZXJzaW9uLnNwbGl0KCcuJylbMF0pO1xuXG4gIGlmICh2ZXJzaW9uID49IDIpIHtcbiAgICBWdWUubWl4aW4oeyBiZWZvcmVDcmVhdGU6IHZ1ZXhJbml0IH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG92ZXJyaWRlIGluaXQgYW5kIGluamVjdCB2dWV4IGluaXQgcHJvY2VkdXJlXG4gICAgLy8gZm9yIDEueCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICB2YXIgX2luaXQgPSBWdWUucHJvdG90eXBlLl9pbml0O1xuICAgIFZ1ZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgICAgIG9wdGlvbnMuaW5pdCA9IG9wdGlvbnMuaW5pdFxuICAgICAgICA/IFt2dWV4SW5pdF0uY29uY2F0KG9wdGlvbnMuaW5pdClcbiAgICAgICAgOiB2dWV4SW5pdDtcbiAgICAgIF9pbml0LmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWdWV4IGluaXQgaG9vaywgaW5qZWN0ZWQgaW50byBlYWNoIGluc3RhbmNlcyBpbml0IGhvb2tzIGxpc3QuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIHZ1ZXhJbml0ICgpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlvbnM7XG4gICAgLy8gc3RvcmUgaW5qZWN0aW9uXG4gICAgaWYgKG9wdGlvbnMuc3RvcmUpIHtcbiAgICAgIHRoaXMuJHN0b3JlID0gdHlwZW9mIG9wdGlvbnMuc3RvcmUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBvcHRpb25zLnN0b3JlKClcbiAgICAgICAgOiBvcHRpb25zLnN0b3JlO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5wYXJlbnQgJiYgb3B0aW9ucy5wYXJlbnQuJHN0b3JlKSB7XG4gICAgICB0aGlzLiRzdG9yZSA9IG9wdGlvbnMucGFyZW50LiRzdG9yZTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHRhcmdldCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gID8gd2luZG93XG4gIDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCdcbiAgICA/IGdsb2JhbFxuICAgIDoge307XG52YXIgZGV2dG9vbEhvb2sgPSB0YXJnZXQuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcblxuZnVuY3Rpb24gZGV2dG9vbFBsdWdpbiAoc3RvcmUpIHtcbiAgaWYgKCFkZXZ0b29sSG9vaykgeyByZXR1cm4gfVxuXG4gIHN0b3JlLl9kZXZ0b29sSG9vayA9IGRldnRvb2xIb29rO1xuXG4gIGRldnRvb2xIb29rLmVtaXQoJ3Z1ZXg6aW5pdCcsIHN0b3JlKTtcblxuICBkZXZ0b29sSG9vay5vbigndnVleDp0cmF2ZWwtdG8tc3RhdGUnLCBmdW5jdGlvbiAodGFyZ2V0U3RhdGUpIHtcbiAgICBzdG9yZS5yZXBsYWNlU3RhdGUodGFyZ2V0U3RhdGUpO1xuICB9KTtcblxuICBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKG11dGF0aW9uLCBzdGF0ZSkge1xuICAgIGRldnRvb2xIb29rLmVtaXQoJ3Z1ZXg6bXV0YXRpb24nLCBtdXRhdGlvbiwgc3RhdGUpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZpcnN0IGl0ZW0gdGhhdCBwYXNzIHRoZSB0ZXN0XG4gKiBieSBzZWNvbmQgYXJndW1lbnQgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBsaXN0XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmXG4gKiBAcmV0dXJuIHsqfVxuICovXG5cbi8qKlxuICogZm9yRWFjaCBmb3Igb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGZvckVhY2hWYWx1ZSAob2JqLCBmbikge1xuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gZm4ob2JqW2tleV0sIGtleSk7IH0pO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdCAob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCdcbn1cblxuZnVuY3Rpb24gaXNQcm9taXNlICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAmJiB0eXBlb2YgdmFsLnRoZW4gPT09ICdmdW5jdGlvbidcbn1cblxuZnVuY3Rpb24gYXNzZXJ0IChjb25kaXRpb24sIG1zZykge1xuICBpZiAoIWNvbmRpdGlvbikgeyB0aHJvdyBuZXcgRXJyb3IoKFwiW3Z1ZXhdIFwiICsgbXNnKSkgfVxufVxuXG5mdW5jdGlvbiBwYXJ0aWFsIChmbiwgYXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZuKGFyZylcbiAgfVxufVxuXG4vLyBCYXNlIGRhdGEgc3RydWN0IGZvciBzdG9yZSdzIG1vZHVsZSwgcGFja2FnZSB3aXRoIHNvbWUgYXR0cmlidXRlIGFuZCBtZXRob2RcbnZhciBNb2R1bGUgPSBmdW5jdGlvbiBNb2R1bGUgKHJhd01vZHVsZSwgcnVudGltZSkge1xuICB0aGlzLnJ1bnRpbWUgPSBydW50aW1lO1xuICAvLyBTdG9yZSBzb21lIGNoaWxkcmVuIGl0ZW1cbiAgdGhpcy5fY2hpbGRyZW4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBTdG9yZSB0aGUgb3JpZ2luIG1vZHVsZSBvYmplY3Qgd2hpY2ggcGFzc2VkIGJ5IHByb2dyYW1tZXJcbiAgdGhpcy5fcmF3TW9kdWxlID0gcmF3TW9kdWxlO1xuICB2YXIgcmF3U3RhdGUgPSByYXdNb2R1bGUuc3RhdGU7XG5cbiAgLy8gU3RvcmUgdGhlIG9yaWdpbiBtb2R1bGUncyBzdGF0ZVxuICB0aGlzLnN0YXRlID0gKHR5cGVvZiByYXdTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IHJhd1N0YXRlKCkgOiByYXdTdGF0ZSkgfHwge307XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyBuYW1lc3BhY2VkOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5uYW1lc3BhY2VkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICEhdGhpcy5fcmF3TW9kdWxlLm5hbWVzcGFjZWRcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuYWRkQ2hpbGQgPSBmdW5jdGlvbiBhZGRDaGlsZCAoa2V5LCBtb2R1bGUpIHtcbiAgdGhpcy5fY2hpbGRyZW5ba2V5XSA9IG1vZHVsZTtcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiByZW1vdmVDaGlsZCAoa2V5KSB7XG4gIGRlbGV0ZSB0aGlzLl9jaGlsZHJlbltrZXldO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5nZXRDaGlsZCA9IGZ1bmN0aW9uIGdldENoaWxkIChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuW2tleV1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlIChyYXdNb2R1bGUpIHtcbiAgdGhpcy5fcmF3TW9kdWxlLm5hbWVzcGFjZWQgPSByYXdNb2R1bGUubmFtZXNwYWNlZDtcbiAgaWYgKHJhd01vZHVsZS5hY3Rpb25zKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLmFjdGlvbnMgPSByYXdNb2R1bGUuYWN0aW9ucztcbiAgfVxuICBpZiAocmF3TW9kdWxlLm11dGF0aW9ucykge1xuICAgIHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMgPSByYXdNb2R1bGUubXV0YXRpb25zO1xuICB9XG4gIGlmIChyYXdNb2R1bGUuZ2V0dGVycykge1xuICAgIHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzID0gcmF3TW9kdWxlLmdldHRlcnM7XG4gIH1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaENoaWxkID0gZnVuY3Rpb24gZm9yRWFjaENoaWxkIChmbikge1xuICBmb3JFYWNoVmFsdWUodGhpcy5fY2hpbGRyZW4sIGZuKTtcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaEdldHRlciA9IGZ1bmN0aW9uIGZvckVhY2hHZXR0ZXIgKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUuZ2V0dGVycykge1xuICAgIGZvckVhY2hWYWx1ZSh0aGlzLl9yYXdNb2R1bGUuZ2V0dGVycywgZm4pO1xuICB9XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hBY3Rpb24gPSBmdW5jdGlvbiBmb3JFYWNoQWN0aW9uIChmbikge1xuICBpZiAodGhpcy5fcmF3TW9kdWxlLmFjdGlvbnMpIHtcbiAgICBmb3JFYWNoVmFsdWUodGhpcy5fcmF3TW9kdWxlLmFjdGlvbnMsIGZuKTtcbiAgfVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoTXV0YXRpb24gPSBmdW5jdGlvbiBmb3JFYWNoTXV0YXRpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUubXV0YXRpb25zKSB7XG4gICAgZm9yRWFjaFZhbHVlKHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMsIGZuKTtcbiAgfVxufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIE1vZHVsZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG52YXIgTW9kdWxlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIE1vZHVsZUNvbGxlY3Rpb24gKHJhd1Jvb3RNb2R1bGUpIHtcbiAgLy8gcmVnaXN0ZXIgcm9vdCBtb2R1bGUgKFZ1ZXguU3RvcmUgb3B0aW9ucylcbiAgdGhpcy5yZWdpc3RlcihbXSwgcmF3Um9vdE1vZHVsZSwgZmFsc2UpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0IChwYXRoKSB7XG4gIHJldHVybiBwYXRoLnJlZHVjZShmdW5jdGlvbiAobW9kdWxlLCBrZXkpIHtcbiAgICByZXR1cm4gbW9kdWxlLmdldENoaWxkKGtleSlcbiAgfSwgdGhpcy5yb290KVxufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0TmFtZXNwYWNlID0gZnVuY3Rpb24gZ2V0TmFtZXNwYWNlIChwYXRoKSB7XG4gIHZhciBtb2R1bGUgPSB0aGlzLnJvb3Q7XG4gIHJldHVybiBwYXRoLnJlZHVjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBrZXkpIHtcbiAgICBtb2R1bGUgPSBtb2R1bGUuZ2V0Q2hpbGQoa2V5KTtcbiAgICByZXR1cm4gbmFtZXNwYWNlICsgKG1vZHVsZS5uYW1lc3BhY2VkID8ga2V5ICsgJy8nIDogJycpXG4gIH0sICcnKVxufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlJDEgKHJhd1Jvb3RNb2R1bGUpIHtcbiAgdXBkYXRlKFtdLCB0aGlzLnJvb3QsIHJhd1Jvb3RNb2R1bGUpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUucmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlciAocGF0aCwgcmF3TW9kdWxlLCBydW50aW1lKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgaWYgKCBydW50aW1lID09PSB2b2lkIDAgKSBydW50aW1lID0gdHJ1ZTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydFJhd01vZHVsZShwYXRoLCByYXdNb2R1bGUpO1xuICB9XG5cbiAgdmFyIG5ld01vZHVsZSA9IG5ldyBNb2R1bGUocmF3TW9kdWxlLCBydW50aW1lKTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgdGhpcy5yb290ID0gbmV3TW9kdWxlO1xuICB9IGVsc2Uge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgcGFyZW50LmFkZENoaWxkKHBhdGhbcGF0aC5sZW5ndGggLSAxXSwgbmV3TW9kdWxlKTtcbiAgfVxuXG4gIC8vIHJlZ2lzdGVyIG5lc3RlZCBtb2R1bGVzXG4gIGlmIChyYXdNb2R1bGUubW9kdWxlcykge1xuICAgIGZvckVhY2hWYWx1ZShyYXdNb2R1bGUubW9kdWxlcywgZnVuY3Rpb24gKHJhd0NoaWxkTW9kdWxlLCBrZXkpIHtcbiAgICAgIHRoaXMkMS5yZWdpc3RlcihwYXRoLmNvbmNhdChrZXkpLCByYXdDaGlsZE1vZHVsZSwgcnVudGltZSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnVucmVnaXN0ZXIgPSBmdW5jdGlvbiB1bnJlZ2lzdGVyIChwYXRoKSB7XG4gIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gIHZhciBrZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gIGlmICghcGFyZW50LmdldENoaWxkKGtleSkucnVudGltZSkgeyByZXR1cm4gfVxuXG4gIHBhcmVudC5yZW1vdmVDaGlsZChrZXkpO1xufTtcblxuZnVuY3Rpb24gdXBkYXRlIChwYXRoLCB0YXJnZXRNb2R1bGUsIG5ld01vZHVsZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydFJhd01vZHVsZShwYXRoLCBuZXdNb2R1bGUpO1xuICB9XG5cbiAgLy8gdXBkYXRlIHRhcmdldCBtb2R1bGVcbiAgdGFyZ2V0TW9kdWxlLnVwZGF0ZShuZXdNb2R1bGUpO1xuXG4gIC8vIHVwZGF0ZSBuZXN0ZWQgbW9kdWxlc1xuICBpZiAobmV3TW9kdWxlLm1vZHVsZXMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gbmV3TW9kdWxlLm1vZHVsZXMpIHtcbiAgICAgIGlmICghdGFyZ2V0TW9kdWxlLmdldENoaWxkKGtleSkpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBcIlt2dWV4XSB0cnlpbmcgdG8gYWRkIGEgbmV3IG1vZHVsZSAnXCIgKyBrZXkgKyBcIicgb24gaG90IHJlbG9hZGluZywgXCIgK1xuICAgICAgICAgICAgJ21hbnVhbCByZWxvYWQgaXMgbmVlZGVkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUoXG4gICAgICAgIHBhdGguY29uY2F0KGtleSksXG4gICAgICAgIHRhcmdldE1vZHVsZS5nZXRDaGlsZChrZXkpLFxuICAgICAgICBuZXdNb2R1bGUubW9kdWxlc1trZXldXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgZnVuY3Rpb25Bc3NlcnQgPSB7XG4gIGFzc2VydDogZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7IH0sXG4gIGV4cGVjdGVkOiAnZnVuY3Rpb24nXG59O1xuXG52YXIgb2JqZWN0QXNzZXJ0ID0ge1xuICBhc3NlcnQ6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLmhhbmRsZXIgPT09ICdmdW5jdGlvbicpOyB9LFxuICBleHBlY3RlZDogJ2Z1bmN0aW9uIG9yIG9iamVjdCB3aXRoIFwiaGFuZGxlclwiIGZ1bmN0aW9uJ1xufTtcblxudmFyIGFzc2VydFR5cGVzID0ge1xuICBnZXR0ZXJzOiBmdW5jdGlvbkFzc2VydCxcbiAgbXV0YXRpb25zOiBmdW5jdGlvbkFzc2VydCxcbiAgYWN0aW9uczogb2JqZWN0QXNzZXJ0XG59O1xuXG5mdW5jdGlvbiBhc3NlcnRSYXdNb2R1bGUgKHBhdGgsIHJhd01vZHVsZSkge1xuICBPYmplY3Qua2V5cyhhc3NlcnRUeXBlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFyYXdNb2R1bGVba2V5XSkgeyByZXR1cm4gfVxuXG4gICAgdmFyIGFzc2VydE9wdGlvbnMgPSBhc3NlcnRUeXBlc1trZXldO1xuXG4gICAgZm9yRWFjaFZhbHVlKHJhd01vZHVsZVtrZXldLCBmdW5jdGlvbiAodmFsdWUsIHR5cGUpIHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgYXNzZXJ0T3B0aW9ucy5hc3NlcnQodmFsdWUpLFxuICAgICAgICBtYWtlQXNzZXJ0aW9uTWVzc2FnZShwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBhc3NlcnRPcHRpb25zLmV4cGVjdGVkKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VBc3NlcnRpb25NZXNzYWdlIChwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBleHBlY3RlZCkge1xuICB2YXIgYnVmID0ga2V5ICsgXCIgc2hvdWxkIGJlIFwiICsgZXhwZWN0ZWQgKyBcIiBidXQgXFxcIlwiICsga2V5ICsgXCIuXCIgKyB0eXBlICsgXCJcXFwiXCI7XG4gIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICBidWYgKz0gXCIgaW4gbW9kdWxlIFxcXCJcIiArIChwYXRoLmpvaW4oJy4nKSkgKyBcIlxcXCJcIjtcbiAgfVxuICBidWYgKz0gXCIgaXMgXCIgKyAoSlNPTi5zdHJpbmdpZnkodmFsdWUpKSArIFwiLlwiO1xuICByZXR1cm4gYnVmXG59XG5cbnZhciBWdWU7IC8vIGJpbmQgb24gaW5zdGFsbFxuXG52YXIgU3RvcmUgPSBmdW5jdGlvbiBTdG9yZSAob3B0aW9ucykge1xuICB2YXIgdGhpcyQxID0gdGhpcztcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgLy8gQXV0byBpbnN0YWxsIGlmIGl0IGlzIG5vdCBkb25lIHlldCBhbmQgYHdpbmRvd2AgaGFzIGBWdWVgLlxuICAvLyBUbyBhbGxvdyB1c2VycyB0byBhdm9pZCBhdXRvLWluc3RhbGxhdGlvbiBpbiBzb21lIGNhc2VzLFxuICAvLyB0aGlzIGNvZGUgc2hvdWxkIGJlIHBsYWNlZCBoZXJlLiBTZWUgIzczMVxuICBpZiAoIVZ1ZSAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVnVlKSB7XG4gICAgaW5zdGFsbCh3aW5kb3cuVnVlKTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0KFZ1ZSwgXCJtdXN0IGNhbGwgVnVlLnVzZShWdWV4KSBiZWZvcmUgY3JlYXRpbmcgYSBzdG9yZSBpbnN0YW5jZS5cIik7XG4gICAgYXNzZXJ0KHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJywgXCJ2dWV4IHJlcXVpcmVzIGEgUHJvbWlzZSBwb2x5ZmlsbCBpbiB0aGlzIGJyb3dzZXIuXCIpO1xuICAgIGFzc2VydCh0aGlzIGluc3RhbmNlb2YgU3RvcmUsIFwic3RvcmUgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbmV3IG9wZXJhdG9yLlwiKTtcbiAgfVxuXG4gIHZhciBwbHVnaW5zID0gb3B0aW9ucy5wbHVnaW5zOyBpZiAoIHBsdWdpbnMgPT09IHZvaWQgMCApIHBsdWdpbnMgPSBbXTtcbiAgdmFyIHN0cmljdCA9IG9wdGlvbnMuc3RyaWN0OyBpZiAoIHN0cmljdCA9PT0gdm9pZCAwICkgc3RyaWN0ID0gZmFsc2U7XG5cbiAgLy8gc3RvcmUgaW50ZXJuYWwgc3RhdGVcbiAgdGhpcy5fY29tbWl0dGluZyA9IGZhbHNlO1xuICB0aGlzLl9hY3Rpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fYWN0aW9uU3Vic2NyaWJlcnMgPSBbXTtcbiAgdGhpcy5fbXV0YXRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fd3JhcHBlZEdldHRlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl9tb2R1bGVzID0gbmV3IE1vZHVsZUNvbGxlY3Rpb24ob3B0aW9ucyk7XG4gIHRoaXMuX21vZHVsZXNOYW1lc3BhY2VNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl9zdWJzY3JpYmVycyA9IFtdO1xuICB0aGlzLl93YXRjaGVyVk0gPSBuZXcgVnVlKCk7XG5cbiAgLy8gYmluZCBjb21taXQgYW5kIGRpc3BhdGNoIHRvIHNlbGZcbiAgdmFyIHN0b3JlID0gdGhpcztcbiAgdmFyIHJlZiA9IHRoaXM7XG4gIHZhciBkaXNwYXRjaCA9IHJlZi5kaXNwYXRjaDtcbiAgdmFyIGNvbW1pdCA9IHJlZi5jb21taXQ7XG4gIHRoaXMuZGlzcGF0Y2ggPSBmdW5jdGlvbiBib3VuZERpc3BhdGNoICh0eXBlLCBwYXlsb2FkKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoLmNhbGwoc3RvcmUsIHR5cGUsIHBheWxvYWQpXG4gIH07XG4gIHRoaXMuY29tbWl0ID0gZnVuY3Rpb24gYm91bmRDb21taXQgKHR5cGUsIHBheWxvYWQsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gY29tbWl0LmNhbGwoc3RvcmUsIHR5cGUsIHBheWxvYWQsIG9wdGlvbnMpXG4gIH07XG5cbiAgLy8gc3RyaWN0IG1vZGVcbiAgdGhpcy5zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgdmFyIHN0YXRlID0gdGhpcy5fbW9kdWxlcy5yb290LnN0YXRlO1xuXG4gIC8vIGluaXQgcm9vdCBtb2R1bGUuXG4gIC8vIHRoaXMgYWxzbyByZWN1cnNpdmVseSByZWdpc3RlcnMgYWxsIHN1Yi1tb2R1bGVzXG4gIC8vIGFuZCBjb2xsZWN0cyBhbGwgbW9kdWxlIGdldHRlcnMgaW5zaWRlIHRoaXMuX3dyYXBwZWRHZXR0ZXJzXG4gIGluc3RhbGxNb2R1bGUodGhpcywgc3RhdGUsIFtdLCB0aGlzLl9tb2R1bGVzLnJvb3QpO1xuXG4gIC8vIGluaXRpYWxpemUgdGhlIHN0b3JlIHZtLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHJlYWN0aXZpdHlcbiAgLy8gKGFsc28gcmVnaXN0ZXJzIF93cmFwcGVkR2V0dGVycyBhcyBjb21wdXRlZCBwcm9wZXJ0aWVzKVxuICByZXNldFN0b3JlVk0odGhpcywgc3RhdGUpO1xuXG4gIC8vIGFwcGx5IHBsdWdpbnNcbiAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbih0aGlzJDEpOyB9KTtcblxuICB2YXIgdXNlRGV2dG9vbHMgPSBvcHRpb25zLmRldnRvb2xzICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmRldnRvb2xzIDogVnVlLmNvbmZpZy5kZXZ0b29scztcbiAgaWYgKHVzZURldnRvb2xzKSB7XG4gICAgZGV2dG9vbFBsdWdpbih0aGlzKTtcbiAgfVxufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyQxID0geyBzdGF0ZTogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMS5zdGF0ZS5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl92bS5fZGF0YS4kJHN0YXRlXG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMS5zdGF0ZS5zZXQgPSBmdW5jdGlvbiAodikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydChmYWxzZSwgXCJ1c2Ugc3RvcmUucmVwbGFjZVN0YXRlKCkgdG8gZXhwbGljaXQgcmVwbGFjZSBzdG9yZSBzdGF0ZS5cIik7XG4gIH1cbn07XG5cblN0b3JlLnByb3RvdHlwZS5jb21taXQgPSBmdW5jdGlvbiBjb21taXQgKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAvLyBjaGVjayBvYmplY3Qtc3R5bGUgY29tbWl0XG4gIHZhciByZWYgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgdmFyIHBheWxvYWQgPSByZWYucGF5bG9hZDtcbiAgICB2YXIgb3B0aW9ucyA9IHJlZi5vcHRpb25zO1xuXG4gIHZhciBtdXRhdGlvbiA9IHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCB9O1xuICB2YXIgZW50cnkgPSB0aGlzLl9tdXRhdGlvbnNbdHlwZV07XG4gIGlmICghZW50cnkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBtdXRhdGlvbiB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgdGhpcy5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgZW50cnkuZm9yRWFjaChmdW5jdGlvbiBjb21taXRJdGVyYXRvciAoaGFuZGxlcikge1xuICAgICAgaGFuZGxlcihwYXlsb2FkKTtcbiAgICB9KTtcbiAgfSk7XG4gIHRoaXMuX3N1YnNjcmliZXJzLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViKG11dGF0aW9uLCB0aGlzJDEuc3RhdGUpOyB9KTtcblxuICBpZiAoXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5zaWxlbnRcbiAgKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbdnVleF0gbXV0YXRpb24gdHlwZTogXCIgKyB0eXBlICsgXCIuIFNpbGVudCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZC4gXCIgK1xuICAgICAgJ1VzZSB0aGUgZmlsdGVyIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIHZ1ZS1kZXZ0b29scydcbiAgICApO1xuICB9XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiBkaXNwYXRjaCAoX3R5cGUsIF9wYXlsb2FkKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgLy8gY2hlY2sgb2JqZWN0LXN0eWxlIGRpc3BhdGNoXG4gIHZhciByZWYgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCk7XG4gICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICB2YXIgcGF5bG9hZCA9IHJlZi5wYXlsb2FkO1xuXG4gIHZhciBhY3Rpb24gPSB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQgfTtcbiAgdmFyIGVudHJ5ID0gdGhpcy5fYWN0aW9uc1t0eXBlXTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGFjdGlvbiB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICB0cnkge1xuICAgIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5iZWZvcmU7IH0pXG4gICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYmVmb3JlKGFjdGlvbiwgdGhpcyQxLnN0YXRlKTsgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc29sZS53YXJuKFwiW3Z1ZXhdIGVycm9yIGluIGJlZm9yZSBhY3Rpb24gc3Vic2NyaWJlcnM6IFwiKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHJlc3VsdCA9IGVudHJ5Lmxlbmd0aCA+IDFcbiAgICA/IFByb21pc2UuYWxsKGVudHJ5Lm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gaGFuZGxlcihwYXlsb2FkKTsgfSkpXG4gICAgOiBlbnRyeVswXShwYXlsb2FkKTtcblxuICByZXR1cm4gcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgIHRyeSB7XG4gICAgICB0aGlzJDEuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmFmdGVyOyB9KVxuICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYWZ0ZXIoYWN0aW9uLCB0aGlzJDEuc3RhdGUpOyB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJbdnVleF0gZXJyb3IgaW4gYWZ0ZXIgYWN0aW9uIHN1YnNjcmliZXJzOiBcIik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfSlcbn07XG5cblN0b3JlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiBzdWJzY3JpYmUgKGZuKSB7XG4gIHJldHVybiBnZW5lcmljU3Vic2NyaWJlKGZuLCB0aGlzLl9zdWJzY3JpYmVycylcbn07XG5cblN0b3JlLnByb3RvdHlwZS5zdWJzY3JpYmVBY3Rpb24gPSBmdW5jdGlvbiBzdWJzY3JpYmVBY3Rpb24gKGZuKSB7XG4gIHZhciBzdWJzID0gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nID8geyBiZWZvcmU6IGZuIH0gOiBmbjtcbiAgcmV0dXJuIGdlbmVyaWNTdWJzY3JpYmUoc3VicywgdGhpcy5fYWN0aW9uU3Vic2NyaWJlcnMpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUud2F0Y2ggPSBmdW5jdGlvbiB3YXRjaCAoZ2V0dGVyLCBjYiwgb3B0aW9ucykge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBnZXR0ZXIgPT09ICdmdW5jdGlvbicsIFwic3RvcmUud2F0Y2ggb25seSBhY2NlcHRzIGEgZnVuY3Rpb24uXCIpO1xuICB9XG4gIHJldHVybiB0aGlzLl93YXRjaGVyVk0uJHdhdGNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldHRlcih0aGlzJDEuc3RhdGUsIHRoaXMkMS5nZXR0ZXJzKTsgfSwgY2IsIG9wdGlvbnMpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlID0gZnVuY3Rpb24gcmVwbGFjZVN0YXRlIChzdGF0ZSkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIHRoaXMkMS5fdm0uX2RhdGEuJCRzdGF0ZSA9IHN0YXRlO1xuICB9KTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5yZWdpc3Rlck1vZHVsZSA9IGZ1bmN0aW9uIHJlZ2lzdGVyTW9kdWxlIChwYXRoLCByYXdNb2R1bGUsIG9wdGlvbnMpIHtcbiAgICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICAgIGFzc2VydChwYXRoLmxlbmd0aCA+IDAsICdjYW5ub3QgcmVnaXN0ZXIgdGhlIHJvb3QgbW9kdWxlIGJ5IHVzaW5nIHJlZ2lzdGVyTW9kdWxlLicpO1xuICB9XG5cbiAgdGhpcy5fbW9kdWxlcy5yZWdpc3RlcihwYXRoLCByYXdNb2R1bGUpO1xuICBpbnN0YWxsTW9kdWxlKHRoaXMsIHRoaXMuc3RhdGUsIHBhdGgsIHRoaXMuX21vZHVsZXMuZ2V0KHBhdGgpLCBvcHRpb25zLnByZXNlcnZlU3RhdGUpO1xuICAvLyByZXNldCBzdG9yZSB0byB1cGRhdGUgZ2V0dGVycy4uLlxuICByZXNldFN0b3JlVk0odGhpcywgdGhpcy5zdGF0ZSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUudW5yZWdpc3Rlck1vZHVsZSA9IGZ1bmN0aW9uIHVucmVnaXN0ZXJNb2R1bGUgKHBhdGgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICB9XG5cbiAgdGhpcy5fbW9kdWxlcy51bnJlZ2lzdGVyKHBhdGgpO1xuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50U3RhdGUgPSBnZXROZXN0ZWRTdGF0ZSh0aGlzJDEuc3RhdGUsIHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgICBWdWUuZGVsZXRlKHBhcmVudFN0YXRlLCBwYXRoW3BhdGgubGVuZ3RoIC0gMV0pO1xuICB9KTtcbiAgcmVzZXRTdG9yZSh0aGlzKTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5ob3RVcGRhdGUgPSBmdW5jdGlvbiBob3RVcGRhdGUgKG5ld09wdGlvbnMpIHtcbiAgdGhpcy5fbW9kdWxlcy51cGRhdGUobmV3T3B0aW9ucyk7XG4gIHJlc2V0U3RvcmUodGhpcywgdHJ1ZSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuX3dpdGhDb21taXQgPSBmdW5jdGlvbiBfd2l0aENvbW1pdCAoZm4pIHtcbiAgdmFyIGNvbW1pdHRpbmcgPSB0aGlzLl9jb21taXR0aW5nO1xuICB0aGlzLl9jb21taXR0aW5nID0gdHJ1ZTtcbiAgZm4oKTtcbiAgdGhpcy5fY29tbWl0dGluZyA9IGNvbW1pdHRpbmc7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggU3RvcmUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMkMSApO1xuXG5mdW5jdGlvbiBnZW5lcmljU3Vic2NyaWJlIChmbiwgc3Vicykge1xuICBpZiAoc3Vicy5pbmRleE9mKGZuKSA8IDApIHtcbiAgICBzdWJzLnB1c2goZm4pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGkgPSBzdWJzLmluZGV4T2YoZm4pO1xuICAgIGlmIChpID4gLTEpIHtcbiAgICAgIHN1YnMuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXNldFN0b3JlIChzdG9yZSwgaG90KSB7XG4gIHN0b3JlLl9hY3Rpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX211dGF0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl93cmFwcGVkR2V0dGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHN0YXRlID0gc3RvcmUuc3RhdGU7XG4gIC8vIGluaXQgYWxsIG1vZHVsZXNcbiAgaW5zdGFsbE1vZHVsZShzdG9yZSwgc3RhdGUsIFtdLCBzdG9yZS5fbW9kdWxlcy5yb290LCB0cnVlKTtcbiAgLy8gcmVzZXQgdm1cbiAgcmVzZXRTdG9yZVZNKHN0b3JlLCBzdGF0ZSwgaG90KTtcbn1cblxuZnVuY3Rpb24gcmVzZXRTdG9yZVZNIChzdG9yZSwgc3RhdGUsIGhvdCkge1xuICB2YXIgb2xkVm0gPSBzdG9yZS5fdm07XG5cbiAgLy8gYmluZCBzdG9yZSBwdWJsaWMgZ2V0dGVyc1xuICBzdG9yZS5nZXR0ZXJzID0ge307XG4gIHZhciB3cmFwcGVkR2V0dGVycyA9IHN0b3JlLl93cmFwcGVkR2V0dGVycztcbiAgdmFyIGNvbXB1dGVkID0ge307XG4gIGZvckVhY2hWYWx1ZSh3cmFwcGVkR2V0dGVycywgZnVuY3Rpb24gKGZuLCBrZXkpIHtcbiAgICAvLyB1c2UgY29tcHV0ZWQgdG8gbGV2ZXJhZ2UgaXRzIGxhenktY2FjaGluZyBtZWNoYW5pc21cbiAgICAvLyBkaXJlY3QgaW5saW5lIGZ1bmN0aW9uIHVzZSB3aWxsIGxlYWQgdG8gY2xvc3VyZSBwcmVzZXJ2aW5nIG9sZFZtLlxuICAgIC8vIHVzaW5nIHBhcnRpYWwgdG8gcmV0dXJuIGZ1bmN0aW9uIHdpdGggb25seSBhcmd1bWVudHMgcHJlc2VydmVkIGluIGNsb3N1cmUgZW52aXJvbWVudC5cbiAgICBjb21wdXRlZFtrZXldID0gcGFydGlhbChmbiwgc3RvcmUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdG9yZS5nZXR0ZXJzLCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuX3ZtW2tleV07IH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlIC8vIGZvciBsb2NhbCBnZXR0ZXJzXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIHVzZSBhIFZ1ZSBpbnN0YW5jZSB0byBzdG9yZSB0aGUgc3RhdGUgdHJlZVxuICAvLyBzdXBwcmVzcyB3YXJuaW5ncyBqdXN0IGluIGNhc2UgdGhlIHVzZXIgaGFzIGFkZGVkXG4gIC8vIHNvbWUgZnVua3kgZ2xvYmFsIG1peGluc1xuICB2YXIgc2lsZW50ID0gVnVlLmNvbmZpZy5zaWxlbnQ7XG4gIFZ1ZS5jb25maWcuc2lsZW50ID0gdHJ1ZTtcbiAgc3RvcmUuX3ZtID0gbmV3IFZ1ZSh7XG4gICAgZGF0YToge1xuICAgICAgJCRzdGF0ZTogc3RhdGVcbiAgICB9LFxuICAgIGNvbXB1dGVkOiBjb21wdXRlZFxuICB9KTtcbiAgVnVlLmNvbmZpZy5zaWxlbnQgPSBzaWxlbnQ7XG5cbiAgLy8gZW5hYmxlIHN0cmljdCBtb2RlIGZvciBuZXcgdm1cbiAgaWYgKHN0b3JlLnN0cmljdCkge1xuICAgIGVuYWJsZVN0cmljdE1vZGUoc3RvcmUpO1xuICB9XG5cbiAgaWYgKG9sZFZtKSB7XG4gICAgaWYgKGhvdCkge1xuICAgICAgLy8gZGlzcGF0Y2ggY2hhbmdlcyBpbiBhbGwgc3Vic2NyaWJlZCB3YXRjaGVyc1xuICAgICAgLy8gdG8gZm9yY2UgZ2V0dGVyIHJlLWV2YWx1YXRpb24gZm9yIGhvdCByZWxvYWRpbmcuXG4gICAgICBzdG9yZS5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9sZFZtLl9kYXRhLiQkc3RhdGUgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuICAgIFZ1ZS5uZXh0VGljayhmdW5jdGlvbiAoKSB7IHJldHVybiBvbGRWbS4kZGVzdHJveSgpOyB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsTW9kdWxlIChzdG9yZSwgcm9vdFN0YXRlLCBwYXRoLCBtb2R1bGUsIGhvdCkge1xuICB2YXIgaXNSb290ID0gIXBhdGgubGVuZ3RoO1xuICB2YXIgbmFtZXNwYWNlID0gc3RvcmUuX21vZHVsZXMuZ2V0TmFtZXNwYWNlKHBhdGgpO1xuXG4gIC8vIHJlZ2lzdGVyIGluIG5hbWVzcGFjZSBtYXBcbiAgaWYgKG1vZHVsZS5uYW1lc3BhY2VkKSB7XG4gICAgc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSA9IG1vZHVsZTtcbiAgfVxuXG4gIC8vIHNldCBzdGF0ZVxuICBpZiAoIWlzUm9vdCAmJiAhaG90KSB7XG4gICAgdmFyIHBhcmVudFN0YXRlID0gZ2V0TmVzdGVkU3RhdGUocm9vdFN0YXRlLCBwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgdmFyIG1vZHVsZU5hbWUgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgc3RvcmUuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgICAgVnVlLnNldChwYXJlbnRTdGF0ZSwgbW9kdWxlTmFtZSwgbW9kdWxlLnN0YXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBsb2NhbCA9IG1vZHVsZS5jb250ZXh0ID0gbWFrZUxvY2FsQ29udGV4dChzdG9yZSwgbmFtZXNwYWNlLCBwYXRoKTtcblxuICBtb2R1bGUuZm9yRWFjaE11dGF0aW9uKGZ1bmN0aW9uIChtdXRhdGlvbiwga2V5KSB7XG4gICAgdmFyIG5hbWVzcGFjZWRUeXBlID0gbmFtZXNwYWNlICsga2V5O1xuICAgIHJlZ2lzdGVyTXV0YXRpb24oc3RvcmUsIG5hbWVzcGFjZWRUeXBlLCBtdXRhdGlvbiwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaEFjdGlvbihmdW5jdGlvbiAoYWN0aW9uLCBrZXkpIHtcbiAgICB2YXIgdHlwZSA9IGFjdGlvbi5yb290ID8ga2V5IDogbmFtZXNwYWNlICsga2V5O1xuICAgIHZhciBoYW5kbGVyID0gYWN0aW9uLmhhbmRsZXIgfHwgYWN0aW9uO1xuICAgIHJlZ2lzdGVyQWN0aW9uKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoR2V0dGVyKGZ1bmN0aW9uIChnZXR0ZXIsIGtleSkge1xuICAgIHZhciBuYW1lc3BhY2VkVHlwZSA9IG5hbWVzcGFjZSArIGtleTtcbiAgICByZWdpc3RlckdldHRlcihzdG9yZSwgbmFtZXNwYWNlZFR5cGUsIGdldHRlciwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaENoaWxkKGZ1bmN0aW9uIChjaGlsZCwga2V5KSB7XG4gICAgaW5zdGFsbE1vZHVsZShzdG9yZSwgcm9vdFN0YXRlLCBwYXRoLmNvbmNhdChrZXkpLCBjaGlsZCwgaG90KTtcbiAgfSk7XG59XG5cbi8qKlxuICogbWFrZSBsb2NhbGl6ZWQgZGlzcGF0Y2gsIGNvbW1pdCwgZ2V0dGVycyBhbmQgc3RhdGVcbiAqIGlmIHRoZXJlIGlzIG5vIG5hbWVzcGFjZSwganVzdCB1c2Ugcm9vdCBvbmVzXG4gKi9cbmZ1bmN0aW9uIG1ha2VMb2NhbENvbnRleHQgKHN0b3JlLCBuYW1lc3BhY2UsIHBhdGgpIHtcbiAgdmFyIG5vTmFtZXNwYWNlID0gbmFtZXNwYWNlID09PSAnJztcblxuICB2YXIgbG9jYWwgPSB7XG4gICAgZGlzcGF0Y2g6IG5vTmFtZXNwYWNlID8gc3RvcmUuZGlzcGF0Y2ggOiBmdW5jdGlvbiAoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucykge1xuICAgICAgdmFyIGFyZ3MgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgICAgdmFyIHBheWxvYWQgPSBhcmdzLnBheWxvYWQ7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3Mub3B0aW9ucztcbiAgICAgIHZhciB0eXBlID0gYXJncy50eXBlO1xuXG4gICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucm9vdCkge1xuICAgICAgICB0eXBlID0gbmFtZXNwYWNlICsgdHlwZTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXN0b3JlLl9hY3Rpb25zW3R5cGVdKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBsb2NhbCBhY3Rpb24gdHlwZTogXCIgKyAoYXJncy50eXBlKSArIFwiLCBnbG9iYWwgdHlwZTogXCIgKyB0eXBlKSk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0b3JlLmRpc3BhdGNoKHR5cGUsIHBheWxvYWQpXG4gICAgfSxcblxuICAgIGNvbW1pdDogbm9OYW1lc3BhY2UgPyBzdG9yZS5jb21taXQgOiBmdW5jdGlvbiAoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucykge1xuICAgICAgdmFyIGFyZ3MgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgICAgdmFyIHBheWxvYWQgPSBhcmdzLnBheWxvYWQ7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3Mub3B0aW9ucztcbiAgICAgIHZhciB0eXBlID0gYXJncy50eXBlO1xuXG4gICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucm9vdCkge1xuICAgICAgICB0eXBlID0gbmFtZXNwYWNlICsgdHlwZTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXN0b3JlLl9tdXRhdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGxvY2FsIG11dGF0aW9uIHR5cGU6IFwiICsgKGFyZ3MudHlwZSkgKyBcIiwgZ2xvYmFsIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0b3JlLmNvbW1pdCh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gZ2V0dGVycyBhbmQgc3RhdGUgb2JqZWN0IG11c3QgYmUgZ290dGVuIGxhemlseVxuICAvLyBiZWNhdXNlIHRoZXkgd2lsbCBiZSBjaGFuZ2VkIGJ5IHZtIHVwZGF0ZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsb2NhbCwge1xuICAgIGdldHRlcnM6IHtcbiAgICAgIGdldDogbm9OYW1lc3BhY2VcbiAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5nZXR0ZXJzOyB9XG4gICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbWFrZUxvY2FsR2V0dGVycyhzdG9yZSwgbmFtZXNwYWNlKTsgfVxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0TmVzdGVkU3RhdGUoc3RvcmUuc3RhdGUsIHBhdGgpOyB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbG9jYWxcbn1cblxuZnVuY3Rpb24gbWFrZUxvY2FsR2V0dGVycyAoc3RvcmUsIG5hbWVzcGFjZSkge1xuICB2YXIgZ2V0dGVyc1Byb3h5ID0ge307XG5cbiAgdmFyIHNwbGl0UG9zID0gbmFtZXNwYWNlLmxlbmd0aDtcbiAgT2JqZWN0LmtleXMoc3RvcmUuZ2V0dGVycykuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgIC8vIHNraXAgaWYgdGhlIHRhcmdldCBnZXR0ZXIgaXMgbm90IG1hdGNoIHRoaXMgbmFtZXNwYWNlXG4gICAgaWYgKHR5cGUuc2xpY2UoMCwgc3BsaXRQb3MpICE9PSBuYW1lc3BhY2UpIHsgcmV0dXJuIH1cblxuICAgIC8vIGV4dHJhY3QgbG9jYWwgZ2V0dGVyIHR5cGVcbiAgICB2YXIgbG9jYWxUeXBlID0gdHlwZS5zbGljZShzcGxpdFBvcyk7XG5cbiAgICAvLyBBZGQgYSBwb3J0IHRvIHRoZSBnZXR0ZXJzIHByb3h5LlxuICAgIC8vIERlZmluZSBhcyBnZXR0ZXIgcHJvcGVydHkgYmVjYXVzZVxuICAgIC8vIHdlIGRvIG5vdCB3YW50IHRvIGV2YWx1YXRlIHRoZSBnZXR0ZXJzIGluIHRoaXMgdGltZS5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2V0dGVyc1Byb3h5LCBsb2NhbFR5cGUsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuZ2V0dGVyc1t0eXBlXTsgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGdldHRlcnNQcm94eVxufVxuXG5mdW5jdGlvbiByZWdpc3Rlck11dGF0aW9uIChzdG9yZSwgdHlwZSwgaGFuZGxlciwgbG9jYWwpIHtcbiAgdmFyIGVudHJ5ID0gc3RvcmUuX211dGF0aW9uc1t0eXBlXSB8fCAoc3RvcmUuX211dGF0aW9uc1t0eXBlXSA9IFtdKTtcbiAgZW50cnkucHVzaChmdW5jdGlvbiB3cmFwcGVkTXV0YXRpb25IYW5kbGVyIChwYXlsb2FkKSB7XG4gICAgaGFuZGxlci5jYWxsKHN0b3JlLCBsb2NhbC5zdGF0ZSwgcGF5bG9hZCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckFjdGlvbiAoc3RvcmUsIHR5cGUsIGhhbmRsZXIsIGxvY2FsKSB7XG4gIHZhciBlbnRyeSA9IHN0b3JlLl9hY3Rpb25zW3R5cGVdIHx8IChzdG9yZS5fYWN0aW9uc1t0eXBlXSA9IFtdKTtcbiAgZW50cnkucHVzaChmdW5jdGlvbiB3cmFwcGVkQWN0aW9uSGFuZGxlciAocGF5bG9hZCwgY2IpIHtcbiAgICB2YXIgcmVzID0gaGFuZGxlci5jYWxsKHN0b3JlLCB7XG4gICAgICBkaXNwYXRjaDogbG9jYWwuZGlzcGF0Y2gsXG4gICAgICBjb21taXQ6IGxvY2FsLmNvbW1pdCxcbiAgICAgIGdldHRlcnM6IGxvY2FsLmdldHRlcnMsXG4gICAgICBzdGF0ZTogbG9jYWwuc3RhdGUsXG4gICAgICByb290R2V0dGVyczogc3RvcmUuZ2V0dGVycyxcbiAgICAgIHJvb3RTdGF0ZTogc3RvcmUuc3RhdGVcbiAgICB9LCBwYXlsb2FkLCBjYik7XG4gICAgaWYgKCFpc1Byb21pc2UocmVzKSkge1xuICAgICAgcmVzID0gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gICAgfVxuICAgIGlmIChzdG9yZS5fZGV2dG9vbEhvb2spIHtcbiAgICAgIHJldHVybiByZXMuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICBzdG9yZS5fZGV2dG9vbEhvb2suZW1pdCgndnVleDplcnJvcicsIGVycik7XG4gICAgICAgIHRocm93IGVyclxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyR2V0dGVyIChzdG9yZSwgdHlwZSwgcmF3R2V0dGVyLCBsb2NhbCkge1xuICBpZiAoc3RvcmUuX3dyYXBwZWRHZXR0ZXJzW3R5cGVdKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIGR1cGxpY2F0ZSBnZXR0ZXIga2V5OiBcIiArIHR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgc3RvcmUuX3dyYXBwZWRHZXR0ZXJzW3R5cGVdID0gZnVuY3Rpb24gd3JhcHBlZEdldHRlciAoc3RvcmUpIHtcbiAgICByZXR1cm4gcmF3R2V0dGVyKFxuICAgICAgbG9jYWwuc3RhdGUsIC8vIGxvY2FsIHN0YXRlXG4gICAgICBsb2NhbC5nZXR0ZXJzLCAvLyBsb2NhbCBnZXR0ZXJzXG4gICAgICBzdG9yZS5zdGF0ZSwgLy8gcm9vdCBzdGF0ZVxuICAgICAgc3RvcmUuZ2V0dGVycyAvLyByb290IGdldHRlcnNcbiAgICApXG4gIH07XG59XG5cbmZ1bmN0aW9uIGVuYWJsZVN0cmljdE1vZGUgKHN0b3JlKSB7XG4gIHN0b3JlLl92bS4kd2F0Y2goZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fZGF0YS4kJHN0YXRlIH0sIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgYXNzZXJ0KHN0b3JlLl9jb21taXR0aW5nLCBcImRvIG5vdCBtdXRhdGUgdnVleCBzdG9yZSBzdGF0ZSBvdXRzaWRlIG11dGF0aW9uIGhhbmRsZXJzLlwiKTtcbiAgICB9XG4gIH0sIHsgZGVlcDogdHJ1ZSwgc3luYzogdHJ1ZSB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0TmVzdGVkU3RhdGUgKHN0YXRlLCBwYXRoKSB7XG4gIHJldHVybiBwYXRoLmxlbmd0aFxuICAgID8gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBrZXkpIHsgcmV0dXJuIHN0YXRlW2tleV07IH0sIHN0YXRlKVxuICAgIDogc3RhdGVcbn1cblxuZnVuY3Rpb24gdW5pZnlPYmplY3RTdHlsZSAodHlwZSwgcGF5bG9hZCwgb3B0aW9ucykge1xuICBpZiAoaXNPYmplY3QodHlwZSkgJiYgdHlwZS50eXBlKSB7XG4gICAgb3B0aW9ucyA9IHBheWxvYWQ7XG4gICAgcGF5bG9hZCA9IHR5cGU7XG4gICAgdHlwZSA9IHR5cGUudHlwZTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJywgKFwiZXhwZWN0cyBzdHJpbmcgYXMgdGhlIHR5cGUsIGJ1dCBmb3VuZCBcIiArICh0eXBlb2YgdHlwZSkgKyBcIi5cIikpO1xuICB9XG5cbiAgcmV0dXJuIHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCwgb3B0aW9uczogb3B0aW9ucyB9XG59XG5cbmZ1bmN0aW9uIGluc3RhbGwgKF9WdWUpIHtcbiAgaWYgKFZ1ZSAmJiBfVnVlID09PSBWdWUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ1t2dWV4XSBhbHJlYWR5IGluc3RhbGxlZC4gVnVlLnVzZShWdWV4KSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZS4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICBWdWUgPSBfVnVlO1xuICBhcHBseU1peGluKFZ1ZSk7XG59XG5cbi8qKlxuICogUmVkdWNlIHRoZSBjb2RlIHdoaWNoIHdyaXR0ZW4gaW4gVnVlLmpzIGZvciBnZXR0aW5nIHRoZSBzdGF0ZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IHN0YXRlcyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IHN0YXRlIGFuZCBnZXR0ZXJzIGZvciBwYXJhbSwgeW91IGNhbiBkbyBzb21ldGhpbmcgZm9yIHN0YXRlIGFuZCBnZXR0ZXJzIGluIGl0LlxuICogQHBhcmFtIHtPYmplY3R9XG4gKi9cbnZhciBtYXBTdGF0ZSA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBzdGF0ZXMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBub3JtYWxpemVNYXAoc3RhdGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkU3RhdGUgKCkge1xuICAgICAgdmFyIHN0YXRlID0gdGhpcy4kc3RvcmUuc3RhdGU7XG4gICAgICB2YXIgZ2V0dGVycyA9IHRoaXMuJHN0b3JlLmdldHRlcnM7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcFN0YXRlJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IG1vZHVsZS5jb250ZXh0LnN0YXRlO1xuICAgICAgICBnZXR0ZXJzID0gbW9kdWxlLmNvbnRleHQuZ2V0dGVycztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsLmNhbGwodGhpcywgc3RhdGUsIGdldHRlcnMpXG4gICAgICAgIDogc3RhdGVbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgY29tbWl0dGluZyB0aGUgbXV0YXRpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG11dGF0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBjb21taXRgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbSwgaXQgY2FuIGFjY2VwdCBhbnRob3IgcGFyYW1zLiBZb3UgY2FuIGNvbW1pdCBtdXRhdGlvbiBhbmQgZG8gYW55IG90aGVyIHRoaW5ncyBpbiB0aGlzIGZ1bmN0aW9uLiBzcGVjaWFsbHksIFlvdSBuZWVkIHRvIHBhc3MgYW50aG9yIHBhcmFtcyBmcm9tIHRoZSBtYXBwZWQgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbnZhciBtYXBNdXRhdGlvbnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgbXV0YXRpb25zKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgbm9ybWFsaXplTWFwKG11dGF0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZE11dGF0aW9uICgpIHtcbiAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgICAvLyBHZXQgdGhlIGNvbW1pdCBtZXRob2QgZnJvbSBzdG9yZVxuICAgICAgdmFyIGNvbW1pdCA9IHRoaXMuJHN0b3JlLmNvbW1pdDtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgdmFyIG1vZHVsZSA9IGdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwTXV0YXRpb25zJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBjb21taXQgPSBtb2R1bGUuY29udGV4dC5jb21taXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5hcHBseSh0aGlzLCBbY29tbWl0XS5jb25jYXQoYXJncykpXG4gICAgICAgIDogY29tbWl0LmFwcGx5KHRoaXMuJHN0b3JlLCBbdmFsXS5jb25jYXQoYXJncykpXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZ2V0dGluZyB0aGUgZ2V0dGVyc1xuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gZ2V0dGVyc1xuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwR2V0dGVycyA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBnZXR0ZXJzKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgbm9ybWFsaXplTWFwKGdldHRlcnMpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgIHZhciBrZXkgPSByZWYua2V5O1xuICAgIHZhciB2YWwgPSByZWYudmFsO1xuXG4gICAgLy8gVGhlIG5hbWVzcGFjZSBoYXMgYmVlbiBtdXRhdGVkIGJ5IG5vcm1hbGl6ZU5hbWVzcGFjZVxuICAgIHZhbCA9IG5hbWVzcGFjZSArIHZhbDtcbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZEdldHRlciAoKSB7XG4gICAgICBpZiAobmFtZXNwYWNlICYmICFnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcEdldHRlcnMnLCBuYW1lc3BhY2UpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgISh2YWwgaW4gdGhpcy4kc3RvcmUuZ2V0dGVycykpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBnZXR0ZXI6IFwiICsgdmFsKSk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZGlzcGF0Y2ggdGhlIGFjdGlvblxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gYWN0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBkaXNwYXRjaGAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtLCBpdCBjYW4gYWNjZXB0IGFudGhvciBwYXJhbXMuIFlvdSBjYW4gZGlzcGF0Y2ggYWN0aW9uIGFuZCBkbyBhbnkgb3RoZXIgdGhpbmdzIGluIHRoaXMgZnVuY3Rpb24uIHNwZWNpYWxseSwgWW91IG5lZWQgdG8gcGFzcyBhbnRob3IgcGFyYW1zIGZyb20gdGhlIG1hcHBlZCBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcEFjdGlvbnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgYWN0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIG5vcm1hbGl6ZU1hcChhY3Rpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkQWN0aW9uICgpIHtcbiAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgICAvLyBnZXQgZGlzcGF0Y2ggZnVuY3Rpb24gZnJvbSBzdG9yZVxuICAgICAgdmFyIGRpc3BhdGNoID0gdGhpcy4kc3RvcmUuZGlzcGF0Y2g7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcEFjdGlvbnMnLCBuYW1lc3BhY2UpO1xuICAgICAgICBpZiAoIW1vZHVsZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGRpc3BhdGNoID0gbW9kdWxlLmNvbnRleHQuZGlzcGF0Y2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5hcHBseSh0aGlzLCBbZGlzcGF0Y2hdLmNvbmNhdChhcmdzKSlcbiAgICAgICAgOiBkaXNwYXRjaC5hcHBseSh0aGlzLiRzdG9yZSwgW3ZhbF0uY29uY2F0KGFyZ3MpKVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWJpbmRpbmcgbmFtZXNwYWNlIHBhcmFtIGZvciBtYXBYWFggZnVuY3Rpb24gaW4gc3BlY2lhbCBzY29wZWQsIGFuZCByZXR1cm4gdGhlbSBieSBzaW1wbGUgb2JqZWN0XG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbnZhciBjcmVhdGVOYW1lc3BhY2VkSGVscGVycyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UpIHsgcmV0dXJuICh7XG4gIG1hcFN0YXRlOiBtYXBTdGF0ZS5iaW5kKG51bGwsIG5hbWVzcGFjZSksXG4gIG1hcEdldHRlcnM6IG1hcEdldHRlcnMuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBNdXRhdGlvbnM6IG1hcE11dGF0aW9ucy5iaW5kKG51bGwsIG5hbWVzcGFjZSksXG4gIG1hcEFjdGlvbnM6IG1hcEFjdGlvbnMuYmluZChudWxsLCBuYW1lc3BhY2UpXG59KTsgfTtcblxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIG1hcFxuICogbm9ybWFsaXplTWFwKFsxLCAyLCAzXSkgPT4gWyB7IGtleTogMSwgdmFsOiAxIH0sIHsga2V5OiAyLCB2YWw6IDIgfSwgeyBrZXk6IDMsIHZhbDogMyB9IF1cbiAqIG5vcm1hbGl6ZU1hcCh7YTogMSwgYjogMiwgYzogM30pID0+IFsgeyBrZXk6ICdhJywgdmFsOiAxIH0sIHsga2V5OiAnYicsIHZhbDogMiB9LCB7IGtleTogJ2MnLCB2YWw6IDMgfSBdXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gbWFwXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1hcCAobWFwKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1hcClcbiAgICA/IG1hcC5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDoga2V5IH0pOyB9KVxuICAgIDogT2JqZWN0LmtleXMobWFwKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDogbWFwW2tleV0gfSk7IH0pXG59XG5cbi8qKlxuICogUmV0dXJuIGEgZnVuY3Rpb24gZXhwZWN0IHR3byBwYXJhbSBjb250YWlucyBuYW1lc3BhY2UgYW5kIG1hcC4gaXQgd2lsbCBub3JtYWxpemUgdGhlIG5hbWVzcGFjZSBhbmQgdGhlbiB0aGUgcGFyYW0ncyBmdW5jdGlvbiB3aWxsIGhhbmRsZSB0aGUgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIG1hcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTmFtZXNwYWNlIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWFwKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lc3BhY2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICBtYXAgPSBuYW1lc3BhY2U7XG4gICAgICBuYW1lc3BhY2UgPSAnJztcbiAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZS5jaGFyQXQobmFtZXNwYWNlLmxlbmd0aCAtIDEpICE9PSAnLycpIHtcbiAgICAgIG5hbWVzcGFjZSArPSAnLyc7XG4gICAgfVxuICAgIHJldHVybiBmbihuYW1lc3BhY2UsIG1hcClcbiAgfVxufVxuXG4vKipcbiAqIFNlYXJjaCBhIHNwZWNpYWwgbW9kdWxlIGZyb20gc3RvcmUgYnkgbmFtZXNwYWNlLiBpZiBtb2R1bGUgbm90IGV4aXN0LCBwcmludCBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3R9IHN0b3JlXG4gKiBAcGFyYW0ge1N0cmluZ30gaGVscGVyXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE1vZHVsZUJ5TmFtZXNwYWNlIChzdG9yZSwgaGVscGVyLCBuYW1lc3BhY2UpIHtcbiAgdmFyIG1vZHVsZSA9IHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwW25hbWVzcGFjZV07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFtb2R1bGUpIHtcbiAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBtb2R1bGUgbmFtZXNwYWNlIG5vdCBmb3VuZCBpbiBcIiArIGhlbHBlciArIFwiKCk6IFwiICsgbmFtZXNwYWNlKSk7XG4gIH1cbiAgcmV0dXJuIG1vZHVsZVxufVxuXG52YXIgaW5kZXhfZXNtID0ge1xuICBTdG9yZTogU3RvcmUsXG4gIGluc3RhbGw6IGluc3RhbGwsXG4gIHZlcnNpb246ICczLjEuMScsXG4gIG1hcFN0YXRlOiBtYXBTdGF0ZSxcbiAgbWFwTXV0YXRpb25zOiBtYXBNdXRhdGlvbnMsXG4gIG1hcEdldHRlcnM6IG1hcEdldHRlcnMsXG4gIG1hcEFjdGlvbnM6IG1hcEFjdGlvbnMsXG4gIGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzOiBjcmVhdGVOYW1lc3BhY2VkSGVscGVyc1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaW5kZXhfZXNtO1xuZXhwb3J0IHsgU3RvcmUsIGluc3RhbGwsIG1hcFN0YXRlLCBtYXBNdXRhdGlvbnMsIG1hcEdldHRlcnMsIG1hcEFjdGlvbnMsIGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzIH07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vuex/dist/vuex.esm.js\n");

/***/ }),

/***/ "./node_modules/webpack/buildin/amd-options.js":
/*!****************************************!*\
  !*** (webpack)/buildin/amd-options.js ***!
  \****************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n\n/* WEBPACK VAR INJECTION */}.call(this, {}))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL2FtZC1vcHRpb25zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2FtZC1vcHRpb25zLmpzPzAwODYiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFscyBfX3dlYnBhY2tfYW1kX29wdGlvbnNfXyAqL1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfYW1kX29wdGlvbnNfXztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/amd-options.js\n");

/***/ }),

/***/ "./node_modules/webpack/buildin/global.js":
/*!***********************************!*\
  !*** (webpack)/buildin/global.js ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL2dsb2JhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanM/Y2QwMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/global.js\n");

/***/ }),

/***/ "./node_modules/webpack/buildin/harmony-module.js":
/*!*******************************************!*\
  !*** (webpack)/buildin/harmony-module.js ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL2hhcm1vbnktbW9kdWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2hhcm1vbnktbW9kdWxlLmpzPzgyYjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcmlnaW5hbE1vZHVsZSkge1xuXHRpZiAoIW9yaWdpbmFsTW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xuXHRcdHZhciBtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG9yaWdpbmFsTW9kdWxlKTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJleHBvcnRzXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWVcblx0XHR9KTtcblx0XHRtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcblx0fVxuXHRyZXR1cm4gbW9kdWxlO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/harmony-module.js\n");

/***/ }),

/***/ "./node_modules/webpack/buildin/module.js":
/*!***********************************!*\
  !*** (webpack)/buildin/module.js ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL21vZHVsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanM/Y2VkMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/module.js\n");

/***/ }),

/***/ "./src/App.vue":
/*!*********************!*\
  !*** ./src/App.vue ***!
  \*********************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _App_vue_vue_type_template_id_7ba5bd90___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=template&id=7ba5bd90& */ \"./src/App.vue?vue&type=template&id=7ba5bd90&\");\n/* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ \"./src/App.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _App_vue_vue_type_template_id_7ba5bd90___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _App_vue_vue_type_template_id_7ba5bd90___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('7ba5bd90')) {\n      api.createRecord('7ba5bd90', component.options)\n    } else {\n      api.reload('7ba5bd90', component.options)\n    }\n    module.hot.accept(/*! ./App.vue?vue&type=template&id=7ba5bd90& */ \"./src/App.vue?vue&type=template&id=7ba5bd90&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _App_vue_vue_type_template_id_7ba5bd90___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=template&id=7ba5bd90& */ \"./src/App.vue?vue&type=template&id=7ba5bd90&\");\n(function () {\n      api.rerender('7ba5bd90', {\n        render: _App_vue_vue_type_template_id_7ba5bd90___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _App_vue_vue_type_template_id_7ba5bd90___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/App.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvQXBwLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9BcHAudnVlP2JmZjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9BcHAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdiYTViZDkwJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzdiYTViZDkwJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzdiYTViZDkwJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzdiYTViZDkwJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BcHAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdiYTViZDkwJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzdiYTViZDkwJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvQXBwLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/App.vue\n");

/***/ }),

/***/ "./src/App.vue?vue&type=script&lang=js&":
/*!**********************************************!*\
  !*** ./src/App.vue?vue&type=script&lang=js& ***!
  \**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/babel-loader/lib!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib??vue-loader-options!./App.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/App.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvQXBwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT9jNTNhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/App.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/App.vue?vue&type=template&id=7ba5bd90&":
/*!****************************************************!*\
  !*** ./src/App.vue?vue&type=template&id=7ba5bd90& ***!
  \****************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_template_id_7ba5bd90___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib??vue-loader-options!./App.vue?vue&type=template&id=7ba5bd90& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/App.vue?vue&type=template&id=7ba5bd90&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_template_id_7ba5bd90___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_template_id_7ba5bd90___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvQXBwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03YmE1YmQ5MCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT84ODQyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdiYTViZDkwJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/App.vue?vue&type=template&id=7ba5bd90&\n");

/***/ }),

/***/ "./src/actions.js":
/*!************************!*\
  !*** ./src/actions.js ***!
  \************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_common_services_AuthService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/common/services/AuthService */ \"./src/modules/common/services/AuthService.js\");\n/* harmony import */ var _modules_users_services_User__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/users/services/User */ \"./src/modules/users/services/User.js\");\n\n\nvar actions = {\n  // ////////////////////////////////////////////\n  // SIDEBAR & UI UX\n  // ////////////////////////////////////////////\n  updateSidebarWidth: function updateSidebarWidth(_ref, width) {\n    var commit = _ref.commit;\n    commit('UPDATE_SIDEBAR_WIDTH', width);\n  },\n  toggleContentOverlay: function toggleContentOverlay(_ref2) {\n    var commit = _ref2.commit;\n    commit('TOGGLE_CONTENT_OVERLAY');\n  },\n  updateTheme: function updateTheme(_ref3, val) {\n    var commit = _ref3.commit;\n    commit('UPDATE_THEME', val);\n  },\n  updateUserRole: function updateUserRole(_ref4, val) {\n    var commit = _ref4.commit;\n    commit('UPDATE_USER_ROLE', val);\n  },\n  updateWindowWidth: function updateWindowWidth(_ref5, width) {\n    var commit = _ref5.commit;\n    commit('UPDATE_WINDOW_WIDTH', width);\n  },\n  // ////////////////////////////////////////////\n  // COMPONENT\n  // ////////////////////////////////////////////\n  // VxAutoSuggest\n  updateStarredPage: function updateStarredPage(_ref6, payload) {\n    var commit = _ref6.commit;\n    commit('UPDATE_STARRED_PAGE', payload);\n  },\n  //  The Navbar\n  arrangeStarredPagesLimited: function arrangeStarredPagesLimited(_ref7, list) {\n    var commit = _ref7.commit;\n    commit('ARRANGE_STARRED_PAGES_LIMITED', list);\n  },\n  arrangeStarredPagesMore: function arrangeStarredPagesMore(_ref8, list) {\n    var commit = _ref8.commit;\n    commit('ARRANGE_STARRED_PAGES_MORE', list);\n  },\n  login: function login(_ref9, data) {\n    var commit = _ref9.commit;\n    return new Promise(function (resolve, reject) {\n      _modules_common_services_AuthService__WEBPACK_IMPORTED_MODULE_0__[\"default\"].login(data).then(function (token) {\n        commit('APP_TOKEN', token);\n        resolve(token);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  logout: function logout(_ref10) {\n    var commit = _ref10.commit;\n    return new Promise(function (resolve) {\n      commit('APP_TOKEN', null);\n      resolve();\n    });\n  },\n  me: function me(_ref11) {\n    var commit = _ref11.commit;\n    return new Promise(function (resolve, reject) {\n      _modules_common_services_AuthService__WEBPACK_IMPORTED_MODULE_0__[\"default\"].me().then(function (data) {\n        commit('USER_DATA', data);\n        resolve(data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  uploadAvatar: function uploadAvatar(_ref12, data) {\n    var commit = _ref12.commit;\n    return new Promise(function (resolve, reject) {\n      return _modules_users_services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].uploadAvatar(data.user, data.image).then(function (success) {\n        commit('UPLOADED_AVATAR', success);\n        resolve({\n          success: success\n        });\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getCounters: function getCounters(_ref13) {\n    var commit = _ref13.commit;\n    return new Promise(function (resolve, reject) {\n      _modules_common_services_AuthService__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getCounters().then(function (_ref14) {\n        var clients_to_confirm = _ref14.clients_to_confirm;\n        commit('COUNTERS', clients_to_confirm);\n        resolve(clients_to_confirm);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getUnreadMessages: function getUnreadMessages(_ref15) {\n    var commit = _ref15.commit;\n    return new Promise(function (resolve, reject) {\n      _modules_common_services_AuthService__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getUnreadMessages().then(function (_ref16) {\n        var unread_messages = _ref16.unread_messages;\n        commit('UNREAD_MESSAGES', unread_messages);\n        resolve(unread_messages);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (actions);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYWN0aW9ucy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hY3Rpb25zLmpzPzM0ZTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF1dGhTZXJ2aWNlIGZyb20gJy4vbW9kdWxlcy9jb21tb24vc2VydmljZXMvQXV0aFNlcnZpY2UnO1xuaW1wb3J0IFVzZXJTZXJ2aWNlIGZyb20gXCIuL21vZHVsZXMvdXNlcnMvc2VydmljZXMvVXNlclwiO1xuXG5jb25zdCBhY3Rpb25zID0ge1xuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBTSURFQkFSICYgVUkgVVhcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgdXBkYXRlU2lkZWJhcldpZHRoICh7Y29tbWl0fSwgd2lkdGgpIHtcbiAgICAgICAgY29tbWl0KCdVUERBVEVfU0lERUJBUl9XSURUSCcsIHdpZHRoKTtcbiAgICB9LFxuICAgIHRvZ2dsZUNvbnRlbnRPdmVybGF5ICh7Y29tbWl0fSkge1xuICAgICAgICBjb21taXQoJ1RPR0dMRV9DT05URU5UX09WRVJMQVknKTtcbiAgICB9LFxuICAgIHVwZGF0ZVRoZW1lICh7Y29tbWl0fSwgdmFsKSB7XG4gICAgICAgIGNvbW1pdCgnVVBEQVRFX1RIRU1FJywgdmFsKTtcbiAgICB9LFxuICAgIHVwZGF0ZVVzZXJSb2xlICh7Y29tbWl0fSwgdmFsKSB7XG4gICAgICAgIGNvbW1pdCgnVVBEQVRFX1VTRVJfUk9MRScsIHZhbCk7XG4gICAgfSxcbiAgICB1cGRhdGVXaW5kb3dXaWR0aCAoe2NvbW1pdH0sIHdpZHRoKSB7XG4gICAgICAgIGNvbW1pdCgnVVBEQVRFX1dJTkRPV19XSURUSCcsIHdpZHRoKTtcbiAgICB9LFxuXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIENPTVBPTkVOVFxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAvLyBWeEF1dG9TdWdnZXN0XG4gICAgdXBkYXRlU3RhcnJlZFBhZ2UgKHtjb21taXR9LCBwYXlsb2FkKSB7XG4gICAgICAgIGNvbW1pdCgnVVBEQVRFX1NUQVJSRURfUEFHRScsIHBheWxvYWQpXG4gICAgfSxcblxuICAgIC8vICBUaGUgTmF2YmFyXG4gICAgYXJyYW5nZVN0YXJyZWRQYWdlc0xpbWl0ZWQgKHtjb21taXR9LCBsaXN0KSB7XG4gICAgICAgIGNvbW1pdCgnQVJSQU5HRV9TVEFSUkVEX1BBR0VTX0xJTUlURUQnLCBsaXN0KVxuICAgIH0sXG4gICAgYXJyYW5nZVN0YXJyZWRQYWdlc01vcmUgKHtjb21taXR9LCBsaXN0KSB7XG4gICAgICAgIGNvbW1pdCgnQVJSQU5HRV9TVEFSUkVEX1BBR0VTX01PUkUnLCBsaXN0KVxuICAgIH0sXG5cbiAgICBsb2dpbiAoe2NvbW1pdH0sIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEF1dGhTZXJ2aWNlLmxvZ2luKGRhdGEpLnRoZW4oKHRva2VuKSA9PiB7XG4gICAgICAgICAgICAgICAgY29tbWl0KCdBUFBfVE9LRU4nLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh0b2tlbik7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGxvZ291dCAoe2NvbW1pdH0pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ0FQUF9UT0tFTicsIG51bGwpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgbWUgKHtjb21taXR9KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBdXRoU2VydmljZS5tZSgpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb21taXQoJ1VTRVJfREFUQScsIGRhdGEpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIHVwbG9hZEF2YXRhciAoe2NvbW1pdH0sIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFVzZXJTZXJ2aWNlLnVwbG9hZEF2YXRhcihkYXRhLnVzZXIsIGRhdGEuaW1hZ2UpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIGNvbW1pdCgnVVBMT0FERURfQVZBVEFSJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdWNjZXNzfSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG5cbiAgICBnZXRDb3VudGVycyAoe2NvbW1pdH0pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEF1dGhTZXJ2aWNlLmdldENvdW50ZXJzKCkudGhlbigoe2NsaWVudHNfdG9fY29uZmlybX0pID0+IHtcbiAgICAgICAgICAgICAgICBjb21taXQoJ0NPVU5URVJTJywgY2xpZW50c190b19jb25maXJtKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGNsaWVudHNfdG9fY29uZmlybSk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGdldFVucmVhZE1lc3NhZ2VzICh7Y29tbWl0fSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXV0aFNlcnZpY2UuZ2V0VW5yZWFkTWVzc2FnZXMoKS50aGVuKCh7dW5yZWFkX21lc3NhZ2VzfSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbW1pdCgnVU5SRUFEX01FU1NBR0VTJywgdW5yZWFkX21lc3NhZ2VzKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHVucmVhZF9tZXNzYWdlcyk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG59O1xuXG5leHBvcnQgZGVmYXVsdCBhY3Rpb25zXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBeEZBO0FBNEZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/actions.js\n");

/***/ }),

/***/ "./src/assets/css/iconfont.css":
/*!*************************************!*\
  !*** ./src/assets/css/iconfont.css ***!
  \*************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--6-oneOf-3-1!../../../node_modules/postcss-loader/src??ref--6-oneOf-3-2!./iconfont.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/iconfont.css\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3cbdad68\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../node_modules/css-loader??ref--6-oneOf-3-1!../../../node_modules/postcss-loader/src??ref--6-oneOf-3-2!./iconfont.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/iconfont.css\", function() {\n     var newContent = __webpack_require__(/*! !../../../node_modules/css-loader??ref--6-oneOf-3-1!../../../node_modules/postcss-loader/src??ref--6-oneOf-3-2!./iconfont.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/iconfont.css\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2Nzcy9pY29uZm9udC5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2Nzcy9pY29uZm9udC5jc3M/MjRkNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMiEuL2ljb25mb250LmNzc1wiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpLmRlZmF1bHRcbnZhciB1cGRhdGUgPSBhZGQoXCIzY2JkYWQ2OFwiLCBjb250ZW50LCBmYWxzZSwge1wic291cmNlTWFwXCI6ZmFsc2UsXCJzaGFkb3dNb2RlXCI6ZmFsc2V9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi9pY29uZm9udC5jc3NcIiwgZnVuY3Rpb24oKSB7XG4gICAgIHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMiEuL2ljb25mb250LmNzc1wiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/css/iconfont.css\n");

/***/ }),

/***/ "./src/assets/css/main.css":
/*!*********************************!*\
  !*** ./src/assets/css/main.css ***!
  \*********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--6-oneOf-3-1!../../../node_modules/postcss-loader/src??ref--6-oneOf-3-2!./main.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/main.css\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"361d4a6e\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../node_modules/css-loader??ref--6-oneOf-3-1!../../../node_modules/postcss-loader/src??ref--6-oneOf-3-2!./main.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/main.css\", function() {\n     var newContent = __webpack_require__(/*! !../../../node_modules/css-loader??ref--6-oneOf-3-1!../../../node_modules/postcss-loader/src??ref--6-oneOf-3-2!./main.css */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./src/assets/css/main.css\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2Nzcy9tYWluLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvY3NzL21haW4uY3NzPzc0YWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi9tYWluLmNzc1wiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpLmRlZmF1bHRcbnZhciB1cGRhdGUgPSBhZGQoXCIzNjFkNGE2ZVwiLCBjb250ZW50LCBmYWxzZSwge1wic291cmNlTWFwXCI6ZmFsc2UsXCJzaGFkb3dNb2RlXCI6ZmFsc2V9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNi1vbmVPZi0zLTIhLi9tYWluLmNzc1wiLCBmdW5jdGlvbigpIHtcbiAgICAgdmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LW9uZU9mLTMtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTYtb25lT2YtMy0yIS4vbWFpbi5jc3NcIik7XG4gICAgIGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuICAgICB1cGRhdGUobmV3Q29udGVudCk7XG4gICB9KTtcbiB9XG4gLy8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/assets/css/main.css\n");

/***/ }),

/***/ "./src/assets/fonts/Roboto-ThinItalic.ttf":
/*!************************************************!*\
  !*** ./src/assets/fonts/Roboto-ThinItalic.ttf ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"fonts/Roboto-ThinItalic.35a9c89a.ttf\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ZvbnRzL1JvYm90by1UaGluSXRhbGljLnR0Zi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvZm9udHMvUm9ib3RvLVRoaW5JdGFsaWMudHRmPzhlZmYiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiZm9udHMvUm9ib3RvLVRoaW5JdGFsaWMuMzVhOWM4OWEudHRmXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/fonts/Roboto-ThinItalic.ttf\n");

/***/ }),

/***/ "./src/assets/fonts/feather.eot?t=1525787366991":
/*!******************************************************!*\
  !*** ./src/assets/fonts/feather.eot?t=1525787366991 ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"fonts/feather.931c9e74.eot\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ZvbnRzL2ZlYXRoZXIuZW90P3Q9MTUyNTc4NzM2Njk5MS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvZm9udHMvZmVhdGhlci5lb3Q/YzcxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJmb250cy9mZWF0aGVyLjkzMWM5ZTc0LmVvdFwiOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/assets/fonts/feather.eot?t=1525787366991\n");

/***/ }),

/***/ "./src/assets/fonts/feather.svg?t=1525787366991":
/*!******************************************************!*\
  !*** ./src/assets/fonts/feather.svg?t=1525787366991 ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/feather.89f5f682.svg\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ZvbnRzL2ZlYXRoZXIuc3ZnP3Q9MTUyNTc4NzM2Njk5MS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvZm9udHMvZmVhdGhlci5zdmc/ZjVkMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvZmVhdGhlci44OWY1ZjY4Mi5zdmdcIjsiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/assets/fonts/feather.svg?t=1525787366991\n");

/***/ }),

/***/ "./src/assets/fonts/feather.ttf?t=1525787366991":
/*!******************************************************!*\
  !*** ./src/assets/fonts/feather.ttf?t=1525787366991 ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"fonts/feather.6a750f01.ttf\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ZvbnRzL2ZlYXRoZXIudHRmP3Q9MTUyNTc4NzM2Njk5MS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvZm9udHMvZmVhdGhlci50dGY/ZDYwNyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJmb250cy9mZWF0aGVyLjZhNzUwZjAxLnR0ZlwiOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/assets/fonts/feather.ttf?t=1525787366991\n");

/***/ }),

/***/ "./src/assets/fonts/feather.woff?t=1525787366991":
/*!*******************************************************!*\
  !*** ./src/assets/fonts/feather.woff?t=1525787366991 ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"fonts/feather.3d2fa2e5.woff\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ZvbnRzL2ZlYXRoZXIud29mZj90PTE1MjU3ODczNjY5OTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ZvbnRzL2ZlYXRoZXIud29mZj9jMzU3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gKyBcImZvbnRzL2ZlYXRoZXIuM2QyZmEyZTUud29mZlwiOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/assets/fonts/feather.woff?t=1525787366991\n");

/***/ }),

/***/ "./src/assets/images/pages/vuesax-login-bg.jpg":
/*!*****************************************************!*\
  !*** ./src/assets/images/pages/vuesax-login-bg.jpg ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/vuesax-login-bg.04351a33.jpg\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wYWdlcy92dWVzYXgtbG9naW4tYmcuanBnLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy9pbWFnZXMvcGFnZXMvdnVlc2F4LWxvZ2luLWJnLmpwZz81MTQzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gKyBcImltZy92dWVzYXgtbG9naW4tYmcuMDQzNTFhMzMuanBnXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/pages/vuesax-login-bg.jpg\n");

/***/ }),

/***/ "./src/assets/images/portrait/small sync recursive ^\\.\\/.*$":
/*!********************************************************!*\
  !*** ./src/assets/images/portrait/small sync ^\.\/.*$ ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var map = {\n\t\"./avatar-s-1.png\": \"./src/assets/images/portrait/small/avatar-s-1.png\",\n\t\"./avatar-s-10.png\": \"./src/assets/images/portrait/small/avatar-s-10.png\",\n\t\"./avatar-s-11.png\": \"./src/assets/images/portrait/small/avatar-s-11.png\",\n\t\"./avatar-s-12.png\": \"./src/assets/images/portrait/small/avatar-s-12.png\",\n\t\"./avatar-s-13.png\": \"./src/assets/images/portrait/small/avatar-s-13.png\",\n\t\"./avatar-s-14.png\": \"./src/assets/images/portrait/small/avatar-s-14.png\",\n\t\"./avatar-s-15.png\": \"./src/assets/images/portrait/small/avatar-s-15.png\",\n\t\"./avatar-s-16.png\": \"./src/assets/images/portrait/small/avatar-s-16.png\",\n\t\"./avatar-s-17.png\": \"./src/assets/images/portrait/small/avatar-s-17.png\",\n\t\"./avatar-s-18.png\": \"./src/assets/images/portrait/small/avatar-s-18.png\",\n\t\"./avatar-s-19.png\": \"./src/assets/images/portrait/small/avatar-s-19.png\",\n\t\"./avatar-s-2.png\": \"./src/assets/images/portrait/small/avatar-s-2.png\",\n\t\"./avatar-s-20.png\": \"./src/assets/images/portrait/small/avatar-s-20.png\",\n\t\"./avatar-s-21.png\": \"./src/assets/images/portrait/small/avatar-s-21.png\",\n\t\"./avatar-s-22.png\": \"./src/assets/images/portrait/small/avatar-s-22.png\",\n\t\"./avatar-s-23.png\": \"./src/assets/images/portrait/small/avatar-s-23.png\",\n\t\"./avatar-s-24.png\": \"./src/assets/images/portrait/small/avatar-s-24.png\",\n\t\"./avatar-s-25.png\": \"./src/assets/images/portrait/small/avatar-s-25.png\",\n\t\"./avatar-s-26.png\": \"./src/assets/images/portrait/small/avatar-s-26.png\",\n\t\"./avatar-s-3.png\": \"./src/assets/images/portrait/small/avatar-s-3.png\",\n\t\"./avatar-s-4.png\": \"./src/assets/images/portrait/small/avatar-s-4.png\",\n\t\"./avatar-s-5.png\": \"./src/assets/images/portrait/small/avatar-s-5.png\",\n\t\"./avatar-s-6.png\": \"./src/assets/images/portrait/small/avatar-s-6.png\",\n\t\"./avatar-s-7.png\": \"./src/assets/images/portrait/small/avatar-s-7.png\",\n\t\"./avatar-s-8.png\": \"./src/assets/images/portrait/small/avatar-s-8.png\",\n\t\"./avatar-s-9.png\": \"./src/assets/images/portrait/small/avatar-s-9.png\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src/assets/images/portrait/small sync recursive ^\\\\.\\\\/.*$\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbCBzeW5jIHJlY3Vyc2l2ZSBeXFwuXFwvLiokLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy9pbWFnZXMvcG9ydHJhaXQvc21hbGwgc3luYyBeXFwuXFwvLiokPzQ4ZWEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIG1hcCA9IHtcblx0XCIuL2F2YXRhci1zLTEucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xLnBuZ1wiLFxuXHRcIi4vYXZhdGFyLXMtMTAucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMC5wbmdcIixcblx0XCIuL2F2YXRhci1zLTExLnBuZ1wiOiBcIi4vc3JjL2Fzc2V0cy9pbWFnZXMvcG9ydHJhaXQvc21hbGwvYXZhdGFyLXMtMTEucG5nXCIsXG5cdFwiLi9hdmF0YXItcy0xMi5wbmdcIjogXCIuL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTEyLnBuZ1wiLFxuXHRcIi4vYXZhdGFyLXMtMTMucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMy5wbmdcIixcblx0XCIuL2F2YXRhci1zLTE0LnBuZ1wiOiBcIi4vc3JjL2Fzc2V0cy9pbWFnZXMvcG9ydHJhaXQvc21hbGwvYXZhdGFyLXMtMTQucG5nXCIsXG5cdFwiLi9hdmF0YXItcy0xNS5wbmdcIjogXCIuL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTE1LnBuZ1wiLFxuXHRcIi4vYXZhdGFyLXMtMTYucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xNi5wbmdcIixcblx0XCIuL2F2YXRhci1zLTE3LnBuZ1wiOiBcIi4vc3JjL2Fzc2V0cy9pbWFnZXMvcG9ydHJhaXQvc21hbGwvYXZhdGFyLXMtMTcucG5nXCIsXG5cdFwiLi9hdmF0YXItcy0xOC5wbmdcIjogXCIuL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTE4LnBuZ1wiLFxuXHRcIi4vYXZhdGFyLXMtMTkucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xOS5wbmdcIixcblx0XCIuL2F2YXRhci1zLTIucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yLnBuZ1wiLFxuXHRcIi4vYXZhdGFyLXMtMjAucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMC5wbmdcIixcblx0XCIuL2F2YXRhci1zLTIxLnBuZ1wiOiBcIi4vc3JjL2Fzc2V0cy9pbWFnZXMvcG9ydHJhaXQvc21hbGwvYXZhdGFyLXMtMjEucG5nXCIsXG5cdFwiLi9hdmF0YXItcy0yMi5wbmdcIjogXCIuL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTIyLnBuZ1wiLFxuXHRcIi4vYXZhdGFyLXMtMjMucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMy5wbmdcIixcblx0XCIuL2F2YXRhci1zLTI0LnBuZ1wiOiBcIi4vc3JjL2Fzc2V0cy9pbWFnZXMvcG9ydHJhaXQvc21hbGwvYXZhdGFyLXMtMjQucG5nXCIsXG5cdFwiLi9hdmF0YXItcy0yNS5wbmdcIjogXCIuL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTI1LnBuZ1wiLFxuXHRcIi4vYXZhdGFyLXMtMjYucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yNi5wbmdcIixcblx0XCIuL2F2YXRhci1zLTMucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0zLnBuZ1wiLFxuXHRcIi4vYXZhdGFyLXMtNC5wbmdcIjogXCIuL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTQucG5nXCIsXG5cdFwiLi9hdmF0YXItcy01LnBuZ1wiOiBcIi4vc3JjL2Fzc2V0cy9pbWFnZXMvcG9ydHJhaXQvc21hbGwvYXZhdGFyLXMtNS5wbmdcIixcblx0XCIuL2F2YXRhci1zLTYucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy02LnBuZ1wiLFxuXHRcIi4vYXZhdGFyLXMtNy5wbmdcIjogXCIuL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTcucG5nXCIsXG5cdFwiLi9hdmF0YXItcy04LnBuZ1wiOiBcIi4vc3JjL2Fzc2V0cy9pbWFnZXMvcG9ydHJhaXQvc21hbGwvYXZhdGFyLXMtOC5wbmdcIixcblx0XCIuL2F2YXRhci1zLTkucG5nXCI6IFwiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy05LnBuZ1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLiokXCI7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small sync recursive ^\\.\\/.*$\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-1.png":
/*!*********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-1.8edbcded.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xLnBuZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTEucG5nPzExMzQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiaW1nL2F2YXRhci1zLTEuOGVkYmNkZWQucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-1.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-10.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-10.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-10.7be10c57.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMC5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMC5wbmc/YTQwMyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTAuN2JlMTBjNTcucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-10.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-11.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-11.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-11.51a23c07.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMS5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMS5wbmc/ODBhYSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTEuNTFhMjNjMDcucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-11.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-12.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-12.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-12.cec148fe.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMi5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMi5wbmc/N2UzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTIuY2VjMTQ4ZmUucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-12.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-13.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-13.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-13.1875411a.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMy5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xMy5wbmc/NjQ0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTMuMTg3NTQxMWEucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-13.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-14.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-14.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-14.9ab8c514.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xNC5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xNC5wbmc/MGYyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTQuOWFiOGM1MTQucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-14.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-15.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-15.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-15.30fed846.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xNS5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xNS5wbmc/YjQzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTUuMzBmZWQ4NDYucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-15.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-16.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-16.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-16.88e40556.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xNi5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xNi5wbmc/NjUwOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTYuODhlNDA1NTYucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-16.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-17.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-17.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-17.a92e96b2.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xNy5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xNy5wbmc/MTlkYyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTcuYTkyZTk2YjIucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-17.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-18.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-18.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-18.6f5c3253.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xOC5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xOC5wbmc/MWYwZCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTguNmY1YzMyNTMucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-18.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-19.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-19.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-19.908c8b78.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xOS5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0xOS5wbmc/ZTdkNiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMTkuOTA4YzhiNzgucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-19.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-2.png":
/*!*********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-2.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-2.93c7a17a.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yLnBuZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTIucG5nP2E3MzYiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiaW1nL2F2YXRhci1zLTIuOTNjN2ExN2EucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-2.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-20.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-20.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-20.aa019f1d.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMC5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMC5wbmc/MWJmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMjAuYWEwMTlmMWQucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-20.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-21.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-21.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-21.5aee13d8.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMS5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMS5wbmc/MThmOCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMjEuNWFlZTEzZDgucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-21.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-22.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-22.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-22.350e5390.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMi5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMi5wbmc/MGM4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMjIuMzUwZTUzOTAucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-22.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-23.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-23.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-23.5e55f949.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMy5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yMy5wbmc/NWUyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMjMuNWU1NWY5NDkucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-23.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-24.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-24.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-24.13572d01.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yNC5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yNC5wbmc/ZWZiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMjQuMTM1NzJkMDEucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-24.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-25.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-25.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-25.d1c0b48d.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yNS5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yNS5wbmc/NjhkMyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMjUuZDFjMGI0OGQucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-25.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-26.png":
/*!**********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-26.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-26.d1c0b48d.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yNi5wbmcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0yNi5wbmc/MzZkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJpbWcvYXZhdGFyLXMtMjYuZDFjMGI0OGQucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-26.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-3.png":
/*!*********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-3.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-3.a718f09a.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy0zLnBuZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTMucG5nPzIyODEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiaW1nL2F2YXRhci1zLTMuYTcxOGYwOWEucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-3.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-4.png":
/*!*********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-4.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-4.88863dbb.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy00LnBuZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTQucG5nPzI2Y2UiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiaW1nL2F2YXRhci1zLTQuODg4NjNkYmIucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-4.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-5.png":
/*!*********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-5.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-5.73b9c8f8.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy01LnBuZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTUucG5nP2NjMDYiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiaW1nL2F2YXRhci1zLTUuNzNiOWM4ZjgucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-5.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-6.png":
/*!*********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-6.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-6.6b63817c.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy02LnBuZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTYucG5nP2Y1ODAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiaW1nL2F2YXRhci1zLTYuNmI2MzgxN2MucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-6.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-7.png":
/*!*********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-7.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-7.9241b5d6.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy03LnBuZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTcucG5nP2U4MjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiaW1nL2F2YXRhci1zLTcuOTI0MWI1ZDYucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-7.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-8.png":
/*!*********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-8.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-8.2579bd6d.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy04LnBuZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTgucG5nPzAzMjIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiaW1nL2F2YXRhci1zLTguMjU3OWJkNmQucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-8.png\n");

/***/ }),

/***/ "./src/assets/images/portrait/small/avatar-s-9.png":
/*!*********************************************************!*\
  !*** ./src/assets/images/portrait/small/avatar-s-9.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__.p + \"img/avatar-s-9.ec990ac1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL2ltYWdlcy9wb3J0cmFpdC9zbWFsbC9hdmF0YXItcy05LnBuZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hc3NldHMvaW1hZ2VzL3BvcnRyYWl0L3NtYWxsL2F2YXRhci1zLTkucG5nPzc0OGIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiaW1nL2F2YXRhci1zLTkuZWM5OTBhYzEucG5nXCI7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/images/portrait/small/avatar-s-9.png\n");

/***/ }),

/***/ "./src/assets/scss/main.scss":
/*!***********************************!*\
  !*** ./src/assets/scss/main.scss ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-3-1!../../../node_modules/postcss-loader/src??ref--8-oneOf-3-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-3-3!./main.scss */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./src/assets/scss/main.scss\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4e30ee70\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(true) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(/*! !../../../node_modules/css-loader??ref--8-oneOf-3-1!../../../node_modules/postcss-loader/src??ref--8-oneOf-3-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-3-3!./main.scss */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./src/assets/scss/main.scss\", function() {\n     var newContent = __webpack_require__(/*! !../../../node_modules/css-loader??ref--8-oneOf-3-1!../../../node_modules/postcss-loader/src??ref--8-oneOf-3-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-3-3!./main.scss */ \"./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./src/assets/scss/main.scss\");\n     if(typeof newContent === 'string') newContent = [[module.i, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL3Njc3MvbWFpbi5zY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy9zY3NzL21haW4uc2Nzcz80M2FhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTMtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMy0yIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTMtMyEuL21haW4uc2Nzc1wiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgYWRkID0gcmVxdWlyZShcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpLmRlZmF1bHRcbnZhciB1cGRhdGUgPSBhZGQoXCI0ZTMwZWU3MFwiLCBjb250ZW50LCBmYWxzZSwge1wic291cmNlTWFwXCI6ZmFsc2UsXCJzaGFkb3dNb2RlXCI6ZmFsc2V9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMy0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0zLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMy0zIS4vbWFpbi5zY3NzXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMy0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0zLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMy0zIS4vbWFpbi5zY3NzXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/assets/scss/main.scss\n");

/***/ }),

/***/ "./src/assets/utils/color.js":
/*!***********************************!*\
  !*** ./src/assets/utils/color.js ***!
  \***********************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_string_trim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.string.trim */ \"./node_modules/core-js/modules/es6.string.trim.js\");\n/* harmony import */ var core_js_modules_es6_string_trim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_string_trim__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es7_array_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es7.array.includes */ \"./node_modules/core-js/modules/es7.array.includes.js\");\n/* harmony import */ var core_js_modules_es7_array_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_array_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es6.regexp.replace */ \"./node_modules/core-js/modules/es6.regexp.replace.js\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_regexp_search__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.regexp.search */ \"./node_modules/core-js/modules/es6.regexp.search.js\");\n/* harmony import */ var core_js_modules_es6_regexp_search__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_search__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.regexp.split */ \"./node_modules/core-js/modules/es6.regexp.split.js\");\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  darken: function darken(color, percent) {\n    var f = color.split(\",\"),\n        t = percent < 0 ? 0 : 255,\n        p = percent < 0 ? percent * -1 : percent,\n        R = parseInt(f[0].slice(4)),\n        G = parseInt(f[1]),\n        B = parseInt(f[2]);\n    return \"rgb(\" + (Math.round((t - R) * p) + R) + \",\" + (Math.round((t - G) * p) + G) + \",\" + (Math.round((t - B) * p) + B) + \")\";\n  },\n  getColor: function getColor(colorx) {\n    var alphax = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    var defaultx = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n    // change color hex to RGB\n    if (/^[#]/.test(colorx)) {\n      var c = this.hexToRgb(colorx);\n\n      if (alphax == 1) {\n        colorx = \"rgb(\".concat(c.r, \",\").concat(c.g, \",\").concat(c.b, \")\");\n      } else {\n        colorx = \"rgba(\".concat(c.r, \",\").concat(c.g, \",\").concat(c.b, \",\").concat(alphax, \")\");\n      }\n    } else if (/^rgba/.test(colorx)) {\n      if (colorx.search(/.([0-9]\\))$/) == -1 && !defaultx) {\n        colorx = colorx.replace(/.?([0-9]\\))$/, \"\".concat(alphax, \")\"));\n      }\n    } else if (/^(rgb)/.test(colorx)) {\n      // change rgb and rgba\n      if (alphax != 1) {\n        colorx = colorx.replace(/^(rgb)/, \"rgba\");\n        colorx = colorx.replace(/\\)$/, \",\".concat(alphax, \")\"));\n      }\n    }\n\n    return colorx;\n  },\n  isColor: function isColor(colorx) {\n    var vscolors = ['primary', 'secondary', 'success', 'danger', 'warning', 'dark', 'light'];\n    return vscolors.includes(colorx);\n  },\n  RandomColor: function RandomColor() {\n    function getRandomInt(min, max) {\n      return Math.floor(Math.random() * (max - min)) + min;\n    }\n\n    return \"rgb(\".concat(getRandomInt(0, 255), \",\").concat(getRandomInt(0, 255), \",\").concat(getRandomInt(0, 255), \")\");\n  },\n  rColor: function rColor(colorx) {\n    var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n    if (/^[#]/.test(colorx)) {\n      var c = this.hexToRgb(colorx);\n      colorx = \"rgba(\".concat(c.r, \",\").concat(c.g, \",\").concat(c.b, \",\").concat(opacity, \")\");\n    } else if (/^[rgb]/.test(colorx)) {\n      var colorSplit = colorx.split(')')[0];\n\n      if (!/^[rgba]/.test(colorx)) {\n        colorSplit.replace('rgb', 'rgba');\n        colorSplit += \",\".concat(opacity, \")\");\n      } else {\n        // colorSplit.replace('rgb','rgba')\n        colorSplit += \")\";\n      }\n\n      colorx = colorSplit;\n    }\n\n    var vscolors = ['primary', 'success', 'danger', 'warning', 'dark'];\n\n    if (colorx) {\n      if (/[#()]/.test(colorx)) {\n        return colorx;\n      } else {\n        if (vscolors.includes(colorx)) {\n          return \"rgba(var(--\".concat(colorx, \"),\").concat(opacity, \")\");\n        } else {\n          return \"rgba(var(--primary),\".concat(opacity, \")\");\n        }\n      }\n    } else {\n      return \"rgba(var(--primary),\".concat(opacity, \")\");\n    }\n  },\n  contrastColor: function contrastColor(elementx) {\n    var c = elementx;\n\n    if (/[#]/g.test(elementx)) {\n      var rgbx = this.hexToRgb(elementx);\n      c = \"rgb(\".concat(rgbx.r, \",\").concat(rgbx.g, \",\").concat(rgbx.b, \")\");\n    }\n\n    var rgb = c.replace(/^(rgb|rgba)\\(/, '').replace(/\\)$/, '').replace(/\\s/g, '').split(',');\n    var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\n    if (yiq >= 128) {\n      return true;\n    } else {\n      return false;\n    }\n  },\n  setCssVariable: function setCssVariable(propertyName, value) {\n    if (typeof window !== 'undefined') {\n      document.documentElement.style.setProperty(propertyName, value);\n    }\n  },\n  hexToRgb: function hexToRgb(hex) {\n    // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n    var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n    hex = hex.replace(shorthandRegex, function (m, r, g, b) {\n      return r + r + g + g + b + b;\n    });\n    var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n    return result ? {\n      r: parseInt(result[1], 16),\n      g: parseInt(result[2], 16),\n      b: parseInt(result[3], 16)\n    } : null;\n  },\n  getVariable: function getVariable(styles, propertyName) {\n    return String(styles.getPropertyValue(propertyName)).trim();\n  },\n  changeColor: function changeColor(colorInicial) {\n    var colores = ['primary', 'success', 'danger', 'warning', 'dark'];\n    var colorx;\n\n    if (colores.includes(colorInicial)) {\n      var style = getComputedStyle(document.documentElement);\n      colorx = this.getVariable(style, '--' + colorInicial);\n    } else {\n      if (/[rgb()]/g.test(colorInicial)) {\n        colorx = colorInicial.replace(/[rgb()]/g, '');\n      } else if (/[#]/g.test(colorInicial)) {\n        var rgbx = this.hexToRgb(colorInicial);\n        colorx = \"\".concat(rgbx.r, \",\").concat(rgbx.g, \",\").concat(rgbx.b);\n      } else {\n        colorx = '--' + colorInicial;\n      }\n    }\n\n    return colorx; // this.setCssVariable('--'+clave,colorx)\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL3V0aWxzL2NvbG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy91dGlscy9jb2xvci5qcz9lZTUzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICBkYXJrZW4gKGNvbG9yLCBwZXJjZW50KSB7XHJcbiAgICB2YXIgZiA9IGNvbG9yLnNwbGl0KFwiLFwiKSwgdCA9IHBlcmNlbnQgPCAwID8gMCA6IDI1NSwgcCA9IHBlcmNlbnQgPCAwID8gcGVyY2VudCAqIC0xIDogcGVyY2VudCxcclxuICAgICAgUiA9IHBhcnNlSW50KGZbMF0uc2xpY2UoNCkpLCBHID0gcGFyc2VJbnQoZlsxXSksIEIgPSBwYXJzZUludChmWzJdKTtcclxuICAgIHJldHVybiBcInJnYihcIiArIChNYXRoLnJvdW5kKCh0IC0gUikgKiBwKSArIFIpICsgXCIsXCIgKyAoTWF0aC5yb3VuZCgodCAtIEcpICogcCkgKyBHKSArIFwiLFwiICsgKE1hdGgucm91bmQoKHQgLSBCKSAqIHApICsgQikgKyBcIilcIjtcclxuICB9LFxyXG4gIGdldENvbG9yIChjb2xvcngsIGFscGhheCA9IDEsIGRlZmF1bHR4ID0gdHJ1ZSkge1xyXG4gICAgLy8gY2hhbmdlIGNvbG9yIGhleCB0byBSR0JcclxuICAgIGlmICgvXlsjXS8udGVzdChjb2xvcngpKSB7XHJcbiAgICAgIGxldCBjID0gdGhpcy5oZXhUb1JnYihjb2xvcngpXHJcblxyXG4gICAgICBpZiAoYWxwaGF4ID09IDEpIHtcclxuICAgICAgICBjb2xvcnggPSBgcmdiKCR7Yy5yfSwke2MuZ30sJHtjLmJ9KWBcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29sb3J4ID0gYHJnYmEoJHtjLnJ9LCR7Yy5nfSwke2MuYn0sJHthbHBoYXh9KWBcclxuXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoL15yZ2JhLy50ZXN0KGNvbG9yeCkpIHtcclxuXHJcbiAgICAgIGlmIChjb2xvcnguc2VhcmNoKC8uKFswLTldXFwpKSQvKSA9PSAtMSAmJiAhZGVmYXVsdHgpIHtcclxuICAgICAgICBjb2xvcnggPSBjb2xvcngucmVwbGFjZSgvLj8oWzAtOV1cXCkpJC8sIGAke2FscGhheH0pYClcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9IGVsc2UgaWYgKC9eKHJnYikvLnRlc3QoY29sb3J4KSkge1xyXG4gICAgICAvLyBjaGFuZ2UgcmdiIGFuZCByZ2JhXHJcbiAgICAgIGlmIChhbHBoYXggIT0gMSkge1xyXG4gICAgICAgIGNvbG9yeCA9IGNvbG9yeC5yZXBsYWNlKC9eKHJnYikvLCBgcmdiYWApXHJcbiAgICAgICAgY29sb3J4ID0gY29sb3J4LnJlcGxhY2UoL1xcKSQvLCBgLCR7YWxwaGF4fSlgKVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbG9yeFxyXG4gIH0sXHJcbiAgaXNDb2xvciAoY29sb3J4KSB7XHJcbiAgICBsZXQgdnNjb2xvcnMgPSBbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ3N1Y2Nlc3MnLCAnZGFuZ2VyJywgJ3dhcm5pbmcnLCAnZGFyaycsICdsaWdodCddXHJcbiAgICByZXR1cm4gdnNjb2xvcnMuaW5jbHVkZXMoY29sb3J4KVxyXG4gIH0sXHJcbiAgUmFuZG9tQ29sb3IgKCkge1xyXG4gICAgZnVuY3Rpb24gZ2V0UmFuZG9tSW50IChtaW4sIG1heCkge1xyXG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBgcmdiKCR7Z2V0UmFuZG9tSW50KDAsIDI1NSl9LCR7Z2V0UmFuZG9tSW50KDAsIDI1NSl9LCR7Z2V0UmFuZG9tSW50KDAsIDI1NSl9KWBcclxuICB9LFxyXG4gIHJDb2xvciAoY29sb3J4LCBvcGFjaXR5ID0gMSkge1xyXG4gICAgaWYgKC9eWyNdLy50ZXN0KGNvbG9yeCkpIHtcclxuICAgICAgbGV0IGMgPSB0aGlzLmhleFRvUmdiKGNvbG9yeClcclxuICAgICAgY29sb3J4ID0gYHJnYmEoJHtjLnJ9LCR7Yy5nfSwke2MuYn0sJHtvcGFjaXR5fSlgXHJcbiAgICB9IGVsc2UgaWYgKC9eW3JnYl0vLnRlc3QoY29sb3J4KSkge1xyXG4gICAgICBsZXQgY29sb3JTcGxpdCA9IGNvbG9yeC5zcGxpdCgnKScpWzBdXHJcbiAgICAgIGlmICghL15bcmdiYV0vLnRlc3QoY29sb3J4KSkge1xyXG4gICAgICAgIGNvbG9yU3BsaXQucmVwbGFjZSgncmdiJywgJ3JnYmEnKVxyXG4gICAgICAgIGNvbG9yU3BsaXQgKz0gYCwke29wYWNpdHl9KWBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBjb2xvclNwbGl0LnJlcGxhY2UoJ3JnYicsJ3JnYmEnKVxyXG4gICAgICAgIGNvbG9yU3BsaXQgKz0gYClgXHJcbiAgICAgIH1cclxuICAgICAgY29sb3J4ID0gY29sb3JTcGxpdFxyXG4gICAgfVxyXG5cclxuICAgIGxldCB2c2NvbG9ycyA9IFsncHJpbWFyeScsICdzdWNjZXNzJywgJ2RhbmdlcicsICd3YXJuaW5nJywgJ2RhcmsnXVxyXG4gICAgaWYgKGNvbG9yeCkge1xyXG4gICAgICBpZiAoL1sjKCldLy50ZXN0KGNvbG9yeCkpIHtcclxuICAgICAgICByZXR1cm4gY29sb3J4XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHZzY29sb3JzLmluY2x1ZGVzKGNvbG9yeCkpIHtcclxuICAgICAgICAgIHJldHVybiBgcmdiYSh2YXIoLS0ke2NvbG9yeH0pLCR7b3BhY2l0eX0pYFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gYHJnYmEodmFyKC0tcHJpbWFyeSksJHtvcGFjaXR5fSlgXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYHJnYmEodmFyKC0tcHJpbWFyeSksJHtvcGFjaXR5fSlgXHJcbiAgICB9XHJcbiAgfSxcclxuICBjb250cmFzdENvbG9yIChlbGVtZW50eCkge1xyXG4gICAgbGV0IGMgPSBlbGVtZW50eFxyXG4gICAgaWYgKC9bI10vZy50ZXN0KGVsZW1lbnR4KSkge1xyXG4gICAgICBsZXQgcmdieCA9IHRoaXMuaGV4VG9SZ2IoZWxlbWVudHgpXHJcbiAgICAgIGMgPSBgcmdiKCR7cmdieC5yfSwke3JnYnguZ30sJHtyZ2J4LmJ9KWBcclxuICAgIH1cclxuICAgIHZhciByZ2IgPSBjLnJlcGxhY2UoL14ocmdifHJnYmEpXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJykucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpO1xyXG4gICAgdmFyIHlpcSA9ICgocmdiWzBdICogMjk5KSArIChyZ2JbMV0gKiA1ODcpICsgKHJnYlsyXSAqIDExNCkpIC8gMTAwMDtcclxuICAgIGlmICh5aXEgPj0gMTI4KSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIHNldENzc1ZhcmlhYmxlIChwcm9wZXJ0eU5hbWUsIHZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgaGV4VG9SZ2IgKGhleCkge1xyXG4gICAgLy8gRXhwYW5kIHNob3J0aGFuZCBmb3JtIChlLmcuIFwiMDNGXCIpIHRvIGZ1bGwgZm9ybSAoZS5nLiBcIjAwMzNGRlwiKVxyXG4gICAgdmFyIHNob3J0aGFuZFJlZ2V4ID0gL14jPyhbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaTtcclxuICAgIGhleCA9IGhleC5yZXBsYWNlKHNob3J0aGFuZFJlZ2V4LCBmdW5jdGlvbiAobSwgciwgZywgYikge1xyXG4gICAgICByZXR1cm4gciArIHIgKyBnICsgZyArIGIgKyBiO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIHJlc3VsdCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xyXG4gICAgcmV0dXJuIHJlc3VsdCA/IHtcclxuICAgICAgcjogcGFyc2VJbnQocmVzdWx0WzFdLCAxNiksXHJcbiAgICAgIGc6IHBhcnNlSW50KHJlc3VsdFsyXSwgMTYpLFxyXG4gICAgICBiOiBwYXJzZUludChyZXN1bHRbM10sIDE2KVxyXG4gICAgfSA6IG51bGw7XHJcbiAgfSxcclxuICBnZXRWYXJpYWJsZSAoc3R5bGVzLCBwcm9wZXJ0eU5hbWUpIHtcclxuICAgIHJldHVybiBTdHJpbmcoc3R5bGVzLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKSkudHJpbSgpO1xyXG4gIH0sXHJcbiAgY2hhbmdlQ29sb3IgKGNvbG9ySW5pY2lhbCkge1xyXG4gICAgbGV0IGNvbG9yZXMgPSBbJ3ByaW1hcnknLCAnc3VjY2VzcycsICdkYW5nZXInLCAnd2FybmluZycsICdkYXJrJ11cclxuICAgIGxldCBjb2xvcnhcclxuXHJcbiAgICBpZiAoY29sb3Jlcy5pbmNsdWRlcyhjb2xvckluaWNpYWwpKSB7XHJcbiAgICAgIGxldCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICBjb2xvcnggPSB0aGlzLmdldFZhcmlhYmxlKHN0eWxlLCAnLS0nICsgY29sb3JJbmljaWFsKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKC9bcmdiKCldL2cudGVzdChjb2xvckluaWNpYWwpKSB7XHJcbiAgICAgICAgY29sb3J4ID0gY29sb3JJbmljaWFsLnJlcGxhY2UoL1tyZ2IoKV0vZywgJycpXHJcbiAgICAgIH0gZWxzZSBpZiAoL1sjXS9nLnRlc3QoY29sb3JJbmljaWFsKSkge1xyXG4gICAgICAgIGxldCByZ2J4ID0gdGhpcy5oZXhUb1JnYihjb2xvckluaWNpYWwpXHJcbiAgICAgICAgY29sb3J4ID0gYCR7cmdieC5yfSwke3JnYnguZ30sJHtyZ2J4LmJ9YFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbG9yeCA9ICctLScgKyBjb2xvckluaWNpYWxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbG9yeFxyXG4gICAgLy8gdGhpcy5zZXRDc3NWYXJpYWJsZSgnLS0nK2NsYXZlLGNvbG9yeClcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFwSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/assets/utils/color.js\n");

/***/ }),

/***/ "./src/assets/utils/index.js":
/*!***********************************!*\
  !*** ./src/assets/utils/index.js ***!
  \***********************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  insertBody: function insertBody(elx) {\n    document.body.insertBefore(elx, document.body.firstChild);\n  },\n  removeBody: function removeBody(element) {\n    var bodyx = document.body;\n    bodyx.removeChild(element);\n  },\n  changePosition: function changePosition(elx, content, conditional) {\n    var topx = 0;\n    var leftx = 0;\n    var widthx = 0;\n    var scrollTopx = window.pageYOffset || document.documentElement.scrollTop;\n\n    if (elx.getBoundingClientRect().top + 300 >= window.innerHeight) {\n      setTimeout(function () {\n        if (conditional) {\n          topx = elx.getBoundingClientRect().top - content.clientHeight + scrollTopx;\n        } else {\n          topx = elx.getBoundingClientRect().top - content.clientHeight + elx.clientHeight + scrollTopx;\n        }\n      }, 1);\n    } else {\n      topx = conditional ? elx.getBoundingClientRect().top + elx.clientHeight + scrollTopx + 5 : elx.getBoundingClientRect().top + scrollTopx;\n    }\n\n    leftx = elx.getBoundingClientRect().left;\n    widthx = elx.offsetWidth;\n    var cords = {\n      left: \"\".concat(leftx, \"px\"),\n      top: \"\".concat(topx, \"px\"),\n      width: \"\".concat(widthx, \"px\")\n    };\n    return cords;\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXNzZXRzL3V0aWxzL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy91dGlscy9pbmRleC5qcz9mOWUwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICBpbnNlcnRCb2R5IChlbHgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGVseCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKVxyXG4gIH0sXHJcbiAgcmVtb3ZlQm9keSAoZWxlbWVudCkge1xyXG4gICAgbGV0IGJvZHl4ID0gZG9jdW1lbnQuYm9keVxyXG4gICAgYm9keXgucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XHJcbiAgfSxcclxuICBjaGFuZ2VQb3NpdGlvbiAoZWx4LCBjb250ZW50LCBjb25kaXRpb25hbCkge1xyXG4gICAgbGV0IHRvcHggPSAwXHJcbiAgICBsZXQgbGVmdHggPSAwXHJcbiAgICBsZXQgd2lkdGh4ID0gMFxyXG4gICAgbGV0IHNjcm9sbFRvcHggPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcclxuICAgIGlmIChlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgMzAwID49IHdpbmRvdy5pbm5lckhlaWdodCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAoY29uZGl0aW9uYWwpIHtcclxuICAgICAgICAgIHRvcHggPSAoZWx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtIGNvbnRlbnQuY2xpZW50SGVpZ2h0KSArIHNjcm9sbFRvcHhcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdG9weCA9IChlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gY29udGVudC5jbGllbnRIZWlnaHQgKyBlbHguY2xpZW50SGVpZ2h0KSArIHNjcm9sbFRvcHhcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvcHggPSBjb25kaXRpb25hbCA/IChlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgZWx4LmNsaWVudEhlaWdodCkgKyBzY3JvbGxUb3B4ICsgNSA6IGVseC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxUb3B4XHJcbiAgICB9XHJcblxyXG4gICAgbGVmdHggPSBlbHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdFxyXG4gICAgd2lkdGh4ID0gZWx4Lm9mZnNldFdpZHRoXHJcblxyXG4gICAgbGV0IGNvcmRzID0ge1xyXG4gICAgICBsZWZ0OiBgJHtsZWZ0eH1weGAsXHJcbiAgICAgIHRvcDogYCR7dG9weH1weGAsXHJcbiAgICAgIHdpZHRoOiBgJHt3aWR0aHh9cHhgXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvcmRzXHJcbiAgfSxcclxufVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQXBDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/assets/utils/index.js\n");

/***/ }),

/***/ "./src/getters.js":
/*!************************!*\
  !*** ./src/getters.js ***!
  \************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar getters = {\n  token: function token(state) {\n    return state.token;\n  },\n  userData: function userData(state) {\n    return state.userData;\n  },\n  counters: function counters(state) {\n    return state.counters;\n  },\n  unreadMessages: function unreadMessages(state) {\n    return state.unreadMessages;\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (getters);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZ2V0dGVycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9nZXR0ZXJzLmpzPzQ0NjEiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZ2V0dGVycyA9IHtcbiAgICB0b2tlbjogc3RhdGUgPT4gc3RhdGUudG9rZW4sXG4gICAgdXNlckRhdGE6IHN0YXRlID0+IHN0YXRlLnVzZXJEYXRhLFxuICAgIGNvdW50ZXJzOiBzdGF0ZSA9PiBzdGF0ZS5jb3VudGVycyxcbiAgICB1bnJlYWRNZXNzYWdlczogc3RhdGUgPT4gc3RhdGUudW5yZWFkTWVzc2FnZXMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXR0ZXJzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBSkE7QUFPQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/getters.js\n");

/***/ }),

/***/ "./src/globalComponents.js":
/*!*********************************!*\
  !*** ./src/globalComponents.js ***!
  \*********************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n/* harmony import */ var _modules_common_layouts_components_vx_tooltip_VxTooltip_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/common/layouts/components/vx-tooltip/VxTooltip.vue */ \"./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue\");\n/* harmony import */ var _modules_common_components_VxCard_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/common/components/VxCard.vue */ \"./src/modules/common/components/VxCard.vue\");\n/* harmony import */ var _modules_common_components_FeatherIcon_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/common/components/FeatherIcon.vue */ \"./src/modules/common/components/FeatherIcon.vue\");\n/* harmony import */ var vue_select__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-select */ \"./node_modules/vue-select/dist/vue-select.js\");\n/* harmony import */ var vue_select__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vue_select__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-multiselect */ \"./node_modules/vue-multiselect/dist/vue-multiselect.min.js\");\n/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\nvue__WEBPACK_IMPORTED_MODULE_1__[\"default\"].component(_modules_common_layouts_components_vx_tooltip_VxTooltip_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"].name, _modules_common_layouts_components_vx_tooltip_VxTooltip_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nvue__WEBPACK_IMPORTED_MODULE_1__[\"default\"].component(_modules_common_components_VxCard_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].name, _modules_common_components_VxCard_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nvue__WEBPACK_IMPORTED_MODULE_1__[\"default\"].component(_modules_common_components_FeatherIcon_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].name, _modules_common_components_FeatherIcon_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]); // Set the components prop default to return our fresh components\n\nvue_select__WEBPACK_IMPORTED_MODULE_5___default.a.props.components.default = function () {\n  return {\n    Deselect: {\n      render: function render(createElement) {\n        return createElement('feather-icon', {\n          props: {\n            icon: 'XIcon',\n            svgClasses: 'w-4 h-4 mt-1'\n          }\n        });\n      }\n    },\n    OpenIndicator: {\n      render: function render(createElement) {\n        return createElement('feather-icon', {\n          props: {\n            icon: 'ChevronDownIcon',\n            svgClasses: 'w-5 h-5'\n          }\n        });\n      }\n    }\n  };\n};\n\nvue__WEBPACK_IMPORTED_MODULE_1__[\"default\"].component(vue_select__WEBPACK_IMPORTED_MODULE_5___default.a);\nvue__WEBPACK_IMPORTED_MODULE_1__[\"default\"].component('Multiselect', vue_multiselect__WEBPACK_IMPORTED_MODULE_6___default.a);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZ2xvYmFsQ29tcG9uZW50cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9nbG9iYWxDb21wb25lbnRzLmpzPzU0NjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgVnhUb29sdGlwIGZyb20gJy4vbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXRvb2x0aXAvVnhUb29sdGlwLnZ1ZSdcbmltcG9ydCBWeENhcmQgZnJvbSAnLi9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1Z4Q2FyZC52dWUnXG5pbXBvcnQgRmVhdGhlckljb24gZnJvbSAnLi9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL0ZlYXRoZXJJY29uLnZ1ZSdcbmltcG9ydCB2U2VsZWN0IGZyb20gJ3Z1ZS1zZWxlY3QnXG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAndnVlLW11bHRpc2VsZWN0J1xuXG5WdWUuY29tcG9uZW50KFZ4VG9vbHRpcC5uYW1lLCBWeFRvb2x0aXApO1xuVnVlLmNvbXBvbmVudChWeENhcmQubmFtZSwgVnhDYXJkKTtcblZ1ZS5jb21wb25lbnQoRmVhdGhlckljb24ubmFtZSwgRmVhdGhlckljb24pO1xuXG5cbi8vIFNldCB0aGUgY29tcG9uZW50cyBwcm9wIGRlZmF1bHQgdG8gcmV0dXJuIG91ciBmcmVzaCBjb21wb25lbnRzXG52U2VsZWN0LnByb3BzLmNvbXBvbmVudHMuZGVmYXVsdCA9ICgpID0+ICh7XG4gICAgRGVzZWxlY3Q6IHtcbiAgICAgICAgcmVuZGVyOiBjcmVhdGVFbGVtZW50ID0+IGNyZWF0ZUVsZW1lbnQoJ2ZlYXRoZXItaWNvbicsIHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgaWNvbjogJ1hJY29uJyxcbiAgICAgICAgICAgICAgICBzdmdDbGFzc2VzOiAndy00IGgtNCBtdC0xJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICB9LFxuICAgIE9wZW5JbmRpY2F0b3I6IHtcbiAgICAgICAgcmVuZGVyOiBjcmVhdGVFbGVtZW50ID0+IGNyZWF0ZUVsZW1lbnQoJ2ZlYXRoZXItaWNvbicsIHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgaWNvbjogJ0NoZXZyb25Eb3duSWNvbicsXG4gICAgICAgICAgICAgICAgc3ZnQ2xhc3NlczogJ3ctNSBoLTUnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgIH0sXG59KTtcblxuVnVlLmNvbXBvbmVudCh2U2VsZWN0KTtcblxuVnVlLmNvbXBvbmVudCgnTXVsdGlzZWxlY3QnLCBNdWx0aXNlbGVjdCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBREE7QUFBQTtBQURBO0FBUUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUFBO0FBREE7QUFUQTtBQUFBO0FBQ0E7QUFrQkE7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/globalComponents.js\n");

/***/ }),

/***/ "./src/main.js":
/*!*********************!*\
  !*** ./src/main.js ***!
  \*********************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es6_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.array.iterator.js */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.array.iterator.js\");\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es6_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es6_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es6_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.promise.js */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.promise.js\");\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es6_promise_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es6_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es6_object_assign_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.object.assign.js */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es6.object.assign.js\");\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es6_object_assign_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es6_object_assign_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es7_promise_finally_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es7.promise.finally.js */ \"./node_modules/@vue/babel-preset-app/node_modules/core-js/modules/es7.promise.finally.js\");\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es7_promise_finally_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_vue_babel_preset_app_node_modules_core_js_modules_es7_promise_finally_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n/* harmony import */ var _App_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./App.vue */ \"./src/App.vue\");\n/* harmony import */ var vuesax__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuesax */ \"./node_modules/vuesax/dist/vuesax.common.js\");\n/* harmony import */ var vuesax__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(vuesax__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var material_icons_iconfont_material_icons_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! material-icons/iconfont/material-icons.css */ \"./node_modules/material-icons/iconfont/material-icons.css\");\n/* harmony import */ var material_icons_iconfont_material_icons_css__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(material_icons_iconfont_material_icons_css__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var vue_multiselect_dist_vue_multiselect_min_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-multiselect/dist/vue-multiselect.min.css */ \"./node_modules/vue-multiselect/dist/vue-multiselect.min.css\");\n/* harmony import */ var vue_multiselect_dist_vue_multiselect_min_css__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect_dist_vue_multiselect_min_css__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var vuesax_dist_vuesax_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuesax/dist/vuesax.css */ \"./node_modules/vuesax/dist/vuesax.css\");\n/* harmony import */ var vuesax_dist_vuesax_css__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(vuesax_dist_vuesax_css__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _themeConfig_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../themeConfig.js */ \"./themeConfig.js\");\n/* harmony import */ var _globalComponents_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./globalComponents.js */ \"./src/globalComponents.js\");\n/* harmony import */ var _assets_scss_main_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./assets/scss/main.scss */ \"./src/assets/scss/main.scss\");\n/* harmony import */ var _assets_scss_main_scss__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_assets_scss_main_scss__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _assets_css_main_css__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/assets/css/main.css */ \"./src/assets/css/main.css\");\n/* harmony import */ var _assets_css_main_css__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_assets_css_main_css__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./router */ \"./src/router.js\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./store */ \"./src/store.js\");\n/* harmony import */ var _modules_common_filters_filters__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/common/filters/filters */ \"./src/modules/common/filters/filters.js\");\n/* harmony import */ var vue_clipboard2__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vue-clipboard2 */ \"./node_modules/vue-clipboard2/vue-clipboard.js\");\n/* harmony import */ var vue_clipboard2__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(vue_clipboard2__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var vue_tour__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! vue-tour */ \"./node_modules/vue-tour/dist/vue-tour.umd.js\");\n/* harmony import */ var vue_tour__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(vue_tour__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var vee_validate__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! vee-validate */ \"./node_modules/vee-validate/dist/vee-validate.esm.js\");\n/* harmony import */ var prismjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! prismjs */ \"./node_modules/prismjs/prism.js\");\n/* harmony import */ var prismjs__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(prismjs__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var prismjs_themes_prism_tomorrow_css__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! prismjs/themes/prism-tomorrow.css */ \"./node_modules/prismjs/themes/prism-tomorrow.css\");\n/* harmony import */ var prismjs_themes_prism_tomorrow_css__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(prismjs_themes_prism_tomorrow_css__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var vue2_hammer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! vue2-hammer */ \"./node_modules/vue2-hammer/index.min.js\");\n/* harmony import */ var vue2_hammer__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(vue2_hammer__WEBPACK_IMPORTED_MODULE_22__);\n\n\n\n\n\n\n\n //Material Icons\n\n\n // Vuesax\n// Theme Configurations\n\n // Auth0 Plugin\n// Globally Registered Components\n\n // Styles: SCSS\n\n // Tailwind\n\n // Vue Router\n\n // Vuex Store\n\n // Vuesax Admin Filters\n\n // Clipboard\n\n // Tour\n\n // VeeValidate\n\n // Google Maps\n\n\n // Vuejs - Vue wrapper for hammerjs\n\n\nvue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].use(vuesax__WEBPACK_IMPORTED_MODULE_6___default.a);\nvue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].use(vue_clipboard2__WEBPACK_IMPORTED_MODULE_17___default.a);\nvue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].use(vue_tour__WEBPACK_IMPORTED_MODULE_18___default.a);\n\n__webpack_require__(/*! vue-tour/dist/vue-tour.css */ \"./node_modules/vue-tour/dist/vue-tour.css\");\n\nvue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].use(vee_validate__WEBPACK_IMPORTED_MODULE_19__[\"default\"]);\nvue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].use(vue2_hammer__WEBPACK_IMPORTED_MODULE_22__[\"VueHammer\"]); // Feather font icon\n\n__webpack_require__(/*! ./assets/css/iconfont.css */ \"./src/assets/css/iconfont.css\"); // Vue select css\n// Note: In latest version you have to add it separately\n// import 'vue-select/dist/vue-select.css';\n\n\nvue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].config.productionTip = false;\nnew vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\n  router: _router__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n  store: _store__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n  render: function render(h) {\n    return h(_App_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n  }\n}).$mount('#app');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluLmpzPzU2ZDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgQXBwIGZyb20gJy4vQXBwLnZ1ZSdcbmltcG9ydCBWdWVzYXggZnJvbSAndnVlc2F4J1xuaW1wb3J0ICdtYXRlcmlhbC1pY29ucy9pY29uZm9udC9tYXRlcmlhbC1pY29ucy5jc3MnIC8vTWF0ZXJpYWwgSWNvbnNcbmltcG9ydCAndnVlLW11bHRpc2VsZWN0L2Rpc3QvdnVlLW11bHRpc2VsZWN0Lm1pbi5jc3MnO1xuaW1wb3J0ICd2dWVzYXgvZGlzdC92dWVzYXguY3NzJzsgLy8gVnVlc2F4XG4vLyBUaGVtZSBDb25maWd1cmF0aW9uc1xuaW1wb3J0ICcuLi90aGVtZUNvbmZpZy5qcydcbi8vIEF1dGgwIFBsdWdpblxuLy8gR2xvYmFsbHkgUmVnaXN0ZXJlZCBDb21wb25lbnRzXG5pbXBvcnQgJy4vZ2xvYmFsQ29tcG9uZW50cy5qcydcbi8vIFN0eWxlczogU0NTU1xuaW1wb3J0ICcuL2Fzc2V0cy9zY3NzL21haW4uc2Nzcydcbi8vIFRhaWx3aW5kXG5pbXBvcnQgJ0AvYXNzZXRzL2Nzcy9tYWluLmNzcyc7XG4vLyBWdWUgUm91dGVyXG5pbXBvcnQgcm91dGVyIGZyb20gJy4vcm91dGVyJ1xuLy8gVnVleCBTdG9yZVxuaW1wb3J0IHN0b3JlIGZyb20gJy4vc3RvcmUnXG4vLyBWdWVzYXggQWRtaW4gRmlsdGVyc1xuaW1wb3J0ICcuL21vZHVsZXMvY29tbW9uL2ZpbHRlcnMvZmlsdGVycydcbi8vIENsaXBib2FyZFxuaW1wb3J0IFZ1ZUNsaXBib2FyZCBmcm9tICd2dWUtY2xpcGJvYXJkMidcbi8vIFRvdXJcbmltcG9ydCBWdWVUb3VyIGZyb20gJ3Z1ZS10b3VyJ1xuLy8gVmVlVmFsaWRhdGVcbmltcG9ydCBWZWVWYWxpZGF0ZSBmcm9tICd2ZWUtdmFsaWRhdGUnO1xuLy8gR29vZ2xlIE1hcHNcbmltcG9ydCAncHJpc21qcydcbmltcG9ydCAncHJpc21qcy90aGVtZXMvcHJpc20tdG9tb3Jyb3cuY3NzJ1xuLy8gVnVlanMgLSBWdWUgd3JhcHBlciBmb3IgaGFtbWVyanNcbmltcG9ydCB7VnVlSGFtbWVyfSBmcm9tICd2dWUyLWhhbW1lcidcblxuVnVlLnVzZShWdWVzYXgpO1xuXG5WdWUudXNlKFZ1ZUNsaXBib2FyZCk7XG5cblZ1ZS51c2UoVnVlVG91cik7XG5yZXF1aXJlKCd2dWUtdG91ci9kaXN0L3Z1ZS10b3VyLmNzcycpO1xuXG5WdWUudXNlKFZlZVZhbGlkYXRlKTtcblZ1ZS51c2UoVnVlSGFtbWVyKTtcblxuLy8gRmVhdGhlciBmb250IGljb25cbnJlcXVpcmUoJy4vYXNzZXRzL2Nzcy9pY29uZm9udC5jc3MnKTtcblxuXG4vLyBWdWUgc2VsZWN0IGNzc1xuLy8gTm90ZTogSW4gbGF0ZXN0IHZlcnNpb24geW91IGhhdmUgdG8gYWRkIGl0IHNlcGFyYXRlbHlcbi8vIGltcG9ydCAndnVlLXNlbGVjdC9kaXN0L3Z1ZS1zZWxlY3QuY3NzJztcblxuXG5WdWUuY29uZmlnLnByb2R1Y3Rpb25UaXAgPSBmYWxzZTtcblxubmV3IFZ1ZSh7XG4gICAgcm91dGVyLFxuICAgIHN0b3JlLFxuICAgIHJlbmRlcjogaCA9PiBoKEFwcClcbn0pLiRtb3VudCgnI2FwcCcpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main.js\n");

/***/ }),

/***/ "./src/modules/categories/Edit.vue":
/*!*****************************************!*\
  !*** ./src/modules/categories/Edit.vue ***!
  \*****************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Edit_vue_vue_type_template_id_1d909928___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=1d909928& */ \"./src/modules/categories/Edit.vue?vue&type=template&id=1d909928&\");\n/* harmony import */ var _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Edit.vue?vue&type=script&lang=js& */ \"./src/modules/categories/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Edit_vue_vue_type_template_id_1d909928___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Edit_vue_vue_type_template_id_1d909928___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('1d909928')) {\n      api.createRecord('1d909928', component.options)\n    } else {\n      api.reload('1d909928', component.options)\n    }\n    module.hot.accept(/*! ./Edit.vue?vue&type=template&id=1d909928& */ \"./src/modules/categories/Edit.vue?vue&type=template&id=1d909928&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Edit_vue_vue_type_template_id_1d909928___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=1d909928& */ \"./src/modules/categories/Edit.vue?vue&type=template&id=1d909928&\");\n(function () {\n      api.rerender('1d909928', {\n        render: _Edit_vue_vue_type_template_id_1d909928___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Edit_vue_vue_type_template_id_1d909928___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/categories/Edit.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL0VkaXQudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9FZGl0LnZ1ZT83MThlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vRWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWQ5MDk5MjgmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcxZDkwOTkyOCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcxZDkwOTkyOCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcxZDkwOTkyOCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWQ5MDk5MjgmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMWQ5MDk5MjgnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NhdGVnb3JpZXMvRWRpdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/Edit.vue\n");

/***/ }),

/***/ "./src/modules/categories/Edit.vue?vue&type=script&lang=js&":
/*!******************************************************************!*\
  !*** ./src/modules/categories/Edit.vue?vue&type=script&lang=js& ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL0VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NhdGVnb3JpZXMvRWRpdC52dWU/NGM2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/categories/Edit.vue?vue&type=template&id=1d909928&":
/*!************************************************************************!*\
  !*** ./src/modules/categories/Edit.vue?vue&type=template&id=1d909928& ***!
  \************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_1d909928___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=template&id=1d909928& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/Edit.vue?vue&type=template&id=1d909928&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_1d909928___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_1d909928___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL0VkaXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFkOTA5OTI4Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NhdGVnb3JpZXMvRWRpdC52dWU/Y2JkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWQ5MDk5MjgmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/Edit.vue?vue&type=template&id=1d909928&\n");

/***/ }),

/***/ "./src/modules/categories/List.vue":
/*!*****************************************!*\
  !*** ./src/modules/categories/List.vue ***!
  \*****************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _List_vue_vue_type_template_id_3c20e800___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./List.vue?vue&type=template&id=3c20e800& */ \"./src/modules/categories/List.vue?vue&type=template&id=3c20e800&\");\n/* harmony import */ var _List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./List.vue?vue&type=script&lang=js& */ \"./src/modules/categories/List.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _List_vue_vue_type_template_id_3c20e800___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _List_vue_vue_type_template_id_3c20e800___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('3c20e800')) {\n      api.createRecord('3c20e800', component.options)\n    } else {\n      api.reload('3c20e800', component.options)\n    }\n    module.hot.accept(/*! ./List.vue?vue&type=template&id=3c20e800& */ \"./src/modules/categories/List.vue?vue&type=template&id=3c20e800&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _List_vue_vue_type_template_id_3c20e800___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./List.vue?vue&type=template&id=3c20e800& */ \"./src/modules/categories/List.vue?vue&type=template&id=3c20e800&\");\n(function () {\n      api.rerender('3c20e800', {\n        render: _List_vue_vue_type_template_id_3c20e800___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _List_vue_vue_type_template_id_3c20e800___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/categories/List.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL0xpc3QudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9MaXN0LnZ1ZT9iMjZmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMGU4MDAmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCczYzIwZTgwMCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCczYzIwZTgwMCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCczYzIwZTgwMCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMGU4MDAmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignM2MyMGU4MDAnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NhdGVnb3JpZXMvTGlzdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/List.vue\n");

/***/ }),

/***/ "./src/modules/categories/List.vue?vue&type=script&lang=js&":
/*!******************************************************************!*\
  !*** ./src/modules/categories/List.vue?vue&type=script&lang=js& ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./List.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/List.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NhdGVnb3JpZXMvTGlzdC52dWU/NGRhNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/List.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/categories/List.vue?vue&type=template&id=3c20e800&":
/*!************************************************************************!*\
  !*** ./src/modules/categories/List.vue?vue&type=template&id=3c20e800& ***!
  \************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_3c20e800___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./List.vue?vue&type=template&id=3c20e800& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/List.vue?vue&type=template&id=3c20e800&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_3c20e800___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_3c20e800___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjMjBlODAwJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NhdGVnb3JpZXMvTGlzdC52dWU/MzUzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMGU4MDAmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/List.vue?vue&type=template&id=3c20e800&\n");

/***/ }),

/***/ "./src/modules/categories/New.vue":
/*!****************************************!*\
  !*** ./src/modules/categories/New.vue ***!
  \****************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _New_vue_vue_type_template_id_0f85c32e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=0f85c32e& */ \"./src/modules/categories/New.vue?vue&type=template&id=0f85c32e&\");\n/* harmony import */ var _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./New.vue?vue&type=script&lang=js& */ \"./src/modules/categories/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _New_vue_vue_type_template_id_0f85c32e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _New_vue_vue_type_template_id_0f85c32e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('0f85c32e')) {\n      api.createRecord('0f85c32e', component.options)\n    } else {\n      api.reload('0f85c32e', component.options)\n    }\n    module.hot.accept(/*! ./New.vue?vue&type=template&id=0f85c32e& */ \"./src/modules/categories/New.vue?vue&type=template&id=0f85c32e&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _New_vue_vue_type_template_id_0f85c32e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=0f85c32e& */ \"./src/modules/categories/New.vue?vue&type=template&id=0f85c32e&\");\n(function () {\n      api.rerender('0f85c32e', {\n        render: _New_vue_vue_type_template_id_0f85c32e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _New_vue_vue_type_template_id_0f85c32e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/categories/New.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL05ldy52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL05ldy52dWU/ZWZiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGY4NWMzMmUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnMGY4NWMzMmUnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnMGY4NWMzMmUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnMGY4NWMzMmUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGY4NWMzMmUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMGY4NWMzMmUnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NhdGVnb3JpZXMvTmV3LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/categories/New.vue\n");

/***/ }),

/***/ "./src/modules/categories/New.vue?vue&type=script&lang=js&":
/*!*****************************************************************!*\
  !*** ./src/modules/categories/New.vue?vue&type=script&lang=js& ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL05ldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9OZXcudnVlP2FkNWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL05ldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/categories/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/categories/New.vue?vue&type=template&id=0f85c32e&":
/*!***********************************************************************!*\
  !*** ./src/modules/categories/New.vue?vue&type=template&id=0f85c32e& ***!
  \***********************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_0f85c32e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=template&id=0f85c32e& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/New.vue?vue&type=template&id=0f85c32e&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_0f85c32e___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_0f85c32e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGY4NWMzMmUmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9OZXcudnVlP2VlZGUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGY4NWMzMmUmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/New.vue?vue&type=template&id=0f85c32e&\n");

/***/ }),

/***/ "./src/modules/categories/components/Form.vue":
/*!****************************************************!*\
  !*** ./src/modules/categories/components/Form.vue ***!
  \****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Form_vue_vue_type_template_id_60a2c66b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Form.vue?vue&type=template&id=60a2c66b& */ \"./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b&\");\n/* harmony import */ var _Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Form.vue?vue&type=script&lang=js& */ \"./src/modules/categories/components/Form.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Form_vue_vue_type_template_id_60a2c66b___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Form_vue_vue_type_template_id_60a2c66b___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('60a2c66b')) {\n      api.createRecord('60a2c66b', component.options)\n    } else {\n      api.reload('60a2c66b', component.options)\n    }\n    module.hot.accept(/*! ./Form.vue?vue&type=template&id=60a2c66b& */ \"./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Form_vue_vue_type_template_id_60a2c66b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Form.vue?vue&type=template&id=60a2c66b& */ \"./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b&\");\n(function () {\n      api.rerender('60a2c66b', {\n        render: _Form_vue_vue_type_template_id_60a2c66b___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Form_vue_vue_type_template_id_60a2c66b___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/categories/components/Form.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL2NvbXBvbmVudHMvRm9ybS52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL2NvbXBvbmVudHMvRm9ybS52dWU/MzlkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYwYTJjNjZiJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNjBhMmM2NmInKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNjBhMmM2NmInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNjBhMmM2NmInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYwYTJjNjZiJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzYwYTJjNjZiJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jYXRlZ29yaWVzL2NvbXBvbmVudHMvRm9ybS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/components/Form.vue\n");

/***/ }),

/***/ "./src/modules/categories/components/Form.vue?vue&type=script&lang=js&":
/*!*****************************************************************************!*\
  !*** ./src/modules/categories/components/Form.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Form.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/components/Form.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL2NvbXBvbmVudHMvRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9jb21wb25lbnRzL0Zvcm0udnVlPzU5NzAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/categories/components/Form.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b&":
/*!***********************************************************************************!*\
  !*** ./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b& ***!
  \***********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_template_id_60a2c66b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Form.vue?vue&type=template&id=60a2c66b& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_template_id_60a2c66b___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_template_id_60a2c66b___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL2NvbXBvbmVudHMvRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjBhMmM2NmImLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9jb21wb25lbnRzL0Zvcm0udnVlPzQyMjkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYwYTJjNjZiJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/categories/components/Form.vue?vue&type=template&id=60a2c66b&\n");

/***/ }),

/***/ "./src/modules/categories/services/Category.js":
/*!*****************************************************!*\
  !*** ./src/modules/categories/services/Category.js ***!
  \*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\nvar Category = {\n  get: function get(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/categories?\".concat(qs)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getCategory: function getCategory(id) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/categories/\".concat(id)).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  create: function create(client) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post('v1/categories', client).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  update: function update(client) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].put(\"v1/categories/\".concat(client.id), client).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  delete: function _delete(client) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].delete(\"v1/categories/\".concat(client.id), client).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  enable: function enable(client) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"v1/categories/\".concat(client.id, \"/actions/enable\")).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  disable: function disable(client) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"v1/categories/\".concat(client.id, \"/actions/disable\")).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Category);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL3NlcnZpY2VzL0NhdGVnb3J5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9zZXJ2aWNlcy9DYXRlZ29yeS5qcz83OTYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBcGlGYWN0b3J5IGZyb20gJy4uLy4uL2NvbW1vbi9mYWN0b3JpZXMvQXBpRmFjdG9yeSc7XG5pbXBvcnQge3ByZXBhcmVGaWx0ZXJzfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbmNvbnN0IENhdGVnb3J5ID0ge1xuICAgIGdldDogKGZpbHRlcnMpID0+IHtcbiAgICAgICAgY29uc3QgcXMgPSBwcmVwYXJlRmlsdGVycyhmaWx0ZXJzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9jYXRlZ29yaWVzPyR7cXN9YCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldENhdGVnb3J5OiAoaWQpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9jYXRlZ29yaWVzLyR7aWR9YCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgY3JlYXRlOiAoY2xpZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoJ3YxL2NhdGVnb3JpZXMnLCBjbGllbnQpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHVwZGF0ZTogKGNsaWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wdXQoYHYxL2NhdGVnb3JpZXMvJHtjbGllbnQuaWR9YCwgY2xpZW50KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBkZWxldGU6IChjbGllbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZGVsZXRlKGB2MS9jYXRlZ29yaWVzLyR7Y2xpZW50LmlkfWAsIGNsaWVudCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZW5hYmxlOiAoY2xpZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoYHYxL2NhdGVnb3JpZXMvJHtjbGllbnQuaWR9L2FjdGlvbnMvZW5hYmxlYCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGlzYWJsZTogKGNsaWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGB2MS9jYXRlZ29yaWVzLyR7Y2xpZW50LmlkfS9hY3Rpb25zL2Rpc2FibGVgKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENhdGVnb3J5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhFQTtBQW1FQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/categories/services/Category.js\n");

/***/ }),

/***/ "./src/modules/categories/store/actions.js":
/*!*************************************************!*\
  !*** ./src/modules/categories/store/actions.js ***!
  \*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty.js\");\n/* harmony import */ var _services_Category__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/Category */ \"./src/modules/categories/services/Category.js\");\n\n\n/* eslint-disable no-empty-pattern */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  getCategories: function getCategories(_ref, filters) {\n    var commit = _ref.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Category__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(filters).then(function (success) {\n        commit('CATEGORIES', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getReason: function getReason(_ref2, id) {\n    var commit = _ref2.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Category__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getReason(id).then(function (success) {\n        commit('SELECTED_CATEGORY', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  createCategory: function createCategory(_ref3, category) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref3);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Category__WEBPACK_IMPORTED_MODULE_1__[\"default\"].create(category).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  updateCategory: function updateCategory(_ref4, category) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref4);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Category__WEBPACK_IMPORTED_MODULE_1__[\"default\"].update(category).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  deleteCategory: function deleteCategory(_ref5, category) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref5);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Category__WEBPACK_IMPORTED_MODULE_1__[\"default\"].delete(category).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  enable: function enable(_ref6, category) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref6);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Category__WEBPACK_IMPORTED_MODULE_1__[\"default\"].enable(category).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  disable: function disable(_ref7, category) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref7);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Category__WEBPACK_IMPORTED_MODULE_1__[\"default\"].disable(category).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  resetState: function resetState(_ref8) {\n    var commit = _ref8.commit;\n    commit('RESET_STATE');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL3N0b3JlL2FjdGlvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL3N0b3JlL2FjdGlvbnMuanM/YzI3OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eS1wYXR0ZXJuICovXG5pbXBvcnQgQ2F0ZWdvcnkgZnJvbSAnLi4vc2VydmljZXMvQ2F0ZWdvcnknO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZ2V0Q2F0ZWdvcmllcyAoe2NvbW1pdH0sIGZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IENhdGVnb3J5LmdldChmaWx0ZXJzKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ0NBVEVHT1JJRVMnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgZ2V0UmVhc29uICh7Y29tbWl0fSwgaWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IENhdGVnb3J5LmdldFJlYXNvbihpZCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdTRUxFQ1RFRF9DQVRFR09SWScsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBjcmVhdGVDYXRlZ29yeSAoe30sIGNhdGVnb3J5KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBDYXRlZ29yeS5jcmVhdGUoY2F0ZWdvcnkpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgdXBkYXRlQ2F0ZWdvcnkgKHt9LCBjYXRlZ29yeSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gQ2F0ZWdvcnkudXBkYXRlKGNhdGVnb3J5KS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGRlbGV0ZUNhdGVnb3J5ICh7fSwgY2F0ZWdvcnkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IENhdGVnb3J5LmRlbGV0ZShjYXRlZ29yeSkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBlbmFibGUgKHt9LCBjYXRlZ29yeSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gQ2F0ZWdvcnkuZW5hYmxlKGNhdGVnb3J5KS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGRpc2FibGUgKHt9LCBjYXRlZ29yeSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gQ2F0ZWdvcnkuZGlzYWJsZShjYXRlZ29yeSkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICByZXNldFN0YXRlICh7Y29tbWl0fSkge1xuICAgICAgICBjb21taXQoJ1JFU0VUX1NUQVRFJyk7XG4gICAgfVxufTtcblxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQXhDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/categories/store/actions.js\n");

/***/ }),

/***/ "./src/modules/categories/store/defaults.js":
/*!**************************************************!*\
  !*** ./src/modules/categories/store/defaults.js ***!
  \**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n  return {\n    categories: {\n      data: [],\n      meta: {\n        pagination: {\n          current_page: 1,\n          per_page: 10\n        }\n      }\n    },\n    selectedCategory: {}\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL3N0b3JlL2RlZmF1bHRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9zdG9yZS9kZWZhdWx0cy5qcz83Y2VjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0ICgpID0+ICh7XG4gICAgY2F0ZWdvcmllczoge1xuICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgICAgICAgICBwZXJfcGFnZTogMTAsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHNlbGVjdGVkQ2F0ZWdvcnk6IHt9LFxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBREE7QUFGQTtBQVNBO0FBVkE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/categories/store/defaults.js\n");

/***/ }),

/***/ "./src/modules/categories/store/getters.js":
/*!*************************************************!*\
  !*** ./src/modules/categories/store/getters.js ***!
  \*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar categories = function categories(state) {\n  return state.categories;\n};\n\nvar selectedCategory = function selectedCategory(state) {\n  return state.selectedCategory;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  categories: categories,\n  selectedCategory: selectedCategory\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL3N0b3JlL2dldHRlcnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL3N0b3JlL2dldHRlcnMuanM/MGRmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjYXRlZ29yaWVzID0gc3RhdGUgPT4gc3RhdGUuY2F0ZWdvcmllcztcbmNvbnN0IHNlbGVjdGVkQ2F0ZWdvcnkgPSBzdGF0ZSA9PiBzdGF0ZS5zZWxlY3RlZENhdGVnb3J5O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY2F0ZWdvcmllcyxcbiAgICBzZWxlY3RlZENhdGVnb3J5LFxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/store/getters.js\n");

/***/ }),

/***/ "./src/modules/categories/store/index.js":
/*!***********************************************!*\
  !*** ./src/modules/categories/store/index.js ***!
  \***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/modules/categories/store/actions.js\");\n/* harmony import */ var _getters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getters */ \"./src/modules/categories/store/getters.js\");\n/* harmony import */ var _mutations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutations */ \"./src/modules/categories/store/mutations.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaults */ \"./src/modules/categories/store/defaults.js\");\n\n\n\n\nvar state = Object(_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  namespaced: true,\n  state: state,\n  actions: _actions__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  getters: _getters__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  mutations: _mutations__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL3N0b3JlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2F0ZWdvcmllcy9zdG9yZS9pbmRleC5qcz80MzlhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhY3Rpb25zIGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgZ2V0dGVycyBmcm9tICcuL2dldHRlcnMnO1xuaW1wb3J0IG11dGF0aW9ucyBmcm9tICcuL211dGF0aW9ucyc7XG5pbXBvcnQgZGVmYXVsdFN0YXRlIGZyb20gJy4vZGVmYXVsdHMnO1xuXG5jb25zdCBzdGF0ZSA9IGRlZmF1bHRTdGF0ZSgpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZXNwYWNlZDogdHJ1ZSxcbiAgICBzdGF0ZSxcbiAgICBhY3Rpb25zLFxuICAgIGdldHRlcnMsXG4gICAgbXV0YXRpb25zXG59O1xuXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/categories/store/index.js\n");

/***/ }),

/***/ "./src/modules/categories/store/mutations.js":
/*!***************************************************!*\
  !*** ./src/modules/categories/store/mutations.js ***!
  \***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaults */ \"./src/modules/categories/store/defaults.js\");\n\n\nvar RESET_STATE = function RESET_STATE(state) {\n  Object.assign(state, Object(_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"])());\n};\n\nvar CATEGORIES = function CATEGORIES(state, value) {\n  state.categories = value;\n  return state.categories;\n};\n\nvar SELECTED_CATEGORY = function SELECTED_CATEGORY(state, value) {\n  state.selectedCategory = value;\n  return state.selectedCategory;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  RESET_STATE: RESET_STATE,\n  CATEGORIES: CATEGORIES,\n  SELECTED_CATEGORY: SELECTED_CATEGORY\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jYXRlZ29yaWVzL3N0b3JlL211dGF0aW9ucy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NhdGVnb3JpZXMvc3RvcmUvbXV0YXRpb25zLmpzPzdiZmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTdGF0ZSBmcm9tICcuL2RlZmF1bHRzJztcblxuY29uc3QgUkVTRVRfU1RBVEUgPSAoc3RhdGUpID0+IHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLCBkZWZhdWx0U3RhdGUoKSk7XG59O1xuXG5jb25zdCBDQVRFR09SSUVTID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLmNhdGVnb3JpZXMgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RhdGUuY2F0ZWdvcmllcztcbn07XG5cbmNvbnN0IFNFTEVDVEVEX0NBVEVHT1JZID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLnNlbGVjdGVkQ2F0ZWdvcnkgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRDYXRlZ29yeTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBSRVNFVF9TVEFURSxcbiAgICBDQVRFR09SSUVTLFxuICAgIFNFTEVDVEVEX0NBVEVHT1JZLFxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/categories/store/mutations.js\n");

/***/ }),

/***/ "./src/modules/chat/Chat.vue":
/*!***********************************!*\
  !*** ./src/modules/chat/Chat.vue ***!
  \***********************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Chat_vue_vue_type_template_id_3003b53e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Chat.vue?vue&type=template&id=3003b53e& */ \"./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e&\");\n/* harmony import */ var _Chat_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Chat.vue?vue&type=script&lang=js& */ \"./src/modules/chat/Chat.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _Chat_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Chat.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _Chat_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Chat_vue_vue_type_template_id_3003b53e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Chat_vue_vue_type_template_id_3003b53e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('3003b53e')) {\n      api.createRecord('3003b53e', component.options)\n    } else {\n      api.reload('3003b53e', component.options)\n    }\n    module.hot.accept(/*! ./Chat.vue?vue&type=template&id=3003b53e& */ \"./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Chat_vue_vue_type_template_id_3003b53e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Chat.vue?vue&type=template&id=3003b53e& */ \"./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e&\");\n(function () {\n      api.rerender('3003b53e', {\n        render: _Chat_vue_vue_type_template_id_3003b53e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Chat_vue_vue_type_template_id_3003b53e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/chat/Chat.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L0NoYXQudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9DaGF0LnZ1ZT83OWZiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQ2hhdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzAwM2I1M2UmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ2hhdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NoYXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0NoYXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCczMDAzYjUzZScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCczMDAzYjUzZScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCczMDAzYjUzZScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ2hhdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzAwM2I1M2UmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMzAwM2I1M2UnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NoYXQvQ2hhdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/Chat.vue\n");

/***/ }),

/***/ "./src/modules/chat/Chat.vue?vue&type=script&lang=js&":
/*!************************************************************!*\
  !*** ./src/modules/chat/Chat.vue?vue&type=script&lang=js& ***!
  \************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Chat.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L0NoYXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvQ2hhdC52dWU/Y2IwNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/chat/Chat.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&":
/*!*********************************************************************!*\
  !*** ./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss& ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Chat.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L0NoYXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvQ2hhdC52dWU/ZTA1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/Chat.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e&":
/*!******************************************************************!*\
  !*** ./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e& ***!
  \******************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_template_id_3003b53e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Chat.vue?vue&type=template&id=3003b53e& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_template_id_3003b53e___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Chat_vue_vue_type_template_id_3003b53e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L0NoYXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMwMDNiNTNlJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvQ2hhdC52dWU/Mjk1MCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2hhdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzAwM2I1M2UmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/chat/Chat.vue?vue&type=template&id=3003b53e&\n");

/***/ }),

/***/ "./src/modules/chat/components/ChatContact.vue":
/*!*****************************************************!*\
  !*** ./src/modules/chat/components/ChatContact.vue ***!
  \*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ChatContact_vue_vue_type_template_id_3fc3b256___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatContact.vue?vue&type=template&id=3fc3b256& */ \"./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256&\");\n/* harmony import */ var _ChatContact_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatContact.vue?vue&type=script&lang=js& */ \"./src/modules/chat/components/ChatContact.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _ChatContact_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _ChatContact_vue_vue_type_template_id_3fc3b256___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _ChatContact_vue_vue_type_template_id_3fc3b256___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('3fc3b256')) {\n      api.createRecord('3fc3b256', component.options)\n    } else {\n      api.reload('3fc3b256', component.options)\n    }\n    module.hot.accept(/*! ./ChatContact.vue?vue&type=template&id=3fc3b256& */ \"./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _ChatContact_vue_vue_type_template_id_3fc3b256___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatContact.vue?vue&type=template&id=3fc3b256& */ \"./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256&\");\n(function () {\n      api.rerender('3fc3b256', {\n        render: _ChatContact_vue_vue_type_template_id_3fc3b256___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _ChatContact_vue_vue_type_template_id_3fc3b256___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/chat/components/ChatContact.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdENvbnRhY3QudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL0NoYXRDb250YWN0LnZ1ZT9mZmUxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQ2hhdENvbnRhY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmYzNiMjU2JlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NoYXRDb250YWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQ2hhdENvbnRhY3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCczZmMzYjI1NicpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCczZmMzYjI1NicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCczZmMzYjI1NicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ2hhdENvbnRhY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmYzNiMjU2JlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzNmYzNiMjU2Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdENvbnRhY3QudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/components/ChatContact.vue\n");

/***/ }),

/***/ "./src/modules/chat/components/ChatContact.vue?vue&type=script&lang=js&":
/*!******************************************************************************!*\
  !*** ./src/modules/chat/components/ChatContact.vue?vue&type=script&lang=js& ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatContact_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ChatContact.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatContact.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatContact_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdENvbnRhY3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvY29tcG9uZW50cy9DaGF0Q29udGFjdC52dWU/OGNhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYXRDb250YWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DaGF0Q29udGFjdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/chat/components/ChatContact.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256&":
/*!************************************************************************************!*\
  !*** ./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256& ***!
  \************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatContact_vue_vue_type_template_id_3fc3b256___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ChatContact.vue?vue&type=template&id=3fc3b256& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatContact_vue_vue_type_template_id_3fc3b256___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatContact_vue_vue_type_template_id_3fc3b256___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdENvbnRhY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmYzNiMjU2Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvY29tcG9uZW50cy9DaGF0Q29udGFjdC52dWU/Yjk2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2hhdENvbnRhY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmYzNiMjU2JlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/components/ChatContact.vue?vue&type=template&id=3fc3b256&\n");

/***/ }),

/***/ "./src/modules/chat/components/ChatLog.vue":
/*!*************************************************!*\
  !*** ./src/modules/chat/components/ChatLog.vue ***!
  \*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ChatLog_vue_vue_type_template_id_69530a79___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatLog.vue?vue&type=template&id=69530a79& */ \"./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79&\");\n/* harmony import */ var _ChatLog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatLog.vue?vue&type=script&lang=js& */ \"./src/modules/chat/components/ChatLog.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _ChatLog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _ChatLog_vue_vue_type_template_id_69530a79___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _ChatLog_vue_vue_type_template_id_69530a79___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('69530a79')) {\n      api.createRecord('69530a79', component.options)\n    } else {\n      api.reload('69530a79', component.options)\n    }\n    module.hot.accept(/*! ./ChatLog.vue?vue&type=template&id=69530a79& */ \"./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _ChatLog_vue_vue_type_template_id_69530a79___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatLog.vue?vue&type=template&id=69530a79& */ \"./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79&\");\n(function () {\n      api.rerender('69530a79', {\n        render: _ChatLog_vue_vue_type_template_id_69530a79___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _ChatLog_vue_vue_type_template_id_69530a79___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/chat/components/ChatLog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdExvZy52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdExvZy52dWU/NTQ1MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0NoYXRMb2cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5NTMwYTc5JlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NoYXRMb2cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9DaGF0TG9nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNjk1MzBhNzknKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNjk1MzBhNzknLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNjk1MzBhNzknLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0NoYXRMb2cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5NTMwYTc5JlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzY5NTMwYTc5Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdExvZy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/chat/components/ChatLog.vue\n");

/***/ }),

/***/ "./src/modules/chat/components/ChatLog.vue?vue&type=script&lang=js&":
/*!**************************************************************************!*\
  !*** ./src/modules/chat/components/ChatLog.vue?vue&type=script&lang=js& ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatLog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ChatLog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatLog.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatLog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdExvZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL0NoYXRMb2cudnVlP2FlYzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DaGF0TG9nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DaGF0TG9nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/components/ChatLog.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79&":
/*!********************************************************************************!*\
  !*** ./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79& ***!
  \********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatLog_vue_vue_type_template_id_69530a79___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ChatLog.vue?vue&type=template&id=69530a79& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatLog_vue_vue_type_template_id_69530a79___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatLog_vue_vue_type_template_id_69530a79___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdExvZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Njk1MzBhNzkmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL0NoYXRMb2cudnVlPzY4OWIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYXRMb2cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5NTMwYTc5JlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/components/ChatLog.vue?vue&type=template&id=69530a79&\n");

/***/ }),

/***/ "./src/modules/chat/components/ChatNavbar.vue":
/*!****************************************************!*\
  !*** ./src/modules/chat/components/ChatNavbar.vue ***!
  \****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ChatNavbar_vue_vue_type_template_id_3442eeeb___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatNavbar.vue?vue&type=template&id=3442eeeb& */ \"./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb&\");\n/* harmony import */ var _ChatNavbar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatNavbar.vue?vue&type=script&lang=js& */ \"./src/modules/chat/components/ChatNavbar.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _ChatNavbar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _ChatNavbar_vue_vue_type_template_id_3442eeeb___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _ChatNavbar_vue_vue_type_template_id_3442eeeb___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('3442eeeb')) {\n      api.createRecord('3442eeeb', component.options)\n    } else {\n      api.reload('3442eeeb', component.options)\n    }\n    module.hot.accept(/*! ./ChatNavbar.vue?vue&type=template&id=3442eeeb& */ \"./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _ChatNavbar_vue_vue_type_template_id_3442eeeb___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatNavbar.vue?vue&type=template&id=3442eeeb& */ \"./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb&\");\n(function () {\n      api.rerender('3442eeeb', {\n        render: _ChatNavbar_vue_vue_type_template_id_3442eeeb___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _ChatNavbar_vue_vue_type_template_id_3442eeeb___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/chat/components/ChatNavbar.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdE5hdmJhci52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdE5hdmJhci52dWU/ODAyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0NoYXROYXZiYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0NDJlZWViJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NoYXROYXZiYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9DaGF0TmF2YmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnMzQ0MmVlZWInKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnMzQ0MmVlZWInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnMzQ0MmVlZWInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0NoYXROYXZiYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0NDJlZWViJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzM0NDJlZWViJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdE5hdmJhci52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/chat/components/ChatNavbar.vue\n");

/***/ }),

/***/ "./src/modules/chat/components/ChatNavbar.vue?vue&type=script&lang=js&":
/*!*****************************************************************************!*\
  !*** ./src/modules/chat/components/ChatNavbar.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatNavbar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ChatNavbar.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatNavbar.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatNavbar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdE5hdmJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL0NoYXROYXZiYXIudnVlPzlhODgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DaGF0TmF2YmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DaGF0TmF2YmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/components/ChatNavbar.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb&":
/*!***********************************************************************************!*\
  !*** ./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb& ***!
  \***********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatNavbar_vue_vue_type_template_id_3442eeeb___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ChatNavbar.vue?vue&type=template&id=3442eeeb& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatNavbar_vue_vue_type_template_id_3442eeeb___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatNavbar_vue_vue_type_template_id_3442eeeb___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvQ2hhdE5hdmJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzQ0MmVlZWImLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL0NoYXROYXZiYXIudnVlPzc1ZTMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYXROYXZiYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0NDJlZWViJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/components/ChatNavbar.vue?vue&type=template&id=3442eeeb&\n");

/***/ }),

/***/ "./src/modules/chat/components/UserProfile.vue":
/*!*****************************************************!*\
  !*** ./src/modules/chat/components/UserProfile.vue ***!
  \*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _UserProfile_vue_vue_type_template_id_ce38dcea___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UserProfile.vue?vue&type=template&id=ce38dcea& */ \"./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea&\");\n/* harmony import */ var _UserProfile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserProfile.vue?vue&type=script&lang=js& */ \"./src/modules/chat/components/UserProfile.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _UserProfile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _UserProfile_vue_vue_type_template_id_ce38dcea___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _UserProfile_vue_vue_type_template_id_ce38dcea___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('ce38dcea')) {\n      api.createRecord('ce38dcea', component.options)\n    } else {\n      api.reload('ce38dcea', component.options)\n    }\n    module.hot.accept(/*! ./UserProfile.vue?vue&type=template&id=ce38dcea& */ \"./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _UserProfile_vue_vue_type_template_id_ce38dcea___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UserProfile.vue?vue&type=template&id=ce38dcea& */ \"./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea&\");\n(function () {\n      api.rerender('ce38dcea', {\n        render: _UserProfile_vue_vue_type_template_id_ce38dcea___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _UserProfile_vue_vue_type_template_id_ce38dcea___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/chat/components/UserProfile.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvVXNlclByb2ZpbGUudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9jb21wb25lbnRzL1VzZXJQcm9maWxlLnZ1ZT83MjA1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNlMzhkY2VhJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCdjZTM4ZGNlYScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCdjZTM4ZGNlYScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCdjZTM4ZGNlYScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNlMzhkY2VhJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJ2NlMzhkY2VhJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvVXNlclByb2ZpbGUudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/components/UserProfile.vue\n");

/***/ }),

/***/ "./src/modules/chat/components/UserProfile.vue?vue&type=script&lang=js&":
/*!******************************************************************************!*\
  !*** ./src/modules/chat/components/UserProfile.vue?vue&type=script&lang=js& ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserProfile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./UserProfile.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/UserProfile.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserProfile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvY29tcG9uZW50cy9Vc2VyUHJvZmlsZS52dWU/ZWE5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/chat/components/UserProfile.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea&":
/*!************************************************************************************!*\
  !*** ./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea& ***!
  \************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserProfile_vue_vue_type_template_id_ce38dcea___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./UserProfile.vue?vue&type=template&id=ce38dcea& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserProfile_vue_vue_type_template_id_ce38dcea___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserProfile_vue_vue_type_template_id_ce38dcea___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbXBvbmVudHMvVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNlMzhkY2VhJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvY29tcG9uZW50cy9Vc2VyUHJvZmlsZS52dWU/MzZlNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNlMzhkY2VhJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/components/UserProfile.vue?vue&type=template&id=ce38dcea&\n");

/***/ }),

/***/ "./src/modules/chat/contacts.js":
/*!**************************************!*\
  !*** ./src/modules/chat/contacts.js ***!
  \**************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/*=========================================================================================\n  File Name: contacts.js\n  Description: Contacts neeeded for chat application\n  Strucutre:\n      id\n      name\n      status\n      img\n      iconStatus - active, offline, do not disturb, Away\n  ----------------------------------------------------------------------------------------\n  Item Name: Vuesax Admin - VueJS Dashboard Admin Template\n  Author: Pixinvent\n  Author URL: http://www.themeforest.net/user/pixinvent\n==========================================================================================*/\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n  id: 1,\n  name: 'Felecia Rower',\n  about: 'Cake pie jelly jelly beans. Marzipan lemon drops halvah cake. Pudding cookie lemon drops icing',\n  img: 'avatar-s-1.png',\n  status: 'offline'\n}, {\n  id: 2,\n  name: 'Adalberto Granzin',\n  about: 'Toffee caramels jelly-o tart gummi bears cake I love ice cream lollipop. Sweet liquorice croissant candy danish dessert icing. Cake macaroon gingerbread toffee sweet.',\n  img: 'avatar-s-2.png',\n  status: 'do not disturb'\n}, {\n  id: 3,\n  name: 'Joaquina Weisenborn',\n  about: 'Soufflé soufflé caramels sweet roll. Jelly lollipop sesame snaps bear claw jelly beans sugar plum sugar plum.',\n  img: 'avatar-s-3.png',\n  status: 'do not disturb'\n}, {\n  id: 4,\n  name: 'Verla Morgano',\n  about: 'Chupa chups candy canes chocolate bar marshmallow liquorice muffin. Lemon drops oat cake tart liquorice tart cookie. Jelly-o cookie tootsie roll halvah.',\n  img: 'avatar-s-4.png',\n  status: 'online'\n}, {\n  id: 5,\n  name: 'Margot Henschke',\n  about: 'Cake pie jelly jelly beans. Marzipan lemon drops halvah cake. Pudding cookie lemon drops icing',\n  img: 'avatar-s-5.png',\n  status: 'do not disturb'\n}, {\n  id: 6,\n  name: 'Sal Piggee',\n  about: 'Toffee caramels jelly-o tart gummi bears cake I love ice cream lollipop. Sweet liquorice croissant candy danish dessert icing. Cake macaroon gingerbread toffee sweet.',\n  img: 'avatar-s-6.png',\n  status: 'online'\n}, {\n  id: 7,\n  name: 'Miguel Guelff',\n  about: 'Biscuit powder oat cake donut brownie ice cream I love soufflé. I love tootsie roll I love powder tootsie roll.',\n  img: 'avatar-s-7.png',\n  status: 'online'\n}, {\n  id: 8,\n  name: 'Mauro Elenbaas',\n  about: 'Bear claw ice cream lollipop gingerbread carrot cake. Brownie gummi bears chocolate muffin croissant jelly I love marzipan wafer.',\n  img: 'avatar-s-8.png',\n  status: 'away'\n}, {\n  id: 9,\n  name: 'Bridgett Omohundro',\n  about: 'Gummies gummi bears I love candy icing apple pie I love marzipan bear claw. I love tart biscuit I love candy canes pudding chupa chups liquorice croissant.',\n  img: 'avatar-s-9.png',\n  status: 'offline'\n}, {\n  id: 10,\n  name: 'Zenia Jacobs',\n  about: 'Cake pie jelly jelly beans. Marzipan lemon drops halvah cake. Pudding cookie lemon drops icing',\n  img: 'avatar-s-10.png',\n  status: 'away'\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L2NvbnRhY3RzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9jb250YWN0cy5qcz8zYzgxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgRmlsZSBOYW1lOiBjb250YWN0cy5qc1xuICBEZXNjcmlwdGlvbjogQ29udGFjdHMgbmVlZWRlZCBmb3IgY2hhdCBhcHBsaWNhdGlvblxuICBTdHJ1Y3V0cmU6XG4gICAgICBpZFxuICAgICAgbmFtZVxuICAgICAgc3RhdHVzXG4gICAgICBpbWdcbiAgICAgIGljb25TdGF0dXMgLSBhY3RpdmUsIG9mZmxpbmUsIGRvIG5vdCBkaXN0dXJiLCBBd2F5XG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgSXRlbSBOYW1lOiBWdWVzYXggQWRtaW4gLSBWdWVKUyBEYXNoYm9hcmQgQWRtaW4gVGVtcGxhdGVcbiAgQXV0aG9yOiBQaXhpbnZlbnRcbiAgQXV0aG9yIFVSTDogaHR0cDovL3d3dy50aGVtZWZvcmVzdC5uZXQvdXNlci9waXhpbnZlbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxuZXhwb3J0IGRlZmF1bHQgW1xuICAgIHtcbiAgICAgICAgaWQ6IDEsXG4gICAgICAgIG5hbWU6ICdGZWxlY2lhIFJvd2VyJyxcbiAgICAgICAgYWJvdXQ6ICdDYWtlIHBpZSBqZWxseSBqZWxseSBiZWFucy4gTWFyemlwYW4gbGVtb24gZHJvcHMgaGFsdmFoIGNha2UuIFB1ZGRpbmcgY29va2llIGxlbW9uIGRyb3BzIGljaW5nJyxcbiAgICAgICAgaW1nOiAnYXZhdGFyLXMtMS5wbmcnLFxuICAgICAgICBzdGF0dXM6ICdvZmZsaW5lJ1xuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogMixcbiAgICAgICAgbmFtZTogJ0FkYWxiZXJ0byBHcmFuemluJyxcbiAgICAgICAgYWJvdXQ6ICdUb2ZmZWUgY2FyYW1lbHMgamVsbHktbyB0YXJ0IGd1bW1pIGJlYXJzIGNha2UgSSBsb3ZlIGljZSBjcmVhbSBsb2xsaXBvcC4gU3dlZXQgbGlxdW9yaWNlIGNyb2lzc2FudCBjYW5keSBkYW5pc2ggZGVzc2VydCBpY2luZy4gQ2FrZSBtYWNhcm9vbiBnaW5nZXJicmVhZCB0b2ZmZWUgc3dlZXQuJyxcbiAgICAgICAgaW1nOiAnYXZhdGFyLXMtMi5wbmcnLFxuICAgICAgICBzdGF0dXM6ICdkbyBub3QgZGlzdHVyYidcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6IDMsXG4gICAgICAgIG5hbWU6ICdKb2FxdWluYSBXZWlzZW5ib3JuJyxcbiAgICAgICAgYWJvdXQ6ICdTb3VmZmzDqSBzb3VmZmzDqSBjYXJhbWVscyBzd2VldCByb2xsLiBKZWxseSBsb2xsaXBvcCBzZXNhbWUgc25hcHMgYmVhciBjbGF3IGplbGx5IGJlYW5zIHN1Z2FyIHBsdW0gc3VnYXIgcGx1bS4nLFxuICAgICAgICBpbWc6ICdhdmF0YXItcy0zLnBuZycsXG4gICAgICAgIHN0YXR1czogJ2RvIG5vdCBkaXN0dXJiJ1xuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogNCxcbiAgICAgICAgbmFtZTogJ1ZlcmxhIE1vcmdhbm8nLFxuICAgICAgICBhYm91dDogJ0NodXBhIGNodXBzIGNhbmR5IGNhbmVzIGNob2NvbGF0ZSBiYXIgbWFyc2htYWxsb3cgbGlxdW9yaWNlIG11ZmZpbi4gTGVtb24gZHJvcHMgb2F0IGNha2UgdGFydCBsaXF1b3JpY2UgdGFydCBjb29raWUuIEplbGx5LW8gY29va2llIHRvb3RzaWUgcm9sbCBoYWx2YWguJyxcbiAgICAgICAgaW1nOiAnYXZhdGFyLXMtNC5wbmcnLFxuICAgICAgICBzdGF0dXM6ICdvbmxpbmUnXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiA1LFxuICAgICAgICBuYW1lOiAnTWFyZ290IEhlbnNjaGtlJyxcbiAgICAgICAgYWJvdXQ6ICdDYWtlIHBpZSBqZWxseSBqZWxseSBiZWFucy4gTWFyemlwYW4gbGVtb24gZHJvcHMgaGFsdmFoIGNha2UuIFB1ZGRpbmcgY29va2llIGxlbW9uIGRyb3BzIGljaW5nJyxcbiAgICAgICAgaW1nOiAnYXZhdGFyLXMtNS5wbmcnLFxuICAgICAgICBzdGF0dXM6ICdkbyBub3QgZGlzdHVyYidcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6IDYsXG4gICAgICAgIG5hbWU6ICdTYWwgUGlnZ2VlJyxcbiAgICAgICAgYWJvdXQ6ICdUb2ZmZWUgY2FyYW1lbHMgamVsbHktbyB0YXJ0IGd1bW1pIGJlYXJzIGNha2UgSSBsb3ZlIGljZSBjcmVhbSBsb2xsaXBvcC4gU3dlZXQgbGlxdW9yaWNlIGNyb2lzc2FudCBjYW5keSBkYW5pc2ggZGVzc2VydCBpY2luZy4gQ2FrZSBtYWNhcm9vbiBnaW5nZXJicmVhZCB0b2ZmZWUgc3dlZXQuJyxcbiAgICAgICAgaW1nOiAnYXZhdGFyLXMtNi5wbmcnLFxuICAgICAgICBzdGF0dXM6ICdvbmxpbmUnXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiA3LFxuICAgICAgICBuYW1lOiAnTWlndWVsIEd1ZWxmZicsXG4gICAgICAgIGFib3V0OiAnQmlzY3VpdCBwb3dkZXIgb2F0IGNha2UgZG9udXQgYnJvd25pZSBpY2UgY3JlYW0gSSBsb3ZlIHNvdWZmbMOpLiBJIGxvdmUgdG9vdHNpZSByb2xsIEkgbG92ZSBwb3dkZXIgdG9vdHNpZSByb2xsLicsXG4gICAgICAgIGltZzogJ2F2YXRhci1zLTcucG5nJyxcbiAgICAgICAgc3RhdHVzOiAnb25saW5lJ1xuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogOCxcbiAgICAgICAgbmFtZTogJ01hdXJvIEVsZW5iYWFzJyxcbiAgICAgICAgYWJvdXQ6ICdCZWFyIGNsYXcgaWNlIGNyZWFtIGxvbGxpcG9wIGdpbmdlcmJyZWFkIGNhcnJvdCBjYWtlLiBCcm93bmllIGd1bW1pIGJlYXJzIGNob2NvbGF0ZSBtdWZmaW4gY3JvaXNzYW50IGplbGx5IEkgbG92ZSBtYXJ6aXBhbiB3YWZlci4nLFxuICAgICAgICBpbWc6ICdhdmF0YXItcy04LnBuZycsXG4gICAgICAgIHN0YXR1czogJ2F3YXknXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiA5LFxuICAgICAgICBuYW1lOiAnQnJpZGdldHQgT21vaHVuZHJvJyxcbiAgICAgICAgYWJvdXQ6ICdHdW1taWVzIGd1bW1pIGJlYXJzIEkgbG92ZSBjYW5keSBpY2luZyBhcHBsZSBwaWUgSSBsb3ZlIG1hcnppcGFuIGJlYXIgY2xhdy4gSSBsb3ZlIHRhcnQgYmlzY3VpdCBJIGxvdmUgY2FuZHkgY2FuZXMgcHVkZGluZyBjaHVwYSBjaHVwcyBsaXF1b3JpY2UgY3JvaXNzYW50LicsXG4gICAgICAgIGltZzogJ2F2YXRhci1zLTkucG5nJyxcbiAgICAgICAgc3RhdHVzOiAnb2ZmbGluZSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6IDEwLFxuICAgICAgICBuYW1lOiAnWmVuaWEgSmFjb2JzJyxcbiAgICAgICAgYWJvdXQ6ICdDYWtlIHBpZSBqZWxseSBqZWxseSBiZWFucy4gTWFyemlwYW4gbGVtb24gZHJvcHMgaGFsdmFoIGNha2UuIFB1ZGRpbmcgY29va2llIGxlbW9uIGRyb3BzIGljaW5nJyxcbiAgICAgICAgaW1nOiAnYXZhdGFyLXMtMTAucG5nJyxcbiAgICAgICAgc3RhdHVzOiAnYXdheSdcbiAgICB9LFxuXVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/chat/contacts.js\n");

/***/ }),

/***/ "./src/modules/chat/services/Chat.js":
/*!*******************************************!*\
  !*** ./src/modules/chat/services/Chat.js ***!
  \*******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\nvar Chat = {\n  get: function get(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/chats?\".concat(qs)).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getMessages: function getMessages(id) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/chats/\".concat(id)).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  sendMessage: function sendMessage(id, message) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"v1/chats/\".concat(id), {\n        message: message\n      }).then(function () {\n        resolve();\n      }, function (error) {\n        reject(error);\n      });\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Chat);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L3NlcnZpY2VzL0NoYXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jaGF0L3NlcnZpY2VzL0NoYXQuanM/NTFlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXBpRmFjdG9yeSBmcm9tICcuLi8uLi9jb21tb24vZmFjdG9yaWVzL0FwaUZhY3RvcnknO1xuaW1wb3J0IHtwcmVwYXJlRmlsdGVyc30gZnJvbSBcIi4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9VdGlsaXR5U2VydmljZVwiO1xuXG5jb25zdCBDaGF0ID0ge1xuICAgIGdldDogKGZpbHRlcnMpID0+IHtcbiAgICAgICAgY29uc3QgcXMgPSBwcmVwYXJlRmlsdGVycyhmaWx0ZXJzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9jaGF0cz8ke3FzfWApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldE1lc3NhZ2VzOiAoaWQpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9jaGF0cy8ke2lkfWApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHNlbmRNZXNzYWdlOiAoaWQsIG1lc3NhZ2UpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkucG9zdChgdjEvY2hhdHMvJHtpZH1gLCB7bWVzc2FnZX0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoYXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVCQTtBQStCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/chat/services/Chat.js\n");

/***/ }),

/***/ "./src/modules/chat/store/actions.js":
/*!*******************************************!*\
  !*** ./src/modules/chat/store/actions.js ***!
  \*******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _services_Chat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/Chat */ \"./src/modules/chat/services/Chat.js\");\n/* eslint-disable no-empty-pattern */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  getChats: function getChats(_ref, filters) {\n    var commit = _ref.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Chat__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(filters).then(function (success) {\n        commit('CHATS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  resetState: function resetState(_ref2) {\n    var commit = _ref2.commit;\n    commit('RESET_STATE');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L3N0b3JlL2FjdGlvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jaGF0L3N0b3JlL2FjdGlvbnMuanM/Y2U5YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eS1wYXR0ZXJuICovXG5pbXBvcnQgQ2hhdCBmcm9tICcuLi9zZXJ2aWNlcy9DaGF0JztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGdldENoYXRzICh7Y29tbWl0fSwgZmlsdGVycykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gQ2hhdC5nZXQoZmlsdGVycykudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdDSEFUUycsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICByZXNldFN0YXRlICh7Y29tbWl0fSkge1xuICAgICAgICBjb21taXQoJ1JFU0VUX1NUQVRFJyk7XG4gICAgfVxufTtcblxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBVEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/chat/store/actions.js\n");

/***/ }),

/***/ "./src/modules/chat/store/defaults.js":
/*!********************************************!*\
  !*** ./src/modules/chat/store/defaults.js ***!
  \********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n  return {\n    chats: []\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L3N0b3JlL2RlZmF1bHRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9zdG9yZS9kZWZhdWx0cy5qcz9kYmZkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0ICgpID0+ICh7XG4gICAgY2hhdHM6IFtdLFxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/chat/store/defaults.js\n");

/***/ }),

/***/ "./src/modules/chat/store/getters.js":
/*!*******************************************!*\
  !*** ./src/modules/chat/store/getters.js ***!
  \*******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar chats = function chats(state) {\n  return state.chats;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  chats: chats\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L3N0b3JlL2dldHRlcnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jaGF0L3N0b3JlL2dldHRlcnMuanM/NzVjZiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjaGF0cyA9IHN0YXRlID0+IHN0YXRlLmNoYXRzO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY2hhdHMsXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/chat/store/getters.js\n");

/***/ }),

/***/ "./src/modules/chat/store/index.js":
/*!*****************************************!*\
  !*** ./src/modules/chat/store/index.js ***!
  \*****************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/modules/chat/store/actions.js\");\n/* harmony import */ var _getters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getters */ \"./src/modules/chat/store/getters.js\");\n/* harmony import */ var _mutations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutations */ \"./src/modules/chat/store/mutations.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaults */ \"./src/modules/chat/store/defaults.js\");\n\n\n\n\nvar state = Object(_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  namespaced: true,\n  state: state,\n  actions: _actions__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  getters: _getters__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  mutations: _mutations__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L3N0b3JlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2hhdC9zdG9yZS9pbmRleC5qcz9hZjNjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhY3Rpb25zIGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgZ2V0dGVycyBmcm9tICcuL2dldHRlcnMnO1xuaW1wb3J0IG11dGF0aW9ucyBmcm9tICcuL211dGF0aW9ucyc7XG5pbXBvcnQgZGVmYXVsdFN0YXRlIGZyb20gJy4vZGVmYXVsdHMnO1xuXG5jb25zdCBzdGF0ZSA9IGRlZmF1bHRTdGF0ZSgpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZXNwYWNlZDogdHJ1ZSxcbiAgICBzdGF0ZSxcbiAgICBhY3Rpb25zLFxuICAgIGdldHRlcnMsXG4gICAgbXV0YXRpb25zXG59O1xuXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/chat/store/index.js\n");

/***/ }),

/***/ "./src/modules/chat/store/mutations.js":
/*!*********************************************!*\
  !*** ./src/modules/chat/store/mutations.js ***!
  \*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaults */ \"./src/modules/chat/store/defaults.js\");\n\n\nvar RESET_STATE = function RESET_STATE(state) {\n  Object.assign(state, Object(_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"])());\n};\n\nvar CHATS = function CHATS(state, value) {\n  state.chats = value;\n  return state.chats;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  RESET_STATE: RESET_STATE,\n  CHATS: CHATS\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jaGF0L3N0b3JlL211dGF0aW9ucy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NoYXQvc3RvcmUvbXV0YXRpb25zLmpzPzg5MmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTdGF0ZSBmcm9tICcuL2RlZmF1bHRzJztcblxuY29uc3QgUkVTRVRfU1RBVEUgPSAoc3RhdGUpID0+IHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLCBkZWZhdWx0U3RhdGUoKSk7XG59O1xuXG5jb25zdCBDSEFUUyA9IChzdGF0ZSwgdmFsdWUpID0+IHtcbiAgICBzdGF0ZS5jaGF0cyA9IHZhbHVlO1xuICAgIHJldHVybiBzdGF0ZS5jaGF0cztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBSRVNFVF9TVEFURSxcbiAgICBDSEFUUyxcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/chat/store/mutations.js\n");

/***/ }),

/***/ "./src/modules/clients/Edit.vue":
/*!**************************************!*\
  !*** ./src/modules/clients/Edit.vue ***!
  \**************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Edit_vue_vue_type_template_id_2b480b9c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=2b480b9c& */ \"./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c&\");\n/* harmony import */ var _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Edit.vue?vue&type=script&lang=js& */ \"./src/modules/clients/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Edit_vue_vue_type_template_id_2b480b9c___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Edit_vue_vue_type_template_id_2b480b9c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('2b480b9c')) {\n      api.createRecord('2b480b9c', component.options)\n    } else {\n      api.reload('2b480b9c', component.options)\n    }\n    module.hot.accept(/*! ./Edit.vue?vue&type=template&id=2b480b9c& */ \"./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Edit_vue_vue_type_template_id_2b480b9c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=2b480b9c& */ \"./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c&\");\n(function () {\n      api.rerender('2b480b9c', {\n        render: _Edit_vue_vue_type_template_id_2b480b9c___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Edit_vue_vue_type_template_id_2b480b9c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/clients/Edit.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL0VkaXQudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2xpZW50cy9FZGl0LnZ1ZT8wY2JhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vRWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmI0ODBiOWMmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcyYjQ4MGI5YycpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcyYjQ4MGI5YycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcyYjQ4MGI5YycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmI0ODBiOWMmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMmI0ODBiOWMnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NsaWVudHMvRWRpdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/Edit.vue\n");

/***/ }),

/***/ "./src/modules/clients/Edit.vue?vue&type=script&lang=js&":
/*!***************************************************************!*\
  !*** ./src/modules/clients/Edit.vue?vue&type=script&lang=js& ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL0VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NsaWVudHMvRWRpdC52dWU/Zjg2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c&":
/*!*********************************************************************!*\
  !*** ./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c& ***!
  \*********************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_2b480b9c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=template&id=2b480b9c& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_2b480b9c___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_2b480b9c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL0VkaXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiNDgwYjljJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NsaWVudHMvRWRpdC52dWU/ZmFhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmI0ODBiOWMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/Edit.vue?vue&type=template&id=2b480b9c&\n");

/***/ }),

/***/ "./src/modules/clients/List.vue":
/*!**************************************!*\
  !*** ./src/modules/clients/List.vue ***!
  \**************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _List_vue_vue_type_template_id_49d85a74___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./List.vue?vue&type=template&id=49d85a74& */ \"./src/modules/clients/List.vue?vue&type=template&id=49d85a74&\");\n/* harmony import */ var _List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./List.vue?vue&type=script&lang=js& */ \"./src/modules/clients/List.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _List_vue_vue_type_template_id_49d85a74___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _List_vue_vue_type_template_id_49d85a74___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('49d85a74')) {\n      api.createRecord('49d85a74', component.options)\n    } else {\n      api.reload('49d85a74', component.options)\n    }\n    module.hot.accept(/*! ./List.vue?vue&type=template&id=49d85a74& */ \"./src/modules/clients/List.vue?vue&type=template&id=49d85a74&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _List_vue_vue_type_template_id_49d85a74___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./List.vue?vue&type=template&id=49d85a74& */ \"./src/modules/clients/List.vue?vue&type=template&id=49d85a74&\");\n(function () {\n      api.rerender('49d85a74', {\n        render: _List_vue_vue_type_template_id_49d85a74___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _List_vue_vue_type_template_id_49d85a74___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/clients/List.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL0xpc3QudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2xpZW50cy9MaXN0LnZ1ZT8xOGEyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDlkODVhNzQmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc0OWQ4NWE3NCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc0OWQ4NWE3NCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc0OWQ4NWE3NCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDlkODVhNzQmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNDlkODVhNzQnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NsaWVudHMvTGlzdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/List.vue\n");

/***/ }),

/***/ "./src/modules/clients/List.vue?vue&type=script&lang=js&":
/*!***************************************************************!*\
  !*** ./src/modules/clients/List.vue?vue&type=script&lang=js& ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./List.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/List.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NsaWVudHMvTGlzdC52dWU/OTk5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/List.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/clients/List.vue?vue&type=template&id=49d85a74&":
/*!*********************************************************************!*\
  !*** ./src/modules/clients/List.vue?vue&type=template&id=49d85a74& ***!
  \*********************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_49d85a74___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./List.vue?vue&type=template&id=49d85a74& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/List.vue?vue&type=template&id=49d85a74&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_49d85a74___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_49d85a74___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ5ZDg1YTc0Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NsaWVudHMvTGlzdC52dWU/ZTBlYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDlkODVhNzQmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/List.vue?vue&type=template&id=49d85a74&\n");

/***/ }),

/***/ "./src/modules/clients/New.vue":
/*!*************************************!*\
  !*** ./src/modules/clients/New.vue ***!
  \*************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _New_vue_vue_type_template_id_760ae8b0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=760ae8b0& */ \"./src/modules/clients/New.vue?vue&type=template&id=760ae8b0&\");\n/* harmony import */ var _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./New.vue?vue&type=script&lang=js& */ \"./src/modules/clients/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _New_vue_vue_type_template_id_760ae8b0___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _New_vue_vue_type_template_id_760ae8b0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('760ae8b0')) {\n      api.createRecord('760ae8b0', component.options)\n    } else {\n      api.reload('760ae8b0', component.options)\n    }\n    module.hot.accept(/*! ./New.vue?vue&type=template&id=760ae8b0& */ \"./src/modules/clients/New.vue?vue&type=template&id=760ae8b0&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _New_vue_vue_type_template_id_760ae8b0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=760ae8b0& */ \"./src/modules/clients/New.vue?vue&type=template&id=760ae8b0&\");\n(function () {\n      api.rerender('760ae8b0', {\n        render: _New_vue_vue_type_template_id_760ae8b0___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _New_vue_vue_type_template_id_760ae8b0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/clients/New.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL05ldy52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jbGllbnRzL05ldy52dWU/NjBjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzYwYWU4YjAmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNzYwYWU4YjAnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNzYwYWU4YjAnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNzYwYWU4YjAnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzYwYWU4YjAmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNzYwYWU4YjAnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NsaWVudHMvTmV3LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/clients/New.vue\n");

/***/ }),

/***/ "./src/modules/clients/New.vue?vue&type=script&lang=js&":
/*!**************************************************************!*\
  !*** ./src/modules/clients/New.vue?vue&type=script&lang=js& ***!
  \**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL05ldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2xpZW50cy9OZXcudnVlPzQzZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL05ldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/clients/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/clients/New.vue?vue&type=template&id=760ae8b0&":
/*!********************************************************************!*\
  !*** ./src/modules/clients/New.vue?vue&type=template&id=760ae8b0& ***!
  \********************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_760ae8b0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=template&id=760ae8b0& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/clients/New.vue?vue&type=template&id=760ae8b0&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_760ae8b0___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_760ae8b0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzYwYWU4YjAmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2xpZW50cy9OZXcudnVlP2ZhNjIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL05ldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzYwYWU4YjAmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/New.vue?vue&type=template&id=760ae8b0&\n");

/***/ }),

/***/ "./src/modules/clients/services/Client.js":
/*!************************************************!*\
  !*** ./src/modules/clients/services/Client.js ***!
  \************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\nvar Client = {\n  get: function get(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/clients?\".concat(qs)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getClient: function getClient(id) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/users/\".concat(id)).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  create: function create(client) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post('v1/clients', client).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  update: function update(client) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].put(\"v1/clients/\".concat(client.id), client).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  disable: function disable(client) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/users/\".concat(client.id, \"/actions/disable\")).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Client);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL3NlcnZpY2VzL0NsaWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NsaWVudHMvc2VydmljZXMvQ2xpZW50LmpzP2M1MmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFwaUZhY3RvcnkgZnJvbSAnLi4vLi4vY29tbW9uL2ZhY3Rvcmllcy9BcGlGYWN0b3J5JztcbmltcG9ydCB7cHJlcGFyZUZpbHRlcnN9IGZyb20gXCIuLi8uLi9jb21tb24vc2VydmljZXMvVXRpbGl0eVNlcnZpY2VcIjtcblxuY29uc3QgQ2xpZW50ID0ge1xuICAgIGdldDogKGZpbHRlcnMpID0+IHtcbiAgICAgICAgY29uc3QgcXMgPSBwcmVwYXJlRmlsdGVycyhmaWx0ZXJzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9jbGllbnRzPyR7cXN9YCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldENsaWVudDogKGlkKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldChgdjEvdXNlcnMvJHtpZH1gKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBjcmVhdGU6IChjbGllbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkucG9zdCgndjEvY2xpZW50cycsIGNsaWVudCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBkYXRlOiAoY2xpZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnB1dChgdjEvY2xpZW50cy8ke2NsaWVudC5pZH1gLCBjbGllbnQpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGRpc2FibGUgKGNsaWVudCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGAvdjEvdXNlcnMvJHtjbGllbnQuaWR9L2FjdGlvbnMvZGlzYWJsZWApLnRoZW4oXG4gICAgICAgICAgICAgICAgKHN1Y2Nlc3MpID0+IHJlc29sdmUoc3VjY2Vzcy5kYXRhLmRhdGEpLFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENsaWVudDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUE3Q0E7QUFnREEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/services/Client.js\n");

/***/ }),

/***/ "./src/modules/clients/store/actions.js":
/*!**********************************************!*\
  !*** ./src/modules/clients/store/actions.js ***!
  \**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty.js\");\n/* harmony import */ var _services_Client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/Client */ \"./src/modules/clients/services/Client.js\");\n\n\n/* eslint-disable no-empty-pattern */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  getClients: function getClients(_ref, filters) {\n    var commit = _ref.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Client__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(filters).then(function (success) {\n        commit('CLIENTS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getClient: function getClient(_ref2, id) {\n    var commit = _ref2.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Client__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getClient(id).then(function (success) {\n        commit('SELECTED_CLIENT', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  createClient: function createClient(_ref3, client) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref3);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Client__WEBPACK_IMPORTED_MODULE_1__[\"default\"].create(client).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  updateClient: function updateClient(_ref4, client) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref4);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Client__WEBPACK_IMPORTED_MODULE_1__[\"default\"].update(client).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  enable: function enable(_ref5, client) {\n    var commit = _ref5.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Client__WEBPACK_IMPORTED_MODULE_1__[\"default\"].enable(client).then(function (success) {\n        commit('ENABLE', success);\n        resolve({\n          success: success\n        });\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  disable: function disable(_ref6, client) {\n    var commit = _ref6.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Client__WEBPACK_IMPORTED_MODULE_1__[\"default\"].disable(client).then(function (success) {\n        commit('DISABLE', success);\n        resolve({\n          success: success\n        });\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  resetState: function resetState(_ref7) {\n    var commit = _ref7.commit;\n    commit('RESET_STATE');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL3N0b3JlL2FjdGlvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jbGllbnRzL3N0b3JlL2FjdGlvbnMuanM/MjM5NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eS1wYXR0ZXJuICovXG5pbXBvcnQgQ2xpZW50Q2xpZW50IGZyb20gJy4uL3NlcnZpY2VzL0NsaWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBnZXRDbGllbnRzICh7Y29tbWl0fSwgZmlsdGVycykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gQ2xpZW50Q2xpZW50LmdldChmaWx0ZXJzKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ0NMSUVOVFMnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgZ2V0Q2xpZW50ICh7Y29tbWl0fSwgaWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IENsaWVudENsaWVudC5nZXRDbGllbnQoaWQpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIGNvbW1pdCgnU0VMRUNURURfQ0xJRU5UJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUNsaWVudCAoe30sIGNsaWVudCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gQ2xpZW50Q2xpZW50LmNyZWF0ZShjbGllbnQpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgdXBkYXRlQ2xpZW50ICh7fSwgY2xpZW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBDbGllbnRDbGllbnQudXBkYXRlKGNsaWVudCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBlbmFibGUgKHtjb21taXR9LCBjbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IENsaWVudENsaWVudC5lbmFibGUoY2xpZW50KS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ0VOQUJMRScsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3VjY2Vzc30pO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGRpc2FibGUgKHtjb21taXR9LCBjbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IENsaWVudENsaWVudC5kaXNhYmxlKGNsaWVudCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdESVNBQkxFJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdWNjZXNzfSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgcmVzZXRTdGF0ZSAoe2NvbW1pdH0pIHtcbiAgICAgICAgY29tbWl0KCdSRVNFVF9TVEFURScpO1xuICAgIH1cbn07XG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBckNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/clients/store/actions.js\n");

/***/ }),

/***/ "./src/modules/clients/store/defaults.js":
/*!***********************************************!*\
  !*** ./src/modules/clients/store/defaults.js ***!
  \***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n  return {\n    clients: {\n      data: [],\n      meta: {\n        pagination: {\n          current_page: 1,\n          per_page: 10\n        }\n      }\n    },\n    selectedClient: {}\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL3N0b3JlL2RlZmF1bHRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2xpZW50cy9zdG9yZS9kZWZhdWx0cy5qcz85ZGE0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0ICgpID0+ICh7XG4gICAgY2xpZW50czoge1xuICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgICAgICAgICBwZXJfcGFnZTogMTAsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHNlbGVjdGVkQ2xpZW50OiB7fSxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQURBO0FBRkE7QUFTQTtBQVZBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/store/defaults.js\n");

/***/ }),

/***/ "./src/modules/clients/store/getters.js":
/*!**********************************************!*\
  !*** ./src/modules/clients/store/getters.js ***!
  \**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar clients = function clients(state) {\n  return state.clients;\n};\n\nvar selectedClient = function selectedClient(state) {\n  return state.selectedClient;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  clients: clients,\n  selectedClient: selectedClient\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL3N0b3JlL2dldHRlcnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jbGllbnRzL3N0b3JlL2dldHRlcnMuanM/MzJiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjbGllbnRzID0gc3RhdGUgPT4gc3RhdGUuY2xpZW50cztcbmNvbnN0IHNlbGVjdGVkQ2xpZW50ID0gc3RhdGUgPT4gc3RhdGUuc2VsZWN0ZWRDbGllbnQ7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBjbGllbnRzLFxuICAgIHNlbGVjdGVkQ2xpZW50LFxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/store/getters.js\n");

/***/ }),

/***/ "./src/modules/clients/store/index.js":
/*!********************************************!*\
  !*** ./src/modules/clients/store/index.js ***!
  \********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/modules/clients/store/actions.js\");\n/* harmony import */ var _getters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getters */ \"./src/modules/clients/store/getters.js\");\n/* harmony import */ var _mutations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutations */ \"./src/modules/clients/store/mutations.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaults */ \"./src/modules/clients/store/defaults.js\");\n\n\n\n\nvar state = Object(_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  namespaced: true,\n  state: state,\n  actions: _actions__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  getters: _getters__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  mutations: _mutations__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL3N0b3JlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY2xpZW50cy9zdG9yZS9pbmRleC5qcz82MmE0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhY3Rpb25zIGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgZ2V0dGVycyBmcm9tICcuL2dldHRlcnMnO1xuaW1wb3J0IG11dGF0aW9ucyBmcm9tICcuL211dGF0aW9ucyc7XG5pbXBvcnQgZGVmYXVsdFN0YXRlIGZyb20gJy4vZGVmYXVsdHMnO1xuXG5jb25zdCBzdGF0ZSA9IGRlZmF1bHRTdGF0ZSgpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZXNwYWNlZDogdHJ1ZSxcbiAgICBzdGF0ZSxcbiAgICBhY3Rpb25zLFxuICAgIGdldHRlcnMsXG4gICAgbXV0YXRpb25zXG59O1xuXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/clients/store/index.js\n");

/***/ }),

/***/ "./src/modules/clients/store/mutations.js":
/*!************************************************!*\
  !*** ./src/modules/clients/store/mutations.js ***!
  \************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.array.find-index */ \"./node_modules/core-js/modules/es6.array.find-index.js\");\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaults */ \"./src/modules/clients/store/defaults.js\");\n\n\n\nvar RESET_STATE = function RESET_STATE(state) {\n  Object.assign(state, Object(_defaults__WEBPACK_IMPORTED_MODULE_1__[\"default\"])());\n};\n\nvar CLIENTS = function CLIENTS(state, value) {\n  state.clients = value;\n  return state.clients;\n};\n\nvar SELECTED_CLIENT = function SELECTED_CLIENT(state, value) {\n  state.selectedClient = value;\n  return state.selectedClient;\n};\n\nvar ENABLE = function ENABLE(state, client) {\n  var currentClientIndex = _.findIndex(state.clients.data, function (u) {\n    return u.id === client.id;\n  });\n\n  state.clients.data[currentClientIndex].is_available = true;\n  return state.clients;\n};\n\nvar DISABLE = function DISABLE(state, client) {\n  var currentClientIndex = _.findIndex(state.clients.data, function (u) {\n    return u.id === client.id;\n  });\n\n  state.clients.data[currentClientIndex].is_available = false;\n  return state.clients;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  RESET_STATE: RESET_STATE,\n  CLIENTS: CLIENTS,\n  SELECTED_CLIENT: SELECTED_CLIENT,\n  ENABLE: ENABLE,\n  DISABLE: DISABLE\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jbGllbnRzL3N0b3JlL211dGF0aW9ucy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NsaWVudHMvc3RvcmUvbXV0YXRpb25zLmpzPzQ4MGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTdGF0ZSBmcm9tICcuL2RlZmF1bHRzJztcblxuY29uc3QgUkVTRVRfU1RBVEUgPSAoc3RhdGUpID0+IHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLCBkZWZhdWx0U3RhdGUoKSk7XG59O1xuXG5jb25zdCBDTElFTlRTID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLmNsaWVudHMgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RhdGUuY2xpZW50cztcbn07XG5cbmNvbnN0IFNFTEVDVEVEX0NMSUVOVCA9IChzdGF0ZSwgdmFsdWUpID0+IHtcbiAgICBzdGF0ZS5zZWxlY3RlZENsaWVudCA9IHZhbHVlO1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZENsaWVudDtcbn07XG5cbmNvbnN0IEVOQUJMRSA9IChzdGF0ZSwgY2xpZW50KSA9PiB7XG4gICAgY29uc3QgY3VycmVudENsaWVudEluZGV4ID0gXy5maW5kSW5kZXgoc3RhdGUuY2xpZW50cy5kYXRhLCAodSkgPT4ge1xuICAgICAgICByZXR1cm4gdS5pZCA9PT0gY2xpZW50LmlkXG4gICAgfSk7XG4gICAgc3RhdGUuY2xpZW50cy5kYXRhW2N1cnJlbnRDbGllbnRJbmRleF0uaXNfYXZhaWxhYmxlID0gdHJ1ZTtcbiAgICByZXR1cm4gc3RhdGUuY2xpZW50cztcbn07XG5cbmNvbnN0IERJU0FCTEUgPSAoc3RhdGUsIGNsaWVudCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRDbGllbnRJbmRleCA9IF8uZmluZEluZGV4KHN0YXRlLmNsaWVudHMuZGF0YSwgKHUpID0+IHtcbiAgICAgICAgcmV0dXJuIHUuaWQgPT09IGNsaWVudC5pZFxuICAgIH0pO1xuICAgIHN0YXRlLmNsaWVudHMuZGF0YVtjdXJyZW50Q2xpZW50SW5kZXhdLmlzX2F2YWlsYWJsZSA9IGZhbHNlO1xuICAgIHJldHVybiBzdGF0ZS5jbGllbnRzO1xufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIFJFU0VUX1NUQVRFLFxuICAgIENMSUVOVFMsXG4gICAgU0VMRUNURURfQ0xJRU5ULFxuICAgIEVOQUJMRSxcbiAgICBESVNBQkxFLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/clients/store/mutations.js\n");

/***/ }),

/***/ "./src/modules/common/components/FeatherIcon.vue":
/*!*******************************************************!*\
  !*** ./src/modules/common/components/FeatherIcon.vue ***!
  \*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _FeatherIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FeatherIcon.vue?vue&type=script&lang=js& */ \"./src/modules/common/components/FeatherIcon.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _FeatherIcon_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FeatherIcon.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\nvar render, staticRenderFns\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _FeatherIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('90195a94')) {\n      api.createRecord('90195a94', component.options)\n    } else {\n      api.reload('90195a94', component.options)\n    }\n    \n  }\n}\ncomponent.options.__file = \"src/modules/common/components/FeatherIcon.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GZWF0aGVySWNvbi52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GZWF0aGVySWNvbi52dWU/NzRmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRmVhdGhlckljb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9GZWF0aGVySWNvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vRmVhdGhlckljb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc5MDE5NWE5NCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc5MDE5NWE5NCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc5MDE5NWE5NCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GZWF0aGVySWNvbi52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/components/FeatherIcon.vue\n");

/***/ }),

/***/ "./src/modules/common/components/FeatherIcon.vue?vue&type=script&lang=js&":
/*!********************************************************************************!*\
  !*** ./src/modules/common/components/FeatherIcon.vue?vue&type=script&lang=js& ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FeatherIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FeatherIcon.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FeatherIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GZWF0aGVySWNvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvRmVhdGhlckljb24udnVlPzQ5M2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9GZWF0aGVySWNvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRmVhdGhlckljb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/components/FeatherIcon.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&":
/*!*****************************************************************************************!*\
  !*** ./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss& ***!
  \*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FeatherIcon_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FeatherIcon.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FeatherIcon_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FeatherIcon_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FeatherIcon_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FeatherIcon_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FeatherIcon_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GZWF0aGVySWNvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvRmVhdGhlckljb24udnVlP2JkMTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9GZWF0aGVySWNvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRmVhdGhlckljb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/components/FeatherIcon.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/common/components/FileUploader.vue":
/*!********************************************************!*\
  !*** ./src/modules/common/components/FileUploader.vue ***!
  \********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _FileUploader_vue_vue_type_template_id_636e3780___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FileUploader.vue?vue&type=template&id=636e3780& */ \"./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780&\");\n/* harmony import */ var _FileUploader_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FileUploader.vue?vue&type=script&lang=js& */ \"./src/modules/common/components/FileUploader.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _FileUploader_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _FileUploader_vue_vue_type_template_id_636e3780___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _FileUploader_vue_vue_type_template_id_636e3780___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('636e3780')) {\n      api.createRecord('636e3780', component.options)\n    } else {\n      api.reload('636e3780', component.options)\n    }\n    module.hot.accept(/*! ./FileUploader.vue?vue&type=template&id=636e3780& */ \"./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _FileUploader_vue_vue_type_template_id_636e3780___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FileUploader.vue?vue&type=template&id=636e3780& */ \"./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780&\");\n(function () {\n      api.rerender('636e3780', {\n        render: _FileUploader_vue_vue_type_template_id_636e3780___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _FileUploader_vue_vue_type_template_id_636e3780___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/components/FileUploader.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GaWxlVXBsb2FkZXIudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvRmlsZVVwbG9hZGVyLnZ1ZT8zOWFjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vRmlsZVVwbG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MzZlMzc4MCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9GaWxlVXBsb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9GaWxlVXBsb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc2MzZlMzc4MCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc2MzZlMzc4MCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc2MzZlMzc4MCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRmlsZVVwbG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MzZlMzc4MCZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc2MzZlMzc4MCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvRmlsZVVwbG9hZGVyLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/components/FileUploader.vue\n");

/***/ }),

/***/ "./src/modules/common/components/FileUploader.vue?vue&type=script&lang=js&":
/*!*********************************************************************************!*\
  !*** ./src/modules/common/components/FileUploader.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FileUploader_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FileUploader.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FileUploader.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FileUploader_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GaWxlVXBsb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL0ZpbGVVcGxvYWRlci52dWU/OTc4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0ZpbGVVcGxvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRmlsZVVwbG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/components/FileUploader.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780&":
/*!***************************************************************************************!*\
  !*** ./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780& ***!
  \***************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FileUploader_vue_vue_type_template_id_636e3780___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FileUploader.vue?vue&type=template&id=636e3780& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FileUploader_vue_vue_type_template_id_636e3780___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FileUploader_vue_vue_type_template_id_636e3780___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9GaWxlVXBsb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzNmUzNzgwJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL0ZpbGVVcGxvYWRlci52dWU/YzZkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRmlsZVVwbG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MzZlMzc4MCZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/components/FileUploader.vue?vue&type=template&id=636e3780&\n");

/***/ }),

/***/ "./src/modules/common/components/MediaUpload.vue":
/*!*******************************************************!*\
  !*** ./src/modules/common/components/MediaUpload.vue ***!
  \*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _MediaUpload_vue_vue_type_template_id_8ac6f502___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MediaUpload.vue?vue&type=template&id=8ac6f502& */ \"./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502&\");\n/* harmony import */ var _MediaUpload_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MediaUpload.vue?vue&type=script&lang=js& */ \"./src/modules/common/components/MediaUpload.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _MediaUpload_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _MediaUpload_vue_vue_type_template_id_8ac6f502___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _MediaUpload_vue_vue_type_template_id_8ac6f502___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('8ac6f502')) {\n      api.createRecord('8ac6f502', component.options)\n    } else {\n      api.reload('8ac6f502', component.options)\n    }\n    module.hot.accept(/*! ./MediaUpload.vue?vue&type=template&id=8ac6f502& */ \"./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _MediaUpload_vue_vue_type_template_id_8ac6f502___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MediaUpload.vue?vue&type=template&id=8ac6f502& */ \"./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502&\");\n(function () {\n      api.rerender('8ac6f502', {\n        render: _MediaUpload_vue_vue_type_template_id_8ac6f502___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _MediaUpload_vue_vue_type_template_id_8ac6f502___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/components/MediaUpload.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9NZWRpYVVwbG9hZC52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9NZWRpYVVwbG9hZC52dWU/NjNkMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL01lZGlhVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04YWM2ZjUwMiZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9NZWRpYVVwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL01lZGlhVXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnOGFjNmY1MDInKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnOGFjNmY1MDInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnOGFjNmY1MDInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL01lZGlhVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04YWM2ZjUwMiZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc4YWM2ZjUwMicsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvTWVkaWFVcGxvYWQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/components/MediaUpload.vue\n");

/***/ }),

/***/ "./src/modules/common/components/MediaUpload.vue?vue&type=script&lang=js&":
/*!********************************************************************************!*\
  !*** ./src/modules/common/components/MediaUpload.vue?vue&type=script&lang=js& ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_MediaUpload_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./MediaUpload.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/MediaUpload.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_MediaUpload_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9NZWRpYVVwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvTWVkaWFVcGxvYWQudnVlPzI4YmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9NZWRpYVVwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWVkaWFVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/components/MediaUpload.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502&":
/*!**************************************************************************************!*\
  !*** ./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502& ***!
  \**************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_MediaUpload_vue_vue_type_template_id_8ac6f502___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./MediaUpload.vue?vue&type=template&id=8ac6f502& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_MediaUpload_vue_vue_type_template_id_8ac6f502___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_MediaUpload_vue_vue_type_template_id_8ac6f502___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9NZWRpYVVwbG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGFjNmY1MDImLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvTWVkaWFVcGxvYWQudnVlPzU0OGMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL01lZGlhVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04YWM2ZjUwMiZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/components/MediaUpload.vue?vue&type=template&id=8ac6f502&\n");

/***/ }),

/***/ "./src/modules/common/components/StatisticsCardLine.vue":
/*!**************************************************************!*\
  !*** ./src/modules/common/components/StatisticsCardLine.vue ***!
  \**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _StatisticsCardLine_vue_vue_type_template_id_772fffdd___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./StatisticsCardLine.vue?vue&type=template&id=772fffdd& */ \"./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd&\");\n/* harmony import */ var _StatisticsCardLine_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./StatisticsCardLine.vue?vue&type=script&lang=js& */ \"./src/modules/common/components/StatisticsCardLine.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _StatisticsCardLine_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _StatisticsCardLine_vue_vue_type_template_id_772fffdd___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _StatisticsCardLine_vue_vue_type_template_id_772fffdd___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('772fffdd')) {\n      api.createRecord('772fffdd', component.options)\n    } else {\n      api.reload('772fffdd', component.options)\n    }\n    module.hot.accept(/*! ./StatisticsCardLine.vue?vue&type=template&id=772fffdd& */ \"./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _StatisticsCardLine_vue_vue_type_template_id_772fffdd___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./StatisticsCardLine.vue?vue&type=template&id=772fffdd& */ \"./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd&\");\n(function () {\n      api.rerender('772fffdd', {\n        render: _StatisticsCardLine_vue_vue_type_template_id_772fffdd___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _StatisticsCardLine_vue_vue_type_template_id_772fffdd___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/components/StatisticsCardLine.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9TdGF0aXN0aWNzQ2FyZExpbmUudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvU3RhdGlzdGljc0NhcmRMaW5lLnZ1ZT8xMDYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vU3RhdGlzdGljc0NhcmRMaW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NzJmZmZkZCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TdGF0aXN0aWNzQ2FyZExpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9TdGF0aXN0aWNzQ2FyZExpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc3NzJmZmZkZCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc3NzJmZmZkZCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc3NzJmZmZkZCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU3RhdGlzdGljc0NhcmRMaW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NzJmZmZkZCZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc3NzJmZmZkZCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvU3RhdGlzdGljc0NhcmRMaW5lLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/components/StatisticsCardLine.vue\n");

/***/ }),

/***/ "./src/modules/common/components/StatisticsCardLine.vue?vue&type=script&lang=js&":
/*!***************************************************************************************!*\
  !*** ./src/modules/common/components/StatisticsCardLine.vue?vue&type=script&lang=js& ***!
  \***************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsCardLine_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./StatisticsCardLine.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/StatisticsCardLine.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsCardLine_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9TdGF0aXN0aWNzQ2FyZExpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1N0YXRpc3RpY3NDYXJkTGluZS52dWU/MjFlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1N0YXRpc3RpY3NDYXJkTGluZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vU3RhdGlzdGljc0NhcmRMaW5lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/components/StatisticsCardLine.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd&":
/*!*********************************************************************************************!*\
  !*** ./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd& ***!
  \*********************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsCardLine_vue_vue_type_template_id_772fffdd___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./StatisticsCardLine.vue?vue&type=template&id=772fffdd& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsCardLine_vue_vue_type_template_id_772fffdd___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsCardLine_vue_vue_type_template_id_772fffdd___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9TdGF0aXN0aWNzQ2FyZExpbmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3MmZmZmRkJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1N0YXRpc3RpY3NDYXJkTGluZS52dWU/Y2U5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vU3RhdGlzdGljc0NhcmRMaW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NzJmZmZkZCZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/components/StatisticsCardLine.vue?vue&type=template&id=772fffdd&\n");

/***/ }),

/***/ "./src/modules/common/components/VxCard.vue":
/*!**************************************************!*\
  !*** ./src/modules/common/components/VxCard.vue ***!
  \**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VxCard_vue_vue_type_template_id_4b99d2e8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxCard.vue?vue&type=template&id=4b99d2e8& */ \"./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8&\");\n/* harmony import */ var _VxCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VxCard.vue?vue&type=script&lang=js& */ \"./src/modules/common/components/VxCard.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _VxCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VxCard.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _VxCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _VxCard_vue_vue_type_template_id_4b99d2e8___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _VxCard_vue_vue_type_template_id_4b99d2e8___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('4b99d2e8')) {\n      api.createRecord('4b99d2e8', component.options)\n    } else {\n      api.reload('4b99d2e8', component.options)\n    }\n    module.hot.accept(/*! ./VxCard.vue?vue&type=template&id=4b99d2e8& */ \"./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _VxCard_vue_vue_type_template_id_4b99d2e8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxCard.vue?vue&type=template&id=4b99d2e8& */ \"./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8&\");\n(function () {\n      api.rerender('4b99d2e8', {\n        render: _VxCard_vue_vue_type_template_id_4b99d2e8___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _VxCard_vue_vue_type_template_id_4b99d2e8___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/components/VxCard.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9WeENhcmQudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2NvbXBvbmVudHMvVnhDYXJkLnZ1ZT85NTNmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vVnhDYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00Yjk5ZDJlOCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9WeENhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9WeENhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL1Z4Q2FyZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzRiOTlkMmU4JykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzRiOTlkMmU4JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzRiOTlkMmU4JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9WeENhcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRiOTlkMmU4JlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzRiOTlkMmU4Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9WeENhcmQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/components/VxCard.vue\n");

/***/ }),

/***/ "./src/modules/common/components/VxCard.vue?vue&type=script&lang=js&":
/*!***************************************************************************!*\
  !*** ./src/modules/common/components/VxCard.vue?vue&type=script&lang=js& ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./VxCard.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9WeENhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1Z4Q2FyZC52dWU/ZDBmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Z4Q2FyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhDYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/components/VxCard.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&":
/*!************************************************************************************!*\
  !*** ./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss& ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./VxCard.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9WeENhcmQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1Z4Q2FyZC52dWU/OWNjOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Z4Q2FyZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhDYXJkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/components/VxCard.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8&":
/*!*********************************************************************************!*\
  !*** ./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8& ***!
  \*********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_template_id_4b99d2e8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./VxCard.vue?vue&type=template&id=4b99d2e8& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_template_id_4b99d2e8___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxCard_vue_vue_type_template_id_4b99d2e8___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vY29tcG9uZW50cy9WeENhcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRiOTlkMmU4Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9jb21wb25lbnRzL1Z4Q2FyZC52dWU/N2IyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhDYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00Yjk5ZDJlOCZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/components/VxCard.vue?vue&type=template&id=4b99d2e8&\n");

/***/ }),

/***/ "./src/modules/common/factories/ApiFactory.js":
/*!****************************************************!*\
  !*** ./src/modules/common/factories/ApiFactory.js ***!
  \****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../../../store */ \"./src/store.js\");\n/* harmony import */ var _services_EventBus__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../services/EventBus */ \"./src/modules/common/services/EventBus.js\");\n/* eslint-disable max-len */\n\n\n\nvar apiFactory = axios__WEBPACK_IMPORTED_MODULE_0___default.a.create({\n  baseURL: \"https://api.geotechnics.coding.al/api/\",\n  headers: {\n    'X-Requested-With': 'XMLHttpRequest',\n    'Content-Type': 'application/json',\n    'Accept-Language': 'en'\n  }\n});\napiFactory.interceptors.request.use(function (config) {\n  var token = _store__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getters['token'];\n\n  if (token) {\n    config.headers.Authorization = \"Bearer \".concat(token);\n  }\n\n  return config;\n}, function (error) {\n  if (error.response.status === 401) {\n    _store__WEBPACK_IMPORTED_MODULE_1__[\"default\"].dispatch('auth/logout');\n  }\n\n  return Promise.reject(error.response.data);\n});\napiFactory.interceptors.response.use(function (response) {\n  return response;\n}, function (error) {\n  if (error.response && error.response.status === 401) {\n    // store.dispatch('resetStates');\n    _services_EventBus__WEBPACK_IMPORTED_MODULE_2__[\"default\"].$emit('received-401', error.response.data);\n  }\n\n  return Promise.reject(error.response ? error.response.data : error);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (apiFactory);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vZmFjdG9yaWVzL0FwaUZhY3RvcnkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vZmFjdG9yaWVzL0FwaUZhY3RvcnkuanM/ODYxZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgQXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHN0b3JlIGZyb20gJy4vLi4vLi4vLi4vc3RvcmUnO1xuaW1wb3J0IEV2ZW50QnVzIGZyb20gJy4vLi4vc2VydmljZXMvRXZlbnRCdXMnO1xuXG5jb25zdCBhcGlGYWN0b3J5ID0gQXhpb3MuY3JlYXRlKHtcbiAgICBiYXNlVVJMOiBwcm9jZXNzLmVudi5WVUVfQVBQX0FQSV9VUkwsXG4gICAgaGVhZGVyczoge1xuICAgICAgICAnWC1SZXF1ZXN0ZWQtV2l0aCc6ICdYTUxIdHRwUmVxdWVzdCcsXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnZW4nXG4gICAgfVxufSk7XG5cbmFwaUZhY3RvcnkuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKGNvbmZpZyA9PiB7XG4gICAgY29uc3QgdG9rZW4gPSBzdG9yZS5nZXR0ZXJzWyd0b2tlbiddO1xuICAgIGlmICh0b2tlbikge1xuICAgICAgICBjb25maWcuaGVhZGVycy5BdXRob3JpemF0aW9uID0gYEJlYXJlciAke3Rva2VufWA7XG4gICAgfVxuICAgIHJldHVybiBjb25maWc7XG59LCAoZXJyb3IpID0+IHtcbiAgICBpZiAoZXJyb3IucmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ2F1dGgvbG9nb3V0Jyk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvci5yZXNwb25zZS5kYXRhKTtcbn0pO1xuXG5hcGlGYWN0b3J5LmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UocmVzcG9uc2UgPT4gcmVzcG9uc2UsIGVycm9yID0+IHtcbiAgICBpZiAoZXJyb3IucmVzcG9uc2UgJiYgZXJyb3IucmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgLy8gc3RvcmUuZGlzcGF0Y2goJ3Jlc2V0U3RhdGVzJyk7XG4gICAgICAgIEV2ZW50QnVzLiRlbWl0KCdyZWNlaXZlZC00MDEnLCBlcnJvci5yZXNwb25zZS5kYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yLnJlc3BvbnNlID8gZXJyb3IucmVzcG9uc2UuZGF0YSA6IGVycm9yKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBhcGlGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUZBO0FBU0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/factories/ApiFactory.js\n");

/***/ }),

/***/ "./src/modules/common/filters/filters.js":
/*!***********************************************!*\
  !*** ./src/modules/common/filters/filters.js ***!
  \***********************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.regexp.replace */ \"./node_modules/core-js/modules/es6.regexp.replace.js\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.regexp.split */ \"./node_modules/core-js/modules/es6.regexp.split.js\");\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_regexp_to_string__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.regexp.to-string */ \"./node_modules/core-js/modules/es6.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es6_regexp_to_string__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_to_string__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es6_date_to_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es6.date.to-string */ \"./node_modules/core-js/modules/es6.date.to-string.js\");\n/* harmony import */ var core_js_modules_es6_date_to_string__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_date_to_string__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('capitalize', function (value) {\n  if (!value) return '';\n  value = value.toString();\n  var arr = value.split(\" \");\n  var capitalized_array = [];\n  arr.forEach(function (word) {\n    var capitalized = word.charAt(0).toUpperCase() + word.slice(1);\n    capitalized_array.push(capitalized);\n  });\n  return capitalized_array.join(\" \");\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('truncate', function (value, limit) {\n  return value.substring(0, limit);\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('tailing', function (value, tail) {\n  return value + tail;\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('time', function (value) {\n  var is24HrFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  if (value) {\n    var date = new Date(Date.parse(value));\n    var hours = date.getHours();\n    var min = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();\n\n    if (!is24HrFormat) {\n      var time = hours > 12 ? 'AM' : 'PM';\n      hours = hours % 12 || 12;\n      return hours + ':' + min + ' ' + time;\n    }\n\n    return hours + ':' + min;\n  }\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('date', function (value) {\n  var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'DD/MM/YYYY';\n  return moment__WEBPACK_IMPORTED_MODULE_8___default()(value).format(format);\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('fromNow', function (value) {\n  return moment__WEBPACK_IMPORTED_MODULE_8___default()(value).fromNow();\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('month', function (val) {\n  var showYear = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  val = String(val);\n  var regx = /\\w+\\s(\\w+)\\s\\d+\\s(\\d+)./;\n\n  if (!showYear) {\n    return regx.exec(val)[1];\n  } else {\n    return regx.exec(val)[1] + ' ' + regx.exec(val)[2];\n  }\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('csv', function (value) {\n  return value.join(', ');\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('filter_tags', function (value) {\n  return value.replace(/<\\/?[^>]+(>|$)/g, \"\");\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('k_formatter', function (num) {\n  return num > 999 ? (num / 1000).toFixed(1) + 'k' : num;\n});\nvue__WEBPACK_IMPORTED_MODULE_7__[\"default\"].filter('readableBytes', function (bytes) {\n  var thresh = 1000;\n\n  if (Math.abs(bytes) < thresh) {\n    return bytes + ' B';\n  }\n\n  var units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n  var u = -1;\n\n  do {\n    bytes /= thresh;\n    ++u;\n  } while (Math.abs(bytes) >= thresh && u < units.length - 1);\n\n  return bytes.toFixed(1) + ' ' + units[u];\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vZmlsdGVycy9maWx0ZXJzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2ZpbHRlcnMvZmlsdGVycy5qcz8yMGJlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5WdWUuZmlsdGVyKCdjYXBpdGFsaXplJywgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICBsZXQgYXJyID0gdmFsdWUuc3BsaXQoXCIgXCIpO1xuICAgIGxldCBjYXBpdGFsaXplZF9hcnJheSA9IFtdO1xuICAgIGFyci5mb3JFYWNoKCh3b3JkKSA9PiB7XG4gICAgICAgIGxldCBjYXBpdGFsaXplZCA9IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpO1xuICAgICAgICBjYXBpdGFsaXplZF9hcnJheS5wdXNoKGNhcGl0YWxpemVkKVxuICAgIH0pO1xuICAgIHJldHVybiBjYXBpdGFsaXplZF9hcnJheS5qb2luKFwiIFwiKTtcbn0pO1xuXG5WdWUuZmlsdGVyKCd0cnVuY2F0ZScsIGZ1bmN0aW9uICh2YWx1ZSwgbGltaXQpIHtcbiAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKDAsIGxpbWl0KTtcbn0pO1xuXG5WdWUuZmlsdGVyKCd0YWlsaW5nJywgZnVuY3Rpb24gKHZhbHVlLCB0YWlsKSB7XG4gICAgcmV0dXJuIHZhbHVlICsgdGFpbDtcbn0pO1xuXG5WdWUuZmlsdGVyKCd0aW1lJywgZnVuY3Rpb24gKHZhbHVlLCBpczI0SHJGb3JtYXQgPSBmYWxzZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICAgICAgICBsZXQgaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1pbiA9IChkYXRlLmdldE1pbnV0ZXMoKSA8IDEwID8gJzAnIDogJycpICsgZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgIGlmICghaXMyNEhyRm9ybWF0KSB7XG4gICAgICAgICAgICBjb25zdCB0aW1lID0gaG91cnMgPiAxMiA/ICdBTScgOiAnUE0nO1xuICAgICAgICAgICAgaG91cnMgPSBob3VycyAlIDEyIHx8IDEyO1xuICAgICAgICAgICAgcmV0dXJuIGhvdXJzICsgJzonICsgbWluICsgJyAnICsgdGltZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG91cnMgKyAnOicgKyBtaW5cbiAgICB9XG59KTtcblxuVnVlLmZpbHRlcignZGF0ZScsIGZ1bmN0aW9uICh2YWx1ZSwgZm9ybWF0ID0gJ0REL01NL1lZWVknKSB7XG4gICAgcmV0dXJuIG1vbWVudCh2YWx1ZSkuZm9ybWF0KGZvcm1hdCk7XG59KTtcblxuVnVlLmZpbHRlcignZnJvbU5vdycsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBtb21lbnQodmFsdWUpLmZyb21Ob3coKTtcbn0pO1xuXG5WdWUuZmlsdGVyKCdtb250aCcsIGZ1bmN0aW9uICh2YWwsIHNob3dZZWFyID0gdHJ1ZSkge1xuICAgIHZhbCA9IFN0cmluZyh2YWwpO1xuXG4gICAgY29uc3QgcmVneCA9IC9cXHcrXFxzKFxcdyspXFxzXFxkK1xccyhcXGQrKS4vO1xuICAgIGlmICghc2hvd1llYXIpIHtcbiAgICAgICAgcmV0dXJuIHJlZ3guZXhlYyh2YWwpWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZWd4LmV4ZWModmFsKVsxXSArICcgJyArIHJlZ3guZXhlYyh2YWwpWzJdO1xuICAgIH1cbn0pO1xuXG5WdWUuZmlsdGVyKCdjc3YnLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuam9pbignLCAnKTtcbn0pO1xuXG5WdWUuZmlsdGVyKCdmaWx0ZXJfdGFncycsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgXCJcIilcbn0pO1xuXG5WdWUuZmlsdGVyKCdrX2Zvcm1hdHRlcicsIGZ1bmN0aW9uIChudW0pIHtcbiAgICByZXR1cm4gbnVtID4gOTk5ID8gKG51bSAvIDEwMDApLnRvRml4ZWQoMSkgKyAnaycgOiBudW07XG59KTtcblxuVnVlLmZpbHRlcigncmVhZGFibGVCeXRlcycsIGZ1bmN0aW9uIChieXRlcykge1xuICAgIGxldCB0aHJlc2ggPSAxMDAwO1xuICAgIGlmIChNYXRoLmFicyhieXRlcykgPCB0aHJlc2gpIHtcbiAgICAgICAgcmV0dXJuIGJ5dGVzICsgJyBCJztcbiAgICB9XG4gICAgY29uc3QgdW5pdHMgPSBbJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgbGV0IHUgPSAtMTtcbiAgICBkbyB7XG4gICAgICAgIGJ5dGVzIC89IHRocmVzaDtcbiAgICAgICAgKyt1O1xuICAgIH0gd2hpbGUgKE1hdGguYWJzKGJ5dGVzKSA+PSB0aHJlc2ggJiYgdSA8IHVuaXRzLmxlbmd0aCAtIDEpO1xuXG4gICAgcmV0dXJuIGJ5dGVzLnRvRml4ZWQoMSkgKyAnICcgKyB1bml0c1t1XTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/filters/filters.js\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/TheFooter.vue":
/*!*************************************************************!*\
  !*** ./src/modules/common/layouts/components/TheFooter.vue ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _TheFooter_vue_vue_type_template_id_2c28ceac___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TheFooter.vue?vue&type=template&id=2c28ceac& */ \"./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac&\");\n/* harmony import */ var _TheFooter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TheFooter.vue?vue&type=script&lang=js& */ \"./src/modules/common/layouts/components/TheFooter.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _TheFooter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _TheFooter_vue_vue_type_template_id_2c28ceac___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _TheFooter_vue_vue_type_template_id_2c28ceac___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('2c28ceac')) {\n      api.createRecord('2c28ceac', component.options)\n    } else {\n      api.reload('2c28ceac', component.options)\n    }\n    module.hot.accept(/*! ./TheFooter.vue?vue&type=template&id=2c28ceac& */ \"./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _TheFooter_vue_vue_type_template_id_2c28ceac___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TheFooter.vue?vue&type=template&id=2c28ceac& */ \"./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac&\");\n(function () {\n      api.rerender('2c28ceac', {\n        render: _TheFooter_vue_vue_type_template_id_2c28ceac___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _TheFooter_vue_vue_type_template_id_2c28ceac___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/layouts/components/TheFooter.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZUZvb3Rlci52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZUZvb3Rlci52dWU/ZGFiNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1RoZUZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmMyOGNlYWMmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGhlRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGhlRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnMmMyOGNlYWMnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnMmMyOGNlYWMnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnMmMyOGNlYWMnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RoZUZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmMyOGNlYWMmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMmMyOGNlYWMnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvVGhlRm9vdGVyLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/TheFooter.vue\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/TheFooter.vue?vue&type=script&lang=js&":
/*!**************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/TheFooter.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheFooter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./TheFooter.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheFooter.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheFooter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZUZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy9UaGVGb290ZXIudnVlPzFmNGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9UaGVGb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1RoZUZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/TheFooter.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac&":
/*!********************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac& ***!
  \********************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheFooter_vue_vue_type_template_id_2c28ceac___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./TheFooter.vue?vue&type=template&id=2c28ceac& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheFooter_vue_vue_type_template_id_2c28ceac___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheFooter_vue_vue_type_template_id_2c28ceac___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZUZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmMyOGNlYWMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy9UaGVGb290ZXIudnVlPzg0NDkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1RoZUZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmMyOGNlYWMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/TheFooter.vue?vue&type=template&id=2c28ceac&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/TheNavbar.vue":
/*!*************************************************************!*\
  !*** ./src/modules/common/layouts/components/TheNavbar.vue ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _TheNavbar_vue_vue_type_template_id_6a4a1abe___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TheNavbar.vue?vue&type=template&id=6a4a1abe& */ \"./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe&\");\n/* harmony import */ var _TheNavbar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TheNavbar.vue?vue&type=script&lang=js& */ \"./src/modules/common/layouts/components/TheNavbar.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _TheNavbar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _TheNavbar_vue_vue_type_template_id_6a4a1abe___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _TheNavbar_vue_vue_type_template_id_6a4a1abe___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('6a4a1abe')) {\n      api.createRecord('6a4a1abe', component.options)\n    } else {\n      api.reload('6a4a1abe', component.options)\n    }\n    module.hot.accept(/*! ./TheNavbar.vue?vue&type=template&id=6a4a1abe& */ \"./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _TheNavbar_vue_vue_type_template_id_6a4a1abe___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TheNavbar.vue?vue&type=template&id=6a4a1abe& */ \"./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe&\");\n(function () {\n      api.rerender('6a4a1abe', {\n        render: _TheNavbar_vue_vue_type_template_id_6a4a1abe___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _TheNavbar_vue_vue_type_template_id_6a4a1abe___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/layouts/components/TheNavbar.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZU5hdmJhci52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZU5hdmJhci52dWU/YmI3OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1RoZU5hdmJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmE0YTFhYmUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGhlTmF2YmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGhlTmF2YmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNmE0YTFhYmUnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNmE0YTFhYmUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNmE0YTFhYmUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RoZU5hdmJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmE0YTFhYmUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNmE0YTFhYmUnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvVGhlTmF2YmFyLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/TheNavbar.vue\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/TheNavbar.vue?vue&type=script&lang=js&":
/*!**************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/TheNavbar.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheNavbar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./TheNavbar.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheNavbar.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheNavbar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZU5hdmJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy9UaGVOYXZiYXIudnVlP2E2ODgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9UaGVOYXZiYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1RoZU5hdmJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/TheNavbar.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe&":
/*!********************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe& ***!
  \********************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheNavbar_vue_vue_type_template_id_6a4a1abe___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./TheNavbar.vue?vue&type=template&id=6a4a1abe& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheNavbar_vue_vue_type_template_id_6a4a1abe___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TheNavbar_vue_vue_type_template_id_6a4a1abe___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL1RoZU5hdmJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmE0YTFhYmUmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy9UaGVOYXZiYXIudnVlPzU5YWMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1RoZU5hdmJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmE0YTFhYmUmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/TheNavbar.vue?vue&type=template&id=6a4a1abe&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/navbarSearchAndPinList.js":
/*!*************************************************************************!*\
  !*** ./src/modules/common/layouts/components/navbarSearchAndPinList.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  actionIcon: 'StarIcon',\n  highlightColor: 'warning',\n  data: [// DASHBOARDS\n  {\n    index: 0,\n    label: 'Analytics Dashboard',\n    url: '/dashboard/analytics',\n    labelIcon: 'HomeIcon',\n    highlightAction: false\n  }, {\n    index: 1,\n    label: 'eCommerce Dashboard',\n    url: '/dashboard/ecommerce',\n    labelIcon: 'HomeIcon',\n    highlightAction: false\n  }, // APPS\n  {\n    index: 2,\n    label: 'Todo',\n    url: '/apps/todo',\n    labelIcon: 'CheckSquareIcon',\n    highlightAction: true\n  }, {\n    index: 3,\n    label: 'Chat',\n    url: '/apps/chat',\n    labelIcon: 'MessageSquareIcon',\n    highlightAction: true\n  }, {\n    index: 4,\n    label: 'Email',\n    url: '/apps/email',\n    labelIcon: 'MailIcon',\n    highlightAction: true\n  }, {\n    index: 5,\n    label: 'Calendar',\n    url: '/apps/calendar/vue-simple-calendar',\n    labelIcon: 'CalendarIcon',\n    highlightAction: true\n  }, {\n    index: 6,\n    label: 'E-Commerce Shop',\n    url: '/apps/eCommerce/shop',\n    labelIcon: 'ShoppingCartIcon',\n    highlightAction: true\n  }, {\n    index: 7,\n    label: 'E-Commerce Wish List',\n    url: '/apps/eCommerce/wish-list',\n    labelIcon: 'HeartIcon',\n    highlightAction: false\n  }, {\n    index: 8,\n    label: 'E-Commerce Checkout',\n    url: '/apps/eCommerce/checkout',\n    labelIcon: 'CreditCardIcon',\n    highlightAction: false\n  }, // UI ELEMENTS\n  {\n    index: 9,\n    label: 'Data List - List View',\n    url: '/ui-elements/data-list/list-view',\n    labelIcon: 'ListIcon',\n    highlightAction: false\n  }, {\n    index: 10,\n    label: 'Data List - Thumb View',\n    url: '/ui-elements/data-list/thumb-view',\n    labelIcon: 'ImageIcon',\n    highlightAction: false\n  }, {\n    index: 11,\n    label: 'Vuesax Grid',\n    url: '/ui-elements/grid/vuesax',\n    labelIcon: 'LayoutIcon',\n    highlightAction: false\n  }, {\n    index: 12,\n    label: 'Tailwind Grid',\n    url: '/ui-elements/grid/tailwind',\n    labelIcon: 'LayoutIcon',\n    highlightAction: false\n  }, {\n    index: 13,\n    label: 'Colors',\n    url: '/ui-elements/colors',\n    labelIcon: 'DropletIcon',\n    highlightAction: false\n  }, {\n    index: 14,\n    label: 'Basic Cards',\n    url: '/ui-elements/card/basic',\n    labelIcon: 'CreditCardIcon',\n    highlightAction: false\n  }, {\n    index: 15,\n    label: 'Statistics Card',\n    url: '/ui-elements/card/statistics',\n    labelIcon: 'CreditCardIcon',\n    highlightAction: false\n  }, {\n    index: 16,\n    label: 'Analytics Cards',\n    url: '/ui-elements/card/analytics',\n    labelIcon: 'CreditCardIcon',\n    highlightAction: false\n  }, {\n    index: 17,\n    label: 'Card Actions',\n    url: '/ui-elements/card/card-actions',\n    labelIcon: 'CreditCardIcon',\n    highlightAction: false\n  }, {\n    index: 18,\n    label: 'Card Colors',\n    url: '/ui-elements/card/card-colors',\n    labelIcon: 'FeatherIcon',\n    highlightAction: false\n  }, {\n    index: 19,\n    label: 'Table',\n    url: '/ui-elements/table',\n    labelIcon: 'GridIcon',\n    highlightAction: false\n  }, {\n    index: 20,\n    label: 'agGrid Table',\n    url: '/ui-elements/ag-grid-table',\n    labelIcon: 'GridIcon',\n    highlightAction: false\n  }, {\n    index: 21,\n    label: 'Alert Component',\n    url: '/components/alert',\n    labelIcon: 'AlertTriangleIcon',\n    highlightAction: false\n  }, {\n    index: 22,\n    label: 'Avatar Component',\n    url: '/components/avatar',\n    labelIcon: 'UserIcon',\n    highlightAction: false\n  }, {\n    index: 23,\n    label: 'Breadcrumb Component',\n    url: '/components/breadcrumb',\n    labelIcon: 'NavigationIcon',\n    highlightAction: false\n  }, {\n    index: 24,\n    label: 'Button Component',\n    url: '/components/button',\n    labelIcon: 'BoldIcon',\n    highlightAction: false\n  }, {\n    index: 25,\n    label: 'Button Group Component',\n    url: '/components/button-group',\n    labelIcon: 'BoldIcon',\n    highlightAction: false\n  }, {\n    index: 26,\n    label: 'Chip Component',\n    url: '/components/chip',\n    labelIcon: 'TagIcon',\n    highlightAction: false\n  }, {\n    index: 27,\n    label: 'Collapse Component',\n    url: '/components/collapse',\n    labelIcon: 'PlusIcon',\n    highlightAction: false\n  }, {\n    index: 28,\n    label: 'Dialogs Component',\n    url: '/components/dialogs',\n    labelIcon: 'CopyIcon',\n    highlightAction: false\n  }, {\n    index: 29,\n    label: 'Divider Component',\n    url: '/components/divider',\n    labelIcon: 'MinusIcon',\n    highlightAction: false\n  }, {\n    index: 30,\n    label: 'DropDown Component',\n    url: '/components/dropdown',\n    labelIcon: 'MoreHorizontalIcon',\n    highlightAction: false\n  }, {\n    index: 31,\n    label: 'List Component',\n    url: '/components/list',\n    labelIcon: 'ListIcon',\n    highlightAction: false\n  }, {\n    index: 32,\n    label: 'Loading Component',\n    url: '/components/loading',\n    labelIcon: 'LoaderIcon',\n    highlightAction: false\n  }, {\n    index: 33,\n    label: 'Navbar Component',\n    url: '/components/navbar',\n    labelIcon: 'CreditCardIcon',\n    highlightAction: false\n  }, {\n    index: 34,\n    label: 'Notifications Component',\n    url: '/components/notifications',\n    labelIcon: 'BellIcon',\n    highlightAction: false\n  }, {\n    index: 35,\n    label: 'Pagination Component',\n    url: '/components/pagination',\n    labelIcon: 'ChevronsRightIcon',\n    highlightAction: false\n  }, {\n    index: 36,\n    label: 'Popup Component',\n    url: '/components/popup',\n    labelIcon: 'CopyIcon',\n    highlightAction: false\n  }, {\n    index: 37,\n    label: 'Progress Component',\n    url: '/components/progress',\n    labelIcon: 'SlidersIcon',\n    highlightAction: false\n  }, {\n    index: 38,\n    label: 'Sidebar Component',\n    url: '/components/sidebar',\n    labelIcon: 'SidebarIcon',\n    highlightAction: false\n  }, {\n    index: 39,\n    label: 'Slider Component',\n    url: '/components/slider',\n    labelIcon: 'SlidersIcon',\n    highlightAction: false\n  }, {\n    index: 40,\n    label: 'Tabs Component',\n    url: '/components/tabs',\n    labelIcon: 'CreditCardIcon',\n    highlightAction: false\n  }, {\n    index: 41,\n    label: 'Tooltip Component',\n    url: '/components/tooltip',\n    labelIcon: 'AlertCircleIcon',\n    highlightAction: false\n  }, {\n    index: 42,\n    label: 'Upload Component',\n    url: '/components/upload',\n    labelIcon: 'UploadIcon',\n    highlightAction: false\n  }, // FORMS\n  {\n    index: 43,\n    label: 'Select Form Element',\n    url: '/forms/form-elements/select',\n    labelIcon: 'CheckIcon',\n    highlightAction: false\n  }, {\n    index: 44,\n    label: 'Switch Form Element',\n    url: '/forms/form-elements/switch',\n    labelIcon: 'ToggleLeftIcon',\n    highlightAction: false\n  }, {\n    index: 45,\n    label: 'Checkbox Form Element',\n    url: '/forms/form-elements/checkbox',\n    labelIcon: 'CheckSquareIcon',\n    highlightAction: false\n  }, {\n    index: 46,\n    label: 'Radio Form Element',\n    url: '/forms/form-elements/radio',\n    labelIcon: 'DiscIcon',\n    highlightAction: false\n  }, {\n    index: 47,\n    label: 'Input Form Element',\n    url: '/forms/form-elements/input',\n    labelIcon: 'TypeIcon',\n    highlightAction: false\n  }, {\n    index: 48,\n    label: 'Number Input Form Element',\n    url: '/forms/form-elements/number-input',\n    labelIcon: 'TypeIcon',\n    highlightAction: false\n  }, {\n    index: 49,\n    label: 'Textarea Form Element',\n    url: '/forms/form-elements/textarea',\n    labelIcon: 'TypeIcon',\n    highlightAction: false\n  }, {\n    index: 50,\n    label: 'Form Layouts',\n    url: '/forms/form-layouts',\n    labelIcon: 'LayoutIcon',\n    highlightAction: false\n  }, {\n    index: 51,\n    label: 'Form Wizard',\n    url: '/forms/form-wizard',\n    labelIcon: 'GitCommitIcon',\n    highlightAction: false\n  }, {\n    index: 52,\n    label: 'Form Validation',\n    url: '/forms/form-validation',\n    labelIcon: 'CheckSquareIcon',\n    highlightAction: false\n  }, {\n    index: 53,\n    label: 'Form Input Group',\n    url: '/forms/form-input-group',\n    labelIcon: 'MenuIcon',\n    highlightAction: false\n  }, // PAGES\n  {\n    index: 54,\n    label: 'Login Page',\n    url: '/pages/login',\n    labelIcon: 'LockIcon',\n    highlightAction: false\n  }, {\n    index: 55,\n    label: 'Register Page',\n    url: '/pages/register',\n    labelIcon: 'UserPlusIcon',\n    highlightAction: false\n  }, {\n    index: 56,\n    label: 'Forgot Password Page',\n    url: '/pages/forgot-password',\n    labelIcon: 'HelpCircleIcon',\n    highlightAction: false\n  }, {\n    index: 57,\n    label: 'Reset Password Page',\n    url: '/pages/reset-password',\n    labelIcon: 'UnlockIcon',\n    highlightAction: false\n  }, {\n    index: 58,\n    label: 'Lock Screen Page',\n    url: '/pages/lock-screen',\n    labelIcon: 'LockIcon',\n    highlightAction: false\n  }, {\n    index: 59,\n    label: 'Coming Soon Page',\n    url: '/pages/comingsoon',\n    labelIcon: 'ClockIcon',\n    highlightAction: false\n  }, {\n    index: 60,\n    label: '404 Page',\n    url: '/pages/error-404',\n    labelIcon: 'MonitorIcon',\n    highlightAction: false\n  }, {\n    index: 61,\n    label: '500 Page',\n    url: '/pages/error-500',\n    labelIcon: 'MonitorIcon',\n    highlightAction: false\n  }, {\n    index: 62,\n    label: 'Not Authorized Page',\n    url: '/pages/not-authorized',\n    labelIcon: 'XCircleIcon',\n    highlightAction: false\n  }, {\n    index: 63,\n    label: 'Maintenance Page',\n    url: '/pages/maintenance',\n    labelIcon: 'MonitorIcon',\n    highlightAction: false\n  }, {\n    index: 64,\n    label: 'Profile Page',\n    url: '/pages/profile',\n    labelIcon: 'UserIcon',\n    highlightAction: false\n  }, {\n    index: 65,\n    label: 'FAQ Page',\n    url: '/pages/faq',\n    labelIcon: 'HelpCircleIcon',\n    highlightAction: false\n  }, {\n    index: 66,\n    label: 'KnowledgeBase Page',\n    url: '/pages/knowledge-base',\n    labelIcon: 'BookIcon',\n    highlightAction: false\n  }, {\n    index: 67,\n    label: 'Search Page',\n    url: '/pages/search',\n    labelIcon: 'SearchIcon',\n    highlightAction: false\n  }, {\n    index: 68,\n    label: 'Invoice Page',\n    url: '/pages/invoice',\n    labelIcon: 'FileIcon',\n    highlightAction: false\n  }, // CHARTS & MAPS\n  {\n    index: 69,\n    label: 'Apex Charts',\n    url: '/charts-and-maps/charts/apex-charts',\n    labelIcon: 'PieChartIcon',\n    highlightAction: false\n  }, {\n    index: 70,\n    label: 'chartjs',\n    url: '/charts-and-maps/charts/chartjs',\n    labelIcon: 'PieChartIcon',\n    highlightAction: false\n  }, {\n    index: 71,\n    label: 'echarts',\n    url: '/charts-and-maps/charts/echarts',\n    labelIcon: 'PieChartIcon',\n    highlightAction: false\n  }, {\n    index: 72,\n    label: 'Google Map',\n    url: '/charts-and-maps/maps/google-map',\n    labelIcon: 'MapIcon',\n    highlightAction: false\n  }, // EXTENSIONS\n  {\n    index: 73,\n    label: 'Select Extension',\n    url: '/extensions/select',\n    labelIcon: 'CheckIcon',\n    highlightAction: false\n  }, {\n    index: 74,\n    label: 'Quill Editor',\n    url: '/extensions/quill-editor',\n    labelIcon: 'EditIcon',\n    highlightAction: false\n  }, {\n    index: 75,\n    label: 'Drag & Drop',\n    url: '/extensions/drag-and-drop',\n    labelIcon: 'CopyIcon',\n    highlightAction: false\n  }, {\n    index: 76,\n    label: 'Datepicker',\n    url: '/extensions/datepicker',\n    labelIcon: 'CalendarIcon',\n    highlightAction: false\n  }, {\n    index: 77,\n    label: 'Datetime Picker',\n    url: '/extensions/datetime-picker',\n    labelIcon: 'ClockIcon',\n    highlightAction: false\n  }, {\n    index: 78,\n    label: 'Editor View',\n    url: '/extensions/access-control-editor',\n    labelIcon: 'EditIcon',\n    highlightAction: false\n  }, {\n    index: 79,\n    label: 'Admin View',\n    url: '/extensions/access-control-admin',\n    labelIcon: 'AwardIcon',\n    highlightAction: false\n  }, {\n    index: 80,\n    label: 'I18n',\n    url: '/extensions/i18n',\n    labelIcon: 'GlobeIcon',\n    highlightAction: false\n  }, {\n    index: 81,\n    label: 'Carousel',\n    url: '/extensions/carousel',\n    labelIcon: 'LayersIcon',\n    highlightAction: false\n  }, {\n    index: 82,\n    label: 'Clipboard',\n    url: '/extensions/clipboard',\n    labelIcon: 'CopyIcon',\n    highlightAction: false\n  }, {\n    index: 83,\n    label: 'Context Menu',\n    url: '/extensions/context-menu',\n    labelIcon: 'MoreHorizontalIcon',\n    highlightAction: false\n  }, {\n    index: 84,\n    label: 'Star Rating',\n    url: '/extensions/star-ratings',\n    labelIcon: 'StarIcon',\n    highlightAction: false\n  }, {\n    index: 85,\n    label: 'Autocomplete',\n    url: '/extensions/autocomplete',\n    labelIcon: 'Edit3Icon',\n    highlightAction: false\n  }, {\n    index: 86,\n    label: 'Tree',\n    url: '/extensions/tree',\n    labelIcon: 'GitPullRequestIcon',\n    highlightAction: false\n  }]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL25hdmJhclNlYXJjaEFuZFBpbkxpc3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL25hdmJhclNlYXJjaEFuZFBpbkxpc3QuanM/NjJiZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGFjdGlvbkljb246ICdTdGFySWNvbicsXG4gIGhpZ2hsaWdodENvbG9yOiAnd2FybmluZycsXG4gIGRhdGE6IFtcbiAgICAvLyBEQVNIQk9BUkRTXG4gICAge1xuICAgICAgaW5kZXg6IDAsXG4gICAgICBsYWJlbDogJ0FuYWx5dGljcyBEYXNoYm9hcmQnLFxuICAgICAgdXJsOiAnL2Rhc2hib2FyZC9hbmFseXRpY3MnLFxuICAgICAgbGFiZWxJY29uOiAnSG9tZUljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge1xuICAgICAgaW5kZXg6IDEsXG4gICAgICBsYWJlbDogJ2VDb21tZXJjZSBEYXNoYm9hcmQnLFxuICAgICAgdXJsOiAnL2Rhc2hib2FyZC9lY29tbWVyY2UnLFxuICAgICAgbGFiZWxJY29uOiAnSG9tZUljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG5cbiAgICAvLyBBUFBTXG4gICAge2luZGV4OiAyLCBsYWJlbDogJ1RvZG8nLCB1cmw6ICcvYXBwcy90b2RvJywgbGFiZWxJY29uOiAnQ2hlY2tTcXVhcmVJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiB0cnVlfSxcbiAgICB7aW5kZXg6IDMsIGxhYmVsOiAnQ2hhdCcsIHVybDogJy9hcHBzL2NoYXQnLCBsYWJlbEljb246ICdNZXNzYWdlU3F1YXJlSWNvbicsIGhpZ2hsaWdodEFjdGlvbjogdHJ1ZX0sXG4gICAge2luZGV4OiA0LCBsYWJlbDogJ0VtYWlsJywgdXJsOiAnL2FwcHMvZW1haWwnLCBsYWJlbEljb246ICdNYWlsSWNvbicsIGhpZ2hsaWdodEFjdGlvbjogdHJ1ZX0sXG4gICAge1xuICAgICAgaW5kZXg6IDUsXG4gICAgICBsYWJlbDogJ0NhbGVuZGFyJyxcbiAgICAgIHVybDogJy9hcHBzL2NhbGVuZGFyL3Z1ZS1zaW1wbGUtY2FsZW5kYXInLFxuICAgICAgbGFiZWxJY29uOiAnQ2FsZW5kYXJJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgaW5kZXg6IDYsXG4gICAgICBsYWJlbDogJ0UtQ29tbWVyY2UgU2hvcCcsXG4gICAgICB1cmw6ICcvYXBwcy9lQ29tbWVyY2Uvc2hvcCcsXG4gICAgICBsYWJlbEljb246ICdTaG9wcGluZ0NhcnRJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgaW5kZXg6IDcsXG4gICAgICBsYWJlbDogJ0UtQ29tbWVyY2UgV2lzaCBMaXN0JyxcbiAgICAgIHVybDogJy9hcHBzL2VDb21tZXJjZS93aXNoLWxpc3QnLFxuICAgICAgbGFiZWxJY29uOiAnSGVhcnRJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIGluZGV4OiA4LFxuICAgICAgbGFiZWw6ICdFLUNvbW1lcmNlIENoZWNrb3V0JyxcbiAgICAgIHVybDogJy9hcHBzL2VDb21tZXJjZS9jaGVja291dCcsXG4gICAgICBsYWJlbEljb246ICdDcmVkaXRDYXJkSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcblxuICAgIC8vIFVJIEVMRU1FTlRTXG4gICAge1xuICAgICAgaW5kZXg6IDksXG4gICAgICBsYWJlbDogJ0RhdGEgTGlzdCAtIExpc3QgVmlldycsXG4gICAgICB1cmw6ICcvdWktZWxlbWVudHMvZGF0YS1saXN0L2xpc3QtdmlldycsXG4gICAgICBsYWJlbEljb246ICdMaXN0SWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogMTAsXG4gICAgICBsYWJlbDogJ0RhdGEgTGlzdCAtIFRodW1iIFZpZXcnLFxuICAgICAgdXJsOiAnL3VpLWVsZW1lbnRzL2RhdGEtbGlzdC90aHVtYi12aWV3JyxcbiAgICAgIGxhYmVsSWNvbjogJ0ltYWdlSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7aW5kZXg6IDExLCBsYWJlbDogJ1Z1ZXNheCBHcmlkJywgdXJsOiAnL3VpLWVsZW1lbnRzL2dyaWQvdnVlc2F4JywgbGFiZWxJY29uOiAnTGF5b3V0SWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtcbiAgICAgIGluZGV4OiAxMixcbiAgICAgIGxhYmVsOiAnVGFpbHdpbmQgR3JpZCcsXG4gICAgICB1cmw6ICcvdWktZWxlbWVudHMvZ3JpZC90YWlsd2luZCcsXG4gICAgICBsYWJlbEljb246ICdMYXlvdXRJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtpbmRleDogMTMsIGxhYmVsOiAnQ29sb3JzJywgdXJsOiAnL3VpLWVsZW1lbnRzL2NvbG9ycycsIGxhYmVsSWNvbjogJ0Ryb3BsZXRJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge1xuICAgICAgaW5kZXg6IDE0LFxuICAgICAgbGFiZWw6ICdCYXNpYyBDYXJkcycsXG4gICAgICB1cmw6ICcvdWktZWxlbWVudHMvY2FyZC9iYXNpYycsXG4gICAgICBsYWJlbEljb246ICdDcmVkaXRDYXJkSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogMTUsXG4gICAgICBsYWJlbDogJ1N0YXRpc3RpY3MgQ2FyZCcsXG4gICAgICB1cmw6ICcvdWktZWxlbWVudHMvY2FyZC9zdGF0aXN0aWNzJyxcbiAgICAgIGxhYmVsSWNvbjogJ0NyZWRpdENhcmRJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIGluZGV4OiAxNixcbiAgICAgIGxhYmVsOiAnQW5hbHl0aWNzIENhcmRzJyxcbiAgICAgIHVybDogJy91aS1lbGVtZW50cy9jYXJkL2FuYWx5dGljcycsXG4gICAgICBsYWJlbEljb246ICdDcmVkaXRDYXJkSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogMTcsXG4gICAgICBsYWJlbDogJ0NhcmQgQWN0aW9ucycsXG4gICAgICB1cmw6ICcvdWktZWxlbWVudHMvY2FyZC9jYXJkLWFjdGlvbnMnLFxuICAgICAgbGFiZWxJY29uOiAnQ3JlZGl0Q2FyZEljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge1xuICAgICAgaW5kZXg6IDE4LFxuICAgICAgbGFiZWw6ICdDYXJkIENvbG9ycycsXG4gICAgICB1cmw6ICcvdWktZWxlbWVudHMvY2FyZC9jYXJkLWNvbG9ycycsXG4gICAgICBsYWJlbEljb246ICdGZWF0aGVySWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7aW5kZXg6IDE5LCBsYWJlbDogJ1RhYmxlJywgdXJsOiAnL3VpLWVsZW1lbnRzL3RhYmxlJywgbGFiZWxJY29uOiAnR3JpZEljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7XG4gICAgICBpbmRleDogMjAsXG4gICAgICBsYWJlbDogJ2FnR3JpZCBUYWJsZScsXG4gICAgICB1cmw6ICcvdWktZWxlbWVudHMvYWctZ3JpZC10YWJsZScsXG4gICAgICBsYWJlbEljb246ICdHcmlkSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogMjEsXG4gICAgICBsYWJlbDogJ0FsZXJ0IENvbXBvbmVudCcsXG4gICAgICB1cmw6ICcvY29tcG9uZW50cy9hbGVydCcsXG4gICAgICBsYWJlbEljb246ICdBbGVydFRyaWFuZ2xlSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7aW5kZXg6IDIyLCBsYWJlbDogJ0F2YXRhciBDb21wb25lbnQnLCB1cmw6ICcvY29tcG9uZW50cy9hdmF0YXInLCBsYWJlbEljb246ICdVc2VySWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtcbiAgICAgIGluZGV4OiAyMyxcbiAgICAgIGxhYmVsOiAnQnJlYWRjcnVtYiBDb21wb25lbnQnLFxuICAgICAgdXJsOiAnL2NvbXBvbmVudHMvYnJlYWRjcnVtYicsXG4gICAgICBsYWJlbEljb246ICdOYXZpZ2F0aW9uSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7aW5kZXg6IDI0LCBsYWJlbDogJ0J1dHRvbiBDb21wb25lbnQnLCB1cmw6ICcvY29tcG9uZW50cy9idXR0b24nLCBsYWJlbEljb246ICdCb2xkSWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtcbiAgICAgIGluZGV4OiAyNSxcbiAgICAgIGxhYmVsOiAnQnV0dG9uIEdyb3VwIENvbXBvbmVudCcsXG4gICAgICB1cmw6ICcvY29tcG9uZW50cy9idXR0b24tZ3JvdXAnLFxuICAgICAgbGFiZWxJY29uOiAnQm9sZEljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge2luZGV4OiAyNiwgbGFiZWw6ICdDaGlwIENvbXBvbmVudCcsIHVybDogJy9jb21wb25lbnRzL2NoaXAnLCBsYWJlbEljb246ICdUYWdJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge1xuICAgICAgaW5kZXg6IDI3LFxuICAgICAgbGFiZWw6ICdDb2xsYXBzZSBDb21wb25lbnQnLFxuICAgICAgdXJsOiAnL2NvbXBvbmVudHMvY29sbGFwc2UnLFxuICAgICAgbGFiZWxJY29uOiAnUGx1c0ljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge2luZGV4OiAyOCwgbGFiZWw6ICdEaWFsb2dzIENvbXBvbmVudCcsIHVybDogJy9jb21wb25lbnRzL2RpYWxvZ3MnLCBsYWJlbEljb246ICdDb3B5SWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtpbmRleDogMjksIGxhYmVsOiAnRGl2aWRlciBDb21wb25lbnQnLCB1cmw6ICcvY29tcG9uZW50cy9kaXZpZGVyJywgbGFiZWxJY29uOiAnTWludXNJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge1xuICAgICAgaW5kZXg6IDMwLFxuICAgICAgbGFiZWw6ICdEcm9wRG93biBDb21wb25lbnQnLFxuICAgICAgdXJsOiAnL2NvbXBvbmVudHMvZHJvcGRvd24nLFxuICAgICAgbGFiZWxJY29uOiAnTW9yZUhvcml6b250YWxJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtpbmRleDogMzEsIGxhYmVsOiAnTGlzdCBDb21wb25lbnQnLCB1cmw6ICcvY29tcG9uZW50cy9saXN0JywgbGFiZWxJY29uOiAnTGlzdEljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7XG4gICAgICBpbmRleDogMzIsXG4gICAgICBsYWJlbDogJ0xvYWRpbmcgQ29tcG9uZW50JyxcbiAgICAgIHVybDogJy9jb21wb25lbnRzL2xvYWRpbmcnLFxuICAgICAgbGFiZWxJY29uOiAnTG9hZGVySWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogMzMsXG4gICAgICBsYWJlbDogJ05hdmJhciBDb21wb25lbnQnLFxuICAgICAgdXJsOiAnL2NvbXBvbmVudHMvbmF2YmFyJyxcbiAgICAgIGxhYmVsSWNvbjogJ0NyZWRpdENhcmRJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIGluZGV4OiAzNCxcbiAgICAgIGxhYmVsOiAnTm90aWZpY2F0aW9ucyBDb21wb25lbnQnLFxuICAgICAgdXJsOiAnL2NvbXBvbmVudHMvbm90aWZpY2F0aW9ucycsXG4gICAgICBsYWJlbEljb246ICdCZWxsSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogMzUsXG4gICAgICBsYWJlbDogJ1BhZ2luYXRpb24gQ29tcG9uZW50JyxcbiAgICAgIHVybDogJy9jb21wb25lbnRzL3BhZ2luYXRpb24nLFxuICAgICAgbGFiZWxJY29uOiAnQ2hldnJvbnNSaWdodEljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge2luZGV4OiAzNiwgbGFiZWw6ICdQb3B1cCBDb21wb25lbnQnLCB1cmw6ICcvY29tcG9uZW50cy9wb3B1cCcsIGxhYmVsSWNvbjogJ0NvcHlJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge1xuICAgICAgaW5kZXg6IDM3LFxuICAgICAgbGFiZWw6ICdQcm9ncmVzcyBDb21wb25lbnQnLFxuICAgICAgdXJsOiAnL2NvbXBvbmVudHMvcHJvZ3Jlc3MnLFxuICAgICAgbGFiZWxJY29uOiAnU2xpZGVyc0ljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge1xuICAgICAgaW5kZXg6IDM4LFxuICAgICAgbGFiZWw6ICdTaWRlYmFyIENvbXBvbmVudCcsXG4gICAgICB1cmw6ICcvY29tcG9uZW50cy9zaWRlYmFyJyxcbiAgICAgIGxhYmVsSWNvbjogJ1NpZGViYXJJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtpbmRleDogMzksIGxhYmVsOiAnU2xpZGVyIENvbXBvbmVudCcsIHVybDogJy9jb21wb25lbnRzL3NsaWRlcicsIGxhYmVsSWNvbjogJ1NsaWRlcnNJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge2luZGV4OiA0MCwgbGFiZWw6ICdUYWJzIENvbXBvbmVudCcsIHVybDogJy9jb21wb25lbnRzL3RhYnMnLCBsYWJlbEljb246ICdDcmVkaXRDYXJkSWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtcbiAgICAgIGluZGV4OiA0MSxcbiAgICAgIGxhYmVsOiAnVG9vbHRpcCBDb21wb25lbnQnLFxuICAgICAgdXJsOiAnL2NvbXBvbmVudHMvdG9vbHRpcCcsXG4gICAgICBsYWJlbEljb246ICdBbGVydENpcmNsZUljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge2luZGV4OiA0MiwgbGFiZWw6ICdVcGxvYWQgQ29tcG9uZW50JywgdXJsOiAnL2NvbXBvbmVudHMvdXBsb2FkJywgbGFiZWxJY29uOiAnVXBsb2FkSWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuXG4gICAgLy8gRk9STVNcbiAgICB7XG4gICAgICBpbmRleDogNDMsXG4gICAgICBsYWJlbDogJ1NlbGVjdCBGb3JtIEVsZW1lbnQnLFxuICAgICAgdXJsOiAnL2Zvcm1zL2Zvcm0tZWxlbWVudHMvc2VsZWN0JyxcbiAgICAgIGxhYmVsSWNvbjogJ0NoZWNrSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogNDQsXG4gICAgICBsYWJlbDogJ1N3aXRjaCBGb3JtIEVsZW1lbnQnLFxuICAgICAgdXJsOiAnL2Zvcm1zL2Zvcm0tZWxlbWVudHMvc3dpdGNoJyxcbiAgICAgIGxhYmVsSWNvbjogJ1RvZ2dsZUxlZnRJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIGluZGV4OiA0NSxcbiAgICAgIGxhYmVsOiAnQ2hlY2tib3ggRm9ybSBFbGVtZW50JyxcbiAgICAgIHVybDogJy9mb3Jtcy9mb3JtLWVsZW1lbnRzL2NoZWNrYm94JyxcbiAgICAgIGxhYmVsSWNvbjogJ0NoZWNrU3F1YXJlSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogNDYsXG4gICAgICBsYWJlbDogJ1JhZGlvIEZvcm0gRWxlbWVudCcsXG4gICAgICB1cmw6ICcvZm9ybXMvZm9ybS1lbGVtZW50cy9yYWRpbycsXG4gICAgICBsYWJlbEljb246ICdEaXNjSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogNDcsXG4gICAgICBsYWJlbDogJ0lucHV0IEZvcm0gRWxlbWVudCcsXG4gICAgICB1cmw6ICcvZm9ybXMvZm9ybS1lbGVtZW50cy9pbnB1dCcsXG4gICAgICBsYWJlbEljb246ICdUeXBlSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogNDgsXG4gICAgICBsYWJlbDogJ051bWJlciBJbnB1dCBGb3JtIEVsZW1lbnQnLFxuICAgICAgdXJsOiAnL2Zvcm1zL2Zvcm0tZWxlbWVudHMvbnVtYmVyLWlucHV0JyxcbiAgICAgIGxhYmVsSWNvbjogJ1R5cGVJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIGluZGV4OiA0OSxcbiAgICAgIGxhYmVsOiAnVGV4dGFyZWEgRm9ybSBFbGVtZW50JyxcbiAgICAgIHVybDogJy9mb3Jtcy9mb3JtLWVsZW1lbnRzL3RleHRhcmVhJyxcbiAgICAgIGxhYmVsSWNvbjogJ1R5cGVJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtpbmRleDogNTAsIGxhYmVsOiAnRm9ybSBMYXlvdXRzJywgdXJsOiAnL2Zvcm1zL2Zvcm0tbGF5b3V0cycsIGxhYmVsSWNvbjogJ0xheW91dEljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7aW5kZXg6IDUxLCBsYWJlbDogJ0Zvcm0gV2l6YXJkJywgdXJsOiAnL2Zvcm1zL2Zvcm0td2l6YXJkJywgbGFiZWxJY29uOiAnR2l0Q29tbWl0SWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtcbiAgICAgIGluZGV4OiA1MixcbiAgICAgIGxhYmVsOiAnRm9ybSBWYWxpZGF0aW9uJyxcbiAgICAgIHVybDogJy9mb3Jtcy9mb3JtLXZhbGlkYXRpb24nLFxuICAgICAgbGFiZWxJY29uOiAnQ2hlY2tTcXVhcmVJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIGluZGV4OiA1MyxcbiAgICAgIGxhYmVsOiAnRm9ybSBJbnB1dCBHcm91cCcsXG4gICAgICB1cmw6ICcvZm9ybXMvZm9ybS1pbnB1dC1ncm91cCcsXG4gICAgICBsYWJlbEljb246ICdNZW51SWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcblxuICAgIC8vIFBBR0VTXG4gICAge2luZGV4OiA1NCwgbGFiZWw6ICdMb2dpbiBQYWdlJywgdXJsOiAnL3BhZ2VzL2xvZ2luJywgbGFiZWxJY29uOiAnTG9ja0ljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7aW5kZXg6IDU1LCBsYWJlbDogJ1JlZ2lzdGVyIFBhZ2UnLCB1cmw6ICcvcGFnZXMvcmVnaXN0ZXInLCBsYWJlbEljb246ICdVc2VyUGx1c0ljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7XG4gICAgICBpbmRleDogNTYsXG4gICAgICBsYWJlbDogJ0ZvcmdvdCBQYXNzd29yZCBQYWdlJyxcbiAgICAgIHVybDogJy9wYWdlcy9mb3Jnb3QtcGFzc3dvcmQnLFxuICAgICAgbGFiZWxJY29uOiAnSGVscENpcmNsZUljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge1xuICAgICAgaW5kZXg6IDU3LFxuICAgICAgbGFiZWw6ICdSZXNldCBQYXNzd29yZCBQYWdlJyxcbiAgICAgIHVybDogJy9wYWdlcy9yZXNldC1wYXNzd29yZCcsXG4gICAgICBsYWJlbEljb246ICdVbmxvY2tJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtpbmRleDogNTgsIGxhYmVsOiAnTG9jayBTY3JlZW4gUGFnZScsIHVybDogJy9wYWdlcy9sb2NrLXNjcmVlbicsIGxhYmVsSWNvbjogJ0xvY2tJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge2luZGV4OiA1OSwgbGFiZWw6ICdDb21pbmcgU29vbiBQYWdlJywgdXJsOiAnL3BhZ2VzL2NvbWluZ3Nvb24nLCBsYWJlbEljb246ICdDbG9ja0ljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7aW5kZXg6IDYwLCBsYWJlbDogJzQwNCBQYWdlJywgdXJsOiAnL3BhZ2VzL2Vycm9yLTQwNCcsIGxhYmVsSWNvbjogJ01vbml0b3JJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge2luZGV4OiA2MSwgbGFiZWw6ICc1MDAgUGFnZScsIHVybDogJy9wYWdlcy9lcnJvci01MDAnLCBsYWJlbEljb246ICdNb25pdG9ySWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtcbiAgICAgIGluZGV4OiA2MixcbiAgICAgIGxhYmVsOiAnTm90IEF1dGhvcml6ZWQgUGFnZScsXG4gICAgICB1cmw6ICcvcGFnZXMvbm90LWF1dGhvcml6ZWQnLFxuICAgICAgbGFiZWxJY29uOiAnWENpcmNsZUljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge2luZGV4OiA2MywgbGFiZWw6ICdNYWludGVuYW5jZSBQYWdlJywgdXJsOiAnL3BhZ2VzL21haW50ZW5hbmNlJywgbGFiZWxJY29uOiAnTW9uaXRvckljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7aW5kZXg6IDY0LCBsYWJlbDogJ1Byb2ZpbGUgUGFnZScsIHVybDogJy9wYWdlcy9wcm9maWxlJywgbGFiZWxJY29uOiAnVXNlckljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7aW5kZXg6IDY1LCBsYWJlbDogJ0ZBUSBQYWdlJywgdXJsOiAnL3BhZ2VzL2ZhcScsIGxhYmVsSWNvbjogJ0hlbHBDaXJjbGVJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge1xuICAgICAgaW5kZXg6IDY2LFxuICAgICAgbGFiZWw6ICdLbm93bGVkZ2VCYXNlIFBhZ2UnLFxuICAgICAgdXJsOiAnL3BhZ2VzL2tub3dsZWRnZS1iYXNlJyxcbiAgICAgIGxhYmVsSWNvbjogJ0Jvb2tJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtpbmRleDogNjcsIGxhYmVsOiAnU2VhcmNoIFBhZ2UnLCB1cmw6ICcvcGFnZXMvc2VhcmNoJywgbGFiZWxJY29uOiAnU2VhcmNoSWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtpbmRleDogNjgsIGxhYmVsOiAnSW52b2ljZSBQYWdlJywgdXJsOiAnL3BhZ2VzL2ludm9pY2UnLCBsYWJlbEljb246ICdGaWxlSWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuXG4gICAgLy8gQ0hBUlRTICYgTUFQU1xuICAgIHtcbiAgICAgIGluZGV4OiA2OSxcbiAgICAgIGxhYmVsOiAnQXBleCBDaGFydHMnLFxuICAgICAgdXJsOiAnL2NoYXJ0cy1hbmQtbWFwcy9jaGFydHMvYXBleC1jaGFydHMnLFxuICAgICAgbGFiZWxJY29uOiAnUGllQ2hhcnRJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIGluZGV4OiA3MCxcbiAgICAgIGxhYmVsOiAnY2hhcnRqcycsXG4gICAgICB1cmw6ICcvY2hhcnRzLWFuZC1tYXBzL2NoYXJ0cy9jaGFydGpzJyxcbiAgICAgIGxhYmVsSWNvbjogJ1BpZUNoYXJ0SWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogNzEsXG4gICAgICBsYWJlbDogJ2VjaGFydHMnLFxuICAgICAgdXJsOiAnL2NoYXJ0cy1hbmQtbWFwcy9jaGFydHMvZWNoYXJ0cycsXG4gICAgICBsYWJlbEljb246ICdQaWVDaGFydEljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge1xuICAgICAgaW5kZXg6IDcyLFxuICAgICAgbGFiZWw6ICdHb29nbGUgTWFwJyxcbiAgICAgIHVybDogJy9jaGFydHMtYW5kLW1hcHMvbWFwcy9nb29nbGUtbWFwJyxcbiAgICAgIGxhYmVsSWNvbjogJ01hcEljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG5cbiAgICAvLyBFWFRFTlNJT05TXG4gICAge2luZGV4OiA3MywgbGFiZWw6ICdTZWxlY3QgRXh0ZW5zaW9uJywgdXJsOiAnL2V4dGVuc2lvbnMvc2VsZWN0JywgbGFiZWxJY29uOiAnQ2hlY2tJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge2luZGV4OiA3NCwgbGFiZWw6ICdRdWlsbCBFZGl0b3InLCB1cmw6ICcvZXh0ZW5zaW9ucy9xdWlsbC1lZGl0b3InLCBsYWJlbEljb246ICdFZGl0SWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtpbmRleDogNzUsIGxhYmVsOiAnRHJhZyAmIERyb3AnLCB1cmw6ICcvZXh0ZW5zaW9ucy9kcmFnLWFuZC1kcm9wJywgbGFiZWxJY29uOiAnQ29weUljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7aW5kZXg6IDc2LCBsYWJlbDogJ0RhdGVwaWNrZXInLCB1cmw6ICcvZXh0ZW5zaW9ucy9kYXRlcGlja2VyJywgbGFiZWxJY29uOiAnQ2FsZW5kYXJJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge1xuICAgICAgaW5kZXg6IDc3LFxuICAgICAgbGFiZWw6ICdEYXRldGltZSBQaWNrZXInLFxuICAgICAgdXJsOiAnL2V4dGVuc2lvbnMvZGF0ZXRpbWUtcGlja2VyJyxcbiAgICAgIGxhYmVsSWNvbjogJ0Nsb2NrSWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogNzgsXG4gICAgICBsYWJlbDogJ0VkaXRvciBWaWV3JyxcbiAgICAgIHVybDogJy9leHRlbnNpb25zL2FjY2Vzcy1jb250cm9sLWVkaXRvcicsXG4gICAgICBsYWJlbEljb246ICdFZGl0SWNvbicsXG4gICAgICBoaWdobGlnaHRBY3Rpb246IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBpbmRleDogNzksXG4gICAgICBsYWJlbDogJ0FkbWluIFZpZXcnLFxuICAgICAgdXJsOiAnL2V4dGVuc2lvbnMvYWNjZXNzLWNvbnRyb2wtYWRtaW4nLFxuICAgICAgbGFiZWxJY29uOiAnQXdhcmRJY29uJyxcbiAgICAgIGhpZ2hsaWdodEFjdGlvbjogZmFsc2VcbiAgICB9LFxuICAgIHtpbmRleDogODAsIGxhYmVsOiAnSTE4bicsIHVybDogJy9leHRlbnNpb25zL2kxOG4nLCBsYWJlbEljb246ICdHbG9iZUljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7aW5kZXg6IDgxLCBsYWJlbDogJ0Nhcm91c2VsJywgdXJsOiAnL2V4dGVuc2lvbnMvY2Fyb3VzZWwnLCBsYWJlbEljb246ICdMYXllcnNJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge2luZGV4OiA4MiwgbGFiZWw6ICdDbGlwYm9hcmQnLCB1cmw6ICcvZXh0ZW5zaW9ucy9jbGlwYm9hcmQnLCBsYWJlbEljb246ICdDb3B5SWNvbicsIGhpZ2hsaWdodEFjdGlvbjogZmFsc2V9LFxuICAgIHtcbiAgICAgIGluZGV4OiA4MyxcbiAgICAgIGxhYmVsOiAnQ29udGV4dCBNZW51JyxcbiAgICAgIHVybDogJy9leHRlbnNpb25zL2NvbnRleHQtbWVudScsXG4gICAgICBsYWJlbEljb246ICdNb3JlSG9yaXpvbnRhbEljb24nLFxuICAgICAgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAge2luZGV4OiA4NCwgbGFiZWw6ICdTdGFyIFJhdGluZycsIHVybDogJy9leHRlbnNpb25zL3N0YXItcmF0aW5ncycsIGxhYmVsSWNvbjogJ1N0YXJJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gICAge2luZGV4OiA4NSwgbGFiZWw6ICdBdXRvY29tcGxldGUnLCB1cmw6ICcvZXh0ZW5zaW9ucy9hdXRvY29tcGxldGUnLCBsYWJlbEljb246ICdFZGl0M0ljb24nLCBoaWdobGlnaHRBY3Rpb246IGZhbHNlfSxcbiAgICB7aW5kZXg6IDg2LCBsYWJlbDogJ1RyZWUnLCB1cmw6ICcvZXh0ZW5zaW9ucy90cmVlJywgbGFiZWxJY29uOiAnR2l0UHVsbFJlcXVlc3RJY29uJywgaGlnaGxpZ2h0QWN0aW9uOiBmYWxzZX0sXG4gIF1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBU0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBU0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdllBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/navbarSearchAndPinList.js\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue":
/*!************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VxSidebar_vue_vue_type_template_id_a45878a8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxSidebar.vue?vue&type=template&id=a45878a8& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8&\");\n/* harmony import */ var _VxSidebar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VxSidebar.vue?vue&type=script&lang=js& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _VxSidebar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VxSidebar.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _VxSidebar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _VxSidebar_vue_vue_type_template_id_a45878a8___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _VxSidebar_vue_vue_type_template_id_a45878a8___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('a45878a8')) {\n      api.createRecord('a45878a8', component.options)\n    } else {\n      api.reload('a45878a8', component.options)\n    }\n    module.hot.accept(/*! ./VxSidebar.vue?vue&type=template&id=a45878a8& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _VxSidebar_vue_vue_type_template_id_a45878a8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxSidebar.vue?vue&type=template&id=a45878a8& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8&\");\n(function () {\n      api.rerender('a45878a8', {\n        render: _VxSidebar_vue_vue_type_template_id_a45878a8___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _VxSidebar_vue_vue_type_template_id_a45878a8___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXIudnVlP2QzMTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9WeFNpZGViYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE0NTg3OGE4JlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Z4U2lkZWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Z4U2lkZWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vVnhTaWRlYmFyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnYTQ1ODc4YTgnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnYTQ1ODc4YTgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnYTQ1ODc4YTgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Z4U2lkZWJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTQ1ODc4YTgmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignYTQ1ODc4YTgnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXIudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=script&lang=js& ***!
  \*************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/babel-loader/lib!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebar.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT8xNDI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhTaWRlYmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFNpZGViYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&":
/*!**********************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss& ***!
  \**********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebar.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT81ZTdkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhTaWRlYmFyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMCEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFNpZGViYXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8&":
/*!*******************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8& ***!
  \*******************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_template_id_a45878a8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebar.vue?vue&type=template&id=a45878a8& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_template_id_a45878a8___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebar_vue_vue_type_template_id_a45878a8___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hNDU4NzhhOCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyLnZ1ZT9kNjY3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFNpZGViYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE0NTg3OGE4JlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebar.vue?vue&type=template&id=a45878a8&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue":
/*!*****************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VxSidebarGroup_vue_vue_type_template_id_b83a263a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxSidebarGroup.vue?vue&type=template&id=b83a263a& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a&\");\n/* harmony import */ var _VxSidebarGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VxSidebarGroup.vue?vue&type=script&lang=js& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _VxSidebarGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VxSidebarGroup.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _VxSidebarGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _VxSidebarGroup_vue_vue_type_template_id_b83a263a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _VxSidebarGroup_vue_vue_type_template_id_b83a263a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('b83a263a')) {\n      api.createRecord('b83a263a', component.options)\n    } else {\n      api.reload('b83a263a', component.options)\n    }\n    module.hot.accept(/*! ./VxSidebarGroup.vue?vue&type=template&id=b83a263a& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _VxSidebarGroup_vue_vue_type_template_id_b83a263a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxSidebarGroup.vue?vue&type=template&id=b83a263a& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a&\");\n(function () {\n      api.rerender('b83a263a', {\n        render: _VxSidebarGroup_vue_vue_type_template_id_b83a263a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _VxSidebarGroup_vue_vue_type_template_id_b83a263a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyR3JvdXAudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL1Z4U2lkZWJhckdyb3VwLnZ1ZT8yOGE3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI4M2EyNjNhJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Z4U2lkZWJhckdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL1Z4U2lkZWJhckdyb3VwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnYjgzYTI2M2EnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnYjgzYTI2M2EnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnYjgzYTI2M2EnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Z4U2lkZWJhckdyb3VwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iODNhMjYzYSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCdiODNhMjYzYScsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL1Z4U2lkZWJhckdyb3VwLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/babel-loader/lib!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebarGroup.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXJHcm91cC52dWU/ZTM4OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Z4U2lkZWJhckdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFNpZGViYXJHcm91cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&":
/*!***************************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss& ***!
  \***************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebarGroup.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXJHcm91cC52dWU/ZjM1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0wIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Z4U2lkZWJhckdyb3VwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMCEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFNpZGViYXJHcm91cC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a&":
/*!************************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a& ***!
  \************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_template_id_b83a263a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebarGroup.vue?vue&type=template&id=b83a263a& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_template_id_b83a263a___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarGroup_vue_vue_type_template_id_b83a263a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI4M2EyNjNhJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtc2lkZWJhci9WeFNpZGViYXJHcm91cC52dWU/ZGI3MSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhTaWRlYmFyR3JvdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI4M2EyNjNhJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebarGroup.vue?vue&type=template&id=b83a263a&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue":
/*!****************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VxSidebarItem_vue_vue_type_template_id_7c419142___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxSidebarItem.vue?vue&type=template&id=7c419142& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142&\");\n/* harmony import */ var _VxSidebarItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VxSidebarItem.vue?vue&type=script&lang=js& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _VxSidebarItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _VxSidebarItem_vue_vue_type_template_id_7c419142___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _VxSidebarItem_vue_vue_type_template_id_7c419142___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('7c419142')) {\n      api.createRecord('7c419142', component.options)\n    } else {\n      api.reload('7c419142', component.options)\n    }\n    module.hot.accept(/*! ./VxSidebarItem.vue?vue&type=template&id=7c419142& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _VxSidebarItem_vue_vue_type_template_id_7c419142___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxSidebarItem.vue?vue&type=template&id=7c419142& */ \"./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142&\");\n(function () {\n      api.rerender('7c419142', {\n        render: _VxSidebarItem_vue_vue_type_template_id_7c419142___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _VxSidebarItem_vue_vue_type_template_id_7c419142___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFySXRlbS52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFySXRlbS52dWU/NzFmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1Z4U2lkZWJhckl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdjNDE5MTQyJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Z4U2lkZWJhckl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9WeFNpZGViYXJJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnN2M0MTkxNDInKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnN2M0MTkxNDInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnN2M0MTkxNDInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Z4U2lkZWJhckl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdjNDE5MTQyJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzdjNDE5MTQyJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFySXRlbS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/babel-loader/lib!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebarItem.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFySXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL1Z4U2lkZWJhckl0ZW0udnVlPzU4ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFNpZGViYXJJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFNpZGViYXJJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142&":
/*!***********************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142& ***!
  \***********************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarItem_vue_vue_type_template_id_7c419142___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxSidebarItem.vue?vue&type=template&id=7c419142& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarItem_vue_vue_type_template_id_7c419142___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxSidebarItem_vue_vue_type_template_id_7c419142___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvVnhTaWRlYmFySXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2M0MTkxNDImLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL1Z4U2lkZWJhckl0ZW0udnVlP2RjODciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Z4U2lkZWJhckl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdjNDE5MTQyJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/VxSidebarItem.vue?vue&type=template&id=7c419142&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-sidebar/sidebarItems.js":
/*!**************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-sidebar/sidebarItems.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n  url: '/dashboard',\n  name: \"Dashboard\",\n  tagColor: \"warning\",\n  icon: \"HomeIcon\",\n  i18n: \"Dashboard\"\n}, {\n  header: \"Projects\",\n  i18n: \"Projects\"\n}, {\n  url: \"/categories\",\n  name: \"Categories\",\n  slug: \"categories\",\n  icon: \"GridIcon\",\n  i18n: \"Categories\",\n  roles: ['admin']\n}, {\n  url: \"/services\",\n  name: \"Services\",\n  slug: \"services\",\n  icon: \"ServerIcon\",\n  i18n: \"Services\"\n}, {\n  url: \"/projects/list\",\n  name: \"My Projects\",\n  slug: \"projects\",\n  icon: \"BriefcaseIcon\",\n  i18n: \"My Projects\"\n}, {\n  url: \"/tenders\",\n  name: \"Tenders\",\n  slug: \"tenders\",\n  icon: \"BriefcaseIcon\",\n  i18n: \"Tenders\",\n  roles: ['admin']\n}, {\n  header: \"Accounts\",\n  i18n: \"Accounts\",\n  roles: ['admin']\n}, {\n  url: \"/users\",\n  name: \"Users\",\n  slug: \"Users\",\n  icon: \"UserIcon\",\n  i18n: \"Users\",\n  roles: ['admin']\n}, {\n  url: \"/clients\",\n  name: \"Clients\",\n  slug: \"Clients\",\n  icon: \"UsersIcon\",\n  i18n: \"Clients\",\n  roles: ['admin']\n}, {\n  url: \"/clients/confirmations\",\n  name: \"Confirmations\",\n  slug: \"ClientsConfirmation\",\n  icon: \"CheckIcon\",\n  i18n: \"Confirmations\",\n  roles: ['admin'],\n  tagValue: 'clients_to_confirm',\n  tagColor: 'warning'\n}, {\n  header: \"Contacts\",\n  i18n: \"Contacts\"\n}, {\n  url: \"/subscribers/list\",\n  name: \"Insights\",\n  slug: \"newsletter\",\n  icon: \"MailIcon\",\n  i18n: \"Insights\",\n  roles: ['admin']\n}, {\n  url: \"/inbox/messages\",\n  name: \"Inbox\",\n  slug: \"inbox\",\n  icon: \"MailIcon\",\n  i18n: \"Inbox\",\n  roles: ['admin']\n}, {\n  url: \"/chat\",\n  name: \"Chat\",\n  slug: \"chat\",\n  icon: \"MessageSquareIcon\",\n  i18n: \"Chat\",\n  tagValue: 'unread_messages',\n  tagColor: 'warning'\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXNpZGViYXIvc2lkZWJhckl0ZW1zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy92eC1zaWRlYmFyL3NpZGViYXJJdGVtcy5qcz8xYjY2Il0sInNvdXJjZXNDb250ZW50IjpbIlxuXG5leHBvcnQgZGVmYXVsdCBbXG4gICAge1xuICAgICAgICB1cmw6ICcvZGFzaGJvYXJkJyxcbiAgICAgICAgbmFtZTogXCJEYXNoYm9hcmRcIixcbiAgICAgICAgdGFnQ29sb3I6IFwid2FybmluZ1wiLFxuICAgICAgICBpY29uOiBcIkhvbWVJY29uXCIsXG4gICAgICAgIGkxOG46IFwiRGFzaGJvYXJkXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGhlYWRlcjogXCJQcm9qZWN0c1wiLFxuICAgICAgICBpMThuOiBcIlByb2plY3RzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHVybDogXCIvY2F0ZWdvcmllc1wiLFxuICAgICAgICBuYW1lOiBcIkNhdGVnb3JpZXNcIixcbiAgICAgICAgc2x1ZzogXCJjYXRlZ29yaWVzXCIsXG4gICAgICAgIGljb246IFwiR3JpZEljb25cIixcbiAgICAgICAgaTE4bjogXCJDYXRlZ29yaWVzXCIsXG4gICAgICAgIHJvbGVzOiBbJ2FkbWluJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHVybDogXCIvc2VydmljZXNcIixcbiAgICAgICAgbmFtZTogXCJTZXJ2aWNlc1wiLFxuICAgICAgICBzbHVnOiBcInNlcnZpY2VzXCIsXG4gICAgICAgIGljb246IFwiU2VydmVySWNvblwiLFxuICAgICAgICBpMThuOiBcIlNlcnZpY2VzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHVybDogXCIvcHJvamVjdHMvbGlzdFwiLFxuICAgICAgICBuYW1lOiBcIk15IFByb2plY3RzXCIsXG4gICAgICAgIHNsdWc6IFwicHJvamVjdHNcIixcbiAgICAgICAgaWNvbjogXCJCcmllZmNhc2VJY29uXCIsXG4gICAgICAgIGkxOG46IFwiTXkgUHJvamVjdHNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdXJsOiBcIi90ZW5kZXJzXCIsXG4gICAgICAgIG5hbWU6IFwiVGVuZGVyc1wiLFxuICAgICAgICBzbHVnOiBcInRlbmRlcnNcIixcbiAgICAgICAgaWNvbjogXCJCcmllZmNhc2VJY29uXCIsXG4gICAgICAgIGkxOG46IFwiVGVuZGVyc1wiLFxuICAgICAgICByb2xlczogWydhZG1pbiddLFxuICAgIH0sXG4gICAge1xuICAgICAgICBoZWFkZXI6IFwiQWNjb3VudHNcIixcbiAgICAgICAgaTE4bjogXCJBY2NvdW50c1wiLFxuICAgICAgICByb2xlczogWydhZG1pbiddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHVybDogXCIvdXNlcnNcIixcbiAgICAgICAgbmFtZTogXCJVc2Vyc1wiLFxuICAgICAgICBzbHVnOiBcIlVzZXJzXCIsXG4gICAgICAgIGljb246IFwiVXNlckljb25cIixcbiAgICAgICAgaTE4bjogXCJVc2Vyc1wiLFxuICAgICAgICByb2xlczogWydhZG1pbiddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHVybDogXCIvY2xpZW50c1wiLFxuICAgICAgICBuYW1lOiBcIkNsaWVudHNcIixcbiAgICAgICAgc2x1ZzogXCJDbGllbnRzXCIsXG4gICAgICAgIGljb246IFwiVXNlcnNJY29uXCIsXG4gICAgICAgIGkxOG46IFwiQ2xpZW50c1wiLFxuICAgICAgICByb2xlczogWydhZG1pbiddLFxuICAgIH0sXG4gICAge1xuICAgICAgICB1cmw6IFwiL2NsaWVudHMvY29uZmlybWF0aW9uc1wiLFxuICAgICAgICBuYW1lOiBcIkNvbmZpcm1hdGlvbnNcIixcbiAgICAgICAgc2x1ZzogXCJDbGllbnRzQ29uZmlybWF0aW9uXCIsXG4gICAgICAgIGljb246IFwiQ2hlY2tJY29uXCIsXG4gICAgICAgIGkxOG46IFwiQ29uZmlybWF0aW9uc1wiLFxuICAgICAgICByb2xlczogWydhZG1pbiddLFxuICAgICAgICB0YWdWYWx1ZTogJ2NsaWVudHNfdG9fY29uZmlybScsXG4gICAgICAgIHRhZ0NvbG9yOiAnd2FybmluZycsXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGhlYWRlcjogXCJDb250YWN0c1wiLFxuICAgICAgICBpMThuOiBcIkNvbnRhY3RzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHVybDogXCIvc3Vic2NyaWJlcnMvbGlzdFwiLFxuICAgICAgICBuYW1lOiBcIkluc2lnaHRzXCIsXG4gICAgICAgIHNsdWc6IFwibmV3c2xldHRlclwiLFxuICAgICAgICBpY29uOiBcIk1haWxJY29uXCIsXG4gICAgICAgIGkxOG46IFwiSW5zaWdodHNcIixcbiAgICAgICAgcm9sZXM6IFsnYWRtaW4nXVxuICAgIH0sXG4gICAge1xuICAgICAgICB1cmw6IFwiL2luYm94L21lc3NhZ2VzXCIsXG4gICAgICAgIG5hbWU6IFwiSW5ib3hcIixcbiAgICAgICAgc2x1ZzogXCJpbmJveFwiLFxuICAgICAgICBpY29uOiBcIk1haWxJY29uXCIsXG4gICAgICAgIGkxOG46IFwiSW5ib3hcIixcbiAgICAgICAgcm9sZXM6IFsnYWRtaW4nXVxuICAgIH0sXG4gICAge1xuICAgICAgICB1cmw6IFwiL2NoYXRcIixcbiAgICAgICAgbmFtZTogXCJDaGF0XCIsXG4gICAgICAgIHNsdWc6IFwiY2hhdFwiLFxuICAgICAgICBpY29uOiBcIk1lc3NhZ2VTcXVhcmVJY29uXCIsXG4gICAgICAgIGkxOG46IFwiQ2hhdFwiLFxuICAgICAgICB0YWdWYWx1ZTogJ3VucmVhZF9tZXNzYWdlcycsXG4gICAgICAgIHRhZ0NvbG9yOiAnd2FybmluZycsXG4gICAgfSxcbl1cbiJdLCJtYXBwaW5ncyI6IkFBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFTQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFXQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-sidebar/sidebarItems.js\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue":
/*!************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VxTooltip_vue_vue_type_template_id_a47c1d8c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxTooltip.vue?vue&type=template&id=a47c1d8c& */ \"./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c&\");\n/* harmony import */ var _VxTooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VxTooltip.vue?vue&type=script&lang=js& */ \"./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _VxTooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _VxTooltip_vue_vue_type_template_id_a47c1d8c___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _VxTooltip_vue_vue_type_template_id_a47c1d8c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('a47c1d8c')) {\n      api.createRecord('a47c1d8c', component.options)\n    } else {\n      api.reload('a47c1d8c', component.options)\n    }\n    module.hot.accept(/*! ./VxTooltip.vue?vue&type=template&id=a47c1d8c& */ \"./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _VxTooltip_vue_vue_type_template_id_a47c1d8c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VxTooltip.vue?vue&type=template&id=a47c1d8c& */ \"./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c&\");\n(function () {\n      api.rerender('a47c1d8c', {\n        render: _VxTooltip_vue_vue_type_template_id_a47c1d8c___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _VxTooltip_vue_vue_type_template_id_a47c1d8c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXRvb2x0aXAvVnhUb29sdGlwLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2NvbXBvbmVudHMvdngtdG9vbHRpcC9WeFRvb2x0aXAudnVlPzZhMGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9WeFRvb2x0aXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE0N2MxZDhjJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Z4VG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Z4VG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJ2E0N2MxZDhjJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJ2E0N2MxZDhjJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJ2E0N2MxZDhjJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9WeFRvb2x0aXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE0N2MxZDhjJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJ2E0N2MxZDhjJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXRvb2x0aXAvVnhUb29sdGlwLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=script&lang=js& ***!
  \*************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxTooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/babel-loader/lib!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxTooltip.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxTooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXRvb2x0aXAvVnhUb29sdGlwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXRvb2x0aXAvVnhUb29sdGlwLnZ1ZT8yZWQ3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVnhUb29sdGlwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFRvb2x0aXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c&":
/*!*******************************************************************************************************!*\
  !*** ./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c& ***!
  \*******************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxTooltip_vue_vue_type_template_id_a47c1d8c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib??vue-loader-options!./VxTooltip.vue?vue&type=template&id=a47c1d8c& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxTooltip_vue_vue_type_template_id_a47c1d8c___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VxTooltip_vue_vue_type_template_id_a47c1d8c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXRvb2x0aXAvVnhUb29sdGlwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hNDdjMWQ4YyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9jb21wb25lbnRzL3Z4LXRvb2x0aXAvVnhUb29sdGlwLnZ1ZT81OTkyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WeFRvb2x0aXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE0N2MxZDhjJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/components/vx-tooltip/VxTooltip.vue?vue&type=template&id=a47c1d8c&\n");

/***/ }),

/***/ "./src/modules/common/layouts/full-page/FullPage.vue":
/*!***********************************************************!*\
  !*** ./src/modules/common/layouts/full-page/FullPage.vue ***!
  \***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _FullPage_vue_vue_type_template_id_102f4d0e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FullPage.vue?vue&type=template&id=102f4d0e& */ \"./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\nvar script = {}\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n  script,\n  _FullPage_vue_vue_type_template_id_102f4d0e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _FullPage_vue_vue_type_template_id_102f4d0e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('102f4d0e')) {\n      api.createRecord('102f4d0e', component.options)\n    } else {\n      api.reload('102f4d0e', component.options)\n    }\n    module.hot.accept(/*! ./FullPage.vue?vue&type=template&id=102f4d0e& */ \"./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _FullPage_vue_vue_type_template_id_102f4d0e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FullPage.vue?vue&type=template&id=102f4d0e& */ \"./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e&\");\n(function () {\n      api.rerender('102f4d0e', {\n        render: _FullPage_vue_vue_type_template_id_102f4d0e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _FullPage_vue_vue_type_template_id_102f4d0e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/layouts/full-page/FullPage.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9mdWxsLXBhZ2UvRnVsbFBhZ2UudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvZnVsbC1wYWdlL0Z1bGxQYWdlLnZ1ZT85YmNkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vRnVsbFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwMmY0ZDBlJlwiXG52YXIgc2NyaXB0ID0ge31cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzEwMmY0ZDBlJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzEwMmY0ZDBlJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzEwMmY0ZDBlJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9GdWxsUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTAyZjRkMGUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMTAyZjRkMGUnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2Z1bGwtcGFnZS9GdWxsUGFnZS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/full-page/FullPage.vue\n");

/***/ }),

/***/ "./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e&":
/*!******************************************************************************************!*\
  !*** ./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e& ***!
  \******************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FullPage_vue_vue_type_template_id_102f4d0e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./FullPage.vue?vue&type=template&id=102f4d0e& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FullPage_vue_vue_type_template_id_102f4d0e___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FullPage_vue_vue_type_template_id_102f4d0e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9mdWxsLXBhZ2UvRnVsbFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwMmY0ZDBlJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL2Z1bGwtcGFnZS9GdWxsUGFnZS52dWU/NTczNCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRnVsbFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwMmY0ZDBlJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/full-page/FullPage.vue?vue&type=template&id=102f4d0e&\n");

/***/ }),

/***/ "./src/modules/common/layouts/main/Main.vue":
/*!**************************************************!*\
  !*** ./src/modules/common/layouts/main/Main.vue ***!
  \**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Main_vue_vue_type_template_id_83128bb4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Main.vue?vue&type=template&id=83128bb4& */ \"./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4&\");\n/* harmony import */ var _Main_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Main.vue?vue&type=script&lang=js& */ \"./src/modules/common/layouts/main/Main.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Main_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Main_vue_vue_type_template_id_83128bb4___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Main_vue_vue_type_template_id_83128bb4___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('83128bb4')) {\n      api.createRecord('83128bb4', component.options)\n    } else {\n      api.reload('83128bb4', component.options)\n    }\n    module.hot.accept(/*! ./Main.vue?vue&type=template&id=83128bb4& */ \"./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Main_vue_vue_type_template_id_83128bb4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Main.vue?vue&type=template&id=83128bb4& */ \"./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4&\");\n(function () {\n      api.rerender('83128bb4', {\n        render: _Main_vue_vue_type_template_id_83128bb4___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Main_vue_vue_type_template_id_83128bb4___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/common/layouts/main/Main.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9tYWluL01haW4udnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL2xheW91dHMvbWFpbi9NYWluLnZ1ZT8zNTk0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vTWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODMxMjhiYjQmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL01haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc4MzEyOGJiNCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc4MzEyOGJiNCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc4MzEyOGJiNCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODMxMjhiYjQmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignODMxMjhiYjQnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL21haW4vTWFpbi52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/main/Main.vue\n");

/***/ }),

/***/ "./src/modules/common/layouts/main/Main.vue?vue&type=script&lang=js&":
/*!***************************************************************************!*\
  !*** ./src/modules/common/layouts/main/Main.vue?vue&type=script&lang=js& ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Main_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./Main.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/main/Main.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Main_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9tYWluL01haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL21haW4vTWFpbi52dWU/YzllOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL01haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL01haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/main/Main.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4&":
/*!*********************************************************************************!*\
  !*** ./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4& ***!
  \*********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Main_vue_vue_type_template_id_83128bb4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./Main.vue?vue&type=template&id=83128bb4& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Main_vue_vue_type_template_id_83128bb4___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Main_vue_vue_type_template_id_83128bb4___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbGF5b3V0cy9tYWluL01haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgzMTI4YmI0Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9sYXlvdXRzL21haW4vTWFpbi52dWU/MzMyMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODMxMjhiYjQmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/layouts/main/Main.vue?vue&type=template&id=83128bb4&\n");

/***/ }),

/***/ "./src/modules/common/middlewares/auth.js":
/*!************************************************!*\
  !*** ./src/modules/common/middlewares/auth.js ***!
  \************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return auth; });\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../../store */ \"./src/store.js\");\n\nfunction auth(_ref) {\n  var next = _ref.next,\n      router = _ref.router;\n  var token = _store__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getters['token'];\n\n  if (!token) {\n    return router.push({\n      name: 'Login'\n    });\n  }\n\n  return next();\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbWlkZGxld2FyZXMvYXV0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9taWRkbGV3YXJlcy9hdXRoLmpzPzY1MDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0b3JlIGZyb20gJy4vLi4vLi4vLi4vc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhdXRoICh7bmV4dCwgcm91dGVyfSkge1xuICAgIGNvbnN0IHRva2VuID0gc3RvcmUuZ2V0dGVyc1sndG9rZW4nXTtcbiAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgIHJldHVybiByb3V0ZXIucHVzaCh7bmFtZTogJ0xvZ2luJ30pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0KCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/middlewares/auth.js\n");

/***/ }),

/***/ "./src/modules/common/middlewares/canUseAccount.js":
/*!*********************************************************!*\
  !*** ./src/modules/common/middlewares/canUseAccount.js ***!
  \*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return auth; });\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../../store */ \"./src/store.js\");\n/* harmony import */ var _services_EventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../services/EventBus */ \"./src/modules/common/services/EventBus.js\");\n\n\nfunction auth(_ref) {\n  var next = _ref.next,\n      router = _ref.router;\n  var userData = _store__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getters['userData'];\n\n  if (userData && userData['can_use_account']) {\n    return next();\n  }\n\n  _services_EventBus__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$emit('should-wait-for-account-activation');\n  return router.push({\n    name: 'Profile'\n  });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbWlkZGxld2FyZXMvY2FuVXNlQWNjb3VudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9taWRkbGV3YXJlcy9jYW5Vc2VBY2NvdW50LmpzPzlkYjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0b3JlIGZyb20gJy4vLi4vLi4vLi4vc3RvcmUnO1xuaW1wb3J0IEV2ZW50QnVzIGZyb20gJy4vLi4vc2VydmljZXMvRXZlbnRCdXMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhdXRoICh7bmV4dCwgcm91dGVyfSkge1xuICAgIGNvbnN0IHVzZXJEYXRhID0gc3RvcmUuZ2V0dGVyc1sndXNlckRhdGEnXTtcbiAgICBpZiAodXNlckRhdGEgJiYgdXNlckRhdGFbJ2Nhbl91c2VfYWNjb3VudCddKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgfVxuICAgIEV2ZW50QnVzLiRlbWl0KCdzaG91bGQtd2FpdC1mb3ItYWNjb3VudC1hY3RpdmF0aW9uJyk7XG4gICAgcmV0dXJuIHJvdXRlci5wdXNoKHtuYW1lOiAnUHJvZmlsZSd9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/middlewares/canUseAccount.js\n");

/***/ }),

/***/ "./src/modules/common/middlewares/checkProfile.js":
/*!********************************************************!*\
  !*** ./src/modules/common/middlewares/checkProfile.js ***!
  \********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return auth; });\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../../store */ \"./src/store.js\");\n/* harmony import */ var _services_EventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../services/EventBus */ \"./src/modules/common/services/EventBus.js\");\n\n\nfunction auth(_ref) {\n  var next = _ref.next,\n      router = _ref.router;\n  var userData = _store__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getters['userData'];\n\n  if (userData && userData['has_completed_profile']) {\n    return next();\n  }\n\n  _services_EventBus__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$emit('should-complete-profile-info');\n  return router.push({\n    name: 'Profile'\n  });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbWlkZGxld2FyZXMvY2hlY2tQcm9maWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29tbW9uL21pZGRsZXdhcmVzL2NoZWNrUHJvZmlsZS5qcz80ZDA1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdG9yZSBmcm9tICcuLy4uLy4uLy4uL3N0b3JlJztcbmltcG9ydCBFdmVudEJ1cyBmcm9tICcuLy4uL3NlcnZpY2VzL0V2ZW50QnVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXV0aCAoe25leHQsIHJvdXRlcn0pIHtcbiAgICBjb25zdCB1c2VyRGF0YSA9IHN0b3JlLmdldHRlcnNbJ3VzZXJEYXRhJ107XG4gICAgaWYgKHVzZXJEYXRhICYmIHVzZXJEYXRhWydoYXNfY29tcGxldGVkX3Byb2ZpbGUnXSkge1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgIH1cbiAgICBFdmVudEJ1cy4kZW1pdCgnc2hvdWxkLWNvbXBsZXRlLXByb2ZpbGUtaW5mbycpO1xuICAgIHJldHVybiByb3V0ZXIucHVzaCh7bmFtZTogJ1Byb2ZpbGUnfSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/middlewares/checkProfile.js\n");

/***/ }),

/***/ "./src/modules/common/middlewares/isAdmin.js":
/*!***************************************************!*\
  !*** ./src/modules/common/middlewares/isAdmin.js ***!
  \***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return auth; });\n/* harmony import */ var _services_AuthService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/AuthService */ \"./src/modules/common/services/AuthService.js\");\n\nfunction auth(_ref) {\n  var next = _ref.next,\n      router = _ref.router;\n  var isAdmin = _services_AuthService__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isAdmin();\n\n  if (isAdmin) {\n    return next();\n  }\n\n  return router.push({\n    name: 'Profile'\n  });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vbWlkZGxld2FyZXMvaXNBZG1pbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9taWRkbGV3YXJlcy9pc0FkbWluLmpzPzNjOWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF1dGhTZXJ2aWNlIGZyb20gJy4uL3NlcnZpY2VzL0F1dGhTZXJ2aWNlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXV0aCAoe25leHQsIHJvdXRlcn0pIHtcbiAgICBjb25zdCBpc0FkbWluID0gQXV0aFNlcnZpY2UuaXNBZG1pbigpO1xuICAgIGlmIChpc0FkbWluKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZXIucHVzaCh7bmFtZTogJ1Byb2ZpbGUnfSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/middlewares/isAdmin.js\n");

/***/ }),

/***/ "./src/modules/common/services/AuthService.js":
/*!****************************************************!*\
  !*** ./src/modules/common/services/AuthService.js ***!
  \****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../../../store */ \"./src/store.js\");\n\n\n\n\nvar AuthService = {\n  login: function login(data) {\n    return new Promise(function (resolve, reject) {\n      _factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"v1/login\", data).then(function (response) {\n        resolve(response.data.token);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  me: function me() {\n    var includes = ['roles', 'profile'];\n    return new Promise(function (resolve, reject) {\n      _factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"v1/me?include=\".concat(includes.join(','))).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getCounters: function getCounters() {\n    return new Promise(function (resolve, reject) {\n      _factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get('v1/counters').then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getUnreadMessages: function getUnreadMessages() {\n    return new Promise(function (resolve, reject) {\n      _factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get('v1/unreadMessages').then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  hasRole: function hasRole(role) {\n    var userData = _store__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getters['userData'];\n    return userData && userData.roles && userData.roles.filter(function (x) {\n      return x.name === role;\n    }).length > 0;\n  },\n  getCountries: function getCountries(search) {\n    return new Promise(function (resolve, reject) {\n      _factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"v1/countries?name=\".concat(search)).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  forgotPassword: function forgotPassword(user) {\n    return new Promise(function (resolve, reject) {\n      _factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post('v1/password/forgot', user).then(function (response) {\n        resolve(response);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  resetPassword: function resetPassword(user) {\n    return new Promise(function (resolve, reject) {\n      _factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post('v1/password/reset', user).then(function (response) {\n        resolve(response);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  isAdmin: function isAdmin() {\n    var userData = _store__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getters['userData'];\n\n    if (userData && userData.roles) {\n      var isAdmin = userData.roles.filter(function (role) {\n        return role.name === 'admin';\n      }).length > 0;\n\n      if (isAdmin) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (AuthService);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vc2VydmljZXMvQXV0aFNlcnZpY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vc2VydmljZXMvQXV0aFNlcnZpY2UuanM/MmZkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXBpRmFjdG9yeSBmcm9tICcuLi9mYWN0b3JpZXMvQXBpRmFjdG9yeSc7XG5pbXBvcnQgc3RvcmUgZnJvbSAnLi8uLi8uLi8uLi9zdG9yZSc7XG5cbmNvbnN0IEF1dGhTZXJ2aWNlID0ge1xuICAgIGxvZ2luOiAoZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGB2MS9sb2dpbmAsIGRhdGEpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLnRva2VuKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBtZTogKCkgPT4ge1xuICAgICAgICBjb25zdCBpbmNsdWRlcyA9IFtcbiAgICAgICAgICAgICdyb2xlcycsXG4gICAgICAgICAgICAncHJvZmlsZScsXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldChgdjEvbWU/aW5jbHVkZT0ke2luY2x1ZGVzLmpvaW4oJywnKX1gKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXRDb3VudGVyczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5nZXQoJ3YxL2NvdW50ZXJzJykudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldFVucmVhZE1lc3NhZ2VzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldCgndjEvdW5yZWFkTWVzc2FnZXMnKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgaGFzUm9sZTogKHJvbGUpID0+IHtcbiAgICAgICAgY29uc3QgdXNlckRhdGEgPSBzdG9yZS5nZXR0ZXJzWyd1c2VyRGF0YSddO1xuICAgICAgICByZXR1cm4gdXNlckRhdGEgJiYgdXNlckRhdGEucm9sZXMgJiYgdXNlckRhdGEucm9sZXMuZmlsdGVyKHggPT4geC5uYW1lID09PSByb2xlKS5sZW5ndGggPiAwO1xuICAgIH0sXG4gICAgZ2V0Q291bnRyaWVzOiAoc2VhcmNoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldChgdjEvY291bnRyaWVzP25hbWU9JHtzZWFyY2h9YCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZm9yZ290UGFzc3dvcmQ6ICh1c2VyKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoJ3YxL3Bhc3N3b3JkL2ZvcmdvdCcsIHVzZXIpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgcmVzZXRQYXNzd29yZDogKHVzZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkucG9zdCgndjEvcGFzc3dvcmQvcmVzZXQnLCB1c2VyKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGlzQWRtaW46ICgpID0+IHtcbiAgICAgICAgY29uc3QgdXNlckRhdGEgPSBzdG9yZS5nZXR0ZXJzWyd1c2VyRGF0YSddO1xuICAgICAgICBpZiAodXNlckRhdGEgJiYgdXNlckRhdGEucm9sZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQWRtaW4gPSB1c2VyRGF0YS5yb2xlcy5maWx0ZXIocm9sZSA9PiByb2xlLm5hbWUgPT09ICdhZG1pbicpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICBpZiAoaXNBZG1pbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXV0aFNlcnZpY2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBakZBO0FBb0ZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/common/services/AuthService.js\n");

/***/ }),

/***/ "./src/modules/common/services/EventBus.js":
/*!*************************************************!*\
  !*** ./src/modules/common/services/EventBus.js ***!
  \*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vc2VydmljZXMvRXZlbnRCdXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vc2VydmljZXMvRXZlbnRCdXMuanM/MWM0OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBWdWUoKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/services/EventBus.js\n");

/***/ }),

/***/ "./src/modules/common/services/FileService.js":
/*!****************************************************!*\
  !*** ./src/modules/common/services/FileService.js ***!
  \****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  getBase64: function getBase64(file) {\n    return new Promise(function (resolve) {\n      var reader = new FileReader();\n\n      reader.onload = function (e) {\n        resolve(e.target.result);\n      };\n\n      reader.readAsDataURL(file);\n    });\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vc2VydmljZXMvRmlsZVNlcnZpY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vc2VydmljZXMvRmlsZVNlcnZpY2UuanM/Y2E1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gICAgZ2V0QmFzZTY0IChmaWxlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFUQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/services/FileService.js\n");

/***/ }),

/***/ "./src/modules/common/services/NotificationService.js":
/*!************************************************************!*\
  !*** ./src/modules/common/services/NotificationService.js ***!
  \************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n\nvar vueInstance = new vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n\nfunction showNotification(title, text, color) {\n  vueInstance.$vs.notify({\n    title: title,\n    text: text,\n    color: color\n  });\n}\n\nvar NotificationService = {\n  success: function success(title, message) {\n    showNotification(title, message, 'success');\n  },\n  warning: function warning(title, message) {\n    showNotification(title, message, 'warning');\n  },\n  error: function error(title, message) {\n    showNotification(title, message, 'danger');\n  },\n  info: function info(title, message) {\n    showNotification(title, message, 'info');\n  },\n  confirmCancel: function confirmCancel(title, text, accept) {\n    vueInstance.$vs.dialog({\n      type: 'confirm',\n      color: 'danger',\n      title: title,\n      text: text,\n      accept: accept\n    });\n  },\n  confirmEnable: function confirmEnable(title, text, accept) {\n    vueInstance.$vs.dialog({\n      type: 'confirm',\n      color: 'primary',\n      title: title,\n      text: text,\n      accept: accept\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (NotificationService);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vc2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbW1vbi9zZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlLmpzPzliNDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnO1xuXG5jb25zdCB2dWVJbnN0YW5jZSA9IG5ldyBWdWUoKTtcblxuZnVuY3Rpb24gc2hvd05vdGlmaWNhdGlvbiAodGl0bGUsIHRleHQsIGNvbG9yKSB7XG4gICAgdnVlSW5zdGFuY2UuJHZzLm5vdGlmeSh7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB0ZXh0LFxuICAgICAgICBjb2xvclxuICAgIH0pO1xufVxuXG5jb25zdCBOb3RpZmljYXRpb25TZXJ2aWNlID0ge1xuICAgIHN1Y2Nlc3M6ICh0aXRsZSwgbWVzc2FnZSkgPT4ge1xuICAgICAgICBzaG93Tm90aWZpY2F0aW9uKHRpdGxlLCBtZXNzYWdlLCAnc3VjY2VzcycpO1xuICAgIH0sXG4gICAgd2FybmluZzogKHRpdGxlLCBtZXNzYWdlKSA9PiB7XG4gICAgICAgIHNob3dOb3RpZmljYXRpb24odGl0bGUsIG1lc3NhZ2UsICd3YXJuaW5nJyk7XG4gICAgfSxcbiAgICBlcnJvcjogKHRpdGxlLCBtZXNzYWdlKSA9PiB7XG4gICAgICAgIHNob3dOb3RpZmljYXRpb24odGl0bGUsIG1lc3NhZ2UsICdkYW5nZXInKTtcbiAgICB9LFxuICAgIGluZm86ICh0aXRsZSwgbWVzc2FnZSkgPT4ge1xuICAgICAgICBzaG93Tm90aWZpY2F0aW9uKHRpdGxlLCBtZXNzYWdlLCAnaW5mbycpO1xuICAgIH0sXG4gICAgY29uZmlybUNhbmNlbDogKHRpdGxlLCB0ZXh0LCBhY2NlcHQpID0+IHtcbiAgICAgICAgdnVlSW5zdGFuY2UuJHZzLmRpYWxvZyh7XG4gICAgICAgICAgICB0eXBlOiAnY29uZmlybScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICBhY2NlcHRcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBjb25maXJtRW5hYmxlOiAodGl0bGUsIHRleHQsIGFjY2VwdCkgPT4ge1xuICAgICAgICB2dWVJbnN0YW5jZS4kdnMuZGlhbG9nKHtcbiAgICAgICAgICAgIHR5cGU6ICdjb25maXJtJyxcbiAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICBhY2NlcHRcbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTm90aWZpY2F0aW9uU2VydmljZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQTlCQTtBQWlDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/common/services/NotificationService.js\n");

/***/ }),

/***/ "./src/modules/common/services/UtilityService.js":
/*!*******************************************************!*\
  !*** ./src/modules/common/services/UtilityService.js ***!
  \*******************************************************/
/*! exports provided: prepareFilters, extractErrorMessage, groupArrayByKey */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prepareFilters\", function() { return prepareFilters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractErrorMessage\", function() { return extractErrorMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"groupArrayByKey\", function() { return groupArrayByKey; });\n/* harmony import */ var core_js_modules_es6_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.array.find */ \"./node_modules/core-js/modules/es6.array.find.js\");\n/* harmony import */ var core_js_modules_es6_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nvar prepareFilters = function prepareFilters(filters) {\n  var queryStringParams = [];\n  Object(lodash__WEBPACK_IMPORTED_MODULE_4__[\"forOwn\"])(filters, function (v, k) {\n    if (v) {\n      queryStringParams.push(\"\".concat(k, \"=\").concat(v));\n    }\n  });\n  return queryStringParams.join('&');\n};\nvar extractErrorMessage = function extractErrorMessage(error) {\n  if (typeof error === 'string') {\n    return error;\n  }\n\n  if (error.error) {\n    error = error.error;\n  }\n\n  if (error.body) {\n    error = error.body.error;\n  }\n\n  if (error.data) {\n    error = error.data;\n  }\n\n  if (typeof error === 'string') {\n    return error;\n  }\n\n  if (typeof error.message === 'string') {\n    return error.message;\n  }\n\n  try {\n    Object.keys(error.message).forEach(function (key) {\n      if (typeof error.message[key] === 'string') {\n        return error.message[key];\n      } else {\n        error.message[key].forEach(function (message) {\n          return message;\n        });\n      }\n    });\n  } catch (e) {\n    return 'Unexpected error occurred. Please contact your system admin.';\n  }\n};\nvar groupArrayByKey = function groupArrayByKey(data, key) {\n  var groupedData = [];\n  data.forEach(function (item) {\n    var currentGroup = groupedData.find(function (g) {\n      return g.key === item[key];\n    });\n\n    if (currentGroup) {\n      currentGroup.data.push(item);\n    } else {\n      groupedData.push({\n        key: item[key],\n        data: [item]\n      });\n    }\n  });\n  return groupedData;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21tb24vc2VydmljZXMvVXRpbGl0eVNlcnZpY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21tb24vc2VydmljZXMvVXRpbGl0eVNlcnZpY2UuanM/YzczYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Zvck93bn0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgICBsZXQgcXVlcnlTdHJpbmdQYXJhbXMgPSBbXTtcbiAgICBmb3JPd24oZmlsdGVycywgKHYsIGspID0+IHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIHF1ZXJ5U3RyaW5nUGFyYW1zLnB1c2goYCR7a309JHt2fWApO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHF1ZXJ5U3RyaW5nUGFyYW1zLmpvaW4oJyYnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0RXJyb3JNZXNzYWdlID0gKGVycm9yKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cbiAgICBpZiAoZXJyb3IuZXJyb3IpIHtcbiAgICAgICAgZXJyb3IgPSBlcnJvci5lcnJvcjtcbiAgICB9XG4gICAgaWYgKGVycm9yLmJvZHkpIHtcbiAgICAgICAgZXJyb3IgPSBlcnJvci5ib2R5LmVycm9yO1xuICAgIH1cbiAgICBpZiAoZXJyb3IuZGF0YSkge1xuICAgICAgICBlcnJvciA9IGVycm9yLmRhdGE7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gZXJyb3IubWVzc2FnZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgT2JqZWN0LmtleXMoZXJyb3IubWVzc2FnZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVycm9yLm1lc3NhZ2Vba2V5XSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IubWVzc2FnZVtrZXldXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yLm1lc3NhZ2Vba2V5XS5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICdVbmV4cGVjdGVkIGVycm9yIG9jY3VycmVkLiBQbGVhc2UgY29udGFjdCB5b3VyIHN5c3RlbSBhZG1pbi4nO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBncm91cEFycmF5QnlLZXkgPSAoZGF0YSwga2V5KSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZERhdGEgPSBbXTtcbiAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IGdyb3VwZWREYXRhLmZpbmQoZyA9PiBnLmtleSA9PT0gaXRlbVtrZXldKTtcbiAgICAgICAgaWYgKGN1cnJlbnRHcm91cCkge1xuICAgICAgICAgICAgY3VycmVudEdyb3VwLmRhdGEucHVzaChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdyb3VwZWREYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogaXRlbVtrZXldLFxuICAgICAgICAgICAgICAgIGRhdGE6IFtpdGVtXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyb3VwZWREYXRhO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/common/services/UtilityService.js\n");

/***/ }),

/***/ "./src/modules/contacts/ContactRequests.vue":
/*!**************************************************!*\
  !*** ./src/modules/contacts/ContactRequests.vue ***!
  \**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ContactRequests_vue_vue_type_template_id_69973589___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ContactRequests.vue?vue&type=template&id=69973589& */ \"./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589&\");\n/* harmony import */ var _ContactRequests_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ContactRequests.vue?vue&type=script&lang=js& */ \"./src/modules/contacts/ContactRequests.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _ContactRequests_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ContactRequests.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _ContactRequests_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _ContactRequests_vue_vue_type_template_id_69973589___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _ContactRequests_vue_vue_type_template_id_69973589___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('69973589')) {\n      api.createRecord('69973589', component.options)\n    } else {\n      api.reload('69973589', component.options)\n    }\n    module.hot.accept(/*! ./ContactRequests.vue?vue&type=template&id=69973589& */ \"./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _ContactRequests_vue_vue_type_template_id_69973589___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ContactRequests.vue?vue&type=template&id=69973589& */ \"./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589&\");\n(function () {\n      api.rerender('69973589', {\n        render: _ContactRequests_vue_vue_type_template_id_69973589___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _ContactRequests_vue_vue_type_template_id_69973589___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/contacts/ContactRequests.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9Db250YWN0UmVxdWVzdHMudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29udGFjdHMvQ29udGFjdFJlcXVlc3RzLnZ1ZT9lNzdhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQ29udGFjdFJlcXVlc3RzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OTk3MzU4OSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0NvbnRhY3RSZXF1ZXN0cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzY5OTczNTg5JykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzY5OTczNTg5JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzY5OTczNTg5JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5OTczNTg5JlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzY5OTczNTg5Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy9jb250YWN0cy9Db250YWN0UmVxdWVzdHMudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/ContactRequests.vue\n");

/***/ }),

/***/ "./src/modules/contacts/ContactRequests.vue?vue&type=script&lang=js&":
/*!***************************************************************************!*\
  !*** ./src/modules/contacts/ContactRequests.vue?vue&type=script&lang=js& ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ContactRequests.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbnRhY3RzL0NvbnRhY3RSZXF1ZXN0cy52dWU/MzE1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbnRhY3RSZXF1ZXN0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29udGFjdFJlcXVlc3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/contacts/ContactRequests.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&":
/*!************************************************************************************!*\
  !*** ./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss& ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ContactRequests.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbnRhY3RzL0NvbnRhY3RSZXF1ZXN0cy52dWU/ZTAzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbnRhY3RSZXF1ZXN0cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29udGFjdFJlcXVlc3RzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/ContactRequests.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589&":
/*!*********************************************************************************!*\
  !*** ./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589& ***!
  \*********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_template_id_69973589___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ContactRequests.vue?vue&type=template&id=69973589& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_template_id_69973589___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ContactRequests_vue_vue_type_template_id_69973589___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9Db250YWN0UmVxdWVzdHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5OTczNTg5Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbnRhY3RzL0NvbnRhY3RSZXF1ZXN0cy52dWU/MDYzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29udGFjdFJlcXVlc3RzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OTk3MzU4OSZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/ContactRequests.vue?vue&type=template&id=69973589&\n");

/***/ }),

/***/ "./src/modules/contacts/NewsLetter.vue":
/*!*********************************************!*\
  !*** ./src/modules/contacts/NewsLetter.vue ***!
  \*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _NewsLetter_vue_vue_type_template_id_4051dc38___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NewsLetter.vue?vue&type=template&id=4051dc38& */ \"./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38&\");\n/* harmony import */ var _NewsLetter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NewsLetter.vue?vue&type=script&lang=js& */ \"./src/modules/contacts/NewsLetter.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _NewsLetter_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NewsLetter.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _NewsLetter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _NewsLetter_vue_vue_type_template_id_4051dc38___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _NewsLetter_vue_vue_type_template_id_4051dc38___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('4051dc38')) {\n      api.createRecord('4051dc38', component.options)\n    } else {\n      api.reload('4051dc38', component.options)\n    }\n    module.hot.accept(/*! ./NewsLetter.vue?vue&type=template&id=4051dc38& */ \"./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _NewsLetter_vue_vue_type_template_id_4051dc38___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NewsLetter.vue?vue&type=template&id=4051dc38& */ \"./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38&\");\n(function () {\n      api.rerender('4051dc38', {\n        render: _NewsLetter_vue_vue_type_template_id_4051dc38___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _NewsLetter_vue_vue_type_template_id_4051dc38___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/contacts/NewsLetter.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbnRhY3RzL05ld3NMZXR0ZXIudnVlP2JiMmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MDUxZGMzOCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTmV3c0xldHRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vTmV3c0xldHRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzQwNTFkYzM4JykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzQwNTFkYzM4JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzQwNTFkYzM4JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MDUxZGMzOCZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc0MDUxZGMzOCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvY29udGFjdHMvTmV3c0xldHRlci52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/contacts/NewsLetter.vue\n");

/***/ }),

/***/ "./src/modules/contacts/NewsLetter.vue?vue&type=script&lang=js&":
/*!**********************************************************************!*\
  !*** ./src/modules/contacts/NewsLetter.vue?vue&type=script&lang=js& ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./NewsLetter.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT9mYTgwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3c0xldHRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3c0xldHRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/NewsLetter.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&":
/*!*******************************************************************************!*\
  !*** ./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss& ***!
  \*******************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./NewsLetter.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT8zYmE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3c0xldHRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3c0xldHRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/contacts/NewsLetter.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38&":
/*!****************************************************************************!*\
  !*** ./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38& ***!
  \****************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_template_id_4051dc38___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./NewsLetter.vue?vue&type=template&id=4051dc38& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_template_id_4051dc38___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsLetter_vue_vue_type_template_id_4051dc38___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MDUxZGMzOCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb250YWN0cy9OZXdzTGV0dGVyLnZ1ZT8wYjc3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9OZXdzTGV0dGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MDUxZGMzOCZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/NewsLetter.vue?vue&type=template&id=4051dc38&\n");

/***/ }),

/***/ "./src/modules/contacts/services/ContactRequests.js":
/*!**********************************************************!*\
  !*** ./src/modules/contacts/services/ContactRequests.js ***!
  \**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../common/factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\nvar ContactRequests = {\n  get: function get(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/contactRequests?\".concat(qs)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  delete: function _delete(id) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].delete(\"v1/contactRequests/\".concat(id)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ContactRequests);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9zZXJ2aWNlcy9Db250YWN0UmVxdWVzdHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb250YWN0cy9zZXJ2aWNlcy9Db250YWN0UmVxdWVzdHMuanM/MzVlYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXBpRmFjdG9yeSBmcm9tICcuLy4uLy4uL2NvbW1vbi9mYWN0b3JpZXMvQXBpRmFjdG9yeSc7XG5pbXBvcnQge3ByZXBhcmVGaWx0ZXJzfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbmNvbnN0IENvbnRhY3RSZXF1ZXN0cyA9IHtcbiAgICBnZXQ6IChmaWx0ZXJzKSA9PiB7XG4gICAgICAgIGNvbnN0IHFzID0gcHJlcGFyZUZpbHRlcnMoZmlsdGVycyk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldChgdjEvY29udGFjdFJlcXVlc3RzPyR7cXN9YCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGRlbGV0ZTogKGlkKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmRlbGV0ZShgdjEvY29udGFjdFJlcXVlc3RzLyR7aWR9YCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb250YWN0UmVxdWVzdHM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbkJBO0FBc0JBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/contacts/services/ContactRequests.js\n");

/***/ }),

/***/ "./src/modules/contacts/services/NewsLetter.js":
/*!*****************************************************!*\
  !*** ./src/modules/contacts/services/NewsLetter.js ***!
  \*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../common/factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\nvar NewsLetter = {\n  get: function get(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/subscriptions?\".concat(qs)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  exportExcel: function exportExcel(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      Object(_common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        url: \"v1/subscriptions/actions/exportExcel?\".concat(qs),\n        method: 'GET',\n        responseType: 'blob'\n      }).then(function (success) {\n        var url = window.URL.createObjectURL(new Blob([success.data]));\n        var link = document.createElement('a');\n        link.href = url;\n        link.setAttribute('download', 'newsletter.xlsx');\n        document.body.appendChild(link);\n        link.click();\n        resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (NewsLetter);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9zZXJ2aWNlcy9OZXdzTGV0dGVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29udGFjdHMvc2VydmljZXMvTmV3c0xldHRlci5qcz82ZjYzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBcGlGYWN0b3J5IGZyb20gJy4vLi4vLi4vY29tbW9uL2ZhY3Rvcmllcy9BcGlGYWN0b3J5JztcbmltcG9ydCB7cHJlcGFyZUZpbHRlcnN9IGZyb20gXCIuLi8uLi9jb21tb24vc2VydmljZXMvVXRpbGl0eVNlcnZpY2VcIjtcblxuY29uc3QgTmV3c0xldHRlciA9IHtcbiAgICBnZXQ6IChmaWx0ZXJzKSA9PiB7XG4gICAgICAgIGNvbnN0IHFzID0gcHJlcGFyZUZpbHRlcnMoZmlsdGVycyk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldChgdjEvc3Vic2NyaXB0aW9ucz8ke3FzfWApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBleHBvcnRFeGNlbDogKGZpbHRlcnMpID0+IHtcbiAgICAgICAgY29uc3QgcXMgPSBwcmVwYXJlRmlsdGVycyhmaWx0ZXJzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3Rvcnkoe1xuICAgICAgICAgICAgICAgIHVybDogYHYxL3N1YnNjcmlwdGlvbnMvYWN0aW9ucy9leHBvcnRFeGNlbD8ke3FzfWAsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgICAgICAgICAgfSkudGhlbihcbiAgICAgICAgICAgICAgICAoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbc3VjY2Vzcy5kYXRhXSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsICduZXdzbGV0dGVyLnhsc3gnKTtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MuZGF0YS5kYXRhKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5ld3NMZXR0ZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQS9CQTtBQWtDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/services/NewsLetter.js\n");

/***/ }),

/***/ "./src/modules/contacts/store/actions.js":
/*!***********************************************!*\
  !*** ./src/modules/contacts/store/actions.js ***!
  \***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _services_NewsLetter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../services/NewsLetter */ \"./src/modules/contacts/services/NewsLetter.js\");\n/* harmony import */ var _services_ContactRequests__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../services/ContactRequests */ \"./src/modules/contacts/services/ContactRequests.js\");\n/* eslint-disable no-empty-pattern */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  getNewsLetter: function getNewsLetter(_ref, filters) {\n    var commit = _ref.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_NewsLetter__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(filters).then(function (success) {\n        commit('NEWS_LETTER', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getContactRequests: function getContactRequests(_ref2, filters) {\n    var commit = _ref2.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_ContactRequests__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(filters).then(function (success) {\n        commit('CONTACT_REQUESTS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  resetState: function resetState(_ref3) {\n    var commit = _ref3.commit;\n    commit('RESET_STATE');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9zdG9yZS9hY3Rpb25zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29udGFjdHMvc3RvcmUvYWN0aW9ucy5qcz8yMzkyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5LXBhdHRlcm4gKi9cbmltcG9ydCBOZXdzTGV0dGVyU2VydmljZSBmcm9tICcuLy4uL3NlcnZpY2VzL05ld3NMZXR0ZXInO1xuaW1wb3J0IENvbnRhY3RSZXF1ZXN0c1NlcnZpY2UgZnJvbSAnLi8uLi9zZXJ2aWNlcy9Db250YWN0UmVxdWVzdHMnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZ2V0TmV3c0xldHRlciAoe2NvbW1pdH0sIGZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IE5ld3NMZXR0ZXJTZXJ2aWNlLmdldChmaWx0ZXJzKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ05FV1NfTEVUVEVSJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGdldENvbnRhY3RSZXF1ZXN0cyAoe2NvbW1pdH0sIGZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IENvbnRhY3RSZXF1ZXN0c1NlcnZpY2UuZ2V0KGZpbHRlcnMpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIGNvbW1pdCgnQ09OVEFDVF9SRVFVRVNUUycsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICByZXNldFN0YXRlICh7Y29tbWl0fSkge1xuICAgICAgICBjb21taXQoJ1JFU0VUX1NUQVRFJyk7XG4gICAgfVxufTtcblxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFmQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/store/actions.js\n");

/***/ }),

/***/ "./src/modules/contacts/store/defaults.js":
/*!************************************************!*\
  !*** ./src/modules/contacts/store/defaults.js ***!
  \************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n  return {\n    newsLetter: {\n      data: [],\n      meta: {\n        pagination: {\n          current_page: 1,\n          per_page: 10\n        }\n      }\n    },\n    contactRequests: {\n      data: [],\n      meta: {\n        pagination: {\n          current_page: 1,\n          per_page: 10\n        }\n      }\n    }\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9zdG9yZS9kZWZhdWx0cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbnRhY3RzL3N0b3JlL2RlZmF1bHRzLmpzP2RjNDMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgKCkgPT4gKHtcbiAgICBuZXdzTGV0dGVyOiB7XG4gICAgICAgIGRhdGE6IFtdLFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgY3VycmVudF9wYWdlOiAxLFxuICAgICAgICAgICAgICAgIHBlcl9wYWdlOiAxMCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgY29udGFjdFJlcXVlc3RzOiB7XG4gICAgICAgIGRhdGE6IFtdLFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgY3VycmVudF9wYWdlOiAxLFxuICAgICAgICAgICAgICAgIHBlcl9wYWdlOiAxMCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUZBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUZBO0FBVkE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/store/defaults.js\n");

/***/ }),

/***/ "./src/modules/contacts/store/getters.js":
/*!***********************************************!*\
  !*** ./src/modules/contacts/store/getters.js ***!
  \***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar newsLetter = function newsLetter(state) {\n  return state.newsLetter;\n};\n\nvar contactRequests = function contactRequests(state) {\n  return state.contactRequests;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  newsLetter: newsLetter,\n  contactRequests: contactRequests\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9zdG9yZS9nZXR0ZXJzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvY29udGFjdHMvc3RvcmUvZ2V0dGVycy5qcz80ZjcwIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG5ld3NMZXR0ZXIgPSBzdGF0ZSA9PiBzdGF0ZS5uZXdzTGV0dGVyO1xuY29uc3QgY29udGFjdFJlcXVlc3RzID0gc3RhdGUgPT4gc3RhdGUuY29udGFjdFJlcXVlc3RzO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbmV3c0xldHRlcixcbiAgICBjb250YWN0UmVxdWVzdHMsXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/store/getters.js\n");

/***/ }),

/***/ "./src/modules/contacts/store/index.js":
/*!*********************************************!*\
  !*** ./src/modules/contacts/store/index.js ***!
  \*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/modules/contacts/store/actions.js\");\n/* harmony import */ var _getters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getters */ \"./src/modules/contacts/store/getters.js\");\n/* harmony import */ var _mutations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutations */ \"./src/modules/contacts/store/mutations.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaults */ \"./src/modules/contacts/store/defaults.js\");\n\n\n\n\nvar state = Object(_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  namespaced: true,\n  state: state,\n  actions: _actions__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  getters: _getters__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  mutations: _mutations__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9zdG9yZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2NvbnRhY3RzL3N0b3JlL2luZGV4LmpzPzEzYWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFjdGlvbnMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCBnZXR0ZXJzIGZyb20gJy4vZ2V0dGVycyc7XG5pbXBvcnQgbXV0YXRpb25zIGZyb20gJy4vbXV0YXRpb25zJztcbmltcG9ydCBkZWZhdWx0U3RhdGUgZnJvbSAnLi9kZWZhdWx0cyc7XG5cbmNvbnN0IHN0YXRlID0gZGVmYXVsdFN0YXRlKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgIHN0YXRlLFxuICAgIGFjdGlvbnMsXG4gICAgZ2V0dGVycyxcbiAgICBtdXRhdGlvbnNcbn07XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/contacts/store/index.js\n");

/***/ }),

/***/ "./src/modules/contacts/store/mutations.js":
/*!*************************************************!*\
  !*** ./src/modules/contacts/store/mutations.js ***!
  \*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaults */ \"./src/modules/contacts/store/defaults.js\");\n\n\nvar RESET_STATE = function RESET_STATE(state) {\n  Object.assign(state, Object(_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"])());\n};\n\nvar NEWS_LETTER = function NEWS_LETTER(state, value) {\n  state.newsLetter = value;\n  return state.newsLetter;\n};\n\nvar CONTACT_REQUESTS = function CONTACT_REQUESTS(state, value) {\n  state.contactRequests = value;\n  return state.contactRequests;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  RESET_STATE: RESET_STATE,\n  NEWS_LETTER: NEWS_LETTER,\n  CONTACT_REQUESTS: CONTACT_REQUESTS\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb250YWN0cy9zdG9yZS9tdXRhdGlvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb250YWN0cy9zdG9yZS9tdXRhdGlvbnMuanM/ZGVkOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFN0YXRlIGZyb20gJy4vZGVmYXVsdHMnO1xuXG5jb25zdCBSRVNFVF9TVEFURSA9IChzdGF0ZSkgPT4ge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUsIGRlZmF1bHRTdGF0ZSgpKTtcbn07XG5cbmNvbnN0IE5FV1NfTEVUVEVSID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLm5ld3NMZXR0ZXIgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RhdGUubmV3c0xldHRlcjtcbn07XG5cbmNvbnN0IENPTlRBQ1RfUkVRVUVTVFMgPSAoc3RhdGUsIHZhbHVlKSA9PiB7XG4gICAgc3RhdGUuY29udGFjdFJlcXVlc3RzID0gdmFsdWU7XG4gICAgcmV0dXJuIHN0YXRlLmNvbnRhY3RSZXF1ZXN0cztcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIFJFU0VUX1NUQVRFLFxuICAgIE5FV1NfTEVUVEVSLFxuICAgIENPTlRBQ1RfUkVRVUVTVFMsXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUhBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/contacts/store/mutations.js\n");

/***/ }),

/***/ "./src/modules/dashboard/Dashboard.vue":
/*!*********************************************!*\
  !*** ./src/modules/dashboard/Dashboard.vue ***!
  \*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Dashboard_vue_vue_type_template_id_4d04e468___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Dashboard.vue?vue&type=template&id=4d04e468& */ \"./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468&\");\n/* harmony import */ var _Dashboard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Dashboard.vue?vue&type=script&lang=js& */ \"./src/modules/dashboard/Dashboard.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _Dashboard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Dashboard.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _Dashboard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Dashboard_vue_vue_type_template_id_4d04e468___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Dashboard_vue_vue_type_template_id_4d04e468___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('4d04e468')) {\n      api.createRecord('4d04e468', component.options)\n    } else {\n      api.reload('4d04e468', component.options)\n    }\n    module.hot.accept(/*! ./Dashboard.vue?vue&type=template&id=4d04e468& */ \"./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Dashboard_vue_vue_type_template_id_4d04e468___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Dashboard.vue?vue&type=template&id=4d04e468& */ \"./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468&\");\n(function () {\n      api.rerender('4d04e468', {\n        render: _Dashboard_vue_vue_type_template_id_4d04e468___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Dashboard_vue_vue_type_template_id_4d04e468___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/dashboard/Dashboard.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9EYXNoYm9hcmQudnVlPzNjZDYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9EYXNoYm9hcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkMDRlNDY4JlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rhc2hib2FyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rhc2hib2FyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vRGFzaGJvYXJkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNGQwNGU0NjgnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNGQwNGU0NjgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNGQwNGU0NjgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rhc2hib2FyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGQwNGU0NjgmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNGQwNGU0NjgnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL2Rhc2hib2FyZC9EYXNoYm9hcmQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/dashboard/Dashboard.vue\n");

/***/ }),

/***/ "./src/modules/dashboard/Dashboard.vue?vue&type=script&lang=js&":
/*!**********************************************************************!*\
  !*** ./src/modules/dashboard/Dashboard.vue?vue&type=script&lang=js& ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT8wYjM3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRGFzaGJvYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9EYXNoYm9hcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/dashboard/Dashboard.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&":
/*!*******************************************************************************!*\
  !*** ./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss& ***!
  \*******************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT8zOGY5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRGFzaGJvYXJkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9EYXNoYm9hcmQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/dashboard/Dashboard.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468&":
/*!****************************************************************************!*\
  !*** ./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468& ***!
  \****************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_template_id_4d04e468___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Dashboard.vue?vue&type=template&id=4d04e468& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_template_id_4d04e468___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_template_id_4d04e468___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZDA0ZTQ2OCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvRGFzaGJvYXJkLnZ1ZT80ZDliIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9EYXNoYm9hcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkMDRlNDY4JlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/dashboard/Dashboard.vue?vue&type=template&id=4d04e468&\n");

/***/ }),

/***/ "./src/modules/dashboard/services/Dashboard.js":
/*!*****************************************************!*\
  !*** ./src/modules/dashboard/services/Dashboard.js ***!
  \*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\nvar Dashboard = {\n  getSubscriptionsLastMonthGroups: function getSubscriptionsLastMonthGroups() {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/dashboard/actions/getLastMonthSubscriptions\").then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getProjectsLastMonthGroups: function getProjectsLastMonthGroups() {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/dashboard/actions/getLastMonthProjects\").then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getClientsLastMonthGroups: function getClientsLastMonthGroups() {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/dashboard/actions/getLastMonthClients\").then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getDeadlines: function getDeadlines(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/dashboard/actions/getDeadlines?\".concat(qs)).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Dashboard);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvc2VydmljZXMvRGFzaGJvYXJkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvZGFzaGJvYXJkL3NlcnZpY2VzL0Rhc2hib2FyZC5qcz8zYzJkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBcGlGYWN0b3J5IGZyb20gJy4uLy4uL2NvbW1vbi9mYWN0b3JpZXMvQXBpRmFjdG9yeSc7XG5pbXBvcnQge3ByZXBhcmVGaWx0ZXJzfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbmNvbnN0IERhc2hib2FyZCA9IHtcbiAgICBnZXRTdWJzY3JpcHRpb25zTGFzdE1vbnRoR3JvdXBzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldChgdjEvZGFzaGJvYXJkL2FjdGlvbnMvZ2V0TGFzdE1vbnRoU3Vic2NyaXB0aW9uc2ApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXRQcm9qZWN0c0xhc3RNb250aEdyb3VwczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5nZXQoYHYxL2Rhc2hib2FyZC9hY3Rpb25zL2dldExhc3RNb250aFByb2plY3RzYCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldENsaWVudHNMYXN0TW9udGhHcm91cHM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9kYXNoYm9hcmQvYWN0aW9ucy9nZXRMYXN0TW9udGhDbGllbnRzYCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldERlYWRsaW5lczogKGZpbHRlcnMpID0+IHtcbiAgICAgICAgY29uc3QgcXMgPSBwcmVwYXJlRmlsdGVycyhmaWx0ZXJzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9kYXNoYm9hcmQvYWN0aW9ucy9nZXREZWFkbGluZXM/JHtxc31gKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhc2hib2FyZDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyQ0E7QUF3Q0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/dashboard/services/Dashboard.js\n");

/***/ }),

/***/ "./src/modules/dashboard/store/actions.js":
/*!************************************************!*\
  !*** ./src/modules/dashboard/store/actions.js ***!
  \************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _services_Dashboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/Dashboard */ \"./src/modules/dashboard/services/Dashboard.js\");\n/* eslint-disable no-empty-pattern */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  getSubscriptionsLastMonthGroups: function getSubscriptionsLastMonthGroups(_ref, filters) {\n    var commit = _ref.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Dashboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getSubscriptionsLastMonthGroups(filters).then(function (success) {\n        commit('SUBSCRIPTIONS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getProjectsLastMonthGroups: function getProjectsLastMonthGroups(_ref2, filters) {\n    var commit = _ref2.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Dashboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getProjectsLastMonthGroups(filters).then(function (success) {\n        commit('PROJECTS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getClientsLastMonthGroups: function getClientsLastMonthGroups(_ref3, filters) {\n    var commit = _ref3.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Dashboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getClientsLastMonthGroups(filters).then(function (success) {\n        commit('CLIENTS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getDeadlines: function getDeadlines(_ref4, date) {\n    var commit = _ref4.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Dashboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getDeadlines(date).then(function (success) {\n        commit('CALENDAR', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  resetState: function resetState(_ref5) {\n    var commit = _ref5.commit;\n    commit('RESET_STATE');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvc3RvcmUvYWN0aW9ucy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9zdG9yZS9hY3Rpb25zLmpzPzkzOGMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tZW1wdHktcGF0dGVybiAqL1xuaW1wb3J0IFNlcnZpY2UgZnJvbSAnLi4vc2VydmljZXMvRGFzaGJvYXJkJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGdldFN1YnNjcmlwdGlvbnNMYXN0TW9udGhHcm91cHMgKHtjb21taXR9LCBmaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBTZXJ2aWNlLmdldFN1YnNjcmlwdGlvbnNMYXN0TW9udGhHcm91cHMoZmlsdGVycykudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdTVUJTQ1JJUFRJT05TJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGdldFByb2plY3RzTGFzdE1vbnRoR3JvdXBzICh7Y29tbWl0fSwgZmlsdGVycykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gU2VydmljZS5nZXRQcm9qZWN0c0xhc3RNb250aEdyb3VwcyhmaWx0ZXJzKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ1BST0pFQ1RTJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGdldENsaWVudHNMYXN0TW9udGhHcm91cHMgKHtjb21taXR9LCBmaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBTZXJ2aWNlLmdldENsaWVudHNMYXN0TW9udGhHcm91cHMoZmlsdGVycykudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdDTElFTlRTJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGdldERlYWRsaW5lcyAoe2NvbW1pdH0sIGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFNlcnZpY2UuZ2V0RGVhZGxpbmVzKGRhdGUpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIGNvbW1pdCgnQ0FMRU5EQVInLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgcmVzZXRTdGF0ZSAoe2NvbW1pdH0pIHtcbiAgICAgICAgY29tbWl0KCdSRVNFVF9TVEFURScpO1xuICAgIH1cbn07XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQTNCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/dashboard/store/actions.js\n");

/***/ }),

/***/ "./src/modules/dashboard/store/defaults.js":
/*!*************************************************!*\
  !*** ./src/modules/dashboard/store/defaults.js ***!
  \*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n  return {\n    subscriptions: {},\n    projects: {},\n    clients: {},\n    calendar: []\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvc3RvcmUvZGVmYXVsdHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvc3RvcmUvZGVmYXVsdHMuanM/Y2IyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCAoKSA9PiAoe1xuICAgIHN1YnNjcmlwdGlvbnM6IHt9LFxuICAgIHByb2plY3RzOiB7fSxcbiAgICBjbGllbnRzOiB7fSxcbiAgICBjYWxlbmRhcjogW10sXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/dashboard/store/defaults.js\n");

/***/ }),

/***/ "./src/modules/dashboard/store/getters.js":
/*!************************************************!*\
  !*** ./src/modules/dashboard/store/getters.js ***!
  \************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar subscriptions = function subscriptions(state) {\n  return state.subscriptions;\n};\n\nvar projects = function projects(state) {\n  return state.projects;\n};\n\nvar clients = function clients(state) {\n  return state.clients;\n};\n\nvar calendar = function calendar(state) {\n  return state.calendar;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  subscriptions: subscriptions,\n  projects: projects,\n  clients: clients,\n  calendar: calendar\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvc3RvcmUvZ2V0dGVycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9zdG9yZS9nZXR0ZXJzLmpzP2NlYzAiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc3Vic2NyaXB0aW9ucyA9IHN0YXRlID0+IHN0YXRlLnN1YnNjcmlwdGlvbnM7XG5jb25zdCBwcm9qZWN0cyA9IHN0YXRlID0+IHN0YXRlLnByb2plY3RzO1xuY29uc3QgY2xpZW50cyA9IHN0YXRlID0+IHN0YXRlLmNsaWVudHM7XG5jb25zdCBjYWxlbmRhciA9IHN0YXRlID0+IHN0YXRlLmNhbGVuZGFyO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgc3Vic2NyaXB0aW9ucyxcbiAgICBwcm9qZWN0cyxcbiAgICBjbGllbnRzLFxuICAgIGNhbGVuZGFyLFxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/dashboard/store/getters.js\n");

/***/ }),

/***/ "./src/modules/dashboard/store/index.js":
/*!**********************************************!*\
  !*** ./src/modules/dashboard/store/index.js ***!
  \**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/modules/dashboard/store/actions.js\");\n/* harmony import */ var _getters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getters */ \"./src/modules/dashboard/store/getters.js\");\n/* harmony import */ var _mutations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutations */ \"./src/modules/dashboard/store/mutations.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaults */ \"./src/modules/dashboard/store/defaults.js\");\n\n\n\n\nvar state = Object(_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  namespaced: true,\n  state: state,\n  actions: _actions__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  getters: _getters__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  mutations: _mutations__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvc3RvcmUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvc3RvcmUvaW5kZXguanM/ZjMyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYWN0aW9ucyBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IGdldHRlcnMgZnJvbSAnLi9nZXR0ZXJzJztcbmltcG9ydCBtdXRhdGlvbnMgZnJvbSAnLi9tdXRhdGlvbnMnO1xuaW1wb3J0IGRlZmF1bHRTdGF0ZSBmcm9tICcuL2RlZmF1bHRzJztcblxuY29uc3Qgc3RhdGUgPSBkZWZhdWx0U3RhdGUoKTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWVzcGFjZWQ6IHRydWUsXG4gICAgc3RhdGUsXG4gICAgYWN0aW9ucyxcbiAgICBnZXR0ZXJzLFxuICAgIG11dGF0aW9uc1xufTtcblxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/dashboard/store/index.js\n");

/***/ }),

/***/ "./src/modules/dashboard/store/mutations.js":
/*!**************************************************!*\
  !*** ./src/modules/dashboard/store/mutations.js ***!
  \**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es6.array.map */ \"./node_modules/core-js/modules/es6.array.map.js\");\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./defaults */ \"./src/modules/dashboard/store/defaults.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_11__);\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar RESET_STATE = function RESET_STATE(state) {\n  Object.assign(state, Object(_defaults__WEBPACK_IMPORTED_MODULE_10__[\"default\"])());\n};\n\nvar SUBSCRIPTIONS = function SUBSCRIPTIONS(state, value) {\n  var data = [];\n  value.groups.map(function (group) {\n    data.push(group.count);\n  });\n  state.subscriptions = {\n    series: [{\n      name: 'Subscribers',\n      data: data\n    }],\n    total: value.total\n  };\n  return state.subscriptions;\n};\n\nvar PROJECTS = function PROJECTS(state, value) {\n  var data = [];\n  value.groups.map(function (group) {\n    data.push(group.count);\n  });\n  state.projects = {\n    series: [{\n      name: 'Projects',\n      data: data\n    }],\n    total: value.total\n  };\n  return state.projects;\n};\n\nvar CLIENTS = function CLIENTS(state, value) {\n  var data = [];\n  value.groups.map(function (group) {\n    data.push(group.count);\n  });\n  state.clients = {\n    series: [{\n      name: 'Clients',\n      data: data\n    }],\n    total: value.total\n  };\n  return state.clients;\n};\n\nvar getEventColor = function getEventColor(event) {\n  if (event.status === 'DONE') {\n    return 'event-success';\n  }\n\n  if (event.status === 'IN_REVIEW' || event.status === 'CLIENT_REVIEW') {\n    return 'event-secondary';\n  }\n\n  if (event.status === 'DOING') {\n    return 'event-warning';\n  }\n\n  return 'event-danger';\n};\n\nvar CALENDAR = function CALENDAR(state, calendar) {\n  var deadlines = [];\n  calendar.map(function (cal) {\n    deadlines.push(_objectSpread({}, cal, {\n      title: cal.name,\n      startDate: moment__WEBPACK_IMPORTED_MODULE_11___default()(cal.due_date).toDate(),\n      classes: getEventColor(cal),\n      label: 'business'\n    }));\n  });\n  state.calendar = deadlines;\n  return state.calendar;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  RESET_STATE: RESET_STATE,\n  SUBSCRIPTIONS: SUBSCRIPTIONS,\n  PROJECTS: PROJECTS,\n  CLIENTS: CLIENTS,\n  CALENDAR: CALENDAR\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvc3RvcmUvbXV0YXRpb25zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvZGFzaGJvYXJkL3N0b3JlL211dGF0aW9ucy5qcz9jNzZlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZhdWx0U3RhdGUgZnJvbSAnLi9kZWZhdWx0cyc7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcblxuY29uc3QgUkVTRVRfU1RBVEUgPSAoc3RhdGUpID0+IHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLCBkZWZhdWx0U3RhdGUoKSk7XG59O1xuXG5jb25zdCBTVUJTQ1JJUFRJT05TID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICB2YWx1ZS5ncm91cHMubWFwKChncm91cCkgPT4ge1xuICAgICAgICBkYXRhLnB1c2goZ3JvdXAuY291bnQpO1xuICAgIH0pO1xuICAgIHN0YXRlLnN1YnNjcmlwdGlvbnMgPSB7XG4gICAgICAgIHNlcmllczogW3tcbiAgICAgICAgICAgIG5hbWU6ICdTdWJzY3JpYmVycycsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICB9XSxcbiAgICAgICAgdG90YWw6IHZhbHVlLnRvdGFsLFxuICAgIH07XG4gICAgcmV0dXJuIHN0YXRlLnN1YnNjcmlwdGlvbnM7XG59O1xuXG5jb25zdCBQUk9KRUNUUyA9IChzdGF0ZSwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBkYXRhID0gW107XG4gICAgdmFsdWUuZ3JvdXBzLm1hcCgoZ3JvdXApID0+IHtcbiAgICAgICAgZGF0YS5wdXNoKGdyb3VwLmNvdW50KTtcbiAgICB9KTtcbiAgICBzdGF0ZS5wcm9qZWN0cyA9IHtcbiAgICAgICAgc2VyaWVzOiBbe1xuICAgICAgICAgICAgbmFtZTogJ1Byb2plY3RzJyxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgIH1dLFxuICAgICAgICB0b3RhbDogdmFsdWUudG90YWwsXG4gICAgfTtcbiAgICByZXR1cm4gc3RhdGUucHJvamVjdHM7XG59O1xuXG5jb25zdCBDTElFTlRTID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICB2YWx1ZS5ncm91cHMubWFwKChncm91cCkgPT4ge1xuICAgICAgICBkYXRhLnB1c2goZ3JvdXAuY291bnQpO1xuICAgIH0pO1xuICAgIHN0YXRlLmNsaWVudHMgPSB7XG4gICAgICAgIHNlcmllczogW3tcbiAgICAgICAgICAgIG5hbWU6ICdDbGllbnRzJyxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgIH1dLFxuICAgICAgICB0b3RhbDogdmFsdWUudG90YWwsXG4gICAgfTtcbiAgICByZXR1cm4gc3RhdGUuY2xpZW50cztcbn07XG5cbmNvbnN0IGdldEV2ZW50Q29sb3IgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQuc3RhdHVzID09PSAnRE9ORScpIHtcbiAgICAgICAgcmV0dXJuICdldmVudC1zdWNjZXNzJztcbiAgICB9XG4gICAgaWYgKGV2ZW50LnN0YXR1cyA9PT0gJ0lOX1JFVklFVycgfHwgZXZlbnQuc3RhdHVzID09PSAnQ0xJRU5UX1JFVklFVycpIHtcbiAgICAgICAgcmV0dXJuICdldmVudC1zZWNvbmRhcnknO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuc3RhdHVzID09PSAnRE9JTkcnKSB7XG4gICAgICAgIHJldHVybiAnZXZlbnQtd2FybmluZyc7XG4gICAgfVxuICAgIHJldHVybiAnZXZlbnQtZGFuZ2VyJztcbn07XG5cbmNvbnN0IENBTEVOREFSID0gKHN0YXRlLCBjYWxlbmRhcikgPT4ge1xuICAgIGNvbnN0IGRlYWRsaW5lcyA9IFtdO1xuICAgIGNhbGVuZGFyLm1hcChjYWwgPT4ge1xuICAgICAgICBkZWFkbGluZXMucHVzaCh7XG4gICAgICAgICAgICAuLi5jYWwsXG4gICAgICAgICAgICB0aXRsZTogY2FsLm5hbWUsXG4gICAgICAgICAgICBzdGFydERhdGU6IG1vbWVudChjYWwuZHVlX2RhdGUpLnRvRGF0ZSgpLFxuICAgICAgICAgICAgY2xhc3NlczogZ2V0RXZlbnRDb2xvcihjYWwpLFxuICAgICAgICAgICAgbGFiZWw6ICdidXNpbmVzcydcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgc3RhdGUuY2FsZW5kYXIgPSBkZWFkbGluZXM7XG4gICAgcmV0dXJuIHN0YXRlLmNhbGVuZGFyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIFJFU0VUX1NUQVRFLFxuICAgIFNVQlNDUklQVElPTlMsXG4gICAgUFJPSkVDVFMsXG4gICAgQ0xJRU5UUyxcbiAgICBDQUxFTkRBUixcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/dashboard/store/mutations.js\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/Edit.vue":
/*!******************************************************!*\
  !*** ./src/modules/projects/clientProjects/Edit.vue ***!
  \******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Edit_vue_vue_type_template_id_692e56e0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=692e56e0& */ \"./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0&\");\n/* harmony import */ var _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Edit.vue?vue&type=script&lang=js& */ \"./src/modules/projects/clientProjects/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Edit_vue_vue_type_template_id_692e56e0___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Edit_vue_vue_type_template_id_692e56e0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('692e56e0')) {\n      api.createRecord('692e56e0', component.options)\n    } else {\n      api.reload('692e56e0', component.options)\n    }\n    module.hot.accept(/*! ./Edit.vue?vue&type=template&id=692e56e0& */ \"./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Edit_vue_vue_type_template_id_692e56e0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=692e56e0& */ \"./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0&\");\n(function () {\n      api.rerender('692e56e0', {\n        render: _Edit_vue_vue_type_template_id_692e56e0___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Edit_vue_vue_type_template_id_692e56e0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/clientProjects/Edit.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9FZGl0LnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL0VkaXQudnVlP2NhNjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OTJlNTZlMCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzY5MmU1NmUwJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzY5MmU1NmUwJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzY5MmU1NmUwJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OTJlNTZlMCZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc2OTJlNTZlMCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvRWRpdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/Edit.vue\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/Edit.vue?vue&type=script&lang=js&":
/*!*******************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/Edit.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9FZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9FZGl0LnZ1ZT9mN2ZkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0&":
/*!*************************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0& ***!
  \*************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_692e56e0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=template&id=692e56e0& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_692e56e0___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_692e56e0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OTJlNTZlMCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9FZGl0LnZ1ZT8yZDUwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OTJlNTZlMCZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/Edit.vue?vue&type=template&id=692e56e0&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/List.vue":
/*!******************************************************!*\
  !*** ./src/modules/projects/clientProjects/List.vue ***!
  \******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _List_vue_vue_type_template_id_59e62f74___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./List.vue?vue&type=template&id=59e62f74& */ \"./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74&\");\n/* harmony import */ var _List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./List.vue?vue&type=script&lang=js& */ \"./src/modules/projects/clientProjects/List.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _List_vue_vue_type_template_id_59e62f74___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _List_vue_vue_type_template_id_59e62f74___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('59e62f74')) {\n      api.createRecord('59e62f74', component.options)\n    } else {\n      api.reload('59e62f74', component.options)\n    }\n    module.hot.accept(/*! ./List.vue?vue&type=template&id=59e62f74& */ \"./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _List_vue_vue_type_template_id_59e62f74___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./List.vue?vue&type=template&id=59e62f74& */ \"./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74&\");\n(function () {\n      api.rerender('59e62f74', {\n        render: _List_vue_vue_type_template_id_59e62f74___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _List_vue_vue_type_template_id_59e62f74___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/clientProjects/List.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9MaXN0LnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL0xpc3QudnVlPzliOGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01OWU2MmY3NCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzU5ZTYyZjc0JykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzU5ZTYyZjc0JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzU5ZTYyZjc0JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01OWU2MmY3NCZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc1OWU2MmY3NCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvTGlzdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/List.vue\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/List.vue?vue&type=script&lang=js&":
/*!*******************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/List.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./List.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/List.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9MaXN0LnZ1ZT82Njc3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/List.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74&":
/*!*************************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74& ***!
  \*************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_59e62f74___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./List.vue?vue&type=template&id=59e62f74& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_59e62f74___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_59e62f74___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01OWU2MmY3NCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9MaXN0LnZ1ZT9kMjNjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01OWU2MmY3NCZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/List.vue?vue&type=template&id=59e62f74&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/New.vue":
/*!*****************************************************!*\
  !*** ./src/modules/projects/clientProjects/New.vue ***!
  \*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _New_vue_vue_type_template_id_4d32e13a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=4d32e13a& */ \"./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a&\");\n/* harmony import */ var _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./New.vue?vue&type=script&lang=js& */ \"./src/modules/projects/clientProjects/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _New_vue_vue_type_template_id_4d32e13a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _New_vue_vue_type_template_id_4d32e13a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('4d32e13a')) {\n      api.createRecord('4d32e13a', component.options)\n    } else {\n      api.reload('4d32e13a', component.options)\n    }\n    module.hot.accept(/*! ./New.vue?vue&type=template&id=4d32e13a& */ \"./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _New_vue_vue_type_template_id_4d32e13a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=4d32e13a& */ \"./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a&\");\n(function () {\n      api.rerender('4d32e13a', {\n        render: _New_vue_vue_type_template_id_4d32e13a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _New_vue_vue_type_template_id_4d32e13a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/clientProjects/New.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9OZXcudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvTmV3LnZ1ZT85OGNkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZDMyZTEzYSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc0ZDMyZTEzYScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc0ZDMyZTEzYScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc0ZDMyZTEzYScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZDMyZTEzYSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc0ZDMyZTEzYScsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvTmV3LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/New.vue\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/New.vue?vue&type=script&lang=js&":
/*!******************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/New.vue?vue&type=script&lang=js& ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL05ldy52dWU/ZGM0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL05ldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a&":
/*!************************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a& ***!
  \************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_4d32e13a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=template&id=4d32e13a& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_4d32e13a___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_4d32e13a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9OZXcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkMzJlMTNhJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL05ldy52dWU/N2JhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZDMyZTEzYSZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/New.vue?vue&type=template&id=4d32e13a&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/ToQuote.vue":
/*!*********************************************************!*\
  !*** ./src/modules/projects/clientProjects/ToQuote.vue ***!
  \*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ToQuote_vue_vue_type_template_id_2ba782db___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ToQuote.vue?vue&type=template&id=2ba782db& */ \"./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db&\");\n/* harmony import */ var _ToQuote_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToQuote.vue?vue&type=script&lang=js& */ \"./src/modules/projects/clientProjects/ToQuote.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _ToQuote_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _ToQuote_vue_vue_type_template_id_2ba782db___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _ToQuote_vue_vue_type_template_id_2ba782db___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('2ba782db')) {\n      api.createRecord('2ba782db', component.options)\n    } else {\n      api.reload('2ba782db', component.options)\n    }\n    module.hot.accept(/*! ./ToQuote.vue?vue&type=template&id=2ba782db& */ \"./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _ToQuote_vue_vue_type_template_id_2ba782db___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ToQuote.vue?vue&type=template&id=2ba782db& */ \"./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db&\");\n(function () {\n      api.rerender('2ba782db', {\n        render: _ToQuote_vue_vue_type_template_id_2ba782db___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _ToQuote_vue_vue_type_template_id_2ba782db___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/clientProjects/ToQuote.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9Ub1F1b3RlLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL1RvUXVvdGUudnVlPzBlYjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9Ub1F1b3RlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYmE3ODJkYiZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Ub1F1b3RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vVG9RdW90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzJiYTc4MmRiJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzJiYTc4MmRiJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzJiYTc4MmRiJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Ub1F1b3RlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYmE3ODJkYiZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCcyYmE3ODJkYicsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvVG9RdW90ZS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/ToQuote.vue\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/ToQuote.vue?vue&type=script&lang=js&":
/*!**********************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/ToQuote.vue?vue&type=script&lang=js& ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ToQuote_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ToQuote.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/ToQuote.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ToQuote_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9Ub1F1b3RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9Ub1F1b3RlLnZ1ZT84ZDIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVG9RdW90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVG9RdW90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/ToQuote.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db&":
/*!****************************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db& ***!
  \****************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ToQuote_vue_vue_type_template_id_2ba782db___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ToQuote.vue?vue&type=template&id=2ba782db& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ToQuote_vue_vue_type_template_id_2ba782db___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ToQuote_vue_vue_type_template_id_2ba782db___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9Ub1F1b3RlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYmE3ODJkYiYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9Ub1F1b3RlLnZ1ZT9kOGY1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Ub1F1b3RlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYmE3ODJkYiZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/ToQuote.vue?vue&type=template&id=2ba782db&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/components/Details.vue":
/*!********************************************************************!*\
  !*** ./src/modules/projects/clientProjects/components/Details.vue ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Details_vue_vue_type_template_id_10f864df___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Details.vue?vue&type=template&id=10f864df& */ \"./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df&\");\n/* harmony import */ var _Details_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Details.vue?vue&type=script&lang=js& */ \"./src/modules/projects/clientProjects/components/Details.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Details_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Details_vue_vue_type_template_id_10f864df___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Details_vue_vue_type_template_id_10f864df___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('10f864df')) {\n      api.createRecord('10f864df', component.options)\n    } else {\n      api.reload('10f864df', component.options)\n    }\n    module.hot.accept(/*! ./Details.vue?vue&type=template&id=10f864df& */ \"./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Details_vue_vue_type_template_id_10f864df___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Details.vue?vue&type=template&id=10f864df& */ \"./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df&\");\n(function () {\n      api.rerender('10f864df', {\n        render: _Details_vue_vue_type_template_id_10f864df___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Details_vue_vue_type_template_id_10f864df___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/clientProjects/components/Details.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9jb21wb25lbnRzL0RldGFpbHMudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvY29tcG9uZW50cy9EZXRhaWxzLnZ1ZT9mYTkxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vRGV0YWlscy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTBmODY0ZGYmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGV0YWlscy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RldGFpbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcxMGY4NjRkZicpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcxMGY4NjRkZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcxMGY4NjRkZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGV0YWlscy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTBmODY0ZGYmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMTBmODY0ZGYnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL2NvbXBvbmVudHMvRGV0YWlscy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/components/Details.vue\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/components/Details.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/components/Details.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Details_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./Details.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Details.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Details_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9jb21wb25lbnRzL0RldGFpbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL2NvbXBvbmVudHMvRGV0YWlscy52dWU/NzcwOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0RldGFpbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0RldGFpbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/components/Details.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df&":
/*!***************************************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df& ***!
  \***************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Details_vue_vue_type_template_id_10f864df___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./Details.vue?vue&type=template&id=10f864df& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Details_vue_vue_type_template_id_10f864df___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Details_vue_vue_type_template_id_10f864df___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9jb21wb25lbnRzL0RldGFpbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwZjg2NGRmJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL2NvbXBvbmVudHMvRGV0YWlscy52dWU/NGIwOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRGV0YWlscy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTBmODY0ZGYmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/components/Details.vue?vue&type=template&id=10f864df&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/components/Form.vue":
/*!*****************************************************************!*\
  !*** ./src/modules/projects/clientProjects/components/Form.vue ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Form_vue_vue_type_template_id_0bb73277___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Form.vue?vue&type=template&id=0bb73277& */ \"./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277&\");\n/* harmony import */ var _Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Form.vue?vue&type=script&lang=js& */ \"./src/modules/projects/clientProjects/components/Form.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Form_vue_vue_type_template_id_0bb73277___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Form_vue_vue_type_template_id_0bb73277___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('0bb73277')) {\n      api.createRecord('0bb73277', component.options)\n    } else {\n      api.reload('0bb73277', component.options)\n    }\n    module.hot.accept(/*! ./Form.vue?vue&type=template&id=0bb73277& */ \"./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Form_vue_vue_type_template_id_0bb73277___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Form.vue?vue&type=template&id=0bb73277& */ \"./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277&\");\n(function () {\n      api.rerender('0bb73277', {\n        render: _Form_vue_vue_type_template_id_0bb73277___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Form_vue_vue_type_template_id_0bb73277___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/clientProjects/components/Form.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9jb21wb25lbnRzL0Zvcm0udnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvY29tcG9uZW50cy9Gb3JtLnZ1ZT9kNDJlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGJiNzMyNzcmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcwYmI3MzI3NycpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcwYmI3MzI3NycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcwYmI3MzI3NycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGJiNzMyNzcmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMGJiNzMyNzcnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL2NvbXBvbmVudHMvRm9ybS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/components/Form.vue\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/components/Form.vue?vue&type=script&lang=js&":
/*!******************************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/components/Form.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./Form.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Form.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9jb21wb25lbnRzL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL2NvbXBvbmVudHMvRm9ybS52dWU/OWM0MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/components/Form.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277&":
/*!************************************************************************************************!*\
  !*** ./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277& ***!
  \************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_template_id_0bb73277___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./Form.vue?vue&type=template&id=0bb73277& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_template_id_0bb73277___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_template_id_0bb73277___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9jb21wb25lbnRzL0Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBiYjczMjc3Ji5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL2NvbXBvbmVudHMvRm9ybS52dWU/NTU3MSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGJiNzMyNzcmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/components/Form.vue?vue&type=template&id=0bb73277&\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/services/Project.js":
/*!*****************************************************************!*\
  !*** ./src/modules/projects/clientProjects/services/Project.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../common/factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\nvar Project = {\n  get: function get(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/projects?\".concat(qs)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getProject: function getProject(id) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/projects/\".concat(id)).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  create: function create(project) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post('v1/projects', project).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  update: function update(project) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].put(\"v1/projects/\".concat(project.id), project).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  delete: function _delete(project) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].delete(\"v1/projects/\".concat(project.id)).then(function (response) {\n        resolve(response);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getServices: function getServices(clientId) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/projects/actions/getServices?clientId=\".concat(clientId ? clientId : '')).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getManagers: function getManagers() {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get('v1/projects/actions/getManagers').then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getCategories: function getCategories() {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get('v1/projects/actions/getCategories').then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  cancel: function cancel(project) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].delete(\"/v1/projects/\".concat(project.id, \"/actions/cancelQuotation\")).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  uploadLogo: function uploadLogo(project, image) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/projects/\".concat(project.id, \"/actions/uploadLogo\"), {\n        image: image\n      }).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  requestQuotation: function requestQuotation(project) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/projects/\".concat(project.id, \"/actions/requestQuotation\")).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  acceptQuotation: function acceptQuotation(project) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/projects/\".concat(project.id, \"/actions/acceptQuotation\"), project).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  rejectQuotation: function rejectQuotation(project, data) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/projects/\".concat(project.id, \"/actions/rejectQuotation\"), data).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  respond: function respond(project, data) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/projects/\".concat(project.id, \"/actions/respond\"), data).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  markAsDone: function markAsDone(project, data) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/projects/\".concat(project.id, \"/actions/markAsDone\"), data).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  updateProgress: function updateProgress(project, data) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/projects/\".concat(project.id, \"/actions/updateProgress\"), data).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getProjectsToQuote: function getProjectsToQuote(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/projects/actions/getProjectsToQuote?\".concat(qs)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  deleteMedia: function deleteMedia(projectId, ids) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"v1/projects/\".concat(projectId, \"/actions/deleteDocuments\"), {\n        ids: ids\n      }).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  downloadMedia: function downloadMedia(projectId, ids) {\n    return new Promise(function (resolve, reject) {\n      Object(_common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        url: \"v1/projects/\".concat(projectId, \"/actions/downloadDocuments\"),\n        method: 'POST',\n        data: {\n          ids: ids\n        },\n        responseType: 'blob'\n      }).then(function (success) {\n        var url = window.URL.createObjectURL(new Blob([success.data]));\n        var link = document.createElement('a');\n        link.href = url;\n        link.setAttribute('download', \"documents-\".concat(projectId, \".zip\"));\n        document.body.appendChild(link);\n        link.click();\n        resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getStatuses: function getStatuses() {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/projects/actions/getStatuses\").then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  updateStatus: function updateStatus(id, status) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"v1/projects/\".concat(id, \"/actions/updateStatus\"), {\n        status: status\n      }).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getFolderNames: function getFolderNames(id, status) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/projects/actions/getFolderNames\", {\n        status: status\n      }).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Project);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9zZXJ2aWNlcy9Qcm9qZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvc2VydmljZXMvUHJvamVjdC5qcz80NjY1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBcGlGYWN0b3J5IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mYWN0b3JpZXMvQXBpRmFjdG9yeSc7XG5pbXBvcnQge3ByZXBhcmVGaWx0ZXJzfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbmNvbnN0IFByb2plY3QgPSB7XG4gICAgZ2V0OiAoZmlsdGVycykgPT4ge1xuICAgICAgICBjb25zdCBxcyA9IHByZXBhcmVGaWx0ZXJzKGZpbHRlcnMpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5nZXQoYHYxL3Byb2plY3RzPyR7cXN9YCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldFByb2plY3Q6IChpZCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5nZXQoYHYxL3Byb2plY3RzLyR7aWR9YCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgY3JlYXRlOiAocHJvamVjdCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KCd2MS9wcm9qZWN0cycsIHByb2plY3QpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHVwZGF0ZTogKHByb2plY3QpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkucHV0KGB2MS9wcm9qZWN0cy8ke3Byb2plY3QuaWR9YCwgcHJvamVjdCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlOiAocHJvamVjdCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5kZWxldGUoYHYxL3Byb2plY3RzLyR7cHJvamVjdC5pZH1gKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldFNlcnZpY2VzOiAoY2xpZW50SWQpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9wcm9qZWN0cy9hY3Rpb25zL2dldFNlcnZpY2VzP2NsaWVudElkPSR7Y2xpZW50SWQgPyBjbGllbnRJZCA6ICcnfWApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldE1hbmFnZXJzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldCgndjEvcHJvamVjdHMvYWN0aW9ucy9nZXRNYW5hZ2VycycpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldENhdGVnb3JpZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KCd2MS9wcm9qZWN0cy9hY3Rpb25zL2dldENhdGVnb3JpZXMnKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBjYW5jZWwgKHByb2plY3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZGVsZXRlKGAvdjEvcHJvamVjdHMvJHtwcm9qZWN0LmlkfS9hY3Rpb25zL2NhbmNlbFF1b3RhdGlvbmApLnRoZW4oXG4gICAgICAgICAgICAgICAgKHN1Y2Nlc3MpID0+IHJlc29sdmUoc3VjY2Vzcy5kYXRhLmRhdGEpLFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICB1cGxvYWRMb2dvIChwcm9qZWN0LCBpbWFnZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGAvdjEvcHJvamVjdHMvJHtwcm9qZWN0LmlkfS9hY3Rpb25zL3VwbG9hZExvZ29gLCB7aW1hZ2V9KS50aGVuKFxuICAgICAgICAgICAgICAgIChzdWNjZXNzKSA9PiByZXNvbHZlKHN1Y2Nlc3MuZGF0YS5kYXRhKSxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgcmVxdWVzdFF1b3RhdGlvbiAocHJvamVjdCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGAvdjEvcHJvamVjdHMvJHtwcm9qZWN0LmlkfS9hY3Rpb25zL3JlcXVlc3RRdW90YXRpb25gKS50aGVuKFxuICAgICAgICAgICAgICAgIChzdWNjZXNzKSA9PiByZXNvbHZlKHN1Y2Nlc3MuZGF0YS5kYXRhKSxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgYWNjZXB0UXVvdGF0aW9uIChwcm9qZWN0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoYC92MS9wcm9qZWN0cy8ke3Byb2plY3QuaWR9L2FjdGlvbnMvYWNjZXB0UXVvdGF0aW9uYCwgcHJvamVjdCkudGhlbihcbiAgICAgICAgICAgICAgICAoc3VjY2VzcykgPT4gcmVzb2x2ZShzdWNjZXNzLmRhdGEuZGF0YSksXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHJlamVjdFF1b3RhdGlvbiAocHJvamVjdCwgZGF0YSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGAvdjEvcHJvamVjdHMvJHtwcm9qZWN0LmlkfS9hY3Rpb25zL3JlamVjdFF1b3RhdGlvbmAsIGRhdGEpLnRoZW4oXG4gICAgICAgICAgICAgICAgKHN1Y2Nlc3MpID0+IHJlc29sdmUoc3VjY2Vzcy5kYXRhLmRhdGEpLFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICByZXNwb25kIChwcm9qZWN0LCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoYC92MS9wcm9qZWN0cy8ke3Byb2plY3QuaWR9L2FjdGlvbnMvcmVzcG9uZGAsIGRhdGEpLnRoZW4oXG4gICAgICAgICAgICAgICAgKHN1Y2Nlc3MpID0+IHJlc29sdmUoc3VjY2Vzcy5kYXRhLmRhdGEpLFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBtYXJrQXNEb25lIChwcm9qZWN0LCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoYC92MS9wcm9qZWN0cy8ke3Byb2plY3QuaWR9L2FjdGlvbnMvbWFya0FzRG9uZWAsIGRhdGEpLnRoZW4oXG4gICAgICAgICAgICAgICAgKHN1Y2Nlc3MpID0+IHJlc29sdmUoc3VjY2Vzcy5kYXRhLmRhdGEpLFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICB1cGRhdGVQcm9ncmVzcyAocHJvamVjdCwgZGF0YSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGAvdjEvcHJvamVjdHMvJHtwcm9qZWN0LmlkfS9hY3Rpb25zL3VwZGF0ZVByb2dyZXNzYCwgZGF0YSkudGhlbihcbiAgICAgICAgICAgICAgICAoc3VjY2VzcykgPT4gcmVzb2x2ZShzdWNjZXNzLmRhdGEuZGF0YSksXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldFByb2plY3RzVG9RdW90ZTogKGZpbHRlcnMpID0+IHtcbiAgICAgICAgY29uc3QgcXMgPSBwcmVwYXJlRmlsdGVycyhmaWx0ZXJzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9wcm9qZWN0cy9hY3Rpb25zL2dldFByb2plY3RzVG9RdW90ZT8ke3FzfWApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBkZWxldGVNZWRpYTogKHByb2plY3RJZCwgaWRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoYHYxL3Byb2plY3RzLyR7cHJvamVjdElkfS9hY3Rpb25zL2RlbGV0ZURvY3VtZW50c2AsIHtpZHN9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBkb3dubG9hZE1lZGlhOiAocHJvamVjdElkLCBpZHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3Rvcnkoe1xuICAgICAgICAgICAgICAgIHVybDogYHYxL3Byb2plY3RzLyR7cHJvamVjdElkfS9hY3Rpb25zL2Rvd25sb2FkRG9jdW1lbnRzYCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7aWRzfSxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgICAgICAgICAgfSkudGhlbihcbiAgICAgICAgICAgICAgICAoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbc3VjY2Vzcy5kYXRhXSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGBkb2N1bWVudHMtJHtwcm9qZWN0SWR9LnppcGApO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcy5kYXRhLmRhdGEpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0U3RhdHVzZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9wcm9qZWN0cy9hY3Rpb25zL2dldFN0YXR1c2VzYCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBkYXRlU3RhdHVzOiAoaWQsIHN0YXR1cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGB2MS9wcm9qZWN0cy8ke2lkfS9hY3Rpb25zL3VwZGF0ZVN0YXR1c2AsIHtzdGF0dXN9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXRGb2xkZXJOYW1lczogKGlkLCBzdGF0dXMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZ2V0KGB2MS9wcm9qZWN0cy9hY3Rpb25zL2dldEZvbGRlck5hbWVzYCwge3N0YXR1c30pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvamVjdDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBSkE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVNQTtBQStNQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/services/Project.js\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/store/actions.js":
/*!**************************************************************!*\
  !*** ./src/modules/projects/clientProjects/store/actions.js ***!
  \**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty.js\");\n/* harmony import */ var _services_Project__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/Project */ \"./src/modules/projects/clientProjects/services/Project.js\");\n\n\n/* eslint-disable no-empty-pattern */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  getProjects: function getProjects(_ref, filters) {\n    var commit = _ref.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(filters).then(function (success) {\n        commit('PROJECTS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getProject: function getProject(_ref2, id) {\n    var commit = _ref2.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getProject(id).then(function (success) {\n        commit('SELECTED_PROJECT', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  createProject: function createProject(_ref3, project) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref3);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].create(project).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  updateProject: function updateProject(_ref4, project) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref4);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].update(project).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  deleteProject: function deleteProject(_ref5, project) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref5);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].delete(project).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getServices: function getServices(_ref6, clientId) {\n    var commit = _ref6.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getServices(clientId).then(function (success) {\n        commit('PROJECT_SERVICES', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getManagers: function getManagers(_ref7) {\n    var commit = _ref7.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getManagers().then(function (success) {\n        commit('PROJECT_MANAGERS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getCategories: function getCategories(_ref8) {\n    var commit = _ref8.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCategories().then(function (success) {\n        commit('PROJECT_REASONS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  cancel: function cancel(_ref9, project) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref9);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].cancel(project).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  uploadLogo: function uploadLogo(_ref10, data) {\n    var commit = _ref10.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].uploadLogo(data.project, data.image).then(function (success) {\n        commit('UPLOADED_LOGO', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  requestQuotation: function requestQuotation(_ref11, project) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref11);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].requestQuotation(project).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  accept: function accept(_ref12, project) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref12);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].acceptQuotation(project).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  reject: function reject(_ref13, data) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref13);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].rejectQuotation(data.project, data.data).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  respond: function respond(_ref14, data) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref14);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].respond(data.project, data.data).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  markAsDone: function markAsDone(_ref15, project) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref15);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].markAsDone(project).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  updateProgress: function updateProgress(_ref16, data) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref16);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateProgress(data.project, data.data).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getProjectsToQuote: function getProjectsToQuote(_ref17, project) {\n    var commit = _ref17.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getProjectsToQuote(project).then(function (success) {\n        commit('PROJECTS_TO_QUOTE', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  deleteMedia: function deleteMedia(_ref18, data) {\n    var commit = _ref18.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deleteMedia(data.projectId, data.ids).then(function (success) {\n        commit('SELECTED_PROJECT', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  downloadMedia: function downloadMedia(_ref19, data) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref19);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Project__WEBPACK_IMPORTED_MODULE_1__[\"default\"].downloadMedia(data.projectId, data.ids).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  resetState: function resetState(_ref20) {\n    var commit = _ref20.commit;\n    commit('RESET_STATE');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9zdG9yZS9hY3Rpb25zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvc3RvcmUvYWN0aW9ucy5qcz8xOTE2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5LXBhdHRlcm4gKi9cbmltcG9ydCBQcm9qZWN0U2VydmljZSBmcm9tICcuLi9zZXJ2aWNlcy9Qcm9qZWN0JztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGdldFByb2plY3RzICh7Y29tbWl0fSwgZmlsdGVycykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gUHJvamVjdFNlcnZpY2UuZ2V0KGZpbHRlcnMpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIGNvbW1pdCgnUFJPSkVDVFMnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgZ2V0UHJvamVjdCAoe2NvbW1pdH0sIGlkKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBQcm9qZWN0U2VydmljZS5nZXRQcm9qZWN0KGlkKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ1NFTEVDVEVEX1BST0pFQ1QnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlUHJvamVjdCAoe30sIHByb2plY3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFByb2plY3RTZXJ2aWNlLmNyZWF0ZShwcm9qZWN0KS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIHVwZGF0ZVByb2plY3QgKHt9LCBwcm9qZWN0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBQcm9qZWN0U2VydmljZS51cGRhdGUocHJvamVjdCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBkZWxldGVQcm9qZWN0ICh7fSwgcHJvamVjdCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gUHJvamVjdFNlcnZpY2UuZGVsZXRlKHByb2plY3QpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgZ2V0U2VydmljZXMgKHtjb21taXR9LCBjbGllbnRJZCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gUHJvamVjdFNlcnZpY2UuZ2V0U2VydmljZXMoY2xpZW50SWQpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIGNvbW1pdCgnUFJPSkVDVF9TRVJWSUNFUycsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBnZXRNYW5hZ2VycyAoe2NvbW1pdH0pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFByb2plY3RTZXJ2aWNlLmdldE1hbmFnZXJzKCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdQUk9KRUNUX01BTkFHRVJTJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGdldENhdGVnb3JpZXMgKHtjb21taXR9KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBQcm9qZWN0U2VydmljZS5nZXRDYXRlZ29yaWVzKCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdQUk9KRUNUX1JFQVNPTlMnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgY2FuY2VsICh7fSwgcHJvamVjdCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gUHJvamVjdFNlcnZpY2UuY2FuY2VsKHByb2plY3QpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgdXBsb2FkTG9nbyAoe2NvbW1pdH0sIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFByb2plY3RTZXJ2aWNlLnVwbG9hZExvZ28oZGF0YS5wcm9qZWN0LCBkYXRhLmltYWdlKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ1VQTE9BREVEX0xPR08nLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgcmVxdWVzdFF1b3RhdGlvbiAoe30sIHByb2plY3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFByb2plY3RTZXJ2aWNlLnJlcXVlc3RRdW90YXRpb24ocHJvamVjdCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBhY2NlcHQgKHt9LCBwcm9qZWN0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBQcm9qZWN0U2VydmljZS5hY2NlcHRRdW90YXRpb24ocHJvamVjdCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICByZWplY3QgKHt9LCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBQcm9qZWN0U2VydmljZS5yZWplY3RRdW90YXRpb24oZGF0YS5wcm9qZWN0LCBkYXRhLmRhdGEpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgcmVzcG9uZCAoe30sIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFByb2plY3RTZXJ2aWNlLnJlc3BvbmQoZGF0YS5wcm9qZWN0LCBkYXRhLmRhdGEpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgbWFya0FzRG9uZSAoe30sIHByb2plY3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFByb2plY3RTZXJ2aWNlLm1hcmtBc0RvbmUocHJvamVjdCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICB1cGRhdGVQcm9ncmVzcyAoe30sIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFByb2plY3RTZXJ2aWNlLnVwZGF0ZVByb2dyZXNzKGRhdGEucHJvamVjdCwgZGF0YS5kYXRhKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGdldFByb2plY3RzVG9RdW90ZSAoe2NvbW1pdH0sIHByb2plY3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFByb2plY3RTZXJ2aWNlLmdldFByb2plY3RzVG9RdW90ZShwcm9qZWN0KS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ1BST0pFQ1RTX1RPX1FVT1RFJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIGRlbGV0ZU1lZGlhICh7Y29tbWl0fSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gUHJvamVjdFNlcnZpY2UuZGVsZXRlTWVkaWEoZGF0YS5wcm9qZWN0SWQsIGRhdGEuaWRzKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ1NFTEVDVEVEX1BST0pFQ1QnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgZG93bmxvYWRNZWRpYSAoe30sIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFByb2plY3RTZXJ2aWNlLmRvd25sb2FkTWVkaWEoZGF0YS5wcm9qZWN0SWQsIGRhdGEuaWRzKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIHJlc2V0U3RhdGUgKHtjb21taXR9KSB7XG4gICAgICAgIGNvbW1pdCgnUkVTRVRfU1RBVEUnKTtcbiAgICB9XG59O1xuXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBMUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/store/actions.js\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/store/defaults.js":
/*!***************************************************************!*\
  !*** ./src/modules/projects/clientProjects/store/defaults.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar defaultPaginatedData = {\n  data: [],\n  meta: {\n    pagination: {\n      current_page: 1,\n      per_page: 10\n    }\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n  return {\n    projects: defaultPaginatedData,\n    projectsToQuote: defaultPaginatedData,\n    selectedProject: {},\n    services: [],\n    managers: [],\n    reasons: []\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9zdG9yZS9kZWZhdWx0cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL3N0b3JlL2RlZmF1bHRzLmpzPzcwNDIiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdFBhZ2luYXRlZERhdGEgPSB7XG4gICAgZGF0YTogW10sXG4gICAgbWV0YToge1xuICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgICAgICBwZXJfcGFnZTogMTAsXG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiAoe1xuICAgIHByb2plY3RzOiBkZWZhdWx0UGFnaW5hdGVkRGF0YSxcbiAgICBwcm9qZWN0c1RvUXVvdGU6IGRlZmF1bHRQYWdpbmF0ZWREYXRhLFxuICAgIHNlbGVjdGVkUHJvamVjdDoge30sXG4gICAgc2VydmljZXM6IFtdLFxuICAgIG1hbmFnZXJzOiBbXSxcbiAgICByZWFzb25zOiBbXSxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBREE7QUFGQTtBQVVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/store/defaults.js\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/store/getters.js":
/*!**************************************************************!*\
  !*** ./src/modules/projects/clientProjects/store/getters.js ***!
  \**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar projects = function projects(state) {\n  return state.projects;\n};\n\nvar selectedProject = function selectedProject(state) {\n  return state.selectedProject;\n};\n\nvar services = function services(state) {\n  return state.services;\n};\n\nvar managers = function managers(state) {\n  return state.managers;\n};\n\nvar reasons = function reasons(state) {\n  return state.reasons;\n};\n\nvar projectsToQuote = function projectsToQuote(state) {\n  return state.projectsToQuote;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  projects: projects,\n  selectedProject: selectedProject,\n  services: services,\n  managers: managers,\n  reasons: reasons,\n  projectsToQuote: projectsToQuote\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9zdG9yZS9nZXR0ZXJzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvY2xpZW50UHJvamVjdHMvc3RvcmUvZ2V0dGVycy5qcz8zNWJmIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb2plY3RzID0gc3RhdGUgPT4gc3RhdGUucHJvamVjdHM7XG5jb25zdCBzZWxlY3RlZFByb2plY3QgPSBzdGF0ZSA9PiBzdGF0ZS5zZWxlY3RlZFByb2plY3Q7XG5jb25zdCBzZXJ2aWNlcyA9IHN0YXRlID0+IHN0YXRlLnNlcnZpY2VzO1xuY29uc3QgbWFuYWdlcnMgPSBzdGF0ZSA9PiBzdGF0ZS5tYW5hZ2VycztcbmNvbnN0IHJlYXNvbnMgPSBzdGF0ZSA9PiBzdGF0ZS5yZWFzb25zO1xuY29uc3QgcHJvamVjdHNUb1F1b3RlID0gc3RhdGUgPT4gc3RhdGUucHJvamVjdHNUb1F1b3RlO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvamVjdHMsXG4gICAgc2VsZWN0ZWRQcm9qZWN0LFxuICAgIHNlcnZpY2VzLFxuICAgIG1hbmFnZXJzLFxuICAgIHJlYXNvbnMsXG4gICAgcHJvamVjdHNUb1F1b3RlLFxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/store/getters.js\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/store/index.js":
/*!************************************************************!*\
  !*** ./src/modules/projects/clientProjects/store/index.js ***!
  \************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/modules/projects/clientProjects/store/actions.js\");\n/* harmony import */ var _getters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getters */ \"./src/modules/projects/clientProjects/store/getters.js\");\n/* harmony import */ var _mutations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutations */ \"./src/modules/projects/clientProjects/store/mutations.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaults */ \"./src/modules/projects/clientProjects/store/defaults.js\");\n\n\n\n\nvar state = Object(_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  namespaced: true,\n  state: state,\n  actions: _actions__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  getters: _getters__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  mutations: _mutations__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9zdG9yZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL3N0b3JlL2luZGV4LmpzPzAwMGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFjdGlvbnMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCBnZXR0ZXJzIGZyb20gJy4vZ2V0dGVycyc7XG5pbXBvcnQgbXV0YXRpb25zIGZyb20gJy4vbXV0YXRpb25zJztcbmltcG9ydCBkZWZhdWx0U3RhdGUgZnJvbSAnLi9kZWZhdWx0cyc7XG5cbmNvbnN0IHN0YXRlID0gZGVmYXVsdFN0YXRlKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgIHN0YXRlLFxuICAgIGFjdGlvbnMsXG4gICAgZ2V0dGVycyxcbiAgICBtdXRhdGlvbnNcbn07XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/store/index.js\n");

/***/ }),

/***/ "./src/modules/projects/clientProjects/store/mutations.js":
/*!****************************************************************!*\
  !*** ./src/modules/projects/clientProjects/store/mutations.js ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaults */ \"./src/modules/projects/clientProjects/store/defaults.js\");\n\n\nvar RESET_STATE = function RESET_STATE(state) {\n  Object.assign(state, Object(_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"])());\n};\n\nvar PROJECTS = function PROJECTS(state, value) {\n  state.projects = value;\n  return state.projects;\n};\n\nvar SELECTED_PROJECT = function SELECTED_PROJECT(state, value) {\n  state.selectedProject = value;\n  return state.selectedProject;\n};\n\nvar PROJECT_SERVICES = function PROJECT_SERVICES(state, services) {\n  state.services = services;\n  return state.services;\n};\n\nvar PROJECT_MANAGERS = function PROJECT_MANAGERS(state, managers) {\n  state.managers = managers;\n  return state.managers;\n};\n\nvar PROJECT_REASONS = function PROJECT_REASONS(state, reasons) {\n  state.reasons = reasons;\n  return state.reasons;\n};\n\nvar UPLOADED_LOGO = function UPLOADED_LOGO(state, project) {\n  state.selectedProject.logo = project.logo;\n  return state.selectedProject;\n};\n\nvar PROJECTS_TO_QUOTE = function PROJECTS_TO_QUOTE(state, projects) {\n  state.projectsToQuote = projects;\n  return state.projectsToQuote;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  RESET_STATE: RESET_STATE,\n  PROJECTS: PROJECTS,\n  SELECTED_PROJECT: SELECTED_PROJECT,\n  PROJECT_SERVICES: PROJECT_SERVICES,\n  PROJECT_MANAGERS: PROJECT_MANAGERS,\n  PROJECT_REASONS: PROJECT_REASONS,\n  UPLOADED_LOGO: UPLOADED_LOGO,\n  PROJECTS_TO_QUOTE: PROJECTS_TO_QUOTE\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9zdG9yZS9tdXRhdGlvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9zdG9yZS9tdXRhdGlvbnMuanM/MTg1MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFN0YXRlIGZyb20gJy4vZGVmYXVsdHMnO1xuXG5jb25zdCBSRVNFVF9TVEFURSA9IChzdGF0ZSkgPT4ge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUsIGRlZmF1bHRTdGF0ZSgpKTtcbn07XG5cbmNvbnN0IFBST0pFQ1RTID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLnByb2plY3RzID0gdmFsdWU7XG4gICAgcmV0dXJuIHN0YXRlLnByb2plY3RzO1xufTtcblxuY29uc3QgU0VMRUNURURfUFJPSkVDVCA9IChzdGF0ZSwgdmFsdWUpID0+IHtcbiAgICBzdGF0ZS5zZWxlY3RlZFByb2plY3QgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQcm9qZWN0O1xufTtcblxuY29uc3QgUFJPSkVDVF9TRVJWSUNFUyA9IChzdGF0ZSwgc2VydmljZXMpID0+IHtcbiAgICBzdGF0ZS5zZXJ2aWNlcyA9IHNlcnZpY2VzO1xuICAgIHJldHVybiBzdGF0ZS5zZXJ2aWNlcztcbn07XG5cbmNvbnN0IFBST0pFQ1RfTUFOQUdFUlMgPSAoc3RhdGUsIG1hbmFnZXJzKSA9PiB7XG4gICAgc3RhdGUubWFuYWdlcnMgPSBtYW5hZ2VycztcbiAgICByZXR1cm4gc3RhdGUubWFuYWdlcnM7XG59O1xuXG5jb25zdCBQUk9KRUNUX1JFQVNPTlMgPSAoc3RhdGUsIHJlYXNvbnMpID0+IHtcbiAgICBzdGF0ZS5yZWFzb25zID0gcmVhc29ucztcbiAgICByZXR1cm4gc3RhdGUucmVhc29ucztcbn07XG5cbmNvbnN0IFVQTE9BREVEX0xPR08gPSAoc3RhdGUsIHByb2plY3QpID0+IHtcbiAgICBzdGF0ZS5zZWxlY3RlZFByb2plY3QubG9nbyA9IHByb2plY3QubG9nbztcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQcm9qZWN0O1xufTtcblxuY29uc3QgUFJPSkVDVFNfVE9fUVVPVEUgPSAoc3RhdGUsIHByb2plY3RzKSA9PiB7XG4gICAgc3RhdGUucHJvamVjdHNUb1F1b3RlID0gcHJvamVjdHM7XG4gICAgcmV0dXJuIHN0YXRlLnByb2plY3RzVG9RdW90ZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBSRVNFVF9TVEFURSxcbiAgICBQUk9KRUNUUyxcbiAgICBTRUxFQ1RFRF9QUk9KRUNULFxuICAgIFBST0pFQ1RfU0VSVklDRVMsXG4gICAgUFJPSkVDVF9NQU5BR0VSUyxcbiAgICBQUk9KRUNUX1JFQVNPTlMsXG4gICAgVVBMT0FERURfTE9HTyxcbiAgICBQUk9KRUNUU19UT19RVU9URSxcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/clientProjects/store/mutations.js\n");

/***/ }),

/***/ "./src/modules/projects/services/Edit.vue":
/*!************************************************!*\
  !*** ./src/modules/projects/services/Edit.vue ***!
  \************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Edit_vue_vue_type_template_id_90f149f2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=90f149f2& */ \"./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2&\");\n/* harmony import */ var _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Edit.vue?vue&type=script&lang=js& */ \"./src/modules/projects/services/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Edit_vue_vue_type_template_id_90f149f2___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Edit_vue_vue_type_template_id_90f149f2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('90f149f2')) {\n      api.createRecord('90f149f2', component.options)\n    } else {\n      api.reload('90f149f2', component.options)\n    }\n    module.hot.accept(/*! ./Edit.vue?vue&type=template&id=90f149f2& */ \"./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Edit_vue_vue_type_template_id_90f149f2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=90f149f2& */ \"./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2&\");\n(function () {\n      api.rerender('90f149f2', {\n        render: _Edit_vue_vue_type_template_id_90f149f2___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Edit_vue_vue_type_template_id_90f149f2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/services/Edit.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9FZGl0LnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL0VkaXQudnVlP2I0ZGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05MGYxNDlmMiZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzkwZjE0OWYyJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzkwZjE0OWYyJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzkwZjE0OWYyJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05MGYxNDlmMiZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc5MGYxNDlmMicsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvRWRpdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/services/Edit.vue\n");

/***/ }),

/***/ "./src/modules/projects/services/Edit.vue?vue&type=script&lang=js&":
/*!*************************************************************************!*\
  !*** ./src/modules/projects/services/Edit.vue?vue&type=script&lang=js& ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9FZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9FZGl0LnZ1ZT9iNWU4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/services/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2&":
/*!*******************************************************************************!*\
  !*** ./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2& ***!
  \*******************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_90f149f2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=template&id=90f149f2& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_90f149f2___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_90f149f2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05MGYxNDlmMiYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9FZGl0LnZ1ZT9mZGM2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05MGYxNDlmMiZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/services/Edit.vue?vue&type=template&id=90f149f2&\n");

/***/ }),

/***/ "./src/modules/projects/services/List.vue":
/*!************************************************!*\
  !*** ./src/modules/projects/services/List.vue ***!
  \************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _List_vue_vue_type_template_id_af8198ca___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./List.vue?vue&type=template&id=af8198ca& */ \"./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca&\");\n/* harmony import */ var _List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./List.vue?vue&type=script&lang=js& */ \"./src/modules/projects/services/List.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _List_vue_vue_type_template_id_af8198ca___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _List_vue_vue_type_template_id_af8198ca___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('af8198ca')) {\n      api.createRecord('af8198ca', component.options)\n    } else {\n      api.reload('af8198ca', component.options)\n    }\n    module.hot.accept(/*! ./List.vue?vue&type=template&id=af8198ca& */ \"./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _List_vue_vue_type_template_id_af8198ca___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./List.vue?vue&type=template&id=af8198ca& */ \"./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca&\");\n(function () {\n      api.rerender('af8198ca', {\n        render: _List_vue_vue_type_template_id_af8198ca___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _List_vue_vue_type_template_id_af8198ca___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/services/List.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9MaXN0LnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL0xpc3QudnVlPzNlYzEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hZjgxOThjYSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJ2FmODE5OGNhJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJ2FmODE5OGNhJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJ2FmODE5OGNhJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hZjgxOThjYSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCdhZjgxOThjYScsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvTGlzdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/services/List.vue\n");

/***/ }),

/***/ "./src/modules/projects/services/List.vue?vue&type=script&lang=js&":
/*!*************************************************************************!*\
  !*** ./src/modules/projects/services/List.vue?vue&type=script&lang=js& ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./List.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/List.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9MaXN0LnZ1ZT84NmU0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/services/List.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca&":
/*!*******************************************************************************!*\
  !*** ./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca& ***!
  \*******************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_af8198ca___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./List.vue?vue&type=template&id=af8198ca& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_af8198ca___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_List_vue_vue_type_template_id_af8198ca___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hZjgxOThjYSYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9MaXN0LnZ1ZT8zMTJiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hZjgxOThjYSZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/services/List.vue?vue&type=template&id=af8198ca&\n");

/***/ }),

/***/ "./src/modules/projects/services/New.vue":
/*!***********************************************!*\
  !*** ./src/modules/projects/services/New.vue ***!
  \***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _New_vue_vue_type_template_id_05b5879a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=05b5879a& */ \"./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a&\");\n/* harmony import */ var _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./New.vue?vue&type=script&lang=js& */ \"./src/modules/projects/services/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _New_vue_vue_type_template_id_05b5879a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _New_vue_vue_type_template_id_05b5879a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('05b5879a')) {\n      api.createRecord('05b5879a', component.options)\n    } else {\n      api.reload('05b5879a', component.options)\n    }\n    module.hot.accept(/*! ./New.vue?vue&type=template&id=05b5879a& */ \"./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _New_vue_vue_type_template_id_05b5879a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=05b5879a& */ \"./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a&\");\n(function () {\n      api.rerender('05b5879a', {\n        render: _New_vue_vue_type_template_id_05b5879a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _New_vue_vue_type_template_id_05b5879a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/services/New.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9OZXcudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvTmV3LnZ1ZT8yYTM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNWI1ODc5YSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcwNWI1ODc5YScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcwNWI1ODc5YScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcwNWI1ODc5YScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNWI1ODc5YSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCcwNWI1ODc5YScsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvTmV3LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/services/New.vue\n");

/***/ }),

/***/ "./src/modules/projects/services/New.vue?vue&type=script&lang=js&":
/*!************************************************************************!*\
  !*** ./src/modules/projects/services/New.vue?vue&type=script&lang=js& ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL05ldy52dWU/MjI4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL05ldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/projects/services/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a&":
/*!******************************************************************************!*\
  !*** ./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a& ***!
  \******************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_05b5879a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=template&id=05b5879a& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_05b5879a___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_05b5879a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9OZXcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1YjU4NzlhJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL05ldy52dWU/M2YyZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNWI1ODc5YSZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/services/New.vue?vue&type=template&id=05b5879a&\n");

/***/ }),

/***/ "./src/modules/projects/services/components/Form.vue":
/*!***********************************************************!*\
  !*** ./src/modules/projects/services/components/Form.vue ***!
  \***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Form_vue_vue_type_template_id_6e63dff0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Form.vue?vue&type=template&id=6e63dff0& */ \"./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0&\");\n/* harmony import */ var _Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Form.vue?vue&type=script&lang=js& */ \"./src/modules/projects/services/components/Form.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Form_vue_vue_type_template_id_6e63dff0___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Form_vue_vue_type_template_id_6e63dff0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('6e63dff0')) {\n      api.createRecord('6e63dff0', component.options)\n    } else {\n      api.reload('6e63dff0', component.options)\n    }\n    module.hot.accept(/*! ./Form.vue?vue&type=template&id=6e63dff0& */ \"./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Form_vue_vue_type_template_id_6e63dff0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Form.vue?vue&type=template&id=6e63dff0& */ \"./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0&\");\n(function () {\n      api.rerender('6e63dff0', {\n        render: _Form_vue_vue_type_template_id_6e63dff0___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Form_vue_vue_type_template_id_6e63dff0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/projects/services/components/Form.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9jb21wb25lbnRzL0Zvcm0udnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvY29tcG9uZW50cy9Gb3JtLnZ1ZT9kMjc2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmU2M2RmZjAmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc2ZTYzZGZmMCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc2ZTYzZGZmMCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc2ZTYzZGZmMCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmU2M2RmZjAmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNmU2M2RmZjAnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL2NvbXBvbmVudHMvRm9ybS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/services/components/Form.vue\n");

/***/ }),

/***/ "./src/modules/projects/services/components/Form.vue?vue&type=script&lang=js&":
/*!************************************************************************************!*\
  !*** ./src/modules/projects/services/components/Form.vue?vue&type=script&lang=js& ***!
  \************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./Form.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/components/Form.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9jb21wb25lbnRzL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL2NvbXBvbmVudHMvRm9ybS52dWU/YWEwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/services/components/Form.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0&":
/*!******************************************************************************************!*\
  !*** ./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0& ***!
  \******************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_template_id_6e63dff0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./Form.vue?vue&type=template&id=6e63dff0& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_template_id_6e63dff0___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Form_vue_vue_type_template_id_6e63dff0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9jb21wb25lbnRzL0Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZlNjNkZmYwJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL2NvbXBvbmVudHMvRm9ybS52dWU/M2FiNCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmU2M2RmZjAmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/services/components/Form.vue?vue&type=template&id=6e63dff0&\n");

/***/ }),

/***/ "./src/modules/projects/services/services/Service.js":
/*!***********************************************************!*\
  !*** ./src/modules/projects/services/services/Service.js ***!
  \***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../common/factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\nvar Service = {\n  get: function get(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_1__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/services?\".concat(qs)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getService: function getService(id) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(\"v1/services/\".concat(id, \"?include=category\")).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  create: function create(service) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post('v1/services', service).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  update: function update(service) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].put(\"v1/services/\".concat(service.id), service).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  enable: function enable(service) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/services/\".concat(service.id, \"/actions/enable\")).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  disable: function disable(service) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"].post(\"/v1/services/\".concat(service.id, \"/actions/disable\")).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  downloadMedia: function downloadMedia(service) {\n    return new Promise(function (resolve, reject) {\n      Object(_common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        url: \"v1/services/\".concat(service.id, \"/actions/downloadDocuments\"),\n        method: 'POST',\n        responseType: 'blob'\n      }).then(function (success) {\n        var url = window.URL.createObjectURL(new Blob([success.data]));\n        var link = document.createElement('a');\n        link.href = url;\n        link.setAttribute('download', service.media_filename);\n        document.body.appendChild(link);\n        link.click();\n        resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Service);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9zZXJ2aWNlcy9TZXJ2aWNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvc2VydmljZXMvU2VydmljZS5qcz80ZWJlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBcGlGYWN0b3J5IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mYWN0b3JpZXMvQXBpRmFjdG9yeSc7XG5pbXBvcnQge3ByZXBhcmVGaWx0ZXJzfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL3NlcnZpY2VzL1V0aWxpdHlTZXJ2aWNlXCI7XG5cbmNvbnN0IFNlcnZpY2UgPSB7XG4gICAgZ2V0OiAoZmlsdGVycykgPT4ge1xuICAgICAgICBjb25zdCBxcyA9IHByZXBhcmVGaWx0ZXJzKGZpbHRlcnMpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5nZXQoYHYxL3NlcnZpY2VzPyR7cXN9YCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldFNlcnZpY2U6IChpZCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5nZXQoYHYxL3NlcnZpY2VzLyR7aWR9P2luY2x1ZGU9Y2F0ZWdvcnlgKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBjcmVhdGU6IChzZXJ2aWNlKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoJ3YxL3NlcnZpY2VzJywgc2VydmljZSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBkYXRlOiAoc2VydmljZSkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wdXQoYHYxL3NlcnZpY2VzLyR7c2VydmljZS5pZH1gLCBzZXJ2aWNlKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBlbmFibGUgKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkucG9zdChgL3YxL3NlcnZpY2VzLyR7c2VydmljZS5pZH0vYWN0aW9ucy9lbmFibGVgKS50aGVuKFxuICAgICAgICAgICAgICAgIChzdWNjZXNzKSA9PiByZXNvbHZlKHN1Y2Nlc3MuZGF0YS5kYXRhKSxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGlzYWJsZSAoc2VydmljZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGAvdjEvc2VydmljZXMvJHtzZXJ2aWNlLmlkfS9hY3Rpb25zL2Rpc2FibGVgKS50aGVuKFxuICAgICAgICAgICAgICAgIChzdWNjZXNzKSA9PiByZXNvbHZlKHN1Y2Nlc3MuZGF0YS5kYXRhKSxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZG93bmxvYWRNZWRpYTogKHNlcnZpY2UpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3Rvcnkoe1xuICAgICAgICAgICAgICAgIHVybDogYHYxL3NlcnZpY2VzLyR7c2VydmljZS5pZH0vYWN0aW9ucy9kb3dubG9hZERvY3VtZW50c2AsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcbiAgICAgICAgICAgIH0pLnRoZW4oXG4gICAgICAgICAgICAgICAgKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW3N1Y2Nlc3MuZGF0YV0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBzZXJ2aWNlLm1lZGlhX2ZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MuZGF0YS5kYXRhKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VydmljZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQXpFQTtBQTRFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/services/services/Service.js\n");

/***/ }),

/***/ "./src/modules/projects/services/store/actions.js":
/*!********************************************************!*\
  !*** ./src/modules/projects/services/store/actions.js ***!
  \********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty.js\");\n/* harmony import */ var _services_Service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/Service */ \"./src/modules/projects/services/services/Service.js\");\n\n\n/* eslint-disable no-empty-pattern */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  getServices: function getServices(_ref, filters) {\n    var commit = _ref.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Service__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(filters).then(function (success) {\n        commit('SERVICES', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getService: function getService(_ref2, id) {\n    var commit = _ref2.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Service__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getService(id).then(function (success) {\n        commit('SELECTED_SERVICE', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  createService: function createService(_ref3, service) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref3);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Service__WEBPACK_IMPORTED_MODULE_1__[\"default\"].create(service).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  updateService: function updateService(_ref4, service) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref4);\n\n    return new Promise(function (resolve, reject) {\n      return _services_Service__WEBPACK_IMPORTED_MODULE_1__[\"default\"].update(service).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  enable: function enable(_ref5, service) {\n    var commit = _ref5.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Service__WEBPACK_IMPORTED_MODULE_1__[\"default\"].enable(service).then(function (success) {\n        commit('ENABLE', success);\n        resolve({\n          success: success\n        });\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  disable: function disable(_ref6, service) {\n    var commit = _ref6.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_Service__WEBPACK_IMPORTED_MODULE_1__[\"default\"].disable(service).then(function (success) {\n        commit('DISABLE', success);\n        resolve({\n          success: success\n        });\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  resetState: function resetState(_ref7) {\n    var commit = _ref7.commit;\n    commit('RESET_STATE');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9zdG9yZS9hY3Rpb25zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvc3RvcmUvYWN0aW9ucy5qcz9kZDU2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5LXBhdHRlcm4gKi9cbmltcG9ydCBTZXJ2aWNlU2VydmljZSBmcm9tICcuLi9zZXJ2aWNlcy9TZXJ2aWNlJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGdldFNlcnZpY2VzICh7Y29tbWl0fSwgZmlsdGVycykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gU2VydmljZVNlcnZpY2UuZ2V0KGZpbHRlcnMpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIGNvbW1pdCgnU0VSVklDRVMnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgZ2V0U2VydmljZSAoe2NvbW1pdH0sIGlkKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBTZXJ2aWNlU2VydmljZS5nZXRTZXJ2aWNlKGlkKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ1NFTEVDVEVEX1NFUlZJQ0UnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmljZSAoe30sIHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFNlcnZpY2VTZXJ2aWNlLmNyZWF0ZShzZXJ2aWNlKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIHVwZGF0ZVNlcnZpY2UgKHt9LCBzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBTZXJ2aWNlU2VydmljZS51cGRhdGUoc2VydmljZSkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBlbmFibGUgKHtjb21taXR9LCBzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBTZXJ2aWNlU2VydmljZS5lbmFibGUoc2VydmljZSkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdFTkFCTEUnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N1Y2Nlc3N9KTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBkaXNhYmxlICh7Y29tbWl0fSwgc2VydmljZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gU2VydmljZVNlcnZpY2UuZGlzYWJsZShzZXJ2aWNlKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ0RJU0FCTEUnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N1Y2Nlc3N9KTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICByZXNldFN0YXRlICh7Y29tbWl0fSkge1xuICAgICAgICBjb21taXQoJ1JFU0VUX1NUQVRFJyk7XG4gICAgfVxufTtcblxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFyQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/services/store/actions.js\n");

/***/ }),

/***/ "./src/modules/projects/services/store/defaults.js":
/*!*********************************************************!*\
  !*** ./src/modules/projects/services/store/defaults.js ***!
  \*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n  return {\n    services: {\n      data: [],\n      meta: {\n        pagination: {\n          current_page: 1,\n          per_page: 10\n        }\n      }\n    },\n    selectedService: {}\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9zdG9yZS9kZWZhdWx0cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL3N0b3JlL2RlZmF1bHRzLmpzPzc1ZDIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgKCkgPT4gKHtcbiAgICBzZXJ2aWNlczoge1xuICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgICAgICAgICBwZXJfcGFnZTogMTAsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHNlbGVjdGVkU2VydmljZToge30sXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUZBO0FBU0E7QUFWQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/projects/services/store/defaults.js\n");

/***/ }),

/***/ "./src/modules/projects/services/store/getters.js":
/*!********************************************************!*\
  !*** ./src/modules/projects/services/store/getters.js ***!
  \********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar services = function services(state) {\n  return state.services;\n};\n\nvar selectedService = function selectedService(state) {\n  return state.selectedService;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  services: services,\n  selectedService: selectedService\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9zdG9yZS9nZXR0ZXJzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvc3RvcmUvZ2V0dGVycy5qcz8xZWRlIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHNlcnZpY2VzID0gc3RhdGUgPT4gc3RhdGUuc2VydmljZXM7XG5jb25zdCBzZWxlY3RlZFNlcnZpY2UgPSBzdGF0ZSA9PiBzdGF0ZS5zZWxlY3RlZFNlcnZpY2U7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBzZXJ2aWNlcyxcbiAgICBzZWxlY3RlZFNlcnZpY2UsXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/services/store/getters.js\n");

/***/ }),

/***/ "./src/modules/projects/services/store/index.js":
/*!******************************************************!*\
  !*** ./src/modules/projects/services/store/index.js ***!
  \******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/modules/projects/services/store/actions.js\");\n/* harmony import */ var _getters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getters */ \"./src/modules/projects/services/store/getters.js\");\n/* harmony import */ var _mutations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutations */ \"./src/modules/projects/services/store/mutations.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaults */ \"./src/modules/projects/services/store/defaults.js\");\n\n\n\n\nvar state = Object(_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  namespaced: true,\n  state: state,\n  actions: _actions__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  getters: _getters__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  mutations: _mutations__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9zdG9yZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3Byb2plY3RzL3NlcnZpY2VzL3N0b3JlL2luZGV4LmpzPzhmN2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFjdGlvbnMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCBnZXR0ZXJzIGZyb20gJy4vZ2V0dGVycyc7XG5pbXBvcnQgbXV0YXRpb25zIGZyb20gJy4vbXV0YXRpb25zJztcbmltcG9ydCBkZWZhdWx0U3RhdGUgZnJvbSAnLi9kZWZhdWx0cyc7XG5cbmNvbnN0IHN0YXRlID0gZGVmYXVsdFN0YXRlKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgIHN0YXRlLFxuICAgIGFjdGlvbnMsXG4gICAgZ2V0dGVycyxcbiAgICBtdXRhdGlvbnNcbn07XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/projects/services/store/index.js\n");

/***/ }),

/***/ "./src/modules/projects/services/store/mutations.js":
/*!**********************************************************!*\
  !*** ./src/modules/projects/services/store/mutations.js ***!
  \**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.array.find-index */ \"./node_modules/core-js/modules/es6.array.find-index.js\");\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaults */ \"./src/modules/projects/services/store/defaults.js\");\n\n\n\nvar RESET_STATE = function RESET_STATE(state) {\n  Object.assign(state, Object(_defaults__WEBPACK_IMPORTED_MODULE_1__[\"default\"])());\n};\n\nvar SERVICES = function SERVICES(state, value) {\n  state.services = value;\n  return state.services;\n};\n\nvar SELECTED_SERVICE = function SELECTED_SERVICE(state, value) {\n  state.selectedService = value;\n  return state.selectedService;\n};\n\nvar ENABLE = function ENABLE(state, service) {\n  var currentServiceIndex = _.findIndex(state.services.data, function (u) {\n    return u.id === service.id;\n  });\n\n  state.services.data[currentServiceIndex].is_available = service.is_available;\n  state.services.data[currentServiceIndex].can_enable = service.can_enable;\n  state.services.data[currentServiceIndex].can_disable = service.can_disable;\n  return state.services;\n};\n\nvar DISABLE = function DISABLE(state, service) {\n  var currentServiceIndex = _.findIndex(state.services.data, function (u) {\n    return u.id === service.id;\n  });\n\n  state.services.data[currentServiceIndex].is_available = service.is_available;\n  state.services.data[currentServiceIndex].can_enable = service.can_enable;\n  state.services.data[currentServiceIndex].can_disable = service.can_disable;\n  return state.services;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  RESET_STATE: RESET_STATE,\n  SERVICES: SERVICES,\n  SELECTED_SERVICE: SELECTED_SERVICE,\n  ENABLE: ENABLE,\n  DISABLE: DISABLE\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9zdG9yZS9tdXRhdGlvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9zdG9yZS9tdXRhdGlvbnMuanM/NzA0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFN0YXRlIGZyb20gJy4vZGVmYXVsdHMnO1xuXG5jb25zdCBSRVNFVF9TVEFURSA9IChzdGF0ZSkgPT4ge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUsIGRlZmF1bHRTdGF0ZSgpKTtcbn07XG5cbmNvbnN0IFNFUlZJQ0VTID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLnNlcnZpY2VzID0gdmFsdWU7XG4gICAgcmV0dXJuIHN0YXRlLnNlcnZpY2VzO1xufTtcblxuY29uc3QgU0VMRUNURURfU0VSVklDRSA9IChzdGF0ZSwgdmFsdWUpID0+IHtcbiAgICBzdGF0ZS5zZWxlY3RlZFNlcnZpY2UgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRTZXJ2aWNlO1xufTtcblxuY29uc3QgRU5BQkxFID0gKHN0YXRlLCBzZXJ2aWNlKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFNlcnZpY2VJbmRleCA9IF8uZmluZEluZGV4KHN0YXRlLnNlcnZpY2VzLmRhdGEsICh1KSA9PiB7XG4gICAgICAgIHJldHVybiB1LmlkID09PSBzZXJ2aWNlLmlkXG4gICAgfSk7XG4gICAgc3RhdGUuc2VydmljZXMuZGF0YVtjdXJyZW50U2VydmljZUluZGV4XS5pc19hdmFpbGFibGUgPSBzZXJ2aWNlLmlzX2F2YWlsYWJsZTtcbiAgICBzdGF0ZS5zZXJ2aWNlcy5kYXRhW2N1cnJlbnRTZXJ2aWNlSW5kZXhdLmNhbl9lbmFibGUgPSBzZXJ2aWNlLmNhbl9lbmFibGU7XG4gICAgc3RhdGUuc2VydmljZXMuZGF0YVtjdXJyZW50U2VydmljZUluZGV4XS5jYW5fZGlzYWJsZSA9IHNlcnZpY2UuY2FuX2Rpc2FibGU7XG4gICAgcmV0dXJuIHN0YXRlLnNlcnZpY2VzO1xufTtcblxuY29uc3QgRElTQUJMRSA9IChzdGF0ZSwgc2VydmljZSkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTZXJ2aWNlSW5kZXggPSBfLmZpbmRJbmRleChzdGF0ZS5zZXJ2aWNlcy5kYXRhLCAodSkgPT4ge1xuICAgICAgICByZXR1cm4gdS5pZCA9PT0gc2VydmljZS5pZFxuICAgIH0pO1xuICAgIHN0YXRlLnNlcnZpY2VzLmRhdGFbY3VycmVudFNlcnZpY2VJbmRleF0uaXNfYXZhaWxhYmxlID0gc2VydmljZS5pc19hdmFpbGFibGU7XG4gICAgc3RhdGUuc2VydmljZXMuZGF0YVtjdXJyZW50U2VydmljZUluZGV4XS5jYW5fZW5hYmxlID0gc2VydmljZS5jYW5fZW5hYmxlO1xuICAgIHN0YXRlLnNlcnZpY2VzLmRhdGFbY3VycmVudFNlcnZpY2VJbmRleF0uY2FuX2Rpc2FibGUgPSBzZXJ2aWNlLmNhbl9kaXNhYmxlO1xuICAgIHJldHVybiBzdGF0ZS5zZXJ2aWNlcztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBSRVNFVF9TVEFURSxcbiAgICBTRVJWSUNFUyxcbiAgICBTRUxFQ1RFRF9TRVJWSUNFLFxuICAgIEVOQUJMRSxcbiAgICBESVNBQkxFLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/projects/services/store/mutations.js\n");

/***/ }),

/***/ "./src/modules/users/ChangePassword.vue":
/*!**********************************************!*\
  !*** ./src/modules/users/ChangePassword.vue ***!
  \**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ChangePassword_vue_vue_type_template_id_18b72853___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChangePassword.vue?vue&type=template&id=18b72853& */ \"./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853&\");\n/* harmony import */ var _ChangePassword_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChangePassword.vue?vue&type=script&lang=js& */ \"./src/modules/users/ChangePassword.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _ChangePassword_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ChangePassword.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _ChangePassword_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _ChangePassword_vue_vue_type_template_id_18b72853___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _ChangePassword_vue_vue_type_template_id_18b72853___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('18b72853')) {\n      api.createRecord('18b72853', component.options)\n    } else {\n      api.reload('18b72853', component.options)\n    }\n    module.hot.accept(/*! ./ChangePassword.vue?vue&type=template&id=18b72853& */ \"./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _ChangePassword_vue_vue_type_template_id_18b72853___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChangePassword.vue?vue&type=template&id=18b72853& */ \"./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853&\");\n(function () {\n      api.rerender('18b72853', {\n        render: _ChangePassword_vue_vue_type_template_id_18b72853___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _ChangePassword_vue_vue_type_template_id_18b72853___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/users/ChangePassword.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9DaGFuZ2VQYXNzd29yZC52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9DaGFuZ2VQYXNzd29yZC52dWU/YTlkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0NoYW5nZVBhc3N3b3JkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xOGI3Mjg1MyZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NoYW5nZVBhc3N3b3JkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzE4YjcyODUzJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzE4YjcyODUzJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzE4YjcyODUzJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MThiNzI4NTMmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMThiNzI4NTMnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL3VzZXJzL0NoYW5nZVBhc3N3b3JkLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/ChangePassword.vue\n");

/***/ }),

/***/ "./src/modules/users/ChangePassword.vue?vue&type=script&lang=js&":
/*!***********************************************************************!*\
  !*** ./src/modules/users/ChangePassword.vue?vue&type=script&lang=js& ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ChangePassword.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvQ2hhbmdlUGFzc3dvcmQudnVlPzQzNGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2hhbmdlUGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/ChangePassword.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&":
/*!********************************************************************************!*\
  !*** ./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss& ***!
  \********************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ChangePassword.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvQ2hhbmdlUGFzc3dvcmQudnVlP2JlMTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tOC1vbmVPZi0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2hhbmdlUGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/users/ChangePassword.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853&":
/*!*****************************************************************************!*\
  !*** ./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853& ***!
  \*****************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_template_id_18b72853___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ChangePassword.vue?vue&type=template&id=18b72853& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_template_id_18b72853___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangePassword_vue_vue_type_template_id_18b72853___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9DaGFuZ2VQYXNzd29yZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MThiNzI4NTMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvQ2hhbmdlUGFzc3dvcmQudnVlP2JjYjIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NoYW5nZVBhc3N3b3JkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xOGI3Mjg1MyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/ChangePassword.vue?vue&type=template&id=18b72853&\n");

/***/ }),

/***/ "./src/modules/users/ClientsConfirmations.vue":
/*!****************************************************!*\
  !*** ./src/modules/users/ClientsConfirmations.vue ***!
  \****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ClientsConfirmations_vue_vue_type_template_id_21bade1e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ClientsConfirmations.vue?vue&type=template&id=21bade1e& */ \"./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e&\");\n/* harmony import */ var _ClientsConfirmations_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ClientsConfirmations.vue?vue&type=script&lang=js& */ \"./src/modules/users/ClientsConfirmations.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _ClientsConfirmations_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _ClientsConfirmations_vue_vue_type_template_id_21bade1e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _ClientsConfirmations_vue_vue_type_template_id_21bade1e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('21bade1e')) {\n      api.createRecord('21bade1e', component.options)\n    } else {\n      api.reload('21bade1e', component.options)\n    }\n    module.hot.accept(/*! ./ClientsConfirmations.vue?vue&type=template&id=21bade1e& */ \"./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _ClientsConfirmations_vue_vue_type_template_id_21bade1e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ClientsConfirmations.vue?vue&type=template&id=21bade1e& */ \"./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e&\");\n(function () {\n      api.rerender('21bade1e', {\n        render: _ClientsConfirmations_vue_vue_type_template_id_21bade1e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _ClientsConfirmations_vue_vue_type_template_id_21bade1e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/users/ClientsConfirmations.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9DbGllbnRzQ29uZmlybWF0aW9ucy52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9DbGllbnRzQ29uZmlybWF0aW9ucy52dWU/MjAxMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0NsaWVudHNDb25maXJtYXRpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMWJhZGUxZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9DbGllbnRzQ29uZmlybWF0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NsaWVudHNDb25maXJtYXRpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnMjFiYWRlMWUnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnMjFiYWRlMWUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnMjFiYWRlMWUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0NsaWVudHNDb25maXJtYXRpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMWJhZGUxZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCcyMWJhZGUxZScsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvdXNlcnMvQ2xpZW50c0NvbmZpcm1hdGlvbnMudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/users/ClientsConfirmations.vue\n");

/***/ }),

/***/ "./src/modules/users/ClientsConfirmations.vue?vue&type=script&lang=js&":
/*!*****************************************************************************!*\
  !*** ./src/modules/users/ClientsConfirmations.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ClientsConfirmations_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ClientsConfirmations.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ClientsConfirmations.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ClientsConfirmations_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9DbGllbnRzQ29uZmlybWF0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvQ2xpZW50c0NvbmZpcm1hdGlvbnMudnVlPzc3NjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DbGllbnRzQ29uZmlybWF0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2xpZW50c0NvbmZpcm1hdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/ClientsConfirmations.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e&":
/*!***********************************************************************************!*\
  !*** ./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e& ***!
  \***********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ClientsConfirmations_vue_vue_type_template_id_21bade1e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ClientsConfirmations.vue?vue&type=template&id=21bade1e& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ClientsConfirmations_vue_vue_type_template_id_21bade1e___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ClientsConfirmations_vue_vue_type_template_id_21bade1e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9DbGllbnRzQ29uZmlybWF0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjFiYWRlMWUmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvQ2xpZW50c0NvbmZpcm1hdGlvbnMudnVlPzU3NjQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NsaWVudHNDb25maXJtYXRpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMWJhZGUxZSZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/ClientsConfirmations.vue?vue&type=template&id=21bade1e&\n");

/***/ }),

/***/ "./src/modules/users/Edit.vue":
/*!************************************!*\
  !*** ./src/modules/users/Edit.vue ***!
  \************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Edit_vue_vue_type_template_id_de9e1f1c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=de9e1f1c& */ \"./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c&\");\n/* harmony import */ var _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Edit.vue?vue&type=script&lang=js& */ \"./src/modules/users/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Edit_vue_vue_type_template_id_de9e1f1c___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Edit_vue_vue_type_template_id_de9e1f1c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('de9e1f1c')) {\n      api.createRecord('de9e1f1c', component.options)\n    } else {\n      api.reload('de9e1f1c', component.options)\n    }\n    module.hot.accept(/*! ./Edit.vue?vue&type=template&id=de9e1f1c& */ \"./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Edit_vue_vue_type_template_id_de9e1f1c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edit.vue?vue&type=template&id=de9e1f1c& */ \"./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c&\");\n(function () {\n      api.rerender('de9e1f1c', {\n        render: _Edit_vue_vue_type_template_id_de9e1f1c___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Edit_vue_vue_type_template_id_de9e1f1c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/users/Edit.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9FZGl0LnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL0VkaXQudnVlPzExZDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZTllMWYxYyZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJ2RlOWUxZjFjJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJ2RlOWUxZjFjJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJ2RlOWUxZjFjJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZTllMWYxYyZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCdkZTllMWYxYycsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvdXNlcnMvRWRpdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/Edit.vue\n");

/***/ }),

/***/ "./src/modules/users/Edit.vue?vue&type=script&lang=js&":
/*!*************************************************************!*\
  !*** ./src/modules/users/Edit.vue?vue&type=script&lang=js& ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Edit.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9FZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9FZGl0LnZ1ZT9mYzdkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/Edit.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c&":
/*!*******************************************************************!*\
  !*** ./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c& ***!
  \*******************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_de9e1f1c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Edit.vue?vue&type=template&id=de9e1f1c& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_de9e1f1c___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Edit_vue_vue_type_template_id_de9e1f1c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZTllMWYxYyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9FZGl0LnZ1ZT82NTgwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9FZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZTllMWYxYyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/Edit.vue?vue&type=template&id=de9e1f1c&\n");

/***/ }),

/***/ "./src/modules/users/New.vue":
/*!***********************************!*\
  !*** ./src/modules/users/New.vue ***!
  \***********************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _New_vue_vue_type_template_id_bde46530___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=bde46530& */ \"./src/modules/users/New.vue?vue&type=template&id=bde46530&\");\n/* harmony import */ var _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./New.vue?vue&type=script&lang=js& */ \"./src/modules/users/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _New_vue_vue_type_template_id_bde46530___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _New_vue_vue_type_template_id_bde46530___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('bde46530')) {\n      api.createRecord('bde46530', component.options)\n    } else {\n      api.reload('bde46530', component.options)\n    }\n    module.hot.accept(/*! ./New.vue?vue&type=template&id=bde46530& */ \"./src/modules/users/New.vue?vue&type=template&id=bde46530&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _New_vue_vue_type_template_id_bde46530___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./New.vue?vue&type=template&id=bde46530& */ \"./src/modules/users/New.vue?vue&type=template&id=bde46530&\");\n(function () {\n      api.rerender('bde46530', {\n        render: _New_vue_vue_type_template_id_bde46530___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _New_vue_vue_type_template_id_bde46530___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/users/New.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9OZXcudnVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvTmV3LnZ1ZT82ZGU0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZGU0NjUzMCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCdiZGU0NjUzMCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCdiZGU0NjUzMCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCdiZGU0NjUzMCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZGU0NjUzMCZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCdiZGU0NjUzMCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvdXNlcnMvTmV3LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/New.vue\n");

/***/ }),

/***/ "./src/modules/users/New.vue?vue&type=script&lang=js&":
/*!************************************************************!*\
  !*** ./src/modules/users/New.vue?vue&type=script&lang=js& ***!
  \************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/New.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9OZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL05ldy52dWU/ZTgyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL05ldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/users/New.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/users/New.vue?vue&type=template&id=bde46530&":
/*!******************************************************************!*\
  !*** ./src/modules/users/New.vue?vue&type=template&id=bde46530& ***!
  \******************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_bde46530___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./New.vue?vue&type=template&id=bde46530& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/New.vue?vue&type=template&id=bde46530&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_bde46530___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_New_vue_vue_type_template_id_bde46530___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9OZXcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJkZTQ2NTMwJi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL05ldy52dWU/YWNjMSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLSFjYWNoZS1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6XFxcIm5vZGVfbW9kdWxlcy8uY2FjaGUvdnVlLWxvYWRlclxcXCIsXFxcImNhY2hlSWRlbnRpZmllclxcXCI6XFxcImU0MDU3ZWZhLXZ1ZS1sb2FkZXItdGVtcGxhdGVcXFwifSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmV3LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZGU0NjUzMCZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/New.vue?vue&type=template&id=bde46530&\n");

/***/ }),

/***/ "./src/modules/users/Profile.vue":
/*!***************************************!*\
  !*** ./src/modules/users/Profile.vue ***!
  \***************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Profile_vue_vue_type_template_id_ea752e1e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Profile.vue?vue&type=template&id=ea752e1e& */ \"./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e&\");\n/* harmony import */ var _Profile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Profile.vue?vue&type=script&lang=js& */ \"./src/modules/users/Profile.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _Profile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Profile.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _Profile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Profile_vue_vue_type_template_id_ea752e1e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Profile_vue_vue_type_template_id_ea752e1e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('ea752e1e')) {\n      api.createRecord('ea752e1e', component.options)\n    } else {\n      api.reload('ea752e1e', component.options)\n    }\n    module.hot.accept(/*! ./Profile.vue?vue&type=template&id=ea752e1e& */ \"./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Profile_vue_vue_type_template_id_ea752e1e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Profile.vue?vue&type=template&id=ea752e1e& */ \"./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e&\");\n(function () {\n      api.rerender('ea752e1e', {\n        render: _Profile_vue_vue_type_template_id_ea752e1e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Profile_vue_vue_type_template_id_ea752e1e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/users/Profile.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL1Byb2ZpbGUudnVlPzQ4YTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9Qcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYTc1MmUxZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Qcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vUHJvZmlsZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJ2VhNzUyZTFlJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJ2VhNzUyZTFlJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJ2VhNzUyZTFlJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYTc1MmUxZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCdlYTc1MmUxZScsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvdXNlcnMvUHJvZmlsZS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/users/Profile.vue\n");

/***/ }),

/***/ "./src/modules/users/Profile.vue?vue&type=script&lang=js&":
/*!****************************************************************!*\
  !*** ./src/modules/users/Profile.vue?vue&type=script&lang=js& ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Profile.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT81MTkyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/Profile.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&":
/*!*************************************************************************!*\
  !*** ./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss& ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Profile.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT85NWZiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUHJvZmlsZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUHJvZmlsZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/Profile.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e&":
/*!**********************************************************************!*\
  !*** ./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e& ***!
  \**********************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_template_id_ea752e1e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Profile.vue?vue&type=template&id=ea752e1e& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_template_id_ea752e1e___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Profile_vue_vue_type_template_id_ea752e1e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYTc1MmUxZSYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9Qcm9maWxlLnZ1ZT82Y2MyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYTc1MmUxZSZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/Profile.vue?vue&type=template&id=ea752e1e&\n");

/***/ }),

/***/ "./src/modules/users/Users.vue":
/*!*************************************!*\
  !*** ./src/modules/users/Users.vue ***!
  \*************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_vue_vue_type_template_id_0c8eb1d0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Users.vue?vue&type=template&id=0c8eb1d0& */ \"./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0&\");\n/* harmony import */ var _Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Users.vue?vue&type=script&lang=js& */ \"./src/modules/users/Users.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _Users_vue_vue_type_template_id_0c8eb1d0___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _Users_vue_vue_type_template_id_0c8eb1d0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('0c8eb1d0')) {\n      api.createRecord('0c8eb1d0', component.options)\n    } else {\n      api.reload('0c8eb1d0', component.options)\n    }\n    module.hot.accept(/*! ./Users.vue?vue&type=template&id=0c8eb1d0& */ \"./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _Users_vue_vue_type_template_id_0c8eb1d0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Users.vue?vue&type=template&id=0c8eb1d0& */ \"./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0&\");\n(function () {\n      api.rerender('0c8eb1d0', {\n        render: _Users_vue_vue_type_template_id_0c8eb1d0___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _Users_vue_vue_type_template_id_0c8eb1d0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/users/Users.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9Vc2Vycy52dWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9Vc2Vycy52dWU/ZDAwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1VzZXJzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYzhlYjFkMCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Vc2Vycy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL1VzZXJzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL1VzZXJzL2J1bGkvQ29kZS9nZW90ZWNobmljcy9nZW90ZWNobmljcy1kYXNoYm9hcmQvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnMGM4ZWIxZDAnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnMGM4ZWIxZDAnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnMGM4ZWIxZDAnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VzZXJzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYzhlYjFkMCZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCcwYzhlYjFkMCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL21vZHVsZXMvdXNlcnMvVXNlcnMudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/users/Users.vue\n");

/***/ }),

/***/ "./src/modules/users/Users.vue?vue&type=script&lang=js&":
/*!**************************************************************!*\
  !*** ./src/modules/users/Users.vue?vue&type=script&lang=js& ***!
  \**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Users.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Users.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9Vc2Vycy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvVXNlcnMudnVlPzM5ZWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEyLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Vc2Vycy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVXNlcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/Users.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0&":
/*!********************************************************************!*\
  !*** ./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0& ***!
  \********************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_template_id_0c8eb1d0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Users.vue?vue&type=template&id=0c8eb1d0& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_template_id_0c8eb1d0___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_template_id_0c8eb1d0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9Vc2Vycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGM4ZWIxZDAmLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvVXNlcnMudnVlPzgwYTkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hY2FjaGUtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOlxcXCJub2RlX21vZHVsZXMvLmNhY2hlL3Z1ZS1sb2FkZXJcXFwiLFxcXCJjYWNoZUlkZW50aWZpZXJcXFwiOlxcXCJlNDA1N2VmYS12dWUtbG9hZGVyLXRlbXBsYXRlXFxcIn0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1VzZXJzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYzhlYjFkMCZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/Users.vue?vue&type=template&id=0c8eb1d0&\n");

/***/ }),

/***/ "./src/modules/users/components/CompanyProfile.vue":
/*!*********************************************************!*\
  !*** ./src/modules/users/components/CompanyProfile.vue ***!
  \*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _CompanyProfile_vue_vue_type_template_id_4851700d___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CompanyProfile.vue?vue&type=template&id=4851700d& */ \"./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d&\");\n/* harmony import */ var _CompanyProfile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CompanyProfile.vue?vue&type=script&lang=js& */ \"./src/modules/users/components/CompanyProfile.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _CompanyProfile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CompanyProfile.vue?vue&type=style&index=0&lang=scss& */ \"./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _CompanyProfile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _CompanyProfile_vue_vue_type_template_id_4851700d___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _CompanyProfile_vue_vue_type_template_id_4851700d___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('4851700d')) {\n      api.createRecord('4851700d', component.options)\n    } else {\n      api.reload('4851700d', component.options)\n    }\n    module.hot.accept(/*! ./CompanyProfile.vue?vue&type=template&id=4851700d& */ \"./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _CompanyProfile_vue_vue_type_template_id_4851700d___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CompanyProfile.vue?vue&type=template&id=4851700d& */ \"./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d&\");\n(function () {\n      api.rerender('4851700d', {\n        render: _CompanyProfile_vue_vue_type_template_id_4851700d___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _CompanyProfile_vue_vue_type_template_id_4851700d___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/users/components/CompanyProfile.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL2NvbXBvbmVudHMvQ29tcGFueVByb2ZpbGUudnVlPzRmZTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9Db21wYW55UHJvZmlsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDg1MTcwMGQmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ29tcGFueVByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Db21wYW55UHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQ29tcGFueVByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvVXNlcnMvYnVsaS9Db2RlL2dlb3RlY2huaWNzL2dlb3RlY2huaWNzLWRhc2hib2FyZC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc0ODUxNzAwZCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc0ODUxNzAwZCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc0ODUxNzAwZCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ29tcGFueVByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ4NTE3MDBkJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzQ4NTE3MDBkJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/components/CompanyProfile.vue\n");

/***/ }),

/***/ "./src/modules/users/components/CompanyProfile.vue?vue&type=script&lang=js&":
/*!**********************************************************************************!*\
  !*** ./src/modules/users/components/CompanyProfile.vue?vue&type=script&lang=js& ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CompanyProfile.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT9hNjQ5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29tcGFueVByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbXBhbnlQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/users/components/CompanyProfile.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&":
/*!*******************************************************************************************!*\
  !*** ./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss& ***!
  \*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CompanyProfile.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT81YTY0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29tcGFueVByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0xIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS04LW9uZU9mLTEtMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbXBhbnlQcm9maWxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/components/CompanyProfile.vue?vue&type=style&index=0&lang=scss&\n");

/***/ }),

/***/ "./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d&":
/*!****************************************************************************************!*\
  !*** ./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d& ***!
  \****************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_template_id_4851700d___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CompanyProfile.vue?vue&type=template&id=4851700d& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_template_id_4851700d___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompanyProfile_vue_vue_type_template_id_4851700d___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ODUxNzAwZCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL0NvbXBhbnlQcm9maWxlLnZ1ZT8zNDExIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db21wYW55UHJvZmlsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDg1MTcwMGQmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/components/CompanyProfile.vue?vue&type=template&id=4851700d&\n");

/***/ }),

/***/ "./src/modules/users/components/UserForm.vue":
/*!***************************************************!*\
  !*** ./src/modules/users/components/UserForm.vue ***!
  \***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _UserForm_vue_vue_type_template_id_21345210___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UserForm.vue?vue&type=template&id=21345210& */ \"./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210&\");\n/* harmony import */ var _UserForm_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserForm.vue?vue&type=script&lang=js& */ \"./src/modules/users/components/UserForm.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _UserForm_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _UserForm_vue_vue_type_template_id_21345210___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _UserForm_vue_vue_type_template_id_21345210___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (true) {\n  var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ \"./node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('21345210')) {\n      api.createRecord('21345210', component.options)\n    } else {\n      api.reload('21345210', component.options)\n    }\n    module.hot.accept(/*! ./UserForm.vue?vue&type=template&id=21345210& */ \"./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210&\", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _UserForm_vue_vue_type_template_id_21345210___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UserForm.vue?vue&type=template&id=21345210& */ \"./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210&\");\n(function () {\n      api.rerender('21345210', {\n        render: _UserForm_vue_vue_type_template_id_21345210___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n        staticRenderFns: _UserForm_vue_vue_type_template_id_21345210___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]\n      })\n    })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))\n  }\n}\ncomponent.options.__file = \"src/modules/users/components/UserForm.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL1VzZXJGb3JtLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL2NvbXBvbmVudHMvVXNlckZvcm0udnVlP2ViMWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9Vc2VyRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjEzNDUyMTAmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVXNlckZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Vc2VyRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9Vc2Vycy9idWxpL0NvZGUvZ2VvdGVjaG5pY3MvZ2VvdGVjaG5pY3MtZGFzaGJvYXJkL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzIxMzQ1MjEwJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzIxMzQ1MjEwJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzIxMzQ1MjEwJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Vc2VyRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjEzNDUyMTAmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMjEzNDUyMTAnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9tb2R1bGVzL3VzZXJzL2NvbXBvbmVudHMvVXNlckZvcm0udnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/users/components/UserForm.vue\n");

/***/ }),

/***/ "./src/modules/users/components/UserForm.vue?vue&type=script&lang=js&":
/*!****************************************************************************!*\
  !*** ./src/modules/users/components/UserForm.vue?vue&type=script&lang=js& ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserForm_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./UserForm.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/UserForm.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserForm_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL1VzZXJGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL1VzZXJGb3JtLnZ1ZT8yNDIyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xMi0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVXNlckZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jYWNoZS1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMTItMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2FjaGUtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTAtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1VzZXJGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/users/components/UserForm.vue?vue&type=script&lang=js&\n");

/***/ }),

/***/ "./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210&":
/*!**********************************************************************************!*\
  !*** ./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210& ***!
  \**********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserForm_vue_vue_type_template_id_21345210___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!cache-loader?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e4057efa-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./UserForm.vue?vue&type=template&id=21345210& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"e4057efa-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserForm_vue_vue_type_template_id_21345210___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _cache_loader_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_e4057efa_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserForm_vue_vue_type_template_id_21345210___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL1VzZXJGb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMTM0NTIxMCYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9jb21wb25lbnRzL1VzZXJGb3JtLnZ1ZT9lNWQzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCItIWNhY2hlLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjpcXFwibm9kZV9tb2R1bGVzLy5jYWNoZS92dWUtbG9hZGVyXFxcIixcXFwiY2FjaGVJZGVudGlmaWVyXFxcIjpcXFwiZTQwNTdlZmEtdnVlLWxvYWRlci10ZW1wbGF0ZVxcXCJ9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Vc2VyRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjEzNDUyMTAmXCIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/components/UserForm.vue?vue&type=template&id=21345210&\n");

/***/ }),

/***/ "./src/modules/users/services/User.js":
/*!********************************************!*\
  !*** ./src/modules/users/services/User.js ***!
  \********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.function.name */ \"./node_modules/core-js/modules/es6.function.name.js\");\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../../common/factories/ApiFactory */ \"./src/modules/common/factories/ApiFactory.js\");\n/* harmony import */ var _common_services_UtilityService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/services/UtilityService */ \"./src/modules/common/services/UtilityService.js\");\n\n\n\n\nvar User = {\n  get: function get(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_3__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"v1/users?\".concat(qs)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getClientsConfirmations: function getClientsConfirmations(filters) {\n    var qs = Object(_common_services_UtilityService__WEBPACK_IMPORTED_MODULE_3__[\"prepareFilters\"])(filters);\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"v1/clientsConfirmations?\".concat(qs)).then(function (response) {\n        resolve(response.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getUser: function getUser(id) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"v1/users/\".concat(id)).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  getRoles: function getRoles() {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"v1/users/actions/getRoles\").then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  create: function create(user) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post('v1/users', user).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  update: function update(user) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"v1/users/\".concat(user.id), user).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  updateCompanyProfile: function updateCompanyProfile(profile) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"v1/users/\".concat(profile['user_id'], \"/actions/updateProfile\"), profile).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  updatePassword: function updatePassword(user) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"v1/users/\".concat(user.id, \"/actions/updatePassword\"), user).then(function (response) {\n        resolve(response.data.data);\n      }, function (error) {\n        reject(error);\n      });\n    });\n  },\n  enable: function enable(user) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"/v1/users/\".concat(user.id, \"/actions/enable\")).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  disable: function disable(user) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"/v1/users/\".concat(user.id, \"/actions/disable\")).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  deleteConfirmation: function deleteConfirmation(user) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].delete(\"/v1/clientsConfirmations/\".concat(user.id)).then(function (success) {\n        return resolve(success.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  uploadAvatar: function uploadAvatar(user, image) {\n    return new Promise(function (resolve, reject) {\n      _common_factories_ApiFactory__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"/v1/users/\".concat(user.id, \"/actions/uploadImage\"), {\n        image: image\n      }).then(function (success) {\n        return resolve(success.data.data);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  isAdmin: function isAdmin(userData) {\n    if (userData && userData.roles) {\n      var isAdmin = userData.roles.filter(function (role) {\n        return role.name === 'admin';\n      }).length > 0;\n\n      if (isAdmin) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (User);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9zZXJ2aWNlcy9Vc2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvc2VydmljZXMvVXNlci5qcz9mZjEyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBcGlGYWN0b3J5IGZyb20gJy4vLi4vLi4vY29tbW9uL2ZhY3Rvcmllcy9BcGlGYWN0b3J5JztcbmltcG9ydCB7cHJlcGFyZUZpbHRlcnN9IGZyb20gXCIuLi8uLi9jb21tb24vc2VydmljZXMvVXRpbGl0eVNlcnZpY2VcIjtcblxuY29uc3QgVXNlciA9IHtcbiAgICBnZXQ6IChmaWx0ZXJzKSA9PiB7XG4gICAgICAgIGNvbnN0IHFzID0gcHJlcGFyZUZpbHRlcnMoZmlsdGVycyk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldChgdjEvdXNlcnM/JHtxc31gKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0Q2xpZW50c0NvbmZpcm1hdGlvbnM6IChmaWx0ZXJzKSA9PiB7XG4gICAgICAgIGNvbnN0IHFzID0gcHJlcGFyZUZpbHRlcnMoZmlsdGVycyk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldChgdjEvY2xpZW50c0NvbmZpcm1hdGlvbnM/JHtxc31gKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0VXNlcjogKGlkKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LmdldChgdjEvdXNlcnMvJHtpZH1gKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXRSb2xlczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5nZXQoYHYxL3VzZXJzL2FjdGlvbnMvZ2V0Um9sZXNgKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBjcmVhdGU6ICh1c2VyKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoJ3YxL3VzZXJzJywgdXNlcikudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBkYXRlOiAodXNlcikgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wdXQoYHYxL3VzZXJzLyR7dXNlci5pZH1gLCB1c2VyKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICB1cGRhdGVDb21wYW55UHJvZmlsZTogKHByb2ZpbGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkucHV0KGB2MS91c2Vycy8ke3Byb2ZpbGVbJ3VzZXJfaWQnXX0vYWN0aW9ucy91cGRhdGVQcm9maWxlYCwgcHJvZmlsZSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBkYXRlUGFzc3dvcmQ6ICh1c2VyKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoYHYxL3VzZXJzLyR7dXNlci5pZH0vYWN0aW9ucy91cGRhdGVQYXNzd29yZGAsIHVzZXIpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGVuYWJsZSAodXNlcikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGAvdjEvdXNlcnMvJHt1c2VyLmlkfS9hY3Rpb25zL2VuYWJsZWApLnRoZW4oXG4gICAgICAgICAgICAgICAgKHN1Y2Nlc3MpID0+IHJlc29sdmUoc3VjY2Vzcy5kYXRhLmRhdGEpLFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBkaXNhYmxlICh1c2VyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBBcGlGYWN0b3J5LnBvc3QoYC92MS91c2Vycy8ke3VzZXIuaWR9L2FjdGlvbnMvZGlzYWJsZWApLnRoZW4oXG4gICAgICAgICAgICAgICAgKHN1Y2Nlc3MpID0+IHJlc29sdmUoc3VjY2Vzcy5kYXRhLmRhdGEpLFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBkZWxldGVDb25maXJtYXRpb24gKHVzZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEFwaUZhY3RvcnkuZGVsZXRlKGAvdjEvY2xpZW50c0NvbmZpcm1hdGlvbnMvJHt1c2VyLmlkfWApLnRoZW4oXG4gICAgICAgICAgICAgICAgKHN1Y2Nlc3MpID0+IHJlc29sdmUoc3VjY2Vzcy5kYXRhKSxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBsb2FkQXZhdGFyICh1c2VyLCBpbWFnZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQXBpRmFjdG9yeS5wb3N0KGAvdjEvdXNlcnMvJHt1c2VyLmlkfS9hY3Rpb25zL3VwbG9hZEltYWdlYCwge2ltYWdlfSkudGhlbihcbiAgICAgICAgICAgICAgICAoc3VjY2VzcykgPT4gcmVzb2x2ZShzdWNjZXNzLmRhdGEuZGF0YSksXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGlzQWRtaW4gKHVzZXJEYXRhKSB7XG4gICAgICAgIGlmICh1c2VyRGF0YSAmJiB1c2VyRGF0YS5yb2xlcykge1xuICAgICAgICAgICAgY29uc3QgaXNBZG1pbiA9IHVzZXJEYXRhLnJvbGVzLmZpbHRlcihyb2xlID0+IHJvbGUubmFtZSA9PT0gJ2FkbWluJykubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIGlmIChpc0FkbWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFVzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFuSEE7QUFzSEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/services/User.js\n");

/***/ }),

/***/ "./src/modules/users/store/actions.js":
/*!********************************************!*\
  !*** ./src/modules/users/store/actions.js ***!
  \********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/objectDestructuringEmpty.js\");\n/* harmony import */ var _services_User__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../services/User */ \"./src/modules/users/services/User.js\");\n\n\n/* eslint-disable no-empty-pattern */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  getUsers: function getUsers(_ref, filters) {\n    var commit = _ref.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(filters).then(function (success) {\n        commit('USERS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getUser: function getUser(_ref2, id) {\n    var commit = _ref2.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getUser(id).then(function (success) {\n        commit('SELECTED_USER', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getRoles: function getRoles(_ref3) {\n    var commit = _ref3.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getRoles().then(function (success) {\n        commit('ROLES', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  createUser: function createUser(_ref4, user) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref4);\n\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].create(user).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  updateUser: function updateUser(_ref5, user) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref5);\n\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].update(user).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  updateCompanyProfile: function updateCompanyProfile(_ref6, user) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref6);\n\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateCompanyProfile(user).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  updatePassword: function updatePassword(_ref7, user) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref7);\n\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updatePassword(user).then(function (success) {\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  getClientsConfirmations: function getClientsConfirmations(_ref8, filters) {\n    var commit = _ref8.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getClientsConfirmations(filters).then(function (success) {\n        commit('CLIENTS_CONFIRMATIONS', success);\n        resolve(success);\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  enable: function enable(_ref9, _ref10) {\n    var commit = _ref9.commit;\n    var user = _ref10.user,\n        collection = _ref10.collection;\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].enable(user).then(function (success) {\n        commit('ENABLE', {\n          user: user,\n          collection: collection\n        });\n        resolve({\n          success: success\n        });\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  disable: function disable(_ref11, user) {\n    var commit = _ref11.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].disable(user).then(function (success) {\n        commit('DISABLE', success);\n        resolve({\n          success: success\n        });\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  deleteConfirmation: function deleteConfirmation(_ref12, user) {\n    Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_objectDestructuringEmpty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref12);\n\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deleteConfirmation(user).then(function (success) {\n        resolve({\n          success: success\n        });\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  uploadAvatar: function uploadAvatar(_ref13, data) {\n    var commit = _ref13.commit;\n    return new Promise(function (resolve, reject) {\n      return _services_User__WEBPACK_IMPORTED_MODULE_1__[\"default\"].uploadAvatar(data.user, data.image).then(function (success) {\n        commit('UPLOADED_AVATAR', success);\n        resolve({\n          success: success\n        });\n      }, function (error) {\n        return reject(error);\n      });\n    });\n  },\n  resetState: function resetState(_ref14) {\n    var commit = _ref14.commit;\n    commit('RESET_STATE');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9zdG9yZS9hY3Rpb25zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvc3RvcmUvYWN0aW9ucy5qcz83MmY3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5LXBhdHRlcm4gKi9cbmltcG9ydCBVc2VyU2VydmljZSBmcm9tICcuLy4uL3NlcnZpY2VzL1VzZXInO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZ2V0VXNlcnMgKHtjb21taXR9LCBmaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBVc2VyU2VydmljZS5nZXQoZmlsdGVycykudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdVU0VSUycsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBnZXRVc2VyICh7Y29tbWl0fSwgaWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFVzZXJTZXJ2aWNlLmdldFVzZXIoaWQpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIGNvbW1pdCgnU0VMRUNURURfVVNFUicsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBnZXRSb2xlcyAoe2NvbW1pdH0pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFVzZXJTZXJ2aWNlLmdldFJvbGVzKCkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdST0xFUycsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBjcmVhdGVVc2VyICh7fSwgdXNlcikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gVXNlclNlcnZpY2UuY3JlYXRlKHVzZXIpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgdXBkYXRlVXNlciAoe30sIHVzZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFVzZXJTZXJ2aWNlLnVwZGF0ZSh1c2VyKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHN1Y2Nlc3MpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNvbXBhbnlQcm9maWxlICh7fSwgdXNlcikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gVXNlclNlcnZpY2UudXBkYXRlQ29tcGFueVByb2ZpbGUodXNlcikudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICB1cGRhdGVQYXNzd29yZCAoe30sIHVzZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFVzZXJTZXJ2aWNlLnVwZGF0ZVBhc3N3b3JkKHVzZXIpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3VjY2Vzcyk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgZ2V0Q2xpZW50c0NvbmZpcm1hdGlvbnMgKHtjb21taXR9LCBmaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBVc2VyU2VydmljZS5nZXRDbGllbnRzQ29uZmlybWF0aW9ucyhmaWx0ZXJzKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ0NMSUVOVFNfQ09ORklSTUFUSU9OUycsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZShzdWNjZXNzKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICBlbmFibGUgKHtjb21taXR9LCB7dXNlciwgY29sbGVjdGlvbn0pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFVzZXJTZXJ2aWNlLmVuYWJsZSh1c2VyKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ0VOQUJMRScsIHt1c2VyLCBjb2xsZWN0aW9ufSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdWNjZXNzfSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgZGlzYWJsZSAoe2NvbW1pdH0sIHVzZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IFVzZXJTZXJ2aWNlLmRpc2FibGUodXNlcikudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdESVNBQkxFJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdWNjZXNzfSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSkpO1xuICAgIH0sXG4gICAgZGVsZXRlQ29uZmlybWF0aW9uICh7fSwgdXNlcikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gVXNlclNlcnZpY2UuZGVsZXRlQ29uZmlybWF0aW9uKHVzZXIpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoe3N1Y2Nlc3N9KTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKSk7XG4gICAgfSxcbiAgICB1cGxvYWRBdmF0YXIgKHtjb21taXR9LCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBVc2VyU2VydmljZS51cGxvYWRBdmF0YXIoZGF0YS51c2VyLCBkYXRhLmltYWdlKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb21taXQoJ1VQTE9BREVEX0FWQVRBUicsIHN1Y2Nlc3MpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3VjY2Vzc30pO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHJlamVjdChlcnJvcikpKTtcbiAgICB9LFxuICAgIHJlc2V0U3RhdGUgKHtjb21taXR9KSB7XG4gICAgICAgIGNvbW1pdCgnUkVTRVRfU1RBVEUnKTtcbiAgICB9XG59O1xuXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQXRFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/store/actions.js\n");

/***/ }),

/***/ "./src/modules/users/store/defaults.js":
/*!*********************************************!*\
  !*** ./src/modules/users/store/defaults.js ***!
  \*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n  return {\n    users: {\n      data: [],\n      meta: {\n        pagination: {\n          current_page: 1,\n          per_page: 10\n        }\n      }\n    },\n    clientsConfirmations: {\n      data: [],\n      meta: {\n        pagination: {\n          current_page: 1,\n          per_page: 10\n        }\n      }\n    },\n    roles: [],\n    selectedUser: {}\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9zdG9yZS9kZWZhdWx0cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL3N0b3JlL2RlZmF1bHRzLmpzPzY4MWYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgKCkgPT4gKHtcbiAgICB1c2Vyczoge1xuICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgICAgICAgICBwZXJfcGFnZTogMTAsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNsaWVudHNDb25maXJtYXRpb25zOiB7XG4gICAgICAgIGRhdGE6IFtdLFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgY3VycmVudF9wYWdlOiAxLFxuICAgICAgICAgICAgICAgIHBlcl9wYWdlOiAxMCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgcm9sZXM6IFtdLFxuICAgIHNlbGVjdGVkVXNlcjoge30sXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUZBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUZBO0FBU0E7QUFDQTtBQXBCQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/users/store/defaults.js\n");

/***/ }),

/***/ "./src/modules/users/store/getters.js":
/*!********************************************!*\
  !*** ./src/modules/users/store/getters.js ***!
  \********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar users = function users(state) {\n  return state.users;\n};\n\nvar selectedUser = function selectedUser(state) {\n  return state.selectedUser;\n};\n\nvar roles = function roles(state) {\n  return state.roles;\n};\n\nvar clientsConfirmations = function clientsConfirmations(state) {\n  return state.clientsConfirmations;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  users: users,\n  selectedUser: selectedUser,\n  roles: roles,\n  clientsConfirmations: clientsConfirmations\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9zdG9yZS9nZXR0ZXJzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21vZHVsZXMvdXNlcnMvc3RvcmUvZ2V0dGVycy5qcz9mYzAxIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHVzZXJzID0gc3RhdGUgPT4gc3RhdGUudXNlcnM7XG5jb25zdCBzZWxlY3RlZFVzZXIgPSBzdGF0ZSA9PiBzdGF0ZS5zZWxlY3RlZFVzZXI7XG5jb25zdCByb2xlcyA9IHN0YXRlID0+IHN0YXRlLnJvbGVzO1xuY29uc3QgY2xpZW50c0NvbmZpcm1hdGlvbnMgPSBzdGF0ZSA9PiBzdGF0ZS5jbGllbnRzQ29uZmlybWF0aW9ucztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHVzZXJzLFxuICAgIHNlbGVjdGVkVXNlcixcbiAgICByb2xlcyxcbiAgICBjbGllbnRzQ29uZmlybWF0aW9ucyxcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/users/store/getters.js\n");

/***/ }),

/***/ "./src/modules/users/store/index.js":
/*!******************************************!*\
  !*** ./src/modules/users/store/index.js ***!
  \******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/modules/users/store/actions.js\");\n/* harmony import */ var _getters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getters */ \"./src/modules/users/store/getters.js\");\n/* harmony import */ var _mutations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutations */ \"./src/modules/users/store/mutations.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaults */ \"./src/modules/users/store/defaults.js\");\n\n\n\n\nvar state = Object(_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  namespaced: true,\n  state: state,\n  actions: _actions__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  getters: _getters__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  mutations: _mutations__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9zdG9yZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tb2R1bGVzL3VzZXJzL3N0b3JlL2luZGV4LmpzP2MxYjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFjdGlvbnMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCBnZXR0ZXJzIGZyb20gJy4vZ2V0dGVycyc7XG5pbXBvcnQgbXV0YXRpb25zIGZyb20gJy4vbXV0YXRpb25zJztcbmltcG9ydCBkZWZhdWx0U3RhdGUgZnJvbSAnLi9kZWZhdWx0cyc7XG5cbmNvbnN0IHN0YXRlID0gZGVmYXVsdFN0YXRlKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgIHN0YXRlLFxuICAgIGFjdGlvbnMsXG4gICAgZ2V0dGVycyxcbiAgICBtdXRhdGlvbnNcbn07XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/store/index.js\n");

/***/ }),

/***/ "./src/modules/users/store/mutations.js":
/*!**********************************************!*\
  !*** ./src/modules/users/store/mutations.js ***!
  \**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.array.find-index */ \"./node_modules/core-js/modules/es6.array.find-index.js\");\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaults */ \"./src/modules/users/store/defaults.js\");\n\n\n\nvar RESET_STATE = function RESET_STATE(state) {\n  Object.assign(state, Object(_defaults__WEBPACK_IMPORTED_MODULE_1__[\"default\"])());\n};\n\nvar USERS = function USERS(state, value) {\n  state.users = value;\n  return state.users;\n};\n\nvar CLIENTS_CONFIRMATIONS = function CLIENTS_CONFIRMATIONS(state, value) {\n  state.clientsConfirmations = value;\n  return state.users;\n};\n\nvar SELECTED_USER = function SELECTED_USER(state, value) {\n  state.selectedUser = value;\n  return state.selectedUser;\n};\n\nvar ROLES = function ROLES(state, value) {\n  state.roles = value;\n  return state.roles;\n};\n\nvar ENABLE = function ENABLE(state, _ref) {\n  var user = _ref.user,\n      collection = _ref.collection;\n\n  var currentUserIndex = _.findIndex(state[collection].data, function (u) {\n    return u.id === user.id;\n  });\n\n  state[collection].data[currentUserIndex].is_enabled = true;\n  return state.users;\n};\n\nvar DISABLE = function DISABLE(state, user) {\n  var currentUserIndex = _.findIndex(state.users.data, function (u) {\n    return u.id === user.id;\n  });\n\n  state.users.data[currentUserIndex].is_enabled = false;\n  return state.users;\n};\n\nvar UPLOADED_AVATAR = function UPLOADED_AVATAR(state, user) {\n  state.selectedUser.avatar = user.avatar;\n  return state.selectedUser;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  RESET_STATE: RESET_STATE,\n  USERS: USERS,\n  CLIENTS_CONFIRMATIONS: CLIENTS_CONFIRMATIONS,\n  SELECTED_USER: SELECTED_USER,\n  ENABLE: ENABLE,\n  DISABLE: DISABLE,\n  ROLES: ROLES,\n  UPLOADED_AVATAR: UPLOADED_AVATAR\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91c2Vycy9zdG9yZS9tdXRhdGlvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91c2Vycy9zdG9yZS9tdXRhdGlvbnMuanM/YzEzZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFN0YXRlIGZyb20gJy4vZGVmYXVsdHMnO1xuXG5jb25zdCBSRVNFVF9TVEFURSA9IChzdGF0ZSkgPT4ge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUsIGRlZmF1bHRTdGF0ZSgpKTtcbn07XG5cbmNvbnN0IFVTRVJTID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLnVzZXJzID0gdmFsdWU7XG4gICAgcmV0dXJuIHN0YXRlLnVzZXJzO1xufTtcblxuY29uc3QgQ0xJRU5UU19DT05GSVJNQVRJT05TID0gKHN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLmNsaWVudHNDb25maXJtYXRpb25zID0gdmFsdWU7XG4gICAgcmV0dXJuIHN0YXRlLnVzZXJzO1xufTtcblxuY29uc3QgU0VMRUNURURfVVNFUiA9IChzdGF0ZSwgdmFsdWUpID0+IHtcbiAgICBzdGF0ZS5zZWxlY3RlZFVzZXIgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRVc2VyO1xufTtcblxuY29uc3QgUk9MRVMgPSAoc3RhdGUsIHZhbHVlKSA9PiB7XG4gICAgc3RhdGUucm9sZXMgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RhdGUucm9sZXM7XG59O1xuXG5jb25zdCBFTkFCTEUgPSAoc3RhdGUsIHt1c2VyLCBjb2xsZWN0aW9ufSkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VySW5kZXggPSBfLmZpbmRJbmRleChzdGF0ZVtjb2xsZWN0aW9uXS5kYXRhLCAodSkgPT4ge1xuICAgICAgICByZXR1cm4gdS5pZCA9PT0gdXNlci5pZFxuICAgIH0pO1xuICAgIHN0YXRlW2NvbGxlY3Rpb25dLmRhdGFbY3VycmVudFVzZXJJbmRleF0uaXNfZW5hYmxlZCA9IHRydWU7XG4gICAgcmV0dXJuIHN0YXRlLnVzZXJzO1xufTtcblxuY29uc3QgRElTQUJMRSA9IChzdGF0ZSwgdXNlcikgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VySW5kZXggPSBfLmZpbmRJbmRleChzdGF0ZS51c2Vycy5kYXRhLCAodSkgPT4ge1xuICAgICAgICByZXR1cm4gdS5pZCA9PT0gdXNlci5pZFxuICAgIH0pO1xuICAgIHN0YXRlLnVzZXJzLmRhdGFbY3VycmVudFVzZXJJbmRleF0uaXNfZW5hYmxlZCA9IGZhbHNlO1xuICAgIHJldHVybiBzdGF0ZS51c2Vycztcbn07XG5cbmNvbnN0IFVQTE9BREVEX0FWQVRBUiA9IChzdGF0ZSwgdXNlcikgPT4ge1xuICAgIHN0YXRlLnNlbGVjdGVkVXNlci5hdmF0YXIgPSB1c2VyLmF2YXRhcjtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRVc2VyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIFJFU0VUX1NUQVRFLFxuICAgIFVTRVJTLFxuICAgIENMSUVOVFNfQ09ORklSTUFUSU9OUyxcbiAgICBTRUxFQ1RFRF9VU0VSLFxuICAgIEVOQUJMRSxcbiAgICBESVNBQkxFLFxuICAgIFJPTEVTLFxuICAgIFVQTE9BREVEX0FWQVRBUixcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/users/store/mutations.js\n");

/***/ }),

/***/ "./src/mutations.js":
/*!**************************!*\
  !*** ./src/mutations.js ***!
  \**************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.array.index-of */ \"./node_modules/core-js/modules/es6.array.index-of.js\");\n/* harmony import */ var core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_index_of__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.array.map */ \"./node_modules/core-js/modules/es6.array.map.js\");\n/* harmony import */ var core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es6.array.find-index */ \"./node_modules/core-js/modules/es6.array.find-index.js\");\n/* harmony import */ var core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_find_index__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar mutations = {\n  // ////////////////////////////////////////////\n  // SIDEBAR & UI UX\n  // ////////////////////////////////////////////\n  UPDATE_SIDEBAR_WIDTH: function UPDATE_SIDEBAR_WIDTH(state, width) {\n    state.sidebarWidth = width;\n  },\n  UPDATE_SIDEBAR_ITEMS_MIN: function UPDATE_SIDEBAR_ITEMS_MIN(state, val) {\n    state.sidebarItemsMin = val;\n  },\n  TOGGLE_REDUCE_BUTTON: function TOGGLE_REDUCE_BUTTON(state, val) {\n    state.reduceButton = val;\n  },\n  TOGGLE_CONTENT_OVERLAY: function TOGGLE_CONTENT_OVERLAY(state, val) {\n    state.bodyOverlay = val;\n  },\n  TOGGLE_IS_SIDEBAR_ACTIVE: function TOGGLE_IS_SIDEBAR_ACTIVE(state, value) {\n    state.isSidebarActive = value;\n  },\n  UPDATE_THEME: function UPDATE_THEME(state, val) {\n    state.theme = val;\n  },\n  UPDATE_WINDOW_BREAKPOINT: function UPDATE_WINDOW_BREAKPOINT(state, val) {\n    state.breakpoint = val;\n  },\n  UPDATE_PRIMARY_COLOR: function UPDATE_PRIMARY_COLOR(state, val) {\n    state.themePrimaryColor = val;\n  },\n  UPDATE_USER_ROLE: function UPDATE_USER_ROLE(state, val) {\n    state.userRole = val;\n    localStorage.setItem('userRole', val);\n  },\n  // UPDATE_STATUS_CHAT(state, value) {\n  //     state.AppActiveUser.status = value;\n  // },\n  UPDATE_WINDOW_WIDTH: function UPDATE_WINDOW_WIDTH(state, width) {\n    state.windowWidth = width;\n  },\n  // ////////////////////////////////////////////\n  // COMPONENT\n  // ////////////////////////////////////////////\n  // VxAutoSuggest\n  UPDATE_STARRED_PAGE: function UPDATE_STARRED_PAGE(state, payload) {\n    // find item index in search list state\n    var index = state.navbarSearchAndPinList.data.findIndex(function (item) {\n      return item.index === payload.index;\n    }); // update the main list\n\n    state.navbarSearchAndPinList.data[index].highlightAction = payload.val; // if val is true add it to starred else remove\n\n    if (payload.val) {\n      state.starredPages.push(state.navbarSearchAndPinList.data[index]);\n    } else {\n      // find item index from starred pages\n      var _index = state.starredPages.findIndex(function (item) {\n        return item.index === payload.index;\n      }); // remove item using index\n\n\n      state.starredPages.splice(_index, 1);\n    }\n  },\n  // The Navbar\n  ARRANGE_STARRED_PAGES_LIMITED: function ARRANGE_STARRED_PAGES_LIMITED(state, list) {\n    var starredPagesMore = state.starredPages.slice(10);\n    state.starredPages = list.concat(starredPagesMore);\n  },\n  ARRANGE_STARRED_PAGES_MORE: function ARRANGE_STARRED_PAGES_MORE(state, list) {\n    var downToUp = false;\n    var lastItemInStarredLimited = state.starredPages[10];\n    var starredPagesLimited = state.starredPages.slice(0, 10);\n    state.starredPages = starredPagesLimited.concat(list);\n    state.starredPages.slice(0, 10).map(function (i) {\n      if (list.indexOf(i) > -1) downToUp = true;\n    });\n\n    if (!downToUp) {\n      state.starredPages.splice(10, 0, lastItemInStarredLimited);\n    }\n  },\n  APP_TOKEN: function APP_TOKEN(state, token) {\n    state.token = token;\n  },\n  USER_DATA: function USER_DATA(state, userData) {\n    state.userData = userData;\n  },\n  UPLOADED_AVATAR: function UPLOADED_AVATAR(state, user) {\n    state.userData.avatar = user.avatar;\n  },\n  COUNTERS: function COUNTERS(state, counters) {\n    state.counters.clients_to_confirm = counters;\n  },\n  UNREAD_MESSAGES: function UNREAD_MESSAGES(state, counters) {\n    state.counters.unread_messages = counters;\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (mutations);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbXV0YXRpb25zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL211dGF0aW9ucy5qcz8xY2IwIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG11dGF0aW9ucyA9IHtcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gU0lERUJBUiAmIFVJIFVYXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIFVQREFURV9TSURFQkFSX1dJRFRIIChzdGF0ZSwgd2lkdGgpIHtcbiAgICAgICAgc3RhdGUuc2lkZWJhcldpZHRoID0gd2lkdGg7XG4gICAgfSxcbiAgICBVUERBVEVfU0lERUJBUl9JVEVNU19NSU4gKHN0YXRlLCB2YWwpIHtcbiAgICAgICAgc3RhdGUuc2lkZWJhckl0ZW1zTWluID0gdmFsO1xuICAgIH0sXG4gICAgVE9HR0xFX1JFRFVDRV9CVVRUT04gKHN0YXRlLCB2YWwpIHtcbiAgICAgICAgc3RhdGUucmVkdWNlQnV0dG9uID0gdmFsO1xuICAgIH0sXG4gICAgVE9HR0xFX0NPTlRFTlRfT1ZFUkxBWSAoc3RhdGUsIHZhbCkge1xuICAgICAgICBzdGF0ZS5ib2R5T3ZlcmxheSA9IHZhbDtcbiAgICB9LFxuICAgIFRPR0dMRV9JU19TSURFQkFSX0FDVElWRSAoc3RhdGUsIHZhbHVlKSB7XG4gICAgICAgIHN0YXRlLmlzU2lkZWJhckFjdGl2ZSA9IHZhbHVlO1xuICAgIH0sXG4gICAgVVBEQVRFX1RIRU1FIChzdGF0ZSwgdmFsKSB7XG4gICAgICAgIHN0YXRlLnRoZW1lID0gdmFsO1xuICAgIH0sXG4gICAgVVBEQVRFX1dJTkRPV19CUkVBS1BPSU5UIChzdGF0ZSwgdmFsKSB7XG4gICAgICAgIHN0YXRlLmJyZWFrcG9pbnQgPSB2YWw7XG4gICAgfSxcbiAgICBVUERBVEVfUFJJTUFSWV9DT0xPUiAoc3RhdGUsIHZhbCkge1xuICAgICAgICBzdGF0ZS50aGVtZVByaW1hcnlDb2xvciA9IHZhbDtcbiAgICB9LFxuICAgIFVQREFURV9VU0VSX1JPTEUgKHN0YXRlLCB2YWwpIHtcbiAgICAgICAgc3RhdGUudXNlclJvbGUgPSB2YWw7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VyUm9sZScsIHZhbClcbiAgICB9LFxuICAgIC8vIFVQREFURV9TVEFUVVNfQ0hBVChzdGF0ZSwgdmFsdWUpIHtcbiAgICAvLyAgICAgc3RhdGUuQXBwQWN0aXZlVXNlci5zdGF0dXMgPSB2YWx1ZTtcbiAgICAvLyB9LFxuICAgIFVQREFURV9XSU5ET1dfV0lEVEggKHN0YXRlLCB3aWR0aCkge1xuICAgICAgICBzdGF0ZS53aW5kb3dXaWR0aCA9IHdpZHRoO1xuICAgIH0sXG5cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQ09NUE9ORU5UXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIC8vIFZ4QXV0b1N1Z2dlc3RcbiAgICBVUERBVEVfU1RBUlJFRF9QQUdFIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICAvLyBmaW5kIGl0ZW0gaW5kZXggaW4gc2VhcmNoIGxpc3Qgc3RhdGVcbiAgICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5uYXZiYXJTZWFyY2hBbmRQaW5MaXN0LmRhdGEuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmluZGV4ID09PSBwYXlsb2FkLmluZGV4KTtcbiAgICAgICAgLy8gdXBkYXRlIHRoZSBtYWluIGxpc3RcbiAgICAgICAgc3RhdGUubmF2YmFyU2VhcmNoQW5kUGluTGlzdC5kYXRhW2luZGV4XS5oaWdobGlnaHRBY3Rpb24gPSBwYXlsb2FkLnZhbDtcblxuICAgICAgICAvLyBpZiB2YWwgaXMgdHJ1ZSBhZGQgaXQgdG8gc3RhcnJlZCBlbHNlIHJlbW92ZVxuICAgICAgICBpZiAocGF5bG9hZC52YWwpIHtcbiAgICAgICAgICAgIHN0YXRlLnN0YXJyZWRQYWdlcy5wdXNoKHN0YXRlLm5hdmJhclNlYXJjaEFuZFBpbkxpc3QuZGF0YVtpbmRleF0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBmaW5kIGl0ZW0gaW5kZXggZnJvbSBzdGFycmVkIHBhZ2VzXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnN0YXJyZWRQYWdlcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaW5kZXggPT09IHBheWxvYWQuaW5kZXgpO1xuICAgICAgICAgICAgLy8gcmVtb3ZlIGl0ZW0gdXNpbmcgaW5kZXhcbiAgICAgICAgICAgIHN0YXRlLnN0YXJyZWRQYWdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8vIFRoZSBOYXZiYXJcbiAgICBBUlJBTkdFX1NUQVJSRURfUEFHRVNfTElNSVRFRCAoc3RhdGUsIGxpc3QpIHtcbiAgICAgICAgY29uc3Qgc3RhcnJlZFBhZ2VzTW9yZSA9IHN0YXRlLnN0YXJyZWRQYWdlcy5zbGljZSgxMCk7XG4gICAgICAgIHN0YXRlLnN0YXJyZWRQYWdlcyA9IGxpc3QuY29uY2F0KHN0YXJyZWRQYWdlc01vcmUpO1xuICAgIH0sXG4gICAgQVJSQU5HRV9TVEFSUkVEX1BBR0VTX01PUkUgKHN0YXRlLCBsaXN0KSB7XG4gICAgICAgIGxldCBkb3duVG9VcCA9IGZhbHNlO1xuICAgICAgICBsZXQgbGFzdEl0ZW1JblN0YXJyZWRMaW1pdGVkID0gc3RhdGUuc3RhcnJlZFBhZ2VzWzEwXTtcbiAgICAgICAgY29uc3Qgc3RhcnJlZFBhZ2VzTGltaXRlZCA9IHN0YXRlLnN0YXJyZWRQYWdlcy5zbGljZSgwLCAxMCk7XG4gICAgICAgIHN0YXRlLnN0YXJyZWRQYWdlcyA9IHN0YXJyZWRQYWdlc0xpbWl0ZWQuY29uY2F0KGxpc3QpO1xuXG4gICAgICAgIHN0YXRlLnN0YXJyZWRQYWdlcy5zbGljZSgwLCAxMCkubWFwKChpKSA9PiB7XG4gICAgICAgICAgICBpZiAobGlzdC5pbmRleE9mKGkpID4gLTEpIGRvd25Ub1VwID0gdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFkb3duVG9VcCkge1xuICAgICAgICAgICAgc3RhdGUuc3RhcnJlZFBhZ2VzLnNwbGljZSgxMCwgMCwgbGFzdEl0ZW1JblN0YXJyZWRMaW1pdGVkKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBBUFBfVE9LRU4gKHN0YXRlLCB0b2tlbikge1xuICAgICAgICBzdGF0ZS50b2tlbiA9IHRva2VuO1xuICAgIH0sXG5cbiAgICBVU0VSX0RBVEEgKHN0YXRlLCB1c2VyRGF0YSkge1xuICAgICAgICBzdGF0ZS51c2VyRGF0YSA9IHVzZXJEYXRhO1xuICAgIH0sXG5cbiAgICBVUExPQURFRF9BVkFUQVIgKHN0YXRlLCB1c2VyKSB7XG4gICAgICAgIHN0YXRlLnVzZXJEYXRhLmF2YXRhciA9IHVzZXIuYXZhdGFyO1xuICAgIH0sXG5cbiAgICBDT1VOVEVSUyAoc3RhdGUsIGNvdW50ZXJzKSB7XG4gICAgICAgIHN0YXRlLmNvdW50ZXJzLmNsaWVudHNfdG9fY29uZmlybSA9IGNvdW50ZXJzO1xuICAgIH0sXG5cbiAgICBVTlJFQURfTUVTU0FHRVMgKHN0YXRlLCBjb3VudGVycykge1xuICAgICAgICBzdGF0ZS5jb3VudGVycy51bnJlYWRfbWVzc2FnZXMgPSBjb3VudGVycztcbiAgICB9XG5cbn07XG5cbmV4cG9ydCBkZWZhdWx0IG11dGF0aW9uc1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQXJHQTtBQXlHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/mutations.js\n");

/***/ }),

/***/ "./src/router.js":
/*!***********************!*\
  !*** ./src/router.js ***!
  \***********************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.define-properties */ \"./node_modules/core-js/modules/es6.object.define-properties.js\");\n/* harmony import */ var core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_properties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es7.object.get-own-property-descriptors */ \"./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es6.array.for-each */ \"./node_modules/core-js/modules/es6.array.for-each.js\");\n/* harmony import */ var core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_for_each__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom.iterable */ \"./node_modules/core-js/modules/web.dom.iterable.js\");\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es6.object.keys */ \"./node_modules/core-js/modules/es6.object.keys.js\");\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es6_array_is_array__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es6.array.is-array */ \"./node_modules/core-js/modules/es6.array.is-array.js\");\n/* harmony import */ var core_js_modules_es6_array_is_array__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_is_array__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vue-router */ \"./node_modules/vue-router/dist/vue-router.esm.js\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./store */ \"./src/store.js\");\n/* harmony import */ var _modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/common/middlewares/auth */ \"./src/modules/common/middlewares/auth.js\");\n/* harmony import */ var _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/common/middlewares/checkProfile */ \"./src/modules/common/middlewares/checkProfile.js\");\n/* harmony import */ var _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/common/middlewares/canUseAccount */ \"./src/modules/common/middlewares/canUseAccount.js\");\n/* harmony import */ var _modules_common_middlewares_isAdmin__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/common/middlewares/isAdmin */ \"./src/modules/common/middlewares/isAdmin.js\");\n/* harmony import */ var _modules_common_layouts_main_Main__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/common/layouts/main/Main */ \"./src/modules/common/layouts/main/Main.vue\");\n/* harmony import */ var _modules_common_layouts_full_page_FullPage__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/common/layouts/full-page/FullPage */ \"./src/modules/common/layouts/full-page/FullPage.vue\");\n/* harmony import */ var _modules_dashboard_Dashboard__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/dashboard/Dashboard */ \"./src/modules/dashboard/Dashboard.vue\");\n/* harmony import */ var _modules_users_Profile__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/users/Profile */ \"./src/modules/users/Profile.vue\");\n/* harmony import */ var _modules_users_Users__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/users/Users */ \"./src/modules/users/Users.vue\");\n/* harmony import */ var _modules_users_ClientsConfirmations__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/users/ClientsConfirmations */ \"./src/modules/users/ClientsConfirmations.vue\");\n/* harmony import */ var _modules_users_New__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/users/New */ \"./src/modules/users/New.vue\");\n/* harmony import */ var _modules_users_Edit__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/users/Edit */ \"./src/modules/users/Edit.vue\");\n/* harmony import */ var _modules_users_ChangePassword__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./modules/users/ChangePassword */ \"./src/modules/users/ChangePassword.vue\");\n/* harmony import */ var _modules_contacts_NewsLetter__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./modules/contacts/NewsLetter */ \"./src/modules/contacts/NewsLetter.vue\");\n/* harmony import */ var _modules_contacts_ContactRequests__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./modules/contacts/ContactRequests */ \"./src/modules/contacts/ContactRequests.vue\");\n/* harmony import */ var _modules_clients_List__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./modules/clients/List */ \"./src/modules/clients/List.vue\");\n/* harmony import */ var _modules_clients_New__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./modules/clients/New */ \"./src/modules/clients/New.vue\");\n/* harmony import */ var _modules_clients_Edit__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./modules/clients/Edit */ \"./src/modules/clients/Edit.vue\");\n/* harmony import */ var _modules_projects_services_List__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./modules/projects/services/List */ \"./src/modules/projects/services/List.vue\");\n/* harmony import */ var _modules_projects_services_New__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./modules/projects/services/New */ \"./src/modules/projects/services/New.vue\");\n/* harmony import */ var _modules_projects_services_Edit__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./modules/projects/services/Edit */ \"./src/modules/projects/services/Edit.vue\");\n/* harmony import */ var _modules_projects_clientProjects_List__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./modules/projects/clientProjects/List */ \"./src/modules/projects/clientProjects/List.vue\");\n/* harmony import */ var _modules_projects_clientProjects_ToQuote__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./modules/projects/clientProjects/ToQuote */ \"./src/modules/projects/clientProjects/ToQuote.vue\");\n/* harmony import */ var _modules_projects_clientProjects_New__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./modules/projects/clientProjects/New */ \"./src/modules/projects/clientProjects/New.vue\");\n/* harmony import */ var _modules_projects_clientProjects_Edit__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./modules/projects/clientProjects/Edit */ \"./src/modules/projects/clientProjects/Edit.vue\");\n/* harmony import */ var _modules_categories_List__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./modules/categories/List */ \"./src/modules/categories/List.vue\");\n/* harmony import */ var _modules_categories_New__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./modules/categories/New */ \"./src/modules/categories/New.vue\");\n/* harmony import */ var _modules_categories_Edit__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./modules/categories/Edit */ \"./src/modules/categories/Edit.vue\");\n/* harmony import */ var _modules_chat_Chat__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./modules/chat/Chat */ \"./src/modules/chat/Chat.vue\");\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { Object(_Users_buli_Code_geotechnics_geotechnics_dashboard_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvue__WEBPACK_IMPORTED_MODULE_9__[\"default\"].use(vue_router__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nvar router = new vue_router__WEBPACK_IMPORTED_MODULE_10__[\"default\"]({\n  base: \"/\",\n  routes: [{\n    // =============================================================================\n    // MAIN LAYOUT ROUTES\n    // =============================================================================\n    path: '',\n    component: _modules_common_layouts_main_Main__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n    children: [// =============================================================================\n    // Theme Routes\n    // =============================================================================\n    {\n      path: '/',\n      redirect: '/dashboard'\n    }, {\n      path: '/dashboard',\n      name: 'Dashboard',\n      component: _modules_dashboard_Dashboard__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"]]\n      }\n    }, {\n      path: '/profile',\n      name: 'Profile',\n      component: _modules_users_Profile__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"]]\n      }\n    }, {\n      path: '/changePassword',\n      name: 'ChangePassword',\n      component: _modules_users_ChangePassword__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"]]\n      }\n    }, {\n      path: '/users',\n      name: 'Users',\n      component: _modules_users_Users__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_isAdmin__WEBPACK_IMPORTED_MODULE_15__[\"default\"]]\n      }\n    }, {\n      path: '/clients',\n      name: 'Clients',\n      component: _modules_clients_List__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_isAdmin__WEBPACK_IMPORTED_MODULE_15__[\"default\"]]\n      }\n    }, {\n      path: '/clients/create',\n      name: 'CreateClient',\n      component: _modules_clients_New__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_isAdmin__WEBPACK_IMPORTED_MODULE_15__[\"default\"]]\n      }\n    }, {\n      path: '/clients/edit/:id',\n      name: 'EditClient',\n      component: _modules_clients_Edit__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_isAdmin__WEBPACK_IMPORTED_MODULE_15__[\"default\"]]\n      }\n    }, {\n      path: '/clients/confirmations',\n      name: 'ClientsConfirmations',\n      component: _modules_users_ClientsConfirmations__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_isAdmin__WEBPACK_IMPORTED_MODULE_15__[\"default\"]]\n      }\n    }, {\n      path: '/users/create',\n      name: 'CreateUser',\n      component: _modules_users_New__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/users/edit/:id',\n      props: true,\n      name: 'EditUser',\n      component: _modules_users_Edit__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/services',\n      name: 'Services',\n      component: _modules_projects_services_List__WEBPACK_IMPORTED_MODULE_30__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/services/create',\n      name: 'CreateService',\n      component: _modules_projects_services_New__WEBPACK_IMPORTED_MODULE_31__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/services/edit/:id',\n      name: 'EditService',\n      component: _modules_projects_services_Edit__WEBPACK_IMPORTED_MODULE_32__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/projects/list',\n      name: 'Projects',\n      component: _modules_projects_clientProjects_List__WEBPACK_IMPORTED_MODULE_33__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: 'tenders',\n      name: 'Projects',\n      component: _modules_projects_clientProjects_ToQuote__WEBPACK_IMPORTED_MODULE_34__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/projects/create',\n      name: 'CreateProject',\n      component: _modules_projects_clientProjects_New__WEBPACK_IMPORTED_MODULE_35__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/projects/edit/:id',\n      name: 'EditProject',\n      component: _modules_projects_clientProjects_Edit__WEBPACK_IMPORTED_MODULE_36__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/subscribers/list',\n      name: 'NewsLetter',\n      component: _modules_contacts_NewsLetter__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/inbox/messages',\n      name: 'ContactRequests',\n      component: _modules_contacts_ContactRequests__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }, {\n      path: '/categories',\n      name: 'Categories',\n      component: _modules_categories_List__WEBPACK_IMPORTED_MODULE_37__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"], _modules_common_middlewares_isAdmin__WEBPACK_IMPORTED_MODULE_15__[\"default\"]]\n      }\n    }, {\n      path: '/categories/create',\n      name: 'CreateCategory',\n      component: _modules_categories_New__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"], _modules_common_middlewares_isAdmin__WEBPACK_IMPORTED_MODULE_15__[\"default\"]]\n      }\n    }, {\n      path: '/categories/edit/:id',\n      name: 'EditCategory',\n      component: _modules_categories_Edit__WEBPACK_IMPORTED_MODULE_39__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"], _modules_common_middlewares_isAdmin__WEBPACK_IMPORTED_MODULE_15__[\"default\"]]\n      }\n    }, {\n      path: '/chat',\n      name: 'Chat',\n      component: _modules_chat_Chat__WEBPACK_IMPORTED_MODULE_40__[\"default\"],\n      meta: {\n        middleware: [_modules_common_middlewares_auth__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _modules_common_middlewares_checkProfile__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _modules_common_middlewares_canUseAccount__WEBPACK_IMPORTED_MODULE_14__[\"default\"]]\n      }\n    }]\n  }, {\n    path: '',\n    component: _modules_common_layouts_full_page_FullPage__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n    children: [// =============================================================================\n    // PAGES\n    // =============================================================================\n    {\n      path: '/login',\n      name: 'Login',\n      component: function component() {\n        return __webpack_require__.e(/*! import() */ 1).then(__webpack_require__.bind(null, /*! ./modules/pages/Login.vue */ \"./src/modules/pages/Login.vue\"));\n      }\n    }, {\n      path: '/forgot-password',\n      name: 'ForgotPassword',\n      component: function component() {\n        return __webpack_require__.e(/*! import() */ 0).then(__webpack_require__.bind(null, /*! ./modules/pages/ForgotPassword.vue */ \"./src/modules/pages/ForgotPassword.vue\"));\n      }\n    }, {\n      path: '/reset-password',\n      name: 'ResetPassword',\n      component: function component() {\n        return __webpack_require__.e(/*! import() */ 2).then(__webpack_require__.bind(null, /*! ./modules/pages/ResetPassword.vue */ \"./src/modules/pages/ResetPassword.vue\"));\n      }\n    }]\n  }],\n  scrollBehavior: function scrollBehavior() {\n    return {\n      x: 0,\n      y: 0\n    };\n  }\n});\nrouter.afterEach(function () {\n  var appLoading = document.getElementById('loading-bg');\n\n  if (appLoading) {\n    appLoading.style.display = \"none\";\n  }\n});\n\nfunction nextFactory(context, middleware, index) {\n  var subsequentMiddleware = middleware[index]; // If no subsequent Middleware exists,\n  // the default `next()` callback is returned.\n\n  if (!subsequentMiddleware) return context.next;\n  return function () {\n    // Run the default Vue Router `next()` callback first.\n    context.next.apply(context, arguments); // Then run the subsequent Middleware with a new\n    // `nextMiddleware()` callback.\n\n    var nextMiddleware = nextFactory(context, middleware, index + 1);\n    subsequentMiddleware(_objectSpread({}, context, {\n      next: nextMiddleware\n    }));\n  };\n}\n\nrouter.beforeEach(function (to, from, next) {\n  _store__WEBPACK_IMPORTED_MODULE_11__[\"default\"].dispatch('getCounters');\n\n  if (to.meta.middleware) {\n    var middleware = Array.isArray(to.meta.middleware) ? to.meta.middleware : [to.meta.middleware];\n    var context = {\n      from: from,\n      next: next,\n      router: router,\n      to: to\n    };\n    var nextMiddleware = nextFactory(context, middleware, 1);\n    return middleware[0](_objectSpread({}, context, {\n      next: nextMiddleware\n    }));\n  }\n\n  return next();\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (router);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvcm91dGVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL3JvdXRlci5qcz80MWNiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAndnVlJztcbmltcG9ydCBSb3V0ZXIgZnJvbSAndnVlLXJvdXRlcic7XG5pbXBvcnQgc3RvcmUgZnJvbSAnLi9zdG9yZSc7XG5cbmltcG9ydCBhdXRoIGZyb20gJy4vbW9kdWxlcy9jb21tb24vbWlkZGxld2FyZXMvYXV0aCc7XG5pbXBvcnQgY2hlY2tQcm9maWxlIGZyb20gJy4vbW9kdWxlcy9jb21tb24vbWlkZGxld2FyZXMvY2hlY2tQcm9maWxlJztcbmltcG9ydCBjYW5Vc2VBY2NvdW50IGZyb20gJy4vbW9kdWxlcy9jb21tb24vbWlkZGxld2FyZXMvY2FuVXNlQWNjb3VudCc7XG5pbXBvcnQgaXNBZG1pbiBmcm9tICcuL21vZHVsZXMvY29tbW9uL21pZGRsZXdhcmVzL2lzQWRtaW4nO1xuXG5pbXBvcnQgTWFpbiBmcm9tICcuL21vZHVsZXMvY29tbW9uL2xheW91dHMvbWFpbi9NYWluJ1xuaW1wb3J0IEZ1bGxQYWdlIGZyb20gJy4vbW9kdWxlcy9jb21tb24vbGF5b3V0cy9mdWxsLXBhZ2UvRnVsbFBhZ2UnXG5cbmltcG9ydCBEYXNoYm9hcmQgZnJvbSAnLi9tb2R1bGVzL2Rhc2hib2FyZC9EYXNoYm9hcmQnO1xuaW1wb3J0IFByb2ZpbGUgZnJvbSAnLi9tb2R1bGVzL3VzZXJzL1Byb2ZpbGUnO1xuaW1wb3J0IFVzZXJzIGZyb20gJy4vbW9kdWxlcy91c2Vycy9Vc2Vycyc7XG5pbXBvcnQgQ2xpZW50c0NvbmZpcm1hdGlvbnMgZnJvbSAnLi9tb2R1bGVzL3VzZXJzL0NsaWVudHNDb25maXJtYXRpb25zJztcbmltcG9ydCBDcmVhdGVVc2VyIGZyb20gJy4vbW9kdWxlcy91c2Vycy9OZXcnO1xuaW1wb3J0IEVkaXRVc2VyIGZyb20gJy4vbW9kdWxlcy91c2Vycy9FZGl0JztcbmltcG9ydCBDaGFuZ2VQYXNzd29yZCBmcm9tICcuL21vZHVsZXMvdXNlcnMvQ2hhbmdlUGFzc3dvcmQnO1xuaW1wb3J0IE5ld3NMZXR0ZXIgZnJvbSAnLi9tb2R1bGVzL2NvbnRhY3RzL05ld3NMZXR0ZXInO1xuaW1wb3J0IENvbnRhY3RSZXF1ZXN0cyBmcm9tICcuL21vZHVsZXMvY29udGFjdHMvQ29udGFjdFJlcXVlc3RzJztcblxuaW1wb3J0IENsaWVudHMgZnJvbSAnLi9tb2R1bGVzL2NsaWVudHMvTGlzdCc7XG5pbXBvcnQgQ3JlYXRlQ2xpZW50IGZyb20gJy4vbW9kdWxlcy9jbGllbnRzL05ldyc7XG5pbXBvcnQgRWRpdENsaWVudCBmcm9tICcuL21vZHVsZXMvY2xpZW50cy9FZGl0JztcblxuaW1wb3J0IFNlcnZpY2VzIGZyb20gJy4vbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9MaXN0JztcbmltcG9ydCBDcmVhdGVTZXJ2aWNlIGZyb20gJy4vbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9OZXcnO1xuaW1wb3J0IEVkaXRTZXJ2aWNlIGZyb20gJy4vbW9kdWxlcy9wcm9qZWN0cy9zZXJ2aWNlcy9FZGl0JztcblxuaW1wb3J0IENsaWVudFByb2plY3RMaXN0IGZyb20gJy4vbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9MaXN0JztcbmltcG9ydCBUb1F1b3RlUHJvamVjdExpc3QgZnJvbSAnLi9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL1RvUXVvdGUnO1xuaW1wb3J0IENyZWF0ZVByb2plY3QgZnJvbSAnLi9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL05ldyc7XG5pbXBvcnQgRWRpdFByb2plY3QgZnJvbSAnLi9tb2R1bGVzL3Byb2plY3RzL2NsaWVudFByb2plY3RzL0VkaXQnO1xuXG5pbXBvcnQgQ2F0ZWdvcmllcyBmcm9tICcuL21vZHVsZXMvY2F0ZWdvcmllcy9MaXN0JztcbmltcG9ydCBDcmVhdGVDYXRlZ29yeSBmcm9tICcuL21vZHVsZXMvY2F0ZWdvcmllcy9OZXcnO1xuaW1wb3J0IEVkaXRDYXRlZ29yeSBmcm9tICcuL21vZHVsZXMvY2F0ZWdvcmllcy9FZGl0JztcblxuaW1wb3J0IENoYXQgZnJvbSAnLi9tb2R1bGVzL2NoYXQvQ2hhdCc7XG5cblZ1ZS51c2UoUm91dGVyKTtcblxuY29uc3Qgcm91dGVyID0gbmV3IFJvdXRlcih7XG4gICAgYmFzZTogcHJvY2Vzcy5lbnYuQkFTRV9VUkwsXG4gICAgcm91dGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICAvLyBNQUlOIExBWU9VVCBST1VURVNcbiAgICAgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgIGNvbXBvbmVudDogTWFpbixcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAgICAvLyBUaGVtZSBSb3V0ZXNcbiAgICAgICAgICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy8nLFxuICAgICAgICAgICAgICAgICAgICByZWRpcmVjdDogJy9kYXNoYm9hcmQnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvZGFzaGJvYXJkJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0Rhc2hib2FyZCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogRGFzaGJvYXJkLFxuICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbYXV0aF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL3Byb2ZpbGUnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUHJvZmlsZScsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogUHJvZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGhdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9jaGFuZ2VQYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdDaGFuZ2VQYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ2hhbmdlUGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZGRsZXdhcmU6IFthdXRoXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvdXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnVXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IFVzZXJzLFxuICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbYXV0aCwgaXNBZG1pbl1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL2NsaWVudHMnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ2xpZW50cycsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ2xpZW50cyxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGlzQWRtaW5dXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9jbGllbnRzL2NyZWF0ZScsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdDcmVhdGVDbGllbnQnLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IENyZWF0ZUNsaWVudCxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGlzQWRtaW5dXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9jbGllbnRzL2VkaXQvOmlkJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0VkaXRDbGllbnQnLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IEVkaXRDbGllbnQsXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZGRsZXdhcmU6IFthdXRoLCBpc0FkbWluXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvY2xpZW50cy9jb25maXJtYXRpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NsaWVudHNDb25maXJtYXRpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBDbGllbnRzQ29uZmlybWF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGlzQWRtaW5dXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy91c2Vycy9jcmVhdGUnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ3JlYXRlVXNlcicsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ3JlYXRlVXNlcixcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGNoZWNrUHJvZmlsZSwgY2FuVXNlQWNjb3VudF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL3VzZXJzL2VkaXQvOmlkJyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdFZGl0VXNlcicsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogRWRpdFVzZXIsXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZGRsZXdhcmU6IFthdXRoLCBjaGVja1Byb2ZpbGUsIGNhblVzZUFjY291bnRdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9zZXJ2aWNlcycsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdTZXJ2aWNlcycsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogU2VydmljZXMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZGRsZXdhcmU6IFthdXRoLCBjaGVja1Byb2ZpbGUsIGNhblVzZUFjY291bnRdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9zZXJ2aWNlcy9jcmVhdGUnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ3JlYXRlU2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ3JlYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGNoZWNrUHJvZmlsZSwgY2FuVXNlQWNjb3VudF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL3NlcnZpY2VzL2VkaXQvOmlkJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0VkaXRTZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBFZGl0U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGNoZWNrUHJvZmlsZSwgY2FuVXNlQWNjb3VudF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL3Byb2plY3RzL2xpc3QnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUHJvamVjdHMnLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IENsaWVudFByb2plY3RMaXN0LFxuICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbYXV0aCwgY2hlY2tQcm9maWxlLCBjYW5Vc2VBY2NvdW50XVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICd0ZW5kZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1Byb2plY3RzJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBUb1F1b3RlUHJvamVjdExpc3QsXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZGRsZXdhcmU6IFthdXRoLCBjaGVja1Byb2ZpbGUsIGNhblVzZUFjY291bnRdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9wcm9qZWN0cy9jcmVhdGUnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ3JlYXRlUHJvamVjdCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ3JlYXRlUHJvamVjdCxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGNoZWNrUHJvZmlsZSwgY2FuVXNlQWNjb3VudF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL3Byb2plY3RzL2VkaXQvOmlkJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0VkaXRQcm9qZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBFZGl0UHJvamVjdCxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGNoZWNrUHJvZmlsZSwgY2FuVXNlQWNjb3VudF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL3N1YnNjcmliZXJzL2xpc3QnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnTmV3c0xldHRlcicsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogTmV3c0xldHRlcixcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGNoZWNrUHJvZmlsZSwgY2FuVXNlQWNjb3VudF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL2luYm94L21lc3NhZ2VzJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NvbnRhY3RSZXF1ZXN0cycsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ29udGFjdFJlcXVlc3RzLFxuICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbYXV0aCwgY2hlY2tQcm9maWxlLCBjYW5Vc2VBY2NvdW50XVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvY2F0ZWdvcmllcycsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdDYXRlZ29yaWVzJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbYXV0aCwgY2hlY2tQcm9maWxlLCBjYW5Vc2VBY2NvdW50LCBpc0FkbWluXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvY2F0ZWdvcmllcy9jcmVhdGUnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ3JlYXRlQ2F0ZWdvcnknLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IENyZWF0ZUNhdGVnb3J5LFxuICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbYXV0aCwgY2hlY2tQcm9maWxlLCBjYW5Vc2VBY2NvdW50LCBpc0FkbWluXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvY2F0ZWdvcmllcy9lZGl0LzppZCcsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdFZGl0Q2F0ZWdvcnknLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IEVkaXRDYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGNoZWNrUHJvZmlsZSwgY2FuVXNlQWNjb3VudCwgaXNBZG1pbl1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL2NoYXQnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ2hhdCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxld2FyZTogW2F1dGgsIGNoZWNrUHJvZmlsZSwgY2FuVXNlQWNjb3VudF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgIGNvbXBvbmVudDogRnVsbFBhZ2UsXG4gICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICAgICAgLy8gUEFHRVNcbiAgICAgICAgICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9sb2dpbicsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdMb2dpbicsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL21vZHVsZXMvcGFnZXMvTG9naW4udnVlJyksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvZm9yZ290LXBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0ZvcmdvdFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vbW9kdWxlcy9wYWdlcy9Gb3Jnb3RQYXNzd29yZC52dWUnKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9yZXNldC1wYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdSZXNldFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vbW9kdWxlcy9wYWdlcy9SZXNldFBhc3N3b3JkLnZ1ZScpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHNjcm9sbEJlaGF2aW9yICgpIHtcbiAgICAgICAgcmV0dXJuIHt4OiAwLCB5OiAwfTtcbiAgICB9XG59KTtcblxucm91dGVyLmFmdGVyRWFjaCgoKSA9PiB7XG4gICAgY29uc3QgYXBwTG9hZGluZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2FkaW5nLWJnJyk7XG4gICAgaWYgKGFwcExvYWRpbmcpIHtcbiAgICAgICAgYXBwTG9hZGluZy5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgfVxufSk7XG5cbmZ1bmN0aW9uIG5leHRGYWN0b3J5IChjb250ZXh0LCBtaWRkbGV3YXJlLCBpbmRleCkge1xuICAgIGNvbnN0IHN1YnNlcXVlbnRNaWRkbGV3YXJlID0gbWlkZGxld2FyZVtpbmRleF07XG4gICAgLy8gSWYgbm8gc3Vic2VxdWVudCBNaWRkbGV3YXJlIGV4aXN0cyxcbiAgICAvLyB0aGUgZGVmYXVsdCBgbmV4dCgpYCBjYWxsYmFjayBpcyByZXR1cm5lZC5cbiAgICBpZiAoIXN1YnNlcXVlbnRNaWRkbGV3YXJlKSByZXR1cm4gY29udGV4dC5uZXh0O1xuXG4gICAgcmV0dXJuICguLi5wYXJhbWV0ZXJzKSA9PiB7XG4gICAgICAgIC8vIFJ1biB0aGUgZGVmYXVsdCBWdWUgUm91dGVyIGBuZXh0KClgIGNhbGxiYWNrIGZpcnN0LlxuICAgICAgICBjb250ZXh0Lm5leHQoLi4ucGFyYW1ldGVycyk7XG4gICAgICAgIC8vIFRoZW4gcnVuIHRoZSBzdWJzZXF1ZW50IE1pZGRsZXdhcmUgd2l0aCBhIG5ld1xuICAgICAgICAvLyBgbmV4dE1pZGRsZXdhcmUoKWAgY2FsbGJhY2suXG4gICAgICAgIGNvbnN0IG5leHRNaWRkbGV3YXJlID0gbmV4dEZhY3RvcnkoY29udGV4dCwgbWlkZGxld2FyZSwgaW5kZXggKyAxKTtcbiAgICAgICAgc3Vic2VxdWVudE1pZGRsZXdhcmUoey4uLmNvbnRleHQsIG5leHQ6IG5leHRNaWRkbGV3YXJlfSk7XG4gICAgfTtcbn1cblxucm91dGVyLmJlZm9yZUVhY2goKHRvLCBmcm9tLCBuZXh0KSA9PiB7XG4gICAgc3RvcmUuZGlzcGF0Y2goJ2dldENvdW50ZXJzJyk7XG4gICAgaWYgKHRvLm1ldGEubWlkZGxld2FyZSkge1xuXG4gICAgICAgIGNvbnN0IG1pZGRsZXdhcmUgPSBBcnJheS5pc0FycmF5KHRvLm1ldGEubWlkZGxld2FyZSlcbiAgICAgICAgICAgID8gdG8ubWV0YS5taWRkbGV3YXJlXG4gICAgICAgICAgICA6IFt0by5tZXRhLm1pZGRsZXdhcmVdO1xuXG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICBmcm9tLFxuICAgICAgICAgICAgbmV4dCxcbiAgICAgICAgICAgIHJvdXRlcixcbiAgICAgICAgICAgIHRvLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXh0TWlkZGxld2FyZSA9IG5leHRGYWN0b3J5KGNvbnRleHQsIG1pZGRsZXdhcmUsIDEpO1xuXG4gICAgICAgIHJldHVybiBtaWRkbGV3YXJlWzBdKHsuLi5jb250ZXh0LCBuZXh0OiBuZXh0TWlkZGxld2FyZX0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0KCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgcm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFMQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBL0xBO0FBME1BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQWpCQTtBQXlCQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF2T0E7QUEwT0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/router.js\n");

/***/ }),

/***/ "./src/state.js":
/*!**********************!*\
  !*** ./src/state.js ***!
  \**********************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.array.filter */ \"./node_modules/core-js/modules/es6.array.filter.js\");\n/* harmony import */ var core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _modules_common_layouts_components_navbarSearchAndPinList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/common/layouts/components/navbarSearchAndPinList */ \"./src/modules/common/layouts/components/navbarSearchAndPinList.js\");\n/* harmony import */ var _themeConfig_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../themeConfig.js */ \"./themeConfig.js\");\n\n\n\n\nvar state = {\n  isSidebarActive: true,\n  breakpoint: null,\n  sidebarWidth: \"default\",\n  reduceButton: _themeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sidebarCollapsed,\n  bodyOverlay: false,\n  sidebarItemsMin: false,\n  theme: _themeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].theme || 'light',\n  navbarSearchAndPinList: _modules_common_layouts_components_navbarSearchAndPinList__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  themePrimaryColor: _themeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].primary,\n  token: '',\n  starredPages: _modules_common_layouts_components_navbarSearchAndPinList__WEBPACK_IMPORTED_MODULE_1__[\"default\"].data.filter(function (page) {\n    return page.highlightAction;\n  }),\n  userRole: null,\n  // Can be used to get current window with\n  // Note: Above breakpoint state is for internal use of sidebar component\n  windowWidth: null,\n  counters: {}\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (state);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RhdGUuanM/ZmFhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbmF2YmFyU2VhcmNoQW5kUGluTGlzdCBmcm9tICcuL21vZHVsZXMvY29tbW9uL2xheW91dHMvY29tcG9uZW50cy9uYXZiYXJTZWFyY2hBbmRQaW5MaXN0J1xuaW1wb3J0IHRoZW1lQ29uZmlnIGZyb20gJy4vLi4vdGhlbWVDb25maWcuanMnXG5pbXBvcnQgY29sb3JzIGZyb20gJy4vLi4vdGhlbWVDb25maWcuanMnXG5cbmNvbnN0IHN0YXRlID0ge1xuICAgIGlzU2lkZWJhckFjdGl2ZTogdHJ1ZSxcbiAgICBicmVha3BvaW50OiBudWxsLFxuICAgIHNpZGViYXJXaWR0aDogXCJkZWZhdWx0XCIsXG4gICAgcmVkdWNlQnV0dG9uOiB0aGVtZUNvbmZpZy5zaWRlYmFyQ29sbGFwc2VkLFxuICAgIGJvZHlPdmVybGF5OiBmYWxzZSxcbiAgICBzaWRlYmFySXRlbXNNaW46IGZhbHNlLFxuICAgIHRoZW1lOiB0aGVtZUNvbmZpZy50aGVtZSB8fCAnbGlnaHQnLFxuICAgIG5hdmJhclNlYXJjaEFuZFBpbkxpc3Q6IG5hdmJhclNlYXJjaEFuZFBpbkxpc3QsXG4gICAgdGhlbWVQcmltYXJ5Q29sb3I6IGNvbG9ycy5wcmltYXJ5LFxuICAgIHRva2VuOiAnJyxcbiAgICBzdGFycmVkUGFnZXM6IG5hdmJhclNlYXJjaEFuZFBpbkxpc3QuZGF0YS5maWx0ZXIoKHBhZ2UpID0+IHBhZ2UuaGlnaGxpZ2h0QWN0aW9uKSxcbiAgICB1c2VyUm9sZTogbnVsbCxcblxuICAgIC8vIENhbiBiZSB1c2VkIHRvIGdldCBjdXJyZW50IHdpbmRvdyB3aXRoXG4gICAgLy8gTm90ZTogQWJvdmUgYnJlYWtwb2ludCBzdGF0ZSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9mIHNpZGViYXIgY29tcG9uZW50XG4gICAgd2luZG93V2lkdGg6IG51bGwsXG4gICAgY291bnRlcnM6IHt9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzdGF0ZVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQWpCQTtBQW9CQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/state.js\n");

/***/ }),

/***/ "./src/store.js":
/*!**********************!*\
  !*** ./src/store.js ***!
  \**********************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vuex_persistedstate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex-persistedstate */ \"./node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js\");\n/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state */ \"./src/state.js\");\n/* harmony import */ var _getters__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getters */ \"./src/getters.js\");\n/* harmony import */ var _mutations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mutations */ \"./src/mutations.js\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./actions */ \"./src/actions.js\");\n/* harmony import */ var _modules_contacts_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/contacts/store */ \"./src/modules/contacts/store/index.js\");\n/* harmony import */ var _modules_users_store__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/users/store */ \"./src/modules/users/store/index.js\");\n/* harmony import */ var _modules_projects_services_store__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/projects/services/store */ \"./src/modules/projects/services/store/index.js\");\n/* harmony import */ var _modules_clients_store__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/clients/store */ \"./src/modules/clients/store/index.js\");\n/* harmony import */ var _modules_projects_clientProjects_store__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/projects/clientProjects/store */ \"./src/modules/projects/clientProjects/store/index.js\");\n/* harmony import */ var _modules_categories_store__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/categories/store */ \"./src/modules/categories/store/index.js\");\n/* harmony import */ var _modules_dashboard_store__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/dashboard/store */ \"./src/modules/dashboard/store/index.js\");\n/* harmony import */ var _modules_chat_store__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/chat/store */ \"./src/modules/chat/store/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvue__WEBPACK_IMPORTED_MODULE_0__[\"default\"].use(vuex__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (new vuex__WEBPACK_IMPORTED_MODULE_1__[\"default\"].Store({\n  getters: _getters__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  mutations: _mutations__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n  state: _state__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  actions: _actions__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n  modules: {\n    contacts: _modules_contacts_store__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    users: _modules_users_store__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n    services: _modules_projects_services_store__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n    clients: _modules_clients_store__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n    projects: _modules_projects_clientProjects_store__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n    categories: _modules_categories_store__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n    dashboard: _modules_dashboard_store__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n    chat: _modules_chat_store__WEBPACK_IMPORTED_MODULE_14__[\"default\"]\n  },\n  plugins: [Object(vuex_persistedstate__WEBPACK_IMPORTED_MODULE_2__[\"default\"])()],\n  strict: \"staging\" !== 'production'\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RvcmUuanM/YzBkNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBWdWV4IGZyb20gJ3Z1ZXgnXG5pbXBvcnQgY3JlYXRlUGVyc2lzdGVkU3RhdGUgZnJvbSAndnVleC1wZXJzaXN0ZWRzdGF0ZSc7XG5cbmltcG9ydCBzdGF0ZSBmcm9tIFwiLi9zdGF0ZVwiXG5pbXBvcnQgZ2V0dGVycyBmcm9tIFwiLi9nZXR0ZXJzXCJcbmltcG9ydCBtdXRhdGlvbnMgZnJvbSBcIi4vbXV0YXRpb25zXCJcbmltcG9ydCBhY3Rpb25zIGZyb20gXCIuL2FjdGlvbnNcIlxuaW1wb3J0IGNvbnRhY3RzIGZyb20gJy4vbW9kdWxlcy9jb250YWN0cy9zdG9yZSc7XG5pbXBvcnQgdXNlcnMgZnJvbSAnLi9tb2R1bGVzL3VzZXJzL3N0b3JlJztcbmltcG9ydCBzZXJ2aWNlcyBmcm9tICcuL21vZHVsZXMvcHJvamVjdHMvc2VydmljZXMvc3RvcmUnO1xuaW1wb3J0IGNsaWVudHMgZnJvbSAnLi9tb2R1bGVzL2NsaWVudHMvc3RvcmUnO1xuaW1wb3J0IHByb2plY3RzIGZyb20gJy4vbW9kdWxlcy9wcm9qZWN0cy9jbGllbnRQcm9qZWN0cy9zdG9yZSc7XG5pbXBvcnQgY2F0ZWdvcmllcyBmcm9tICcuL21vZHVsZXMvY2F0ZWdvcmllcy9zdG9yZSc7XG5pbXBvcnQgZGFzaGJvYXJkIGZyb20gJy4vbW9kdWxlcy9kYXNoYm9hcmQvc3RvcmUnO1xuaW1wb3J0IGNoYXQgZnJvbSAnLi9tb2R1bGVzL2NoYXQvc3RvcmUnO1xuXG5WdWUudXNlKFZ1ZXgpO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgVnVleC5TdG9yZSh7XG4gICAgZ2V0dGVycyxcbiAgICBtdXRhdGlvbnMsXG4gICAgc3RhdGUsXG4gICAgYWN0aW9ucyxcbiAgICBtb2R1bGVzOiB7XG4gICAgICAgIGNvbnRhY3RzLFxuICAgICAgICB1c2VycyxcbiAgICAgICAgc2VydmljZXMsXG4gICAgICAgIGNsaWVudHMsXG4gICAgICAgIHByb2plY3RzLFxuICAgICAgICBjYXRlZ29yaWVzLFxuICAgICAgICBkYXNoYm9hcmQsXG4gICAgICAgIGNoYXQsXG4gICAgfSxcbiAgICBwbHVnaW5zOiBbY3JlYXRlUGVyc2lzdGVkU3RhdGUoKV0sXG4gICAgc3RyaWN0OiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nXG59KVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQWhCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/store.js\n");

/***/ }),

/***/ "./themeConfig.js":
/*!************************!*\
  !*** ./themeConfig.js ***!
  \************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n/* harmony import */ var vuesax__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuesax */ \"./node_modules/vuesax/dist/vuesax.common.js\");\n/* harmony import */ var vuesax__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vuesax__WEBPACK_IMPORTED_MODULE_1__);\nvar colors = {\n  primary: '#00A593',\n  secondary: '#777777',\n  success: '#005f47',\n  danger: '#EA5455',\n  warning: '#FF9F43',\n  dark: '#1E1E1E'\n};\n\n\nvue__WEBPACK_IMPORTED_MODULE_0__[\"default\"].use(vuesax__WEBPACK_IMPORTED_MODULE_1___default.a, {\n  theme: {\n    colors: colors\n  }\n}); // CONFIGS\n\nvar themeConfig = {\n  theme: 'light',\n  // options[String]: 'light'(default), 'dark', 'semi-dark'\n  sidebarCollapsed: false,\n  // options[Boolean]: true, false(default)\n  navbarColor: \"#fff\",\n  // options[String]: HEX color / rgb / rgba / Valid HTML Color name - (default: #fff)\n  navbarType: \"floating\",\n  // options[String]: floating(default) / static / sticky / hidden\n  footerType: \"static\",\n  // options[String]: static(default) / sticky / hidden\n  routerTransition: 'zoom-fade',\n  // options[String]: zoom-fade / slide-fade / fade-bottom / fade / zoom-out / none(default)\n  disableCustomizer: false,\n  // options[Boolean]: true, false(default)\n  hideScrollToTop: false,\n  // options[Boolean]: true, false(default)\n  disableThemeTour: false // options[Boolean]: true, false(default)\n  // NOTE: themeTour will be disabled in screens < 1200. Please refer docs for more info.\n\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (themeConfig);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi90aGVtZUNvbmZpZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3RoZW1lQ29uZmlnLmpzPzFkZmYiXSwic291cmNlc0NvbnRlbnQiOlsibGV0IGNvbG9ycyA9IHtcbiAgcHJpbWFyeTogJyMwMEE1OTMnLFxuICBzZWNvbmRhcnk6ICcjNzc3Nzc3JyxcbiAgc3VjY2VzczogJyMwMDVmNDcnLFxuICBkYW5nZXI6ICcjRUE1NDU1JyxcbiAgd2FybmluZzogJyNGRjlGNDMnLFxuICBkYXJrOiAnIzFFMUUxRScsXG59O1xuXG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBWdWVzYXggZnJvbSAndnVlc2F4J1xuXG5WdWUudXNlKFZ1ZXNheCwge3RoZW1lOiB7Y29sb3JzfX0pO1xuXG4vLyBDT05GSUdTXG5jb25zdCB0aGVtZUNvbmZpZyA9IHtcbiAgdGhlbWU6ICdsaWdodCcsXHRcdFx0XHRcdFx0ICAgICAgICAvLyBvcHRpb25zW1N0cmluZ106ICdsaWdodCcoZGVmYXVsdCksICdkYXJrJywgJ3NlbWktZGFyaydcbiAgc2lkZWJhckNvbGxhcHNlZDogZmFsc2UsXHRcdFx0ICAgIC8vIG9wdGlvbnNbQm9vbGVhbl06IHRydWUsIGZhbHNlKGRlZmF1bHQpXG4gIG5hdmJhckNvbG9yOiBcIiNmZmZcIixcdFx0XHRcdCAgICAgIC8vIG9wdGlvbnNbU3RyaW5nXTogSEVYIGNvbG9yIC8gcmdiIC8gcmdiYSAvIFZhbGlkIEhUTUwgQ29sb3IgbmFtZSAtIChkZWZhdWx0OiAjZmZmKVxuICBuYXZiYXJUeXBlOiBcImZsb2F0aW5nXCIsXHRcdFx0XHQgICAgLy8gb3B0aW9uc1tTdHJpbmddOiBmbG9hdGluZyhkZWZhdWx0KSAvIHN0YXRpYyAvIHN0aWNreSAvIGhpZGRlblxuICBmb290ZXJUeXBlOiBcInN0YXRpY1wiLFx0XHRcdFx0ICAgICAgLy8gb3B0aW9uc1tTdHJpbmddOiBzdGF0aWMoZGVmYXVsdCkgLyBzdGlja3kgLyBoaWRkZW5cbiAgcm91dGVyVHJhbnNpdGlvbjogJ3pvb20tZmFkZScsXHRcdC8vIG9wdGlvbnNbU3RyaW5nXTogem9vbS1mYWRlIC8gc2xpZGUtZmFkZSAvIGZhZGUtYm90dG9tIC8gZmFkZSAvIHpvb20tb3V0IC8gbm9uZShkZWZhdWx0KVxuICBkaXNhYmxlQ3VzdG9taXplcjogZmFsc2UsXHRcdFx0ICAgIC8vIG9wdGlvbnNbQm9vbGVhbl06IHRydWUsIGZhbHNlKGRlZmF1bHQpXG4gIGhpZGVTY3JvbGxUb1RvcDogZmFsc2UsXHRcdFx0XHQgICAgLy8gb3B0aW9uc1tCb29sZWFuXTogdHJ1ZSwgZmFsc2UoZGVmYXVsdClcbiAgZGlzYWJsZVRoZW1lVG91cjogZmFsc2UsXHRcdFx0XHRcdC8vIG9wdGlvbnNbQm9vbGVhbl06IHRydWUsIGZhbHNlKGRlZmF1bHQpXG5cbiAgLy8gTk9URTogdGhlbWVUb3VyIHdpbGwgYmUgZGlzYWJsZWQgaW4gc2NyZWVucyA8IDEyMDAuIFBsZWFzZSByZWZlciBkb2NzIGZvciBtb3JlIGluZm8uXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0aGVtZUNvbmZpZ1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFTQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQVpBO0FBY0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./themeConfig.js\n");

/***/ }),

/***/ 0:
/*!***************************!*\
  !*** multi ./src/main.js ***!
  \***************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(/*! ./src/main.js */"./src/main.js");


/***/ })

/******/ });

Zerion Mini Shell 1.0